<?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>175144</bug_id>
          
          <creation_ts>2017-08-03 11:39:29 -0700</creation_ts>
          <short_desc>Use JIT probes for DFG OSR exit.</short_desc>
          <delta_ts>2017-10-03 15:59: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>REOPENED</bug_status>
          <resolution></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>175208</dependson>
    
    <dependson>175214</dependson>
    
    <dependson>175228</dependson>
    
    <dependson>176888</dependson>
    
    <dependson>177844</dependson>
          <blocked>174645</blocked>
    
    <blocked>176703</blocked>
    
    <blocked>176874</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>buildbot</cc>
    
    <cc>fpizlo</cc>
    
    <cc>hodovan</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>lforschler</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1334860</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-03 11:39:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/33437050&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337477</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-10 10:23:18 -0700</bug_when>
    <thetext>After working through the code and thinking about this, I think I&apos;ll go with an OSR exit thunk that execute 2 JIT probes: the first to ensure that there&apos;s enough stack space to do in-place OSR exit frame re-write, and the second to do the in-place OSR exit frame re-write.  When the second probe returns, we should resume execution in the baseline codeBlock.

This approach is simplest (maps well from the current implementation, which makes the patch easier to review), and most efficient (less memcpying to and from side buffers).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337579</commentid>
    <comment_count>2</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2017-08-10 14:01:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/33437050&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337943</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-11 11:24:22 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #1)
&gt; After working through the code and thinking about this, I think I&apos;ll go with
&gt; an OSR exit thunk that execute 2 JIT probes: the first to ensure that
&gt; there&apos;s enough stack space to do in-place OSR exit frame re-write, and the
&gt; second to do the in-place OSR exit frame re-write.  When the second probe
&gt; returns, we should resume execution in the baseline codeBlock.
&gt; 
&gt; This approach is simplest (maps well from the current implementation, which
&gt; makes the patch easier to review), and most efficient (less memcpying to and
&gt; from side buffers).

Change of plans: we can make the probe even more powerful so that it provides APIs to allow for in place stack modifications.  This eliminates the need for the client to be aware that the probe stores state on the stack and where it&apos;s stored.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341900</commentid>
    <comment_count>4</comment_count>
      <attachid>318947</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-23 17:26:52 -0700</bug_when>
    <thetext>Created attachment 318947
work in progress: won&apos;t build yet. still need a few edits + self code review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342187</commentid>
    <comment_count>5</comment_count>
      <attachid>319025</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-24 15:06:40 -0700</bug_when>
    <thetext>Created attachment 319025
work in progress: it builds but crashes in the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342597</commentid>
    <comment_count>6</comment_count>
      <attachid>319121</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-25 17:27:37 -0700</bug_when>
    <thetext>Created attachment 319121
work in progress: fixed some bugs but still have exotic failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342663</commentid>
    <comment_count>7</comment_count>
      <attachid>319137</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-26 12:32:58 -0700</bug_when>
    <thetext>Created attachment 319137
proposed patch.

Tests are passing locally for me now.  Let&apos;s get some feedback and EWS testing while I do some benchmarking and get some memory measurements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342665</commentid>
    <comment_count>8</comment_count>
      <attachid>319138</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-26 14:07:20 -0700</bug_when>
    <thetext>Created attachment 319138
x86_64 benchmark results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342666</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-26 14:17:56 -0700</bug_when>
    <thetext>Benchmark results shows that on aggregate, perf is neutral.  

However, on specific benchmark components:
- Octane&apos;s pdfjs is 1.1595x slower
- SixSpeed&apos;s spread-literal.es5 is 1.0524x slower
- SixSpeed&apos;s classes.es5 is 1.0446x faster
- SixSpeed&apos;s map-set-object.es6 is 1.0336x faster

... and a some microbenchmarks are a lot slower:
- delta-blue-try-catch ! definitely 1.3200x slower
- int-or-other-neg-then-get-by-val ! definitely 11.5349x slower
- super-get-by-val-with-this-polymorphic ! definitely 1.0516x slower
- math-with-out-of-bounds-array-values ! definitely 1.0676x slower
- direct-tail-call-inlined-caller ^ definitely 1.0539x faster
- v8-raytrace-with-try-catch ! definitely 1.1061x slower
- super-get-by-val-with-this-monomorphic ! definitely 1.0718x slower
- string-concat-long-convert ^ definitely 1.0428x faster
- fake-iterators-that-throw-when-finished ! definitely 1.5331x slower
- double-pollution-putbyoffset ! definitely 6.7236x slower
- string-transcoding ! definitely 1.2092x slower
- to-number-constructor-string-number-string-number ! definitely 1.2452x slower
- function-dot-apply ^ definitely 1.1369x faster
- bigswitch-indirect-symbol-or-undefined ^ definitely 1.9525x faster
- getter-richards-try-catch ! definitely 1.0995x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342667</commentid>
    <comment_count>10</comment_count>
      <attachid>319139</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-26 14:25:44 -0700</bug_when>
    <thetext>Created attachment 319139
proposed patch w/ Windows build fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342673</commentid>
    <comment_count>11</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-26 15:33:55 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #9)
&gt; Benchmark results shows that on aggregate, perf is neutral.  
&gt; 
&gt; However, on specific benchmark components:
&gt; - Octane&apos;s pdfjs is 1.1595x slower
&gt; - SixSpeed&apos;s spread-literal.es5 is 1.0524x slower
&gt; - SixSpeed&apos;s classes.es5 is 1.0446x faster
&gt; - SixSpeed&apos;s map-set-object.es6 is 1.0336x faster
&gt; 
&gt; ... and a some microbenchmarks are a lot slower:
&gt; - delta-blue-try-catch ! definitely 1.3200x slower
&gt; - int-or-other-neg-then-get-by-val ! definitely 11.5349x slower
&gt; - super-get-by-val-with-this-polymorphic ! definitely 1.0516x slower
&gt; - math-with-out-of-bounds-array-values ! definitely 1.0676x slower
&gt; - direct-tail-call-inlined-caller ^ definitely 1.0539x faster
&gt; - v8-raytrace-with-try-catch ! definitely 1.1061x slower
&gt; - super-get-by-val-with-this-monomorphic ! definitely 1.0718x slower
&gt; - string-concat-long-convert ^ definitely 1.0428x faster
&gt; - fake-iterators-that-throw-when-finished ! definitely 1.5331x slower
&gt; - double-pollution-putbyoffset ! definitely 6.7236x slower
&gt; - string-transcoding ! definitely 1.2092x slower
&gt; - to-number-constructor-string-number-string-number ! definitely 1.2452x
&gt; slower
&gt; - function-dot-apply ^ definitely 1.1369x faster
&gt; - bigswitch-indirect-symbol-or-undefined ^ definitely 1.9525x faster
&gt; - getter-richards-try-catch ! definitely 1.0995x slower

Something is up with your results. Octane shows a “maybe 2%” slower in the geomean. Normally, we can detect a 1% change in that metric. So, I think that this means that your system was quite noisy when you ran this test. Or you did not run for enough iterations. I like to run for —outer 6 and leave —inner alone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342674</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-26 16:19:36 -0700</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #11)
&gt; (In reply to Mark Lam from comment #9)
&gt; &gt; Benchmark results shows that on aggregate, perf is neutral.  
&gt; &gt; 
&gt; &gt; However, on specific benchmark components:
&gt; &gt; - Octane&apos;s pdfjs is 1.1595x slower
&gt; &gt; - SixSpeed&apos;s spread-literal.es5 is 1.0524x slower
&gt; &gt; - SixSpeed&apos;s classes.es5 is 1.0446x faster
&gt; &gt; - SixSpeed&apos;s map-set-object.es6 is 1.0336x faster
&gt; &gt; 
&gt; &gt; ... and a some microbenchmarks are a lot slower:
&gt; &gt; - delta-blue-try-catch ! definitely 1.3200x slower
&gt; &gt; - int-or-other-neg-then-get-by-val ! definitely 11.5349x slower
&gt; &gt; - super-get-by-val-with-this-polymorphic ! definitely 1.0516x slower
&gt; &gt; - math-with-out-of-bounds-array-values ! definitely 1.0676x slower
&gt; &gt; - direct-tail-call-inlined-caller ^ definitely 1.0539x faster
&gt; &gt; - v8-raytrace-with-try-catch ! definitely 1.1061x slower
&gt; &gt; - super-get-by-val-with-this-monomorphic ! definitely 1.0718x slower
&gt; &gt; - string-concat-long-convert ^ definitely 1.0428x faster
&gt; &gt; - fake-iterators-that-throw-when-finished ! definitely 1.5331x slower
&gt; &gt; - double-pollution-putbyoffset ! definitely 6.7236x slower
&gt; &gt; - string-transcoding ! definitely 1.2092x slower
&gt; &gt; - to-number-constructor-string-number-string-number ! definitely 1.2452x
&gt; &gt; slower
&gt; &gt; - function-dot-apply ^ definitely 1.1369x faster
&gt; &gt; - bigswitch-indirect-symbol-or-undefined ^ definitely 1.9525x faster
&gt; &gt; - getter-richards-try-catch ! definitely 1.0995x slower
&gt; 
&gt; Something is up with your results. Octane shows a “maybe 2%” slower in the
&gt; geomean. Normally, we can detect a 1% change in that metric. So, I think
&gt; that this means that your system was quite noisy when you ran this test. Or
&gt; you did not run for enough iterations. I like to run for —outer 6 and leave
&gt; —inner alone.

I ran with outer 8 on a 13&quot; MacBook Pro.  There&apos;s a chance that there&apos;s network / random background activity but the machine is as quiet as I can make it.  I just finished another run with no ethernet attached (but just realized that wifi is till on).  I&apos;ll upload the new results, and do a 3rd run with wifi off as well.  With this 2nd run, Octane is &quot;might be 1.0118x faster&quot; with pdfjs &quot;definitely 1.1681x slower.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342675</commentid>
    <comment_count>13</comment_count>
      <attachid>319141</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-26 16:21:26 -0700</bug_when>
    <thetext>Created attachment 319141
x86_64 benchmark results 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342676</commentid>
    <comment_count>14</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-26 16:50:25 -0700</bug_when>
    <thetext>It’s not entirely surprising to see the try/catch micro benchmarks get slower. Most of those tests are stressing throwing an exception, which is an OSR exit in the DFG/FTL. What is somewhat surprising is how important the actual speed of the exit itself is in those microbenchmarks. I’m not too sure what to make of this yet. Maybe there are trivial things we can do to speed up the OSR exit C code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342678</commentid>
    <comment_count>15</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-26 16:56:56 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #14)
&gt; It’s not entirely surprising to see the try/catch micro benchmarks get
&gt; slower. Most of those tests are stressing throwing an exception, which is an
&gt; OSR exit in the DFG/FTL. What is somewhat surprising is how important the
&gt; actual speed of the exit itself is in those microbenchmarks. I’m not too
&gt; sure what to make of this yet. Maybe there are trivial things we can do to
&gt; speed up the OSR exit C code?

I can try to do some profiling on OSR exits on pdfjs and see if any section of the code stands out as being expensive.  One area I&apos;m wary of is the amount of memcpying done.

I also use std::memcpy to workaround strict aliasing issues.  If the compiler is not smart enough to turn these into straight memory word copies, that can hurt as lot as well.  I&apos;ll take a close look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342684</commentid>
    <comment_count>16</comment_count>
      <attachid>319142</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-26 17:20:33 -0700</bug_when>
    <thetext>Created attachment 319142
x86_64 benchmark results 3: no ethernet, no wifi (as quiet as can be).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342686</commentid>
    <comment_count>17</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-26 17:32:23 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #15)
&gt; (In reply to Saam Barati from comment #14)
&gt; &gt; It’s not entirely surprising to see the try/catch micro benchmarks get
&gt; &gt; slower. Most of those tests are stressing throwing an exception, which is an
&gt; &gt; OSR exit in the DFG/FTL. What is somewhat surprising is how important the
&gt; &gt; actual speed of the exit itself is in those microbenchmarks. I’m not too
&gt; &gt; sure what to make of this yet. Maybe there are trivial things we can do to
&gt; &gt; speed up the OSR exit C code?
&gt; 
&gt; I can try to do some profiling on OSR exits on pdfjs and see if any section
&gt; of the code stands out as being expensive.  One area I&apos;m wary of is the
&gt; amount of memcpying done.
&gt; 
&gt; I also use std::memcpy to workaround strict aliasing issues.  If the
&gt; compiler is not smart enough to turn these into straight memory word copies,
&gt; that can hurt as lot as well.  I&apos;ll take a close look.

Your second run seems better in terms of numbers. When I say I’m not sure, I mean I’m not sure if this will hurt real world things that use try/catch. I think in practice probably not. But the slowdown indicates to me that there are perhaps ways to make the interpreter faster. Maybe these can be follow ups.

The interesting thing about an exception OSR exit is that it won’t cause us to jettison and recompile because it’s expected behavior. Maybe because of this, there is a slight argument to keep them compiled because it might execute many times for programs that throw. That said, I don’t think this should stop your work from going forward. I feel like we should be able to make the interpreter fast enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342709</commentid>
    <comment_count>18</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-26 20:53:45 -0700</bug_when>
    <thetext>The latest results seem to say that your patch is a regression. 

You should profile to see if time spent in OSR exit is the problem in pdfjs. It could also be that some value profiling changed.

You could try reducing osrExitCountForReoptimization. Making that smaller will reduce the number of times we take any particular exit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343918</commentid>
    <comment_count>19</comment_count>
      <attachid>319459</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-31 07:01:27 -0700</bug_when>
    <thetext>Created attachment 319459
work in progress.

Here&apos;s the current work in progress patch: fixed a few bugs, and made optimization changes to not repeat redundant work.  The result: microbenchmarks run faster (validating that the optimization is working as intended), but real world benchmarks actually appear to run slower.

At this point, it is difficult to see what is going wrong when running the real world benchmarks.  So, I&apos;m going to pull out the big gun and do a full verification run comparing my probe OSR exit results with the old one generated by the old code.  I&apos;ll achieve this by inserting probes into the old code to compute the probe OSR exit register and stack state on the side, and then compare these results against the register and stack computed by the JIT offramps.  Since the 2 methods will be feeding on the same real data, they should produce identical result data.  If there are any differences in the restored values at all, then we&apos;ll have a lead to chase down for resolving this perf issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344010</commentid>
    <comment_count>20</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-31 11:16:22 -0700</bug_when>
    <thetext>Attachment 319459 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGOSRExit.h:105:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOSRExit.h:106:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOSRExit.h:107:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOSRExit.h:108:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOSRExit.h:109:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOSRExit.h:110:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOSRExit.h:111:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOSRExit.h:112:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOSRExit.h:113:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/SuperSampler.cpp:52:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 10 in 34 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>1344326</commentid>
    <comment_count>21</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-31 23:05:34 -0700</bug_when>
    <thetext>Something is strange: comparing the stack of the probe based OSR exit and the jit based OSR exit, I detected a few stack operands that are different.  

However, when I chased down the difference, it is because the jit based OSR exit was recovering operand values from a stack location that is below the stack pointer.  As a result, that value changed mid-way between the start of the ramp and the point where the recovery was done.  The probe based OSR exit does not have this vulnerability because the true machine pointer is set much lower to accommodate probe data while the probe is executing.  This appears to be the sole source of the difference between the stack values of the 2 OSR exit versions.

Note: this means that either the jit version (1) is restoring a value it does not need, or (2) is restoring a corrupted value.  My bet is on (1).  I&apos;ll do a test to scribble a bad value into that restored value if the address if below the stack pointer.  If this causes a crash, then we&apos;re dealing with scenario (2), else (1).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344331</commentid>
    <comment_count>22</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-31 23:37:36 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #21)
&gt; Note: this means that either the jit version (1) is restoring a value it
&gt; does not need, or (2) is restoring a corrupted value.  My bet is on (1). 
&gt; I&apos;ll do a test to scribble a bad value into that restored value if the
&gt; address if below the stack pointer.  If this causes a crash, then we&apos;re
&gt; dealing with scenario (2), else (1).

Indeed, (1) is correct.  I scribbled those values with 0xbadbeef0, and there were no crashed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344526</commentid>
    <comment_count>23</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-09-01 12:36:06 -0700</bug_when>
    <thetext>I&apos;ve fixed another difference where we have converted a double JSValue to an int32 JSValue.  In some cases, the value fits in an int32, which is what triggered the conversion.  I now force it to be a double JSValue if came from a double source.  This is what the old jit base OSR exit ramp does.

With that fix plus discounting the values written below the stack pointer (by scribbling 0xbadbeef0 into those slots), I now see that the stack is identical after the jit and probe based OSR exit ramps.

There are register differences, but only for arguments, temps, and scratch registers.  This is to be expected since the jit based OSR exit ramp calls C++ functions which uses those registers.  So, the register differences can be disregarded as well.

The only remaining possible difference between the 2 OSR exit ramps is in changes to VM / profiling state.  I&apos;ll try to validate that next.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344528</commentid>
    <comment_count>24</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-09-01 12:38:08 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #23)
&gt; I&apos;ve fixed another difference where we have converted a double JSValue to an
&gt; int32 JSValue.  In some cases, the value fits in an int32, which is what
&gt; triggered the conversion.  I now force it to be a double JSValue if came
&gt; from a double source.  This is what the old jit base OSR exit ramp does.
&gt; 
&gt; With that fix plus discounting the values written below the stack pointer
&gt; (by scribbling 0xbadbeef0 into those slots), I now see that the stack is
&gt; identical after the jit and probe based OSR exit ramps.
&gt; 
&gt; There are register differences, but only for arguments, temps, and scratch
&gt; registers.  This is to be expected since the jit based OSR exit ramp calls
&gt; C++ functions which uses those registers.  So, the register differences can
&gt; be disregarded as well.
&gt; 
&gt; The only remaining possible difference between the 2 OSR exit ramps is in
&gt; changes to VM / profiling state.  I&apos;ll try to validate that next.

FYI, with double JSValue fix (which is the only real difference), pdfjs is even more slower (from my quick benchmark run).  This means the JSValue encoding of the double value is not the cause of our perf difference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344556</commentid>
    <comment_count>25</comment_count>
      <attachid>319641</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-09-01 13:25:51 -0700</bug_when>
    <thetext>Created attachment 319641
archive of code that compares the probe based OSR results vs the jit based one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344688</commentid>
    <comment_count>26</comment_count>
      <attachid>319676</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-09-01 17:28:51 -0700</bug_when>
    <thetext>Created attachment 319676
archive of code that compares the probe based OSR results vs the jit based one v.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346033</commentid>
    <comment_count>27</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-09-06 12:02:44 -0700</bug_when>
    <thetext>The reason for the pdfjs perf regression is https://bugs.webkit.org/show_bug.cgi?id=176473.

I fixed the regression by doing what the jit OSR Exit code did i.e. not doing what  arrayModeFromStructure() does.  I&apos;ll clean up the patch, do some more testing, and prepare for a code review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346034</commentid>
    <comment_count>28</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-06 12:03:13 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #27)
&gt; The reason for the pdfjs perf regression is
&gt; https://bugs.webkit.org/show_bug.cgi?id=176473.
&gt; 
&gt; I fixed the regression by doing what the jit OSR Exit code did i.e. not
&gt; doing what  arrayModeFromStructure() does.  I&apos;ll clean up the patch, do some
&gt; more testing, and prepare for a code review.

Nice!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346134</commentid>
    <comment_count>29</comment_count>
      <attachid>320072</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-09-06 16:14:09 -0700</bug_when>
    <thetext>Created attachment 320072
proposed patch.

Let&apos;s try the patch on the EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346141</commentid>
    <comment_count>30</comment_count>
      <attachid>320075</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-09-06 16:21:19 -0700</bug_when>
    <thetext>Created attachment 320075
x86_64 benchmark results (run 1)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346142</commentid>
    <comment_count>31</comment_count>
      <attachid>320076</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-09-06 16:21:41 -0700</bug_when>
    <thetext>Created attachment 320076
x86_64 benchmark results (run 2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346144</commentid>
    <comment_count>32</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-09-06 16:24:22 -0700</bug_when>
    <thetext>Benchmark results show that, on aggregate, perf is neutral.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346454</commentid>
    <comment_count>33</comment_count>
      <attachid>320149</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-09-07 11:49:40 -0700</bug_when>
    <thetext>Created attachment 320149
proposed patch (w/ 32-bit fixes).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346459</commentid>
    <comment_count>34</comment_count>
      <attachid>320151</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-09-07 11:54:44 -0700</bug_when>
    <thetext>Created attachment 320151
proposed patch (removed some debugging code).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346582</commentid>
    <comment_count>35</comment_count>
      <attachid>320151</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-09-07 15:21:43 -0700</bug_when>
    <thetext>Comment on attachment 320151
proposed patch (removed some debugging code).

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

r=me with comments

&gt; Source/JavaScriptCore/assembler/ProbeFrame.h:44
&gt; +    T getArgument(int argument)

style nit: here and below, you preface getters with get, but I don&apos;t think we do that elsewhere, e.g, Operands. What about just calling this:
argument(...), and below, operand(...), etc.

&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:80
&gt; +    RegisterSet dontRestoreRegisters = RegisterSet(RegisterSet::stackRegisters(), RegisterSet::allFPRs());

style nit: This same thing is used here and below, might be worth making it a function to call.

&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:135
&gt; +            context.gpr(entry.reg().gpr()) = stack.get&lt;uintptr_t&gt;(calleeSaveBuffer, entry.offset());
&gt; +        else
&gt; +            context.gpr(entry.reg().gpr()) = stack.get&lt;double&gt;(calleeSaveBuffer, entry.offset());

why do these gets need to use the stack API?

&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:152
&gt; +    ASSERT(is64Bit());

seems like this could be a static assert?

&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:160
&gt; +        if (entry.reg().isGPR())
&gt; +            stack.set(calleeSaveBuffer, entry.offset(), context.gpr&lt;uintptr_t&gt;(entry.reg().gpr()));
&gt; +        else
&gt; +            stack.set(calleeSaveBuffer, entry.offset(), context.fpr&lt;uintptr_t&gt;(entry.reg().fpr()));

I think it&apos;d be nice to have context expose a register API so it does this branch for you. You also write the branch in a few places, but if context handled it, you could just do:
stack.set(calleeSaveBuffer, entry.offset(), context.reg&lt;uintptr_t&gt;(entry.reg()));

&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:171
&gt; +    RegisterSet dontSaveRegisters = RegisterSet(RegisterSet::stackRegisters(), RegisterSet::allFPRs());

ditto about method abstracting this instead of copy-pasting.

&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:176
&gt; +#if USE(JSVALUE64)
&gt; +    RegisterSet baselineCalleeSaves = RegisterSet::llintBaselineCalleeSaveRegisters();
&gt; +#endif

seems like this is guaranteed given NUMBER_OF_CALLEE_SAVES_REGISTERS.

&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:187
&gt; +#if USE(JSVALUE32_64)
&gt; +        UNUSED_PARAM(wasCalledViaTailCall);
&gt; +#else

seems like this is dead given: NUMBER_OF_CALLEE_SAVES_REGISTERS

Maybe inside your:
#if NUMBER_OF_CALLEE_SAVES_REGISTERS &gt; 0
 
you can add: static_assert(is64bit(), &quot;&quot;)

&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:326
&gt; +void OSRExit::executeOSRExit(Context&amp; context)

Should you set top call frame inside of here? I think that&apos;d help the sampling profiler at least. Maybe other things need it to.

&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:353
&gt; +    if (UNLIKELY(!exit.exitState)) {

suggestion: Let&apos;s cache the various calls of JITCode::dfg() here since it&apos;s a virtual function

&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:366
&gt; +        // Compute the value recoveries.
&gt; +        Operands&lt;ValueRecovery&gt; operands;
&gt; +        codeBlock-&gt;jitCode()-&gt;dfg()-&gt;variableEventStream.reconstruct(codeBlock, exit.m_codeOrigin, codeBlock-&gt;jitCode()-&gt;dfg()-&gt;minifiedDFG, exit.m_streamIndex, operands);

This is an interesting tradeoff. I think it&apos;s the right one. However, I know we use the event stream to reconstruct on demand because storing the reconstructed data for each exit has a high memory cost. That said, we&apos;re only doing this here for *executed* exits. That&apos;s why I think this is ok and the right choice. But it&apos;s worth making sure we truly believe this is the best choice.

&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:489
&gt; +                Structure* structure = jsValueFor(cpu, exit.m_jsValueSource).asCell()-&gt;structure(vm);

how do we know the incoming value is a cell?

&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:745
&gt; +        saveOrCopyCalleeSavesFor(context, baselineCodeBlock, static_cast&lt;VirtualRegister&gt;(inlineCallFrame-&gt;stackOffset), !trueCaller);

Style: This static cast here seems weird, why not just: VirtualRegister(inlineCallFrame-&gt;stackOffset) ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346642</commentid>
    <comment_count>36</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-09-07 16:44:54 -0700</bug_when>
    <thetext>Thanks for the review.  I&apos;ve addressed your feedback as follows.  Will retest now before I land.

(In reply to Saam Barati from comment #35)
&gt; Comment on attachment 320151 [details]
&gt; proposed patch (removed some debugging code).
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=320151&amp;action=review
&gt; 
&gt; r=me with comments
&gt; 
&gt; &gt; Source/JavaScriptCore/assembler/ProbeFrame.h:44
&gt; &gt; +    T getArgument(int argument)
&gt; 
&gt; style nit: here and below, you preface getters with get, but I don&apos;t think
&gt; we do that elsewhere, e.g, Operands. What about just calling this:
&gt; argument(...), and below, operand(...), etc.

Fixed.

&gt; &gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:80
&gt; &gt; +    RegisterSet dontRestoreRegisters = RegisterSet(RegisterSet::stackRegisters(), RegisterSet::allFPRs());
&gt; 
&gt; style nit: This same thing is used here and below, might be worth making it
&gt; a function to call.

This is not a lot of code, and the original code that these functions are based on (AssemblyHelpers::restoreCalleeSavesFromVMEntryFrameCalleeSavesBuffer(), AssemblyHelpers::copyCalleeSavesToVMEntryFrameCalleeSavesBuffer(), and AssemblyHelpers::copyCalleeSavesToVMEntryFrameCalleeSavesBuffer()) also decided to just duplicate this line.  I&apos;ll keep this as is for now to keep these functions consistent with the AssemblyHelpers ones they are based on.  I can do a refactor later on to adda calleeSavesRegistersToOmitFromRestoration() and change all sites to use that.

&gt; &gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:135
&gt; &gt; +            context.gpr(entry.reg().gpr()) = stack.get&lt;uintptr_t&gt;(calleeSaveBuffer, entry.offset());
&gt; &gt; +        else
&gt; &gt; +            context.gpr(entry.reg().gpr()) = stack.get&lt;double&gt;(calleeSaveBuffer, entry.offset());
&gt; 
&gt; why do these gets need to use the stack API?

They don&apos;t need to be.  I fixed it to read from the stack.

There&apos;s also a bug here where the fpr case (the else case) is using gpr values.  I&apos;ve fixed that also.

&gt; &gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:152
&gt; &gt; +    ASSERT(is64Bit());
&gt; 
&gt; seems like this could be a static assert?

Fixed.

&gt; &gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:160
&gt; &gt; +        if (entry.reg().isGPR())
&gt; &gt; +            stack.set(calleeSaveBuffer, entry.offset(), context.gpr&lt;uintptr_t&gt;(entry.reg().gpr()));
&gt; &gt; +        else
&gt; &gt; +            stack.set(calleeSaveBuffer, entry.offset(), context.fpr&lt;uintptr_t&gt;(entry.reg().fpr()));
&gt; 
&gt; I think it&apos;d be nice to have context expose a register API so it does this
&gt; branch for you. You also write the branch in a few places, but if context
&gt; handled it, you could just do:
&gt; stack.set(calleeSaveBuffer, entry.offset(),
&gt; context.reg&lt;uintptr_t&gt;(entry.reg()));

There are 3 issues with your suggestion:
1. It&apos;s a layer violation.

   Probe::Context is defined at the MacroAssembler level, and Reg (which we query isGPR() on) is defined at the JIT level.  It&apos;d be strange to have Probe::Context depend on Reg.  We could move Reg into the MacroAssembler level, but that&apos;s more refactoring work.

2. Your suggestion only works for 64-bit where sizeof GPR and FPR are both 64-bit.

   Yes, currently, only 64-bit uses callee saves, and hence, things should work out.  But it&apos;s still kind of gross to rely on that.

3. The original AssemblyHelpers code that these functions are based on does it this way.

   I&apos;d rather keep this version of the code consistent with the AssemblyHelpers version.

For these reasons, I&apos;d like to keep this code as is.

&gt; &gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:171
&gt; &gt; +    RegisterSet dontSaveRegisters = RegisterSet(RegisterSet::stackRegisters(), RegisterSet::allFPRs());
&gt; 
&gt; ditto about method abstracting this instead of copy-pasting.

Answered above.

&gt; &gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:176
&gt; &gt; +#if USE(JSVALUE64)
&gt; &gt; +    RegisterSet baselineCalleeSaves = RegisterSet::llintBaselineCalleeSaveRegisters();
&gt; &gt; +#endif
&gt; 
&gt; seems like this is guaranteed given NUMBER_OF_CALLEE_SAVES_REGISTERS.

Fixed.  I removed the #if+#endif.

&gt; &gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:187
&gt; &gt; +#if USE(JSVALUE32_64)
&gt; &gt; +        UNUSED_PARAM(wasCalledViaTailCall);
&gt; &gt; +#else
&gt; 
&gt; seems like this is dead given: NUMBER_OF_CALLEE_SAVES_REGISTERS

Fixed.

&gt; Maybe inside your:
&gt; #if NUMBER_OF_CALLEE_SAVES_REGISTERS &gt; 0
&gt;  
&gt; you can add: static_assert(is64bit(), &quot;&quot;)

Done.

&gt; &gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:326
&gt; &gt; +void OSRExit::executeOSRExit(Context&amp; context)
&gt; 
&gt; Should you set top call frame inside of here? I think that&apos;d help the
&gt; sampling profiler at least. Maybe other things need it to.

I was already setting it in adjustAndJumpToTarget() after the frame has been fully reconstructed.  I think that would be the better time to set it.

&gt; &gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:353
&gt; &gt; +    if (UNLIKELY(!exit.exitState)) {
&gt; 
&gt; suggestion: Let&apos;s cache the various calls of JITCode::dfg() here since it&apos;s
&gt; a virtual function

The DFG::JITCode* value is only used in 2 functions, and I can&apos;t avoid computing it at least once on every OSR exit in order to get the OSRExit record.  So, I just cache it in a local and reuse that (didn&apos;t need to cache it in the exitState).

&gt; &gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:366
&gt; &gt; +        // Compute the value recoveries.
&gt; &gt; +        Operands&lt;ValueRecovery&gt; operands;
&gt; &gt; +        codeBlock-&gt;jitCode()-&gt;dfg()-&gt;variableEventStream.reconstruct(codeBlock, exit.m_codeOrigin, codeBlock-&gt;jitCode()-&gt;dfg()-&gt;minifiedDFG, exit.m_streamIndex, operands);
&gt; 
&gt; This is an interesting tradeoff. I think it&apos;s the right one. However, I know
&gt; we use the event stream to reconstruct on demand because storing the
&gt; reconstructed data for each exit has a high memory cost. That said, we&apos;re
&gt; only doing this here for *executed* exits. That&apos;s why I think this is ok and
&gt; the right choice. But it&apos;s worth making sure we truly believe this is the
&gt; best choice.

This caching accounted for about half of the speed up on the int-or-other-neg-then-get-by-val microbenchmark (relative to my very first patch).  It is also correct to cache these values and use them.  The old jit based OSR Exit caches the value recovery data in the form of the emitted OSR off-ramp jit code.  We&apos;re effectively doing the same thing (in spirit) here.

&gt; &gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:489
&gt; &gt; +                Structure* structure = jsValueFor(cpu, exit.m_jsValueSource).asCell()-&gt;structure(vm);
&gt; 
&gt; how do we know the incoming value is a cell?

We can only get here if exit.m_kind == BadCache || exit.m_kind == BadIndexingType.  I presume that those exit kinds means that the value is a cell.  Anyway, I&apos;m not introducing new logic here.  This is exactly what the old jit based OSR exit code does in OSRExit::compileExit(): it loads the value and proceeds to load its structureID without first confirming that it&apos;s a cell.

&gt; &gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:745
&gt; &gt; +        saveOrCopyCalleeSavesFor(context, baselineCodeBlock, static_cast&lt;VirtualRegister&gt;(inlineCallFrame-&gt;stackOffset), !trueCaller);
&gt; 
&gt; Style: This static cast here seems weird, why not just:
&gt; VirtualRegister(inlineCallFrame-&gt;stackOffset) ?

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346674</commentid>
    <comment_count>37</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-09-07 18:16:34 -0700</bug_when>
    <thetext>Thanks again for the review.  Landed in r221774: &lt;http://trac.webkit.org/r221774&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346987</commentid>
    <comment_count>38</comment_count>
      <attachid>320151</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-09-08 16:22:05 -0700</bug_when>
    <thetext>Comment on attachment 320151
proposed patch (removed some debugging code).

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

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:135
&gt;&gt;&gt; +            context.gpr(entry.reg().gpr()) = stack.get&lt;double&gt;(calleeSaveBuffer, entry.offset());
&gt;&gt; 
&gt;&gt; why do these gets need to use the stack API?
&gt; 
&gt; They don&apos;t need to be.  I fixed it to read from the stack.
&gt; 
&gt; There&apos;s also a bug here where the fpr case (the else case) is using gpr values.  I&apos;ve fixed that also.

It&apos;s always fun to learn when we don&apos;t have tests for things :)
Could be worth filing a bug saying this is the case.

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:160
&gt;&gt;&gt; +            stack.set(calleeSaveBuffer, entry.offset(), context.fpr&lt;uintptr_t&gt;(entry.reg().fpr()));
&gt;&gt; 
&gt;&gt; I think it&apos;d be nice to have context expose a register API so it does this branch for you. You also write the branch in a few places, but if context handled it, you could just do:
&gt;&gt; stack.set(calleeSaveBuffer, entry.offset(), context.reg&lt;uintptr_t&gt;(entry.reg()));
&gt; 
&gt; There are 3 issues with your suggestion:
&gt; 1. It&apos;s a layer violation.
&gt; 
&gt;    Probe::Context is defined at the MacroAssembler level, and Reg (which we query isGPR() on) is defined at the JIT level.  It&apos;d be strange to have Probe::Context depend on Reg.  We could move Reg into the MacroAssembler level, but that&apos;s more refactoring work.
&gt; 
&gt; 2. Your suggestion only works for 64-bit where sizeof GPR and FPR are both 64-bit.
&gt; 
&gt;    Yes, currently, only 64-bit uses callee saves, and hence, things should work out.  But it&apos;s still kind of gross to rely on that.
&gt; 
&gt; 3. The original AssemblyHelpers code that these functions are based on does it this way.
&gt; 
&gt;    I&apos;d rather keep this version of the code consistent with the AssemblyHelpers version.
&gt; 
&gt; For these reasons, I&apos;d like to keep this code as is.

I see. I didn&apos;t think about this layering violation. I think it&apos;d be worth having a helper in this file alone. It could even be under the JSVALUE64.

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:326
&gt;&gt;&gt; +void OSRExit::executeOSRExit(Context&amp; context)
&gt;&gt; 
&gt;&gt; Should you set top call frame inside of here? I think that&apos;d help the sampling profiler at least. Maybe other things need it to.
&gt; 
&gt; I was already setting it in adjustAndJumpToTarget() after the frame has been fully reconstructed.  I think that would be the better time to set it.

Let me restate:
The way this code is written, the sampling profiler can not say time is spent here. If something is OSR exitting a lot, there is a good chance time is spent at the bytecode operation. Your patch makes the sampling profiler not ascribe time to that bytecode anymore. That&apos;s unfortunate.

To make this work, we&apos;d need to:
1. Set call site index in the exitting frame
2. Set top call frame

I think it&apos;s definitely worth doing this. Maybe we can open a bug to do this in a follow up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347115</commentid>
    <comment_count>39</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-09-09 09:50:20 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #37)
&gt; Thanks again for the review.  Landed in r221774:
&gt; &lt;http://trac.webkit.org/r221774&gt;.

This change introduced 3 JSC test timeouts. Details in https://bugs.webkit.org/show_bug.cgi?id=176630</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347118</commentid>
    <comment_count>40</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-09-09 09:54:47 -0700</bug_when>
    <thetext>Reverted r221774 for reason:

This change introduced three debug JSC test timeouts.

Committed r221823: &lt;http://trac.webkit.org/changeset/221823&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347170</commentid>
    <comment_count>41</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-09 15:10:41 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #40)
&gt; Reverted r221774 for reason:
&gt; 
&gt; This change introduced three debug JSC test timeouts.
&gt; 
&gt; Committed r221823: &lt;http://trac.webkit.org/changeset/221823&gt;

I think that we should skip tests in debug when they timeout, instead of rolling out the change that caused it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347182</commentid>
    <comment_count>42</comment_count>
      <attachid>320367</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-09-09 17:20:33 -0700</bug_when>
    <thetext>Created attachment 320367
patch for re-landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347184</commentid>
    <comment_count>43</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-09-09 17:23:15 -0700</bug_when>
    <thetext>Re-landed in r221832: &lt;http://trac.webkit.org/r221832&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348639</commentid>
    <comment_count>44</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-09-13 21:22:57 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #43)
&gt; Re-landed in r221832: &lt;http://trac.webkit.org/r221832&gt;.

This was rolled out in r222009: &lt;http://trac.webkit.org/r222009&gt; due to https://bugs.webkit.org/show_bug.cgi?id=176888.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348715</commentid>
    <comment_count>45</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-14 03:47:28 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #44)
&gt; (In reply to Mark Lam from comment #43)
&gt; &gt; Re-landed in r221832: &lt;http://trac.webkit.org/r221832&gt;.
&gt; 
&gt; This was rolled out in r222009: &lt;http://trac.webkit.org/r222009&gt; due to
&gt; https://bugs.webkit.org/show_bug.cgi?id=176888.

It seems that OSR patch had a bit regression Octane/gbemu. Reverting it gives 4.3% recovery.
https://arewefastyet.com/#machine=29&amp;view=single&amp;suite=octane&amp;subtest=Gameboy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348823</commentid>
    <comment_count>46</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-09-14 10:12:56 -0700</bug_when>
    <thetext>*** Bug 176874 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318947</attachid>
            <date>2017-08-23 17:26:52 -0700</date>
            <delta_ts>2017-08-24 15:06:40 -0700</delta_ts>
            <desc>work in progress: won&apos;t build yet. still need a few edits + self code review.</desc>
            <filename>bug-175144.patch</filename>
            <type>text/plain</type>
            <size>113532</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMjEwMTcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjQzMyw2ICsyNDMzLDcgQEAKIAkJRkUxMEFBRUMxRjQ0
RDU0NTAwOURFREM1IC8qIFByb2JlU3RhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxMEFBRTkxRjQ0RDUxMDAwOURFREM1IC8qIFByb2JlU3Rh
Y2suY3BwICovOyB9OwogCQlGRTEwQUFFRTFGNDREOTU0MDA5REVEQzUgLyogUHJvYmVDb250ZXh0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEwQUFF
RDFGNDREOTQ2MDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUxMEFBRjQxRjQ2ODM5NjAwOURFREM1IC8q
IFByb2JlQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTEwQUFGMzFGNDY4MjZEMDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmNwcCAqLzsg
fTsKKwkJRkUxMEFBRkYxRjRFMzhFNTAwOURFREM1IC8qIFByb2JlRnJhbWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTBBQUZFMUY0RTM4REEwMDlE
RURDNSAvKiBQcm9iZUZyYW1lLmggKi87IH07CiAJCUZFMTIyMDI3MUJFN0Y1OEMwMDM5RTZGMiAv
KiBKSVRBZGRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFMTIyMDI2MUJFN0Y1NjQwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuaCAq
LzsgfTsKIAkJRkUxMjIwMjgxQkU3RjU5MTAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEyMjAyNTFC
RTdGNTY0MDAzOUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmNwcCAqLzsgfTsKIAkJRkUxODdBMDEx
QkZCRTU1RTAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4NzlGRjFCRkJDNzNDMDAzOEJCQ0EgLyog
SklUTXVsR2VuZXJhdG9yLmNwcCAqLzsgfTsKQEAgLTUxMTMsNiArNTExNCw3IEBACiAJCUZFMTBB
QUVBMUY0NEQ1MTIwMDlERURDNSAvKiBQcm9iZVN0YWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFByb2JlU3RhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkUxMEFBRUQxRjQ0RDk0NjAwOURFREM1IC8qIFByb2JlQ29udGV4dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQcm9iZUNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkUxMEFBRjMxRjQ2ODI2RDAwOURFREM1IC8qIFByb2JlQ29udGV4dC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9iZUNvbnRleHQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTEwQUFGRTFGNEUzOERBMDA5REVEQzUgLyogUHJv
YmVGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9iZUZyYW1lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMTIyMDI1MUJFN0Y1NjQwMDM5RTZGMiAv
KiBKSVRBZGRHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSklUQWRkR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUx
MjIwMjYxQkU3RjU2NDAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKSVRBZGRHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkUxODc5RkYxQkZCQzczQzAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRNdWxHZW5lcmF0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzY4Niw2ICs3Njg4LDcgQEAKIAkJ
CQlGRTYzREQ1MzFFQTlCNjBFMDAxMDNBNjkgLyogUHJpbnRlci5oICovLAogCQkJCUZFMTBBQUYz
MUY0NjgyNkQwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuY3BwICovLAogCQkJCUZFMTBBQUVEMUY0
NEQ5NDYwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuaCAqLywKKwkJCQlGRTEwQUFGRTFGNEUzOERB
MDA5REVEQzUgLyogUHJvYmVGcmFtZS5oICovLAogCQkJCUZFMTBBQUU5MUY0NEQ1MTAwMDlERURD
NSAvKiBQcm9iZVN0YWNrLmNwcCAqLywKIAkJCQlGRTEwQUFFQTFGNDRENTEyMDA5REVEQzUgLyog
UHJvYmVTdGFjay5oICovLAogCQkJCUZFNTMzQ0EwMUYyMTdDMzEwMDE2QTFGRSAvKiB0ZXN0bWFz
bS5jcHAgKi8sCkBAIC05NjQzLDYgKzk2NDYsNyBAQAogCQkJCUFEMkZDQzFEMURCNTlDQjIwMEIz
RTczNiAvKiBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUFENDkzN0M4MURERDBBQUUwMDc3QzgwNyAvKiBXZWJBc3NlbWJseU1vZHVsZVJlY29yZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNDMkQxREI4MzhGRDAwQjNFNzM2IC8qIFdlYkFzc2Vt
Ymx5UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTEwQUFGRjFGNEUzOEU1MDA5REVE
QzUgLyogUHJvYmVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNCRjkxREI1OERBRDAw
QjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZFMTBBQUVCMUY0NEQ1MjgwMDlERURDNSAvKiBQcm9iZVN0YWNrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBRDJGQ0MxRTFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3JDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5oCShyZXZpc2lvbiAyMjEw
MTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NSwxMyArNDUsOSBAQCBzdHJ1Y3QgQ1BVU3RhdGUgewogICAgIGlu
bGluZSB1aW50cHRyX3QmIHNwcihTUFJlZ2lzdGVySUQpOwogICAgIGlubGluZSBkb3VibGUmIGZw
cihGUFJlZ2lzdGVySUQpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIGdwcihSZWdpc3RlcklEKSBjb25zdDsK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRyPgotICAgIFQgZ3ByKFJlZ2lzdGVy
SUQpIGNvbnN0OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRyPgotICAgIFQg
c3ByKFNQUmVnaXN0ZXJJRCkgY29uc3Q7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVs
bHB0cj4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFQgc3ByKFNQUmVnaXN0ZXJJRCkg
Y29uc3Q7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBmcHIoRlBSZWdpc3RlcklEKSBjb25z
dDsKIApAQCAtODUsMzIgKzgxLDI0IEBAIGlubGluZSBkb3VibGUmIENQVVN0YXRlOjpmcHIoRlBS
ZWdpc3RlckkKICAgICByZXR1cm4gZnByc1tpZF07CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlw
ZSo+Ci1UIENQVVN0YXRlOjpncHIoUmVnaXN0ZXJJRCBpZCkgY29uc3QKLXsKLSAgICBDUFVTdGF0
ZSogY3B1ID0gY29uc3RfY2FzdDxDUFVTdGF0ZSo+KHRoaXMpOwotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxUPihjcHUtPmdwcihpZCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZSo+Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgogVCBDUFVTdGF0ZTo6Z3ByKFJlZ2lzdGVySUQgaWQpIGNvbnN0CiB7
CiAgICAgQ1BVU3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPihjcHUtPmdwcihpZCkpOworICAgIGF1dG8mIGZyb20g
PSBjcHUtPmdwcihpZCk7CisgICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD46OnR5cGUg
dG8geyB9OworICAgIHN0ZDo6bWVtY3B5KCZ0bywgJmZyb20sIHNpemVvZih0bykpOworICAgIHJl
dHVybiB0bzsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKj4KLVQgQ1BVU3RhdGU6OnNwcihT
UFJlZ2lzdGVySUQgaWQpIGNvbnN0Ci17Ci0gICAgQ1BVU3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8
Q1BVU3RhdGUqPih0aGlzKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oY3B1LT5zcHIoaWQp
KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3Rk
Ojppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGUqPgordGVtcGxhdGU8dHlwZW5hbWUgVD4KIFQg
Q1BVU3RhdGU6OnNwcihTUFJlZ2lzdGVySUQgaWQpIGNvbnN0CiB7CiAgICAgQ1BVU3RhdGUqIGNw
dSA9IGNvbnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxUPihjcHUtPnNwcihpZCkpOworICAgIGF1dG8mIGZyb20gPSBjcHUtPnNwcihpZCk7Cisg
ICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD46OnR5cGUgdG8geyB9OworICAgIHN0ZDo6
bWVtY3B5KCZ0bywgJmZyb20sIHNpemVvZih0bykpOworICAgIHJldHVybiB0bzsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgVD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
UHJvYmVGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvUHJvYmVGcmFtZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvUHJvYmVGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgorCisjaWYgRU5BQkxFKE1BU01fUFJPQkUpCisK
K25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIFByb2JlIHsKKworY2xhc3MgRnJhbWUgeworcHVi
bGljOgorICAgIEZyYW1lKENvbnRleHQmIGNvbnRleHQpCisgICAgICAgIDogbV9jb250ZXh0KGNv
bnRleHQpCisgICAgeyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFQgZ2V0T3Bl
cmFuZChpbnQgb3BlcmFuZCkKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRPcGVyYW5kPFQ+KG9w
ZXJhbmQsIDApOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFQgZ2V0T3Bl
cmFuZChpbnQgb3BlcmFuZCwgcHRyZGlmZl90IG9mZnNldCkKKyAgICB7CisgICAgICAgIHZvaWQq
IGFkZHJlc3MgPSBtX2NvbnRleHQuY3B1LmZwPHVpbnQ4X3QqPigpICsgc3RhdGljX2Nhc3Q8Vmly
dHVhbFJlZ2lzdGVyPihvcGVyYW5kKS5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikgKyBvZmZz
ZXQ7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQuc3RhY2soKS5nZXQ8VD4oYWRkcmVzcyk7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNldE9wZXJhbmQoaW50
IG9wZXJhbmQsIFQgdmFsdWUpCisgICAgeworICAgICAgICBzZXRPcGVyYW5kPFQ+KG9wZXJhbmQs
IDAsIHZhbHVlKTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNl
dE9wZXJhbmQoaW50IG9wZXJhbmQsIHB0cmRpZmZfdCBvZmZzZXQsIFQgdmFsdWUpCisgICAgewor
ICAgICAgICBzZXQ8VD4oc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5kKS5vZmZz
ZXQoKSAqIHNpemVvZihSZWdpc3RlcikgKyBvZmZzZXQsIHZhbHVlKTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHZvaWQgc2V0KHB0cmRpZmZfdCBvZmZzZXQsIFQgdmFs
dWUpCisgICAgeworICAgICAgICB2b2lkKiBhZGRyZXNzID0gbV9jb250ZXh0LmNwdS5mcDx1aW50
OF90Kj4oKSArIG9mZnNldDsKKyAgICAgICAgbV9jb250ZXh0LnN0YWNrKCkuc2V0PFQ+KGFkZHJl
c3MsIHZhbHVlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ29udGV4dCYgbV9jb250ZXh0Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgUHJvYmUKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYg
Ly8gRU5BQkxFKE1BU01fUFJPQkUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1Byb2JlU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1Byb2JlU3RhY2suaAkocmV2aXNpb24gMjIxMDE3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDE0ICs1
NiwyOSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIGdldCh2b2lk
KiBsb2dpY2FsQWRkcmVzcykKICAgICB7Ci0gICAgICAgIHJldHVybiAqcGh5c2ljYWxBZGRyZXNz
Rm9yPFQqPihsb2dpY2FsQWRkcmVzcyk7CisgICAgICAgIHZvaWQqIGZyb20gPSBwaHlzaWNhbEFk
ZHJlc3NGb3IobG9naWNhbEFkZHJlc3MpOworICAgICAgICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9j
b25zdDxUPjo6dHlwZSB0byB7IH07CisgICAgICAgIHN0ZDo6bWVtY3B5KCZ0bywgZnJvbSwgc2l6
ZW9mKHRvKSk7CisgICAgICAgIHJldHVybiB0bzsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KKyAgICBUIGdldCh2b2lkKiBsb2dpY2FsQmFzZUFkZHJlc3MsIHB0cmRpZmZfdCBvZmZz
ZXQpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0PFQ+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KGxvZ2ljYWxCYXNlQWRkcmVzcykgKyBvZmZzZXQpOwogICAgIH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBzZXQodm9pZCogbG9naWNhbEFkZHJlc3MsIFQgdmFsdWUp
CiAgICAgewogICAgICAgICBtX2RpcnR5Qml0cyB8PSBkaXJ0eUJpdEZvcihsb2dpY2FsQWRkcmVz
cyk7Ci0gICAgICAgICpwaHlzaWNhbEFkZHJlc3NGb3I8VCo+KGxvZ2ljYWxBZGRyZXNzKSA9IHZh
bHVlOworCisgICAgICAgIHZvaWQqIHRvID0gcGh5c2ljYWxBZGRyZXNzRm9yKGxvZ2ljYWxBZGRy
ZXNzKTsKKyAgICAgICAgc3RkOjptZW1jcHkodG8sICZ2YWx1ZSwgc2l6ZW9mKFQpKTsKKyAgICB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNldCh2b2lkKiBsb2dpY2FsQmFz
ZUFkZHJlc3MsIHB0cmRpZmZfdCBvZmZzZXQsIFQgdmFsdWUpCisgICAgeworICAgICAgICBzZXQ8
VD4ocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obG9naWNhbEJhc2VBZGRyZXNzKSArIG9mZnNl
dCwgdmFsdWUpOwogICAgIH0KIAogICAgIGJvb2wgaGFzV3JpdGVzVG9GbHVzaCgpIGNvbnN0IHsg
cmV0dXJuICEhbV9kaXJ0eUJpdHM7IH0KQEAgLTgwLDEyICs5NSwxMCBAQCBwcml2YXRlOgogICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSA8PCAob2Zmc2V0ID4+IHNfY2h1
bmtTaXplU2hpZnQpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
ID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5
cGU+Ci0gICAgVCBwaHlzaWNhbEFkZHJlc3NGb3Iodm9pZCogbG9naWNhbEFkZHJlc3MpCisgICAg
dm9pZCogcGh5c2ljYWxBZGRyZXNzRm9yKHZvaWQqIGxvZ2ljYWxBZGRyZXNzKQogICAgIHsKICAg
ICAgICAgdWludHB0cl90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihsb2dp
Y2FsQWRkcmVzcykgJiBzX3BhZ2VNYXNrOwotICAgICAgICB2b2lkKiBwaHlzaWNhbEFkZHJlc3Mg
PSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmbV9idWZmZXIpICsgb2Zmc2V0OwotICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPihwaHlzaWNhbEFkZHJlc3MpOworICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJm1fYnVmZmVyKSArIG9mZnNldDsKICAg
ICB9CiAKICAgICB2b2lkIGZsdXNoV3JpdGVzKCk7CkBAIC0xMjMsMTMgKzEzNiwxOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCogbG93V2F0ZXJtYXJrKCkgeyByZXR1cm4gbV9sb3dXYXRlcm1hcms7IH0K
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
IXN0ZDo6aXNfc2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6
dmFsdWUsIFQ+Ojp0eXBlIGdldCh2b2lkKiBhZGRyZXNzKQorICAgIFQgZ2V0KHZvaWQqIGFkZHJl
c3MpCiAgICAgewogICAgICAgICBQYWdlKiBwYWdlID0gcGFnZUZvcihhZGRyZXNzKTsKICAgICAg
ICAgcmV0dXJuIHBhZ2UtPmdldDxUPihhZGRyZXNzKTsKICAgICB9CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KKyAgICBUIGdldCh2b2lkKiBsb2dpY2FsQmFzZUFkZHJlc3MsIHB0cmRpZmZfdCBv
ZmZzZXQpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0PFQ+KHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDhfdCo+KGxvZ2ljYWxCYXNlQWRkcmVzcykgKyBvZmZzZXQpOworICAgIH0KIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6
aXNfc2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWU+
Ojp0eXBlPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBzZXQodm9pZCogYWRk
cmVzcywgVCB2YWx1ZSkKICAgICB7CiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBwYWdlRm9yKGFkZHJl
c3MpOwpAQCAtMTQyLDE4ICsxNjAsMTAgQEAgcHVibGljOgogICAgICAgICBpZiAoY2h1bmtBZGRy
ZXNzIDwgbV9sb3dXYXRlcm1hcmspCiAgICAgICAgICAgICBtX2xvd1dhdGVybWFyayA9IGNodW5r
QWRkcmVzczsKICAgICB9Ci0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3Zl
X2N2PFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+Ojp0eXBlIGdldCh2b2lkKiBhZGRyZXNzKQotICAgIHsK
LSAgICAgICAgUGFnZSogcGFnZSA9IHBhZ2VGb3IoYWRkcmVzcyk7Ci0gICAgICAgIHJldHVybiBi
aXR3aXNlX2Nhc3Q8ZG91YmxlPihwYWdlLT5nZXQ8dWludDY0X3Q+KGFkZHJlc3MpKTsKLSAgICB9
Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfc2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0
eXBlPjo6dmFsdWU+Ojp0eXBlPgotICAgIHZvaWQgc2V0KHZvaWQqIGFkZHJlc3MsIGRvdWJsZSB2
YWx1ZSkKKyAgICB2b2lkIHNldCh2b2lkKiBsb2dpY2FsQmFzZUFkZHJlc3MsIHB0cmRpZmZfdCBv
ZmZzZXQsIFQgdmFsdWUpCiAgICAgewotICAgICAgICBzZXQ8dWludDY0X3Q+KGFkZHJlc3MsIGJp
dHdpc2VfY2FzdDx1aW50NjRfdD4odmFsdWUpKTsKKyAgICAgICAgc2V0PFQ+KHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KGxvZ2ljYWxCYXNlQWRkcmVzcykgKyBvZmZzZXQsIHZhbHVlKTsKICAg
ICB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBQYWdlKiBlbnN1cmVQYWdlRm9yKHZvaWQqIGFk
ZHJlc3MpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmls
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRo
UHJvZmlsZS5jcHAJKHJldmlzaW9uIDIyMTAxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMyLDggQEAKIG5h
bWVzcGFjZSBKU0MgewogCiAjaWYgRU5BQkxFKEpJVCkKKy8vIEZJWE1FOiBUaGlzIGlzIGJlaW5n
IHN1cHBsYW50ZWQgYnkgb2JzZXJ2ZVJlc3VsdCgpLiBSZW1vdmUgdGhpcyBvbmUKKy8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUgaGFzIGJlZW4gZml4ZWQu
CiB2b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQs
IEpTVmFsdWVSZWdzIHJlZ3MsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSkKIHsKICAgICBpZiAoIXNo
b3VsZEVtaXRTZXREb3VibGUoKSAmJiAhc2hvdWxkRW1pdFNldE5vbk51bWJlcigpKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaAkocmV2aXNp
b24gMjIxMDE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmls
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTIxMSw2ICsyMTEsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEpJ
VCkgICAgCiAgICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25O
ZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkgaWYgaXQgc2VlcyBhCiAgICAgLy8gZG91Ymxl
LiBTZXRzIE5vbk51bWJlciBpZiBpdCBzZWVzIGEgbm9uLW51bWJlci4KKyAgICAvLyBGSVhNRTog
VGhpcyBpcyBiZWluZyBzdXBwbGFudGVkIGJ5IG9ic2VydmVSZXN1bHQoKS4gUmVtb3ZlIHRoaXMg
b25lCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0
NSBoYXMgYmVlbiBmaXhlZC4KICAgICB2b2lkIGVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVy
cyYsIEpTVmFsdWVSZWdzLCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycyk7CiAg
ICAgCiAgICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWda
ZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCShyZXZpc2lvbiAyMjEwMTcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjE4LDYgKzIxOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGlj
dGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqKTsKICAgICB2b2lkIGNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxv
Y2sqLCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKTsKICAgICAKKyAgICB2b2lkIG9ic2Vy
dmVBcnJheU1vZGUoQXJyYXlNb2RlcyBtb2RlKSB7IG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHw9IG1v
ZGU7IH0KICAgICBBcnJheU1vZGVzIG9ic2VydmVkQXJyYXlNb2Rlcyhjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJv
b2wgbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYp
IGNvbnN0IHsgcmV0dXJuIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzOyB9CiAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lv
biAyMjEwMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc2MSw4ICs3NjEsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNv
dW50T1NSRXhpdCgpIHsgbV9vc3JFeGl0Q291bnRlcisrOyB9CiAKLSAgICB1aW50MzJfdCogYWRk
cmVzc09mT1NSRXhpdENvdW50ZXIoKSB7IHJldHVybiAmbV9vc3JFeGl0Q291bnRlcjsgfQorLy8g
ICAgdWludDMyX3QqIGFkZHJlc3NPZk9TUkV4aXRDb3VudGVyKCkgeyByZXR1cm4gJm1fb3NyRXhp
dENvdW50ZXI7IH0KIAorICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1LgogICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZPU1JFeGl0Q291bnRlcigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihDb2RlQmxvY2ssIG1fb3NyRXhpdENvdW50ZXIpOyB9CiAKICAgICB1aW50MzJfdCBhZGp1c3Rl
ZEV4aXRDb3VudFRocmVzaG9sZCh1aW50MzJfdCBkZXNpcmVkVGhyZXNob2xkKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAJKHJldmlzaW9uIDIyMTAxNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIs
IDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw2ICs0Niw4IEBAIE1ldGhvZE9mR2V0dGluZ0FW
YWx1ZVByb2ZpbGUgTWV0aG9kT2ZHZXQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisvLyBGSVhN
RTogVGhpcyBpcyBiZWluZyBzdXBwbGFudGVkIGJ5IHJlcG9ydFZhbHVlKCkuIFJlbW92ZSB0aGlz
IG9uZQorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NSBo
YXMgYmVlbiBmaXhlZC4KIHZvaWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJl
cG9ydFZhbHVlKENDYWxsSGVscGVycyYgaml0LCBKU1ZhbHVlUmVncyByZWdzKSBjb25zdAogewog
ICAgIHN3aXRjaCAobV9raW5kKSB7CkBAIC03NCw2ICs3NiwzNCBAQCB2b2lkIE1ldGhvZE9mR2V0
dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRSCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KIAordm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpyZXBvcnRWYWx1ZShK
U1ZhbHVlIHZhbHVlKQoreworICAgIHN3aXRjaCAobV9raW5kKSB7CisgICAgY2FzZSBOb25lOgor
ICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIFJlYWR5OgorICAgICAgICAqdS5wcm9maWxlLT5z
cGVjRmFpbEJ1Y2tldCgwKSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CisgICAgICAgIHJldHVy
bjsKKworICAgIGNhc2UgTGF6eU9wZXJhbmQ6IHsKKyAgICAgICAgTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGVLZXkga2V5KHUubGF6eU9wZXJhbmQuYnl0ZWNvZGVPZmZzZXQsIFZpcnR1YWxSZWdpc3Rl
cih1LmxhenlPcGVyYW5kLm9wZXJhbmQpKTsKKworICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKHUubGF6eU9wZXJhbmQuY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICBMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9CisgICAgICAgIHUubGF6eU9wZXJhbmQuY29kZUJs
b2NrLT5sYXp5T3BlcmFuZFZhbHVlUHJvZmlsZXMoKS5hZGQobG9ja2VyLCBrZXkpOworICAgICAg
ICAqcHJvZmlsZS0+c3BlY0ZhaWxCdWNrZXQoMCkgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBBcml0aFByb2ZpbGVSZWFkeTogewor
ICAgICAgICB1LmFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdCh2YWx1ZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9IH0KKworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDIyMTAxNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNzAsOSArNzAsMTIgQEAgcHVibGljOgogICAgICAgICBDb2RlQmxvY2sq
LCBjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYpOwogICAgIAogICAgIGV4cGxpY2l0
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2tpbmQgIT0gTm9uZTsgfQotICAgIAor
CisgICAgLy8gRklYTUU6IGVtaXRSZXBvcnRWYWx1ZSBpcyBiZWluZyBzdXBwbGFudGVkIGJ5IHJl
cG9ydFZhbHVlKCkuIFJlbW92ZSB0aGlzIG9uZQorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUgaGFzIGJlZW4gZml4ZWQuCiAgICAgdm9pZCBlbWl0
UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJzJiwgSlNWYWx1ZVJlZ3MpIGNvbnN0OwotICAgIAorICAg
IHZvaWQgcmVwb3J0VmFsdWUoSlNWYWx1ZSk7CisKIHByaXZhdGU6CiAgICAgZW51bSBLaW5kIHsK
ICAgICAgICAgTm9uZSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5j
cHAJKHJldmlzaW9uIDIyMTAxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJp
dmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEtMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIENv
bXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAogICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0aGF0
IGFueSBzdHVicyB0aGF0IHRoZSBERkcgaXMgZ29pbmcgdG8gdXNlIGFyZSBpbml0aWFsaXplZC4g
V2Ugd2FudCB0bwogICAgIC8vIG1ha2Ugc3VyZSB0aGF0IGFsbCBKSVQgY29kZSBnZW5lcmF0aW9u
IGRvZXMgZmluYWxpemF0aW9uIG9uIHRoZSBtYWluIHRocmVhZC4KLSAgICB2bS5nZXRDVElTdHVi
KG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpOworICAgIHZtLmdldENUSVN0dWIob3Ny
RXhpdFRodW5rR2VuZXJhdG9yKTsKICAgICB2bS5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJv
bUNhbGxTbG93UGF0aEdlbmVyYXRvcik7CiAgICAgdm0uZ2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5r
R2VuZXJhdG9yKTsKICAgICB2bS5nZXRDVElTdHViKGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dl
bmVyYXRvcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcAkocmV2aXNpb24gMjIxMDE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lk
IEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAgICAgICAgICAgICBsaW5rQnVm
ZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbChyZWNvcmQuY2FsbCkpOwogICAgIH0KICAgICAKLSAgICBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdFRodW5rID0gdm0oKS0+Z2V0Q1RJU3R1Yihvc3JF
eGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
b3NyRXhpdFRodW5rID0gdm0oKS0+Z2V0Q1RJU3R1Yihvc3JFeGl0VGh1bmtHZW5lcmF0b3IpOwog
ICAgIENvZGVMb2NhdGlvbkxhYmVsIHRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsKG9zckV4aXRU
aHVuay5jb2RlKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2ppdENvZGUtPm9z
ckV4aXQuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgT1NSRXhpdCYgZXhpdCA9IG1faml0Q29kZS0+
b3NyRXhpdFtpXTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNw
cAkocmV2aXNpb24gMjIxMDE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwxOCArMjksMzMzIEBACiAjaWYgRU5BQkxF
KERGR19KSVQpCiAKICNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKKyNpbmNsdWRlICJDbG9u
ZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR01heUV4
aXQuaCIKLSNpbmNsdWRlICJERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCIKICNpbmNsdWRlICJE
RkdPU1JFeGl0UHJlcGFyYXRpb24uaCIKICNpbmNsdWRlICJERkdPcGVyYXRpb25zLmgiCiAjaW5j
bHVkZSAiREZHU3BlY3VsYXRpdmVKSVQuaCIKLSNpbmNsdWRlICJGcmFtZVRyYWNlcnMuaCIKKyNp
bmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk9wZXJhbmRz
SW5saW5lcy5oIgorI2luY2x1ZGUgIlByb2JlRnJhbWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogCit1c2luZyBDUFVTdGF0ZSA9IFByb2JlOjpDUFVTdGF0ZTsKK3VzaW5n
IENvbnRleHQgPSBQcm9iZTo6Q29udGV4dDsKKworc3RhdGljIHZvaWQgaW50ZXJwcmV0RXhpdChD
b250ZXh0JiwgVk0mLCBPU1JFeGl0JiwgY29uc3QgT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4mLCBT
cGVjdWxhdGlvblJlY292ZXJ5Kik7CitzdGF0aWMgdm9pZCBwcmludE9TUkV4aXQoQ1BVU3RhdGUm
LCB1aW50MzJfdCBvc3JFeGl0SW5kZXgsIGNvbnN0IE9TUkV4aXQmKTsKKworI2lmIDAgLy8gbWxh
bSBSRU1PVkUKKy8vIENvbnZlbmllbmNlIGhlbHBlciBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyBt
ZW1vcnkuCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgTWVtb3J5IHsKK3B1YmxpYzoKKyAg
ICBNZW1vcnkodm9pZCogYmFzZSwgc2l6ZV90IG9mZnNldCA9IDApCisgICAgICAgIDogbV9hZGRy
ZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGJhc2Up
ICsgb2Zmc2V0KSkKKyAgICB7IH0KKworICAgIHZvaWQgb3BlcmF0b3I9KFQgdmFsdWUpIHsgKm1f
YWRkcmVzcyA9IHZhbHVlOyB9CisgICAgb3BlcmF0b3IgVCgpIGNvbnN0IHsgcmV0dXJuICptX2Fk
ZHJlc3M7IH0KKworcHJvdGVjdGVkOgorICAgIFQqIG1fYWRkcmVzczsKK307CisKK2NsYXNzIE9T
UlJlc3VsdFN0YWNrIHsKK3B1YmxpYzoKKyAgICBPU1JSZXN1bHRTdGFjayh2b2lkKiBmcmFtZUJh
c2UsIHNpemVfdCBzaXplKQorICAgICAgICA6IG1fZnJhbWVCYXNlKGZyYW1lQmFzZSkKKyAgICAg
ICAgLCBtX3NpemUoc2l6ZSkKKyAgICB7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Cisg
ICAgY2xhc3MgU2xvdCA6IHB1YmxpYyBNZW1vcnk8VD4geworICAgIHB1YmxpYzoKKyAgICAgICAg
U2xvdCh2b2lkKiBmcmFtZUJhc2UsIGludCBvcGVyYW5kKQorICAgICAgICAgICAgOiBNZW1vcnk8
VD4oZnJhbWVCYXNlLCBzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG9wZXJhbmQpLm9mZnNl
dCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkKKyAgICAgICAgeyB9CisKKyAgICAgICAgdm9pZCBvcGVy
YXRvcj0oVCB2YWx1ZSkgeyAqTWVtb3J5PFQ+OjptX2FkZHJlc3MgPSB2YWx1ZTsgfQorICAgICAg
ICBvcGVyYXRvciBUKCkgY29uc3QgeyByZXR1cm4gKk1lbW9yeTxUPjo6bV9hZGRyZXNzOyB9CisK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICB2b2lkIHNldFBheWxvYWQoVCB2YWx1ZSkgeyAq
TWVtb3J5PFQ+OjptX2FkZHJlc3MgPSB2YWx1ZTsgfQorICAgICAgICBUIHBheWxvYWQoKSBjb25z
dCB7IHJldHVybiAqTWVtb3J5PFQ+OjptX2FkZHJlc3M7IH0KKyNlbHNlCisgICAgICAgIHZvaWQg
c2V0VGFnKGludDMyX3QgdmFsdWUpIHsgTWVtb3J5PGludDMyX3Q+KE1lbW9yeTxUPjo6bV9hZGRy
ZXNzLCBUYWdPZmZzZXQpID0gdmFsdWU7IH0KKyAgICAgICAgaW50MzJfdCB0YWcoKSBjb25zdCB7
IHJldHVybiBNZW1vcnk8aW50MzJfdD4oTWVtb3J5PFQ+OjptX2FkZHJlc3MsIFRhZ09mZnNldCk7
IH0KKyAgICAgICAgdm9pZCBzZXRQYXlsb2FkKFQgdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEFTU0VSVChzaXplb2YoVCkgPT0gc2l6ZW9mKGludDMyX3QpKTsKKyAgICAgICAgICAgIE1l
bW9yeTxUPihNZW1vcnk8VD46Om1fYWRkcmVzcywgUGF5bG9hZE9mZnNldCkgPSB2YWx1ZTsKKyAg
ICAgICAgfQorICAgICAgICBUIHBheWxvYWQoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAg
ICBBU1NFUlQoc2l6ZW9mKFQpID09IHNpemVvZihpbnQzMl90KSk7CisgICAgICAgICAgICByZXR1
cm4gTWVtb3J5PFQ+KE1lbW9yeTxUPjo6bV9hZGRyZXNzLCBQYXlsb2FkT2Zmc2V0KTsKKyAgICAg
ICAgfQorI2VuZGlmCisgICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFNsb3Q8VD4g
c2xvdChpbnQgb3BlcmFuZCkgeyByZXR1cm4gU2xvdDxUPihtX2ZyYW1lQmFzZSwgb3BlcmFuZCk7
IH0KKworcHJpdmF0ZToKKyAgICB2b2lkKiBtX2ZyYW1lQmFzZTsKKyAgICBzaXplX3QgbV9zaXpl
OworfTsKKworLy8gQmFzZWQgb24gQXNzZW1ibHlIZWxwZXI6OmJveEludDMyKCkuCitzdGF0aWMg
aW50NjRfdCBib3hJbnQzMihpbnQzMl90IHZhbHVlKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSkgfCBUYWdUeXBlTnVtYmVyOwor
I2Vsc2UKKyAgICBFbmNvZGVkVmFsdWVEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CisgICAgZGVzY3Jp
cHRvci5hc0JpdHMucGF5bG9hZCA9IHZhbHVlOworICAgIGRlc2NyaXB0b3IuYXNCaXRzLnRhZyA9
IEpTVmFsdWU6OkludDMyVGFnOworICAgIHJldHVybiBkZXNjcmlwdG9yLmFzSW50NjQ7CisjZW5k
aWYKK30KKworLy8gQmFzZWQgb24gQXNzZW1ibHlIZWxwZXJzOjpib3hEb3VibGUoKS4KK3N0YXRp
YyBpbnQ2NF90IGJveERvdWJsZShkb3VibGUgdmFsdWUpCit7CisgICAgaW50NjRfdCByZXN1bHQg
PSBiaXR3aXNlX2Nhc3Q8aW50NjRfdD4odmFsdWUpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
cmVzdWx0IC09IFRhZ1R5cGVOdW1iZXI7CisvLyAgICBqaXRBc3NlcnRJc0pTRG91YmxlKGdwcik7
CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjaWYgVVNFKEpTVkFMVUU2NCkKKy8v
IEJhc2VkIG9uIEFzc2VtYmx5SGVscGVyczo6Ym94SW50NTIoKS4KK3N0YXRpYyBpbnQ2NF90IGJv
eEludDUyKGludDY0X3QgdmFsdWUpCit7CisgICAgaW50NjRfdCB2YWx1ZUFzMzJCaXRJbnQgPSBz
dGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1ZSk7CisgICAgaWYgKHZhbHVlQXMzMkJpdEludCA9PSB2
YWx1ZSkKKyAgICAgICAgcmV0dXJuIGJveEludDMyKHZhbHVlKTsKKyAgICByZXR1cm4gYm94RG91
YmxlKHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpKTsKK30KKyNlbmRpZgorI2VuZGlmIC8vIG1s
YW0gUkVNT1ZFCisKKy8vIEJhc2VkIG9uIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SGFzVmFs
aWRDYWxsRnJhbWUoKS4KK2lubGluZSBzdGF0aWMgdm9pZCBhc3NlcnRIYXNWYWxpZENhbGxGcmFt
ZShDUFVTdGF0ZSYgY3B1KQoreworICAgIEFTU0VSVF9VTlVTRUQoY3B1LCAhKGNwdS5mcDx1aW50
cHRyX3Q+KCkgJiAweDcpKTsKK30KKworLy8gQmFzZWQgb24gQXNzZW1ibHlIZWxwZXJzOjpqaXRB
c3NlcnRUYWdzSW5QbGFjZSgpLgoraW5saW5lIHN0YXRpYyB2b2lkIGFzc2VydFRhZ3NJblBsYWNl
KENQVVN0YXRlJiBjcHUpCit7CisgICAgVU5VU0VEX1BBUkFNKGNwdSk7IC8vIEZvciAzMi1iaXQg
YW5kIHJlbGVhc2UgYnVpbGRzLgorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgQVNTRVJUKGNwdS5n
cHIoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSA9PSBUYWdUeXBlTnVtYmVyKTsKKyAg
ICBBU1NFUlQoY3B1LmdwcihHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpID09IFRhZ01hc2spOwor
I2VuZGlmCit9CisKKy8vIEJhc2VkIG9uIEFzc2VtYmx5SGVscGVyczo6ZW1pdE1hdGVyaWFsaXpl
VGFnQ2hlY2tSZWdpc3RlcnMoKS4KK3N0YXRpYyB2b2lkIG1hdGVyaWFsaXplVGFnQ2hlY2tSZWdp
c3RlcnMoQ1BVU3RhdGUmIGNwdSkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNwdS5ncHIo
R1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSA9IFRhZ1R5cGVOdW1iZXI7CisgICAgY3B1
LmdwcihHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpID0gVGFnVHlwZU51bWJlciB8IFRhZ0JpdFR5
cGVPdGhlcjsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNwdSk7CisjZW5kaWYKK30KKworI2lm
IE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTID4gMAorCisvLyBCYXNlZCBvbiBBc3Nl
bWJseUhlbHBlcnM6OmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNGb3IoKS4KK3N0YXRpYyB2b2lkIHJl
c3RvcmVDYWxsZWVTYXZlc0ZvcihDb250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIGNvZGVCbG9j
aykKK3sKKyAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKKyAgICBhdXRvJiBzdGFjayA9IGNv
bnRleHQuc3RhY2soKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrKTsKKworICAgIFJlZ2lzdGVyQXRP
ZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygp
OworICAgIFJlZ2lzdGVyU2V0IGRvbnRSZXN0b3JlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVn
aXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjphbGxGUFJzKCkpOworICAg
IHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6ZSgpOworCisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAgICBSZWdp
c3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAoZG9u
dFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBjcHUuZ3ByKGVudHJ5LnJlZygpLmdwcigpKSA9IHN0YWNrLmdldDx1aW50cHRy
X3Q+KGNwdS5mcCgpLCBlbnRyeS5vZmZzZXQoKSk7CisgICB9Cit9CisKKy8vIEJhc2VkIG9uIEFz
c2VtYmx5SGVscGVyczo6ZW1pdFNhdmVDYWxsZWVTYXZlc0ZvcigpLgorc3RhdGljIHZvaWQgc2F2
ZUNhbGxlZVNhdmVzRm9yKENvbnRleHQmIGNvbnRleHQsIENvZGVCbG9jayogY29kZUJsb2NrKQor
eworICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OworICAgIGF1dG8mIHN0YWNrID0gY29udGV4
dC5zdGFjaygpOworICAgIEFTU0VSVChjb2RlQmxvY2spOworCisgICAgUmVnaXN0ZXJBdE9mZnNl
dExpc3QqIGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7Cisg
ICAgUmVnaXN0ZXJTZXQgZG9udFNhdmVSZWdpc3RlcnMgPSBSZWdpc3RlclNldChSZWdpc3RlclNl
dDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OmFsbEZQUnMoKSk7CisgICAgdW5zaWdu
ZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5zaXplKCk7CisKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRP
ZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgIGlmIChkb250U2F2ZVJl
Z2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IHN0YWNrLnNldChjcHUuZnAoKSwgZW50cnkub2Zmc2V0KCksIGNwdS5ncHI8dWludHB0cl90Pihl
bnRyeS5yZWcoKS5ncHIoKSkpOworICAgIH0KK30KKworLy8gQmFzZWQgb24gQXNzZW1ibHlIZWxw
ZXJzOjpyZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIo
KS4KK3N0YXRpYyB2b2lkIHJlc3RvcmVDYWxsZWVTYXZlc0Zyb21WTUVudHJ5RnJhbWVDYWxsZWVT
YXZlc0J1ZmZlcihDb250ZXh0JiBjb250ZXh0LCBWTSYgdm0pCit7CisgICAgYXV0byYgY3B1ID0g
Y29udGV4dC5jcHU7CisgICAgYXV0byYgc3RhY2sgPSBjb250ZXh0LnN0YWNrKCk7CisKKyAgICBS
ZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2FsbGVlU2F2ZXMgPSBWTTo6Z2V0QWxsQ2FsbGVlU2F2
ZVJlZ2lzdGVyT2Zmc2V0cygpOworICAgIFJlZ2lzdGVyU2V0IGRvbnRSZXN0b3JlUmVnaXN0ZXJz
ID0gUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCk7CisgICAgdW5zaWduZWQgcmVnaXN0ZXJD
b3VudCA9IGFsbENhbGxlZVNhdmVzLT5zaXplKCk7CisKKyAgICBWTUVudHJ5UmVjb3JkKiBlbnRy
eVJlY29yZCA9IHZtRW50cnlSZWNvcmQodm0udG9wVk1FbnRyeUZyYW1lKTsKKyAgICB2b2lkKiBj
YWxsZWVTYXZlQnVmZmVyID0gZW50cnlSZWNvcmQtPmNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXI7
CisKKyAgICAvLyBSZXN0b3JlIGFsbCBjYWxsZWUgc2F2ZXMuCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0
IGVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAoZG9udFJlc3RvcmVS
ZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBpZiAoZW50cnkucmVnKCkuaXNHUFIoKSkKKyAgICAgICAgICAgIGNwdS5ncHIoZW50cnkucmVn
KCkuZ3ByKCkpID0gc3RhY2suZ2V0PHVpbnRwdHJfdD4oY2FsbGVlU2F2ZUJ1ZmZlciwgZW50cnku
b2Zmc2V0KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjcHUuZnByKGVudHJ5LnJlZygp
LmZwcigpKSA9IHN0YWNrLmdldDxkb3VibGU+KGNhbGxlZVNhdmVCdWZmZXIsIGVudHJ5Lm9mZnNl
dCgpKTsKKyAgICB9Cit9CisKKy8vIEJhc2VkIG9uIEFzc2VtYmx5SGVscGVyczo6Y29weUNhbGxl
ZVNhdmVzVG9WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcigpLgorc3RhdGljIHZvaWQgY29w
eUNhbGxlZVNhdmVzVG9WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihDb250ZXh0JiBjb250
ZXh0LCBWTSYgdm0pCit7CisgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CisgICAgYXV0byYg
c3RhY2sgPSBjb250ZXh0LnN0YWNrKCk7CisKKyAgICBWTUVudHJ5UmVjb3JkKiBlbnRyeVJlY29y
ZCA9IHZtRW50cnlSZWNvcmQodm0udG9wVk1FbnRyeUZyYW1lKTsKKyAgICB2b2lkKiBjYWxsZWVT
YXZlc0J1ZmZlciA9IGVudHJ5UmVjb3JkLT5jYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyOworCisg
ICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGFsbENhbGxlZVNhdmVzID0gVk06OmdldEFsbENhbGxl
ZVNhdmVSZWdpc3Rlck9mZnNldHMoKTsKKyAgICBSZWdpc3RlclNldCBkb250Q29weVJlZ2lzdGVy
cyA9IFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpOworICAgIHVuc2lnbmVkIHJlZ2lzdGVy
Q291bnQgPSBhbGxDYWxsZWVTYXZlcy0+c2l6ZSgpOworCisgICAgQVNTRVJUKGlzNjRCaXQoKSk7
IC8vIHdlIG5lZWQKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsg
aSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBhbGxDYWxsZWVTYXZlcy0+
YXQoaSk7CisgICAgICAgIGlmIChkb250Q29weVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChlbnRyeS5yZWcoKS5pc0dQUigpKQor
ICAgICAgICAgICAgc3RhY2suc2V0KGNhbGxlZVNhdmVzQnVmZmVyLCBlbnRyeS5vZmZzZXQoKSwg
Y3B1Lmdwcjx1aW50cHRyX3Q+KGVudHJ5LnJlZygpLmdwcigpKSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHN0YWNrLnNldChjYWxsZWVTYXZlc0J1ZmZlciwgZW50cnkub2Zmc2V0KCksIGNw
dS5mcHI8dWludHB0cl90PihlbnRyeS5yZWcoKS5mcHIoKSkpOworICAgIH0KK30KKworLy8gQmFz
ZWQgb24gQXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZU9yQ29weUNhbGxlZVNhdmVzRm9yKCkuCisv
L3N0YXRpYyB2b2lkIHNhdmVPckNvcHlDYWxsZWVTYXZlc0ZvcihDb250ZXh0JiBjb250ZXh0LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgVmlydHVhbFJlZ2lzdGVyIG9mZnNldFZpcnR1YWxSZWdpc3Rl
ciwgUmVzdG9yZVRhZ1JlZ2lzdGVyTW9kZSB0YWdSZWdpc3Rlck1vZGUpCitzdGF0aWMgdm9pZCBz
YXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoQ29udGV4dCYgY29udGV4dCwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIFZpcnR1YWxSZWdpc3RlciBvZmZzZXRWaXJ0dWFsUmVnaXN0ZXIsIGJvb2wgd2FzQ2Fs
bGVkVmlhVGFpbENhbGwpCit7CisgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CisgICAgYXV0
byYgc3RhY2sgPSBjb250ZXh0LnN0YWNrKCk7CisgICAgQVNTRVJUKGNvZGVCbG9jayk7CisKKyAg
ICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2stPmNhbGxlZVNh
dmVSZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVycyA9IFJlZ2lz
dGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxsRlBS
cygpKTsKKyAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsK
KworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgUmVnaXN0ZXJTZXQgYmFzZWxpbmVDYWxsZWVTYXZl
cyA9IFJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOworI2Vu
ZGlmCisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7
CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+YXQoaSk7Cisg
ICAgICAgIGlmIChkb250U2F2ZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQorICAgICAgICAg
ICAgY29udGludWU7CisKKy8vICAgICAgICBHUFJSZWcgcmVnaXN0ZXJUb1dyaXRlOworICAgICAg
ICB1aW50cHRyX3Qgc2F2ZWRSZWdpc3RlclZhbHVlOworCisjaWYgVVNFKEpTVkFMVUUzMl82NCkK
KyAgICAgICAgVU5VU0VEX1BBUkFNKHdhc0NhbGxlZFZpYVRhaWxDYWxsKTsKKyNlbHNlCisvLyAg
ICAgICAgaWYgKHRhZ1JlZ2lzdGVyTW9kZSA9PSBDb3B5QmFzZWxpbmVDYWxsZWVTYXZlZFJlZ2lz
dGVyc0Zyb21CYXNlRnJhbWUgJiYgYmFzZWxpbmVDYWxsZWVTYXZlcy5nZXQoZW50cnkucmVnKCkp
KSB7CisgICAgICAgIGlmICh3YXNDYWxsZWRWaWFUYWlsQ2FsbCAmJiBiYXNlbGluZUNhbGxlZVNh
dmVzLmdldChlbnRyeS5yZWcoKSkpIHsKKy8vICAgICAgICAgICAgcmVnaXN0ZXJUb1dyaXRlID0g
dGVtcDsKKy8vICAgICAgICAgICAgbG9hZFB0cihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5Lm9mZnNldCgpKSwgcmVnaXN0ZXJUb1dyaXRl
KTsKKyAgICAgICAgICAgIHNhdmVkUmVnaXN0ZXJWYWx1ZSA9IHN0YWNrLmdldDx1aW50cHRyX3Q+
KGNwdS5mcCgpLCBlbnRyeS5vZmZzZXQoKSk7CisgICAgICAgIH0gZWxzZQorI2VuZGlmCisvLyAg
ICAgICAgICAgIHJlZ2lzdGVyVG9Xcml0ZSA9IGVudHJ5LnJlZygpLmdwcigpOworICAgICAgICAg
ICAgc2F2ZWRSZWdpc3RlclZhbHVlID0gY3B1LmdwcihlbnRyeS5yZWcoKS5ncHIoKSk7CisKKy8v
ICAgICAgICBzdG9yZVB0cihyZWdpc3RlclRvV3JpdGUsIEFkZHJlc3MoZnJhbWVQb2ludGVyUmVn
aXN0ZXIsIG9mZnNldFZpcnR1YWxSZWdpc3Rlci5vZmZzZXRJbkJ5dGVzKCkgKyBlbnRyeS5vZmZz
ZXQoKSkpOworICAgICAgICBzdGFjay5zZXQoY3B1LmZwKCksIG9mZnNldFZpcnR1YWxSZWdpc3Rl
ci5vZmZzZXRJbkJ5dGVzKCkgKyBlbnRyeS5vZmZzZXQoKSwgc2F2ZWRSZWdpc3RlclZhbHVlKTsK
KyAgICB9Cit9CisjZW5kaWYgLy8gTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgPiAw
CisKK3N0YXRpYyBKU0NlbGwqIGNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4aXQoRXhlY1N0
YXRlKiBleGVjLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgSlNGdW5jdGlvbiog
Y2FsbGVlLCBpbnQzMl90IGFyZ3VtZW50Q291bnQpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBBU1NFUlQodm0uaGVhcC5pc0RlZmVycmVkKCkpOworCisgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2s7CisgICAgaWYgKGlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgY29kZUJsb2NrID0g
YmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1lKTsKKyAg
ICBlbHNlCisgICAgICAgIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworCisgICAgdW5z
aWduZWQgbGVuZ3RoID0gYXJndW1lbnRDb3VudCAtIDE7CisgICAgdW5zaWduZWQgY2FwYWNpdHkg
PSBzdGQ6Om1heChsZW5ndGgsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSAtIDEpKTsKKyAgICBEaXJlY3RBcmd1bWVudHMqIHJlc3VsdCA9IERpcmVjdEFy
Z3VtZW50czo6Y3JlYXRlKAorICAgICAgICB2bSwgY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+
ZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlKCksIGxlbmd0aCwgY2FwYWNpdHkpOworCisgICAgcmVz
dWx0LT5jYWxsZWUoKS5zZXQodm0sIHJlc3VsdCwgY2FsbGVlKTsKKworICAgIFJlZ2lzdGVyKiBh
cmd1bWVudHMgPQorICAgICAgICBleGVjLT5yZWdpc3RlcnMoKSArIChpbmxpbmVDYWxsRnJhbWUg
PyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0IDogMCkgKworICAgICAgICBDYWxsRnJhbWU6
OmFyZ3VtZW50T2Zmc2V0KDApOworICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykK
KyAgICAgICAgcmVzdWx0LT5zZXRJbmRleFF1aWNrbHkodm0sIGksIGFyZ3VtZW50c1tpXS5qc1Zh
bHVlKCkpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIEpTQ2VsbCogY3JlYXRl
Q2xvbmVkQXJndW1lbnRzRHVyaW5nRXhpdChFeGVjU3RhdGUqIGV4ZWMsIElubGluZUNhbGxGcmFt
ZSogaW5saW5lQ2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBjYWxsZWUsIGludDMyX3QgYXJndW1lbnRD
b3VudCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEFTU0VSVCh2bS5oZWFwLmlz
RGVmZXJyZWQoKSk7CisKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jazsKKyAgICBpZiAoaW5saW5l
Q2FsbEZyYW1lKQorICAgICAgICBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcklubGlu
ZUNhbGxGcmFtZShpbmxpbmVDYWxsRnJhbWUpOworICAgIGVsc2UKKyAgICAgICAgY29kZUJsb2Nr
ID0gZXhlYy0+Y29kZUJsb2NrKCk7CisKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBhcmd1bWVudENv
dW50IC0gMTsKKyAgICBDbG9uZWRBcmd1bWVudHMqIHJlc3VsdCA9IENsb25lZEFyZ3VtZW50czo6
Y3JlYXRlRW1wdHkoCisgICAgICAgIHZtLCBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5jbG9u
ZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSwgY2FsbGVlLCBsZW5ndGgpOworCisgICAgUmVnaXN0ZXIq
IGFyZ3VtZW50cyA9CisgICAgICAgIGV4ZWMtPnJlZ2lzdGVycygpICsgKGlubGluZUNhbGxGcmFt
ZSA/IGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgOiAwKSArCisgICAgICAgIENhbGxGcmFt
ZTo6YXJndW1lbnRPZmZzZXQoMCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07
KQorICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIGFyZ3VtZW50c1tpXS5q
c1ZhbHVlKCkpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogT1NSRXhpdDo6T1NSRXhpdChF
eGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGUgdmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCogaml0LCB1bnNpZ25l
ZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCkKICAgICA6IE9TUkV4aXRCYXNl
KGtpbmQsIGppdC0+bV9vcmlnaW4uZm9yRXhpdCwgaml0LT5tX29yaWdpbi5zZW1hbnRpYywgaml0
LT5tX29yaWdpbi53YXNIb2lzdGVkKQogICAgICwgbV9qc1ZhbHVlU291cmNlKGpzVmFsdWVTb3Vy
Y2UpCkBAIC03OCw4ICszOTMsMTIgQEAgdm9pZCBPU1JFeGl0Ojpjb3JyZWN0SnVtcChMaW5rQnVm
ZmVyJiBsaQogICAgIG1fcGF0Y2hhYmxlQ29kZU9mZnNldCA9IGxpbmtCdWZmZXIub2Zmc2V0T2Yo
bGFiZWwpOwogfQogCi12b2lkIE9TUkV4aXQ6OmVtaXRSZXN0b3JlQXJndW1lbnRzKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMpCitzdGF0
aWMgdm9pZCBlbWl0UmVzdG9yZUFyZ3VtZW50cyhDb250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgY29uc3QgT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4mIG9wZXJhbmRzKQogewor
ICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OworICAgIFByb2JlOjpGcmFtZSBmcmFtZShjb250
ZXh0KTsKKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGNwdS5mcDxFeGVjU3RhdGUqPigpOwogICAg
IEhhc2hNYXA8TWluaWZpZWRJRCwgaW50PiBhbHJlYWR5QWxsb2NhdGVkQXJndW1lbnRzOyAvLyBN
YXBzIHBoYW50b20gYXJndW1lbnRzIG5vZGUgSUQgdG8gb3BlcmFuZC4KICAgICBmb3IgKHNpemVf
dCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAg
IGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhdOwpAQCAtOTIs
MTQgKzQxMSwxMiBAQCB2b2lkIE9TUkV4aXQ6OmVtaXRSZXN0b3JlQXJndW1lbnRzKENDYWxsCiAg
ICAgICAgIE1pbmlmaWVkSUQgaWQgPSByZWNvdmVyeS5ub2RlSUQoKTsKICAgICAgICAgYXV0byBp
dGVyID0gYWxyZWFkeUFsbG9jYXRlZEFyZ3VtZW50cy5maW5kKGlkKTsKICAgICAgICAgaWYgKGl0
ZXIgIT0gYWxyZWFkeUFsbG9jYXRlZEFyZ3VtZW50cy5lbmQoKSkgewotICAgICAgICAgICAgSlNW
YWx1ZVJlZ3MgcmVncyA9IEpTVmFsdWVSZWdzOjp3aXRoVHdvQXZhaWxhYmxlUmVncyhHUFJJbmZv
OjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEpOwotICAgICAgICAgICAgaml0LmxvYWRWYWx1ZShDQ2Fs
bEhlbHBlcnM6OmFkZHJlc3NGb3IoaXRlci0+dmFsdWUpLCByZWdzKTsKLSAgICAgICAgICAgIGpp
dC5zdG9yZVZhbHVlKHJlZ3MsIENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Cisg
ICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIGZyYW1lLmdldE9wZXJhbmQ8SlNW
YWx1ZT4oaXRlci0+dmFsdWUpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAK
ICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPQotICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLT5qaXRDb2RlKCktPmRmZygpLT5taW5pZmllZERGRy5hdChpZCktPmlu
bGluZUNhbGxGcmFtZSgpOworICAgICAgICAgICAgY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygp
LT5taW5pZmllZERGRy5hdChpZCktPmlubGluZUNhbGxGcmFtZSgpOwogCiAgICAgICAgIGludCBz
dGFja09mZnNldDsKICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSkKQEAgLTEwNyw1MyArNDI0
LDc3IEBAIHZvaWQgT1NSRXhpdDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMoQ0NhbGwKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgc3RhY2tPZmZzZXQgPSAwOwogCi0gICAgICAgIGlmICghaW5saW5l
Q2FsbEZyYW1lIHx8IGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkgewotICAgICAgICAg
ICAgaml0LmxvYWRQdHIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNz
Rm9yKHN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwKLSAgICAgICAgICAgICAg
ICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBqaXQubW92
ZSgKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaW5saW5l
Q2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeS5jb25zdGFudCgpLmFzQ2VsbCgpKSwKLSAgICAgICAg
ICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIH0KKyAgICAgICAgSlNGdW5jdGlvbiog
Y2FsbGVlOworICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSB8fCBpbmxpbmVDYWxsRnJhbWUt
PmlzQ2xvc3VyZUNhbGwpCisgICAgICAgICAgICBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+
KGZyYW1lLmdldE9wZXJhbmQ8SlNWYWx1ZT4oc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojpj
YWxsZWUpLmFzQ2VsbCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2FsbGVlID0ganND
YXN0PEpTRnVuY3Rpb24qPihpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZVJlY292ZXJ5LmNvbnN0YW50
KCkuYXNDZWxsKCkpOwogCi0gICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lIHx8IGlubGluZUNh
bGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKLSAgICAgICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAg
ICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKHN0YWNrT2Zmc2V0ICsgQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudCksCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaml0Lm1vdmUoCi0gICAgICAgICAgICAg
ICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dHMuc2l6ZSgpKSwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgICAgIH0K
KyAgICAgICAgaW50MzJfdCBhcmd1bWVudENvdW50OworICAgICAgICBpZiAoIWlubGluZUNhbGxG
cmFtZSB8fCBpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKQorICAgICAgICAgICAgYXJndW1l
bnRDb3VudCA9IGZyYW1lLmdldE9wZXJhbmQ8aW50MzJfdD4oc3RhY2tPZmZzZXQgKyBDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50LCBQYXlsb2FkT2Zmc2V0KTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgYXJndW1lbnRDb3VudCA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUo
KTsKIAotICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKAotICAgICAgICAg
ICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFtZSksIEdQUklu
Zm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgIEpTQ2VsbCogYXJndW1lbnRzT2Jq
ZWN0OwogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7CiAgICAgICAgIGNh
c2UgRGlyZWN0QXJndW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkOgotICAgICAgICAgICAgaml0Lm1v
dmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4ob3Bl
cmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdCkpLCBHUFJJbmZvOjpub25BcmdH
UFIwKTsKKyAgICAgICAgICAgIGFyZ3VtZW50c09iamVjdCA9IGNyZWF0ZURpcmVjdEFyZ3VtZW50
c0R1cmluZ0V4aXQoZXhlYywgaW5saW5lQ2FsbEZyYW1lLCBjYWxsZWUsIGFyZ3VtZW50Q291bnQp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2xvbmVkQXJndW1lbnRzVGhhdFdl
cmVOb3RDcmVhdGVkOgotICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4ob3BlcmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1l
bnRzRHVyaW5nRXhpdCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgICAgIGFyZ3Vt
ZW50c09iamVjdCA9IGNyZWF0ZUNsb25lZEFyZ3VtZW50c0R1cmluZ0V4aXQoZXhlYywgaW5saW5l
Q2FsbEZyYW1lLCBjYWxsZWUsIGFyZ3VtZW50Q291bnQpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgaml0LmNhbGwoR1BSSW5m
bzo6bm9uQXJnR1BSMCk7Ci0gICAgICAgIGppdC5zdG9yZUNlbGwoR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CisgICAgICAgIGZy
YW1lLnNldE9wZXJhbmQob3BlcmFuZCwgYXJndW1lbnRzT2JqZWN0KTsKIAogICAgICAgICBhbHJl
YWR5QWxsb2NhdGVkQXJndW1lbnRzLmFkZChpZCwgb3BlcmFuZCk7CiAgICAgfQogfQogCi12b2lk
IEpJVF9PUEVSQVRJT04gT1NSRXhpdDo6Y29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKiBleGVjKQor
I2lmIDAgLy8gbWxhbSBSRU1PVkUKK3ZvaWQgT1NSRXhpdDo6YWRqdXN0RnJhbWVBbmRFbnN1cmVT
dGFja0Zvck9TUkV4aXQoUHJvYmVDb250ZXh0KiBjb250ZXh0KQogewotICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7Cisg
ICAgQ1BVU3RhdGUmIGNwdSA9IGNvbnRleHQtPmNwdTsKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBj
cHUuZnA8RXhlY1N0YXRlKj4oKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICh2bS5jYWxsRnJhbWVG
b3JDYXRjaCkgeworICAgICAgICBleGVjID0gdm0uY2FsbEZyYW1lRm9yQ2F0Y2g7CisgICAgICAg
IGNwdS5mcCgpID0gZXhlYzsKKyAgICB9CisKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4
ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVChjb2RlQmxvY2spOworICAgIEFTU0VSVChjb2Rl
QmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOworCisgICAgdWludDMyX3QgZXhp
dEluZGV4ID0gdm0ub3NyRXhpdEluZGV4OworICAgIE9TUkV4aXQmIGV4aXQgPSBjb2RlQmxvY2st
PmppdENvZGUoKS0+ZGZnKCktPm9zckV4aXRbZXhpdEluZGV4XTsKKworICAgIEFTU0VSVF9VTlVT
RUQoZXhpdCwgIXZtLmNhbGxGcmFtZUZvckNhdGNoIHx8IGV4aXQubV9raW5kID09IEdlbmVyaWNV
bndpbmQpOworICAgIEFTU0VSVF9VTlVTRUQoc2NvcGUsICFleGl0LmlzRXhjZXB0aW9uSGFuZGxl
cigpIHx8ICEhc2NvcGUuZXhjZXB0aW9uKCkpOwogCi0gICAgaWYgKHZtLT5jYWxsRnJhbWVGb3JD
YXRjaCkKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0tPmNhbGxGcmFtZUZvckNhdGNoID09IGV4
ZWMpOworICAgIC8vIEVuc3VyZSB0aGF0IHRoZXJlJ3MgZW5vdWdoIHJvb20gdG8gZG8gdGhlIE9T
UiBleGl0IGluIHBsYWNlIG9uIHRoZSBzdGFjay4KKyAgICBzaXplX3QgZGZnRnJhbWVTaXplID0g
LWNvZGVCbG9jay0+c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpOworICAg
IHNpemVfdCB3b3JzdENhc2VFeGl0RnJhbWVTaXplID0gKGNvZGVCbG9jay0+aml0Q29kZSgpLT5k
ZmdDb21tb24oKS0+cmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhpdCAqIHNpemVvZihSZWdpc3Rl
cikpOworICAgIGNwdS5zcCgpID0gY3B1LmZwPHVpbnQ4X3QqPigpIC0gc3RkOjptaW4oZGZnRnJh
bWVTaXplLCB3b3JzdENhc2VFeGl0RnJhbWVTaXplKTsKK30KKyNlbmRpZiAvLyBtbGFtIFJFTU9W
RQorCit2b2lkIE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KENvbnRleHQmIGNvbnRleHQpCit7Cisg
ICAgQ1BVU3RhdGUmIGNwdSA9IGNvbnRleHQuY3B1OworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGNw
dS5mcDxFeGVjU3RhdGUqPigpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKHZtLmNhbGxGcmFtZUZv
ckNhdGNoKSB7CisgICAgICAgIGV4ZWMgPSB2bS5jYWxsRnJhbWVGb3JDYXRjaDsKKyAgICAgICAg
Y3B1LmZwKCkgPSBleGVjOworICAgIH0KIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Yy0+Y29kZUJsb2NrKCk7CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7CkBAIC0xNjEsMTYgKzUwMiwx
NSBAQCB2b2lkIEpJVF9PUEVSQVRJT04gT1NSRXhpdDo6Y29tcGlsZU9TUkV4CiAKICAgICAvLyBJ
dCdzIHNvcnQgb2YgcHJlZmVyYWJsZSB0aGF0IHdlIGRvbid0IEdDIHdoaWxlIGluIGhlcmUuIEFu
eXdheXMsIGRvaW5nIHNvIHdvdWxkbid0CiAgICAgLy8gcmVhbGx5IGJlIHByb2ZpdGFibGUuCi0g
ICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLT5oZWFwKTsKKyAgICBEZWZlckdDRm9yQVdo
aWxlIGRlZmVyR0Modm0uaGVhcCk7CiAKLSAgICB1aW50MzJfdCBleGl0SW5kZXggPSB2bS0+b3Ny
RXhpdEluZGV4OworICAgIHVpbnQzMl90IGV4aXRJbmRleCA9IHZtLm9zckV4aXRJbmRleDsKICAg
ICBPU1JFeGl0JiBleGl0ID0gY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpLT5vc3JFeGl0W2V4
aXRJbmRleF07CiAKLSAgICBpZiAodm0tPmNhbGxGcmFtZUZvckNhdGNoKQotICAgICAgICBBU1NF
UlQoZXhpdC5tX2tpbmQgPT0gR2VuZXJpY1Vud2luZCk7Ci0gICAgaWYgKGV4aXQuaXNFeGNlcHRp
b25IYW5kbGVyKCkpCi0gICAgICAgIEFTU0VSVF9VTlVTRUQoc2NvcGUsICEhc2NvcGUuZXhjZXB0
aW9uKCkpOwotICAgIAorICAgIEFTU0VSVCghdm0tPmNhbGxGcmFtZUZvckNhdGNoIHx8IGV4aXQu
bV9raW5kID09IEdlbmVyaWNVbndpbmQpOworICAgIEFTU0VSVF9VTlVTRUQoc2NvcGUsICFleGl0
LmlzRXhjZXB0aW9uSGFuZGxlcigpIHx8ICEhc2NvcGUuZXhjZXB0aW9uKCkpOworCisgICAgLy8g
RW5zdXJlIHdlIGhhdmUgYmFzZWxpbmUgY29kZUJsb2NrcyB0byBPU1IgZXhpdCB0by4KICAgICBw
cmVwYXJlQ29kZU9yaWdpbkZvck9TUkV4aXQoZXhlYywgZXhpdC5tX2NvZGVPcmlnaW4pOwogCiAg
ICAgLy8gQ29tcHV0ZSB0aGUgdmFsdWUgcmVjb3Zlcmllcy4KQEAgLTE4MSw4NCArNTIxLDg3IEBA
IHZvaWQgSklUX09QRVJBVElPTiBPU1JFeGl0Ojpjb21waWxlT1NSRXgKICAgICBpZiAoZXhpdC5t
X3JlY292ZXJ5SW5kZXggIT0gVUlOVF9NQVgpCiAgICAgICAgIHJlY292ZXJ5ID0gJmNvZGVCbG9j
ay0+aml0Q29kZSgpLT5kZmcoKS0+c3BlY3VsYXRpb25SZWNvdmVyeVtleGl0Lm1fcmVjb3ZlcnlJ
bmRleF07CiAKKyAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHJlbW92ZSB0aGlzIGluZGVudGF0aW9u
LCBidXQgSSdtIGxlYXZpbmcgaXQgaGVyZSB0byBtYWtlIHRoZSBwYXRjaCBlYXNpZXIKKyAgICAv
LyB0byByZXZpZXcuIFdpbGwgdW5pbmRlbnQgdGhpcyBiZWZvcmUgbGFuZGluZy4KICAgICB7Ci0g
ICAgICAgIENDYWxsSGVscGVycyBqaXQoY29kZUJsb2NrKTsKLQogICAgICAgICBpZiAoZXhpdC5t
X2tpbmQgPT0gR2VuZXJpY1Vud2luZCkgewogICAgICAgICAgICAgLy8gV2UgYXJlIGFjdGluZyBh
cyBhIGRlZmFjdG8gb3BfY2F0Y2ggYmVjYXVzZSB3ZSBhcnJpdmUgaGVyZSBmcm9tIGdlbmVyaWNV
bndpbmQoKS4KICAgICAgICAgICAgIC8vIFNvLCB3ZSBtdXN0IHJlc3RvcmUgb3VyIGNhbGwgZnJh
bWUgYW5kIHN0YWNrIHBvaW50ZXIuCi0gICAgICAgICAgICBqaXQucmVzdG9yZUNhbGxlZVNhdmVz
RnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKCp2bSk7Ci0gICAgICAgICAgICBqaXQu
bG9hZFB0cih2bS0+YWRkcmVzc09mQ2FsbEZyYW1lRm9yQ2F0Y2goKSwgR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIpOworI2lmIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTID4gMAor
ICAgICAgICAgICAgcmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVz
QnVmZmVyKGNvbnRleHQsIHZtKTsKKyNlbmRpZgorICAgICAgICAgICAgQVNTRVJUKGV4ZWMgPT0g
dm0uY2FsbEZyYW1lRm9yQ2F0Y2gpOwogICAgICAgICB9Ci0gICAgICAgIGppdC5hZGRQdHIoCi0g
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjb2RlQmxvY2stPnN0YWNrUG9p
bnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksCi0gICAgICAgICAgICBHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Cisg
ICAgICAgIGNwdS5zcCgpID0gY3B1LmZwPHVpbnQ4X3QqPigpICsgKGNvZGVCbG9jay0+c3RhY2tQ
b2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKTsKIAotICAgICAgICBqaXQuaml0QXNz
ZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKTsKKyAgICAgICAgYXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUo
Y3B1KTsKIAotICAgICAgICBpZiAoVU5MSUtFTFkodm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlciAm
JiBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPmNvbXBpbGF0aW9uKSkgewotICAg
ICAgICAgICAgUHJvZmlsZXI6OkRhdGFiYXNlJiBkYXRhYmFzZSA9ICp2bS0+bV9wZXJCeXRlY29k
ZVByb2ZpbGVyOworICAgICAgICBpZiAoVU5MSUtFTFkodm0ubV9wZXJCeXRlY29kZVByb2ZpbGVy
ICYmIGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmdDb21tb24oKS0+Y29tcGlsYXRpb24pKSB7Cisg
ICAgICAgICAgICBQcm9maWxlcjo6RGF0YWJhc2UmIGRhdGFiYXNlID0gKnZtLm1fcGVyQnl0ZWNv
ZGVQcm9maWxlcjsKICAgICAgICAgICAgIFByb2ZpbGVyOjpDb21waWxhdGlvbiogY29tcGlsYXRp
b24gPSBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPmNvbXBpbGF0aW9uLmdldCgp
OwogCiAgICAgICAgICAgICBQcm9maWxlcjo6T1NSRXhpdCogcHJvZmlsZXJFeGl0ID0gY29tcGls
YXRpb24tPmFkZE9TUkV4aXQoCiAgICAgICAgICAgICAgICAgZXhpdEluZGV4LCBQcm9maWxlcjo6
T3JpZ2luU3RhY2soZGF0YWJhc2UsIGNvZGVCbG9jaywgZXhpdC5tX2NvZGVPcmlnaW4pLAogICAg
ICAgICAgICAgICAgIGV4aXQubV9raW5kLCBleGl0Lm1fa2luZCA9PSBVbmNvdW50YWJsZUludmFs
aWRhdGlvbik7Ci0gICAgICAgICAgICBqaXQuYWRkNjQoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoMSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKHByb2ZpbGVyRXhpdC0+Y291bnRl
ckFkZHJlc3MoKSkpOworICAgICAgICAgICAgcHJvZmlsZXJFeGl0LT5pbmNDb3VudCgpOwogICAg
ICAgICB9CiAKLSAgICAgICAgY29tcGlsZUV4aXQoaml0LCAqdm0sIGV4aXQsIG9wZXJhbmRzLCBy
ZWNvdmVyeSk7Ci0KLSAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIGNvZGVCbG9j
ayk7Ci0gICAgICAgIGV4aXQubV9jb2RlID0gRklOQUxJWkVfQ09ERV9JRigKLSAgICAgICAgICAg
IHNob3VsZER1bXBEaXNhc3NlbWJseSgpIHx8IE9wdGlvbnM6OnZlcmJvc2VPU1IoKSB8fCBPcHRp
b25zOjp2ZXJib3NlREZHT1NSRXhpdCgpLAotICAgICAgICAgICAgcGF0Y2hCdWZmZXIsCi0gICAg
ICAgICAgICAoIkRGRyBPU1IgZXhpdCAjJXUgKCVzLCAlcykgZnJvbSAlcywgd2l0aCBvcGVyYW5k
cyA9ICVzIiwKKyAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSB8fCBP
cHRpb25zOjp2ZXJib3NlREZHT1NSRXhpdCgpKSkKKyAgICAgICAgICAgIGRhdGFMb2coIkRGRyBP
U1IgZXhpdCAjJXUgKCVzLCAlcykgZnJvbSAlcywgd2l0aCBvcGVyYW5kcyA9ICVzIiwKICAgICAg
ICAgICAgICAgICBleGl0SW5kZXgsIHRvQ1N0cmluZyhleGl0Lm1fY29kZU9yaWdpbikuZGF0YSgp
LAogICAgICAgICAgICAgICAgIGV4aXRLaW5kVG9TdHJpbmcoZXhpdC5tX2tpbmQpLCB0b0NTdHJp
bmcoKmNvZGVCbG9jaykuZGF0YSgpLAotICAgICAgICAgICAgICAgIHRvQ1N0cmluZyhpZ25vcmlu
Z0NvbnRleHQ8RHVtcENvbnRleHQ+KG9wZXJhbmRzKSkuZGF0YSgpKSk7CisgICAgICAgICAgICAg
ICAgdG9DU3RyaW5nKGlnbm9yaW5nQ29udGV4dDxEdW1wQ29udGV4dD4ob3BlcmFuZHMpKS5kYXRh
KCkpOwogICAgIH0KIAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChleGl0LmNvZGVM
b2NhdGlvbkZvclJlcGF0Y2goY29kZUJsb2NrKSwgQ29kZUxvY2F0aW9uTGFiZWwoZXhpdC5tX2Nv
ZGUuY29kZSgpKSk7CisgICAgaW50ZXJwcmV0RXhpdChjb250ZXh0LCB2bSwgZXhpdCwgb3BlcmFu
ZHMsIHJlY292ZXJ5KTsKIAotICAgIHZtLT5vc3JFeGl0SnVtcERlc3RpbmF0aW9uID0gZXhpdC5t
X2NvZGUuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgLy8gRklYTUU6IHRvIGJlIGNv
bnRpbnVlZC4KKy8vICAgIGNwdS5wYygpID0gdm0ub3NyRXhpdEp1bXBEZXN0aW5hdGlvbjsKKy8v
ICAgIC8vIHZtLT5vc3JFeGl0SnVtcERlc3RpbmF0aW9uID0gZXhpdC5tX2NvZGUuY29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzKCk7CiB9CiAKLXZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxI
ZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QgT3BlcmFuZHM8
VmFsdWVSZWNvdmVyeT4mIG9wZXJhbmRzLCBTcGVjdWxhdGlvblJlY292ZXJ5KiByZWNvdmVyeSkK
K3N0YXRpYyB2b2lkIGludGVycHJldEV4aXQoQ29udGV4dCYgY29udGV4dCwgVk0mIHZtLCBPU1JF
eGl0JiBleGl0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMsIFNwZWN1
bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5KQogewotICAgIGppdC5qaXRBc3NlcnRUYWdzSW5QbGFj
ZSgpOworICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OworICAgIFByb2JlOjpGcmFtZSBmcmFt
ZShjb250ZXh0KTsKKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGNwdS5mcDxFeGVjU3RhdGUqPigp
OworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgQ29k
ZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IGNvZGVCbG9jay0+YmFzZWxpbmVBbHRlcm5hdGl2
ZSgpOwogCi0gICAgLy8gUHJvLWZvcm1hIHN0dWZmLgotICAgIGlmIChPcHRpb25zOjpwcmludEVh
Y2hPU1JFeGl0KCkpIHsKLSAgICAgICAgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvKiBkZWJ1
Z0luZm8gPSBuZXcgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvOwotICAgICAgICBkZWJ1Z0lu
Zm8tPmNvZGVCbG9jayA9IGppdC5jb2RlQmxvY2soKTsKLSAgICAgICAgZGVidWdJbmZvLT5raW5k
ID0gZXhpdC5tX2tpbmQ7Ci0gICAgICAgIGRlYnVnSW5mby0+Ynl0ZWNvZGVPZmZzZXQgPSBleGl0
Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4OworICAgIGFzc2VydFRhZ3NJblBsYWNlKGNwdSk7
CiAKLSAgICAgICAgaml0LmRlYnVnQ2FsbCh2bSwgZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0
aW9uRmFpbHVyZSwgZGVidWdJbmZvKTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6
OnByaW50RWFjaE9TUkV4aXQoKSkpCisgICAgICAgIHByaW50T1NSRXhpdChjcHUsIHZtLm9zckV4
aXRJbmRleCwgZXhpdCk7CiAKKy8vICAgIC8vIFNldCB0aGUgcmVzdWx0YW50IHNwIHRvIHdoZXJl
IHRoZSBERkcgY29kZUJsb2NrIGV4cGVjdHMgaXQuCisvLyAgICBjcHUuc3AoKSA9IGNwdS5mcDx1
aW50OF90Kj4oKSArIGNvZGVCbG9jay0+c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVn
aXN0ZXIpOworLy8KICAgICAvLyBQZXJmb3JtIHNwZWN1bGF0aW9uIHJlY292ZXJ5LiBUaGlzIG9u
bHkgY29tZXMgaW50byBwbGF5IHdoZW4gYW4gb3BlcmF0aW9uCiAgICAgLy8gc3RhcnRzIG11dGF0
aW5nIHN0YXRlIGJlZm9yZSB2ZXJpZnlpbmcgdGhlIHNwZWN1bGF0aW9uIGl0IGhhcyBhbHJlYWR5
IG1hZGUuCiAKICAgICBpZiAocmVjb3ZlcnkpIHsKICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS0+
dHlwZSgpKSB7CiAgICAgICAgIGNhc2UgU3BlY3VsYXRpdmVBZGQ6Ci0gICAgICAgICAgICBqaXQu
c3ViMzIocmVjb3ZlcnktPnNyYygpLCByZWNvdmVyeS0+ZGVzdCgpKTsKKyAgICAgICAgICAgIGNw
dS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgPSBjcHUuZ3ByPHVpbnQzMl90PihyZWNvdmVyeS0+ZGVz
dCgpKSAtIGNwdS5ncHI8dWludDMyX3Q+KHJlY292ZXJ5LT5zcmMoKSk7CiAjaWYgVVNFKEpTVkFM
VUU2NCkKLSAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
ciwgcmVjb3ZlcnktPmRlc3QoKSk7CisgICAgICAgICAgICBBU1NFUlQoIShjcHUuZ3ByKHJlY292
ZXJ5LT5kZXN0KCkgPj4gMzIpKSk7CisgICAgICAgICAgICBjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0
KCkpIHw9IFRhZ1R5cGVOdW1iZXI7CiAjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAg
ICAgIGNhc2UgU3BlY3VsYXRpdmVBZGRJbW1lZGlhdGU6Ci0gICAgICAgICAgICBqaXQuc3ViMzIo
QXNzZW1ibHlIZWxwZXJzOjpJbW0zMihyZWNvdmVyeS0+aW1tZWRpYXRlKCkpLCByZWNvdmVyeS0+
ZGVzdCgpKTsKKyAgICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgPSAoY3B1Lmdw
cjx1aW50MzJfdD4ocmVjb3ZlcnktPmRlc3QoKSkgLSByZWNvdmVyeS0+aW1tZWRpYXRlKCkpOwog
I2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBqaXQub3I2NChHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIsIHJlY292ZXJ5LT5kZXN0KCkpOworICAgICAgICAgICAgQVNTRVJUKCEo
Y3B1LmdwcihyZWNvdmVyeS0+ZGVzdCgpID4+IDMyKSkpOworICAgICAgICAgICAgY3B1Lmdwcihy
ZWNvdmVyeS0+ZGVzdCgpKSB8PSBUYWdUeXBlTnVtYmVyOwogI2VuZGlmCiAgICAgICAgICAgICBi
cmVhazsKIAogICAgICAgICBjYXNlIEJvb2xlYW5TcGVjdWxhdGlvbkNoZWNrOgogI2lmIFVTRShK
U1ZBTFVFNjQpCi0gICAgICAgICAgICBqaXQueG9yNjQoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCByZWNvdmVyeS0+ZGVzdCgp
KTsKKyAgICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgPSAoY3B1Lmdwcjx1aW50
MzJfdD4ocmVjb3ZlcnktPmRlc3QoKSkgXiBWYWx1ZUZhbHNlKTsKKyAgICAgICAgICAgIEFTU0VS
VCghKGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSA+PiAzMikpKTsKICNlbmRpZgogICAgICAgICAg
ICAgYnJlYWs7CiAKQEAgLTI4MSwxMjQgKzYyNCwzMSBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVF
eGl0KENDYWxsSGVscGVycyYgCiAgICAgICAgICAgICAvLyBwcm9wZXJ0eSBhY2Nlc3MsIG9yIGR1
ZSB0byBhbiBhcnJheSBwcm9maWxlKS4KIAogICAgICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luID0gZXhpdC5tX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZTsKLSAgICAgICAgICAgIGlmIChB
cnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IGppdC5iYXNlbGluZUNvZGVCbG9ja0Zvcihjb2Rl
T3JpZ2luKS0+Z2V0QXJyYXlQcm9maWxlKGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpIHsKLSNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgICAgIEdQUlJlZyB1c2VkUmVnaXN0ZXI7Ci0g
ICAgICAgICAgICAgICAgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmlzQWRkcmVzcygpKQotICAg
ICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXIgPSBleGl0Lm1fanNWYWx1ZVNvdXJjZS5iYXNl
KCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0
ZXIgPSBleGl0Lm1fanNWYWx1ZVNvdXJjZS5ncHIoKTsKLSNlbHNlCi0gICAgICAgICAgICAgICAg
R1BSUmVnIHVzZWRSZWdpc3RlcjE7Ci0gICAgICAgICAgICAgICAgR1BSUmVnIHVzZWRSZWdpc3Rl
cjI7Ci0gICAgICAgICAgICAgICAgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmlzQWRkcmVzcygp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcjEgPSBleGl0Lm1fanNWYWx1ZVNv
dXJjZS5iYXNlKCk7Ci0gICAgICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcjIgPSBJbnZhbGlk
R1BSUmVnOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHVz
ZWRSZWdpc3RlcjEgPSBleGl0Lm1fanNWYWx1ZVNvdXJjZS5wYXlsb2FkR1BSKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5oYXNLbm93blRhZygpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVyMiA9IEludmFsaWRHUFJSZWc7Ci0gICAg
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRSZWdpc3Rl
cjIgPSBleGl0Lm1fanNWYWx1ZVNvdXJjZS50YWdHUFIoKTsKLSAgICAgICAgICAgICAgICB9Ci0j
ZW5kaWYKLQotICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoMTsKLSAgICAgICAgICAgICAg
ICBHUFJSZWcgc2NyYXRjaDI7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgICAgICBz
Y3JhdGNoMSA9IEFzc2VtYmx5SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUih1c2VkUmVnaXN0ZXIp
OwotICAgICAgICAgICAgICAgIHNjcmF0Y2gyID0gQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3Jh
dGNoR1BSKHVzZWRSZWdpc3Rlciwgc2NyYXRjaDEpOwotI2Vsc2UKLSAgICAgICAgICAgICAgICBz
Y3JhdGNoMSA9IEFzc2VtYmx5SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUih1c2VkUmVnaXN0ZXIx
LCB1c2VkUmVnaXN0ZXIyKTsKLSAgICAgICAgICAgICAgICBzY3JhdGNoMiA9IEFzc2VtYmx5SGVs
cGVyczo6c2VsZWN0U2NyYXRjaEdQUih1c2VkUmVnaXN0ZXIxLCB1c2VkUmVnaXN0ZXIyLCBzY3Jh
dGNoMSk7Ci0jZW5kaWYKLQotICAgICAgICAgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaml0LnB1c2hUb1NhdmUoc2NyYXRjaDEpOwotICAgICAgICAgICAgICAg
ICAgICBqaXQucHVzaFRvU2F2ZShzY3JhdGNoMik7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgaml0LnB1c2goc2NyYXRjaDEpOwotICAgICAgICAgICAgICAg
ICAgICBqaXQucHVzaChzY3JhdGNoMik7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAgICAgR1BSUmVnIHZhbHVlOwotICAgICAgICAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNv
dXJjZS5pc0FkZHJlc3MoKSkgewotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNjcmF0Y2gx
OwotICAgICAgICAgICAgICAgICAgICBqaXQubG9hZFB0cihBc3NlbWJseUhlbHBlcnM6OkFkZHJl
c3MoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYXNBZGRyZXNzKCkpLCB2YWx1ZSk7Ci0gICAgICAgICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZXhpdC5tX2pzVmFsdWVT
b3VyY2UucGF5bG9hZEdQUigpOwotCi0gICAgICAgICAgICAgICAgaml0LmxvYWQzMihBc3NlbWJs
eUhlbHBlcnM6OkFkZHJlc3ModmFsdWUsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNj
cmF0Y2gxKTsKLSAgICAgICAgICAgICAgICBqaXQuc3RvcmUzMihzY3JhdGNoMSwgYXJyYXlQcm9m
aWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOwotI2lmIFVTRShKU1ZBTFVFNjQp
Ci0gICAgICAgICAgICAgICAgaml0LmxvYWQ4KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyh2YWx1
ZSwgSlNDZWxsOjppbmRleGluZ1R5cGVBbmRNaXNjT2Zmc2V0KCkpLCBzY3JhdGNoMSk7Ci0jZWxz
ZQotICAgICAgICAgICAgICAgIGppdC5sb2FkOChBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3Moc2Ny
YXRjaDEsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlSW5jbHVkaW5nSGlzdG9yeU9mZnNldCgpKSwg
c2NyYXRjaDEpOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoMSksIHNjcmF0Y2gyKTsKLSAgICAgICAgICAgICAgICBqaXQubHNo
aWZ0MzIoc2NyYXRjaDEsIHNjcmF0Y2gyKTsKLSAgICAgICAgICAgICAgICBqaXQub3IzMihzY3Jh
dGNoMiwgQXNzZW1ibHlIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJyYXlQcm9maWxlLT5hZGRy
ZXNzT2ZBcnJheU1vZGVzKCkpKTsKLQotICAgICAgICAgICAgICAgIGlmIChpc0FSTTY0KCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3JhdGNoMik7Ci0gICAgICAg
ICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaDEpOwotICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5wb3Aoc2NyYXRjaDIpOwotICAgICAg
ICAgICAgICAgICAgICBqaXQucG9wKHNjcmF0Y2gxKTsKLSAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQ29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tG
b3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jayhjb2RlT3JpZ2luLCBiYXNlbGluZUNvZGVCbG9j
ayk7CisgICAgICAgICAgICBpZiAoQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBwcm9maWxl
ZENvZGVCbG9jay0+Z2V0QXJyYXlQcm9maWxlKGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpIHsK
KyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGV4aXQubV9qc1ZhbHVlU291
cmNlLmV2YWx1YXRlKGNwdSkuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CisgICAgICAgICAgICAg
ICAgYXJyYXlQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJlKHN0cnVjdHVyZSk7CisgICAgICAgICAg
ICAgICAgYXJyYXlQcm9maWxlLT5vYnNlcnZlQXJyYXlNb2RlKGFycmF5TW9kZUZyb21TdHJ1Y3R1
cmUoc3RydWN0dXJlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBwcm9maWxlID0gZXhpdC5tX3ZhbHVlUHJvZmls
ZSkgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBpZiAoZXhpdC5tX2pzVmFsdWVT
b3VyY2UuaXNBZGRyZXNzKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBiZSBzdXJl
IHRoYXQgd2UgaGF2ZSBhIHNwYXJlIHJlZ2lzdGVyLiBTbyB1c2UgdGhlIHRhZ1R5cGVOdW1iZXJS
ZWdpc3RlciwKLSAgICAgICAgICAgICAgICAvLyBzaW5jZSB3ZSBrbm93IGhvdyB0byByZXN0b3Jl
IGl0LgotICAgICAgICAgICAgICAgIGppdC5sb2FkNjQoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNz
KGV4aXQubV9qc1ZhbHVlU291cmNlLmFzQWRkcmVzcygpKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJl
clJlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQs
IEpTVmFsdWVSZWdzKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwotICAgICAgICAg
ICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KFRhZ1R5cGVOdW1i
ZXIpLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVn
cyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5ncHIoKSkpOwotI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVF
NjQpCi0gICAgICAgICAgICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaXNBZGRyZXNzKCkpIHsK
LSAgICAgICAgICAgICAgICAvLyBTYXZlIGEgcmVnaXN0ZXIgc28gd2UgY2FuIHVzZSBpdC4KLSAg
ICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaFBheWxvYWQgPSBBc3NlbWJseUhlbHBlcnM6OnNl
bGVjdFNjcmF0Y2hHUFIoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYmFzZSgpKTsKLSAgICAgICAgICAg
ICAgICBHUFJSZWcgc2NyYXRjaFRhZyA9IEFzc2VtYmx5SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQ
UihleGl0Lm1fanNWYWx1ZVNvdXJjZS5iYXNlKCksIHNjcmF0Y2hQYXlsb2FkKTsKLSAgICAgICAg
ICAgICAgICBqaXQucHVzaFRvU2F2ZShzY3JhdGNoUGF5bG9hZCk7Ci0gICAgICAgICAgICAgICAg
aml0LnB1c2hUb1NhdmUoc2NyYXRjaFRhZyk7Ci0KLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVn
cyBzY3JhdGNoKHNjcmF0Y2hUYWcsIHNjcmF0Y2hQYXlsb2FkKTsKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICBqaXQubG9hZFZhbHVlKGV4aXQubV9qc1ZhbHVlU291cmNlLmFzQWRk
cmVzcygpLCBzY3JhdGNoKTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1
ZShqaXQsIHNjcmF0Y2gpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGppdC5w
b3BUb1Jlc3RvcmUoc2NyYXRjaFRhZyk7Ci0gICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9y
ZShzY3JhdGNoUGF5bG9hZCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGV4aXQubV9qc1ZhbHVl
U291cmNlLmhhc0tub3duVGFnKCkpIHsKLSAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaFRh
ZyA9IEFzc2VtYmx5SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUihleGl0Lm1fanNWYWx1ZVNvdXJj
ZS5wYXlsb2FkR1BSKCkpOwotICAgICAgICAgICAgICAgIGppdC5wdXNoVG9TYXZlKHNjcmF0Y2hU
YWcpOwotICAgICAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bTMyKGV4aXQubV9qc1ZhbHVlU291cmNlLnRhZygpKSwgc2NyYXRjaFRhZyk7Ci0gICAgICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUoc2NyYXRjaFRhZywgZXhpdC5tX2pzVmFsdWVTb3VyY2Uu
cGF5bG9hZEdQUigpKTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShq
aXQsIHZhbHVlKTsKLSAgICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2hUYWcp
OwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0
VmFsdWUoaml0LCBleGl0Lm1fanNWYWx1ZVNvdXJjZS5yZWdzKCkpOwotI2VuZGlmIC8vIFVTRShK
U1ZBTFVFNjQpCi0gICAgICAgIH0KKyAgICAgICAgaWYgKE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGUgcHJvZmlsZSA9IGV4aXQubV92YWx1ZVByb2ZpbGUpCisgICAgICAgICAgICBwcm9maWxl
LnJlcG9ydFZhbHVlKGV4aXQubV9qc1ZhbHVlU291cmNlLmV2YWx1YXRlKGNwdSkpOwogICAgIH0K
IAotICAgIC8vIFdoYXQgZm9sbG93cyBpcyBhbiBpbnRlbnRpb25hbGx5IHNpbXBsZSBPU1IgZXhp
dCBpbXBsZW1lbnRhdGlvbiB0aGF0IGdlbmVyYXRlcwotICAgIC8vIGZhaXJseSBwb29yIGNvZGUg
YnV0IGlzIHZlcnkgZWFzeSB0byBoYWNrLiBJbiBwYXJ0aWN1bGFyLCBpdCBkdW1wcyBhbGwgc3Rh
dGUgdGhhdAorI2lmIDAgLy8gbWxhbSBSRU1PVkUKKyAgICAvLyBXaGF0IGZvbGxvd3MgaXMgYW4g
aW50ZW50aW9uYWxseSBzaW1wbGUgT1NSIGV4aXQgaW1wbGVtZW50YXRpb24gdGhhdCBpcyBub3Qg
dGhlCisgICAgLy8gZmFzdGVzdCBjb2RlIGJ1dCBpcyB2ZXJ5IGVhc3kgdG8gaGFjay4gSW4gcGFy
dGljdWxhciwgaXQgZHVtcHMgYWxsIHN0YXRlIHRoYXQKICAgICAvLyBuZWVkcyBjb252ZXJzaW9u
IGludG8gYSBzY3JhdGNoIGJ1ZmZlciBzbyB0aGF0IGluIHN0ZXAgNiwgd2hlcmUgd2UgYWN0dWFs
bHkgZG8gdGhlCiAgICAgLy8gY29udmVyc2lvbnMsIHdlIGtub3cgdGhhdCBhbGwgdGVtcCByZWdp
c3RlcnMgYXJlIGZyZWUgdG8gdXNlIGFuZCB0aGUgdmFyaWFibGUgaXMKICAgICAvLyBkZWZpbml0
ZWx5IGluIGEgd2VsbC1rbm93biBzcG90IGluIHRoZSBzY3JhdGNoIGJ1ZmZlciByZWdhcmRsZXNz
IG9mIHdoZXRoZXIgaXQgaGFkCiAgICAgLy8gb3JpZ2luYWxseSBiZWVuIGluIGEgcmVnaXN0ZXIg
b3Igc3BpbGxlZC4gVGhpcyBhbGxvd3MgdXMgdG8gZGVjb3VwbGUgIndoZXJlIHdhcwogICAgIC8v
IHRoZSB2YXJpYWJsZSIgZnJvbSAiaG93IHdhcyBpdCByZXByZXNlbnRlZCIuIENvbnNpZGVyIHRo
YXQgdGhlCiAgICAgLy8gSW50MzJEaXNwbGFjZWRJbkpTU3RhY2sgcmVjb3Zlcnk6IGl0IHRlbGxz
IHVzIHRoYXQgdGhlIHZhbHVlIGlzIGluIGEKLSAgICAvLyBwYXJ0aWN1bGFyIHBsYWNlIGFuZCB0
aGF0IHRoYXQgcGxhY2UgaG9sZHMgYW4gdW5ib3hlZCBpbnQzMi4gV2UgaGF2ZSB0d28gZGlmZmVy
ZW50CisgICAgLy8gcGFydGljdWxhciBwbGFjZSBhbmQgdGhhdCB0aGlzIHBsYWNlIGhvbGRzIGFu
IHVuYm94ZWQgaW50MzIuIFdlIGhhdmUgdHdvIGRpZmZlcmVudAogICAgIC8vIHBsYWNlcyB0aGF0
IGEgdmFsdWUgY291bGQgYmUgKGRpc3BsYWNlZCwgcmVnaXN0ZXIpIGFuZCBhIGJ1bmNoIG9mIGRp
ZmZlcmVudAogICAgIC8vIHdheXMgb2YgcmVwcmVzZW50aW5nIGEgdmFsdWUuIFRoZSBudW1iZXIg
b2YgcmVjb3ZlcmllcyBpcyB0d28gKiBhIGJ1bmNoLiBUaGUgY29kZQotICAgIC8vIGJlbG93IG1l
YW5zIHRoYXQgd2UgaGF2ZSB0byBoYXZlIHR3byArIGEgYnVuY2ggY2FzZXMgcmF0aGVyIHRoYW4g
dHdvICogYSBidW5jaC4KKyAgICAvLyBiZWxvdyBtZWFucyB0aGF0IHdlIGhhdmUgdG8gaGF2ZSB0
d28gKyBhIGJ1bmNoIG9mIGNhc2VzIHJhdGhlciB0aGFuIHR3byAqIGEgYnVuY2guCiAgICAgLy8g
T25jZSB3ZSBoYXZlIGxvYWRlZCB0aGUgdmFsdWUgZnJvbSB3aGVyZXZlciBpdCB3YXMsIHRoZSBy
ZWJveGluZyBpcyB0aGUgc2FtZQogICAgIC8vIHJlZ2FyZGxlc3Mgb2YgaXRzIGxvY2F0aW9uLiBM
aWtld2lzZSwgYmVmb3JlIHdlIGRvIHRoZSByZWJveGluZywgdGhlIHdheSB3ZSBnZXQgdG8KICAg
ICAvLyB0aGUgdmFsdWUgKGkuZS4gd2hlcmUgd2UgbG9hZCBpdCBmcm9tKSBpcyB0aGUgc2FtZSBy
ZWdhcmRsZXNzIG9mIGl0cyB0eXBlLiBCZWNhdXNlCkBAIC00MDcsMTIgKzY1NywxMiBAQCB2b2lk
IE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgCiAgICAgLy8gbG9jYXRpb25zLgog
ICAgIC8vCiAgICAgLy8gVGhpcyByYWlzZXMgdGhlIHF1ZXN0aW9uOiBkb2VzIHVzaW5nIHN1Y2gg
YSBzdWJvcHRpbWFsIGltcGxlbWVudGF0aW9uIG9mIE9TUiBleGl0LAotICAgIC8vIHdoZXJlIHdl
IGFsd2F5cyBlbWl0IGNvZGUgdG8gZHVtcCBhbGwgc3RhdGUgaW50byBhIHNjcmF0Y2ggYnVmZmVy
IG9ubHkgdG8gdGhlbgotICAgIC8vIGR1bXAgaXQgcmlnaHQgYmFjayBpbnRvIHRoZSBzdGFjaywg
aHVydCB1cyBpbiBhbnkgd2F5PyBUaGUgYXNud2VyIGlzIHRoYXQgT1NSIGV4aXRzCisgICAgLy8g
d2hlcmUgd2UgYWx3YXlzIGR1bXAgYWxsIHN0YXRlIGludG8gYSBzY3JhdGNoIGJ1ZmZlciBvbmx5
IHRvIHRoZW4gZHVtcCBpdAorICAgIC8vIHJpZ2h0IGJhY2sgaW50byB0aGUgc3RhY2ssIGh1cnQg
dXMgaW4gYW55IHdheT8gVGhlIGFuc3dlciBpcyB0aGF0IE9TUiBleGl0cwogICAgIC8vIGFyZSBy
YXJlLiBPdXIgdGllcmluZyBzdHJhdGVneSBlbnN1cmVzIHRoaXMuIFRoaXMgaXMgYmVjYXVzZSBp
ZiBhbiBPU1IgZXhpdCBpcwogICAgIC8vIHRha2VuIG1vcmUgdGhhbiB+MTAwIHRpbWVzLCB3ZSBq
ZXR0aXNvbiB0aGUgREZHIGNvZGUgYmxvY2sgYWxvbmcgd2l0aCBhbGwgb2YgaXRzCi0gICAgLy8g
ZXhpdHMuIEl0IGlzIGltcG9zc2libGUgZm9yIGFuIE9TUiBleGl0IC0gaS5lLiB0aGUgY29kZSB3
ZSBjb21waWxlIGJlbG93IC0gdG8KLSAgICAvLyBleGVjdXRlIGZyZXF1ZW50bHkgZW5vdWdoIGZv
ciB0aGUgY29kZWdlbiB0byBtYXR0ZXIgdGhhdCBtdWNoLiBJdCBwcm9iYWJseSBtYXR0ZXJzCisg
ICAgLy8gZXhpdHMuIEl0IGlzIGltcG9zc2libGUgZm9yIGFuIE9TUiBleGl0IHRvIGV4ZWN1dGUK
KyAgICAvLyBmcmVxdWVudGx5IGVub3VnaCB0byBtYXR0ZXIgdGhhdCBtdWNoLiBJdCBwcm9iYWJs
eSBtYXR0ZXJzCiAgICAgLy8gZW5vdWdoIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byB0dXJuIHRoaXMg
aW50byBzb21lIHN1cGVyLXNsb3cgZnVuY3Rpb24gY2FsbCwgYnV0IHNvCiAgICAgLy8gbG9uZyBh
cyB3ZSdyZSBnZW5lcmF0aW5nIHN0cmFpZ2h0LWxpbmUgY29kZSwgdGhhdCBjb2RlIGNhbiBiZSBw
cmV0dHkgYmFkLiBBbHNvCiAgICAgLy8gYmVjYXVzZSB3ZSB0ZW5kIHRvIGV4aXQgb25seSBhbG9u
ZyBvbmUgT1NSIGV4aXQgZnJvbSBhbnkgREZHIGNvZGUgYmxvY2sgLSB0aGF0J3MgYW4KQEAgLTQy
MiwxMSArNjcyLDExIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAK
ICAgICAvLyBleGVjdXRpb24gdGltZS4gSXQgd2lsbCBvbmx5IHByZXZlbnQgdXMgZnJvbSBjbGVh
bmx5IGRlY291cGxpbmcgIndoZXJlIHdhcyB0aGUKICAgICAvLyB2YXJpYWJsZSIgZnJvbSAiaG93
IHdhcyBpdCByZXByZXNlbnRlZCIsIHdoaWNoIHdpbGwgbWFrZSBpdCBtb3JlIGRpZmZpY3VsdCB0
byBhZGQKICAgICAvLyBmZWF0dXJlcyBpbiB0aGUgZnV0dXJlIGFuZCBpdCB3aWxsIG1ha2UgaXQg
aGFyZGVyIHRvIHJlYXNvbiBhYm91dCBidWdzLgorICAgIC8vIG1sYW0gRklYTUUgOjogdGhlIGFi
b3ZlIGNvbW1lbnQocykgbmVlZHMgdG8gYmUgdXBkYXRlZC4KIAotICAgIC8vIFNhdmUgYWxsIHN0
YXRlIGZyb20gR1BScyBpbnRvIHRoZSBzY3JhdGNoIGJ1ZmZlci4KKyAgICAvLyBTYXZlIGFsbCBz
dGF0ZSBmcm9tIEdQUnMsIEZQUnMsIGFuZCB0aGUgc3RhY2sgaW50byB0aGUgc2NyYXRjaCBidWZm
ZXIuCiAKLSAgICBTY3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZl
ckZvclNpemUoc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIG9wZXJhbmRzLnNpemUoKSk7Ci0gICAg
RW5jb2RlZEpTVmFsdWUqIHNjcmF0Y2ggPSBzY3JhdGNoQnVmZmVyID8gc3RhdGljX2Nhc3Q8RW5j
b2RlZEpTVmFsdWUqPihzY3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpIDogMDsKKyAgICBzdGQ6
OmFycmF5PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIG9wZXJhbmRzLnNpemUoKT4gcmVjb3ZlcmVk
T3BlcmFuZHM7CiAKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMu
c2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5
ID0gb3BlcmFuZHNbaW5kZXhdOwpAQCAtNDM4LDU5ICs2ODgsMjQgQEAgdm9pZCBPU1JFeGl0Ojpj
b21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgICAgICBjYXNlIEluR1BSOgogICAgICAgICBj
YXNlIFVuYm94ZWRJbnQ1MkluR1BSOgogICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ1Mklu
R1BSOgotICAgICAgICAgICAgaml0LnN0b3JlNjQocmVjb3ZlcnkuZ3ByKCksIHNjcmF0Y2ggKyBp
bmRleCk7CisgICAgICAgICAgICByZWNvdmVyZWRPcGVyYW5kc1tpbmRleF0uYXNJbnQ2NCA9IGNw
dS5ncHIocmVjb3ZlcnkuZ3ByKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAjZWxzZQogICAgICAg
ICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAg
ICAgICAgICAgICAgICByZWNvdmVyeS5ncHIoKSwKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9j
YXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5
bG9hZCk7CisgICAgICAgICAgICByZWNvdmVyZWRPcGVyYW5kc1tpbmRleF0uYXNCaXRzLnBheWxv
YWQgPSBjcHUuZ3ByKHJlY292ZXJ5LmdwcigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2UgSW5QYWlyOgotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0g
ICAgICAgICAgICAgICAgcmVjb3ZlcnkudGFnR1BSKCksCi0gICAgICAgICAgICAgICAgJmJpdHdp
c2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRz
LnRhZyk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICByZWNvdmVy
eS5wYXlsb2FkR1BSKCksCi0gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQpOworICAgICAg
ICAgICAgcmVjb3ZlcmVkT3BlcmFuZHNbaW5kZXhdLmFzQml0cy50YWcgPSBjcHUuZ3ByKHJlY292
ZXJ5LnRhZ0dQUigpKTsKKyAgICAgICAgICAgIHJlY292ZXJlZE9wZXJhbmRzW2luZGV4XS5hc0Jp
dHMucGF5bG9hZCA9IGNwdS5ncHIocmVjb3ZlcnkucGF5bG9hZEdQUigpKTsKICAgICAgICAgICAg
IGJyZWFrOwogI2VuZGlmCiAKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gQW5kIHZvaWxhLCBhbGwgR1BScyBhcmUgZnJlZSB0
byByZXVzZS4KLQotICAgIC8vIFNhdmUgYWxsIHN0YXRlIGZyb20gRlBScyBpbnRvIHRoZSBzY3Jh
dGNoIGJ1ZmZlci4KLQotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5k
cy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3Zl
cnkgPSBvcGVyYW5kc1tpbmRleF07Ci0KLSAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlx
dWUoKSkgewogICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoKICAgICAgICAgY2FzZSBJ
bkZQUjoKLSAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0
cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3Rv
cmVEb3VibGUocmVjb3ZlcnkuZnByKCksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86
OnJlZ1QwKSk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgcmVjb3ZlcmVkT3BlcmFuZHNbaW5kZXhdLmFzSW50NjQgPSBjcHUuZnByPHVpbnQ2NF90
PihyZWNvdmVyeS5mcHIoKSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIC8vIE5vdywgYWxsIEZQUnMgYXJlIGFsc28gZnJlZS4KLQotICAgIC8vIFNhdmUgYWxs
IHN0YXRlIGZyb20gdGhlIHN0YWNrIGludG8gdGhlIHNjcmF0Y2ggYnVmZmVyLiBGb3Igc2ltcGxp
Y2l0eSB3ZQotICAgIC8vIGRvIHRoaXMgZXZlbiBmb3Igc3RhdGUgdGhhdCdzIGFscmVhZHkgaW4g
dGhlIHJpZ2h0IHBsYWNlIG9uIHRoZSBzdGFjay4KLSAgICAvLyBJdCBtYWtlcyB0aGluZ3Mgc2lt
cGxlciBsYXRlci4KIAotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5k
cy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3Zl
cnkgPSBvcGVyYW5kc1tpbmRleF07Ci0KLSAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlx
dWUoKSkgewogICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgY2FzZSBD
ZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpT
U3RhY2s6CkBAIC00OTksMTc3ICs3MTQsMTE5IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQo
Q0NhbGxIZWxwZXJzJiAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNlIEludDUyRGlz
cGxhY2VkSW5KU1N0YWNrOgogICAgICAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0
YWNrOgotICAgICAgICAgICAgaml0LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Io
cmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAg
ICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKLSAgICAgICAg
ICAgIGJyZWFrOwotI2Vsc2UKLSAgICAgICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAgICAgICAg
ICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAot
ICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5sb2FkMzIo
Ci0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKHJlY292ZXJ5LnZp
cnR1YWxSZWdpc3RlcigpKSwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7Ci0gICAg
ICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwKLSAg
ICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3Jh
dGNoICsgaW5kZXgpLT5hc0JpdHMudGFnKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAg
ICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxLAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nh
c3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXls
b2FkKTsKLSAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCisgICAgICAgICAgICByZWNvdmVyZWRP
cGVyYW5kc1tpbmRleF0uYXNJbnQ2NCA9IGV4ZWMtPnIocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVy
KCkpLmVuY29kZWRKU1ZhbHVlKCk7CisgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisjZW5kaWYgLy8gbWxh
bSBSRU1PVkUKIAorI2lmIDAgLy8gbWxhbSBNT1ZFRCBiZWxvdwogICAgIC8vIE5lZWQgdG8gZW5z
dXJlIHRoYXQgdGhlIHN0YWNrIHBvaW50ZXIgYWNjb3VudHMgZm9yIHRoZSB3b3JzdC1jYXNlIHN0
YWNrIHVzYWdlIGF0IGV4aXQuIFRoaXMKICAgICAvLyBjb3VsZCB0b2FzdCBzb21lIHN0YWNrIHRo
YXQgdGhlIERGRyB1c2VkLiBXZSBuZWVkIHRvIGRvIGl0IGJlZm9yZSBzdG9yaW5nIHRvIHN0YWNr
IG9mZnNldHMKICAgICAvLyB1c2VkIGJ5IGJhc2VsaW5lLgotICAgIGppdC5hZGRQdHIoCi0gICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKAotICAgICAgICAgICAgLWppdC5jb2RlQmxv
Y2soKS0+aml0Q29kZSgpLT5kZmdDb21tb24oKS0+cmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhp
dCAqIHNpemVvZihSZWdpc3RlcikpLAotICAgICAgICBDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRl
clJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBjcHUu
c3AoKSA9IGNwdS5mcDx1aW50OF90Kj4oKSAtIChjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnQ29t
bW9uKCktPnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4aXQgKiBzaXplb2YoUmVnaXN0ZXIpKTsK
IAorI2lmIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTID4gMAogICAgIC8vIFJlc3Rv
cmUgdGhlIERGRyBjYWxsZWUgc2F2ZXMgYW5kIHRoZW4gc2F2ZSB0aGUgb25lcyB0aGUgYmFzZWxp
bmUgSklUIHVzZXMuCi0gICAgaml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKLSAgICBqaXQu
ZW1pdFNhdmVDYWxsZWVTYXZlc0ZvcihqaXQuYmFzZWxpbmVDb2RlQmxvY2soKSk7CisgICAgcmVz
dG9yZUNhbGxlZVNhdmVzRm9yKGNvbnRleHQsIGNvZGVCbG9jayk7CisgICAgc2F2ZUNhbGxlZVNh
dmVzRm9yKGNvbnRleHQsIGJhc2VsaW5lQ29kZUJsb2NrKTsKIAogICAgIC8vIFRoZSB0YWcgcmVn
aXN0ZXJzIGFyZSBuZWVkZWQgdG8gbWF0ZXJpYWxpemUgcmVjb3ZlcmllcyBiZWxvdy4KLSAgICBq
aXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsKKyAgICBtYXRlcmlhbGl6ZVRh
Z0NoZWNrUmVnaXN0ZXJzKGNwdSk7CiAKICAgICBpZiAoZXhpdC5pc0V4Y2VwdGlvbkhhbmRsZXIo
KSkKLSAgICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNC
dWZmZXIodm0pOworICAgICAgICBjb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNh
dmVzQnVmZmVyKGNvbnRleHQsIHZtKTsKKyNlbmRpZiAvLyBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVT
X1JFR0lTVEVSUyA+IDAKKyNlbmRpZiAvLyBtbGFtIE1PVkVEIGJlbG93CiAKICAgICAvLyBEbyBh
bGwgZGF0YSBmb3JtYXQgY29udmVyc2lvbnMgYW5kIHN0b3JlIHRoZSByZXN1bHRzIGludG8gdGhl
IHN0YWNrLgorICAgIC8vIE5vdGU6IHdlIG5lZWQgdG8gcmVjb3ZlciB2YWx1ZXMgYmVmb3JlIHdl
IHJlc3RvcmUgY2FsbGVlIHNhdmUgcmVnaXN0ZXJzIGJlbG93CisgICAgLy8gYmVjYXVzZSB0aGUg
dGhlIHJlY292ZXJ5IG1heSByZWx5IG9uIHZhbHVlcyBpbiBzb21lIG9mIHRob3NlIHJlZ2lzdGVy
cy4KIAogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7
ICsraW5kZXgpIHsKICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVy
YW5kc1tpbmRleF07CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZWcgPSBvcGVyYW5kcy52aXJ0
dWFsUmVnaXN0ZXJGb3JJbmRleChpbmRleCk7CiAKLSAgICAgICAgaWYgKHJlZy5pc0xvY2FsKCkg
JiYgcmVnLnRvTG9jYWwoKSA8IHN0YXRpY19jYXN0PGludD4oaml0LmJhc2VsaW5lQ29kZUJsb2Nr
KCktPmNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKSkKKyAgICAgICAgaWYgKHJl
Zy5pc0xvY2FsKCkgJiYgcmVnLnRvTG9jYWwoKSA8IHN0YXRpY19jYXN0PGludD4oYmFzZWxpbmVD
b2RlQmxvY2stPmNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGludCBvcGVyYW5kID0gcmVnLm9mZnNldCgpOwogCiAg
ICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBEaXNw
bGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIGV4
ZWMtPnIocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLmpzVmFsdWUoKSk7CisgICAgICAgICAg
ICBicmVhazsKKwogICAgICAgICBjYXNlIEluRlBSOgorICAgICAgICAgICAgZnJhbWUuc2V0T3Bl
cmFuZChvcGVyYW5kLCBjcHUuZnByPEpTVmFsdWU+KHJlY292ZXJ5LmZwcigpKSk7CisgICAgICAg
ICAgICBicmVhazsKKwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGNhc2UgSW5HUFI6Ci0g
ICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKLSAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2Vk
SW5KU1N0YWNrOgotICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAg
ICAgICAgICBqaXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOwotICAg
ICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRk
cmVzc0ZvcihvcGVyYW5kKSk7CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQs
IGNwdS5ncHI8SlNWYWx1ZT4ocmVjb3ZlcnkuZ3ByKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwot
I2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCisjZWxzZQogICAgICAgICBjYXNlIEluUGFpcjoK
LSAgICAgICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnRhZywKLSAg
ICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAot
ICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNj
cmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAotICAgICAgICAgICAgICAgIEdQUkluZm86
OnJlZ1QxKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEdQUklu
Zm86OnJlZ1QwLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKG9wZXJh
bmQpKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEdQUkluZm86
OnJlZ1QxLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVy
YW5kKSk7CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFsdWUoY3B1
LmdwcjxpbnQzMl90PihyZWNvdmVyeS50YWdHUFIoKSksIGNwdS5ncHI8aW50MzJfdD4ocmVjb3Zl
cnkucGF5bG9hZEdQUigpKSkpOwogICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKIAogICAgICAg
ICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9w
ZXJhbmQsIEpTVmFsdWUoY3B1LmdwcjxKU0NlbGwqPihyZWNvdmVyeS5ncHIoKSkpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazoKLSAg
ICAgICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQsCi0g
ICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlMzIo
Ci0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
Q2VsbFRhZyksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFu
ZCkpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6
cmVnVDAsCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJh
bmQpKTsKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShleGVj
LT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS51bmJveGVkQ2VsbCgpKSk7CiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6CisgICAgICAg
ICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIGpzQm9vbGVhbihjcHUuZ3ByPGJvb2w+KHJl
Y292ZXJ5LmdwcigpKSkpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBCb29s
ZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAg
ICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsg
aW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7
Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCb29sZWFuVGFnKSwKLSAgICAgICAgICAgICAgICBB
c3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUz
MigKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwKLSAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgZnJhbWUuc2V0
T3BlcmFuZChvcGVyYW5kLCBqc0Jvb2xlYW4oZXhlYy0+cihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0
ZXIoKSkudW5ib3hlZEJvb2xlYW4oKSkpOwogICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYgLy8g
VVNFKEpTVkFMVUU2NCkKIAogICAgICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgorICAgICAg
ICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVlKGNwdS5ncHI8aW50MzJfdD4o
cmVjb3ZlcnkuZ3ByKCkpKSk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIElu
dDMyRGlzcGxhY2VkSW5KU1N0YWNrOgotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBq
aXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAg
aml0Lnplcm9FeHRlbmQzMlRvUHRyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7Ci0g
ICAgICAgICAgICBqaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIEdQUklu
Zm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3Nl
bWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwotI2Vsc2UKLSAgICAgICAgICAgIGpp
dC5sb2FkMzIoCi0gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNj
cmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQsCi0gICAgICAgICAgICAg
ICAgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAg
ICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpLAot
ICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKG9wZXJhbmQpKTsKLSAgICAg
ICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAotICAg
ICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7Ci0jZW5k
aWYKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShleGVjLT5y
KHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS51bmJveGVkSW50MzIoKSkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNlIFVuYm94ZWRJbnQ1
MkluR1BSOgorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVlKGNw
dS5ncHI8aW50NjRfdD4ocmVjb3ZlcnkuZ3ByKCkpID4+IEpTVmFsdWU6OmludDUyU2hpZnRBbW91
bnQpKTsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgSW50NTJEaXNwbGFjZWRJ
bkpTU3RhY2s6Ci0gICAgICAgICAgICBqaXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5m
bzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnJzaGlmdDY0KAotICAgICAgICAgICAgICAgIEFz
c2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBH
UFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuYm94SW50NTIoR1BSSW5mbzo6cmVnVDAs
IEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAg
ICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRy
ZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwg
SlNWYWx1ZShleGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS51bmJveGVkSW50NTIo
KSkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50
NTJJbkdQUjoKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShj
cHUuZ3ByPGludDY0X3Q+KHJlY292ZXJ5LmdwcigpKSkpOworICAgICAgICAgICAgYnJlYWs7CisK
ICAgICAgICAgY2FzZSBTdHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAg
IGppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAg
ICBqaXQuYm94SW50NTIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpy
ZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZv
OjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAg
ICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShleGVjLT5yKHJlY292ZXJ5LnZp
cnR1YWxSZWdpc3RlcigpKS51bmJveGVkU3RyaWN0SW50NTIoKSkpOwogICAgICAgICAgICAgYnJl
YWs7CiAjZW5kaWYKIAogICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoKKyAgICAgICAg
ICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShwdXJpZnlOYU4oY3B1LmZwcihy
ZWNvdmVyeS5mcHIoKSkpKSk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIERv
dWJsZURpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7Ci0g
ICAgICAgICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZv
OjpyZWdUMCksIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgaml0LnB1cmlmeU5hTihG
UFJJbmZvOjpmcFJlZ1QwKTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgaml0LmJv
eERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBq
aXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9w
ZXJhbmQpKTsKLSNlbHNlCi0gICAgICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBS
ZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKLSNlbmRpZgorICAg
ICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVlKHB1cmlmeU5hTihleGVj
LT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS51bmJveGVkRG91YmxlKCkpKSk7CiAgICAg
ICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIENvbnN0YW50OgotI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgICAgICAgICBqaXQuc3RvcmU2NCgKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUocmVjb3ZlcnkuY29uc3RhbnQoKSkp
LAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7
Ci0jZWxzZQotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1i
bHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIocmVjb3ZlcnkuY29uc3RhbnQoKS50YWcoKSksCi0gICAg
ICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOwotICAgICAgICAg
ICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tMzIocmVjb3ZlcnkuY29uc3RhbnQoKS5wYXlsb2FkKCkpLAotICAgICAgICAgICAgICAgIEFz
c2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7Ci0jZW5kaWYKKyAgICAgICAgICAg
IGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgcmVjb3ZlcnkuY29uc3RhbnQoKSk7CiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICBjYXNlIERpcmVjdEFyZ3VtZW50c1RoYXRXZXJlTm90Q3Jl
YXRlZDoKQEAgLTY4MywxMyArODQwLDMyIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0Nh
bGxIZWxwZXJzJiAKICAgICAgICAgfQogICAgIH0KIAorLy8gbWxhbSBNT1ZFRCBmcm9tIGFib3Zl
LgorICAgIC8vIE5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHN0YWNrIHBvaW50ZXIgYWNjb3VudHMg
Zm9yIHRoZSB3b3JzdC1jYXNlIHN0YWNrIHVzYWdlIGF0IGV4aXQuIFRoaXMKKyAgICAvLyBjb3Vs
ZCB0b2FzdCBzb21lIHN0YWNrIHRoYXQgdGhlIERGRyB1c2VkLiBXZSBuZWVkIHRvIGRvIGl0IGJl
Zm9yZSBzdG9yaW5nIHRvIHN0YWNrIG9mZnNldHMKKyAgICAvLyB1c2VkIGJ5IGJhc2VsaW5lLgor
ICAgIGNwdS5zcCgpID0gY3B1LmZwPHVpbnQ4X3QqPigpIC0gKGNvZGVCbG9jay0+aml0Q29kZSgp
LT5kZmdDb21tb24oKS0+cmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhpdCAqIHNpemVvZihSZWdp
c3RlcikpOworCisjaWYgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgPiAwCisgICAg
Ly8gUmVzdG9yZSB0aGUgREZHIGNhbGxlZSBzYXZlcyBhbmQgdGhlbiBzYXZlIHRoZSBvbmVzIHRo
ZSBiYXNlbGluZSBKSVQgdXNlcy4KKyAgICByZXN0b3JlQ2FsbGVlU2F2ZXNGb3IoY29udGV4dCwg
Y29kZUJsb2NrKTsKKyAgICBzYXZlQ2FsbGVlU2F2ZXNGb3IoY29udGV4dCwgYmFzZWxpbmVDb2Rl
QmxvY2spOworCisgICAgLy8gVGhlIHRhZyByZWdpc3RlcnMgYXJlIG5lZWRlZCB0byBtYXRlcmlh
bGl6ZSByZWNvdmVyaWVzIGJlbG93LgorICAgIG1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMo
Y3B1KTsKKworICAgIGlmIChleGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpKQorICAgICAgICBjb3B5
Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKGNvbnRleHQsIHZtKTsK
KyNlbmRpZiAvLyBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKKy8vIG1sYW0g
TU9WRUQgZnJvbSBhYm92ZS4KKwogICAgIC8vIE5vdyB0aGF0IHRoaW5ncyBvbiB0aGUgc3RhY2sg
YXJlIHJlY292ZXJlZCwgZG8gdGhlIGFyZ3VtZW50cyByZWNvdmVyeS4gV2UgYXNzdW1lIHRoYXQg
YXJndW1lbnRzCiAgICAgLy8gcmVjb3ZlcmllcyBkb24ndCByZWN1cnNpdmVseSByZWZlciB0byBl
YWNoIG90aGVyLiBCdXQsIHdlIGRvbid0IHRyeSB0byBhc3N1bWUgdGhhdCB0aGV5IG9ubHkKICAg
ICAvLyByZWZlciB0byBjZXJ0YWluIHJhbmdlcyBvZiBsb2NhbHMuIEhlbmNlIHdoeSB3ZSBuZWVk
IHRvIGRvIHRoaXMgaGVyZSwgb25jZSB0aGUgc3RhY2sgaXMgc2Vuc2libGUuCiAgICAgLy8gTm90
ZSB0aGF0IHdlIGFsc28gcm91Z2hseSBhc3N1bWUgdGhhdCB0aGUgYXJndW1lbnRzIG1pZ2h0IHN0
aWxsIGJlIG1hdGVyaWFsaXplZCBvdXRzaWRlIG9mIGl0cwogICAgIC8vIGlubGluZSBjYWxsIGZy
YW1lIHNjb3BlIC0gYnV0IGZvciBub3cgdGhlIERGRyB3b3VsZG4ndCBkbyB0aGF0LgogCi0gICAg
ZW1pdFJlc3RvcmVBcmd1bWVudHMoaml0LCBvcGVyYW5kcyk7CisgICAgZW1pdFJlc3RvcmVBcmd1
bWVudHMoY29udGV4dCwgY29kZUJsb2NrLCBvcGVyYW5kcyk7CiAKICAgICAvLyBBZGp1c3QgdGhl
IG9sZCBKSVQncyBleGVjdXRlIGNvdW50ZXIuIFNpbmNlIHdlIGFyZSBleGl0aW5nIE9TUiwgd2Ug
a25vdwogICAgIC8vIHRoYXQgYWxsIG5ldyBjYWxscyBpbnRvIHRoaXMgY29kZSB3aWxsIGdvIHRv
IHRoZSBuZXcgSklULCBzbyB0aGUgZXhlY3V0ZQpAQCAtNzI3LDI2ICs5MDMsMjgwIEBAIHZvaWQg
T1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAvLyBjb3VudGVyIHRvIDA7
IG90aGVyd2lzZSB3ZSBzZXQgdGhlIGNvdW50ZXIgdG8KICAgICAvLyBjb3VudGVyVmFsdWVGb3JP
cHRpbWl6ZUFmdGVyV2FybVVwKCkuCiAKLSAgICBoYW5kbGVFeGl0Q291bnRzKGppdCwgZXhpdCk7
CisgICAgaGFuZGxlRXhpdENvdW50cyhjb2RlQmxvY2ssIGJhc2VsaW5lQ29kZUJsb2NrLCBleGl0
KTsKIAogICAgIC8vIFJlaWZ5IGlubGluZWQgY2FsbCBmcmFtZXMuCiAKLSAgICByZWlmeUlubGlu
ZWRDYWxsRnJhbWVzKGppdCwgZXhpdCk7CisgICAgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhjb250
ZXh0LCBiYXNlbGluZUNvZGVCbG9jaywgZXhpdCk7CiAKICAgICAvLyBBbmQgZmluaXNoLgotICAg
IGFkanVzdEFuZEp1bXBUb1RhcmdldCh2bSwgaml0LCBleGl0KTsKKyAgICBhZGp1c3RBbmRKdW1w
VG9UYXJnZXQoY29udGV4dCwgdm0sIGNvZGVCbG9jaywgYmFzZWxpbmVDb2RlQmxvY2ssIGV4aXQp
OworfQorCit2b2lkIGhhbmRsZUV4aXRDb3VudHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVC
bG9jayogYmFzZWxpbmVDb2RlQmxvY2ssIE9TUkV4aXRCYXNlJiBleGl0KQoreworICAgIGV4aXQu
bV9jb3VudCsrOworCisgICAgaWYgKCFleGl0S2luZE1heUpldHRpc29uKGV4aXQubV9raW5kKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgY29kZUJsb2NrLT5jb3VudE9TUkV4aXQoKTsKKworICAg
IC8vIEFkanVzdCB0aGUgZXhlY3V0aW9uIGNvdW50ZXIgc3VjaCB0aGF0IHRoZSB0YXJnZXQgaXMg
dG8gb25seSBvcHRpbWl6ZSBhZnRlciBhIHdoaWxlLgorICAgIGludDMyX3QgYWN0aXZlVGhyZXNo
b2xkID0gYmFzZWxpbmVDb2RlQmxvY2stPmFkanVzdGVkQ291bnRlclZhbHVlKE9wdGlvbnM6OnRo
cmVzaG9sZEZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKCkpOworCisgICAgaW50MzJfdCB0YXJn
ZXRWYWx1ZSA9IGFwcGx5TWVtb3J5VXNhZ2VIZXVyaXN0aWNzQW5kQ29udmVydFRvSW50KGFjdGl2
ZVRocmVzaG9sZCwgYmFzZWxpbmVDb2RlQmxvY2spOworICAgIGludDMyX3QgY2xpcHBlZFZhbHVl
OworCisgICAgc3dpdGNoIChjb2RlQmxvY2stPmppdFR5cGUoKSkgeworICAgIGNhc2UgSklUQ29k
ZTo6REZHSklUOgorICAgICAgICBjbGlwcGVkVmFsdWUgPSBCYXNlbGluZUV4ZWN1dGlvbkNvdW50
ZXI6OmNsaXBwZWRUaHJlc2hvbGQoY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgdGFyZ2V0VmFs
dWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEpJVENvZGU6OkZUTEpJVDoKKyAgICAgICAg
Y2xpcHBlZFZhbHVlID0gVXBwZXJUaWVyRXhlY3V0aW9uQ291bnRlcjo6Y2xpcHBlZFRocmVzaG9s
ZChjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCB0YXJnZXRWYWx1ZSk7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisj
aWYgQ09NUElMRVJfUVVJUksoQ09OU0lERVJTX1VOUkVBQ0hBQkxFX0NPREUpCisgICAgICAgIGNs
aXBwZWRWYWx1ZSA9IDA7IC8vIE1ha2Ugc29tZSBjb21waWxlcnMsIGFuZCBtaGFobmVuYmVyZywg
aGFwcHkuCisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKExJS0VMWShi
YXNlbGluZUNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKS5tX2NvdW50ZXIgPCAwKSkgewor
CisgICAgICAgIC8vIFdlIHdhbnQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGEgcG9zc2liaWxp
dHkgdGhhdCB3ZSdyZSBpbiBhIGxvb3AuIEZvciB0aGUgb3V0ZXJtb3N0CisgICAgICAgIC8vIGNv
ZGUgYmxvY2sgaW4gdGhlIGlubGluZSBzdGFjaywgd2UgaGFuZGxlIHRoaXMgYXBwcm9wcmlhdGVs
eSBieSBoYXZpbmcgdGhlIGxvb3AgT1NSIHRyaWdnZXIKKyAgICAgICAgLy8gY2hlY2sgdGhlIGV4
aXQgY291bnQgb2YgdGhlIHJlcGxhY2VtZW50IG9mIHRoZSBDb2RlQmxvY2sgZnJvbSB3aGljaCB3
ZSBhcmUgT1NSaW5nLiBUaGUKKyAgICAgICAgLy8gcHJvYmxlbSBpcyB0aGUgaW5saW5lZCBmdW5j
dGlvbnMsIHdoaWNoIG1pZ2h0IGFsc28gaGF2ZSBsb29wcywgYnV0IHdob3NlIGJhc2VsaW5lIHZl
cnNpb25zCisgICAgICAgIC8vIGRvbid0IGtub3cgd2hlcmUgdG8gbG9vayBmb3IgdGhlIGV4aXQg
Y291bnQuIEZpZ3VyZSBvdXQgaWYgdGhvc2UgbG9vcHMgYXJlIHNldmVyZSBlbm91Z2gKKyAgICAg
ICAgLy8gdGhhdCB3ZSBoYWQgdHJpZWQgdG8gT1NSIGVudGVyLiBJZiBzbywgdGhlbiB3ZSBzaG91
bGQgdXNlIHRoZSBsb29wIHJlb3B0aW1pemF0aW9uIHRyaWdnZXIuCisgICAgICAgIC8vIE90aGVy
d2lzZSwgd2Ugc2hvdWxkIHVzZSB0aGUgbm9ybWFsIHJlb3B0aW1pemF0aW9uIHRyaWdnZXIuCisK
KyAgICAgICAgYm9vbCBkaWRUcnlUb0VudGVySW5Mb29wID0gZmFsc2U7CisgICAgICAgIGZvciAo
SW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBleGl0Lm1fY29kZU9yaWdpbi5pbmxp
bmVDYWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1lID0gaW5saW5lQ2Fs
bEZyYW1lLT5kaXJlY3RDYWxsZXIuaW5saW5lQ2FsbEZyYW1lKSB7CisgICAgICAgICAgICBpZiAo
aW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxl
KCktPmRpZFRyeVRvRW50ZXJJbkxvb3AoKSkgeworICAgICAgICAgICAgICAgIGRpZFRyeVRvRW50
ZXJJbkxvb3AgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgdWludDMyX3QgdGhyZXNob2xkID0gZGlkVHJ5VG9FbnRlcklu
TG9vcAorICAgICAgICAgICAgPyBjb2RlQmxvY2stPmV4aXRDb3VudFRocmVzaG9sZEZvclJlb3B0
aW1pemF0aW9uRnJvbUxvb3AoKQorICAgICAgICAgICAgOiBjb2RlQmxvY2stPmV4aXRDb3VudFRo
cmVzaG9sZEZvclJlb3B0aW1pemF0aW9uKCk7CisKKyAgICAgICAgaWYgKGNvZGVCbG9jay0+b3Ny
RXhpdENvdW50ZXIoKSA8PSB0aHJlc2hvbGQpIHsKKyAgICAgICAgICAgIGNvZGVCbG9jay0+bV9q
aXRFeGVjdXRlQ291bnRlci5tX2NvdW50ZXIgPSAtY2xpcHBlZFZhbHVlOworICAgICAgICAgICAg
Y29kZUJsb2NrLT5tX2ppdEV4ZWN1dGVDb3VudGVyLm1fYWN0aXZlVGhyZXNob2xkID0gYWN0aXZl
VGhyZXNob2xkOworICAgICAgICAgICAgY29kZUJsb2NrLT5tX2ppdEV4ZWN1dGVDb3VudGVyLm1f
dG90YWxDb3VudCA9IGZvcm1hdHRlZFRvdGFsRXhlY3V0aW9uQ291bnQoY2xpcHBlZFZhbHVlKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHRyaWdnZXJSZW9w
dGltaXphdGlvbk5vdyhjb2RlQmxvY2ssICZleGl0KTsKK30KKwordm9pZCByZWlmeUlubGluZWRD
YWxsRnJhbWVzKENvbnRleHQmIGNvbnRleHQsIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2ss
IGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQoreworICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1
OworICAgIGF1dG8mIHN0YWNrID0gY29udGV4dC5zdGFjaygpOworICAgIFByb2JlOjpGcmFtZSBm
cmFtZShjb250ZXh0KTsKKworICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgbGVhdmUgaG9sZXMg
b24gdGhlIHN0YWNrIHdoZW4gcGVyZm9ybWluZyBhbiBPU1IgZXhpdAorICAgIC8vIGluIHByZXNl
bmNlIG9mIGlubGluZWQgdGFpbCBjYWxscy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NTExCisgICAgQVNTRVJUKGJhc2VsaW5lQ29kZUJsb2NrLT5q
aXRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworLy8gICAgaml0LnN0b3JlUHRyKEFz
c2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuYmFzZWxpbmVDb2RlQmxvY2soKSksIEFz
c2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcigoVmlydHVhbFJlZ2lzdGVyKUNhbGxGcmFtZVNsb3Q6
OmNvZGVCbG9jaykpOworICAgIGZyYW1lLnNldE9wZXJhbmQ8Q29kZUJsb2NrKj4oQ2FsbEZyYW1l
U2xvdDo6Y29kZUJsb2NrLCBiYXNlbGluZUNvZGVCbG9jayk7CisKKyAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IGNwdS5mcDxDYWxsRnJhbWUqPigpOyAvLyBtbGFtCisgICAgY29uc3QgQ29kZU9y
aWdpbiogY29kZU9yaWdpbjsKKyAgICBmb3IgKGNvZGVPcmlnaW4gPSAmZXhpdC5tX2NvZGVPcmln
aW47IGNvZGVPcmlnaW4gJiYgY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lOyBjb2RlT3JpZ2lu
ID0gY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lLT5nZXRDYWxsZXJTa2lwcGluZ1RhaWxDYWxs
cygpKSB7CisgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gY29kZU9y
aWdpbi0+aW5saW5lQ2FsbEZyYW1lOworICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJs
b2NrID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrRm9yKCpjb2RlT3JpZ2luKTsKKyAgICAgICAgSW5s
aW5lQ2FsbEZyYW1lOjpLaW5kIHRydWVDYWxsZXJDYWxsS2luZDsKKyAgICAgICAgQ29kZU9yaWdp
biogdHJ1ZUNhbGxlciA9IGlubGluZUNhbGxGcmFtZS0+Z2V0Q2FsbGVyU2tpcHBpbmdUYWlsQ2Fs
bHMoJnRydWVDYWxsZXJDYWxsS2luZCk7CisvLyAgICAgICAgR1BSUmVnIGNhbGxlckZyYW1lR1BS
ID0gR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXI7CisvLyAgICAgICAgQ2FsbEZyYW1lKiBjYWxs
ZXJGcmFtZSA9IGNhbGxGcmFtZTsKKworICAgICAgICBpZiAoIXRydWVDYWxsZXIpIHsKKyAgICAg
ICAgICAgIEFTU0VSVChpbmxpbmVDYWxsRnJhbWUtPmlzVGFpbCgpKTsKKy8vICAgICAgICAgICAg
aml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkpLCBHUFJJbmZvOjpyZWdUMyk7Cisg
ICAgICAgICAgICBhdXRvIHJldHVyblBDID0gY2FsbEZyYW1lLT5yZXR1cm5QQygpOworLy8gICAg
ICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6cmVnVDMsIEFzc2VtYmx5SGVscGVyczo6YWRk
cmVzc0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpKSk7Cisg
ICAgICAgICAgICBmcmFtZS5zZXQoaW5saW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpLCBy
ZXR1cm5QQyk7CisgICAgICAgICAgICBfaW5saW5lQ2FsbEZyYW1lID0gY3B1LmZwPHVpbnQ4X3Qq
PigpICsgaW5saW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpOworLy8gICAgICAgICAgICBq
aXQubG9hZFB0cihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIENhbGxGcmFtZTo6Y2FsbGVyRnJhbWVPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QzKTsK
Ky8vICAgICAgICAgICAgY2FsbGVyRnJhbWVHUFIgPSBHUFJJbmZvOjpyZWdUMzsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxs
ZXIgPSBqaXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoKnRydWVDYWxsZXIpOworICAgICAgICAgICAg
dW5zaWduZWQgY2FsbEJ5dGVjb2RlSW5kZXggPSB0cnVlQ2FsbGVyLT5ieXRlY29kZUluZGV4Owor
ICAgICAgICAgICAgdm9pZCoganVtcFRhcmdldCA9IG51bGxwdHI7CisKKyAgICAgICAgICAgIHN3
aXRjaCAodHJ1ZUNhbGxlckNhbGxLaW5kKSB7CisgICAgICAgICAgICBjYXNlIElubGluZUNhbGxG
cmFtZTo6Q2FsbDoKKyAgICAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDb25zdHJ1Y3Q6
CisgICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q2FsbFZhcmFyZ3M6CisgICAgICAg
ICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q29uc3RydWN0VmFyYXJnczoKKyAgICAgICAgICAg
IGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpUYWlsQ2FsbDoKKyAgICAgICAgICAgIGNhc2UgSW5saW5l
Q2FsbEZyYW1lOjpUYWlsQ2FsbFZhcmFyZ3M6IHsKKyAgICAgICAgICAgICAgICBDYWxsTGlua0lu
Zm8qIGNhbGxMaW5rSW5mbyA9CisgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lQ29kZUJsb2Nr
Rm9yQ2FsbGVyLT5nZXRDYWxsTGlua0luZm9Gb3JCeXRlY29kZUluZGV4KGNhbGxCeXRlY29kZUlu
ZGV4KTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsTGlua0luZm8pOworCisg
ICAgICAgICAgICAgICAganVtcFRhcmdldCA9IGNhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0
aW9uKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OkdldHRlckNhbGw6
CisgICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6U2V0dGVyQ2FsbDogeworICAgICAg
ICAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9CisgICAgICAgICAgICAgICAg
ICAgIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5maW5kU3R1YkluZm8oQ29kZU9yaWdpbihj
YWxsQnl0ZWNvZGVJbmRleCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0dWJJ
bmZvKTsKKworICAgICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBzdHViSW5mby0+ZG9uZUxvY2F0
aW9uKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
dHJ1ZUNhbGxlci0+aW5saW5lQ2FsbEZyYW1lKSB7CisvLyAgICAgICAgICAgICAgICBqaXQuYWRk
UHRyKAorLy8gICAgICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMy
KHRydWVDYWxsZXItPmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKiBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpKSwKKy8vICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwKKy8vICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMyk7CisvLyAgICAgICAg
ICAgICAgICBjYWxsZXJGcmFtZUdQUiA9IEdQUkluZm86OnJlZ1QzOworICAgICAgICAgICAgICAg
IF9pbmxpbmVDYWxsRnJhbWUgPSBjcHUuZnA8dWludDhfdCo+KCkgKyB0cnVlQ2FsbGVyLT5pbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKKyAgICAg
ICAgICAgIH0KKworLy8gICAgICAgICAgICBqaXQuc3RvcmVQdHIoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGp1bXBUYXJnZXQpLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3JCeXRl
T2Zmc2V0KGlubGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSkpOworICAgICAgICAgICAg
ZnJhbWUuc2V0KGlubGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSwganVtcFRhcmdldCk7
CisgICAgICAgIH0KKworLy8gICAgICAgIGppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoYmFzZWxpbmVDb2RlQmxvY2spLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NG
b3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxG
cmFtZVNsb3Q6OmNvZGVCbG9jaykpKTsKKyAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChpbmxpbmVD
YWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrLCBiYXNlbGlu
ZUNvZGVCbG9jayk7CisKKyNpZiBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAK
KyAgICAgICAgLy8gUmVzdG9yZSB0aGUgaW5saW5lIGNhbGwgZnJhbWUncyBjYWxsZWUgc2F2ZSBy
ZWdpc3RlcnMuCisgICAgICAgIC8vIElmIHRoaXMgaW5saW5lZCBmcmFtZSBpcyBhIHRhaWwgY2Fs
bCB0aGF0IHdpbGwgcmV0dXJuIGJhY2sgdG8gdGhlIG9yaWdpbmFsIGNhbGxlciwgd2UgbmVlZCB0
bworICAgICAgICAvLyBjb3B5IHRoZSBwcmlvciBjb250ZW50cyBvZiB0aGUgdGFnIHJlZ2lzdGVy
cyBhbHJlYWR5IHNhdmVkIGZvciB0aGUgb3V0ZXIgZnJhbWUgdG8gdGhpcyBmcmFtZS4KKyAgICAg
ICAgc2F2ZU9yQ29weUNhbGxlZVNhdmVzRm9yKGNvbnRleHQsIGJhc2VsaW5lQ29kZUJsb2NrLCBz
dGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQp
LCAhdHJ1ZUNhbGxlcik7CisjZW5kaWYKKworICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZS0+
aXNWYXJhcmdzKCkpCisvLyAgICAgICAgICAgIGppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSksIEFzc2VtYmx5
SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKKyAgICAgICAgICAg
IGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQg
KyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBQYXlsb2FkT2Zmc2V0LCBpbmxpbmVDYWxs
RnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpOworI2lmIFVTRShKU1ZBTFVFNjQpCisvLyAgICAgICAg
IGppdC5zdG9yZTY0KGNhbGxlckZyYW1lR1BSLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3JC
eXRlT2Zmc2V0KGlubGluZUNhbGxGcmFtZS0+Y2FsbGVyRnJhbWVPZmZzZXQoKSkpOworICAgICAg
ICBmcmFtZS5zZXQoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXJGcmFtZU9mZnNldCgpLCBjYWxsZXJG
cmFtZSk7CisgICAgICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoY29k
ZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleCkuYml0cygpOworLy8gICAgICAgICBqaXQuc3RvcmUzMihB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCBBc3NlbWJseUhlbHBl
cnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0
ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKKyAgICAgICAgZnJhbWUuc2V0T3Bl
cmFuZDx1aW50MzJfdD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnQsIFRhZ09mZnNldCwgbG9jYXRpb25CaXRzKTsKKyAgICAgICAgaWYg
KCFpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpCisvLyAgICAgICAgICAgICBqaXQuc3Rv
cmU2NChBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZShpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZUNvbnN0YW50KCkpKSksIEFzc2VtYmx5SGVscGVyczo6
YWRkcmVzc0ZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0
ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSkpOworICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFu
ZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBK
U1ZhbHVlKGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29uc3RhbnQoKSkpOworI2Vsc2UgLy8gVVNF
KEpTVkFMVUU2NCkgLy8gc28gdGhpcyBpcyB0aGUgMzItYml0IHBhcnQKKy8vICAgICAgICAgaml0
LnN0b3JlUHRyKGNhbGxlckZyYW1lR1BSLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3JCeXRl
T2Zmc2V0KGlubGluZUNhbGxGcmFtZS0+Y2FsbGVyRnJhbWVPZmZzZXQoKSkpOworICAgICAgICBm
cmFtZS5zZXQoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXJGcmFtZU9mZnNldCgpLCBjYWxsZXJGcmFt
ZSk7CisgICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGJhc2VsaW5lQ29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleDsKKyAg
ICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChpbnN0cnVjdGlvbiku
Yml0cygpOworLy8gICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihsb2NhdGlvbkJpdHMpLCBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lz
dGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudCkpKTsKKyAgICAgICAgZnJhbWUuc2V0T3BlcmFuZDx1aW50MzJfdD4oaW5saW5lQ2Fs
bEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIFRhZ09m
ZnNldCwgbG9jYXRpb25CaXRzKTsKKy8vICAgICAgICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIEFzc2VtYmx5SGVscGVyczo6dGFn
Rm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxs
RnJhbWVTbG90OjpjYWxsZWUpKSk7CisgICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+
KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUsIFRh
Z09mZnNldCwgSlNWYWx1ZTo6Q2VsbFRhZyk7CisgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1l
LT5pc0Nsb3N1cmVDYWxsKQorLy8gICAgICAgICAgICAgaml0LnN0b3JlUHRyKEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbVB0cihpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZUNvbnN0YW50KCkpLCBB
c3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZy
YW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkpKTsKKyAgICAgICAgICAg
IGZyYW1lLnNldE9wZXJhbmQoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSwgUGF5bG9hZE9mZnNldCwgaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVDb25z
dGFudCgpKTsKKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KSAvLyBlbmRpbmcgdGhlICNlbHNlIHBh
cnQsIHNvIGRpcmVjdGx5IGFib3ZlIGlzIHRoZSAzMi1iaXQgcGFydAorICAgIH0KKworICAgIC8v
IERvbid0IG5lZWQgdG8gc2V0IHRoZSB0b3BsZXZlbCBjb2RlIG9yaWdpbiBpZiB3ZSBvbmx5IGRp
ZCBpbmxpbmUgdGFpbCBjYWxscworICAgIGlmIChjb2RlT3JpZ2luKSB7CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChjb2Rl
T3JpZ2luLT5ieXRlY29kZUluZGV4KS5iaXRzKCk7CisjZWxzZQorICAgICAgICBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24gPSBqaXQuYmFzZWxpbmVDb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCku
YmVnaW4oKSArIGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXg7CisgICAgICAgIHVpbnQzMl90IGxv
Y2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoaW5zdHJ1Y3Rpb24pLmJpdHMoKTsKKyNlbmRpZgor
Ly8gICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihsb2Nh
dGlvbkJpdHMpLCBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lzdGVyKShDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOworICAgICAgICBmcmFtZS5zZXRPcGVyYW5kPHVp
bnQzMl90PihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBUYWdPZmZzZXQsIGxvY2F0aW9u
Qml0cyk7CisgICAgfQogfQogCi12b2lkIEpJVF9PUEVSQVRJT04gT1NSRXhpdDo6ZGVidWdPcGVy
YXRpb25QcmludFNwZWN1bGF0aW9uRmFpbHVyZShFeGVjU3RhdGUqIGV4ZWMsIHZvaWQqIGRlYnVn
SW5mb1Jhdywgdm9pZCogc2NyYXRjaCkKK3ZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KENvbnRl
eHQmIGNvbnRleHQsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVCbG9jayogYmFz
ZWxpbmVDb2RlQmxvY2ssIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogewotICAgIFZNKiB2bSA9
ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMp
OworICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OworCisgICAgLy8gRklYTUU6IFdoeSBkbyB3
ZSBuZWVkIHRvIHdyaXRlIGJhcnJpZXIgdGhlIGNvZGVCbG9ja3M/ICBTaG91bGRuJ3QgdGhleSBi
ZSBzY2FubmVkIGZyb20gdGhlIHN0YWNrPworLy8gICAgaml0Lm1lbW9yeUZlbmNlKCk7CisvLyAg
ICBzdG9yZVN0b3JlRmVuY2UoKTsgLy8gbWxhbSBJIHRoaW5rIHRoaXMgaXMgbm90IG5lZWRlZC4K
KworLy8gICAgIGppdC5tb3ZlKAorLy8gICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoCisvLyAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmJhc2VsaW5lQWx0ZXJuYXRp
dmUoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisKKy8vICAgIG9zcldyaXRlQmFycmllcihq
aXQsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisvLyAgICBv
c3JXcml0ZUJhcnJpZXIoY29udGV4dCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICB2bS5o
ZWFwLndyaXRlQmFycmllcihiYXNlbGluZUNvZGVCbG9jayk7CisKKyAgICAvLyBXZSBiYXJyaWVy
IGFsbCBpbmxpbmVkIGZyYW1lcyAtLSBhbmQgbm90IGp1c3QgdGhlIGN1cnJlbnQgaW5saW5lIHN0
YWNrIC0tCisgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCBrbm93IHdoaWNoIGlubGluZWQgZnVuY3Rp
b24gb3ducyB0aGUgdmFsdWUgcHJvZmlsZSB0aGF0CisgICAgLy8gd2UnbGwgdXBkYXRlIHdoZW4g
d2UgZXhpdC4gSW4gdGhlIGNhc2Ugb2YgImYoKSB7IGEoKTsgYigpOyB9IiwgaWYgYm90aAorICAg
IC8vIGEgYW5kIGIgYXJlIGlubGluZWQsIHdlIG1pZ2h0IGV4aXQgaW5zaWRlIGIgZHVlIHRvIGEg
YmFkIHZhbHVlIGxvYWRlZAorICAgIC8vIGZyb20gYS4KKyAgICAvLyBGSVhNRTogTWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZSBzaG91bGQgcmVtZW1iZXIgd2hpY2ggQ29kZUJsb2NrIG93bnMK
KyAgICAvLyB0aGUgdmFsdWUgcHJvZmlsZS4KKyAgICBJbmxpbmVDYWxsRnJhbWVTZXQqIGlubGlu
ZUNhbGxGcmFtZXMgPSBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPmlubGluZUNh
bGxGcmFtZXMuZ2V0KCk7CisgICAgaWYgKGlubGluZUNhbGxGcmFtZXMpIHsKKyAgICAgICAgZm9y
IChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA6ICppbmxpbmVDYWxsRnJhbWVzKSB7
CisvLyAgICAgICAgICAgIGppdC5tb3ZlKAorLy8gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKAorLy8gICAgICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFt
ZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworLy8g
ICAgICAgICAgICBvc3JXcml0ZUJhcnJpZXIoaml0LCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQ
UkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoaW5s
aW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5nZXQoKSk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAoZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQorLy8gICAgICAg
IGppdC5hZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZXhpdC5tX2NvZGVPcmln
aW4uaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkp
LCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGNwdS5mcCgpID0gY3B1LmZw
PHVpbnQ4X3QqPigpICsgZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5zdGFja09m
ZnNldCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CisKKy8vICAgIENvZGVCbG9jayogY29kZUJs
b2NrRm9yRXhpdCA9IGppdC5iYXNlbGluZUNvZGVCbG9ja0ZvcihleGl0Lm1fY29kZU9yaWdpbik7
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JFeGl0ID1iYXNlbGluZUNvZGVCbG9ja0Zvck9y
aWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKGV4aXQubV9jb2RlT3JpZ2luLCBiYXNlbGluZUNvZGVC
bG9jayk7CisgICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4mIGRlY29kZWRDb2Rl
TWFwID0gaml0LmRlY29kZWRDb2RlTWFwRm9yKGNvZGVCbG9ja0ZvckV4aXQpOworCisgICAgQnl0
ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0KiBtYXBwaW5nID0gYmluYXJ5U2VhcmNoPEJ5dGVjb2RlQW5k
TWFjaGluZU9mZnNldCwgdW5zaWduZWQ+KGRlY29kZWRDb2RlTWFwLCBkZWNvZGVkQ29kZU1hcC5z
aXplKCksIGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIEJ5dGVjb2RlQW5kTWFjaGlu
ZU9mZnNldDo6Z2V0Qnl0ZWNvZGVJbmRleCk7CisKKyAgICBBU1NFUlQobWFwcGluZyk7CisgICAg
QVNTRVJUKG1hcHBpbmctPm1fYnl0ZWNvZGVJbmRleCA9PSBleGl0Lm1fY29kZU9yaWdpbi5ieXRl
Y29kZUluZGV4KTsKKworICAgIHZvaWQqIGp1bXBUYXJnZXQgPSBjb2RlQmxvY2tGb3JFeGl0LT5q
aXRDb2RlKCktPmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQobWFwcGluZy0+bV9tYWNoaW5lQ29k
ZU9mZnNldCk7CisKKy8vICAgIGppdC5hZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoSklUOjpzdGFja1BvaW50ZXJPZmZzZXRGb3IoY29kZUJsb2NrRm9yRXhpdCkgKiBzaXplb2Yo
UmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEFzc2VtYmx5SGVscGVyczo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIGNwdS5zcCgpID0gY3B1LmZwPHVpbnQ4X3QqPigp
ICsgSklUOjpzdGFja1BvaW50ZXJPZmZzZXRGb3IoY29kZUJsb2NrRm9yRXhpdCkgKiBzaXplb2Yo
UmVnaXN0ZXIpOworICAgIGlmIChleGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpKSB7CisgICAgICAg
IC8vIFNpbmNlIHdlJ3JlIGp1bXBpbmcgdG8gb3BfY2F0Y2gsIHdlIG5lZWQgdG8gc2V0IGNhbGxG
cmFtZUZvckNhdGNoLgorLy8gICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3Rlciwgdm0uYWRkcmVzc09mQ2FsbEZyYW1lRm9yQ2F0Y2goKSk7CisgICAgICAgIHZtLmNh
bGxGcmFtZUZvckNhdGNoID0gY3B1LmZwPEV4ZWNTdGF0ZSo+KCk7CisgICAgfQorCisvLyAgICBq
aXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdldCksIEdQUklu
Zm86OnJlZ1QyKTsKKy8vICAgIGppdC5qdW1wKEdQUkluZm86OnJlZ1QyKTsKKyAgICBjcHUucGMo
KSA9IGp1bXBUYXJnZXQ7Cit9CiAKLSAgICBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8qIGRl
YnVnSW5mbyA9IHN0YXRpY19jYXN0PFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbyo+KGRlYnVn
SW5mb1Jhdyk7Ci0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBkZWJ1Z0luZm8tPmNvZGVCbG9j
azsKK3N0YXRpYyB2b2lkIHByaW50T1NSRXhpdChDUFVTdGF0ZSYgY3B1LCB1aW50MzJfdCBvc3JF
eGl0SW5kZXgsIGNvbnN0IE9TUkV4aXQmIGV4aXQpCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0g
Y3B1LmZwPEV4ZWNTdGF0ZSo+KCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5j
b2RlQmxvY2soKTsKICAgICBDb2RlQmxvY2sqIGFsdGVybmF0aXZlID0gY29kZUJsb2NrLT5hbHRl
cm5hdGl2ZSgpOworICAgIEV4aXRLaW5kIGtpbmQgPSBleGl0Lm1fa2luZDsKKyAgICB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCA9IGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXg7CisKICAg
ICBkYXRhTG9nKCJTcGVjdWxhdGlvbiBmYWlsdXJlIGluICIsICpjb2RlQmxvY2spOwotICAgIGRh
dGFMb2coIiBAIGV4aXQgIyIsIHZtLT5vc3JFeGl0SW5kZXgsICIgKGJjIyIsIGRlYnVnSW5mby0+
Ynl0ZWNvZGVPZmZzZXQsICIsICIsIGV4aXRLaW5kVG9TdHJpbmcoZGVidWdJbmZvLT5raW5kKSwg
Iikgd2l0aCAiKTsKKyAgICBkYXRhTG9nKCIgQCBleGl0ICMiLCBvc3JFeGl0SW5kZXgsICIgKGJj
IyIsIGJ5dGVjb2RlT2Zmc2V0LCAiLCAiLCBleGl0S2luZFRvU3RyaW5nKGtpbmQpLCAiKSB3aXRo
ICIpOwogICAgIGlmIChhbHRlcm5hdGl2ZSkgewogICAgICAgICBkYXRhTG9nKAogICAgICAgICAg
ICAgImV4ZWN1dGVDb3VudGVyID0gIiwgYWx0ZXJuYXRpdmUtPmppdEV4ZWN1dGVDb3VudGVyKCks
CkBAIC03NTYsMjEgKzExODYsMTggQEAgdm9pZCBKSVRfT1BFUkFUSU9OIE9TUkV4aXQ6OmRlYnVn
T3BlcmF0aQogICAgICAgICBkYXRhTG9nKCJubyBhbHRlcm5hdGl2ZSBjb2RlIGJsb2NrIChpLmUu
IHdlJ3ZlIGJlZW4gamV0dGlzb25lZCkiKTsKICAgICBkYXRhTG9nKCIsIG9zckV4aXRDb3VudGVy
ID0gIiwgY29kZUJsb2NrLT5vc3JFeGl0Q291bnRlcigpLCAiXG4iKTsKICAgICBkYXRhTG9nKCIg
ICAgR1BScyBhdCB0aW1lIG9mIGV4aXQ6Iik7Ci0gICAgY2hhciogc2NyYXRjaFBvaW50ZXIgPSBz
dGF0aWNfY2FzdDxjaGFyKj4oc2NyYXRjaCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKICAgICAgICAgR1BSUmVnIGdwciA9
IEdQUkluZm86OnRvUmVnaXN0ZXIoaSk7Ci0gICAgICAgIGRhdGFMb2coIiAiLCBHUFJJbmZvOjpk
ZWJ1Z05hbWUoZ3ByKSwgIjoiLCBSYXdQb2ludGVyKCpyZWludGVycHJldF9jYXN0X3B0cjx2b2lk
Kio+KHNjcmF0Y2hQb2ludGVyKSkpOwotICAgICAgICBzY3JhdGNoUG9pbnRlciArPSBzaXplb2Yo
RW5jb2RlZEpTVmFsdWUpOworICAgICAgICBkYXRhTG9nKCIgIiwgY3B1Lmdwck5hbWUoZ3ByKSwg
IjoiLCBSYXdQb2ludGVyKGNwdS5ncHI8dm9pZCo+KGdwcikpKTsKICAgICB9CiAgICAgZGF0YUxv
ZygiXG4iKTsKICAgICBkYXRhTG9nKCIgICAgRlBScyBhdCB0aW1lIG9mIGV4aXQ6Iik7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kp
IHsKICAgICAgICAgRlBSUmVnIGZwciA9IEZQUkluZm86OnRvUmVnaXN0ZXIoaSk7Ci0gICAgICAg
IGRhdGFMb2coIiAiLCBGUFJJbmZvOjpkZWJ1Z05hbWUoZnByKSwgIjoiKTsKLSAgICAgICAgdWlu
dDY0X3QgYml0cyA9ICpyZWludGVycHJldF9jYXN0X3B0cjx1aW50NjRfdCo+KHNjcmF0Y2hQb2lu
dGVyKTsKLSAgICAgICAgZG91YmxlIHZhbHVlID0gKnJlaW50ZXJwcmV0X2Nhc3RfcHRyPGRvdWJs
ZSo+KHNjcmF0Y2hQb2ludGVyKTsKKyAgICAgICAgZGF0YUxvZygiICIsIGNwdS5mcHJOYW1lKGZw
ciksICI6Iik7CisgICAgICAgIHVpbnQ2NF90IGJpdHMgPSBjcHUuZnByPHVpbnQ2NF90PihmcHIp
OworICAgICAgICBkb3VibGUgdmFsdWUgPSBjcHUuZnByKGZwcik7CiAgICAgICAgIGRhdGFMb2dG
KCIlbGx4OiVsZiIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oYml0cyksIHZhbHVlKTsKLSAgICAg
ICAgc2NyYXRjaFBvaW50ZXIgKz0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKICAgICB9CiAgICAg
ZGF0YUxvZygiXG4iKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dC5oCShyZXZpc2lvbiAyMjEwMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTMgKzMyLDEwIEBACiAjaW5jbHVkZSAiTWFj
cm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgi
CiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKKyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKICNpbmNs
dWRlICJWYWx1ZVJlY292ZXJ5LmgiCiAKLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBDQ2FsbEhl
bHBlcnM7Ci0KLW5hbWVzcGFjZSBERkcgeworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogCiBjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKIHN0cnVjdCBCYXNpY0Jsb2NrOwpAQCAtOTgsNyAr
OTUsNyBAQCBwcml2YXRlOgogc3RydWN0IE9TUkV4aXQgOiBwdWJsaWMgT1NSRXhpdEJhc2Ugewog
ICAgIE9TUkV4aXQoRXhpdEtpbmQsIEpTVmFsdWVTb3VyY2UsIE1ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUsIFNwZWN1bGF0aXZlSklUKiwgdW5zaWduZWQgc3RyZWFtSW5kZXgsIHVuc2lnbmVk
IHJlY292ZXJ5SW5kZXggPSBVSU5UX01BWCk7CiAKLSAgICBzdGF0aWMgdm9pZCBKSVRfT1BFUkFU
SU9OIGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKKyAgICBzdGF0aWMg
dm9pZCBleGVjdXRlT1NSRXhpdChQcm9iZTo6Q29udGV4dCYpOwogCiAgICAgdW5zaWduZWQgbV9w
YXRjaGFibGVDb2RlT2Zmc2V0IHsgMCB9OwogICAgIApAQCAtMTE5LDExICsxMTYsNiBAQCBzdHJ1
Y3QgT1NSRXhpdCA6IHB1YmxpYyBPU1JFeGl0QmFzZSB7CiAgICAgewogICAgICAgICBPU1JFeGl0
QmFzZTo6Y29uc2lkZXJBZGRpbmdBc0ZyZXF1ZW50RXhpdFNpdGUocHJvZmlsZWRDb2RlQmxvY2ss
IEV4aXRGcm9tREZHKTsKICAgICB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIHZvaWQgY29tcGls
ZUV4aXQoQ0NhbGxIZWxwZXJzJiwgVk0mLCBjb25zdCBPU1JFeGl0JiwgY29uc3QgT3BlcmFuZHM8
VmFsdWVSZWNvdmVyeT4mLCBTcGVjdWxhdGlvblJlY292ZXJ5Kik7Ci0gICAgc3RhdGljIHZvaWQg
ZW1pdFJlc3RvcmVBcmd1bWVudHMoQ0NhbGxIZWxwZXJzJiwgY29uc3QgT3BlcmFuZHM8VmFsdWVS
ZWNvdmVyeT4mKTsKLSAgICBzdGF0aWMgdm9pZCBKSVRfT1BFUkFUSU9OIGRlYnVnT3BlcmF0aW9u
UHJpbnRTcGVjdWxhdGlvbkZhaWx1cmUoRXhlY1N0YXRlKiwgdm9pZCosIHZvaWQqKSBXVEZfSU5U
RVJOQUw7CiB9OwogCiBzdHJ1Y3QgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvIHsKQEAgLTEz
Miw2ICsxMjQsMTAgQEAgc3RydWN0IFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbyB7CiAgICAg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQ7CiB9OwogCit2b2lkIGhhbmRsZUV4aXRDb3VudHMoQ29k
ZUJsb2NrKiwgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jaywgT1NSRXhpdEJhc2UmKTsKK3Zv
aWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhQcm9iZTo6Q29udGV4dCYgY29udGV4dCwgQ29kZUJs
b2NrKiBiYXNlbGluZUNvZGVCbG9jaywgY29uc3QgT1NSRXhpdEJhc2UmKTsKK3ZvaWQgYWRqdXN0
QW5kSnVtcFRvVGFyZ2V0KFByb2JlOjpDb250ZXh0JiwgVk0mLCBDb2RlQmxvY2sqLCBDb2RlQmxv
Y2sqIGJhc2VsaW5lQ29kZUJsb2NrLCBjb25zdCBPU1JFeGl0QmFzZSYpOworCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1v
bi5jcHAJKHJldmlzaW9uIDIyMTAxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDEwICszMywx
MiBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKIAorLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgZml4IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiB2b2lkIGhhbmRsZUV4aXRDb3VudHMoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogewogICAgIGppdC5hZGQz
MihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgQXNzZW1ibHlIZWxwZXJzOjpBYnNv
bHV0ZUFkZHJlc3MoJmV4aXQubV9jb3VudCkpOwpAQCAtMTM4LDYgKzE0MCw3IEBAIHZvaWQgaGFu
ZGxlRXhpdENvdW50cyhDQ2FsbEhlbHBlcnMmIGppdCwKICAgICBkb25lQWRqdXN0aW5nLmxpbmso
JmppdCk7CiB9CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogdm9pZCByZWlmeUlubGluZWRD
YWxsRnJhbWVzKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKIHsK
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGxlYXZlIGhvbGVzIG9uIHRoZSBzdGFjayB3aGVu
IHBlcmZvcm1pbmcgYW4gT1NSIGV4aXQKQEAgLTI0Nyw2ICsyNTAsNyBAQCB2b2lkIHJlaWZ5SW5s
aW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzCiAgICAgfQogfQogCisvLyBGSVhNRTogcmVtb3Zl
IHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NTE0NS4KIHN0YXRpYyB2b2lkIG9zcldyaXRlQmFycmllcihDQ2FsbEhlbHBlcnMmIGppdCwg
R1BSUmVnIG93bmVyLCBHUFJSZWcgc2NyYXRjaCkKIHsKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1
bXAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IGppdC5iYXJyaWVyQnJhbmNoV2l0aG91dEZl
bmNlKG93bmVyKTsKQEAgLTI2Nyw2ICsyNzEsNyBAQCBzdGF0aWMgdm9pZCBvc3JXcml0ZUJhcnJp
ZXIoQ0NhbGxIZWxwZXJzCiAgICAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbi5saW5rKCZqaXQp
OwogfQogCisvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NS4KIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFy
Z2V0KFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQog
ewogICAgIGppdC5tZW1vcnlGZW5jZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCShyZXZpc2lvbiAyMjEwMTcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIHZvaWQgaGFuZGxlRXhpdENvdW50cyhD
Q2FsbEhlbHBlcnMmLCBjb24KIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBl
cnMmLCBjb25zdCBPU1JFeGl0QmFzZSYpOwogdm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0m
LCBDQ2FsbEhlbHBlcnMmLCBjb25zdCBPU1JFeGl0QmFzZSYpOwogCisvLyBGSVhNRTogVGhpcyB3
b24ndCBiZSBuZWVkZWQgb25jZSB3ZSBmaXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NTE0NS4KIHRlbXBsYXRlIDx0eXBlbmFtZSBKSVRDb2RlVHlwZT4KIHZvaWQg
YWRqdXN0RnJhbWVBbmRTdGFja0luT1NSRXhpdENvbXBpbGVyVGh1bmsoTWFjcm9Bc3NlbWJsZXIm
IGppdCwgVk0qIHZtLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7CkBAIC01NCwxMyArNTUs
MTYgQEAgdm9pZCBhZGp1c3RGcmFtZUFuZFN0YWNrSW5PU1JFeGl0Q29tcGlsZQogICAgICAgICBy
ZWdpc3RlcnNUb1ByZXNlcnZlLm1lcmdlKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3Rl
cnMoKSk7CiAgICAgfQogCisgICAgLy9AIG1sYW06IGNvbXB1dGUgc2l6ZSBvZiBzY3JhdGNoIGJ1
ZmZlciB0byBzdGFzaCByZWdpc3RlcnMgaW4uCiAgICAgc2l6ZV90IHNjcmF0Y2hTaXplID0gc2l6
ZW9mKHZvaWQqKSAqIHJlZ2lzdGVyc1RvUHJlc2VydmUubnVtYmVyT2ZTZXRHUFJzKCk7CiAgICAg
aWYgKGlzRlRMT1NSRXhpdCkKICAgICAgICAgc2NyYXRjaFNpemUgKz0gc2l6ZW9mKHZvaWQqKTsK
IAorICAgIC8vQCBtbGFtOiBhbGxvY2F0ZSBzY3JhdGNoIGJ1ZmZlci4KICAgICBTY3JhdGNoQnVm
ZmVyKiBzY3JhdGNoQnVmZmVyID0gdm0tPnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNjcmF0Y2hTaXpl
KTsKICAgICBjaGFyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oc2NyYXRjaEJ1ZmZlci0+
ZGF0YUJ1ZmZlcigpKTsKIAorICAgIC8vQCBtbGFtOiBzYXZlIHRoZSByZWdpc3RlcnMgaW4gdGhl
IHNjcmF0Y2ggYnVmZmVyLgogICAgIGppdC5wdXNoVG9TYXZlKEdQUkluZm86OnJlZ1QxKTsKICAg
ICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihidWZmZXIpLCBHUFJJbmZv
OjpyZWdUMSk7CiAKQEAgLTcwLDYgKzc0LDcgQEAgdm9pZCBhZGp1c3RGcmFtZUFuZFN0YWNrSW5P
U1JFeGl0Q29tcGlsZQogICAgICAgICBzdG9yZU9mZnNldCArPSBzaXplb2Yodm9pZCopOwogICAg
IH0pOwogCisgICAgLy9AIG1sYW06IEZvciBGVEwsIGFsc28gbmVlZCB0byBzdGFzaCBhd2F5IHRo
ZSBPU1IgZXhpdEluZGV4PwogICAgIGlmIChpc0ZUTE9TUkV4aXQpIHsKICAgICAgICAgLy8gRlRM
IE9TUkV4aXRzIGFyZSBlbnRlcmVkIHZpYSB0aGUgY29kZSBGVExFeGl0VGh1bmtHZW5lcmF0b3Ig
ZW1pdHMgd2hpY2ggZG9lcwogICAgICAgICAvLyBwdXNoVG9TYXZlSW1tZWRpYXRlV2l0aG91dFRv
dWNoUmVnaXN0ZXJzIHdpdGggdGhlIE9TUiBleGl0IGluZGV4LiBXZSBuZWVkIHRvIGxvYWQKQEAg
LTc5LDExICs4NCwxNSBAQCB2b2lkIGFkanVzdEZyYW1lQW5kU3RhY2tJbk9TUkV4aXRDb21waWxl
CiAgICAgfQogICAgIGppdC5wb3BUb1Jlc3RvcmUoR1BSSW5mbzo6cmVnVDEpOwogCisgICAgLy9A
IG1sYW06IFRoaXMgbG9va3MgdmVyeSBzaW1pbGFyIHRvIHByZXBhcmVPU1JFeGl0KCkuIFdlIHJl
c3RvcmUgdGhlIGZwIGhlcmUgaWYgd2UgaGF2ZSBhbiBleGNlcHRpb24uCiAgICAgLy8gV2UgbmVl
ZCB0byByZXNldCBGUCBpbiB0aGUgY2FzZSBvZiBhbiBleGNlcHRpb24uCiAgICAgaml0LmxvYWRQ
dHIodm0tPmFkZHJlc3NPZkNhbGxGcmFtZUZvckNhdGNoKCksIEdQUkluZm86OnJlZ1QwKTsKICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkaWROb3RIYXZlRXhjZXB0aW9uID0gaml0LmJyYW5jaFRl
c3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQubW92
ZShHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgIGRpZE5v
dEhhdmVFeGNlcHRpb24ubGluaygmaml0KTsKKworICAgIC8vQCBtbGFtOiBDb21wdXRlIHNwIGZy
b20gZnAuIFdlIHNob3VsZG4ndCBuZWVkIHRvIGRvIHRoaXMgaWYgd2UgZGlkbid0IGdldCBoZXJl
IGR1ZSB0byBhbiBleGNlcHRpb24uCisgICAgLy9AIG1sYW06IHNwID0gZnAgLSBjb2RlQmxvY2st
PnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKTsKICAgICAvLyBXZSBuZWVk
IHRvIG1ha2Ugc3VyZSBTUCBpcyBjb3JyZWN0IGluIGNhc2Ugb2YgYW4gZXhjZXB0aW9uLgogICAg
IGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVv
ZihSZWdpc3RlcikpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgIGppdC5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBDb2RlQmxvY2s6OmppdENvZGVPZmZzZXQo
KSksIEdQUkluZm86OnJlZ1QwKTsKQEAgLTEwMiwxMiArMTExLDE0IEBAIHZvaWQgYWRqdXN0RnJh
bWVBbmRTdGFja0luT1NSRXhpdENvbXBpbGUKICAgICBqaXQuYWRkUHRyKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0Lm1vdmUoR1BSSW5mbzo6cmVn
VDAsIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAKKyAgICAvL0AgbWxh
bTogbWFrZSBzcGFjZSBmb3IgdGhlIG9zckV4aXRJbmRleCBmb3IgdGhlIEZUTC4KICAgICBpZiAo
aXNGVExPU1JFeGl0KSB7CiAgICAgICAgIC8vIExlYXZlIHNwYWNlIGZvciBzYXZpbmcgdGhlIE9T
UiBFeGl0IEluZGV4LgogICAgICAgICBqaXQuc3ViUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tMzIoTWFjcm9Bc3NlbWJsZXI6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0KCkpLCBNYWNyb0Fzc2Vt
Ymxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIH0KICAgICBqaXQucHVzaFRvU2F2ZShH
UFJJbmZvOjpyZWdUMSk7CiAKKyAgICAvL0AgbWxhbTogcmVzdG9yZSB0aGUgc3Rhc2hlZCBGVEwg
b3NyRXhpdEluZGV4LgogICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KGJ1ZmZlciksIEdQUkluZm86OnJlZ1QxKTsKICAgICBpZiAoaXNGVExPU1JFeGl0KSB7CiAgICAg
ICAgIC8vIEZUTCBPU1JFeGl0cyBhcmUgZW50ZXJlZCB2aWEgRlRMRXhpdFRodW5rR2VuZXJhdG9y
IGNvZGUgd2l0aCBkb2VzCkBAIC0xMTcsNiArMTI4LDcgQEAgdm9pZCBhZGp1c3RGcmFtZUFuZFN0
YWNrSW5PU1JFeGl0Q29tcGlsZQogICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6cmVnVDAs
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdp
c3RlciwgTWFjcm9Bc3NlbWJsZXI6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0KCkpKTsKICAgICB9CiAK
KyAgICAvL0AgbWxhbTogcmVzdG9yZXMgdGhlIHN0YXNoZWQgcmVnaXN0ZXJzLgogICAgIHVuc2ln
bmVkIGxvYWRPZmZzZXQgPSAwOwogICAgIHJlZ2lzdGVyc1RvUHJlc2VydmUuZm9yRWFjaChbJl0o
UmVnIHJlZykgewogICAgICAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhH
UFJJbmZvOjpyZWdUMSwgbG9hZE9mZnNldCksIHJlZy5ncHIoKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDIyMTAxNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzNTUsNiArMTM1NSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25D
cmVhdGVDbG8KICAgICAgICAgZXhlYywgc3RydWN0dXJlLCBhcmd1bWVudFN0YXJ0LCBsZW5ndGgs
IGNhbGxlZSk7CiB9CiAKKyNpZiAwIC8vIG1sYW0gUkVNT1ZFCiBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdChFeGVjU3RhdGUqIGV4
ZWMsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBjYWxsZWUs
IGludDMyX3QgYXJndW1lbnRDb3VudCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAt
MTQxMCw2ICsxNDExLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUNs
bwogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CisjZW5kaWYgLy8gbWxhbQogCiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlUmVzdChFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lz
dGVyKiBhcmd1bWVudFN0YXJ0LCB1bnNpZ25lZCBudW1iZXJPZlBhcmFtc1RvU2tpcCwgdW5zaWdu
ZWQgYXJyYXlTaXplKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgJKHJldmlzaW9uIDIyMTAxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksOSArMTM5LDcgQEAgc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cgogc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0KEV4ZWNTdGF0ZSos
IFN0cnVjdHVyZSosIEpTU2NvcGUqLCBTeW1ib2xUYWJsZSosIEVuY29kZWRKU1ZhbHVlKTsKIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHMoRXhlY1N0
YXRlKiwgU3RydWN0dXJlKiwgaW50MzJfdCBsZW5ndGgsIGludDMyX3QgbWluQ2FwYWNpdHkpOwot
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmlu
Z0V4aXQoRXhlY1N0YXRlKiwgSW5saW5lQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiosIGludDMyX3Qg
YXJndW1lbnRDb3VudCk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlU2Nv
cGVkQXJndW1lbnRzKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIFJlZ2lzdGVyKiBhcmd1bWVudFN0
YXJ0LCBpbnQzMl90IGxlbmd0aCwgSlNGdW5jdGlvbiogY2FsbGVlLCBKU0xleGljYWxFbnZpcm9u
bWVudCopOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3Vt
ZW50c0R1cmluZ0V4aXQoRXhlY1N0YXRlKiwgSW5saW5lQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbios
IGludDMyX3QgYXJndW1lbnRDb3VudCk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Q3JlYXRlQ2xvbmVkQXJndW1lbnRzKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIFJlZ2lzdGVyKiBh
cmd1bWVudFN0YXJ0LCBpbnQzMl90IGxlbmd0aCwgSlNGdW5jdGlvbiogY2FsbGVlKTsKIEpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVSZXN0KEV4ZWNTdGF0ZSosIFJlZ2lzdGVy
KiBhcmd1bWVudFN0YXJ0LCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCwgdW5zaWdu
ZWQgYXJyYXlTaXplKTsKIGRvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkZNb2RPbkludHMo
aW50MzJfdCwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVGh1bmtzLmNwcAkocmV2aXNpb24gMjIxMDE3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxNyArNDAsMjEg
QEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCisjaWYgMCAvLyBtbGFtIFJF
TU9WRQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0
b3IoVk0qIHZtKQogewogICAgIE1hY3JvQXNzZW1ibGVyIGppdDsKIAorICAgIC8vQCBtbGFtOiBh
bGwgdGhpcyBkb2VzIGlzIHRoZSBlcXVpdmFsZW50IG9mIGVuc3VyZVN0YWNrRm9yT1NSRXhpdCgp
LCBleGNlcHQgaXQgc2V0cyB0byBjb2RlQmxvY2sncyBzcCwgbm90IHdvcnN0IGNhc2UuCiAgICAg
Ly8gVGhpcyBuZWVkcyB0byBoYXBwZW4gYmVmb3JlIHdlIHVzZSB0aGUgc2NyYXRjaCBidWZmZXIg
YmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGFsc28gdXNlcyB0aGUgc2NyYXRjaCBidWZmZXIuCiAgICAg
YWRqdXN0RnJhbWVBbmRTdGFja0luT1NSRXhpdENvbXBpbGVyVGh1bms8REZHOjpKSVRDb2RlPihq
aXQsIHZtLCBKSVRDb2RlOjpERkdKSVQpOwogICAgIAorICAgIC8vQCBtbGFtOiBwcmVwYXJlIGZv
ciBzY3JhdGNoIHNwYWNlIGFnYWluLgogICAgIHNpemVfdCBzY3JhdGNoU2l6ZSA9IHNpemVvZihF
bmNvZGVkSlNWYWx1ZSkgKiAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjpu
dW1iZXJPZlJlZ2lzdGVycyk7CiAgICAgU2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1ZmZlciA9IHZt
LT5zY3JhdGNoQnVmZmVyRm9yU2l6ZShzY3JhdGNoU2l6ZSk7CiAgICAgRW5jb2RlZEpTVmFsdWUq
IGJ1ZmZlciA9IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0
YUJ1ZmZlcigpKTsKICAgICAKKyAgICAvL0AgbWxhbTogc3Rhc2ggdGhlIHJlZ2lzdGVycy4KICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsr
aSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnRv
UmVnaXN0ZXIoaSksIGJ1ZmZlciArIGkpOwpAQCAtNjMsMjIgKzY3LDI1IEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBvc3JFeGl0R2VuZXJhdGlvblQKICAgICAgICAgaml0LnN0b3JlRG91YmxlKEZQ
UkluZm86OnRvUmVnaXN0ZXIoaSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJl
Z1QwKSk7CiAgICAgfQogICAgIAorICAgIC8vQCBtbGFtOiB0ZWxsIHRoZSBHQyB0byBzY2FuIHRo
ZSBzY3JhdGNoIGJ1ZmZlci4KICAgICAvLyBUZWxsIEdDIG1hcmsgcGhhc2UgaG93IG11Y2ggb2Yg
dGhlIHNjcmF0Y2ggYnVmZmVyIGlzIGFjdGl2ZSBkdXJpbmcgY2FsbC4KICAgICBqaXQubW92ZShN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hZGRyZXNzT2ZBY3Rp
dmVMZW5ndGgoKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQuc3RvcmVQdHIoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaFNpemUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhHUFJJbmZvOjpyZWdUMCkpOwogCisgICAgLy9AIGNhbGwgb2ZmcmFtcCBjb21waWxlci4KICAg
ICAvLyBTZXQgdXAgb25lIGFyZ3VtZW50LgogI2lmIENQVShYODYpCiAgICAgaml0LnBva2UoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIDApOwogI2Vsc2UKICAgICBqaXQubW92ZShHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICNlbmRpZgotCiAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgZnVuY3Rpb25DYWxsID0gaml0LmNhbGwoKTsKIAorICAg
IC8vQCBHQyBkb24ndCBoYXZlIHRvIHNjYW4gdGhlIHNjcmF0Y2ggYnVmZmVyIGFueW1vcmUuCiAg
ICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+
YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0LnN0b3Jl
UHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDApLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhHUFJJbmZvOjpyZWdUMCkpOwogCisgICAgLy9AIHJlc3RvcmUgcmVnaXN0ZXJzLgogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytp
KSB7CiAgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGJ1ZmZl
ciArIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSksIEdQUkluZm86OnJlZ1QwKTsKICAg
ICAgICAgaml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVn
VDApLCBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKQEAgLTkxLDE0ICs5OCwyNiBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgb3NyRXhpdEdlbmVyYXRpb25UCiAjZW5kaWYKICAgICB9CiAgICAgCisg
ICAgLy9AIGRpc3BhdGNoIHRvIG9mZnJhbXAuCiAgICAgaml0Lmp1bXAoTWFjcm9Bc3NlbWJsZXI6
OkFic29sdXRlQWRkcmVzcygmdm0tPm9zckV4aXRKdW1wRGVzdGluYXRpb24pKTsKICAgICAKICAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKICAgICAKKyAg
ICAvLyBtbGFtIEZJWE1FLiAgUmVwbGFjZSB3aXRoIHByb2JlIHRvIE9TUkV4aXRQcmVwYXJlVGh1
bmsuCisgICAgVU5VU0VEX1BBUkFNKGZ1bmN0aW9uQ2FsbCk7CiAgICAgcGF0Y2hCdWZmZXIubGlu
ayhmdW5jdGlvbkNhbGwsIE9TUkV4aXQ6OmNvbXBpbGVPU1JFeGl0KTsKICAgICAKICAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJERkcgT1NSIGV4aXQgZ2VuZXJhdGlvbiB0
aHVuayIpKTsKIH0KKyNlbmRpZiAvLyBtbGFtIFJFTU9WRQorCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgb3NyRXhpdFRodW5rR2VuZXJhdG9yKFZNKikKK3sKKyAgICBNYWNyb0Fzc2VtYmxlciBqaXQ7
CisgICAgaml0LnByb2JlKE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0LCBudWxscHRyKTsKKyAgICBM
aW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJERkcgT1NSIGV4aXQgdGh1bmsiKSk7Cit9CiAK
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuaAkocmV2aXNpb24gMjIxMDE3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFZNOwogCiBuYW1lc3BhY2UgREZHIHsKIAotTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoVk0qKTsK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0VGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBvc3JFbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CiAKIH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDIyMTAxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIwLDYxICs4
MjAsNiBAQCBib29sIEFzc2VtYmx5SGVscGVyczo6c3RvcmVXYXNtQ29udGV4dE5lCiAKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKLXZvaWQgQXNzZW1ibHlIZWxwZXJzOjpkZWJ1Z0Nh
bGwoVk0mIHZtLCBWX0RlYnVnT3BlcmF0aW9uX0VQUCBmdW5jdGlvbiwgdm9pZCogYXJndW1lbnQp
Ci17Ci0gICAgc2l6ZV90IHNjcmF0Y2hTaXplID0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIChH
UFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzKTsK
LSAgICBTY3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZlckZvclNp
emUoc2NyYXRjaFNpemUpOwotICAgIEVuY29kZWRKU1ZhbHVlKiBidWZmZXIgPSBzdGF0aWNfY2Fz
dDxFbmNvZGVkSlNWYWx1ZSo+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSk7Ci0KLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkg
ewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHN0b3JlNjQoR1BSSW5mbzo6dG9SZWdpc3Rl
cihpKSwgYnVmZmVyICsgaSk7Ci0jZWxzZQotICAgICAgICBzdG9yZTMyKEdQUkluZm86OnRvUmVn
aXN0ZXIoaSksIGJ1ZmZlciArIGkpOwotI2VuZGlmCi0gICAgfQotCi0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSAgICAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciArIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsg
aSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgc3RvcmVEb3VibGUoRlBSSW5mbzo6dG9SZWdp
c3RlcihpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgIH0KLQotICAgIC8vIFRlbGwgR0MgbWFyayBw
aGFzZSBob3cgbXVjaCBvZiB0aGUgc2NyYXRjaCBidWZmZXIgaXMgYWN0aXZlIGR1cmluZyBjYWxs
LgotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hZGRyZXNzT2ZBY3RpdmVM
ZW5ndGgoKSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKHNj
cmF0Y2hTaXplKSwgR1BSSW5mbzo6cmVnVDApOwotCi0jaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFS
TSkgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoTUlQUykKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYnVm
ZmVyKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYXJn
dW1lbnQpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgR1BSUmVnIHNjcmF0Y2gg
PSBzZWxlY3RTY3JhdGNoR1BSKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotI2VsaWYgQ1BVKFg4NikKLSAgICBwb2tl
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAwKTsKLSAgICBwb2tlKFRydXN0ZWRJbW1QdHIo
YXJndW1lbnQpLCAxKTsKLSAgICBwb2tlKFRydXN0ZWRJbW1QdHIoYnVmZmVyKSwgMik7Ci0gICAg
R1BSUmVnIHNjcmF0Y2ggPSBHUFJJbmZvOjpyZWdUMDsKLSNlbHNlCi0jZXJyb3IgIkpJVCBub3Qg
c3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgotI2VuZGlmCi0gICAgbW92ZShUcnVzdGVkSW1t
UHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uKSksIHNjcmF0Y2gpOwotICAgIGNh
bGwoc2NyYXRjaCk7Ci0KLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWRk
cmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgc3RvcmVQdHIoVHJ1
c3RlZEltbVB0cigwKSwgR1BSSW5mbzo6cmVnVDApOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGJ1ZmZlciArIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSksIEdQ
UkluZm86OnJlZ1QwKTsKLSAgICAgICAgbG9hZERvdWJsZShHUFJJbmZvOjpyZWdUMCwgRlBSSW5m
bzo6dG9SZWdpc3RlcihpKSk7Ci0gICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBH
UFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAg
ICAgICAgbG9hZDY0KGJ1ZmZlciArIGksIEdQUkluZm86OnRvUmVnaXN0ZXIoaSkpOwotI2Vsc2UK
LSAgICAgICAgbG9hZDMyKGJ1ZmZlciArIGksIEdQUkluZm86OnRvUmVnaXN0ZXIoaSkpOwotI2Vu
ZGlmCi0gICAgfQotfQotCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6Y29weUNhbGxlZVNhdmVzVG9W
TUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlckltcGwoR1BSUmVnIGNhbGxlZVNhdmVzQnVmZmVy
KQogewogI2lmIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTID4gMApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAyMjEw
MTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05OTIsOSArOTkyLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gR1BS
SW5mbzo6cmVnVDU7CiAgICAgfQogCi0gICAgLy8gQWRkIGEgZGVidWcgY2FsbC4gVGhpcyBjYWxs
IGhhcyBubyBlZmZlY3Qgb24gSklUIGNvZGUgZXhlY3V0aW9uIHN0YXRlLgotICAgIHZvaWQgZGVi
dWdDYWxsKFZNJiwgVl9EZWJ1Z09wZXJhdGlvbl9FUFAgZnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50
KTsKLQogICAgIC8vIFRoZXNlIG1ldGhvZHMgSklUIGdlbmVyYXRlIGR5bmFtaWMsIGRlYnVnLW9u
bHkgY2hlY2tzIC0gYWtpbiB0byBBU1NFUlRzLgogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICB2
b2lkIGppdEFzc2VydElzSW50MzIoR1BSUmVnKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvR1BSSW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9HUFJJbmZvLmNwcAkocmV2aXNpb24gMjIxMDE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9HUFJJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMCArMjYsMjEgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJHUFJJbmZvLmgiCiAKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgorCiAjaWYgRU5BQkxFKEpJVCkKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0pTVmFs
dWUgSlNWYWx1ZVJlZ3M6OmV2YWx1YXRlKGNvbnN0IFByb2JlOjpDUFVTdGF0ZSYgY3B1KSBjb25z
dAoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShjcHUu
Z3ByPEVuY29kZWRKU1ZhbHVlPihncHIoKSkpOworI2Vsc2UKKyAgICByZXR1cm4gSlNWYWx1ZShj
cHUuZ3ByPGludDMyX3Q+KHRhZ0dQUigpKSwgY3B1LmdwcjxpbnQzMl90PihwYXlsb2FkR1BSKCkp
KTsKKyNlbmRpZgorfQorCiB2b2lkIEpTVmFsdWVSZWdzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTM5LDYgKzUwLDIxIEBAIHZvaWQgSlNW
YWx1ZVJlZ3M6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkKICNlbmRpZgogfQogCitKU1ZhbHVlIEpT
VmFsdWVTb3VyY2U6OmV2YWx1YXRlKGNvbnN0IFByb2JlOjpDUFVTdGF0ZSYgY3B1KSBjb25zdAor
eworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaWYgKGlzQWRkcmVzcygpKQorICAgICAgICByZXR1
cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KGNwdS5ncHI8dWludDhfdCo+KGJhc2UoKSkg
KyBvZmZzZXQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShjcHUuZ3ByPEVuY29kZWRK
U1ZhbHVlPihncHIoKSkpOworI2Vsc2UKKyAgICBpZiAoaXNBZGRyZXNzKCkpCisgICAgICAgIHJl
dHVybiAqcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4oY3B1ICAuZ3ByPHVpbnQ4X3QqPihiYXNl
KCkpICsgb2Zmc2V0KCkpOworICAgIGlmIChoYXNLbm93blRhZygpKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZSh0YWcoKSwgY3B1LmdwcjxpbnQzMl90PihwYXlsb2FkR1BSKCkpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZShjcHUuZ3ByPGludDMyX3Q+KHRhZ0dQUigpKSwgY3B1LmdwcjxpbnQzMl90Pihw
YXlsb2FkR1BSKCkpKTsKKyNlbmRpZgorfQorCiAvLyBUaGlzIGlzIGluIHRoZSAuY3BwIGZpbGUg
dG8gd29yayBhcm91bmQgY2xhbmcgaXNzdWVzLgogI2lmIENQVShYODZfNjQpCiBjb25zdCBHUFJS
ZWcgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciA9IE1hY3JvQXNzZW1ibGVyOjpz
X3NjcmF0Y2hSZWdpc3RlcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5m
by5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCShy
ZXZpc2lvbiAyMjEwMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1ZGUg
PGFycmF5PgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCkBAIC03OCw2ICs3OSw4IEBA
IHB1YmxpYzoKICAgICAKICAgICBib29sIHVzZXMoR1BSUmVnIGdwcikgY29uc3QgeyByZXR1cm4g
bV9ncHIgPT0gZ3ByOyB9CiAgICAgCisgICAgSlNWYWx1ZSBldmFsdWF0ZShjb25zdCBQcm9iZTo6
Q1BVU3RhdGUmKSBjb25zdDsKKwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Owog
ICAgIAogcHJpdmF0ZToKQEAgLTE0OSw2ICsxNTIsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MgYXNBZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZSgpLCBvZmZzZXQoKSk7IH0KICAgICAKKyAgICBKU1ZhbHVlIGV2
YWx1YXRlKGNvbnN0IFByb2JlOjpDUFVTdGF0ZSYpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHN0
YXRpYyBpbmxpbmUgaW50MzJfdCBub3RBZGRyZXNzKCkgeyByZXR1cm4gMHg4MDAwMDAwMDsgfSAg
ICAgCiAgICAgICAgICAgCkBAIC0yMTIsNiArMjE3LDggQEAgcHVibGljOgogCiAgICAgYm9vbCB1
c2VzKEdQUlJlZyBncHIpIGNvbnN0IHsgcmV0dXJuIG1fdGFnR1BSID09IGdwciB8fCBtX3BheWxv
YWRHUFIgPT0gZ3ByOyB9CiAgICAgCisgICAgSlNWYWx1ZSBldmFsdWF0ZShjb25zdCBQcm9iZTo6
Q1BVU3RhdGUmKSBjb25zdDsKKwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Owog
ICAgIAogcHJpdmF0ZToKQEAgLTMyMSw2ICszMjgsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MgYXNBZGRyZXNzKHVuc2lnbmVkIGFkZGl0aW9uYWxPZmZzZXQg
PSAwKSBjb25zdCB7IHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlKCksIG9mZnNl
dCgpICsgYWRkaXRpb25hbE9mZnNldCk7IH0KICAgICAKKyAgICBKU1ZhbHVlIGV2YWx1YXRlKGNv
bnN0IFByb2JlOjpDUFVTdGF0ZSYpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHN0YXRpYyBpbmxp
bmUgaW50MzJfdCBub3RBZGRyZXNzKCkgeyByZXR1cm4gMHg4MDAwMDAwMDsgfSAgICAgCiAgICAg
ICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAJKHJldmlzaW9uIDIyMTAxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNTMsNiArMjI1Myw3IEBAIGNoYXIqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZUIKICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4ocmVzdWx0KTsKIH0KIAorLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2Ug
Zml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT1NSV3JpdGVCYXJyaWVyKEV4ZWNTdGF0ZSogZXhlYywg
SlNDZWxsKiBjZWxsKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDIyMTAxNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NDAsNiArNDQwLDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9j
YXRlQgogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlQnV0dGVyZmx5VG9H
cm93UHJvcGVydHlTdG9yYWdlKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kiwgc2l6ZV90IG5ld1NpemUp
IFdURl9JTlRFUk5BTDsKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbldyaXRlQmFycmll
clNsb3dQYXRoKEV4ZWNTdGF0ZSosIEpTQ2VsbCopOworLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdo
ZW4gd2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUu
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT1NSV3JpdGVCYXJyaWVyKEV4ZWNTdGF0ZSos
IEpTQ2VsbCopOwogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRXhjZXB0aW9uRnV6eihF
eGVjU3RhdGUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
ckNvbXBpbGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAJKHJldmlzaW9uIDIyMTAxNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCwg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTkxLDYgKzkxLDEwIEBAIHZvaWQgQ29tcGlsYXRpb246OmFkZE9T
UkV4aXRTaXRlKGNvbnN0IFYKIAogT1NSRXhpdCogQ29tcGlsYXRpb246OmFkZE9TUkV4aXQodW5z
aWduZWQgaWQsIGNvbnN0IE9yaWdpblN0YWNrJiBvcmlnaW5TdGFjaywgRXhpdEtpbmQgZXhpdEtp
bmQsIGJvb2wgaXNXYXRjaHBvaW50KQogeworICAgIGZvciAoYXV0byBpdCA9IG1fb3NyRXhpdHMu
YmVnaW4oKTsgaXQgIT0gbV9vc3JFeGl0cy5lbmQoKTsgKytpdCkgeworICAgICAgICBpZiAoaXQt
PmlkKCkgPT0gaWQpCisgICAgICAgICAgICByZXR1cm4gJigqaXQpOworICAgIH0KICAgICBtX29z
ckV4aXRzLmFwcGVuZChPU1JFeGl0KGlkLCBvcmlnaW5TdGFjaywgZXhpdEtpbmQsIGlzV2F0Y2hw
b2ludCkpOwogICAgIHJldHVybiAmbV9vc3JFeGl0cy5sYXN0KCk7CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5oCShyZXZpc2lv
biAyMjEwMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPU1JF
eGl0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNyArNDMsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdWlu
dDY0X3QqIGNvdW50ZXJBZGRyZXNzKCkgeyByZXR1cm4gJm1fY291bnRlcjsgfQogICAgIHVpbnQ2
NF90IGNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudGVyOyB9Ci0gICAgCisgICAgdm9pZCBp
bmNDb3VudCgpIHsgbV9jb3VudGVyKys7IH0KKwogICAgIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUq
KSBjb25zdDsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmgJKHJldmlzaW9uIDIyMTAxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8q
CiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9y
ZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTIs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykg
MjAwMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0zNDQsMTIgKzM0NCw5IEBAIHB1YmxpYzoKICAgICB1aW50MzJfdCB0YWcoKSBj
b25zdDsKICAgICBpbnQzMl90IHBheWxvYWQoKSBjb25zdDsKIAotI2lmICFFTkFCTEUoSklUKQot
ICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBieSB0aGUgTExJbnQgQyBMb29wIGludGVy
cHJldGVyIHdobyBuZWVkcwotICAgIC8vIHN5bnRoZXNpemUgSlNWYWx1ZSBmcm9tIGl0cyAicmVn
aXN0ZXIicyBob2xkaW5nIHRhZyBhbmQgcGF5bG9hZAotICAgIC8vIHZhbHVlcy4KKyAgICAvLyBU
aGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgdGhlIExMSW50IEMgTG9vcCBpbnRlcnByZXRlciBh
bmQgT1NSRXhpdCBjb2RlIHdobyBuZWVkcworICAgIC8vIHN5bnRoZXNpemUgSlNWYWx1ZSBmcm9t
IGl0cyAicmVnaXN0ZXIicyBob2xkaW5nIHRhZyBhbmQgcGF5bG9hZCB2YWx1ZXMuCiAgICAgZXhw
bGljaXQgSlNWYWx1ZShpbnQzMl90IHRhZywgaW50MzJfdCBwYXlsb2FkKTsKLSNlbmRpZgogCiAj
ZWxpZiBVU0UoSlNWQUxVRTY0KQogICAgIC8qCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHJldmlzaW9uIDIyMTAxNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0MCw3ICszNDAsNyBAQCBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShpbnQg
aSkKICAgICB1LmFzQml0cy5wYXlsb2FkID0gaTsKIH0KIAotI2lmICFFTkFCTEUoSklUKQorI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCiBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShpbnQzMl90IHRhZywg
aW50MzJfdCBwYXlsb2FkKQogewogICAgIHUuYXNCaXRzLnRhZyA9IHRhZzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319025</attachid>
            <date>2017-08-24 15:06:40 -0700</date>
            <delta_ts>2017-08-25 17:27:37 -0700</delta_ts>
            <desc>work in progress: it builds but crashes in the tests.</desc>
            <filename>bug-175144.patch</filename>
            <type>text/plain</type>
            <size>112663</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMjEwMTcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjQzMyw2ICsyNDMzLDcgQEAKIAkJRkUxMEFBRUMxRjQ0
RDU0NTAwOURFREM1IC8qIFByb2JlU3RhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxMEFBRTkxRjQ0RDUxMDAwOURFREM1IC8qIFByb2JlU3Rh
Y2suY3BwICovOyB9OwogCQlGRTEwQUFFRTFGNDREOTU0MDA5REVEQzUgLyogUHJvYmVDb250ZXh0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEwQUFF
RDFGNDREOTQ2MDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUxMEFBRjQxRjQ2ODM5NjAwOURFREM1IC8q
IFByb2JlQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTEwQUFGMzFGNDY4MjZEMDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmNwcCAqLzsg
fTsKKwkJRkUxMEFBRkYxRjRFMzhFNTAwOURFREM1IC8qIFByb2JlRnJhbWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTBBQUZFMUY0RTM4REEwMDlE
RURDNSAvKiBQcm9iZUZyYW1lLmggKi87IH07CiAJCUZFMTIyMDI3MUJFN0Y1OEMwMDM5RTZGMiAv
KiBKSVRBZGRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFMTIyMDI2MUJFN0Y1NjQwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuaCAq
LzsgfTsKIAkJRkUxMjIwMjgxQkU3RjU5MTAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEyMjAyNTFC
RTdGNTY0MDAzOUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmNwcCAqLzsgfTsKIAkJRkUxODdBMDEx
QkZCRTU1RTAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4NzlGRjFCRkJDNzNDMDAzOEJCQ0EgLyog
SklUTXVsR2VuZXJhdG9yLmNwcCAqLzsgfTsKQEAgLTUxMTMsNiArNTExNCw3IEBACiAJCUZFMTBB
QUVBMUY0NEQ1MTIwMDlERURDNSAvKiBQcm9iZVN0YWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFByb2JlU3RhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkUxMEFBRUQxRjQ0RDk0NjAwOURFREM1IC8qIFByb2JlQ29udGV4dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQcm9iZUNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkUxMEFBRjMxRjQ2ODI2RDAwOURFREM1IC8qIFByb2JlQ29udGV4dC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9iZUNvbnRleHQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTEwQUFGRTFGNEUzOERBMDA5REVEQzUgLyogUHJv
YmVGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9iZUZyYW1lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMTIyMDI1MUJFN0Y1NjQwMDM5RTZGMiAv
KiBKSVRBZGRHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSklUQWRkR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUx
MjIwMjYxQkU3RjU2NDAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKSVRBZGRHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkUxODc5RkYxQkZCQzczQzAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRNdWxHZW5lcmF0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzY4Niw2ICs3Njg4LDcgQEAKIAkJ
CQlGRTYzREQ1MzFFQTlCNjBFMDAxMDNBNjkgLyogUHJpbnRlci5oICovLAogCQkJCUZFMTBBQUYz
MUY0NjgyNkQwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuY3BwICovLAogCQkJCUZFMTBBQUVEMUY0
NEQ5NDYwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuaCAqLywKKwkJCQlGRTEwQUFGRTFGNEUzOERB
MDA5REVEQzUgLyogUHJvYmVGcmFtZS5oICovLAogCQkJCUZFMTBBQUU5MUY0NEQ1MTAwMDlERURD
NSAvKiBQcm9iZVN0YWNrLmNwcCAqLywKIAkJCQlGRTEwQUFFQTFGNDRENTEyMDA5REVEQzUgLyog
UHJvYmVTdGFjay5oICovLAogCQkJCUZFNTMzQ0EwMUYyMTdDMzEwMDE2QTFGRSAvKiB0ZXN0bWFz
bS5jcHAgKi8sCkBAIC05NjQzLDYgKzk2NDYsNyBAQAogCQkJCUFEMkZDQzFEMURCNTlDQjIwMEIz
RTczNiAvKiBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUFENDkzN0M4MURERDBBQUUwMDc3QzgwNyAvKiBXZWJBc3NlbWJseU1vZHVsZVJlY29yZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNDMkQxREI4MzhGRDAwQjNFNzM2IC8qIFdlYkFzc2Vt
Ymx5UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTEwQUFGRjFGNEUzOEU1MDA5REVE
QzUgLyogUHJvYmVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNCRjkxREI1OERBRDAw
QjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZFMTBBQUVCMUY0NEQ1MjgwMDlERURDNSAvKiBQcm9iZVN0YWNrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBRDJGQ0MxRTFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3JDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5oCShyZXZpc2lvbiAyMjEw
MTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NSwxMyArNDUsOSBAQCBzdHJ1Y3QgQ1BVU3RhdGUgewogICAgIGlu
bGluZSB1aW50cHRyX3QmIHNwcihTUFJlZ2lzdGVySUQpOwogICAgIGlubGluZSBkb3VibGUmIGZw
cihGUFJlZ2lzdGVySUQpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIGdwcihSZWdpc3RlcklEKSBjb25zdDsK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRyPgotICAgIFQgZ3ByKFJlZ2lzdGVy
SUQpIGNvbnN0OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRyPgotICAgIFQg
c3ByKFNQUmVnaXN0ZXJJRCkgY29uc3Q7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVs
bHB0cj4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFQgc3ByKFNQUmVnaXN0ZXJJRCkg
Y29uc3Q7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBmcHIoRlBSZWdpc3RlcklEKSBjb25z
dDsKIApAQCAtODUsMzIgKzgxLDI0IEBAIGlubGluZSBkb3VibGUmIENQVVN0YXRlOjpmcHIoRlBS
ZWdpc3RlckkKICAgICByZXR1cm4gZnByc1tpZF07CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlw
ZSo+Ci1UIENQVVN0YXRlOjpncHIoUmVnaXN0ZXJJRCBpZCkgY29uc3QKLXsKLSAgICBDUFVTdGF0
ZSogY3B1ID0gY29uc3RfY2FzdDxDUFVTdGF0ZSo+KHRoaXMpOwotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxUPihjcHUtPmdwcihpZCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZSo+Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgogVCBDUFVTdGF0ZTo6Z3ByKFJlZ2lzdGVySUQgaWQpIGNvbnN0CiB7
CiAgICAgQ1BVU3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPihjcHUtPmdwcihpZCkpOworICAgIGF1dG8mIGZyb20g
PSBjcHUtPmdwcihpZCk7CisgICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD46OnR5cGUg
dG8geyB9OworICAgIHN0ZDo6bWVtY3B5KCZ0bywgJmZyb20sIHNpemVvZih0bykpOworICAgIHJl
dHVybiB0bzsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKj4KLVQgQ1BVU3RhdGU6OnNwcihT
UFJlZ2lzdGVySUQgaWQpIGNvbnN0Ci17Ci0gICAgQ1BVU3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8
Q1BVU3RhdGUqPih0aGlzKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oY3B1LT5zcHIoaWQp
KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3Rk
Ojppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGUqPgordGVtcGxhdGU8dHlwZW5hbWUgVD4KIFQg
Q1BVU3RhdGU6OnNwcihTUFJlZ2lzdGVySUQgaWQpIGNvbnN0CiB7CiAgICAgQ1BVU3RhdGUqIGNw
dSA9IGNvbnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxUPihjcHUtPnNwcihpZCkpOworICAgIGF1dG8mIGZyb20gPSBjcHUtPnNwcihpZCk7Cisg
ICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD46OnR5cGUgdG8geyB9OworICAgIHN0ZDo6
bWVtY3B5KCZ0bywgJmZyb20sIHNpemVvZih0bykpOworICAgIHJldHVybiB0bzsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgVD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
UHJvYmVGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvUHJvYmVGcmFtZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvUHJvYmVGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgorCisjaWYgRU5BQkxFKE1BU01fUFJPQkUpCisK
K25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIFByb2JlIHsKKworY2xhc3MgRnJhbWUgeworcHVi
bGljOgorICAgIEZyYW1lKENvbnRleHQmIGNvbnRleHQpCisgICAgICAgIDogbV9jb250ZXh0KGNv
bnRleHQpCisgICAgeyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFQgZ2V0T3Bl
cmFuZChpbnQgb3BlcmFuZCkKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRPcGVyYW5kPFQ+KG9w
ZXJhbmQsIDApOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFQgZ2V0T3Bl
cmFuZChpbnQgb3BlcmFuZCwgcHRyZGlmZl90IG9mZnNldCkKKyAgICB7CisgICAgICAgIHJldHVy
biBnZXQ8VD4oc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5kKS5vZmZzZXQoKSAq
IHNpemVvZihSZWdpc3RlcikgKyBvZmZzZXQpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgorICAgIFQgZ2V0KHB0cmRpZmZfdCBvZmZzZXQpCisgICAgeworICAgICAgICB2b2lkKiBh
ZGRyZXNzID0gbV9jb250ZXh0LmNwdS5mcDx1aW50OF90Kj4oKSArIG9mZnNldDsKKyAgICAgICAg
cmV0dXJuIG1fY29udGV4dC5zdGFjaygpLmdldDxUPihhZGRyZXNzKTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHZvaWQgc2V0T3BlcmFuZChpbnQgb3BlcmFuZCwgVCB2
YWx1ZSkKKyAgICB7CisgICAgICAgIHNldE9wZXJhbmQ8VD4ob3BlcmFuZCwgMCwgdmFsdWUpOwor
ICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHZvaWQgc2V0T3BlcmFuZChpbnQg
b3BlcmFuZCwgcHRyZGlmZl90IG9mZnNldCwgVCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHNldDxU
PihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG9wZXJhbmQpLm9mZnNldCgpICogc2l6ZW9m
KFJlZ2lzdGVyKSArIG9mZnNldCwgdmFsdWUpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgorICAgIHZvaWQgc2V0KHB0cmRpZmZfdCBvZmZzZXQsIFQgdmFsdWUpCisgICAgeworICAg
ICAgICB2b2lkKiBhZGRyZXNzID0gbV9jb250ZXh0LmNwdS5mcDx1aW50OF90Kj4oKSArIG9mZnNl
dDsKKyAgICAgICAgbV9jb250ZXh0LnN0YWNrKCkuc2V0PFQ+KGFkZHJlc3MsIHZhbHVlKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgQ29udGV4dCYgbV9jb250ZXh0OworfTsKKworfSAvLyBuYW1l
c3BhY2UgUHJvYmUKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKE1BU01f
UFJPQkUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3Rh
Y2suaAkocmV2aXNpb24gMjIxMDE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9Qcm9iZVN0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDE0ICs1NiwyOSBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIGdldCh2b2lkKiBsb2dpY2FsQWRkcmVz
cykKICAgICB7Ci0gICAgICAgIHJldHVybiAqcGh5c2ljYWxBZGRyZXNzRm9yPFQqPihsb2dpY2Fs
QWRkcmVzcyk7CisgICAgICAgIHZvaWQqIGZyb20gPSBwaHlzaWNhbEFkZHJlc3NGb3IobG9naWNh
bEFkZHJlc3MpOworICAgICAgICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZSB0
byB7IH07CisgICAgICAgIHN0ZDo6bWVtY3B5KCZ0bywgZnJvbSwgc2l6ZW9mKHRvKSk7CisgICAg
ICAgIHJldHVybiB0bzsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBUIGdl
dCh2b2lkKiBsb2dpY2FsQmFzZUFkZHJlc3MsIHB0cmRpZmZfdCBvZmZzZXQpCisgICAgeworICAg
ICAgICByZXR1cm4gZ2V0PFQ+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGxvZ2ljYWxCYXNl
QWRkcmVzcykgKyBvZmZzZXQpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAg
ICAgdm9pZCBzZXQodm9pZCogbG9naWNhbEFkZHJlc3MsIFQgdmFsdWUpCiAgICAgewogICAgICAg
ICBtX2RpcnR5Qml0cyB8PSBkaXJ0eUJpdEZvcihsb2dpY2FsQWRkcmVzcyk7Ci0gICAgICAgICpw
aHlzaWNhbEFkZHJlc3NGb3I8VCo+KGxvZ2ljYWxBZGRyZXNzKSA9IHZhbHVlOworCisgICAgICAg
IHZvaWQqIHRvID0gcGh5c2ljYWxBZGRyZXNzRm9yKGxvZ2ljYWxBZGRyZXNzKTsKKyAgICAgICAg
c3RkOjptZW1jcHkodG8sICZ2YWx1ZSwgc2l6ZW9mKFQpKTsKKyAgICB9CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNldCh2b2lkKiBsb2dpY2FsQmFzZUFkZHJlc3MsIHB0cmRp
ZmZfdCBvZmZzZXQsIFQgdmFsdWUpCisgICAgeworICAgICAgICBzZXQ8VD4ocmVpbnRlcnByZXRf
Y2FzdDx1aW50OF90Kj4obG9naWNhbEJhc2VBZGRyZXNzKSArIG9mZnNldCwgdmFsdWUpOwogICAg
IH0KIAogICAgIGJvb2wgaGFzV3JpdGVzVG9GbHVzaCgpIGNvbnN0IHsgcmV0dXJuICEhbV9kaXJ0
eUJpdHM7IH0KQEAgLTgwLDEyICs5NSwxMCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dWludHB0cl90PigxKSA8PCAob2Zmc2V0ID4+IHNfY2h1bmtTaXplU2hpZnQpOwog
ICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgVCBwaHlz
aWNhbEFkZHJlc3NGb3Iodm9pZCogbG9naWNhbEFkZHJlc3MpCisgICAgdm9pZCogcGh5c2ljYWxB
ZGRyZXNzRm9yKHZvaWQqIGxvZ2ljYWxBZGRyZXNzKQogICAgIHsKICAgICAgICAgdWludHB0cl90
IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihsb2dpY2FsQWRkcmVzcykgJiBz
X3BhZ2VNYXNrOwotICAgICAgICB2b2lkKiBwaHlzaWNhbEFkZHJlc3MgPSByZWludGVycHJldF9j
YXN0PHVpbnQ4X3QqPigmbV9idWZmZXIpICsgb2Zmc2V0OwotICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxUPihwaHlzaWNhbEFkZHJlc3MpOworICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50OF90Kj4oJm1fYnVmZmVyKSArIG9mZnNldDsKICAgICB9CiAKICAgICB2b2lk
IGZsdXNoV3JpdGVzKCk7CkBAIC0xMjMsMTMgKzEzNiwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCog
bG93V2F0ZXJtYXJrKCkgeyByZXR1cm4gbV9sb3dXYXRlcm1hcms7IH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci0gICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfc2FtZTxk
b3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+Ojp0eXBl
IGdldCh2b2lkKiBhZGRyZXNzKQorICAgIFQgZ2V0KHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAg
ICAgICBQYWdlKiBwYWdlID0gcGFnZUZvcihhZGRyZXNzKTsKICAgICAgICAgcmV0dXJuIHBhZ2Ut
PmdldDxUPihhZGRyZXNzKTsKICAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBU
IGdldCh2b2lkKiBsb2dpY2FsQmFzZUFkZHJlc3MsIHB0cmRpZmZfdCBvZmZzZXQpCisgICAgewor
ICAgICAgICByZXR1cm4gZ2V0PFQ+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGxvZ2ljYWxC
YXNlQWRkcmVzcykgKyBvZmZzZXQpOworICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfc2FtZTxkb3VibGUs
IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWU+Ojp0eXBlPgorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBzZXQodm9pZCogYWRkcmVzcywgVCB2YWx1ZSkK
ICAgICB7CiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBwYWdlRm9yKGFkZHJlc3MpOwpAQCAtMTQyLDE4
ICsxNjAsMTAgQEAgcHVibGljOgogICAgICAgICBpZiAoY2h1bmtBZGRyZXNzIDwgbV9sb3dXYXRl
cm1hcmspCiAgICAgICAgICAgICBtX2xvd1dhdGVybWFyayA9IGNodW5rQWRkcmVzczsKICAgICB9
Ci0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfc2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6
dmFsdWUsIFQ+Ojp0eXBlIGdldCh2b2lkKiBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgUGFnZSog
cGFnZSA9IHBhZ2VGb3IoYWRkcmVzcyk7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8ZG91
YmxlPihwYWdlLT5nZXQ8dWludDY0X3Q+KGFkZHJlc3MpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
c2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWU+Ojp0
eXBlPgotICAgIHZvaWQgc2V0KHZvaWQqIGFkZHJlc3MsIGRvdWJsZSB2YWx1ZSkKKyAgICB2b2lk
IHNldCh2b2lkKiBsb2dpY2FsQmFzZUFkZHJlc3MsIHB0cmRpZmZfdCBvZmZzZXQsIFQgdmFsdWUp
CiAgICAgewotICAgICAgICBzZXQ8dWludDY0X3Q+KGFkZHJlc3MsIGJpdHdpc2VfY2FzdDx1aW50
NjRfdD4odmFsdWUpKTsKKyAgICAgICAgc2V0PFQ+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+
KGxvZ2ljYWxCYXNlQWRkcmVzcykgKyBvZmZzZXQsIHZhbHVlKTsKICAgICB9CiAKICAgICBKU19F
WFBPUlRfUFJJVkFURSBQYWdlKiBlbnN1cmVQYWdlRm9yKHZvaWQqIGFkZHJlc3MpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAJKHJl
dmlzaW9uIDIyMTAxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFBy
b2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMyLDggQEAKIG5hbWVzcGFjZSBKU0Mgewog
CiAjaWYgRU5BQkxFKEpJVCkKKy8vIEZJWE1FOiBUaGlzIGlzIGJlaW5nIHN1cHBsYW50ZWQgYnkg
b2JzZXJ2ZVJlc3VsdCgpLiBSZW1vdmUgdGhpcyBvbmUKKy8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUgaGFzIGJlZW4gZml4ZWQuCiB2b2lkIEFyaXRoUHJv
ZmlsZTo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJl
Z3MsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSkKIHsKICAgICBpZiAoIXNob3VsZEVtaXRTZXREb3Vi
bGUoKSAmJiAhc2hvdWxkRW1pdFNldE5vbk51bWJlcigpKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaAkocmV2aXNpb24gMjIxMDE3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIxMSw2ICsyMTEsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEpJVCkgICAgCiAgICAgLy8g
U2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwg
TmVnWmVyb0RvdWJsZSkgaWYgaXQgc2VlcyBhCiAgICAgLy8gZG91YmxlLiBTZXRzIE5vbk51bWJl
ciBpZiBpdCBzZWVzIGEgbm9uLW51bWJlci4KKyAgICAvLyBGSVhNRTogVGhpcyBpcyBiZWluZyBz
dXBwbGFudGVkIGJ5IG9ic2VydmVSZXN1bHQoKS4gUmVtb3ZlIHRoaXMgb25lCisgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NSBoYXMgYmVlbiBmaXhl
ZC4KICAgICB2b2lkIGVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYsIEpTVmFsdWVSZWdz
LCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycyk7CiAgICAgCiAgICAgLy8gU2V0
cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVn
WmVyb0RvdWJsZSkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQ
cm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fy
cmF5UHJvZmlsZS5oCShyZXZpc2lvbiAyMjEwMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjE4LDYgKzIxOCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqKTsKICAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUq
IGxhc3RTZWVuU3RydWN0dXJlKTsKICAgICAKKyAgICB2b2lkIG9ic2VydmVBcnJheU1vZGUoQXJy
YXlNb2RlcyBtb2RlKSB7IG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHw9IG1vZGU7IH0KICAgICBBcnJh
eU1vZGVzIG9ic2VydmVkQXJyYXlNb2Rlcyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25z
dCB7IHJldHVybiBtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJvb2wgbWF5SW50ZXJjZXB0
SW5kZXhlZEFjY2Vzc2VzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJu
IG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzOyB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjIxMDE3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIyODMsNiArMjI4Myw0OCBAQCBib29sIENvZGVCbG9jazo6Y2hlY2tJZk9wdGlt
aXphdGlvblRocmVzCiAgICAgcmV0dXJuIG1faml0RXhlY3V0ZUNvdW50ZXIuY2hlY2tJZlRocmVz
aG9sZENyb3NzZWRBbmRTZXQodGhpcyk7CiB9CiAKK2F1dG8gQ29kZUJsb2NrOjp1cGRhdGVPU1JF
eGl0Q291bnRlckFuZENoZWNrSWZOZWVkVG9SZW9wdGltaXplKERGRzo6T1NSRXhpdEJhc2UmIGV4
aXQpIC0+IE9wdGltaXplQWN0aW9uCit7CisgICAgZXhpdC5tX2NvdW50Kys7CisKKyAgICBpZiAo
IWV4aXRLaW5kTWF5SmV0dGlzb24oZXhpdC5tX2tpbmQpKQorICAgICAgICByZXR1cm4gT3B0aW1p
emVBY3Rpb246Ok5vbmU7CisKKyAgICBtX29zckV4aXRDb3VudGVyKys7CisKKyAgICBDb2RlQmxv
Y2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gYmFzZWxpbmVBbHRlcm5hdGl2ZSgpOworICAgIGlmIChV
TkxJS0VMWShiYXNlbGluZUNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKS5oYXNDcm9zc2Vk
VGhyZXNob2xkKCkpKQorICAgICAgICByZXR1cm4gT3B0aW1pemVBY3Rpb246Ok9wdGltaXplTm93
OworCisgICAgLy8gV2Ugd2FudCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYSBwb3NzaWJpbGl0
eSB0aGF0IHdlJ3JlIGluIGEgbG9vcC4gRm9yIHRoZSBvdXRlcm1vc3QKKyAgICAvLyBjb2RlIGJs
b2NrIGluIHRoZSBpbmxpbmUgc3RhY2ssIHdlIGhhbmRsZSB0aGlzIGFwcHJvcHJpYXRlbHkgYnkg
aGF2aW5nIHRoZSBsb29wIE9TUiB0cmlnZ2VyCisgICAgLy8gY2hlY2sgdGhlIGV4aXQgY291bnQg
b2YgdGhlIHJlcGxhY2VtZW50IG9mIHRoZSBDb2RlQmxvY2sgZnJvbSB3aGljaCB3ZSBhcmUgT1NS
aW5nLiBUaGUKKyAgICAvLyBwcm9ibGVtIGlzIHRoZSBpbmxpbmVkIGZ1bmN0aW9ucywgd2hpY2gg
bWlnaHQgYWxzbyBoYXZlIGxvb3BzLCBidXQgd2hvc2UgYmFzZWxpbmUgdmVyc2lvbnMKKyAgICAv
LyBkb24ndCBrbm93IHdoZXJlIHRvIGxvb2sgZm9yIHRoZSBleGl0IGNvdW50LiBGaWd1cmUgb3V0
IGlmIHRob3NlIGxvb3BzIGFyZSBzZXZlcmUgZW5vdWdoCisgICAgLy8gdGhhdCB3ZSBoYWQgdHJp
ZWQgdG8gT1NSIGVudGVyLiBJZiBzbywgdGhlbiB3ZSBzaG91bGQgdXNlIHRoZSBsb29wIHJlb3B0
aW1pemF0aW9uIHRyaWdnZXIuCisgICAgLy8gT3RoZXJ3aXNlLCB3ZSBzaG91bGQgdXNlIHRoZSBu
b3JtYWwgcmVvcHRpbWl6YXRpb24gdHJpZ2dlci4KKworICAgIGJvb2wgZGlkVHJ5VG9FbnRlcklu
TG9vcCA9IGZhbHNlOworICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUg
PSBleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZTsgaW5s
aW5lQ2FsbEZyYW1lID0gaW5saW5lQ2FsbEZyYW1lLT5kaXJlY3RDYWxsZXIuaW5saW5lQ2FsbEZy
YW1lKSB7CisgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLT5v
d25lclNjcmlwdEV4ZWN1dGFibGUoKS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgpKSB7CisgICAgICAg
ICAgICBkaWRUcnlUb0VudGVySW5Mb29wID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgfQorCisgICAgdWludDMyX3QgdGhyZXNob2xkID0gZGlkVHJ5VG9FbnRlcklu
TG9vcAorICAgICAgICA/IGV4aXRDb3VudFRocmVzaG9sZEZvclJlb3B0aW1pemF0aW9uRnJvbUxv
b3AoKQorICAgICAgICA6IGV4aXRDb3VudFRocmVzaG9sZEZvclJlb3B0aW1pemF0aW9uKCk7CisK
KyAgICBpZiAobV9vc3JFeGl0Q291bnRlciA+IHRocmVzaG9sZCkKKyAgICAgICAgcmV0dXJuIE9w
dGltaXplQWN0aW9uOjpPcHRpbWl6ZU5vdzsKKworICAgIC8vIEFkanVzdCB0aGUgZXhlY3V0aW9u
IGNvdW50ZXIgc3VjaCB0aGF0IHRoZSB0YXJnZXQgaXMgdG8gb25seSBvcHRpbWl6ZSBhZnRlciBh
IHdoaWxlLgorICAgIGludDMyX3QgYWN0aXZlVGhyZXNob2xkID0gYmFzZWxpbmVDb2RlQmxvY2st
PmFkanVzdGVkQ291bnRlclZhbHVlKE9wdGlvbnM6OnRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJM
b25nV2FybVVwKCkpOworICAgIG1faml0RXhlY3V0ZUNvdW50ZXIuc2V0TmV3VGhyZXNob2xkKGFj
dGl2ZVRocmVzaG9sZCwgYmFzZWxpbmVDb2RlQmxvY2spOworICAgIHJldHVybiBPcHRpbWl6ZUFj
dGlvbjo6Tm9uZTsKK30KKwogdm9pZCBDb2RlQmxvY2s6Om9wdGltaXplTmV4dEludm9jYXRpb24o
KQogewogICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMjEwMTcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTc3LDYgKzc3LDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCituYW1lc3BhY2UgREZHIHsKK3N0
cnVjdCBPU1JFeGl0QmFzZTsKK30gLy8gbmFtZXNwYWNlIERGRworCiBjbGFzcyBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM7CiBjbGFzcyBDb2RlQmxvY2tTZXQ7CiBjbGFzcyBFeGVjU3RhdGU7CkBA
IC03NjEsOCArNzY1LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY291bnRPU1JFeGl0KCkgeyBt
X29zckV4aXRDb3VudGVyKys7IH0KIAotICAgIHVpbnQzMl90KiBhZGRyZXNzT2ZPU1JFeGl0Q291
bnRlcigpIHsgcmV0dXJuICZtX29zckV4aXRDb3VudGVyOyB9CisgICAgZW51bSBjbGFzcyBPcHRp
bWl6ZUFjdGlvbiB7IE5vbmUsIE9wdGltaXplTm93IH07CisgICAgT3B0aW1pemVBY3Rpb24gdXBk
YXRlT1NSRXhpdENvdW50ZXJBbmRDaGVja0lmTmVlZFRvUmVvcHRpbWl6ZShERkc6Ok9TUkV4aXRC
YXNlJik7CiAKKyAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NS4KICAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mT1NSRXhpdENvdW50ZXIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29k
ZUJsb2NrLCBtX29zckV4aXRDb3VudGVyKTsgfQogCiAgICAgdWludDMyX3QgYWRqdXN0ZWRFeGl0
Q291bnRUaHJlc2hvbGQodWludDMyX3QgZGVzaXJlZFRocmVzaG9sZCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmgJKHJldmlz
aW9uIDIyMTAxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRpb25D
b3VudGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgZW51bSBDb3VudGluZ1Zh
cmlhbnQgewogZG91YmxlIGFwcGx5TWVtb3J5VXNhZ2VIZXVyaXN0aWNzKGludDMyX3QgdmFsdWUs
IENvZGVCbG9jayopOwogaW50MzJfdCBhcHBseU1lbW9yeVVzYWdlSGV1cmlzdGljc0FuZENvbnZl
cnRUb0ludChpbnQzMl90IHZhbHVlLCBDb2RlQmxvY2sqKTsKIAorLy8gRklYTUU6IHJlbW92ZSB0
aGlzIHdoZW4gd2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzUxNDUuCiBpbmxpbmUgaW50MzJfdCBmb3JtYXR0ZWRUb3RhbEV4ZWN1dGlvbkNvdW50KGZsb2F0
IHZhbHVlKQogewogICAgIHVuaW9uIHsKQEAgLTU3LDYgKzU4LDcgQEAgcHVibGljOgogICAgIEV4
ZWN1dGlvbkNvdW50ZXIoKTsKICAgICB2b2lkIGZvcmNlU2xvd1BhdGhDb25jdXJyZW50bHkoKTsg
Ly8gSWYgeW91IHVzZSB0aGlzLCBjaGVja0lmVGhyZXNob2xkQ3Jvc3NlZEFuZFNldCgpIG1heSBz
dGlsbCByZXR1cm4gZmFsc2UuCiAgICAgYm9vbCBjaGVja0lmVGhyZXNob2xkQ3Jvc3NlZEFuZFNl
dChDb2RlQmxvY2sqKTsKKyAgICBib29sIGhhc0Nyb3NzZWRUaHJlc2hvbGQoKSBjb25zdCB7IHJl
dHVybiBtX2NvdW50ZXIgPj0gMDsgfQogICAgIHZvaWQgc2V0TmV3VGhyZXNob2xkKGludDMyX3Qg
dGhyZXNob2xkLCBDb2RlQmxvY2sqKTsKICAgICB2b2lkIGRlZmVySW5kZWZpbml0ZWx5KCk7CiAg
ICAgZG91YmxlIGNvdW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihtX3Rv
dGFsQ291bnQpICsgbV9jb3VudGVyOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUu
Y3BwCShyZXZpc2lvbiAyMjEwMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDYsNiArNDYsOCBAQCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIE1ldGhvZE9mR2V0
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorLy8gRklYTUU6IFRoaXMgaXMgYmVpbmcgc3VwcGxh
bnRlZCBieSByZXBvcnRWYWx1ZSgpLiBSZW1vdmUgdGhpcyBvbmUKKy8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUgaGFzIGJlZW4gZml4ZWQuCiB2b2lkIE1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMm
IGppdCwgSlNWYWx1ZVJlZ3MgcmVncykgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fa2luZCkgewpA
QCAtNzQsNiArNzYsMzQgQEAgdm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0
UgogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3ZvaWQgTWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZTo6cmVwb3J0VmFsdWUoSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBz
d2l0Y2ggKG1fa2luZCkgeworICAgIGNhc2UgTm9uZToKKyAgICAgICAgcmV0dXJuOworCisgICAg
Y2FzZSBSZWFkeToKKyAgICAgICAgKnUucHJvZmlsZS0+c3BlY0ZhaWxCdWNrZXQoMCkgPSBKU1Zh
bHVlOjplbmNvZGUodmFsdWUpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIExhenlPcGVy
YW5kOiB7CisgICAgICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5IGtleSh1LmxhenlPcGVy
YW5kLmJ5dGVjb2RlT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIodS5sYXp5T3BlcmFuZC5vcGVyYW5k
KSk7CisKKyAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcih1LmxhenlPcGVyYW5kLmNv
ZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIHByb2Zp
bGUgPQorICAgICAgICB1LmxhenlPcGVyYW5kLmNvZGVCbG9jay0+bGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGVzKCkuYWRkKGxvY2tlciwga2V5KTsKKyAgICAgICAgKnByb2ZpbGUtPnNwZWNGYWlsQnVj
a2V0KDApID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGNhc2UgQXJpdGhQcm9maWxlUmVhZHk6IHsKKyAgICAgICAgdS5hcml0aFByb2ZpbGUt
Pm9ic2VydmVSZXN1bHQodmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfSB9CisKKyAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAog
I2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5o
CShyZXZpc2lvbiAyMjEwMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0
aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcwLDkgKzcw
LDEyIEBAIHB1YmxpYzoKICAgICAgICAgQ29kZUJsb2NrKiwgY29uc3QgTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVLZXkmKTsKICAgICAKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Qg
eyByZXR1cm4gbV9raW5kICE9IE5vbmU7IH0KLSAgICAKKworICAgIC8vIEZJWE1FOiBlbWl0UmVw
b3J0VmFsdWUgaXMgYmVpbmcgc3VwcGxhbnRlZCBieSByZXBvcnRWYWx1ZSgpLiBSZW1vdmUgdGhp
cyBvbmUKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1
MTQ1IGhhcyBiZWVuIGZpeGVkLgogICAgIHZvaWQgZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVy
cyYsIEpTVmFsdWVSZWdzKSBjb25zdDsKLSAgICAKKyAgICB2b2lkIHJlcG9ydFZhbHVlKEpTVmFs
dWUpOworCiBwcml2YXRlOgogICAgIGVudW0gS2luZCB7CiAgICAgICAgIE5vbmUsCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAyMjEwMTcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTQsIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC04OSw3ICs4OSw3IEBAIHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBjb21waWxl
SW1wbCgKICAgICAKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBhbnkgc3R1YnMgdGhhdCB0aGUgREZH
IGlzIGdvaW5nIHRvIHVzZSBhcmUgaW5pdGlhbGl6ZWQuIFdlIHdhbnQgdG8KICAgICAvLyBtYWtl
IHN1cmUgdGhhdCBhbGwgSklUIGNvZGUgZ2VuZXJhdGlvbiBkb2VzIGZpbmFsaXphdGlvbiBvbiB0
aGUgbWFpbiB0aHJlYWQuCi0gICAgdm0uZ2V0Q1RJU3R1Yihvc3JFeGl0R2VuZXJhdGlvblRodW5r
R2VuZXJhdG9yKTsKKyAgICB2bS5nZXRDVElTdHViKG9zckV4aXRUaHVua0dlbmVyYXRvcik7CiAg
ICAgdm0uZ2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3Ip
OwogICAgIHZtLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcik7CiAgICAgdm0uZ2V0
Q1RJU3R1YihsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDIyMTAx
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMDMsNyArMzAzLDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5r
QnVmZmVyJiBsaW5rQgogICAgICAgICAgICAgbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwo
cmVjb3JkLmNhbGwpKTsKICAgICB9CiAgICAgCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9z
ckV4aXRUaHVuayA9IHZtKCktPmdldENUSVN0dWIob3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVy
YXRvcik7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRUaHVuayA9IHZtKCktPmdl
dENUSVN0dWIob3NyRXhpdFRodW5rR2VuZXJhdG9yKTsKICAgICBDb2RlTG9jYXRpb25MYWJlbCB0
YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbChvc3JFeGl0VGh1bmsuY29kZSgpKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9qaXRDb2RlLT5vc3JFeGl0LnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIE9TUkV4aXQmIGV4aXQgPSBtX2ppdENvZGUtPm9zckV4aXRbaV07CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHJldmlzaW9uIDIyMTAxNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjksMTggKzI5LDMyNyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAi
QXNzZW1ibHlIZWxwZXJzLmgiCisjaW5jbHVkZSAiQ2xvbmVkQXJndW1lbnRzLmgiCiAjaW5jbHVk
ZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdNYXlFeGl0LmgiCi0jaW5jbHVkZSAiREZHT1NS
RXhpdENvbXBpbGVyQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdFByZXBhcmF0aW9uLmgi
CiAjaW5jbHVkZSAiREZHT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkRGR1NwZWN1bGF0aXZlSklU
LmgiCi0jaW5jbHVkZSAiRnJhbWVUcmFjZXJzLmgiCisjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRz
LmgiCisjaW5jbHVkZSAiSW5saW5lQ2FsbEZyYW1lLmgiIC8vIG1sYW0KICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk9wZXJhbmRzSW5s
aW5lcy5oIgorI2luY2x1ZGUgIlByb2JlRnJhbWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogCit1c2luZyBDUFVTdGF0ZSA9IFByb2JlOjpDUFVTdGF0ZTsKK3VzaW5nIENv
bnRleHQgPSBQcm9iZTo6Q29udGV4dDsKK3VzaW5nIEZyYW1lID0gUHJvYmU6OkZyYW1lOworCitz
dGF0aWMgdm9pZCBpbnRlcnByZXRFeGl0KENvbnRleHQmLCBWTSYsIE9TUkV4aXQmLCBjb25zdCBP
cGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYsIFNwZWN1bGF0aW9uUmVjb3ZlcnkqKTsKK3N0YXRpYyB2
b2lkIHByaW50T1NSRXhpdChDUFVTdGF0ZSYsIHVpbnQzMl90IG9zckV4aXRJbmRleCwgY29uc3Qg
T1NSRXhpdCYpOworCisjaWYgMCAvLyBtbGFtIFJFTU9WRQorLy8gQ29udmVuaWVuY2UgaGVscGVy
IGZvciByZWFkaW5nIGFuZCB3cml0aW5nIG1lbW9yeS4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citj
bGFzcyBNZW1vcnkgeworcHVibGljOgorICAgIE1lbW9yeSh2b2lkKiBiYXNlLCBzaXplX3Qgb2Zm
c2V0ID0gMCkKKyAgICAgICAgOiBtX2FkZHJlc3MocmVpbnRlcnByZXRfY2FzdDxUKj4ocmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4oYmFzZSkgKyBvZmZzZXQpKQorICAgIHsgfQorCisgICAgdm9p
ZCBvcGVyYXRvcj0oVCB2YWx1ZSkgeyAqbV9hZGRyZXNzID0gdmFsdWU7IH0KKyAgICBvcGVyYXRv
ciBUKCkgY29uc3QgeyByZXR1cm4gKm1fYWRkcmVzczsgfQorCitwcm90ZWN0ZWQ6CisgICAgVCog
bV9hZGRyZXNzOworfTsKKworY2xhc3MgT1NSUmVzdWx0U3RhY2sgeworcHVibGljOgorICAgIE9T
UlJlc3VsdFN0YWNrKHZvaWQqIGZyYW1lQmFzZSwgc2l6ZV90IHNpemUpCisgICAgICAgIDogbV9m
cmFtZUJhc2UoZnJhbWVCYXNlKQorICAgICAgICAsIG1fc2l6ZShzaXplKQorICAgIHsgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBjbGFzcyBTbG90IDogcHVibGljIE1lbW9yeTxU
PiB7CisgICAgcHVibGljOgorICAgICAgICBTbG90KHZvaWQqIGZyYW1lQmFzZSwgaW50IG9wZXJh
bmQpCisgICAgICAgICAgICA6IE1lbW9yeTxUPihmcmFtZUJhc2UsIHN0YXRpY19jYXN0PFZpcnR1
YWxSZWdpc3Rlcj4ob3BlcmFuZCkub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKQorICAgICAg
ICB7IH0KKworICAgICAgICB2b2lkIG9wZXJhdG9yPShUIHZhbHVlKSB7ICpNZW1vcnk8VD46Om1f
YWRkcmVzcyA9IHZhbHVlOyB9CisgICAgICAgIG9wZXJhdG9yIFQoKSBjb25zdCB7IHJldHVybiAq
TWVtb3J5PFQ+OjptX2FkZHJlc3M7IH0KKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHZv
aWQgc2V0UGF5bG9hZChUIHZhbHVlKSB7ICpNZW1vcnk8VD46Om1fYWRkcmVzcyA9IHZhbHVlOyB9
CisgICAgICAgIFQgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuICpNZW1vcnk8VD46Om1fYWRkcmVz
czsgfQorI2Vsc2UKKyAgICAgICAgdm9pZCBzZXRUYWcoaW50MzJfdCB2YWx1ZSkgeyBNZW1vcnk8
aW50MzJfdD4oTWVtb3J5PFQ+OjptX2FkZHJlc3MsIFRhZ09mZnNldCkgPSB2YWx1ZTsgfQorICAg
ICAgICBpbnQzMl90IHRhZygpIGNvbnN0IHsgcmV0dXJuIE1lbW9yeTxpbnQzMl90PihNZW1vcnk8
VD46Om1fYWRkcmVzcywgVGFnT2Zmc2V0KTsgfQorICAgICAgICB2b2lkIHNldFBheWxvYWQoVCB2
YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHNpemVvZihUKSA9PSBzaXplb2Yo
aW50MzJfdCkpOworICAgICAgICAgICAgTWVtb3J5PFQ+KE1lbW9yeTxUPjo6bV9hZGRyZXNzLCBQ
YXlsb2FkT2Zmc2V0KSA9IHZhbHVlOworICAgICAgICB9CisgICAgICAgIFQgcGF5bG9hZCgpIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzaXplb2YoVCkgPT0gc2l6ZW9mKGlu
dDMyX3QpKTsKKyAgICAgICAgICAgIHJldHVybiBNZW1vcnk8VD4oTWVtb3J5PFQ+OjptX2FkZHJl
c3MsIFBheWxvYWRPZmZzZXQpOworICAgICAgICB9CisjZW5kaWYKKyAgICB9OworCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gU2xvdDxUPiBzbG90KGludCBvcGVyYW5kKSB7IHJldHVybiBTbG90
PFQ+KG1fZnJhbWVCYXNlLCBvcGVyYW5kKTsgfQorCitwcml2YXRlOgorICAgIHZvaWQqIG1fZnJh
bWVCYXNlOworICAgIHNpemVfdCBtX3NpemU7Cit9OworCisvLyBCYXNlZCBvbiBBc3NlbWJseUhl
bHBlcjo6Ym94SW50MzIoKS4KK3N0YXRpYyBpbnQ2NF90IGJveEludDMyKGludDMyX3QgdmFsdWUp
Cit7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KHZhbHVlKSB8IFRhZ1R5cGVOdW1iZXI7CisjZWxzZQorICAgIEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IgZGVzY3JpcHRvcjsKKyAgICBkZXNjcmlwdG9yLmFzQml0cy5wYXlsb2FkID0gdmFsdWU7Cisg
ICAgZGVzY3JpcHRvci5hc0JpdHMudGFnID0gSlNWYWx1ZTo6SW50MzJUYWc7CisgICAgcmV0dXJu
IGRlc2NyaXB0b3IuYXNJbnQ2NDsKKyNlbmRpZgorfQorCisvLyBCYXNlZCBvbiBBc3NlbWJseUhl
bHBlcnM6OmJveERvdWJsZSgpLgorc3RhdGljIGludDY0X3QgYm94RG91YmxlKGRvdWJsZSB2YWx1
ZSkKK3sKKyAgICBpbnQ2NF90IHJlc3VsdCA9IGJpdHdpc2VfY2FzdDxpbnQ2NF90Pih2YWx1ZSk7
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXN1bHQgLT0gVGFnVHlwZU51bWJlcjsKKy8vICAg
IGppdEFzc2VydElzSlNEb3VibGUoZ3ByKTsKKyNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7Cit9
CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorLy8gQmFzZWQgb24gQXNzZW1ibHlIZWxwZXJzOjpib3hJ
bnQ1MigpLgorc3RhdGljIGludDY0X3QgYm94SW50NTIoaW50NjRfdCB2YWx1ZSkKK3sKKyAgICBp
bnQ2NF90IHZhbHVlQXMzMkJpdEludCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlKTsKKyAg
ICBpZiAodmFsdWVBczMyQml0SW50ID09IHZhbHVlKQorICAgICAgICByZXR1cm4gYm94SW50MzIo
dmFsdWUpOworICAgIHJldHVybiBib3hEb3VibGUoc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkp
OworfQorI2VuZGlmCisjZW5kaWYgLy8gbWxhbSBSRU1PVkUKKworLy8gQmFzZWQgb24gQXNzZW1i
bHlIZWxwZXJzOjpqaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpLgoraW5saW5lIHN0YXRpYyB2
b2lkIGFzc2VydEhhc1ZhbGlkQ2FsbEZyYW1lKENQVVN0YXRlJiBjcHUpCit7CisgICAgQVNTRVJU
X1VOVVNFRChjcHUsICEoY3B1LmZwPHVpbnRwdHJfdD4oKSAmIDB4NykpOworfQorCisvLyBCYXNl
ZCBvbiBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydFRhZ3NJblBsYWNlKCkuCitpbmxpbmUgc3Rh
dGljIHZvaWQgYXNzZXJ0VGFnc0luUGxhY2UoQ1BVU3RhdGUmIGNwdSkKK3sKKyAgICBVTlVTRURf
UEFSQU0oY3B1KTsgLy8gRm9yIDMyLWJpdCBhbmQgcmVsZWFzZSBidWlsZHMuCisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICBBU1NFUlQoY3B1LmdwcihHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIpID09IFRhZ1R5cGVOdW1iZXIpOworICAgIEFTU0VSVChjcHUuZ3ByKEdQUkluZm86OnRhZ01h
c2tSZWdpc3RlcikgPT0gVGFnTWFzayk7CisjZW5kaWYKK30KKworLy8gQmFzZWQgb24gQXNzZW1i
bHlIZWxwZXJzOjplbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpLgorc3RhdGljIHZv
aWQgbWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycyhDUFVTdGF0ZSYgY3B1KQoreworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgY3B1LmdwcihHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIp
ID0gVGFnVHlwZU51bWJlcjsKKyAgICBjcHUuZ3ByKEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcikg
PSBUYWdUeXBlTnVtYmVyIHwgVGFnQml0VHlwZU90aGVyOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0oY3B1KTsKKyNlbmRpZgorfQorCisjaWYgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RF
UlMgPiAwCisKKy8vIEJhc2VkIG9uIEFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmVDYWxsZWVT
YXZlc0ZvcigpLgorc3RhdGljIHZvaWQgcmVzdG9yZUNhbGxlZVNhdmVzRm9yKENvbnRleHQmIGNv
bnRleHQsIENvZGVCbG9jayogY29kZUJsb2NrKQoreworICAgIGF1dG8mIGNwdSA9IGNvbnRleHQu
Y3B1OworICAgIGF1dG8mIHN0YWNrID0gY29udGV4dC5zdGFjaygpOworICAgIEFTU0VSVChjb2Rl
QmxvY2spOworCisgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0gY29kZUJs
b2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmVS
ZWdpc3RlcnMgPSBSZWdpc3RlclNldChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVn
aXN0ZXJTZXQ6OmFsbEZQUnMoKSk7CisgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxl
ZVNhdmVzLT5zaXplKCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJD
b3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZl
cy0+YXQoaSk7CisgICAgICAgIGlmIChkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVn
KCkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGNwdS5ncHIoZW50cnkucmVnKCku
Z3ByKCkpID0gc3RhY2suZ2V0PHVpbnRwdHJfdD4oY3B1LmZwKCksIGVudHJ5Lm9mZnNldCgpKTsK
KyAgIH0KK30KKworLy8gQmFzZWQgb24gQXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZUNhbGxlZVNh
dmVzRm9yKCkuCitzdGF0aWMgdm9pZCBzYXZlQ2FsbGVlU2F2ZXNGb3IoQ29udGV4dCYgY29udGV4
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7
CisgICAgYXV0byYgc3RhY2sgPSBjb250ZXh0LnN0YWNrKCk7CisgICAgQVNTRVJUKGNvZGVCbG9j
ayk7CisKKyAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2st
PmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVy
cyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNl
dDo6YWxsRlBScygpKTsKKyAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMt
PnNpemUoKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBp
KyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChp
KTsKKyAgICAgICAgaWYgKGRvbnRTYXZlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgc3RhY2suc2V0KGNwdS5mcCgpLCBlbnRyeS5vZmZz
ZXQoKSwgY3B1Lmdwcjx1aW50cHRyX3Q+KGVudHJ5LnJlZygpLmdwcigpKSk7CisgICAgfQorfQor
CisvLyBCYXNlZCBvbiBBc3NlbWJseUhlbHBlcnM6OnJlc3RvcmVDYWxsZWVTYXZlc0Zyb21WTUVu
dHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcigpLgorc3RhdGljIHZvaWQgcmVzdG9yZUNhbGxlZVNh
dmVzRnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKENvbnRleHQmIGNvbnRleHQsIFZN
JiB2bSkKK3sKKyAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKKyAgICBhdXRvJiBzdGFjayA9
IGNvbnRleHQuc3RhY2soKTsKKworICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBhbGxDYWxsZWVT
YXZlcyA9IFZNOjpnZXRBbGxDYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7CisgICAgUmVnaXN0
ZXJTZXQgZG9udFJlc3RvcmVSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMo
KTsKKyAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gYWxsQ2FsbGVlU2F2ZXMtPnNpemUoKTsK
KworICAgIFZNRW50cnlSZWNvcmQqIGVudHJ5UmVjb3JkID0gdm1FbnRyeVJlY29yZCh2bS50b3BW
TUVudHJ5RnJhbWUpOworICAgIHZvaWQqIGNhbGxlZVNhdmVCdWZmZXIgPSBlbnRyeVJlY29yZC0+
Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlcjsKKworICAgIC8vIFJlc3RvcmUgYWxsIGNhbGxlZSBz
YXZlcy4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7
CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBhbGxDYWxsZWVTYXZlcy0+YXQoaSk7
CisgICAgICAgIGlmIChkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChlbnRyeS5yZWcoKS5pc0dQUigpKQorICAg
ICAgICAgICAgY3B1LmdwcihlbnRyeS5yZWcoKS5ncHIoKSkgPSBzdGFjay5nZXQ8dWludHB0cl90
PihjYWxsZWVTYXZlQnVmZmVyLCBlbnRyeS5vZmZzZXQoKSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGNwdS5mcHIoZW50cnkucmVnKCkuZnByKCkpID0gc3RhY2suZ2V0PGRvdWJsZT4oY2Fs
bGVlU2F2ZUJ1ZmZlciwgZW50cnkub2Zmc2V0KCkpOworICAgIH0KK30KKworLy8gQmFzZWQgb24g
QXNzZW1ibHlIZWxwZXJzOjpjb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVz
QnVmZmVyKCkuCitzdGF0aWMgdm9pZCBjb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxl
ZVNhdmVzQnVmZmVyKENvbnRleHQmIGNvbnRleHQsIFZNJiB2bSkKK3sKKyAgICBhdXRvJiBjcHUg
PSBjb250ZXh0LmNwdTsKKyAgICBhdXRvJiBzdGFjayA9IGNvbnRleHQuc3RhY2soKTsKKworICAg
IFZNRW50cnlSZWNvcmQqIGVudHJ5UmVjb3JkID0gdm1FbnRyeVJlY29yZCh2bS50b3BWTUVudHJ5
RnJhbWUpOworICAgIHZvaWQqIGNhbGxlZVNhdmVzQnVmZmVyID0gZW50cnlSZWNvcmQtPmNhbGxl
ZVNhdmVSZWdpc3RlcnNCdWZmZXI7CisKKyAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2Fs
bGVlU2F2ZXMgPSBWTTo6Z2V0QWxsQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0cygpOworICAgIFJl
Z2lzdGVyU2V0IGRvbnRDb3B5UmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJz
KCk7CisgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGFsbENhbGxlZVNhdmVzLT5zaXplKCk7
CisKKyAgICBBU1NFUlQoaXM2NEJpdCgpKTsgLy8gd2UgbmVlZAorICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNl
dCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5hdChpKTsKKyAgICAgICAgaWYgKGRvbnRDb3B5UmVn
aXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
aWYgKGVudHJ5LnJlZygpLmlzR1BSKCkpCisgICAgICAgICAgICBzdGFjay5zZXQoY2FsbGVlU2F2
ZXNCdWZmZXIsIGVudHJ5Lm9mZnNldCgpLCBjcHUuZ3ByPHVpbnRwdHJfdD4oZW50cnkucmVnKCku
Z3ByKCkpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3RhY2suc2V0KGNhbGxlZVNhdmVz
QnVmZmVyLCBlbnRyeS5vZmZzZXQoKSwgY3B1LmZwcjx1aW50cHRyX3Q+KGVudHJ5LnJlZygpLmZw
cigpKSk7CisgICAgfQorfQorCisvLyBCYXNlZCBvbiBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZl
T3JDb3B5Q2FsbGVlU2F2ZXNGb3IoKS4KK3N0YXRpYyB2b2lkIHNhdmVPckNvcHlDYWxsZWVTYXZl
c0ZvcihDb250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmlydHVhbFJlZ2lz
dGVyIG9mZnNldFZpcnR1YWxSZWdpc3RlciwgYm9vbCB3YXNDYWxsZWRWaWFUYWlsQ2FsbCkKK3sK
KyAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKKyAgICBGcmFtZSBmcmFtZShjb250ZXh0KTsK
KyAgICBBU1NFUlQoY29kZUJsb2NrKTsKKworICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxs
ZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOworICAgIFJlZ2lzdGVy
U2V0IGRvbnRTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVn
aXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjphbGxGUFJzKCkpOworICAgIHVuc2lnbmVkIHJlZ2lzdGVy
Q291bnQgPSBjYWxsZWVTYXZlcy0+c2l6ZSgpOworCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBS
ZWdpc3RlclNldCBiYXNlbGluZUNhbGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxp
bmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisjZW5kaWYKKworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBl
bnRyeSA9IGNhbGxlZVNhdmVzLT5hdChpKTsKKyAgICAgICAgaWYgKGRvbnRTYXZlUmVnaXN0ZXJz
LmdldChlbnRyeS5yZWcoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICB1aW50
cHRyX3Qgc2F2ZWRSZWdpc3RlclZhbHVlOworCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAg
ICAgVU5VU0VEX1BBUkFNKHdhc0NhbGxlZFZpYVRhaWxDYWxsKTsKKyNlbHNlCisgICAgICAgIGlm
ICh3YXNDYWxsZWRWaWFUYWlsQ2FsbCAmJiBiYXNlbGluZUNhbGxlZVNhdmVzLmdldChlbnRyeS5y
ZWcoKSkpCisgICAgICAgICAgICBzYXZlZFJlZ2lzdGVyVmFsdWUgPSBmcmFtZS5nZXQ8dWludHB0
cl90PihlbnRyeS5vZmZzZXQoKSk7CisgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgICAgICAg
c2F2ZWRSZWdpc3RlclZhbHVlID0gY3B1LmdwcihlbnRyeS5yZWcoKS5ncHIoKSk7CisKKyAgICAg
ICAgZnJhbWUuc2V0KG9mZnNldFZpcnR1YWxSZWdpc3Rlci5vZmZzZXRJbkJ5dGVzKCkgKyBlbnRy
eS5vZmZzZXQoKSwgc2F2ZWRSZWdpc3RlclZhbHVlKTsKKyAgICB9Cit9CisjZW5kaWYgLy8gTlVN
QkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgPiAwCisKK3N0YXRpYyBKU0NlbGwqIGNyZWF0
ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4aXQoRXhlY1N0YXRlKiBleGVjLCBJbmxpbmVDYWxsRnJh
bWUqIGlubGluZUNhbGxGcmFtZSwgSlNGdW5jdGlvbiogY2FsbGVlLCBpbnQzMl90IGFyZ3VtZW50
Q291bnQpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBBU1NFUlQodm0uaGVhcC5p
c0RlZmVycmVkKCkpOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2s7CisgICAgaWYgKGlubGlu
ZUNhbGxGcmFtZSkKKyAgICAgICAgY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxp
bmVDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1lKTsKKyAgICBlbHNlCisgICAgICAgIGNvZGVCbG9j
ayA9IGV4ZWMtPmNvZGVCbG9jaygpOworCisgICAgdW5zaWduZWQgbGVuZ3RoID0gYXJndW1lbnRD
b3VudCAtIDE7CisgICAgdW5zaWduZWQgY2FwYWNpdHkgPSBzdGQ6Om1heChsZW5ndGgsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIDEpKTsKKyAgICBE
aXJlY3RBcmd1bWVudHMqIHJlc3VsdCA9IERpcmVjdEFyZ3VtZW50czo6Y3JlYXRlKAorICAgICAg
ICB2bSwgY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+ZGlyZWN0QXJndW1lbnRzU3RydWN0dXJl
KCksIGxlbmd0aCwgY2FwYWNpdHkpOworCisgICAgcmVzdWx0LT5jYWxsZWUoKS5zZXQodm0sIHJl
c3VsdCwgY2FsbGVlKTsKKworICAgIFJlZ2lzdGVyKiBhcmd1bWVudHMgPQorICAgICAgICBleGVj
LT5yZWdpc3RlcnMoKSArIChpbmxpbmVDYWxsRnJhbWUgPyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNr
T2Zmc2V0IDogMCkgKworICAgICAgICBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KDApOworICAg
IGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykKKyAgICAgICAgcmVzdWx0LT5zZXRJbmRl
eFF1aWNrbHkodm0sIGksIGFyZ3VtZW50c1tpXS5qc1ZhbHVlKCkpOworCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworc3RhdGljIEpTQ2VsbCogY3JlYXRlQ2xvbmVkQXJndW1lbnRzRHVyaW5nRXhp
dChFeGVjU3RhdGUqIGV4ZWMsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBKU0Z1
bmN0aW9uKiBjYWxsZWUsIGludDMyX3QgYXJndW1lbnRDb3VudCkKK3sKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIEFTU0VSVCh2bS5oZWFwLmlzRGVmZXJyZWQoKSk7CisKKyAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jazsKKyAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKQorICAgICAgICBjb2Rl
QmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcklubGluZUNhbGxGcmFtZShpbmxpbmVDYWxsRnJh
bWUpOworICAgIGVsc2UKKyAgICAgICAgY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisK
KyAgICB1bnNpZ25lZCBsZW5ndGggPSBhcmd1bWVudENvdW50IC0gMTsKKyAgICBDbG9uZWRBcmd1
bWVudHMqIHJlc3VsdCA9IENsb25lZEFyZ3VtZW50czo6Y3JlYXRlRW1wdHkoCisgICAgICAgIHZt
LCBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5jbG9uZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSwg
Y2FsbGVlLCBsZW5ndGgpOworCisgICAgUmVnaXN0ZXIqIGFyZ3VtZW50cyA9CisgICAgICAgIGV4
ZWMtPnJlZ2lzdGVycygpICsgKGlubGluZUNhbGxGcmFtZSA/IGlubGluZUNhbGxGcmFtZS0+c3Rh
Y2tPZmZzZXQgOiAwKSArCisgICAgICAgIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoMCk7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KQorICAgICAgICByZXN1bHQtPnB1dERp
cmVjdEluZGV4KGV4ZWMsIGksIGFyZ3VtZW50c1tpXS5qc1ZhbHVlKCkpOworCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwogT1NSRXhpdDo6T1NSRXhpdChFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291
cmNlIGpzVmFsdWVTb3VyY2UsIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgdmFsdWVQcm9m
aWxlLCBTcGVjdWxhdGl2ZUpJVCogaml0LCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWduZWQg
cmVjb3ZlcnlJbmRleCkKICAgICA6IE9TUkV4aXRCYXNlKGtpbmQsIGppdC0+bV9vcmlnaW4uZm9y
RXhpdCwgaml0LT5tX29yaWdpbi5zZW1hbnRpYywgaml0LT5tX29yaWdpbi53YXNIb2lzdGVkKQog
ICAgICwgbV9qc1ZhbHVlU291cmNlKGpzVmFsdWVTb3VyY2UpCkBAIC03OCw4ICszODcsMTIgQEAg
dm9pZCBPU1JFeGl0Ojpjb3JyZWN0SnVtcChMaW5rQnVmZmVyJiBsaQogICAgIG1fcGF0Y2hhYmxl
Q29kZU9mZnNldCA9IGxpbmtCdWZmZXIub2Zmc2V0T2YobGFiZWwpOwogfQogCi12b2lkIE9TUkV4
aXQ6OmVtaXRSZXN0b3JlQXJndW1lbnRzKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPcGVyYW5k
czxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMpCitzdGF0aWMgdm9pZCBlbWl0UmVzdG9yZUFyZ3Vt
ZW50cyhDb250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgT3BlcmFu
ZHM8VmFsdWVSZWNvdmVyeT4mIG9wZXJhbmRzKQogeworICAgIGF1dG8mIGNwdSA9IGNvbnRleHQu
Y3B1OworICAgIEZyYW1lIGZyYW1lKGNvbnRleHQpOworCisgICAgRXhlY1N0YXRlKiBleGVjID0g
Y3B1LmZwPEV4ZWNTdGF0ZSo+KCk7CiAgICAgSGFzaE1hcDxNaW5pZmllZElELCBpbnQ+IGFscmVh
ZHlBbGxvY2F0ZWRBcmd1bWVudHM7IC8vIE1hcHMgcGhhbnRvbSBhcmd1bWVudHMgbm9kZSBJRCB0
byBvcGVyYW5kLgogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5z
aXplKCk7ICsraW5kZXgpIHsKICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3Zlcnkg
PSBvcGVyYW5kc1tpbmRleF07CkBAIC05MiwxNCArNDA1LDEyIEBAIHZvaWQgT1NSRXhpdDo6ZW1p
dFJlc3RvcmVBcmd1bWVudHMoQ0NhbGwKICAgICAgICAgTWluaWZpZWRJRCBpZCA9IHJlY292ZXJ5
Lm5vZGVJRCgpOwogICAgICAgICBhdXRvIGl0ZXIgPSBhbHJlYWR5QWxsb2NhdGVkQXJndW1lbnRz
LmZpbmQoaWQpOwogICAgICAgICBpZiAoaXRlciAhPSBhbHJlYWR5QWxsb2NhdGVkQXJndW1lbnRz
LmVuZCgpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlUmVncyByZWdzID0gSlNWYWx1ZVJlZ3M6Ondp
dGhUd29BdmFpbGFibGVSZWdzKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAg
ICAgICAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihpdGVyLT52YWx1
ZSksIHJlZ3MpOwotICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUocmVncywgQ0NhbGxIZWxwZXJz
OjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3Bl
cmFuZCwgZnJhbWUuZ2V0T3BlcmFuZDxKU1ZhbHVlPihpdGVyLT52YWx1ZSkpOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGlu
ZUNhbGxGcmFtZSA9Ci0gICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmppdENvZGUoKS0+ZGZn
KCktPm1pbmlmaWVkREZHLmF0KGlkKS0+aW5saW5lQ2FsbEZyYW1lKCk7CisgICAgICAgICAgICBj
b2RlQmxvY2stPmppdENvZGUoKS0+ZGZnKCktPm1pbmlmaWVkREZHLmF0KGlkKS0+aW5saW5lQ2Fs
bEZyYW1lKCk7CiAKICAgICAgICAgaW50IHN0YWNrT2Zmc2V0OwogICAgICAgICBpZiAoaW5saW5l
Q2FsbEZyYW1lKQpAQCAtMTA3LDUzICs0MTgsNzcgQEAgdm9pZCBPU1JFeGl0OjplbWl0UmVzdG9y
ZUFyZ3VtZW50cyhDQ2FsbAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzdGFja09mZnNldCA9
IDA7CiAKLSAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUgfHwgaW5saW5lQ2FsbEZyYW1lLT5p
c0Nsb3N1cmVDYWxsKSB7Ci0gICAgICAgICAgICBqaXQubG9hZFB0cigKLSAgICAgICAgICAgICAg
ICBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Ioc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90
OjpjYWxsZWUpLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGppdC5tb3ZlKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbVB0cihpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZVJlY292ZXJ5LmNvbnN0
YW50KCkuYXNDZWxsKCkpLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAg
ICAgfQorICAgICAgICBKU0Z1bmN0aW9uKiBjYWxsZWU7CisgICAgICAgIGlmICghaW5saW5lQ2Fs
bEZyYW1lIHx8IGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkKKyAgICAgICAgICAgIGNh
bGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZnJhbWUuZ2V0T3BlcmFuZDxKU1ZhbHVlPihzdGFj
a09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkuYXNDZWxsKCkpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGlubGluZUNhbGxGcmFt
ZS0+Y2FsbGVlUmVjb3ZlcnkuY29uc3RhbnQoKS5hc0NlbGwoKSk7CiAKLSAgICAgICAgaWYgKCFp
bmxpbmVDYWxsRnJhbWUgfHwgaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgewotICAgICAg
ICAgICAgaml0LmxvYWQzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxv
YWRGb3Ioc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwKLSAgICAg
ICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBqaXQubW92ZSgKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0z
MihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpLAotICAgICAgICAgICAgICAgIEdQ
UkluZm86OnJlZ1QxKTsKLSAgICAgICAgfQorICAgICAgICBpbnQzMl90IGFyZ3VtZW50Q291bnQ7
CisgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lIHx8IGlubGluZUNhbGxGcmFtZS0+aXNWYXJh
cmdzKCkpCisgICAgICAgICAgICBhcmd1bWVudENvdW50ID0gZnJhbWUuZ2V0T3BlcmFuZDxpbnQz
Ml90PihzdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIFBheWxvYWRP
ZmZzZXQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcmd1bWVudENvdW50ID0gaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOwogCi0gICAgICAgIGppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoCi0gICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoaW5saW5lQ2FsbEZyYW1lKSwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsKKyAg
ICAgICAgSlNDZWxsKiBhcmd1bWVudHNPYmplY3Q7CiAgICAgICAgIHN3aXRjaCAocmVjb3Zlcnku
dGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBEaXJlY3RBcmd1bWVudHNUaGF0V2VyZU5vdENy
ZWF0ZWQ6Ci0gICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoYml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHNEdXJp
bmdFeGl0KSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICAgICAgYXJndW1lbnRzT2Jq
ZWN0ID0gY3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdChleGVjLCBpbmxpbmVDYWxsRnJh
bWUsIGNhbGxlZSwgYXJndW1lbnRDb3VudCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDbG9uZWRBcmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQ6Ci0gICAgICAgICAgICBqaXQu
bW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihv
cGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHNEdXJpbmdFeGl0KSksIEdQUkluZm86Om5vbkFy
Z0dQUjApOworICAgICAgICAgICAgYXJndW1lbnRzT2JqZWN0ID0gY3JlYXRlQ2xvbmVkQXJndW1l
bnRzRHVyaW5nRXhpdChleGVjLCBpbmxpbmVDYWxsRnJhbWUsIGNhbGxlZSwgYXJndW1lbnRDb3Vu
dCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQotICAgICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICAgICAgaml0LnN0
b3JlQ2VsbChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNz
Rm9yKG9wZXJhbmQpKTsKKyAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBhcmd1bWVu
dHNPYmplY3QpOwogCiAgICAgICAgIGFscmVhZHlBbGxvY2F0ZWRBcmd1bWVudHMuYWRkKGlkLCBv
cGVyYW5kKTsKICAgICB9CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBPU1JFeGl0Ojpjb21waWxl
T1NSRXhpdChFeGVjU3RhdGUqIGV4ZWMpCisjaWYgMCAvLyBtbGFtIFJFTU9WRQordm9pZCBPU1JF
eGl0OjphZGp1c3RGcmFtZUFuZEVuc3VyZVN0YWNrRm9yT1NSRXhpdChQcm9iZUNvbnRleHQqIGNv
bnRleHQpCiB7Ci0gICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKKyAgICBDUFVTdGF0ZSYgY3B1ID0gY29udGV4dC0+Y3B1
OworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGNwdS5mcDxFeGVjU3RhdGUqPigpOworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgaWYgKHZtLmNhbGxGcmFtZUZvckNhdGNoKSB7CisgICAgICAgIGV4ZWMgPSB2bS5j
YWxsRnJhbWVGb3JDYXRjaDsKKyAgICAgICAgY3B1LmZwKCkgPSBleGVjOworICAgIH0KKworICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgQVNTRVJUKGNv
ZGVCbG9jayk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRG
R0pJVCk7CisKKyAgICB1aW50MzJfdCBleGl0SW5kZXggPSB2bS5vc3JFeGl0SW5kZXg7CisgICAg
T1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKS0+b3NyRXhpdFtleGl0
SW5kZXhdOwogCi0gICAgaWYgKHZtLT5jYWxsRnJhbWVGb3JDYXRjaCkKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlQodm0tPmNhbGxGcmFtZUZvckNhdGNoID09IGV4ZWMpOworICAgIEFTU0VSVF9VTlVT
RUQoZXhpdCwgIXZtLmNhbGxGcmFtZUZvckNhdGNoIHx8IGV4aXQubV9raW5kID09IEdlbmVyaWNV
bndpbmQpOworICAgIEFTU0VSVF9VTlVTRUQoc2NvcGUsICFleGl0LmlzRXhjZXB0aW9uSGFuZGxl
cigpIHx8ICEhc2NvcGUuZXhjZXB0aW9uKCkpOworCisgICAgLy8gRW5zdXJlIHRoYXQgdGhlcmUn
cyBlbm91Z2ggcm9vbSB0byBkbyB0aGUgT1NSIGV4aXQgaW4gcGxhY2Ugb24gdGhlIHN0YWNrLgor
ICAgIHNpemVfdCBkZmdGcmFtZVNpemUgPSAtY29kZUJsb2NrLT5zdGFja1BvaW50ZXJPZmZzZXQo
KSAqIHNpemVvZihSZWdpc3Rlcik7CisgICAgc2l6ZV90IHdvcnN0Q2FzZUV4aXRGcmFtZVNpemUg
PSAoY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5yZXF1aXJlZFJlZ2lzdGVyQ291
bnRGb3JFeGl0ICogc2l6ZW9mKFJlZ2lzdGVyKSk7CisgICAgY3B1LnNwKCkgPSBjcHUuZnA8dWlu
dDhfdCo+KCkgLSBzdGQ6Om1pbihkZmdGcmFtZVNpemUsIHdvcnN0Q2FzZUV4aXRGcmFtZVNpemUp
OworfQorI2VuZGlmIC8vIG1sYW0gUkVNT1ZFCisKK3ZvaWQgT1NSRXhpdDo6ZXhlY3V0ZU9TUkV4
aXQoQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBDUFVTdGF0ZSYgY3B1ID0gY29udGV4dC5jcHU7
CisgICAgRXhlY1N0YXRlKiBleGVjID0gY3B1LmZwPEV4ZWNTdGF0ZSo+KCk7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBpZiAodm0uY2FsbEZyYW1lRm9yQ2F0Y2gpIHsKKyAgICAgICAgZXhlYyA9IHZtLmNh
bGxGcmFtZUZvckNhdGNoOworICAgICAgICBjcHUuZnAoKSA9IGV4ZWM7CisgICAgfQogCiAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBBU1NFUlQoY29k
ZUJsb2NrKTsKQEAgLTE2MSwxNiArNDk2LDE1IEBAIHZvaWQgSklUX09QRVJBVElPTiBPU1JFeGl0
Ojpjb21waWxlT1NSRXgKIAogICAgIC8vIEl0J3Mgc29ydCBvZiBwcmVmZXJhYmxlIHRoYXQgd2Ug
ZG9uJ3QgR0Mgd2hpbGUgaW4gaGVyZS4gQW55d2F5cywgZG9pbmcgc28gd291bGRuJ3QKICAgICAv
LyByZWFsbHkgYmUgcHJvZml0YWJsZS4KLSAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0t
PmhlYXApOworICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyh2bS5oZWFwKTsKIAotICAgIHVp
bnQzMl90IGV4aXRJbmRleCA9IHZtLT5vc3JFeGl0SW5kZXg7CisgICAgdWludDMyX3QgZXhpdElu
ZGV4ID0gdm0ub3NyRXhpdEluZGV4OwogICAgIE9TUkV4aXQmIGV4aXQgPSBjb2RlQmxvY2stPmpp
dENvZGUoKS0+ZGZnKCktPm9zckV4aXRbZXhpdEluZGV4XTsKIAotICAgIGlmICh2bS0+Y2FsbEZy
YW1lRm9yQ2F0Y2gpCi0gICAgICAgIEFTU0VSVChleGl0Lm1fa2luZCA9PSBHZW5lcmljVW53aW5k
KTsKLSAgICBpZiAoZXhpdC5pc0V4Y2VwdGlvbkhhbmRsZXIoKSkKLSAgICAgICAgQVNTRVJUX1VO
VVNFRChzY29wZSwgISFzY29wZS5leGNlcHRpb24oKSk7Ci0gICAgCisgICAgQVNTRVJUKCF2bS0+
Y2FsbEZyYW1lRm9yQ2F0Y2ggfHwgZXhpdC5tX2tpbmQgPT0gR2VuZXJpY1Vud2luZCk7CisgICAg
QVNTRVJUX1VOVVNFRChzY29wZSwgIWV4aXQuaXNFeGNlcHRpb25IYW5kbGVyKCkgfHwgISFzY29w
ZS5leGNlcHRpb24oKSk7CisKKyAgICAvLyBFbnN1cmUgd2UgaGF2ZSBiYXNlbGluZSBjb2RlQmxv
Y2tzIHRvIE9TUiBleGl0IHRvLgogICAgIHByZXBhcmVDb2RlT3JpZ2luRm9yT1NSRXhpdChleGVj
LCBleGl0Lm1fY29kZU9yaWdpbik7CiAKICAgICAvLyBDb21wdXRlIHRoZSB2YWx1ZSByZWNvdmVy
aWVzLgpAQCAtMTgxLDg0ICs1MTUsODcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIE9TUkV4aXQ6OmNv
bXBpbGVPU1JFeAogICAgIGlmIChleGl0Lm1fcmVjb3ZlcnlJbmRleCAhPSBVSU5UX01BWCkKICAg
ICAgICAgcmVjb3ZlcnkgPSAmY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpLT5zcGVjdWxhdGlv
blJlY292ZXJ5W2V4aXQubV9yZWNvdmVyeUluZGV4XTsKIAorICAgIC8vIEZJWE1FOiB3ZSBzaG91
bGQgcmVtb3ZlIHRoaXMgaW5kZW50YXRpb24sIGJ1dCBJJ20gbGVhdmluZyBpdCBoZXJlIHRvIG1h
a2UgdGhlIHBhdGNoIGVhc2llcgorICAgIC8vIHRvIHJldmlldy4gV2lsbCB1bmluZGVudCB0aGlz
IGJlZm9yZSBsYW5kaW5nLgogICAgIHsKLSAgICAgICAgQ0NhbGxIZWxwZXJzIGppdChjb2RlQmxv
Y2spOwotCiAgICAgICAgIGlmIChleGl0Lm1fa2luZCA9PSBHZW5lcmljVW53aW5kKSB7CiAgICAg
ICAgICAgICAvLyBXZSBhcmUgYWN0aW5nIGFzIGEgZGVmYWN0byBvcF9jYXRjaCBiZWNhdXNlIHdl
IGFycml2ZSBoZXJlIGZyb20gZ2VuZXJpY1Vud2luZCgpLgogICAgICAgICAgICAgLy8gU28sIHdl
IG11c3QgcmVzdG9yZSBvdXIgY2FsbCBmcmFtZSBhbmQgc3RhY2sgcG9pbnRlci4KLSAgICAgICAg
ICAgIGppdC5yZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZm
ZXIoKnZtKTsKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKHZtLT5hZGRyZXNzT2ZDYWxsRnJhbWVG
b3JDYXRjaCgpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisjaWYgTlVNQkVSX09GX0NB
TExFRV9TQVZFU19SRUdJU1RFUlMgPiAwCisgICAgICAgICAgICByZXN0b3JlQ2FsbGVlU2F2ZXNG
cm9tVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoY29udGV4dCwgdm0pOworI2VuZGlmCisg
ICAgICAgICAgICBBU1NFUlQoZXhlYyA9PSB2bS5jYWxsRnJhbWVGb3JDYXRjaCk7CiAgICAgICAg
IH0KLSAgICAgICAgaml0LmFkZFB0cigKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKGNvZGVCbG9jay0+c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIp
KSwKLSAgICAgICAgICAgIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgY3B1LnNwKCkgPSBjcHUuZnA8dWludDhf
dCo+KCkgKyAoY29kZUJsb2NrLT5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3Rl
cikpOwogCi0gICAgICAgIGppdC5qaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpOworICAgICAg
ICBhc3NlcnRIYXNWYWxpZENhbGxGcmFtZShjcHUpOwogCi0gICAgICAgIGlmIChVTkxJS0VMWSh2
bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyICYmIGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmdDb21t
b24oKS0+Y29tcGlsYXRpb24pKSB7Ci0gICAgICAgICAgICBQcm9maWxlcjo6RGF0YWJhc2UmIGRh
dGFiYXNlID0gKnZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXI7CisgICAgICAgIGlmIChVTkxJS0VM
WSh2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIgJiYgY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZ0Nv
bW1vbigpLT5jb21waWxhdGlvbikpIHsKKyAgICAgICAgICAgIFByb2ZpbGVyOjpEYXRhYmFzZSYg
ZGF0YWJhc2UgPSAqdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyOwogICAgICAgICAgICAgUHJvZmls
ZXI6OkNvbXBpbGF0aW9uKiBjb21waWxhdGlvbiA9IGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmdD
b21tb24oKS0+Y29tcGlsYXRpb24uZ2V0KCk7CiAKICAgICAgICAgICAgIFByb2ZpbGVyOjpPU1JF
eGl0KiBwcm9maWxlckV4aXQgPSBjb21waWxhdGlvbi0+YWRkT1NSRXhpdCgKICAgICAgICAgICAg
ICAgICBleGl0SW5kZXgsIFByb2ZpbGVyOjpPcmlnaW5TdGFjayhkYXRhYmFzZSwgY29kZUJsb2Nr
LCBleGl0Lm1fY29kZU9yaWdpbiksCiAgICAgICAgICAgICAgICAgZXhpdC5tX2tpbmQsIGV4aXQu
bV9raW5kID09IFVuY291bnRhYmxlSW52YWxpZGF0aW9uKTsKLSAgICAgICAgICAgIGppdC5hZGQ2
NChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFk
ZHJlc3MocHJvZmlsZXJFeGl0LT5jb3VudGVyQWRkcmVzcygpKSk7CisgICAgICAgICAgICBwcm9m
aWxlckV4aXQtPmluY0NvdW50KCk7CiAgICAgICAgIH0KIAotICAgICAgICBjb21waWxlRXhpdChq
aXQsICp2bSwgZXhpdCwgb3BlcmFuZHMsIHJlY292ZXJ5KTsKLQotICAgICAgICBMaW5rQnVmZmVy
IHBhdGNoQnVmZmVyKGppdCwgY29kZUJsb2NrKTsKLSAgICAgICAgZXhpdC5tX2NvZGUgPSBGSU5B
TElaRV9DT0RFX0lGKAotICAgICAgICAgICAgc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkgfHwgT3B0
aW9uczo6dmVyYm9zZU9TUigpIHx8IE9wdGlvbnM6OnZlcmJvc2VERkdPU1JFeGl0KCksCi0gICAg
ICAgICAgICBwYXRjaEJ1ZmZlciwKLSAgICAgICAgICAgICgiREZHIE9TUiBleGl0ICMldSAoJXMs
ICVzKSBmcm9tICVzLCB3aXRoIG9wZXJhbmRzID0gJXMiLAorICAgICAgICBpZiAoVU5MSUtFTFko
T3B0aW9uczo6dmVyYm9zZU9TUigpIHx8IE9wdGlvbnM6OnZlcmJvc2VERkdPU1JFeGl0KCkpKQor
ICAgICAgICAgICAgZGF0YUxvZygiREZHIE9TUiBleGl0ICMldSAoJXMsICVzKSBmcm9tICVzLCB3
aXRoIG9wZXJhbmRzID0gJXMiLAogICAgICAgICAgICAgICAgIGV4aXRJbmRleCwgdG9DU3RyaW5n
KGV4aXQubV9jb2RlT3JpZ2luKS5kYXRhKCksCiAgICAgICAgICAgICAgICAgZXhpdEtpbmRUb1N0
cmluZyhleGl0Lm1fa2luZCksIHRvQ1N0cmluZygqY29kZUJsb2NrKS5kYXRhKCksCi0gICAgICAg
ICAgICAgICAgdG9DU3RyaW5nKGlnbm9yaW5nQ29udGV4dDxEdW1wQ29udGV4dD4ob3BlcmFuZHMp
KS5kYXRhKCkpKTsKKyAgICAgICAgICAgICAgICB0b0NTdHJpbmcoaWdub3JpbmdDb250ZXh0PER1
bXBDb250ZXh0PihvcGVyYW5kcykpLmRhdGEoKSk7CiAgICAgfQogCi0gICAgTWFjcm9Bc3NlbWJs
ZXI6OnJlcGF0Y2hKdW1wKGV4aXQuY29kZUxvY2F0aW9uRm9yUmVwYXRjaChjb2RlQmxvY2spLCBD
b2RlTG9jYXRpb25MYWJlbChleGl0Lm1fY29kZS5jb2RlKCkpKTsKKyAgICBpbnRlcnByZXRFeGl0
KGNvbnRleHQsIHZtLCBleGl0LCBvcGVyYW5kcywgcmVjb3ZlcnkpOwogCi0gICAgdm0tPm9zckV4
aXRKdW1wRGVzdGluYXRpb24gPSBleGl0Lm1fY29kZS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KTsKKyAgICAvLyBGSVhNRTogdG8gYmUgY29udGludWVkLgorLy8gICAgY3B1LnBjKCkgPSB2bS5v
c3JFeGl0SnVtcERlc3RpbmF0aW9uOworLy8gICAgLy8gdm0tPm9zckV4aXRKdW1wRGVzdGluYXRp
b24gPSBleGl0Lm1fY29kZS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKIH0KIAotdm9pZCBP
U1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JF
eGl0JiBleGl0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMsIFNwZWN1
bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5KQorc3RhdGljIHZvaWQgaW50ZXJwcmV0RXhpdChDb250
ZXh0JiBjb250ZXh0LCBWTSYgdm0sIE9TUkV4aXQmIGV4aXQsIGNvbnN0IE9wZXJhbmRzPFZhbHVl
UmVjb3Zlcnk+JiBvcGVyYW5kcywgU3BlY3VsYXRpb25SZWNvdmVyeSogcmVjb3ZlcnkpCiB7Ci0g
ICAgaml0LmppdEFzc2VydFRhZ3NJblBsYWNlKCk7CisgICAgYXV0byYgY3B1ID0gY29udGV4dC5j
cHU7CisgICAgRnJhbWUgZnJhbWUoY29udGV4dCk7CiAKLSAgICAvLyBQcm8tZm9ybWEgc3R1ZmYu
Ci0gICAgaWYgKE9wdGlvbnM6OnByaW50RWFjaE9TUkV4aXQoKSkgewotICAgICAgICBTcGVjdWxh
dGlvbkZhaWx1cmVEZWJ1Z0luZm8qIGRlYnVnSW5mbyA9IG5ldyBTcGVjdWxhdGlvbkZhaWx1cmVE
ZWJ1Z0luZm87Ci0gICAgICAgIGRlYnVnSW5mby0+Y29kZUJsb2NrID0gaml0LmNvZGVCbG9jaygp
OwotICAgICAgICBkZWJ1Z0luZm8tPmtpbmQgPSBleGl0Lm1fa2luZDsKLSAgICAgICAgZGVidWdJ
bmZvLT5ieXRlY29kZU9mZnNldCA9IGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXg7Cisg
ICAgRXhlY1N0YXRlKiBleGVjID0gY3B1LmZwPEV4ZWNTdGF0ZSo+KCk7CisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5l
Q29kZUJsb2NrID0gY29kZUJsb2NrLT5iYXNlbGluZUFsdGVybmF0aXZlKCk7CiAKLSAgICAgICAg
aml0LmRlYnVnQ2FsbCh2bSwgZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFpbHVyZSwg
ZGVidWdJbmZvKTsKLSAgICB9CisgICAgYXNzZXJ0VGFnc0luUGxhY2UoY3B1KTsKKworICAgIGlm
IChVTkxJS0VMWShPcHRpb25zOjpwcmludEVhY2hPU1JFeGl0KCkpKQorICAgICAgICBwcmludE9T
UkV4aXQoY3B1LCB2bS5vc3JFeGl0SW5kZXgsIGV4aXQpOwogCisvLyAgICAvLyBTZXQgdGhlIHJl
c3VsdGFudCBzcCB0byB3aGVyZSB0aGUgREZHIGNvZGVCbG9jayBleHBlY3RzIGl0LgorLy8gICAg
Y3B1LnNwKCkgPSBjcHUuZnA8dWludDhfdCo+KCkgKyBjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9m
ZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKTsKKy8vCiAgICAgLy8gUGVyZm9ybSBzcGVjdWxhdGlv
biByZWNvdmVyeS4gVGhpcyBvbmx5IGNvbWVzIGludG8gcGxheSB3aGVuIGFuIG9wZXJhdGlvbgog
ICAgIC8vIHN0YXJ0cyBtdXRhdGluZyBzdGF0ZSBiZWZvcmUgdmVyaWZ5aW5nIHRoZSBzcGVjdWxh
dGlvbiBpdCBoYXMgYWxyZWFkeSBtYWRlLgogCiAgICAgaWYgKHJlY292ZXJ5KSB7CiAgICAgICAg
IHN3aXRjaCAocmVjb3ZlcnktPnR5cGUoKSkgewogICAgICAgICBjYXNlIFNwZWN1bGF0aXZlQWRk
OgotICAgICAgICAgICAgaml0LnN1YjMyKHJlY292ZXJ5LT5zcmMoKSwgcmVjb3ZlcnktPmRlc3Qo
KSk7CisgICAgICAgICAgICBjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkpID0gY3B1Lmdwcjx1aW50
MzJfdD4ocmVjb3ZlcnktPmRlc3QoKSkgLSBjcHUuZ3ByPHVpbnQzMl90PihyZWNvdmVyeS0+c3Jj
KCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBqaXQub3I2NChHUFJJbmZvOjp0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHJlY292ZXJ5LT5kZXN0KCkpOworICAgICAgICAgICAgQVNT
RVJUKCEoY3B1LmdwcihyZWNvdmVyeS0+ZGVzdCgpID4+IDMyKSkpOworICAgICAgICAgICAgY3B1
LmdwcihyZWNvdmVyeS0+ZGVzdCgpKSB8PSBUYWdUeXBlTnVtYmVyOwogI2VuZGlmCiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNwZWN1bGF0aXZlQWRkSW1tZWRpYXRlOgotICAg
ICAgICAgICAgaml0LnN1YjMyKEFzc2VtYmx5SGVscGVyczo6SW1tMzIocmVjb3ZlcnktPmltbWVk
aWF0ZSgpKSwgcmVjb3ZlcnktPmRlc3QoKSk7CisgICAgICAgICAgICBjcHUuZ3ByKHJlY292ZXJ5
LT5kZXN0KCkpID0gKGNwdS5ncHI8dWludDMyX3Q+KHJlY292ZXJ5LT5kZXN0KCkpIC0gcmVjb3Zl
cnktPmltbWVkaWF0ZSgpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgaml0Lm9y
NjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZWNvdmVyeS0+ZGVzdCgpKTsKKyAg
ICAgICAgICAgIEFTU0VSVCghKGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSA+PiAzMikpKTsKKyAg
ICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgfD0gVGFnVHlwZU51bWJlcjsKICNl
bmRpZgogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBCb29sZWFuU3BlY3VsYXRp
b25DaGVjazoKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgaml0LnhvcjY0KEFzc2Vt
Ymx5SGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2Up
KSwgcmVjb3ZlcnktPmRlc3QoKSk7CisgICAgICAgICAgICBjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0
KCkpID0gKGNwdS5ncHI8dWludDMyX3Q+KHJlY292ZXJ5LT5kZXN0KCkpIF4gVmFsdWVGYWxzZSk7
CisgICAgICAgICAgICBBU1NFUlQoIShjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkgPj4gMzIpKSk7
CiAjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0yODEsMTI0ICs2MTgsMzEgQEAgdm9p
ZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgICAgICAgICAgLy8gcHJv
cGVydHkgYWNjZXNzLCBvciBkdWUgdG8gYW4gYXJyYXkgcHJvZmlsZSkuCiAKICAgICAgICAgICAg
IENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGV4aXQubV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGU7
Ci0gICAgICAgICAgICBpZiAoQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBqaXQuYmFzZWxp
bmVDb2RlQmxvY2tGb3IoY29kZU9yaWdpbiktPmdldEFycmF5UHJvZmlsZShjb2RlT3JpZ2luLmJ5
dGVjb2RlSW5kZXgpKSB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgICAgICBHUFJS
ZWcgdXNlZFJlZ2lzdGVyOwotICAgICAgICAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJj
ZS5pc0FkZHJlc3MoKSkKLSAgICAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVyID0gZXhpdC5t
X2pzVmFsdWVTb3VyY2UuYmFzZSgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgdXNlZFJlZ2lzdGVyID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UuZ3ByKCk7Ci0jZWxz
ZQotICAgICAgICAgICAgICAgIEdQUlJlZyB1c2VkUmVnaXN0ZXIxOwotICAgICAgICAgICAgICAg
IEdQUlJlZyB1c2VkUmVnaXN0ZXIyOwotICAgICAgICAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1
ZVNvdXJjZS5pc0FkZHJlc3MoKSkgewotICAgICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXIx
ID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UuYmFzZSgpOwotICAgICAgICAgICAgICAgICAgICB1c2Vk
UmVnaXN0ZXIyID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXIxID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5
bG9hZEdQUigpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2Uu
aGFzS25vd25UYWcoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcjIgPSBJ
bnZhbGlkR1BSUmVnOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgICAgICB1c2VkUmVnaXN0ZXIyID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UudGFnR1BSKCk7Ci0g
ICAgICAgICAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRj
aDE7Ci0gICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyOwotI2lmIFVTRShKU1ZBTFVFNjQp
Ci0gICAgICAgICAgICAgICAgc2NyYXRjaDEgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0
Y2hHUFIodXNlZFJlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICBzY3JhdGNoMiA9IEFzc2VtYmx5
SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUih1c2VkUmVnaXN0ZXIsIHNjcmF0Y2gxKTsKLSNlbHNl
Ci0gICAgICAgICAgICAgICAgc2NyYXRjaDEgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0
Y2hHUFIodXNlZFJlZ2lzdGVyMSwgdXNlZFJlZ2lzdGVyMik7Ci0gICAgICAgICAgICAgICAgc2Ny
YXRjaDIgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIodXNlZFJlZ2lzdGVyMSwg
dXNlZFJlZ2lzdGVyMiwgc2NyYXRjaDEpOwotI2VuZGlmCi0KLSAgICAgICAgICAgICAgICBpZiAo
aXNBUk02NCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5wdXNoVG9TYXZlKHNjcmF0Y2gx
KTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnB1c2hUb1NhdmUoc2NyYXRjaDIpOwotICAgICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5wdXNoKHNjcmF0Y2gx
KTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnB1c2goc2NyYXRjaDIpOwotICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgIEdQUlJlZyB2YWx1ZTsKLSAgICAgICAgICAgICAgICBp
ZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaXNBZGRyZXNzKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgdmFsdWUgPSBzY3JhdGNoMTsKLSAgICAgICAgICAgICAgICAgICAgaml0LmxvYWRQdHIoQXNz
ZW1ibHlIZWxwZXJzOjpBZGRyZXNzKGV4aXQubV9qc1ZhbHVlU291cmNlLmFzQWRkcmVzcygpKSwg
dmFsdWUpOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICB2YWx1
ZSA9IGV4aXQubV9qc1ZhbHVlU291cmNlLnBheWxvYWRHUFIoKTsKLQotICAgICAgICAgICAgICAg
IGppdC5sb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoMSk7Ci0gICAgICAgICAgICAgICAgaml0LnN0b3JlMzIo
c2NyYXRjaDEsIGFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsK
LSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgICAgIGppdC5sb2FkOChBc3NlbWJseUhl
bHBlcnM6OkFkZHJlc3ModmFsdWUsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlQW5kTWlzY09mZnNldCgp
KSwgc2NyYXRjaDEpOwotI2Vsc2UKLSAgICAgICAgICAgICAgICBqaXQubG9hZDgoQXNzZW1ibHlI
ZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gxLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZUluY2x1ZGlu
Z0hpc3RvcnlPZmZzZXQoKSksIHNjcmF0Y2gxKTsKLSNlbmRpZgotICAgICAgICAgICAgICAgIGpp
dC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBzY3JhdGNoMik7Ci0gICAg
ICAgICAgICAgICAgaml0LmxzaGlmdDMyKHNjcmF0Y2gxLCBzY3JhdGNoMik7Ci0gICAgICAgICAg
ICAgICAgaml0Lm9yMzIoc2NyYXRjaDIsIEFzc2VtYmx5SGVscGVyczo6QWJzb2x1dGVBZGRyZXNz
KGFycmF5UHJvZmlsZS0+YWRkcmVzc09mQXJyYXlNb2RlcygpKSk7Ci0KLSAgICAgICAgICAgICAg
ICBpZiAoaXNBUk02NCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUo
c2NyYXRjaDIpOwotICAgICAgICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2gx
KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBqaXQucG9w
KHNjcmF0Y2gyKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnBvcChzY3JhdGNoMSk7Ci0gICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgQ29kZUJsb2NrKiBwcm9maWxlZENvZGVCbG9jayA9
IGJhc2VsaW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soY29kZU9yaWdp
biwgYmFzZWxpbmVDb2RlQmxvY2spOworICAgICAgICAgICAgaWYgKEFycmF5UHJvZmlsZSogYXJy
YXlQcm9maWxlID0gcHJvZmlsZWRDb2RlQmxvY2stPmdldEFycmF5UHJvZmlsZShjb2RlT3JpZ2lu
LmJ5dGVjb2RlSW5kZXgpKSB7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBleGl0Lm1fanNWYWx1ZVNvdXJjZS5ldmFsdWF0ZShjcHUpLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUo
dm0pOworICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+b2JzZXJ2ZVN0cnVjdHVyZShzdHJ1
Y3R1cmUpOworICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+b2JzZXJ2ZUFycmF5TW9kZShh
cnJheU1vZGVGcm9tU3RydWN0dXJlKHN0cnVjdHVyZSkpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9
IGV4aXQubV92YWx1ZVByb2ZpbGUpIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAg
aWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmlzQWRkcmVzcygpKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gV2UgY2FuJ3QgYmUgc3VyZSB0aGF0IHdlIGhhdmUgYSBzcGFyZSByZWdpc3Rlci4gU28gdXNl
IHRoZSB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsCi0gICAgICAgICAgICAgICAgLy8gc2luY2Ugd2Ug
a25vdyBob3cgdG8gcmVzdG9yZSBpdC4KLSAgICAgICAgICAgICAgICBqaXQubG9hZDY0KEFzc2Vt
Ymx5SGVscGVyczo6QWRkcmVzcyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSksIEdQ
UkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5l
bWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVn
aXN0ZXIpKTsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0
ZWRJbW02NChUYWdUeXBlTnVtYmVyKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsK
LSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZh
bHVlKGppdCwgSlNWYWx1ZVJlZ3MoZXhpdC5tX2pzVmFsdWVTb3VyY2UuZ3ByKCkpKTsKLSNlbHNl
IC8vIG5vdCBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgaWYgKGV4aXQubV9qc1ZhbHVlU291
cmNlLmlzQWRkcmVzcygpKSB7Ci0gICAgICAgICAgICAgICAgLy8gU2F2ZSBhIHJlZ2lzdGVyIHNv
IHdlIGNhbiB1c2UgaXQuCi0gICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hQYXlsb2FkID0g
QXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGV4aXQubV9qc1ZhbHVlU291cmNlLmJh
c2UoKSk7Ci0gICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hUYWcgPSBBc3NlbWJseUhlbHBl
cnM6OnNlbGVjdFNjcmF0Y2hHUFIoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYmFzZSgpLCBzY3JhdGNo
UGF5bG9hZCk7Ci0gICAgICAgICAgICAgICAgaml0LnB1c2hUb1NhdmUoc2NyYXRjaFBheWxvYWQp
OwotICAgICAgICAgICAgICAgIGppdC5wdXNoVG9TYXZlKHNjcmF0Y2hUYWcpOwotCi0gICAgICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3Mgc2NyYXRjaChzY3JhdGNoVGFnLCBzY3JhdGNoUGF5bG9hZCk7
Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaml0LmxvYWRWYWx1ZShleGl0Lm1f
anNWYWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSwgc2NyYXRjaCk7Ci0gICAgICAgICAgICAgICAgcHJv
ZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBzY3JhdGNoKTsKLSAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2hUYWcpOwotICAgICAgICAgICAg
ICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaFBheWxvYWQpOwotICAgICAgICAgICAgfSBlbHNl
IGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5oYXNLbm93blRhZygpKSB7Ci0gICAgICAgICAgICAg
ICAgR1BSUmVnIHNjcmF0Y2hUYWcgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIo
ZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigpKTsKLSAgICAgICAgICAgICAgICBqaXQu
cHVzaFRvU2F2ZShzY3JhdGNoVGFnKTsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJs
eUhlbHBlcnM6OlRydXN0ZWRJbW0zMihleGl0Lm1fanNWYWx1ZVNvdXJjZS50YWcoKSksIHNjcmF0
Y2hUYWcpOwotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlKHNjcmF0Y2hUYWcsIGV4
aXQubV9qc1ZhbHVlU291cmNlLnBheWxvYWRHUFIoKSk7Ci0gICAgICAgICAgICAgICAgcHJvZmls
ZS5lbWl0UmVwb3J0VmFsdWUoaml0LCB2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgaml0LnBvcFRv
UmVzdG9yZShzY3JhdGNoVGFnKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
IHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgZXhpdC5tX2pzVmFsdWVTb3VyY2UucmVncygp
KTsKLSNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQotICAgICAgICB9CisgICAgICAgIGlmIChNZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBleGl0Lm1fdmFsdWVQcm9maWxlKQor
ICAgICAgICAgICAgcHJvZmlsZS5yZXBvcnRWYWx1ZShleGl0Lm1fanNWYWx1ZVNvdXJjZS5ldmFs
dWF0ZShjcHUpKTsKICAgICB9CiAKLSAgICAvLyBXaGF0IGZvbGxvd3MgaXMgYW4gaW50ZW50aW9u
YWxseSBzaW1wbGUgT1NSIGV4aXQgaW1wbGVtZW50YXRpb24gdGhhdCBnZW5lcmF0ZXMKLSAgICAv
LyBmYWlybHkgcG9vciBjb2RlIGJ1dCBpcyB2ZXJ5IGVhc3kgdG8gaGFjay4gSW4gcGFydGljdWxh
ciwgaXQgZHVtcHMgYWxsIHN0YXRlIHRoYXQKKyNpZiAwIC8vIG1sYW0gUkVNT1ZFCisgICAgLy8g
V2hhdCBmb2xsb3dzIGlzIGFuIGludGVudGlvbmFsbHkgc2ltcGxlIE9TUiBleGl0IGltcGxlbWVu
dGF0aW9uIHRoYXQgaXMgbm90IHRoZQorICAgIC8vIGZhc3Rlc3QgY29kZSBidXQgaXMgdmVyeSBl
YXN5IHRvIGhhY2suIEluIHBhcnRpY3VsYXIsIGl0IGR1bXBzIGFsbCBzdGF0ZSB0aGF0CiAgICAg
Ly8gbmVlZHMgY29udmVyc2lvbiBpbnRvIGEgc2NyYXRjaCBidWZmZXIgc28gdGhhdCBpbiBzdGVw
IDYsIHdoZXJlIHdlIGFjdHVhbGx5IGRvIHRoZQogICAgIC8vIGNvbnZlcnNpb25zLCB3ZSBrbm93
IHRoYXQgYWxsIHRlbXAgcmVnaXN0ZXJzIGFyZSBmcmVlIHRvIHVzZSBhbmQgdGhlIHZhcmlhYmxl
IGlzCiAgICAgLy8gZGVmaW5pdGVseSBpbiBhIHdlbGwta25vd24gc3BvdCBpbiB0aGUgc2NyYXRj
aCBidWZmZXIgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGhhZAogICAgIC8vIG9yaWdpbmFsbHkg
YmVlbiBpbiBhIHJlZ2lzdGVyIG9yIHNwaWxsZWQuIFRoaXMgYWxsb3dzIHVzIHRvIGRlY291cGxl
ICJ3aGVyZSB3YXMKICAgICAvLyB0aGUgdmFyaWFibGUiIGZyb20gImhvdyB3YXMgaXQgcmVwcmVz
ZW50ZWQiLiBDb25zaWRlciB0aGF0IHRoZQogICAgIC8vIEludDMyRGlzcGxhY2VkSW5KU1N0YWNr
IHJlY292ZXJ5OiBpdCB0ZWxscyB1cyB0aGF0IHRoZSB2YWx1ZSBpcyBpbiBhCi0gICAgLy8gcGFy
dGljdWxhciBwbGFjZSBhbmQgdGhhdCB0aGF0IHBsYWNlIGhvbGRzIGFuIHVuYm94ZWQgaW50MzIu
IFdlIGhhdmUgdHdvIGRpZmZlcmVudAorICAgIC8vIHBhcnRpY3VsYXIgcGxhY2UgYW5kIHRoYXQg
dGhpcyBwbGFjZSBob2xkcyBhbiB1bmJveGVkIGludDMyLiBXZSBoYXZlIHR3byBkaWZmZXJlbnQK
ICAgICAvLyBwbGFjZXMgdGhhdCBhIHZhbHVlIGNvdWxkIGJlIChkaXNwbGFjZWQsIHJlZ2lzdGVy
KSBhbmQgYSBidW5jaCBvZiBkaWZmZXJlbnQKICAgICAvLyB3YXlzIG9mIHJlcHJlc2VudGluZyBh
IHZhbHVlLiBUaGUgbnVtYmVyIG9mIHJlY292ZXJpZXMgaXMgdHdvICogYSBidW5jaC4gVGhlIGNv
ZGUKLSAgICAvLyBiZWxvdyBtZWFucyB0aGF0IHdlIGhhdmUgdG8gaGF2ZSB0d28gKyBhIGJ1bmNo
IGNhc2VzIHJhdGhlciB0aGFuIHR3byAqIGEgYnVuY2guCisgICAgLy8gYmVsb3cgbWVhbnMgdGhh
dCB3ZSBoYXZlIHRvIGhhdmUgdHdvICsgYSBidW5jaCBvZiBjYXNlcyByYXRoZXIgdGhhbiB0d28g
KiBhIGJ1bmNoLgogICAgIC8vIE9uY2Ugd2UgaGF2ZSBsb2FkZWQgdGhlIHZhbHVlIGZyb20gd2hl
cmV2ZXIgaXQgd2FzLCB0aGUgcmVib3hpbmcgaXMgdGhlIHNhbWUKICAgICAvLyByZWdhcmRsZXNz
IG9mIGl0cyBsb2NhdGlvbi4gTGlrZXdpc2UsIGJlZm9yZSB3ZSBkbyB0aGUgcmVib3hpbmcsIHRo
ZSB3YXkgd2UgZ2V0IHRvCiAgICAgLy8gdGhlIHZhbHVlIChpLmUuIHdoZXJlIHdlIGxvYWQgaXQg
ZnJvbSkgaXMgdGhlIHNhbWUgcmVnYXJkbGVzcyBvZiBpdHMgdHlwZS4gQmVjYXVzZQpAQCAtNDA3
LDEyICs2NTEsMTIgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAog
ICAgIC8vIGxvY2F0aW9ucy4KICAgICAvLwogICAgIC8vIFRoaXMgcmFpc2VzIHRoZSBxdWVzdGlv
bjogZG9lcyB1c2luZyBzdWNoIGEgc3Vib3B0aW1hbCBpbXBsZW1lbnRhdGlvbiBvZiBPU1IgZXhp
dCwKLSAgICAvLyB3aGVyZSB3ZSBhbHdheXMgZW1pdCBjb2RlIHRvIGR1bXAgYWxsIHN0YXRlIGlu
dG8gYSBzY3JhdGNoIGJ1ZmZlciBvbmx5IHRvIHRoZW4KLSAgICAvLyBkdW1wIGl0IHJpZ2h0IGJh
Y2sgaW50byB0aGUgc3RhY2ssIGh1cnQgdXMgaW4gYW55IHdheT8gVGhlIGFzbndlciBpcyB0aGF0
IE9TUiBleGl0cworICAgIC8vIHdoZXJlIHdlIGFsd2F5cyBkdW1wIGFsbCBzdGF0ZSBpbnRvIGEg
c2NyYXRjaCBidWZmZXIgb25seSB0byB0aGVuIGR1bXAgaXQKKyAgICAvLyByaWdodCBiYWNrIGlu
dG8gdGhlIHN0YWNrLCBodXJ0IHVzIGluIGFueSB3YXk/IFRoZSBhbnN3ZXIgaXMgdGhhdCBPU1Ig
ZXhpdHMKICAgICAvLyBhcmUgcmFyZS4gT3VyIHRpZXJpbmcgc3RyYXRlZ3kgZW5zdXJlcyB0aGlz
LiBUaGlzIGlzIGJlY2F1c2UgaWYgYW4gT1NSIGV4aXQgaXMKICAgICAvLyB0YWtlbiBtb3JlIHRo
YW4gfjEwMCB0aW1lcywgd2UgamV0dGlzb24gdGhlIERGRyBjb2RlIGJsb2NrIGFsb25nIHdpdGgg
YWxsIG9mIGl0cwotICAgIC8vIGV4aXRzLiBJdCBpcyBpbXBvc3NpYmxlIGZvciBhbiBPU1IgZXhp
dCAtIGkuZS4gdGhlIGNvZGUgd2UgY29tcGlsZSBiZWxvdyAtIHRvCi0gICAgLy8gZXhlY3V0ZSBm
cmVxdWVudGx5IGVub3VnaCBmb3IgdGhlIGNvZGVnZW4gdG8gbWF0dGVyIHRoYXQgbXVjaC4gSXQg
cHJvYmFibHkgbWF0dGVycworICAgIC8vIGV4aXRzLiBJdCBpcyBpbXBvc3NpYmxlIGZvciBhbiBP
U1IgZXhpdCB0byBleGVjdXRlCisgICAgLy8gZnJlcXVlbnRseSBlbm91Z2ggdG8gbWF0dGVyIHRo
YXQgbXVjaC4gSXQgcHJvYmFibHkgbWF0dGVycwogICAgIC8vIGVub3VnaCB0aGF0IHdlIGRvbid0
IHdhbnQgdG8gdHVybiB0aGlzIGludG8gc29tZSBzdXBlci1zbG93IGZ1bmN0aW9uIGNhbGwsIGJ1
dCBzbwogICAgIC8vIGxvbmcgYXMgd2UncmUgZ2VuZXJhdGluZyBzdHJhaWdodC1saW5lIGNvZGUs
IHRoYXQgY29kZSBjYW4gYmUgcHJldHR5IGJhZC4gQWxzbwogICAgIC8vIGJlY2F1c2Ugd2UgdGVu
ZCB0byBleGl0IG9ubHkgYWxvbmcgb25lIE9TUiBleGl0IGZyb20gYW55IERGRyBjb2RlIGJsb2Nr
IC0gdGhhdCdzIGFuCkBAIC00MjIsMTEgKzY2NiwxMSBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVF
eGl0KENDYWxsSGVscGVycyYgCiAgICAgLy8gZXhlY3V0aW9uIHRpbWUuIEl0IHdpbGwgb25seSBw
cmV2ZW50IHVzIGZyb20gY2xlYW5seSBkZWNvdXBsaW5nICJ3aGVyZSB3YXMgdGhlCiAgICAgLy8g
dmFyaWFibGUiIGZyb20gImhvdyB3YXMgaXQgcmVwcmVzZW50ZWQiLCB3aGljaCB3aWxsIG1ha2Ug
aXQgbW9yZSBkaWZmaWN1bHQgdG8gYWRkCiAgICAgLy8gZmVhdHVyZXMgaW4gdGhlIGZ1dHVyZSBh
bmQgaXQgd2lsbCBtYWtlIGl0IGhhcmRlciB0byByZWFzb24gYWJvdXQgYnVncy4KKyAgICAvLyBt
bGFtIEZJWE1FIDo6IHRoZSBhYm92ZSBjb21tZW50KHMpIG5lZWRzIHRvIGJlIHVwZGF0ZWQuCiAK
LSAgICAvLyBTYXZlIGFsbCBzdGF0ZSBmcm9tIEdQUnMgaW50byB0aGUgc2NyYXRjaCBidWZmZXIu
CisgICAgLy8gU2F2ZSBhbGwgc3RhdGUgZnJvbSBHUFJzLCBGUFJzLCBhbmQgdGhlIHN0YWNrIGlu
dG8gdGhlIHNjcmF0Y2ggYnVmZmVyLgogCi0gICAgU2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1ZmZl
ciA9IHZtLnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBvcGVy
YW5kcy5zaXplKCkpOwotICAgIEVuY29kZWRKU1ZhbHVlKiBzY3JhdGNoID0gc2NyYXRjaEJ1ZmZl
ciA/IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZl
cigpKSA6IDA7CisgICAgc3RkOjphcnJheTxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBvcGVyYW5k
cy5zaXplKCk+IHJlY292ZXJlZE9wZXJhbmRzOwogCiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAw
OyBpbmRleCA8IG9wZXJhbmRzLnNpemUoKTsgKytpbmRleCkgewogICAgICAgICBjb25zdCBWYWx1
ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9wZXJhbmRzW2luZGV4XTsKQEAgLTQzOCw1OSArNjgyLDI0
IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAgICAgY2Fz
ZSBJbkdQUjoKICAgICAgICAgY2FzZSBVbmJveGVkSW50NTJJbkdQUjoKICAgICAgICAgY2FzZSBV
bmJveGVkU3RyaWN0SW50NTJJbkdQUjoKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KHJlY292ZXJ5
LmdwcigpLCBzY3JhdGNoICsgaW5kZXgpOworICAgICAgICAgICAgcmVjb3ZlcmVkT3BlcmFuZHNb
aW5kZXhdLmFzSW50NjQgPSBjcHUuZ3ByKHJlY292ZXJ5LmdwcigpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogI2Vsc2UKICAgICAgICAgY2FzZSBVbmJveGVkQm9vbGVhbkluR1BSOgotICAgICAgICAg
ICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgcmVjb3ZlcnkuZ3ByKCksCi0gICAgICAg
ICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCAr
IGluZGV4KS0+YXNCaXRzLnBheWxvYWQpOworICAgICAgICAgICAgcmVjb3ZlcmVkT3BlcmFuZHNb
aW5kZXhdLmFzQml0cy5wYXlsb2FkID0gY3B1LmdwcihyZWNvdmVyeS5ncHIoKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEluUGFpcjoKLSAgICAgICAg
ICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIHJlY292ZXJ5LnRhZ0dQUigpLAotICAg
ICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0
Y2ggKyBpbmRleCktPmFzQml0cy50YWcpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAg
ICAgICAgICAgICAgcmVjb3ZlcnkucGF5bG9hZEdQUigpLAotICAgICAgICAgICAgICAgICZiaXR3
aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0
cy5wYXlsb2FkKTsKKyAgICAgICAgICAgIHJlY292ZXJlZE9wZXJhbmRzW2luZGV4XS5hc0JpdHMu
dGFnID0gY3B1LmdwcihyZWNvdmVyeS50YWdHUFIoKSk7CisgICAgICAgICAgICByZWNvdmVyZWRP
cGVyYW5kc1tpbmRleF0uYXNCaXRzLnBheWxvYWQgPSBjcHUuZ3ByKHJlY292ZXJ5LnBheWxvYWRH
UFIoKSk7CiAgICAgICAgICAgICBicmVhazsKICNlbmRpZgogCi0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIEFuZCB2b2lsYSwg
YWxsIEdQUnMgYXJlIGZyZWUgdG8gcmV1c2UuCi0KLSAgICAvLyBTYXZlIGFsbCBzdGF0ZSBmcm9t
IEZQUnMgaW50byB0aGUgc2NyYXRjaCBidWZmZXIuCi0KLSAgICBmb3IgKHNpemVfdCBpbmRleCA9
IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIGNvbnN0IFZh
bHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhdOwotCi0gICAgICAgIHN3aXRj
aCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBVbmJveGVkRG91YmxlSW5G
UFI6CiAgICAgICAgIGNhc2UgSW5GUFI6Ci0gICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOwot
ICAgICAgICAgICAgaml0LnN0b3JlRG91YmxlKHJlY292ZXJ5LmZwcigpLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJlY292ZXJlZE9wZXJhbmRzW2luZGV4XS5hc0ludDY0
ID0gY3B1LmZwcjx1aW50NjRfdD4ocmVjb3ZlcnkuZnByKCkpOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBOb3csIGFsbCBGUFJzIGFyZSBhbHNvIGZyZWUu
Ci0KLSAgICAvLyBTYXZlIGFsbCBzdGF0ZSBmcm9tIHRoZSBzdGFjayBpbnRvIHRoZSBzY3JhdGNo
IGJ1ZmZlci4gRm9yIHNpbXBsaWNpdHkgd2UKLSAgICAvLyBkbyB0aGlzIGV2ZW4gZm9yIHN0YXRl
IHRoYXQncyBhbHJlYWR5IGluIHRoZSByaWdodCBwbGFjZSBvbiB0aGUgc3RhY2suCi0gICAgLy8g
SXQgbWFrZXMgdGhpbmdzIHNpbXBsZXIgbGF0ZXIuCiAKLSAgICBmb3IgKHNpemVfdCBpbmRleCA9
IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIGNvbnN0IFZh
bHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhdOwotCi0gICAgICAgIHN3aXRj
aCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3Rh
Y2s6CiAgICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgY2FzZSBC
b29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgpAQCAtNDk5LDE3NyArNzA4LDExOSBAQCB2b2lkIE9T
UkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAg
ICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgY2FzZSBTdHJpY3RJ
bnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIGppdC5sb2FkNjQoQXNzZW1ibHlI
ZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgR1BSSW5mbzo6
cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2gg
KyBpbmRleCk7Ci0gICAgICAgICAgICBicmVhazsKLSNlbHNlCi0gICAgICAgICAgICBqaXQubG9h
ZDMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKHJlY292ZXJ5LnZp
cnR1YWxSZWdpc3RlcigpKSwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAg
ICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5
bG9hZEZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksCi0gICAgICAgICAgICAgICAgR1BS
SW5mbzo6cmVnVDEpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAg
R1BSSW5mbzo6cmVnVDAsCi0gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnRhZyk7Ci0gICAgICAgICAg
ICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSwKLSAgICAgICAg
ICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsg
aW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7Ci0gICAgICAgICAgICBicmVhazsKICNlbmRpZgorICAg
ICAgICAgICAgcmVjb3ZlcmVkT3BlcmFuZHNbaW5kZXhdLmFzSW50NjQgPSBleGVjLT5yKHJlY292
ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS5lbmNvZGVkSlNWYWx1ZSgpOworICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgfQorI2VuZGlmIC8vIG1sYW0gUkVNT1ZFCiAKKyNpZiAwIC8vIG1sYW0gTU9WRUQgYmVsb3cK
ICAgICAvLyBOZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBzdGFjayBwb2ludGVyIGFjY291bnRzIGZv
ciB0aGUgd29yc3QtY2FzZSBzdGFjayB1c2FnZSBhdCBleGl0LiBUaGlzCiAgICAgLy8gY291bGQg
dG9hc3Qgc29tZSBzdGFjayB0aGF0IHRoZSBERkcgdXNlZC4gV2UgbmVlZCB0byBkbyBpdCBiZWZv
cmUgc3RvcmluZyB0byBzdGFjayBvZmZzZXRzCiAgICAgLy8gdXNlZCBieSBiYXNlbGluZS4KLSAg
ICBqaXQuYWRkUHRyKAotICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigKLSAgICAg
ICAgICAgIC1qaXQuY29kZUJsb2NrKCktPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPnJlcXVpcmVk
UmVnaXN0ZXJDb3VudEZvckV4aXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwKLSAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7CisgICAgY3B1LnNwKCkgPSBjcHUuZnA8dWludDhfdCo+KCkgLSAoY29kZUJsb2Nr
LT5qaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0ICog
c2l6ZW9mKFJlZ2lzdGVyKSk7CiAKKyNpZiBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVS
UyA+IDAKICAgICAvLyBSZXN0b3JlIHRoZSBERkcgY2FsbGVlIHNhdmVzIGFuZCB0aGVuIHNhdmUg
dGhlIG9uZXMgdGhlIGJhc2VsaW5lIEpJVCB1c2VzLgotICAgIGppdC5lbWl0UmVzdG9yZUNhbGxl
ZVNhdmVzKCk7Ci0gICAgaml0LmVtaXRTYXZlQ2FsbGVlU2F2ZXNGb3Ioaml0LmJhc2VsaW5lQ29k
ZUJsb2NrKCkpOworICAgIHJlc3RvcmVDYWxsZWVTYXZlc0Zvcihjb250ZXh0LCBjb2RlQmxvY2sp
OworICAgIHNhdmVDYWxsZWVTYXZlc0Zvcihjb250ZXh0LCBiYXNlbGluZUNvZGVCbG9jayk7CiAK
ICAgICAvLyBUaGUgdGFnIHJlZ2lzdGVycyBhcmUgbmVlZGVkIHRvIG1hdGVyaWFsaXplIHJlY292
ZXJpZXMgYmVsb3cuCi0gICAgaml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7
CisgICAgbWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycyhjcHUpOwogCiAgICAgaWYgKGV4aXQu
aXNFeGNlcHRpb25IYW5kbGVyKCkpCi0gICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50
cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKTsKKyAgICAgICAgY29weUNhbGxlZVNhdmVzVG9W
TUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihjb250ZXh0LCB2bSk7CisjZW5kaWYgLy8gTlVN
QkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgPiAwCisjZW5kaWYgLy8gbWxhbSBNT1ZFRCBi
ZWxvdwogCiAgICAgLy8gRG8gYWxsIGRhdGEgZm9ybWF0IGNvbnZlcnNpb25zIGFuZCBzdG9yZSB0
aGUgcmVzdWx0cyBpbnRvIHRoZSBzdGFjay4KKyAgICAvLyBOb3RlOiB3ZSBuZWVkIHRvIHJlY292
ZXIgdmFsdWVzIGJlZm9yZSB3ZSByZXN0b3JlIGNhbGxlZSBzYXZlIHJlZ2lzdGVycyBiZWxvdwor
ICAgIC8vIGJlY2F1c2UgdGhlIHRoZSByZWNvdmVyeSBtYXkgcmVseSBvbiB2YWx1ZXMgaW4gc29t
ZSBvZiB0aG9zZSByZWdpc3RlcnMuCiAKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4
IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3Zl
cnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhdOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
cmVnID0gb3BlcmFuZHMudmlydHVhbFJlZ2lzdGVyRm9ySW5kZXgoaW5kZXgpOwogCi0gICAgICAg
IGlmIChyZWcuaXNMb2NhbCgpICYmIHJlZy50b0xvY2FsKCkgPCBzdGF0aWNfY2FzdDxpbnQ+KGpp
dC5iYXNlbGluZUNvZGVCbG9jaygpLT5jYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMo
KSkpCisgICAgICAgIGlmIChyZWcuaXNMb2NhbCgpICYmIHJlZy50b0xvY2FsKCkgPCBzdGF0aWNf
Y2FzdDxpbnQ+KGJhc2VsaW5lQ29kZUJsb2NrLT5jYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdp
c3RlcnMoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpbnQgb3BlcmFuZCA9
IHJlZy5vZmZzZXQoKTsKIAogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7
CiAgICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAgICAgZnJhbWUuc2V0
T3BlcmFuZChvcGVyYW5kLCBleGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS5qc1Zh
bHVlKCkpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBJbkZQUjoKKyAgICAg
ICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgY3B1LmZwcjxKU1ZhbHVlPihyZWNvdmVy
eS5mcHIoKSkpOworICAgICAgICAgICAgYnJlYWs7CisKICNpZiBVU0UoSlNWQUxVRTY0KQogICAg
ICAgICBjYXNlIEluR1BSOgotICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6Ci0gICAgICAg
IGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxh
Y2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQ
UkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBB
c3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgZnJhbWUu
c2V0T3BlcmFuZChvcGVyYW5kLCBjcHUuZ3ByPEpTVmFsdWU+KHJlY292ZXJ5LmdwcigpKSk7CiAg
ICAgICAgICAgICBicmVhazsKLSNlbHNlIC8vIG5vdCBVU0UoSlNWQUxVRTY0KQorI2Vsc2UKICAg
ICAgICAgY2FzZSBJblBhaXI6Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAg
ICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRl
eCktPmFzQml0cy50YWcsCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwotICAgICAg
ICAgICAgaml0LmxvYWQzMigKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRW
YWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKLSAgICAg
ICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAg
ICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhl
bHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAg
ICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBl
cnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChv
cGVyYW5kLCBKU1ZhbHVlKGNwdS5ncHI8aW50MzJfdD4ocmVjb3ZlcnkudGFnR1BSKCkpLCBjcHUu
Z3ByPGludDMyX3Q+KHJlY292ZXJ5LnBheWxvYWRHUFIoKSkpKTsKICAgICAgICAgICAgIGJyZWFr
OworI2VuZGlmCiAKICAgICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BSOgorICAgICAgICAgICAg
ZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVlKGNwdS5ncHI8SlNDZWxsKj4ocmVjb3Zl
cnkuZ3ByKCkpKSk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIENlbGxEaXNw
bGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAg
ICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCkt
PmFzQml0cy5wYXlsb2FkLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAg
ICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVs
cGVyczo6dGFnRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAg
ICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVy
czo6cGF5bG9hZEZvcihvcGVyYW5kKSk7CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9w
ZXJhbmQsIEpTVmFsdWUoZXhlYy0+cihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSkudW5ib3hl
ZENlbGwoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBVbmJveGVkQm9v
bGVhbkluR1BSOgorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBqc0Jvb2xl
YW4oY3B1Lmdwcjxib29sPihyZWNvdmVyeS5ncHIoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
CiAgICAgICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIGpp
dC5sb2FkMzIoCi0gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNj
cmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQsCi0gICAgICAgICAgICAg
ICAgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAg
ICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZyks
Ci0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOwotICAg
ICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCi0g
ICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKKyAg
ICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwganNCb29sZWFuKGV4ZWMtPnIocmVj
b3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLnVuYm94ZWRCb29sZWFuKCkpKTsKICAgICAgICAgICAg
IGJyZWFrOwotI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKICAgICAgICAgY2FzZSBVbmJveGVk
SW50MzJJbkdQUjoKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1
ZShjcHUuZ3ByPGludDMyX3Q+KHJlY292ZXJ5LmdwcigpKSkpOworICAgICAgICAgICAgYnJlYWs7
CisKICAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoKLSNpZiBVU0UoSlNWQUxV
RTY0KQotICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgICAgIGppdC56ZXJvRXh0ZW5kMzJUb1B0cihHUFJJbmZvOjpyZWdUMCwg
R1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmU2NChH
UFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKLSNl
bHNlCi0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nh
c3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXls
b2FkLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5z
dG9yZTMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkludDMyVGFnKSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0Zv
cihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBH
UFJJbmZvOjpyZWdUMCwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRG
b3Iob3BlcmFuZCkpOwotI2VuZGlmCisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJh
bmQsIEpTVmFsdWUoZXhlYy0+cihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSkudW5ib3hlZElu
dDMyKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAg
ICAgY2FzZSBVbmJveGVkSW50NTJJbkdQUjoKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQo
b3BlcmFuZCwgSlNWYWx1ZShjcHUuZ3ByPGludDY0X3Q+KHJlY292ZXJ5LmdwcigpKSA+PiBKU1Zh
bHVlOjppbnQ1MlNoaWZ0QW1vdW50KSk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBj
YXNlIEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgaml0LmxvYWQ2NChzY3Jh
dGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5yc2hpZnQ2NCgK
LSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpp
bnQ1MlNoaWZ0QW1vdW50KSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LmJveElu
dDUyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIEZQUklu
Zm86OmZwUmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFz
c2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CisgICAgICAgICAgICBmcmFtZS5z
ZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFsdWUoZXhlYy0+cihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0
ZXIoKSkudW5ib3hlZEludDUyKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNh
c2UgVW5ib3hlZFN0cmljdEludDUySW5HUFI6CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5k
KG9wZXJhbmQsIEpTVmFsdWUoY3B1LmdwcjxpbnQ2NF90PihyZWNvdmVyeS5ncHIoKSkpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgU3RyaWN0SW50NTJEaXNwbGFjZWRJbkpT
U3RhY2s6Ci0gICAgICAgICAgICBqaXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6
cmVnVDApOwotICAgICAgICAgICAgaml0LmJveEludDUyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZv
OjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAg
aml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcihv
cGVyYW5kKSk7CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFsdWUo
ZXhlYy0+cihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSkudW5ib3hlZFN0cmljdEludDUyKCkp
KTsKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAKICAgICAgICAgY2FzZSBVbmJveGVkRG91
YmxlSW5GUFI6CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFsdWUo
cHVyaWZ5TmFOKGNwdS5mcHIocmVjb3ZlcnkuZnByKCkpKSkpOworICAgICAgICAgICAgYnJlYWs7
CisKICAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBq
aXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwg
R1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAg
ICAgIGppdC5wdXJpZnlOYU4oRlBSSW5mbzo6ZnBSZWdUMCk7Ci0jaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICAgICAgICAgIGppdC5ib3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgR1BSSW5mbzo6cmVn
VDApOwotICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVs
cGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0jZWxzZQotICAgICAgICAgICAgaml0LnN0b3Jl
RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVy
YW5kKSk7Ci0jZW5kaWYKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNW
YWx1ZShwdXJpZnlOYU4oZXhlYy0+cihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSkudW5ib3hl
ZERvdWJsZSgpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBDb25zdGFu
dDoKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgaml0LnN0b3JlNjQoCi0gICAgICAg
ICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKHJl
Y292ZXJ5LmNvbnN0YW50KCkpKSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmFk
ZHJlc3NGb3Iob3BlcmFuZCkpOwotI2Vsc2UKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAg
ICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKHJlY292ZXJ5LmNvbnN0
YW50KCkudGFnKCkpLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKG9w
ZXJhbmQpKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEFzc2Vt
Ymx5SGVscGVyczo6VHJ1c3RlZEltbTMyKHJlY292ZXJ5LmNvbnN0YW50KCkucGF5bG9hZCgpKSwK
LSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOwot
I2VuZGlmCisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIHJlY292ZXJ5LmNv
bnN0YW50KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBEaXJlY3RBcmd1
bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQ6CkBAIC02ODMsMTMgKzgzNCwzMiBAQCB2b2lkIE9TUkV4
aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgCiAgICAgICAgIH0KICAgICB9CiAKKy8vIG1s
YW0gTU9WRUQgZnJvbSBhYm92ZS4KKyAgICAvLyBOZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBzdGFj
ayBwb2ludGVyIGFjY291bnRzIGZvciB0aGUgd29yc3QtY2FzZSBzdGFjayB1c2FnZSBhdCBleGl0
LiBUaGlzCisgICAgLy8gY291bGQgdG9hc3Qgc29tZSBzdGFjayB0aGF0IHRoZSBERkcgdXNlZC4g
V2UgbmVlZCB0byBkbyBpdCBiZWZvcmUgc3RvcmluZyB0byBzdGFjayBvZmZzZXRzCisgICAgLy8g
dXNlZCBieSBiYXNlbGluZS4KKyAgICBjcHUuc3AoKSA9IGNwdS5mcDx1aW50OF90Kj4oKSAtIChj
b2RlQmxvY2stPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZv
ckV4aXQgKiBzaXplb2YoUmVnaXN0ZXIpKTsKKworI2lmIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNf
UkVHSVNURVJTID4gMAorICAgIC8vIFJlc3RvcmUgdGhlIERGRyBjYWxsZWUgc2F2ZXMgYW5kIHRo
ZW4gc2F2ZSB0aGUgb25lcyB0aGUgYmFzZWxpbmUgSklUIHVzZXMuCisgICAgcmVzdG9yZUNhbGxl
ZVNhdmVzRm9yKGNvbnRleHQsIGNvZGVCbG9jayk7CisgICAgc2F2ZUNhbGxlZVNhdmVzRm9yKGNv
bnRleHQsIGJhc2VsaW5lQ29kZUJsb2NrKTsKKworICAgIC8vIFRoZSB0YWcgcmVnaXN0ZXJzIGFy
ZSBuZWVkZWQgdG8gbWF0ZXJpYWxpemUgcmVjb3ZlcmllcyBiZWxvdy4KKyAgICBtYXRlcmlhbGl6
ZVRhZ0NoZWNrUmVnaXN0ZXJzKGNwdSk7CisKKyAgICBpZiAoZXhpdC5pc0V4Y2VwdGlvbkhhbmRs
ZXIoKSkKKyAgICAgICAgY29weUNhbGxlZVNhdmVzVG9WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1
ZmZlcihjb250ZXh0LCB2bSk7CisjZW5kaWYgLy8gTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJ
U1RFUlMgPiAwCisvLyBtbGFtIE1PVkVEIGZyb20gYWJvdmUuCisKICAgICAvLyBOb3cgdGhhdCB0
aGluZ3Mgb24gdGhlIHN0YWNrIGFyZSByZWNvdmVyZWQsIGRvIHRoZSBhcmd1bWVudHMgcmVjb3Zl
cnkuIFdlIGFzc3VtZSB0aGF0IGFyZ3VtZW50cwogICAgIC8vIHJlY292ZXJpZXMgZG9uJ3QgcmVj
dXJzaXZlbHkgcmVmZXIgdG8gZWFjaCBvdGhlci4gQnV0LCB3ZSBkb24ndCB0cnkgdG8gYXNzdW1l
IHRoYXQgdGhleSBvbmx5CiAgICAgLy8gcmVmZXIgdG8gY2VydGFpbiByYW5nZXMgb2YgbG9jYWxz
LiBIZW5jZSB3aHkgd2UgbmVlZCB0byBkbyB0aGlzIGhlcmUsIG9uY2UgdGhlIHN0YWNrIGlzIHNl
bnNpYmxlLgogICAgIC8vIE5vdGUgdGhhdCB3ZSBhbHNvIHJvdWdobHkgYXNzdW1lIHRoYXQgdGhl
IGFyZ3VtZW50cyBtaWdodCBzdGlsbCBiZSBtYXRlcmlhbGl6ZWQgb3V0c2lkZSBvZiBpdHMKICAg
ICAvLyBpbmxpbmUgY2FsbCBmcmFtZSBzY29wZSAtIGJ1dCBmb3Igbm93IHRoZSBERkcgd291bGRu
J3QgZG8gdGhhdC4KIAotICAgIGVtaXRSZXN0b3JlQXJndW1lbnRzKGppdCwgb3BlcmFuZHMpOwor
ICAgIGVtaXRSZXN0b3JlQXJndW1lbnRzKGNvbnRleHQsIGNvZGVCbG9jaywgb3BlcmFuZHMpOwog
CiAgICAgLy8gQWRqdXN0IHRoZSBvbGQgSklUJ3MgZXhlY3V0ZSBjb3VudGVyLiBTaW5jZSB3ZSBh
cmUgZXhpdGluZyBPU1IsIHdlIGtub3cKICAgICAvLyB0aGF0IGFsbCBuZXcgY2FsbHMgaW50byB0
aGlzIGNvZGUgd2lsbCBnbyB0byB0aGUgbmV3IEpJVCwgc28gdGhlIGV4ZWN1dGUKQEAgLTcyNywy
NiArODk3LDE3NCBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgCiAg
ICAgLy8gY291bnRlciB0byAwOyBvdGhlcndpc2Ugd2Ugc2V0IHRoZSBjb3VudGVyIHRvCiAgICAg
Ly8gY291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCgpLgogCi0gICAgaGFuZGxlRXhp
dENvdW50cyhqaXQsIGV4aXQpOworICAgIGlmIChjb2RlQmxvY2stPnVwZGF0ZU9TUkV4aXRDb3Vu
dGVyQW5kQ2hlY2tJZk5lZWRUb1Jlb3B0aW1pemUoZXhpdCkgPT0gQ29kZUJsb2NrOjpPcHRpbWl6
ZUFjdGlvbjo6T3B0aW1pemVOb3cpCisgICAgICAgIHRyaWdnZXJSZW9wdGltaXphdGlvbk5vdyhj
b2RlQmxvY2ssICZleGl0KTsKIAogICAgIC8vIFJlaWZ5IGlubGluZWQgY2FsbCBmcmFtZXMuCi0K
LSAgICByZWlmeUlubGluZWRDYWxsRnJhbWVzKGppdCwgZXhpdCk7CisgICAgcmVpZnlJbmxpbmVk
Q2FsbEZyYW1lcyhjb250ZXh0LCBiYXNlbGluZUNvZGVCbG9jaywgZXhpdCk7CiAKICAgICAvLyBB
bmQgZmluaXNoLgotICAgIGFkanVzdEFuZEp1bXBUb1RhcmdldCh2bSwgaml0LCBleGl0KTsKKyAg
ICBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoY29udGV4dCwgdm0sIGNvZGVCbG9jaywgYmFzZWxpbmVD
b2RlQmxvY2ssIGV4aXQpOworfQorCit2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ29udGV4
dCYgY29udGV4dCwgQ29kZUJsb2NrKiBvdXRlcm1vc3RCYXNlbGluZUNvZGVCbG9jaywgY29uc3Qg
T1NSRXhpdEJhc2UmIGV4aXQpCit7CisgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CisgICAg
RnJhbWUgZnJhbWUoY29udGV4dCk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGxlYXZl
IGhvbGVzIG9uIHRoZSBzdGFjayB3aGVuIHBlcmZvcm1pbmcgYW4gT1NSIGV4aXQKKyAgICAvLyBp
biBwcmVzZW5jZSBvZiBpbmxpbmVkIHRhaWwgY2FsbHMuCisgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzUxMQorICAgIEFTU0VSVChvdXRlcm1vc3RCYXNl
bGluZUNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBm
cmFtZS5zZXRPcGVyYW5kPENvZGVCbG9jayo+KENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaywgb3V0
ZXJtb3N0QmFzZWxpbmVDb2RlQmxvY2spOworCisgICAgY29uc3QgQ29kZU9yaWdpbiogY29kZU9y
aWdpbjsKKyAgICBmb3IgKGNvZGVPcmlnaW4gPSAmZXhpdC5tX2NvZGVPcmlnaW47IGNvZGVPcmln
aW4gJiYgY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lOyBjb2RlT3JpZ2luID0gY29kZU9yaWdp
bi0+aW5saW5lQ2FsbEZyYW1lLT5nZXRDYWxsZXJTa2lwcGluZ1RhaWxDYWxscygpKSB7CisgICAg
ICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gY29kZU9yaWdpbi0+aW5saW5l
Q2FsbEZyYW1lOworICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gYmFzZWxp
bmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jaygqY29kZU9yaWdpbiwgb3V0
ZXJtb3N0QmFzZWxpbmVDb2RlQmxvY2spOworICAgICAgICBJbmxpbmVDYWxsRnJhbWU6OktpbmQg
dHJ1ZUNhbGxlckNhbGxLaW5kOworICAgICAgICBDb2RlT3JpZ2luKiB0cnVlQ2FsbGVyID0gaW5s
aW5lQ2FsbEZyYW1lLT5nZXRDYWxsZXJTa2lwcGluZ1RhaWxDYWxscygmdHJ1ZUNhbGxlckNhbGxL
aW5kKTsKKyAgICAgICAgdm9pZCogY2FsbGVyRnJhbWUgPSBudWxscHRyOworCisgICAgICAgIGlm
ICghdHJ1ZUNhbGxlcikgeworICAgICAgICAgICAgQVNTRVJUKGlubGluZUNhbGxGcmFtZS0+aXNU
YWlsKCkpOworICAgICAgICAgICAgdm9pZCogcmV0dXJuUEMgPSBmcmFtZS5nZXQ8dm9pZCo+KENh
bGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSk7CisgICAgICAgICAgICBmcmFtZS5zZXQ8dm9pZCo+
KGlubGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSwgcmV0dXJuUEMpOworICAgICAgICAg
ICAgY2FsbGVyRnJhbWUgPSBmcmFtZS5nZXQ8dm9pZCo+KENhbGxGcmFtZTo6Y2FsbGVyRnJhbWVP
ZmZzZXQoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBDb2RlQmxvY2sqIGJhc2Vs
aW5lQ29kZUJsb2NrRm9yQ2FsbGVyID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNl
bGluZUNvZGVCbG9jaygqdHJ1ZUNhbGxlciwgb3V0ZXJtb3N0QmFzZWxpbmVDb2RlQmxvY2spOwor
ICAgICAgICAgICAgdW5zaWduZWQgY2FsbEJ5dGVjb2RlSW5kZXggPSB0cnVlQ2FsbGVyLT5ieXRl
Y29kZUluZGV4OworICAgICAgICAgICAgdm9pZCoganVtcFRhcmdldCA9IG51bGxwdHI7CisKKyAg
ICAgICAgICAgIHN3aXRjaCAodHJ1ZUNhbGxlckNhbGxLaW5kKSB7CisgICAgICAgICAgICBjYXNl
IElubGluZUNhbGxGcmFtZTo6Q2FsbDoKKyAgICAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1l
OjpDb25zdHJ1Y3Q6CisgICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q2FsbFZhcmFy
Z3M6CisgICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q29uc3RydWN0VmFyYXJnczoK
KyAgICAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpUYWlsQ2FsbDoKKyAgICAgICAgICAg
IGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpUYWlsQ2FsbFZhcmFyZ3M6IHsKKyAgICAgICAgICAgICAg
ICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9CisgICAgICAgICAgICAgICAgICAgIGJhc2Vs
aW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5nZXRDYWxsTGlua0luZm9Gb3JCeXRlY29kZUluZGV4KGNh
bGxCeXRlY29kZUluZGV4KTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsTGlu
a0luZm8pOworCisgICAgICAgICAgICAgICAganVtcFRhcmdldCA9IGNhbGxMaW5rSW5mby0+Y2Fs
bFJldHVybkxvY2F0aW9uKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6
OkdldHRlckNhbGw6CisgICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6U2V0dGVyQ2Fs
bDogeworICAgICAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9CisgICAg
ICAgICAgICAgICAgICAgIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5maW5kU3R1YkluZm8o
Q29kZU9yaWdpbihjYWxsQnl0ZWNvZGVJbmRleCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHN0dWJJbmZvKTsKKworICAgICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBzdHViSW5m
by0+ZG9uZUxvY2F0aW9uKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAodHJ1ZUNhbGxlci0+aW5saW5lQ2FsbEZyYW1lKQorICAgICAgICAgICAgICAg
IGNhbGxlckZyYW1lID0gY3B1LmZwPHVpbnQ4X3QqPigpICsgdHJ1ZUNhbGxlci0+aW5saW5lQ2Fs
bEZyYW1lLT5zdGFja09mZnNldCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CisKKyAgICAgICAg
ICAgIGZyYW1lLnNldDx2b2lkKj4oaW5saW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpLCBq
dW1wVGFyZ2V0KTsKKyAgICAgICAgfQorCisgICAgICAgIGZyYW1lLnNldDx2b2lkKj4oaW5saW5l
Q2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaywgYmFzZWxp
bmVDb2RlQmxvY2spOworCisjaWYgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgPiAw
CisgICAgICAgIC8vIFJlc3RvcmUgdGhlIGlubGluZSBjYWxsIGZyYW1lJ3MgY2FsbGVlIHNhdmUg
cmVnaXN0ZXJzLgorICAgICAgICAvLyBJZiB0aGlzIGlubGluZWQgZnJhbWUgaXMgYSB0YWlsIGNh
bGwgdGhhdCB3aWxsIHJldHVybiBiYWNrIHRvIHRoZSBvcmlnaW5hbCBjYWxsZXIsIHdlIG5lZWQg
dG8KKyAgICAgICAgLy8gY29weSB0aGUgcHJpb3IgY29udGVudHMgb2YgdGhlIHRhZyByZWdpc3Rl
cnMgYWxyZWFkeSBzYXZlZCBmb3IgdGhlIG91dGVyIGZyYW1lIHRvIHRoaXMgZnJhbWUuCisgICAg
ICAgIHNhdmVPckNvcHlDYWxsZWVTYXZlc0Zvcihjb250ZXh0LCBiYXNlbGluZUNvZGVCbG9jaywg
c3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0
KSwgIXRydWVDYWxsZXIpOworI2VuZGlmCisKKyAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUt
PmlzVmFyYXJncygpKQorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZDx1aW50MzJfdD4oaW5s
aW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQs
IFBheWxvYWRPZmZzZXQsIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSk7CisgICAg
ICAgIEFTU0VSVChjYWxsZXJGcmFtZSk7CisgICAgICAgIGZyYW1lLnNldDx2b2lkKj4oaW5saW5l
Q2FsbEZyYW1lLT5jYWxsZXJGcmFtZU9mZnNldCgpLCBjYWxsZXJGcmFtZSk7CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChj
b2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KS5iaXRzKCk7CisgICAgICAgIGZyYW1lLnNldE9wZXJh
bmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50LCBUYWdPZmZzZXQsIGxvY2F0aW9uQml0cyk7CisgICAgICAgIGlmICgh
aW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQorICAgICAgICAgICAgZnJhbWUuc2V0T3Bl
cmFuZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVl
LCBKU1ZhbHVlKGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29uc3RhbnQoKSkpOworI2Vsc2UgLy8g
VVNFKEpTVkFMVUU2NCkgLy8gc28gdGhpcyBpcyB0aGUgMzItYml0IHBhcnQKKyAgICAgICAgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gYmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9ucygp
LmJlZ2luKCkgKyBjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4OworICAgICAgICB1aW50MzJfdCBs
b2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KGluc3RydWN0aW9uKS5iaXRzKCk7CisgICAgICAg
IGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQg
KyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBUYWdPZmZzZXQsIGxvY2F0aW9uQml0cyk7
CisgICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3Rh
Y2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUsIFRhZ09mZnNldCwgSlNWYWx1ZTo6Q2Vs
bFRhZyk7CisgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQorICAg
ICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsg
Q2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBQYXlsb2FkT2Zmc2V0LCBpbmxpbmVDYWxsRnJhbWUtPmNh
bGxlZUNvbnN0YW50KCkpOworI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpIC8vIGVuZGluZyB0aGUg
I2Vsc2UgcGFydCwgc28gZGlyZWN0bHkgYWJvdmUgaXMgdGhlIDMyLWJpdCBwYXJ0CisgICAgfQor
CisgICAgLy8gRG9uJ3QgbmVlZCB0byBzZXQgdGhlIHRvcGxldmVsIGNvZGUgb3JpZ2luIGlmIHdl
IG9ubHkgZGlkIGlubGluZSB0YWlsIGNhbGxzCisgICAgaWYgKGNvZGVPcmlnaW4pIHsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUlu
ZGV4KGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgpLmJpdHMoKTsKKyNlbHNlCisgICAgICAgIElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IG91dGVybW9zdEJhc2VsaW5lQ29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpICsgY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleDsKKyAgICAgICAg
dWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChpbnN0cnVjdGlvbikuYml0cygp
OworI2VuZGlmCisgICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnQsIFRhZ09mZnNldCwgbG9jYXRpb25CaXRzKTsKKyAgICB9CiB9CiAK
LXZvaWQgSklUX09QRVJBVElPTiBPU1JFeGl0OjpkZWJ1Z09wZXJhdGlvblByaW50U3BlY3VsYXRp
b25GYWlsdXJlKEV4ZWNTdGF0ZSogZXhlYywgdm9pZCogZGVidWdJbmZvUmF3LCB2b2lkKiBzY3Jh
dGNoKQordm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoQ29udGV4dCYgY29udGV4dCwgVk0mIHZt
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jaywgY29u
c3QgT1NSRXhpdEJhc2UmIGV4aXQpCiB7Ci0gICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgYXV0byYgY3B1ID0g
Y29udGV4dC5jcHU7CisKKyAgICB2bS5oZWFwLndyaXRlQmFycmllcihiYXNlbGluZUNvZGVCbG9j
ayk7CisKKyAgICAvLyBXZSBiYXJyaWVyIGFsbCBpbmxpbmVkIGZyYW1lcyAtLSBhbmQgbm90IGp1
c3QgdGhlIGN1cnJlbnQgaW5saW5lIHN0YWNrIC0tCisgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCBr
bm93IHdoaWNoIGlubGluZWQgZnVuY3Rpb24gb3ducyB0aGUgdmFsdWUgcHJvZmlsZSB0aGF0Cisg
ICAgLy8gd2UnbGwgdXBkYXRlIHdoZW4gd2UgZXhpdC4gSW4gdGhlIGNhc2Ugb2YgImYoKSB7IGEo
KTsgYigpOyB9IiwgaWYgYm90aAorICAgIC8vIGEgYW5kIGIgYXJlIGlubGluZWQsIHdlIG1pZ2h0
IGV4aXQgaW5zaWRlIGIgZHVlIHRvIGEgYmFkIHZhbHVlIGxvYWRlZAorICAgIC8vIGZyb20gYS4K
KyAgICAvLyBGSVhNRTogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBzaG91bGQgcmVtZW1i
ZXIgd2hpY2ggQ29kZUJsb2NrIG93bnMKKyAgICAvLyB0aGUgdmFsdWUgcHJvZmlsZS4KKyAgICBJ
bmxpbmVDYWxsRnJhbWVTZXQqIGlubGluZUNhbGxGcmFtZXMgPSBjb2RlQmxvY2stPmppdENvZGUo
KS0+ZGZnQ29tbW9uKCktPmlubGluZUNhbGxGcmFtZXMuZ2V0KCk7CisgICAgaWYgKGlubGluZUNh
bGxGcmFtZXMpIHsKKyAgICAgICAgZm9yIChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFt
ZSA6ICppbmxpbmVDYWxsRnJhbWVzKQorICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIo
aW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5nZXQoKSk7CisgICAgfQorCisgICAg
aWYgKGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgY3B1LmZwKCkg
PSBjcHUuZnA8dWludDhfdCo+KCkgKyBleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKIAotICAgIFNwZWN1bGF0aW9u
RmFpbHVyZURlYnVnSW5mbyogZGVidWdJbmZvID0gc3RhdGljX2Nhc3Q8U3BlY3VsYXRpb25GYWls
dXJlRGVidWdJbmZvKj4oZGVidWdJbmZvUmF3KTsKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGRlYnVnSW5mby0+Y29kZUJsb2NrOworICAgIENvZGVCbG9jayogY29kZUJsb2NrRm9yRXhpdCA9
IGJhc2VsaW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soZXhpdC5tX2Nv
ZGVPcmlnaW4sIGJhc2VsaW5lQ29kZUJsb2NrKTsKKy8vICAgIFZlY3RvcjxCeXRlY29kZUFuZE1h
Y2hpbmVPZmZzZXQ+JiBkZWNvZGVkQ29kZU1hcCA9IGppdC5kZWNvZGVkQ29kZU1hcEZvcihjb2Rl
QmxvY2tGb3JFeGl0KTsKKy8vICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgVmVjdG9yPEJ5dGVjb2Rl
QW5kTWFjaGluZU9mZnNldD4+IGRlY29kZWRDb2RlTWFwczsKKyAgICBWZWN0b3I8Qnl0ZWNvZGVB
bmRNYWNoaW5lT2Zmc2V0PiBkZWNvZGVkQ29kZU1hcDsKKyAgICBjb2RlQmxvY2tGb3JFeGl0LT5q
aXRDb2RlTWFwKCktPmRlY29kZShkZWNvZGVkQ29kZU1hcCk7CisKKyAgICBCeXRlY29kZUFuZE1h
Y2hpbmVPZmZzZXQqIG1hcHBpbmcgPSBiaW5hcnlTZWFyY2g8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zm
c2V0LCB1bnNpZ25lZD4oZGVjb2RlZENvZGVNYXAsIGRlY29kZWRDb2RlTWFwLnNpemUoKSwgZXhp
dC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0Ojpn
ZXRCeXRlY29kZUluZGV4KTsKKworICAgIEFTU0VSVChtYXBwaW5nKTsKKyAgICBBU1NFUlQobWFw
cGluZy0+bV9ieXRlY29kZUluZGV4ID09IGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgp
OworCisgICAgdm9pZCoganVtcFRhcmdldCA9IGNvZGVCbG9ja0ZvckV4aXQtPmppdENvZGUoKS0+
ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChtYXBwaW5nLT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsK
KworICAgIGNwdS5zcCgpID0gY3B1LmZwPHVpbnQ4X3QqPigpICsgY29kZUJsb2NrRm9yRXhpdC0+
c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpOworICAgIGlmIChleGl0Lmlz
RXhjZXB0aW9uSGFuZGxlcigpKSB7CisgICAgICAgIC8vIFNpbmNlIHdlJ3JlIGp1bXBpbmcgdG8g
b3BfY2F0Y2gsIHdlIG5lZWQgdG8gc2V0IGNhbGxGcmFtZUZvckNhdGNoLgorICAgICAgICB2bS5j
YWxsRnJhbWVGb3JDYXRjaCA9IGNwdS5mcDxFeGVjU3RhdGUqPigpOworICAgIH0KKworICAgIGNw
dS5wYygpID0ganVtcFRhcmdldDsKK30KKworc3RhdGljIHZvaWQgcHJpbnRPU1JFeGl0KENQVVN0
YXRlJiBjcHUsIHVpbnQzMl90IG9zckV4aXRJbmRleCwgY29uc3QgT1NSRXhpdCYgZXhpdCkKK3sK
KyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBjcHUuZnA8RXhlY1N0YXRlKj4oKTsKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwogICAgIENvZGVCbG9jayogYWx0ZXJu
YXRpdmUgPSBjb2RlQmxvY2stPmFsdGVybmF0aXZlKCk7CisgICAgRXhpdEtpbmQga2luZCA9IGV4
aXQubV9raW5kOworICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gZXhpdC5tX2NvZGVPcmln
aW4uYnl0ZWNvZGVJbmRleDsKKwogICAgIGRhdGFMb2coIlNwZWN1bGF0aW9uIGZhaWx1cmUgaW4g
IiwgKmNvZGVCbG9jayk7Ci0gICAgZGF0YUxvZygiIEAgZXhpdCAjIiwgdm0tPm9zckV4aXRJbmRl
eCwgIiAoYmMjIiwgZGVidWdJbmZvLT5ieXRlY29kZU9mZnNldCwgIiwgIiwgZXhpdEtpbmRUb1N0
cmluZyhkZWJ1Z0luZm8tPmtpbmQpLCAiKSB3aXRoICIpOworICAgIGRhdGFMb2coIiBAIGV4aXQg
IyIsIG9zckV4aXRJbmRleCwgIiAoYmMjIiwgYnl0ZWNvZGVPZmZzZXQsICIsICIsIGV4aXRLaW5k
VG9TdHJpbmcoa2luZCksICIpIHdpdGggIik7CiAgICAgaWYgKGFsdGVybmF0aXZlKSB7CiAgICAg
ICAgIGRhdGFMb2coCiAgICAgICAgICAgICAiZXhlY3V0ZUNvdW50ZXIgPSAiLCBhbHRlcm5hdGl2
ZS0+aml0RXhlY3V0ZUNvdW50ZXIoKSwKQEAgLTc1NiwyMSArMTA3NCwxOCBAQCB2b2lkIEpJVF9P
UEVSQVRJT04gT1NSRXhpdDo6ZGVidWdPcGVyYXRpCiAgICAgICAgIGRhdGFMb2coIm5vIGFsdGVy
bmF0aXZlIGNvZGUgYmxvY2sgKGkuZS4gd2UndmUgYmVlbiBqZXR0aXNvbmVkKSIpOwogICAgIGRh
dGFMb2coIiwgb3NyRXhpdENvdW50ZXIgPSAiLCBjb2RlQmxvY2stPm9zckV4aXRDb3VudGVyKCks
ICJcbiIpOwogICAgIGRhdGFMb2coIiAgICBHUFJzIGF0IHRpbWUgb2YgZXhpdDoiKTsKLSAgICBj
aGFyKiBzY3JhdGNoUG9pbnRlciA9IHN0YXRpY19jYXN0PGNoYXIqPihzY3JhdGNoKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkg
ewogICAgICAgICBHUFJSZWcgZ3ByID0gR1BSSW5mbzo6dG9SZWdpc3RlcihpKTsKLSAgICAgICAg
ZGF0YUxvZygiICIsIEdQUkluZm86OmRlYnVnTmFtZShncHIpLCAiOiIsIFJhd1BvaW50ZXIoKnJl
aW50ZXJwcmV0X2Nhc3RfcHRyPHZvaWQqKj4oc2NyYXRjaFBvaW50ZXIpKSk7Ci0gICAgICAgIHNj
cmF0Y2hQb2ludGVyICs9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CisgICAgICAgIGRhdGFMb2co
IiAiLCBjcHUuZ3ByTmFtZShncHIpLCAiOiIsIFJhd1BvaW50ZXIoY3B1Lmdwcjx2b2lkKj4oZ3By
KSkpOwogICAgIH0KICAgICBkYXRhTG9nKCJcbiIpOwogICAgIGRhdGFMb2coIiAgICBGUFJzIGF0
IHRpbWUgb2YgZXhpdDoiKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6
bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewogICAgICAgICBGUFJSZWcgZnByID0gRlBSSW5mbzo6
dG9SZWdpc3RlcihpKTsKLSAgICAgICAgZGF0YUxvZygiICIsIEZQUkluZm86OmRlYnVnTmFtZShm
cHIpLCAiOiIpOwotICAgICAgICB1aW50NjRfdCBiaXRzID0gKnJlaW50ZXJwcmV0X2Nhc3RfcHRy
PHVpbnQ2NF90Kj4oc2NyYXRjaFBvaW50ZXIpOwotICAgICAgICBkb3VibGUgdmFsdWUgPSAqcmVp
bnRlcnByZXRfY2FzdF9wdHI8ZG91YmxlKj4oc2NyYXRjaFBvaW50ZXIpOworICAgICAgICBkYXRh
TG9nKCIgIiwgY3B1LmZwck5hbWUoZnByKSwgIjoiKTsKKyAgICAgICAgdWludDY0X3QgYml0cyA9
IGNwdS5mcHI8dWludDY0X3Q+KGZwcik7CisgICAgICAgIGRvdWJsZSB2YWx1ZSA9IGNwdS5mcHIo
ZnByKTsKICAgICAgICAgZGF0YUxvZ0YoIiVsbHg6JWxmIiwgc3RhdGljX2Nhc3Q8bG9uZyBsb25n
PihiaXRzKSwgdmFsdWUpOwotICAgICAgICBzY3JhdGNoUG9pbnRlciArPSBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpOwogICAgIH0KICAgICBkYXRhTG9nKCJcbiIpOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgJKHJldmlzaW9uIDIyMTAxNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMyAr
MzIsMTAgQEAKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIk1ldGhvZE9m
R2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgorI2luY2x1ZGUg
IlByb2JlQ29udGV4dC5oIgogI2luY2x1ZGUgIlZhbHVlUmVjb3ZlcnkuaCIKIAotbmFtZXNwYWNl
IEpTQyB7Ci0KLWNsYXNzIENDYWxsSGVscGVyczsKLQotbmFtZXNwYWNlIERGRyB7CituYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIGNsYXNzIFNwZWN1bGF0aXZlSklUOwogc3RydWN0
IEJhc2ljQmxvY2s7CkBAIC05OCw3ICs5NSw3IEBAIHByaXZhdGU6CiBzdHJ1Y3QgT1NSRXhpdCA6
IHB1YmxpYyBPU1JFeGl0QmFzZSB7CiAgICAgT1NSRXhpdChFeGl0S2luZCwgSlNWYWx1ZVNvdXJj
ZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSwgU3BlY3VsYXRpdmVKSVQqLCB1bnNpZ25l
ZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCA9IFVJTlRfTUFYKTsKIAotICAg
IHN0YXRpYyB2b2lkIEpJVF9PUEVSQVRJT04gY29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKikgV1RG
X0lOVEVSTkFMOworICAgIHN0YXRpYyB2b2lkIGV4ZWN1dGVPU1JFeGl0KFByb2JlOjpDb250ZXh0
Jik7CiAKICAgICB1bnNpZ25lZCBtX3BhdGNoYWJsZUNvZGVPZmZzZXQgeyAwIH07CiAgICAgCkBA
IC0xMTksMTEgKzExNiw2IEBAIHN0cnVjdCBPU1JFeGl0IDogcHVibGljIE9TUkV4aXRCYXNlIHsK
ICAgICB7CiAgICAgICAgIE9TUkV4aXRCYXNlOjpjb25zaWRlckFkZGluZ0FzRnJlcXVlbnRFeGl0
U2l0ZShwcm9maWxlZENvZGVCbG9jaywgRXhpdEZyb21ERkcpOwogICAgIH0KLQotcHJpdmF0ZToK
LSAgICBzdGF0aWMgdm9pZCBjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmLCBWTSYsIGNvbnN0IE9T
UkV4aXQmLCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYsIFNwZWN1bGF0aW9uUmVjb3Zl
cnkqKTsKLSAgICBzdGF0aWMgdm9pZCBlbWl0UmVzdG9yZUFyZ3VtZW50cyhDQ2FsbEhlbHBlcnMm
LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYpOwotICAgIHN0YXRpYyB2b2lkIEpJVF9P
UEVSQVRJT04gZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFpbHVyZShFeGVjU3RhdGUq
LCB2b2lkKiwgdm9pZCopIFdURl9JTlRFUk5BTDsKIH07CiAKIHN0cnVjdCBTcGVjdWxhdGlvbkZh
aWx1cmVEZWJ1Z0luZm8gewpAQCAtMTMyLDYgKzEyNCwxMCBAQCBzdHJ1Y3QgU3BlY3VsYXRpb25G
YWlsdXJlRGVidWdJbmZvIHsKICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldDsKIH07CiAKK3Zv
aWQgaGFuZGxlRXhpdENvdW50cyhDb2RlQmxvY2sqLCBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJs
b2NrLCBPU1JFeGl0QmFzZSYpOwordm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKFByb2JlOjpD
b250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrLCBjb25zdCBPU1JF
eGl0QmFzZSYpOwordm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoUHJvYmU6OkNvbnRleHQmLCBW
TSYsIENvZGVCbG9jayosIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2ssIGNvbnN0IE9TUkV4
aXRCYXNlJik7CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJM
RShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29t
cGlsZXJDb21tb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAkocmV2aXNpb24gMjIxMDE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzMsMTAgKzMzLDEyIEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAi
UHJvYmVDb250ZXh0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCisvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3
ZSBmaXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NS4KIHZv
aWQgaGFuZGxlRXhpdENvdW50cyhDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2Um
IGV4aXQpCiB7CiAgICAgaml0LmFkZDMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDEp
LCBBc3NlbWJseUhlbHBlcnM6OkFic29sdXRlQWRkcmVzcygmZXhpdC5tX2NvdW50KSk7CkBAIC00
OCwxMCArNTAsMTIgQEAgdm9pZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYgaml0LAog
ICAgIAogICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCB0b29GZXdGYWlsczsKICAgICAKKyAgICAv
L0AgbWxhbSBjb2RlQmxvY2stPm9zckV4aXRDb3VudGVyKys7CiAgICAgaml0LmxvYWQzMihBc3Nl
bWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZP
U1JFeGl0Q291bnRlcigpKSwgR1BSSW5mbzo6cmVnVDIpOwogICAgIGppdC5hZGQzMihBc3NlbWJs
eUhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6cmVnVDIpOwogICAgIGppdC5zdG9y
ZTMyKEdQUkluZm86OnJlZ1QyLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVn
VDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZPU1JFeGl0Q291bnRlcigpKSk7CiAgICAgCisgICAgLy9A
IG1sYW0gaWYgKGJhc2VsaW5lQ29kZUJsb2NrLT5tX2ppdEV4ZWN1dGVDb3VudGVyLm1fY291bnRl
ciA+PSAwKSBnb3RvIHJlb3B0aW1pemVOb3c7CiAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGppdC5iYXNlbGluZUNvZGVCbG9jaygpKSwgR1BSSW5mbzo6cmVnVDAp
OwogICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCByZW9wdGltaXplTm93ID0gaml0LmJyYW5jaDMy
KAogICAgICAgICBBc3NlbWJseUhlbHBlcnM6OkdyZWF0ZXJUaGFuT3JFcXVhbCwKQEAgLTY4LDYg
KzcyLDcgQEAgdm9pZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYgaml0LAogICAgIAog
ICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcExpc3QgbG9vcFRocmVzaG9sZDsKICAgICAKKyAgICAv
L0AgbWxhbTogaWYgYW55IG9mIHRoZSBpbmxpbmVkIGNvZGVCbG9ja3MgZGlkVHJ5VG9FbnRlcklu
TG9vcCwgZ290byBsb29wVGhyZXNob2xkOwogICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lKiBpbmxp
bmVDYWxsRnJhbWUgPSBleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGlubGluZUNh
bGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1lID0gaW5saW5lQ2FsbEZyYW1lLT5kaXJlY3RDYWxsZXIu
aW5saW5lQ2FsbEZyYW1lKSB7CiAgICAgICAgIGxvb3BUaHJlc2hvbGQuYXBwZW5kKAogICAgICAg
ICAgICAgaml0LmJyYW5jaFRlc3Q4KApAQCAtOTIsMTAgKzk3LDEyIEBAIHZvaWQgaGFuZGxlRXhp
dENvdW50cyhDQ2FsbEhlbHBlcnMmIGppdCwKICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwogICAg
IH0KICAgICAKKyAgICAvL0AgbWxhbSBpZiAoY29kZUJsb2NrLT5vc3JFeGl0Q291bnRlciA8PSB0
aHJlc2hvbGQpIGdvdG8gdG9vRmV3RmFpbHM7CiAgICAgdG9vRmV3RmFpbHMgPSBqaXQuYnJhbmNo
MzIoQXNzZW1ibHlIZWxwZXJzOjpCZWxvd09yRXF1YWwsIEdQUkluZm86OnJlZ1QyLCBHUFJJbmZv
OjpyZWdUMSk7CiAgICAgCiAgICAgcmVvcHRpbWl6ZU5vdy5saW5rKCZqaXQpOwogICAgIAorICAg
IC8vQCBtbGFtIHRyaWdnZXJSZW9wdGltaXphdGlvbk5vdyhjb2RlQmxvY2ssICZleGl0KTsKICAg
ICAvLyBSZW9wdGltaXplIGFzIHNvb24gYXMgcG9zc2libGUuCiAjaWYgIU5VTUJFUl9PRl9BUkdV
TUVOVF9SRUdJU1RFUlMKICAgICBqaXQucG9rZShHUFJJbmZvOjpyZWdUMCk7CkBAIC0xMzgsNiAr
MTQ1LDcgQEAgdm9pZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYgaml0LAogICAgIGRv
bmVBZGp1c3RpbmcubGluaygmaml0KTsKIH0KIAorLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4g
d2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiB2
b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4
aXRCYXNlJiBleGl0KQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgbGVhdmUgaG9sZXMg
b24gdGhlIHN0YWNrIHdoZW4gcGVyZm9ybWluZyBhbiBPU1IgZXhpdApAQCAtMjQ3LDYgKzI1NSw3
IEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMKICAgICB9CiB9CiAK
Ky8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogc3RhdGljIHZvaWQgb3NyV3JpdGVCYXJyaWVyKEND
YWxsSGVscGVycyYgaml0LCBHUFJSZWcgb3duZXIsIEdQUlJlZyBzY3JhdGNoKQogewogICAgIEFz
c2VtYmx5SGVscGVyczo6SnVtcCBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuID0gaml0LmJhcnJp
ZXJCcmFuY2hXaXRob3V0RmVuY2Uob3duZXIpOwpAQCAtMjY3LDYgKzI3Niw3IEBAIHN0YXRpYyB2
b2lkIG9zcldyaXRlQmFycmllcihDQ2FsbEhlbHBlcnMKICAgICBvd25lcklzUmVtZW1iZXJlZE9y
SW5FZGVuLmxpbmsoJmppdCk7CiB9CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZp
eCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogdm9pZCBh
ZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NS
RXhpdEJhc2UmIGV4aXQpCiB7CiAgICAgaml0Lm1lbW9yeUZlbmNlKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgJ
KHJldmlzaW9uIDIyMTAxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dENvbXBpbGVyQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgdm9pZCBo
YW5kbGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYsIGNvbgogdm9pZCByZWlmeUlubGluZWRDYWxs
RnJhbWVzKENDYWxsSGVscGVycyYsIGNvbnN0IE9TUkV4aXRCYXNlJik7CiB2b2lkIGFkanVzdEFu
ZEp1bXBUb1RhcmdldChWTSYsIENDYWxsSGVscGVycyYsIGNvbnN0IE9TUkV4aXRCYXNlJik7CiAK
Ky8vIEZJWE1FOiBUaGlzIHdvbid0IGJlIG5lZWRlZCBvbmNlIHdlIGZpeCBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1LgogdGVtcGxhdGUgPHR5cGVuYW1lIEpJ
VENvZGVUeXBlPgogdm9pZCBhZGp1c3RGcmFtZUFuZFN0YWNrSW5PU1JFeGl0Q29tcGlsZXJUaHVu
ayhNYWNyb0Fzc2VtYmxlciYgaml0LCBWTSogdm0sIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkK
IHsKQEAgLTU0LDEzICs1NSwxNiBAQCB2b2lkIGFkanVzdEZyYW1lQW5kU3RhY2tJbk9TUkV4aXRD
b21waWxlCiAgICAgICAgIHJlZ2lzdGVyc1RvUHJlc2VydmUubWVyZ2UoUmVnaXN0ZXJTZXQ6Om1h
Y3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICB9CiAKKyAgICAvL0AgbWxhbTogY29tcHV0ZSBz
aXplIG9mIHNjcmF0Y2ggYnVmZmVyIHRvIHN0YXNoIHJlZ2lzdGVycyBpbi4KICAgICBzaXplX3Qg
c2NyYXRjaFNpemUgPSBzaXplb2Yodm9pZCopICogcmVnaXN0ZXJzVG9QcmVzZXJ2ZS5udW1iZXJP
ZlNldEdQUnMoKTsKICAgICBpZiAoaXNGVExPU1JFeGl0KQogICAgICAgICBzY3JhdGNoU2l6ZSAr
PSBzaXplb2Yodm9pZCopOwogCisgICAgLy9AIG1sYW06IGFsbG9jYXRlIHNjcmF0Y2ggYnVmZmVy
LgogICAgIFNjcmF0Y2hCdWZmZXIqIHNjcmF0Y2hCdWZmZXIgPSB2bS0+c2NyYXRjaEJ1ZmZlckZv
clNpemUoc2NyYXRjaFNpemUpOwogICAgIGNoYXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PGNoYXIq
PihzY3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpOwogCisgICAgLy9AIG1sYW06IHNhdmUgdGhl
IHJlZ2lzdGVycyBpbiB0aGUgc2NyYXRjaCBidWZmZXIuCiAgICAgaml0LnB1c2hUb1NhdmUoR1BS
SW5mbzo6cmVnVDEpOwogICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KGJ1ZmZlciksIEdQUkluZm86OnJlZ1QxKTsKIApAQCAtNzAsNiArNzQsNyBAQCB2b2lkIGFkanVz
dEZyYW1lQW5kU3RhY2tJbk9TUkV4aXRDb21waWxlCiAgICAgICAgIHN0b3JlT2Zmc2V0ICs9IHNp
emVvZih2b2lkKik7CiAgICAgfSk7CiAKKyAgICAvL0AgbWxhbTogRm9yIEZUTCwgYWxzbyBuZWVk
IHRvIHN0YXNoIGF3YXkgdGhlIE9TUiBleGl0SW5kZXg/CiAgICAgaWYgKGlzRlRMT1NSRXhpdCkg
ewogICAgICAgICAvLyBGVEwgT1NSRXhpdHMgYXJlIGVudGVyZWQgdmlhIHRoZSBjb2RlIEZUTEV4
aXRUaHVua0dlbmVyYXRvciBlbWl0cyB3aGljaCBkb2VzCiAgICAgICAgIC8vIHB1c2hUb1NhdmVJ
bW1lZGlhdGVXaXRob3V0VG91Y2hSZWdpc3RlcnMgd2l0aCB0aGUgT1NSIGV4aXQgaW5kZXguIFdl
IG5lZWQgdG8gbG9hZApAQCAtNzksMTEgKzg0LDE1IEBAIHZvaWQgYWRqdXN0RnJhbWVBbmRTdGFj
a0luT1NSRXhpdENvbXBpbGUKICAgICB9CiAgICAgaml0LnBvcFRvUmVzdG9yZShHUFJJbmZvOjpy
ZWdUMSk7CiAKKyAgICAvL0AgbWxhbTogVGhpcyBsb29rcyB2ZXJ5IHNpbWlsYXIgdG8gcHJlcGFy
ZU9TUkV4aXQoKS4gV2UgcmVzdG9yZSB0aGUgZnAgaGVyZSBpZiB3ZSBoYXZlIGFuIGV4Y2VwdGlv
bi4KICAgICAvLyBXZSBuZWVkIHRvIHJlc2V0IEZQIGluIHRoZSBjYXNlIG9mIGFuIGV4Y2VwdGlv
bi4KICAgICBqaXQubG9hZFB0cih2bS0+YWRkcmVzc09mQ2FsbEZyYW1lRm9yQ2F0Y2goKSwgR1BS
SW5mbzo6cmVnVDApOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRpZE5vdEhhdmVFeGNlcHRp
b24gPSBqaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgR1BSSW5mbzo6cmVn
VDApOwogICAgIGppdC5tb3ZlKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3Rlcik7CiAgICAgZGlkTm90SGF2ZUV4Y2VwdGlvbi5saW5rKCZqaXQpOworCisgICAgLy9AIG1s
YW06IENvbXB1dGUgc3AgZnJvbSBmcC4gV2Ugc2hvdWxkbid0IG5lZWQgdG8gZG8gdGhpcyBpZiB3
ZSBkaWRuJ3QgZ2V0IGhlcmUgZHVlIHRvIGFuIGV4Y2VwdGlvbi4KKyAgICAvL0AgbWxhbTogc3Ag
PSBmcCAtIGNvZGVCbG9jay0+c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIp
OwogICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIFNQIGlzIGNvcnJlY3QgaW4gY2FzZSBvZiBh
biBleGNlcHRpb24uCiAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRp
Y19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9j
azo6aml0Q29kZU9mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDApOwpAQCAtMTAyLDEyICsxMTEsMTQg
QEAgdm9pZCBhZGp1c3RGcmFtZUFuZFN0YWNrSW5PU1JFeGl0Q29tcGlsZQogICAgIGppdC5hZGRQ
dHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQu
bW92ZShHUFJJbmZvOjpyZWdUMCwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVy
KTsKIAorICAgIC8vQCBtbGFtOiBtYWtlIHNwYWNlIGZvciB0aGUgb3NyRXhpdEluZGV4IGZvciB0
aGUgRlRMLgogICAgIGlmIChpc0ZUTE9TUkV4aXQpIHsKICAgICAgICAgLy8gTGVhdmUgc3BhY2Ug
Zm9yIHNhdmluZyB0aGUgT1NSIEV4aXQgSW5kZXguCiAgICAgICAgIGppdC5zdWJQdHIoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYWNyb0Fzc2VtYmxlcjo6cHVzaFRvU2F2ZUJ5dGVPZmZz
ZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgfQogICAg
IGppdC5wdXNoVG9TYXZlKEdQUkluZm86OnJlZ1QxKTsKIAorICAgIC8vQCBtbGFtOiByZXN0b3Jl
IHRoZSBzdGFzaGVkIEZUTCBvc3JFeGl0SW5kZXguCiAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIoYnVmZmVyKSwgR1BSSW5mbzo6cmVnVDEpOwogICAgIGlmIChpc0ZU
TE9TUkV4aXQpIHsKICAgICAgICAgLy8gRlRMIE9TUkV4aXRzIGFyZSBlbnRlcmVkIHZpYSBGVExF
eGl0VGh1bmtHZW5lcmF0b3IgY29kZSB3aXRoIGRvZXMKQEAgLTExNyw2ICsxMjgsNyBAQCB2b2lk
IGFkanVzdEZyYW1lQW5kU3RhY2tJbk9TUkV4aXRDb21waWxlCiAgICAgICAgIGppdC5zdG9yZVB0
cihHUFJJbmZvOjpyZWdUMCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBNYWNyb0Fzc2VtYmxlcjo6cHVzaFRvU2F2ZUJ5dGVPZmZz
ZXQoKSkpOwogICAgIH0KIAorICAgIC8vQCBtbGFtOiByZXN0b3JlcyB0aGUgc3Rhc2hlZCByZWdp
c3RlcnMuCiAgICAgdW5zaWduZWQgbG9hZE9mZnNldCA9IDA7CiAgICAgcmVnaXN0ZXJzVG9QcmVz
ZXJ2ZS5mb3JFYWNoKFsmXShSZWcgcmVnKSB7CiAgICAgICAgIGppdC5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QxLCBsb2FkT2Zmc2V0KSwgcmVnLmdwcigpKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2
aXNpb24gMjIxMDE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1NSw2ICsxMzU1LDcgQEAgSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUNsbwogICAgICAgICBleGVjLCBzdHJ1Y3R1cmUsIGFyZ3Vt
ZW50U3RhcnQsIGxlbmd0aCwgY2FsbGVlKTsKIH0KIAorI2lmIDAgLy8gbWxhbSBSRU1PVkUKIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHNEdXJpbmdF
eGl0KEV4ZWNTdGF0ZSogZXhlYywgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIEpT
RnVuY3Rpb24qIGNhbGxlZSwgaW50MzJfdCBhcmd1bWVudENvdW50KQogewogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CkBAIC0xNDEwLDYgKzE0MTEsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQ3JlYXRlQ2xvCiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KKyNlbmRpZiAv
LyBtbGFtCiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVSZXN0KEV4ZWNT
dGF0ZSogZXhlYywgUmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVuc2lnbmVkIG51bWJlck9mUGFy
YW1zVG9Ta2lwLCB1bnNpZ25lZCBhcnJheVNpemUpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkocmV2aXNpb24gMjIxMDE3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw5
ICsxMzksNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyCiBzaXpl
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lO
VEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25E
aXJlY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKiwgRW5j
b2RlZEpTVmFsdWUpOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZURpcmVj
dEFyZ3VtZW50cyhFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90IGxlbmd0aCwgaW50MzJf
dCBtaW5DYXBhY2l0eSk7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlRGly
ZWN0QXJndW1lbnRzRHVyaW5nRXhpdChFeGVjU3RhdGUqLCBJbmxpbmVDYWxsRnJhbWUqLCBKU0Z1
bmN0aW9uKiwgaW50MzJfdCBhcmd1bWVudENvdW50KTsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25DcmVhdGVTY29wZWRBcmd1bWVudHMoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgUmVn
aXN0ZXIqIGFyZ3VtZW50U3RhcnQsIGludDMyX3QgbGVuZ3RoLCBKU0Z1bmN0aW9uKiBjYWxsZWUs
IEpTTGV4aWNhbEVudmlyb25tZW50Kik7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Q3JlYXRlQ2xvbmVkQXJndW1lbnRzRHVyaW5nRXhpdChFeGVjU3RhdGUqLCBJbmxpbmVDYWxsRnJh
bWUqLCBKU0Z1bmN0aW9uKiwgaW50MzJfdCBhcmd1bWVudENvdW50KTsKIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHMoRXhlY1N0YXRlKiwgU3RydWN0
dXJlKiwgUmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQsIGludDMyX3QgbGVuZ3RoLCBKU0Z1bmN0aW9u
KiBjYWxsZWUpOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVJlc3QoRXhl
Y1N0YXRlKiwgUmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVuc2lnbmVkIG51bWJlck9mQXJndW1l
bnRzVG9Ta2lwLCB1bnNpZ25lZCBhcnJheVNpemUpOwogZG91YmxlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRk1vZE9uSW50cyhpbnQzMl90LCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCShyZXZpc2lvbiAyMjEwMTcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDE3ICs0MCwyMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
KyNpZiAwIC8vIG1sYW0gUkVNT1ZFCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdEdlbmVy
YXRpb25UaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgTWFjcm9Bc3NlbWJsZXIgaml0Owog
CisgICAgLy9AIG1sYW06IGFsbCB0aGlzIGRvZXMgaXMgdGhlIGVxdWl2YWxlbnQgb2YgZW5zdXJl
U3RhY2tGb3JPU1JFeGl0KCksIGV4Y2VwdCBpdCBzZXRzIHRvIGNvZGVCbG9jaydzIHNwLCBub3Qg
d29yc3QgY2FzZS4KICAgICAvLyBUaGlzIG5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgd2UgdXNlIHRo
ZSBzY3JhdGNoIGJ1ZmZlciBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gYWxzbyB1c2VzIHRoZSBzY3Jh
dGNoIGJ1ZmZlci4KICAgICBhZGp1c3RGcmFtZUFuZFN0YWNrSW5PU1JFeGl0Q29tcGlsZXJUaHVu
azxERkc6OkpJVENvZGU+KGppdCwgdm0sIEpJVENvZGU6OkRGR0pJVCk7CiAgICAgCisgICAgLy9A
IG1sYW06IHByZXBhcmUgZm9yIHNjcmF0Y2ggc3BhY2UgYWdhaW4uCiAgICAgc2l6ZV90IHNjcmF0
Y2hTaXplID0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIChHUFJJbmZvOjpudW1iZXJPZlJlZ2lz
dGVycyArIEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzKTsKICAgICBTY3JhdGNoQnVmZmVyKiBz
Y3JhdGNoQnVmZmVyID0gdm0tPnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNjcmF0Y2hTaXplKTsKICAg
ICBFbmNvZGVkSlNWYWx1ZSogYnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihz
Y3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpOwogICAgIAorICAgIC8vQCBtbGFtOiBzdGFzaCB0
aGUgcmVnaXN0ZXJzLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHUFJJbmZvOjpudW1i
ZXJPZlJlZ2lzdGVyczsgKytpKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgaml0LnN0
b3JlNjQoR1BSSW5mbzo6dG9SZWdpc3RlcihpKSwgYnVmZmVyICsgaSk7CkBAIC02MywyMiArNjcs
MjUgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRHZW5lcmF0aW9uVAogICAgICAgICBq
aXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6dG9SZWdpc3RlcihpKSwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoR1BSSW5mbzo6cmVnVDApKTsKICAgICB9CiAgICAgCisgICAgLy9AIG1sYW06IHRlbGwg
dGhlIEdDIHRvIHNjYW4gdGhlIHNjcmF0Y2ggYnVmZmVyLgogICAgIC8vIFRlbGwgR0MgbWFyayBw
aGFzZSBob3cgbXVjaCBvZiB0aGUgc2NyYXRjaCBidWZmZXIgaXMgYWN0aXZlIGR1cmluZyBjYWxs
LgogICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZm
ZXItPmFkZHJlc3NPZkFjdGl2ZUxlbmd0aCgpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgIGppdC5z
dG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoU2l6ZSksIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwKSk7CiAKKyAgICAvL0AgY2FsbCBvZmZy
YW1wIGNvbXBpbGVyLgogICAgIC8vIFNldCB1cCBvbmUgYXJndW1lbnQuCiAjaWYgQ1BVKFg4NikK
ICAgICBqaXQucG9rZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgMCk7CiAjZWxzZQogICAg
IGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwogI2VuZGlmCi0KICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBmdW5jdGlvbkNhbGwgPSBq
aXQuY2FsbCgpOwogCisgICAgLy9AIEdDIGRvbid0IGhhdmUgdG8gc2NhbiB0aGUgc2NyYXRjaCBi
dWZmZXIgYW55bW9yZS4KICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihzY3JhdGNoQnVmZmVyLT5hZGRyZXNzT2ZBY3RpdmVMZW5ndGgoKSksIEdQUkluZm86OnJlZ1Qw
KTsKICAgICBqaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoMCksIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwKSk7CiAKKyAgICAvL0AgcmVzdG9y
ZSByZWdpc3RlcnMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJl
ck9mUmVnaXN0ZXJzOyArK2kpIHsKICAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIoYnVmZmVyICsgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSwgR1BS
SW5mbzo6cmVnVDApOwogICAgICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhHUFJJbmZvOjpyZWdUMCksIEZQUkluZm86OnRvUmVnaXN0ZXIoaSkpOwpAQCAtOTEsMTQg
Kzk4LDI2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0R2VuZXJhdGlvblQKICNlbmRp
ZgogICAgIH0KICAgICAKKyAgICAvL0AgZGlzcGF0Y2ggdG8gb2ZmcmFtcC4KICAgICBqaXQuanVt
cChNYWNyb0Fzc2VtYmxlcjo6QWJzb2x1dGVBZGRyZXNzKCZ2bS0+b3NyRXhpdEp1bXBEZXN0aW5h
dGlvbikpOwogICAgIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhV
TktfSUQpOwogICAgIAorICAgIC8vIG1sYW0gRklYTUUuICBSZXBsYWNlIHdpdGggcHJvYmUgdG8g
T1NSRXhpdFByZXBhcmVUaHVuay4KKyAgICBVTlVTRURfUEFSQU0oZnVuY3Rpb25DYWxsKTsKICAg
ICBwYXRjaEJ1ZmZlci5saW5rKGZ1bmN0aW9uQ2FsbCwgT1NSRXhpdDo6Y29tcGlsZU9TUkV4aXQp
OwogICAgIAogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkRGRyBPU1Ig
ZXhpdCBnZW5lcmF0aW9uIHRodW5rIikpOwogfQorI2VuZGlmIC8vIG1sYW0gUkVNT1ZFCisKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0VGh1bmtHZW5lcmF0b3IoVk0qKQoreworICAgIE1h
Y3JvQXNzZW1ibGVyIGppdDsKKyAgICBqaXQucHJvYmUoT1NSRXhpdDo6ZXhlY3V0ZU9TUkV4aXQs
IG51bGxwdHIpOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktf
SUQpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkRGRyBPU1IgZXhp
dCB0aHVuayIpKTsKK30KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckVudHJ5VGh1bmtHZW5l
cmF0b3IoVk0qIHZtKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVu
a3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5o
CShyZXZpc2lvbiAyMjEwMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5r
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgVk07CiAKIG5hbWVz
cGFjZSBERkcgewogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdEdlbmVyYXRpb25UaHVu
a0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRUaHVua0dlbmVy
YXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckVudHJ5VGh1bmtHZW5lcmF0b3Io
Vk0qKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMjIxMDE3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MCw2ICs1MCw3IEBAIEV4ZWN1dGFibGVCYXNlKiBBc3NlbWJseUhlbHBlcnM6OmV4
ZWN1dGEKICAgICByZXR1cm4gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKTsKIH0KIAorLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdo
ZW4gd2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUu
CiBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiYgQXNzZW1ibHlIZWxwZXJzOjpkZWNv
ZGVkQ29kZU1hcEZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBBU1NFUlQoY29kZUJs
b2NrID09IGNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCkpOwpAQCAtODIwLDYxICs4MjEsNiBA
QCBib29sIEFzc2VtYmx5SGVscGVyczo6c3RvcmVXYXNtQ29udGV4dE5lCiAKICNlbmRpZiAvLyBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAKLXZvaWQgQXNzZW1ibHlIZWxwZXJzOjpkZWJ1Z0NhbGwoVk0m
IHZtLCBWX0RlYnVnT3BlcmF0aW9uX0VQUCBmdW5jdGlvbiwgdm9pZCogYXJndW1lbnQpCi17Ci0g
ICAgc2l6ZV90IHNjcmF0Y2hTaXplID0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIChHUFJJbmZv
OjpudW1iZXJPZlJlZ2lzdGVycyArIEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzKTsKLSAgICBT
Y3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZlckZvclNpemUoc2Ny
YXRjaFNpemUpOwotICAgIEVuY29kZWRKU1ZhbHVlKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxFbmNv
ZGVkSlNWYWx1ZSo+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSk7Ci0KLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewotI2lm
IFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHN0b3JlNjQoR1BSSW5mbzo6dG9SZWdpc3RlcihpKSwg
YnVmZmVyICsgaSk7Ci0jZWxzZQotICAgICAgICBzdG9yZTMyKEdQUkluZm86OnRvUmVnaXN0ZXIo
aSksIGJ1ZmZlciArIGkpOwotI2VuZGlmCi0gICAgfQotCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGJ1ZmZlciArIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSksIEdQ
UkluZm86OnJlZ1QwKTsKLSAgICAgICAgc3RvcmVEb3VibGUoRlBSSW5mbzo6dG9SZWdpc3Rlcihp
KSwgR1BSSW5mbzo6cmVnVDApOwotICAgIH0KLQotICAgIC8vIFRlbGwgR0MgbWFyayBwaGFzZSBo
b3cgbXVjaCBvZiB0aGUgc2NyYXRjaCBidWZmZXIgaXMgYWN0aXZlIGR1cmluZyBjYWxsLgotICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hZGRyZXNzT2ZBY3RpdmVMZW5ndGgo
KSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKHNjcmF0Y2hT
aXplKSwgR1BSSW5mbzo6cmVnVDApOwotCi0jaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTSkgfHwg
Q1BVKEFSTTY0KSB8fCBDUFUoTUlQUykKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYnVmZmVyKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYXJndW1lbnQp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgR1BSUmVnIHNjcmF0Y2ggPSBzZWxl
Y3RTY3JhdGNoR1BSKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
LCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotI2VsaWYgQ1BVKFg4NikKLSAgICBwb2tlKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAwKTsKLSAgICBwb2tlKFRydXN0ZWRJbW1QdHIoYXJndW1l
bnQpLCAxKTsKLSAgICBwb2tlKFRydXN0ZWRJbW1QdHIoYnVmZmVyKSwgMik7Ci0gICAgR1BSUmVn
IHNjcmF0Y2ggPSBHUFJJbmZvOjpyZWdUMDsKLSNlbHNlCi0jZXJyb3IgIkpJVCBub3Qgc3VwcG9y
dGVkIG9uIHRoaXMgcGxhdGZvcm0uIgotI2VuZGlmCi0gICAgbW92ZShUcnVzdGVkSW1tUHRyKHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uKSksIHNjcmF0Y2gpOwotICAgIGNhbGwoc2Ny
YXRjaCk7Ci0KLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09m
QWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgc3RvcmVQdHIoVHJ1c3RlZElt
bVB0cigwKSwgR1BSSW5mbzo6cmVnVDApOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKGJ1ZmZlciArIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSksIEdQUkluZm86
OnJlZ1QwKTsKLSAgICAgICAgbG9hZERvdWJsZShHUFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6dG9S
ZWdpc3RlcihpKSk7Ci0gICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHUFJJbmZv
OjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAg
bG9hZDY0KGJ1ZmZlciArIGksIEdQUkluZm86OnRvUmVnaXN0ZXIoaSkpOwotI2Vsc2UKLSAgICAg
ICAgbG9hZDMyKGJ1ZmZlciArIGksIEdQUkluZm86OnRvUmVnaXN0ZXIoaSkpOwotI2VuZGlmCi0g
ICAgfQotfQotCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6Y29weUNhbGxlZVNhdmVzVG9WTUVudHJ5
RnJhbWVDYWxsZWVTYXZlc0J1ZmZlckltcGwoR1BSUmVnIGNhbGxlZVNhdmVzQnVmZmVyKQogewog
I2lmIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTID4gMApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAyMjEwMTcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNv
cHkpCkBAIC05OTIsOSArOTkyLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gR1BSSW5mbzo6
cmVnVDU7CiAgICAgfQogCi0gICAgLy8gQWRkIGEgZGVidWcgY2FsbC4gVGhpcyBjYWxsIGhhcyBu
byBlZmZlY3Qgb24gSklUIGNvZGUgZXhlY3V0aW9uIHN0YXRlLgotICAgIHZvaWQgZGVidWdDYWxs
KFZNJiwgVl9EZWJ1Z09wZXJhdGlvbl9FUFAgZnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50KTsKLQog
ICAgIC8vIFRoZXNlIG1ldGhvZHMgSklUIGdlbmVyYXRlIGR5bmFtaWMsIGRlYnVnLW9ubHkgY2hl
Y2tzIC0gYWtpbiB0byBBU1NFUlRzLgogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICB2b2lkIGpp
dEFzc2VydElzSW50MzIoR1BSUmVnKTsKQEAgLTE0NjUsNiArMTQ2Miw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICB2b2lkIGVtaXREdW1iVmlydHVhbENhbGwoVk0mLCBDYWxsTGlua0luZm8qKTsKICAg
ICAKKyAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NS4KICAgICBWZWN0b3I8Qnl0ZWNvZGVBbmRN
YWNoaW5lT2Zmc2V0PiYgZGVjb2RlZENvZGVNYXBGb3IoQ29kZUJsb2NrKik7CiAKICAgICB2b2lk
IG1ha2VTcGFjZU9uU3RhY2tGb3JDQ2FsbCgpOwpAQCAtMTY1Niw2ICsxNjU0LDcgQEAgcHJvdGVj
dGVkOgogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiAgICAgQ29kZUJsb2NrKiBtX2Jhc2Vs
aW5lQ29kZUJsb2NrOwogCisgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgZml4IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiAgICAgSGFzaE1h
cDxDb2RlQmxvY2sqLCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0Pj4gbV9kZWNvZGVk
Q29kZU1hcHM7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5jcHAJ
KHJldmlzaW9uIDIyMTAxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjYsMTAgKzI2LDIxIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiR1BSSW5mby5oIgogCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKwog
I2lmIEVOQUJMRShKSVQpCiAKIG5hbWVzcGFjZSBKU0MgewogCitKU1ZhbHVlIEpTVmFsdWVSZWdz
OjpldmFsdWF0ZShjb25zdCBQcm9iZTo6Q1BVU3RhdGUmIGNwdSkgY29uc3QKK3sKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUoY3B1LmdwcjxFbmNvZGVkSlNW
YWx1ZT4oZ3ByKCkpKTsKKyNlbHNlCisgICAgcmV0dXJuIEpTVmFsdWUoY3B1LmdwcjxpbnQzMl90
Pih0YWdHUFIoKSksIGNwdS5ncHI8aW50MzJfdD4ocGF5bG9hZEdQUigpKSk7CisjZW5kaWYKK30K
Kwogdm9pZCBKU1ZhbHVlUmVnczo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogI2lm
IFVTRShKU1ZBTFVFNjQpCkBAIC0zOSw2ICs1MCwyMSBAQCB2b2lkIEpTVmFsdWVSZWdzOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpCiAjZW5kaWYKIH0KIAorSlNWYWx1ZSBKU1ZhbHVlU291cmNlOjpl
dmFsdWF0ZShjb25zdCBQcm9iZTo6Q1BVU3RhdGUmIGNwdSkgY29uc3QKK3sKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgIGlmIChpc0FkZHJlc3MoKSkKKyAgICAgICAgcmV0dXJuICpyZWludGVycHJl
dF9jYXN0PEpTVmFsdWUqPihjcHUuZ3ByPHVpbnQ4X3QqPihiYXNlKCkpICsgb2Zmc2V0KCkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUoY3B1LmdwcjxFbmNvZGVkSlNWYWx1ZT4oZ3ByKCkp
KTsKKyNlbHNlCisgICAgaWYgKGlzQWRkcmVzcygpKQorICAgICAgICByZXR1cm4gKnJlaW50ZXJw
cmV0X2Nhc3Q8SlNWYWx1ZSo+KGNwdSAgLmdwcjx1aW50OF90Kj4oYmFzZSgpKSArIG9mZnNldCgp
KTsKKyAgICBpZiAoaGFzS25vd25UYWcoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUodGFnKCks
IGNwdS5ncHI8aW50MzJfdD4ocGF5bG9hZEdQUigpKSk7CisgICAgcmV0dXJuIEpTVmFsdWUoY3B1
LmdwcjxpbnQzMl90Pih0YWdHUFIoKSksIGNwdS5ncHI8aW50MzJfdD4ocGF5bG9hZEdQUigpKSk7
CisjZW5kaWYKK30KKwogLy8gVGhpcyBpcyBpbiB0aGUgLmNwcCBmaWxlIHRvIHdvcmsgYXJvdW5k
IGNsYW5nIGlzc3Vlcy4KICNpZiBDUFUoWDg2XzY0KQogY29uc3QgR1BSUmVnIEdQUkluZm86OnBh
dGNocG9pbnRTY3JhdGNoUmVnaXN0ZXIgPSBNYWNyb0Fzc2VtYmxlcjo6c19zY3JhdGNoUmVnaXN0
ZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkocmV2aXNpb24gMjIxMDE3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJs
ZXIuaCIKKyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKICNpbmNsdWRlIDxhcnJheT4KICNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIApAQCAtNzgsNiArNzksOCBAQCBwdWJsaWM6CiAgICAg
CiAgICAgYm9vbCB1c2VzKEdQUlJlZyBncHIpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByID09IGdwcjsg
fQogICAgIAorICAgIEpTVmFsdWUgZXZhbHVhdGUoY29uc3QgUHJvYmU6OkNQVVN0YXRlJikgY29u
c3Q7CisKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6
CkBAIC0xNDksNiArMTUyLDggQEAgcHVibGljOgogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzIGFzQWRkcmVzcygpIGNvbnN0IHsgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2UoKSwgb2Zmc2V0KCkpOyB9CiAgICAgCisgICAgSlNWYWx1ZSBldmFsdWF0ZShjb25zdCBQ
cm9iZTo6Q1BVU3RhdGUmKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBzdGF0aWMgaW5saW5lIGlu
dDMyX3Qgbm90QWRkcmVzcygpIHsgcmV0dXJuIDB4ODAwMDAwMDA7IH0gICAgIAogICAgICAgICAg
IApAQCAtMjEyLDYgKzIxNyw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgdXNlcyhHUFJSZWcgZ3By
KSBjb25zdCB7IHJldHVybiBtX3RhZ0dQUiA9PSBncHIgfHwgbV9wYXlsb2FkR1BSID09IGdwcjsg
fQogICAgIAorICAgIEpTVmFsdWUgZXZhbHVhdGUoY29uc3QgUHJvYmU6OkNQVVN0YXRlJikgY29u
c3Q7CisKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6
CkBAIC0zMjEsNiArMzI4LDggQEAgcHVibGljOgogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzIGFzQWRkcmVzcyh1bnNpZ25lZCBhZGRpdGlvbmFsT2Zmc2V0ID0gMCkgY29uc3QgeyBy
ZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZSgpLCBvZmZzZXQoKSArIGFkZGl0aW9u
YWxPZmZzZXQpOyB9CiAgICAgCisgICAgSlNWYWx1ZSBldmFsdWF0ZShjb25zdCBQcm9iZTo6Q1BV
U3RhdGUmKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBzdGF0aWMgaW5saW5lIGludDMyX3Qgbm90
QWRkcmVzcygpIHsgcmV0dXJuIDB4ODAwMDAwMDA7IH0gICAgIAogICAgICAgICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAy
MjEwMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMjUzLDYgKzIyNTMsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblJlYWxsb2NhdGVCCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHJl
c3VsdCk7CiB9CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk9TUldyaXRlQmFycmllcihFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogY2VsbCkK
IHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMjEwMTcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDQwLDYgKzQ0
MCw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZUIKIGNoYXIqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZUJ1dHRlcmZseVRvR3Jvd1Byb3BlcnR5U3Rv
cmFnZShFeGVjU3RhdGUqLCBKU09iamVjdCosIHNpemVfdCBuZXdTaXplKSBXVEZfSU5URVJOQUw7
CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93UGF0aChFeGVj
U3RhdGUqLCBKU0NlbGwqKTsKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk9TUldyaXRlQmFycmllcihFeGVjU3RhdGUqLCBKU0NlbGwqKTsKIAog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enooRXhlY1N0YXRlKik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVy
Q29tcGlsYXRpb24uY3BwCShyZXZpc2lvbiAyMjEwMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC05MSw2ICs5MSwxMCBAQCB2b2lkIENvbXBpbGF0aW9uOjphZGRPU1JFeGl0U2l0ZShjb25z
dCBWCiAKIE9TUkV4aXQqIENvbXBpbGF0aW9uOjphZGRPU1JFeGl0KHVuc2lnbmVkIGlkLCBjb25z
dCBPcmlnaW5TdGFjayYgb3JpZ2luU3RhY2ssIEV4aXRLaW5kIGV4aXRLaW5kLCBib29sIGlzV2F0
Y2hwb2ludCkKIHsKKyAgICBmb3IgKGF1dG8gaXQgPSBtX29zckV4aXRzLmJlZ2luKCk7IGl0ICE9
IG1fb3NyRXhpdHMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgaWYgKGl0LT5pZCgpID09IGlkKQor
ICAgICAgICAgICAgcmV0dXJuICYoKml0KTsKKyAgICB9CiAgICAgbV9vc3JFeGl0cy5hcHBlbmQo
T1NSRXhpdChpZCwgb3JpZ2luU3RhY2ssIGV4aXRLaW5kLCBpc1dhdGNocG9pbnQpKTsKICAgICBy
ZXR1cm4gJm1fb3NyRXhpdHMubGFzdCgpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9TUkV4aXQuaAkocmV2aXNpb24gMjIxMDE3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTQzLDcgKzQzLDggQEAgcHVibGljOgogICAgIAogICAgIHVpbnQ2NF90KiBjb3VudGVy
QWRkcmVzcygpIHsgcmV0dXJuICZtX2NvdW50ZXI7IH0KICAgICB1aW50NjRfdCBjb3VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fY291bnRlcjsgfQotICAgIAorICAgIHZvaWQgaW5jQ291bnQoKSB7IG1f
Y291bnRlcisrOyB9CisKICAgICBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKikgY29uc3Q7CiAKIHBy
aXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5o
CShyZXZpc2lvbiAyMjEwMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdo
dCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJp
Z2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEyLCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzQ0
LDEyICszNDQsOSBAQCBwdWJsaWM6CiAgICAgdWludDMyX3QgdGFnKCkgY29uc3Q7CiAgICAgaW50
MzJfdCBwYXlsb2FkKCkgY29uc3Q7CiAKLSNpZiAhRU5BQkxFKEpJVCkKLSAgICAvLyBUaGlzIHNo
b3VsZCBvbmx5IGJlIHVzZWQgYnkgdGhlIExMSW50IEMgTG9vcCBpbnRlcnByZXRlciB3aG8gbmVl
ZHMKLSAgICAvLyBzeW50aGVzaXplIEpTVmFsdWUgZnJvbSBpdHMgInJlZ2lzdGVyInMgaG9sZGlu
ZyB0YWcgYW5kIHBheWxvYWQKLSAgICAvLyB2YWx1ZXMuCisgICAgLy8gVGhpcyBzaG91bGQgb25s
eSBiZSB1c2VkIGJ5IHRoZSBMTEludCBDIExvb3AgaW50ZXJwcmV0ZXIgYW5kIE9TUkV4aXQgY29k
ZSB3aG8gbmVlZHMKKyAgICAvLyBzeW50aGVzaXplIEpTVmFsdWUgZnJvbSBpdHMgInJlZ2lzdGVy
InMgaG9sZGluZyB0YWcgYW5kIHBheWxvYWQgdmFsdWVzLgogICAgIGV4cGxpY2l0IEpTVmFsdWUo
aW50MzJfdCB0YWcsIGludDMyX3QgcGF5bG9hZCk7Ci0jZW5kaWYKIAogI2VsaWYgVVNFKEpTVkFM
VUU2NCkKICAgICAvKgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlSW5saW5lcy5oCShyZXZpc2lvbiAyMjEwMTcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NDAsNyArMzQwLDcgQEAgaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoaW50IGkpCiAgICAgdS5hc0Jp
dHMucGF5bG9hZCA9IGk7CiB9CiAKLSNpZiAhRU5BQkxFKEpJVCkKKyNpZiBVU0UoSlNWQUxVRTMy
XzY0KQogaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoaW50MzJfdCB0YWcsIGludDMyX3QgcGF5bG9h
ZCkKIHsKICAgICB1LmFzQml0cy50YWcgPSB0YWc7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319121</attachid>
            <date>2017-08-25 17:27:37 -0700</date>
            <delta_ts>2017-08-26 12:32:58 -0700</delta_ts>
            <desc>work in progress: fixed some bugs but still have exotic failures.</desc>
            <filename>bug-175144.patch</filename>
            <type>text/plain</type>
            <size>134123</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyMjExODcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIyNSw2ICszMjI1LDkgQEAg
c3RhdGljIHZvaWQgc3RhcnRUaW1lb3V0VGhyZWFkSWZOZWVkZWQoKQogCiBpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpCiB7CisgICAgY2hhciogd2FpdCA9IGdldGVudigid2FpdCIpOwor
ICAgIHdoaWxlICh3YWl0KQorICAgICAgICBzbGVlcCgoZG91YmxlKTEpOwogI2lmIFBMQVRGT1JN
KElPUykgJiYgQ1BVKEFSTV9USFVNQjIpCiAgICAgLy8gRW5hYmxlZCBJRUVFNzU0IGRlbm9ybWFs
IHN1cHBvcnQuCiAgICAgZmVudl90IGVudjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyMjExODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjQ0Niw2
ICsyNDQ2LDcgQEAKIAkJRkUxMEFBRUMxRjQ0RDU0NTAwOURFREM1IC8qIFByb2JlU3RhY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxMEFBRTkx
RjQ0RDUxMDAwOURFREM1IC8qIFByb2JlU3RhY2suY3BwICovOyB9OwogCQlGRTEwQUFFRTFGNDRE
OTU0MDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEwQUFFRDFGNDREOTQ2MDA5REVEQzUgLyogUHJvYmVDb250
ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RkUxMEFBRjQxRjQ2ODM5NjAwOURFREM1IC8qIFByb2JlQ29udGV4dC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEwQUFGMzFGNDY4MjZEMDA5REVE
QzUgLyogUHJvYmVDb250ZXh0LmNwcCAqLzsgfTsKKwkJRkUxMEFBRkYxRjRFMzhFNTAwOURFREM1
IC8qIFByb2JlRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMTBBQUZFMUY0RTM4REEwMDlERURDNSAvKiBQcm9iZUZyYW1lLmggKi87IH07CiAJ
CUZFMTIyMDI3MUJFN0Y1OEMwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTIyMDI2MUJFN0Y1NjQwMDM5
RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuaCAqLzsgfTsKIAkJRkUxMjIwMjgxQkU3RjU5MTAwMzlF
NkYyIC8qIEpJVEFkZEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTEyMjAyNTFCRTdGNTY0MDAzOUU2RjIgLyogSklUQWRkR2VuZXJh
dG9yLmNwcCAqLzsgfTsKIAkJRkUxODdBMDExQkZCRTU1RTAwMzhCQkNBIC8qIEpJVE11bEdlbmVy
YXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTE4NzlGRjFCRkJDNzNDMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmNwcCAqLzsgfTsKQEAg
LTUxNDIsNiArNTE0Myw3IEBACiAJCUZFMTBBQUVBMUY0NEQ1MTIwMDlERURDNSAvKiBQcm9iZVN0
YWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2JlU3RhY2suaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxMEFBRUQxRjQ0RDk0NjAwOURFREM1IC8qIFBy
b2JlQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9iZUNvbnRl
eHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxMEFBRjMxRjQ2ODI2RDAwOURF
REM1IC8qIFByb2JlQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQcm9iZUNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTEw
QUFGRTFGNEUzOERBMDA5REVEQzUgLyogUHJvYmVGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQcm9iZUZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFMTIyMDI1MUJFN0Y1NjQwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUQWRkR2VuZXJhdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxMjIwMjYxQkU3RjU2NDAwMzlFNkYyIC8qIEpJVEFk
ZEdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRBZGRHZW5l
cmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxODc5RkYxQkZCQzczQzAw
MzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKSVRNdWxHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNzcyOCw2ICs3NzMwLDcgQEAKIAkJCQlGRTYzREQ1MzFFQTlCNjBFMDAxMDNBNjkgLyog
UHJpbnRlci5oICovLAogCQkJCUZFMTBBQUYzMUY0NjgyNkQwMDlERURDNSAvKiBQcm9iZUNvbnRl
eHQuY3BwICovLAogCQkJCUZFMTBBQUVEMUY0NEQ5NDYwMDlERURDNSAvKiBQcm9iZUNvbnRleHQu
aCAqLywKKwkJCQlGRTEwQUFGRTFGNEUzOERBMDA5REVEQzUgLyogUHJvYmVGcmFtZS5oICovLAog
CQkJCUZFMTBBQUU5MUY0NEQ1MTAwMDlERURDNSAvKiBQcm9iZVN0YWNrLmNwcCAqLywKIAkJCQlG
RTEwQUFFQTFGNDRENTEyMDA5REVEQzUgLyogUHJvYmVTdGFjay5oICovLAogCQkJCUZFNTMzQ0Ew
MUYyMTdDMzEwMDE2QTFGRSAvKiB0ZXN0bWFzbS5jcHAgKi8sCkBAIC05Njk2LDYgKzk2OTksNyBA
QAogCQkJCUFEMkZDQzFEMURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1vZHVsZVByb3Rv
dHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUFENDkzN0M4MURERDBBQUUwMDc3QzgwNyAv
KiBXZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNDMkQx
REI4MzhGRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGRTEwQUFGRjFGNEUzOEU1MDA5REVEQzUgLyogUHJvYmVGcmFtZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQUQyRkNCRjkxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVy
cm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUFEMkZDQzFFMURCNTlDQjIwMEIz
RTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQUQyRkNCRkIxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGlt
ZUVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvUHJvYmVDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5jcHAJKHJldmlzaW9uIDIyMTE4NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVDb250ZXh0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgog
CiAjaWYgRU5BQkxFKE1BU01fUFJPQkUpCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiIC8vIG1sYW0g
VEVTVAorI2luY2x1ZGUgIkpTRG9sbGFyVk1Qcm90b3R5cGUuaCIgLy8gbWxhbSBURVNUCiAKIG5h
bWVzcGFjZSBKU0MgewogbmFtZXNwYWNlIFByb2JlIHsKQEAgLTY1LDYgKzY3LDQyIEBAIHN0YXRp
YyB2b2lkIGZsdXNoRGlydHlTdGFja1BhZ2VzKFN0YXRlKiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U3RhY2s+IHN0YWNrKHJlaW50ZXJwcmV0X2Nhc3Q8UHJvYmU6OlN0YWNrKj4oc3RhdGUtPmluaXRp
YWxpemVTdGFja0FyZykpOwogICAgIHN0YWNrLT5mbHVzaFdyaXRlcygpOwogICAgIHN0YXRlLT5j
cHUuc3AoKSA9IHN0YWNrLT5uZXdTdGFja1BvaW50ZXIoKTsKKyAgICAvLyBtbGFtIFRFU1QKKyAg
ICBpZiAoZ2V0ZW52KCJ2ZXJib3NlIikpIHsKKyAgICAgICAgYXV0byYgY3B1ID0gc3RhdGUtPmNw
dTsKKyAgICAgICAgdWludHB0cl90KiBmcCA9IGNwdS5mcDx1aW50cHRyX3QqPigpOworICAgICAg
ICB1aW50cHRyX3QqIHNwID0gY3B1LnNwPHVpbnRwdHJfdCo+KCk7CisgICAgICAgIEFTU0VSVChz
cCA8IGZwKTsKKyAgICAgICAgZGF0YUxvZygiICAgIFJFUE9SVCBjYiAiLCBjcHUuZnA8RXhlY1N0
YXRlKj4oKS0+Y29kZUJsb2NrKCksICJcbiIpOworICAgICAgICBkYXRhTG9nKCIgICAgc3AgIiwg
UmF3UG9pbnRlcihzcCksICIsIGZwICIsIFJhd1BvaW50ZXIoZnApLCAiXG4iKTsKKyAgICAgICAg
aW50IGkgPSAwOworICAgICAgICBmb3IgKHVpbnRwdHJfdCogcCA9IHNwOyBwIDwgZnAgKyAxMDsg
aSsrLCBwKyspIHsKKyAgICAgICAgICAgIGlmIChwID09IGZwKQorICAgICAgICAgICAgICAgIGRh
dGFMb2coIiAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIp
OworICAgICAgICAgICAgZGF0YUxvZygiICAgIDwiLCBpLCAiPiBbIiwgUmF3UG9pbnRlcihzcCks
ICJdICIsIFJhd1BvaW50ZXIoKHZvaWQqKSpwKSwgIlxuIik7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgaWYgKGdldGVudigicHJpbnRTdGFjayIpKSB7CisgICAgICAgIGF1dG8mIGNwdSA9IHN0YXRl
LT5jcHU7CisgICAgICAgIEFTU0VSVChzdGF0ZS0+Y3B1LnNwKCkgPCBzdGF0ZS0+Y3B1LmZwKCkp
OworICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBzdGF0ZS0+Y3B1LmZwPEV4ZWNTdGF0ZSo+KCk7
CisgICAgICAgIEFTU0VSVChKU0RvbGxhclZNUHJvdG90eXBlOjppc1ZhbGlkQ29kZUJsb2NrKGV4
ZWMsIGV4ZWMtPmNvZGVCbG9jaygpKSk7CisgICAgICAgIEFTU0VSVChKU0RvbGxhclZNUHJvdG90
eXBlOjppc1ZhbGlkQ2VsbCgmZXhlYy0+dm0oKS5oZWFwLCBleGVjLT5qc0NhbGxlZSgpKSk7CisK
KyAgICAgICAgQ29kZUJsb2NrKiBjYiA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgICAgICBkYXRh
TG9nKCJcbm1sYW0gT1NSIEV4aXQ6IGZwID0gIiwgUmF3UG9pbnRlcihjcHUuZnAoKSksICIsIGNi
ICIsIFJhd1BvaW50ZXIoY2IpLCAiID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PVxuIik7CisgICAgICAgIGRhdGFMb2coIiAgICAqKiogY2ItPmppdENvZGUoKSA9ICIsIFJhd1Bv
aW50ZXIoY2ItPmppdENvZGUoKS5nZXQoKSksICJcbiIpOworICAgICAgICBkYXRhTG9nKCIgICAg
KioqIGNiLT5qaXRUeXBlKCkgPSAiLCBjYi0+aml0VHlwZSgpLCAiXG4iKTsKKyAgICAgICAgZGF0
YUxvZygiICAgICoqKiBjYiA9ICIsIGNiLCAiXG4iKTsKKyAgICAgICAgZGF0YUxvZygiICAgICoq
KiBjYWxsZWUgPSAiLCBSYXdQb2ludGVyKGV4ZWMtPmpzQ2FsbGVlKCkpLCAiXG4iKTsKKyAgICAg
ICAgZGF0YUxvZygiICAgICoqKiBGUkFNRSAqKiogPSBcbiIpOworICAgICAgICBKU0RvbGxhclZN
UHJvdG90eXBlOjpwcmludENhbGxGcmFtZShjcHUuZnA8RXhlY1N0YXRlKj4oKSk7CisgICAgICAg
IGRhdGFMb2coIiAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOwor
ICAgICAgICBkYXRhTG9nKCIgICAgKioqIFNUQUNLICoqKiA9IFxuIik7CisgICAgICAgIEpTRG9s
bGFyVk1Qcm90b3R5cGU6OnByaW50U3RhY2soY3B1LmZwPEV4ZWNTdGF0ZSo+KCkpOworICAgICAg
ICBkYXRhTG9nKCJtbGFtIE9TUiBFeGl0IEVORCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT1cbiIpOworICAgIH0KKyAgICAvLyBtbGFtIFRFU1QgKi8KIH0KIAogLy8gTm90IGZv
ciBnZW5lcmFsIHVzZS4gVGhpcyBzaG91bGQgb25seSBiZSBmb3Igd3JpdGluZyB0ZXN0cy4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVDb250ZXh0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUNvbnRleHQuaAko
cmV2aXNpb24gMjIxMTg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9i
ZUNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTMgKzQ1LDkgQEAgc3RydWN0IENQVVN0
YXRlIHsKICAgICBpbmxpbmUgdWludHB0cl90JiBzcHIoU1BSZWdpc3RlcklEKTsKICAgICBpbmxp
bmUgZG91YmxlJiBmcHIoRlBSZWdpc3RlcklEKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlw
ZSogPSBudWxscHRyPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgVCBncHIoUmVnaXN0
ZXJJRCkgY29uc3Q7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVsbHB0cj4KLSAgICBU
IGdwcihSZWdpc3RlcklEKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVs
bHB0cj4KLSAgICBUIHNwcihTUFJlZ2lzdGVySUQpIGNvbnN0OwotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+
Ojp0eXBlKiA9IG51bGxwdHI+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIHNwcihT
UFJlZ2lzdGVySUQpIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgZnByKEZQUmVn
aXN0ZXJJRCkgY29uc3Q7CiAKQEAgLTg1LDMyICs4MSwyNCBAQCBpbmxpbmUgZG91YmxlJiBDUFVT
dGF0ZTo6ZnByKEZQUmVnaXN0ZXJJCiAgICAgcmV0dXJuIGZwcnNbaWRdOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+
Ojp2YWx1ZT46OnR5cGUqPgotVCBDUFVTdGF0ZTo6Z3ByKFJlZ2lzdGVySUQgaWQpIGNvbnN0Ci17
Ci0gICAgQ1BVU3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VD4oY3B1LT5ncHIoaWQpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46
OnR5cGUqPgordGVtcGxhdGU8dHlwZW5hbWUgVD4KIFQgQ1BVU3RhdGU6OmdwcihSZWdpc3RlcklE
IGlkKSBjb25zdAogewogICAgIENQVVN0YXRlKiBjcHUgPSBjb25zdF9jYXN0PENQVVN0YXRlKj4o
dGhpcyk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VD4oY3B1LT5ncHIoaWQpKTsKKyAg
ICBhdXRvJiBmcm9tID0gY3B1LT5ncHIoaWQpOworICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2Nv
bnN0PFQ+Ojp0eXBlIHRvIHsgfTsKKyAgICBzdGQ6Om1lbWNweSgmdG8sICZmcm9tLCBzaXplb2Yo
dG8pKTsKKyAgICByZXR1cm4gdG87CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlwZSo+Ci1UIENQ
VVN0YXRlOjpzcHIoU1BSZWdpc3RlcklEIGlkKSBjb25zdAotewotICAgIENQVVN0YXRlKiBjcHUg
PSBjb25zdF9jYXN0PENQVVN0YXRlKj4odGhpcyk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+
KGNwdS0+c3ByKGlkKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+Ojp0eXBlKj4KK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+CiBUIENQVVN0YXRlOjpzcHIoU1BSZWdpc3RlcklEIGlkKSBjb25zdAogewogICAg
IENQVVN0YXRlKiBjcHUgPSBjb25zdF9jYXN0PENQVVN0YXRlKj4odGhpcyk7Ci0gICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8VD4oY3B1LT5zcHIoaWQpKTsKKyAgICBhdXRvJiBmcm9tID0gY3B1
LT5zcHIoaWQpOworICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlIHRvIHsg
fTsKKyAgICBzdGQ6Om1lbWNweSgmdG8sICZmcm9tLCBzaXplb2YodG8pKTsKKyAgICByZXR1cm4g
dG87CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1Byb2JlRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1Byb2JlRnJhbWUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKKworI2lmIEVOQUJMRShN
QVNNX1BST0JFKQorCituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBQcm9iZSB7CisKK2NsYXNz
IEZyYW1lIHsKK3B1YmxpYzoKKyAgICBGcmFtZShDb250ZXh0JiBjb250ZXh0KQorICAgICAgICA6
IG1fY29udGV4dChjb250ZXh0KQorICAgIHsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
KyAgICBUIGdldE9wZXJhbmQoaW50IG9wZXJhbmQpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0
T3BlcmFuZDxUPihvcGVyYW5kLCAwKTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
KyAgICBUIGdldE9wZXJhbmQoaW50IG9wZXJhbmQsIHB0cmRpZmZfdCBvZmZzZXQpCisgICAgewor
ICAgICAgICByZXR1cm4gZ2V0PFQ+KHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4ob3BlcmFu
ZCkub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpICsgb2Zmc2V0KTsKKyAgICB9CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KKyAgICBUIGdldChwdHJkaWZmX3Qgb2Zmc2V0KQorICAgIHsKKyAg
ICAgICAgdm9pZCogYWRkcmVzcyA9IG1fY29udGV4dC5jcHUuZnA8dWludDhfdCo+KCkgKyBvZmZz
ZXQ7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQuc3RhY2soKS5nZXQ8VD4oYWRkcmVzcyk7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNldE9wZXJhbmQoaW50
IG9wZXJhbmQsIFQgdmFsdWUpCisgICAgeworICAgICAgICBzZXRPcGVyYW5kPFQ+KG9wZXJhbmQs
IDAsIHZhbHVlKTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNl
dE9wZXJhbmQoaW50IG9wZXJhbmQsIHB0cmRpZmZfdCBvZmZzZXQsIFQgdmFsdWUpCisgICAgewor
ICAgICAgICBzZXQ8VD4oc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5kKS5vZmZz
ZXQoKSAqIHNpemVvZihSZWdpc3RlcikgKyBvZmZzZXQsIHZhbHVlKTsKKyAgICB9CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNldChwdHJkaWZmX3Qgb2Zmc2V0LCBUIHZhbHVl
KQorICAgIHsKKyAgICAgICAgdm9pZCogYWRkcmVzcyA9IG1fY29udGV4dC5jcHUuZnA8dWludDhf
dCo+KCkgKyBvZmZzZXQ7CisgICAgICAgIG1fY29udGV4dC5zdGFjaygpLnNldDxUPihhZGRyZXNz
LCB2YWx1ZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIENvbnRleHQmIG1fY29udGV4dDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFByb2JlCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
IEVOQUJMRShNQVNNX1BST0JFKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9Qcm9iZVN0YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9Qcm9iZVN0YWNrLmgJKHJldmlzaW9uIDIyMTE4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMiArMjUs
MTQgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPiAvLyBtbGFt
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiAjaWYgRU5BQkxFKE1BU01fUFJPQkUpCiAK
K2V4dGVybiBKU19FWFBPUlREQVRBIGNvbnN0IGNoYXIqIG1sYW1OYW1lOwogbmFtZXNwYWNlIEpT
QyB7CiAKIHN0cnVjdCBQcm9iZUNvbnRleHQ7CkBAIC01NiwxNCArNTgsMzEgQEAgcHVibGljOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgVCBnZXQodm9pZCogbG9naWNhbEFkZHJlc3Mp
CiAgICAgewotICAgICAgICByZXR1cm4gKnBoeXNpY2FsQWRkcmVzc0ZvcjxUKj4obG9naWNhbEFk
ZHJlc3MpOworICAgICAgICB2b2lkKiBmcm9tID0gcGh5c2ljYWxBZGRyZXNzRm9yKGxvZ2ljYWxB
ZGRyZXNzKTsKKyAgICAgICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD46OnR5cGUgdG8g
eyB9OworICAgICAgICBzdGQ6Om1lbWNweSgmdG8sIGZyb20sIHNpemVvZih0bykpOworICAgICAg
ICByZXR1cm4gdG87CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgVCBnZXQo
dm9pZCogbG9naWNhbEJhc2VBZGRyZXNzLCBwdHJkaWZmX3Qgb2Zmc2V0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdldDxUPihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihsb2dpY2FsQmFzZUFk
ZHJlc3MpICsgb2Zmc2V0KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAg
IHZvaWQgc2V0KHZvaWQqIGxvZ2ljYWxBZGRyZXNzLCBUIHZhbHVlKQogICAgIHsKICAgICAgICAg
bV9kaXJ0eUJpdHMgfD0gZGlydHlCaXRGb3IobG9naWNhbEFkZHJlc3MpOwotICAgICAgICAqcGh5
c2ljYWxBZGRyZXNzRm9yPFQqPihsb2dpY2FsQWRkcmVzcykgPSB2YWx1ZTsKKworICAgICAgICB2
b2lkKiB0byA9IHBoeXNpY2FsQWRkcmVzc0Zvcihsb2dpY2FsQWRkcmVzcyk7CisgICAgICAgIGlm
IChnZXRlbnYoInZlcmJvc2UiKSkgeyBkYXRhTG9nKCIgICAgICBTRVQgWyIsIFJhd1BvaW50ZXIo
bG9naWNhbEFkZHJlc3MpLCAiXSAiLCBSYXdQb2ludGVyKCoodm9pZCoqKSZ2YWx1ZSksICIgQCAi
LCBtbGFtTmFtZSwgIlxuIik7IG1sYW1OYW1lID0gIiI7IH0KKy8vICAgICAgICBBU1NFUlQoKih2
b2lkKiopJnZhbHVlKTsKKyAgICAgICAgc3RkOjptZW1jcHkodG8sICZ2YWx1ZSwgc2l6ZW9mKFQp
KTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNldCh2b2lkKiBs
b2dpY2FsQmFzZUFkZHJlc3MsIHB0cmRpZmZfdCBvZmZzZXQsIFQgdmFsdWUpCisgICAgeworICAg
ICAgICBzZXQ8VD4ocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obG9naWNhbEJhc2VBZGRyZXNz
KSArIG9mZnNldCwgdmFsdWUpOwogICAgIH0KIAogICAgIGJvb2wgaGFzV3JpdGVzVG9GbHVzaCgp
IGNvbnN0IHsgcmV0dXJuICEhbV9kaXJ0eUJpdHM7IH0KQEAgLTgwLDEyICs5OSwxMCBAQCBwcml2
YXRlOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSA8PCAob2Zmc2V0
ID4+IHNfY2h1bmtTaXplU2hpZnQpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2
YWx1ZT46OnR5cGU+Ci0gICAgVCBwaHlzaWNhbEFkZHJlc3NGb3Iodm9pZCogbG9naWNhbEFkZHJl
c3MpCisgICAgdm9pZCogcGh5c2ljYWxBZGRyZXNzRm9yKHZvaWQqIGxvZ2ljYWxBZGRyZXNzKQog
ICAgIHsKICAgICAgICAgdWludHB0cl90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90Pihsb2dpY2FsQWRkcmVzcykgJiBzX3BhZ2VNYXNrOwotICAgICAgICB2b2lkKiBwaHlzaWNh
bEFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmbV9idWZmZXIpICsgb2Zmc2V0
OwotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPihwaHlzaWNhbEFkZHJlc3MpOwor
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJm1fYnVmZmVyKSArIG9m
ZnNldDsKICAgICB9CiAKICAgICB2b2lkIGZsdXNoV3JpdGVzKCk7CkBAIC0xMjMsMTMgKzE0MCwx
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCogbG93V2F0ZXJtYXJrKCkgeyByZXR1cm4gbV9sb3dXYXRl
cm1hcms7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8IXN0ZDo6aXNfc2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+
Ojp0eXBlPjo6dmFsdWUsIFQ+Ojp0eXBlIGdldCh2b2lkKiBhZGRyZXNzKQorICAgIFQgZ2V0KHZv
aWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICBQYWdlKiBwYWdlID0gcGFnZUZvcihhZGRyZXNz
KTsKICAgICAgICAgcmV0dXJuIHBhZ2UtPmdldDxUPihhZGRyZXNzKTsKICAgICB9CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KKyAgICBUIGdldCh2b2lkKiBsb2dpY2FsQmFzZUFkZHJlc3MsIHB0
cmRpZmZfdCBvZmZzZXQpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0PFQ+KHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KGxvZ2ljYWxCYXNlQWRkcmVzcykgKyBvZmZzZXQpOworICAgIH0KIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8IXN0ZDo6aXNfc2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBl
Pjo6dmFsdWU+Ojp0eXBlPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBzZXQo
dm9pZCogYWRkcmVzcywgVCB2YWx1ZSkKICAgICB7CiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBwYWdl
Rm9yKGFkZHJlc3MpOwpAQCAtMTQyLDE4ICsxNjQsMTAgQEAgcHVibGljOgogICAgICAgICBpZiAo
Y2h1bmtBZGRyZXNzIDwgbV9sb3dXYXRlcm1hcmspCiAgICAgICAgICAgICBtX2xvd1dhdGVybWFy
ayA9IGNodW5rQWRkcmVzczsKICAgICB9Ci0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAg
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0
ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+Ojp0eXBlIGdldCh2b2lkKiBhZGRyZXNz
KQotICAgIHsKLSAgICAgICAgUGFnZSogcGFnZSA9IHBhZ2VGb3IoYWRkcmVzcyk7Ci0gICAgICAg
IHJldHVybiBiaXR3aXNlX2Nhc3Q8ZG91YmxlPihwYWdlLT5nZXQ8dWludDY0X3Q+KGFkZHJlc3Mp
KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3Zl
X2N2PFQ+Ojp0eXBlPjo6dmFsdWU+Ojp0eXBlPgotICAgIHZvaWQgc2V0KHZvaWQqIGFkZHJlc3Ms
IGRvdWJsZSB2YWx1ZSkKKyAgICB2b2lkIHNldCh2b2lkKiBsb2dpY2FsQmFzZUFkZHJlc3MsIHB0
cmRpZmZfdCBvZmZzZXQsIFQgdmFsdWUpCiAgICAgewotICAgICAgICBzZXQ8dWludDY0X3Q+KGFk
ZHJlc3MsIGJpdHdpc2VfY2FzdDx1aW50NjRfdD4odmFsdWUpKTsKKyAgICAgICAgc2V0PFQ+KHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGxvZ2ljYWxCYXNlQWRkcmVzcykgKyBvZmZzZXQsIHZh
bHVlKTsKICAgICB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBQYWdlKiBlbnN1cmVQYWdlRm9y
KHZvaWQqIGFkZHJlc3MpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fy
aXRoUHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FyaXRoUHJvZmlsZS5jcHAJKHJldmlzaW9uIDIyMTE4NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMy
LDggQEAKIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgRU5BQkxFKEpJVCkKKy8vIEZJWE1FOiBUaGlz
IGlzIGJlaW5nIHN1cHBsYW50ZWQgYnkgb2JzZXJ2ZVJlc3VsdCgpLiBSZW1vdmUgdGhpcyBvbmUK
Ky8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUgaGFzIGJl
ZW4gZml4ZWQuCiB2b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxw
ZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSkKIHsKICAg
ICBpZiAoIXNob3VsZEVtaXRTZXREb3VibGUoKSAmJiAhc2hvdWxkRW1pdFNldE5vbk51bWJlcigp
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUu
aAkocmV2aXNpb24gMjIxMTg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fy
aXRoUHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIxMSw2ICsyMTEsOCBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKEpJVCkgICAgCiAgICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZs
b3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkgaWYgaXQgc2VlcyBhCiAgICAg
Ly8gZG91YmxlLiBTZXRzIE5vbk51bWJlciBpZiBpdCBzZWVzIGEgbm9uLW51bWJlci4KKyAgICAv
LyBGSVhNRTogVGhpcyBpcyBiZWluZyBzdXBwbGFudGVkIGJ5IG9ic2VydmVSZXN1bHQoKS4gUmVt
b3ZlIHRoaXMgb25lCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NTE0NSBoYXMgYmVlbiBmaXhlZC4KICAgICB2b2lkIGVtaXRPYnNlcnZlUmVzdWx0KEND
YWxsSGVscGVycyYsIEpTVmFsdWVSZWdzLCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRhZ1JlZ2lz
dGVycyk7CiAgICAgCiAgICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cg
fCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkuCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCShyZXZpc2lvbiAyMjExODcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjE4LDYgKzIxOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXB1dGVVcGRh
dGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqKTsKICAg
ICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
LCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKTsKICAgICAKKyAgICB2
b2lkIG9ic2VydmVBcnJheU1vZGUoQXJyYXlNb2RlcyBtb2RlKSB7IG1fb2JzZXJ2ZWRBcnJheU1v
ZGVzIHw9IG1vZGU7IH0KICAgICBBcnJheU1vZGVzIG9ic2VydmVkQXJyYXlNb2Rlcyhjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX29ic2VydmVkQXJyYXlNb2Rlczsg
fQogICAgIGJvb2wgbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGNvbnN0IENvbmN1cnJlbnRK
U0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzOyB9
CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAkocmV2aXNpb24gMjIxMTg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyODMsNiArMjI4Myw0OSBAQCBib29s
IENvZGVCbG9jazo6Y2hlY2tJZk9wdGltaXphdGlvblRocmVzCiAgICAgcmV0dXJuIG1faml0RXhl
Y3V0ZUNvdW50ZXIuY2hlY2tJZlRocmVzaG9sZENyb3NzZWRBbmRTZXQodGhpcyk7CiB9CiAKK2F1
dG8gQ29kZUJsb2NrOjp1cGRhdGVPU1JFeGl0Q291bnRlckFuZENoZWNrSWZOZWVkVG9SZW9wdGlt
aXplKERGRzo6T1NSRXhpdEJhc2UmIGV4aXQpIC0+IE9wdGltaXplQWN0aW9uCit7CisgICAgZXhp
dC5tX2NvdW50Kys7CisgICAgaWYgKGdldGVudigidmVyYm9zZSIpKSBkYXRhTG9nKCIgICBDT1VO
VCBleGl0WyIsIGV4aXQubV9jb3VudCwgIl0gaW4gIiwgdGhpcywgIlxuIik7CisKKyAgICBpZiAo
IWV4aXRLaW5kTWF5SmV0dGlzb24oZXhpdC5tX2tpbmQpKQorICAgICAgICByZXR1cm4gT3B0aW1p
emVBY3Rpb246Ok5vbmU7CisKKyAgICBtX29zckV4aXRDb3VudGVyKys7CisKKyAgICBDb2RlQmxv
Y2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gYmFzZWxpbmVBbHRlcm5hdGl2ZSgpOworICAgIGlmIChV
TkxJS0VMWShiYXNlbGluZUNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKS5oYXNDcm9zc2Vk
VGhyZXNob2xkKCkpKQorICAgICAgICByZXR1cm4gT3B0aW1pemVBY3Rpb246Ok9wdGltaXplTm93
OworCisgICAgLy8gV2Ugd2FudCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYSBwb3NzaWJpbGl0
eSB0aGF0IHdlJ3JlIGluIGEgbG9vcC4gRm9yIHRoZSBvdXRlcm1vc3QKKyAgICAvLyBjb2RlIGJs
b2NrIGluIHRoZSBpbmxpbmUgc3RhY2ssIHdlIGhhbmRsZSB0aGlzIGFwcHJvcHJpYXRlbHkgYnkg
aGF2aW5nIHRoZSBsb29wIE9TUiB0cmlnZ2VyCisgICAgLy8gY2hlY2sgdGhlIGV4aXQgY291bnQg
b2YgdGhlIHJlcGxhY2VtZW50IG9mIHRoZSBDb2RlQmxvY2sgZnJvbSB3aGljaCB3ZSBhcmUgT1NS
aW5nLiBUaGUKKyAgICAvLyBwcm9ibGVtIGlzIHRoZSBpbmxpbmVkIGZ1bmN0aW9ucywgd2hpY2gg
bWlnaHQgYWxzbyBoYXZlIGxvb3BzLCBidXQgd2hvc2UgYmFzZWxpbmUgdmVyc2lvbnMKKyAgICAv
LyBkb24ndCBrbm93IHdoZXJlIHRvIGxvb2sgZm9yIHRoZSBleGl0IGNvdW50LiBGaWd1cmUgb3V0
IGlmIHRob3NlIGxvb3BzIGFyZSBzZXZlcmUgZW5vdWdoCisgICAgLy8gdGhhdCB3ZSBoYWQgdHJp
ZWQgdG8gT1NSIGVudGVyLiBJZiBzbywgdGhlbiB3ZSBzaG91bGQgdXNlIHRoZSBsb29wIHJlb3B0
aW1pemF0aW9uIHRyaWdnZXIuCisgICAgLy8gT3RoZXJ3aXNlLCB3ZSBzaG91bGQgdXNlIHRoZSBu
b3JtYWwgcmVvcHRpbWl6YXRpb24gdHJpZ2dlci4KKworICAgIGJvb2wgZGlkVHJ5VG9FbnRlcklu
TG9vcCA9IGZhbHNlOworICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUg
PSBleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZTsgaW5s
aW5lQ2FsbEZyYW1lID0gaW5saW5lQ2FsbEZyYW1lLT5kaXJlY3RDYWxsZXIuaW5saW5lQ2FsbEZy
YW1lKSB7CisgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLT5v
d25lclNjcmlwdEV4ZWN1dGFibGUoKS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgpKSB7CisgICAgICAg
ICAgICBkaWRUcnlUb0VudGVySW5Mb29wID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgfQorCisgICAgdWludDMyX3QgdGhyZXNob2xkID0gZGlkVHJ5VG9FbnRlcklu
TG9vcAorICAgICAgICA/IGV4aXRDb3VudFRocmVzaG9sZEZvclJlb3B0aW1pemF0aW9uRnJvbUxv
b3AoKQorICAgICAgICA6IGV4aXRDb3VudFRocmVzaG9sZEZvclJlb3B0aW1pemF0aW9uKCk7CisK
KyAgICBpZiAobV9vc3JFeGl0Q291bnRlciA+IHRocmVzaG9sZCkKKyAgICAgICAgcmV0dXJuIE9w
dGltaXplQWN0aW9uOjpPcHRpbWl6ZU5vdzsKKworICAgIC8vIEFkanVzdCB0aGUgZXhlY3V0aW9u
IGNvdW50ZXIgc3VjaCB0aGF0IHRoZSB0YXJnZXQgaXMgdG8gb25seSBvcHRpbWl6ZSBhZnRlciBh
IHdoaWxlLgorICAgIGludDMyX3QgYWN0aXZlVGhyZXNob2xkID0gYmFzZWxpbmVDb2RlQmxvY2st
PmFkanVzdGVkQ291bnRlclZhbHVlKE9wdGlvbnM6OnRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJM
b25nV2FybVVwKCkpOworICAgIG1faml0RXhlY3V0ZUNvdW50ZXIuc2V0TmV3VGhyZXNob2xkKGFj
dGl2ZVRocmVzaG9sZCwgYmFzZWxpbmVDb2RlQmxvY2spOworICAgIHJldHVybiBPcHRpbWl6ZUFj
dGlvbjo6Tm9uZTsKK30KKwogdm9pZCBDb2RlQmxvY2s6Om9wdGltaXplTmV4dEludm9jYXRpb24o
KQogewogICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMjExODcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTc3LDYgKzc3LDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCituYW1lc3BhY2UgREZHIHsKK3N0
cnVjdCBPU1JFeGl0QmFzZTsKK30gLy8gbmFtZXNwYWNlIERGRworCiBjbGFzcyBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM7CiBjbGFzcyBDb2RlQmxvY2tTZXQ7CiBjbGFzcyBFeGVjU3RhdGU7CkBA
IC03NjIsOCArNzY2LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY291bnRPU1JFeGl0KCkgeyBt
X29zckV4aXRDb3VudGVyKys7IH0KIAotICAgIHVpbnQzMl90KiBhZGRyZXNzT2ZPU1JFeGl0Q291
bnRlcigpIHsgcmV0dXJuICZtX29zckV4aXRDb3VudGVyOyB9CisgICAgZW51bSBjbGFzcyBPcHRp
bWl6ZUFjdGlvbiB7IE5vbmUsIE9wdGltaXplTm93IH07CisgICAgT3B0aW1pemVBY3Rpb24gdXBk
YXRlT1NSRXhpdENvdW50ZXJBbmRDaGVja0lmTmVlZFRvUmVvcHRpbWl6ZShERkc6Ok9TUkV4aXRC
YXNlJik7CiAKKyAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NS4KICAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mT1NSRXhpdENvdW50ZXIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29k
ZUJsb2NrLCBtX29zckV4aXRDb3VudGVyKTsgfQogCiAgICAgdWludDMyX3QgYWRqdXN0ZWRFeGl0
Q291bnRUaHJlc2hvbGQodWludDMyX3QgZGVzaXJlZFRocmVzaG9sZCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuY3BwCShy
ZXZpc2lvbiAyMjExODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0
aW9uQ291bnRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDcgQEAgdm9pZCBFeGVj
dXRpb25Db3VudGVyPGNvdW50aW5nVmFyaWFudD46OgogICAgIHJlc2V0KCk7CiAgICAgbV9hY3Rp
dmVUaHJlc2hvbGQgPSB0aHJlc2hvbGQ7CiAgICAgc2V0VGhyZXNob2xkKGNvZGVCbG9jayk7Cisg
ICAgbV90b3RhbENvdW50ID0gZm9ybWF0dGVkVG90YWxFeGVjdXRpb25Db3VudCh0aHJlc2hvbGQp
OyAvLyBtbGFtIFRFU1QKIH0KIAogdGVtcGxhdGU8Q291bnRpbmdWYXJpYW50IGNvdW50aW5nVmFy
aWFudD4KQEAgLTE2Nyw3ICsxNjgsNyBAQCBib29sIEV4ZWN1dGlvbkNvdW50ZXI8Y291bnRpbmdW
YXJpYW50Pjo6CiAgICAgbV9jb3VudGVyID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oLXRocmVzaG9s
ZCk7CiAgICAgICAgIAogICAgIG1fdG90YWxDb3VudCA9IHRydWVUb3RhbENvdW50ICsgdGhyZXNo
b2xkOwotICAgICAgICAKKyAgICAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuaAkocmV2
aXNpb24gMjIxMTg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGlv
bkNvdW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQCBlbnVtIENvdW50aW5n
VmFyaWFudCB7CiBkb3VibGUgYXBwbHlNZW1vcnlVc2FnZUhldXJpc3RpY3MoaW50MzJfdCB2YWx1
ZSwgQ29kZUJsb2NrKik7CiBpbnQzMl90IGFwcGx5TWVtb3J5VXNhZ2VIZXVyaXN0aWNzQW5kQ29u
dmVydFRvSW50KGludDMyX3QgdmFsdWUsIENvZGVCbG9jayopOwogCisvLyBGSVhNRTogcmVtb3Zl
IHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NTE0NS4KIGlubGluZSBpbnQzMl90IGZvcm1hdHRlZFRvdGFsRXhlY3V0aW9uQ291bnQoZmxv
YXQgdmFsdWUpCiB7CiAgICAgdW5pb24gewpAQCAtNTcsNiArNTgsNyBAQCBwdWJsaWM6CiAgICAg
RXhlY3V0aW9uQ291bnRlcigpOwogICAgIHZvaWQgZm9yY2VTbG93UGF0aENvbmN1cnJlbnRseSgp
OyAvLyBJZiB5b3UgdXNlIHRoaXMsIGNoZWNrSWZUaHJlc2hvbGRDcm9zc2VkQW5kU2V0KCkgbWF5
IHN0aWxsIHJldHVybiBmYWxzZS4KICAgICBib29sIGNoZWNrSWZUaHJlc2hvbGRDcm9zc2VkQW5k
U2V0KENvZGVCbG9jayopOworICAgIGJvb2wgaGFzQ3Jvc3NlZFRocmVzaG9sZCgpIGNvbnN0IHsg
cmV0dXJuIG1fY291bnRlciA+PSAwOyB9CiAgICAgdm9pZCBzZXROZXdUaHJlc2hvbGQoaW50MzJf
dCB0aHJlc2hvbGQsIENvZGVCbG9jayopOwogICAgIHZvaWQgZGVmZXJJbmRlZmluaXRlbHkoKTsK
ICAgICBkb3VibGUgY291bnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KG1f
dG90YWxDb3VudCkgKyBtX2NvdW50ZXI7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5jcHAJKHJldmlzaW9uIDIyMTE4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC00Niw2ICs0Niw4IEBAIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgTWV0aG9kT2ZH
ZXQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisvLyBGSVhNRTogVGhpcyBpcyBiZWluZyBzdXBw
bGFudGVkIGJ5IHJlcG9ydFZhbHVlKCkuIFJlbW92ZSB0aGlzIG9uZQorLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NSBoYXMgYmVlbiBmaXhlZC4KIHZvaWQg
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVy
cyYgaml0LCBKU1ZhbHVlUmVncyByZWdzKSBjb25zdAogewogICAgIHN3aXRjaCAobV9raW5kKSB7
CkBAIC03NCw2ICs3NiwzNCBAQCB2b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVt
aXRSCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAordm9pZCBNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlOjpyZXBvcnRWYWx1ZShKU1ZhbHVlIHZhbHVlKQoreworICAg
IHN3aXRjaCAobV9raW5kKSB7CisgICAgY2FzZSBOb25lOgorICAgICAgICByZXR1cm47CisKKyAg
ICBjYXNlIFJlYWR5OgorICAgICAgICAqdS5wcm9maWxlLT5zcGVjRmFpbEJ1Y2tldCgwKSA9IEpT
VmFsdWU6OmVuY29kZSh2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgTGF6eU9w
ZXJhbmQ6IHsKKyAgICAgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkga2V5KHUubGF6eU9w
ZXJhbmQuYnl0ZWNvZGVPZmZzZXQsIFZpcnR1YWxSZWdpc3Rlcih1LmxhenlPcGVyYW5kLm9wZXJh
bmQpKTsKKworICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHUubGF6eU9wZXJhbmQu
Y29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogcHJv
ZmlsZSA9CisgICAgICAgIHUubGF6eU9wZXJhbmQuY29kZUJsb2NrLT5sYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZXMoKS5hZGQobG9ja2VyLCBrZXkpOworICAgICAgICAqcHJvZmlsZS0+c3BlY0ZhaWxC
dWNrZXQoMCkgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgY2FzZSBBcml0aFByb2ZpbGVSZWFkeTogeworICAgICAgICB1LmFyaXRoUHJvZmls
ZS0+b2JzZXJ2ZVJlc3VsdCh2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9IH0KKworICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwog
CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
LmgJKHJldmlzaW9uIDIyMTE4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9N
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzAsOSAr
NzAsMTIgQEAgcHVibGljOgogICAgICAgICBDb2RlQmxvY2sqLCBjb25zdCBMYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZUtleSYpOwogICAgIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25z
dCB7IHJldHVybiBtX2tpbmQgIT0gTm9uZTsgfQotICAgIAorCisgICAgLy8gRklYTUU6IGVtaXRS
ZXBvcnRWYWx1ZSBpcyBiZWluZyBzdXBwbGFudGVkIGJ5IHJlcG9ydFZhbHVlKCkuIFJlbW92ZSB0
aGlzIG9uZQorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzUxNDUgaGFzIGJlZW4gZml4ZWQuCiAgICAgdm9pZCBlbWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxw
ZXJzJiwgSlNWYWx1ZVJlZ3MpIGNvbnN0OwotICAgIAorICAgIHZvaWQgcmVwb3J0VmFsdWUoSlNW
YWx1ZSk7CisKIHByaXZhdGU6CiAgICAgZW51bSBLaW5kIHsKICAgICAgICAgTm9uZSwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHJldmlzaW9uIDIyMTE4NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNCwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBp
bGVJbXBsKAogICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGFueSBzdHVicyB0aGF0IHRoZSBE
RkcgaXMgZ29pbmcgdG8gdXNlIGFyZSBpbml0aWFsaXplZC4gV2Ugd2FudCB0bwogICAgIC8vIG1h
a2Ugc3VyZSB0aGF0IGFsbCBKSVQgY29kZSBnZW5lcmF0aW9uIGRvZXMgZmluYWxpemF0aW9uIG9u
IHRoZSBtYWluIHRocmVhZC4KLSAgICB2bS5nZXRDVElTdHViKG9zckV4aXRHZW5lcmF0aW9uVGh1
bmtHZW5lcmF0b3IpOworICAgIHZtLmdldENUSVN0dWIob3NyRXhpdFRodW5rR2VuZXJhdG9yKTsK
ICAgICB2bS5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRv
cik7CiAgICAgdm0uZ2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKTsKICAgICB2bS5n
ZXRDVElTdHViKGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjIx
MTg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExp
bmtCdWZmZXImIGxpbmtCCiAgICAgICAgICAgICBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2Fs
bChyZWNvcmQuY2FsbCkpOwogICAgIH0KICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
b3NyRXhpdFRodW5rID0gdm0oKS0+Z2V0Q1RJU3R1Yihvc3JFeGl0R2VuZXJhdGlvblRodW5rR2Vu
ZXJhdG9yKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdFRodW5rID0gdm0oKS0+
Z2V0Q1RJU3R1Yihvc3JFeGl0VGh1bmtHZW5lcmF0b3IpOwogICAgIENvZGVMb2NhdGlvbkxhYmVs
IHRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsKG9zckV4aXRUaHVuay5jb2RlKCkpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2ppdENvZGUtPm9zckV4aXQuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgT1NSRXhpdCYgZXhpdCA9IG1faml0Q29kZS0+b3NyRXhpdFtpXTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkocmV2aXNpb24gMjIxMTg3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yOSwxOCArMjksMjM3IEBACiAjaWYgRU5BQkxFKERGR19KSVQpCiAKICNpbmNsdWRl
ICJBc3NlbWJseUhlbHBlcnMuaCIKKyNpbmNsdWRlICJDbG9uZWRBcmd1bWVudHMuaCIKICNpbmNs
dWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR01heUV4aXQuaCIKLSNpbmNsdWRlICJERkdP
U1JFeGl0Q29tcGlsZXJDb21tb24uaCIKICNpbmNsdWRlICJERkdPU1JFeGl0UHJlcGFyYXRpb24u
aCIKICNpbmNsdWRlICJERkdPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiREZHU3BlY3VsYXRpdmVK
SVQuaCIKLSNpbmNsdWRlICJGcmFtZVRyYWNlcnMuaCIKKyNpbmNsdWRlICJEaXJlY3RBcmd1bWVu
dHMuaCIKKyNpbmNsdWRlICJJbmxpbmVDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJKU0RvbGxhclZN
UHJvdG90eXBlLmgiIC8vIG1sYW0gVEVTVAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHNJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiUHJvYmVGcmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+IC8vIG1sYW0gVEVTVAor
CitKU19FWFBPUlREQVRBIGNvbnN0IGNoYXIqIG1sYW1OYW1lID0gIiI7CiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKIAordXNpbmcgQ1BVU3RhdGUgPSBQcm9iZTo6Q1BVU3RhdGU7
Cit1c2luZyBDb250ZXh0ID0gUHJvYmU6OkNvbnRleHQ7Cit1c2luZyBGcmFtZSA9IFByb2JlOjpG
cmFtZTsKKworc3RhdGljIHZvaWQgaW50ZXJwcmV0RXhpdChDb250ZXh0JiwgVk0mLCBPU1JFeGl0
JiwgY29uc3QgT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4mLCBTcGVjdWxhdGlvblJlY292ZXJ5Kik7
CitzdGF0aWMgdm9pZCBwcmludE9TUkV4aXQoQ1BVU3RhdGUmLCB1aW50MzJfdCBvc3JFeGl0SW5k
ZXgsIGNvbnN0IE9TUkV4aXQmKTsKKworLy8gQmFzZWQgb24gQXNzZW1ibHlIZWxwZXJzOjpqaXRB
c3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpLgoraW5saW5lIHN0YXRpYyB2b2lkIGFzc2VydEhhc1Zh
bGlkQ2FsbEZyYW1lKENQVVN0YXRlJiBjcHUpCit7CisgICAgQVNTRVJUX1VOVVNFRChjcHUsICEo
Y3B1LmZwPHVpbnRwdHJfdD4oKSAmIDB4NykpOworfQorCisvLyBCYXNlZCBvbiBBc3NlbWJseUhl
bHBlcnM6OmppdEFzc2VydFRhZ3NJblBsYWNlKCkuCitpbmxpbmUgc3RhdGljIHZvaWQgYXNzZXJ0
VGFnc0luUGxhY2UoQ1BVU3RhdGUmIGNwdSkKK3sKKyAgICBVTlVTRURfUEFSQU0oY3B1KTsgLy8g
Rm9yIDMyLWJpdCBhbmQgcmVsZWFzZSBidWlsZHMuCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBB
U1NFUlQoY3B1LmdwcihHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpID09IFRhZ1R5cGVO
dW1iZXIpOworICAgIEFTU0VSVChjcHUuZ3ByKEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikgPT0g
VGFnTWFzayk7CisjZW5kaWYKK30KKworLy8gQmFzZWQgb24gQXNzZW1ibHlIZWxwZXJzOjplbWl0
TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpLgorc3RhdGljIHZvaWQgbWF0ZXJpYWxpemVU
YWdDaGVja1JlZ2lzdGVycyhDUFVTdGF0ZSYgY3B1KQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgY3B1LmdwcihHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpID0gVGFnVHlwZU51bWJl
cjsKKyAgICBjcHUuZ3ByKEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikgPSBUYWdUeXBlTnVtYmVy
IHwgVGFnQml0VHlwZU90aGVyOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY3B1KTsKKyNlbmRp
ZgorfQorCisjaWYgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgPiAwCisKKy8vIEJh
c2VkIG9uIEFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0ZvcigpLgorc3Rh
dGljIHZvaWQgcmVzdG9yZUNhbGxlZVNhdmVzRm9yKENvbnRleHQmIGNvbnRleHQsIENvZGVCbG9j
ayogY29kZUJsb2NrKQoreworICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OworICAgIGF1dG8m
IHN0YWNrID0gY29udGV4dC5zdGFjaygpOworICAgIEFTU0VSVChjb2RlQmxvY2spOworCisgICAg
UmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVTYXZl
UmVnaXN0ZXJzKCk7CisgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmVSZWdpc3RlcnMgPSBSZWdp
c3RlclNldChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OmFsbEZQ
UnMoKSk7CisgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5zaXplKCk7
CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7Cisg
ICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+YXQoaSk7CisgICAg
ICAgIGlmIChkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIGNwdS5ncHIoZW50cnkucmVnKCkuZ3ByKCkpID0gc3RhY2su
Z2V0PHVpbnRwdHJfdD4oY3B1LmZwKCksIGVudHJ5Lm9mZnNldCgpKTsKKyAgIH0KK30KKworLy8g
QmFzZWQgb24gQXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKCkuCitzdGF0
aWMgdm9pZCBzYXZlQ2FsbGVlU2F2ZXNGb3IoQ29udGV4dCYgY29udGV4dCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2spCit7CisgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CisgICAgYXV0byYgc3Rh
Y2sgPSBjb250ZXh0LnN0YWNrKCk7CisgICAgQVNTRVJUKGNvZGVCbG9jayk7CisKKyAgICBSZWdp
c3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdp
c3RlcnMoKTsKKyAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0
KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxsRlBScygpKTsK
KyAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKKworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsKKyAgICAgICAg
UmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChpKTsKKyAgICAgICAgaWYg
KGRvbnRTYXZlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgc3RhY2suc2V0KGNwdS5mcCgpLCBlbnRyeS5vZmZzZXQoKSwgY3B1Lmdwcjx1
aW50cHRyX3Q+KGVudHJ5LnJlZygpLmdwcigpKSk7CisgICAgfQorfQorCisvLyBCYXNlZCBvbiBB
c3NlbWJseUhlbHBlcnM6OnJlc3RvcmVDYWxsZWVTYXZlc0Zyb21WTUVudHJ5RnJhbWVDYWxsZWVT
YXZlc0J1ZmZlcigpLgorc3RhdGljIHZvaWQgcmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNRW50cnlG
cmFtZUNhbGxlZVNhdmVzQnVmZmVyKENvbnRleHQmIGNvbnRleHQsIFZNJiB2bSkKK3sKKyAgICBh
dXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKKyAgICBhdXRvJiBzdGFjayA9IGNvbnRleHQuc3RhY2so
KTsKKworICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBhbGxDYWxsZWVTYXZlcyA9IFZNOjpnZXRB
bGxDYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7CisgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3Rv
cmVSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKTsKKyAgICB1bnNpZ25l
ZCByZWdpc3RlckNvdW50ID0gYWxsQ2FsbGVlU2F2ZXMtPnNpemUoKTsKKworICAgIFZNRW50cnlS
ZWNvcmQqIGVudHJ5UmVjb3JkID0gdm1FbnRyeVJlY29yZCh2bS50b3BWTUVudHJ5RnJhbWUpOwor
ICAgIHZvaWQqIGNhbGxlZVNhdmVCdWZmZXIgPSBlbnRyeVJlY29yZC0+Y2FsbGVlU2F2ZVJlZ2lz
dGVyc0J1ZmZlcjsKKworICAgIC8vIFJlc3RvcmUgYWxsIGNhbGxlZSBzYXZlcy4KKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lz
dGVyQXRPZmZzZXQgZW50cnkgPSBhbGxDYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgIGlmIChk
b250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIGlmIChlbnRyeS5yZWcoKS5pc0dQUigpKQorICAgICAgICAgICAgY3B1Lmdw
cihlbnRyeS5yZWcoKS5ncHIoKSkgPSBzdGFjay5nZXQ8dWludHB0cl90PihjYWxsZWVTYXZlQnVm
ZmVyLCBlbnRyeS5vZmZzZXQoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNwdS5mcHIo
ZW50cnkucmVnKCkuZnByKCkpID0gc3RhY2suZ2V0PGRvdWJsZT4oY2FsbGVlU2F2ZUJ1ZmZlciwg
ZW50cnkub2Zmc2V0KCkpOworICAgIH0KK30KKworLy8gQmFzZWQgb24gQXNzZW1ibHlIZWxwZXJz
Ojpjb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKCkuCitzdGF0
aWMgdm9pZCBjb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKENv
bnRleHQmIGNvbnRleHQsIFZNJiB2bSkKK3sKKyAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsK
KyAgICBhdXRvJiBzdGFjayA9IGNvbnRleHQuc3RhY2soKTsKKworICAgIFZNRW50cnlSZWNvcmQq
IGVudHJ5UmVjb3JkID0gdm1FbnRyeVJlY29yZCh2bS50b3BWTUVudHJ5RnJhbWUpOworICAgIHZv
aWQqIGNhbGxlZVNhdmVzQnVmZmVyID0gZW50cnlSZWNvcmQtPmNhbGxlZVNhdmVSZWdpc3RlcnNC
dWZmZXI7CisKKyAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2FsbGVlU2F2ZXMgPSBWTTo6
Z2V0QWxsQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0cygpOworICAgIFJlZ2lzdGVyU2V0IGRvbnRD
b3B5UmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCk7CisgICAgdW5zaWdu
ZWQgcmVnaXN0ZXJDb3VudCA9IGFsbENhbGxlZVNhdmVzLT5zaXplKCk7CisKKyAgICBBU1NFUlQo
aXM2NEJpdCgpKTsgLy8gd2UgbmVlZAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdp
c3RlckNvdW50OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENh
bGxlZVNhdmVzLT5hdChpKTsKKyAgICAgICAgaWYgKGRvbnRDb3B5UmVnaXN0ZXJzLmdldChlbnRy
eS5yZWcoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGVudHJ5LnJlZygp
LmlzR1BSKCkpCisgICAgICAgICAgICBzdGFjay5zZXQoY2FsbGVlU2F2ZXNCdWZmZXIsIGVudHJ5
Lm9mZnNldCgpLCBjcHUuZ3ByPHVpbnRwdHJfdD4oZW50cnkucmVnKCkuZ3ByKCkpKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgc3RhY2suc2V0KGNhbGxlZVNhdmVzQnVmZmVyLCBlbnRyeS5v
ZmZzZXQoKSwgY3B1LmZwcjx1aW50cHRyX3Q+KGVudHJ5LnJlZygpLmZwcigpKSk7CisgICAgfQor
fQorCisvLyBCYXNlZCBvbiBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2
ZXNGb3IoKS4KK3N0YXRpYyB2b2lkIHNhdmVPckNvcHlDYWxsZWVTYXZlc0ZvcihDb250ZXh0JiBj
b250ZXh0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmlydHVhbFJlZ2lzdGVyIG9mZnNldFZpcnR1
YWxSZWdpc3RlciwgYm9vbCB3YXNDYWxsZWRWaWFUYWlsQ2FsbCkKK3sKKyAgICBhdXRvJiBjcHUg
PSBjb250ZXh0LmNwdTsKKyAgICBGcmFtZSBmcmFtZShjb250ZXh0KTsKKyAgICBBU1NFUlQoY29k
ZUJsb2NrKTsKKworICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9IGNvZGVC
bG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOworICAgIFJlZ2lzdGVyU2V0IGRvbnRTYXZlUmVn
aXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCksIFJlZ2lz
dGVyU2V0OjphbGxGUFJzKCkpOworICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBjYWxsZWVT
YXZlcy0+c2l6ZSgpOworCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBSZWdpc3RlclNldCBiYXNl
bGluZUNhbGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVn
aXN0ZXJzKCk7CisjZW5kaWYKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3Rl
ckNvdW50OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNh
dmVzLT5hdChpKTsKKyAgICAgICAgaWYgKGRvbnRTYXZlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWco
KSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICB1aW50cHRyX3Qgc2F2ZWRSZWdp
c3RlclZhbHVlOworCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgVU5VU0VEX1BBUkFN
KHdhc0NhbGxlZFZpYVRhaWxDYWxsKTsKKyNlbHNlCisgICAgICAgIGlmICh3YXNDYWxsZWRWaWFU
YWlsQ2FsbCAmJiBiYXNlbGluZUNhbGxlZVNhdmVzLmdldChlbnRyeS5yZWcoKSkpCisgICAgICAg
ICAgICBzYXZlZFJlZ2lzdGVyVmFsdWUgPSBmcmFtZS5nZXQ8dWludHB0cl90PihlbnRyeS5vZmZz
ZXQoKSk7CisgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgc2F2ZWRSZWdpc3RlclZh
bHVlID0gY3B1LmdwcihlbnRyeS5yZWcoKS5ncHIoKSk7CisKKyAgICAgICAgZnJhbWUuc2V0KG9m
ZnNldFZpcnR1YWxSZWdpc3Rlci5vZmZzZXRJbkJ5dGVzKCkgKyBlbnRyeS5vZmZzZXQoKSwgc2F2
ZWRSZWdpc3RlclZhbHVlKTsKKyAgICB9Cit9CisjZW5kaWYgLy8gTlVNQkVSX09GX0NBTExFRV9T
QVZFU19SRUdJU1RFUlMgPiAwCisKK3N0YXRpYyBKU0NlbGwqIGNyZWF0ZURpcmVjdEFyZ3VtZW50
c0R1cmluZ0V4aXQoRXhlY1N0YXRlKiBleGVjLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxG
cmFtZSwgSlNGdW5jdGlvbiogY2FsbGVlLCBpbnQzMl90IGFyZ3VtZW50Q291bnQpCit7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBBU1NFUlQodm0uaGVhcC5pc0RlZmVycmVkKCkpOwor
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2s7CisgICAgaWYgKGlubGluZUNhbGxGcmFtZSkKKyAg
ICAgICAgY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUoaW5s
aW5lQ2FsbEZyYW1lKTsKKyAgICBlbHNlCisgICAgICAgIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVC
bG9jaygpOworCisgICAgdW5zaWduZWQgbGVuZ3RoID0gYXJndW1lbnRDb3VudCAtIDE7CisgICAg
dW5zaWduZWQgY2FwYWNpdHkgPSBzdGQ6Om1heChsZW5ndGgsIHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIDEpKTsKKyAgICBEaXJlY3RBcmd1bWVudHMq
IHJlc3VsdCA9IERpcmVjdEFyZ3VtZW50czo6Y3JlYXRlKAorICAgICAgICB2bSwgY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKS0+ZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlKCksIGxlbmd0aCwgY2Fw
YWNpdHkpOworCisgICAgQVNTRVJUKGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVlKSk7IC8vIG1s
YW0gVEVTVAorICAgIHJlc3VsdC0+Y2FsbGVlKCkuc2V0KHZtLCByZXN1bHQsIGNhbGxlZSk7CisK
KyAgICBSZWdpc3RlciogYXJndW1lbnRzID0KKyAgICAgICAgZXhlYy0+cmVnaXN0ZXJzKCkgKyAo
aW5saW5lQ2FsbEZyYW1lID8gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCA6IDApICsKKyAg
ICAgICAgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldCgwKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSBsZW5ndGg7IGktLTspCisgICAgICAgIHJlc3VsdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpLCBh
cmd1bWVudHNbaV0uanNWYWx1ZSgpKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRp
YyBKU0NlbGwqIGNyZWF0ZUNsb25lZEFyZ3VtZW50c0R1cmluZ0V4aXQoRXhlY1N0YXRlKiBleGVj
LCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgSlNGdW5jdGlvbiogY2FsbGVlLCBp
bnQzMl90IGFyZ3VtZW50Q291bnQpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBB
U1NFUlQodm0uaGVhcC5pc0RlZmVycmVkKCkpOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2s7
CisgICAgaWYgKGlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgY29kZUJsb2NrID0gYmFzZWxpbmVD
b2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1lKTsKKyAgICBlbHNlCisg
ICAgICAgIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworCisgICAgdW5zaWduZWQgbGVu
Z3RoID0gYXJndW1lbnRDb3VudCAtIDE7CisgICAgQ2xvbmVkQXJndW1lbnRzKiByZXN1bHQgPSBD
bG9uZWRBcmd1bWVudHM6OmNyZWF0ZUVtcHR5KAorICAgICAgICB2bSwgY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKS0+Y2xvbmVkQXJndW1lbnRzU3RydWN0dXJlKCksIGNhbGxlZSwgbGVuZ3RoKTsK
KworICAgIFJlZ2lzdGVyKiBhcmd1bWVudHMgPQorICAgICAgICBleGVjLT5yZWdpc3RlcnMoKSAr
IChpbmxpbmVDYWxsRnJhbWUgPyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0IDogMCkgKwor
ICAgICAgICBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KDApOworICAgIGZvciAodW5zaWduZWQg
aSA9IGxlbmd0aDsgaS0tOykKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCBp
LCBhcmd1bWVudHNbaV0uanNWYWx1ZSgpKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIE9T
UkV4aXQ6Ok9TUkV4aXQoRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNl
LCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHZhbHVlUHJvZmlsZSwgU3BlY3VsYXRpdmVK
SVQqIGppdCwgdW5zaWduZWQgc3RyZWFtSW5kZXgsIHVuc2lnbmVkIHJlY292ZXJ5SW5kZXgpCiAg
ICAgOiBPU1JFeGl0QmFzZShraW5kLCBqaXQtPm1fb3JpZ2luLmZvckV4aXQsIGppdC0+bV9vcmln
aW4uc2VtYW50aWMsIGppdC0+bV9vcmlnaW4ud2FzSG9pc3RlZCkKICAgICAsIG1fanNWYWx1ZVNv
dXJjZShqc1ZhbHVlU291cmNlKQpAQCAtNzgsOCArMjk3LDEyIEBAIHZvaWQgT1NSRXhpdDo6Y29y
cmVjdEp1bXAoTGlua0J1ZmZlciYgbGkKICAgICBtX3BhdGNoYWJsZUNvZGVPZmZzZXQgPSBsaW5r
QnVmZmVyLm9mZnNldE9mKGxhYmVsKTsKIH0KIAotdm9pZCBPU1JFeGl0OjplbWl0UmVzdG9yZUFy
Z3VtZW50cyhDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4m
IG9wZXJhbmRzKQorc3RhdGljIHZvaWQgZW1pdFJlc3RvcmVBcmd1bWVudHMoQ29udGV4dCYgY29u
dGV4dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+
JiBvcGVyYW5kcykKIHsKKyAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKKyAgICBGcmFtZSBm
cmFtZShjb250ZXh0KTsKKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGNwdS5mcDxFeGVjU3RhdGUq
PigpOwogICAgIEhhc2hNYXA8TWluaWZpZWRJRCwgaW50PiBhbHJlYWR5QWxsb2NhdGVkQXJndW1l
bnRzOyAvLyBNYXBzIHBoYW50b20gYXJndW1lbnRzIG5vZGUgSUQgdG8gb3BlcmFuZC4KICAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4KSB7
CiAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhd
OwpAQCAtOTIsMTQgKzMxNSwxMiBAQCB2b2lkIE9TUkV4aXQ6OmVtaXRSZXN0b3JlQXJndW1lbnRz
KENDYWxsCiAgICAgICAgIE1pbmlmaWVkSUQgaWQgPSByZWNvdmVyeS5ub2RlSUQoKTsKICAgICAg
ICAgYXV0byBpdGVyID0gYWxyZWFkeUFsbG9jYXRlZEFyZ3VtZW50cy5maW5kKGlkKTsKICAgICAg
ICAgaWYgKGl0ZXIgIT0gYWxyZWFkeUFsbG9jYXRlZEFyZ3VtZW50cy5lbmQoKSkgewotICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3MgcmVncyA9IEpTVmFsdWVSZWdzOjp3aXRoVHdvQXZhaWxhYmxlUmVn
cyhHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEpOwotICAgICAgICAgICAgaml0LmxvYWRW
YWx1ZShDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3IoaXRlci0+dmFsdWUpLCByZWdzKTsKLSAgICAg
ICAgICAgIGppdC5zdG9yZVZhbHVlKHJlZ3MsIENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihvcGVy
YW5kKSk7CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIGZyYW1lLmdldE9w
ZXJhbmQ8SlNWYWx1ZT4oaXRlci0+dmFsdWUpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CiAKICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPQotICAg
ICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5qaXRDb2RlKCktPmRmZygpLT5taW5pZmllZERGRy5h
dChpZCktPmlubGluZUNhbGxGcmFtZSgpOworICAgICAgICAgICAgY29kZUJsb2NrLT5qaXRDb2Rl
KCktPmRmZygpLT5taW5pZmllZERGRy5hdChpZCktPmlubGluZUNhbGxGcmFtZSgpOwogCiAgICAg
ICAgIGludCBzdGFja09mZnNldDsKICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSkKQEAgLTEw
Nyw3MCArMzI4LDc1IEBAIHZvaWQgT1NSRXhpdDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMoQ0NhbGwK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgc3RhY2tPZmZzZXQgPSAwOwogCi0gICAgICAgIGlm
ICghaW5saW5lQ2FsbEZyYW1lIHx8IGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkgewot
ICAgICAgICAgICAgaml0LmxvYWRQdHIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJz
OjphZGRyZXNzRm9yKHN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwKLSAgICAg
ICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBqaXQubW92ZSgKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeS5jb25zdGFudCgpLmFzQ2VsbCgpKSwK
LSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIH0KKyAgICAgICAgSlNG
dW5jdGlvbiogY2FsbGVlOworICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSB8fCBpbmxpbmVD
YWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpCisgICAgICAgICAgICBjYWxsZWUgPSBqc0Nhc3Q8SlNG
dW5jdGlvbio+KGZyYW1lLmdldE9wZXJhbmQ8SlNWYWx1ZT4oc3RhY2tPZmZzZXQgKyBDYWxsRnJh
bWVTbG90OjpjYWxsZWUpLmFzQ2VsbCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2Fs
bGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZVJlY292ZXJ5
LmNvbnN0YW50KCkuYXNDZWxsKCkpOworICAgICAgICBBU1NFUlQoanNDYXN0PEpTRnVuY3Rpb24q
PihjYWxsZWUpKTsgLy8gbWxhbSBURVNUCiAKLSAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUg
fHwgaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgewotICAgICAgICAgICAgaml0LmxvYWQz
MigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Ioc3RhY2tPZmZz
ZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwKLSAgICAgICAgICAgICAgICBHUFJJ
bmZvOjpyZWdUMSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBqaXQubW92ZSgKLSAg
ICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50cy5zaXplKCkpLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsK
LSAgICAgICAgfQorICAgICAgICBpbnQzMl90IGFyZ3VtZW50Q291bnQ7CisgICAgICAgIGlmICgh
aW5saW5lQ2FsbEZyYW1lIHx8IGlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCisgICAgICAg
ICAgICBhcmd1bWVudENvdW50ID0gZnJhbWUuZ2V0T3BlcmFuZDxpbnQzMl90PihzdGFja09mZnNl
dCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIFBheWxvYWRPZmZzZXQpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBhcmd1bWVudENvdW50ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1
bWVudHMuc2l6ZSgpOwogCi0gICAgICAgIGppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
Ci0gICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZy
YW1lKSwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgSlNDZWxsKiBh
cmd1bWVudHNPYmplY3Q7CiAgICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsK
ICAgICAgICAgY2FzZSBEaXJlY3RBcmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQ6Ci0gICAgICAg
ICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0
PHZvaWQqPihvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHNEdXJpbmdFeGl0KSksIEdQUklu
Zm86Om5vbkFyZ0dQUjApOworICAgICAgICAgICAgYXJndW1lbnRzT2JqZWN0ID0gY3JlYXRlRGly
ZWN0QXJndW1lbnRzRHVyaW5nRXhpdChleGVjLCBpbmxpbmVDYWxsRnJhbWUsIGNhbGxlZSwgYXJn
dW1lbnRDb3VudCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDbG9uZWRBcmd1
bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQ6Ci0gICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb25DcmVhdGVD
bG9uZWRBcmd1bWVudHNEdXJpbmdFeGl0KSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAg
ICAgICAgYXJndW1lbnRzT2JqZWN0ID0gY3JlYXRlQ2xvbmVkQXJndW1lbnRzRHVyaW5nRXhpdChl
eGVjLCBpbmxpbmVDYWxsRnJhbWUsIGNhbGxlZSwgYXJndW1lbnRDb3VudCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBqaXQu
Y2FsbChHUFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICAgICAgaml0LnN0b3JlQ2VsbChHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUiwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsK
KyAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBhcmd1bWVudHNPYmplY3QpOwogCiAg
ICAgICAgIGFscmVhZHlBbGxvY2F0ZWRBcmd1bWVudHMuYWRkKGlkLCBvcGVyYW5kKTsKICAgICB9
CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBPU1JFeGl0Ojpjb21waWxlT1NSRXhpdChFeGVjU3Rh
dGUqIGV4ZWMpCitzdGF0aWMgdm9pZCBtbGFtRHVtcENQVShDb250ZXh0JiBjb250ZXh0KQogewot
ICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKCp2bSk7CisgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CisgICAgZm9yIChhdXRv
IGkgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpOyBpIDw9IE1hY3JvQXNzZW1ibGVy
OjpsYXN0UmVnaXN0ZXIoKTsgaSA9IChNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCkoKGludClp
ICsgMSkpCisgICAgICAgIGRhdGFMb2coIiAgICAiLCBjcHUuZ3ByTmFtZShpKSwgIjogIiwgUmF3
UG9pbnRlcihjcHUuZ3ByPHZvaWQqPihpKSksICJcbiIpOworfQogCi0gICAgaWYgKHZtLT5jYWxs
RnJhbWVGb3JDYXRjaCkKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0tPmNhbGxGcmFtZUZvckNh
dGNoID09IGV4ZWMpOwordm9pZCBPU1JFeGl0OjpleGVjdXRlT1NSRXhpdChDb250ZXh0JiBjb250
ZXh0KQoreworICAgIENQVVN0YXRlJiBjcHUgPSBjb250ZXh0LmNwdTsKKyAgICBFeGVjU3RhdGUq
IGV4ZWMgPSBjcHUuZnA8RXhlY1N0YXRlKj4oKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICh2bS5j
YWxsRnJhbWVGb3JDYXRjaCkgeworICAgICAgICBleGVjID0gdm0uY2FsbEZyYW1lRm9yQ2F0Y2g7
CisgICAgICAgIGNwdS5mcCgpID0gZXhlYzsKKyAgICB9CiAKICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwogICAgIEFTU0VSVChjb2RlQmxvY2spOwogICAgIEFT
U0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOworICAgIGlmIChn
ZXRlbnYoInZlcmJvc2UiKSkgeworICAgICAgICBkYXRhTG9nKCIgICBtbGFtIE9TUkV4aXQ6OmV4
ZWN1dGVPU1JFeGl0OiBleGl0SW5kZXggIiwgdm0ub3NyRXhpdEluZGV4LCAiIEAgY29kZUJsb2Nr
ID0gIiwgY29kZUJsb2NrLCAiXG4iKTsgLy8gbWxhbQorICAgICAgICBtbGFtRHVtcENQVShjb250
ZXh0KTsKKyAgICB9CiAKICAgICAvLyBJdCdzIHNvcnQgb2YgcHJlZmVyYWJsZSB0aGF0IHdlIGRv
bid0IEdDIHdoaWxlIGluIGhlcmUuIEFueXdheXMsIGRvaW5nIHNvIHdvdWxkbid0CiAgICAgLy8g
cmVhbGx5IGJlIHByb2ZpdGFibGUuCi0gICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLT5o
ZWFwKTsKKyAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0uaGVhcCk7CiAKLSAgICB1aW50
MzJfdCBleGl0SW5kZXggPSB2bS0+b3NyRXhpdEluZGV4OworICAgIHVpbnQzMl90IGV4aXRJbmRl
eCA9IHZtLm9zckV4aXRJbmRleDsKICAgICBPU1JFeGl0JiBleGl0ID0gY29kZUJsb2NrLT5qaXRD
b2RlKCktPmRmZygpLT5vc3JFeGl0W2V4aXRJbmRleF07CiAKLSAgICBpZiAodm0tPmNhbGxGcmFt
ZUZvckNhdGNoKQotICAgICAgICBBU1NFUlQoZXhpdC5tX2tpbmQgPT0gR2VuZXJpY1Vud2luZCk7
Ci0gICAgaWYgKGV4aXQuaXNFeGNlcHRpb25IYW5kbGVyKCkpCi0gICAgICAgIEFTU0VSVF9VTlVT
RUQoc2NvcGUsICEhc2NvcGUuZXhjZXB0aW9uKCkpOwotICAgIAorICAgIEFTU0VSVCghdm0uY2Fs
bEZyYW1lRm9yQ2F0Y2ggfHwgZXhpdC5tX2tpbmQgPT0gR2VuZXJpY1Vud2luZCk7CisgICAgQVNT
RVJUX1VOVVNFRChzY29wZSwgIWV4aXQuaXNFeGNlcHRpb25IYW5kbGVyKCkgfHwgISFzY29wZS5l
eGNlcHRpb24oKSk7CisKKyAgICAvLyBFbnN1cmUgd2UgaGF2ZSBiYXNlbGluZSBjb2RlQmxvY2tz
IHRvIE9TUiBleGl0IHRvLgogICAgIHByZXBhcmVDb2RlT3JpZ2luRm9yT1NSRXhpdChleGVjLCBl
eGl0Lm1fY29kZU9yaWdpbik7CiAKICAgICAvLyBDb21wdXRlIHRoZSB2YWx1ZSByZWNvdmVyaWVz
LgpAQCAtMTgxLDg0ICs0MDcsMTAwIEBAIHZvaWQgSklUX09QRVJBVElPTiBPU1JFeGl0Ojpjb21w
aWxlT1NSRXgKICAgICBpZiAoZXhpdC5tX3JlY292ZXJ5SW5kZXggIT0gVUlOVF9NQVgpCiAgICAg
ICAgIHJlY292ZXJ5ID0gJmNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKS0+c3BlY3VsYXRpb25S
ZWNvdmVyeVtleGl0Lm1fcmVjb3ZlcnlJbmRleF07CiAKKyAgICAvLyBGSVhNRTogd2Ugc2hvdWxk
IHJlbW92ZSB0aGlzIGluZGVudGF0aW9uLCBidXQgSSdtIGxlYXZpbmcgaXQgaGVyZSB0byBtYWtl
IHRoZSBwYXRjaCBlYXNpZXIKKyAgICAvLyB0byByZXZpZXcuIFdpbGwgdW5pbmRlbnQgdGhpcyBi
ZWZvcmUgbGFuZGluZy4KICAgICB7Ci0gICAgICAgIENDYWxsSGVscGVycyBqaXQoY29kZUJsb2Nr
KTsKLQogICAgICAgICBpZiAoZXhpdC5tX2tpbmQgPT0gR2VuZXJpY1Vud2luZCkgewogICAgICAg
ICAgICAgLy8gV2UgYXJlIGFjdGluZyBhcyBhIGRlZmFjdG8gb3BfY2F0Y2ggYmVjYXVzZSB3ZSBh
cnJpdmUgaGVyZSBmcm9tIGdlbmVyaWNVbndpbmQoKS4KICAgICAgICAgICAgIC8vIFNvLCB3ZSBt
dXN0IHJlc3RvcmUgb3VyIGNhbGwgZnJhbWUgYW5kIHN0YWNrIHBvaW50ZXIuCi0gICAgICAgICAg
ICBqaXQucmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVy
KCp2bSk7Ci0gICAgICAgICAgICBqaXQubG9hZFB0cih2bS0+YWRkcmVzc09mQ2FsbEZyYW1lRm9y
Q2F0Y2goKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworI2lmIE5VTUJFUl9PRl9DQUxM
RUVfU0FWRVNfUkVHSVNURVJTID4gMAorICAgICAgICAgICAgcmVzdG9yZUNhbGxlZVNhdmVzRnJv
bVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKGNvbnRleHQsIHZtKTsKKyNlbmRpZgorICAg
ICAgICAgICAgQVNTRVJUKGNwdS5mcCgpID09IHZtLmNhbGxGcmFtZUZvckNhdGNoKTsKICAgICAg
ICAgfQotICAgICAgICBqaXQuYWRkUHRyKAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoY29kZUJsb2NrLT5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3Rl
cikpLAotICAgICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVy
czo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICBjcHUuc3AoKSA9IGNwdS5mcDx1aW50
OF90Kj4oKSArIChjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lz
dGVyKSk7CiAKLSAgICAgICAgaml0LmppdEFzc2VydEhhc1ZhbGlkQ2FsbEZyYW1lKCk7CisgICAg
ICAgIGFzc2VydEhhc1ZhbGlkQ2FsbEZyYW1lKGNwdSk7CiAKLSAgICAgICAgaWYgKFVOTElLRUxZ
KHZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIgJiYgY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZ0Nv
bW1vbigpLT5jb21waWxhdGlvbikpIHsKLSAgICAgICAgICAgIFByb2ZpbGVyOjpEYXRhYmFzZSYg
ZGF0YWJhc2UgPSAqdm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlcjsKKyAgICAgICAgaWYgKFVOTElL
RUxZKHZtLm1fcGVyQnl0ZWNvZGVQcm9maWxlciAmJiBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZn
Q29tbW9uKCktPmNvbXBpbGF0aW9uKSkgeworICAgICAgICAgICAgUHJvZmlsZXI6OkRhdGFiYXNl
JiBkYXRhYmFzZSA9ICp2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXI7CiAgICAgICAgICAgICBQcm9m
aWxlcjo6Q29tcGlsYXRpb24qIGNvbXBpbGF0aW9uID0gY29kZUJsb2NrLT5qaXRDb2RlKCktPmRm
Z0NvbW1vbigpLT5jb21waWxhdGlvbi5nZXQoKTsKIAogICAgICAgICAgICAgUHJvZmlsZXI6Ok9T
UkV4aXQqIHByb2ZpbGVyRXhpdCA9IGNvbXBpbGF0aW9uLT5hZGRPU1JFeGl0KAogICAgICAgICAg
ICAgICAgIGV4aXRJbmRleCwgUHJvZmlsZXI6Ok9yaWdpblN0YWNrKGRhdGFiYXNlLCBjb2RlQmxv
Y2ssIGV4aXQubV9jb2RlT3JpZ2luKSwKICAgICAgICAgICAgICAgICBleGl0Lm1fa2luZCwgZXhp
dC5tX2tpbmQgPT0gVW5jb3VudGFibGVJbnZhbGlkYXRpb24pOwotICAgICAgICAgICAgaml0LmFk
ZDY0KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRl
QWRkcmVzcyhwcm9maWxlckV4aXQtPmNvdW50ZXJBZGRyZXNzKCkpKTsKKyAgICAgICAgICAgIHBy
b2ZpbGVyRXhpdC0+aW5jQ291bnQoKTsKICAgICAgICAgfQogCi0gICAgICAgIGNvbXBpbGVFeGl0
KGppdCwgKnZtLCBleGl0LCBvcGVyYW5kcywgcmVjb3ZlcnkpOwotCi0gICAgICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoaml0LCBjb2RlQmxvY2spOwotICAgICAgICBleGl0Lm1fY29kZSA9IEZJ
TkFMSVpFX0NPREVfSUYoCi0gICAgICAgICAgICBzaG91bGREdW1wRGlzYXNzZW1ibHkoKSB8fCBP
cHRpb25zOjp2ZXJib3NlT1NSKCkgfHwgT3B0aW9uczo6dmVyYm9zZURGR09TUkV4aXQoKSwKLSAg
ICAgICAgICAgIHBhdGNoQnVmZmVyLAotICAgICAgICAgICAgKCJERkcgT1NSIGV4aXQgIyV1ICgl
cywgJXMpIGZyb20gJXMsIHdpdGggb3BlcmFuZHMgPSAlcyIsCisgICAgICAgIGlmIChVTkxJS0VM
WShPcHRpb25zOjp2ZXJib3NlT1NSKCkgfHwgT3B0aW9uczo6dmVyYm9zZURGR09TUkV4aXQoKSkp
CisgICAgICAgICAgICBkYXRhTG9nRigiREZHIE9TUiBleGl0ICMldSAoJXMsICVzKSBmcm9tICVz
LCB3aXRoIG9wZXJhbmRzID0gJXMiLAogICAgICAgICAgICAgICAgIGV4aXRJbmRleCwgdG9DU3Ry
aW5nKGV4aXQubV9jb2RlT3JpZ2luKS5kYXRhKCksCiAgICAgICAgICAgICAgICAgZXhpdEtpbmRU
b1N0cmluZyhleGl0Lm1fa2luZCksIHRvQ1N0cmluZygqY29kZUJsb2NrKS5kYXRhKCksCi0gICAg
ICAgICAgICAgICAgdG9DU3RyaW5nKGlnbm9yaW5nQ29udGV4dDxEdW1wQ29udGV4dD4ob3BlcmFu
ZHMpKS5kYXRhKCkpKTsKKyAgICAgICAgICAgICAgICB0b0NTdHJpbmcoaWdub3JpbmdDb250ZXh0
PER1bXBDb250ZXh0PihvcGVyYW5kcykpLmRhdGEoKSk7CiAgICAgfQogCi0gICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGF0Y2hKdW1wKGV4aXQuY29kZUxvY2F0aW9uRm9yUmVwYXRjaChjb2RlQmxvY2sp
LCBDb2RlTG9jYXRpb25MYWJlbChleGl0Lm1fY29kZS5jb2RlKCkpKTsKKyAgICBpbnRlcnByZXRF
eGl0KGNvbnRleHQsIHZtLCBleGl0LCBvcGVyYW5kcywgcmVjb3ZlcnkpOwogCi0gICAgdm0tPm9z
ckV4aXRKdW1wRGVzdGluYXRpb24gPSBleGl0Lm1fY29kZS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKTsKKyAgICAvLyBGSVhNRTogdG8gYmUgY29udGludWVkLgorLy8gICAgY3B1LnBjKCkgPSB2
bS5vc3JFeGl0SnVtcERlc3RpbmF0aW9uOworLy8gICAgLy8gdm0tPm9zckV4aXRKdW1wRGVzdGlu
YXRpb24gPSBleGl0Lm1fY29kZS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKIH0KIAotdm9p
ZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBP
U1JFeGl0JiBleGl0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMsIFNw
ZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5KQorc3RhdGljIHZvaWQgaW50ZXJwcmV0RXhpdChD
b250ZXh0JiBjb250ZXh0LCBWTSYgdm0sIE9TUkV4aXQmIGV4aXQsIGNvbnN0IE9wZXJhbmRzPFZh
bHVlUmVjb3Zlcnk+JiBvcGVyYW5kcywgU3BlY3VsYXRpb25SZWNvdmVyeSogcmVjb3ZlcnkpCiB7
Ci0gICAgaml0LmppdEFzc2VydFRhZ3NJblBsYWNlKCk7CisgICAgYXV0byYgY3B1ID0gY29udGV4
dC5jcHU7CisgICAgRnJhbWUgZnJhbWUoY29udGV4dCk7CiAKLSAgICAvLyBQcm8tZm9ybWEgc3R1
ZmYuCi0gICAgaWYgKE9wdGlvbnM6OnByaW50RWFjaE9TUkV4aXQoKSkgewotICAgICAgICBTcGVj
dWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8qIGRlYnVnSW5mbyA9IG5ldyBTcGVjdWxhdGlvbkZhaWx1
cmVEZWJ1Z0luZm87Ci0gICAgICAgIGRlYnVnSW5mby0+Y29kZUJsb2NrID0gaml0LmNvZGVCbG9j
aygpOwotICAgICAgICBkZWJ1Z0luZm8tPmtpbmQgPSBleGl0Lm1fa2luZDsKLSAgICAgICAgZGVi
dWdJbmZvLT5ieXRlY29kZU9mZnNldCA9IGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXg7
CisgICAgRXhlY1N0YXRlKiBleGVjID0gY3B1LmZwPEV4ZWNTdGF0ZSo+KCk7CisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBDb2RlQmxvY2sqIGJhc2Vs
aW5lQ29kZUJsb2NrID0gY29kZUJsb2NrLT5iYXNlbGluZUFsdGVybmF0aXZlKCk7CiAKLSAgICAg
ICAgaml0LmRlYnVnQ2FsbCh2bSwgZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFpbHVy
ZSwgZGVidWdJbmZvKTsKLSAgICB9CisgICAgYXNzZXJ0VGFnc0luUGxhY2UoY3B1KTsKIAorICAg
IGlmIChVTkxJS0VMWShPcHRpb25zOjpwcmludEVhY2hPU1JFeGl0KCkpKQorICAgICAgICBwcmlu
dE9TUkV4aXQoY3B1LCB2bS5vc3JFeGl0SW5kZXgsIGV4aXQpOworCisvLyAgICAvLyBTZXQgdGhl
IHJlc3VsdGFudCBzcCB0byB3aGVyZSB0aGUgREZHIGNvZGVCbG9jayBleHBlY3RzIGl0LgorLy8g
ICAgY3B1LnNwKCkgPSBjcHUuZnA8dWludDhfdCo+KCkgKyBjb2RlQmxvY2stPnN0YWNrUG9pbnRl
ck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKTsKKy8vCiAgICAgLy8gUGVyZm9ybSBzcGVjdWxh
dGlvbiByZWNvdmVyeS4gVGhpcyBvbmx5IGNvbWVzIGludG8gcGxheSB3aGVuIGFuIG9wZXJhdGlv
bgogICAgIC8vIHN0YXJ0cyBtdXRhdGluZyBzdGF0ZSBiZWZvcmUgdmVyaWZ5aW5nIHRoZSBzcGVj
dWxhdGlvbiBpdCBoYXMgYWxyZWFkeSBtYWRlLgogCisgICAgaWYgKGdldGVudigidmVyYm9zZSIp
KSB7CisgICAgICAgIGRhdGFMb2coIk9TUiBleGl0OiBERkcgQ0I6IiwgY29kZUJsb2NrLCAiID0+
IGJhc2VsaW5lIENCOiIsIGJhc2VsaW5lQ29kZUJsb2NrLCAiXG4iKTsKKyAgICAgICAgZGF0YUxv
ZygiQkVGT1JFIHJlY292ZXIgdmFsdWVzOlxuIik7CisgICAgICAgIG1sYW1EdW1wQ1BVKGNvbnRl
eHQpOworICAgIH0KKwogICAgIGlmIChyZWNvdmVyeSkgewogICAgICAgICBzd2l0Y2ggKHJlY292
ZXJ5LT50eXBlKCkpIHsKICAgICAgICAgY2FzZSBTcGVjdWxhdGl2ZUFkZDoKLSAgICAgICAgICAg
IGppdC5zdWIzMihyZWNvdmVyeS0+c3JjKCksIHJlY292ZXJ5LT5kZXN0KCkpOworICAgICAgICAg
ICAgaWYgKGdldGVudigidmVyYm9zZSIpKSBkYXRhTG9nKCIgICBSRUNPVkVSIFNwZWN1bGF0aXZl
QWRkICIsIGNwdS5ncHJOYW1lKHJlY292ZXJ5LT5kZXN0KCkpLCAiOiAiLCBSYXdQb2ludGVyKGNw
dS5ncHI8dm9pZCo+KHJlY292ZXJ5LT5kZXN0KCkpKSwgIiA9PT4gIik7CisgICAgICAgICAgICBj
cHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkpID0gY3B1Lmdwcjx1aW50MzJfdD4ocmVjb3ZlcnktPmRl
c3QoKSkgLSBjcHUuZ3ByPHVpbnQzMl90PihyZWNvdmVyeS0+c3JjKCkpOwogI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgICAgICAgICBqaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIsIHJlY292ZXJ5LT5kZXN0KCkpOworICAgICAgICAgICAgQVNTRVJUKCEoY3B1LmdwcihyZWNv
dmVyeS0+ZGVzdCgpKSA+PiAzMikpOworICAgICAgICAgICAgY3B1LmdwcihyZWNvdmVyeS0+ZGVz
dCgpKSB8PSBUYWdUeXBlTnVtYmVyOworICAgICAgICAgICAgQVNTRVJUKChjcHUuZ3ByKHJlY292
ZXJ5LT5kZXN0KCkpICYgVGFnVHlwZU51bWJlcikgPT0gVGFnVHlwZU51bWJlcik7IC8vIG1sYW0g
VEVTVAogI2VuZGlmCisgICAgICAgICAgICBpZiAoZ2V0ZW52KCJ2ZXJib3NlIikpIGRhdGFMb2co
UmF3UG9pbnRlcihjcHUuZ3ByPHZvaWQqPihyZWNvdmVyeS0+ZGVzdCgpKSksICJcbiIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTcGVjdWxhdGl2ZUFkZEltbWVkaWF0ZToK
LSAgICAgICAgICAgIGppdC5zdWIzMihBc3NlbWJseUhlbHBlcnM6OkltbTMyKHJlY292ZXJ5LT5p
bW1lZGlhdGUoKSksIHJlY292ZXJ5LT5kZXN0KCkpOworICAgICAgICAgICAgaWYgKGdldGVudigi
dmVyYm9zZSIpKSBkYXRhTG9nKCIgICBSRUNPVkVSIFNwZWN1bGF0aXZlQWRkSW1tZWRpYXRlICIs
IGNwdS5ncHJOYW1lKHJlY292ZXJ5LT5kZXN0KCkpLCAiOiAiLCBSYXdQb2ludGVyKGNwdS5ncHI8
dm9pZCo+KHJlY292ZXJ5LT5kZXN0KCkpKSwgIiA9PT4gIik7CisgICAgICAgICAgICBjcHUuZ3By
KHJlY292ZXJ5LT5kZXN0KCkpID0gKGNwdS5ncHI8dWludDMyX3Q+KHJlY292ZXJ5LT5kZXN0KCkp
IC0gcmVjb3ZlcnktPmltbWVkaWF0ZSgpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAg
ICAgaml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZWNvdmVyeS0+ZGVz
dCgpKTsKKyAgICAgICAgICAgIEFTU0VSVCghKGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgPj4g
MzIpKTsKKyAgICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgfD0gVGFnVHlwZU51
bWJlcjsKKyAgICAgICAgICAgIEFTU0VSVCgoY3B1LmdwcihyZWNvdmVyeS0+ZGVzdCgpKSAmIFRh
Z1R5cGVOdW1iZXIpID09IFRhZ1R5cGVOdW1iZXIpOyAvLyBtbGFtIFRFU1QKICNlbmRpZgorICAg
ICAgICAgICAgaWYgKGdldGVudigidmVyYm9zZSIpKSBkYXRhTG9nKFJhd1BvaW50ZXIoY3B1Lmdw
cjx2b2lkKj4ocmVjb3ZlcnktPmRlc3QoKSkpLCAiXG4iKTsKICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgIGNhc2UgQm9vbGVhblNwZWN1bGF0aW9uQ2hlY2s6CiAjaWYgVVNFKEpTVkFMVUU2
NCkKLSAgICAgICAgICAgIGppdC54b3I2NChBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihz
dGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIHJlY292ZXJ5LT5kZXN0KCkpOworICAg
ICAgICAgICAgaWYgKGdldGVudigidmVyYm9zZSIpKSBkYXRhTG9nKCIgICBSRUNPVkVSIEJvb2xl
YW5TcGVjdWxhdGlvbkNoZWNrICIsIGNwdS5ncHJOYW1lKHJlY292ZXJ5LT5kZXN0KCkpLCAiOiAi
LCBSYXdQb2ludGVyKGNwdS5ncHI8dm9pZCo+KHJlY292ZXJ5LT5kZXN0KCkpKSwgIiA9PT4gIik7
CisgICAgICAgICAgICBjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkpID0gY3B1LmdwcihyZWNvdmVy
eS0+ZGVzdCgpKSBeIFZhbHVlRmFsc2U7CisgICAgICAgICAgICBpZiAoZ2V0ZW52KCJ2ZXJib3Nl
IikpIGRhdGFMb2coUmF3UG9pbnRlcihjcHUuZ3ByPHZvaWQqPihyZWNvdmVyeS0+ZGVzdCgpKSks
ICJcbiIpOwogI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKIApAQCAtMjY2LDYgKzUwOCwxMCBA
QCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgIH0KKyAgICBpZiAoZ2V0ZW52KCJ2ZXJib3NlIikpIHsKKyAg
ICAgICAgZGF0YUxvZygiQUZURVIgcmVjb3ZlciB2YWx1ZXM6XG4iKTsKKyAgICAgICAgbWxhbUR1
bXBDUFUoY29udGV4dCk7CisgICAgfQogCiAgICAgLy8gUmVmaW5lIHNvbWUgYXJyYXkgYW5kL29y
IHZhbHVlIHByb2ZpbGUsIGlmIGFwcHJvcHJpYXRlLgogCkBAIC0yODEsMzk1ICs1MjcsMTQ2IEBA
IHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAgICAgICAgIC8v
IHByb3BlcnR5IGFjY2Vzcywgb3IgZHVlIHRvIGFuIGFycmF5IHByb2ZpbGUpLgogCiAgICAgICAg
ICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9yaWdpbkZvckV4aXRQcm9m
aWxlOwotICAgICAgICAgICAgaWYgKEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gaml0LmJh
c2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVPcmlnaW4pLT5nZXRBcnJheVByb2ZpbGUoY29kZU9yaWdp
bi5ieXRlY29kZUluZGV4KSkgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICAgICAg
R1BSUmVnIHVzZWRSZWdpc3RlcjsKLSAgICAgICAgICAgICAgICBpZiAoZXhpdC5tX2pzVmFsdWVT
b3VyY2UuaXNBZGRyZXNzKCkpCi0gICAgICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlciA9IGV4
aXQubV9qc1ZhbHVlU291cmNlLmJhc2UoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIHVzZWRSZWdpc3RlciA9IGV4aXQubV9qc1ZhbHVlU291cmNlLmdwcigpOwot
I2Vsc2UKLSAgICAgICAgICAgICAgICBHUFJSZWcgdXNlZFJlZ2lzdGVyMTsKLSAgICAgICAgICAg
ICAgICBHUFJSZWcgdXNlZFJlZ2lzdGVyMjsKLSAgICAgICAgICAgICAgICBpZiAoZXhpdC5tX2pz
VmFsdWVTb3VyY2UuaXNBZGRyZXNzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgdXNlZFJlZ2lz
dGVyMSA9IGV4aXQubV9qc1ZhbHVlU291cmNlLmJhc2UoKTsKLSAgICAgICAgICAgICAgICAgICAg
dXNlZFJlZ2lzdGVyMiA9IEludmFsaWRHUFJSZWc7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVyMSA9IGV4aXQubV9qc1ZhbHVlU291cmNl
LnBheWxvYWRHUFIoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGV4aXQubV9qc1ZhbHVlU291
cmNlLmhhc0tub3duVGFnKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXIy
ID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICAgICAgdXNlZFJlZ2lzdGVyMiA9IGV4aXQubV9qc1ZhbHVlU291cmNlLnRhZ0dQUigp
OwotICAgICAgICAgICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgICAgICAgICAgR1BSUmVnIHNj
cmF0Y2gxOwotICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoMjsKLSNpZiBVU0UoSlNWQUxV
RTY0KQotICAgICAgICAgICAgICAgIHNjcmF0Y2gxID0gQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RT
Y3JhdGNoR1BSKHVzZWRSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgc2NyYXRjaDIgPSBBc3Nl
bWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIodXNlZFJlZ2lzdGVyLCBzY3JhdGNoMSk7Ci0j
ZWxzZQotICAgICAgICAgICAgICAgIHNjcmF0Y2gxID0gQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RT
Y3JhdGNoR1BSKHVzZWRSZWdpc3RlcjEsIHVzZWRSZWdpc3RlcjIpOwotICAgICAgICAgICAgICAg
IHNjcmF0Y2gyID0gQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKHVzZWRSZWdpc3Rl
cjEsIHVzZWRSZWdpc3RlcjIsIHNjcmF0Y2gxKTsKLSNlbmRpZgotCi0gICAgICAgICAgICAgICAg
aWYgKGlzQVJNNjQoKSkgewotICAgICAgICAgICAgICAgICAgICBqaXQucHVzaFRvU2F2ZShzY3Jh
dGNoMSk7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5wdXNoVG9TYXZlKHNjcmF0Y2gyKTsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBqaXQucHVzaChzY3Jh
dGNoMSk7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5wdXNoKHNjcmF0Y2gyKTsKLSAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBHUFJSZWcgdmFsdWU7Ci0gICAgICAgICAgICAg
ICAgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmlzQWRkcmVzcygpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHZhbHVlID0gc2NyYXRjaDE7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5sb2FkUHRy
KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3Mo
KSksIHZhbHVlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
dmFsdWUgPSBleGl0Lm1fanNWYWx1ZVNvdXJjZS5wYXlsb2FkR1BSKCk7Ci0KLSAgICAgICAgICAg
ICAgICBqaXQubG9hZDMyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyh2YWx1ZSwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaDEpOwotICAgICAgICAgICAgICAgIGppdC5zdG9y
ZTMyKHNjcmF0Y2gxLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQo
KSk7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgICAgICBqaXQubG9hZDgoQXNzZW1i
bHlIZWxwZXJzOjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6OmluZGV4aW5nVHlwZUFuZE1pc2NPZmZz
ZXQoKSksIHNjcmF0Y2gxKTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgaml0LmxvYWQ4KEFzc2Vt
Ymx5SGVscGVyczo6QWRkcmVzcyhzY3JhdGNoMSwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVJbmNs
dWRpbmdIaXN0b3J5T2Zmc2V0KCkpLCBzY3JhdGNoMSk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAg
ICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgc2NyYXRjaDIpOwot
ICAgICAgICAgICAgICAgIGppdC5sc2hpZnQzMihzY3JhdGNoMSwgc2NyYXRjaDIpOwotICAgICAg
ICAgICAgICAgIGppdC5vcjMyKHNjcmF0Y2gyLCBBc3NlbWJseUhlbHBlcnM6OkFic29sdXRlQWRk
cmVzcyhhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkFycmF5TW9kZXMoKSkpOwotCi0gICAgICAgICAg
ICAgICAgaWYgKGlzQVJNNjQoKSkgewotICAgICAgICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0
b3JlKHNjcmF0Y2gyKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3Jh
dGNoMSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaml0
LnBvcChzY3JhdGNoMik7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5wb3Aoc2NyYXRjaDEpOwot
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIENvZGVCbG9jayogcHJvZmlsZWRDb2RlQmxv
Y2sgPSBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKGNvZGVP
cmlnaW4sIGJhc2VsaW5lQ29kZUJsb2NrKTsKKyAgICAgICAgICAgIGlmIChBcnJheVByb2ZpbGUq
IGFycmF5UHJvZmlsZSA9IHByb2ZpbGVkQ29kZUJsb2NrLT5nZXRBcnJheVByb2ZpbGUoY29kZU9y
aWdpbi5ieXRlY29kZUluZGV4KSkgeworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UuZXZhbHVhdGUoY3B1KS5hc0NlbGwoKS0+c3RydWN0
dXJlKHZtKTsKKyAgICAgICAgICAgICAgICBhcnJheVByb2ZpbGUtPm9ic2VydmVTdHJ1Y3R1cmUo
c3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBhcnJheVByb2ZpbGUtPm9ic2VydmVBcnJheU1v
ZGUoYXJyYXlNb2RlRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCi0gICAgICAgIGlmIChNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHByb2Zp
bGUgPSBleGl0Lm1fdmFsdWVQcm9maWxlKSB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAg
ICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0FkZHJlc3MoKSkgewotICAgICAgICAgICAg
ICAgIC8vIFdlIGNhbid0IGJlIHN1cmUgdGhhdCB3ZSBoYXZlIGEgc3BhcmUgcmVnaXN0ZXIuIFNv
IHVzZSB0aGUgdGFnVHlwZU51bWJlclJlZ2lzdGVyLAotICAgICAgICAgICAgICAgIC8vIHNpbmNl
IHdlIGtub3cgaG93IHRvIHJlc3RvcmUgaXQuCi0gICAgICAgICAgICAgICAgaml0LmxvYWQ2NChB
c3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYXNBZGRyZXNzKCkp
LCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgIHByb2Zp
bGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6dGFnVHlwZU51bWJl
clJlZ2lzdGVyKSk7Ci0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tNjQoVGFnVHlwZU51bWJlciksIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cik7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBv
cnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKGV4aXQubV9qc1ZhbHVlU291cmNlLmdwcigpKSk7Ci0j
ZWxzZSAvLyBub3QgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1
ZVNvdXJjZS5pc0FkZHJlc3MoKSkgewotICAgICAgICAgICAgICAgIC8vIFNhdmUgYSByZWdpc3Rl
ciBzbyB3ZSBjYW4gdXNlIGl0LgotICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoUGF5bG9h
ZCA9IEFzc2VtYmx5SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUihleGl0Lm1fanNWYWx1ZVNvdXJj
ZS5iYXNlKCkpOwotICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoVGFnID0gQXNzZW1ibHlI
ZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGV4aXQubV9qc1ZhbHVlU291cmNlLmJhc2UoKSwgc2Ny
YXRjaFBheWxvYWQpOwotICAgICAgICAgICAgICAgIGppdC5wdXNoVG9TYXZlKHNjcmF0Y2hQYXls
b2FkKTsKLSAgICAgICAgICAgICAgICBqaXQucHVzaFRvU2F2ZShzY3JhdGNoVGFnKTsKLQotICAg
ICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHNjcmF0Y2goc2NyYXRjaFRhZywgc2NyYXRjaFBheWxv
YWQpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGppdC5sb2FkVmFsdWUoZXhp
dC5tX2pzVmFsdWVTb3VyY2UuYXNBZGRyZXNzKCksIHNjcmF0Y2gpOwotICAgICAgICAgICAgICAg
IHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgc2NyYXRjaCk7Ci0gICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3JhdGNoVGFnKTsKLSAgICAgICAg
ICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2hQYXlsb2FkKTsKLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaGFzS25vd25UYWcoKSkgewotICAgICAgICAg
ICAgICAgIEdQUlJlZyBzY3JhdGNoVGFnID0gQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNo
R1BSKGV4aXQubV9qc1ZhbHVlU291cmNlLnBheWxvYWRHUFIoKSk7Ci0gICAgICAgICAgICAgICAg
aml0LnB1c2hUb1NhdmUoc2NyYXRjaFRhZyk7Ci0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZXhpdC5tX2pzVmFsdWVTb3VyY2UudGFnKCkpLCBz
Y3JhdGNoVGFnKTsKLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZShzY3JhdGNoVGFn
LCBleGl0Lm1fanNWYWx1ZVNvdXJjZS5wYXlsb2FkR1BSKCkpOwotICAgICAgICAgICAgICAgIHBy
b2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgdmFsdWUpOwotICAgICAgICAgICAgICAgIGppdC5w
b3BUb1Jlc3RvcmUoc2NyYXRjaFRhZyk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
ICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIGV4aXQubV9qc1ZhbHVlU291cmNlLnJl
Z3MoKSk7Ci0jZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgfQorICAgICAgICBpZiAo
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBwcm9maWxlID0gZXhpdC5tX3ZhbHVlUHJvZmls
ZSkKKyAgICAgICAgICAgIHByb2ZpbGUucmVwb3J0VmFsdWUoZXhpdC5tX2pzVmFsdWVTb3VyY2Uu
ZXZhbHVhdGUoY3B1KSk7CiAgICAgfQogCi0gICAgLy8gV2hhdCBmb2xsb3dzIGlzIGFuIGludGVu
dGlvbmFsbHkgc2ltcGxlIE9TUiBleGl0IGltcGxlbWVudGF0aW9uIHRoYXQgZ2VuZXJhdGVzCi0g
ICAgLy8gZmFpcmx5IHBvb3IgY29kZSBidXQgaXMgdmVyeSBlYXN5IHRvIGhhY2suIEluIHBhcnRp
Y3VsYXIsIGl0IGR1bXBzIGFsbCBzdGF0ZSB0aGF0Ci0gICAgLy8gbmVlZHMgY29udmVyc2lvbiBp
bnRvIGEgc2NyYXRjaCBidWZmZXIgc28gdGhhdCBpbiBzdGVwIDYsIHdoZXJlIHdlIGFjdHVhbGx5
IGRvIHRoZQotICAgIC8vIGNvbnZlcnNpb25zLCB3ZSBrbm93IHRoYXQgYWxsIHRlbXAgcmVnaXN0
ZXJzIGFyZSBmcmVlIHRvIHVzZSBhbmQgdGhlIHZhcmlhYmxlIGlzCi0gICAgLy8gZGVmaW5pdGVs
eSBpbiBhIHdlbGwta25vd24gc3BvdCBpbiB0aGUgc2NyYXRjaCBidWZmZXIgcmVnYXJkbGVzcyBv
ZiB3aGV0aGVyIGl0IGhhZAotICAgIC8vIG9yaWdpbmFsbHkgYmVlbiBpbiBhIHJlZ2lzdGVyIG9y
IHNwaWxsZWQuIFRoaXMgYWxsb3dzIHVzIHRvIGRlY291cGxlICJ3aGVyZSB3YXMKLSAgICAvLyB0
aGUgdmFyaWFibGUiIGZyb20gImhvdyB3YXMgaXQgcmVwcmVzZW50ZWQiLiBDb25zaWRlciB0aGF0
IHRoZQotICAgIC8vIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHJlY292ZXJ5OiBpdCB0ZWxscyB1
cyB0aGF0IHRoZSB2YWx1ZSBpcyBpbiBhCi0gICAgLy8gcGFydGljdWxhciBwbGFjZSBhbmQgdGhh
dCB0aGF0IHBsYWNlIGhvbGRzIGFuIHVuYm94ZWQgaW50MzIuIFdlIGhhdmUgdHdvIGRpZmZlcmVu
dAotICAgIC8vIHBsYWNlcyB0aGF0IGEgdmFsdWUgY291bGQgYmUgKGRpc3BsYWNlZCwgcmVnaXN0
ZXIpIGFuZCBhIGJ1bmNoIG9mIGRpZmZlcmVudAotICAgIC8vIHdheXMgb2YgcmVwcmVzZW50aW5n
IGEgdmFsdWUuIFRoZSBudW1iZXIgb2YgcmVjb3ZlcmllcyBpcyB0d28gKiBhIGJ1bmNoLiBUaGUg
Y29kZQotICAgIC8vIGJlbG93IG1lYW5zIHRoYXQgd2UgaGF2ZSB0byBoYXZlIHR3byArIGEgYnVu
Y2ggY2FzZXMgcmF0aGVyIHRoYW4gdHdvICogYSBidW5jaC4KLSAgICAvLyBPbmNlIHdlIGhhdmUg
bG9hZGVkIHRoZSB2YWx1ZSBmcm9tIHdoZXJldmVyIGl0IHdhcywgdGhlIHJlYm94aW5nIGlzIHRo
ZSBzYW1lCi0gICAgLy8gcmVnYXJkbGVzcyBvZiBpdHMgbG9jYXRpb24uIExpa2V3aXNlLCBiZWZv
cmUgd2UgZG8gdGhlIHJlYm94aW5nLCB0aGUgd2F5IHdlIGdldCB0bwotICAgIC8vIHRoZSB2YWx1
ZSAoaS5lLiB3aGVyZSB3ZSBsb2FkIGl0IGZyb20pIGlzIHRoZSBzYW1lIHJlZ2FyZGxlc3Mgb2Yg
aXRzIHR5cGUuIEJlY2F1c2UKLSAgICAvLyB0aGUgY29kZSBiZWxvdyBhbHdheXMgZHVtcHMgZXZl
cnl0aGluZyBpbnRvIGEgc2NyYXRjaCBidWZmZXIgZmlyc3QsIHRoZSB0d28KLSAgICAvLyBxdWVz
dGlvbnMgYmVjb21lIG9ydGhvZ29uYWwsIHdoaWNoIHNpbXBsaWZpZXMgYWRkaW5nIG5ldyB0eXBl
cyBhbmQgYWRkaW5nIG5ldwotICAgIC8vIGxvY2F0aW9ucy4KLSAgICAvLwotICAgIC8vIFRoaXMg
cmFpc2VzIHRoZSBxdWVzdGlvbjogZG9lcyB1c2luZyBzdWNoIGEgc3Vib3B0aW1hbCBpbXBsZW1l
bnRhdGlvbiBvZiBPU1IgZXhpdCwKLSAgICAvLyB3aGVyZSB3ZSBhbHdheXMgZW1pdCBjb2RlIHRv
IGR1bXAgYWxsIHN0YXRlIGludG8gYSBzY3JhdGNoIGJ1ZmZlciBvbmx5IHRvIHRoZW4KLSAgICAv
LyBkdW1wIGl0IHJpZ2h0IGJhY2sgaW50byB0aGUgc3RhY2ssIGh1cnQgdXMgaW4gYW55IHdheT8g
VGhlIGFzbndlciBpcyB0aGF0IE9TUiBleGl0cwotICAgIC8vIGFyZSByYXJlLiBPdXIgdGllcmlu
ZyBzdHJhdGVneSBlbnN1cmVzIHRoaXMuIFRoaXMgaXMgYmVjYXVzZSBpZiBhbiBPU1IgZXhpdCBp
cwotICAgIC8vIHRha2VuIG1vcmUgdGhhbiB+MTAwIHRpbWVzLCB3ZSBqZXR0aXNvbiB0aGUgREZH
IGNvZGUgYmxvY2sgYWxvbmcgd2l0aCBhbGwgb2YgaXRzCi0gICAgLy8gZXhpdHMuIEl0IGlzIGlt
cG9zc2libGUgZm9yIGFuIE9TUiBleGl0IC0gaS5lLiB0aGUgY29kZSB3ZSBjb21waWxlIGJlbG93
IC0gdG8KLSAgICAvLyBleGVjdXRlIGZyZXF1ZW50bHkgZW5vdWdoIGZvciB0aGUgY29kZWdlbiB0
byBtYXR0ZXIgdGhhdCBtdWNoLiBJdCBwcm9iYWJseSBtYXR0ZXJzCi0gICAgLy8gZW5vdWdoIHRo
YXQgd2UgZG9uJ3Qgd2FudCB0byB0dXJuIHRoaXMgaW50byBzb21lIHN1cGVyLXNsb3cgZnVuY3Rp
b24gY2FsbCwgYnV0IHNvCi0gICAgLy8gbG9uZyBhcyB3ZSdyZSBnZW5lcmF0aW5nIHN0cmFpZ2h0
LWxpbmUgY29kZSwgdGhhdCBjb2RlIGNhbiBiZSBwcmV0dHkgYmFkLiBBbHNvCi0gICAgLy8gYmVj
YXVzZSB3ZSB0ZW5kIHRvIGV4aXQgb25seSBhbG9uZyBvbmUgT1NSIGV4aXQgZnJvbSBhbnkgREZH
IGNvZGUgYmxvY2sgLSB0aGF0J3MgYW4KLSAgICAvLyBlbXBpcmljYWwgcmVzdWx0IHRoYXQgd2Un
cmUgZXh0cmVtZWx5IGNvbmZpZGVudCBhYm91dCAtIHRoZSBjb2RlIHNpemUgb2YgdGhpcwotICAg
IC8vIGRvZXNuJ3QgbWF0dGVyIG11Y2guIEhlbmNlIGFueSBhdHRlbXB0IHRvIG9wdGltaXplIHRo
ZSBjb2RlZ2VuIGhlcmUgaXMganVzdCBwdXJlbHkKLSAgICAvLyBoYXJtZnVsIHRvIHRoZSBzeXN0
ZW06IGl0IHByb2JhYmx5IHdvbid0IHJlZHVjZSBlaXRoZXIgbmV0IG1lbW9yeSB1c2FnZSBvciBu
ZXQKLSAgICAvLyBleGVjdXRpb24gdGltZS4gSXQgd2lsbCBvbmx5IHByZXZlbnQgdXMgZnJvbSBj
bGVhbmx5IGRlY291cGxpbmcgIndoZXJlIHdhcyB0aGUKLSAgICAvLyB2YXJpYWJsZSIgZnJvbSAi
aG93IHdhcyBpdCByZXByZXNlbnRlZCIsIHdoaWNoIHdpbGwgbWFrZSBpdCBtb3JlIGRpZmZpY3Vs
dCB0byBhZGQKLSAgICAvLyBmZWF0dXJlcyBpbiB0aGUgZnV0dXJlIGFuZCBpdCB3aWxsIG1ha2Ug
aXQgaGFyZGVyIHRvIHJlYXNvbiBhYm91dCBidWdzLgorI2lmIDEgLy9tbGFtIFRFU1QgPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KIAotICAgIC8vIFNhdmUgYWxsIHN0YXRlIGZyb20gR1BScyBpbnRvIHRo
ZSBzY3JhdGNoIGJ1ZmZlci4KLQotICAgIFNjcmF0Y2hCdWZmZXIqIHNjcmF0Y2hCdWZmZXIgPSB2
bS5zY3JhdGNoQnVmZmVyRm9yU2l6ZShzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogb3BlcmFuZHMu
c2l6ZSgpKTsKLSAgICBFbmNvZGVkSlNWYWx1ZSogc2NyYXRjaCA9IHNjcmF0Y2hCdWZmZXIgPyBz
dGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSkg
OiAwOwotCi0gICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNpemUo
KTsgKytpbmRleCkgewotICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9w
ZXJhbmRzW2luZGV4XTsKLQotICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7
Ci0gICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6Ci0gICAgICAgIGNhc2UgVW5ib3hlZENl
bGxJbkdQUjoKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBjYXNlIEluR1BSOgotICAgICAg
ICBjYXNlIFVuYm94ZWRJbnQ1MkluR1BSOgotICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ1
MkluR1BSOgotICAgICAgICAgICAgaml0LnN0b3JlNjQocmVjb3ZlcnkuZ3ByKCksIHNjcmF0Y2gg
KyBpbmRleCk7Ci0gICAgICAgICAgICBicmVhazsKLSNlbHNlCi0gICAgICAgIGNhc2UgVW5ib3hl
ZEJvb2xlYW5JbkdQUjoKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAg
IHJlY292ZXJ5LmdwcigpLAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZh
bHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgSW5QYWlyOgotICAgICAg
ICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgcmVjb3ZlcnkudGFnR1BSKCksCi0g
ICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2Ny
YXRjaCArIGluZGV4KS0+YXNCaXRzLnRhZyk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAg
ICAgICAgICAgICAgICByZWNvdmVyeS5wYXlsb2FkR1BSKCksCi0gICAgICAgICAgICAgICAgJmJp
dHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNC
aXRzLnBheWxvYWQpOwotICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKKyAgICAvLyBEbyBhbGwg
ZGF0YSBmb3JtYXQgY29udmVyc2lvbnMgYW5kIHN0b3JlIHRoZSByZXN1bHRzIGludG8gdGhlIHN0
YWNrLgorICAgIC8vIE5vdGU6IHdlIG5lZWQgdG8gcmVjb3ZlciB2YWx1ZXMgYmVmb3JlIHdlIHJl
c3RvcmUgY2FsbGVlIHNhdmUgcmVnaXN0ZXJzIGJlbG93CisgICAgLy8gYmVjYXVzZSB0aGUgdGhl
IHJlY292ZXJ5IG1heSByZWx5IG9uIHZhbHVlcyBpbiBzb21lIG9mIHRob3NlIHJlZ2lzdGVycy4K
IAotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICBp
ZiAoZ2V0ZW52KCJ2ZXJib3NlIikpIHsKKyAgICAgICAgZGF0YUxvZygiQkVGT1JFIHJlY292ZXIg
dmFsdWVzIDI6XG4iKTsKKyAgICAgICAgbWxhbUR1bXBDUFUoY29udGV4dCk7CiAgICAgfQotCi0g
ICAgLy8gQW5kIHZvaWxhLCBhbGwgR1BScyBhcmUgZnJlZSB0byByZXVzZS4KLQotICAgIC8vIFNh
dmUgYWxsIHN0YXRlIGZyb20gRlBScyBpbnRvIHRoZSBzY3JhdGNoIGJ1ZmZlci4KLQogICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7ICsraW5kZXgpIHsK
ICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5kc1tpbmRleF07
CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZWcgPSBvcGVyYW5kcy52aXJ0dWFsUmVnaXN0ZXJG
b3JJbmRleChpbmRleCk7CiAKLSAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkg
ewotICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoKLSAgICAgICAgY2FzZSBJbkZQUjoK
LSAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3Jh
dGNoICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmVEb3Vi
bGUocmVjb3ZlcnkuZnByKCksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1Qw
KSk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBOb3csIGFsbCBGUFJzIGFyZSBhbHNv
IGZyZWUuCisgICAgICAgIGlmIChyZWcuaXNMb2NhbCgpICYmIHJlZy50b0xvY2FsKCkgPCBzdGF0
aWNfY2FzdDxpbnQ+KGJhc2VsaW5lQ29kZUJsb2NrLT5jYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxS
ZWdpc3RlcnMoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKIAotICAgIC8vIFNhdmUgYWxsIHN0
YXRlIGZyb20gdGhlIHN0YWNrIGludG8gdGhlIHNjcmF0Y2ggYnVmZmVyLiBGb3Igc2ltcGxpY2l0
eSB3ZQotICAgIC8vIGRvIHRoaXMgZXZlbiBmb3Igc3RhdGUgdGhhdCdzIGFscmVhZHkgaW4gdGhl
IHJpZ2h0IHBsYWNlIG9uIHRoZSBzdGFjay4KLSAgICAvLyBJdCBtYWtlcyB0aGluZ3Mgc2ltcGxl
ciBsYXRlci4KKyAgICAgICAgaW50IG9wZXJhbmQgPSByZWcub2Zmc2V0KCk7CiAKLSAgICBmb3Ig
KHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4KSB7Ci0g
ICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhdOwor
ICAgICAgICBhdXRvIHJlY292ZXJ5VGVjaE5hbWUgPSBbXSAoVmFsdWVSZWNvdmVyeVRlY2huaXF1
ZSB2KSAtPiBjb25zdCBjaGFyKiB7CisgICAgICAgICAgICBzd2l0Y2ggKHYpIHsKKyAgICAgICAg
ICAgIGNhc2UgSW5HUFI6IHJldHVybiAiSW5HUFIiOworICAgICAgICAgICAgY2FzZSBVbmJveGVk
SW50MzJJbkdQUjogcmV0dXJuICJVbmJveGVkSW50MzJJbkdQUiI7CisgICAgICAgICAgICBjYXNl
IFVuYm94ZWRJbnQ1MkluR1BSOiByZXR1cm4gIlVuYm94ZWRJbnQ1MkluR1BSIjsKKyAgICAgICAg
ICAgIGNhc2UgVW5ib3hlZFN0cmljdEludDUySW5HUFI6IHJldHVybiAiVW5ib3hlZFN0cmljdElu
dDUySW5HUFIiOworICAgICAgICAgICAgY2FzZSBVbmJveGVkQm9vbGVhbkluR1BSOiByZXR1cm4g
IlVuYm94ZWRCb29sZWFuSW5HUFIiOworICAgICAgICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BS
OiByZXR1cm4gIlVuYm94ZWRDZWxsSW5HUFIiOworICAgICAgICAjaWYgVVNFKEpTVkFMVUUzMl82
NCkKKyAgICAgICAgICAgIGNhc2UgSW5QYWlyOiByZXR1cm4gIkluUGFpciI7CisgICAgICAgICNl
bmRpZgorICAgICAgICAgICAgY2FzZSBJbkZQUjogcmV0dXJuICJJbkZQUiI7CisgICAgICAgICAg
ICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjogcmV0dXJuICJVbmJveGVkRG91YmxlSW5GUFIiOwor
ICAgICAgICAgICAgLy8gSXQncyBpbiB0aGUgc3RhY2ssIGJ1dCBhdCBhIGRpZmZlcmVudCBsb2Nh
dGlvbi4KKyAgICAgICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOiByZXR1cm4gIkRpc3Bs
YWNlZEluSlNTdGFjayI7CisgICAgICAgICAgICAvLyBJdCdzIGluIHRoZSBzdGFjaywgYXQgYSBk
aWZmZXJlbnQgbG9jYXRpb24sIGFuZCBpdCdzIHVuYm94ZWQuCisgICAgICAgICAgICBjYXNlIElu
dDMyRGlzcGxhY2VkSW5KU1N0YWNrOiByZXR1cm4gIkludDMyRGlzcGxhY2VkSW5KU1N0YWNrIjsK
KyAgICAgICAgICAgIGNhc2UgSW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6IHJldHVybiAiSW50NTJE
aXNwbGFjZWRJbkpTU3RhY2siOworICAgICAgICAgICAgY2FzZSBTdHJpY3RJbnQ1MkRpc3BsYWNl
ZEluSlNTdGFjazogcmV0dXJuICJTdHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjayI7CisgICAg
ICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazogcmV0dXJuICJEb3VibGVEaXNw
bGFjZWRJbkpTU3RhY2siOworICAgICAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNr
OiByZXR1cm4gIkNlbGxEaXNwbGFjZWRJbkpTU3RhY2siOworICAgICAgICAgICAgY2FzZSBCb29s
ZWFuRGlzcGxhY2VkSW5KU1N0YWNrOiByZXR1cm4gIkJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2si
OworICAgICAgICAgICAgLy8gSXQncyBhbiBBcmd1bWVudHMgb2JqZWN0LiBUaGlzIGFyaXNlcyBi
ZWNhdXNlIG9mIHRoZSBzaW1wbGlmaWVkIGFyZ3VtZW50cyBzaW1wbGlmaWNhdGlvbiBkb25lIGJ5
IHRoZSBERkcuCisgICAgICAgICAgICBjYXNlIERpcmVjdEFyZ3VtZW50c1RoYXRXZXJlTm90Q3Jl
YXRlZDogcmV0dXJuICJEaXJlY3RBcmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQiOworICAgICAg
ICAgICAgY2FzZSBDbG9uZWRBcmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQ6IHJldHVybiAiQ2xv
bmVkQXJndW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkIjsKKyAgICAgICAgICAgIC8vIEl0J3MgYSBj
b25zdGFudC4KKyAgICAgICAgICAgIGNhc2UgQ29uc3RhbnQ6IHJldHVybiAiQ29uc3RhbnQiOwor
ICAgICAgICAgICAgLy8gRG9uJ3Qga25vdyBob3cgdG8gcmVjb3ZlciBpdC4KKyAgICAgICAgICAg
IGNhc2UgRG9udEtub3c6IHJldHVybiAiRG9udEtub3ciOworICAgICAgICAgICAgfTsKKyAgICAg
ICAgfTsKKyAgICAgICAgYXV0byBuYW1lID0gcmVjb3ZlcnlUZWNoTmFtZShyZWNvdmVyeS50ZWNo
bmlxdWUoKSk7CisgICAgICAgIG1sYW1OYW1lID0gbmFtZTsKIAogICAgICAgICBzd2l0Y2ggKHJl
Y292ZXJ5LnRlY2huaXF1ZSgpKSB7CiAgICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOgot
ICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgIGNhc2UgQm9vbGVh
bkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFj
azoKLSAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6Ci0jaWYgVVNFKEpTVkFM
VUU2NCkKLSAgICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2Fz
ZSBTdHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIGppdC5sb2FkNjQo
QXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwg
R1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAs
IHNjcmF0Y2ggKyBpbmRleCk7Ci0gICAgICAgICAgICBicmVhazsKLSNlbHNlCi0gICAgICAgICAg
ICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKHJl
Y292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdU
MCk7Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVs
cGVyczo6cGF5bG9hZEZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksCi0gICAgICAgICAg
ICAgICAgR1BSSW5mbzo6cmVnVDEpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAg
ICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCi0gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnRhZyk7Ci0g
ICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSwK
LSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihz
Y3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7CisgICAgICAgICAgICBmcmFtZS5zZXRP
cGVyYW5kKG9wZXJhbmQsIGV4ZWMtPnIocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLmpzVmFs
dWUoKSk7CiAgICAgICAgICAgICBicmVhazsKLSNlbmRpZgogCi0gICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgIGNhc2UgSW5GUFI6CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQs
IGNwdS5mcHI8SlNWYWx1ZT4ocmVjb3ZlcnkuZnByKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgfQogCi0gICAgLy8gTmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgc3RhY2sg
cG9pbnRlciBhY2NvdW50cyBmb3IgdGhlIHdvcnN0LWNhc2Ugc3RhY2sgdXNhZ2UgYXQgZXhpdC4g
VGhpcwotICAgIC8vIGNvdWxkIHRvYXN0IHNvbWUgc3RhY2sgdGhhdCB0aGUgREZHIHVzZWQuIFdl
IG5lZWQgdG8gZG8gaXQgYmVmb3JlIHN0b3JpbmcgdG8gc3RhY2sgb2Zmc2V0cwotICAgIC8vIHVz
ZWQgYnkgYmFzZWxpbmUuCi0gICAgaml0LmFkZFB0cigKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoCi0gICAgICAgICAgICAtaml0LmNvZGVCbG9jaygpLT5qaXRDb2RlKCktPmRm
Z0NvbW1vbigpLT5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0ICogc2l6ZW9mKFJlZ2lzdGVy
KSksCi0gICAgICAgIENDYWxsSGVscGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVs
cGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotCi0gICAgLy8gUmVzdG9yZSB0aGUgREZHIGNh
bGxlZSBzYXZlcyBhbmQgdGhlbiBzYXZlIHRoZSBvbmVzIHRoZSBiYXNlbGluZSBKSVQgdXNlcy4K
LSAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwotICAgIGppdC5lbWl0U2F2ZUNhbGxl
ZVNhdmVzRm9yKGppdC5iYXNlbGluZUNvZGVCbG9jaygpKTsKLQotICAgIC8vIFRoZSB0YWcgcmVn
aXN0ZXJzIGFyZSBuZWVkZWQgdG8gbWF0ZXJpYWxpemUgcmVjb3ZlcmllcyBiZWxvdy4KLSAgICBq
aXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsKLQotICAgIGlmIChleGl0Lmlz
RXhjZXB0aW9uSGFuZGxlcigpKQotICAgICAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9WTUVudHJ5
RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bSk7Ci0KLSAgICAvLyBEbyBhbGwgZGF0YSBmb3JtYXQg
Y29udmVyc2lvbnMgYW5kIHN0b3JlIHRoZSByZXN1bHRzIGludG8gdGhlIHN0YWNrLgotCi0gICAg
Zm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNpemUoKTsgKytpbmRleCkg
ewotICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9wZXJhbmRzW2luZGV4
XTsKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlZyA9IG9wZXJhbmRzLnZpcnR1YWxSZWdpc3Rl
ckZvckluZGV4KGluZGV4KTsKLQotICAgICAgICBpZiAocmVnLmlzTG9jYWwoKSAmJiByZWcudG9M
b2NhbCgpIDwgc3RhdGljX2Nhc3Q8aW50PihqaXQuYmFzZWxpbmVDb2RlQmxvY2soKS0+Y2FsbGVl
U2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpKQotICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgaW50IG9wZXJhbmQgPSByZWcub2Zmc2V0KCk7Ci0KLSAgICAgICAgc3dpdGNoIChy
ZWNvdmVyeS50ZWNobmlxdWUoKSkgewotICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoK
LSAgICAgICAgY2FzZSBJbkZQUjoKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNlIElu
R1BSOgotICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6Ci0gICAgICAgIGNhc2UgQ2VsbERp
c3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNr
OgotICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1Qw
KTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBl
cnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgaWYgKGdldGVudigidmVyYm9z
ZSIpKSBkYXRhTG9nKCIgICBSZXN0b3JpbmcgSW5HUFIgZnJvbSByZWdpc3RlciAiLCBjcHUuZ3By
TmFtZShyZWNvdmVyeS5ncHIoKSksICI6ICIsIFJhd1BvaW50ZXIoY3B1Lmdwcjx2b2lkKj4ocmVj
b3ZlcnkuZ3ByKCkpKSwgIlxuIik7CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJh
bmQsIGNwdS5ncHI8SlNWYWx1ZT4ocmVjb3ZlcnkuZ3ByKCkpKTsKICAgICAgICAgICAgIGJyZWFr
OwotI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCisjZWxzZQogICAgICAgICBjYXNlIEluUGFp
cjoKLSAgICAgICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2Fz
dDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnRhZywK
LSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQubG9hZDMy
KAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+
KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAotICAgICAgICAgICAgICAgIEdQUklu
Zm86OnJlZ1QxKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEdQ
UkluZm86OnJlZ1QwLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKG9w
ZXJhbmQpKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEdQUklu
Zm86OnJlZ1QxLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihv
cGVyYW5kKSk7CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFsdWUo
Y3B1LmdwcjxpbnQzMl90PihyZWNvdmVyeS50YWdHUFIoKSksIGNwdS5ncHI8aW50MzJfdD4ocmVj
b3ZlcnkucGF5bG9hZEdQUigpKSkpOwogICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKIAogICAg
ICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5k
KG9wZXJhbmQsIEpTVmFsdWUoY3B1LmdwcjxKU0NlbGwqPihyZWNvdmVyeS5ncHIoKSkpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazoK
LSAgICAgICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQs
Ci0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3Jl
MzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6Q2VsbFRhZyksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3Bl
cmFuZCkpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgR1BSSW5m
bzo6cmVnVDAsCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9w
ZXJhbmQpKTsKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShl
eGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS51bmJveGVkQ2VsbCgpKSk7CiAgICAg
ICAgICAgICBicmVhazsKIAorI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGNhc2UgVW5i
b3hlZEJvb2xlYW5JbkdQUjoKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwg
anNCb29sZWFuKGNwdS5ncHI8Ym9vbD4ocmVjb3ZlcnkuZ3ByKCkpKSk7CisgICAgICAgICAgICBi
cmVhazsKKyNlbmRpZgorCiAgICAgICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoK
LSAgICAgICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQs
Ci0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3Jl
MzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6Qm9vbGVhblRhZyksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Io
b3BlcmFuZCkpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgR1BS
SW5mbzo6cmVnVDAsCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9y
KG9wZXJhbmQpKTsKKy8vICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBqc0Jv
b2xlYW4oZXhlYy0+cihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSkudW5ib3hlZEJvb2xlYW4o
KSkpOworICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBleGVjLT5yKHJlY292
ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS5qc1ZhbHVlKCkpOwogICAgICAgICAgICAgYnJlYWs7Ci0j
ZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAogICAgICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BS
OgorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVlKGNwdS5ncHI8
aW50MzJfdD4ocmVjb3ZlcnkuZ3ByKCkpKSk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAg
ICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAg
ICAgICAgICBqaXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOwotICAg
ICAgICAgICAgaml0Lnplcm9FeHRlbmQzMlRvUHRyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpy
ZWdUMCk7Ci0gICAgICAgICAgICBqaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJl
Z1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwotI2Vsc2UKLSAgICAg
ICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQsCi0gICAg
ICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0g
ICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50
MzJUYWcpLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKG9wZXJhbmQp
KTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJl
Z1QwLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5k
KSk7Ci0jZW5kaWYKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1
ZShleGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS51bmJveGVkSW50MzIoKSkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNlIFVu
Ym94ZWRJbnQ1MkluR1BSOgorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBK
U1ZhbHVlKGNwdS5ncHI8aW50NjRfdD4ocmVjb3ZlcnkuZ3ByKCkpID4+IEpTVmFsdWU6OmludDUy
U2hpZnRBbW91bnQpKTsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgSW50NTJE
aXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBqaXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRl
eCwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnJzaGlmdDY0KAotICAgICAgICAg
ICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRB
bW91bnQpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuYm94SW50NTIoR1BSSW5m
bzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgRlBSSW5mbzo6ZnBSZWdU
MCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxw
ZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQo
b3BlcmFuZCwgSlNWYWx1ZShleGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS51bmJv
eGVkSW50NTIoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBVbmJveGVk
U3RyaWN0SW50NTJJbkdQUjoKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwg
SlNWYWx1ZShjcHUuZ3ByPGludDY0X3Q+KHJlY292ZXJ5LmdwcigpKSkpOworICAgICAgICAgICAg
YnJlYWs7CisKICAgICAgICAgY2FzZSBTdHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAg
ICAgICAgICAgIGppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7Ci0g
ICAgICAgICAgICBqaXQuYm94SW50NTIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBH
UFJJbmZvOjpyZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmU2
NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsK
KyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShleGVjLT5yKHJl
Y292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS51bmJveGVkU3RyaWN0SW50NTIoKSkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAjZW5kaWYKIAogICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoK
KyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShwdXJpZnlOYU4o
Y3B1LmZwcihyZWNvdmVyeS5mcHIoKSkpKSk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAg
ICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIGppdC5tb3ZlKEFz
c2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpy
ZWdUMCk7Ci0gICAgICAgICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhHUFJJbmZvOjpyZWdUMCksIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgaml0LnB1
cmlmeU5hTihGUFJJbmZvOjpmcFJlZ1QwKTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAg
ICAgaml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAg
ICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRy
ZXNzRm9yKG9wZXJhbmQpKTsKLSNlbHNlCi0gICAgICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBS
SW5mbzo6ZnBSZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKLSNl
bmRpZgorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVlKHB1cmlm
eU5hTihleGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS51bmJveGVkRG91YmxlKCkp
KSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIENvbnN0YW50OgotI2lmIFVT
RShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBqaXQuc3RvcmU2NCgKLSAgICAgICAgICAgICAgICBB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUocmVjb3ZlcnkuY29u
c3RhbnQoKSkpLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcihv
cGVyYW5kKSk7Ci0jZWxzZQotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAg
ICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIocmVjb3ZlcnkuY29uc3RhbnQoKS50YWco
KSksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOwot
ICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJz
OjpUcnVzdGVkSW1tMzIocmVjb3ZlcnkuY29uc3RhbnQoKS5wYXlsb2FkKCkpLAotICAgICAgICAg
ICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7Ci0jZW5kaWYKKyAg
ICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgcmVjb3ZlcnkuY29uc3RhbnQoKSk7
CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIERpcmVjdEFyZ3VtZW50c1RoYXRX
ZXJlTm90Q3JlYXRlZDoKQEAgLTY4MywxMyArNjgwLDM0MSBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBp
bGVFeGl0KENDYWxsSGVscGVycyYgCiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBOZWVkIHRv
IGVuc3VyZSB0aGF0IHRoZSBzdGFjayBwb2ludGVyIGFjY291bnRzIGZvciB0aGUgd29yc3QtY2Fz
ZSBzdGFjayB1c2FnZSBhdCBleGl0LiBUaGlzCisgICAgLy8gY291bGQgdG9hc3Qgc29tZSBzdGFj
ayB0aGF0IHRoZSBERkcgdXNlZC4gV2UgbmVlZCB0byBkbyBpdCBiZWZvcmUgc3RvcmluZyB0byBz
dGFjayBvZmZzZXRzCisgICAgLy8gdXNlZCBieSBiYXNlbGluZS4KKyAgICBjcHUuc3AoKSA9IGNw
dS5mcDx1aW50OF90Kj4oKSAtIChjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPnJl
cXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4aXQgKiBzaXplb2YoUmVnaXN0ZXIpKTsKKworI2lmIE5V
TUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTID4gMAorICAgIC8vIFJlc3RvcmUgdGhlIERG
RyBjYWxsZWUgc2F2ZXMgYW5kIHRoZW4gc2F2ZSB0aGUgb25lcyB0aGUgYmFzZWxpbmUgSklUIHVz
ZXMuCisgICAgcmVzdG9yZUNhbGxlZVNhdmVzRm9yKGNvbnRleHQsIGNvZGVCbG9jayk7CisgICAg
c2F2ZUNhbGxlZVNhdmVzRm9yKGNvbnRleHQsIGJhc2VsaW5lQ29kZUJsb2NrKTsKKworICAgIC8v
IFRoZSB0YWcgcmVnaXN0ZXJzIGFyZSBuZWVkZWQgdG8gbWF0ZXJpYWxpemUgcmVjb3ZlcmllcyBi
ZWxvdy4KKyAgICBtYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKGNwdSk7CisKKyAgICBpZiAo
ZXhpdC5pc0V4Y2VwdGlvbkhhbmRsZXIoKSkKKyAgICAgICAgY29weUNhbGxlZVNhdmVzVG9WTUVu
dHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihjb250ZXh0LCB2bSk7CisjZW5kaWYgLy8gTlVNQkVS
X09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgPiAwCisKKyNlbHNlIC8vIG1sYW0gVEVTVCA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQorLy8KKy8vLy8gICAgU2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1ZmZl
ciA9IHZtLnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBvcGVy
YW5kcy5zaXplKCkpOworLy8gICAgRW5jb2RlZEpTVmFsdWUqIHNjcmF0Y2ggPSBvcGVyYW5kcy5z
aXplKCkgPyBuZXcgRW5jb2RlZEpTVmFsdWVbb3BlcmFuZHMuc2l6ZSgpXSA6IG51bGxwdHI7Cisv
LworLy8gICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNpemUoKTsg
KytpbmRleCkgeworLy8gICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3Bl
cmFuZHNbaW5kZXhdOworLy8KKy8vICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgp
KSB7CisvLyAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKKy8vICAgICAgICBjYXNlIFVu
Ym94ZWRDZWxsSW5HUFI6CisvLyNpZiBVU0UoSlNWQUxVRTY0KQorLy8gICAgICAgIGNhc2UgSW5H
UFI6CisvLyAgICAgICAgY2FzZSBVbmJveGVkSW50NTJJbkdQUjoKKy8vICAgICAgICBjYXNlIFVu
Ym94ZWRTdHJpY3RJbnQ1MkluR1BSOgorLy8vLyAgICAgICAgICAgIGppdC5zdG9yZTY0KHJlY292
ZXJ5LmdwcigpLCBzY3JhdGNoICsgaW5kZXgpOworLy8gICAgICAgICAgICBzY3JhdGNoW2luZGV4
XSA9IGNwdS5ncHI8RW5jb2RlZEpTVmFsdWU+KHJlY292ZXJ5LmdwcigpKTsKKy8vICAgICAgICAg
ICAgYnJlYWs7CisvLyNlbHNlCisvLyAgICAgICAgY2FzZSBVbmJveGVkQm9vbGVhbkluR1BSOgor
Ly8gICAgICAgICAgICBqaXQuc3RvcmUzMigKKy8vICAgICAgICAgICAgICAgIHJlY292ZXJ5Lmdw
cigpLAorLy8gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQpOworLy8gICAgICAgICAgICBi
cmVhazsKKy8vCisvLyAgICAgICAgY2FzZSBJblBhaXI6CisvLyAgICAgICAgICAgIGppdC5zdG9y
ZTMyKAorLy8gICAgICAgICAgICAgICAgcmVjb3ZlcnkudGFnR1BSKCksCisvLyAgICAgICAgICAg
ICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5k
ZXgpLT5hc0JpdHMudGFnKTsKKy8vICAgICAgICAgICAgaml0LnN0b3JlMzIoCisvLyAgICAgICAg
ICAgICAgICByZWNvdmVyeS5wYXlsb2FkR1BSKCksCisvLyAgICAgICAgICAgICAgICAmYml0d2lz
ZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMu
cGF5bG9hZCk7CisvLyAgICAgICAgICAgIGJyZWFrOworLy8jZW5kaWYKKy8vCisvLyAgICAgICAg
ZGVmYXVsdDoKKy8vICAgICAgICAgICAgYnJlYWs7CisvLyAgICAgICAgfQorLy8gICAgfQorLy8K
Ky8vICAgIC8vIEFuZCB2b2lsYSwgYWxsIEdQUnMgYXJlIGZyZWUgdG8gcmV1c2UuCisvLworLy8g
ICAgLy8gU2F2ZSBhbGwgc3RhdGUgZnJvbSBGUFJzIGludG8gdGhlIHNjcmF0Y2ggYnVmZmVyLgor
Ly8KKy8vICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7
ICsraW5kZXgpIHsKKy8vICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9w
ZXJhbmRzW2luZGV4XTsKKy8vCisvLyAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUo
KSkgeworLy8gICAgICAgIGNhc2UgVW5ib3hlZERvdWJsZUluRlBSOgorLy8gICAgICAgIGNhc2Ug
SW5GUFI6CisvLy8vICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKHNjcmF0Y2ggKyBpbmRleCksIEdQUkluZm86OnJlZ1QwKTsKKy8vLy8gICAgICAgICAg
ICBqaXQuc3RvcmVEb3VibGUocmVjb3ZlcnkuZnByKCksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KEdQUkluZm86OnJlZ1QwKSk7CisvLyAgICAgICAgICAgIHNjcmF0Y2hbaW5kZXhdID0gY3B1LmZw
cjxFbmNvZGVkSlNWYWx1ZT4ocmVjb3ZlcnkuZnByKCkpOworLy8gICAgICAgICAgICBicmVhazsK
Ky8vCisvLyAgICAgICAgZGVmYXVsdDoKKy8vICAgICAgICAgICAgYnJlYWs7CisvLyAgICAgICAg
fQorLy8gICAgfQorLy8KKy8vICAgIC8vIE5vdywgYWxsIEZQUnMgYXJlIGFsc28gZnJlZS4KKy8v
CisvLyAgICAvLyBTYXZlIGFsbCBzdGF0ZSBmcm9tIHRoZSBzdGFjayBpbnRvIHRoZSBzY3JhdGNo
IGJ1ZmZlci4gRm9yIHNpbXBsaWNpdHkgd2UKKy8vICAgIC8vIGRvIHRoaXMgZXZlbiBmb3Igc3Rh
dGUgdGhhdCdzIGFscmVhZHkgaW4gdGhlIHJpZ2h0IHBsYWNlIG9uIHRoZSBzdGFjay4KKy8vICAg
IC8vIEl0IG1ha2VzIHRoaW5ncyBzaW1wbGVyIGxhdGVyLgorLy8KKy8vICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7ICsraW5kZXgpIHsKKy8vICAgICAg
ICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9wZXJhbmRzW2luZGV4XTsKKy8vCisv
LyAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgeworLy8gICAgICAgIGNhc2Ug
RGlzcGxhY2VkSW5KU1N0YWNrOgorLy8gICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFj
azoKKy8vICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6CisvLyAgICAgICAg
Y2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoKKy8vICAgICAgICBjYXNlIERvdWJsZURpc3Bs
YWNlZEluSlNTdGFjazoKKy8vI2lmIFVTRShKU1ZBTFVFNjQpCisvLyAgICAgICAgY2FzZSBJbnQ1
MkRpc3BsYWNlZEluSlNTdGFjazoKKy8vICAgICAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2Vk
SW5KU1N0YWNrOgorLy8vLyAgICAgICAgICAgIGppdC5sb2FkNjQoQXNzZW1ibHlIZWxwZXJzOjph
ZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgR1BSSW5mbzo6cmVnVDApOwor
Ly8vLyAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5k
ZXgpOworLy8gICAgICAgICAgICBzY3JhdGNoW2luZGV4XSA9IGZyYW1lLmdldE9wZXJhbmQ8RW5j
b2RlZEpTVmFsdWU+KHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpLm9mZnNldCgpKTsKKy8vICAg
ICAgICAgICAgYnJlYWs7CisvLyNlbHNlCisvLyAgICAgICAgICAgIGppdC5sb2FkMzIoCisvLyAg
ICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihyZWNvdmVyeS52aXJ0dWFsUmVn
aXN0ZXIoKSksCisvLyAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CisvLyAgICAgICAg
ICAgIGppdC5sb2FkMzIoCisvLyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxv
YWRGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAorLy8gICAgICAgICAgICAgICAgR1BS
SW5mbzo6cmVnVDEpOworLy8gICAgICAgICAgICBqaXQuc3RvcmUzMigKKy8vICAgICAgICAgICAg
ICAgIEdQUkluZm86OnJlZ1QwLAorLy8gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnRhZyk7CisvLyAg
ICAgICAgICAgIGppdC5zdG9yZTMyKAorLy8gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEs
CisvLyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3Iq
PihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7CisvLyAgICAgICAgICAgIGJyZWFr
OworLy8jZW5kaWYKKy8vCisvLyAgICAgICAgZGVmYXVsdDoKKy8vICAgICAgICAgICAgYnJlYWs7
CisvLyAgICAgICAgfQorLy8gICAgfQorLy8KKy8vICAgIC8vIE5lZWQgdG8gZW5zdXJlIHRoYXQg
dGhlIHN0YWNrIHBvaW50ZXIgYWNjb3VudHMgZm9yIHRoZSB3b3JzdC1jYXNlIHN0YWNrIHVzYWdl
IGF0IGV4aXQuIFRoaXMKKy8vICAgIC8vIGNvdWxkIHRvYXN0IHNvbWUgc3RhY2sgdGhhdCB0aGUg
REZHIHVzZWQuIFdlIG5lZWQgdG8gZG8gaXQgYmVmb3JlIHN0b3JpbmcgdG8gc3RhY2sgb2Zmc2V0
cworLy8gICAgLy8gdXNlZCBieSBiYXNlbGluZS4KKy8vLy8gICAgaml0LmFkZFB0cigKKy8vLy8g
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKAorLy8vLyAgICAgICAgICAgIC1qaXQu
Y29kZUJsb2NrKCktPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPnJlcXVpcmVkUmVnaXN0ZXJDb3Vu
dEZvckV4aXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwKKy8vLy8gICAgICAgIENDYWxsSGVscGVyczo6
ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIp
OworLy8gICAgY3B1LnNwKCkgPSBjcHUuZnA8dWludDhfdCo+KCkgLSAoY29kZUJsb2NrLT5qaXRD
b2RlKCktPmRmZ0NvbW1vbigpLT5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0ICogc2l6ZW9m
KFJlZ2lzdGVyKSk7CisvLworLy8gICAgLy8gUmVzdG9yZSB0aGUgREZHIGNhbGxlZSBzYXZlcyBh
bmQgdGhlbiBzYXZlIHRoZSBvbmVzIHRoZSBiYXNlbGluZSBKSVQgdXNlcy4KKy8vLy8gICAgaml0
LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKKy8vLy8gICAgaml0LmVtaXRTYXZlQ2FsbGVlU2F2
ZXNGb3Ioaml0LmJhc2VsaW5lQ29kZUJsb2NrKCkpOworLy8gICAgcmVzdG9yZUNhbGxlZVNhdmVz
Rm9yKGNvbnRleHQsIGNvZGVCbG9jayk7CisvLyAgICBzYXZlQ2FsbGVlU2F2ZXNGb3IoY29udGV4
dCwgYmFzZWxpbmVDb2RlQmxvY2spOworLy8KKy8vICAgIC8vIFRoZSB0YWcgcmVnaXN0ZXJzIGFy
ZSBuZWVkZWQgdG8gbWF0ZXJpYWxpemUgcmVjb3ZlcmllcyBiZWxvdy4KKy8vLy8gICAgaml0LmVt
aXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7CisvLyAgICBtYXRlcmlhbGl6ZVRhZ0No
ZWNrUmVnaXN0ZXJzKGNwdSk7CisvLworLy8gICAgaWYgKGV4aXQuaXNFeGNlcHRpb25IYW5kbGVy
KCkpCisvLy8vICAgICAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9WTUVudHJ5RnJhbWVDYWxsZWVT
YXZlc0J1ZmZlcih2bSk7CisvLyAgICAgICAgY29weUNhbGxlZVNhdmVzVG9WTUVudHJ5RnJhbWVD
YWxsZWVTYXZlc0J1ZmZlcihjb250ZXh0LCB2bSk7CisvLworLy8gICAgLy8gRG8gYWxsIGRhdGEg
Zm9ybWF0IGNvbnZlcnNpb25zIGFuZCBzdG9yZSB0aGUgcmVzdWx0cyBpbnRvIHRoZSBzdGFjay4K
Ky8vCisvLyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgp
OyArK2luZGV4KSB7CisvLyAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBv
cGVyYW5kc1tpbmRleF07CisvLyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlZyA9IG9wZXJhbmRz
LnZpcnR1YWxSZWdpc3RlckZvckluZGV4KGluZGV4KTsKKy8vCisvLyAgICAgICAgaWYgKHJlZy5p
c0xvY2FsKCkgJiYgcmVnLnRvTG9jYWwoKSA8IHN0YXRpY19jYXN0PGludD4oYmFzZWxpbmVDb2Rl
QmxvY2stPmNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKSkKKy8vICAgICAgICAg
ICAgY29udGludWU7CisvLworLy8gICAgICAgIGludCBvcGVyYW5kID0gcmVnLm9mZnNldCgpOwor
Ly8KKy8vICAgICAgICBhdXRvIHJlY292ZXJ5VGVjaE5hbWUgPSBbXSAoVmFsdWVSZWNvdmVyeVRl
Y2huaXF1ZSB2KSAtPiBjb25zdCBjaGFyKiB7CisvLyAgICAgICAgICAgIHN3aXRjaCAodikgewor
Ly8gICAgICAgICAgICBjYXNlIEluR1BSOiByZXR1cm4gIkluR1BSIjsKKy8vICAgICAgICAgICAg
Y2FzZSBVbmJveGVkSW50MzJJbkdQUjogcmV0dXJuICJVbmJveGVkSW50MzJJbkdQUiI7CisvLyAg
ICAgICAgICAgIGNhc2UgVW5ib3hlZEludDUySW5HUFI6IHJldHVybiAiVW5ib3hlZEludDUySW5H
UFIiOworLy8gICAgICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ1MkluR1BSOiByZXR1cm4g
IlVuYm94ZWRTdHJpY3RJbnQ1MkluR1BSIjsKKy8vICAgICAgICAgICAgY2FzZSBVbmJveGVkQm9v
bGVhbkluR1BSOiByZXR1cm4gIlVuYm94ZWRCb29sZWFuSW5HUFIiOworLy8gICAgICAgICAgICBj
YXNlIFVuYm94ZWRDZWxsSW5HUFI6IHJldHVybiAiVW5ib3hlZENlbGxJbkdQUiI7CisvLyAgICAg
ICAgI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisvLyAgICAgICAgICAgIGNhc2UgSW5QYWlyOiByZXR1
cm4gIkluUGFpciI7CisvLyAgICAgICAgI2VuZGlmCisvLyAgICAgICAgICAgIGNhc2UgSW5GUFI6
IHJldHVybiAiSW5GUFIiOworLy8gICAgICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjog
cmV0dXJuICJVbmJveGVkRG91YmxlSW5GUFIiOworLy8gICAgICAgICAgICAvLyBJdCdzIGluIHRo
ZSBzdGFjaywgYnV0IGF0IGEgZGlmZmVyZW50IGxvY2F0aW9uLgorLy8gICAgICAgICAgICBjYXNl
IERpc3BsYWNlZEluSlNTdGFjazogcmV0dXJuICJEaXNwbGFjZWRJbkpTU3RhY2siOworLy8gICAg
ICAgICAgICAvLyBJdCdzIGluIHRoZSBzdGFjaywgYXQgYSBkaWZmZXJlbnQgbG9jYXRpb24sIGFu
ZCBpdCdzIHVuYm94ZWQuCisvLyAgICAgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3Rh
Y2s6IHJldHVybiAiSW50MzJEaXNwbGFjZWRJbkpTU3RhY2siOworLy8gICAgICAgICAgICBjYXNl
IEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOiByZXR1cm4gIkludDUyRGlzcGxhY2VkSW5KU1N0YWNr
IjsKKy8vICAgICAgICAgICAgY2FzZSBTdHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazogcmV0
dXJuICJTdHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjayI7CisvLyAgICAgICAgICAgIGNhc2Ug
RG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOiByZXR1cm4gIkRvdWJsZURpc3BsYWNlZEluSlNTdGFj
ayI7CisvLyAgICAgICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazogcmV0dXJuICJD
ZWxsRGlzcGxhY2VkSW5KU1N0YWNrIjsKKy8vICAgICAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxh
Y2VkSW5KU1N0YWNrOiByZXR1cm4gIkJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2siOworLy8gICAg
ICAgICAgICAvLyBJdCdzIGFuIEFyZ3VtZW50cyBvYmplY3QuIFRoaXMgYXJpc2VzIGJlY2F1c2Ug
b2YgdGhlIHNpbXBsaWZpZWQgYXJndW1lbnRzIHNpbXBsaWZpY2F0aW9uIGRvbmUgYnkgdGhlIERG
Ry4KKy8vICAgICAgICAgICAgY2FzZSBEaXJlY3RBcmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQ6
IHJldHVybiAiRGlyZWN0QXJndW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkIjsKKy8vICAgICAgICAg
ICAgY2FzZSBDbG9uZWRBcmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQ6IHJldHVybiAiQ2xvbmVk
QXJndW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkIjsKKy8vICAgICAgICAgICAgLy8gSXQncyBhIGNv
bnN0YW50LgorLy8gICAgICAgICAgICBjYXNlIENvbnN0YW50OiByZXR1cm4gIkNvbnN0YW50IjsK
Ky8vICAgICAgICAgICAgLy8gRG9uJ3Qga25vdyBob3cgdG8gcmVjb3ZlciBpdC4KKy8vICAgICAg
ICAgICAgY2FzZSBEb250S25vdzogcmV0dXJuICJEb250S25vdyI7CisvLyAgICAgICAgICAgIH07
CisvLyAgICAgICAgfTsKKy8vICAgICAgICBhdXRvIG5hbWUgPSByZWNvdmVyeVRlY2hOYW1lKHJl
Y292ZXJ5LnRlY2huaXF1ZSgpKTsKKy8vICAgICAgICBtbGFtTmFtZSA9IG5hbWU7CisvLyAgICAg
ICAgZGF0YUxvZygiICAgSnVzdCBzZXQgbWxhbU5hbWUgPSAiLCBtbGFtTmFtZSwgIlxuIik7Cisv
LworLy8gICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKKy8vICAgICAgICBj
YXNlIERpc3BsYWNlZEluSlNTdGFjazoKKy8vICAgICAgICBjYXNlIEluRlBSOgorLy8jaWYgVVNF
KEpTVkFMVUU2NCkKKy8vICAgICAgICBjYXNlIEluR1BSOgorLy8gICAgICAgIGNhc2UgVW5ib3hl
ZENlbGxJbkdQUjoKKy8vICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6CisvLyAg
ICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgorLy8vLyAgICAgICAgICAgIGpp
dC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7CisvLy8vICAgICAgICAg
ICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zv
cihvcGVyYW5kKSk7CisvLyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8RW5jb2RlZEpTVmFs
dWU+KG9wZXJhbmQsIHNjcmF0Y2hbaW5kZXhdKTsKKy8vICAgICAgICAgICAgYnJlYWs7CisvLyNl
bHNlIC8vIG5vdCBVU0UoSlNWQUxVRTY0KQorLy8gICAgICAgIGNhc2UgSW5QYWlyOgorLy8gICAg
ICAgICAgICBqaXQubG9hZDMyKAorLy8gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnRhZywKKy8vICAg
ICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKKy8vICAgICAgICAgICAgaml0LmxvYWQzMigK
Ky8vICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+
KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAorLy8gICAgICAgICAgICAgICAgR1BS
SW5mbzo6cmVnVDEpOworLy8gICAgICAgICAgICBqaXQuc3RvcmUzMigKKy8vICAgICAgICAgICAg
ICAgIEdQUkluZm86OnJlZ1QwLAorLy8gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0
YWdGb3Iob3BlcmFuZCkpOworLy8gICAgICAgICAgICBqaXQuc3RvcmUzMigKKy8vICAgICAgICAg
ICAgICAgIEdQUkluZm86OnJlZ1QxLAorLy8gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJz
OjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKKy8vICAgICAgICAgICAgYnJlYWs7CisvLworLy8gICAg
ICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKKy8vICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJ
bkpTU3RhY2s6CisvLyAgICAgICAgICAgIGppdC5sb2FkMzIoCisvLyAgICAgICAgICAgICAgICAm
Yml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5h
c0JpdHMucGF5bG9hZCwKKy8vICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKKy8vICAg
ICAgICAgICAgaml0LnN0b3JlMzIoCisvLyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwKKy8vICAgICAgICAgICAgICAgIEFzc2Vt
Ymx5SGVscGVyczo6dGFnRm9yKG9wZXJhbmQpKTsKKy8vICAgICAgICAgICAgaml0LnN0b3JlMzIo
CisvLyAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwKKy8vICAgICAgICAgICAgICAgIEFz
c2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7CisvLyAgICAgICAgICAgIGJyZWFr
OworLy8KKy8vICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6CisvLyAgICAgICAgY2Fz
ZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgorLy8gICAgICAgICAgICBqaXQubG9hZDMyKAor
Ly8gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4o
c2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQsCisvLyAgICAgICAgICAgICAgICBHUFJJ
bmZvOjpyZWdUMCk7CisvLyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorLy8gICAgICAgICAgICAg
ICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZyksCisv
LyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7CisvLyAg
ICAgICAgICAgIGppdC5zdG9yZTMyKAorLy8gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAs
CisvLyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkp
OworLy8gICAgICAgICAgICBicmVhazsKKy8vI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisvLwor
Ly8gICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6CisvLyAgICAgICAgY2FzZSBJbnQzMkRp
c3BsYWNlZEluSlNTdGFjazoKKy8vI2lmIFVTRShKU1ZBTFVFNjQpCisvLy8vICAgICAgICAgICAg
aml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKKy8vLy8gICAgICAg
ICAgICBqaXQuemVyb0V4dGVuZDMyVG9QdHIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1Qw
KTsKKy8vLy8gICAgICAgICAgICBqaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIsIEdQUkluZm86OnJlZ1QwKTsKKy8vLy8gICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZv
OjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKy8vICAgICAg
ICAgICAgZnJhbWUuc2V0T3BlcmFuZDxFbmNvZGVkSlNWYWx1ZT4ob3BlcmFuZCwgVGFnVHlwZU51
bWJlciB8ICh1aW50MzJfdClzY3JhdGNoW2luZGV4XSk7CisvLyNlbHNlCisvLyAgICAgICAgICAg
IGppdC5sb2FkMzIoCisvLyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKKy8vICAgICAg
ICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKKy8vICAgICAgICAgICAgaml0LnN0b3JlMzIoCisv
LyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJ
bnQzMlRhZyksCisvLyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVy
YW5kKSk7CisvLyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorLy8gICAgICAgICAgICAgICAgR1BS
SW5mbzo6cmVnVDAsCisvLyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRG
b3Iob3BlcmFuZCkpOworLy8jZW5kaWYKKy8vICAgICAgICAgICAgYnJlYWs7CisvLworLy8jaWYg
VVNFKEpTVkFMVUU2NCkKKy8vICAgICAgICBjYXNlIFVuYm94ZWRJbnQ1MkluR1BSOgorLy8gICAg
ICAgIGNhc2UgSW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6CisvLy8vICAgICAgICAgICAgaml0Lmxv
YWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKKy8vLy8gICAgICAgICAgICBq
aXQucnNoaWZ0NjQoCisvLy8vICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBHUFJJbmZvOjpyZWdUMCk7CisvLy8v
ICAgICAgICAgICAgaml0LmJveEludDUyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCwg
R1BSSW5mbzo6cmVnVDEsIEZQUkluZm86OmZwUmVnVDApOworLy8vLyAgICAgICAgICAgIGppdC5z
dG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFu
ZCkpOworLy8gICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kPEVuY29kZWRKU1ZhbHVlPihvcGVy
YW5kLCBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc2NyYXRjaFtpbmRleF0gPj4gSlNWYWx1ZTo6
aW50NTJTaGlmdEFtb3VudCkpKTsKKy8vICAgICAgICAgICAgYnJlYWs7CisvLworLy8gICAgICAg
IGNhc2UgVW5ib3hlZFN0cmljdEludDUySW5HUFI6CisvLyAgICAgICAgY2FzZSBTdHJpY3RJbnQ1
MkRpc3BsYWNlZEluSlNTdGFjazoKKy8vLy8gICAgICAgICAgICBqaXQubG9hZDY0KHNjcmF0Y2gg
KyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOworLy8vLyAgICAgICAgICAgIGppdC5ib3hJbnQ1MihH
UFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxLCBGUFJJbmZvOjpm
cFJlZ1QwKTsKKy8vLy8gICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNz
ZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKy8vICAgICAgICAgICAgZnJhbWUu
c2V0T3BlcmFuZDxFbmNvZGVkSlNWYWx1ZT4ob3BlcmFuZCwgSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKHNjcmF0Y2hbaW5kZXhdKSkpOworLy8gICAgICAgICAgICBicmVhazsKKy8vI2VuZGlmCisv
LworLy8gICAgICAgIGNhc2UgVW5ib3hlZERvdWJsZUluRlBSOgorLy8gICAgICAgIGNhc2UgRG91
YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgorLy8vLyAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7
CisvLy8vICAgICAgICAgICAgaml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
R1BSSW5mbzo6cmVnVDApLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKy8vLy8gICAgICAgICAgICBqaXQu
cHVyaWZ5TmFOKEZQUkluZm86OmZwUmVnVDApOworLy8jaWYgVVNFKEpTVkFMVUU2NCkKKy8vLy8g
ICAgICAgICAgICBqaXQuYm94RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEdQUkluZm86OnJlZ1Qw
KTsKKy8vLy8gICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlI
ZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKy8vICAgICAgICAgICAgZnJhbWUuc2V0T3Bl
cmFuZDxFbmNvZGVkSlNWYWx1ZT4ob3BlcmFuZCwgSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHB1
cmlmeU5hTihiaXR3aXNlX2Nhc3Q8ZG91YmxlPihzY3JhdGNoW2luZGV4XSkpKSkpOworLy8jZWxz
ZQorLy8gICAgICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgQXNzZW1i
bHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKy8vI2VuZGlmCisvLyAgICAgICAgICAg
IGJyZWFrOworLy8KKy8vICAgICAgICBjYXNlIENvbnN0YW50OgorLy8jaWYgVVNFKEpTVkFMVUU2
NCkKKy8vLy8gICAgICAgICAgICBqaXQuc3RvcmU2NCgKKy8vLy8gICAgICAgICAgICAgICAgQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKHJlY292ZXJ5LmNvbnN0
YW50KCkpKSwKKy8vLy8gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9y
KG9wZXJhbmQpKTsKKy8vICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZDxFbmNvZGVkSlNWYWx1
ZT4ob3BlcmFuZCwgSlNWYWx1ZTo6ZW5jb2RlKHJlY292ZXJ5LmNvbnN0YW50KCkpKTsKKy8vI2Vs
c2UKKy8vICAgICAgICAgICAgaml0LnN0b3JlMzIoCisvLyAgICAgICAgICAgICAgICBBc3NlbWJs
eUhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnRhZygpKSwKKy8vICAg
ICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKG9wZXJhbmQpKTsKKy8vICAgICAg
ICAgICAgaml0LnN0b3JlMzIoCisvLyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnBheWxvYWQoKSksCisvLyAgICAgICAgICAg
ICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOworLy8jZW5kaWYKKy8v
ICAgICAgICAgICAgYnJlYWs7CisvLworLy8gICAgICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzVGhh
dFdlcmVOb3RDcmVhdGVkOgorLy8gICAgICAgIGNhc2UgQ2xvbmVkQXJndW1lbnRzVGhhdFdlcmVO
b3RDcmVhdGVkOgorLy8gICAgICAgICAgICAvLyBEb24ndCBkbyB0aGlzLCB5ZXQuCisvLyAgICAg
ICAgICAgIGJyZWFrOworLy8KKy8vICAgICAgICBkZWZhdWx0OgorLy8gICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworLy8gICAgICAgICAgICBicmVhazsKKy8vICAgICAg
ICB9CisvLyAgICB9CisKKyNlbmRpZiAvLyBtbGFtIFRFU1QgPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
KwogICAgIC8vIE5vdyB0aGF0IHRoaW5ncyBvbiB0aGUgc3RhY2sgYXJlIHJlY292ZXJlZCwgZG8g
dGhlIGFyZ3VtZW50cyByZWNvdmVyeS4gV2UgYXNzdW1lIHRoYXQgYXJndW1lbnRzCiAgICAgLy8g
cmVjb3ZlcmllcyBkb24ndCByZWN1cnNpdmVseSByZWZlciB0byBlYWNoIG90aGVyLiBCdXQsIHdl
IGRvbid0IHRyeSB0byBhc3N1bWUgdGhhdCB0aGV5IG9ubHkKICAgICAvLyByZWZlciB0byBjZXJ0
YWluIHJhbmdlcyBvZiBsb2NhbHMuIEhlbmNlIHdoeSB3ZSBuZWVkIHRvIGRvIHRoaXMgaGVyZSwg
b25jZSB0aGUgc3RhY2sgaXMgc2Vuc2libGUuCiAgICAgLy8gTm90ZSB0aGF0IHdlIGFsc28gcm91
Z2hseSBhc3N1bWUgdGhhdCB0aGUgYXJndW1lbnRzIG1pZ2h0IHN0aWxsIGJlIG1hdGVyaWFsaXpl
ZCBvdXRzaWRlIG9mIGl0cwogICAgIC8vIGlubGluZSBjYWxsIGZyYW1lIHNjb3BlIC0gYnV0IGZv
ciBub3cgdGhlIERGRyB3b3VsZG4ndCBkbyB0aGF0LgogCi0gICAgZW1pdFJlc3RvcmVBcmd1bWVu
dHMoaml0LCBvcGVyYW5kcyk7CisgICAgZW1pdFJlc3RvcmVBcmd1bWVudHMoY29udGV4dCwgY29k
ZUJsb2NrLCBvcGVyYW5kcyk7CiAKICAgICAvLyBBZGp1c3QgdGhlIG9sZCBKSVQncyBleGVjdXRl
IGNvdW50ZXIuIFNpbmNlIHdlIGFyZSBleGl0aW5nIE9TUiwgd2Uga25vdwogICAgIC8vIHRoYXQg
YWxsIG5ldyBjYWxscyBpbnRvIHRoaXMgY29kZSB3aWxsIGdvIHRvIHRoZSBuZXcgSklULCBzbyB0
aGUgZXhlY3V0ZQpAQCAtNzI3LDI2ICsxMDUyLDIwNCBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVF
eGl0KENDYWxsSGVscGVycyYgCiAgICAgLy8gY291bnRlciB0byAwOyBvdGhlcndpc2Ugd2Ugc2V0
IHRoZSBjb3VudGVyIHRvCiAgICAgLy8gY291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1V
cCgpLgogCi0gICAgaGFuZGxlRXhpdENvdW50cyhqaXQsIGV4aXQpOworICAgIGlmIChjb2RlQmxv
Y2stPnVwZGF0ZU9TUkV4aXRDb3VudGVyQW5kQ2hlY2tJZk5lZWRUb1Jlb3B0aW1pemUoZXhpdCkg
PT0gQ29kZUJsb2NrOjpPcHRpbWl6ZUFjdGlvbjo6T3B0aW1pemVOb3cpCisgICAgICAgIHRyaWdn
ZXJSZW9wdGltaXphdGlvbk5vdyhiYXNlbGluZUNvZGVCbG9jaywgJmV4aXQpOwogCiAgICAgLy8g
UmVpZnkgaW5saW5lZCBjYWxsIGZyYW1lcy4KLQotICAgIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMo
aml0LCBleGl0KTsKKyAgICByZWlmeUlubGluZWRDYWxsRnJhbWVzKGNvbnRleHQsIGJhc2VsaW5l
Q29kZUJsb2NrLCBleGl0KTsKIAogICAgIC8vIEFuZCBmaW5pc2guCi0gICAgYWRqdXN0QW5kSnVt
cFRvVGFyZ2V0KHZtLCBqaXQsIGV4aXQpOworICAgIGFkanVzdEFuZEp1bXBUb1RhcmdldChjb250
ZXh0LCB2bSwgY29kZUJsb2NrLCBiYXNlbGluZUNvZGVCbG9jaywgZXhpdCk7Cit9CisKK3ZvaWQg
cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDb250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIG91dGVy
bW9zdEJhc2VsaW5lQ29kZUJsb2NrLCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKK3sKKyAgICBh
dXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKKyAgICBGcmFtZSBmcmFtZShjb250ZXh0KTsKKworICAg
IC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgbGVhdmUgaG9sZXMgb24gdGhlIHN0YWNrIHdoZW4gcGVy
Zm9ybWluZyBhbiBPU1IgZXhpdAorICAgIC8vIGluIHByZXNlbmNlIG9mIGlubGluZWQgdGFpbCBj
YWxscy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3
NTExCisgICAgQVNTRVJUKG91dGVybW9zdEJhc2VsaW5lQ29kZUJsb2NrLT5qaXRUeXBlKCkgPT0g
SklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIG1sYW1OYW1lID0gInJlaWZ5SW5saW5lZENhbGxG
cmFtZXMvb3V0ZXJtb3N0QmFzZWxpbmVDb2RlQmxvY2siOworICAgIGZyYW1lLnNldE9wZXJhbmQ8
Q29kZUJsb2NrKj4oQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrLCBvdXRlcm1vc3RCYXNlbGluZUNv
ZGVCbG9jayk7CisgICAgRXhlY1N0YXRlKiBleGVjID0gY3B1LmZwPEV4ZWNTdGF0ZSo+KCk7IC8v
IG1sYW0gVEVTVAorICAgIEFTU0VSVChmcmFtZS5nZXRPcGVyYW5kPENvZGVCbG9jayo+KENhbGxG
cmFtZVNsb3Q6OmNvZGVCbG9jaykgPT0gb3V0ZXJtb3N0QmFzZWxpbmVDb2RlQmxvY2spOyAvLyBt
bGFtIFRFU1QKKyAgICBBU1NFUlQoSlNEb2xsYXJWTVByb3RvdHlwZTo6aXNWYWxpZENvZGVCbG9j
ayhleGVjLCBvdXRlcm1vc3RCYXNlbGluZUNvZGVCbG9jaykpOyAvLyBtbGFtIFRFU1QKKyAgICBp
ZiAoZ2V0ZW52KCJ2ZXJib3NlIikpIGRhdGFMb2coIiAgIG1sYW0gUkVJRlkgWyIsIFJhd1BvaW50
ZXIoY3B1LmZwPGNoYXIqPigpICsgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgIl0gQ29kZUJs
b2NrICIsIG91dGVybW9zdEJhc2VsaW5lQ29kZUJsb2NrLCAiIChvdXRlcm1vc3QpXG4iKTsKKwor
ICAgIGNvbnN0IENvZGVPcmlnaW4qIGNvZGVPcmlnaW47CisgICAgZm9yIChjb2RlT3JpZ2luID0g
JmV4aXQubV9jb2RlT3JpZ2luOyBjb2RlT3JpZ2luICYmIGNvZGVPcmlnaW4tPmlubGluZUNhbGxG
cmFtZTsgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4tPmlubGluZUNhbGxGcmFtZS0+Z2V0Q2FsbGVy
U2tpcHBpbmdUYWlsQ2FsbHMoKSkgeworICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNh
bGxGcmFtZSA9IGNvZGVPcmlnaW4tPmlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgQ29kZUJsb2Nr
KiBiYXNlbGluZUNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxp
bmVDb2RlQmxvY2soKmNvZGVPcmlnaW4sIG91dGVybW9zdEJhc2VsaW5lQ29kZUJsb2NrKTsgLy8g
bWxhbSBURVNUCisgICAgICAgIGlmIChnZXRlbnYoInZlcmJvc2UiKSkgZGF0YUxvZygiICAgbWxh
bSBiYXNlbGluZUNvZGVCbG9jayA9IENvZGVCbG9jayAiLCBiYXNlbGluZUNvZGVCbG9jaywgIlxu
Iik7CisgICAgICAgIElubGluZUNhbGxGcmFtZTo6S2luZCB0cnVlQ2FsbGVyQ2FsbEtpbmQ7Cisg
ICAgICAgIENvZGVPcmlnaW4qIHRydWVDYWxsZXIgPSBpbmxpbmVDYWxsRnJhbWUtPmdldENhbGxl
clNraXBwaW5nVGFpbENhbGxzKCZ0cnVlQ2FsbGVyQ2FsbEtpbmQpOworICAgICAgICB2b2lkKiBj
YWxsZXJGcmFtZSA9IGNwdS5mcCgpOworCisgICAgICAgIGlmICghdHJ1ZUNhbGxlcikgeworICAg
ICAgICAgICAgQVNTRVJUKGlubGluZUNhbGxGcmFtZS0+aXNUYWlsKCkpOworICAgICAgICAgICAg
dm9pZCogcmV0dXJuUEMgPSBmcmFtZS5nZXQ8dm9pZCo+KENhbGxGcmFtZTo6cmV0dXJuUENPZmZz
ZXQoKSk7CisgICAgICAgICAgICBtbGFtTmFtZSA9ICJyZWlmeUlubGluZWRDYWxsRnJhbWVzL3Jl
dHVyblBDIEAgMTA5MCI7CisgICAgICAgICAgICBmcmFtZS5zZXQ8dm9pZCo+KGlubGluZUNhbGxG
cmFtZS0+cmV0dXJuUENPZmZzZXQoKSwgcmV0dXJuUEMpOworICAgICAgICAgICAgY2FsbGVyRnJh
bWUgPSBmcmFtZS5nZXQ8dm9pZCo+KENhbGxGcmFtZTo6Y2FsbGVyRnJhbWVPZmZzZXQoKSk7Cisg
ICAgICAgICAgICBBU1NFUlQoY2FsbGVyRnJhbWUpOyAvLyBtbGFtIFRFU1QKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIg
PSBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKCp0cnVlQ2Fs
bGVyLCBvdXRlcm1vc3RCYXNlbGluZUNvZGVCbG9jayk7CisgICAgICAgICAgICB1bnNpZ25lZCBj
YWxsQnl0ZWNvZGVJbmRleCA9IHRydWVDYWxsZXItPmJ5dGVjb2RlSW5kZXg7CisgICAgICAgICAg
ICB2b2lkKiBqdW1wVGFyZ2V0ID0gbnVsbHB0cjsKKworICAgICAgICAgICAgc3dpdGNoICh0cnVl
Q2FsbGVyQ2FsbEtpbmQpIHsKKyAgICAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDYWxs
OgorICAgICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OkNvbnN0cnVjdDoKKyAgICAgICAg
ICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDYWxsVmFyYXJnczoKKyAgICAgICAgICAgIGNhc2Ug
SW5saW5lQ2FsbEZyYW1lOjpDb25zdHJ1Y3RWYXJhcmdzOgorICAgICAgICAgICAgY2FzZSBJbmxp
bmVDYWxsRnJhbWU6OlRhaWxDYWxsOgorICAgICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6
OlRhaWxDYWxsVmFyYXJnczogeworICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvID0KKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIt
PmdldENhbGxMaW5rSW5mb0ZvckJ5dGVjb2RlSW5kZXgoY2FsbEJ5dGVjb2RlSW5kZXgpOworICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxMaW5rSW5mbyk7CisKKyAgICAgICAgICAg
ICAgICBqdW1wVGFyZ2V0ID0gY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24oKS5leGVj
dXRhYmxlQWRkcmVzcygpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6R2V0dGVyQ2FsbDoKKyAgICAgICAg
ICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpTZXR0ZXJDYWxsOiB7CisgICAgICAgICAgICAgICAg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvID0KKyAgICAgICAgICAgICAgICAgICAgYmFzZWxp
bmVDb2RlQmxvY2tGb3JDYWxsZXItPmZpbmRTdHViSW5mbyhDb2RlT3JpZ2luKGNhbGxCeXRlY29k
ZUluZGV4KSk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3R1YkluZm8pOworCisg
ICAgICAgICAgICAgICAganVtcFRhcmdldCA9IHN0dWJJbmZvLT5kb25lTG9jYXRpb24oKS5leGVj
dXRhYmxlQWRkcmVzcygpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0cnVlQ2FsbGVy
LT5pbmxpbmVDYWxsRnJhbWUpIHsKKyAgICAgICAgICAgICAgICBjYWxsZXJGcmFtZSA9IGNwdS5m
cDx1aW50OF90Kj4oKSArIHRydWVDYWxsZXItPmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQg
KiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOworICAgICAgICAgICAgICAgIEFTU0VSVChjYWxsZXJG
cmFtZSk7IC8vIG1sYW0gVEVTVAorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtbGFtTmFt
ZSA9ICJyZWlmeUlubGluZWRDYWxsRnJhbWVzL3JldHVyblBDIEAgMTEzMyI7CisgICAgICAgICAg
ICBmcmFtZS5zZXQ8dm9pZCo+KGlubGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSwganVt
cFRhcmdldCk7CisgICAgICAgIH0KKworICAgICAgICBtbGFtTmFtZSA9ICJyZWlmeUlubGluZWRD
YWxsRnJhbWVzL2Jhc2VsaW5lQ29kZUJsb2NrIEAgMTEzNyI7CisgICAgICAgIGZyYW1lLnNldE9w
ZXJhbmQ8dm9pZCo+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90
Ojpjb2RlQmxvY2ssIGJhc2VsaW5lQ29kZUJsb2NrKTsKKyAgICAgICAgQVNTRVJUKGZyYW1lLmdl
dE9wZXJhbmQ8Q29kZUJsb2NrKj4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxG
cmFtZVNsb3Q6OmNvZGVCbG9jaykgPT0gYmFzZWxpbmVDb2RlQmxvY2spOyAvLyBtbGFtIFRFU1QK
KyAgICAgICAgQVNTRVJUKEpTRG9sbGFyVk1Qcm90b3R5cGU6OmlzVmFsaWRDb2RlQmxvY2soZXhl
YywgYmFzZWxpbmVDb2RlQmxvY2spKTsgLy8gbWxhbSBURVNUCisgICAgICAgIGlmIChnZXRlbnYo
InZlcmJvc2UiKSkgZGF0YUxvZygiICAgbWxhbSBSRUlGWSBbIiwgUmF3UG9pbnRlcihjcHUuZnA8
Y2hhcio+KCkgKyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6
Y29kZUJsb2NrKSwgIl0gQ29kZUJsb2NrICIsIGJhc2VsaW5lQ29kZUJsb2NrLCAiXG4iKTsKKwor
I2lmIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTID4gMAorICAgICAgICAvLyBSZXN0
b3JlIHRoZSBpbmxpbmUgY2FsbCBmcmFtZSdzIGNhbGxlZSBzYXZlIHJlZ2lzdGVycy4KKyAgICAg
ICAgLy8gSWYgdGhpcyBpbmxpbmVkIGZyYW1lIGlzIGEgdGFpbCBjYWxsIHRoYXQgd2lsbCByZXR1
cm4gYmFjayB0byB0aGUgb3JpZ2luYWwgY2FsbGVyLCB3ZSBuZWVkIHRvCisgICAgICAgIC8vIGNv
cHkgdGhlIHByaW9yIGNvbnRlbnRzIG9mIHRoZSB0YWcgcmVnaXN0ZXJzIGFscmVhZHkgc2F2ZWQg
Zm9yIHRoZSBvdXRlciBmcmFtZSB0byB0aGlzIGZyYW1lLgorICAgICAgICBzYXZlT3JDb3B5Q2Fs
bGVlU2F2ZXNGb3IoY29udGV4dCwgYmFzZWxpbmVDb2RlQmxvY2ssIHN0YXRpY19jYXN0PFZpcnR1
YWxSZWdpc3Rlcj4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCksICF0cnVlQ2FsbGVyKTsK
KyNlbmRpZgorCisgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgewor
ICAgICAgICAgICAgbWxhbU5hbWUgPSAicmVpZnlJbmxpbmVkQ2FsbEZyYW1lcy8haXNWYXJhcmdz
IEAgMTE1MSI7CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kPHVpbnQzMl90PihpbmxpbmVD
YWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCwgUGF5
bG9hZE9mZnNldCwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKTsKKyAgICAgICAg
fQorICAgICAgICBBU1NFUlQoY2FsbGVyRnJhbWUpOworICAgICAgICBtbGFtTmFtZSA9ICJyZWlm
eUlubGluZWRDYWxsRnJhbWVzL2NhbGxlckZyYW1lIEAgMTE1NSI7CisgICAgICAgIGZyYW1lLnNl
dDx2b2lkKj4oaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXJGcmFtZU9mZnNldCgpLCBjYWxsZXJGcmFt
ZSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0g
Q2FsbFNpdGVJbmRleChjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KS5iaXRzKCk7CisgICAgICAg
IG1sYW1OYW1lID0gInJlaWZ5SW5saW5lZENhbGxGcmFtZXMvYXJndW1lbnRDb3VudCBAIDExNTki
OworICAgICAgICBkYXRhTG9nKCIgICAgbWxhbSBhcmd1bWVudENvdW50LlRBRyA9ICIsIFJhd1Bv
aW50ZXIoKHZvaWQqKSh1aW50cHRyX3QpbG9jYXRpb25CaXRzKSwgIlxuIik7CisgICAgICAgIGZy
YW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBUYWdPZmZzZXQsIGxvY2F0aW9uQml0cyk7Cisg
ICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKSB7CisgICAgICAgICAg
ICBtbGFtTmFtZSA9ICJyZWlmeUlubGluZWRDYWxsRnJhbWVzL2NhbGxlZSBAIDExNjIiOworICAg
ICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsg
Q2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBKU1ZhbHVlKGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29u
c3RhbnQoKSkpOworICAgICAgICAgICAgQVNTRVJUKEpTRG9sbGFyVk1Qcm90b3R5cGU6OmlzVmFs
aWRDZWxsKCZleGVjLT52bSgpLmhlYXAsIGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29uc3RhbnQo
KSkpOworICAgICAgICAgICAgQVNTRVJUKGpzQ2FzdDxKU0Z1bmN0aW9uKj4oaW5saW5lQ2FsbEZy
YW1lLT5jYWxsZWVDb25zdGFudCgpKSk7IC8vIG1sYW0gVEVTVAorICAgICAgICB9CisjZWxzZSAv
LyBVU0UoSlNWQUxVRTY0KSAvLyBzbyB0aGlzIGlzIHRoZSAzMi1iaXQgcGFydAorICAgICAgICBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBiYXNlbGluZUNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSArIGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXg7CisgICAgICAgIHVpbnQzMl90
IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoaW5zdHJ1Y3Rpb24pLmJpdHMoKTsKKyAgICAg
ICAgbWxhbU5hbWUgPSAicmVpZnlJbmxpbmVkQ2FsbEZyYW1lcy9hcmd1bWVudENvdW50IEAgMTE2
OCI7CisgICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBUYWdPZmZzZXQsIGxv
Y2F0aW9uQml0cyk7CisgICAgICAgIG1sYW1OYW1lID0gInJlaWZ5SW5saW5lZENhbGxGcmFtZXMv
Y2FsbGVlIFRBRyBAIDExNzAiOworICAgICAgICBmcmFtZS5zZXRPcGVyYW5kPHVpbnQzMl90Pihp
bmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBUYWdP
ZmZzZXQsIEpTVmFsdWU6OkNlbGxUYWcpOworICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZS0+
aXNDbG9zdXJlQ2FsbCkKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQoaW5saW5lQ2FsbEZy
YW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgUGF5bG9hZE9mZnNldCwg
aW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVDb25zdGFudCgpKTsKKyNlbmRpZiAvLyBVU0UoSlNWQUxV
RTY0KSAvLyBlbmRpbmcgdGhlICNlbHNlIHBhcnQsIHNvIGRpcmVjdGx5IGFib3ZlIGlzIHRoZSAz
Mi1iaXQgcGFydAorICAgIH0KKworICAgIC8vIERvbid0IG5lZWQgdG8gc2V0IHRoZSB0b3BsZXZl
bCBjb2RlIG9yaWdpbiBpZiB3ZSBvbmx5IGRpZCBpbmxpbmUgdGFpbCBjYWxscworICAgIGlmIChj
b2RlT3JpZ2luKSB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgdWludDMyX3QgbG9jYXRp
b25CaXRzID0gQ2FsbFNpdGVJbmRleChjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KS5iaXRzKCk7
CisjZWxzZQorICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBvdXRlcm1vc3RCYXNl
bGluZUNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGNvZGVPcmlnaW4tPmJ5dGVj
b2RlSW5kZXg7CisgICAgICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgo
aW5zdHJ1Y3Rpb24pLmJpdHMoKTsKKyNlbmRpZgorICAgICAgICBtbGFtTmFtZSA9ICJyZWlmeUlu
bGluZWRDYWxsRnJhbWVzL2FyZ3VtZW50Q291bnQgVEFHIEAgMTE4NSI7CisgICAgICAgIGRhdGFM
b2coIiAgICBtbGFtIE9VVEVSIGFyZ3VtZW50Q291bnQuVEFHID0gIiwgUmF3UG9pbnRlcigodm9p
ZCopKHVpbnRwdHJfdClsb2NhdGlvbkJpdHMpLCAiXG4iKTsKKyAgICAgICAgZnJhbWUuc2V0T3Bl
cmFuZDx1aW50MzJfdD4oQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCwgVGFnT2Zmc2V0LCBs
b2NhdGlvbkJpdHMpOworICAgIH0KIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIE9TUkV4aXQ6OmRl
YnVnT3BlcmF0aW9uUHJpbnRTcGVjdWxhdGlvbkZhaWx1cmUoRXhlY1N0YXRlKiBleGVjLCB2b2lk
KiBkZWJ1Z0luZm9SYXcsIHZvaWQqIHNjcmF0Y2gpCit2b2lkIGFkanVzdEFuZEp1bXBUb1Rhcmdl
dChDb250ZXh0JiBjb250ZXh0LCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxv
Y2sqIGJhc2VsaW5lQ29kZUJsb2NrLCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKIHsKLSAgICBW
TSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBleGVjKTsKKyAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKKworICAgIFdURjo6c3RvcmVM
b2FkRmVuY2UoKTsgLy8gVGhlIG9wdGltaXppbmcgY29tcGlsZXIgZXhwZWN0cyB0aGF0IHRoZSBP
U1IgZXhpdCBtZWNoYW5pc20gd2lsbCBleGVjdXRlIHRoaXMgZmVuY2UuCisgICAgdm0uaGVhcC53
cml0ZUJhcnJpZXIoYmFzZWxpbmVDb2RlQmxvY2spOworCisgICAgLy8gV2UgYmFycmllciBhbGwg
aW5saW5lZCBmcmFtZXMgLS0gYW5kIG5vdCBqdXN0IHRoZSBjdXJyZW50IGlubGluZSBzdGFjayAt
LQorICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB3aGljaCBpbmxpbmVkIGZ1bmN0aW9uIG93
bnMgdGhlIHZhbHVlIHByb2ZpbGUgdGhhdAorICAgIC8vIHdlJ2xsIHVwZGF0ZSB3aGVuIHdlIGV4
aXQuIEluIHRoZSBjYXNlIG9mICJmKCkgeyBhKCk7IGIoKTsgfSIsIGlmIGJvdGgKKyAgICAvLyBh
IGFuZCBiIGFyZSBpbmxpbmVkLCB3ZSBtaWdodCBleGl0IGluc2lkZSBiIGR1ZSB0byBhIGJhZCB2
YWx1ZSBsb2FkZWQKKyAgICAvLyBmcm9tIGEuCisgICAgLy8gRklYTUU6IE1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGUgc2hvdWxkIHJlbWVtYmVyIHdoaWNoIENvZGVCbG9jayBvd25zCisgICAg
Ly8gdGhlIHZhbHVlIHByb2ZpbGUuCisgICAgSW5saW5lQ2FsbEZyYW1lU2V0KiBpbmxpbmVDYWxs
RnJhbWVzID0gY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5pbmxpbmVDYWxsRnJh
bWVzLmdldCgpOworICAgIGlmIChpbmxpbmVDYWxsRnJhbWVzKSB7CisgICAgICAgIGZvciAoSW5s
aW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgOiAqaW5saW5lQ2FsbEZyYW1lcykKKyAgICAg
ICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2Rl
QmxvY2suZ2V0KCkpOworICAgIH0KIAotICAgIFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbyog
ZGVidWdJbmZvID0gc3RhdGljX2Nhc3Q8U3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvKj4oZGVi
dWdJbmZvUmF3KTsKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGRlYnVnSW5mby0+Y29kZUJs
b2NrOworICAgIGlmIChleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAg
IGNwdS5mcCgpID0gY3B1LmZwPHVpbnQ4X3QqPigpICsgZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lLT5zdGFja09mZnNldCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CisKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9ja0ZvckV4aXQgPSBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFu
ZEJhc2VsaW5lQ29kZUJsb2NrKGV4aXQubV9jb2RlT3JpZ2luLCBiYXNlbGluZUNvZGVCbG9jayk7
CisvLyAgICBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiYgZGVjb2RlZENvZGVNYXAg
PSBqaXQuZGVjb2RlZENvZGVNYXBGb3IoY29kZUJsb2NrRm9yRXhpdCk7CisvLyAgICBIYXNoTWFw
PENvZGVCbG9jayosIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+PiBkZWNvZGVkQ29k
ZU1hcHM7CisgICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4gZGVjb2RlZENvZGVN
YXA7CisgICAgY29kZUJsb2NrRm9yRXhpdC0+aml0Q29kZU1hcCgpLT5kZWNvZGUoZGVjb2RlZENv
ZGVNYXApOworCisgICAgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0KiBtYXBwaW5nID0gYmluYXJ5
U2VhcmNoPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCwgdW5zaWduZWQ+KGRlY29kZWRDb2RlTWFw
LCBkZWNvZGVkQ29kZU1hcC5zaXplKCksIGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgs
IEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldDo6Z2V0Qnl0ZWNvZGVJbmRleCk7CisKKyAgICBBU1NF
UlQobWFwcGluZyk7CisgICAgQVNTRVJUKG1hcHBpbmctPm1fYnl0ZWNvZGVJbmRleCA9PSBleGl0
Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKKworICAgIHZvaWQqIGp1bXBUYXJnZXQgPSBj
b2RlQmxvY2tGb3JFeGl0LT5qaXRDb2RlKCktPmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQobWFw
cGluZy0+bV9tYWNoaW5lQ29kZU9mZnNldCk7CisKKyAgICBjcHUuc3AoKSA9IGNwdS5mcDx1aW50
OF90Kj4oKSArIGNvZGVCbG9ja0ZvckV4aXQtPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9m
KFJlZ2lzdGVyKTsKKyAgICBpZiAoZXhpdC5pc0V4Y2VwdGlvbkhhbmRsZXIoKSkgeworICAgICAg
ICAvLyBTaW5jZSB3ZSdyZSBqdW1waW5nIHRvIG9wX2NhdGNoLCB3ZSBuZWVkIHRvIHNldCBjYWxs
RnJhbWVGb3JDYXRjaC4KKyAgICAgICAgdm0uY2FsbEZyYW1lRm9yQ2F0Y2ggPSBjcHUuZnA8RXhl
Y1N0YXRlKj4oKTsKKyAgICB9CisKKyAgICB2bS50b3BDYWxsRnJhbWUgPSBjcHUuZnA8RXhlY1N0
YXRlKj4oKTsKKyAgICBjcHUucGMoKSA9IGp1bXBUYXJnZXQ7Cit9CisKK3N0YXRpYyB2b2lkIHBy
aW50T1NSRXhpdChDUFVTdGF0ZSYgY3B1LCB1aW50MzJfdCBvc3JFeGl0SW5kZXgsIGNvbnN0IE9T
UkV4aXQmIGV4aXQpCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gY3B1LmZwPEV4ZWNTdGF0ZSo+
KCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBD
b2RlQmxvY2sqIGFsdGVybmF0aXZlID0gY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpOworICAgIEV4
aXRLaW5kIGtpbmQgPSBleGl0Lm1fa2luZDsKKyAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9
IGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXg7CisKICAgICBkYXRhTG9nKCJTcGVjdWxh
dGlvbiBmYWlsdXJlIGluICIsICpjb2RlQmxvY2spOwotICAgIGRhdGFMb2coIiBAIGV4aXQgIyIs
IHZtLT5vc3JFeGl0SW5kZXgsICIgKGJjIyIsIGRlYnVnSW5mby0+Ynl0ZWNvZGVPZmZzZXQsICIs
ICIsIGV4aXRLaW5kVG9TdHJpbmcoZGVidWdJbmZvLT5raW5kKSwgIikgd2l0aCAiKTsKKyAgICBk
YXRhTG9nKCIgQCBleGl0ICMiLCBvc3JFeGl0SW5kZXgsICIgKGJjIyIsIGJ5dGVjb2RlT2Zmc2V0
LCAiLCAiLCBleGl0S2luZFRvU3RyaW5nKGtpbmQpLCAiKSB3aXRoICIpOwogICAgIGlmIChhbHRl
cm5hdGl2ZSkgewogICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgImV4ZWN1dGVDb3VudGVy
ID0gIiwgYWx0ZXJuYXRpdmUtPmppdEV4ZWN1dGVDb3VudGVyKCksCkBAIC03NTYsMjEgKzEyNTks
MTggQEAgdm9pZCBKSVRfT1BFUkFUSU9OIE9TUkV4aXQ6OmRlYnVnT3BlcmF0aQogICAgICAgICBk
YXRhTG9nKCJubyBhbHRlcm5hdGl2ZSBjb2RlIGJsb2NrIChpLmUuIHdlJ3ZlIGJlZW4gamV0dGlz
b25lZCkiKTsKICAgICBkYXRhTG9nKCIsIG9zckV4aXRDb3VudGVyID0gIiwgY29kZUJsb2NrLT5v
c3JFeGl0Q291bnRlcigpLCAiXG4iKTsKICAgICBkYXRhTG9nKCIgICAgR1BScyBhdCB0aW1lIG9m
IGV4aXQ6Iik7Ci0gICAgY2hhciogc2NyYXRjaFBvaW50ZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4o
c2NyYXRjaCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51bWJlck9m
UmVnaXN0ZXJzOyArK2kpIHsKICAgICAgICAgR1BSUmVnIGdwciA9IEdQUkluZm86OnRvUmVnaXN0
ZXIoaSk7Ci0gICAgICAgIGRhdGFMb2coIiAiLCBHUFJJbmZvOjpkZWJ1Z05hbWUoZ3ByKSwgIjoi
LCBSYXdQb2ludGVyKCpyZWludGVycHJldF9jYXN0X3B0cjx2b2lkKio+KHNjcmF0Y2hQb2ludGVy
KSkpOwotICAgICAgICBzY3JhdGNoUG9pbnRlciArPSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwor
ICAgICAgICBkYXRhTG9nKCIgIiwgY3B1Lmdwck5hbWUoZ3ByKSwgIjoiLCBSYXdQb2ludGVyKGNw
dS5ncHI8dm9pZCo+KGdwcikpKTsKICAgICB9CiAgICAgZGF0YUxvZygiXG4iKTsKICAgICBkYXRh
TG9nKCIgICAgRlBScyBhdCB0aW1lIG9mIGV4aXQ6Iik7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKICAgICAgICAgRlBSUmVn
IGZwciA9IEZQUkluZm86OnRvUmVnaXN0ZXIoaSk7Ci0gICAgICAgIGRhdGFMb2coIiAiLCBGUFJJ
bmZvOjpkZWJ1Z05hbWUoZnByKSwgIjoiKTsKLSAgICAgICAgdWludDY0X3QgYml0cyA9ICpyZWlu
dGVycHJldF9jYXN0X3B0cjx1aW50NjRfdCo+KHNjcmF0Y2hQb2ludGVyKTsKLSAgICAgICAgZG91
YmxlIHZhbHVlID0gKnJlaW50ZXJwcmV0X2Nhc3RfcHRyPGRvdWJsZSo+KHNjcmF0Y2hQb2ludGVy
KTsKKyAgICAgICAgZGF0YUxvZygiICIsIGNwdS5mcHJOYW1lKGZwciksICI6Iik7CisgICAgICAg
IHVpbnQ2NF90IGJpdHMgPSBjcHUuZnByPHVpbnQ2NF90PihmcHIpOworICAgICAgICBkb3VibGUg
dmFsdWUgPSBjcHUuZnByKGZwcik7CiAgICAgICAgIGRhdGFMb2dGKCIlbGx4OiVsZiIsIHN0YXRp
Y19jYXN0PGxvbmcgbG9uZz4oYml0cyksIHZhbHVlKTsKLSAgICAgICAgc2NyYXRjaFBvaW50ZXIg
Kz0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKICAgICB9CiAgICAgZGF0YUxvZygiXG4iKTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCShyZXZpc2lvbiAyMjEx
ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNyArMzYsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgQ0NhbGxI
ZWxwZXJzOworbmFtZXNwYWNlIFByb2JlIHsKK2NsYXNzIENvbnRleHQ7Cit9IC8vIG5hbWVzcGFj
ZSBQcm9iZQogCiBuYW1lc3BhY2UgREZHIHsKIApAQCAtOTgsNyArMTAwLDcgQEAgcHJpdmF0ZToK
IHN0cnVjdCBPU1JFeGl0IDogcHVibGljIE9TUkV4aXRCYXNlIHsKICAgICBPU1JFeGl0KEV4aXRL
aW5kLCBKU1ZhbHVlU291cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLCBTcGVjdWxh
dGl2ZUpJVCosIHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4ID0g
VUlOVF9NQVgpOwogCi0gICAgc3RhdGljIHZvaWQgSklUX09QRVJBVElPTiBjb21waWxlT1NSRXhp
dChFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CisgICAgc3RhdGljIHZvaWQgZXhlY3V0ZU9TUkV4
aXQoUHJvYmU6OkNvbnRleHQmKTsKIAogICAgIHVuc2lnbmVkIG1fcGF0Y2hhYmxlQ29kZU9mZnNl
dCB7IDAgfTsKICAgICAKQEAgLTExOSwxMSArMTIxLDYgQEAgc3RydWN0IE9TUkV4aXQgOiBwdWJs
aWMgT1NSRXhpdEJhc2UgewogICAgIHsKICAgICAgICAgT1NSRXhpdEJhc2U6OmNvbnNpZGVyQWRk
aW5nQXNGcmVxdWVudEV4aXRTaXRlKHByb2ZpbGVkQ29kZUJsb2NrLCBFeGl0RnJvbURGRyk7CiAg
ICAgfQotCi1wcml2YXRlOgotICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVFeGl0KENDYWxsSGVscGVy
cyYsIFZNJiwgY29uc3QgT1NSRXhpdCYsIGNvbnN0IE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+Jiwg
U3BlY3VsYXRpb25SZWNvdmVyeSopOwotICAgIHN0YXRpYyB2b2lkIGVtaXRSZXN0b3JlQXJndW1l
bnRzKENDYWxsSGVscGVycyYsIGNvbnN0IE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+Jik7Ci0gICAg
c3RhdGljIHZvaWQgSklUX09QRVJBVElPTiBkZWJ1Z09wZXJhdGlvblByaW50U3BlY3VsYXRpb25G
YWlsdXJlKEV4ZWNTdGF0ZSosIHZvaWQqLCB2b2lkKikgV1RGX0lOVEVSTkFMOwogfTsKIAogc3Ry
dWN0IFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbyB7CkBAIC0xMzIsNiArMTI5LDEwIEBAIHN0
cnVjdCBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8gewogICAgIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0OwogfTsKIAordm9pZCBoYW5kbGVFeGl0Q291bnRzKENvZGVCbG9jayosIENvZGVCbG9j
ayogYmFzZWxpbmVDb2RlQmxvY2ssIE9TUkV4aXRCYXNlJik7Cit2b2lkIHJlaWZ5SW5saW5lZENh
bGxGcmFtZXMoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQsIENvZGVCbG9jayogYmFzZWxpbmVDb2Rl
QmxvY2ssIGNvbnN0IE9TUkV4aXRCYXNlJik7Cit2b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChQ
cm9iZTo6Q29udGV4dCYsIFZNJiwgQ29kZUJsb2NrKiwgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVC
bG9jaywgY29uc3QgT1NSRXhpdEJhc2UmKTsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwog
CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCShyZXZpc2lvbiAy
MjExODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNv
bW1vbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMywxMCArMzMsMTIgQEAKICNpbmNsdWRlICJK
SVQuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHVi
SW5mby5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKKy8vIEZJWE1FOiBy
ZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc1MTQ1Lgogdm9pZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYgaml0LCBj
b25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKIHsKICAgICBqaXQuYWRkMzIoQXNzZW1ibHlIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoMSksIEFzc2VtYmx5SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKCZleGl0
Lm1fY291bnQpKTsKQEAgLTQ4LDEwICs1MCwxMiBAQCB2b2lkIGhhbmRsZUV4aXRDb3VudHMoQ0Nh
bGxIZWxwZXJzJiBqaXQsCiAgICAgCiAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIHRvb0Zld0Zh
aWxzOwogICAgIAorICAgIC8vQCBtbGFtIGNvZGVCbG9jay0+b3NyRXhpdENvdW50ZXIrKzsKICAg
ICBqaXQubG9hZDMyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29k
ZUJsb2NrOjpvZmZzZXRPZk9TUkV4aXRDb3VudGVyKCkpLCBHUFJJbmZvOjpyZWdUMik7CiAgICAg
aml0LmFkZDMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBHUFJJbmZvOjpyZWdU
Mik7CiAgICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDIsIEFzc2VtYmx5SGVscGVyczo6QWRk
cmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZk9TUkV4aXRDb3VudGVyKCkp
KTsKICAgICAKKyAgICAvL0AgbWxhbSBpZiAoYmFzZWxpbmVDb2RlQmxvY2stPm1faml0RXhlY3V0
ZUNvdW50ZXIubV9jb3VudGVyID49IDApIGdvdG8gcmVvcHRpbWl6ZU5vdzsKICAgICBqaXQubW92
ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmJhc2VsaW5lQ29kZUJsb2NrKCkp
LCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIHJlb3B0aW1pemVO
b3cgPSBqaXQuYnJhbmNoMzIoCiAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6R3JlYXRlclRoYW5P
ckVxdWFsLApAQCAtNjgsNiArNzIsNyBAQCB2b2lkIGhhbmRsZUV4aXRDb3VudHMoQ0NhbGxIZWxw
ZXJzJiBqaXQsCiAgICAgCiAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBsb29wVGhyZXNo
b2xkOwogICAgIAorICAgIC8vQCBtbGFtOiBpZiBhbnkgb2YgdGhlIGlubGluZWQgY29kZUJsb2Nr
cyBkaWRUcnlUb0VudGVySW5Mb29wLCBnb3RvIGxvb3BUaHJlc2hvbGQ7CiAgICAgZm9yIChJbmxp
bmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNh
bGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJhbWUgPSBpbmxpbmVDYWxsRnJh
bWUtPmRpcmVjdENhbGxlci5pbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgbG9vcFRocmVzaG9s
ZC5hcHBlbmQoCiAgICAgICAgICAgICBqaXQuYnJhbmNoVGVzdDgoCkBAIC05MiwxMCArOTcsMTIg
QEAgdm9pZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYgaml0LAogICAgICAgICBkb25l
LmxpbmsoJmppdCk7CiAgICAgfQogICAgIAorICAgIC8vQCBtbGFtIGlmIChjb2RlQmxvY2stPm9z
ckV4aXRDb3VudGVyIDw9IHRocmVzaG9sZCkgZ290byB0b29GZXdGYWlsczsKICAgICB0b29GZXdG
YWlscyA9IGppdC5icmFuY2gzMihBc3NlbWJseUhlbHBlcnM6OkJlbG93T3JFcXVhbCwgR1BSSW5m
bzo6cmVnVDIsIEdQUkluZm86OnJlZ1QxKTsKICAgICAKICAgICByZW9wdGltaXplTm93Lmxpbmso
JmppdCk7CiAgICAgCisgICAgLy9AIG1sYW0gdHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KGNvZGVC
bG9jaywgJmV4aXQpOwogICAgIC8vIFJlb3B0aW1pemUgYXMgc29vbiBhcyBwb3NzaWJsZS4KICNp
ZiAhTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUwogICAgIGppdC5wb2tlKEdQUkluZm86OnJl
Z1QwKTsKQEAgLTEzOCw2ICsxNDUsNyBAQCB2b2lkIGhhbmRsZUV4aXRDb3VudHMoQ0NhbGxIZWxw
ZXJzJiBqaXQsCiAgICAgZG9uZUFkanVzdGluZy5saW5rKCZqaXQpOwogfQogCisvLyBGSVhNRTog
cmVtb3ZlIHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NTE0NS4KIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZG4ndCBsZWF2ZSBob2xlcyBvbiB0aGUgc3RhY2sgd2hlbiBwZXJmb3JtaW5nIGFuIE9TUiBleGl0
CkBAIC0yNDcsNiArMjU1LDcgQEAgdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVs
cGVycwogICAgIH0KIH0KIAorLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgZml4IGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiBzdGF0aWMgdm9pZCBv
c3JXcml0ZUJhcnJpZXIoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBvd25lciwgR1BSUmVnIHNj
cmF0Y2gpCiB7CiAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIG93bmVySXNSZW1lbWJlcmVkT3JJ
bkVkZW4gPSBqaXQuYmFycmllckJyYW5jaFdpdGhvdXRGZW5jZShvd25lcik7CkBAIC0yNjcsNiAr
Mjc2LDcgQEAgc3RhdGljIHZvaWQgb3NyV3JpdGVCYXJyaWVyKENDYWxsSGVscGVycwogICAgIG93
bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4ubGluaygmaml0KTsKIH0KIAorLy8gRklYTUU6IHJlbW92
ZSB0aGlzIHdoZW4gd2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzUxNDUuCiB2b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChWTSYgdm0sIENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKIHsKICAgICBqaXQubWVtb3J5RmVuY2Uo
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29t
bW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
Q29tcGlsZXJDb21tb24uaAkocmV2aXNpb24gMjIxMTg3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDAs
NiArNDAsNyBAQCB2b2lkIGhhbmRsZUV4aXRDb3VudHMoQ0NhbGxIZWxwZXJzJiwgY29uCiB2b2lk
IHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2Um
KTsKIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KFZNJiwgQ0NhbGxIZWxwZXJzJiwgY29uc3Qg
T1NSRXhpdEJhc2UmKTsKIAorLy8gRklYTUU6IFRoaXMgd29uJ3QgYmUgbmVlZGVkIG9uY2Ugd2Ug
Zml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgSklUQ29kZVR5cGU+CiB2b2lkIGFkanVzdEZyYW1lQW5kU3RhY2tJbk9T
UkV4aXRDb21waWxlclRodW5rKE1hY3JvQXNzZW1ibGVyJiBqaXQsIFZNKiB2bSwgSklUQ29kZTo6
SklUVHlwZSBqaXRUeXBlKQogewpAQCAtNTQsMTMgKzU1LDE2IEBAIHZvaWQgYWRqdXN0RnJhbWVB
bmRTdGFja0luT1NSRXhpdENvbXBpbGUKICAgICAgICAgcmVnaXN0ZXJzVG9QcmVzZXJ2ZS5tZXJn
ZShSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgIH0KIAorICAgIC8v
QCBtbGFtOiBjb21wdXRlIHNpemUgb2Ygc2NyYXRjaCBidWZmZXIgdG8gc3Rhc2ggcmVnaXN0ZXJz
IGluLgogICAgIHNpemVfdCBzY3JhdGNoU2l6ZSA9IHNpemVvZih2b2lkKikgKiByZWdpc3RlcnNU
b1ByZXNlcnZlLm51bWJlck9mU2V0R1BScygpOwogICAgIGlmIChpc0ZUTE9TUkV4aXQpCiAgICAg
ICAgIHNjcmF0Y2hTaXplICs9IHNpemVvZih2b2lkKik7CiAKKyAgICAvL0AgbWxhbTogYWxsb2Nh
dGUgc2NyYXRjaCBidWZmZXIuCiAgICAgU2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1ZmZlciA9IHZt
LT5zY3JhdGNoQnVmZmVyRm9yU2l6ZShzY3JhdGNoU2l6ZSk7CiAgICAgY2hhciogYnVmZmVyID0g
c3RhdGljX2Nhc3Q8Y2hhcio+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSk7CiAKKyAgICAv
L0AgbWxhbTogc2F2ZSB0aGUgcmVnaXN0ZXJzIGluIHRoZSBzY3JhdGNoIGJ1ZmZlci4KICAgICBq
aXQucHVzaFRvU2F2ZShHUFJJbmZvOjpyZWdUMSk7CiAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIoYnVmZmVyKSwgR1BSSW5mbzo6cmVnVDEpOwogCkBAIC03MCw2ICs3
NCw3IEBAIHZvaWQgYWRqdXN0RnJhbWVBbmRTdGFja0luT1NSRXhpdENvbXBpbGUKICAgICAgICAg
c3RvcmVPZmZzZXQgKz0gc2l6ZW9mKHZvaWQqKTsKICAgICB9KTsKIAorICAgIC8vQCBtbGFtOiBG
b3IgRlRMLCBhbHNvIG5lZWQgdG8gc3Rhc2ggYXdheSB0aGUgT1NSIGV4aXRJbmRleD8KICAgICBp
ZiAoaXNGVExPU1JFeGl0KSB7CiAgICAgICAgIC8vIEZUTCBPU1JFeGl0cyBhcmUgZW50ZXJlZCB2
aWEgdGhlIGNvZGUgRlRMRXhpdFRodW5rR2VuZXJhdG9yIGVtaXRzIHdoaWNoIGRvZXMKICAgICAg
ICAgLy8gcHVzaFRvU2F2ZUltbWVkaWF0ZVdpdGhvdXRUb3VjaFJlZ2lzdGVycyB3aXRoIHRoZSBP
U1IgZXhpdCBpbmRleC4gV2UgbmVlZCB0byBsb2FkCkBAIC03OSwxMSArODQsMTUgQEAgdm9pZCBh
ZGp1c3RGcmFtZUFuZFN0YWNrSW5PU1JFeGl0Q29tcGlsZQogICAgIH0KICAgICBqaXQucG9wVG9S
ZXN0b3JlKEdQUkluZm86OnJlZ1QxKTsKIAorICAgIC8vQCBtbGFtOiBUaGlzIGxvb2tzIHZlcnkg
c2ltaWxhciB0byBwcmVwYXJlT1NSRXhpdCgpLiBXZSByZXN0b3JlIHRoZSBmcCBoZXJlIGlmIHdl
IGhhdmUgYW4gZXhjZXB0aW9uLgogICAgIC8vIFdlIG5lZWQgdG8gcmVzZXQgRlAgaW4gdGhlIGNh
c2Ugb2YgYW4gZXhjZXB0aW9uLgogICAgIGppdC5sb2FkUHRyKHZtLT5hZGRyZXNzT2ZDYWxsRnJh
bWVGb3JDYXRjaCgpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
ZGlkTm90SGF2ZUV4Y2VwdGlvbiA9IGppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpa
ZXJvLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0Lm1vdmUoR1BSSW5mbzo6cmVnVDAsIEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKICAgICBkaWROb3RIYXZlRXhjZXB0aW9uLmxpbmsoJmpp
dCk7CisKKyAgICAvL0AgbWxhbTogQ29tcHV0ZSBzcCBmcm9tIGZwLiBXZSBzaG91bGRuJ3QgbmVl
ZCB0byBkbyB0aGlzIGlmIHdlIGRpZG4ndCBnZXQgaGVyZSBkdWUgdG8gYW4gZXhjZXB0aW9uLgor
ICAgIC8vQCBtbGFtOiBzcCA9IGZwIC0gY29kZUJsb2NrLT5zdGFja1BvaW50ZXJPZmZzZXQoKSAq
IHNpemVvZihSZWdpc3Rlcik7CiAgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgU1AgaXMgY29y
cmVjdCBpbiBjYXNlIG9mIGFuIGV4Y2VwdGlvbi4KICAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6
Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSksIEdQUkluZm86
OnJlZ1QwKTsKICAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZv
OjpyZWdUMCwgQ29kZUJsb2NrOjpqaXRDb2RlT2Zmc2V0KCkpLCBHUFJJbmZvOjpyZWdUMCk7CkBA
IC0xMDIsMTIgKzExMSwxNCBAQCB2b2lkIGFkanVzdEZyYW1lQW5kU3RhY2tJbk9TUkV4aXRDb21w
aWxlCiAgICAgaml0LmFkZFB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6
cmVnVDApOwogICAgIGppdC5tb3ZlKEdQUkluZm86OnJlZ1QwLCBNYWNyb0Fzc2VtYmxlcjo6c3Rh
Y2tQb2ludGVyUmVnaXN0ZXIpOwogCisgICAgLy9AIG1sYW06IG1ha2Ugc3BhY2UgZm9yIHRoZSBv
c3JFeGl0SW5kZXggZm9yIHRoZSBGVEwuCiAgICAgaWYgKGlzRlRMT1NSRXhpdCkgewogICAgICAg
ICAvLyBMZWF2ZSBzcGFjZSBmb3Igc2F2aW5nIHRoZSBPU1IgRXhpdCBJbmRleC4KICAgICAgICAg
aml0LnN1YlB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hY3JvQXNzZW1ibGVyOjpw
dXNoVG9TYXZlQnl0ZU9mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKICAgICB9CiAgICAgaml0LnB1c2hUb1NhdmUoR1BSSW5mbzo6cmVnVDEpOwogCisgICAg
Ly9AIG1sYW06IHJlc3RvcmUgdGhlIHN0YXNoZWQgRlRMIG9zckV4aXRJbmRleC4KICAgICBqaXQu
bW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihidWZmZXIpLCBHUFJJbmZvOjpyZWdU
MSk7CiAgICAgaWYgKGlzRlRMT1NSRXhpdCkgewogICAgICAgICAvLyBGVEwgT1NSRXhpdHMgYXJl
IGVudGVyZWQgdmlhIEZUTEV4aXRUaHVua0dlbmVyYXRvciBjb2RlIHdpdGggZG9lcwpAQCAtMTE3
LDYgKzEyOCw3IEBAIHZvaWQgYWRqdXN0RnJhbWVBbmRTdGFja0luT1NSRXhpdENvbXBpbGUKICAg
ICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OnJlZ1QwLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIE1hY3JvQXNzZW1ibGVyOjpw
dXNoVG9TYXZlQnl0ZU9mZnNldCgpKSk7CiAgICAgfQogCisgICAgLy9AIG1sYW06IHJlc3RvcmVz
IHRoZSBzdGFzaGVkIHJlZ2lzdGVycy4KICAgICB1bnNpZ25lZCBsb2FkT2Zmc2V0ID0gMDsKICAg
ICByZWdpc3RlcnNUb1ByZXNlcnZlLmZvckVhY2goWyZdKFJlZyByZWcpIHsKICAgICAgICAgaml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDEsIGxvYWRPZmZz
ZXQpLCByZWcuZ3ByKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMjExODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzU1LDYyICsxMzU1LDYg
QEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUNsbwogICAgICAgICBleGVj
LCBzdHJ1Y3R1cmUsIGFyZ3VtZW50U3RhcnQsIGxlbmd0aCwgY2FsbGVlKTsKIH0KIAotSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4aXQo
RXhlY1N0YXRlKiBleGVjLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgSlNGdW5j
dGlvbiogY2FsbGVlLCBpbnQzMl90IGFyZ3VtZW50Q291bnQpCi17Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdGFyZ2V0KCZ2bSwgZXhlYyk7Ci0g
ICAgCi0gICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOwotICAgIAotICAgIENv
ZGVCbG9jayogY29kZUJsb2NrOwotICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgIGNv
ZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1lKGlubGluZUNhbGxG
cmFtZSk7Ci0gICAgZWxzZQotICAgICAgICBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsK
LSAgICAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBhcmd1bWVudENvdW50IC0gMTsKLSAgICB1bnNp
Z25lZCBjYXBhY2l0eSA9IHN0ZDo6bWF4KGxlbmd0aCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gMSkpOwotICAgIERpcmVjdEFyZ3VtZW50cyogcmVz
dWx0ID0gRGlyZWN0QXJndW1lbnRzOjpjcmVhdGUoCi0gICAgICAgIHZtLCBjb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpLT5kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUoKSwgbGVuZ3RoLCBjYXBhY2l0
eSk7Ci0gICAgCi0gICAgcmVzdWx0LT5jYWxsZWUoKS5zZXQodm0sIHJlc3VsdCwgY2FsbGVlKTsK
LSAgICAKLSAgICBSZWdpc3RlciogYXJndW1lbnRzID0KLSAgICAgICAgZXhlYy0+cmVnaXN0ZXJz
KCkgKyAoaW5saW5lQ2FsbEZyYW1lID8gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCA6IDAp
ICsKLSAgICAgICAgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldCgwKTsKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSBsZW5ndGg7IGktLTspCi0gICAgICAgIHJlc3VsdC0+c2V0SW5kZXhRdWlja2x5KHZt
LCBpLCBhcmd1bWVudHNbaV0uanNWYWx1ZSgpKTsKLSAgICAKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1lbnRz
RHVyaW5nRXhpdChFeGVjU3RhdGUqIGV4ZWMsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZy
YW1lLCBKU0Z1bmN0aW9uKiBjYWxsZWUsIGludDMyX3QgYXJndW1lbnRDb3VudCkKLXsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0YXJnZXQoJnZt
LCBleGVjKTsKLSAgICAKLSAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0uaGVhcCk7Ci0g
ICAgCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2s7Ci0gICAgaWYgKGlubGluZUNhbGxGcmFtZSkK
LSAgICAgICAgY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUo
aW5saW5lQ2FsbEZyYW1lKTsKLSAgICBlbHNlCi0gICAgICAgIGNvZGVCbG9jayA9IGV4ZWMtPmNv
ZGVCbG9jaygpOwotICAgIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFyZ3VtZW50Q291bnQgLSAx
OwotICAgIENsb25lZEFyZ3VtZW50cyogcmVzdWx0ID0gQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGVF
bXB0eSgKLSAgICAgICAgdm0sIGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmNsb25lZEFyZ3Vt
ZW50c1N0cnVjdHVyZSgpLCBjYWxsZWUsIGxlbmd0aCk7Ci0gICAgCi0gICAgUmVnaXN0ZXIqIGFy
Z3VtZW50cyA9Ci0gICAgICAgIGV4ZWMtPnJlZ2lzdGVycygpICsgKGlubGluZUNhbGxGcmFtZSA/
IGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgOiAwKSArCi0gICAgICAgIENhbGxGcmFtZTo6
YXJndW1lbnRPZmZzZXQoMCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KQot
ICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIGFyZ3VtZW50c1tpXS5qc1Zh
bHVlKCkpOwotCi0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVJlc3QoRXhlY1N0YXRlKiBleGVjLCBSZWdpc3RlciogYXJn
dW1lbnRTdGFydCwgdW5zaWduZWQgbnVtYmVyT2ZQYXJhbXNUb1NraXAsIHVuc2lnbmVkIGFycmF5
U2l6ZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMjExODcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5
LDkgKzEzOSw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHIKIHNp
emVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcShFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZf
SU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlv
bkRpcmVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqLCBF
bmNvZGVkSlNWYWx1ZSk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlRGly
ZWN0QXJndW1lbnRzKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QgbGVuZ3RoLCBpbnQz
Ml90IG1pbkNhcGFjaXR5KTsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVE
aXJlY3RBcmd1bWVudHNEdXJpbmdFeGl0KEV4ZWNTdGF0ZSosIElubGluZUNhbGxGcmFtZSosIEpT
RnVuY3Rpb24qLCBpbnQzMl90IGFyZ3VtZW50Q291bnQpOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cyhFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBS
ZWdpc3RlciogYXJndW1lbnRTdGFydCwgaW50MzJfdCBsZW5ndGgsIEpTRnVuY3Rpb24qIGNhbGxl
ZSwgSlNMZXhpY2FsRW52aXJvbm1lbnQqKTsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25DcmVhdGVDbG9uZWRBcmd1bWVudHNEdXJpbmdFeGl0KEV4ZWNTdGF0ZSosIElubGluZUNhbGxG
cmFtZSosIEpTRnVuY3Rpb24qLCBpbnQzMl90IGFyZ3VtZW50Q291bnQpOwogSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50cyhFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmUqLCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgaW50MzJfdCBsZW5ndGgsIEpTRnVuY3Rp
b24qIGNhbGxlZSk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlUmVzdChF
eGVjU3RhdGUqLCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdW5zaWduZWQgbnVtYmVyT2ZBcmd1
bWVudHNUb1NraXAsIHVuc2lnbmVkIGFycmF5U2l6ZSk7CiBkb3VibGUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25GTW9kT25JbnRzKGludDMyX3QsIGludDMyX3QpIFdURl9JTlRFUk5BTDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAJKHJldmlzaW9uIDIyMTE4NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNjQgKzQwLDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
IAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3Io
Vk0qIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRUaHVua0dlbmVyYXRvcihWTSop
CiB7CiAgICAgTWFjcm9Bc3NlbWJsZXIgaml0OwotCi0gICAgLy8gVGhpcyBuZWVkcyB0byBoYXBw
ZW4gYmVmb3JlIHdlIHVzZSB0aGUgc2NyYXRjaCBidWZmZXIgYmVjYXVzZSB0aGlzIGZ1bmN0aW9u
IGFsc28gdXNlcyB0aGUgc2NyYXRjaCBidWZmZXIuCi0gICAgYWRqdXN0RnJhbWVBbmRTdGFja0lu
T1NSRXhpdENvbXBpbGVyVGh1bms8REZHOjpKSVRDb2RlPihqaXQsIHZtLCBKSVRDb2RlOjpERkdK
SVQpOwotICAgIAotICAgIHNpemVfdCBzY3JhdGNoU2l6ZSA9IHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkgKiAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjpudW1iZXJPZlJlZ2lz
dGVycyk7Ci0gICAgU2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1ZmZlciA9IHZtLT5zY3JhdGNoQnVm
ZmVyRm9yU2l6ZShzY3JhdGNoU2l6ZSk7Ci0gICAgRW5jb2RlZEpTVmFsdWUqIGJ1ZmZlciA9IHN0
YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKTsK
LSAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdp
c3RlcnM7ICsraSkgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGppdC5zdG9yZTY0KEdQ
UkluZm86OnRvUmVnaXN0ZXIoaSksIGJ1ZmZlciArIGkpOwotI2Vsc2UKLSAgICAgICAgaml0LnN0
b3JlMzIoR1BSSW5mbzo6dG9SZWdpc3RlcihpKSwgYnVmZmVyICsgaSk7Ci0jZW5kaWYKLSAgICB9
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJz
OyArK2kpIHsKLSAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
YnVmZmVyICsgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSwgR1BSSW5mbzo6cmVnVDAp
OwotICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6dG9SZWdpc3RlcihpKSwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApKTsKLSAgICB9Ci0gICAgCi0gICAgLy8g
VGVsbCBHQyBtYXJrIHBoYXNlIGhvdyBtdWNoIG9mIHRoZSBzY3JhdGNoIGJ1ZmZlciBpcyBhY3Rp
dmUgZHVyaW5nIGNhbGwuCi0gICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoc2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZvOjpyZWdU
MCk7Ci0gICAgaml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHNjcmF0
Y2hTaXplKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApKTsKLQotICAg
IC8vIFNldCB1cCBvbmUgYXJndW1lbnQuCi0jaWYgQ1BVKFg4NikKLSAgICBqaXQucG9rZShHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgMCk7Ci0jZWxzZQotICAgIGppdC5tb3ZlKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotI2VuZGlmCi0KLSAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBmdW5jdGlvbkNhbGwgPSBqaXQuY2FsbCgpOwotCi0gICAg
aml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWRk
cmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgaml0LnN0b3JlUHRy
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDApLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhHUFJJbmZvOjpyZWdUMCkpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUklu
Zm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoYnVmZmVyICsgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMg
KyBpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCksIEZQUkluZm86OnRvUmVnaXN0ZXIoaSkpOwot
ICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdp
c3RlcnM7ICsraSkgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGppdC5sb2FkNjQoYnVm
ZmVyICsgaSwgR1BSSW5mbzo6dG9SZWdpc3RlcihpKSk7Ci0jZWxzZQotICAgICAgICBqaXQubG9h
ZDMyKGJ1ZmZlciArIGksIEdQUkluZm86OnRvUmVnaXN0ZXIoaSkpOwotI2VuZGlmCi0gICAgfQot
ICAgIAotICAgIGppdC5qdW1wKE1hY3JvQXNzZW1ibGVyOjpBYnNvbHV0ZUFkZHJlc3MoJnZtLT5v
c3JFeGl0SnVtcERlc3RpbmF0aW9uKSk7Ci0gICAgCisgICAgaml0LnByb2JlKE9TUkV4aXQ6OmV4
ZWN1dGVPU1JFeGl0LCBudWxscHRyKTsKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwg
R0xPQkFMX1RIVU5LX0lEKTsKLSAgICAKLSAgICBwYXRjaEJ1ZmZlci5saW5rKGZ1bmN0aW9uQ2Fs
bCwgT1NSRXhpdDo6Y29tcGlsZU9TUkV4aXQpOwotICAgIAotICAgIHJldHVybiBGSU5BTElaRV9D
T0RFKHBhdGNoQnVmZmVyLCAoIkRGRyBPU1IgZXhpdCBnZW5lcmF0aW9uIHRodW5rIikpOworICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkRGRyBPU1IgZXhpdCB0aHVuayIp
KTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckVudHJ5VGh1bmtHZW5lcmF0b3IoVk0q
IHZtKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5oCShyZXZpc2lvbiAy
MjExODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgVk07CiAKIG5hbWVzcGFjZSBERkcgewog
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcihW
TSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRUaHVua0dlbmVyYXRvcihWTSopOwog
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMjIxMTg3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2
ICs1MCw3IEBAIEV4ZWN1dGFibGVCYXNlKiBBc3NlbWJseUhlbHBlcnM6OmV4ZWN1dGEKICAgICBy
ZXR1cm4gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKTsKIH0KIAorLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgZml4IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiBWZWN0b3I8Qnl0
ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiYgQXNzZW1ibHlIZWxwZXJzOjpkZWNvZGVkQ29kZU1hcEZv
cihDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBBU1NFUlQoY29kZUJsb2NrID09IGNvZGVC
bG9jay0+YmFzZWxpbmVWZXJzaW9uKCkpOwpAQCAtODIwLDYxICs4MjEsNiBAQCBib29sIEFzc2Vt
Ymx5SGVscGVyczo6c3RvcmVXYXNtQ29udGV4dE5lCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAKLXZvaWQgQXNzZW1ibHlIZWxwZXJzOjpkZWJ1Z0NhbGwoVk0mIHZtLCBWX0RlYnVn
T3BlcmF0aW9uX0VQUCBmdW5jdGlvbiwgdm9pZCogYXJndW1lbnQpCi17Ci0gICAgc2l6ZV90IHNj
cmF0Y2hTaXplID0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIChHUFJJbmZvOjpudW1iZXJPZlJl
Z2lzdGVycyArIEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzKTsKLSAgICBTY3JhdGNoQnVmZmVy
KiBzY3JhdGNoQnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZlckZvclNpemUoc2NyYXRjaFNpemUpOwot
ICAgIEVuY29kZWRKU1ZhbHVlKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+
KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewotI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgICAgIHN0b3JlNjQoR1BSSW5mbzo6dG9SZWdpc3RlcihpKSwgYnVmZmVyICsgaSk7
Ci0jZWxzZQotICAgICAgICBzdG9yZTMyKEdQUkluZm86OnRvUmVnaXN0ZXIoaSksIGJ1ZmZlciAr
IGkpOwotI2VuZGlmCi0gICAgfQotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUklu
Zm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRy
KGJ1ZmZlciArIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSksIEdQUkluZm86OnJlZ1Qw
KTsKLSAgICAgICAgc3RvcmVEb3VibGUoRlBSSW5mbzo6dG9SZWdpc3RlcihpKSwgR1BSSW5mbzo6
cmVnVDApOwotICAgIH0KLQotICAgIC8vIFRlbGwgR0MgbWFyayBwaGFzZSBob3cgbXVjaCBvZiB0
aGUgc2NyYXRjaCBidWZmZXIgaXMgYWN0aXZlIGR1cmluZyBjYWxsLgotICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hZGRyZXNzT2ZBY3RpdmVMZW5ndGgoKSksIEdQUkluZm86
OnJlZ1QwKTsKLSAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKHNjcmF0Y2hTaXplKSwgR1BSSW5m
bzo6cmVnVDApOwotCi0jaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KSB8
fCBDUFUoTUlQUykKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYnVmZmVyKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIyKTsKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYXJndW1lbnQpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpOwotICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgR1BSUmVnIHNjcmF0Y2ggPSBzZWxlY3RTY3JhdGNoR1BS
KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjph
cmd1bWVudEdQUjIpOwotI2VsaWYgQ1BVKFg4NikKLSAgICBwb2tlKEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCAwKTsKLSAgICBwb2tlKFRydXN0ZWRJbW1QdHIoYXJndW1lbnQpLCAxKTsKLSAg
ICBwb2tlKFRydXN0ZWRJbW1QdHIoYnVmZmVyKSwgMik7Ci0gICAgR1BSUmVnIHNjcmF0Y2ggPSBH
UFJJbmZvOjpyZWdUMDsKLSNlbHNlCi0jZXJyb3IgIkpJVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMg
cGxhdGZvcm0uIgotI2VuZGlmCi0gICAgbW92ZShUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KGZ1bmN0aW9uKSksIHNjcmF0Y2gpOwotICAgIGNhbGwoc2NyYXRjaCk7Ci0KLSAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3Ro
KCkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwgR1BS
SW5mbzo6cmVnVDApOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51
bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGJ1ZmZl
ciArIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSksIEdQUkluZm86OnJlZ1QwKTsKLSAg
ICAgICAgbG9hZERvdWJsZShHUFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6dG9SZWdpc3RlcihpKSk7
Ci0gICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHUFJJbmZvOjpudW1iZXJPZlJl
Z2lzdGVyczsgKytpKSB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgbG9hZDY0KGJ1ZmZl
ciArIGksIEdQUkluZm86OnRvUmVnaXN0ZXIoaSkpOwotI2Vsc2UKLSAgICAgICAgbG9hZDMyKGJ1
ZmZlciArIGksIEdQUkluZm86OnRvUmVnaXN0ZXIoaSkpOwotI2VuZGlmCi0gICAgfQotfQotCiB2
b2lkIEFzc2VtYmx5SGVscGVyczo6Y29weUNhbGxlZVNhdmVzVG9WTUVudHJ5RnJhbWVDYWxsZWVT
YXZlc0J1ZmZlckltcGwoR1BSUmVnIGNhbGxlZVNhdmVzQnVmZmVyKQogewogI2lmIE5VTUJFUl9P
Rl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTID4gMApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAyMjExODcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC05OTIs
OSArOTkyLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gR1BSSW5mbzo6cmVnVDU7CiAgICAg
fQogCi0gICAgLy8gQWRkIGEgZGVidWcgY2FsbC4gVGhpcyBjYWxsIGhhcyBubyBlZmZlY3Qgb24g
SklUIGNvZGUgZXhlY3V0aW9uIHN0YXRlLgotICAgIHZvaWQgZGVidWdDYWxsKFZNJiwgVl9EZWJ1
Z09wZXJhdGlvbl9FUFAgZnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50KTsKLQogICAgIC8vIFRoZXNl
IG1ldGhvZHMgSklUIGdlbmVyYXRlIGR5bmFtaWMsIGRlYnVnLW9ubHkgY2hlY2tzIC0gYWtpbiB0
byBBU1NFUlRzLgogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICB2b2lkIGppdEFzc2VydElzSW50
MzIoR1BSUmVnKTsKQEAgLTE0NjUsNiArMTQ2Miw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lk
IGVtaXREdW1iVmlydHVhbENhbGwoVk0mLCBDYWxsTGlua0luZm8qKTsKICAgICAKKyAgICAvLyBG
SVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NTE0NS4KICAgICBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0
PiYgZGVjb2RlZENvZGVNYXBGb3IoQ29kZUJsb2NrKik7CiAKICAgICB2b2lkIG1ha2VTcGFjZU9u
U3RhY2tGb3JDQ2FsbCgpOwpAQCAtMTY1Niw2ICsxNjU0LDcgQEAgcHJvdGVjdGVkOgogICAgIENv
ZGVCbG9jayogbV9jb2RlQmxvY2s7CiAgICAgQ29kZUJsb2NrKiBtX2Jhc2VsaW5lQ29kZUJsb2Nr
OwogCisgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgZml4IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiAgICAgSGFzaE1hcDxDb2RlQmxvY2sq
LCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0Pj4gbV9kZWNvZGVkQ29kZU1hcHM7CiB9
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5jcHAJKHJldmlzaW9uIDIy
MTE4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsMTAgKzI2LDIyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR1BS
SW5mby5oIgogCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJQcm9i
ZUNvbnRleHQuaCIKKwogI2lmIEVOQUJMRShKSVQpCiAKIG5hbWVzcGFjZSBKU0MgewogCitKU1Zh
bHVlIEpTVmFsdWVSZWdzOjpldmFsdWF0ZShjb25zdCBQcm9iZTo6Q1BVU3RhdGUmIGNwdSkgY29u
c3QKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUoY3B1
LmdwcjxFbmNvZGVkSlNWYWx1ZT4oZ3ByKCkpKTsKKyNlbHNlCisgICAgcmV0dXJuIEpTVmFsdWUo
Y3B1LmdwcjxpbnQzMl90Pih0YWdHUFIoKSksIGNwdS5ncHI8aW50MzJfdD4ocGF5bG9hZEdQUigp
KSk7CisjZW5kaWYKK30KKwogdm9pZCBKU1ZhbHVlUmVnczo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAogewogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0zOSw2ICs1MSwyMSBAQCB2b2lkIEpT
VmFsdWVSZWdzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpCiAjZW5kaWYKIH0KIAorSlNWYWx1ZSBK
U1ZhbHVlU291cmNlOjpldmFsdWF0ZShjb25zdCBQcm9iZTo6Q1BVU3RhdGUmIGNwdSkgY29uc3QK
K3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGlmIChpc0FkZHJlc3MoKSkKKyAgICAgICAgcmV0
dXJuICpyZWludGVycHJldF9jYXN0PEpTVmFsdWUqPihjcHUuZ3ByPHVpbnQ4X3QqPihiYXNlKCkp
ICsgb2Zmc2V0KCkpOworICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUoY3B1LmdwcjxFbmNvZGVk
SlNWYWx1ZT4oZ3ByKCkpKTsKKyNlbHNlCisgICAgaWYgKGlzQWRkcmVzcygpKQorICAgICAgICBy
ZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KGNwdSAgLmdwcjx1aW50OF90Kj4oYmFz
ZSgpKSArIG9mZnNldCgpKTsKKyAgICBpZiAoaGFzS25vd25UYWcoKSkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWUodGFnKCksIGNwdS5ncHI8aW50MzJfdD4ocGF5bG9hZEdQUigpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWUoY3B1LmdwcjxpbnQzMl90Pih0YWdHUFIoKSksIGNwdS5ncHI8aW50MzJfdD4o
cGF5bG9hZEdQUigpKSk7CisjZW5kaWYKK30KKwogLy8gVGhpcyBpcyBpbiB0aGUgLmNwcCBmaWxl
IHRvIHdvcmsgYXJvdW5kIGNsYW5nIGlzc3Vlcy4KICNpZiBDUFUoWDg2XzY0KQogY29uc3QgR1BS
UmVnIEdQUkluZm86OnBhdGNocG9pbnRTY3JhdGNoUmVnaXN0ZXIgPSBNYWNyb0Fzc2VtYmxlcjo6
c19zY3JhdGNoUmVnaXN0ZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUklu
Zm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAko
cmV2aXNpb24gMjIxMTg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitu
YW1lc3BhY2UgUHJvYmUgeworc3RydWN0IENQVVN0YXRlOworfSAvLyBuYW1lc3BhY2UgUHJvYmUK
KwogZW51bSBOb1Jlc3VsdFRhZyB7IE5vUmVzdWx0IH07CiAKIC8vIFdlIHVzZSB0aGUgc2FtZSBj
b252ZW50aW9ucyBpbiB0aGUgYmFzbGluZSBKSVQgYXMgaW4gdGhlIExMaW50LiBJZiB5b3UKQEAg
LTc4LDYgKzgyLDggQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgdXNlcyhHUFJSZWcgZ3ByKSBj
b25zdCB7IHJldHVybiBtX2dwciA9PSBncHI7IH0KICAgICAKKyAgICBKU1ZhbHVlIGV2YWx1YXRl
KGNvbnN0IFByb2JlOjpDUFVTdGF0ZSYpIGNvbnN0OworCiAgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgpAQCAtMTQ5LDYgKzE1NSw4IEBAIHB1YmxpYzoK
ICAgICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyBhc0FkZHJlc3MoKSBjb25zdCB7IHJl
dHVybiBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlKCksIG9mZnNldCgpKTsgfQogICAgIAor
ICAgIEpTVmFsdWUgZXZhbHVhdGUoY29uc3QgUHJvYmU6OkNQVVN0YXRlJikgY29uc3Q7CisKIHBy
aXZhdGU6CiAgICAgc3RhdGljIGlubGluZSBpbnQzMl90IG5vdEFkZHJlc3MoKSB7IHJldHVybiAw
eDgwMDAwMDAwOyB9ICAgICAKICAgICAgICAgICAKQEAgLTIxMiw2ICsyMjAsOCBAQCBwdWJsaWM6
CiAKICAgICBib29sIHVzZXMoR1BSUmVnIGdwcikgY29uc3QgeyByZXR1cm4gbV90YWdHUFIgPT0g
Z3ByIHx8IG1fcGF5bG9hZEdQUiA9PSBncHI7IH0KICAgICAKKyAgICBKU1ZhbHVlIGV2YWx1YXRl
KGNvbnN0IFByb2JlOjpDUFVTdGF0ZSYpIGNvbnN0OworCiAgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgpAQCAtMzIxLDYgKzMzMSw4IEBAIHB1YmxpYzoK
ICAgICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyBhc0FkZHJlc3ModW5zaWduZWQgYWRk
aXRpb25hbE9mZnNldCA9IDApIGNvbnN0IHsgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2UoKSwgb2Zmc2V0KCkgKyBhZGRpdGlvbmFsT2Zmc2V0KTsgfQogICAgIAorICAgIEpTVmFs
dWUgZXZhbHVhdGUoY29uc3QgUHJvYmU6OkNQVVN0YXRlJikgY29uc3Q7CisKIHByaXZhdGU6CiAg
ICAgc3RhdGljIGlubGluZSBpbnQzMl90IG5vdEFkZHJlc3MoKSB7IHJldHVybiAweDgwMDAwMDAw
OyB9ICAgICAKICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjIxMTg3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI2NCw2ICsyMjY0
LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlQgogICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGNoYXIqPihyZXN1bHQpOwogfQogCisvLyBGSVhNRTogcmVtb3Zl
IHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NTE0NS4KIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25PU1JXcml0ZUJhcnJpZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU0NlbGwqIGNlbGwpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkocmV2aXNp
b24gMjIxMTg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0Miw2ICs0NDIsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblJlYWxsb2NhdGVCCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlYWxsb2Nh
dGVCdXR0ZXJmbHlUb0dyb3dQcm9wZXJ0eVN0b3JhZ2UoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBz
aXplX3QgbmV3U2l6ZSkgV1RGX0lOVEVSTkFMOwogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgoRXhlY1N0YXRlKiwgSlNDZWxsKik7CisvLyBGSVhNRTog
cmVtb3ZlIHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NTE0NS4KIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25PU1JXcml0ZUJhcnJp
ZXIoRXhlY1N0YXRlKiwgSlNDZWxsKik7CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25F
eGNlcHRpb25GdXp6KEV4ZWNTdGF0ZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcAkocmV2aXNpb24gMjIx
MTg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMi0yMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTEsNiArOTEsMTAgQEAgdm9pZCBDb21w
aWxhdGlvbjo6YWRkT1NSRXhpdFNpdGUoY29uc3QgVgogCiBPU1JFeGl0KiBDb21waWxhdGlvbjo6
YWRkT1NSRXhpdCh1bnNpZ25lZCBpZCwgY29uc3QgT3JpZ2luU3RhY2smIG9yaWdpblN0YWNrLCBF
eGl0S2luZCBleGl0S2luZCwgYm9vbCBpc1dhdGNocG9pbnQpCiB7CisgICAgZm9yIChhdXRvIGl0
ID0gbV9vc3JFeGl0cy5iZWdpbigpOyBpdCAhPSBtX29zckV4aXRzLmVuZCgpOyArK2l0KSB7Cisg
ICAgICAgIGlmIChpdC0+aWQoKSA9PSBpZCkKKyAgICAgICAgICAgIHJldHVybiAmKCppdCk7Cisg
ICAgfQogICAgIG1fb3NyRXhpdHMuYXBwZW5kKE9TUkV4aXQoaWQsIG9yaWdpblN0YWNrLCBleGl0
S2luZCwgaXNXYXRjaHBvaW50KSk7CiAgICAgcmV0dXJuICZtX29zckV4aXRzLmxhc3QoKTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9TUkV4aXQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPU1JF
eGl0LmgJKHJldmlzaW9uIDIyMTE4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlck9TUkV4aXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw3ICs0Myw4IEBAIHB1YmxpYzoK
ICAgICAKICAgICB1aW50NjRfdCogY291bnRlckFkZHJlc3MoKSB7IHJldHVybiAmbV9jb3VudGVy
OyB9CiAgICAgdWludDY0X3QgY291bnQoKSBjb25zdCB7IHJldHVybiBtX2NvdW50ZXI7IH0KLSAg
ICAKKyAgICB2b2lkIGluY0NvdW50KCkgeyBtX2NvdW50ZXIrKzsgfQorCiAgICAgSlNWYWx1ZSB0
b0pTKEV4ZWNTdGF0ZSopIGNvbnN0OwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkocmV2aXNpb24gMjIxMTg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4g
KHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1r
QHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNywgMjAw
OCwgMjAwOSwgMjAxMiwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAg
Q29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM0NCwxMiArMzQ0LDkgQEAgcHVibGljOgogICAgIHVp
bnQzMl90IHRhZygpIGNvbnN0OwogICAgIGludDMyX3QgcGF5bG9hZCgpIGNvbnN0OwogCi0jaWYg
IUVOQUJMRShKSVQpCi0gICAgLy8gVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGJ5IHRoZSBMTElu
dCBDIExvb3AgaW50ZXJwcmV0ZXIgd2hvIG5lZWRzCi0gICAgLy8gc3ludGhlc2l6ZSBKU1ZhbHVl
IGZyb20gaXRzICJyZWdpc3RlciJzIGhvbGRpbmcgdGFnIGFuZCBwYXlsb2FkCi0gICAgLy8gdmFs
dWVzLgorICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBieSB0aGUgTExJbnQgQyBMb29w
IGludGVycHJldGVyIGFuZCBPU1JFeGl0IGNvZGUgd2hvIG5lZWRzCisgICAgLy8gc3ludGhlc2l6
ZSBKU1ZhbHVlIGZyb20gaXRzICJyZWdpc3RlciJzIGhvbGRpbmcgdGFnIGFuZCBwYXlsb2FkIHZh
bHVlcy4KICAgICBleHBsaWNpdCBKU1ZhbHVlKGludDMyX3QgdGFnLCBpbnQzMl90IHBheWxvYWQp
OwotI2VuZGlmCiAKICNlbGlmIFVTRShKU1ZBTFVFNjQpCiAgICAgLyoKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkocmV2aXNp
b24gMjIxMTg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzQwLDcgKzM0MCw3IEBAIGlubGluZSBKU1ZhbHVl
OjpKU1ZhbHVlKGludCBpKQogICAgIHUuYXNCaXRzLnBheWxvYWQgPSBpOwogfQogCi0jaWYgIUVO
QUJMRShKSVQpCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVl
KGludDMyX3QgdGFnLCBpbnQzMl90IHBheWxvYWQpCiB7CiAgICAgdS5hc0JpdHMudGFnID0gdGFn
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319137</attachid>
            <date>2017-08-26 12:32:58 -0700</date>
            <delta_ts>2017-08-26 14:25:44 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-175144.patch</filename>
            <type>text/plain</type>
            <size>113142</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIxMjI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3NCBA
QAorMjAxNy0wOC0yNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
VXNlIEpJVCBwcm9iZXMgZm9yIERGRyBPU1IgZXhpdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzM0MzcwNTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBkb2VzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIDEuIFJlcGxhY2VzIG9z
ckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoKSB3aXRoIG9zckV4aXRUaHVua0dlbmVyYXRv
cigpLgorICAgICAgICAgICBXaGlsZSBvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKCkg
Z2VuZXJhdGVzIGEgdGh1bmsgdGhhdCBjb21waWxlcyBhCisgICAgICAgICAgIHVuaXF1ZSBPU1Ig
b2ZmcmFtcCBmb3IgZWFjaCBERkcgT1NSIGV4aXQgc2l0ZSwgb3NyRXhpdFRodW5rR2VuZXJhdG9y
KCkKKyAgICAgICAgICAgZ2VuZXJhdGVzIGEgdGh1bmsgdGhhdCBqdXN0IGV4ZWN1dGVzIHRoZSBP
U1IgZXhpdC4KKworICAgICAgICAgICBUaGUgb3NyRXhpdFRodW5rR2VuZXJhdG9yKCkgZ2VuZXJh
dGVkIHRodW5rIHdvcmtzIGJ5IHVzaW5nIGEgc2luZ2xlIEpJVCBwcm9iZQorICAgICAgICAgICB0
byBjYWxsIE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KCkuICBUaGUgSklUIHByb2JlIHRha2VzIGNh
cmUgb2YgcHJlc2VydmluZworICAgICAgICAgICBDUFUgcmVnaXN0ZXJzLCBhbmQgcHJvdmlkaW5n
IHRoZSBQcm9iZTo6U3RhY2sgbWVjaGFuaXNtIGZvciBtb2RpZnlpbmcgdGhlCisgICAgICAgICAg
IHN0YWNrIGZyYW1lLgorCisgICAgICAgICAgIE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KCkgcmVw
bGFjZXMgT1NSRXhpdDo6Y29tcGlsZU9TUkV4aXQoKSBhbmQKKyAgICAgICAgICAgT1NSRXhpdDo6
Y29tcGlsZUV4aXQoKS4gIEl0IGlzIGJhc2ljYWxseSBhIHJlLXdyaXRlIG9mIHRob3NlIGZ1bmN0
aW9ucyB0bworICAgICAgICAgICBleGVjdXRlIHRoZSBPU1IgZXhpdCB3b3JrIGluc3RlYWQgb2Yg
Y29tcGlsaW5nIGNvZGUgdG8gZXhlY3V0ZSB0aGUgd29yay4KKworICAgICAgICAgICBBcyBhIHJl
c3VsdCwgd2UgZ2V0IHRoZSBmb2xsb3dpbmcgc2F2aW5nczoKKyAgICAgICAgICAgYS4gbm8gbW9y
ZSBPU1IgZXhpdCByYW1wIGNvbXBpbGF0aW9uIHRpbWUuCisgICAgICAgICAgIGIuIG5vIHVzZSBv
ZiBKSVQgZXhlY3V0YWJsZSBtZW1vcnkgZm9yIHN0b3JpbmcgZWFjaCB1bmlxdWUgT1NSIGV4aXQg
cmFtcC4KKworICAgICAgICAgICBPbiB0aGUgbmVnYXRpdmUgc2lkZSwgd2UgaW5jdXIgdGhlc2Ug
Y29zdHM6CisgICAgICAgICAgIGMuIHRoZSBPU1JFeGl0OjpleGVjdXRlT1NSRXhpdCgpIHJhbXAg
bWF5IGJlIGEgbGl0dGxlIHNsb3dlciB0aGFuIHRoZSBjb21waWxlZAorICAgICAgICAgICAgICB2
ZXJzaW9uIG9mIHRoZSByYW1wLiAgSG93ZXZlciwgT1NSIGV4aXRzIGFyZSByYXJlLiAgSGVuY2Us
IHRoaXMgc21hbGwKKyAgICAgICAgICAgICAgZGlmZmVyZW5jZSBzaG91bGQgbm90IG1hdHRlciBt
dWNoLiAgSXQgaXMgYWxzbyBvZmZzZXQgYnkgdGhlIHNhdmluZ3MgZnJvbQorICAgICAgICAgICAg
ICAoYSkuCisgICAgICAgICAgIGQuIHRoZSBQcm9iZTo6U3RhY2sgYWxsb2NhdGVzIDFLIHBhZ2Vz
IGZvciBtZW1vcnkgZm9yIGJ1ZmZlcmluZyBzdGFjaworICAgICAgICAgICAgICBtb2RpZmNhdGlv
bnMuICBUaGUgbnVtYmVyIG9mIHRoZXNlIHBhZ2VzIGRlcGVuZHMgb24gdGhlIHNwYW4gb2Ygc3Rh
Y2sgbWVtb3J5CisgICAgICAgICAgICAgIHRoYXQgdGhlIE9TUiBleGl0IHJhbXAgcmVhZHMgZnJv
bSBhbmQgd3JpdGVzIHRvLiAgU2luY2UgdGhlIE9TUiBleGl0IHJhbXAKKyAgICAgICAgICAgICAg
dGVuZHMgdG8gb25seSBtb2RpZnkgdmFsdWVzIGluIHRoZSBjdXJyZW50IERGRyBmcmFtZSBhbmQg
dGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgVk1FbnRyeVJlY29yZCwgdGhlIG51bWJlciBvZiBw
YWdlcyB0ZW5kcyB0byBvbmx5IGJlIDEgb3IgMi4KKworICAgICAgICAyLiBGaXhlZCB0aGUgYm90
dG9tIG1vc3QgUHJvYmU6OkNvbnRleHQgYW5kIFByb2JlOjpTdGFjayBnZXQvc2V0IG1ldGhvZHMg
dG8gdXNlCisgICAgICAgICAgIHN0ZDo6bWVtY3B5IHRvIGF2b2lkIHN0cmljdCBhbGlhc2luZyBp
c3N1ZXMuCisKKyAgICAgICAgMy4gTWlzY2VsbGFuZW91cyBtZXRob2RzIGFkZGVkIHRvIG1ha2Ug
dGhlIFByb2JlOjpDb250ZXh0IGVhc2llciBvZiB1c2UuCisKKyAgICAgICAgNC4gQWRkZWQgYSBQ
cm9iZTo6RnJhbWUgY2xhc3MgdGhhdCBtYWtlcyBpdCBlYXNpZXIgdG8gZ2V0L3NldCBvcGVyYW5k
cyBhbmQKKyAgICAgICAgICAgYXJndW1lbnRzIGluIGEgZ2l2ZW4gZnJhbWUgdXNpbmcgdGhlIGRl
ZmVycmVkIHdyaXRlIHByb3BlcnRpZXMgb2YgdGhlCisgICAgICAgICAgIFByb2JlOjpTdGFjay4g
IFByb2JlOjpGcmFtZSBtYWtlcyBpdCBlYXNpZXIgdG8gZG8gc29tZSBvZiB0aGUgcmVjb3Zlcnkg
d29yayBpbgorICAgICAgICAgICB0aGUgT1NSIGV4aXQgcmFtcC4KKworICAgICAgICA1LiBDbG9u
ZWQgb3IgY29udmVydGVkIHNvbWUgZnVuY3Rpb25zIG5lZWRlZCBieSB0aGUgT1NSIGV4aXQgcmFt
cC4gIFRoZSBvcmlnaW5hbAorICAgICAgICAgICB2ZXJzaW9ucyBvZiB0aGVzZSBmdW5jdGlvbnMg
YXJlIHN0aWxsIGxlZnQgaW4gcGxhY2UgYmVjYXVzZSB0aGV5IGFyZSBzdGlsbAorICAgICAgICAg
ICBuZWVkZWQgZm9yIEZUTCBPU1IgZXhpdC4gIEEgRklYTUUgY29tbWVudCBoYXMgYmVlbiBhZGRl
ZCB0byByZW1vdmUgdGhlbSBsYXRlci4KKyAgICAgICAgICAgVGhlc2UgZnVuY3Rpb25zIGluY2x1
ZGU6CisKKyAgICAgICAgICAgREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCdzIGhhbmRsZUV4
aXRDb3VudHMoKSA9PT4KKyAgICAgICAgICAgICAgIENvZGVCbG9jazo6dXBkYXRlT1NSRXhpdENv
dW50ZXJBbmRDaGVja0lmTmVlZFRvUmVvcHRpbWl6ZSgpCisgICAgICAgICAgIERGR09TUkV4aXRD
b21waWxlckNvbW1vbi5jcHAncyByZWlmeUlubGluZWRDYWxsRnJhbWVzKCkgPT0+CisgICAgICAg
ICAgICAgICBERkdPU1JFeGl0LmNwcCdzIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoKQorICAgICAg
ICAgICBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwJ3MgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0
KCkgPT0+CisgICAgICAgICAgICAgICBERkdPU1JFeGl0LmNwcCdzIGFkanVzdEFuZEp1bXBUb1Rh
cmdldCgpCisKKyAgICAgICAgICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJl
cG9ydFZhbHVlKCkgPT0+CisgICAgICAgICAgICAgICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9m
aWxlOjpyZXBvcnRWYWx1ZSgpCisKKyAgICAgICAgICAgREZHT3BlcmF0aW9ucy5jcHAncyBvcGVy
YXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHNEdXJpbmdFeGl0KCkgPT0+CisgICAgICAgICAgICAg
ICBERkdPU1JFeGl0LmNwcCdzIGNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4aXQoKQorICAg
ICAgICAgICBERkdPcGVyYXRpb25zLmNwcCdzIG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50
c0R1cmluZ0V4aXQoKSA9PT4KKyAgICAgICAgICAgICAgIERGR09TUkV4aXQuY3BwJ3MgY3JlYXRl
Q2xvbmVkQXJndW1lbnRzRHVyaW5nRXhpdCgpCisKKyAgICAgICAgNi4gQ2hhbmdlZCBQcm9maWxl
cjo6Q29tcGlsYXRpb246OmFkZE9TUkV4aXQoKSB0byBmaXJzdCBjaGVjayBpZiBhbiBleGlzdGlu
ZworICAgICAgICAgICByZWNvcmQgYWxyZWFkeSBleGlzdHMgZm9yIGEgc3BlY2lmaWVkIE9TUkV4
aXQgaWQuICBJZiBzbywgcmV0dXJuIHRoZSBleGlzdGluZworICAgICAgICAgICBvbmUuICBFbHNl
LCBjcmVhdGUgYSBuZXcgb25lLgorCisgICAgICAgICAgIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ug
d2UgcHJldmlvdXNseSBvbmx5IGNhbGwgYWRkT1NSRXhpdCgpIHdoZW4gY29tcGlsaW5nIHRoZQor
ICAgICAgICAgICBPU1IgZXhpdCByYW1wIGluc3RlYWQgb2YgZWFjaCB0aW1lIHdlIGV4ZWN1dGUg
dGhlIHJhbXAuICBOb3csIHRoZXJlIGlzIG5vCisgICAgICAgICAgIHNlcGFyYXRlIGNvbXBpbGF0
aW9uIHBhc3MgZm9yIHRoZSByYW1wLCBhbmQgd2UgZW5kIHVwIGNhbGxpbmcgaXQgZXZlcnkgdGlt
ZQorICAgICAgICAgICB3ZSBleGVjdXRlIHRoZSByYW1wLgorCisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpzdGRGdW5jdGlvbkNhbGxiYWNrKToKKyAg
ICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6UHJpbnRlcjo6cHJpbnRDYWxsYmFjayk6CisgICAgICAgICogYXNzZW1ibGVyL1Byb2JlQ29u
dGV4dC5oOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q1BVU3RhdGU6OmdwciBjb25zdCk6CisgICAg
ICAgIChKU0M6OlByb2JlOjpDUFVTdGF0ZTo6c3ByIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJv
YmU6OkNvbnRleHQ6OkNvbnRleHQpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q29udGV4dDo6YXJn
KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6Omdwcik6CisgICAgICAgIChKU0M6OlBy
b2JlOjpDb250ZXh0OjpzcHIpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q29udGV4dDo6ZnByKToK
KyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6Omdwck5hbWUpOgorICAgICAgICAoSlNDOjpQ
cm9iZTo6Q29udGV4dDo6c3ByTmFtZSk6CisgICAgICAgIChKU0M6OlByb2JlOjpDb250ZXh0Ojpm
cHJOYW1lKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6OmdwciBjb25zdCk6CisgICAg
ICAgIChKU0M6OlByb2JlOjpDb250ZXh0OjpzcHIgY29uc3QpOgorICAgICAgICAoSlNDOjpQcm9i
ZTo6Q29udGV4dDo6ZnByIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6OnBj
KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6OmZwKToKKyAgICAgICAgKEpTQzo6UHJv
YmU6OkNvbnRleHQ6OnNwKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OiBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogYXNzZW1ibGVyL1Byb2JlRnJhbWUuaDogQWRkZWQuCisgICAgICAgIChKU0M6
OlByb2JlOjpGcmFtZTo6RnJhbWUpOgorICAgICAgICAoSlNDOjpQcm9iZTo6RnJhbWU6OmdldEFy
Z3VtZW50KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkZyYW1lOjpnZXRPcGVyYW5kKToKKyAgICAg
ICAgKEpTQzo6UHJvYmU6OkZyYW1lOjpnZXQpOgorICAgICAgICAoSlNDOjpQcm9iZTo6RnJhbWU6
OnNldEFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkZyYW1lOjpzZXRPcGVyYW5kKToK
KyAgICAgICAgKEpTQzo6UHJvYmU6OkZyYW1lOjpzZXQpOgorICAgICAgICAqIGFzc2VtYmxlci9Q
cm9iZVN0YWNrLmg6CisgICAgICAgIChKU0M6OlByb2JlOjpQYWdlOjpnZXQpOgorICAgICAgICAo
SlNDOjpQcm9iZTo6UGFnZTo6c2V0KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OlBhZ2U6OnBoeXNp
Y2FsQWRkcmVzc0Zvcik6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6Z2V0KToKKyAgICAg
ICAgKEpTQzo6UHJvYmU6OlN0YWNrOjpzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0FyaXRoUHJv
ZmlsZS5jcHA6CisgICAgICAgICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmg6CisgICAgICAgICog
Ynl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6b2Jz
ZXJ2ZUFycmF5TW9kZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjp1cGRhdGVPU1JFeGl0Q291bnRlckFuZENoZWNrSWZOZWVkVG9S
ZW9wdGltaXplKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjphZGRyZXNzT2ZPU1JFeGl0Q291bnRlcik6IERlbGV0ZWQuCisgICAgICAg
ICogYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5oOgorICAgICAgICAoSlNDOjpFeGVjdXRpb25D
b3VudGVyOjpoYXNDcm9zc2VkVGhyZXNob2xkIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9N
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6TWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZTo6cmVwb3J0VmFsdWUpOgorICAgICAgICAqIGJ5dGVjb2RlL01l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlSW1wbCk6CisgICAgICAgICogZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6Cisg
ICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmpzVmFsdWVG
b3IpOgorICAgICAgICAoSlNDOjpERkc6OnJlc3RvcmVDYWxsZWVTYXZlc0Zvcik6CisgICAgICAg
IChKU0M6OkRGRzo6c2F2ZUNhbGxlZVNhdmVzRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpyZXN0
b3JlQ2FsbGVlU2F2ZXNGcm9tVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIpOgorICAgICAg
ICAoSlNDOjpERkc6OmNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZm
ZXIpOgorICAgICAgICAoSlNDOjpERkc6OnNhdmVPckNvcHlDYWxsZWVTYXZlc0Zvcik6CisgICAg
ICAgIChKU0M6OkRGRzo6Y3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdCk6CisgICAgICAg
IChKU0M6OkRGRzo6Y3JlYXRlQ2xvbmVkQXJndW1lbnRzRHVyaW5nRXhpdCk6CisgICAgICAgIChK
U0M6OkRGRzo6ZW1pdFJlc3RvcmVBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4
aXQ6OmV4ZWN1dGVPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxs
RnJhbWVzKToKKyAgICAgICAgKEpTQzo6REZHOjphZGp1c3RBbmRKdW1wVG9UYXJnZXQpOgorICAg
ICAgICAoSlNDOjpERkc6OnByaW50T1NSRXhpdCk6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhp
dDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok9T
UkV4aXQ6OmNvbXBpbGVPU1JFeGl0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpPU1JF
eGl0Ojpjb21waWxlRXhpdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6
ZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFpbHVyZSk6IERlbGV0ZWQuCisgICAgICAg
ICogZGZnL0RGR09TUkV4aXQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Ojpjb25zaWRl
ckFkZGluZ0FzRnJlcXVlbnRFeGl0U2l0ZSk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21w
aWxlckNvbW1vbi5jcHA6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5o
OgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3Bl
cmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6Om9zckV4aXRUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkRGRzo6b3NyRXhpdEdl
bmVyYXRpb25UaHVua0dlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR1RodW5r
cy5oOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpB
c3NlbWJseUhlbHBlcnM6OmRlYnVnQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0Fzc2Vt
Ymx5SGVscGVycy5oOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGls
YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6Q29tcGlsYXRpb246OmFkZE9TUkV4
aXQpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5oOgorICAgICAgICAoSlND
OjpQcm9maWxlcjo6T1NSRXhpdDo6aW5jQ291bnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNW
YWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKwogMjAxNy0w
OC0yNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCBzdXBwcmVzcyB3YXJuaW5ncyBpbiBHVEsgcG9ydApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyMTIyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDQ0LDYgKzI0NDQsNyBAQAogCQlGRTEwQUFFQzFGNDRENTQ1MDA5REVEQzUgLyog
UHJvYmVTdGFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTEwQUFFOTFGNDRENTEwMDA5REVEQzUgLyogUHJvYmVTdGFjay5jcHAgKi87IH07CiAJ
CUZFMTBBQUVFMUY0NEQ5NTQwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTBBQUVEMUY0NEQ5NDYwMDlERURD
NSAvKiBQcm9iZUNvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlGRTEwQUFGNDFGNDY4Mzk2MDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTBBQUYz
MUY0NjgyNkQwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuY3BwICovOyB9OworCQlGRTEwQUFGRjFG
NEUzOEU1MDA5REVEQzUgLyogUHJvYmVGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxMEFBRkUxRjRFMzhEQTAwOURFREM1IC8qIFByb2JlRnJh
bWUuaCAqLzsgfTsKIAkJRkUxMjIwMjcxQkU3RjU4QzAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxMjIw
MjYxQkU3RjU2NDAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5oICovOyB9OwogCQlGRTEyMjAy
ODFCRTdGNTkxMDAzOUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTIyMDI1MUJFN0Y1NjQwMDM5RTZGMiAv
KiBKSVRBZGRHZW5lcmF0b3IuY3BwICovOyB9OwogCQlGRTE4N0EwMTFCRkJFNTVFMDAzOEJCQ0Eg
LyogSklUTXVsR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFMTg3OUZGMUJGQkM3M0MwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3Iu
Y3BwICovOyB9OwpAQCAtNTEzOCw2ICs1MTM5LDcgQEAKIAkJRkUxMEFBRUExRjQ0RDUxMjAwOURF
REM1IC8qIFByb2JlU3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJv
YmVTdGFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTEwQUFFRDFGNDREOTQ2
MDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFByb2JlQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTEwQUFG
MzFGNDY4MjZEMDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFByb2JlQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUZFMTBBQUZFMUY0RTM4REEwMDlERURDNSAvKiBQcm9iZUZyYW1lLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2JlRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkUxMjIwMjUxQkU3RjU2NDAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRBZGRHZW5lcmF0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTEyMjAyNjFCRTdGNTY0MDAz
OUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpJVEFkZEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTE4
NzlGRjFCRkJDNzNDMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVE11bEdlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC03NzIyLDYgKzc3MjQsNyBAQAogCQkJCUZFNjNERDUzMUVBOUI2
MEUwMDEwM0E2OSAvKiBQcmludGVyLmggKi8sCiAJCQkJRkUxMEFBRjMxRjQ2ODI2RDAwOURFREM1
IC8qIFByb2JlQ29udGV4dC5jcHAgKi8sCiAJCQkJRkUxMEFBRUQxRjQ0RDk0NjAwOURFREM1IC8q
IFByb2JlQ29udGV4dC5oICovLAorCQkJCUZFMTBBQUZFMUY0RTM4REEwMDlERURDNSAvKiBQcm9i
ZUZyYW1lLmggKi8sCiAJCQkJRkUxMEFBRTkxRjQ0RDUxMDAwOURFREM1IC8qIFByb2JlU3RhY2su
Y3BwICovLAogCQkJCUZFMTBBQUVBMUY0NEQ1MTIwMDlERURDNSAvKiBQcm9iZVN0YWNrLmggKi8s
CiAJCQkJRkU1MzNDQTAxRjIxN0MzMTAwMTZBMUZFIC8qIHRlc3RtYXNtLmNwcCAqLywKQEAgLTk2
ODksNiArOTY5Miw3IEBACiAJCQkJQUQyRkNDMUQxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2Vt
Ymx5TW9kdWxlUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ0OTM3QzgxRERE
MEFBRTAwNzdDODA3IC8qIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBRDJGQ0MyRDFEQjgzOEZEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLAorCQkJCUZFMTBBQUZGMUY0RTM4RTUwMDlERURDNSAvKiBQcm9iZUZyYW1l
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0JGOTFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkND
MUUxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3Iu
bHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0JGQjFEQjU4REFEMDBCM0U3MzYgLyogV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5jcHAJ
KHJldmlzaW9uIDIyMTIyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIGNvbnN0IGRv
dWJsZSBNYWNyb0Fzc2VtYmxlcjo6dHdvVG9UaGUzMiAKICNpZiBFTkFCTEUoTUFTTV9QUk9CRSkK
IHN0YXRpYyB2b2lkIHN0ZEZ1bmN0aW9uQ2FsbGJhY2soUHJvYmU6OkNvbnRleHQmIGNvbnRleHQp
CiB7Ci0gICAgYXV0byBmdW5jID0gc3RhdGljX2Nhc3Q8Y29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lk
KFByb2JlOjpDb250ZXh0Jik+Kj4oY29udGV4dC5hcmcpOworICAgIGF1dG8gZnVuYyA9IGNvbnRl
eHQuYXJnPGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYpPio+KCk7CiAg
ICAgKCpmdW5jKShjb250ZXh0KTsKIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAJKHJl
dmlzaW9uIDIyMTIyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJQcmludGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZv
aWQgcHJpbnRNZW1vcnkoUHJpbnRTdHJlYW0mIG91dCwgQ29udGUKIHZvaWQgcHJpbnRDYWxsYmFj
ayhQcm9iZTo6Q29udGV4dCYgcHJvYmVDb250ZXh0KQogewogICAgIGF1dG8mIG91dCA9IFdURjo6
ZGF0YUZpbGUoKTsKLSAgICBQcmludFJlY29yZExpc3QmIGxpc3QgPSAqcmVpbnRlcnByZXRfY2Fz
dDxQcmludFJlY29yZExpc3QqPihwcm9iZUNvbnRleHQuYXJnKTsKKyAgICBQcmludFJlY29yZExp
c3QmIGxpc3QgPSAqcHJvYmVDb250ZXh0LmFyZzxQcmludFJlY29yZExpc3QqPigpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7IGkrKykgewogICAgICAgICBhdXRvJiBy
ZWNvcmQgPSBsaXN0W2ldOwogICAgICAgICBDb250ZXh0IGNvbnRleHQocHJvYmVDb250ZXh0LCBy
ZWNvcmQuZGF0YSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2Jl
Q29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
UHJvYmVDb250ZXh0LmgJKHJldmlzaW9uIDIyMTIyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvUHJvYmVDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE0ICs0NSw4
IEBAIHN0cnVjdCBDUFVTdGF0ZSB7CiAgICAgaW5saW5lIHVpbnRwdHJfdCYgc3ByKFNQUmVnaXN0
ZXJJRCk7CiAgICAgaW5saW5lIGRvdWJsZSYgZnByKEZQUmVnaXN0ZXJJRCk7CiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFs
PFQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVsbHB0cj4KLSAgICBUIGdwcihSZWdpc3RlcklEKSBjb25z
dDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6
OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRyPgotICAgIFQgZ3ByKFJlZ2lz
dGVySUQpIGNvbnN0OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRyPgotICAg
IFQgc3ByKFNQUmVnaXN0ZXJJRCkgY29uc3Q7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGUqID0g
bnVsbHB0cj4KLSAgICBUIHNwcihTUFJlZ2lzdGVySUQpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IFQgZ3ByKFJlZ2lzdGVySUQpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IFQgc3ByKFNQUmVnaXN0ZXJJRCkgY29uc3Q7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
VCBmcHIoRlBSZWdpc3RlcklEKSBjb25zdDsKIAogICAgIHZvaWQqJiBwYygpOwpAQCAtODUsMzIg
Kzc5LDI0IEBAIGlubGluZSBkb3VibGUmIENQVVN0YXRlOjpmcHIoRlBSZWdpc3RlckkKICAgICBy
ZXR1cm4gZnByc1tpZF07CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlwZSo+Ci1UIENQVVN0YXRl
OjpncHIoUmVnaXN0ZXJJRCBpZCkgY29uc3QKLXsKLSAgICBDUFVTdGF0ZSogY3B1ID0gY29uc3Rf
Y2FzdDxDUFVTdGF0ZSo+KHRoaXMpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihjcHUtPmdw
cihpZCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZSo+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgogVCBDUFVTdGF0ZTo6Z3ByKFJlZ2lzdGVySUQgaWQpIGNvbnN0CiB7CiAgICAgQ1BVU3RhdGUq
IGNwdSA9IGNvbnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsKLSAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxUPihjcHUtPmdwcihpZCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGUqPgot
VCBDUFVTdGF0ZTo6c3ByKFNQUmVnaXN0ZXJJRCBpZCkgY29uc3QKLXsKLSAgICBDUFVTdGF0ZSog
Y3B1ID0gY29uc3RfY2FzdDxDUFVTdGF0ZSo+KHRoaXMpOwotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxUPihjcHUtPnNwcihpZCkpOworICAgIGF1dG8mIGZyb20gPSBjcHUtPmdwcihpZCk7CisgICAg
dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD46OnR5cGUgdG8geyB9OworICAgIHN0ZDo6bWVt
Y3B5KCZ0bywgJmZyb20sIHNpemVvZih0bykpOyAvLyBVc2Ugc3RkOjptZW1jcHkgdG8gYXZvaWQg
c3RyaWN0IGFsaWFzaW5nIGlzc3Vlcy4KKyAgICByZXR1cm4gdG87CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFs
dWU+Ojp0eXBlKj4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CiBUIENQVVN0YXRlOjpzcHIoU1BSZWdp
c3RlcklEIGlkKSBjb25zdAogewogICAgIENQVVN0YXRlKiBjcHUgPSBjb25zdF9jYXN0PENQVVN0
YXRlKj4odGhpcyk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VD4oY3B1LT5zcHIoaWQp
KTsKKyAgICBhdXRvJiBmcm9tID0gY3B1LT5zcHIoaWQpOworICAgIHR5cGVuYW1lIHN0ZDo6cmVt
b3ZlX2NvbnN0PFQ+Ojp0eXBlIHRvIHsgfTsKKyAgICBzdGQ6Om1lbWNweSgmdG8sICZmcm9tLCBz
aXplb2YodG8pKTsgLy8gVXNlIHN0ZDo6bWVtY3B5IHRvIGF2b2lkIHN0cmljdCBhbGlhc2luZyBp
c3N1ZXMuCisgICAgcmV0dXJuIHRvOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMjA1
LDI1ICsxOTEsMzEgQEAgcHVibGljOgogICAgIHVzaW5nIEZQUmVnaXN0ZXJJRCA9IE1hY3JvQXNz
ZW1ibGVyOjpGUFJlZ2lzdGVySUQ7CiAKICAgICBDb250ZXh0KFN0YXRlKiBzdGF0ZSkKLSAgICAg
ICAgOiBtX3N0YXRlKHN0YXRlKQotICAgICAgICAsIGFyZyhzdGF0ZS0+YXJnKQotICAgICAgICAs
IGNwdShzdGF0ZS0+Y3B1KQorICAgICAgICA6IGNwdShzdGF0ZS0+Y3B1KQorICAgICAgICAsIG1f
c3RhdGUoc3RhdGUpCiAgICAgeyB9CiAKLSAgICB1aW50cHRyX3QmIGdwcihSZWdpc3RlcklEIGlk
KSB7IHJldHVybiBtX3N0YXRlLT5jcHUuZ3ByKGlkKTsgfQotICAgIHVpbnRwdHJfdCYgc3ByKFNQ
UmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LnNwcihpZCk7IH0KLSAgICBkb3Vi
bGUmIGZwcihGUFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5mcHIoaWQpOyB9
Ci0gICAgY29uc3QgY2hhciogZ3ByTmFtZShSZWdpc3RlcklEIGlkKSB7IHJldHVybiBtX3N0YXRl
LT5jcHUuZ3ByTmFtZShpZCk7IH0KLSAgICBjb25zdCBjaGFyKiBzcHJOYW1lKFNQUmVnaXN0ZXJJ
RCBpZCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LnNwck5hbWUoaWQpOyB9Ci0gICAgY29uc3QgY2hh
ciogZnByTmFtZShGUFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5mcHJOYW1l
KGlkKTsgfQotCi0gICAgdm9pZComIHBjKCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LnBjKCk7IH0K
LSAgICB2b2lkKiYgZnAoKSB7IHJldHVybiBtX3N0YXRlLT5jcHUuZnAoKTsgfQotICAgIHZvaWQq
JiBzcCgpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5zcCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBUIHBjKCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LnBjPFQ+KCk7IH0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBUIGZwKCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LmZwPFQ+KCk7IH0K
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHNwKCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LnNw
PFQ+KCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFQgYXJnKCkgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxUPihtX3N0YXRlLT5hcmcpOyB9CisKKyAgICB1aW50cHRyX3QmIGdw
cihSZWdpc3RlcklEIGlkKSB7IHJldHVybiBjcHUuZ3ByKGlkKTsgfQorICAgIHVpbnRwdHJfdCYg
c3ByKFNQUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gY3B1LnNwcihpZCk7IH0KKyAgICBkb3VibGUm
IGZwcihGUFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIGNwdS5mcHIoaWQpOyB9CisgICAgY29uc3Qg
Y2hhciogZ3ByTmFtZShSZWdpc3RlcklEIGlkKSB7IHJldHVybiBjcHUuZ3ByTmFtZShpZCk7IH0K
KyAgICBjb25zdCBjaGFyKiBzcHJOYW1lKFNQUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gY3B1LnNw
ck5hbWUoaWQpOyB9CisgICAgY29uc3QgY2hhciogZnByTmFtZShGUFJlZ2lzdGVySUQgaWQpIHsg
cmV0dXJuIGNwdS5mcHJOYW1lKGlkKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBn
cHIoUmVnaXN0ZXJJRCBpZCkgY29uc3QgeyByZXR1cm4gY3B1LmdwcjxUPihpZCk7IH0KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHNwcihTUFJlZ2lzdGVySUQgaWQpIGNvbnN0IHsgcmV0dXJu
IGNwdS5zcHI8VD4oaWQpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBmcHIoRlBSZWdp
c3RlcklEIGlkKSBjb25zdCB7IHJldHVybiBjcHUuZnByPFQ+KGlkKTsgfQorCisgICAgdm9pZCom
IHBjKCkgeyByZXR1cm4gY3B1LnBjKCk7IH0KKyAgICB2b2lkKiYgZnAoKSB7IHJldHVybiBjcHUu
ZnAoKTsgfQorICAgIHZvaWQqJiBzcCgpIHsgcmV0dXJuIGNwdS5zcCgpOyB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBUIHBjKCkgeyByZXR1cm4gY3B1LnBjPFQ+KCk7IH0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBUIGZwKCkgeyByZXR1cm4gY3B1LmZwPFQ+KCk7IH0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBUIHNwKCkgeyByZXR1cm4gY3B1LnNwPFQ+KCk7IH0KIAogICAgIFN0
YWNrJiBzdGFjaygpCiAgICAgewpAQCAtMjM0LDEzICsyMjYsMTAgQEAgcHVibGljOgogICAgIGJv
b2wgaGFzV3JpdGVzVG9GbHVzaCgpIHsgcmV0dXJuIG1fc3RhY2suaGFzV3JpdGVzVG9GbHVzaCgp
OyB9CiAgICAgU3RhY2sqIHJlbGVhc2VTdGFjaygpIHsgcmV0dXJuIG5ldyBTdGFjayhXVEZNb3Zl
KG1fc3RhY2spKTsgfQogCi1wcml2YXRlOgotICAgIFN0YXRlKiBtX3N0YXRlOwotcHVibGljOgot
ICAgIHZvaWQqIGFyZzsKICAgICBDUFVTdGF0ZSYgY3B1OwogCiBwcml2YXRlOgorICAgIFN0YXRl
KiBtX3N0YXRlOwogICAgIFN0YWNrIG1fc3RhY2s7CiAKICAgICBmcmllbmQgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCogcHJvYmVTdGF0ZUZvckNvbnRleHQoQ29udGV4dCYpOyAvLyBOb3QgZm9yIGdl
bmVyYWwgdXNlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGZvciB3cml0aW5nIHRlc3RzLgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUZyYW1lLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUZyYW1lLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUZyYW1lLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1BU01fUFJPQkUp
CisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJQcm9iZVN0YWNrLmgiCisKK25h
bWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIFByb2JlIHsKKworY2xhc3MgRnJhbWUgeworcHVibGlj
OgorICAgIEZyYW1lKHZvaWQqIGZyYW1lQmFzZSwgU3RhY2smIHN0YWNrKQorICAgICAgICA6IG1f
ZnJhbWVCYXNlIHsgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZnJhbWVCYXNlKSB9CisgICAg
ICAgICwgbV9zdGFjayB7IHN0YWNrIH0KKyAgICB7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CisgICAgVCBnZXRBcmd1bWVudChpbnQgYXJndW1lbnQpCisgICAgeworICAgICAgICByZXR1
cm4gZ2V0PFQ+KENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoYXJndW1lbnQpICogc2l6ZW9mKFJl
Z2lzdGVyKSk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgVCBnZXRPcGVy
YW5kKGludCBvcGVyYW5kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldE9wZXJhbmQ8VD4ob3Bl
cmFuZCwgMCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgVCBnZXRPcGVy
YW5kKGludCBvcGVyYW5kLCBwdHJkaWZmX3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGdldDxUPihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG9wZXJhbmQpLm9mZnNldCgpICog
c2l6ZW9mKFJlZ2lzdGVyKSArIG9mZnNldCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CisgICAgVCBnZXQocHRyZGlmZl90IG9mZnNldCkKKyAgICB7CisgICAgICAgIHJldHVybiBt
X3N0YWNrLmdldDxUPihtX2ZyYW1lQmFzZSArIG9mZnNldCk7CisgICAgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNldEFyZ3VtZW50KGludCBhcmd1bWVudCwgVCB2YWx1
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBzZXQ8VD4oQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNl
dChhcmd1bWVudCkgKiBzaXplb2YoUmVnaXN0ZXIpLCB2YWx1ZSk7CisgICAgfQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBzZXRPcGVyYW5kKGludCBvcGVyYW5kLCBUIHZhbHVl
KQorICAgIHsKKyAgICAgICAgc2V0T3BlcmFuZDxUPihvcGVyYW5kLCAwLCB2YWx1ZSk7CisgICAg
fQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBzZXRPcGVyYW5kKGludCBvcGVy
YW5kLCBwdHJkaWZmX3Qgb2Zmc2V0LCBUIHZhbHVlKQorICAgIHsKKyAgICAgICAgc2V0PFQ+KHN0
YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4ob3BlcmFuZCkub2Zmc2V0KCkgKiBzaXplb2YoUmVn
aXN0ZXIpICsgb2Zmc2V0LCB2YWx1ZSk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CisgICAgdm9pZCBzZXQocHRyZGlmZl90IG9mZnNldCwgVCB2YWx1ZSkKKyAgICB7CisgICAgICAg
IG1fc3RhY2suc2V0PFQ+KG1fZnJhbWVCYXNlICsgb2Zmc2V0LCB2YWx1ZSk7CisgICAgfQorCitw
cml2YXRlOgorICAgIHVpbnQ4X3QqIG1fZnJhbWVCYXNlOworICAgIFN0YWNrJiBtX3N0YWNrOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgUHJvYmUKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYg
Ly8gRU5BQkxFKE1BU01fUFJPQkUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1Byb2JlU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1Byb2JlU3RhY2suaAkocmV2aXNpb24gMjIxMjI4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDE0ICs1
NiwyOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIGdldCh2b2lk
KiBsb2dpY2FsQWRkcmVzcykKICAgICB7Ci0gICAgICAgIHJldHVybiAqcGh5c2ljYWxBZGRyZXNz
Rm9yPFQqPihsb2dpY2FsQWRkcmVzcyk7CisgICAgICAgIHZvaWQqIGZyb20gPSBwaHlzaWNhbEFk
ZHJlc3NGb3IobG9naWNhbEFkZHJlc3MpOworICAgICAgICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9j
b25zdDxUPjo6dHlwZSB0byB7IH07CisgICAgICAgIHN0ZDo6bWVtY3B5KCZ0bywgZnJvbSwgc2l6
ZW9mKHRvKSk7IC8vIFVzZSBzdGQ6Om1lbWNweSB0byBhdm9pZCBzdHJpY3QgYWxpYXNpbmcgaXNz
dWVzLgorICAgICAgICByZXR1cm4gdG87CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CisgICAgVCBnZXQodm9pZCogbG9naWNhbEJhc2VBZGRyZXNzLCBwdHJkaWZmX3Qgb2Zmc2V0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGdldDxUPihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihs
b2dpY2FsQmFzZUFkZHJlc3MpICsgb2Zmc2V0KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogICAgIHZvaWQgc2V0KHZvaWQqIGxvZ2ljYWxBZGRyZXNzLCBUIHZhbHVlKQogICAg
IHsKICAgICAgICAgbV9kaXJ0eUJpdHMgfD0gZGlydHlCaXRGb3IobG9naWNhbEFkZHJlc3MpOwot
ICAgICAgICAqcGh5c2ljYWxBZGRyZXNzRm9yPFQqPihsb2dpY2FsQWRkcmVzcykgPSB2YWx1ZTsK
KyAgICAgICAgdm9pZCogdG8gPSBwaHlzaWNhbEFkZHJlc3NGb3IobG9naWNhbEFkZHJlc3MpOwor
ICAgICAgICBzdGQ6Om1lbWNweSh0bywgJnZhbHVlLCBzaXplb2YoVCkpOyAvLyBVc2Ugc3RkOjpt
ZW1jcHkgdG8gYXZvaWQgc3RyaWN0IGFsaWFzaW5nIGlzc3Vlcy4KKyAgICB9CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNldCh2b2lkKiBsb2dpY2FsQmFzZUFkZHJlc3MsIHB0
cmRpZmZfdCBvZmZzZXQsIFQgdmFsdWUpCisgICAgeworICAgICAgICBzZXQ8VD4ocmVpbnRlcnBy
ZXRfY2FzdDx1aW50OF90Kj4obG9naWNhbEJhc2VBZGRyZXNzKSArIG9mZnNldCwgdmFsdWUpOwog
ICAgIH0KIAogICAgIGJvb2wgaGFzV3JpdGVzVG9GbHVzaCgpIGNvbnN0IHsgcmV0dXJuICEhbV9k
aXJ0eUJpdHM7IH0KQEAgLTgwLDEyICs5NCwxMCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSA8PCAob2Zmc2V0ID4+IHNfY2h1bmtTaXplU2hpZnQp
OwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgVCBw
aHlzaWNhbEFkZHJlc3NGb3Iodm9pZCogbG9naWNhbEFkZHJlc3MpCisgICAgdm9pZCogcGh5c2lj
YWxBZGRyZXNzRm9yKHZvaWQqIGxvZ2ljYWxBZGRyZXNzKQogICAgIHsKICAgICAgICAgdWludHB0
cl90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihsb2dpY2FsQWRkcmVzcykg
JiBzX3BhZ2VNYXNrOwotICAgICAgICB2b2lkKiBwaHlzaWNhbEFkZHJlc3MgPSByZWludGVycHJl
dF9jYXN0PHVpbnQ4X3QqPigmbV9idWZmZXIpICsgb2Zmc2V0OwotICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxUPihwaHlzaWNhbEFkZHJlc3MpOworICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4oJm1fYnVmZmVyKSArIG9mZnNldDsKICAgICB9CiAKICAgICB2
b2lkIGZsdXNoV3JpdGVzKCk7CkBAIC0xMjMsMTMgKzEzNSwxOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCogbG93V2F0ZXJtYXJrKCkgeyByZXR1cm4gbV9sb3dXYXRlcm1hcms7IH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci0gICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfc2Ft
ZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+Ojp0
eXBlIGdldCh2b2lkKiBhZGRyZXNzKQorICAgIFQgZ2V0KHZvaWQqIGFkZHJlc3MpCiAgICAgewog
ICAgICAgICBQYWdlKiBwYWdlID0gcGFnZUZvcihhZGRyZXNzKTsKICAgICAgICAgcmV0dXJuIHBh
Z2UtPmdldDxUPihhZGRyZXNzKTsKICAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg
ICBUIGdldCh2b2lkKiBsb2dpY2FsQmFzZUFkZHJlc3MsIHB0cmRpZmZfdCBvZmZzZXQpCisgICAg
eworICAgICAgICByZXR1cm4gZ2V0PFQ+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGxvZ2lj
YWxCYXNlQWRkcmVzcykgKyBvZmZzZXQpOworICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfc2FtZTxkb3Vi
bGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWU+Ojp0eXBlPgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBzZXQodm9pZCogYWRkcmVzcywgVCB2YWx1
ZSkKICAgICB7CiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBwYWdlRm9yKGFkZHJlc3MpOwpAQCAtMTQy
LDE4ICsxNTksMTAgQEAgcHVibGljOgogICAgICAgICBpZiAoY2h1bmtBZGRyZXNzIDwgbV9sb3dX
YXRlcm1hcmspCiAgICAgICAgICAgICBtX2xvd1dhdGVybWFyayA9IGNodW5rQWRkcmVzczsKICAg
ICB9Ci0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHN0ZDo6aXNfc2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBl
Pjo6dmFsdWUsIFQ+Ojp0eXBlIGdldCh2b2lkKiBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgUGFn
ZSogcGFnZSA9IHBhZ2VGb3IoYWRkcmVzcyk7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
ZG91YmxlPihwYWdlLT5nZXQ8dWludDY0X3Q+KGFkZHJlc3MpKTsKLSAgICB9Ci0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6
aXNfc2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWU+
Ojp0eXBlPgotICAgIHZvaWQgc2V0KHZvaWQqIGFkZHJlc3MsIGRvdWJsZSB2YWx1ZSkKKyAgICB2
b2lkIHNldCh2b2lkKiBsb2dpY2FsQmFzZUFkZHJlc3MsIHB0cmRpZmZfdCBvZmZzZXQsIFQgdmFs
dWUpCiAgICAgewotICAgICAgICBzZXQ8dWludDY0X3Q+KGFkZHJlc3MsIGJpdHdpc2VfY2FzdDx1
aW50NjRfdD4odmFsdWUpKTsKKyAgICAgICAgc2V0PFQ+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KGxvZ2ljYWxCYXNlQWRkcmVzcykgKyBvZmZzZXQsIHZhbHVlKTsKICAgICB9CiAKICAgICBK
U19FWFBPUlRfUFJJVkFURSBQYWdlKiBlbnN1cmVQYWdlRm9yKHZvaWQqIGFkZHJlc3MpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAJ
KHJldmlzaW9uIDIyMTIyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0
aFByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMyLDggQEAKIG5hbWVzcGFjZSBKU0Mg
ewogCiAjaWYgRU5BQkxFKEpJVCkKKy8vIEZJWE1FOiBUaGlzIGlzIGJlaW5nIHN1cHBsYW50ZWQg
Ynkgb2JzZXJ2ZVJlc3VsdCgpLiBSZW1vdmUgdGhpcyBvbmUKKy8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUgaGFzIGJlZW4gZml4ZWQuCiB2b2lkIEFyaXRo
UHJvZmlsZTo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdz
IHJlZ3MsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSkKIHsKICAgICBpZiAoIXNob3VsZEVtaXRTZXRE
b3VibGUoKSAmJiAhc2hvdWxkRW1pdFNldE5vbk51bWJlcigpKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaAkocmV2aXNpb24gMjIxMjI4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIxMSw2ICsyMTEsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEpJVCkgICAgCiAgICAg
Ly8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91Ymxl
IHwgTmVnWmVyb0RvdWJsZSkgaWYgaXQgc2VlcyBhCiAgICAgLy8gZG91YmxlLiBTZXRzIE5vbk51
bWJlciBpZiBpdCBzZWVzIGEgbm9uLW51bWJlci4KKyAgICAvLyBGSVhNRTogVGhpcyBpcyBiZWlu
ZyBzdXBwbGFudGVkIGJ5IG9ic2VydmVSZXN1bHQoKS4gUmVtb3ZlIHRoaXMgb25lCisgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NSBoYXMgYmVlbiBm
aXhlZC4KICAgICB2b2lkIGVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYsIEpTVmFsdWVS
ZWdzLCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycyk7CiAgICAgCiAgICAgLy8g
U2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwg
TmVnWmVyb0RvdWJsZSkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJy
YXlQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FycmF5UHJvZmlsZS5oCShyZXZpc2lvbiAyMjEyMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjE4LDYgKzIx
OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqKTsKICAgICB2b2lkIGNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1
cmUqIGxhc3RTZWVuU3RydWN0dXJlKTsKICAgICAKKyAgICB2b2lkIG9ic2VydmVBcnJheU1vZGUo
QXJyYXlNb2RlcyBtb2RlKSB7IG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHw9IG1vZGU7IH0KICAgICBB
cnJheU1vZGVzIG9ic2VydmVkQXJyYXlNb2Rlcyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBj
b25zdCB7IHJldHVybiBtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJvb2wgbWF5SW50ZXJj
ZXB0SW5kZXhlZEFjY2Vzc2VzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0
dXJuIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzOyB9CiAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjIxMjI4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIzMTUsNiArMjMxNSw0OCBAQCBib29sIENvZGVCbG9jazo6Y2hlY2tJZk9w
dGltaXphdGlvblRocmVzCiAgICAgcmV0dXJuIG1faml0RXhlY3V0ZUNvdW50ZXIuY2hlY2tJZlRo
cmVzaG9sZENyb3NzZWRBbmRTZXQodGhpcyk7CiB9CiAKK2F1dG8gQ29kZUJsb2NrOjp1cGRhdGVP
U1JFeGl0Q291bnRlckFuZENoZWNrSWZOZWVkVG9SZW9wdGltaXplKERGRzo6T1NSRXhpdEJhc2Um
IGV4aXQpIC0+IE9wdGltaXplQWN0aW9uCit7CisgICAgZXhpdC5tX2NvdW50Kys7CisKKyAgICBp
ZiAoIWV4aXRLaW5kTWF5SmV0dGlzb24oZXhpdC5tX2tpbmQpKQorICAgICAgICByZXR1cm4gT3B0
aW1pemVBY3Rpb246Ok5vbmU7CisKKyAgICBtX29zckV4aXRDb3VudGVyKys7CisKKyAgICBDb2Rl
QmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gYmFzZWxpbmVBbHRlcm5hdGl2ZSgpOworICAgIGlm
IChVTkxJS0VMWShiYXNlbGluZUNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKS5oYXNDcm9z
c2VkVGhyZXNob2xkKCkpKQorICAgICAgICByZXR1cm4gT3B0aW1pemVBY3Rpb246Ok9wdGltaXpl
Tm93OworCisgICAgLy8gV2Ugd2FudCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYSBwb3NzaWJp
bGl0eSB0aGF0IHdlJ3JlIGluIGEgbG9vcC4gRm9yIHRoZSBvdXRlcm1vc3QKKyAgICAvLyBjb2Rl
IGJsb2NrIGluIHRoZSBpbmxpbmUgc3RhY2ssIHdlIGhhbmRsZSB0aGlzIGFwcHJvcHJpYXRlbHkg
YnkgaGF2aW5nIHRoZSBsb29wIE9TUiB0cmlnZ2VyCisgICAgLy8gY2hlY2sgdGhlIGV4aXQgY291
bnQgb2YgdGhlIHJlcGxhY2VtZW50IG9mIHRoZSBDb2RlQmxvY2sgZnJvbSB3aGljaCB3ZSBhcmUg
T1NSaW5nLiBUaGUKKyAgICAvLyBwcm9ibGVtIGlzIHRoZSBpbmxpbmVkIGZ1bmN0aW9ucywgd2hp
Y2ggbWlnaHQgYWxzbyBoYXZlIGxvb3BzLCBidXQgd2hvc2UgYmFzZWxpbmUgdmVyc2lvbnMKKyAg
ICAvLyBkb24ndCBrbm93IHdoZXJlIHRvIGxvb2sgZm9yIHRoZSBleGl0IGNvdW50LiBGaWd1cmUg
b3V0IGlmIHRob3NlIGxvb3BzIGFyZSBzZXZlcmUgZW5vdWdoCisgICAgLy8gdGhhdCB3ZSBoYWQg
dHJpZWQgdG8gT1NSIGVudGVyLiBJZiBzbywgdGhlbiB3ZSBzaG91bGQgdXNlIHRoZSBsb29wIHJl
b3B0aW1pemF0aW9uIHRyaWdnZXIuCisgICAgLy8gT3RoZXJ3aXNlLCB3ZSBzaG91bGQgdXNlIHRo
ZSBub3JtYWwgcmVvcHRpbWl6YXRpb24gdHJpZ2dlci4KKworICAgIGJvb2wgZGlkVHJ5VG9FbnRl
ckluTG9vcCA9IGZhbHNlOworICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJh
bWUgPSBleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZTsg
aW5saW5lQ2FsbEZyYW1lID0gaW5saW5lQ2FsbEZyYW1lLT5kaXJlY3RDYWxsZXIuaW5saW5lQ2Fs
bEZyYW1lKSB7CisgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2Nr
LT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgpKSB7CisgICAg
ICAgICAgICBkaWRUcnlUb0VudGVySW5Mb29wID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQorCisgICAgdWludDMyX3QgdGhyZXNob2xkID0gZGlkVHJ5VG9FbnRl
ckluTG9vcAorICAgICAgICA/IGV4aXRDb3VudFRocmVzaG9sZEZvclJlb3B0aW1pemF0aW9uRnJv
bUxvb3AoKQorICAgICAgICA6IGV4aXRDb3VudFRocmVzaG9sZEZvclJlb3B0aW1pemF0aW9uKCk7
CisKKyAgICBpZiAobV9vc3JFeGl0Q291bnRlciA+IHRocmVzaG9sZCkKKyAgICAgICAgcmV0dXJu
IE9wdGltaXplQWN0aW9uOjpPcHRpbWl6ZU5vdzsKKworICAgIC8vIEFkanVzdCB0aGUgZXhlY3V0
aW9uIGNvdW50ZXIgc3VjaCB0aGF0IHRoZSB0YXJnZXQgaXMgdG8gb25seSBvcHRpbWl6ZSBhZnRl
ciBhIHdoaWxlLgorICAgIGludDMyX3QgYWN0aXZlVGhyZXNob2xkID0gYmFzZWxpbmVDb2RlQmxv
Y2stPmFkanVzdGVkQ291bnRlclZhbHVlKE9wdGlvbnM6OnRocmVzaG9sZEZvck9wdGltaXplQWZ0
ZXJMb25nV2FybVVwKCkpOworICAgIG1faml0RXhlY3V0ZUNvdW50ZXIuc2V0TmV3VGhyZXNob2xk
KGFjdGl2ZVRocmVzaG9sZCwgYmFzZWxpbmVDb2RlQmxvY2spOworICAgIHJldHVybiBPcHRpbWl6
ZUFjdGlvbjo6Tm9uZTsKK30KKwogdm9pZCBDb2RlQmxvY2s6Om9wdGltaXplTmV4dEludm9jYXRp
b24oKQogewogICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMjEyMjgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTc3LDYgKzc3LDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCituYW1lc3BhY2UgREZHIHsK
K3N0cnVjdCBPU1JFeGl0QmFzZTsKK30gLy8gbmFtZXNwYWNlIERGRworCiBjbGFzcyBCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXM7CiBjbGFzcyBDb2RlQmxvY2tTZXQ7CiBjbGFzcyBFeGVjU3RhdGU7
CkBAIC03NjIsOCArNzY2LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY291bnRPU1JFeGl0KCkg
eyBtX29zckV4aXRDb3VudGVyKys7IH0KIAotICAgIHVpbnQzMl90KiBhZGRyZXNzT2ZPU1JFeGl0
Q291bnRlcigpIHsgcmV0dXJuICZtX29zckV4aXRDb3VudGVyOyB9CisgICAgZW51bSBjbGFzcyBP
cHRpbWl6ZUFjdGlvbiB7IE5vbmUsIE9wdGltaXplTm93IH07CisgICAgT3B0aW1pemVBY3Rpb24g
dXBkYXRlT1NSRXhpdENvdW50ZXJBbmRDaGVja0lmTmVlZFRvUmVvcHRpbWl6ZShERkc6Ok9TUkV4
aXRCYXNlJik7CiAKKyAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NS4KICAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mT1NSRXhpdENvdW50ZXIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
Q29kZUJsb2NrLCBtX29zckV4aXRDb3VudGVyKTsgfQogCiAgICAgdWludDMyX3QgYWRqdXN0ZWRF
eGl0Q291bnRUaHJlc2hvbGQodWludDMyX3QgZGVzaXJlZFRocmVzaG9sZCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmgJKHJl
dmlzaW9uIDIyMTIyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRp
b25Db3VudGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgZW51bSBDb3VudGlu
Z1ZhcmlhbnQgewogZG91YmxlIGFwcGx5TWVtb3J5VXNhZ2VIZXVyaXN0aWNzKGludDMyX3QgdmFs
dWUsIENvZGVCbG9jayopOwogaW50MzJfdCBhcHBseU1lbW9yeVVzYWdlSGV1cmlzdGljc0FuZENv
bnZlcnRUb0ludChpbnQzMl90IHZhbHVlLCBDb2RlQmxvY2sqKTsKIAorLy8gRklYTUU6IHJlbW92
ZSB0aGlzIHdoZW4gd2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzUxNDUuCiBpbmxpbmUgaW50MzJfdCBmb3JtYXR0ZWRUb3RhbEV4ZWN1dGlvbkNvdW50KGZs
b2F0IHZhbHVlKQogewogICAgIHVuaW9uIHsKQEAgLTU3LDYgKzU4LDcgQEAgcHVibGljOgogICAg
IEV4ZWN1dGlvbkNvdW50ZXIoKTsKICAgICB2b2lkIGZvcmNlU2xvd1BhdGhDb25jdXJyZW50bHko
KTsgLy8gSWYgeW91IHVzZSB0aGlzLCBjaGVja0lmVGhyZXNob2xkQ3Jvc3NlZEFuZFNldCgpIG1h
eSBzdGlsbCByZXR1cm4gZmFsc2UuCiAgICAgYm9vbCBjaGVja0lmVGhyZXNob2xkQ3Jvc3NlZEFu
ZFNldChDb2RlQmxvY2sqKTsKKyAgICBib29sIGhhc0Nyb3NzZWRUaHJlc2hvbGQoKSBjb25zdCB7
IHJldHVybiBtX2NvdW50ZXIgPj0gMDsgfQogICAgIHZvaWQgc2V0TmV3VGhyZXNob2xkKGludDMy
X3QgdGhyZXNob2xkLCBDb2RlQmxvY2sqKTsKICAgICB2b2lkIGRlZmVySW5kZWZpbml0ZWx5KCk7
CiAgICAgZG91YmxlIGNvdW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPiht
X3RvdGFsQ291bnQpICsgbV9jb3VudGVyOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUuY3BwCShyZXZpc2lvbiAyMjEyMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDYsNiArNDYsOCBAQCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIE1ldGhvZE9m
R2V0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorLy8gRklYTUU6IFRoaXMgaXMgYmVpbmcgc3Vw
cGxhbnRlZCBieSByZXBvcnRWYWx1ZSgpLiBSZW1vdmUgdGhpcyBvbmUKKy8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUgaGFzIGJlZW4gZml4ZWQuCiB2b2lk
IE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBl
cnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncykgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fa2luZCkg
ewpAQCAtNzQsNiArNzYsMzQgQEAgdm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpl
bWl0UgogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3ZvaWQgTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6cmVwb3J0VmFsdWUoSlNWYWx1ZSB2YWx1ZSkKK3sKKyAg
ICBzd2l0Y2ggKG1fa2luZCkgeworICAgIGNhc2UgTm9uZToKKyAgICAgICAgcmV0dXJuOworCisg
ICAgY2FzZSBSZWFkeToKKyAgICAgICAgKnUucHJvZmlsZS0+c3BlY0ZhaWxCdWNrZXQoMCkgPSBK
U1ZhbHVlOjplbmNvZGUodmFsdWUpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIExhenlP
cGVyYW5kOiB7CisgICAgICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5IGtleSh1LmxhenlP
cGVyYW5kLmJ5dGVjb2RlT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIodS5sYXp5T3BlcmFuZC5vcGVy
YW5kKSk7CisKKyAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcih1LmxhenlPcGVyYW5k
LmNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIHBy
b2ZpbGUgPQorICAgICAgICB1LmxhenlPcGVyYW5kLmNvZGVCbG9jay0+bGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVzKCkuYWRkKGxvY2tlciwga2V5KTsKKyAgICAgICAgKnByb2ZpbGUtPnNwZWNGYWls
QnVja2V0KDApID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGNhc2UgQXJpdGhQcm9maWxlUmVhZHk6IHsKKyAgICAgICAgdS5hcml0aFByb2Zp
bGUtPm9ic2VydmVSZXN1bHQodmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfSB9CisKKyAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5oCShyZXZpc2lvbiAyMjEyMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcwLDkg
KzcwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgQ29kZUJsb2NrKiwgY29uc3QgTGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGVLZXkmKTsKICAgICAKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29u
c3QgeyByZXR1cm4gbV9raW5kICE9IE5vbmU7IH0KLSAgICAKKworICAgIC8vIEZJWE1FOiBlbWl0
UmVwb3J0VmFsdWUgaXMgYmVpbmcgc3VwcGxhbnRlZCBieSByZXBvcnRWYWx1ZSgpLiBSZW1vdmUg
dGhpcyBvbmUKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc1MTQ1IGhhcyBiZWVuIGZpeGVkLgogICAgIHZvaWQgZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVs
cGVycyYsIEpTVmFsdWVSZWdzKSBjb25zdDsKLSAgICAKKyAgICB2b2lkIHJlcG9ydFZhbHVlKEpT
VmFsdWUpOworCiBwcml2YXRlOgogICAgIGVudW0gS2luZCB7CiAgICAgICAgIE5vbmUsCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAyMjEyMjgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTQsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC04OSw3ICs4OSw3IEBAIHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBjb21w
aWxlSW1wbCgKICAgICAKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBhbnkgc3R1YnMgdGhhdCB0aGUg
REZHIGlzIGdvaW5nIHRvIHVzZSBhcmUgaW5pdGlhbGl6ZWQuIFdlIHdhbnQgdG8KICAgICAvLyBt
YWtlIHN1cmUgdGhhdCBhbGwgSklUIGNvZGUgZ2VuZXJhdGlvbiBkb2VzIGZpbmFsaXphdGlvbiBv
biB0aGUgbWFpbiB0aHJlYWQuCi0gICAgdm0uZ2V0Q1RJU3R1Yihvc3JFeGl0R2VuZXJhdGlvblRo
dW5rR2VuZXJhdG9yKTsKKyAgICB2bS5nZXRDVElTdHViKG9zckV4aXRUaHVua0dlbmVyYXRvcik7
CiAgICAgdm0uZ2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0
b3IpOwogICAgIHZtLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcik7CiAgICAgdm0u
Z2V0Q1RJU3R1YihsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDIy
MTIyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMDMsNyArMzAzLDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhM
aW5rQnVmZmVyJiBsaW5rQgogICAgICAgICAgICAgbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNh
bGwocmVjb3JkLmNhbGwpKTsKICAgICB9CiAgICAgCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IG9zckV4aXRUaHVuayA9IHZtKCktPmdldENUSVN0dWIob3NyRXhpdEdlbmVyYXRpb25UaHVua0dl
bmVyYXRvcik7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRUaHVuayA9IHZtKCkt
PmdldENUSVN0dWIob3NyRXhpdFRodW5rR2VuZXJhdG9yKTsKICAgICBDb2RlTG9jYXRpb25MYWJl
bCB0YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbChvc3JFeGl0VGh1bmsuY29kZSgpKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9qaXRDb2RlLT5vc3JFeGl0LnNpemUoKTsgKytpKSB7
CiAgICAgICAgIE9TUkV4aXQmIGV4aXQgPSBtX2ppdENvZGUtPm9zckV4aXRbaV07CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHJldmlzaW9uIDIyMTIyOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjksMTggKzI5LDIyMyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVk
ZSAiQXNzZW1ibHlIZWxwZXJzLmgiCisjaW5jbHVkZSAiQ2xvbmVkQXJndW1lbnRzLmgiCiAjaW5j
bHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdNYXlFeGl0LmgiCi0jaW5jbHVkZSAiREZH
T1NSRXhpdENvbXBpbGVyQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdFByZXBhcmF0aW9u
LmgiCiAjaW5jbHVkZSAiREZHT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkRGR1NwZWN1bGF0aXZl
SklULmgiCi0jaW5jbHVkZSAiRnJhbWVUcmFjZXJzLmgiCisjaW5jbHVkZSAiRGlyZWN0QXJndW1l
bnRzLmgiCisjaW5jbHVkZSAiSW5saW5lQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMu
aCIKKyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKKyNpbmNsdWRlICJQcm9iZUZyYW1lLmgiCiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAordXNpbmcgQ1BVU3RhdGUgPSBQcm9i
ZTo6Q1BVU3RhdGU7Cit1c2luZyBDb250ZXh0ID0gUHJvYmU6OkNvbnRleHQ7Cit1c2luZyBGcmFt
ZSA9IFByb2JlOjpGcmFtZTsKKworc3RhdGljIHZvaWQgcHJpbnRPU1JFeGl0KENvbnRleHQmLCB1
aW50MzJfdCBvc3JFeGl0SW5kZXgsIGNvbnN0IE9TUkV4aXQmKTsKKworc3RhdGljIEpTVmFsdWUg
anNWYWx1ZUZvcihDUFVTdGF0ZSYgY3B1LCBKU1ZhbHVlU291cmNlIHNvdXJjZSkKK3sKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgIGlmIChzb3VyY2UuaXNBZGRyZXNzKCkpCisgICAgICAgIHJldHVy
biAqcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4oY3B1Lmdwcjx1aW50OF90Kj4oc291cmNlLmJh
c2UoKSkgKyBzb3VyY2Uub2Zmc2V0KCkpOworICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUoY3B1
LmdwcjxFbmNvZGVkSlNWYWx1ZT4oc291cmNlLmdwcigpKSk7CisjZWxzZQorICAgIGlmIChzb3Vy
Y2UuaXNBZGRyZXNzKCkpCisgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVl
Kj4oY3B1Lmdwcjx1aW50OF90Kj4oc291cmNlLmJhc2UoKSkgKyBzb3VyY2Uub2Zmc2V0KCkpOwor
ICAgIGlmIChzb3VyY2UuaGFzS25vd25UYWcoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoc291
cmNlLnRhZygpLCBjcHUuZ3ByPGludDMyX3Q+KHNvdXJjZS5wYXlsb2FkR1BSKCkpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZShjcHUuZ3ByPGludDMyX3Q+KHNvdXJjZS50YWdHUFIoKSksIGNwdS5ncHI8
aW50MzJfdD4oc291cmNlLnBheWxvYWRHUFIoKSkpOworI2VuZGlmCit9CisKKyNpZiBOVU1CRVJf
T0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKKworLy8gQmFzZWQgb24gQXNzZW1ibHlIZWxw
ZXJzOjplbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKCkuCitzdGF0aWMgdm9pZCByZXN0b3JlQ2Fs
bGVlU2F2ZXNGb3IoQ29udGV4dCYgY29udGV4dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7Cisg
ICAgQVNTRVJUKGNvZGVCbG9jayk7CisKKyAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVl
U2F2ZXMgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlclNl
dCBkb250UmVzdG9yZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1Jl
Z2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxsRlBScygpKTsKKyAgICB1bnNpZ25lZCByZWdpc3Rl
ckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKKworICAgIHVpbnRwdHJfdCogcGh5c2ljYWxT
dGFja0ZyYW1lID0gY29udGV4dC5mcDx1aW50cHRyX3QqPigpOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNl
dCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChpKTsKKyAgICAgICAgaWYgKGRvbnRSZXN0b3JlUmVn
aXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
Ly8gVGhlIGNhbGxlZSBzYXZlZCB2YWx1ZXMgY29tZSBmcm9tIHRoZSBvcmlnaW5hbCBzdGFjaywg
bm90IHRoZSByZWNvdmVyZWQgc3RhY2suCisgICAgICAgIC8vIEhlbmNlLCB3ZSByZWFkIHRoZSB2
YWx1ZXMgZGlyZWN0bHkgZnJvbSB0aGUgcGh5c2ljYWwgc3RhY2sgbWVtb3J5IGluc3RlYWQgb2YK
KyAgICAgICAgLy8gZ29pbmcgdGhyb3VnaCBjb250ZXh0LnN0YWNrKCkuCisgICAgICAgIEFTU0VS
VCghKGVudHJ5Lm9mZnNldCgpICUgc2l6ZW9mKHVpbnRwdHJfdCkpKTsKKyAgICAgICAgY29udGV4
dC5ncHIoZW50cnkucmVnKCkuZ3ByKCkpID0gcGh5c2ljYWxTdGFja0ZyYW1lW2VudHJ5Lm9mZnNl
dCgpIC8gc2l6ZW9mKHVpbnRwdHJfdCldOworICAgIH0KK30KKworLy8gQmFzZWQgb24gQXNzZW1i
bHlIZWxwZXJzOjplbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKCkuCitzdGF0aWMgdm9pZCBzYXZlQ2Fs
bGVlU2F2ZXNGb3IoQ29udGV4dCYgY29udGV4dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7Cisg
ICAgYXV0byYgc3RhY2sgPSBjb250ZXh0LnN0YWNrKCk7CisgICAgQVNTRVJUKGNvZGVCbG9jayk7
CisKKyAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2stPmNh
bGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVycyA9
IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6
YWxsRlBScygpKTsKKyAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNp
emUoKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKysp
IHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChpKTsK
KyAgICAgICAgaWYgKGRvbnRTYXZlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgc3RhY2suc2V0KGNvbnRleHQuZnAoKSwgZW50cnkub2Zm
c2V0KCksIGNvbnRleHQuZ3ByPHVpbnRwdHJfdD4oZW50cnkucmVnKCkuZ3ByKCkpKTsKKyAgICB9
Cit9CisKKy8vIEJhc2VkIG9uIEFzc2VtYmx5SGVscGVyczo6cmVzdG9yZUNhbGxlZVNhdmVzRnJv
bVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKCkuCitzdGF0aWMgdm9pZCByZXN0b3JlQ2Fs
bGVlU2F2ZXNGcm9tVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoQ29udGV4dCYgY29udGV4
dCkKK3sKKyAgICBWTSYgdm0gPSAqY29udGV4dC5hcmc8Vk0qPigpOworICAgIGF1dG8mIHN0YWNr
ID0gY29udGV4dC5zdGFjaygpOworCisgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGFsbENhbGxl
ZVNhdmVzID0gVk06OmdldEFsbENhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKTsKKyAgICBSZWdp
c3RlclNldCBkb250UmVzdG9yZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVy
cygpOworICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBhbGxDYWxsZWVTYXZlcy0+c2l6ZSgp
OworCisgICAgVk1FbnRyeVJlY29yZCogZW50cnlSZWNvcmQgPSB2bUVudHJ5UmVjb3JkKHZtLnRv
cFZNRW50cnlGcmFtZSk7CisgICAgdm9pZCogY2FsbGVlU2F2ZUJ1ZmZlciA9IGVudHJ5UmVjb3Jk
LT5jYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyOworCisgICAgLy8gUmVzdG9yZSBhbGwgY2FsbGVl
IHNhdmVzLgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKysp
IHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5hdChp
KTsKKyAgICAgICAgaWYgKGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGVudHJ5LnJlZygpLmlzR1BSKCkpCisg
ICAgICAgICAgICBjb250ZXh0LmdwcihlbnRyeS5yZWcoKS5ncHIoKSkgPSBzdGFjay5nZXQ8dWlu
dHB0cl90PihjYWxsZWVTYXZlQnVmZmVyLCBlbnRyeS5vZmZzZXQoKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGNvbnRleHQuZnByKGVudHJ5LnJlZygpLmZwcigpKSA9IHN0YWNrLmdldDxk
b3VibGU+KGNhbGxlZVNhdmVCdWZmZXIsIGVudHJ5Lm9mZnNldCgpKTsKKyAgICB9Cit9CisKKy8v
IEJhc2VkIG9uIEFzc2VtYmx5SGVscGVyczo6Y29weUNhbGxlZVNhdmVzVG9WTUVudHJ5RnJhbWVD
YWxsZWVTYXZlc0J1ZmZlcigpLgorc3RhdGljIHZvaWQgY29weUNhbGxlZVNhdmVzVG9WTUVudHJ5
RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihDb250ZXh0JiBjb250ZXh0KQoreworICAgIFZNJiB2bSA9
ICpjb250ZXh0LmFyZzxWTSo+KCk7CisgICAgYXV0byYgc3RhY2sgPSBjb250ZXh0LnN0YWNrKCk7
CisKKyAgICBWTUVudHJ5UmVjb3JkKiBlbnRyeVJlY29yZCA9IHZtRW50cnlSZWNvcmQodm0udG9w
Vk1FbnRyeUZyYW1lKTsKKyAgICB2b2lkKiBjYWxsZWVTYXZlc0J1ZmZlciA9IGVudHJ5UmVjb3Jk
LT5jYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyOworCisgICAgUmVnaXN0ZXJBdE9mZnNldExpc3Qq
IGFsbENhbGxlZVNhdmVzID0gVk06OmdldEFsbENhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKTsK
KyAgICBSZWdpc3RlclNldCBkb250Q29weVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0OjpzdGFja1Jl
Z2lzdGVycygpOworICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBhbGxDYWxsZWVTYXZlcy0+
c2l6ZSgpOworCisgICAgQVNTRVJUKGlzNjRCaXQoKSk7IC8vIHdlIG5lZWQKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVy
QXRPZmZzZXQgZW50cnkgPSBhbGxDYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgIGlmIChkb250
Q29weVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIGlmIChlbnRyeS5yZWcoKS5pc0dQUigpKQorICAgICAgICAgICAgc3RhY2suc2V0KGNh
bGxlZVNhdmVzQnVmZmVyLCBlbnRyeS5vZmZzZXQoKSwgY29udGV4dC5ncHI8dWludHB0cl90Pihl
bnRyeS5yZWcoKS5ncHIoKSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdGFjay5zZXQo
Y2FsbGVlU2F2ZXNCdWZmZXIsIGVudHJ5Lm9mZnNldCgpLCBjb250ZXh0LmZwcjx1aW50cHRyX3Q+
KGVudHJ5LnJlZygpLmZwcigpKSk7CisgICAgfQorfQorCisvLyBCYXNlZCBvbiBBc3NlbWJseUhl
bHBlcnM6OmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoKS4KK3N0YXRpYyB2b2lkIHNhdmVP
ckNvcHlDYWxsZWVTYXZlc0ZvcihDb250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgVmlydHVhbFJlZ2lzdGVyIG9mZnNldFZpcnR1YWxSZWdpc3RlciwgYm9vbCB3YXNDYWxsZWRW
aWFUYWlsQ2FsbCkKK3sKKyAgICBGcmFtZSBmcmFtZShjb250ZXh0LmZwKCksIGNvbnRleHQuc3Rh
Y2soKSk7CisgICAgQVNTRVJUKGNvZGVCbG9jayk7CisKKyAgICBSZWdpc3RlckF0T2Zmc2V0TGlz
dCogY2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBS
ZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0Ojpz
dGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxsRlBScygpKTsKKyAgICB1bnNpZ25lZCBy
ZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKKworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgUmVnaXN0ZXJTZXQgYmFzZWxpbmVDYWxsZWVTYXZlcyA9IFJlZ2lzdGVyU2V0OjpsbGlu
dEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOworI2VuZGlmCisKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRP
ZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgIGlmIChkb250U2F2ZVJl
Z2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgdWludHB0cl90IHNhdmVkUmVnaXN0ZXJWYWx1ZTsKKworI2lmIFVTRShKU1ZBTFVFMzJfNjQp
CisgICAgICAgIFVOVVNFRF9QQVJBTSh3YXNDYWxsZWRWaWFUYWlsQ2FsbCk7CisjZWxzZQorICAg
ICAgICBpZiAod2FzQ2FsbGVkVmlhVGFpbENhbGwgJiYgYmFzZWxpbmVDYWxsZWVTYXZlcy5nZXQo
ZW50cnkucmVnKCkpKQorICAgICAgICAgICAgc2F2ZWRSZWdpc3RlclZhbHVlID0gZnJhbWUuZ2V0
PHVpbnRwdHJfdD4oZW50cnkub2Zmc2V0KCkpOworICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAg
ICAgICAgIHNhdmVkUmVnaXN0ZXJWYWx1ZSA9IGNvbnRleHQuZ3ByKGVudHJ5LnJlZygpLmdwcigp
KTsKKworICAgICAgICBmcmFtZS5zZXQob2Zmc2V0VmlydHVhbFJlZ2lzdGVyLm9mZnNldEluQnl0
ZXMoKSArIGVudHJ5Lm9mZnNldCgpLCBzYXZlZFJlZ2lzdGVyVmFsdWUpOworICAgIH0KK30KKyNl
bHNlIC8vIG5vdCBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKKworc3RhdGlj
IHZvaWQgcmVzdG9yZUNhbGxlZVNhdmVzRm9yKENvbnRleHQmLCBDb2RlQmxvY2sqKSB7IH0KK3N0
YXRpYyB2b2lkIHNhdmVDYWxsZWVTYXZlc0ZvcihDb250ZXh0JiwgQ29kZUJsb2NrKikgeyB9Citz
dGF0aWMgdm9pZCByZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNC
dWZmZXIoQ29udGV4dCYpIHsgfQorc3RhdGljIHZvaWQgY29weUNhbGxlZVNhdmVzVG9WTUVudHJ5
RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihDb250ZXh0JikgeyB9CitzdGF0aWMgdm9pZCBzYXZlT3JD
b3B5Q2FsbGVlU2F2ZXNGb3IoQ29udGV4dCYsIENvZGVCbG9jayosIFZpcnR1YWxSZWdpc3Rlciwg
Ym9vbCkgeyB9CisKKyNlbmRpZiAvLyBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+
IDAKKworc3RhdGljIEpTQ2VsbCogY3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdChDb250
ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5saW5lQ2FsbEZyYW1lKiBpbmxp
bmVDYWxsRnJhbWUsIEpTRnVuY3Rpb24qIGNhbGxlZSwgaW50MzJfdCBhcmd1bWVudENvdW50KQor
eworICAgIFZNJiB2bSA9ICpjb250ZXh0LmFyZzxWTSo+KCk7CisKKyAgICBBU1NFUlQodm0uaGVh
cC5pc0RlZmVycmVkKCkpOworCisgICAgaWYgKGlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgY29k
ZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUoaW5saW5lQ2FsbEZy
YW1lKTsKKworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFyZ3VtZW50Q291bnQgLSAxOworICAgIHVu
c2lnbmVkIGNhcGFjaXR5ID0gc3RkOjptYXgobGVuZ3RoLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Y29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSAxKSk7CisgICAgRGlyZWN0QXJndW1lbnRzKiBy
ZXN1bHQgPSBEaXJlY3RBcmd1bWVudHM6OmNyZWF0ZSgKKyAgICAgICAgdm0sIGNvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCktPmRpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSgpLCBsZW5ndGgsIGNhcGFj
aXR5KTsKKworICAgIHJlc3VsdC0+Y2FsbGVlKCkuc2V0KHZtLCByZXN1bHQsIGNhbGxlZSk7CisK
KyAgICB2b2lkKiBmcmFtZUJhc2UgPSBjb250ZXh0LmZwPFJlZ2lzdGVyKj4oKSArIChpbmxpbmVD
YWxsRnJhbWUgPyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0IDogMCk7CisgICAgRnJhbWUg
ZnJhbWUoZnJhbWVCYXNlLCBjb250ZXh0LnN0YWNrKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9
IGxlbmd0aDsgaS0tOykKKyAgICAgICAgcmVzdWx0LT5zZXRJbmRleFF1aWNrbHkodm0sIGksIGZy
YW1lLmdldEFyZ3VtZW50PEpTVmFsdWU+KGkpKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3N0YXRpYyBKU0NlbGwqIGNyZWF0ZUNsb25lZEFyZ3VtZW50c0R1cmluZ0V4aXQoQ29udGV4dCYg
Y29udGV4dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2Fs
bEZyYW1lLCBKU0Z1bmN0aW9uKiBjYWxsZWUsIGludDMyX3QgYXJndW1lbnRDb3VudCkKK3sKKyAg
ICBWTSYgdm0gPSAqY29udGV4dC5hcmc8Vk0qPigpOworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGNv
bnRleHQuZnA8RXhlY1N0YXRlKj4oKTsKKworICAgIEFTU0VSVCh2bS5oZWFwLmlzRGVmZXJyZWQo
KSk7CisKKyAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKQorICAgICAgICBjb2RlQmxvY2sgPSBiYXNl
bGluZUNvZGVCbG9ja0ZvcklubGluZUNhbGxGcmFtZShpbmxpbmVDYWxsRnJhbWUpOworCisgICAg
dW5zaWduZWQgbGVuZ3RoID0gYXJndW1lbnRDb3VudCAtIDE7CisgICAgQ2xvbmVkQXJndW1lbnRz
KiByZXN1bHQgPSBDbG9uZWRBcmd1bWVudHM6OmNyZWF0ZUVtcHR5KAorICAgICAgICB2bSwgY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Y2xvbmVkQXJndW1lbnRzU3RydWN0dXJlKCksIGNhbGxl
ZSwgbGVuZ3RoKTsKKworICAgIHZvaWQqIGZyYW1lQmFzZSA9IGNvbnRleHQuZnA8UmVnaXN0ZXIq
PigpICsgKGlubGluZUNhbGxGcmFtZSA/IGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgOiAw
KTsKKyAgICBGcmFtZSBmcmFtZShmcmFtZUJhc2UsIGNvbnRleHQuc3RhY2soKSk7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KQorICAgICAgICByZXN1bHQtPnB1dERpcmVjdElu
ZGV4KGV4ZWMsIGksIGZyYW1lLmdldEFyZ3VtZW50PEpTVmFsdWU+KGkpKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCiBPU1JFeGl0OjpPU1JFeGl0KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3Vy
Y2UganNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSB2YWx1ZVByb2Zp
bGUsIFNwZWN1bGF0aXZlSklUKiBqaXQsIHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1bnNpZ25lZCBy
ZWNvdmVyeUluZGV4KQogICAgIDogT1NSRXhpdEJhc2Uoa2luZCwgaml0LT5tX29yaWdpbi5mb3JF
eGl0LCBqaXQtPm1fb3JpZ2luLnNlbWFudGljLCBqaXQtPm1fb3JpZ2luLndhc0hvaXN0ZWQpCiAg
ICAgLCBtX2pzVmFsdWVTb3VyY2UoanNWYWx1ZVNvdXJjZSkKQEAgLTc4LDggKzI4MywxMCBAQCB2
b2lkIE9TUkV4aXQ6OmNvcnJlY3RKdW1wKExpbmtCdWZmZXImIGxpCiAgICAgbV9wYXRjaGFibGVD
b2RlT2Zmc2V0ID0gbGlua0J1ZmZlci5vZmZzZXRPZihsYWJlbCk7CiB9CiAKLXZvaWQgT1NSRXhp
dDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9wZXJhbmRz
PFZhbHVlUmVjb3Zlcnk+JiBvcGVyYW5kcykKK3N0YXRpYyB2b2lkIGVtaXRSZXN0b3JlQXJndW1l
bnRzKENvbnRleHQmIGNvbnRleHQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBPcGVyYW5k
czxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMpCiB7CisgICAgRnJhbWUgZnJhbWUoY29udGV4dC5m
cCgpLCBjb250ZXh0LnN0YWNrKCkpOworCiAgICAgSGFzaE1hcDxNaW5pZmllZElELCBpbnQ+IGFs
cmVhZHlBbGxvY2F0ZWRBcmd1bWVudHM7IC8vIE1hcHMgcGhhbnRvbSBhcmd1bWVudHMgbm9kZSBJ
RCB0byBvcGVyYW5kLgogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5k
cy5zaXplKCk7ICsraW5kZXgpIHsKICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3Zl
cnkgPSBvcGVyYW5kc1tpbmRleF07CkBAIC05MiwxNCArMjk5LDEyIEBAIHZvaWQgT1NSRXhpdDo6
ZW1pdFJlc3RvcmVBcmd1bWVudHMoQ0NhbGwKICAgICAgICAgTWluaWZpZWRJRCBpZCA9IHJlY292
ZXJ5Lm5vZGVJRCgpOwogICAgICAgICBhdXRvIGl0ZXIgPSBhbHJlYWR5QWxsb2NhdGVkQXJndW1l
bnRzLmZpbmQoaWQpOwogICAgICAgICBpZiAoaXRlciAhPSBhbHJlYWR5QWxsb2NhdGVkQXJndW1l
bnRzLmVuZCgpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlUmVncyByZWdzID0gSlNWYWx1ZVJlZ3M6
OndpdGhUd29BdmFpbGFibGVSZWdzKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSk7Ci0g
ICAgICAgICAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihpdGVyLT52
YWx1ZSksIHJlZ3MpOwotICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUocmVncywgQ0NhbGxIZWxw
ZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQo
b3BlcmFuZCwgZnJhbWUuZ2V0T3BlcmFuZDxKU1ZhbHVlPihpdGVyLT52YWx1ZSkpOwogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlu
bGluZUNhbGxGcmFtZSA9Ci0gICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmppdENvZGUoKS0+
ZGZnKCktPm1pbmlmaWVkREZHLmF0KGlkKS0+aW5saW5lQ2FsbEZyYW1lKCk7CisgICAgICAgICAg
ICBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnKCktPm1pbmlmaWVkREZHLmF0KGlkKS0+aW5saW5l
Q2FsbEZyYW1lKCk7CiAKICAgICAgICAgaW50IHN0YWNrT2Zmc2V0OwogICAgICAgICBpZiAoaW5s
aW5lQ2FsbEZyYW1lKQpAQCAtMTA3LDUzICszMTIsNDggQEAgdm9pZCBPU1JFeGl0OjplbWl0UmVz
dG9yZUFyZ3VtZW50cyhDQ2FsbAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzdGFja09mZnNl
dCA9IDA7CiAKLSAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUgfHwgaW5saW5lQ2FsbEZyYW1l
LT5pc0Nsb3N1cmVDYWxsKSB7Ci0gICAgICAgICAgICBqaXQubG9hZFB0cigKLSAgICAgICAgICAg
ICAgICBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Ioc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVT
bG90OjpjYWxsZWUpLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIGppdC5tb3ZlKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbVB0cihpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZVJlY292ZXJ5LmNv
bnN0YW50KCkuYXNDZWxsKCkpLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAg
ICAgICAgfQorICAgICAgICBKU0Z1bmN0aW9uKiBjYWxsZWU7CisgICAgICAgIGlmICghaW5saW5l
Q2FsbEZyYW1lIHx8IGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkKKyAgICAgICAgICAg
IGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZnJhbWUuZ2V0T3BlcmFuZDxKU1ZhbHVlPihz
dGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkuYXNDZWxsKCkpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGlubGluZUNhbGxG
cmFtZS0+Y2FsbGVlUmVjb3ZlcnkuY29uc3RhbnQoKS5hc0NlbGwoKSk7CiAKLSAgICAgICAgaWYg
KCFpbmxpbmVDYWxsRnJhbWUgfHwgaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgewotICAg
ICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBh
eWxvYWRGb3Ioc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwKLSAg
ICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBqaXQubW92ZSgKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpLAotICAgICAgICAgICAgICAg
IEdQUkluZm86OnJlZ1QxKTsKLSAgICAgICAgfQorICAgICAgICBpbnQzMl90IGFyZ3VtZW50Q291
bnQ7CisgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lIHx8IGlubGluZUNhbGxGcmFtZS0+aXNW
YXJhcmdzKCkpCisgICAgICAgICAgICBhcmd1bWVudENvdW50ID0gZnJhbWUuZ2V0T3BlcmFuZDxp
bnQzMl90PihzdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIFBheWxv
YWRPZmZzZXQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcmd1bWVudENvdW50ID0gaW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOwogCi0gICAgICAgIGppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoCi0gICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoaW5saW5lQ2FsbEZyYW1lKSwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsK
KyAgICAgICAgSlNDZWxsKiBhcmd1bWVudHNPYmplY3Q7CiAgICAgICAgIHN3aXRjaCAocmVjb3Zl
cnkudGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBEaXJlY3RBcmd1bWVudHNUaGF0V2VyZU5v
dENyZWF0ZWQ6Ci0gICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHNE
dXJpbmdFeGl0KSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICAgICAgYXJndW1lbnRz
T2JqZWN0ID0gY3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdChjb250ZXh0LCBjb2RlQmxv
Y2ssIGlubGluZUNhbGxGcmFtZSwgY2FsbGVlLCBhcmd1bWVudENvdW50KTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENsb25lZEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZDoK
LSAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihiaXR3
aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50c0R1cmluZ0V4aXQp
KSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgICAgICBhcmd1bWVudHNPYmplY3QgPSBj
cmVhdGVDbG9uZWRBcmd1bWVudHNEdXJpbmdFeGl0KGNvbnRleHQsIGNvZGVCbG9jaywgaW5saW5l
Q2FsbEZyYW1lLCBjYWxsZWUsIGFyZ3VtZW50Q291bnQpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgaml0LmNhbGwoR1BSSW5m
bzo6bm9uQXJnR1BSMCk7Ci0gICAgICAgIGppdC5zdG9yZUNlbGwoR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CisgICAgICAgIGZy
YW1lLnNldE9wZXJhbmQob3BlcmFuZCwgYXJndW1lbnRzT2JqZWN0KTsKIAogICAgICAgICBhbHJl
YWR5QWxsb2NhdGVkQXJndW1lbnRzLmFkZChpZCwgb3BlcmFuZCk7CiAgICAgfQogfQogCi12b2lk
IEpJVF9PUEVSQVRJT04gT1NSRXhpdDo6Y29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKiBleGVjKQor
dm9pZCBPU1JFeGl0OjpleGVjdXRlT1NSRXhpdChDb250ZXh0JiBjb250ZXh0KQogewotICAgIFZN
KiB2bSA9ICZleGVjLT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KCp2bSk7CisgICAgVk0mIHZtID0gKmNvbnRleHQuYXJnPFZNKj4oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBjb250
ZXh0LmZwPEV4ZWNTdGF0ZSo+KCk7CisgICAgQVNTRVJUKCZleGVjLT52bSgpID09ICZ2bSk7CiAK
LSAgICBpZiAodm0tPmNhbGxGcmFtZUZvckNhdGNoKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2
bS0+Y2FsbEZyYW1lRm9yQ2F0Y2ggPT0gZXhlYyk7CisgICAgaWYgKHZtLmNhbGxGcmFtZUZvckNh
dGNoKSB7CisgICAgICAgIGV4ZWMgPSB2bS5jYWxsRnJhbWVGb3JDYXRjaDsKKyAgICAgICAgY29u
dGV4dC5mcCgpID0gZXhlYzsKKyAgICB9CiAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4
ZWMtPmNvZGVCbG9jaygpOwogICAgIEFTU0VSVChjb2RlQmxvY2spOwpAQCAtMTYxLDE2ICszNjEs
MTUgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIE9TUkV4aXQ6OmNvbXBpbGVPU1JFeAogCiAgICAgLy8g
SXQncyBzb3J0IG9mIHByZWZlcmFibGUgdGhhdCB3ZSBkb24ndCBHQyB3aGlsZSBpbiBoZXJlLiBB
bnl3YXlzLCBkb2luZyBzbyB3b3VsZG4ndAogICAgIC8vIHJlYWxseSBiZSBwcm9maXRhYmxlLgot
ICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyh2bS0+aGVhcCk7CisgICAgRGVmZXJHQ0ZvckFX
aGlsZSBkZWZlckdDKHZtLmhlYXApOwogCi0gICAgdWludDMyX3QgZXhpdEluZGV4ID0gdm0tPm9z
ckV4aXRJbmRleDsKKyAgICB1aW50MzJfdCBleGl0SW5kZXggPSB2bS5vc3JFeGl0SW5kZXg7CiAg
ICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKS0+b3NyRXhpdFtl
eGl0SW5kZXhdOwogCi0gICAgaWYgKHZtLT5jYWxsRnJhbWVGb3JDYXRjaCkKLSAgICAgICAgQVNT
RVJUKGV4aXQubV9raW5kID09IEdlbmVyaWNVbndpbmQpOwotICAgIGlmIChleGl0LmlzRXhjZXB0
aW9uSGFuZGxlcigpKQotICAgICAgICBBU1NFUlRfVU5VU0VEKHNjb3BlLCAhIXNjb3BlLmV4Y2Vw
dGlvbigpKTsKLSAgICAKKyAgICBBU1NFUlQoIXZtLmNhbGxGcmFtZUZvckNhdGNoIHx8IGV4aXQu
bV9raW5kID09IEdlbmVyaWNVbndpbmQpOworICAgIEFTU0VSVF9VTlVTRUQoc2NvcGUsICFleGl0
LmlzRXhjZXB0aW9uSGFuZGxlcigpIHx8ICEhc2NvcGUuZXhjZXB0aW9uKCkpOworCisgICAgLy8g
RW5zdXJlIHdlIGhhdmUgYmFzZWxpbmUgY29kZUJsb2NrcyB0byBPU1IgZXhpdCB0by4KICAgICBw
cmVwYXJlQ29kZU9yaWdpbkZvck9TUkV4aXQoZXhlYywgZXhpdC5tX2NvZGVPcmlnaW4pOwogCiAg
ICAgLy8gQ29tcHV0ZSB0aGUgdmFsdWUgcmVjb3Zlcmllcy4KQEAgLTE4MSw2MSArMzgwLDQ5IEBA
IHZvaWQgSklUX09QRVJBVElPTiBPU1JFeGl0Ojpjb21waWxlT1NSRXgKICAgICBpZiAoZXhpdC5t
X3JlY292ZXJ5SW5kZXggIT0gVUlOVF9NQVgpCiAgICAgICAgIHJlY292ZXJ5ID0gJmNvZGVCbG9j
ay0+aml0Q29kZSgpLT5kZmcoKS0+c3BlY3VsYXRpb25SZWNvdmVyeVtleGl0Lm1fcmVjb3ZlcnlJ
bmRleF07CiAKKyAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHJlbW92ZSB0aGlzIGluZGVudGF0aW9u
LCBidXQgSSdtIGxlYXZpbmcgaXQgaGVyZSB0byBtYWtlIHRoZSBwYXRjaCBlYXNpZXIKKyAgICAv
LyB0byByZXZpZXcuIFdpbGwgdW5pbmRlbnQgdGhpcyBiZWZvcmUgbGFuZGluZy4KICAgICB7Ci0g
ICAgICAgIENDYWxsSGVscGVycyBqaXQoY29kZUJsb2NrKTsKLQogICAgICAgICBpZiAoZXhpdC5t
X2tpbmQgPT0gR2VuZXJpY1Vud2luZCkgewogICAgICAgICAgICAgLy8gV2UgYXJlIGFjdGluZyBh
cyBhIGRlZmFjdG8gb3BfY2F0Y2ggYmVjYXVzZSB3ZSBhcnJpdmUgaGVyZSBmcm9tIGdlbmVyaWNV
bndpbmQoKS4KICAgICAgICAgICAgIC8vIFNvLCB3ZSBtdXN0IHJlc3RvcmUgb3VyIGNhbGwgZnJh
bWUgYW5kIHN0YWNrIHBvaW50ZXIuCi0gICAgICAgICAgICBqaXQucmVzdG9yZUNhbGxlZVNhdmVz
RnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKCp2bSk7Ci0gICAgICAgICAgICBqaXQu
bG9hZFB0cih2bS0+YWRkcmVzc09mQ2FsbEZyYW1lRm9yQ2F0Y2goKSwgR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIpOworICAgICAgICAgICAgcmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNRW50cnlG
cmFtZUNhbGxlZVNhdmVzQnVmZmVyKGNvbnRleHQpOworICAgICAgICAgICAgQVNTRVJUKGNvbnRl
eHQuZnAoKSA9PSB2bS5jYWxsRnJhbWVGb3JDYXRjaCk7CiAgICAgICAgIH0KLSAgICAgICAgaml0
LmFkZFB0cigKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNvZGVCbG9j
ay0+c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwKLSAgICAgICAgICAg
IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsKKyAgICAgICAgY29udGV4dC5zcCgpID0gY29udGV4dC5mcDx1aW50OF90Kj4oKSAr
IChjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSk7CiAK
LSAgICAgICAgaml0LmppdEFzc2VydEhhc1ZhbGlkQ2FsbEZyYW1lKCk7CisgICAgICAgIEFTU0VS
VCghKGNvbnRleHQuZnA8dWludHB0cl90PigpICYgMHg3KSk7CiAKLSAgICAgICAgaWYgKFVOTElL
RUxZKHZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIgJiYgY29kZUJsb2NrLT5qaXRDb2RlKCktPmRm
Z0NvbW1vbigpLT5jb21waWxhdGlvbikpIHsKLSAgICAgICAgICAgIFByb2ZpbGVyOjpEYXRhYmFz
ZSYgZGF0YWJhc2UgPSAqdm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlcjsKKyAgICAgICAgaWYgKFVO
TElLRUxZKHZtLm1fcGVyQnl0ZWNvZGVQcm9maWxlciAmJiBjb2RlQmxvY2stPmppdENvZGUoKS0+
ZGZnQ29tbW9uKCktPmNvbXBpbGF0aW9uKSkgeworICAgICAgICAgICAgUHJvZmlsZXI6OkRhdGFi
YXNlJiBkYXRhYmFzZSA9ICp2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXI7CiAgICAgICAgICAgICBQ
cm9maWxlcjo6Q29tcGlsYXRpb24qIGNvbXBpbGF0aW9uID0gY29kZUJsb2NrLT5qaXRDb2RlKCkt
PmRmZ0NvbW1vbigpLT5jb21waWxhdGlvbi5nZXQoKTsKIAogICAgICAgICAgICAgUHJvZmlsZXI6
Ok9TUkV4aXQqIHByb2ZpbGVyRXhpdCA9IGNvbXBpbGF0aW9uLT5hZGRPU1JFeGl0KAogICAgICAg
ICAgICAgICAgIGV4aXRJbmRleCwgUHJvZmlsZXI6Ok9yaWdpblN0YWNrKGRhdGFiYXNlLCBjb2Rl
QmxvY2ssIGV4aXQubV9jb2RlT3JpZ2luKSwKICAgICAgICAgICAgICAgICBleGl0Lm1fa2luZCwg
ZXhpdC5tX2tpbmQgPT0gVW5jb3VudGFibGVJbnZhbGlkYXRpb24pOwotICAgICAgICAgICAgaml0
LmFkZDY0KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBDQ2FsbEhlbHBlcnM6OkFic29s
dXRlQWRkcmVzcyhwcm9maWxlckV4aXQtPmNvdW50ZXJBZGRyZXNzKCkpKTsKKyAgICAgICAgICAg
IHByb2ZpbGVyRXhpdC0+aW5jQ291bnQoKTsKICAgICAgICAgfQogCi0gICAgICAgIGNvbXBpbGVF
eGl0KGppdCwgKnZtLCBleGl0LCBvcGVyYW5kcywgcmVjb3ZlcnkpOwotCi0gICAgICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBjb2RlQmxvY2spOwotICAgICAgICBleGl0Lm1fY29kZSA9
IEZJTkFMSVpFX0NPREVfSUYoCi0gICAgICAgICAgICBzaG91bGREdW1wRGlzYXNzZW1ibHkoKSB8
fCBPcHRpb25zOjp2ZXJib3NlT1NSKCkgfHwgT3B0aW9uczo6dmVyYm9zZURGR09TUkV4aXQoKSwK
LSAgICAgICAgICAgIHBhdGNoQnVmZmVyLAotICAgICAgICAgICAgKCJERkcgT1NSIGV4aXQgIyV1
ICglcywgJXMpIGZyb20gJXMsIHdpdGggb3BlcmFuZHMgPSAlcyIsCisgICAgICAgIGlmIChVTkxJ
S0VMWShPcHRpb25zOjp2ZXJib3NlT1NSKCkgfHwgT3B0aW9uczo6dmVyYm9zZURGR09TUkV4aXQo
KSkpIHsKKyAgICAgICAgICAgIGRhdGFMb2dGKCJERkcgT1NSIGV4aXQgIyV1ICglcywgJXMpIGZy
b20gJXMsIHdpdGggb3BlcmFuZHMgPSAlcyIsCiAgICAgICAgICAgICAgICAgZXhpdEluZGV4LCB0
b0NTdHJpbmcoZXhpdC5tX2NvZGVPcmlnaW4pLmRhdGEoKSwKICAgICAgICAgICAgICAgICBleGl0
S2luZFRvU3RyaW5nKGV4aXQubV9raW5kKSwgdG9DU3RyaW5nKCpjb2RlQmxvY2spLmRhdGEoKSwK
LSAgICAgICAgICAgICAgICB0b0NTdHJpbmcoaWdub3JpbmdDb250ZXh0PER1bXBDb250ZXh0Pihv
cGVyYW5kcykpLmRhdGEoKSkpOworICAgICAgICAgICAgICAgIHRvQ1N0cmluZyhpZ25vcmluZ0Nv
bnRleHQ8RHVtcENvbnRleHQ+KG9wZXJhbmRzKSkuZGF0YSgpKTsKKyAgICAgICAgfQogICAgIH0K
IAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChleGl0LmNvZGVMb2NhdGlvbkZvclJl
cGF0Y2goY29kZUJsb2NrKSwgQ29kZUxvY2F0aW9uTGFiZWwoZXhpdC5tX2NvZGUuY29kZSgpKSk7
Ci0KLSAgICB2bS0+b3NyRXhpdEp1bXBEZXN0aW5hdGlvbiA9IGV4aXQubV9jb2RlLmNvZGUoKS5l
eGVjdXRhYmxlQWRkcmVzcygpOwotfQotCi12b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxs
SGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0IE9wZXJhbmRz
PFZhbHVlUmVjb3Zlcnk+JiBvcGVyYW5kcywgU3BlY3VsYXRpb25SZWNvdmVyeSogcmVjb3Zlcnkp
Ci17Ci0gICAgaml0LmppdEFzc2VydFRhZ3NJblBsYWNlKCk7CisgICAgYXV0byYgY3B1ID0gY29u
dGV4dC5jcHU7CisgICAgRnJhbWUgZnJhbWUoY3B1LmZwKCksIGNvbnRleHQuc3RhY2soKSk7Cisg
ICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IGNvZGVCbG9jay0+YmFzZWxpbmVBbHRl
cm5hdGl2ZSgpOworICAgIEFTU0VSVChiYXNlbGluZUNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJ
VENvZGU6OkJhc2VsaW5lSklUKTsKIAotICAgIC8vIFByby1mb3JtYSBzdHVmZi4KLSAgICBpZiAo
T3B0aW9uczo6cHJpbnRFYWNoT1NSRXhpdCgpKSB7Ci0gICAgICAgIFNwZWN1bGF0aW9uRmFpbHVy
ZURlYnVnSW5mbyogZGVidWdJbmZvID0gbmV3IFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbzsK
LSAgICAgICAgZGVidWdJbmZvLT5jb2RlQmxvY2sgPSBqaXQuY29kZUJsb2NrKCk7Ci0gICAgICAg
IGRlYnVnSW5mby0+a2luZCA9IGV4aXQubV9raW5kOwotICAgICAgICBkZWJ1Z0luZm8tPmJ5dGVj
b2RlT2Zmc2V0ID0gZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleDsKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgIEFTU0VSVChjcHUuZ3ByKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cikgPT0gVGFnVHlwZU51bWJlcik7CisgICAgQVNTRVJUKGNwdS5ncHIoR1BSSW5mbzo6dGFnTWFz
a1JlZ2lzdGVyKSA9PSBUYWdNYXNrKTsKKyNlbmRpZgogCi0gICAgICAgIGppdC5kZWJ1Z0NhbGwo
dm0sIGRlYnVnT3BlcmF0aW9uUHJpbnRTcGVjdWxhdGlvbkZhaWx1cmUsIGRlYnVnSW5mbyk7Ci0g
ICAgfQorICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpwcmludEVhY2hPU1JFeGl0KCkpKQorICAg
ICAgICBwcmludE9TUkV4aXQoY29udGV4dCwgdm0ub3NyRXhpdEluZGV4LCBleGl0KTsKIAogICAg
IC8vIFBlcmZvcm0gc3BlY3VsYXRpb24gcmVjb3ZlcnkuIFRoaXMgb25seSBjb21lcyBpbnRvIHBs
YXkgd2hlbiBhbiBvcGVyYXRpb24KICAgICAvLyBzdGFydHMgbXV0YXRpbmcgc3RhdGUgYmVmb3Jl
IHZlcmlmeWluZyB0aGUgc3BlY3VsYXRpb24gaXQgaGFzIGFscmVhZHkgbWFkZS4KQEAgLTI0Mywy
MiArNDMwLDI0IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAg
ICBpZiAocmVjb3ZlcnkpIHsKICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS0+dHlwZSgpKSB7CiAg
ICAgICAgIGNhc2UgU3BlY3VsYXRpdmVBZGQ6Ci0gICAgICAgICAgICBqaXQuc3ViMzIocmVjb3Zl
cnktPnNyYygpLCByZWNvdmVyeS0+ZGVzdCgpKTsKKyAgICAgICAgICAgIGNwdS5ncHIocmVjb3Zl
cnktPmRlc3QoKSkgPSBjcHUuZ3ByPHVpbnQzMl90PihyZWNvdmVyeS0+ZGVzdCgpKSAtIGNwdS5n
cHI8dWludDMyX3Q+KHJlY292ZXJ5LT5zcmMoKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAg
ICAgICAgIGppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVjb3Zlcnkt
PmRlc3QoKSk7CisgICAgICAgICAgICBBU1NFUlQoIShjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkp
ID4+IDMyKSk7CisgICAgICAgICAgICBjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkpIHw9IFRhZ1R5
cGVOdW1iZXI7CiAjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU3Bl
Y3VsYXRpdmVBZGRJbW1lZGlhdGU6Ci0gICAgICAgICAgICBqaXQuc3ViMzIoQXNzZW1ibHlIZWxw
ZXJzOjpJbW0zMihyZWNvdmVyeS0+aW1tZWRpYXRlKCkpLCByZWNvdmVyeS0+ZGVzdCgpKTsKKyAg
ICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgPSAoY3B1Lmdwcjx1aW50MzJfdD4o
cmVjb3ZlcnktPmRlc3QoKSkgLSByZWNvdmVyeS0+aW1tZWRpYXRlKCkpOwogI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgICAgICAgICBqaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIsIHJlY292ZXJ5LT5kZXN0KCkpOworICAgICAgICAgICAgQVNTRVJUKCEoY3B1LmdwcihyZWNv
dmVyeS0+ZGVzdCgpKSA+PiAzMikpOworICAgICAgICAgICAgY3B1LmdwcihyZWNvdmVyeS0+ZGVz
dCgpKSB8PSBUYWdUeXBlTnVtYmVyOwogI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKIAogICAg
ICAgICBjYXNlIEJvb2xlYW5TcGVjdWxhdGlvbkNoZWNrOgogI2lmIFVTRShKU1ZBTFVFNjQpCi0g
ICAgICAgICAgICBqaXQueG9yNjQoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCByZWNvdmVyeS0+ZGVzdCgpKTsKKyAgICAgICAg
ICAgIGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgPSBjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkp
IF4gVmFsdWVGYWxzZTsKICNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTI4MSwzOTUg
KzQ3MCwxMDQgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAg
ICAgICAgICAgLy8gcHJvcGVydHkgYWNjZXNzLCBvciBkdWUgdG8gYW4gYXJyYXkgcHJvZmlsZSku
CiAKICAgICAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGV4aXQubV9jb2RlT3JpZ2lu
Rm9yRXhpdFByb2ZpbGU7Ci0gICAgICAgICAgICBpZiAoQXJyYXlQcm9maWxlKiBhcnJheVByb2Zp
bGUgPSBqaXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoY29kZU9yaWdpbiktPmdldEFycmF5UHJvZmls
ZShjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKSB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAg
ICAgICAgICAgICBHUFJSZWcgdXNlZFJlZ2lzdGVyOwotICAgICAgICAgICAgICAgIGlmIChleGl0
Lm1fanNWYWx1ZVNvdXJjZS5pc0FkZHJlc3MoKSkKLSAgICAgICAgICAgICAgICAgICAgdXNlZFJl
Z2lzdGVyID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UuYmFzZSgpOwotICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVyID0gZXhpdC5tX2pzVmFsdWVTb3Vy
Y2UuZ3ByKCk7Ci0jZWxzZQotICAgICAgICAgICAgICAgIEdQUlJlZyB1c2VkUmVnaXN0ZXIxOwot
ICAgICAgICAgICAgICAgIEdQUlJlZyB1c2VkUmVnaXN0ZXIyOwotICAgICAgICAgICAgICAgIGlm
IChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0FkZHJlc3MoKSkgewotICAgICAgICAgICAgICAgICAg
ICB1c2VkUmVnaXN0ZXIxID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UuYmFzZSgpOwotICAgICAgICAg
ICAgICAgICAgICB1c2VkUmVnaXN0ZXIyID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXIxID0gZXhpdC5tX2pz
VmFsdWVTb3VyY2UucGF5bG9hZEdQUigpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZXhpdC5t
X2pzVmFsdWVTb3VyY2UuaGFzS25vd25UYWcoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHVz
ZWRSZWdpc3RlcjIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXIyID0gZXhpdC5tX2pzVmFsdWVTb3Vy
Y2UudGFnR1BSKCk7Ci0gICAgICAgICAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgICAgICAg
ICBHUFJSZWcgc2NyYXRjaDE7Ci0gICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyOwotI2lm
IFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICAgICAgc2NyYXRjaDEgPSBBc3NlbWJseUhlbHBl
cnM6OnNlbGVjdFNjcmF0Y2hHUFIodXNlZFJlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICBzY3Jh
dGNoMiA9IEFzc2VtYmx5SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUih1c2VkUmVnaXN0ZXIsIHNj
cmF0Y2gxKTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgc2NyYXRjaDEgPSBBc3NlbWJseUhlbHBl
cnM6OnNlbGVjdFNjcmF0Y2hHUFIodXNlZFJlZ2lzdGVyMSwgdXNlZFJlZ2lzdGVyMik7Ci0gICAg
ICAgICAgICAgICAgc2NyYXRjaDIgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIo
dXNlZFJlZ2lzdGVyMSwgdXNlZFJlZ2lzdGVyMiwgc2NyYXRjaDEpOwotI2VuZGlmCi0KLSAgICAg
ICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5wdXNo
VG9TYXZlKHNjcmF0Y2gxKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnB1c2hUb1NhdmUoc2Ny
YXRjaDIpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGpp
dC5wdXNoKHNjcmF0Y2gxKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnB1c2goc2NyYXRjaDIp
OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIEdQUlJlZyB2YWx1ZTsKLSAg
ICAgICAgICAgICAgICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaXNBZGRyZXNzKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzY3JhdGNoMTsKLSAgICAgICAgICAgICAgICAgICAg
aml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKGV4aXQubV9qc1ZhbHVlU291cmNl
LmFzQWRkcmVzcygpKSwgdmFsdWUpOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgICAgICAgICB2YWx1ZSA9IGV4aXQubV9qc1ZhbHVlU291cmNlLnBheWxvYWRHUFIoKTsKLQot
ICAgICAgICAgICAgICAgIGppdC5sb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHZhbHVl
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoMSk7Ci0gICAgICAgICAgICAg
ICAgaml0LnN0b3JlMzIoc2NyYXRjaDEsIGFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5T
dHJ1Y3R1cmVJRCgpKTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgICAgIGppdC5s
b2FkOChBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3ModmFsdWUsIEpTQ2VsbDo6aW5kZXhpbmdUeXBl
QW5kTWlzY09mZnNldCgpKSwgc2NyYXRjaDEpOwotI2Vsc2UKLSAgICAgICAgICAgICAgICBqaXQu
bG9hZDgoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gxLCBTdHJ1Y3R1cmU6OmluZGV4
aW5nVHlwZUluY2x1ZGluZ0hpc3RvcnlPZmZzZXQoKSksIHNjcmF0Y2gxKTsKLSNlbmRpZgotICAg
ICAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBz
Y3JhdGNoMik7Ci0gICAgICAgICAgICAgICAgaml0LmxzaGlmdDMyKHNjcmF0Y2gxLCBzY3JhdGNo
Mik7Ci0gICAgICAgICAgICAgICAgaml0Lm9yMzIoc2NyYXRjaDIsIEFzc2VtYmx5SGVscGVyczo6
QWJzb2x1dGVBZGRyZXNzKGFycmF5UHJvZmlsZS0+YWRkcmVzc09mQXJyYXlNb2RlcygpKSk7Ci0K
LSAgICAgICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGpp
dC5wb3BUb1Jlc3RvcmUoc2NyYXRjaDIpOwotICAgICAgICAgICAgICAgICAgICBqaXQucG9wVG9S
ZXN0b3JlKHNjcmF0Y2gxKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICBqaXQucG9wKHNjcmF0Y2gyKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnBvcChz
Y3JhdGNoMSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgQ29kZUJsb2NrKiBwcm9m
aWxlZENvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2Rl
QmxvY2soY29kZU9yaWdpbiwgYmFzZWxpbmVDb2RlQmxvY2spOworICAgICAgICAgICAgaWYgKEFy
cmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gcHJvZmlsZWRDb2RlQmxvY2stPmdldEFycmF5UHJv
ZmlsZShjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKSB7CisgICAgICAgICAgICAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBqc1ZhbHVlRm9yKGNwdSwgZXhpdC5tX2pzVmFsdWVTb3VyY2UpLmFz
Q2VsbCgpLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+b2Jz
ZXJ2ZVN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+
b2JzZXJ2ZUFycmF5TW9kZShhcnJheU1vZGVGcm9tU3RydWN0dXJlKHN0cnVjdHVyZSkpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKE1ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUgcHJvZmlsZSA9IGV4aXQubV92YWx1ZVByb2ZpbGUpIHsKLSNpZiBVU0UoSlNWQUxV
RTY0KQotICAgICAgICAgICAgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmlzQWRkcmVzcygpKSB7
Ci0gICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgYmUgc3VyZSB0aGF0IHdlIGhhdmUgYSBzcGFy
ZSByZWdpc3Rlci4gU28gdXNlIHRoZSB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsCi0gICAgICAgICAg
ICAgICAgLy8gc2luY2Ugd2Uga25vdyBob3cgdG8gcmVzdG9yZSBpdC4KLSAgICAgICAgICAgICAg
ICBqaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhleGl0Lm1fanNWYWx1ZVNvdXJj
ZS5hc0FkZHJlc3MoKSksIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgICAg
ICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhHUFJJbmZv
Ojp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChUYWdUeXBlTnVtYmVyKSwgR1BSSW5mbzo6dGFnVHlw
ZU51bWJlclJlZ2lzdGVyKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHBy
b2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoZXhpdC5tX2pzVmFsdWVTb3Vy
Y2UuZ3ByKCkpKTsKLSNlbHNlIC8vIG5vdCBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgaWYg
KGV4aXQubV9qc1ZhbHVlU291cmNlLmlzQWRkcmVzcygpKSB7Ci0gICAgICAgICAgICAgICAgLy8g
U2F2ZSBhIHJlZ2lzdGVyIHNvIHdlIGNhbiB1c2UgaXQuCi0gICAgICAgICAgICAgICAgR1BSUmVn
IHNjcmF0Y2hQYXlsb2FkID0gQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGV4aXQu
bV9qc1ZhbHVlU291cmNlLmJhc2UoKSk7Ci0gICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hU
YWcgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIoZXhpdC5tX2pzVmFsdWVTb3Vy
Y2UuYmFzZSgpLCBzY3JhdGNoUGF5bG9hZCk7Ci0gICAgICAgICAgICAgICAgaml0LnB1c2hUb1Nh
dmUoc2NyYXRjaFBheWxvYWQpOwotICAgICAgICAgICAgICAgIGppdC5wdXNoVG9TYXZlKHNjcmF0
Y2hUYWcpOwotCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mgc2NyYXRjaChzY3JhdGNoVGFn
LCBzY3JhdGNoUGF5bG9hZCk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaml0
LmxvYWRWYWx1ZShleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSwgc2NyYXRjaCk7Ci0g
ICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBzY3JhdGNoKTsKLSAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2hU
YWcpOwotICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaFBheWxvYWQpOwot
ICAgICAgICAgICAgfSBlbHNlIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5oYXNLbm93blRhZygp
KSB7Ci0gICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hUYWcgPSBBc3NlbWJseUhlbHBlcnM6
OnNlbGVjdFNjcmF0Y2hHUFIoZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigpKTsKLSAg
ICAgICAgICAgICAgICBqaXQucHVzaFRvU2F2ZShzY3JhdGNoVGFnKTsKLSAgICAgICAgICAgICAg
ICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihleGl0Lm1fanNWYWx1ZVNv
dXJjZS50YWcoKSksIHNjcmF0Y2hUYWcpOwotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHZh
bHVlKHNjcmF0Y2hUYWcsIGV4aXQubV9qc1ZhbHVlU291cmNlLnBheWxvYWRHUFIoKSk7Ci0gICAg
ICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCB2YWx1ZSk7Ci0gICAgICAg
ICAgICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3JhdGNoVGFnKTsKLSAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgZXhpdC5tX2pz
VmFsdWVTb3VyY2UucmVncygpKTsKLSNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQotICAgICAgICB9
CisgICAgICAgIGlmIChNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBleGl0
Lm1fdmFsdWVQcm9maWxlKQorICAgICAgICAgICAgcHJvZmlsZS5yZXBvcnRWYWx1ZShqc1ZhbHVl
Rm9yKGNwdSwgZXhpdC5tX2pzVmFsdWVTb3VyY2UpKTsKICAgICB9CiAKLSAgICAvLyBXaGF0IGZv
bGxvd3MgaXMgYW4gaW50ZW50aW9uYWxseSBzaW1wbGUgT1NSIGV4aXQgaW1wbGVtZW50YXRpb24g
dGhhdCBnZW5lcmF0ZXMKLSAgICAvLyBmYWlybHkgcG9vciBjb2RlIGJ1dCBpcyB2ZXJ5IGVhc3kg
dG8gaGFjay4gSW4gcGFydGljdWxhciwgaXQgZHVtcHMgYWxsIHN0YXRlIHRoYXQKLSAgICAvLyBu
ZWVkcyBjb252ZXJzaW9uIGludG8gYSBzY3JhdGNoIGJ1ZmZlciBzbyB0aGF0IGluIHN0ZXAgNiwg
d2hlcmUgd2UgYWN0dWFsbHkgZG8gdGhlCi0gICAgLy8gY29udmVyc2lvbnMsIHdlIGtub3cgdGhh
dCBhbGwgdGVtcCByZWdpc3RlcnMgYXJlIGZyZWUgdG8gdXNlIGFuZCB0aGUgdmFyaWFibGUgaXMK
LSAgICAvLyBkZWZpbml0ZWx5IGluIGEgd2VsbC1rbm93biBzcG90IGluIHRoZSBzY3JhdGNoIGJ1
ZmZlciByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgaGFkCi0gICAgLy8gb3JpZ2luYWxseSBiZWVu
IGluIGEgcmVnaXN0ZXIgb3Igc3BpbGxlZC4gVGhpcyBhbGxvd3MgdXMgdG8gZGVjb3VwbGUgIndo
ZXJlIHdhcwotICAgIC8vIHRoZSB2YXJpYWJsZSIgZnJvbSAiaG93IHdhcyBpdCByZXByZXNlbnRl
ZCIuIENvbnNpZGVyIHRoYXQgdGhlCi0gICAgLy8gSW50MzJEaXNwbGFjZWRJbkpTU3RhY2sgcmVj
b3Zlcnk6IGl0IHRlbGxzIHVzIHRoYXQgdGhlIHZhbHVlIGlzIGluIGEKLSAgICAvLyBwYXJ0aWN1
bGFyIHBsYWNlIGFuZCB0aGF0IHRoYXQgcGxhY2UgaG9sZHMgYW4gdW5ib3hlZCBpbnQzMi4gV2Ug
aGF2ZSB0d28gZGlmZmVyZW50Ci0gICAgLy8gcGxhY2VzIHRoYXQgYSB2YWx1ZSBjb3VsZCBiZSAo
ZGlzcGxhY2VkLCByZWdpc3RlcikgYW5kIGEgYnVuY2ggb2YgZGlmZmVyZW50Ci0gICAgLy8gd2F5
cyBvZiByZXByZXNlbnRpbmcgYSB2YWx1ZS4gVGhlIG51bWJlciBvZiByZWNvdmVyaWVzIGlzIHR3
byAqIGEgYnVuY2guIFRoZSBjb2RlCi0gICAgLy8gYmVsb3cgbWVhbnMgdGhhdCB3ZSBoYXZlIHRv
IGhhdmUgdHdvICsgYSBidW5jaCBjYXNlcyByYXRoZXIgdGhhbiB0d28gKiBhIGJ1bmNoLgotICAg
IC8vIE9uY2Ugd2UgaGF2ZSBsb2FkZWQgdGhlIHZhbHVlIGZyb20gd2hlcmV2ZXIgaXQgd2FzLCB0
aGUgcmVib3hpbmcgaXMgdGhlIHNhbWUKLSAgICAvLyByZWdhcmRsZXNzIG9mIGl0cyBsb2NhdGlv
bi4gTGlrZXdpc2UsIGJlZm9yZSB3ZSBkbyB0aGUgcmVib3hpbmcsIHRoZSB3YXkgd2UgZ2V0IHRv
Ci0gICAgLy8gdGhlIHZhbHVlIChpLmUuIHdoZXJlIHdlIGxvYWQgaXQgZnJvbSkgaXMgdGhlIHNh
bWUgcmVnYXJkbGVzcyBvZiBpdHMgdHlwZS4gQmVjYXVzZQotICAgIC8vIHRoZSBjb2RlIGJlbG93
IGFsd2F5cyBkdW1wcyBldmVyeXRoaW5nIGludG8gYSBzY3JhdGNoIGJ1ZmZlciBmaXJzdCwgdGhl
IHR3bwotICAgIC8vIHF1ZXN0aW9ucyBiZWNvbWUgb3J0aG9nb25hbCwgd2hpY2ggc2ltcGxpZmll
cyBhZGRpbmcgbmV3IHR5cGVzIGFuZCBhZGRpbmcgbmV3Ci0gICAgLy8gbG9jYXRpb25zLgotICAg
IC8vCi0gICAgLy8gVGhpcyByYWlzZXMgdGhlIHF1ZXN0aW9uOiBkb2VzIHVzaW5nIHN1Y2ggYSBz
dWJvcHRpbWFsIGltcGxlbWVudGF0aW9uIG9mIE9TUiBleGl0LAotICAgIC8vIHdoZXJlIHdlIGFs
d2F5cyBlbWl0IGNvZGUgdG8gZHVtcCBhbGwgc3RhdGUgaW50byBhIHNjcmF0Y2ggYnVmZmVyIG9u
bHkgdG8gdGhlbgotICAgIC8vIGR1bXAgaXQgcmlnaHQgYmFjayBpbnRvIHRoZSBzdGFjaywgaHVy
dCB1cyBpbiBhbnkgd2F5PyBUaGUgYXNud2VyIGlzIHRoYXQgT1NSIGV4aXRzCi0gICAgLy8gYXJl
IHJhcmUuIE91ciB0aWVyaW5nIHN0cmF0ZWd5IGVuc3VyZXMgdGhpcy4gVGhpcyBpcyBiZWNhdXNl
IGlmIGFuIE9TUiBleGl0IGlzCi0gICAgLy8gdGFrZW4gbW9yZSB0aGFuIH4xMDAgdGltZXMsIHdl
IGpldHRpc29uIHRoZSBERkcgY29kZSBibG9jayBhbG9uZyB3aXRoIGFsbCBvZiBpdHMKLSAgICAv
LyBleGl0cy4gSXQgaXMgaW1wb3NzaWJsZSBmb3IgYW4gT1NSIGV4aXQgLSBpLmUuIHRoZSBjb2Rl
IHdlIGNvbXBpbGUgYmVsb3cgLSB0bwotICAgIC8vIGV4ZWN1dGUgZnJlcXVlbnRseSBlbm91Z2gg
Zm9yIHRoZSBjb2RlZ2VuIHRvIG1hdHRlciB0aGF0IG11Y2guIEl0IHByb2JhYmx5IG1hdHRlcnMK
LSAgICAvLyBlbm91Z2ggdGhhdCB3ZSBkb24ndCB3YW50IHRvIHR1cm4gdGhpcyBpbnRvIHNvbWUg
c3VwZXItc2xvdyBmdW5jdGlvbiBjYWxsLCBidXQgc28KLSAgICAvLyBsb25nIGFzIHdlJ3JlIGdl
bmVyYXRpbmcgc3RyYWlnaHQtbGluZSBjb2RlLCB0aGF0IGNvZGUgY2FuIGJlIHByZXR0eSBiYWQu
IEFsc28KLSAgICAvLyBiZWNhdXNlIHdlIHRlbmQgdG8gZXhpdCBvbmx5IGFsb25nIG9uZSBPU1Ig
ZXhpdCBmcm9tIGFueSBERkcgY29kZSBibG9jayAtIHRoYXQncyBhbgotICAgIC8vIGVtcGlyaWNh
bCByZXN1bHQgdGhhdCB3ZSdyZSBleHRyZW1lbHkgY29uZmlkZW50IGFib3V0IC0gdGhlIGNvZGUg
c2l6ZSBvZiB0aGlzCi0gICAgLy8gZG9lc24ndCBtYXR0ZXIgbXVjaC4gSGVuY2UgYW55IGF0dGVt
cHQgdG8gb3B0aW1pemUgdGhlIGNvZGVnZW4gaGVyZSBpcyBqdXN0IHB1cmVseQotICAgIC8vIGhh
cm1mdWwgdG8gdGhlIHN5c3RlbTogaXQgcHJvYmFibHkgd29uJ3QgcmVkdWNlIGVpdGhlciBuZXQg
bWVtb3J5IHVzYWdlIG9yIG5ldAotICAgIC8vIGV4ZWN1dGlvbiB0aW1lLiBJdCB3aWxsIG9ubHkg
cHJldmVudCB1cyBmcm9tIGNsZWFubHkgZGVjb3VwbGluZyAid2hlcmUgd2FzIHRoZQotICAgIC8v
IHZhcmlhYmxlIiBmcm9tICJob3cgd2FzIGl0IHJlcHJlc2VudGVkIiwgd2hpY2ggd2lsbCBtYWtl
IGl0IG1vcmUgZGlmZmljdWx0IHRvIGFkZAotICAgIC8vIGZlYXR1cmVzIGluIHRoZSBmdXR1cmUg
YW5kIGl0IHdpbGwgbWFrZSBpdCBoYXJkZXIgdG8gcmVhc29uIGFib3V0IGJ1Z3MuCi0KLSAgICAv
LyBTYXZlIGFsbCBzdGF0ZSBmcm9tIEdQUnMgaW50byB0aGUgc2NyYXRjaCBidWZmZXIuCi0KLSAg
ICBTY3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZlckZvclNpemUo
c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIG9wZXJhbmRzLnNpemUoKSk7Ci0gICAgRW5jb2RlZEpT
VmFsdWUqIHNjcmF0Y2ggPSBzY3JhdGNoQnVmZmVyID8gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFs
dWUqPihzY3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpIDogMDsKLQotICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAg
Y29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5kc1tpbmRleF07Ci0KLSAgICAg
ICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewotICAgICAgICBjYXNlIFVuYm94ZWRJ
bnQzMkluR1BSOgotICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6Ci0jaWYgVVNFKEpTVkFM
VUU2NCkKLSAgICAgICAgY2FzZSBJbkdQUjoKLSAgICAgICAgY2FzZSBVbmJveGVkSW50NTJJbkdQ
UjoKLSAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NTJJbkdQUjoKLSAgICAgICAgICAgIGpp
dC5zdG9yZTY0KHJlY292ZXJ5LmdwcigpLCBzY3JhdGNoICsgaW5kZXgpOwotICAgICAgICAgICAg
YnJlYWs7Ci0jZWxzZQotICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6Ci0gICAgICAg
ICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICByZWNvdmVyeS5ncHIoKSwKLSAgICAg
ICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNo
ICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIAotICAgICAgICBjYXNlIEluUGFpcjoKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAg
ICAgICAgICAgICAgIHJlY292ZXJ5LnRhZ0dQUigpLAotICAgICAgICAgICAgICAgICZiaXR3aXNl
X2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy50
YWcpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgcmVjb3Zlcnku
cGF5bG9hZEdQUigpLAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVl
RGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotI2VuZGlmCi0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gQW5kIHZvaWxhLCBhbGwgR1BScyBhcmUgZnJl
ZSB0byByZXVzZS4KLQotICAgIC8vIFNhdmUgYWxsIHN0YXRlIGZyb20gRlBScyBpbnRvIHRoZSBz
Y3JhdGNoIGJ1ZmZlci4KLQotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVy
YW5kcy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVj
b3ZlcnkgPSBvcGVyYW5kc1tpbmRleF07Ci0KLSAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNo
bmlxdWUoKSkgewotICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoKLSAgICAgICAgY2Fz
ZSBJbkZQUjoKLSAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQu
c3RvcmVEb3VibGUocmVjb3ZlcnkuZnByKCksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUklu
Zm86OnJlZ1QwKSk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBOb3csIGFsbCBGUFJz
IGFyZSBhbHNvIGZyZWUuCi0KLSAgICAvLyBTYXZlIGFsbCBzdGF0ZSBmcm9tIHRoZSBzdGFjayBp
bnRvIHRoZSBzY3JhdGNoIGJ1ZmZlci4gRm9yIHNpbXBsaWNpdHkgd2UKLSAgICAvLyBkbyB0aGlz
IGV2ZW4gZm9yIHN0YXRlIHRoYXQncyBhbHJlYWR5IGluIHRoZSByaWdodCBwbGFjZSBvbiB0aGUg
c3RhY2suCi0gICAgLy8gSXQgbWFrZXMgdGhpbmdzIHNpbXBsZXIgbGF0ZXIuCi0KLSAgICBmb3Ig
KHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4KSB7Ci0g
ICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhdOwot
Ci0gICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKLSAgICAgICAgY2FzZSBE
aXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazoK
LSAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICBjYXNlIElu
dDMyRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNT
dGFjazoKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5K
U1N0YWNrOgotICAgICAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgotICAg
ICAgICAgICAgaml0LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IocmVjb3Zlcnku
dmlydHVhbFJlZ2lzdGVyKCkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3Rv
cmU2NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKLSAgICAgICAgICAgIGJyZWFr
OwotI2Vsc2UKLSAgICAgICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1i
bHlIZWxwZXJzOjp0YWdGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAotICAgICAgICAg
ICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAg
ICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdp
c3RlcigpKSwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgICAgICAgICBq
aXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwKLSAgICAgICAgICAg
ICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5k
ZXgpLT5hc0JpdHMudGFnKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAg
ICAgIEdQUkluZm86OnJlZ1QxLAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotI2VuZGlmCi0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gTmVlZCB0byBlbnN1cmUgdGhhdCB0
aGUgc3RhY2sgcG9pbnRlciBhY2NvdW50cyBmb3IgdGhlIHdvcnN0LWNhc2Ugc3RhY2sgdXNhZ2Ug
YXQgZXhpdC4gVGhpcwotICAgIC8vIGNvdWxkIHRvYXN0IHNvbWUgc3RhY2sgdGhhdCB0aGUgREZH
IHVzZWQuIFdlIG5lZWQgdG8gZG8gaXQgYmVmb3JlIHN0b3JpbmcgdG8gc3RhY2sgb2Zmc2V0cwot
ICAgIC8vIHVzZWQgYnkgYmFzZWxpbmUuCi0gICAgaml0LmFkZFB0cigKLSAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoCi0gICAgICAgICAgICAtaml0LmNvZGVCbG9jaygpLT5qaXRD
b2RlKCktPmRmZ0NvbW1vbigpLT5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0ICogc2l6ZW9m
KFJlZ2lzdGVyKSksCi0gICAgICAgIENDYWxsSGVscGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIs
IENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotCi0gICAgLy8gUmVzdG9yZSB0
aGUgREZHIGNhbGxlZSBzYXZlcyBhbmQgdGhlbiBzYXZlIHRoZSBvbmVzIHRoZSBiYXNlbGluZSBK
SVQgdXNlcy4KLSAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwotICAgIGppdC5lbWl0
U2F2ZUNhbGxlZVNhdmVzRm9yKGppdC5iYXNlbGluZUNvZGVCbG9jaygpKTsKLQotICAgIC8vIFRo
ZSB0YWcgcmVnaXN0ZXJzIGFyZSBuZWVkZWQgdG8gbWF0ZXJpYWxpemUgcmVjb3ZlcmllcyBiZWxv
dy4KLSAgICBqaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsKLQotICAgIGlm
IChleGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpKQotICAgICAgICBqaXQuY29weUNhbGxlZVNhdmVz
VG9WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bSk7Ci0KICAgICAvLyBEbyBhbGwgZGF0
YSBmb3JtYXQgY29udmVyc2lvbnMgYW5kIHN0b3JlIHRoZSByZXN1bHRzIGludG8gdGhlIHN0YWNr
LgorICAgIC8vIE5vdGU6IHdlIG5lZWQgdG8gcmVjb3ZlciB2YWx1ZXMgYmVmb3JlIHJlc3Rvcmlu
ZyBjYWxsZWUgc2F2ZSByZWdpc3RlcnMgYmVsb3cKKyAgICAvLyBiZWNhdXNlIHRoZSByZWNvdmVy
eSBtYXkgcmVseSBvbiB2YWx1ZXMgaW4gc29tZSBvZiBjYWxsZWUgc2F2ZSByZWdpc3RlcnMuCiAK
ICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2lu
ZGV4KSB7CiAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNb
aW5kZXhdOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gb3BlcmFuZHMudmlydHVhbFJl
Z2lzdGVyRm9ySW5kZXgoaW5kZXgpOwogCi0gICAgICAgIGlmIChyZWcuaXNMb2NhbCgpICYmIHJl
Zy50b0xvY2FsKCkgPCBzdGF0aWNfY2FzdDxpbnQ+KGppdC5iYXNlbGluZUNvZGVCbG9jaygpLT5j
YWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkpCisgICAgICAgIGlmIChyZWcuaXNM
b2NhbCgpICYmIHJlZy50b0xvY2FsKCkgPCBzdGF0aWNfY2FzdDxpbnQ+KGJhc2VsaW5lQ29kZUJs
b2NrLT5jYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkpCiAgICAgICAgICAgICBj
b250aW51ZTsKIAogICAgICAgICBpbnQgb3BlcmFuZCA9IHJlZy5vZmZzZXQoKTsKIAogICAgICAg
ICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7CiAgICAgICAgIGNhc2UgRGlzcGxhY2Vk
SW5KU1N0YWNrOgorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBleGVjLT5y
KHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS5qc1ZhbHVlKCkpOworICAgICAgICAgICAgYnJl
YWs7CisKICAgICAgICAgY2FzZSBJbkZQUjoKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQo
b3BlcmFuZCwgY3B1LmZwcjxKU1ZhbHVlPihyZWNvdmVyeS5mcHIoKSkpOworICAgICAgICAgICAg
YnJlYWs7CisKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNlIEluR1BSOgotICAgICAg
ICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6Ci0gICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNT
dGFjazoKLSAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAg
ICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAg
ICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NG
b3Iob3BlcmFuZCkpOworICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBjcHUu
Z3ByPEpTVmFsdWU+KHJlY292ZXJ5LmdwcigpKSk7CiAgICAgICAgICAgICBicmVhazsKLSNlbHNl
IC8vIG5vdCBVU0UoSlNWQUxVRTY0KQorI2Vsc2UKICAgICAgICAgY2FzZSBJblBhaXI6Ci0gICAg
ICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy50YWcsCi0gICAgICAg
ICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LmxvYWQzMigKLSAgICAg
ICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNo
ICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdU
MSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpy
ZWdUMCwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7
Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdU
MSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkp
OworICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVlKGNwdS5ncHI8
aW50MzJfdD4ocmVjb3ZlcnkudGFnR1BSKCkpLCBjcHUuZ3ByPGludDMyX3Q+KHJlY292ZXJ5LnBh
eWxvYWRHUFIoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCiAKICAgICAgICAgY2Fz
ZSBVbmJveGVkQ2VsbEluR1BSOgorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5k
LCBKU1ZhbHVlKGNwdS5ncHI8SlNDZWxsKj4ocmVjb3ZlcnkuZ3ByKCkpKSk7CisgICAgICAgICAg
ICBicmVhazsKKwogICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAg
ICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZh
bHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAotICAgICAg
ICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAg
ICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxU
YWcpLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKG9wZXJhbmQpKTsK
LSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1Qw
LAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7
CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFsdWUoZXhlYy0+cihy
ZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSkudW5ib3hlZENlbGwoKSkpOwogICAgICAgICAgICAg
YnJlYWs7CiAKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBjYXNlIFVuYm94ZWRCb29s
ZWFuSW5HUFI6CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIGpzQm9vbGVh
bihjcHUuZ3ByPGJvb2w+KHJlY292ZXJ5LmdwcigpKSkpOworICAgICAgICAgICAgYnJlYWs7Cisj
ZW5kaWYKKwogICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAg
ICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZh
bHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAotICAgICAg
ICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAg
ICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xl
YW5UYWcpLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKG9wZXJhbmQp
KTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJl
Z1QwLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5k
KSk7CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIGV4ZWMtPnIocmVjb3Zl
cnkudmlydHVhbFJlZ2lzdGVyKCkpLmpzVmFsdWUoKSk7CiAgICAgICAgICAgICBicmVhazsKLSNl
bmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCiAgICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6
CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFsdWUoY3B1Lmdwcjxp
bnQzMl90PihyZWNvdmVyeS5ncHIoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAg
IGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAg
ICAgICAgIGppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAg
ICAgICAgICBqaXQuemVyb0V4dGVuZDMyVG9QdHIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
ciwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVn
VDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0jZWxzZQotICAgICAg
ICAgICAgaml0LmxvYWQzMigKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRW
YWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKLSAgICAg
ICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAg
ICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQz
MlRhZyksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkp
OwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVn
VDAsCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQp
KTsKLSNlbmRpZgorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVl
KGV4ZWMtPnIocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLnVuYm94ZWRJbnQzMigpKSk7CiAg
ICAgICAgICAgICBicmVhazsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGNhc2UgVW5i
b3hlZEludDUySW5HUFI6CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpT
VmFsdWUoY3B1LmdwcjxpbnQ2NF90PihyZWNvdmVyeS5ncHIoKSkgPj4gSlNWYWx1ZTo6aW50NTJT
aGlmdEFtb3VudCkpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBJbnQ1MkRp
c3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIGppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4
LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQucnNoaWZ0NjQoCi0gICAgICAgICAg
ICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFt
b3VudCksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5ib3hJbnQ1MihHUFJJbmZv
OjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1Qw
KTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBl
cnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChv
cGVyYW5kLCBKU1ZhbHVlKGV4ZWMtPnIocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLnVuYm94
ZWRJbnQ1MigpKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFVuYm94ZWRT
dHJpY3RJbnQ1MkluR1BSOgorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBK
U1ZhbHVlKGNwdS5ncHI8aW50NjRfdD4ocmVjb3ZlcnkuZ3ByKCkpKSk7CisgICAgICAgICAgICBi
cmVhazsKKwogICAgICAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgotICAg
ICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKLSAg
ICAgICAgICAgIGppdC5ib3hJbnQ1MihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEdQ
UkluZm86OnJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0
KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwor
ICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVlKGV4ZWMtPnIocmVj
b3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLnVuYm94ZWRTdHJpY3RJbnQ1MigpKSk7CiAgICAgICAg
ICAgICBicmVhazsKICNlbmRpZgogCiAgICAgICAgIGNhc2UgVW5ib3hlZERvdWJsZUluRlBSOgor
ICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVlKHB1cmlmeU5hTihj
cHUuZnByKHJlY292ZXJ5LmZwcigpKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAg
IGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgaml0Lm1vdmUoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2ggKyBpbmRleCksIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgICAgIGppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KEdQUkluZm86OnJlZ1QwKSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQucHVy
aWZ5TmFOKEZQUkluZm86OmZwUmVnVDApOwotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAg
ICBqaXQuYm94RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAg
ICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJl
c3NGb3Iob3BlcmFuZCkpOwotI2Vsc2UKLSAgICAgICAgICAgIGppdC5zdG9yZURvdWJsZShGUFJJ
bmZvOjpmcFJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwotI2Vu
ZGlmCisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFsdWUocHVyaWZ5
TmFOKGV4ZWMtPnIocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLnVuYm94ZWREb3VibGUoKSkp
KTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgQ29uc3RhbnQ6Ci0jaWYgVVNF
KEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KAotICAgICAgICAgICAgICAgIEFz
c2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShyZWNvdmVyeS5jb25z
dGFudCgpKSksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9w
ZXJhbmQpKTsKLSNlbHNlCi0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAg
ICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnRhZygp
KSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7Ci0g
ICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnBheWxvYWQoKSksCi0gICAgICAgICAg
ICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKLSNlbmRpZgorICAg
ICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCByZWNvdmVyeS5jb25zdGFudCgpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzVGhhdFdl
cmVOb3RDcmVhdGVkOgpAQCAtNjgzLDEzICs1ODEsMzEgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxl
RXhpdChDQ2FsbEhlbHBlcnMmIAogICAgICAgICB9CiAgICAgfQogCisgICAgLy8gTmVlZCB0byBl
bnN1cmUgdGhhdCB0aGUgc3RhY2sgcG9pbnRlciBhY2NvdW50cyBmb3IgdGhlIHdvcnN0LWNhc2Ug
c3RhY2sgdXNhZ2UgYXQgZXhpdC4gVGhpcworICAgIC8vIGNvdWxkIHRvYXN0IHNvbWUgc3RhY2sg
dGhhdCB0aGUgREZHIHVzZWQuIFdlIG5lZWQgdG8gZG8gaXQgYmVmb3JlIHN0b3JpbmcgdG8gc3Rh
Y2sgb2Zmc2V0cworICAgIC8vIHVzZWQgYnkgYmFzZWxpbmUuCisgICAgY3B1LnNwKCkgPSBjcHUu
ZnA8dWludDhfdCo+KCkgLSAoY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5yZXF1
aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0ICogc2l6ZW9mKFJlZ2lzdGVyKSk7CisKKyAgICAvLyBS
ZXN0b3JlIHRoZSBERkcgY2FsbGVlIHNhdmVzIGFuZCB0aGVuIHNhdmUgdGhlIG9uZXMgdGhlIGJh
c2VsaW5lIEpJVCB1c2VzLgorICAgIHJlc3RvcmVDYWxsZWVTYXZlc0Zvcihjb250ZXh0LCBjb2Rl
QmxvY2spOworICAgIHNhdmVDYWxsZWVTYXZlc0Zvcihjb250ZXh0LCBiYXNlbGluZUNvZGVCbG9j
ayk7CisKKyAgICAvLyBUaGUgdGFnIHJlZ2lzdGVycyBhcmUgbmVlZGVkIHRvIG1hdGVyaWFsaXpl
IHJlY292ZXJpZXMgYmVsb3cuCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjcHUuZ3ByKEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikgPSBUYWdUeXBlTnVtYmVyOworICAgIGNwdS5ncHIo
R1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSA9IFRhZ1R5cGVOdW1iZXIgfCBUYWdCaXRUeXBlT3Ro
ZXI7CisjZW5kaWYKKworICAgIGlmIChleGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpKQorICAgICAg
ICBjb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKGNvbnRleHQp
OworCiAgICAgLy8gTm93IHRoYXQgdGhpbmdzIG9uIHRoZSBzdGFjayBhcmUgcmVjb3ZlcmVkLCBk
byB0aGUgYXJndW1lbnRzIHJlY292ZXJ5LiBXZSBhc3N1bWUgdGhhdCBhcmd1bWVudHMKICAgICAv
LyByZWNvdmVyaWVzIGRvbid0IHJlY3Vyc2l2ZWx5IHJlZmVyIHRvIGVhY2ggb3RoZXIuIEJ1dCwg
d2UgZG9uJ3QgdHJ5IHRvIGFzc3VtZSB0aGF0IHRoZXkgb25seQogICAgIC8vIHJlZmVyIHRvIGNl
cnRhaW4gcmFuZ2VzIG9mIGxvY2Fscy4gSGVuY2Ugd2h5IHdlIG5lZWQgdG8gZG8gdGhpcyBoZXJl
LCBvbmNlIHRoZSBzdGFjayBpcyBzZW5zaWJsZS4KICAgICAvLyBOb3RlIHRoYXQgd2UgYWxzbyBy
b3VnaGx5IGFzc3VtZSB0aGF0IHRoZSBhcmd1bWVudHMgbWlnaHQgc3RpbGwgYmUgbWF0ZXJpYWxp
emVkIG91dHNpZGUgb2YgaXRzCiAgICAgLy8gaW5saW5lIGNhbGwgZnJhbWUgc2NvcGUgLSBidXQg
Zm9yIG5vdyB0aGUgREZHIHdvdWxkbid0IGRvIHRoYXQuCiAKLSAgICBlbWl0UmVzdG9yZUFyZ3Vt
ZW50cyhqaXQsIG9wZXJhbmRzKTsKKyAgICBlbWl0UmVzdG9yZUFyZ3VtZW50cyhjb250ZXh0LCBj
b2RlQmxvY2ssIG9wZXJhbmRzKTsKIAogICAgIC8vIEFkanVzdCB0aGUgb2xkIEpJVCdzIGV4ZWN1
dGUgY291bnRlci4gU2luY2Ugd2UgYXJlIGV4aXRpbmcgT1NSLCB3ZSBrbm93CiAgICAgLy8gdGhh
dCBhbGwgbmV3IGNhbGxzIGludG8gdGhpcyBjb2RlIHdpbGwgZ28gdG8gdGhlIG5ldyBKSVQsIHNv
IHRoZSBleGVjdXRlCkBAIC03MjcsMjYgKzY0MywxNzEgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxl
RXhpdChDQ2FsbEhlbHBlcnMmIAogICAgIC8vIGNvdW50ZXIgdG8gMDsgb3RoZXJ3aXNlIHdlIHNl
dCB0aGUgY291bnRlciB0bwogICAgIC8vIGNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJt
VXAoKS4KIAotICAgIGhhbmRsZUV4aXRDb3VudHMoaml0LCBleGl0KTsKKyAgICBpZiAoY29kZUJs
b2NrLT51cGRhdGVPU1JFeGl0Q291bnRlckFuZENoZWNrSWZOZWVkVG9SZW9wdGltaXplKGV4aXQp
ID09IENvZGVCbG9jazo6T3B0aW1pemVBY3Rpb246Ok9wdGltaXplTm93KQorICAgICAgICB0cmln
Z2VyUmVvcHRpbWl6YXRpb25Ob3coYmFzZWxpbmVDb2RlQmxvY2ssICZleGl0KTsKIAogICAgIC8v
IFJlaWZ5IGlubGluZWQgY2FsbCBmcmFtZXMuCi0KLSAgICByZWlmeUlubGluZWRDYWxsRnJhbWVz
KGppdCwgZXhpdCk7CisgICAgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhjb250ZXh0LCBiYXNlbGlu
ZUNvZGVCbG9jaywgZXhpdCk7CiAKICAgICAvLyBBbmQgZmluaXNoLgotICAgIGFkanVzdEFuZEp1
bXBUb1RhcmdldCh2bSwgaml0LCBleGl0KTsKKyAgICBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoY29u
dGV4dCwgdm0sIGNvZGVCbG9jaywgYmFzZWxpbmVDb2RlQmxvY2ssIGV4aXQpOworfQorCit2b2lk
IHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ29udGV4dCYgY29udGV4dCwgQ29kZUJsb2NrKiBvdXRl
cm1vc3RCYXNlbGluZUNvZGVCbG9jaywgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCit7CisgICAg
YXV0byYgY3B1ID0gY29udGV4dC5jcHU7CisgICAgRnJhbWUgZnJhbWUoY3B1LmZwKCksIGNvbnRl
eHQuc3RhY2soKSk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGxlYXZlIGhvbGVzIG9u
IHRoZSBzdGFjayB3aGVuIHBlcmZvcm1pbmcgYW4gT1NSIGV4aXQKKyAgICAvLyBpbiBwcmVzZW5j
ZSBvZiBpbmxpbmVkIHRhaWwgY2FsbHMuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0NzUxMQorICAgIEFTU0VSVChvdXRlcm1vc3RCYXNlbGluZUNvZGVC
bG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBmcmFtZS5zZXRP
cGVyYW5kPENvZGVCbG9jayo+KENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaywgb3V0ZXJtb3N0QmFz
ZWxpbmVDb2RlQmxvY2spOworCisgICAgY29uc3QgQ29kZU9yaWdpbiogY29kZU9yaWdpbjsKKyAg
ICBmb3IgKGNvZGVPcmlnaW4gPSAmZXhpdC5tX2NvZGVPcmlnaW47IGNvZGVPcmlnaW4gJiYgY29k
ZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lOyBjb2RlT3JpZ2luID0gY29kZU9yaWdpbi0+aW5saW5l
Q2FsbEZyYW1lLT5nZXRDYWxsZXJTa2lwcGluZ1RhaWxDYWxscygpKSB7CisgICAgICAgIElubGlu
ZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1l
OworICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxv
Y2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jaygqY29kZU9yaWdpbiwgb3V0ZXJtb3N0QmFz
ZWxpbmVDb2RlQmxvY2spOworICAgICAgICBJbmxpbmVDYWxsRnJhbWU6OktpbmQgdHJ1ZUNhbGxl
ckNhbGxLaW5kOworICAgICAgICBDb2RlT3JpZ2luKiB0cnVlQ2FsbGVyID0gaW5saW5lQ2FsbEZy
YW1lLT5nZXRDYWxsZXJTa2lwcGluZ1RhaWxDYWxscygmdHJ1ZUNhbGxlckNhbGxLaW5kKTsKKyAg
ICAgICAgdm9pZCogY2FsbGVyRnJhbWUgPSBjcHUuZnAoKTsKKworICAgICAgICBpZiAoIXRydWVD
YWxsZXIpIHsKKyAgICAgICAgICAgIEFTU0VSVChpbmxpbmVDYWxsRnJhbWUtPmlzVGFpbCgpKTsK
KyAgICAgICAgICAgIHZvaWQqIHJldHVyblBDID0gZnJhbWUuZ2V0PHZvaWQqPihDYWxsRnJhbWU6
OnJldHVyblBDT2Zmc2V0KCkpOworICAgICAgICAgICAgZnJhbWUuc2V0PHZvaWQqPihpbmxpbmVD
YWxsRnJhbWUtPnJldHVyblBDT2Zmc2V0KCksIHJldHVyblBDKTsKKyAgICAgICAgICAgIGNhbGxl
ckZyYW1lID0gZnJhbWUuZ2V0PHZvaWQqPihDYWxsRnJhbWU6OmNhbGxlckZyYW1lT2Zmc2V0KCkp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVC
bG9ja0ZvckNhbGxlciA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2Rl
QmxvY2soKnRydWVDYWxsZXIsIG91dGVybW9zdEJhc2VsaW5lQ29kZUJsb2NrKTsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIGNhbGxCeXRlY29kZUluZGV4ID0gdHJ1ZUNhbGxlci0+Ynl0ZWNvZGVJbmRl
eDsKKyAgICAgICAgICAgIHZvaWQqIGp1bXBUYXJnZXQgPSBudWxscHRyOworCisgICAgICAgICAg
ICBzd2l0Y2ggKHRydWVDYWxsZXJDYWxsS2luZCkgeworICAgICAgICAgICAgY2FzZSBJbmxpbmVD
YWxsRnJhbWU6OkNhbGw6CisgICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q29uc3Ry
dWN0OgorICAgICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OkNhbGxWYXJhcmdzOgorICAg
ICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OkNvbnN0cnVjdFZhcmFyZ3M6CisgICAgICAg
ICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6VGFpbENhbGw6CisgICAgICAgICAgICBjYXNlIElu
bGluZUNhbGxGcmFtZTo6VGFpbENhbGxWYXJhcmdzOiB7CisgICAgICAgICAgICAgICAgQ2FsbExp
bmtJbmZvKiBjYWxsTGlua0luZm8gPQorICAgICAgICAgICAgICAgICAgICBiYXNlbGluZUNvZGVC
bG9ja0ZvckNhbGxlci0+Z2V0Q2FsbExpbmtJbmZvRm9yQnl0ZWNvZGVJbmRleChjYWxsQnl0ZWNv
ZGVJbmRleCk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbExpbmtJbmZvKTsK
KworICAgICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBjYWxsTGlua0luZm8tPmNhbGxSZXR1cm5M
b2NhdGlvbigpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpHZXR0ZXJD
YWxsOgorICAgICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OlNldHRlckNhbGw6IHsKKyAg
ICAgICAgICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPQorICAgICAgICAgICAg
ICAgICAgICBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlci0+ZmluZFN0dWJJbmZvKENvZGVPcmln
aW4oY2FsbEJ5dGVjb2RlSW5kZXgpKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChz
dHViSW5mbyk7CisKKyAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gc3R1YkluZm8tPmRvbmVM
b2NhdGlvbigpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKHRydWVDYWxsZXItPmlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgICAgICAgICBjYWxsZXJG
cmFtZSA9IGNwdS5mcDx1aW50OF90Kj4oKSArIHRydWVDYWxsZXItPmlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOworCisgICAgICAgICAgICBmcmFt
ZS5zZXQ8dm9pZCo+KGlubGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSwganVtcFRhcmdl
dCk7CisgICAgICAgIH0KKworICAgICAgICBmcmFtZS5zZXRPcGVyYW5kPHZvaWQqPihpbmxpbmVD
YWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrLCBiYXNlbGlu
ZUNvZGVCbG9jayk7CisKKyAgICAgICAgLy8gUmVzdG9yZSB0aGUgaW5saW5lIGNhbGwgZnJhbWUn
cyBjYWxsZWUgc2F2ZSByZWdpc3RlcnMuCisgICAgICAgIC8vIElmIHRoaXMgaW5saW5lZCBmcmFt
ZSBpcyBhIHRhaWwgY2FsbCB0aGF0IHdpbGwgcmV0dXJuIGJhY2sgdG8gdGhlIG9yaWdpbmFsIGNh
bGxlciwgd2UgbmVlZCB0bworICAgICAgICAvLyBjb3B5IHRoZSBwcmlvciBjb250ZW50cyBvZiB0
aGUgdGFnIHJlZ2lzdGVycyBhbHJlYWR5IHNhdmVkIGZvciB0aGUgb3V0ZXIgZnJhbWUgdG8gdGhp
cyBmcmFtZS4KKyAgICAgICAgc2F2ZU9yQ29weUNhbGxlZVNhdmVzRm9yKGNvbnRleHQsIGJhc2Vs
aW5lQ29kZUJsb2NrLCBzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KGlubGluZUNhbGxGcmFt
ZS0+c3RhY2tPZmZzZXQpLCAhdHJ1ZUNhbGxlcik7CisKKyAgICAgICAgaWYgKCFpbmxpbmVDYWxs
RnJhbWUtPmlzVmFyYXJncygpKQorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZDx1aW50MzJf
dD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnQsIFBheWxvYWRPZmZzZXQsIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSk7
CisgICAgICAgIEFTU0VSVChjYWxsZXJGcmFtZSk7CisgICAgICAgIGZyYW1lLnNldDx2b2lkKj4o
aW5saW5lQ2FsbEZyYW1lLT5jYWxsZXJGcmFtZU9mZnNldCgpLCBjYWxsZXJGcmFtZSk7CisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJ
bmRleChjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KS5iaXRzKCk7CisgICAgICAgIGZyYW1lLnNl
dE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50LCBUYWdPZmZzZXQsIGxvY2F0aW9uQml0cyk7CisgICAgICAg
IGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQorICAgICAgICAgICAgZnJhbWUu
c2V0T3BlcmFuZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6
Y2FsbGVlLCBKU1ZhbHVlKGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29uc3RhbnQoKSkpOworI2Vs
c2UgLy8gVVNFKEpTVkFMVUU2NCkgLy8gc28gdGhpcyBpcyB0aGUgMzItYml0IHBhcnQKKyAgICAg
ICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gYmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0
aW9ucygpLmJlZ2luKCkgKyBjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4OworICAgICAgICB1aW50
MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KGluc3RydWN0aW9uKS5iaXRzKCk7Cisg
ICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tP
ZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBUYWdPZmZzZXQsIGxvY2F0aW9u
Qml0cyk7CisgICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFt
ZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUsIFRhZ09mZnNldCwgSlNWYWx1
ZTo6Q2VsbFRhZyk7CisgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxs
KQorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zm
c2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBQYXlsb2FkT2Zmc2V0LCBpbmxpbmVDYWxsRnJh
bWUtPmNhbGxlZUNvbnN0YW50KCkpOworI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpIC8vIGVuZGlu
ZyB0aGUgI2Vsc2UgcGFydCwgc28gZGlyZWN0bHkgYWJvdmUgaXMgdGhlIDMyLWJpdCBwYXJ0Cisg
ICAgfQorCisgICAgLy8gRG9uJ3QgbmVlZCB0byBzZXQgdGhlIHRvcGxldmVsIGNvZGUgb3JpZ2lu
IGlmIHdlIG9ubHkgZGlkIGlubGluZSB0YWlsIGNhbGxzCisgICAgaWYgKGNvZGVPcmlnaW4pIHsK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxs
U2l0ZUluZGV4KGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgpLmJpdHMoKTsKKyNlbHNlCisgICAg
ICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IG91dGVybW9zdEJhc2VsaW5lQ29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleDsKKyAg
ICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChpbnN0cnVjdGlvbiku
Yml0cygpOworI2VuZGlmCisgICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIFRhZ09mZnNldCwgbG9jYXRpb25CaXRzKTsKKyAgICB9
CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBPU1JFeGl0OjpkZWJ1Z09wZXJhdGlvblByaW50U3Bl
Y3VsYXRpb25GYWlsdXJlKEV4ZWNTdGF0ZSogZXhlYywgdm9pZCogZGVidWdJbmZvUmF3LCB2b2lk
KiBzY3JhdGNoKQordm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoQ29udGV4dCYgY29udGV4dCwg
Vk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9j
aywgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiB7Ci0gICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgV1RGOjpz
dG9yZUxvYWRGZW5jZSgpOyAvLyBUaGUgb3B0aW1pemluZyBjb21waWxlciBleHBlY3RzIHRoYXQg
dGhlIE9TUiBleGl0IG1lY2hhbmlzbSB3aWxsIGV4ZWN1dGUgdGhpcyBmZW5jZS4KKyAgICB2bS5o
ZWFwLndyaXRlQmFycmllcihiYXNlbGluZUNvZGVCbG9jayk7CisKKyAgICAvLyBXZSBiYXJyaWVy
IGFsbCBpbmxpbmVkIGZyYW1lcyAtLSBhbmQgbm90IGp1c3QgdGhlIGN1cnJlbnQgaW5saW5lIHN0
YWNrIC0tCisgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCBrbm93IHdoaWNoIGlubGluZWQgZnVuY3Rp
b24gb3ducyB0aGUgdmFsdWUgcHJvZmlsZSB0aGF0CisgICAgLy8gd2UnbGwgdXBkYXRlIHdoZW4g
d2UgZXhpdC4gSW4gdGhlIGNhc2Ugb2YgImYoKSB7IGEoKTsgYigpOyB9IiwgaWYgYm90aAorICAg
IC8vIGEgYW5kIGIgYXJlIGlubGluZWQsIHdlIG1pZ2h0IGV4aXQgaW5zaWRlIGIgZHVlIHRvIGEg
YmFkIHZhbHVlIGxvYWRlZAorICAgIC8vIGZyb20gYS4KKyAgICAvLyBGSVhNRTogTWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZSBzaG91bGQgcmVtZW1iZXIgd2hpY2ggQ29kZUJsb2NrIG93bnMK
KyAgICAvLyB0aGUgdmFsdWUgcHJvZmlsZS4KKyAgICBJbmxpbmVDYWxsRnJhbWVTZXQqIGlubGlu
ZUNhbGxGcmFtZXMgPSBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPmlubGluZUNh
bGxGcmFtZXMuZ2V0KCk7CisgICAgaWYgKGlubGluZUNhbGxGcmFtZXMpIHsKKyAgICAgICAgZm9y
IChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA6ICppbmxpbmVDYWxsRnJhbWVzKQor
ICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGlu
ZUNvZGVCbG9jay5nZXQoKSk7CisgICAgfQorCisgICAgaWYgKGV4aXQubV9jb2RlT3JpZ2luLmlu
bGluZUNhbGxGcmFtZSkKKyAgICAgICAgY29udGV4dC5mcCgpID0gY29udGV4dC5mcDx1aW50OF90
Kj4oKSArIGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKiBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JFeGl0
ID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jayhleGl0Lm1f
Y29kZU9yaWdpbiwgYmFzZWxpbmVDb2RlQmxvY2spOworCisgICAgVmVjdG9yPEJ5dGVjb2RlQW5k
TWFjaGluZU9mZnNldD4gZGVjb2RlZENvZGVNYXA7CisgICAgY29kZUJsb2NrRm9yRXhpdC0+aml0
Q29kZU1hcCgpLT5kZWNvZGUoZGVjb2RlZENvZGVNYXApOworCisgICAgQnl0ZWNvZGVBbmRNYWNo
aW5lT2Zmc2V0KiBtYXBwaW5nID0gYmluYXJ5U2VhcmNoPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNl
dCwgdW5zaWduZWQ+KGRlY29kZWRDb2RlTWFwLCBkZWNvZGVkQ29kZU1hcC5zaXplKCksIGV4aXQu
bV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldDo6Z2V0
Qnl0ZWNvZGVJbmRleCk7CisKKyAgICBBU1NFUlQobWFwcGluZyk7CisgICAgQVNTRVJUKG1hcHBp
bmctPm1fYnl0ZWNvZGVJbmRleCA9PSBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsK
IAotICAgIFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbyogZGVidWdJbmZvID0gc3RhdGljX2Nh
c3Q8U3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvKj4oZGVidWdJbmZvUmF3KTsKLSAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGRlYnVnSW5mby0+Y29kZUJsb2NrOworICAgIHZvaWQqIGp1bXBU
YXJnZXQgPSBjb2RlQmxvY2tGb3JFeGl0LT5qaXRDb2RlKCktPmV4ZWN1dGFibGVBZGRyZXNzQXRP
ZmZzZXQobWFwcGluZy0+bV9tYWNoaW5lQ29kZU9mZnNldCk7CisKKyAgICBjb250ZXh0LnNwKCkg
PSBjb250ZXh0LmZwPHVpbnQ4X3QqPigpICsgY29kZUJsb2NrRm9yRXhpdC0+c3RhY2tQb2ludGVy
T2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpOworICAgIGlmIChleGl0LmlzRXhjZXB0aW9uSGFu
ZGxlcigpKSB7CisgICAgICAgIC8vIFNpbmNlIHdlJ3JlIGp1bXBpbmcgdG8gb3BfY2F0Y2gsIHdl
IG5lZWQgdG8gc2V0IGNhbGxGcmFtZUZvckNhdGNoLgorICAgICAgICB2bS5jYWxsRnJhbWVGb3JD
YXRjaCA9IGNvbnRleHQuZnA8RXhlY1N0YXRlKj4oKTsKKyAgICB9CisKKyAgICB2bS50b3BDYWxs
RnJhbWUgPSBjb250ZXh0LmZwPEV4ZWNTdGF0ZSo+KCk7CisgICAgY29udGV4dC5wYygpID0ganVt
cFRhcmdldDsKK30KKworc3RhdGljIHZvaWQgcHJpbnRPU1JFeGl0KENvbnRleHQmIGNvbnRleHQs
IHVpbnQzMl90IG9zckV4aXRJbmRleCwgY29uc3QgT1NSRXhpdCYgZXhpdCkKK3sKKyAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBjb250ZXh0LmZwPEV4ZWNTdGF0ZSo+KCk7CisgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBDb2RlQmxvY2sqIGFsdGVybmF0aXZl
ID0gY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpOworICAgIEV4aXRLaW5kIGtpbmQgPSBleGl0Lm1f
a2luZDsKKyAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGV4aXQubV9jb2RlT3JpZ2luLmJ5
dGVjb2RlSW5kZXg7CisKICAgICBkYXRhTG9nKCJTcGVjdWxhdGlvbiBmYWlsdXJlIGluICIsICpj
b2RlQmxvY2spOwotICAgIGRhdGFMb2coIiBAIGV4aXQgIyIsIHZtLT5vc3JFeGl0SW5kZXgsICIg
KGJjIyIsIGRlYnVnSW5mby0+Ynl0ZWNvZGVPZmZzZXQsICIsICIsIGV4aXRLaW5kVG9TdHJpbmco
ZGVidWdJbmZvLT5raW5kKSwgIikgd2l0aCAiKTsKKyAgICBkYXRhTG9nKCIgQCBleGl0ICMiLCBv
c3JFeGl0SW5kZXgsICIgKGJjIyIsIGJ5dGVjb2RlT2Zmc2V0LCAiLCAiLCBleGl0S2luZFRvU3Ry
aW5nKGtpbmQpLCAiKSB3aXRoICIpOwogICAgIGlmIChhbHRlcm5hdGl2ZSkgewogICAgICAgICBk
YXRhTG9nKAogICAgICAgICAgICAgImV4ZWN1dGVDb3VudGVyID0gIiwgYWx0ZXJuYXRpdmUtPmpp
dEV4ZWN1dGVDb3VudGVyKCksCkBAIC03NTYsMjEgKzgxNywxOCBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gT1NSRXhpdDo6ZGVidWdPcGVyYXRpCiAgICAgICAgIGRhdGFMb2coIm5vIGFsdGVybmF0aXZl
IGNvZGUgYmxvY2sgKGkuZS4gd2UndmUgYmVlbiBqZXR0aXNvbmVkKSIpOwogICAgIGRhdGFMb2co
Iiwgb3NyRXhpdENvdW50ZXIgPSAiLCBjb2RlQmxvY2stPm9zckV4aXRDb3VudGVyKCksICJcbiIp
OwogICAgIGRhdGFMb2coIiAgICBHUFJzIGF0IHRpbWUgb2YgZXhpdDoiKTsKLSAgICBjaGFyKiBz
Y3JhdGNoUG9pbnRlciA9IHN0YXRpY19jYXN0PGNoYXIqPihzY3JhdGNoKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewogICAg
ICAgICBHUFJSZWcgZ3ByID0gR1BSSW5mbzo6dG9SZWdpc3RlcihpKTsKLSAgICAgICAgZGF0YUxv
ZygiICIsIEdQUkluZm86OmRlYnVnTmFtZShncHIpLCAiOiIsIFJhd1BvaW50ZXIoKnJlaW50ZXJw
cmV0X2Nhc3RfcHRyPHZvaWQqKj4oc2NyYXRjaFBvaW50ZXIpKSk7Ci0gICAgICAgIHNjcmF0Y2hQ
b2ludGVyICs9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CisgICAgICAgIGRhdGFMb2coIiAiLCBj
b250ZXh0Lmdwck5hbWUoZ3ByKSwgIjoiLCBSYXdQb2ludGVyKGNvbnRleHQuZ3ByPHZvaWQqPihn
cHIpKSk7CiAgICAgfQogICAgIGRhdGFMb2coIlxuIik7CiAgICAgZGF0YUxvZygiICAgIEZQUnMg
YXQgdGltZSBvZiBleGl0OiIpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZv
OjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CiAgICAgICAgIEZQUlJlZyBmcHIgPSBGUFJJbmZv
Ojp0b1JlZ2lzdGVyKGkpOwotICAgICAgICBkYXRhTG9nKCIgIiwgRlBSSW5mbzo6ZGVidWdOYW1l
KGZwciksICI6Iik7Ci0gICAgICAgIHVpbnQ2NF90IGJpdHMgPSAqcmVpbnRlcnByZXRfY2FzdF9w
dHI8dWludDY0X3QqPihzY3JhdGNoUG9pbnRlcik7Ci0gICAgICAgIGRvdWJsZSB2YWx1ZSA9ICpy
ZWludGVycHJldF9jYXN0X3B0cjxkb3VibGUqPihzY3JhdGNoUG9pbnRlcik7CisgICAgICAgIGRh
dGFMb2coIiAiLCBjb250ZXh0LmZwck5hbWUoZnByKSwgIjoiKTsKKyAgICAgICAgdWludDY0X3Qg
Yml0cyA9IGNvbnRleHQuZnByPHVpbnQ2NF90PihmcHIpOworICAgICAgICBkb3VibGUgdmFsdWUg
PSBjb250ZXh0LmZwcihmcHIpOwogICAgICAgICBkYXRhTG9nRigiJWxseDolbGYiLCBzdGF0aWNf
Y2FzdDxsb25nIGxvbmc+KGJpdHMpLCB2YWx1ZSk7Ci0gICAgICAgIHNjcmF0Y2hQb2ludGVyICs9
IHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CiAgICAgfQogICAgIGRhdGFMb2coIlxuIik7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAkocmV2aXNpb24gMjIxMjI4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDcgKzM2LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIENDYWxsSGVs
cGVyczsKK25hbWVzcGFjZSBQcm9iZSB7CitjbGFzcyBDb250ZXh0OworfSAvLyBuYW1lc3BhY2Ug
UHJvYmUKIAogbmFtZXNwYWNlIERGRyB7CiAKQEAgLTk4LDcgKzEwMCw3IEBAIHByaXZhdGU6CiBz
dHJ1Y3QgT1NSRXhpdCA6IHB1YmxpYyBPU1JFeGl0QmFzZSB7CiAgICAgT1NSRXhpdChFeGl0S2lu
ZCwgSlNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSwgU3BlY3VsYXRp
dmVKSVQqLCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCA9IFVJ
TlRfTUFYKTsKIAotICAgIHN0YXRpYyB2b2lkIEpJVF9PUEVSQVRJT04gY29tcGlsZU9TUkV4aXQo
RXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOworICAgIHN0YXRpYyB2b2lkIGV4ZWN1dGVPU1JFeGl0
KFByb2JlOjpDb250ZXh0Jik7CiAKICAgICB1bnNpZ25lZCBtX3BhdGNoYWJsZUNvZGVPZmZzZXQg
eyAwIH07CiAgICAgCkBAIC0xMTksMTEgKzEyMSw2IEBAIHN0cnVjdCBPU1JFeGl0IDogcHVibGlj
IE9TUkV4aXRCYXNlIHsKICAgICB7CiAgICAgICAgIE9TUkV4aXRCYXNlOjpjb25zaWRlckFkZGlu
Z0FzRnJlcXVlbnRFeGl0U2l0ZShwcm9maWxlZENvZGVCbG9jaywgRXhpdEZyb21ERkcpOwogICAg
IH0KLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgdm9pZCBjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMm
LCBWTSYsIGNvbnN0IE9TUkV4aXQmLCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYsIFNw
ZWN1bGF0aW9uUmVjb3ZlcnkqKTsKLSAgICBzdGF0aWMgdm9pZCBlbWl0UmVzdG9yZUFyZ3VtZW50
cyhDQ2FsbEhlbHBlcnMmLCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYpOwotICAgIHN0
YXRpYyB2b2lkIEpJVF9PUEVSQVRJT04gZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFp
bHVyZShFeGVjU3RhdGUqLCB2b2lkKiwgdm9pZCopIFdURl9JTlRFUk5BTDsKIH07CiAKIHN0cnVj
dCBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8gewpAQCAtMTMyLDYgKzEyOSw5IEBAIHN0cnVj
dCBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8gewogICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0OwogfTsKIAordm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKFByb2JlOjpDb250ZXh0Jiwg
Q29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jaywgY29uc3QgT1NSRXhpdEJhc2UmKTsKK3ZvaWQg
YWRqdXN0QW5kSnVtcFRvVGFyZ2V0KFByb2JlOjpDb250ZXh0JiwgVk0mLCBDb2RlQmxvY2sqLCBD
b2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrLCBjb25zdCBPU1JFeGl0QmFzZSYpOworCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
ckNvbW1vbi5jcHAJKHJldmlzaW9uIDIyMTIyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDYg
KzM3LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCisvLyBGSVhNRTog
cmVtb3ZlIHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NTE0NS4KIHZvaWQgaGFuZGxlRXhpdENvdW50cyhDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiB7CiAgICAgaWYgKCFleGl0S2luZE1heUpldHRpc29u
KGV4aXQubV9raW5kKSkgewpAQCAtMTQzLDYgKzE0NCw3IEBAIHZvaWQgaGFuZGxlRXhpdENvdW50
cyhDQ2FsbEhlbHBlcnMmIGppdCwKICAgICBkb25lQWRqdXN0aW5nLmxpbmsoJmppdCk7CiB9CiAK
Ky8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKIHsKICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkbid0IGxlYXZlIGhvbGVzIG9uIHRoZSBzdGFjayB3aGVuIHBlcmZvcm1pbmcg
YW4gT1NSIGV4aXQKQEAgLTI1Miw2ICsyNTQsNyBAQCB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFt
ZXMoQ0NhbGxIZWxwZXJzCiAgICAgfQogfQogCisvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3
ZSBmaXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NS4KIHN0
YXRpYyB2b2lkIG9zcldyaXRlQmFycmllcihDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIG93bmVy
LCBHUFJSZWcgc2NyYXRjaCkKIHsKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgb3duZXJJc1Jl
bWVtYmVyZWRPckluRWRlbiA9IGppdC5iYXJyaWVyQnJhbmNoV2l0aG91dEZlbmNlKG93bmVyKTsK
QEAgLTI3Miw2ICsyNzUsNyBAQCBzdGF0aWMgdm9pZCBvc3JXcml0ZUJhcnJpZXIoQ0NhbGxIZWxw
ZXJzCiAgICAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbi5saW5rKCZqaXQpOwogfQogCisvLyBG
SVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NTE0NS4KIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KFZNJiB2bSwg
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogewogICAgIGppdC5t
ZW1vcnlGZW5jZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
Q29tcGlsZXJDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCShyZXZpc2lvbiAyMjEyMjgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MCw2ICs0MCw3IEBAIHZvaWQgaGFuZGxlRXhpdENvdW50cyhDQ2FsbEhlbHBlcnMm
LCBjb24KIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMmLCBjb25zdCBP
U1JFeGl0QmFzZSYpOwogdm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0mLCBDQ2FsbEhlbHBl
cnMmLCBjb25zdCBPU1JFeGl0QmFzZSYpOwogCisvLyBGSVhNRTogVGhpcyB3b24ndCBiZSBuZWVk
ZWQgb25jZSB3ZSBmaXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTE0NS4KIHRlbXBsYXRlIDx0eXBlbmFtZSBKSVRDb2RlVHlwZT4KIHZvaWQgYWRqdXN0RnJhbWVB
bmRTdGFja0luT1NSRXhpdENvbXBpbGVyVGh1bmsoTWFjcm9Bc3NlbWJsZXImIGppdCwgVk0qIHZt
LCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDIyMTIyOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
NTUsNjIgKzEzNTUsNiBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQ2xv
CiAgICAgICAgIGV4ZWMsIHN0cnVjdHVyZSwgYXJndW1lbnRTdGFydCwgbGVuZ3RoLCBjYWxsZWUp
OwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1l
bnRzRHVyaW5nRXhpdChFeGVjU3RhdGUqIGV4ZWMsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2Fs
bEZyYW1lLCBKU0Z1bmN0aW9uKiBjYWxsZWUsIGludDMyX3QgYXJndW1lbnRDb3VudCkKLXsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0YXJnZXQo
JnZtLCBleGVjKTsKLSAgICAKLSAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0uaGVhcCk7
Ci0gICAgCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2s7Ci0gICAgaWYgKGlubGluZUNhbGxGcmFt
ZSkKLSAgICAgICAgY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJh
bWUoaW5saW5lQ2FsbEZyYW1lKTsKLSAgICBlbHNlCi0gICAgICAgIGNvZGVCbG9jayA9IGV4ZWMt
PmNvZGVCbG9jaygpOwotICAgIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFyZ3VtZW50Q291bnQg
LSAxOwotICAgIHVuc2lnbmVkIGNhcGFjaXR5ID0gc3RkOjptYXgobGVuZ3RoLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSAxKSk7Ci0gICAgRGlyZWN0
QXJndW1lbnRzKiByZXN1bHQgPSBEaXJlY3RBcmd1bWVudHM6OmNyZWF0ZSgKLSAgICAgICAgdm0s
IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmRpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSgpLCBs
ZW5ndGgsIGNhcGFjaXR5KTsKLSAgICAKLSAgICByZXN1bHQtPmNhbGxlZSgpLnNldCh2bSwgcmVz
dWx0LCBjYWxsZWUpOwotICAgIAotICAgIFJlZ2lzdGVyKiBhcmd1bWVudHMgPQotICAgICAgICBl
eGVjLT5yZWdpc3RlcnMoKSArIChpbmxpbmVDYWxsRnJhbWUgPyBpbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0IDogMCkgKwotICAgICAgICBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KDApOwot
ICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykKLSAgICAgICAgcmVzdWx0LT5zZXRJ
bmRleFF1aWNrbHkodm0sIGksIGFyZ3VtZW50c1tpXS5qc1ZhbHVlKCkpOwotICAgIAotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVD
bG9uZWRBcmd1bWVudHNEdXJpbmdFeGl0KEV4ZWNTdGF0ZSogZXhlYywgSW5saW5lQ2FsbEZyYW1l
KiBpbmxpbmVDYWxsRnJhbWUsIEpTRnVuY3Rpb24qIGNhbGxlZSwgaW50MzJfdCBhcmd1bWVudENv
dW50KQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRhcmdldCgmdm0sIGV4ZWMpOwotICAgIAotICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJH
Qyh2bS5oZWFwKTsKLSAgICAKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jazsKLSAgICBpZiAoaW5s
aW5lQ2FsbEZyYW1lKQotICAgICAgICBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0Zvcklu
bGluZUNhbGxGcmFtZShpbmxpbmVDYWxsRnJhbWUpOwotICAgIGVsc2UKLSAgICAgICAgY29kZUJs
b2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7Ci0gICAgCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gYXJn
dW1lbnRDb3VudCAtIDE7Ci0gICAgQ2xvbmVkQXJndW1lbnRzKiByZXN1bHQgPSBDbG9uZWRBcmd1
bWVudHM6OmNyZWF0ZUVtcHR5KAotICAgICAgICB2bSwgY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KS0+Y2xvbmVkQXJndW1lbnRzU3RydWN0dXJlKCksIGNhbGxlZSwgbGVuZ3RoKTsKLSAgICAKLSAg
ICBSZWdpc3RlciogYXJndW1lbnRzID0KLSAgICAgICAgZXhlYy0+cmVnaXN0ZXJzKCkgKyAoaW5s
aW5lQ2FsbEZyYW1lID8gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCA6IDApICsKLSAgICAg
ICAgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldCgwKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBs
ZW5ndGg7IGktLTspCi0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwgYXJn
dW1lbnRzW2ldLmpzVmFsdWUoKSk7Ci0KLSAgICAKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlUmVzdChFeGVjU3RhdGUqIGV4ZWMs
IFJlZ2lzdGVyKiBhcmd1bWVudFN0YXJ0LCB1bnNpZ25lZCBudW1iZXJPZlBhcmFtc1RvU2tpcCwg
dW5zaWduZWQgYXJyYXlTaXplKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDIyMTIy
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzksOSArMTM5LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Q29tcGFyZVN0cgogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVx
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25D
cmVhdGVBY3RpdmF0aW9uRGlyZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEpTU2NvcGUqLCBT
eW1ib2xUYWJsZSosIEVuY29kZWRKU1ZhbHVlKTsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHMoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgaW50MzJf
dCBsZW5ndGgsIGludDMyX3QgbWluQ2FwYWNpdHkpOwotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4aXQoRXhlY1N0YXRlKiwgSW5saW5l
Q2FsbEZyYW1lKiwgSlNGdW5jdGlvbiosIGludDMyX3QgYXJndW1lbnRDb3VudCk7CiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlU2NvcGVkQXJndW1lbnRzKEV4ZWNTdGF0ZSos
IFN0cnVjdHVyZSosIFJlZ2lzdGVyKiBhcmd1bWVudFN0YXJ0LCBpbnQzMl90IGxlbmd0aCwgSlNG
dW5jdGlvbiogY2FsbGVlLCBKU0xleGljYWxFbnZpcm9ubWVudCopOwotSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50c0R1cmluZ0V4aXQoRXhlY1N0YXRl
KiwgSW5saW5lQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiosIGludDMyX3QgYXJndW1lbnRDb3VudCk7
CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKEV4
ZWNTdGF0ZSosIFN0cnVjdHVyZSosIFJlZ2lzdGVyKiBhcmd1bWVudFN0YXJ0LCBpbnQzMl90IGxl
bmd0aCwgSlNGdW5jdGlvbiogY2FsbGVlKTsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25DcmVhdGVSZXN0KEV4ZWNTdGF0ZSosIFJlZ2lzdGVyKiBhcmd1bWVudFN0YXJ0LCB1bnNpZ25l
ZCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCwgdW5zaWduZWQgYXJyYXlTaXplKTsKIGRvdWJsZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkZNb2RPbkludHMoaW50MzJfdCwgaW50MzJfdCkgV1RGX0lO
VEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkocmV2
aXNpb24gMjIxMjI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MCw2NCArNDAsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdEdlbmVyYXRpb25U
aHVua0dlbmVyYXRvcihWTSogdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdFRodW5r
R2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICBNYWNyb0Fzc2VtYmxlciBqaXQ7Ci0KLSAgICAvLyBU
aGlzIG5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgd2UgdXNlIHRoZSBzY3JhdGNoIGJ1ZmZlciBiZWNh
dXNlIHRoaXMgZnVuY3Rpb24gYWxzbyB1c2VzIHRoZSBzY3JhdGNoIGJ1ZmZlci4KLSAgICBhZGp1
c3RGcmFtZUFuZFN0YWNrSW5PU1JFeGl0Q29tcGlsZXJUaHVuazxERkc6OkpJVENvZGU+KGppdCwg
dm0sIEpJVENvZGU6OkRGR0pJVCk7Ci0gICAgCi0gICAgc2l6ZV90IHNjcmF0Y2hTaXplID0gc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIEZQUklu
Zm86Om51bWJlck9mUmVnaXN0ZXJzKTsKLSAgICBTY3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVmZmVy
ID0gdm0tPnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNjcmF0Y2hTaXplKTsKLSAgICBFbmNvZGVkSlNW
YWx1ZSogYnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihzY3JhdGNoQnVmZmVy
LT5kYXRhQnVmZmVyKCkpOwotICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHUFJJ
bmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAg
ICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6dG9SZWdpc3RlcihpKSwgYnVmZmVyICsgaSk7Ci0jZWxz
ZQotICAgICAgICBqaXQuc3RvcmUzMihHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBidWZmZXIgKyBp
KTsKLSNlbmRpZgotICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6
bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewotICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkp
LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIGppdC5zdG9yZURvdWJsZShGUFJJbmZvOjp0b1Jl
Z2lzdGVyKGkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCkpOwotICAg
IH0KLSAgICAKLSAgICAvLyBUZWxsIEdDIG1hcmsgcGhhc2UgaG93IG11Y2ggb2YgdGhlIHNjcmF0
Y2ggYnVmZmVyIGlzIGFjdGl2ZSBkdXJpbmcgY2FsbC4KLSAgICBqaXQubW92ZShNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hZGRyZXNzT2ZBY3RpdmVMZW5ndGgo
KSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICBqaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIoc2NyYXRjaFNpemUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZv
OjpyZWdUMCkpOwotCi0gICAgLy8gU2V0IHVwIG9uZSBhcmd1bWVudC4KLSNpZiBDUFUoWDg2KQot
ICAgIGppdC5wb2tlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAwKTsKLSNlbHNlCi0gICAg
aml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7Ci0jZW5kaWYKLQotICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGZ1bmN0aW9uQ2FsbCA9IGpp
dC5jYWxsKCk7Ci0KLSAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihz
Y3JhdGNoQnVmZmVyLT5hZGRyZXNzT2ZBY3RpdmVMZW5ndGgoKSksIEdQUkluZm86OnJlZ1QwKTsK
LSAgICBqaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoMCksIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwKSk7Ci0KLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewotICAgICAgICBq
aXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpu
dW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIGppdC5sb2Fk
RG91YmxlKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwKSwgRlBSSW5mbzo6
dG9SZWdpc3RlcihpKSk7Ci0gICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHUFJJ
bmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAg
ICAgaml0LmxvYWQ2NChidWZmZXIgKyBpLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKLSNlbHNl
Ci0gICAgICAgIGppdC5sb2FkMzIoYnVmZmVyICsgaSwgR1BSSW5mbzo6dG9SZWdpc3RlcihpKSk7
Ci0jZW5kaWYKLSAgICB9Ci0gICAgCi0gICAgaml0Lmp1bXAoTWFjcm9Bc3NlbWJsZXI6OkFic29s
dXRlQWRkcmVzcygmdm0tPm9zckV4aXRKdW1wRGVzdGluYXRpb24pKTsKLSAgICAKKyAgICBqaXQu
cHJvYmUoT1NSRXhpdDo6ZXhlY3V0ZU9TUkV4aXQsIHZtKTsKICAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKLSAgICAKLSAgICBwYXRjaEJ1ZmZlci5saW5r
KGZ1bmN0aW9uQ2FsbCwgT1NSRXhpdDo6Y29tcGlsZU9TUkV4aXQpOwotICAgIAotICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkRGRyBPU1IgZXhpdCBnZW5lcmF0aW9uIHRo
dW5rIikpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkRGRyBPU1Ig
ZXhpdCB0aHVuayIpKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckVudHJ5VGh1bmtH
ZW5lcmF0b3IoVk0qIHZtKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVu
a3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5o
CShyZXZpc2lvbiAyMjEyMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5r
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgVk07CiAKIG5hbWVz
cGFjZSBERkcgewogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdEdlbmVyYXRpb25UaHVu
a0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRUaHVua0dlbmVy
YXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckVudHJ5VGh1bmtHZW5lcmF0b3Io
Vk0qKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMjIxMjI4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MCw2ICs1MCw3IEBAIEV4ZWN1dGFibGVCYXNlKiBBc3NlbWJseUhlbHBlcnM6OmV4
ZWN1dGEKICAgICByZXR1cm4gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKTsKIH0KIAorLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdo
ZW4gd2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUu
CiBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiYgQXNzZW1ibHlIZWxwZXJzOjpkZWNv
ZGVkQ29kZU1hcEZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBBU1NFUlQoY29kZUJs
b2NrID09IGNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCkpOwpAQCAtODIwLDYxICs4MjEsNiBA
QCBib29sIEFzc2VtYmx5SGVscGVyczo6c3RvcmVXYXNtQ29udGV4dE5lCiAKICNlbmRpZiAvLyBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAKLXZvaWQgQXNzZW1ibHlIZWxwZXJzOjpkZWJ1Z0NhbGwoVk0m
IHZtLCBWX0RlYnVnT3BlcmF0aW9uX0VQUCBmdW5jdGlvbiwgdm9pZCogYXJndW1lbnQpCi17Ci0g
ICAgc2l6ZV90IHNjcmF0Y2hTaXplID0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIChHUFJJbmZv
OjpudW1iZXJPZlJlZ2lzdGVycyArIEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzKTsKLSAgICBT
Y3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZlckZvclNpemUoc2Ny
YXRjaFNpemUpOwotICAgIEVuY29kZWRKU1ZhbHVlKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxFbmNv
ZGVkSlNWYWx1ZSo+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSk7Ci0KLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewotI2lm
IFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHN0b3JlNjQoR1BSSW5mbzo6dG9SZWdpc3RlcihpKSwg
YnVmZmVyICsgaSk7Ci0jZWxzZQotICAgICAgICBzdG9yZTMyKEdQUkluZm86OnRvUmVnaXN0ZXIo
aSksIGJ1ZmZlciArIGkpOwotI2VuZGlmCi0gICAgfQotCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGJ1ZmZlciArIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSksIEdQ
UkluZm86OnJlZ1QwKTsKLSAgICAgICAgc3RvcmVEb3VibGUoRlBSSW5mbzo6dG9SZWdpc3Rlcihp
KSwgR1BSSW5mbzo6cmVnVDApOwotICAgIH0KLQotICAgIC8vIFRlbGwgR0MgbWFyayBwaGFzZSBo
b3cgbXVjaCBvZiB0aGUgc2NyYXRjaCBidWZmZXIgaXMgYWN0aXZlIGR1cmluZyBjYWxsLgotICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hZGRyZXNzT2ZBY3RpdmVMZW5ndGgo
KSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKHNjcmF0Y2hT
aXplKSwgR1BSSW5mbzo6cmVnVDApOwotCi0jaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTSkgfHwg
Q1BVKEFSTTY0KSB8fCBDUFUoTUlQUykKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYnVmZmVyKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYXJndW1lbnQp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgR1BSUmVnIHNjcmF0Y2ggPSBzZWxl
Y3RTY3JhdGNoR1BSKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
LCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwotI2VsaWYgQ1BVKFg4NikKLSAgICBwb2tlKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAwKTsKLSAgICBwb2tlKFRydXN0ZWRJbW1QdHIoYXJndW1l
bnQpLCAxKTsKLSAgICBwb2tlKFRydXN0ZWRJbW1QdHIoYnVmZmVyKSwgMik7Ci0gICAgR1BSUmVn
IHNjcmF0Y2ggPSBHUFJJbmZvOjpyZWdUMDsKLSNlbHNlCi0jZXJyb3IgIkpJVCBub3Qgc3VwcG9y
dGVkIG9uIHRoaXMgcGxhdGZvcm0uIgotI2VuZGlmCi0gICAgbW92ZShUcnVzdGVkSW1tUHRyKHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uKSksIHNjcmF0Y2gpOwotICAgIGNhbGwoc2Ny
YXRjaCk7Ci0KLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09m
QWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgc3RvcmVQdHIoVHJ1c3RlZElt
bVB0cigwKSwgR1BSSW5mbzo6cmVnVDApOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKGJ1ZmZlciArIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSksIEdQUkluZm86
OnJlZ1QwKTsKLSAgICAgICAgbG9hZERvdWJsZShHUFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6dG9S
ZWdpc3RlcihpKSk7Ci0gICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHUFJJbmZv
OjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAg
bG9hZDY0KGJ1ZmZlciArIGksIEdQUkluZm86OnRvUmVnaXN0ZXIoaSkpOwotI2Vsc2UKLSAgICAg
ICAgbG9hZDMyKGJ1ZmZlciArIGksIEdQUkluZm86OnRvUmVnaXN0ZXIoaSkpOwotI2VuZGlmCi0g
ICAgfQotfQotCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6Y29weUNhbGxlZVNhdmVzVG9WTUVudHJ5
RnJhbWVDYWxsZWVTYXZlc0J1ZmZlckltcGwoR1BSUmVnIGNhbGxlZVNhdmVzQnVmZmVyKQogewog
I2lmIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTID4gMApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAyMjEyMjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNv
cHkpCkBAIC05OTIsOSArOTkyLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gR1BSSW5mbzo6
cmVnVDU7CiAgICAgfQogCi0gICAgLy8gQWRkIGEgZGVidWcgY2FsbC4gVGhpcyBjYWxsIGhhcyBu
byBlZmZlY3Qgb24gSklUIGNvZGUgZXhlY3V0aW9uIHN0YXRlLgotICAgIHZvaWQgZGVidWdDYWxs
KFZNJiwgVl9EZWJ1Z09wZXJhdGlvbl9FUFAgZnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50KTsKLQog
ICAgIC8vIFRoZXNlIG1ldGhvZHMgSklUIGdlbmVyYXRlIGR5bmFtaWMsIGRlYnVnLW9ubHkgY2hl
Y2tzIC0gYWtpbiB0byBBU1NFUlRzLgogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICB2b2lkIGpp
dEFzc2VydElzSW50MzIoR1BSUmVnKTsKQEAgLTE0NjUsNiArMTQ2Miw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICB2b2lkIGVtaXREdW1iVmlydHVhbENhbGwoVk0mLCBDYWxsTGlua0luZm8qKTsKICAg
ICAKKyAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NS4KICAgICBWZWN0b3I8Qnl0ZWNvZGVBbmRN
YWNoaW5lT2Zmc2V0PiYgZGVjb2RlZENvZGVNYXBGb3IoQ29kZUJsb2NrKik7CiAKICAgICB2b2lk
IG1ha2VTcGFjZU9uU3RhY2tGb3JDQ2FsbCgpOwpAQCAtMTY1Niw2ICsxNjU0LDcgQEAgcHJvdGVj
dGVkOgogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiAgICAgQ29kZUJsb2NrKiBtX2Jhc2Vs
aW5lQ29kZUJsb2NrOwogCisgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgZml4IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiAgICAgSGFzaE1h
cDxDb2RlQmxvY2sqLCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0Pj4gbV9kZWNvZGVk
Q29kZU1hcHM7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAJKHJldmlzaW9uIDIyMTIyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOTYsNiArMjI5Niw3IEBA
IGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZUIKICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4ocmVzdWx0KTsKIH0KIAorLy8gRklYTUU6IHJlbW92ZSB0aGlz
IHdoZW4gd2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUx
NDUuCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT1NSV3JpdGVCYXJyaWVyKEV4ZWNTdGF0
ZSogZXhlYywgSlNDZWxsKiBjZWxsKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDIy
MTIyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NDUsNiArNDQ1LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRp
b25SZWFsbG9jYXRlQgogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlQnV0
dGVyZmx5VG9Hcm93UHJvcGVydHlTdG9yYWdlKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kiwgc2l6ZV90
IG5ld1NpemUpIFdURl9JTlRFUk5BTDsKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbldy
aXRlQmFycmllclNsb3dQYXRoKEV4ZWNTdGF0ZSosIEpTQ2VsbCopOworLy8gRklYTUU6IHJlbW92
ZSB0aGlzIHdoZW4gd2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzUxNDUuCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT1NSV3JpdGVCYXJyaWVyKEV4
ZWNTdGF0ZSosIEpTQ2VsbCopOwogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRXhjZXB0
aW9uRnV6eihFeGVjU3RhdGUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAJKHJldmlzaW9uIDIyMTIyOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTItMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTkxLDYgKzkxLDEwIEBAIHZvaWQgQ29tcGlsYXRp
b246OmFkZE9TUkV4aXRTaXRlKGNvbnN0IFYKIAogT1NSRXhpdCogQ29tcGlsYXRpb246OmFkZE9T
UkV4aXQodW5zaWduZWQgaWQsIGNvbnN0IE9yaWdpblN0YWNrJiBvcmlnaW5TdGFjaywgRXhpdEtp
bmQgZXhpdEtpbmQsIGJvb2wgaXNXYXRjaHBvaW50KQogeworICAgIGZvciAoYXV0byBpdCA9IG1f
b3NyRXhpdHMuYmVnaW4oKTsgaXQgIT0gbV9vc3JFeGl0cy5lbmQoKTsgKytpdCkgeworICAgICAg
ICBpZiAoaXQtPmlkKCkgPT0gaWQpCisgICAgICAgICAgICByZXR1cm4gJigqaXQpOworICAgIH0K
ICAgICBtX29zckV4aXRzLmFwcGVuZChPU1JFeGl0KGlkLCBvcmlnaW5TdGFjaywgZXhpdEtpbmQs
IGlzV2F0Y2hwb2ludCkpOwogICAgIHJldHVybiAmbV9vc3JFeGl0cy5sYXN0KCk7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5o
CShyZXZpc2lvbiAyMjEyMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJv
ZmlsZXJPU1JFeGl0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNyArNDMsOCBAQCBwdWJsaWM6CiAgICAg
CiAgICAgdWludDY0X3QqIGNvdW50ZXJBZGRyZXNzKCkgeyByZXR1cm4gJm1fY291bnRlcjsgfQog
ICAgIHVpbnQ2NF90IGNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudGVyOyB9Ci0gICAgCisg
ICAgdm9pZCBpbmNDb3VudCgpIHsgbV9jb3VudGVyKys7IH0KKwogICAgIEpTVmFsdWUgdG9KUyhF
eGVjU3RhdGUqKSBjb25zdDsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlzaW9uIDIyMTIyOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsx
LDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0
ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0
LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTIsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHly
aWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC0zNDQsMTIgKzM0NCw5IEBAIHB1YmxpYzoKICAgICB1aW50MzJf
dCB0YWcoKSBjb25zdDsKICAgICBpbnQzMl90IHBheWxvYWQoKSBjb25zdDsKIAotI2lmICFFTkFC
TEUoSklUKQotICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBieSB0aGUgTExJbnQgQyBM
b29wIGludGVycHJldGVyIHdobyBuZWVkcwotICAgIC8vIHN5bnRoZXNpemUgSlNWYWx1ZSBmcm9t
IGl0cyAicmVnaXN0ZXIicyBob2xkaW5nIHRhZyBhbmQgcGF5bG9hZAotICAgIC8vIHZhbHVlcy4K
KyAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgdGhlIExMSW50IEMgTG9vcCBpbnRl
cnByZXRlciBhbmQgT1NSRXhpdCBjb2RlIHdobyBuZWVkcworICAgIC8vIHN5bnRoZXNpemUgSlNW
YWx1ZSBmcm9tIGl0cyAicmVnaXN0ZXIicyBob2xkaW5nIHRhZyBhbmQgcGF5bG9hZCB2YWx1ZXMu
CiAgICAgZXhwbGljaXQgSlNWYWx1ZShpbnQzMl90IHRhZywgaW50MzJfdCBwYXlsb2FkKTsKLSNl
bmRpZgogCiAjZWxpZiBVU0UoSlNWQUxVRTY0KQogICAgIC8qCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHJldmlzaW9uIDIy
MTIyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0MCw3ICszNDAsNyBAQCBpbmxpbmUgSlNWYWx1ZTo6SlNW
YWx1ZShpbnQgaSkKICAgICB1LmFzQml0cy5wYXlsb2FkID0gaTsKIH0KIAotI2lmICFFTkFCTEUo
SklUKQorI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShpbnQz
Ml90IHRhZywgaW50MzJfdCBwYXlsb2FkKQogewogICAgIHUuYXNCaXRzLnRhZyA9IHRhZzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>319138</attachid>
            <date>2017-08-26 14:07:20 -0700</date>
            <delta_ts>2017-09-06 16:14:09 -0700</delta_ts>
            <desc>x86_64 benchmark results.</desc>
            <filename>bench-x86_64.txt</filename>
            <type>text/plain</type>
            <size>99153</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">JCBzbGVlcCAxMCAmIC4uL3dzMi9JbnRlcm5hbC9Ub29scy9TY3JpcHRzL3J1bi1qc2MtYmVuY2ht
YXJrcyAtLW91dGVyIDggYmFzZTpiYXNlL2pzYyBuZXc6bmV3L2pzYwpHZW5lcmF0aW5nIGJlbmNo
bWFyayByZXBvcnQgYXQgL1ZvbHVtZXMvRGF0YS9iZW5jaC9iYXNlX25ld19TdW5TcGlkZXJMb25n
U3BpZGVyVjhTcGlkZXJPY3RhbmVLcmFrZW5NaWNyb2JlbmNobWFya3NBc21CZW5jaENvbXByZXNz
aW9uQmVuY2hTaXhTcGVlZF9DaHJvbm9uXzIwMTcwODI2XzEzNTFfcmVwb3J0LnR4dApBbmQgcmF3
IGRhdGEgYXQgL1ZvbHVtZXMvRGF0YS9iZW5jaC9iYXNlX25ld19TdW5TcGlkZXJMb25nU3BpZGVy
VjhTcGlkZXJPY3RhbmVLcmFrZW5NaWNyb2JlbmNobWFya3NBc21CZW5jaENvbXByZXNzaW9uQmVu
Y2hTaXhTcGVlZF9DaHJvbm9uXzIwMTcwODI2XzEzNTEuanNvbgoKQmVuY2htYXJrIHJlcG9ydCBm
b3IgU3VuU3BpZGVyLCBMb25nU3BpZGVyLCBWOFNwaWRlciwgT2N0YW5lLCBLcmFrZW4sIE1pY3Jv
YmVuY2htYXJrcywgQXNtQmVuY2gsIENvbXByZXNzaW9uQmVuY2gsIGFuZCBTaXhTcGVlZCBvbiBD
aHJvbm9uIChNYWNCb29rUHJvMTEsMSkuCgpWTXMgdGVzdGVkOgoiYmFzZSIgYXQgL1ZvbHVtZXMv
RGF0YS9iZW5jaC9iYXNlL2pzYwoibmV3IiBhdCAvVm9sdW1lcy9EYXRhL2JlbmNoL25ldy9qc2MK
CkNvbGxlY3RlZCA4IHNhbXBsZXMgcGVyIGJlbmNobWFyay9WTSwgd2l0aCA4IFZNIGludm9jYXRp
b25zIHBlciBiZW5jaG1hcmsuIEVtaXR0ZWQgYSBjYWxsIHRvIGdjKCkgYmV0d2VlbiBzYW1wbGUg
bWVhc3VyZW1lbnRzLgpVc2VkIDEgYmVuY2htYXJrIGl0ZXJhdGlvbiBwZXIgVk0gaW52b2NhdGlv
biBmb3Igd2FybS11cC4gVXNlZCB0aGUganNjLXNwZWNpZmljIHByZWNpc2VUaW1lKCkgZnVuY3Rp
b24gdG8gZ2V0IG1pY3Jvc2Vjb25kLWxldmVsCnRpbWluZy4gUmVwb3J0aW5nIGJlbmNobWFyayBl
eGVjdXRpb24gdGltZXMgd2l0aCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMgaW4gbWlsbGlzZWNv
bmRzLgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBiYXNlICAgICAgICAgICAgICAgICAgICAgIG5ldyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKU3VuU3BpZGVyOgogICAzZC1jdWJlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjEwNDcrLTEuMDM5OCAgICAgPyAgICAgIDcu
NzA2MistMS4yODIwICAgICAgICA/IG1pZ2h0IGJlIDEuMDg0N3ggc2xvd2VyCiAgIDNkLW1vcnBo
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuMzk2MSstMC4zMzE4
ICAgICA/ICAgICAgNy41NjcxKy0wLjUyNzcgICAgICAgID8gbWlnaHQgYmUgMS4wMjMxeCBzbG93
ZXIKICAgM2QtcmF5dHJhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ny45MDEyKy0xLjIyNzcgICAgID8gICAgICA4LjAxMjQrLTAuODE1OSAgICAgICAgPyBtaWdodCBi
ZSAxLjAxNDF4IHNsb3dlcgogICBhY2Nlc3MtYmluYXJ5LXRyZWVzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA0LjMwMDgrLTEuMTg2MSAgICAgICAgICAgIDMuMzgyMistMC4zOTk5ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMjcxNnggZmFzdGVyCiAgIGFjY2Vzcy1mYW5ua3VjaCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuODI3MystMC4zMTQyICAgICA/ICAgICAxMC4x
ODg2Ky0wLjczOTMgICAgICAgID8gbWlnaHQgYmUgMS4wMzY4eCBzbG93ZXIKICAgYWNjZXNzLW5i
b2R5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy44ODcwKy0wLjI1Mjgg
ICAgID8gICAgICA0LjMxODErLTAuNDUyOSAgICAgICAgPyBtaWdodCBiZSAxLjExMDl4IHNsb3dl
cgogICBhY2Nlc3MtbnNpZXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
LjgyNzkrLTAuMjA2NiAgICAgPyAgICAgIDUuODQ5NystMi4wNzI3ICAgICAgICA/IG1pZ2h0IGJl
IDEuMjExNnggc2xvd2VyCiAgIGJpdG9wcy0zYml0LWJpdHMtaW4tYnl0ZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEuODcwMSstMC4yMzA0ICAgICAgICAgICAgMS42NzQ5Ky0wLjA1MDIgICAg
ICAgICAgbWlnaHQgYmUgMS4xMTY2eCBmYXN0ZXIKICAgYml0b3BzLWJpdHMtaW4tYnl0ZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNC40MjY2Ky0wLjQwMzYgICAgID8gICAgICA0Ljc0
NTUrLTAuMzgxNiAgICAgICAgPyBtaWdodCBiZSAxLjA3MjF4IHNsb3dlcgogICBiaXRvcHMtYml0
d2lzZS1hbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjc4NTUrLTAuMzYwNCAg
ICAgICAgICAgIDMuNTg0MSstMC41MTMwICAgICAgICAgIG1pZ2h0IGJlIDEuMDU2MnggZmFzdGVy
CiAgIGJpdG9wcy1uc2lldmUtYml0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUu
OTYwMSstMC42NzIyICAgICAgICAgICAgNS41MDAxKy0xLjA2NTIgICAgICAgICAgbWlnaHQgYmUg
MS4wODM2eCBmYXN0ZXIKICAgY29udHJvbGZsb3ctcmVjdXJzaXZlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNC4xMDA3Ky0wLjM3NDcgICAgID8gICAgICA0LjMwNzcrLTAuMzgyOSAgICAg
ICAgPyBtaWdodCBiZSAxLjA1MDV4IHNsb3dlcgogICBjcnlwdG8tYWVzICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA2LjU2MjkrLTAuODIwMyAgICAgICAgICAgIDYuNDcy
NCstMC45MzI3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0MHggZmFzdGVyCiAgIGNyeXB0by1tZDUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuOTY4NystMC40MTYxICAg
ICA/ICAgICAgNC40NjkwKy0wLjYwMTkgICAgICAgID8gbWlnaHQgYmUgMS4xMjYxeCBzbG93ZXIK
ICAgY3J5cHRvLXNoYTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC45
ODM2Ky0wLjc0MDEgICAgICAgICAgICA0LjgyODUrLTAuMzc4OSAgICAgICAgICBtaWdodCBiZSAx
LjAzMjF4IGZhc3RlcgogICBkYXRlLWZvcm1hdC10b2Z0ZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDExLjE4NjMrLTEuMDM2MCAgICAgPyAgICAgMTEuNzExMSstMS40NDc0ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDQ2OXggc2xvd2VyCiAgIGRhdGUtZm9ybWF0LXhwYXJiICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDguNzQxOSstMC44MjgwICAgICAgICAgICAgOC4zMjU2
Ky0xLjIwMzcgICAgICAgICAgbWlnaHQgYmUgMS4wNTAweCBmYXN0ZXIKICAgbWF0aC1jb3JkaWMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC45ODY3Ky0wLjQwNjUgICAg
ICAgICAgICA0LjYyNjQrLTAuMzc3MyAgICAgICAgICBtaWdodCBiZSAxLjA3Nzl4IGZhc3Rlcgog
ICBtYXRoLXBhcnRpYWwtc3VtcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjU5
MDkrLTAuNDk0MSAgICAgICAgICAgIDYuMDA1MistMC4zMzg3ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDk3NXggZmFzdGVyCiAgIG1hdGgtc3BlY3RyYWwtbm9ybSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDMuMzcyOCstMC42ODQxICAgICA/ICAgICAgMy40Mzc2Ky0wLjIyNDYgICAgICAg
ID8gbWlnaHQgYmUgMS4wMTkyeCBzbG93ZXIKICAgcmVnZXhwLWRuYSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOS43Njc2Ky0xLjQ5MzMgICAgICAgICAgICA5LjQ4Mzgr
LTEuNjgxMyAgICAgICAgICBtaWdodCBiZSAxLjAyOTl4IGZhc3RlcgogICBzdHJpbmctYmFzZTY0
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjY2MjArLTEuNTQ5NyAgICAg
ICAgICAgIDcuMDY5OCstMS4yNTczICAgICAgICAgIG1pZ2h0IGJlIDEuMDgzOHggZmFzdGVyCiAg
IHN0cmluZy1mYXN0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguODM0
MistMC44NDg2ICAgICAgICAgICAgOC42NzM3Ky0wLjgwMzggICAgICAgICAgbWlnaHQgYmUgMS4w
MTg1eCBmYXN0ZXIKICAgc3RyaW5nLXRhZ2Nsb3VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxMy4yODA1Ky0xLjA2MzkgICAgICAgICAgIDEzLjE3NzQrLTEuNTQzOSAgICAgICAg
CiAgIHN0cmluZy11bnBhY2stY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjYu
Mzk0MystMC43NzM0ICAgICA/ICAgICAyNi40Mzg0Ky0xLjIwNTkgICAgICAgID8KICAgc3RyaW5n
LXZhbGlkYXRlLWlucHV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi41NTY4Ky0wLjQx
MzIgICAgICAgICAgICA2LjUxMDgrLTAuMjY2MSAgICAgICAgCgogICA8YXJpdGhtZXRpYz4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjI0MTQrLTAuMTIyNyAgICAgICAg
ICAgIDcuMjMzMystMC4zMDQ5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDAxMXggZmFzdGVyCgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJh
c2UgICAgICAgICAgICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIApMb25nU3BpZGVyOgogICAzZC1jdWJlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxMDc5LjM5NjErLTI5LjYyNzAgICAgICAgIDEwNjAuNTU1NSstNy42
NDMyICAgICAgICAgIG1pZ2h0IGJlIDEuMDE3OHggZmFzdGVyCiAgIDNkLW1vcnBoICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4MTYuOTY3MCstNC44NTI5ICAgICA/ICAg
IDgxNy4zNzg3Ky02LjkyNDIgICAgICAgID8KICAgM2QtcmF5dHJhY2UgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDY2NS40ODQzKy05LjUxNTIgICAgID8gICAgNjc3LjI3MDAr
LTcuNDEwNyAgICAgICAgPyBtaWdodCBiZSAxLjAxNzd4IHNsb3dlcgogICBhY2Nlc3MtYmluYXJ5
LXRyZWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjU3LjMxMzMrLTEwLjMxNzggICAg
PyAgIDEyNTkuMzAyNistOC40NDc4ICAgICAgICA/CiAgIGFjY2Vzcy1mYW5ua3VjaCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzNjAuOTI5NCstNi4yNzg3ICAgICA/ICAgIDM5MS4z
MzAzKy02Mi4wNDYzICAgICAgID8gbWlnaHQgYmUgMS4wODQyeCBzbG93ZXIKICAgYWNjZXNzLW5i
b2R5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcxNi4zNTcxKy03LjEzNTAg
ICAgID8gICAgNzE3Ljg3MzUrLTQuNjY4MCAgICAgICAgPwogICBhY2Nlc3MtbnNpZXZlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTc0Ljc1MDcrLTQuNzQ5OSAgICAgICAgICA1
NzIuMzYyNCstMTAuNzc1MyAgICAgICAKICAgYml0b3BzLTNiaXQtYml0cy1pbi1ieXRlICAgICAg
ICAgICAgICAgICAgICAgICAgICA0NC40NTkyKy0xLjA2NzQgICAgID8gICAgIDQ1LjQyNTYrLTEu
Nzk3MiAgICAgICAgPyBtaWdodCBiZSAxLjAyMTd4IHNsb3dlcgogICBiaXRvcHMtYml0cy1pbi1i
eXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI2LjE3NDArLTcuNzI5MiAgICAgPyAg
ICAxMjcuMTk2NSstNi41NjYzICAgICAgICA/CiAgIGJpdG9wcy1uc2lldmUtYml0cyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA2MzIuMzY1NSstMTQuMDg0MSAgICA/ICAgIDYzNi45NjE2
Ky05LjU0MTcgICAgICAgID8KICAgY29udHJvbGZsb3ctcmVjdXJzaXZlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDU4My43NDk3Ky0yMS40OTAzICAgID8gICAgNTgzLjc1ODErLTQuOTAxMiAg
ICAgICAgPwogICBjcnlwdG8tYWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNzY0LjAwMjMrLTcuNDczNiAgICAgPyAgICA3NjcuMzcxNistNi43NTI1ICAgICAgICA/CiAg
IGNyeXB0by1tZDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5NTIuNDkw
MystMTIuMjU3NiAgICA/ICAgIDk1Ny42NTM0Ky0xNS42Nzg5ICAgICAgID8KICAgY3J5cHRvLXNo
YTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg5NC41MjkyKy03Ljk2MDYg
ICAgID8gICAgODk1Ljg2MDArLTguMzM1OSAgICAgICAgPwogICBkYXRlLWZvcm1hdC10b2Z0ZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDU2LjUyNTArLTYuNzQ0MCAgICAgPyAgICA0
NjIuNjAxMistMTEuNjg1MCAgICAgICA/IG1pZ2h0IGJlIDEuMDEzM3ggc2xvd2VyCiAgIGRhdGUt
Zm9ybWF0LXhwYXJiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMjcuNjA5MSstMjIu
OTkwMSAgICA/ICAgMTE1Ny40OTMyKy0yMjEuNTY1NCAgICAgID8gbWlnaHQgYmUgMS4xMjY0eCBz
bG93ZXIKICAgaGFzaC1tYXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDIwOS4zMTIzKy0yLjkzNzkgICAgID8gICAgMjA5LjYzMDUrLTIuMTI1MSAgICAgICAgPwogICBt
YXRoLWNvcmRpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTkyLjI1MDgr
LTQuODA3OSAgICAgICAgICA1OTEuNDE0MistNy4xMzg2ICAgICAgICAKICAgbWF0aC1wYXJ0aWFs
LXN1bXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM4Ni45NzY1Ky02LjE3MTggICAg
ID8gICAgMzk3LjQ0MDcrLTE0Ljc2NDkgICAgICAgPyBtaWdodCBiZSAxLjAyNzB4IHNsb3dlcgog
ICBtYXRoLXNwZWN0cmFsLW5vcm0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzQ4Ljcx
MTIrLTMuODg2MSAgICAgICAgICA3NDguNTM5MSstMTAuMTkyNyAgICAgICAKICAgc3RyaW5nLWJh
c2U2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU2Ni4wMTAxKy0xOTMuODU0
OSAgICAgICAgNDkwLjQ5ODYrLTE3LjcyNjYgICAgICAgICBtaWdodCBiZSAxLjE1Mzl4IGZhc3Rl
cgogICBzdHJpbmctZmFzdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDcw
LjQ3MTYrLTExLjczMDYgICAgPyAgICA1NzQuMjkwNCstMjYwLjAwMjEgICAgICA/IG1pZ2h0IGJl
IDEuMjIwN3ggc2xvd2VyCiAgIHN0cmluZy10YWdjbG91ZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyMjMuODE0OCstMi4yOTI2ICAgICA/ICAgIDI2MC42MTcwKy02Ny44NTQ1ICAg
ICAgID8gbWlnaHQgYmUgMS4xNjQ0eCBzbG93ZXIKCiAgIDxnZW9tZXRyaWM+ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA1MDMuNjA4NystNS43MTMzICAgICA/ICAgIDUxMi41
ODE3Ky04LjE2MzcgICAgICAgID8gbWlnaHQgYmUgMS4wMTc4eCBzbG93ZXIKCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAgICAg
ICAgICAgICAgICAgICAgICBuZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgClY4U3BpZGVyOgogICBjcnlwdG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDU0Ljg5NTErLTIuMDQ4OCAgICAgPyAgICAgNjAuMTQ1OCstMTQuNDU0NiAgICAg
ICA/IG1pZ2h0IGJlIDEuMDk1N3ggc2xvd2VyCiAgIGRlbHRhYmx1ZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOTIuMjQzNSstMy45NjMzICAgICA/ICAgICA5Mi45Mjk3
Ky0yLjgwMzEgICAgICAgID8KICAgZWFybGV5LWJveWVyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA1Mi43MTU4Ky0xLjg1MjIgICAgID8gICAgIDY4LjEzOTIrLTIzLjAzMzIg
ICAgICAgPyBtaWdodCBiZSAxLjI5MjZ4IHNsb3dlcgogICByYXl0cmFjZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM4LjkxOTgrLTIuNTAwMCAgICAgPyAgICAgMzku
MTYxNystMi43NTYzICAgICAgICA/CiAgIHJlZ2V4cCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNzIuOTQ3NistMC43MTAyICAgICA/ICAgICA3My41MTY4Ky0xLjIy
ODIgICAgICAgID8KICAgcmljaGFyZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA2OS40MzEwKy0zLjUxMjkgICAgID8gICAgIDcwLjI2MDMrLTIuNzg2NyAgICAgICAg
PyBtaWdodCBiZSAxLjAxMTl4IHNsb3dlcgogICBzcGxheSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDUwLjAwNzErLTAuNjMyMiAgICAgPyAgICAgNTcuNzgyOSst
MTEuMTc5OSAgICAgICA/IG1pZ2h0IGJlIDEuMTU1NXggc2xvd2VyCgogICA8Z2VvbWV0cmljPiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU5LjQyMTArLTEuMDE1MCAgICAg
PyAgICAgNjMuMzAzOCstMy4zMjM3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDY1M3ggc2xvd2VyCgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJhc2UgICAgICAgICAgICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIApPY3RhbmU6CiAgIGVuY3J5cHQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4yMTMwOSstMC4wMDM1OSAgICA/ICAgICAwLjIxNDQ2Ky0wLjAw
Nzk0ICAgICAgID8KICAgZGVjcnlwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzLjY3NDEzKy0wLjA2NjMyICAgICAgICAgIDMuNjMyMTUrLTAuMDY4NDYgICAgICAg
ICBtaWdodCBiZSAxLjAxMTZ4IGZhc3RlcgogICBkZWx0YWJsdWUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHgyICAgICAgIDAuMTY2MjkrLTAuMDA2MzYgICAgPyAgICAgMC4yMTA4NSst
MC4xMTEzNCAgICAgICA/IG1pZ2h0IGJlIDEuMjY4MHggc2xvd2VyCiAgIGVhcmxleSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zODM3MistMC4wMDUxMyAgICA/
ICAgICAwLjM4ODQzKy0wLjAwNTAwICAgICAgID8gbWlnaHQgYmUgMS4wMTIzeCBzbG93ZXIKICAg
Ym95ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjI4OTI2
Ky0wLjA1ODgyICAgICAgICAgIDYuMjg0NDUrLTAuMDQ5MzcgICAgICAgCiAgIG5hdmllci1zdG9r
ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAgNi43NDQ1NCstMC4xMzYxNCAg
ICA/ICAgICA2Ljc2MTg0Ky0wLjEwOTk3ICAgICAgID8KICAgcmF5dHJhY2UgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB4MiAgICAgICAxLjA0NjQ5Ky0wLjAwOTY0ICAgICAgICAgIDEu
MDQ0NDMrLTAuMDE3MTIgICAgICAgCiAgIHJpY2hhcmRzICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeDIgICAgICAgMC4xMTMzMCstMC4wMDE1MyAgICA/ICAgICAwLjExNDAxKy0wLjAw
MzUwICAgICAgID8KICAgc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4
MiAgICAgICAwLjQ4NTMxKy0wLjAwMzc1ICAgID8gICAgIDAuNDkzMjMrLTAuMDA2NTAgICAgICAg
PyBtaWdodCBiZSAxLjAxNjN4IHNsb3dlcgogICByZWdleHAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHgyICAgICAgMjQuNTUyNTMrLTAuMzk2NzUgICAgICAgICAyNC4zNzgxMist
MC4zMzUzMCAgICAgICAKICAgcGRmanMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB4MiAgICAgIDU0LjM5MDAzKy0yLjA3MTA1ICAgICEgICAgNjMuMDY2NDkrLTEuMDEwNDggICAg
ICAgISBkZWZpbml0ZWx5IDEuMTU5NXggc2xvd2VyCiAgIG1hbmRyZWVsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeDIgICAgICA2OS4wMzQ5MSstMC4zNTA5MiAgICA/ICAgIDcwLjIz
ODkwKy0xLjM4ODA2ICAgICAgID8gbWlnaHQgYmUgMS4wMTc0eCBzbG93ZXIKICAgZ2JlbXUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgIDUxLjU2NTk3Ky0wLjkzMjcx
ICAgICAgICAgNTAuMzc3MDcrLTEuMTU4OTkgICAgICAgICBtaWdodCBiZSAxLjAyMzZ4IGZhc3Rl
cgogICBjbG9zdXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAu
NjUzMzYrLTAuMDA0MTkgICAgICAgICAgMC42NDczNistMC4wMDY3NiAgICAgICAKICAganF1ZXJ5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjYzMDU5Ky0yLjk4
MzA5ICAgICAgICAgIDkuNDAxNDYrLTAuMDY3NjMgICAgICAgICBtaWdodCBiZSAxLjEzMDd4IGZh
c3RlcgogICBib3gyZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAg
MTYuODIzNTcrLTcuODY4OTQgICAgICAgICAxMy45MTUzNCstMC4yMjAzOCAgICAgICAgIG1pZ2h0
IGJlIDEuMjA5MHggZmFzdGVyCiAgIHpsaWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeDIgICAgIDQ5MC43MDA4MSstMjEuNjI4NDEgICA/ICAgNTY0LjM5Njg2Ky0xNTIuMDA2
ODMgICAgID8gbWlnaHQgYmUgMS4xNTAyeCBzbG93ZXIKICAgdHlwZXNjcmlwdCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB4MiAgICAgOTY0LjE2NTQxKy0xMi45MTU0OSAgID8gIDExOTku
MjAzNjErLTQ1MS42OTg4NyAgICAgPyBtaWdodCBiZSAxLjI0Mzh4IHNsb3dlcgoKICAgPGdlb21l
dHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjI0NzQ0Ky0wLjE2
MzkxICAgID8gICAgIDcuNDUyMjgrLTAuMjgyMzUgICAgICAgPyBtaWdodCBiZSAxLjAyODN4IHNs
b3dlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBiYXNlICAgICAgICAgICAgICAgICAgICAgIG5ldyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKS3Jha2VuOgogICBhaS1hc3RhciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEzMC4xOTkrLTMuMDcxICAgICAgICAgICAgMTI5Ljgz
MSstMy4wNzMgICAgICAgICAKICAgYXVkaW8tYmVhdC1kZXRlY3Rpb24gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNTUuOTg1Ky0wLjk2NyAgICAgID8gICAgICA1Ny4yNTArLTIuMDU1ICAg
ICAgICAgPyBtaWdodCBiZSAxLjAyMjZ4IHNsb3dlcgogICBhdWRpby1kZnQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1Mi44MzcrLTIuMDgyICAgICAgICAgICAgMTUy
Ljc4MistMi4zNjAgICAgICAgICAKICAgYXVkaW8tZmZ0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMzkuNTAzKy0wLjU5NSAgICAgID8gICAgICA0MC4yMDkrLTAuNzU3
ICAgICAgICAgPyBtaWdodCBiZSAxLjAxNzl4IHNsb3dlcgogICBhdWRpby1vc2NpbGxhdG9yICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MC44NjUrLTEuMzc3ICAgICAgPyAgICAg
IDYxLjM3OCstMS4yNzggICAgICAgICA/CiAgIGltYWdpbmctZGFya3Jvb20gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDgxLjY2MystMS44MDMgICAgICAgICAgICAgODEuNjI4Ky0y
LjU5OSAgICAgICAgIAogICBpbWFnaW5nLWRlc2F0dXJhdGUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA3Ni4xNjkrLTMuNDkyICAgICAgPyAgICAgIDc2LjYwMystMy41MzYgICAgICAg
ICA/CiAgIGltYWdpbmctZ2F1c3NpYW4tYmx1ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDk2LjYyNystOS45OTQgICAgICAgICAgICAgOTAuNDk3Ky0zLjI4OCAgICAgICAgICAgbWlnaHQg
YmUgMS4wNjc3eCBmYXN0ZXIKICAganNvbi1wYXJzZS1maW5hbmNpYWwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNDUuMzQ4Ky0xLjU1OCAgICAgID8gICAgICA0Ni4xODgrLTEuMjMxICAg
ICAgICAgPyBtaWdodCBiZSAxLjAxODV4IHNsb3dlcgogICBqc29uLXN0cmluZ2lmeS10aW5kZXJi
b3ggICAgICAgICAgICAgICAgICAgICAgICAgICAyOS43NTkrLTAuNzE4ICAgICAgPyAgICAgIDI5
LjkzMCstMC41MTQgICAgICAgICA/CiAgIHN0YW5mb3JkLWNyeXB0by1hZXMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDUxLjMzNistMS44NDEgICAgICAgICAgICAgNTEuMjU3Ky0xLjA1
MiAgICAgICAgIAogICBzdGFuZm9yZC1jcnlwdG8tY2NtICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA0Ni45ODgrLTYuMTI4ICAgICAgPyAgICAgIDQ4LjI4OCstMy45MDMgICAgICAgICA/
IG1pZ2h0IGJlIDEuMDI3N3ggc2xvd2VyCiAgIHN0YW5mb3JkLWNyeXB0by1wYmtkZjIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDg1LjQ4MCstNS40NjcgICAgICAgICAgICAgODQuOTgwKy0y
LjA3MSAgICAgICAgIAogICBzdGFuZm9yZC1jcnlwdG8tc2hhMjU2LWl0ZXJhdGl2ZSAgICAgICAg
ICAgICAgICAgICAyNi43NzArLTEuMTcxICAgICAgPyAgICAgIDI3LjA0OCstMS4yMTIgICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDEwNHggc2xvd2VyCgogICA8YXJpdGhtZXRpYz4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA2OS45NjYrLTEuMTIzICAgICAgICAgICAgIDY5Ljg0
OCstMC41MjMgICAgICAgICAgIG1pZ2h0IGJlIDEuMDAxN3ggZmFzdGVyCgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAg
ICAgICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IApNaWNyb2JlbmNobWFya3M6CiAgIG5lZ2F0aXZlLXplcm8tbW9kdWxvICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAuNjM1NistMC4wMzQ5ICAgICAgICAgICAgMC42MzM1Ky0wLjA0MTUg
ICAgICAgIAogICBpcy1vYmplY3Qtb3ItbnVsbC10cmlja2llci1mdW5jdGlvbiAgICAgICAgICAg
ICAgICA1LjI0MDArLTAuNDYzMCAgICAgPyAgICAgIDUuNTUzMistMC4zOTAxICAgICAgICA/IG1p
Z2h0IGJlIDEuMDU5OHggc2xvd2VyCiAgIG9iamVjdC12YWx1ZXMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNDkuMTc0NSstMi4xMDg2ICAgICA/ICAgICA1Mi4xMDc2Ky0xMS41
ODQ4ICAgICAgID8gbWlnaHQgYmUgMS4wNTk2eCBzbG93ZXIKICAgZGlyZWN0LXRhaWwtY2FsbCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMy45NDA4Ky00Ny43Njg2ICAgICAgICAg
IDgzLjQ4ODUrLTMuNDU5NyAgICAgICAgICBtaWdodCBiZSAxLjI0NTB4IGZhc3RlcgogICBpbnQt
b3Itb3RoZXItbWluLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICA2LjY1NjQrLTAu
NjE3OCAgICAgICAgICAgIDYuNTkxOSstMS4zNjg2ICAgICAgICAKICAgaGFzLW93bi1wcm9wZXJ0
eS1uYW1lLWNhY2hlICAgICAgICAgICAgICAgICAgICAgICA3My45MTIzKy0yLjA3OTQgICAgICAg
ICAgIDcxLjkyNzgrLTEuNTI2NiAgICAgICAgICBtaWdodCBiZSAxLjAyNzZ4IGZhc3RlcgogICBK
U09OUC1uZWdhdGl2ZS0wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjQ2NTEr
LTAuMDM0MiAgICAgPyAgICAgIDAuNjc0OCstMC4yOTY0ICAgICAgICA/IG1pZ2h0IGJlIDEuNDUw
OXggc2xvd2VyCiAgIG9iamVjdC1pbnQtc3ViICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTkuMDc5MystMC45NTc3ICAgICA/ICAgICAxOS4yMDE0Ky0wLjk3NTQgICAgICAgID8K
ICAgaW50LW9yLW90aGVyLWFkZC10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgNi4z
Nzc0Ky0wLjkzNDYgICAgICAgICAgICA2LjI4NjIrLTAuNjQ3OCAgICAgICAgICBtaWdodCBiZSAx
LjAxNDV4IGZhc3RlcgogICBkb3VibGUtcG9sbHV0aW9uLWdldGJ5dmFsICAgICAgICAgICAgICAg
ICAgICAgICAgIDEwLjAyNDErLTAuNTA5MiAgICAgICAgICAgIDkuODkzNCstMC42NjQ4ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDEzMnggZmFzdGVyCiAgIG1hcC1mb3ItZWFjaCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDQuNjIyMystMi4yMjcxICAgICAgICAgICAgMy45NzY4
Ky0wLjQ4NzggICAgICAgICAgbWlnaHQgYmUgMS4xNjIzeCBmYXN0ZXIKICAgaW5mZXItb25lLXRp
bWUtZGVlcC1jbG9zdXJlICAgICAgICAgICAgICAgICAgICAgICAxNS45NzI0Ky0wLjYwNjkgICAg
ID8gICAgIDE4LjE0ODArLTQuMDIzOCAgICAgICAgPyBtaWdodCBiZSAxLjEzNjJ4IHNsb3dlcgog
ICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLWNoYWluLWZyb20tdHJ5LWJsb2NrICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMzYzMystMC4z
NzI4ICAgICA/ICAgICAgMy40OTA0Ky0wLjYzNzQgICAgICAgID8gbWlnaHQgYmUgMS4wMzc4eCBz
bG93ZXIKICAgaW5mZXItY29uc3RhbnQtcHJvcGVydHkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMy44MTU2Ky0wLjI3MTEgICAgICAgICAgICAzLjgwNTcrLTAuNDczNyAgICAgICAgCiAgIGlz
LWJvb2xlYW4tZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMjIzMSst
MC43MjYxICAgICAgICAgICAgMy44MDI0Ky0wLjQxOTIgICAgICAgICAgbWlnaHQgYmUgMS4xMTA2
eCBmYXN0ZXIKICAgc2ltcGxlLWdldHRlci1hY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyMi43Njg3Ky0wLjg5MzUgICAgID8gICAgIDIyLjg2MTMrLTAuODMxNSAgICAgICAgPwog
ICBwdXQtYnktaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LjUx
MjArLTAuMjgwOSAgICAgICAgICAgMTYuMTI2MSstMC4zMzcyICAgICAgICAgIG1pZ2h0IGJlIDEu
MDIzOXggZmFzdGVyCiAgIGluZmVyLWNsb3N1cmUtY29uc3QtdGhlbi1tb3Ytbm8taW5saW5lICAg
ICAgICAgICAgIDUuNDc1MSstMS4wOTI2ICAgICA/ICAgICAgNS43NzY3Ky0wLjQ1OTEgICAgICAg
ID8gbWlnaHQgYmUgMS4wNTUxeCBzbG93ZXIKICAgZ2V0LWJ5LXZhbC1vdXQtb2YtYm91bmRzICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOC4wNjcxKy0zLjAxNDEgICAgICAgICAgICA3LjMzMjkr
LTAuODc4NyAgICAgICAgICBtaWdodCBiZSAxLjEwMDF4IGZhc3RlcgogICBzdHJpbmctY2hhci1j
b2RlLWF0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLjkxOTUrLTAuODU2OSAgICAg
PyAgICAgMjEuOTk4MistMS4xNTExICAgICAgICA/CiAgIGRpcmVjdC1jYWxsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgODkuODc1MCstMzUuNjcyMiAgICAgICAgICA3OC45
ODAxKy01LjU3NTAgICAgICAgICAgbWlnaHQgYmUgMS4xMzc5eCBmYXN0ZXIKICAgZWxpZGFibGUt
bmV3LW9iamVjdC10cmVlICAgICAgICAgICAgICAgICAgICAgICAgICAyNC43NzI5Ky0wLjQxMDMg
ICAgID8gICAgIDI1LjEyNzArLTAuNzQzNSAgICAgICAgPyBtaWdodCBiZSAxLjAxNDN4IHNsb3dl
cgogICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuNTUz
NCstMC4xNjk5ICAgICA/ICAgICAgMS45NDcyKy0wLjkxMTcgICAgICAgID8gbWlnaHQgYmUgMS4y
NTM2eCBzbG93ZXIKICAgcmVnZXhwLXNldC1sYXN0LWluZGV4ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxMy43MzU2Ky0wLjc0NjQgICAgICAgICAgIDEzLjU3ODgrLTAuNDk2OSAgICAgICAg
ICBtaWdodCBiZSAxLjAxMTZ4IGZhc3RlcgogICB0YW4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDk0LjQ0NDkrLTEuMTk1NyAgICAgPyAgICAgOTYuNzc5OCst
Mi42MDYzICAgICAgICA/IG1pZ2h0IGJlIDEuMDI0N3ggc2xvd2VyCiAgIGluZmVyLW9uZS10aW1l
LWNsb3N1cmUtdGVuLXZhcnMgICAgICAgICAgICAgICAgICAgIDkuNjI0NystMC44MDg5ICAgICAg
ICAgICAgOS40NTg3Ky0wLjY5MTQgICAgICAgICAgbWlnaHQgYmUgMS4wMTc1eCBmYXN0ZXIKICAg
dG8tbnVtYmVyLW51bWJlci1zdHJpbmctbnVtYmVyLXN0cmluZyAgICAgICAgICAgICAgNS4xNzE2
Ky0wLjY3OTIgICAgID8gICAgICA1LjYyOTQrLTAuNzQzNiAgICAgICAgPyBtaWdodCBiZSAxLjA4
ODV4IHNsb3dlcgogICBhc3NpZ24tY3VzdG9tLXNldHRlciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA4Ljg2MTErLTAuODEwMiAgICAgICAgICAgIDguNTA1NystMC41Njc0ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDQxOHggZmFzdGVyCiAgIGN1c3RvbS1zZXR0ZXItZ2V0dGVyLWFzLXB1dC1n
ZXQtYnktaWQgICAgICAgICAgICAgIDAuODE0OSstMC4wNDM1ICAgICA/ICAgICAgMC45MzIyKy0w
LjI0NzkgICAgICAgID8gbWlnaHQgYmUgMS4xNDM5eCBzbG93ZXIKICAgbWFrZS1pbmRleGVkLXN0
b3JhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC40MTg5Ky0wLjM5NzMgICAgID8g
ICAgICA0Ljg1OTUrLTEuMjM0OSAgICAgICAgPyBtaWdodCBiZSAxLjA5OTd4IHNsb3dlcgogICBv
YmplY3QtaW50LWFkZC1hcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjU4NTUr
LTAuNjAzMyAgICAgICAgICAgMTIuMjc4MistMC42NzUzICAgICAgICAgIG1pZ2h0IGJlIDEuMDI1
MHggZmFzdGVyCiAgIGFyZ3VtZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDcuNzQ2MSstMC41NDg0ICAgICA/ICAgICAgNy44NzYwKy0wLjY2OTcgICAgICAgID8g
bWlnaHQgYmUgMS4wMTY4eCBzbG93ZXIKICAgbGFyZ2UtaW50LW5lZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxNi4zODYwKy0xLjE3MDUgICAgID8gICAgIDE2LjU1OTcrLTAu
NjcyNiAgICAgICAgPyBtaWdodCBiZSAxLjAxMDZ4IHNsb3dlcgogICBpcy1vYmplY3Qtb3ItbnVs
bC10cmlja3ktZnVuY3Rpb24gICAgICAgICAgICAgICAgICA1LjM1NzMrLTAuNDY3MiAgICAgPyAg
ICAgIDUuNTE1NCstMC42NDk3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI5NXggc2xvd2VyCiAgIGdj
c2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNjIyMyst
MC4zODI5ICAgICA/ICAgICAgNS42NDc3Ky0wLjMxMzcgICAgICAgID8KICAgZm9sZC1nZXQtYnkt
aWQtdG8tbXVsdGktZ2V0LWJ5LW9mZnNldC1yYXJlLWludCAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LjAyODQrLTEuMDAzNiAgICAgICAg
ICAgMTQuMDE4OCstMS45MDk0ICAgICAgICAgIG1pZ2h0IGJlIDEuMTQzNHggZmFzdGVyCiAgIGFi
Yy1za2lwcHktbG9vcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjguMTQ2MSst
MS4xMDgxICAgICA/ICAgICAyOC4yMjQzKy0xLjA1ODggICAgICAgID8KICAgaW5saW5lLWFyZ3Vt
ZW50cy1hbGlhc2VkLWFjY2VzcyAgICAgICAgICAgICAgICAgICAgNS45ODI5Ky0xLjIyMjkgICAg
ID8gICAgICA2LjkxNjErLTEuMjIxNCAgICAgICAgPyBtaWdodCBiZSAxLjE1NjB4IHNsb3dlcgog
ICBpcy1hcnJheS1mb3Itbm9uLWFycmF5LW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAzLjc2
MjQrLTAuNzYwMSAgICAgICAgICAgIDMuNDk4NystMC4zMzA4ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDc1NHggZmFzdGVyCiAgIGVsaWRhYmxlLW5ldy1vYmplY3QtZGFnICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMjcuOTIwNystMi44NjkwICAgICAgICAgICAyNi4wMjkwKy0wLjQ0NzggICAgICAg
ICAgbWlnaHQgYmUgMS4wNzI3eCBmYXN0ZXIKICAgc3dpdGNoLXN0cmluZy1sZW5ndGgtdG93ZXIg
ICAgICAgICAgICAgICAgICAgICAgICAxNC45NzA1Ky0wLjcyNTYgICAgICAgICAgIDE0LjkyNzMr
LTAuNzMwMSAgICAgICAgCiAgIGFycm93ZnVuY3Rpb24tY2FsbC1pbi1jbGFzcy1tZXRob2QgICAg
ICAgICAgICAgICAgMTIuNTEwNystMC41Mjk4ICAgICA/ICAgICAxMy45MDAzKy0yLjQxMjcgICAg
ICAgID8gbWlnaHQgYmUgMS4xMTExeCBzbG93ZXIKICAgc3RyaW5nLWNvbmNhdC1wYWlyLXNpbXBs
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgNC44MzY3Ky0wLjM1MjggICAgID8gICAgICA2LjY1
NjMrLTQuMjM3MSAgICAgICAgPyBtaWdodCBiZSAxLjM3NjJ4IHNsb3dlcgogICBmb3Itb2YtYXJy
YXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLjQ1MDUrLTAuMzk1NyAg
ICAgPyAgICAgMjMuNzM3MistMS41ODQ5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDU3M3ggc2xvd2Vy
CiAgIHN0cmluZy1wcm90b3R5cGUtc2VhcmNoLW9ic2VydmFibGUtc2lkZS1lZmZlY3RzICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMjE0
OSstMC4wNjQxICAgICA/ICAgICAgMS4yNTkzKy0wLjE0NDEgICAgICAgID8gbWlnaHQgYmUgMS4w
MzY1eCBzbG93ZXIKICAgdmFyYXJncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxMS4wOTAyKy0wLjc5NzYgICAgID8gICAgIDExLjE3OTArLTAuODE3NyAgICAgICAg
PwogICBzdHJpbmctdmFyLWVxdWFsaXR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMy
LjkxNjQrLTEuNDc5MiAgICAgPyAgICAgMzMuNjU1NistMi4wNjc1ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDIyNXggc2xvd2VyCiAgIHRvLW51bWJlci1vbmx5LW51bWJlciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAuOTA3NistMC4wNzk0ICAgICA/ICAgICAgMC45NTAwKy0wLjA4MzUgICAg
ICAgID8gbWlnaHQgYmUgMS4wNDY3eCBzbG93ZXIKICAgZnVuY3Rpb24tdGVzdCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNC40NzQ5Ky0wLjQ0MjYgICAgICAgICAgICA0LjEy
ODgrLTAuMzA2OCAgICAgICAgICBtaWdodCBiZSAxLjA4Mzh4IGZhc3RlcgogICB1bnByb2ZpbGVk
LWxpY20gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjE0NDIrLTAuOTM3NiAg
ICAgICAgICAgIDguNTUyMystMC42MDk5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDY5MnggZmFzdGVy
CiAgIHN0cmluZy1jb25zLXRvd2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgu
MTIwNystMS4wOTc2ICAgICAgICAgICAgNi45NjYyKy0wLjQ3NzIgICAgICAgICAgbWlnaHQgYmUg
MS4xNjU3eCBmYXN0ZXIKICAgSW50OEFycmF5LWxvYWQtd2l0aC1ieXRlTGVuZ3RoICAgICAgICAg
ICAgICAgICAgICAgNS40MzU1Ky0wLjIzNzQgICAgID8gICAgICA1LjQ4NDIrLTAuMzI5NCAgICAg
ICAgPwogICBpbmxpbmVkLXB1dC1ieS12YWwtd2l0aC1zdHJpbmctdHJhbnNpdGlvbiAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYxLjY1MjAr
LTEuODU1NSAgICAgICAgICAgNjAuMTk3MistMC45NTQ4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI0
MnggZmFzdGVyCiAgIGxpY20tZHJhZ29ucy1vdmVyZmxvdyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMjQuODYwNystMS41NDI0ICAgICA/ICAgICAyNS4wMjI3Ky0wLjkxMTMgICAgICAgID8K
ICAgdmFyYXJncy1jb25zdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC43
NjQ5Ky0wLjUwNzcgICAgID8gICAgIDI1LjM2MjUrLTEuMjk2OSAgICAgICAgPyBtaWdodCBiZSAx
LjAyNDF4IHNsb3dlcgogICBtb2QtYm9vbGVhbi1kb3VibGUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA2LjM5OTMrLTAuMjc4MyAgICAgPyAgICAgIDYuNzU2NistMC41NDQ2ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDU1OHggc2xvd2VyCiAgIG5lc3RlZC1mdW5jdGlvbi1wYXJzaW5nICAg
ICAgICAgICAgICAgICAgICAgICAgICAxNjcuODYzNistNC45MTQxICAgICAgICAgIDE2NS4xMzA3
Ky01Ljg3ODEgICAgICAgICAgbWlnaHQgYmUgMS4wMTY1eCBmYXN0ZXIKICAgc2luay1odWdlLWFj
dGl2YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNC4zMDI3Ky0xLjAzODMgICAg
ICAgICAgIDEzLjU2NzQrLTAuNTYyMSAgICAgICAgICBtaWdodCBiZSAxLjA1NDJ4IGZhc3Rlcgog
ICB2YXJhcmdzLWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LjQ4
NTIrLTAuNjMxMSAgICAgICAgICAgMTUuODI2NSstMC43MTA3ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDQxNnggZmFzdGVyCiAgIHNpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLXdpdGgtaG9pc3RlZC1y
ZWdleHAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxNC4wNjgzKy0wLjUwODAgICAgID8gICAgIDE0LjQ0MjArLTAuNDcwNyAgICAgICAgPyBt
aWdodCBiZSAxLjAyNjZ4IHNsb3dlcgogICBpbXVsLWludC1vbmx5ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA3LjcxNjArLTAuNjc4NCAgICAgICAgICAgIDcuNTUyMCstMC45
ODAzICAgICAgICAgIG1pZ2h0IGJlIDEuMDIxN3ggZmFzdGVyCiAgIHRlYXItb2ZmLWFyZ3VtZW50
cy1zaW1wbGUgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNzM0OCstMC40MTI5ICAgICA/ICAg
ICAgMy45Mzg1Ky0wLjI1NTkgICAgICAgID8gbWlnaHQgYmUgMS4wNTQ1eCBzbG93ZXIKICAgYWRh
cHQtdG8tZG91YmxlLWRpdmlkZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS41MTg1Ky0w
LjU2NTcgICAgICAgICAgIDE5LjUxNDYrLTAuNTk3MSAgICAgICAgCiAgIGdldF9jYWxsZWVfbW9u
b21vcnBoaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMTI0MistMS4wMTQwICAgICAg
ICAgICAgMy43Mzc3Ky0wLjgyNzcgICAgICAgICAgbWlnaHQgYmUgMS4xMDM0eCBmYXN0ZXIKICAg
c3dpdGNoLXN0cmluZy1zaG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNS4xMjMx
Ky0wLjY5MDEgICAgICAgICAgIDE0LjQyNTQrLTAuNjU2NSAgICAgICAgICBtaWdodCBiZSAxLjA0
ODR4IGZhc3RlcgogICBpcy1hcnJheS1mb3ItYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA0LjcxNTkrLTEuMTk4MCAgICAgICAgICAgIDQuNDQyOCstMS4yODM1ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDYxNXggZmFzdGVyCiAgIG9iamVjdC1lbnRyaWVzICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxMTkuMzE2MCstNC42MzI4ICAgICAgICAgIDExNy44ODEzKy0z
LjM1MTcgICAgICAgICAgbWlnaHQgYmUgMS4wMTIyeCBmYXN0ZXIKICAgQXJyYXlCdWZmZXItSW50
MzJBcnJheS1ieXRlT2Zmc2V0ICAgICAgICAgICAgICAgICAgNS4yOTEzKy0wLjQzMDEgICAgID8g
ICAgICA1LjQ3NzArLTAuNzM1MSAgICAgICAgPyBtaWdodCBiZSAxLjAzNTF4IHNsb3dlcgogICBp
bmZlci1jbG9zdXJlLWNvbnN0LXRoZW4tcHV0LXRvLXNjb3BlLW5vLWlubGluZSAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjg0NjkrLTAu
NTUzNyAgICAgICAgICAgMTIuNjUwNSstMS4xMDI1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE1NXgg
ZmFzdGVyCiAgIHZhcmFyZ3MtY29uc3RydWN0LWlubGluZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgMjEuMjY0MystMC42MDU1ICAgICA/ICAgICAyMS41MjAwKy0xLjA5OTQgICAgICAgID8gbWln
aHQgYmUgMS4wMTIweCBzbG93ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN0cmluZy1xdWFkbW9ycGhp
Yy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNjY3NCstMC45NzQ5ICAgICA/
ICAgICAgNS44MzYxKy0wLjYzNTggICAgICAgID8gbWlnaHQgYmUgMS4wMjk4eCBzbG93ZXIKICAg
Z2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS41MDI3
Ky0wLjgxMTEgICAgID8gICAgICA5Ljg4NDMrLTEuMzY1MCAgICAgICAgPyBtaWdodCBiZSAxLjA0
MDJ4IHNsb3dlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzMy11bmljb2RlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAuNzI2MSstMC4xMDE5ICAgICA/ICAgICAgMC43NjM2Ky0wLjExODIgICAg
ICAgID8gbWlnaHQgYmUgMS4wNTE2eCBzbG93ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZSAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjY3MzkrLTAuMTUzNyAgICAgICAgICAg
IDAuNjUwOCstMC4wNDUyICAgICAgICAgIG1pZ2h0IGJlIDEuMDM1NXggZmFzdGVyCiAgIGZ0bC1w
b2x5bW9ycGhpYy1iaXRhbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAxODAuMjY0NSstNi4z
MjI4ICAgICAgICAgIDE3OS45NzE5Ky0zLjMzNjUgICAgICAgIAogICBjc2UtbmV3LWFycmF5LWJ1
ZmZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjE0MzYrLTAuOTU2MCAgICAgICAg
ICAgIDMuNjg4NCstMC4yNDM5ICAgICAgICAgIG1pZ2h0IGJlIDEuMTIzNHggZmFzdGVyCiAgIHNw
bGljZS10by1yZW1vdmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEuMDQyNCst
MC45NDEwICAgICA/ICAgICAyMS4yMjQ0Ky0wLjY3NzkgICAgICAgID8KICAgbmVnLWJvb2xlYW4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4wMDI4Ky0wLjI0MzcgICAg
ICAgICAgICAzLjg2OTErLTAuNTA2NyAgICAgICAgICBtaWdodCBiZSAxLjAzNDZ4IGZhc3Rlcgog
ICBJbnQxNkFycmF5LXRvLUludDMyQXJyYXktc2V0ICAgICAgICAgICAgICAgICAgICAgIDY2Ljg4
MjErLTMzLjk3NzQgICAgICAgICAgNjIuMzY2NystMjYuNDQxMCAgICAgICAgIG1pZ2h0IGJlIDEu
MDcyNHggZmFzdGVyCiAgIGZvci1vZi1pdGVyYXRlLWFycmF5LWtleXMgICAgICAgICAgICAgICAg
ICAgICAgICAgIDcuNDUwOSstMS4wNDA1ICAgICA/ICAgICAgNy45NDgxKy0xLjY0MTQgICAgICAg
ID8gbWlnaHQgYmUgMS4wNjY3eCBzbG93ZXIKICAgbWFrZS1yb3BlLWNzZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNS42MjcwKy0xLjI5MzIgICAgID8gICAgICA2Ljk5MTAr
LTAuODMzNSAgICAgICAgPyBtaWdodCBiZSAxLjI0MjR4IHNsb3dlcgogICByZXN0LXBhcmFtZXRl
ci1hbGxvY2F0aW9uLWVsaW1pbmF0aW9uICAgICAgICAgICAgMjU5Ljc2NTQrLTYuNTc4NCAgICAg
PyAgICAyNjIuNjU4NCstNS4xODg4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDExMXggc2xvd2VyCiAg
IGlzLWZ1bmN0aW9uLWZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNjEz
MystMC4yMjkxICAgICA/ICAgICAgMy42NTY2Ky0wLjI4MTcgICAgICAgID8gbWlnaHQgYmUgMS4w
MTIweCBzbG93ZXIKICAgRGF0YVZpZXctY3VzdG9tLXByb3BlcnRpZXMgICAgICAgICAgICAgICAg
ICAgICAgICA3NS4wNjA1Ky0yLjc3MDMgICAgID8gICAgIDc5LjY0MzYrLTguMTI0MyAgICAgICAg
PyBtaWdodCBiZSAxLjA2MTF4IHNsb3dlcgogICBuZXctYXJyYXktYnVmZmVyLWRlYWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDkxLjY1NDUrLTIuODc1MCAgICAgICAgICAgOTAuNDA5OSst
Mi40OTM4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzOHggZmFzdGVyCiAgIHByb3RvdHlwZS1hY2Nl
c3Mtd2l0aC1tdXRhdGluZy1wcm90b3R5cGUgICAgICAgICAgIDYuODE3MystMS4wNTgwICAgICA/
ICAgICAgOC4zMTk4Ky0yLjA3MDggICAgICAgID8gbWlnaHQgYmUgMS4yMjA0eCBzbG93ZXIKICAg
YWxsb2NhdGUtYmlnLW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC42MjI5
Ky0xLjI4MDYgICAgICAgICAgICA0LjM3NjErLTAuOTgzNCAgICAgICAgICBtaWdodCBiZSAxLjA1
NjR4IGZhc3RlcgogICBkaXJlY3QtY2FsbC1hcml0eS1taXNtYXRjaCAgICAgICAgICAgICAgICAg
ICAgICAgIDgyLjg5NzArLTEuOTc4MCAgICAgPyAgICAgOTEuNjUzNCstMjEuNzgzMCAgICAgICA/
IG1pZ2h0IGJlIDEuMTA1Nnggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wtcHJvdG8t
b3Itc2VsZiAgICAgICAgICAgICAgMTQuODgxMSstMS42ODE2ICAgICAgICAgICAxNC41MTQyKy0y
LjAyMjMgICAgICAgICAgbWlnaHQgYmUgMS4wMjUzeCBmYXN0ZXIKICAgZ2V0LWJ5LWlkLWJpbW9y
cGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy4yMzU0Ky0wLjQ2NDYgICAgID8gICAg
ICA3LjQ3NTMrLTAuNjA1MyAgICAgICAgPyBtaWdodCBiZSAxLjAzMzJ4IHNsb3dlcgogICBtYXAt
Y29uc3RhbnQta2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjE5LjQ5NTkrLTQu
NTg3NCAgICAgPyAgICAyNDAuNzM3MCstNTkuNTE4OCAgICAgICA/IG1pZ2h0IGJlIDEuMDk2OHgg
c2xvd2VyCiAgIGRlbHRhLWJsdWUtdHJ5LWNhdGNoICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxMDIuMDExMCstMS40NTYwICAgICAhICAgIDEzNC42NTIzKy0yLjMwMTQgICAgICAgICEgZGVm
aW5pdGVseSAxLjMyMDB4IHNsb3dlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzMiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLjc5NzUrLTAuMTE2OCAgICAgICAgICAgIDAuNzQ5OCstMC4wNDU5
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDYzN3ggZmFzdGVyCiAgIG5vLWlubGluZS1jb25zdHJ1Y3Rv
ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjkuOTM3NSstMS42Mjg0ICAgICAgICAgICAy
OS44ODM4Ky0wLjY0NDQgICAgICAgIAogICBudW1iZXItdG8tc3RyaW5nLXdpdGgtYWRkLWVtcHR5
ICAgICAgICAgICAgICAgICAgIDEwLjUxMDArLTAuODc2NyAgICAgICAgICAgMTAuMTU4MSstMC45
MDQ3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM0NnggZmFzdGVyCiAgIGNtcGVxLW9iai10by1vYmot
b3RoZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuNDg1OSstMC42MzU2ICAgICA/ICAg
ICAxMy4wNDQxKy0wLjk2MjEgICAgICAgID8gbWlnaHQgYmUgMS4wNDQ3eCBzbG93ZXIKICAgQXJy
YXlCdWZmZXItRGF0YVZpZXctYWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAgICAyMy41MjM1Ky0w
LjczMDYgICAgICAgICAgIDIyLjkzNzMrLTAuMjYwNSAgICAgICAgICBtaWdodCBiZSAxLjAyNTZ4
IGZhc3RlcgogICBnZXQtYnktaWQtcXVhZG1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0
aW9uLXNpbXBsZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA1LjE4OTUrLTAuNzcxMiAgICAgICAgICAgIDQuOTY3MystMC41MTk4ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDQ0N3ggZmFzdGVyCiAgIGluLXR3by1jYXNlcyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTIuOTEzNistMC42NDEwICAgICA/ICAgICAxMi45NjIz
Ky0wLjg4MzEgICAgICAgID8KICAgc3RyaW5nLWFkZC1jb25zdGFudC1mb2xkaW5nICAgICAgICAg
ICAgICAgICAgICAgIDIwOC44NDI5Ky01Ljc5NzAgICAgICAgICAgMjA2LjUxODkrLTIuNTM5MCAg
ICAgICAgICBtaWdodCBiZSAxLjAxMTN4IGZhc3RlcgogICBzd2l0Y2ggICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjIzMzMrLTEuMDc5MCAgICAgICAgICAgIDku
MDQ5NystMC43MzM0ICAgICAgICAgIG1pZ2h0IGJlIDEuMTMwOHggZmFzdGVyCiAgIGluZmVyLWNs
b3N1cmUtY29uc3QtdGhlbi1tb3YgICAgICAgICAgICAgICAgICAgICAgMTAuNDgwMSstMC44MDgz
ICAgICAgICAgICAgOS43MjY0Ky0wLjYyMDAgICAgICAgICAgbWlnaHQgYmUgMS4wNzc1eCBmYXN0
ZXIKICAgc3RyaW5nLWVxdWFsaXR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
NS4yNDA5Ky0wLjg2ODMgICAgID8gICAgIDE1LjgwNTUrLTAuNTc1MiAgICAgICAgPyBtaWdodCBi
ZSAxLjAzNzB4IHNsb3dlcgogICBpbnQtb3Itb3RoZXItbmVnLXRoZW4tZ2V0LWJ5LXZhbCAgICAg
ICAgICAgICAgICAgIDI4Ljc5MDErLTAuOTA1MCAgICAgISAgICAzMzIuMDg5NystNi43NTEwICAg
ICAgICAhIGRlZmluaXRlbHkgMTEuNTM0OXggc2xvd2VyCiAgIHN1cGVyLWdldC1ieS1pZC13aXRo
LXRoaXMtbW9ub21vcnBoaWMgICAgICAgICAgICAgMjQuOTUwMCstMC41OTQyICAgICAhICAgICAy
Ny43MzM1Ky0wLjM1MzIgICAgICAgICEgZGVmaW5pdGVseSAxLjExMTZ4IHNsb3dlcgogICBhYmMt
cG9zdGZpeC1iYWNrd2FyZC1sb29wICAgICAgICAgICAgICAgICAgICAgICAgIDQ2LjA0NTYrLTE1
LjUyODkgICAgICAgICAgNDEuMDA1MistMS42MTYxICAgICAgICAgIG1pZ2h0IGJlIDEuMTIyOXgg
ZmFzdGVyCiAgIGFicy1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDQuNTc5OSstMS4xNzYxICAgICAgICAgICAgNC40NDk1Ky0xLjA5MTEgICAgICAgICAgbWln
aHQgYmUgMS4wMjkzeCBmYXN0ZXIKICAgZml4ZWQtdHlwZWQtYXJyYXktc3RvcmFnZS12YXItaW5k
ZXggICAgICAgICAgICAgICAgMi40NTcwKy0wLjE2NzAgICAgID8gICAgICAyLjUzNDkrLTAuMjIx
NSAgICAgICAgPyBtaWdodCBiZSAxLjAzMTd4IHNsb3dlcgogICBzdHJpbmctcmVwbGFjZS1nZW5l
cmljICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY2Ljk5NDgrLTMuNzU5MSAgICAgICAgICAg
NjMuODk5NSstMS4wMTU5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ4NHggZmFzdGVyCiAgIHNpbmds
ZXRvbi1zY29wZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTcuODE2MystMi41
NzM4ICAgICA/ICAgICA1OS4zNzU1Ky0xLjgyNTkgICAgICAgID8gbWlnaHQgYmUgMS4wMjcweCBz
bG93ZXIKICAgZGl2LWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxMC40MDgyKy0wLjgzNTYgICAgICAgICAgIDEwLjMwNTMrLTAuNDYzNiAgICAgICAgCiAgIHB1
dC1ieS1pZC1zbGlnaHRseS1wb2x5bW9ycGhpYyAgICAgICAgICAgICAgICAgICAgIDQuMTcyNyst
MC41MDU0ICAgICA/ICAgICAgNC4yOTkyKy0wLjYzMTUgICAgICAgID8gbWlnaHQgYmUgMS4wMzAz
eCBzbG93ZXIKICAgc3VwZXItZ2V0LWJ5LXZhbC13aXRoLXRoaXMtcG9seW1vcnBoaWMgICAgICAg
ICAgICAzMC4xMzc5Ky0wLjg1MjcgICAgICEgICAgIDMxLjY5NDArLTAuNjY2NSAgICAgICAgISBk
ZWZpbml0ZWx5IDEuMDUxNnggc2xvd2VyCiAgIGFycmF5LXNwbGljZS1jb250aWd1b3VzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMzkuODIzOSstMS40MzI5ICAgICAgICAgICAzOS4zNzUzKy0w
Ljg4MTQgICAgICAgICAgbWlnaHQgYmUgMS4wMTE0eCBmYXN0ZXIKICAgcG9seS1jaGFpbi1hY2Nl
c3MtZGlmZmVyZW50LXByb3RvdHlwZXMtc2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMzg0NSstMC4yMTIyICAgICAgICAgICAg
NC4yOTYwKy0wLjMzMjkgICAgICAgICAgbWlnaHQgYmUgMS4wMjA2eCBmYXN0ZXIKICAgZ2xvYmFs
LXZhci1jb25zdC1pbmZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS41NDAyKy0wLjk1
MzcgICAgICAgICAgICAxLjIxOTcrLTAuMDc1NiAgICAgICAgICBtaWdodCBiZSAxLjI2Mjh4IGZh
c3RlcgogICBzd2l0Y2gtc3RyaW5nLWJhc2ljLWJpZy12YXIgICAgICAgICAgICAgICAgICAgICAg
IDIyLjUxMzkrLTkuODU5OSAgICAgICAgICAgMTguOTY0NSstMS4yNDA5ICAgICAgICAgIG1pZ2h0
IGJlIDEuMTg3MnggZmFzdGVyCiAgIGRlbHRhYmx1ZS12YXJhcmdzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMjMuODc4MCstMS4wNzEzICAgICA/ICAgICAyNC4wOTkzKy0wLjY2MTYg
ICAgICAgID8KICAgYXJyYXktd2l0aC1kb3VibGUtbXVsLWFkZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgNi4yNzI1Ky0wLjY3ODkgICAgID8gICAgICA2Ljc5MzcrLTEuMTM3NSAgICAgICAgPyBt
aWdodCBiZSAxLjA4MzF4IHNsb3dlcgogICBkaXJlY3QtdGFpbC1jYWxsLWlubGluZWQtY2FsbGVy
LWFyaXR5LW1pc21hdGNoICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOTMuNjQ2NystMTkuMTU5NCAgICAgICAgICA4NS43MTU2Ky0yLjM5OTkg
ICAgICAgICAgbWlnaHQgYmUgMS4wOTI1eCBmYXN0ZXIKICAgYXJyYXktd2l0aC1pbnQzMi1vci1k
b3VibGUtc3VtICAgICAgICAgICAgICAgICAgICAgNS40NzI4Ky0xLjgyMTMgICAgID8gICAgICA1
LjkwNzkrLTIuMDAwMSAgICAgICAgPyBtaWdodCBiZSAxLjA3OTV4IHNsb3dlcgogICBzd2l0Y2gt
Y2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjU3NTcrLTAuNjI0
NCAgICAgPyAgICAgIDcuNzA5NistMC44MDAwICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3N3ggc2xv
d2VyCiAgIHN1cGVyLWdldHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MzkuNDc4OSstMS4yMTMxICAgICA/ICAgICA0MC4yMTI5Ky0xLjUwOTcgICAgICAgID8gbWlnaHQg
YmUgMS4wMTg2eCBzbG93ZXIKICAgZ2VuZXJhdG9yLXN1bnNwaWRlci1hY2Nlc3MtbnNpZXZlICAg
ICAgICAgICAgICAgICAgNy41ODk1Ky0xLjQ1MTYgICAgICAgICAgICA3LjM5MDUrLTEuNDA4MyAg
ICAgICAgICBtaWdodCBiZSAxLjAyNjl4IGZhc3RlcgogICBidWctMTUzNDMxICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljg5NjUrLTAuNDU1NiAgICAgPyAgICAgIDQu
OTY0NCstMC42MjM2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEzOXggc2xvd2VyCiAgIEludDE2QXJy
YXktYnViYmxlLXNvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUuNzk1MSstMS4yNzQ2
ICAgICA/ICAgICAyNi43Mzk5Ky0yLjQzOTEgICAgICAgID8gbWlnaHQgYmUgMS4wMzY2eCBzbG93
ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC42
ODE3Ky0wLjEyMjkgICAgID8gICAgICAwLjcyMDIrLTAuMjMxNSAgICAgICAgPyBtaWdodCBiZSAx
LjA1NjV4IHNsb3dlcgogICBldmFsLWNvZGUtZnRsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDU4Ljk4MzIrLTEuNTU2NyAgICAgPyAgICAgNTkuMzc4MCstMS40MTQwICAgICAg
ICA/CiAgIGNoYWluLWdldHRlci1hY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MTQuNTE0NCstMC40MTUxICAgICA/ICAgICAxNS43OTM3Ky0xLjEyMjcgICAgICAgID8gbWlnaHQg
YmUgMS4wODgxeCBzbG93ZXIKICAgc3RyaW5nLWNvbmNhdC1zaW1wbGUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNi43NTI5Ky0wLjE3MTAgICAgID8gICAgICA4LjQxNDYrLTIuNTU4NyAg
ICAgICAgPyBtaWdodCBiZSAxLjI0NjF4IHNsb3dlcgogICBhcml0eS1taXNtYXRjaC1pbmxpbmlu
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjUzNzkrLTAuMjQzMyAgICAgICAgICAgIDEu
NDgwNystMC4xMjIwICAgICAgICAgIG1pZ2h0IGJlIDEuMDM4NnggZmFzdGVyCiAgIGFycmF5LXBy
b3RvdHlwZS1ldmVyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDYuNjczNCstMi45MTA1
ICAgICA/ICAgICA0OC4yNDU1Ky0xLjA4MjkgICAgICAgID8gbWlnaHQgYmUgMS4wMzM3eCBzbG93
ZXIKICAgaW50LW9yLW90aGVyLWFicy10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAx
Mi4zNDE4Ky0wLjUzNzggICAgID8gICAgIDEyLjQ4OTMrLTAuNjgwNyAgICAgICAgPyBtaWdodCBi
ZSAxLjAxMTl4IHNsb3dlcgogICBmdGwtcG9seW1vcnBoaWMtbHNoaWZ0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMjE4LjcyNDgrLTIuMDQxMSAgICAgPyAgICAyMjAuMjE3MCstNC4xMzI5ICAg
ICAgICA/CiAgIGZvbGQtZ2V0LWJ5LWlkLXRvLW11bHRpLWdldC1ieS1vZmZzZXQgICAgICAgICAg
ICAgMTIuMjA3NistMS45MDQwICAgICAgICAgICAxMS43NDc1Ky0yLjI5OTUgICAgICAgICAgbWln
aHQgYmUgMS4wMzkyeCBmYXN0ZXIKICAgaXMtc3ltYm9sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMi45MjU4Ky0wLjQzMjggICAgID8gICAgICAyLjk1OTIrLTAuMjQw
OCAgICAgICAgPyBtaWdodCBiZSAxLjAxMTR4IHNsb3dlcgogICBpbnRlZ2VyLW1vZHVsbyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjA4NzYrLTEuNTg2NiAgICAgICAgICAg
IDMuNTQzOSstMC4zMDAyICAgICAgICAgIG1pZ2h0IGJlIDEuMTUzNHggZmFzdGVyCiAgIGludC1v
ci1vdGhlci1kaXYtdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgIDYuMTI2NistMC40
NzU1ICAgICA/ICAgICAgNi4yMzAyKy0wLjc0NDggICAgICAgID8gbWlnaHQgYmUgMS4wMTY5eCBz
bG93ZXIKICAgZm9sZC1tdWx0aS1nZXQtYnktb2Zmc2V0LXRvLXBvbHktZ2V0LWJ5LW9mZnNldCAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3
LjEyMTErLTAuODgyNCAgICAgICAgICAgIDYuNzgyMCstMC42MDExICAgICAgICAgIG1pZ2h0IGJl
IDEuMDUwMHggZmFzdGVyCiAgIG9iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMtb24tbGFy
Z2UtYXJyYXkgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMS43MzMwKy0wLjIxOTggICAgICAgICAgICAxLjY4MzIrLTAuMjU3MCAgICAgICAg
ICBtaWdodCBiZSAxLjAyOTZ4IGZhc3RlcgogICBtYW55LWZvcmVhY2gtY2FsbHMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAzLjU3MDYrLTAuNjA1OSAgICAgICAgICAgIDMuMzM3Mist
MC4zOTExICAgICAgICAgIG1pZ2h0IGJlIDEuMDY5OXggZmFzdGVyCiAgIGlzLW9iamVjdC1vci1u
dWxsLWZvbGQtbGVzcy10cmlja3kgICAgICAgICAgICAgICAgIDUuMjE5MistMC42NDk1ICAgICA/
ICAgICAgNS4zNTEyKy0wLjQzMzkgICAgICAgID8gbWlnaHQgYmUgMS4wMjUzeCBzbG93ZXIKICAg
aXMtbnVtYmVyLWZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4yNDcx
Ky0wLjk1MTIgICAgICAgICAgICAzLjc3OTArLTAuMjQ4MiAgICAgICAgICBtaWdodCBiZSAxLjEy
Mzl4IGZhc3RlcgogICBmb3Itb2YtaXRlcmF0ZS1hcnJheS12YWx1ZXMgICAgICAgICAgICAgICAg
ICAgICAgICA2LjUzMTQrLTEuMTE2NyAgICAgICAgICAgIDYuMjk3MystMS4yNzY4ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDM3MnggZmFzdGVyCiAgIHJpY2hhcmRzLWVtcHR5LXRyeS1jYXRjaCAgICAg
ICAgICAgICAgICAgICAgICAgICAgNzYuOTMxMSstNS41ODI2ICAgICAgICAgICA3Ni4yODM1Ky0x
LjI2OTggICAgICAgIAogICBnZW5lcmF0b3ItZnVuY3Rpb24tY3JlYXRlICAgICAgICAgICAgICAg
ICAgICAgICAgICA2LjY2MjErLTEuMDgwMSAgICAgICAgICAgIDUuNzg3MystMC4zMzU1ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMTUxMnggZmFzdGVyCiAgIHN3aXRjaC1jaGFyLWNvbnN0YW50ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDMuMTc1NCstMC4yMjQyICAgICA/ICAgICAgMy4yNzkz
Ky0wLjIzMTcgICAgICAgID8gbWlnaHQgYmUgMS4wMzI3eCBzbG93ZXIKICAgbG9naWNhbC1ub3Qt
d2VpcmQtdHlwZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC40NDY2Ky0wLjQyMDEgICAg
ID8gICAgICA0LjgxNzYrLTAuNzk5OCAgICAgICAgPyBtaWdodCBiZSAxLjA4MzR4IHNsb3dlcgog
ICBzdHJpbmctcmVwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLjAz
MzUrLTAuNjEwNiAgICAgPyAgICAgMTMuMzA5MystMC44MzAxICAgICAgICA/IG1pZ2h0IGJlIDEu
MDIxMnggc2xvd2VyCiAgIGZpeGVkLXR5cGVkLWFycmF5LXN0b3JhZ2UgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIuMDAxNistMC4yNDQ2ICAgICA/ICAgICAgMi4wNzQ0Ky0wLjIwNjggICAgICAg
ID8gbWlnaHQgYmUgMS4wMzYzeCBzbG93ZXIKICAgb2JqZWN0LWNsb3N1cmUtY2FsbCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOS40NDYwKy0xLjY4OTcgICAgID8gICAgICA5LjUwODUr
LTEuNjEzMyAgICAgICAgPwogICBwdXQtYnktdmFsLXdpdGgtc3RyaW5nLXNsaWdodGx5LXBvbHlt
b3JwaGljICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDQuNzQwNCstMC41MzY4ICAgICAgICAgICAgNC42NTUyKy0wLjQxMTEgICAgICAgICAg
bWlnaHQgYmUgMS4wMTgzeCBmYXN0ZXIKICAgbWF0aC13aXRoLW91dC1vZi1ib3VuZHMtYXJyYXkt
dmFsdWVzICAgICAgICAgICAgICAzNi4xMjQ5Ky0wLjU5OTggICAgICEgICAgIDM4LjU2NjgrLTEu
NDMxMyAgICAgICAgISBkZWZpbml0ZWx5IDEuMDY3Nnggc2xvd2VyCiAgIEludDhBcnJheS1sb2Fk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMDc4OCstMC4xNzk3ICAgICA/
ICAgICAgNS41NzY2Ky0wLjQ0MDggICAgICAgID8gbWlnaHQgYmUgMS4wOTgweCBzbG93ZXIKICAg
Ymlnc3dpdGNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMS4wNzgy
Ky0xLjE4NzggICAgID8gICAgIDM1LjQxMjIrLTguMjcxOCAgICAgICAgPyBtaWdodCBiZSAxLjEz
OTV4IHNsb3dlcgogICBpcy11bmRlZmluZWQtZm9sZC10cmlja3kgICAgICAgICAgICAgICAgICAg
ICAgICAgICA0LjU3ODYrLTAuMjMwMiAgICAgICAgICAgIDQuNDAzMSstMC4zNDc2ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDM5OXggZmFzdGVyCiAgIGRpcmVjdC10YWlsLWNhbGwtaW5saW5lZC1jYWxs
ZXIgICAgICAgICAgICAgICAgICAgODAuOTM3NCstMS44MTI1ICAgICBeICAgICA3Ni43OTYyKy0y
LjE0MzggICAgICAgIF4gZGVmaW5pdGVseSAxLjA1Mzl4IGZhc3RlcgogICBzdHJpbmctcmVwZWF0
LW5vdC1yZXNvbHZpbmctZml4ZWQgICAgICAgICAgICAgICAgICA0LjYzNjErLTAuNjc1NSAgICAg
PyAgICAgIDUuMDYxMCstMS4xODQxICAgICAgICA/IG1pZ2h0IGJlIDEuMDkxNnggc2xvd2VyCiAg
IHY4LXJheXRyYWNlLXdpdGgtdHJ5LWNhdGNoICAgICAgICAgICAgICAgICAgICAgICAgNzcuMjk5
NistMS4yODc3ICAgICAhICAgICA4NS41MDMwKy0xLjUwMDMgICAgICAgICEgZGVmaW5pdGVseSAx
LjEwNjF4IHNsb3dlcgogICBpbmxpbmUtZ2V0LXNjb3BlZC12YXIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0LjQyNTMrLTAuOTY5NSAgICAgICAgICAgIDMuNTgwMystMC4zMDYyICAgICAg
ICAgIG1pZ2h0IGJlIDEuMjM2MHggZmFzdGVyCiAgIHNpbXBsZS1wb2x5LWNhbGwtbmVzdGVkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDYuMjE3NSstMC40OTkzICAgICAgICAgICAgNS45MTY1
Ky0wLjQ4ODIgICAgICAgICAgbWlnaHQgYmUgMS4wNTA5eCBmYXN0ZXIKICAgQXJyYXlCdWZmZXIt
SW50OEFycmF5LWFsbG9jICAgICAgICAgICAgICAgICAgICAgICAyMC43NDg0Ky0xLjAxMDYgICAg
ID8gICAgIDIxLjE3OTArLTEuNzM1OSAgICAgICAgPyBtaWdodCBiZSAxLjAyMDh4IHNsb3dlcgog
ICBzZXQtZm9yLW9mICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4Ljkx
MDcrLTAuODc3MCAgICAgICAgICAgIDguMzkwNSstMS4xMzIzICAgICAgICAgIG1pZ2h0IGJlIDEu
MDYyMHggZmFzdGVyCiAgIGZyZWV6ZS1hbmQtZG8td29yayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTcuOTQ4MSstMC43MjY4ICAgICAgICAgICAxNy41MTE3Ky0wLjkyMjYgICAgICAg
ICAgbWlnaHQgYmUgMS4wMjQ5eCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS10ZXN0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAuOTIxMCstMC4wOTA0ICAgICA/ICAgICAgMC45MjI1Ky0wLjA3
NDIgICAgICAgID8KICAgSGFzaE1hcC1wdXQtZ2V0LWl0ZXJhdGUta2V5cyAgICAgICAgICAgICAg
ICAgICAgICAzMy45MDI4Ky0xLjA4MTYgICAgID8gICAgIDM0LjA4NjIrLTAuODEyNSAgICAgICAg
PwogICBzdHJpbmctZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAz
LjE5MjgrLTAuMjkwNiAgICAgICAgICAgIDMuMTc0NistMC4yMTM4ICAgICAgICAKICAgc2luay1m
dW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy43Nzg1Ky0wLjYx
NjMgICAgICAgICAgICA3LjYyMjMrLTAuMzU1OCAgICAgICAgICBtaWdodCBiZSAxLjAyMDV4IGZh
c3RlcgogICBzcGFyc2UtY29uZGl0aW9uYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyLjAyODgrLTAuMjE4MiAgICAgPyAgICAgIDIuMTM0MCstMC4zMzkyICAgICAgICA/IG1pZ2h0
IGJlIDEuMDUxOXggc2xvd2VyCiAgIGZ1bmN0aW9uLXdpdGgtZXZhbCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNTQuNjY4MistMS4wMTMzICAgICA/ICAgICA1NC43ODU5Ky0xLjAzMjcg
ICAgICAgID8KICAgYXJyYXktcHJvdG90eXBlLXJlZHVjZVJpZ2h0ICAgICAgICAgICAgICAgICAg
ICAgICA0NC4zNTU4Ky0zLjQ0MDMgICAgICAgICAgIDQzLjkxNTkrLTQuMDg3MyAgICAgICAgICBt
aWdodCBiZSAxLjAxMDB4IGZhc3RlcgogICBldmFsLW5vdC1ldmFsLWNvbXB1dGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDM2LjY5MDYrLTExLjY5MTggICAgICAgICAgMzEuNDQwMistMC40
MTMyICAgICAgICAgIG1pZ2h0IGJlIDEuMTY3MHggZmFzdGVyCiAgIG5ldy1hcnJheS1wdXNoICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMTcyMSstMS4yNzk4ICAgICA/ICAg
ICAgNi42Njg1Ky0xLjEzNDMgICAgICAgID8gbWlnaHQgYmUgMS4wODA0eCBzbG93ZXIKICAgcG9s
eXZhcmlhbnQtbW9ub21vcnBoaWMtZ2V0LWJ5LWlkICAgICAgICAgICAgICAgICAgNS41MTQ0Ky0w
LjMyNjkgICAgID8gICAgICA1LjYwOTcrLTAuMjYzNSAgICAgICAgPyBtaWdodCBiZSAxLjAxNzN4
IHNsb3dlcgogICBmdGwtcG9seW1vcnBoaWMtcnNoaWZ0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMjIwLjY4MzErLTQuNjE1MCAgICAgICAgICAyMTcuODgwMistNC44NzY1ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDEyOXggZmFzdGVyCiAgIHJlZ2V4cC1sYXN0LWluZGV4ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTMuNDE3MystMC42NTM1ICAgICAgICAgICAxMy4wMTc4Ky0wLjY0
MTMgICAgICAgICAgbWlnaHQgYmUgMS4wMzA3eCBmYXN0ZXIKICAgbWluLWJvb2xlYW4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4xMzEwKy0wLjg1MzIgICAgICAgICAg
ICAzLjg3NDQrLTAuMjMxNyAgICAgICAgICBtaWdodCBiZSAxLjA2NjJ4IGZhc3RlcgogICBwb2x5
bW9ycGhpYy1wdXQtYnktdmFsLXdpdGgtc3RyaW5nICAgICAgICAgICAgICAgIDMzLjgyMDIrLTEu
Mzg3NSAgICAgICAgICAgMzIuNzIzNSstMC43ODM1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDMzNXgg
ZmFzdGVyCiAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wtc2VsZi1vci1wcm90byAgICAgICAgICAg
ICAgMTUuMDcwNystMi4xNzIxICAgICAgICAgICAxNC4xNDU0Ky0xLjA5NjAgICAgICAgICAgbWln
aHQgYmUgMS4wNjU0eCBmYXN0ZXIKICAgcHV0LWJ5LXZhbC1tYWNoaW5lLWludCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNS4wNzYyKy0wLjY2NzkgICAgID8gICAgICA1LjQ4NDMrLTEuMDM3
MiAgICAgICAgPyBtaWdodCBiZSAxLjA4MDR4IHNsb3dlcgogICBpbXVsLW1peGVkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjEwNDIrLTAuOTU1MiAgICAgPyAgICAg
IDUuMzE5MCstMC44OTYzICAgICAgICA/IG1pZ2h0IGJlIDEuMDQyMXggc2xvd2VyCiAgIGdjc2Ut
cG9seS1nZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAuOTAzMystMC43
MzAxICAgICAgICAgICAyMC43ODI1Ky0wLjgxMjQgICAgICAgIAogICBmb2xkLWRvdWJsZS10by1p
bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3Ljg0NDYrLTAuODEzNCAgICAgPyAg
ICAgMTkuMzEwNCstMy43MjEwICAgICAgICA/IG1pZ2h0IGJlIDEuMDgyMXggc2xvd2VyCiAgIHRv
LW51bWJlci1jb25zdHJ1Y3Rvci1vbmx5LW51bWJlciAgICAgICAgICAgICAgICAgIDEuMzM1MCst
MC41NzEzICAgICAgICAgICAgMS4wNTM1Ky0wLjExMzQgICAgICAgICAgbWlnaHQgYmUgMS4yNjcy
eCBmYXN0ZXIKICAgdGVtcGxhdGUtc3RyaW5nLWFycmF5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNy44NzEyKy0wLjM0OTQgICAgID8gICAgICA4LjI1MDUrLTAuOTY2MSAgICAgICAgPyBt
aWdodCBiZSAxLjA0ODJ4IHNsb3dlcgogICBpbi1mb3VyLWNhc2VzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDI3LjM0NTYrLTEuMjE3OCAgICAgICAgICAgMjcuMTM1OSstNy4z
NDc3ICAgICAgICAKICAgaW50LW9yLW90aGVyLXN1YiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNi4yMDYzKy0wLjc0NzYgICAgICAgICAgICA1Ljk5MjcrLTAuMzY5MCAgICAgICAg
ICBtaWdodCBiZSAxLjAzNTZ4IGZhc3RlcgogICBwb2x5LWNoYWluLWFjY2Vzcy1kaWZmZXJlbnQt
cHJvdG90eXBlcyAgICAgICAgICAgICA0LjE3OTUrLTAuNDY5MSAgICAgICAgICAgIDQuMDY2NSst
MC4xOTkzICAgICAgICAgIG1pZ2h0IGJlIDEuMDI3OHggZmFzdGVyCiAgIHN1cGVyLWdldC1ieS12
YWwtd2l0aC10aGlzLW1vbm9tb3JwaGljICAgICAgICAgICAgMzMuMTQxOCstMC41OTY5ICAgICAh
ICAgICAzNS41MjI3Ky0xLjE0NjAgICAgICAgICEgZGVmaW5pdGVseSAxLjA3MTh4IHNsb3dlcgog
ICBkb3VibGUtdG8taW50MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTcwLjE0
NjkrLTMuNTcyNyAgICAgPyAgICAxOTEuODk0NCstNDYuNDE4NyAgICAgICA/IG1pZ2h0IGJlIDEu
MTI3OHggc2xvd2VyCiAgIG1hbnktcmVwZWF0LXN0b3JlcyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMjYuMjA0NistMC41MjM4ICAgICAgICAgICAyNi4wMzM1Ky0wLjU0ODkgICAgICAg
IAogICBzdHJpbmctcmVwZWF0LXNpbmdsZS1yZXNvbHZpbmcgICAgICAgICAgICAgICAgICAgIDEw
LjQzMzgrLTAuMjMyMyAgICAgPyAgICAgMTAuNzY4MistMC41MjczICAgICAgICA/IG1pZ2h0IGJl
IDEuMDMyMXggc2xvd2VyCiAgIGlzLW9iamVjdC1vci1udWxsLXRyaWNraWVyLWludGVybmFsLWZ1
bmN0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTQuNzIxMystMS40NDM1ICAgICAgICAgICAxNC42NDUxKy0xLjA2NjUgICAgICAgIAog
ICBmb2xkLXB1dC1ieS12YWwtd2l0aC1zeW1ib2wtdG8tbXVsdGktcHV0LWJ5LW9mZnNldCAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLjk0
MDcrLTEuNDM5NiAgICAgICAgICAgMTIuOTAyNCstMS42MzQ3ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDgwNXggZmFzdGVyCiAgIEFycmF5QnVmZmVyLUludDhBcnJheS1hbGxvYy1sYXJnZS1sb25nLWxp
dmVkICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNjcuNjE3NSstMS4yMzE3ICAgICA/ICAgICA3Ny45NzIxKy0yMS45MjQ2ICAgICAgID8gbWln
aHQgYmUgMS4xNTMxeCBzbG93ZXIKICAgYXJyYXktd2l0aC1kb3VibGUtc3VtICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNC42NDg0Ky0wLjE0NjQgICAgID8gICAgICA0Ljk0NTArLTAuNTA4
OSAgICAgICAgPyBtaWdodCBiZSAxLjA2Mzh4IHNsb3dlcgogICBzdHJpbmctcmVwZWF0LXNtYWxs
LXJlc29sdmluZyAgICAgICAgICAgICAgICAgICAgIDM0Ljg5ODUrLTEuMzM2MyAgICAgPyAgICAg
MzYuOTc2OCstMS4zMDk3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDU5Nnggc2xvd2VyCiAgIHN1cGVy
LWdldC1ieS1pZC13aXRoLXRoaXMtcG9seW1vcnBoaWMgICAgICAgICAgICAgMjcuMjkwNCstOS4y
MzIxICAgICAgICAgICAyNC40ODA3Ky0xLjA2MjUgICAgICAgICAgbWlnaHQgYmUgMS4xMTQ4eCBm
YXN0ZXIKICAgc3dpdGNoLXN0cmluZy1iYXNpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxNS43MTUyKy0xLjQ5MTMgICAgICAgICAgIDE1LjY0NzIrLTEuODI0MSAgICAgICAgCiAgIGxp
Y20tZHJhZ29ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDcuNjEyNCst
MC43NDU3ICAgICA/ICAgICA0OC44ODM0Ky0xLjIxMDAgICAgICAgID8gbWlnaHQgYmUgMS4wMjY3
eCBzbG93ZXIKICAgdW5kZWZpbmVkLXByb3BlcnR5LWFjY2VzcyAgICAgICAgICAgICAgICAgICAg
ICAgIDI4Ni42Mjc0Ky01LjA3ODEgICAgICAgICAgMjc5LjYyNDYrLTMuNjQyMyAgICAgICAgICBt
aWdodCBiZSAxLjAyNTB4IGZhc3RlcgogICBldmFsLW5vdC1ldmFsLWNvbXB1dGUtYXJncyAgICAg
ICAgICAgICAgICAgICAgICAgIDM2Ljk0NDIrLTEyLjI1NjkgICAgICAgICAgMzIuNjgwMSstMS4z
NDY1ICAgICAgICAgIG1pZ2h0IGJlIDEuMTMwNXggZmFzdGVyCiAgIGJyYW5jaC1vbi1zdHJpbmct
YXMtYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgMTUuMTIwNystMS4wMzcwICAgICA/ICAg
ICAxNS43OTQ0Ky0wLjQ5MjAgICAgICAgID8gbWlnaHQgYmUgMS4wNDQ2eCBzbG93ZXIKICAgdG8t
bnVtYmVyLXN0cmluZy1udW1iZXItc3RyaW5nLW51bWJlciAgICAgICAgICAgICAgNC43MDMxKy0w
LjMwMTIgICAgICAgICAgICA0LjU4NTgrLTAuNDcyNiAgICAgICAgICBtaWdodCBiZSAxLjAyNTZ4
IGZhc3RlcgogICBhcnJvd2Z1bmNpdG9uLXJlZmVyZW5jZS1hcmd1bWVudHMgICAgICAgICAgICAg
ICAgICAxLjAzMzMrLTAuMTE1MCAgICAgICAgICAgIDEuMDE4NCstMC4wNzk4ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDE0NnggZmFzdGVyCiAgIGxvY2FsZS1jb21wYXJlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMjcuMzkxOCstMC44MDQ2ICAgICA/ICAgICAyNy43MzM5Ky0xLjMx
NDIgICAgICAgID8gbWlnaHQgYmUgMS4wMTI1eCBzbG93ZXIKICAgZ2V0dGVyLW5vLWFjdGl2YXRp
b24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4yMDE4Ky0wLjU3NTMgICAgICAgICAg
ICA0Ljk3ODUrLTAuMzU5MyAgICAgICAgICBtaWdodCBiZSAxLjA0NDl4IGZhc3RlcgogICBkZWx0
YWJsdWUtZm9yLW9mICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYwLjMxMTErLTEu
Mzc3OSAgICAgPyAgICAgNjQuMjg0MSstOC41MjUzICAgICAgICA/IG1pZ2h0IGJlIDEuMDY1OXgg
c2xvd2VyCiAgIHN0cmluZy1jb25jYXQtbG9uZy1jb252ZXJ0ICAgICAgICAgICAgICAgICAgICAg
ICAgOTIuNTU1NCstMS44MDM4ICAgICBeICAgICA4OC43NTU4Ky0xLjA0ODQgICAgICAgIF4gZGVm
aW5pdGVseSAxLjA0Mjh4IGZhc3RlcgogICBwdXQtYnktdmFsLXdpdGgtc3RyaW5nLXJlcGxhY2Ut
YW5kLXRyYW5zaXRpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxNC42NzE3Ky0wLjI0OTkgICAgID8gICAgIDE0LjY5MjQrLTAuNzE1MiAg
ICAgICAgPwogICB2YXJhcmdzLXN0cmljdC1tb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEwLjg4NTArLTEuMTU5MCAgICAgICAgICAgMTAuNTYzOCstMC42Mzk5ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDMwNHggZmFzdGVyCiAgIGxvdHMtb2YtZmllbGRzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTIuOTk0NystMC44MzkyICAgICA/ICAgICAxMy42Nzk5Ky0yLjkx
MjcgICAgICAgID8gbWlnaHQgYmUgMS4wNTI3eCBzbG93ZXIKICAgdGVhci1vZmYtYXJndW1lbnRz
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC45NzM4Ky0wLjg2MDkgICAgID8gICAg
ICA1LjA3NjYrLTEuMjE3NSAgICAgICAgPyBtaWdodCBiZSAxLjAyMDd4IHNsb3dlcgogICBpcy1h
cnJheS1mb3ItbWl4ZWQtY2FzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjQwOTIrLTAu
ODk2NSAgICAgICAgICAgIDguMDc3NSstMS4yMTA4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQxMXgg
ZmFzdGVyCiAgIHNpbmthYmxlLW5ldy1vYmplY3QtdGFrZW4gICAgICAgICAgICAgICAgICAgICAg
ICAgNDQuODMxMCstMi43Mzk3ICAgICAgICAgICA0Mi4xMTQ0Ky0wLjU4OTggICAgICAgICAgbWln
aHQgYmUgMS4wNjQ1eCBmYXN0ZXIKICAgZG91YmxlLXRvLXVpbnQzMi10eXBlZC1hcnJheS1uby1p
bmxpbmUgICAgICAgICAgICAgNC4xNjg1Ky0wLjQzNTEgICAgID8gICAgICA0LjUyNDkrLTAuNDU1
MiAgICAgICAgPyBtaWdodCBiZSAxLjA4NTV4IHNsb3dlcgogICBzdHJpbmctY29uY2F0LWxvbmcg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU0LjE3NDUrLTEuMDI0MCAgICAgPyAgICAg
NjQuNzkzNistMjAuMDI1MiAgICAgICA/IG1pZ2h0IGJlIDEuMTk2MHggc2xvd2VyCiAgIGdldC1i
eS1pZC1iaW1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uLXNpbXBsZSAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjAzNjAr
LTAuMjQyMCAgICAgPyAgICAgIDQuMDk2MistMC4yMjAwICAgICAgICA/IG1pZ2h0IGJlIDEuMDE0
OXggc2xvd2VyCiAgIGFycm93ZnVuY3Rpb24tY2FsbC1pbi1mdW5jdGlvbiAgICAgICAgICAgICAg
ICAgICAgMTQuOTMxMSstMC4zMTUyICAgICA/ICAgICAxNC45MzQ0Ky0wLjM5OTkgICAgICAgID8K
ICAgb2J2aW91c2x5LWVsaWRhYmxlLW5ldy1vYmplY3QgICAgICAgICAgICAgICAgICAgICAxOS42
MjI5Ky0wLjQzOTkgICAgID8gICAgIDE5Ljg5ODQrLTAuMjg2NSAgICAgICAgPyBtaWdodCBiZSAx
LjAxNDB4IHNsb3dlcgogICBpcy1udW1iZXItZm9sZC10cmlja3kgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA1LjA3MDMrLTAuNjExNyAgICAgICAgICAgIDQuODU2MSstMC4xNzk4ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDQ0MXggZmFzdGVyCiAgIGdldC1ieS1pZC1jaGVjay1zdHJ1Y3R1cmUt
ZWxpbWluYXRpb24gICAgICAgICAgICAgIDUuNDE1OCstMC41NDk2ICAgICAgICAgICAgNS4zNTQz
Ky0wLjI4NjcgICAgICAgICAgbWlnaHQgYmUgMS4wMTE1eCBmYXN0ZXIKICAgZm9sZC1tdWx0aS1w
dXQtYnktb2Zmc2V0LXRvLXJlcGxhY2Utb3ItdHJhbnNpdGlvbi1wdXQtYnktb2Zmc2V0ICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuMTUw
OSstMC45MzA0ICAgICA/ICAgICAxMS4yMTQ3Ky0wLjg4MDYgICAgICAgID8KICAgb2J2aW91cy1z
aW5rLXBhdGhvbG9neSAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNi40MjQ5Ky04LjIyNjUg
ICAgICAgICAgIDIyLjAzNTgrLTAuMzYwNiAgICAgICAgICBtaWdodCBiZSAxLjE5OTJ4IGZhc3Rl
cgogICBsYXJnZS1pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2
LjA5NDErLTEuMzY0MSAgICAgICAgICAgMTUuMTM0NCstMC40NjQzICAgICAgICAgIG1pZ2h0IGJl
IDEuMDYzNHggZmFzdGVyCiAgIHN0cmluZy1yZXBlYXQtcmVzb2x2aW5nLW5vLWlubGluZSAgICAg
ICAgICAgICAgICAgMzUuNTM2OCstMS43MzA0ICAgICA/ICAgICAzNi40NzU1Ky0xLjA4MTkgICAg
ICAgID8gbWlnaHQgYmUgMS4wMjY0eCBzbG93ZXIKICAgb2JqZWN0LWtleXMtbWFwLXZhbHVlcyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA3MC41MDk0Ky00LjYzNjYgICAgICAgICAgIDY3Ljc4
MTArLTEuNDM1NyAgICAgICAgICBtaWdodCBiZSAxLjA0MDN4IGZhc3RlcgogICBkZXN0cnVjdHVy
aW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbiAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjgwMDgrLTAuMDM1OSAgICAg
PyAgICAgIDAuODA4OCstMC4wNjMwICAgICAgICA/IG1pZ2h0IGJlIDEuMDEwMXggc2xvd2VyCiAg
IGdldF9jYWxsZWVfcG9seW1vcnBoaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNjM4
NistMC42MTM4ICAgICAgICAgICAgNC42MjQwKy0wLjcxMDggICAgICAgIAogICBkZXN0cnVjdHVy
aW5nLXN3YXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2Ljk4NjQrLTAuNzE0NyAg
ICAgPyAgICAgIDcuMTc3MSstMS42MzQ2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI3M3ggc2xvd2Vy
CiAgIGVsaWRhYmxlLW5ldy1vYmplY3Qtcm9mbGNvcHRlciAgICAgICAgICAgICAgICAgICAgMjYu
NDI1MSstMC45NDc4ICAgICA/ICAgICAyNi41MTg2Ky0xLjA1ODkgICAgICAgID8KICAgc3RyaW5n
LWdldC1ieS12YWwtb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgNy43Njg0Ky0wLjk3
NzEgICAgICAgICAgICA3LjA5MTYrLTAuNzEzOCAgICAgICAgICBtaWdodCBiZSAxLjA5NTR4IGZh
c3RlcgogICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1p
Z25vcmVDYXNlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAuNzA2OSstMC4xMTYwICAgICAgICAgICAgMC42ODYyKy0wLjExOTcgICAgICAg
ICAgbWlnaHQgYmUgMS4wMzAxeCBmYXN0ZXIKICAgZXhpdC1sZW5ndGgtb24tcGxhaW4tb2JqZWN0
ICAgICAgICAgICAgICAgICAgICAgICAxNC42OTIwKy0wLjI4ODYgICAgID8gICAgIDE1LjEyNTEr
LTEuODk1NyAgICAgICAgPyBtaWdodCBiZSAxLjAyOTV4IHNsb3dlcgogICBvYmplY3QtaW50LXN1
Yi1hcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1LjE3MDYrLTAuNjA5OSAgICAg
PyAgICAgMTYuNjUxNystMy44NDAwICAgICAgICA/IG1pZ2h0IGJlIDEuMDk3Nnggc2xvd2VyCiAg
IGZvbGQtcHV0LXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMTQ5
MistMS4yODc1ICAgICA/ICAgICAgOC40MTUzKy0yLjM0NzkgICAgICAgID8gbWlnaHQgYmUgMS4z
Njg1eCBzbG93ZXIKICAgYmlnc3dpdGNoLWluZGlyZWN0LXN5bWJvbCAgICAgICAgICAgICAgICAg
ICAgICAgICA5NS4yMTQ3Ky0xLjQ4NTcgICAgICAgICAgIDk0LjQ3NTYrLTEuMjIyMiAgICAgICAg
CiAgIHBvbHltb3JwaGljLXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTcu
NTM4NSstMS4xMTY4ICAgICAgICAgICAxNi44NzY0Ky0wLjYxMjUgICAgICAgICAgbWlnaHQgYmUg
MS4wMzkyeCBmYXN0ZXIKICAgZm9sZC1wdXQtYnktdmFsLXdpdGgtc3RyaW5nLXRvLW11bHRpLXB1
dC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxNS44NTc2Ky0zLjU3MjIgICAgICAgICAgIDEzLjI5ODIrLTEuNTk0MiAgICAg
ICAgICBtaWdodCBiZSAxLjE5MjV4IGZhc3RlcgogICBmb3Itb2YtaXRlcmF0ZS1hcnJheS1lbnRy
aWVzICAgICAgICAgICAgICAgICAgICAgIDEzLjA3OTArLTEuMjExNyAgICAgPyAgICAgMTMuNTE3
MystMS4wMTQwICAgICAgICA/IG1pZ2h0IGJlIDEuMDMzNXggc2xvd2VyCiAgIGZha2UtaXRlcmF0
b3JzLXRoYXQtdGhyb3ctd2hlbi1maW5pc2hlZCAgICAgICAgICAxNjEuNzkzNSstNTYuMDk0NSAg
ICAhICAgIDI0OC4wNDg2Ky0yLjc2NDIgICAgICAgICEgZGVmaW5pdGVseSAxLjUzMzF4IHNsb3dl
cgogICBpcy1vYmplY3Qtb3ItbnVsbC10cmlja3ktaW50ZXJuYWwtZnVuY3Rpb24gICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC4yOTA0Ky0w
LjY1NzEgICAgICAgICAgICA5Ljk2ODArLTAuNDIxNSAgICAgICAgICBtaWdodCBiZSAxLjAzMjN4
IGZhc3RlcgogICBzdHJpbmctdGVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA0LjY0MDkrLTAuNDAxOCAgICAgICAgICAgIDQuNDY5MystMC42ODc4ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDM4NHggZmFzdGVyCiAgIHN0cmluZ2FsbG9jICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxMTYuNzU3NSstMC45OTIwICAgICA/ICAgIDExNy44NjU5Ky0yLjYy
MzcgICAgICAgID8KICAgcG9seS1jaGFpbi1hY2Nlc3Mtc2ltcGxlciAgICAgICAgICAgICAgICAg
ICAgICAgICAgNC4wODQ4Ky0wLjE2MDYgICAgID8gICAgICA0LjIwODIrLTAuMjc5MCAgICAgICAg
PyBtaWdodCBiZSAxLjAzMDJ4IHNsb3dlcgogICBkaXJlY3QtYXJndW1lbnRzLXBvc3NpYmx5LW92
ZXJyaWRkZW4tbGVuZ3RoICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMTEuMDM2MistMC45NDI5ICAgICA/ICAgICAxMS40NDQ5Ky0wLjY4NDEg
ICAgICAgID8gbWlnaHQgYmUgMS4wMzcweCBzbG93ZXIKICAgZ2xvYmFsLWNvZGUtZnRsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ni44MDA1Ky0xLjQ3NjkgICAgID8gICAgIDQ2
Ljk1NjArLTEuNDIxNSAgICAgICAgPwogICBmdGwtcG9seW1vcnBoaWMtYml0eG9yICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTgxLjM0MTArLTQuNTg4MiAgICAgICAgICAxNzguODY0MistMi4w
MjE0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzOHggZmFzdGVyCiAgIHB1dC1ieS12YWwtZGlyZWN0
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNjI4NCstMC4wMzYyICAgICAgICAg
ICAgMC42MTUzKy0wLjAzNTQgICAgICAgICAgbWlnaHQgYmUgMS4wMjEyeCBmYXN0ZXIKICAgcHV0
LWJ5LXZhbC13aXRoLXN5bWJvbC1yZXBsYWNlLWFuZC10cmFuc2l0aW9uICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQuODA2NCstMC43Njc1
ICAgICA/ICAgICAxNC44Mzk3Ky0wLjY2NTIgICAgICAgID8KICAgY2FwdHVyZWQtYXNzaWdubWVu
dHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC43MDQ5Ky0wLjA1NjIgICAgICAgICAg
ICAwLjY4NjIrLTAuMDQxNSAgICAgICAgICBtaWdodCBiZSAxLjAyNzF4IGZhc3RlcgogICBjYWxs
LW9yLW5vdC1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQxLjU2NjMrLTIu
MDc5NSAgICAgICAgICAgNDEuMjU2NystMS4yMDQwICAgICAgICAKICAgZnRsLXBvbHltb3JwaGlj
LXVyc2hpZnQgICAgICAgICAgICAgICAgICAgICAgICAgIDI1Ny43ODA1Ky00OC43OTc0ICAgICAg
ICAgMjM4LjMxMjkrLTQuMDY2MCAgICAgICAgICBtaWdodCBiZSAxLjA4MTd4IGZhc3RlcgogICBt
YXJzYWdsaWEtbGFyZ2VyLWludHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg5Ljg1MTMr
LTIuNzkwMyAgICAgICAgICAgODYuNDMyNistMS4yNDk1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM5
NnggZmFzdGVyCiAgIGlzLWZ1bmN0aW9uLWZvbGQtdHJpY2t5LWludGVybmFsLWZ1bmN0aW9uICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUu
NTk1MistMy4xNjM0ICAgICAgICAgICAxMy43OTM1Ky0wLjU2NTAgICAgICAgICAgbWlnaHQgYmUg
MS4xMzA2eCBmYXN0ZXIKICAgbWF0aC10cnVuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOC41MzgzKy0wLjk0MTggICAgID8gICAgICA4LjY1OTgrLTAuOTk3NiAgICAg
ICAgPyBtaWdodCBiZSAxLjAxNDJ4IHNsb3dlcgogICBvYmplY3QtaW50LWFuZC1hcnJheSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjQyOTcrLTAuNjQyNyAgICAgPyAgICAgMTIuNTMw
MistMC42MTU5ICAgICAgICA/CiAgIGRvdWJsZS1wb2xsdXRpb24tcHV0YnlvZmZzZXQgICAgICAg
ICAgICAgICAgICAgICAgIDYuMjEwOSstMC45MTEyICAgICAhICAgICA0MS43NTk2Ky0yLjI1MzQg
ICAgICAgICEgZGVmaW5pdGVseSA2LjcyMzZ4IHNsb3dlcgogICBhc3NpZ24tY3VzdG9tLXNldHRl
ci1wb2x5bW9ycGhpYyAgICAgICAgICAgICAgICAgICA1Ljk4OTUrLTAuNDI2MSAgICAgPyAgICAg
IDYuMjI5MystMC41MjgyICAgICAgICA/IG1pZ2h0IGJlIDEuMDQwMHggc2xvd2VyCiAgIG1vZC1i
b29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuMTI5NCstMC40
OTgyICAgICAgICAgICAgOS42ODY0Ky0wLjQzNTYgICAgICAgICAgbWlnaHQgYmUgMS4wNDU3eCBm
YXN0ZXIKICAgaXMtZnVuY3Rpb24tZm9sZC10cmlja3kgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNS4xMjU4Ky0wLjM5NDUgICAgID8gICAgICA1LjMzNDErLTAuNDg0MCAgICAgICAgPyBtaWdo
dCBiZSAxLjA0MDZ4IHNsb3dlcgogICBhcHBseS1ub3QtYXBwbHkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA2LjY0MjIrLTAuNTE4OSAgICAgPyAgICAgIDYuODI1NCstMC43NDUz
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI3Nnggc2xvd2VyCiAgIEhhc2hNYXAtc3RyaW5nLXB1dC1n
ZXQtaXRlcmF0ZSAgICAgICAgICAgICAgICAgICAgMzUuODQ3MCstMS43NzA4ICAgICA/ICAgICAz
Ny43MDUwKy01LjIwNTggICAgICAgID8gbWlnaHQgYmUgMS4wNTE4eCBzbG93ZXIKICAgbXVsLWJv
b2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy45OTc5Ky0wLjM5
ODcgICAgICAgICAgICAzLjk2MDIrLTAuMjU4NiAgICAgICAgCiAgIHNjb3BlZC1hcmd1bWVudHMt
b3ZlcnJpZGRlbi1sZW5ndGggICAgICAgICAgICAgICAgMTEuNzA3MistMi4wMDY1ICAgICAgICAg
ICAxMS4wODA5Ky0wLjYzNDAgICAgICAgICAgbWlnaHQgYmUgMS4wNTY1eCBmYXN0ZXIKICAgaW5m
ZXItb25lLXRpbWUtY2xvc3VyZS10d28tdmFycyAgICAgICAgICAgICAgICAgICAgOC43NzYxKy0w
LjY0MjggICAgID8gICAgICA5LjA2NDMrLTAuNzA4NyAgICAgICAgPyBtaWdodCBiZSAxLjAzMjh4
IHNsb3dlcgogICBzaW4tYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA5LjYwMjQrLTAuNDk0NCAgICAgICAgICAgIDkuMDQwOCstMC40ODM3ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDYyMXggZmFzdGVyCiAgIGltdWwtZG91YmxlLW9ubHkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDUuMDE4NistMC4zOTI1ICAgICA/ICAgICAgNS4zMzY4Ky0wLjY4
OTEgICAgICAgID8gbWlnaHQgYmUgMS4wNjM0eCBzbG93ZXIKICAgdG8taW50MzItYm9vbGVhbiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi4yNTMxKy0wLjU1NTcgICAgID8gICAg
IDE4LjM3NTIrLTMuNDE0NyAgICAgICAgPyBtaWdodCBiZSAxLjEzMDZ4IHNsb3dlcgogICB0cnkt
Y2F0Y2gtd29yZC1jb3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ3LjcxMTMrLTQu
Mzg3MyAgICAgPyAgICAgNDcuOTQyOSstMC43Mjg2ICAgICAgICA/CiAgIHB1dC1ieS12YWwtd2l0
aC1zeW1ib2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYuMzg5MystMC40ODQxICAgICA/
ICAgICAxNi40NzQwKy0wLjQ0MjAgICAgICAgID8KICAgZm9sZC1tdWx0aS1wdXQtYnktb2Zmc2V0
LXRvLXB1dC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNi4wMDU3Ky0wLjU2MzEgICAgID8gICAgICA2LjYwNjcrLTAuNzAx
NSAgICAgICAgPyBtaWdodCBiZSAxLjEwMDF4IHNsb3dlcgogICBzaW1wbGUtcG9seS1jYWxsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjEyNjErLTAuMjMxMiAgICAgPyAgICAg
IDIuMzUxMistMC44ODI2ICAgICAgICA/IG1pZ2h0IGJlIDEuMTA1OXggc2xvd2VyCiAgIG9idmlv
dXMtc2luay1wYXRob2xvZ3ktdGFrZW4gICAgICAgICAgICAgICAgICAgICAxMjMuODk5OCstMS43
MTQ2ICAgICA/ICAgIDEyNi4yNjMxKy03LjQ1MzMgICAgICAgID8gbWlnaHQgYmUgMS4wMTkxeCBz
bG93ZXIKICAgbWFyc2FnbGlhLW9zci1lbnRyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyMi45MzA5Ky0xLjAyNjYgICAgID8gICAgIDIzLjQ5MDIrLTEuMTE4OCAgICAgICAgPyBtaWdo
dCBiZSAxLjAyNDR4IHNsb3dlcgogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLWJpbW9ycGhpYy1j
aGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxMy4wNjY3Ky0xLjAzMTUgICAgICAgICAgIDEyLjk3
MDcrLTAuNTQxMSAgICAgICAgCiAgIGZ0bC1wb2x5bW9ycGhpYy1zdWIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyMTUuODA0NCstMy45MTYyICAgICAgICAgIDIxNS42MTU3Ky0zLjk1OTgg
ICAgICAgIAogICBtZXRob2Qtb24tbnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDI0LjQ0NDcrLTguNDg0OSAgICAgICAgICAgMjAuOTQyMystMS4xMDcyICAgICAgICAgIG1p
Z2h0IGJlIDEuMTY3MnggZmFzdGVyCiAgIGdldHRlci1yaWNoYXJkcyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxMTcuNDEyOCstOS40NTI0ICAgICAgICAgIDExNS45MDMyKy00LjQx
MDAgICAgICAgICAgbWlnaHQgYmUgMS4wMTMweCBmYXN0ZXIKICAgYXJyYXktcHJvdG90eXBlLXNv
bWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0OC4yNzg1Ky0xLjE0NzMgICAgICAgICAg
IDQ3LjE4MDErLTAuNTUyNSAgICAgICAgICBtaWdodCBiZSAxLjAyMzN4IGZhc3RlcgogICB0eXBl
ZC1hcnJheS1nZXQtc2V0LWJ5LXZhbC1wcm9maWxpbmcgICAgICAgICAgICAgIDI3LjYwMDMrLTAu
OTMxNSAgICAgPyAgICAgMjguMTg1OSstMS4wOTI1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIxMngg
c2xvd2VyCiAgIHVudHlwZWQtc3RyaW5nLWZyb20tY2hhci1jb2RlICAgICAgICAgICAgICAgICAg
ICAgMTMuOTkwNistMC42ODEyICAgICA/ICAgICAxNC44MDE5Ky0xLjgyMTYgICAgICAgID8gbWln
aHQgYmUgMS4wNTgweCBzbG93ZXIKICAgSW50MzJBcnJheS1hbGxvYyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNS4wMzkyKy0wLjA5OTEgICAgID8gICAgICA2LjMxMDQrLTEuMTgw
NyAgICAgICAgPyBtaWdodCBiZSAxLjI1MjJ4IHNsb3dlcgogICBiYXNpYy1zZXQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjU5NDkrLTUuNDcwMyAgICAgICAgICAg
MTIuNjk1MistMS42ODcxICAgICAgICAgIG1pZ2h0IGJlIDEuMTQ5NnggZmFzdGVyCiAgIHN0cmlu
Zy1yZXBlYXQtc2luZ2xlLW5vdC1yZXNvbHZpbmcgICAgICAgICAgICAgICAgMTAuMDg1MystMC4y
NDAyICAgICA/ICAgICAxMS4xMTYxKy0yLjYzNDQgICAgICAgID8gbWlnaHQgYmUgMS4xMDIyeCBz
bG93ZXIKICAgc2xvdy1jb252ZXJnZW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNC4yMjY5Ky0wLjU5NDggICAgID8gICAgICA1LjIzNTYrLTAuNDc3OSAgICAgICAgPyBtaWdo
dCBiZSAxLjIzODZ4IHNsb3dlcgogICBnZXR0ZXItcHJvdG90eXBlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA3LjExNTIrLTAuOTM2NSAgICAgPyAgICAgIDcuMjE2NSstMC42Njg5
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE0Mnggc2xvd2VyCiAgIHN0cmluZy1wcm90b3R5cGUtc2Vh
cmNoLW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNCAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjY5MjMrLTAuMDQ3OSAgICAgPyAgICAgIDAu
Njk2MSstMC4wMzc4ICAgICAgICA/CiAgIGlubGluZS1hcmd1bWVudHMtbG9jYWwtZXNjYXBlICAg
ICAgICAgICAgICAgICAgICAgIDUuNDUxNSstMC45NDM3ICAgICAgICAgICAgNS4zNjAyKy0wLjQ3
NzAgICAgICAgICAgbWlnaHQgYmUgMS4wMTcweCBmYXN0ZXIKICAgbGF6eS1hcnJheS1zcGVjaWVz
LXdhdGNocG9pbnRzICAgICAgICAgICAgICAgICAgICAyNy4yMzQ0Ky0wLjc4OTIgICAgID8gICAg
IDI4LjYyNTIrLTQuMzU5NiAgICAgICAgPyBtaWdodCBiZSAxLjA1MTF4IHNsb3dlcgogICBhcmd1
bWVudHMtb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1LjA4MjkrLTQu
MTk2OSAgICAgICAgICAgMTMuMjY5NystMC41MDQ3ICAgICAgICAgIG1pZ2h0IGJlIDEuMTM2Nngg
ZmFzdGVyCiAgIHJpY2hhcmRzLXRyeS1jYXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyODMuODA0NCstMTkuMDY2MiAgICA/ICAgIDI5MS45MTMyKy02Ljc1ODEgICAgICAgID8gbWln
aHQgYmUgMS4wMjg2eCBzbG93ZXIKICAgdG8tbnVtYmVyLW9ubHktc3RyaW5nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMi41NTY1Ky0wLjMyMjcgICAgID8gICAgICAyLjY5OTkrLTAuNTU5
MyAgICAgICAgPyBtaWdodCBiZSAxLjA1NjF4IHNsb3dlcgogICBzaW1wbGUtYWN0aXZhdGlvbi1k
ZW1vICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI3LjA2MTcrLTQuMDAxMSAgICAgICAgICAg
MjUuNDgyNSstMy42MDMxICAgICAgICAgIG1pZ2h0IGJlIDEuMDYyMHggZmFzdGVyCiAgIEZsb2F0
NjRBcnJheS10by1JbnQxNkFycmF5LXNldCAgICAgICAgICAgICAgICAgICAgNjQuMzU4OSstMS44
MzA0ICAgICAgICAgICA2My4xODY5Ky0xLjE2ODEgICAgICAgICAgbWlnaHQgYmUgMS4wMTg1eCBm
YXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMy
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAuNTk4NystMC4wNTU5ICAgICAgICAgICAgMC41NjA4Ky0wLjAyMTkgICAgICAgICAgbWlnaHQg
YmUgMS4wNjc2eCBmYXN0ZXIKICAgZ2xvYmFsLWlzTmFOICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxNi44OTY0Ky0wLjk2NzYgICAgID8gICAgIDE5Ljg5NTErLTcuNDYyNCAg
ICAgICAgPyBtaWdodCBiZSAxLjE3NzV4IHNsb3dlcgogICBvYmplY3QtaW50LWFkZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLjE1OTMrLTMuMjc3OSAgICAgICAgICAgMTku
NjAyOCstMS4yMzI0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI4NHggZmFzdGVyCiAgIGRpcmVjdC1h
cmd1bWVudHMtZ2V0Ynl2YWwgICAgICAgICAgICAgICAgICAgICAgICAgIDEuNTI3MCstMC4xNTg4
ICAgICAgICAgICAgMS40NjY1Ky0wLjEyMDQgICAgICAgICAgbWlnaHQgYmUgMS4wNDEzeCBmYXN0
ZXIKICAgc2NvcGVkLWFyZ3VtZW50cy1sZW5ndGggICAgICAgICAgICAgICAgICAgICAgICAgICAx
MS43ODg0Ky0zLjU1MTkgICAgICAgICAgIDEwLjg0NzQrLTAuODYwOCAgICAgICAgICBtaWdodCBi
ZSAxLjA4Njd4IGZhc3RlcgogICBzdHJpbmctcmVwZWF0LXNtYWxsLW5vdC1yZXNvbHZpbmcgICAg
ICAgICAgICAgICAgICA0LjgyMTUrLTEuMDM4MSAgICAgICAgICAgIDQuNjAyMSstMS4wMjM2ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDQ3N3ggZmFzdGVyCiAgIG9iamVjdC1vciAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuMjI4MistMC42NTk1ICAgICA/ICAgICAgNy4y
NDY4Ky0wLjc1NDAgICAgICAgID8KICAgaW1wbGljaXQtYmlnc3dpdGNoLWluZGlyZWN0LXN5bWJv
bCAgICAgICAgICAgICAgICA2OS41Njk5Ky0zLjg4NTkgICAgICAgICAgIDY2LjM3MzkrLTEuMjI0
OSAgICAgICAgICBtaWdodCBiZSAxLjA0ODJ4IGZhc3RlcgogICBjcmVhdGUtbG90cy1vZi1mdW5j
dGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjgxNzgrLTAuOTM0MCAgICAgPyAgICAg
MTQuMDU4OCstNS4yMTkzICAgICAgICA/IG1pZ2h0IGJlIDEuMjk5Nnggc2xvd2VyCiAgIHBvbHlt
b3JwaGljLXB1dC1ieS1pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIuNzg1MCstMC42
MjcyICAgICAgICAgICAzMi4zNjUxKy0wLjkxMTEgICAgICAgICAgbWlnaHQgYmUgMS4wMTMweCBm
YXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMt
c3RpY2t5ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuNjQ5OCstMC4wNjEwICAgICAgICAgICAgMC42MDEzKy0wLjAzNDAgICAgICAgICAg
bWlnaHQgYmUgMS4wODA4eCBmYXN0ZXIKICAgb2JqZWN0LXVyc2hpZnQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNy41OTc3Ky0wLjc1MTkgICAgID8gICAgICA3LjY3MTkrLTAu
NjE2NCAgICAgICAgPwogICBwbHVzLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAzLjYxNDYrLTAuMjcwOCAgICAgPyAgICAgIDQuMTQ4MistMS4wOTQ3ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMTQ3Nnggc2xvd2VyCiAgIG1hcC1oYXMtZ2V0LWNzZS1vcHBvcnR1bml0
eSAgICAgICAgICAgICAgICAgICAgICAxMTUuNDM4OSstNC4yOTk2ICAgICA/ICAgIDExNy4wMTYz
Ky04Ljc0NTIgICAgICAgID8gbWlnaHQgYmUgMS4wMTM3eCBzbG93ZXIKICAgcmF5dHJhY2Utd2l0
aC10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAxMy43MDM1Ky0wLjkyNDUgICAg
ID8gICAgIDE0LjQ3NDUrLTAuNzUzOCAgICAgICAgPyBtaWdodCBiZSAxLjA1NjN4IHNsb3dlcgog
ICBib3VuZC1mdW5jdGlvbi1jb25zdHJ1Y3Rpb24tcGVyZm9ybWFuY2UgICAgICAgICAgIDkyLjQ3
NTYrLTAuOTQ1NyAgICAgPyAgICAxMTAuMzA2MSstMzguMDcyNSAgICAgICA/IG1pZ2h0IGJlIDEu
MTkyOHggc2xvd2VyCiAgIG9iamVjdC1sc2hpZnQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDcuNTY0NCstMS4wMDU2ICAgICA/ICAgICAgNy42NDY5Ky0wLjUxMDcgICAgICAg
ID8gbWlnaHQgYmUgMS4wMTA5eCBzbG93ZXIKICAgc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcg
ICAgICAgICAgICAgICAgICAgICAgICAyNS4xNjE1Ky0wLjQ1NjUgICAgID8gICAgIDI1LjI0Njcr
LTAuNzI3OCAgICAgICAgPwogICBhcnJheS13aXRoLWRvdWJsZS1pbmNyZW1lbnQgICAgICAgICAg
ICAgICAgICAgICAgICA1LjA0ODArLTAuNTQ5OSAgICAgPyAgICAgIDUuNjEyMystMC44NDE4ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMTExOHggc2xvd2VyCiAgIGFycmF5LXByb3RvdHlwZS1tYXAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNDkuMTQ4NSstMi44OTA2ICAgICA/ICAgICA1MC42
MTIxKy0zLjM1OTMgICAgICAgID8gbWlnaHQgYmUgMS4wMjk4eCBzbG93ZXIKICAgc29ydGluZy1i
ZW5jaG1hcmsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNy44NjE1Ky0zLjkxODgg
ICAgICAgICAgIDI2LjMxMjgrLTEuNTE2NyAgICAgICAgICBtaWdodCBiZSAxLjA1ODl4IGZhc3Rl
cgogICBGbG9hdDMyQXJyYXktdG8tRmxvYXQ2NEFycmF5LXNldCAgICAgICAgICAgICAgICAgIDQ3
LjA2NDkrLTAuODg3MSAgICAgPyAgICAgNjIuMDg1OSstMzEuMzk3OSAgICAgICA/IG1pZ2h0IGJl
IDEuMzE5Mnggc2xvd2VyCiAgIHNwcmVhZC1sYXJnZS1hcnJheSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyMDIuODg1OCstMS43MjM5ICAgICAgICAgIDIwMi41NDQxKy0xLjMxNzQgICAg
ICAgIAogICBib3VuZC1mdW5jdGlvbi1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEzLjY5MzYrLTAuODkyMSAgICAgPyAgICAgMTMuODIwMSstMS4zNTM3ICAgICAgICA/CiAgIG5l
dy1hcnJheS1idWZmZXItcHVzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuMTUwOCst
MS4wOTEzICAgICA/ICAgICAgNy45MTcxKy0xLjEzMzQgICAgICAgID8gbWlnaHQgYmUgMS4xMDcy
eCBzbG93ZXIKICAgc3dpdGNoLXN0cmluZy1iYXNpYy12YXIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyMC40OTA3Ky0zLjYzODcgICAgICAgICAgIDE5LjA4NjErLTEuMzk4MCAgICAgICAgICBt
aWdodCBiZSAxLjA3MzZ4IGZhc3RlcgogICByZXBlYXQtbXVsdGktZ2V0LWJ5LW9mZnNldCAgICAg
ICAgICAgICAgICAgICAgICAgIDIwLjY0NjYrLTAuNDE4MCAgICAgPyAgICAgMjAuOTM5NistMC44
NDAzICAgICAgICA/IG1pZ2h0IGJlIDEuMDE0Mnggc2xvd2VyCiAgIGlzLWFycmF5LWZvci1wcm94
eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuODQ4NSstMC4zMjQ2ICAgICAgICAg
ICAgNC43Nzk2Ky0wLjMwODEgICAgICAgICAgbWlnaHQgYmUgMS4wMTQ0eCBmYXN0ZXIKICAgZG91
YmxlLWdldC1ieS12YWwtb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgOC43MTI1Ky0z
LjI5MzQgICAgICAgICAgICA2LjcxNTgrLTAuNzUwNiAgICAgICAgICBtaWdodCBiZSAxLjI5NzN4
IGZhc3RlcgogICBzdHJpbmctcHJvdG90eXBlLXNlYXJjaC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
czMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMC42NzUxKy0wLjA0MzEgICAgICAgICAgICAwLjY3MzYrLTAuMDM0MSAgICAgICAgCiAgIG1l
Z2Ftb3JwaGljLWxvYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzkuMTY5Myst
Mi43MDU5ICAgICA/ICAgICA0Mi42NDAyKy0xMy45MDY0ICAgICAgID8gbWlnaHQgYmUgMS4wODg2
eCBzbG93ZXIKICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVuLXJlZW50ZXIgICAgICAgICAgICAg
ICAgICAyOS40MzQxKy0wLjU5NTAgICAgICAgICAgIDI4Ljk4NTcrLTAuNjA4MiAgICAgICAgICBt
aWdodCBiZSAxLjAxNTV4IGZhc3RlcgogICBnZW5lcmF0b3ItZmliICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMwLjc3OTgrLTAuOTcyOCAgICAgPyAgICAgMzEuNDY4NCstMi40
MzE3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIyNHggc2xvd2VyCiAgIGZvbGQtcHV0LWJ5LWlkLXRv
LW11bHRpLXB1dC1ieS1vZmZzZXQgICAgICAgICAgICAgMTMuODc2OSstMS44NDczICAgICA/ICAg
ICAxNC4zMTk5Ky0wLjg4MjQgICAgICAgID8gbWlnaHQgYmUgMS4wMzE5eCBzbG93ZXIKICAgc3Ry
aW5nLXRyYW5zY29kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMC4yNTIyKy0w
LjY5MzYgICAgICEgICAgIDI0LjQ4ODkrLTAuMzc3NCAgICAgICAgISBkZWZpbml0ZWx5IDEuMjA5
Mnggc2xvd2VyCiAgIHdlaXJkLWlubGluaW5nLWNvbnN0LXByb3AgICAgICAgICAgICAgICAgICAg
ICAgICAgIDQuMDk0OCstMC43MDEzICAgICAgICAgICAgMy44NjQwKy0wLjc2MzEgICAgICAgICAg
bWlnaHQgYmUgMS4wNTk3eCBmYXN0ZXIKICAgc3RyY2F0LWNvbnN0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNy4wNjA2Ky0wLjY0NjIgICAgID8gICAgICA3LjQwODMrLTAu
NTE2NSAgICAgICAgPyBtaWdodCBiZSAxLjA0OTJ4IHNsb3dlcgogICBtaXNjLXN0cmljdC1lcSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMzLjAzNzMrLTE0Ljg5NjggICAgICAg
ICAgMjYuNDI4MSstMS4yMjA5ICAgICAgICAgIG1pZ2h0IGJlIDEuMjUwMXggZmFzdGVyCiAgIGdl
bmVyYXRvci13aXRoLXNldmVyYWwtdHlwZXMgICAgICAgICAgICAgICAgICAgICAxNDAuNTE3Myst
MjcuMzEyMiAgICAgICAgIDEzOS4zMDUzKy0yMi43MTE3ICAgICAgIAogICBzdHJpbmctaGFzaCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjkwNTYrLTEuMTYyNyAgICAg
ICAgICAgIDIuOTYxNystMC4xODQ5ICAgICAgICAgIG1pZ2h0IGJlIDEuMzE4N3ggZmFzdGVyCiAg
IGlzLW9iamVjdC1vci1udWxsLWZvbGQtZnVuY3Rpb25zICAgICAgICAgICAgICAgICAgIDMuODc1
NistMC4zNTU0ICAgICAgICAgICAgMy41OTU0Ky0wLjI0MzcgICAgICAgICAgbWlnaHQgYmUgMS4w
Nzc5eCBmYXN0ZXIKICAgaW5mZXItY29uc3RhbnQtZ2xvYmFsLXByb3BlcnR5ICAgICAgICAgICAg
ICAgICAgICAgNC4yODUyKy0wLjE5NjUgICAgICAgICAgICA0LjI3OTcrLTAuMjI4MSAgICAgICAg
CiAgIGNhbGwtdXNpbmctc3ByZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIu
OTU3NystMS4zMDE3ICAgICAgICAgICAxMi44NjY4Ky0wLjcyNjEgICAgICAgIAogICBpbnQ1Mi1z
cGlsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjExOTgrLTAuNjg5
MyAgICAgPyAgICAgIDcuOTYyMSstMS40ODc3ICAgICAgICA/IG1pZ2h0IGJlIDEuMTE4M3ggc2xv
d2VyCiAgIGdldHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDUuNTY1OSstMC41NDM2ICAgICAgICAgICAgNS4xOTg0Ky0wLjI4OTcgICAgICAgICAgbWlnaHQg
YmUgMS4wNzA3eCBmYXN0ZXIKICAgcGx1cy1ib29sZWFuLWFyaXRoICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMy41OTc3Ky0wLjIxNTYgICAgID8gICAgICAzLjg1MzErLTAuMzgwMSAg
ICAgICAgPyBtaWdodCBiZSAxLjA3MTB4IHNsb3dlcgogICBsYXJnZS1pbnQtY2FwdHVyZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjU2NDErLTEuMDM4NyAgICAgPyAgICAgIDUu
NjYzMistMS4wMDIxICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3OHggc2xvd2VyCiAgIHNpbmthYmxl
LW5ldy1vYmplY3QtZGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgNTEuNjAwNistMi42NDQ0
ICAgICAgICAgICA1MC41NzkyKy0xLjMyODkgICAgICAgICAgbWlnaHQgYmUgMS4wMjAyeCBmYXN0
ZXIKICAgZXZhbC1jb21wdXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAz
Mi40MTk4Ky0wLjQ0OTkgICAgID8gICAgIDMzLjczODMrLTAuODc3NiAgICAgICAgPyBtaWdodCBi
ZSAxLjA0MDd4IHNsb3dlcgogICBzd2l0Y2gtc3RyaW5nLWxlbmd0aC10b3dlci12YXIgICAgICAg
ICAgICAgICAgICAgIDIwLjI1MjQrLTMuNDUyNSAgICAgICAgICAgMTguNjI1NSstMC45Njc3ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDg3M3ggZmFzdGVyCiAgIGFycm93ZnVuY2l0b24tZGlyZWN0LWFy
Z3VtZW50cyAgICAgICAgICAgICAgICAgICAgIDEuNjI3MSstMC4zMDk3ICAgICAgICAgICAgMS41
NTA4Ky0wLjE1MzAgICAgICAgICAgbWlnaHQgYmUgMS4wNDkyeCBmYXN0ZXIKICAgaG9pc3QtbWFr
ZS1yb3BlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS42NDE4Ky0wLjMzMzUg
ICAgID8gICAgICA2LjQyNDcrLTEuMjU5MyAgICAgICAgPyBtaWdodCBiZSAxLjEzODh4IHNsb3dl
cgogICBlbXB0eS1zdHJpbmctcGx1cy1pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3
Ljc4MDIrLTIuMzQ2MiAgICAgICAgICAgIDcuNDEzNSstMS4wNTc2ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDQ5NXggZmFzdGVyCiAgIHY4LXJlZ2V4cC1zZWFyY2ggICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNjguOTE4MistMS45NDY0ICAgICAgICAgICA2OC42Mzc5Ky0xLjI2OTggICAg
ICAgIAogICBzeW1ib2wtdG9zdHJpbmd0YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA0LjU3MzkrLTEuMDQ1OSAgICAgICAgICAgIDQuMjU1MSstMC4yNjA0ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDc0OXggZmFzdGVyCiAgIHN0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMzLWdsb2JhbCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLjczNjkrLTAuMTI4MCAgICAgICAgICAgIDAuNzI5OSstMC4w
MzgwICAgICAgICAKICAgcmVnZXhwLXByb3RvdHlwZS1pcy1ub3QtaW5zdGFuY2UgICAgICAgICAg
ICAgICAgICAgMC43MDY1Ky0wLjAzMjIgICAgID8gICAgICAwLjc1NjcrLTAuMTAyNiAgICAgICAg
PyBtaWdodCBiZSAxLjA3MTB4IHNsb3dlcgogICByZWdleHAtbmVzdGVkLW5vbnplcm8tbWluLWNv
dW50ZWQtcGFyZW5zICAgICAgICAgICAwLjUxMDkrLTAuMDI5MSAgICAgPyAgICAgIDAuNTUyNCst
MC4wNDk2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDgxNHggc2xvd2VyCiAgIGluZGV4ZWQtcHJvcGVy
dGllcy1pbi1vYmplY3RzICAgICAgICAgICAgICAgICAgICAgIDUuMjIwMSstMC41ODkxICAgICAg
ICAgICAgNS4wNzAyKy0xLjUxNTAgICAgICAgICAgbWlnaHQgYmUgMS4wMjk2eCBmYXN0ZXIKICAg
aW50LW9yLW90aGVyLXN1Yi10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgOC40MTkx
Ky0wLjUwMjUgICAgID8gICAgICA5LjI3NjErLTIuMzM4NyAgICAgICAgPyBtaWdodCBiZSAxLjEw
MTh4IHNsb3dlcgogICByYXl0cmFjZS13aXRoLWVtcHR5LXRyeS1jYXRjaCAgICAgICAgICAgICAg
ICAgICAgICA4LjU2MzMrLTEuMzE2OCAgICAgPyAgICAgIDguNzI5MystMi4xMjQ5ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDE5NHggc2xvd2VyCiAgIGludC1vci1vdGhlci1tdWwtdGhlbi1nZXQtYnkt
dmFsICAgICAgICAgICAgICAgICAgIDkuNjMwNystMS40MDA2ICAgICAgICAgICAgOS4yNjA4Ky0x
LjA0NTAgICAgICAgICAgbWlnaHQgYmUgMS4wMzk5eCBmYXN0ZXIKICAgdGVtcG9yYWwtc3RydWN0
dXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi40ODY1Ky0xLjA3MjUgICAgICAg
ICAgIDE2LjQwMTErLTAuNjE4NSAgICAgICAgCiAgIHNsb3ctdGVybmFyaWVzICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTcuOTEwOCstMC45NTc0ICAgICAgICAgICAxNy4yMzg5
Ky0wLjU4MDAgICAgICAgICAgbWlnaHQgYmUgMS4wMzkweCBmYXN0ZXIKICAgYmlnc3dpdGNoLWlu
ZGlyZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1NS4wODg5Ky0xLjM3MDcgICAg
ID8gICAgIDU1LjM2OTUrLTEuNjAyNyAgICAgICAgPwogICBkaXJlY3QtYXJndW1lbnRzLWxlbmd0
aCAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjUyNTArLTAuNDY0OCAgICAgPyAgICAgMTAu
NTc1MCstMC45MzA1ICAgICAgICA/CiAgIGNlbGwtYXJndW1lbnQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQuNjQ2NSstMS4xNTc1ICAgICAgICAgICAgNC40Nzk1Ky0wLjMy
MTAgICAgICAgICAgbWlnaHQgYmUgMS4wMzczeCBmYXN0ZXIKICAgdHJ5LWNhdGNoLWdldC1ieS12
YWwtY2xvbmVkLWFyZ3VtZW50cyAgICAgICAgICAgICAgNS44MDY1Ky0wLjI4NDYgICAgID8gICAg
ICA2LjI0OTArLTAuODU5NSAgICAgICAgPyBtaWdodCBiZSAxLjA3NjJ4IHNsb3dlcgogICBzdHJp
bmctb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjAwMDUrLTAu
NTQ2MSAgICAgICAgICAgMTMuNjI3OSstMC41MTYwICAgICAgICAgIG1pZ2h0IGJlIDEuMDI3M3gg
ZmFzdGVyCiAgIGZ0bC1wb2x5bW9ycGhpYy1TdHJpbmdGcm9tQ2hhckNvZGUgICAgICAgICAgICAg
ICAgNTcuNzM1MCstMS43MTI2ICAgICAgICAgICA1NS45MzgyKy0wLjcyMTMgICAgICAgICAgbWln
aHQgYmUgMS4wMzIxeCBmYXN0ZXIKICAgYXJyYXktcHJvdG90eXBlLWZvckVhY2ggICAgICAgICAg
ICAgICAgICAgICAgICAgICA0Mi4xMTkxKy0yLjEwMzUgICAgID8gICAgIDQ4LjU2OTMrLTEwLjIw
MDQgICAgICAgPyBtaWdodCBiZSAxLjE1MzF4IHNsb3dlcgogICBzaW1wbGUtcmVnZXhwLWV4ZWMt
Zm9sZGluZy1mYWlsICAgICAgICAgICAgICAgICAgICA2LjU5NjQrLTEuNzI4NCAgICAgICAgICAg
IDUuODE0OSstMC45NDIwICAgICAgICAgIG1pZ2h0IGJlIDEuMTM0NHggZmFzdGVyCiAgIGludC1v
ci1vdGhlci1tb2QtdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgIDYuNDk4NCstMC40
MTI3ICAgICAgICAgICAgNi4xMDA0Ky0wLjMxMzUgICAgICAgICAgbWlnaHQgYmUgMS4wNjUyeCBm
YXN0ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMt
bXVsdGlsaW5lICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAuNzg4NSstMC4yMTUzICAgICAgICAgICAgMC43NzkzKy0wLjExMTUgICAgICAg
ICAgbWlnaHQgYmUgMS4wMTE4eCBmYXN0ZXIKICAgc3RyaW5nLXJlcGVhdC1ub3QtcmVzb2x2aW5n
ICAgICAgICAgICAgICAgICAgICAgICAgNi44ODExKy0yLjE4MjMgICAgICAgICAgICA2LjY0MTkr
LTEuMTk1NiAgICAgICAgICBtaWdodCBiZSAxLjAzNjB4IGZhc3RlcgogICBmdGwtbGlicmFyeS1p
bmxpbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLjU4ODcrLTAuNjA4NyAgICAg
ICAgICAgMzAuNTQwNCstMC41NjU0ICAgICAgICAKICAgcHV0LWJ5LXZhbC13aXRoLXN5bWJvbC1z
bGlnaHRseS1wb2x5bW9ycGhpYyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA1LjMwODArLTEuMjAyNyAgICAgICAgICAgIDQuNjE4MCstMC4y
NTgxICAgICAgICAgIG1pZ2h0IGJlIDEuMTQ5NHggZmFzdGVyCiAgIE51bWJlci1pc05hTiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTcuMzcyMSstMC40NTI4ICAgICAgICAg
ICAxNi45MzU5Ky0xLjE5MzMgICAgICAgICAgbWlnaHQgYmUgMS4wMjU4eCBmYXN0ZXIKICAgZ2V0
LWJ5LXZhbC13aXRoLXN5bWJvbC1xdWFkbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRp
b24tc2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDYuMzM4MSstMS41NTY3ICAgICAgICAgICAgNi4yODAzKy0xLjA2NjcgICAgICAg
IAogICB0cnktY2F0Y2gtZ2V0LWJ5LXZhbC1zY29wZWQtYXJndW1lbnRzICAgICAgICAgICAgICA3
LjU1MDcrLTEuMDYzMSAgICAgICAgICAgIDYuNjY2OSstMC43MzM3ICAgICAgICAgIG1pZ2h0IGJl
IDEuMTMyNnggZmFzdGVyCiAgIGV2YWwtY2FjaGVkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMjQuNjQ4OCstMS45MDYxICAgICA/ICAgICAyNC43ODUzKy0xLjcyMTYgICAg
ICAgID8KICAgZGlyZWN0LWNvbnN0cnVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDExMy43NTM5Ky0yLjczNDIgICAgID8gICAgMTE0LjU3NDIrLTEuNDU4OCAgICAgICAgPwogICBw
cmV2ZW50LWV4dGVuc2lvbnMtYW5kLWRvLXdvcmsgICAgICAgICAgICAgICAgICAgIDE4LjYwMDUr
LTAuNzk4MSAgICAgICAgICAgMTcuMjQyNSstMC42MzU0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDc4
OHggZmFzdGVyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVj
dHMzLWZsYWdzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAuNjg0OCstMC4wOTg1ICAgICAgICAgICAgMC42NTk3Ky0wLjA3ODYgICAgICAg
ICAgbWlnaHQgYmUgMS4wMzgweCBmYXN0ZXIKICAgZWxpZGFibGUtbmV3LW9iamVjdC10aGVuLWNh
bGwgICAgICAgICAgICAgICAgICAgICAyMy4wNTQzKy0xLjAwNTkgICAgID8gICAgIDIzLjYzOTIr
LTEuODI3OSAgICAgICAgPyBtaWdodCBiZSAxLjAyNTR4IHNsb3dlcgogICBJbnQxNkFycmF5LWFs
bG9jLWxvbmctbGl2ZWQgICAgICAgICAgICAgICAgICAgICAgIDY1Ljg2NTgrLTIuMDgwNSAgICAg
PyAgICAgNjYuNTU5OCstMi4wODk5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEwNXggc2xvd2VyCiAg
IG9iamVjdC1pbnQtbXVsLWFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQuNjI1
MistMC40NTU2ICAgICA/ICAgICAxNC43NDk1Ky0xLjIyODUgICAgICAgID8KICAgZ2xvYmFsLW9i
amVjdC1hY2Nlc3Mtd2l0aC1tdXRhdGluZy1zdHJ1Y3R1cmUgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy4zNzQyKy0xLjIwODQgICAgID8g
ICAgICA4LjAxNDkrLTEuMDk3OCAgICAgICAgPyBtaWdodCBiZSAxLjA4Njl4IHNsb3dlcgogICBs
b2FkLXZhcmFyZ3MtZWxpbWluYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgIDI1LjIwMjQr
LTYuNzIyMyAgICAgICAgICAgMjAuODU0NistMS4xOTc5ICAgICAgICAgIG1pZ2h0IGJlIDEuMjA4
NXggZmFzdGVyCiAgIG51bWJlci10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDQuNjc0MCstMC40MTA1ICAgICA/ICAgICAgNC44ODM0Ky0wLjQzMTggICAgICAgID8g
bWlnaHQgYmUgMS4wNDQ4eCBzbG93ZXIKICAgSW50MTZBcnJheS1idWJibGUtc29ydC13aXRoLWJ5
dGVMZW5ndGggICAgICAgICAgICAyNi45MjAxKy0xLjc3OTMgICAgID8gICAgIDI3Ljg3ODQrLTIu
NzEyNyAgICAgICAgPyBtaWdodCBiZSAxLjAzNTZ4IHNsb3dlcgogICBzdHJpY3Qtb3NyLWVudHJ5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjAyOTUrLTAuMzA2MyAgICAgPyAg
ICAgMTIuNzQ1OCstMC45MTcyICAgICAgICA/IG1pZ2h0IGJlIDEuMDU5NXggc2xvd2VyCiAgIGV4
dGVybmFsLWFyZ3VtZW50cy1wdXRieXZhbCAgICAgICAgICAgICAgICAgICAgICAgIDMuMjYzMist
MC4yNjA0ICAgICAgICAgICAgMy4xNTEzKy0wLjMwNDggICAgICAgICAgbWlnaHQgYmUgMS4wMzU1
eCBmYXN0ZXIKICAgZGVzdHJ1Y3R1cmluZy1hcmd1bWVudHMgICAgICAgICAgICAgICAgICAgICAg
ICAgICA0Ny4xODQ2Ky0xLjcxNzIgICAgID8gICAgIDQ3LjMyMTQrLTEuNTc1MSAgICAgICAgPwog
ICBzdHJpbmctcmVwZWF0LWFyaXRoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4LjI4
NjQrLTEuMzY4MSAgICAgPyAgICAgMjkuODI4NistNC44MTkwICAgICAgICA/IG1pZ2h0IGJlIDEu
MDU0NXggc2xvd2VyCiAgIGdlbmVyYXRvci1jcmVhdGUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEuMjYwMystMC4wOTcyICAgICA/ICAgICAgMS4yNzQwKy0wLjA5ODEgICAgICAg
ID8gbWlnaHQgYmUgMS4wMTA5eCBzbG93ZXIKICAgc2V0dGVyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNC45MjE1Ky0wLjY0ODUgICAgICAgICAgICA0LjgzNDYr
LTAuMTYwOCAgICAgICAgICBtaWdodCBiZSAxLjAxODB4IGZhc3RlcgogICBnZXRfYnlfdmFsLUlu
dDMyQXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjE2MTIrLTAuMjMzOSAgICAg
PyAgICAgIDIuMzcxNCstMC44NDkxICAgICAgICA/IG1pZ2h0IGJlIDEuMDk3M3ggc2xvd2VyCiAg
IGdldC1ieS12YWwtd2l0aC1zdHJpbmctYmltb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5h
dGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEwLjYyMTQrLTAuODYzNSAgICAgICAgICAgMTAuMzc4MCstMS4xMDk4ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDIzNXggZmFzdGVyCiAgIGFycmF5LW5vbmFycmF5LXBvbHltb3JocGljLWFjY2Vz
cyAgICAgICAgICAgICAgICAgMzAuODUxMCstMS4xNjM1ICAgICA/ICAgICAzOC41NTA3Ky0xOC40
MjcyICAgICAgID8gbWlnaHQgYmUgMS4yNDk2eCBzbG93ZXIKICAgYXJyYXktd2l0aC1kb3VibGUt
YWRkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4xOTA1Ky0xLjg5MDQgICAgICAgICAg
ICA1LjQ1MjkrLTAuMTc4MiAgICAgICAgICBtaWdodCBiZSAxLjEzNTN4IGZhc3RlcgogICBicmFu
Y2gtZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjE5MjUrLTAu
NTk2OCAgICAgICAgICAgIDUuODQ1OSstMC4zNjcyICAgICAgICAgIG1pZ2h0IGJlIDEuMDU5M3gg
ZmFzdGVyCiAgIHRvLW51bWJlci1jb25zdHJ1Y3Rvci1zdHJpbmctbnVtYmVyLXN0cmluZy1udW1i
ZXIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNC40OTQyKy0wLjI5NDQgICAgICEgICAgICA1LjU5NjArLTAuNTkxMyAgICAgICAgISBkZWZp
bml0ZWx5IDEuMjQ1Mnggc2xvd2VyCiAgIGluLW9uZS1jYXNlLWZhbHNlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTMuMTc0NCstMS40MDIyICAgICAgICAgICAxMi40NjUzKy0wLjYw
MTkgICAgICAgICAgbWlnaHQgYmUgMS4wNTY5eCBmYXN0ZXIKICAgYXJndW1lbnRzLXN0cmljdC1t
b2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MC42MjcxKy0xLjIxNTIgICAgID8gICAg
IDUwLjk4NDErLTEuMjY0NyAgICAgICAgPwogICBBcnJheUJ1ZmZlci1JbnQ4QXJyYXktYWxsb2Mt
bG9uZy1saXZlZC1idWZmZXIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAzMS40NzE3Ky0xLjYyMDAgICAgID8gICAgIDM3Ljc0NzIrLTE1LjE3
OTcgICAgICAgPyBtaWdodCBiZSAxLjE5OTR4IHNsb3dlcgogICBtYXAtcmVoYXNoICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5Ljc5NzkrLTAuOTYyMCAgICAgPyAgICAg
IDkuOTg5MistMS4xMDAyICAgICAgICA/IG1pZ2h0IGJlIDEuMDE5NXggc2xvd2VyCiAgIGJ5LXZh
bC1nZW5lcmljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNDk5NCstMC4y
MTE4ICAgICA/ICAgICAgMy43ODE4Ky0wLjg3MDQgICAgICAgID8gbWlnaHQgYmUgMS4wODA3eCBz
bG93ZXIKICAgY2FzdC1pbnQtdG8tZG91YmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNy40MjQ2Ky0wLjc1MDkgICAgID8gICAgICA3Ljk0ODIrLTEuMjg2MSAgICAgICAgPyBtaWdo
dCBiZSAxLjA3MDV4IHNsb3dlcgogICBnZXQtYnktaWQtcHJvdG8tb3Itc2VsZiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDExLjg4MzErLTAuNzMyMSAgICAgPyAgICAgMTIuMjMwMystMi4xMzk1
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI5Mnggc2xvd2VyCiAgIGZyb3VuZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQuMjYyNCstMC44NzA2ICAgICAgICAgICAx
NC4yMTQ4Ky0wLjc4NTQgICAgICAgIAogICBJbnQzMkFycmF5LWFsbG9jLWxhcmdlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDE1LjUxNzkrLTAuODczMiAgICAgICAgICAgMTQuODA2NCstMC40
NzQ1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ4MXggZmFzdGVyCiAgIGlzLXVuZGVmaW5lZC1mb2xk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNTc3NystMC4yOTQ2ICAgICA/ICAg
ICAgMy43NjE5Ky0wLjIyODAgICAgICAgID8gbWlnaHQgYmUgMS4wNTE1eCBzbG93ZXIKICAgdHJ5
LWNhdGNoLWdldC1ieS12YWwtZGlyZWN0LWFyZ3VtZW50cyAgICAgICAgICAgICAgMy4zMzA4Ky0w
LjIzMDMgICAgID8gICAgICAzLjkxOTgrLTAuOTE1MSAgICAgICAgPyBtaWdodCBiZSAxLjE3Njl4
IHNsb3dlcgogICBpbnQtb3Itb3RoZXItbWF4LXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAg
ICAgICA2LjkwNTYrLTAuOTkxOSAgICAgPyAgICAgIDcuNjMyMCstMi4yNDU4ICAgICAgICA/IG1p
Z2h0IGJlIDEuMTA1Mnggc2xvd2VyCiAgIHN3aXRjaC1jb25zdGFudCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDYuOTYzOCstMC4yNDg1ICAgICA/ICAgICAgNy41NTczKy0xLjA3
NjkgICAgICAgID8gbWlnaHQgYmUgMS4wODUyeCBzbG93ZXIKICAgcG9seS1zdHJpY3RlcSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4My43NTUxKy0xLjg1NDMgICAgID8gICAg
IDg3LjE4NTUrLTcuNTg5MCAgICAgICAgPyBtaWdodCBiZSAxLjA0MTB4IHNsb3dlcgogICBpcy1z
dHJpbmctZm9sZC10cmlja3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjkxOTYrLTAu
MjI5NSAgICAgPyAgICAgIDUuMTY3NCstMC40NzA1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDUwNHgg
c2xvd2VyCiAgIGRvdWJsZS10by11aW50MzItdHlwZWQtYXJyYXkgICAgICAgICAgICAgICAgICAg
ICAgIDQuMDkwMSstMC4yNzQ5ICAgICA/ICAgICAgNC4yMjYwKy0wLjUxNDMgICAgICAgID8gbWln
aHQgYmUgMS4wMzMyeCBzbG93ZXIKICAgYWJjLWZvcndhcmQtbG9vcC1lcXVhbCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAzMS42NTQxKy0xLjA2NzAgICAgICAgICAgIDMxLjE3MzYrLTEuMDE3
NSAgICAgICAgICBtaWdodCBiZSAxLjAxNTR4IGZhc3RlcgogICBpcy1ib29sZWFuLWZvbGQtdHJp
Y2t5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjQ1MTQrLTAuOTcxMCAgICAgPyAgICAg
IDUuNDkyMistMC41NTM4ICAgICAgICA/CiAgIGJ1aWxkLWxhcmdlLW9iamVjdCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNDQuNzI0OCstMC44MDMxICAgICA/ICAgICA0OC4zNTExKy04
LjA2NzkgICAgICAgID8gbWlnaHQgYmUgMS4wODExeCBzbG93ZXIKICAgc3RyaW5nLXJlcGVhdC1u
b3QtcmVzb2x2aW5nLW5vLWlubGluZSAgICAgICAgICAgICAgNi41MDcyKy0xLjM1NDAgICAgICAg
ICAgICA2LjExNjUrLTEuMjE4MiAgICAgICAgICBtaWdodCBiZSAxLjA2Mzl4IGZhc3RlcgogICBm
dW5jdGlvbi1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjUyNTgr
LTAuNDI4OSAgICAgPyAgICAgMTEuNjc3NSstMC42OTc1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEz
Mnggc2xvd2VyCiAgIGdldC1ieS1pZC1jaGFpbi1mcm9tLXRyeS1ibG9jayAgICAgICAgICAgICAg
ICAgICAgIDMuMjMwNSstMC4yNTIxICAgICA/ICAgICAgMy4yMzc1Ky0wLjY0MDcgICAgICAgID8K
ICAgYWJjLXNpbXBsZS1mb3J3YXJkLWxvb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAzMS4z
OTQ3Ky0xLjc0NjQgICAgID8gICAgIDMxLjU3MzkrLTAuNjExOSAgICAgICAgPwogICBnbG9iYWwt
dmFyLWNvbnN0LWluZmVyLWZpcmUtZnJvbS1vcHQgICAgICAgICAgICAgICAxLjI2MTUrLTAuMDc3
MiAgICAgPyAgICAgIDEuMjg0MistMC4wMzQ2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE4MHggc2xv
d2VyCiAgIG9iamVjdC1hbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDcuMjk0MistMC40OTAxICAgICAgICAgICAgNy4xODY1Ky0wLjUwMTQgICAgICAgICAgbWlnaHQg
YmUgMS4wMTUweCBmYXN0ZXIKICAgSW50OEFycmF5LWFsbG9jLWxvbmctbGl2ZWQgICAgICAgICAg
ICAgICAgICAgICAgICA1OS41OTEwKy0xLjU5NTggICAgID8gICAgIDYyLjIyMDUrLTExLjY0ODcg
ICAgICAgPyBtaWdodCBiZSAxLjA0NDF4IHNsb3dlcgogICBsb2dpY2FsLW5vdCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjM4MjErLTAuMzg4NyAgICAgICAgICAgIDYu
MTYzOCstMC4yMjQ4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM1NHggZmFzdGVyCiAgIGRvdWJsZS10
by1pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjUuOTY1NCstMi4yNzE2
ICAgICA/ICAgICA2Ni45MjE2Ky0xLjk2ODIgICAgICAgID8gbWlnaHQgYmUgMS4wMTQ1eCBzbG93
ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN0cmluZy1wcm90by1vci1zZWxmICAgICAgICAgICAgICAx
NC45NDk1Ky0xLjgxNjEgICAgICAgICAgIDEzLjYzNjIrLTEuOTEwMSAgICAgICAgICBtaWdodCBi
ZSAxLjA5NjN4IGZhc3RlcgogICBzdHJpbmctcHJvdG90eXBlLXNlYXJjaC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC43MjgzKy0wLjA3NzMgICAgID8gICAgICAwLjkyNTkrLTAuNTM2NiAgICAg
ICAgPyBtaWdodCBiZSAxLjI3MTR4IHNsb3dlcgogICBzdHJpbmctcmVwbGFjZS1lbXB0eSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjUwNjcrLTIuODAyNSAgICAgICAgICAgMTIuODY2
OCstMC40Mzg0ICAgICAgICAgIG1pZ2h0IGJlIDEuMTI3NXggZmFzdGVyCiAgIGFsaWFzZWQtYXJn
dW1lbnRzLWdldGJ5dmFsICAgICAgICAgICAgICAgICAgICAgICAgIDEuNTE3OCstMC4xNDgwICAg
ICA/ICAgICAgMS41MzQ5Ky0wLjEyMzYgICAgICAgID8gbWlnaHQgYmUgMS4wMTEzeCBzbG93ZXIK
ICAgYXJyb3dmdW5jdGlvbi1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi40
NDA1Ky0xLjEzMzcgICAgICAgICAgIDExLjg1NjgrLTAuNjkwOCAgICAgICAgICBtaWdodCBiZSAx
LjA0OTJ4IGZhc3RlcgogICBnZXQtYnktaWQtc2VsZi1vci1wcm90byAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEzLjMyNjcrLTIuMDQ2NCAgICAgICAgICAgMTEuNTMwNCstMC41NzUwICAgICAg
ICAgIG1pZ2h0IGJlIDEuMTU1OHggZmFzdGVyCiAgIGZ0bC1wb2x5bW9ycGhpYy1iaXRvciAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAyMjEuNjA4NCstOTkuODc1MCAgICAgICAgIDE3OC45OTM4
Ky0yLjk1MzkgICAgICAgICAgbWlnaHQgYmUgMS4yMzgxeCBmYXN0ZXIKICAgSW50MTZBcnJheS1s
b2FkLWludC1tdWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi43MDQ1Ky0wLjE4ODQgICAg
ID8gICAgICAyLjc5NjgrLTAuMjQ3NyAgICAgICAgPyBtaWdodCBiZSAxLjAzNDF4IHNsb3dlcgog
ICBldmFsLWNvZGUtZnRsLXJlZW50cnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM5LjAx
MzArLTEuMDk2MCAgICAgPyAgICAgMzkuNDYzMystMS4xNDM1ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDExNXggc2xvd2VyCiAgIGZvbGQtbXVsdGktZ2V0LWJ5LW9mZnNldC10by1nZXQtYnktb2Zmc2V0
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDguNzYwMCstMy4wMDE0ICAgICA/ICAgICAgOS4xMzg5Ky0yLjg4ODEgICAgICAgID8gbWlnaHQg
YmUgMS4wNDMzeCBzbG93ZXIKICAgYXJndW1lbnRzLW5hbWVkLWFuZC1yZWZsZWN0aXZlICAgICAg
ICAgICAgICAgICAgICAgOS4xODc3Ky0wLjgzNzcgICAgID8gICAgICA5LjU2MTIrLTEuMDUzMiAg
ICAgICAgPyBtaWdodCBiZSAxLjA0MDd4IHNsb3dlcgogICBpbmxpbmVkLXB1dC1ieS1pZC10cmFu
c2l0aW9uICAgICAgICAgICAgICAgICAgICAgIDEwLjkxNTMrLTAuNDM3MSAgICAgPyAgICAgMTEu
NTk4NystMC43MDA2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDYyNnggc2xvd2VyCiAgIHN1YnN0cmlu
Zy1jb25jYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTcuODc3MSstMS4zNDMz
ICAgICA/ICAgICA1OC45MzYyKy0yLjAzODggICAgICAgID8gbWlnaHQgYmUgMS4wMTgzeCBzbG93
ZXIKICAgaGFyZC1vdmVyZmxvdy1jaGVjay1lcXVhbCAgICAgICAgICAgICAgICAgICAgICAgICAz
My4yNzEwKy0yLjM0NDMgICAgID8gICAgIDMzLjgyMjIrLTIuMzA3MiAgICAgICAgPyBtaWdodCBi
ZSAxLjAxNjZ4IHNsb3dlcgogICBzdHJpbmctY29ucy1yZXBlYXQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA5LjI5NjkrLTAuNzMwMiAgICAgPyAgICAgIDkuMzU4MistMC44OTU5ICAg
ICAgICA/CiAgIG1hcC1mb3Itb2YgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTIuMjIyNistMy4xMTQ2ICAgICAgICAgICAxMC43NDM2Ky0wLjIyOTQgICAgICAgICAgbWln
aHQgYmUgMS4xMzc3eCBmYXN0ZXIKICAgYXJyYXktcHJvdG90eXBlLXJlZHVjZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0Mi4yNDc2Ky0xLjI4MjcgICAgID8gICAgIDQzLjk5MDUrLTMuNTAy
MCAgICAgICAgPyBtaWdodCBiZSAxLjA0MTN4IHNsb3dlcgogICBpbmZlci1jbG9zdXJlLWNvbnN0
LXRoZW4tcHV0LXRvLXNjb3BlICAgICAgICAgICAgIDI4LjgxMzMrLTAuNTI4MCAgICAgPyAgICAg
MjkuMjMxNistMS4wNzQyICAgICAgICA/IG1pZ2h0IGJlIDEuMDE0NXggc2xvd2VyCiAgIHN0cmlu
Zy1jb25jYXQtY29udmVydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODIuOTE3MCstMS45
MDQyICAgICA/ICAgICA4NS4xMDYzKy0xLjYyNDMgICAgICAgID8gbWlnaHQgYmUgMS4wMjY0eCBz
bG93ZXIKICAgdmFyYXJncy1pbmxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOS4yMDU3Ky0wLjg2MjYgICAgID8gICAgICA5LjY2MzErLTAuNjU2MyAgICAgICAgPyBtaWdo
dCBiZSAxLjA0OTd4IHNsb3dlcgogICBpbnQtb3Itb3RoZXItYWJzLXplcm8tdGhlbi1nZXQtYnkt
dmFsICAgICAgICAgICAgIDIyLjc0OTMrLTUuMjQ4OSAgICAgICAgICAgMjAuMzg0MCstMS4yMjU0
ICAgICAgICAgIG1pZ2h0IGJlIDEuMTE2MHggZmFzdGVyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLW11bHRpbGluZSAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjgzMDUrLTAuNDc5OCAgICAg
ICAgICAgIDAuNjk3MystMC4xMjgxICAgICAgICAgIG1pZ2h0IGJlIDEuMTkxMHggZmFzdGVyCiAg
IHN0cmluZy1jb25jYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAuMDA2
OSstNS40NjUyICAgICAgICAgICA0Ny4xNjUwKy0xLjY3MjEgICAgICAgICAgbWlnaHQgYmUgMS4w
NjAzeCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMS4yOTk5Ky0wLjIxMzggICAgICAgICAgICAxLjI1ODYrLTAuMTk2NSAgICAgICAgICBt
aWdodCBiZSAxLjAzMjh4IGZhc3RlcgogICBhYmMtc2ltcGxlLWJhY2t3YXJkLWxvb3AgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMyLjI1NDArLTEuNTM3MiAgICAgICAgICAgMzIuMDk5OSstMS4y
NzAwICAgICAgICAKICAgc2V0LWZvci1lYWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMy44MjYzKy0wLjMxOTkgICAgID8gICAgICAzLjk5NjQrLTAuODQ5MCAgICAgICAg
PyBtaWdodCBiZSAxLjA0NDV4IHNsb3dlcgogICBzdHJpbmctZ2V0LWJ5LXZhbC1iaWctY2hhciAg
ICAgICAgICAgICAgICAgICAgICAgICA3LjEwOTIrLTAuOTE0MSAgICAgICAgICAgIDYuMzU0Myst
MC4yMTM1ICAgICAgICAgIG1pZ2h0IGJlIDEuMTE4OHggZmFzdGVyCiAgIG1heC1ib29sZWFuICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuOTc2MSstMC4yMTU5ICAgICA/
ICAgICAgNC4wNzM4Ky0wLjU1NTQgICAgICAgID8gbWlnaHQgYmUgMS4wMjQ2eCBzbG93ZXIKICAg
dG8tbnVtYmVyLWNvbnN0cnVjdG9yLW9ubHktc3RyaW5nICAgICAgICAgICAgICAgICAgMi43OTY3
Ky0wLjM3ODEgICAgICAgICAgICAyLjQ1NzIrLTAuMTc1MSAgICAgICAgICBtaWdodCBiZSAxLjEz
ODF4IGZhc3RlcgogICBzd2l0Y2gtc3RyaW5nLWJhc2ljLWJpZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE1LjA1MDIrLTAuNzIxMSAgICAgPyAgICAgMTguODc1NystNy4zMDk4ICAgICAgICA/
IG1pZ2h0IGJlIDEuMjU0Mnggc2xvd2VyCiAgIGZ1bmN0aW9uLWRvdC1hcHBseSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDMuNjkxMSstMC4yNjk2ICAgICBeICAgICAgMy4yNDY4Ky0w
LjEzOTQgICAgICAgIF4gZGVmaW5pdGVseSAxLjEzNjl4IGZhc3RlcgogICBtdWwtYm9vbGVhbi1k
b3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjM0MTcrLTAuMjk5MSAgICAg
ICAgICAgIDQuMjUwNSstMC4xOTkxICAgICAgICAgIG1pZ2h0IGJlIDEuMDIxNXggZmFzdGVyCiAg
IGRvdWJsZS1yZWFsLXVzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzQuNzk5
NCstMi4xMTY5ICAgICAgICAgICAzMy4zNTY3Ky0xLjQ3ODEgICAgICAgICAgbWlnaHQgYmUgMS4w
NDMzeCBmYXN0ZXIKICAgY2ZnLXNpbXBsaWZ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNC43MTA5Ky0wLjY2NzggICAgICAgICAgICA0LjM0MzArLTAuMjg0NCAgICAgICAg
ICBtaWdodCBiZSAxLjA4NDd4IGZhc3RlcgogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5nLXNlbGYt
b3ItcHJvdG8gICAgICAgICAgICAgIDE0LjE1MzgrLTEuNDQ2NyAgICAgPyAgICAgMTQuOTk2Mist
Mi4xMjYxICAgICAgICA/IG1pZ2h0IGJlIDEuMDU5NXggc2xvd2VyCiAgIGludC1vci1vdGhlci1u
ZWctemVyby10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgMTkuODgyMSstMC44Njk2ICAgICA/
ICAgICAyMC42OTM1Ky0xLjIwOTMgICAgICAgID8gbWlnaHQgYmUgMS4wNDA4eCBzbG93ZXIKICAg
c3RyaW5nLXN1YiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0OC43NTcy
Ky0xLjA4MzIgICAgICAgICAgIDQ4LjQwNzMrLTEuNDQwNyAgICAgICAgCiAgIHJlZ2V4cC1wcm90
b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbCAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjYzNjcrLTAuMDY4
NiAgICAgICAgICAgIDAuNjM0MystMC4xMDQyICAgICAgICAKICAgaW5zdGFuY2VvZi1ib3VuZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNy4zMDYyKy0wLjk0NTYgICAgID8gICAg
IDI3LjUxMDArLTEuMDY1NCAgICAgICAgPwogICBkaXJlY3QtY29uc3RydWN0LWFyaXR5LW1pc21h
dGNoICAgICAgICAgICAgICAgICAgMTMwLjQxNjkrLTIuNTM4MCAgICAgICAgICAxMzAuMDY2Myst
Mi42OTEzICAgICAgICAKICAgZGlyZWN0LXRhaWwtY2FsbC1hcml0eS1taXNtYXRjaCAgICAgICAg
ICAgICAgICAgICA5Mi4xNzc5Ky0zLjA1NTYgICAgID8gICAgMTAyLjIxOTErLTI2LjEzOTcgICAg
ICAgPyBtaWdodCBiZSAxLjEwODl4IHNsb3dlcgogICBzdWJzdHJpbmcgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDY5LjQ1MTIrLTAuNTIwOSAgICAgPyAgICAgNzIuMjMw
NCstNC45MzIyICAgICAgICA/IG1pZ2h0IGJlIDEuMDQwMHggc2xvd2VyCiAgIHN0cmluZy1mcm9t
LWNoYXItY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguODQwMistMC42OTc3ICAg
ICA/ICAgICAgOC45MDMyKy0wLjc5MzcgICAgICAgID8KICAgdW5kZWZpbmVkLXRlc3QgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC44MzQ1Ky0wLjEwOTcgICAgICAgICAgICA0
LjY3NTQrLTAuMzI0NCAgICAgICAgICBtaWdodCBiZSAxLjAzNDB4IGZhc3RlcgogICBzdHJpbmct
cmVwZWF0LXJlc29sdmluZy1maXhlZCAgICAgICAgICAgICAgICAgICAgIDI2LjI2MjkrLTAuODYw
MiAgICAgPyAgICAgMjYuNjU2OSstMS4wOTQ4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE1MHggc2xv
d2VyCiAgIGludGVnZXItZGl2aWRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MTIuNTgzNistMC40NTgxICAgICA/ICAgICAxMy42NTAxKy0wLjcxMzAgICAgICAgID8gbWlnaHQg
YmUgMS4wODQ4eCBzbG93ZXIKICAgZGlyZWN0LWFyZ3VtZW50cy1vdmVycmlkZGVuLWxlbmd0aCAg
ICAgICAgICAgICAgICAxMC42MDg1Ky0wLjY4NDQgICAgICAgICAgIDEwLjEyMDUrLTAuNTQ1MSAg
ICAgICAgICBtaWdodCBiZSAxLjA0ODJ4IGZhc3RlcgogICBzdHJ1Y3R1cmUtaG9pc3Qtb3Zlci10
cmFuc2l0aW9ucyAgICAgICAgICAgICAgICAgICA0Ljc1MDgrLTEuNTkxNyAgICAgICAgICAgIDMu
Njg5OCstMC4yOTYzICAgICAgICAgIG1pZ2h0IGJlIDEuMjg3NXggZmFzdGVyCiAgIGludC1vci1v
dGhlci1hZGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuMzY1NSstMC44MDEx
ICAgICAgICAgICAgNy4wNDE0Ky0wLjU4NzYgICAgICAgICAgbWlnaHQgYmUgMS4wNDYweCBmYXN0
ZXIKICAgRmxvYXQzMkFycmF5LW1hdHJpeC1tdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
OC4zNzE4Ky0wLjk5NDUgICAgICAgICAgICA3LjkwNTUrLTAuOTA1OSAgICAgICAgICBtaWdodCBi
ZSAxLjA1OTB4IGZhc3RlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzMy1pZ25vcmVDYXNlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAuNjkyNCstMC4wMjE2ICAgICA/ICAgICAgMC44MDE3Ky0w
LjE4NDEgICAgICAgID8gbWlnaHQgYmUgMS4xNTc5eCBzbG93ZXIKICAgc2lua2FibGUtbmV3LW9i
amVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMy40MDEyKy0xLjg1ODYgICAgID8g
ICAgIDI0LjQxMjQrLTUuMDgyOCAgICAgICAgPyBtaWdodCBiZSAxLjA0MzJ4IHNsb3dlcgogICBl
eHRlcm5hbC1hcmd1bWVudHMtZ2V0Ynl2YWwgICAgICAgICAgICAgICAgICAgICAgICAyLjAzMDIr
LTAuNjI1NSAgICAgICAgICAgIDEuNjc0OCstMC4xNjU3ICAgICAgICAgIG1pZ2h0IGJlIDEuMjEy
MnggZmFzdGVyCiAgIGNhbGwtc3ByZWFkLWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMzQuNTg3MSstMS40NTc3ICAgICAgICAgICAzMy42OTU0Ky0xLjE4MTcgICAgICAgICAg
bWlnaHQgYmUgMS4wMjY1eCBmYXN0ZXIKICAgaG9pc3QtcG9seS1jaGVjay1zdHJ1Y3R1cmUgICAg
ICAgICAgICAgICAgICAgICAgICAgMy42NTE5Ky0wLjYwOTYgICAgICAgICAgICAzLjU2NDYrLTAu
NjMyMiAgICAgICAgICBtaWdodCBiZSAxLjAyNDV4IGZhc3RlcgogICBjb25jYXQtYXBwZW5kLW9u
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjY3MzIrLTEuMjg2NyAgICAgPyAg
ICAgMTIuNzAwMCstNC4yODE3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDg4MHggc2xvd2VyCiAgIHN0
cmluZy1jb25jYXQtb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMTQxMist
MS4yMDU0ICAgICAgICAgICAgMy4zMjk4Ky0wLjMzODAgICAgICAgICAgbWlnaHQgYmUgMS4yNDM3
eCBmYXN0ZXIKICAgcHV0LWJ5LXZhbC13aXRoLXN0cmluZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxNi43Mjk3Ky0wLjU2ODcgICAgID8gICAgIDE2LjkzODQrLTAuMjg4OSAgICAgICAgPyBt
aWdodCBiZSAxLjAxMjV4IHNsb3dlcgogICBkaXYtYm9vbGVhbi1kb3VibGUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA1Ljc4NzIrLTAuMjkwNSAgICAgPyAgICAgIDUuODAzNCstMC4z
MzIyICAgICAgICA/CiAgIGZ0bC1saWJyYXJ5LWlubGluaW5nLWRhdGF2aWV3ICAgICAgICAgICAg
ICAgICAgICAxMDAuMjc3MystMi4wNjAwICAgICA/ICAgIDEwMy4yMzkxKy0zLjcxNjYgICAgICAg
ID8gbWlnaHQgYmUgMS4wMjk1eCBzbG93ZXIKICAgQXJyYXlCdWZmZXItRGF0YVZpZXctYWxsb2Mt
bGFyZ2UtbG9uZy1saXZlZCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDY5LjE4MDArLTIuNDUxOCAgICAgICAgICAgNjcuMzUwMystMi43MzY2
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI3MnggZmFzdGVyCiAgIG5lZ2F0aXZlLXplcm8tbmVnYXRl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNjE4MSstMC4wMzk5ICAgICA/ICAgICAg
MC42NzUwKy0wLjE1MjggICAgICAgID8gbWlnaHQgYmUgMS4wOTIweCBzbG93ZXIKICAgdHlwZWQt
YXJyYXktc3ViYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MC4wMjc2Ky0zMS4x
MDA2ICAgICAgICAgIDU4LjA4NjYrLTMxLjEwODQgICAgICAgICBtaWdodCBiZSAxLjAzMzR4IGZh
c3RlcgogICBjYWxsLXNwcmVhZC1hcHBseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDM2LjM4NDMrLTEuMTc5OCAgICAgICAgICAgMzUuNjY2NystMS4xMDkyICAgICAgICAgIG1pZ2h0
IGJlIDEuMDIwMXggZmFzdGVyCiAgIGlzLXN5bWJvbC1taXhlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDguNDk2NistMi4wNTU0ICAgICAgICAgICAgNy4xODk3Ky0xLjMyOTAg
ICAgICAgICAgbWlnaHQgYmUgMS4xODE4eCBmYXN0ZXIKICAgcHV0LWJ5LWlkLXRyYW5zaXRpb24t
d2l0aC1pbmRleGluZy1oZWFkZXIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxOC44OTk2Ky0yLjgxNDMgICAgID8gICAgIDIwLjA5MDYrLTYu
MjQ0MyAgICAgICAgPyBtaWdodCBiZSAxLjA2MzB4IHNsb3dlcgogICByZXN0LXBhcmFtZXRlci1j
b25zdHJ1Y3Rpb24tcGVyZm9ybWFuY2UgICAgICAgICAgIDI5LjkzODErLTAuNzU0OSAgICAgICAg
ICAgMjkuODIzNSstMC40MDEwICAgICAgICAKICAgc2VhbC1hbmQtZG8td29yayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxNy44MzYyKy0wLjg5NjkgICAgICAgICAgIDE3LjYxOTEr
LTAuNDE3NCAgICAgICAgICBtaWdodCBiZSAxLjAxMjN4IGZhc3RlcgogICBzdHJpbmctcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1mbGFncyAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjczODcrLTAuMDUyNyAg
ICAgPyAgICAgIDAuNzQ1NSstMC4wNDk4ICAgICAgICA/CiAgIG51bWJlci10by1zdHJpbmctd2l0
aC1hZGQtaW4tbG9vcCAgICAgICAgICAgICAgICAgMTEuODk3MystMC40NTIyICAgICA/ICAgICAx
Mi40NzI3Ky0wLjUzMjQgICAgICAgID8gbWlnaHQgYmUgMS4wNDg0eCBzbG93ZXIKICAgcG9seS1j
aGFpbi1hY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy45MDc2Ky0wLjUw
ODMgICAgID8gICAgICA0LjI1NTgrLTAuNTA4MiAgICAgICAgPyBtaWdodCBiZSAxLjA4OTF4IHNs
b3dlcgogICBBcnJheUJ1ZmZlci1JbnQ4QXJyYXktYWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAg
IDIxLjgwMTgrLTAuNzAzMCAgICAgPyAgICAgMjIuNTE5MSstMS40NjQzICAgICAgICA/IG1pZ2h0
IGJlIDEuMDMyOXggc2xvd2VyCiAgIGRvdWJsZS10by1pbnQzMi10eXBlZC1hcnJheS1uby1pbmxp
bmUgICAgICAgICAgICAgIDQuNzg1OSstMC43MjQwICAgICAgICAgICAgNC4yMTI2Ky0wLjM0NDAg
ICAgICAgICAgbWlnaHQgYmUgMS4xMzYxeCBmYXN0ZXIKICAgc3dpdGNoLXN0cmluZy1iaWctbGVu
Z3RoLXRvd2VyLXZhciAgICAgICAgICAgICAgICAyNi4xODA4Ky0xLjI0NjMgICAgICAgICAgIDI1
LjY0NzIrLTEuOTk4NCAgICAgICAgICBtaWdodCBiZSAxLjAyMDh4IGZhc3RlcgogICBkb3VibGUt
dG8taW50MzItdHlwZWQtYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAzLjg3NjMrLTAuNDA5
NyAgICAgPyAgICAgIDMuOTgxMistMC41MjUxICAgICAgICA/IG1pZ2h0IGJlIDEuMDI3MXggc2xv
d2VyCiAgIGhhcmQtb3ZlcmZsb3ctY2hlY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MzMuNzUzMSstMS45Mzg4ICAgICAgICAgICAzMi45Njk0Ky0yLjgzNzMgICAgICAgICAgbWlnaHQg
YmUgMS4wMjM4eCBmYXN0ZXIKICAgSW50MzJBcnJheS1hbGxvYy1sb25nLWxpdmVkICAgICAgICAg
ICAgICAgICAgICAgICA3Ni4wMTI1Ky0xLjEzNjMgICAgID8gICAgIDc2LjI1MjArLTEuNzUxOCAg
ICAgICAgPwogICBzdHJpbmctcmVwZWF0LXJlc29sdmluZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDM0LjU4MTcrLTEuMDM4NCAgICAgPyAgICAgMzYuMzAyNSstMS4zNzI5ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDQ5OHggc2xvd2VyCiAgIHBvbHltb3JwaGljLWdldC1ieS1pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMuMzIwOSstMC4zNjE0ICAgICAgICAgICAgMy4xMDkzKy0wLjI1
NDEgICAgICAgICAgbWlnaHQgYmUgMS4wNjgxeCBmYXN0ZXIKICAgc2xvdy1hcnJheS1wcm9maWxl
LWNvbnZlcmdlbmNlICAgICAgICAgICAgICAgICAgICAgMy45MjI5Ky0wLjI4NzMgICAgID8gICAg
ICA0LjQ2MjYrLTAuODM4OSAgICAgICAgPyBtaWdodCBiZSAxLjEzNzZ4IHNsb3dlcgogICBnZXQt
YnktdmFsLXdpdGgtc3RyaW5nLWNoYWluLWZyb20tdHJ5LWJsb2NrICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMjA1NCstMC40MDM4ICAg
ICA/ICAgICAgMy4yNjI1Ky0wLjI3MzggICAgICAgID8gbWlnaHQgYmUgMS4wMTc4eCBzbG93ZXIK
ICAgdjgtcmF5dHJhY2Utd2l0aC1lbXB0eS10cnktY2F0Y2ggICAgICAgICAgICAgICAgICA3MC42
MDYwKy0zLjc4NjQgICAgICAgICAgIDY5LjEzMzArLTEuMjMwNiAgICAgICAgICBtaWdodCBiZSAx
LjAyMTN4IGZhc3RlcgogICBzY29wZWQtYXJndW1lbnRzLXBvc3NpYmx5LW92ZXJyaWRkZW4tbGVu
Z3RoICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTEuOTk3MystMi4yNTkxICAgICAgICAgICAxMS4wMjk0Ky0wLjU2ODIgICAgICAgICAgbWln
aHQgYmUgMS4wODc4eCBmYXN0ZXIKICAgc3dpdGNoaW5nLXNpemUtY2xhc3NlcyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0Mi4wMzU1Ky0yLjAwNzIgICAgICAgICAgIDQwLjg3NjMrLTEuODYx
OSAgICAgICAgICBtaWdodCBiZSAxLjAyODR4IGZhc3RlcgogICBGbG9hdDY0QXJyYXktYWxsb2Mt
bG9uZy1saXZlZCAgICAgICAgICAgICAgICAgICAgIDkyLjQ4MzgrLTIuNTg1NCAgICAgPyAgICAg
OTMuNDgwOSstMS45NDUyICAgICAgICA/IG1pZ2h0IGJlIDEuMDEwOHggc2xvd2VyCiAgIGNvbnN0
YW50LXRlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuNDc4NistMC45
OTM1ICAgICAgICAgICAgNi44NTcwKy0wLjY1NzggICAgICAgICAgbWlnaHQgYmUgMS4wOTA3eCBm
YXN0ZXIKICAgaW50LW92ZXJmbG93LWxvY2FsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNi40NTAwKy0wLjY0NjMgICAgID8gICAgICA4LjIwMTErLTIuOTc4MiAgICAgICAgPyBtaWdo
dCBiZSAxLjI3MTV4IHNsb3dlcgogICBhcnJvd2Z1bmN0aW9uLWNhbGwtaW4tY2xhc3MtY29uc3Ry
dWN0b3IgICAgICAgICAgIDI4LjI3OTIrLTAuNTU0OCAgICAgICAgICAgMjcuNjAzMSstMC42Njc0
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI0NXggZmFzdGVyCiAgIHNldHRlci1wcm90b3R5cGUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuNzM5NSstMC42MDUxICAgICAgICAgICAg
Ni42NzkxKy0wLjc2MTEgICAgICAgIAogICBuZXctYXJyYXktZGVhZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDExLjI0NTArLTEuMjI0MyAgICAgPyAgICAgMTEuODE3NCstMS4w
MDg4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDUwOXggc2xvd2VyCiAgIHN0cmluZy1yb3BlLXdpdGgt
b2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQuMDcxNistMS4wODgxICAgICAgICAg
ICAyMy45NTI0Ky0xLjUyMTcgICAgICAgIAogICB0by1udW1iZXItY29uc3RydWN0b3ItbnVtYmVy
LXN0cmluZy1udW1iZXItc3RyaW5nICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDUuOTI2MSstMS42Mzg1ICAgICAgICAgICAgNS41MDg1Ky0w
LjU5OTQgICAgICAgICAgbWlnaHQgYmUgMS4wNzU4eCBmYXN0ZXIKICAgYm9vbGVhbi10ZXN0ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4wODIyKy0wLjM5OTEgICAgICAg
ICAgICA0Ljc0MTgrLTAuMTgwNSAgICAgICAgICBtaWdodCBiZSAxLjA3MTh4IGZhc3RlcgogICB0
cnktZ2V0LWJ5LWlkLXBvbHltb3JwaGljICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjQzOTgr
LTEuMDU4NyAgICAgICAgICAgMTAuMTA2NystMC40MDE2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDMz
MHggZmFzdGVyCiAgIHN0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVj
dHM0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEuMDA4MystMC42MDE4ICAgICAgICAgICAgMC43MzcxKy0wLjA1MDYgICAgICAgICAgbWln
aHQgYmUgMS4zNjc5eCBmYXN0ZXIKICAgc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbCAg
ICAgICAgICAgICAgICAgICAyNi4wMTY1Ky05LjMwNTQgICAgICAgICAgIDI0LjA3NTUrLTYuODkz
OCAgICAgICAgICBtaWdodCBiZSAxLjA4MDZ4IGZhc3RlcgogICBtaW51cy1ib29sZWFuICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjAwNDErLTAuNjUzNSAgICAgICAgICAg
IDMuNTI4NCstMC4zMjA2ICAgICAgICAgIG1pZ2h0IGJlIDEuMTM0OHggZmFzdGVyCiAgIHBvbHlt
b3JwaGljLWFycmF5LWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuOTcyMSstMC4y
NTQ1ICAgICAgICAgICAgMS45NjY1Ky0wLjE1NTkgICAgICAgIAogICB0by1sb3dlci1jYXNlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQxLjU3MTArLTMuMDQ0NyAgICAgPyAg
ICAxNDEuOTQzMystMi4wNzk3ICAgICAgICA/CiAgIHRyeS1nZXQtYnktaWQtYmFzaWMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDkuMzUyNystMS4xODMzICAgICA/ICAgICAgOS44MDgy
Ky0xLjA4MDUgICAgICAgID8gbWlnaHQgYmUgMS4wNDg3eCBzbG93ZXIKICAgZW1zY3JpcHRlbi1j
dWJlMmhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMy41ODU0Ky0xLjIxMTAgICAg
ICAgICAgIDMzLjQyOTYrLTEuOTMwNCAgICAgICAgCiAgIHN0cmluZy1wcm90b3R5cGUtc3BsaXQt
b2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXN0aWNreSAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjc1NDYrLTAuMTEzOCAgICAgICAgICAg
IDAuNzQyMSstMC4wNTY3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE2OXggZmFzdGVyCiAgIGhvaXN0
LXBvbHktY2hlY2stc3RydWN0dXJlLWVmZmVjdGZ1bC1sb29wICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuOTgxMystMC41OTI0ICAgICA/
ICAgICAgNS4yODk2Ky0wLjIwMjcgICAgICAgID8gbWlnaHQgYmUgMS4wNjE5eCBzbG93ZXIKICAg
cHV0LWJ5LXZhbC1sYXJnZS1pbmRleC1ibGFuay1pbmRleGluZy10eXBlICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuODYxMistMS4yNDQ5
ICAgICA/ICAgICAxMC40OTMwKy0yLjc4MzQgICAgICAgID8gbWlnaHQgYmUgMS4wNjQxeCBzbG93
ZXIKICAgc3Vic3RyaW5nLWNvbmNhdC13ZWlyZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA1
OC44NjgwKy0xNS45NTAwICAgICAgICAgIDUzLjAzNjArLTIuNzc0MSAgICAgICAgICBtaWdodCBi
ZSAxLjExMDB4IGZhc3RlcgogICBpbmxpbmVkLXB1dC1ieS12YWwtd2l0aC1zeW1ib2wtdHJhbnNp
dGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDYxLjU3NTQrLTEuNzk2NCAgICAgICAgICAgNjEuMTczMSstMS45ODkwICAgICAgICAKICAg
c3RyaW5nLWdldC1ieS12YWwtb3V0LW9mLWJvdW5kcy1pbnNhbmUgICAgICAgICAgICAgNS43MDA3
Ky0wLjM4NjUgICAgICAgICAgICA1LjY5NjYrLTAuMzgzMSAgICAgICAgCiAgIHJlZ2V4cC1wcm90
b3R5cGUtdGVzdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC41OTg1Ky0wLjAzNTEgICAgID8g
ICAgICAwLjYyMTUrLTAuMTAwOCAgICAgICAgPyBtaWdodCBiZSAxLjAzODN4IHNsb3dlcgogICBw
dXQtYnktaWQtcmVwbGFjZS1hbmQtdHJhbnNpdGlvbiAgICAgICAgICAgICAgICAgICA5LjE3MjYr
LTAuOTM2OCAgICAgICAgICAgIDguNjUyNistMC4zMTE2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDYw
MXggZmFzdGVyCiAgIG5lZ2F0aXZlLXplcm8tZGl2aWRlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuNzMzNistMC4xNDg1ICAgICAgICAgICAgMC42MzEwKy0wLjAxODkgICAgICAgICAg
bWlnaHQgYmUgMS4xNjI2eCBmYXN0ZXIKICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVuLXJlZW50
ZXItbm8taW5saW5lICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNDkuODI1MistMi4zOTgxICAgICAgICAgICA0OS4wNjUyKy0xLjU5NTUgICAg
ICAgICAgbWlnaHQgYmUgMS4wMTU1eCBmYXN0ZXIKICAgc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRp
bmctZmFpbC13aXRoLWhvaXN0ZWQtcmVnZXhwICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMuMzgxNistMS4yMjY2ICAgICA/ICAgICAxMy41
NDM5Ky0xLjIyMjcgICAgICAgID8gbWlnaHQgYmUgMS4wMTIxeCBzbG93ZXIKICAgaW5saW5lLWFy
Z3VtZW50cy1hY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi44MDY3Ky0xLjQxNTkg
ICAgICAgICAgICA2LjE3NjMrLTEuMDg0NSAgICAgICAgICBtaWdodCBiZSAxLjEwMjF4IGZhc3Rl
cgogICBkZWxheS10ZWFyLW9mZi1hcmd1bWVudHMtc3RyaWN0bW9kZSAgICAgICAgICAgICAgIDEw
LjEzMDErLTEuMTE4NSAgICAgICAgICAgIDkuNDAxOCstMS4wNzY5ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDc3NXggZmFzdGVyCiAgIEludDMyQXJyYXktSW50OEFycmF5LXZpZXctYWxsb2MgICAgICAg
ICAgICAgICAgICAgMTIuMzM2MistMC44NzYxICAgICA/ICAgICAxMy44MDk0Ky0yLjQxNjggICAg
ICAgID8gbWlnaHQgYmUgMS4xMTk0eCBzbG93ZXIKICAgcHJvdG8tZ2V0dGVyLWFjY2VzcyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxNS40ODA1Ky0xLjAxODkgICAgID8gICAgIDE2LjAy
MzMrLTEuODE2MyAgICAgICAgPyBtaWdodCBiZSAxLjAzNTF4IHNsb3dlcgogICBwb2x5bW9ycGhp
Yy1wdXQtYnktdmFsLXdpdGgtc3ltYm9sICAgICAgICAgICAgICAgIDM1LjIwMzErLTMuNTAzNiAg
ICAgICAgICAgMzQuNDc0NystMi41NDM2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIxMXggZmFzdGVy
CiAgIHN0cmluZy1sb25nLWlkZW50LWVxdWFsaXR5ICAgICAgICAgICAgICAgICAgICAgICAgMjUu
OTkwMCstMS4wNzgxICAgICA/ICAgICAyNi41MzE3Ky0xLjE3MzIgICAgICAgID8gbWlnaHQgYmUg
MS4wMjA4eCBzbG93ZXIKICAgcmVnZXhwLWV4ZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA1Ni42OTk3Ky0yLjI1NjIgICAgICAgICAgIDUzLjk5NTArLTEuMDU0NyAgICAg
ICAgICBtaWdodCBiZSAxLjA1MDF4IGZhc3RlcgogICBmb2xkLW11bHRpLXB1dC1ieS1vZmZzZXQt
dG8tcG9seS1wdXQtYnktb2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDcuMjIyNCstMC44MzY2ICAgICA/ICAgICAgOC4wNzY2Ky0x
Ljk0MDcgICAgICAgID8gbWlnaHQgYmUgMS4xMTgzeCBzbG93ZXIKICAgY3NlLW5ldy1hcnJheSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4zMTY3Ky0wLjcxODUgICAgICAg
ICAgICA0LjE1NjcrLTAuMzIzOCAgICAgICAgICBtaWdodCBiZSAxLjAzODV4IGZhc3RlcgogICBt
YXAta2V5LXdlbGwtdHlwZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEzLjcyMzQr
LTcuNTAxNSAgICAgICAgICAxMTMuMTA1NistMy45ODQ5ICAgICAgICAKICAgZ2V0LWJ5LXZhbC13
aXRoLXN0cmluZy1iaW1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uLXNpbXBsZSAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
LjQ1MjErLTAuNTc2MyAgICAgPyAgICAgIDUuNTU3MSstMi4xMzA0ICAgICAgICA/IG1pZ2h0IGJl
IDEuMjQ4Mnggc2xvd2VyCiAgIGlzLW9iamVjdC1vci1udWxsLWZvbGQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQuMDMxOCstMC43MTk4ICAgICAgICAgICAgNC4wMDczKy0wLjQzMDIgICAg
ICAgIAogICBhcnJheS1hY2Nlc3MtcG9seW1vcnBoaWMtc3RydWN0dXJlICAgICAgICAgICAgICAg
ICA2LjQzOTArLTEuMzEwOSAgICAgICAgICAgIDYuMDM0NSstMS4wMzE3ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDY3MHggZmFzdGVyCiAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wtYmltb3JwaGljLWNo
ZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC45NDI0Ky0wLjQ3NzYgICAgID8gICAg
ICA1LjA3MTkrLTEuMTI5NiAgICAgICAgPyBtaWdodCBiZSAxLjAyNjJ4IHNsb3dlcgogICBnY3Nl
LXBvbHktZ2V0LWxlc3Mtb2J2aW91cyAgICAgICAgICAgICAgICAgICAgICAgIDIxLjA0NTIrLTEu
NTQ5OCAgICAgICAgICAgMjAuMTk1MystMC42MzY2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQyMXgg
ZmFzdGVyCiAgIGJpZ3N3aXRjaC1pbmRpcmVjdC1zeW1ib2wtb3ItdW5kZWZpbmVkICAgICAgICAg
ICAgODcuMDY4MistMTIuOTkyOCAgICBeICAgICA0NC41OTI3Ky0xLjUzNjEgICAgICAgIF4gZGVm
aW5pdGVseSAxLjk1MjV4IGZhc3RlcgogICBvYmplY3QteG9yICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA3Ljc5MzIrLTAuODUzNyAgICAgICAgICAgIDcuMTkxNCstMC42
NzI5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDgzN3ggZmFzdGVyCiAgIHJlZ2V4cC1wcm90b3R5cGUt
c3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNjI4OCstMC4wNTc3ICAgICA/ICAgICAg
MC42ODE1Ky0wLjA3MDkgICAgICAgID8gbWlnaHQgYmUgMS4wODM4eCBzbG93ZXIKICAgYmlnLWlu
dC1tdWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4yMjk5Ky0wLjQ0
MDUgICAgICAgICAgICA1LjIxNzIrLTAuNTM0NSAgICAgICAgCiAgIGlzLXN0cmluZy1mb2xkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMDkwMistMC41NTUyICAgICAgICAg
ICAgMy44MTY0Ky0wLjEzMTAgICAgICAgICAgbWlnaHQgYmUgMS4wNzE3eCBmYXN0ZXIKICAgbWF0
aC1yYW5kb20gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS4zMzI1Ky0w
LjQ3MjUgICAgID8gICAgIDE5Ljc1OTUrLTAuOTcwMCAgICAgICAgPyBtaWdodCBiZSAxLjAyMjF4
IHNsb3dlcgogICBpcy1vYmplY3Qtb3ItbnVsbC1mb2xkLXRyaWNreSAgICAgICAgICAgICAgICAg
ICAgICA1LjMwMjYrLTAuMzAwNiAgICAgPyAgICAgIDUuNTMxNystMC40MzQyICAgICAgICA/IG1p
Z2h0IGJlIDEuMDQzMnggc2xvd2VyCiAgIHJlZ2lzdGVyLXByZXNzdXJlLWZyb20tb3NyICAgICAg
ICAgICAgICAgICAgICAgICAgMjAuMTc5OCstMC43MzMyICAgICA/ICAgICAyMC4yMjc5Ky0xLjUw
MzAgICAgICAgID8KICAgaW5mZXItb25lLXRpbWUtY2xvc3VyZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOC44NDkxKy0wLjcxNTAgICAgICAgICAgICA4Ljc0NTgrLTAuNDY5NyAgICAgICAg
ICBtaWdodCBiZSAxLjAxMTh4IGZhc3RlcgogICBsaWNtLWRyYWdvbnMtb3V0LW9mLWJvdW5kcyAg
ICAgICAgICAgICAgICAgICAgICAgIDQ1LjU4NTQrLTEuNzYyOCAgICAgPyAgICAgNDYuNzExMSst
My4xNjI2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI0N3ggc2xvd2VyCiAgIHNwYXJzZS1zZXQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzYuNzE0NSstMS43NzI2ICAgICAg
ICAgICA3NS43NjUzKy0yLjUyNzMgICAgICAgICAgbWlnaHQgYmUgMS4wMTI1eCBmYXN0ZXIKICAg
c3RyY2F0LWxlbmd0aC1jb25zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC41NzM3
Ky0yLjgxMzggICAgICAgICAgICA3LjUwMDIrLTAuNTAwMCAgICAgICAgICBtaWdodCBiZSAxLjE0
MzF4IGZhc3RlcgogICBzaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZyAgICAgICAgICAgICAgICAg
ICAgICAgIDIyLjM0OTYrLTAuOTk2NiAgICAgPyAgICAgMjIuNTE3OCstMC41NDQyICAgICAgICA/
CiAgIG51bWJlci10by1zdHJpbmctd2l0aC1hZGQgICAgICAgICAgICAgICAgICAgICAgICAgMTAu
MzkzNSstMC44MTA0ICAgICAgICAgICAxMC4xMDk3Ky0wLjQ5MDUgICAgICAgICAgbWlnaHQgYmUg
MS4wMjgxeCBmYXN0ZXIKICAgcmFyZS1vc3ItZXhpdC1vbi1sb2NhbCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyMS41MDQ5Ky05Ljg1ODEgICAgICAgICAgIDE3LjkzMDMrLTEuMDczMyAgICAg
ICAgICBtaWdodCBiZSAxLjE5OTR4IGZhc3RlcgogICBvYmplY3QtdGVzdCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0LjExMjIrLTAuMzAzNCAgICAgICAgICAgIDQuMDk2
NystMC4yNzUwICAgICAgICAKICAgaW50NTItYmFjay1hbmQtZm9ydGggICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMC45NDEzKy0wLjkxNjMgICAgID8gICAgIDExLjU0MzMrLTAuNzM2NSAg
ICAgICAgPyBtaWdodCBiZSAxLjA1NTB4IHNsb3dlcgogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5n
LWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4Ljg4MjcrLTAuODU5OCAgICAgPyAgICAgIDku
MTYyMSstMS4wNTI5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMxNXggc2xvd2VyCiAgIGluLW9uZS1j
YXNlLXRydWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuMjY0NystMC41MDc1
ICAgICA/ICAgICAxMi4yNjgxKy0wLjY5MzEgICAgICAgID8KICAgc3RyaW5nLWNvbmNhdC1wYWly
LW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgMy40NjAzKy0wLjY4MjggICAgID8gICAg
ICAzLjczOTYrLTEuMDM5OCAgICAgICAgPyBtaWdodCBiZSAxLjA4MDd4IHNsb3dlcgogICBhc21q
c19ib29sX2J1ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjgwMjErLTAu
MzM1MCAgICAgPyAgICAgIDguMjM2MystMC42NTAwICAgICAgICA/IG1pZ2h0IGJlIDEuMDU1Nngg
c2xvd2VyCiAgIHBsdXMtYm9vbGVhbi1kb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDMuNzg0OCstMC40NTIxICAgICA/ICAgICAgMy43ODU2Ky0wLjI5NDEgICAgICAgID8KICAg
YXJyYXktd2l0aC1pbnQzMi1hZGQtc3ViICAgICAgICAgICAgICAgICAgICAgICAgICAgNy43NDAy
Ky0wLjY3MTEgICAgID8gICAgICA4LjMzMzIrLTAuNTc3OCAgICAgICAgPyBtaWdodCBiZSAxLjA3
NjZ4IHNsb3dlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDIuMTQzMystMC40OTcwICAgICA/ICAgICAgMi40NTIxKy0wLjkxNDAgICAgICAgID8gbWln
aHQgYmUgMS4xNDQxeCBzbG93ZXIKICAgbGFyZ2UtbWFwLWl0ZXJhdGlvbiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0Mi4zNzM3Ky0xLjQ5MDIgICAgID8gICAgIDUyLjc1ODErLTIzLjgy
MjAgICAgICAgPyBtaWdodCBiZSAxLjI0NTF4IHNsb3dlcgogICBvYmplY3QtcnNoaWZ0ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2Ljk3MzkrLTAuNTQ3MSAgICAgPyAgICAg
IDcuNTcxOCstMC44MDA4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDg1N3ggc2xvd2VyCiAgIGdldHRl
ci1yaWNoYXJkcy10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICAxMTAuMzc2MSstMS43
NjY0ICAgICAhICAgIDEyMS4zNTUyKy01LjYzMDYgICAgICAgICEgZGVmaW5pdGVseSAxLjA5OTV4
IHNsb3dlcgogICBIYXNoTWFwLXB1dC1nZXQtaXRlcmF0ZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDM0LjE5NDYrLTAuODA4NyAgICAgPyAgICAgMzQuMjM5MSstMC43NjAzICAgICAgICA/CiAg
IG1pbnVzLWJvb2xlYW4tZG91YmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuODA2
NCstMC4xOTc4ICAgICA/ICAgICAgNC4wOTgwKy0wLjc4NjIgICAgICAgID8gbWlnaHQgYmUgMS4w
NzY2eCBzbG93ZXIKCiAgIDxnZW9tZXRyaWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTEuNDkyOCstMC4wNDg0ICAgICAhICAgICAxMS42MDMwKy0wLjAzOTUgICAgICAg
ICEgZGVmaW5pdGVseSAxLjAwOTZ4IHNsb3dlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlICAgICAgICAgICAgICAgICAgICAg
IG5ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKQXNtQmVuY2g6CiAg
IEZsb2F0TU0uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4NzkuMDYz
NystNS4zMzkzICAgICAgICAgIDg3My43NDEzKy04LjM1MTEgICAgICAgIAogICBkcnkuYyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTY4LjY0MDMrLTUuNTg1NCAg
ICAgICAgICA1NjYuNzEwOCstNC4xOTc2ICAgICAgICAKICAgY3JheS5jICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU0MS4zNTMyKy0zMC4xOTkzICAgICAgICAgNTMx
LjYyODMrLTUuMDU4MyAgICAgICAgICBtaWdodCBiZSAxLjAxODN4IGZhc3RlcgogICBzdGVwYW5v
dl9jb250YWluZXIuY3BwICAgICAgICAgICAgICAgICAgICAgICAgICA1MTgzLjg4NzgrLTg0LjUx
MzcgICAgICAgIDUxMzEuODUyMSstNjYuMDkwMyAgICAgICAgIG1pZ2h0IGJlIDEuMDEwMXggZmFz
dGVyCiAgIG4tYm9keS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEy
OTQuMDA3MystNTI4Ljk2MjEgICAgICAgMTA5Ny4yMjkwKy0zMi41ODMwICAgICAgICAgbWlnaHQg
YmUgMS4xNzkzeCBmYXN0ZXIKICAgZ2NjLWxvb3BzLmNwcCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNTAxNy45OTYxKy01MC45NTE5ICAgID8gICA1MDM2Ljc2ODQrLTUxLjI0MDkg
ICAgICAgPwogICBRdWlja3NvcnQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNTUwLjgyMTUrLTQ0LjU4MDMgICAgICAgICA1MjkuMjE0MystOC40NTQ2ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDQwOHggZmFzdGVyCiAgIFRvd2Vycy5jICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAzMzkuMTgyMCstNi42NTA4ICAgICAgICAgIDMzNi45MTQxKy01Ljkx
NTUgICAgICAgIAogICBiaWdmaWIuY3BwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNzQ2LjM3NDIrLTI0NS4yNDE0ICAgICAgICA2NDEuODQyNistMTAuODk1MSAgICAgICAg
IG1pZ2h0IGJlIDEuMTYyOXggZmFzdGVyCgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxMDE0LjMwNDcrLTM3LjkzMDMgICAgICAgICA5ODIuNTIxMSst
Mi42ODE5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDMyM3ggZmFzdGVyCgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAg
ICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApD
b21wcmVzc2lvbkJlbmNoOgogICBodWZmbWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDMyLjMyMTQrLTIuMDU1MiAgICAgPyAgICAgMzUuMzUzMystNC45NTE5ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDkzOHggc2xvd2VyCiAgIGFyaXRobWV0aWMtc2ltcGxlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzNDUuMDM5NystMy40MTYzICAgICA/ICAgIDM0Ny41
ODI2Ky01LjA5MDcgICAgICAgID8KICAgYXJpdGhtZXRpYy1wcmVjaXNlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDM0Mi44ODgwKy0xNC4yNjM1ICAgID8gICAgMzY5LjYzOTUrLTczLjY4
NjcgICAgICAgPyBtaWdodCBiZSAxLjA3ODB4IHNsb3dlcgogICBhcml0aG1ldGljLWNvbXBsZXgt
cHJlY2lzZSAgICAgICAgICAgICAgICAgICAgICAgMzMyLjEzNjErLTMuNzY1MiAgICAgPyAgICAz
MzIuNzMzOSstNS4yOTI3ICAgICAgICA/CiAgIGFyaXRobWV0aWMtcHJlY2lzZS1vcmRlci0wICAg
ICAgICAgICAgICAgICAgICAgICAzNTIuNTI4NystNC44OTAzICAgICAgICAgIDM0Ni40OTQ0Ky0x
LjM5MzEgICAgICAgICAgbWlnaHQgYmUgMS4wMTc0eCBmYXN0ZXIKICAgYXJpdGhtZXRpYy1wcmVj
aXNlLW9yZGVyLTEgICAgICAgICAgICAgICAgICAgICAgIDQxNi40MTIyKy02LjY1NzggICAgICAg
ICAgNDEyLjE3ODMrLTMuMDA4MSAgICAgICAgICBtaWdodCBiZSAxLjAxMDN4IGZhc3RlcgogICBh
cml0aG1ldGljLXByZWNpc2Utb3JkZXItMiAgICAgICAgICAgICAgICAgICAgICAgNDc5LjY1MTQr
LTYuOTk1MyAgICAgPyAgICA1NDcuNDU5MistMTQwLjI4NDMgICAgICA/IG1pZ2h0IGJlIDEuMTQx
NHggc2xvd2VyCiAgIGFyaXRobWV0aWMtc2ltcGxlLW9yZGVyLTEgICAgICAgICAgICAgICAgICAg
ICAgICA0MjMuMDEyMistMTkuNjg4NCAgICAgICAgIDQxNS4yMzg4Ky00Ljk5NDcgICAgICAgICAg
bWlnaHQgYmUgMS4wMTg3eCBmYXN0ZXIKICAgYXJpdGhtZXRpYy1zaW1wbGUtb3JkZXItMiAgICAg
ICAgICAgICAgICAgICAgICAgIDQ5Ni4xMjM0Ky0yMS44MTEyICAgICAgICAgNDg5LjQ5MDQrLTUu
MTg0NCAgICAgICAgICBtaWdodCBiZSAxLjAxMzZ4IGZhc3RlcgogICBsei1zdHJpbmcgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzQ3LjU0MDMrLTQuNzg0NCAgICAgPyAg
ICAzNDguMjQ2MistNi42MTM2ICAgICAgICA/CgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMzAyLjgxNDQrLTIuNzI4NCAgICAgPyAgICAzMDkuMDE0
MCstMTEuNDU4OCAgICAgICA/IG1pZ2h0IGJlIDEuMDIwNXggc2xvd2VyCgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAg
ICAgICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IApTaXhTcGVlZDoKICAgdGVtcGxhdGVfc3RyaW5nLmVzNSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNzU5MS44MTk0Ky00Ni4wOTU3ICAgID8gICA3NTk2LjE5NjMrLTUyLjAzMTIgICAgICAg
PwogICB0ZW1wbGF0ZV9zdHJpbmcuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MDIw
LjUxMTMrLTEyNi44Nzg5ICAgICAgIDUwMDEuMzcwMSstNzAuOTE5OCAgICAgICAKICAgZGVmYXVs
dHMuZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI0OC4xODcyKy0xOC41
MzUxICAgID8gICAxMjUxLjUyNTgrLTE4LjExMjQgICAgICAgPwogICBkZWZhdWx0cy5lczYgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDQ3LjYwMDgrLTI3LjIwOTYgICAgICAg
ICA0MzIuODMzMSstNi40NjIzICAgICAgICAgIG1pZ2h0IGJlIDEuMDM0MXggZmFzdGVyCiAgIG1h
cC1zZXQtbG9va3VwLmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODguMDY5Nyst
Ny42OTAzICAgICAgICAgICA4Mi43MTA0Ky0wLjkzOTkgICAgICAgICAgbWlnaHQgYmUgMS4wNjQ4
eCBmYXN0ZXIKICAgbWFwLXNldC1sb29rdXAuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMi41NzI3Ky0wLjU3MjcgICAgID8gICAgICAzLjA2MDcrLTAuOTI1OSAgICAgICAgPyBt
aWdodCBiZSAxLjE4OTd4IHNsb3dlcgogICBzcHJlYWQuZXM1ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDE3Ljc2NDcrLTEuMjIxMCAgICAgICAgICAgMTcuMTEzNistMC40
NzY0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM4MHggZmFzdGVyCiAgIHNwcmVhZC5lczYgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTkuMDgzNCstMS45MTUyICAgICA/ICAg
ICA1OS42Njc1Ky0zLjM1MTcgICAgICAgID8KICAgb2JqZWN0LWFzc2lnbi5lczUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDM5My42MjM0Ky0xMi41NDQ0ICAgICAgICAgMzkyLjc3NTEr
LTMuOTg0NSAgICAgICAgCiAgIG9iamVjdC1hc3NpZ24uZXM2ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAzMjMuMzE4NystNC41MTYxICAgICA/ICAgIDMzMi4xOTUwKy03Ljk1NzkgICAg
ICAgID8gbWlnaHQgYmUgMS4wMjc1eCBzbG93ZXIKICAgc3ByZWFkLWxpdGVyYWwuZXM1ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEwOC4yMzEwKy0xLjQ2MTMgICAgICEgICAgMTEzLjkw
MjcrLTMuNDcxMSAgICAgICAgISBkZWZpbml0ZWx5IDEuMDUyNHggc2xvd2VyCiAgIHNwcmVhZC1s
aXRlcmFsLmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzMuNjQ1MistMC40MDk1
ICAgICA/ICAgICA0MC4xMzczKy0xMy40Mjk0ICAgICAgID8gbWlnaHQgYmUgMS4xOTMweCBzbG93
ZXIKICAgbWFwLXNldC5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAz
MC41NDc5Ky0xLjQ3OTYgICAgICAgICAgIDMwLjUzNjkrLTkuNjA0MCAgICAgICAgCiAgIG1hcC1z
ZXQuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDcuNzU3OCstNy43
OTc2ICAgICA/ICAgIDI0MC40NDM3Ky04NC4zMzEwICAgICAgID8gbWlnaHQgYmUgMS4xNTczeCBz
bG93ZXIKICAgZGVzdHJ1Y3R1cmluZy1zaW1wbGUuZXM1ICAgICAgICAgICAgICAgICAgICAgICAg
ICA4Ny4wNTI4Ky00LjAzMzUgICAgID8gICAgIDkwLjE1ODkrLTQuNTk3MSAgICAgICAgPyBtaWdo
dCBiZSAxLjAzNTd4IHNsb3dlcgogICBkZXN0cnVjdHVyaW5nLXNpbXBsZS5lczYgICAgICAgICAg
ICAgICAgICAgICAgICAgIDc5LjY1ODYrLTYuNTgxMCAgICAgPyAgICAgODUuNDc4OCstMy45MDY1
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDczMXggc2xvd2VyCiAgIHN1cGVyLmVzNSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQuMzY3NSstMi4zMDMyICAgICAgICAgICAx
NC4wMTkyKy0xLjEzMTQgICAgICAgICAgbWlnaHQgYmUgMS4wMjQ4eCBmYXN0ZXIKICAgc3VwZXIu
ZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMi44NjQzKy0zLjI3
ODIgICAgID8gICAgMTA0LjQ1ODErLTUuNzIzMiAgICAgICAgPyBtaWdodCBiZSAxLjAxNTV4IHNs
b3dlcgogICBmb3Itb2Ytb2JqZWN0LmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDYxLjg4OTArLTguMDQ1MCAgICAgICAgICAgNjAuNTIzNCstMi42MTg0ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDIyNnggZmFzdGVyCiAgIGZvci1vZi1vYmplY3QuZXM2ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAzNTUuNzU2MystMTg2LjMyNjMgICAgICAgIDI4My44NjY0Ky00Ljg2Mjcg
ICAgICAgICAgbWlnaHQgYmUgMS4yNTMzeCBmYXN0ZXIKICAgcmVzdC5lczUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0OC4zMzc0Ky0wLjgzMDcgICAgID8gICAgIDQ5
LjQ0NzQrLTEuMDMyMiAgICAgICAgPyBtaWdodCBiZSAxLjAyMzB4IHNsb3dlcgogICByZXN0LmVz
NiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjcxODArLTAuMzQw
OSAgICAgICAgICAgIDMuNzE2MSstMC4yOTc5ICAgICAgICAKICAgcmVnZXgtdS5lczUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1NC42NjQ2Ky0xLjY3NDIgICAgID8gICAg
IDU1LjMzMjUrLTIuMTkwMCAgICAgICAgPyBtaWdodCBiZSAxLjAxMjJ4IHNsb3dlcgogICByZWdl
eC11LmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI0LjgyMzErLTcy
LjM1NTggICAgICAgICAgOTQuODYxNystMS4zODQ2ICAgICAgICAgIG1pZ2h0IGJlIDEuMzE1OHgg
ZmFzdGVyCiAgIGFycm93LmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgODguNDk1NSstMi44NzQ5ICAgICA/ICAgICA4OS4wNTg3Ky0yLjc1NTYgICAgICAgID8KICAg
YXJyb3cuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5MC4xMDI2
Ky0yLjU0MDQgICAgICAgICAgIDg4LjI1NjYrLTEuODIxNyAgICAgICAgICBtaWdodCBiZSAxLjAy
MDl4IGZhc3RlcgogICBiaW5kaW5ncy1jb21wb3VuZC5lczUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDc1LjU4ODErLTUuNDA0NCAgICAgPyAgICAgNzguNTg5MystNC44MTYxICAgICAgICA/
IG1pZ2h0IGJlIDEuMDM5N3ggc2xvd2VyCiAgIGJpbmRpbmdzLWNvbXBvdW5kLmVzNiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgODAuNDY0MCstNS4zNTk0ICAgICA/ICAgICA4NS45MzE3Ky01
LjU0NjMgICAgICAgID8gbWlnaHQgYmUgMS4wNjgweCBzbG93ZXIKICAgY2xhc3Nlcy5lczUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5NS45NTI5Ky0xLjM2NTkgICAgIF4g
ICAgIDkxLjg2MDIrLTEuNTYxNyAgICAgICAgXiBkZWZpbml0ZWx5IDEuMDQ0NnggZmFzdGVyCiAg
IGNsYXNzZXMuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDQuOTI2
NCstMjEuMDAyOCAgICAgICAgICA5NS4zNzkyKy05LjQ1NzYgICAgICAgICAgbWlnaHQgYmUgMS4x
MDAxeCBmYXN0ZXIKICAgdGVtcGxhdGVfc3RyaW5nX3RhZy5lczUgICAgICAgICAgICAgICAgICAg
ICAgICAgICA5My41OTAxKy0yNi45NDc1ICAgICAgICAgIDgzLjU4MTgrLTEuOTE2MCAgICAgICAg
ICBtaWdodCBiZSAxLjExOTd4IGZhc3RlcgogICB0ZW1wbGF0ZV9zdHJpbmdfdGFnLmVzNiAgICAg
ICAgICAgICAgICAgICAgICAgICAgMjQwLjY0OTIrLTIuNTYxMCAgICAgPyAgICAyNzYuMTkzMSst
NzkuNzI4OSAgICAgICA/IG1pZ2h0IGJlIDEuMTQ3N3ggc2xvd2VyCiAgIG1hcC1zdHJpbmcuZXM1
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNjQuODI5NystMTAuNzE5NyAgICAg
ICAgIDE1NS41NzI1Ky0xMS42NzY0ICAgICAgICAgbWlnaHQgYmUgMS4wNTk1eCBmYXN0ZXIKICAg
bWFwLXN0cmluZy5lczYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY1NS41NTIw
Ky0yMC4xNjc5ICAgICAgICAgNjMwLjkwNTMrLTcuNTg4OCAgICAgICAgICBtaWdodCBiZSAxLjAz
OTF4IGZhc3RlcgogICBhcnJvdy1kZWNsYXJlLmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTM5Ljc3MDUrLTI2LjI2MjYgICAgICAgICAxMzAuNTgwNistNS45OTcyICAgICAgICAg
IG1pZ2h0IGJlIDEuMDcwNHggZmFzdGVyCiAgIGFycm93LWRlY2xhcmUuZXM2ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxMzQuMjU1MSstNS4yOTY4ICAgICAgICAgIDEzMC41MDEwKy01
LjQyNDMgICAgICAgICAgbWlnaHQgYmUgMS4wMjg4eCBmYXN0ZXIKICAgc3ByZWFkLWdlbmVyYXRv
ci5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwOC4wODE3Ky0xLjUwNjkgICAgID8g
ICAgMTE1Ljc0ODMrLTkuNDg4MyAgICAgICAgPyBtaWdodCBiZSAxLjA3MDl4IHNsb3dlcgogICBz
cHJlYWQtZ2VuZXJhdG9yLmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzM1Ljg0NTMr
LTEyMS4zNDM1ICAgICAgICAyODcuNzAxNSstNS43MTYzICAgICAgICAgIG1pZ2h0IGJlIDEuMTY3
M3ggZmFzdGVyCiAgIG9iamVjdC1saXRlcmFsLWV4dC5lczUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMjUuNjA4OSstMS40NTgyICAgICAgICAgICAyNC45ODQyKy0wLjQ2MzEgICAgICAgICAg
bWlnaHQgYmUgMS4wMjUweCBmYXN0ZXIKICAgb2JqZWN0LWxpdGVyYWwtZXh0LmVzNiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzMC44MzgzKy00LjU3MDQgICAgICAgICAgIDI4LjQ5NTkrLTAu
NTUxOCAgICAgICAgICBtaWdodCBiZSAxLjA4MjJ4IGZhc3RlcgogICBnZW5lcmF0b3IuZXM1ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUxLjgzMDMrLTYuMTE0NCAgICAgPyAg
ICAxNjkuMjgzOCstNDguMzk5MiAgICAgICA/IG1pZ2h0IGJlIDEuMTE1MHggc2xvd2VyCiAgIGdl
bmVyYXRvci5lczYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyODQuNzkwNist
My4xNzEwICAgICA/ICAgIDI5MC4zOTA0Ky01LjQ1NzMgICAgICAgID8gbWlnaHQgYmUgMS4wMTk3
eCBzbG93ZXIKICAgYXJyb3ctYXJncy5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA4OC4xNDA0Ky01LjQ0MjIgICAgICAgICAgIDg0LjM0NzgrLTQuNTE2MSAgICAgICAgICBt
aWdodCBiZSAxLjA0NTB4IGZhc3RlcgogICBhcnJvdy1hcmdzLmVzNiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDg5LjE2NTkrLTQuNTg1MCAgICAgPyAgICAgOTAuNzc0NCstNS4w
MjM1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE4MHggc2xvd2VyCiAgIGZvci1vZi1hcnJheS5lczUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNDEuMzE5MSstMi42NzI5ICAgICA/ICAg
IDI0MS44NDQ1Ky0zLjc0ODEgICAgICAgID8KICAgZm9yLW9mLWFycmF5LmVzNiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDI3My41MjgwKy0zLjgzOTAgICAgID8gICAgMjc5Ljc1NjQr
LTcuNTc3NyAgICAgICAgPyBtaWdodCBiZSAxLjAyMjh4IHNsb3dlcgogICBiaW5kaW5ncy5lczUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc5LjQyMjUrLTYuNTEzNiAgICAg
ICAgICAgNzcuOTYwNSstNS42Njg5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE4OHggZmFzdGVyCiAg
IGJpbmRpbmdzLmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTguMDcy
OSstMjYuNTM5NiAgICAgICAgICA4NS42OTY5Ky00LjExNDIgICAgICAgICAgbWlnaHQgYmUgMS4x
NDQ0eCBmYXN0ZXIKICAgZGVzdHJ1Y3R1cmluZy5lczUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA5MS41MzkyKy00Ljk4OTggICAgICAgICAgIDkwLjE5MzIrLTIuODgwNiAgICAgICAg
ICBtaWdodCBiZSAxLjAxNDl4IGZhc3RlcgogICBkZXN0cnVjdHVyaW5nLmVzNiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTA2LjgyMDArLTYuNTQ1MyAgICAgICAgICAgOTkuODM2NSst
Ni4zODQ3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDcwMHggZmFzdGVyCiAgIG1hcC1zZXQtb2JqZWN0
LmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDMuMTAyMSstMS4wNjkxICAgICA/
ICAgICA0Ni4yOTc2Ky04LjA5OTcgICAgICAgID8gbWlnaHQgYmUgMS4wNzQxeCBzbG93ZXIKICAg
bWFwLXNldC1vYmplY3QuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxNy45NDkw
Ky0yLjk2MjQgICAgIF4gICAgMjEwLjg1NjArLTIuMjIwMiAgICAgICAgXiBkZWZpbml0ZWx5IDEu
MDMzNnggZmFzdGVyCgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTExLjI0NTUrLTAuOTc5NCAgICAgICAgICAxMTAuNzEwNSstMC43NjIxICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDA0OHggZmFzdGVyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAgICAg
bmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApHZW9tZWFuIG9mIHBy
ZWZlcnJlZCBtZWFuczoKICAgPHNjYWxlZC1yZXN1bHQ+ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA3MC41MDk2Ky0wLjM2OTMgICAgID8gICAgIDcxLjI3MTIrLTAuNzAyNSAgICAg
ICAgPyBtaWdodCBiZSAxLjAxMDh4IHNsb3dlcgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319139</attachid>
            <date>2017-08-26 14:25:44 -0700</date>
            <delta_ts>2017-08-31 07:01:27 -0700</delta_ts>
            <desc>proposed patch w/ Windows build fix.</desc>
            <filename>bug-175144.patch</filename>
            <type>text/plain</type>
            <size>113516</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIxMjI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4MSBA
QAorMjAxNy0wOC0yNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
VXNlIEpJVCBwcm9iZXMgZm9yIERGRyBPU1IgZXhpdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzM0MzcwNTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBkb2VzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIDEuIFJlcGxhY2VzIG9z
ckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoKSB3aXRoIG9zckV4aXRUaHVua0dlbmVyYXRv
cigpLgorICAgICAgICAgICBXaGlsZSBvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKCkg
Z2VuZXJhdGVzIGEgdGh1bmsgdGhhdCBjb21waWxlcyBhCisgICAgICAgICAgIHVuaXF1ZSBPU1Ig
b2ZmcmFtcCBmb3IgZWFjaCBERkcgT1NSIGV4aXQgc2l0ZSwgb3NyRXhpdFRodW5rR2VuZXJhdG9y
KCkKKyAgICAgICAgICAgZ2VuZXJhdGVzIGEgdGh1bmsgdGhhdCBqdXN0IGV4ZWN1dGVzIHRoZSBP
U1IgZXhpdC4KKworICAgICAgICAgICBUaGUgb3NyRXhpdFRodW5rR2VuZXJhdG9yKCkgZ2VuZXJh
dGVkIHRodW5rIHdvcmtzIGJ5IHVzaW5nIGEgc2luZ2xlIEpJVCBwcm9iZQorICAgICAgICAgICB0
byBjYWxsIE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KCkuICBUaGUgSklUIHByb2JlIHRha2VzIGNh
cmUgb2YgcHJlc2VydmluZworICAgICAgICAgICBDUFUgcmVnaXN0ZXJzLCBhbmQgcHJvdmlkaW5n
IHRoZSBQcm9iZTo6U3RhY2sgbWVjaGFuaXNtIGZvciBtb2RpZnlpbmcgdGhlCisgICAgICAgICAg
IHN0YWNrIGZyYW1lLgorCisgICAgICAgICAgIE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KCkgcmVw
bGFjZXMgT1NSRXhpdDo6Y29tcGlsZU9TUkV4aXQoKSBhbmQKKyAgICAgICAgICAgT1NSRXhpdDo6
Y29tcGlsZUV4aXQoKS4gIEl0IGlzIGJhc2ljYWxseSBhIHJlLXdyaXRlIG9mIHRob3NlIGZ1bmN0
aW9ucyB0bworICAgICAgICAgICBleGVjdXRlIHRoZSBPU1IgZXhpdCB3b3JrIGluc3RlYWQgb2Yg
Y29tcGlsaW5nIGNvZGUgdG8gZXhlY3V0ZSB0aGUgd29yay4KKworICAgICAgICAgICBBcyBhIHJl
c3VsdCwgd2UgZ2V0IHRoZSBmb2xsb3dpbmcgc2F2aW5nczoKKyAgICAgICAgICAgYS4gbm8gbW9y
ZSBPU1IgZXhpdCByYW1wIGNvbXBpbGF0aW9uIHRpbWUuCisgICAgICAgICAgIGIuIG5vIHVzZSBv
ZiBKSVQgZXhlY3V0YWJsZSBtZW1vcnkgZm9yIHN0b3JpbmcgZWFjaCB1bmlxdWUgT1NSIGV4aXQg
cmFtcC4KKworICAgICAgICAgICBPbiB0aGUgbmVnYXRpdmUgc2lkZSwgd2UgaW5jdXIgdGhlc2Ug
Y29zdHM6CisKKyAgICAgICAgICAgYy4gdGhlIE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KCkgcmFt
cCBtYXkgYmUgYSBsaXR0bGUgc2xvd2VyIHRoYW4gdGhlIGNvbXBpbGVkCisgICAgICAgICAgICAg
IHZlcnNpb24gb2YgdGhlIHJhbXAuICBIb3dldmVyLCBPU1IgZXhpdHMgYXJlIHJhcmUuICBIZW5j
ZSwgdGhpcyBzbWFsbAorICAgICAgICAgICAgICBkaWZmZXJlbmNlIHNob3VsZCBub3QgbWF0dGVy
IG11Y2guICBJdCBpcyBhbHNvIG9mZnNldCBieSB0aGUgc2F2aW5ncyBmcm9tCisgICAgICAgICAg
ICAgIChhKS4KKworICAgICAgICAgICBkLiB0aGUgUHJvYmU6OlN0YWNrIGFsbG9jYXRlcyAxSyBw
YWdlcyBmb3IgbWVtb3J5IGZvciBidWZmZXJpbmcgc3RhY2sKKyAgICAgICAgICAgICAgbW9kaWZj
YXRpb25zLiAgVGhlIG51bWJlciBvZiB0aGVzZSBwYWdlcyBkZXBlbmRzIG9uIHRoZSBzcGFuIG9m
IHN0YWNrIG1lbW9yeQorICAgICAgICAgICAgICB0aGF0IHRoZSBPU1IgZXhpdCByYW1wIHJlYWRz
IGZyb20gYW5kIHdyaXRlcyB0by4gIFNpbmNlIHRoZSBPU1IgZXhpdCByYW1wCisgICAgICAgICAg
ICAgIHRlbmRzIHRvIG9ubHkgbW9kaWZ5IHZhbHVlcyBpbiB0aGUgY3VycmVudCBERkcgZnJhbWUg
YW5kIHRoZSBjdXJyZW50CisgICAgICAgICAgICAgIFZNRW50cnlSZWNvcmQsIHRoZSBudW1iZXIg
b2YgcGFnZXMgdGVuZHMgdG8gb25seSBiZSAxIG9yIDIuCisKKyAgICAgICAgICAgICAgVXNpbmcg
dGhlIGpzYyB0ZXN0cyBhcyBhIHdvcmtsb2FkLCB0aGUgdmFzdCBtYWpvcml0eSBvZiB0ZXN0cyB0
aGF0IGRvIE9TUgorICAgICAgICAgICAgICBleGl0LCB1c2VzIDMgb3IgbGVzcyAxSyBwYWdlcyAo
d2l0aCB0aGUgb3ZlcndoZWxtaW5nIG51bWJlciB1c2luZyBqdXN0IDEgcGFnZSkuCisgICAgICAg
ICAgICAgIEEgZmV3IHRlc3RzIHRoYXQgYXJlIHBhdGhvbG9naWNhbCB1c2VzIHVwIHRvIDE0IHBh
Z2VzLCBhbmQgb25lIHBhcnRpY3VsYXJseQorICAgICAgICAgICAgICBiYWQgdGVzdCAoZnVuY3Rp
b24tYXBwbHktbWFueS1hcmdzLmpzKSB1c2VzIDUxMyBwYWdlcy4KKworICAgICAgICAyLiBGaXhl
ZCB0aGUgYm90dG9tIG1vc3QgUHJvYmU6OkNvbnRleHQgYW5kIFByb2JlOjpTdGFjayBnZXQvc2V0
IG1ldGhvZHMgdG8gdXNlCisgICAgICAgICAgIHN0ZDo6bWVtY3B5IHRvIGF2b2lkIHN0cmljdCBh
bGlhc2luZyBpc3N1ZXMuCisKKyAgICAgICAgMy4gTWlzY2VsbGFuZW91cyBtZXRob2RzIGFkZGVk
IHRvIG1ha2UgdGhlIFByb2JlOjpDb250ZXh0IGVhc2llciBvZiB1c2UuCisKKyAgICAgICAgNC4g
QWRkZWQgYSBQcm9iZTo6RnJhbWUgY2xhc3MgdGhhdCBtYWtlcyBpdCBlYXNpZXIgdG8gZ2V0L3Nl
dCBvcGVyYW5kcyBhbmQKKyAgICAgICAgICAgYXJndW1lbnRzIGluIGEgZ2l2ZW4gZnJhbWUgdXNp
bmcgdGhlIGRlZmVycmVkIHdyaXRlIHByb3BlcnRpZXMgb2YgdGhlCisgICAgICAgICAgIFByb2Jl
OjpTdGFjay4gIFByb2JlOjpGcmFtZSBtYWtlcyBpdCBlYXNpZXIgdG8gZG8gc29tZSBvZiB0aGUg
cmVjb3Zlcnkgd29yayBpbgorICAgICAgICAgICB0aGUgT1NSIGV4aXQgcmFtcC4KKworICAgICAg
ICA1LiBDbG9uZWQgb3IgY29udmVydGVkIHNvbWUgZnVuY3Rpb25zIG5lZWRlZCBieSB0aGUgT1NS
IGV4aXQgcmFtcC4gIFRoZSBvcmlnaW5hbAorICAgICAgICAgICB2ZXJzaW9ucyBvZiB0aGVzZSBm
dW5jdGlvbnMgYXJlIHN0aWxsIGxlZnQgaW4gcGxhY2UgYmVjYXVzZSB0aGV5IGFyZSBzdGlsbAor
ICAgICAgICAgICBuZWVkZWQgZm9yIEZUTCBPU1IgZXhpdC4gIEEgRklYTUUgY29tbWVudCBoYXMg
YmVlbiBhZGRlZCB0byByZW1vdmUgdGhlbSBsYXRlci4KKyAgICAgICAgICAgVGhlc2UgZnVuY3Rp
b25zIGluY2x1ZGU6CisKKyAgICAgICAgICAgREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCdz
IGhhbmRsZUV4aXRDb3VudHMoKSA9PT4KKyAgICAgICAgICAgICAgIENvZGVCbG9jazo6dXBkYXRl
T1NSRXhpdENvdW50ZXJBbmRDaGVja0lmTmVlZFRvUmVvcHRpbWl6ZSgpCisgICAgICAgICAgIERG
R09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAncyByZWlmeUlubGluZWRDYWxsRnJhbWVzKCkgPT0+
CisgICAgICAgICAgICAgICBERkdPU1JFeGl0LmNwcCdzIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMo
KQorICAgICAgICAgICBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwJ3MgYWRqdXN0QW5kSnVt
cFRvVGFyZ2V0KCkgPT0+CisgICAgICAgICAgICAgICBERkdPU1JFeGl0LmNwcCdzIGFkanVzdEFu
ZEp1bXBUb1RhcmdldCgpCisKKyAgICAgICAgICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZTo6ZW1pdFJlcG9ydFZhbHVlKCkgPT0+CisgICAgICAgICAgICAgICBNZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlOjpyZXBvcnRWYWx1ZSgpCisKKyAgICAgICAgICAgREZHT3BlcmF0aW9ucy5j
cHAncyBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHNEdXJpbmdFeGl0KCkgPT0+CisgICAg
ICAgICAgICAgICBERkdPU1JFeGl0LmNwcCdzIGNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4
aXQoKQorICAgICAgICAgICBERkdPcGVyYXRpb25zLmNwcCdzIG9wZXJhdGlvbkNyZWF0ZUNsb25l
ZEFyZ3VtZW50c0R1cmluZ0V4aXQoKSA9PT4KKyAgICAgICAgICAgICAgIERGR09TUkV4aXQuY3Bw
J3MgY3JlYXRlQ2xvbmVkQXJndW1lbnRzRHVyaW5nRXhpdCgpCisKKyAgICAgICAgNi4gQ2hhbmdl
ZCBQcm9maWxlcjo6Q29tcGlsYXRpb246OmFkZE9TUkV4aXQoKSB0byBmaXJzdCBjaGVjayBpZiBh
biBleGlzdGluZworICAgICAgICAgICByZWNvcmQgYWxyZWFkeSBleGlzdHMgZm9yIGEgc3BlY2lm
aWVkIE9TUkV4aXQgaWQuICBJZiBzbywgcmV0dXJuIHRoZSBleGlzdGluZworICAgICAgICAgICBv
bmUuICBFbHNlLCBjcmVhdGUgYSBuZXcgb25lLgorCisgICAgICAgICAgIFRoaXMgaXMgbmVlZGVk
IGJlY2F1c2Ugd2UgcHJldmlvdXNseSBvbmx5IGNhbGwgYWRkT1NSRXhpdCgpIHdoZW4gY29tcGls
aW5nIHRoZQorICAgICAgICAgICBPU1IgZXhpdCByYW1wIGluc3RlYWQgb2YgZWFjaCB0aW1lIHdl
IGV4ZWN1dGUgdGhlIHJhbXAuICBOb3csIHRoZXJlIGlzIG5vCisgICAgICAgICAgIHNlcGFyYXRl
IGNvbXBpbGF0aW9uIHBhc3MgZm9yIHRoZSByYW1wLCBhbmQgd2UgZW5kIHVwIGNhbGxpbmcgaXQg
ZXZlcnkgdGltZQorICAgICAgICAgICB3ZSBleGVjdXRlIHRoZSByYW1wLgorCisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpzdGRGdW5jdGlvbkNhbGxi
YWNrKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6UHJpbnRlcjo6cHJpbnRDYWxsYmFjayk6CisgICAgICAgICogYXNzZW1ibGVy
L1Byb2JlQ29udGV4dC5oOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q1BVU3RhdGU6OmdwciBjb25z
dCk6CisgICAgICAgIChKU0M6OlByb2JlOjpDUFVTdGF0ZTo6c3ByIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6UHJvYmU6OkNvbnRleHQ6OkNvbnRleHQpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q29u
dGV4dDo6YXJnKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6Omdwcik6CisgICAgICAg
IChKU0M6OlByb2JlOjpDb250ZXh0OjpzcHIpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q29udGV4
dDo6ZnByKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6Omdwck5hbWUpOgorICAgICAg
ICAoSlNDOjpQcm9iZTo6Q29udGV4dDo6c3ByTmFtZSk6CisgICAgICAgIChKU0M6OlByb2JlOjpD
b250ZXh0OjpmcHJOYW1lKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6OmdwciBjb25z
dCk6CisgICAgICAgIChKU0M6OlByb2JlOjpDb250ZXh0OjpzcHIgY29uc3QpOgorICAgICAgICAo
SlNDOjpQcm9iZTo6Q29udGV4dDo6ZnByIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNv
bnRleHQ6OnBjKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6OmZwKToKKyAgICAgICAg
KEpTQzo6UHJvYmU6OkNvbnRleHQ6OnNwKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL1Byb2JlRnJhbWUuaDogQWRkZWQuCisgICAg
ICAgIChKU0M6OlByb2JlOjpGcmFtZTo6RnJhbWUpOgorICAgICAgICAoSlNDOjpQcm9iZTo6RnJh
bWU6OmdldEFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkZyYW1lOjpnZXRPcGVyYW5k
KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkZyYW1lOjpnZXQpOgorICAgICAgICAoSlNDOjpQcm9i
ZTo6RnJhbWU6OnNldEFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkZyYW1lOjpzZXRP
cGVyYW5kKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkZyYW1lOjpzZXQpOgorICAgICAgICAqIGFz
c2VtYmxlci9Qcm9iZVN0YWNrLmg6CisgICAgICAgIChKU0M6OlByb2JlOjpQYWdlOjpnZXQpOgor
ICAgICAgICAoSlNDOjpQcm9iZTo6UGFnZTo6c2V0KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OlBh
Z2U6OnBoeXNpY2FsQWRkcmVzc0Zvcik6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6Z2V0
KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OlN0YWNrOjpzZXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0FyaXRoUHJvZmlsZS5jcHA6CisgICAgICAgICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmg6Cisg
ICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkFycmF5UHJv
ZmlsZTo6b2JzZXJ2ZUFycmF5TW9kZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1cGRhdGVPU1JFeGl0Q291bnRlckFuZENoZWNr
SWZOZWVkVG9SZW9wdGltaXplKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRyZXNzT2ZPU1JFeGl0Q291bnRlcik6IERlbGV0ZWQu
CisgICAgICAgICogYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5oOgorICAgICAgICAoSlNDOjpF
eGVjdXRpb25Db3VudGVyOjpoYXNDcm9zc2VkVGhyZXNob2xkIGNvbnN0KToKKyAgICAgICAgKiBi
eXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6cmVwb3J0VmFsdWUpOgorICAgICAgICAqIGJ5
dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKiBkZmcvREZH
RHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlSW1wbCk6CisgICAgICAgICog
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6
bGluayk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OmpzVmFsdWVGb3IpOgorICAgICAgICAoSlNDOjpERkc6OnJlc3RvcmVDYWxsZWVTYXZlc0Zvcik6
CisgICAgICAgIChKU0M6OkRGRzo6c2F2ZUNhbGxlZVNhdmVzRm9yKToKKyAgICAgICAgKEpTQzo6
REZHOjpyZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIp
OgorICAgICAgICAoSlNDOjpERkc6OmNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVl
U2F2ZXNCdWZmZXIpOgorICAgICAgICAoSlNDOjpERkc6OnNhdmVPckNvcHlDYWxsZWVTYXZlc0Zv
cik6CisgICAgICAgIChKU0M6OkRGRzo6Y3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdCk6
CisgICAgICAgIChKU0M6OkRGRzo6Y3JlYXRlQ2xvbmVkQXJndW1lbnRzRHVyaW5nRXhpdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZW1pdFJlc3RvcmVBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpE
Rkc6Ok9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpyZWlmeUlu
bGluZWRDYWxsRnJhbWVzKToKKyAgICAgICAgKEpTQzo6REZHOjphZGp1c3RBbmRKdW1wVG9UYXJn
ZXQpOgorICAgICAgICAoSlNDOjpERkc6OnByaW50T1NSRXhpdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6T1NSRXhpdDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpERkc6Ok9TUkV4aXQ6OmNvbXBpbGVPU1JFeGl0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
REZHOjpPU1JFeGl0Ojpjb21waWxlRXhpdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6
T1NSRXhpdDo6ZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFpbHVyZSk6IERlbGV0ZWQu
CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0
Ojpjb25zaWRlckFkZGluZ0FzRnJlcXVlbnRFeGl0U2l0ZSk6CisgICAgICAgICogZGZnL0RGR09T
UkV4aXRDb21waWxlckNvbW1vbi5jcHA6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxl
ckNvbW1vbi5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdUaHVua3MuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6Om9zckV4aXRUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkRGRzo6
b3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogZGZn
L0RGR1RodW5rcy5oOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmRlYnVnQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgICog
aml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoK
KyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2Zp
bGVyQ29tcGlsYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6Q29tcGlsYXRpb246
OmFkZE9TUkV4aXQpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5oOgorICAg
ICAgICAoSlNDOjpQcm9maWxlcjo6T1NSRXhpdDo6aW5jQ291bnQpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoK
KwogMjAxNy0wOC0yNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCBzdXBwcmVzcyB3YXJuaW5ncyBpbiBHVEsgcG9ydApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyMTIyOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDQ0LDYgKzI0NDQsNyBAQAogCQlGRTEwQUFFQzFGNDRENTQ1MDA5
REVEQzUgLyogUHJvYmVTdGFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTEwQUFFOTFGNDRENTEwMDA5REVEQzUgLyogUHJvYmVTdGFjay5jcHAg
Ki87IH07CiAJCUZFMTBBQUVFMUY0NEQ5NTQwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTBBQUVEMUY0NEQ5
NDYwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTEwQUFGNDFGNDY4Mzk2MDA5REVEQzUgLyogUHJvYmVD
b250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFMTBBQUYzMUY0NjgyNkQwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuY3BwICovOyB9OworCQlG
RTEwQUFGRjFGNEUzOEU1MDA5REVEQzUgLyogUHJvYmVGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxMEFBRkUxRjRFMzhEQTAwOURFREM1IC8q
IFByb2JlRnJhbWUuaCAqLzsgfTsKIAkJRkUxMjIwMjcxQkU3RjU4QzAwMzlFNkYyIC8qIEpJVEFk
ZEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkUxMjIwMjYxQkU3RjU2NDAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5oICovOyB9Owog
CQlGRTEyMjAyODFCRTdGNTkxMDAzOUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTIyMDI1MUJFN0Y1NjQw
MDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuY3BwICovOyB9OwogCQlGRTE4N0EwMTFCRkJFNTVF
MDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTg3OUZGMUJGQkM3M0MwMDM4QkJDQSAvKiBKSVRNdWxH
ZW5lcmF0b3IuY3BwICovOyB9OwpAQCAtNTEzOCw2ICs1MTM5LDcgQEAKIAkJRkUxMEFBRUExRjQ0
RDUxMjAwOURFREM1IC8qIFByb2JlU3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUHJvYmVTdGFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTEwQUFF
RDFGNDREOTQ2MDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFByb2JlQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRTEwQUFGMzFGNDY4MjZEMDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb2JlQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZFMTBBQUZFMUY0RTM4REEwMDlERURDNSAvKiBQcm9iZUZyYW1l
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2JlRnJhbWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxMjIwMjUxQkU3RjU2NDAwMzlFNkYyIC8qIEpJVEFk
ZEdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRB
ZGRHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTEyMjAyNjFC
RTdGNTY0MDAzOUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpJVEFkZEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRTE4NzlGRjFCRkJDNzNDMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVE11bEdlbmVyYXRvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NzIyLDYgKzc3MjQsNyBAQAogCQkJCUZFNjNE
RDUzMUVBOUI2MEUwMDEwM0E2OSAvKiBQcmludGVyLmggKi8sCiAJCQkJRkUxMEFBRjMxRjQ2ODI2
RDAwOURFREM1IC8qIFByb2JlQ29udGV4dC5jcHAgKi8sCiAJCQkJRkUxMEFBRUQxRjQ0RDk0NjAw
OURFREM1IC8qIFByb2JlQ29udGV4dC5oICovLAorCQkJCUZFMTBBQUZFMUY0RTM4REEwMDlERURD
NSAvKiBQcm9iZUZyYW1lLmggKi8sCiAJCQkJRkUxMEFBRTkxRjQ0RDUxMDAwOURFREM1IC8qIFBy
b2JlU3RhY2suY3BwICovLAogCQkJCUZFMTBBQUVBMUY0NEQ1MTIwMDlERURDNSAvKiBQcm9iZVN0
YWNrLmggKi8sCiAJCQkJRkU1MzNDQTAxRjIxN0MzMTAwMTZBMUZFIC8qIHRlc3RtYXNtLmNwcCAq
LywKQEAgLTk2ODksNiArOTY5Miw3IEBACiAJCQkJQUQyRkNDMUQxREI1OUNCMjAwQjNFNzM2IC8q
IFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ0
OTM3QzgxREREMEFBRTAwNzdDODA3IC8qIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBRDJGQ0MyRDFEQjgzOEZEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlQcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMTBBQUZGMUY0RTM4RTUwMDlERURDNSAvKiBQ
cm9iZUZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0JGOTFEQjU4REFEMDBCM0U3MzYg
LyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQUQyRkNDMUUxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29u
c3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0JGQjFEQjU4REFEMDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5jcHAJKHJldmlzaW9uIDIyMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBA
IGNvbnN0IGRvdWJsZSBNYWNyb0Fzc2VtYmxlcjo6dHdvVG9UaGUzMiAKICNpZiBFTkFCTEUoTUFT
TV9QUk9CRSkKIHN0YXRpYyB2b2lkIHN0ZEZ1bmN0aW9uQ2FsbGJhY2soUHJvYmU6OkNvbnRleHQm
IGNvbnRleHQpCiB7Ci0gICAgYXV0byBmdW5jID0gc3RhdGljX2Nhc3Q8Y29uc3Qgc3RkOjpmdW5j
dGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+Kj4oY29udGV4dC5hcmcpOworICAgIGF1dG8gZnVu
YyA9IGNvbnRleHQuYXJnPGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYp
Pio+KCk7CiAgICAgKCpmdW5jKShjb250ZXh0KTsKIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJpbnRl
ci5jcHAJKHJldmlzaW9uIDIyMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDcgKzE3
NSw3IEBAIHZvaWQgcHJpbnRNZW1vcnkoUHJpbnRTdHJlYW0mIG91dCwgQ29udGUKIHZvaWQgcHJp
bnRDYWxsYmFjayhQcm9iZTo6Q29udGV4dCYgcHJvYmVDb250ZXh0KQogewogICAgIGF1dG8mIG91
dCA9IFdURjo6ZGF0YUZpbGUoKTsKLSAgICBQcmludFJlY29yZExpc3QmIGxpc3QgPSAqcmVpbnRl
cnByZXRfY2FzdDxQcmludFJlY29yZExpc3QqPihwcm9iZUNvbnRleHQuYXJnKTsKKyAgICBQcmlu
dFJlY29yZExpc3QmIGxpc3QgPSAqcHJvYmVDb250ZXh0LmFyZzxQcmludFJlY29yZExpc3QqPigp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7IGkrKykgewogICAgICAg
ICBhdXRvJiByZWNvcmQgPSBsaXN0W2ldOwogICAgICAgICBDb250ZXh0IGNvbnRleHQocHJvYmVD
b250ZXh0LCByZWNvcmQuZGF0YSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1Byb2JlQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvUHJvYmVDb250ZXh0LmgJKHJldmlzaW9uIDIyMTIyOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDE0ICs0NSw4IEBAIHN0cnVjdCBDUFVTdGF0ZSB7CiAgICAgaW5saW5lIHVpbnRwdHJfdCYgc3By
KFNQUmVnaXN0ZXJJRCk7CiAgICAgaW5saW5lIGRvdWJsZSYgZnByKEZQUmVnaXN0ZXJJRCk7CiAK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X2ludGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVsbHB0cj4KLSAgICBUIGdwcihSZWdpc3Rl
cklEKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRyPgotICAgIFQg
Z3ByKFJlZ2lzdGVySUQpIGNvbnN0OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlwZSogPSBudWxs
cHRyPgotICAgIFQgc3ByKFNQUmVnaXN0ZXJJRCkgY29uc3Q7Ci0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46
OnR5cGUqID0gbnVsbHB0cj4KLSAgICBUIHNwcihTUFJlZ2lzdGVySUQpIGNvbnN0OworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IFQgZ3ByKFJlZ2lzdGVySUQpIGNvbnN0OworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IFQgc3ByKFNQUmVnaXN0ZXJJRCkgY29uc3Q7CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gVCBmcHIoRlBSZWdpc3RlcklEKSBjb25zdDsKIAogICAgIHZvaWQqJiBwYygpOwpA
QCAtODUsMzIgKzc5LDI0IEBAIGlubGluZSBkb3VibGUmIENQVVN0YXRlOjpmcHIoRlBSZWdpc3Rl
ckkKICAgICByZXR1cm4gZnByc1tpZF07CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlwZSo+Ci1U
IENQVVN0YXRlOjpncHIoUmVnaXN0ZXJJRCBpZCkgY29uc3QKLXsKLSAgICBDUFVTdGF0ZSogY3B1
ID0gY29uc3RfY2FzdDxDUFVTdGF0ZSo+KHRoaXMpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxU
PihjcHUtPmdwcihpZCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZSo+Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogVCBDUFVTdGF0ZTo6Z3ByKFJlZ2lzdGVySUQgaWQpIGNvbnN0CiB7CiAgICAg
Q1BVU3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsKLSAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxUPihjcHUtPmdwcihpZCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46
OnR5cGUqPgotVCBDUFVTdGF0ZTo6c3ByKFNQUmVnaXN0ZXJJRCBpZCkgY29uc3QKLXsKLSAgICBD
UFVTdGF0ZSogY3B1ID0gY29uc3RfY2FzdDxDUFVTdGF0ZSo+KHRoaXMpOwotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxUPihjcHUtPnNwcihpZCkpOworICAgIGF1dG8mIGZyb20gPSBjcHUtPmdwcihp
ZCk7CisgICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD46OnR5cGUgdG8geyB9OworICAg
IHN0ZDo6bWVtY3B5KCZ0bywgJmZyb20sIHNpemVvZih0bykpOyAvLyBVc2Ugc3RkOjptZW1jcHkg
dG8gYXZvaWQgc3RyaWN0IGFsaWFzaW5nIGlzc3Vlcy4KKyAgICByZXR1cm4gdG87CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRl
cjxUPjo6dmFsdWU+Ojp0eXBlKj4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CiBUIENQVVN0YXRlOjpz
cHIoU1BSZWdpc3RlcklEIGlkKSBjb25zdAogewogICAgIENQVVN0YXRlKiBjcHUgPSBjb25zdF9j
YXN0PENQVVN0YXRlKj4odGhpcyk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VD4oY3B1
LT5zcHIoaWQpKTsKKyAgICBhdXRvJiBmcm9tID0gY3B1LT5zcHIoaWQpOworICAgIHR5cGVuYW1l
IHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlIHRvIHsgfTsKKyAgICBzdGQ6Om1lbWNweSgmdG8s
ICZmcm9tLCBzaXplb2YodG8pKTsgLy8gVXNlIHN0ZDo6bWVtY3B5IHRvIGF2b2lkIHN0cmljdCBh
bGlhc2luZyBpc3N1ZXMuCisgICAgcmV0dXJuIHRvOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgpAQCAtMjA1LDI1ICsxOTEsMzEgQEAgcHVibGljOgogICAgIHVzaW5nIEZQUmVnaXN0ZXJJRCA9
IE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQ7CiAKICAgICBDb250ZXh0KFN0YXRlKiBzdGF0
ZSkKLSAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQotICAgICAgICAsIGFyZyhzdGF0ZS0+YXJnKQot
ICAgICAgICAsIGNwdShzdGF0ZS0+Y3B1KQorICAgICAgICA6IGNwdShzdGF0ZS0+Y3B1KQorICAg
ICAgICAsIG1fc3RhdGUoc3RhdGUpCiAgICAgeyB9CiAKLSAgICB1aW50cHRyX3QmIGdwcihSZWdp
c3RlcklEIGlkKSB7IHJldHVybiBtX3N0YXRlLT5jcHUuZ3ByKGlkKTsgfQotICAgIHVpbnRwdHJf
dCYgc3ByKFNQUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LnNwcihpZCk7IH0K
LSAgICBkb3VibGUmIGZwcihGUFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5m
cHIoaWQpOyB9Ci0gICAgY29uc3QgY2hhciogZ3ByTmFtZShSZWdpc3RlcklEIGlkKSB7IHJldHVy
biBtX3N0YXRlLT5jcHUuZ3ByTmFtZShpZCk7IH0KLSAgICBjb25zdCBjaGFyKiBzcHJOYW1lKFNQ
UmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LnNwck5hbWUoaWQpOyB9Ci0gICAg
Y29uc3QgY2hhciogZnByTmFtZShGUFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIG1fc3RhdGUtPmNw
dS5mcHJOYW1lKGlkKTsgfQotCi0gICAgdm9pZComIHBjKCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1
LnBjKCk7IH0KLSAgICB2b2lkKiYgZnAoKSB7IHJldHVybiBtX3N0YXRlLT5jcHUuZnAoKTsgfQot
ICAgIHZvaWQqJiBzcCgpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5zcCgpOyB9Ci0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBUIHBjKCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LnBjPFQ+KCk7IH0K
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGZwKCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LmZw
PFQ+KCk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHNwKCkgeyByZXR1cm4gbV9zdGF0
ZS0+Y3B1LnNwPFQ+KCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFQgYXJnKCkg
eyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPihtX3N0YXRlLT5hcmcpOyB9CisKKyAgICB1aW50
cHRyX3QmIGdwcihSZWdpc3RlcklEIGlkKSB7IHJldHVybiBjcHUuZ3ByKGlkKTsgfQorICAgIHVp
bnRwdHJfdCYgc3ByKFNQUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gY3B1LnNwcihpZCk7IH0KKyAg
ICBkb3VibGUmIGZwcihGUFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIGNwdS5mcHIoaWQpOyB9Cisg
ICAgY29uc3QgY2hhciogZ3ByTmFtZShSZWdpc3RlcklEIGlkKSB7IHJldHVybiBjcHUuZ3ByTmFt
ZShpZCk7IH0KKyAgICBjb25zdCBjaGFyKiBzcHJOYW1lKFNQUmVnaXN0ZXJJRCBpZCkgeyByZXR1
cm4gY3B1LnNwck5hbWUoaWQpOyB9CisgICAgY29uc3QgY2hhciogZnByTmFtZShGUFJlZ2lzdGVy
SUQgaWQpIHsgcmV0dXJuIGNwdS5mcHJOYW1lKGlkKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gVCBncHIoUmVnaXN0ZXJJRCBpZCkgY29uc3QgeyByZXR1cm4gY3B1LmdwcjxUPihpZCk7
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHNwcihTUFJlZ2lzdGVySUQgaWQpIGNvbnN0
IHsgcmV0dXJuIGNwdS5zcHI8VD4oaWQpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBm
cHIoRlBSZWdpc3RlcklEIGlkKSBjb25zdCB7IHJldHVybiBjcHUuZnByPFQ+KGlkKTsgfQorCisg
ICAgdm9pZComIHBjKCkgeyByZXR1cm4gY3B1LnBjKCk7IH0KKyAgICB2b2lkKiYgZnAoKSB7IHJl
dHVybiBjcHUuZnAoKTsgfQorICAgIHZvaWQqJiBzcCgpIHsgcmV0dXJuIGNwdS5zcCgpOyB9CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHBjKCkgeyByZXR1cm4gY3B1LnBjPFQ+KCk7IH0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGZwKCkgeyByZXR1cm4gY3B1LmZwPFQ+KCk7IH0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHNwKCkgeyByZXR1cm4gY3B1LnNwPFQ+KCk7IH0K
IAogICAgIFN0YWNrJiBzdGFjaygpCiAgICAgewpAQCAtMjM0LDEzICsyMjYsMTAgQEAgcHVibGlj
OgogICAgIGJvb2wgaGFzV3JpdGVzVG9GbHVzaCgpIHsgcmV0dXJuIG1fc3RhY2suaGFzV3JpdGVz
VG9GbHVzaCgpOyB9CiAgICAgU3RhY2sqIHJlbGVhc2VTdGFjaygpIHsgcmV0dXJuIG5ldyBTdGFj
ayhXVEZNb3ZlKG1fc3RhY2spKTsgfQogCi1wcml2YXRlOgotICAgIFN0YXRlKiBtX3N0YXRlOwot
cHVibGljOgotICAgIHZvaWQqIGFyZzsKICAgICBDUFVTdGF0ZSYgY3B1OwogCiBwcml2YXRlOgor
ICAgIFN0YXRlKiBtX3N0YXRlOwogICAgIFN0YWNrIG1fc3RhY2s7CiAKICAgICBmcmllbmQgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCogcHJvYmVTdGF0ZUZvckNvbnRleHQoQ29udGV4dCYpOyAvLyBO
b3QgZm9yIGdlbmVyYWwgdXNlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGZvciB3cml0aW5nIHRlc3Rz
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUZyYW1lLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUZyYW1lLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUZy
YW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1B
U01fUFJPQkUpCisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJQcm9iZVN0YWNr
LmgiCisKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIFByb2JlIHsKKworY2xhc3MgRnJhbWUg
eworcHVibGljOgorICAgIEZyYW1lKHZvaWQqIGZyYW1lQmFzZSwgU3RhY2smIHN0YWNrKQorICAg
ICAgICA6IG1fZnJhbWVCYXNlIHsgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZnJhbWVCYXNl
KSB9CisgICAgICAgICwgbV9zdGFjayB7IHN0YWNrIH0KKyAgICB7IH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CisgICAgVCBnZXRBcmd1bWVudChpbnQgYXJndW1lbnQpCisgICAgeworICAg
ICAgICByZXR1cm4gZ2V0PFQ+KENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoYXJndW1lbnQpICog
c2l6ZW9mKFJlZ2lzdGVyKSk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAg
VCBnZXRPcGVyYW5kKGludCBvcGVyYW5kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldE9wZXJh
bmQ8VD4ob3BlcmFuZCwgMCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAg
VCBnZXRPcGVyYW5kKGludCBvcGVyYW5kLCBwdHJkaWZmX3Qgb2Zmc2V0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdldDxUPihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG9wZXJhbmQpLm9m
ZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSArIG9mZnNldCk7CisgICAgfQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CisgICAgVCBnZXQocHRyZGlmZl90IG9mZnNldCkKKyAgICB7CisgICAgICAg
IHJldHVybiBtX3N0YWNrLmdldDxUPihtX2ZyYW1lQmFzZSArIG9mZnNldCk7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNldEFyZ3VtZW50KGludCBhcmd1bWVu
dCwgVCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBzZXQ8VD4oQ2FsbEZyYW1lOjphcmd1
bWVudE9mZnNldChhcmd1bWVudCkgKiBzaXplb2YoUmVnaXN0ZXIpLCB2YWx1ZSk7CisgICAgfQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBzZXRPcGVyYW5kKGludCBvcGVyYW5k
LCBUIHZhbHVlKQorICAgIHsKKyAgICAgICAgc2V0T3BlcmFuZDxUPihvcGVyYW5kLCAwLCB2YWx1
ZSk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBzZXRPcGVyYW5k
KGludCBvcGVyYW5kLCBwdHJkaWZmX3Qgb2Zmc2V0LCBUIHZhbHVlKQorICAgIHsKKyAgICAgICAg
c2V0PFQ+KHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4ob3BlcmFuZCkub2Zmc2V0KCkgKiBz
aXplb2YoUmVnaXN0ZXIpICsgb2Zmc2V0LCB2YWx1ZSk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CisgICAgdm9pZCBzZXQocHRyZGlmZl90IG9mZnNldCwgVCB2YWx1ZSkKKyAgICB7
CisgICAgICAgIG1fc3RhY2suc2V0PFQ+KG1fZnJhbWVCYXNlICsgb2Zmc2V0LCB2YWx1ZSk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIHVpbnQ4X3QqIG1fZnJhbWVCYXNlOworICAgIFN0YWNrJiBt
X3N0YWNrOworfTsKKworfSAvLyBuYW1lc3BhY2UgUHJvYmUKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suaAkocmV2aXNpb24gMjIxMjI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU2LDE0ICs1NiwyOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBU
IGdldCh2b2lkKiBsb2dpY2FsQWRkcmVzcykKICAgICB7Ci0gICAgICAgIHJldHVybiAqcGh5c2lj
YWxBZGRyZXNzRm9yPFQqPihsb2dpY2FsQWRkcmVzcyk7CisgICAgICAgIHZvaWQqIGZyb20gPSBw
aHlzaWNhbEFkZHJlc3NGb3IobG9naWNhbEFkZHJlc3MpOworICAgICAgICB0eXBlbmFtZSBzdGQ6
OnJlbW92ZV9jb25zdDxUPjo6dHlwZSB0byB7IH07CisgICAgICAgIHN0ZDo6bWVtY3B5KCZ0bywg
ZnJvbSwgc2l6ZW9mKHRvKSk7IC8vIFVzZSBzdGQ6Om1lbWNweSB0byBhdm9pZCBzdHJpY3QgYWxp
YXNpbmcgaXNzdWVzLgorICAgICAgICByZXR1cm4gdG87CisgICAgfQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CisgICAgVCBnZXQodm9pZCogbG9naWNhbEJhc2VBZGRyZXNzLCBwdHJkaWZmX3Qg
b2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldDxUPihyZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPihsb2dpY2FsQmFzZUFkZHJlc3MpICsgb2Zmc2V0KTsKICAgICB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgc2V0KHZvaWQqIGxvZ2ljYWxBZGRyZXNzLCBUIHZh
bHVlKQogICAgIHsKICAgICAgICAgbV9kaXJ0eUJpdHMgfD0gZGlydHlCaXRGb3IobG9naWNhbEFk
ZHJlc3MpOwotICAgICAgICAqcGh5c2ljYWxBZGRyZXNzRm9yPFQqPihsb2dpY2FsQWRkcmVzcykg
PSB2YWx1ZTsKKyAgICAgICAgdm9pZCogdG8gPSBwaHlzaWNhbEFkZHJlc3NGb3IobG9naWNhbEFk
ZHJlc3MpOworICAgICAgICBzdGQ6Om1lbWNweSh0bywgJnZhbHVlLCBzaXplb2YoVCkpOyAvLyBV
c2Ugc3RkOjptZW1jcHkgdG8gYXZvaWQgc3RyaWN0IGFsaWFzaW5nIGlzc3Vlcy4KKyAgICB9Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNldCh2b2lkKiBsb2dpY2FsQmFzZUFk
ZHJlc3MsIHB0cmRpZmZfdCBvZmZzZXQsIFQgdmFsdWUpCisgICAgeworICAgICAgICBzZXQ8VD4o
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obG9naWNhbEJhc2VBZGRyZXNzKSArIG9mZnNldCwg
dmFsdWUpOwogICAgIH0KIAogICAgIGJvb2wgaGFzV3JpdGVzVG9GbHVzaCgpIGNvbnN0IHsgcmV0
dXJuICEhbV9kaXJ0eUJpdHM7IH0KQEAgLTgwLDEyICs5NCwxMCBAQCBwcml2YXRlOgogICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSA8PCAob2Zmc2V0ID4+IHNfY2h1bmtT
aXplU2hpZnQpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0g
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGU+
Ci0gICAgVCBwaHlzaWNhbEFkZHJlc3NGb3Iodm9pZCogbG9naWNhbEFkZHJlc3MpCisgICAgdm9p
ZCogcGh5c2ljYWxBZGRyZXNzRm9yKHZvaWQqIGxvZ2ljYWxBZGRyZXNzKQogICAgIHsKICAgICAg
ICAgdWludHB0cl90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihsb2dpY2Fs
QWRkcmVzcykgJiBzX3BhZ2VNYXNrOwotICAgICAgICB2b2lkKiBwaHlzaWNhbEFkZHJlc3MgPSBy
ZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmbV9idWZmZXIpICsgb2Zmc2V0OwotICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPihwaHlzaWNhbEFkZHJlc3MpOworICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJm1fYnVmZmVyKSArIG9mZnNldDsKICAgICB9
CiAKICAgICB2b2lkIGZsdXNoV3JpdGVzKCk7CkBAIC0xMjMsMTMgKzEzNSwxOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCogbG93V2F0ZXJtYXJrKCkgeyByZXR1cm4gbV9sb3dXYXRlcm1hcms7IH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0
ZDo6aXNfc2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFs
dWUsIFQ+Ojp0eXBlIGdldCh2b2lkKiBhZGRyZXNzKQorICAgIFQgZ2V0KHZvaWQqIGFkZHJlc3Mp
CiAgICAgewogICAgICAgICBQYWdlKiBwYWdlID0gcGFnZUZvcihhZGRyZXNzKTsKICAgICAgICAg
cmV0dXJuIHBhZ2UtPmdldDxUPihhZGRyZXNzKTsKICAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KKyAgICBUIGdldCh2b2lkKiBsb2dpY2FsQmFzZUFkZHJlc3MsIHB0cmRpZmZfdCBvZmZz
ZXQpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0PFQ+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KGxvZ2ljYWxCYXNlQWRkcmVzcykgKyBvZmZzZXQpOworICAgIH0KIAotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNf
c2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWU+Ojp0
eXBlPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBzZXQodm9pZCogYWRkcmVz
cywgVCB2YWx1ZSkKICAgICB7CiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBwYWdlRm9yKGFkZHJlc3Mp
OwpAQCAtMTQyLDE4ICsxNTksMTAgQEAgcHVibGljOgogICAgICAgICBpZiAoY2h1bmtBZGRyZXNz
IDwgbV9sb3dXYXRlcm1hcmspCiAgICAgICAgICAgICBtX2xvd1dhdGVybWFyayA9IGNodW5rQWRk
cmVzczsKICAgICB9Ci0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2
PFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+Ojp0eXBlIGdldCh2b2lkKiBhZGRyZXNzKQotICAgIHsKLSAg
ICAgICAgUGFnZSogcGFnZSA9IHBhZ2VGb3IoYWRkcmVzcyk7Ci0gICAgICAgIHJldHVybiBiaXR3
aXNlX2Nhc3Q8ZG91YmxlPihwYWdlLT5nZXQ8dWludDY0X3Q+KGFkZHJlc3MpKTsKLSAgICB9Ci0K
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHN0ZDo6aXNfc2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBl
Pjo6dmFsdWU+Ojp0eXBlPgotICAgIHZvaWQgc2V0KHZvaWQqIGFkZHJlc3MsIGRvdWJsZSB2YWx1
ZSkKKyAgICB2b2lkIHNldCh2b2lkKiBsb2dpY2FsQmFzZUFkZHJlc3MsIHB0cmRpZmZfdCBvZmZz
ZXQsIFQgdmFsdWUpCiAgICAgewotICAgICAgICBzZXQ8dWludDY0X3Q+KGFkZHJlc3MsIGJpdHdp
c2VfY2FzdDx1aW50NjRfdD4odmFsdWUpKTsKKyAgICAgICAgc2V0PFQ+KHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KGxvZ2ljYWxCYXNlQWRkcmVzcykgKyBvZmZzZXQsIHZhbHVlKTsKICAgICB9
CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBQYWdlKiBlbnN1cmVQYWdlRm9yKHZvaWQqIGFkZHJl
c3MpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJv
ZmlsZS5jcHAJKHJldmlzaW9uIDIyMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Bcml0aFByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMyLDggQEAKIG5hbWVz
cGFjZSBKU0MgewogCiAjaWYgRU5BQkxFKEpJVCkKKy8vIEZJWE1FOiBUaGlzIGlzIGJlaW5nIHN1
cHBsYW50ZWQgYnkgb2JzZXJ2ZVJlc3VsdCgpLiBSZW1vdmUgdGhpcyBvbmUKKy8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUgaGFzIGJlZW4gZml4ZWQuCiB2
b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpT
VmFsdWVSZWdzIHJlZ3MsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSkKIHsKICAgICBpZiAoIXNob3Vs
ZEVtaXRTZXREb3VibGUoKSAmJiAhc2hvdWxkRW1pdFNldE5vbk51bWJlcigpKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaAkocmV2aXNpb24g
MjIxMjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTIxMSw2ICsyMTEsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEpJVCkg
ICAgCiAgICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWda
ZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkgaWYgaXQgc2VlcyBhCiAgICAgLy8gZG91YmxlLiBT
ZXRzIE5vbk51bWJlciBpZiBpdCBzZWVzIGEgbm9uLW51bWJlci4KKyAgICAvLyBGSVhNRTogVGhp
cyBpcyBiZWluZyBzdXBwbGFudGVkIGJ5IG9ic2VydmVSZXN1bHQoKS4gUmVtb3ZlIHRoaXMgb25l
CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NSBo
YXMgYmVlbiBmaXhlZC4KICAgICB2b2lkIGVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYs
IEpTVmFsdWVSZWdzLCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycyk7CiAgICAg
CiAgICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJv
RG91YmxlIHwgTmVnWmVyb0RvdWJsZSkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQXJyYXlQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCShyZXZpc2lvbiAyMjEyMjkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjE4LDYgKzIxOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqKTsKICAgICB2b2lkIGNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sq
LCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKTsKICAgICAKKyAgICB2b2lkIG9ic2VydmVB
cnJheU1vZGUoQXJyYXlNb2RlcyBtb2RlKSB7IG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHw9IG1vZGU7
IH0KICAgICBBcnJheU1vZGVzIG9ic2VydmVkQXJyYXlNb2Rlcyhjb25zdCBDb25jdXJyZW50SlNM
b2NrZXImKSBjb25zdCB7IHJldHVybiBtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJvb2wg
bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNv
bnN0IHsgcmV0dXJuIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzOyB9CiAgICAgCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNp
b24gMjIxMjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMTUsNiArMjMxNSw0OCBAQCBib29sIENvZGVCbG9jazo6
Y2hlY2tJZk9wdGltaXphdGlvblRocmVzCiAgICAgcmV0dXJuIG1faml0RXhlY3V0ZUNvdW50ZXIu
Y2hlY2tJZlRocmVzaG9sZENyb3NzZWRBbmRTZXQodGhpcyk7CiB9CiAKK2F1dG8gQ29kZUJsb2Nr
Ojp1cGRhdGVPU1JFeGl0Q291bnRlckFuZENoZWNrSWZOZWVkVG9SZW9wdGltaXplKERGRzo6T1NS
RXhpdEJhc2UmIGV4aXQpIC0+IE9wdGltaXplQWN0aW9uCit7CisgICAgZXhpdC5tX2NvdW50Kys7
CisKKyAgICBpZiAoIWV4aXRLaW5kTWF5SmV0dGlzb24oZXhpdC5tX2tpbmQpKQorICAgICAgICBy
ZXR1cm4gT3B0aW1pemVBY3Rpb246Ok5vbmU7CisKKyAgICBtX29zckV4aXRDb3VudGVyKys7CisK
KyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gYmFzZWxpbmVBbHRlcm5hdGl2ZSgp
OworICAgIGlmIChVTkxJS0VMWShiYXNlbGluZUNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIo
KS5oYXNDcm9zc2VkVGhyZXNob2xkKCkpKQorICAgICAgICByZXR1cm4gT3B0aW1pemVBY3Rpb246
Ok9wdGltaXplTm93OworCisgICAgLy8gV2Ugd2FudCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3Mg
YSBwb3NzaWJpbGl0eSB0aGF0IHdlJ3JlIGluIGEgbG9vcC4gRm9yIHRoZSBvdXRlcm1vc3QKKyAg
ICAvLyBjb2RlIGJsb2NrIGluIHRoZSBpbmxpbmUgc3RhY2ssIHdlIGhhbmRsZSB0aGlzIGFwcHJv
cHJpYXRlbHkgYnkgaGF2aW5nIHRoZSBsb29wIE9TUiB0cmlnZ2VyCisgICAgLy8gY2hlY2sgdGhl
IGV4aXQgY291bnQgb2YgdGhlIHJlcGxhY2VtZW50IG9mIHRoZSBDb2RlQmxvY2sgZnJvbSB3aGlj
aCB3ZSBhcmUgT1NSaW5nLiBUaGUKKyAgICAvLyBwcm9ibGVtIGlzIHRoZSBpbmxpbmVkIGZ1bmN0
aW9ucywgd2hpY2ggbWlnaHQgYWxzbyBoYXZlIGxvb3BzLCBidXQgd2hvc2UgYmFzZWxpbmUgdmVy
c2lvbnMKKyAgICAvLyBkb24ndCBrbm93IHdoZXJlIHRvIGxvb2sgZm9yIHRoZSBleGl0IGNvdW50
LiBGaWd1cmUgb3V0IGlmIHRob3NlIGxvb3BzIGFyZSBzZXZlcmUgZW5vdWdoCisgICAgLy8gdGhh
dCB3ZSBoYWQgdHJpZWQgdG8gT1NSIGVudGVyLiBJZiBzbywgdGhlbiB3ZSBzaG91bGQgdXNlIHRo
ZSBsb29wIHJlb3B0aW1pemF0aW9uIHRyaWdnZXIuCisgICAgLy8gT3RoZXJ3aXNlLCB3ZSBzaG91
bGQgdXNlIHRoZSBub3JtYWwgcmVvcHRpbWl6YXRpb24gdHJpZ2dlci4KKworICAgIGJvb2wgZGlk
VHJ5VG9FbnRlckluTG9vcCA9IGZhbHNlOworICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lKiBpbmxp
bmVDYWxsRnJhbWUgPSBleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGlubGluZUNh
bGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1lID0gaW5saW5lQ2FsbEZyYW1lLT5kaXJlY3RDYWxsZXIu
aW5saW5lQ2FsbEZyYW1lKSB7CisgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5l
Q29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgp
KSB7CisgICAgICAgICAgICBkaWRUcnlUb0VudGVySW5Mb29wID0gdHJ1ZTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgdWludDMyX3QgdGhyZXNob2xkID0gZGlk
VHJ5VG9FbnRlckluTG9vcAorICAgICAgICA/IGV4aXRDb3VudFRocmVzaG9sZEZvclJlb3B0aW1p
emF0aW9uRnJvbUxvb3AoKQorICAgICAgICA6IGV4aXRDb3VudFRocmVzaG9sZEZvclJlb3B0aW1p
emF0aW9uKCk7CisKKyAgICBpZiAobV9vc3JFeGl0Q291bnRlciA+IHRocmVzaG9sZCkKKyAgICAg
ICAgcmV0dXJuIE9wdGltaXplQWN0aW9uOjpPcHRpbWl6ZU5vdzsKKworICAgIC8vIEFkanVzdCB0
aGUgZXhlY3V0aW9uIGNvdW50ZXIgc3VjaCB0aGF0IHRoZSB0YXJnZXQgaXMgdG8gb25seSBvcHRp
bWl6ZSBhZnRlciBhIHdoaWxlLgorICAgIGludDMyX3QgYWN0aXZlVGhyZXNob2xkID0gYmFzZWxp
bmVDb2RlQmxvY2stPmFkanVzdGVkQ291bnRlclZhbHVlKE9wdGlvbnM6OnRocmVzaG9sZEZvck9w
dGltaXplQWZ0ZXJMb25nV2FybVVwKCkpOworICAgIG1faml0RXhlY3V0ZUNvdW50ZXIuc2V0TmV3
VGhyZXNob2xkKGFjdGl2ZVRocmVzaG9sZCwgYmFzZWxpbmVDb2RlQmxvY2spOworICAgIHJldHVy
biBPcHRpbWl6ZUFjdGlvbjo6Tm9uZTsKK30KKwogdm9pZCBDb2RlQmxvY2s6Om9wdGltaXplTmV4
dEludm9jYXRpb24oKQogewogICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMjEy
MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc3LDYgKzc3LDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCituYW1lc3Bh
Y2UgREZHIHsKK3N0cnVjdCBPU1JFeGl0QmFzZTsKK30gLy8gbmFtZXNwYWNlIERGRworCiBjbGFz
cyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM7CiBjbGFzcyBDb2RlQmxvY2tTZXQ7CiBjbGFzcyBF
eGVjU3RhdGU7CkBAIC03NjIsOCArNzY2LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY291bnRP
U1JFeGl0KCkgeyBtX29zckV4aXRDb3VudGVyKys7IH0KIAotICAgIHVpbnQzMl90KiBhZGRyZXNz
T2ZPU1JFeGl0Q291bnRlcigpIHsgcmV0dXJuICZtX29zckV4aXRDb3VudGVyOyB9CisgICAgZW51
bSBjbGFzcyBPcHRpbWl6ZUFjdGlvbiB7IE5vbmUsIE9wdGltaXplTm93IH07CisgICAgT3B0aW1p
emVBY3Rpb24gdXBkYXRlT1NSRXhpdENvdW50ZXJBbmRDaGVja0lmTmVlZFRvUmVvcHRpbWl6ZShE
Rkc6Ok9TUkV4aXRCYXNlJik7CiAKKyAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSBm
aXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NS4KICAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mT1NSRXhpdENvdW50ZXIoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoQ29kZUJsb2NrLCBtX29zckV4aXRDb3VudGVyKTsgfQogCiAgICAgdWludDMyX3Qg
YWRqdXN0ZWRFeGl0Q291bnRUaHJlc2hvbGQodWludDMyX3QgZGVzaXJlZFRocmVzaG9sZCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRpb25Db3Vu
dGVyLmgJKHJldmlzaW9uIDIyMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FeGVjdXRpb25Db3VudGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgZW51
bSBDb3VudGluZ1ZhcmlhbnQgewogZG91YmxlIGFwcGx5TWVtb3J5VXNhZ2VIZXVyaXN0aWNzKGlu
dDMyX3QgdmFsdWUsIENvZGVCbG9jayopOwogaW50MzJfdCBhcHBseU1lbW9yeVVzYWdlSGV1cmlz
dGljc0FuZENvbnZlcnRUb0ludChpbnQzMl90IHZhbHVlLCBDb2RlQmxvY2sqKTsKIAorLy8gRklY
TUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzUxNDUuCiBpbmxpbmUgaW50MzJfdCBmb3JtYXR0ZWRUb3RhbEV4ZWN1dGlv
bkNvdW50KGZsb2F0IHZhbHVlKQogewogICAgIHVuaW9uIHsKQEAgLTU3LDYgKzU4LDcgQEAgcHVi
bGljOgogICAgIEV4ZWN1dGlvbkNvdW50ZXIoKTsKICAgICB2b2lkIGZvcmNlU2xvd1BhdGhDb25j
dXJyZW50bHkoKTsgLy8gSWYgeW91IHVzZSB0aGlzLCBjaGVja0lmVGhyZXNob2xkQ3Jvc3NlZEFu
ZFNldCgpIG1heSBzdGlsbCByZXR1cm4gZmFsc2UuCiAgICAgYm9vbCBjaGVja0lmVGhyZXNob2xk
Q3Jvc3NlZEFuZFNldChDb2RlQmxvY2sqKTsKKyAgICBib29sIGhhc0Nyb3NzZWRUaHJlc2hvbGQo
KSBjb25zdCB7IHJldHVybiBtX2NvdW50ZXIgPj0gMDsgfQogICAgIHZvaWQgc2V0TmV3VGhyZXNo
b2xkKGludDMyX3QgdGhyZXNob2xkLCBDb2RlQmxvY2sqKTsKICAgICB2b2lkIGRlZmVySW5kZWZp
bml0ZWx5KCk7CiAgICAgZG91YmxlIGNvdW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
ZG91YmxlPihtX3RvdGFsQ291bnQpICsgbV9jb3VudGVyOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FW
YWx1ZVByb2ZpbGUuY3BwCShyZXZpc2lvbiAyMjEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDYsNiArNDYsOCBAQCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
IE1ldGhvZE9mR2V0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorLy8gRklYTUU6IFRoaXMgaXMg
YmVpbmcgc3VwcGxhbnRlZCBieSByZXBvcnRWYWx1ZSgpLiBSZW1vdmUgdGhpcyBvbmUKKy8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUgaGFzIGJlZW4gZml4
ZWQuCiB2b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZShD
Q2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncykgY29uc3QKIHsKICAgICBzd2l0Y2gg
KG1fa2luZCkgewpAQCAtNzQsNiArNzYsMzQgQEAgdm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQ
cm9maWxlOjplbWl0UgogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3Zv
aWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6cmVwb3J0VmFsdWUoSlNWYWx1ZSB2YWx1
ZSkKK3sKKyAgICBzd2l0Y2ggKG1fa2luZCkgeworICAgIGNhc2UgTm9uZToKKyAgICAgICAgcmV0
dXJuOworCisgICAgY2FzZSBSZWFkeToKKyAgICAgICAgKnUucHJvZmlsZS0+c3BlY0ZhaWxCdWNr
ZXQoMCkgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOworICAgICAgICByZXR1cm47CisKKyAgICBj
YXNlIExhenlPcGVyYW5kOiB7CisgICAgICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5IGtl
eSh1LmxhenlPcGVyYW5kLmJ5dGVjb2RlT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIodS5sYXp5T3Bl
cmFuZC5vcGVyYW5kKSk7CisKKyAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcih1Lmxh
enlPcGVyYW5kLmNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGUqIHByb2ZpbGUgPQorICAgICAgICB1LmxhenlPcGVyYW5kLmNvZGVCbG9jay0+bGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVzKCkuYWRkKGxvY2tlciwga2V5KTsKKyAgICAgICAgKnByb2ZpbGUt
PnNwZWNGYWlsQnVja2V0KDApID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGNhc2UgQXJpdGhQcm9maWxlUmVhZHk6IHsKKyAgICAgICAgdS5h
cml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQodmFsdWUpOworICAgICAgICByZXR1cm47CisgICAg
fSB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZS5oCShyZXZpc2lvbiAyMjEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTcwLDkgKzcwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgQ29kZUJsb2NrKiwgY29uc3QgTGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmKTsKICAgICAKICAgICBleHBsaWNpdCBvcGVyYXRvciBi
b29sKCkgY29uc3QgeyByZXR1cm4gbV9raW5kICE9IE5vbmU7IH0KLSAgICAKKworICAgIC8vIEZJ
WE1FOiBlbWl0UmVwb3J0VmFsdWUgaXMgYmVpbmcgc3VwcGxhbnRlZCBieSByZXBvcnRWYWx1ZSgp
LiBSZW1vdmUgdGhpcyBvbmUKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc1MTQ1IGhhcyBiZWVuIGZpeGVkLgogICAgIHZvaWQgZW1pdFJlcG9ydFZhbHVl
KENDYWxsSGVscGVycyYsIEpTVmFsdWVSZWdzKSBjb25zdDsKLSAgICAKKyAgICB2b2lkIHJlcG9y
dFZhbHVlKEpTVmFsdWUpOworCiBwcml2YXRlOgogICAgIGVudW0gS2luZCB7CiAgICAgICAgIE5v
bmUsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lv
biAyMjEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC04OSw3ICs4OSw3IEBAIHN0YXRpYyBDb21waWxhdGlvblJl
c3VsdCBjb21waWxlSW1wbCgKICAgICAKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBhbnkgc3R1YnMg
dGhhdCB0aGUgREZHIGlzIGdvaW5nIHRvIHVzZSBhcmUgaW5pdGlhbGl6ZWQuIFdlIHdhbnQgdG8K
ICAgICAvLyBtYWtlIHN1cmUgdGhhdCBhbGwgSklUIGNvZGUgZ2VuZXJhdGlvbiBkb2VzIGZpbmFs
aXphdGlvbiBvbiB0aGUgbWFpbiB0aHJlYWQuCi0gICAgdm0uZ2V0Q1RJU3R1Yihvc3JFeGl0R2Vu
ZXJhdGlvblRodW5rR2VuZXJhdG9yKTsKKyAgICB2bS5nZXRDVElTdHViKG9zckV4aXRUaHVua0dl
bmVyYXRvcik7CiAgICAgdm0uZ2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1Bh
dGhHZW5lcmF0b3IpOwogICAgIHZtLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcik7
CiAgICAgdm0uZ2V0Q1RJU3R1YihsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJl
dmlzaW9uIDIyMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDMsNyArMzAzLDcgQEAgdm9pZCBKSVRDb21waWxl
cjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgICAgICAgICAgbGlua0J1ZmZlci5sb2NhdGlv
bk9mTmVhckNhbGwocmVjb3JkLmNhbGwpKTsKICAgICB9CiAgICAgCi0gICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIG9zckV4aXRUaHVuayA9IHZtKCktPmdldENUSVN0dWIob3NyRXhpdEdlbmVyYXRp
b25UaHVua0dlbmVyYXRvcik7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRUaHVu
ayA9IHZtKCktPmdldENUSVN0dWIob3NyRXhpdFRodW5rR2VuZXJhdG9yKTsKICAgICBDb2RlTG9j
YXRpb25MYWJlbCB0YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbChvc3JFeGl0VGh1bmsuY29kZSgp
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9qaXRDb2RlLT5vc3JFeGl0LnNpemUo
KTsgKytpKSB7CiAgICAgICAgIE9TUkV4aXQmIGV4aXQgPSBtX2ppdENvZGUtPm9zckV4aXRbaV07
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHJldmlzaW9u
IDIyMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjksMTggKzI5LDIyMyBAQAogI2lmIEVOQUJMRShERkdfSklUKQog
CiAjaW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzLmgiCisjaW5jbHVkZSAiQ2xvbmVkQXJndW1lbnRz
LmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdNYXlFeGl0LmgiCi0jaW5j
bHVkZSAiREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdFBy
ZXBhcmF0aW9uLmgiCiAjaW5jbHVkZSAiREZHT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkRGR1Nw
ZWN1bGF0aXZlSklULmgiCi0jaW5jbHVkZSAiRnJhbWVUcmFjZXJzLmgiCisjaW5jbHVkZSAiRGly
ZWN0QXJndW1lbnRzLmgiCisjaW5jbHVkZSAiSW5saW5lQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJPcGVyYW5k
c0lubGluZXMuaCIKKyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKKyNpbmNsdWRlICJQcm9iZUZy
YW1lLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAordXNpbmcgQ1BVU3Rh
dGUgPSBQcm9iZTo6Q1BVU3RhdGU7Cit1c2luZyBDb250ZXh0ID0gUHJvYmU6OkNvbnRleHQ7Cit1
c2luZyBGcmFtZSA9IFByb2JlOjpGcmFtZTsKKworc3RhdGljIHZvaWQgcHJpbnRPU1JFeGl0KENv
bnRleHQmLCB1aW50MzJfdCBvc3JFeGl0SW5kZXgsIGNvbnN0IE9TUkV4aXQmKTsKKworc3RhdGlj
IEpTVmFsdWUganNWYWx1ZUZvcihDUFVTdGF0ZSYgY3B1LCBKU1ZhbHVlU291cmNlIHNvdXJjZSkK
K3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGlmIChzb3VyY2UuaXNBZGRyZXNzKCkpCisgICAg
ICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4oY3B1Lmdwcjx1aW50OF90Kj4o
c291cmNlLmJhc2UoKSkgKyBzb3VyY2Uub2Zmc2V0KCkpOworICAgIHJldHVybiBKU1ZhbHVlOjpk
ZWNvZGUoY3B1LmdwcjxFbmNvZGVkSlNWYWx1ZT4oc291cmNlLmdwcigpKSk7CisjZWxzZQorICAg
IGlmIChzb3VyY2UuaXNBZGRyZXNzKCkpCisgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2Fz
dDxKU1ZhbHVlKj4oY3B1Lmdwcjx1aW50OF90Kj4oc291cmNlLmJhc2UoKSkgKyBzb3VyY2Uub2Zm
c2V0KCkpOworICAgIGlmIChzb3VyY2UuaGFzS25vd25UYWcoKSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWUoc291cmNlLnRhZygpLCBjcHUuZ3ByPGludDMyX3Q+KHNvdXJjZS5wYXlsb2FkR1BSKCkp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZShjcHUuZ3ByPGludDMyX3Q+KHNvdXJjZS50YWdHUFIoKSks
IGNwdS5ncHI8aW50MzJfdD4oc291cmNlLnBheWxvYWRHUFIoKSkpOworI2VuZGlmCit9CisKKyNp
ZiBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKKworLy8gQmFzZWQgb24gQXNz
ZW1ibHlIZWxwZXJzOjplbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9yKCkuCitzdGF0aWMgdm9pZCBy
ZXN0b3JlQ2FsbGVlU2F2ZXNGb3IoQ29udGV4dCYgY29udGV4dCwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCit7CisgICAgQVNTRVJUKGNvZGVCbG9jayk7CisKKyAgICBSZWdpc3RlckF0T2Zmc2V0TGlz
dCogY2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBS
ZWdpc3RlclNldCBkb250UmVzdG9yZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0
OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxsRlBScygpKTsKKyAgICB1bnNpZ25l
ZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKKworICAgIHVpbnRwdHJfdCog
cGh5c2ljYWxTdGFja0ZyYW1lID0gY29udGV4dC5mcDx1aW50cHRyX3QqPigpOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsKKyAgICAgICAgUmVnaXN0
ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChpKTsKKyAgICAgICAgaWYgKGRvbnRS
ZXN0b3JlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgLy8gVGhlIGNhbGxlZSBzYXZlZCB2YWx1ZXMgY29tZSBmcm9tIHRoZSBvcmlnaW5h
bCBzdGFjaywgbm90IHRoZSByZWNvdmVyZWQgc3RhY2suCisgICAgICAgIC8vIEhlbmNlLCB3ZSBy
ZWFkIHRoZSB2YWx1ZXMgZGlyZWN0bHkgZnJvbSB0aGUgcGh5c2ljYWwgc3RhY2sgbWVtb3J5IGlu
c3RlYWQgb2YKKyAgICAgICAgLy8gZ29pbmcgdGhyb3VnaCBjb250ZXh0LnN0YWNrKCkuCisgICAg
ICAgIEFTU0VSVCghKGVudHJ5Lm9mZnNldCgpICUgc2l6ZW9mKHVpbnRwdHJfdCkpKTsKKyAgICAg
ICAgY29udGV4dC5ncHIoZW50cnkucmVnKCkuZ3ByKCkpID0gcGh5c2ljYWxTdGFja0ZyYW1lW2Vu
dHJ5Lm9mZnNldCgpIC8gc2l6ZW9mKHVpbnRwdHJfdCldOworICAgIH0KK30KKworLy8gQmFzZWQg
b24gQXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKCkuCitzdGF0aWMgdm9p
ZCBzYXZlQ2FsbGVlU2F2ZXNGb3IoQ29udGV4dCYgY29udGV4dCwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCit7CisgICAgYXV0byYgc3RhY2sgPSBjb250ZXh0LnN0YWNrKCk7CisgICAgQVNTRVJUKGNv
ZGVCbG9jayk7CisKKyAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSBjb2Rl
QmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlclNldCBkb250U2F2ZVJl
Z2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdp
c3RlclNldDo6YWxsRlBScygpKTsKKyAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVl
U2F2ZXMtPnNpemUoKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNv
dW50OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVz
LT5hdChpKTsKKyAgICAgICAgaWYgKGRvbnRTYXZlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgc3RhY2suc2V0KGNvbnRleHQuZnAoKSwg
ZW50cnkub2Zmc2V0KCksIGNvbnRleHQuZ3ByPHVpbnRwdHJfdD4oZW50cnkucmVnKCkuZ3ByKCkp
KTsKKyAgICB9Cit9CisKKy8vIEJhc2VkIG9uIEFzc2VtYmx5SGVscGVyczo6cmVzdG9yZUNhbGxl
ZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKCkuCitzdGF0aWMgdm9pZCBy
ZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoQ29udGV4
dCYgY29udGV4dCkKK3sKKyAgICBWTSYgdm0gPSAqY29udGV4dC5hcmc8Vk0qPigpOworICAgIGF1
dG8mIHN0YWNrID0gY29udGV4dC5zdGFjaygpOworCisgICAgUmVnaXN0ZXJBdE9mZnNldExpc3Qq
IGFsbENhbGxlZVNhdmVzID0gVk06OmdldEFsbENhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKTsK
KyAgICBSZWdpc3RlclNldCBkb250UmVzdG9yZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0OjpzdGFj
a1JlZ2lzdGVycygpOworICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBhbGxDYWxsZWVTYXZl
cy0+c2l6ZSgpOworCisgICAgVk1FbnRyeVJlY29yZCogZW50cnlSZWNvcmQgPSB2bUVudHJ5UmVj
b3JkKHZtLnRvcFZNRW50cnlGcmFtZSk7CisgICAgdm9pZCogY2FsbGVlU2F2ZUJ1ZmZlciA9IGVu
dHJ5UmVjb3JkLT5jYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyOworCisgICAgLy8gUmVzdG9yZSBh
bGwgY2FsbGVlIHNhdmVzLgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNv
dW50OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNh
dmVzLT5hdChpKTsKKyAgICAgICAgaWYgKGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdldChlbnRyeS5y
ZWcoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGVudHJ5LnJlZygpLmlz
R1BSKCkpCisgICAgICAgICAgICBjb250ZXh0LmdwcihlbnRyeS5yZWcoKS5ncHIoKSkgPSBzdGFj
ay5nZXQ8dWludHB0cl90PihjYWxsZWVTYXZlQnVmZmVyLCBlbnRyeS5vZmZzZXQoKSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnRleHQuZnByKGVudHJ5LnJlZygpLmZwcigpKSA9IHN0
YWNrLmdldDxkb3VibGU+KGNhbGxlZVNhdmVCdWZmZXIsIGVudHJ5Lm9mZnNldCgpKTsKKyAgICB9
Cit9CisKKy8vIEJhc2VkIG9uIEFzc2VtYmx5SGVscGVyczo6Y29weUNhbGxlZVNhdmVzVG9WTUVu
dHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcigpLgorc3RhdGljIHZvaWQgY29weUNhbGxlZVNhdmVz
VG9WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihDb250ZXh0JiBjb250ZXh0KQoreworICAg
IFZNJiB2bSA9ICpjb250ZXh0LmFyZzxWTSo+KCk7CisgICAgYXV0byYgc3RhY2sgPSBjb250ZXh0
LnN0YWNrKCk7CisKKyAgICBWTUVudHJ5UmVjb3JkKiBlbnRyeVJlY29yZCA9IHZtRW50cnlSZWNv
cmQodm0udG9wVk1FbnRyeUZyYW1lKTsKKyAgICB2b2lkKiBjYWxsZWVTYXZlc0J1ZmZlciA9IGVu
dHJ5UmVjb3JkLT5jYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyOworCisgICAgUmVnaXN0ZXJBdE9m
ZnNldExpc3QqIGFsbENhbGxlZVNhdmVzID0gVk06OmdldEFsbENhbGxlZVNhdmVSZWdpc3Rlck9m
ZnNldHMoKTsKKyAgICBSZWdpc3RlclNldCBkb250Q29weVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0
OjpzdGFja1JlZ2lzdGVycygpOworICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBhbGxDYWxs
ZWVTYXZlcy0+c2l6ZSgpOworCisgICAgQVNTRVJUKGlzNjRCaXQoKSk7IC8vIHdlIG5lZWQKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAg
IFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBhbGxDYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAg
IGlmIChkb250Q29weVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIGlmIChlbnRyeS5yZWcoKS5pc0dQUigpKQorICAgICAgICAgICAgc3Rh
Y2suc2V0KGNhbGxlZVNhdmVzQnVmZmVyLCBlbnRyeS5vZmZzZXQoKSwgY29udGV4dC5ncHI8dWlu
dHB0cl90PihlbnRyeS5yZWcoKS5ncHIoKSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBz
dGFjay5zZXQoY2FsbGVlU2F2ZXNCdWZmZXIsIGVudHJ5Lm9mZnNldCgpLCBjb250ZXh0LmZwcjx1
aW50cHRyX3Q+KGVudHJ5LnJlZygpLmZwcigpKSk7CisgICAgfQorfQorCisvLyBCYXNlZCBvbiBB
c3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoKS4KK3N0YXRpYyB2
b2lkIHNhdmVPckNvcHlDYWxsZWVTYXZlc0ZvcihDb250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgVmlydHVhbFJlZ2lzdGVyIG9mZnNldFZpcnR1YWxSZWdpc3RlciwgYm9vbCB3
YXNDYWxsZWRWaWFUYWlsQ2FsbCkKK3sKKyAgICBGcmFtZSBmcmFtZShjb250ZXh0LmZwKCksIGNv
bnRleHQuc3RhY2soKSk7CisgICAgQVNTRVJUKGNvZGVCbG9jayk7CisKKyAgICBSZWdpc3RlckF0
T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMo
KTsKKyAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJlZ2lz
dGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxsRlBScygpKTsKKyAgICB1
bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKKworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgUmVnaXN0ZXJTZXQgYmFzZWxpbmVDYWxsZWVTYXZlcyA9IFJlZ2lzdGVy
U2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOworI2VuZGlmCisKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIFJl
Z2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgIGlmIChk
b250U2F2ZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgdWludHB0cl90IHNhdmVkUmVnaXN0ZXJWYWx1ZTsKKworI2lmIFVTRShKU1ZB
TFVFMzJfNjQpCisgICAgICAgIFVOVVNFRF9QQVJBTSh3YXNDYWxsZWRWaWFUYWlsQ2FsbCk7Cisj
ZWxzZQorICAgICAgICBpZiAod2FzQ2FsbGVkVmlhVGFpbENhbGwgJiYgYmFzZWxpbmVDYWxsZWVT
YXZlcy5nZXQoZW50cnkucmVnKCkpKQorICAgICAgICAgICAgc2F2ZWRSZWdpc3RlclZhbHVlID0g
ZnJhbWUuZ2V0PHVpbnRwdHJfdD4oZW50cnkub2Zmc2V0KCkpOworICAgICAgICBlbHNlCisjZW5k
aWYKKyAgICAgICAgICAgIHNhdmVkUmVnaXN0ZXJWYWx1ZSA9IGNvbnRleHQuZ3ByKGVudHJ5LnJl
ZygpLmdwcigpKTsKKworICAgICAgICBmcmFtZS5zZXQob2Zmc2V0VmlydHVhbFJlZ2lzdGVyLm9m
ZnNldEluQnl0ZXMoKSArIGVudHJ5Lm9mZnNldCgpLCBzYXZlZFJlZ2lzdGVyVmFsdWUpOworICAg
IH0KK30KKyNlbHNlIC8vIG5vdCBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAK
Kworc3RhdGljIHZvaWQgcmVzdG9yZUNhbGxlZVNhdmVzRm9yKENvbnRleHQmLCBDb2RlQmxvY2sq
KSB7IH0KK3N0YXRpYyB2b2lkIHNhdmVDYWxsZWVTYXZlc0ZvcihDb250ZXh0JiwgQ29kZUJsb2Nr
KikgeyB9CitzdGF0aWMgdm9pZCByZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1FbnRyeUZyYW1lQ2Fs
bGVlU2F2ZXNCdWZmZXIoQ29udGV4dCYpIHsgfQorc3RhdGljIHZvaWQgY29weUNhbGxlZVNhdmVz
VG9WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihDb250ZXh0JikgeyB9CitzdGF0aWMgdm9p
ZCBzYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoQ29udGV4dCYsIENvZGVCbG9jayosIFZpcnR1YWxS
ZWdpc3RlciwgYm9vbCkgeyB9CisKKyNlbmRpZiAvLyBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JF
R0lTVEVSUyA+IDAKKworc3RhdGljIEpTQ2VsbCogY3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5n
RXhpdChDb250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5saW5lQ2FsbEZy
YW1lKiBpbmxpbmVDYWxsRnJhbWUsIEpTRnVuY3Rpb24qIGNhbGxlZSwgaW50MzJfdCBhcmd1bWVu
dENvdW50KQoreworICAgIFZNJiB2bSA9ICpjb250ZXh0LmFyZzxWTSo+KCk7CisKKyAgICBBU1NF
UlQodm0uaGVhcC5pc0RlZmVycmVkKCkpOworCisgICAgaWYgKGlubGluZUNhbGxGcmFtZSkKKyAg
ICAgICAgY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUoaW5s
aW5lQ2FsbEZyYW1lKTsKKworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFyZ3VtZW50Q291bnQgLSAx
OworICAgIHVuc2lnbmVkIGNhcGFjaXR5ID0gc3RkOjptYXgobGVuZ3RoLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSAxKSk7CisgICAgRGlyZWN0QXJn
dW1lbnRzKiByZXN1bHQgPSBEaXJlY3RBcmd1bWVudHM6OmNyZWF0ZSgKKyAgICAgICAgdm0sIGNv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmRpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSgpLCBsZW5n
dGgsIGNhcGFjaXR5KTsKKworICAgIHJlc3VsdC0+Y2FsbGVlKCkuc2V0KHZtLCByZXN1bHQsIGNh
bGxlZSk7CisKKyAgICB2b2lkKiBmcmFtZUJhc2UgPSBjb250ZXh0LmZwPFJlZ2lzdGVyKj4oKSAr
IChpbmxpbmVDYWxsRnJhbWUgPyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0IDogMCk7Cisg
ICAgRnJhbWUgZnJhbWUoZnJhbWVCYXNlLCBjb250ZXh0LnN0YWNrKCkpOworICAgIGZvciAodW5z
aWduZWQgaSA9IGxlbmd0aDsgaS0tOykKKyAgICAgICAgcmVzdWx0LT5zZXRJbmRleFF1aWNrbHko
dm0sIGksIGZyYW1lLmdldEFyZ3VtZW50PEpTVmFsdWU+KGkpKTsKKworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3N0YXRpYyBKU0NlbGwqIGNyZWF0ZUNsb25lZEFyZ3VtZW50c0R1cmluZ0V4aXQo
Q29udGV4dCYgY29udGV4dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIElubGluZUNhbGxGcmFtZSog
aW5saW5lQ2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBjYWxsZWUsIGludDMyX3QgYXJndW1lbnRDb3Vu
dCkKK3sKKyAgICBWTSYgdm0gPSAqY29udGV4dC5hcmc8Vk0qPigpOworICAgIEV4ZWNTdGF0ZSog
ZXhlYyA9IGNvbnRleHQuZnA8RXhlY1N0YXRlKj4oKTsKKworICAgIEFTU0VSVCh2bS5oZWFwLmlz
RGVmZXJyZWQoKSk7CisKKyAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKQorICAgICAgICBjb2RlQmxv
Y2sgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcklubGluZUNhbGxGcmFtZShpbmxpbmVDYWxsRnJhbWUp
OworCisgICAgdW5zaWduZWQgbGVuZ3RoID0gYXJndW1lbnRDb3VudCAtIDE7CisgICAgQ2xvbmVk
QXJndW1lbnRzKiByZXN1bHQgPSBDbG9uZWRBcmd1bWVudHM6OmNyZWF0ZUVtcHR5KAorICAgICAg
ICB2bSwgY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Y2xvbmVkQXJndW1lbnRzU3RydWN0dXJl
KCksIGNhbGxlZSwgbGVuZ3RoKTsKKworICAgIHZvaWQqIGZyYW1lQmFzZSA9IGNvbnRleHQuZnA8
UmVnaXN0ZXIqPigpICsgKGlubGluZUNhbGxGcmFtZSA/IGlubGluZUNhbGxGcmFtZS0+c3RhY2tP
ZmZzZXQgOiAwKTsKKyAgICBGcmFtZSBmcmFtZShmcmFtZUJhc2UsIGNvbnRleHQuc3RhY2soKSk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KQorICAgICAgICByZXN1bHQtPnB1
dERpcmVjdEluZGV4KGV4ZWMsIGksIGZyYW1lLmdldEFyZ3VtZW50PEpTVmFsdWU+KGkpKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCiBPU1JFeGl0OjpPU1JFeGl0KEV4aXRLaW5kIGtpbmQsIEpT
VmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSB2
YWx1ZVByb2ZpbGUsIFNwZWN1bGF0aXZlSklUKiBqaXQsIHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1
bnNpZ25lZCByZWNvdmVyeUluZGV4KQogICAgIDogT1NSRXhpdEJhc2Uoa2luZCwgaml0LT5tX29y
aWdpbi5mb3JFeGl0LCBqaXQtPm1fb3JpZ2luLnNlbWFudGljLCBqaXQtPm1fb3JpZ2luLndhc0hv
aXN0ZWQpCiAgICAgLCBtX2pzVmFsdWVTb3VyY2UoanNWYWx1ZVNvdXJjZSkKQEAgLTc4LDggKzI4
MywxMCBAQCB2b2lkIE9TUkV4aXQ6OmNvcnJlY3RKdW1wKExpbmtCdWZmZXImIGxpCiAgICAgbV9w
YXRjaGFibGVDb2RlT2Zmc2V0ID0gbGlua0J1ZmZlci5vZmZzZXRPZihsYWJlbCk7CiB9CiAKLXZv
aWQgT1NSRXhpdDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+JiBvcGVyYW5kcykKK3N0YXRpYyB2b2lkIGVtaXRSZXN0
b3JlQXJndW1lbnRzKENvbnRleHQmIGNvbnRleHQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25z
dCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMpCiB7CisgICAgRnJhbWUgZnJhbWUo
Y29udGV4dC5mcCgpLCBjb250ZXh0LnN0YWNrKCkpOworCiAgICAgSGFzaE1hcDxNaW5pZmllZElE
LCBpbnQ+IGFscmVhZHlBbGxvY2F0ZWRBcmd1bWVudHM7IC8vIE1hcHMgcGhhbnRvbSBhcmd1bWVu
dHMgbm9kZSBJRCB0byBvcGVyYW5kLgogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXgg
PCBvcGVyYW5kcy5zaXplKCk7ICsraW5kZXgpIHsKICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVy
eSYgcmVjb3ZlcnkgPSBvcGVyYW5kc1tpbmRleF07CkBAIC05MiwxNCArMjk5LDEyIEBAIHZvaWQg
T1NSRXhpdDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMoQ0NhbGwKICAgICAgICAgTWluaWZpZWRJRCBp
ZCA9IHJlY292ZXJ5Lm5vZGVJRCgpOwogICAgICAgICBhdXRvIGl0ZXIgPSBhbHJlYWR5QWxsb2Nh
dGVkQXJndW1lbnRzLmZpbmQoaWQpOwogICAgICAgICBpZiAoaXRlciAhPSBhbHJlYWR5QWxsb2Nh
dGVkQXJndW1lbnRzLmVuZCgpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlUmVncyByZWdzID0gSlNW
YWx1ZVJlZ3M6OndpdGhUd29BdmFpbGFibGVSZWdzKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpy
ZWdUMSk7Ci0gICAgICAgICAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVscGVyczo6YWRkcmVzc0Zv
cihpdGVyLT52YWx1ZSksIHJlZ3MpOwotICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUocmVncywg
Q0NhbGxIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGZyYW1lLnNl
dE9wZXJhbmQob3BlcmFuZCwgZnJhbWUuZ2V0T3BlcmFuZDxKU1ZhbHVlPihpdGVyLT52YWx1ZSkp
OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBJbmxpbmVDYWxs
RnJhbWUqIGlubGluZUNhbGxGcmFtZSA9Ci0gICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmpp
dENvZGUoKS0+ZGZnKCktPm1pbmlmaWVkREZHLmF0KGlkKS0+aW5saW5lQ2FsbEZyYW1lKCk7Cisg
ICAgICAgICAgICBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnKCktPm1pbmlmaWVkREZHLmF0KGlk
KS0+aW5saW5lQ2FsbEZyYW1lKCk7CiAKICAgICAgICAgaW50IHN0YWNrT2Zmc2V0OwogICAgICAg
ICBpZiAoaW5saW5lQ2FsbEZyYW1lKQpAQCAtMTA3LDUzICszMTIsNDggQEAgdm9pZCBPU1JFeGl0
OjplbWl0UmVzdG9yZUFyZ3VtZW50cyhDQ2FsbAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBz
dGFja09mZnNldCA9IDA7CiAKLSAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUgfHwgaW5saW5l
Q2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKSB7Ci0gICAgICAgICAgICBqaXQubG9hZFB0cigKLSAg
ICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Ioc3RhY2tPZmZzZXQgKyBD
YWxsRnJhbWVTbG90OjpjYWxsZWUpLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGppdC5tb3ZlKAotICAgICAgICAgICAgICAg
IEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZVJl
Y292ZXJ5LmNvbnN0YW50KCkuYXNDZWxsKCkpLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgfQorICAgICAgICBKU0Z1bmN0aW9uKiBjYWxsZWU7CisgICAgICAgIGlm
ICghaW5saW5lQ2FsbEZyYW1lIHx8IGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkKKyAg
ICAgICAgICAgIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZnJhbWUuZ2V0T3BlcmFuZDxK
U1ZhbHVlPihzdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkuYXNDZWxsKCkpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGlu
bGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkuY29uc3RhbnQoKS5hc0NlbGwoKSk7CiAKLSAg
ICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUgfHwgaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3Mo
KSkgewotICAgICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhl
bHBlcnM6OnBheWxvYWRGb3Ioc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50KSwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBqaXQubW92ZSgKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW0zMihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpLAotICAgICAg
ICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKLSAgICAgICAgfQorICAgICAgICBpbnQzMl90IGFy
Z3VtZW50Q291bnQ7CisgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lIHx8IGlubGluZUNhbGxG
cmFtZS0+aXNWYXJhcmdzKCkpCisgICAgICAgICAgICBhcmd1bWVudENvdW50ID0gZnJhbWUuZ2V0
T3BlcmFuZDxpbnQzMl90PihzdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQsIFBheWxvYWRPZmZzZXQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcmd1bWVudENv
dW50ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOwogCi0gICAgICAgIGppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoCi0gICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lKSwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86
OnJlZ1QxKTsKKyAgICAgICAgSlNDZWxsKiBhcmd1bWVudHNPYmplY3Q7CiAgICAgICAgIHN3aXRj
aCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBEaXJlY3RBcmd1bWVudHNU
aGF0V2VyZU5vdENyZWF0ZWQ6Ci0gICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb25DcmVhdGVEaXJlY3RB
cmd1bWVudHNEdXJpbmdFeGl0KSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICAgICAg
YXJndW1lbnRzT2JqZWN0ID0gY3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdChjb250ZXh0
LCBjb2RlQmxvY2ssIGlubGluZUNhbGxGcmFtZSwgY2FsbGVlLCBhcmd1bWVudENvdW50KTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENsb25lZEFyZ3VtZW50c1RoYXRXZXJlTm90
Q3JlYXRlZDoKLSAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50c0R1
cmluZ0V4aXQpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgICAgICBhcmd1bWVudHNP
YmplY3QgPSBjcmVhdGVDbG9uZWRBcmd1bWVudHNEdXJpbmdFeGl0KGNvbnRleHQsIGNvZGVCbG9j
aywgaW5saW5lQ2FsbEZyYW1lLCBjYWxsZWUsIGFyZ3VtZW50Q291bnQpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgaml0LmNh
bGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgICAgIGppdC5zdG9yZUNlbGwoR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Cisg
ICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgYXJndW1lbnRzT2JqZWN0KTsKIAogICAg
ICAgICBhbHJlYWR5QWxsb2NhdGVkQXJndW1lbnRzLmFkZChpZCwgb3BlcmFuZCk7CiAgICAgfQog
fQogCi12b2lkIEpJVF9PUEVSQVRJT04gT1NSRXhpdDo6Y29tcGlsZU9TUkV4aXQoRXhlY1N0YXRl
KiBleGVjKQordm9pZCBPU1JFeGl0OjpleGVjdXRlT1NSRXhpdChDb250ZXh0JiBjb250ZXh0KQog
ewotICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKCp2bSk7CisgICAgVk0mIHZtID0gKmNvbnRleHQuYXJnPFZNKj4oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBFeGVjU3RhdGUqIGV4
ZWMgPSBjb250ZXh0LmZwPEV4ZWNTdGF0ZSo+KCk7CisgICAgQVNTRVJUKCZleGVjLT52bSgpID09
ICZ2bSk7CiAKLSAgICBpZiAodm0tPmNhbGxGcmFtZUZvckNhdGNoKQotICAgICAgICBSRUxFQVNF
X0FTU0VSVCh2bS0+Y2FsbEZyYW1lRm9yQ2F0Y2ggPT0gZXhlYyk7CisgICAgaWYgKHZtLmNhbGxG
cmFtZUZvckNhdGNoKSB7CisgICAgICAgIGV4ZWMgPSB2bS5jYWxsRnJhbWVGb3JDYXRjaDsKKyAg
ICAgICAgY29udGV4dC5mcCgpID0gZXhlYzsKKyAgICB9CiAKICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwogICAgIEFTU0VSVChjb2RlQmxvY2spOwpAQCAtMTYx
LDE2ICszNjEsMTUgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIE9TUkV4aXQ6OmNvbXBpbGVPU1JFeAog
CiAgICAgLy8gSXQncyBzb3J0IG9mIHByZWZlcmFibGUgdGhhdCB3ZSBkb24ndCBHQyB3aGlsZSBp
biBoZXJlLiBBbnl3YXlzLCBkb2luZyBzbyB3b3VsZG4ndAogICAgIC8vIHJlYWxseSBiZSBwcm9m
aXRhYmxlLgotICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyh2bS0+aGVhcCk7CisgICAgRGVm
ZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOwogCi0gICAgdWludDMyX3QgZXhpdEluZGV4
ID0gdm0tPm9zckV4aXRJbmRleDsKKyAgICB1aW50MzJfdCBleGl0SW5kZXggPSB2bS5vc3JFeGl0
SW5kZXg7CiAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKS0+
b3NyRXhpdFtleGl0SW5kZXhdOwogCi0gICAgaWYgKHZtLT5jYWxsRnJhbWVGb3JDYXRjaCkKLSAg
ICAgICAgQVNTRVJUKGV4aXQubV9raW5kID09IEdlbmVyaWNVbndpbmQpOwotICAgIGlmIChleGl0
LmlzRXhjZXB0aW9uSGFuZGxlcigpKQotICAgICAgICBBU1NFUlRfVU5VU0VEKHNjb3BlLCAhIXNj
b3BlLmV4Y2VwdGlvbigpKTsKLSAgICAKKyAgICBBU1NFUlQoIXZtLmNhbGxGcmFtZUZvckNhdGNo
IHx8IGV4aXQubV9raW5kID09IEdlbmVyaWNVbndpbmQpOworICAgIEFTU0VSVF9VTlVTRUQoc2Nv
cGUsICFleGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpIHx8ICEhc2NvcGUuZXhjZXB0aW9uKCkpOwor
CisgICAgLy8gRW5zdXJlIHdlIGhhdmUgYmFzZWxpbmUgY29kZUJsb2NrcyB0byBPU1IgZXhpdCB0
by4KICAgICBwcmVwYXJlQ29kZU9yaWdpbkZvck9TUkV4aXQoZXhlYywgZXhpdC5tX2NvZGVPcmln
aW4pOwogCiAgICAgLy8gQ29tcHV0ZSB0aGUgdmFsdWUgcmVjb3Zlcmllcy4KQEAgLTE4MSw2MSAr
MzgwLDQ5IEBAIHZvaWQgSklUX09QRVJBVElPTiBPU1JFeGl0Ojpjb21waWxlT1NSRXgKICAgICBp
ZiAoZXhpdC5tX3JlY292ZXJ5SW5kZXggIT0gVUlOVF9NQVgpCiAgICAgICAgIHJlY292ZXJ5ID0g
JmNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKS0+c3BlY3VsYXRpb25SZWNvdmVyeVtleGl0Lm1f
cmVjb3ZlcnlJbmRleF07CiAKKyAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHJlbW92ZSB0aGlzIGlu
ZGVudGF0aW9uLCBidXQgSSdtIGxlYXZpbmcgaXQgaGVyZSB0byBtYWtlIHRoZSBwYXRjaCBlYXNp
ZXIKKyAgICAvLyB0byByZXZpZXcuIFdpbGwgdW5pbmRlbnQgdGhpcyBiZWZvcmUgbGFuZGluZy4K
ICAgICB7Ci0gICAgICAgIENDYWxsSGVscGVycyBqaXQoY29kZUJsb2NrKTsKLQogICAgICAgICBp
ZiAoZXhpdC5tX2tpbmQgPT0gR2VuZXJpY1Vud2luZCkgewogICAgICAgICAgICAgLy8gV2UgYXJl
IGFjdGluZyBhcyBhIGRlZmFjdG8gb3BfY2F0Y2ggYmVjYXVzZSB3ZSBhcnJpdmUgaGVyZSBmcm9t
IGdlbmVyaWNVbndpbmQoKS4KICAgICAgICAgICAgIC8vIFNvLCB3ZSBtdXN0IHJlc3RvcmUgb3Vy
IGNhbGwgZnJhbWUgYW5kIHN0YWNrIHBvaW50ZXIuCi0gICAgICAgICAgICBqaXQucmVzdG9yZUNh
bGxlZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKCp2bSk7Ci0gICAgICAg
ICAgICBqaXQubG9hZFB0cih2bS0+YWRkcmVzc09mQ2FsbEZyYW1lRm9yQ2F0Y2goKSwgR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICAgICAgcmVzdG9yZUNhbGxlZVNhdmVzRnJv
bVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKGNvbnRleHQpOworICAgICAgICAgICAgQVNT
RVJUKGNvbnRleHQuZnAoKSA9PSB2bS5jYWxsRnJhbWVGb3JDYXRjaCk7CiAgICAgICAgIH0KLSAg
ICAgICAgaml0LmFkZFB0cigKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KGNvZGVCbG9jay0+c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwKLSAg
ICAgICAgICAgIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgY29udGV4dC5zcCgpID0gY29udGV4dC5mcDx1aW50
OF90Kj4oKSArIChjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lz
dGVyKSk7CiAKLSAgICAgICAgaml0LmppdEFzc2VydEhhc1ZhbGlkQ2FsbEZyYW1lKCk7CisgICAg
ICAgIEFTU0VSVCghKGNvbnRleHQuZnA8dWludHB0cl90PigpICYgMHg3KSk7CiAKLSAgICAgICAg
aWYgKFVOTElLRUxZKHZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIgJiYgY29kZUJsb2NrLT5qaXRD
b2RlKCktPmRmZ0NvbW1vbigpLT5jb21waWxhdGlvbikpIHsKLSAgICAgICAgICAgIFByb2ZpbGVy
OjpEYXRhYmFzZSYgZGF0YWJhc2UgPSAqdm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlcjsKKyAgICAg
ICAgaWYgKFVOTElLRUxZKHZtLm1fcGVyQnl0ZWNvZGVQcm9maWxlciAmJiBjb2RlQmxvY2stPmpp
dENvZGUoKS0+ZGZnQ29tbW9uKCktPmNvbXBpbGF0aW9uKSkgeworICAgICAgICAgICAgUHJvZmls
ZXI6OkRhdGFiYXNlJiBkYXRhYmFzZSA9ICp2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXI7CiAgICAg
ICAgICAgICBQcm9maWxlcjo6Q29tcGlsYXRpb24qIGNvbXBpbGF0aW9uID0gY29kZUJsb2NrLT5q
aXRDb2RlKCktPmRmZ0NvbW1vbigpLT5jb21waWxhdGlvbi5nZXQoKTsKIAogICAgICAgICAgICAg
UHJvZmlsZXI6Ok9TUkV4aXQqIHByb2ZpbGVyRXhpdCA9IGNvbXBpbGF0aW9uLT5hZGRPU1JFeGl0
KAogICAgICAgICAgICAgICAgIGV4aXRJbmRleCwgUHJvZmlsZXI6Ok9yaWdpblN0YWNrKGRhdGFi
YXNlLCBjb2RlQmxvY2ssIGV4aXQubV9jb2RlT3JpZ2luKSwKICAgICAgICAgICAgICAgICBleGl0
Lm1fa2luZCwgZXhpdC5tX2tpbmQgPT0gVW5jb3VudGFibGVJbnZhbGlkYXRpb24pOwotICAgICAg
ICAgICAgaml0LmFkZDY0KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBDQ2FsbEhlbHBl
cnM6OkFic29sdXRlQWRkcmVzcyhwcm9maWxlckV4aXQtPmNvdW50ZXJBZGRyZXNzKCkpKTsKKyAg
ICAgICAgICAgIHByb2ZpbGVyRXhpdC0+aW5jQ291bnQoKTsKICAgICAgICAgfQogCi0gICAgICAg
IGNvbXBpbGVFeGl0KGppdCwgKnZtLCBleGl0LCBvcGVyYW5kcywgcmVjb3ZlcnkpOwotCi0gICAg
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBjb2RlQmxvY2spOwotICAgICAgICBleGl0
Lm1fY29kZSA9IEZJTkFMSVpFX0NPREVfSUYoCi0gICAgICAgICAgICBzaG91bGREdW1wRGlzYXNz
ZW1ibHkoKSB8fCBPcHRpb25zOjp2ZXJib3NlT1NSKCkgfHwgT3B0aW9uczo6dmVyYm9zZURGR09T
UkV4aXQoKSwKLSAgICAgICAgICAgIHBhdGNoQnVmZmVyLAotICAgICAgICAgICAgKCJERkcgT1NS
IGV4aXQgIyV1ICglcywgJXMpIGZyb20gJXMsIHdpdGggb3BlcmFuZHMgPSAlcyIsCisgICAgICAg
IGlmIChVTkxJS0VMWShPcHRpb25zOjp2ZXJib3NlT1NSKCkgfHwgT3B0aW9uczo6dmVyYm9zZURG
R09TUkV4aXQoKSkpIHsKKyAgICAgICAgICAgIGRhdGFMb2dGKCJERkcgT1NSIGV4aXQgIyV1ICgl
cywgJXMpIGZyb20gJXMsIHdpdGggb3BlcmFuZHMgPSAlcyIsCiAgICAgICAgICAgICAgICAgZXhp
dEluZGV4LCB0b0NTdHJpbmcoZXhpdC5tX2NvZGVPcmlnaW4pLmRhdGEoKSwKICAgICAgICAgICAg
ICAgICBleGl0S2luZFRvU3RyaW5nKGV4aXQubV9raW5kKSwgdG9DU3RyaW5nKCpjb2RlQmxvY2sp
LmRhdGEoKSwKLSAgICAgICAgICAgICAgICB0b0NTdHJpbmcoaWdub3JpbmdDb250ZXh0PER1bXBD
b250ZXh0PihvcGVyYW5kcykpLmRhdGEoKSkpOworICAgICAgICAgICAgICAgIHRvQ1N0cmluZyhp
Z25vcmluZ0NvbnRleHQ8RHVtcENvbnRleHQ+KG9wZXJhbmRzKSkuZGF0YSgpKTsKKyAgICAgICAg
fQogICAgIH0KIAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChleGl0LmNvZGVMb2Nh
dGlvbkZvclJlcGF0Y2goY29kZUJsb2NrKSwgQ29kZUxvY2F0aW9uTGFiZWwoZXhpdC5tX2NvZGUu
Y29kZSgpKSk7Ci0KLSAgICB2bS0+b3NyRXhpdEp1bXBEZXN0aW5hdGlvbiA9IGV4aXQubV9jb2Rl
LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOwotfQotCi12b2lkIE9TUkV4aXQ6OmNvbXBpbGVF
eGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0
IE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+JiBvcGVyYW5kcywgU3BlY3VsYXRpb25SZWNvdmVyeSog
cmVjb3ZlcnkpCi17Ci0gICAgaml0LmppdEFzc2VydFRhZ3NJblBsYWNlKCk7CisgICAgYXV0byYg
Y3B1ID0gY29udGV4dC5jcHU7CisgICAgRnJhbWUgZnJhbWUoY3B1LmZwKCksIGNvbnRleHQuc3Rh
Y2soKSk7CisgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IGNvZGVCbG9jay0+YmFz
ZWxpbmVBbHRlcm5hdGl2ZSgpOworICAgIEFTU0VSVChiYXNlbGluZUNvZGVCbG9jay0+aml0VHlw
ZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKIAotICAgIC8vIFByby1mb3JtYSBzdHVmZi4K
LSAgICBpZiAoT3B0aW9uczo6cHJpbnRFYWNoT1NSRXhpdCgpKSB7Ci0gICAgICAgIFNwZWN1bGF0
aW9uRmFpbHVyZURlYnVnSW5mbyogZGVidWdJbmZvID0gbmV3IFNwZWN1bGF0aW9uRmFpbHVyZURl
YnVnSW5mbzsKLSAgICAgICAgZGVidWdJbmZvLT5jb2RlQmxvY2sgPSBqaXQuY29kZUJsb2NrKCk7
Ci0gICAgICAgIGRlYnVnSW5mby0+a2luZCA9IGV4aXQubV9raW5kOwotICAgICAgICBkZWJ1Z0lu
Zm8tPmJ5dGVjb2RlT2Zmc2V0ID0gZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleDsKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgIEFTU0VSVChjcHUuZ3ByKEdQUkluZm86OnRhZ1R5cGVOdW1i
ZXJSZWdpc3RlcikgPT0gVGFnVHlwZU51bWJlcik7CisgICAgQVNTRVJUKGNwdS5ncHIoR1BSSW5m
bzo6dGFnTWFza1JlZ2lzdGVyKSA9PSBUYWdNYXNrKTsKKyNlbmRpZgogCi0gICAgICAgIGppdC5k
ZWJ1Z0NhbGwodm0sIGRlYnVnT3BlcmF0aW9uUHJpbnRTcGVjdWxhdGlvbkZhaWx1cmUsIGRlYnVn
SW5mbyk7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpwcmludEVhY2hPU1JFeGl0
KCkpKQorICAgICAgICBwcmludE9TUkV4aXQoY29udGV4dCwgdm0ub3NyRXhpdEluZGV4LCBleGl0
KTsKIAogICAgIC8vIFBlcmZvcm0gc3BlY3VsYXRpb24gcmVjb3ZlcnkuIFRoaXMgb25seSBjb21l
cyBpbnRvIHBsYXkgd2hlbiBhbiBvcGVyYXRpb24KICAgICAvLyBzdGFydHMgbXV0YXRpbmcgc3Rh
dGUgYmVmb3JlIHZlcmlmeWluZyB0aGUgc3BlY3VsYXRpb24gaXQgaGFzIGFscmVhZHkgbWFkZS4K
QEAgLTI0MywyMiArNDMwLDI0IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxw
ZXJzJiAKICAgICBpZiAocmVjb3ZlcnkpIHsKICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS0+dHlw
ZSgpKSB7CiAgICAgICAgIGNhc2UgU3BlY3VsYXRpdmVBZGQ6Ci0gICAgICAgICAgICBqaXQuc3Vi
MzIocmVjb3ZlcnktPnNyYygpLCByZWNvdmVyeS0+ZGVzdCgpKTsKKyAgICAgICAgICAgIGNwdS5n
cHIocmVjb3ZlcnktPmRlc3QoKSkgPSBjcHUuZ3ByPHVpbnQzMl90PihyZWNvdmVyeS0+ZGVzdCgp
KSAtIGNwdS5ncHI8dWludDMyX3Q+KHJlY292ZXJ5LT5zcmMoKSk7CiAjaWYgVVNFKEpTVkFMVUU2
NCkKLSAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlciwg
cmVjb3ZlcnktPmRlc3QoKSk7CisgICAgICAgICAgICBBU1NFUlQoIShjcHUuZ3ByKHJlY292ZXJ5
LT5kZXN0KCkpID4+IDMyKSk7CisgICAgICAgICAgICBjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkp
IHw9IFRhZ1R5cGVOdW1iZXI7CiAjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAg
IGNhc2UgU3BlY3VsYXRpdmVBZGRJbW1lZGlhdGU6Ci0gICAgICAgICAgICBqaXQuc3ViMzIoQXNz
ZW1ibHlIZWxwZXJzOjpJbW0zMihyZWNvdmVyeS0+aW1tZWRpYXRlKCkpLCByZWNvdmVyeS0+ZGVz
dCgpKTsKKyAgICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgPSAoY3B1Lmdwcjx1
aW50MzJfdD4ocmVjb3ZlcnktPmRlc3QoKSkgLSByZWNvdmVyeS0+aW1tZWRpYXRlKCkpOwogI2lm
IFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBqaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIsIHJlY292ZXJ5LT5kZXN0KCkpOworICAgICAgICAgICAgQVNTRVJUKCEoY3B1
LmdwcihyZWNvdmVyeS0+ZGVzdCgpKSA+PiAzMikpOworICAgICAgICAgICAgY3B1LmdwcihyZWNv
dmVyeS0+ZGVzdCgpKSB8PSBUYWdUeXBlTnVtYmVyOwogI2VuZGlmCiAgICAgICAgICAgICBicmVh
azsKIAogICAgICAgICBjYXNlIEJvb2xlYW5TcGVjdWxhdGlvbkNoZWNrOgogI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgICAgICAgICBqaXQueG9yNjQoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCByZWNvdmVyeS0+ZGVzdCgpKTsK
KyAgICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgPSBjcHUuZ3ByKHJlY292ZXJ5
LT5kZXN0KCkpIF4gVmFsdWVGYWxzZTsKICNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAKQEAg
LTI4MSwzOTUgKzQ3MCwxMDQgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBl
cnMmIAogICAgICAgICAgICAgLy8gcHJvcGVydHkgYWNjZXNzLCBvciBkdWUgdG8gYW4gYXJyYXkg
cHJvZmlsZSkuCiAKICAgICAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGV4aXQubV9j
b2RlT3JpZ2luRm9yRXhpdFByb2ZpbGU7Ci0gICAgICAgICAgICBpZiAoQXJyYXlQcm9maWxlKiBh
cnJheVByb2ZpbGUgPSBqaXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoY29kZU9yaWdpbiktPmdldEFy
cmF5UHJvZmlsZShjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKSB7Ci0jaWYgVVNFKEpTVkFMVUU2
NCkKLSAgICAgICAgICAgICAgICBHUFJSZWcgdXNlZFJlZ2lzdGVyOwotICAgICAgICAgICAgICAg
IGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0FkZHJlc3MoKSkKLSAgICAgICAgICAgICAgICAg
ICAgdXNlZFJlZ2lzdGVyID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UuYmFzZSgpOwotICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVyID0gZXhpdC5tX2pz
VmFsdWVTb3VyY2UuZ3ByKCk7Ci0jZWxzZQotICAgICAgICAgICAgICAgIEdQUlJlZyB1c2VkUmVn
aXN0ZXIxOwotICAgICAgICAgICAgICAgIEdQUlJlZyB1c2VkUmVnaXN0ZXIyOwotICAgICAgICAg
ICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0FkZHJlc3MoKSkgewotICAgICAgICAg
ICAgICAgICAgICB1c2VkUmVnaXN0ZXIxID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UuYmFzZSgpOwot
ICAgICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXIyID0gSW52YWxpZEdQUlJlZzsKLSAgICAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXIxID0g
ZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigpOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaGFzS25vd25UYWcoKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHVzZWRSZWdpc3RlcjIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXIyID0gZXhpdC5tX2pz
VmFsdWVTb3VyY2UudGFnR1BSKCk7Ci0gICAgICAgICAgICAgICAgfQotI2VuZGlmCi0KLSAgICAg
ICAgICAgICAgICBHUFJSZWcgc2NyYXRjaDE7Ci0gICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0
Y2gyOwotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICAgICAgc2NyYXRjaDEgPSBBc3Nl
bWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIodXNlZFJlZ2lzdGVyKTsKLSAgICAgICAgICAg
ICAgICBzY3JhdGNoMiA9IEFzc2VtYmx5SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUih1c2VkUmVn
aXN0ZXIsIHNjcmF0Y2gxKTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgc2NyYXRjaDEgPSBBc3Nl
bWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIodXNlZFJlZ2lzdGVyMSwgdXNlZFJlZ2lzdGVy
Mik7Ci0gICAgICAgICAgICAgICAgc2NyYXRjaDIgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNj
cmF0Y2hHUFIodXNlZFJlZ2lzdGVyMSwgdXNlZFJlZ2lzdGVyMiwgc2NyYXRjaDEpOwotI2VuZGlm
Ci0KLSAgICAgICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGppdC5wdXNoVG9TYXZlKHNjcmF0Y2gxKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnB1c2hU
b1NhdmUoc2NyYXRjaDIpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGppdC5wdXNoKHNjcmF0Y2gxKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnB1c2go
c2NyYXRjaDIpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIEdQUlJlZyB2
YWx1ZTsKLSAgICAgICAgICAgICAgICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaXNBZGRyZXNz
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzY3JhdGNoMTsKLSAgICAgICAgICAg
ICAgICAgICAgaml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKGV4aXQubV9qc1Zh
bHVlU291cmNlLmFzQWRkcmVzcygpKSwgdmFsdWUpOwotICAgICAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGV4aXQubV9qc1ZhbHVlU291cmNlLnBheWxvYWRH
UFIoKTsKLQotICAgICAgICAgICAgICAgIGppdC5sb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjpBZGRy
ZXNzKHZhbHVlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoMSk7Ci0gICAg
ICAgICAgICAgICAgaml0LnN0b3JlMzIoc2NyYXRjaDEsIGFycmF5UHJvZmlsZS0+YWRkcmVzc09m
TGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAg
ICAgIGppdC5sb2FkOChBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3ModmFsdWUsIEpTQ2VsbDo6aW5k
ZXhpbmdUeXBlQW5kTWlzY09mZnNldCgpKSwgc2NyYXRjaDEpOwotI2Vsc2UKLSAgICAgICAgICAg
ICAgICBqaXQubG9hZDgoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gxLCBTdHJ1Y3R1
cmU6OmluZGV4aW5nVHlwZUluY2x1ZGluZ0hpc3RvcnlPZmZzZXQoKSksIHNjcmF0Y2gxKTsKLSNl
bmRpZgotICAgICAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bTMyKDEpLCBzY3JhdGNoMik7Ci0gICAgICAgICAgICAgICAgaml0LmxzaGlmdDMyKHNjcmF0Y2gx
LCBzY3JhdGNoMik7Ci0gICAgICAgICAgICAgICAgaml0Lm9yMzIoc2NyYXRjaDIsIEFzc2VtYmx5
SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFycmF5UHJvZmlsZS0+YWRkcmVzc09mQXJyYXlNb2Rl
cygpKSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaDIpOwotICAgICAgICAgICAgICAgICAgICBq
aXQucG9wVG9SZXN0b3JlKHNjcmF0Y2gxKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICBqaXQucG9wKHNjcmF0Y2gyKTsKLSAgICAgICAgICAgICAgICAgICAg
aml0LnBvcChzY3JhdGNoMSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgQ29kZUJs
b2NrKiBwcm9maWxlZENvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5kQmFz
ZWxpbmVDb2RlQmxvY2soY29kZU9yaWdpbiwgYmFzZWxpbmVDb2RlQmxvY2spOworICAgICAgICAg
ICAgaWYgKEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gcHJvZmlsZWRDb2RlQmxvY2stPmdl
dEFycmF5UHJvZmlsZShjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKSB7CisgICAgICAgICAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBqc1ZhbHVlRm9yKGNwdSwgZXhpdC5tX2pzVmFsdWVT
b3VyY2UpLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICAgICAgICAgIGFycmF5UHJv
ZmlsZS0+b2JzZXJ2ZVN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgIGFycmF5
UHJvZmlsZS0+b2JzZXJ2ZUFycmF5TW9kZShhcnJheU1vZGVGcm9tU3RydWN0dXJlKHN0cnVjdHVy
ZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKE1ldGhvZE9mR2V0
dGluZ0FWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGV4aXQubV92YWx1ZVByb2ZpbGUpIHsKLSNpZiBV
U0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmlzQWRk
cmVzcygpKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgYmUgc3VyZSB0aGF0IHdlIGhh
dmUgYSBzcGFyZSByZWdpc3Rlci4gU28gdXNlIHRoZSB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsCi0g
ICAgICAgICAgICAgICAgLy8gc2luY2Ugd2Uga25vdyBob3cgdG8gcmVzdG9yZSBpdC4KLSAgICAg
ICAgICAgICAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhleGl0Lm1fanNW
YWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSksIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7
Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVn
cyhHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgICAgICBqaXQu
bW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChUYWdUeXBlTnVtYmVyKSwgR1BSSW5m
bzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoZXhpdC5tX2pz
VmFsdWVTb3VyY2UuZ3ByKCkpKTsKLSNlbHNlIC8vIG5vdCBVU0UoSlNWQUxVRTY0KQotICAgICAg
ICAgICAgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmlzQWRkcmVzcygpKSB7Ci0gICAgICAgICAg
ICAgICAgLy8gU2F2ZSBhIHJlZ2lzdGVyIHNvIHdlIGNhbiB1c2UgaXQuCi0gICAgICAgICAgICAg
ICAgR1BSUmVnIHNjcmF0Y2hQYXlsb2FkID0gQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNo
R1BSKGV4aXQubV9qc1ZhbHVlU291cmNlLmJhc2UoKSk7Ci0gICAgICAgICAgICAgICAgR1BSUmVn
IHNjcmF0Y2hUYWcgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIoZXhpdC5tX2pz
VmFsdWVTb3VyY2UuYmFzZSgpLCBzY3JhdGNoUGF5bG9hZCk7Ci0gICAgICAgICAgICAgICAgaml0
LnB1c2hUb1NhdmUoc2NyYXRjaFBheWxvYWQpOwotICAgICAgICAgICAgICAgIGppdC5wdXNoVG9T
YXZlKHNjcmF0Y2hUYWcpOwotCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mgc2NyYXRjaChz
Y3JhdGNoVGFnLCBzY3JhdGNoUGF5bG9hZCk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgaml0LmxvYWRWYWx1ZShleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSwgc2Ny
YXRjaCk7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBzY3Jh
dGNoKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0b3Jl
KHNjcmF0Y2hUYWcpOwotICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaFBh
eWxvYWQpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5oYXNL
bm93blRhZygpKSB7Ci0gICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hUYWcgPSBBc3NlbWJs
eUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIoZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQ
UigpKTsKLSAgICAgICAgICAgICAgICBqaXQucHVzaFRvU2F2ZShzY3JhdGNoVGFnKTsKLSAgICAg
ICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihleGl0Lm1f
anNWYWx1ZVNvdXJjZS50YWcoKSksIHNjcmF0Y2hUYWcpOwotICAgICAgICAgICAgICAgIEpTVmFs
dWVSZWdzIHZhbHVlKHNjcmF0Y2hUYWcsIGV4aXQubV9qc1ZhbHVlU291cmNlLnBheWxvYWRHUFIo
KSk7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCB2YWx1ZSk7
Ci0gICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3JhdGNoVGFnKTsKLSAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwg
ZXhpdC5tX2pzVmFsdWVTb3VyY2UucmVncygpKTsKLSNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQot
ICAgICAgICB9CisgICAgICAgIGlmIChNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHByb2Zp
bGUgPSBleGl0Lm1fdmFsdWVQcm9maWxlKQorICAgICAgICAgICAgcHJvZmlsZS5yZXBvcnRWYWx1
ZShqc1ZhbHVlRm9yKGNwdSwgZXhpdC5tX2pzVmFsdWVTb3VyY2UpKTsKICAgICB9CiAKLSAgICAv
LyBXaGF0IGZvbGxvd3MgaXMgYW4gaW50ZW50aW9uYWxseSBzaW1wbGUgT1NSIGV4aXQgaW1wbGVt
ZW50YXRpb24gdGhhdCBnZW5lcmF0ZXMKLSAgICAvLyBmYWlybHkgcG9vciBjb2RlIGJ1dCBpcyB2
ZXJ5IGVhc3kgdG8gaGFjay4gSW4gcGFydGljdWxhciwgaXQgZHVtcHMgYWxsIHN0YXRlIHRoYXQK
LSAgICAvLyBuZWVkcyBjb252ZXJzaW9uIGludG8gYSBzY3JhdGNoIGJ1ZmZlciBzbyB0aGF0IGlu
IHN0ZXAgNiwgd2hlcmUgd2UgYWN0dWFsbHkgZG8gdGhlCi0gICAgLy8gY29udmVyc2lvbnMsIHdl
IGtub3cgdGhhdCBhbGwgdGVtcCByZWdpc3RlcnMgYXJlIGZyZWUgdG8gdXNlIGFuZCB0aGUgdmFy
aWFibGUgaXMKLSAgICAvLyBkZWZpbml0ZWx5IGluIGEgd2VsbC1rbm93biBzcG90IGluIHRoZSBz
Y3JhdGNoIGJ1ZmZlciByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgaGFkCi0gICAgLy8gb3JpZ2lu
YWxseSBiZWVuIGluIGEgcmVnaXN0ZXIgb3Igc3BpbGxlZC4gVGhpcyBhbGxvd3MgdXMgdG8gZGVj
b3VwbGUgIndoZXJlIHdhcwotICAgIC8vIHRoZSB2YXJpYWJsZSIgZnJvbSAiaG93IHdhcyBpdCBy
ZXByZXNlbnRlZCIuIENvbnNpZGVyIHRoYXQgdGhlCi0gICAgLy8gSW50MzJEaXNwbGFjZWRJbkpT
U3RhY2sgcmVjb3Zlcnk6IGl0IHRlbGxzIHVzIHRoYXQgdGhlIHZhbHVlIGlzIGluIGEKLSAgICAv
LyBwYXJ0aWN1bGFyIHBsYWNlIGFuZCB0aGF0IHRoYXQgcGxhY2UgaG9sZHMgYW4gdW5ib3hlZCBp
bnQzMi4gV2UgaGF2ZSB0d28gZGlmZmVyZW50Ci0gICAgLy8gcGxhY2VzIHRoYXQgYSB2YWx1ZSBj
b3VsZCBiZSAoZGlzcGxhY2VkLCByZWdpc3RlcikgYW5kIGEgYnVuY2ggb2YgZGlmZmVyZW50Ci0g
ICAgLy8gd2F5cyBvZiByZXByZXNlbnRpbmcgYSB2YWx1ZS4gVGhlIG51bWJlciBvZiByZWNvdmVy
aWVzIGlzIHR3byAqIGEgYnVuY2guIFRoZSBjb2RlCi0gICAgLy8gYmVsb3cgbWVhbnMgdGhhdCB3
ZSBoYXZlIHRvIGhhdmUgdHdvICsgYSBidW5jaCBjYXNlcyByYXRoZXIgdGhhbiB0d28gKiBhIGJ1
bmNoLgotICAgIC8vIE9uY2Ugd2UgaGF2ZSBsb2FkZWQgdGhlIHZhbHVlIGZyb20gd2hlcmV2ZXIg
aXQgd2FzLCB0aGUgcmVib3hpbmcgaXMgdGhlIHNhbWUKLSAgICAvLyByZWdhcmRsZXNzIG9mIGl0
cyBsb2NhdGlvbi4gTGlrZXdpc2UsIGJlZm9yZSB3ZSBkbyB0aGUgcmVib3hpbmcsIHRoZSB3YXkg
d2UgZ2V0IHRvCi0gICAgLy8gdGhlIHZhbHVlIChpLmUuIHdoZXJlIHdlIGxvYWQgaXQgZnJvbSkg
aXMgdGhlIHNhbWUgcmVnYXJkbGVzcyBvZiBpdHMgdHlwZS4gQmVjYXVzZQotICAgIC8vIHRoZSBj
b2RlIGJlbG93IGFsd2F5cyBkdW1wcyBldmVyeXRoaW5nIGludG8gYSBzY3JhdGNoIGJ1ZmZlciBm
aXJzdCwgdGhlIHR3bwotICAgIC8vIHF1ZXN0aW9ucyBiZWNvbWUgb3J0aG9nb25hbCwgd2hpY2gg
c2ltcGxpZmllcyBhZGRpbmcgbmV3IHR5cGVzIGFuZCBhZGRpbmcgbmV3Ci0gICAgLy8gbG9jYXRp
b25zLgotICAgIC8vCi0gICAgLy8gVGhpcyByYWlzZXMgdGhlIHF1ZXN0aW9uOiBkb2VzIHVzaW5n
IHN1Y2ggYSBzdWJvcHRpbWFsIGltcGxlbWVudGF0aW9uIG9mIE9TUiBleGl0LAotICAgIC8vIHdo
ZXJlIHdlIGFsd2F5cyBlbWl0IGNvZGUgdG8gZHVtcCBhbGwgc3RhdGUgaW50byBhIHNjcmF0Y2gg
YnVmZmVyIG9ubHkgdG8gdGhlbgotICAgIC8vIGR1bXAgaXQgcmlnaHQgYmFjayBpbnRvIHRoZSBz
dGFjaywgaHVydCB1cyBpbiBhbnkgd2F5PyBUaGUgYXNud2VyIGlzIHRoYXQgT1NSIGV4aXRzCi0g
ICAgLy8gYXJlIHJhcmUuIE91ciB0aWVyaW5nIHN0cmF0ZWd5IGVuc3VyZXMgdGhpcy4gVGhpcyBp
cyBiZWNhdXNlIGlmIGFuIE9TUiBleGl0IGlzCi0gICAgLy8gdGFrZW4gbW9yZSB0aGFuIH4xMDAg
dGltZXMsIHdlIGpldHRpc29uIHRoZSBERkcgY29kZSBibG9jayBhbG9uZyB3aXRoIGFsbCBvZiBp
dHMKLSAgICAvLyBleGl0cy4gSXQgaXMgaW1wb3NzaWJsZSBmb3IgYW4gT1NSIGV4aXQgLSBpLmUu
IHRoZSBjb2RlIHdlIGNvbXBpbGUgYmVsb3cgLSB0bwotICAgIC8vIGV4ZWN1dGUgZnJlcXVlbnRs
eSBlbm91Z2ggZm9yIHRoZSBjb2RlZ2VuIHRvIG1hdHRlciB0aGF0IG11Y2guIEl0IHByb2JhYmx5
IG1hdHRlcnMKLSAgICAvLyBlbm91Z2ggdGhhdCB3ZSBkb24ndCB3YW50IHRvIHR1cm4gdGhpcyBp
bnRvIHNvbWUgc3VwZXItc2xvdyBmdW5jdGlvbiBjYWxsLCBidXQgc28KLSAgICAvLyBsb25nIGFz
IHdlJ3JlIGdlbmVyYXRpbmcgc3RyYWlnaHQtbGluZSBjb2RlLCB0aGF0IGNvZGUgY2FuIGJlIHBy
ZXR0eSBiYWQuIEFsc28KLSAgICAvLyBiZWNhdXNlIHdlIHRlbmQgdG8gZXhpdCBvbmx5IGFsb25n
IG9uZSBPU1IgZXhpdCBmcm9tIGFueSBERkcgY29kZSBibG9jayAtIHRoYXQncyBhbgotICAgIC8v
IGVtcGlyaWNhbCByZXN1bHQgdGhhdCB3ZSdyZSBleHRyZW1lbHkgY29uZmlkZW50IGFib3V0IC0g
dGhlIGNvZGUgc2l6ZSBvZiB0aGlzCi0gICAgLy8gZG9lc24ndCBtYXR0ZXIgbXVjaC4gSGVuY2Ug
YW55IGF0dGVtcHQgdG8gb3B0aW1pemUgdGhlIGNvZGVnZW4gaGVyZSBpcyBqdXN0IHB1cmVseQot
ICAgIC8vIGhhcm1mdWwgdG8gdGhlIHN5c3RlbTogaXQgcHJvYmFibHkgd29uJ3QgcmVkdWNlIGVp
dGhlciBuZXQgbWVtb3J5IHVzYWdlIG9yIG5ldAotICAgIC8vIGV4ZWN1dGlvbiB0aW1lLiBJdCB3
aWxsIG9ubHkgcHJldmVudCB1cyBmcm9tIGNsZWFubHkgZGVjb3VwbGluZyAid2hlcmUgd2FzIHRo
ZQotICAgIC8vIHZhcmlhYmxlIiBmcm9tICJob3cgd2FzIGl0IHJlcHJlc2VudGVkIiwgd2hpY2gg
d2lsbCBtYWtlIGl0IG1vcmUgZGlmZmljdWx0IHRvIGFkZAotICAgIC8vIGZlYXR1cmVzIGluIHRo
ZSBmdXR1cmUgYW5kIGl0IHdpbGwgbWFrZSBpdCBoYXJkZXIgdG8gcmVhc29uIGFib3V0IGJ1Z3Mu
Ci0KLSAgICAvLyBTYXZlIGFsbCBzdGF0ZSBmcm9tIEdQUnMgaW50byB0aGUgc2NyYXRjaCBidWZm
ZXIuCi0KLSAgICBTY3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZl
ckZvclNpemUoc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIG9wZXJhbmRzLnNpemUoKSk7Ci0gICAg
RW5jb2RlZEpTVmFsdWUqIHNjcmF0Y2ggPSBzY3JhdGNoQnVmZmVyID8gc3RhdGljX2Nhc3Q8RW5j
b2RlZEpTVmFsdWUqPihzY3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpIDogMDsKLQotICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7ICsraW5kZXgpIHsK
LSAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5kc1tpbmRleF07
Ci0KLSAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewotICAgICAgICBjYXNl
IFVuYm94ZWRJbnQzMkluR1BSOgotICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6Ci0jaWYg
VVNFKEpTVkFMVUU2NCkKLSAgICAgICAgY2FzZSBJbkdQUjoKLSAgICAgICAgY2FzZSBVbmJveGVk
SW50NTJJbkdQUjoKLSAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NTJJbkdQUjoKLSAgICAg
ICAgICAgIGppdC5zdG9yZTY0KHJlY292ZXJ5LmdwcigpLCBzY3JhdGNoICsgaW5kZXgpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0jZWxzZQotICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6
Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICByZWNvdmVyeS5ncHIo
KSwKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3Iq
PihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIAotICAgICAgICBjYXNlIEluUGFpcjoKLSAgICAgICAgICAgIGppdC5zdG9y
ZTMyKAotICAgICAgICAgICAgICAgIHJlY292ZXJ5LnRhZ0dQUigpLAotICAgICAgICAgICAgICAg
ICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCkt
PmFzQml0cy50YWcpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAg
cmVjb3ZlcnkucGF5bG9hZEdQUigpLAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5j
b2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkKTsK
LSAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCi0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gQW5kIHZvaWxhLCBhbGwgR1BS
cyBhcmUgZnJlZSB0byByZXVzZS4KLQotICAgIC8vIFNhdmUgYWxsIHN0YXRlIGZyb20gRlBScyBp
bnRvIHRoZSBzY3JhdGNoIGJ1ZmZlci4KLQotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5k
ZXggPCBvcGVyYW5kcy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgY29uc3QgVmFsdWVSZWNv
dmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5kc1tpbmRleF07Ci0KLSAgICAgICAgc3dpdGNoIChyZWNv
dmVyeS50ZWNobmlxdWUoKSkgewotICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoKLSAg
ICAgICAgY2FzZSBJbkZQUjoKLSAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAg
ICAgICBqaXQuc3RvcmVEb3VibGUocmVjb3ZlcnkuZnByKCksIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKEdQUkluZm86OnJlZ1QwKSk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBOb3cs
IGFsbCBGUFJzIGFyZSBhbHNvIGZyZWUuCi0KLSAgICAvLyBTYXZlIGFsbCBzdGF0ZSBmcm9tIHRo
ZSBzdGFjayBpbnRvIHRoZSBzY3JhdGNoIGJ1ZmZlci4gRm9yIHNpbXBsaWNpdHkgd2UKLSAgICAv
LyBkbyB0aGlzIGV2ZW4gZm9yIHN0YXRlIHRoYXQncyBhbHJlYWR5IGluIHRoZSByaWdodCBwbGFj
ZSBvbiB0aGUgc3RhY2suCi0gICAgLy8gSXQgbWFrZXMgdGhpbmdzIHNpbXBsZXIgbGF0ZXIuCi0K
LSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2lu
ZGV4KSB7Ci0gICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNb
aW5kZXhdOwotCi0gICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKLSAgICAg
ICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZElu
SlNTdGFjazoKLSAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAg
ICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICBjYXNlIERvdWJsZURpc3Bs
YWNlZEluSlNTdGFjazoKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBjYXNlIEludDUyRGlz
cGxhY2VkSW5KU1N0YWNrOgotICAgICAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0
YWNrOgotICAgICAgICAgICAgaml0LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Io
cmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAg
ICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKLSAgICAgICAg
ICAgIGJyZWFrOwotI2Vsc2UKLSAgICAgICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAgICAgICAg
ICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAot
ICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5sb2FkMzIo
Ci0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKHJlY292ZXJ5LnZp
cnR1YWxSZWdpc3RlcigpKSwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7Ci0gICAg
ICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwKLSAg
ICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3Jh
dGNoICsgaW5kZXgpLT5hc0JpdHMudGFnKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAg
ICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxLAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nh
c3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXls
b2FkKTsKLSAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCi0KLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gTmVlZCB0byBlbnN1
cmUgdGhhdCB0aGUgc3RhY2sgcG9pbnRlciBhY2NvdW50cyBmb3IgdGhlIHdvcnN0LWNhc2Ugc3Rh
Y2sgdXNhZ2UgYXQgZXhpdC4gVGhpcwotICAgIC8vIGNvdWxkIHRvYXN0IHNvbWUgc3RhY2sgdGhh
dCB0aGUgREZHIHVzZWQuIFdlIG5lZWQgdG8gZG8gaXQgYmVmb3JlIHN0b3JpbmcgdG8gc3RhY2sg
b2Zmc2V0cwotICAgIC8vIHVzZWQgYnkgYmFzZWxpbmUuCi0gICAgaml0LmFkZFB0cigKLSAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoCi0gICAgICAgICAgICAtaml0LmNvZGVCbG9j
aygpLT5qaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0
ICogc2l6ZW9mKFJlZ2lzdGVyKSksCi0gICAgICAgIENDYWxsSGVscGVyczo6ZnJhbWVQb2ludGVy
UmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotCi0gICAgLy8g
UmVzdG9yZSB0aGUgREZHIGNhbGxlZSBzYXZlcyBhbmQgdGhlbiBzYXZlIHRoZSBvbmVzIHRoZSBi
YXNlbGluZSBKSVQgdXNlcy4KLSAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwotICAg
IGppdC5lbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGppdC5iYXNlbGluZUNvZGVCbG9jaygpKTsKLQot
ICAgIC8vIFRoZSB0YWcgcmVnaXN0ZXJzIGFyZSBuZWVkZWQgdG8gbWF0ZXJpYWxpemUgcmVjb3Zl
cmllcyBiZWxvdy4KLSAgICBqaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsK
LQotICAgIGlmIChleGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpKQotICAgICAgICBqaXQuY29weUNh
bGxlZVNhdmVzVG9WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bSk7Ci0KICAgICAvLyBE
byBhbGwgZGF0YSBmb3JtYXQgY29udmVyc2lvbnMgYW5kIHN0b3JlIHRoZSByZXN1bHRzIGludG8g
dGhlIHN0YWNrLgorICAgIC8vIE5vdGU6IHdlIG5lZWQgdG8gcmVjb3ZlciB2YWx1ZXMgYmVmb3Jl
IHJlc3RvcmluZyBjYWxsZWUgc2F2ZSByZWdpc3RlcnMgYmVsb3cKKyAgICAvLyBiZWNhdXNlIHRo
ZSByZWNvdmVyeSBtYXkgcmVseSBvbiB2YWx1ZXMgaW4gc29tZSBvZiBjYWxsZWUgc2F2ZSByZWdp
c3RlcnMuCiAKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6
ZSgpOyArK2luZGV4KSB7CiAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0g
b3BlcmFuZHNbaW5kZXhdOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gb3BlcmFuZHMu
dmlydHVhbFJlZ2lzdGVyRm9ySW5kZXgoaW5kZXgpOwogCi0gICAgICAgIGlmIChyZWcuaXNMb2Nh
bCgpICYmIHJlZy50b0xvY2FsKCkgPCBzdGF0aWNfY2FzdDxpbnQ+KGppdC5iYXNlbGluZUNvZGVC
bG9jaygpLT5jYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkpCisgICAgICAgIGlm
IChyZWcuaXNMb2NhbCgpICYmIHJlZy50b0xvY2FsKCkgPCBzdGF0aWNfY2FzdDxpbnQ+KGJhc2Vs
aW5lQ29kZUJsb2NrLT5jYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpbnQgb3BlcmFuZCA9IHJlZy5vZmZzZXQoKTsK
IAogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7CiAgICAgICAgIGNhc2Ug
RGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5k
LCBleGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS5qc1ZhbHVlKCkpOworICAgICAg
ICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBJbkZQUjoKKyAgICAgICAgICAgIGZyYW1lLnNl
dE9wZXJhbmQob3BlcmFuZCwgY3B1LmZwcjxKU1ZhbHVlPihyZWNvdmVyeS5mcHIoKSkpOworICAg
ICAgICAgICAgYnJlYWs7CisKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNlIEluR1BS
OgotICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6Ci0gICAgICAgIGNhc2UgQ2VsbERpc3Bs
YWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgot
ICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsK
LSAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6
OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVy
YW5kLCBjcHUuZ3ByPEpTVmFsdWU+KHJlY292ZXJ5LmdwcigpKSk7CiAgICAgICAgICAgICBicmVh
azsKLSNlbHNlIC8vIG5vdCBVU0UoSlNWQUxVRTY0KQorI2Vsc2UKICAgICAgICAgY2FzZSBJblBh
aXI6Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nh
c3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy50YWcs
Ci0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LmxvYWQz
MigKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3Iq
PihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKLSAgICAgICAgICAgICAgICBHUFJJ
bmZvOjpyZWdUMSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBH
UFJJbmZvOjpyZWdUMCwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0Zvcihv
cGVyYW5kKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBHUFJJ
bmZvOjpyZWdUMSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Io
b3BlcmFuZCkpOworICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVl
KGNwdS5ncHI8aW50MzJfdD4ocmVjb3ZlcnkudGFnR1BSKCkpLCBjcHUuZ3ByPGludDMyX3Q+KHJl
Y292ZXJ5LnBheWxvYWRHUFIoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCiAKICAg
ICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BSOgorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFu
ZChvcGVyYW5kLCBKU1ZhbHVlKGNwdS5ncHI8SlNDZWxsKj4ocmVjb3ZlcnkuZ3ByKCkpKSk7Cisg
ICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6
Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8
RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2Fk
LAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9y
ZTMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkNlbGxUYWcpLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKG9w
ZXJhbmQpKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEdQUklu
Zm86OnJlZ1QwLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihv
cGVyYW5kKSk7CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFsdWUo
ZXhlYy0+cihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSkudW5ib3hlZENlbGwoKSkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBjYXNlIFVu
Ym94ZWRCb29sZWFuSW5HUFI6CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQs
IGpzQm9vbGVhbihjcHUuZ3ByPGJvb2w+KHJlY292ZXJ5LmdwcigpKSkpOworICAgICAgICAgICAg
YnJlYWs7CisjZW5kaWYKKwogICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6
Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8
RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2Fk
LAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9y
ZTMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkJvb2xlYW5UYWcpLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9y
KG9wZXJhbmQpKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEdQ
UkluZm86OnJlZ1QwLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZv
cihvcGVyYW5kKSk7CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIGV4ZWMt
PnIocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLmpzVmFsdWUoKSk7CiAgICAgICAgICAgICBi
cmVhazsKLSNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCiAgICAgICAgIGNhc2UgVW5ib3hlZElu
dDMySW5HUFI6CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFsdWUo
Y3B1LmdwcjxpbnQzMl90PihyZWNvdmVyeS5ncHIoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
CiAgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6Ci0jaWYgVVNFKEpTVkFMVUU2
NCkKLSAgICAgICAgICAgIGppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdU
MCk7Ci0gICAgICAgICAgICBqaXQuemVyb0V4dGVuZDMyVG9QdHIoR1BSSW5mbzo6cmVnVDAsIEdQ
UkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1i
ZXJSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BS
SW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0jZWxz
ZQotICAgICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0
PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9h
ZCwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3Rv
cmUzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpJbnQzMlRhZyksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Io
b3BlcmFuZCkpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgR1BS
SW5mbzo6cmVnVDAsCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9y
KG9wZXJhbmQpKTsKLSNlbmRpZgorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5k
LCBKU1ZhbHVlKGV4ZWMtPnIocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLnVuYm94ZWRJbnQz
MigpKSk7CiAgICAgICAgICAgICBicmVhazsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAg
IGNhc2UgVW5ib3hlZEludDUySW5HUFI6CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9w
ZXJhbmQsIEpTVmFsdWUoY3B1LmdwcjxpbnQ2NF90PihyZWNvdmVyeS5ncHIoKSkgPj4gSlNWYWx1
ZTo6aW50NTJTaGlmdEFtb3VudCkpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2Fz
ZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIGppdC5sb2FkNjQoc2NyYXRj
aCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQucnNoaWZ0NjQoCi0g
ICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50
NTJTaGlmdEFtb3VudCksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5ib3hJbnQ1
MihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxLCBGUFJJbmZv
OjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3Nl
bWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgZnJhbWUuc2V0
T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVlKGV4ZWMtPnIocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVy
KCkpLnVuYm94ZWRJbnQ1MigpKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNl
IFVuYm94ZWRTdHJpY3RJbnQ1MkluR1BSOgorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChv
cGVyYW5kLCBKU1ZhbHVlKGNwdS5ncHI8aW50NjRfdD4ocmVjb3ZlcnkuZ3ByKCkpKSk7CisgICAg
ICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0
YWNrOgotICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgICAgIGppdC5ib3hJbnQ1MihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6
cmVnVDAsIEdQUkluZm86OnJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGpp
dC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3Bl
cmFuZCkpOworICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVlKGV4
ZWMtPnIocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLnVuYm94ZWRTdHJpY3RJbnQ1MigpKSk7
CiAgICAgICAgICAgICBicmVhazsKICNlbmRpZgogCiAgICAgICAgIGNhc2UgVW5ib3hlZERvdWJs
ZUluRlBSOgorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVlKHB1
cmlmeU5hTihjcHUuZnByKHJlY292ZXJ5LmZwcigpKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
CiAgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgaml0
Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2ggKyBpbmRleCksIEdQ
UkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwKSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAg
ICBqaXQucHVyaWZ5TmFOKEZQUkluZm86OmZwUmVnVDApOwotI2lmIFVTRShKU1ZBTFVFNjQpCi0g
ICAgICAgICAgICBqaXQuYm94RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEdQUkluZm86OnJlZ1Qw
KTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBl
cnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwotI2Vsc2UKLSAgICAgICAgICAgIGppdC5zdG9yZURv
dWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFu
ZCkpOwotI2VuZGlmCisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFs
dWUocHVyaWZ5TmFOKGV4ZWMtPnIocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLnVuYm94ZWRE
b3VibGUoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgQ29uc3RhbnQ6
Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KAotICAgICAgICAg
ICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShyZWNv
dmVyeS5jb25zdGFudCgpKSksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjphZGRy
ZXNzRm9yKG9wZXJhbmQpKTsKLSNlbHNlCi0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAg
ICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFu
dCgpLnRhZygpKSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVy
YW5kKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJs
eUhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnBheWxvYWQoKSksCi0g
ICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKLSNl
bmRpZgorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCByZWNvdmVyeS5jb25z
dGFudCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgRGlyZWN0QXJndW1l
bnRzVGhhdFdlcmVOb3RDcmVhdGVkOgpAQCAtNjgzLDEzICs1ODEsMzEgQEAgdm9pZCBPU1JFeGl0
Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgICAgICB9CiAgICAgfQogCisgICAgLy8g
TmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgc3RhY2sgcG9pbnRlciBhY2NvdW50cyBmb3IgdGhlIHdv
cnN0LWNhc2Ugc3RhY2sgdXNhZ2UgYXQgZXhpdC4gVGhpcworICAgIC8vIGNvdWxkIHRvYXN0IHNv
bWUgc3RhY2sgdGhhdCB0aGUgREZHIHVzZWQuIFdlIG5lZWQgdG8gZG8gaXQgYmVmb3JlIHN0b3Jp
bmcgdG8gc3RhY2sgb2Zmc2V0cworICAgIC8vIHVzZWQgYnkgYmFzZWxpbmUuCisgICAgY3B1LnNw
KCkgPSBjcHUuZnA8dWludDhfdCo+KCkgLSAoY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZ0NvbW1v
bigpLT5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0ICogc2l6ZW9mKFJlZ2lzdGVyKSk7CisK
KyAgICAvLyBSZXN0b3JlIHRoZSBERkcgY2FsbGVlIHNhdmVzIGFuZCB0aGVuIHNhdmUgdGhlIG9u
ZXMgdGhlIGJhc2VsaW5lIEpJVCB1c2VzLgorICAgIHJlc3RvcmVDYWxsZWVTYXZlc0Zvcihjb250
ZXh0LCBjb2RlQmxvY2spOworICAgIHNhdmVDYWxsZWVTYXZlc0Zvcihjb250ZXh0LCBiYXNlbGlu
ZUNvZGVCbG9jayk7CisKKyAgICAvLyBUaGUgdGFnIHJlZ2lzdGVycyBhcmUgbmVlZGVkIHRvIG1h
dGVyaWFsaXplIHJlY292ZXJpZXMgYmVsb3cuCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjcHUu
Z3ByKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikgPSBUYWdUeXBlTnVtYmVyOworICAg
IGNwdS5ncHIoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSA9IFRhZ1R5cGVOdW1iZXIgfCBUYWdC
aXRUeXBlT3RoZXI7CisjZW5kaWYKKworICAgIGlmIChleGl0LmlzRXhjZXB0aW9uSGFuZGxlcigp
KQorICAgICAgICBjb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVy
KGNvbnRleHQpOworCiAgICAgLy8gTm93IHRoYXQgdGhpbmdzIG9uIHRoZSBzdGFjayBhcmUgcmVj
b3ZlcmVkLCBkbyB0aGUgYXJndW1lbnRzIHJlY292ZXJ5LiBXZSBhc3N1bWUgdGhhdCBhcmd1bWVu
dHMKICAgICAvLyByZWNvdmVyaWVzIGRvbid0IHJlY3Vyc2l2ZWx5IHJlZmVyIHRvIGVhY2ggb3Ro
ZXIuIEJ1dCwgd2UgZG9uJ3QgdHJ5IHRvIGFzc3VtZSB0aGF0IHRoZXkgb25seQogICAgIC8vIHJl
ZmVyIHRvIGNlcnRhaW4gcmFuZ2VzIG9mIGxvY2Fscy4gSGVuY2Ugd2h5IHdlIG5lZWQgdG8gZG8g
dGhpcyBoZXJlLCBvbmNlIHRoZSBzdGFjayBpcyBzZW5zaWJsZS4KICAgICAvLyBOb3RlIHRoYXQg
d2UgYWxzbyByb3VnaGx5IGFzc3VtZSB0aGF0IHRoZSBhcmd1bWVudHMgbWlnaHQgc3RpbGwgYmUg
bWF0ZXJpYWxpemVkIG91dHNpZGUgb2YgaXRzCiAgICAgLy8gaW5saW5lIGNhbGwgZnJhbWUgc2Nv
cGUgLSBidXQgZm9yIG5vdyB0aGUgREZHIHdvdWxkbid0IGRvIHRoYXQuCiAKLSAgICBlbWl0UmVz
dG9yZUFyZ3VtZW50cyhqaXQsIG9wZXJhbmRzKTsKKyAgICBlbWl0UmVzdG9yZUFyZ3VtZW50cyhj
b250ZXh0LCBjb2RlQmxvY2ssIG9wZXJhbmRzKTsKIAogICAgIC8vIEFkanVzdCB0aGUgb2xkIEpJ
VCdzIGV4ZWN1dGUgY291bnRlci4gU2luY2Ugd2UgYXJlIGV4aXRpbmcgT1NSLCB3ZSBrbm93CiAg
ICAgLy8gdGhhdCBhbGwgbmV3IGNhbGxzIGludG8gdGhpcyBjb2RlIHdpbGwgZ28gdG8gdGhlIG5l
dyBKSVQsIHNvIHRoZSBleGVjdXRlCkBAIC03MjcsMjYgKzY0MywxNzEgQEAgdm9pZCBPU1JFeGl0
Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgIC8vIGNvdW50ZXIgdG8gMDsgb3RoZXJ3
aXNlIHdlIHNldCB0aGUgY291bnRlciB0bwogICAgIC8vIGNvdW50ZXJWYWx1ZUZvck9wdGltaXpl
QWZ0ZXJXYXJtVXAoKS4KIAotICAgIGhhbmRsZUV4aXRDb3VudHMoaml0LCBleGl0KTsKKyAgICBp
ZiAoY29kZUJsb2NrLT51cGRhdGVPU1JFeGl0Q291bnRlckFuZENoZWNrSWZOZWVkVG9SZW9wdGlt
aXplKGV4aXQpID09IENvZGVCbG9jazo6T3B0aW1pemVBY3Rpb246Ok9wdGltaXplTm93KQorICAg
ICAgICB0cmlnZ2VyUmVvcHRpbWl6YXRpb25Ob3coYmFzZWxpbmVDb2RlQmxvY2ssICZleGl0KTsK
IAogICAgIC8vIFJlaWZ5IGlubGluZWQgY2FsbCBmcmFtZXMuCi0KLSAgICByZWlmeUlubGluZWRD
YWxsRnJhbWVzKGppdCwgZXhpdCk7CisgICAgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhjb250ZXh0
LCBiYXNlbGluZUNvZGVCbG9jaywgZXhpdCk7CiAKICAgICAvLyBBbmQgZmluaXNoLgotICAgIGFk
anVzdEFuZEp1bXBUb1RhcmdldCh2bSwgaml0LCBleGl0KTsKKyAgICBhZGp1c3RBbmRKdW1wVG9U
YXJnZXQoY29udGV4dCwgdm0sIGNvZGVCbG9jaywgYmFzZWxpbmVDb2RlQmxvY2ssIGV4aXQpOwor
fQorCit2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ29udGV4dCYgY29udGV4dCwgQ29kZUJs
b2NrKiBvdXRlcm1vc3RCYXNlbGluZUNvZGVCbG9jaywgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQp
Cit7CisgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CisgICAgRnJhbWUgZnJhbWUoY3B1LmZw
KCksIGNvbnRleHQuc3RhY2soKSk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGxlYXZl
IGhvbGVzIG9uIHRoZSBzdGFjayB3aGVuIHBlcmZvcm1pbmcgYW4gT1NSIGV4aXQKKyAgICAvLyBp
biBwcmVzZW5jZSBvZiBpbmxpbmVkIHRhaWwgY2FsbHMuCisgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzUxMQorICAgIEFTU0VSVChvdXRlcm1vc3RCYXNl
bGluZUNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBm
cmFtZS5zZXRPcGVyYW5kPENvZGVCbG9jayo+KENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaywgb3V0
ZXJtb3N0QmFzZWxpbmVDb2RlQmxvY2spOworCisgICAgY29uc3QgQ29kZU9yaWdpbiogY29kZU9y
aWdpbjsKKyAgICBmb3IgKGNvZGVPcmlnaW4gPSAmZXhpdC5tX2NvZGVPcmlnaW47IGNvZGVPcmln
aW4gJiYgY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lOyBjb2RlT3JpZ2luID0gY29kZU9yaWdp
bi0+aW5saW5lQ2FsbEZyYW1lLT5nZXRDYWxsZXJTa2lwcGluZ1RhaWxDYWxscygpKSB7CisgICAg
ICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gY29kZU9yaWdpbi0+aW5saW5l
Q2FsbEZyYW1lOworICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gYmFzZWxp
bmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jaygqY29kZU9yaWdpbiwgb3V0
ZXJtb3N0QmFzZWxpbmVDb2RlQmxvY2spOworICAgICAgICBJbmxpbmVDYWxsRnJhbWU6OktpbmQg
dHJ1ZUNhbGxlckNhbGxLaW5kOworICAgICAgICBDb2RlT3JpZ2luKiB0cnVlQ2FsbGVyID0gaW5s
aW5lQ2FsbEZyYW1lLT5nZXRDYWxsZXJTa2lwcGluZ1RhaWxDYWxscygmdHJ1ZUNhbGxlckNhbGxL
aW5kKTsKKyAgICAgICAgdm9pZCogY2FsbGVyRnJhbWUgPSBjcHUuZnAoKTsKKworICAgICAgICBp
ZiAoIXRydWVDYWxsZXIpIHsKKyAgICAgICAgICAgIEFTU0VSVChpbmxpbmVDYWxsRnJhbWUtPmlz
VGFpbCgpKTsKKyAgICAgICAgICAgIHZvaWQqIHJldHVyblBDID0gZnJhbWUuZ2V0PHZvaWQqPihD
YWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkpOworICAgICAgICAgICAgZnJhbWUuc2V0PHZvaWQq
PihpbmxpbmVDYWxsRnJhbWUtPnJldHVyblBDT2Zmc2V0KCksIHJldHVyblBDKTsKKyAgICAgICAg
ICAgIGNhbGxlckZyYW1lID0gZnJhbWUuZ2V0PHZvaWQqPihDYWxsRnJhbWU6OmNhbGxlckZyYW1l
T2Zmc2V0KCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBiYXNl
bGluZUNvZGVCbG9ja0ZvckNhbGxlciA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5kQmFz
ZWxpbmVDb2RlQmxvY2soKnRydWVDYWxsZXIsIG91dGVybW9zdEJhc2VsaW5lQ29kZUJsb2NrKTsK
KyAgICAgICAgICAgIHVuc2lnbmVkIGNhbGxCeXRlY29kZUluZGV4ID0gdHJ1ZUNhbGxlci0+Ynl0
ZWNvZGVJbmRleDsKKyAgICAgICAgICAgIHZvaWQqIGp1bXBUYXJnZXQgPSBudWxscHRyOworCisg
ICAgICAgICAgICBzd2l0Y2ggKHRydWVDYWxsZXJDYWxsS2luZCkgeworICAgICAgICAgICAgY2Fz
ZSBJbmxpbmVDYWxsRnJhbWU6OkNhbGw6CisgICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFt
ZTo6Q29uc3RydWN0OgorICAgICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OkNhbGxWYXJh
cmdzOgorICAgICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OkNvbnN0cnVjdFZhcmFyZ3M6
CisgICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6VGFpbENhbGw6CisgICAgICAgICAg
ICBjYXNlIElubGluZUNhbGxGcmFtZTo6VGFpbENhbGxWYXJhcmdzOiB7CisgICAgICAgICAgICAg
ICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPQorICAgICAgICAgICAgICAgICAgICBiYXNl
bGluZUNvZGVCbG9ja0ZvckNhbGxlci0+Z2V0Q2FsbExpbmtJbmZvRm9yQnl0ZWNvZGVJbmRleChj
YWxsQnl0ZWNvZGVJbmRleCk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbExp
bmtJbmZvKTsKKworICAgICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBjYWxsTGlua0luZm8tPmNh
bGxSZXR1cm5Mb2NhdGlvbigpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1l
OjpHZXR0ZXJDYWxsOgorICAgICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OlNldHRlckNh
bGw6IHsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPQorICAg
ICAgICAgICAgICAgICAgICBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlci0+ZmluZFN0dWJJbmZv
KENvZGVPcmlnaW4oY2FsbEJ5dGVjb2RlSW5kZXgpKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChzdHViSW5mbyk7CisKKyAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gc3R1Yklu
Zm8tPmRvbmVMb2NhdGlvbigpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKHRydWVDYWxsZXItPmlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgICAgICAg
ICBjYWxsZXJGcmFtZSA9IGNwdS5mcDx1aW50OF90Kj4oKSArIHRydWVDYWxsZXItPmlubGluZUNh
bGxGcmFtZS0+c3RhY2tPZmZzZXQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOworCisgICAgICAg
ICAgICBmcmFtZS5zZXQ8dm9pZCo+KGlubGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSwg
anVtcFRhcmdldCk7CisgICAgICAgIH0KKworICAgICAgICBmcmFtZS5zZXRPcGVyYW5kPHZvaWQq
PihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
LCBiYXNlbGluZUNvZGVCbG9jayk7CisKKyAgICAgICAgLy8gUmVzdG9yZSB0aGUgaW5saW5lIGNh
bGwgZnJhbWUncyBjYWxsZWUgc2F2ZSByZWdpc3RlcnMuCisgICAgICAgIC8vIElmIHRoaXMgaW5s
aW5lZCBmcmFtZSBpcyBhIHRhaWwgY2FsbCB0aGF0IHdpbGwgcmV0dXJuIGJhY2sgdG8gdGhlIG9y
aWdpbmFsIGNhbGxlciwgd2UgbmVlZCB0bworICAgICAgICAvLyBjb3B5IHRoZSBwcmlvciBjb250
ZW50cyBvZiB0aGUgdGFnIHJlZ2lzdGVycyBhbHJlYWR5IHNhdmVkIGZvciB0aGUgb3V0ZXIgZnJh
bWUgdG8gdGhpcyBmcmFtZS4KKyAgICAgICAgc2F2ZU9yQ29weUNhbGxlZVNhdmVzRm9yKGNvbnRl
eHQsIGJhc2VsaW5lQ29kZUJsb2NrLCBzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KGlubGlu
ZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpLCAhdHJ1ZUNhbGxlcik7CisKKyAgICAgICAgaWYgKCFp
bmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKQorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFu
ZDx1aW50MzJfdD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnQsIFBheWxvYWRPZmZzZXQsIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRz
LnNpemUoKSk7CisgICAgICAgIEFTU0VSVChjYWxsZXJGcmFtZSk7CisgICAgICAgIGZyYW1lLnNl
dDx2b2lkKj4oaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXJGcmFtZU9mZnNldCgpLCBjYWxsZXJGcmFt
ZSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0g
Q2FsbFNpdGVJbmRleChjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KS5iaXRzKCk7CisgICAgICAg
IGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQg
KyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBUYWdPZmZzZXQsIGxvY2F0aW9uQml0cyk7
CisgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQorICAgICAgICAg
ICAgZnJhbWUuc2V0T3BlcmFuZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZy
YW1lU2xvdDo6Y2FsbGVlLCBKU1ZhbHVlKGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29uc3RhbnQo
KSkpOworI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkgLy8gc28gdGhpcyBpcyB0aGUgMzItYml0IHBh
cnQKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gYmFzZWxpbmVDb2RlQmxvY2st
Pmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4OworICAg
ICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KGluc3RydWN0aW9uKS5i
aXRzKCk7CisgICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFt
ZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBUYWdPZmZzZXQs
IGxvY2F0aW9uQml0cyk7CisgICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGlu
ZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUsIFRhZ09mZnNl
dCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTVmFsdWU6OkNlbGxUYWcpKTsKKyAgICAgICAgaWYg
KCFpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpCisgICAgICAgICAgICBmcmFtZS5zZXRP
cGVyYW5kKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxs
ZWUsIFBheWxvYWRPZmZzZXQsIGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29uc3RhbnQoKSk7Cisj
ZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkgLy8gZW5kaW5nIHRoZSAjZWxzZSBwYXJ0LCBzbyBkaXJl
Y3RseSBhYm92ZSBpcyB0aGUgMzItYml0IHBhcnQKKyAgICB9CisKKyAgICAvLyBEb24ndCBuZWVk
IHRvIHNldCB0aGUgdG9wbGV2ZWwgY29kZSBvcmlnaW4gaWYgd2Ugb25seSBkaWQgaW5saW5lIHRh
aWwgY2FsbHMKKyAgICBpZiAoY29kZU9yaWdpbikgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
ICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoY29kZU9yaWdpbi0+Ynl0
ZWNvZGVJbmRleCkuYml0cygpOworI2Vsc2UKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uID0gb3V0ZXJtb3N0QmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkg
KyBjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4OworICAgICAgICB1aW50MzJfdCBsb2NhdGlvbkJp
dHMgPSBDYWxsU2l0ZUluZGV4KGluc3RydWN0aW9uKS5iaXRzKCk7CisjZW5kaWYKKyAgICAgICAg
ZnJhbWUuc2V0T3BlcmFuZDx1aW50MzJfdD4oQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCwg
VGFnT2Zmc2V0LCBsb2NhdGlvbkJpdHMpOworICAgIH0KIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9O
IE9TUkV4aXQ6OmRlYnVnT3BlcmF0aW9uUHJpbnRTcGVjdWxhdGlvbkZhaWx1cmUoRXhlY1N0YXRl
KiBleGVjLCB2b2lkKiBkZWJ1Z0luZm9SYXcsIHZvaWQqIHNjcmF0Y2gpCit2b2lkIGFkanVzdEFu
ZEp1bXBUb1RhcmdldChDb250ZXh0JiBjb250ZXh0LCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJs
b2NrLCBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrLCBjb25zdCBPU1JFeGl0QmFzZSYgZXhp
dCkKIHsKLSAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBXVEY6OnN0b3JlTG9hZEZlbmNlKCk7IC8vIFRoZSBv
cHRpbWl6aW5nIGNvbXBpbGVyIGV4cGVjdHMgdGhhdCB0aGUgT1NSIGV4aXQgbWVjaGFuaXNtIHdp
bGwgZXhlY3V0ZSB0aGlzIGZlbmNlLgorICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGJhc2VsaW5l
Q29kZUJsb2NrKTsKKworICAgIC8vIFdlIGJhcnJpZXIgYWxsIGlubGluZWQgZnJhbWVzIC0tIGFu
ZCBub3QganVzdCB0aGUgY3VycmVudCBpbmxpbmUgc3RhY2sgLS0KKyAgICAvLyBiZWNhdXNlIHdl
IGRvbid0IGtub3cgd2hpY2ggaW5saW5lZCBmdW5jdGlvbiBvd25zIHRoZSB2YWx1ZSBwcm9maWxl
IHRoYXQKKyAgICAvLyB3ZSdsbCB1cGRhdGUgd2hlbiB3ZSBleGl0LiBJbiB0aGUgY2FzZSBvZiAi
ZigpIHsgYSgpOyBiKCk7IH0iLCBpZiBib3RoCisgICAgLy8gYSBhbmQgYiBhcmUgaW5saW5lZCwg
d2UgbWlnaHQgZXhpdCBpbnNpZGUgYiBkdWUgdG8gYSBiYWQgdmFsdWUgbG9hZGVkCisgICAgLy8g
ZnJvbSBhLgorICAgIC8vIEZJWE1FOiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHNob3Vs
ZCByZW1lbWJlciB3aGljaCBDb2RlQmxvY2sgb3ducworICAgIC8vIHRoZSB2YWx1ZSBwcm9maWxl
LgorICAgIElubGluZUNhbGxGcmFtZVNldCogaW5saW5lQ2FsbEZyYW1lcyA9IGNvZGVCbG9jay0+
aml0Q29kZSgpLT5kZmdDb21tb24oKS0+aW5saW5lQ2FsbEZyYW1lcy5nZXQoKTsKKyAgICBpZiAo
aW5saW5lQ2FsbEZyYW1lcykgeworICAgICAgICBmb3IgKElubGluZUNhbGxGcmFtZSogaW5saW5l
Q2FsbEZyYW1lIDogKmlubGluZUNhbGxGcmFtZXMpCisgICAgICAgICAgICB2bS5oZWFwLndyaXRl
QmFycmllcihpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLmdldCgpKTsKKyAgICB9
CisKKyAgICBpZiAoZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQorICAgICAgICBj
b250ZXh0LmZwKCkgPSBjb250ZXh0LmZwPHVpbnQ4X3QqPigpICsgZXhpdC5tX2NvZGVPcmlnaW4u
aW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CisK
KyAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja0ZvckV4aXQgPSBiYXNlbGluZUNvZGVCbG9ja0Zvck9y
aWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKGV4aXQubV9jb2RlT3JpZ2luLCBiYXNlbGluZUNvZGVC
bG9jayk7CisKKyAgICBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiBkZWNvZGVkQ29k
ZU1hcDsKKyAgICBjb2RlQmxvY2tGb3JFeGl0LT5qaXRDb2RlTWFwKCktPmRlY29kZShkZWNvZGVk
Q29kZU1hcCk7CisKKyAgICBCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQqIG1hcHBpbmcgPSBiaW5h
cnlTZWFyY2g8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0LCB1bnNpZ25lZD4oZGVjb2RlZENvZGVN
YXAsIGRlY29kZWRDb2RlTWFwLnNpemUoKSwgZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRl
eCwgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0OjpnZXRCeXRlY29kZUluZGV4KTsKKworICAgIEFT
U0VSVChtYXBwaW5nKTsKKyAgICBBU1NFUlQobWFwcGluZy0+bV9ieXRlY29kZUluZGV4ID09IGV4
aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOwogCi0gICAgU3BlY3VsYXRpb25GYWlsdXJl
RGVidWdJbmZvKiBkZWJ1Z0luZm8gPSBzdGF0aWNfY2FzdDxTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1
Z0luZm8qPihkZWJ1Z0luZm9SYXcpOwotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZGVidWdJ
bmZvLT5jb2RlQmxvY2s7CisgICAgdm9pZCoganVtcFRhcmdldCA9IGNvZGVCbG9ja0ZvckV4aXQt
PmppdENvZGUoKS0+ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChtYXBwaW5nLT5tX21hY2hpbmVD
b2RlT2Zmc2V0KTsKKworICAgIGNvbnRleHQuc3AoKSA9IGNvbnRleHQuZnA8dWludDhfdCo+KCkg
KyBjb2RlQmxvY2tGb3JFeGl0LT5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3Rl
cik7CisgICAgaWYgKGV4aXQuaXNFeGNlcHRpb25IYW5kbGVyKCkpIHsKKyAgICAgICAgLy8gU2lu
Y2Ugd2UncmUganVtcGluZyB0byBvcF9jYXRjaCwgd2UgbmVlZCB0byBzZXQgY2FsbEZyYW1lRm9y
Q2F0Y2guCisgICAgICAgIHZtLmNhbGxGcmFtZUZvckNhdGNoID0gY29udGV4dC5mcDxFeGVjU3Rh
dGUqPigpOworICAgIH0KKworICAgIHZtLnRvcENhbGxGcmFtZSA9IGNvbnRleHQuZnA8RXhlY1N0
YXRlKj4oKTsKKyAgICBjb250ZXh0LnBjKCkgPSBqdW1wVGFyZ2V0OworfQorCitzdGF0aWMgdm9p
ZCBwcmludE9TUkV4aXQoQ29udGV4dCYgY29udGV4dCwgdWludDMyX3Qgb3NyRXhpdEluZGV4LCBj
b25zdCBPU1JFeGl0JiBleGl0KQoreworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGNvbnRleHQuZnA8
RXhlY1N0YXRlKj4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9j
aygpOwogICAgIENvZGVCbG9jayogYWx0ZXJuYXRpdmUgPSBjb2RlQmxvY2stPmFsdGVybmF0aXZl
KCk7CisgICAgRXhpdEtpbmQga2luZCA9IGV4aXQubV9raW5kOworICAgIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0ID0gZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleDsKKwogICAgIGRhdGFM
b2coIlNwZWN1bGF0aW9uIGZhaWx1cmUgaW4gIiwgKmNvZGVCbG9jayk7Ci0gICAgZGF0YUxvZygi
IEAgZXhpdCAjIiwgdm0tPm9zckV4aXRJbmRleCwgIiAoYmMjIiwgZGVidWdJbmZvLT5ieXRlY29k
ZU9mZnNldCwgIiwgIiwgZXhpdEtpbmRUb1N0cmluZyhkZWJ1Z0luZm8tPmtpbmQpLCAiKSB3aXRo
ICIpOworICAgIGRhdGFMb2coIiBAIGV4aXQgIyIsIG9zckV4aXRJbmRleCwgIiAoYmMjIiwgYnl0
ZWNvZGVPZmZzZXQsICIsICIsIGV4aXRLaW5kVG9TdHJpbmcoa2luZCksICIpIHdpdGggIik7CiAg
ICAgaWYgKGFsdGVybmF0aXZlKSB7CiAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAiZXhl
Y3V0ZUNvdW50ZXIgPSAiLCBhbHRlcm5hdGl2ZS0+aml0RXhlY3V0ZUNvdW50ZXIoKSwKQEAgLTc1
NiwyMSArODE3LDE4IEBAIHZvaWQgSklUX09QRVJBVElPTiBPU1JFeGl0OjpkZWJ1Z09wZXJhdGkK
ICAgICAgICAgZGF0YUxvZygibm8gYWx0ZXJuYXRpdmUgY29kZSBibG9jayAoaS5lLiB3ZSd2ZSBi
ZWVuIGpldHRpc29uZWQpIik7CiAgICAgZGF0YUxvZygiLCBvc3JFeGl0Q291bnRlciA9ICIsIGNv
ZGVCbG9jay0+b3NyRXhpdENvdW50ZXIoKSwgIlxuIik7CiAgICAgZGF0YUxvZygiICAgIEdQUnMg
YXQgdGltZSBvZiBleGl0OiIpOwotICAgIGNoYXIqIHNjcmF0Y2hQb2ludGVyID0gc3RhdGljX2Nh
c3Q8Y2hhcio+KHNjcmF0Y2gpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHUFJJbmZv
OjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CiAgICAgICAgIEdQUlJlZyBncHIgPSBHUFJJbmZv
Ojp0b1JlZ2lzdGVyKGkpOwotICAgICAgICBkYXRhTG9nKCIgIiwgR1BSSW5mbzo6ZGVidWdOYW1l
KGdwciksICI6IiwgUmF3UG9pbnRlcigqcmVpbnRlcnByZXRfY2FzdF9wdHI8dm9pZCoqPihzY3Jh
dGNoUG9pbnRlcikpKTsKLSAgICAgICAgc2NyYXRjaFBvaW50ZXIgKz0gc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKTsKKyAgICAgICAgZGF0YUxvZygiICIsIGNvbnRleHQuZ3ByTmFtZShncHIpLCAiOiIs
IFJhd1BvaW50ZXIoY29udGV4dC5ncHI8dm9pZCo+KGdwcikpKTsKICAgICB9CiAgICAgZGF0YUxv
ZygiXG4iKTsKICAgICBkYXRhTG9nKCIgICAgRlBScyBhdCB0aW1lIG9mIGV4aXQ6Iik7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kp
IHsKICAgICAgICAgRlBSUmVnIGZwciA9IEZQUkluZm86OnRvUmVnaXN0ZXIoaSk7Ci0gICAgICAg
IGRhdGFMb2coIiAiLCBGUFJJbmZvOjpkZWJ1Z05hbWUoZnByKSwgIjoiKTsKLSAgICAgICAgdWlu
dDY0X3QgYml0cyA9ICpyZWludGVycHJldF9jYXN0X3B0cjx1aW50NjRfdCo+KHNjcmF0Y2hQb2lu
dGVyKTsKLSAgICAgICAgZG91YmxlIHZhbHVlID0gKnJlaW50ZXJwcmV0X2Nhc3RfcHRyPGRvdWJs
ZSo+KHNjcmF0Y2hQb2ludGVyKTsKKyAgICAgICAgZGF0YUxvZygiICIsIGNvbnRleHQuZnByTmFt
ZShmcHIpLCAiOiIpOworICAgICAgICB1aW50NjRfdCBiaXRzID0gY29udGV4dC5mcHI8dWludDY0
X3Q+KGZwcik7CisgICAgICAgIGRvdWJsZSB2YWx1ZSA9IGNvbnRleHQuZnByKGZwcik7CiAgICAg
ICAgIGRhdGFMb2dGKCIlbGx4OiVsZiIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oYml0cyksIHZh
bHVlKTsKLSAgICAgICAgc2NyYXRjaFBvaW50ZXIgKz0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsK
ICAgICB9CiAgICAgZGF0YUxvZygiXG4iKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdC5oCShyZXZpc2lvbiAyMjEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsOSBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgQ0NhbGxIZWxwZXJzOworbmFtZXNwYWNlIFByb2JlIHsK
K2NsYXNzIENvbnRleHQ7Cit9IC8vIG5hbWVzcGFjZSBQcm9iZQogCiBuYW1lc3BhY2UgREZHIHsK
IApAQCAtOTgsNyArMTAwLDcgQEAgcHJpdmF0ZToKIHN0cnVjdCBPU1JFeGl0IDogcHVibGljIE9T
UkV4aXRCYXNlIHsKICAgICBPU1JFeGl0KEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCosIHVuc2lnbmVkIHN0cmVhbUlu
ZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4ID0gVUlOVF9NQVgpOwogCi0gICAgc3RhdGljIHZv
aWQgSklUX09QRVJBVElPTiBjb21waWxlT1NSRXhpdChFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7
CisgICAgc3RhdGljIHZvaWQgZXhlY3V0ZU9TUkV4aXQoUHJvYmU6OkNvbnRleHQmKTsKIAogICAg
IHVuc2lnbmVkIG1fcGF0Y2hhYmxlQ29kZU9mZnNldCB7IDAgfTsKICAgICAKQEAgLTExOSwxMSAr
MTIxLDYgQEAgc3RydWN0IE9TUkV4aXQgOiBwdWJsaWMgT1NSRXhpdEJhc2UgewogICAgIHsKICAg
ICAgICAgT1NSRXhpdEJhc2U6OmNvbnNpZGVyQWRkaW5nQXNGcmVxdWVudEV4aXRTaXRlKHByb2Zp
bGVkQ29kZUJsb2NrLCBFeGl0RnJvbURGRyk7CiAgICAgfQotCi1wcml2YXRlOgotICAgIHN0YXRp
YyB2b2lkIGNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYsIFZNJiwgY29uc3QgT1NSRXhpdCYsIGNv
bnN0IE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+JiwgU3BlY3VsYXRpb25SZWNvdmVyeSopOwotICAg
IHN0YXRpYyB2b2lkIGVtaXRSZXN0b3JlQXJndW1lbnRzKENDYWxsSGVscGVycyYsIGNvbnN0IE9w
ZXJhbmRzPFZhbHVlUmVjb3Zlcnk+Jik7Ci0gICAgc3RhdGljIHZvaWQgSklUX09QRVJBVElPTiBk
ZWJ1Z09wZXJhdGlvblByaW50U3BlY3VsYXRpb25GYWlsdXJlKEV4ZWNTdGF0ZSosIHZvaWQqLCB2
b2lkKikgV1RGX0lOVEVSTkFMOwogfTsKIAogc3RydWN0IFNwZWN1bGF0aW9uRmFpbHVyZURlYnVn
SW5mbyB7CkBAIC0xMzIsNiArMTI5LDkgQEAgc3RydWN0IFNwZWN1bGF0aW9uRmFpbHVyZURlYnVn
SW5mbyB7CiAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQ7CiB9OwogCit2b2lkIHJlaWZ5SW5s
aW5lZENhbGxGcmFtZXMoUHJvYmU6OkNvbnRleHQmLCBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJs
b2NrLCBjb25zdCBPU1JFeGl0QmFzZSYpOwordm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoUHJv
YmU6OkNvbnRleHQmLCBWTSYsIENvZGVCbG9jayosIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxv
Y2ssIGNvbnN0IE9TUkV4aXRCYXNlJik7CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAog
I2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAkocmV2aXNpb24gMjIx
MjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21t
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogdm9pZCBoYW5k
bGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkK
IHsKICAgICBpZiAoIWV4aXRLaW5kTWF5SmV0dGlzb24oZXhpdC5tX2tpbmQpKSB7CkBAIC0xNDMs
NiArMTQ0LDcgQEAgdm9pZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYgaml0LAogICAg
IGRvbmVBZGp1c3RpbmcubGluaygmaml0KTsKIH0KIAorLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdo
ZW4gd2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUu
CiB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9T
UkV4aXRCYXNlJiBleGl0KQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgbGVhdmUgaG9s
ZXMgb24gdGhlIHN0YWNrIHdoZW4gcGVyZm9ybWluZyBhbiBPU1IgZXhpdApAQCAtMjUyLDYgKzI1
NCw3IEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMKICAgICB9CiB9
CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogc3RhdGljIHZvaWQgb3NyV3JpdGVCYXJyaWVy
KENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgb3duZXIsIEdQUlJlZyBzY3JhdGNoKQogewogICAg
IEFzc2VtYmx5SGVscGVyczo6SnVtcCBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuID0gaml0LmJh
cnJpZXJCcmFuY2hXaXRob3V0RmVuY2Uob3duZXIpOwpAQCAtMjcyLDYgKzI3NSw3IEBAIHN0YXRp
YyB2b2lkIG9zcldyaXRlQmFycmllcihDQ2FsbEhlbHBlcnMKICAgICBvd25lcklzUmVtZW1iZXJl
ZE9ySW5FZGVuLmxpbmsoJmppdCk7CiB9CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdl
IGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogdm9p
ZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
T1NSRXhpdEJhc2UmIGV4aXQpCiB7CiAgICAgaml0Lm1lbW9yeUZlbmNlKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
LmgJKHJldmlzaW9uIDIyMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgdm9p
ZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYsIGNvbgogdm9pZCByZWlmeUlubGluZWRD
YWxsRnJhbWVzKENDYWxsSGVscGVycyYsIGNvbnN0IE9TUkV4aXRCYXNlJik7CiB2b2lkIGFkanVz
dEFuZEp1bXBUb1RhcmdldChWTSYsIENDYWxsSGVscGVycyYsIGNvbnN0IE9TUkV4aXRCYXNlJik7
CiAKKy8vIEZJWE1FOiBUaGlzIHdvbid0IGJlIG5lZWRlZCBvbmNlIHdlIGZpeCBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1LgogdGVtcGxhdGUgPHR5cGVuYW1l
IEpJVENvZGVUeXBlPgogdm9pZCBhZGp1c3RGcmFtZUFuZFN0YWNrSW5PU1JFeGl0Q29tcGlsZXJU
aHVuayhNYWNyb0Fzc2VtYmxlciYgaml0LCBWTSogdm0sIEpJVENvZGU6OkpJVFR5cGUgaml0VHlw
ZSkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAkocmV2aXNpb24gMjIxMjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1NSw2MiArMTM1NSw2IEBAIEpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVDbG8KICAgICAgICAgZXhlYywgc3RydWN0dXJl
LCBhcmd1bWVudFN0YXJ0LCBsZW5ndGgsIGNhbGxlZSk7CiB9CiAKLUpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHNEdXJpbmdFeGl0KEV4ZWNTdGF0ZSog
ZXhlYywgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIEpTRnVuY3Rpb24qIGNhbGxl
ZSwgaW50MzJfdCBhcmd1bWVudENvdW50KQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRhcmdldCgmdm0sIGV4ZWMpOwotICAgIAotICAgIERl
ZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICAKLSAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jazsKLSAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICBjb2RlQmxvY2sgPSBi
YXNlbGluZUNvZGVCbG9ja0ZvcklubGluZUNhbGxGcmFtZShpbmxpbmVDYWxsRnJhbWUpOwotICAg
IGVsc2UKLSAgICAgICAgY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7Ci0gICAgCi0gICAg
dW5zaWduZWQgbGVuZ3RoID0gYXJndW1lbnRDb3VudCAtIDE7Ci0gICAgdW5zaWduZWQgY2FwYWNp
dHkgPSBzdGQ6Om1heChsZW5ndGgsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSAtIDEpKTsKLSAgICBEaXJlY3RBcmd1bWVudHMqIHJlc3VsdCA9IERpcmVj
dEFyZ3VtZW50czo6Y3JlYXRlKAotICAgICAgICB2bSwgY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KS0+ZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlKCksIGxlbmd0aCwgY2FwYWNpdHkpOwotICAgIAot
ICAgIHJlc3VsdC0+Y2FsbGVlKCkuc2V0KHZtLCByZXN1bHQsIGNhbGxlZSk7Ci0gICAgCi0gICAg
UmVnaXN0ZXIqIGFyZ3VtZW50cyA9Ci0gICAgICAgIGV4ZWMtPnJlZ2lzdGVycygpICsgKGlubGlu
ZUNhbGxGcmFtZSA/IGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgOiAwKSArCi0gICAgICAg
IENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoMCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbGVu
Z3RoOyBpLS07KQotICAgICAgICByZXN1bHQtPnNldEluZGV4UXVpY2tseSh2bSwgaSwgYXJndW1l
bnRzW2ldLmpzVmFsdWUoKSk7Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50c0R1cmluZ0V4aXQo
RXhlY1N0YXRlKiBleGVjLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgSlNGdW5j
dGlvbiogY2FsbGVlLCBpbnQzMl90IGFyZ3VtZW50Q291bnQpCi17Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdGFyZ2V0KCZ2bSwgZXhlYyk7Ci0g
ICAgCi0gICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOwotICAgIAotICAgIENv
ZGVCbG9jayogY29kZUJsb2NrOwotICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgIGNv
ZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1lKGlubGluZUNhbGxG
cmFtZSk7Ci0gICAgZWxzZQotICAgICAgICBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsK
LSAgICAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBhcmd1bWVudENvdW50IC0gMTsKLSAgICBDbG9u
ZWRBcmd1bWVudHMqIHJlc3VsdCA9IENsb25lZEFyZ3VtZW50czo6Y3JlYXRlRW1wdHkoCi0gICAg
ICAgIHZtLCBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5jbG9uZWRBcmd1bWVudHNTdHJ1Y3R1
cmUoKSwgY2FsbGVlLCBsZW5ndGgpOwotICAgIAotICAgIFJlZ2lzdGVyKiBhcmd1bWVudHMgPQot
ICAgICAgICBleGVjLT5yZWdpc3RlcnMoKSArIChpbmxpbmVDYWxsRnJhbWUgPyBpbmxpbmVDYWxs
RnJhbWUtPnN0YWNrT2Zmc2V0IDogMCkgKwotICAgICAgICBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zm
c2V0KDApOwotICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykKLSAgICAgICAgcmVz
dWx0LT5wdXREaXJlY3RJbmRleChleGVjLCBpLCBhcmd1bWVudHNbaV0uanNWYWx1ZSgpKTsKLQot
ICAgIAotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25DcmVhdGVSZXN0KEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQs
IHVuc2lnbmVkIG51bWJlck9mUGFyYW1zVG9Ta2lwLCB1bnNpZ25lZCBhcnJheVNpemUpCiB7CiAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaAkocmV2aXNpb24gMjIxMjI5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw5ICsxMzksNyBA
QCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyCiBzaXplX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lOVEVSTkFMOwog
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJlY3QoRXhl
Y1N0YXRlKiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKiwgRW5jb2RlZEpTVmFs
dWUpOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50
cyhFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90IGxlbmd0aCwgaW50MzJfdCBtaW5DYXBh
Y2l0eSk7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1l
bnRzRHVyaW5nRXhpdChFeGVjU3RhdGUqLCBJbmxpbmVDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiwg
aW50MzJfdCBhcmd1bWVudENvdW50KTsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25D
cmVhdGVTY29wZWRBcmd1bWVudHMoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgUmVnaXN0ZXIqIGFy
Z3VtZW50U3RhcnQsIGludDMyX3QgbGVuZ3RoLCBKU0Z1bmN0aW9uKiBjYWxsZWUsIEpTTGV4aWNh
bEVudmlyb25tZW50Kik7Ci1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQ2xv
bmVkQXJndW1lbnRzRHVyaW5nRXhpdChFeGVjU3RhdGUqLCBJbmxpbmVDYWxsRnJhbWUqLCBKU0Z1
bmN0aW9uKiwgaW50MzJfdCBhcmd1bWVudENvdW50KTsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHMoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgUmVn
aXN0ZXIqIGFyZ3VtZW50U3RhcnQsIGludDMyX3QgbGVuZ3RoLCBKU0Z1bmN0aW9uKiBjYWxsZWUp
OwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVJlc3QoRXhlY1N0YXRlKiwg
UmVnaXN0ZXIqIGFyZ3VtZW50U3RhcnQsIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lw
LCB1bnNpZ25lZCBhcnJheVNpemUpOwogZG91YmxlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRk1v
ZE9uSW50cyhpbnQzMl90LCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCShyZXZpc2lvbiAyMjEyMjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDY0
ICs0MCwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLU1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKFZNKiB2bSkKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAg
IE1hY3JvQXNzZW1ibGVyIGppdDsKLQotICAgIC8vIFRoaXMgbmVlZHMgdG8gaGFwcGVuIGJlZm9y
ZSB3ZSB1c2UgdGhlIHNjcmF0Y2ggYnVmZmVyIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBhbHNvIHVz
ZXMgdGhlIHNjcmF0Y2ggYnVmZmVyLgotICAgIGFkanVzdEZyYW1lQW5kU3RhY2tJbk9TUkV4aXRD
b21waWxlclRodW5rPERGRzo6SklUQ29kZT4oaml0LCB2bSwgSklUQ29kZTo6REZHSklUKTsKLSAg
ICAKLSAgICBzaXplX3Qgc2NyYXRjaFNpemUgPSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogKEdQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMpOwot
ICAgIFNjcmF0Y2hCdWZmZXIqIHNjcmF0Y2hCdWZmZXIgPSB2bS0+c2NyYXRjaEJ1ZmZlckZvclNp
emUoc2NyYXRjaFNpemUpOwotICAgIEVuY29kZWRKU1ZhbHVlKiBidWZmZXIgPSBzdGF0aWNfY2Fz
dDxFbmNvZGVkSlNWYWx1ZSo+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSk7Ci0gICAgCi0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyAr
K2kpIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjp0
b1JlZ2lzdGVyKGkpLCBidWZmZXIgKyBpKTsKLSNlbHNlCi0gICAgICAgIGppdC5zdG9yZTMyKEdQ
UkluZm86OnRvUmVnaXN0ZXIoaSksIGJ1ZmZlciArIGkpOwotI2VuZGlmCi0gICAgfQotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7
Ci0gICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGJ1ZmZlciAr
IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAg
ICAgaml0LnN0b3JlRG91YmxlKEZQUkluZm86OnRvUmVnaXN0ZXIoaSksIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwKSk7Ci0gICAgfQotICAgIAotICAgIC8vIFRlbGwgR0Mg
bWFyayBwaGFzZSBob3cgbXVjaCBvZiB0aGUgc2NyYXRjaCBidWZmZXIgaXMgYWN0aXZlIGR1cmlu
ZyBjYWxsLgotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHNjcmF0
Y2hCdWZmZXItPmFkZHJlc3NPZkFjdGl2ZUxlbmd0aCgpKSwgR1BSSW5mbzo6cmVnVDApOwotICAg
IGppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoU2l6ZSks
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwKSk7Ci0KLSAgICAvLyBTZXQg
dXAgb25lIGFyZ3VtZW50LgotI2lmIENQVShYODYpCi0gICAgaml0LnBva2UoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIDApOwotI2Vsc2UKLSAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSNlbmRpZgotCi0gICAgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgZnVuY3Rpb25DYWxsID0gaml0LmNhbGwoKTsKLQotICAgIGppdC5tb3Zl
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFkZHJlc3NPZkFj
dGl2ZUxlbmd0aCgpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgIGppdC5zdG9yZVB0cihNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5m
bzo6cmVnVDApKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1i
ZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0gICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKGJ1ZmZlciArIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgaSksIEdQ
UkluZm86OnJlZ1QwKTsKLSAgICAgICAgaml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoR1BSSW5mbzo6cmVnVDApLCBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKLSAgICB9Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyAr
K2kpIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBqaXQubG9hZDY0KGJ1ZmZlciArIGks
IEdQUkluZm86OnRvUmVnaXN0ZXIoaSkpOwotI2Vsc2UKLSAgICAgICAgaml0LmxvYWQzMihidWZm
ZXIgKyBpLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKLSNlbmRpZgotICAgIH0KLSAgICAKLSAg
ICBqaXQuanVtcChNYWNyb0Fzc2VtYmxlcjo6QWJzb2x1dGVBZGRyZXNzKCZ2bS0+b3NyRXhpdEp1
bXBEZXN0aW5hdGlvbikpOwotICAgIAorICAgIGppdC5wcm9iZShPU1JFeGl0OjpleGVjdXRlT1NS
RXhpdCwgdm0pOwogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktf
SUQpOwotICAgIAotICAgIHBhdGNoQnVmZmVyLmxpbmsoZnVuY3Rpb25DYWxsLCBPU1JFeGl0Ojpj
b21waWxlT1NSRXhpdCk7Ci0gICAgCi0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZm
ZXIsICgiREZHIE9TUiBleGl0IGdlbmVyYXRpb24gdGh1bmsiKSk7CisgICAgcmV0dXJuIEZJTkFM
SVpFX0NPREUocGF0Y2hCdWZmZXIsICgiREZHIE9TUiBleGl0IHRodW5rIikpOwogfQogCiBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgb3NyRW50cnlUaHVua0dlbmVyYXRvcihWTSogdm0pCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmgJKHJldmlzaW9uIDIyMTIyOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzUsNyArMzUsNyBAQCBjbGFzcyBWTTsKIAogbmFtZXNwYWNlIERGRyB7CiAKLU1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgb3NyRXhpdFRodW5rR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgb3NyRW50cnlUaHVua0dlbmVyYXRvcihWTSopOwogCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuY3BwCShyZXZpc2lvbiAyMjEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Fzc2VtYmx5SGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgRXhl
Y3V0YWJsZUJhc2UqIEFzc2VtYmx5SGVscGVyczo6ZXhlY3V0YQogICAgIHJldHVybiBjb2RlT3Jp
Z2luLmlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
OwogfQogCisvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NS4KIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hp
bmVPZmZzZXQ+JiBBc3NlbWJseUhlbHBlcnM6OmRlY29kZWRDb2RlTWFwRm9yKENvZGVCbG9jayog
Y29kZUJsb2NrKQogewogICAgIEFTU0VSVChjb2RlQmxvY2sgPT0gY29kZUJsb2NrLT5iYXNlbGlu
ZVZlcnNpb24oKSk7CkBAIC04MjAsNjEgKzgyMSw2IEBAIGJvb2wgQXNzZW1ibHlIZWxwZXJzOjpz
dG9yZVdhc21Db250ZXh0TmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKIAotdm9p
ZCBBc3NlbWJseUhlbHBlcnM6OmRlYnVnQ2FsbChWTSYgdm0sIFZfRGVidWdPcGVyYXRpb25fRVBQ
IGZ1bmN0aW9uLCB2b2lkKiBhcmd1bWVudCkKLXsKLSAgICBzaXplX3Qgc2NyYXRjaFNpemUgPSBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpICogKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgRlBS
SW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMpOwotICAgIFNjcmF0Y2hCdWZmZXIqIHNjcmF0Y2hCdWZm
ZXIgPSB2bS5zY3JhdGNoQnVmZmVyRm9yU2l6ZShzY3JhdGNoU2l6ZSk7Ci0gICAgRW5jb2RlZEpT
VmFsdWUqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZl
ci0+ZGF0YUJ1ZmZlcigpKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHUFJJbmZv
OjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAg
c3RvcmU2NChHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBidWZmZXIgKyBpKTsKLSNlbHNlCi0gICAg
ICAgIHN0b3JlMzIoR1BSSW5mbzo6dG9SZWdpc3RlcihpKSwgYnVmZmVyICsgaSk7Ci0jZW5kaWYK
LSAgICB9Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnM7ICsraSkgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYnVmZmVyICsgR1BS
SW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICBz
dG9yZURvdWJsZShGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAg
fQotCi0gICAgLy8gVGVsbCBHQyBtYXJrIHBoYXNlIGhvdyBtdWNoIG9mIHRoZSBzY3JhdGNoIGJ1
ZmZlciBpcyBhY3RpdmUgZHVyaW5nIGNhbGwuCi0gICAgbW92ZShUcnVzdGVkSW1tUHRyKHNjcmF0
Y2hCdWZmZXItPmFkZHJlc3NPZkFjdGl2ZUxlbmd0aCgpKSwgR1BSSW5mbzo6cmVnVDApOwotICAg
IHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoc2NyYXRjaFNpemUpLCBHUFJJbmZvOjpyZWdUMCk7Ci0K
LSNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNKSB8fCBDUFUoQVJNNjQpIHx8IENQVShNSVBTKQot
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihidWZmZXIpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwot
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhcmd1bWVudCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7
Ci0gICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKLSAgICBHUFJSZWcgc2NyYXRjaCA9IHNlbGVjdFNjcmF0Y2hHUFIoR1BSSW5mbzo6YXJn
dW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7
Ci0jZWxpZiBDUFUoWDg2KQotICAgIHBva2UoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIDAp
OwotICAgIHBva2UoVHJ1c3RlZEltbVB0cihhcmd1bWVudCksIDEpOwotICAgIHBva2UoVHJ1c3Rl
ZEltbVB0cihidWZmZXIpLCAyKTsKLSAgICBHUFJSZWcgc2NyYXRjaCA9IEdQUkluZm86OnJlZ1Qw
OwotI2Vsc2UKLSNlcnJvciAiSklUIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4iCi0j
ZW5kaWYKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZnVu
Y3Rpb24pKSwgc2NyYXRjaCk7Ci0gICAgY2FsbChzY3JhdGNoKTsKLQotICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hZGRyZXNzT2ZBY3RpdmVMZW5ndGgoKSksIEdQUkluZm86
OnJlZ1QwKTsKLSAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKDApLCBHUFJJbmZvOjpyZWdUMCk7
Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3Rl
cnM7ICsraSkgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYnVmZmVyICsgR1BSSW5mbzo6
bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICBsb2FkRG91
YmxlKEdQUkluZm86OnJlZ1QwLCBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKLSAgICB9Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kp
IHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBsb2FkNjQoYnVmZmVyICsgaSwgR1BSSW5m
bzo6dG9SZWdpc3RlcihpKSk7Ci0jZWxzZQotICAgICAgICBsb2FkMzIoYnVmZmVyICsgaSwgR1BS
SW5mbzo6dG9SZWdpc3RlcihpKSk7Ci0jZW5kaWYKLSAgICB9Ci19Ci0KIHZvaWQgQXNzZW1ibHlI
ZWxwZXJzOjpjb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVySW1w
bChHUFJSZWcgY2FsbGVlU2F2ZXNCdWZmZXIpCiB7CiAjaWYgTlVNQkVSX09GX0NBTExFRV9TQVZF
U19SRUdJU1RFUlMgPiAwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgJKHJldmlzaW9uIDIyMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTk5Miw5ICs5OTIsNiBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBHUFJJbmZvOjpyZWdUNTsKICAgICB9CiAKLSAgICAvLyBB
ZGQgYSBkZWJ1ZyBjYWxsLiBUaGlzIGNhbGwgaGFzIG5vIGVmZmVjdCBvbiBKSVQgY29kZSBleGVj
dXRpb24gc3RhdGUuCi0gICAgdm9pZCBkZWJ1Z0NhbGwoVk0mLCBWX0RlYnVnT3BlcmF0aW9uX0VQ
UCBmdW5jdGlvbiwgdm9pZCogYXJndW1lbnQpOwotCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBKSVQg
Z2VuZXJhdGUgZHluYW1pYywgZGVidWctb25seSBjaGVja3MgLSBha2luIHRvIEFTU0VSVHMuCiAj
aWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHZvaWQgaml0QXNzZXJ0SXNJbnQzMihHUFJSZWcpOwpA
QCAtMTQ2NSw2ICsxNDYyLDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgZW1pdER1bWJWaXJ0
dWFsQ2FsbChWTSYsIENhbGxMaW5rSW5mbyopOwogICAgIAorICAgIC8vIEZJWE1FOiByZW1vdmUg
dGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc1MTQ1LgogICAgIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+JiBkZWNvZGVkQ29k
ZU1hcEZvcihDb2RlQmxvY2sqKTsKIAogICAgIHZvaWQgbWFrZVNwYWNlT25TdGFja0ZvckNDYWxs
KCk7CkBAIC0xNjU2LDYgKzE2NTQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQ29kZUJsb2NrKiBtX2Nv
ZGVCbG9jazsKICAgICBDb2RlQmxvY2sqIG1fYmFzZWxpbmVDb2RlQmxvY2s7CiAKKyAgICAvLyBG
SVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NTE0NS4KICAgICBIYXNoTWFwPENvZGVCbG9jayosIFZlY3RvcjxCeXRl
Y29kZUFuZE1hY2hpbmVPZmZzZXQ+PiBtX2RlY29kZWRDb2RlTWFwczsKIH07CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjIx
MjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjI5Niw2ICsyMjk2LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVy
YXRpb25SZWFsbG9jYXRlQgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihyZXN1
bHQpOwogfQogCisvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NS4KIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25PU1JXcml0ZUJhcnJpZXIoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGNlbGwpCiB7
CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMjIxMjI5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0NSw2ICs0NDUs
NyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlYWxsb2NhdGVCCiBjaGFyKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblJlYWxsb2NhdGVCdXR0ZXJmbHlUb0dyb3dQcm9wZXJ0eVN0b3Jh
Z2UoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBzaXplX3QgbmV3U2l6ZSkgV1RGX0lOVEVSTkFMOwog
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgoRXhlY1N0
YXRlKiwgSlNDZWxsKik7CisvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NS4KIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25PU1JXcml0ZUJhcnJpZXIoRXhlY1N0YXRlKiwgSlNDZWxsKik7CiAKIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25FeGNlcHRpb25GdXp6KEV4ZWNTdGF0ZSopOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNv
bXBpbGF0aW9uLmNwcAkocmV2aXNpb24gMjIxMjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0LCAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtOTEsNiArOTEsMTAgQEAgdm9pZCBDb21waWxhdGlvbjo6YWRkT1NSRXhpdFNpdGUoY29uc3Qg
VgogCiBPU1JFeGl0KiBDb21waWxhdGlvbjo6YWRkT1NSRXhpdCh1bnNpZ25lZCBpZCwgY29uc3Qg
T3JpZ2luU3RhY2smIG9yaWdpblN0YWNrLCBFeGl0S2luZCBleGl0S2luZCwgYm9vbCBpc1dhdGNo
cG9pbnQpCiB7CisgICAgZm9yIChhdXRvIGl0ID0gbV9vc3JFeGl0cy5iZWdpbigpOyBpdCAhPSBt
X29zckV4aXRzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIGlmIChpdC0+aWQoKSA9PSBpZCkKKyAg
ICAgICAgICAgIHJldHVybiAmKCppdCk7CisgICAgfQogICAgIG1fb3NyRXhpdHMuYXBwZW5kKE9T
UkV4aXQoaWQsIG9yaWdpblN0YWNrLCBleGl0S2luZCwgaXNXYXRjaHBvaW50KSk7CiAgICAgcmV0
dXJuICZtX29zckV4aXRzLmxhc3QoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlck9TUkV4aXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0LmgJKHJldmlzaW9uIDIyMTIyOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9TUkV4aXQuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC00Myw3ICs0Myw4IEBAIHB1YmxpYzoKICAgICAKICAgICB1aW50NjRfdCogY291bnRlckFk
ZHJlc3MoKSB7IHJldHVybiAmbV9jb3VudGVyOyB9CiAgICAgdWludDY0X3QgY291bnQoKSBjb25z
dCB7IHJldHVybiBtX2NvdW50ZXI7IH0KLSAgICAKKyAgICB2b2lkIGluY0NvdW50KCkgeyBtX2Nv
dW50ZXIrKzsgfQorCiAgICAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSopIGNvbnN0OwogCiBwcml2
YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAko
cmV2aXNpb24gMjIxMjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQg
KEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdo
dCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykg
MjAwMywgMjAwNCwgMjAwNSwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMiwgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM0NCwx
MiArMzQ0LDkgQEAgcHVibGljOgogICAgIHVpbnQzMl90IHRhZygpIGNvbnN0OwogICAgIGludDMy
X3QgcGF5bG9hZCgpIGNvbnN0OwogCi0jaWYgIUVOQUJMRShKSVQpCi0gICAgLy8gVGhpcyBzaG91
bGQgb25seSBiZSB1c2VkIGJ5IHRoZSBMTEludCBDIExvb3AgaW50ZXJwcmV0ZXIgd2hvIG5lZWRz
Ci0gICAgLy8gc3ludGhlc2l6ZSBKU1ZhbHVlIGZyb20gaXRzICJyZWdpc3RlciJzIGhvbGRpbmcg
dGFnIGFuZCBwYXlsb2FkCi0gICAgLy8gdmFsdWVzLgorICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkg
YmUgdXNlZCBieSB0aGUgTExJbnQgQyBMb29wIGludGVycHJldGVyIGFuZCBPU1JFeGl0IGNvZGUg
d2hvIG5lZWRzCisgICAgLy8gc3ludGhlc2l6ZSBKU1ZhbHVlIGZyb20gaXRzICJyZWdpc3RlciJz
IGhvbGRpbmcgdGFnIGFuZCBwYXlsb2FkIHZhbHVlcy4KICAgICBleHBsaWNpdCBKU1ZhbHVlKGlu
dDMyX3QgdGFnLCBpbnQzMl90IHBheWxvYWQpOwotI2VuZGlmCiAKICNlbGlmIFVTRShKU1ZBTFVF
NjQpCiAgICAgLyoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMjIxMjI5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzQw
LDcgKzM0MCw3IEBAIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGludCBpKQogICAgIHUuYXNCaXRz
LnBheWxvYWQgPSBpOwogfQogCi0jaWYgIUVOQUJMRShKSVQpCisjaWYgVVNFKEpTVkFMVUUzMl82
NCkKIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGludDMyX3QgdGFnLCBpbnQzMl90IHBheWxvYWQp
CiB7CiAgICAgdS5hc0JpdHMudGFnID0gdGFnOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>319141</attachid>
            <date>2017-08-26 16:21:26 -0700</date>
            <delta_ts>2017-09-06 16:14:09 -0700</delta_ts>
            <desc>x86_64 benchmark results 2.</desc>
            <filename>bench-x86_64-result2.txt</filename>
            <type>text/plain</type>
            <size>99576</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">JCBzbGVlcCAxMCAmJiAuLi93czIvSW50ZXJuYWwvVG9vbHMvU2NyaXB0cy9ydW4tanNjLWJlbmNo
bWFya3MgLS1vdXRlciA4IGJhc2U6YmFzZS9qc2MgbmV3Om5ldy9qc2MKV2FybmluZzogY291bGQg
bm90IGlkZW50aWZ5IGNoZWNrb3V0IGxvY2F0aW9uIGZvciBiYXNlCldhcm5pbmc6IGNvdWxkIG5v
dCBpZGVudGlmeSBjaGVja291dCBsb2NhdGlvbiBmb3IgbmV3Cldhcm5pbmc6IHJlZnVzaW5nIHRv
IHJ1biBKU0JlbmNoIGJlY2F1c2Ugbm90IGFsbCBWTXMgYXJlIER1bXBSZW5kZXJUcmVlIG9yIFdl
YktpdFRlc3RSdW5uZXIuCldhcm5pbmc6IHJlZnVzaW5nIHRvIHJ1biBEU1BKUyBiZWNhdXNlIG5v
dCBhbGwgVk1zIGFyZSBEdW1wUmVuZGVyVHJlZSBvciBXZWJLaXRUZXN0UnVubmVyLgoKR2VuZXJh
dGluZyBiZW5jaG1hcmsgcmVwb3J0IGF0IC9Wb2x1bWVzL0RhdGEvYmVuY2gvYmFzZV9uZXdfU3Vu
U3BpZGVyTG9uZ1NwaWRlclY4U3BpZGVyT2N0YW5lS3Jha2VuTWljcm9iZW5jaG1hcmtzQXNtQmVu
Y2hDb21wcmVzc2lvbkJlbmNoU2l4U3BlZWRfQ2hyb25vbl8yMDE3MDgyNl8xNTQyX3JlcG9ydC50
eHQKQW5kIHJhdyBkYXRhIGF0IC9Wb2x1bWVzL0RhdGEvYmVuY2gvYmFzZV9uZXdfU3VuU3BpZGVy
TG9uZ1NwaWRlclY4U3BpZGVyT2N0YW5lS3Jha2VuTWljcm9iZW5jaG1hcmtzQXNtQmVuY2hDb21w
cmVzc2lvbkJlbmNoU2l4U3BlZWRfQ2hyb25vbl8yMDE3MDgyNl8xNTQyLmpzb24KCkJlbmNobWFy
ayByZXBvcnQgZm9yIFN1blNwaWRlciwgTG9uZ1NwaWRlciwgVjhTcGlkZXIsIE9jdGFuZSwgS3Jh
a2VuLCBNaWNyb2JlbmNobWFya3MsIEFzbUJlbmNoLCBDb21wcmVzc2lvbkJlbmNoLCBhbmQgU2l4
U3BlZWQgb24gQ2hyb25vbiAoTWFjQm9va1BybzExLDEpLgoKVk1zIHRlc3RlZDoKImJhc2UiIGF0
IC9Wb2x1bWVzL0RhdGEvYmVuY2gvYmFzZS9qc2MKIm5ldyIgYXQgL1ZvbHVtZXMvRGF0YS9iZW5j
aC9uZXcvanNjCgpDb2xsZWN0ZWQgOCBzYW1wbGVzIHBlciBiZW5jaG1hcmsvVk0sIHdpdGggOCBW
TSBpbnZvY2F0aW9ucyBwZXIgYmVuY2htYXJrLiBFbWl0dGVkIGEgY2FsbCB0byBnYygpIGJldHdl
ZW4gc2FtcGxlIG1lYXN1cmVtZW50cy4KVXNlZCAxIGJlbmNobWFyayBpdGVyYXRpb24gcGVyIFZN
IGludm9jYXRpb24gZm9yIHdhcm0tdXAuIFVzZWQgdGhlIGpzYy1zcGVjaWZpYyBwcmVjaXNlVGlt
ZSgpIGZ1bmN0aW9uIHRvIGdldCBtaWNyb3NlY29uZC1sZXZlbAp0aW1pbmcuIFJlcG9ydGluZyBi
ZW5jaG1hcmsgZXhlY3V0aW9uIHRpbWVzIHdpdGggOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIGlu
IG1pbGxpc2Vjb25kcy4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYmFzZSAgICAgICAgICAgICAgICAgICAgICBuZXcgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgClN1blNwaWRlcjoKICAgM2QtY3ViZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi45NjAxKy0xLjE1ODUgICAg
ID8gICAgICA3LjU2MzYrLTEuMzgzNyAgICAgICAgPyBtaWdodCBiZSAxLjA4Njd4IHNsb3dlcgog
ICAzZC1tb3JwaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3Ljcx
NzIrLTAuODE3NiAgICAgICAgICAgIDcuMzI0MistMC4zNTk1ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDUzN3ggZmFzdGVyCiAgIDNkLXJheXRyYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDguMDQwMistMS4wNzkzICAgICAgICAgICAgNy40Nzg1Ky0xLjAxODAgICAgICAg
ICAgbWlnaHQgYmUgMS4wNzUxeCBmYXN0ZXIKICAgYWNjZXNzLWJpbmFyeS10cmVlcyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNC4xNDcxKy0xLjM4ODIgICAgICAgICAgICAzLjI3ODIr
LTAuMzgyMCAgICAgICAgICBtaWdodCBiZSAxLjI2NTF4IGZhc3RlcgogICBhY2Nlc3MtZmFubmt1
Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjc0NzArLTAuODQ4NCAgICAg
ICAgICAgIDkuODA1MystMS4xMzY2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDk2MHggZmFzdGVyCiAg
IGFjY2Vzcy1uYm9keSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuOTU1
NCstMC4yNTE0ICAgICA/ICAgICAgNC43MjM4Ky0xLjEzODMgICAgICAgID8gbWlnaHQgYmUgMS4x
OTQzeCBzbG93ZXIKICAgYWNjZXNzLW5zaWV2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNC40MjU4Ky0wLjM2OTAgICAgICAgICAgICA0LjMzMDcrLTAuMjg4NCAgICAgICAg
ICBtaWdodCBiZSAxLjAyMTl4IGZhc3RlcgogICBiaXRvcHMtM2JpdC1iaXRzLWluLWJ5dGUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxLjcyMzQrLTAuMTQ4MSAgICAgICAgICAgIDEuNjkzNyst
MC4xNTUyICAgICAgICAgIG1pZ2h0IGJlIDEuMDE3NnggZmFzdGVyCiAgIGJpdG9wcy1iaXRzLWlu
LWJ5dGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNjYwOCstMC41MjMwICAgICA/
ICAgICAgNC42OTcxKy0wLjY3NjcgICAgICAgID8KICAgYml0b3BzLWJpdHdpc2UtYW5kICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4yNjYzKy0wLjI1ODEgICAgID8gICAgICAzLjMz
NTYrLTAuMzk2OCAgICAgICAgPyBtaWdodCBiZSAxLjAyMTJ4IHNsb3dlcgogICBiaXRvcHMtbnNp
ZXZlLWJpdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjE2NDcrLTAuNDk0NiAg
ICAgPyAgICAgIDYuMzQxMSstMC44OTAzICAgICAgICA/IG1pZ2h0IGJlIDEuMDI4Nnggc2xvd2Vy
CiAgIGNvbnRyb2xmbG93LXJlY3Vyc2l2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQu
NDUwOCstMC40NzQyICAgICAgICAgICAgMy45ODc5Ky0wLjI2NjcgICAgICAgICAgbWlnaHQgYmUg
MS4xMTYxeCBmYXN0ZXIKICAgY3J5cHRvLWFlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNi45NzE4Ky0xLjE2MjAgICAgID8gICAgICA3Ljg5MzQrLTEuMzQ1OCAgICAg
ICAgPyBtaWdodCBiZSAxLjEzMjJ4IHNsb3dlcgogICBjcnlwdG8tbWQ1ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzLjgyNzErLTAuNTI3MyAgICAgPyAgICAgIDQuMjIw
MCstMC42OTk0ICAgICAgICA/IG1pZ2h0IGJlIDEuMTAyN3ggc2xvd2VyCiAgIGNyeXB0by1zaGEx
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMzkxNSstMC40MzQyICAg
ICA/ICAgICAgNC42MTgzKy0wLjM1NzUgICAgICAgID8gbWlnaHQgYmUgMS4wNTE2eCBzbG93ZXIK
ICAgZGF0ZS1mb3JtYXQtdG9mdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMS44
NjUxKy0xLjcxMTkgICAgICAgICAgIDExLjI2MjArLTEuMjY0MiAgICAgICAgICBtaWdodCBiZSAx
LjA1MzZ4IGZhc3RlcgogICBkYXRlLWZvcm1hdC14cGFyYiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA4Ljc3MTUrLTEuNzA5MyAgICAgPyAgICAgIDkuMjAzNystMC45NTE1ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDQ5M3ggc2xvd2VyCiAgIG1hdGgtY29yZGljICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDQuNzcyMistMC40MTg2ICAgICA/ICAgICAgNC45MzU2
Ky0wLjMzNzYgICAgICAgID8gbWlnaHQgYmUgMS4wMzQyeCBzbG93ZXIKICAgbWF0aC1wYXJ0aWFs
LXN1bXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4xNTg1Ky0wLjI4NzcgICAg
ID8gICAgICA2Ljc0MjErLTAuNzY2OCAgICAgICAgPyBtaWdodCBiZSAxLjA5NDh4IHNsb3dlcgog
ICBtYXRoLXNwZWN0cmFsLW5vcm0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjAx
MzgrLTAuMjAyOSAgICAgPyAgICAgIDMuMzEyNCstMC41NzI5ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDk5MXggc2xvd2VyCiAgIHJlZ2V4cC1kbmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTAuMjA4MystMC44NjgwICAgICAgICAgICAgOS4xMTA2Ky0wLjcwNjkgICAgICAg
ICAgbWlnaHQgYmUgMS4xMjA1eCBmYXN0ZXIKICAgc3RyaW5nLWJhc2U2NCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNy4wMjMxKy0wLjg3MTAgICAgICAgICAgICA2LjU2OTIr
LTAuMjg1NCAgICAgICAgICBtaWdodCBiZSAxLjA2OTF4IGZhc3RlcgogICBzdHJpbmctZmFzdGEg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjQ1MjcrLTAuNTA5NSAgICAg
PyAgICAgIDguOTQwMCstMS4wMzY4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDU3Nnggc2xvd2VyCiAg
IHN0cmluZy10YWdjbG91ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQuMTQ4
MCstMy4wMTQ3ICAgICAgICAgICAxMi43NTg1Ky0xLjIyMTMgICAgICAgICAgbWlnaHQgYmUgMS4x
MDg5eCBmYXN0ZXIKICAgc3RyaW5nLXVucGFjay1jb2RlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyNi45OTAyKy0yLjA4ODcgICAgICAgICAgIDI2LjM0NjcrLTEuNTMzOSAgICAgICAg
ICBtaWdodCBiZSAxLjAyNDR4IGZhc3RlcgogICBzdHJpbmctdmFsaWRhdGUtaW5wdXQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA4LjAwMTgrLTEuMjU5OCAgICAgICAgICAgIDcuMzAzNist
MS4yNjQ4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDk1NnggZmFzdGVyCgogICA8YXJpdGhtZXRpYz4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjM0MDYrLTAuMTUwMSAgICAg
ICAgICAgIDcuMjIyMSstMC4xNTY2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE2NHggZmFzdGVyCgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJhc2UgICAgICAgICAgICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIApMb25nU3BpZGVyOgogICAzZC1jdWJlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxMTcxLjUxMzYrLTI1OS45MDQyICAgICAgIDEwNjIuNTYwNCst
MTMuMzA0MSAgICAgICAgIG1pZ2h0IGJlIDEuMTAyNXggZmFzdGVyCiAgIDNkLW1vcnBoICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4MDcuOTEyOSstNy42NzAxICAgICA/
ICAgIDgyMy44MjkwKy0zMS43ODI5ICAgICAgID8gbWlnaHQgYmUgMS4wMTk3eCBzbG93ZXIKICAg
M2QtcmF5dHJhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY1NS41ODgz
Ky03Ljg1MTggICAgID8gICAgNjc0LjMwNDArLTExLjExMTEgICAgICAgPyBtaWdodCBiZSAxLjAy
ODV4IHNsb3dlcgogICBhY2Nlc3MtYmluYXJ5LXRyZWVzICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxMjU3LjUwMzYrLTUuMTYyMyAgICAgPyAgIDEyNjYuOTk1MystMTQuMDczMSAgICAgICA/
CiAgIGFjY2Vzcy1mYW5ua3VjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNzAu
MzY5MCstMTcuNjE5MCAgICA/ICAgIDM3NC40MTc5Ky0yMy40NTM5ICAgICAgID8gbWlnaHQgYmUg
MS4wMTA5eCBzbG93ZXIKICAgYWNjZXNzLW5ib2R5ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDcwOS42NDI3Ky0zLjc0NDggICAgICAgICAgNzA4LjI5OTArLTUuMjc5MSAgICAg
ICAgCiAgIGFjY2Vzcy1uc2lldmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1
NjYuOTA4NCstMi45MTIzICAgICA/ICAgIDU5Ny41MTkwKy03Mi4zMTc2ICAgICAgID8gbWlnaHQg
YmUgMS4wNTQweCBzbG93ZXIKICAgYml0b3BzLTNiaXQtYml0cy1pbi1ieXRlICAgICAgICAgICAg
ICAgICAgICAgICAgICA0NS4yNjM2Ky0xLjcxMjEgICAgID8gICAgIDQ4LjYyMzUrLTEwLjI1MTkg
ICAgICAgPyBtaWdodCBiZSAxLjA3NDJ4IHNsb3dlcgogICBiaXRvcHMtYml0cy1pbi1ieXRlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIxLjQzMjYrLTQuNDY3MCAgICAgPyAgICAxMjYu
ODM2NystMy43NDgwICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ0NXggc2xvd2VyCiAgIGJpdG9wcy1u
c2lldmUtYml0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MTguNzQ0OSstMTAuMDY1
MSAgICAgICAgIDYxOC4yMjI0Ky04LjM4OTggICAgICAgIAogICBjb250cm9sZmxvdy1yZWN1cnNp
dmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTU3Ljk4NDkrLTUuOTAxMyAgICAgPyAgICA2
MzcuMDQ5OSstMTQ1LjA2NzIgICAgICA/IG1pZ2h0IGJlIDEuMTQxN3ggc2xvd2VyCiAgIGNyeXB0
by1hZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3NTYuNDUwMCstNS40
MTI5ICAgICA/ICAgIDc1Ny43OTMyKy02Ljc5OTIgICAgICAgID8KICAgY3J5cHRvLW1kNSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkzMi42NjAxKy0xNC44MzA1ICAgID8g
ICAgOTM4LjQ3NTErLTguNjY4MSAgICAgICAgPwogICBjcnlwdG8tc2hhMSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgODkzLjIwODMrLTcuMDQ0MSAgICAgPyAgICA4OTcuMTcw
MSstMTIuNzczOCAgICAgICA/CiAgIGRhdGUtZm9ybWF0LXRvZnRlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA0NDYuMDIwNSstNS4xNzQ2ICAgICA/ICAgIDQ1NS4yOTkzKy00Ljc5MzYg
ICAgICAgID8gbWlnaHQgYmUgMS4wMjA4eCBzbG93ZXIKICAgZGF0ZS1mb3JtYXQteHBhcmIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk5OC45Njg0Ky0zMy45MjA3ICAgID8gICAxMDQy
LjM0MzArLTYzLjYxMzMgICAgICAgPyBtaWdodCBiZSAxLjA0MzR4IHNsb3dlcgogICBoYXNoLW1h
cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjA2LjY0ODYrLTIuOTcx
NSAgICAgPyAgICAyMDkuODkyOCstMy4wMDU0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE1N3ggc2xv
d2VyCiAgIG1hdGgtY29yZGljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1
ODMuMjYyMCstNS45NjIzICAgICAgICAgIDU4MC43MzA1Ky03LjIxMjIgICAgICAgIAogICBtYXRo
LXBhcnRpYWwtc3VtcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzgyLjc3MDIrLTMu
NTU0NCAgICAgPyAgICAzOTIuMDQ5NCstNy4xNzg4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI0Mngg
c2xvd2VyCiAgIG1hdGgtc3BlY3RyYWwtbm9ybSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA3NDkuNjMwNistMjcuNjAyNiAgICAgICAgIDczNi4yMjMyKy01LjM3MzkgICAgICAgICAgbWln
aHQgYmUgMS4wMTgyeCBmYXN0ZXIKICAgc3RyaW5nLWJhc2U2NCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDQ3OS41OTY0Ky0zLjc2NzMgICAgICAgICAgNDc0LjkwNDgrLTIyLjY0
MzkgICAgICAgCiAgIHN0cmluZy1mYXN0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA0NjEuNTc0OSstMTAuODA3MyAgICAgICAgIDQ1My44Nzc2Ky02LjYxMzMgICAgICAgICAg
bWlnaHQgYmUgMS4wMTcweCBmYXN0ZXIKICAgc3RyaW5nLXRhZ2Nsb3VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIyOC4wMjQwKy00LjE4MTEgICAgICAgICAgMjI2LjI1MTUrLTQu
ODkyMCAgICAgICAgCgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNDk3LjI3MDkrLTMuODIwMiAgICAgPyAgICA1MDMuNjIwOSstNS40OTI3ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDEyOHggc2xvd2VyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAgICAg
bmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApWOFNwaWRlcjoKICAg
Y3J5cHRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1NC42NzYy
Ky0xLjUwNTggICAgICAgICAgIDUzLjk2MjMrLTAuNDI0NCAgICAgICAgICBtaWdodCBiZSAxLjAx
MzJ4IGZhc3RlcgogICBkZWx0YWJsdWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDkwLjg5MzgrLTQuMjE1NSAgICAgPyAgICAgOTMuMDA3OSstMy45MTQxICAgICAgICA/
IG1pZ2h0IGJlIDEuMDIzM3ggc2xvd2VyCiAgIGVhcmxleS1ib3llciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNTMuMzQwMCstMS44NzA0ICAgICA/ICAgICA1NC4yNzc2Ky0w
LjkyMzggICAgICAgID8gbWlnaHQgYmUgMS4wMTc2eCBzbG93ZXIKICAgcmF5dHJhY2UgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzOS41NzAzKy0xLjE0NDUgICAgID8g
ICAgIDQxLjk0NTYrLTUuMTMxNSAgICAgICAgPyBtaWdodCBiZSAxLjA2MDB4IHNsb3dlcgogICBy
ZWdleHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc2LjcyMTkr
LTUuNzUxMyAgICAgICAgICAgNzMuNDEyNistMi4yMDcyICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ1
MXggZmFzdGVyCiAgIHJpY2hhcmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNjguMjMzNSstMi41MTE4ICAgICA/ICAgICA3MS41NjIzKy03LjUxMzYgICAgICAgID8g
bWlnaHQgYmUgMS4wNDg4eCBzbG93ZXIKICAgc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA1MS4xMjc0Ky0xLjM0NTAgICAgICAgICAgIDUwLjQ1NTIrLTAu
NTk3NSAgICAgICAgICBtaWdodCBiZSAxLjAxMzN4IGZhc3RlcgoKICAgPGdlb21ldHJpYz4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1OS45NjcyKy0wLjgxODUgICAgID8g
ICAgIDYwLjU0MDcrLTAuODEzNSAgICAgICAgPyBtaWdodCBiZSAxLjAwOTZ4IHNsb3dlcgoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
YXNlICAgICAgICAgICAgICAgICAgICAgIG5ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKT2N0YW5lOgogICBlbmNyeXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAuMjA3OTQrLTAuMDA5MDEgICAgPyAgICAgMC4yMDgyOSstMC4wMDMx
NSAgICAgICA/CiAgIGRlY3J5cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMy41NTczMistMC4wMjg1OSAgICAgICAgICAzLjU0OTE5Ky0wLjAxNjYxICAgICAgIAog
ICBkZWx0YWJsdWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgIDAuMTYx
MjIrLTAuMDAyODQgICAgPyAgICAgMC4xNjMzNSstMC4wMDIwNCAgICAgICA/IG1pZ2h0IGJlIDEu
MDEzMnggc2xvd2VyCiAgIGVhcmxleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC40MjA3OCstMC4wOTQwMyAgICAgICAgICAwLjM4NDgxKy0wLjAwNjg0ICAgICAg
ICAgbWlnaHQgYmUgMS4wOTM1eCBmYXN0ZXIKICAgYm95ZXIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA2LjI4ODc4Ky0wLjA3NTk1ICAgID8gICAgIDYuMzA3MTcr
LTAuMDc5MzIgICAgICAgPwogICBuYXZpZXItc3Rva2VzICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHgyICAgICAgIDYuNTg0MDUrLTAuMDQ4OTQgICAgICAgICAgNi41Nzc0NistMC4wNjg2MiAg
ICAgICAKICAgcmF5dHJhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAg
ICAxLjA0MDY2Ky0wLjAxMzI2ICAgICAgICAgIDEuMDM4NDQrLTAuMDE0MTYgICAgICAgCiAgIHJp
Y2hhcmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAgMC4xMTI4Myst
MC4wMDM3MSAgICAgICAgICAwLjExMTExKy0wLjAwMTE4ICAgICAgICAgbWlnaHQgYmUgMS4wMTU1
eCBmYXN0ZXIKICAgc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAg
ICAgICAwLjQ4NzA4Ky0wLjAwNzQ4ICAgICAgICAgIDAuNDg3MDErLTAuMDAzNzYgICAgICAgCiAg
IHJlZ2V4cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAyNC40OTY1
NistMC4zMzc5MSAgICA/ICAgIDI0LjUyMzQyKy0wLjc5OTk5ICAgICAgID8KICAgcGRmanMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgIDUyLjgwMzE3Ky0wLjYyODc0
ICAgICEgICAgNjEuNjgwNDQrLTAuODMxMTUgICAgICAgISBkZWZpbml0ZWx5IDEuMTY4MXggc2xv
d2VyCiAgIG1hbmRyZWVsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICA3
OC4zNTE0OCstMjIuOTg2NjcgICAgICAgIDY4LjczNzk2Ky0xLjIwOTg5ICAgICAgICAgbWlnaHQg
YmUgMS4xMzk5eCBmYXN0ZXIKICAgZ2JlbXUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB4MiAgICAgIDcxLjEzNTg4Ky00Ny40OTUxMCAgICAgICAgNDkuMDkwMTQrLTEuMDA4Mzkg
ICAgICAgICBtaWdodCBiZSAxLjQ0OTF4IGZhc3RlcgogICBjbG9zdXJlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNjQ3MDQrLTAuMDA1MDAgICAgPyAgICAgMC42
NDk1MistMC4wMDQ2NyAgICAgICA/CiAgIGpxdWVyeSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOS4xOTAzNystMC4xMTgyOCAgICA/ICAgICA5LjY0NTQxKy0wLjg2
ODMzICAgICAgID8gbWlnaHQgYmUgMS4wNDk1eCBzbG93ZXIKICAgYm94MmQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgIDEzLjMwNDIzKy0wLjE2NDc5ICAgID8gICAg
MTMuNTEwMjMrLTAuMTI3NDkgICAgICAgPyBtaWdodCBiZSAxLjAxNTV4IHNsb3dlcgogICB6bGli
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICA1MDYuOTc4NTErLTM0
LjQyMTc3ICAgICAgIDQ4NS44NTU3MSstMTIuMDE0NjcgICAgICAgIG1pZ2h0IGJlIDEuMDQzNXgg
ZmFzdGVyCiAgIHR5cGVzY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAg
IDk3Ny4yMjM4OCstNTYuMjExNTkgICA/ICAgOTk3Ljc5ODEzKy0xMy4zOTM5OSAgICAgID8gbWln
aHQgYmUgMS4wMjExeCBzbG93ZXIKCiAgIDxnZW9tZXRyaWM+ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNy4yNTAwNCstMC4yMTIwOCAgICAgICAgICA3LjE2NTI3Ky0wLjA0
MDIzICAgICAgICAgbWlnaHQgYmUgMS4wMTE4eCBmYXN0ZXIKCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAgICAgICAgICAgICAg
ICAgICAgICBuZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCktyYWtl
bjoKICAgYWktYXN0YXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
MjkuMDQ3Ky0yLjE1MSAgICAgICAgICAgIDEyOC42NDIrLTEuOTE5ICAgICAgICAgCiAgIGF1ZGlv
LWJlYXQtZGV0ZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU1LjM2OCstMC45
MzQgICAgICA/ICAgICAgNTUuNTA5Ky0wLjY2MSAgICAgICAgID8KICAgYXVkaW8tZGZ0ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDkuMjY5Ky0zLjg1MiAgICAgID8g
ICAgIDE1MC45MDYrLTIuODkzICAgICAgICAgPyBtaWdodCBiZSAxLjAxMTB4IHNsb3dlcgogICBh
dWRpby1mZnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MS41NjEr
LTMuODU5ICAgICAgICAgICAgIDQwLjI4OSstMC45ODQgICAgICAgICAgIG1pZ2h0IGJlIDEuMDMx
NnggZmFzdGVyCiAgIGF1ZGlvLW9zY2lsbGF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDYyLjI1MistMS4yNzUgICAgICBeICAgICAgNjAuMTg2Ky0wLjQ0NyAgICAgICAgIF4g
ZGVmaW5pdGVseSAxLjAzNDN4IGZhc3RlcgogICBpbWFnaW5nLWRhcmtyb29tICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA4MC44MDgrLTEuNzQ2ICAgICAgICAgICAgIDc5LjgyNyst
MC44OTEgICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyM3ggZmFzdGVyCiAgIGltYWdpbmctZGVzYXR1
cmF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc1LjUyMCstMS4yODAgICAgICA/
ICAgICAgNzYuNDU4Ky0zLjI3OSAgICAgICAgID8gbWlnaHQgYmUgMS4wMTI0eCBzbG93ZXIKICAg
aW1hZ2luZy1nYXVzc2lhbi1ibHVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTQuMDg0
Ky02Ljk5OCAgICAgID8gICAgICA5NS42MjgrLTcuNjUxICAgICAgICAgPyBtaWdodCBiZSAxLjAx
NjR4IHNsb3dlcgogICBqc29uLXBhcnNlLWZpbmFuY2lhbCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA0NC4xNTUrLTEuODY1ICAgICAgPyAgICAgIDQ1LjY1NSstMS42OTUgICAgICAgICA/
IG1pZ2h0IGJlIDEuMDM0MHggc2xvd2VyCiAgIGpzb24tc3RyaW5naWZ5LXRpbmRlcmJveCAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDI5LjgyNystMS40ODMgICAgICAgICAgICAgMjkuODE0Ky0x
LjE3MyAgICAgICAgIAogICBzdGFuZm9yZC1jcnlwdG8tYWVzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA1MC4wNzIrLTAuNzgxICAgICAgPyAgICAgIDUxLjExMistMS4xNjEgICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDIwOHggc2xvd2VyCiAgIHN0YW5mb3JkLWNyeXB0by1jY20gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDQ0LjgyNCstMi41MzYgICAgICA/ICAgICAgNDcuNTcy
Ky00LjM1NiAgICAgICAgID8gbWlnaHQgYmUgMS4wNjEzeCBzbG93ZXIKICAgc3RhbmZvcmQtY3J5
cHRvLXBia2RmMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODMuMTUxKy0yLjQ5OCAgICAg
ICAgICAgICA4Mi44NjUrLTEuODgwICAgICAgICAgCiAgIHN0YW5mb3JkLWNyeXB0by1zaGEyNTYt
aXRlcmF0aXZlICAgICAgICAgICAgICAgICAgIDI2LjExOSstMC41OTcgICAgICA/ICAgICAgMjYu
MTM4Ky0xLjM5OCAgICAgICAgID8KCiAgIDxhcml0aG1ldGljPiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDY5LjAwNCstMS4xOTUgICAgICA/ICAgICAgNjkuMzI4Ky0wLjYw
MSAgICAgICAgID8gbWlnaHQgYmUgMS4wMDQ3eCBzbG93ZXIKCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAgICAgICAgICAgICAg
ICAgICAgICBuZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCk1pY3Jv
YmVuY2htYXJrczoKICAgbmVnYXRpdmUtemVyby1tb2R1bG8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC43MjAzKy0wLjIxNjYgICAgICAgICAgICAwLjU4NjgrLTAuMDE1MyAgICAgICAg
ICBtaWdodCBiZSAxLjIyNzV4IGZhc3RlcgogICBpcy1vYmplY3Qtb3ItbnVsbC10cmlja2llci1m
dW5jdGlvbiAgICAgICAgICAgICAgICA1LjA5MTErLTAuMjM2NiAgICAgPyAgICAgIDUuMDk5NSst
MC4zMjA5ICAgICAgICA/CiAgIG9iamVjdC12YWx1ZXMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNTIuMzkwNSstMTEuNDQ1MSAgICAgICAgICA0NS4zNzAwKy0xLjAxMTIgICAg
ICAgICAgbWlnaHQgYmUgMS4xNTQ3eCBmYXN0ZXIKICAgZGlyZWN0LXRhaWwtY2FsbCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA4Mi43OTE1Ky0yLjEyNDcgICAgID8gICAgIDgzLjIx
MzIrLTEuMzcwMiAgICAgICAgPwogICBpbnQtb3Itb3RoZXItbWluLXRoZW4tZ2V0LWJ5LXZhbCAg
ICAgICAgICAgICAgICAgICA2LjI1NjgrLTAuNTY3MyAgICAgPyAgICAgIDYuNjIyNSstMC40MDUz
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDU4NHggc2xvd2VyCiAgIGhhcy1vd24tcHJvcGVydHktbmFt
ZS1jYWNoZSAgICAgICAgICAgICAgICAgICAgICAgNzIuMzI2NystMS4wMTE1ICAgICAgICAgICA3
MC4zNDQ5Ky0xLjE1OTYgICAgICAgICAgbWlnaHQgYmUgMS4wMjgyeCBmYXN0ZXIKICAgSlNPTlAt
bmVnYXRpdmUtMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC40NTcyKy0wLjAy
NzUgICAgID8gICAgICAwLjQ2MzkrLTAuMDQwMiAgICAgICAgPyBtaWdodCBiZSAxLjAxNDh4IHNs
b3dlcgogICBvYmplY3QtaW50LXN1YiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDE5LjE0MjMrLTEuNDU4NSAgICAgICAgICAgMTguOTMwMistMC43MjY3ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDExMnggZmFzdGVyCiAgIGludC1vci1vdGhlci1hZGQtdGhlbi1nZXQtYnktdmFsICAg
ICAgICAgICAgICAgICAgIDYuMzMwOCstMC40NTgyICAgICAgICAgICAgNi4yNzE5Ky0wLjI5NDUg
ICAgICAgIAogICBkb3VibGUtcG9sbHV0aW9uLWdldGJ5dmFsICAgICAgICAgICAgICAgICAgICAg
ICAgICA5LjY0OTIrLTAuMzg2MyAgICAgPyAgICAgIDkuNjUwMystMC41NTUzICAgICAgICA/CiAg
IG1hcC1mb3ItZWFjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNjIy
OSstMC4yMjg5ICAgICA/ICAgICAgNC4xMTA0Ky0xLjc0NjQgICAgICAgID8gbWlnaHQgYmUgMS4x
MzQ2eCBzbG93ZXIKICAgaW5mZXItb25lLXRpbWUtZGVlcC1jbG9zdXJlICAgICAgICAgICAgICAg
ICAgICAgICAxNS45MTA0Ky0wLjk5NzkgICAgICAgICAgIDE1LjYzNTArLTAuMzUyMSAgICAgICAg
ICBtaWdodCBiZSAxLjAxNzZ4IGZhc3RlcgogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLWNoYWlu
LWZyb20tdHJ5LWJsb2NrICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIuOTA0MystMC4xODc5ICAgICA/ICAgICAgMy4xNTIwKy0wLjU5OTcg
ICAgICAgID8gbWlnaHQgYmUgMS4wODUzeCBzbG93ZXIKICAgaW5mZXItY29uc3RhbnQtcHJvcGVy
dHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy41NDQzKy0wLjM4MTIgICAgICAgICAgICAz
LjMzOTYrLTAuMjAyOCAgICAgICAgICBtaWdodCBiZSAxLjA2MTN4IGZhc3RlcgogICBpcy1ib29s
ZWFuLWZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjUxMDcrLTAuMjIx
NyAgICAgPyAgICAgIDMuNTEyMystMC4yMDU0ICAgICAgICA/CiAgIHNpbXBsZS1nZXR0ZXItYWNj
ZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjIuMjAzMistMC4zNTI4ICAgICA/ICAg
ICAyMy42NzU2Ky0xLjEzMTQgICAgICAgID8gbWlnaHQgYmUgMS4wNjYzeCBzbG93ZXIKICAgcHV0
LWJ5LWlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi4yNTkxKy0w
LjMxMTQgICAgID8gICAgIDE2LjMwMjErLTAuNTIxNyAgICAgICAgPwogICBpbmZlci1jbG9zdXJl
LWNvbnN0LXRoZW4tbW92LW5vLWlubGluZSAgICAgICAgICAgICA1LjYxNDErLTAuNzExMSAgICAg
PyAgICAgIDUuODc0NistMS42Mzk4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ2NHggc2xvd2VyCiAg
IGdldC1ieS12YWwtb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuOTE5
MystMC44NjM2ICAgICAgICAgICAgNi42NzY2Ky0wLjM2NzkgICAgICAgICAgbWlnaHQgYmUgMS4w
MzYzeCBmYXN0ZXIKICAgc3RyaW5nLWNoYXItY29kZS1hdCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyMS43NTY5Ky0wLjYxNDEgICAgID8gICAgIDIzLjc2MTcrLTYuMzE0MiAgICAgICAg
PyBtaWdodCBiZSAxLjA5MjF4IHNsb3dlcgogICBkaXJlY3QtY2FsbCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDY5LjY2MjQrLTIuMjE3NiAgICAgPyAgICAgNzMuMjA3Nist
NC40Mzc3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDUwOXggc2xvd2VyCiAgIGVsaWRhYmxlLW5ldy1v
YmplY3QtdHJlZSAgICAgICAgICAgICAgICAgICAgICAgICAgMjQuMzIyNystMC4zMjkyICAgICA/
ICAgICAyNC41NzU5Ky0wLjQ4MzAgICAgICAgID8gbWlnaHQgYmUgMS4wMTA0eCBzbG93ZXIKICAg
cmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cyAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjQxODkrLTAu
MTU2MSAgICAgPyAgICAgIDEuNTA0MystMC4xODk2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDYwMngg
c2xvd2VyCiAgIHJlZ2V4cC1zZXQtbGFzdC1pbmRleCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTIuODgwMCstMC40NzkxICAgICA/ICAgICAxMy40ODQ0Ky0wLjU0MDggICAgICAgID8gbWln
aHQgYmUgMS4wNDY5eCBzbG93ZXIKICAgdGFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA5My45MTIxKy0xLjkzMzggICAgID8gICAgIDk1LjEzOTYrLTEuOTE1
MyAgICAgICAgPyBtaWdodCBiZSAxLjAxMzF4IHNsb3dlcgogICBpbmZlci1vbmUtdGltZS1jbG9z
dXJlLXRlbi12YXJzICAgICAgICAgICAgICAgICAgICA5LjY1MjErLTAuOTQzMCAgICAgPyAgICAg
IDkuNjU1OCstMC44MDQzICAgICAgICA/CiAgIHRvLW51bWJlci1udW1iZXItc3RyaW5nLW51bWJl
ci1zdHJpbmcgICAgICAgICAgICAgIDUuNzc2MSstMS42OTE0ICAgICAgICAgICAgNS4zODcxKy0w
LjQ0ODEgICAgICAgICAgbWlnaHQgYmUgMS4wNzIyeCBmYXN0ZXIKICAgYXNzaWduLWN1c3RvbS1z
ZXR0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS40MzgxKy0wLjg2NjAgICAgID8g
ICAgICA5LjY4ODMrLTEuMTA0MSAgICAgICAgPyBtaWdodCBiZSAxLjAyNjV4IHNsb3dlcgogICBj
dXN0b20tc2V0dGVyLWdldHRlci1hcy1wdXQtZ2V0LWJ5LWlkICAgICAgICAgICAgICAwLjgxMzEr
LTAuMTA0NyAgICAgPyAgICAgIDAuODQ1MCstMC4xNTQ4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM5
M3ggc2xvd2VyCiAgIG1ha2UtaW5kZXhlZC1zdG9yYWdlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDUuNjEyNSstMS43MDg0ICAgICAgICAgICAgNS4yNDMxKy0xLjQ5ODAgICAgICAgICAg
bWlnaHQgYmUgMS4wNzA0eCBmYXN0ZXIKICAgb2JqZWN0LWludC1hZGQtYXJyYXkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxNC4yNTg0Ky0yLjAxMzcgICAgICAgICAgIDEyLjMwOTQrLTAu
NjY5NCAgICAgICAgICBtaWdodCBiZSAxLjE1ODN4IGZhc3RlcgogICBhcmd1bWVudHMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4Ljg5OTArLTIuMTY0NyAgICAgICAg
ICAgIDcuNjkzOSstMC4zNjQ2ICAgICAgICAgIG1pZ2h0IGJlIDEuMTU2NnggZmFzdGVyCiAgIGxh
cmdlLWludC1uZWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYuMjI3OSst
MC40ODE0ICAgICAgICAgICAxNi4xODAzKy0wLjcyODAgICAgICAgIAogICBpcy1vYmplY3Qtb3It
bnVsbC10cmlja3ktZnVuY3Rpb24gICAgICAgICAgICAgICAgICA1Ljk1MTErLTAuOTQzNSAgICAg
ICAgICAgIDUuMjYxNystMC4zMjAxICAgICAgICAgIG1pZ2h0IGJlIDEuMTMxMHggZmFzdGVyCiAg
IGdjc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNDc2
NystMC4xMzM2ICAgICA/ICAgICAgNS41NDI0Ky0wLjM0MzggICAgICAgID8gbWlnaHQgYmUgMS4w
MTIweCBzbG93ZXIKICAgZm9sZC1nZXQtYnktaWQtdG8tbXVsdGktZ2V0LWJ5LW9mZnNldC1yYXJl
LWludCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEzLjIxMzErLTIuMTI0MCAgICAgPyAgICAgMTMuNjE5NCstNC4wODc2ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDMwOHggc2xvd2VyCiAgIGFiYy1za2lwcHktbG9vcCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMjcuMDMyMSstMC40NzA2ICAgICA/ICAgICAyNy42NDc2Ky0wLjQ5
NjEgICAgICAgID8gbWlnaHQgYmUgMS4wMjI4eCBzbG93ZXIKICAgaW5saW5lLWFyZ3VtZW50cy1h
bGlhc2VkLWFjY2VzcyAgICAgICAgICAgICAgICAgICAgNS4zNDU5Ky0wLjQ0NDYgICAgID8gICAg
ICA2Ljc5MzkrLTEuNjA2MiAgICAgICAgPyBtaWdodCBiZSAxLjI3MDl4IHNsb3dlcgogICBpcy1h
cnJheS1mb3Itbm9uLWFycmF5LW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAzLjQxNjMrLTAu
MzUwOSAgICAgICAgICAgIDMuMTI1MistMC4yMTAxICAgICAgICAgIG1pZ2h0IGJlIDEuMDkzMXgg
ZmFzdGVyCiAgIGVsaWRhYmxlLW5ldy1vYmplY3QtZGFnICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMzIuNzM3OCstOS45MjMxICAgICAgICAgICAyNi4xNTk3Ky0wLjQwMDUgICAgICAgICAgbWln
aHQgYmUgMS4yNTE1eCBmYXN0ZXIKICAgc3dpdGNoLXN0cmluZy1sZW5ndGgtdG93ZXIgICAgICAg
ICAgICAgICAgICAgICAgICAxNC4xNTM5Ky0wLjY5NjkgICAgID8gICAgIDE1Ljg4NTMrLTMuNzMw
MyAgICAgICAgPyBtaWdodCBiZSAxLjEyMjN4IHNsb3dlcgogICBhcnJvd2Z1bmN0aW9uLWNhbGwt
aW4tY2xhc3MtbWV0aG9kICAgICAgICAgICAgICAgIDEzLjM1NjErLTAuNjc0OSAgICAgICAgICAg
MTIuOTU1MistMS4yMDIzICAgICAgICAgIG1pZ2h0IGJlIDEuMDMwOXggZmFzdGVyCiAgIHN0cmlu
Zy1jb25jYXQtcGFpci1zaW1wbGUgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNzAxMistMC40
MTg3ICAgICAgICAgICAgNC40ODI1Ky0wLjI4NjQgICAgICAgICAgbWlnaHQgYmUgMS4wNDg4eCBm
YXN0ZXIKICAgZm9yLW9mLWFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyMy4wMzU3Ky0wLjM5MDAgICAgID8gICAgIDI0LjIyNTUrLTEuODI4NiAgICAgICAgPyBtaWdo
dCBiZSAxLjA1MTd4IHNsb3dlcgogICBzdHJpbmctcHJvdG90eXBlLXNlYXJjaC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0cyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxLjMwNzgrLTAuMjkxOSAgICAgPyAgICAgIDEuMzY2OCstMC40NDU1ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDQ1MXggc2xvd2VyCiAgIHZhcmFyZ3MgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuODU0OSstMC43MzM3ICAgICAgICAgICAxMC42
MDU2Ky0wLjYzMjUgICAgICAgICAgbWlnaHQgYmUgMS4wMjM1eCBmYXN0ZXIKICAgc3RyaW5nLXZh
ci1lcXVhbGl0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMy42MjM2Ky0xLjU2Mzcg
ICAgID8gICAgIDMzLjgzMzUrLTEuNDc2NSAgICAgICAgPwogICB0by1udW1iZXItb25seS1udW1i
ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjg0MTcrLTAuMDIyMSAgICAgPyAgICAg
IDAuODk3MSstMC4xMTM5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDY1OHggc2xvd2VyCiAgIGZ1bmN0
aW9uLXRlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuOTg4OSstMC4y
OTY1ICAgICA/ICAgICAgNC4wNTcyKy0wLjI2MTggICAgICAgID8gbWlnaHQgYmUgMS4wMTcxeCBz
bG93ZXIKICAgdW5wcm9maWxlZC1saWNtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOC45NjY2Ky0wLjgzMTcgICAgID8gICAgICA5LjQxNTErLTEuMzkzNiAgICAgICAgPyBtaWdo
dCBiZSAxLjA1MDB4IHNsb3dlcgogICBzdHJpbmctY29ucy10b3dlciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA3LjIyNzkrLTAuOTQ0NyAgICAgPyAgICAgIDcuNDI1MistMC45MTY3
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI3M3ggc2xvd2VyCiAgIEludDhBcnJheS1sb2FkLXdpdGgt
Ynl0ZUxlbmd0aCAgICAgICAgICAgICAgICAgICAgIDUuMjg5MCstMC4zODc2ICAgICAgICAgICAg
NS4yNDE0Ky0wLjM4ODQgICAgICAgIAogICBpbmxpbmVkLXB1dC1ieS12YWwtd2l0aC1zdHJpbmct
dHJhbnNpdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDYwLjY2MjIrLTAuNzk3NCAgICAgICAgICAgNTkuNzkxNCstMC44NTQyICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDE0NnggZmFzdGVyCiAgIGxpY20tZHJhZ29ucy1vdmVyZmxvdyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMjcuMDQ1OCstNi4wNjM5ICAgICAgICAgICAyNC42Mzk4
Ky0xLjIyODkgICAgICAgICAgbWlnaHQgYmUgMS4wOTc2eCBmYXN0ZXIKICAgdmFyYXJncy1jb25z
dHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC42NTg3Ky0wLjQ4MTYgICAg
ID8gICAgIDI0Ljc1MDQrLTAuODg1NyAgICAgICAgPwogICBtb2QtYm9vbGVhbi1kb3VibGUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjYxMjgrLTAuMzI3NyAgICAgPyAgICAgIDcu
MzUyNystMS40Nzk0ICAgICAgICA/IG1pZ2h0IGJlIDEuMTExOXggc2xvd2VyCiAgIG5lc3RlZC1m
dW5jdGlvbi1wYXJzaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAxODkuODc4OSstNTcuMjQx
MiAgICAgICAgIDE2My4xODIxKy0yLjI4NDUgICAgICAgICAgbWlnaHQgYmUgMS4xNjM2eCBmYXN0
ZXIKICAgc2luay1odWdlLWFjdGl2YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
My40OTA1Ky0wLjk2NTEgICAgICAgICAgIDEzLjE3ODgrLTAuOTQ1MyAgICAgICAgICBtaWdodCBi
ZSAxLjAyMzd4IGZhc3RlcgogICB2YXJhcmdzLWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDE2Ljg2ODArLTAuNzYwNSAgICAgICAgICAgMTYuMzMzNistMC45Mzk4ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDMyN3ggZmFzdGVyCiAgIHNpbXBsZS1yZWdleHAtdGVzdC1mb2xk
aW5nLXdpdGgtaG9pc3RlZC1yZWdleHAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxNC4zODAyKy0wLjc5MjUgICAgID8gICAgIDE0LjYwMjAr
LTAuNTEwNyAgICAgICAgPyBtaWdodCBiZSAxLjAxNTR4IHNsb3dlcgogICBpbXVsLWludC1vbmx5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjU1MzErLTAuNzI4OSAgICAg
ICAgICAgIDYuNzkzNSstMS4yMDE0ICAgICAgICAgIG1pZ2h0IGJlIDEuMTExOHggZmFzdGVyCiAg
IHRlYXItb2ZmLWFyZ3VtZW50cy1zaW1wbGUgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNTIx
MSstMC4zMTU5ICAgICA/ICAgICAgNC4yODM4Ky0wLjg5NDEgICAgICAgID8gbWlnaHQgYmUgMS4y
MTY2eCBzbG93ZXIKICAgYWRhcHQtdG8tZG91YmxlLWRpdmlkZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxOS40MTA3Ky0wLjY4MTIgICAgID8gICAgIDE5Ljc2MDkrLTEuMzUzNCAgICAgICAg
PyBtaWdodCBiZSAxLjAxODB4IHNsb3dlcgogICBnZXRfY2FsbGVlX21vbm9tb3JwaGljICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA0LjM1MjErLTEuMDI4NyAgICAgICAgICAgIDQuMTIzMyst
MS4wNTIwICAgICAgICAgIG1pZ2h0IGJlIDEuMDU1NXggZmFzdGVyCiAgIHN3aXRjaC1zdHJpbmct
c2hvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQuNDEzNistMC44NDYwICAgICA/
ICAgICAxNC43MzY4Ky0xLjEzNzkgICAgICAgID8gbWlnaHQgYmUgMS4wMjI0eCBzbG93ZXIKICAg
aXMtYXJyYXktZm9yLWFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy45MDc5
Ky0wLjc3ODEgICAgID8gICAgICA0LjMxNjkrLTEuOTI0MSAgICAgICAgPyBtaWdodCBiZSAxLjEw
NDZ4IHNsb3dlcgogICBvYmplY3QtZW50cmllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTE0LjkxMDErLTMuMDA4OSAgICAgPyAgICAxMTYuMDc0MystMi43MTYzICAgICAgICA/
IG1pZ2h0IGJlIDEuMDEwMXggc2xvd2VyCiAgIEFycmF5QnVmZmVyLUludDMyQXJyYXktYnl0ZU9m
ZnNldCAgICAgICAgICAgICAgICAgIDUuOTMzMystMC4zODY0ICAgICAgICAgICAgNS42MzUxKy0w
LjE5NzQgICAgICAgICAgbWlnaHQgYmUgMS4wNTI5eCBmYXN0ZXIKICAgaW5mZXItY2xvc3VyZS1j
b25zdC10aGVuLXB1dC10by1zY29wZS1uby1pbmxpbmUgICAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi44NzU0Ky0wLjY2NzkgICAgICAgICAg
IDEyLjUwMDUrLTAuNzAwMCAgICAgICAgICBtaWdodCBiZSAxLjAzMDB4IGZhc3RlcgogICB2YXJh
cmdzLWNvbnN0cnVjdC1pbmxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLjk2ODIrLTAu
NzQ3MCAgICAgPyAgICAgMjEuMDgwMistMC42NDkwICAgICAgICA/CiAgIGdldC1ieS12YWwtd2l0
aC1zdHJpbmctcXVhZG1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uLXNpbXBsZSAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1
LjM3NzkrLTAuMzU0MSAgICAgPyAgICAgIDUuNjAwNystMC4zMzk4ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDQxNHggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wtY2hlY2stc3RydWN0dXJl
LWVsaW1pbmF0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTAuODExNCstMi4wMDEyICAgICAgICAgICAxMC40MTY3Ky0xLjAwMTggICAg
ICAgICAgbWlnaHQgYmUgMS4wMzc5eCBmYXN0ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZSAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjY5MTYrLTAuMDM5MyAgICAgPyAgICAg
IDAuNzE0OCstMC4wNjY1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMzNXggc2xvd2VyCiAgIHJlZ2V4
cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC41ODYy
Ky0wLjAxODMgICAgID8gICAgICAwLjU5NjErLTAuMDQyOCAgICAgICAgPyBtaWdodCBiZSAxLjAx
NzB4IHNsb3dlcgogICBmdGwtcG9seW1vcnBoaWMtYml0YW5kICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTc4LjYzNTIrLTIuNjM1NCAgICAgICAgICAxNzguMTE4MSstMy4wOTkyICAgICAgICAK
ICAgY3NlLW5ldy1hcnJheS1idWZmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy42
MzEyKy0wLjI4NjcgICAgID8gICAgICAzLjgzMzkrLTAuODg3NSAgICAgICAgPyBtaWdodCBiZSAx
LjA1NTh4IHNsb3dlcgogICBzcGxpY2UtdG8tcmVtb3ZlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIxLjE1NzMrLTEuMTYzOSAgICAgPyAgICAgMjEuMjkzOSstMS40NTg3ICAgICAg
ICA/CiAgIG5lZy1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMuOTM3NistMC42Njc0ICAgICAgICAgICAgMy43NTM1Ky0wLjQxMTUgICAgICAgICAgbWlnaHQg
YmUgMS4wNDkxeCBmYXN0ZXIKICAgSW50MTZBcnJheS10by1JbnQzMkFycmF5LXNldCAgICAgICAg
ICAgICAgICAgICAgICA1MC43NDcxKy0xLjU2MzUgICAgICAgICAgIDUwLjM4ODErLTIuMjU4MyAg
ICAgICAgCiAgIGZvci1vZi1pdGVyYXRlLWFycmF5LWtleXMgICAgICAgICAgICAgICAgICAgICAg
ICAgIDYuNzMwMystMC41MDE2ICAgICA/ICAgICAgNy42ODg5Ky0xLjY3MzEgICAgICAgID8gbWln
aHQgYmUgMS4xNDI0eCBzbG93ZXIKICAgbWFrZS1yb3BlLWNzZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNS4xMjMyKy0xLjI1OTMgICAgID8gICAgICA1LjM3OTMrLTEuMzIy
NyAgICAgICAgPyBtaWdodCBiZSAxLjA1MDB4IHNsb3dlcgogICByZXN0LXBhcmFtZXRlci1hbGxv
Y2F0aW9uLWVsaW1pbmF0aW9uICAgICAgICAgICAgMjU3Ljk2MjIrLTMuNjM5OCAgICAgPyAgICAy
NjAuMDYxNystMy4xNTA2ICAgICAgICA/CiAgIGlzLWZ1bmN0aW9uLWZvbGQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDMuNjcyMystMC4zNTQ1ICAgICAgICAgICAgMy41MDg0Ky0w
LjIzMjYgICAgICAgICAgbWlnaHQgYmUgMS4wNDY3eCBmYXN0ZXIKICAgRGF0YVZpZXctY3VzdG9t
LXByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICA3OC44Nzk2Ky0xMi4xMDI3ICAgICAg
ICAgIDczLjQyMzIrLTEuNDg4MyAgICAgICAgICBtaWdodCBiZSAxLjA3NDN4IGZhc3RlcgogICBu
ZXctYXJyYXktYnVmZmVyLWRlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk3LjA3NzQr
LTE3Ljk1MzcgICAgICAgICAgODkuNTE4NistMS42NjAyICAgICAgICAgIG1pZ2h0IGJlIDEuMDg0
NHggZmFzdGVyCiAgIHByb3RvdHlwZS1hY2Nlc3Mtd2l0aC1tdXRhdGluZy1wcm90b3R5cGUgICAg
ICAgICAgIDcuMjc2NSstMS4yMTg5ICAgICAgICAgICAgNy4xNDg1Ky0wLjk5NTkgICAgICAgICAg
bWlnaHQgYmUgMS4wMTc5eCBmYXN0ZXIKICAgYWxsb2NhdGUtYmlnLW9iamVjdCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNC43OTEwKy0xLjIyMjYgICAgICAgICAgICAzLjkxNzMrLTAu
MzQxOCAgICAgICAgICBtaWdodCBiZSAxLjIyMzB4IGZhc3RlcgogICBkaXJlY3QtY2FsbC1hcml0
eS1taXNtYXRjaCAgICAgICAgICAgICAgICAgICAgICAgIDgyLjAzNTErLTEuNjk5MSAgICAgICAg
ICAgODAuNzE1MistMS41NDkyICAgICAgICAgIG1pZ2h0IGJlIDEuMDE2NHggZmFzdGVyCiAgIGdl
dC1ieS12YWwtd2l0aC1zeW1ib2wtcHJvdG8tb3Itc2VsZiAgICAgICAgICAgICAgMTUuMDkyOCst
NC4xMjcwICAgICAgICAgICAxNC4zODEzKy0xLjQyNjcgICAgICAgICAgbWlnaHQgYmUgMS4wNDk1
eCBmYXN0ZXIKICAgZ2V0LWJ5LWlkLWJpbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRp
b24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNy4yNDkyKy0wLjY5NzIgICAgID8gICAgICA3LjQ5NTQrLTAuNjQxNyAgICAgICAgPyBtaWdo
dCBiZSAxLjAzNDB4IHNsb3dlcgogICBtYXAtY29uc3RhbnQta2V5ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMjE0Ljg5MTUrLTIuNjE2MSAgICAgPyAgICAyMTcuMzk0MCstMi4zNjM1
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDExNnggc2xvd2VyCiAgIGRlbHRhLWJsdWUtdHJ5LWNhdGNo
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTcuNjMyNCstMzEuMDQ0NiAgICA/ICAgIDEz
NS45NDg5Ky0yLjE2NTUgICAgICAgID8gbWlnaHQgYmUgMS4xNTU3eCBzbG93ZXIKICAgc3RyaW5n
LXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC42NTk3Ky0wLjAyMjMg
ICAgID8gICAgICAwLjgxMDkrLTAuMTQ0MiAgICAgICAgPyBtaWdodCBiZSAxLjIyOTF4IHNsb3dl
cgogICBuby1pbmxpbmUtY29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMw
LjA3NDIrLTAuNzI1MiAgICAgICAgICAgMjkuNjg0NistMC41MTQ3ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDEzMXggZmFzdGVyCiAgIG51bWJlci10by1zdHJpbmctd2l0aC1hZGQtZW1wdHkgICAgICAg
ICAgICAgICAgICAgMTEuMTU0NistMC45MzUxICAgICAgICAgICAxMC4wMDIzKy0xLjAxNjggICAg
ICAgICAgbWlnaHQgYmUgMS4xMTUyeCBmYXN0ZXIKICAgY21wZXEtb2JqLXRvLW9iai1vdGhlciAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxMS45MTYyKy0wLjU5NTkgICAgID8gICAgIDEzLjAw
MDIrLTEuODM4OCAgICAgICAgPyBtaWdodCBiZSAxLjA5MTB4IHNsb3dlcgogICBBcnJheUJ1ZmZl
ci1EYXRhVmlldy1hbGxvYy1sb25nLWxpdmVkICAgICAgICAgICAgIDIzLjM0OTUrLTEuMjc0MiAg
ICAgPyAgICAgMjMuNzIyMCstMS4wOTAxICAgICAgICA/IG1pZ2h0IGJlIDEuMDE2MHggc2xvd2Vy
CiAgIGdldC1ieS1pZC1xdWFkbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2lt
cGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDQuNTI0MSstMC4yNjg4ICAgICAgICAgICAgNC40MzU4Ky0wLjMxOTEgICAgICAgICAgbWln
aHQgYmUgMS4wMTk5eCBmYXN0ZXIKICAgaW4tdHdvLWNhc2VzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxMi4zODgwKy0wLjU2MTEgICAgID8gICAgIDEzLjI1MjcrLTAuNTQ3
NSAgICAgICAgPyBtaWdodCBiZSAxLjA2OTh4IHNsb3dlcgogICBzdHJpbmctYWRkLWNvbnN0YW50
LWZvbGRpbmcgICAgICAgICAgICAgICAgICAgICAgMjA4LjkzNzYrLTMuMzk2OCAgICAgXiAgICAy
MDMuMzg0MystMS42Njk5ICAgICAgICBeIGRlZmluaXRlbHkgMS4wMjczeCBmYXN0ZXIKICAgc3dp
dGNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS44MTIwKy0w
LjkyODYgICAgICAgICAgICA5LjU1MTcrLTEuMDA3NyAgICAgICAgICBtaWdodCBiZSAxLjAyNzN4
IGZhc3RlcgogICBpbmZlci1jbG9zdXJlLWNvbnN0LXRoZW4tbW92ICAgICAgICAgICAgICAgICAg
ICAgIDEwLjM5OTYrLTEuMjUzMiAgICAgICAgICAgIDkuODM2NistMC40Mzc1ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDU3MnggZmFzdGVyCiAgIHN0cmluZy1lcXVhbGl0eSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTUuOTQ5NSstMC43NjEwICAgICAgICAgICAxNS4yOTQxKy0xLjAz
NzAgICAgICAgICAgbWlnaHQgYmUgMS4wNDI5eCBmYXN0ZXIKICAgaW50LW9yLW90aGVyLW5lZy10
aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAyOC43NjAyKy0xLjA3OTIgICAgICEgICAg
MzI1LjY5MzQrLTQuMjAxNiAgICAgICAgISBkZWZpbml0ZWx5IDExLjMyNDR4IHNsb3dlcgogICBz
dXBlci1nZXQtYnktaWQtd2l0aC10aGlzLW1vbm9tb3JwaGljICAgICAgICAgICAgIDI1Ljc1MTUr
LTEuMTQ4OCAgICAgPyAgICAgMjcuNDE4NSstMC45MTg4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDY0
N3ggc2xvd2VyCiAgIGFiYy1wb3N0Zml4LWJhY2t3YXJkLWxvb3AgICAgICAgICAgICAgICAgICAg
ICAgICAgNDUuNjgwNSstMTIuOTEwNSAgICAgICAgICA0Mi45MzIxKy03Ljk4MjMgICAgICAgICAg
bWlnaHQgYmUgMS4wNjQweCBmYXN0ZXIKICAgYWJzLWJvb2xlYW4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMy44NDkxKy0wLjI3MDAgICAgID8gICAgICA0LjExMjgrLTAu
MzYyNiAgICAgICAgPyBtaWdodCBiZSAxLjA2ODV4IHNsb3dlcgogICBmaXhlZC10eXBlZC1hcnJh
eS1zdG9yYWdlLXZhci1pbmRleCAgICAgICAgICAgICAgICAyLjYwOTYrLTAuNjU1OSAgICAgICAg
ICAgIDIuNTkwNystMC43MzUyICAgICAgICAKICAgc3RyaW5nLXJlcGxhY2UtZ2VuZXJpYyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA2Ni4xNjcwKy0yLjMzMjUgICAgICAgICAgIDYzLjIwNzEr
LTEuMzYxNCAgICAgICAgICBtaWdodCBiZSAxLjA0Njh4IGZhc3RlcgogICBzaW5nbGV0b24tc2Nv
cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU3LjgwNDQrLTIuMDEwOSAgICAg
PyAgICAgNTguODg5MCstMi42MDI0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE4OHggc2xvd2VyCiAg
IGRpdi1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuMDAw
MSstMC40NTA3ICAgICAgICAgICAgOS44NTg2Ky0wLjUxODUgICAgICAgICAgbWlnaHQgYmUgMS4w
MTQ0eCBmYXN0ZXIKICAgcHV0LWJ5LWlkLXNsaWdodGx5LXBvbHltb3JwaGljICAgICAgICAgICAg
ICAgICAgICAgMy44MzE5Ky0wLjQzMjQgICAgID8gICAgICA0LjAzNjArLTAuNjg5MyAgICAgICAg
PyBtaWdodCBiZSAxLjA1MzN4IHNsb3dlcgogICBzdXBlci1nZXQtYnktdmFsLXdpdGgtdGhpcy1w
b2x5bW9ycGhpYyAgICAgICAgICAgIDMwLjI0MTUrLTAuODQxMSAgICAgPyAgICAgMzAuOTU5OSst
MS4xOTU2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIzOHggc2xvd2VyCiAgIGFycmF5LXNwbGljZS1j
b250aWd1b3VzICAgICAgICAgICAgICAgICAgICAgICAgICAgMzguNjk2MCstMC4zMzMxICAgICAg
ICAgICAzOC4xNjE5Ky0wLjY1ODkgICAgICAgICAgbWlnaHQgYmUgMS4wMTQweCBmYXN0ZXIKICAg
cG9seS1jaGFpbi1hY2Nlc3MtZGlmZmVyZW50LXByb3RvdHlwZXMtc2ltcGxlICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMjIzOCstMC42
Nzc2ICAgICAgICAgICAgMy45Nzg1Ky0wLjMzMjAgICAgICAgICAgbWlnaHQgYmUgMS4wNjE3eCBm
YXN0ZXIKICAgZ2xvYmFsLXZhci1jb25zdC1pbmZlciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMS4wNjk2Ky0wLjA2NTggICAgID8gICAgICAxLjA3NDIrLTAuMDc2NyAgICAgICAgPwogICBz
d2l0Y2gtc3RyaW5nLWJhc2ljLWJpZy12YXIgICAgICAgICAgICAgICAgICAgICAgIDE5LjYyMTkr
LTAuOTkxNSAgICAgICAgICAgMTguODQ4MistMC45MDk4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQx
MHggZmFzdGVyCiAgIGRlbHRhYmx1ZS12YXJhcmdzICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMjMuOTAyNystMS4wOTU0ICAgICA/ICAgICAyNC40OTEzKy0xLjE4MzggICAgICAgID8g
bWlnaHQgYmUgMS4wMjQ2eCBzbG93ZXIKICAgYXJyYXktd2l0aC1kb3VibGUtbXVsLWFkZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgNy4wODY3Ky0wLjY0NjYgICAgICAgICAgICA2LjM0NjErLTAu
NDQ4NyAgICAgICAgICBtaWdodCBiZSAxLjExNjd4IGZhc3RlcgogICBkaXJlY3QtdGFpbC1jYWxs
LWlubGluZWQtY2FsbGVyLWFyaXR5LW1pc21hdGNoICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODYuMzE0MistMi4xMjQzICAgICAgICAgICA4
NC41NDI5Ky0yLjAxNTUgICAgICAgICAgbWlnaHQgYmUgMS4wMjEweCBmYXN0ZXIKICAgYXJyYXkt
d2l0aC1pbnQzMi1vci1kb3VibGUtc3VtICAgICAgICAgICAgICAgICAgICAgNC43NzA1Ky0wLjQx
NTQgICAgID8gICAgICA1LjM1OTErLTEuNDEwMiAgICAgICAgPyBtaWdodCBiZSAxLjEyMzR4IHNs
b3dlcgogICBzd2l0Y2gtY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA3LjI3MDIrLTAuNjAyNyAgICAgPyAgICAgIDcuMjc2OSstMC42MzY4ICAgICAgICA/CiAgIHN1
cGVyLWdldHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDMuNTQ3OCst
Ny42NTg2ICAgICAgICAgICA0My41MDI5Ky02LjQ5MjggICAgICAgIAogICBnZW5lcmF0b3Itc3Vu
c3BpZGVyLWFjY2Vzcy1uc2lldmUgICAgICAgICAgICAgICAgICA5LjI5OTYrLTMuMTE1NSAgICAg
ICAgICAgIDguMDg3NSstMS40NzE2ICAgICAgICAgIG1pZ2h0IGJlIDEuMTQ5OXggZmFzdGVyCiAg
IGJ1Zy0xNTM0MzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNzMy
MystMC40MjMxICAgICA/ICAgICAgNC45NTY4Ky0wLjc2MjEgICAgICAgID8gbWlnaHQgYmUgMS4w
NDc1eCBzbG93ZXIKICAgSW50MTZBcnJheS1idWJibGUtc29ydCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyNS4yNzYwKy0wLjkyNjcgICAgID8gICAgIDI1Ljg0ODUrLTEuMjkwMyAgICAgICAg
PyBtaWdodCBiZSAxLjAyMjd4IHNsb3dlcgogICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzNCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLjYwMjIrLTAuMDQ3MiAgICAgPyAgICAgIDAuNzExNSstMC4y
ODM5ICAgICAgICA/IG1pZ2h0IGJlIDEuMTgxNnggc2xvd2VyCiAgIGV2YWwtY29kZS1mdGwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTcuNjg5NCstMC43NTkyICAgICA/ICAg
ICA1OS40OTAxKy0xLjQwMTggICAgICAgID8gbWlnaHQgYmUgMS4wMzEyeCBzbG93ZXIKICAgY2hh
aW4tZ2V0dGVyLWFjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNS4zMTcwKy0w
Ljc1MTUgICAgID8gICAgIDE1LjMyNTArLTAuOTc1OSAgICAgICAgPwogICBzdHJpbmctY29uY2F0
LXNpbXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjkxMzUrLTEuNDU2MCAgICAg
ICAgICAgIDcuMzI2NSstMC44MTYzICAgICAgICAgIG1pZ2h0IGJlIDEuMDgwMXggZmFzdGVyCiAg
IGFyaXR5LW1pc21hdGNoLWlubGluaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuNDQ3
MSstMC4xMTY2ICAgICAgICAgICAgMS4zODM0Ky0wLjA2NjIgICAgICAgICAgbWlnaHQgYmUgMS4w
NDYxeCBmYXN0ZXIKICAgYXJyYXktcHJvdG90eXBlLWV2ZXJ5ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA0Ny44NDg5Ky0xLjY1MTEgICAgICAgICAgIDQ1LjU0ODErLTIuOTg1OSAgICAgICAg
ICBtaWdodCBiZSAxLjA1MDV4IGZhc3RlcgogICBpbnQtb3Itb3RoZXItYWJzLXRoZW4tZ2V0LWJ5
LXZhbCAgICAgICAgICAgICAgICAgIDEyLjM0NzkrLTEuMzQyNCAgICAgPyAgICAgMTIuNzg2NSst
MC42MDU0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM1NXggc2xvd2VyCiAgIGZ0bC1wb2x5bW9ycGhp
Yy1sc2hpZnQgICAgICAgICAgICAgICAgICAgICAgICAgICAyMTUuMTY2NSstNC40MTMzICAgICAg
ICAgIDIxNS4xNTUwKy0xLjEzODcgICAgICAgIAogICBmb2xkLWdldC1ieS1pZC10by1tdWx0aS1n
ZXQtYnktb2Zmc2V0ICAgICAgICAgICAgIDEzLjI5NDQrLTEuMTc5NyAgICAgICAgICAgMTEuMzkw
MSstMi4xNjc1ICAgICAgICAgIG1pZ2h0IGJlIDEuMTY3MnggZmFzdGVyCiAgIGlzLXN5bWJvbCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNDEzMistMC4xNDk3ICAg
ICA/ICAgICAgMi41NTU1Ky0wLjMyNDEgICAgICAgID8gbWlnaHQgYmUgMS4wNTkweCBzbG93ZXIK
ICAgaW50ZWdlci1tb2R1bG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4z
NDcxKy0wLjQzNDIgICAgID8gICAgICAzLjg4MjgrLTEuMDgzOSAgICAgICAgPyBtaWdodCBiZSAx
LjE2MDF4IHNsb3dlcgogICBpbnQtb3Itb3RoZXItZGl2LXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAg
ICAgICAgICAgICA2LjAzMzIrLTAuNDg3MyAgICAgICAgICAgIDUuNzA4MistMC4yNzQ2ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDU2OXggZmFzdGVyCiAgIGZvbGQtbXVsdGktZ2V0LWJ5LW9mZnNldC10
by1wb2x5LWdldC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNy4xNTg1Ky0wLjg3NTUgICAgICAgICAgICA3LjA3NDcrLTAu
NjA5MyAgICAgICAgICBtaWdodCBiZSAxLjAxMTh4IGZhc3RlcgogICBvYmplY3QtZ2V0LW93bi1w
cm9wZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5ICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuNjQ1NystMC4yMTAwICAgICA/ICAgICAg
MS43MjA5Ky0wLjI0MTYgICAgICAgID8gbWlnaHQgYmUgMS4wNDU3eCBzbG93ZXIKICAgbWFueS1m
b3JlYWNoLWNhbGxzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi44ODY1Ky0wLjI4
MzkgICAgID8gICAgICAzLjAzNzQrLTAuNDI4OSAgICAgICAgPyBtaWdodCBiZSAxLjA1MjN4IHNs
b3dlcgogICBpcy1vYmplY3Qtb3ItbnVsbC1mb2xkLWxlc3MtdHJpY2t5ICAgICAgICAgICAgICAg
ICA1LjA2MTUrLTAuMjI5NyAgICAgPyAgICAgIDUuMjQ2NystMC4yNjE5ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDM2Nnggc2xvd2VyCiAgIGlzLW51bWJlci1mb2xkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDMuNzEwOSstMC4zMzUzICAgICAgICAgICAgMy40ODE1Ky0wLjE4ODIg
ICAgICAgICAgbWlnaHQgYmUgMS4wNjU5eCBmYXN0ZXIKICAgZm9yLW9mLWl0ZXJhdGUtYXJyYXkt
dmFsdWVzICAgICAgICAgICAgICAgICAgICAgICAgNS44NTY2Ky0wLjMzNDUgICAgID8gICAgICA2
LjMzNzQrLTAuNTY0MCAgICAgICAgPyBtaWdodCBiZSAxLjA4MjF4IHNsb3dlcgogICByaWNoYXJk
cy1lbXB0eS10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgIDc0LjQyMTErLTIuMTg5
MCAgICAgPyAgICAgODMuNjk5NCstMTQuOTMxOSAgICAgICA/IG1pZ2h0IGJlIDEuMTI0N3ggc2xv
d2VyCiAgIGdlbmVyYXRvci1mdW5jdGlvbi1jcmVhdGUgICAgICAgICAgICAgICAgICAgICAgICAg
IDYuMDU1MCstMC45OTc1ICAgICA/ICAgICAgNi43MDcyKy0wLjk2MDMgICAgICAgID8gbWlnaHQg
YmUgMS4xMDc3eCBzbG93ZXIKICAgc3dpdGNoLWNoYXItY29uc3RhbnQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMy4wMDYzKy0wLjE2MDAgICAgID8gICAgICAzLjYwODcrLTAuODI4NiAg
ICAgICAgPyBtaWdodCBiZSAxLjIwMDR4IHNsb3dlcgogICBsb2dpY2FsLW5vdC13ZWlyZC10eXBl
cyAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjEyNTErLTAuMjM3NSAgICAgPyAgICAgIDQu
NTY4NSstMC43NjI5ICAgICAgICA/IG1pZ2h0IGJlIDEuMTA3NXggc2xvd2VyCiAgIHN0cmluZy1y
ZXBsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuNTYyNystMC41Mjgx
ICAgICA/ICAgICAxMy4yOTgzKy0xLjAzMzIgICAgICAgID8gbWlnaHQgYmUgMS4wNTg2eCBzbG93
ZXIKICAgZml4ZWQtdHlwZWQtYXJyYXktc3RvcmFnZSAgICAgICAgICAgICAgICAgICAgICAgICAg
MS44MTk1Ky0wLjExMzIgICAgID8gICAgICAxLjg0MzQrLTAuMTAwMSAgICAgICAgPyBtaWdodCBi
ZSAxLjAxMzF4IHNsb3dlcgogICBvYmplY3QtY2xvc3VyZS1jYWxsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA5LjI2NjIrLTEuMjE1OCAgICAgPyAgICAgMTAuMDgxNystMS4wNTkxICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDg4MHggc2xvd2VyCiAgIHB1dC1ieS12YWwtd2l0aC1zdHJpbmct
c2xpZ2h0bHktcG9seW1vcnBoaWMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNC4zMzczKy0wLjQ3MzIgICAgICAgICAgICA0LjMyNzIrLTAu
Mzg2OCAgICAgICAgCiAgIG1hdGgtd2l0aC1vdXQtb2YtYm91bmRzLWFycmF5LXZhbHVlcyAgICAg
ICAgICAgICAgMzYuNzAxNCstMS4wNTQ2ICAgICAgICAgICAzNS43NzQ2Ky0wLjM5NTAgICAgICAg
ICAgbWlnaHQgYmUgMS4wMjU5eCBmYXN0ZXIKICAgSW50OEFycmF5LWxvYWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNS41NTYzKy0wLjQ3NDQgICAgICAgICAgICA1LjUwNTMr
LTAuMjA5NiAgICAgICAgCiAgIGJpZ3N3aXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMzEuNzgxNSstNS4wODI2ICAgICAgICAgICAzMC4zOTQ4Ky0xLjQxOTUgICAg
ICAgICAgbWlnaHQgYmUgMS4wNDU2eCBmYXN0ZXIKICAgaXMtdW5kZWZpbmVkLWZvbGQtdHJpY2t5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNC40ODc4Ky0wLjUxNDAgICAgICAgICAgICA0LjM1
NDUrLTAuMjg0MCAgICAgICAgICBtaWdodCBiZSAxLjAzMDZ4IGZhc3RlcgogICBkaXJlY3QtdGFp
bC1jYWxsLWlubGluZWQtY2FsbGVyICAgICAgICAgICAgICAgICAgIDc3LjE0ODcrLTIuODY3NiAg
ICAgPyAgICAgNzguNDQwMCstMi44MTAzICAgICAgICA/IG1pZ2h0IGJlIDEuMDE2N3ggc2xvd2Vy
CiAgIHN0cmluZy1yZXBlYXQtbm90LXJlc29sdmluZy1maXhlZCAgICAgICAgICAgICAgICAgIDQu
ODYwNystMC4zNDU5ICAgICA/ICAgICAgNS4yMTE1Ky0wLjY5MTEgICAgICAgID8gbWlnaHQgYmUg
MS4wNzIyeCBzbG93ZXIKICAgdjgtcmF5dHJhY2Utd2l0aC10cnktY2F0Y2ggICAgICAgICAgICAg
ICAgICAgICAgICA3OS42ODM5Ky0yLjY0NTkgICAgICEgICAgIDg3LjAzOTQrLTIuODEyOCAgICAg
ICAgISBkZWZpbml0ZWx5IDEuMDkyM3ggc2xvd2VyCiAgIGlubGluZS1nZXQtc2NvcGVkLXZhciAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNDY4MistMC4zMDI2ICAgICA/ICAgICAgMy42
NzEyKy0wLjE5MjUgICAgICAgID8gbWlnaHQgYmUgMS4wNTg1eCBzbG93ZXIKICAgc2ltcGxlLXBv
bHktY2FsbC1uZXN0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4wODU3Ky0wLjU4NTYg
ICAgID8gICAgICA2LjcyMDcrLTAuNzYwNSAgICAgICAgPyBtaWdodCBiZSAxLjEwNDR4IHNsb3dl
cgogICBBcnJheUJ1ZmZlci1JbnQ4QXJyYXktYWxsb2MgICAgICAgICAgICAgICAgICAgICAgIDE5
LjYzOTIrLTAuNDEwMCAgICAgPyAgICAgMjAuMzAwNSstMS4zNzEzICAgICAgICA/IG1pZ2h0IGJl
IDEuMDMzN3ggc2xvd2VyCiAgIHNldC1mb3Itb2YgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDguNDY4NCstMS4zMzIzICAgICAgICAgICAgNy44OTU1Ky0xLjAwMTkgICAg
ICAgICAgbWlnaHQgYmUgMS4wNzI1eCBmYXN0ZXIKICAgZnJlZXplLWFuZC1kby13b3JrICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyMC4wMzMxKy00LjczMTggICAgICAgICAgIDE3Ljcx
MTArLTAuNzMwNiAgICAgICAgICBtaWdodCBiZSAxLjEzMTF4IGZhc3RlcgogICByZWdleHAtcHJv
dG90eXBlLXRlc3Qtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC44NjkyKy0wLjA1OTQgICAgICAg
ICAgICAwLjg1NzUrLTAuMDI3NSAgICAgICAgICBtaWdodCBiZSAxLjAxMzZ4IGZhc3RlcgogICBI
YXNoTWFwLXB1dC1nZXQtaXRlcmF0ZS1rZXlzICAgICAgICAgICAgICAgICAgICAgIDM0LjEyMjUr
LTAuOTA1MSAgICAgPyAgICAgMzguNzI5MCstMTAuOTQ4MSAgICAgICA/IG1pZ2h0IGJlIDEuMTM1
MHggc2xvd2VyCiAgIHN0cmluZy1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDMuMjE1NistMC42MjUxICAgICAgICAgICAgMy4wNjEwKy0wLjE4MDEgICAgICAgICAg
bWlnaHQgYmUgMS4wNTA1eCBmYXN0ZXIKICAgc2luay1mdW5jdGlvbiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOC43MDM0Ky0xLjMyNTQgICAgICAgICAgICA4LjY3MzcrLTEu
MzQ1MiAgICAgICAgCiAgIHNwYXJzZS1jb25kaXRpb25hbCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEuOTYyOSstMC4zNjgxICAgICAgICAgICAgMS43OTg1Ky0wLjA0MzEgICAgICAg
ICAgbWlnaHQgYmUgMS4wOTE0eCBmYXN0ZXIKICAgZnVuY3Rpb24td2l0aC1ldmFsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1NS44NzMwKy0yLjM0OTYgICAgID8gICAgIDU2LjY4Nzcr
LTEuODk3NSAgICAgICAgPyBtaWdodCBiZSAxLjAxNDZ4IHNsb3dlcgogICBhcnJheS1wcm90b3R5
cGUtcmVkdWNlUmlnaHQgICAgICAgICAgICAgICAgICAgICAgIDQxLjIzNDYrLTEuODc2NyAgICAg
PyAgICAgNDQuMzg1MSstMy43NTA2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDc2NHggc2xvd2VyCiAg
IGV2YWwtbm90LWV2YWwtY29tcHV0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzEuNTIz
OSstMC45MDk0ICAgICA/ICAgICAzMi4wMjg0Ky0xLjE3ODkgICAgICAgID8gbWlnaHQgYmUgMS4w
MTYweCBzbG93ZXIKICAgbmV3LWFycmF5LXB1c2ggICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNi4xNzM4Ky0xLjc5NzggICAgICAgICAgICA2LjEwNTcrLTEuMTMwNCAgICAgICAg
ICBtaWdodCBiZSAxLjAxMTJ4IGZhc3RlcgogICBwb2x5dmFyaWFudC1tb25vbW9ycGhpYy1nZXQt
YnktaWQgICAgICAgICAgICAgICAgICA1LjMzMjYrLTAuMjg3MSAgICAgPyAgICAgIDYuMDI2OCst
MC42NjA2ICAgICAgICA/IG1pZ2h0IGJlIDEuMTMwMnggc2xvd2VyCiAgIGZ0bC1wb2x5bW9ycGhp
Yy1yc2hpZnQgICAgICAgICAgICAgICAgICAgICAgICAgICAyMTkuMjg3NistMy42NTgzICAgICAg
ICAgIDIxOC42NTkyKy0xMC4zODAxICAgICAgIAogICByZWdleHAtbGFzdC1pbmRleCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEzLjEwNjUrLTAuNzQ5MCAgICAgPyAgICAgMTMuNTUw
MistMS44OTgxICAgICAgICA/IG1pZ2h0IGJlIDEuMDMzOXggc2xvd2VyCiAgIG1pbi1ib29sZWFu
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNjI4NSstMC4yNDI2ICAg
ICA/ICAgICAgNC4wMTgxKy0wLjI4MDUgICAgICAgID8gbWlnaHQgYmUgMS4xMDc0eCBzbG93ZXIK
ICAgcG9seW1vcnBoaWMtcHV0LWJ5LXZhbC13aXRoLXN0cmluZyAgICAgICAgICAgICAgICAzMi44
NTMwKy0xLjAzNDAgICAgICAgICAgIDMyLjQyMTMrLTAuNzIyNCAgICAgICAgICBtaWdodCBiZSAx
LjAxMzN4IGZhc3RlcgogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLXNlbGYtb3ItcHJvdG8gICAg
ICAgICAgICAgIDE0LjM5MDQrLTMuMDA1MCAgICAgICAgICAgMTQuMzE3OSstMi4wOTE0ICAgICAg
ICAKICAgcHV0LWJ5LXZhbC1tYWNoaW5lLWludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NC43OTYzKy0wLjcxNjggICAgICAgICAgICA0Ljc2MTcrLTAuNjE1MCAgICAgICAgCiAgIGltdWwt
bWl4ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMTY4MSstMS4z
ODgzICAgICAgICAgICAgNC41MjUzKy0wLjM3OTggICAgICAgICAgbWlnaHQgYmUgMS4xNDIweCBm
YXN0ZXIKICAgZ2NzZS1wb2x5LWdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyMS4yNDA4Ky0xLjI2NTIgICAgID8gICAgIDIxLjkyMDQrLTEuMDkxNyAgICAgICAgPyBtaWdo
dCBiZSAxLjAzMjB4IHNsb3dlcgogICBmb2xkLWRvdWJsZS10by1pbnQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDE3LjU4OTQrLTAuNTI1OSAgICAgPyAgICAgMTcuNzkyNSstMC44Mzc3
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDExNXggc2xvd2VyCiAgIHRvLW51bWJlci1jb25zdHJ1Y3Rv
ci1vbmx5LW51bWJlciAgICAgICAgICAgICAgICAgIDEuMDAwOSstMC4wNjY0ICAgICAgICAgICAg
MC45NzM2Ky0wLjA0MTYgICAgICAgICAgbWlnaHQgYmUgMS4wMjgweCBmYXN0ZXIKICAgdGVtcGxh
dGUtc3RyaW5nLWFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC4zODYzKy0xLjEz
NzAgICAgID8gICAgICA4LjQxMzgrLTEuMjU4OSAgICAgICAgPwogICBpbi1mb3VyLWNhc2VzICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1LjQzMTkrLTIuMjY3NyAgICAgPyAg
ICAgMjguOTA3NystNi42NTQ4ICAgICAgICA/IG1pZ2h0IGJlIDEuMTM2N3ggc2xvd2VyCiAgIGlu
dC1vci1vdGhlci1zdWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMTQ1NSst
MC41NTU5ICAgICA/ICAgICAgNy4wNTg3Ky0xLjczODEgICAgICAgID8gbWlnaHQgYmUgMS4xNDg2
eCBzbG93ZXIKICAgcG9seS1jaGFpbi1hY2Nlc3MtZGlmZmVyZW50LXByb3RvdHlwZXMgICAgICAg
ICAgICAgMy45MTgyKy0wLjU5NzkgICAgICAgICAgICAzLjY5ODIrLTAuMjI5MiAgICAgICAgICBt
aWdodCBiZSAxLjA1OTV4IGZhc3RlcgogICBzdXBlci1nZXQtYnktdmFsLXdpdGgtdGhpcy1tb25v
bW9ycGhpYyAgICAgICAgICAgIDMyLjE3MDMrLTAuNjY1MyAgICAgISAgICAgMzUuNzQ1MCstMS45
NTM2ICAgICAgICAhIGRlZmluaXRlbHkgMS4xMTExeCBzbG93ZXIKICAgZG91YmxlLXRvLWludDMy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2OS42NTQ0Ky0yLjcxMDEgICAgID8g
ICAgMTY5Ljg4MTkrLTAuOTA5MiAgICAgICAgPwogICBtYW55LXJlcGVhdC1zdG9yZXMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDI2LjQyOTYrLTEuMDA5NiAgICAgICAgICAgMjYuMDk5
MistMC42NzAxICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyN3ggZmFzdGVyCiAgIHN0cmluZy1yZXBl
YXQtc2luZ2xlLXJlc29sdmluZyAgICAgICAgICAgICAgICAgICAgMTAuNzI1MCstMC4yNDgyICAg
ICAgICAgICAxMC41MjgyKy0wLjI0OTQgICAgICAgICAgbWlnaHQgYmUgMS4wMTg3eCBmYXN0ZXIK
ICAgaXMtb2JqZWN0LW9yLW51bGwtdHJpY2tpZXItaW50ZXJuYWwtZnVuY3Rpb24gICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNS4xNTQ0Ky0z
LjA1NzIgICAgICAgICAgIDE0LjEwMDMrLTAuMzM3NSAgICAgICAgICBtaWdodCBiZSAxLjA3NDh4
IGZhc3RlcgogICBmb2xkLXB1dC1ieS12YWwtd2l0aC1zeW1ib2wtdG8tbXVsdGktcHV0LWJ5LW9m
ZnNldCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEyLjQxNzYrLTIuMDI5NCAgICAgPyAgICAgMTMuODMxNCstMi4wMzc1ICAgICAgICA/IG1p
Z2h0IGJlIDEuMTEzOXggc2xvd2VyCiAgIEFycmF5QnVmZmVyLUludDhBcnJheS1hbGxvYy1sYXJn
ZS1sb25nLWxpdmVkICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNjUuNzU2OCstMS42OTI5ICAgICA/ICAgICA2Ny4yNzY5Ky0wLjk0OTUgICAg
ICAgID8gbWlnaHQgYmUgMS4wMjMxeCBzbG93ZXIKICAgYXJyYXktd2l0aC1kb3VibGUtc3VtICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNC42MjY2Ky0wLjE1OTQgICAgID8gICAgICA0Ljcy
MzIrLTAuNDE3OCAgICAgICAgPyBtaWdodCBiZSAxLjAyMDl4IHNsb3dlcgogICBzdHJpbmctcmVw
ZWF0LXNtYWxsLXJlc29sdmluZyAgICAgICAgICAgICAgICAgICAgIDM0LjI0NDErLTAuODU4MSAg
ICAgPyAgICAgMzUuNTUyNistMC41MDkyICAgICAgICA/IG1pZ2h0IGJlIDEuMDM4Mnggc2xvd2Vy
CiAgIHN1cGVyLWdldC1ieS1pZC13aXRoLXRoaXMtcG9seW1vcnBoaWMgICAgICAgICAgICAgMjMu
MTQwNistMC40ODExICAgICA/ICAgICAyNy42NjcwKy04LjE1NDggICAgICAgID8gbWlnaHQgYmUg
MS4xOTU2eCBzbG93ZXIKICAgc3dpdGNoLXN0cmluZy1iYXNpYyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxNS4yODg3Ky0wLjY5NjAgICAgID8gICAgIDE2LjM0MDcrLTMuODk5NyAgICAg
ICAgPyBtaWdodCBiZSAxLjA2ODh4IHNsb3dlcgogICBsaWNtLWRyYWdvbnMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDQ4LjU2ODErLTEuMzE4MiAgICAgPyAgICAgNTIuNDE1
NystOC4yMTU3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDc5Mnggc2xvd2VyCiAgIHVuZGVmaW5lZC1w
cm9wZXJ0eS1hY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAzMDkuNDExNystNjkuMzA5OSAg
ICAgICAgIDI3OS45NDk1Ky0zLjgwNDIgICAgICAgICAgbWlnaHQgYmUgMS4xMDUyeCBmYXN0ZXIK
ICAgZXZhbC1ub3QtZXZhbC1jb21wdXRlLWFyZ3MgICAgICAgICAgICAgICAgICAgICAgICAzMS41
NTg2Ky0xLjE3MzIgICAgID8gICAgIDMxLjc1MDkrLTAuODUzMiAgICAgICAgPwogICBicmFuY2gt
b24tc3RyaW5nLWFzLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgIDE0LjQ3NjArLTAuNTgy
MiAgICAgPyAgICAgMTUuNDk5OCstMS4wMDEyICAgICAgICA/IG1pZ2h0IGJlIDEuMDcwN3ggc2xv
d2VyCiAgIHRvLW51bWJlci1zdHJpbmctbnVtYmVyLXN0cmluZy1udW1iZXIgICAgICAgICAgICAg
IDQuNTc1OSstMC40MTU0ICAgICA/ICAgICAgNC44NzY3Ky0wLjUyNjkgICAgICAgID8gbWlnaHQg
YmUgMS4wNjU3eCBzbG93ZXIKICAgYXJyb3dmdW5jaXRvbi1yZWZlcmVuY2UtYXJndW1lbnRzICAg
ICAgICAgICAgICAgICAgMC45MjUxKy0wLjA1MDkgICAgID8gICAgICAwLjkzMTkrLTAuMDQzMiAg
ICAgICAgPwogICBsb2NhbGUtY29tcGFyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDI3LjYzMTArLTEuNjMwNCAgICAgPyAgICAgMjguNjg1NCstMS42NDczICAgICAgICA/IG1p
Z2h0IGJlIDEuMDM4Mnggc2xvd2VyCiAgIGdldHRlci1uby1hY3RpdmF0aW9uICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDUuMzk2OCstMC43OTY4ICAgICAgICAgICAgNS4yODM5Ky0wLjg3
NDQgICAgICAgICAgbWlnaHQgYmUgMS4wMjE0eCBmYXN0ZXIKICAgZGVsdGFibHVlLWZvci1vZiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NS41MzI3Ky0xNi4wMjc4ICAgICAgICAg
IDU5LjI1MDkrLTEuOTIyNSAgICAgICAgICBtaWdodCBiZSAxLjEwNjB4IGZhc3RlcgogICBzdHJp
bmctY29uY2F0LWxvbmctY29udmVydCAgICAgICAgICAgICAgICAgICAgICAgIDkwLjE1NDgrLTEu
MjgyMCAgICAgPyAgICAgOTAuMjEwOSstMS43NzM2ICAgICAgICA/CiAgIHB1dC1ieS12YWwtd2l0
aC1zdHJpbmctcmVwbGFjZS1hbmQtdHJhbnNpdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjM4ODIrLTAuMzA4NyAgICAgPyAgICAg
MTQuNDMxMSstMC4yMjM4ICAgICAgICA/CiAgIHZhcmFyZ3Mtc3RyaWN0LW1vZGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTAuNjYzMystMC44MTc4ICAgICA/ICAgICAxMS4wNDMwKy0w
Ljc2ODYgICAgICAgID8gbWlnaHQgYmUgMS4wMzU2eCBzbG93ZXIKICAgbG90cy1vZi1maWVsZHMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy4xMzc1Ky0wLjg5MDMgICAgICAg
ICAgIDEyLjYxMjIrLTAuNTczMyAgICAgICAgICBtaWdodCBiZSAxLjA0MTZ4IGZhc3RlcgogICB0
ZWFyLW9mZi1hcmd1bWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjI4OTAr
LTAuNjk3OCAgICAgPyAgICAgIDUuNTE3NistMS43MTM1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQz
Mnggc2xvd2VyCiAgIGlzLWFycmF5LWZvci1taXhlZC1jYXNlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDcuNzQyMistMC44ODc5ICAgICA/ICAgICAgNy45MjE4Ky0xLjA1NzkgICAgICAgID8g
bWlnaHQgYmUgMS4wMjMyeCBzbG93ZXIKICAgc2lua2FibGUtbmV3LW9iamVjdC10YWtlbiAgICAg
ICAgICAgICAgICAgICAgICAgICA0Mi4xNjM4Ky0wLjc2NjIgICAgID8gICAgIDQzLjYwNDcrLTEu
NzAzNSAgICAgICAgPyBtaWdodCBiZSAxLjAzNDJ4IHNsb3dlcgogICBkb3VibGUtdG8tdWludDMy
LXR5cGVkLWFycmF5LW5vLWlubGluZSAgICAgICAgICAgICAzLjg0NzArLTAuMTU2NSAgICAgPyAg
ICAgIDMuOTUzMistMC40MDYzICAgICAgICA/IG1pZ2h0IGJlIDEuMDI3Nnggc2xvd2VyCiAgIHN0
cmluZy1jb25jYXQtbG9uZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTMuNjE3NSst
MC4zOTg1ICAgICA/ICAgICA1My44MTUzKy0wLjk2NDggICAgICAgID8KICAgZ2V0LWJ5LWlkLWJp
bW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMDE1MCstMC4xNzcw
ICAgICA/ICAgICAgNC4wNzQ5Ky0wLjQ1OTggICAgICAgID8gbWlnaHQgYmUgMS4wMTQ5eCBzbG93
ZXIKICAgYXJyb3dmdW5jdGlvbi1jYWxsLWluLWZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAx
NS42NTg3Ky0yLjQzMTAgICAgICAgICAgIDE0LjY5MTIrLTAuNDg3MCAgICAgICAgICBtaWdodCBi
ZSAxLjA2NTl4IGZhc3RlcgogICBvYnZpb3VzbHktZWxpZGFibGUtbmV3LW9iamVjdCAgICAgICAg
ICAgICAgICAgICAgIDE5LjM4ODIrLTAuNTYzNiAgICAgPyAgICAgMTkuNDA2MistMC4zODkyICAg
ICAgICA/CiAgIGlzLW51bWJlci1mb2xkLXRyaWNreSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDUuMTkxNistMC41ODEzICAgICAgICAgICAgNS4xMDMyKy0wLjIyNTMgICAgICAgICAgbWln
aHQgYmUgMS4wMTczeCBmYXN0ZXIKICAgZ2V0LWJ5LWlkLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5h
dGlvbiAgICAgICAgICAgICAgNS41MjI2Ky0wLjczNjggICAgICAgICAgICA1LjEwMzcrLTAuMzgx
OCAgICAgICAgICBtaWdodCBiZSAxLjA4MjF4IGZhc3RlcgogICBmb2xkLW11bHRpLXB1dC1ieS1v
ZmZzZXQtdG8tcmVwbGFjZS1vci10cmFuc2l0aW9uLXB1dC1ieS1vZmZzZXQgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC4zMTY5Ky0wLjcz
NTcgICAgID8gICAgIDExLjYyNTkrLTEuNzcwOSAgICAgICAgPyBtaWdodCBiZSAxLjEyNjl4IHNs
b3dlcgogICBvYnZpb3VzLXNpbmstcGF0aG9sb2d5ICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDIzLjY2NTcrLTEuNDY3NCAgICAgICAgICAgMjIuNTM5OSstMC41ODY2ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDQ5OXggZmFzdGVyCiAgIGxhcmdlLWludCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMTUuNjU3MSstMS40MjE2ICAgICAgICAgICAxNS40MDYxKy0wLjQ5Nzgg
ICAgICAgICAgbWlnaHQgYmUgMS4wMTYzeCBmYXN0ZXIKICAgc3RyaW5nLXJlcGVhdC1yZXNvbHZp
bmctbm8taW5saW5lICAgICAgICAgICAgICAgICAzNS43NTM0Ky0xLjI0NTcgICAgICAgICAgIDM1
LjAzNzYrLTAuNzQ5MiAgICAgICAgICBtaWdodCBiZSAxLjAyMDR4IGZhc3RlcgogICBvYmplY3Qt
a2V5cy1tYXAtdmFsdWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY2LjY4NTkrLTIuNzAx
NSAgICAgPyAgICAgNjcuNDcwOCstMS43MTQyICAgICAgICA/IG1pZ2h0IGJlIDEuMDExOHggc2xv
d2VyCiAgIGRlc3RydWN0dXJpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAu
NzU1MystMC4wNDc4ICAgICA/ICAgICAgMC43NjgzKy0wLjA0MjcgICAgICAgID8gbWlnaHQgYmUg
MS4wMTcxeCBzbG93ZXIKICAgZ2V0X2NhbGxlZV9wb2x5bW9ycGhpYyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNC45NjQ0Ky0xLjA5MTcgICAgID8gICAgICA1LjQyODUrLTIuNjcxOSAgICAg
ICAgPyBtaWdodCBiZSAxLjA5MzV4IHNsb3dlcgogICBkZXN0cnVjdHVyaW5nLXN3YXAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA2LjcyMjcrLTAuNjg5NCAgICAgPyAgICAgIDguNDE2
NCstMy43NTUxICAgICAgICA/IG1pZ2h0IGJlIDEuMjUxOXggc2xvd2VyCiAgIGVsaWRhYmxlLW5l
dy1vYmplY3Qtcm9mbGNvcHRlciAgICAgICAgICAgICAgICAgICAgMjguMjgzMystNS4wMTk3ICAg
ICA/ICAgICAyOC45NjAzKy00LjY2NjkgICAgICAgID8gbWlnaHQgYmUgMS4wMjM5eCBzbG93ZXIK
ICAgc3RyaW5nLWdldC1ieS12YWwtb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgNy43
MzgxKy0xLjM0OTIgICAgICAgICAgICA3LjU4OTYrLTAuNzI4NyAgICAgICAgICBtaWdodCBiZSAx
LjAxOTZ4IGZhc3RlcgogICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1l
ZmZlY3RzMy1pZ25vcmVDYXNlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAuNTk1OSstMC4wNjIyICAgICA/ICAgICAgMC42MDM2Ky0wLjAz
NTIgICAgICAgID8gbWlnaHQgYmUgMS4wMTMweCBzbG93ZXIKICAgZXhpdC1sZW5ndGgtb24tcGxh
aW4tb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAxNC44NzU3Ky0wLjczMDkgICAgID8gICAg
IDE1LjE2OTIrLTAuNjMxNSAgICAgICAgPyBtaWdodCBiZSAxLjAxOTd4IHNsb3dlcgogICBvYmpl
Y3QtaW50LXN1Yi1hcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjQ4NjMrLTAu
Nzc2NyAgICAgICAgICAgMTQuMTkzMCstMC41OTk0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIwN3gg
ZmFzdGVyCiAgIGZvbGQtcHV0LXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDYuNDI1NystMS43MTY0ICAgICA/ICAgICAgNi41NDkyKy0xLjgzOTUgICAgICAgID8gbWln
aHQgYmUgMS4wMTkyeCBzbG93ZXIKICAgYmlnc3dpdGNoLWluZGlyZWN0LXN5bWJvbCAgICAgICAg
ICAgICAgICAgICAgICAgICA5NS43Njc4Ky0yLjExNDggICAgICAgICAgIDk1LjA2MzcrLTEuNjQw
NiAgICAgICAgCiAgIHBvbHltb3JwaGljLXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTcuMDYxOCstMS4xOTEwICAgICA/ICAgICAxNy4zMDYxKy0wLjgzNTEgICAgICAgID8g
bWlnaHQgYmUgMS4wMTQzeCBzbG93ZXIKICAgZm9sZC1wdXQtYnktdmFsLXdpdGgtc3RyaW5nLXRv
LW11bHRpLXB1dC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxNC4wNzcxKy0yLjA4MjMgICAgICAgICAgIDEzLjkyNDYrLTEu
MjA1NiAgICAgICAgICBtaWdodCBiZSAxLjAxMTB4IGZhc3RlcgogICBmb3Itb2YtaXRlcmF0ZS1h
cnJheS1lbnRyaWVzICAgICAgICAgICAgICAgICAgICAgIDEyLjc4MTIrLTEuNDQ4NSAgICAgICAg
ICAgMTIuNjE5NistMS4xODc3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyOHggZmFzdGVyCiAgIGZh
a2UtaXRlcmF0b3JzLXRoYXQtdGhyb3ctd2hlbi1maW5pc2hlZCAgICAgICAgICAxMzUuOTY3Myst
MS44MTI4ICAgICAhICAgIDI0My4wMDY0Ky01LjExMjcgICAgICAgICEgZGVmaW5pdGVseSAxLjc4
NzJ4IHNsb3dlcgogICBpcy1vYmplY3Qtb3ItbnVsbC10cmlja3ktaW50ZXJuYWwtZnVuY3Rpb24g
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
MC40MDAwKy0wLjcxOTQgICAgID8gICAgIDEwLjQzMjYrLTAuNTcxOCAgICAgICAgPwogICBzdHJp
bmctdGVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjQ1MTMrLTAu
NDEwNSAgICAgICAgICAgIDQuMTY0NistMC40NTc0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDY4OXgg
ZmFzdGVyCiAgIHN0cmluZ2FsbG9jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxMTcuNTAxOCstMS41Njc2ICAgICAgICAgIDExNi40NjMwKy0xLjMyNzYgICAgICAgIAogICBw
b2x5LWNoYWluLWFjY2Vzcy1zaW1wbGVyICAgICAgICAgICAgICAgICAgICAgICAgICAzLjkzNDgr
LTAuMzI4NCAgICAgPyAgICAgIDQuMzc2MistMC41NjQ1ICAgICAgICA/IG1pZ2h0IGJlIDEuMTEy
Mnggc2xvd2VyCiAgIGRpcmVjdC1hcmd1bWVudHMtcG9zc2libHktb3ZlcnJpZGRlbi1sZW5ndGgg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
MC44MDcwKy0wLjQ2OTEgICAgICAgICAgIDEwLjU2OTIrLTAuNTc3MiAgICAgICAgICBtaWdodCBi
ZSAxLjAyMjV4IGZhc3RlcgogICBnbG9iYWwtY29kZS1mdGwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQ2LjMwNDkrLTEuNDg5OCAgICAgICAgICAgNDYuMDYxMSstMS4yNjY3ICAg
ICAgICAKICAgZnRsLXBvbHltb3JwaGljLWJpdHhvciAgICAgICAgICAgICAgICAgICAgICAgICAg
IDE4NC44MjYyKy0xNC4wMTY5ICAgICAgICAgMTc4LjI0NjUrLTMuNTY4NCAgICAgICAgICBtaWdo
dCBiZSAxLjAzNjl4IGZhc3RlcgogICBwdXQtYnktdmFsLWRpcmVjdCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLjU4NTcrLTAuMDEzMiAgICAgICAgICAgIDAuNTgwOSstMC4wMDk5
ICAgICAgICAKICAgcHV0LWJ5LXZhbC13aXRoLXN5bWJvbC1yZXBsYWNlLWFuZC10cmFuc2l0aW9u
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MTQuOTEwNistMC4zOTE5ICAgICAgICAgICAxNC41NTM3Ky0wLjMyNzMgICAgICAgICAgbWlnaHQg
YmUgMS4wMjQ1eCBmYXN0ZXIKICAgY2FwdHVyZWQtYXNzaWdubWVudHMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMC42NjQ2Ky0wLjA2ODUgICAgICAgICAgICAwLjY0OTMrLTAuMDE4MSAg
ICAgICAgICBtaWdodCBiZSAxLjAyMzV4IGZhc3RlcgogICBjYWxsLW9yLW5vdC1jYWxsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQwLjU1NDMrLTAuOTY2MiAgICAgPyAgICAgNDEu
MDIxMystMS4xNjk1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDExNXggc2xvd2VyCiAgIGZ0bC1wb2x5
bW9ycGhpYy11cnNoaWZ0ICAgICAgICAgICAgICAgICAgICAgICAgICAyMzMuOTY4OSstMy41OTkx
ICAgICA/ICAgIDIzOS41MTkxKy05LjgwNTUgICAgICAgID8gbWlnaHQgYmUgMS4wMjM3eCBzbG93
ZXIKICAgbWFyc2FnbGlhLWxhcmdlci1pbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4
Ni4wOTI0Ky0xLjU0NDAgICAgICAgICAgIDg0Ljg2MzMrLTAuNTYwMiAgICAgICAgICBtaWdodCBi
ZSAxLjAxNDV4IGZhc3RlcgogICBpcy1mdW5jdGlvbi1mb2xkLXRyaWNreS1pbnRlcm5hbC1mdW5j
dGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDE0LjM0NDErLTAuNTA3NyAgICAgICAgICAgMTQuMDgxMystMC4yNDQ1ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDE4N3ggZmFzdGVyCiAgIG1hdGgtdHJ1bmMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDguNTY4NistMC41MzExICAgICAgICAgICAgOC40NDk3Ky0wLjg4
NTEgICAgICAgICAgbWlnaHQgYmUgMS4wMTQxeCBmYXN0ZXIKICAgb2JqZWN0LWludC1hbmQtYXJy
YXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi42MDMyKy0xLjEzMTkgICAgICAgICAg
IDEyLjUwNTgrLTEuMDM0OSAgICAgICAgCiAgIGRvdWJsZS1wb2xsdXRpb24tcHV0YnlvZmZzZXQg
ICAgICAgICAgICAgICAgICAgICAgIDUuNDM4MSstMC4yNDI5ICAgICAhICAgICA0Mi4yMjEzKy00
LjM4MzEgICAgICAgICEgZGVmaW5pdGVseSA3Ljc2Mzl4IHNsb3dlcgogICBhc3NpZ24tY3VzdG9t
LXNldHRlci1wb2x5bW9ycGhpYyAgICAgICAgICAgICAgICAgICA1LjgyOTgrLTAuNTAyMSAgICAg
ICAgICAgIDUuNjY1NCstMC4yNTI5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI5MHggZmFzdGVyCiAg
IG1vZC1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuNDI0
MSstMC43NDA1ICAgICAgICAgICAgOS45NzQ0Ky0wLjU2MjAgICAgICAgICAgbWlnaHQgYmUgMS4w
NDUxeCBmYXN0ZXIKICAgaXMtZnVuY3Rpb24tZm9sZC10cmlja3kgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNS41OTM5Ky0wLjg2NTMgICAgID8gICAgICA1LjcwOTQrLTAuNzQwNiAgICAgICAg
PyBtaWdodCBiZSAxLjAyMDZ4IHNsb3dlcgogICBhcHBseS1ub3QtYXBwbHkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA3Ljg1NDQrLTIuMjExMSAgICAgICAgICAgIDYuNzIyNyst
MC4zMTcwICAgICAgICAgIG1pZ2h0IGJlIDEuMTY4M3ggZmFzdGVyCiAgIEhhc2hNYXAtc3RyaW5n
LXB1dC1nZXQtaXRlcmF0ZSAgICAgICAgICAgICAgICAgICAgMzQuMTQzNistMS4zMzg2ICAgICA/
ICAgICAzNi42OTg2Ky02LjkyODUgICAgICAgID8gbWlnaHQgYmUgMS4wNzQ4eCBzbG93ZXIKICAg
bXVsLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy44MjA5
Ky0wLjI4NzEgICAgICAgICAgICAzLjc3MjgrLTAuMTgzMiAgICAgICAgICBtaWdodCBiZSAxLjAx
Mjh4IGZhc3RlcgogICBzY29wZWQtYXJndW1lbnRzLW92ZXJyaWRkZW4tbGVuZ3RoICAgICAgICAg
ICAgICAgIDExLjg2MzYrLTEuNTExOSAgICAgPyAgICAgMTIuMzA1NystMy4xMzczICAgICAgICA/
IG1pZ2h0IGJlIDEuMDM3M3ggc2xvd2VyCiAgIGluZmVyLW9uZS10aW1lLWNsb3N1cmUtdHdvLXZh
cnMgICAgICAgICAgICAgICAgICAgIDguOTk4NCstMC43MDY1ICAgICA/ICAgICAgOS4wMzI2Ky0w
LjgzMDAgICAgICAgID8KICAgc2luLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOS4yNjg5Ky0wLjYxNTkgICAgICAgICAgICA4LjU5MDcrLTAuMTgwMiAgICAg
ICAgICBtaWdodCBiZSAxLjA3ODl4IGZhc3RlcgogICBpbXVsLWRvdWJsZS1vbmx5ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA1LjAzNzArLTAuMzQyNSAgICAgICAgICAgIDQuOTk5
NCstMC4yNzY1ICAgICAgICAKICAgdG8taW50MzItYm9vbGVhbiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxNy4wMDExKy0xLjAxNTkgICAgICAgICAgIDE2LjY4NjYrLTAuNzE0NSAg
ICAgICAgICBtaWdodCBiZSAxLjAxODh4IGZhc3RlcgogICB0cnktY2F0Y2gtd29yZC1jb3VudCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ2Ljk1MzcrLTIuMjU1MyAgICAgPyAgICAgNDku
MjMwMystMS41NjAyICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ4NXggc2xvd2VyCiAgIHB1dC1ieS12
YWwtd2l0aC1zeW1ib2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYuNTc4MystMC40MTI5
ICAgICA/ICAgICAxNi42NTcyKy0wLjM5MjIgICAgICAgID8KICAgZm9sZC1tdWx0aS1wdXQtYnkt
b2Zmc2V0LXRvLXB1dC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNi4xNDk0Ky0wLjc4MzEgICAgID8gICAgICA2LjE2MDkr
LTAuOTA0NyAgICAgICAgPwogICBzaW1wbGUtcG9seS1jYWxsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyLjAzOTErLTAuMjQ5MSAgICAgICAgICAgIDEuOTQzMCstMC4xMzAzICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDQ5NXggZmFzdGVyCiAgIG9idmlvdXMtc2luay1wYXRob2xvZ3kt
dGFrZW4gICAgICAgICAgICAgICAgICAgICAxMjMuMzIwNCstMi42NDUyICAgICAgICAgIDEyMS4w
Mzg5Ky0xLjI3MDkgICAgICAgICAgbWlnaHQgYmUgMS4wMTg4eCBmYXN0ZXIKICAgbWFyc2FnbGlh
LW9zci1lbnRyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMy4xNDE4Ky0wLjY4ODcg
ICAgICAgICAgIDIyLjYxMjYrLTAuNjg4MiAgICAgICAgICBtaWdodCBiZSAxLjAyMzR4IGZhc3Rl
cgogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLWJpbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxp
bWluYXRpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxMi45NjM0Ky0wLjQ1NDEgICAgID8gICAgIDEzLjUyNTErLTAuODk5MiAgICAgICAg
PyBtaWdodCBiZSAxLjA0MzN4IHNsb3dlcgogICBmdGwtcG9seW1vcnBoaWMtc3ViICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMjEzLjAxNzcrLTQuMTY0MyAgICAgPyAgICAyMTUuODczNSst
NC40MTM1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEzNHggc2xvd2VyCiAgIG1ldGhvZC1vbi1udW1i
ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEuMTg2MistMC44ODAxICAgICA/
ICAgICAyMi4xOTEzKy0xLjIzNzkgICAgICAgID8gbWlnaHQgYmUgMS4wNDc0eCBzbG93ZXIKICAg
Z2V0dGVyLXJpY2hhcmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExNC42MDg3
Ky00LjIwNzAgICAgID8gICAgMTIzLjg4OTErLTkuMTY3NSAgICAgICAgPyBtaWdodCBiZSAxLjA4
MTB4IHNsb3dlcgogICBhcnJheS1wcm90b3R5cGUtc29tZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDQ2LjM5NzIrLTIuNzIzOCAgICAgPyAgICAgNDcuMTk3MCstMS41MTAzICAgICAgICA/
IG1pZ2h0IGJlIDEuMDE3Mnggc2xvd2VyCiAgIHR5cGVkLWFycmF5LWdldC1zZXQtYnktdmFsLXBy
b2ZpbGluZyAgICAgICAgICAgICAgMjcuMjQ1MistMC4zODk2ICAgICAgICAgICAyNy4wMzI0Ky0w
LjE2NDIgICAgICAgIAogICB1bnR5cGVkLXN0cmluZy1mcm9tLWNoYXItY29kZSAgICAgICAgICAg
ICAgICAgICAgIDE0LjM5NjcrLTAuNDA5MyAgICAgICAgICAgMTQuMzk2MistMS4wMzQ0ICAgICAg
ICAKICAgSW50MzJBcnJheS1hbGxvYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NS4wNjYwKy0wLjEyODkgICAgID8gICAgICA2LjIxNzArLTEuMjk1MiAgICAgICAgPyBtaWdodCBi
ZSAxLjIyNzJ4IHNsb3dlcgogICBiYXNpYy1zZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEyLjI0NzMrLTEuMTY1MyAgICAgICAgICAgMTEuNjMzMistMy4yNTMyICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDUyOHggZmFzdGVyCiAgIHN0cmluZy1yZXBlYXQtc2luZ2xlLW5v
dC1yZXNvbHZpbmcgICAgICAgICAgICAgICAgIDkuOTkwMSstMC4xMjAwICAgICA/ICAgICAxMC4w
NDc5Ky0wLjMwMTIgICAgICAgID8KICAgc2xvdy1jb252ZXJnZW5jZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMy45ODY1Ky0wLjQxNDkgICAgID8gICAgICA1Ljg5NDcrLTEuNTEx
MyAgICAgICAgPyBtaWdodCBiZSAxLjQ3ODd4IHNsb3dlcgogICBnZXR0ZXItcHJvdG90eXBlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjAyMDMrLTAuNTc1MiAgICAgICAgICAg
IDYuOTQzNSstMC41MzEyICAgICAgICAgIG1pZ2h0IGJlIDEuMDExMXggZmFzdGVyCiAgIHN0cmlu
Zy1wcm90b3R5cGUtc2VhcmNoLW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNCAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjY4NjIrLTAuMTA2
NiAgICAgPyAgICAgIDAuNzIwNSstMC4xMDMyICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ5OXggc2xv
d2VyCiAgIGlubGluZS1hcmd1bWVudHMtbG9jYWwtZXNjYXBlICAgICAgICAgICAgICAgICAgICAg
IDUuODM2OSstMS40MTQ1ICAgICA/ICAgICAgNi4yODI1Ky0xLjE3MTQgICAgICAgID8gbWlnaHQg
YmUgMS4wNzY0eCBzbG93ZXIKICAgbGF6eS1hcnJheS1zcGVjaWVzLXdhdGNocG9pbnRzICAgICAg
ICAgICAgICAgICAgICAyNi43OTgyKy0xLjEyNjAgICAgID8gICAgIDI4LjE2NzgrLTEuNDIwMyAg
ICAgICAgPyBtaWdodCBiZSAxLjA1MTF4IHNsb3dlcgogICBhcmd1bWVudHMtb3V0LW9mLWJvdW5k
cyAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLjQ1NjYrLTAuNjY1NyAgICAgICAgICAgMTMu
NDQwMystMC40NDg2ICAgICAgICAKICAgcmljaGFyZHMtdHJ5LWNhdGNoICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDI3Mi4yNTE1Ky0yLjgyOTUgICAgICEgICAgMjkyLjg5MTUrLTQuNTg2
NSAgICAgICAgISBkZWZpbml0ZWx5IDEuMDc1OHggc2xvd2VyCiAgIHRvLW51bWJlci1vbmx5LXN0
cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNDc0MSstMC4zMzM1ICAgICAgICAg
ICAgMi4zNjMxKy0wLjA5OTcgICAgICAgICAgbWlnaHQgYmUgMS4wNDcweCBmYXN0ZXIKICAgc2lt
cGxlLWFjdGl2YXRpb24tZGVtbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNi4yNDMwKy03
LjM5MTkgICAgICAgICAgIDI1LjI2NTIrLTIuODE3OSAgICAgICAgICBtaWdodCBiZSAxLjAzODd4
IGZhc3RlcgogICBGbG9hdDY0QXJyYXktdG8tSW50MTZBcnJheS1zZXQgICAgICAgICAgICAgICAg
ICAgIDYzLjQ2NzIrLTEuNDMzMSAgICAgICAgICAgNjIuMjM3MistMS4wNDQ3ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDE5OHggZmFzdGVyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc2VhcmNoLW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzMiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLjY0NjgrLTAuMTE5NCAgICAgICAgICAgIDAuNTM5MystMC4wMTE0
ICAgICAgICAgIG1pZ2h0IGJlIDEuMTk5NHggZmFzdGVyCiAgIGdsb2JhbC1pc05hTiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYuNzAyMystMC45ODU3ICAgICA/ICAgICAx
Ni44OTIxKy0wLjkwNzEgICAgICAgID8gbWlnaHQgYmUgMS4wMTE0eCBzbG93ZXIKICAgb2JqZWN0
LWludC1hZGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS4yOTkxKy0wLjg4
MTAgICAgICAgICAgIDE4Ljc0MTUrLTAuODQ0NiAgICAgICAgICBtaWdodCBiZSAxLjAyOTh4IGZh
c3RlcgogICBkaXJlY3QtYXJndW1lbnRzLWdldGJ5dmFsICAgICAgICAgICAgICAgICAgICAgICAg
ICAxLjQ0MjUrLTAuMTIyNCAgICAgPyAgICAgIDEuNDcyNystMC4xMTI5ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDIxMHggc2xvd2VyCiAgIHNjb3BlZC1hcmd1bWVudHMtbGVuZ3RoICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMTEuMzcwMistMC44MTIyICAgICAgICAgICAxMC40NjIzKy0wLjgwNjcg
ICAgICAgICAgbWlnaHQgYmUgMS4wODY4eCBmYXN0ZXIKICAgc3RyaW5nLXJlcGVhdC1zbWFsbC1u
b3QtcmVzb2x2aW5nICAgICAgICAgICAgICAgICAgNC43MjA1Ky0wLjc3MTcgICAgICAgICAgICA0
LjcwMzQrLTAuODY3NyAgICAgICAgCiAgIG9iamVjdC1vciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDcuMjgyMystMC4zNDQxICAgICA/ICAgICAgNy40MDM3Ky0wLjU3
NDEgICAgICAgID8gbWlnaHQgYmUgMS4wMTY3eCBzbG93ZXIKICAgaW1wbGljaXQtYmlnc3dpdGNo
LWluZGlyZWN0LXN5bWJvbCAgICAgICAgICAgICAgICA3Ni4yNTg3Ky0yMi45MzE3ICAgICAgICAg
IDY2LjcyMDIrLTEuNTUyOSAgICAgICAgICBtaWdodCBiZSAxLjE0MzB4IGZhc3RlcgogICBjcmVh
dGUtbG90cy1vZi1mdW5jdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjA0MzUrLTAu
MTY4MyAgICAgPyAgICAgMTAuMjM1NistMC4zNzE3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE5MXgg
c2xvd2VyCiAgIHBvbHltb3JwaGljLXB1dC1ieS1pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMzIuMTM1NystMC44MDU2ICAgICAgICAgICAzMi4wNDYzKy0wLjg2ODkgICAgICAgIAogICBy
ZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3kgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC42
MTE4Ky0wLjAzNTggICAgICAgICAgICAwLjU3NTkrLTAuMDE4NSAgICAgICAgICBtaWdodCBiZSAx
LjA2MjN4IGZhc3RlcgogICBvYmplY3QtdXJzaGlmdCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA3LjgyNjYrLTAuNjc2MyAgICAgICAgICAgIDcuMjMzOSstMC40MDk0ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDgxOXggZmFzdGVyCiAgIHBsdXMtYm9vbGVhbiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDMuNDA3MistMC4zNzA0ICAgICAgICAgICAgMy4yNjA0
Ky0wLjE4MzUgICAgICAgICAgbWlnaHQgYmUgMS4wNDUweCBmYXN0ZXIKICAgbWFwLWhhcy1nZXQt
Y3NlLW9wcG9ydHVuaXR5ICAgICAgICAgICAgICAgICAgICAgIDEyMy45Mzc2Ky0yNC4wMzY1ICAg
ICAgICAgMTEyLjM3MjUrLTMuMjkwOSAgICAgICAgICBtaWdodCBiZSAxLjEwMjl4IGZhc3Rlcgog
ICByYXl0cmFjZS13aXRoLXRyeS1jYXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjcz
MTcrLTEuNjE0MCAgICAgPyAgICAgMTMuNDExMystMS40MTM1ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDUzNHggc2xvd2VyCiAgIGJvdW5kLWZ1bmN0aW9uLWNvbnN0cnVjdGlvbi1wZXJmb3JtYW5jZSAg
ICAgICAgICAgOTEuNDA4NCstMS42OTgwICAgICA/ICAgICA5My4xODUwKy0yLjY2OTkgICAgICAg
ID8gbWlnaHQgYmUgMS4wMTk0eCBzbG93ZXIKICAgb2JqZWN0LWxzaGlmdCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNy44MjM2Ky0wLjc4OTMgICAgICAgICAgICA3Ljc2NzQr
LTAuNjM2OSAgICAgICAgCiAgIHNpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nICAgICAgICAgICAg
ICAgICAgICAgICAgMjUuMTc3NSstMC40Mjg0ICAgICAgICAgICAyNC43NjAxKy0wLjUyNDUgICAg
ICAgICAgbWlnaHQgYmUgMS4wMTY5eCBmYXN0ZXIKICAgYXJyYXktd2l0aC1kb3VibGUtaW5jcmVt
ZW50ICAgICAgICAgICAgICAgICAgICAgICAgNS4zNzY1Ky0wLjg5NDkgICAgICAgICAgICA1LjA1
NTcrLTAuNjA3NCAgICAgICAgICBtaWdodCBiZSAxLjA2MzV4IGZhc3RlcgogICBhcnJheS1wcm90
b3R5cGUtbWFwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUwLjE4MDUrLTMuNzQzNiAg
ICAgPyAgICAgNTEuMTcyOSstMi4zMTg5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE5OHggc2xvd2Vy
CiAgIHNvcnRpbmctYmVuY2htYXJrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUu
OTQ2MSstMC4zMjgzICAgICAgICAgICAyNS45MzMwKy0wLjg4NDcgICAgICAgIAogICBGbG9hdDMy
QXJyYXktdG8tRmxvYXQ2NEFycmF5LXNldCAgICAgICAgICAgICAgICAgIDQ2Ljc2NzYrLTEuOTU5
MyAgICAgPyAgICAgNDkuMjU1MCstMS40MTkzICAgICAgICA/IG1pZ2h0IGJlIDEuMDUzMnggc2xv
d2VyCiAgIHNwcmVhZC1sYXJnZS1hcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
MDIuMjAyNSstMi40NTU2ICAgICA/ICAgIDIwMy44MTczKy0zLjMwNDMgICAgICAgID8KICAgYm91
bmQtZnVuY3Rpb24tY2FsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy41MjI5Ky0w
LjUwODkgICAgICAgICAgIDEzLjAzNDErLTAuNzEzMSAgICAgICAgICBtaWdodCBiZSAxLjAzNzV4
IGZhc3RlcgogICBuZXctYXJyYXktYnVmZmVyLXB1c2ggICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA4LjA3ODYrLTEuMjg0MSAgICAgICAgICAgIDYuOTY3MystMC44OTQ0ICAgICAgICAgIG1p
Z2h0IGJlIDEuMTU5NXggZmFzdGVyCiAgIHN3aXRjaC1zdHJpbmctYmFzaWMtdmFyICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTguMDkyMCstMC40MTQxICAgICA/ICAgICAxOC4xMDA2Ky0wLjU5
NjkgICAgICAgID8KICAgcmVwZWF0LW11bHRpLWdldC1ieS1vZmZzZXQgICAgICAgICAgICAgICAg
ICAgICAgICAyMC45MjAzKy0xLjEwMzYgICAgICAgICAgIDIwLjQ4NTgrLTAuOTI2NSAgICAgICAg
ICBtaWdodCBiZSAxLjAyMTJ4IGZhc3RlcgogICBpcy1hcnJheS1mb3ItcHJveHkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1LjIwMzUrLTAuOTQwMSAgICAgPyAgICAgIDUuNDg3Mist
MS4xMzQyICAgICAgICA/IG1pZ2h0IGJlIDEuMDU0NXggc2xvd2VyCiAgIGRvdWJsZS1nZXQtYnkt
dmFsLW91dC1vZi1ib3VuZHMgICAgICAgICAgICAgICAgICAgIDYuOTUxOCstMS4wNzkyICAgICA/
ICAgICAgNy4xOTcwKy0xLjAyNzIgICAgICAgID8gbWlnaHQgYmUgMS4wMzUzeCBzbG93ZXIKICAg
c3RyaW5nLXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNjY5Nist
MC4wNjUwICAgICA/ICAgICAgMC42NzQ5Ky0wLjA4MjkgICAgICAgID8KICAgbWVnYW1vcnBoaWMt
bG9hZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNi43NDE5Ky0xLjQxMTcgICAg
ICAgICAgIDM2LjUxMjMrLTEuMzQ4NSAgICAgICAgCiAgIGluZmVyLWNsb3N1cmUtY29uc3QtdGhl
bi1yZWVudGVyICAgICAgICAgICAgICAgICAgMzAuNDY2OCstMS40ODYwICAgICAgICAgICAyOS4y
OTMyKy0wLjk0MjEgICAgICAgICAgbWlnaHQgYmUgMS4wNDAxeCBmYXN0ZXIKICAgZ2VuZXJhdG9y
LWZpYiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMC44Njg2Ky0xLjkzODQg
ICAgICAgICAgIDMwLjUxNzkrLTAuOTE0MSAgICAgICAgICBtaWdodCBiZSAxLjAxMTV4IGZhc3Rl
cgogICBmb2xkLXB1dC1ieS1pZC10by1tdWx0aS1wdXQtYnktb2Zmc2V0ICAgICAgICAgICAgIDEy
LjAzMDkrLTEuNzE5MCAgICAgPyAgICAgMTMuNzY0MistMi40Mzk2ICAgICAgICA/IG1pZ2h0IGJl
IDEuMTQ0MXggc2xvd2VyCiAgIHN0cmluZy10cmFuc2NvZGluZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTkuOTQ0OSstMC43NjQ3ICAgICAhICAgICAyNC43NzExKy0wLjk3NjIgICAg
ICAgICEgZGVmaW5pdGVseSAxLjI0MjB4IHNsb3dlcgogICB3ZWlyZC1pbmxpbmluZy1jb25zdC1w
cm9wICAgICAgICAgICAgICAgICAgICAgICAgICAzLjY5NDYrLTAuMzE3MyAgICAgICAgICAgIDMu
NTA1MistMC4zOTMxICAgICAgICAgIG1pZ2h0IGJlIDEuMDU0MHggZmFzdGVyCiAgIHN0cmNhdC1j
b25zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuMjAyOSstMC41MTI1
ICAgICA/ICAgICAgNy4zNzE1Ky0wLjYyNjAgICAgICAgID8gbWlnaHQgYmUgMS4wMjM0eCBzbG93
ZXIKICAgbWlzYy1zdHJpY3QtZXEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
NS43ODk2Ky0wLjkxMzkgICAgID8gICAgIDI2LjEyNDMrLTEuMTk5NiAgICAgICAgPyBtaWdodCBi
ZSAxLjAxMzB4IHNsb3dlcgogICBnZW5lcmF0b3Itd2l0aC1zZXZlcmFsLXR5cGVzICAgICAgICAg
ICAgICAgICAgICAgMTMzLjI0MjgrLTI2LjI3MzIgICAgPyAgICAxNjEuNDA2NSstMjMuNzY4OCAg
ICAgICA/IG1pZ2h0IGJlIDEuMjExNHggc2xvd2VyCiAgIHN0cmluZy1oYXNoICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuOTc5OCstMC4zNTkwICAgICA/ICAgICAgMy4w
OTg5Ky0wLjkxODcgICAgICAgID8gbWlnaHQgYmUgMS4wNDAweCBzbG93ZXIKICAgaXMtb2JqZWN0
LW9yLW51bGwtZm9sZC1mdW5jdGlvbnMgICAgICAgICAgICAgICAgICAgMy40NDA5Ky0wLjIwODIg
ICAgID8gICAgICAzLjY4MDMrLTAuMTk2MiAgICAgICAgPyBtaWdodCBiZSAxLjA2OTZ4IHNsb3dl
cgogICBpbmZlci1jb25zdGFudC1nbG9iYWwtcHJvcGVydHkgICAgICAgICAgICAgICAgICAgICA0
LjIyODYrLTAuMjk0MiAgICAgICAgICAgIDQuMTc2MystMC41OTIxICAgICAgICAgIG1pZ2h0IGJl
IDEuMDEyNXggZmFzdGVyCiAgIGNhbGwtdXNpbmctc3ByZWFkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTIuOTc3NistMC43NzY0ICAgICAgICAgICAxMi4zMTk5Ky0wLjU5NzkgICAg
ICAgICAgbWlnaHQgYmUgMS4wNTM0eCBmYXN0ZXIKICAgaW50NTItc3BpbGwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNy4yNzg1Ky0wLjYwMTMgICAgICAgICAgICA3LjA4
NDcrLTAuNzE3NCAgICAgICAgICBtaWdodCBiZSAxLjAyNzR4IGZhc3RlcgogICBnZXR0ZXIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjI3MjkrLTAuNTQwNiAg
ICAgPyAgICAgIDUuNTM1MystMC4yOTc3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ5OHggc2xvd2Vy
CiAgIHBsdXMtYm9vbGVhbi1hcml0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMu
NjE0MSstMC4zNTY2ICAgICAgICAgICAgMy40OTkyKy0wLjI4MDggICAgICAgICAgbWlnaHQgYmUg
MS4wMzI4eCBmYXN0ZXIKICAgbGFyZ2UtaW50LWNhcHR1cmVkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNS4wODkyKy0wLjg3NjcgICAgID8gICAgICA1LjE2NTQrLTAuNzkxMSAgICAg
ICAgPyBtaWdodCBiZSAxLjAxNTB4IHNsb3dlcgogICBzaW5rYWJsZS1uZXctb2JqZWN0LWRhZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDQ5LjM1MzQrLTAuNjU1MCAgICAgPyAgICAgNTUuNTM5
NSstMTMuNzA4NCAgICAgICA/IG1pZ2h0IGJlIDEuMTI1M3ggc2xvd2VyCiAgIGV2YWwtY29tcHV0
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIuOTExNCstMC44NzkzICAg
ICA/ICAgICAzNC43MTQ2Ky0xLjI4MjkgICAgICAgID8gbWlnaHQgYmUgMS4wNTQ4eCBzbG93ZXIK
ICAgc3dpdGNoLXN0cmluZy1sZW5ndGgtdG93ZXItdmFyICAgICAgICAgICAgICAgICAgICAxOC41
ODAzKy0wLjY1NjggICAgICAgICAgIDE4LjM5MjMrLTAuNjg2MCAgICAgICAgICBtaWdodCBiZSAx
LjAxMDJ4IGZhc3RlcgogICBhcnJvd2Z1bmNpdG9uLWRpcmVjdC1hcmd1bWVudHMgICAgICAgICAg
ICAgICAgICAgICAxLjQxOTErLTAuMDY5NiAgICAgPyAgICAgIDEuNDc5NistMC4wNzU5ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDQyNnggc2xvd2VyCiAgIGhvaXN0LW1ha2Utcm9wZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDUuNjQ5NystMC4zMjg5ICAgICA/ICAgICAgNi40MzY4
Ky0wLjc0MDMgICAgICAgID8gbWlnaHQgYmUgMS4xMzkzeCBzbG93ZXIKICAgZW1wdHktc3RyaW5n
LXBsdXMtaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy4zNTQ3Ky0xLjI5NjUgICAg
ICAgICAgICA3LjA1OTQrLTEuMTIzNyAgICAgICAgICBtaWdodCBiZSAxLjA0MTh4IGZhc3Rlcgog
ICB2OC1yZWdleHAtc2VhcmNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY2Ljkz
NzgrLTEuMzYyNyAgICAgPyAgICAgNjcuMTc4NistMS41NzIyICAgICAgICA/CiAgIHN5bWJvbC10
b3N0cmluZ3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNzQ1NistMC4zNTU2
ICAgICA/ICAgICAgNC4zMzQ4Ky0wLjg5NjAgICAgICAgID8gbWlnaHQgYmUgMS4xNTczeCBzbG93
ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZ2xv
YmFsICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAuNjc3MCstMC4wMjUwICAgICA/ICAgICAgMC42OTAxKy0wLjAyOTIgICAgICAgID8gbWln
aHQgYmUgMS4wMTkzeCBzbG93ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1pcy1ub3QtaW5zdGFuY2Ug
ICAgICAgICAgICAgICAgICAgMC42Nzg4Ky0wLjAxNzQgICAgID8gICAgICAwLjcxNjQrLTAuMDYy
OSAgICAgICAgPyBtaWdodCBiZSAxLjA1NTR4IHNsb3dlcgogICByZWdleHAtbmVzdGVkLW5vbnpl
cm8tbWluLWNvdW50ZWQtcGFyZW5zICAgICAgICAgICAwLjQ3NjUrLTAuMDAzOSAgICAgPyAgICAg
IDAuNDkwMCstMC4wMjE4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI4Mnggc2xvd2VyCiAgIGluZGV4
ZWQtcHJvcGVydGllcy1pbi1vYmplY3RzICAgICAgICAgICAgICAgICAgICAgIDQuNjc1NCstMC41
MjM4ICAgICAgICAgICAgNC42MTM0Ky0wLjM2NzQgICAgICAgICAgbWlnaHQgYmUgMS4wMTM0eCBm
YXN0ZXIKICAgaW50LW9yLW90aGVyLXN1Yi10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAg
ICAgOC43OTEyKy0wLjc0OTQgICAgICAgICAgICA4LjMxMjkrLTAuNTg1NiAgICAgICAgICBtaWdo
dCBiZSAxLjA1NzV4IGZhc3RlcgogICByYXl0cmFjZS13aXRoLWVtcHR5LXRyeS1jYXRjaCAgICAg
ICAgICAgICAgICAgICAgICA5Ljg0NjYrLTIuMzA1MSAgICAgICAgICAgIDguMzg1NystMC44MzI3
ICAgICAgICAgIG1pZ2h0IGJlIDEuMTc0MnggZmFzdGVyCiAgIGludC1vci1vdGhlci1tdWwtdGhl
bi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgIDkuMzQxNystMC42NzQ0ICAgICAgICAgICAg
OC44Mzc5Ky0wLjYyOTIgICAgICAgICAgbWlnaHQgYmUgMS4wNTcweCBmYXN0ZXIKICAgdGVtcG9y
YWwtc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi4yNDk5Ky0xLjYy
NzYgICAgICAgICAgIDE1LjYwNjUrLTAuNzQxNyAgICAgICAgICBtaWdodCBiZSAxLjA0MTJ4IGZh
c3RlcgogICBzbG93LXRlcm5hcmllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDE5LjcwMzgrLTMuNjc4NCAgICAgICAgICAgMTcuNjk1MistMC43NzAzICAgICAgICAgIG1pZ2h0
IGJlIDEuMTEzNXggZmFzdGVyCiAgIGJpZ3N3aXRjaC1pbmRpcmVjdCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNTYuNDA0OCstMS44MzE0ICAgICAgICAgICA1NC43MjczKy0wLjgwNzEg
ICAgICAgICAgbWlnaHQgYmUgMS4wMzA3eCBmYXN0ZXIKICAgZGlyZWN0LWFyZ3VtZW50cy1sZW5n
dGggICAgICAgICAgICAgICAgICAgICAgICAgICAxMC4zMTE3Ky0wLjg2MjEgICAgICAgICAgIDEw
LjExOTArLTAuNjI5OSAgICAgICAgICBtaWdodCBiZSAxLjAxOTB4IGZhc3RlcgogICBjZWxsLWFy
Z3VtZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjE5OTArLTAuNTA1
MiAgICAgICAgICAgIDMuOTQyNistMC4yMzE3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDY1MHggZmFz
dGVyCiAgIHRyeS1jYXRjaC1nZXQtYnktdmFsLWNsb25lZC1hcmd1bWVudHMgICAgICAgICAgICAg
IDYuODYyOSstMS4wNzIyICAgICAgICAgICAgNi4xNDQzKy0wLjgyMTYgICAgICAgICAgbWlnaHQg
YmUgMS4xMTcweCBmYXN0ZXIKICAgc3RyaW5nLW91dC1vZi1ib3VuZHMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMy40Mzk1Ky0wLjY2NjcgICAgID8gICAgIDEzLjkxMDErLTAuNTI3NyAg
ICAgICAgPyBtaWdodCBiZSAxLjAzNTB4IHNsb3dlcgogICBmdGwtcG9seW1vcnBoaWMtU3RyaW5n
RnJvbUNoYXJDb2RlICAgICAgICAgICAgICAgIDYyLjgyMDErLTE1LjUyMDEgICAgICAgICAgNTUu
NzM2OCstMC42MTcyICAgICAgICAgIG1pZ2h0IGJlIDEuMTI3MXggZmFzdGVyCiAgIGFycmF5LXBy
b3RvdHlwZS1mb3JFYWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgNDEuNDI4MystMi41OTIz
ICAgICA/ICAgICA1Mi42MTg4Ky0xMS44MjI1ICAgICAgID8gbWlnaHQgYmUgMS4yNzAxeCBzbG93
ZXIKICAgc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbCAgICAgICAgICAgICAgICAgICAg
Ni4wODc0Ky0xLjIxNDYgICAgID8gICAgICA2LjI3NDYrLTAuOTcyOSAgICAgICAgPyBtaWdodCBi
ZSAxLjAzMDh4IHNsb3dlcgogICBpbnQtb3Itb3RoZXItbW9kLXRoZW4tZ2V0LWJ5LXZhbCAgICAg
ICAgICAgICAgICAgICA2LjE0MTgrLTAuNDA3NCAgICAgICAgICAgIDYuMDM5OSstMC4zNjU3ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDE2OXggZmFzdGVyCiAgIHN0cmluZy1wcm90b3R5cGUtc3BsaXQt
b2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLW11bHRpbGluZSAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjcwMDIrLTAuMDcwMSAgICAgICAg
ICAgIDAuNjg2OCstMC4wMzA2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE5NXggZmFzdGVyCiAgIHN0
cmluZy1yZXBlYXQtbm90LXJlc29sdmluZyAgICAgICAgICAgICAgICAgICAgICAgIDUuNTU3Nist
MC45MDYzICAgICA/ICAgICAgNS45ODQ1Ky0wLjk5OTYgICAgICAgID8gbWlnaHQgYmUgMS4wNzY4
eCBzbG93ZXIKICAgZnRsLWxpYnJhcnktaW5saW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzMC4zNzg1Ky0wLjg0MjkgICAgID8gICAgIDMzLjExNzQrLTQuNjU2OCAgICAgICAgPyBt
aWdodCBiZSAxLjA5MDJ4IHNsb3dlcgogICBwdXQtYnktdmFsLXdpdGgtc3ltYm9sLXNsaWdodGx5
LXBvbHltb3JwaGljICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQuNTQwNistMC4yMDc3ICAgICA/ICAgICAgNS4zODE4Ky0wLjg5MjIgICAg
ICAgID8gbWlnaHQgYmUgMS4xODUzeCBzbG93ZXIKICAgTnVtYmVyLWlzTmFOICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxNy42NDY1Ky0wLjc4NzYgICAgID8gICAgIDE3Ljcx
MTErLTEuMTEyNiAgICAgICAgPwogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLXF1YWRtb3JwaGlj
LWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS41ODE4Ky0wLjMzNDEgICAgID8g
ICAgICA1Ljc5MjgrLTAuMzIwMSAgICAgICAgPyBtaWdodCBiZSAxLjAzNzh4IHNsb3dlcgogICB0
cnktY2F0Y2gtZ2V0LWJ5LXZhbC1zY29wZWQtYXJndW1lbnRzICAgICAgICAgICAgICA3LjE3NDAr
LTEuMDA1NiAgICAgICAgICAgIDcuMTA5MCstMS4yNzM3ICAgICAgICAKICAgZXZhbC1jYWNoZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMy45Mjk2Ky0wLjYxNjQgICAg
ID8gICAgIDI0LjIwNDUrLTAuNzY5MCAgICAgICAgPyBtaWdodCBiZSAxLjAxMTV4IHNsb3dlcgog
ICBkaXJlY3QtY29uc3RydWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEzLjU4
MDMrLTEuNDgwMiAgICAgICAgICAxMTMuMzkwNCstMi4yMzI1ICAgICAgICAKICAgcHJldmVudC1l
eHRlbnNpb25zLWFuZC1kby13b3JrICAgICAgICAgICAgICAgICAgICAxNy4yMDkzKy0wLjM1MDEg
ICAgID8gICAgIDE4LjEwNzArLTAuNzcxMCAgICAgICAgPyBtaWdodCBiZSAxLjA1MjJ4IHNsb3dl
cgogICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1mbGFn
cyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLjU5NzcrLTAuMDM1MSAgICAgICAgICAgIDAuNTg1MSstMC4wMjU5ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDIxN3ggZmFzdGVyCiAgIGVsaWRhYmxlLW5ldy1vYmplY3QtdGhlbi1jYWxsICAgICAg
ICAgICAgICAgICAgICAgMjIuNTY0NistMC40ODkzICAgICA/ICAgICAyMy4zODE1Ky0xLjM3Mjgg
ICAgICAgID8gbWlnaHQgYmUgMS4wMzYyeCBzbG93ZXIKICAgSW50MTZBcnJheS1hbGxvYy1sb25n
LWxpdmVkICAgICAgICAgICAgICAgICAgICAgICA2Ni4wNTQ2Ky00LjEwNjMgICAgICAgICAgIDY1
LjE2NTYrLTEuNTA0MyAgICAgICAgICBtaWdodCBiZSAxLjAxMzZ4IGZhc3RlcgogICBvYmplY3Qt
aW50LW11bC1hcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0Ljc3NTgrLTAuMzcz
OSAgICAgPyAgICAgMTQuODQ1OSstMC43Nzc1ICAgICAgICA/CiAgIGdsb2JhbC1vYmplY3QtYWNj
ZXNzLXdpdGgtbXV0YXRpbmctc3RydWN0dXJlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuNjU0MistMC40NzcyICAgICA/ICAgICAgNy45
ODI3Ky0xLjA5ODMgICAgICAgID8gbWlnaHQgYmUgMS4xOTk2eCBzbG93ZXIKICAgbG9hZC12YXJh
cmdzLWVsaW1pbmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAyMS4wMzkxKy0xLjY2MzYg
ICAgICAgICAgIDIwLjk2MzgrLTEuMDcyMCAgICAgICAgCiAgIG51bWJlci10ZXN0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMTYwOCstMC4yMzMxICAgICA/ICAgICAg
NC41MjcwKy0wLjIzNTkgICAgICAgID8gbWlnaHQgYmUgMS4wODgweCBzbG93ZXIKICAgSW50MTZB
cnJheS1idWJibGUtc29ydC13aXRoLWJ5dGVMZW5ndGggICAgICAgICAgICAzMC4zODY5Ky05LjI5
NzMgICAgICAgICAgIDMwLjAxNDIrLTYuNTcxMyAgICAgICAgICBtaWdodCBiZSAxLjAxMjR4IGZh
c3RlcgogICBzdHJpY3Qtb3NyLWVudHJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEyLjIwMjUrLTAuNDMxNyAgICAgPyAgICAgMTMuOTY1NistMi42MzYxICAgICAgICA/IG1pZ2h0
IGJlIDEuMTQ0NXggc2xvd2VyCiAgIGV4dGVybmFsLWFyZ3VtZW50cy1wdXRieXZhbCAgICAgICAg
ICAgICAgICAgICAgICAgIDMuMTU0MCstMC4yNjMwICAgICAgICAgICAgMi45NDQ1Ky0wLjE3Njgg
ICAgICAgICAgbWlnaHQgYmUgMS4wNzEyeCBmYXN0ZXIKICAgZGVzdHJ1Y3R1cmluZy1hcmd1bWVu
dHMgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ny44MDgyKy0zLjgxMzkgICAgID8gICAgIDQ4
Ljc3MjkrLTYuMDUzMiAgICAgICAgPyBtaWdodCBiZSAxLjAyMDJ4IHNsb3dlcgogICBzdHJpbmct
cmVwZWF0LWFyaXRoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI3LjQxNDArLTEuMTI2
MSAgICAgICAgICAgMjYuODg5OSstMC44MTQxICAgICAgICAgIG1pZ2h0IGJlIDEuMDE5NXggZmFz
dGVyCiAgIGdlbmVyYXRvci1jcmVhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEuMTkwOCstMC4wNTM5ICAgICA/ICAgICAgMS4yNTM0Ky0wLjEyNTIgICAgICAgID8gbWlnaHQg
YmUgMS4wNTI2eCBzbG93ZXIKICAgc2V0dGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNS42MjU2Ky0xLjY0MDAgICAgICAgICAgICA0LjgxMDkrLTAuMjI3MiAg
ICAgICAgICBtaWdodCBiZSAxLjE2OTN4IGZhc3RlcgogICBnZXRfYnlfdmFsLUludDMyQXJyYXkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjEwNjErLTAuMzQzNSAgICAgPyAgICAgIDIu
MTI3MystMC4yMTU3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEwMXggc2xvd2VyCiAgIGdldC1ieS12
YWwtd2l0aC1zdHJpbmctYmltb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbiAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjE2
NDQrLTAuNzY4OSAgICAgPyAgICAgMTAuOTQ5MCstMS4xMTM4ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDc3Mnggc2xvd2VyCiAgIGFycmF5LW5vbmFycmF5LXBvbHltb3JocGljLWFjY2VzcyAgICAgICAg
ICAgICAgICAgMzEuNjM5NystMi41NTQzICAgICAgICAgICAzMC4yMzkzKy0xLjUzMzQgICAgICAg
ICAgbWlnaHQgYmUgMS4wNDYzeCBmYXN0ZXIKICAgYXJyYXktd2l0aC1kb3VibGUtYWRkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNS45ODk0Ky0wLjU4OTAgICAgICAgICAgICA1Ljc3MTYr
LTAuNDE3MCAgICAgICAgICBtaWdodCBiZSAxLjAzNzd4IGZhc3RlcgogICBicmFuY2gtZm9sZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjEyNzErLTAuMzk2MiAgICAg
PyAgICAgIDYuMzg1MSstMC41NjE4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQyMXggc2xvd2VyCiAg
IHRvLW51bWJlci1jb25zdHJ1Y3Rvci1zdHJpbmctbnVtYmVyLXN0cmluZy1udW1iZXIgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41NzY0
Ky0wLjM5OTAgICAgID8gICAgICA0Ljk5NDQrLTAuMzk4MyAgICAgICAgPyBtaWdodCBiZSAxLjA5
MTN4IHNsb3dlcgogICBpbi1vbmUtY2FzZS1mYWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEyLjQ1NTQrLTAuODkyOSAgICAgPyAgICAgMTIuNjM4OCstMS4zNjI1ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDE0N3ggc2xvd2VyCiAgIGFyZ3VtZW50cy1zdHJpY3QtbW9kZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNDkuODc5OSstMS4wMjM4ICAgICA/ICAgICA1Mi42MjQ5Ky0z
Ljg1MzEgICAgICAgID8gbWlnaHQgYmUgMS4wNTUweCBzbG93ZXIKICAgQXJyYXlCdWZmZXItSW50
OEFycmF5LWFsbG9jLWxvbmctbGl2ZWQtYnVmZmVyICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzQuODIwMystMTAuMDUyOSAgICAgICAgICAz
MC41NzY3Ky0wLjc0ODEgICAgICAgICAgbWlnaHQgYmUgMS4xMzg4eCBmYXN0ZXIKICAgbWFwLXJl
aGFzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMS4xMjcwKy0yLjUx
NDIgICAgICAgICAgICA5LjUwNDcrLTEuMTY4MiAgICAgICAgICBtaWdodCBiZSAxLjE3MDd4IGZh
c3RlcgogICBieS12YWwtZ2VuZXJpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzLjc3MzYrLTAuNzg3MiAgICAgICAgICAgIDMuNDgxMSstMC40NDYwICAgICAgICAgIG1pZ2h0
IGJlIDEuMDg0MHggZmFzdGVyCiAgIGNhc3QtaW50LXRvLWRvdWJsZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDcuNDIwMCstMS4zMjExICAgICAgICAgICAgNy4zNzA0Ky0wLjU1NDUg
ICAgICAgIAogICBnZXQtYnktaWQtcHJvdG8tb3Itc2VsZiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEyLjMwNDQrLTAuODAxNyAgICAgXiAgICAgMTAuODczMistMC41NTU2ICAgICAgICBeIGRl
ZmluaXRlbHkgMS4xMzE2eCBmYXN0ZXIKICAgZnJvdW5kICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxNC4yMjMzKy0wLjQxMTUgICAgID8gICAgIDE0LjM3ODErLTAu
NDg2MiAgICAgICAgPyBtaWdodCBiZSAxLjAxMDl4IHNsb3dlcgogICBJbnQzMkFycmF5LWFsbG9j
LWxhcmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0Ljk2NjYrLTAuNjM2MSAgICAgICAg
ICAgMTQuNzM1NistMC41MzQ4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE1N3ggZmFzdGVyCiAgIGlz
LXVuZGVmaW5lZC1mb2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNTA4MSst
MC4yMjgzICAgICAgICAgICAgMy4zOTMxKy0wLjE4NTUgICAgICAgICAgbWlnaHQgYmUgMS4wMzM5
eCBmYXN0ZXIKICAgdHJ5LWNhdGNoLWdldC1ieS12YWwtZGlyZWN0LWFyZ3VtZW50cyAgICAgICAg
ICAgICAgMy44NDQ2Ky0wLjgyMjQgICAgICAgICAgICAzLjQ2MzErLTAuMzUyNyAgICAgICAgICBt
aWdodCBiZSAxLjExMDJ4IGZhc3RlcgogICBpbnQtb3Itb3RoZXItbWF4LXRoZW4tZ2V0LWJ5LXZh
bCAgICAgICAgICAgICAgICAgICA2Ljc2OTIrLTAuMzU2MiAgICAgICAgICAgIDYuNjU1MystMC40
NzkwICAgICAgICAgIG1pZ2h0IGJlIDEuMDE3MXggZmFzdGVyCiAgIHN3aXRjaC1jb25zdGFudCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguMjE0OCstMS4xNjg0ICAgICAgICAg
ICAgNy43MDYwKy0xLjMxMDcgICAgICAgICAgbWlnaHQgYmUgMS4wNjYweCBmYXN0ZXIKICAgcG9s
eS1zdHJpY3RlcSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4Ny44MDg5Ky0x
My43NDI0ICAgICAgICAgIDgyLjQ3NTIrLTMuMzE1MyAgICAgICAgICBtaWdodCBiZSAxLjA2NDd4
IGZhc3RlcgogICBpcy1zdHJpbmctZm9sZC10cmlja3kgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA1Ljg0MTUrLTAuOTgyMyAgICAgICAgICAgIDQuOTMxNystMC4zMjI5ICAgICAgICAgIG1p
Z2h0IGJlIDEuMTg0NXggZmFzdGVyCiAgIGRvdWJsZS10by11aW50MzItdHlwZWQtYXJyYXkgICAg
ICAgICAgICAgICAgICAgICAgIDMuNzcwNistMC40NDczICAgICA/ICAgICAgNC4wMDkxKy0wLjc0
NjUgICAgICAgID8gbWlnaHQgYmUgMS4wNjMzeCBzbG93ZXIKICAgYWJjLWZvcndhcmQtbG9vcC1l
cXVhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMS43MjkzKy0xLjMzNjcgICAgID8gICAg
IDMyLjEwNTgrLTEuNzYwNCAgICAgICAgPyBtaWdodCBiZSAxLjAxMTl4IHNsb3dlcgogICBpcy1i
b29sZWFuLWZvbGQtdHJpY2t5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjA0NjQrLTAu
ODY2MSAgICAgICAgICAgIDQuOTY4NistMC4zMjIwICAgICAgICAgIG1pZ2h0IGJlIDEuMDE1N3gg
ZmFzdGVyCiAgIGJ1aWxkLWxhcmdlLW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNTEuNTIzNystMTUuMTE4NSAgICAgICAgICA0NS44Mzg5Ky0xLjgxODQgICAgICAgICAgbWln
aHQgYmUgMS4xMjQweCBmYXN0ZXIKICAgc3RyaW5nLXJlcGVhdC1ub3QtcmVzb2x2aW5nLW5vLWlu
bGluZSAgICAgICAgICAgICAgNS4zODA3Ky0wLjgxODMgICAgICAgICAgICA1LjI2NzMrLTAuMzYz
MSAgICAgICAgICBtaWdodCBiZSAxLjAyMTV4IGZhc3RlcgogICBmdW5jdGlvbi1jYWxsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjA0MjQrLTEuMTE4MyAgICAgPyAgICAg
MTMuMTQxNystMy43MTkwICAgICAgICA/IG1pZ2h0IGJlIDEuMDkxM3ggc2xvd2VyCiAgIGdldC1i
eS1pZC1jaGFpbi1mcm9tLXRyeS1ibG9jayAgICAgICAgICAgICAgICAgICAgIDMuMjAyNSstMC43
OTYzICAgICAgICAgICAgMi45NTE4Ky0wLjI4MTggICAgICAgICAgbWlnaHQgYmUgMS4wODQ5eCBm
YXN0ZXIKICAgYWJjLXNpbXBsZS1mb3J3YXJkLWxvb3AgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzMS4yMDIzKy0wLjg2MjIgICAgICAgICAgIDMwLjkzNjUrLTAuMzcyOCAgICAgICAgCiAgIGds
b2JhbC12YXItY29uc3QtaW5mZXItZmlyZS1mcm9tLW9wdCAgICAgICAgICAgICAgIDEuMjI2Nyst
MC4xNTYzICAgICA/ICAgICAgMS4yNjg0Ky0wLjEzNjEgICAgICAgID8gbWlnaHQgYmUgMS4wMzQw
eCBzbG93ZXIKICAgb2JqZWN0LWFuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNi45NzQ5Ky0wLjI5ODQgICAgID8gICAgICA3LjUzNTYrLTAuNDcyOSAgICAgICAgPyBt
aWdodCBiZSAxLjA4MDR4IHNsb3dlcgogICBJbnQ4QXJyYXktYWxsb2MtbG9uZy1saXZlZCAgICAg
ICAgICAgICAgICAgICAgICAgIDU3LjEzMDIrLTIuODcyNiAgICAgPyAgICAgNjAuNjQ1MSstOS4z
MjM5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDYxNXggc2xvd2VyCiAgIGxvZ2ljYWwtbm90ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuNTI5OCstMC40NDU4ICAgICAgICAg
ICAgNi4zMTE5Ky0wLjI0NDkgICAgICAgICAgbWlnaHQgYmUgMS4wMzQ1eCBmYXN0ZXIKICAgZG91
YmxlLXRvLWludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NC45NDM4Ky0x
LjQxNDEgICAgID8gICAgIDY2LjIzMjIrLTAuODE2NiAgICAgICAgPyBtaWdodCBiZSAxLjAxOTh4
IHNsb3dlcgogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5nLXByb3RvLW9yLXNlbGYgICAgICAgICAg
ICAgIDE0LjI5NDkrLTEuNDQ0OSAgICAgICAgICAgMTMuMTc4NCstMS41NjUzICAgICAgICAgIG1p
Z2h0IGJlIDEuMDg0N3ggZmFzdGVyCiAgIHN0cmluZy1wcm90b3R5cGUtc2VhcmNoLW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzMiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLjY2OTkrLTAuMDUzMyAgICAgICAgICAgIDAuNjMyNCstMC4wMTY2
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDU5MnggZmFzdGVyCiAgIHN0cmluZy1yZXBsYWNlLWVtcHR5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuMzgyMistMC4zNjYyICAgICAhICAgICAx
NC4wMzQ1Ky0xLjE4OTcgICAgICAgICEgZGVmaW5pdGVseSAxLjEzMzR4IHNsb3dlcgogICBhbGlh
c2VkLWFyZ3VtZW50cy1nZXRieXZhbCAgICAgICAgICAgICAgICAgICAgICAgICAxLjkyMDYrLTAu
OTQ1MCAgICAgICAgICAgIDEuODk2NCstMC42Mjg2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyOHgg
ZmFzdGVyCiAgIGFycm93ZnVuY3Rpb24tY2FsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTEuNDAzNystMC43MzMxICAgICA/ICAgICAxMS42NDA4Ky0wLjgwNDQgICAgICAgID8gbWln
aHQgYmUgMS4wMjA4eCBzbG93ZXIKICAgZ2V0LWJ5LWlkLXNlbGYtb3ItcHJvdG8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAxMi4wNjAyKy0xLjI0MDQgICAgID8gICAgIDEyLjg0MjUrLTEuMDMw
NyAgICAgICAgPyBtaWdodCBiZSAxLjA2NDl4IHNsb3dlcgogICBmdGwtcG9seW1vcnBoaWMtYml0
b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTc2LjEwNTErLTIuNDc0NCAgICAgPyAgICAx
NzkuMTY4NCstMy4wNDk2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3NHggc2xvd2VyCiAgIEludDE2
QXJyYXktbG9hZC1pbnQtbXVsICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNjE5MSstMC4y
MjUwICAgICA/ICAgICAgMi42NDcyKy0wLjIwNTcgICAgICAgID8gbWlnaHQgYmUgMS4wMTA3eCBz
bG93ZXIKICAgZXZhbC1jb2RlLWZ0bC1yZWVudHJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA0Mi4zMzQzKy05LjU0MTMgICAgICAgICAgIDM4LjI2NDYrLTAuNjQ2NiAgICAgICAgICBtaWdo
dCBiZSAxLjEwNjR4IGZhc3RlcgogICBmb2xkLW11bHRpLWdldC1ieS1vZmZzZXQtdG8tZ2V0LWJ5
LW9mZnNldCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA3LjMxNjYrLTEuMDI5OSAgICAgPyAgICAgIDcuNTM2NSstMS44NTQ3ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDMwMXggc2xvd2VyCiAgIGFyZ3VtZW50cy1uYW1lZC1hbmQtcmVmbGVjdGl2
ZSAgICAgICAgICAgICAgICAgICAgMTAuNzIyMystNC4yNDM1ICAgICAgICAgICAgOS41MDcyKy0x
LjI3MjkgICAgICAgICAgbWlnaHQgYmUgMS4xMjc4eCBmYXN0ZXIKICAgaW5saW5lZC1wdXQtYnkt
aWQtdHJhbnNpdGlvbiAgICAgICAgICAgICAgICAgICAgICAxMS4wOTI5Ky0wLjY3MDYgICAgID8g
ICAgIDExLjM1NDMrLTAuNTQxMCAgICAgICAgPyBtaWdodCBiZSAxLjAyMzZ4IHNsb3dlcgogICBz
dWJzdHJpbmctY29uY2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU3Ljg5Mzcr
LTAuNjc3OSAgICAgICAgICAgNTcuNTMyMistMC44NjYxICAgICAgICAKICAgaGFyZC1vdmVyZmxv
dy1jaGVjay1lcXVhbCAgICAgICAgICAgICAgICAgICAgICAgICAzNS42NTU1Ky0yLjUzNzkgICAg
ICAgICAgIDM0LjI2NDErLTEuODg2OSAgICAgICAgICBtaWdodCBiZSAxLjA0MDZ4IGZhc3Rlcgog
ICBzdHJpbmctY29ucy1yZXBlYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjQ2
NDArLTEuMDEwMyAgICAgICAgICAgIDguODI1MSstMC4yMjQzICAgICAgICAgIG1pZ2h0IGJlIDEu
MDcyNHggZmFzdGVyCiAgIG1hcC1mb3Itb2YgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTEuNTY3NCstMS41MTE3ICAgICAgICAgICAxMS4zMzc5Ky0xLjA4NTkgICAgICAg
ICAgbWlnaHQgYmUgMS4wMjAyeCBmYXN0ZXIKICAgYXJyYXktcHJvdG90eXBlLXJlZHVjZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA0MS43MDM1Ky0wLjUxMzggICAgICAgICAgIDQxLjUyNTQr
LTEuMzcyMSAgICAgICAgCiAgIGluZmVyLWNsb3N1cmUtY29uc3QtdGhlbi1wdXQtdG8tc2NvcGUg
ICAgICAgICAgICAgMjkuMzQyNCstMS4zMDM4ICAgICAgICAgICAyOS4zMTIwKy0xLjIzNTMgICAg
ICAgIAogICBzdHJpbmctY29uY2F0LWNvbnZlcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDgzLjEwMDkrLTIuNDA1NyAgICAgPyAgICAgODMuMzY2MCstMS42OTM4ICAgICAgICA/CiAgIHZh
cmFyZ3MtaW5saW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuMzI0NSst
MC41ODk4ICAgICA/ICAgICAgOS44NDM0Ky0wLjg0OTMgICAgICAgID8gbWlnaHQgYmUgMS4wNTU3
eCBzbG93ZXIKICAgaW50LW9yLW90aGVyLWFicy16ZXJvLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAg
ICAgICAxOS45NjQ1Ky0wLjkzNjEgICAgID8gICAgIDIyLjA4MTMrLTUuNjI3MSAgICAgICAgPyBt
aWdodCBiZSAxLjEwNjB4IHNsb3dlcgogICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMC42MDg1Ky0wLjA2MzAgICAgID8gICAgICAwLjcw
NTErLTAuMTg0NiAgICAgICAgPyBtaWdodCBiZSAxLjE1ODd4IHNsb3dlcgogICBzdHJpbmctY29u
Y2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ2LjA5ODMrLTAuNTcwOCAg
ICAgPyAgICAgNTMuNjE5NCstMTkuMDU1MyAgICAgICA/IG1pZ2h0IGJlIDEuMTYzMnggc2xvd2Vy
CiAgIHJlZ2V4cC1wcm90b3R5cGUtc2VhcmNoLW9ic2VydmFibGUtc2lkZS1lZmZlY3RzICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMjcw
NCstMC4zNTEyICAgICAgICAgICAgMS4wMTU3Ky0wLjAyMTUgICAgICAgICAgbWlnaHQgYmUgMS4y
NTA3eCBmYXN0ZXIKICAgYWJjLXNpbXBsZS1iYWNrd2FyZC1sb29wICAgICAgICAgICAgICAgICAg
ICAgICAgICAzMS40ODc5Ky0xLjQ1MzcgICAgICAgICAgIDMxLjI1NTErLTAuODk1NCAgICAgICAg
CiAgIHNldC1mb3ItZWFjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMu
MzU5OSstMC4yNTkwICAgICA/ICAgICAgMy40NDk0Ky0wLjM0OTMgICAgICAgID8gbWlnaHQgYmUg
MS4wMjY2eCBzbG93ZXIKICAgc3RyaW5nLWdldC1ieS12YWwtYmlnLWNoYXIgICAgICAgICAgICAg
ICAgICAgICAgICAgNi41MDEwKy0wLjMyMDAgICAgID8gICAgICA3LjExNjYrLTAuOTg1MiAgICAg
ICAgPyBtaWdodCBiZSAxLjA5NDd4IHNsb3dlcgogICBtYXgtYm9vbGVhbiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzLjcyODkrLTAuMTkxMCAgICAgPyAgICAgIDQuMDk1
OSstMC40OTA3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDk4NHggc2xvd2VyCiAgIHRvLW51bWJlci1j
b25zdHJ1Y3Rvci1vbmx5LXN0cmluZyAgICAgICAgICAgICAgICAgIDIuNzEyMystMC45MzM0ICAg
ICAgICAgICAgMi41NTg3Ky0wLjI3MzAgICAgICAgICAgbWlnaHQgYmUgMS4wNjAxeCBmYXN0ZXIK
ICAgc3dpdGNoLXN0cmluZy1iYXNpYy1iaWcgICAgICAgICAgICAgICAgICAgICAgICAgICAxNS4z
OTQyKy0wLjU4MDUgICAgID8gICAgIDE1Ljk1NjArLTAuNjI5MSAgICAgICAgPyBtaWdodCBiZSAx
LjAzNjV4IHNsb3dlcgogICBmdW5jdGlvbi1kb3QtYXBwbHkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAzLjYxNDMrLTAuMzg4MCAgICAgPyAgICAgIDMuNjk2MCstMS4xMDM1ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDIyNnggc2xvd2VyCiAgIG11bC1ib29sZWFuLWRvdWJsZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDMuNzkwNCstMC4xMzU0ICAgICA/ICAgICAgNC4wNzAx
Ky0wLjE1NzQgICAgICAgID8gbWlnaHQgYmUgMS4wNzM4eCBzbG93ZXIKICAgZG91YmxlLXJlYWwt
dXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMi43Mzk0Ky0xLjE2NDIgICAg
ID8gICAgIDM0LjA3OTcrLTEuOTMyMSAgICAgICAgPyBtaWdodCBiZSAxLjA0MDl4IHNsb3dlcgog
ICBjZmctc2ltcGxpZnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjEw
OTArLTAuMjc5MyAgICAgPyAgICAgIDQuMzE5MSstMC40MTY1ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDUxMXggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctc2VsZi1vci1wcm90byAgICAg
ICAgICAgICAgMTQuMzE0NistMS4zNDc3ICAgICAgICAgICAxMy41OTQ1Ky0xLjE2NjcgICAgICAg
ICAgbWlnaHQgYmUgMS4wNTMweCBmYXN0ZXIKICAgaW50LW9yLW90aGVyLW5lZy16ZXJvLXRoZW4t
Z2V0LWJ5LXZhbCAgICAgICAgICAgICAxOS41Mjk2Ky0wLjkxMzkgICAgICAgICAgIDE5LjQzMzQr
LTAuNjgwOCAgICAgICAgCiAgIHN0cmluZy1zdWIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNDkuMzAyOSstMS4wNTc5ICAgICAgICAgICA0Ny45OTAwKy0xLjI0MzQgICAg
ICAgICAgbWlnaHQgYmUgMS4wMjc0eCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZ2xvYmFsICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNTc0NSstMC4wMTQ4ICAgICA/ICAgICAg
MC42MzUxKy0wLjA4MDUgICAgICAgID8gbWlnaHQgYmUgMS4xMDU2eCBzbG93ZXIKICAgaW5zdGFu
Y2VvZi1ib3VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNy44MTAxKy0xLjI1
OTIgICAgICAgICAgIDI3LjEwMDMrLTEuMDQyMSAgICAgICAgICBtaWdodCBiZSAxLjAyNjJ4IGZh
c3RlcgogICBkaXJlY3QtY29uc3RydWN0LWFyaXR5LW1pc21hdGNoICAgICAgICAgICAgICAgICAg
MTMwLjA5NzYrLTEuODk4NCAgICAgPyAgICAxMzEuMDcyNCstMi4wMTkwICAgICAgICA/CiAgIGRp
cmVjdC10YWlsLWNhbGwtYXJpdHktbWlzbWF0Y2ggICAgICAgICAgICAgICAgICAgODcuNzU2NCst
MC43MDI4ICAgICA/ICAgICA5MC4yMjE2Ky0yLjA3NjUgICAgICAgID8gbWlnaHQgYmUgMS4wMjgx
eCBzbG93ZXIKICAgc3Vic3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA2OS4wOTQyKy0wLjk2MTUgICAgID8gICAgIDY5LjYyNjMrLTIuMDExOSAgICAgICAgPwog
ICBzdHJpbmctZnJvbS1jaGFyLWNvZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjI2
NTErLTAuNDQyOCAgICAgPyAgICAgIDguNTA2MCstMC42NDc5ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDI5MXggc2xvd2VyCiAgIHVuZGVmaW5lZC10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQuNTc0MSstMC4zMjY0ICAgICAgICAgICAgNC4zMDU3Ky0wLjM0NjIgICAgICAg
ICAgbWlnaHQgYmUgMS4wNjIzeCBmYXN0ZXIKICAgc3RyaW5nLXJlcGVhdC1yZXNvbHZpbmctZml4
ZWQgICAgICAgICAgICAgICAgICAgICAyNi4zODk2Ky0wLjg3ODMgICAgICAgICAgIDI2LjE3ODYr
LTEuMDEwOSAgICAgICAgCiAgIGludGVnZXItZGl2aWRlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTMuMjA2MystMC43MjAzICAgICA/ICAgICAxMy4zOTI2Ky0wLjgxMDEgICAg
ICAgID8gbWlnaHQgYmUgMS4wMTQxeCBzbG93ZXIKICAgZGlyZWN0LWFyZ3VtZW50cy1vdmVycmlk
ZGVuLWxlbmd0aCAgICAgICAgICAgICAgICAxMC40NzU0Ky0wLjY0ODMgICAgID8gICAgIDEwLjU3
MDMrLTAuODkzOCAgICAgICAgPwogICBzdHJ1Y3R1cmUtaG9pc3Qtb3Zlci10cmFuc2l0aW9ucyAg
ICAgICAgICAgICAgICAgICAzLjg4NzErLTAuMzkzMSAgICAgPyAgICAgIDQuMDQyMistMC44NTgy
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM5OXggc2xvd2VyCiAgIGludC1vci1vdGhlci1hZGQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuMjg1MystMC41OTAzICAgICAgICAgICAg
Ny4xODk0Ky0wLjYxMzAgICAgICAgICAgbWlnaHQgYmUgMS4wMTMzeCBmYXN0ZXIKICAgRmxvYXQz
MkFycmF5LW1hdHJpeC1tdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgOS42ODQ0Ky0yLjg0
MzYgICAgICAgICAgICA3LjgyNTkrLTAuNjc5OCAgICAgICAgICBtaWdodCBiZSAxLjIzNzV4IGZh
c3RlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1p
Z25vcmVDYXNlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAuNjc1NSstMC4wMTY3ICAgICA/ICAgICAgMC44MDU5Ky0wLjE0NjQgICAgICAg
ID8gbWlnaHQgYmUgMS4xOTMweCBzbG93ZXIKICAgc2lua2FibGUtbmV3LW9iamVjdCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAyMi41NDI5Ky0xLjM1NzQgICAgICAgICAgIDIyLjQ4Mjkr
LTAuODU1OCAgICAgICAgCiAgIGV4dGVybmFsLWFyZ3VtZW50cy1nZXRieXZhbCAgICAgICAgICAg
ICAgICAgICAgICAgIDEuNTQzNSstMC4wNjAzICAgICA/ICAgICAgMi4zMjQzKy0xLjkzNjcgICAg
ICAgID8gbWlnaHQgYmUgMS41MDU5eCBzbG93ZXIKICAgY2FsbC1zcHJlYWQtY2FsbCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzMy43MzI4Ky0wLjgxMjggICAgID8gICAgIDM1LjQ2
MzMrLTMuOTE4NSAgICAgICAgPyBtaWdodCBiZSAxLjA1MTN4IHNsb3dlcgogICBob2lzdC1wb2x5
LWNoZWNrLXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAzLjU2ODIrLTAuMzgyNCAg
ICAgICAgICAgIDMuNTQ5NystMC41NTU0ICAgICAgICAKICAgY29uY2F0LWFwcGVuZC1vbmUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMS43ODQzKy0xLjE0MjkgICAgICAgICAgIDEw
Ljg3MjcrLTAuODM4NCAgICAgICAgICBtaWdodCBiZSAxLjA4Mzh4IGZhc3RlcgogICBzdHJpbmct
Y29uY2F0LW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjU1NzUrLTAuNTcw
NSAgICAgPyAgICAgIDMuNjE5NistMC43ODYxICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3NXggc2xv
d2VyCiAgIHB1dC1ieS12YWwtd2l0aC1zdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MTYuMjc5NystMC4yNDYyICAgICA/ICAgICAxNi44NzM5Ky0wLjM5MzUgICAgICAgID8gbWlnaHQg
YmUgMS4wMzY1eCBzbG93ZXIKICAgZGl2LWJvb2xlYW4tZG91YmxlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNS42OTY3Ky0wLjMyMzkgICAgID8gICAgICA1Ljc4OTYrLTAuMjM4NSAg
ICAgICAgPyBtaWdodCBiZSAxLjAxNjN4IHNsb3dlcgogICBmdGwtbGlicmFyeS1pbmxpbmluZy1k
YXRhdmlldyAgICAgICAgICAgICAgICAgICAgMTAwLjI0NjkrLTEuNjQ1OSAgICAgICAgICAgOTku
MjI0MistMy4wOTQyICAgICAgICAgIG1pZ2h0IGJlIDEuMDEwM3ggZmFzdGVyCiAgIEFycmF5QnVm
ZmVyLURhdGFWaWV3LWFsbG9jLWxhcmdlLWxvbmctbGl2ZWQgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2OC42NDc1Ky0zLjI2MzkgICAgID8g
ICAgIDY4Ljk1NDgrLTEuMTg1OSAgICAgICAgPwogICBuZWdhdGl2ZS16ZXJvLW5lZ2F0ZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLjYxMzgrLTAuMDc2NiAgICAgICAgICAgIDAuNTg5
MCstMC4wMzkyICAgICAgICAgIG1pZ2h0IGJlIDEuMDQyMXggZmFzdGVyCiAgIHR5cGVkLWFycmF5
LXN1YmFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDUuMjA4OCstMS4wOTEyICAg
ICA/ICAgICA0NS43ODE3Ky0xLjgzNDYgICAgICAgID8gbWlnaHQgYmUgMS4wMTI3eCBzbG93ZXIK
ICAgY2FsbC1zcHJlYWQtYXBwbHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNi43
MzIzKy0yLjAyMjMgICAgICAgICAgIDM2LjQ2ODYrLTMuMTAxOSAgICAgICAgCiAgIGlzLXN5bWJv
bC1taXhlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuNjk1NistMi40NjE3
ICAgICAgICAgICAgNi45MzU4Ky0xLjExMDMgICAgICAgICAgbWlnaHQgYmUgMS4xMDk2eCBmYXN0
ZXIKICAgcHV0LWJ5LWlkLXRyYW5zaXRpb24td2l0aC1pbmRleGluZy1oZWFkZXIgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOC40NTU5Ky0y
LjE3NTIgICAgICAgICAgIDE3LjQzMDQrLTAuMjc5MCAgICAgICAgICBtaWdodCBiZSAxLjA1ODh4
IGZhc3RlcgogICByZXN0LXBhcmFtZXRlci1jb25zdHJ1Y3Rpb24tcGVyZm9ybWFuY2UgICAgICAg
ICAgIDMyLjcyODQrLTcuMTk3MCAgICAgICAgICAgMzEuMTEwNSstNC4xNTYwICAgICAgICAgIG1p
Z2h0IGJlIDEuMDUyMHggZmFzdGVyCiAgIHNlYWwtYW5kLWRvLXdvcmsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTcuNTcwOSstMC41MjkwICAgICA/ICAgICAxNy43NDU2Ky0wLjkx
NjQgICAgICAgID8KICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZm
ZWN0czMtZmxhZ3MgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC42NzgwKy0wLjAxOTMgICAgID8gICAgICAwLjY5NTgrLTAuMDQ2NCAgICAg
ICAgPyBtaWdodCBiZSAxLjAyNjJ4IHNsb3dlcgogICBudW1iZXItdG8tc3RyaW5nLXdpdGgtYWRk
LWluLWxvb3AgICAgICAgICAgICAgICAgIDEyLjc2NTcrLTAuODA0NiAgICAgPyAgICAgMTMuNzQw
NCstMi4wOTI0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDc2NHggc2xvd2VyCiAgIHBvbHktY2hhaW4t
YWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNzc3OSstMC4yMjIxICAg
ICAgICAgICAgMy43NTMzKy0wLjI2MjggICAgICAgIAogICBBcnJheUJ1ZmZlci1JbnQ4QXJyYXkt
YWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAgIDIxLjcwODUrLTEuMDUzNSAgICAgPyAgICAgMjIu
MjUzOCstMS40NzE5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI1MXggc2xvd2VyCiAgIGRvdWJsZS10
by1pbnQzMi10eXBlZC1hcnJheS1uby1pbmxpbmUgICAgICAgICAgICAgIDMuODkyNCstMC4zNDg2
ICAgICAgICAgICAgMy44OTEyKy0wLjIzNjMgICAgICAgIAogICBzd2l0Y2gtc3RyaW5nLWJpZy1s
ZW5ndGgtdG93ZXItdmFyICAgICAgICAgICAgICAgIDI1LjExMDcrLTEuNDA2MiAgICAgPyAgICAg
MjYuMDMzMSstMS41MjU1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM2N3ggc2xvd2VyCiAgIGRvdWJs
ZS10by1pbnQzMi10eXBlZC1hcnJheSAgICAgICAgICAgICAgICAgICAgICAgIDMuNjQ4NCstMC40
NDEzICAgICAgICAgICAgMy40MDE3Ky0wLjMzMTQgICAgICAgICAgbWlnaHQgYmUgMS4wNzI1eCBm
YXN0ZXIKICAgaGFyZC1vdmVyZmxvdy1jaGVjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzMi45ODM2Ky0yLjIwMzEgICAgID8gICAgIDM0LjMyMTcrLTMuNDA0NCAgICAgICAgPyBtaWdo
dCBiZSAxLjA0MDZ4IHNsb3dlcgogICBJbnQzMkFycmF5LWFsbG9jLWxvbmctbGl2ZWQgICAgICAg
ICAgICAgICAgICAgICAgIDc0Ljg1OTIrLTIuMjU1NCAgICAgPyAgICAgNzcuOTgyNCstMi4zNjc3
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQxN3ggc2xvd2VyCiAgIHN0cmluZy1yZXBlYXQtcmVzb2x2
aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgMzQuOTk0NCstMS4xOTk4ICAgICA/ICAgICAz
NS42OTM4Ky0wLjgyNDUgICAgICAgID8gbWlnaHQgYmUgMS4wMjAweCBzbG93ZXIKICAgcG9seW1v
cnBoaWMtZ2V0LWJ5LWlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi44Njk5Ky0wLjIx
MjIgICAgICAgICAgICAyLjg2ODMrLTAuMjgzNCAgICAgICAgCiAgIHNsb3ctYXJyYXktcHJvZmls
ZS1jb252ZXJnZW5jZSAgICAgICAgICAgICAgICAgICAgIDQuNDA1MystMC44MzE3ICAgICAgICAg
ICAgMy42MjYxKy0wLjI1NDYgICAgICAgICAgbWlnaHQgYmUgMS4yMTQ5eCBmYXN0ZXIKICAgZ2V0
LWJ5LXZhbC13aXRoLXN0cmluZy1jaGFpbi1mcm9tLXRyeS1ibG9jayAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjE1NDArLTAuNDIxNCAg
ICAgICAgICAgIDMuMTA5NystMC41NTc4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0MnggZmFzdGVy
CiAgIHY4LXJheXRyYWNlLXdpdGgtZW1wdHktdHJ5LWNhdGNoICAgICAgICAgICAgICAgICAgNjku
MDI0OCstMi4wNTcwICAgICAgICAgICA2Ni40MTk5Ky0yLjM2NjkgICAgICAgICAgbWlnaHQgYmUg
MS4wMzkyeCBmYXN0ZXIKICAgc2NvcGVkLWFyZ3VtZW50cy1wb3NzaWJseS1vdmVycmlkZGVuLWxl
bmd0aCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEwLjkxMTIrLTAuODA4MyAgICAgICAgICAgMTAuODQxMCstMS4xNjAzICAgICAgICAKICAg
c3dpdGNoaW5nLXNpemUtY2xhc3NlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MS4xMjk1
Ky0xLjY0MTcgICAgID8gICAgIDQzLjAyODcrLTUuMjQ5NiAgICAgICAgPyBtaWdodCBiZSAxLjA0
NjJ4IHNsb3dlcgogICBGbG9hdDY0QXJyYXktYWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAgICAg
ICAgICAgIDk5Ljk0OTMrLTE4LjcwMzEgICAgICAgICAgOTIuNTI2MCstMi40MzU2ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDgwMnggZmFzdGVyCiAgIGNvbnN0YW50LXRlc3QgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDYuNzQwOSstMC4zNTc3ICAgICAgICAgICAgNi41NzIwKy0w
LjQ3NTkgICAgICAgICAgbWlnaHQgYmUgMS4wMjU3eCBmYXN0ZXIKICAgaW50LW92ZXJmbG93LWxv
Y2FsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4xOTU1Ky0wLjMyNTEgICAgID8g
ICAgICA2LjI5MDkrLTAuNDg4NSAgICAgICAgPyBtaWdodCBiZSAxLjAxNTR4IHNsb3dlcgogICBh
cnJvd2Z1bmN0aW9uLWNhbGwtaW4tY2xhc3MtY29uc3RydWN0b3IgICAgICAgICAgIDI4LjE1MTYr
LTAuNTY3OCAgICAgICAgICAgMjcuOTA2NCstMi4zNjUyICAgICAgICAKICAgc2V0dGVyLXByb3Rv
dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi40NDU4Ky0wLjMyMzEgICAg
ID8gICAgICA3LjQ4MjcrLTEuMDgwMyAgICAgICAgPyBtaWdodCBiZSAxLjE2MDl4IHNsb3dlcgog
ICBuZXctYXJyYXktZGVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjky
MjArLTAuNzMwMyAgICAgPyAgICAgMTEuMjIxMCstMC44OTYzICAgICAgICA/IG1pZ2h0IGJlIDEu
MDI3NHggc2xvd2VyCiAgIHN0cmluZy1yb3BlLXdpdGgtb2JqZWN0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMjQuMTA2MCstMC40ODIwICAgICA/ICAgICAyNS40MDQ5Ky0xLjgyOTkgICAgICAg
ID8gbWlnaHQgYmUgMS4wNTM5eCBzbG93ZXIKICAgdG8tbnVtYmVyLWNvbnN0cnVjdG9yLW51bWJl
ci1zdHJpbmctbnVtYmVyLXN0cmluZyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1LjQ1NjMrLTAuNDA0OCAgICAgPyAgICAgIDUuODA2Nyst
MC42NDU5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDY0Mnggc2xvd2VyCiAgIGJvb2xlYW4tdGVzdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMzA3MistMC4yMTQ3ICAgICA/
ICAgICAgNC40ODY4Ky0wLjMwMzQgICAgICAgID8gbWlnaHQgYmUgMS4wNDE3eCBzbG93ZXIKICAg
dHJ5LWdldC1ieS1pZC1wb2x5bW9ycGhpYyAgICAgICAgICAgICAgICAgICAgICAgICAxMC41Njk0
Ky0xLjE5NjYgICAgICAgICAgIDEwLjQyOTcrLTAuNzY2NSAgICAgICAgICBtaWdodCBiZSAxLjAx
MzR4IGZhc3RlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzNCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLjc0MDkrLTAuMTE3OSAgICAgICAgICAgIDAuNjc4MCstMC4wMTA1ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDkyN3ggZmFzdGVyCiAgIHNpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwg
ICAgICAgICAgICAgICAgICAgMjEuNjc0MistMS4wOTA5ICAgICAgICAgICAyMS4xODE2Ky0wLjcz
NTkgICAgICAgICAgbWlnaHQgYmUgMS4wMjMzeCBmYXN0ZXIKICAgbWludXMtYm9vbGVhbiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy43NTE5Ky0wLjY2OTAgICAgICAgICAg
ICAzLjE3MjgrLTAuMTE2NCAgICAgICAgICBtaWdodCBiZSAxLjE4MjV4IGZhc3RlcgogICBwb2x5
bW9ycGhpYy1hcnJheS1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjg1MDYrLTAu
MzQwNSAgICAgPyAgICAgIDIuMTk5NCstMC42MzEyICAgICAgICA/IG1pZ2h0IGJlIDEuMTg4NXgg
c2xvd2VyCiAgIHRvLWxvd2VyLWNhc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxNTQuMzA4NystMzUuNDc5NiAgICAgICAgIDE0OS4yNDgxKy0yMS43MDQyICAgICAgICAgbWln
aHQgYmUgMS4wMzM5eCBmYXN0ZXIKICAgdHJ5LWdldC1ieS1pZC1iYXNpYyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxMC45MTAyKy0zLjM3ODQgICAgICAgICAgICA5LjU0NjYrLTEuMzE1
NSAgICAgICAgICBtaWdodCBiZSAxLjE0Mjh4IGZhc3RlcgogICBlbXNjcmlwdGVuLWN1YmUyaGFz
aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMyLjAxNDArLTAuNzQ1NyAgICAgPyAgICAg
MzIuMzUwOSstMS4zNjM2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEwNXggc2xvd2VyCiAgIHN0cmlu
Zy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXN0aWNreSAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjcwMjUr
LTAuMDI4MyAgICAgICAgICAgIDAuNjgyMSstMC4wMjk4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI5
OXggZmFzdGVyCiAgIGhvaXN0LXBvbHktY2hlY2stc3RydWN0dXJlLWVmZmVjdGZ1bC1sb29wICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUu
NDY0NystMC44NTcyICAgICA/ICAgICAgNS41NjI2Ky0xLjA2MzQgICAgICAgID8gbWlnaHQgYmUg
MS4wMTc5eCBzbG93ZXIKICAgcHV0LWJ5LXZhbC1sYXJnZS1pbmRleC1ibGFuay1pbmRleGluZy10
eXBlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTAuODAyNCstMS4wMzU4ICAgICAgICAgICAgOS43MjQ1Ky0xLjM3NjMgICAgICAgICAgbWln
aHQgYmUgMS4xMTA4eCBmYXN0ZXIKICAgc3Vic3RyaW5nLWNvbmNhdC13ZWlyZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1MC45ODIwKy0wLjIyMjMgICAgID8gICAgIDUyLjQ5MDQrLTMuNzI3
MSAgICAgICAgPyBtaWdodCBiZSAxLjAyOTZ4IHNsb3dlcgogICBpbmxpbmVkLXB1dC1ieS12YWwt
d2l0aC1zeW1ib2wtdHJhbnNpdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDcwLjMyMTMrLTE5LjU3NzUgICAgICAgICAgNjAuOTAxMyst
MS4zMDE5ICAgICAgICAgIG1pZ2h0IGJlIDEuMTU0N3ggZmFzdGVyCiAgIHN0cmluZy1nZXQtYnkt
dmFsLW91dC1vZi1ib3VuZHMtaW5zYW5lICAgICAgICAgICAgIDUuNDcwMSstMC4xNjYwICAgICA/
ICAgICAgNS44NjgxKy0xLjAzNjIgICAgICAgID8gbWlnaHQgYmUgMS4wNzI4eCBzbG93ZXIKICAg
cmVnZXhwLXByb3RvdHlwZS10ZXN0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMiAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjU2NjcrLTAu
MDQ0OCAgICAgICAgICAgIDAuNTU4MCstMC4wMzIyICAgICAgICAgIG1pZ2h0IGJlIDEuMDE1NXgg
ZmFzdGVyCiAgIHB1dC1ieS1pZC1yZXBsYWNlLWFuZC10cmFuc2l0aW9uICAgICAgICAgICAgICAg
ICAgIDkuNTU2MCstMS4zNzkwICAgICA/ICAgICAgOS44NjE3Ky0wLjkzOTkgICAgICAgID8gbWln
aHQgYmUgMS4wMzIweCBzbG93ZXIKICAgbmVnYXRpdmUtemVyby1kaXZpZGUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC41ODQyKy0wLjAyNDggICAgID8gICAgICAwLjY0NDErLTAuMTI3
NyAgICAgICAgPyBtaWdodCBiZSAxLjEwMjd4IHNsb3dlcgogICBpbmZlci1jbG9zdXJlLWNvbnN0
LXRoZW4tcmVlbnRlci1uby1pbmxpbmUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1Mi42Njc0Ky05LjQzMjggICAgICAgICAgIDUwLjE2MDgr
LTEuNTIxNiAgICAgICAgICBtaWdodCBiZSAxLjA1MDB4IGZhc3RlcgogICBzaW1wbGUtcmVnZXhw
LXRlc3QtZm9sZGluZy1mYWlsLXdpdGgtaG9pc3RlZC1yZWdleHAgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy4xNDc0Ky0xLjExMzUgICAg
ID8gICAgIDEzLjI2NjUrLTEuMzQ4NSAgICAgICAgPwogICBpbmxpbmUtYXJndW1lbnRzLWFjY2Vz
cyAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjUwNzQrLTEuMjI0MCAgICAgICAgICAgIDUu
OTAyNystMS4yMDA2ICAgICAgICAgIG1pZ2h0IGJlIDEuMTAyNHggZmFzdGVyCiAgIGRlbGF5LXRl
YXItb2ZmLWFyZ3VtZW50cy1zdHJpY3Rtb2RlICAgICAgICAgICAgICAgMTAuNjMxNistMS4zMTY3
ICAgICAgICAgICAxMC4xNDQ0Ky0xLjM1MDUgICAgICAgICAgbWlnaHQgYmUgMS4wNDgweCBmYXN0
ZXIKICAgSW50MzJBcnJheS1JbnQ4QXJyYXktdmlldy1hbGxvYyAgICAgICAgICAgICAgICAgICAx
Mi43NDkwKy0xLjE3MjUgICAgICAgICAgIDEyLjE4NzUrLTAuODg1OCAgICAgICAgICBtaWdodCBi
ZSAxLjA0NjF4IGZhc3RlcgogICBwcm90by1nZXR0ZXItYWNjZXNzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDE0LjgwMTUrLTAuNzc3NCAgICAgPyAgICAgMTUuMjMzMSstMC41NzAwICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDI5Mnggc2xvd2VyCiAgIHBvbHltb3JwaGljLXB1dC1ieS12YWwt
d2l0aC1zeW1ib2wgICAgICAgICAgICAgICAgMzIuNzgwOSstMC40MjQyICAgICAgICAgICAzMi41
NTMzKy0wLjk5NDYgICAgICAgIAogICBzdHJpbmctbG9uZy1pZGVudC1lcXVhbGl0eSAgICAgICAg
ICAgICAgICAgICAgICAgIDI1LjA5NjQrLTAuNTg5MiAgICAgPyAgICAgMjcuMzA2MSstMi4xNDE3
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDg4MHggc2xvd2VyCiAgIHJlZ2V4cC1leGVjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTMuNjQ4MystMS4yOTY1ICAgICA/ICAgICA1
NS43NzY1Ky0yLjY5MjcgICAgICAgID8gbWlnaHQgYmUgMS4wMzk3eCBzbG93ZXIKICAgZm9sZC1t
dWx0aS1wdXQtYnktb2Zmc2V0LXRvLXBvbHktcHV0LWJ5LW9mZnNldCAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjM4MzIrLTEuMjEyMCAg
ICAgICAgICAgIDcuMzY1MCstMC44NzYwICAgICAgICAKICAgY3NlLW5ldy1hcnJheSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy45MjMxKy0wLjMyNjQgICAgICAgICAgICAz
LjY4NjArLTAuMTQxMCAgICAgICAgICBtaWdodCBiZSAxLjA2NDN4IGZhc3RlcgogICBtYXAta2V5
LXdlbGwtdHlwZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA4LjcxNDYrLTIuODgy
NSAgICAgPyAgICAxMTAuOTM5MystMy42Njk0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIwNXggc2xv
d2VyCiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctYmltb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1l
bGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNC42ODA1Ky0wLjM3MjEgICAgICAgICAgICA0LjM1NzArLTAuMjE2
MSAgICAgICAgICBtaWdodCBiZSAxLjA3NDJ4IGZhc3RlcgogICBpcy1vYmplY3Qtb3ItbnVsbC1m
b2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjgxODErLTAuNTc2NCAgICAgICAgICAg
IDMuNjQyOCstMC4yMTQ5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ4MXggZmFzdGVyCiAgIGFycmF5
LWFjY2Vzcy1wb2x5bW9ycGhpYy1zdHJ1Y3R1cmUgICAgICAgICAgICAgICAgIDYuMTkzNCstMS4w
NTAyICAgICAgICAgICAgNi4wNjYxKy0xLjQwNTIgICAgICAgICAgbWlnaHQgYmUgMS4wMjEweCBm
YXN0ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1iaW1vcnBoaWMtY2hlY2stc3RydWN0dXJl
LWVsaW1pbmF0aW9uLXNpbXBsZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA0LjgyMDgrLTAuMTM1NCAgICAgICAgICAgIDQuNTQ0MSstMC4z
NjQzICAgICAgICAgIG1pZ2h0IGJlIDEuMDYwOXggZmFzdGVyCiAgIGdjc2UtcG9seS1nZXQtbGVz
cy1vYnZpb3VzICAgICAgICAgICAgICAgICAgICAgICAgMjAuOTc2MCstMS4yMzA3ICAgICA/ICAg
ICAyMS4yNjkxKy0xLjQwMzAgICAgICAgID8gbWlnaHQgYmUgMS4wMTQweCBzbG93ZXIKICAgYmln
c3dpdGNoLWluZGlyZWN0LXN5bWJvbC1vci11bmRlZmluZWQgICAgICAgICAgICA3OS43NjE4Ky0x
LjMwMTIgICAgIF4gICAgIDQ0LjU0NTQrLTEuNjgyOSAgICAgICAgXiBkZWZpbml0ZWx5IDEuNzkw
NnggZmFzdGVyCiAgIG9iamVjdC14b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDcuNDk0MCstMC42NDAyICAgICAgICAgICAgNy4zMjg2Ky0wLjczOTcgICAgICAgICAg
bWlnaHQgYmUgMS4wMjI2eCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0czIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC41ODQxKy0wLjAzOTIgICAgID8gICAgICAwLjU4NjkrLTAuMDM4
MyAgICAgICAgPwogICBiaWctaW50LW11bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA1LjY3NDArLTEuMjI3MyAgICAgICAgICAgIDUuMTE1NCstMC4zOTU4ICAgICAgICAg
IG1pZ2h0IGJlIDEuMTA5MnggZmFzdGVyCiAgIGlzLXN0cmluZy1mb2xkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDMuNDc2MSstMC4xODcwICAgICA/ICAgICAgMy40ODA4Ky0w
LjI5MzkgICAgICAgID8KICAgbWF0aC1yYW5kb20gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxOS42MzA3Ky0wLjkwNTEgICAgICAgICAgIDE5LjU0MzQrLTEuNDA3OSAgICAg
ICAgCiAgIGlzLW9iamVjdC1vci1udWxsLWZvbGQtdHJpY2t5ICAgICAgICAgICAgICAgICAgICAg
IDUuNDMzNistMC4zODQ4ICAgICA/ICAgICAgNS42Mjk4Ky0wLjI1MzkgICAgICAgID8gbWlnaHQg
YmUgMS4wMzYxeCBzbG93ZXIKICAgcmVnaXN0ZXItcHJlc3N1cmUtZnJvbS1vc3IgICAgICAgICAg
ICAgICAgICAgICAgICAyMC4xMTY4Ky0xLjI0MTIgICAgID8gICAgIDIwLjM0ODgrLTEuNjM3MCAg
ICAgICAgPyBtaWdodCBiZSAxLjAxMTV4IHNsb3dlcgogICBpbmZlci1vbmUtdGltZS1jbG9zdXJl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjA0ODArLTAuNjI3NCAgICAgPyAgICAgIDku
MTA4MistMC43NTIzICAgICAgICA/CiAgIGxpY20tZHJhZ29ucy1vdXQtb2YtYm91bmRzICAgICAg
ICAgICAgICAgICAgICAgICAgNDUuNTE4NystMS4xNzE0ICAgICAgICAgICA0NS4zMzk5Ky0yLjEz
NzUgICAgICAgIAogICBzcGFyc2Utc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDc2Ljc4MDYrLTguNjg5NiAgICAgICAgICAgNzQuMTA0MistMS43ODE3ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDM2MXggZmFzdGVyCiAgIHN0cmNhdC1sZW5ndGgtY29uc3QgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDcuMTMyOCstMC42MjA1ICAgICAgICAgICAgNy4wNTQ1Ky0w
LjQ0MjcgICAgICAgICAgbWlnaHQgYmUgMS4wMTExeCBmYXN0ZXIKICAgc2ltcGxlLXJlZ2V4cC10
ZXN0LWZvbGRpbmcgICAgICAgICAgICAgICAgICAgICAgICAyMi42NTQwKy0wLjQ5NDIgICAgID8g
ICAgIDIzLjE4MjErLTEuMzc2NSAgICAgICAgPyBtaWdodCBiZSAxLjAyMzN4IHNsb3dlcgogICBu
dW1iZXItdG8tc3RyaW5nLXdpdGgtYWRkICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjE1Njkr
LTAuMzYyOCAgICAgPyAgICAgMTIuMDMzNSstMy44OTMwICAgICAgICA/IG1pZ2h0IGJlIDEuMTg0
OHggc2xvd2VyCiAgIHJhcmUtb3NyLWV4aXQtb24tbG9jYWwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTguMDEwNystMC44MTcxICAgICA/ICAgICAxOS4xMzA1Ky0yLjc2OTcgICAgICAgID8g
bWlnaHQgYmUgMS4wNjIyeCBzbG93ZXIKICAgb2JqZWN0LXRlc3QgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMy44MDQyKy0wLjE2ODMgICAgID8gICAgICA0LjI0MTArLTAu
NTE1MCAgICAgICAgPyBtaWdodCBiZSAxLjExNDh4IHNsb3dlcgogICBpbnQ1Mi1iYWNrLWFuZC1m
b3J0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjYxMDIrLTAuNzI2NSAgICAgICAg
ICAgMTEuNTk1MCstMS4zMDY5ICAgICAgICAKICAgZ2V0LWJ5LXZhbC13aXRoLXN0cmluZy1jaGVj
ay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOC45MDYxKy0xLjE3NTMgICAgICAgICAgICA4LjE5NjYr
LTAuNzA5OCAgICAgICAgICBtaWdodCBiZSAxLjA4NjZ4IGZhc3RlcgogICBpbi1vbmUtY2FzZS10
cnVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjU2MzMrLTAuNzIwNCAgICAg
PyAgICAgMTIuODc1MCstMC43ODUwICAgICAgICA/IG1pZ2h0IGJlIDEuMDI0OHggc2xvd2VyCiAg
IHN0cmluZy1jb25jYXQtcGFpci1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNTgx
NystMC43MjIxICAgICAgICAgICAgMy4xNTc2Ky0wLjIyMzIgICAgICAgICAgbWlnaHQgYmUgMS4x
MzQzeCBmYXN0ZXIKICAgYXNtanNfYm9vbF9idWcgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOC44ODc3Ky0wLjgyMzQgICAgICAgICAgICA4LjM5MjIrLTAuNzczMyAgICAgICAg
ICBtaWdodCBiZSAxLjA1OTB4IGZhc3RlcgogICBwbHVzLWJvb2xlYW4tZG91YmxlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAzLjU4ODArLTAuMzExMiAgICAgPyAgICAgIDQuMDg4Myst
MC44MTAwICAgICAgICA/IG1pZ2h0IGJlIDEuMTM5NHggc2xvd2VyCiAgIGFycmF5LXdpdGgtaW50
MzItYWRkLXN1YiAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuODY0MSstMC43MDIzICAgICAg
ICAgICAgNy43NzIwKy0wLjYyNTIgICAgICAgICAgbWlnaHQgYmUgMS4wMTE5eCBmYXN0ZXIKICAg
c3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cyAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjc3ODgrLTAu
MjM0MiAgICAgICAgICAgIDEuNzQ1NSstMC4yMDQ4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE5MHgg
ZmFzdGVyCiAgIGxhcmdlLW1hcC1pdGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNDEuNzY5NSstMC44MTUxICAgICA/ICAgICA0NS4zNjM2Ky04Ljg3MjAgICAgICAgID8gbWln
aHQgYmUgMS4wODYweCBzbG93ZXIKICAgb2JqZWN0LXJzaGlmdCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOC4zMjUzKy0xLjc2NzEgICAgICAgICAgICA3LjM2NzcrLTAuNTY5
MiAgICAgICAgICBtaWdodCBiZSAxLjEzMDB4IGZhc3RlcgogICBnZXR0ZXItcmljaGFyZHMtdHJ5
LWNhdGNoICAgICAgICAgICAgICAgICAgICAgICAgMTEwLjc4NDYrLTIuMzU4OCAgICAgISAgICAx
MTguNTU1NCstMy4yMjIyICAgICAgICAhIGRlZmluaXRlbHkgMS4wNzAxeCBzbG93ZXIKICAgSGFz
aE1hcC1wdXQtZ2V0LWl0ZXJhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAzNS4zODY4Ky0z
LjI3NzQgICAgICAgICAgIDM0LjM5OTUrLTEuMjg5NyAgICAgICAgICBtaWdodCBiZSAxLjAyODd4
IGZhc3RlcgogICBtaW51cy1ib29sZWFuLWRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzLjQyNzMrLTAuMTc3NCAgICAgPyAgICAgIDMuNTg4MistMC4yMTI4ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDQ3MHggc2xvd2VyCgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDExLjIyMTcrLTAuMDQ5OSAgICAgISAgICAgMTEuMzU0MystMC4w
NDM3ICAgICAgICAhIGRlZmluaXRlbHkgMS4wMTE4eCBzbG93ZXIKCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAgICAgICAgICAg
ICAgICAgICAgICBuZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkFz
bUJlbmNoOgogICBGbG9hdE1NLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgODY5Ljc3MTgrLTUuNzU5NiAgICAgICAgICA4NjUuOTM5MistMTAuNDE0NiAgICAgICAKICAg
ZHJ5LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU2NC4wNDEx
Ky02LjA0MjcgICAgID8gICAgNTY0LjY2OTArLTEwLjA4MzYgICAgICAgPwogICBjcmF5LmMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTIzLjI2NTQrLTYuMzMxNyAg
ICAgICAgICA1MjIuODA5MistMi44NzYxICAgICAgICAKICAgc3RlcGFub3ZfY29udGFpbmVyLmNw
cCAgICAgICAgICAgICAgICAgICAgICAgICAgNTE1Mi4xMTMzKy0xMjMuMzkxOSAgID8gICA1NjE0
LjE1MjcrLTEyMjguNDQwOCAgICAgPyBtaWdodCBiZSAxLjA4OTd4IHNsb3dlcgogICBuLWJvZHku
YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDY5LjIwMjgrLTQuMzQ0
NiAgICAgPyAgIDEwNzEuMDMyOSstOC4zNTg4ICAgICAgICA/CiAgIGdjYy1sb29wcy5jcHAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ5NjYuNTc4NistNjEuNjI5NiAgICAgICAg
NDkwOC4wNTEzKy0zMC44MTQ2ICAgICAgICAgbWlnaHQgYmUgMS4wMTE5eCBmYXN0ZXIKICAgUXVp
Y2tzb3J0LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUxNy4xNzE4Ky01
LjI5NjQgICAgID8gICAgNTUwLjE1ODArLTU4LjYxMjkgICAgICAgPyBtaWdodCBiZSAxLjA2Mzh4
IHNsb3dlcgogICBUb3dlcnMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMzMxLjUzNzUrLTMuMTc3NSAgICAgPyAgICAzNzEuMjMxOCstOTAuNzgyMCAgICAgICA/IG1p
Z2h0IGJlIDEuMTE5N3ggc2xvd2VyCiAgIGJpZ2ZpYi5jcHAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA2MzYuNjAxMystOS42MTQxICAgICAgICAgIDYzNS4zODg5Ky0zLjY2
ODkgICAgICAgIAoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDk3MC44MTIzKy0zLjkzMjggICAgID8gICAgOTkxLjgxNzYrLTI2LjExMTQgICAgICAg
PyBtaWdodCBiZSAxLjAyMTZ4IHNsb3dlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlICAgICAgICAgICAgICAgICAgICAgIG5l
dyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKQ29tcHJlc3Npb25CZW5j
aDoKICAgaHVmZm1hbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAz
NS4yODA5Ky00LjU1MjkgICAgICAgICAgIDM0LjA5MTcrLTMuNzE5OCAgICAgICAgICBtaWdodCBi
ZSAxLjAzNDl4IGZhc3RlcgogICBhcml0aG1ldGljLXNpbXBsZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMzM5LjA1NTUrLTMuNTM2MiAgICAgPyAgICAzNDAuNzE0NSstMy4zNDU3ICAg
ICAgICA/CiAgIGFyaXRobWV0aWMtcHJlY2lzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzMjkuNjY2OCstMS44OTI1ICAgICA/ICAgIDMzNi43Njk4Ky01Ljg3NDYgICAgICAgID8gbWln
aHQgYmUgMS4wMjE1eCBzbG93ZXIKICAgYXJpdGhtZXRpYy1jb21wbGV4LXByZWNpc2UgICAgICAg
ICAgICAgICAgICAgICAgIDMyNy4zMDMwKy02LjM0OTMgICAgID8gICAgMzI4LjQ5ODkrLTQuMzQy
OSAgICAgICAgPwogICBhcml0aG1ldGljLXByZWNpc2Utb3JkZXItMCAgICAgICAgICAgICAgICAg
ICAgICAgMzQ2LjI4MTIrLTMuODgzMiAgICAgPyAgICAzNDYuNTg4OSstMy4xNzAwICAgICAgICA/
CiAgIGFyaXRobWV0aWMtcHJlY2lzZS1vcmRlci0xICAgICAgICAgICAgICAgICAgICAgICA0MDku
MTU3NystNS4yMDE1ICAgICAgICAgIDQwOC4xODkxKy00LjA1ODIgICAgICAgIAogICBhcml0aG1l
dGljLXByZWNpc2Utb3JkZXItMiAgICAgICAgICAgICAgICAgICAgICAgNTU1LjEzNzMrLTE3My4y
OTI0ICAgICAgICA0NzUuODE3OCstNC42NjUxICAgICAgICAgIG1pZ2h0IGJlIDEuMTY2N3ggZmFz
dGVyCiAgIGFyaXRobWV0aWMtc2ltcGxlLW9yZGVyLTEgICAgICAgICAgICAgICAgICAgICAgICA0
MTMuMDI0MistNS4xMzM3ICAgICAgICAgIDQwNS43MjExKy05Ljk3NDggICAgICAgICAgbWlnaHQg
YmUgMS4wMTgweCBmYXN0ZXIKICAgYXJpdGhtZXRpYy1zaW1wbGUtb3JkZXItMiAgICAgICAgICAg
ICAgICAgICAgICAgIDQ4Mi43NTc2Ky02LjA2NTAgICAgID8gICAgNDgzLjQ1MTcrLTQuOTAxNSAg
ICAgICAgPwogICBsei1zdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMzQ4LjUwMTArLTcuNjgwOCAgICAgICAgICAzNDcuMzY1MistOS40MzE2ICAgICAgICAKCiAg
IDxnZW9tZXRyaWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMDMuOTYz
MystOS4wNzE3ICAgICAgICAgIDI5OS43MjYxKy0zLjM5NTQgICAgICAgICAgbWlnaHQgYmUgMS4w
MTQxeCBmYXN0ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYmFzZSAgICAgICAgICAgICAgICAgICAgICBuZXcgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgClNpeFNwZWVkOgogICB0ZW1wbGF0ZV9zdHJpbmcu
ZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3NTI1LjIyNzMrLTI0LjgyNjcgICAgPyAg
IDc1OTEuNzE4NystMjE0LjAwOTQgICAgICA/CiAgIHRlbXBsYXRlX3N0cmluZy5lczYgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDQ5MzQuMjM3NistMTMzLjg2ODIgICA/ICAgNTA1Ni40NDk4
Ky0xMTkuMTc3MiAgICAgID8gbWlnaHQgYmUgMS4wMjQ4eCBzbG93ZXIKICAgZGVmYXVsdHMuZXM1
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIxNy42MDA5Ky0xMC43MTMzICAg
ID8gICAxMjM3Ljc0MzcrLTEwLjA0OTUgICAgICAgPyBtaWdodCBiZSAxLjAxNjV4IHNsb3dlcgog
ICBkZWZhdWx0cy5lczYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDMzLjEz
NTMrLTE0Ljc2MTcgICAgPyAgICA0MzkuNDY2NistMjkuNTA1OCAgICAgICA/IG1pZ2h0IGJlIDEu
MDE0Nnggc2xvd2VyCiAgIG1hcC1zZXQtbG9va3VwLmVzNSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgODMuNzAzMSstMi42MDgxICAgICAgICAgICA4Mi4wNjg5Ky0xLjQ1NTkgICAgICAg
ICAgbWlnaHQgYmUgMS4wMTk5eCBmYXN0ZXIKICAgbWFwLXNldC1sb29rdXAuZXM2ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMS45NDkyKy0wLjQyOTggICAgICAgICAgICAxLjc5ODcr
LTAuMzMzNCAgICAgICAgICBtaWdodCBiZSAxLjA4Mzd4IGZhc3RlcgogICBzcHJlYWQuZXM1ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3Ljg4OTArLTAuNTY3MSAgICAg
ICAgICAgMTcuODE2NCstMC44OTEwICAgICAgICAKICAgc3ByZWFkLmVzNiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA1OC40ODUxKy0xLjE1NzYgICAgID8gICAgIDY2Ljc1
NDkrLTE1LjI3OTAgICAgICAgPyBtaWdodCBiZSAxLjE0MTR4IHNsb3dlcgogICBvYmplY3QtYXNz
aWduLmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzg2LjgwNjgrLTQuMzQ4NCAg
ICAgPyAgICAzODkuMDI1NCstMy4xMDcwICAgICAgICA/CiAgIG9iamVjdC1hc3NpZ24uZXM2ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMjUuMjExOCstNS41MzU1ICAgICA/ICAgIDMy
Ni4zMzAwKy0zLjMyODUgICAgICAgID8KICAgc3ByZWFkLWxpdGVyYWwuZXM1ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDEwOC4zNjY4Ky0wLjg3OTMgICAgID8gICAgMTEwLjQzNDQrLTEu
MjMyMSAgICAgICAgPyBtaWdodCBiZSAxLjAxOTF4IHNsb3dlcgogICBzcHJlYWQtbGl0ZXJhbC5l
czYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMzLjQzNTkrLTAuODA3NCAgICAgPyAg
ICAgMzQuMTE1NCstMS4zMDU0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIwM3ggc2xvd2VyCiAgIG1h
cC1zZXQuZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIuMzk1MCst
Ni40Mzk4ICAgICBeICAgICAyNS41NTQ1Ky0wLjM5MDYgICAgICAgIF4gZGVmaW5pdGVseSAxLjI2
Nzd4IGZhc3RlcgogICBtYXAtc2V0LmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMjA2LjAzOTcrLTMuMDc5MyAgICAgPyAgICAyMDguMzM1NystNC40NTg0ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDExMXggc2xvd2VyCiAgIGRlc3RydWN0dXJpbmctc2ltcGxlLmVzNSAgICAg
ICAgICAgICAgICAgICAgICAgICAgODQuODgyMystNC43NTAxICAgICAgICAgICA4NC4xMjc3Ky00
LjQ2MDkgICAgICAgIAogICBkZXN0cnVjdHVyaW5nLXNpbXBsZS5lczYgICAgICAgICAgICAgICAg
ICAgICAgICAgIDgyLjMzNjArLTguMDk2NiAgICAgPyAgICAgODIuNTczOCstMy41Nzg4ICAgICAg
ICA/CiAgIHN1cGVyLmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MTMuMTQ0NystMC45ODAwICAgICA/ICAgICAxNC4zMzk4Ky0wLjcyMDcgICAgICAgID8gbWlnaHQg
YmUgMS4wOTA5eCBzbG93ZXIKICAgc3VwZXIuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEwMS4wMzIyKy0xLjQzOTAgICAgID8gICAgMTAxLjc4MzkrLTIuMjgyMSAg
ICAgICAgPwogICBmb3Itb2Ytb2JqZWN0LmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDU5Ljg5MjArLTIuMTY1OCAgICAgICAgICAgNTguNTc2NSstMS42MzY4ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDIyNXggZmFzdGVyCiAgIGZvci1vZi1vYmplY3QuZXM2ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyNzYuMjE4NCstNC42MTQxICAgICA/ICAgIDI3OS4zMzg0Ky0yLjM0
NDggICAgICAgID8gbWlnaHQgYmUgMS4wMTEzeCBzbG93ZXIKICAgcmVzdC5lczUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0OC44MjE2Ky0xLjI4NTggICAgID8gICAg
IDUwLjM4NDkrLTEuMzAyOCAgICAgICAgPyBtaWdodCBiZSAxLjAzMjB4IHNsb3dlcgogICByZXN0
LmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjg3MzQrLTAu
Mzc1MCAgICAgICAgICAgIDMuNjk0MSstMC4zNjg3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ4Nngg
ZmFzdGVyCiAgIHJlZ2V4LXUuZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNTQuODQ4NSstMy4xNTQ2ICAgICA/ICAgICA1NS44Njc3Ky0yLjgxMzAgICAgICAgID8gbWln
aHQgYmUgMS4wMTg2eCBzbG93ZXIKICAgcmVnZXgtdS5lczYgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDExMS4wMTQxKy00Mi4wNTUzICAgICAgICAgIDk0LjAxNjgrLTEuODY3
MiAgICAgICAgICBtaWdodCBiZSAxLjE4MDh4IGZhc3RlcgogICBhcnJvdy5lczUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg4LjExMjgrLTQuMTc3MSAgICAgPyAgICAg
ODguMzIyNistNC4wODkyICAgICAgICA/CiAgIGFycm93LmVzNiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgODguODAxMystMi42MTc5ICAgICAgICAgICA4My45MzE5Ky0z
Ljg4MDYgICAgICAgICAgbWlnaHQgYmUgMS4wNTgweCBmYXN0ZXIKICAgYmluZGluZ3MtY29tcG91
bmQuZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4NC4wNTY0Ky0zLjU2MDkgICAgICAg
ICAgIDc1LjUyMjQrLTUuNDUzMiAgICAgICAgICBtaWdodCBiZSAxLjExMzB4IGZhc3RlcgogICBi
aW5kaW5ncy1jb21wb3VuZC5lczYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgwLjkwMzIr
LTYuMTM0MSAgICAgPyAgICAgODEuNjYwNistNy4zMjEzICAgICAgICA/CiAgIGNsYXNzZXMuZXM1
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTQuNjcyNCstMC45ODIyICAg
ICAgICAgICA5MS43MTUyKy0yLjQwMzUgICAgICAgICAgbWlnaHQgYmUgMS4wMzIyeCBmYXN0ZXIK
ICAgY2xhc3Nlcy5lczYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5Ny4w
OTU0Ky01LjUwNzYgICAgICAgICAgIDkwLjQ5MTQrLTEuODAzNSAgICAgICAgICBtaWdodCBiZSAx
LjA3MzB4IGZhc3RlcgogICB0ZW1wbGF0ZV9zdHJpbmdfdGFnLmVzNSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDgyLjUyNTYrLTEuODM4OSAgICAgPyAgICAgODQuNjc1NCstNS45ODY1ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDI2MXggc2xvd2VyCiAgIHRlbXBsYXRlX3N0cmluZ190YWcuZXM2ICAg
ICAgICAgICAgICAgICAgICAgICAgICAyNDEuMTE5NSstMy44ODU5ICAgICA/ICAgIDI3NC40NDAx
Ky03OC41MjE0ICAgICAgID8gbWlnaHQgYmUgMS4xMzgyeCBzbG93ZXIKICAgbWFwLXN0cmluZy5l
czUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3MC4wODE3Ky00My43MzM5ICAg
ICAgICAgMTYyLjIzNjIrLTEyLjE4NjMgICAgICAgICBtaWdodCBiZSAxLjA0ODR4IGZhc3Rlcgog
ICBtYXAtc3RyaW5nLmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjMzLjM0
NzcrLTE0Ljk4MTUgICAgICAgICA2MTUuMDA4MCstMTQuMTA3NCAgICAgICAgIG1pZ2h0IGJlIDEu
MDI5OHggZmFzdGVyCiAgIGFycm93LWRlY2xhcmUuZXM1ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxMzEuNjI0MCstNC4wMTM0ICAgICAgICAgIDEyNS4zODI5Ky02LjUyNDQgICAgICAg
ICAgbWlnaHQgYmUgMS4wNDk4eCBmYXN0ZXIKICAgYXJyb3ctZGVjbGFyZS5lczYgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEyNy4xMzI3Ky0zLjUwMDMgICAgID8gICAgMTMyLjMzNTgr
LTIuODYyMyAgICAgICAgPyBtaWdodCBiZSAxLjA0MDl4IHNsb3dlcgogICBzcHJlYWQtZ2VuZXJh
dG9yLmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA3LjU2ODQrLTEuMzQ3MCAgICAg
PyAgICAxMDkuOTEwMystMi41MDY3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIxOHggc2xvd2VyCiAg
IHNwcmVhZC1nZW5lcmF0b3IuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyODIuNTQ0
OSstNC42ODgyICAgICA/ICAgIDMzNy4zMjU3Ky0xMjkuNzc2MSAgICAgID8gbWlnaHQgYmUgMS4x
OTM5eCBzbG93ZXIKICAgb2JqZWN0LWxpdGVyYWwtZXh0LmVzNSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyNC4zODcxKy0wLjQzMTMgICAgID8gICAgIDI0LjQ1MTErLTAuNTExMyAgICAgICAg
PwogICBvYmplY3QtbGl0ZXJhbC1leHQuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5
LjUzNzYrLTEuMTk5NyAgICAgICAgICAgMjguMjk5MSstMC41OTc3ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDQzOHggZmFzdGVyCiAgIGdlbmVyYXRvci5lczUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxNDguNDIxMSstMi4zNzcwICAgICAgICAgIDE0Ny45NDcxKy00Ljc0NzIgICAg
ICAgIAogICBnZW5lcmF0b3IuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MjgwLjU1ODErLTIuNDc3NSAgICAgPyAgICAyODIuNTY5MCstNS42NDkzICAgICAgICA/CiAgIGFy
cm93LWFyZ3MuZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODUuODgxNCst
NS41NTYyICAgICAgICAgICA4Mi41NzEzKy0zLjQ4NTcgICAgICAgICAgbWlnaHQgYmUgMS4wNDAx
eCBmYXN0ZXIKICAgYXJyb3ctYXJncy5lczYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA4NC4xMDU5Ky0zLjExMTEgICAgID8gICAgIDg1Ljc4OTUrLTIuODg1OCAgICAgICAgPyBt
aWdodCBiZSAxLjAyMDB4IHNsb3dlcgogICBmb3Itb2YtYXJyYXkuZXM1ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMjY5Ljc2MzMrLTcxLjI2NjAgICAgICAgICAyNDQuNzM3NistNC42
MDMyICAgICAgICAgIG1pZ2h0IGJlIDEuMTAyM3ggZmFzdGVyCiAgIGZvci1vZi1hcnJheS5lczYg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNzQuNzg5OCstMi4wMzg3ICAgICAgICAg
IDI3My41OTYyKy00LjY0OTQgICAgICAgIAogICBiaW5kaW5ncy5lczUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDgzLjQyMDMrLTUuODU4OCAgICAgICAgICAgNzkuMDU0MCst
NS4xMzQ0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDU1MnggZmFzdGVyCiAgIGJpbmRpbmdzLmVzNiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODMuNTAzNCstMi45NTEwICAgICA/
ICAgICA4NC4zMjE1Ky00LjgyMjQgICAgICAgID8KICAgZGVzdHJ1Y3R1cmluZy5lczUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA4NS43NjIzKy0yLjQ4NTIgICAgID8gICAgIDkyLjEx
MTkrLTUuNTI0OSAgICAgICAgPyBtaWdodCBiZSAxLjA3NDB4IHNsb3dlcgogICBkZXN0cnVjdHVy
aW5nLmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk4LjQ4MTgrLTcuODc4MSAg
ICAgICAgICAgOTUuMjE2MistOC44MjIyICAgICAgICAgIG1pZ2h0IGJlIDEuMDM0M3ggZmFzdGVy
CiAgIG1hcC1zZXQtb2JqZWN0LmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDMu
MzY0OSstMS41NzUzICAgICA/ICAgICA0My42Mzc1Ky0xLjMzNzcgICAgICAgID8KICAgbWFwLXNl
dC1vYmplY3QuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxNC4wNTg3Ky0zLjA4
ODEgICAgICAgICAgMjEzLjQ5MTgrLTMuMzg0NyAgICAgICAgCgogICA8Z2VvbWV0cmljPiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA4LjQ0MTYrLTEuMzQ2OSAgICAgICAg
ICAxMDcuODIwNSstMC45OTUyICAgICAgICAgIG1pZ2h0IGJlIDEuMDA1OHggZmFzdGVyCgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJh
c2UgICAgICAgICAgICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIApHZW9tZWFuIG9mIHByZWZlcnJlZCBtZWFuczoKICAgPHNjYWxlZC1yZXN1bHQ+
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2OS43ODc2Ky0wLjQ3MjMgICAgID8g
ICAgIDY5Ljg4NzMrLTAuNDI0OSAgICAgICAgPyBtaWdodCBiZSAxLjAwMTR4IHNsb3dlcgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>319142</attachid>
            <date>2017-08-26 17:20:33 -0700</date>
            <delta_ts>2017-09-06 16:14:09 -0700</delta_ts>
            <desc>x86_64 benchmark results 3: no ethernet, no wifi (as quiet as can be).</desc>
            <filename>bench-x86_64-result3.txt</filename>
            <type>text/plain</type>
            <size>99183</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">JCBzbGVlcCAxMCAmJiAuLi93czIvSW50ZXJuYWwvVG9vbHMvU2NyaXB0cy9ydW4tanNjLWJlbmNo
bWFya3MgLS1vdXRlciA4IGJhc2U6YmFzZS9qc2MgbmV3Om5ldy9qc2MKV2FybmluZzogY291bGQg
bm90IGlkZW50aWZ5IGNoZWNrb3V0IGxvY2F0aW9uIGZvciBiYXNlCldhcm5pbmc6IGNvdWxkIG5v
dCBpZGVudGlmeSBjaGVja291dCBsb2NhdGlvbiBmb3IgbmV3Cldhcm5pbmc6IHJlZnVzaW5nIHRv
IHJ1biBKU0JlbmNoIGJlY2F1c2Ugbm90IGFsbCBWTXMgYXJlIER1bXBSZW5kZXJUcmVlIG9yIFdl
YktpdFRlc3RSdW5uZXIuCldhcm5pbmc6IHJlZnVzaW5nIHRvIHJ1biBEU1BKUyBiZWNhdXNlIG5v
dCBhbGwgVk1zIGFyZSBEdW1wUmVuZGVyVHJlZSBvciBXZWJLaXRUZXN0UnVubmVyLgpHZW5lcmF0
aW5nIGJlbmNobWFyayByZXBvcnQgYXQgL1ZvbHVtZXMvRGF0YS9iZW5jaC9iYXNlX25ld19TdW5T
cGlkZXJMb25nU3BpZGVyVjhTcGlkZXJPY3RhbmVLcmFrZW5NaWNyb2JlbmNobWFya3NBc21CZW5j
aENvbXByZXNzaW9uQmVuY2hTaXhTcGVlZF9DaHJvbm9uXzIwMTcwODI2XzE3MThfcmVwb3J0LnR4
dApBbmQgcmF3IGRhdGEgYXQgL1ZvbHVtZXMvRGF0YS9iZW5jaC9iYXNlX25ld19TdW5TcGlkZXJM
b25nU3BpZGVyVjhTcGlkZXJPY3RhbmVLcmFrZW5NaWNyb2JlbmNobWFya3NBc21CZW5jaENvbXBy
ZXNzaW9uQmVuY2hTaXhTcGVlZF9DaHJvbm9uXzIwMTcwODI2XzE3MTguanNvbgoKQmVuY2htYXJr
IHJlcG9ydCBmb3IgU3VuU3BpZGVyLCBMb25nU3BpZGVyLCBWOFNwaWRlciwgT2N0YW5lLCBLcmFr
ZW4sIE1pY3JvYmVuY2htYXJrcywgQXNtQmVuY2gsIENvbXByZXNzaW9uQmVuY2gsIGFuZCBTaXhT
cGVlZCBvbiBDaHJvbm9uIChNYWNCb29rUHJvMTEsMSkuCgpWTXMgdGVzdGVkOgoiYmFzZSIgYXQg
L1ZvbHVtZXMvRGF0YS9iZW5jaC9iYXNlL2pzYwoibmV3IiBhdCAvVm9sdW1lcy9EYXRhL2JlbmNo
L25ldy9qc2MKCkNvbGxlY3RlZCA4IHNhbXBsZXMgcGVyIGJlbmNobWFyay9WTSwgd2l0aCA4IFZN
IGludm9jYXRpb25zIHBlciBiZW5jaG1hcmsuIEVtaXR0ZWQgYSBjYWxsIHRvIGdjKCkgYmV0d2Vl
biBzYW1wbGUgbWVhc3VyZW1lbnRzLgpVc2VkIDEgYmVuY2htYXJrIGl0ZXJhdGlvbiBwZXIgVk0g
aW52b2NhdGlvbiBmb3Igd2FybS11cC4gVXNlZCB0aGUganNjLXNwZWNpZmljIHByZWNpc2VUaW1l
KCkgZnVuY3Rpb24gdG8gZ2V0IG1pY3Jvc2Vjb25kLWxldmVsCnRpbWluZy4gUmVwb3J0aW5nIGJl
bmNobWFyayBleGVjdXRpb24gdGltZXMgd2l0aCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMgaW4g
bWlsbGlzZWNvbmRzLgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBiYXNlICAgICAgICAgICAgICAgICAgICAgIG5ldyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKU3VuU3BpZGVyOgogICAzZC1jdWJlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjcwMDErLTEuMDc4MiAgICAg
PyAgICAgIDYuOTUwMCstMC45MDQwICAgICAgICA/IG1pZ2h0IGJlIDEuMDM3M3ggc2xvd2VyCiAg
IDNkLW1vcnBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguMDE1
NSstMS4wOTM3ICAgICAgICAgICAgNy41OTQxKy0wLjg1NzkgICAgICAgICAgbWlnaHQgYmUgMS4w
NTU1eCBmYXN0ZXIKICAgM2QtcmF5dHJhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOS4zNDA3Ky0xLjc2NjUgICAgICAgICAgICA3LjkyMzkrLTAuNDQxMyAgICAgICAg
ICBtaWdodCBiZSAxLjE3ODh4IGZhc3RlcgogICBhY2Nlc3MtYmluYXJ5LXRyZWVzICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAzLjQzOTQrLTAuMzk4NSAgICAgPyAgICAgIDMuNDQ3Myst
MC4zNjI2ICAgICAgICA/CiAgIGFjY2Vzcy1mYW5ua3VjaCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDkuODkxOCstMS4wODE3ICAgICA/ICAgICAxMC40Njk0Ky0xLjIxMTQgICAg
ICAgID8gbWlnaHQgYmUgMS4wNTg0eCBzbG93ZXIKICAgYWNjZXNzLW5ib2R5ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMy45NzA5Ky0wLjM4MjIgICAgID8gICAgICA0LjA4
NDgrLTAuMzI2NCAgICAgICAgPyBtaWdodCBiZSAxLjAyODd4IHNsb3dlcgogICBhY2Nlc3MtbnNp
ZXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjU1NjQrLTAuMzE0NCAg
ICAgPyAgICAgIDUuNTg3NCstMi4wMDc0ICAgICAgICA/IG1pZ2h0IGJlIDEuMjI2M3ggc2xvd2Vy
CiAgIGJpdG9wcy0zYml0LWJpdHMtaW4tYnl0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIDEu
NjczMCstMC4wNTYzICAgICA/ICAgICAgMi4wNDEyKy0wLjQ3NTYgICAgICAgID8gbWlnaHQgYmUg
MS4yMjAxeCBzbG93ZXIKICAgYml0b3BzLWJpdHMtaW4tYnl0ZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNC40OTEzKy0wLjU2NDUgICAgID8gICAgICA0LjYxMTQrLTAuNDMzMyAgICAg
ICAgPyBtaWdodCBiZSAxLjAyNjd4IHNsb3dlcgogICBiaXRvcHMtYml0d2lzZS1hbmQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzLjEyNjgrLTAuMjE3OSAgICAgPyAgICAgIDMuMzUx
NystMC40NDI3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDcxOXggc2xvd2VyCiAgIGJpdG9wcy1uc2ll
dmUtYml0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMzM5NSstMC43NjIyICAg
ICAgICAgICAgNi4xODk3Ky0wLjY4OTggICAgICAgICAgbWlnaHQgYmUgMS4wMjQyeCBmYXN0ZXIK
ICAgY29udHJvbGZsb3ctcmVjdXJzaXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4x
NTIzKy0wLjI2OTQgICAgID8gICAgICA0LjQzODIrLTAuNTU0NCAgICAgICAgPyBtaWdodCBiZSAx
LjA2ODl4IHNsb3dlcgogICBjcnlwdG8tYWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA2Ljg5MzcrLTEuMDU2MCAgICAgPyAgICAgIDcuMzYzNistMS4yNDE5ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDY4Mnggc2xvd2VyCiAgIGNyeXB0by1tZDUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDQuMTM0NystMC40MzY1ICAgICA/ICAgICAgNC4yNjc1
Ky0wLjcwODEgICAgICAgID8gbWlnaHQgYmUgMS4wMzIxeCBzbG93ZXIKICAgY3J5cHRvLXNoYTEg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4zNzg1Ky0xLjU1OTcgICAg
ICAgICAgICA0LjQ4MjIrLTAuMzI5NSAgICAgICAgICBtaWdodCBiZSAxLjIwMDB4IGZhc3Rlcgog
ICBkYXRlLWZvcm1hdC10b2Z0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjUx
OTYrLTEuMTE0NSAgICAgICAgICAgMTEuNzE0MystMS4xMDY3ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDY4N3ggZmFzdGVyCiAgIGRhdGUtZm9ybWF0LXhwYXJiICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDkuMjA0MistMi4wNzM1ICAgICAgICAgICAgOS4xMjYxKy0xLjQyMTcgICAgICAg
IAogICBtYXRoLWNvcmRpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
Ljc4MzQrLTAuMzk3OSAgICAgICAgICAgIDQuNjEyOCstMC41OTM2ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDM3MHggZmFzdGVyCiAgIG1hdGgtcGFydGlhbC1zdW1zICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDYuMTcwNystMC41NTc3ICAgICA/ICAgICAgNi45ODUxKy0wLjc3MzggICAg
ICAgID8gbWlnaHQgYmUgMS4xMzIweCBzbG93ZXIKICAgbWF0aC1zcGVjdHJhbC1ub3JtICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4xNDg4Ky0wLjM2NzQgICAgICAgICAgICAzLjAz
MzUrLTAuMjk3MyAgICAgICAgICBtaWdodCBiZSAxLjAzODB4IGZhc3RlcgogICByZWdleHAtZG5h
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjczNTYrLTAuOTE5MyAg
ICAgICAgICAgIDkuNDY2MystMC45OTg0ICAgICAgICAgIG1pZ2h0IGJlIDEuMTM0MXggZmFzdGVy
CiAgIHN0cmluZy1iYXNlNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYu
Nzk3NistMC43NDQ3ICAgICAgICAgICAgNi42ODkzKy0wLjU3MjEgICAgICAgICAgbWlnaHQgYmUg
MS4wMTYyeCBmYXN0ZXIKICAgc3RyaW5nLWZhc3RhICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOC45NzgzKy0xLjEyNzkgICAgID8gICAgICA5LjY4NTgrLTEuNTQ3MyAgICAg
ICAgPyBtaWdodCBiZSAxLjA3ODh4IHNsb3dlcgogICBzdHJpbmctdGFnY2xvdWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEzLjcwNzIrLTEuMjE0NiAgICAgICAgICAgMTMuMDM0
NSstMS45NzEwICAgICAgICAgIG1pZ2h0IGJlIDEuMDUxNnggZmFzdGVyCiAgIHN0cmluZy11bnBh
Y2stY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUuNTY5NystMC45MTE3ICAg
ICA/ICAgICAyNS42MzkzKy0xLjIxNTggICAgICAgID8KICAgc3RyaW5nLXZhbGlkYXRlLWlucHV0
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy44NzM0Ky0xLjE5ODIgICAgICAgICAgICA3
Ljc0OTgrLTEuMjAzMyAgICAgICAgICBtaWdodCBiZSAxLjAxNTl4IGZhc3RlcgoKICAgPGFyaXRo
bWV0aWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy4zNjkwKy0wLjE1
NTQgICAgICAgICAgICA3LjMyODQrLTAuMTcwMiAgICAgICAgICBtaWdodCBiZSAxLjAwNTV4IGZh
c3RlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBiYXNlICAgICAgICAgICAgICAgICAgICAgIG5ldyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKTG9uZ1NwaWRlcjoKICAgM2QtY3ViZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA3OC4zNjcxKy0xMC42NTAyICAgID8gICAxMjM1
LjYzNDYrLTQyMC41MjI2ICAgICAgPyBtaWdodCBiZSAxLjE0NTh4IHNsb3dlcgogICAzZC1tb3Jw
aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODAxLjc2NTIrLTIuMjM1
MSAgICAgPyAgICA4MDcuNTgxNCstNS45ODg4ICAgICAgICA/CiAgIDNkLXJheXRyYWNlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NTQuNTU5MistNC44NzIzICAgICAhICAg
IDY2OS4xODAyKy01LjAxNjMgICAgICAgICEgZGVmaW5pdGVseSAxLjAyMjN4IHNsb3dlcgogICBh
Y2Nlc3MtYmluYXJ5LXRyZWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjc1LjI4NTQr
LTQ3LjMxMjQgICAgICAgIDEyNTkuMzg5NistNi45NzIzICAgICAgICAgIG1pZ2h0IGJlIDEuMDEy
NnggZmFzdGVyCiAgIGFjY2Vzcy1mYW5ua3VjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzNzcuNDQxNSstOS45NDQ5ICAgICA/ICAgIDM3OS4yMDIzKy0xNC41NTQxICAgICAgID8K
ICAgYWNjZXNzLW5ib2R5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcwOS40
NjcwKy01LjMzOTAgICAgID8gICAgNzEwLjk1MDYrLTYuMjI4NCAgICAgICAgPwogICBhY2Nlc3Mt
bnNpZXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTc0LjUzMDgrLTQuNjIx
NyAgICAgICAgICA1NjkuOTE2NistMi41MzYxICAgICAgICAKICAgYml0b3BzLTNiaXQtYml0cy1p
bi1ieXRlICAgICAgICAgICAgICAgICAgICAgICAgICA0NS42NDk3Ky0xLjcwNTMgICAgICAgICAg
IDQ0LjcyODQrLTAuOTAzNSAgICAgICAgICBtaWdodCBiZSAxLjAyMDZ4IGZhc3RlcgogICBiaXRv
cHMtYml0cy1pbi1ieXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI0LjA1NjYrLTMu
NDg4NiAgICAgICAgICAxMjMuMzM4MCstMy4zODI3ICAgICAgICAKICAgYml0b3BzLW5zaWV2ZS1i
aXRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYzMS40MTg1Ky0xMi43NDU4ICAgICAg
ICAgNjI4LjkyMzIrLTcuNzkwOCAgICAgICAgCiAgIGNvbnRyb2xmbG93LXJlY3Vyc2l2ZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1NjAuNjU4OCstMy40NDc1ICAgICAhICAgIDU3NS4xNzk1
Ky0zLjY5MzYgICAgICAgICEgZGVmaW5pdGVseSAxLjAyNTl4IHNsb3dlcgogICBjcnlwdG8tYWVz
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzYyLjIyMjkrLTQuMTcxMCAg
ICAgPyAgICA3NjYuNzU3NistMTAuNTY5NCAgICAgICA/CiAgIGNyeXB0by1tZDUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5MzAuNTIwMystNy45NzQzICAgICA/ICAgIDk0
Mi44NDgwKy03LjI5MDAgICAgICAgID8gbWlnaHQgYmUgMS4wMTMyeCBzbG93ZXIKICAgY3J5cHRv
LXNoYTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg5Ny4xNDU2Ky0xOC40
MDYwICAgID8gICAgOTA0LjI4MzMrLTEzLjAxNDEgICAgICAgPwogICBkYXRlLWZvcm1hdC10b2Z0
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDU1Ljc4MjMrLTguMzI4NSAgICAgPyAg
ICA1NzIuMDU5NystMjY1LjYwOTkgICAgICA/IG1pZ2h0IGJlIDEuMjU1MXggc2xvd2VyCiAgIGRh
dGUtZm9ybWF0LXhwYXJiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMjEuMjQ3OSst
MzMuMjc0OSAgICA/ICAgMTAzNS40MDYzKy0yMy42MTM3ICAgICAgID8gbWlnaHQgYmUgMS4wMTM5
eCBzbG93ZXIKICAgaGFzaC1tYXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDIwNy40NTY1Ky0yLjc0NDYgICAgID8gICAgMjUyLjI2NjUrLTEwMS42MDY1ICAgICAgPyBt
aWdodCBiZSAxLjIxNjB4IHNsb3dlcgogICBtYXRoLWNvcmRpYyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNTgzLjQzNTcrLTUuNDAwNiAgICAgICAgICA1ODIuODEzNSstNy4z
OTczICAgICAgICAKICAgbWF0aC1wYXJ0aWFsLXN1bXMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDM4Ni4zMzQ1Ky0zLjQ3ODUgICAgID8gICAgMzkyLjIzNjErLTcuMzYzNiAgICAgICAg
PyBtaWdodCBiZSAxLjAxNTN4IHNsb3dlcgogICBtYXRoLXNwZWN0cmFsLW5vcm0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNzQwLjk1MjYrLTUuOTQwMiAgICAgICAgICA3MzkuMjUxOSst
NS44MjM3ICAgICAgICAKICAgc3RyaW5nLWJhc2U2NCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDU2My44ODM5Ky0yMDIuMjAzMiAgICAgICAgNDcyLjMxOTUrLTE3Ljc2MDcgICAg
ICAgICBtaWdodCBiZSAxLjE5Mzl4IGZhc3RlcgogICBzdHJpbmctZmFzdGEgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNTc1LjI1MTYrLTI3OS4xNDk3ICAgICAgICA0NTkuNzM2
OCstNC42MDA4ICAgICAgICAgIG1pZ2h0IGJlIDEuMjUxM3ggZmFzdGVyCiAgIHN0cmluZy10YWdj
bG91ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMjUuNzMwNSstMy41NDA5ICAg
ICAgICAgIDIyNS4zMjI0Ky0zLjU5OTUgICAgICAgIAoKICAgPGdlb21ldHJpYz4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUwNC4yODQzKy05Ljg3MTcgICAgID8gICAgNTA3
LjkyMDMrLTkuNjg0MiAgICAgICAgPyBtaWdodCBiZSAxLjAwNzJ4IHNsb3dlcgoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlICAg
ICAgICAgICAgICAgICAgICAgIG5ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKVjhTcGlkZXI6CiAgIGNyeXB0byAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNTUuMDY1NSstMS40NDYwICAgICA/ICAgICA1Ny4xMDI5Ky02LjAzNjAgICAg
ICAgID8gbWlnaHQgYmUgMS4wMzcweCBzbG93ZXIKICAgZGVsdGFibHVlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA5MC42Mjg1Ky0xLjk0ODcgICAgID8gICAgIDkzLjk5
NjkrLTIuNTk4OCAgICAgICAgPyBtaWdodCBiZSAxLjAzNzJ4IHNsb3dlcgogICBlYXJsZXktYm95
ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUzLjEwNzcrLTIuMDIwOSAg
ICAgISAgICAgNTYuMTE0MistMC45MTEzICAgICAgICAhIGRlZmluaXRlbHkgMS4wNTY2eCBzbG93
ZXIKICAgcmF5dHJhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAz
OS44MTk0Ky0yLjI0NTMgICAgID8gICAgIDQwLjQ1OTIrLTAuOTgwNiAgICAgICAgPyBtaWdodCBi
ZSAxLjAxNjF4IHNsb3dlcgogICByZWdleHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDczLjI4MTIrLTEuMzA5MSAgICAgICAgICAgNzIuNzYzNSstMS42MzkwICAg
ICAgICAKICAgcmljaGFyZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA2OS43MjEzKy01LjEzNzcgICAgICAgICAgIDY5LjQ5NjkrLTMuNDI3MyAgICAgICAgCiAgIHNw
bGF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAuMzQ5NSst
MS42OTUzICAgICA/ICAgICA1NC4yOTY3Ky01LjU1ODggICAgICAgID8gbWlnaHQgYmUgMS4wNzg0
eCBzbG93ZXIKCiAgIDxnZW9tZXRyaWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNTkuNjc5OCstMC44MzQ5ICAgICA/ICAgICA2MS40NTQ0Ky0xLjk2NTUgICAgICAgID8g
bWlnaHQgYmUgMS4wMjk3eCBzbG93ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAgICAgICAgICAgICAgICAgICAgICBuZXcg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCk9jdGFuZToKICAgZW5jcnlw
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIxMTU0Ky0wLjAw
MzY0ICAgICAgICAgIDAuMjA4NzkrLTAuMDAzNjYgICAgICAgICBtaWdodCBiZSAxLjAxMzJ4IGZh
c3RlcgogICBkZWNyeXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMuNTc3ODQrLTAuMDE4NDggICAgPyAgICAgMy42MDEwNSstMC4wNjIyMCAgICAgICA/CiAgIGRl
bHRhYmx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAgMC4xNjU4MSst
MC4wMDUxOCAgICAgICAgICAwLjE2NDE3Ky0wLjAwMzM2ICAgICAgIAogICBlYXJsZXkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzg1NjYrLTAuMDA1NDEgICAg
ICAgICAgMC4zODUzOSstMC4wMDQxMyAgICAgICAKICAgYm95ZXIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA2LjI2MDY5Ky0wLjA1NDQ2ICAgID8gICAgIDYuMjc1
MjMrLTAuMDc3NDIgICAgICAgPwogICBuYXZpZXItc3Rva2VzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHgyICAgICAgIDYuNjQyMTcrLTAuMDYyMDEgICAgPyAgICAgNy4yODk4MystMS42MTk1
OSAgICAgICA/IG1pZ2h0IGJlIDEuMDk3NXggc2xvd2VyCiAgIHJheXRyYWNlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAgMS4wMzQyNSstMC4wMTY1OCAgICAgICAgICAx
LjAzMjQzKy0wLjAxMDQyICAgICAgIAogICByaWNoYXJkcyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHgyICAgICAgIDAuMTEwNTgrLTAuMDAxNjYgICAgPyAgICAgMC4xMTExMCstMC4w
MDA2OCAgICAgICA/CiAgIHNwbGF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eDIgICAgICAgMC40OTQ3NCstMC4wMDU0OCAgICAgICAgICAwLjQ5MDQ5Ky0wLjAwNDI0ICAgICAg
IAogICByZWdleHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgMjQu
MjI1OTErLTAuMjI2MzkgICAgICAgICAyNC4xODE2MystMC41MTU1MSAgICAgICAKICAgcGRmanMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgIDU1LjQ3MTA0Ky01LjA4
MDU1ICAgICEgICAgNjIuMjYxODcrLTAuODI1MjUgICAgICAgISBkZWZpbml0ZWx5IDEuMTIyNHgg
c2xvd2VyCiAgIG1hbmRyZWVsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAg
ICA2OS4zNjE5NCstMC44ODk4NiAgICAgICAgIDY5LjE3MDI3Ky0wLjc5MDY4ICAgICAgIAogICBn
YmVtdSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgNTEuMDQxOTQr
LTAuNjYxNzIgICAgXiAgICA0OS4yMTIxOSstMC43NDExOCAgICAgICBeIGRlZmluaXRlbHkgMS4w
MzcyeCBmYXN0ZXIKICAgY2xvc3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjY0NDI4Ky0wLjAxMjg1ICAgID8gICAgIDAuNjQ5NTArLTAuMDAzMzkgICAgICAg
PwogICBqcXVlcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDku
MjIyOTYrLTAuMDgwNjUgICAgPyAgICAgOS4yNTk3MSstMC4wNTkwMyAgICAgICA/CiAgIGJveDJk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAxMy4zOTg0MystMC4x
NzQ1NyAgICAhICAgIDEzLjcwMjE3Ky0wLjA5NTgzICAgICAgICEgZGVmaW5pdGVseSAxLjAyMjd4
IHNsb3dlcgogICB6bGliICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAg
ICA0ODkuNjI0OTYrLTUuMzM4OTIgICAgICAgIDQ4NC44NzgwNCstMTAuNjI1NzkgICAgICAKICAg
dHlwZXNjcmlwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgOTU1LjI0NjQ2
Ky0xNC42NzYwMiAgICEgIDEwMTAuNDMwNDUrLTE2LjExMzg1ICAgICAgISBkZWZpbml0ZWx5IDEu
MDU3OHggc2xvd2VyCgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDcuMTE2NzMrLTAuMDQyNDAgICAgPyAgICAgNy4yMTUyNystMC4wNjk3NCAgICAg
ICA/IG1pZ2h0IGJlIDEuMDEzOHggc2xvd2VyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAgICAg
bmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApLcmFrZW46CiAgIGFp
LWFzdGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI4Ljk5OSst
MS45NzcgICAgICA/ICAgICAxMzEuOTk0Ky01LjA0NiAgICAgICAgID8gbWlnaHQgYmUgMS4wMjMy
eCBzbG93ZXIKICAgYXVkaW8tYmVhdC1kZXRlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNTYuNTE4Ky0xLjI1MiAgICAgID8gICAgICA1OC44MDIrLTUuNDYzICAgICAgICAgPyBt
aWdodCBiZSAxLjA0MDR4IHNsb3dlcgogICBhdWRpby1kZnQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDE1MC41ODQrLTQuMjgzICAgICAgPyAgICAgMTUxLjEzMCstMi4x
ODkgICAgICAgICA/CiAgIGF1ZGlvLWZmdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQwLjA2NystMS42NTYgICAgICA/ICAgICAgNDAuMDg4Ky0xLjM0MiAgICAgICAg
ID8KICAgYXVkaW8tb3NjaWxsYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NjAuNjI3Ky0xLjA3OSAgICAgID8gICAgICA2MC44MDIrLTEuMDI3ICAgICAgICAgPwogICBpbWFn
aW5nLWRhcmtyb29tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4MC40NjErLTAu
ODEzICAgICAgPyAgICAgIDgwLjg0OCstMS4wNjAgICAgICAgICA/CiAgIGltYWdpbmctZGVzYXR1
cmF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc2LjY4MCstMy4wOTYgICAgICA/
ICAgICAgNzYuNzc4Ky0yLjI5NyAgICAgICAgID8KICAgaW1hZ2luZy1nYXVzc2lhbi1ibHVyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOTAuODM3Ky0yLjk2NSAgICAgID8gICAgIDEwMC4x
NzgrLTYuODMxICAgICAgICAgPyBtaWdodCBiZSAxLjEwMjh4IHNsb3dlcgogICBqc29uLXBhcnNl
LWZpbmFuY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NS43MDcrLTIuMjczICAg
ICAgICAgICAgIDQ1LjA4NistMS4yNDMgICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzOHggZmFzdGVy
CiAgIGpzb24tc3RyaW5naWZ5LXRpbmRlcmJveCAgICAgICAgICAgICAgICAgICAgICAgICAgIDMw
LjczNistMS4yODkgICAgICAgICAgICAgMjkuNjAwKy0wLjUwOCAgICAgICAgICAgbWlnaHQgYmUg
MS4wMzg0eCBmYXN0ZXIKICAgc3RhbmZvcmQtY3J5cHRvLWFlcyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNTAuOTEwKy0xLjE2OCAgICAgID8gICAgICA1MS4wNzUrLTEuMzg5ICAgICAg
ICAgPwogICBzdGFuZm9yZC1jcnlwdG8tY2NtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA0NC42NDgrLTIuNTQwICAgICAgISAgICAgIDQ5Ljg0NistMS44OTEgICAgICAgICAhIGRlZmlu
aXRlbHkgMS4xMTY0eCBzbG93ZXIKICAgc3RhbmZvcmQtY3J5cHRvLXBia2RmMiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgODMuNjAzKy0xLjk5NCAgICAgICAgICAgICA4My41ODYrLTIuNDEx
ICAgICAgICAgCiAgIHN0YW5mb3JkLWNyeXB0by1zaGEyNTYtaXRlcmF0aXZlICAgICAgICAgICAg
ICAgICAgIDI2LjI4NSstMC41MzUgICAgICA/ICAgICAgMjYuODI3Ky0xLjMyMSAgICAgICAgID8g
bWlnaHQgYmUgMS4wMjA2eCBzbG93ZXIKCiAgIDxhcml0aG1ldGljPiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDY5LjA0NystMC41MzUgICAgICA/ICAgICAgNzAuNDc0Ky0x
LjAwMyAgICAgICAgID8gbWlnaHQgYmUgMS4wMjA3eCBzbG93ZXIKCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAgICAgICAgICAg
ICAgICAgICAgICBuZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCk1p
Y3JvYmVuY2htYXJrczoKICAgbmVnYXRpdmUtemVyby1tb2R1bG8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC41OTgwKy0wLjAzNDEgICAgID8gICAgICAwLjYwODMrLTAuMDMzNCAgICAg
ICAgPyBtaWdodCBiZSAxLjAxNzN4IHNsb3dlcgogICBpcy1vYmplY3Qtb3ItbnVsbC10cmlja2ll
ci1mdW5jdGlvbiAgICAgICAgICAgICAgICA1LjE1NDErLTAuMTkzMCAgICAgICAgICAgIDUuMTM4
NCstMC4xOTI5ICAgICAgICAKICAgb2JqZWN0LXZhbHVlcyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA0Ni43NjkwKy0xLjMzMzUgICAgICAgICAgIDQ2LjQxMjArLTIuNjU0OCAg
ICAgICAgCiAgIGRpcmVjdC10YWlsLWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgODAuNzUzNCstMS45MDE5ICAgICA/ICAgICA4MS43Njc0Ky0zLjM5MDYgICAgICAgID8gbWln
aHQgYmUgMS4wMTI2eCBzbG93ZXIKICAgaW50LW9yLW90aGVyLW1pbi10aGVuLWdldC1ieS12YWwg
ICAgICAgICAgICAgICAgICAgNi4zOTc3Ky0wLjM1OTUgICAgICAgICAgICA2LjIzNzErLTAuNTA5
MCAgICAgICAgICBtaWdodCBiZSAxLjAyNTh4IGZhc3RlcgogICBoYXMtb3duLXByb3BlcnR5LW5h
bWUtY2FjaGUgICAgICAgICAgICAgICAgICAgICAgIDcyLjM0MDYrLTIuMTA0NiAgICAgPyAgICAg
ODguODkwMystNDUuMDE2MiAgICAgICA/IG1pZ2h0IGJlIDEuMjI4OHggc2xvd2VyCiAgIEpTT05Q
LW5lZ2F0aXZlLTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNDcwMSstMC4w
Mzk2ICAgICAgICAgICAgMC40MzU1Ky0wLjAwOTIgICAgICAgICAgbWlnaHQgYmUgMS4wNzk0eCBm
YXN0ZXIKICAgb2JqZWN0LWludC1zdWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxOC4xMjMwKy0wLjcwOTMgICAgID8gICAgIDE5LjIyMjcrLTAuODc1OCAgICAgICAgPyBtaWdo
dCBiZSAxLjA2MDd4IHNsb3dlcgogICBpbnQtb3Itb3RoZXItYWRkLXRoZW4tZ2V0LWJ5LXZhbCAg
ICAgICAgICAgICAgICAgICA2LjIzMDMrLTAuNzIxMiAgICAgPyAgICAgIDYuMzAxMystMC41MTg2
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDExNHggc2xvd2VyCiAgIGRvdWJsZS1wb2xsdXRpb24tZ2V0
Ynl2YWwgICAgICAgICAgICAgICAgICAgICAgICAgMTAuMzY5OSstMC45NjM1ICAgICAgICAgICAx
MC4wNzk0Ky0wLjg0NjQgICAgICAgICAgbWlnaHQgYmUgMS4wMjg4eCBmYXN0ZXIKICAgbWFwLWZv
ci1lYWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy43MTMzKy0wLjM5
OTAgICAgICAgICAgICAzLjQyODArLTAuMjIwNiAgICAgICAgICBtaWdodCBiZSAxLjA4MzJ4IGZh
c3RlcgogICBpbmZlci1vbmUtdGltZS1kZWVwLWNsb3N1cmUgICAgICAgICAgICAgICAgICAgICAg
IDE2LjU2MjgrLTEuMTM5NyAgICAgICAgICAgMTYuMDE0NystMC40NzQxICAgICAgICAgIG1pZ2h0
IGJlIDEuMDM0MnggZmFzdGVyCiAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wtY2hhaW4tZnJvbS10
cnktYmxvY2sgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMy42MTU0Ky0xLjE3MjggICAgICAgICAgICAzLjQ3MjkrLTAuOTY1OSAgICAgICAg
ICBtaWdodCBiZSAxLjA0MTB4IGZhc3RlcgogICBpbmZlci1jb25zdGFudC1wcm9wZXJ0eSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAzLjQwOTErLTAuMjU0MiAgICAgPyAgICAgIDMuNzE2Nyst
MC4yNzc4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDkwMnggc2xvd2VyCiAgIGlzLWJvb2xlYW4tZm9s
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNjA2NystMC40NTE3ICAgICAg
ICAgICAgMy40NTUxKy0wLjIxNzMgICAgICAgICAgbWlnaHQgYmUgMS4wNDM5eCBmYXN0ZXIKICAg
c2ltcGxlLWdldHRlci1hY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC4wNTE1
Ky0xLjAxMDEgICAgICAgICAgIDIyLjQxNjcrLTAuNzQ0NiAgICAgICAgICBtaWdodCBiZSAxLjA3
Mjl4IGZhc3RlcgogICBwdXQtYnktaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE2LjMyMzIrLTAuMzc1MiAgICAgICAgICAgMTYuMjc0NistMC4zNzU3ICAgICAgICAK
ICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVuLW1vdi1uby1pbmxpbmUgICAgICAgICAgICAgNC45
ODExKy0wLjU1OTYgICAgID8gICAgICA1LjE1NzMrLTAuNTA1OSAgICAgICAgPyBtaWdodCBiZSAx
LjAzNTR4IHNsb3dlcgogICBnZXQtYnktdmFsLW91dC1vZi1ib3VuZHMgICAgICAgICAgICAgICAg
ICAgICAgICAgICA2LjU5MTgrLTAuNDA5OCAgICAgPyAgICAgIDcuNDgwNCstMC45NjU3ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMTM0OHggc2xvd2VyCiAgIHN0cmluZy1jaGFyLWNvZGUtYXQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMjIuMzcxMSstMS4yMTYxICAgICAgICAgICAyMS41MTU0
Ky0wLjU5NzAgICAgICAgICAgbWlnaHQgYmUgMS4wMzk4eCBmYXN0ZXIKICAgZGlyZWN0LWNhbGwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3MC4xMTcxKy0zLjcwMTUgICAg
ID8gICAgIDcyLjAyNjQrLTQuOTg3MCAgICAgICAgPyBtaWdodCBiZSAxLjAyNzJ4IHNsb3dlcgog
ICBlbGlkYWJsZS1uZXctb2JqZWN0LXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAgIDI1LjU0
NjErLTEuNzg2NyAgICAgICAgICAgMjUuMjMwMistMS44NDc0ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDEyNXggZmFzdGVyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMS40NjE1Ky0wLjE4NDMgICAgID8gICAgICAxLjU3NDIrLTAuMjc1MiAgICAgICAgPyBt
aWdodCBiZSAxLjA3NzF4IHNsb3dlcgogICByZWdleHAtc2V0LWxhc3QtaW5kZXggICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDE0LjE1MTIrLTEuMzM5MCAgICAgICAgICAgMTMuNjgxNystMC44
NTg3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM0M3ggZmFzdGVyCiAgIHRhbiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTQuNjAyMSstMS45MzExICAgICA/ICAg
ICA5NC42NjE0Ky0yLjEzOTggICAgICAgID8KICAgaW5mZXItb25lLXRpbWUtY2xvc3VyZS10ZW4t
dmFycyAgICAgICAgICAgICAgICAgICAgOS44NDA4Ky0wLjc3ODkgICAgID8gICAgIDExLjY4NDYr
LTMuODgwMCAgICAgICAgPyBtaWdodCBiZSAxLjE4NzR4IHNsb3dlcgogICB0by1udW1iZXItbnVt
YmVyLXN0cmluZy1udW1iZXItc3RyaW5nICAgICAgICAgICAgICA0Ljc4NTQrLTAuNTc2MyAgICAg
PyAgICAgIDUuMzU3MistMC42MjQ1ICAgICAgICA/IG1pZ2h0IGJlIDEuMTE5NXggc2xvd2VyCiAg
IGFzc2lnbi1jdXN0b20tc2V0dGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuMjk0
MistMC44NzQ5ICAgICAgICAgICAgOS4yMDIwKy0wLjczOTYgICAgICAgICAgbWlnaHQgYmUgMS4w
MTAweCBmYXN0ZXIKICAgY3VzdG9tLXNldHRlci1nZXR0ZXItYXMtcHV0LWdldC1ieS1pZCAgICAg
ICAgICAgICAgMC44NjY3Ky0wLjEyNTEgICAgID8gICAgICAxLjIzODkrLTAuNzIxMyAgICAgICAg
PyBtaWdodCBiZSAxLjQyOTV4IHNsb3dlcgogICBtYWtlLWluZGV4ZWQtc3RvcmFnZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA0LjYyNjcrLTAuNDE3MCAgICAgPyAgICAgIDQuODA1OSst
MC44MTQ5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM4N3ggc2xvd2VyCiAgIG9iamVjdC1pbnQtYWRk
LWFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuOTAxOSstMC44MzgyICAgICAg
ICAgICAxMi44Nzc5Ky0xLjEyMTcgICAgICAgIAogICBhcmd1bWVudHMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA3LjYzMDIrLTAuNDk0OCAgICAgPyAgICAgIDguMTcx
NystMC43OTA4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDcxMHggc2xvd2VyCiAgIGxhcmdlLWludC1u
ZWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYuMjIzNCstMC44NDI1ICAg
ICA/ICAgICAxNi40NDY5Ky0wLjUwNDQgICAgICAgID8gbWlnaHQgYmUgMS4wMTM4eCBzbG93ZXIK
ICAgaXMtb2JqZWN0LW9yLW51bGwtdHJpY2t5LWZ1bmN0aW9uICAgICAgICAgICAgICAgICAgNS4z
NjAzKy0wLjU2ODMgICAgICAgICAgICA1LjM1OTcrLTAuNTY3OSAgICAgICAgCiAgIGdjc2UgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuOTU3NistMC41NTY1
ICAgICAgICAgICAgNS43NDYxKy0wLjQzODMgICAgICAgICAgbWlnaHQgYmUgMS4wMzY4eCBmYXN0
ZXIKICAgZm9sZC1nZXQtYnktaWQtdG8tbXVsdGktZ2V0LWJ5LW9mZnNldC1yYXJlLWludCAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0Ljk5
NDcrLTIuMzEzMiAgICAgICAgICAgMTMuMzkwMistNC44NzcyICAgICAgICAgIG1pZ2h0IGJlIDEu
MTE5OHggZmFzdGVyCiAgIGFiYy1za2lwcHktbG9vcCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMjYuOTA2NSstMC4zNzYyICAgICA/ICAgICAyNi45NDMxKy0wLjU2MTEgICAgICAg
ID8KICAgaW5saW5lLWFyZ3VtZW50cy1hbGlhc2VkLWFjY2VzcyAgICAgICAgICAgICAgICAgICAg
Ny4yNjI2Ky0zLjEwODMgICAgICAgICAgICA2LjI0NDQrLTEuNzI1OCAgICAgICAgICBtaWdodCBi
ZSAxLjE2MzF4IGZhc3RlcgogICBpcy1hcnJheS1mb3Itbm9uLWFycmF5LW9iamVjdCAgICAgICAg
ICAgICAgICAgICAgICAzLjU2MjQrLTAuMzA2NCAgICAgPyAgICAgIDMuODcwMistMS4wMDAzICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDg2NHggc2xvd2VyCiAgIGVsaWRhYmxlLW5ldy1vYmplY3QtZGFn
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjYuMjM5MystMC40Mjc2ICAgICAgICAgICAyNi4x
MTEwKy0wLjMxMzkgICAgICAgIAogICBzd2l0Y2gtc3RyaW5nLWxlbmd0aC10b3dlciAgICAgICAg
ICAgICAgICAgICAgICAgIDE1LjAzNTArLTAuODk2OSAgICAgICAgICAgMTQuNjU5NCstMC42NDg3
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI1NnggZmFzdGVyCiAgIGFycm93ZnVuY3Rpb24tY2FsbC1p
bi1jbGFzcy1tZXRob2QgICAgICAgICAgICAgICAgMTMuNzM3MistMS44NTYxICAgICAgICAgICAx
My4xMzEzKy0xLjEwNDUgICAgICAgICAgbWlnaHQgYmUgMS4wNDYxeCBmYXN0ZXIKICAgc3RyaW5n
LWNvbmNhdC1wYWlyLXNpbXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAgNC43MTE1Ky0wLjQw
MTQgICAgID8gICAgICA0Ljc3MTgrLTAuNDE4NyAgICAgICAgPyBtaWdodCBiZSAxLjAxMjh4IHNs
b3dlcgogICBmb3Itb2YtYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDIyLjQyOTUrLTAuMjY5MiAgICAgISAgICAgMjMuMTk1NSstMC40MDkxICAgICAgICAhIGRlZmlu
aXRlbHkgMS4wMzQyeCBzbG93ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJs
ZS1zaWRlLWVmZmVjdHMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMS4yOTU2Ky0wLjIwOTkgICAgICAgICAgICAxLjE2NzkrLTAuMDM5NSAg
ICAgICAgICBtaWdodCBiZSAxLjEwOTN4IGZhc3RlcgogICB2YXJhcmdzICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjcyNzcrLTAuODU2NCAgICAgPyAgICAgMTEu
ODQ5NSstMC45OTQyICAgICAgICA/IG1pZ2h0IGJlIDEuMTA0Nnggc2xvd2VyCiAgIHN0cmluZy12
YXItZXF1YWxpdHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzUuMDkyNystMS41NzQ3
ICAgICAgICAgICAzNC45MDE1Ky0yLjMzNTMgICAgICAgIAogICB0by1udW1iZXItb25seS1udW1i
ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjkwNTMrLTAuMDkyNCAgICAgICAgICAg
IDAuODMxNSstMC4wMzA5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDg4OHggZmFzdGVyCiAgIGZ1bmN0
aW9uLXRlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMjYwNSstMC4y
NDMzICAgICAgICAgICAgNC4yMTc3Ky0wLjU2MzYgICAgICAgICAgbWlnaHQgYmUgMS4wMTAyeCBm
YXN0ZXIKICAgdW5wcm9maWxlZC1saWNtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOS41MTU0Ky0wLjk5NjYgICAgICAgICAgICA4LjYzNzErLTAuOTMxOSAgICAgICAgICBtaWdo
dCBiZSAxLjEwMTd4IGZhc3RlcgogICBzdHJpbmctY29ucy10b3dlciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA4LjUyNjYrLTIuMTY5NCAgICAgICAgICAgIDcuNDAzMistMC43Njc4
ICAgICAgICAgIG1pZ2h0IGJlIDEuMTUxOHggZmFzdGVyCiAgIEludDhBcnJheS1sb2FkLXdpdGgt
Ynl0ZUxlbmd0aCAgICAgICAgICAgICAgICAgICAgIDYuMDc3OSstMS4zMjQ5ICAgICAgICAgICAg
NS4yODgxKy0wLjI0NjkgICAgICAgICAgbWlnaHQgYmUgMS4xNDk0eCBmYXN0ZXIKICAgaW5saW5l
ZC1wdXQtYnktdmFsLXdpdGgtc3RyaW5nLXRyYW5zaXRpb24gICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MS44NTU4Ky0yLjg2NjIgICAgICAg
ICAgIDYxLjc1MTErLTIuMTY3MyAgICAgICAgCiAgIGxpY20tZHJhZ29ucy1vdmVyZmxvdyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMjQuNDQ1OSstMC4zNzk1ICAgICAgICAgICAyNC4wNTMz
Ky0wLjMyNTcgICAgICAgICAgbWlnaHQgYmUgMS4wMTYzeCBmYXN0ZXIKICAgdmFyYXJncy1jb25z
dHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOC44NDkyKy0xMC42NDkwICAg
ICAgICAgIDI1LjIxODMrLTAuOTc2MCAgICAgICAgICBtaWdodCBiZSAxLjE0NDB4IGZhc3Rlcgog
ICBtb2QtYm9vbGVhbi1kb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjMw
MzUrLTAuNzA1MyAgICAgICAgICAgIDYuNTE4MistMC4yNzQ5ICAgICAgICAgIG1pZ2h0IGJlIDEu
MTIwNXggZmFzdGVyCiAgIG5lc3RlZC1mdW5jdGlvbi1wYXJzaW5nICAgICAgICAgICAgICAgICAg
ICAgICAgICAxNjAuOTE5MistMS42MDQwICAgICA/ICAgIDE2My4yNjQ5Ky0xLjgzMDcgICAgICAg
ID8gbWlnaHQgYmUgMS4wMTQ2eCBzbG93ZXIKICAgc2luay1odWdlLWFjdGl2YXRpb24gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxMy43MDAzKy0wLjY2MzIgICAgID8gICAgIDE3LjM2NzAr
LTcuNjQ5NyAgICAgICAgPyBtaWdodCBiZSAxLjI2NzZ4IHNsb3dlcgogICB2YXJhcmdzLWNhbGwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LjcxNzkrLTAuNzg4OCAgICAg
ICAgICAgMTYuMTAxNCstMC45NDI2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM4M3ggZmFzdGVyCiAg
IHNpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLXdpdGgtaG9pc3RlZC1yZWdleHAgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi45NjIwKy01
LjkxNDcgICAgICAgICAgIDE0LjM3ODIrLTAuNDQ2MSAgICAgICAgICBtaWdodCBiZSAxLjE3OTd4
IGZhc3RlcgogICBpbXVsLWludC1vbmx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA3LjQxMDUrLTAuNTk1MyAgICAgICAgICAgIDcuMTcwOCstMC43ODAyICAgICAgICAgIG1p
Z2h0IGJlIDEuMDMzNHggZmFzdGVyCiAgIHRlYXItb2ZmLWFyZ3VtZW50cy1zaW1wbGUgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMuOTU5MCstMC40NzUwICAgICA/ICAgICAgNC41OTU5Ky0xLjE2
MjcgICAgICAgID8gbWlnaHQgYmUgMS4xNjA5eCBzbG93ZXIKICAgYWRhcHQtdG8tZG91YmxlLWRp
dmlkZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS43NTg0Ky0wLjg0NDggICAgID8gICAg
IDIyLjI0NzcrLTQuNTI0NiAgICAgICAgPyBtaWdodCBiZSAxLjEyNjB4IHNsb3dlcgogICBnZXRf
Y2FsbGVlX21vbm9tb3JwaGljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjQ5ODMrLTAu
MjMxNyAgICAgPyAgICAgIDMuOTE5MistMC43NzE2ICAgICAgICA/IG1pZ2h0IGJlIDEuMTIwM3gg
c2xvd2VyCiAgIHN3aXRjaC1zdHJpbmctc2hvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTUuMTA3MSstMC42NDU5ICAgICA/ICAgICAxNS4zNjk5Ky0xLjIwNTkgICAgICAgID8gbWln
aHQgYmUgMS4wMTc0eCBzbG93ZXIKICAgaXMtYXJyYXktZm9yLWFycmF5ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMy45MzUyKy0wLjE4ODQgICAgID8gICAgICA0LjI0ODMrLTAuOTM2
MyAgICAgICAgPyBtaWdodCBiZSAxLjA3OTZ4IHNsb3dlcgogICBvYmplY3QtZW50cmllcyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE1LjY4NzkrLTMuNTY4NCAgICAgPyAgICAx
MTUuODcyNCstMi43Mzg3ICAgICAgICA/CiAgIEFycmF5QnVmZmVyLUludDMyQXJyYXktYnl0ZU9m
ZnNldCAgICAgICAgICAgICAgICAgIDUuNDkxMCstMC40NTgzICAgICA/ICAgICAgNS45OTAyKy0w
LjY4NDQgICAgICAgID8gbWlnaHQgYmUgMS4wOTA5eCBzbG93ZXIKICAgaW5mZXItY2xvc3VyZS1j
b25zdC10aGVuLXB1dC10by1zY29wZS1uby1pbmxpbmUgICAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi45Njg4Ky0wLjcwNjMgICAgICAgICAg
IDEyLjE1ODErLTAuODQ1MSAgICAgICAgICBtaWdodCBiZSAxLjA2Njd4IGZhc3RlcgogICB2YXJh
cmdzLWNvbnN0cnVjdC1pbmxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLjcwMjkrLTAu
MjY3OCAgICAgPyAgICAgMjEuMzAwNSstMC41MzQxICAgICAgICA/IG1pZ2h0IGJlIDEuMDI4OXgg
c2xvd2VyCiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctcXVhZG1vcnBoaWMtY2hlY2stc3RydWN0
dXJlLWVsaW1pbmF0aW9uLXNpbXBsZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1LjYwNjgrLTAuNjUwNyAgICAgICAgICAgIDUuNDY0Mist
MC40MjExICAgICAgICAgIG1pZ2h0IGJlIDEuMDI2MXggZmFzdGVyCiAgIGdldC1ieS12YWwtd2l0
aC1zeW1ib2wtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuNjQzNCstNC41NTQ4ICAgICAg
ICAgICAgOS40MDQ4Ky0wLjc1NzggICAgICAgICAgbWlnaHQgYmUgMS4yMzgweCBmYXN0ZXIKICAg
c3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZSAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LjY5NTQrLTAuMDQzNyAgICAgPyAgICAgIDAuNzE1NSstMC4wNzE0ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDI4OXggc2xvd2VyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRl
LWVmZmVjdHMzLXVuaWNvZGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC41OTgxKy0wLjAzMjMgICAgID8gICAgICAwLjYwMDUrLTAuMDQx
MCAgICAgICAgPwogICBmdGwtcG9seW1vcnBoaWMtYml0YW5kICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTc4LjEwMzErLTIuODgwOCAgICAgPyAgICAxNzkuOTg4MSstMi41Mjg5ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDEwNnggc2xvd2VyCiAgIGNzZS1uZXctYXJyYXktYnVmZmVyICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDMuNzc0NystMC4zOTE0ICAgICA/ICAgICAgNC4wNzI0Ky0w
LjMxMTQgICAgICAgID8gbWlnaHQgYmUgMS4wNzg5eCBzbG93ZXIKICAgc3BsaWNlLXRvLXJlbW92
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMC43Njg3Ky0wLjc1NzggICAgID8g
ICAgIDIxLjA2NzQrLTEuMDg0MiAgICAgICAgPyBtaWdodCBiZSAxLjAxNDR4IHNsb3dlcgogICBu
ZWctYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjc3NjIr
LTAuMTk5MCAgICAgICAgICAgIDMuNTk3MystMC4yMzgyICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ5
N3ggZmFzdGVyCiAgIEludDE2QXJyYXktdG8tSW50MzJBcnJheS1zZXQgICAgICAgICAgICAgICAg
ICAgICAgNTAuODg3MystMS42MDgwICAgICAgICAgICA0OS43NjU0Ky0xLjU2NzUgICAgICAgICAg
bWlnaHQgYmUgMS4wMjI1eCBmYXN0ZXIKICAgZm9yLW9mLWl0ZXJhdGUtYXJyYXkta2V5cyAgICAg
ICAgICAgICAgICAgICAgICAgICAgNy42ODY3Ky0wLjk2MDAgICAgICAgICAgICA3LjYyOTQrLTEu
MTE1MCAgICAgICAgCiAgIG1ha2Utcm9wZS1jc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDUuODY2NCstMS43NTA4ICAgICAgICAgICAgNS4wODE0Ky0xLjEyNjMgICAgICAg
ICAgbWlnaHQgYmUgMS4xNTQ1eCBmYXN0ZXIKICAgcmVzdC1wYXJhbWV0ZXItYWxsb2NhdGlvbi1l
bGltaW5hdGlvbiAgICAgICAgICAgIDI1OS43MDc1Ky04LjAxMDggICAgID8gICAgMjYyLjY1MTkr
LTQuOTQwMyAgICAgICAgPyBtaWdodCBiZSAxLjAxMTN4IHNsb3dlcgogICBpcy1mdW5jdGlvbi1m
b2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjcyOTgrLTAuMjcwMCAgICAg
PyAgICAgIDMuOTA3OSstMC4zNDYwICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ3N3ggc2xvd2VyCiAg
IERhdGFWaWV3LWN1c3RvbS1wcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgNzYuMTg3
MSstMy45MTIxICAgICAgICAgICA3NC4xNTk3Ky0xLjk3NDkgICAgICAgICAgbWlnaHQgYmUgMS4w
MjczeCBmYXN0ZXIKICAgbmV3LWFycmF5LWJ1ZmZlci1kZWFkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA4OS4zNjA0Ky0xLjMxNDQgICAgID8gICAgIDkwLjUwODIrLTEuODY0MyAgICAgICAg
PyBtaWdodCBiZSAxLjAxMjh4IHNsb3dlcgogICBwcm90b3R5cGUtYWNjZXNzLXdpdGgtbXV0YXRp
bmctcHJvdG90eXBlICAgICAgICAgICA3LjIwMjIrLTEuNDExNyAgICAgICAgICAgIDYuOTA5NSst
MS41NTYyICAgICAgICAgIG1pZ2h0IGJlIDEuMDQyNHggZmFzdGVyCiAgIGFsbG9jYXRlLWJpZy1v
YmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMzI2MistMC44NTY3ICAgICAg
ICAgICAgMy43MTM3Ky0wLjMwNTQgICAgICAgICAgbWlnaHQgYmUgMS4xNjQ5eCBmYXN0ZXIKICAg
ZGlyZWN0LWNhbGwtYXJpdHktbWlzbWF0Y2ggICAgICAgICAgICAgICAgICAgICAgICA4NC4xMzU3
Ky0xLjMxMzEgICAgICAgICAgIDgzLjAyNjUrLTIuMzcwOCAgICAgICAgICBtaWdodCBiZSAxLjAx
MzR4IGZhc3RlcgogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLXByb3RvLW9yLXNlbGYgICAgICAg
ICAgICAgIDE1LjA4NzgrLTEuNDYzOSAgICAgPyAgICAgMTUuMTg0MistMS41NTk2ICAgICAgICA/
CiAgIGdldC1ieS1pZC1iaW1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuOTQ3
MSstMC4zNTE0ICAgICA/ICAgICAgNy4zNjMyKy0wLjcwNTEgICAgICAgID8gbWlnaHQgYmUgMS4w
NTk5eCBzbG93ZXIKICAgbWFwLWNvbnN0YW50LWtleSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDI2NS42MDg2Ky0xMTkuMjU1OCAgICAgICAgMjE0LjY0MDYrLTUuNTA5NiAgICAgICAg
ICBtaWdodCBiZSAxLjIzNzV4IGZhc3RlcgogICBkZWx0YS1ibHVlLXRyeS1jYXRjaCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDk5Ljk2NzErLTEuNTg4NCAgICAgISAgICAxMzcuNjg2Nist
Mi40NjcxICAgICAgICAhIGRlZmluaXRlbHkgMS4zNzczeCBzbG93ZXIKICAgc3RyaW5nLXByb3Rv
dHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC43MjU5Ky0wLjEyMTUgICAgID8g
ICAgICAwLjk1MjgrLTAuNTYzMCAgICAgICAgPyBtaWdodCBiZSAxLjMxMjZ4IHNsb3dlcgogICBu
by1pbmxpbmUtY29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMxLjIzMzIr
LTMuNzY0MiAgICAgICAgICAgMjkuMjg5MSstMC42MjA0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDY2
NHggZmFzdGVyCiAgIG51bWJlci10by1zdHJpbmctd2l0aC1hZGQtZW1wdHkgICAgICAgICAgICAg
ICAgICAgMTEuMTkyMCstMC45NDg2ICAgICA/ICAgICAxMS4xOTQ3Ky0wLjk1MzcgICAgICAgID8K
ICAgY21wZXEtb2JqLXRvLW9iai1vdGhlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi44
NTg0Ky0wLjU2NDYgICAgICAgICAgIDEyLjgwNDArLTAuOTM3OCAgICAgICAgCiAgIEFycmF5QnVm
ZmVyLURhdGFWaWV3LWFsbG9jLWxvbmctbGl2ZWQgICAgICAgICAgICAgMjMuOTcxMCstMS40NjEy
ICAgICA/ICAgICAyOS45NDY3Ky0xNi4zNjE0ICAgICAgID8gbWlnaHQgYmUgMS4yNDkzeCBzbG93
ZXIKICAgZ2V0LWJ5LWlkLXF1YWRtb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbi1z
aW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNC43NzU1Ky0wLjM0NzUgICAgID8gICAgICA0LjkyMzYrLTAuMzc1NiAgICAgICAgPyBt
aWdodCBiZSAxLjAzMTB4IHNsb3dlcgogICBpbi10d28tY2FzZXMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDEyLjYxNDIrLTAuNzY2MiAgICAgPyAgICAgMTMuNDk0OCstMC44
NDQ1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDY5OHggc2xvd2VyCiAgIHN0cmluZy1hZGQtY29uc3Rh
bnQtZm9sZGluZyAgICAgICAgICAgICAgICAgICAgICAyMDcuMDk2MCstMy44NDUwICAgICA/ICAg
IDIwOC42MDA2Ky04LjU3NjggICAgICAgID8KICAgc3dpdGNoICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOS4yMDU0Ky0xLjE0MDIgICAgID8gICAgICA5Ljc0NTAr
LTEuMjIwMCAgICAgICAgPyBtaWdodCBiZSAxLjA1ODZ4IHNsb3dlcgogICBpbmZlci1jbG9zdXJl
LWNvbnN0LXRoZW4tbW92ICAgICAgICAgICAgICAgICAgICAgIDEwLjEzNzcrLTAuODgxOCAgICAg
PyAgICAgMTAuNDYyOSstMC45MjE5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMyMXggc2xvd2VyCiAg
IHN0cmluZy1lcXVhbGl0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYuNDc1
OCstMC45MTA2ICAgICBeICAgICAxNC41NTEzKy0wLjkzNDYgICAgICAgIF4gZGVmaW5pdGVseSAx
LjEzMjN4IGZhc3RlcgogICBpbnQtb3Itb3RoZXItbmVnLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAg
ICAgICAgICAgIDI3Ljg2ODIrLTAuNDIyNyAgICAgISAgICAzMzAuNjIyMystMi4zODQ4ICAgICAg
ICAhIGRlZmluaXRlbHkgMTEuODYzOHggc2xvd2VyCiAgIHN1cGVyLWdldC1ieS1pZC13aXRoLXRo
aXMtbW9ub21vcnBoaWMgICAgICAgICAgICAgMjYuMTI2NystMi44MTA4ICAgICA/ICAgICAyNy4x
OTY0Ky0wLjU4NTMgICAgICAgID8gbWlnaHQgYmUgMS4wNDA5eCBzbG93ZXIKICAgYWJjLXBvc3Rm
aXgtYmFja3dhcmQtbG9vcCAgICAgICAgICAgICAgICAgICAgICAgICA0MC4yODg0Ky0xLjA4OTIg
ICAgICAgICAgIDM5LjUzMzUrLTAuODQ2NyAgICAgICAgICBtaWdodCBiZSAxLjAxOTF4IGZhc3Rl
cgogICBhYnMtYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAz
Ljk1NzYrLTAuMzI0MSAgICAgPyAgICAgIDQuMTQyMistMC42NDAwICAgICAgICA/IG1pZ2h0IGJl
IDEuMDQ2Nnggc2xvd2VyCiAgIGZpeGVkLXR5cGVkLWFycmF5LXN0b3JhZ2UtdmFyLWluZGV4ICAg
ICAgICAgICAgICAgIDIuNDcwNSstMC4yMzMzICAgICA/ICAgICAgMi43OTcwKy0xLjA3NzQgICAg
ICAgID8gbWlnaHQgYmUgMS4xMzIyeCBzbG93ZXIKICAgc3RyaW5nLXJlcGxhY2UtZ2VuZXJpYyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA2NS42MjUyKy0zLjU0OTcgICAgICAgICAgIDY0LjE0
OTIrLTEuNjM4MyAgICAgICAgICBtaWdodCBiZSAxLjAyMzB4IGZhc3RlcgogICBzaW5nbGV0b24t
c2NvcGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU5LjY2MTkrLTMuMDM2MCAg
ICAgPyAgICAgNjAuMjYzNistMS4xMDA2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEwMXggc2xvd2Vy
CiAgIGRpdi1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAu
MjY5MystMC4zODcyICAgICAgICAgICAxMC4xMjgwKy0wLjc2NjIgICAgICAgICAgbWlnaHQgYmUg
MS4wMTQweCBmYXN0ZXIKICAgcHV0LWJ5LWlkLXNsaWdodGx5LXBvbHltb3JwaGljICAgICAgICAg
ICAgICAgICAgICAgMy45Nzk1Ky0wLjQ0MzQgICAgICAgICAgICAzLjk2NTkrLTAuMzgzMiAgICAg
ICAgCiAgIHN1cGVyLWdldC1ieS12YWwtd2l0aC10aGlzLXBvbHltb3JwaGljICAgICAgICAgICAg
MzAuMDU3NystMC43OTM5ICAgICA/ICAgICAzMi41MTUzKy0yLjY2MjcgICAgICAgID8gbWlnaHQg
YmUgMS4wODE4eCBzbG93ZXIKICAgYXJyYXktc3BsaWNlLWNvbnRpZ3VvdXMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAzOS44NTA3Ky0xLjQ3NjYgICAgICAgICAgIDM5LjQ2NzkrLTIuMTQ4NCAg
ICAgICAgCiAgIHBvbHktY2hhaW4tYWNjZXNzLWRpZmZlcmVudC1wcm90b3R5cGVzLXNpbXBsZSAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
LjIwMDYrLTAuMzEyNiAgICAgPyAgICAgIDQuMjk4NistMC4zNDk3ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDIzM3ggc2xvd2VyCiAgIGdsb2JhbC12YXItY29uc3QtaW5mZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEuMjYyNistMC4zNjU1ICAgICAgICAgICAgMS4xNDgzKy0wLjE3NDAgICAg
ICAgICAgbWlnaHQgYmUgMS4wOTk2eCBmYXN0ZXIKICAgc3dpdGNoLXN0cmluZy1iYXNpYy1iaWct
dmFyICAgICAgICAgICAgICAgICAgICAgICAxOC41NzE2Ky0wLjk1MjAgICAgICAgICAgIDE4LjU0
MjUrLTAuNzU4MiAgICAgICAgCiAgIGRlbHRhYmx1ZS12YXJhcmdzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMjQuMjY0OCstMC42MzYyICAgICA/ICAgICAyNS4yOTY1Ky0xLjQ3Mzgg
ICAgICAgID8gbWlnaHQgYmUgMS4wNDI1eCBzbG93ZXIKICAgYXJyYXktd2l0aC1kb3VibGUtbXVs
LWFkZCAgICAgICAgICAgICAgICAgICAgICAgICAgNi45NTAxKy0wLjg3ODYgICAgICAgICAgICA2
LjkwMzYrLTEuMDk5OSAgICAgICAgCiAgIGRpcmVjdC10YWlsLWNhbGwtaW5saW5lZC1jYWxsZXIt
YXJpdHktbWlzbWF0Y2ggICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA4NC43MTg4Ky0xLjU0MDMgICAgID8gICAgIDg1LjcxODYrLTMuNzA1MiAg
ICAgICAgPyBtaWdodCBiZSAxLjAxMTh4IHNsb3dlcgogICBhcnJheS13aXRoLWludDMyLW9yLWRv
dWJsZS1zdW0gICAgICAgICAgICAgICAgICAgICA1LjA2MTIrLTAuMjQ4MCAgICAgPyAgICAgIDUu
NDYxMCstMC42NTEzICAgICAgICA/IG1pZ2h0IGJlIDEuMDc5MHggc2xvd2VyCiAgIHN3aXRjaC1j
aGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguMDg4MistMC42OTk4
ICAgICAgICAgICAgNy40NDgyKy0wLjgxNzYgICAgICAgICAgbWlnaHQgYmUgMS4wODU5eCBmYXN0
ZXIKICAgc3VwZXItZ2V0dGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
MS4xMDI4Ky0xLjE5NzcgICAgICAgICAgIDQwLjg0NDkrLTEuODU3MyAgICAgICAgCiAgIGdlbmVy
YXRvci1zdW5zcGlkZXItYWNjZXNzLW5zaWV2ZSAgICAgICAgICAgICAgICAgIDguMzg4OSstMS4z
NDM3ICAgICAgICAgICAgNy44MDI3Ky0xLjMxMzQgICAgICAgICAgbWlnaHQgYmUgMS4wNzUxeCBm
YXN0ZXIKICAgYnVnLTE1MzQzMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNC43ODE5Ky0wLjQwNzkgICAgICAgICAgICA0LjY5NjUrLTAuMzM1NyAgICAgICAgICBtaWdo
dCBiZSAxLjAxODJ4IGZhc3RlcgogICBJbnQxNkFycmF5LWJ1YmJsZS1zb3J0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDI2LjAxMjUrLTEuMzMzOCAgICAgICAgICAgMjUuOTg4OCstMS45MDcx
ICAgICAgICAKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
czQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMC42MjQ2Ky0wLjA5NDUgICAgID8gICAgICAwLjY5MzkrLTAuMTg1MSAgICAgICAgPyBtaWdo
dCBiZSAxLjExMTB4IHNsb3dlcgogICBldmFsLWNvZGUtZnRsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDU4LjEzNzgrLTEuMDI2NyAgICAgICAgICAgNTcuNzM4OSstMS4wMDA2
ICAgICAgICAKICAgY2hhaW4tZ2V0dGVyLWFjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxNS4wMjc4Ky0xLjA3MTEgICAgICAgICAgIDE0Ljk1ODYrLTAuMzY1NyAgICAgICAgCiAg
IHN0cmluZy1jb25jYXQtc2ltcGxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguMDQz
NystMS4xNDA3ICAgICAgICAgICAgNy45MTYwKy0wLjg4MDkgICAgICAgICAgbWlnaHQgYmUgMS4w
MTYxeCBmYXN0ZXIKICAgYXJpdHktbWlzbWF0Y2gtaW5saW5pbmcgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMS40OTczKy0wLjE4MjcgICAgICAgICAgICAxLjQ1MTArLTAuMTk5OSAgICAgICAg
ICBtaWdodCBiZSAxLjAzMTl4IGZhc3RlcgogICBhcnJheS1wcm90b3R5cGUtZXZlcnkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDU0LjM2OTcrLTIxLjEwOTMgICAgICAgICAgNDkuNDIwMSst
My4zOTg0ICAgICAgICAgIG1pZ2h0IGJlIDEuMTAwMnggZmFzdGVyCiAgIGludC1vci1vdGhlci1h
YnMtdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgMTIuMTM1MSstMC43NjA0ICAgICA/
ICAgICAxMi40MDYyKy0wLjcwMTYgICAgICAgID8gbWlnaHQgYmUgMS4wMjIzeCBzbG93ZXIKICAg
ZnRsLXBvbHltb3JwaGljLWxzaGlmdCAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxOC45Mzc0
Ky0zLjU2MDQgICAgICAgICAgMjE2LjQxMDkrLTMuNjI0NCAgICAgICAgICBtaWdodCBiZSAxLjAx
MTd4IGZhc3RlcgogICBmb2xkLWdldC1ieS1pZC10by1tdWx0aS1nZXQtYnktb2Zmc2V0ICAgICAg
ICAgICAgIDEzLjUwMjgrLTIuNjYyOSAgICAgICAgICAgMTEuMzM4NSstMi42MTg2ICAgICAgICAg
IG1pZ2h0IGJlIDEuMTkwOXggZmFzdGVyCiAgIGlzLXN5bWJvbCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIuOTk1NistMC43MzYwICAgICAgICAgICAgMi43MTczKy0w
LjMzNDUgICAgICAgICAgbWlnaHQgYmUgMS4xMDI0eCBmYXN0ZXIKICAgaW50ZWdlci1tb2R1bG8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy42ODA5Ky0wLjQ0ODMgICAgICAg
ICAgICAzLjM4NzYrLTAuMjUzNSAgICAgICAgICBtaWdodCBiZSAxLjA4NjZ4IGZhc3RlcgogICBp
bnQtb3Itb3RoZXItZGl2LXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICA2LjAxMDgr
LTAuNDYxNCAgICAgPyAgICAgIDYuMDEzNCstMC40MTE0ICAgICAgICA/CiAgIGZvbGQtbXVsdGkt
Z2V0LWJ5LW9mZnNldC10by1wb2x5LWdldC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy4yOTIwKy0xLjAxMzEgICAgICAg
ICAgICA2LjkwOTcrLTAuODE2NCAgICAgICAgICBtaWdodCBiZSAxLjA1NTN4IGZhc3RlcgogICBv
YmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5ICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuNzIwMCstMC4x
ODIwICAgICAgICAgICAgMS43MTc5Ky0wLjI5NTYgICAgICAgIAogICBtYW55LWZvcmVhY2gtY2Fs
bHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjcyNzUrLTAuOTc5OCAgICAgICAg
ICAgIDMuMTg4MistMC4zODQzICAgICAgICAgIG1pZ2h0IGJlIDEuMTY5MnggZmFzdGVyCiAgIGlz
LW9iamVjdC1vci1udWxsLWZvbGQtbGVzcy10cmlja3kgICAgICAgICAgICAgICAgIDUuMjM4MSst
MC4zNTE3ICAgICAgICAgICAgNC45MTYyKy0wLjI1ODMgICAgICAgICAgbWlnaHQgYmUgMS4wNjU1
eCBmYXN0ZXIKICAgaXMtbnVtYmVyLWZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMy42NTkzKy0wLjIzNTkgICAgID8gICAgICAzLjY4MjArLTAuNDQ0NCAgICAgICAgPwog
ICBmb3Itb2YtaXRlcmF0ZS1hcnJheS12YWx1ZXMgICAgICAgICAgICAgICAgICAgICAgICA2Ljg0
NTArLTEuMTQ5MyAgICAgICAgICAgIDYuMjM3OCstMC43NzE0ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDk3M3ggZmFzdGVyCiAgIHJpY2hhcmRzLWVtcHR5LXRyeS1jYXRjaCAgICAgICAgICAgICAgICAg
ICAgICAgICAgNzYuNjI5NystMS42MjQzICAgICAgICAgICA3NS43ODE0Ky0xLjEyNjkgICAgICAg
ICAgbWlnaHQgYmUgMS4wMTEyeCBmYXN0ZXIKICAgZ2VuZXJhdG9yLWZ1bmN0aW9uLWNyZWF0ZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgNi4zNjgzKy0xLjMyODUgICAgICAgICAgICA1LjgyMDEr
LTAuNDU5OCAgICAgICAgICBtaWdodCBiZSAxLjA5NDJ4IGZhc3RlcgogICBzd2l0Y2gtY2hhci1j
b25zdGFudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjEzMTcrLTAuMjI3MiAgICAg
PyAgICAgIDMuNDE3OCstMC44NzU4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDkxM3ggc2xvd2VyCiAg
IGxvZ2ljYWwtbm90LXdlaXJkLXR5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMjkz
MCstMC4yNDYxICAgICA/ICAgICAgNC4zODQzKy0wLjI1NjUgICAgICAgID8gbWlnaHQgYmUgMS4w
MjEzeCBzbG93ZXIKICAgc3RyaW5nLXJlcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxMi44NjA3Ky0wLjY0ODQgICAgID8gICAgIDEzLjQwMzArLTAuNTc4MiAgICAgICAg
PyBtaWdodCBiZSAxLjA0MjJ4IHNsb3dlcgogICBmaXhlZC10eXBlZC1hcnJheS1zdG9yYWdlICAg
ICAgICAgICAgICAgICAgICAgICAgICAxLjk0MTArLTAuMTY3NSAgICAgICAgICAgIDEuODIwMist
MC4wNDMzICAgICAgICAgIG1pZ2h0IGJlIDEuMDY2NHggZmFzdGVyCiAgIG9iamVjdC1jbG9zdXJl
LWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuMDEzNSstNC45MzA2ICAgICAg
ICAgICAxMS42MjgwKy00LjQ3NzEgICAgICAgICAgbWlnaHQgYmUgMS4wMzMxeCBmYXN0ZXIKICAg
cHV0LWJ5LXZhbC13aXRoLXN0cmluZy1zbGlnaHRseS1wb2x5bW9ycGhpYyAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjI3MTgrLTAuMjg5
NiAgICAgPyAgICAgIDQuMzMzNSstMC4zODA1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE0NHggc2xv
d2VyCiAgIG1hdGgtd2l0aC1vdXQtb2YtYm91bmRzLWFycmF5LXZhbHVlcyAgICAgICAgICAgICAg
MzcuMTUwMystMS4wNzQwICAgICAgICAgICAzNi4zODM1Ky0wLjU3NzkgICAgICAgICAgbWlnaHQg
YmUgMS4wMjExeCBmYXN0ZXIKICAgSW50OEFycmF5LWxvYWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNS4zNjA1Ky0wLjYzMTcgICAgID8gICAgICA1LjM4OTIrLTAuMjU5MCAg
ICAgICAgPwogICBiaWdzd2l0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDI5Ljk5ODkrLTAuODM5NiAgICAgPyAgICAgMzguMjg4OSstMTQuODQzMCAgICAgICA/IG1p
Z2h0IGJlIDEuMjc2M3ggc2xvd2VyCiAgIGlzLXVuZGVmaW5lZC1mb2xkLXRyaWNreSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQuMzc0NystMC4yNjY1ICAgICA/ICAgICAgNC44MTM1Ky0wLjI0
MjggICAgICAgID8gbWlnaHQgYmUgMS4xMDAzeCBzbG93ZXIKICAgZGlyZWN0LXRhaWwtY2FsbC1p
bmxpbmVkLWNhbGxlciAgICAgICAgICAgICAgICAgICA3OC45NDgyKy0xLjY5MTYgICAgID8gICAg
IDk0LjQzMjYrLTQ2LjE1NDEgICAgICAgPyBtaWdodCBiZSAxLjE5NjF4IHNsb3dlcgogICBzdHJp
bmctcmVwZWF0LW5vdC1yZXNvbHZpbmctZml4ZWQgICAgICAgICAgICAgICAgICA1LjQyOTArLTAu
OTczMyAgICAgICAgICAgIDQuODIwMistMC40NzY4ICAgICAgICAgIG1pZ2h0IGJlIDEuMTI2M3gg
ZmFzdGVyCiAgIHY4LXJheXRyYWNlLXdpdGgtdHJ5LWNhdGNoICAgICAgICAgICAgICAgICAgICAg
ICAgNzcuMzMxMistMi4xMjcyICAgICAhICAgICA4Ny45MDA5Ky01LjAwNzggICAgICAgICEgZGVm
aW5pdGVseSAxLjEzNjd4IHNsb3dlcgogICBpbmxpbmUtZ2V0LXNjb3BlZC12YXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzLjY2NTQrLTAuMjUzNSAgICAgICAgICAgIDMuNDk5OCstMC4y
ODAxICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ3M3ggZmFzdGVyCiAgIHNpbXBsZS1wb2x5LWNhbGwt
bmVzdGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuNjgwMystMC43NTE4ICAgICA/ICAg
ICAgNi43OTk1Ky0wLjg2NzAgICAgICAgID8gbWlnaHQgYmUgMS4wMTc4eCBzbG93ZXIKICAgQXJy
YXlCdWZmZXItSW50OEFycmF5LWFsbG9jICAgICAgICAgICAgICAgICAgICAgICAyMC4zNzc1Ky0w
LjkxNzQgICAgICAgICAgIDIwLjEyMDArLTAuNTczNSAgICAgICAgICBtaWdodCBiZSAxLjAxMjh4
IGZhc3RlcgogICBzZXQtZm9yLW9mICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA5LjE1NzcrLTAuNzc0NSAgICAgICAgICAgIDguMTAxMSstMS4yMzA5ICAgICAgICAgIG1p
Z2h0IGJlIDEuMTMwNHggZmFzdGVyCiAgIGZyZWV6ZS1hbmQtZG8td29yayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTguMTM3NistMS43NDQ5ICAgICAgICAgICAxOC4xMTM5Ky0wLjg5
MjMgICAgICAgIAogICByZWdleHAtcHJvdG90eXBlLXRlc3Qtb2JzZXJ2YWJsZS1zaWRlLWVmZmVj
dHMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMC44OTM0Ky0wLjEwMTkgICAgICAgICAgICAwLjg3NzcrLTAuMDQ4MCAgICAgICAgICBtaWdo
dCBiZSAxLjAxNzl4IGZhc3RlcgogICBIYXNoTWFwLXB1dC1nZXQtaXRlcmF0ZS1rZXlzICAgICAg
ICAgICAgICAgICAgICAgIDM0LjIwMjQrLTAuNjQ0OSAgICAgPyAgICAgMzQuMzc0NCstMC44NTQ2
ICAgICAgICA/CiAgIHN0cmluZy1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDMuMTM5MystMC4yMTQ5ICAgICA/ICAgICAgMy4yNjEzKy0wLjU4ODAgICAgICAgID8g
bWlnaHQgYmUgMS4wMzg5eCBzbG93ZXIKICAgc2luay1mdW5jdGlvbiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOC44MzYyKy0xLjIwMDUgICAgICAgICAgICA3Ljk4ODArLTAu
Nzk4NyAgICAgICAgICBtaWdodCBiZSAxLjEwNjJ4IGZhc3RlcgogICBzcGFyc2UtY29uZGl0aW9u
YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjkxMjIrLTAuMTUzMiAgICAgPyAg
ICAgIDIuMDYyMystMC4yNDM4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDc4NXggc2xvd2VyCiAgIGZ1
bmN0aW9uLXdpdGgtZXZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTQuMzU1MCst
MC43MTI4ICAgICA/ICAgICA1NS4yMjMzKy0xLjI4ODkgICAgICAgID8gbWlnaHQgYmUgMS4wMTYw
eCBzbG93ZXIKICAgYXJyYXktcHJvdG90eXBlLXJlZHVjZVJpZ2h0ICAgICAgICAgICAgICAgICAg
ICAgICA0NS4wMjQ5Ky00Ljg4NzggICAgID8gICAgIDUxLjQ3MTcrLTIxLjY5NTcgICAgICAgPyBt
aWdodCBiZSAxLjE0MzJ4IHNsb3dlcgogICBldmFsLW5vdC1ldmFsLWNvbXB1dGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMxLjE3MDkrLTAuNTQ1MCAgICAgPyAgICAgMzIuMjgxNistMS41
NzIzICAgICAgICA/IG1pZ2h0IGJlIDEuMDM1Nnggc2xvd2VyCiAgIG5ldy1hcnJheS1wdXNoICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuOTU0MCstMS4wOTE5ICAgICA/ICAg
ICAgNy4zOTU3Ky0xLjIyNDUgICAgICAgID8gbWlnaHQgYmUgMS4yNDIxeCBzbG93ZXIKICAgcG9s
eXZhcmlhbnQtbW9ub21vcnBoaWMtZ2V0LWJ5LWlkICAgICAgICAgICAgICAgICAgNS44NTU5Ky0w
LjU4MjQgICAgID8gICAgICA2LjU0NDQrLTEuNDk0MSAgICAgICAgPyBtaWdodCBiZSAxLjExNzZ4
IHNsb3dlcgogICBmdGwtcG9seW1vcnBoaWMtcnNoaWZ0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMjE3LjcwMDYrLTIuMjkyMSAgICAgPyAgICAyMjAuMDc1OCstNy42MDk1ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDEwOXggc2xvd2VyCiAgIHJlZ2V4cC1sYXN0LWluZGV4ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTMuMTc3NistMC43MDk1ICAgICAgICAgICAxMi45NTg5Ky0wLjUz
NTQgICAgICAgICAgbWlnaHQgYmUgMS4wMTY5eCBmYXN0ZXIKICAgbWluLWJvb2xlYW4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4wODMyKy0wLjgxODkgICAgICAgICAg
ICAzLjcyMzgrLTAuMTY0OSAgICAgICAgICBtaWdodCBiZSAxLjA5NjV4IGZhc3RlcgogICBwb2x5
bW9ycGhpYy1wdXQtYnktdmFsLXdpdGgtc3RyaW5nICAgICAgICAgICAgICAgIDQwLjI4MDkrLTE3
LjQ1NTEgICAgICAgICAgMzQuMDczMCstMi4xODMwICAgICAgICAgIG1pZ2h0IGJlIDEuMTgyMngg
ZmFzdGVyCiAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wtc2VsZi1vci1wcm90byAgICAgICAgICAg
ICAgMTQuNzQxNCstMS44OTU5ICAgICA/ICAgICAxOC4wMjg4Ky02Ljg3NTIgICAgICAgID8gbWln
aHQgYmUgMS4yMjMweCBzbG93ZXIKICAgcHV0LWJ5LXZhbC1tYWNoaW5lLWludCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNC43MDc2Ky0wLjMxMjggICAgID8gICAgICA1LjI5ODIrLTEuMTk0
OCAgICAgICAgPyBtaWdodCBiZSAxLjEyNTV4IHNsb3dlcgogICBpbXVsLW1peGVkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjkwNDUrLTAuODE5MiAgICAgICAgICAg
IDQuODI3MSstMC40NTQxICAgICAgICAgIG1pZ2h0IGJlIDEuMDE2MHggZmFzdGVyCiAgIGdjc2Ut
cG9seS1nZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEuNTg0OCstMS4x
MzUwICAgICAgICAgICAyMC45NzQ3Ky0wLjg2MzEgICAgICAgICAgbWlnaHQgYmUgMS4wMjkxeCBm
YXN0ZXIKICAgZm9sZC1kb3VibGUtdG8taW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxOC4xMzU4Ky0wLjc4OTEgICAgICAgICAgIDE3Ljg1NjkrLTAuODA1OSAgICAgICAgICBtaWdo
dCBiZSAxLjAxNTZ4IGZhc3RlcgogICB0by1udW1iZXItY29uc3RydWN0b3Itb25seS1udW1iZXIg
ICAgICAgICAgICAgICAgICAxLjEwMDMrLTAuMzM5NiAgICAgPyAgICAgIDEuMTU2OSstMC4zNzY4
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDUxNXggc2xvd2VyCiAgIHRlbXBsYXRlLXN0cmluZy1hcnJh
eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuMTA1MSstMS40MDAwICAgICAgICAgICAg
OC45MTY0Ky0xLjQ1ODEgICAgICAgICAgbWlnaHQgYmUgMS4wMjEyeCBmYXN0ZXIKICAgaW4tZm91
ci1jYXNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNi4zNjgzKy0wLjI3
MTggICAgID8gICAgIDI3LjEyODUrLTEuMTM0MSAgICAgICAgPyBtaWdodCBiZSAxLjAyODh4IHNs
b3dlcgogICBpbnQtb3Itb3RoZXItc3ViICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA2Ljc3NjErLTAuNjU2NiAgICAgICAgICAgIDYuNDAyMCstMC40NzMyICAgICAgICAgIG1pZ2h0
IGJlIDEuMDU4NHggZmFzdGVyCiAgIHBvbHktY2hhaW4tYWNjZXNzLWRpZmZlcmVudC1wcm90b3R5
cGVzICAgICAgICAgICAgIDQuMDYzNSstMC4yNDk0ICAgICAgICAgICAgMy44OTU0Ky0wLjI0NTUg
ICAgICAgICAgbWlnaHQgYmUgMS4wNDMxeCBmYXN0ZXIKICAgc3VwZXItZ2V0LWJ5LXZhbC13aXRo
LXRoaXMtbW9ub21vcnBoaWMgICAgICAgICAgICAzMy44Mjg3Ky0yLjk2MTMgICAgID8gICAgIDM1
LjU1NzkrLTEuNDM5OCAgICAgICAgPyBtaWdodCBiZSAxLjA1MTF4IHNsb3dlcgogICBkb3VibGUt
dG8taW50MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTY4LjUxMjkrLTMuMDY1
NyAgICAgPyAgICAxNzAuODU1NistMS44Nzk0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEzOXggc2xv
d2VyCiAgIG1hbnktcmVwZWF0LXN0b3JlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MjYuNzU4MSstMS4wNDE0ICAgICAgICAgICAyNi4yNTM1Ky0wLjUwMzUgICAgICAgICAgbWlnaHQg
YmUgMS4wMTkyeCBmYXN0ZXIKICAgc3RyaW5nLXJlcGVhdC1zaW5nbGUtcmVzb2x2aW5nICAgICAg
ICAgICAgICAgICAgICAxMC40Nzk5Ky0wLjE1MjUgICAgID8gICAgIDEwLjU0NTcrLTAuMTI3NyAg
ICAgICAgPwogICBpcy1vYmplY3Qtb3ItbnVsbC10cmlja2llci1pbnRlcm5hbC1mdW5jdGlvbiAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0
LjU3NTcrLTAuNjA3NyAgICAgICAgICAgMTQuMjcyOSstMC44Mzc4ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDIxMnggZmFzdGVyCiAgIGZvbGQtcHV0LWJ5LXZhbC13aXRoLXN5bWJvbC10by1tdWx0aS1w
dXQtYnktb2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTQuNzMxMistMS44NjA5ICAgICAgICAgICAxMy42MTc0Ky0xLjc0OTEgICAg
ICAgICAgbWlnaHQgYmUgMS4wODE4eCBmYXN0ZXIKICAgQXJyYXlCdWZmZXItSW50OEFycmF5LWFs
bG9jLWxhcmdlLWxvbmctbGl2ZWQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA2OC42NjA1Ky0yLjQ5MDEgICAgICAgICAgIDY4LjAxNTArLTEu
MzkwOCAgICAgICAgCiAgIGFycmF5LXdpdGgtZG91YmxlLXN1bSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQuNzkxNistMC42NjA2ICAgICAgICAgICAgNC42MzQ2Ky0wLjIxMDMgICAgICAg
ICAgbWlnaHQgYmUgMS4wMzM5eCBmYXN0ZXIKICAgc3RyaW5nLXJlcGVhdC1zbWFsbC1yZXNvbHZp
bmcgICAgICAgICAgICAgICAgICAgICAzNC45MTI4Ky0xLjg3MDQgICAgID8gICAgIDM2LjQxNTgr
LTEuNTkzMSAgICAgICAgPyBtaWdodCBiZSAxLjA0MzB4IHNsb3dlcgogICBzdXBlci1nZXQtYnkt
aWQtd2l0aC10aGlzLXBvbHltb3JwaGljICAgICAgICAgICAgIDIzLjcwMzkrLTAuNzM5NCAgICAg
PyAgICAgMjQuNTUwOCstMS42MzAzICAgICAgICA/IG1pZ2h0IGJlIDEuMDM1N3ggc2xvd2VyCiAg
IHN3aXRjaC1zdHJpbmctYmFzaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQuNzEw
MSstMC40MDQ0ICAgICA/ICAgICAxNS4xNDM1Ky0xLjIxOTMgICAgICAgID8gbWlnaHQgYmUgMS4w
Mjk1eCBzbG93ZXIKICAgbGljbS1kcmFnb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA2MC41ODE5Ky0yNS45NTcxICAgICAgICAgIDQ5LjEwNzErLTEuMzUwNyAgICAgICAg
ICBtaWdodCBiZSAxLjIzMzd4IGZhc3RlcgogICB1bmRlZmluZWQtcHJvcGVydHktYWNjZXNzICAg
ICAgICAgICAgICAgICAgICAgICAgMzQzLjkwNDYrLTE0OC4yNDU4ICAgICAgICAyNzkuNjg1MSst
NC4xNjY5ICAgICAgICAgIG1pZ2h0IGJlIDEuMjI5NnggZmFzdGVyCiAgIGV2YWwtbm90LWV2YWwt
Y29tcHV0ZS1hcmdzICAgICAgICAgICAgICAgICAgICAgICAgMzEuMTc0MistMC42NDczICAgICA/
ICAgICAzMS45MjQ5Ky0wLjc0OTEgICAgICAgID8gbWlnaHQgYmUgMS4wMjQxeCBzbG93ZXIKICAg
YnJhbmNoLW9uLXN0cmluZy1hcy1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAxNS4zMDIz
Ky0wLjQ5MTcgICAgICAgICAgIDE1LjIwODkrLTAuODY4MCAgICAgICAgCiAgIHRvLW51bWJlci1z
dHJpbmctbnVtYmVyLXN0cmluZy1udW1iZXIgICAgICAgICAgICAgIDQuNDI4MCstMC40MTY3ICAg
ICA/ICAgICAgNC45NjE4Ky0wLjM2MTcgICAgICAgID8gbWlnaHQgYmUgMS4xMjA1eCBzbG93ZXIK
ICAgYXJyb3dmdW5jaXRvbi1yZWZlcmVuY2UtYXJndW1lbnRzICAgICAgICAgICAgICAgICAgMC44
OTkxKy0wLjAxOTQgICAgID8gICAgICAxLjAwNjYrLTAuMTYxNyAgICAgICAgPyBtaWdodCBiZSAx
LjExOTV4IHNsb3dlcgogICBsb2NhbGUtY29tcGFyZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDI4LjQ1NjUrLTEuODI3OCAgICAgICAgICAgMjguMTE2MystMS4wMzU0ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDEyMXggZmFzdGVyCiAgIGdldHRlci1uby1hY3RpdmF0aW9uICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDUuMTU2NystMC42MjYyICAgICAgICAgICAgNS4wNTE0
Ky0wLjQyNDcgICAgICAgICAgbWlnaHQgYmUgMS4wMjA5eCBmYXN0ZXIKICAgZGVsdGFibHVlLWZv
ci1vZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1OS4xNTU0Ky0xLjkxNDkgICAg
ID8gICAgIDYwLjEzNTErLTIuNDYyOCAgICAgICAgPyBtaWdodCBiZSAxLjAxNjZ4IHNsb3dlcgog
ICBzdHJpbmctY29uY2F0LWxvbmctY29udmVydCAgICAgICAgICAgICAgICAgICAgICAgIDkyLjIx
OTcrLTUuMTQ4MSAgICAgPyAgICAgOTIuNTQzNCstMi4xNjQ2ICAgICAgICA/CiAgIHB1dC1ieS12
YWwtd2l0aC1zdHJpbmctcmVwbGFjZS1hbmQtdHJhbnNpdGlvbiAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjczNjArLTAuMjg4MiAgICAg
PyAgICAgMTQuNzYxNSstMC4zOTIwICAgICAgICA/CiAgIHZhcmFyZ3Mtc3RyaWN0LW1vZGUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMuNzExOSstNS41ODIxICAgICAgICAgICAxMS4y
MjY1Ky0wLjc5MTUgICAgICAgICAgbWlnaHQgYmUgMS4yMjE0eCBmYXN0ZXIKICAgbG90cy1vZi1m
aWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy4xNjg1Ky0xLjEwNjcg
ICAgID8gICAgIDEzLjUwMDMrLTEuMTYwNSAgICAgICAgPyBtaWdodCBiZSAxLjAyNTJ4IHNsb3dl
cgogICB0ZWFyLW9mZi1hcmd1bWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1
LjIyMjMrLTAuODYxNSAgICAgPyAgICAgIDYuMDI3OSstMS4zNzg5ICAgICAgICA/IG1pZ2h0IGJl
IDEuMTU0M3ggc2xvd2VyCiAgIGlzLWFycmF5LWZvci1taXhlZC1jYXNlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDcuNDQ3MSstMS4xMjM1ICAgICA/ICAgICAgNy42NzM2Ky0xLjU1NzkgICAg
ICAgID8gbWlnaHQgYmUgMS4wMzA0eCBzbG93ZXIKICAgc2lua2FibGUtbmV3LW9iamVjdC10YWtl
biAgICAgICAgICAgICAgICAgICAgICAgICA0My4zMzA4Ky0yLjIxNzQgICAgICAgICAgIDQyLjc1
MDErLTEuMDgzNyAgICAgICAgICBtaWdodCBiZSAxLjAxMzZ4IGZhc3RlcgogICBkb3VibGUtdG8t
dWludDMyLXR5cGVkLWFycmF5LW5vLWlubGluZSAgICAgICAgICAgICA0LjQ1MDMrLTAuNzk1MyAg
ICAgPyAgICAgIDQuNzA5NystMS4wNjg4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDU4M3ggc2xvd2Vy
CiAgIHN0cmluZy1jb25jYXQtbG9uZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTQu
OTUwNSstMS4xMjI5ICAgICAgICAgICA1NC44NTM3Ky0xLjMzOTggICAgICAgIAogICBnZXQtYnkt
aWQtYmltb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy45MDg0Ky0w
LjI4NDMgICAgICAgICAgICAzLjY1MDIrLTAuMTg4MyAgICAgICAgICBtaWdodCBiZSAxLjA3MDd4
IGZhc3RlcgogICBhcnJvd2Z1bmN0aW9uLWNhbGwtaW4tZnVuY3Rpb24gICAgICAgICAgICAgICAg
ICAgIDE2LjE2MzArLTIuNzI1MCAgICAgICAgICAgMTQuNjYzMCstMC4yMDg2ICAgICAgICAgIG1p
Z2h0IGJlIDEuMTAyM3ggZmFzdGVyCiAgIG9idmlvdXNseS1lbGlkYWJsZS1uZXctb2JqZWN0ICAg
ICAgICAgICAgICAgICAgICAgMjAuMDYyNystMS4yMjE0ICAgICAgICAgICAxOS41MDAxKy0wLjQz
MTIgICAgICAgICAgbWlnaHQgYmUgMS4wMjg5eCBmYXN0ZXIKICAgaXMtbnVtYmVyLWZvbGQtdHJp
Y2t5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4yODExKy0wLjcxMjMgICAgID8gICAg
ICA1LjQ5NzMrLTAuNjMwOSAgICAgICAgPyBtaWdodCBiZSAxLjA0MDl4IHNsb3dlcgogICBnZXQt
YnktaWQtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uICAgICAgICAgICAgICA1LjExNTErLTAu
MTg5OCAgICAgICAgICAgIDUuMDA1OSstMC4yMTE5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIxOHgg
ZmFzdGVyCiAgIGZvbGQtbXVsdGktcHV0LWJ5LW9mZnNldC10by1yZXBsYWNlLW9yLXRyYW5zaXRp
b24tcHV0LWJ5LW9mZnNldCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEwLjgzNjgrLTEuMTAzNyAgICAgICAgICAgMTAuODI4MSstMC44MDcx
ICAgICAgICAKICAgb2J2aW91cy1zaW5rLXBhdGhvbG9neSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyMy41NDM5Ky0yLjIxNDggICAgICAgICAgIDIyLjI0MjcrLTAuMzA5OSAgICAgICAgICBt
aWdodCBiZSAxLjA1ODV4IGZhc3RlcgogICBsYXJnZS1pbnQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDE1LjA5NzcrLTAuNDA4MiAgICAgPyAgICAgMTUuNzk2MystMC41
NjQ1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ2M3ggc2xvd2VyCiAgIHN0cmluZy1yZXBlYXQtcmVz
b2x2aW5nLW5vLWlubGluZSAgICAgICAgICAgICAgICAgMzUuNTk0OCstMS4yOTkxICAgICA/ICAg
ICAzNS42NDY5Ky0wLjc1MzMgICAgICAgID8KICAgb2JqZWN0LWtleXMtbWFwLXZhbHVlcyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA2Ny42NTA5Ky0xLjM4NjggICAgID8gICAgIDY4Ljc3NDAr
LTIuMTY3MyAgICAgICAgPyBtaWdodCBiZSAxLjAxNjZ4IHNsb3dlcgogICBkZXN0cnVjdHVyaW5n
LXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbiAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjk0NDgrLTAuMzE2NCAgICAgICAg
ICAgIDAuNzg2NistMC4wNDk3ICAgICAgICAgIG1pZ2h0IGJlIDEuMjAxMnggZmFzdGVyCiAgIGdl
dF9jYWxsZWVfcG9seW1vcnBoaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNDUzNyst
Mi43ODE0ICAgICAgICAgICAgNS4xMTYwKy0wLjk5OTMgICAgICAgICAgbWlnaHQgYmUgMS4wNjYw
eCBmYXN0ZXIKICAgZGVzdHJ1Y3R1cmluZy1zd2FwICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNy4wODEyKy0wLjY2MjcgICAgICAgICAgICA2LjUxNDkrLTAuMjQwNyAgICAgICAgICBt
aWdodCBiZSAxLjA4Njl4IGZhc3RlcgogICBlbGlkYWJsZS1uZXctb2JqZWN0LXJvZmxjb3B0ZXIg
ICAgICAgICAgICAgICAgICAgIDI5LjYxMjkrLTQuMTE2MiAgICAgICAgICAgMjcuMDM2NystMy4x
NjcyICAgICAgICAgIG1pZ2h0IGJlIDEuMDk1M3ggZmFzdGVyCiAgIHN0cmluZy1nZXQtYnktdmFs
LW91dC1vZi1ib3VuZHMgICAgICAgICAgICAgICAgICAgIDcuNzM5NCstMC45MTI4ICAgICAgICAg
ICAgNy4zMjQ3Ky0wLjY3NjQgICAgICAgICAgbWlnaHQgYmUgMS4wNTY2eCBmYXN0ZXIKICAgcmVn
ZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZSAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LjU4ODYrLTAuMDE3NyAgICAgPyAgICAgIDAuNjQ5OSstMC4xMDY2ICAgICAgICA/IG1pZ2h0IGJl
IDEuMTA0Mnggc2xvd2VyCiAgIGV4aXQtbGVuZ3RoLW9uLXBsYWluLW9iamVjdCAgICAgICAgICAg
ICAgICAgICAgICAgMTYuMTI4MystMS4xODgxICAgICBeICAgICAxNC40OTI1Ky0wLjM0MTUgICAg
ICAgIF4gZGVmaW5pdGVseSAxLjExMjl4IGZhc3RlcgogICBvYmplY3QtaW50LXN1Yi1hcnJheSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0Ljk1OTgrLTAuNzA2NyAgICAgPyAgICAgMTUu
MzU3OCstMC41OTUzICAgICAgICA/IG1pZ2h0IGJlIDEuMDI2Nnggc2xvd2VyCiAgIGZvbGQtcHV0
LXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuNTM2NCstMy4yMjM4
ICAgICAgICAgICAgNS43NDU4Ky0wLjc5MzIgICAgICAgICAgbWlnaHQgYmUgMS4zMTE2eCBmYXN0
ZXIKICAgYmlnc3dpdGNoLWluZGlyZWN0LXN5bWJvbCAgICAgICAgICAgICAgICAgICAgICAgICA5
My4wMjYwKy0wLjkzMTAgICAgID8gICAgIDk0LjM5NTkrLTIuMzQ4MiAgICAgICAgPyBtaWdodCBi
ZSAxLjAxNDd4IHNsb3dlcgogICBwb2x5bW9ycGhpYy1zdHJ1Y3R1cmUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDE4LjE2NjQrLTEuMTc5OSAgICAgICAgICAgMTguMDcyMistMC45NTk0ICAg
ICAgICAKICAgZm9sZC1wdXQtYnktdmFsLXdpdGgtc3RyaW5nLXRvLW11bHRpLXB1dC1ieS1vZmZz
ZXQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxNC40NTA5Ky0yLjczMjYgICAgICAgICAgIDEzLjU4NzUrLTEuOTkyNyAgICAgICAgICBtaWdo
dCBiZSAxLjA2MzV4IGZhc3RlcgogICBmb3Itb2YtaXRlcmF0ZS1hcnJheS1lbnRyaWVzICAgICAg
ICAgICAgICAgICAgICAgIDEyLjM5MzArLTEuMzEzMCAgICAgPyAgICAgMTMuNjk3OSstMC45NDYy
ICAgICAgICA/IG1pZ2h0IGJlIDEuMTA1M3ggc2xvd2VyCiAgIGZha2UtaXRlcmF0b3JzLXRoYXQt
dGhyb3ctd2hlbi1maW5pc2hlZCAgICAgICAgICAxMzcuODMzMistMi40NTMyICAgICAhICAgIDI0
NC44OTQyKy0yLjg1ODcgICAgICAgICEgZGVmaW5pdGVseSAxLjc3Njd4IHNsb3dlcgogICBpcy1v
YmplY3Qtb3ItbnVsbC10cmlja3ktaW50ZXJuYWwtZnVuY3Rpb24gICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMS4zNjk1Ky0xLjEzMDAgICAg
ICAgICAgIDExLjEwMzArLTAuODY2MSAgICAgICAgICBtaWdodCBiZSAxLjAyNDB4IGZhc3Rlcgog
ICBzdHJpbmctdGVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjI1
MzQrLTAuMjU0NyAgICAgICAgICAgIDMuOTY4MSstMC4xODU5ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDcxOXggZmFzdGVyCiAgIHN0cmluZ2FsbG9jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxMTYuOTc1MSstMS4zODA1ICAgICA/ICAgIDExNy45Mjk4Ky0xLjQzNzEgICAgICAg
ID8KICAgcG9seS1jaGFpbi1hY2Nlc3Mtc2ltcGxlciAgICAgICAgICAgICAgICAgICAgICAgICAg
NC4zMjg2Ky0wLjU0NzQgICAgICAgICAgICA0LjA0ODkrLTAuMzg5OCAgICAgICAgICBtaWdodCBi
ZSAxLjA2OTF4IGZhc3RlcgogICBkaXJlY3QtYXJndW1lbnRzLXBvc3NpYmx5LW92ZXJyaWRkZW4t
bGVuZ3RoICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTAuNDc3OCstMC42MjU0ICAgICA/ICAgICAxMS4xNDc5Ky0wLjgzMzUgICAgICAgID8g
bWlnaHQgYmUgMS4wNjQweCBzbG93ZXIKICAgZ2xvYmFsLWNvZGUtZnRsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA0Ny42MDI1Ky0xLjUyOTUgICAgICAgICAgIDQ2LjMwMzArLTAu
ODI5MiAgICAgICAgICBtaWdodCBiZSAxLjAyODF4IGZhc3RlcgogICBmdGwtcG9seW1vcnBoaWMt
Yml0eG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgMTc5LjkwOTMrLTMuNTkzMCAgICAgPyAg
ICAxODAuODQ1MistMi40OTIzICAgICAgICA/CiAgIHB1dC1ieS12YWwtZGlyZWN0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAuNjEyNSstMC4wNDE2ICAgICAgICAgICAgMC42MDk3
Ky0wLjAzMDYgICAgICAgIAogICBwdXQtYnktdmFsLXdpdGgtc3ltYm9sLXJlcGxhY2UtYW5kLXRy
YW5zaXRpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxNC40NDQ4Ky0wLjM1OTUgICAgID8gICAgIDE0LjcyMTErLTAuNTM4MCAgICAgICAg
PyBtaWdodCBiZSAxLjAxOTF4IHNsb3dlcgogICBjYXB0dXJlZC1hc3NpZ25tZW50cyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjYzNjErLTAuMDM1OSAgICAgPyAgICAgIDAuNjUyNCst
MC4wMzI3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI1Nnggc2xvd2VyCiAgIGNhbGwtb3Itbm90LWNh
bGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDEuMDU4MystMS4wMjU0ICAgICA/
ICAgICA0Mi42MzczKy0xLjg5OTEgICAgICAgID8gbWlnaHQgYmUgMS4wMzg1eCBzbG93ZXIKICAg
ZnRsLXBvbHltb3JwaGljLXVyc2hpZnQgICAgICAgICAgICAgICAgICAgICAgICAgIDIzNC45MzU4
Ky0yLjk5MTUgICAgICAgICAgMjMyLjc3NjYrLTMuOTk4MSAgICAgICAgCiAgIG1hcnNhZ2xpYS1s
YXJnZXItaW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODYuOTM2NSstMi4zNjUyICAg
ICAgICAgICA4Ni4xNzc2Ky0yLjI5NjIgICAgICAgIAogICBpcy1mdW5jdGlvbi1mb2xkLXRyaWNr
eS1pbnRlcm5hbC1mdW5jdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDE0LjAyNzYrLTAuNTA0NCAgICAgPyAgICAgMTguMDEyMSstNy4w
NjM1ICAgICAgICA/IG1pZ2h0IGJlIDEuMjg0MHggc2xvd2VyCiAgIG1hdGgtdHJ1bmMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuMjEyMistNC44NjQyICAgICAgICAg
ICAgOC45MjE1Ky0wLjg1NzYgICAgICAgICAgbWlnaHQgYmUgMS4yNTY4eCBmYXN0ZXIKICAgb2Jq
ZWN0LWludC1hbmQtYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi40MjY4Ky0w
LjgyODQgICAgID8gICAgIDEzLjE4NTkrLTAuNjE2NSAgICAgICAgPyBtaWdodCBiZSAxLjA2MTF4
IHNsb3dlcgogICBkb3VibGUtcG9sbHV0aW9uLXB1dGJ5b2Zmc2V0ICAgICAgICAgICAgICAgICAg
ICAgICA1LjgyOTkrLTAuNzkzOSAgICAgISAgICAgNDAuMDE0MistMS45NDk1ICAgICAgICAhIGRl
ZmluaXRlbHkgNi44NjM2eCBzbG93ZXIKICAgYXNzaWduLWN1c3RvbS1zZXR0ZXItcG9seW1vcnBo
aWMgICAgICAgICAgICAgICAgICAgNS44NjA5Ky0wLjMzMjUgICAgID8gICAgICA2LjMzMzMrLTAu
Njg1MCAgICAgICAgPyBtaWdodCBiZSAxLjA4MDZ4IHNsb3dlcgogICBtb2QtYm9vbGVhbiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjY1ODUrLTAuOTQzOSAgICAgICAg
ICAgMTAuMDcwMCstMC42MTIwICAgICAgICAgIG1pZ2h0IGJlIDEuMDU4NHggZmFzdGVyCiAgIGlz
LWZ1bmN0aW9uLWZvbGQtdHJpY2t5ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMjMyNSst
MC40MDU4ICAgICA/ICAgICAgNS4yMzI4Ky0wLjExMTMgICAgICAgID8KICAgYXBwbHktbm90LWFw
cGx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi44MTY5Ky0wLjgxOTUgICAg
ICAgICAgICA2LjUxMDErLTAuMjg5OSAgICAgICAgICBtaWdodCBiZSAxLjA0NzF4IGZhc3Rlcgog
ICBIYXNoTWFwLXN0cmluZy1wdXQtZ2V0LWl0ZXJhdGUgICAgICAgICAgICAgICAgICAgIDM2LjE1
NTgrLTIuOTg4MCAgICAgICAgICAgMzQuNTgyNistMS4zNDU0ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDQ1NXggZmFzdGVyCiAgIG11bC1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDMuOTQyMCstMC4zNDc5ICAgICAgICAgICAgMy45Mjg3Ky0wLjYwMzEgICAgICAg
IAogICBzY29wZWQtYXJndW1lbnRzLW92ZXJyaWRkZW4tbGVuZ3RoICAgICAgICAgICAgICAgIDEy
LjUwODUrLTMuNDYyMSAgICAgICAgICAgMTEuNTQyOCstMC43NjgwICAgICAgICAgIG1pZ2h0IGJl
IDEuMDgzN3ggZmFzdGVyCiAgIGluZmVyLW9uZS10aW1lLWNsb3N1cmUtdHdvLXZhcnMgICAgICAg
ICAgICAgICAgICAgIDguNTgzNystMC40Nzc4ICAgICA/ICAgICAgOS4zMTE5Ky0wLjcyOTkgICAg
ICAgID8gbWlnaHQgYmUgMS4wODQ4eCBzbG93ZXIKICAgc2luLWJvb2xlYW4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOS45NTk2Ky0wLjk0NDAgICAgICAgICAgICA5LjI1
NjQrLTAuNjM2MSAgICAgICAgICBtaWdodCBiZSAxLjA3NjB4IGZhc3RlcgogICBpbXVsLWRvdWJs
ZS1vbmx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjY2MjgrLTAuNjg3MSAg
ICAgICAgICAgIDUuMDgyMCstMC4zNzE3ICAgICAgICAgIG1pZ2h0IGJlIDEuMTE0M3ggZmFzdGVy
CiAgIHRvLWludDMyLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYu
NzA1OSstMC42MjA0ICAgICA/ICAgICAxNi45NjI3Ky0wLjgyNzIgICAgICAgID8gbWlnaHQgYmUg
MS4wMTU0eCBzbG93ZXIKICAgdHJ5LWNhdGNoLXdvcmQtY291bnQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0Ny43NjI4Ky0xLjA2OTggICAgID8gICAgIDQ5LjQxODUrLTEuMjc0MCAgICAg
ICAgPyBtaWdodCBiZSAxLjAzNDd4IHNsb3dlcgogICBwdXQtYnktdmFsLXdpdGgtc3ltYm9sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDE2Ljc2MzIrLTAuODU5NCAgICAgPyAgICAgMTYuODk5
MSstMC44MDUzICAgICAgICA/CiAgIGZvbGQtbXVsdGktcHV0LWJ5LW9mZnNldC10by1wdXQtYnkt
b2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDYuMzY0NCstMC45NTQ1ICAgICA/ICAgICAgNi40MDY2Ky0wLjkzMTEgICAgICAgID8K
ICAgc2ltcGxlLXBvbHktY2FsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS44
ODk5Ky0wLjAyOTAgICAgID8gICAgICAyLjAzMzQrLTAuMjU4MiAgICAgICAgPyBtaWdodCBiZSAx
LjA3NTl4IHNsb3dlcgogICBvYnZpb3VzLXNpbmstcGF0aG9sb2d5LXRha2VuICAgICAgICAgICAg
ICAgICAgICAgMTE5Ljk1MjErLTEuOTQwOSAgICAgPyAgICAxMjEuMTAyNCstMS43MTI3ICAgICAg
ICA/CiAgIG1hcnNhZ2xpYS1vc3ItZW50cnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MjIuNzY0MystMC42MDc0ICAgICA/ICAgICAyMy4wNTc2Ky0wLjY0ODkgICAgICAgID8gbWlnaHQg
YmUgMS4wMTI5eCBzbG93ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1iaW1vcnBoaWMtY2hl
Y2stc3RydWN0dXJlLWVsaW1pbmF0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTMuMDQ0MistMC44ODYwICAgICAgICAgICAxMi43MDEy
Ky0wLjk0MzQgICAgICAgICAgbWlnaHQgYmUgMS4wMjcweCBmYXN0ZXIKICAgZnRsLXBvbHltb3Jw
aGljLXN1YiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxNC44MTEwKy0zLjUwNTcgICAg
ICAgICAgMjE0LjI3MzMrLTMuMjI0NiAgICAgICAgCiAgIG1ldGhvZC1vbi1udW1iZXIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAuNTEwMystMC4zOTAwICAgICA/ICAgICAyMS4w
OTg3Ky0wLjgxOTcgICAgICAgID8gbWlnaHQgYmUgMS4wMjg3eCBzbG93ZXIKICAgZ2V0dGVyLXJp
Y2hhcmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMS4yMzY4Ky00LjQwNzgg
ICAgICAgICAgMTE2LjY3NzQrLTUuMDg3OCAgICAgICAgICBtaWdodCBiZSAxLjAzOTF4IGZhc3Rl
cgogICBhcnJheS1wcm90b3R5cGUtc29tZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ2
LjM0OTgrLTMuMDI3NiAgICAgICAgICAgNDYuMTk5NistMi45NzA0ICAgICAgICAKICAgdHlwZWQt
YXJyYXktZ2V0LXNldC1ieS12YWwtcHJvZmlsaW5nICAgICAgICAgICAgICAyNy40OTY2Ky0wLjY4
MTkgICAgID8gICAgIDI4LjA5MzUrLTEuNjE5OSAgICAgICAgPyBtaWdodCBiZSAxLjAyMTd4IHNs
b3dlcgogICB1bnR5cGVkLXN0cmluZy1mcm9tLWNoYXItY29kZSAgICAgICAgICAgICAgICAgICAg
IDE0LjMzNzMrLTAuNjg1MyAgICAgPyAgICAgMTQuNDg2NSstMC43MzUxICAgICAgICA/IG1pZ2h0
IGJlIDEuMDEwNHggc2xvd2VyCiAgIEludDMyQXJyYXktYWxsb2MgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDUuODYyNSstMS4wNzgwICAgICAgICAgICAgNS40MjI2Ky0wLjk0NDcg
ICAgICAgICAgbWlnaHQgYmUgMS4wODExeCBmYXN0ZXIKICAgYmFzaWMtc2V0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy44NTEzKy0yLjk1MTYgICAgICAgICAgIDEx
Ljk5MDgrLTEuOTA4NSAgICAgICAgICBtaWdodCBiZSAxLjE1NTJ4IGZhc3RlcgogICBzdHJpbmct
cmVwZWF0LXNpbmdsZS1ub3QtcmVzb2x2aW5nICAgICAgICAgICAgICAgIDEwLjEwMzQrLTAuMjE1
OSAgICAgICAgICAgMTAuMDI2OCstMC4yMjU1ICAgICAgICAKICAgc2xvdy1jb252ZXJnZW5jZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS40NzEyKy0xLjk3NzkgICAgID8gICAg
ICA1LjUyMzMrLTEuMDQ2MSAgICAgICAgPwogICBnZXR0ZXItcHJvdG90eXBlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA3LjIxOTkrLTAuNTgyMSAgICAgPyAgICAgIDcuMzQ4MSst
MC43NDY2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3OHggc2xvd2VyCiAgIHN0cmluZy1wcm90b3R5
cGUtc2VhcmNoLW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNCAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjA2OTArLTAuNTE5MyAgICAgICAg
ICAgIDAuNjc0NSstMC4xMDcyICAgICAgICAgIG1pZ2h0IGJlIDEuNTg1MHggZmFzdGVyCiAgIGlu
bGluZS1hcmd1bWVudHMtbG9jYWwtZXNjYXBlICAgICAgICAgICAgICAgICAgICAgIDYuMjc3Mist
MS4yNzQ0ICAgICA/ICAgICAgNy45NTYxKy01LjA0NzEgICAgICAgID8gbWlnaHQgYmUgMS4yNjc1
eCBzbG93ZXIKICAgbGF6eS1hcnJheS1zcGVjaWVzLXdhdGNocG9pbnRzICAgICAgICAgICAgICAg
ICAgICAyNy45OTMwKy0xLjkwNzQgICAgID8gICAgIDI4Ljc2OTgrLTIuMjkwMCAgICAgICAgPyBt
aWdodCBiZSAxLjAyNzd4IHNsb3dlcgogICBhcmd1bWVudHMtb3V0LW9mLWJvdW5kcyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDEzLjQ2OTArLTAuNDk2NiAgICAgPyAgICAgMTMuNTI3OCstMC41
MjI3ICAgICAgICA/CiAgIHJpY2hhcmRzLXRyeS1jYXRjaCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyNzcuNzg0OSstNS4xMzczICAgICAhICAgIDI4Ny4zOTEzKy0zLjQzMzYgICAgICAg
ICEgZGVmaW5pdGVseSAxLjAzNDZ4IHNsb3dlcgogICB0by1udW1iZXItb25seS1zdHJpbmcgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyLjQ4OTcrLTAuMjQwMiAgICAgPyAgICAgIDIuNzA1
MCstMC4zMDMwICAgICAgICA/IG1pZ2h0IGJlIDEuMDg2NXggc2xvd2VyCiAgIHNpbXBsZS1hY3Rp
dmF0aW9uLWRlbW8gICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUuMTg0MystMy4zMzIwICAg
ICA/ICAgICAyNS42NzM1Ky0zLjI3MDMgICAgICAgID8gbWlnaHQgYmUgMS4wMTk0eCBzbG93ZXIK
ICAgRmxvYXQ2NEFycmF5LXRvLUludDE2QXJyYXktc2V0ICAgICAgICAgICAgICAgICAgICA2My40
ODgwKy0xLjYzNjUgICAgID8gICAgIDc1LjE2OTcrLTI5LjcyNDIgICAgICAgPyBtaWdodCBiZSAx
LjE4NDB4IHNsb3dlcgogICByZWdleHAtcHJvdG90eXBlLXNlYXJjaC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0czIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC41NDAwKy0wLjAxNDcgICAgID8gICAgICAwLjU0MjkrLTAuMDI3NyAgICAgICAg
PwogICBnbG9iYWwtaXNOYU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3
LjM3MTArLTEuMTc3NSAgICAgICAgICAgMTYuODc0MSstMS4wOTQ3ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDI5NHggZmFzdGVyCiAgIG9iamVjdC1pbnQtYWRkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTkuMDk3MistMS4wMDc4ICAgICAgICAgICAxOC45MTIxKy0wLjg0OTUgICAg
ICAgIAogICBkaXJlY3QtYXJndW1lbnRzLWdldGJ5dmFsICAgICAgICAgICAgICAgICAgICAgICAg
ICAyLjIwODErLTEuNzE3MiAgICAgICAgICAgIDEuNDgzNCstMC4xNjk3ICAgICAgICAgIG1pZ2h0
IGJlIDEuNDg4NXggZmFzdGVyCiAgIHNjb3BlZC1hcmd1bWVudHMtbGVuZ3RoICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMTAuOTU4NystMC45Mjk4ICAgICA/ICAgICAxMS4xMDAzKy0wLjg1MzQg
ICAgICAgID8gbWlnaHQgYmUgMS4wMTI5eCBzbG93ZXIKICAgc3RyaW5nLXJlcGVhdC1zbWFsbC1u
b3QtcmVzb2x2aW5nICAgICAgICAgICAgICAgICAgNC43ODQ1Ky0wLjk0NzIgICAgID8gICAgICA1
LjUzNzkrLTEuMzY0OCAgICAgICAgPyBtaWdodCBiZSAxLjE1NzV4IHNsb3dlcgogICBvYmplY3Qt
b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjA3NTYrLTAuNDMx
MyAgICAgPyAgICAgIDcuMTEzMSstMC4yMDY3ICAgICAgICA/CiAgIGltcGxpY2l0LWJpZ3N3aXRj
aC1pbmRpcmVjdC1zeW1ib2wgICAgICAgICAgICAgICAgNjYuNDUwMCstMS4wNzg2ICAgICAgICAg
ICA2Ni4zMzQ4Ky0xLjQ0MTQgICAgICAgIAogICBjcmVhdGUtbG90cy1vZi1mdW5jdGlvbnMgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEwLjM3NTkrLTAuMzU2NyAgICAgPyAgICAgMTAuNTU0OSst
MC4yNzAyICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3M3ggc2xvd2VyCiAgIHBvbHltb3JwaGljLXB1
dC1ieS1pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIuMzQxOCstMS4wMTY1ICAgICA/
ICAgICAzMi43NjczKy0xLjIwNzYgICAgICAgID8gbWlnaHQgYmUgMS4wMTMyeCBzbG93ZXIKICAg
cmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5ICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAu
NTgyNSstMC4wMTcxICAgICA/ICAgICAgMC42NTY4Ky0wLjEwOTEgICAgICAgID8gbWlnaHQgYmUg
MS4xMjc2eCBzbG93ZXIKICAgb2JqZWN0LXVyc2hpZnQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNy43MjI3Ky0wLjc2ODkgICAgID8gICAgICA4LjE5NjMrLTAuODk4MyAgICAg
ICAgPyBtaWdodCBiZSAxLjA2MTN4IHNsb3dlcgogICBwbHVzLWJvb2xlYW4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzLjI0MTQrLTAuMTg5NSAgICAgICAgICAgIDMuMTc3
OSstMC4wOTgwICAgICAgICAgIG1pZ2h0IGJlIDEuMDIwMHggZmFzdGVyCiAgIG1hcC1oYXMtZ2V0
LWNzZS1vcHBvcnR1bml0eSAgICAgICAgICAgICAgICAgICAgICAxMTEuMzU5NCstMS43ODkwICAg
ICA/ICAgIDExMi45ODgwKy0yLjY3ODggICAgICAgID8gbWlnaHQgYmUgMS4wMTQ2eCBzbG93ZXIK
ICAgcmF5dHJhY2Utd2l0aC10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAxMy4y
NTQzKy0xLjI3NjAgICAgID8gICAgIDEzLjQ2MjcrLTEuNTU1NCAgICAgICAgPyBtaWdodCBiZSAx
LjAxNTd4IHNsb3dlcgogICBib3VuZC1mdW5jdGlvbi1jb25zdHJ1Y3Rpb24tcGVyZm9ybWFuY2Ug
ICAgICAgICAgIDk0Ljc2ODUrLTMuNTM3NCAgICAgICAgICAgOTIuMDg2NSstMS42Mzk1ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDI5MXggZmFzdGVyCiAgIG9iamVjdC1sc2hpZnQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDcuNjkzNSstMC43MzU4ICAgICAgICAgICAgNy4zMDc4
Ky0wLjM2ODggICAgICAgICAgbWlnaHQgYmUgMS4wNTI4eCBmYXN0ZXIKICAgc2ltcGxlLXJlZ2V4
cC1leGVjLWZvbGRpbmcgICAgICAgICAgICAgICAgICAgICAgICAyNS4wNzQyKy0wLjQ1OTIgICAg
ID8gICAgIDI1LjI5MDArLTAuMjIyMSAgICAgICAgPwogICBhcnJheS13aXRoLWRvdWJsZS1pbmNy
ZW1lbnQgICAgICAgICAgICAgICAgICAgICAgICA1LjYxODArLTEuNTkyNSAgICAgICAgICAgIDUu
NTgzMSstMC44MDUwICAgICAgICAKICAgYXJyYXktcHJvdG90eXBlLW1hcCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1MC4yMDk1Ky00LjEzOTUgICAgID8gICAgIDUzLjEzOTgrLTUuMDg1
MSAgICAgICAgPyBtaWdodCBiZSAxLjA1ODR4IHNsb3dlcgogICBzb3J0aW5nLWJlbmNobWFyayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI2LjEwMDcrLTEuMzA5MSAgICAgPyAgICAg
MjcuODE1NCstMi44NDMxICAgICAgICA/IG1pZ2h0IGJlIDEuMDY1N3ggc2xvd2VyCiAgIEZsb2F0
MzJBcnJheS10by1GbG9hdDY0QXJyYXktc2V0ICAgICAgICAgICAgICAgICAgNDkuMTQ1NCstMi4x
NjczICAgICA/ICAgICA0OS41NTc3Ky0yLjc2MjYgICAgICAgID8KICAgc3ByZWFkLWxhcmdlLWFy
cmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMS4wNjQ0Ky0xLjY5MDAgICAgID8g
ICAgMjAzLjIxMzkrLTIuNjAxMiAgICAgICAgPyBtaWdodCBiZSAxLjAxMDd4IHNsb3dlcgogICBi
b3VuZC1mdW5jdGlvbi1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLjE2MTkr
LTAuNDE1OCAgICAgPyAgICAgMTMuODEwMSstMC44NjI5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ5
Mnggc2xvd2VyCiAgIG5ldy1hcnJheS1idWZmZXItcHVzaCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDguMDU5NCstMS42OTAyICAgICAgICAgICAgNy43MDEwKy0xLjQwMDYgICAgICAgICAg
bWlnaHQgYmUgMS4wNDY1eCBmYXN0ZXIKICAgc3dpdGNoLXN0cmluZy1iYXNpYy12YXIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxOC45ODU3Ky0xLjQ1OTggICAgID8gICAgIDE5LjczNjkrLTEu
ODg0MCAgICAgICAgPyBtaWdodCBiZSAxLjAzOTZ4IHNsb3dlcgogICByZXBlYXQtbXVsdGktZ2V0
LWJ5LW9mZnNldCAgICAgICAgICAgICAgICAgICAgICAgIDIwLjgwMjErLTAuNzY5NyAgICAgPyAg
ICAgMjIuMTMzNistMS4zODYyICAgICAgICA/IG1pZ2h0IGJlIDEuMDY0MHggc2xvd2VyCiAgIGlz
LWFycmF5LWZvci1wcm94eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNDU1Nyst
MS4zMjA5ICAgICAgICAgICAgNC43NDI2Ky0wLjQzODEgICAgICAgICAgbWlnaHQgYmUgMS4xNTA0
eCBmYXN0ZXIKICAgZG91YmxlLWdldC1ieS12YWwtb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAg
ICAgICAgNi44NTkwKy0wLjY3NzIgICAgID8gICAgICA3LjIyMTUrLTAuOTYzNiAgICAgICAgPyBt
aWdodCBiZSAxLjA1Mjh4IHNsb3dlcgogICBzdHJpbmctcHJvdG90eXBlLXNlYXJjaC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0czMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC43MjUzKy0wLjE3NzggICAgICAgICAgICAwLjY4NDYrLTAuMDQ4
NiAgICAgICAgICBtaWdodCBiZSAxLjA1OTR4IGZhc3RlcgogICBtZWdhbW9ycGhpYy1sb2FkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM2LjkzMzgrLTAuNzE2NyAgICAgPyAgICAg
MzcuMTYyOCstMi42NDIwICAgICAgICA/CiAgIGluZmVyLWNsb3N1cmUtY29uc3QtdGhlbi1yZWVu
dGVyICAgICAgICAgICAgICAgICAgMjkuNjc0MSstMS4wMjM5ICAgICAgICAgICAyOC45NTU5Ky0w
LjgyMDggICAgICAgICAgbWlnaHQgYmUgMS4wMjQ4eCBmYXN0ZXIKICAgZ2VuZXJhdG9yLWZpYiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMC4zMzY3Ky0wLjg5NjkgICAgICAg
ICAgIDI5LjcwOTErLTEuMDg3NyAgICAgICAgICBtaWdodCBiZSAxLjAyMTF4IGZhc3RlcgogICBm
b2xkLXB1dC1ieS1pZC10by1tdWx0aS1wdXQtYnktb2Zmc2V0ICAgICAgICAgICAgIDEzLjI2NzIr
LTIuMjUxOCAgICAgICAgICAgMTMuMTk0NSstMi4xODc4ICAgICAgICAKICAgc3RyaW5nLXRyYW5z
Y29kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS40MzEyKy0yLjE4MzYgICAg
ICEgICAgIDI1LjE1MDgrLTAuOTM2OSAgICAgICAgISBkZWZpbml0ZWx5IDEuMTczNnggc2xvd2Vy
CiAgIHdlaXJkLWlubGluaW5nLWNvbnN0LXByb3AgICAgICAgICAgICAgICAgICAgICAgICAgIDMu
NjgwOCstMC4zMTk5ICAgICA/ICAgICAgMy45MDg2Ky0wLjc2ODggICAgICAgID8gbWlnaHQgYmUg
MS4wNjE5eCBzbG93ZXIKICAgc3RyY2F0LWNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNy4xMDgwKy0wLjQzMjUgICAgID8gICAgICA3LjU1MjMrLTAuODA1MyAgICAg
ICAgPyBtaWdodCBiZSAxLjA2MjV4IHNsb3dlcgogICBtaXNjLXN0cmljdC1lcSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDI1LjE0MTgrLTAuNTYzMSAgICAgPyAgICAgMjUuMjY4
MCstMC41NTMxICAgICAgICA/CiAgIGdlbmVyYXRvci13aXRoLXNldmVyYWwtdHlwZXMgICAgICAg
ICAgICAgICAgICAgICAxNTIuNTM0NistMjEuMzA0NSAgICAgICAgIDE0Ni40ODc0Ky0xOS4wODA2
ICAgICAgICAgbWlnaHQgYmUgMS4wNDEzeCBmYXN0ZXIKICAgc3RyaW5nLWhhc2ggICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi44NDY5Ky0wLjE3MTUgICAgID8gICAgICAy
Ljg3NTgrLTAuMjExMSAgICAgICAgPyBtaWdodCBiZSAxLjAxMDF4IHNsb3dlcgogICBpcy1vYmpl
Y3Qtb3ItbnVsbC1mb2xkLWZ1bmN0aW9ucyAgICAgICAgICAgICAgICAgICAzLjg5NjUrLTAuMzI2
NSAgICAgICAgICAgIDMuNjMyMCstMC4yNDg1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDcyOHggZmFz
dGVyCiAgIGluZmVyLWNvbnN0YW50LWdsb2JhbC1wcm9wZXJ0eSAgICAgICAgICAgICAgICAgICAg
IDQuMjU5MCstMC45MzUyICAgICAgICAgICAgNC4yMDgwKy0wLjUxMjYgICAgICAgICAgbWlnaHQg
YmUgMS4wMTIxeCBmYXN0ZXIKICAgY2FsbC11c2luZy1zcHJlYWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMi45MDM1Ky0xLjIyMTUgICAgICAgICAgIDEyLjg5MzUrLTEuMDA1NCAg
ICAgICAgCiAgIGludDUyLXNwaWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDkuNDA0MSstMy4zMzM3ICAgICAgICAgICAgNy4zMTg1Ky0wLjY3OTggICAgICAgICAgbWln
aHQgYmUgMS4yODUweCBmYXN0ZXIKICAgZ2V0dGVyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNS4zNDMwKy0wLjM2ODYgICAgID8gICAgICA1LjgzMDgrLTAuNjgw
MSAgICAgICAgPyBtaWdodCBiZSAxLjA5MTN4IHNsb3dlcgogICBwbHVzLWJvb2xlYW4tYXJpdGgg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjU5MDcrLTAuMjM1NyAgICAgPyAgICAg
IDMuNjE5NystMC4yMTIwICAgICAgICA/CiAgIGxhcmdlLWludC1jYXB0dXJlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDUuNzAxNSstMC45MTc3ICAgICAgICAgICAgNS42NTA1Ky0w
LjgwNzUgICAgICAgIAogICBzaW5rYWJsZS1uZXctb2JqZWN0LWRhZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQ5LjgwNTkrLTAuNTk5MSAgICAgPyAgICAgNTAuNTEwMistMS42MTgzICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDE0MXggc2xvd2VyCiAgIGV2YWwtY29tcHV0ZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMzMuMjI5MSstMS4yODUyICAgICA/ICAgICA0OC4yODUw
Ky0yMS42NDI5ICAgICAgID8gbWlnaHQgYmUgMS40NTMxeCBzbG93ZXIKICAgc3dpdGNoLXN0cmlu
Zy1sZW5ndGgtdG93ZXItdmFyICAgICAgICAgICAgICAgICAgICAxOC45ODU3Ky0wLjUyODMgICAg
ID8gICAgIDE5LjY0OTMrLTEuMzAyMCAgICAgICAgPyBtaWdodCBiZSAxLjAzNDl4IHNsb3dlcgog
ICBhcnJvd2Z1bmNpdG9uLWRpcmVjdC1hcmd1bWVudHMgICAgICAgICAgICAgICAgICAgICAxLjQ2
MzIrLTAuMDg2NSAgICAgPyAgICAgIDEuNDcwMistMC4wNzYzICAgICAgICA/CiAgIGhvaXN0LW1h
a2Utcm9wZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMzg1MystMS4xNTAw
ICAgICA/ICAgICAgNi42NDg0Ky0xLjI1MTUgICAgICAgID8gbWlnaHQgYmUgMS4wNDEyeCBzbG93
ZXIKICAgZW1wdHktc3RyaW5nLXBsdXMtaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ny42NDQ5Ky0xLjE4NjYgICAgICAgICAgICA2LjI4MjErLTAuMTkyNCAgICAgICAgICBtaWdodCBi
ZSAxLjIxNjl4IGZhc3RlcgogICB2OC1yZWdleHAtc2VhcmNoICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDY2Ljg2MzErLTIuMDQ1MCAgICAgICAgICAgNjYuNzUzMSstMS40MzgwICAg
ICAgICAKICAgc3ltYm9sLXRvc3RyaW5ndGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMy44ODE0Ky0wLjMwMjMgICAgID8gICAgICA0LjU5NzQrLTAuNzE0NSAgICAgICAgPyBtaWdo
dCBiZSAxLjE4NDV4IHNsb3dlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUt
c2lkZS1lZmZlY3RzMy1nbG9iYWwgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMC42ODQyKy0wLjAyNTEgICAgID8gICAgICAwLjcxNjUrLTAu
MDY1MSAgICAgICAgPyBtaWdodCBiZSAxLjA0NzN4IHNsb3dlcgogICByZWdleHAtcHJvdG90eXBl
LWlzLW5vdC1pbnN0YW5jZSAgICAgICAgICAgICAgICAgICAwLjczNDkrLTAuMTM4OCAgICAgPyAg
ICAgIDAuNzU4NystMC4xMTE2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMyM3ggc2xvd2VyCiAgIHJl
Z2V4cC1uZXN0ZWQtbm9uemVyby1taW4tY291bnRlZC1wYXJlbnMgICAgICAgICAgIDAuNTA5OSst
MC4wNzUyICAgICA/ICAgICAgMC41Nzk1Ky0wLjE1NTIgICAgICAgID8gbWlnaHQgYmUgMS4xMzY0
eCBzbG93ZXIKICAgaW5kZXhlZC1wcm9wZXJ0aWVzLWluLW9iamVjdHMgICAgICAgICAgICAgICAg
ICAgICAgNC41NzgyKy0wLjQ0OTMgICAgID8gICAgICA0LjYxNTYrLTAuMjA4MyAgICAgICAgPwog
ICBpbnQtb3Itb3RoZXItc3ViLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICA4LjY0
OTQrLTAuNTE4NCAgICAgPyAgICAgIDguOTI2OSstMC42OTMzICAgICAgICA/IG1pZ2h0IGJlIDEu
MDMyMXggc2xvd2VyCiAgIHJheXRyYWNlLXdpdGgtZW1wdHktdHJ5LWNhdGNoICAgICAgICAgICAg
ICAgICAgICAgIDguODE5MystMS40MzI3ICAgICA/ICAgICAgOS4yNzcwKy0yLjAyODEgICAgICAg
ID8gbWlnaHQgYmUgMS4wNTE5eCBzbG93ZXIKICAgaW50LW9yLW90aGVyLW11bC10aGVuLWdldC1i
eS12YWwgICAgICAgICAgICAgICAgICAgOS4yNDcxKy0wLjc2MzEgICAgICAgICAgICA4LjgxMDkr
LTAuNzU3OCAgICAgICAgICBtaWdodCBiZSAxLjA0OTV4IGZhc3RlcgogICB0ZW1wb3JhbC1zdHJ1
Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LjE1NDIrLTAuODI3MyAgICAg
ICAgICAgMTUuOTY4NSstMC43MTM0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDExNnggZmFzdGVyCiAg
IHNsb3ctdGVybmFyaWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTcuNzIy
MistMS4zNzMzICAgICA/ICAgICAxNy43NzYxKy0wLjgxMTIgICAgICAgID8KICAgYmlnc3dpdGNo
LWluZGlyZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Ni45MzM3Ky01LjI4MDQg
ICAgICAgICAgIDU2LjAwMjQrLTIuMTEyNiAgICAgICAgICBtaWdodCBiZSAxLjAxNjZ4IGZhc3Rl
cgogICBkaXJlY3QtYXJndW1lbnRzLWxlbmd0aCAgICAgICAgICAgICAgICAgICAgICAgICAgIDEx
LjcyMzcrLTEuOTQyMSAgICAgICAgICAgMTEuMDAxNCstMC40MjE4ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDY1N3ggZmFzdGVyCiAgIGNlbGwtYXJndW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQuMjY4NCstMC4xOTM0ICAgICA/ICAgICAgNC40MTE1Ky0wLjQ0MTMgICAg
ICAgID8gbWlnaHQgYmUgMS4wMzM1eCBzbG93ZXIKICAgdHJ5LWNhdGNoLWdldC1ieS12YWwtY2xv
bmVkLWFyZ3VtZW50cyAgICAgICAgICAgICAgNy4yNzU4Ky0zLjA5OTYgICAgICAgICAgICA2LjM2
MzYrLTAuNzE0NiAgICAgICAgICBtaWdodCBiZSAxLjE0MzN4IGZhc3RlcgogICBzdHJpbmctb3V0
LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjE5ODErLTAuODc2NSAg
ICAgICAgICAgMTMuOTM3MSstMC43MzcwICAgICAgICAgIG1pZ2h0IGJlIDEuMDE4N3ggZmFzdGVy
CiAgIGZ0bC1wb2x5bW9ycGhpYy1TdHJpbmdGcm9tQ2hhckNvZGUgICAgICAgICAgICAgICAgNTYu
ODQyNystMC45MDA4ICAgICA/ICAgICA1Ny4zNjMzKy0yLjE1MjkgICAgICAgID8KICAgYXJyYXkt
cHJvdG90eXBlLWZvckVhY2ggICAgICAgICAgICAgICAgICAgICAgICAgICA0Mi42NTQ1Ky0zLjEx
NzggICAgID8gICAgIDQ1LjY1OTIrLTMuNDc1OCAgICAgICAgPyBtaWdodCBiZSAxLjA3MDR4IHNs
b3dlcgogICBzaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsICAgICAgICAgICAgICAgICAg
ICA2LjIzOTIrLTEuMjYxNSAgICAgPyAgICAgIDcuNTc1NCstMy4wNjcyICAgICAgICA/IG1pZ2h0
IGJlIDEuMjE0Mnggc2xvd2VyCiAgIGludC1vci1vdGhlci1tb2QtdGhlbi1nZXQtYnktdmFsICAg
ICAgICAgICAgICAgICAgIDYuMjYyNCstMC40MjcwICAgICAgICAgICAgNi4xMDA5Ky0wLjM5NzYg
ICAgICAgICAgbWlnaHQgYmUgMS4wMjY1eCBmYXN0ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNjc3NystMC4wMTMyICAgICA/
ICAgICAgMC43NDc5Ky0wLjExOTAgICAgICAgID8gbWlnaHQgYmUgMS4xMDM1eCBzbG93ZXIKICAg
c3RyaW5nLXJlcGVhdC1ub3QtcmVzb2x2aW5nICAgICAgICAgICAgICAgICAgICAgICAgNS45MTE3
Ky0xLjEyMzMgICAgICAgICAgICA1LjQ4MTYrLTAuOTY5MyAgICAgICAgICBtaWdodCBiZSAxLjA3
ODV4IGZhc3RlcgogICBmdGwtbGlicmFyeS1pbmxpbmluZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDMxLjI3MjgrLTIuNDE4OCAgICAgICAgICAgMzAuNjY3OCstMS4yMDAzICAgICAgICAg
IG1pZ2h0IGJlIDEuMDE5N3ggZmFzdGVyCiAgIHB1dC1ieS12YWwtd2l0aC1zeW1ib2wtc2xpZ2h0
bHktcG9seW1vcnBoaWMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNC42NzE4Ky0wLjU5OTYgICAgID8gICAgICA1LjAwMjArLTAuMzI3NiAg
ICAgICAgPyBtaWdodCBiZSAxLjA3MDd4IHNsb3dlcgogICBOdW1iZXItaXNOYU4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LjkxNzgrLTAuOTE0MiAgICAgPyAgICAgMTcu
NjQ3OSstMC44MDY5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQzMnggc2xvd2VyCiAgIGdldC1ieS12
YWwtd2l0aC1zeW1ib2wtcXVhZG1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uLXNp
bXBsZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA1LjgxOTUrLTAuNDc5MiAgICAgPyAgICAgIDUuOTc2NystMC41MTM4ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDI3MHggc2xvd2VyCiAgIHRyeS1jYXRjaC1nZXQtYnktdmFsLXNjb3BlZC1hcmd1
bWVudHMgICAgICAgICAgICAgIDYuOTUyOSstMC45OTIwICAgICAgICAgICAgNi43NjMxKy0xLjE0
NjUgICAgICAgICAgbWlnaHQgYmUgMS4wMjgxeCBmYXN0ZXIKICAgZXZhbC1jYWNoZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC44NTMyKy0xLjUxNTAgICAgID8gICAg
IDI1LjU0MDYrLTIuNDg4OSAgICAgICAgPyBtaWdodCBiZSAxLjAyNzd4IHNsb3dlcgogICBkaXJl
Y3QtY29uc3RydWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEyLjQ2MTgrLTEu
OTI4NyAgICAgPyAgICAxMTUuMDQwNistNS4wMzc5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIyOXgg
c2xvd2VyCiAgIHByZXZlbnQtZXh0ZW5zaW9ucy1hbmQtZG8td29yayAgICAgICAgICAgICAgICAg
ICAgMTguNzk2OCstMS4wMzAyICAgICA/ICAgICAyMC42NzU3Ky01LjYwOTEgICAgICAgID8gbWln
aHQgYmUgMS4xMDAweCBzbG93ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0czMtZmxhZ3MgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMC42NjMyKy0wLjE3NTYgICAgICAgICAgICAwLjU5NjIrLTAu
MDM3NyAgICAgICAgICBtaWdodCBiZSAxLjExMjV4IGZhc3RlcgogICBlbGlkYWJsZS1uZXctb2Jq
ZWN0LXRoZW4tY2FsbCAgICAgICAgICAgICAgICAgICAgIDIyLjk5NDgrLTAuNzkyMCAgICAgPyAg
ICAgMjQuMDQ5NystMi4zMzEzICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ1OXggc2xvd2VyCiAgIElu
dDE2QXJyYXktYWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAgICAgICAgICAgICAgNjQuNzMxNist
Mi4xOTI1ICAgICA/ICAgICA2OS45MzE1Ky03LjE5NDQgICAgICAgID8gbWlnaHQgYmUgMS4wODAz
eCBzbG93ZXIKICAgb2JqZWN0LWludC1tdWwtYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxNC40NzY2Ky0wLjk4NTYgICAgICAgICAgIDE0LjIyMjErLTEuMDIyMyAgICAgICAgICBt
aWdodCBiZSAxLjAxNzl4IGZhc3RlcgogICBnbG9iYWwtb2JqZWN0LWFjY2Vzcy13aXRoLW11dGF0
aW5nLXN0cnVjdHVyZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA3LjYxNTErLTEuMDYxNCAgICAgPyAgICAgIDguMjUwNistMS4yNzIyICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDgzNXggc2xvd2VyCiAgIGxvYWQtdmFyYXJncy1lbGltaW5hdGlv
biAgICAgICAgICAgICAgICAgICAgICAgICAgMjAuMjM5NCstMC43NTUyICAgICA/ICAgICAyMS41
NDM3Ky0xLjM4NTQgICAgICAgID8gbWlnaHQgYmUgMS4wNjQ0eCBzbG93ZXIKICAgbnVtYmVyLXRl
c3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4wNTg2Ky0xLjc1Mzkg
ICAgICAgICAgICA0LjcxNTkrLTAuNDcyOCAgICAgICAgICBtaWdodCBiZSAxLjA3Mjd4IGZhc3Rl
cgogICBJbnQxNkFycmF5LWJ1YmJsZS1zb3J0LXdpdGgtYnl0ZUxlbmd0aCAgICAgICAgICAgIDI4
LjI3NjUrLTIuNzExNyAgICAgPyAgICAgMjguNTM3NistMi4yODQ5ICAgICAgICA/CiAgIHN0cmlj
dC1vc3ItZW50cnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuNTA1MistMC40
NDc2ICAgICAgICAgICAxMi4yOTQ2Ky0wLjU3NzAgICAgICAgICAgbWlnaHQgYmUgMS4wMTcxeCBm
YXN0ZXIKICAgZXh0ZXJuYWwtYXJndW1lbnRzLXB1dGJ5dmFsICAgICAgICAgICAgICAgICAgICAg
ICAgMy4zNDMxKy0wLjQ2NDkgICAgID8gICAgICAzLjM3MTYrLTAuMzU1MyAgICAgICAgPwogICBk
ZXN0cnVjdHVyaW5nLWFyZ3VtZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ2LjY3MTYr
LTEuMjA4OCAgICAgPyAgICAgNDcuMjA2OSstMS44MzM5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEx
NXggc2xvd2VyCiAgIHN0cmluZy1yZXBlYXQtYXJpdGggICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMjcuMDYxMistMC40MDUzICAgICA/ICAgICAyNy4yMTg0Ky0wLjUyMzggICAgICAgID8K
ICAgZ2VuZXJhdG9yLWNyZWF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4y
MjQzKy0wLjA3NDggICAgICAgICAgICAxLjE5MzErLTAuMDQ2MCAgICAgICAgICBtaWdodCBiZSAx
LjAyNjF4IGZhc3RlcgogICBzZXR0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0Ljg4MzkrLTAuMjc4MCAgICAgICAgICAgIDQuNzI4NCstMC4yNTQ4ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDMyOXggZmFzdGVyCiAgIGdldF9ieV92YWwtSW50MzJBcnJheSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEuOTE3NystMC4wMjE2ICAgICA/ICAgICAgMS45NjQ1
Ky0wLjA2NDggICAgICAgID8gbWlnaHQgYmUgMS4wMjQ0eCBzbG93ZXIKICAgZ2V0LWJ5LXZhbC13
aXRoLXN0cmluZy1iaW1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuMTk4Mist
MS4xMDEzICAgICA/ICAgICAxMC40Nzk3Ky0wLjkzMDYgICAgICAgID8gbWlnaHQgYmUgMS4wMjc2
eCBzbG93ZXIKICAgYXJyYXktbm9uYXJyYXktcG9seW1vcmhwaWMtYWNjZXNzICAgICAgICAgICAg
ICAgICAzMC43MTk5Ky0yLjM4MDggICAgICAgICAgIDI4Ljk2NzArLTEuNjAwMiAgICAgICAgICBt
aWdodCBiZSAxLjA2MDV4IGZhc3RlcgogICBhcnJheS13aXRoLWRvdWJsZS1hZGQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA1LjY4NjIrLTAuMzY2NSAgICAgPyAgICAgIDUuODczNSstMC40
MzU1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMyOXggc2xvd2VyCiAgIGJyYW5jaC1mb2xkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuNDY0MSstMC4zOTEwICAgICAgICAg
ICAgNi40MTk3Ky0wLjg1MDYgICAgICAgIAogICB0by1udW1iZXItY29uc3RydWN0b3Itc3RyaW5n
LW51bWJlci1zdHJpbmctbnVtYmVyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDUuMTM0NystMC44MjA4ICAgICA/ICAgICAgNS42OTU5Ky0y
LjA2NjEgICAgICAgID8gbWlnaHQgYmUgMS4xMDkzeCBzbG93ZXIKICAgaW4tb25lLWNhc2UtZmFs
c2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNC40NTA2Ky00LjM4MDAgICAgICAg
ICAgIDExLjc3MjgrLTAuNTQ0OCAgICAgICAgICBtaWdodCBiZSAxLjIyNzV4IGZhc3RlcgogICBh
cmd1bWVudHMtc3RyaWN0LW1vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUwLjU2MjEr
LTAuNjY2NSAgICAgPyAgICAgNTEuODQ2NSstNC41ODM1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI1
NHggc2xvd2VyCiAgIEFycmF5QnVmZmVyLUludDhBcnJheS1hbGxvYy1sb25nLWxpdmVkLWJ1ZmZl
ciAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMwLjY5MTkrLTAuODMwNyAgICAgICAgICAgMzAuMzMxNistMC4zMDMyICAgICAgICAgIG1pZ2h0
IGJlIDEuMDExOXggZmFzdGVyCiAgIG1hcC1yZWhhc2ggICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDkuMDU2OCstMC45MDY2ICAgICA/ICAgICAxMC4yMzQwKy0xLjEzNDkg
ICAgICAgID8gbWlnaHQgYmUgMS4xMzAweCBzbG93ZXIKICAgYnktdmFsLWdlbmVyaWMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4yMjMzKy0wLjMyMTcgICAgID8gICAgICAz
LjgwOTArLTAuMzc4OSAgICAgICAgPyBtaWdodCBiZSAxLjE4MTd4IHNsb3dlcgogICBjYXN0LWlu
dC10by1kb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjAyNTYrLTAuNDQ4
NyAgICAgPyAgICAgIDcuNTIxOSstMC42ODgzICAgICAgICA/IG1pZ2h0IGJlIDEuMDcwNnggc2xv
d2VyCiAgIGdldC1ieS1pZC1wcm90by1vci1zZWxmICAgICAgICAgICAgICAgICAgICAgICAgICAg
MTIuMzQzMCstMS40MjQyICAgICAgICAgICAxMi4yMzY2Ky0xLjA3ODIgICAgICAgIAogICBmcm91
bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjQ0NTArLTAu
Njk4MSAgICAgICAgICAgMTMuODMyOSstMC41Mjc2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ0M3gg
ZmFzdGVyCiAgIEludDMyQXJyYXktYWxsb2MtbGFyZ2UgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTQuODcwNistMC42OTg5ICAgICAgICAgICAxNC42ODU1Ky0wLjc4NTQgICAgICAgICAgbWln
aHQgYmUgMS4wMTI2eCBmYXN0ZXIKICAgaXMtdW5kZWZpbmVkLWZvbGQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMy40OTM1Ky0wLjI1MTEgICAgID8gICAgICAzLjYzMDkrLTAuMjU5
MSAgICAgICAgPyBtaWdodCBiZSAxLjAzOTN4IHNsb3dlcgogICB0cnktY2F0Y2gtZ2V0LWJ5LXZh
bC1kaXJlY3QtYXJndW1lbnRzICAgICAgICAgICAgICAzLjU1OTgrLTAuMjAzMSAgICAgICAgICAg
IDMuMzQzNistMC4xODAxICAgICAgICAgIG1pZ2h0IGJlIDEuMDY0N3ggZmFzdGVyCiAgIGludC1v
ci1vdGhlci1tYXgtdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgIDYuNjMzMistMC40
MDQ3ICAgICAgICAgICAgNi4wODUzKy0wLjMwMDYgICAgICAgICAgbWlnaHQgYmUgMS4wOTAweCBm
YXN0ZXIKICAgc3dpdGNoLWNvbnN0YW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOC4yNjc2Ky0xLjE4OTEgICAgICAgICAgICA3LjcwMzQrLTEuMTA4NyAgICAgICAgICBtaWdo
dCBiZSAxLjA3MzJ4IGZhc3RlcgogICBwb2x5LXN0cmljdGVxICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDgxLjc2NzErLTIuOTU4MCAgICAgICAgICAgODEuMjE1OSstMi43MzI2
ICAgICAgICAKICAgaXMtc3RyaW5nLWZvbGQtdHJpY2t5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNC45ODk3Ky0wLjQ0NTIgICAgID8gICAgICA1LjIyOTMrLTAuNTc5MyAgICAgICAgPyBt
aWdodCBiZSAxLjA0ODB4IHNsb3dlcgogICBkb3VibGUtdG8tdWludDMyLXR5cGVkLWFycmF5ICAg
ICAgICAgICAgICAgICAgICAgICAzLjY3ODArLTAuNTY1NCAgICAgPyAgICAgIDMuNzkwNystMC4z
MTYzICAgICAgICA/IG1pZ2h0IGJlIDEuMDMwN3ggc2xvd2VyCiAgIGFiYy1mb3J3YXJkLWxvb3At
ZXF1YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAuOTc1MistMC43OTY0ICAgICA/ICAg
ICAzMS4zMzY4Ky0wLjc5OTMgICAgICAgID8gbWlnaHQgYmUgMS4wMTE3eCBzbG93ZXIKICAgaXMt
Ym9vbGVhbi1mb2xkLXRyaWNreSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC45MTYxKy0w
LjMwMDMgICAgID8gICAgICA1LjEzMDgrLTAuMjQzOSAgICAgICAgPyBtaWdodCBiZSAxLjA0Mzd4
IHNsb3dlcgogICBidWlsZC1sYXJnZS1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDQzLjY2OTcrLTAuNTY5OCAgICAgPyAgICAgNTAuODM3MCstMTMuNzAxNyAgICAgICA/IG1p
Z2h0IGJlIDEuMTY0MXggc2xvd2VyCiAgIHN0cmluZy1yZXBlYXQtbm90LXJlc29sdmluZy1uby1p
bmxpbmUgICAgICAgICAgICAgIDUuNzk2NSstMS4xOTU2ICAgICA/ICAgICAgNi4xODA4Ky0xLjA3
MjkgICAgICAgID8gbWlnaHQgYmUgMS4wNjYzeCBzbG93ZXIKICAgZnVuY3Rpb24tY2FsbCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy44ODgwKy00LjM2NDQgICAgICAgICAg
IDExLjg2MTErLTAuNDM1MCAgICAgICAgICBtaWdodCBiZSAxLjE3MDl4IGZhc3RlcgogICBnZXQt
YnktaWQtY2hhaW4tZnJvbS10cnktYmxvY2sgICAgICAgICAgICAgICAgICAgICAzLjMxOTgrLTAu
NjkyNiAgICAgICAgICAgIDIuOTMyMSstMC4yNjk0ICAgICAgICAgIG1pZ2h0IGJlIDEuMTMyMngg
ZmFzdGVyCiAgIGFiYy1zaW1wbGUtZm9yd2FyZC1sb29wICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMzAuNTMxMystMC4yOTU0ICAgICA/ICAgICAzMS4wNjAyKy0wLjc0NjkgICAgICAgID8gbWln
aHQgYmUgMS4wMTczeCBzbG93ZXIKICAgZ2xvYmFsLXZhci1jb25zdC1pbmZlci1maXJlLWZyb20t
b3B0ICAgICAgICAgICAgICAgMS4yMjQ4Ky0wLjA3MDcgICAgID8gICAgICAxLjI3MzYrLTAuMDg0
MCAgICAgICAgPyBtaWdodCBiZSAxLjAzOTl4IHNsb3dlcgogICBvYmplY3QtYW5kICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjMxNzcrLTEuNzYyMSAgICAgICAgICAg
IDcuNDAzMystMC44MTM3ICAgICAgICAgIG1pZ2h0IGJlIDEuMTIzNXggZmFzdGVyCiAgIEludDhB
cnJheS1hbGxvYy1sb25nLWxpdmVkICAgICAgICAgICAgICAgICAgICAgICAgNTguNzEwMystMi42
NTYyICAgICA/ICAgICA2MC42MDY4Ky0wLjg0MjkgICAgICAgID8gbWlnaHQgYmUgMS4wMzIzeCBz
bG93ZXIKICAgbG9naWNhbC1ub3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNi4yNTA5Ky0wLjI2MzYgICAgICAgICAgICA2LjA5OTYrLTAuMzgzOSAgICAgICAgICBtaWdo
dCBiZSAxLjAyNDh4IGZhc3RlcgogICBkb3VibGUtdG8taW50ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDY2LjAxMzIrLTEuNjY1OSAgICAgPyAgICAgNjYuMzI3MystMS41MDYy
ICAgICAgICA/CiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctcHJvdG8tb3Itc2VsZiAgICAgICAg
ICAgICAgMTMuODg1MistMS40Njc0ICAgICA/ICAgICAxNS40MzU3Ky0yLjE2MDIgICAgICAgID8g
bWlnaHQgYmUgMS4xMTE3eCBzbG93ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAuNzUxMSstMC4yNzM5ICAgICAgICAgICAgMC42NTMwKy0wLjAz
NjkgICAgICAgICAgbWlnaHQgYmUgMS4xNTAxeCBmYXN0ZXIKICAgc3RyaW5nLXJlcGxhY2UtZW1w
dHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi44OTAzKy0wLjc1MjQgICAgID8gICAg
IDEzLjUyMjQrLTAuOTA4OCAgICAgICAgPyBtaWdodCBiZSAxLjA0OTB4IHNsb3dlcgogICBhbGlh
c2VkLWFyZ3VtZW50cy1nZXRieXZhbCAgICAgICAgICAgICAgICAgICAgICAgICAyLjAwMzgrLTEu
MjA5MCAgICAgICAgICAgIDEuNDgyNSstMC4xMzU3ICAgICAgICAgIG1pZ2h0IGJlIDEuMzUxNngg
ZmFzdGVyCiAgIGFycm93ZnVuY3Rpb24tY2FsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTEuODM0MCstMC42NTQ1ICAgICAgICAgICAxMS42ODQ3Ky0wLjY3NDEgICAgICAgICAgbWln
aHQgYmUgMS4wMTI4eCBmYXN0ZXIKICAgZ2V0LWJ5LWlkLXNlbGYtb3ItcHJvdG8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAxMi4zNTA2Ky0xLjI0MTggICAgICAgICAgIDExLjgyMzgrLTEuMTY2
OSAgICAgICAgICBtaWdodCBiZSAxLjA0NDZ4IGZhc3RlcgogICBmdGwtcG9seW1vcnBoaWMtYml0
b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTgwLjEwNTIrLTIuMDU5NyAgICAgPyAgICAx
ODIuMzM2MCstMy45MjQyICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyNHggc2xvd2VyCiAgIEludDE2
QXJyYXktbG9hZC1pbnQtbXVsICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNjU1NistMC4x
OTg3ICAgICA/ICAgICAgMi44OTg3Ky0wLjQ2NTAgICAgICAgID8gbWlnaHQgYmUgMS4wOTE1eCBz
bG93ZXIKICAgZXZhbC1jb2RlLWZ0bC1yZWVudHJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzOC43MTg4Ky0wLjc4NzUgICAgICAgICAgIDM4LjUzNzErLTEuMjE5NCAgICAgICAgCiAgIGZv
bGQtbXVsdGktZ2V0LWJ5LW9mZnNldC10by1nZXQtYnktb2Zmc2V0ICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuOTYzMistMC44NDA0ICAg
ICA/ICAgICAgNy4wMDA5Ky0wLjcwMjEgICAgICAgID8KICAgYXJndW1lbnRzLW5hbWVkLWFuZC1y
ZWZsZWN0aXZlICAgICAgICAgICAgICAgICAgICAgOC41OTI2Ky0wLjQyODggICAgID8gICAgICA5
LjM1MDgrLTAuNzA5NiAgICAgICAgPyBtaWdodCBiZSAxLjA4ODJ4IHNsb3dlcgogICBpbmxpbmVk
LXB1dC1ieS1pZC10cmFuc2l0aW9uICAgICAgICAgICAgICAgICAgICAgIDEyLjM0NTArLTIuMTU3
MiAgICAgICAgICAgMTEuNDE5NCstMC42MjY2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDgxMXggZmFz
dGVyCiAgIHN1YnN0cmluZy1jb25jYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NTcuMDk2MistMC42NDg0ICAgICA/ICAgICA2Ny4zNDU4Ky0xOS44OTcxICAgICAgID8gbWlnaHQg
YmUgMS4xNzk1eCBzbG93ZXIKICAgaGFyZC1vdmVyZmxvdy1jaGVjay1lcXVhbCAgICAgICAgICAg
ICAgICAgICAgICAgICAzNC4xNzcyKy0yLjYxOTcgICAgID8gICAgIDQwLjA1ODErLTE2Ljg1NjYg
ICAgICAgPyBtaWdodCBiZSAxLjE3MjF4IHNsb3dlcgogICBzdHJpbmctY29ucy1yZXBlYXQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjE4MzErLTAuNzczNSAgICAgPyAgICAgIDku
NDY1NistMC45Njg0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMwOHggc2xvd2VyCiAgIG1hcC1mb3It
b2YgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuNDgxMystMC44OTE3
ICAgICA/ICAgICAxMi4zOTQ4Ky0xLjI2MDEgICAgICAgID8gbWlnaHQgYmUgMS4wNzk2eCBzbG93
ZXIKICAgYXJyYXktcHJvdG90eXBlLXJlZHVjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
MS42MDE1Ky0wLjMxMDcgICAgID8gICAgIDQzLjAyMjArLTEuNzA1OCAgICAgICAgPyBtaWdodCBi
ZSAxLjAzNDF4IHNsb3dlcgogICBpbmZlci1jbG9zdXJlLWNvbnN0LXRoZW4tcHV0LXRvLXNjb3Bl
ICAgICAgICAgICAgIDI4LjkyMzErLTAuNzI4MSAgICAgPyAgICAgMjguOTg1OSstMC45MTg3ICAg
ICAgICA/CiAgIHN0cmluZy1jb25jYXQtY29udmVydCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgODQuMDUyNSstMy40OTYxICAgICA/ICAgICA5Ni44NDg2Ky0zMy4yMDMzICAgICAgID8gbWln
aHQgYmUgMS4xNTIyeCBzbG93ZXIKICAgdmFyYXJncy1pbmxpbmUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOS43NDk1Ky0xLjAzOTYgICAgICAgICAgICA5LjA4NjgrLTAuNjE3
MyAgICAgICAgICBtaWdodCBiZSAxLjA3Mjl4IGZhc3RlcgogICBpbnQtb3Itb3RoZXItYWJzLXpl
cm8tdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgIDE5LjgyNjMrLTAuNzI0NiAgICAgPyAgICAg
MjAuNTY3OCstMC45MDYwICAgICAgICA/IG1pZ2h0IGJlIDEuMDM3NHggc2xvd2VyCiAgIHJlZ2V4
cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLW11bHRpbGluZSAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjY2
NzQrLTAuMDg3OSAgICAgICAgICAgIDAuNTkyMSstMC4wMjc5ICAgICAgICAgIG1pZ2h0IGJlIDEu
MTI3MXggZmFzdGVyCiAgIHN0cmluZy1jb25jYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNDYuNzUxNistMS42ODg1ICAgICAgICAgICA0Ni4xMzgzKy0wLjU4NzAgICAgICAg
ICAgbWlnaHQgYmUgMS4wMTMzeCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zZWFyY2gtb2Jz
ZXJ2YWJsZS1zaWRlLWVmZmVjdHMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMS4wNDAxKy0wLjAyMzUgICAgICAgICAgICAxLjAyODErLTAu
MDM1MCAgICAgICAgICBtaWdodCBiZSAxLjAxMTd4IGZhc3RlcgogICBhYmMtc2ltcGxlLWJhY2t3
YXJkLWxvb3AgICAgICAgICAgICAgICAgICAgICAgICAgIDMyLjE0MjcrLTEuNDg4OSAgICAgICAg
ICAgMzEuMTc0MystMC41NTU3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDMxMXggZmFzdGVyCiAgIHNl
dC1mb3ItZWFjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMzk3MSst
MC40Mjc0ICAgICAgICAgICAgMy4zNzA5Ky0wLjI1NjQgICAgICAgIAogICBzdHJpbmctZ2V0LWJ5
LXZhbC1iaWctY2hhciAgICAgICAgICAgICAgICAgICAgICAgICA2Ljg3NDgrLTAuNjM0NyAgICAg
ICAgICAgIDYuNzE3MCstMC45NTQ0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIzNXggZmFzdGVyCiAg
IG1heC1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNzYx
NSstMC4yMDE1ICAgICA/ICAgICAgNC4zNjc3Ky0wLjg3ODUgICAgICAgID8gbWlnaHQgYmUgMS4x
NjEyeCBzbG93ZXIKICAgdG8tbnVtYmVyLWNvbnN0cnVjdG9yLW9ubHktc3RyaW5nICAgICAgICAg
ICAgICAgICAgMi41NjI1Ky0wLjMzMjkgICAgID8gICAgICAyLjY4MjQrLTAuMzE3OCAgICAgICAg
PyBtaWdodCBiZSAxLjA0Njh4IHNsb3dlcgogICBzd2l0Y2gtc3RyaW5nLWJhc2ljLWJpZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDE1LjgyOTMrLTEuMTU0MCAgICAgPyAgICAgMTYuNzMxOCst
Mi4wNzY4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDU3MHggc2xvd2VyCiAgIGZ1bmN0aW9uLWRvdC1h
cHBseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNDMyMystMC4zNjMyICAgICA/
ICAgICAgNC4wMzg0Ky0xLjIwMTEgICAgICAgID8gbWlnaHQgYmUgMS4xNzY2eCBzbG93ZXIKICAg
bXVsLWJvb2xlYW4tZG91YmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4xMTk5
Ky0wLjE3NDcgICAgICAgICAgICAzLjkzMDMrLTAuMjYyNiAgICAgICAgICBtaWdodCBiZSAxLjA0
ODJ4IGZhc3RlcgogICBkb3VibGUtcmVhbC11c2UgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDMzLjQ0NjQrLTEuNzU2OCAgICAgICAgICAgMzIuODg0OSstMC44MTQyICAgICAgICAg
IG1pZ2h0IGJlIDEuMDE3MXggZmFzdGVyCiAgIGNmZy1zaW1wbGlmeSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDQuNDExNSstMC4zNjk0ICAgICA/ICAgICAgNC40NTA5Ky0w
LjQ3NDggICAgICAgID8KICAgZ2V0LWJ5LXZhbC13aXRoLXN0cmluZy1zZWxmLW9yLXByb3RvICAg
ICAgICAgICAgICAxNC41NTk4Ky0xLjc3NTcgICAgICAgICAgIDE0LjAyMTUrLTEuMTM2MiAgICAg
ICAgICBtaWdodCBiZSAxLjAzODR4IGZhc3RlcgogICBpbnQtb3Itb3RoZXItbmVnLXplcm8tdGhl
bi1nZXQtYnktdmFsICAgICAgICAgICAgIDIwLjI4NTUrLTEuMTMwOCAgICAgICAgICAgMTkuNzE5
OSstMC45MTkzICAgICAgICAgIG1pZ2h0IGJlIDEuMDI4N3ggZmFzdGVyCiAgIHN0cmluZy1zdWIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDcuNzc4NystMC41NDI2ICAg
ICAgICAgICA0Ny4yMTMwKy0xLjEwMzMgICAgICAgICAgbWlnaHQgYmUgMS4wMTIweCBmYXN0ZXIK
ICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZ2xvYmFs
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAuNzE2MSstMC4zMTk4ICAgICAgICAgICAgMC42MjM1Ky0wLjA2OTUgICAgICAgICAgbWlnaHQg
YmUgMS4xNDg1eCBmYXN0ZXIKICAgaW5zdGFuY2VvZi1ib3VuZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyNi44NzYxKy0wLjU0MDcgICAgID8gICAgIDMyLjIxODQrLTEzLjQyNDIg
ICAgICAgPyBtaWdodCBiZSAxLjE5ODh4IHNsb3dlcgogICBkaXJlY3QtY29uc3RydWN0LWFyaXR5
LW1pc21hdGNoICAgICAgICAgICAgICAgICAgMTI5LjU4MTArLTIuMzMxMyAgICAgPyAgICAxMzgu
MDE3MistMTguOTk5MiAgICAgICA/IG1pZ2h0IGJlIDEuMDY1MXggc2xvd2VyCiAgIGRpcmVjdC10
YWlsLWNhbGwtYXJpdHktbWlzbWF0Y2ggICAgICAgICAgICAgICAgICAgOTAuMDU4MystMi40NTA4
ICAgICA/ICAgIDEwOS4zMTM5Ky00NC40OTg5ICAgICAgID8gbWlnaHQgYmUgMS4yMTM4eCBzbG93
ZXIKICAgc3Vic3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2
OS45OTE0Ky0xLjMyODIgICAgICAgICAgIDY4LjMyNDQrLTAuNzAwNiAgICAgICAgICBtaWdodCBi
ZSAxLjAyNDR4IGZhc3RlcgogICBzdHJpbmctZnJvbS1jaGFyLWNvZGUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA5LjEwMDYrLTAuNjMxNiAgICAgICAgICAgIDguOTc1MystMC41NTc5ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDE0MHggZmFzdGVyCiAgIHVuZGVmaW5lZC10ZXN0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNTg2MistMC4yNDM3ICAgICA/ICAgICAgNC44
NzU3Ky0wLjc0ODAgICAgICAgID8gbWlnaHQgYmUgMS4wNjMxeCBzbG93ZXIKICAgc3RyaW5nLXJl
cGVhdC1yZXNvbHZpbmctZml4ZWQgICAgICAgICAgICAgICAgICAgICAyNi44MTE3Ky0xLjEwNzEg
ICAgICAgICAgIDI2LjMzMTQrLTAuOTc2NSAgICAgICAgICBtaWdodCBiZSAxLjAxODJ4IGZhc3Rl
cgogICBpbnRlZ2VyLWRpdmlkZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1
Ljg0NTcrLTQuODMxMyAgICAgICAgICAgMTMuMzAzMystMC45MjkxICAgICAgICAgIG1pZ2h0IGJl
IDEuMTkxMXggZmFzdGVyCiAgIGRpcmVjdC1hcmd1bWVudHMtb3ZlcnJpZGRlbi1sZW5ndGggICAg
ICAgICAgICAgICAgMTAuODQ0NystMC42Mzg0ICAgICA/ICAgICAxMC45NzY3Ky0wLjcwODggICAg
ICAgID8gbWlnaHQgYmUgMS4wMTIyeCBzbG93ZXIKICAgc3RydWN0dXJlLWhvaXN0LW92ZXItdHJh
bnNpdGlvbnMgICAgICAgICAgICAgICAgICAgNC4wNzczKy0wLjM4NzQgICAgICAgICAgICA0LjA1
OTgrLTAuNTQ4NSAgICAgICAgCiAgIGludC1vci1vdGhlci1hZGQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDcuMzIwNistMC42MzA0ICAgICA/ICAgICAgOC42MDI3Ky0yLjI1MzAg
ICAgICAgID8gbWlnaHQgYmUgMS4xNzUxeCBzbG93ZXIKICAgRmxvYXQzMkFycmF5LW1hdHJpeC1t
dWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgOC4wNTcxKy0wLjk2NTIgICAgID8gICAgIDEw
LjU2NTArLTMuNDA0NyAgICAgICAgPyBtaWdodCBiZSAxLjMxMTN4IHNsb3dlcgogICBzdHJpbmct
cHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNzMy
NSstMC4wNzY2ICAgICA/ICAgICAgMC43ODY2Ky0wLjE1ODggICAgICAgID8gbWlnaHQgYmUgMS4w
NzM4eCBzbG93ZXIKICAgc2lua2FibGUtbmV3LW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyMi43NTA2Ky0wLjY0MjAgICAgICAgICAgIDIyLjU2NDArLTAuODc1NyAgICAgICAg
CiAgIGV4dGVybmFsLWFyZ3VtZW50cy1nZXRieXZhbCAgICAgICAgICAgICAgICAgICAgICAgIDEu
NjMxNystMC4xNDgwICAgICAgICAgICAgMS41NTk0Ky0wLjA2ODkgICAgICAgICAgbWlnaHQgYmUg
MS4wNDYzeCBmYXN0ZXIKICAgY2FsbC1zcHJlYWQtY2FsbCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAzNC4yNTgyKy0wLjc3MDkgICAgID8gICAgIDM0LjY5MTArLTEuNjA0MiAgICAg
ICAgPyBtaWdodCBiZSAxLjAxMjZ4IHNsb3dlcgogICBob2lzdC1wb2x5LWNoZWNrLXN0cnVjdHVy
ZSAgICAgICAgICAgICAgICAgICAgICAgICAzLjkwNjIrLTAuNjcwMyAgICAgICAgICAgIDMuNjM3
MistMC4zOTA2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDc0MHggZmFzdGVyCiAgIGNvbmNhdC1hcHBl
bmQtb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuNzk2OSstMS4xNTM3ICAg
ICA/ICAgICAxMS45OTY1Ky0xLjAxNjAgICAgICAgID8gbWlnaHQgYmUgMS4wMTY5eCBzbG93ZXIK
ICAgc3RyaW5nLWNvbmNhdC1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4z
MjgyKy0wLjM0MzcgICAgID8gICAgICA0LjIxODUrLTEuMTk0NyAgICAgICAgPyBtaWdodCBiZSAx
LjI2NzV4IHNsb3dlcgogICBwdXQtYnktdmFsLXdpdGgtc3RyaW5nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDE2LjU3NjQrLTAuNDg4MiAgICAgPyAgICAgMTYuNjQ4MystMC4zNTQ1ICAgICAg
ICA/CiAgIGRpdi1ib29sZWFuLWRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDUuNjkzMSstMC4zNzk5ICAgICA/ICAgICAgNS44MjQ2Ky0wLjI5MDkgICAgICAgID8gbWlnaHQg
YmUgMS4wMjMxeCBzbG93ZXIKICAgZnRsLWxpYnJhcnktaW5saW5pbmctZGF0YXZpZXcgICAgICAg
ICAgICAgICAgICAgIDEwMS4yNTE4Ky0zLjU5NjUgICAgICAgICAgIDk4Ljc2NDkrLTEuMzA4NSAg
ICAgICAgICBtaWdodCBiZSAxLjAyNTJ4IGZhc3RlcgogICBBcnJheUJ1ZmZlci1EYXRhVmlldy1h
bGxvYy1sYXJnZS1sb25nLWxpdmVkICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNjcuNTM4NSstMS4zNzYxICAgICA/ICAgICA2OC41Mjg0Ky0y
LjI5OTEgICAgICAgID8gbWlnaHQgYmUgMS4wMTQ3eCBzbG93ZXIKICAgbmVnYXRpdmUtemVyby1u
ZWdhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC41NzI2Ky0wLjAxNjggICAgICAg
ICAgICAwLjU2MjArLTAuMDE1MyAgICAgICAgICBtaWdodCBiZSAxLjAxODh4IGZhc3RlcgogICB0
eXBlZC1hcnJheS1zdWJhcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ1Ljg1NTUr
LTAuOTMzNiAgICAgPyAgICAgNDUuODk4OSstMS4zOTI3ICAgICAgICA/CiAgIGNhbGwtc3ByZWFk
LWFwcGx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzcuMzc2MCstMS44OTA2ICAg
ICBeICAgICAzNC41MjAxKy0wLjQ2MjcgICAgICAgIF4gZGVmaW5pdGVseSAxLjA4Mjd4IGZhc3Rl
cgogICBpcy1zeW1ib2wtbWl4ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5
LjU1MjErLTMuODc5MiAgICAgICAgICAgIDcuMDg0MSstMS4xNTcxICAgICAgICAgIG1pZ2h0IGJl
IDEuMzQ4NHggZmFzdGVyCiAgIHB1dC1ieS1pZC10cmFuc2l0aW9uLXdpdGgtaW5kZXhpbmctaGVh
ZGVyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTcuNDUzMystMC4zMjIwICAgICA/ICAgICAxNy42OTA5Ky0wLjQ1MzcgICAgICAgID8gbWln
aHQgYmUgMS4wMTM2eCBzbG93ZXIKICAgcmVzdC1wYXJhbWV0ZXItY29uc3RydWN0aW9uLXBlcmZv
cm1hbmNlICAgICAgICAgICAyOS43OTgwKy0wLjQ1NTggICAgICAgICAgIDI5LjM2MDQrLTAuNjM0
MiAgICAgICAgICBtaWdodCBiZSAxLjAxNDl4IGZhc3RlcgogICBzZWFsLWFuZC1kby13b3JrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4LjE5MTMrLTEuMTE5MSAgICAgPyAgICAg
MTguNTU0OSstMS4xMDE0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIwMHggc2xvd2VyCiAgIHN0cmlu
Zy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdzICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNjkxMCst
MC4wNDI0ICAgICA/ICAgICAgMC43MjI3Ky0wLjEwNDggICAgICAgID8gbWlnaHQgYmUgMS4wNDU5
eCBzbG93ZXIKICAgbnVtYmVyLXRvLXN0cmluZy13aXRoLWFkZC1pbi1sb29wICAgICAgICAgICAg
ICAgICAxMS45OTM5Ky0wLjI0OTYgICAgID8gICAgIDEyLjI1NzMrLTAuMjAyMCAgICAgICAgPyBt
aWdodCBiZSAxLjAyMjB4IHNsb3dlcgogICBwb2x5LWNoYWluLWFjY2VzcyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzLjcwOTgrLTAuMTgzNyAgICAgPyAgICAgIDMuOTYwNSstMC4y
MzgzICAgICAgICA/IG1pZ2h0IGJlIDEuMDY3Nnggc2xvd2VyCiAgIEFycmF5QnVmZmVyLUludDhB
cnJheS1hbGxvYy1sb25nLWxpdmVkICAgICAgICAgICAgMjIuMDExOSstMC44MzAzICAgICAgICAg
ICAyMS41MzUzKy0wLjcxMjEgICAgICAgICAgbWlnaHQgYmUgMS4wMjIxeCBmYXN0ZXIKICAgZG91
YmxlLXRvLWludDMyLXR5cGVkLWFycmF5LW5vLWlubGluZSAgICAgICAgICAgICAgMy44MzAwKy0w
LjI5NzYgICAgID8gICAgICA0LjAxMDQrLTAuMjc3NyAgICAgICAgPyBtaWdodCBiZSAxLjA0NzF4
IHNsb3dlcgogICBzd2l0Y2gtc3RyaW5nLWJpZy1sZW5ndGgtdG93ZXItdmFyICAgICAgICAgICAg
ICAgIDI0LjY0MjYrLTAuNjcyNyAgICAgPyAgICAgMjQuODAxOCstMC41MjgwICAgICAgICA/CiAg
IGRvdWJsZS10by1pbnQzMi10eXBlZC1hcnJheSAgICAgICAgICAgICAgICAgICAgICAgIDQuMTY4
OCstMC4yNTAzICAgICAgICAgICAgNC4wMjQ5Ky0wLjY4NDEgICAgICAgICAgbWlnaHQgYmUgMS4w
MzU4eCBmYXN0ZXIKICAgaGFyZC1vdmVyZmxvdy1jaGVjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzMy4yMzUxKy0yLjI4MDQgICAgID8gICAgIDM1LjYwNjErLTAuODQxNiAgICAgICAg
PyBtaWdodCBiZSAxLjA3MTN4IHNsb3dlcgogICBJbnQzMkFycmF5LWFsbG9jLWxvbmctbGl2ZWQg
ICAgICAgICAgICAgICAgICAgICAgIDg1LjQ2NjYrLTIyLjQxODEgICAgICAgICAgNzUuNTAwMSst
Mi40NDc4ICAgICAgICAgIG1pZ2h0IGJlIDEuMTMyMHggZmFzdGVyCiAgIHN0cmluZy1yZXBlYXQt
cmVzb2x2aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgMzUuMTUxMystMS44ODkzICAgICA/
ICAgICAzNS42OTQ3Ky0xLjA1NjYgICAgICAgID8gbWlnaHQgYmUgMS4wMTU1eCBzbG93ZXIKICAg
cG9seW1vcnBoaWMtZ2V0LWJ5LWlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4yNTA3
Ky0wLjQyNDUgICAgICAgICAgICAzLjEzNDMrLTAuMjczMCAgICAgICAgICBtaWdodCBiZSAxLjAz
NzF4IGZhc3RlcgogICBzbG93LWFycmF5LXByb2ZpbGUtY29udmVyZ2VuY2UgICAgICAgICAgICAg
ICAgICAgICAzLjg2MzQrLTAuMzM0NSAgICAgICAgICAgIDMuODQyNCstMC4zNzE0ICAgICAgICAK
ICAgZ2V0LWJ5LXZhbC13aXRoLXN0cmluZy1jaGFpbi1mcm9tLXRyeS1ibG9jayAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjMzNTQrLTAu
NjQ2NSAgICAgICAgICAgIDMuMTIxMistMC40NjI1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDY4Nngg
ZmFzdGVyCiAgIHY4LXJheXRyYWNlLXdpdGgtZW1wdHktdHJ5LWNhdGNoICAgICAgICAgICAgICAg
ICAgNzAuMTkwMystMi4yMTYyICAgICA/ICAgICA3MC41Nzg5Ky0zLjY2MzIgICAgICAgID8KICAg
c2NvcGVkLWFyZ3VtZW50cy1wb3NzaWJseS1vdmVycmlkZGVuLWxlbmd0aCAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjg3NzMrLTAuNzg2
NSAgICAgPyAgICAgMTEuMDI3MSstMC41Mjg3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEzOHggc2xv
d2VyCiAgIHN3aXRjaGluZy1zaXplLWNsYXNzZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NDAuMzMxMystMS4yNzk3ICAgICA/ICAgICA0MC44MTczKy0yLjA1NDYgICAgICAgID8gbWlnaHQg
YmUgMS4wMTIxeCBzbG93ZXIKICAgRmxvYXQ2NEFycmF5LWFsbG9jLWxvbmctbGl2ZWQgICAgICAg
ICAgICAgICAgICAgICA4OS4yMzg2Ky0yLjM4MTIgICAgID8gICAgIDkxLjY3ODcrLTEuNzM0NSAg
ICAgICAgPyBtaWdodCBiZSAxLjAyNzN4IHNsb3dlcgogICBjb25zdGFudC10ZXN0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjUzMTgrLTAuMzU3OSAgICAgPyAgICAgIDYu
NjAwMystMC41NDI1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEwNXggc2xvd2VyCiAgIGludC1vdmVy
Zmxvdy1sb2NhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuOTYxOSstMC44NDY2
ICAgICAgICAgICAgNi4yOTE4Ky0wLjUxMTcgICAgICAgICAgbWlnaHQgYmUgMS4xMDY1eCBmYXN0
ZXIKICAgYXJyb3dmdW5jdGlvbi1jYWxsLWluLWNsYXNzLWNvbnN0cnVjdG9yICAgICAgICAgICAy
OC40MDQzKy0wLjgyNjMgICAgICAgICAgIDI3Ljk4MjArLTAuNjk1MyAgICAgICAgICBtaWdodCBi
ZSAxLjAxNTF4IGZhc3RlcgogICBzZXR0ZXItcHJvdG90eXBlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA3LjAxMjArLTAuODMyMSAgICAgPyAgICAgIDcuMTYyMSstMC45NTEzICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDIxNHggc2xvd2VyCiAgIG5ldy1hcnJheS1kZWFkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuNjUzOCstMC42MTMyICAgICA/ICAgICAxMS42
NjA5Ky0wLjg4MjQgICAgICAgID8KICAgc3RyaW5nLXJvcGUtd2l0aC1vYmplY3QgICAgICAgICAg
ICAgICAgICAgICAgICAgICAzMC4wNDMyKy0xMi40NTg3ICAgICAgICAgIDI0LjU4NTcrLTAuNTQ3
MyAgICAgICAgICBtaWdodCBiZSAxLjIyMjB4IGZhc3RlcgogICB0by1udW1iZXItY29uc3RydWN0
b3ItbnVtYmVyLXN0cmluZy1udW1iZXItc3RyaW5nICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNzQ1MSstMC43MDg5ICAgICA/ICAgICAg
NS43NDU5Ky0wLjQxMjggICAgICAgID8KICAgYm9vbGVhbi10ZXN0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNC41OTEzKy0wLjI4OTQgICAgID8gICAgICA0LjY0NjYrLTAu
MzM4NSAgICAgICAgPyBtaWdodCBiZSAxLjAxMjB4IHNsb3dlcgogICB0cnktZ2V0LWJ5LWlkLXBv
bHltb3JwaGljICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjk3MzErLTAuOTA0MSAgICAgICAg
ICAgMTAuODkwMCstMS4yOTIwICAgICAgICAKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNl
cnZhYmxlLXNpZGUtZWZmZWN0czQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMC42ODY3Ky0wLjAyMzEgICAgID8gICAgICAwLjc1MTErLTAu
MDc4OSAgICAgICAgPyBtaWdodCBiZSAxLjA5Mzh4IHNsb3dlcgogICBzaW1wbGUtcmVnZXhwLXRl
c3QtZm9sZGluZy1mYWlsICAgICAgICAgICAgICAgICAgIDI1LjIyMDArLTEwLjQ0OTggICAgICAg
ICAgMjAuODY0MistMC40MjEyICAgICAgICAgIG1pZ2h0IGJlIDEuMjA4OHggZmFzdGVyCiAgIG1p
bnVzLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMjQ4NCst
MC4xNjIxICAgICA/ICAgICAgMy42MjUxKy0wLjM3MjAgICAgICAgID8gbWlnaHQgYmUgMS4xMTYw
eCBzbG93ZXIKICAgcG9seW1vcnBoaWMtYXJyYXktY2FsbCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMi40NDYwKy0wLjc3MzQgICAgID8gICAgICAyLjcyMzArLTEuMDYxMyAgICAgICAgPyBt
aWdodCBiZSAxLjExMzN4IHNsb3dlcgogICB0by1sb3dlci1jYXNlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTQxLjU4MzYrLTMuMTgyNSAgICAgPyAgICAxNDUuNzY4OSstOC4w
MDY4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI5Nnggc2xvd2VyCiAgIHRyeS1nZXQtYnktaWQtYmFz
aWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuOTcxNSstMS4xNTEwICAgICAgICAg
ICAgOS4zNTcyKy0xLjI5ODEgICAgICAgICAgbWlnaHQgYmUgMS4wNjU2eCBmYXN0ZXIKICAgZW1z
Y3JpcHRlbi1jdWJlMmhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMi42Mzk1Ky0x
LjAxODIgICAgICAgICAgIDMyLjQ2OTYrLTEuMzU5NSAgICAgICAgCiAgIHN0cmluZy1wcm90b3R5
cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXN0aWNreSAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjY4NzErLTAuMDQ4MSAg
ICAgPyAgICAgIDAuNjk1NSstMC4wMzU1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyMnggc2xvd2Vy
CiAgIGhvaXN0LXBvbHktY2hlY2stc3RydWN0dXJlLWVmZmVjdGZ1bC1sb29wICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuOTE1MystMC45
MzM5ICAgICAgICAgICAgNS42ODMxKy0xLjExNjAgICAgICAgICAgbWlnaHQgYmUgMS4wNDA5eCBm
YXN0ZXIKICAgcHV0LWJ5LXZhbC1sYXJnZS1pbmRleC1ibGFuay1pbmRleGluZy10eXBlICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuMjk4
MistMS4xNjcxICAgICAgICAgICAgOC42NTczKy0wLjc0NDcgICAgICAgICAgbWlnaHQgYmUgMS4x
ODk1eCBmYXN0ZXIKICAgc3Vic3RyaW5nLWNvbmNhdC13ZWlyZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA1Mi4yMDEwKy0wLjgwNTEgICAgID8gICAgIDUyLjQwNTArLTEuMzIwMyAgICAgICAg
PwogICBpbmxpbmVkLXB1dC1ieS12YWwtd2l0aC1zeW1ib2wtdHJhbnNpdGlvbiAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYxLjQxNjgrLTEu
OTA2OCAgICAgPyAgICAgNjMuNTYxMSstNS41NTYzICAgICAgICA/IG1pZ2h0IGJlIDEuMDM0OXgg
c2xvd2VyCiAgIHN0cmluZy1nZXQtYnktdmFsLW91dC1vZi1ib3VuZHMtaW5zYW5lICAgICAgICAg
ICAgIDUuNzIxMSstMC4zODMyICAgICA/ICAgICAgNS44MDE1Ky0wLjQ4MzIgICAgICAgID8gbWln
aHQgYmUgMS4wMTQxeCBzbG93ZXIKICAgcmVnZXhwLXByb3RvdHlwZS10ZXN0LW9ic2VydmFibGUt
c2lkZS1lZmZlY3RzMiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLjU3NjgrLTAuMDM1NyAgICAgICAgICAgIDAuNTU3MistMC4wMTc2ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDM1MXggZmFzdGVyCiAgIHB1dC1ieS1pZC1yZXBsYWNlLWFuZC10
cmFuc2l0aW9uICAgICAgICAgICAgICAgICAgIDkuNTI0MistMS4yOTU0ICAgICA/ICAgICAgOS44
MTEyKy0xLjMxNDcgICAgICAgID8gbWlnaHQgYmUgMS4wMzAxeCBzbG93ZXIKICAgbmVnYXRpdmUt
emVyby1kaXZpZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC41Njk2Ky0wLjAyMTAg
ICAgID8gICAgICAwLjU4NDErLTAuMDE0OSAgICAgICAgPyBtaWdodCBiZSAxLjAyNTN4IHNsb3dl
cgogICBpbmZlci1jbG9zdXJlLWNvbnN0LXRoZW4tcmVlbnRlci1uby1pbmxpbmUgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0OC4yMzEwKy0x
LjMxMzYgICAgICAgICAgIDQ4LjEyMzcrLTAuOTkxNiAgICAgICAgCiAgIHNpbXBsZS1yZWdleHAt
dGVzdC1mb2xkaW5nLWZhaWwtd2l0aC1ob2lzdGVkLXJlZ2V4cCAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjM2MjArLTAuODg4MiAgICAg
ICAgICAgMTMuNTM1NistMS40OTY2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDYxMXggZmFzdGVyCiAg
IGlubGluZS1hcmd1bWVudHMtYWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuMTY5
OSstMi4xMTkzICAgICAgICAgICAgNi45MDczKy0xLjU1MDEgICAgICAgICAgbWlnaHQgYmUgMS4w
MzgweCBmYXN0ZXIKICAgZGVsYXktdGVhci1vZmYtYXJndW1lbnRzLXN0cmljdG1vZGUgICAgICAg
ICAgICAgICAgOS44ODc1Ky0xLjE4MDkgICAgID8gICAgIDEwLjAwNDQrLTAuODI0NyAgICAgICAg
PyBtaWdodCBiZSAxLjAxMTh4IHNsb3dlcgogICBJbnQzMkFycmF5LUludDhBcnJheS12aWV3LWFs
bG9jICAgICAgICAgICAgICAgICAgIDEyLjE2ODkrLTAuNzg4MyAgICAgPyAgICAgMTIuMzk3OSst
MC42NDcwICAgICAgICA/IG1pZ2h0IGJlIDEuMDE4OHggc2xvd2VyCiAgIHByb3RvLWdldHRlci1h
Y2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUuMTQzNistMC41ODc3ICAgICA/
ICAgICAxNi40ODk1Ky0yLjIyODQgICAgICAgID8gbWlnaHQgYmUgMS4wODg5eCBzbG93ZXIKICAg
cG9seW1vcnBoaWMtcHV0LWJ5LXZhbC13aXRoLXN5bWJvbCAgICAgICAgICAgICAgICAzMi43MDE0
Ky0wLjU1NDAgICAgID8gICAgIDMyLjkwNTMrLTEuNjQwOCAgICAgICAgPwogICBzdHJpbmctbG9u
Zy1pZGVudC1lcXVhbGl0eSAgICAgICAgICAgICAgICAgICAgICAgIDI1LjMxNDErLTEuMDA0MiAg
ICAgPyAgICAgMjYuNDMzMystMS4wODg1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ0Mnggc2xvd2Vy
CiAgIHJlZ2V4cC1leGVjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTUu
MjU1NistMy40NTAxICAgICAgICAgICA1My40Nzg5Ky0wLjYwNjAgICAgICAgICAgbWlnaHQgYmUg
MS4wMzMyeCBmYXN0ZXIKICAgZm9sZC1tdWx0aS1wdXQtYnktb2Zmc2V0LXRvLXBvbHktcHV0LWJ5
LW9mZnNldCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA4LjIxMjMrLTEuODI3NyAgICAgICAgICAgIDcuNTU5MSstMS44MzcwICAgICAgICAg
IG1pZ2h0IGJlIDEuMDg2NHggZmFzdGVyCiAgIGNzZS1uZXctYXJyYXkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDQuMDg5NSstMC4zMzE0ICAgICA/ICAgICAgNC40MjExKy0w
Ljg5MTAgICAgICAgID8gbWlnaHQgYmUgMS4wODExeCBzbG93ZXIKICAgbWFwLWtleS13ZWxsLXR5
cGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMS40NTE0Ky00LjMxNDMgICAgID8g
ICAgMTExLjUxNjErLTMuMzcxNSAgICAgICAgPwogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5nLWJp
bW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNTcwNCstMC4yMjEz
ICAgICAgICAgICAgNC41MDI1Ky0wLjI5MzQgICAgICAgICAgbWlnaHQgYmUgMS4wMTUxeCBmYXN0
ZXIKICAgaXMtb2JqZWN0LW9yLW51bGwtZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
My43MTgwKy0wLjI1NjYgICAgICAgICAgICAzLjQ3MjArLTAuMjYxNiAgICAgICAgICBtaWdodCBi
ZSAxLjA3MDl4IGZhc3RlcgogICBhcnJheS1hY2Nlc3MtcG9seW1vcnBoaWMtc3RydWN0dXJlICAg
ICAgICAgICAgICAgICA2LjA5NzArLTEuMDY5NiAgICAgPyAgICAgIDcuMDU3MSstMS4yNjgzICAg
ICAgICA/IG1pZ2h0IGJlIDEuMTU3NXggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wt
Ymltb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC42MDU5Ky0wLjM0
NDYgICAgID8gICAgICA0LjgwMTcrLTAuMjY0NyAgICAgICAgPyBtaWdodCBiZSAxLjA0MjV4IHNs
b3dlcgogICBnY3NlLXBvbHktZ2V0LWxlc3Mtb2J2aW91cyAgICAgICAgICAgICAgICAgICAgICAg
IDIwLjk1NTYrLTEuMjYyMyAgICAgICAgICAgMjAuMzc4OCstMC43ODI3ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDI4M3ggZmFzdGVyCiAgIGJpZ3N3aXRjaC1pbmRpcmVjdC1zeW1ib2wtb3ItdW5kZWZp
bmVkICAgICAgICAgICAgODIuNDg0NystNS4wNDQyICAgICBeICAgICA0OC4xMDcxKy00LjUzNTYg
ICAgICAgIF4gZGVmaW5pdGVseSAxLjcxNDZ4IGZhc3RlcgogICBvYmplY3QteG9yICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjU4MzYrLTAuOTk4NiAgICAgPyAgICAg
IDcuOTA1NCstMC42OTI0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQyNHggc2xvd2VyCiAgIHJlZ2V4
cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNTc2NistMC4wMjU1
ICAgICAgICAgICAgMC41NzQ1Ky0wLjAxNzIgICAgICAgIAogICBiaWctaW50LW11bCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjkxMzYrLTEuMjQ1MiAgICAgICAgICAg
IDUuMTgwOCstMC4zNjUzICAgICAgICAgIG1pZ2h0IGJlIDEuMTQxNHggZmFzdGVyCiAgIGlzLXN0
cmluZy1mb2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNjQ5OCstMC40
ODY1ICAgICAgICAgICAgMy41NjkzKy0wLjI2ODYgICAgICAgICAgbWlnaHQgYmUgMS4wMjI1eCBm
YXN0ZXIKICAgbWF0aC1yYW5kb20gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxOS41NTI4Ky0wLjgzMjYgICAgICAgICAgIDE5LjI0MDIrLTAuNjgxMiAgICAgICAgICBtaWdo
dCBiZSAxLjAxNjJ4IGZhc3RlcgogICBpcy1vYmplY3Qtb3ItbnVsbC1mb2xkLXRyaWNreSAgICAg
ICAgICAgICAgICAgICAgICA1LjYzNDkrLTAuNTIyMSAgICAgPyAgICAgIDYuNDM2NCstMS4zMTc5
ICAgICAgICA/IG1pZ2h0IGJlIDEuMTQyMnggc2xvd2VyCiAgIHJlZ2lzdGVyLXByZXNzdXJlLWZy
b20tb3NyICAgICAgICAgICAgICAgICAgICAgICAgMjAuOTgzMistMi4wNjc2ICAgICAgICAgICAx
OS45MjMxKy0xLjA1OTcgICAgICAgICAgbWlnaHQgYmUgMS4wNTMyeCBmYXN0ZXIKICAgaW5mZXIt
b25lLXRpbWUtY2xvc3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC42Mjc3Ky0zLjc3
NTIgICAgICAgICAgICA5Ljc3NjUrLTEuNDkxNSAgICAgICAgICBtaWdodCBiZSAxLjA4NzF4IGZh
c3RlcgogICBsaWNtLWRyYWdvbnMtb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgICAg
IDQ2LjAwMzQrLTEuMjY1NiAgICAgICAgICAgNDUuMzQwNSstMi43MjI5ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDE0NnggZmFzdGVyCiAgIHNwYXJzZS1zZXQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNzUuMDk3OCstMS43MzEwICAgICAgICAgICA3NC45MDA4Ky0xLjg4Mzkg
ICAgICAgIAogICBzdHJjYXQtbGVuZ3RoLWNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA2Ljg3NTIrLTAuNDM4MiAgICAgPyAgICAgIDcuMzIzNystMC42MjczICAgICAgICA/IG1p
Z2h0IGJlIDEuMDY1Mnggc2xvd2VyCiAgIHNpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nICAgICAg
ICAgICAgICAgICAgICAgICAgMjEuNzk0NistMC4zMTIwICAgICAhICAgICAyMi40OTgwKy0wLjM1
MzAgICAgICAgICEgZGVmaW5pdGVseSAxLjAzMjN4IHNsb3dlcgogICBudW1iZXItdG8tc3RyaW5n
LXdpdGgtYWRkICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjc5MTgrLTAuNzgyOCAgICAgPyAg
ICAgMTIuOTAwNistNC41NzA0ICAgICAgICA/IG1pZ2h0IGJlIDEuMTk1NHggc2xvd2VyCiAgIHJh
cmUtb3NyLWV4aXQtb24tbG9jYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTcuNzc2NCst
MS4yMjgwICAgICAgICAgICAxNy4zNTE5Ky0wLjk3NjggICAgICAgICAgbWlnaHQgYmUgMS4wMjQ1
eCBmYXN0ZXIKICAgb2JqZWN0LXRlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNC41OTc1Ky0xLjA0MjIgICAgICAgICAgICA0LjM2NjErLTAuNjQ3NSAgICAgICAgICBt
aWdodCBiZSAxLjA1MzB4IGZhc3RlcgogICBpbnQ1Mi1iYWNrLWFuZC1mb3J0aCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDEwLjk1ODcrLTAuNjk3NCAgICAgPyAgICAgMTIuMDM2MistMC42
OTMxICAgICAgICA/IG1pZ2h0IGJlIDEuMDk4M3ggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0aC1z
dHJpbmctY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguMDQ2OCstMC41MDY5ICAgICA/ICAg
ICAgOS40ODc1Ky0xLjUzMzUgICAgICAgID8gbWlnaHQgYmUgMS4xNzkweCBzbG93ZXIKICAgaW4t
b25lLWNhc2UtdHJ1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi42NzgyKy0w
LjgzMDQgICAgICAgICAgIDEyLjEzNTYrLTAuNjQ5MCAgICAgICAgICBtaWdodCBiZSAxLjA0NDd4
IGZhc3RlcgogICBzdHJpbmctY29uY2F0LXBhaXItb2JqZWN0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAzLjg0NzQrLTEuNDI1NCAgICAgICAgICAgIDMuNzM3OCstMC43NTA5ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDI5M3ggZmFzdGVyCiAgIGFzbWpzX2Jvb2xfYnVnICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDguODcwOCstMS4zMDczICAgICAgICAgICAgOC4wNTA4Ky0wLjc5
MjUgICAgICAgICAgbWlnaHQgYmUgMS4xMDE5eCBmYXN0ZXIKICAgcGx1cy1ib29sZWFuLWRvdWJs
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy41ODAwKy0wLjIzOTggICAgICAgICAg
ICAzLjM4MDErLTAuMTY3OSAgICAgICAgICBtaWdodCBiZSAxLjA1OTF4IGZhc3RlcgogICBhcnJh
eS13aXRoLWludDMyLWFkZC1zdWIgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjA4NDArLTAu
OTMzMyAgICAgICAgICAgIDcuOTQwOSstMC44MzMwICAgICAgICAgIG1pZ2h0IGJlIDEuMDE4MHgg
ZmFzdGVyCiAgIHN0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Mi4xMTAxKy0wLjM4MzcgICAgICAgICAgICAxLjgwMjgrLTAuMjk4NCAgICAgICAgICBtaWdodCBi
ZSAxLjE3MDR4IGZhc3RlcgogICBsYXJnZS1tYXAtaXRlcmF0aW9uICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQyLjE3MTMrLTEuMzU4NyAgICAgPyAgICAgNDMuMjk1MSstMi42NDIwICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDI2Nnggc2xvd2VyCiAgIG9iamVjdC1yc2hpZnQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuNzAwOCstMC45NTQ3ICAgICAgICAgICAgNy40
ODE4Ky0wLjU5MjggICAgICAgICAgbWlnaHQgYmUgMS4wMjkzeCBmYXN0ZXIKICAgZ2V0dGVyLXJp
Y2hhcmRzLXRyeS1jYXRjaCAgICAgICAgICAgICAgICAgICAgICAgIDExMi43MDI5Ky0xLjc3MDYg
ICAgICEgICAgMTE4LjU1NjkrLTIuNzc3OSAgICAgICAgISBkZWZpbml0ZWx5IDEuMDUxOXggc2xv
d2VyCiAgIEhhc2hNYXAtcHV0LWdldC1pdGVyYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAg
MzQuMjYxMistMS4wMzcyICAgICAgICAgICAzMy42OTE1Ky0wLjgwNzMgICAgICAgICAgbWlnaHQg
YmUgMS4wMTY5eCBmYXN0ZXIKICAgbWludXMtYm9vbGVhbi1kb3VibGUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMy43MTE4Ky0wLjg0MTMgICAgICAgICAgICAzLjQ3NTErLTAuMTUyNCAg
ICAgICAgICBtaWdodCBiZSAxLjA2ODF4IGZhc3RlcgoKICAgPGdlb21ldHJpYz4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMS4zOTA5Ky0wLjA1NTcgICAgICEgICAgIDEx
LjUwNDMrLTAuMDQ4MCAgICAgICAgISBkZWZpbml0ZWx5IDEuMDEwMHggc2xvd2VyCgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2Ug
ICAgICAgICAgICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIApBc21CZW5jaDoKICAgRmxvYXRNTS5jICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDg2Ni4xODAyKy00Ljg1OTIgICAgID8gICAgODY5LjYxMTArLTMuOTQ0NiAg
ICAgICAgPwogICBkcnkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNTYzLjk4MjUrLTcuMTY2MyAgICAgPyAgICA1NjUuMjUwMystMy42Mzc3ICAgICAgICA/CiAg
IGNyYXkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MjQuODU1
NistMy4zMDA5ICAgICA/ICAgIDUyNS41NzkzKy01Ljg1MTMgICAgICAgID8KICAgc3RlcGFub3Zf
Y29udGFpbmVyLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgNTE0NC42ODUzKy04Ni40NTM2
ICAgICAgICA1MTE4LjM4MjErLTU2LjQ5NzMgICAgICAgCiAgIG4tYm9keS5jICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNjMuODk5MSstMTEuNTIxOSAgICA/ICAgMTA2
Ny4xMTE0Ky00LjU5NDcgICAgICAgID8KICAgZ2NjLWxvb3BzLmNwcCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNDk2Ni43MTYzKy0zMy4wODAwICAgICAgICA0OTU0LjIyMzArLTUx
LjI4NjEgICAgICAgCiAgIFF1aWNrc29ydC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA1MjMuNjIyMistNi4zMjA0ICAgICA/ICAgIDUyNC44OTU0Ky04Ljg5MzAgICAgICAg
ID8KICAgVG93ZXJzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMz
My43MDQ0Ky01LjMzMTggICAgICAgICAgMzMyLjkyOTcrLTUuMDg3OSAgICAgICAgCiAgIGJpZ2Zp
Yi5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MzcuNzM1MCstNy41
NDU0ICAgICA/ICAgIDY0Ny43NzM2Ky0xNS4xOTQ2ICAgICAgID8gbWlnaHQgYmUgMS4wMTU3eCBz
bG93ZXIKCiAgIDxnZW9tZXRyaWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA5NzIuMjM2MSstMi4yMjMwICAgICA/ICAgIDk3NC4yNDI4Ky0zLjk2NzcgICAgICAgID8gbWln
aHQgYmUgMS4wMDIxeCBzbG93ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAgICAgICAgICAgICAgICAgICAgICBuZXcgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkNvbXByZXNzaW9uQmVuY2g6CiAg
IGh1ZmZtYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIuOTk5
NystMS40MDIzICAgICA/ICAgICAzMy4wOTI3Ky0xLjYzNDAgICAgICAgID8KICAgYXJpdGhtZXRp
Yy1zaW1wbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM1MC4wNTQ4Ky0xNi4yMDI2
ICAgICAgICAgMzQ0LjY3MjErLTEwLjE2MjggICAgICAgICBtaWdodCBiZSAxLjAxNTZ4IGZhc3Rl
cgogICBhcml0aG1ldGljLXByZWNpc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzMz
LjA0MjQrLTQuNTg1OSAgICAgPyAgICAzMzUuOTAzMCstMTUuMTk0MyAgICAgICA/CiAgIGFyaXRo
bWV0aWMtY29tcGxleC1wcmVjaXNlICAgICAgICAgICAgICAgICAgICAgICAzMzAuMzIzNSstNC45
OTkxICAgICAgICAgIDMyNi4xMDU5Ky01Ljk1MjAgICAgICAgICAgbWlnaHQgYmUgMS4wMTI5eCBm
YXN0ZXIKICAgYXJpdGhtZXRpYy1wcmVjaXNlLW9yZGVyLTAgICAgICAgICAgICAgICAgICAgICAg
IDM0OC45NjgyKy0zLjI5NTIgICAgICAgICAgMzQzLjA2OTcrLTMuOTU0MiAgICAgICAgICBtaWdo
dCBiZSAxLjAxNzJ4IGZhc3RlcgogICBhcml0aG1ldGljLXByZWNpc2Utb3JkZXItMSAgICAgICAg
ICAgICAgICAgICAgICAgNDE5LjgxOTUrLTE0LjI3NDYgICAgICAgICA0MTAuODM0NystNC4yNDgz
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIxOXggZmFzdGVyCiAgIGFyaXRobWV0aWMtcHJlY2lzZS1v
cmRlci0yICAgICAgICAgICAgICAgICAgICAgICA0NzYuNTM0MCstNS44OTMzICAgICA/ICAgIDQ3
OC43NDk3Ky00LjE5NjUgICAgICAgID8KICAgYXJpdGhtZXRpYy1zaW1wbGUtb3JkZXItMSAgICAg
ICAgICAgICAgICAgICAgICAgIDQxMS40MDg4Ky0yLjg4ODkgICAgID8gICAgNTAzLjA1ODUrLTIx
Mi4xOTM2ICAgICAgPyBtaWdodCBiZSAxLjIyMjh4IHNsb3dlcgogICBhcml0aG1ldGljLXNpbXBs
ZS1vcmRlci0yICAgICAgICAgICAgICAgICAgICAgICAgNDg0LjA5NDcrLTMuNjMzMyAgICAgPyAg
ICA0ODUuMjAzMistNC40ODI2ICAgICAgICA/CiAgIGx6LXN0cmluZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAzNTAuMjQ5MistOC45NjU5ICAgICAgICAgIDM0Ni45NjAy
Ky01LjI1MDIgICAgICAgIAoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDMwMS4zMDQ1Ky0yLjQyOTYgICAgID8gICAgMzAzLjY2MjMrLTkuNjE0NiAg
ICAgICAgPyBtaWdodCBiZSAxLjAwNzh4IHNsb3dlcgoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlICAgICAgICAgICAgICAgICAg
ICAgIG5ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKU2l4U3BlZWQ6
CiAgIHRlbXBsYXRlX3N0cmluZy5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc1MjYu
MjYzMystMzQuODY3OCAgICAgICAgNzUxOC4wNzAyKy0zMy4wNDYyICAgICAgIAogICB0ZW1wbGF0
ZV9zdHJpbmcuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0OTE4LjA2MzYrLTguNzE0
OCAgICAgPyAgIDU1OTYuNzI1NystMTUxOC4zNDkyICAgICA/IG1pZ2h0IGJlIDEuMTM4MHggc2xv
d2VyCiAgIGRlZmF1bHRzLmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEy
MjMuMTQzNistMjQuMTI1NiAgICA/ICAgMTQ1OS4yMDA2Ky01NTAuNjk4MSAgICAgID8gbWlnaHQg
YmUgMS4xOTMweCBzbG93ZXIKICAgZGVmYXVsdHMuZXM2ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQzMS42NTE2Ky04LjA4NTcgICAgID8gICAgNDMzLjc1NTUrLTEwLjE1MjAg
ICAgICAgPwogICBtYXAtc2V0LWxvb2t1cC5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTAxLjM5MTArLTQzLjcwNzUgICAgICAgICAgODEuODU4NSstMS40MjE2ICAgICAgICAgIG1p
Z2h0IGJlIDEuMjM4NnggZmFzdGVyCiAgIG1hcC1zZXQtbG9va3VwLmVzNiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIuNTE4MCstMC45OTI1ICAgICAgICAgICAgMi4xMDc2Ky0wLjQ5
MTMgICAgICAgICAgbWlnaHQgYmUgMS4xOTQ3eCBmYXN0ZXIKICAgc3ByZWFkLmVzNSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNy4yNzAzKy0xLjE2MzQgICAgID8gICAg
IDE3LjY1NzUrLTEuMzg2MCAgICAgICAgPyBtaWdodCBiZSAxLjAyMjR4IHNsb3dlcgogICBzcHJl
YWQuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYzLjY3NzErLTUu
NTA5NyAgICAgICAgICAgNTkuMzExMystMi41NzkxICAgICAgICAgIG1pZ2h0IGJlIDEuMDczNngg
ZmFzdGVyCiAgIG9iamVjdC1hc3NpZ24uZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzODguMjQxMCstNS4yNDUzICAgICAgICAgIDM4Ny41NTU3Ky0zLjczMTEgICAgICAgIAogICBv
YmplY3QtYXNzaWduLmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDE3LjgxNjgr
LTIyMS40OTg2ICAgICAgICAzMjkuNDIyOSstMi42MjQzICAgICAgICAgIG1pZ2h0IGJlIDEuMjY4
M3ggZmFzdGVyCiAgIHNwcmVhZC1saXRlcmFsLmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxMDcuODMwNistMS43NzY3ICAgICA/ICAgIDEwOS42MDM5Ky0yLjY5MDYgICAgICAgID8g
bWlnaHQgYmUgMS4wMTY0eCBzbG93ZXIKICAgc3ByZWFkLWxpdGVyYWwuZXM2ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzMy41NTU1Ky0wLjI4NTggICAgID8gICAgIDMzLjg3NTkrLTAu
MzU3NyAgICAgICAgPwogICBtYXAtc2V0LmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDMwLjAzNjArLTAuMjg1MyAgICAgXiAgICAgMjUuODk0NSstMC4yMjkzICAgICAg
ICBeIGRlZmluaXRlbHkgMS4xNTk5eCBmYXN0ZXIKICAgbWFwLXNldC5lczYgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIwNi40OTU5Ky0zLjk2NzAgICAgICAgICAgMjA0LjI5
MjcrLTEuODA3MSAgICAgICAgICBtaWdodCBiZSAxLjAxMDh4IGZhc3RlcgogICBkZXN0cnVjdHVy
aW5nLXNpbXBsZS5lczUgICAgICAgICAgICAgICAgICAgICAgICAgIDg1LjE3OTcrLTUuMTYxNiAg
ICAgPyAgICAgODcuMzczNCstNS40NDM5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI1OHggc2xvd2Vy
CiAgIGRlc3RydWN0dXJpbmctc2ltcGxlLmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgNzQu
Mjk0NistNC4xODg3ICAgICAhICAgICA4OS42MjA0Ky0zLjk0NzIgICAgICAgICEgZGVmaW5pdGVs
eSAxLjIwNjN4IHNsb3dlcgogICBzdXBlci5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEzLjU5NTQrLTAuNzE5MyAgICAgPyAgICAgMTQuMzEwNCstMC42Mzg0ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDUyNnggc2xvd2VyCiAgIHN1cGVyLmVzNiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxMDIuNTIyNystMy43MDc3ICAgICAgICAgIDEwMS4z
NDIwKy0xLjg4NTkgICAgICAgICAgbWlnaHQgYmUgMS4wMTE3eCBmYXN0ZXIKICAgZm9yLW9mLW9i
amVjdC5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MS44OTE0Ky01LjkxOTgg
ICAgICAgICAgIDU5LjcwNDUrLTMuNTI5NiAgICAgICAgICBtaWdodCBiZSAxLjAzNjZ4IGZhc3Rl
cgogICBmb3Itb2Ytb2JqZWN0LmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjc3
LjEwNzErLTEuNzMxNCAgICAgPyAgICAyODEuNjM4OSstMy44Mzk5ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDE2NHggc2xvd2VyCiAgIHJlc3QuZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNDkuMDEyOCstMS42MjU1ICAgICA/ICAgICA0OS40ODcyKy0xLjA2MDYgICAg
ICAgID8KICAgcmVzdC5lczYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMy43MjI3Ky0wLjQ3NTcgICAgID8gICAgICAzLjgwMTErLTAuMzU1MCAgICAgICAgPyBtaWdo
dCBiZSAxLjAyMTB4IHNsb3dlcgogICByZWdleC11LmVzNSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDczLjEyMTIrLTQ1LjE5NDAgICAgICAgICAgNTQuMzA1NSstMi45MTY5
ICAgICAgICAgIG1pZ2h0IGJlIDEuMzQ2NXggZmFzdGVyCiAgIHJlZ2V4LXUuZXM2ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTYuNzMxOCstNS4zMzYwICAgICAgICAgICA5
NS4yMTc1Ky0yLjE0NDAgICAgICAgICAgbWlnaHQgYmUgMS4wMTU5eCBmYXN0ZXIKICAgYXJyb3cu
ZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4OC41MDEzKy00LjIz
MzYgICAgICAgICAgIDgzLjc2NDUrLTIuNjA2NSAgICAgICAgICBtaWdodCBiZSAxLjA1NjV4IGZh
c3RlcgogICBhcnJvdy5lczYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDg2LjgzNTArLTQuNDAxNyAgICAgPyAgICAgOTYuNDMyMCstMzAuMjQ1OSAgICAgICA/IG1pZ2h0
IGJlIDEuMTEwNXggc2xvd2VyCiAgIGJpbmRpbmdzLWNvbXBvdW5kLmVzNSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgODAuMTU1OCstNi45MjM0ICAgICAgICAgICA3Ni43NzI5Ky00LjM0NjEg
ICAgICAgICAgbWlnaHQgYmUgMS4wNDQxeCBmYXN0ZXIKICAgYmluZGluZ3MtY29tcG91bmQuZXM2
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4Mi4wOTUyKy01LjIyNzUgICAgICAgICAgIDc3
LjA2MzQrLTYuNjYwMiAgICAgICAgICBtaWdodCBiZSAxLjA2NTN4IGZhc3RlcgogICBjbGFzc2Vz
LmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk1LjcyOTIrLTEuNTIx
MSAgICAgICAgICAgOTIuMDg2OCstNC41NTM4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM5NnggZmFz
dGVyCiAgIGNsYXNzZXMuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OTUuMzQ1MistMS41NjQ4ICAgICAgICAgICA5Mi4wMDg2Ky0xLjg0MzUgICAgICAgICAgbWlnaHQg
YmUgMS4wMzYzeCBmYXN0ZXIKICAgdGVtcGxhdGVfc3RyaW5nX3RhZy5lczUgICAgICAgICAgICAg
ICAgICAgICAgICAgICA4MS41NDI5Ky0xLjE3ODkgICAgID8gICAgIDgxLjc3MzQrLTEuNTQ1NCAg
ICAgICAgPwogICB0ZW1wbGF0ZV9zdHJpbmdfdGFnLmVzNiAgICAgICAgICAgICAgICAgICAgICAg
ICAgMjQzLjI0OTkrLTIuNDg4OSAgICAgICAgICAyMzguNjgwMSstMi41Mzk2ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDE5MXggZmFzdGVyCiAgIG1hcC1zdHJpbmcuZXM1ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxNTUuMTU5NCstMTIuOTE0MCAgICA/ICAgIDE2MC4yNjE3Ky05Ljc2
MTMgICAgICAgID8gbWlnaHQgYmUgMS4wMzI5eCBzbG93ZXIKICAgbWFwLXN0cmluZy5lczYgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYzOC42OTg0Ky04Ljc5MTcgICAgID8gICAg
NjM5LjM2MjkrLTc5LjgxNjIgICAgICAgPwogICBhcnJvdy1kZWNsYXJlLmVzNSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTI4Ljc1NjcrLTQuMjMwNSAgICAgPyAgICAxMzMuNzgyNyst
NC43MTA2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM5MHggc2xvd2VyCiAgIGFycm93LWRlY2xhcmUu
ZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTQuMzgwNCstNjEuNTk2MyAgICAg
ICAgIDEzMC45MjgyKy00LjkzNDMgICAgICAgICAgbWlnaHQgYmUgMS4xNzkxeCBmYXN0ZXIKICAg
c3ByZWFkLWdlbmVyYXRvci5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0MS45NDY4
Ky03OC40NTgwICAgICAgICAgMTEwLjM5NjErLTIuNDk4MiAgICAgICAgICBtaWdodCBiZSAxLjI4
NTh4IGZhc3RlcgogICBzcHJlYWQtZ2VuZXJhdG9yLmVzNiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMjg1LjA4OTkrLTQuNDI1MiAgICAgPyAgICAyODUuNjU4MCstNi41Nzc0ICAgICAgICA/
CiAgIG9iamVjdC1saXRlcmFsLWV4dC5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUu
MDQ0MystMS4xNjM0ICAgICA/ICAgICAyNi4yMjM0Ky0yLjYyNDMgICAgICAgID8gbWlnaHQgYmUg
MS4wNDcxeCBzbG93ZXIKICAgb2JqZWN0LWxpdGVyYWwtZXh0LmVzNiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyOC43MTE5Ky0wLjY0MjMgICAgID8gICAgIDI4Ljg2NjkrLTEuNDcyNSAgICAg
ICAgPwogICBnZW5lcmF0b3IuZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MTQ4LjYzNTMrLTMuMTA2MCAgICAgICAgICAxNDcuMTUyNistMi43MjAxICAgICAgICAgIG1pZ2h0
IGJlIDEuMDEwMXggZmFzdGVyCiAgIGdlbmVyYXRvci5lczYgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyODQuMTMwMSstMy42MDQwICAgICA/ICAgIDI4NC4yMDA4Ky04LjgzMzAg
ICAgICAgID8KICAgYXJyb3ctYXJncy5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA4Ny4wNjA3Ky00LjcwNjUgICAgICAgICAgIDg2LjYxODIrLTQuNzU1NCAgICAgICAgCiAg
IGFycm93LWFyZ3MuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODUuODk5
MystNi4xMjUyICAgICA/ICAgICA4Ni45NjQ0Ky00Ljk0NjEgICAgICAgID8gbWlnaHQgYmUgMS4w
MTI0eCBzbG93ZXIKICAgZm9yLW9mLWFycmF5LmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDIzOS4wNDQ0Ky0yLjUzODYgICAgID8gICAgMjQxLjQwMTArLTIuMzU0MCAgICAgICAg
PwogICBmb3Itb2YtYXJyYXkuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzI1
LjczNDMrLTEyNS42OTg4ICAgPyAgICAzMjkuOTQyOCstMTE5Ljk5MTYgICAgICA/IG1pZ2h0IGJl
IDEuMDEyOXggc2xvd2VyCiAgIGJpbmRpbmdzLmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNzguMTkxNCstNC45MTMwICAgICAgICAgICA3NS44MzAzKy0yLjQ3OTMgICAg
ICAgICAgbWlnaHQgYmUgMS4wMzExeCBmYXN0ZXIKICAgYmluZGluZ3MuZXM2ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA4My43MTYyKy01LjcyMjIgICAgID8gICAgIDg4LjMw
MDcrLTMuMjAwOCAgICAgICAgPyBtaWdodCBiZSAxLjA1NDh4IHNsb3dlcgogICBkZXN0cnVjdHVy
aW5nLmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEwLjkwMzYrLTQ3LjI4NjEg
ICAgICAgICAgOTAuNTQ1NystMy43ODk2ICAgICAgICAgIG1pZ2h0IGJlIDEuMjI0OHggZmFzdGVy
CiAgIGRlc3RydWN0dXJpbmcuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDQu
ODcxMSstOC44NzAxICAgICAgICAgIDEwMy4xOTIyKy0xMi4xMTA2ICAgICAgICAgbWlnaHQgYmUg
MS4wMTYzeCBmYXN0ZXIKICAgbWFwLXNldC1vYmplY3QuZXM1ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0My42MjU2Ky0xLjQ0ODggICAgID8gICAgIDUwLjE0MTYrLTE3LjIwNDYgICAg
ICAgPyBtaWdodCBiZSAxLjE0OTR4IHNsb3dlcgogICBtYXAtc2V0LW9iamVjdC5lczYgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMjE4LjA4MjArLTQuNTcwNCAgICAgICAgICAyMTQuOTE5
OCstMi40NTIwICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0N3ggZmFzdGVyCgogICA8Z2VvbWV0cmlj
PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEwLjM2NjYrLTIuMjY5MCAg
ICAgICAgICAxMDkuMDc3OCstMS4yNDgzICAgICAgICAgIG1pZ2h0IGJlIDEuMDExOHggZmFzdGVy
CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJhc2UgICAgICAgICAgICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIApHZW9tZWFuIG9mIHByZWZlcnJlZCBtZWFuczoKICAgPHNjYWxlZC1y
ZXN1bHQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2OS45NTAyKy0wLjI2MDIg
ICAgID8gICAgIDcwLjUxMzUrLTAuMzMwMCAgICAgICAgPyBtaWdodCBiZSAxLjAwODF4IHNsb3dl
cgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319459</attachid>
            <date>2017-08-31 07:01:27 -0700</date>
            <delta_ts>2017-09-06 16:14:09 -0700</delta_ts>
            <desc>work in progress.</desc>
            <filename>temp.patch</filename>
            <type>text/plain</type>
            <size>129169</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIxMzk5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4MSBA
QAorMjAxNy0wOC0zMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
VXNlIEpJVCBwcm9iZXMgZm9yIERGRyBPU1IgZXhpdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzM0MzcwNTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBkb2VzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIDEuIFJlcGxhY2VzIG9z
ckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoKSB3aXRoIG9zckV4aXRUaHVua0dlbmVyYXRv
cigpLgorICAgICAgICAgICBXaGlsZSBvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKCkg
Z2VuZXJhdGVzIGEgdGh1bmsgdGhhdCBjb21waWxlcyBhCisgICAgICAgICAgIHVuaXF1ZSBPU1Ig
b2ZmcmFtcCBmb3IgZWFjaCBERkcgT1NSIGV4aXQgc2l0ZSwgb3NyRXhpdFRodW5rR2VuZXJhdG9y
KCkKKyAgICAgICAgICAgZ2VuZXJhdGVzIGEgdGh1bmsgdGhhdCBqdXN0IGV4ZWN1dGVzIHRoZSBP
U1IgZXhpdC4KKworICAgICAgICAgICBUaGUgb3NyRXhpdFRodW5rR2VuZXJhdG9yKCkgZ2VuZXJh
dGVkIHRodW5rIHdvcmtzIGJ5IHVzaW5nIGEgc2luZ2xlIEpJVCBwcm9iZQorICAgICAgICAgICB0
byBjYWxsIE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KCkuICBUaGUgSklUIHByb2JlIHRha2VzIGNh
cmUgb2YgcHJlc2VydmluZworICAgICAgICAgICBDUFUgcmVnaXN0ZXJzLCBhbmQgcHJvdmlkaW5n
IHRoZSBQcm9iZTo6U3RhY2sgbWVjaGFuaXNtIGZvciBtb2RpZnlpbmcgdGhlCisgICAgICAgICAg
IHN0YWNrIGZyYW1lLgorCisgICAgICAgICAgIE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KCkgcmVw
bGFjZXMgT1NSRXhpdDo6Y29tcGlsZU9TUkV4aXQoKSBhbmQKKyAgICAgICAgICAgT1NSRXhpdDo6
Y29tcGlsZUV4aXQoKS4gIEl0IGlzIGJhc2ljYWxseSBhIHJlLXdyaXRlIG9mIHRob3NlIGZ1bmN0
aW9ucyB0bworICAgICAgICAgICBleGVjdXRlIHRoZSBPU1IgZXhpdCB3b3JrIGluc3RlYWQgb2Yg
Y29tcGlsaW5nIGNvZGUgdG8gZXhlY3V0ZSB0aGUgd29yay4KKworICAgICAgICAgICBBcyBhIHJl
c3VsdCwgd2UgZ2V0IHRoZSBmb2xsb3dpbmcgc2F2aW5nczoKKyAgICAgICAgICAgYS4gbm8gbW9y
ZSBPU1IgZXhpdCByYW1wIGNvbXBpbGF0aW9uIHRpbWUuCisgICAgICAgICAgIGIuIG5vIHVzZSBv
ZiBKSVQgZXhlY3V0YWJsZSBtZW1vcnkgZm9yIHN0b3JpbmcgZWFjaCB1bmlxdWUgT1NSIGV4aXQg
cmFtcC4KKworICAgICAgICAgICBPbiB0aGUgbmVnYXRpdmUgc2lkZSwgd2UgaW5jdXIgdGhlc2Ug
Y29zdHM6CisKKyAgICAgICAgICAgYy4gdGhlIE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KCkgcmFt
cCBtYXkgYmUgYSBsaXR0bGUgc2xvd2VyIHRoYW4gdGhlIGNvbXBpbGVkCisgICAgICAgICAgICAg
IHZlcnNpb24gb2YgdGhlIHJhbXAuICBIb3dldmVyLCBPU1IgZXhpdHMgYXJlIHJhcmUuICBIZW5j
ZSwgdGhpcyBzbWFsbAorICAgICAgICAgICAgICBkaWZmZXJlbmNlIHNob3VsZCBub3QgbWF0dGVy
IG11Y2guICBJdCBpcyBhbHNvIG9mZnNldCBieSB0aGUgc2F2aW5ncyBmcm9tCisgICAgICAgICAg
ICAgIChhKS4KKworICAgICAgICAgICBkLiB0aGUgUHJvYmU6OlN0YWNrIGFsbG9jYXRlcyAxSyBw
YWdlcyBmb3IgbWVtb3J5IGZvciBidWZmZXJpbmcgc3RhY2sKKyAgICAgICAgICAgICAgbW9kaWZj
YXRpb25zLiAgVGhlIG51bWJlciBvZiB0aGVzZSBwYWdlcyBkZXBlbmRzIG9uIHRoZSBzcGFuIG9m
IHN0YWNrIG1lbW9yeQorICAgICAgICAgICAgICB0aGF0IHRoZSBPU1IgZXhpdCByYW1wIHJlYWRz
IGZyb20gYW5kIHdyaXRlcyB0by4gIFNpbmNlIHRoZSBPU1IgZXhpdCByYW1wCisgICAgICAgICAg
ICAgIHRlbmRzIHRvIG9ubHkgbW9kaWZ5IHZhbHVlcyBpbiB0aGUgY3VycmVudCBERkcgZnJhbWUg
YW5kIHRoZSBjdXJyZW50CisgICAgICAgICAgICAgIFZNRW50cnlSZWNvcmQsIHRoZSBudW1iZXIg
b2YgcGFnZXMgdGVuZHMgdG8gb25seSBiZSAxIG9yIDIuCisKKyAgICAgICAgICAgICAgVXNpbmcg
dGhlIGpzYyB0ZXN0cyBhcyBhIHdvcmtsb2FkLCB0aGUgdmFzdCBtYWpvcml0eSBvZiB0ZXN0cyB0
aGF0IGRvIE9TUgorICAgICAgICAgICAgICBleGl0LCB1c2VzIDMgb3IgbGVzcyAxSyBwYWdlcyAo
d2l0aCB0aGUgb3ZlcndoZWxtaW5nIG51bWJlciB1c2luZyBqdXN0IDEgcGFnZSkuCisgICAgICAg
ICAgICAgIEEgZmV3IHRlc3RzIHRoYXQgYXJlIHBhdGhvbG9naWNhbCB1c2VzIHVwIHRvIDE0IHBh
Z2VzLCBhbmQgb25lIHBhcnRpY3VsYXJseQorICAgICAgICAgICAgICBiYWQgdGVzdCAoZnVuY3Rp
b24tYXBwbHktbWFueS1hcmdzLmpzKSB1c2VzIDUxMyBwYWdlcy4KKworICAgICAgICAyLiBGaXhl
ZCB0aGUgYm90dG9tIG1vc3QgUHJvYmU6OkNvbnRleHQgYW5kIFByb2JlOjpTdGFjayBnZXQvc2V0
IG1ldGhvZHMgdG8gdXNlCisgICAgICAgICAgIHN0ZDo6bWVtY3B5IHRvIGF2b2lkIHN0cmljdCBh
bGlhc2luZyBpc3N1ZXMuCisKKyAgICAgICAgMy4gTWlzY2VsbGFuZW91cyBtZXRob2RzIGFkZGVk
IHRvIG1ha2UgdGhlIFByb2JlOjpDb250ZXh0IGVhc2llciBvZiB1c2UuCisKKyAgICAgICAgNC4g
QWRkZWQgYSBQcm9iZTo6RnJhbWUgY2xhc3MgdGhhdCBtYWtlcyBpdCBlYXNpZXIgdG8gZ2V0L3Nl
dCBvcGVyYW5kcyBhbmQKKyAgICAgICAgICAgYXJndW1lbnRzIGluIGEgZ2l2ZW4gZnJhbWUgdXNp
bmcgdGhlIGRlZmVycmVkIHdyaXRlIHByb3BlcnRpZXMgb2YgdGhlCisgICAgICAgICAgIFByb2Jl
OjpTdGFjay4gIFByb2JlOjpGcmFtZSBtYWtlcyBpdCBlYXNpZXIgdG8gZG8gc29tZSBvZiB0aGUg
cmVjb3Zlcnkgd29yayBpbgorICAgICAgICAgICB0aGUgT1NSIGV4aXQgcmFtcC4KKworICAgICAg
ICA1LiBDbG9uZWQgb3IgY29udmVydGVkIHNvbWUgZnVuY3Rpb25zIG5lZWRlZCBieSB0aGUgT1NS
IGV4aXQgcmFtcC4gIFRoZSBvcmlnaW5hbAorICAgICAgICAgICB2ZXJzaW9ucyBvZiB0aGVzZSBm
dW5jdGlvbnMgYXJlIHN0aWxsIGxlZnQgaW4gcGxhY2UgYmVjYXVzZSB0aGV5IGFyZSBzdGlsbAor
ICAgICAgICAgICBuZWVkZWQgZm9yIEZUTCBPU1IgZXhpdC4gIEEgRklYTUUgY29tbWVudCBoYXMg
YmVlbiBhZGRlZCB0byByZW1vdmUgdGhlbSBsYXRlci4KKyAgICAgICAgICAgVGhlc2UgZnVuY3Rp
b25zIGluY2x1ZGU6CisKKyAgICAgICAgICAgREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCdz
IGhhbmRsZUV4aXRDb3VudHMoKSA9PT4KKyAgICAgICAgICAgICAgIENvZGVCbG9jazo6dXBkYXRl
T1NSRXhpdENvdW50ZXJBbmRDaGVja0lmTmVlZFRvUmVvcHRpbWl6ZSgpCisgICAgICAgICAgIERG
R09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAncyByZWlmeUlubGluZWRDYWxsRnJhbWVzKCkgPT0+
CisgICAgICAgICAgICAgICBERkdPU1JFeGl0LmNwcCdzIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMo
KQorICAgICAgICAgICBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwJ3MgYWRqdXN0QW5kSnVt
cFRvVGFyZ2V0KCkgPT0+CisgICAgICAgICAgICAgICBERkdPU1JFeGl0LmNwcCdzIGFkanVzdEFu
ZEp1bXBUb1RhcmdldCgpCisKKyAgICAgICAgICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZTo6ZW1pdFJlcG9ydFZhbHVlKCkgPT0+CisgICAgICAgICAgICAgICBNZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlOjpyZXBvcnRWYWx1ZSgpCisKKyAgICAgICAgICAgREZHT3BlcmF0aW9ucy5j
cHAncyBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHNEdXJpbmdFeGl0KCkgPT0+CisgICAg
ICAgICAgICAgICBERkdPU1JFeGl0LmNwcCdzIGNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4
aXQoKQorICAgICAgICAgICBERkdPcGVyYXRpb25zLmNwcCdzIG9wZXJhdGlvbkNyZWF0ZUNsb25l
ZEFyZ3VtZW50c0R1cmluZ0V4aXQoKSA9PT4KKyAgICAgICAgICAgICAgIERGR09TUkV4aXQuY3Bw
J3MgY3JlYXRlQ2xvbmVkQXJndW1lbnRzRHVyaW5nRXhpdCgpCisKKyAgICAgICAgNi4gQ2hhbmdl
ZCBQcm9maWxlcjo6Q29tcGlsYXRpb246OmFkZE9TUkV4aXQoKSB0byBmaXJzdCBjaGVjayBpZiBh
biBleGlzdGluZworICAgICAgICAgICByZWNvcmQgYWxyZWFkeSBleGlzdHMgZm9yIGEgc3BlY2lm
aWVkIE9TUkV4aXQgaWQuICBJZiBzbywgcmV0dXJuIHRoZSBleGlzdGluZworICAgICAgICAgICBv
bmUuICBFbHNlLCBjcmVhdGUgYSBuZXcgb25lLgorCisgICAgICAgICAgIFRoaXMgaXMgbmVlZGVk
IGJlY2F1c2Ugd2UgcHJldmlvdXNseSBvbmx5IGNhbGwgYWRkT1NSRXhpdCgpIHdoZW4gY29tcGls
aW5nIHRoZQorICAgICAgICAgICBPU1IgZXhpdCByYW1wIGluc3RlYWQgb2YgZWFjaCB0aW1lIHdl
IGV4ZWN1dGUgdGhlIHJhbXAuICBOb3csIHRoZXJlIGlzIG5vCisgICAgICAgICAgIHNlcGFyYXRl
IGNvbXBpbGF0aW9uIHBhc3MgZm9yIHRoZSByYW1wLCBhbmQgd2UgZW5kIHVwIGNhbGxpbmcgaXQg
ZXZlcnkgdGltZQorICAgICAgICAgICB3ZSBleGVjdXRlIHRoZSByYW1wLgorCisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpzdGRGdW5jdGlvbkNhbGxi
YWNrKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6UHJpbnRlcjo6cHJpbnRDYWxsYmFjayk6CisgICAgICAgICogYXNzZW1ibGVy
L1Byb2JlQ29udGV4dC5oOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q1BVU3RhdGU6OmdwciBjb25z
dCk6CisgICAgICAgIChKU0M6OlByb2JlOjpDUFVTdGF0ZTo6c3ByIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6UHJvYmU6OkNvbnRleHQ6OkNvbnRleHQpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q29u
dGV4dDo6YXJnKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6Omdwcik6CisgICAgICAg
IChKU0M6OlByb2JlOjpDb250ZXh0OjpzcHIpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q29udGV4
dDo6ZnByKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6Omdwck5hbWUpOgorICAgICAg
ICAoSlNDOjpQcm9iZTo6Q29udGV4dDo6c3ByTmFtZSk6CisgICAgICAgIChKU0M6OlByb2JlOjpD
b250ZXh0OjpmcHJOYW1lKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6OmdwciBjb25z
dCk6CisgICAgICAgIChKU0M6OlByb2JlOjpDb250ZXh0OjpzcHIgY29uc3QpOgorICAgICAgICAo
SlNDOjpQcm9iZTo6Q29udGV4dDo6ZnByIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNv
bnRleHQ6OnBjKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6OmZwKToKKyAgICAgICAg
KEpTQzo6UHJvYmU6OkNvbnRleHQ6OnNwKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL1Byb2JlRnJhbWUuaDogQWRkZWQuCisgICAg
ICAgIChKU0M6OlByb2JlOjpGcmFtZTo6RnJhbWUpOgorICAgICAgICAoSlNDOjpQcm9iZTo6RnJh
bWU6OmdldEFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkZyYW1lOjpnZXRPcGVyYW5k
KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkZyYW1lOjpnZXQpOgorICAgICAgICAoSlNDOjpQcm9i
ZTo6RnJhbWU6OnNldEFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkZyYW1lOjpzZXRP
cGVyYW5kKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkZyYW1lOjpzZXQpOgorICAgICAgICAqIGFz
c2VtYmxlci9Qcm9iZVN0YWNrLmg6CisgICAgICAgIChKU0M6OlByb2JlOjpQYWdlOjpnZXQpOgor
ICAgICAgICAoSlNDOjpQcm9iZTo6UGFnZTo6c2V0KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OlBh
Z2U6OnBoeXNpY2FsQWRkcmVzc0Zvcik6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6Z2V0
KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OlN0YWNrOjpzZXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0FyaXRoUHJvZmlsZS5jcHA6CisgICAgICAgICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmg6Cisg
ICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkFycmF5UHJv
ZmlsZTo6b2JzZXJ2ZUFycmF5TW9kZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1cGRhdGVPU1JFeGl0Q291bnRlckFuZENoZWNr
SWZOZWVkVG9SZW9wdGltaXplKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRyZXNzT2ZPU1JFeGl0Q291bnRlcik6IERlbGV0ZWQu
CisgICAgICAgICogYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5oOgorICAgICAgICAoSlNDOjpF
eGVjdXRpb25Db3VudGVyOjpoYXNDcm9zc2VkVGhyZXNob2xkIGNvbnN0KToKKyAgICAgICAgKiBi
eXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6cmVwb3J0VmFsdWUpOgorICAgICAgICAqIGJ5
dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKiBkZmcvREZH
RHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlSW1wbCk6CisgICAgICAgICog
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6
bGluayk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OmpzVmFsdWVGb3IpOgorICAgICAgICAoSlNDOjpERkc6OnJlc3RvcmVDYWxsZWVTYXZlc0Zvcik6
CisgICAgICAgIChKU0M6OkRGRzo6c2F2ZUNhbGxlZVNhdmVzRm9yKToKKyAgICAgICAgKEpTQzo6
REZHOjpyZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIp
OgorICAgICAgICAoSlNDOjpERkc6OmNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVl
U2F2ZXNCdWZmZXIpOgorICAgICAgICAoSlNDOjpERkc6OnNhdmVPckNvcHlDYWxsZWVTYXZlc0Zv
cik6CisgICAgICAgIChKU0M6OkRGRzo6Y3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdCk6
CisgICAgICAgIChKU0M6OkRGRzo6Y3JlYXRlQ2xvbmVkQXJndW1lbnRzRHVyaW5nRXhpdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZW1pdFJlc3RvcmVBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpE
Rkc6Ok9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpyZWlmeUlu
bGluZWRDYWxsRnJhbWVzKToKKyAgICAgICAgKEpTQzo6REZHOjphZGp1c3RBbmRKdW1wVG9UYXJn
ZXQpOgorICAgICAgICAoSlNDOjpERkc6OnByaW50T1NSRXhpdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6T1NSRXhpdDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpERkc6Ok9TUkV4aXQ6OmNvbXBpbGVPU1JFeGl0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
REZHOjpPU1JFeGl0Ojpjb21waWxlRXhpdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6
T1NSRXhpdDo6ZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFpbHVyZSk6IERlbGV0ZWQu
CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0
Ojpjb25zaWRlckFkZGluZ0FzRnJlcXVlbnRFeGl0U2l0ZSk6CisgICAgICAgICogZGZnL0RGR09T
UkV4aXRDb21waWxlckNvbW1vbi5jcHA6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxl
ckNvbW1vbi5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdUaHVua3MuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6Om9zckV4aXRUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkRGRzo6
b3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogZGZn
L0RGR1RodW5rcy5oOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmRlYnVnQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgICog
aml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoK
KyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2Zp
bGVyQ29tcGlsYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6Q29tcGlsYXRpb246
OmFkZE9TUkV4aXQpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5oOgorICAg
ICAgICAoSlNDOjpQcm9maWxlcjo6T1NSRXhpdDo6aW5jQ291bnQpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoK
KwogMjAxNy0wOC0yMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAg
IFN0cmluZ3MgbmVlZCB0byBiZSBpbiBzb21lIGtpbmQgb2YgZ2lnYWNhZ2UKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMjEzOTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMjQ0NCw2ICsyNDQ0LDcgQEAKIAkJRkUxMEFBRUMxRjQ0RDU0NTAwOURFREM1
IC8qIFByb2JlU3RhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkUxMEFBRTkxRjQ0RDUxMDAwOURFREM1IC8qIFByb2JlU3RhY2suY3BwICovOyB9
OwogCQlGRTEwQUFFRTFGNDREOTU0MDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEwQUFFRDFGNDREOTQ2MDA5
REVEQzUgLyogUHJvYmVDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRkUxMEFBRjQxRjQ2ODM5NjAwOURFREM1IC8qIFByb2JlQ29udGV4
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEw
QUFGMzFGNDY4MjZEMDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmNwcCAqLzsgfTsKKwkJRkUxMEFB
RkYxRjRFMzhFNTAwOURFREM1IC8qIFByb2JlRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTBBQUZFMUY0RTM4REEwMDlERURDNSAvKiBQcm9i
ZUZyYW1lLmggKi87IH07CiAJCUZFMTIyMDI3MUJFN0Y1OEMwMDM5RTZGMiAvKiBKSVRBZGRHZW5l
cmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
MTIyMDI2MUJFN0Y1NjQwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuaCAqLzsgfTsKIAkJRkUx
MjIwMjgxQkU3RjU5MTAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEyMjAyNTFCRTdGNTY0MDAzOUU2
RjIgLyogSklUQWRkR2VuZXJhdG9yLmNwcCAqLzsgfTsKIAkJRkUxODdBMDExQkZCRTU1RTAwMzhC
QkNBIC8qIEpJVE11bEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTE4NzlGRjFCRkJDNzNDMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJh
dG9yLmNwcCAqLzsgfTsKQEAgLTUxMzgsNiArNTEzOSw3IEBACiAJCUZFMTBBQUVBMUY0NEQ1MTIw
MDlERURDNSAvKiBQcm9iZVN0YWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFByb2JlU3RhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxMEFBRUQxRjQ0
RDk0NjAwOURFREM1IC8qIFByb2JlQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQcm9iZUNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUx
MEFBRjMxRjQ2ODI2RDAwOURFREM1IC8qIFByb2JlQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9iZUNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGRTEwQUFGRTFGNEUzOERBMDA5REVEQzUgLyogUHJvYmVGcmFtZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9iZUZyYW1lLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZFMTIyMDI1MUJFN0Y1NjQwMDM5RTZGMiAvKiBKSVRBZGRHZW5l
cmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUQWRkR2Vu
ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxMjIwMjYxQkU3RjU2
NDAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKSVRBZGRHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkUxODc5RkYxQkZCQzczQzAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRNdWxHZW5lcmF0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTIwNyw2ICs1MjA5LDcgQEAKIAkJRkU4MEMxOTYxRDc3
NUIyNzAwODUxMEMwIC8qIENhdGNoU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2F0Y2hTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTgwQzE5
ODFENzc1RkI0MDA4NTEwQzAgLyogQ2F0Y2hTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDYXRjaFNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkU4MEMxOUExRDc3NjhGRDAwODUxMEMwIC8qIEV4Y2VwdGlvbkV2ZW50TG9jYXRpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhjZXB0aW9uRXZlbnRM
b2NhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODRFRTc5MUY1NjM1
MkQwMDUxQjhGMSAvKiBDb2RlQmxvY2tJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvZGVCbG9ja0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkU5MEJCM0ExQjdDRjY0RTAwNkIzRjAzIC8qIFZNSW5saW5lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBWTUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkU5OEI1QjYxQkI5QUUxMTAwNzNFN0E2IC8qIEpJVFN1YkdlbmVyYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRTdWJHZW5lcmF0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU5OUIyNDcxQzI0QjZEMzAwQzgyMTU5IC8qIEpJVE5lZ0dl
bmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVROZWdH
ZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzcyMiw2ICs3NzI1
LDcgQEAKIAkJCQlGRTYzREQ1MzFFQTlCNjBFMDAxMDNBNjkgLyogUHJpbnRlci5oICovLAogCQkJ
CUZFMTBBQUYzMUY0NjgyNkQwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuY3BwICovLAogCQkJCUZF
MTBBQUVEMUY0NEQ5NDYwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuaCAqLywKKwkJCQlGRTEwQUFG
RTFGNEUzOERBMDA5REVEQzUgLyogUHJvYmVGcmFtZS5oICovLAogCQkJCUZFMTBBQUU5MUY0NEQ1
MTAwMDlERURDNSAvKiBQcm9iZVN0YWNrLmNwcCAqLywKIAkJCQlGRTEwQUFFQTFGNDRENTEyMDA5
REVEQzUgLyogUHJvYmVTdGFjay5oICovLAogCQkJCUZFNTMzQ0EwMUYyMTdDMzEwMDE2QTFGRSAv
KiB0ZXN0bWFzbS5jcHAgKi8sCkBAIC03Nzc4LDYgKzc3ODIsNyBAQAogCQkJCTk2OUEwNzkxMEVE
MUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suaCAqLywKIAkJCQkwRjhGOTQzRDE2Njc2MzJEMDBE
NjE5NzEgLyogQ29kZUJsb2NrSGFzaC5jcHAgKi8sCiAJCQkJMEY4Rjk0M0UxNjY3NjMyRDAwRDYx
OTcxIC8qIENvZGVCbG9ja0hhc2guaCAqLywKKwkJCQlGRTg0RUU3OTFGNTYzNTJEMDA1MUI4RjEg
LyogQ29kZUJsb2NrSW5saW5lcy5oICovLAogCQkJCTBGQzk3RjJGMTgyMDIwRDcwMDJDOUIyNiAv
KiBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwICovLAogCQkJCTBGQzk3RjMwMTgy
MDIwRDcwMDJDOUIyNiAvKiBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaCAqLywKIAkJ
CQkwRjk2RUJCMTE2Njc2RUY0MDA4QkFERTMgLyogQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCAqLywK
QEAgLTk2ODksNiArOTY5NCw3IEBACiAJCQkJQUQyRkNDMUQxREI1OUNCMjAwQjNFNzM2IC8qIFdl
YkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ0OTM3
QzgxREREMEFBRTAwNzdDODA3IC8qIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBRDJGQ0MyRDFEQjgzOEZEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMTBBQUZGMUY0RTM4RTUwMDlERURDNSAvKiBQcm9i
ZUZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0JGOTFEQjU4REFEMDBCM0U3MzYgLyog
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QUQyRkNDMUUxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3Ry
dWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0JGQjFEQjU4REFEMDBCM0U3MzYg
LyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ci5jcHAJKHJldmlzaW9uIDIyMTM5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIGNv
bnN0IGRvdWJsZSBNYWNyb0Fzc2VtYmxlcjo6dHdvVG9UaGUzMiAKICNpZiBFTkFCTEUoTUFTTV9Q
Uk9CRSkKIHN0YXRpYyB2b2lkIHN0ZEZ1bmN0aW9uQ2FsbGJhY2soUHJvYmU6OkNvbnRleHQmIGNv
bnRleHQpCiB7Ci0gICAgYXV0byBmdW5jID0gc3RhdGljX2Nhc3Q8Y29uc3Qgc3RkOjpmdW5jdGlv
bjx2b2lkKFByb2JlOjpDb250ZXh0Jik+Kj4oY29udGV4dC5hcmcpOworICAgIGF1dG8gZnVuYyA9
IGNvbnRleHQuYXJnPGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYpPio+
KCk7CiAgICAgKCpmdW5jKShjb250ZXh0KTsKIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJpbnRlci5j
cHAJKHJldmlzaW9uIDIyMTM5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDcgKzE3NSw3
IEBAIHZvaWQgcHJpbnRNZW1vcnkoUHJpbnRTdHJlYW0mIG91dCwgQ29udGUKIHZvaWQgcHJpbnRD
YWxsYmFjayhQcm9iZTo6Q29udGV4dCYgcHJvYmVDb250ZXh0KQogewogICAgIGF1dG8mIG91dCA9
IFdURjo6ZGF0YUZpbGUoKTsKLSAgICBQcmludFJlY29yZExpc3QmIGxpc3QgPSAqcmVpbnRlcnBy
ZXRfY2FzdDxQcmludFJlY29yZExpc3QqPihwcm9iZUNvbnRleHQuYXJnKTsKKyAgICBQcmludFJl
Y29yZExpc3QmIGxpc3QgPSAqcHJvYmVDb250ZXh0LmFyZzxQcmludFJlY29yZExpc3QqPigpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7IGkrKykgewogICAgICAgICBh
dXRvJiByZWNvcmQgPSBsaXN0W2ldOwogICAgICAgICBDb250ZXh0IGNvbnRleHQocHJvYmVDb250
ZXh0LCByZWNvcmQuZGF0YSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L1Byb2JlQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvUHJvYmVDb250ZXh0LmgJKHJldmlzaW9uIDIyMTM5OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE0
ICs0NSw4IEBAIHN0cnVjdCBDUFVTdGF0ZSB7CiAgICAgaW5saW5lIHVpbnRwdHJfdCYgc3ByKFNQ
UmVnaXN0ZXJJRCk7CiAgICAgaW5saW5lIGRvdWJsZSYgZnByKEZQUmVnaXN0ZXJJRCk7CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2lu
dGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVsbHB0cj4KLSAgICBUIGdwcihSZWdpc3RlcklE
KSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRyPgotICAgIFQgZ3By
KFJlZ2lzdGVySUQpIGNvbnN0OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRy
PgotICAgIFQgc3ByKFNQUmVnaXN0ZXJJRCkgY29uc3Q7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5
cGUqID0gbnVsbHB0cj4KLSAgICBUIHNwcihTUFJlZ2lzdGVySUQpIGNvbnN0OworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IFQgZ3ByKFJlZ2lzdGVySUQpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IFQgc3ByKFNQUmVnaXN0ZXJJRCkgY29uc3Q7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gVCBmcHIoRlBSZWdpc3RlcklEKSBjb25zdDsKIAogICAgIHZvaWQqJiBwYygpOwpAQCAt
ODUsMzIgKzc5LDI0IEBAIGlubGluZSBkb3VibGUmIENQVVN0YXRlOjpmcHIoRlBSZWdpc3RlckkK
ICAgICByZXR1cm4gZnByc1tpZF07CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlwZSo+Ci1UIENQ
VVN0YXRlOjpncHIoUmVnaXN0ZXJJRCBpZCkgY29uc3QKLXsKLSAgICBDUFVTdGF0ZSogY3B1ID0g
Y29uc3RfY2FzdDxDUFVTdGF0ZSo+KHRoaXMpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihj
cHUtPmdwcihpZCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZSo+Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogVCBDUFVTdGF0ZTo6Z3ByKFJlZ2lzdGVySUQgaWQpIGNvbnN0CiB7CiAgICAgQ1BV
U3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxUPihjcHUtPmdwcihpZCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46OnR5
cGUqPgotVCBDUFVTdGF0ZTo6c3ByKFNQUmVnaXN0ZXJJRCBpZCkgY29uc3QKLXsKLSAgICBDUFVT
dGF0ZSogY3B1ID0gY29uc3RfY2FzdDxDUFVTdGF0ZSo+KHRoaXMpOwotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxUPihjcHUtPnNwcihpZCkpOworICAgIGF1dG8mIGZyb20gPSBjcHUtPmdwcihpZCk7
CisgICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD46OnR5cGUgdG8geyB9OworICAgIHN0
ZDo6bWVtY3B5KCZ0bywgJmZyb20sIHNpemVvZih0bykpOyAvLyBVc2Ugc3RkOjptZW1jcHkgdG8g
YXZvaWQgc3RyaWN0IGFsaWFzaW5nIGlzc3Vlcy4KKyAgICByZXR1cm4gdG87CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxU
Pjo6dmFsdWU+Ojp0eXBlKj4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CiBUIENQVVN0YXRlOjpzcHIo
U1BSZWdpc3RlcklEIGlkKSBjb25zdAogewogICAgIENQVVN0YXRlKiBjcHUgPSBjb25zdF9jYXN0
PENQVVN0YXRlKj4odGhpcyk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VD4oY3B1LT5z
cHIoaWQpKTsKKyAgICBhdXRvJiBmcm9tID0gY3B1LT5zcHIoaWQpOworICAgIHR5cGVuYW1lIHN0
ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlIHRvIHsgfTsKKyAgICBzdGQ6Om1lbWNweSgmdG8sICZm
cm9tLCBzaXplb2YodG8pKTsgLy8gVXNlIHN0ZDo6bWVtY3B5IHRvIGF2b2lkIHN0cmljdCBhbGlh
c2luZyBpc3N1ZXMuCisgICAgcmV0dXJuIHRvOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpA
QCAtMjA1LDI1ICsxOTEsMzEgQEAgcHVibGljOgogICAgIHVzaW5nIEZQUmVnaXN0ZXJJRCA9IE1h
Y3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQ7CiAKICAgICBDb250ZXh0KFN0YXRlKiBzdGF0ZSkK
LSAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQotICAgICAgICAsIGFyZyhzdGF0ZS0+YXJnKQotICAg
ICAgICAsIGNwdShzdGF0ZS0+Y3B1KQorICAgICAgICA6IGNwdShzdGF0ZS0+Y3B1KQorICAgICAg
ICAsIG1fc3RhdGUoc3RhdGUpCiAgICAgeyB9CiAKLSAgICB1aW50cHRyX3QmIGdwcihSZWdpc3Rl
cklEIGlkKSB7IHJldHVybiBtX3N0YXRlLT5jcHUuZ3ByKGlkKTsgfQotICAgIHVpbnRwdHJfdCYg
c3ByKFNQUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LnNwcihpZCk7IH0KLSAg
ICBkb3VibGUmIGZwcihGUFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5mcHIo
aWQpOyB9Ci0gICAgY29uc3QgY2hhciogZ3ByTmFtZShSZWdpc3RlcklEIGlkKSB7IHJldHVybiBt
X3N0YXRlLT5jcHUuZ3ByTmFtZShpZCk7IH0KLSAgICBjb25zdCBjaGFyKiBzcHJOYW1lKFNQUmVn
aXN0ZXJJRCBpZCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LnNwck5hbWUoaWQpOyB9Ci0gICAgY29u
c3QgY2hhciogZnByTmFtZShGUFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5m
cHJOYW1lKGlkKTsgfQotCi0gICAgdm9pZComIHBjKCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LnBj
KCk7IH0KLSAgICB2b2lkKiYgZnAoKSB7IHJldHVybiBtX3N0YXRlLT5jcHUuZnAoKTsgfQotICAg
IHZvaWQqJiBzcCgpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5zcCgpOyB9Ci0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBUIHBjKCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LnBjPFQ+KCk7IH0KLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGZwKCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LmZwPFQ+
KCk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHNwKCkgeyByZXR1cm4gbV9zdGF0ZS0+
Y3B1LnNwPFQ+KCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFQgYXJnKCkgeyBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPihtX3N0YXRlLT5hcmcpOyB9CisKKyAgICB1aW50cHRy
X3QmIGdwcihSZWdpc3RlcklEIGlkKSB7IHJldHVybiBjcHUuZ3ByKGlkKTsgfQorICAgIHVpbnRw
dHJfdCYgc3ByKFNQUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gY3B1LnNwcihpZCk7IH0KKyAgICBk
b3VibGUmIGZwcihGUFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIGNwdS5mcHIoaWQpOyB9CisgICAg
Y29uc3QgY2hhciogZ3ByTmFtZShSZWdpc3RlcklEIGlkKSB7IHJldHVybiBjcHUuZ3ByTmFtZShp
ZCk7IH0KKyAgICBjb25zdCBjaGFyKiBzcHJOYW1lKFNQUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4g
Y3B1LnNwck5hbWUoaWQpOyB9CisgICAgY29uc3QgY2hhciogZnByTmFtZShGUFJlZ2lzdGVySUQg
aWQpIHsgcmV0dXJuIGNwdS5mcHJOYW1lKGlkKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gVCBncHIoUmVnaXN0ZXJJRCBpZCkgY29uc3QgeyByZXR1cm4gY3B1LmdwcjxUPihpZCk7IH0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHNwcihTUFJlZ2lzdGVySUQgaWQpIGNvbnN0IHsg
cmV0dXJuIGNwdS5zcHI8VD4oaWQpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBmcHIo
RlBSZWdpc3RlcklEIGlkKSBjb25zdCB7IHJldHVybiBjcHUuZnByPFQ+KGlkKTsgfQorCisgICAg
dm9pZComIHBjKCkgeyByZXR1cm4gY3B1LnBjKCk7IH0KKyAgICB2b2lkKiYgZnAoKSB7IHJldHVy
biBjcHUuZnAoKTsgfQorICAgIHZvaWQqJiBzcCgpIHsgcmV0dXJuIGNwdS5zcCgpOyB9CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHBjKCkgeyByZXR1cm4gY3B1LnBjPFQ+KCk7IH0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGZwKCkgeyByZXR1cm4gY3B1LmZwPFQ+KCk7IH0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHNwKCkgeyByZXR1cm4gY3B1LnNwPFQ+KCk7IH0KIAog
ICAgIFN0YWNrJiBzdGFjaygpCiAgICAgewpAQCAtMjM0LDEzICsyMjYsMTAgQEAgcHVibGljOgog
ICAgIGJvb2wgaGFzV3JpdGVzVG9GbHVzaCgpIHsgcmV0dXJuIG1fc3RhY2suaGFzV3JpdGVzVG9G
bHVzaCgpOyB9CiAgICAgU3RhY2sqIHJlbGVhc2VTdGFjaygpIHsgcmV0dXJuIG5ldyBTdGFjayhX
VEZNb3ZlKG1fc3RhY2spKTsgfQogCi1wcml2YXRlOgotICAgIFN0YXRlKiBtX3N0YXRlOwotcHVi
bGljOgotICAgIHZvaWQqIGFyZzsKICAgICBDUFVTdGF0ZSYgY3B1OwogCiBwcml2YXRlOgorICAg
IFN0YXRlKiBtX3N0YXRlOwogICAgIFN0YWNrIG1fc3RhY2s7CiAKICAgICBmcmllbmQgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCogcHJvYmVTdGF0ZUZvckNvbnRleHQoQ29udGV4dCYpOyAvLyBOb3Qg
Zm9yIGdlbmVyYWwgdXNlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGZvciB3cml0aW5nIHRlc3RzLgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUZyYW1lLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUZyYW1lLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUZyYW1l
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1BU01f
UFJPQkUpCisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJQcm9iZVN0YWNrLmgi
CisKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIFByb2JlIHsKKworY2xhc3MgRnJhbWUgewor
cHVibGljOgorICAgIEZyYW1lKHZvaWQqIGZyYW1lQmFzZSwgU3RhY2smIHN0YWNrKQorICAgICAg
ICA6IG1fZnJhbWVCYXNlIHsgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZnJhbWVCYXNlKSB9
CisgICAgICAgICwgbV9zdGFjayB7IHN0YWNrIH0KKyAgICB7IH0KKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CisgICAgVCBnZXRBcmd1bWVudChpbnQgYXJndW1lbnQpCisgICAgeworICAgICAg
ICByZXR1cm4gZ2V0PFQ+KENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoYXJndW1lbnQpICogc2l6
ZW9mKFJlZ2lzdGVyKSk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgVCBn
ZXRPcGVyYW5kKGludCBvcGVyYW5kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldDxUPihzdGF0
aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG9wZXJhbmQpLm9mZnNldCgpICogc2l6ZW9mKFJlZ2lz
dGVyKSk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgVCBnZXRPcGVyYW5k
KGludCBvcGVyYW5kLCBwdHJkaWZmX3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdl
dDxUPihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG9wZXJhbmQpLm9mZnNldCgpICogc2l6
ZW9mKFJlZ2lzdGVyKSArIG9mZnNldCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CisgICAgVCBnZXQocHRyZGlmZl90IG9mZnNldCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3N0
YWNrLmdldDxUPihtX2ZyYW1lQmFzZSArIG9mZnNldCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNldEFyZ3VtZW50KGludCBhcmd1bWVudCwgVCB2YWx1ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBzZXQ8VD4oQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldChh
cmd1bWVudCkgKiBzaXplb2YoUmVnaXN0ZXIpLCB2YWx1ZSk7CisgICAgfQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CisgICAgdm9pZCBzZXRPcGVyYW5kKGludCBvcGVyYW5kLCBUIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgc2V0PFQ+KHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4ob3BlcmFu
ZCkub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpLCB2YWx1ZSk7CisgICAgfQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBzZXRPcGVyYW5kKGludCBvcGVyYW5kLCBwdHJkaWZm
X3Qgb2Zmc2V0LCBUIHZhbHVlKQorICAgIHsKKyAgICAgICAgc2V0PFQ+KHN0YXRpY19jYXN0PFZp
cnR1YWxSZWdpc3Rlcj4ob3BlcmFuZCkub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpICsgb2Zm
c2V0LCB2YWx1ZSk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBz
ZXQocHRyZGlmZl90IG9mZnNldCwgVCB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fc3RhY2suc2V0
PFQ+KG1fZnJhbWVCYXNlICsgb2Zmc2V0LCB2YWx1ZSk7CisgICAgfQorCitwcml2YXRlOgorICAg
IHVpbnQ4X3QqIG1fZnJhbWVCYXNlOworICAgIFN0YWNrJiBtX3N0YWNrOworfTsKKworfSAvLyBu
YW1lc3BhY2UgUHJvYmUKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKE1B
U01fUFJPQkUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3Rh
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJv
YmVTdGFjay5jcHAJKHJldmlzaW9uIDIyMTM5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvUHJvYmVTdGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEwICszNSwxMiBA
QCBuYW1lc3BhY2UgUHJvYmUgewogCiBQYWdlOjpQYWdlKHZvaWQqIGJhc2VBZGRyZXNzKQogICAg
IDogbV9iYXNlTG9naWNhbEFkZHJlc3MoYmFzZUFkZHJlc3MpCisgICAgLCBtX3BoeXNpY2FsQWRk
cmVzc09mZnNldChyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmbV9idWZmZXIpIC0gcmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4oYmFzZUFkZHJlc3MpKQogewogICAgIG1lbWNweSgmbV9idWZm
ZXIsIGJhc2VBZGRyZXNzLCBzX3BhZ2VTaXplKTsKIH0KIAorI2lmIFVTRV9ESVJUWV9CSVRTIC8v
IG1sYW0KIHZvaWQgUGFnZTo6Zmx1c2hXcml0ZXMoKQogewogICAgIHVpbnRwdHJfdCBkaXJ0eUJp
dHMgPSBtX2RpcnR5Qml0czsKQEAgLTYzLDYgKzY1LDI3IEBAIHZvaWQgUGFnZTo6Zmx1c2hXcml0
ZXMoKQogICAgIH0KICAgICBtX2RpcnR5Qml0cyA9IDA7CiB9CisjZWxzZQordm9pZCBQYWdlOjpm
bHVzaFdyaXRlcyh2b2lkKiBzcCkKK3sKKyAgICBzaXplX3Qgc2l6ZSA9IHNpemVvZihtX2J1ZmZl
cik7CisgICAgdWludDhfdCogc3JjID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJm1fYnVm
ZmVyKTsKKyAgICB1aW50OF90KiBkc3QgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihtX2Jh
c2VMb2dpY2FsQWRkcmVzcyk7CisKKyAgICB1aW50OF90KiBzdGFja1BvaW50ZXIgPSByZWludGVy
cHJldF9jYXN0PHVpbnQ4X3QqPihzcCk7CisgICAgaWYgKGRzdCArIHNpemUgPD0gc3RhY2tQb2lu
dGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZHN0IDwgc3RhY2tQb2ludGVyKSB7Cisg
ICAgICAgIHB0cmRpZmZfdCBkaWZmID0gc3RhY2tQb2ludGVyIC0gZHN0OworICAgICAgICBkc3Qg
Kz0gZGlmZjsKKyAgICAgICAgc3JjICs9IGRpZmY7CisgICAgICAgIHNpemUgLT0gZGlmZjsKKyAg
ICB9CisKKyAgICBtZW1jcHkoZHN0LCBzcmMsIHNpemUpOworfQorI2VuZGlmIC8vIG1sYW0KIAog
U3RhY2s6OlN0YWNrKFN0YWNrJiYgb3RoZXIpCiAgICAgOiBtX25ld1N0YWNrUG9pbnRlcihvdGhl
ci5tX25ld1N0YWNrUG9pbnRlcikKQEAgLTc3LDEzICsxMDAsMzMgQEAgU3RhY2s6OlN0YWNrKFN0
YWNrJiYgb3RoZXIpCiAKIGJvb2wgU3RhY2s6Omhhc1dyaXRlc1RvRmx1c2goKQogeworI2lmIFVT
RV9ESVJUWV9CSVRTIC8vIG1sYW0KICAgICByZXR1cm4gc3RkOjphbnlfb2YobV9wYWdlcy5iZWdp
bigpLCBtX3BhZ2VzLmVuZCgpLCBbXSAoYXV0byYgaXQpIHsgcmV0dXJuIGl0LnZhbHVlLT5oYXNX
cml0ZXNUb0ZsdXNoKCk7IH0pOworI2Vsc2UKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgogfQog
CisjZGVmaW5lIFVTRV9QQUdFU19GUkVFX0xJU1QgMCAvLyBtbGFtCisKKyNpZiBVU0VfUEFHRVNf
RlJFRV9MSVNUIC8vIG1sYW0KK1BhZ2UqIHNfZnJlZVBhZ2VzID0gbnVsbHB0cjsKKyNlbmRpZgor
CiB2b2lkIFN0YWNrOjpmbHVzaFdyaXRlcygpCiB7Ci0gICAgZm9yIChhdXRvIGl0ID0gbV9wYWdl
cy5iZWdpbigpOyBpdCAhPSBtX3BhZ2VzLmVuZCgpOyArK2l0KQorICAgIGZvciAoYXV0byBpdCA9
IG1fcGFnZXMuYmVnaW4oKTsgaXQgIT0gbV9wYWdlcy5lbmQoKTsgKytpdCkgeworI2lmIFVTRV9E
SVJUWV9CSVRTIC8vIG1sYW0KICAgICAgICAgaXQtPnZhbHVlLT5mbHVzaFdyaXRlc0lmTmVlZGVk
KCk7CisjZWxzZQorICAgICAgICBpdC0+dmFsdWUtPmZsdXNoV3JpdGVzKG5ld1N0YWNrUG9pbnRl
cigpKTsKKyNpZiBVU0VfUEFHRVNfRlJFRV9MSVNUIC8vIG1sYW0KKyAgICAgICAgUGFnZSogcGFn
ZSA9IGl0LT52YWx1ZS5yZWxlYXNlKCk7CisgICAgICAgIHBhZ2UtPm1fYmFzZUxvZ2ljYWxBZGRy
ZXNzID0gc19mcmVlUGFnZXM7CisgICAgICAgIHNfZnJlZVBhZ2VzID0gcGFnZTsKKyNlbmRpZiAv
LyBtbGFtCisjZW5kaWYgLy8gbWxhbQorICAgIH0KIH0KIAogUGFnZSogU3RhY2s6OmVuc3VyZVBh
Z2VGb3Iodm9pZCogYWRkcmVzcykKQEAgLTEwMCw5ICsxNDMsMjIgQEAgUGFnZSogU3RhY2s6OmVu
c3VyZVBhZ2VGb3Iodm9pZCogYWRkcmVzcwogICAgIGlmIChMSUtFTFkoaXQgIT0gbV9wYWdlcy5l
bmQoKSkpCiAgICAgICAgIG1fbGFzdEFjY2Vzc2VkUGFnZSA9IGl0LT52YWx1ZS5nZXQoKTsKICAg
ICBlbHNlIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IHBhZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBhZ2U+KGJhc2VBZGRyZXNzKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX3BhZ2Vz
LmFkZChiYXNlQWRkcmVzcywgV1RGTW92ZShwYWdlKSk7Ci0gICAgICAgIG1fbGFzdEFjY2Vzc2Vk
UGFnZSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisjaWYgVVNFX1BBR0VTX0ZSRUVf
TElTVCAvLyBtbGFtCisgICAgICAgIGlmICghc19mcmVlUGFnZXMpIHsKKyNlbmRpZgorICAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IHBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+
KGJhc2VBZGRyZXNzKTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlcy5hZGQoYmFz
ZUFkZHJlc3MsIFdURk1vdmUocGFnZSkpOworICAgICAgICAgICAgbV9sYXN0QWNjZXNzZWRQYWdl
ID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyNpZiBVU0VfUEFHRVNfRlJFRV9MSVNU
IC8vIG1sYW0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFBhZ2UqIHBhZ2UgPSBzX2Zy
ZWVQYWdlczsKKyAgICAgICAgICAgIHNfZnJlZVBhZ2VzID0gKFBhZ2UqKXBhZ2UtPm1fYmFzZUxv
Z2ljYWxBZGRyZXNzOworICAgICAgICAgICAgcGFnZSA9IG5ldyhwYWdlKSBQYWdlKGJhc2VBZGRy
ZXNzKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiB1bmlxdWVfcGFnZShwYWdl
KTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlcy5hZGQoYmFzZUFkZHJlc3MsIFdU
Rk1vdmUodW5pcXVlX3BhZ2UpKTsKKyAgICAgICAgICAgIG1fbGFzdEFjY2Vzc2VkUGFnZSA9IHJl
c3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgICAgIH0KKyNlbmRpZgogICAgIH0KICAg
ICBtX2xhc3RBY2Nlc3NlZFBhZ2VCYXNlQWRkcmVzcyA9IGJhc2VBZGRyZXNzOwogICAgIHJldHVy
biBtX2xhc3RBY2Nlc3NlZFBhZ2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1Byb2JlU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1Byb2JlU3RhY2suaAkocmV2aXNpb24gMjIxMzk5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3
LDggQEAgc3RydWN0IFByb2JlQ29udGV4dDsKIAogbmFtZXNwYWNlIFByb2JlIHsKIAorI2RlZmlu
ZSBVU0VfRElSVFlfQklUUyAxIC8vIG1sYW0gVEVTdAorCiBjbGFzcyBQYWdlIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTU2LDQyICs1OCw2NiBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIGdldCh2b2lkKiBsb2dpY2FsQWRkcmVz
cykKICAgICB7Ci0gICAgICAgIHJldHVybiAqcGh5c2ljYWxBZGRyZXNzRm9yPFQqPihsb2dpY2Fs
QWRkcmVzcyk7CisgICAgICAgIHZvaWQqIGZyb20gPSBwaHlzaWNhbEFkZHJlc3NGb3IobG9naWNh
bEFkZHJlc3MpOworICAgICAgICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZSB0
byB7IH07CisgICAgICAgIHN0ZDo6bWVtY3B5KCZ0bywgZnJvbSwgc2l6ZW9mKHRvKSk7IC8vIFVz
ZSBzdGQ6Om1lbWNweSB0byBhdm9pZCBzdHJpY3QgYWxpYXNpbmcgaXNzdWVzLgorICAgICAgICBy
ZXR1cm4gdG87CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgVCBnZXQodm9p
ZCogbG9naWNhbEJhc2VBZGRyZXNzLCBwdHJkaWZmX3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGdldDxUPihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihsb2dpY2FsQmFzZUFkZHJl
c3MpICsgb2Zmc2V0KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZv
aWQgc2V0KHZvaWQqIGxvZ2ljYWxBZGRyZXNzLCBUIHZhbHVlKQogICAgIHsKKyNpZiBVU0VfRElS
VFlfQklUUwogICAgICAgICBtX2RpcnR5Qml0cyB8PSBkaXJ0eUJpdEZvcihsb2dpY2FsQWRkcmVz
cyk7Ci0gICAgICAgICpwaHlzaWNhbEFkZHJlc3NGb3I8VCo+KGxvZ2ljYWxBZGRyZXNzKSA9IHZh
bHVlOworI2VuZGlmCisgICAgICAgIHZvaWQqIHRvID0gcGh5c2ljYWxBZGRyZXNzRm9yKGxvZ2lj
YWxBZGRyZXNzKTsKKyAgICAgICAgc3RkOjptZW1jcHkodG8sICZ2YWx1ZSwgc2l6ZW9mKFQpKTsg
Ly8gVXNlIHN0ZDo6bWVtY3B5IHRvIGF2b2lkIHN0cmljdCBhbGlhc2luZyBpc3N1ZXMuCisgICAg
fQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBzZXQodm9pZCogbG9naWNhbEJh
c2VBZGRyZXNzLCBwdHJkaWZmX3Qgb2Zmc2V0LCBUIHZhbHVlKQorICAgIHsKKyAgICAgICAgc2V0
PFQ+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGxvZ2ljYWxCYXNlQWRkcmVzcykgKyBvZmZz
ZXQsIHZhbHVlKTsKICAgICB9CiAKKyNpZiBVU0VfRElSVFlfQklUUwogICAgIGJvb2wgaGFzV3Jp
dGVzVG9GbHVzaCgpIGNvbnN0IHsgcmV0dXJuICEhbV9kaXJ0eUJpdHM7IH0KICAgICB2b2lkIGZs
dXNoV3JpdGVzSWZOZWVkZWQoKQogICAgIHsKICAgICAgICAgaWYgKG1fZGlydHlCaXRzKQogICAg
ICAgICAgICAgZmx1c2hXcml0ZXMoKTsKICAgICB9CisjZW5kaWYKIAogcHJpdmF0ZToKKyNpZiBV
U0VfRElSVFlfQklUUwogICAgIHVpbnRwdHJfdCBkaXJ0eUJpdEZvcih2b2lkKiBsb2dpY2FsQWRk
cmVzcykKICAgICB7CiAgICAgICAgIHVpbnRwdHJfdCBvZmZzZXQgPSByZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4obG9naWNhbEFkZHJlc3MpICYgc19wYWdlTWFzazsKICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkgPDwgKG9mZnNldCA+PiBzX2NodW5rU2l6ZVNoaWZ0
KTsKICAgICB9CisjZW5kaWYKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0g
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGU+
Ci0gICAgVCBwaHlzaWNhbEFkZHJlc3NGb3Iodm9pZCogbG9naWNhbEFkZHJlc3MpCisgICAgdm9p
ZCogcGh5c2ljYWxBZGRyZXNzRm9yKHZvaWQqIGxvZ2ljYWxBZGRyZXNzKQogICAgIHsKLSAgICAg
ICAgdWludHB0cl90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihsb2dpY2Fs
QWRkcmVzcykgJiBzX3BhZ2VNYXNrOwotICAgICAgICB2b2lkKiBwaHlzaWNhbEFkZHJlc3MgPSBy
ZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmbV9idWZmZXIpICsgb2Zmc2V0OwotICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPihwaHlzaWNhbEFkZHJlc3MpOworICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obG9naWNhbEFkZHJlc3MpICsgbV9waHlzaWNh
bEFkZHJlc3NPZmZzZXQ7CiAgICAgfQogCisjaWYgVVNFX0RJUlRZX0JJVFMKICAgICB2b2lkIGZs
dXNoV3JpdGVzKCk7CisjZWxzZQorICAgIHZvaWQgZmx1c2hXcml0ZXModm9pZCogc3ApOworI2Vu
ZGlmCiAKICAgICB2b2lkKiBtX2Jhc2VMb2dpY2FsQWRkcmVzcyB7IG51bGxwdHIgfTsKKyNpZiBV
U0VfRElSVFlfQklUUwogICAgIHVpbnRwdHJfdCBtX2RpcnR5Qml0cyB7IDAgfTsKKyNlbmRpZgor
ICAgIHB0cmRpZmZfdCBtX3BoeXNpY2FsQWRkcmVzc09mZnNldDsKIAogICAgIHN0YXRpYyBjb25z
dGV4cHIgc2l6ZV90IHNfcGFnZVNpemUgPSAxMDI0OwogICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dHB0cl90IHNfcGFnZU1hc2sgPSBzX3BhZ2VTaXplIC0gMTsKQEAgLTEwOSw2ICsxMzUsOCBAQCBw
cml2YXRlOgogCiAgICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmFsaWduZWRfc3RvcmFnZTxzX3Bh
Z2VTaXplLCBzdGQ6OmFsaWdubWVudF9vZjx1aW50cHRyX3Q+Ojp2YWx1ZT46OnR5cGUgQnVmZmVy
OwogICAgIEJ1ZmZlciBtX2J1ZmZlcjsKKworLy8gICAgZnJpZW5kIGNsYXNzIFN0YWNrOyAvLyBt
bGFtIFRFU1QKIH07CiAKIGNsYXNzIFN0YWNrIHsKQEAgLTEyMCw0MCArMTQ4LDM5IEBAIHB1Ymxp
YzoKICAgICB7IH0KICAgICBTdGFjayhTdGFjayYmIG90aGVyKTsKIAotICAgIHZvaWQqIGxvd1dh
dGVybWFyaygpIHsgcmV0dXJuIG1fbG93V2F0ZXJtYXJrOyB9CisgICAgdm9pZCogbG93V2F0ZXJt
YXJrKCkKKyAgICB7CisgICAgICAgIC8vIFdlIHVzZSB0aGUgY2h1bmtBZGRyZXNzIGZvciB0aGUg
bG93IHdhdGVybWFyayBiZWNhdXNlIHdlJ2xsIGJlIGRvaW5nIHdyaXRlIGJhY2tzCisgICAgICAg
IC8vIHRvIHRoZSBzdGFjayBpbiBpbmNyZW1lbnRzIG9mIGNodW5rcy4gSGVuY2UsIHdlJ2xsIHRy
ZWF0IHRoZSBsb3dlc3QgYWRkcmVzcyBvZgorICAgICAgICAvLyB0aGUgY2h1bmsgYXMgdGhlIGxv
dyB3YXRlcm1hcmsgb2YgYW55IGdpdmVuIHNldCBhZGRyZXNzLgorICAgICAgICByZXR1cm4gUGFn
ZTo6Y2h1bmtBZGRyZXNzRm9yKG1fbG93V2F0ZXJtYXJrKTsKKyAgICB9CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgotICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX3NhbWU8
ZG91YmxlLCB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjxUPjo6dHlwZT46OnZhbHVlLCBUPjo6dHlw
ZSBnZXQodm9pZCogYWRkcmVzcykKKyAgICBUIGdldCh2b2lkKiBhZGRyZXNzKQogICAgIHsKICAg
ICAgICAgUGFnZSogcGFnZSA9IHBhZ2VGb3IoYWRkcmVzcyk7CiAgICAgICAgIHJldHVybiBwYWdl
LT5nZXQ8VD4oYWRkcmVzcyk7CiAgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAg
VCBnZXQodm9pZCogbG9naWNhbEJhc2VBZGRyZXNzLCBwdHJkaWZmX3Qgb2Zmc2V0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGdldDxUPihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihsb2dpY2Fs
QmFzZUFkZHJlc3MpICsgb2Zmc2V0KTsKKyAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX3NhbWU8ZG91Ymxl
LCB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjxUPjo6dHlwZT46OnZhbHVlPjo6dHlwZT4KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgc2V0KHZvaWQqIGFkZHJlc3MsIFQgdmFsdWUp
CiAgICAgewogICAgICAgICBQYWdlKiBwYWdlID0gcGFnZUZvcihhZGRyZXNzKTsKICAgICAgICAg
cGFnZS0+c2V0PFQ+KGFkZHJlc3MsIHZhbHVlKTsKIAotICAgICAgICAvLyBXZSB1c2UgdGhlIGNo
dW5rQWRkcmVzcyBmb3IgdGhlIGxvdyB3YXRlcm1hcmsgYmVjYXVzZSB3ZSdsbCBiZSBkb2luZyB3
cml0ZSBiYWNrcwotICAgICAgICAvLyB0byB0aGUgc3RhY2sgaW4gaW5jcmVtZW50cyBvZiBjaHVu
a3MuIEhlbmNlLCB3ZSdsbCB0cmVhdCB0aGUgbG93ZXN0IGFkZHJlc3Mgb2YKLSAgICAgICAgLy8g
dGhlIGNodW5rIGFzIHRoZSBsb3cgd2F0ZXJtYXJrIG9mIGFueSBnaXZlbiBzZXQgYWRkcmVzcy4K
LSAgICAgICAgdm9pZCogY2h1bmtBZGRyZXNzID0gUGFnZTo6Y2h1bmtBZGRyZXNzRm9yKGFkZHJl
c3MpOwotICAgICAgICBpZiAoY2h1bmtBZGRyZXNzIDwgbV9sb3dXYXRlcm1hcmspCi0gICAgICAg
ICAgICBtX2xvd1dhdGVybWFyayA9IGNodW5rQWRkcmVzczsKKyAgICAgICAgaWYgKGFkZHJlc3Mg
PCBtX2xvd1dhdGVybWFyaykKKyAgICAgICAgICAgIG1fbG93V2F0ZXJtYXJrID0gYWRkcmVzczsK
ICAgICB9Ci0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfc2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0
eXBlPjo6dmFsdWUsIFQ+Ojp0eXBlIGdldCh2b2lkKiBhZGRyZXNzKQotICAgIHsKLSAgICAgICAg
UGFnZSogcGFnZSA9IHBhZ2VGb3IoYWRkcmVzcyk7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nh
c3Q8ZG91YmxlPihwYWdlLT5nZXQ8dWludDY0X3Q+KGFkZHJlc3MpKTsKLSAgICB9Ci0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0
ZDo6aXNfc2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFs
dWU+Ojp0eXBlPgotICAgIHZvaWQgc2V0KHZvaWQqIGFkZHJlc3MsIGRvdWJsZSB2YWx1ZSkKKyAg
ICB2b2lkIHNldCh2b2lkKiBsb2dpY2FsQmFzZUFkZHJlc3MsIHB0cmRpZmZfdCBvZmZzZXQsIFQg
dmFsdWUpCiAgICAgewotICAgICAgICBzZXQ8dWludDY0X3Q+KGFkZHJlc3MsIGJpdHdpc2VfY2Fz
dDx1aW50NjRfdD4odmFsdWUpKTsKKyAgICAgICAgc2V0PFQ+KHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDhfdCo+KGxvZ2ljYWxCYXNlQWRkcmVzcykgKyBvZmZzZXQsIHZhbHVlKTsKICAgICB9CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBQYWdlKiBlbnN1cmVQYWdlRm9yKHZvaWQqIGFkZHJlc3MpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5j
cHAJKHJldmlzaW9uIDIyMTM5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
cml0aFByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMyLDggQEAKIG5hbWVzcGFjZSBK
U0MgewogCiAjaWYgRU5BQkxFKEpJVCkKKy8vIEZJWE1FOiBUaGlzIGlzIGJlaW5nIHN1cHBsYW50
ZWQgYnkgb2JzZXJ2ZVJlc3VsdCgpLiBSZW1vdmUgdGhpcyBvbmUKKy8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUgaGFzIGJlZW4gZml4ZWQuCiB2b2lkIEFy
aXRoUHJvZmlsZTo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVS
ZWdzIHJlZ3MsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSkKIHsKICAgICBpZiAoIXNob3VsZEVtaXRT
ZXREb3VibGUoKSAmJiAhc2hvdWxkRW1pdFNldE5vbk51bWJlcigpKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaAkocmV2aXNpb24gMjIxMzk5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTIxMSw2ICsyMTEsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEpJVCkgICAgCiAg
ICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91
YmxlIHwgTmVnWmVyb0RvdWJsZSkgaWYgaXQgc2VlcyBhCiAgICAgLy8gZG91YmxlLiBTZXRzIE5v
bk51bWJlciBpZiBpdCBzZWVzIGEgbm9uLW51bWJlci4KKyAgICAvLyBGSVhNRTogVGhpcyBpcyBi
ZWluZyBzdXBwbGFudGVkIGJ5IG9ic2VydmVSZXN1bHQoKS4gUmVtb3ZlIHRoaXMgb25lCisgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NSBoYXMgYmVl
biBmaXhlZC4KICAgICB2b2lkIGVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYsIEpTVmFs
dWVSZWdzLCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycyk7CiAgICAgCiAgICAg
Ly8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91Ymxl
IHwgTmVnWmVyb0RvdWJsZSkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QXJyYXlQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FycmF5UHJvZmlsZS5oCShyZXZpc2lvbiAyMjEzOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjE4LDYg
KzIxOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqKTsKICAgICB2b2lkIGNvbXB1dGVVcGRh
dGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqLCBTdHJ1
Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKTsKICAgICAKKyAgICB2b2lkIG9ic2VydmVBcnJheU1v
ZGUoQXJyYXlNb2RlcyBtb2RlKSB7IG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHw9IG1vZGU7IH0KICAg
ICBBcnJheU1vZGVzIG9ic2VydmVkQXJyYXlNb2Rlcyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
KSBjb25zdCB7IHJldHVybiBtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJvb2wgbWF5SW50
ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsg
cmV0dXJuIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzOyB9CiAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjIx
Mzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIzMTUsNiArMjMxNSw1NSBAQCBib29sIENvZGVCbG9jazo6Y2hlY2tJ
Zk9wdGltaXphdGlvblRocmVzCiAgICAgcmV0dXJuIG1faml0RXhlY3V0ZUNvdW50ZXIuY2hlY2tJ
ZlRocmVzaG9sZENyb3NzZWRBbmRTZXQodGhpcyk7CiB9CiAKK2F1dG8gQ29kZUJsb2NrOjp1cGRh
dGVPU1JFeGl0Q291bnRlckFuZENoZWNrSWZOZWVkVG9SZW9wdGltaXplKERGRzo6T1NSRXhpdFN0
YXRlJiBleGl0U3RhdGUpIC0+IE9wdGltaXplQWN0aW9uCit7CisgICAgREZHOjpPU1JFeGl0QmFz
ZSYgZXhpdCA9IGV4aXRTdGF0ZS5leGl0OworICAgIGlmICghZXhpdEtpbmRNYXlKZXR0aXNvbihl
eGl0Lm1fa2luZCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIG1heSB3YW50IHRvIG5vdGljZSB0
aGF0IHdlJ3JlIGZyZXF1ZW50bHkgZXhpdGluZworICAgICAgICAvLyBhdCBhbiBvcF9jYXRjaCB0
aGF0IHdlIGRpZG4ndCBjb21waWxlIGFuIGVudHJ5cG9pbnQgZm9yLCBhbmQKKyAgICAgICAgLy8g
dGhlbiB0cmlnZ2VyIGEgcmVvcHRpbWl6YXRpb24gb2YgdGhpcyBDb2RlQmxvY2s6CisgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU4NDIKKyAgICAg
ICAgcmV0dXJuIE9wdGltaXplQWN0aW9uOjpOb25lOworICAgIH0KKworICAgIGV4aXQubV9jb3Vu
dCsrOworICAgIG1fb3NyRXhpdENvdW50ZXIrKzsKKworICAgIC8vIG1sYW0gT3BlcmF0aW5nIG9u
IGJhc2VsaW5lQ29kZUJsb2NrIG5vdy4KKworICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxv
Y2sgPSBleGl0U3RhdGUuYmFzZWxpbmVDb2RlQmxvY2s7CisgICAgQVNTRVJUKGJhc2VsaW5lQ29k
ZUJsb2NrID09IGJhc2VsaW5lQWx0ZXJuYXRpdmUoKSk7CisgICAgaWYgKFVOTElLRUxZKGJhc2Vs
aW5lQ29kZUJsb2NrLT5qaXRFeGVjdXRlQ291bnRlcigpLmhhc0Nyb3NzZWRUaHJlc2hvbGQoKSkp
CisgICAgICAgIHJldHVybiBPcHRpbWl6ZUFjdGlvbjo6UmVvcHRpbWl6ZU5vdzsKKworICAgIC8v
IFdlIHdhbnQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGEgcG9zc2liaWxpdHkgdGhhdCB3ZSdy
ZSBpbiBhIGxvb3AuIEZvciB0aGUgb3V0ZXJtb3N0CisgICAgLy8gY29kZSBibG9jayBpbiB0aGUg
aW5saW5lIHN0YWNrLCB3ZSBoYW5kbGUgdGhpcyBhcHByb3ByaWF0ZWx5IGJ5IGhhdmluZyB0aGUg
bG9vcCBPU1IgdHJpZ2dlcgorICAgIC8vIGNoZWNrIHRoZSBleGl0IGNvdW50IG9mIHRoZSByZXBs
YWNlbWVudCBvZiB0aGUgQ29kZUJsb2NrIGZyb20gd2hpY2ggd2UgYXJlIE9TUmluZy4gVGhlCisg
ICAgLy8gcHJvYmxlbSBpcyB0aGUgaW5saW5lZCBmdW5jdGlvbnMsIHdoaWNoIG1pZ2h0IGFsc28g
aGF2ZSBsb29wcywgYnV0IHdob3NlIGJhc2VsaW5lIHZlcnNpb25zCisgICAgLy8gZG9uJ3Qga25v
dyB3aGVyZSB0byBsb29rIGZvciB0aGUgZXhpdCBjb3VudC4gRmlndXJlIG91dCBpZiB0aG9zZSBs
b29wcyBhcmUgc2V2ZXJlIGVub3VnaAorICAgIC8vIHRoYXQgd2UgaGFkIHRyaWVkIHRvIE9TUiBl
bnRlci4gSWYgc28sIHRoZW4gd2Ugc2hvdWxkIHVzZSB0aGUgbG9vcCByZW9wdGltaXphdGlvbiB0
cmlnZ2VyLgorICAgIC8vIE90aGVyd2lzZSwgd2Ugc2hvdWxkIHVzZSB0aGUgbm9ybWFsIHJlb3B0
aW1pemF0aW9uIHRyaWdnZXIuCisKKyAgICBib29sIGRpZFRyeVRvRW50ZXJJbkxvb3AgPSBmYWxz
ZTsKKyAgICBmb3IgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gZXhpdC5tX2Nv
ZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJhbWU7IGlubGluZUNhbGxGcmFt
ZSA9IGlubGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2FsbGVyLmlubGluZUNhbGxGcmFtZSkgeworICAg
ICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay0+b3duZXJTY3JpcHRF
eGVjdXRhYmxlKCktPmRpZFRyeVRvRW50ZXJJbkxvb3AoKSkgeworICAgICAgICAgICAgZGlkVHJ5
VG9FbnRlckluTG9vcCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHVpbnQzMl90IGV4aXRDb3VudFRocmVzaG9sZCA9IGRpZFRyeVRvRW50ZXJJbkxv
b3AKKyAgICAgICAgPyBleGl0Q291bnRUaHJlc2hvbGRGb3JSZW9wdGltaXphdGlvbkZyb21Mb29w
KCkKKyAgICAgICAgOiBleGl0Q291bnRUaHJlc2hvbGRGb3JSZW9wdGltaXphdGlvbigpOworCisg
ICAgaWYgKG1fb3NyRXhpdENvdW50ZXIgPiBleGl0Q291bnRUaHJlc2hvbGQpCisgICAgICAgIHJl
dHVybiBPcHRpbWl6ZUFjdGlvbjo6UmVvcHRpbWl6ZU5vdzsKKworICAgIC8vIFRvbyBmZXcgZmFp
bHMuIEFkanVzdCB0aGUgZXhlY3V0aW9uIGNvdW50ZXIgc3VjaCB0aGF0IHRoZSB0YXJnZXQgaXMg
dG8gb25seSBvcHRpbWl6ZSBhZnRlciBhIHdoaWxlLgorICAgIGJhc2VsaW5lQ29kZUJsb2NrLT5t
X2ppdEV4ZWN1dGVDb3VudGVyLnNldE5ld1RocmVzaG9sZEZvck9TUkV4aXQoZXhpdFN0YXRlLmFj
dGl2ZVRocmVzaG9sZCwgZXhpdFN0YXRlLm1lbW9yeVVzYWdlQWRqdXN0ZWRUaHJlc2hvbGQpOwor
ICAgIHJldHVybiBPcHRpbWl6ZUFjdGlvbjo6Tm9uZTsKK30KKwogdm9pZCBDb2RlQmxvY2s6Om9w
dGltaXplTmV4dEludm9jYXRpb24oKQogewogICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZp
c2lvbiAyMjEzOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDEwIEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
CituYW1lc3BhY2UgREZHIHsKK3N0cnVjdCBPU1JFeGl0U3RhdGU7Cit9IC8vIG5hbWVzcGFjZSBE
RkcKKwogY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOwogY2xhc3MgQ29kZUJsb2NrU2V0
OwogY2xhc3MgRXhlY1N0YXRlOwpAQCAtNzYyLDggKzc2NiwxMCBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGNvdW50T1NSRXhpdCgpIHsgbV9vc3JFeGl0Q291bnRlcisrOyB9CiAKLSAgICB1aW50MzJf
dCogYWRkcmVzc09mT1NSRXhpdENvdW50ZXIoKSB7IHJldHVybiAmbV9vc3JFeGl0Q291bnRlcjsg
fQorICAgIGVudW0gY2xhc3MgT3B0aW1pemVBY3Rpb24geyBOb25lLCBSZW9wdGltaXplTm93IH07
CisgICAgT3B0aW1pemVBY3Rpb24gdXBkYXRlT1NSRXhpdENvdW50ZXJBbmRDaGVja0lmTmVlZFRv
UmVvcHRpbWl6ZShERkc6Ok9TUkV4aXRTdGF0ZSYpOwogCisgICAgLy8gRklYTUU6IHJlbW92ZSB0
aGlzIHdoZW4gd2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzUxNDUuCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk9TUkV4aXRDb3VudGVyKCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvZGVCbG9jaywgbV9vc3JFeGl0Q291bnRlcik7IH0KIAog
ICAgIHVpbnQzMl90IGFkanVzdGVkRXhpdENvdW50VGhyZXNob2xkKHVpbnQzMl90IGRlc2lyZWRU
aHJlc2hvbGQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
a0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrSW5saW5lcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiREZHT1NSRXhpdEJh
c2UuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKy8vIG1sYW0gTmVlZCB0byByZW1vdmUgdGhpcyBm
aWxlIGlmIHdlIGVuZCB1cCBub3QgbmVlZGluZyBpdC4KKworfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRpb25Db3Vu
dGVyLmgJKHJldmlzaW9uIDIyMTM5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FeGVjdXRpb25Db3VudGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNiArNDEsNyBAQCBl
bnVtIENvdW50aW5nVmFyaWFudCB7CiBkb3VibGUgYXBwbHlNZW1vcnlVc2FnZUhldXJpc3RpY3Mo
aW50MzJfdCB2YWx1ZSwgQ29kZUJsb2NrKik7CiBpbnQzMl90IGFwcGx5TWVtb3J5VXNhZ2VIZXVy
aXN0aWNzQW5kQ29udmVydFRvSW50KGludDMyX3QgdmFsdWUsIENvZGVCbG9jayopOwogCisvLyBG
SVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NTE0NS4KIGlubGluZSBpbnQzMl90IGZvcm1hdHRlZFRvdGFsRXhlY3V0
aW9uQ291bnQoZmxvYXQgdmFsdWUpCiB7CiAgICAgdW5pb24gewpAQCAtNTcsMTEgKzU4LDE5IEBA
IHB1YmxpYzoKICAgICBFeGVjdXRpb25Db3VudGVyKCk7CiAgICAgdm9pZCBmb3JjZVNsb3dQYXRo
Q29uY3VycmVudGx5KCk7IC8vIElmIHlvdSB1c2UgdGhpcywgY2hlY2tJZlRocmVzaG9sZENyb3Nz
ZWRBbmRTZXQoKSBtYXkgc3RpbGwgcmV0dXJuIGZhbHNlLgogICAgIGJvb2wgY2hlY2tJZlRocmVz
aG9sZENyb3NzZWRBbmRTZXQoQ29kZUJsb2NrKik7CisgICAgYm9vbCBoYXNDcm9zc2VkVGhyZXNo
b2xkKCkgY29uc3QgeyByZXR1cm4gbV9jb3VudGVyID49IDA7IH0KICAgICB2b2lkIHNldE5ld1Ro
cmVzaG9sZChpbnQzMl90IHRocmVzaG9sZCwgQ29kZUJsb2NrKik7CiAgICAgdm9pZCBkZWZlcklu
ZGVmaW5pdGVseSgpOwogICAgIGRvdWJsZSBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PGRvdWJsZT4obV90b3RhbENvdW50KSArIG1fY291bnRlcjsgfQogICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYpIGNvbnN0OwogICAgIAorICAgIHZvaWQgc2V0TmV3VGhyZXNob2xkRm9yT1NS
RXhpdCh1aW50MzJfdCBhY3RpdmVUaHJlc2hvbGQsIGRvdWJsZSBtZW1vcnlVc2FnZUFkanVzdGVk
VGhyZXNob2xkKQorICAgIHsKKyAgICAgICAgbV9hY3RpdmVUaHJlc2hvbGQgPSBhY3RpdmVUaHJl
c2hvbGQ7CisgICAgICAgIG1fY291bnRlciA9IHN0YXRpY19jYXN0PGludDMyX3Q+KC1tZW1vcnlV
c2FnZUFkanVzdGVkVGhyZXNob2xkKTsKKyAgICAgICAgbV90b3RhbENvdW50ID0gbWVtb3J5VXNh
Z2VBZGp1c3RlZFRocmVzaG9sZDsKKyAgICB9CisKICAgICBzdGF0aWMgaW50MzJfdCBtYXhpbXVt
RXhlY3V0aW9uQ291bnRzQmV0d2VlbkNoZWNrcG9pbnRzKCkKICAgICB7CiAgICAgICAgIHN3aXRj
aCAoY291bnRpbmdWYXJpYW50KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3Bw
CShyZXZpc2lvbiAyMjEzOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0
aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDYsNiArNDYsOCBAQCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIE1ldGhvZE9mR2V0CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorLy8gRklYTUU6IFRoaXMgaXMgYmVpbmcgc3VwcGxhbnRl
ZCBieSByZXBvcnRWYWx1ZSgpLiBSZW1vdmUgdGhpcyBvbmUKKy8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUgaGFzIGJlZW4gZml4ZWQuCiB2b2lkIE1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmIGpp
dCwgSlNWYWx1ZVJlZ3MgcmVncykgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fa2luZCkgewpAQCAt
NzQsNiArNzYsMzQgQEAgdm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0Ugog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3ZvaWQgTWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZTo6cmVwb3J0VmFsdWUoSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBzd2l0
Y2ggKG1fa2luZCkgeworICAgIGNhc2UgTm9uZToKKyAgICAgICAgcmV0dXJuOworCisgICAgY2Fz
ZSBSZWFkeToKKyAgICAgICAgKnUucHJvZmlsZS0+c3BlY0ZhaWxCdWNrZXQoMCkgPSBKU1ZhbHVl
OjplbmNvZGUodmFsdWUpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIExhenlPcGVyYW5k
OiB7CisgICAgICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5IGtleSh1LmxhenlPcGVyYW5k
LmJ5dGVjb2RlT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIodS5sYXp5T3BlcmFuZC5vcGVyYW5kKSk7
CisKKyAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcih1LmxhenlPcGVyYW5kLmNvZGVC
bG9jay0+bV9sb2NrKTsKKyAgICAgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIHByb2ZpbGUg
PQorICAgICAgICB1LmxhenlPcGVyYW5kLmNvZGVCbG9jay0+bGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVzKCkuYWRkKGxvY2tlciwga2V5KTsKKyAgICAgICAgKnByb2ZpbGUtPnNwZWNGYWlsQnVja2V0
KDApID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGNhc2UgQXJpdGhQcm9maWxlUmVhZHk6IHsKKyAgICAgICAgdS5hcml0aFByb2ZpbGUtPm9i
c2VydmVSZXN1bHQodmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfSB9CisKKyAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2Vu
ZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oCShy
ZXZpc2lvbiAyMjEzOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcwLDkgKzcwLDEy
IEBAIHB1YmxpYzoKICAgICAgICAgQ29kZUJsb2NrKiwgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGVLZXkmKTsKICAgICAKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyBy
ZXR1cm4gbV9raW5kICE9IE5vbmU7IH0KLSAgICAKKworICAgIC8vIEZJWE1FOiBlbWl0UmVwb3J0
VmFsdWUgaXMgYmVpbmcgc3VwcGxhbnRlZCBieSByZXBvcnRWYWx1ZSgpLiBSZW1vdmUgdGhpcyBv
bmUKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1
IGhhcyBiZWVuIGZpeGVkLgogICAgIHZvaWQgZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYs
IEpTVmFsdWVSZWdzKSBjb25zdDsKLSAgICAKKyAgICB2b2lkIHJlcG9ydFZhbHVlKEpTVmFsdWUp
OworCiBwcml2YXRlOgogICAgIGVudW0gS2luZCB7CiAgICAgICAgIE5vbmUsCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcAkocmV2aXNp
b24gMjIxMzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBpbml0aWFsaXplU3Vw
ZXJTYW1wbGVyKCkKICAgICBUaHJlYWQ6OmNyZWF0ZSgKICAgICAgICAgIkpTQyBTdXBlciBTYW1w
bGVyIiwKICAgICAgICAgW10gKCkgewotICAgICAgICAgICAgY29uc3QgaW50IHNsZWVwUXVhbnR1
bSA9IDEwOworICAgICAgICAgICAgY29uc3QgaW50IHNsZWVwUXVhbnR1bSA9IC4yNTsgLy8xMDsK
ICAgICAgICAgICAgIGNvbnN0IGludCBwcmludGluZ1BlcmlvZCA9IDEwMDA7CiAgICAgICAgICAg
ICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAgZm9yIChpbnQgbXMgPSAwOyBtcyA8IHByaW50
aW5nUGVyaW9kOyBtcyArPSBzbGVlcFF1YW50dW0pIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRHJpdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RyaXZlci5jcHAJKHJldmlzaW9uIDIyMTM5OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg5LDcg
Kzg5LDcgQEAgc3RhdGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAogICAgIAogICAg
IC8vIE1ha2Ugc3VyZSB0aGF0IGFueSBzdHVicyB0aGF0IHRoZSBERkcgaXMgZ29pbmcgdG8gdXNl
IGFyZSBpbml0aWFsaXplZC4gV2Ugd2FudCB0bwogICAgIC8vIG1ha2Ugc3VyZSB0aGF0IGFsbCBK
SVQgY29kZSBnZW5lcmF0aW9uIGRvZXMgZmluYWxpemF0aW9uIG9uIHRoZSBtYWluIHRocmVhZC4K
LSAgICB2bS5nZXRDVElTdHViKG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpOworICAg
IHZtLmdldENUSVN0dWIob3NyRXhpdFRodW5rR2VuZXJhdG9yKTsKICAgICB2bS5nZXRDVElTdHVi
KHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcik7CiAgICAgdm0uZ2V0Q1RJ
U3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKTsKICAgICB2bS5nZXRDVElTdHViKGxpbmtQb2x5
bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29kZS5jcHAJKHJldmlzaW9uIDIyMTM5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNiwxOCArMjI2LDYg
QEAgdm9pZCBKSVRDb2RlOjp2YWxpZGF0ZVJlZmVyZW5jZXMoY29uc3QgVAogICAgIG1pbmlmaWVk
REZHLnZhbGlkYXRlUmVmZXJlbmNlcyh0cmFja2VkUmVmZXJlbmNlcyk7CiB9CiAKLXN0ZDo6b3B0
aW9uYWw8Q29kZU9yaWdpbj4gSklUQ29kZTo6ZmluZFBDKENvZGVCbG9jayosIHZvaWQqIHBjKQot
ewotICAgIGZvciAoT1NSRXhpdCYgZXhpdCA6IG9zckV4aXQpIHsKLSAgICAgICAgaWYgKEV4ZWN1
dGFibGVNZW1vcnlIYW5kbGUqIGhhbmRsZSA9IGV4aXQubV9jb2RlLmV4ZWN1dGFibGVNZW1vcnko
KSkgewotICAgICAgICAgICAgaWYgKGhhbmRsZS0+c3RhcnQoKSA8PSBwYyAmJiBwYyA8IGhhbmRs
ZS0+ZW5kKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8Q29kZU9yaWdp
bj4oZXhpdC5tX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCiB2b2lkIEpJVENvZGU6OmZpbmFsaXplT1NS
RW50cnlwb2ludHMoKQogewogICAgIGF1dG8gY29tcGFyYXRvciA9IFtdIChjb25zdCBhdXRvJiBh
LCBjb25zdCBhdXRvJiBiKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
ZGUuaAkocmV2aXNpb24gMjIxMzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw4ICsxMzgsNiBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgcHRyZGlmZl90IGNvbW1vbkRhdGFPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoSklUQ29kZSwgY29tbW9uKTsgfQogCi0gICAgc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2lu
PiBmaW5kUEMoQ29kZUJsb2NrKiwgdm9pZCogcGMpIG92ZXJyaWRlOwotICAgIAogcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgSklUQ29tcGlsZXI7IC8vIEFsbG93IEpJVENvbXBpbGVyIHRvIGNh
bGwgc2V0Q29kZVJlZigpLgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjIxMzk5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMyw3ICszMDMs
NyBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAgICAgICAgICAg
ICBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbChyZWNvcmQuY2FsbCkpOwogICAgIH0KICAg
ICAKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdFRodW5rID0gdm0oKS0+Z2V0Q1RJ
U3R1Yihvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKTsKKyAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgb3NyRXhpdFRodW5rID0gdm0oKS0+Z2V0Q1RJU3R1Yihvc3JFeGl0VGh1bmtHZW5l
cmF0b3IpOwogICAgIENvZGVMb2NhdGlvbkxhYmVsIHRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVs
KG9zckV4aXRUaHVuay5jb2RlKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2pp
dENvZGUtPm9zckV4aXQuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgT1NSRXhpdCYgZXhpdCA9IG1f
aml0Q29kZS0+b3NyRXhpdFtpXTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0LmNwcAkocmV2aXNpb24gMjIxMzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwxOCArMjksMjIzIEBACiAj
aWYgRU5BQkxFKERGR19KSVQpCiAKICNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKKyNpbmNs
dWRlICJDbG9uZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUg
IkRGR01heUV4aXQuaCIKLSNpbmNsdWRlICJERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCIKICNp
bmNsdWRlICJERkdPU1JFeGl0UHJlcGFyYXRpb24uaCIKICNpbmNsdWRlICJERkdPcGVyYXRpb25z
LmgiCiAjaW5jbHVkZSAiREZHU3BlY3VsYXRpdmVKSVQuaCIKLSNpbmNsdWRlICJGcmFtZVRyYWNl
cnMuaCIKKyNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJJbmxpbmVDYWxs
RnJhbWUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5o
IgogI2luY2x1ZGUgIk9wZXJhbmRzSW5saW5lcy5oIgorI2luY2x1ZGUgIlByb2JlQ29udGV4dC5o
IgorI2luY2x1ZGUgIlByb2JlRnJhbWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogCit1c2luZyBDUFVTdGF0ZSA9IFByb2JlOjpDUFVTdGF0ZTsKK3VzaW5nIENvbnRleHQg
PSBQcm9iZTo6Q29udGV4dDsKK3VzaW5nIEZyYW1lID0gUHJvYmU6OkZyYW1lOworCitzdGF0aWMg
dm9pZCBwcmludE9TUkV4aXQoQ29udGV4dCYsIHVpbnQzMl90IG9zckV4aXRJbmRleCwgY29uc3Qg
T1NSRXhpdCYpOworCitzdGF0aWMgSlNWYWx1ZSBqc1ZhbHVlRm9yKENQVVN0YXRlJiBjcHUsIEpT
VmFsdWVTb3VyY2Ugc291cmNlKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaWYgKHNvdXJj
ZS5pc0FkZHJlc3MoKSkKKyAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PEpTVmFsdWUq
PihjcHUuZ3ByPHVpbnQ4X3QqPihzb3VyY2UuYmFzZSgpKSArIHNvdXJjZS5vZmZzZXQoKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShjcHUuZ3ByPEVuY29kZWRKU1ZhbHVlPihzb3VyY2Uu
Z3ByKCkpKTsKKyNlbHNlCisgICAgaWYgKHNvdXJjZS5pc0FkZHJlc3MoKSkKKyAgICAgICAgcmV0
dXJuICpyZWludGVycHJldF9jYXN0PEpTVmFsdWUqPihjcHUuZ3ByPHVpbnQ4X3QqPihzb3VyY2Uu
YmFzZSgpKSArIHNvdXJjZS5vZmZzZXQoKSk7CisgICAgaWYgKHNvdXJjZS5oYXNLbm93blRhZygp
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZShzb3VyY2UudGFnKCksIGNwdS5ncHI8aW50MzJfdD4o
c291cmNlLnBheWxvYWRHUFIoKSkpOworICAgIHJldHVybiBKU1ZhbHVlKGNwdS5ncHI8aW50MzJf
dD4oc291cmNlLnRhZ0dQUigpKSwgY3B1LmdwcjxpbnQzMl90Pihzb3VyY2UucGF5bG9hZEdQUigp
KSk7CisjZW5kaWYKK30KKworI2lmIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTID4g
MAorCisvLyBCYXNlZCBvbiBBc3NlbWJseUhlbHBlcnM6OmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNG
b3IoKS4KK3N0YXRpYyB2b2lkIHJlc3RvcmVDYWxsZWVTYXZlc0ZvcihDb250ZXh0JiBjb250ZXh0
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBBU1NFUlQoY29kZUJsb2NrKTsKKworICAg
IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2
ZVJlZ2lzdGVycygpOworICAgIFJlZ2lzdGVyU2V0IGRvbnRSZXN0b3JlUmVnaXN0ZXJzID0gUmVn
aXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjphbGxG
UFJzKCkpOworICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6ZSgp
OworCisgICAgdWludHB0cl90KiBwaHlzaWNhbFN0YWNrRnJhbWUgPSBjb250ZXh0LmZwPHVpbnRw
dHJfdCo+KCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkr
KykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkp
OworICAgICAgICBpZiAoZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAvLyBUaGUgY2FsbGVlIHNhdmVkIHZhbHVlcyBj
b21lIGZyb20gdGhlIG9yaWdpbmFsIHN0YWNrLCBub3QgdGhlIHJlY292ZXJlZCBzdGFjay4KKyAg
ICAgICAgLy8gSGVuY2UsIHdlIHJlYWQgdGhlIHZhbHVlcyBkaXJlY3RseSBmcm9tIHRoZSBwaHlz
aWNhbCBzdGFjayBtZW1vcnkgaW5zdGVhZCBvZgorICAgICAgICAvLyBnb2luZyB0aHJvdWdoIGNv
bnRleHQuc3RhY2soKS4KKyAgICAgICAgQVNTRVJUKCEoZW50cnkub2Zmc2V0KCkgJSBzaXplb2Yo
dWludHB0cl90KSkpOworICAgICAgICBjb250ZXh0LmdwcihlbnRyeS5yZWcoKS5ncHIoKSkgPSBw
aHlzaWNhbFN0YWNrRnJhbWVbZW50cnkub2Zmc2V0KCkgLyBzaXplb2YodWludHB0cl90KV07Cisg
ICAgfQorfQorCisvLyBCYXNlZCBvbiBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlQ2FsbGVlU2F2
ZXNGb3IoKS4KK3N0YXRpYyB2b2lkIHNhdmVDYWxsZWVTYXZlc0ZvcihDb250ZXh0JiBjb250ZXh0
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBhdXRvJiBzdGFjayA9IGNvbnRleHQuc3Rh
Y2soKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrKTsKKworICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0
KiBjYWxsZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOworICAgIFJl
Z2lzdGVyU2V0IGRvbnRTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0
YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjphbGxGUFJzKCkpOworICAgIHVuc2lnbmVkIHJl
Z2lzdGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6ZSgpOworCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0
IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAoZG9udFNhdmVSZWdpc3Rl
cnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBzdGFj
ay5zZXQoY29udGV4dC5mcCgpLCBlbnRyeS5vZmZzZXQoKSwgY29udGV4dC5ncHI8dWludHB0cl90
PihlbnRyeS5yZWcoKS5ncHIoKSkpOworICAgIH0KK30KKworLy8gQmFzZWQgb24gQXNzZW1ibHlI
ZWxwZXJzOjpyZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZm
ZXIoKS4KK3N0YXRpYyB2b2lkIHJlc3RvcmVDYWxsZWVTYXZlc0Zyb21WTUVudHJ5RnJhbWVDYWxs
ZWVTYXZlc0J1ZmZlcihDb250ZXh0JiBjb250ZXh0KQoreworICAgIFZNJiB2bSA9ICpjb250ZXh0
LmFyZzxWTSo+KCk7CisgICAgYXV0byYgc3RhY2sgPSBjb250ZXh0LnN0YWNrKCk7CisKKyAgICBS
ZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2FsbGVlU2F2ZXMgPSBWTTo6Z2V0QWxsQ2FsbGVlU2F2
ZVJlZ2lzdGVyT2Zmc2V0cygpOworICAgIFJlZ2lzdGVyU2V0IGRvbnRSZXN0b3JlUmVnaXN0ZXJz
ID0gUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCk7CisgICAgdW5zaWduZWQgcmVnaXN0ZXJD
b3VudCA9IGFsbENhbGxlZVNhdmVzLT5zaXplKCk7CisKKyAgICBWTUVudHJ5UmVjb3JkKiBlbnRy
eVJlY29yZCA9IHZtRW50cnlSZWNvcmQodm0udG9wVk1FbnRyeUZyYW1lKTsKKyAgICB2b2lkKiBj
YWxsZWVTYXZlQnVmZmVyID0gZW50cnlSZWNvcmQtPmNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXI7
CisKKyAgICAvLyBSZXN0b3JlIGFsbCBjYWxsZWUgc2F2ZXMuCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0
IGVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAoZG9udFJlc3RvcmVS
ZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBpZiAoZW50cnkucmVnKCkuaXNHUFIoKSkKKyAgICAgICAgICAgIGNvbnRleHQuZ3ByKGVudHJ5
LnJlZygpLmdwcigpKSA9IHN0YWNrLmdldDx1aW50cHRyX3Q+KGNhbGxlZVNhdmVCdWZmZXIsIGVu
dHJ5Lm9mZnNldCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29udGV4dC5ncHIoZW50
cnkucmVnKCkuZ3ByKCkpID0gc3RhY2suZ2V0PGRvdWJsZT4oY2FsbGVlU2F2ZUJ1ZmZlciwgZW50
cnkub2Zmc2V0KCkpOworICAgIH0KK30KKworLy8gQmFzZWQgb24gQXNzZW1ibHlIZWxwZXJzOjpj
b3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKCkuCitzdGF0aWMg
dm9pZCBjb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKENvbnRl
eHQmIGNvbnRleHQpCit7CisgICAgVk0mIHZtID0gKmNvbnRleHQuYXJnPFZNKj4oKTsKKyAgICBh
dXRvJiBzdGFjayA9IGNvbnRleHQuc3RhY2soKTsKKworICAgIFZNRW50cnlSZWNvcmQqIGVudHJ5
UmVjb3JkID0gdm1FbnRyeVJlY29yZCh2bS50b3BWTUVudHJ5RnJhbWUpOworICAgIHZvaWQqIGNh
bGxlZVNhdmVCdWZmZXIgPSBlbnRyeVJlY29yZC0+Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlcjsK
KworICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBhbGxDYWxsZWVTYXZlcyA9IFZNOjpnZXRBbGxD
YWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7CisgICAgUmVnaXN0ZXJTZXQgZG9udENvcHlSZWdp
c3RlcnMgPSBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKTsKKyAgICB1bnNpZ25lZCByZWdp
c3RlckNvdW50ID0gYWxsQ2FsbGVlU2F2ZXMtPnNpemUoKTsKKworICAgIEFTU0VSVChpczY0Qml0
KCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsK
KyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5hdChpKTsK
KyAgICAgICAgaWYgKGRvbnRDb3B5UmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGVudHJ5LnJlZygpLmlzR1BSKCkpCisgICAgICAg
ICAgICBzdGFjay5zZXQoY2FsbGVlU2F2ZUJ1ZmZlciwgZW50cnkub2Zmc2V0KCksIGNvbnRleHQu
Z3ByPHVpbnRwdHJfdD4oZW50cnkucmVnKCkuZ3ByKCkpKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgc3RhY2suc2V0KGNhbGxlZVNhdmVCdWZmZXIsIGVudHJ5Lm9mZnNldCgpLCBjb250ZXh0
LmZwcjx1aW50cHRyX3Q+KGVudHJ5LnJlZygpLmZwcigpKSk7CisgICAgfQorfQorCisvLyBCYXNl
ZCBvbiBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoKS4KK3N0
YXRpYyB2b2lkIHNhdmVPckNvcHlDYWxsZWVTYXZlc0ZvcihDb250ZXh0JiBjb250ZXh0LCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgVmlydHVhbFJlZ2lzdGVyIG9mZnNldFZpcnR1YWxSZWdpc3Rlciwg
Ym9vbCB3YXNDYWxsZWRWaWFUYWlsQ2FsbCkKK3sKKyAgICBGcmFtZSBmcmFtZShjb250ZXh0LmZw
KCksIGNvbnRleHQuc3RhY2soKSk7CisgICAgQVNTRVJUKGNvZGVCbG9jayk7CisKKyAgICBSZWdp
c3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdp
c3RlcnMoKTsKKyAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0
KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxsRlBScygpKTsK
KyAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKKworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgUmVnaXN0ZXJTZXQgYmFzZWxpbmVDYWxsZWVTYXZlcyA9IFJl
Z2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOworI2VuZGlmCisK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAg
ICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAg
IGlmIChkb250U2F2ZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgdWludHB0cl90IHNhdmVkUmVnaXN0ZXJWYWx1ZTsKKworI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCisgICAgICAgIFVOVVNFRF9QQVJBTSh3YXNDYWxsZWRWaWFUYWlsQ2Fs
bCk7CisjZWxzZQorICAgICAgICBpZiAod2FzQ2FsbGVkVmlhVGFpbENhbGwgJiYgYmFzZWxpbmVD
YWxsZWVTYXZlcy5nZXQoZW50cnkucmVnKCkpKQorICAgICAgICAgICAgc2F2ZWRSZWdpc3RlclZh
bHVlID0gZnJhbWUuZ2V0PHVpbnRwdHJfdD4oZW50cnkub2Zmc2V0KCkpOworICAgICAgICBlbHNl
CisjZW5kaWYKKyAgICAgICAgICAgIHNhdmVkUmVnaXN0ZXJWYWx1ZSA9IGNvbnRleHQuZ3ByKGVu
dHJ5LnJlZygpLmdwcigpKTsKKworICAgICAgICBmcmFtZS5zZXQob2Zmc2V0VmlydHVhbFJlZ2lz
dGVyLm9mZnNldEluQnl0ZXMoKSArIGVudHJ5Lm9mZnNldCgpLCBzYXZlZFJlZ2lzdGVyVmFsdWUp
OworICAgIH0KK30KKyNlbHNlIC8vIG5vdCBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVS
UyA+IDAKKworc3RhdGljIHZvaWQgcmVzdG9yZUNhbGxlZVNhdmVzRm9yKENvbnRleHQmLCBDb2Rl
QmxvY2sqKSB7IH0KK3N0YXRpYyB2b2lkIHNhdmVDYWxsZWVTYXZlc0ZvcihDb250ZXh0JiwgQ29k
ZUJsb2NrKikgeyB9CitzdGF0aWMgdm9pZCByZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1FbnRyeUZy
YW1lQ2FsbGVlU2F2ZXNCdWZmZXIoQ29udGV4dCYpIHsgfQorc3RhdGljIHZvaWQgY29weUNhbGxl
ZVNhdmVzVG9WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihDb250ZXh0JikgeyB9CitzdGF0
aWMgdm9pZCBzYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoQ29udGV4dCYsIENvZGVCbG9jayosIFZp
cnR1YWxSZWdpc3RlciwgYm9vbCkgeyB9CisKKyNlbmRpZiAvLyBOVU1CRVJfT0ZfQ0FMTEVFX1NB
VkVTX1JFR0lTVEVSUyA+IDAKKworc3RhdGljIEpTQ2VsbCogY3JlYXRlRGlyZWN0QXJndW1lbnRz
RHVyaW5nRXhpdChDb250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5saW5l
Q2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIEpTRnVuY3Rpb24qIGNhbGxlZSwgaW50MzJfdCBh
cmd1bWVudENvdW50KQoreworICAgIFZNJiB2bSA9ICpjb250ZXh0LmFyZzxWTSo+KCk7CisKKyAg
ICBBU1NFUlQodm0uaGVhcC5pc0RlZmVycmVkKCkpOworCisgICAgaWYgKGlubGluZUNhbGxGcmFt
ZSkKKyAgICAgICAgY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJh
bWUoaW5saW5lQ2FsbEZyYW1lKTsKKworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFyZ3VtZW50Q291
bnQgLSAxOworICAgIHVuc2lnbmVkIGNhcGFjaXR5ID0gc3RkOjptYXgobGVuZ3RoLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSAxKSk7CisgICAgRGly
ZWN0QXJndW1lbnRzKiByZXN1bHQgPSBEaXJlY3RBcmd1bWVudHM6OmNyZWF0ZSgKKyAgICAgICAg
dm0sIGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmRpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSgp
LCBsZW5ndGgsIGNhcGFjaXR5KTsKKworICAgIHJlc3VsdC0+Y2FsbGVlKCkuc2V0KHZtLCByZXN1
bHQsIGNhbGxlZSk7CisKKyAgICB2b2lkKiBmcmFtZUJhc2UgPSBjb250ZXh0LmZwPFJlZ2lzdGVy
Kj4oKSArIChpbmxpbmVDYWxsRnJhbWUgPyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0IDog
MCk7CisgICAgRnJhbWUgZnJhbWUoZnJhbWVCYXNlLCBjb250ZXh0LnN0YWNrKCkpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykKKyAgICAgICAgcmVzdWx0LT5zZXRJbmRleFF1
aWNrbHkodm0sIGksIGZyYW1lLmdldEFyZ3VtZW50PEpTVmFsdWU+KGkpKTsKKworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK3N0YXRpYyBKU0NlbGwqIGNyZWF0ZUNsb25lZEFyZ3VtZW50c0R1cmlu
Z0V4aXQoQ29udGV4dCYgY29udGV4dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIElubGluZUNhbGxG
cmFtZSogaW5saW5lQ2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBjYWxsZWUsIGludDMyX3QgYXJndW1l
bnRDb3VudCkKK3sKKyAgICBWTSYgdm0gPSAqY29udGV4dC5hcmc8Vk0qPigpOworICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IGNvbnRleHQuZnA8RXhlY1N0YXRlKj4oKTsKKworICAgIEFTU0VSVCh2bS5o
ZWFwLmlzRGVmZXJyZWQoKSk7CisKKyAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKQorICAgICAgICBj
b2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcklubGluZUNhbGxGcmFtZShpbmxpbmVDYWxs
RnJhbWUpOworCisgICAgdW5zaWduZWQgbGVuZ3RoID0gYXJndW1lbnRDb3VudCAtIDE7CisgICAg
Q2xvbmVkQXJndW1lbnRzKiByZXN1bHQgPSBDbG9uZWRBcmd1bWVudHM6OmNyZWF0ZUVtcHR5KAor
ICAgICAgICB2bSwgY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Y2xvbmVkQXJndW1lbnRzU3Ry
dWN0dXJlKCksIGNhbGxlZSwgbGVuZ3RoKTsKKworICAgIHZvaWQqIGZyYW1lQmFzZSA9IGNvbnRl
eHQuZnA8UmVnaXN0ZXIqPigpICsgKGlubGluZUNhbGxGcmFtZSA/IGlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgOiAwKTsKKyAgICBGcmFtZSBmcmFtZShmcmFtZUJhc2UsIGNvbnRleHQuc3Rh
Y2soKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KQorICAgICAgICByZXN1
bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIGZyYW1lLmdldEFyZ3VtZW50PEpTVmFsdWU+KGkp
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBPU1JFeGl0OjpPU1JFeGl0KEV4aXRLaW5kIGtp
bmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJv
ZmlsZSB2YWx1ZVByb2ZpbGUsIFNwZWN1bGF0aXZlSklUKiBqaXQsIHVuc2lnbmVkIHN0cmVhbUlu
ZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4KQogICAgIDogT1NSRXhpdEJhc2Uoa2luZCwgaml0
LT5tX29yaWdpbi5mb3JFeGl0LCBqaXQtPm1fb3JpZ2luLnNlbWFudGljLCBqaXQtPm1fb3JpZ2lu
Lndhc0hvaXN0ZWQpCiAgICAgLCBtX2pzVmFsdWVTb3VyY2UoanNWYWx1ZVNvdXJjZSkKQEAgLTc4
LDggKzI4MywxMCBAQCB2b2lkIE9TUkV4aXQ6OmNvcnJlY3RKdW1wKExpbmtCdWZmZXImIGxpCiAg
ICAgbV9wYXRjaGFibGVDb2RlT2Zmc2V0ID0gbGlua0J1ZmZlci5vZmZzZXRPZihsYWJlbCk7CiB9
CiAKLXZvaWQgT1NSRXhpdDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+JiBvcGVyYW5kcykKK3N0YXRpYyB2b2lkIGVt
aXRSZXN0b3JlQXJndW1lbnRzKENvbnRleHQmIGNvbnRleHQsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMpCiB7CisgICAgRnJhbWUg
ZnJhbWUoY29udGV4dC5mcCgpLCBjb250ZXh0LnN0YWNrKCkpOworCiAgICAgSGFzaE1hcDxNaW5p
ZmllZElELCBpbnQ+IGFscmVhZHlBbGxvY2F0ZWRBcmd1bWVudHM7IC8vIE1hcHMgcGhhbnRvbSBh
cmd1bWVudHMgbm9kZSBJRCB0byBvcGVyYW5kLgogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsg
aW5kZXggPCBvcGVyYW5kcy5zaXplKCk7ICsraW5kZXgpIHsKICAgICAgICAgY29uc3QgVmFsdWVS
ZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5kc1tpbmRleF07CkBAIC05MiwxNCArMjk5LDEyIEBA
IHZvaWQgT1NSRXhpdDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMoQ0NhbGwKICAgICAgICAgTWluaWZp
ZWRJRCBpZCA9IHJlY292ZXJ5Lm5vZGVJRCgpOwogICAgICAgICBhdXRvIGl0ZXIgPSBhbHJlYWR5
QWxsb2NhdGVkQXJndW1lbnRzLmZpbmQoaWQpOwogICAgICAgICBpZiAoaXRlciAhPSBhbHJlYWR5
QWxsb2NhdGVkQXJndW1lbnRzLmVuZCgpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlUmVncyByZWdz
ID0gSlNWYWx1ZVJlZ3M6OndpdGhUd29BdmFpbGFibGVSZWdzKEdQUkluZm86OnJlZ1QwLCBHUFJJ
bmZvOjpyZWdUMSk7Ci0gICAgICAgICAgICBqaXQubG9hZFZhbHVlKENDYWxsSGVscGVyczo6YWRk
cmVzc0ZvcihpdGVyLT52YWx1ZSksIHJlZ3MpOwotICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUo
cmVncywgQ0NhbGxIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGZy
YW1lLnNldE9wZXJhbmQob3BlcmFuZCwgZnJhbWUuZ2V0T3BlcmFuZDxKU1ZhbHVlPihpdGVyLT52
YWx1ZSkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBJbmxp
bmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9Ci0gICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCktPmppdENvZGUoKS0+ZGZnKCktPm1pbmlmaWVkREZHLmF0KGlkKS0+aW5saW5lQ2FsbEZyYW1l
KCk7CisgICAgICAgICAgICBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnKCktPm1pbmlmaWVkREZH
LmF0KGlkKS0+aW5saW5lQ2FsbEZyYW1lKCk7CiAKICAgICAgICAgaW50IHN0YWNrT2Zmc2V0Owog
ICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKQpAQCAtMTA3LDUzICszMTIsNDggQEAgdm9pZCBP
U1JFeGl0OjplbWl0UmVzdG9yZUFyZ3VtZW50cyhDQ2FsbAogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBzdGFja09mZnNldCA9IDA7CiAKLSAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUgfHwg
aW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKSB7Ci0gICAgICAgICAgICBqaXQubG9hZFB0
cigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Ioc3RhY2tPZmZz
ZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUpLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGppdC5tb3ZlKAotICAgICAgICAg
ICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihpbmxpbmVDYWxsRnJhbWUtPmNh
bGxlZVJlY292ZXJ5LmNvbnN0YW50KCkuYXNDZWxsKCkpLAotICAgICAgICAgICAgICAgIEdQUklu
Zm86OnJlZ1QwKTsKLSAgICAgICAgfQorICAgICAgICBKU0Z1bmN0aW9uKiBjYWxsZWU7CisgICAg
ICAgIGlmICghaW5saW5lQ2FsbEZyYW1lIHx8IGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2Fs
bCkKKyAgICAgICAgICAgIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZnJhbWUuZ2V0T3Bl
cmFuZDxKU1ZhbHVlPihzdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSkuYXNDZWxs
KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlv
bio+KGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkuY29uc3RhbnQoKS5hc0NlbGwoKSk7
CiAKLSAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUgfHwgaW5saW5lQ2FsbEZyYW1lLT5pc1Zh
cmFyZ3MoKSkgewotICAgICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OnBheWxvYWRGb3Ioc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50KSwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBqaXQubW92ZSgKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW0zMihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpLAot
ICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKLSAgICAgICAgfQorICAgICAgICBpbnQz
Ml90IGFyZ3VtZW50Q291bnQ7CisgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lIHx8IGlubGlu
ZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCisgICAgICAgICAgICBhcmd1bWVudENvdW50ID0gZnJh
bWUuZ2V0T3BlcmFuZDxpbnQzMl90PihzdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnQsIFBheWxvYWRPZmZzZXQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcmd1
bWVudENvdW50ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOwogCi0gICAgICAg
IGppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoCi0gICAgICAgICAgICBBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lKSwgR1BSSW5mbzo6cmVnVDAsIEdQ
UkluZm86OnJlZ1QxKTsKKyAgICAgICAgSlNDZWxsKiBhcmd1bWVudHNPYmplY3Q7CiAgICAgICAg
IHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBEaXJlY3RBcmd1
bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQ6Ci0gICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb25DcmVhdGVE
aXJlY3RBcmd1bWVudHNEdXJpbmdFeGl0KSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAg
ICAgICAgYXJndW1lbnRzT2JqZWN0ID0gY3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdChj
b250ZXh0LCBjb2RlQmxvY2ssIGlubGluZUNhbGxGcmFtZSwgY2FsbGVlLCBhcmd1bWVudENvdW50
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENsb25lZEFyZ3VtZW50c1RoYXRX
ZXJlTm90Q3JlYXRlZDoKLSAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1
c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3Vt
ZW50c0R1cmluZ0V4aXQpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgICAgICBhcmd1
bWVudHNPYmplY3QgPSBjcmVhdGVDbG9uZWRBcmd1bWVudHNEdXJpbmdFeGl0KGNvbnRleHQsIGNv
ZGVCbG9jaywgaW5saW5lQ2FsbEZyYW1lLCBjYWxsZWUsIGFyZ3VtZW50Q291bnQpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAg
aml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgICAgIGppdC5zdG9yZUNlbGwoR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5k
KSk7CisgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgYXJndW1lbnRzT2JqZWN0KTsK
IAogICAgICAgICBhbHJlYWR5QWxsb2NhdGVkQXJndW1lbnRzLmFkZChpZCwgb3BlcmFuZCk7CiAg
ICAgfQogfQogCi12b2lkIEpJVF9PUEVSQVRJT04gT1NSRXhpdDo6Y29tcGlsZU9TUkV4aXQoRXhl
Y1N0YXRlKiBleGVjKQordm9pZCBPU1JFeGl0OjpleGVjdXRlT1NSRXhpdChDb250ZXh0JiBjb250
ZXh0KQogewotICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKCp2bSk7CisgICAgVk0mIHZtID0gKmNvbnRleHQuYXJnPFZNKj4oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSBjb250ZXh0LmZwPEV4ZWNTdGF0ZSo+KCk7CisgICAgQVNTRVJUKCZleGVjLT52
bSgpID09ICZ2bSk7CiAKLSAgICBpZiAodm0tPmNhbGxGcmFtZUZvckNhdGNoKQotICAgICAgICBS
RUxFQVNFX0FTU0VSVCh2bS0+Y2FsbEZyYW1lRm9yQ2F0Y2ggPT0gZXhlYyk7CisgICAgaWYgKHZt
LmNhbGxGcmFtZUZvckNhdGNoKSB7CisgICAgICAgIGV4ZWMgPSB2bS5jYWxsRnJhbWVGb3JDYXRj
aDsKKyAgICAgICAgY29udGV4dC5mcCgpID0gZXhlYzsKKyAgICB9CiAKICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwogICAgIEFTU0VSVChjb2RlQmxvY2spOwpA
QCAtMTYxLDgxICszNjEsOTcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIE9TUkV4aXQ6OmNvbXBpbGVP
U1JFeAogCiAgICAgLy8gSXQncyBzb3J0IG9mIHByZWZlcmFibGUgdGhhdCB3ZSBkb24ndCBHQyB3
aGlsZSBpbiBoZXJlLiBBbnl3YXlzLCBkb2luZyBzbyB3b3VsZG4ndAogICAgIC8vIHJlYWxseSBi
ZSBwcm9maXRhYmxlLgotICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyh2bS0+aGVhcCk7Cisg
ICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOwogCi0gICAgdWludDMyX3QgZXhp
dEluZGV4ID0gdm0tPm9zckV4aXRJbmRleDsKKyAgICB1aW50MzJfdCBleGl0SW5kZXggPSB2bS5v
c3JFeGl0SW5kZXg7CiAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jay0+aml0Q29kZSgpLT5k
ZmcoKS0+b3NyRXhpdFtleGl0SW5kZXhdOwogCi0gICAgaWYgKHZtLT5jYWxsRnJhbWVGb3JDYXRj
aCkKLSAgICAgICAgQVNTRVJUKGV4aXQubV9raW5kID09IEdlbmVyaWNVbndpbmQpOwotICAgIGlm
IChleGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpKQotICAgICAgICBBU1NFUlRfVU5VU0VEKHNjb3Bl
LCAhIXNjb3BlLmV4Y2VwdGlvbigpKTsKLSAgICAKLSAgICBwcmVwYXJlQ29kZU9yaWdpbkZvck9T
UkV4aXQoZXhlYywgZXhpdC5tX2NvZGVPcmlnaW4pOwotCi0gICAgLy8gQ29tcHV0ZSB0aGUgdmFs
dWUgcmVjb3Zlcmllcy4KLSAgICBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiBvcGVyYW5kczsKLSAg
ICBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnKCktPnZhcmlhYmxlRXZlbnRTdHJlYW0ucmVjb25z
dHJ1Y3QoY29kZUJsb2NrLCBleGl0Lm1fY29kZU9yaWdpbiwgY29kZUJsb2NrLT5qaXRDb2RlKCkt
PmRmZygpLT5taW5pZmllZERGRywgZXhpdC5tX3N0cmVhbUluZGV4LCBvcGVyYW5kcyk7Ci0KLSAg
ICBTcGVjdWxhdGlvblJlY292ZXJ5KiByZWNvdmVyeSA9IDA7Ci0gICAgaWYgKGV4aXQubV9yZWNv
dmVyeUluZGV4ICE9IFVJTlRfTUFYKQotICAgICAgICByZWNvdmVyeSA9ICZjb2RlQmxvY2stPmpp
dENvZGUoKS0+ZGZnKCktPnNwZWN1bGF0aW9uUmVjb3ZlcnlbZXhpdC5tX3JlY292ZXJ5SW5kZXhd
OwotCi0gICAgewotICAgICAgICBDQ2FsbEhlbHBlcnMgaml0KGNvZGVCbG9jayk7Ci0KLSAgICAg
ICAgaWYgKGV4aXQubV9raW5kID09IEdlbmVyaWNVbndpbmQpIHsKLSAgICAgICAgICAgIC8vIFdl
IGFyZSBhY3RpbmcgYXMgYSBkZWZhY3RvIG9wX2NhdGNoIGJlY2F1c2Ugd2UgYXJyaXZlIGhlcmUg
ZnJvbSBnZW5lcmljVW53aW5kKCkuCi0gICAgICAgICAgICAvLyBTbywgd2UgbXVzdCByZXN0b3Jl
IG91ciBjYWxsIGZyYW1lIGFuZCBzdGFjayBwb2ludGVyLgotICAgICAgICAgICAgaml0LnJlc3Rv
cmVDYWxsZWVTYXZlc0Zyb21WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcigqdm0pOwotICAg
ICAgICAgICAgaml0LmxvYWRQdHIodm0tPmFkZHJlc3NPZkNhbGxGcmFtZUZvckNhdGNoKCksIEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgfQotICAgICAgICBqaXQuYWRkUHRy
KAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY29kZUJsb2NrLT5zdGFj
a1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLAotICAgICAgICAgICAgR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIp
OworICAgIEFTU0VSVCghdm0uY2FsbEZyYW1lRm9yQ2F0Y2ggfHwgZXhpdC5tX2tpbmQgPT0gR2Vu
ZXJpY1Vud2luZCk7CisgICAgQVNTRVJUX1VOVVNFRChzY29wZSwgIWV4aXQuaXNFeGNlcHRpb25I
YW5kbGVyKCkgfHwgISFzY29wZS5leGNlcHRpb24oKSk7CisKKyAgICBpZiAoVU5MSUtFTFkoIWV4
aXQuZXhpdFN0YXRlKSkgeworICAgICAgICAvLyBFbnN1cmUgd2UgaGF2ZSBiYXNlbGluZSBjb2Rl
QmxvY2tzIHRvIE9TUiBleGl0IHRvLgorICAgICAgICBwcmVwYXJlQ29kZU9yaWdpbkZvck9TUkV4
aXQoZXhlYywgZXhpdC5tX2NvZGVPcmlnaW4pOwogCi0gICAgICAgIGppdC5qaXRBc3NlcnRIYXNW
YWxpZENhbGxGcmFtZSgpOworICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0g
Y29kZUJsb2NrLT5iYXNlbGluZUFsdGVybmF0aXZlKCk7CisgICAgICAgIEFTU0VSVChiYXNlbGlu
ZUNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKIAotICAgICAg
ICBpZiAoVU5MSUtFTFkodm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlciAmJiBjb2RlQmxvY2stPmpp
dENvZGUoKS0+ZGZnQ29tbW9uKCktPmNvbXBpbGF0aW9uKSkgewotICAgICAgICAgICAgUHJvZmls
ZXI6OkRhdGFiYXNlJiBkYXRhYmFzZSA9ICp2bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyOworICAg
ICAgICAvLyBDb21wdXRlIHRoZSB2YWx1ZSByZWNvdmVyaWVzLgorICAgICAgICBPcGVyYW5kczxW
YWx1ZVJlY292ZXJ5PiBvcGVyYW5kczsKKyAgICAgICAgY29kZUJsb2NrLT5qaXRDb2RlKCktPmRm
ZygpLT52YXJpYWJsZUV2ZW50U3RyZWFtLnJlY29uc3RydWN0KGNvZGVCbG9jaywgZXhpdC5tX2Nv
ZGVPcmlnaW4sIGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKS0+bWluaWZpZWRERkcsIGV4aXQu
bV9zdHJlYW1JbmRleCwgb3BlcmFuZHMpOworCisgICAgICAgIFNwZWN1bGF0aW9uUmVjb3Zlcnkq
IHJlY292ZXJ5ID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGV4aXQubV9yZWNvdmVyeUluZGV4ICE9
IFVJTlRfTUFYKQorICAgICAgICAgICAgcmVjb3ZlcnkgPSAmY29kZUJsb2NrLT5qaXRDb2RlKCkt
PmRmZygpLT5zcGVjdWxhdGlvblJlY292ZXJ5W2V4aXQubV9yZWNvdmVyeUluZGV4XTsKKworICAg
ICAgICBpbnQzMl90IGFjdGl2ZVRocmVzaG9sZCA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hZGp1c3Rl
ZENvdW50ZXJWYWx1ZShPcHRpb25zOjp0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1V
cCgpKTsKKyAgICAgICAgZG91YmxlIGFkanVzdGVkVGhyZXNob2xkID0gYXBwbHlNZW1vcnlVc2Fn
ZUhldXJpc3RpY3MoYWN0aXZlVGhyZXNob2xkLCBiYXNlbGluZUNvZGVCbG9jayk7CisgICAgICAg
IEFTU0VSVChhZGp1c3RlZFRocmVzaG9sZCA+IDApOworICAgICAgICBhZGp1c3RlZFRocmVzaG9s
ZCA9IEJhc2VsaW5lRXhlY3V0aW9uQ291bnRlcjo6Y2xpcHBlZFRocmVzaG9sZChjb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpLCBhZGp1c3RlZFRocmVzaG9sZCk7CisKKyAgICAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2tGb3JFeGl0ID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGlu
ZUNvZGVCbG9jayhleGl0Lm1fY29kZU9yaWdpbiwgYmFzZWxpbmVDb2RlQmxvY2spOworICAgICAg
ICBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiBkZWNvZGVkQ29kZU1hcDsKKyAgICAg
ICAgY29kZUJsb2NrRm9yRXhpdC0+aml0Q29kZU1hcCgpLT5kZWNvZGUoZGVjb2RlZENvZGVNYXAp
OworCisgICAgICAgIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCogbWFwcGluZyA9IGJpbmFyeVNl
YXJjaDxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQsIHVuc2lnbmVkPihkZWNvZGVkQ29kZU1hcCwg
ZGVjb2RlZENvZGVNYXAuc2l6ZSgpLCBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBC
eXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ6OmdldEJ5dGVjb2RlSW5kZXgpOworCisgICAgICAgIEFT
U0VSVChtYXBwaW5nKTsKKyAgICAgICAgQVNTRVJUKG1hcHBpbmctPm1fYnl0ZWNvZGVJbmRleCA9
PSBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKKworICAgICAgICBwdHJkaWZmX3Qg
ZmluYWxTdGFja1BvaW50ZXJPZmZzZXQgPSBjb2RlQmxvY2tGb3JFeGl0LT5zdGFja1BvaW50ZXJP
ZmZzZXQoKSAqIHNpemVvZihSZWdpc3Rlcik7CisKKyAgICAgICAgdm9pZCoganVtcFRhcmdldCA9
IGNvZGVCbG9ja0ZvckV4aXQtPmppdENvZGUoKS0+ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldCht
YXBwaW5nLT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKKworICAgICAgICBleGl0LmV4aXRTdGF0ZSA9
IGFkb3B0UmVmKG5ldyBPU1JFeGl0U3RhdGUoZXhpdCwgY29kZUJsb2NrLCBiYXNlbGluZUNvZGVC
bG9jaywgb3BlcmFuZHMsIHJlY292ZXJ5LCBmaW5hbFN0YWNrUG9pbnRlck9mZnNldCwgYWN0aXZl
VGhyZXNob2xkLCBhZGp1c3RlZFRocmVzaG9sZCwganVtcFRhcmdldCkpOworCisgICAgICAgIGlm
IChVTkxJS0VMWSh2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIgJiYgY29kZUJsb2NrLT5qaXRDb2Rl
KCktPmRmZ0NvbW1vbigpLT5jb21waWxhdGlvbikpIHsKKyAgICAgICAgICAgIFByb2ZpbGVyOjpE
YXRhYmFzZSYgZGF0YWJhc2UgPSAqdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyOwogICAgICAgICAg
ICAgUHJvZmlsZXI6OkNvbXBpbGF0aW9uKiBjb21waWxhdGlvbiA9IGNvZGVCbG9jay0+aml0Q29k
ZSgpLT5kZmdDb21tb24oKS0+Y29tcGlsYXRpb24uZ2V0KCk7CiAKICAgICAgICAgICAgIFByb2Zp
bGVyOjpPU1JFeGl0KiBwcm9maWxlckV4aXQgPSBjb21waWxhdGlvbi0+YWRkT1NSRXhpdCgKICAg
ICAgICAgICAgICAgICBleGl0SW5kZXgsIFByb2ZpbGVyOjpPcmlnaW5TdGFjayhkYXRhYmFzZSwg
Y29kZUJsb2NrLCBleGl0Lm1fY29kZU9yaWdpbiksCiAgICAgICAgICAgICAgICAgZXhpdC5tX2tp
bmQsIGV4aXQubV9raW5kID09IFVuY291bnRhYmxlSW52YWxpZGF0aW9uKTsKLSAgICAgICAgICAg
IGppdC5hZGQ2NChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgQ0NhbGxIZWxwZXJzOjpB
YnNvbHV0ZUFkZHJlc3MocHJvZmlsZXJFeGl0LT5jb3VudGVyQWRkcmVzcygpKSk7CisgICAgICAg
ICAgICBleGl0LmV4aXRTdGF0ZS0+cHJvZmlsZXJFeGl0ID0gcHJvZmlsZXJFeGl0OwogICAgICAg
ICB9CiAKLSAgICAgICAgY29tcGlsZUV4aXQoaml0LCAqdm0sIGV4aXQsIG9wZXJhbmRzLCByZWNv
dmVyeSk7Ci0KLSAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIGNvZGVCbG9jayk7
Ci0gICAgICAgIGV4aXQubV9jb2RlID0gRklOQUxJWkVfQ09ERV9JRigKLSAgICAgICAgICAgIHNo
b3VsZER1bXBEaXNhc3NlbWJseSgpIHx8IE9wdGlvbnM6OnZlcmJvc2VPU1IoKSB8fCBPcHRpb25z
Ojp2ZXJib3NlREZHT1NSRXhpdCgpLAotICAgICAgICAgICAgcGF0Y2hCdWZmZXIsCi0gICAgICAg
ICAgICAoIkRGRyBPU1IgZXhpdCAjJXUgKCVzLCAlcykgZnJvbSAlcywgd2l0aCBvcGVyYW5kcyA9
ICVzIiwKKyAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSB8fCBPcHRp
b25zOjp2ZXJib3NlREZHT1NSRXhpdCgpKSkgeworICAgICAgICAgICAgZGF0YUxvZ0YoIkRGRyBP
U1IgZXhpdCAjJXUgKCVzLCAlcykgZnJvbSAlcywgd2l0aCBvcGVyYW5kcyA9ICVzIiwKICAgICAg
ICAgICAgICAgICBleGl0SW5kZXgsIHRvQ1N0cmluZyhleGl0Lm1fY29kZU9yaWdpbikuZGF0YSgp
LAogICAgICAgICAgICAgICAgIGV4aXRLaW5kVG9TdHJpbmcoZXhpdC5tX2tpbmQpLCB0b0NTdHJp
bmcoKmNvZGVCbG9jaykuZGF0YSgpLAotICAgICAgICAgICAgICAgIHRvQ1N0cmluZyhpZ25vcmlu
Z0NvbnRleHQ8RHVtcENvbnRleHQ+KG9wZXJhbmRzKSkuZGF0YSgpKSk7CisgICAgICAgICAgICAg
ICAgdG9DU3RyaW5nKGlnbm9yaW5nQ29udGV4dDxEdW1wQ29udGV4dD4ob3BlcmFuZHMpKS5kYXRh
KCkpOworICAgICAgICB9CiAgICAgfQogCi0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1w
KGV4aXQuY29kZUxvY2F0aW9uRm9yUmVwYXRjaChjb2RlQmxvY2spLCBDb2RlTG9jYXRpb25MYWJl
bChleGl0Lm1fY29kZS5jb2RlKCkpKTsKKyAgICBPU1JFeGl0U3RhdGUmIGV4aXRTdGF0ZSA9ICpl
eGl0LmV4aXRTdGF0ZS5nZXQoKTsKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0g
ZXhpdFN0YXRlLmJhc2VsaW5lQ29kZUJsb2NrOworICAgIEFTU0VSVChiYXNlbGluZUNvZGVCbG9j
ay0+aml0VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKIAotICAgIHZtLT5vc3JFeGl0
SnVtcERlc3RpbmF0aW9uID0gZXhpdC5tX2NvZGUuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7
Ci19CisgICAgT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4mIG9wZXJhbmRzID0gZXhpdFN0YXRlLm9w
ZXJhbmRzOworICAgIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5ID0gZXhpdFN0YXRlLnJl
Y292ZXJ5OwogCi12b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBW
TSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0IE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+
JiBvcGVyYW5kcywgU3BlY3VsYXRpb25SZWNvdmVyeSogcmVjb3ZlcnkpCi17Ci0gICAgaml0Lmpp
dEFzc2VydFRhZ3NJblBsYWNlKCk7CisgICAgaWYgKGV4aXQubV9raW5kID09IEdlbmVyaWNVbndp
bmQpIHsKKyAgICAgICAgLy8gV2UgYXJlIGFjdGluZyBhcyBhIGRlZmFjdG8gb3BfY2F0Y2ggYmVj
YXVzZSB3ZSBhcnJpdmUgaGVyZSBmcm9tIGdlbmVyaWNVbndpbmQoKS4KKyAgICAgICAgLy8gU28s
IHdlIG11c3QgcmVzdG9yZSBvdXIgY2FsbCBmcmFtZSBhbmQgc3RhY2sgcG9pbnRlci4KKyAgICAg
ICAgcmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKGNv
bnRleHQpOworICAgICAgICBBU1NFUlQoY29udGV4dC5mcCgpID09IHZtLmNhbGxGcmFtZUZvckNh
dGNoKTsKKyAgICB9CisgICAgY29udGV4dC5zcCgpID0gY29udGV4dC5mcDx1aW50OF90Kj4oKSAr
IChjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSk7CiAK
LSAgICAvLyBQcm8tZm9ybWEgc3R1ZmYuCi0gICAgaWYgKE9wdGlvbnM6OnByaW50RWFjaE9TUkV4
aXQoKSkgewotICAgICAgICBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8qIGRlYnVnSW5mbyA9
IG5ldyBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm87Ci0gICAgICAgIGRlYnVnSW5mby0+Y29k
ZUJsb2NrID0gaml0LmNvZGVCbG9jaygpOwotICAgICAgICBkZWJ1Z0luZm8tPmtpbmQgPSBleGl0
Lm1fa2luZDsKLSAgICAgICAgZGVidWdJbmZvLT5ieXRlY29kZU9mZnNldCA9IGV4aXQubV9jb2Rl
T3JpZ2luLmJ5dGVjb2RlSW5kZXg7CisgICAgQVNTRVJUKCEoY29udGV4dC5mcDx1aW50cHRyX3Q+
KCkgJiAweDcpKTsKIAotICAgICAgICBqaXQuZGVidWdDYWxsKHZtLCBkZWJ1Z09wZXJhdGlvblBy
aW50U3BlY3VsYXRpb25GYWlsdXJlLCBkZWJ1Z0luZm8pOwotICAgIH0KKyAgICBpZiAoZXhpdFN0
YXRlLnByb2ZpbGVyRXhpdCkKKyAgICAgICAgZXhpdFN0YXRlLnByb2ZpbGVyRXhpdC0+aW5jQ291
bnQoKTsKKworICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OworICAgIEZyYW1lIGZyYW1lKGNw
dS5mcCgpLCBjb250ZXh0LnN0YWNrKCkpOworCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBBU1NF
UlQoY3B1LmdwcihHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpID09IFRhZ1R5cGVOdW1i
ZXIpOworICAgIEFTU0VSVChjcHUuZ3ByKEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikgPT0gVGFn
TWFzayk7CisjZW5kaWYKKworICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpwcmludEVhY2hPU1JF
eGl0KCkpKQorICAgICAgICBwcmludE9TUkV4aXQoY29udGV4dCwgdm0ub3NyRXhpdEluZGV4LCBl
eGl0KTsKIAogICAgIC8vIFBlcmZvcm0gc3BlY3VsYXRpb24gcmVjb3ZlcnkuIFRoaXMgb25seSBj
b21lcyBpbnRvIHBsYXkgd2hlbiBhbiBvcGVyYXRpb24KICAgICAvLyBzdGFydHMgbXV0YXRpbmcg
c3RhdGUgYmVmb3JlIHZlcmlmeWluZyB0aGUgc3BlY3VsYXRpb24gaXQgaGFzIGFscmVhZHkgbWFk
ZS4KQEAgLTI0MywyMiArNDU5LDI0IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxI
ZWxwZXJzJiAKICAgICBpZiAocmVjb3ZlcnkpIHsKICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS0+
dHlwZSgpKSB7CiAgICAgICAgIGNhc2UgU3BlY3VsYXRpdmVBZGQ6Ci0gICAgICAgICAgICBqaXQu
c3ViMzIocmVjb3ZlcnktPnNyYygpLCByZWNvdmVyeS0+ZGVzdCgpKTsKKyAgICAgICAgICAgIGNw
dS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgPSBjcHUuZ3ByPHVpbnQzMl90PihyZWNvdmVyeS0+ZGVz
dCgpKSAtIGNwdS5ncHI8dWludDMyX3Q+KHJlY292ZXJ5LT5zcmMoKSk7CiAjaWYgVVNFKEpTVkFM
VUU2NCkKLSAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
ciwgcmVjb3ZlcnktPmRlc3QoKSk7CisgICAgICAgICAgICBBU1NFUlQoIShjcHUuZ3ByKHJlY292
ZXJ5LT5kZXN0KCkpID4+IDMyKSk7CisgICAgICAgICAgICBjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0
KCkpIHw9IFRhZ1R5cGVOdW1iZXI7CiAjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAg
ICAgIGNhc2UgU3BlY3VsYXRpdmVBZGRJbW1lZGlhdGU6Ci0gICAgICAgICAgICBqaXQuc3ViMzIo
QXNzZW1ibHlIZWxwZXJzOjpJbW0zMihyZWNvdmVyeS0+aW1tZWRpYXRlKCkpLCByZWNvdmVyeS0+
ZGVzdCgpKTsKKyAgICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgPSAoY3B1Lmdw
cjx1aW50MzJfdD4ocmVjb3ZlcnktPmRlc3QoKSkgLSByZWNvdmVyeS0+aW1tZWRpYXRlKCkpOwog
I2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBqaXQub3I2NChHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIsIHJlY292ZXJ5LT5kZXN0KCkpOworICAgICAgICAgICAgQVNTRVJUKCEo
Y3B1LmdwcihyZWNvdmVyeS0+ZGVzdCgpKSA+PiAzMikpOworICAgICAgICAgICAgY3B1Lmdwcihy
ZWNvdmVyeS0+ZGVzdCgpKSB8PSBUYWdUeXBlTnVtYmVyOwogI2VuZGlmCiAgICAgICAgICAgICBi
cmVhazsKIAogICAgICAgICBjYXNlIEJvb2xlYW5TcGVjdWxhdGlvbkNoZWNrOgogI2lmIFVTRShK
U1ZBTFVFNjQpCi0gICAgICAgICAgICBqaXQueG9yNjQoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCByZWNvdmVyeS0+ZGVzdCgp
KTsKKyAgICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgPSBjcHUuZ3ByKHJlY292
ZXJ5LT5kZXN0KCkpIF4gVmFsdWVGYWxzZTsKICNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAK
QEAgLTI4MSwzOTUgKzQ5OSwxMDYgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhl
bHBlcnMmIAogICAgICAgICAgICAgLy8gcHJvcGVydHkgYWNjZXNzLCBvciBkdWUgdG8gYW4gYXJy
YXkgcHJvZmlsZSkuCiAKICAgICAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGV4aXQu
bV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGU7Ci0gICAgICAgICAgICBpZiAoQXJyYXlQcm9maWxl
KiBhcnJheVByb2ZpbGUgPSBqaXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoY29kZU9yaWdpbiktPmdl
dEFycmF5UHJvZmlsZShjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKSB7Ci0jaWYgVVNFKEpTVkFM
VUU2NCkKLSAgICAgICAgICAgICAgICBHUFJSZWcgdXNlZFJlZ2lzdGVyOwotICAgICAgICAgICAg
ICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0FkZHJlc3MoKSkKLSAgICAgICAgICAgICAg
ICAgICAgdXNlZFJlZ2lzdGVyID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UuYmFzZSgpOwotICAgICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVyID0gZXhpdC5t
X2pzVmFsdWVTb3VyY2UuZ3ByKCk7Ci0jZWxzZQotICAgICAgICAgICAgICAgIEdQUlJlZyB1c2Vk
UmVnaXN0ZXIxOwotICAgICAgICAgICAgICAgIEdQUlJlZyB1c2VkUmVnaXN0ZXIyOwotICAgICAg
ICAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0FkZHJlc3MoKSkgewotICAgICAg
ICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXIxID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UuYmFzZSgp
OwotICAgICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXIyID0gSW52YWxpZEdQUlJlZzsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXIx
ID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaGFzS25vd25UYWcoKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHVzZWRSZWdpc3RlcjIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXIyID0gZXhpdC5t
X2pzVmFsdWVTb3VyY2UudGFnR1BSKCk7Ci0gICAgICAgICAgICAgICAgfQotI2VuZGlmCi0KLSAg
ICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaDE7Ci0gICAgICAgICAgICAgICAgR1BSUmVnIHNj
cmF0Y2gyOwotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICAgICAgc2NyYXRjaDEgPSBB
c3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIodXNlZFJlZ2lzdGVyKTsKLSAgICAgICAg
ICAgICAgICBzY3JhdGNoMiA9IEFzc2VtYmx5SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUih1c2Vk
UmVnaXN0ZXIsIHNjcmF0Y2gxKTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgc2NyYXRjaDEgPSBB
c3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIodXNlZFJlZ2lzdGVyMSwgdXNlZFJlZ2lz
dGVyMik7Ci0gICAgICAgICAgICAgICAgc2NyYXRjaDIgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVj
dFNjcmF0Y2hHUFIodXNlZFJlZ2lzdGVyMSwgdXNlZFJlZ2lzdGVyMiwgc2NyYXRjaDEpOwotI2Vu
ZGlmCi0KLSAgICAgICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGppdC5wdXNoVG9TYXZlKHNjcmF0Y2gxKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnB1
c2hUb1NhdmUoc2NyYXRjaDIpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGppdC5wdXNoKHNjcmF0Y2gxKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnB1
c2goc2NyYXRjaDIpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIEdQUlJl
ZyB2YWx1ZTsKLSAgICAgICAgICAgICAgICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaXNBZGRy
ZXNzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzY3JhdGNoMTsKLSAgICAgICAg
ICAgICAgICAgICAgaml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKGV4aXQubV9q
c1ZhbHVlU291cmNlLmFzQWRkcmVzcygpKSwgdmFsdWUpOwotICAgICAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGV4aXQubV9qc1ZhbHVlU291cmNlLnBheWxv
YWRHUFIoKTsKLQotICAgICAgICAgICAgICAgIGppdC5sb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjpB
ZGRyZXNzKHZhbHVlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoMSk7Ci0g
ICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoc2NyYXRjaDEsIGFycmF5UHJvZmlsZS0+YWRkcmVz
c09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAg
ICAgICAgIGppdC5sb2FkOChBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3ModmFsdWUsIEpTQ2VsbDo6
aW5kZXhpbmdUeXBlQW5kTWlzY09mZnNldCgpKSwgc2NyYXRjaDEpOwotI2Vsc2UKLSAgICAgICAg
ICAgICAgICBqaXQubG9hZDgoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gxLCBTdHJ1
Y3R1cmU6OmluZGV4aW5nVHlwZUluY2x1ZGluZ0hpc3RvcnlPZmZzZXQoKSksIHNjcmF0Y2gxKTsK
LSNlbmRpZgotICAgICAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3Rl
ZEltbTMyKDEpLCBzY3JhdGNoMik7Ci0gICAgICAgICAgICAgICAgaml0LmxzaGlmdDMyKHNjcmF0
Y2gxLCBzY3JhdGNoMik7Ci0gICAgICAgICAgICAgICAgaml0Lm9yMzIoc2NyYXRjaDIsIEFzc2Vt
Ymx5SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFycmF5UHJvZmlsZS0+YWRkcmVzc09mQXJyYXlN
b2RlcygpKSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaDIpOwotICAgICAgICAgICAgICAgICAg
ICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2gxKTsKLSAgICAgICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICBqaXQucG9wKHNjcmF0Y2gyKTsKLSAgICAgICAgICAgICAgICAg
ICAgaml0LnBvcChzY3JhdGNoMSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgQ29k
ZUJsb2NrKiBwcm9maWxlZENvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5k
QmFzZWxpbmVDb2RlQmxvY2soY29kZU9yaWdpbiwgYmFzZWxpbmVDb2RlQmxvY2spOworICAgICAg
ICAgICAgaWYgKEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gcHJvZmlsZWRDb2RlQmxvY2st
PmdldEFycmF5UHJvZmlsZShjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKSB7CisgICAgICAgICAg
ICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBqc1ZhbHVlRm9yKGNwdSwgZXhpdC5tX2pzVmFs
dWVTb3VyY2UpLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICAgICAgICAgIGFycmF5
UHJvZmlsZS0+b2JzZXJ2ZVN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgIGFy
cmF5UHJvZmlsZS0+b2JzZXJ2ZUFycmF5TW9kZShhcnJheU1vZGVGcm9tU3RydWN0dXJlKHN0cnVj
dHVyZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKE1ldGhvZE9m
R2V0dGluZ0FWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGV4aXQubV92YWx1ZVByb2ZpbGUpIHsKLSNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmlz
QWRkcmVzcygpKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgYmUgc3VyZSB0aGF0IHdl
IGhhdmUgYSBzcGFyZSByZWdpc3Rlci4gU28gdXNlIHRoZSB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIs
Ci0gICAgICAgICAgICAgICAgLy8gc2luY2Ugd2Uga25vdyBob3cgdG8gcmVzdG9yZSBpdC4KLSAg
ICAgICAgICAgICAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhleGl0Lm1f
anNWYWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSksIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cik7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVl
UmVncyhHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgICAgICBq
aXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChUYWdUeXBlTnVtYmVyKSwgR1BS
SW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoZXhpdC5t
X2pzVmFsdWVTb3VyY2UuZ3ByKCkpKTsKLSNlbHNlIC8vIG5vdCBVU0UoSlNWQUxVRTY0KQotICAg
ICAgICAgICAgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmlzQWRkcmVzcygpKSB7Ci0gICAgICAg
ICAgICAgICAgLy8gU2F2ZSBhIHJlZ2lzdGVyIHNvIHdlIGNhbiB1c2UgaXQuCi0gICAgICAgICAg
ICAgICAgR1BSUmVnIHNjcmF0Y2hQYXlsb2FkID0gQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3Jh
dGNoR1BSKGV4aXQubV9qc1ZhbHVlU291cmNlLmJhc2UoKSk7Ci0gICAgICAgICAgICAgICAgR1BS
UmVnIHNjcmF0Y2hUYWcgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIoZXhpdC5t
X2pzVmFsdWVTb3VyY2UuYmFzZSgpLCBzY3JhdGNoUGF5bG9hZCk7Ci0gICAgICAgICAgICAgICAg
aml0LnB1c2hUb1NhdmUoc2NyYXRjaFBheWxvYWQpOwotICAgICAgICAgICAgICAgIGppdC5wdXNo
VG9TYXZlKHNjcmF0Y2hUYWcpOwotCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mgc2NyYXRj
aChzY3JhdGNoVGFnLCBzY3JhdGNoUGF5bG9hZCk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgaml0LmxvYWRWYWx1ZShleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSwg
c2NyYXRjaCk7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBz
Y3JhdGNoKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0
b3JlKHNjcmF0Y2hUYWcpOwotICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRj
aFBheWxvYWQpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5o
YXNLbm93blRhZygpKSB7Ci0gICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hUYWcgPSBBc3Nl
bWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIoZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5bG9h
ZEdQUigpKTsKLSAgICAgICAgICAgICAgICBqaXQucHVzaFRvU2F2ZShzY3JhdGNoVGFnKTsKLSAg
ICAgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihleGl0
Lm1fanNWYWx1ZVNvdXJjZS50YWcoKSksIHNjcmF0Y2hUYWcpOwotICAgICAgICAgICAgICAgIEpT
VmFsdWVSZWdzIHZhbHVlKHNjcmF0Y2hUYWcsIGV4aXQubV9qc1ZhbHVlU291cmNlLnBheWxvYWRH
UFIoKSk7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCB2YWx1
ZSk7Ci0gICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3JhdGNoVGFnKTsKLSAgICAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGpp
dCwgZXhpdC5tX2pzVmFsdWVTb3VyY2UucmVncygpKTsKLSNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0
KQotICAgICAgICB9CisgICAgICAgIGlmIChNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHBy
b2ZpbGUgPSBleGl0Lm1fdmFsdWVQcm9maWxlKQorICAgICAgICAgICAgcHJvZmlsZS5yZXBvcnRW
YWx1ZShqc1ZhbHVlRm9yKGNwdSwgZXhpdC5tX2pzVmFsdWVTb3VyY2UpKTsKICAgICB9CiAKLSAg
ICAvLyBXaGF0IGZvbGxvd3MgaXMgYW4gaW50ZW50aW9uYWxseSBzaW1wbGUgT1NSIGV4aXQgaW1w
bGVtZW50YXRpb24gdGhhdCBnZW5lcmF0ZXMKLSAgICAvLyBmYWlybHkgcG9vciBjb2RlIGJ1dCBp
cyB2ZXJ5IGVhc3kgdG8gaGFjay4gSW4gcGFydGljdWxhciwgaXQgZHVtcHMgYWxsIHN0YXRlIHRo
YXQKLSAgICAvLyBuZWVkcyBjb252ZXJzaW9uIGludG8gYSBzY3JhdGNoIGJ1ZmZlciBzbyB0aGF0
IGluIHN0ZXAgNiwgd2hlcmUgd2UgYWN0dWFsbHkgZG8gdGhlCi0gICAgLy8gY29udmVyc2lvbnMs
IHdlIGtub3cgdGhhdCBhbGwgdGVtcCByZWdpc3RlcnMgYXJlIGZyZWUgdG8gdXNlIGFuZCB0aGUg
dmFyaWFibGUgaXMKLSAgICAvLyBkZWZpbml0ZWx5IGluIGEgd2VsbC1rbm93biBzcG90IGluIHRo
ZSBzY3JhdGNoIGJ1ZmZlciByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgaGFkCi0gICAgLy8gb3Jp
Z2luYWxseSBiZWVuIGluIGEgcmVnaXN0ZXIgb3Igc3BpbGxlZC4gVGhpcyBhbGxvd3MgdXMgdG8g
ZGVjb3VwbGUgIndoZXJlIHdhcwotICAgIC8vIHRoZSB2YXJpYWJsZSIgZnJvbSAiaG93IHdhcyBp
dCByZXByZXNlbnRlZCIuIENvbnNpZGVyIHRoYXQgdGhlCi0gICAgLy8gSW50MzJEaXNwbGFjZWRJ
bkpTU3RhY2sgcmVjb3Zlcnk6IGl0IHRlbGxzIHVzIHRoYXQgdGhlIHZhbHVlIGlzIGluIGEKLSAg
ICAvLyBwYXJ0aWN1bGFyIHBsYWNlIGFuZCB0aGF0IHRoYXQgcGxhY2UgaG9sZHMgYW4gdW5ib3hl
ZCBpbnQzMi4gV2UgaGF2ZSB0d28gZGlmZmVyZW50Ci0gICAgLy8gcGxhY2VzIHRoYXQgYSB2YWx1
ZSBjb3VsZCBiZSAoZGlzcGxhY2VkLCByZWdpc3RlcikgYW5kIGEgYnVuY2ggb2YgZGlmZmVyZW50
Ci0gICAgLy8gd2F5cyBvZiByZXByZXNlbnRpbmcgYSB2YWx1ZS4gVGhlIG51bWJlciBvZiByZWNv
dmVyaWVzIGlzIHR3byAqIGEgYnVuY2guIFRoZSBjb2RlCi0gICAgLy8gYmVsb3cgbWVhbnMgdGhh
dCB3ZSBoYXZlIHRvIGhhdmUgdHdvICsgYSBidW5jaCBjYXNlcyByYXRoZXIgdGhhbiB0d28gKiBh
IGJ1bmNoLgotICAgIC8vIE9uY2Ugd2UgaGF2ZSBsb2FkZWQgdGhlIHZhbHVlIGZyb20gd2hlcmV2
ZXIgaXQgd2FzLCB0aGUgcmVib3hpbmcgaXMgdGhlIHNhbWUKLSAgICAvLyByZWdhcmRsZXNzIG9m
IGl0cyBsb2NhdGlvbi4gTGlrZXdpc2UsIGJlZm9yZSB3ZSBkbyB0aGUgcmVib3hpbmcsIHRoZSB3
YXkgd2UgZ2V0IHRvCi0gICAgLy8gdGhlIHZhbHVlIChpLmUuIHdoZXJlIHdlIGxvYWQgaXQgZnJv
bSkgaXMgdGhlIHNhbWUgcmVnYXJkbGVzcyBvZiBpdHMgdHlwZS4gQmVjYXVzZQotICAgIC8vIHRo
ZSBjb2RlIGJlbG93IGFsd2F5cyBkdW1wcyBldmVyeXRoaW5nIGludG8gYSBzY3JhdGNoIGJ1ZmZl
ciBmaXJzdCwgdGhlIHR3bwotICAgIC8vIHF1ZXN0aW9ucyBiZWNvbWUgb3J0aG9nb25hbCwgd2hp
Y2ggc2ltcGxpZmllcyBhZGRpbmcgbmV3IHR5cGVzIGFuZCBhZGRpbmcgbmV3Ci0gICAgLy8gbG9j
YXRpb25zLgotICAgIC8vCi0gICAgLy8gVGhpcyByYWlzZXMgdGhlIHF1ZXN0aW9uOiBkb2VzIHVz
aW5nIHN1Y2ggYSBzdWJvcHRpbWFsIGltcGxlbWVudGF0aW9uIG9mIE9TUiBleGl0LAotICAgIC8v
IHdoZXJlIHdlIGFsd2F5cyBlbWl0IGNvZGUgdG8gZHVtcCBhbGwgc3RhdGUgaW50byBhIHNjcmF0
Y2ggYnVmZmVyIG9ubHkgdG8gdGhlbgotICAgIC8vIGR1bXAgaXQgcmlnaHQgYmFjayBpbnRvIHRo
ZSBzdGFjaywgaHVydCB1cyBpbiBhbnkgd2F5PyBUaGUgYXNud2VyIGlzIHRoYXQgT1NSIGV4aXRz
Ci0gICAgLy8gYXJlIHJhcmUuIE91ciB0aWVyaW5nIHN0cmF0ZWd5IGVuc3VyZXMgdGhpcy4gVGhp
cyBpcyBiZWNhdXNlIGlmIGFuIE9TUiBleGl0IGlzCi0gICAgLy8gdGFrZW4gbW9yZSB0aGFuIH4x
MDAgdGltZXMsIHdlIGpldHRpc29uIHRoZSBERkcgY29kZSBibG9jayBhbG9uZyB3aXRoIGFsbCBv
ZiBpdHMKLSAgICAvLyBleGl0cy4gSXQgaXMgaW1wb3NzaWJsZSBmb3IgYW4gT1NSIGV4aXQgLSBp
LmUuIHRoZSBjb2RlIHdlIGNvbXBpbGUgYmVsb3cgLSB0bwotICAgIC8vIGV4ZWN1dGUgZnJlcXVl
bnRseSBlbm91Z2ggZm9yIHRoZSBjb2RlZ2VuIHRvIG1hdHRlciB0aGF0IG11Y2guIEl0IHByb2Jh
Ymx5IG1hdHRlcnMKLSAgICAvLyBlbm91Z2ggdGhhdCB3ZSBkb24ndCB3YW50IHRvIHR1cm4gdGhp
cyBpbnRvIHNvbWUgc3VwZXItc2xvdyBmdW5jdGlvbiBjYWxsLCBidXQgc28KLSAgICAvLyBsb25n
IGFzIHdlJ3JlIGdlbmVyYXRpbmcgc3RyYWlnaHQtbGluZSBjb2RlLCB0aGF0IGNvZGUgY2FuIGJl
IHByZXR0eSBiYWQuIEFsc28KLSAgICAvLyBiZWNhdXNlIHdlIHRlbmQgdG8gZXhpdCBvbmx5IGFs
b25nIG9uZSBPU1IgZXhpdCBmcm9tIGFueSBERkcgY29kZSBibG9jayAtIHRoYXQncyBhbgotICAg
IC8vIGVtcGlyaWNhbCByZXN1bHQgdGhhdCB3ZSdyZSBleHRyZW1lbHkgY29uZmlkZW50IGFib3V0
IC0gdGhlIGNvZGUgc2l6ZSBvZiB0aGlzCi0gICAgLy8gZG9lc24ndCBtYXR0ZXIgbXVjaC4gSGVu
Y2UgYW55IGF0dGVtcHQgdG8gb3B0aW1pemUgdGhlIGNvZGVnZW4gaGVyZSBpcyBqdXN0IHB1cmVs
eQotICAgIC8vIGhhcm1mdWwgdG8gdGhlIHN5c3RlbTogaXQgcHJvYmFibHkgd29uJ3QgcmVkdWNl
IGVpdGhlciBuZXQgbWVtb3J5IHVzYWdlIG9yIG5ldAotICAgIC8vIGV4ZWN1dGlvbiB0aW1lLiBJ
dCB3aWxsIG9ubHkgcHJldmVudCB1cyBmcm9tIGNsZWFubHkgZGVjb3VwbGluZyAid2hlcmUgd2Fz
IHRoZQotICAgIC8vIHZhcmlhYmxlIiBmcm9tICJob3cgd2FzIGl0IHJlcHJlc2VudGVkIiwgd2hp
Y2ggd2lsbCBtYWtlIGl0IG1vcmUgZGlmZmljdWx0IHRvIGFkZAotICAgIC8vIGZlYXR1cmVzIGlu
IHRoZSBmdXR1cmUgYW5kIGl0IHdpbGwgbWFrZSBpdCBoYXJkZXIgdG8gcmVhc29uIGFib3V0IGJ1
Z3MuCi0KLSAgICAvLyBTYXZlIGFsbCBzdGF0ZSBmcm9tIEdQUnMgaW50byB0aGUgc2NyYXRjaCBi
dWZmZXIuCi0KLSAgICBTY3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVmZmVyID0gdm0uc2NyYXRjaEJ1
ZmZlckZvclNpemUoc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIG9wZXJhbmRzLnNpemUoKSk7Ci0g
ICAgRW5jb2RlZEpTVmFsdWUqIHNjcmF0Y2ggPSBzY3JhdGNoQnVmZmVyID8gc3RhdGljX2Nhc3Q8
RW5jb2RlZEpTVmFsdWUqPihzY3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpIDogMDsKLQotICAg
IGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7ICsraW5kZXgp
IHsKLSAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5kc1tpbmRl
eF07Ci0KLSAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewotICAgICAgICBj
YXNlIFVuYm94ZWRJbnQzMkluR1BSOgotICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6Ci0j
aWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgY2FzZSBJbkdQUjoKLSAgICAgICAgY2FzZSBVbmJv
eGVkSW50NTJJbkdQUjoKLSAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NTJJbkdQUjoKLSAg
ICAgICAgICAgIGppdC5zdG9yZTY0KHJlY292ZXJ5LmdwcigpLCBzY3JhdGNoICsgaW5kZXgpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0jZWxzZQotICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5H
UFI6Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICByZWNvdmVyeS5n
cHIoKSwKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIEluUGFpcjoKLSAgICAgICAgICAgIGppdC5z
dG9yZTMyKAotICAgICAgICAgICAgICAgIHJlY292ZXJ5LnRhZ0dQUigpLAotICAgICAgICAgICAg
ICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRl
eCktPmFzQml0cy50YWcpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAg
ICAgcmVjb3ZlcnkucGF5bG9hZEdQUigpLAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8
RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2Fk
KTsKLSAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCi0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gQW5kIHZvaWxhLCBhbGwg
R1BScyBhcmUgZnJlZSB0byByZXVzZS4KLQotICAgIC8vIFNhdmUgYWxsIHN0YXRlIGZyb20gRlBS
cyBpbnRvIHRoZSBzY3JhdGNoIGJ1ZmZlci4KLQotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsg
aW5kZXggPCBvcGVyYW5kcy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgY29uc3QgVmFsdWVS
ZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5kc1tpbmRleF07Ci0KLSAgICAgICAgc3dpdGNoIChy
ZWNvdmVyeS50ZWNobmlxdWUoKSkgewotICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoK
LSAgICAgICAgY2FzZSBJbkZQUjoKLSAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAg
ICAgICAgICBqaXQuc3RvcmVEb3VibGUocmVjb3ZlcnkuZnByKCksIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKEdQUkluZm86OnJlZ1QwKSk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBO
b3csIGFsbCBGUFJzIGFyZSBhbHNvIGZyZWUuCi0KLSAgICAvLyBTYXZlIGFsbCBzdGF0ZSBmcm9t
IHRoZSBzdGFjayBpbnRvIHRoZSBzY3JhdGNoIGJ1ZmZlci4gRm9yIHNpbXBsaWNpdHkgd2UKLSAg
ICAvLyBkbyB0aGlzIGV2ZW4gZm9yIHN0YXRlIHRoYXQncyBhbHJlYWR5IGluIHRoZSByaWdodCBw
bGFjZSBvbiB0aGUgc3RhY2suCi0gICAgLy8gSXQgbWFrZXMgdGhpbmdzIHNpbXBsZXIgbGF0ZXIu
Ci0KLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyAr
K2luZGV4KSB7Ci0gICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFu
ZHNbaW5kZXhdOwotCi0gICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKLSAg
ICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgIGNhc2UgQ2VsbERpc3BsYWNl
ZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgotICAg
ICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICBjYXNlIERvdWJsZURp
c3BsYWNlZEluSlNTdGFjazoKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBjYXNlIEludDUy
RGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5K
U1N0YWNrOgotICAgICAgICAgICAgaml0LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NG
b3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAg
ICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKLSAgICAg
ICAgICAgIGJyZWFrOwotI2Vsc2UKLSAgICAgICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAgICAg
ICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkp
LAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5sb2Fk
MzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKHJlY292ZXJ5
LnZpcnR1YWxSZWdpc3RlcigpKSwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7Ci0g
ICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwK
LSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihz
Y3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFnKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAot
ICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxLAotICAgICAgICAgICAgICAgICZiaXR3aXNl
X2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5w
YXlsb2FkKTsKLSAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCi0KLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gTmVlZCB0byBl
bnN1cmUgdGhhdCB0aGUgc3RhY2sgcG9pbnRlciBhY2NvdW50cyBmb3IgdGhlIHdvcnN0LWNhc2Ug
c3RhY2sgdXNhZ2UgYXQgZXhpdC4gVGhpcwotICAgIC8vIGNvdWxkIHRvYXN0IHNvbWUgc3RhY2sg
dGhhdCB0aGUgREZHIHVzZWQuIFdlIG5lZWQgdG8gZG8gaXQgYmVmb3JlIHN0b3JpbmcgdG8gc3Rh
Y2sgb2Zmc2V0cwotICAgIC8vIHVzZWQgYnkgYmFzZWxpbmUuCi0gICAgaml0LmFkZFB0cigKLSAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoCi0gICAgICAgICAgICAtaml0LmNvZGVC
bG9jaygpLT5qaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JF
eGl0ICogc2l6ZW9mKFJlZ2lzdGVyKSksCi0gICAgICAgIENDYWxsSGVscGVyczo6ZnJhbWVQb2lu
dGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotCi0gICAg
Ly8gUmVzdG9yZSB0aGUgREZHIGNhbGxlZSBzYXZlcyBhbmQgdGhlbiBzYXZlIHRoZSBvbmVzIHRo
ZSBiYXNlbGluZSBKSVQgdXNlcy4KLSAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwot
ICAgIGppdC5lbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGppdC5iYXNlbGluZUNvZGVCbG9jaygpKTsK
LQotICAgIC8vIFRoZSB0YWcgcmVnaXN0ZXJzIGFyZSBuZWVkZWQgdG8gbWF0ZXJpYWxpemUgcmVj
b3ZlcmllcyBiZWxvdy4KLSAgICBqaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMo
KTsKLQotICAgIGlmIChleGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpKQotICAgICAgICBqaXQuY29w
eUNhbGxlZVNhdmVzVG9WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bSk7Ci0KICAgICAv
LyBEbyBhbGwgZGF0YSBmb3JtYXQgY29udmVyc2lvbnMgYW5kIHN0b3JlIHRoZSByZXN1bHRzIGlu
dG8gdGhlIHN0YWNrLgorICAgIC8vIE5vdGU6IHdlIG5lZWQgdG8gcmVjb3ZlciB2YWx1ZXMgYmVm
b3JlIHJlc3RvcmluZyBjYWxsZWUgc2F2ZSByZWdpc3RlcnMgYmVsb3cKKyAgICAvLyBiZWNhdXNl
IHRoZSByZWNvdmVyeSBtYXkgcmVseSBvbiB2YWx1ZXMgaW4gc29tZSBvZiBjYWxsZWUgc2F2ZSBy
ZWdpc3RlcnMuCiAKLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMu
c2l6ZSgpOyArK2luZGV4KSB7CisgICAgaW50IGNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lz
dGVycyA9IHN0YXRpY19jYXN0PGludD4oYmFzZWxpbmVDb2RlQmxvY2stPmNhbGxlZVNhdmVTcGFj
ZUFzVmlydHVhbFJlZ2lzdGVycygpKTsKKyAgICBzaXplX3QgbnVtYmVyT2ZPcGVyYW5kcyA9IG9w
ZXJhbmRzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbnVtYmVy
T2ZPcGVyYW5kczsgKytpbmRleCkgewogICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNv
dmVyeSA9IG9wZXJhbmRzW2luZGV4XTsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlZyA9IG9w
ZXJhbmRzLnZpcnR1YWxSZWdpc3RlckZvckluZGV4KGluZGV4KTsKIAotICAgICAgICBpZiAocmVn
LmlzTG9jYWwoKSAmJiByZWcudG9Mb2NhbCgpIDwgc3RhdGljX2Nhc3Q8aW50PihqaXQuYmFzZWxp
bmVDb2RlQmxvY2soKS0+Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpKQorICAg
ICAgICBpZiAocmVnLmlzTG9jYWwoKSAmJiByZWcudG9Mb2NhbCgpIDwgY2FsbGVlU2F2ZVNwYWNl
QXNWaXJ0dWFsUmVnaXN0ZXJzKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaW50
IG9wZXJhbmQgPSByZWcub2Zmc2V0KCk7CiAKICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNo
bmlxdWUoKSkgewogICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAg
IGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgZXhlYy0+cihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0
ZXIoKSkuanNWYWx1ZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgSW5G
UFI6CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIGNwdS5mcHI8SlNWYWx1
ZT4ocmVjb3ZlcnkuZnByKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworCiAjaWYgVVNFKEpTVkFM
VUU2NCkKICAgICAgICAgY2FzZSBJbkdQUjoKLSAgICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BS
OgotICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgIGNhc2UgQm9v
bGVhbkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIGppdC5sb2FkNjQoc2NyYXRjaCAr
IGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZv
OjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAg
ICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgY3B1LmdwcjxKU1ZhbHVlPihyZWNvdmVyeS5n
cHIoKSkpOwogICAgICAgICAgICAgYnJlYWs7Ci0jZWxzZSAvLyBub3QgVVNFKEpTVkFMVUU2NCkK
KyNlbHNlCiAgICAgICAgIGNhc2UgSW5QYWlyOgotICAgICAgICAgICAgaml0LmxvYWQzMigKLSAg
ICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3Jh
dGNoICsgaW5kZXgpLT5hc0JpdHMudGFnLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1Qw
KTsKLSAgICAgICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2Fz
dDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxv
YWQsCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEpOwotICAgICAgICAgICAgaml0LnN0
b3JlMzIoCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCi0gICAgICAgICAgICAgICAg
QXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgaml0LnN0b3Jl
MzIoCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEsCi0gICAgICAgICAgICAgICAgQXNz
ZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGZyYW1lLnNl
dE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShjcHUuZ3ByPGludDMyX3Q+KHJlY292ZXJ5LnRhZ0dQ
UigpKSwgY3B1LmdwcjxpbnQzMl90PihyZWNvdmVyeS5wYXlsb2FkR1BSKCkpKSk7CiAgICAgICAg
ICAgICBicmVhazsKKyNlbmRpZgogCiAgICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKKyAg
ICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShjcHUuZ3ByPEpTQ2Vs
bCo+KHJlY292ZXJ5LmdwcigpKSkpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2Fz
ZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgaml0LmxvYWQzMigKLSAgICAg
ICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNo
ICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdU
MCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwKLSAgICAgICAgICAgICAgICBB
c3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUz
MigKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwKLSAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgZnJhbWUuc2V0
T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVlKGV4ZWMtPnIocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVy
KCkpLnVuYm94ZWRDZWxsKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisjaWYgVVNFKEpTVkFM
VUUzMl82NCkKICAgICAgICAgY2FzZSBVbmJveGVkQm9vbGVhbkluR1BSOgorICAgICAgICAgICAg
ZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBqc0Jvb2xlYW4oY3B1Lmdwcjxib29sPihyZWNvdmVy
eS5ncHIoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisKICAgICAgICAgY2FzZSBC
b29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgaml0LmxvYWQzMigKLSAgICAg
ICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNo
ICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdU
MCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCb29sZWFuVGFnKSwKLSAgICAgICAgICAgICAg
ICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBqaXQuc3Rv
cmUzMigKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwKLSAgICAgICAgICAgICAgICBB
c3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgZnJhbWUu
c2V0T3BlcmFuZChvcGVyYW5kLCBleGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS5q
c1ZhbHVlKCkpOwogICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkK
IAogICAgICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgorICAgICAgICAgICAgZnJhbWUuc2V0
T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVlKGNwdS5ncHI8aW50MzJfdD4ocmVjb3ZlcnkuZ3ByKCkp
KSk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5K
U1N0YWNrOgotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBqaXQubG9hZDY0KHNjcmF0
Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0Lnplcm9FeHRlbmQz
MlRvUHRyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQu
b3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QwKTsKLSAg
ICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFk
ZHJlc3NGb3Iob3BlcmFuZCkpOwotI2Vsc2UKLSAgICAgICAgICAgIGppdC5sb2FkMzIoCi0gICAg
ICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRj
aCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQsCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVn
VDApOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpLAotICAgICAgICAgICAgICAg
IEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAgIGppdC5zdG9y
ZTMyKAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAotICAgICAgICAgICAgICAgIEFz
c2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7Ci0jZW5kaWYKKyAgICAgICAgICAg
IGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShleGVjLT5yKHJlY292ZXJ5LnZpcnR1
YWxSZWdpc3RlcigpKS51bmJveGVkSW50MzIoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICNp
ZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNlIFVuYm94ZWRJbnQ1MkluR1BSOgorICAgICAg
ICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVlKGNwdS5ncHI8aW50NjRfdD4o
cmVjb3ZlcnkuZ3ByKCkpID4+IEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgSW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAg
ICAgICAgICBqaXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOwotICAg
ICAgICAgICAgaml0LnJzaGlmdDY0KAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBHUFJJbmZvOjpyZWdUMCk7
Ci0gICAgICAgICAgICBqaXQuYm94SW50NTIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1Qw
LCBHUFJJbmZvOjpyZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3Rv
cmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQp
KTsKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShleGVjLT5y
KHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS51bmJveGVkSW50NTIoKSkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NTJJbkdQUjoKKyAgICAg
ICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShjcHUuZ3ByPGludDY0X3Q+
KHJlY292ZXJ5LmdwcigpKSkpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBT
dHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIGppdC5sb2FkNjQoc2Ny
YXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuYm94SW50NTIo
R1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgRlBSSW5mbzo6
ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1i
bHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGZyYW1lLnNldE9w
ZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShleGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3Rlcigp
KS51bmJveGVkU3RyaWN0SW50NTIoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKIAog
ICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoKKyAgICAgICAgICAgIGZyYW1lLnNldE9w
ZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShwdXJpZnlOYU4oY3B1LmZwcihyZWNvdmVyeS5mcHIoKSkp
KSk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZElu
SlNTdGFjazoKLSAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQu
bG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCksIEZQUklu
Zm86OmZwUmVnVDApOwotICAgICAgICAgICAgaml0LnB1cmlmeU5hTihGUFJJbmZvOjpmcFJlZ1Qw
KTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgaml0LmJveERvdWJsZShGUFJJbmZv
OjpmcFJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJ
bmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKLSNlbHNl
Ci0gICAgICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgQXNzZW1ibHlI
ZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKLSNlbmRpZgorICAgICAgICAgICAgZnJhbWUu
c2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVlKHB1cmlmeU5hTihleGVjLT5yKHJlY292ZXJ5LnZp
cnR1YWxSZWdpc3RlcigpKS51bmJveGVkRG91YmxlKCkpKSk7CiAgICAgICAgICAgICBicmVhazsK
IAogICAgICAgICBjYXNlIENvbnN0YW50OgotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAg
ICBqaXQuc3RvcmU2NCgKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW02NChKU1ZhbHVlOjplbmNvZGUocmVjb3ZlcnkuY29uc3RhbnQoKSkpLAotICAgICAgICAgICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0jZWxzZQotICAgICAg
ICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVz
dGVkSW1tMzIocmVjb3ZlcnkuY29uc3RhbnQoKS50YWcoKSksCi0gICAgICAgICAgICAgICAgQXNz
ZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIo
Ci0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIocmVjb3Zlcnku
Y29uc3RhbnQoKS5wYXlsb2FkKCkpLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6
cGF5bG9hZEZvcihvcGVyYW5kKSk7Ci0jZW5kaWYKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJh
bmQob3BlcmFuZCwgcmVjb3ZlcnkuY29uc3RhbnQoKSk7CiAgICAgICAgICAgICBicmVhazsKIAog
ICAgICAgICBjYXNlIERpcmVjdEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZDoKQEAgLTY4Mywx
MyArNjEyLDMxIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAg
ICAgICAgfQogICAgIH0KIAorICAgIC8vIE5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHN0YWNrIHBv
aW50ZXIgYWNjb3VudHMgZm9yIHRoZSB3b3JzdC1jYXNlIHN0YWNrIHVzYWdlIGF0IGV4aXQuIFRo
aXMKKyAgICAvLyBjb3VsZCB0b2FzdCBzb21lIHN0YWNrIHRoYXQgdGhlIERGRyB1c2VkLiBXZSBu
ZWVkIHRvIGRvIGl0IGJlZm9yZSBzdG9yaW5nIHRvIHN0YWNrIG9mZnNldHMKKyAgICAvLyB1c2Vk
IGJ5IGJhc2VsaW5lLgorICAgIGNwdS5zcCgpID0gY3B1LmZwPHVpbnQ4X3QqPigpIC0gKGNvZGVC
bG9jay0+aml0Q29kZSgpLT5kZmdDb21tb24oKS0+cmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhp
dCAqIHNpemVvZihSZWdpc3RlcikpOworCisgICAgLy8gUmVzdG9yZSB0aGUgREZHIGNhbGxlZSBz
YXZlcyBhbmQgdGhlbiBzYXZlIHRoZSBvbmVzIHRoZSBiYXNlbGluZSBKSVQgdXNlcy4KKyAgICBy
ZXN0b3JlQ2FsbGVlU2F2ZXNGb3IoY29udGV4dCwgY29kZUJsb2NrKTsKKyAgICBzYXZlQ2FsbGVl
U2F2ZXNGb3IoY29udGV4dCwgYmFzZWxpbmVDb2RlQmxvY2spOworCisgICAgLy8gVGhlIHRhZyBy
ZWdpc3RlcnMgYXJlIG5lZWRlZCB0byBtYXRlcmlhbGl6ZSByZWNvdmVyaWVzIGJlbG93LgorI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgY3B1LmdwcihHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIpID0gVGFnVHlwZU51bWJlcjsKKyAgICBjcHUuZ3ByKEdQUkluZm86OnRhZ01hc2tSZWdpc3Rl
cikgPSBUYWdUeXBlTnVtYmVyIHwgVGFnQml0VHlwZU90aGVyOworI2VuZGlmCisKKyAgICBpZiAo
ZXhpdC5pc0V4Y2VwdGlvbkhhbmRsZXIoKSkKKyAgICAgICAgY29weUNhbGxlZVNhdmVzVG9WTUVu
dHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihjb250ZXh0KTsKKwogICAgIC8vIE5vdyB0aGF0IHRo
aW5ncyBvbiB0aGUgc3RhY2sgYXJlIHJlY292ZXJlZCwgZG8gdGhlIGFyZ3VtZW50cyByZWNvdmVy
eS4gV2UgYXNzdW1lIHRoYXQgYXJndW1lbnRzCiAgICAgLy8gcmVjb3ZlcmllcyBkb24ndCByZWN1
cnNpdmVseSByZWZlciB0byBlYWNoIG90aGVyLiBCdXQsIHdlIGRvbid0IHRyeSB0byBhc3N1bWUg
dGhhdCB0aGV5IG9ubHkKICAgICAvLyByZWZlciB0byBjZXJ0YWluIHJhbmdlcyBvZiBsb2NhbHMu
IEhlbmNlIHdoeSB3ZSBuZWVkIHRvIGRvIHRoaXMgaGVyZSwgb25jZSB0aGUgc3RhY2sgaXMgc2Vu
c2libGUuCiAgICAgLy8gTm90ZSB0aGF0IHdlIGFsc28gcm91Z2hseSBhc3N1bWUgdGhhdCB0aGUg
YXJndW1lbnRzIG1pZ2h0IHN0aWxsIGJlIG1hdGVyaWFsaXplZCBvdXRzaWRlIG9mIGl0cwogICAg
IC8vIGlubGluZSBjYWxsIGZyYW1lIHNjb3BlIC0gYnV0IGZvciBub3cgdGhlIERGRyB3b3VsZG4n
dCBkbyB0aGF0LgogCi0gICAgZW1pdFJlc3RvcmVBcmd1bWVudHMoaml0LCBvcGVyYW5kcyk7Cisg
ICAgZW1pdFJlc3RvcmVBcmd1bWVudHMoY29udGV4dCwgY29kZUJsb2NrLCBvcGVyYW5kcyk7CiAK
ICAgICAvLyBBZGp1c3QgdGhlIG9sZCBKSVQncyBleGVjdXRlIGNvdW50ZXIuIFNpbmNlIHdlIGFy
ZSBleGl0aW5nIE9TUiwgd2Uga25vdwogICAgIC8vIHRoYXQgYWxsIG5ldyBjYWxscyBpbnRvIHRo
aXMgY29kZSB3aWxsIGdvIHRvIHRoZSBuZXcgSklULCBzbyB0aGUgZXhlY3V0ZQpAQCAtNzI3LDI2
ICs2NzQsMTYxIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAg
ICAvLyBjb3VudGVyIHRvIDA7IG90aGVyd2lzZSB3ZSBzZXQgdGhlIGNvdW50ZXIgdG8KICAgICAv
LyBjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKCkuCiAKLSAgICBoYW5kbGVFeGl0
Q291bnRzKGppdCwgZXhpdCk7CisgICAgaWYgKFVOTElLRUxZKGNvZGVCbG9jay0+dXBkYXRlT1NS
RXhpdENvdW50ZXJBbmRDaGVja0lmTmVlZFRvUmVvcHRpbWl6ZShleGl0U3RhdGUpID09IENvZGVC
bG9jazo6T3B0aW1pemVBY3Rpb246OlJlb3B0aW1pemVOb3cpKQorICAgICAgICB0cmlnZ2VyUmVv
cHRpbWl6YXRpb25Ob3coYmFzZWxpbmVDb2RlQmxvY2ssICZleGl0KTsKIAotICAgIC8vIFJlaWZ5
IGlubGluZWQgY2FsbCBmcmFtZXMuCisgICAgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhjb250ZXh0
LCBiYXNlbGluZUNvZGVCbG9jaywgZXhpdCk7CisgICAgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KGNv
bnRleHQsIHZtLCBjb2RlQmxvY2ssIGJhc2VsaW5lQ29kZUJsb2NrLCBleGl0KTsKK30KIAotICAg
IHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoaml0LCBleGl0KTsKK3ZvaWQgcmVpZnlJbmxpbmVkQ2Fs
bEZyYW1lcyhDb250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIG91dGVybW9zdEJhc2VsaW5lQ29k
ZUJsb2NrLCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKK3sKKyAgICBhdXRvJiBjcHUgPSBjb250
ZXh0LmNwdTsKKyAgICBGcmFtZSBmcmFtZShjcHUuZnAoKSwgY29udGV4dC5zdGFjaygpKTsKKwor
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgbGVhdmUgaG9sZXMgb24gdGhlIHN0YWNrIHdoZW4g
cGVyZm9ybWluZyBhbiBPU1IgZXhpdAorICAgIC8vIGluIHByZXNlbmNlIG9mIGlubGluZWQgdGFp
bCBjYWxscy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ3NTExCisgICAgQVNTRVJUKG91dGVybW9zdEJhc2VsaW5lQ29kZUJsb2NrLT5qaXRUeXBlKCkg
PT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIGZyYW1lLnNldE9wZXJhbmQ8Q29kZUJsb2Nr
Kj4oQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrLCBvdXRlcm1vc3RCYXNlbGluZUNvZGVCbG9jayk7
CisKKyAgICBjb25zdCBDb2RlT3JpZ2luKiBjb2RlT3JpZ2luOworICAgIGZvciAoY29kZU9yaWdp
biA9ICZleGl0Lm1fY29kZU9yaWdpbjsgY29kZU9yaWdpbiAmJiBjb2RlT3JpZ2luLT5pbmxpbmVD
YWxsRnJhbWU7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUtPmdldENh
bGxlclNraXBwaW5nVGFpbENhbGxzKCkpIHsKKyAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxp
bmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWU7CisgICAgICAgIENvZGVC
bG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJh
c2VsaW5lQ29kZUJsb2NrKCpjb2RlT3JpZ2luLCBvdXRlcm1vc3RCYXNlbGluZUNvZGVCbG9jayk7
CisgICAgICAgIElubGluZUNhbGxGcmFtZTo6S2luZCB0cnVlQ2FsbGVyQ2FsbEtpbmQ7CisgICAg
ICAgIENvZGVPcmlnaW4qIHRydWVDYWxsZXIgPSBpbmxpbmVDYWxsRnJhbWUtPmdldENhbGxlclNr
aXBwaW5nVGFpbENhbGxzKCZ0cnVlQ2FsbGVyQ2FsbEtpbmQpOworICAgICAgICB2b2lkKiBjYWxs
ZXJGcmFtZSA9IGNwdS5mcCgpOworCisgICAgICAgIGlmICghdHJ1ZUNhbGxlcikgeworICAgICAg
ICAgICAgQVNTRVJUKGlubGluZUNhbGxGcmFtZS0+aXNUYWlsKCkpOworICAgICAgICAgICAgdm9p
ZCogcmV0dXJuUEMgPSBmcmFtZS5nZXQ8dm9pZCo+KENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQo
KSk7CisgICAgICAgICAgICBmcmFtZS5zZXQ8dm9pZCo+KGlubGluZUNhbGxGcmFtZS0+cmV0dXJu
UENPZmZzZXQoKSwgcmV0dXJuUEMpOworICAgICAgICAgICAgY2FsbGVyRnJhbWUgPSBmcmFtZS5n
ZXQ8dm9pZCo+KENhbGxGcmFtZTo6Y2FsbGVyRnJhbWVPZmZzZXQoKSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyID0g
YmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jaygqdHJ1ZUNhbGxl
ciwgb3V0ZXJtb3N0QmFzZWxpbmVDb2RlQmxvY2spOworICAgICAgICAgICAgdW5zaWduZWQgY2Fs
bEJ5dGVjb2RlSW5kZXggPSB0cnVlQ2FsbGVyLT5ieXRlY29kZUluZGV4OworICAgICAgICAgICAg
dm9pZCoganVtcFRhcmdldCA9IG51bGxwdHI7CisKKyAgICAgICAgICAgIHN3aXRjaCAodHJ1ZUNh
bGxlckNhbGxLaW5kKSB7CisgICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q2FsbDoK
KyAgICAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDb25zdHJ1Y3Q6CisgICAgICAgICAg
ICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q2FsbFZhcmFyZ3M6CisgICAgICAgICAgICBjYXNlIElu
bGluZUNhbGxGcmFtZTo6Q29uc3RydWN0VmFyYXJnczoKKyAgICAgICAgICAgIGNhc2UgSW5saW5l
Q2FsbEZyYW1lOjpUYWlsQ2FsbDoKKyAgICAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpU
YWlsQ2FsbFZhcmFyZ3M6IHsKKyAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5r
SW5mbyA9CisgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5n
ZXRDYWxsTGlua0luZm9Gb3JCeXRlY29kZUluZGV4KGNhbGxCeXRlY29kZUluZGV4KTsKKyAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsTGlua0luZm8pOwogCi0gICAgLy8gQW5kIGZp
bmlzaC4KLSAgICBhZGp1c3RBbmRKdW1wVG9UYXJnZXQodm0sIGppdCwgZXhpdCk7CisgICAgICAg
ICAgICAgICAganVtcFRhcmdldCA9IGNhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uKCku
ZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OkdldHRlckNhbGw6CisgICAg
ICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6U2V0dGVyQ2FsbDogeworICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9CisgICAgICAgICAgICAgICAgICAgIGJh
c2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5maW5kU3R1YkluZm8oQ29kZU9yaWdpbihjYWxsQnl0
ZWNvZGVJbmRleCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0dWJJbmZvKTsK
KworICAgICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBzdHViSW5mby0+ZG9uZUxvY2F0aW9uKCku
ZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodHJ1ZUNh
bGxlci0+aW5saW5lQ2FsbEZyYW1lKQorICAgICAgICAgICAgICAgIGNhbGxlckZyYW1lID0gY3B1
LmZwPHVpbnQ4X3QqPigpICsgdHJ1ZUNhbGxlci0+aW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNl
dCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CisKKyAgICAgICAgICAgIGZyYW1lLnNldDx2b2lk
Kj4oaW5saW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpLCBqdW1wVGFyZ2V0KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dm9pZCo+KGlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2ssIGJhc2VsaW5lQ29kZUJsb2Nr
KTsKKworICAgICAgICAvLyBSZXN0b3JlIHRoZSBpbmxpbmUgY2FsbCBmcmFtZSdzIGNhbGxlZSBz
YXZlIHJlZ2lzdGVycy4KKyAgICAgICAgLy8gSWYgdGhpcyBpbmxpbmVkIGZyYW1lIGlzIGEgdGFp
bCBjYWxsIHRoYXQgd2lsbCByZXR1cm4gYmFjayB0byB0aGUgb3JpZ2luYWwgY2FsbGVyLCB3ZSBu
ZWVkIHRvCisgICAgICAgIC8vIGNvcHkgdGhlIHByaW9yIGNvbnRlbnRzIG9mIHRoZSB0YWcgcmVn
aXN0ZXJzIGFscmVhZHkgc2F2ZWQgZm9yIHRoZSBvdXRlciBmcmFtZSB0byB0aGlzIGZyYW1lLgor
ICAgICAgICBzYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoY29udGV4dCwgYmFzZWxpbmVDb2RlQmxv
Y2ssIHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09m
ZnNldCksICF0cnVlQ2FsbGVyKTsKKworICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZS0+aXNW
YXJhcmdzKCkpCisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kPHVpbnQzMl90PihpbmxpbmVD
YWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCwgUGF5
bG9hZE9mZnNldCwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKTsKKyAgICAgICAg
QVNTRVJUKGNhbGxlckZyYW1lKTsKKyAgICAgICAgZnJhbWUuc2V0PHZvaWQqPihpbmxpbmVDYWxs
RnJhbWUtPmNhbGxlckZyYW1lT2Zmc2V0KCksIGNhbGxlckZyYW1lKTsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KGNvZGVP
cmlnaW4tPmJ5dGVjb2RlSW5kZXgpLmJpdHMoKTsKKyAgICAgICAgZnJhbWUuc2V0T3BlcmFuZDx1
aW50MzJfdD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnQsIFRhZ09mZnNldCwgbG9jYXRpb25CaXRzKTsKKyAgICAgICAgaWYgKCFpbmxp
bmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpCisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5k
KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUsIEpT
VmFsdWUoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVDb25zdGFudCgpKSk7CisjZWxzZSAvLyBVU0Uo
SlNWQUxVRTY0KSAvLyBzbyB0aGlzIGlzIHRoZSAzMi1iaXQgcGFydAorICAgICAgICBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24gPSBiYXNlbGluZUNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVn
aW4oKSArIGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXg7CisgICAgICAgIHVpbnQzMl90IGxvY2F0
aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoaW5zdHJ1Y3Rpb24pLmJpdHMoKTsKKyAgICAgICAgZnJh
bWUuc2V0T3BlcmFuZDx1aW50MzJfdD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIFRhZ09mZnNldCwgbG9jYXRpb25CaXRzKTsKKyAg
ICAgICAgZnJhbWUuc2V0T3BlcmFuZDx1aW50MzJfdD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09m
ZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgVGFnT2Zmc2V0LCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oSlNWYWx1ZTo6Q2VsbFRhZykpOworICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZS0+
aXNDbG9zdXJlQ2FsbCkKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQoaW5saW5lQ2FsbEZy
YW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgUGF5bG9hZE9mZnNldCwg
aW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVDb25zdGFudCgpKTsKKyNlbmRpZiAvLyBVU0UoSlNWQUxV
RTY0KSAvLyBlbmRpbmcgdGhlICNlbHNlIHBhcnQsIHNvIGRpcmVjdGx5IGFib3ZlIGlzIHRoZSAz
Mi1iaXQgcGFydAorICAgIH0KKworICAgIC8vIERvbid0IG5lZWQgdG8gc2V0IHRoZSB0b3BsZXZl
bCBjb2RlIG9yaWdpbiBpZiB3ZSBvbmx5IGRpZCBpbmxpbmUgdGFpbCBjYWxscworICAgIGlmIChj
b2RlT3JpZ2luKSB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgdWludDMyX3QgbG9jYXRp
b25CaXRzID0gQ2FsbFNpdGVJbmRleChjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KS5iaXRzKCk7
CisjZWxzZQorICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBvdXRlcm1vc3RCYXNl
bGluZUNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGNvZGVPcmlnaW4tPmJ5dGVj
b2RlSW5kZXg7CisgICAgICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgo
aW5zdHJ1Y3Rpb24pLmJpdHMoKTsKKyNlbmRpZgorICAgICAgICBmcmFtZS5zZXRPcGVyYW5kPHVp
bnQzMl90PihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBUYWdPZmZzZXQsIGxvY2F0aW9u
Qml0cyk7CisgICAgfQogfQogCi12b2lkIEpJVF9PUEVSQVRJT04gT1NSRXhpdDo6ZGVidWdPcGVy
YXRpb25QcmludFNwZWN1bGF0aW9uRmFpbHVyZShFeGVjU3RhdGUqIGV4ZWMsIHZvaWQqIGRlYnVn
SW5mb1Jhdywgdm9pZCogc2NyYXRjaCkKK3ZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KENvbnRl
eHQmIGNvbnRleHQsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVCbG9jayogYmFz
ZWxpbmVDb2RlQmxvY2ssIE9TUkV4aXQmIGV4aXQpCiB7Ci0gICAgVk0qIHZtID0gJmV4ZWMtPnZt
KCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgT1NS
RXhpdFN0YXRlKiBleGl0U3RhdGUgPSBleGl0LmV4aXRTdGF0ZS5nZXQoKTsKIAotICAgIFNwZWN1
bGF0aW9uRmFpbHVyZURlYnVnSW5mbyogZGVidWdJbmZvID0gc3RhdGljX2Nhc3Q8U3BlY3VsYXRp
b25GYWlsdXJlRGVidWdJbmZvKj4oZGVidWdJbmZvUmF3KTsKLSAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGRlYnVnSW5mby0+Y29kZUJsb2NrOworICAgIFdURjo6c3RvcmVMb2FkRmVuY2UoKTsg
Ly8gVGhlIG9wdGltaXppbmcgY29tcGlsZXIgZXhwZWN0cyB0aGF0IHRoZSBPU1IgZXhpdCBtZWNo
YW5pc20gd2lsbCBleGVjdXRlIHRoaXMgZmVuY2UuCisgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIo
YmFzZWxpbmVDb2RlQmxvY2spOworCisgICAgLy8gV2UgYmFycmllciBhbGwgaW5saW5lZCBmcmFt
ZXMgLS0gYW5kIG5vdCBqdXN0IHRoZSBjdXJyZW50IGlubGluZSBzdGFjayAtLQorICAgIC8vIGJl
Y2F1c2Ugd2UgZG9uJ3Qga25vdyB3aGljaCBpbmxpbmVkIGZ1bmN0aW9uIG93bnMgdGhlIHZhbHVl
IHByb2ZpbGUgdGhhdAorICAgIC8vIHdlJ2xsIHVwZGF0ZSB3aGVuIHdlIGV4aXQuIEluIHRoZSBj
YXNlIG9mICJmKCkgeyBhKCk7IGIoKTsgfSIsIGlmIGJvdGgKKyAgICAvLyBhIGFuZCBiIGFyZSBp
bmxpbmVkLCB3ZSBtaWdodCBleGl0IGluc2lkZSBiIGR1ZSB0byBhIGJhZCB2YWx1ZSBsb2FkZWQK
KyAgICAvLyBmcm9tIGEuCisgICAgLy8gRklYTUU6IE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUgc2hvdWxkIHJlbWVtYmVyIHdoaWNoIENvZGVCbG9jayBvd25zCisgICAgLy8gdGhlIHZhbHVl
IHByb2ZpbGUuCisgICAgSW5saW5lQ2FsbEZyYW1lU2V0KiBpbmxpbmVDYWxsRnJhbWVzID0gY29k
ZUJsb2NrLT5qaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5pbmxpbmVDYWxsRnJhbWVzLmdldCgpOwor
ICAgIGlmIChpbmxpbmVDYWxsRnJhbWVzKSB7CisgICAgICAgIGZvciAoSW5saW5lQ2FsbEZyYW1l
KiBpbmxpbmVDYWxsRnJhbWUgOiAqaW5saW5lQ2FsbEZyYW1lcykKKyAgICAgICAgICAgIHZtLmhl
YXAud3JpdGVCYXJyaWVyKGlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkp
OworICAgIH0KKworICAgIGlmIChleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCisg
ICAgICAgIGNvbnRleHQuZnAoKSA9IGNvbnRleHQuZnA8dWludDhfdCo+KCkgKyBleGl0Lm1fY29k
ZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICogc2l6ZW9mKEVuY29kZWRKU1Zh
bHVlKTsKKworICAgIHZvaWQqIGp1bXBUYXJnZXQgPSBleGl0U3RhdGUtPmp1bXBUYXJnZXQ7Cisg
ICAgQVNTRVJUKGp1bXBUYXJnZXQpOworCisgICAgY29udGV4dC5zcCgpID0gY29udGV4dC5mcDx1
aW50OF90Kj4oKSArIGV4aXRTdGF0ZS0+c3RhY2tQb2ludGVyT2Zmc2V0OworICAgIGlmIChleGl0
LmlzRXhjZXB0aW9uSGFuZGxlcigpKSB7CisgICAgICAgIC8vIFNpbmNlIHdlJ3JlIGp1bXBpbmcg
dG8gb3BfY2F0Y2gsIHdlIG5lZWQgdG8gc2V0IGNhbGxGcmFtZUZvckNhdGNoLgorICAgICAgICB2
bS5jYWxsRnJhbWVGb3JDYXRjaCA9IGNvbnRleHQuZnA8RXhlY1N0YXRlKj4oKTsKKyAgICB9CisK
KyAgICB2bS50b3BDYWxsRnJhbWUgPSBjb250ZXh0LmZwPEV4ZWNTdGF0ZSo+KCk7CisgICAgY29u
dGV4dC5wYygpID0ganVtcFRhcmdldDsKK30KKworc3RhdGljIHZvaWQgcHJpbnRPU1JFeGl0KENv
bnRleHQmIGNvbnRleHQsIHVpbnQzMl90IG9zckV4aXRJbmRleCwgY29uc3QgT1NSRXhpdCYgZXhp
dCkKK3sKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBjb250ZXh0LmZwPEV4ZWNTdGF0ZSo+KCk7Cisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBDb2RlQmxv
Y2sqIGFsdGVybmF0aXZlID0gY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpOworICAgIEV4aXRLaW5k
IGtpbmQgPSBleGl0Lm1fa2luZDsKKyAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGV4aXQu
bV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXg7CisKICAgICBkYXRhTG9nKCJTcGVjdWxhdGlvbiBm
YWlsdXJlIGluICIsICpjb2RlQmxvY2spOwotICAgIGRhdGFMb2coIiBAIGV4aXQgIyIsIHZtLT5v
c3JFeGl0SW5kZXgsICIgKGJjIyIsIGRlYnVnSW5mby0+Ynl0ZWNvZGVPZmZzZXQsICIsICIsIGV4
aXRLaW5kVG9TdHJpbmcoZGVidWdJbmZvLT5raW5kKSwgIikgd2l0aCAiKTsKKyAgICBkYXRhTG9n
KCIgQCBleGl0ICMiLCBvc3JFeGl0SW5kZXgsICIgKGJjIyIsIGJ5dGVjb2RlT2Zmc2V0LCAiLCAi
LCBleGl0S2luZFRvU3RyaW5nKGtpbmQpLCAiKSB3aXRoICIpOwogICAgIGlmIChhbHRlcm5hdGl2
ZSkgewogICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgImV4ZWN1dGVDb3VudGVyID0gIiwg
YWx0ZXJuYXRpdmUtPmppdEV4ZWN1dGVDb3VudGVyKCksCkBAIC03NTYsMjEgKzgzOCwxOCBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gT1NSRXhpdDo6ZGVidWdPcGVyYXRpCiAgICAgICAgIGRhdGFMb2co
Im5vIGFsdGVybmF0aXZlIGNvZGUgYmxvY2sgKGkuZS4gd2UndmUgYmVlbiBqZXR0aXNvbmVkKSIp
OwogICAgIGRhdGFMb2coIiwgb3NyRXhpdENvdW50ZXIgPSAiLCBjb2RlQmxvY2stPm9zckV4aXRD
b3VudGVyKCksICJcbiIpOwogICAgIGRhdGFMb2coIiAgICBHUFJzIGF0IHRpbWUgb2YgZXhpdDoi
KTsKLSAgICBjaGFyKiBzY3JhdGNoUG9pbnRlciA9IHN0YXRpY19jYXN0PGNoYXIqPihzY3JhdGNo
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3Rl
cnM7ICsraSkgewogICAgICAgICBHUFJSZWcgZ3ByID0gR1BSSW5mbzo6dG9SZWdpc3RlcihpKTsK
LSAgICAgICAgZGF0YUxvZygiICIsIEdQUkluZm86OmRlYnVnTmFtZShncHIpLCAiOiIsIFJhd1Bv
aW50ZXIoKnJlaW50ZXJwcmV0X2Nhc3RfcHRyPHZvaWQqKj4oc2NyYXRjaFBvaW50ZXIpKSk7Ci0g
ICAgICAgIHNjcmF0Y2hQb2ludGVyICs9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CisgICAgICAg
IGRhdGFMb2coIiAiLCBjb250ZXh0Lmdwck5hbWUoZ3ByKSwgIjoiLCBSYXdQb2ludGVyKGNvbnRl
eHQuZ3ByPHZvaWQqPihncHIpKSk7CiAgICAgfQogICAgIGRhdGFMb2coIlxuIik7CiAgICAgZGF0
YUxvZygiICAgIEZQUnMgYXQgdGltZSBvZiBleGl0OiIpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CiAgICAgICAgIEZQUlJl
ZyBmcHIgPSBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpOwotICAgICAgICBkYXRhTG9nKCIgIiwgRlBS
SW5mbzo6ZGVidWdOYW1lKGZwciksICI6Iik7Ci0gICAgICAgIHVpbnQ2NF90IGJpdHMgPSAqcmVp
bnRlcnByZXRfY2FzdF9wdHI8dWludDY0X3QqPihzY3JhdGNoUG9pbnRlcik7Ci0gICAgICAgIGRv
dWJsZSB2YWx1ZSA9ICpyZWludGVycHJldF9jYXN0X3B0cjxkb3VibGUqPihzY3JhdGNoUG9pbnRl
cik7CisgICAgICAgIGRhdGFMb2coIiAiLCBjb250ZXh0LmZwck5hbWUoZnByKSwgIjoiKTsKKyAg
ICAgICAgdWludDY0X3QgYml0cyA9IGNvbnRleHQuZnByPHVpbnQ2NF90PihmcHIpOworICAgICAg
ICBkb3VibGUgdmFsdWUgPSBjb250ZXh0LmZwcihmcHIpOwogICAgICAgICBkYXRhTG9nRigiJWxs
eDolbGYiLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KGJpdHMpLCB2YWx1ZSk7Ci0gICAgICAgIHNj
cmF0Y2hQb2ludGVyICs9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CiAgICAgfQogICAgIGRhdGFM
b2coIlxuIik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAko
cmV2aXNpb24gMjIxMzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMywxNyBAQAogI2luY2x1ZGUgIk1ldGhvZE9m
R2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgogI2luY2x1ZGUg
IlZhbHVlUmVjb3ZlcnkuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewogCi1jbGFzcyBDQ2FsbEhlbHBlcnM7CituYW1lc3BhY2UgUHJvYmUgeworY2xhc3MgQ29u
dGV4dDsKK30gLy8gbmFtZXNwYWNlIFByb2JlCisKK25hbWVzcGFjZSBQcm9maWxlciB7CitjbGFz
cyBPU1JFeGl0OworfSAvLyBuYW1lc3BhY2UgUHJvZmlsZXIKIAogbmFtZXNwYWNlIERGRyB7CiAK
QEAgLTkxLDYgKzk4LDM0IEBAIHByaXZhdGU6CiAgICAgU3BlY3VsYXRpb25SZWNvdmVyeVR5cGUg
bV90eXBlOwogfTsKIAorc3RydWN0IE9TUkV4aXRTdGF0ZSA6IFJlZkNvdW50ZWQ8T1NSRXhpdFN0
YXRlPiB7CisgICAgT1NSRXhpdFN0YXRlKE9TUkV4aXRCYXNlJiBleGl0LCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jaywKKyAgICAgICAgT3BlcmFuZHM8
VmFsdWVSZWNvdmVyeT4mIG9wZXJhbmRzLCBTcGVjdWxhdGlvblJlY292ZXJ5KiByZWNvdmVyeSwg
cHRyZGlmZl90IHN0YWNrUG9pbnRlck9mZnNldCwKKyAgICAgICAgaW50MzJfdCBhY3RpdmVUaHJl
c2hvbGQsIGRvdWJsZSBtZW1vcnlVc2FnZUFkanVzdGVkVGhyZXNob2xkLCB2b2lkKiBqdW1wVGFy
Z2V0KQorICAgICAgICA6IGV4aXQoZXhpdCkKKyAgICAgICAgLCBjb2RlQmxvY2soY29kZUJsb2Nr
KQorICAgICAgICAsIGJhc2VsaW5lQ29kZUJsb2NrKGJhc2VsaW5lQ29kZUJsb2NrKQorICAgICAg
ICAsIG9wZXJhbmRzKG9wZXJhbmRzKQorICAgICAgICAsIHJlY292ZXJ5KHJlY292ZXJ5KQorICAg
ICAgICAsIHN0YWNrUG9pbnRlck9mZnNldChzdGFja1BvaW50ZXJPZmZzZXQpCisgICAgICAgICwg
YWN0aXZlVGhyZXNob2xkKGFjdGl2ZVRocmVzaG9sZCkKKyAgICAgICAgLCBtZW1vcnlVc2FnZUFk
anVzdGVkVGhyZXNob2xkKG1lbW9yeVVzYWdlQWRqdXN0ZWRUaHJlc2hvbGQpCisgICAgICAgICwg
anVtcFRhcmdldChqdW1wVGFyZ2V0KQorICAgIHsgfQorCisgICAgT1NSRXhpdEJhc2UmIGV4aXQ7
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2s7CisgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVC
bG9jazsKKyAgICBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiBvcGVyYW5kczsKKyAgICBTcGVjdWxh
dGlvblJlY292ZXJ5KiByZWNvdmVyeTsKKyAgICBwdHJkaWZmX3Qgc3RhY2tQb2ludGVyT2Zmc2V0
OworICAgIHVpbnQzMl90IGFjdGl2ZVRocmVzaG9sZDsKKyAgICBkb3VibGUgbWVtb3J5VXNhZ2VB
ZGp1c3RlZFRocmVzaG9sZDsKKyAgICB2b2lkKiBqdW1wVGFyZ2V0OworCisgICAgUHJvZmlsZXI6
Ok9TUkV4aXQqIHByb2ZpbGVyRXhpdCB7IG51bGxwdHIgfTsKK307CisKIC8vID09PSBPU1JFeGl0
ID09PQogLy8KIC8vIFRoaXMgc3RydWN0dXJlIGRlc2NyaWJlcyBob3cgdG8gZXhpdCB0aGUgc3Bl
Y3VsYXRpdmUgcGF0aCBieQpAQCAtOTgsMTEgKzEzMywxMSBAQCBwcml2YXRlOgogc3RydWN0IE9T
UkV4aXQgOiBwdWJsaWMgT1NSRXhpdEJhc2UgewogICAgIE9TUkV4aXQoRXhpdEtpbmQsIEpTVmFs
dWVTb3VyY2UsIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUsIFNwZWN1bGF0aXZlSklUKiwg
dW5zaWduZWQgc3RyZWFtSW5kZXgsIHVuc2lnbmVkIHJlY292ZXJ5SW5kZXggPSBVSU5UX01BWCk7
CiAKLSAgICBzdGF0aWMgdm9pZCBKSVRfT1BFUkFUSU9OIGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0
ZSopIFdURl9JTlRFUk5BTDsKKyAgICBzdGF0aWMgdm9pZCBleGVjdXRlT1NSRXhpdChQcm9iZTo6
Q29udGV4dCYpOwogCiAgICAgdW5zaWduZWQgbV9wYXRjaGFibGVDb2RlT2Zmc2V0IHsgMCB9Owog
ICAgIAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBtX2NvZGU7CisgICAgUmVmUHRyPE9TUkV4
aXRTdGF0ZT4gZXhpdFN0YXRlOwogICAgIAogICAgIEpTVmFsdWVTb3VyY2UgbV9qc1ZhbHVlU291
cmNlOwogICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgbV92YWx1ZVByb2ZpbGU7CkBA
IC0xMTksMTEgKzE1NCw2IEBAIHN0cnVjdCBPU1JFeGl0IDogcHVibGljIE9TUkV4aXRCYXNlIHsK
ICAgICB7CiAgICAgICAgIE9TUkV4aXRCYXNlOjpjb25zaWRlckFkZGluZ0FzRnJlcXVlbnRFeGl0
U2l0ZShwcm9maWxlZENvZGVCbG9jaywgRXhpdEZyb21ERkcpOwogICAgIH0KLQotcHJpdmF0ZToK
LSAgICBzdGF0aWMgdm9pZCBjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmLCBWTSYsIGNvbnN0IE9T
UkV4aXQmLCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYsIFNwZWN1bGF0aW9uUmVjb3Zl
cnkqKTsKLSAgICBzdGF0aWMgdm9pZCBlbWl0UmVzdG9yZUFyZ3VtZW50cyhDQ2FsbEhlbHBlcnMm
LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYpOwotICAgIHN0YXRpYyB2b2lkIEpJVF9P
UEVSQVRJT04gZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFpbHVyZShFeGVjU3RhdGUq
LCB2b2lkKiwgdm9pZCopIFdURl9JTlRFUk5BTDsKIH07CiAKIHN0cnVjdCBTcGVjdWxhdGlvbkZh
aWx1cmVEZWJ1Z0luZm8gewpAQCAtMTMyLDYgKzE2Miw5IEBAIHN0cnVjdCBTcGVjdWxhdGlvbkZh
aWx1cmVEZWJ1Z0luZm8gewogICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0OwogfTsKIAordm9p
ZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKFByb2JlOjpDb250ZXh0JiwgQ29kZUJsb2NrKiBiYXNl
bGluZUNvZGVCbG9jaywgY29uc3QgT1NSRXhpdEJhc2UmKTsKK3ZvaWQgYWRqdXN0QW5kSnVtcFRv
VGFyZ2V0KFByb2JlOjpDb250ZXh0JiwgVk0mLCBDb2RlQmxvY2sqLCBDb2RlQmxvY2sqIGJhc2Vs
aW5lQ29kZUJsb2NrLCBPU1JFeGl0Jik7CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAog
I2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAkocmV2aXNpb24gMjIx
Mzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21t
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogdm9pZCBoYW5k
bGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkK
IHsKICAgICBpZiAoIWV4aXRLaW5kTWF5SmV0dGlzb24oZXhpdC5tX2tpbmQpKSB7CkBAIC0xNDMs
NiArMTQ0LDcgQEAgdm9pZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYgaml0LAogICAg
IGRvbmVBZGp1c3RpbmcubGluaygmaml0KTsKIH0KIAorLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdo
ZW4gd2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUu
CiB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9T
UkV4aXRCYXNlJiBleGl0KQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgbGVhdmUgaG9s
ZXMgb24gdGhlIHN0YWNrIHdoZW4gcGVyZm9ybWluZyBhbiBPU1IgZXhpdApAQCAtMjUyLDYgKzI1
NCw3IEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMKICAgICB9CiB9
CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogc3RhdGljIHZvaWQgb3NyV3JpdGVCYXJyaWVy
KENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgb3duZXIsIEdQUlJlZyBzY3JhdGNoKQogewogICAg
IEFzc2VtYmx5SGVscGVyczo6SnVtcCBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuID0gaml0LmJh
cnJpZXJCcmFuY2hXaXRob3V0RmVuY2Uob3duZXIpOwpAQCAtMjcyLDYgKzI3NSw3IEBAIHN0YXRp
YyB2b2lkIG9zcldyaXRlQmFycmllcihDQ2FsbEhlbHBlcnMKICAgICBvd25lcklzUmVtZW1iZXJl
ZE9ySW5FZGVuLmxpbmsoJmppdCk7CiB9CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdl
IGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogdm9p
ZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
T1NSRXhpdEJhc2UmIGV4aXQpCiB7CiAgICAgaml0Lm1lbW9yeUZlbmNlKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
LmgJKHJldmlzaW9uIDIyMTM5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNiArNDAsNyBAQCB2
b2lkIGhhbmRsZUV4aXRDb3VudHMoQ0NhbGxIZWxwZXJzJiwgY29uCiB2b2lkIHJlaWZ5SW5saW5l
ZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsKIHZvaWQgYWRq
dXN0QW5kSnVtcFRvVGFyZ2V0KFZNJiwgQ0NhbGxIZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2Um
KTsKIAorLy8gRklYTUU6IFRoaXMgd29uJ3QgYmUgbmVlZGVkIG9uY2Ugd2UgZml4IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgSklUQ29kZVR5cGU+CiB2b2lkIGFkanVzdEZyYW1lQW5kU3RhY2tJbk9TUkV4aXRDb21waWxl
clRodW5rKE1hY3JvQXNzZW1ibGVyJiBqaXQsIFZNKiB2bSwgSklUQ29kZTo6SklUVHlwZSBqaXRU
eXBlKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCShyZXZpc2lvbiAyMjEzOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzU1LDYyICsxMzU1LDYgQEAgSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUNsbwogICAgICAgICBleGVjLCBzdHJ1Y3R1
cmUsIGFyZ3VtZW50U3RhcnQsIGxlbmd0aCwgY2FsbGVlKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4aXQoRXhlY1N0YXRl
KiBleGVjLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgSlNGdW5jdGlvbiogY2Fs
bGVlLCBpbnQzMl90IGFyZ3VtZW50Q291bnQpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdGFyZ2V0KCZ2bSwgZXhlYyk7Ci0gICAgCi0gICAg
RGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOwotICAgIAotICAgIENvZGVCbG9jayog
Y29kZUJsb2NrOwotICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgIGNvZGVCbG9jayA9
IGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1lKGlubGluZUNhbGxGcmFtZSk7Ci0g
ICAgZWxzZQotICAgICAgICBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKLSAgICAKLSAg
ICB1bnNpZ25lZCBsZW5ndGggPSBhcmd1bWVudENvdW50IC0gMTsKLSAgICB1bnNpZ25lZCBjYXBh
Y2l0eSA9IHN0ZDo6bWF4KGxlbmd0aCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+
bnVtUGFyYW1ldGVycygpIC0gMSkpOwotICAgIERpcmVjdEFyZ3VtZW50cyogcmVzdWx0ID0gRGly
ZWN0QXJndW1lbnRzOjpjcmVhdGUoCi0gICAgICAgIHZtLCBjb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpLT5kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUoKSwgbGVuZ3RoLCBjYXBhY2l0eSk7Ci0gICAg
Ci0gICAgcmVzdWx0LT5jYWxsZWUoKS5zZXQodm0sIHJlc3VsdCwgY2FsbGVlKTsKLSAgICAKLSAg
ICBSZWdpc3RlciogYXJndW1lbnRzID0KLSAgICAgICAgZXhlYy0+cmVnaXN0ZXJzKCkgKyAoaW5s
aW5lQ2FsbEZyYW1lID8gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCA6IDApICsKLSAgICAg
ICAgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldCgwKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBs
ZW5ndGg7IGktLTspCi0gICAgICAgIHJlc3VsdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpLCBhcmd1
bWVudHNbaV0uanNWYWx1ZSgpKTsKLSAgICAKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1KU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1lbnRzRHVyaW5nRXhp
dChFeGVjU3RhdGUqIGV4ZWMsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBKU0Z1
bmN0aW9uKiBjYWxsZWUsIGludDMyX3QgYXJndW1lbnRDb3VudCkKLXsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0YXJnZXQoJnZtLCBleGVjKTsK
LSAgICAKLSAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgCi0gICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2s7Ci0gICAgaWYgKGlubGluZUNhbGxGcmFtZSkKLSAgICAgICAg
Y29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUoaW5saW5lQ2Fs
bEZyYW1lKTsKLSAgICBlbHNlCi0gICAgICAgIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygp
OwotICAgIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFyZ3VtZW50Q291bnQgLSAxOwotICAgIENs
b25lZEFyZ3VtZW50cyogcmVzdWx0ID0gQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGVFbXB0eSgKLSAg
ICAgICAgdm0sIGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmNsb25lZEFyZ3VtZW50c1N0cnVj
dHVyZSgpLCBjYWxsZWUsIGxlbmd0aCk7Ci0gICAgCi0gICAgUmVnaXN0ZXIqIGFyZ3VtZW50cyA9
Ci0gICAgICAgIGV4ZWMtPnJlZ2lzdGVycygpICsgKGlubGluZUNhbGxGcmFtZSA/IGlubGluZUNh
bGxGcmFtZS0+c3RhY2tPZmZzZXQgOiAwKSArCi0gICAgICAgIENhbGxGcmFtZTo6YXJndW1lbnRP
ZmZzZXQoMCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KQotICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIGFyZ3VtZW50c1tpXS5qc1ZhbHVlKCkpOwot
Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkNyZWF0ZVJlc3QoRXhlY1N0YXRlKiBleGVjLCBSZWdpc3RlciogYXJndW1lbnRTdGFy
dCwgdW5zaWduZWQgbnVtYmVyT2ZQYXJhbXNUb1NraXAsIHVuc2lnbmVkIGFycmF5U2l6ZSkKIHsK
ICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMjEzOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDkgKzEzOSw3
IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHIKIHNpemVfdCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcShFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7
CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdChF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqLCBFbmNvZGVkSlNW
YWx1ZSk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1l
bnRzKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QgbGVuZ3RoLCBpbnQzMl90IG1pbkNh
cGFjaXR5KTsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1
bWVudHNEdXJpbmdFeGl0KEV4ZWNTdGF0ZSosIElubGluZUNhbGxGcmFtZSosIEpTRnVuY3Rpb24q
LCBpbnQzMl90IGFyZ3VtZW50Q291bnQpOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkNyZWF0ZVNjb3BlZEFyZ3VtZW50cyhFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBSZWdpc3Rlciog
YXJndW1lbnRTdGFydCwgaW50MzJfdCBsZW5ndGgsIEpTRnVuY3Rpb24qIGNhbGxlZSwgSlNMZXhp
Y2FsRW52aXJvbm1lbnQqKTsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVD
bG9uZWRBcmd1bWVudHNEdXJpbmdFeGl0KEV4ZWNTdGF0ZSosIElubGluZUNhbGxGcmFtZSosIEpT
RnVuY3Rpb24qLCBpbnQzMl90IGFyZ3VtZW50Q291bnQpOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50cyhFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBS
ZWdpc3RlciogYXJndW1lbnRTdGFydCwgaW50MzJfdCBsZW5ndGgsIEpTRnVuY3Rpb24qIGNhbGxl
ZSk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlUmVzdChFeGVjU3RhdGUq
LCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1Nr
aXAsIHVuc2lnbmVkIGFycmF5U2l6ZSk7CiBkb3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25G
TW9kT25JbnRzKGludDMyX3QsIGludDMyX3QpIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAJKHJldmlzaW9uIDIyMTM5OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAs
NjQgKzQwLDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAg
ICAgTWFjcm9Bc3NlbWJsZXIgaml0OwotCi0gICAgLy8gVGhpcyBuZWVkcyB0byBoYXBwZW4gYmVm
b3JlIHdlIHVzZSB0aGUgc2NyYXRjaCBidWZmZXIgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGFsc28g
dXNlcyB0aGUgc2NyYXRjaCBidWZmZXIuCi0gICAgYWRqdXN0RnJhbWVBbmRTdGFja0luT1NSRXhp
dENvbXBpbGVyVGh1bms8REZHOjpKSVRDb2RlPihqaXQsIHZtLCBKSVRDb2RlOjpERkdKSVQpOwot
ICAgIAotICAgIHNpemVfdCBzY3JhdGNoU2l6ZSA9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiAo
R1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyk7
Ci0gICAgU2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1ZmZlciA9IHZtLT5zY3JhdGNoQnVmZmVyRm9y
U2l6ZShzY3JhdGNoU2l6ZSk7Ci0gICAgRW5jb2RlZEpTVmFsdWUqIGJ1ZmZlciA9IHN0YXRpY19j
YXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKTsKLSAgICAK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7
ICsraSkgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86
OnRvUmVnaXN0ZXIoaSksIGJ1ZmZlciArIGkpOwotI2Vsc2UKLSAgICAgICAgaml0LnN0b3JlMzIo
R1BSSW5mbzo6dG9SZWdpc3RlcihpKSwgYnVmZmVyICsgaSk7Ci0jZW5kaWYKLSAgICB9Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kp
IHsKLSAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoYnVmZmVy
ICsgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSwgR1BSSW5mbzo6cmVnVDApOwotICAg
ICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6dG9SZWdpc3RlcihpKSwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApKTsKLSAgICB9Ci0gICAgCi0gICAgLy8gVGVsbCBH
QyBtYXJrIHBoYXNlIGhvdyBtdWNoIG9mIHRoZSBzY3JhdGNoIGJ1ZmZlciBpcyBhY3RpdmUgZHVy
aW5nIGNhbGwuCi0gICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2Ny
YXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0g
ICAgaml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2hTaXpl
KSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApKTsKLQotICAgIC8vIFNl
dCB1cCBvbmUgYXJndW1lbnQuCi0jaWYgQ1BVKFg4NikKLSAgICBqaXQucG9rZShHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgMCk7Ci0jZWxzZQotICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotI2VuZGlmCi0KLSAgICBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBmdW5jdGlvbkNhbGwgPSBqaXQuY2FsbCgpOwotCi0gICAgaml0Lm1v
dmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09m
QWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgaml0LnN0b3JlUHRyKE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDApLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJ
bmZvOjpyZWdUMCkpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51
bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoYnVmZmVyICsgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSwg
R1BSSW5mbzo6cmVnVDApOwotICAgICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCksIEZQUkluZm86OnRvUmVnaXN0ZXIoaSkpOwotICAgIH0K
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7
ICsraSkgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGppdC5sb2FkNjQoYnVmZmVyICsg
aSwgR1BSSW5mbzo6dG9SZWdpc3RlcihpKSk7Ci0jZWxzZQotICAgICAgICBqaXQubG9hZDMyKGJ1
ZmZlciArIGksIEdQUkluZm86OnRvUmVnaXN0ZXIoaSkpOwotI2VuZGlmCi0gICAgfQotICAgIAot
ICAgIGppdC5qdW1wKE1hY3JvQXNzZW1ibGVyOjpBYnNvbHV0ZUFkZHJlc3MoJnZtLT5vc3JFeGl0
SnVtcERlc3RpbmF0aW9uKSk7Ci0gICAgCisgICAgaml0LnByb2JlKE9TUkV4aXQ6OmV4ZWN1dGVP
U1JFeGl0LCB2bSk7CiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVO
S19JRCk7Ci0gICAgCi0gICAgcGF0Y2hCdWZmZXIubGluayhmdW5jdGlvbkNhbGwsIE9TUkV4aXQ6
OmNvbXBpbGVPU1JFeGl0KTsKLSAgICAKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1
ZmZlciwgKCJERkcgT1NSIGV4aXQgZ2VuZXJhdGlvbiB0aHVuayIpKTsKKyAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJERkcgT1NSIGV4aXQgdGh1bmsiKSk7CiB9CiAKIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuaAkocmV2aXNpb24gMjIxMzk5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zNSw3ICszNSw3IEBAIGNsYXNzIFZNOwogCiBuYW1lc3BhY2UgREZHIHsKIAotTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoVk0qKTsKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0VGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBvc3JFbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CiAKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5jcHAJKHJldmlzaW9uIDIyMTM5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBF
eGVjdXRhYmxlQmFzZSogQXNzZW1ibHlIZWxwZXJzOjpleGVjdXRhCiAgICAgcmV0dXJuIGNvZGVP
cmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCk7CiB9CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1LgogVmVjdG9yPEJ5dGVjb2RlQW5kTWFj
aGluZU9mZnNldD4mIEFzc2VtYmx5SGVscGVyczo6ZGVjb2RlZENvZGVNYXBGb3IoQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCiB7CiAgICAgQVNTRVJUKGNvZGVCbG9jayA9PSBjb2RlQmxvY2stPmJhc2Vs
aW5lVmVyc2lvbigpKTsKQEAgLTgyMCw2MSArODIxLDYgQEAgYm9vbCBBc3NlbWJseUhlbHBlcnM6
OnN0b3JlV2FzbUNvbnRleHROZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQogCi12
b2lkIEFzc2VtYmx5SGVscGVyczo6ZGVidWdDYWxsKFZNJiB2bSwgVl9EZWJ1Z09wZXJhdGlvbl9F
UFAgZnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50KQotewotICAgIHNpemVfdCBzY3JhdGNoU2l6ZSA9
IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBG
UFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyk7Ci0gICAgU2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1
ZmZlciA9IHZtLnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNjcmF0Y2hTaXplKTsKLSAgICBFbmNvZGVk
SlNWYWx1ZSogYnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihzY3JhdGNoQnVm
ZmVyLT5kYXRhQnVmZmVyKCkpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQUklu
Zm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAg
ICBzdG9yZTY0KEdQUkluZm86OnRvUmVnaXN0ZXIoaSksIGJ1ZmZlciArIGkpOwotI2Vsc2UKLSAg
ICAgICAgc3RvcmUzMihHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBidWZmZXIgKyBpKTsKLSNlbmRp
ZgotICAgIH0KLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJP
ZlJlZ2lzdGVyczsgKytpKSB7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihidWZmZXIgKyBH
UFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAg
IHN0b3JlRG91YmxlKEZQUkluZm86OnRvUmVnaXN0ZXIoaSksIEdQUkluZm86OnJlZ1QwKTsKLSAg
ICB9Ci0KLSAgICAvLyBUZWxsIEdDIG1hcmsgcGhhc2UgaG93IG11Y2ggb2YgdGhlIHNjcmF0Y2gg
YnVmZmVyIGlzIGFjdGl2ZSBkdXJpbmcgY2FsbC4KLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc2Ny
YXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0g
ICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihzY3JhdGNoU2l6ZSksIEdQUkluZm86OnJlZ1QwKTsK
LQotI2lmIENQVShYODZfNjQpIHx8IENQVShBUk0pIHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMp
Ci0gICAgbW92ZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7
Ci0gICAgbW92ZShUcnVzdGVkSW1tUHRyKGFyZ3VtZW50KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KTsKLSAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOwotICAgIEdQUlJlZyBzY3JhdGNoID0gc2VsZWN0U2NyYXRjaEdQUihHUFJJbmZvOjph
cmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIy
KTsKLSNlbGlmIENQVShYODYpCi0gICAgcG9rZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
MCk7Ci0gICAgcG9rZShUcnVzdGVkSW1tUHRyKGFyZ3VtZW50KSwgMSk7Ci0gICAgcG9rZShUcnVz
dGVkSW1tUHRyKGJ1ZmZlciksIDIpOwotICAgIEdQUlJlZyBzY3JhdGNoID0gR1BSSW5mbzo6cmVn
VDA7Ci0jZWxzZQotI2Vycm9yICJKSVQgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIK
LSNlbmRpZgotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihm
dW5jdGlvbikpLCBzY3JhdGNoKTsKLSAgICBjYWxsKHNjcmF0Y2gpOwotCi0gICAgbW92ZShUcnVz
dGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFkZHJlc3NPZkFjdGl2ZUxlbmd0aCgpKSwgR1BSSW5m
bzo6cmVnVDApOwotICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEdQUkluZm86OnJlZ1Qw
KTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lz
dGVyczsgKytpKSB7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihidWZmZXIgKyBHUFJJbmZv
OjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIGxvYWRE
b3VibGUoR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OnRvUmVnaXN0ZXIoaSkpOwotICAgIH0KLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsr
aSkgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGxvYWQ2NChidWZmZXIgKyBpLCBHUFJJ
bmZvOjp0b1JlZ2lzdGVyKGkpKTsKLSNlbHNlCi0gICAgICAgIGxvYWQzMihidWZmZXIgKyBpLCBH
UFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKLSNlbmRpZgotICAgIH0KLX0KLQogdm9pZCBBc3NlbWJs
eUhlbHBlcnM6OmNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXJJ
bXBsKEdQUlJlZyBjYWxsZWVTYXZlc0J1ZmZlcikKIHsKICNpZiBOVU1CRVJfT0ZfQ0FMTEVFX1NB
VkVTX1JFR0lTVEVSUyA+IDAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuaAkocmV2aXNpb24gMjIxMzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtOTkyLDkgKzk5Miw2IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEdQUkluZm86OnJlZ1Q1OwogICAgIH0KIAotICAgIC8v
IEFkZCBhIGRlYnVnIGNhbGwuIFRoaXMgY2FsbCBoYXMgbm8gZWZmZWN0IG9uIEpJVCBjb2RlIGV4
ZWN1dGlvbiBzdGF0ZS4KLSAgICB2b2lkIGRlYnVnQ2FsbChWTSYsIFZfRGVidWdPcGVyYXRpb25f
RVBQIGZ1bmN0aW9uLCB2b2lkKiBhcmd1bWVudCk7Ci0KICAgICAvLyBUaGVzZSBtZXRob2RzIEpJ
VCBnZW5lcmF0ZSBkeW5hbWljLCBkZWJ1Zy1vbmx5IGNoZWNrcyAtIGFraW4gdG8gQVNTRVJUcy4K
ICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgdm9pZCBqaXRBc3NlcnRJc0ludDMyKEdQUlJlZyk7
CkBAIC0xNDY1LDYgKzE0NjIsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBlbWl0RHVtYlZp
cnR1YWxDYWxsKFZNJiwgQ2FsbExpbmtJbmZvKik7CiAgICAgCisgICAgLy8gRklYTUU6IHJlbW92
ZSB0aGlzIHdoZW4gd2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzUxNDUuCiAgICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4mIGRlY29kZWRD
b2RlTWFwRm9yKENvZGVCbG9jayopOwogCiAgICAgdm9pZCBtYWtlU3BhY2VPblN0YWNrRm9yQ0Nh
bGwoKTsKQEAgLTE2NTYsNiArMTY1NCw3IEBAIHByb3RlY3RlZDoKICAgICBDb2RlQmxvY2sqIG1f
Y29kZUJsb2NrOwogICAgIENvZGVCbG9jayogbV9iYXNlbGluZUNvZGVCbG9jazsKIAorICAgIC8v
IEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1LgogICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgVmVjdG9yPEJ5
dGVjb2RlQW5kTWFjaGluZU9mZnNldD4+IG1fZGVjb2RlZENvZGVNYXBzOwogfTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAy
MjEzOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMjk2LDYgKzIyOTYsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblJlYWxsb2NhdGVCCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHJl
c3VsdCk7CiB9CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk9TUldyaXRlQmFycmllcihFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogY2VsbCkK
IHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMjEzOTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDQ1LDYgKzQ0
NSw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZUIKIGNoYXIqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZUJ1dHRlcmZseVRvR3Jvd1Byb3BlcnR5U3Rv
cmFnZShFeGVjU3RhdGUqLCBKU09iamVjdCosIHNpemVfdCBuZXdTaXplKSBXVEZfSU5URVJOQUw7
CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93UGF0aChFeGVj
U3RhdGUqLCBKU0NlbGwqKTsKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk9TUldyaXRlQmFycmllcihFeGVjU3RhdGUqLCBKU0NlbGwqKTsKIAog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enooRXhlY1N0YXRlKik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhp
dC5oCShyZXZpc2lvbiAyMjEzOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZXJPU1JFeGl0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNyArNDMsOCBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgdWludDY0X3QqIGNvdW50ZXJBZGRyZXNzKCkgeyByZXR1cm4gJm1fY291bnRlcjsg
fQogICAgIHVpbnQ2NF90IGNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudGVyOyB9Ci0gICAg
CisgICAgdm9pZCBpbmNDb3VudCgpIHsgbV9jb3VudGVyKys7IH0KKwogICAgIEpTVmFsdWUgdG9K
UyhFeGVjU3RhdGUqKSBjb25zdDsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlzaW9uIDIyMTM5OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3
ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChw
b3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bw
b3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDgs
IDIwMDksIDIwMTIsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENv
cHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNDQsMTIgKzM0NCw5IEBAIHB1YmxpYzoKICAgICB1aW50
MzJfdCB0YWcoKSBjb25zdDsKICAgICBpbnQzMl90IHBheWxvYWQoKSBjb25zdDsKIAotI2lmICFF
TkFCTEUoSklUKQotICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBieSB0aGUgTExJbnQg
QyBMb29wIGludGVycHJldGVyIHdobyBuZWVkcwotICAgIC8vIHN5bnRoZXNpemUgSlNWYWx1ZSBm
cm9tIGl0cyAicmVnaXN0ZXIicyBob2xkaW5nIHRhZyBhbmQgcGF5bG9hZAotICAgIC8vIHZhbHVl
cy4KKyAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgdGhlIExMSW50IEMgTG9vcCBp
bnRlcnByZXRlciBhbmQgT1NSRXhpdCBjb2RlIHdobyBuZWVkcworICAgIC8vIHN5bnRoZXNpemUg
SlNWYWx1ZSBmcm9tIGl0cyAicmVnaXN0ZXIicyBob2xkaW5nIHRhZyBhbmQgcGF5bG9hZCB2YWx1
ZXMuCiAgICAgZXhwbGljaXQgSlNWYWx1ZShpbnQzMl90IHRhZywgaW50MzJfdCBwYXlsb2FkKTsK
LSNlbmRpZgogCiAjZWxpZiBVU0UoSlNWQUxVRTY0KQogICAgIC8qCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHJldmlzaW9u
IDIyMTM5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0MCw3ICszNDAsNyBAQCBpbmxpbmUgSlNWYWx1ZTo6
SlNWYWx1ZShpbnQgaSkKICAgICB1LmFzQml0cy5wYXlsb2FkID0gaTsKIH0KIAotI2lmICFFTkFC
TEUoSklUKQorI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShp
bnQzMl90IHRhZywgaW50MzJfdCBwYXlsb2FkKQogewogICAgIHUuYXNCaXRzLnRhZyA9IHRhZzsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZpc2lv
biAyMjEzOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzY0LDYgKzM2NCwxMyBAQCBzdGF0aWMgdm9pZCBvdmVycmlkZURl
ZmF1bHRzKCkKICNpZiAhSEFWRShNQUNIX0VYQ0VQVElPTlMpCiAgICAgT3B0aW9uczo6dXNlTWFj
aEZvckV4Y2VwdGlvbnMoKSA9IGZhbHNlOwogI2VuZGlmCisgICAgLy8gbWxhbSBURVNUCisgICAg
Y29uc3QgY2hhciogcmVvcHQgPSBnZXRlbnYoInJlb3B0Iik7CisgICAgaWYgKHJlb3B0KSB7Cisg
ICAgICAgIGludCB2YWx1ZSA9IGF0b2kocmVvcHQpOworICAgICAgICBPcHRpb25zOjpvc3JFeGl0
Q291bnRGb3JSZW9wdGltaXphdGlvbigpID0gdmFsdWU7IC8vIG1sYW0gVEVTVAorICAgIH0KKyAg
ICAvLyBtbGFtIFRFU1QgKi8KIH0KIAogc3RhdGljIHZvaWQgcmVjb21wdXRlRGVwZW5kZW50T3B0
aW9ucygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319641</attachid>
            <date>2017-09-01 13:25:51 -0700</date>
            <delta_ts>2017-09-01 17:28:51 -0700</delta_ts>
            <desc>archive of code that compares the probe based OSR results vs the jit based one.</desc>
            <filename>wip-validate-dfg-osr-exit.patch</filename>
            <type>text/plain</type>
            <size>110544</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyMjE0NjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgwNCw2ICszODA0LDEwIEBA
IGludCBydW5KU0MoQ29tbWFuZExpbmUgb3B0aW9ucywgYm9vbCBpc1cKIAogaW50IGpzY21haW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogeworICAgIGNvbnN0IGNoYXIqIHdhaXQgPSBnZXRlbnYo
IndhaXQiKTsKKyAgICB3aGlsZSAod2FpdCkKKyAgICAgICAgc2xlZXAoKGRvdWJsZSkyKTsKKwog
ICAgIC8vIE5lZWQgdG8gb3ZlcnJpZGUgYW5kIGVuYWJsZSByZXN0cmljdGVkIG9wdGlvbnMgYmVm
b3JlIHdlIHN0YXJ0IHBhcnNpbmcgb3B0aW9ucyBiZWxvdy4KICAgICBPcHRpb25zOjplbmFibGVS
ZXN0cmljdGVkT3B0aW9ucyh0cnVlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDIyMTQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQ0LDYg
KzI0NDQsNyBAQAogCQlGRTEwQUFFQzFGNDRENTQ1MDA5REVEQzUgLyogUHJvYmVTdGFjay5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEwQUFFOTFG
NDRENTEwMDA5REVEQzUgLyogUHJvYmVTdGFjay5jcHAgKi87IH07CiAJCUZFMTBBQUVFMUY0NEQ5
NTQwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTBBQUVEMUY0NEQ5NDYwMDlERURDNSAvKiBQcm9iZUNvbnRl
eHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlG
RTEwQUFGNDFGNDY4Mzk2MDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTBBQUYzMUY0NjgyNkQwMDlERURD
NSAvKiBQcm9iZUNvbnRleHQuY3BwICovOyB9OworCQlGRTEwQUFGRjFGNEUzOEU1MDA5REVEQzUg
LyogUHJvYmVGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkUxMEFBRkUxRjRFMzhEQTAwOURFREM1IC8qIFByb2JlRnJhbWUuaCAqLzsgfTsKIAkJ
RkUxMjIwMjcxQkU3RjU4QzAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxMjIwMjYxQkU3RjU2NDAwMzlF
NkYyIC8qIEpJVEFkZEdlbmVyYXRvci5oICovOyB9OwogCQlGRTEyMjAyODFCRTdGNTkxMDAzOUU2
RjIgLyogSklUQWRkR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFMTIyMDI1MUJFN0Y1NjQwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0
b3IuY3BwICovOyB9OwogCQlGRTE4N0EwMTFCRkJFNTVFMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJh
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
MTg3OUZGMUJGQkM3M0MwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuY3BwICovOyB9OwpAQCAt
NTEzOCw2ICs1MTM5LDcgQEAKIAkJRkUxMEFBRUExRjQ0RDUxMjAwOURFREM1IC8qIFByb2JlU3Rh
Y2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvYmVTdGFjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTEwQUFFRDFGNDREOTQ2MDA5REVEQzUgLyogUHJv
YmVDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2JlQ29udGV4
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTEwQUFGMzFGNDY4MjZEMDA5REVE
QzUgLyogUHJvYmVDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFByb2JlQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMTBB
QUZFMUY0RTM4REEwMDlERURDNSAvKiBQcm9iZUZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFByb2JlRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkUxMjIwMjUxQkU3RjU2NDAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRBZGRHZW5lcmF0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRTEyMjAyNjFCRTdGNTY0MDAzOUU2RjIgLyogSklUQWRk
R2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVEFkZEdlbmVy
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTE4NzlGRjFCRkJDNzNDMDAz
OEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpJVE11bEdlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC01MjA3LDYgKzUyMDksNyBAQAogCQlGRTgwQzE5NjFENzc1QjI3MDA4NTEwQzAgLyogQ2F0
Y2hTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYXRjaFNjb3BlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODBDMTk4MUQ3NzVGQjQwMDg1MTBDMCAv
KiBDYXRjaFNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENh
dGNoU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTgwQzE5QTFENzc2
OEZEMDA4NTEwQzAgLyogRXhjZXB0aW9uRXZlbnRMb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGNlcHRpb25FdmVudExvY2F0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4NEVFNzkxRjU2MzUyRDAwNTFCOEYxIC8qIENvZGVC
bG9ja0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZUJsb2Nr
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTkwQkIzQTFCN0NGNjRF
MDA2QjNGMDMgLyogVk1JbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFZNSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTk4QjVCNjFCQjlB
RTExMDA3M0U3QTYgLyogSklUU3ViR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpJVFN1YkdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRTk5QjI0NzFDMjRCNkQzMDBDODIxNTkgLyogSklUTmVnR2VuZXJhdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVE5lZ0dlbmVyYXRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NzIyLDYgKzc3MjUsNyBAQAogCQkJCUZFNjNERDUz
MUVBOUI2MEUwMDEwM0E2OSAvKiBQcmludGVyLmggKi8sCiAJCQkJRkUxMEFBRjMxRjQ2ODI2RDAw
OURFREM1IC8qIFByb2JlQ29udGV4dC5jcHAgKi8sCiAJCQkJRkUxMEFBRUQxRjQ0RDk0NjAwOURF
REM1IC8qIFByb2JlQ29udGV4dC5oICovLAorCQkJCUZFMTBBQUZFMUY0RTM4REEwMDlERURDNSAv
KiBQcm9iZUZyYW1lLmggKi8sCiAJCQkJRkUxMEFBRTkxRjQ0RDUxMDAwOURFREM1IC8qIFByb2Jl
U3RhY2suY3BwICovLAogCQkJCUZFMTBBQUVBMUY0NEQ1MTIwMDlERURDNSAvKiBQcm9iZVN0YWNr
LmggKi8sCiAJCQkJRkU1MzNDQTAxRjIxN0MzMTAwMTZBMUZFIC8qIHRlc3RtYXNtLmNwcCAqLywK
QEAgLTc3NzgsNiArNzc4Miw3IEBACiAJCQkJOTY5QTA3OTEwRUQxRDNBRTAwRjFGNjgxIC8qIENv
ZGVCbG9jay5oICovLAogCQkJCTBGOEY5NDNEMTY2NzYzMkQwMEQ2MTk3MSAvKiBDb2RlQmxvY2tI
YXNoLmNwcCAqLywKIAkJCQkwRjhGOTQzRTE2Njc2MzJEMDBENjE5NzEgLyogQ29kZUJsb2NrSGFz
aC5oICovLAorCQkJCUZFODRFRTc5MUY1NjM1MkQwMDUxQjhGMSAvKiBDb2RlQmxvY2tJbmxpbmVz
LmggKi8sCiAJCQkJMEZDOTdGMkYxODIwMjBENzAwMkM5QjI2IC8qIENvZGVCbG9ja0pldHRpc29u
aW5nV2F0Y2hwb2ludC5jcHAgKi8sCiAJCQkJMEZDOTdGMzAxODIwMjBENzAwMkM5QjI2IC8qIENv
ZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5oICovLAogCQkJCTBGOTZFQkIxMTY2NzZFRjQw
MDhCQURFMyAvKiBDb2RlQmxvY2tXaXRoSklUVHlwZS5oICovLApAQCAtOTY4OSw2ICs5Njk0LDcg
QEAKIAkJCQlBRDJGQ0MxRDFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNb2R1bGVQcm90
b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDQ5MzdDODFEREQwQUFFMDA3N0M4MDcg
LyogV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUFEMkZDQzJE
MURCODM4RkQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRkUxMEFBRkYxRjRFMzhFNTAwOURFREM1IC8qIFByb2JlRnJhbWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUFEMkZDQkY5MURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0MxRTFEQjU5Q0IyMDBC
M0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUFEMkZDQkZCMURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMjIx
NDY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgY29uc3QgZG91YmxlIE1hY3JvQXNz
ZW1ibGVyOjp0d29Ub1RoZTMyIAogI2lmIEVOQUJMRShNQVNNX1BST0JFKQogc3RhdGljIHZvaWQg
c3RkRnVuY3Rpb25DYWxsYmFjayhQcm9iZTo6Q29udGV4dCYgY29udGV4dCkKIHsKLSAgICBhdXRv
IGZ1bmMgPSBzdGF0aWNfY2FzdDxjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUHJvYmU6OkNvbnRl
eHQmKT4qPihjb250ZXh0LmFyZyk7CisgICAgYXV0byBmdW5jID0gY29udGV4dC5hcmc8Y29uc3Qg
c3RkOjpmdW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+Kj4oKTsKICAgICAoKmZ1bmMpKGNv
bnRleHQpOwogfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcAkocmV2aXNpb24gMjIxNDY0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclByaW50
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBwcmludE1lbW9y
eShQcmludFN0cmVhbSYgb3V0LCBDb250ZQogdm9pZCBwcmludENhbGxiYWNrKFByb2JlOjpDb250
ZXh0JiBwcm9iZUNvbnRleHQpCiB7CiAgICAgYXV0byYgb3V0ID0gV1RGOjpkYXRhRmlsZSgpOwot
ICAgIFByaW50UmVjb3JkTGlzdCYgbGlzdCA9ICpyZWludGVycHJldF9jYXN0PFByaW50UmVjb3Jk
TGlzdCo+KHByb2JlQ29udGV4dC5hcmcpOworICAgIFByaW50UmVjb3JkTGlzdCYgbGlzdCA9ICpw
cm9iZUNvbnRleHQuYXJnPFByaW50UmVjb3JkTGlzdCo+KCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsaXN0LnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGF1dG8mIHJlY29yZCA9IGxpc3Rb
aV07CiAgICAgICAgIENvbnRleHQgY29udGV4dChwcm9iZUNvbnRleHQsIHJlY29yZC5kYXRhKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVDb250ZXh0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUNvbnRleHQu
aAkocmV2aXNpb24gMjIxNDY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Q
cm9iZUNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTQgKzQ1LDggQEAgc3RydWN0IENQ
VVN0YXRlIHsKICAgICBpbmxpbmUgdWludHB0cl90JiBzcHIoU1BSZWdpc3RlcklEKTsKICAgICBp
bmxpbmUgZG91YmxlJiBmcHIoRlBSZWdpc3RlcklEKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6
dHlwZSogPSBudWxscHRyPgotICAgIFQgZ3ByKFJlZ2lzdGVySUQpIGNvbnN0OwotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxU
Pjo6dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+Ci0gICAgVCBncHIoUmVnaXN0ZXJJRCkgY29uc3Q7
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+Ci0gICAgVCBzcHIoU1BSZWdp
c3RlcklEKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRyPgotICAg
IFQgc3ByKFNQUmVnaXN0ZXJJRCkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBn
cHIoUmVnaXN0ZXJJRCkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBzcHIoU1BS
ZWdpc3RlcklEKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGZwcihGUFJlZ2lz
dGVySUQpIGNvbnN0OwogCiAgICAgdm9pZComIHBjKCk7CkBAIC04NSwzMiArNzksMjQgQEAgaW5s
aW5lIGRvdWJsZSYgQ1BVU3RhdGU6OmZwcihGUFJlZ2lzdGVySQogICAgIHJldHVybiBmcHJzW2lk
XTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3Rk
Ojppc19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKj4KLVQgQ1BVU3RhdGU6OmdwcihSZWdpc3Rl
cklEIGlkKSBjb25zdAotewotICAgIENQVVN0YXRlKiBjcHUgPSBjb25zdF9jYXN0PENQVVN0YXRl
Kj4odGhpcyk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGNwdS0+Z3ByKGlkKSk7Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9p
bnRlcjxUPjo6dmFsdWU+Ojp0eXBlKj4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CiBUIENQVVN0YXRl
OjpncHIoUmVnaXN0ZXJJRCBpZCkgY29uc3QKIHsKICAgICBDUFVTdGF0ZSogY3B1ID0gY29uc3Rf
Y2FzdDxDUFVTdGF0ZSo+KHRoaXMpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQ+KGNw
dS0+Z3ByKGlkKSk7CisgICAgYXV0byYgZnJvbSA9IGNwdS0+Z3ByKGlkKTsKKyAgICB0eXBlbmFt
ZSBzdGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZSB0byB7IH07CisgICAgc3RkOjptZW1jcHkoJnRv
LCAmZnJvbSwgc2l6ZW9mKHRvKSk7IC8vIFVzZSBzdGQ6Om1lbWNweSB0byBhdm9pZCBzdHJpY3Qg
YWxpYXNpbmcgaXNzdWVzLgorICAgIHJldHVybiB0bzsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0
eXBlKj4KLVQgQ1BVU3RhdGU6OnNwcihTUFJlZ2lzdGVySUQgaWQpIGNvbnN0Ci17Ci0gICAgQ1BV
U3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8VD4oY3B1LT5zcHIoaWQpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGUqPgor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KIFQgQ1BVU3RhdGU6OnNwcihTUFJlZ2lzdGVySUQgaWQpIGNv
bnN0CiB7CiAgICAgQ1BVU3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsK
LSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPihjcHUtPnNwcihpZCkpOworICAgIGF1dG8m
IGZyb20gPSBjcHUtPnNwcihpZCk7CisgICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD46
OnR5cGUgdG8geyB9OworICAgIHN0ZDo6bWVtY3B5KCZ0bywgJmZyb20sIHNpemVvZih0bykpOyAv
LyBVc2Ugc3RkOjptZW1jcHkgdG8gYXZvaWQgc3RyaWN0IGFsaWFzaW5nIGlzc3Vlcy4KKyAgICBy
ZXR1cm4gdG87CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0yMDUsMjUgKzE5MSwzMSBA
QCBwdWJsaWM6CiAgICAgdXNpbmcgRlBSZWdpc3RlcklEID0gTWFjcm9Bc3NlbWJsZXI6OkZQUmVn
aXN0ZXJJRDsKIAogICAgIENvbnRleHQoU3RhdGUqIHN0YXRlKQotICAgICAgICA6IG1fc3RhdGUo
c3RhdGUpCi0gICAgICAgICwgYXJnKHN0YXRlLT5hcmcpCi0gICAgICAgICwgY3B1KHN0YXRlLT5j
cHUpCisgICAgICAgIDogY3B1KHN0YXRlLT5jcHUpCisgICAgICAgICwgbV9zdGF0ZShzdGF0ZSkK
ICAgICB7IH0KIAotICAgIHVpbnRwdHJfdCYgZ3ByKFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIG1f
c3RhdGUtPmNwdS5ncHIoaWQpOyB9Ci0gICAgdWludHB0cl90JiBzcHIoU1BSZWdpc3RlcklEIGlk
KSB7IHJldHVybiBtX3N0YXRlLT5jcHUuc3ByKGlkKTsgfQotICAgIGRvdWJsZSYgZnByKEZQUmVn
aXN0ZXJJRCBpZCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LmZwcihpZCk7IH0KLSAgICBjb25zdCBj
aGFyKiBncHJOYW1lKFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5ncHJOYW1l
KGlkKTsgfQotICAgIGNvbnN0IGNoYXIqIHNwck5hbWUoU1BSZWdpc3RlcklEIGlkKSB7IHJldHVy
biBtX3N0YXRlLT5jcHUuc3ByTmFtZShpZCk7IH0KLSAgICBjb25zdCBjaGFyKiBmcHJOYW1lKEZQ
UmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LmZwck5hbWUoaWQpOyB9Ci0KLSAg
ICB2b2lkKiYgcGMoKSB7IHJldHVybiBtX3N0YXRlLT5jcHUucGMoKTsgfQotICAgIHZvaWQqJiBm
cCgpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5mcCgpOyB9Ci0gICAgdm9pZComIHNwKCkgeyByZXR1
cm4gbV9zdGF0ZS0+Y3B1LnNwKCk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgcGMo
KSB7IHJldHVybiBtX3N0YXRlLT5jcHUucGM8VD4oKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IFQgZnAoKSB7IHJldHVybiBtX3N0YXRlLT5jcHUuZnA8VD4oKTsgfQotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IFQgc3AoKSB7IHJldHVybiBtX3N0YXRlLT5jcHUuc3A8VD4oKTsgfQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgVCBhcmcoKSB7IHJldHVybiByZWludGVycHJldF9j
YXN0PFQ+KG1fc3RhdGUtPmFyZyk7IH0KKworICAgIHVpbnRwdHJfdCYgZ3ByKFJlZ2lzdGVySUQg
aWQpIHsgcmV0dXJuIGNwdS5ncHIoaWQpOyB9CisgICAgdWludHB0cl90JiBzcHIoU1BSZWdpc3Rl
cklEIGlkKSB7IHJldHVybiBjcHUuc3ByKGlkKTsgfQorICAgIGRvdWJsZSYgZnByKEZQUmVnaXN0
ZXJJRCBpZCkgeyByZXR1cm4gY3B1LmZwcihpZCk7IH0KKyAgICBjb25zdCBjaGFyKiBncHJOYW1l
KFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIGNwdS5ncHJOYW1lKGlkKTsgfQorICAgIGNvbnN0IGNo
YXIqIHNwck5hbWUoU1BSZWdpc3RlcklEIGlkKSB7IHJldHVybiBjcHUuc3ByTmFtZShpZCk7IH0K
KyAgICBjb25zdCBjaGFyKiBmcHJOYW1lKEZQUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gY3B1LmZw
ck5hbWUoaWQpOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGdwcihSZWdpc3RlcklE
IGlkKSBjb25zdCB7IHJldHVybiBjcHUuZ3ByPFQ+KGlkKTsgfQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IFQgc3ByKFNQUmVnaXN0ZXJJRCBpZCkgY29uc3QgeyByZXR1cm4gY3B1LnNwcjxUPihp
ZCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGZwcihGUFJlZ2lzdGVySUQgaWQpIGNv
bnN0IHsgcmV0dXJuIGNwdS5mcHI8VD4oaWQpOyB9CisKKyAgICB2b2lkKiYgcGMoKSB7IHJldHVy
biBjcHUucGMoKTsgfQorICAgIHZvaWQqJiBmcCgpIHsgcmV0dXJuIGNwdS5mcCgpOyB9CisgICAg
dm9pZComIHNwKCkgeyByZXR1cm4gY3B1LnNwKCk7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IFQgcGMoKSB7IHJldHVybiBjcHUucGM8VD4oKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IFQgZnAoKSB7IHJldHVybiBjcHUuZnA8VD4oKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IFQgc3AoKSB7IHJldHVybiBjcHUuc3A8VD4oKTsgfQogCiAgICAgU3RhY2smIHN0YWNrKCkK
ICAgICB7CkBAIC0yMzQsMTMgKzIyNiwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNXcml0ZXNU
b0ZsdXNoKCkgeyByZXR1cm4gbV9zdGFjay5oYXNXcml0ZXNUb0ZsdXNoKCk7IH0KICAgICBTdGFj
ayogcmVsZWFzZVN0YWNrKCkgeyByZXR1cm4gbmV3IFN0YWNrKFdURk1vdmUobV9zdGFjaykpOyB9
CiAKLXByaXZhdGU6Ci0gICAgU3RhdGUqIG1fc3RhdGU7Ci1wdWJsaWM6Ci0gICAgdm9pZCogYXJn
OworICAgIHZvaWQgc2V0U3RhY2soU3RhY2smJiBuZXdTdGFjaykgeyBtX3N0YWNrID0gV1RGTW92
ZShuZXdTdGFjayk7IH0KKwogICAgIENQVVN0YXRlJiBjcHU7CiAKIHByaXZhdGU6CisgICAgU3Rh
dGUqIG1fc3RhdGU7CiAgICAgU3RhY2sgbV9zdGFjazsKIAogICAgIGZyaWVuZCBKU19FWFBPUlRf
UFJJVkFURSB2b2lkKiBwcm9iZVN0YXRlRm9yQ29udGV4dChDb250ZXh0Jik7IC8vIE5vdCBmb3Ig
Z2VuZXJhbCB1c2UuIFRoaXMgc2hvdWxkIG9ubHkgYmUgZm9yIHdyaXRpbmcgdGVzdHMuCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAJKHJl
dmlzaW9uIDIyMTQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVT
dGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEwICszNSwxMiBAQCBuYW1lc3BhY2UgUHJv
YmUgewogCiBQYWdlOjpQYWdlKHZvaWQqIGJhc2VBZGRyZXNzKQogICAgIDogbV9iYXNlTG9naWNh
bEFkZHJlc3MoYmFzZUFkZHJlc3MpCisgICAgLCBtX3BoeXNpY2FsQWRkcmVzc09mZnNldChyZWlu
dGVycHJldF9jYXN0PHVpbnQ4X3QqPigmbV9idWZmZXIpIC0gcmVpbnRlcnByZXRfY2FzdDx1aW50
OF90Kj4oYmFzZUFkZHJlc3MpKQogewogICAgIG1lbWNweSgmbV9idWZmZXIsIGJhc2VBZGRyZXNz
LCBzX3BhZ2VTaXplKTsKIH0KIAorI2lmIFVTRV9ESVJUWV9CSVRTIC8vIG1sYW0KIHZvaWQgUGFn
ZTo6Zmx1c2hXcml0ZXMoKQogewogICAgIHVpbnRwdHJfdCBkaXJ0eUJpdHMgPSBtX2RpcnR5Qml0
czsKQEAgLTYzLDYgKzY1LDI3IEBAIHZvaWQgUGFnZTo6Zmx1c2hXcml0ZXMoKQogICAgIH0KICAg
ICBtX2RpcnR5Qml0cyA9IDA7CiB9CisjZWxzZQordm9pZCBQYWdlOjpmbHVzaFdyaXRlcyh2b2lk
KiBzcCkKK3sKKyAgICBzaXplX3Qgc2l6ZSA9IHNpemVvZihtX2J1ZmZlcik7CisgICAgdWludDhf
dCogc3JjID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJm1fYnVmZmVyKTsKKyAgICB1aW50
OF90KiBkc3QgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihtX2Jhc2VMb2dpY2FsQWRkcmVz
cyk7CisKKyAgICB1aW50OF90KiBzdGFja1BvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihzcCk7CisgICAgaWYgKGRzdCArIHNpemUgPD0gc3RhY2tQb2ludGVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoZHN0IDwgc3RhY2tQb2ludGVyKSB7CisgICAgICAgIHB0cmRpZmZf
dCBkaWZmID0gc3RhY2tQb2ludGVyIC0gZHN0OworICAgICAgICBkc3QgKz0gZGlmZjsKKyAgICAg
ICAgc3JjICs9IGRpZmY7CisgICAgICAgIHNpemUgLT0gZGlmZjsKKyAgICB9CisKKyAgICBtZW1j
cHkoZHN0LCBzcmMsIHNpemUpOworfQorI2VuZGlmIC8vIG1sYW0KIAogU3RhY2s6OlN0YWNrKFN0
YWNrJiYgb3RoZXIpCiAgICAgOiBtX25ld1N0YWNrUG9pbnRlcihvdGhlci5tX25ld1N0YWNrUG9p
bnRlcikKQEAgLTc1LDE1ICs5OCw0NiBAQCBTdGFjazo6U3RhY2soU3RhY2smJiBvdGhlcikKICNl
bmRpZgogfQogCit2b2lkIFN0YWNrOjpvcGVyYXRvcj0oU3RhY2smJiBvdGhlcikKK3sKKyAgICBt
X25ld1N0YWNrUG9pbnRlciA9IG90aGVyLm1fbmV3U3RhY2tQb2ludGVyOworICAgIG1fbG93V2F0
ZXJtYXJrID0gb3RoZXIubV9sb3dXYXRlcm1hcms7CisgICAgbV9zdGFja0JvdW5kcyA9IFdURk1v
dmUob3RoZXIubV9zdGFja0JvdW5kcyk7CisgICAgbV9wYWdlcyA9IFdURk1vdmUob3RoZXIubV9w
YWdlcyk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIG90aGVyLm1faXNWYWxpZCA9IGZhbHNl
OworI2VuZGlmCit9CisKIGJvb2wgU3RhY2s6Omhhc1dyaXRlc1RvRmx1c2goKQogeworI2lmIFVT
RV9ESVJUWV9CSVRTIC8vIG1sYW0KICAgICByZXR1cm4gc3RkOjphbnlfb2YobV9wYWdlcy5iZWdp
bigpLCBtX3BhZ2VzLmVuZCgpLCBbXSAoYXV0byYgaXQpIHsgcmV0dXJuIGl0LnZhbHVlLT5oYXNX
cml0ZXNUb0ZsdXNoKCk7IH0pOworI2Vsc2UKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgogfQog
CisjZGVmaW5lIFVTRV9QQUdFU19GUkVFX0xJU1QgMCAvLyBtbGFtCisKKyNpZiBVU0VfUEFHRVNf
RlJFRV9MSVNUIC8vIG1sYW0KK1BhZ2UqIHNfZnJlZVBhZ2VzID0gbnVsbHB0cjsKKyNlbmRpZgor
CiB2b2lkIFN0YWNrOjpmbHVzaFdyaXRlcygpCiB7Ci0gICAgZm9yIChhdXRvIGl0ID0gbV9wYWdl
cy5iZWdpbigpOyBpdCAhPSBtX3BhZ2VzLmVuZCgpOyArK2l0KQorICAgIGZvciAoYXV0byBpdCA9
IG1fcGFnZXMuYmVnaW4oKTsgaXQgIT0gbV9wYWdlcy5lbmQoKTsgKytpdCkgeworI2lmIFVTRV9E
SVJUWV9CSVRTIC8vIG1sYW0KICAgICAgICAgaXQtPnZhbHVlLT5mbHVzaFdyaXRlc0lmTmVlZGVk
KCk7CisjZWxzZQorICAgICAgICBpdC0+dmFsdWUtPmZsdXNoV3JpdGVzKG5ld1N0YWNrUG9pbnRl
cigpKTsKKyNpZiBVU0VfUEFHRVNfRlJFRV9MSVNUIC8vIG1sYW0KKyAgICAgICAgUGFnZSogcGFn
ZSA9IGl0LT52YWx1ZS5yZWxlYXNlKCk7CisgICAgICAgIHBhZ2UtPm1fYmFzZUxvZ2ljYWxBZGRy
ZXNzID0gc19mcmVlUGFnZXM7CisgICAgICAgIHNfZnJlZVBhZ2VzID0gcGFnZTsKKyNlbmRpZiAv
LyBtbGFtCisjZW5kaWYgLy8gbWxhbQorICAgIH0KIH0KIAogUGFnZSogU3RhY2s6OmVuc3VyZVBh
Z2VGb3Iodm9pZCogYWRkcmVzcykKQEAgLTEwMCw5ICsxNTQsMjIgQEAgUGFnZSogU3RhY2s6OmVu
c3VyZVBhZ2VGb3Iodm9pZCogYWRkcmVzcwogICAgIGlmIChMSUtFTFkoaXQgIT0gbV9wYWdlcy5l
bmQoKSkpCiAgICAgICAgIG1fbGFzdEFjY2Vzc2VkUGFnZSA9IGl0LT52YWx1ZS5nZXQoKTsKICAg
ICBlbHNlIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IHBhZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBhZ2U+KGJhc2VBZGRyZXNzKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX3BhZ2Vz
LmFkZChiYXNlQWRkcmVzcywgV1RGTW92ZShwYWdlKSk7Ci0gICAgICAgIG1fbGFzdEFjY2Vzc2Vk
UGFnZSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisjaWYgVVNFX1BBR0VTX0ZSRUVf
TElTVCAvLyBtbGFtCisgICAgICAgIGlmICghc19mcmVlUGFnZXMpIHsKKyNlbmRpZgorICAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IHBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+
KGJhc2VBZGRyZXNzKTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlcy5hZGQoYmFz
ZUFkZHJlc3MsIFdURk1vdmUocGFnZSkpOworICAgICAgICAgICAgbV9sYXN0QWNjZXNzZWRQYWdl
ID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyNpZiBVU0VfUEFHRVNfRlJFRV9MSVNU
IC8vIG1sYW0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFBhZ2UqIHBhZ2UgPSBzX2Zy
ZWVQYWdlczsKKyAgICAgICAgICAgIHNfZnJlZVBhZ2VzID0gKFBhZ2UqKXBhZ2UtPm1fYmFzZUxv
Z2ljYWxBZGRyZXNzOworICAgICAgICAgICAgcGFnZSA9IG5ldyhwYWdlKSBQYWdlKGJhc2VBZGRy
ZXNzKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiB1bmlxdWVfcGFnZShwYWdl
KTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlcy5hZGQoYmFzZUFkZHJlc3MsIFdU
Rk1vdmUodW5pcXVlX3BhZ2UpKTsKKyAgICAgICAgICAgIG1fbGFzdEFjY2Vzc2VkUGFnZSA9IHJl
c3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgICAgIH0KKyNlbmRpZgogICAgIH0KICAg
ICBtX2xhc3RBY2Nlc3NlZFBhZ2VCYXNlQWRkcmVzcyA9IGJhc2VBZGRyZXNzOwogICAgIHJldHVy
biBtX2xhc3RBY2Nlc3NlZFBhZ2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1Byb2JlU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1Byb2JlU3RhY2suaAkocmV2aXNpb24gMjIxNDY0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICsz
MywxNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFtZXNwYWNlIERGRyB7CitzdHJ1Y3QgT1NS
RXhpdDsgLy8gbWxhbSBURVNUCit9IC8vIG5hbWVzcGFjZSBERkcKKwogc3RydWN0IFByb2JlQ29u
dGV4dDsKIAogbmFtZXNwYWNlIFByb2JlIHsKIAorI2RlZmluZSBVU0VfRElSVFlfQklUUyAxIC8v
IG1sYW0gVEVTdAorCiBjbGFzcyBQYWdlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKQEAgLTU2LDQyICs2Miw2NiBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KICAgICBUIGdldCh2b2lkKiBsb2dpY2FsQWRkcmVzcykKICAgICB7Ci0gICAgICAgIHJl
dHVybiAqcGh5c2ljYWxBZGRyZXNzRm9yPFQqPihsb2dpY2FsQWRkcmVzcyk7CisgICAgICAgIHZv
aWQqIGZyb20gPSBwaHlzaWNhbEFkZHJlc3NGb3IobG9naWNhbEFkZHJlc3MpOworICAgICAgICB0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZSB0byB7IH07CisgICAgICAgIHN0ZDo6
bWVtY3B5KCZ0bywgZnJvbSwgc2l6ZW9mKHRvKSk7IC8vIFVzZSBzdGQ6Om1lbWNweSB0byBhdm9p
ZCBzdHJpY3QgYWxpYXNpbmcgaXNzdWVzLgorICAgICAgICByZXR1cm4gdG87CisgICAgfQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgVCBnZXQodm9pZCogbG9naWNhbEJhc2VBZGRyZXNz
LCBwdHJkaWZmX3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldDxUPihyZWludGVy
cHJldF9jYXN0PHVpbnQ4X3QqPihsb2dpY2FsQmFzZUFkZHJlc3MpICsgb2Zmc2V0KTsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgc2V0KHZvaWQqIGxvZ2ljYWxB
ZGRyZXNzLCBUIHZhbHVlKQogICAgIHsKKyNpZiBVU0VfRElSVFlfQklUUwogICAgICAgICBtX2Rp
cnR5Qml0cyB8PSBkaXJ0eUJpdEZvcihsb2dpY2FsQWRkcmVzcyk7Ci0gICAgICAgICpwaHlzaWNh
bEFkZHJlc3NGb3I8VCo+KGxvZ2ljYWxBZGRyZXNzKSA9IHZhbHVlOworI2VuZGlmCisgICAgICAg
IHZvaWQqIHRvID0gcGh5c2ljYWxBZGRyZXNzRm9yKGxvZ2ljYWxBZGRyZXNzKTsKKyAgICAgICAg
c3RkOjptZW1jcHkodG8sICZ2YWx1ZSwgc2l6ZW9mKFQpKTsgLy8gVXNlIHN0ZDo6bWVtY3B5IHRv
IGF2b2lkIHN0cmljdCBhbGlhc2luZyBpc3N1ZXMuCisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CisgICAgdm9pZCBzZXQodm9pZCogbG9naWNhbEJhc2VBZGRyZXNzLCBwdHJkaWZmX3Qg
b2Zmc2V0LCBUIHZhbHVlKQorICAgIHsKKyAgICAgICAgc2V0PFQ+KHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KGxvZ2ljYWxCYXNlQWRkcmVzcykgKyBvZmZzZXQsIHZhbHVlKTsKICAgICB9CiAK
KyNpZiBVU0VfRElSVFlfQklUUwogICAgIGJvb2wgaGFzV3JpdGVzVG9GbHVzaCgpIGNvbnN0IHsg
cmV0dXJuICEhbV9kaXJ0eUJpdHM7IH0KICAgICB2b2lkIGZsdXNoV3JpdGVzSWZOZWVkZWQoKQog
ICAgIHsKICAgICAgICAgaWYgKG1fZGlydHlCaXRzKQogICAgICAgICAgICAgZmx1c2hXcml0ZXMo
KTsKICAgICB9CisjZW5kaWYKIAogcHJpdmF0ZToKKyNpZiBVU0VfRElSVFlfQklUUwogICAgIHVp
bnRwdHJfdCBkaXJ0eUJpdEZvcih2b2lkKiBsb2dpY2FsQWRkcmVzcykKICAgICB7CiAgICAgICAg
IHVpbnRwdHJfdCBvZmZzZXQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obG9naWNhbEFk
ZHJlc3MpICYgc19wYWdlTWFzazsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnRwdHJf
dD4oMSkgPDwgKG9mZnNldCA+PiBzX2NodW5rU2l6ZVNoaWZ0KTsKICAgICB9CisjZW5kaWYKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgVCBwaHlzaWNhbEFkZHJl
c3NGb3Iodm9pZCogbG9naWNhbEFkZHJlc3MpCisgICAgdm9pZCogcGh5c2ljYWxBZGRyZXNzRm9y
KHZvaWQqIGxvZ2ljYWxBZGRyZXNzKQogICAgIHsKLSAgICAgICAgdWludHB0cl90IG9mZnNldCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihsb2dpY2FsQWRkcmVzcykgJiBzX3BhZ2VNYXNr
OwotICAgICAgICB2b2lkKiBwaHlzaWNhbEFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPigmbV9idWZmZXIpICsgb2Zmc2V0OwotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxUPihwaHlzaWNhbEFkZHJlc3MpOworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4obG9naWNhbEFkZHJlc3MpICsgbV9waHlzaWNhbEFkZHJlc3NPZmZzZXQ7CiAgICAg
fQogCisjaWYgVVNFX0RJUlRZX0JJVFMKICAgICB2b2lkIGZsdXNoV3JpdGVzKCk7CisjZWxzZQor
ICAgIHZvaWQgZmx1c2hXcml0ZXModm9pZCogc3ApOworI2VuZGlmCiAKICAgICB2b2lkKiBtX2Jh
c2VMb2dpY2FsQWRkcmVzcyB7IG51bGxwdHIgfTsKKyNpZiBVU0VfRElSVFlfQklUUwogICAgIHVp
bnRwdHJfdCBtX2RpcnR5Qml0cyB7IDAgfTsKKyNlbmRpZgorICAgIHB0cmRpZmZfdCBtX3BoeXNp
Y2FsQWRkcmVzc09mZnNldDsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNfcGFnZVNp
emUgPSAxMDI0OwogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IHNfcGFnZU1hc2sgPSBz
X3BhZ2VTaXplIC0gMTsKQEAgLTEwOSw2ICsxMzksOCBAQCBwcml2YXRlOgogCiAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBzdGQ6OmFsaWduZWRfc3RvcmFnZTxzX3BhZ2VTaXplLCBzdGQ6OmFsaWdubWVu
dF9vZjx1aW50cHRyX3Q+Ojp2YWx1ZT46OnR5cGUgQnVmZmVyOwogICAgIEJ1ZmZlciBtX2J1ZmZl
cjsKKworICAgIGZyaWVuZCBzdHJ1Y3QgREZHOjpPU1JFeGl0OyAvLyBtbGFtIFRFU1QKIH07CiAK
IGNsYXNzIFN0YWNrIHsKQEAgLTExOCw0MiArMTUwLDQyIEBAIHB1YmxpYzoKICAgICAgICAgOiBt
X2xvd1dhdGVybWFyayhyZWludGVycHJldF9jYXN0PHZvaWQqPigtMSkpCiAgICAgICAgICwgbV9z
dGFja0JvdW5kcyhUaHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpKQogICAgIHsgfQotICAgIFN0YWNr
KFN0YWNrJiYgb3RoZXIpOworICAgIFN0YWNrKFN0YWNrJiYpOworICAgIHZvaWQgb3BlcmF0b3I9
KFN0YWNrJiYpOwogCi0gICAgdm9pZCogbG93V2F0ZXJtYXJrKCkgeyByZXR1cm4gbV9sb3dXYXRl
cm1hcms7IH0KKyAgICB2b2lkKiBsb3dXYXRlcm1hcmsoKQorICAgIHsKKyAgICAgICAgLy8gV2Ug
dXNlIHRoZSBjaHVua0FkZHJlc3MgZm9yIHRoZSBsb3cgd2F0ZXJtYXJrIGJlY2F1c2Ugd2UnbGwg
YmUgZG9pbmcgd3JpdGUgYmFja3MKKyAgICAgICAgLy8gdG8gdGhlIHN0YWNrIGluIGluY3JlbWVu
dHMgb2YgY2h1bmtzLiBIZW5jZSwgd2UnbGwgdHJlYXQgdGhlIGxvd2VzdCBhZGRyZXNzIG9mCisg
ICAgICAgIC8vIHRoZSBjaHVuayBhcyB0aGUgbG93IHdhdGVybWFyayBvZiBhbnkgZ2l2ZW4gc2V0
IGFkZHJlc3MuCisgICAgICAgIHJldHVybiBQYWdlOjpjaHVua0FkZHJlc3NGb3IobV9sb3dXYXRl
cm1hcmspOworICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfc2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3Zl
X2N2PFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+Ojp0eXBlIGdldCh2b2lkKiBhZGRyZXNzKQorICAgIFQg
Z2V0KHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICBQYWdlKiBwYWdlID0gcGFnZUZvcihh
ZGRyZXNzKTsKICAgICAgICAgcmV0dXJuIHBhZ2UtPmdldDxUPihhZGRyZXNzKTsKICAgICB9Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBUIGdldCh2b2lkKiBsb2dpY2FsQmFzZUFkZHJl
c3MsIHB0cmRpZmZfdCBvZmZzZXQpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0PFQ+KHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGxvZ2ljYWxCYXNlQWRkcmVzcykgKyBvZmZzZXQpOworICAg
IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8IXN0ZDo6aXNfc2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+
Ojp0eXBlPjo6dmFsdWU+Ojp0eXBlPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9p
ZCBzZXQodm9pZCogYWRkcmVzcywgVCB2YWx1ZSkKICAgICB7CiAgICAgICAgIFBhZ2UqIHBhZ2Ug
PSBwYWdlRm9yKGFkZHJlc3MpOwogICAgICAgICBwYWdlLT5zZXQ8VD4oYWRkcmVzcywgdmFsdWUp
OwogCi0gICAgICAgIC8vIFdlIHVzZSB0aGUgY2h1bmtBZGRyZXNzIGZvciB0aGUgbG93IHdhdGVy
bWFyayBiZWNhdXNlIHdlJ2xsIGJlIGRvaW5nIHdyaXRlIGJhY2tzCi0gICAgICAgIC8vIHRvIHRo
ZSBzdGFjayBpbiBpbmNyZW1lbnRzIG9mIGNodW5rcy4gSGVuY2UsIHdlJ2xsIHRyZWF0IHRoZSBs
b3dlc3QgYWRkcmVzcyBvZgotICAgICAgICAvLyB0aGUgY2h1bmsgYXMgdGhlIGxvdyB3YXRlcm1h
cmsgb2YgYW55IGdpdmVuIHNldCBhZGRyZXNzLgotICAgICAgICB2b2lkKiBjaHVua0FkZHJlc3Mg
PSBQYWdlOjpjaHVua0FkZHJlc3NGb3IoYWRkcmVzcyk7Ci0gICAgICAgIGlmIChjaHVua0FkZHJl
c3MgPCBtX2xvd1dhdGVybWFyaykKLSAgICAgICAgICAgIG1fbG93V2F0ZXJtYXJrID0gY2h1bmtB
ZGRyZXNzOworICAgICAgICBpZiAoYWRkcmVzcyA8IG1fbG93V2F0ZXJtYXJrKQorICAgICAgICAg
ICAgbV9sb3dXYXRlcm1hcmsgPSBhZGRyZXNzOwogICAgIH0KLQogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci0gICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPGRvdWJsZSwg
dHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGU+Ojp2YWx1ZSwgVD46OnR5cGUgZ2V0KHZv
aWQqIGFkZHJlc3MpCi0gICAgewotICAgICAgICBQYWdlKiBwYWdlID0gcGFnZUZvcihhZGRyZXNz
KTsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxkb3VibGU+KHBhZ2UtPmdldDx1aW50NjRf
dD4oYWRkcmVzcykpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
ID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPGRvdWJsZSwgdHlwZW5hbWUg
c3RkOjpyZW1vdmVfY3Y8VD46OnR5cGU+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgdm9pZCBzZXQodm9p
ZCogYWRkcmVzcywgZG91YmxlIHZhbHVlKQorICAgIHZvaWQgc2V0KHZvaWQqIGxvZ2ljYWxCYXNl
QWRkcmVzcywgcHRyZGlmZl90IG9mZnNldCwgVCB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHNldDx1
aW50NjRfdD4oYWRkcmVzcywgYml0d2lzZV9jYXN0PHVpbnQ2NF90Pih2YWx1ZSkpOworICAgICAg
ICBzZXQ8VD4ocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obG9naWNhbEJhc2VBZGRyZXNzKSAr
IG9mZnNldCwgdmFsdWUpOwogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIFBhZ2UqIGVu
c3VyZVBhZ2VGb3Iodm9pZCogYWRkcmVzcyk7CkBAIC0xODksNiArMjIxLDggQEAgcHJpdmF0ZToK
ICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgYm9vbCBtX2lzVmFsaWQgeyB0cnVlIH07CiAjZW5k
aWYKKworICAgIGZyaWVuZCBzdHJ1Y3QgREZHOjpPU1JFeGl0OyAvLyBtbGFtIFRFU1QKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFByb2JlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJpdGhQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAkocmV2aXNpb24gMjIxNDY0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIs
NiArMzIsOCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBFTkFCTEUoSklUKQorLy8gRklYTUU6
IFRoaXMgaXMgYmVpbmcgc3VwcGxhbnRlZCBieSBvYnNlcnZlUmVzdWx0KCkuIFJlbW92ZSB0aGlz
IG9uZQorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NSBo
YXMgYmVlbiBmaXhlZC4KIHZvaWQgQXJpdGhQcm9maWxlOjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2Fs
bEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncywgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlKQog
ewogICAgIGlmICghc2hvdWxkRW1pdFNldERvdWJsZSgpICYmICFzaG91bGRFbWl0U2V0Tm9uTnVt
YmVyKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJv
ZmlsZS5oCShyZXZpc2lvbiAyMjE0NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJpdGhQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjExLDYgKzIxMSw4IEBAIHB1YmxpYzoK
ICNpZiBFTkFCTEUoSklUKSAgICAKICAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJP
dmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKSBpZiBpdCBzZWVzIGEK
ICAgICAvLyBkb3VibGUuIFNldHMgTm9uTnVtYmVyIGlmIGl0IHNlZXMgYSBub24tbnVtYmVyLgor
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIGJlaW5nIHN1cHBsYW50ZWQgYnkgb2JzZXJ2ZVJlc3VsdCgp
LiBSZW1vdmUgdGhpcyBvbmUKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc1MTQ1IGhhcyBiZWVuIGZpeGVkLgogICAgIHZvaWQgZW1pdE9ic2VydmVSZXN1
bHQoQ0NhbGxIZWxwZXJzJiwgSlNWYWx1ZVJlZ3MsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFn
UmVnaXN0ZXJzKTsKICAgICAKICAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVy
ZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKS4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHJldmlzaW9uIDIyMTQ2
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMTgsNiArMjE4LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayop
OwogICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYsIENvZGVCbG9jayosIFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1Y3R1cmUpOwogICAgIAor
ICAgIHZvaWQgb2JzZXJ2ZUFycmF5TW9kZShBcnJheU1vZGVzIG1vZGUpIHsgbV9vYnNlcnZlZEFy
cmF5TW9kZXMgfD0gbW9kZTsgfQogICAgIEFycmF5TW9kZXMgb2JzZXJ2ZWRBcnJheU1vZGVzKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fb2JzZXJ2ZWRBcnJheU1v
ZGVzOyB9CiAgICAgYm9vbCBtYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNz
ZXM7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCShyZXZpc2lvbiAyMjE0NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMxNSw2ICsyMzE1LDU1IEBA
IGJvb2wgQ29kZUJsb2NrOjpjaGVja0lmT3B0aW1pemF0aW9uVGhyZXMKICAgICByZXR1cm4gbV9q
aXRFeGVjdXRlQ291bnRlci5jaGVja0lmVGhyZXNob2xkQ3Jvc3NlZEFuZFNldCh0aGlzKTsKIH0K
IAorYXV0byBDb2RlQmxvY2s6OnVwZGF0ZU9TUkV4aXRDb3VudGVyQW5kQ2hlY2tJZk5lZWRUb1Jl
b3B0aW1pemUoREZHOjpPU1JFeGl0U3RhdGUmIGV4aXRTdGF0ZSkgLT4gT3B0aW1pemVBY3Rpb24K
K3sKKyAgICBERkc6Ok9TUkV4aXRCYXNlJiBleGl0ID0gZXhpdFN0YXRlLmV4aXQ7CisgICAgaWYg
KCFleGl0S2luZE1heUpldHRpc29uKGV4aXQubV9raW5kKSkgeworICAgICAgICAvLyBGSVhNRTog
V2UgbWF5IHdhbnQgdG8gbm90aWNlIHRoYXQgd2UncmUgZnJlcXVlbnRseSBleGl0aW5nCisgICAg
ICAgIC8vIGF0IGFuIG9wX2NhdGNoIHRoYXQgd2UgZGlkbid0IGNvbXBpbGUgYW4gZW50cnlwb2lu
dCBmb3IsIGFuZAorICAgICAgICAvLyB0aGVuIHRyaWdnZXIgYSByZW9wdGltaXphdGlvbiBvZiB0
aGlzIENvZGVCbG9jazoKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NTg0MgorICAgICAgICByZXR1cm4gT3B0aW1pemVBY3Rpb246Ok5vbmU7Cisg
ICAgfQorCisgICAgZXhpdC5tX2NvdW50Kys7CisgICAgbV9vc3JFeGl0Q291bnRlcisrOworCisg
ICAgLy8gbWxhbSBPcGVyYXRpbmcgb24gYmFzZWxpbmVDb2RlQmxvY2sgbm93LgorCisgICAgQ29k
ZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IGV4aXRTdGF0ZS5iYXNlbGluZUNvZGVCbG9jazsK
KyAgICBBU1NFUlQoYmFzZWxpbmVDb2RlQmxvY2sgPT0gYmFzZWxpbmVBbHRlcm5hdGl2ZSgpKTsK
KyAgICBpZiAoVU5MSUtFTFkoYmFzZWxpbmVDb2RlQmxvY2stPmppdEV4ZWN1dGVDb3VudGVyKCku
aGFzQ3Jvc3NlZFRocmVzaG9sZCgpKSkKKyAgICAgICAgcmV0dXJuIE9wdGltaXplQWN0aW9uOjpS
ZW9wdGltaXplTm93OworCisgICAgLy8gV2Ugd2FudCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3Mg
YSBwb3NzaWJpbGl0eSB0aGF0IHdlJ3JlIGluIGEgbG9vcC4gRm9yIHRoZSBvdXRlcm1vc3QKKyAg
ICAvLyBjb2RlIGJsb2NrIGluIHRoZSBpbmxpbmUgc3RhY2ssIHdlIGhhbmRsZSB0aGlzIGFwcHJv
cHJpYXRlbHkgYnkgaGF2aW5nIHRoZSBsb29wIE9TUiB0cmlnZ2VyCisgICAgLy8gY2hlY2sgdGhl
IGV4aXQgY291bnQgb2YgdGhlIHJlcGxhY2VtZW50IG9mIHRoZSBDb2RlQmxvY2sgZnJvbSB3aGlj
aCB3ZSBhcmUgT1NSaW5nLiBUaGUKKyAgICAvLyBwcm9ibGVtIGlzIHRoZSBpbmxpbmVkIGZ1bmN0
aW9ucywgd2hpY2ggbWlnaHQgYWxzbyBoYXZlIGxvb3BzLCBidXQgd2hvc2UgYmFzZWxpbmUgdmVy
c2lvbnMKKyAgICAvLyBkb24ndCBrbm93IHdoZXJlIHRvIGxvb2sgZm9yIHRoZSBleGl0IGNvdW50
LiBGaWd1cmUgb3V0IGlmIHRob3NlIGxvb3BzIGFyZSBzZXZlcmUgZW5vdWdoCisgICAgLy8gdGhh
dCB3ZSBoYWQgdHJpZWQgdG8gT1NSIGVudGVyLiBJZiBzbywgdGhlbiB3ZSBzaG91bGQgdXNlIHRo
ZSBsb29wIHJlb3B0aW1pemF0aW9uIHRyaWdnZXIuCisgICAgLy8gT3RoZXJ3aXNlLCB3ZSBzaG91
bGQgdXNlIHRoZSBub3JtYWwgcmVvcHRpbWl6YXRpb24gdHJpZ2dlci4KKworICAgIGJvb2wgZGlk
VHJ5VG9FbnRlckluTG9vcCA9IGZhbHNlOworICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lKiBpbmxp
bmVDYWxsRnJhbWUgPSBleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGlubGluZUNh
bGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1lID0gaW5saW5lQ2FsbEZyYW1lLT5kaXJlY3RDYWxsZXIu
aW5saW5lQ2FsbEZyYW1lKSB7CisgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5l
Q29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgp
KSB7CisgICAgICAgICAgICBkaWRUcnlUb0VudGVySW5Mb29wID0gdHJ1ZTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgdWludDMyX3QgZXhpdENvdW50VGhyZXNo
b2xkID0gZGlkVHJ5VG9FbnRlckluTG9vcAorICAgICAgICA/IGV4aXRDb3VudFRocmVzaG9sZEZv
clJlb3B0aW1pemF0aW9uRnJvbUxvb3AoKQorICAgICAgICA6IGV4aXRDb3VudFRocmVzaG9sZEZv
clJlb3B0aW1pemF0aW9uKCk7CisKKyAgICBpZiAobV9vc3JFeGl0Q291bnRlciA+IGV4aXRDb3Vu
dFRocmVzaG9sZCkKKyAgICAgICAgcmV0dXJuIE9wdGltaXplQWN0aW9uOjpSZW9wdGltaXplTm93
OworCisgICAgLy8gVG9vIGZldyBmYWlscy4gQWRqdXN0IHRoZSBleGVjdXRpb24gY291bnRlciBz
dWNoIHRoYXQgdGhlIHRhcmdldCBpcyB0byBvbmx5IG9wdGltaXplIGFmdGVyIGEgd2hpbGUuCisg
ICAgYmFzZWxpbmVDb2RlQmxvY2stPm1faml0RXhlY3V0ZUNvdW50ZXIuc2V0TmV3VGhyZXNob2xk
Rm9yT1NSRXhpdChleGl0U3RhdGUuYWN0aXZlVGhyZXNob2xkLCBleGl0U3RhdGUubWVtb3J5VXNh
Z2VBZGp1c3RlZFRocmVzaG9sZCk7CisgICAgcmV0dXJuIE9wdGltaXplQWN0aW9uOjpOb25lOwor
fQorCiB2b2lkIENvZGVCbG9jazo6b3B0aW1pemVOZXh0SW52b2NhdGlvbigpCiB7CiAgICAgaWYg
KE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDIyMTQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsMTAg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK25hbWVzcGFjZSBERkcgeworc3RydWN0IE9TUkV4aXRT
dGF0ZTsKK30gLy8gbmFtZXNwYWNlIERGRworCiBjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXM7CiBjbGFzcyBDb2RlQmxvY2tTZXQ7CiBjbGFzcyBFeGVjU3RhdGU7CkBAIC03NjIsOCArNzY2
LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY291bnRPU1JFeGl0KCkgeyBtX29zckV4aXRDb3Vu
dGVyKys7IH0KIAotICAgIHVpbnQzMl90KiBhZGRyZXNzT2ZPU1JFeGl0Q291bnRlcigpIHsgcmV0
dXJuICZtX29zckV4aXRDb3VudGVyOyB9CisgICAgZW51bSBjbGFzcyBPcHRpbWl6ZUFjdGlvbiB7
IE5vbmUsIFJlb3B0aW1pemVOb3cgfTsKKyAgICBPcHRpbWl6ZUFjdGlvbiB1cGRhdGVPU1JFeGl0
Q291bnRlckFuZENoZWNrSWZOZWVkVG9SZW9wdGltaXplKERGRzo6T1NSRXhpdFN0YXRlJik7CiAK
KyAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NS4KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mT1NSRXhpdENvdW50ZXIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBt
X29zckV4aXRDb3VudGVyKTsgfQogCiAgICAgdWludDMyX3QgYWRqdXN0ZWRFeGl0Q291bnRUaHJl
c2hvbGQodWludDMyX3QgZGVzaXJlZFRocmVzaG9sZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmgJKHJldmlzaW9uIDIyMTQ2
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEy
LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNiArNDEsNyBAQCBlbnVtIENvdW50aW5nVmFyaWFudCB7
CiBkb3VibGUgYXBwbHlNZW1vcnlVc2FnZUhldXJpc3RpY3MoaW50MzJfdCB2YWx1ZSwgQ29kZUJs
b2NrKik7CiBpbnQzMl90IGFwcGx5TWVtb3J5VXNhZ2VIZXVyaXN0aWNzQW5kQ29udmVydFRvSW50
KGludDMyX3QgdmFsdWUsIENvZGVCbG9jayopOwogCisvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hl
biB3ZSBmaXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NS4K
IGlubGluZSBpbnQzMl90IGZvcm1hdHRlZFRvdGFsRXhlY3V0aW9uQ291bnQoZmxvYXQgdmFsdWUp
CiB7CiAgICAgdW5pb24gewpAQCAtNTcsMTEgKzU4LDE5IEBAIHB1YmxpYzoKICAgICBFeGVjdXRp
b25Db3VudGVyKCk7CiAgICAgdm9pZCBmb3JjZVNsb3dQYXRoQ29uY3VycmVudGx5KCk7IC8vIElm
IHlvdSB1c2UgdGhpcywgY2hlY2tJZlRocmVzaG9sZENyb3NzZWRBbmRTZXQoKSBtYXkgc3RpbGwg
cmV0dXJuIGZhbHNlLgogICAgIGJvb2wgY2hlY2tJZlRocmVzaG9sZENyb3NzZWRBbmRTZXQoQ29k
ZUJsb2NrKik7CisgICAgYm9vbCBoYXNDcm9zc2VkVGhyZXNob2xkKCkgY29uc3QgeyByZXR1cm4g
bV9jb3VudGVyID49IDA7IH0KICAgICB2b2lkIHNldE5ld1RocmVzaG9sZChpbnQzMl90IHRocmVz
aG9sZCwgQ29kZUJsb2NrKik7CiAgICAgdm9pZCBkZWZlckluZGVmaW5pdGVseSgpOwogICAgIGRv
dWJsZSBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4obV90b3RhbENv
dW50KSArIG1fY291bnRlcjsgfQogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Owog
ICAgIAorICAgIHZvaWQgc2V0TmV3VGhyZXNob2xkRm9yT1NSRXhpdCh1aW50MzJfdCBhY3RpdmVU
aHJlc2hvbGQsIGRvdWJsZSBtZW1vcnlVc2FnZUFkanVzdGVkVGhyZXNob2xkKQorICAgIHsKKyAg
ICAgICAgbV9hY3RpdmVUaHJlc2hvbGQgPSBhY3RpdmVUaHJlc2hvbGQ7CisgICAgICAgIG1fY291
bnRlciA9IHN0YXRpY19jYXN0PGludDMyX3Q+KC1tZW1vcnlVc2FnZUFkanVzdGVkVGhyZXNob2xk
KTsKKyAgICAgICAgbV90b3RhbENvdW50ID0gbWVtb3J5VXNhZ2VBZGp1c3RlZFRocmVzaG9sZDsK
KyAgICB9CisKICAgICBzdGF0aWMgaW50MzJfdCBtYXhpbXVtRXhlY3V0aW9uQ291bnRzQmV0d2Vl
bkNoZWNrcG9pbnRzKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAoY291bnRpbmdWYXJpYW50KSB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCShyZXZpc2lvbiAyMjE0NjQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJv
ZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEyLCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsNiArNDYsOCBAQCBNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlIE1ldGhvZE9mR2V0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAorLy8gRklYTUU6IFRoaXMgaXMgYmVpbmcgc3VwcGxhbnRlZCBieSByZXBvcnRWYWx1ZSgpLiBS
ZW1vdmUgdGhpcyBvbmUKKy8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzUxNDUgaGFzIGJlZW4gZml4ZWQuCiB2b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncykg
Y29uc3QKIHsKICAgICBzd2l0Y2ggKG1fa2luZCkgewpAQCAtNzQsNiArNzYsMzQgQEAgdm9pZCBN
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0UgogICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKK3ZvaWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6cmVw
b3J0VmFsdWUoSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBzd2l0Y2ggKG1fa2luZCkgeworICAgIGNh
c2UgTm9uZToKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBSZWFkeToKKyAgICAgICAgKnUu
cHJvZmlsZS0+c3BlY0ZhaWxCdWNrZXQoMCkgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOworICAg
ICAgICByZXR1cm47CisKKyAgICBjYXNlIExhenlPcGVyYW5kOiB7CisgICAgICAgIExhenlPcGVy
YW5kVmFsdWVQcm9maWxlS2V5IGtleSh1LmxhenlPcGVyYW5kLmJ5dGVjb2RlT2Zmc2V0LCBWaXJ0
dWFsUmVnaXN0ZXIodS5sYXp5T3BlcmFuZC5vcGVyYW5kKSk7CisKKyAgICAgICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcih1LmxhenlPcGVyYW5kLmNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAg
ICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPQorICAgICAgICB1LmxhenlPcGVy
YW5kLmNvZGVCbG9jay0+bGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzKCkuYWRkKGxvY2tlciwga2V5
KTsKKyAgICAgICAgKnByb2ZpbGUtPnNwZWNGYWlsQnVja2V0KDApID0gSlNWYWx1ZTo6ZW5jb2Rl
KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhc2UgQXJpdGhQcm9maWxl
UmVhZHk6IHsKKyAgICAgICAgdS5hcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQodmFsdWUpOwor
ICAgICAgICByZXR1cm47CisgICAgfSB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklU
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FW
YWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAyMjE0NjQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcwLDkgKzcwLDEyIEBAIHB1YmxpYzoKICAgICAgICAg
Q29kZUJsb2NrKiwgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmKTsKICAgICAKICAg
ICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9raW5kICE9IE5vbmU7
IH0KLSAgICAKKworICAgIC8vIEZJWE1FOiBlbWl0UmVwb3J0VmFsdWUgaXMgYmVpbmcgc3VwcGxh
bnRlZCBieSByZXBvcnRWYWx1ZSgpLiBSZW1vdmUgdGhpcyBvbmUKKyAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1IGhhcyBiZWVuIGZpeGVkLgogICAg
IHZvaWQgZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYsIEpTVmFsdWVSZWdzKSBjb25zdDsK
LSAgICAKKyAgICB2b2lkIHJlcG9ydFZhbHVlKEpTVmFsdWUpOworCiBwcml2YXRlOgogICAgIGVu
dW0gS2luZCB7CiAgICAgICAgIE5vbmUsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcAkocmV2aXNpb24gMjIxNDY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBpbml0aWFsaXplU3VwZXJTYW1wbGVyKCkKICAgICBUaHJl
YWQ6OmNyZWF0ZSgKICAgICAgICAgIkpTQyBTdXBlciBTYW1wbGVyIiwKICAgICAgICAgW10gKCkg
ewotICAgICAgICAgICAgY29uc3QgaW50IHNsZWVwUXVhbnR1bSA9IDEwOworICAgICAgICAgICAg
Y29uc3QgaW50IHNsZWVwUXVhbnR1bSA9IC4yNTsgLy8xMDsKICAgICAgICAgICAgIGNvbnN0IGlu
dCBwcmludGluZ1BlcmlvZCA9IDEwMDA7CiAgICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAg
ICAgICAgICAgZm9yIChpbnQgbXMgPSAwOyBtcyA8IHByaW50aW5nUGVyaW9kOyBtcyArPSBzbGVl
cFF1YW50dW0pIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJl
Y292ZXJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VmFsdWVSZWNvdmVyeS5jcHAJKHJldmlzaW9uIDIyMTQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDMg
KzEzOSw2MCBAQCB2b2lkIFZhbHVlUmVjb3Zlcnk6OmR1bXAoUHJpbnRTdHJlYW0mIG91CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCituYW1lc3BhY2UgV1RGIHsKKwordXNpbmcgbmFtZXNwYWNlIEpT
QzsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFZhbHVlUmVjb3ZlcnlU
ZWNobmlxdWUgdGVjaG5pcXVlKQoreworICAgIGF1dG8gdGVjaG5pcXVlTmFtZSA9IFtdIChWYWx1
ZVJlY292ZXJ5VGVjaG5pcXVlIHRlY2huaXF1ZSkgeworICAgICAgICBzd2l0Y2ggKHRlY2huaXF1
ZSkgeworICAgICAgICBjYXNlIEluR1BSOgorICAgICAgICAgICAgcmV0dXJuICJJbkdQUiI7Cisg
ICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6CisgICAgICAgICAgICByZXR1cm4gIlVuYm94
ZWRJbnQzMkluR1BSIjsKKyAgICAgICAgY2FzZSBVbmJveGVkSW50NTJJbkdQUjoKKyAgICAgICAg
ICAgIHJldHVybiAiVW5ib3hlZEludDUySW5HUFIiOworICAgICAgICBjYXNlIFVuYm94ZWRTdHJp
Y3RJbnQ1MkluR1BSOgorICAgICAgICAgICAgcmV0dXJuICJVbmJveGVkU3RyaWN0SW50NTJJbkdQ
UiI7CisgICAgICAgIGNhc2UgVW5ib3hlZEJvb2xlYW5JbkdQUjoKKyAgICAgICAgICAgIHJldHVy
biAiVW5ib3hlZEJvb2xlYW5JbkdQUiI7CisgICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoK
KyAgICAgICAgICAgIHJldHVybiAiVW5ib3hlZENlbGxJbkdQUiI7CisjaWYgVVNFKEpTVkFMVUUz
Ml82NCkKKyAgICAgICAgY2FzZSBJblBhaXI6CisgICAgICAgICAgICByZXR1cm4gIkluUGFpciI7
CisjZW5kaWYKKyAgICAgICAgY2FzZSBJbkZQUjoKKyAgICAgICAgICAgIHJldHVybiAiSW5GUFIi
OworICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoKKyAgICAgICAgICAgIHJldHVybiAi
VW5ib3hlZERvdWJsZUluRlBSIjsKKyAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6Cisg
ICAgICAgICAgICByZXR1cm4gIkRpc3BsYWNlZEluSlNTdGFjayI7CisgICAgICAgIGNhc2UgSW50
MzJEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICByZXR1cm4gIkludDMyRGlzcGxhY2Vk
SW5KU1N0YWNrIjsKKyAgICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKKyAgICAg
ICAgICAgIHJldHVybiAiSW50NTJEaXNwbGFjZWRJbkpTU3RhY2siOworICAgICAgICBjYXNlIFN0
cmljdEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAgICAgcmV0dXJuICJTdHJpY3RJ
bnQ1MkRpc3BsYWNlZEluSlNTdGFjayI7CisgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5K
U1N0YWNrOgorICAgICAgICAgICAgcmV0dXJuICJEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2siOwor
ICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICByZXR1cm4g
IkNlbGxEaXNwbGFjZWRJbkpTU3RhY2siOworICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJ
bkpTU3RhY2s6CisgICAgICAgICAgICByZXR1cm4gIkJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2si
OworICAgICAgICBjYXNlIERpcmVjdEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZDoKKyAgICAg
ICAgICAgIHJldHVybiAiRGlyZWN0QXJndW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkIjsKKyAgICAg
ICAgY2FzZSBDbG9uZWRBcmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQ6CisgICAgICAgICAgICBy
ZXR1cm4gIkNsb25lZEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZCI7CisgICAgICAgIGNhc2Ug
Q29uc3RhbnQ6CisgICAgICAgICAgICByZXR1cm4gIkNvbnN0YW50IjsKKyAgICAgICAgY2FzZSBE
b250S25vdzoKKyAgICAgICAgICAgIHJldHVybiAiRG9udEtub3ciOworICAgICAgICB9CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfTsKKyAgICBvdXQucHJpbnQo
dGVjaG5pcXVlTmFtZSh0ZWNobmlxdWUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgJKHJl
dmlzaW9uIDIyMTQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJl
Y292ZXJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyNCwzICs0MjQsMTIgQEAgcHJpdmF0ZToKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUHJpbnRT
dHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OlZhbHVl
UmVjb3ZlcnlUZWNobmlxdWUpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkocmV2aXNpb24gMjIxNDY0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE0LCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtODksNiArODksNyBAQCBzdGF0aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwo
CiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgYW55IHN0dWJzIHRoYXQgdGhlIERGRyBpcyBn
b2luZyB0byB1c2UgYXJlIGluaXRpYWxpemVkLiBXZSB3YW50IHRvCiAgICAgLy8gbWFrZSBzdXJl
IHRoYXQgYWxsIEpJVCBjb2RlIGdlbmVyYXRpb24gZG9lcyBmaW5hbGl6YXRpb24gb24gdGhlIG1h
aW4gdGhyZWFkLgorLy8gICAgdm0uZ2V0Q1RJU3R1Yihvc3JFeGl0VGh1bmtHZW5lcmF0b3IpOwog
ICAgIHZtLmdldENUSVN0dWIob3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik7CiAgICAg
dm0uZ2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpOwog
ICAgIHZtLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjIxNDY0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwNCw2ICszMDQsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtC
dWZmZXImIGxpbmtCCiAgICAgfQogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JF
eGl0VGh1bmsgPSB2bSgpLT5nZXRDVElTdHViKG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0
b3IpOworLy8gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRUaHVuayA9IHZtKCktPmdl
dENUSVN0dWIob3NyRXhpdFRodW5rR2VuZXJhdG9yKTsKICAgICBDb2RlTG9jYXRpb25MYWJlbCB0
YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbChvc3JFeGl0VGh1bmsuY29kZSgpKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9qaXRDb2RlLT5vc3JFeGl0LnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIE9TUkV4aXQmIGV4aXQgPSBtX2ppdENvZGUtPm9zckV4aXRbaV07CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHJldmlzaW9uIDIyMTQ2NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjksMTggKzI5LDIyNiBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAi
QXNzZW1ibHlIZWxwZXJzLmgiCisjaW5jbHVkZSAiQ2xvbmVkQXJndW1lbnRzLmgiCiAjaW5jbHVk
ZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdNYXlFeGl0LmgiCiAjaW5jbHVkZSAiREZHT1NS
RXhpdENvbXBpbGVyQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdFByZXBhcmF0aW9uLmgi
CiAjaW5jbHVkZSAiREZHT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkRGR1NwZWN1bGF0aXZlSklU
LmgiCisjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRnJhbWVUcmFjZXJz
LmgiCisjaW5jbHVkZSAiSW5saW5lQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMuaCIK
KyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKKyNpbmNsdWRlICJQcm9iZUZyYW1lLmgiCisjaW5j
bHVkZSAiSlNEb2xsYXJWTVByb3RvdHlwZS5oIiAvLyBtbGFtIFRFU1QKIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogCit1c2luZyBDUFVTdGF0ZSA9IFByb2JlOjpDUFVTdGF0ZTsK
K3VzaW5nIENvbnRleHQgPSBQcm9iZTo6Q29udGV4dDsKK3VzaW5nIEZyYW1lID0gUHJvYmU6OkZy
YW1lOworCitzdGF0aWMgdm9pZCBwcmludE9TUkV4aXQoQ29udGV4dCYsIHVpbnQzMl90IG9zckV4
aXRJbmRleCwgY29uc3QgT1NSRXhpdCYpOworCitzdGF0aWMgSlNWYWx1ZSBqc1ZhbHVlRm9yKENQ
VVN0YXRlJiBjcHUsIEpTVmFsdWVTb3VyY2Ugc291cmNlKQoreworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgaWYgKHNvdXJjZS5pc0FkZHJlc3MoKSkKKyAgICAgICAgcmV0dXJuICpyZWludGVycHJl
dF9jYXN0PEpTVmFsdWUqPihjcHUuZ3ByPHVpbnQ4X3QqPihzb3VyY2UuYmFzZSgpKSArIHNvdXJj
ZS5vZmZzZXQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShjcHUuZ3ByPEVuY29kZWRK
U1ZhbHVlPihzb3VyY2UuZ3ByKCkpKTsKKyNlbHNlCisgICAgaWYgKHNvdXJjZS5pc0FkZHJlc3Mo
KSkKKyAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PEpTVmFsdWUqPihjcHUuZ3ByPHVp
bnQ4X3QqPihzb3VyY2UuYmFzZSgpKSArIHNvdXJjZS5vZmZzZXQoKSk7CisgICAgaWYgKHNvdXJj
ZS5oYXNLbm93blRhZygpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZShzb3VyY2UudGFnKCksIGNw
dS5ncHI8aW50MzJfdD4oc291cmNlLnBheWxvYWRHUFIoKSkpOworICAgIHJldHVybiBKU1ZhbHVl
KGNwdS5ncHI8aW50MzJfdD4oc291cmNlLnRhZ0dQUigpKSwgY3B1LmdwcjxpbnQzMl90Pihzb3Vy
Y2UucGF5bG9hZEdQUigpKSk7CisjZW5kaWYKK30KKworI2lmIE5VTUJFUl9PRl9DQUxMRUVfU0FW
RVNfUkVHSVNURVJTID4gMAorCisvLyBCYXNlZCBvbiBBc3NlbWJseUhlbHBlcnM6OmVtaXRSZXN0
b3JlQ2FsbGVlU2F2ZXNGb3IoKS4KK3N0YXRpYyB2b2lkIHJlc3RvcmVDYWxsZWVTYXZlc0ZvcihD
b250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBBU1NFUlQoY29k
ZUJsb2NrKTsKKworICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9IGNvZGVC
bG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOworICAgIFJlZ2lzdGVyU2V0IGRvbnRSZXN0b3Jl
UmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCksIFJl
Z2lzdGVyU2V0OjphbGxGUFJzKCkpOworICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBjYWxs
ZWVTYXZlcy0+c2l6ZSgpOworCisgICAgdWludHB0cl90KiBwaHlzaWNhbFN0YWNrRnJhbWUgPSBj
b250ZXh0LmZwPHVpbnRwdHJfdCo+KCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJl
Z2lzdGVyQ291bnQ7IGkrKykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2Fs
bGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAoZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVu
dHJ5LnJlZygpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAvLyBUaGUgY2FsbGVl
IHNhdmVkIHZhbHVlcyBjb21lIGZyb20gdGhlIG9yaWdpbmFsIHN0YWNrLCBub3QgdGhlIHJlY292
ZXJlZCBzdGFjay4KKyAgICAgICAgLy8gSGVuY2UsIHdlIHJlYWQgdGhlIHZhbHVlcyBkaXJlY3Rs
eSBmcm9tIHRoZSBwaHlzaWNhbCBzdGFjayBtZW1vcnkgaW5zdGVhZCBvZgorICAgICAgICAvLyBn
b2luZyB0aHJvdWdoIGNvbnRleHQuc3RhY2soKS4KKyAgICAgICAgQVNTRVJUKCEoZW50cnkub2Zm
c2V0KCkgJSBzaXplb2YodWludHB0cl90KSkpOworICAgICAgICBjb250ZXh0LmdwcihlbnRyeS5y
ZWcoKS5ncHIoKSkgPSBwaHlzaWNhbFN0YWNrRnJhbWVbZW50cnkub2Zmc2V0KCkgLyBzaXplb2Yo
dWludHB0cl90KV07CisgICAgfQorfQorCisvLyBCYXNlZCBvbiBBc3NlbWJseUhlbHBlcnM6OmVt
aXRTYXZlQ2FsbGVlU2F2ZXNGb3IoKS4KK3N0YXRpYyB2b2lkIHNhdmVDYWxsZWVTYXZlc0ZvcihD
b250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBhdXRvJiBzdGFj
ayA9IGNvbnRleHQuc3RhY2soKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrKTsKKworICAgIFJlZ2lz
dGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lz
dGVycygpOworICAgIFJlZ2lzdGVyU2V0IGRvbnRTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQo
UmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjphbGxGUFJzKCkpOwor
ICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6ZSgpOworCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAgICBS
ZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAo
ZG9udFNhdmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBzdGFjay5zZXQoY29udGV4dC5mcCgpLCBlbnRyeS5vZmZzZXQoKSwgY29udGV4
dC5ncHI8dWludHB0cl90PihlbnRyeS5yZWcoKS5ncHIoKSkpOworICAgIH0KK30KKworLy8gQmFz
ZWQgb24gQXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1FbnRyeUZyYW1l
Q2FsbGVlU2F2ZXNCdWZmZXIoKS4KK3N0YXRpYyB2b2lkIHJlc3RvcmVDYWxsZWVTYXZlc0Zyb21W
TUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihDb250ZXh0JiBjb250ZXh0KQoreworICAgIFZN
JiB2bSA9ICpjb250ZXh0LmFyZzxWTSo+KCk7CisgICAgYXV0byYgc3RhY2sgPSBjb250ZXh0LnN0
YWNrKCk7CisKKyAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2FsbGVlU2F2ZXMgPSBWTTo6
Z2V0QWxsQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0cygpOworICAgIFJlZ2lzdGVyU2V0IGRvbnRS
ZXN0b3JlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCk7CisgICAgdW5z
aWduZWQgcmVnaXN0ZXJDb3VudCA9IGFsbENhbGxlZVNhdmVzLT5zaXplKCk7CisKKyAgICBWTUVu
dHJ5UmVjb3JkKiBlbnRyeVJlY29yZCA9IHZtRW50cnlSZWNvcmQodm0udG9wVk1FbnRyeUZyYW1l
KTsKKyAgICB2b2lkKiBjYWxsZWVTYXZlQnVmZmVyID0gZW50cnlSZWNvcmQtPmNhbGxlZVNhdmVS
ZWdpc3RlcnNCdWZmZXI7CisKKyAgICAvLyBSZXN0b3JlIGFsbCBjYWxsZWUgc2F2ZXMuCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAgICBS
ZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBp
ZiAoZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICBpZiAoZW50cnkucmVnKCkuaXNHUFIoKSkKKyAgICAgICAgICAgIGNv
bnRleHQuZ3ByKGVudHJ5LnJlZygpLmdwcigpKSA9IHN0YWNrLmdldDx1aW50cHRyX3Q+KGNhbGxl
ZVNhdmVCdWZmZXIsIGVudHJ5Lm9mZnNldCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
Y29udGV4dC5ncHIoZW50cnkucmVnKCkuZ3ByKCkpID0gc3RhY2suZ2V0PGRvdWJsZT4oY2FsbGVl
U2F2ZUJ1ZmZlciwgZW50cnkub2Zmc2V0KCkpOworICAgIH0KK30KKworLy8gQmFzZWQgb24gQXNz
ZW1ibHlIZWxwZXJzOjpjb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVm
ZmVyKCkuCitzdGF0aWMgdm9pZCBjb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNh
dmVzQnVmZmVyKENvbnRleHQmIGNvbnRleHQpCit7CisgICAgVk0mIHZtID0gKmNvbnRleHQuYXJn
PFZNKj4oKTsKKyAgICBhdXRvJiBzdGFjayA9IGNvbnRleHQuc3RhY2soKTsKKworICAgIFZNRW50
cnlSZWNvcmQqIGVudHJ5UmVjb3JkID0gdm1FbnRyeVJlY29yZCh2bS50b3BWTUVudHJ5RnJhbWUp
OworICAgIHZvaWQqIGNhbGxlZVNhdmVCdWZmZXIgPSBlbnRyeVJlY29yZC0+Y2FsbGVlU2F2ZVJl
Z2lzdGVyc0J1ZmZlcjsKKworICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBhbGxDYWxsZWVTYXZl
cyA9IFZNOjpnZXRBbGxDYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7CisgICAgUmVnaXN0ZXJT
ZXQgZG9udENvcHlSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKTsKKyAg
ICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gYWxsQ2FsbGVlU2F2ZXMtPnNpemUoKTsKKworICAg
IEFTU0VSVChpczY0Qml0KCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3Rl
ckNvdW50OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxl
ZVNhdmVzLT5hdChpKTsKKyAgICAgICAgaWYgKGRvbnRDb3B5UmVnaXN0ZXJzLmdldChlbnRyeS5y
ZWcoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGVudHJ5LnJlZygpLmlz
R1BSKCkpCisgICAgICAgICAgICBzdGFjay5zZXQoY2FsbGVlU2F2ZUJ1ZmZlciwgZW50cnkub2Zm
c2V0KCksIGNvbnRleHQuZ3ByPHVpbnRwdHJfdD4oZW50cnkucmVnKCkuZ3ByKCkpKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgc3RhY2suc2V0KGNhbGxlZVNhdmVCdWZmZXIsIGVudHJ5Lm9m
ZnNldCgpLCBjb250ZXh0LmZwcjx1aW50cHRyX3Q+KGVudHJ5LnJlZygpLmZwcigpKSk7CisgICAg
fQorfQorCisvLyBCYXNlZCBvbiBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5Q2FsbGVl
U2F2ZXNGb3IoKS4KK3N0YXRpYyB2b2lkIHNhdmVPckNvcHlDYWxsZWVTYXZlc0ZvcihDb250ZXh0
JiBjb250ZXh0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmlydHVhbFJlZ2lzdGVyIG9mZnNldFZp
cnR1YWxSZWdpc3RlciwgYm9vbCB3YXNDYWxsZWRWaWFUYWlsQ2FsbCkKK3sKKyAgICBGcmFtZSBm
cmFtZShjb250ZXh0LmZwKCksIGNvbnRleHQuc3RhY2soKSk7CisgICAgQVNTRVJUKGNvZGVCbG9j
ayk7CisKKyAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2st
PmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVy
cyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNl
dDo6YWxsRlBScygpKTsKKyAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMt
PnNpemUoKTsKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgUmVnaXN0ZXJTZXQgYmFzZWxpbmVD
YWxsZWVTYXZlcyA9IFJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVy
cygpOworI2VuZGlmCisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3Vu
dDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+
YXQoaSk7CisgICAgICAgIGlmIChkb250U2F2ZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQor
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgdWludHB0cl90IHNhdmVkUmVnaXN0ZXJW
YWx1ZTsKKworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIFVOVVNFRF9QQVJBTSh3YXND
YWxsZWRWaWFUYWlsQ2FsbCk7CisjZWxzZQorICAgICAgICBpZiAod2FzQ2FsbGVkVmlhVGFpbENh
bGwgJiYgYmFzZWxpbmVDYWxsZWVTYXZlcy5nZXQoZW50cnkucmVnKCkpKQorICAgICAgICAgICAg
c2F2ZWRSZWdpc3RlclZhbHVlID0gZnJhbWUuZ2V0PHVpbnRwdHJfdD4oZW50cnkub2Zmc2V0KCkp
OworICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIHNhdmVkUmVnaXN0ZXJWYWx1ZSA9
IGNvbnRleHQuZ3ByKGVudHJ5LnJlZygpLmdwcigpKTsKKworICAgICAgICBmcmFtZS5zZXQob2Zm
c2V0VmlydHVhbFJlZ2lzdGVyLm9mZnNldEluQnl0ZXMoKSArIGVudHJ5Lm9mZnNldCgpLCBzYXZl
ZFJlZ2lzdGVyVmFsdWUpOworICAgIH0KK30KKyNlbHNlIC8vIG5vdCBOVU1CRVJfT0ZfQ0FMTEVF
X1NBVkVTX1JFR0lTVEVSUyA+IDAKKworc3RhdGljIHZvaWQgcmVzdG9yZUNhbGxlZVNhdmVzRm9y
KENvbnRleHQmLCBDb2RlQmxvY2sqKSB7IH0KK3N0YXRpYyB2b2lkIHNhdmVDYWxsZWVTYXZlc0Zv
cihDb250ZXh0JiwgQ29kZUJsb2NrKikgeyB9CitzdGF0aWMgdm9pZCByZXN0b3JlQ2FsbGVlU2F2
ZXNGcm9tVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoQ29udGV4dCYpIHsgfQorc3RhdGlj
IHZvaWQgY29weUNhbGxlZVNhdmVzVG9WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihDb250
ZXh0JikgeyB9CitzdGF0aWMgdm9pZCBzYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoQ29udGV4dCYs
IENvZGVCbG9jayosIFZpcnR1YWxSZWdpc3RlciwgYm9vbCkgeyB9CisKKyNlbmRpZiAvLyBOVU1C
RVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKKworc3RhdGljIEpTQ2VsbCogY3JlYXRl
RGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdChDb250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIEpTRnVuY3Rpb24qIGNh
bGxlZSwgaW50MzJfdCBhcmd1bWVudENvdW50KQoreworICAgIFZNJiB2bSA9ICpjb250ZXh0LmFy
ZzxWTSo+KCk7CisKKyAgICBBU1NFUlQodm0uaGVhcC5pc0RlZmVycmVkKCkpOworCisgICAgaWYg
KGlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tG
b3JJbmxpbmVDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1lKTsKKworICAgIHVuc2lnbmVkIGxlbmd0
aCA9IGFyZ3VtZW50Q291bnQgLSAxOworICAgIHVuc2lnbmVkIGNhcGFjaXR5ID0gc3RkOjptYXgo
bGVuZ3RoLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkg
LSAxKSk7CisgICAgRGlyZWN0QXJndW1lbnRzKiByZXN1bHQgPSBEaXJlY3RBcmd1bWVudHM6OmNy
ZWF0ZSgKKyAgICAgICAgdm0sIGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmRpcmVjdEFyZ3Vt
ZW50c1N0cnVjdHVyZSgpLCBsZW5ndGgsIGNhcGFjaXR5KTsKKworICAgIHJlc3VsdC0+Y2FsbGVl
KCkuc2V0KHZtLCByZXN1bHQsIGNhbGxlZSk7CisKKyAgICB2b2lkKiBmcmFtZUJhc2UgPSBjb250
ZXh0LmZwPFJlZ2lzdGVyKj4oKSArIChpbmxpbmVDYWxsRnJhbWUgPyBpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0IDogMCk7CisgICAgRnJhbWUgZnJhbWUoZnJhbWVCYXNlLCBjb250ZXh0LnN0
YWNrKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykKKyAgICAgICAgcmVz
dWx0LT5zZXRJbmRleFF1aWNrbHkodm0sIGksIGZyYW1lLmdldEFyZ3VtZW50PEpTVmFsdWU+KGkp
KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBKU0NlbGwqIGNyZWF0ZUNsb25l
ZEFyZ3VtZW50c0R1cmluZ0V4aXQoQ29udGV4dCYgY29udGV4dCwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBjYWxsZWUs
IGludDMyX3QgYXJndW1lbnRDb3VudCkKK3sKKyAgICBWTSYgdm0gPSAqY29udGV4dC5hcmc8Vk0q
PigpOworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGNvbnRleHQuZnA8RXhlY1N0YXRlKj4oKTsKKwor
ICAgIEFTU0VSVCh2bS5oZWFwLmlzRGVmZXJyZWQoKSk7CisKKyAgICBpZiAoaW5saW5lQ2FsbEZy
YW1lKQorICAgICAgICBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcklubGluZUNhbGxG
cmFtZShpbmxpbmVDYWxsRnJhbWUpOworCisgICAgdW5zaWduZWQgbGVuZ3RoID0gYXJndW1lbnRD
b3VudCAtIDE7CisgICAgQ2xvbmVkQXJndW1lbnRzKiByZXN1bHQgPSBDbG9uZWRBcmd1bWVudHM6
OmNyZWF0ZUVtcHR5KAorICAgICAgICB2bSwgY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Y2xv
bmVkQXJndW1lbnRzU3RydWN0dXJlKCksIGNhbGxlZSwgbGVuZ3RoKTsKKworICAgIHZvaWQqIGZy
YW1lQmFzZSA9IGNvbnRleHQuZnA8UmVnaXN0ZXIqPigpICsgKGlubGluZUNhbGxGcmFtZSA/IGlu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgOiAwKTsKKyAgICBGcmFtZSBmcmFtZShmcmFtZUJh
c2UsIGNvbnRleHQuc3RhY2soKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07
KQorICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIGZyYW1lLmdldEFyZ3Vt
ZW50PEpTVmFsdWU+KGkpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBPU1JFeGl0OjpPU1JF
eGl0KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZSB2YWx1ZVByb2ZpbGUsIFNwZWN1bGF0aXZlSklUKiBqaXQsIHVu
c2lnbmVkIHN0cmVhbUluZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4KQogICAgIDogT1NSRXhp
dEJhc2Uoa2luZCwgaml0LT5tX29yaWdpbi5mb3JFeGl0LCBqaXQtPm1fb3JpZ2luLnNlbWFudGlj
LCBqaXQtPm1fb3JpZ2luLndhc0hvaXN0ZWQpCiAgICAgLCBtX2pzVmFsdWVTb3VyY2UoanNWYWx1
ZVNvdXJjZSkKQEAgLTc4LDYgKzI4Niw3MTcgQEAgdm9pZCBPU1JFeGl0Ojpjb3JyZWN0SnVtcChM
aW5rQnVmZmVyJiBsaQogICAgIG1fcGF0Y2hhYmxlQ29kZU9mZnNldCA9IGxpbmtCdWZmZXIub2Zm
c2V0T2YobGFiZWwpOwogfQogCitzdGF0aWMgdm9pZCBlbWl0UmVzdG9yZUFyZ3VtZW50cyhDb250
ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgT3BlcmFuZHM8VmFsdWVS
ZWNvdmVyeT4mIG9wZXJhbmRzKQoreworICAgIEZyYW1lIGZyYW1lKGNvbnRleHQuZnAoKSwgY29u
dGV4dC5zdGFjaygpKTsKKworICAgIEhhc2hNYXA8TWluaWZpZWRJRCwgaW50PiBhbHJlYWR5QWxs
b2NhdGVkQXJndW1lbnRzOyAvLyBNYXBzIHBoYW50b20gYXJndW1lbnRzIG5vZGUgSUQgdG8gb3Bl
cmFuZC4KKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgp
OyArK2luZGV4KSB7CisgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3Bl
cmFuZHNbaW5kZXhdOworICAgICAgICBpbnQgb3BlcmFuZCA9IG9wZXJhbmRzLm9wZXJhbmRGb3JJ
bmRleChpbmRleCk7CisKKyAgICAgICAgaWYgKHJlY292ZXJ5LnRlY2huaXF1ZSgpICE9IERpcmVj
dEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZAorICAgICAgICAgICAgJiYgcmVjb3ZlcnkudGVj
aG5pcXVlKCkgIT0gQ2xvbmVkQXJndW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgTWluaWZpZWRJRCBpZCA9IHJlY292ZXJ5Lm5vZGVJRCgp
OworICAgICAgICBhdXRvIGl0ZXIgPSBhbHJlYWR5QWxsb2NhdGVkQXJndW1lbnRzLmZpbmQoaWQp
OworICAgICAgICBpZiAoaXRlciAhPSBhbHJlYWR5QWxsb2NhdGVkQXJndW1lbnRzLmVuZCgpKSB7
CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIGZyYW1lLmdldE9wZXJhbmQ8
SlNWYWx1ZT4oaXRlci0+dmFsdWUpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisKKyAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPQorICAgICAgICAg
ICAgY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpLT5taW5pZmllZERGRy5hdChpZCktPmlubGlu
ZUNhbGxGcmFtZSgpOworCisgICAgICAgIGludCBzdGFja09mZnNldDsKKyAgICAgICAgaWYgKGlu
bGluZUNhbGxGcmFtZSkKKyAgICAgICAgICAgIHN0YWNrT2Zmc2V0ID0gaW5saW5lQ2FsbEZyYW1l
LT5zdGFja09mZnNldDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3RhY2tPZmZzZXQgPSAw
OworCisgICAgICAgIEpTRnVuY3Rpb24qIGNhbGxlZTsKKyAgICAgICAgaWYgKCFpbmxpbmVDYWxs
RnJhbWUgfHwgaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQorICAgICAgICAgICAgY2Fs
bGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihmcmFtZS5nZXRPcGVyYW5kPEpTVmFsdWU+KHN0YWNr
T2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKS5hc0NlbGwoKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oaW5saW5lQ2FsbEZyYW1l
LT5jYWxsZWVSZWNvdmVyeS5jb25zdGFudCgpLmFzQ2VsbCgpKTsKKworICAgICAgICBpbnQzMl90
IGFyZ3VtZW50Q291bnQ7CisgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lIHx8IGlubGluZUNh
bGxGcmFtZS0+aXNWYXJhcmdzKCkpCisgICAgICAgICAgICBhcmd1bWVudENvdW50ID0gZnJhbWUu
Z2V0T3BlcmFuZDxpbnQzMl90PihzdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnQsIFBheWxvYWRPZmZzZXQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcmd1bWVu
dENvdW50ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOworCisgICAgICAgIEpT
Q2VsbCogYXJndW1lbnRzT2JqZWN0OworICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1
ZSgpKSB7CisgICAgICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkOgor
ICAgICAgICAgICAgYXJndW1lbnRzT2JqZWN0ID0gY3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5n
RXhpdChjb250ZXh0LCBjb2RlQmxvY2ssIGlubGluZUNhbGxGcmFtZSwgY2FsbGVlLCBhcmd1bWVu
dENvdW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENsb25lZEFyZ3VtZW50
c1RoYXRXZXJlTm90Q3JlYXRlZDoKKyAgICAgICAgICAgIGFyZ3VtZW50c09iamVjdCA9IGNyZWF0
ZUNsb25lZEFyZ3VtZW50c0R1cmluZ0V4aXQoY29udGV4dCwgY29kZUJsb2NrLCBpbmxpbmVDYWxs
RnJhbWUsIGNhbGxlZSwgYXJndW1lbnRDb3VudCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9w
ZXJhbmQsIGFyZ3VtZW50c09iamVjdCk7CisKKyAgICAgICAgYWxyZWFkeUFsbG9jYXRlZEFyZ3Vt
ZW50cy5hZGQoaWQsIG9wZXJhbmQpOworICAgIH0KK30KKworUHJvYmU6OlN0YXRlKiBzdGF0ZUNv
cHkgPSBudWxscHRyOworUHJvYmU6OlN0YWNrKiBzdGFja0NvcHkgPSBudWxscHRyOworCit2b2lk
IE9TUkV4aXQ6OnByZXRlbmRFeGVjdXRlT1NSRXhpdChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkK
K3sKKyAgICBpZiAoIWdldGVudigidmVyaWZ5IikpCisgICAgICAgIHJldHVybjsKKworICAgIFJF
TEVBU0VfQVNTRVJUKCFzdGF0ZUNvcHkgJiYgIXN0YWNrQ29weSk7CisgICAgc3RhdGVDb3B5ID0g
bmV3IFByb2JlOjpTdGF0ZTs7CisgICAgbWVtY3B5KHN0YXRlQ29weSwgcHJvYmVTdGF0ZUZvckNv
bnRleHQoY29udGV4dCksIHNpemVvZihQcm9iZTo6U3RhdGUpKTsKKworICAgIFByb2JlOjpDb250
ZXh0IGNvbnRleHRDb3B5KHN0YXRlQ29weSk7CisgICAgZXhlY3V0ZU9TUkV4aXQoY29udGV4dENv
cHkpOworCisgICAgUkVMRUFTRV9BU1NFUlQoY29udGV4dENvcHkuaGFzV3JpdGVzVG9GbHVzaCgp
KTsKKyAgICBzdGFja0NvcHkgPSBjb250ZXh0Q29weS5yZWxlYXNlU3RhY2soKTsKKworLy8gICAg
ZGF0YUxvZygiICAgbWxhbSA6OiBwcmV0ZW5kRXhlY3V0ZU9TUkV4aXQoKSBzdGF0ZUNvcHkgIiwg
UmF3UG9pbnRlcihzdGF0ZUNvcHkpLCAiLCBzdGFja0NvcHkgIiwgUmF3UG9pbnRlcihzdGFja0Nv
cHkpLCAiXG4iKTsKKyAgICBSRUxFQVNFX0FTU0VSVChzdGF0ZUNvcHkgJiYgc3RhY2tDb3B5KTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBuZXh0SUQoVCBpZCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8VD4oaWQgKyAxKTsgfQorCit2b2lkIE9TUkV4aXQ6OnZlcmlmeUV4ZWN1dGVPU1JFeGl0
KFByb2JlOjpDb250ZXh0JiBjb250ZXh0KQoreworLy8gICAgZGF0YUxvZygiICAgbWxhbSA6OiB2
ZXJpZnlFeGVjdXRlT1NSRXhpdCgpIHN0YXRlQ29weSAiLCBSYXdQb2ludGVyKHN0YXRlQ29weSks
ICIsIHN0YWNrQ29weSAiLCBSYXdQb2ludGVyKHN0YWNrQ29weSksICJcbiIpOworCisgICAgaWYg
KCFnZXRlbnYoInZlcmlmeSIpKQorICAgICAgICByZXR1cm47CisKKyAgICBQcm9iZTo6Q29udGV4
dCBjb250ZXh0Q29weShzdGF0ZUNvcHkpOworICAgIGNvbnRleHRDb3B5LnNldFN0YWNrKFdURk1v
dmUoKnN0YWNrQ29weSkpOworCisgICAgLy8gQ29tcGFyZSByZWdpc3RlcnM6CisgICAgYm9vbCBo
YXNSZWdpc3RlckRpZmZlcmVuY2UgPSBmYWxzZTsKKyAgICBmb3IgKGF1dG8gaWQgPSBNYWNyb0Fz
c2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpOyBpZCA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lz
dGVyKCk7IGlkID0gbmV4dElEKGlkKSkgeworICAgICAgICBpZiAoaWQgPT0gR1BSSW5mbzo6cmVn
VDAgfHwgaWQgPT0gR1BSSW5mbzo6cmVnVDEgfHwgaWQgPT0gR1BSSW5mbzo6cmVnVDIgfHwgaWQg
PT0gTWFjcm9Bc3NlbWJsZXI6OnNfc2NyYXRjaFJlZ2lzdGVyKQorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIGlmIChjb250ZXh0LmdwcihpZCkgIT0gY29udGV4dENvcHkuZ3ByKGlkKSkg
eworICAgICAgICAgICAgZGF0YUxvZygiICAgRVJST1I6IEdQUiAiLCBjb250ZXh0Lmdwck5hbWUo
aWQpLCAiIGV4cGVjdGVkOiAiLCBmb3JtYXQoIjB4JTBsbHgiLCBjb250ZXh0LmdwcihpZCkpLCAi
LCBhY3R1YWw6ICIsIGZvcm1hdCgiMHglMGxseCIsIGNvbnRleHRDb3B5LmdwcihpZCkpLCAiXG4i
KTsKKyAgICAgICAgICAgIGhhc1JlZ2lzdGVyRGlmZmVyZW5jZSA9IHRydWU7CisgICAgICAgIH0K
KyAgICB9CisgICAgZm9yIChhdXRvIGlkID0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0RlBSZWdpc3Rl
cigpOyBpZCA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQo
aWQpKSB7CisgICAgICAgIGlmIChjb250ZXh0LmZwcjx1aW50NjRfdD4oaWQpICE9IGNvbnRleHRD
b3B5LmZwcjx1aW50NjRfdD4oaWQpKSB7CisgICAgICAgICAgICBkYXRhTG9nKCIgICBFUlJPUjog
RlBSICIsIGNvbnRleHQuZnByTmFtZShpZCksICIgZXhwZWN0ZWQ6ICIsIGNvbnRleHQuZnByKGlk
KSwgIi8iLCBmb3JtYXQoIjB4JTBsbHgiLCBjb250ZXh0LmZwcjx1aW50NjRfdD4oaWQpKSwgIiwg
YWN0dWFsOiAiLCBjb250ZXh0Q29weS5mcHIoaWQpLCAiLyIsIGZvcm1hdCgiMHglMGxseCIsIGNv
bnRleHRDb3B5LmZwcjx1aW50NjRfdD4oaWQpKSwgIlxuIik7CisgICAgICAgICAgICBoYXNSZWdp
c3RlckRpZmZlcmVuY2UgPSB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVGhlIEpJ
VCBPU1IgcmFtcCB1c2VzIHJlZ1QyIHRvIGp1bXAgdGhlIHRhcmdldCBQQy4KKyAgICBpZiAoY29u
dGV4dC5ncHIoR1BSSW5mbzo6cmVnVDIpICE9IGNvbnRleHRDb3B5LnNwcihYODZSZWdpc3RlcnM6
OmVpcCkpIHsKKyAgICAgICAgZGF0YUxvZygiICAgRVJST1I6IFBDIGV4cGVjdGVkOiAiLCBmb3Jt
YXQoIjB4JTBsbHgiLCBjb250ZXh0LmdwcihHUFJJbmZvOjpyZWdUMikpLCAiLCBhY3R1YWw6ICIs
IGZvcm1hdCgiMHglMGxseCIsIGNvbnRleHRDb3B5LnNwcihYODZSZWdpc3RlcnM6OmVpcCkpLCAi
XG4iKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVChjb250ZXh0LmdwcihNYWNyb0Fzc2Vt
Ymxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpID09IGNvbnRleHRDb3B5LmdwcihNYWNyb0Fzc2Vt
Ymxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjb250ZXh0
LmdwcihNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIpID09IGNvbnRleHRDb3B5
LmdwcihNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIpKTsKKyAgICBSRUxFQVNF
X0FTU0VSVChjb250ZXh0LmdwcihHUFJJbmZvOjpyZWdUMikgPT0gY29udGV4dENvcHkuc3ByKFg4
NlJlZ2lzdGVyczo6ZWlwKSk7CisKKyAgICBQcm9iZTo6U3RhY2smIGFjdHVhbFN0YWNrID0gY29u
dGV4dENvcHkuc3RhY2soKTsKKyAgICBQcm9iZTo6U3RhY2smIGV4cGVjdGVkU3RhY2sgPSBjb250
ZXh0LnN0YWNrKCk7CisgICAgYm9vbCBoYXNTdGFja0RpZmZlcmVuY2UgPSBmYWxzZTsKKyAgICB1
aW50OF90KiBzcCA9IGNvbnRleHQuZ3ByPHVpbnQ4X3QqPihNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOworICAgIGZvciAoYXV0byBpdCA9IGFjdHVhbFN0YWNrLm1fcGFnZXMu
YmVnaW4oKTsgaXQgIT0gYWN0dWFsU3RhY2subV9wYWdlcy5lbmQoKTsgKytpdCkgeworICAgICAg
ICBQcm9iZTo6UGFnZSogcGFnZSA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgdWludDhfdCog
YmFzZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHBhZ2UtPm1fYmFzZUxvZ2ljYWxBZGRy
ZXNzKTsKKyAgICAgICAgYm9vbCBwcmludGVkVGl0bGUgPSBmYWxzZTsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBQcm9iZTo6UGFnZTo6c19wYWdlU2l6ZTsgaSArPSBzaXplb2YodWlu
dHB0cl90KSkgeworICAgICAgICAgICAgdWludDhfdCogYWRkcmVzcyA9IGJhc2UgKyBpOworICAg
ICAgICAgICAgaWYgKGFkZHJlc3MgPCBzcCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIGF1dG8gYWN0dWFsID0gYWN0dWFsU3RhY2suZ2V0PHVpbnRwdHJfdD4oYWRkcmVz
cyk7CisgICAgICAgICAgICBhdXRvIGV4cGVjdGVkID0gZXhwZWN0ZWRTdGFjay5nZXQ8dWludHB0
cl90PihhZGRyZXNzKTsKKyAgICAgICAgICAgIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIXByaW50ZWRUaXRsZSkgeworICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICBFUlJPUjogc3RhY2sgcGFnZSAiLCBSYXdQb2ludGVyKGJhc2UpLCAiIHwgYWN0
dWFsIHNpZGUgcGFnZSAiLCBSYXdQb2ludGVyKCZwYWdlLT5tX2J1ZmZlciksICJcbiIpOworICAg
ICAgICAgICAgICAgICAgICBwcmludGVkVGl0bGUgPSB0cnVlOworICAgICAgICAgICAgICAgICAg
ICBoYXNTdGFja0RpZmZlcmVuY2UgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgICBbIiwgUmF3UG9pbnRlcihhZGRyZXNzKSwgIl0gYWN0dWFs
ICIsIGZvcm1hdCgiMHglMGxseCIsIGFjdHVhbCksICIsIGV4cGVjdGVkICIsIGZvcm1hdCgiMHgl
MGxseCIsIGV4cGVjdGVkKSwgIlxuIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisgICAgaWYgKGhhc1N0YWNrRGlmZmVyZW5jZSkgeworICAgICAgICBkYXRhTG9nKCIgICBFUlJP
Ujogc3AgIiwgUmF3UG9pbnRlcihjb250ZXh0Lmdwcjx2b2lkKj4oTWFjcm9Bc3NlbWJsZXI6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyKSksICJcbiIpOworICAgICAgICBkYXRhTG9nKCIgICBFUlJPUjog
ZnAgIiwgUmF3UG9pbnRlcihjb250ZXh0Lmdwcjx2b2lkKj4oTWFjcm9Bc3NlbWJsZXI6OmZyYW1l
UG9pbnRlclJlZ2lzdGVyKSksICJcbiIpOworICAgICAgICBkYXRhTG9nKCIgICBFUlJPUjogdGFy
Z2V0IHBjICIsIFJhd1BvaW50ZXIoY29udGV4dC5ncHI8dm9pZCo+KEdQUkluZm86OnJlZ1QyKSks
ICJcbiIpOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVCghaGFzU3RhY2tEaWZmZXJlbmNlKTsK
KworICAgIGRlbGV0ZSBzdGFja0NvcHk7CisgICAgc3RhY2tDb3B5ID0gbnVsbHB0cjsKKyAgICBk
ZWxldGUgc3RhdGVDb3B5OworICAgIHN0YXRlQ29weSA9IG51bGxwdHI7CisKKyAgICBpZiAoaGFz
UmVnaXN0ZXJEaWZmZXJlbmNlIHx8IGhhc1N0YWNrRGlmZmVyZW5jZSkKKyAgICAgICAgZGF0YUxv
ZygiXG4iKTsKK30KKwordm9pZCBPU1JFeGl0OjpleGVjdXRlT1NSRXhpdChDb250ZXh0JiBjb250
ZXh0KQoreworICAgIFZNJiB2bSA9ICpjb250ZXh0LmFyZzxWTSo+KCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgRXhlY1N0YXRlKiBleGVjID0gY29u
dGV4dC5mcDxFeGVjU3RhdGUqPigpOworICAgIEFTU0VSVCgmZXhlYy0+dm0oKSA9PSAmdm0pOwor
CisgICAgaWYgKHZtLmNhbGxGcmFtZUZvckNhdGNoKSB7CisgICAgICAgIGV4ZWMgPSB2bS5jYWxs
RnJhbWVGb3JDYXRjaDsKKyAgICAgICAgY29udGV4dC5mcCgpID0gZXhlYzsKKyAgICB9CisKKyAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVChj
b2RlQmxvY2spOworICAgIEFTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpE
RkdKSVQpOworCisgICAgLy8gSXQncyBzb3J0IG9mIHByZWZlcmFibGUgdGhhdCB3ZSBkb24ndCBH
QyB3aGlsZSBpbiBoZXJlLiBBbnl3YXlzLCBkb2luZyBzbyB3b3VsZG4ndAorICAgIC8vIHJlYWxs
eSBiZSBwcm9maXRhYmxlLgorICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyh2bS5oZWFwKTsK
KworICAgIHVpbnQzMl90IGV4aXRJbmRleCA9IHZtLm9zckV4aXRJbmRleDsKKyAgICBPU1JFeGl0
JiBleGl0ID0gY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpLT5vc3JFeGl0W2V4aXRJbmRleF07
CisKKyAgICBBU1NFUlQoIXZtLmNhbGxGcmFtZUZvckNhdGNoIHx8IGV4aXQubV9raW5kID09IEdl
bmVyaWNVbndpbmQpOworICAgIEFTU0VSVF9VTlVTRUQoc2NvcGUsICFleGl0LmlzRXhjZXB0aW9u
SGFuZGxlcigpIHx8ICEhc2NvcGUuZXhjZXB0aW9uKCkpOworCisgICAgaWYgKGdldGVudigidmVy
Ym9zZSIpKSBkYXRhTG9nKCIgICBwcm9iZSBAIiwgX19MSU5FX18sICIgZnA8IiwgUmF3UG9pbnRl
cihjb250ZXh0LmZwPGNoYXIqPigpKSwgIj4tMHgzOCBbIiwgUmF3UG9pbnRlcihjb250ZXh0LmZw
PGNoYXIqPigpLTB4MzgpLCAiXSA9ICIsIFJhd1BvaW50ZXIoKih2b2lkKiopKGNvbnRleHQuZnA8
Y2hhcio+KCktMHgzOCkpLCAiXG4iKTsKKyAgICBpZiAoVU5MSUtFTFkoIWV4aXQuZXhpdFN0YXRl
KSkgeworICAgICAgICAvLyBFbnN1cmUgd2UgaGF2ZSBiYXNlbGluZSBjb2RlQmxvY2tzIHRvIE9T
UiBleGl0IHRvLgorICAgICAgICBwcmVwYXJlQ29kZU9yaWdpbkZvck9TUkV4aXQoZXhlYywgZXhp
dC5tX2NvZGVPcmlnaW4pOworCisgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sg
PSBjb2RlQmxvY2stPmJhc2VsaW5lQWx0ZXJuYXRpdmUoKTsKKyAgICAgICAgQVNTRVJUKGJhc2Vs
aW5lQ29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworCisgICAg
ICAgIC8vIENvbXB1dGUgdGhlIHZhbHVlIHJlY292ZXJpZXMuCisgICAgICAgIE9wZXJhbmRzPFZh
bHVlUmVjb3Zlcnk+IG9wZXJhbmRzOworICAgICAgICBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZn
KCktPnZhcmlhYmxlRXZlbnRTdHJlYW0ucmVjb25zdHJ1Y3QoY29kZUJsb2NrLCBleGl0Lm1fY29k
ZU9yaWdpbiwgY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpLT5taW5pZmllZERGRywgZXhpdC5t
X3N0cmVhbUluZGV4LCBvcGVyYW5kcyk7CisKKyAgICAgICAgU3BlY3VsYXRpb25SZWNvdmVyeSog
cmVjb3ZlcnkgPSBudWxscHRyOworICAgICAgICBpZiAoZXhpdC5tX3JlY292ZXJ5SW5kZXggIT0g
VUlOVF9NQVgpCisgICAgICAgICAgICByZWNvdmVyeSA9ICZjb2RlQmxvY2stPmppdENvZGUoKS0+
ZGZnKCktPnNwZWN1bGF0aW9uUmVjb3ZlcnlbZXhpdC5tX3JlY292ZXJ5SW5kZXhdOworCisgICAg
ICAgIGludDMyX3QgYWN0aXZlVGhyZXNob2xkID0gYmFzZWxpbmVDb2RlQmxvY2stPmFkanVzdGVk
Q291bnRlclZhbHVlKE9wdGlvbnM6OnRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVw
KCkpOworICAgICAgICBkb3VibGUgYWRqdXN0ZWRUaHJlc2hvbGQgPSBhcHBseU1lbW9yeVVzYWdl
SGV1cmlzdGljcyhhY3RpdmVUaHJlc2hvbGQsIGJhc2VsaW5lQ29kZUJsb2NrKTsKKyAgICAgICAg
QVNTRVJUKGFkanVzdGVkVGhyZXNob2xkID4gMCk7CisgICAgICAgIGFkanVzdGVkVGhyZXNob2xk
ID0gQmFzZWxpbmVFeGVjdXRpb25Db3VudGVyOjpjbGlwcGVkVGhyZXNob2xkKGNvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCksIGFkanVzdGVkVGhyZXNob2xkKTsKKworICAgICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9ja0ZvckV4aXQgPSBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJhc2VsaW5l
Q29kZUJsb2NrKGV4aXQubV9jb2RlT3JpZ2luLCBiYXNlbGluZUNvZGVCbG9jayk7CisgICAgICAg
IFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+IGRlY29kZWRDb2RlTWFwOworICAgICAg
ICBjb2RlQmxvY2tGb3JFeGl0LT5qaXRDb2RlTWFwKCktPmRlY29kZShkZWNvZGVkQ29kZU1hcCk7
CisKKyAgICAgICAgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0KiBtYXBwaW5nID0gYmluYXJ5U2Vh
cmNoPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCwgdW5zaWduZWQ+KGRlY29kZWRDb2RlTWFwLCBk
ZWNvZGVkQ29kZU1hcC5zaXplKCksIGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIEJ5
dGVjb2RlQW5kTWFjaGluZU9mZnNldDo6Z2V0Qnl0ZWNvZGVJbmRleCk7CisKKyAgICAgICAgQVNT
RVJUKG1hcHBpbmcpOworICAgICAgICBBU1NFUlQobWFwcGluZy0+bV9ieXRlY29kZUluZGV4ID09
IGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOworCisgICAgICAgIHB0cmRpZmZfdCBm
aW5hbFN0YWNrUG9pbnRlck9mZnNldCA9IGNvZGVCbG9ja0ZvckV4aXQtPnN0YWNrUG9pbnRlck9m
ZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKTsKKworICAgICAgICB2b2lkKiBqdW1wVGFyZ2V0ID0g
Y29kZUJsb2NrRm9yRXhpdC0+aml0Q29kZSgpLT5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KG1h
cHBpbmctPm1fbWFjaGluZUNvZGVPZmZzZXQpOworCisgICAgICAgIGV4aXQuZXhpdFN0YXRlID0g
YWRvcHRSZWYobmV3IE9TUkV4aXRTdGF0ZShleGl0LCBjb2RlQmxvY2ssIGJhc2VsaW5lQ29kZUJs
b2NrLCBvcGVyYW5kcywgcmVjb3ZlcnksIGZpbmFsU3RhY2tQb2ludGVyT2Zmc2V0LCBhY3RpdmVU
aHJlc2hvbGQsIGFkanVzdGVkVGhyZXNob2xkLCBqdW1wVGFyZ2V0KSk7CisKKyAgICAgICAgaWYg
KFVOTElLRUxZKHZtLm1fcGVyQnl0ZWNvZGVQcm9maWxlciAmJiBjb2RlQmxvY2stPmppdENvZGUo
KS0+ZGZnQ29tbW9uKCktPmNvbXBpbGF0aW9uKSkgeworICAgICAgICAgICAgUHJvZmlsZXI6OkRh
dGFiYXNlJiBkYXRhYmFzZSA9ICp2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXI7CisgICAgICAgICAg
ICBQcm9maWxlcjo6Q29tcGlsYXRpb24qIGNvbXBpbGF0aW9uID0gY29kZUJsb2NrLT5qaXRDb2Rl
KCktPmRmZ0NvbW1vbigpLT5jb21waWxhdGlvbi5nZXQoKTsKKworICAgICAgICAgICAgUHJvZmls
ZXI6Ok9TUkV4aXQqIHByb2ZpbGVyRXhpdCA9IGNvbXBpbGF0aW9uLT5hZGRPU1JFeGl0KAorICAg
ICAgICAgICAgICAgIGV4aXRJbmRleCwgUHJvZmlsZXI6Ok9yaWdpblN0YWNrKGRhdGFiYXNlLCBj
b2RlQmxvY2ssIGV4aXQubV9jb2RlT3JpZ2luKSwKKyAgICAgICAgICAgICAgICBleGl0Lm1fa2lu
ZCwgZXhpdC5tX2tpbmQgPT0gVW5jb3VudGFibGVJbnZhbGlkYXRpb24pOworICAgICAgICAgICAg
ZXhpdC5leGl0U3RhdGUtPnByb2ZpbGVyRXhpdCA9IHByb2ZpbGVyRXhpdDsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp2ZXJib3NlT1NSKCkgfHwgT3B0aW9uczo6
dmVyYm9zZURGR09TUkV4aXQoKSkpIHsKKyAgICAgICAgICAgIGRhdGFMb2dGKCJERkcgT1NSIGV4
aXQgIyV1ICglcywgJXMpIGZyb20gJXMsIHdpdGggb3BlcmFuZHMgPSAlcyIsCisgICAgICAgICAg
ICAgICAgZXhpdEluZGV4LCB0b0NTdHJpbmcoZXhpdC5tX2NvZGVPcmlnaW4pLmRhdGEoKSwKKyAg
ICAgICAgICAgICAgICBleGl0S2luZFRvU3RyaW5nKGV4aXQubV9raW5kKSwgdG9DU3RyaW5nKCpj
b2RlQmxvY2spLmRhdGEoKSwKKyAgICAgICAgICAgICAgICB0b0NTdHJpbmcoaWdub3JpbmdDb250
ZXh0PER1bXBDb250ZXh0PihvcGVyYW5kcykpLmRhdGEoKSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBPU1JFeGl0U3RhdGUmIGV4aXRTdGF0ZSA9ICpleGl0LmV4aXRTdGF0ZS5nZXQoKTsKKyAg
ICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gZXhpdFN0YXRlLmJhc2VsaW5lQ29kZUJs
b2NrOworICAgIEFTU0VSVChiYXNlbGluZUNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6
OkJhc2VsaW5lSklUKTsKKworICAgIE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+JiBvcGVyYW5kcyA9
IGV4aXRTdGF0ZS5vcGVyYW5kczsKKyAgICBTcGVjdWxhdGlvblJlY292ZXJ5KiByZWNvdmVyeSA9
IGV4aXRTdGF0ZS5yZWNvdmVyeTsKKworICAgIGlmIChnZXRlbnYoInZlcmJvc2UiKSkgZGF0YUxv
ZygiICAgcHJvYmUgQCIsIF9fTElORV9fLCAiIGZwPCIsIFJhd1BvaW50ZXIoY29udGV4dC5mcDxj
aGFyKj4oKSksICI+LTB4MzggWyIsIFJhd1BvaW50ZXIoY29udGV4dC5mcDxjaGFyKj4oKS0weDM4
KSwgIl0gPSAiLCBSYXdQb2ludGVyKCoodm9pZCoqKShjb250ZXh0LmZwPGNoYXIqPigpLTB4Mzgp
KSwgIlxuIik7CisgICAgaWYgKGV4aXQubV9raW5kID09IEdlbmVyaWNVbndpbmQpIHsKKyAgICAg
ICAgLy8gV2UgYXJlIGFjdGluZyBhcyBhIGRlZmFjdG8gb3BfY2F0Y2ggYmVjYXVzZSB3ZSBhcnJp
dmUgaGVyZSBmcm9tIGdlbmVyaWNVbndpbmQoKS4KKyAgICAgICAgLy8gU28sIHdlIG11c3QgcmVz
dG9yZSBvdXIgY2FsbCBmcmFtZSBhbmQgc3RhY2sgcG9pbnRlci4KKyAgICAgICAgcmVzdG9yZUNh
bGxlZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKGNvbnRleHQpOworICAg
ICAgICBBU1NFUlQoY29udGV4dC5mcCgpID09IHZtLmNhbGxGcmFtZUZvckNhdGNoKTsKKyAgICB9
CisgICAgY29udGV4dC5zcCgpID0gY29udGV4dC5mcDx1aW50OF90Kj4oKSArIChjb2RlQmxvY2st
PnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSk7CisKKyAgICBBU1NFUlQo
IShjb250ZXh0LmZwPHVpbnRwdHJfdD4oKSAmIDB4NykpOworCisgICAgaWYgKGV4aXRTdGF0ZS5w
cm9maWxlckV4aXQpCisgICAgICAgIGV4aXRTdGF0ZS5wcm9maWxlckV4aXQtPmluY0NvdW50KCk7
CisKKyAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKKyAgICBGcmFtZSBmcmFtZShjcHUuZnAo
KSwgY29udGV4dC5zdGFjaygpKTsKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgQVNTRVJUKGNw
dS5ncHIoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSA9PSBUYWdUeXBlTnVtYmVyKTsK
KyAgICBBU1NFUlQoY3B1LmdwcihHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpID09IFRhZ01hc2sp
OworI2VuZGlmCisKKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6cHJpbnRFYWNoT1NSRXhpdCgp
KSkKKyAgICAgICAgcHJpbnRPU1JFeGl0KGNvbnRleHQsIHZtLm9zckV4aXRJbmRleCwgZXhpdCk7
CisKKyAgICAvLyBQZXJmb3JtIHNwZWN1bGF0aW9uIHJlY292ZXJ5LiBUaGlzIG9ubHkgY29tZXMg
aW50byBwbGF5IHdoZW4gYW4gb3BlcmF0aW9uCisgICAgLy8gc3RhcnRzIG11dGF0aW5nIHN0YXRl
IGJlZm9yZSB2ZXJpZnlpbmcgdGhlIHNwZWN1bGF0aW9uIGl0IGhhcyBhbHJlYWR5IG1hZGUuCisK
KyAgICBpZiAoZ2V0ZW52KCJ2ZXJib3NlIikpIGRhdGFMb2coIiAgIHByb2JlIEAiLCBfX0xJTkVf
XywgIiBmcDwiLCBSYXdQb2ludGVyKGNvbnRleHQuZnA8Y2hhcio+KCkpLCAiPi0weDM4IFsiLCBS
YXdQb2ludGVyKGNvbnRleHQuZnA8Y2hhcio+KCktMHgzOCksICJdID0gIiwgUmF3UG9pbnRlcigq
KHZvaWQqKikoY29udGV4dC5mcDxjaGFyKj4oKS0weDM4KSksICJcbiIpOworICAgIGlmIChyZWNv
dmVyeSkgeworICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LT50eXBlKCkpIHsKKyAgICAgICAgY2Fz
ZSBTcGVjdWxhdGl2ZUFkZDoKKyAgICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkg
PSBjcHUuZ3ByPHVpbnQzMl90PihyZWNvdmVyeS0+ZGVzdCgpKSAtIGNwdS5ncHI8dWludDMyX3Q+
KHJlY292ZXJ5LT5zcmMoKSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIEFTU0VS
VCghKGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgPj4gMzIpKTsKKyAgICAgICAgICAgIGNwdS5n
cHIocmVjb3ZlcnktPmRlc3QoKSkgfD0gVGFnVHlwZU51bWJlcjsKKyNlbmRpZgorICAgICAgICAg
ICAgaWYgKGdldGVudigidmVyYm9zZSIpKSBkYXRhTG9nKCIgICAgUkVDT1ZFUiBTcGVjdWxhdGl2
ZUFkZCBncHIgIiwgUmF3UG9pbnRlcihjcHUuZ3ByPHZvaWQqPihyZWNvdmVyeS0+ZGVzdCgpKSks
ICJcbiIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBTcGVjdWxhdGl2ZUFk
ZEltbWVkaWF0ZToKKyAgICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgPSAoY3B1
Lmdwcjx1aW50MzJfdD4ocmVjb3ZlcnktPmRlc3QoKSkgLSByZWNvdmVyeS0+aW1tZWRpYXRlKCkp
OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBBU1NFUlQoIShjcHUuZ3ByKHJlY292
ZXJ5LT5kZXN0KCkpID4+IDMyKSk7CisgICAgICAgICAgICBjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0
KCkpIHw9IFRhZ1R5cGVOdW1iZXI7CisjZW5kaWYKKyAgICAgICAgICAgIGlmIChnZXRlbnYoInZl
cmJvc2UiKSkgZGF0YUxvZygiICAgIFJFQ09WRVIgU3BlY3VsYXRpdmVBZGRJbW1lZGlhdGUgZ3By
ICIsIFJhd1BvaW50ZXIoY3B1Lmdwcjx2b2lkKj4ocmVjb3ZlcnktPmRlc3QoKSkpLCAiXG4iKTsK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQm9vbGVhblNwZWN1bGF0aW9uQ2hl
Y2s6CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRl
c3QoKSkgPSBjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkpIF4gVmFsdWVGYWxzZTsKKyAgICAgICAg
ICAgIGlmIChnZXRlbnYoInZlcmJvc2UiKSkgZGF0YUxvZygiICAgIFJFQ09WRVIgQm9vbGVhblNw
ZWN1bGF0aW9uQ2hlY2sgZ3ByICIsIFJhd1BvaW50ZXIoY3B1Lmdwcjx2b2lkKj4ocmVjb3Zlcnkt
PmRlc3QoKSkpLCAiXG4iKTsKKyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgLy8g
UmVmaW5lIHNvbWUgYXJyYXkgYW5kL29yIHZhbHVlIHByb2ZpbGUsIGlmIGFwcHJvcHJpYXRlLgor
CisgICAgaWYgKGdldGVudigidmVyYm9zZSIpKSBkYXRhTG9nKCIgICBwcm9iZSBAIiwgX19MSU5F
X18sICIgZnA8IiwgUmF3UG9pbnRlcihjb250ZXh0LmZwPGNoYXIqPigpKSwgIj4tMHgzOCBbIiwg
UmF3UG9pbnRlcihjb250ZXh0LmZwPGNoYXIqPigpLTB4MzgpLCAiXSA9ICIsIFJhd1BvaW50ZXIo
Kih2b2lkKiopKGNvbnRleHQuZnA8Y2hhcio+KCktMHgzOCkpLCAiXG4iKTsKKyAgICBpZiAoISFl
eGl0Lm1fanNWYWx1ZVNvdXJjZSkgeworICAgICAgICBpZiAoZXhpdC5tX2tpbmQgPT0gQmFkQ2Fj
aGUgfHwgZXhpdC5tX2tpbmQgPT0gQmFkSW5kZXhpbmdUeXBlKSB7CisgICAgICAgICAgICAvLyBJ
ZiB0aGUgaW5zdHJ1Y3Rpb24gdGhhdCB0aGlzIG9yaWdpbmF0ZWQgZnJvbSBoYXMgYW4gYXJyYXkg
cHJvZmlsZSwgdGhlbgorICAgICAgICAgICAgLy8gcmVmaW5lIGl0LiBJZiBpdCBkb2Vzbid0LCB0
aGVuIGRvIG5vdGhpbmcuIFRoZSBsYXR0ZXIgY291bGQgaGFwcGVuIGZvcgorICAgICAgICAgICAg
Ly8gaG9pc3RlZCBjaGVja3MsIG9yIGNoZWNrcyBlbWl0dGVkIGZvciBvcGVyYXRpb25zIHRoYXQg
ZGlkbid0IGhhdmUgYXJyYXkKKyAgICAgICAgICAgIC8vIHByb2ZpbGluZyAtIGVpdGhlciBvcHMg
dGhhdCBhcmVuJ3QgYXJyYXkgYWNjZXNzZXMgYXQgYWxsLCBvciB3ZXJlbid0CisgICAgICAgICAg
ICAvLyBrbm93biB0byBiZSBhcnJheSBhY2Nlc2VzIGluIHRoZSBieXRlY29kZS4gVGhlIGxhdHRl
ciBjYXNlIGlzIGEgRklYTUUKKyAgICAgICAgICAgIC8vIHdoaWxlIHRoZSBmb3JtZXIgY2FzZSBp
cyBhbiBvdXRjb21lIG9mIGEgQ2hlY2tTdHJ1Y3R1cmUgbm90IGtub3dpbmcgd2h5CisgICAgICAg
ICAgICAvLyBpdCB3YXMgZW1pdHRlZCAoY291bGQgYmUgZWl0aGVyIGR1ZSB0byBhbiBpbmxpbmUg
Y2FjaGUgb2YgYSBwcm9wZXJ0eQorICAgICAgICAgICAgLy8gcHJvcGVydHkgYWNjZXNzLCBvciBk
dWUgdG8gYW4gYXJyYXkgcHJvZmlsZSkuCisKKyAgICAgICAgICAgIENvZGVPcmlnaW4gY29kZU9y
aWdpbiA9IGV4aXQubV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGU7CisgICAgICAgICAgICBDb2Rl
QmxvY2sqIHByb2ZpbGVkQ29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRC
YXNlbGluZUNvZGVCbG9jayhjb2RlT3JpZ2luLCBiYXNlbGluZUNvZGVCbG9jayk7CisgICAgICAg
ICAgICBpZiAoQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBwcm9maWxlZENvZGVCbG9jay0+
Z2V0QXJyYXlQcm9maWxlKGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpIHsKKyAgICAgICAgICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGpzVmFsdWVGb3IoY3B1LCBleGl0Lm1fanNWYWx1
ZVNvdXJjZSkuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CisgICAgICAgICAgICAgICAgYXJyYXlQ
cm9maWxlLT5vYnNlcnZlU3RydWN0dXJlKHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgYXJy
YXlQcm9maWxlLT5vYnNlcnZlQXJyYXlNb2RlKGFycmF5TW9kZUZyb21TdHJ1Y3R1cmUoc3RydWN0
dXJlKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoTWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZSBwcm9maWxlID0gZXhpdC5tX3ZhbHVlUHJvZmlsZSkKKyAgICAg
ICAgICAgIHByb2ZpbGUucmVwb3J0VmFsdWUoanNWYWx1ZUZvcihjcHUsIGV4aXQubV9qc1ZhbHVl
U291cmNlKSk7CisgICAgfQorCisgICAgLy8gRG8gYWxsIGRhdGEgZm9ybWF0IGNvbnZlcnNpb25z
IGFuZCBzdG9yZSB0aGUgcmVzdWx0cyBpbnRvIHRoZSBzdGFjay4KKyAgICAvLyBOb3RlOiB3ZSBu
ZWVkIHRvIHJlY292ZXIgdmFsdWVzIGJlZm9yZSByZXN0b3JpbmcgY2FsbGVlIHNhdmUgcmVnaXN0
ZXJzIGJlbG93CisgICAgLy8gYmVjYXVzZSB0aGUgcmVjb3ZlcnkgbWF5IHJlbHkgb24gdmFsdWVz
IGluIHNvbWUgb2YgY2FsbGVlIHNhdmUgcmVnaXN0ZXJzLgorCisgICAgaW50IGNhbGxlZVNhdmVT
cGFjZUFzVmlydHVhbFJlZ2lzdGVycyA9IHN0YXRpY19jYXN0PGludD4oYmFzZWxpbmVDb2RlQmxv
Y2stPmNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKTsKKyAgICBzaXplX3QgbnVt
YmVyT2ZPcGVyYW5kcyA9IG9wZXJhbmRzLnNpemUoKTsKKyAgICBpZiAoZ2V0ZW52KCJ2ZXJib3Nl
IikpIGRhdGFMb2coIiAgIHByb2JlIEAiLCBfX0xJTkVfXywgIiBmcDwiLCBSYXdQb2ludGVyKGNv
bnRleHQuZnA8Y2hhcio+KCkpLCAiPi0weDM4IFsiLCBSYXdQb2ludGVyKGNvbnRleHQuZnA8Y2hh
cio+KCktMHgzOCksICJdID0gIiwgUmF3UG9pbnRlcigqKHZvaWQqKikoY29udGV4dC5mcDxjaGFy
Kj4oKS0weDM4KSksICJcbiIpOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBu
dW1iZXJPZk9wZXJhbmRzOyArK2luZGV4KSB7CisgICAgICAgIGNvbnN0IFZhbHVlUmVjb3Zlcnkm
IHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhdOworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVn
ID0gb3BlcmFuZHMudmlydHVhbFJlZ2lzdGVyRm9ySW5kZXgoaW5kZXgpOworCisgICAgICAgIGlm
IChyZWcuaXNMb2NhbCgpICYmIHJlZy50b0xvY2FsKCkgPCBjYWxsZWVTYXZlU3BhY2VBc1ZpcnR1
YWxSZWdpc3RlcnMpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpbnQgb3BlcmFu
ZCA9IHJlZy5vZmZzZXQoKTsKKworICAgICAgICAvLyBtbGFtCisgICAgICAgIGlmIChyZWNvdmVy
eS5pc0luSlNTdGFjaygpKSB7CisgICAgICAgICAgICB2b2lkKiBvcGVyYW5kQWRkcmVzcyA9ICZl
eGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKTsKKyAgICAgICAgICAgIGlmIChvcGVy
YW5kQWRkcmVzcyA8IGNvbnRleHQuc3A8dm9pZCo+KCkpIHsKKyAgICAgICAgICAgICAgICBmcmFt
ZS5zZXRPcGVyYW5kPHVpbnRwdHJfdD4ob3BlcmFuZCwgMHhiYWRiZWVmMCk7CisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8gbWxh
bSAqLworCisgICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKKyAgICAgICAg
Y2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9w
ZXJhbmQsIGV4ZWMtPnIocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLmpzVmFsdWUoKSk7Cisv
LyAgICAgICAgICAgIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCB2aXJ0dWFsUmVnaXN0ZXIu
b2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpCisKKy8vICAgICAgICAgICAgZnJhbWUuc2V0T3Bl
cmFuZChvcGVyYW5kLCBmcmFtZS5nZXRPcGVyYW5kPEpTVmFsdWU+KHJlY292ZXJ5LnZpcnR1YWxS
ZWdpc3RlcigpKSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEluRlBSOgor
ICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBjcHUuZnByPEpTVmFsdWU+KHJl
Y292ZXJ5LmZwcigpKSk7CisgICAgICAgICAgICBicmVhazsKKworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgICAgIGNhc2UgSW5HUFI6CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJh
bmQsIGNwdS5ncHI8SlNWYWx1ZT4ocmVjb3ZlcnkuZ3ByKCkpKTsKKyAgICAgICAgICAgIGJyZWFr
OworI2Vsc2UKKyAgICAgICAgY2FzZSBJblBhaXI6CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVy
YW5kKG9wZXJhbmQsIEpTVmFsdWUoY3B1LmdwcjxpbnQzMl90PihyZWNvdmVyeS50YWdHUFIoKSks
IGNwdS5ncHI8aW50MzJfdD4ocmVjb3ZlcnkucGF5bG9hZEdQUigpKSkpOworICAgICAgICAgICAg
YnJlYWs7CisjZW5kaWYKKworICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6CisgICAgICAg
ICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFsdWUoY3B1LmdwcjxKU0NlbGwqPihy
ZWNvdmVyeS5ncHIoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ2Vs
bERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFu
ZCwgSlNWYWx1ZShleGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS51bmJveGVkQ2Vs
bCgpKSk7CisgICAgICAgICAgICBicmVhazsKKworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAg
ICAgIGNhc2UgVW5ib3hlZEJvb2xlYW5JbkdQUjoKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJh
bmQob3BlcmFuZCwganNCb29sZWFuKGNwdS5ncHI8Ym9vbD4ocmVjb3ZlcnkuZ3ByKCkpKSk7Cisg
ICAgICAgICAgICBicmVhazsKKyNlbmRpZgorCisgICAgICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNl
ZEluSlNTdGFjazoKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgZXhlYy0+
cihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSkuanNWYWx1ZSgpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6CisgICAgICAgICAgICBmcmFt
ZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFsdWUoY3B1LmdwcjxpbnQzMl90PihyZWNvdmVyeS5n
cHIoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSW50MzJEaXNwbGFj
ZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFs
dWUoZXhlYy0+cihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSkudW5ib3hlZEludDMyKCkpKTsK
KyAgICAgICAgICAgIGJyZWFrOworCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY2FzZSBV
bmJveGVkSW50NTJJbkdQUjoKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwg
SlNWYWx1ZShjcHUuZ3ByPGludDY0X3Q+KHJlY292ZXJ5LmdwcigpKSA+PiBKU1ZhbHVlOjppbnQ1
MlNoaWZ0QW1vdW50KSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEludDUy
RGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5k
LCBKU1ZhbHVlKGV4ZWMtPnIocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLnVuYm94ZWRJbnQ1
MigpKSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJ
bnQ1MkluR1BSOgorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVl
KGNwdS5ncHI8aW50NjRfdD4ocmVjb3ZlcnkuZ3ByKCkpKSk7CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAg
ICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVlKGV4ZWMtPnIocmVjb3Zlcnkudmly
dHVhbFJlZ2lzdGVyKCkpLnVuYm94ZWRTdHJpY3RJbnQ1MigpKSk7CisgICAgICAgICAgICBicmVh
azsKKyNlbmRpZgorCisgICAgICAgIGNhc2UgVW5ib3hlZERvdWJsZUluRlBSOgorICAgICAgICAg
ICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91
YmxlLCBwdXJpZnlOYU4oY3B1LmZwcihyZWNvdmVyeS5mcHIoKSkpKSk7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKChjaGFyKikmZXhlYy0+cihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0
ZXIoKSkgPT0gKGNvbnRleHQuZnA8Y2hhcio+KCkgKyByZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIo
KS5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpKTsgLy8gbWxhbQorICAgICAgICAgICAgaWYg
KGdldGVudigidmVyYm9zZSIpKSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgcHJvYmUg
RG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrIGZwICIsIFJhd1BvaW50ZXIoZXhlYyksICIgWyIsIFJh
d1BvaW50ZXIoJmV4ZWMtPnIocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpKSwgIl0gZXhlYy0+
cihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSkuanNWYWx1ZSgpID0gIiwgUmF3UG9pbnRlcigo
dm9pZCopSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnIocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkp
LmpzVmFsdWUoKSkpLCAiXG4iKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBwcm9i
ZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2sgdW5ib3hlZCA9ICIsIGZvcm1hdCgiMHglMGxseCIs
IGJpdHdpc2VfY2FzdDx1aW50NjRfdD4oZXhlYy0+cihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIo
KSkudW5ib3hlZERvdWJsZSgpKSksICJcbiIpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIiAg
ICAgIHByb2JlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjayBwdXJpZmllZCB1bmJveGVkID0gIiwg
Zm9ybWF0KCIweCUwbGx4IiwgYml0d2lzZV9jYXN0PHVpbnQ2NF90PihwdXJpZnlOYU4oZXhlYy0+
cihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSkudW5ib3hlZERvdWJsZSgpKSkpLCAiXG4iKTsK
KyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBwcm9iZSBEb3VibGVEaXNwbGFjZWRJbkpT
U3RhY2sgYm94ZWQgcHVyaWZpZWQgdW5ib3hlZCA9ICIsIGZvcm1hdCgiMHglMGxseCIsIEpTVmFs
dWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91YmxlLCBwdXJpZnlOYU4oZXhl
Yy0+cihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSkudW5ib3hlZERvdWJsZSgpKSkpKSwgIlxu
Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQs
IEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUsIHB1cmlmeU5hTihleGVjLT5yKHJlY292
ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS51bmJveGVkRG91YmxlKCkpKSk7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIENvbnN0YW50OgorICAgICAgICAgICAgZnJhbWUuc2V0T3Bl
cmFuZChvcGVyYW5kLCByZWNvdmVyeS5jb25zdGFudCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkOgorICAgICAg
ICBjYXNlIENsb25lZEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZDoKKyAgICAgICAgICAgIC8v
IERvbid0IGRvIHRoaXMsIHlldC4KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgLy8gbWxhbQorICAgICAgICBpZiAoZ2V0ZW52
KCJ2ZXJib3NlIikpIHsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICBwcm9iZSBSRUNPVkVSIG9w
ZXJhbmQgIiwgb3BlcmFuZCwgIiAiLCByZWNvdmVyeS50ZWNobmlxdWUoKSwgIjwiLCAoaW50KXJl
Y292ZXJ5LnRlY2huaXF1ZSgpLCAiPiBbIiwgUmF3UG9pbnRlcihmcmFtZS5hZGRyZXNzT2ZPcGVy
YW5kKG9wZXJhbmQpKSwgIl0gIiwgZm9ybWF0KCIweCUwbGx4IiwgZnJhbWUuZ2V0T3BlcmFuZDx1
aW50cHRyX3Q+KG9wZXJhbmQpKSwgIiB8ICIpOworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9
IGZyYW1lLmdldE9wZXJhbmQ8SlNWYWx1ZT4ob3BlcmFuZCk7CisvLyAgICAgICAgICAgIGlmICh2
YWx1ZS5pc0NlbGwoKSAmJiAhSlNEb2xsYXJWTVByb3RvdHlwZTo6aXNWYWxpZENlbGwoJnZtLmhl
YXAsIHZhbHVlLmFzQ2VsbCgpKSkKKy8vICAgICAgICAgICAgICAgIGRhdGFMb2coIkludmFsaWQg
SlNWYWx1ZSAobm90IHZhbGlkIGNlbGwpIik7CisvLyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGlmICghdmFsdWUuaXNDZWxsKCkpCisgICAgICAgICAgICAgICAgZGF0YUxvZyh2YWx1ZSk7
CisgICAgICAgICAgICBkYXRhTG9nKCJcbiIpOworICAgICAgICB9CisgICAgICAgIC8vIG1sYW0g
Ki8KKyAgICB9CisKKyAgICAvLyBOZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBzdGFjayBwb2ludGVy
IGFjY291bnRzIGZvciB0aGUgd29yc3QtY2FzZSBzdGFjayB1c2FnZSBhdCBleGl0LiBUaGlzCisg
ICAgLy8gY291bGQgdG9hc3Qgc29tZSBzdGFjayB0aGF0IHRoZSBERkcgdXNlZC4gV2UgbmVlZCB0
byBkbyBpdCBiZWZvcmUgc3RvcmluZyB0byBzdGFjayBvZmZzZXRzCisgICAgLy8gdXNlZCBieSBi
YXNlbGluZS4KKyAgICBjcHUuc3AoKSA9IGNwdS5mcDx1aW50OF90Kj4oKSAtIChjb2RlQmxvY2st
PmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4aXQgKiBz
aXplb2YoUmVnaXN0ZXIpKTsKKworICAgIC8vIFJlc3RvcmUgdGhlIERGRyBjYWxsZWUgc2F2ZXMg
YW5kIHRoZW4gc2F2ZSB0aGUgb25lcyB0aGUgYmFzZWxpbmUgSklUIHVzZXMuCisgICAgcmVzdG9y
ZUNhbGxlZVNhdmVzRm9yKGNvbnRleHQsIGNvZGVCbG9jayk7CisgICAgc2F2ZUNhbGxlZVNhdmVz
Rm9yKGNvbnRleHQsIGJhc2VsaW5lQ29kZUJsb2NrKTsKKworICAgIC8vIFRoZSB0YWcgcmVnaXN0
ZXJzIGFyZSBuZWVkZWQgdG8gbWF0ZXJpYWxpemUgcmVjb3ZlcmllcyBiZWxvdy4KKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgIGNwdS5ncHIoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSA9
IFRhZ1R5cGVOdW1iZXI7CisgICAgY3B1LmdwcihHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpID0g
VGFnVHlwZU51bWJlciB8IFRhZ0JpdFR5cGVPdGhlcjsKKyNlbmRpZgorCisgICAgaWYgKGV4aXQu
aXNFeGNlcHRpb25IYW5kbGVyKCkpCisgICAgICAgIGNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZy
YW1lQ2FsbGVlU2F2ZXNCdWZmZXIoY29udGV4dCk7CisKKyAgICAvLyBOb3cgdGhhdCB0aGluZ3Mg
b24gdGhlIHN0YWNrIGFyZSByZWNvdmVyZWQsIGRvIHRoZSBhcmd1bWVudHMgcmVjb3ZlcnkuIFdl
IGFzc3VtZSB0aGF0IGFyZ3VtZW50cworICAgIC8vIHJlY292ZXJpZXMgZG9uJ3QgcmVjdXJzaXZl
bHkgcmVmZXIgdG8gZWFjaCBvdGhlci4gQnV0LCB3ZSBkb24ndCB0cnkgdG8gYXNzdW1lIHRoYXQg
dGhleSBvbmx5CisgICAgLy8gcmVmZXIgdG8gY2VydGFpbiByYW5nZXMgb2YgbG9jYWxzLiBIZW5j
ZSB3aHkgd2UgbmVlZCB0byBkbyB0aGlzIGhlcmUsIG9uY2UgdGhlIHN0YWNrIGlzIHNlbnNpYmxl
LgorICAgIC8vIE5vdGUgdGhhdCB3ZSBhbHNvIHJvdWdobHkgYXNzdW1lIHRoYXQgdGhlIGFyZ3Vt
ZW50cyBtaWdodCBzdGlsbCBiZSBtYXRlcmlhbGl6ZWQgb3V0c2lkZSBvZiBpdHMKKyAgICAvLyBp
bmxpbmUgY2FsbCBmcmFtZSBzY29wZSAtIGJ1dCBmb3Igbm93IHRoZSBERkcgd291bGRuJ3QgZG8g
dGhhdC4KKworICAgIERGRzo6ZW1pdFJlc3RvcmVBcmd1bWVudHMoY29udGV4dCwgY29kZUJsb2Nr
LCBvcGVyYW5kcyk7CisKKyAgICAvLyBBZGp1c3QgdGhlIG9sZCBKSVQncyBleGVjdXRlIGNvdW50
ZXIuIFNpbmNlIHdlIGFyZSBleGl0aW5nIE9TUiwgd2Uga25vdworICAgIC8vIHRoYXQgYWxsIG5l
dyBjYWxscyBpbnRvIHRoaXMgY29kZSB3aWxsIGdvIHRvIHRoZSBuZXcgSklULCBzbyB0aGUgZXhl
Y3V0ZQorICAgIC8vIGNvdW50ZXIgb25seSBhZmZlY3RzIGNhbGwgZnJhbWVzIHRoYXQgcGVyZm9y
bWVkIE9TUiBleGl0IGFuZCBjYWxsIGZyYW1lcworICAgIC8vIHRoYXQgd2VyZSBzdGlsbCBleGVj
dXRpbmcgdGhlIG9sZCBKSVQgYXQgdGhlIHRpbWUgb2YgYW5vdGhlciBjYWxsIGZyYW1lJ3MKKyAg
ICAvLyBPU1IgZXhpdC4gV2Ugd2FudCB0byBlbnN1cmUgdGhhdCB0aGUgZm9sbG93aW5nIGlzIHRy
dWU6CisgICAgLy8KKyAgICAvLyAoYSkgQ29kZSB0aGUgcGVyZm9ybXMgYW4gT1NSIGV4aXQgZ2V0
cyBhIGNoYW5jZSB0byByZWVudGVyIG9wdGltaXplZAorICAgIC8vICAgICBjb2RlIGV2ZW50dWFs
bHksIHNpbmNlIG9wdGltaXplZCBjb2RlIGlzIGZhc3Rlci4gQnV0IHdlIGRvbid0CisgICAgLy8g
ICAgIHdhbnQgdG8gZG8gc3VjaCByZWVudGVyeSB0b28gYWdncmVzc2l2ZWx5IChzZWUgKGMpIGJl
bG93KS4KKyAgICAvLworICAgIC8vIChiKSBJZiB0aGVyZSBpcyBjb2RlIG9uIHRoZSBjYWxsIHN0
YWNrIHRoYXQgaXMgc3RpbGwgcnVubmluZyB0aGUgb2xkCisgICAgLy8gICAgIEpJVCdzIGNvZGUg
YW5kIGhhcyBuZXZlciBPU1InZCwgdGhlbiBpdCBzaG91bGQgZ2V0IGEgY2hhbmNlIHRvCisgICAg
Ly8gICAgIHBlcmZvcm0gT1NSIGVudHJ5IGRlc3BpdGUgdGhlIGZhY3QgdGhhdCB3ZSd2ZSBleGl0
ZWQuCisgICAgLy8KKyAgICAvLyAoYykgQ29kZSB0aGUgcGVyZm9ybXMgYW4gT1NSIGV4aXQgc2hv
dWxkIG5vdCBpbW1lZGlhdGVseSByZXRyeSBPU1IKKyAgICAvLyAgICAgZW50cnksIHNpbmNlIGJv
dGggZm9ybXMgb2YgT1NSIGFyZSBleHBlbnNpdmUuIE9TUiBlbnRyeSBpcworICAgIC8vICAgICBw
YXJ0aWN1bGFybHkgZXhwZW5zaXZlLgorICAgIC8vCisgICAgLy8gKGQpIEZyZXF1ZW50IE9TUiBm
YWlsdXJlcywgZXZlbiB0aG9zZSB0aGF0IGRvIG5vdCByZXN1bHQgaW4gdGhlIGNvZGUKKyAgICAv
LyAgICAgcnVubmluZyBpbiBhIGhvdCBsb29wLCByZXN1bHQgaW4gcmVjb21waWxhdGlvbiBnZXR0
aW5nIHRyaWdnZXJlZC4KKyAgICAvLworICAgIC8vIFRvIGVuc3VyZSAoYyksIHdlJ2QgbGlrZSB0
byBzZXQgdGhlIGV4ZWN1dGUgY291bnRlciB0bworICAgIC8vIGNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplQWZ0ZXJXYXJtVXAoKS4gVGhpcyBzZWVtcyBsaWtlIGl0IHdvdWxkIGVuZGFuZ2VyCisgICAg
Ly8gKGEpIGFuZCAoYiksIHNpbmNlIHRoZW4gZXZlcnkgT1NSIGV4aXQgd291bGQgZGVsYXkgdGhl
IG9wcG9ydHVuaXR5IGZvcgorICAgIC8vIGV2ZXJ5IGNhbGwgZnJhbWUgdG8gcGVyZm9ybSBPU1Ig
ZW50cnkuIEVzc2VudGlhbGx5LCBpZiBPU1IgZXhpdCBoYXBwZW5zCisgICAgLy8gZnJlcXVlbnRs
eSBhbmQgdGhlIGZ1bmN0aW9uIGhhcyBmZXcgbG9vcHMsIHRoZW4gdGhlIGNvdW50ZXIgd2lsbCBu
ZXZlcgorICAgIC8vIGJlY29tZSBub24tbmVnYXRpdmUgYW5kIE9TUiBlbnRyeSB3aWxsIG5ldmVy
IGJlIHRyaWdnZXJlZC4gT1NSIGVudHJ5CisgICAgLy8gd2lsbCBvbmx5IGhhcHBlbiBpZiBhIGxv
b3AgZ2V0cyBob3QgaW4gdGhlIG9sZCBKSVQsIHdoaWNoIGRvZXMgYSBwcmV0dHkKKyAgICAvLyBn
b29kIGpvYiBvZiBlbnN1cmluZyAoYSkgYW5kIChiKS4gQnV0IHRoYXQgZG9lc24ndCB0YWtlIGNh
cmUgb2YgKGQpLAorICAgIC8vIHNpbmNlIGVhY2ggc3BlY3VsYXRpb24gZmFpbHVyZSB3b3VsZCBy
ZXNldCB0aGUgZXhlY3V0ZSBjb3VudGVyLgorICAgIC8vIFNvIHdlIGNoZWNrIGhlcmUgaWYgdGhl
IG51bWJlciBvZiBzcGVjdWxhdGlvbiBmYWlsdXJlcyBpcyBzaWduaWZpY2FudGx5CisgICAgLy8g
bGFyZ2VyIHRoYW4gdGhlIG51bWJlciBvZiBzdWNjZXNzZXMgKHdlIHdhbnQgOTAlIHN1Y2Nlc3Mg
cmF0ZSksIGFuZCBpZgorICAgIC8vIHRoZXJlIGhhdmUgYmVlbiBhIGxhcmdlIGVub3VnaCBudW1i
ZXIgb2YgZmFpbHVyZXMuIElmIHNvLCB3ZSBzZXQgdGhlCisgICAgLy8gY291bnRlciB0byAwOyBv
dGhlcndpc2Ugd2Ugc2V0IHRoZSBjb3VudGVyIHRvCisgICAgLy8gY291bnRlclZhbHVlRm9yT3B0
aW1pemVBZnRlcldhcm1VcCgpLgorCisgICAgaWYgKFVOTElLRUxZKGNvZGVCbG9jay0+dXBkYXRl
T1NSRXhpdENvdW50ZXJBbmRDaGVja0lmTmVlZFRvUmVvcHRpbWl6ZShleGl0U3RhdGUpID09IENv
ZGVCbG9jazo6T3B0aW1pemVBY3Rpb246OlJlb3B0aW1pemVOb3cpKQorICAgICAgICB0cmlnZ2Vy
UmVvcHRpbWl6YXRpb25Ob3coYmFzZWxpbmVDb2RlQmxvY2ssICZleGl0KTsKKworICAgIHJlaWZ5
SW5saW5lZENhbGxGcmFtZXMoY29udGV4dCwgYmFzZWxpbmVDb2RlQmxvY2ssIGV4aXQpOworICAg
IGFkanVzdEFuZEp1bXBUb1RhcmdldChjb250ZXh0LCB2bSwgY29kZUJsb2NrLCBiYXNlbGluZUNv
ZGVCbG9jaywgZXhpdCk7Cit9CisKK3ZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDb250ZXh0
JiBjb250ZXh0LCBDb2RlQmxvY2sqIG91dGVybW9zdEJhc2VsaW5lQ29kZUJsb2NrLCBjb25zdCBP
U1JFeGl0QmFzZSYgZXhpdCkKK3sKKyAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKKyAgICBG
cmFtZSBmcmFtZShjcHUuZnAoKSwgY29udGV4dC5zdGFjaygpKTsKKworICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGRuJ3QgbGVhdmUgaG9sZXMgb24gdGhlIHN0YWNrIHdoZW4gcGVyZm9ybWluZyBhbiBP
U1IgZXhpdAorICAgIC8vIGluIHByZXNlbmNlIG9mIGlubGluZWQgdGFpbCBjYWxscy4KKyAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NTExCisgICAgQVNT
RVJUKG91dGVybW9zdEJhc2VsaW5lQ29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6QmFz
ZWxpbmVKSVQpOworICAgIGZyYW1lLnNldE9wZXJhbmQ8Q29kZUJsb2NrKj4oQ2FsbEZyYW1lU2xv
dDo6Y29kZUJsb2NrLCBvdXRlcm1vc3RCYXNlbGluZUNvZGVCbG9jayk7CisKKyAgICBjb25zdCBD
b2RlT3JpZ2luKiBjb2RlT3JpZ2luOworICAgIGZvciAoY29kZU9yaWdpbiA9ICZleGl0Lm1fY29k
ZU9yaWdpbjsgY29kZU9yaWdpbiAmJiBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWU7IGNvZGVP
cmlnaW4gPSBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUtPmdldENhbGxlclNraXBwaW5nVGFp
bENhbGxzKCkpIHsKKyAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBj
b2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWU7CisgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVD
b2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJsb2Nr
KCpjb2RlT3JpZ2luLCBvdXRlcm1vc3RCYXNlbGluZUNvZGVCbG9jayk7CisgICAgICAgIElubGlu
ZUNhbGxGcmFtZTo6S2luZCB0cnVlQ2FsbGVyQ2FsbEtpbmQ7CisgICAgICAgIENvZGVPcmlnaW4q
IHRydWVDYWxsZXIgPSBpbmxpbmVDYWxsRnJhbWUtPmdldENhbGxlclNraXBwaW5nVGFpbENhbGxz
KCZ0cnVlQ2FsbGVyQ2FsbEtpbmQpOworICAgICAgICB2b2lkKiBjYWxsZXJGcmFtZSA9IGNwdS5m
cCgpOworCisgICAgICAgIGlmICghdHJ1ZUNhbGxlcikgeworICAgICAgICAgICAgQVNTRVJUKGlu
bGluZUNhbGxGcmFtZS0+aXNUYWlsKCkpOworICAgICAgICAgICAgdm9pZCogcmV0dXJuUEMgPSBm
cmFtZS5nZXQ8dm9pZCo+KENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSk7CisgICAgICAgICAg
ICBmcmFtZS5zZXQ8dm9pZCo+KGlubGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSwgcmV0
dXJuUEMpOworICAgICAgICAgICAgY2FsbGVyRnJhbWUgPSBmcmFtZS5nZXQ8dm9pZCo+KENhbGxG
cmFtZTo6Y2FsbGVyRnJhbWVPZmZzZXQoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyID0gYmFzZWxpbmVDb2RlQmxv
Y2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jaygqdHJ1ZUNhbGxlciwgb3V0ZXJtb3N0QmFz
ZWxpbmVDb2RlQmxvY2spOworICAgICAgICAgICAgdW5zaWduZWQgY2FsbEJ5dGVjb2RlSW5kZXgg
PSB0cnVlQ2FsbGVyLT5ieXRlY29kZUluZGV4OworICAgICAgICAgICAgdm9pZCoganVtcFRhcmdl
dCA9IG51bGxwdHI7CisKKyAgICAgICAgICAgIHN3aXRjaCAodHJ1ZUNhbGxlckNhbGxLaW5kKSB7
CisgICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q2FsbDoKKyAgICAgICAgICAgIGNh
c2UgSW5saW5lQ2FsbEZyYW1lOjpDb25zdHJ1Y3Q6CisgICAgICAgICAgICBjYXNlIElubGluZUNh
bGxGcmFtZTo6Q2FsbFZhcmFyZ3M6CisgICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6
Q29uc3RydWN0VmFyYXJnczoKKyAgICAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpUYWls
Q2FsbDoKKyAgICAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpUYWlsQ2FsbFZhcmFyZ3M6
IHsKKyAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9CisgICAgICAg
ICAgICAgICAgICAgIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5nZXRDYWxsTGlua0luZm9G
b3JCeXRlY29kZUluZGV4KGNhbGxCeXRlY29kZUluZGV4KTsKKyAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChjYWxsTGlua0luZm8pOworCisgICAgICAgICAgICAgICAganVtcFRhcmdldCA9
IGNhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2Fz
ZSBJbmxpbmVDYWxsRnJhbWU6OkdldHRlckNhbGw6CisgICAgICAgICAgICBjYXNlIElubGluZUNh
bGxGcmFtZTo6U2V0dGVyQ2FsbDogeworICAgICAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbyA9CisgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2Fs
bGVyLT5maW5kU3R1YkluZm8oQ29kZU9yaWdpbihjYWxsQnl0ZWNvZGVJbmRleCkpOworICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0dWJJbmZvKTsKKworICAgICAgICAgICAgICAgIGp1
bXBUYXJnZXQgPSBzdHViSW5mby0+ZG9uZUxvY2F0aW9uKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodHJ1ZUNhbGxlci0+aW5saW5lQ2FsbEZyYW1l
KQorICAgICAgICAgICAgICAgIGNhbGxlckZyYW1lID0gY3B1LmZwPHVpbnQ4X3QqPigpICsgdHJ1
ZUNhbGxlci0+aW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAqIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSk7CisKKyAgICAgICAgICAgIGZyYW1lLnNldDx2b2lkKj4oaW5saW5lQ2FsbEZyYW1lLT5y
ZXR1cm5QQ09mZnNldCgpLCBqdW1wVGFyZ2V0KTsKKyAgICAgICAgfQorCisgICAgICAgIGZyYW1l
LnNldE9wZXJhbmQ8dm9pZCo+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJh
bWVTbG90Ojpjb2RlQmxvY2ssIGJhc2VsaW5lQ29kZUJsb2NrKTsKKworICAgICAgICAvLyBSZXN0
b3JlIHRoZSBpbmxpbmUgY2FsbCBmcmFtZSdzIGNhbGxlZSBzYXZlIHJlZ2lzdGVycy4KKyAgICAg
ICAgLy8gSWYgdGhpcyBpbmxpbmVkIGZyYW1lIGlzIGEgdGFpbCBjYWxsIHRoYXQgd2lsbCByZXR1
cm4gYmFjayB0byB0aGUgb3JpZ2luYWwgY2FsbGVyLCB3ZSBuZWVkIHRvCisgICAgICAgIC8vIGNv
cHkgdGhlIHByaW9yIGNvbnRlbnRzIG9mIHRoZSB0YWcgcmVnaXN0ZXJzIGFscmVhZHkgc2F2ZWQg
Zm9yIHRoZSBvdXRlciBmcmFtZSB0byB0aGlzIGZyYW1lLgorICAgICAgICBzYXZlT3JDb3B5Q2Fs
bGVlU2F2ZXNGb3IoY29udGV4dCwgYmFzZWxpbmVDb2RlQmxvY2ssIHN0YXRpY19jYXN0PFZpcnR1
YWxSZWdpc3Rlcj4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCksICF0cnVlQ2FsbGVyKTsK
KworICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCisgICAgICAgICAg
ICBmcmFtZS5zZXRPcGVyYW5kPHVpbnQzMl90PihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0
ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCwgUGF5bG9hZE9mZnNldCwgaW5saW5lQ2Fs
bEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlckZyYW1lKTsK
KyAgICAgICAgZnJhbWUuc2V0PHZvaWQqPihpbmxpbmVDYWxsRnJhbWUtPmNhbGxlckZyYW1lT2Zm
c2V0KCksIGNhbGxlckZyYW1lKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICB1aW50MzJf
dCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgp
LmJpdHMoKTsKKyAgICAgICAgZnJhbWUuc2V0T3BlcmFuZDx1aW50MzJfdD4oaW5saW5lQ2FsbEZy
YW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIFRhZ09mZnNl
dCwgbG9jYXRpb25CaXRzKTsKKyAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3Vy
ZUNhbGwpCisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKGlubGluZUNhbGxGcmFtZS0+c3Rh
Y2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUsIEpTVmFsdWUoaW5saW5lQ2FsbEZyYW1l
LT5jYWxsZWVDb25zdGFudCgpKSk7CisjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KSAvLyBzbyB0aGlz
IGlzIHRoZSAzMi1iaXQgcGFydAorICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBi
YXNlbGluZUNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGNvZGVPcmlnaW4tPmJ5
dGVjb2RlSW5kZXg7CisgICAgICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5k
ZXgoaW5zdHJ1Y3Rpb24pLmJpdHMoKTsKKyAgICAgICAgZnJhbWUuc2V0T3BlcmFuZDx1aW50MzJf
dD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnQsIFRhZ09mZnNldCwgbG9jYXRpb25CaXRzKTsKKyAgICAgICAgZnJhbWUuc2V0T3BlcmFu
ZDx1aW50MzJfdD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6
OmNhbGxlZSwgVGFnT2Zmc2V0LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNWYWx1ZTo6Q2VsbFRh
ZykpOworICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkKKyAgICAg
ICAgICAgIGZyYW1lLnNldE9wZXJhbmQoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSwgUGF5bG9hZE9mZnNldCwgaW5saW5lQ2FsbEZyYW1lLT5jYWxs
ZWVDb25zdGFudCgpKTsKKyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KSAvLyBlbmRpbmcgdGhlICNl
bHNlIHBhcnQsIHNvIGRpcmVjdGx5IGFib3ZlIGlzIHRoZSAzMi1iaXQgcGFydAorICAgIH0KKwor
ICAgIC8vIERvbid0IG5lZWQgdG8gc2V0IHRoZSB0b3BsZXZlbCBjb2RlIG9yaWdpbiBpZiB3ZSBv
bmx5IGRpZCBpbmxpbmUgdGFpbCBjYWxscworICAgIGlmIChjb2RlT3JpZ2luKSB7CisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRl
eChjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KS5iaXRzKCk7CisjZWxzZQorICAgICAgICBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBvdXRlcm1vc3RCYXNlbGluZUNvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25zKCkuYmVnaW4oKSArIGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXg7CisgICAgICAgIHVp
bnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoaW5zdHJ1Y3Rpb24pLmJpdHMoKTsK
KyNlbmRpZgorICAgICAgICBmcmFtZS5zZXRPcGVyYW5kPHVpbnQzMl90PihDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50LCBUYWdPZmZzZXQsIGxvY2F0aW9uQml0cyk7CisgICAgfQorfQorCit2
b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChDb250ZXh0JiBjb250ZXh0LCBWTSYgdm0sIENvZGVC
bG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrLCBPU1JFeGl0JiBl
eGl0KQoreworICAgIE9TUkV4aXRTdGF0ZSogZXhpdFN0YXRlID0gZXhpdC5leGl0U3RhdGUuZ2V0
KCk7CisKKyAgICBXVEY6OnN0b3JlTG9hZEZlbmNlKCk7IC8vIFRoZSBvcHRpbWl6aW5nIGNvbXBp
bGVyIGV4cGVjdHMgdGhhdCB0aGUgT1NSIGV4aXQgbWVjaGFuaXNtIHdpbGwgZXhlY3V0ZSB0aGlz
IGZlbmNlLgorICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGJhc2VsaW5lQ29kZUJsb2NrKTsKKwor
ICAgIC8vIFdlIGJhcnJpZXIgYWxsIGlubGluZWQgZnJhbWVzIC0tIGFuZCBub3QganVzdCB0aGUg
Y3VycmVudCBpbmxpbmUgc3RhY2sgLS0KKyAgICAvLyBiZWNhdXNlIHdlIGRvbid0IGtub3cgd2hp
Y2ggaW5saW5lZCBmdW5jdGlvbiBvd25zIHRoZSB2YWx1ZSBwcm9maWxlIHRoYXQKKyAgICAvLyB3
ZSdsbCB1cGRhdGUgd2hlbiB3ZSBleGl0LiBJbiB0aGUgY2FzZSBvZiAiZigpIHsgYSgpOyBiKCk7
IH0iLCBpZiBib3RoCisgICAgLy8gYSBhbmQgYiBhcmUgaW5saW5lZCwgd2UgbWlnaHQgZXhpdCBp
bnNpZGUgYiBkdWUgdG8gYSBiYWQgdmFsdWUgbG9hZGVkCisgICAgLy8gZnJvbSBhLgorICAgIC8v
IEZJWE1FOiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHNob3VsZCByZW1lbWJlciB3aGlj
aCBDb2RlQmxvY2sgb3ducworICAgIC8vIHRoZSB2YWx1ZSBwcm9maWxlLgorICAgIElubGluZUNh
bGxGcmFtZVNldCogaW5saW5lQ2FsbEZyYW1lcyA9IGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmdD
b21tb24oKS0+aW5saW5lQ2FsbEZyYW1lcy5nZXQoKTsKKyAgICBpZiAoaW5saW5lQ2FsbEZyYW1l
cykgeworICAgICAgICBmb3IgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lIDogKmlu
bGluZUNhbGxGcmFtZXMpCisgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihpbmxpbmVD
YWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLmdldCgpKTsKKyAgICB9CisKKyAgICBpZiAoZXhp
dC5tX2NvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQorICAgICAgICBjb250ZXh0LmZwKCkgPSBj
b250ZXh0LmZwPHVpbnQ4X3QqPigpICsgZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
LT5zdGFja09mZnNldCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CisKKyAgICB2b2lkKiBqdW1w
VGFyZ2V0ID0gZXhpdFN0YXRlLT5qdW1wVGFyZ2V0OworICAgIEFTU0VSVChqdW1wVGFyZ2V0KTsK
KworICAgIGNvbnRleHQuc3AoKSA9IGNvbnRleHQuZnA8dWludDhfdCo+KCkgKyBleGl0U3RhdGUt
PnN0YWNrUG9pbnRlck9mZnNldDsKKyAgICBpZiAoZXhpdC5pc0V4Y2VwdGlvbkhhbmRsZXIoKSkg
eworICAgICAgICAvLyBTaW5jZSB3ZSdyZSBqdW1waW5nIHRvIG9wX2NhdGNoLCB3ZSBuZWVkIHRv
IHNldCBjYWxsRnJhbWVGb3JDYXRjaC4KKyAgICAgICAgdm0uY2FsbEZyYW1lRm9yQ2F0Y2ggPSBj
b250ZXh0LmZwPEV4ZWNTdGF0ZSo+KCk7CisgICAgfQorCisgICAgdm0udG9wQ2FsbEZyYW1lID0g
Y29udGV4dC5mcDxFeGVjU3RhdGUqPigpOworICAgIGNvbnRleHQucGMoKSA9IGp1bXBUYXJnZXQ7
Cit9CisKK3N0YXRpYyB2b2lkIHByaW50T1NSRXhpdChDb250ZXh0JiBjb250ZXh0LCB1aW50MzJf
dCBvc3JFeGl0SW5kZXgsIGNvbnN0IE9TUkV4aXQmIGV4aXQpCit7CisgICAgRXhlY1N0YXRlKiBl
eGVjID0gY29udGV4dC5mcDxFeGVjU3RhdGUqPigpOworICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgQ29kZUJsb2NrKiBhbHRlcm5hdGl2ZSA9IGNvZGVC
bG9jay0+YWx0ZXJuYXRpdmUoKTsKKyAgICBFeGl0S2luZCBraW5kID0gZXhpdC5tX2tpbmQ7Cisg
ICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUlu
ZGV4OworCisgICAgZGF0YUxvZygiU3BlY3VsYXRpb24gZmFpbHVyZSBpbiAiLCAqY29kZUJsb2Nr
KTsKKyAgICBkYXRhTG9nKCIgQCBleGl0ICMiLCBvc3JFeGl0SW5kZXgsICIgKGJjIyIsIGJ5dGVj
b2RlT2Zmc2V0LCAiLCAiLCBleGl0S2luZFRvU3RyaW5nKGtpbmQpLCAiKSB3aXRoICIpOworICAg
IGlmIChhbHRlcm5hdGl2ZSkgeworICAgICAgICBkYXRhTG9nKAorICAgICAgICAgICAgImV4ZWN1
dGVDb3VudGVyID0gIiwgYWx0ZXJuYXRpdmUtPmppdEV4ZWN1dGVDb3VudGVyKCksCisgICAgICAg
ICAgICAiLCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9ICIsIGFsdGVybmF0aXZlLT5yZW9w
dGltaXphdGlvblJldHJ5Q291bnRlcigpLAorICAgICAgICAgICAgIiwgb3B0aW1pemF0aW9uRGVs
YXlDb3VudGVyID0gIiwgYWx0ZXJuYXRpdmUtPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgZGF0YUxvZygibm8gYWx0ZXJuYXRpdmUgY29kZSBibG9jayAo
aS5lLiB3ZSd2ZSBiZWVuIGpldHRpc29uZWQpIik7CisgICAgZGF0YUxvZygiLCBvc3JFeGl0Q291
bnRlciA9ICIsIGNvZGVCbG9jay0+b3NyRXhpdENvdW50ZXIoKSwgIlxuIik7CisgICAgZGF0YUxv
ZygiICAgIEdQUnMgYXQgdGltZSBvZiBleGl0OiIpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CisgICAgICAgIEdQUlJlZyBn
cHIgPSBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpOworICAgICAgICBkYXRhTG9nKCIgIiwgY29udGV4
dC5ncHJOYW1lKGdwciksICI6IiwgUmF3UG9pbnRlcihjb250ZXh0Lmdwcjx2b2lkKj4oZ3ByKSkp
OworICAgIH0KKyAgICBkYXRhTG9nKCJcbiIpOworICAgIGRhdGFMb2coIiAgICBGUFJzIGF0IHRp
bWUgb2YgZXhpdDoiKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVt
YmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAgICAgICBGUFJSZWcgZnByID0gRlBSSW5mbzo6dG9S
ZWdpc3RlcihpKTsKKyAgICAgICAgZGF0YUxvZygiICIsIGNvbnRleHQuZnByTmFtZShmcHIpLCAi
OiIpOworICAgICAgICB1aW50NjRfdCBiaXRzID0gY29udGV4dC5mcHI8dWludDY0X3Q+KGZwcik7
CisgICAgICAgIGRvdWJsZSB2YWx1ZSA9IGNvbnRleHQuZnByKGZwcik7CisgICAgICAgIGRhdGFM
b2dGKCIlbGx4OiVsZiIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oYml0cyksIHZhbHVlKTsKKyAg
ICB9CisgICAgZGF0YUxvZygiXG4iKTsKK30KKwogdm9pZCBPU1JFeGl0OjplbWl0UmVzdG9yZUFy
Z3VtZW50cyhDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4m
IG9wZXJhbmRzKQogewogICAgIEhhc2hNYXA8TWluaWZpZWRJRCwgaW50PiBhbHJlYWR5QWxsb2Nh
dGVkQXJndW1lbnRzOyAvLyBNYXBzIHBoYW50b20gYXJndW1lbnRzIG5vZGUgSUQgdG8gb3BlcmFu
ZC4KQEAgLTE4NCw2ICsxMTAzLDE0IEBAIHZvaWQgSklUX09QRVJBVElPTiBPU1JFeGl0Ojpjb21w
aWxlT1NSRXgKICAgICB7CiAgICAgICAgIENDYWxsSGVscGVycyBqaXQoY29kZUJsb2NrKTsKIAor
ICAgICAgICBpZiAoZ2V0ZW52KCJ2ZXJib3NlIikpIGppdC5wcm9iZShbXSAoUHJvYmU6OkNvbnRl
eHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgIGppdCBAIiwgX19MSU5FX18s
ICIgc3A8IiwgUmF3UG9pbnRlcihjb250ZXh0LnNwPGNoYXIqPigpKSwgIj4gZnA8IiwgUmF3UG9p
bnRlcihjb250ZXh0LmZwPGNoYXIqPigpKSwgIj4tMHgzOCBbIiwgUmF3UG9pbnRlcihjb250ZXh0
LmZwPGNoYXIqPigpLTB4MzgpLCAiXSA9ICIsIFJhd1BvaW50ZXIoKih2b2lkKiopKGNvbnRleHQu
ZnA8Y2hhcio+KCktMHgzOCkpLCAiXG4iKTsKKyAgICAgICAgfSk7CisgICAgICAgIGppdC5wcm9i
ZShPU1JFeGl0OjpwcmV0ZW5kRXhlY3V0ZU9TUkV4aXQsIHZtKTsKKyAgICAgICAgaWYgKGdldGVu
digidmVyYm9zZSIpKSBqaXQucHJvYmUoW10gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7Cisg
ICAgICAgICAgICBkYXRhTG9nKCIgICBqaXQgQCIsIF9fTElORV9fLCAiIHNwPCIsIFJhd1BvaW50
ZXIoY29udGV4dC5zcDxjaGFyKj4oKSksICI+IGZwPCIsIFJhd1BvaW50ZXIoY29udGV4dC5mcDxj
aGFyKj4oKSksICI+LTB4MzggWyIsIFJhd1BvaW50ZXIoY29udGV4dC5mcDxjaGFyKj4oKS0weDM4
KSwgIl0gPSAiLCBSYXdQb2ludGVyKCoodm9pZCoqKShjb250ZXh0LmZwPGNoYXIqPigpLTB4Mzgp
KSwgIlxuIik7CisgICAgICAgIH0pOworCiAgICAgICAgIGlmIChleGl0Lm1fa2luZCA9PSBHZW5l
cmljVW53aW5kKSB7CiAgICAgICAgICAgICAvLyBXZSBhcmUgYWN0aW5nIGFzIGEgZGVmYWN0byBv
cF9jYXRjaCBiZWNhdXNlIHdlIGFycml2ZSBoZXJlIGZyb20gZ2VuZXJpY1Vud2luZCgpLgogICAg
ICAgICAgICAgLy8gU28sIHdlIG11c3QgcmVzdG9yZSBvdXIgY2FsbCBmcmFtZSBhbmQgc3RhY2sg
cG9pbnRlci4KQEAgLTE5MywxOSArMTEyMCwzNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gT1NSRXhp
dDo6Y29tcGlsZU9TUkV4CiAgICAgICAgIGppdC5hZGRQdHIoCiAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6
ZW9mKFJlZ2lzdGVyKSksCiAgICAgICAgICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
Q0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgIGlmIChnZXRlbnYo
InZlcmJvc2UiKSkgaml0LnByb2JlKFtdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAg
ICAgICAgICAgZGF0YUxvZygiICAgaml0IEAiLCBfX0xJTkVfXywgIiBzcDwiLCBSYXdQb2ludGVy
KGNvbnRleHQuc3A8Y2hhcio+KCkpLCAiPiBmcDwiLCBSYXdQb2ludGVyKGNvbnRleHQuZnA8Y2hh
cio+KCkpLCAiPi0weDM4IFsiLCBSYXdQb2ludGVyKGNvbnRleHQuZnA8Y2hhcio+KCktMHgzOCks
ICJdID0gIiwgUmF3UG9pbnRlcigqKHZvaWQqKikoY29udGV4dC5mcDxjaGFyKj4oKS0weDM4KSks
ICJcbiIpOworICAgICAgICB9KTsKIAogICAgICAgICBqaXQuaml0QXNzZXJ0SGFzVmFsaWRDYWxs
RnJhbWUoKTsKKyAgICAgICAgaWYgKGdldGVudigidmVyYm9zZSIpKSBqaXQucHJvYmUoW10gKFBy
b2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICBkYXRhTG9nKCIgICBqaXQgQCIs
IF9fTElORV9fLCAiIHNwPCIsIFJhd1BvaW50ZXIoY29udGV4dC5zcDxjaGFyKj4oKSksICI+IGZw
PCIsIFJhd1BvaW50ZXIoY29udGV4dC5mcDxjaGFyKj4oKSksICI+LTB4MzgtMHgzOCBbIiwgUmF3
UG9pbnRlcihjb250ZXh0LmZwPGNoYXIqPigpLTB4MzgpLCAiXSA9ICIsIFJhd1BvaW50ZXIoKih2
b2lkKiopKGNvbnRleHQuZnA8Y2hhcio+KCktMHgzOCkpLCAiXG4iKTsKKyAgICAgICAgfSk7CiAK
ICAgICAgICAgaWYgKFVOTElLRUxZKHZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIgJiYgY29kZUJs
b2NrLT5qaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5jb21waWxhdGlvbikpIHsKICAgICAgICAgICAg
IFByb2ZpbGVyOjpEYXRhYmFzZSYgZGF0YWJhc2UgPSAqdm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxl
cjsKICAgICAgICAgICAgIFByb2ZpbGVyOjpDb21waWxhdGlvbiogY29tcGlsYXRpb24gPSBjb2Rl
QmxvY2stPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPmNvbXBpbGF0aW9uLmdldCgpOwogCisgICAg
ICAgICAgICBpZiAoZ2V0ZW52KCJ2ZXJib3NlIikpIGppdC5wcm9iZShbXSAoUHJvYmU6OkNvbnRl
eHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICBqaXQgQCIsIF9fTElO
RV9fLCAiIHNwPCIsIFJhd1BvaW50ZXIoY29udGV4dC5zcDxjaGFyKj4oKSksICI+IGZwPCIsIFJh
d1BvaW50ZXIoY29udGV4dC5mcDxjaGFyKj4oKSksICI+LTB4MzggWyIsIFJhd1BvaW50ZXIoY29u
dGV4dC5mcDxjaGFyKj4oKS0weDM4KSwgIl0gPSAiLCBSYXdQb2ludGVyKCoodm9pZCoqKShjb250
ZXh0LmZwPGNoYXIqPigpLTB4MzgpKSwgIlxuIik7CisgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgIFByb2ZpbGVyOjpPU1JFeGl0KiBwcm9maWxlckV4aXQgPSBjb21waWxhdGlvbi0+YWRkT1NS
RXhpdCgKICAgICAgICAgICAgICAgICBleGl0SW5kZXgsIFByb2ZpbGVyOjpPcmlnaW5TdGFjayhk
YXRhYmFzZSwgY29kZUJsb2NrLCBleGl0Lm1fY29kZU9yaWdpbiksCiAgICAgICAgICAgICAgICAg
ZXhpdC5tX2tpbmQsIGV4aXQubV9raW5kID09IFVuY291bnRhYmxlSW52YWxpZGF0aW9uKTsKKyAg
ICAgICAgICAgIGlmIChnZXRlbnYoInZlcmJvc2UiKSkgaml0LnByb2JlKFtdIChQcm9iZTo6Q29u
dGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgIGppdCBAIiwgX19M
SU5FX18sICIgc3A8IiwgUmF3UG9pbnRlcihjb250ZXh0LnNwPGNoYXIqPigpKSwgIj4gZnA8Iiwg
UmF3UG9pbnRlcihjb250ZXh0LmZwPGNoYXIqPigpKSwgIj4tMHgzOCBbIiwgUmF3UG9pbnRlcihj
b250ZXh0LmZwPGNoYXIqPigpLTB4MzgpLCAiXSA9ICIsIFJhd1BvaW50ZXIoKih2b2lkKiopKGNv
bnRleHQuZnA8Y2hhcio+KCktMHgzOCkpLCAiXG4iKTsKKyAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgaml0LmFkZDY0KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBDQ2FsbEhlbHBl
cnM6OkFic29sdXRlQWRkcmVzcyhwcm9maWxlckV4aXQtPmNvdW50ZXJBZGRyZXNzKCkpKTsKKyAg
ICAgICAgICAgIGlmIChnZXRlbnYoInZlcmJvc2UiKSkgaml0LnByb2JlKFtdIChQcm9iZTo6Q29u
dGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgIGppdCBAIiwgX19M
SU5FX18sICIgc3A8IiwgUmF3UG9pbnRlcihjb250ZXh0LnNwPGNoYXIqPigpKSwgIj4gZnA8Iiwg
UmF3UG9pbnRlcihjb250ZXh0LmZwPGNoYXIqPigpKSwgIj4tMHgzOCBbIiwgUmF3UG9pbnRlcihj
b250ZXh0LmZwPGNoYXIqPigpLTB4MzgpLCAiXSA9ICIsIFJhd1BvaW50ZXIoKih2b2lkKiopKGNv
bnRleHQuZnA8Y2hhcio+KCktMHgzOCkpLCAiXG4iKTsKKyAgICAgICAgICAgIH0pOwogICAgICAg
ICB9CiAKKyAgICAgICAgaWYgKGdldGVudigidmVyYm9zZSIpKSBqaXQucHJvYmUoW10gKFByb2Jl
OjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICBkYXRhTG9nKCIgICBqaXQgQCIsIF9f
TElORV9fLCAiIHNwPCIsIFJhd1BvaW50ZXIoY29udGV4dC5zcDxjaGFyKj4oKSksICI+IGZwPCIs
IFJhd1BvaW50ZXIoY29udGV4dC5mcDxjaGFyKj4oKSksICI+LTB4MzggWyIsIFJhd1BvaW50ZXIo
Y29udGV4dC5mcDxjaGFyKj4oKS0weDM4KSwgIl0gPSAiLCBSYXdQb2ludGVyKCoodm9pZCoqKShj
b250ZXh0LmZwPGNoYXIqPigpLTB4MzgpKSwgIlxuIik7CisgICAgICAgIH0pOwogICAgICAgICBj
b21waWxlRXhpdChqaXQsICp2bSwgZXhpdCwgb3BlcmFuZHMsIHJlY292ZXJ5KTsKIAogICAgICAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgY29kZUJsb2NrKTsKQEAgLTIyNyw2ICsxMTcy
LDkgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogewogICAgIGpp
dC5qaXRBc3NlcnRUYWdzSW5QbGFjZSgpOwogCisgICAgaWYgKGdldGVudigidmVyYm9zZSIpKSBq
aXQucHJvYmUoW10gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGRhdGFMb2co
IiAgIGppdCBAIiwgX19MSU5FX18sICIgc3A8IiwgUmF3UG9pbnRlcihjb250ZXh0LnNwPGNoYXIq
PigpKSwgIj4gZnA8IiwgUmF3UG9pbnRlcihjb250ZXh0LmZwPGNoYXIqPigpKSwgIj4tMHgzOCBb
IiwgUmF3UG9pbnRlcihjb250ZXh0LmZwPGNoYXIqPigpLTB4MzgpLCAiXSA9ICIsIFJhd1BvaW50
ZXIoKih2b2lkKiopKGNvbnRleHQuZnA8Y2hhcio+KCktMHgzOCkpLCAiXG4iKTsKKyAgICB9KTsK
ICAgICAvLyBQcm8tZm9ybWEgc3R1ZmYuCiAgICAgaWYgKE9wdGlvbnM6OnByaW50RWFjaE9TUkV4
aXQoKSkgewogICAgICAgICBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8qIGRlYnVnSW5mbyA9
IG5ldyBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm87CkBAIC0yNjksNiArMTIxNyw5IEBAIHZv
aWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKIAogICAgIC8vIFJlZmluZSBz
b21lIGFycmF5IGFuZC9vciB2YWx1ZSBwcm9maWxlLCBpZiBhcHByb3ByaWF0ZS4KIAorICAgIGlm
IChnZXRlbnYoInZlcmJvc2UiKSkgaml0LnByb2JlKFtdIChQcm9iZTo6Q29udGV4dCYgY29udGV4
dCkgeworICAgICAgICBkYXRhTG9nKCIgICBqaXQgQCIsIF9fTElORV9fLCAiIHNwPCIsIFJhd1Bv
aW50ZXIoY29udGV4dC5zcDxjaGFyKj4oKSksICI+IGZwPCIsIFJhd1BvaW50ZXIoY29udGV4dC5m
cDxjaGFyKj4oKSksICI+LTB4MzggWyIsIFJhd1BvaW50ZXIoY29udGV4dC5mcDxjaGFyKj4oKS0w
eDM4KSwgIl0gPSAiLCBSYXdQb2ludGVyKCoodm9pZCoqKShjb250ZXh0LmZwPGNoYXIqPigpLTB4
MzgpKSwgIlxuIik7CisgICAgfSk7CiAgICAgaWYgKCEhZXhpdC5tX2pzVmFsdWVTb3VyY2UpIHsK
ICAgICAgICAgaWYgKGV4aXQubV9raW5kID09IEJhZENhY2hlIHx8IGV4aXQubV9raW5kID09IEJh
ZEluZGV4aW5nVHlwZSkgewogICAgICAgICAgICAgLy8gSWYgdGhlIGluc3RydWN0aW9uIHRoYXQg
dGhpcyBvcmlnaW5hdGVkIGZyb20gaGFzIGFuIGFycmF5IHByb2ZpbGUsIHRoZW4KQEAgLTQyOCw2
ICsxMzc5LDkgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAg
IFNjcmF0Y2hCdWZmZXIqIHNjcmF0Y2hCdWZmZXIgPSB2bS5zY3JhdGNoQnVmZmVyRm9yU2l6ZShz
aXplb2YoRW5jb2RlZEpTVmFsdWUpICogb3BlcmFuZHMuc2l6ZSgpKTsKICAgICBFbmNvZGVkSlNW
YWx1ZSogc2NyYXRjaCA9IHNjcmF0Y2hCdWZmZXIgPyBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1
ZSo+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSkgOiAwOwogCisgICAgaWYgKGdldGVudigi
dmVyYm9zZSIpKSBqaXQucHJvYmUoW10gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAg
ICAgIGRhdGFMb2coIiAgIGppdCBAIiwgX19MSU5FX18sICIgc3A8IiwgUmF3UG9pbnRlcihjb250
ZXh0LnNwPGNoYXIqPigpKSwgIj4gZnA8IiwgUmF3UG9pbnRlcihjb250ZXh0LmZwPGNoYXIqPigp
KSwgIj4tMHgzOCBbIiwgUmF3UG9pbnRlcihjb250ZXh0LmZwPGNoYXIqPigpLTB4MzgpLCAiXSA9
ICIsIFJhd1BvaW50ZXIoKih2b2lkKiopKGNvbnRleHQuZnA8Y2hhcio+KCktMHgzOCkpLCAiXG4i
KTsKKyAgICB9KTsKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMu
c2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5
ID0gb3BlcmFuZHNbaW5kZXhdOwogCkBAIC00NjYsNiArMTQyMCw5IEBAIHZvaWQgT1NSRXhpdDo6
Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKIAogICAgIC8vIFNhdmUgYWxsIHN0YXRlIGZyb20g
RlBScyBpbnRvIHRoZSBzY3JhdGNoIGJ1ZmZlci4KIAorICAgIGlmIChnZXRlbnYoInZlcmJvc2Ui
KSkgaml0LnByb2JlKFtdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBkYXRh
TG9nKCIgICBqaXQgQCIsIF9fTElORV9fLCAiIHNwPCIsIFJhd1BvaW50ZXIoY29udGV4dC5zcDxj
aGFyKj4oKSksICI+IGZwPCIsIFJhd1BvaW50ZXIoY29udGV4dC5mcDxjaGFyKj4oKSksICI+LTB4
MzggWyIsIFJhd1BvaW50ZXIoY29udGV4dC5mcDxjaGFyKj4oKS0weDM4KSwgIl0gPSAiLCBSYXdQ
b2ludGVyKCoodm9pZCoqKShjb250ZXh0LmZwPGNoYXIqPigpLTB4MzgpKSwgIlxuIik7CisgICAg
fSk7CiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNpemUoKTsg
KytpbmRleCkgewogICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9wZXJh
bmRzW2luZGV4XTsKIApAQCAtNDg3LDYgKzE0NDQsOSBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVF
eGl0KENDYWxsSGVscGVycyYgCiAgICAgLy8gZG8gdGhpcyBldmVuIGZvciBzdGF0ZSB0aGF0J3Mg
YWxyZWFkeSBpbiB0aGUgcmlnaHQgcGxhY2Ugb24gdGhlIHN0YWNrLgogICAgIC8vIEl0IG1ha2Vz
IHRoaW5ncyBzaW1wbGVyIGxhdGVyLgogCisgICAgaWYgKGdldGVudigidmVyYm9zZSIpKSBqaXQu
cHJvYmUoW10gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGRhdGFMb2coIiAg
IGppdCBAIiwgX19MSU5FX18sICIgc3A8IiwgUmF3UG9pbnRlcihjb250ZXh0LnNwPGNoYXIqPigp
KSwgIj4gZnA8IiwgUmF3UG9pbnRlcihjb250ZXh0LmZwPGNoYXIqPigpKSwgIj4tMHgzOCBbIiwg
UmF3UG9pbnRlcihjb250ZXh0LmZwPGNoYXIqPigpLTB4MzgpLCAiXSA9ICIsIFJhd1BvaW50ZXIo
Kih2b2lkKiopKGNvbnRleHQuZnA8Y2hhcio+KCktMHgzOCkpLCAiXG4iKTsKKyAgICB9KTsKICAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4
KSB7CiAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5k
ZXhdOwogCkBAIC01MDAsNiArMTQ2MCwyMSBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KEND
YWxsSGVscGVycyYgCiAgICAgICAgIGNhc2UgSW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAg
ICAgIGNhc2UgU3RyaWN0SW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgICAgICBqaXQu
bG9hZDY0KEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0
ZXIoKSksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIHsgLy8gbWxhbSBURVNUIHNjcmli
YmxlCisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZyID0gcmVjb3ZlcnkudmlydHVh
bFJlZ2lzdGVyKCk7CisgICAgICAgICAgICAgICAgaml0LnByb2JlKFt2cl0gKFByb2JlOjpDb250
ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgIHZvaWQqIHJlc3RvcmVBZGRyZXNz
ID0gY29udGV4dC5mcDxjaGFyKj4oKSArIHZyLm9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3RvcmVBZGRyZXNzIDwgY29udGV4dC5zcDx2b2lk
Kj4oKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5ncHIoR1BSSW5mbzo6cmVn
VDApID0gMHhiYWRiZWVmMDsgLy8gc2NyaWJibGUgaXQhISEKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSAvLyBtbGFtIFRFU1QKKyAgICAg
ICAgICAgIGlmIChnZXRlbnYoInZlcmJvc2UiKSkgeworICAgICAgICAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciB2ciA9IHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpOworICAgICAgICAgICAgICAg
IGppdC5wcm9iZShbdnIsIHRlY2huaXF1ZSA9IHJlY292ZXJ5LnRlY2huaXF1ZSgpLCBzY3JhdGNo
LCBpbmRleF0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2coIiAgIGppdCAiLCB0ZWNobmlxdWUsICIgaW5kZXggIiwgaW5kZXgsICIgb3BlcmFu
ZCAiLCAoaW50KXZyLm9mZnNldCgpLCAiIHNwICIsIFJhd1BvaW50ZXIoY29udGV4dC5zcDxjaGFy
Kj4oKSksICIgZnAgIiwgUmF3UG9pbnRlcihjb250ZXh0LmZwPGNoYXIqPigpKSwgIiBbIiwgUmF3
UG9pbnRlcihjb250ZXh0LmZwPGNoYXIqPigpICsgdnIub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0
ZXIpKSwgIl0gQGFkZHJlc3NGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpID0gIiwgUmF3
UG9pbnRlcihjb250ZXh0Lmdwcjx2b2lkKj4oR1BSSW5mbzo6cmVnVDApKSwgIiBzY3JhdGNoQWRk
cjogIiwgUmF3UG9pbnRlcihzY3JhdGNoICsgaW5kZXgpLCAiXG4iKTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJl
Z1QwLCBzY3JhdGNoICsgaW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAjZWxzZQpAQCAtNTUy
LDYgKzE1MjcsNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgCiAK
ICAgICAgICAgaW50IG9wZXJhbmQgPSByZWcub2Zmc2V0KCk7CiAKKyAgICAgICAgYXV0byB0ZWNo
bmlxdWUgPSByZWNvdmVyeS50ZWNobmlxdWUoKTsgLy8gbWxhbQogICAgICAgICBzd2l0Y2ggKHJl
Y292ZXJ5LnRlY2huaXF1ZSgpKSB7CiAgICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOgog
ICAgICAgICBjYXNlIEluRlBSOgpAQCAtNjQ2LDExICsxNjIyLDQwIEBAIHZvaWQgT1NSRXhpdDo6
Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKIAogICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJ
bkZQUjoKICAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIC8v
IG1sYW0KKyAgICAgICAgaWYgKGdldGVudigidmVyYm9zZSIpKSBqaXQucHJvYmUoW3RlY2huaXF1
ZSwgb3BlcmFuZF0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBjb250ZXh0LmZwPEV4ZWNTdGF0ZSo+KCk7CisgICAgICAgICAgICBKU1Zh
bHVlIHZhbHVlID0gZXhlYy0+cihvcGVyYW5kKS5qc1ZhbHVlKCk7CisgICAgICAgICAgICBkYXRh
TG9nKCIgICAgaml0IHByZS1SRUNPVkVSIHNwICIsIFJhd1BvaW50ZXIoY29udGV4dC5zcDx2b2lk
Kj4oKSksICIgb3BlcmFuZCAiLCBvcGVyYW5kLCAiICIsIHRlY2huaXF1ZSwgIjwiLCAoaW50KXRl
Y2huaXF1ZSwgIj4gWyIsIFJhd1BvaW50ZXIoJmV4ZWMtPnVuY2hlY2tlZFIob3BlcmFuZCkpLCAi
XSAiLCBmb3JtYXQoIjB4JTBsbHgiLCBKU1ZhbHVlOjplbmNvZGUodmFsdWUpKSwgIiB8ICIpOwor
Ly8gICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGZyYW1lLmdldE9wZXJhbmQ8SlNWYWx1
ZT4ob3BlcmFuZCk7CisvLyAgICAgICAgICAgIGlmICh2YWx1ZS5pc0NlbGwoKSAmJiAhSlNEb2xs
YXJWTVByb3RvdHlwZTo6aXNWYWxpZENlbGwoJnZtLmhlYXAsIHZhbHVlLmFzQ2VsbCgpKSkKKy8v
ICAgICAgICAgICAgICAgIGRhdGFMb2coIkludmFsaWQgSlNWYWx1ZSAobm90IHZhbGlkIGNlbGwp
Iik7CisvLyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNDZWxsKCkp
CisgICAgICAgICAgICAgICAgZGF0YUxvZyh2YWx1ZSk7CisgICAgICAgICAgICBkYXRhTG9nKCJc
biIpOworICAgICAgICB9KTsKKyAgICAgICAgLy9tbGFtICovCiAgICAgICAgICAgICBqaXQubW92
ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5m
bzo6cmVnVDApOwogICAgICAgICAgICAgaml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoR1BSSW5mbzo6cmVnVDApLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgLy8gbWxh
bQorICAgICAgICBpZiAoZ2V0ZW52KCJ2ZXJib3NlIikgJiYgcmVjb3ZlcnkudGVjaG5pcXVlKCkg
PT0gRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrKSBqaXQucHJvYmUoW3RlY2huaXF1ZSwgb3BlcmFu
ZCwgc2NyYXRjaCwgaW5kZXhdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICAg
ICAgZGF0YUxvZygiICAgIGppdCBAIiwgX19MSU5FX18sICIgZnByID0gIiwgZm9ybWF0KCIweCUw
bGx4IiwgY29udGV4dC5mcHI8dWludDY0X3Q+KEZQUkluZm86OmZwUmVnVDApKSwgIiBzY3JhdGNo
QWRkcjogIiwgUmF3UG9pbnRlcihzY3JhdGNoICsgaW5kZXgpLCAiXG4iKTsKKyAgICAgICAgfSk7
CisgICAgICAgIC8vbWxhbSAqLwogICAgICAgICAgICAgaml0LnB1cmlmeU5hTihGUFJJbmZvOjpm
cFJlZ1QwKTsKKyAgICAgICAgLy8gbWxhbQorICAgICAgICBpZiAoZ2V0ZW52KCJ2ZXJib3NlIikg
JiYgcmVjb3ZlcnkudGVjaG5pcXVlKCkgPT0gRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrKSBqaXQu
cHJvYmUoW3RlY2huaXF1ZSwgb3BlcmFuZF0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7Cisg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgaml0IEAiLCBfX0xJTkVfXywgIiBmcHIgPSAiLCBmb3Jt
YXQoIjB4JTBsbHgiLCBjb250ZXh0LmZwcjx1aW50NjRfdD4oRlBSSW5mbzo6ZnBSZWdUMCkpLCAi
XG4iKTsKKyAgICAgICAgfSk7CisgICAgICAgIC8vbWxhbSAqLwogI2lmIFVTRShKU1ZBTFVFNjQp
CiAgICAgICAgICAgICBqaXQuYm94RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEdQUkluZm86OnJl
Z1QwKTsKKyAgICAgICAgLy8gbWxhbQorICAgICAgICBpZiAoZ2V0ZW52KCJ2ZXJib3NlIikgJiYg
cmVjb3ZlcnkudGVjaG5pcXVlKCkgPT0gRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrKSBqaXQucHJv
YmUoW3RlY2huaXF1ZSwgb3BlcmFuZF0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgaml0IEAiLCBfX0xJTkVfXywgIiBib3hlZCA9ICIsIGZvcm1h
dCgiMHglMGxseCIsIGNvbnRleHQuZ3ByKEdQUkluZm86OnJlZ1QwKSksICJcbiIpOworICAgICAg
ICB9KTsKKyAgICAgICAgLy9tbGFtICovCiAgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZv
OjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKICNlbHNlCiAg
ICAgICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgQXNzZW1ibHlIZWxw
ZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKQEAgLTY4MSw2ICsxNjg2LDIwIEBAIHZvaWQgT1NS
RXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAg
ICAvLyBtbGFtCisgICAgICAgIGlmIChnZXRlbnYoInZlcmJvc2UiKSkgaml0LnByb2JlKFt0ZWNo
bmlxdWUsIG9wZXJhbmRdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAg
RXhlY1N0YXRlKiBleGVjID0gY29udGV4dC5mcDxFeGVjU3RhdGUqPigpOworICAgICAgICAgICAg
SlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnIob3BlcmFuZCkuanNWYWx1ZSgpOworICAgICAgICAgICAg
ZGF0YUxvZygiICAgIGppdCBSRUNPVkVSIHNwICIsIFJhd1BvaW50ZXIoY29udGV4dC5zcDx2b2lk
Kj4oKSksICIgb3BlcmFuZCAiLCBvcGVyYW5kLCAiICIsIHRlY2huaXF1ZSwgIjwiLCAoaW50KXRl
Y2huaXF1ZSwgIj4gWyIsIFJhd1BvaW50ZXIoJmV4ZWMtPnVuY2hlY2tlZFIob3BlcmFuZCkpLCAi
XSAiLCBmb3JtYXQoIjB4JTBsbHgiLCBKU1ZhbHVlOjplbmNvZGUodmFsdWUpKSwgIiB8ICIpOwor
Ly8gICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGZyYW1lLmdldE9wZXJhbmQ8SlNWYWx1
ZT4ob3BlcmFuZCk7CisvLyAgICAgICAgICAgIGlmICh2YWx1ZS5pc0NlbGwoKSAmJiAhSlNEb2xs
YXJWTVByb3RvdHlwZTo6aXNWYWxpZENlbGwoJnZtLmhlYXAsIHZhbHVlLmFzQ2VsbCgpKSkKKy8v
ICAgICAgICAgICAgICAgIGRhdGFMb2coIkludmFsaWQgSlNWYWx1ZSAobm90IHZhbGlkIGNlbGwp
Iik7CisvLyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNDZWxsKCkp
CisgICAgICAgICAgICAgICAgZGF0YUxvZyh2YWx1ZSk7CisgICAgICAgICAgICBkYXRhTG9nKCJc
biIpOworICAgICAgICB9KTsKKyAgICAgICAgLy9tbGFtICovCiAgICAgfQogCiAgICAgLy8gTm93
IHRoYXQgdGhpbmdzIG9uIHRoZSBzdGFjayBhcmUgcmVjb3ZlcmVkLCBkbyB0aGUgYXJndW1lbnRz
IHJlY292ZXJ5LiBXZSBhc3N1bWUgdGhhdCBhcmd1bWVudHMKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdC5oCShyZXZpc2lvbiAyMjE0NjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDE3
IEBACiAjaW5jbHVkZSAiTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oIgogI2luY2x1ZGUg
Ik9wZXJhbmRzLmgiCiAjaW5jbHVkZSAiVmFsdWVSZWNvdmVyeS5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIENDYWxsSGVscGVyczsKK25hbWVz
cGFjZSBQcm9iZSB7CitjbGFzcyBDb250ZXh0OworfSAvLyBuYW1lc3BhY2UgUHJvYmUKKworbmFt
ZXNwYWNlIFByb2ZpbGVyIHsKK2NsYXNzIE9TUkV4aXQ7Cit9IC8vIG5hbWVzcGFjZSBQcm9maWxl
cgogCiBuYW1lc3BhY2UgREZHIHsKIApAQCAtOTEsNiArOTgsMzQgQEAgcHJpdmF0ZToKICAgICBT
cGVjdWxhdGlvblJlY292ZXJ5VHlwZSBtX3R5cGU7CiB9OwogCitzdHJ1Y3QgT1NSRXhpdFN0YXRl
IDogUmVmQ291bnRlZDxPU1JFeGl0U3RhdGU+IHsKKyAgICBPU1JFeGl0U3RhdGUoT1NSRXhpdEJh
c2UmIGV4aXQsIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJs
b2NrLAorICAgICAgICBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMsIFNwZWN1bGF0
aW9uUmVjb3ZlcnkqIHJlY292ZXJ5LCBwdHJkaWZmX3Qgc3RhY2tQb2ludGVyT2Zmc2V0LAorICAg
ICAgICBpbnQzMl90IGFjdGl2ZVRocmVzaG9sZCwgZG91YmxlIG1lbW9yeVVzYWdlQWRqdXN0ZWRU
aHJlc2hvbGQsIHZvaWQqIGp1bXBUYXJnZXQpCisgICAgICAgIDogZXhpdChleGl0KQorICAgICAg
ICAsIGNvZGVCbG9jayhjb2RlQmxvY2spCisgICAgICAgICwgYmFzZWxpbmVDb2RlQmxvY2soYmFz
ZWxpbmVDb2RlQmxvY2spCisgICAgICAgICwgb3BlcmFuZHMob3BlcmFuZHMpCisgICAgICAgICwg
cmVjb3ZlcnkocmVjb3ZlcnkpCisgICAgICAgICwgc3RhY2tQb2ludGVyT2Zmc2V0KHN0YWNrUG9p
bnRlck9mZnNldCkKKyAgICAgICAgLCBhY3RpdmVUaHJlc2hvbGQoYWN0aXZlVGhyZXNob2xkKQor
ICAgICAgICAsIG1lbW9yeVVzYWdlQWRqdXN0ZWRUaHJlc2hvbGQobWVtb3J5VXNhZ2VBZGp1c3Rl
ZFRocmVzaG9sZCkKKyAgICAgICAgLCBqdW1wVGFyZ2V0KGp1bXBUYXJnZXQpCisgICAgeyB9CisK
KyAgICBPU1JFeGl0QmFzZSYgZXhpdDsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jazsKKyAgICBD
b2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrOworICAgIE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+
IG9wZXJhbmRzOworICAgIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5OworICAgIHB0cmRp
ZmZfdCBzdGFja1BvaW50ZXJPZmZzZXQ7CisgICAgdWludDMyX3QgYWN0aXZlVGhyZXNob2xkOwor
ICAgIGRvdWJsZSBtZW1vcnlVc2FnZUFkanVzdGVkVGhyZXNob2xkOworICAgIHZvaWQqIGp1bXBU
YXJnZXQ7CisKKyAgICBQcm9maWxlcjo6T1NSRXhpdCogcHJvZmlsZXJFeGl0IHsgbnVsbHB0ciB9
OworfTsKKwogLy8gPT09IE9TUkV4aXQgPT09CiAvLwogLy8gVGhpcyBzdHJ1Y3R1cmUgZGVzY3Jp
YmVzIGhvdyB0byBleGl0IHRoZSBzcGVjdWxhdGl2ZSBwYXRoIGJ5CkBAIC05OCwxMSArMTMzLDE3
IEBAIHByaXZhdGU6CiBzdHJ1Y3QgT1NSRXhpdCA6IHB1YmxpYyBPU1JFeGl0QmFzZSB7CiAgICAg
T1NSRXhpdChFeGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJv
ZmlsZSwgU3BlY3VsYXRpdmVKSVQqLCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVj
b3ZlcnlJbmRleCA9IFVJTlRfTUFYKTsKIAorICAgIC8vIG1sYW0gVEVTVCAqLworICAgIHN0YXRp
YyB2b2lkIHByZXRlbmRFeGVjdXRlT1NSRXhpdChQcm9iZTo6Q29udGV4dCYpOworICAgIHN0YXRp
YyB2b2lkIHZlcmlmeUV4ZWN1dGVPU1JFeGl0KFByb2JlOjpDb250ZXh0Jik7CisgICAgLy8gbWxh
bSBURVNUICovCisgICAgc3RhdGljIHZvaWQgZXhlY3V0ZU9TUkV4aXQoUHJvYmU6OkNvbnRleHQm
KTsKICAgICBzdGF0aWMgdm9pZCBKSVRfT1BFUkFUSU9OIGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0
ZSopIFdURl9JTlRFUk5BTDsKIAogICAgIHVuc2lnbmVkIG1fcGF0Y2hhYmxlQ29kZU9mZnNldCB7
IDAgfTsKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbV9jb2RlOworICAgIFJlZlB0
cjxPU1JFeGl0U3RhdGU+IGV4aXRTdGF0ZTsKICAgICAKICAgICBKU1ZhbHVlU291cmNlIG1fanNW
YWx1ZVNvdXJjZTsKICAgICBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIG1fdmFsdWVQcm9m
aWxlOwpAQCAtMTMyLDYgKzE3Myw5IEBAIHN0cnVjdCBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0lu
Zm8gewogICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0OwogfTsKIAordm9pZCByZWlmeUlubGlu
ZWRDYWxsRnJhbWVzKFByb2JlOjpDb250ZXh0JiwgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9j
aywgY29uc3QgT1NSRXhpdEJhc2UmKTsKK3ZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KFByb2Jl
OjpDb250ZXh0JiwgVk0mLCBDb2RlQmxvY2sqLCBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2Nr
LCBPU1JFeGl0Jik7CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVO
QUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
Q29tcGlsZXJDb21tb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAkocmV2aXNpb24gMjIxNDY0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogdm9pZCBoYW5kbGVFeGl0Q291bnRz
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKIHsKICAgICBpZiAo
IWV4aXRLaW5kTWF5SmV0dGlzb24oZXhpdC5tX2tpbmQpKSB7CkBAIC0xNDMsNiArMTQ0LDcgQEAg
dm9pZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYgaml0LAogICAgIGRvbmVBZGp1c3Rp
bmcubGluaygmaml0KTsKIH0KIAorLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgZml4IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiB2b2lkIHJlaWZ5
SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBl
eGl0KQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgbGVhdmUgaG9sZXMgb24gdGhlIHN0
YWNrIHdoZW4gcGVyZm9ybWluZyBhbiBPU1IgZXhpdApAQCAtMjUyLDYgKzI1NCw3IEBAIHZvaWQg
cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMKICAgICB9CiB9CiAKKy8vIEZJWE1F
OiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc1MTQ1Lgogc3RhdGljIHZvaWQgb3NyV3JpdGVCYXJyaWVyKENDYWxsSGVscGVy
cyYgaml0LCBHUFJSZWcgb3duZXIsIEdQUlJlZyBzY3JhdGNoKQogewogICAgIEFzc2VtYmx5SGVs
cGVyczo6SnVtcCBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuID0gaml0LmJhcnJpZXJCcmFuY2hX
aXRob3V0RmVuY2Uob3duZXIpOwpAQCAtMjcyLDYgKzI3NSw3IEBAIHN0YXRpYyB2b2lkIG9zcldy
aXRlQmFycmllcihDQ2FsbEhlbHBlcnMKICAgICBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuLmxp
bmsoJmppdCk7CiB9CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogdm9pZCBhZGp1c3RBbmRK
dW1wVG9UYXJnZXQoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2Um
IGV4aXQpCiB7CiAgICAgaml0Lm1lbW9yeUZlbmNlKCk7CkBAIC0zMTgsNiArMzIyLDggQEAgdm9p
ZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0mIHZtLCBDQ2FsbAogICAgIH0KICAgICAKICAgICBq
aXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdldCksIEdQUklu
Zm86OnJlZ1QyKTsKKyAgICBpZiAoaml0LmNvZGVCbG9jaygpLT5qaXRUeXBlKCkgPT0gSklUQ29k
ZTo6REZHSklUKQorICAgICAgICBqaXQucHJvYmUoT1NSRXhpdDo6dmVyaWZ5RXhlY3V0ZU9TUkV4
aXQsICZ2bSk7IC8vIG1sYW0gVEVTVAogICAgIGppdC5qdW1wKEdQUkluZm86OnJlZ1QyKTsKIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21t
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRD
b21waWxlckNvbW1vbi5oCShyZXZpc2lvbiAyMjE0NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQw
LDYgKzQwLDcgQEAgdm9pZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYsIGNvbgogdm9p
ZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVycyYsIGNvbnN0IE9TUkV4aXRCYXNl
Jik7CiB2b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChWTSYsIENDYWxsSGVscGVycyYsIGNvbnN0
IE9TUkV4aXRCYXNlJik7CiAKKy8vIEZJWE1FOiBUaGlzIHdvbid0IGJlIG5lZWRlZCBvbmNlIHdl
IGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1LgogdGVt
cGxhdGUgPHR5cGVuYW1lIEpJVENvZGVUeXBlPgogdm9pZCBhZGp1c3RGcmFtZUFuZFN0YWNrSW5P
U1JFeGl0Q29tcGlsZXJUaHVuayhNYWNyb0Fzc2VtYmxlciYgaml0LCBWTSogdm0sIEpJVENvZGU6
OkpJVFR5cGUgaml0VHlwZSkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjIxNDY0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2Miw2ICsxMzYy
LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZURpcgogICAgIAogICAg
IERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyh2bS5oZWFwKTsKICAgICAKKyAgICBkYXRhTG9nKCJJ
biBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHNEdXJpbmdFeGl0XG4iKTsKICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jazsKICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICBjb2Rl
QmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcklubGluZUNhbGxGcmFtZShpbmxpbmVDYWxsRnJh
bWUpOwpAQCAtMTM5MSw2ICsxMzkyLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkNyZWF0ZUNsbwogICAgIAogICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyh2bS5oZWFwKTsK
ICAgICAKKyAgICBkYXRhTG9nKCJJbiBvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHNEdXJp
bmdFeGl0XG4iKTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jazsKICAgICBpZiAoaW5saW5lQ2Fs
bEZyYW1lKQogICAgICAgICBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcklubGluZUNh
bGxGcmFtZShpbmxpbmVDYWxsRnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVGh1bmtzLmNwcAkocmV2aXNpb24gMjIxNDY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDE0IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0R2VuZXJhdGlvblQKICAgICByZXR1cm4gRklOQUxJ
WkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJERkcgT1NSIGV4aXQgZ2VuZXJhdGlvbiB0aHVuayIpKTsK
IH0KIAorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRUaHVua0dlbmVyYXRvcihWTSogdm0p
Cit7CisgICAgTWFjcm9Bc3NlbWJsZXIgaml0OworICAgIGppdC5wcm9iZShPU1JFeGl0OjpleGVj
dXRlT1NSRXhpdCwgdm0pOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxf
VEhVTktfSUQpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkRGRyBP
U1IgZXhpdCB0aHVuayIpKTsKK30KKwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckVudHJ5VGh1
bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIEFzc2VtYmx5SGVscGVycyBqaXQobnVsbHB0cik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmgJKHJldmlzaW9uIDIyMTQ2
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBWTTsKIAogbmFtZXNwYWNlIERGRyB7CiAKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0VGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKFZNKik7CiBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgb3NyRW50cnlUaHVua0dlbmVyYXRvcihWTSopOwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCShyZXZpc2lv
biAyMjE0NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgRXhlY3V0YWJsZUJhc2UqIEFzc2Vt
Ymx5SGVscGVyczo6ZXhlY3V0YQogICAgIHJldHVybiBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFt
ZS0+YmFzZWxpbmVDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpOwogfQogCisvLyBGSVhNRTog
cmVtb3ZlIHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NTE0NS4KIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+JiBBc3NlbWJs
eUhlbHBlcnM6OmRlY29kZWRDb2RlTWFwRm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogewogICAg
IEFTU0VSVChjb2RlQmxvY2sgPT0gY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9u
IDIyMTQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE0NjUsNiArMTQ2NSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2
b2lkIGVtaXREdW1iVmlydHVhbENhbGwoVk0mLCBDYWxsTGlua0luZm8qKTsKICAgICAKKyAgICAv
LyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTE0NS4KICAgICBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zm
c2V0PiYgZGVjb2RlZENvZGVNYXBGb3IoQ29kZUJsb2NrKik7CiAKICAgICB2b2lkIG1ha2VTcGFj
ZU9uU3RhY2tGb3JDQ2FsbCgpOwpAQCAtMTY1Niw2ICsxNjU3LDcgQEAgcHJvdGVjdGVkOgogICAg
IENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiAgICAgQ29kZUJsb2NrKiBtX2Jhc2VsaW5lQ29kZUJs
b2NrOwogCisgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgZml4IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiAgICAgSGFzaE1hcDxDb2RlQmxv
Y2sqLCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0Pj4gbV9kZWNvZGVkQ29kZU1hcHM7
CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAJKHJldmlzaW9uIDIyMTQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOTYsNiArMjI5Niw3IEBAIGNoYXIqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZUIKICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4ocmVzdWx0KTsKIH0KIAorLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2Ug
Zml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT1NSV3JpdGVCYXJyaWVyKEV4ZWNTdGF0ZSogZXhlYywg
SlNDZWxsKiBjZWxsKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDIyMTQ2NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NDUsNiArNDQ1LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9j
YXRlQgogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlQnV0dGVyZmx5VG9H
cm93UHJvcGVydHlTdG9yYWdlKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kiwgc2l6ZV90IG5ld1NpemUp
IFdURl9JTlRFUk5BTDsKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbldyaXRlQmFycmll
clNsb3dQYXRoKEV4ZWNTdGF0ZSosIEpTQ2VsbCopOworLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdo
ZW4gd2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUu
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT1NSV3JpdGVCYXJyaWVyKEV4ZWNTdGF0ZSos
IEpTQ2VsbCopOwogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRXhjZXB0aW9uRnV6eihF
eGVjU3RhdGUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
ck9TUkV4aXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZXJPU1JFeGl0LmgJKHJldmlzaW9uIDIyMTQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9Qcm9maWxlck9TUkV4aXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw3ICs0Myw4
IEBAIHB1YmxpYzoKICAgICAKICAgICB1aW50NjRfdCogY291bnRlckFkZHJlc3MoKSB7IHJldHVy
biAmbV9jb3VudGVyOyB9CiAgICAgdWludDY0X3QgY291bnQoKSBjb25zdCB7IHJldHVybiBtX2Nv
dW50ZXI7IH0KLSAgICAKKyAgICB2b2lkIGluY0NvdW50KCkgeyBtX2NvdW50ZXIrKzsgfQorCiAg
ICAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSopIGNvbnN0OwogCiBwcml2YXRlOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkocmV2aXNpb24gMjIxNDY0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBI
YXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRl
ciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAw
NSwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMiwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM0NCwxMiArMzQ0LDkgQEAgcHVi
bGljOgogICAgIHVpbnQzMl90IHRhZygpIGNvbnN0OwogICAgIGludDMyX3QgcGF5bG9hZCgpIGNv
bnN0OwogCi0jaWYgIUVOQUJMRShKSVQpCi0gICAgLy8gVGhpcyBzaG91bGQgb25seSBiZSB1c2Vk
IGJ5IHRoZSBMTEludCBDIExvb3AgaW50ZXJwcmV0ZXIgd2hvIG5lZWRzCi0gICAgLy8gc3ludGhl
c2l6ZSBKU1ZhbHVlIGZyb20gaXRzICJyZWdpc3RlciJzIGhvbGRpbmcgdGFnIGFuZCBwYXlsb2Fk
Ci0gICAgLy8gdmFsdWVzLgorICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBieSB0aGUg
TExJbnQgQyBMb29wIGludGVycHJldGVyIGFuZCBPU1JFeGl0IGNvZGUgd2hvIG5lZWRzCisgICAg
Ly8gc3ludGhlc2l6ZSBKU1ZhbHVlIGZyb20gaXRzICJyZWdpc3RlciJzIGhvbGRpbmcgdGFnIGFu
ZCBwYXlsb2FkIHZhbHVlcy4KICAgICBleHBsaWNpdCBKU1ZhbHVlKGludDMyX3QgdGFnLCBpbnQz
Ml90IHBheWxvYWQpOwotI2VuZGlmCiAKICNlbGlmIFVTRShKU1ZBTFVFNjQpCiAgICAgLyoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaAkocmV2aXNpb24gMjIxNDY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzQwLDcgKzM0MCw3IEBAIGlu
bGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGludCBpKQogICAgIHUuYXNCaXRzLnBheWxvYWQgPSBpOwog
fQogCi0jaWYgIUVOQUJMRShKSVQpCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKIGlubGluZSBKU1Zh
bHVlOjpKU1ZhbHVlKGludDMyX3QgdGFnLCBpbnQzMl90IHBheWxvYWQpCiB7CiAgICAgdS5hc0Jp
dHMudGFnID0gdGFnOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5jcHAJKHJldmlzaW9uIDIyMTQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjQsNiArMzY0LDEzIEBAIHN0YXRpYyB2
b2lkIG92ZXJyaWRlRGVmYXVsdHMoKQogI2lmICFIQVZFKE1BQ0hfRVhDRVBUSU9OUykKICAgICBP
cHRpb25zOjp1c2VNYWNoRm9yRXhjZXB0aW9ucygpID0gZmFsc2U7CiAjZW5kaWYKKyAgICAvLyBt
bGFtIFRFU1QKKyAgICBjb25zdCBjaGFyKiByZW9wdCA9IGdldGVudigicmVvcHQiKTsKKyAgICBp
ZiAocmVvcHQpIHsKKyAgICAgICAgaW50IHZhbHVlID0gYXRvaShyZW9wdCk7CisgICAgICAgIE9w
dGlvbnM6Om9zckV4aXRDb3VudEZvclJlb3B0aW1pemF0aW9uKCkgPSB2YWx1ZTsgLy8gbWxhbSBU
RVNUCisgICAgfQorICAgIC8vIG1sYW0gVEVTVCAqLwogfQogCiBzdGF0aWMgdm9pZCByZWNvbXB1
dGVEZXBlbmRlbnRPcHRpb25zKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319676</attachid>
            <date>2017-09-01 17:28:51 -0700</date>
            <delta_ts>2017-09-01 17:28:51 -0700</delta_ts>
            <desc>archive of code that compares the probe based OSR results vs the jit based one v.2</desc>
            <filename>wip-validate-dfg-osr-exit.patch</filename>
            <type>text/plain</type>
            <size>119469</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyMjE0NjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgwNCw2ICszODA0LDEwIEBA
IGludCBydW5KU0MoQ29tbWFuZExpbmUgb3B0aW9ucywgYm9vbCBpc1cKIAogaW50IGpzY21haW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogeworICAgIGNvbnN0IGNoYXIqIHdhaXQgPSBnZXRlbnYo
IndhaXQiKTsKKyAgICB3aGlsZSAod2FpdCkKKyAgICAgICAgc2xlZXAoKGRvdWJsZSkyKTsKKwog
ICAgIC8vIE5lZWQgdG8gb3ZlcnJpZGUgYW5kIGVuYWJsZSByZXN0cmljdGVkIG9wdGlvbnMgYmVm
b3JlIHdlIHN0YXJ0IHBhcnNpbmcgb3B0aW9ucyBiZWxvdy4KICAgICBPcHRpb25zOjplbmFibGVS
ZXN0cmljdGVkT3B0aW9ucyh0cnVlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDIyMTQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQ0LDYg
KzI0NDQsNyBAQAogCQlGRTEwQUFFQzFGNDRENTQ1MDA5REVEQzUgLyogUHJvYmVTdGFjay5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEwQUFFOTFG
NDRENTEwMDA5REVEQzUgLyogUHJvYmVTdGFjay5jcHAgKi87IH07CiAJCUZFMTBBQUVFMUY0NEQ5
NTQwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTBBQUVEMUY0NEQ5NDYwMDlERURDNSAvKiBQcm9iZUNvbnRl
eHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlG
RTEwQUFGNDFGNDY4Mzk2MDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTBBQUYzMUY0NjgyNkQwMDlERURD
NSAvKiBQcm9iZUNvbnRleHQuY3BwICovOyB9OworCQlGRTEwQUFGRjFGNEUzOEU1MDA5REVEQzUg
LyogUHJvYmVGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkUxMEFBRkUxRjRFMzhEQTAwOURFREM1IC8qIFByb2JlRnJhbWUuaCAqLzsgfTsKIAkJ
RkUxMjIwMjcxQkU3RjU4QzAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxMjIwMjYxQkU3RjU2NDAwMzlF
NkYyIC8qIEpJVEFkZEdlbmVyYXRvci5oICovOyB9OwogCQlGRTEyMjAyODFCRTdGNTkxMDAzOUU2
RjIgLyogSklUQWRkR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFMTIyMDI1MUJFN0Y1NjQwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0
b3IuY3BwICovOyB9OwogCQlGRTE4N0EwMTFCRkJFNTVFMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJh
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
MTg3OUZGMUJGQkM3M0MwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuY3BwICovOyB9OwpAQCAt
NTEzOCw2ICs1MTM5LDcgQEAKIAkJRkUxMEFBRUExRjQ0RDUxMjAwOURFREM1IC8qIFByb2JlU3Rh
Y2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvYmVTdGFjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTEwQUFFRDFGNDREOTQ2MDA5REVEQzUgLyogUHJv
YmVDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2JlQ29udGV4
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTEwQUFGMzFGNDY4MjZEMDA5REVE
QzUgLyogUHJvYmVDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFByb2JlQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMTBB
QUZFMUY0RTM4REEwMDlERURDNSAvKiBQcm9iZUZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFByb2JlRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkUxMjIwMjUxQkU3RjU2NDAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRBZGRHZW5lcmF0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRTEyMjAyNjFCRTdGNTY0MDAzOUU2RjIgLyogSklUQWRk
R2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVEFkZEdlbmVy
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTE4NzlGRjFCRkJDNzNDMDAz
OEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpJVE11bEdlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC01MjA3LDYgKzUyMDksNyBAQAogCQlGRTgwQzE5NjFENzc1QjI3MDA4NTEwQzAgLyogQ2F0
Y2hTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYXRjaFNjb3BlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODBDMTk4MUQ3NzVGQjQwMDg1MTBDMCAv
KiBDYXRjaFNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENh
dGNoU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTgwQzE5QTFENzc2
OEZEMDA4NTEwQzAgLyogRXhjZXB0aW9uRXZlbnRMb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGNlcHRpb25FdmVudExvY2F0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4NEVFNzkxRjU2MzUyRDAwNTFCOEYxIC8qIENvZGVC
bG9ja0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZUJsb2Nr
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTkwQkIzQTFCN0NGNjRF
MDA2QjNGMDMgLyogVk1JbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFZNSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTk4QjVCNjFCQjlB
RTExMDA3M0U3QTYgLyogSklUU3ViR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpJVFN1YkdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRTk5QjI0NzFDMjRCNkQzMDBDODIxNTkgLyogSklUTmVnR2VuZXJhdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVE5lZ0dlbmVyYXRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NzIyLDYgKzc3MjUsNyBAQAogCQkJCUZFNjNERDUz
MUVBOUI2MEUwMDEwM0E2OSAvKiBQcmludGVyLmggKi8sCiAJCQkJRkUxMEFBRjMxRjQ2ODI2RDAw
OURFREM1IC8qIFByb2JlQ29udGV4dC5jcHAgKi8sCiAJCQkJRkUxMEFBRUQxRjQ0RDk0NjAwOURF
REM1IC8qIFByb2JlQ29udGV4dC5oICovLAorCQkJCUZFMTBBQUZFMUY0RTM4REEwMDlERURDNSAv
KiBQcm9iZUZyYW1lLmggKi8sCiAJCQkJRkUxMEFBRTkxRjQ0RDUxMDAwOURFREM1IC8qIFByb2Jl
U3RhY2suY3BwICovLAogCQkJCUZFMTBBQUVBMUY0NEQ1MTIwMDlERURDNSAvKiBQcm9iZVN0YWNr
LmggKi8sCiAJCQkJRkU1MzNDQTAxRjIxN0MzMTAwMTZBMUZFIC8qIHRlc3RtYXNtLmNwcCAqLywK
QEAgLTc3NzgsNiArNzc4Miw3IEBACiAJCQkJOTY5QTA3OTEwRUQxRDNBRTAwRjFGNjgxIC8qIENv
ZGVCbG9jay5oICovLAogCQkJCTBGOEY5NDNEMTY2NzYzMkQwMEQ2MTk3MSAvKiBDb2RlQmxvY2tI
YXNoLmNwcCAqLywKIAkJCQkwRjhGOTQzRTE2Njc2MzJEMDBENjE5NzEgLyogQ29kZUJsb2NrSGFz
aC5oICovLAorCQkJCUZFODRFRTc5MUY1NjM1MkQwMDUxQjhGMSAvKiBDb2RlQmxvY2tJbmxpbmVz
LmggKi8sCiAJCQkJMEZDOTdGMkYxODIwMjBENzAwMkM5QjI2IC8qIENvZGVCbG9ja0pldHRpc29u
aW5nV2F0Y2hwb2ludC5jcHAgKi8sCiAJCQkJMEZDOTdGMzAxODIwMjBENzAwMkM5QjI2IC8qIENv
ZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5oICovLAogCQkJCTBGOTZFQkIxMTY2NzZFRjQw
MDhCQURFMyAvKiBDb2RlQmxvY2tXaXRoSklUVHlwZS5oICovLApAQCAtOTY4OSw2ICs5Njk0LDcg
QEAKIAkJCQlBRDJGQ0MxRDFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNb2R1bGVQcm90
b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDQ5MzdDODFEREQwQUFFMDA3N0M4MDcg
LyogV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUFEMkZDQzJE
MURCODM4RkQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRkUxMEFBRkYxRjRFMzhFNTAwOURFREM1IC8qIFByb2JlRnJhbWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUFEMkZDQkY5MURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0MxRTFEQjU5Q0IyMDBC
M0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUFEMkZDQkZCMURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMjIx
NDY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgY29uc3QgZG91YmxlIE1hY3JvQXNz
ZW1ibGVyOjp0d29Ub1RoZTMyIAogI2lmIEVOQUJMRShNQVNNX1BST0JFKQogc3RhdGljIHZvaWQg
c3RkRnVuY3Rpb25DYWxsYmFjayhQcm9iZTo6Q29udGV4dCYgY29udGV4dCkKIHsKLSAgICBhdXRv
IGZ1bmMgPSBzdGF0aWNfY2FzdDxjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUHJvYmU6OkNvbnRl
eHQmKT4qPihjb250ZXh0LmFyZyk7CisgICAgYXV0byBmdW5jID0gY29udGV4dC5hcmc8Y29uc3Qg
c3RkOjpmdW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+Kj4oKTsKICAgICAoKmZ1bmMpKGNv
bnRleHQpOwogfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcAkocmV2aXNpb24gMjIxNDY0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclByaW50
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBwcmludE1lbW9y
eShQcmludFN0cmVhbSYgb3V0LCBDb250ZQogdm9pZCBwcmludENhbGxiYWNrKFByb2JlOjpDb250
ZXh0JiBwcm9iZUNvbnRleHQpCiB7CiAgICAgYXV0byYgb3V0ID0gV1RGOjpkYXRhRmlsZSgpOwot
ICAgIFByaW50UmVjb3JkTGlzdCYgbGlzdCA9ICpyZWludGVycHJldF9jYXN0PFByaW50UmVjb3Jk
TGlzdCo+KHByb2JlQ29udGV4dC5hcmcpOworICAgIFByaW50UmVjb3JkTGlzdCYgbGlzdCA9ICpw
cm9iZUNvbnRleHQuYXJnPFByaW50UmVjb3JkTGlzdCo+KCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsaXN0LnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGF1dG8mIHJlY29yZCA9IGxpc3Rb
aV07CiAgICAgICAgIENvbnRleHQgY29udGV4dChwcm9iZUNvbnRleHQsIHJlY29yZC5kYXRhKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVDb250ZXh0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUNvbnRleHQu
aAkocmV2aXNpb24gMjIxNDY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Q
cm9iZUNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTQgKzQ1LDggQEAgc3RydWN0IENQ
VVN0YXRlIHsKICAgICBpbmxpbmUgdWludHB0cl90JiBzcHIoU1BSZWdpc3RlcklEKTsKICAgICBp
bmxpbmUgZG91YmxlJiBmcHIoRlBSZWdpc3RlcklEKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6
dHlwZSogPSBudWxscHRyPgotICAgIFQgZ3ByKFJlZ2lzdGVySUQpIGNvbnN0OwotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxU
Pjo6dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+Ci0gICAgVCBncHIoUmVnaXN0ZXJJRCkgY29uc3Q7
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+Ci0gICAgVCBzcHIoU1BSZWdp
c3RlcklEKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRyPgotICAg
IFQgc3ByKFNQUmVnaXN0ZXJJRCkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBn
cHIoUmVnaXN0ZXJJRCkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBzcHIoU1BS
ZWdpc3RlcklEKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGZwcihGUFJlZ2lz
dGVySUQpIGNvbnN0OwogCiAgICAgdm9pZComIHBjKCk7CkBAIC04NSwzMiArNzksMjQgQEAgaW5s
aW5lIGRvdWJsZSYgQ1BVU3RhdGU6OmZwcihGUFJlZ2lzdGVySQogICAgIHJldHVybiBmcHJzW2lk
XTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3Rk
Ojppc19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKj4KLVQgQ1BVU3RhdGU6OmdwcihSZWdpc3Rl
cklEIGlkKSBjb25zdAotewotICAgIENQVVN0YXRlKiBjcHUgPSBjb25zdF9jYXN0PENQVVN0YXRl
Kj4odGhpcyk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGNwdS0+Z3ByKGlkKSk7Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9p
bnRlcjxUPjo6dmFsdWU+Ojp0eXBlKj4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CiBUIENQVVN0YXRl
OjpncHIoUmVnaXN0ZXJJRCBpZCkgY29uc3QKIHsKICAgICBDUFVTdGF0ZSogY3B1ID0gY29uc3Rf
Y2FzdDxDUFVTdGF0ZSo+KHRoaXMpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQ+KGNw
dS0+Z3ByKGlkKSk7CisgICAgYXV0byYgZnJvbSA9IGNwdS0+Z3ByKGlkKTsKKyAgICB0eXBlbmFt
ZSBzdGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZSB0byB7IH07CisgICAgc3RkOjptZW1jcHkoJnRv
LCAmZnJvbSwgc2l6ZW9mKHRvKSk7IC8vIFVzZSBzdGQ6Om1lbWNweSB0byBhdm9pZCBzdHJpY3Qg
YWxpYXNpbmcgaXNzdWVzLgorICAgIHJldHVybiB0bzsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0
eXBlKj4KLVQgQ1BVU3RhdGU6OnNwcihTUFJlZ2lzdGVySUQgaWQpIGNvbnN0Ci17Ci0gICAgQ1BV
U3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8VD4oY3B1LT5zcHIoaWQpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGUqPgor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KIFQgQ1BVU3RhdGU6OnNwcihTUFJlZ2lzdGVySUQgaWQpIGNv
bnN0CiB7CiAgICAgQ1BVU3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsK
LSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPihjcHUtPnNwcihpZCkpOworICAgIGF1dG8m
IGZyb20gPSBjcHUtPnNwcihpZCk7CisgICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD46
OnR5cGUgdG8geyB9OworICAgIHN0ZDo6bWVtY3B5KCZ0bywgJmZyb20sIHNpemVvZih0bykpOyAv
LyBVc2Ugc3RkOjptZW1jcHkgdG8gYXZvaWQgc3RyaWN0IGFsaWFzaW5nIGlzc3Vlcy4KKyAgICBy
ZXR1cm4gdG87CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0yMDUsMjUgKzE5MSwzMSBA
QCBwdWJsaWM6CiAgICAgdXNpbmcgRlBSZWdpc3RlcklEID0gTWFjcm9Bc3NlbWJsZXI6OkZQUmVn
aXN0ZXJJRDsKIAogICAgIENvbnRleHQoU3RhdGUqIHN0YXRlKQotICAgICAgICA6IG1fc3RhdGUo
c3RhdGUpCi0gICAgICAgICwgYXJnKHN0YXRlLT5hcmcpCi0gICAgICAgICwgY3B1KHN0YXRlLT5j
cHUpCisgICAgICAgIDogY3B1KHN0YXRlLT5jcHUpCisgICAgICAgICwgbV9zdGF0ZShzdGF0ZSkK
ICAgICB7IH0KIAotICAgIHVpbnRwdHJfdCYgZ3ByKFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIG1f
c3RhdGUtPmNwdS5ncHIoaWQpOyB9Ci0gICAgdWludHB0cl90JiBzcHIoU1BSZWdpc3RlcklEIGlk
KSB7IHJldHVybiBtX3N0YXRlLT5jcHUuc3ByKGlkKTsgfQotICAgIGRvdWJsZSYgZnByKEZQUmVn
aXN0ZXJJRCBpZCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LmZwcihpZCk7IH0KLSAgICBjb25zdCBj
aGFyKiBncHJOYW1lKFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5ncHJOYW1l
KGlkKTsgfQotICAgIGNvbnN0IGNoYXIqIHNwck5hbWUoU1BSZWdpc3RlcklEIGlkKSB7IHJldHVy
biBtX3N0YXRlLT5jcHUuc3ByTmFtZShpZCk7IH0KLSAgICBjb25zdCBjaGFyKiBmcHJOYW1lKEZQ
UmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LmZwck5hbWUoaWQpOyB9Ci0KLSAg
ICB2b2lkKiYgcGMoKSB7IHJldHVybiBtX3N0YXRlLT5jcHUucGMoKTsgfQotICAgIHZvaWQqJiBm
cCgpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5mcCgpOyB9Ci0gICAgdm9pZComIHNwKCkgeyByZXR1
cm4gbV9zdGF0ZS0+Y3B1LnNwKCk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgcGMo
KSB7IHJldHVybiBtX3N0YXRlLT5jcHUucGM8VD4oKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IFQgZnAoKSB7IHJldHVybiBtX3N0YXRlLT5jcHUuZnA8VD4oKTsgfQotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IFQgc3AoKSB7IHJldHVybiBtX3N0YXRlLT5jcHUuc3A8VD4oKTsgfQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgVCBhcmcoKSB7IHJldHVybiByZWludGVycHJldF9j
YXN0PFQ+KG1fc3RhdGUtPmFyZyk7IH0KKworICAgIHVpbnRwdHJfdCYgZ3ByKFJlZ2lzdGVySUQg
aWQpIHsgcmV0dXJuIGNwdS5ncHIoaWQpOyB9CisgICAgdWludHB0cl90JiBzcHIoU1BSZWdpc3Rl
cklEIGlkKSB7IHJldHVybiBjcHUuc3ByKGlkKTsgfQorICAgIGRvdWJsZSYgZnByKEZQUmVnaXN0
ZXJJRCBpZCkgeyByZXR1cm4gY3B1LmZwcihpZCk7IH0KKyAgICBjb25zdCBjaGFyKiBncHJOYW1l
KFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIGNwdS5ncHJOYW1lKGlkKTsgfQorICAgIGNvbnN0IGNo
YXIqIHNwck5hbWUoU1BSZWdpc3RlcklEIGlkKSB7IHJldHVybiBjcHUuc3ByTmFtZShpZCk7IH0K
KyAgICBjb25zdCBjaGFyKiBmcHJOYW1lKEZQUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gY3B1LmZw
ck5hbWUoaWQpOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGdwcihSZWdpc3RlcklE
IGlkKSBjb25zdCB7IHJldHVybiBjcHUuZ3ByPFQ+KGlkKTsgfQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IFQgc3ByKFNQUmVnaXN0ZXJJRCBpZCkgY29uc3QgeyByZXR1cm4gY3B1LnNwcjxUPihp
ZCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGZwcihGUFJlZ2lzdGVySUQgaWQpIGNv
bnN0IHsgcmV0dXJuIGNwdS5mcHI8VD4oaWQpOyB9CisKKyAgICB2b2lkKiYgcGMoKSB7IHJldHVy
biBjcHUucGMoKTsgfQorICAgIHZvaWQqJiBmcCgpIHsgcmV0dXJuIGNwdS5mcCgpOyB9CisgICAg
dm9pZComIHNwKCkgeyByZXR1cm4gY3B1LnNwKCk7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IFQgcGMoKSB7IHJldHVybiBjcHUucGM8VD4oKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IFQgZnAoKSB7IHJldHVybiBjcHUuZnA8VD4oKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IFQgc3AoKSB7IHJldHVybiBjcHUuc3A8VD4oKTsgfQogCiAgICAgU3RhY2smIHN0YWNrKCkK
ICAgICB7CkBAIC0yMzQsMTMgKzIyNiwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNXcml0ZXNU
b0ZsdXNoKCkgeyByZXR1cm4gbV9zdGFjay5oYXNXcml0ZXNUb0ZsdXNoKCk7IH0KICAgICBTdGFj
ayogcmVsZWFzZVN0YWNrKCkgeyByZXR1cm4gbmV3IFN0YWNrKFdURk1vdmUobV9zdGFjaykpOyB9
CiAKLXByaXZhdGU6Ci0gICAgU3RhdGUqIG1fc3RhdGU7Ci1wdWJsaWM6Ci0gICAgdm9pZCogYXJn
OworICAgIHZvaWQgc2V0U3RhY2soU3RhY2smJiBuZXdTdGFjaykgeyBtX3N0YWNrID0gV1RGTW92
ZShuZXdTdGFjayk7IH0KKwogICAgIENQVVN0YXRlJiBjcHU7CiAKIHByaXZhdGU6CisgICAgU3Rh
dGUqIG1fc3RhdGU7CiAgICAgU3RhY2sgbV9zdGFjazsKIAogICAgIGZyaWVuZCBKU19FWFBPUlRf
UFJJVkFURSB2b2lkKiBwcm9iZVN0YXRlRm9yQ29udGV4dChDb250ZXh0Jik7IC8vIE5vdCBmb3Ig
Z2VuZXJhbCB1c2UuIFRoaXMgc2hvdWxkIG9ubHkgYmUgZm9yIHdyaXRpbmcgdGVzdHMuCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAJKHJl
dmlzaW9uIDIyMTQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVT
dGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEwICszNSwxMiBAQCBuYW1lc3BhY2UgUHJv
YmUgewogCiBQYWdlOjpQYWdlKHZvaWQqIGJhc2VBZGRyZXNzKQogICAgIDogbV9iYXNlTG9naWNh
bEFkZHJlc3MoYmFzZUFkZHJlc3MpCisgICAgLCBtX3BoeXNpY2FsQWRkcmVzc09mZnNldChyZWlu
dGVycHJldF9jYXN0PHVpbnQ4X3QqPigmbV9idWZmZXIpIC0gcmVpbnRlcnByZXRfY2FzdDx1aW50
OF90Kj4oYmFzZUFkZHJlc3MpKQogewogICAgIG1lbWNweSgmbV9idWZmZXIsIGJhc2VBZGRyZXNz
LCBzX3BhZ2VTaXplKTsKIH0KIAorI2lmIFVTRV9ESVJUWV9CSVRTIC8vIG1sYW0KIHZvaWQgUGFn
ZTo6Zmx1c2hXcml0ZXMoKQogewogICAgIHVpbnRwdHJfdCBkaXJ0eUJpdHMgPSBtX2RpcnR5Qml0
czsKQEAgLTYzLDYgKzY1LDI3IEBAIHZvaWQgUGFnZTo6Zmx1c2hXcml0ZXMoKQogICAgIH0KICAg
ICBtX2RpcnR5Qml0cyA9IDA7CiB9CisjZWxzZQordm9pZCBQYWdlOjpmbHVzaFdyaXRlcyh2b2lk
KiBzcCkKK3sKKyAgICBzaXplX3Qgc2l6ZSA9IHNpemVvZihtX2J1ZmZlcik7CisgICAgdWludDhf
dCogc3JjID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJm1fYnVmZmVyKTsKKyAgICB1aW50
OF90KiBkc3QgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihtX2Jhc2VMb2dpY2FsQWRkcmVz
cyk7CisKKyAgICB1aW50OF90KiBzdGFja1BvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihzcCk7CisgICAgaWYgKGRzdCArIHNpemUgPD0gc3RhY2tQb2ludGVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoZHN0IDwgc3RhY2tQb2ludGVyKSB7CisgICAgICAgIHB0cmRpZmZf
dCBkaWZmID0gc3RhY2tQb2ludGVyIC0gZHN0OworICAgICAgICBkc3QgKz0gZGlmZjsKKyAgICAg
ICAgc3JjICs9IGRpZmY7CisgICAgICAgIHNpemUgLT0gZGlmZjsKKyAgICB9CisKKyAgICBtZW1j
cHkoZHN0LCBzcmMsIHNpemUpOworfQorI2VuZGlmIC8vIG1sYW0KIAogU3RhY2s6OlN0YWNrKFN0
YWNrJiYgb3RoZXIpCiAgICAgOiBtX25ld1N0YWNrUG9pbnRlcihvdGhlci5tX25ld1N0YWNrUG9p
bnRlcikKQEAgLTc1LDE1ICs5OCw0NiBAQCBTdGFjazo6U3RhY2soU3RhY2smJiBvdGhlcikKICNl
bmRpZgogfQogCit2b2lkIFN0YWNrOjpvcGVyYXRvcj0oU3RhY2smJiBvdGhlcikKK3sKKyAgICBt
X25ld1N0YWNrUG9pbnRlciA9IG90aGVyLm1fbmV3U3RhY2tQb2ludGVyOworICAgIG1fbG93V2F0
ZXJtYXJrID0gb3RoZXIubV9sb3dXYXRlcm1hcms7CisgICAgbV9zdGFja0JvdW5kcyA9IFdURk1v
dmUob3RoZXIubV9zdGFja0JvdW5kcyk7CisgICAgbV9wYWdlcyA9IFdURk1vdmUob3RoZXIubV9w
YWdlcyk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIG90aGVyLm1faXNWYWxpZCA9IGZhbHNl
OworI2VuZGlmCit9CisKIGJvb2wgU3RhY2s6Omhhc1dyaXRlc1RvRmx1c2goKQogeworI2lmIFVT
RV9ESVJUWV9CSVRTIC8vIG1sYW0KICAgICByZXR1cm4gc3RkOjphbnlfb2YobV9wYWdlcy5iZWdp
bigpLCBtX3BhZ2VzLmVuZCgpLCBbXSAoYXV0byYgaXQpIHsgcmV0dXJuIGl0LnZhbHVlLT5oYXNX
cml0ZXNUb0ZsdXNoKCk7IH0pOworI2Vsc2UKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgogfQog
CisjZGVmaW5lIFVTRV9QQUdFU19GUkVFX0xJU1QgMCAvLyBtbGFtCisKKyNpZiBVU0VfUEFHRVNf
RlJFRV9MSVNUIC8vIG1sYW0KK1BhZ2UqIHNfZnJlZVBhZ2VzID0gbnVsbHB0cjsKKyNlbmRpZgor
CiB2b2lkIFN0YWNrOjpmbHVzaFdyaXRlcygpCiB7Ci0gICAgZm9yIChhdXRvIGl0ID0gbV9wYWdl
cy5iZWdpbigpOyBpdCAhPSBtX3BhZ2VzLmVuZCgpOyArK2l0KQorICAgIGZvciAoYXV0byBpdCA9
IG1fcGFnZXMuYmVnaW4oKTsgaXQgIT0gbV9wYWdlcy5lbmQoKTsgKytpdCkgeworI2lmIFVTRV9E
SVJUWV9CSVRTIC8vIG1sYW0KICAgICAgICAgaXQtPnZhbHVlLT5mbHVzaFdyaXRlc0lmTmVlZGVk
KCk7CisjZWxzZQorICAgICAgICBpdC0+dmFsdWUtPmZsdXNoV3JpdGVzKG5ld1N0YWNrUG9pbnRl
cigpKTsKKyNpZiBVU0VfUEFHRVNfRlJFRV9MSVNUIC8vIG1sYW0KKyAgICAgICAgUGFnZSogcGFn
ZSA9IGl0LT52YWx1ZS5yZWxlYXNlKCk7CisgICAgICAgIHBhZ2UtPm1fYmFzZUxvZ2ljYWxBZGRy
ZXNzID0gc19mcmVlUGFnZXM7CisgICAgICAgIHNfZnJlZVBhZ2VzID0gcGFnZTsKKyNlbmRpZiAv
LyBtbGFtCisjZW5kaWYgLy8gbWxhbQorICAgIH0KIH0KIAogUGFnZSogU3RhY2s6OmVuc3VyZVBh
Z2VGb3Iodm9pZCogYWRkcmVzcykKQEAgLTEwMCw5ICsxNTQsMjIgQEAgUGFnZSogU3RhY2s6OmVu
c3VyZVBhZ2VGb3Iodm9pZCogYWRkcmVzcwogICAgIGlmIChMSUtFTFkoaXQgIT0gbV9wYWdlcy5l
bmQoKSkpCiAgICAgICAgIG1fbGFzdEFjY2Vzc2VkUGFnZSA9IGl0LT52YWx1ZS5nZXQoKTsKICAg
ICBlbHNlIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IHBhZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBhZ2U+KGJhc2VBZGRyZXNzKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX3BhZ2Vz
LmFkZChiYXNlQWRkcmVzcywgV1RGTW92ZShwYWdlKSk7Ci0gICAgICAgIG1fbGFzdEFjY2Vzc2Vk
UGFnZSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisjaWYgVVNFX1BBR0VTX0ZSRUVf
TElTVCAvLyBtbGFtCisgICAgICAgIGlmICghc19mcmVlUGFnZXMpIHsKKyNlbmRpZgorICAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IHBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+
KGJhc2VBZGRyZXNzKTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlcy5hZGQoYmFz
ZUFkZHJlc3MsIFdURk1vdmUocGFnZSkpOworICAgICAgICAgICAgbV9sYXN0QWNjZXNzZWRQYWdl
ID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyNpZiBVU0VfUEFHRVNfRlJFRV9MSVNU
IC8vIG1sYW0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFBhZ2UqIHBhZ2UgPSBzX2Zy
ZWVQYWdlczsKKyAgICAgICAgICAgIHNfZnJlZVBhZ2VzID0gKFBhZ2UqKXBhZ2UtPm1fYmFzZUxv
Z2ljYWxBZGRyZXNzOworICAgICAgICAgICAgcGFnZSA9IG5ldyhwYWdlKSBQYWdlKGJhc2VBZGRy
ZXNzKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiB1bmlxdWVfcGFnZShwYWdl
KTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlcy5hZGQoYmFzZUFkZHJlc3MsIFdU
Rk1vdmUodW5pcXVlX3BhZ2UpKTsKKyAgICAgICAgICAgIG1fbGFzdEFjY2Vzc2VkUGFnZSA9IHJl
c3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgICAgIH0KKyNlbmRpZgogICAgIH0KICAg
ICBtX2xhc3RBY2Nlc3NlZFBhZ2VCYXNlQWRkcmVzcyA9IGJhc2VBZGRyZXNzOwogICAgIHJldHVy
biBtX2xhc3RBY2Nlc3NlZFBhZ2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1Byb2JlU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1Byb2JlU3RhY2suaAkocmV2aXNpb24gMjIxNDY0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICsz
MywxNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorbmFtZXNwYWNlIERGRyB7CitzdHJ1Y3QgT1NS
RXhpdDsgLy8gbWxhbSBURVNUCit9IC8vIG5hbWVzcGFjZSBERkcKKwogc3RydWN0IFByb2JlQ29u
dGV4dDsKIAogbmFtZXNwYWNlIFByb2JlIHsKIAorI2RlZmluZSBVU0VfRElSVFlfQklUUyAxIC8v
IG1sYW0gVEVTdAorCiBjbGFzcyBQYWdlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKQEAgLTU2LDQyICs2Miw2NiBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KICAgICBUIGdldCh2b2lkKiBsb2dpY2FsQWRkcmVzcykKICAgICB7Ci0gICAgICAgIHJl
dHVybiAqcGh5c2ljYWxBZGRyZXNzRm9yPFQqPihsb2dpY2FsQWRkcmVzcyk7CisgICAgICAgIHZv
aWQqIGZyb20gPSBwaHlzaWNhbEFkZHJlc3NGb3IobG9naWNhbEFkZHJlc3MpOworICAgICAgICB0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZSB0byB7IH07CisgICAgICAgIHN0ZDo6
bWVtY3B5KCZ0bywgZnJvbSwgc2l6ZW9mKHRvKSk7IC8vIFVzZSBzdGQ6Om1lbWNweSB0byBhdm9p
ZCBzdHJpY3QgYWxpYXNpbmcgaXNzdWVzLgorICAgICAgICByZXR1cm4gdG87CisgICAgfQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgVCBnZXQodm9pZCogbG9naWNhbEJhc2VBZGRyZXNz
LCBwdHJkaWZmX3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldDxUPihyZWludGVy
cHJldF9jYXN0PHVpbnQ4X3QqPihsb2dpY2FsQmFzZUFkZHJlc3MpICsgb2Zmc2V0KTsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgc2V0KHZvaWQqIGxvZ2ljYWxB
ZGRyZXNzLCBUIHZhbHVlKQogICAgIHsKKyNpZiBVU0VfRElSVFlfQklUUwogICAgICAgICBtX2Rp
cnR5Qml0cyB8PSBkaXJ0eUJpdEZvcihsb2dpY2FsQWRkcmVzcyk7Ci0gICAgICAgICpwaHlzaWNh
bEFkZHJlc3NGb3I8VCo+KGxvZ2ljYWxBZGRyZXNzKSA9IHZhbHVlOworI2VuZGlmCisgICAgICAg
IHZvaWQqIHRvID0gcGh5c2ljYWxBZGRyZXNzRm9yKGxvZ2ljYWxBZGRyZXNzKTsKKyAgICAgICAg
c3RkOjptZW1jcHkodG8sICZ2YWx1ZSwgc2l6ZW9mKFQpKTsgLy8gVXNlIHN0ZDo6bWVtY3B5IHRv
IGF2b2lkIHN0cmljdCBhbGlhc2luZyBpc3N1ZXMuCisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CisgICAgdm9pZCBzZXQodm9pZCogbG9naWNhbEJhc2VBZGRyZXNzLCBwdHJkaWZmX3Qg
b2Zmc2V0LCBUIHZhbHVlKQorICAgIHsKKyAgICAgICAgc2V0PFQ+KHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KGxvZ2ljYWxCYXNlQWRkcmVzcykgKyBvZmZzZXQsIHZhbHVlKTsKICAgICB9CiAK
KyNpZiBVU0VfRElSVFlfQklUUwogICAgIGJvb2wgaGFzV3JpdGVzVG9GbHVzaCgpIGNvbnN0IHsg
cmV0dXJuICEhbV9kaXJ0eUJpdHM7IH0KICAgICB2b2lkIGZsdXNoV3JpdGVzSWZOZWVkZWQoKQog
ICAgIHsKICAgICAgICAgaWYgKG1fZGlydHlCaXRzKQogICAgICAgICAgICAgZmx1c2hXcml0ZXMo
KTsKICAgICB9CisjZW5kaWYKIAogcHJpdmF0ZToKKyNpZiBVU0VfRElSVFlfQklUUwogICAgIHVp
bnRwdHJfdCBkaXJ0eUJpdEZvcih2b2lkKiBsb2dpY2FsQWRkcmVzcykKICAgICB7CiAgICAgICAg
IHVpbnRwdHJfdCBvZmZzZXQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obG9naWNhbEFk
ZHJlc3MpICYgc19wYWdlTWFzazsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnRwdHJf
dD4oMSkgPDwgKG9mZnNldCA+PiBzX2NodW5rU2l6ZVNoaWZ0KTsKICAgICB9CisjZW5kaWYKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgVCBwaHlzaWNhbEFkZHJl
c3NGb3Iodm9pZCogbG9naWNhbEFkZHJlc3MpCisgICAgdm9pZCogcGh5c2ljYWxBZGRyZXNzRm9y
KHZvaWQqIGxvZ2ljYWxBZGRyZXNzKQogICAgIHsKLSAgICAgICAgdWludHB0cl90IG9mZnNldCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihsb2dpY2FsQWRkcmVzcykgJiBzX3BhZ2VNYXNr
OwotICAgICAgICB2b2lkKiBwaHlzaWNhbEFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPigmbV9idWZmZXIpICsgb2Zmc2V0OwotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxUPihwaHlzaWNhbEFkZHJlc3MpOworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4obG9naWNhbEFkZHJlc3MpICsgbV9waHlzaWNhbEFkZHJlc3NPZmZzZXQ7CiAgICAg
fQogCisjaWYgVVNFX0RJUlRZX0JJVFMKICAgICB2b2lkIGZsdXNoV3JpdGVzKCk7CisjZWxzZQor
ICAgIHZvaWQgZmx1c2hXcml0ZXModm9pZCogc3ApOworI2VuZGlmCiAKICAgICB2b2lkKiBtX2Jh
c2VMb2dpY2FsQWRkcmVzcyB7IG51bGxwdHIgfTsKKyNpZiBVU0VfRElSVFlfQklUUwogICAgIHVp
bnRwdHJfdCBtX2RpcnR5Qml0cyB7IDAgfTsKKyNlbmRpZgorICAgIHB0cmRpZmZfdCBtX3BoeXNp
Y2FsQWRkcmVzc09mZnNldDsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNfcGFnZVNp
emUgPSAxMDI0OwogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IHNfcGFnZU1hc2sgPSBz
X3BhZ2VTaXplIC0gMTsKQEAgLTEwOSw2ICsxMzksOCBAQCBwcml2YXRlOgogCiAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBzdGQ6OmFsaWduZWRfc3RvcmFnZTxzX3BhZ2VTaXplLCBzdGQ6OmFsaWdubWVu
dF9vZjx1aW50cHRyX3Q+Ojp2YWx1ZT46OnR5cGUgQnVmZmVyOwogICAgIEJ1ZmZlciBtX2J1ZmZl
cjsKKworICAgIGZyaWVuZCBzdHJ1Y3QgREZHOjpPU1JFeGl0OyAvLyBtbGFtIFRFU1QKIH07CiAK
IGNsYXNzIFN0YWNrIHsKQEAgLTExOCw0MiArMTUwLDQyIEBAIHB1YmxpYzoKICAgICAgICAgOiBt
X2xvd1dhdGVybWFyayhyZWludGVycHJldF9jYXN0PHZvaWQqPigtMSkpCiAgICAgICAgICwgbV9z
dGFja0JvdW5kcyhUaHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpKQogICAgIHsgfQotICAgIFN0YWNr
KFN0YWNrJiYgb3RoZXIpOworICAgIFN0YWNrKFN0YWNrJiYpOworICAgIHZvaWQgb3BlcmF0b3I9
KFN0YWNrJiYpOwogCi0gICAgdm9pZCogbG93V2F0ZXJtYXJrKCkgeyByZXR1cm4gbV9sb3dXYXRl
cm1hcms7IH0KKyAgICB2b2lkKiBsb3dXYXRlcm1hcmsoKQorICAgIHsKKyAgICAgICAgLy8gV2Ug
dXNlIHRoZSBjaHVua0FkZHJlc3MgZm9yIHRoZSBsb3cgd2F0ZXJtYXJrIGJlY2F1c2Ugd2UnbGwg
YmUgZG9pbmcgd3JpdGUgYmFja3MKKyAgICAgICAgLy8gdG8gdGhlIHN0YWNrIGluIGluY3JlbWVu
dHMgb2YgY2h1bmtzLiBIZW5jZSwgd2UnbGwgdHJlYXQgdGhlIGxvd2VzdCBhZGRyZXNzIG9mCisg
ICAgICAgIC8vIHRoZSBjaHVuayBhcyB0aGUgbG93IHdhdGVybWFyayBvZiBhbnkgZ2l2ZW4gc2V0
IGFkZHJlc3MuCisgICAgICAgIHJldHVybiBQYWdlOjpjaHVua0FkZHJlc3NGb3IobV9sb3dXYXRl
cm1hcmspOworICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfc2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3Zl
X2N2PFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+Ojp0eXBlIGdldCh2b2lkKiBhZGRyZXNzKQorICAgIFQg
Z2V0KHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICBQYWdlKiBwYWdlID0gcGFnZUZvcihh
ZGRyZXNzKTsKICAgICAgICAgcmV0dXJuIHBhZ2UtPmdldDxUPihhZGRyZXNzKTsKICAgICB9Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBUIGdldCh2b2lkKiBsb2dpY2FsQmFzZUFkZHJl
c3MsIHB0cmRpZmZfdCBvZmZzZXQpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0PFQ+KHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGxvZ2ljYWxCYXNlQWRkcmVzcykgKyBvZmZzZXQpOworICAg
IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8IXN0ZDo6aXNfc2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+
Ojp0eXBlPjo6dmFsdWU+Ojp0eXBlPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9p
ZCBzZXQodm9pZCogYWRkcmVzcywgVCB2YWx1ZSkKICAgICB7CiAgICAgICAgIFBhZ2UqIHBhZ2Ug
PSBwYWdlRm9yKGFkZHJlc3MpOwogICAgICAgICBwYWdlLT5zZXQ8VD4oYWRkcmVzcywgdmFsdWUp
OwogCi0gICAgICAgIC8vIFdlIHVzZSB0aGUgY2h1bmtBZGRyZXNzIGZvciB0aGUgbG93IHdhdGVy
bWFyayBiZWNhdXNlIHdlJ2xsIGJlIGRvaW5nIHdyaXRlIGJhY2tzCi0gICAgICAgIC8vIHRvIHRo
ZSBzdGFjayBpbiBpbmNyZW1lbnRzIG9mIGNodW5rcy4gSGVuY2UsIHdlJ2xsIHRyZWF0IHRoZSBs
b3dlc3QgYWRkcmVzcyBvZgotICAgICAgICAvLyB0aGUgY2h1bmsgYXMgdGhlIGxvdyB3YXRlcm1h
cmsgb2YgYW55IGdpdmVuIHNldCBhZGRyZXNzLgotICAgICAgICB2b2lkKiBjaHVua0FkZHJlc3Mg
PSBQYWdlOjpjaHVua0FkZHJlc3NGb3IoYWRkcmVzcyk7Ci0gICAgICAgIGlmIChjaHVua0FkZHJl
c3MgPCBtX2xvd1dhdGVybWFyaykKLSAgICAgICAgICAgIG1fbG93V2F0ZXJtYXJrID0gY2h1bmtB
ZGRyZXNzOworICAgICAgICBpZiAoYWRkcmVzcyA8IG1fbG93V2F0ZXJtYXJrKQorICAgICAgICAg
ICAgbV9sb3dXYXRlcm1hcmsgPSBhZGRyZXNzOwogICAgIH0KLQogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci0gICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPGRvdWJsZSwg
dHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGU+Ojp2YWx1ZSwgVD46OnR5cGUgZ2V0KHZv
aWQqIGFkZHJlc3MpCi0gICAgewotICAgICAgICBQYWdlKiBwYWdlID0gcGFnZUZvcihhZGRyZXNz
KTsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxkb3VibGU+KHBhZ2UtPmdldDx1aW50NjRf
dD4oYWRkcmVzcykpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
ID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPGRvdWJsZSwgdHlwZW5hbWUg
c3RkOjpyZW1vdmVfY3Y8VD46OnR5cGU+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgdm9pZCBzZXQodm9p
ZCogYWRkcmVzcywgZG91YmxlIHZhbHVlKQorICAgIHZvaWQgc2V0KHZvaWQqIGxvZ2ljYWxCYXNl
QWRkcmVzcywgcHRyZGlmZl90IG9mZnNldCwgVCB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHNldDx1
aW50NjRfdD4oYWRkcmVzcywgYml0d2lzZV9jYXN0PHVpbnQ2NF90Pih2YWx1ZSkpOworICAgICAg
ICBzZXQ8VD4ocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obG9naWNhbEJhc2VBZGRyZXNzKSAr
IG9mZnNldCwgdmFsdWUpOwogICAgIH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIFBhZ2UqIGVu
c3VyZVBhZ2VGb3Iodm9pZCogYWRkcmVzcyk7CkBAIC0xODksNiArMjIxLDggQEAgcHJpdmF0ZToK
ICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgYm9vbCBtX2lzVmFsaWQgeyB0cnVlIH07CiAjZW5k
aWYKKworICAgIGZyaWVuZCBzdHJ1Y3QgREZHOjpPU1JFeGl0OyAvLyBtbGFtIFRFU1QKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFByb2JlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJpdGhQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAkocmV2aXNpb24gMjIxNDY0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIs
NiArMzIsOCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBFTkFCTEUoSklUKQorLy8gRklYTUU6
IFRoaXMgaXMgYmVpbmcgc3VwcGxhbnRlZCBieSBvYnNlcnZlUmVzdWx0KCkuIFJlbW92ZSB0aGlz
IG9uZQorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NSBo
YXMgYmVlbiBmaXhlZC4KIHZvaWQgQXJpdGhQcm9maWxlOjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2Fs
bEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncywgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlKQog
ewogICAgIGlmICghc2hvdWxkRW1pdFNldERvdWJsZSgpICYmICFzaG91bGRFbWl0U2V0Tm9uTnVt
YmVyKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJv
ZmlsZS5oCShyZXZpc2lvbiAyMjE0NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJpdGhQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjExLDYgKzIxMSw4IEBAIHB1YmxpYzoK
ICNpZiBFTkFCTEUoSklUKSAgICAKICAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJP
dmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKSBpZiBpdCBzZWVzIGEK
ICAgICAvLyBkb3VibGUuIFNldHMgTm9uTnVtYmVyIGlmIGl0IHNlZXMgYSBub24tbnVtYmVyLgor
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIGJlaW5nIHN1cHBsYW50ZWQgYnkgb2JzZXJ2ZVJlc3VsdCgp
LiBSZW1vdmUgdGhpcyBvbmUKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc1MTQ1IGhhcyBiZWVuIGZpeGVkLgogICAgIHZvaWQgZW1pdE9ic2VydmVSZXN1
bHQoQ0NhbGxIZWxwZXJzJiwgSlNWYWx1ZVJlZ3MsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFn
UmVnaXN0ZXJzKTsKICAgICAKICAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVy
ZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlKS4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHJldmlzaW9uIDIyMTQ2
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMTgsNiArMjE4LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayop
OwogICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYsIENvZGVCbG9jayosIFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1Y3R1cmUpOwogICAgIAor
ICAgIHZvaWQgb2JzZXJ2ZUFycmF5TW9kZShBcnJheU1vZGVzIG1vZGUpIHsgbV9vYnNlcnZlZEFy
cmF5TW9kZXMgfD0gbW9kZTsgfQogICAgIEFycmF5TW9kZXMgb2JzZXJ2ZWRBcnJheU1vZGVzKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fb2JzZXJ2ZWRBcnJheU1v
ZGVzOyB9CiAgICAgYm9vbCBtYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNz
ZXM7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCShyZXZpc2lvbiAyMjE0NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMxNSw2ICsyMzE1LDU1IEBA
IGJvb2wgQ29kZUJsb2NrOjpjaGVja0lmT3B0aW1pemF0aW9uVGhyZXMKICAgICByZXR1cm4gbV9q
aXRFeGVjdXRlQ291bnRlci5jaGVja0lmVGhyZXNob2xkQ3Jvc3NlZEFuZFNldCh0aGlzKTsKIH0K
IAorYXV0byBDb2RlQmxvY2s6OnVwZGF0ZU9TUkV4aXRDb3VudGVyQW5kQ2hlY2tJZk5lZWRUb1Jl
b3B0aW1pemUoREZHOjpPU1JFeGl0U3RhdGUmIGV4aXRTdGF0ZSkgLT4gT3B0aW1pemVBY3Rpb24K
K3sKKyAgICBERkc6Ok9TUkV4aXRCYXNlJiBleGl0ID0gZXhpdFN0YXRlLmV4aXQ7CisgICAgaWYg
KCFleGl0S2luZE1heUpldHRpc29uKGV4aXQubV9raW5kKSkgeworICAgICAgICAvLyBGSVhNRTog
V2UgbWF5IHdhbnQgdG8gbm90aWNlIHRoYXQgd2UncmUgZnJlcXVlbnRseSBleGl0aW5nCisgICAg
ICAgIC8vIGF0IGFuIG9wX2NhdGNoIHRoYXQgd2UgZGlkbid0IGNvbXBpbGUgYW4gZW50cnlwb2lu
dCBmb3IsIGFuZAorICAgICAgICAvLyB0aGVuIHRyaWdnZXIgYSByZW9wdGltaXphdGlvbiBvZiB0
aGlzIENvZGVCbG9jazoKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NTg0MgorICAgICAgICByZXR1cm4gT3B0aW1pemVBY3Rpb246Ok5vbmU7Cisg
ICAgfQorCisgICAgZXhpdC5tX2NvdW50Kys7CisgICAgbV9vc3JFeGl0Q291bnRlcisrOworCisg
ICAgLy8gbWxhbSBPcGVyYXRpbmcgb24gYmFzZWxpbmVDb2RlQmxvY2sgbm93LgorCisgICAgQ29k
ZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IGV4aXRTdGF0ZS5iYXNlbGluZUNvZGVCbG9jazsK
KyAgICBBU1NFUlQoYmFzZWxpbmVDb2RlQmxvY2sgPT0gYmFzZWxpbmVBbHRlcm5hdGl2ZSgpKTsK
KyAgICBpZiAoVU5MSUtFTFkoYmFzZWxpbmVDb2RlQmxvY2stPmppdEV4ZWN1dGVDb3VudGVyKCku
aGFzQ3Jvc3NlZFRocmVzaG9sZCgpKSkKKyAgICAgICAgcmV0dXJuIE9wdGltaXplQWN0aW9uOjpS
ZW9wdGltaXplTm93OworCisgICAgLy8gV2Ugd2FudCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3Mg
YSBwb3NzaWJpbGl0eSB0aGF0IHdlJ3JlIGluIGEgbG9vcC4gRm9yIHRoZSBvdXRlcm1vc3QKKyAg
ICAvLyBjb2RlIGJsb2NrIGluIHRoZSBpbmxpbmUgc3RhY2ssIHdlIGhhbmRsZSB0aGlzIGFwcHJv
cHJpYXRlbHkgYnkgaGF2aW5nIHRoZSBsb29wIE9TUiB0cmlnZ2VyCisgICAgLy8gY2hlY2sgdGhl
IGV4aXQgY291bnQgb2YgdGhlIHJlcGxhY2VtZW50IG9mIHRoZSBDb2RlQmxvY2sgZnJvbSB3aGlj
aCB3ZSBhcmUgT1NSaW5nLiBUaGUKKyAgICAvLyBwcm9ibGVtIGlzIHRoZSBpbmxpbmVkIGZ1bmN0
aW9ucywgd2hpY2ggbWlnaHQgYWxzbyBoYXZlIGxvb3BzLCBidXQgd2hvc2UgYmFzZWxpbmUgdmVy
c2lvbnMKKyAgICAvLyBkb24ndCBrbm93IHdoZXJlIHRvIGxvb2sgZm9yIHRoZSBleGl0IGNvdW50
LiBGaWd1cmUgb3V0IGlmIHRob3NlIGxvb3BzIGFyZSBzZXZlcmUgZW5vdWdoCisgICAgLy8gdGhh
dCB3ZSBoYWQgdHJpZWQgdG8gT1NSIGVudGVyLiBJZiBzbywgdGhlbiB3ZSBzaG91bGQgdXNlIHRo
ZSBsb29wIHJlb3B0aW1pemF0aW9uIHRyaWdnZXIuCisgICAgLy8gT3RoZXJ3aXNlLCB3ZSBzaG91
bGQgdXNlIHRoZSBub3JtYWwgcmVvcHRpbWl6YXRpb24gdHJpZ2dlci4KKworICAgIGJvb2wgZGlk
VHJ5VG9FbnRlckluTG9vcCA9IGZhbHNlOworICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lKiBpbmxp
bmVDYWxsRnJhbWUgPSBleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGlubGluZUNh
bGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1lID0gaW5saW5lQ2FsbEZyYW1lLT5kaXJlY3RDYWxsZXIu
aW5saW5lQ2FsbEZyYW1lKSB7CisgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5l
Q29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgp
KSB7CisgICAgICAgICAgICBkaWRUcnlUb0VudGVySW5Mb29wID0gdHJ1ZTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgdWludDMyX3QgZXhpdENvdW50VGhyZXNo
b2xkID0gZGlkVHJ5VG9FbnRlckluTG9vcAorICAgICAgICA/IGV4aXRDb3VudFRocmVzaG9sZEZv
clJlb3B0aW1pemF0aW9uRnJvbUxvb3AoKQorICAgICAgICA6IGV4aXRDb3VudFRocmVzaG9sZEZv
clJlb3B0aW1pemF0aW9uKCk7CisKKyAgICBpZiAobV9vc3JFeGl0Q291bnRlciA+IGV4aXRDb3Vu
dFRocmVzaG9sZCkKKyAgICAgICAgcmV0dXJuIE9wdGltaXplQWN0aW9uOjpSZW9wdGltaXplTm93
OworCisgICAgLy8gVG9vIGZldyBmYWlscy4gQWRqdXN0IHRoZSBleGVjdXRpb24gY291bnRlciBz
dWNoIHRoYXQgdGhlIHRhcmdldCBpcyB0byBvbmx5IG9wdGltaXplIGFmdGVyIGEgd2hpbGUuCisg
ICAgYmFzZWxpbmVDb2RlQmxvY2stPm1faml0RXhlY3V0ZUNvdW50ZXIuc2V0TmV3VGhyZXNob2xk
Rm9yT1NSRXhpdChleGl0U3RhdGUuYWN0aXZlVGhyZXNob2xkLCBleGl0U3RhdGUubWVtb3J5VXNh
Z2VBZGp1c3RlZFRocmVzaG9sZCk7CisgICAgcmV0dXJuIE9wdGltaXplQWN0aW9uOjpOb25lOwor
fQorCiB2b2lkIENvZGVCbG9jazo6b3B0aW1pemVOZXh0SW52b2NhdGlvbigpCiB7CiAgICAgaWYg
KE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDIyMTQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsMTAg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK25hbWVzcGFjZSBERkcgeworc3RydWN0IE9TUkV4aXRT
dGF0ZTsKK30gLy8gbmFtZXNwYWNlIERGRworCiBjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXM7CiBjbGFzcyBDb2RlQmxvY2tTZXQ7CiBjbGFzcyBFeGVjU3RhdGU7CkBAIC03NjIsOCArNzY2
LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY291bnRPU1JFeGl0KCkgeyBtX29zckV4aXRDb3Vu
dGVyKys7IH0KIAotICAgIHVpbnQzMl90KiBhZGRyZXNzT2ZPU1JFeGl0Q291bnRlcigpIHsgcmV0
dXJuICZtX29zckV4aXRDb3VudGVyOyB9CisgICAgZW51bSBjbGFzcyBPcHRpbWl6ZUFjdGlvbiB7
IE5vbmUsIFJlb3B0aW1pemVOb3cgfTsKKyAgICBPcHRpbWl6ZUFjdGlvbiB1cGRhdGVPU1JFeGl0
Q291bnRlckFuZENoZWNrSWZOZWVkVG9SZW9wdGltaXplKERGRzo6T1NSRXhpdFN0YXRlJik7CiAK
KyAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NS4KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mT1NSRXhpdENvdW50ZXIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBt
X29zckV4aXRDb3VudGVyKTsgfQogCiAgICAgdWludDMyX3QgYWRqdXN0ZWRFeGl0Q291bnRUaHJl
c2hvbGQodWludDMyX3QgZGVzaXJlZFRocmVzaG9sZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmgJKHJldmlzaW9uIDIyMTQ2
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEy
LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNiArNDEsNyBAQCBlbnVtIENvdW50aW5nVmFyaWFudCB7
CiBkb3VibGUgYXBwbHlNZW1vcnlVc2FnZUhldXJpc3RpY3MoaW50MzJfdCB2YWx1ZSwgQ29kZUJs
b2NrKik7CiBpbnQzMl90IGFwcGx5TWVtb3J5VXNhZ2VIZXVyaXN0aWNzQW5kQ29udmVydFRvSW50
KGludDMyX3QgdmFsdWUsIENvZGVCbG9jayopOwogCisvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hl
biB3ZSBmaXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NS4K
IGlubGluZSBpbnQzMl90IGZvcm1hdHRlZFRvdGFsRXhlY3V0aW9uQ291bnQoZmxvYXQgdmFsdWUp
CiB7CiAgICAgdW5pb24gewpAQCAtNTcsMTEgKzU4LDE5IEBAIHB1YmxpYzoKICAgICBFeGVjdXRp
b25Db3VudGVyKCk7CiAgICAgdm9pZCBmb3JjZVNsb3dQYXRoQ29uY3VycmVudGx5KCk7IC8vIElm
IHlvdSB1c2UgdGhpcywgY2hlY2tJZlRocmVzaG9sZENyb3NzZWRBbmRTZXQoKSBtYXkgc3RpbGwg
cmV0dXJuIGZhbHNlLgogICAgIGJvb2wgY2hlY2tJZlRocmVzaG9sZENyb3NzZWRBbmRTZXQoQ29k
ZUJsb2NrKik7CisgICAgYm9vbCBoYXNDcm9zc2VkVGhyZXNob2xkKCkgY29uc3QgeyByZXR1cm4g
bV9jb3VudGVyID49IDA7IH0KICAgICB2b2lkIHNldE5ld1RocmVzaG9sZChpbnQzMl90IHRocmVz
aG9sZCwgQ29kZUJsb2NrKik7CiAgICAgdm9pZCBkZWZlckluZGVmaW5pdGVseSgpOwogICAgIGRv
dWJsZSBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4obV90b3RhbENv
dW50KSArIG1fY291bnRlcjsgfQogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Owog
ICAgIAorICAgIHZvaWQgc2V0TmV3VGhyZXNob2xkRm9yT1NSRXhpdCh1aW50MzJfdCBhY3RpdmVU
aHJlc2hvbGQsIGRvdWJsZSBtZW1vcnlVc2FnZUFkanVzdGVkVGhyZXNob2xkKQorICAgIHsKKyAg
ICAgICAgbV9hY3RpdmVUaHJlc2hvbGQgPSBhY3RpdmVUaHJlc2hvbGQ7CisgICAgICAgIG1fY291
bnRlciA9IHN0YXRpY19jYXN0PGludDMyX3Q+KC1tZW1vcnlVc2FnZUFkanVzdGVkVGhyZXNob2xk
KTsKKyAgICAgICAgbV90b3RhbENvdW50ID0gbWVtb3J5VXNhZ2VBZGp1c3RlZFRocmVzaG9sZDsK
KyAgICB9CisKICAgICBzdGF0aWMgaW50MzJfdCBtYXhpbXVtRXhlY3V0aW9uQ291bnRzQmV0d2Vl
bkNoZWNrcG9pbnRzKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAoY291bnRpbmdWYXJpYW50KSB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCShyZXZpc2lvbiAyMjE0NjQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJv
ZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEyLCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsNiArNDYsOCBAQCBNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlIE1ldGhvZE9mR2V0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAorLy8gRklYTUU6IFRoaXMgaXMgYmVpbmcgc3VwcGxhbnRlZCBieSByZXBvcnRWYWx1ZSgpLiBS
ZW1vdmUgdGhpcyBvbmUKKy8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzUxNDUgaGFzIGJlZW4gZml4ZWQuCiB2b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncykg
Y29uc3QKIHsKICAgICBzd2l0Y2ggKG1fa2luZCkgewpAQCAtNzQsNiArNzYsMzQgQEAgdm9pZCBN
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0UgogICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKK3ZvaWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6cmVw
b3J0VmFsdWUoSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBzd2l0Y2ggKG1fa2luZCkgeworICAgIGNh
c2UgTm9uZToKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBSZWFkeToKKyAgICAgICAgKnUu
cHJvZmlsZS0+c3BlY0ZhaWxCdWNrZXQoMCkgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOworICAg
ICAgICByZXR1cm47CisKKyAgICBjYXNlIExhenlPcGVyYW5kOiB7CisgICAgICAgIExhenlPcGVy
YW5kVmFsdWVQcm9maWxlS2V5IGtleSh1LmxhenlPcGVyYW5kLmJ5dGVjb2RlT2Zmc2V0LCBWaXJ0
dWFsUmVnaXN0ZXIodS5sYXp5T3BlcmFuZC5vcGVyYW5kKSk7CisKKyAgICAgICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcih1LmxhenlPcGVyYW5kLmNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAg
ICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPQorICAgICAgICB1LmxhenlPcGVy
YW5kLmNvZGVCbG9jay0+bGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzKCkuYWRkKGxvY2tlciwga2V5
KTsKKyAgICAgICAgKnByb2ZpbGUtPnNwZWNGYWlsQnVja2V0KDApID0gSlNWYWx1ZTo6ZW5jb2Rl
KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhc2UgQXJpdGhQcm9maWxl
UmVhZHk6IHsKKyAgICAgICAgdS5hcml0aFByb2ZpbGUtPm9ic2VydmVSZXN1bHQodmFsdWUpOwor
ICAgICAgICByZXR1cm47CisgICAgfSB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklU
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FW
YWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAyMjE0NjQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcwLDkgKzcwLDEyIEBAIHB1YmxpYzoKICAgICAgICAg
Q29kZUJsb2NrKiwgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmKTsKICAgICAKICAg
ICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9raW5kICE9IE5vbmU7
IH0KLSAgICAKKworICAgIC8vIEZJWE1FOiBlbWl0UmVwb3J0VmFsdWUgaXMgYmVpbmcgc3VwcGxh
bnRlZCBieSByZXBvcnRWYWx1ZSgpLiBSZW1vdmUgdGhpcyBvbmUKKyAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1IGhhcyBiZWVuIGZpeGVkLgogICAg
IHZvaWQgZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYsIEpTVmFsdWVSZWdzKSBjb25zdDsK
LSAgICAKKyAgICB2b2lkIHJlcG9ydFZhbHVlKEpTVmFsdWUpOworCiBwcml2YXRlOgogICAgIGVu
dW0gS2luZCB7CiAgICAgICAgIE5vbmUsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcAkocmV2aXNpb24gMjIxNDY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBpbml0aWFsaXplU3VwZXJTYW1wbGVyKCkKICAgICBUaHJl
YWQ6OmNyZWF0ZSgKICAgICAgICAgIkpTQyBTdXBlciBTYW1wbGVyIiwKICAgICAgICAgW10gKCkg
ewotICAgICAgICAgICAgY29uc3QgaW50IHNsZWVwUXVhbnR1bSA9IDEwOworICAgICAgICAgICAg
Y29uc3QgaW50IHNsZWVwUXVhbnR1bSA9IC4yNTsgLy8xMDsKICAgICAgICAgICAgIGNvbnN0IGlu
dCBwcmludGluZ1BlcmlvZCA9IDEwMDA7CiAgICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAg
ICAgICAgICAgZm9yIChpbnQgbXMgPSAwOyBtcyA8IHByaW50aW5nUGVyaW9kOyBtcyArPSBzbGVl
cFF1YW50dW0pIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJl
Y292ZXJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VmFsdWVSZWNvdmVyeS5jcHAJKHJldmlzaW9uIDIyMTQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDMg
KzEzOSw2MCBAQCB2b2lkIFZhbHVlUmVjb3Zlcnk6OmR1bXAoUHJpbnRTdHJlYW0mIG91CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCituYW1lc3BhY2UgV1RGIHsKKwordXNpbmcgbmFtZXNwYWNlIEpT
QzsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFZhbHVlUmVjb3ZlcnlU
ZWNobmlxdWUgdGVjaG5pcXVlKQoreworICAgIGF1dG8gdGVjaG5pcXVlTmFtZSA9IFtdIChWYWx1
ZVJlY292ZXJ5VGVjaG5pcXVlIHRlY2huaXF1ZSkgeworICAgICAgICBzd2l0Y2ggKHRlY2huaXF1
ZSkgeworICAgICAgICBjYXNlIEluR1BSOgorICAgICAgICAgICAgcmV0dXJuICJJbkdQUiI7Cisg
ICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6CisgICAgICAgICAgICByZXR1cm4gIlVuYm94
ZWRJbnQzMkluR1BSIjsKKyAgICAgICAgY2FzZSBVbmJveGVkSW50NTJJbkdQUjoKKyAgICAgICAg
ICAgIHJldHVybiAiVW5ib3hlZEludDUySW5HUFIiOworICAgICAgICBjYXNlIFVuYm94ZWRTdHJp
Y3RJbnQ1MkluR1BSOgorICAgICAgICAgICAgcmV0dXJuICJVbmJveGVkU3RyaWN0SW50NTJJbkdQ
UiI7CisgICAgICAgIGNhc2UgVW5ib3hlZEJvb2xlYW5JbkdQUjoKKyAgICAgICAgICAgIHJldHVy
biAiVW5ib3hlZEJvb2xlYW5JbkdQUiI7CisgICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoK
KyAgICAgICAgICAgIHJldHVybiAiVW5ib3hlZENlbGxJbkdQUiI7CisjaWYgVVNFKEpTVkFMVUUz
Ml82NCkKKyAgICAgICAgY2FzZSBJblBhaXI6CisgICAgICAgICAgICByZXR1cm4gIkluUGFpciI7
CisjZW5kaWYKKyAgICAgICAgY2FzZSBJbkZQUjoKKyAgICAgICAgICAgIHJldHVybiAiSW5GUFIi
OworICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoKKyAgICAgICAgICAgIHJldHVybiAi
VW5ib3hlZERvdWJsZUluRlBSIjsKKyAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6Cisg
ICAgICAgICAgICByZXR1cm4gIkRpc3BsYWNlZEluSlNTdGFjayI7CisgICAgICAgIGNhc2UgSW50
MzJEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICByZXR1cm4gIkludDMyRGlzcGxhY2Vk
SW5KU1N0YWNrIjsKKyAgICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKKyAgICAg
ICAgICAgIHJldHVybiAiSW50NTJEaXNwbGFjZWRJbkpTU3RhY2siOworICAgICAgICBjYXNlIFN0
cmljdEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAgICAgcmV0dXJuICJTdHJpY3RJ
bnQ1MkRpc3BsYWNlZEluSlNTdGFjayI7CisgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5K
U1N0YWNrOgorICAgICAgICAgICAgcmV0dXJuICJEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2siOwor
ICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICByZXR1cm4g
IkNlbGxEaXNwbGFjZWRJbkpTU3RhY2siOworICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJ
bkpTU3RhY2s6CisgICAgICAgICAgICByZXR1cm4gIkJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2si
OworICAgICAgICBjYXNlIERpcmVjdEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZDoKKyAgICAg
ICAgICAgIHJldHVybiAiRGlyZWN0QXJndW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkIjsKKyAgICAg
ICAgY2FzZSBDbG9uZWRBcmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQ6CisgICAgICAgICAgICBy
ZXR1cm4gIkNsb25lZEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZCI7CisgICAgICAgIGNhc2Ug
Q29uc3RhbnQ6CisgICAgICAgICAgICByZXR1cm4gIkNvbnN0YW50IjsKKyAgICAgICAgY2FzZSBE
b250S25vdzoKKyAgICAgICAgICAgIHJldHVybiAiRG9udEtub3ciOworICAgICAgICB9CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfTsKKyAgICBvdXQucHJpbnQo
dGVjaG5pcXVlTmFtZSh0ZWNobmlxdWUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgJKHJl
dmlzaW9uIDIyMTQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJl
Y292ZXJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyNCwzICs0MjQsMTIgQEAgcHJpdmF0ZToKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUHJpbnRT
dHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OlZhbHVl
UmVjb3ZlcnlUZWNobmlxdWUpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkocmV2aXNpb24gMjIxNDY0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE0LCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtODksNiArODksNyBAQCBzdGF0aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwo
CiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgYW55IHN0dWJzIHRoYXQgdGhlIERGRyBpcyBn
b2luZyB0byB1c2UgYXJlIGluaXRpYWxpemVkLiBXZSB3YW50IHRvCiAgICAgLy8gbWFrZSBzdXJl
IHRoYXQgYWxsIEpJVCBjb2RlIGdlbmVyYXRpb24gZG9lcyBmaW5hbGl6YXRpb24gb24gdGhlIG1h
aW4gdGhyZWFkLgorLy8gICAgdm0uZ2V0Q1RJU3R1Yihvc3JFeGl0VGh1bmtHZW5lcmF0b3IpOwog
ICAgIHZtLmdldENUSVN0dWIob3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik7CiAgICAg
dm0uZ2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpOwog
ICAgIHZtLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjIxNDY0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwNCw2ICszMDQsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtC
dWZmZXImIGxpbmtCCiAgICAgfQogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JF
eGl0VGh1bmsgPSB2bSgpLT5nZXRDVElTdHViKG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0
b3IpOworLy8gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRUaHVuayA9IHZtKCktPmdl
dENUSVN0dWIob3NyRXhpdFRodW5rR2VuZXJhdG9yKTsKICAgICBDb2RlTG9jYXRpb25MYWJlbCB0
YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbChvc3JFeGl0VGh1bmsuY29kZSgpKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9qaXRDb2RlLT5vc3JFeGl0LnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIE9TUkV4aXQmIGV4aXQgPSBtX2ppdENvZGUtPm9zckV4aXRbaV07CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHJldmlzaW9uIDIyMTQ2NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjksMTggKzI5LDIyNiBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAi
QXNzZW1ibHlIZWxwZXJzLmgiCisjaW5jbHVkZSAiQ2xvbmVkQXJndW1lbnRzLmgiCiAjaW5jbHVk
ZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdNYXlFeGl0LmgiCiAjaW5jbHVkZSAiREZHT1NS
RXhpdENvbXBpbGVyQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdFByZXBhcmF0aW9uLmgi
CiAjaW5jbHVkZSAiREZHT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkRGR1NwZWN1bGF0aXZlSklU
LmgiCisjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRnJhbWVUcmFjZXJz
LmgiCisjaW5jbHVkZSAiSW5saW5lQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMuaCIK
KyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKKyNpbmNsdWRlICJQcm9iZUZyYW1lLmgiCisjaW5j
bHVkZSAiSlNEb2xsYXJWTVByb3RvdHlwZS5oIiAvLyBtbGFtIFRFU1QKIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogCit1c2luZyBDUFVTdGF0ZSA9IFByb2JlOjpDUFVTdGF0ZTsK
K3VzaW5nIENvbnRleHQgPSBQcm9iZTo6Q29udGV4dDsKK3VzaW5nIEZyYW1lID0gUHJvYmU6OkZy
YW1lOworCitzdGF0aWMgdm9pZCBwcmludE9TUkV4aXQoQ29udGV4dCYsIHVpbnQzMl90IG9zckV4
aXRJbmRleCwgY29uc3QgT1NSRXhpdCYpOworCitzdGF0aWMgSlNWYWx1ZSBqc1ZhbHVlRm9yKENQ
VVN0YXRlJiBjcHUsIEpTVmFsdWVTb3VyY2Ugc291cmNlKQoreworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgaWYgKHNvdXJjZS5pc0FkZHJlc3MoKSkKKyAgICAgICAgcmV0dXJuICpyZWludGVycHJl
dF9jYXN0PEpTVmFsdWUqPihjcHUuZ3ByPHVpbnQ4X3QqPihzb3VyY2UuYmFzZSgpKSArIHNvdXJj
ZS5vZmZzZXQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShjcHUuZ3ByPEVuY29kZWRK
U1ZhbHVlPihzb3VyY2UuZ3ByKCkpKTsKKyNlbHNlCisgICAgaWYgKHNvdXJjZS5pc0FkZHJlc3Mo
KSkKKyAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PEpTVmFsdWUqPihjcHUuZ3ByPHVp
bnQ4X3QqPihzb3VyY2UuYmFzZSgpKSArIHNvdXJjZS5vZmZzZXQoKSk7CisgICAgaWYgKHNvdXJj
ZS5oYXNLbm93blRhZygpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZShzb3VyY2UudGFnKCksIGNw
dS5ncHI8aW50MzJfdD4oc291cmNlLnBheWxvYWRHUFIoKSkpOworICAgIHJldHVybiBKU1ZhbHVl
KGNwdS5ncHI8aW50MzJfdD4oc291cmNlLnRhZ0dQUigpKSwgY3B1LmdwcjxpbnQzMl90Pihzb3Vy
Y2UucGF5bG9hZEdQUigpKSk7CisjZW5kaWYKK30KKworI2lmIE5VTUJFUl9PRl9DQUxMRUVfU0FW
RVNfUkVHSVNURVJTID4gMAorCisvLyBCYXNlZCBvbiBBc3NlbWJseUhlbHBlcnM6OmVtaXRSZXN0
b3JlQ2FsbGVlU2F2ZXNGb3IoKS4KK3N0YXRpYyB2b2lkIHJlc3RvcmVDYWxsZWVTYXZlc0ZvcihD
b250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBBU1NFUlQoY29k
ZUJsb2NrKTsKKworICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9IGNvZGVC
bG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOworICAgIFJlZ2lzdGVyU2V0IGRvbnRSZXN0b3Jl
UmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCksIFJl
Z2lzdGVyU2V0OjphbGxGUFJzKCkpOworICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBjYWxs
ZWVTYXZlcy0+c2l6ZSgpOworCisgICAgdWludHB0cl90KiBwaHlzaWNhbFN0YWNrRnJhbWUgPSBj
b250ZXh0LmZwPHVpbnRwdHJfdCo+KCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJl
Z2lzdGVyQ291bnQ7IGkrKykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2Fs
bGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAoZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVu
dHJ5LnJlZygpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAvLyBUaGUgY2FsbGVl
IHNhdmVkIHZhbHVlcyBjb21lIGZyb20gdGhlIG9yaWdpbmFsIHN0YWNrLCBub3QgdGhlIHJlY292
ZXJlZCBzdGFjay4KKyAgICAgICAgLy8gSGVuY2UsIHdlIHJlYWQgdGhlIHZhbHVlcyBkaXJlY3Rs
eSBmcm9tIHRoZSBwaHlzaWNhbCBzdGFjayBtZW1vcnkgaW5zdGVhZCBvZgorICAgICAgICAvLyBn
b2luZyB0aHJvdWdoIGNvbnRleHQuc3RhY2soKS4KKyAgICAgICAgQVNTRVJUKCEoZW50cnkub2Zm
c2V0KCkgJSBzaXplb2YodWludHB0cl90KSkpOworICAgICAgICBjb250ZXh0LmdwcihlbnRyeS5y
ZWcoKS5ncHIoKSkgPSBwaHlzaWNhbFN0YWNrRnJhbWVbZW50cnkub2Zmc2V0KCkgLyBzaXplb2Yo
dWludHB0cl90KV07CisgICAgfQorfQorCisvLyBCYXNlZCBvbiBBc3NlbWJseUhlbHBlcnM6OmVt
aXRTYXZlQ2FsbGVlU2F2ZXNGb3IoKS4KK3N0YXRpYyB2b2lkIHNhdmVDYWxsZWVTYXZlc0ZvcihD
b250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBhdXRvJiBzdGFj
ayA9IGNvbnRleHQuc3RhY2soKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrKTsKKworICAgIFJlZ2lz
dGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lz
dGVycygpOworICAgIFJlZ2lzdGVyU2V0IGRvbnRTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQo
UmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjphbGxGUFJzKCkpOwor
ICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6ZSgpOworCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAgICBS
ZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAo
ZG9udFNhdmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBzdGFjay5zZXQoY29udGV4dC5mcCgpLCBlbnRyeS5vZmZzZXQoKSwgY29udGV4
dC5ncHI8dWludHB0cl90PihlbnRyeS5yZWcoKS5ncHIoKSkpOworICAgIH0KK30KKworLy8gQmFz
ZWQgb24gQXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1FbnRyeUZyYW1l
Q2FsbGVlU2F2ZXNCdWZmZXIoKS4KK3N0YXRpYyB2b2lkIHJlc3RvcmVDYWxsZWVTYXZlc0Zyb21W
TUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihDb250ZXh0JiBjb250ZXh0KQoreworICAgIFZN
JiB2bSA9ICpjb250ZXh0LmFyZzxWTSo+KCk7CisgICAgYXV0byYgc3RhY2sgPSBjb250ZXh0LnN0
YWNrKCk7CisKKyAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2FsbGVlU2F2ZXMgPSBWTTo6
Z2V0QWxsQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0cygpOworICAgIFJlZ2lzdGVyU2V0IGRvbnRS
ZXN0b3JlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCk7CisgICAgdW5z
aWduZWQgcmVnaXN0ZXJDb3VudCA9IGFsbENhbGxlZVNhdmVzLT5zaXplKCk7CisKKyAgICBWTUVu
dHJ5UmVjb3JkKiBlbnRyeVJlY29yZCA9IHZtRW50cnlSZWNvcmQodm0udG9wVk1FbnRyeUZyYW1l
KTsKKyAgICB2b2lkKiBjYWxsZWVTYXZlQnVmZmVyID0gZW50cnlSZWNvcmQtPmNhbGxlZVNhdmVS
ZWdpc3RlcnNCdWZmZXI7CisKKyAgICAvLyBSZXN0b3JlIGFsbCBjYWxsZWUgc2F2ZXMuCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAgICBS
ZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBp
ZiAoZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICBpZiAoZW50cnkucmVnKCkuaXNHUFIoKSkKKyAgICAgICAgICAgIGNv
bnRleHQuZ3ByKGVudHJ5LnJlZygpLmdwcigpKSA9IHN0YWNrLmdldDx1aW50cHRyX3Q+KGNhbGxl
ZVNhdmVCdWZmZXIsIGVudHJ5Lm9mZnNldCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
Y29udGV4dC5ncHIoZW50cnkucmVnKCkuZ3ByKCkpID0gc3RhY2suZ2V0PGRvdWJsZT4oY2FsbGVl
U2F2ZUJ1ZmZlciwgZW50cnkub2Zmc2V0KCkpOworICAgIH0KK30KKworLy8gQmFzZWQgb24gQXNz
ZW1ibHlIZWxwZXJzOjpjb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVm
ZmVyKCkuCitzdGF0aWMgdm9pZCBjb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNh
dmVzQnVmZmVyKENvbnRleHQmIGNvbnRleHQpCit7CisgICAgVk0mIHZtID0gKmNvbnRleHQuYXJn
PFZNKj4oKTsKKyAgICBhdXRvJiBzdGFjayA9IGNvbnRleHQuc3RhY2soKTsKKworICAgIFZNRW50
cnlSZWNvcmQqIGVudHJ5UmVjb3JkID0gdm1FbnRyeVJlY29yZCh2bS50b3BWTUVudHJ5RnJhbWUp
OworICAgIHZvaWQqIGNhbGxlZVNhdmVCdWZmZXIgPSBlbnRyeVJlY29yZC0+Y2FsbGVlU2F2ZVJl
Z2lzdGVyc0J1ZmZlcjsKKworICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBhbGxDYWxsZWVTYXZl
cyA9IFZNOjpnZXRBbGxDYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7CisgICAgUmVnaXN0ZXJT
ZXQgZG9udENvcHlSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKTsKKyAg
ICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gYWxsQ2FsbGVlU2F2ZXMtPnNpemUoKTsKKworICAg
IEFTU0VSVChpczY0Qml0KCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3Rl
ckNvdW50OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxl
ZVNhdmVzLT5hdChpKTsKKyAgICAgICAgaWYgKGRvbnRDb3B5UmVnaXN0ZXJzLmdldChlbnRyeS5y
ZWcoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGVudHJ5LnJlZygpLmlz
R1BSKCkpCisgICAgICAgICAgICBzdGFjay5zZXQoY2FsbGVlU2F2ZUJ1ZmZlciwgZW50cnkub2Zm
c2V0KCksIGNvbnRleHQuZ3ByPHVpbnRwdHJfdD4oZW50cnkucmVnKCkuZ3ByKCkpKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgc3RhY2suc2V0KGNhbGxlZVNhdmVCdWZmZXIsIGVudHJ5Lm9m
ZnNldCgpLCBjb250ZXh0LmZwcjx1aW50cHRyX3Q+KGVudHJ5LnJlZygpLmZwcigpKSk7CisgICAg
fQorfQorCisvLyBCYXNlZCBvbiBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5Q2FsbGVl
U2F2ZXNGb3IoKS4KK3N0YXRpYyB2b2lkIHNhdmVPckNvcHlDYWxsZWVTYXZlc0ZvcihDb250ZXh0
JiBjb250ZXh0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmlydHVhbFJlZ2lzdGVyIG9mZnNldFZp
cnR1YWxSZWdpc3RlciwgYm9vbCB3YXNDYWxsZWRWaWFUYWlsQ2FsbCkKK3sKKyAgICBGcmFtZSBm
cmFtZShjb250ZXh0LmZwKCksIGNvbnRleHQuc3RhY2soKSk7CisgICAgQVNTRVJUKGNvZGVCbG9j
ayk7CisKKyAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2st
PmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVy
cyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNl
dDo6YWxsRlBScygpKTsKKyAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMt
PnNpemUoKTsKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgUmVnaXN0ZXJTZXQgYmFzZWxpbmVD
YWxsZWVTYXZlcyA9IFJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVy
cygpOworI2VuZGlmCisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3Vu
dDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+
YXQoaSk7CisgICAgICAgIGlmIChkb250U2F2ZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQor
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgdWludHB0cl90IHNhdmVkUmVnaXN0ZXJW
YWx1ZTsKKworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIFVOVVNFRF9QQVJBTSh3YXND
YWxsZWRWaWFUYWlsQ2FsbCk7CisjZWxzZQorICAgICAgICBpZiAod2FzQ2FsbGVkVmlhVGFpbENh
bGwgJiYgYmFzZWxpbmVDYWxsZWVTYXZlcy5nZXQoZW50cnkucmVnKCkpKQorICAgICAgICAgICAg
c2F2ZWRSZWdpc3RlclZhbHVlID0gZnJhbWUuZ2V0PHVpbnRwdHJfdD4oZW50cnkub2Zmc2V0KCkp
OworICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIHNhdmVkUmVnaXN0ZXJWYWx1ZSA9
IGNvbnRleHQuZ3ByKGVudHJ5LnJlZygpLmdwcigpKTsKKworICAgICAgICBmcmFtZS5zZXQob2Zm
c2V0VmlydHVhbFJlZ2lzdGVyLm9mZnNldEluQnl0ZXMoKSArIGVudHJ5Lm9mZnNldCgpLCBzYXZl
ZFJlZ2lzdGVyVmFsdWUpOworICAgIH0KK30KKyNlbHNlIC8vIG5vdCBOVU1CRVJfT0ZfQ0FMTEVF
X1NBVkVTX1JFR0lTVEVSUyA+IDAKKworc3RhdGljIHZvaWQgcmVzdG9yZUNhbGxlZVNhdmVzRm9y
KENvbnRleHQmLCBDb2RlQmxvY2sqKSB7IH0KK3N0YXRpYyB2b2lkIHNhdmVDYWxsZWVTYXZlc0Zv
cihDb250ZXh0JiwgQ29kZUJsb2NrKikgeyB9CitzdGF0aWMgdm9pZCByZXN0b3JlQ2FsbGVlU2F2
ZXNGcm9tVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoQ29udGV4dCYpIHsgfQorc3RhdGlj
IHZvaWQgY29weUNhbGxlZVNhdmVzVG9WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihDb250
ZXh0JikgeyB9CitzdGF0aWMgdm9pZCBzYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoQ29udGV4dCYs
IENvZGVCbG9jayosIFZpcnR1YWxSZWdpc3RlciwgYm9vbCkgeyB9CisKKyNlbmRpZiAvLyBOVU1C
RVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKKworc3RhdGljIEpTQ2VsbCogY3JlYXRl
RGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdChDb250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIEpTRnVuY3Rpb24qIGNh
bGxlZSwgaW50MzJfdCBhcmd1bWVudENvdW50KQoreworICAgIFZNJiB2bSA9ICpjb250ZXh0LmFy
ZzxWTSo+KCk7CisKKyAgICBBU1NFUlQodm0uaGVhcC5pc0RlZmVycmVkKCkpOworCisgICAgaWYg
KGlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tG
b3JJbmxpbmVDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1lKTsKKworICAgIHVuc2lnbmVkIGxlbmd0
aCA9IGFyZ3VtZW50Q291bnQgLSAxOworICAgIHVuc2lnbmVkIGNhcGFjaXR5ID0gc3RkOjptYXgo
bGVuZ3RoLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkg
LSAxKSk7CisgICAgRGlyZWN0QXJndW1lbnRzKiByZXN1bHQgPSBEaXJlY3RBcmd1bWVudHM6OmNy
ZWF0ZSgKKyAgICAgICAgdm0sIGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmRpcmVjdEFyZ3Vt
ZW50c1N0cnVjdHVyZSgpLCBsZW5ndGgsIGNhcGFjaXR5KTsKKworICAgIHJlc3VsdC0+Y2FsbGVl
KCkuc2V0KHZtLCByZXN1bHQsIGNhbGxlZSk7CisKKyAgICB2b2lkKiBmcmFtZUJhc2UgPSBjb250
ZXh0LmZwPFJlZ2lzdGVyKj4oKSArIChpbmxpbmVDYWxsRnJhbWUgPyBpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0IDogMCk7CisgICAgRnJhbWUgZnJhbWUoZnJhbWVCYXNlLCBjb250ZXh0LnN0
YWNrKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykKKyAgICAgICAgcmVz
dWx0LT5zZXRJbmRleFF1aWNrbHkodm0sIGksIGZyYW1lLmdldEFyZ3VtZW50PEpTVmFsdWU+KGkp
KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBKU0NlbGwqIGNyZWF0ZUNsb25l
ZEFyZ3VtZW50c0R1cmluZ0V4aXQoQ29udGV4dCYgY29udGV4dCwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBjYWxsZWUs
IGludDMyX3QgYXJndW1lbnRDb3VudCkKK3sKKyAgICBWTSYgdm0gPSAqY29udGV4dC5hcmc8Vk0q
PigpOworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGNvbnRleHQuZnA8RXhlY1N0YXRlKj4oKTsKKwor
ICAgIEFTU0VSVCh2bS5oZWFwLmlzRGVmZXJyZWQoKSk7CisKKyAgICBpZiAoaW5saW5lQ2FsbEZy
YW1lKQorICAgICAgICBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcklubGluZUNhbGxG
cmFtZShpbmxpbmVDYWxsRnJhbWUpOworCisgICAgdW5zaWduZWQgbGVuZ3RoID0gYXJndW1lbnRD
b3VudCAtIDE7CisgICAgQ2xvbmVkQXJndW1lbnRzKiByZXN1bHQgPSBDbG9uZWRBcmd1bWVudHM6
OmNyZWF0ZUVtcHR5KAorICAgICAgICB2bSwgY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Y2xv
bmVkQXJndW1lbnRzU3RydWN0dXJlKCksIGNhbGxlZSwgbGVuZ3RoKTsKKworICAgIHZvaWQqIGZy
YW1lQmFzZSA9IGNvbnRleHQuZnA8UmVnaXN0ZXIqPigpICsgKGlubGluZUNhbGxGcmFtZSA/IGlu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgOiAwKTsKKyAgICBGcmFtZSBmcmFtZShmcmFtZUJh
c2UsIGNvbnRleHQuc3RhY2soKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07
KQorICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIGZyYW1lLmdldEFyZ3Vt
ZW50PEpTVmFsdWU+KGkpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBPU1JFeGl0OjpPU1JF
eGl0KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZSB2YWx1ZVByb2ZpbGUsIFNwZWN1bGF0aXZlSklUKiBqaXQsIHVu
c2lnbmVkIHN0cmVhbUluZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4KQogICAgIDogT1NSRXhp
dEJhc2Uoa2luZCwgaml0LT5tX29yaWdpbi5mb3JFeGl0LCBqaXQtPm1fb3JpZ2luLnNlbWFudGlj
LCBqaXQtPm1fb3JpZ2luLndhc0hvaXN0ZWQpCiAgICAgLCBtX2pzVmFsdWVTb3VyY2UoanNWYWx1
ZVNvdXJjZSkKQEAgLTc4LDYgKzI4Niw3NzAgQEAgdm9pZCBPU1JFeGl0Ojpjb3JyZWN0SnVtcChM
aW5rQnVmZmVyJiBsaQogICAgIG1fcGF0Y2hhYmxlQ29kZU9mZnNldCA9IGxpbmtCdWZmZXIub2Zm
c2V0T2YobGFiZWwpOwogfQogCitzdGF0aWMgdm9pZCBlbWl0UmVzdG9yZUFyZ3VtZW50cyhDb250
ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgT3BlcmFuZHM8VmFsdWVS
ZWNvdmVyeT4mIG9wZXJhbmRzKQoreworICAgIEZyYW1lIGZyYW1lKGNvbnRleHQuZnAoKSwgY29u
dGV4dC5zdGFjaygpKTsKKworICAgIEhhc2hNYXA8TWluaWZpZWRJRCwgaW50PiBhbHJlYWR5QWxs
b2NhdGVkQXJndW1lbnRzOyAvLyBNYXBzIHBoYW50b20gYXJndW1lbnRzIG5vZGUgSUQgdG8gb3Bl
cmFuZC4KKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgp
OyArK2luZGV4KSB7CisgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3Bl
cmFuZHNbaW5kZXhdOworICAgICAgICBpbnQgb3BlcmFuZCA9IG9wZXJhbmRzLm9wZXJhbmRGb3JJ
bmRleChpbmRleCk7CisKKyAgICAgICAgaWYgKHJlY292ZXJ5LnRlY2huaXF1ZSgpICE9IERpcmVj
dEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZAorICAgICAgICAgICAgJiYgcmVjb3ZlcnkudGVj
aG5pcXVlKCkgIT0gQ2xvbmVkQXJndW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgTWluaWZpZWRJRCBpZCA9IHJlY292ZXJ5Lm5vZGVJRCgp
OworICAgICAgICBhdXRvIGl0ZXIgPSBhbHJlYWR5QWxsb2NhdGVkQXJndW1lbnRzLmZpbmQoaWQp
OworICAgICAgICBpZiAoaXRlciAhPSBhbHJlYWR5QWxsb2NhdGVkQXJndW1lbnRzLmVuZCgpKSB7
CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIGZyYW1lLmdldE9wZXJhbmQ8
SlNWYWx1ZT4oaXRlci0+dmFsdWUpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisKKyAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPQorICAgICAgICAg
ICAgY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpLT5taW5pZmllZERGRy5hdChpZCktPmlubGlu
ZUNhbGxGcmFtZSgpOworCisgICAgICAgIGludCBzdGFja09mZnNldDsKKyAgICAgICAgaWYgKGlu
bGluZUNhbGxGcmFtZSkKKyAgICAgICAgICAgIHN0YWNrT2Zmc2V0ID0gaW5saW5lQ2FsbEZyYW1l
LT5zdGFja09mZnNldDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3RhY2tPZmZzZXQgPSAw
OworCisgICAgICAgIEpTRnVuY3Rpb24qIGNhbGxlZTsKKyAgICAgICAgaWYgKCFpbmxpbmVDYWxs
RnJhbWUgfHwgaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQorICAgICAgICAgICAgY2Fs
bGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihmcmFtZS5nZXRPcGVyYW5kPEpTVmFsdWU+KHN0YWNr
T2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKS5hc0NlbGwoKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oaW5saW5lQ2FsbEZyYW1l
LT5jYWxsZWVSZWNvdmVyeS5jb25zdGFudCgpLmFzQ2VsbCgpKTsKKworICAgICAgICBpbnQzMl90
IGFyZ3VtZW50Q291bnQ7CisgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lIHx8IGlubGluZUNh
bGxGcmFtZS0+aXNWYXJhcmdzKCkpCisgICAgICAgICAgICBhcmd1bWVudENvdW50ID0gZnJhbWUu
Z2V0T3BlcmFuZDxpbnQzMl90PihzdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnQsIFBheWxvYWRPZmZzZXQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcmd1bWVu
dENvdW50ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOworCisgICAgICAgIEpT
Q2VsbCogYXJndW1lbnRzT2JqZWN0OworICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1
ZSgpKSB7CisgICAgICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkOgor
ICAgICAgICAgICAgYXJndW1lbnRzT2JqZWN0ID0gY3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5n
RXhpdChjb250ZXh0LCBjb2RlQmxvY2ssIGlubGluZUNhbGxGcmFtZSwgY2FsbGVlLCBhcmd1bWVu
dENvdW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENsb25lZEFyZ3VtZW50
c1RoYXRXZXJlTm90Q3JlYXRlZDoKKyAgICAgICAgICAgIGFyZ3VtZW50c09iamVjdCA9IGNyZWF0
ZUNsb25lZEFyZ3VtZW50c0R1cmluZ0V4aXQoY29udGV4dCwgY29kZUJsb2NrLCBpbmxpbmVDYWxs
RnJhbWUsIGNhbGxlZSwgYXJndW1lbnRDb3VudCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9w
ZXJhbmQsIGFyZ3VtZW50c09iamVjdCk7CisKKyAgICAgICAgYWxyZWFkeUFsbG9jYXRlZEFyZ3Vt
ZW50cy5hZGQoaWQsIG9wZXJhbmQpOworICAgIH0KK30KKworUHJvYmU6OlN0YXRlKiBzdGF0ZUNv
cHkgPSBudWxscHRyOworUHJvYmU6OlN0YWNrKiBzdGFja0NvcHkgPSBudWxscHRyOworCit2b2lk
IE9TUkV4aXQ6OnByZXRlbmRFeGVjdXRlT1NSRXhpdChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkK
K3sKKyAgICBpZiAoIWdldGVudigidmVyaWZ5IikpCisgICAgICAgIHJldHVybjsKKworICAgIFJF
TEVBU0VfQVNTRVJUKCFzdGF0ZUNvcHkgJiYgIXN0YWNrQ29weSk7CisgICAgc3RhdGVDb3B5ID0g
bmV3IFByb2JlOjpTdGF0ZTs7CisgICAgbWVtY3B5KHN0YXRlQ29weSwgcHJvYmVTdGF0ZUZvckNv
bnRleHQoY29udGV4dCksIHNpemVvZihQcm9iZTo6U3RhdGUpKTsKKworICAgIFByb2JlOjpDb250
ZXh0IGNvbnRleHRDb3B5KHN0YXRlQ29weSk7CisgICAgZXhlY3V0ZU9TUkV4aXQoY29udGV4dENv
cHkpOworCisgICAgUkVMRUFTRV9BU1NFUlQoY29udGV4dENvcHkuaGFzV3JpdGVzVG9GbHVzaCgp
KTsKKyAgICBzdGFja0NvcHkgPSBjb250ZXh0Q29weS5yZWxlYXNlU3RhY2soKTsKKworLy8gICAg
ZGF0YUxvZygiICAgbWxhbSA6OiBwcmV0ZW5kRXhlY3V0ZU9TUkV4aXQoKSBzdGF0ZUNvcHkgIiwg
UmF3UG9pbnRlcihzdGF0ZUNvcHkpLCAiLCBzdGFja0NvcHkgIiwgUmF3UG9pbnRlcihzdGFja0Nv
cHkpLCAiXG4iKTsKKyAgICBSRUxFQVNFX0FTU0VSVChzdGF0ZUNvcHkgJiYgc3RhY2tDb3B5KTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBuZXh0SUQoVCBpZCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8VD4oaWQgKyAxKTsgfQorCit2b2lkIE9TUkV4aXQ6OnZlcmlmeUV4ZWN1dGVPU1JFeGl0
KFByb2JlOjpDb250ZXh0JiBjb250ZXh0KQoreworLy8gICAgZGF0YUxvZygiICAgbWxhbSA6OiB2
ZXJpZnlFeGVjdXRlT1NSRXhpdCgpIHN0YXRlQ29weSAiLCBSYXdQb2ludGVyKHN0YXRlQ29weSks
ICIsIHN0YWNrQ29weSAiLCBSYXdQb2ludGVyKHN0YWNrQ29weSksICJcbiIpOworCisgICAgaWYg
KCFnZXRlbnYoInZlcmlmeSIpKQorICAgICAgICByZXR1cm47CisKKyAgICBQcm9iZTo6Q29udGV4
dCBjb250ZXh0Q29weShzdGF0ZUNvcHkpOworICAgIGNvbnRleHRDb3B5LnNldFN0YWNrKFdURk1v
dmUoKnN0YWNrQ29weSkpOworCisgICAgLy8gQ29tcGFyZSByZWdpc3RlcnM6CisgICAgYm9vbCBo
YXNSZWdpc3RlckRpZmZlcmVuY2UgPSBmYWxzZTsKKyAgICBmb3IgKGF1dG8gaWQgPSBNYWNyb0Fz
c2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpOyBpZCA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lz
dGVyKCk7IGlkID0gbmV4dElEKGlkKSkgeworICAgICAgICBpZiAoaWQgPT0gR1BSSW5mbzo6cmVn
VDAKKyAgICAgICAgICAgIHx8IGlkID09IEdQUkluZm86OnJlZ1QxCisgICAgICAgICAgICB8fCBp
ZCA9PSBHUFJJbmZvOjpyZWdUMgorICAgICAgICAgICAgfHwgaWQgPT0gR1BSSW5mbzo6cmVnVDMK
KyAgICAgICAgICAgIHx8IGlkID09IEdQUkluZm86OnJlZ1Q0CisgICAgICAgICAgICB8fCBpZCA9
PSBHUFJJbmZvOjpyZWdUNAorICAgICAgICAgICAgfHwgaWQgPT0gR1BSSW5mbzo6cmVnVDUKKyAg
ICAgICAgICAgIHx8IGlkID09IEdQUkluZm86OnJlZ1Q2CisgICAgICAgICAgICB8fCBpZCA9PSBH
UFJJbmZvOjpyZWdUNworICAgICAgICAgICAgfHwgaWQgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIw
CisgICAgICAgICAgICB8fCBpZCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjEKKyAgICAgICAgICAg
IHx8IGlkID09IEdQUkluZm86OmFyZ3VtZW50R1BSMgorICAgICAgICAgICAgfHwgaWQgPT0gR1BS
SW5mbzo6YXJndW1lbnRHUFIzCisgICAgICAgICAgICB8fCBpZCA9PSBHUFJJbmZvOjphcmd1bWVu
dEdQUjQKKyAgICAgICAgICAgIHx8IGlkID09IEdQUkluZm86OmFyZ3VtZW50R1BSNQorICAgICAg
ICAgICAgfHwgaWQgPT0gTWFjcm9Bc3NlbWJsZXI6OnNfc2NyYXRjaFJlZ2lzdGVyKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIGlmIChjb250ZXh0LmdwcihpZCkgIT0gY29udGV4dENv
cHkuZ3ByKGlkKSkgeworICAgICAgICAgICAgZGF0YUxvZygiICAgRVJST1I6IEdQUiAiLCBjb250
ZXh0Lmdwck5hbWUoaWQpLCAiIGV4cGVjdGVkOiAiLCBmb3JtYXQoIjB4JTBsbHgiLCBjb250ZXh0
LmdwcihpZCkpLCAiLCBhY3R1YWw6ICIsIGZvcm1hdCgiMHglMGxseCIsIGNvbnRleHRDb3B5Lmdw
cihpZCkpLCAiXG4iKTsKKyAgICAgICAgICAgIGhhc1JlZ2lzdGVyRGlmZmVyZW5jZSA9IHRydWU7
CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yIChhdXRvIGlkID0gTWFjcm9Bc3NlbWJsZXI6OmZp
cnN0RlBSZWdpc3RlcigpOyBpZCA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsg
aWQgPSBuZXh0SUQoaWQpKSB7CisgICAgICAgIGlmIChpZCA9PSBGUFJJbmZvOjphcmd1bWVudEZQ
UjAKKyAgICAgICAgICAgIHx8IGlkID09IEZQUkluZm86OmFyZ3VtZW50RlBSMQorICAgICAgICAg
ICAgfHwgaWQgPT0gRlBSSW5mbzo6YXJndW1lbnRGUFIyCisgICAgICAgICAgICB8fCBpZCA9PSBG
UFJJbmZvOjphcmd1bWVudEZQUjMKKyAgICAgICAgICAgIHx8IGlkID09IEZQUkluZm86OmFyZ3Vt
ZW50RlBSNAorICAgICAgICAgICAgfHwgaWQgPT0gRlBSSW5mbzo6YXJndW1lbnRGUFI1CisgICAg
ICAgICAgICB8fCBpZCA9PSBGUFJJbmZvOjphcmd1bWVudEZQUjYKKyAgICAgICAgICAgIHx8IGlk
ID09IEZQUkluZm86OmFyZ3VtZW50RlBSNykKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBpZiAoY29udGV4dC5mcHI8dWludDY0X3Q+KGlkKSAhPSBjb250ZXh0Q29weS5mcHI8dWludDY0
X3Q+KGlkKSkgeworICAgICAgICAgICAgZGF0YUxvZygiICAgRVJST1I6IEZQUiAiLCBjb250ZXh0
LmZwck5hbWUoaWQpLCAiIGV4cGVjdGVkOiAiLCBjb250ZXh0LmZwcihpZCksICIvIiwgZm9ybWF0
KCIweCUwbGx4IiwgY29udGV4dC5mcHI8dWludDY0X3Q+KGlkKSksICIsIGFjdHVhbDogIiwgY29u
dGV4dENvcHkuZnByKGlkKSwgIi8iLCBmb3JtYXQoIjB4JTBsbHgiLCBjb250ZXh0Q29weS5mcHI8
dWludDY0X3Q+KGlkKSksICJcbiIpOworICAgICAgICAgICAgaGFzUmVnaXN0ZXJEaWZmZXJlbmNl
ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRoZSBKSVQgT1NSIHJhbXAgdXNl
cyByZWdUMiB0byBqdW1wIHRoZSB0YXJnZXQgUEMuCisgICAgaWYgKGNvbnRleHQuZ3ByKEdQUklu
Zm86OnJlZ1QyKSAhPSBjb250ZXh0Q29weS5zcHIoWDg2UmVnaXN0ZXJzOjplaXApKSB7CisgICAg
ICAgIGRhdGFMb2coIiAgIEVSUk9SOiBQQyBleHBlY3RlZDogIiwgZm9ybWF0KCIweCUwbGx4Iiwg
Y29udGV4dC5ncHIoR1BSSW5mbzo6cmVnVDIpKSwgIiwgYWN0dWFsOiAiLCBmb3JtYXQoIjB4JTBs
bHgiLCBjb250ZXh0Q29weS5zcHIoWDg2UmVnaXN0ZXJzOjplaXApKSwgIlxuIik7CisgICAgfQor
CisgICAgUkVMRUFTRV9BU1NFUlQoY29udGV4dC5ncHIoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyKSA9PSBjb250ZXh0Q29weS5ncHIoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoY29udGV4dC5ncHIoTWFjcm9Bc3Nl
bWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyKSA9PSBjb250ZXh0Q29weS5ncHIoTWFjcm9Bc3Nl
bWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoY29udGV4
dC5ncHIoR1BSSW5mbzo6cmVnVDIpID09IGNvbnRleHRDb3B5LnNwcihYODZSZWdpc3RlcnM6OmVp
cCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGNvbnRleHQuZ3ByKEdQUkluZm86OnRhZ1R5cGVOdW1i
ZXJSZWdpc3RlcikgPT0gY29udGV4dENvcHkuZ3ByKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdp
c3RlcikpOworICAgIFJFTEVBU0VfQVNTRVJUKGNvbnRleHQuZ3ByKEdQUkluZm86OnRhZ01hc2tS
ZWdpc3RlcikgPT0gY29udGV4dENvcHkuZ3ByKEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwor
CisgICAgVk0mIHZtID0gY29udGV4dC5mcDxFeGVjU3RhdGUqPigpLT52bSgpOworICAgIFByb2Jl
OjpTdGFjayYgYWN0dWFsU3RhY2sgPSBjb250ZXh0Q29weS5zdGFjaygpOworICAgIFByb2JlOjpT
dGFjayYgZXhwZWN0ZWRTdGFjayA9IGNvbnRleHQuc3RhY2soKTsKKyAgICBib29sIGhhc1N0YWNr
RGlmZmVyZW5jZSA9IGZhbHNlOworICAgIHVpbnQ4X3QqIHNwID0gY29udGV4dC5ncHI8dWludDhf
dCo+KE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgZm9yIChhdXRv
IGl0ID0gYWN0dWFsU3RhY2subV9wYWdlcy5iZWdpbigpOyBpdCAhPSBhY3R1YWxTdGFjay5tX3Bh
Z2VzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIFByb2JlOjpQYWdlKiBwYWdlID0gaXQtPnZhbHVl
LmdldCgpOworICAgICAgICB1aW50OF90KiBiYXNlID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90
Kj4ocGFnZS0+bV9iYXNlTG9naWNhbEFkZHJlc3MpOworICAgICAgICBib29sIHByaW50ZWRUaXRs
ZSA9IGZhbHNlOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFByb2JlOjpQYWdlOjpz
X3BhZ2VTaXplOyBpICs9IHNpemVvZih1aW50cHRyX3QpKSB7CisgICAgICAgICAgICB1aW50OF90
KiBhZGRyZXNzID0gYmFzZSArIGk7CisgICAgICAgICAgICBpZiAoYWRkcmVzcyA8IHNwKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgYXV0byBhY3R1YWwgPSBhY3R1YWxT
dGFjay5nZXQ8dWludHB0cl90PihhZGRyZXNzKTsKKyAgICAgICAgICAgIGF1dG8gZXhwZWN0ZWQg
PSBleHBlY3RlZFN0YWNrLmdldDx1aW50cHRyX3Q+KGFkZHJlc3MpOworICAgICAgICAgICAgaWYg
KGFjdHVhbCAhPSBleHBlY3RlZCkgeworICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZXNl
IGFyZSBqdXN0IGRpZmZlcmVudCBpbnN0YW50aWF0aW9ucyBvZiBhcmd1bWVudCBvYmplY3RzLgor
ICAgICAgICAgICAgICAgIEpTVmFsdWUgYWN0dWFsVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYWN0
dWFsKTsKKyAgICAgICAgICAgICAgICBpZiAoYWN0dWFsVmFsdWUuaXNDZWxsKCkKKyAgICAgICAg
ICAgICAgICAgICAgJiYgKGpzRHluYW1pY0Nhc3Q8RGlyZWN0QXJndW1lbnRzKj4odm0sIGFjdHVh
bFZhbHVlLmFzQ2VsbCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgfHwganNEeW5hbWljQ2Fz
dDxDbG9uZWRBcmd1bWVudHMqPih2bSwgYWN0dWFsVmFsdWUuYXNDZWxsKCkpKSkgeworICAgICAg
ICAgICAgICAgICAgICBKU1ZhbHVlIGV4cGVjdGVkVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZXhw
ZWN0ZWQpOworICAgICAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRWYWx1ZS5pc0NlbGwoKQor
ICAgICAgICAgICAgICAgICAgICAgICAgJiYgSlNEb2xsYXJWTVByb3RvdHlwZTo6aXNWYWxpZENl
bGwoJnZtLmhlYXAsIGV4cGVjdGVkVmFsdWUuYXNDZWxsKCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAmJiAoanNEeW5hbWljQ2FzdDxEaXJlY3RBcmd1bWVudHMqPih2bSwgZXhwZWN0ZWRWYWx1
ZS5hc0NlbGwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IGpzRHluYW1pY0Nhc3Q8Q2xv
bmVkQXJndW1lbnRzKj4odm0sIGV4cGVjdGVkVmFsdWUuYXNDZWxsKCkpKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBBbGwgaXMgd2VsbC4gTW92ZSBhbG9uZy4KKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoIXByaW50ZWRUaXRsZSkgeworICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICBFUlJPUjogc3RhY2sgcGFnZSAiLCBSYXdQb2lu
dGVyKGJhc2UpLCAiIHwgYWN0dWFsIHNpZGUgcGFnZSAiLCBSYXdQb2ludGVyKCZwYWdlLT5tX2J1
ZmZlciksICJcbiIpOworICAgICAgICAgICAgICAgICAgICBwcmludGVkVGl0bGUgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICBoYXNTdGFja0RpZmZlcmVuY2UgPSB0cnVlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbIiwgUmF3UG9pbnRlcihh
ZGRyZXNzKSwgIl0gYWN0dWFsICIsIGZvcm1hdCgiMHglMGxseCIsIGFjdHVhbCksICIsIGV4cGVj
dGVkICIsIGZvcm1hdCgiMHglMGxseCIsIGV4cGVjdGVkKSwgIlxuIik7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGhhc1N0YWNrRGlmZmVyZW5jZSkgeworICAgICAg
ICBkYXRhTG9nKCIgICBFUlJPUjogc3AgIiwgUmF3UG9pbnRlcihjb250ZXh0Lmdwcjx2b2lkKj4o
TWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKSksICJcbiIpOworICAgICAgICBk
YXRhTG9nKCIgICBFUlJPUjogZnAgIiwgUmF3UG9pbnRlcihjb250ZXh0Lmdwcjx2b2lkKj4oTWFj
cm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyKSksICJcbiIpOworICAgICAgICBkYXRh
TG9nKCIgICBFUlJPUjogdGFyZ2V0IHBjICIsIFJhd1BvaW50ZXIoY29udGV4dC5ncHI8dm9pZCo+
KEdQUkluZm86OnJlZ1QyKSksICJcbiIpOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVCghaGFz
UmVnaXN0ZXJEaWZmZXJlbmNlKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghaGFzU3RhY2tEaWZmZXJl
bmNlKTsKKworICAgIGRlbGV0ZSBzdGFja0NvcHk7CisgICAgc3RhY2tDb3B5ID0gbnVsbHB0cjsK
KyAgICBkZWxldGUgc3RhdGVDb3B5OworICAgIHN0YXRlQ29weSA9IG51bGxwdHI7CisKKyAgICBp
ZiAoaGFzUmVnaXN0ZXJEaWZmZXJlbmNlIHx8IGhhc1N0YWNrRGlmZmVyZW5jZSkKKyAgICAgICAg
ZGF0YUxvZygiXG4iKTsKK30KKwordm9pZCBPU1JFeGl0OjpleGVjdXRlT1NSRXhpdChDb250ZXh0
JiBjb250ZXh0KQoreworICAgIFZNJiB2bSA9ICpjb250ZXh0LmFyZzxWTSo+KCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgRXhlY1N0YXRlKiBleGVj
ID0gY29udGV4dC5mcDxFeGVjU3RhdGUqPigpOworICAgIEFTU0VSVCgmZXhlYy0+dm0oKSA9PSAm
dm0pOworCisgICAgaWYgKHZtLmNhbGxGcmFtZUZvckNhdGNoKSB7CisgICAgICAgIGV4ZWMgPSB2
bS5jYWxsRnJhbWVGb3JDYXRjaDsKKyAgICAgICAgY29udGV4dC5mcCgpID0gZXhlYzsKKyAgICB9
CisKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworLy8gICAg
ZGF0YUxvZygiICAgcHJvYmUgRXhlY1N0YXRlKiA9ICIsIFJhd1BvaW50ZXIoZXhlYyksICIgIiwg
KHZtLmNhbGxGcmFtZUZvckNhdGNoID8gIkNBVENIIjoiIiksICIgY2IgPSAiLCBjb2RlQmxvY2ss
ICJcbiIpOworICAgIEFTU0VSVChjb2RlQmxvY2spOworICAgIEFTU0VSVChjb2RlQmxvY2stPmpp
dFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOworCisgICAgLy8gSXQncyBzb3J0IG9mIHByZWZl
cmFibGUgdGhhdCB3ZSBkb24ndCBHQyB3aGlsZSBpbiBoZXJlLiBBbnl3YXlzLCBkb2luZyBzbyB3
b3VsZG4ndAorICAgIC8vIHJlYWxseSBiZSBwcm9maXRhYmxlLgorICAgIERlZmVyR0NGb3JBV2hp
bGUgZGVmZXJHQyh2bS5oZWFwKTsKKworICAgIHVpbnQzMl90IGV4aXRJbmRleCA9IHZtLm9zckV4
aXRJbmRleDsKKyAgICBPU1JFeGl0JiBleGl0ID0gY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygp
LT5vc3JFeGl0W2V4aXRJbmRleF07CisKKyAgICBBU1NFUlQoIXZtLmNhbGxGcmFtZUZvckNhdGNo
IHx8IGV4aXQubV9raW5kID09IEdlbmVyaWNVbndpbmQpOworICAgIEFTU0VSVF9VTlVTRUQoc2Nv
cGUsICFleGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpIHx8ICEhc2NvcGUuZXhjZXB0aW9uKCkpOwor
CisgICAgaWYgKGdldGVudigidmVyYm9zZSIpKSBkYXRhTG9nKCIgICBwcm9iZSBAIiwgX19MSU5F
X18sICIgZnA8IiwgUmF3UG9pbnRlcihjb250ZXh0LmZwPGNoYXIqPigpKSwgIj4tMHgzOCBbIiwg
UmF3UG9pbnRlcihjb250ZXh0LmZwPGNoYXIqPigpLTB4MzgpLCAiXSA9ICIsIFJhd1BvaW50ZXIo
Kih2b2lkKiopKGNvbnRleHQuZnA8Y2hhcio+KCktMHgzOCkpLCAiXG4iKTsKKyAgICBpZiAoVU5M
SUtFTFkoIWV4aXQuZXhpdFN0YXRlKSkgeworICAgICAgICAvLyBFbnN1cmUgd2UgaGF2ZSBiYXNl
bGluZSBjb2RlQmxvY2tzIHRvIE9TUiBleGl0IHRvLgorICAgICAgICBwcmVwYXJlQ29kZU9yaWdp
bkZvck9TUkV4aXQoZXhlYywgZXhpdC5tX2NvZGVPcmlnaW4pOworCisgICAgICAgIENvZGVCbG9j
ayogYmFzZWxpbmVDb2RlQmxvY2sgPSBjb2RlQmxvY2stPmJhc2VsaW5lQWx0ZXJuYXRpdmUoKTsK
KyAgICAgICAgQVNTRVJUKGJhc2VsaW5lQ29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQpOworCisgICAgICAgIC8vIENvbXB1dGUgdGhlIHZhbHVlIHJlY292ZXJpZXMu
CisgICAgICAgIE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+IG9wZXJhbmRzOworICAgICAgICBjb2Rl
QmxvY2stPmppdENvZGUoKS0+ZGZnKCktPnZhcmlhYmxlRXZlbnRTdHJlYW0ucmVjb25zdHJ1Y3Qo
Y29kZUJsb2NrLCBleGl0Lm1fY29kZU9yaWdpbiwgY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygp
LT5taW5pZmllZERGRywgZXhpdC5tX3N0cmVhbUluZGV4LCBvcGVyYW5kcyk7CisKKyAgICAgICAg
U3BlY3VsYXRpb25SZWNvdmVyeSogcmVjb3ZlcnkgPSBudWxscHRyOworICAgICAgICBpZiAoZXhp
dC5tX3JlY292ZXJ5SW5kZXggIT0gVUlOVF9NQVgpCisgICAgICAgICAgICByZWNvdmVyeSA9ICZj
b2RlQmxvY2stPmppdENvZGUoKS0+ZGZnKCktPnNwZWN1bGF0aW9uUmVjb3ZlcnlbZXhpdC5tX3Jl
Y292ZXJ5SW5kZXhdOworCisgICAgICAgIGludDMyX3QgYWN0aXZlVGhyZXNob2xkID0gYmFzZWxp
bmVDb2RlQmxvY2stPmFkanVzdGVkQ291bnRlclZhbHVlKE9wdGlvbnM6OnRocmVzaG9sZEZvck9w
dGltaXplQWZ0ZXJMb25nV2FybVVwKCkpOworICAgICAgICBkb3VibGUgYWRqdXN0ZWRUaHJlc2hv
bGQgPSBhcHBseU1lbW9yeVVzYWdlSGV1cmlzdGljcyhhY3RpdmVUaHJlc2hvbGQsIGJhc2VsaW5l
Q29kZUJsb2NrKTsKKyAgICAgICAgQVNTRVJUKGFkanVzdGVkVGhyZXNob2xkID4gMCk7CisgICAg
ICAgIGFkanVzdGVkVGhyZXNob2xkID0gQmFzZWxpbmVFeGVjdXRpb25Db3VudGVyOjpjbGlwcGVk
VGhyZXNob2xkKGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIGFkanVzdGVkVGhyZXNob2xkKTsK
KworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja0ZvckV4aXQgPSBiYXNlbGluZUNvZGVCbG9j
a0Zvck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKGV4aXQubV9jb2RlT3JpZ2luLCBiYXNlbGlu
ZUNvZGVCbG9jayk7CisgICAgICAgIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+IGRl
Y29kZWRDb2RlTWFwOworICAgICAgICBjb2RlQmxvY2tGb3JFeGl0LT5qaXRDb2RlTWFwKCktPmRl
Y29kZShkZWNvZGVkQ29kZU1hcCk7CisKKyAgICAgICAgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0
KiBtYXBwaW5nID0gYmluYXJ5U2VhcmNoPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCwgdW5zaWdu
ZWQ+KGRlY29kZWRDb2RlTWFwLCBkZWNvZGVkQ29kZU1hcC5zaXplKCksIGV4aXQubV9jb2RlT3Jp
Z2luLmJ5dGVjb2RlSW5kZXgsIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldDo6Z2V0Qnl0ZWNvZGVJ
bmRleCk7CisKKyAgICAgICAgQVNTRVJUKG1hcHBpbmcpOworICAgICAgICBBU1NFUlQobWFwcGlu
Zy0+bV9ieXRlY29kZUluZGV4ID09IGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOwor
CisgICAgICAgIHB0cmRpZmZfdCBmaW5hbFN0YWNrUG9pbnRlck9mZnNldCA9IGNvZGVCbG9ja0Zv
ckV4aXQtPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKTsKKworICAgICAg
ICB2b2lkKiBqdW1wVGFyZ2V0ID0gY29kZUJsb2NrRm9yRXhpdC0+aml0Q29kZSgpLT5leGVjdXRh
YmxlQWRkcmVzc0F0T2Zmc2V0KG1hcHBpbmctPm1fbWFjaGluZUNvZGVPZmZzZXQpOworCisgICAg
ICAgIGV4aXQuZXhpdFN0YXRlID0gYWRvcHRSZWYobmV3IE9TUkV4aXRTdGF0ZShleGl0LCBjb2Rl
QmxvY2ssIGJhc2VsaW5lQ29kZUJsb2NrLCBvcGVyYW5kcywgcmVjb3ZlcnksIGZpbmFsU3RhY2tQ
b2ludGVyT2Zmc2V0LCBhY3RpdmVUaHJlc2hvbGQsIGFkanVzdGVkVGhyZXNob2xkLCBqdW1wVGFy
Z2V0KSk7CisKKyAgICAgICAgaWYgKFVOTElLRUxZKHZtLm1fcGVyQnl0ZWNvZGVQcm9maWxlciAm
JiBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPmNvbXBpbGF0aW9uKSkgeworICAg
ICAgICAgICAgUHJvZmlsZXI6OkRhdGFiYXNlJiBkYXRhYmFzZSA9ICp2bS5tX3BlckJ5dGVjb2Rl
UHJvZmlsZXI7CisgICAgICAgICAgICBQcm9maWxlcjo6Q29tcGlsYXRpb24qIGNvbXBpbGF0aW9u
ID0gY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5jb21waWxhdGlvbi5nZXQoKTsK
KworICAgICAgICAgICAgUHJvZmlsZXI6Ok9TUkV4aXQqIHByb2ZpbGVyRXhpdCA9IGNvbXBpbGF0
aW9uLT5hZGRPU1JFeGl0KAorICAgICAgICAgICAgICAgIGV4aXRJbmRleCwgUHJvZmlsZXI6Ok9y
aWdpblN0YWNrKGRhdGFiYXNlLCBjb2RlQmxvY2ssIGV4aXQubV9jb2RlT3JpZ2luKSwKKyAgICAg
ICAgICAgICAgICBleGl0Lm1fa2luZCwgZXhpdC5tX2tpbmQgPT0gVW5jb3VudGFibGVJbnZhbGlk
YXRpb24pOworICAgICAgICAgICAgZXhpdC5leGl0U3RhdGUtPnByb2ZpbGVyRXhpdCA9IHByb2Zp
bGVyRXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp2ZXJi
b3NlT1NSKCkgfHwgT3B0aW9uczo6dmVyYm9zZURGR09TUkV4aXQoKSkpIHsKKyAgICAgICAgICAg
IGRhdGFMb2dGKCJERkcgT1NSIGV4aXQgIyV1ICglcywgJXMpIGZyb20gJXMsIHdpdGggb3BlcmFu
ZHMgPSAlcyIsCisgICAgICAgICAgICAgICAgZXhpdEluZGV4LCB0b0NTdHJpbmcoZXhpdC5tX2Nv
ZGVPcmlnaW4pLmRhdGEoKSwKKyAgICAgICAgICAgICAgICBleGl0S2luZFRvU3RyaW5nKGV4aXQu
bV9raW5kKSwgdG9DU3RyaW5nKCpjb2RlQmxvY2spLmRhdGEoKSwKKyAgICAgICAgICAgICAgICB0
b0NTdHJpbmcoaWdub3JpbmdDb250ZXh0PER1bXBDb250ZXh0PihvcGVyYW5kcykpLmRhdGEoKSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBPU1JFeGl0U3RhdGUmIGV4aXRTdGF0ZSA9ICpleGl0
LmV4aXRTdGF0ZS5nZXQoKTsKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gZXhp
dFN0YXRlLmJhc2VsaW5lQ29kZUJsb2NrOworICAgIEFTU0VSVChiYXNlbGluZUNvZGVCbG9jay0+
aml0VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKworICAgIE9wZXJhbmRzPFZhbHVl
UmVjb3Zlcnk+JiBvcGVyYW5kcyA9IGV4aXRTdGF0ZS5vcGVyYW5kczsKKyAgICBTcGVjdWxhdGlv
blJlY292ZXJ5KiByZWNvdmVyeSA9IGV4aXRTdGF0ZS5yZWNvdmVyeTsKKworICAgIGlmIChnZXRl
bnYoInZlcmJvc2UiKSkgZGF0YUxvZygiICAgcHJvYmUgQCIsIF9fTElORV9fLCAiIGZwPCIsIFJh
d1BvaW50ZXIoY29udGV4dC5mcDxjaGFyKj4oKSksICI+LTB4MzggWyIsIFJhd1BvaW50ZXIoY29u
dGV4dC5mcDxjaGFyKj4oKS0weDM4KSwgIl0gPSAiLCBSYXdQb2ludGVyKCoodm9pZCoqKShjb250
ZXh0LmZwPGNoYXIqPigpLTB4MzgpKSwgIlxuIik7CisgICAgaWYgKGV4aXQubV9raW5kID09IEdl
bmVyaWNVbndpbmQpIHsKKyAgICAgICAgLy8gV2UgYXJlIGFjdGluZyBhcyBhIGRlZmFjdG8gb3Bf
Y2F0Y2ggYmVjYXVzZSB3ZSBhcnJpdmUgaGVyZSBmcm9tIGdlbmVyaWNVbndpbmQoKS4KKyAgICAg
ICAgLy8gU28sIHdlIG11c3QgcmVzdG9yZSBvdXIgY2FsbCBmcmFtZSBhbmQgc3RhY2sgcG9pbnRl
ci4KKy8vICAgICAgICBkYXRhTG9nKCIgICBwcm9iZSBCRUZPUkUgcmVzdG9yZUNhbGxlZVNhdmVz
RnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyIEV4ZWNTdGF0ZSogPSAiLCBSYXdQb2lu
dGVyKGNvbnRleHQuZnAoKSksICIgdm0uY2FsbEZyYW1lRm9yQ2F0Y2ggPSAiLCBSYXdQb2ludGVy
KHZtLmNhbGxGcmFtZUZvckNhdGNoKSwgIlxuIik7CisgICAgICAgIHJlc3RvcmVDYWxsZWVTYXZl
c0Zyb21WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihjb250ZXh0KTsKKyAgICAgICAgY29u
dGV4dC5mcCgpID0gdm0uY2FsbEZyYW1lRm9yQ2F0Y2g7CisvLyAgICAgICAgZGF0YUxvZygiICAg
cHJvYmUgQUZURVIgcmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVz
QnVmZmVyIEV4ZWNTdGF0ZSogPSAiLCBSYXdQb2ludGVyKGNvbnRleHQuZnAoKSksICJcbiIpOwor
ICAgIH0KKyAgICBjb250ZXh0LnNwKCkgPSBjb250ZXh0LmZwPHVpbnQ4X3QqPigpICsgKGNvZGVC
bG9jay0+c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKTsKKworICAgIEFT
U0VSVCghKGNvbnRleHQuZnA8dWludHB0cl90PigpICYgMHg3KSk7CisKKyAgICBpZiAoZXhpdFN0
YXRlLnByb2ZpbGVyRXhpdCkKKyAgICAgICAgZXhpdFN0YXRlLnByb2ZpbGVyRXhpdC0+aW5jQ291
bnQoKTsKKworICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OworICAgIEZyYW1lIGZyYW1lKGNw
dS5mcCgpLCBjb250ZXh0LnN0YWNrKCkpOworCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBBU1NF
UlQoY3B1LmdwcihHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpID09IFRhZ1R5cGVOdW1i
ZXIpOworICAgIEFTU0VSVChjcHUuZ3ByKEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikgPT0gVGFn
TWFzayk7CisjZW5kaWYKKworICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpwcmludEVhY2hPU1JF
eGl0KCkpKQorICAgICAgICBwcmludE9TUkV4aXQoY29udGV4dCwgdm0ub3NyRXhpdEluZGV4LCBl
eGl0KTsKKworICAgIC8vIFBlcmZvcm0gc3BlY3VsYXRpb24gcmVjb3ZlcnkuIFRoaXMgb25seSBj
b21lcyBpbnRvIHBsYXkgd2hlbiBhbiBvcGVyYXRpb24KKyAgICAvLyBzdGFydHMgbXV0YXRpbmcg
c3RhdGUgYmVmb3JlIHZlcmlmeWluZyB0aGUgc3BlY3VsYXRpb24gaXQgaGFzIGFscmVhZHkgbWFk
ZS4KKworICAgIGlmIChnZXRlbnYoInZlcmJvc2UiKSkgZGF0YUxvZygiICAgcHJvYmUgQCIsIF9f
TElORV9fLCAiIGZwPCIsIFJhd1BvaW50ZXIoY29udGV4dC5mcDxjaGFyKj4oKSksICI+LTB4Mzgg
WyIsIFJhd1BvaW50ZXIoY29udGV4dC5mcDxjaGFyKj4oKS0weDM4KSwgIl0gPSAiLCBSYXdQb2lu
dGVyKCoodm9pZCoqKShjb250ZXh0LmZwPGNoYXIqPigpLTB4MzgpKSwgIlxuIik7CisgICAgaWYg
KHJlY292ZXJ5KSB7CisgICAgICAgIHN3aXRjaCAocmVjb3ZlcnktPnR5cGUoKSkgeworICAgICAg
ICBjYXNlIFNwZWN1bGF0aXZlQWRkOgorICAgICAgICAgICAgY3B1LmdwcihyZWNvdmVyeS0+ZGVz
dCgpKSA9IGNwdS5ncHI8dWludDMyX3Q+KHJlY292ZXJ5LT5kZXN0KCkpIC0gY3B1Lmdwcjx1aW50
MzJfdD4ocmVjb3ZlcnktPnNyYygpKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAg
QVNTRVJUKCEoY3B1LmdwcihyZWNvdmVyeS0+ZGVzdCgpKSA+PiAzMikpOworICAgICAgICAgICAg
Y3B1LmdwcihyZWNvdmVyeS0+ZGVzdCgpKSB8PSBUYWdUeXBlTnVtYmVyOworI2VuZGlmCisgICAg
ICAgICAgICBpZiAoZ2V0ZW52KCJ2ZXJib3NlIikpIGRhdGFMb2coIiAgICBSRUNPVkVSIFNwZWN1
bGF0aXZlQWRkIGdwciAiLCBSYXdQb2ludGVyKGNwdS5ncHI8dm9pZCo+KHJlY292ZXJ5LT5kZXN0
KCkpKSwgIlxuIik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFNwZWN1bGF0
aXZlQWRkSW1tZWRpYXRlOgorICAgICAgICAgICAgY3B1LmdwcihyZWNvdmVyeS0+ZGVzdCgpKSA9
IChjcHUuZ3ByPHVpbnQzMl90PihyZWNvdmVyeS0+ZGVzdCgpKSAtIHJlY292ZXJ5LT5pbW1lZGlh
dGUoKSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIEFTU0VSVCghKGNwdS5ncHIo
cmVjb3ZlcnktPmRlc3QoKSkgPj4gMzIpKTsKKyAgICAgICAgICAgIGNwdS5ncHIocmVjb3Zlcnkt
PmRlc3QoKSkgfD0gVGFnVHlwZU51bWJlcjsKKyNlbmRpZgorICAgICAgICAgICAgaWYgKGdldGVu
digidmVyYm9zZSIpKSBkYXRhTG9nKCIgICAgUkVDT1ZFUiBTcGVjdWxhdGl2ZUFkZEltbWVkaWF0
ZSBncHIgIiwgUmF3UG9pbnRlcihjcHUuZ3ByPHZvaWQqPihyZWNvdmVyeS0+ZGVzdCgpKSksICJc
biIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBCb29sZWFuU3BlY3VsYXRp
b25DaGVjazoKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgY3B1LmdwcihyZWNvdmVy
eS0+ZGVzdCgpKSA9IGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgXiBWYWx1ZUZhbHNlOworICAg
ICAgICAgICAgaWYgKGdldGVudigidmVyYm9zZSIpKSBkYXRhTG9nKCIgICAgUkVDT1ZFUiBCb29s
ZWFuU3BlY3VsYXRpb25DaGVjayBncHIgIiwgUmF3UG9pbnRlcihjcHUuZ3ByPHZvaWQqPihyZWNv
dmVyeS0+ZGVzdCgpKSksICJcbiIpOworI2VuZGlmCisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICAvLyBSZWZpbmUgc29tZSBhcnJheSBhbmQvb3IgdmFsdWUgcHJvZmlsZSwgaWYgYXBwcm9wcmlh
dGUuCisKKyAgICBpZiAoZ2V0ZW52KCJ2ZXJib3NlIikpIGRhdGFMb2coIiAgIHByb2JlIEAiLCBf
X0xJTkVfXywgIiBmcDwiLCBSYXdQb2ludGVyKGNvbnRleHQuZnA8Y2hhcio+KCkpLCAiPi0weDM4
IFsiLCBSYXdQb2ludGVyKGNvbnRleHQuZnA8Y2hhcio+KCktMHgzOCksICJdID0gIiwgUmF3UG9p
bnRlcigqKHZvaWQqKikoY29udGV4dC5mcDxjaGFyKj4oKS0weDM4KSksICJcbiIpOworICAgIGlm
ICghIWV4aXQubV9qc1ZhbHVlU291cmNlKSB7CisgICAgICAgIGlmIChleGl0Lm1fa2luZCA9PSBC
YWRDYWNoZSB8fCBleGl0Lm1fa2luZCA9PSBCYWRJbmRleGluZ1R5cGUpIHsKKyAgICAgICAgICAg
IC8vIElmIHRoZSBpbnN0cnVjdGlvbiB0aGF0IHRoaXMgb3JpZ2luYXRlZCBmcm9tIGhhcyBhbiBh
cnJheSBwcm9maWxlLCB0aGVuCisgICAgICAgICAgICAvLyByZWZpbmUgaXQuIElmIGl0IGRvZXNu
J3QsIHRoZW4gZG8gbm90aGluZy4gVGhlIGxhdHRlciBjb3VsZCBoYXBwZW4gZm9yCisgICAgICAg
ICAgICAvLyBob2lzdGVkIGNoZWNrcywgb3IgY2hlY2tzIGVtaXR0ZWQgZm9yIG9wZXJhdGlvbnMg
dGhhdCBkaWRuJ3QgaGF2ZSBhcnJheQorICAgICAgICAgICAgLy8gcHJvZmlsaW5nIC0gZWl0aGVy
IG9wcyB0aGF0IGFyZW4ndCBhcnJheSBhY2Nlc3NlcyBhdCBhbGwsIG9yIHdlcmVuJ3QKKyAgICAg
ICAgICAgIC8vIGtub3duIHRvIGJlIGFycmF5IGFjY2VzZXMgaW4gdGhlIGJ5dGVjb2RlLiBUaGUg
bGF0dGVyIGNhc2UgaXMgYSBGSVhNRQorICAgICAgICAgICAgLy8gd2hpbGUgdGhlIGZvcm1lciBj
YXNlIGlzIGFuIG91dGNvbWUgb2YgYSBDaGVja1N0cnVjdHVyZSBub3Qga25vd2luZyB3aHkKKyAg
ICAgICAgICAgIC8vIGl0IHdhcyBlbWl0dGVkIChjb3VsZCBiZSBlaXRoZXIgZHVlIHRvIGFuIGlu
bGluZSBjYWNoZSBvZiBhIHByb3BlcnR5CisgICAgICAgICAgICAvLyBwcm9wZXJ0eSBhY2Nlc3Ms
IG9yIGR1ZSB0byBhbiBhcnJheSBwcm9maWxlKS4KKworICAgICAgICAgICAgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luID0gZXhpdC5tX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZTsKKyAgICAgICAgICAg
IENvZGVCbG9jayogcHJvZmlsZWRDb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdp
bkFuZEJhc2VsaW5lQ29kZUJsb2NrKGNvZGVPcmlnaW4sIGJhc2VsaW5lQ29kZUJsb2NrKTsKKyAg
ICAgICAgICAgIGlmIChBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IHByb2ZpbGVkQ29kZUJs
b2NrLT5nZXRBcnJheVByb2ZpbGUoY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkgeworICAgICAg
ICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0ganNWYWx1ZUZvcihjcHUsIGV4aXQubV9q
c1ZhbHVlU291cmNlKS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAgICAgICAgICBh
cnJheVByb2ZpbGUtPm9ic2VydmVTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAg
ICBhcnJheVByb2ZpbGUtPm9ic2VydmVBcnJheU1vZGUoYXJyYXlNb2RlRnJvbVN0cnVjdHVyZShz
dHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChNZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBleGl0Lm1fdmFsdWVQcm9maWxlKQor
ICAgICAgICAgICAgcHJvZmlsZS5yZXBvcnRWYWx1ZShqc1ZhbHVlRm9yKGNwdSwgZXhpdC5tX2pz
VmFsdWVTb3VyY2UpKTsKKyAgICB9CisKKyAgICAvLyBEbyBhbGwgZGF0YSBmb3JtYXQgY29udmVy
c2lvbnMgYW5kIHN0b3JlIHRoZSByZXN1bHRzIGludG8gdGhlIHN0YWNrLgorICAgIC8vIE5vdGU6
IHdlIG5lZWQgdG8gcmVjb3ZlciB2YWx1ZXMgYmVmb3JlIHJlc3RvcmluZyBjYWxsZWUgc2F2ZSBy
ZWdpc3RlcnMgYmVsb3cKKyAgICAvLyBiZWNhdXNlIHRoZSByZWNvdmVyeSBtYXkgcmVseSBvbiB2
YWx1ZXMgaW4gc29tZSBvZiBjYWxsZWUgc2F2ZSByZWdpc3RlcnMuCisKKyAgICBpbnQgY2FsbGVl
U2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzID0gc3RhdGljX2Nhc3Q8aW50PihiYXNlbGluZUNv
ZGVCbG9jay0+Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpOworICAgIHNpemVf
dCBudW1iZXJPZk9wZXJhbmRzID0gb3BlcmFuZHMuc2l6ZSgpOworICAgIGlmIChnZXRlbnYoInZl
cmJvc2UiKSkgZGF0YUxvZygiICAgcHJvYmUgQCIsIF9fTElORV9fLCAiIGZwPCIsIFJhd1BvaW50
ZXIoY29udGV4dC5mcDxjaGFyKj4oKSksICI+LTB4MzggWyIsIFJhd1BvaW50ZXIoY29udGV4dC5m
cDxjaGFyKj4oKS0weDM4KSwgIl0gPSAiLCBSYXdQb2ludGVyKCoodm9pZCoqKShjb250ZXh0LmZw
PGNoYXIqPigpLTB4MzgpKSwgIlxuIik7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRl
eCA8IG51bWJlck9mT3BlcmFuZHM7ICsraW5kZXgpIHsKKyAgICAgICAgY29uc3QgVmFsdWVSZWNv
dmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5kc1tpbmRleF07CisgICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciByZWcgPSBvcGVyYW5kcy52aXJ0dWFsUmVnaXN0ZXJGb3JJbmRleChpbmRleCk7CisKKyAgICAg
ICAgaWYgKHJlZy5pc0xvY2FsKCkgJiYgcmVnLnRvTG9jYWwoKSA8IGNhbGxlZVNhdmVTcGFjZUFz
VmlydHVhbFJlZ2lzdGVycykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGludCBv
cGVyYW5kID0gcmVnLm9mZnNldCgpOworCisgICAgICAgIC8vIG1sYW0KKyAgICAgICAgaWYgKHJl
Y292ZXJ5LmlzSW5KU1N0YWNrKCkpIHsKKyAgICAgICAgICAgIHZvaWQqIG9wZXJhbmRBZGRyZXNz
ID0gJmV4ZWMtPnIocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpOworICAgICAgICAgICAgaWYg
KG9wZXJhbmRBZGRyZXNzIDwgY29udGV4dC5zcDx2b2lkKj4oKSkgeworICAgICAgICAgICAgICAg
IGZyYW1lLnNldE9wZXJhbmQ8dWludHB0cl90PihvcGVyYW5kLCAweGJhZGJlZWYwKTsKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAv
LyBtbGFtICovCisKKyAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgeworICAg
ICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJh
bmQob3BlcmFuZCwgZXhlYy0+cihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSkuanNWYWx1ZSgp
KTsKKy8vICAgICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHZpcnR1YWxSZWdp
c3Rlci5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikKKworLy8gICAgICAgICAgICBmcmFtZS5z
ZXRPcGVyYW5kKG9wZXJhbmQsIGZyYW1lLmdldE9wZXJhbmQ8SlNWYWx1ZT4ocmVjb3Zlcnkudmly
dHVhbFJlZ2lzdGVyKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSW5G
UFI6CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIGNwdS5mcHI8SlNWYWx1
ZT4ocmVjb3ZlcnkuZnByKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworCisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICAgICAgY2FzZSBJbkdQUjoKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQo
b3BlcmFuZCwgY3B1LmdwcjxKU1ZhbHVlPihyZWNvdmVyeS5ncHIoKSkpOworICAgICAgICAgICAg
YnJlYWs7CisjZWxzZQorICAgICAgICBjYXNlIEluUGFpcjoKKyAgICAgICAgICAgIGZyYW1lLnNl
dE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShjcHUuZ3ByPGludDMyX3Q+KHJlY292ZXJ5LnRhZ0dQ
UigpKSwgY3B1LmdwcjxpbnQzMl90PihyZWNvdmVyeS5wYXlsb2FkR1BSKCkpKSk7CisgICAgICAg
ICAgICBicmVhazsKKyNlbmRpZgorCisgICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKKyAg
ICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShjcHUuZ3ByPEpTQ2Vs
bCo+KHJlY292ZXJ5LmdwcigpKSkpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChv
cGVyYW5kLCBKU1ZhbHVlKGV4ZWMtPnIocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLnVuYm94
ZWRDZWxsKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworCisjaWYgVVNFKEpTVkFMVUUzMl82NCkK
KyAgICAgICAgY2FzZSBVbmJveGVkQm9vbGVhbkluR1BSOgorICAgICAgICAgICAgZnJhbWUuc2V0
T3BlcmFuZChvcGVyYW5kLCBqc0Jvb2xlYW4oY3B1Lmdwcjxib29sPihyZWNvdmVyeS5ncHIoKSkp
KTsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisKKyAgICAgICAgY2FzZSBCb29sZWFuRGlz
cGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBl
eGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS5qc1ZhbHVlKCkpOworICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKKyAgICAgICAgICAg
IGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShjcHUuZ3ByPGludDMyX3Q+KHJlY292
ZXJ5LmdwcigpKSkpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJbnQzMkRp
c3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwg
SlNWYWx1ZShleGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS51bmJveGVkSW50MzIo
KSkpOworICAgICAgICAgICAgYnJlYWs7CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBj
YXNlIFVuYm94ZWRJbnQ1MkluR1BSOgorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVy
YW5kLCBKU1ZhbHVlKGNwdS5ncHI8aW50NjRfdD4ocmVjb3ZlcnkuZ3ByKCkpID4+IEpTVmFsdWU6
OmludDUyU2hpZnRBbW91bnQpKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
SW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9w
ZXJhbmQsIEpTVmFsdWUoZXhlYy0+cihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSkudW5ib3hl
ZEludDUyKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgVW5ib3hlZFN0
cmljdEludDUySW5HUFI6CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpT
VmFsdWUoY3B1LmdwcjxpbnQ2NF90PihyZWNvdmVyeS5ncHIoKSkpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIGNhc2UgU3RyaWN0SW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAg
ICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFsdWUoZXhlYy0+cihyZWNvdmVy
eS52aXJ0dWFsUmVnaXN0ZXIoKSkudW5ib3hlZFN0cmljdEludDUyKCkpKTsKKyAgICAgICAgICAg
IGJyZWFrOworI2VuZGlmCisKKyAgICAgICAgY2FzZSBVbmJveGVkRG91YmxlSW5GUFI6CisgICAg
ICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2Rl
QXNEb3VibGUsIHB1cmlmeU5hTihjcHUuZnByKHJlY292ZXJ5LmZwcigpKSkpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgorICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoKGNoYXIqKSZleGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxS
ZWdpc3RlcigpKSA9PSAoY29udGV4dC5mcDxjaGFyKj4oKSArIHJlY292ZXJ5LnZpcnR1YWxSZWdp
c3RlcigpLm9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkpOyAvLyBtbGFtCisgICAgICAgICAg
ICBpZiAoZ2V0ZW52KCJ2ZXJib3NlIikpIHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICBw
cm9iZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2sgZnAgIiwgUmF3UG9pbnRlcihleGVjKSwgIiBb
IiwgUmF3UG9pbnRlcigmZXhlYy0+cihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSkpLCAiXSBl
eGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS5qc1ZhbHVlKCkgPSAiLCBSYXdQb2lu
dGVyKCh2b2lkKilKU1ZhbHVlOjplbmNvZGUoZXhlYy0+cihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0
ZXIoKSkuanNWYWx1ZSgpKSksICJcbiIpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAg
IHByb2JlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjayB1bmJveGVkID0gIiwgZm9ybWF0KCIweCUw
bGx4IiwgYml0d2lzZV9jYXN0PHVpbnQ2NF90PihleGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdp
c3RlcigpKS51bmJveGVkRG91YmxlKCkpKSwgIlxuIik7CisgICAgICAgICAgICAgICAgZGF0YUxv
ZygiICAgICAgcHJvYmUgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrIHB1cmlmaWVkIHVuYm94ZWQg
PSAiLCBmb3JtYXQoIjB4JTBsbHgiLCBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KHB1cmlmeU5hTihl
eGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS51bmJveGVkRG91YmxlKCkpKSksICJc
biIpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIHByb2JlIERvdWJsZURpc3BsYWNl
ZEluSlNTdGFjayBib3hlZCBwdXJpZmllZCB1bmJveGVkID0gIiwgZm9ybWF0KCIweCUwbGx4Iiwg
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUsIHB1cmlmeU5h
TihleGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS51bmJveGVkRG91YmxlKCkpKSkp
LCAiXG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3Bl
cmFuZCwgSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgcHVyaWZ5TmFOKGV4ZWMtPnIo
cmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLnVuYm94ZWREb3VibGUoKSkpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ29uc3RhbnQ6CisgICAgICAgICAgICBmcmFtZS5z
ZXRPcGVyYW5kKG9wZXJhbmQsIHJlY292ZXJ5LmNvbnN0YW50KCkpOworICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgY2FzZSBEaXJlY3RBcmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQ6Cisg
ICAgICAgIGNhc2UgQ2xvbmVkQXJndW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkOgorICAgICAgICAg
ICAgLy8gRG9uJ3QgZG8gdGhpcywgeWV0LgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAvLyBtbGFtCisgICAgICAgIGlmIChn
ZXRlbnYoInZlcmJvc2UiKSkgeworICAgICAgICAgICAgZGF0YUxvZygiICAgIHByb2JlIFJFQ09W
RVIgb3BlcmFuZCAiLCBvcGVyYW5kLCAiICIsIHJlY292ZXJ5LnRlY2huaXF1ZSgpLCAiPCIsIChp
bnQpcmVjb3ZlcnkudGVjaG5pcXVlKCksICI+IFsiLCBSYXdQb2ludGVyKGZyYW1lLmFkZHJlc3NP
Zk9wZXJhbmQob3BlcmFuZCkpLCAiXSAiLCBmb3JtYXQoIjB4JTBsbHgiLCBmcmFtZS5nZXRPcGVy
YW5kPHVpbnRwdHJfdD4ob3BlcmFuZCkpLCAiIHwgIik7CisgICAgICAgICAgICBKU1ZhbHVlIHZh
bHVlID0gZnJhbWUuZ2V0T3BlcmFuZDxKU1ZhbHVlPihvcGVyYW5kKTsKKy8vICAgICAgICAgICAg
aWYgKHZhbHVlLmlzQ2VsbCgpICYmICFKU0RvbGxhclZNUHJvdG90eXBlOjppc1ZhbGlkQ2VsbCgm
dm0uaGVhcCwgdmFsdWUuYXNDZWxsKCkpKQorLy8gICAgICAgICAgICAgICAgZGF0YUxvZygiSW52
YWxpZCBKU1ZhbHVlIChub3QgdmFsaWQgY2VsbCkiKTsKKy8vICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKHZh
bHVlKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlxuIik7CisgICAgICAgIH0KKyAgICAgICAgLy8g
bWxhbSAqLworICAgIH0KKworICAgIC8vIE5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHN0YWNrIHBv
aW50ZXIgYWNjb3VudHMgZm9yIHRoZSB3b3JzdC1jYXNlIHN0YWNrIHVzYWdlIGF0IGV4aXQuIFRo
aXMKKyAgICAvLyBjb3VsZCB0b2FzdCBzb21lIHN0YWNrIHRoYXQgdGhlIERGRyB1c2VkLiBXZSBu
ZWVkIHRvIGRvIGl0IGJlZm9yZSBzdG9yaW5nIHRvIHN0YWNrIG9mZnNldHMKKyAgICAvLyB1c2Vk
IGJ5IGJhc2VsaW5lLgorICAgIGNwdS5zcCgpID0gY3B1LmZwPHVpbnQ4X3QqPigpIC0gKGNvZGVC
bG9jay0+aml0Q29kZSgpLT5kZmdDb21tb24oKS0+cmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhp
dCAqIHNpemVvZihSZWdpc3RlcikpOworCisvLyAgICBkYXRhTG9nKCIgICBwcm9iZSByZXN0b3Jl
Q2FsbGVlU2F2ZXNGb3IgRXhlY1N0YXRlKiA9ICIsIFJhd1BvaW50ZXIoY29udGV4dC5mcCgpKSwg
IlxuIik7CisgICAgLy8gUmVzdG9yZSB0aGUgREZHIGNhbGxlZSBzYXZlcyBhbmQgdGhlbiBzYXZl
IHRoZSBvbmVzIHRoZSBiYXNlbGluZSBKSVQgdXNlcy4KKyAgICByZXN0b3JlQ2FsbGVlU2F2ZXNG
b3IoY29udGV4dCwgY29kZUJsb2NrKTsKKyAgICBzYXZlQ2FsbGVlU2F2ZXNGb3IoY29udGV4dCwg
YmFzZWxpbmVDb2RlQmxvY2spOworCisgICAgLy8gVGhlIHRhZyByZWdpc3RlcnMgYXJlIG5lZWRl
ZCB0byBtYXRlcmlhbGl6ZSByZWNvdmVyaWVzIGJlbG93LgorI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgY3B1LmdwcihHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpID0gVGFnVHlwZU51bWJl
cjsKKyAgICBjcHUuZ3ByKEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikgPSBUYWdUeXBlTnVtYmVy
IHwgVGFnQml0VHlwZU90aGVyOworI2VuZGlmCisKKy8vICAgIGRhdGFMb2coIiAgIHByb2JlIGNv
cHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIgRXhlY1N0YXRlKiA9
ICIsIFJhd1BvaW50ZXIoY29udGV4dC5mcCgpKSwgIlxuIik7CisgICAgaWYgKGV4aXQuaXNFeGNl
cHRpb25IYW5kbGVyKCkpCisgICAgICAgIGNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2Fs
bGVlU2F2ZXNCdWZmZXIoY29udGV4dCk7CisKKyAgICAvLyBOb3cgdGhhdCB0aGluZ3Mgb24gdGhl
IHN0YWNrIGFyZSByZWNvdmVyZWQsIGRvIHRoZSBhcmd1bWVudHMgcmVjb3ZlcnkuIFdlIGFzc3Vt
ZSB0aGF0IGFyZ3VtZW50cworICAgIC8vIHJlY292ZXJpZXMgZG9uJ3QgcmVjdXJzaXZlbHkgcmVm
ZXIgdG8gZWFjaCBvdGhlci4gQnV0LCB3ZSBkb24ndCB0cnkgdG8gYXNzdW1lIHRoYXQgdGhleSBv
bmx5CisgICAgLy8gcmVmZXIgdG8gY2VydGFpbiByYW5nZXMgb2YgbG9jYWxzLiBIZW5jZSB3aHkg
d2UgbmVlZCB0byBkbyB0aGlzIGhlcmUsIG9uY2UgdGhlIHN0YWNrIGlzIHNlbnNpYmxlLgorICAg
IC8vIE5vdGUgdGhhdCB3ZSBhbHNvIHJvdWdobHkgYXNzdW1lIHRoYXQgdGhlIGFyZ3VtZW50cyBt
aWdodCBzdGlsbCBiZSBtYXRlcmlhbGl6ZWQgb3V0c2lkZSBvZiBpdHMKKyAgICAvLyBpbmxpbmUg
Y2FsbCBmcmFtZSBzY29wZSAtIGJ1dCBmb3Igbm93IHRoZSBERkcgd291bGRuJ3QgZG8gdGhhdC4K
KworLy8gICAgZGF0YUxvZygiICAgcHJvYmUgZW1pdFJlc3RvcmVBcmd1bWVudHMgRXhlY1N0YXRl
KiA9ICIsIFJhd1BvaW50ZXIoY29udGV4dC5mcCgpKSwgIlxuIik7CisgICAgREZHOjplbWl0UmVz
dG9yZUFyZ3VtZW50cyhjb250ZXh0LCBjb2RlQmxvY2ssIG9wZXJhbmRzKTsKKworICAgIC8vIEFk
anVzdCB0aGUgb2xkIEpJVCdzIGV4ZWN1dGUgY291bnRlci4gU2luY2Ugd2UgYXJlIGV4aXRpbmcg
T1NSLCB3ZSBrbm93CisgICAgLy8gdGhhdCBhbGwgbmV3IGNhbGxzIGludG8gdGhpcyBjb2RlIHdp
bGwgZ28gdG8gdGhlIG5ldyBKSVQsIHNvIHRoZSBleGVjdXRlCisgICAgLy8gY291bnRlciBvbmx5
IGFmZmVjdHMgY2FsbCBmcmFtZXMgdGhhdCBwZXJmb3JtZWQgT1NSIGV4aXQgYW5kIGNhbGwgZnJh
bWVzCisgICAgLy8gdGhhdCB3ZXJlIHN0aWxsIGV4ZWN1dGluZyB0aGUgb2xkIEpJVCBhdCB0aGUg
dGltZSBvZiBhbm90aGVyIGNhbGwgZnJhbWUncworICAgIC8vIE9TUiBleGl0LiBXZSB3YW50IHRv
IGVuc3VyZSB0aGF0IHRoZSBmb2xsb3dpbmcgaXMgdHJ1ZToKKyAgICAvLworICAgIC8vIChhKSBD
b2RlIHRoZSBwZXJmb3JtcyBhbiBPU1IgZXhpdCBnZXRzIGEgY2hhbmNlIHRvIHJlZW50ZXIgb3B0
aW1pemVkCisgICAgLy8gICAgIGNvZGUgZXZlbnR1YWxseSwgc2luY2Ugb3B0aW1pemVkIGNvZGUg
aXMgZmFzdGVyLiBCdXQgd2UgZG9uJ3QKKyAgICAvLyAgICAgd2FudCB0byBkbyBzdWNoIHJlZW50
ZXJ5IHRvbyBhZ2dyZXNzaXZlbHkgKHNlZSAoYykgYmVsb3cpLgorICAgIC8vCisgICAgLy8gKGIp
IElmIHRoZXJlIGlzIGNvZGUgb24gdGhlIGNhbGwgc3RhY2sgdGhhdCBpcyBzdGlsbCBydW5uaW5n
IHRoZSBvbGQKKyAgICAvLyAgICAgSklUJ3MgY29kZSBhbmQgaGFzIG5ldmVyIE9TUidkLCB0aGVu
IGl0IHNob3VsZCBnZXQgYSBjaGFuY2UgdG8KKyAgICAvLyAgICAgcGVyZm9ybSBPU1IgZW50cnkg
ZGVzcGl0ZSB0aGUgZmFjdCB0aGF0IHdlJ3ZlIGV4aXRlZC4KKyAgICAvLworICAgIC8vIChjKSBD
b2RlIHRoZSBwZXJmb3JtcyBhbiBPU1IgZXhpdCBzaG91bGQgbm90IGltbWVkaWF0ZWx5IHJldHJ5
IE9TUgorICAgIC8vICAgICBlbnRyeSwgc2luY2UgYm90aCBmb3JtcyBvZiBPU1IgYXJlIGV4cGVu
c2l2ZS4gT1NSIGVudHJ5IGlzCisgICAgLy8gICAgIHBhcnRpY3VsYXJseSBleHBlbnNpdmUuCisg
ICAgLy8KKyAgICAvLyAoZCkgRnJlcXVlbnQgT1NSIGZhaWx1cmVzLCBldmVuIHRob3NlIHRoYXQg
ZG8gbm90IHJlc3VsdCBpbiB0aGUgY29kZQorICAgIC8vICAgICBydW5uaW5nIGluIGEgaG90IGxv
b3AsIHJlc3VsdCBpbiByZWNvbXBpbGF0aW9uIGdldHRpbmcgdHJpZ2dlcmVkLgorICAgIC8vCisg
ICAgLy8gVG8gZW5zdXJlIChjKSwgd2UnZCBsaWtlIHRvIHNldCB0aGUgZXhlY3V0ZSBjb3VudGVy
IHRvCisgICAgLy8gY291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCgpLiBUaGlzIHNl
ZW1zIGxpa2UgaXQgd291bGQgZW5kYW5nZXIKKyAgICAvLyAoYSkgYW5kIChiKSwgc2luY2UgdGhl
biBldmVyeSBPU1IgZXhpdCB3b3VsZCBkZWxheSB0aGUgb3Bwb3J0dW5pdHkgZm9yCisgICAgLy8g
ZXZlcnkgY2FsbCBmcmFtZSB0byBwZXJmb3JtIE9TUiBlbnRyeS4gRXNzZW50aWFsbHksIGlmIE9T
UiBleGl0IGhhcHBlbnMKKyAgICAvLyBmcmVxdWVudGx5IGFuZCB0aGUgZnVuY3Rpb24gaGFzIGZl
dyBsb29wcywgdGhlbiB0aGUgY291bnRlciB3aWxsIG5ldmVyCisgICAgLy8gYmVjb21lIG5vbi1u
ZWdhdGl2ZSBhbmQgT1NSIGVudHJ5IHdpbGwgbmV2ZXIgYmUgdHJpZ2dlcmVkLiBPU1IgZW50cnkK
KyAgICAvLyB3aWxsIG9ubHkgaGFwcGVuIGlmIGEgbG9vcCBnZXRzIGhvdCBpbiB0aGUgb2xkIEpJ
VCwgd2hpY2ggZG9lcyBhIHByZXR0eQorICAgIC8vIGdvb2Qgam9iIG9mIGVuc3VyaW5nIChhKSBh
bmQgKGIpLiBCdXQgdGhhdCBkb2Vzbid0IHRha2UgY2FyZSBvZiAoZCksCisgICAgLy8gc2luY2Ug
ZWFjaCBzcGVjdWxhdGlvbiBmYWlsdXJlIHdvdWxkIHJlc2V0IHRoZSBleGVjdXRlIGNvdW50ZXIu
CisgICAgLy8gU28gd2UgY2hlY2sgaGVyZSBpZiB0aGUgbnVtYmVyIG9mIHNwZWN1bGF0aW9uIGZh
aWx1cmVzIGlzIHNpZ25pZmljYW50bHkKKyAgICAvLyBsYXJnZXIgdGhhbiB0aGUgbnVtYmVyIG9m
IHN1Y2Nlc3NlcyAod2Ugd2FudCA5MCUgc3VjY2VzcyByYXRlKSwgYW5kIGlmCisgICAgLy8gdGhl
cmUgaGF2ZSBiZWVuIGEgbGFyZ2UgZW5vdWdoIG51bWJlciBvZiBmYWlsdXJlcy4gSWYgc28sIHdl
IHNldCB0aGUKKyAgICAvLyBjb3VudGVyIHRvIDA7IG90aGVyd2lzZSB3ZSBzZXQgdGhlIGNvdW50
ZXIgdG8KKyAgICAvLyBjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKCkuCisKKy8v
ICAgIGRhdGFMb2coIiAgIHByb2JlIGhhbmRsZUV4aXRDb3VudHMgRXhlY1N0YXRlKiA9ICIsIFJh
d1BvaW50ZXIoY29udGV4dC5mcCgpKSwgIlxuIik7CisgICAgaWYgKFVOTElLRUxZKGNvZGVCbG9j
ay0+dXBkYXRlT1NSRXhpdENvdW50ZXJBbmRDaGVja0lmTmVlZFRvUmVvcHRpbWl6ZShleGl0U3Rh
dGUpID09IENvZGVCbG9jazo6T3B0aW1pemVBY3Rpb246OlJlb3B0aW1pemVOb3cpKQorICAgICAg
ICB0cmlnZ2VyUmVvcHRpbWl6YXRpb25Ob3coYmFzZWxpbmVDb2RlQmxvY2ssICZleGl0KTsKKwor
ICAgIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoY29udGV4dCwgYmFzZWxpbmVDb2RlQmxvY2ssIGV4
aXQpOworICAgIGFkanVzdEFuZEp1bXBUb1RhcmdldChjb250ZXh0LCB2bSwgY29kZUJsb2NrLCBi
YXNlbGluZUNvZGVCbG9jaywgZXhpdCk7Cit9CisKK3ZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1l
cyhDb250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIG91dGVybW9zdEJhc2VsaW5lQ29kZUJsb2Nr
LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKK3sKKy8vICAgIGRhdGFMb2coIiAgIHByb2JlIHJl
aWZ5SW5saW5lZENhbGxGcmFtZXMgRXhlY1N0YXRlKiA9ICIsIFJhd1BvaW50ZXIoY29udGV4dC5m
cCgpKSwgIlxuIik7CisgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CisgICAgRnJhbWUgZnJh
bWUoY3B1LmZwKCksIGNvbnRleHQuc3RhY2soKSk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
bid0IGxlYXZlIGhvbGVzIG9uIHRoZSBzdGFjayB3aGVuIHBlcmZvcm1pbmcgYW4gT1NSIGV4aXQK
KyAgICAvLyBpbiBwcmVzZW5jZSBvZiBpbmxpbmVkIHRhaWwgY2FsbHMuCisgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzUxMQorICAgIEFTU0VSVChvdXRl
cm1vc3RCYXNlbGluZUNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklU
KTsKKyAgICBmcmFtZS5zZXRPcGVyYW5kPENvZGVCbG9jayo+KENhbGxGcmFtZVNsb3Q6OmNvZGVC
bG9jaywgb3V0ZXJtb3N0QmFzZWxpbmVDb2RlQmxvY2spOworCisgICAgY29uc3QgQ29kZU9yaWdp
biogY29kZU9yaWdpbjsKKyAgICBmb3IgKGNvZGVPcmlnaW4gPSAmZXhpdC5tX2NvZGVPcmlnaW47
IGNvZGVPcmlnaW4gJiYgY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lOyBjb2RlT3JpZ2luID0g
Y29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lLT5nZXRDYWxsZXJTa2lwcGluZ1RhaWxDYWxscygp
KSB7CisgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gY29kZU9yaWdp
bi0+aW5saW5lQ2FsbEZyYW1lOworICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2Nr
ID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jaygqY29kZU9y
aWdpbiwgb3V0ZXJtb3N0QmFzZWxpbmVDb2RlQmxvY2spOworICAgICAgICBJbmxpbmVDYWxsRnJh
bWU6OktpbmQgdHJ1ZUNhbGxlckNhbGxLaW5kOworICAgICAgICBDb2RlT3JpZ2luKiB0cnVlQ2Fs
bGVyID0gaW5saW5lQ2FsbEZyYW1lLT5nZXRDYWxsZXJTa2lwcGluZ1RhaWxDYWxscygmdHJ1ZUNh
bGxlckNhbGxLaW5kKTsKKyAgICAgICAgdm9pZCogY2FsbGVyRnJhbWUgPSBjcHUuZnAoKTsKKwor
ICAgICAgICBpZiAoIXRydWVDYWxsZXIpIHsKKyAgICAgICAgICAgIEFTU0VSVChpbmxpbmVDYWxs
RnJhbWUtPmlzVGFpbCgpKTsKKyAgICAgICAgICAgIHZvaWQqIHJldHVyblBDID0gZnJhbWUuZ2V0
PHZvaWQqPihDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkpOworICAgICAgICAgICAgZnJhbWUu
c2V0PHZvaWQqPihpbmxpbmVDYWxsRnJhbWUtPnJldHVyblBDT2Zmc2V0KCksIHJldHVyblBDKTsK
KyAgICAgICAgICAgIGNhbGxlckZyYW1lID0gZnJhbWUuZ2V0PHZvaWQqPihDYWxsRnJhbWU6OmNh
bGxlckZyYW1lT2Zmc2V0KCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQ29kZUJs
b2NrKiBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlciA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yT3Jp
Z2luQW5kQmFzZWxpbmVDb2RlQmxvY2soKnRydWVDYWxsZXIsIG91dGVybW9zdEJhc2VsaW5lQ29k
ZUJsb2NrKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNhbGxCeXRlY29kZUluZGV4ID0gdHJ1ZUNh
bGxlci0+Ynl0ZWNvZGVJbmRleDsKKyAgICAgICAgICAgIHZvaWQqIGp1bXBUYXJnZXQgPSBudWxs
cHRyOworCisgICAgICAgICAgICBzd2l0Y2ggKHRydWVDYWxsZXJDYWxsS2luZCkgeworICAgICAg
ICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OkNhbGw6CisgICAgICAgICAgICBjYXNlIElubGlu
ZUNhbGxGcmFtZTo6Q29uc3RydWN0OgorICAgICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6
OkNhbGxWYXJhcmdzOgorICAgICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OkNvbnN0cnVj
dFZhcmFyZ3M6CisgICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6VGFpbENhbGw6Cisg
ICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6VGFpbENhbGxWYXJhcmdzOiB7CisgICAg
ICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPQorICAgICAgICAgICAgICAg
ICAgICBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlci0+Z2V0Q2FsbExpbmtJbmZvRm9yQnl0ZWNv
ZGVJbmRleChjYWxsQnl0ZWNvZGVJbmRleCk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoY2FsbExpbmtJbmZvKTsKKworICAgICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBjYWxsTGlu
a0luZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbigpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgSW5saW5l
Q2FsbEZyYW1lOjpHZXR0ZXJDYWxsOgorICAgICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6
OlNldHRlckNhbGw6IHsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1Yklu
Zm8gPQorICAgICAgICAgICAgICAgICAgICBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlci0+Zmlu
ZFN0dWJJbmZvKENvZGVPcmlnaW4oY2FsbEJ5dGVjb2RlSW5kZXgpKTsKKyAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChzdHViSW5mbyk7CisKKyAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0
ID0gc3R1YkluZm8tPmRvbmVMb2NhdGlvbigpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKHRydWVDYWxsZXItPmlubGluZUNhbGxGcmFtZSkKKyAgICAg
ICAgICAgICAgICBjYWxsZXJGcmFtZSA9IGNwdS5mcDx1aW50OF90Kj4oKSArIHRydWVDYWxsZXIt
PmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwor
CisgICAgICAgICAgICBmcmFtZS5zZXQ8dm9pZCo+KGlubGluZUNhbGxGcmFtZS0+cmV0dXJuUENP
ZmZzZXQoKSwganVtcFRhcmdldCk7CisgICAgICAgIH0KKworICAgICAgICBmcmFtZS5zZXRPcGVy
YW5kPHZvaWQqPihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6
Y29kZUJsb2NrLCBiYXNlbGluZUNvZGVCbG9jayk7CisKKyAgICAgICAgLy8gUmVzdG9yZSB0aGUg
aW5saW5lIGNhbGwgZnJhbWUncyBjYWxsZWUgc2F2ZSByZWdpc3RlcnMuCisgICAgICAgIC8vIElm
IHRoaXMgaW5saW5lZCBmcmFtZSBpcyBhIHRhaWwgY2FsbCB0aGF0IHdpbGwgcmV0dXJuIGJhY2sg
dG8gdGhlIG9yaWdpbmFsIGNhbGxlciwgd2UgbmVlZCB0bworICAgICAgICAvLyBjb3B5IHRoZSBw
cmlvciBjb250ZW50cyBvZiB0aGUgdGFnIHJlZ2lzdGVycyBhbHJlYWR5IHNhdmVkIGZvciB0aGUg
b3V0ZXIgZnJhbWUgdG8gdGhpcyBmcmFtZS4KKyAgICAgICAgc2F2ZU9yQ29weUNhbGxlZVNhdmVz
Rm9yKGNvbnRleHQsIGJhc2VsaW5lQ29kZUJsb2NrLCBzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0
ZXI+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpLCAhdHJ1ZUNhbGxlcik7CisKKyAgICAg
ICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKQorICAgICAgICAgICAgZnJhbWUu
c2V0T3BlcmFuZDx1aW50MzJfdD4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIFBheWxvYWRPZmZzZXQsIGlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRzLnNpemUoKSk7CisgICAgICAgIEFTU0VSVChjYWxsZXJGcmFtZSk7CisgICAgICAg
IGZyYW1lLnNldDx2b2lkKj4oaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXJGcmFtZU9mZnNldCgpLCBj
YWxsZXJGcmFtZSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgdWludDMyX3QgbG9jYXRp
b25CaXRzID0gQ2FsbFNpdGVJbmRleChjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KS5iaXRzKCk7
CisgICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3Rh
Y2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBUYWdPZmZzZXQsIGxvY2F0
aW9uQml0cyk7CisgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQor
ICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0
ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBKU1ZhbHVlKGlubGluZUNhbGxGcmFtZS0+Y2FsbGVl
Q29uc3RhbnQoKSkpOworI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkgLy8gc28gdGhpcyBpcyB0aGUg
MzItYml0IHBhcnQKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gYmFzZWxpbmVD
b2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBjb2RlT3JpZ2luLT5ieXRlY29kZUlu
ZGV4OworICAgICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KGluc3Ry
dWN0aW9uKS5iaXRzKCk7CisgICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGlu
ZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBU
YWdPZmZzZXQsIGxvY2F0aW9uQml0cyk7CisgICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMy
X3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUs
IFRhZ09mZnNldCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTVmFsdWU6OkNlbGxUYWcpKTsKKyAg
ICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpCisgICAgICAgICAgICBm
cmFtZS5zZXRPcGVyYW5kKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVT
bG90OjpjYWxsZWUsIFBheWxvYWRPZmZzZXQsIGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29uc3Rh
bnQoKSk7CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkgLy8gZW5kaW5nIHRoZSAjZWxzZSBwYXJ0
LCBzbyBkaXJlY3RseSBhYm92ZSBpcyB0aGUgMzItYml0IHBhcnQKKyAgICB9CisKKyAgICAvLyBE
b24ndCBuZWVkIHRvIHNldCB0aGUgdG9wbGV2ZWwgY29kZSBvcmlnaW4gaWYgd2Ugb25seSBkaWQg
aW5saW5lIHRhaWwgY2FsbHMKKyAgICBpZiAoY29kZU9yaWdpbikgeworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoY29kZU9y
aWdpbi0+Ynl0ZWNvZGVJbmRleCkuYml0cygpOworI2Vsc2UKKyAgICAgICAgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uID0gb3V0ZXJtb3N0QmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9ucygp
LmJlZ2luKCkgKyBjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4OworICAgICAgICB1aW50MzJfdCBs
b2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KGluc3RydWN0aW9uKS5iaXRzKCk7CisjZW5kaWYK
KyAgICAgICAgZnJhbWUuc2V0T3BlcmFuZDx1aW50MzJfdD4oQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudCwgVGFnT2Zmc2V0LCBsb2NhdGlvbkJpdHMpOworICAgIH0KK30KKwordm9pZCBhZGp1
c3RBbmRKdW1wVG9UYXJnZXQoQ29udGV4dCYgY29udGV4dCwgVk0mIHZtLCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jaywgT1NSRXhpdCYgZXhpdCkKK3sK
Ky8vICAgIGRhdGFMb2coIiAgIHByb2JlIGFkanVzdEFuZEp1bXBUb1RhcmdldCBFeGVjU3RhdGUq
ID0gIiwgUmF3UG9pbnRlcihjb250ZXh0LmZwKCkpLCAiXG4iKTsKKyAgICBPU1JFeGl0U3RhdGUq
IGV4aXRTdGF0ZSA9IGV4aXQuZXhpdFN0YXRlLmdldCgpOworCisgICAgV1RGOjpzdG9yZUxvYWRG
ZW5jZSgpOyAvLyBUaGUgb3B0aW1pemluZyBjb21waWxlciBleHBlY3RzIHRoYXQgdGhlIE9TUiBl
eGl0IG1lY2hhbmlzbSB3aWxsIGV4ZWN1dGUgdGhpcyBmZW5jZS4KKyAgICB2bS5oZWFwLndyaXRl
QmFycmllcihiYXNlbGluZUNvZGVCbG9jayk7CisKKyAgICAvLyBXZSBiYXJyaWVyIGFsbCBpbmxp
bmVkIGZyYW1lcyAtLSBhbmQgbm90IGp1c3QgdGhlIGN1cnJlbnQgaW5saW5lIHN0YWNrIC0tCisg
ICAgLy8gYmVjYXVzZSB3ZSBkb24ndCBrbm93IHdoaWNoIGlubGluZWQgZnVuY3Rpb24gb3ducyB0
aGUgdmFsdWUgcHJvZmlsZSB0aGF0CisgICAgLy8gd2UnbGwgdXBkYXRlIHdoZW4gd2UgZXhpdC4g
SW4gdGhlIGNhc2Ugb2YgImYoKSB7IGEoKTsgYigpOyB9IiwgaWYgYm90aAorICAgIC8vIGEgYW5k
IGIgYXJlIGlubGluZWQsIHdlIG1pZ2h0IGV4aXQgaW5zaWRlIGIgZHVlIHRvIGEgYmFkIHZhbHVl
IGxvYWRlZAorICAgIC8vIGZyb20gYS4KKyAgICAvLyBGSVhNRTogTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZSBzaG91bGQgcmVtZW1iZXIgd2hpY2ggQ29kZUJsb2NrIG93bnMKKyAgICAvLyB0
aGUgdmFsdWUgcHJvZmlsZS4KKyAgICBJbmxpbmVDYWxsRnJhbWVTZXQqIGlubGluZUNhbGxGcmFt
ZXMgPSBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPmlubGluZUNhbGxGcmFtZXMu
Z2V0KCk7CisgICAgaWYgKGlubGluZUNhbGxGcmFtZXMpIHsKKyAgICAgICAgZm9yIChJbmxpbmVD
YWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA6ICppbmxpbmVDYWxsRnJhbWVzKQorICAgICAgICAg
ICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9j
ay5nZXQoKSk7CisgICAgfQorCisgICAgaWYgKGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZSkgeworLy8gICAgICAgIGRhdGFMb2coIiAgIHByb2JlIHByZS1JTkxJTkVkIEV4ZWNTdGF0
ZSogPSAiLCBSYXdQb2ludGVyKGNvbnRleHQuZnAoKSksICIgfCBvZmZzZXQgIiwgUmF3UG9pbnRl
cigodm9pZCopKHVpbnRwdHJfdClleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0KSwgIlxuIik7CisgICAgICAgIGNvbnRleHQuZnAoKSA9IGNvbnRleHQuZnA8dWlu
dDhfdCo+KCkgKyBleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0
ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKKy8vICAgICAgICBkYXRhTG9nKCIgICBwcm9iZSBJ
TkxJTkVkIEV4ZWNTdGF0ZSogPSAiLCBSYXdQb2ludGVyKGNvbnRleHQuZnAoKSksICIgfCBpbmxp
bmVDYWxsRnJhbWUgIiwgUmF3UG9pbnRlcihleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJh
bWUpLCAiXG4iKTsKKyAgICB9CisKKyAgICB2b2lkKiBqdW1wVGFyZ2V0ID0gZXhpdFN0YXRlLT5q
dW1wVGFyZ2V0OworICAgIEFTU0VSVChqdW1wVGFyZ2V0KTsKKworICAgIGNvbnRleHQuc3AoKSA9
IGNvbnRleHQuZnA8dWludDhfdCo+KCkgKyBleGl0U3RhdGUtPnN0YWNrUG9pbnRlck9mZnNldDsK
KyAgICBpZiAoZXhpdC5pc0V4Y2VwdGlvbkhhbmRsZXIoKSkgeworICAgICAgICAvLyBTaW5jZSB3
ZSdyZSBqdW1waW5nIHRvIG9wX2NhdGNoLCB3ZSBuZWVkIHRvIHNldCBjYWxsRnJhbWVGb3JDYXRj
aC4KKy8vICAgICAgICB2bS5jYWxsRnJhbWVGb3JDYXRjaCA9IGNvbnRleHQuZnA8RXhlY1N0YXRl
Kj4oKTsKKyAgICB9CisKKyAgICB2bS50b3BDYWxsRnJhbWUgPSBjb250ZXh0LmZwPEV4ZWNTdGF0
ZSo+KCk7CisgICAgY29udGV4dC5wYygpID0ganVtcFRhcmdldDsKK30KKworc3RhdGljIHZvaWQg
cHJpbnRPU1JFeGl0KENvbnRleHQmIGNvbnRleHQsIHVpbnQzMl90IG9zckV4aXRJbmRleCwgY29u
c3QgT1NSRXhpdCYgZXhpdCkKK3sKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBjb250ZXh0LmZwPEV4
ZWNTdGF0ZSo+KCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2so
KTsKKyAgICBDb2RlQmxvY2sqIGFsdGVybmF0aXZlID0gY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgp
OworICAgIEV4aXRLaW5kIGtpbmQgPSBleGl0Lm1fa2luZDsKKyAgICB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCA9IGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXg7CisKKyAgICBkYXRhTG9n
KCJTcGVjdWxhdGlvbiBmYWlsdXJlIGluICIsICpjb2RlQmxvY2spOworICAgIGRhdGFMb2coIiBA
IGV4aXQgIyIsIG9zckV4aXRJbmRleCwgIiAoYmMjIiwgYnl0ZWNvZGVPZmZzZXQsICIsICIsIGV4
aXRLaW5kVG9TdHJpbmcoa2luZCksICIpIHdpdGggIik7CisgICAgaWYgKGFsdGVybmF0aXZlKSB7
CisgICAgICAgIGRhdGFMb2coCisgICAgICAgICAgICAiZXhlY3V0ZUNvdW50ZXIgPSAiLCBhbHRl
cm5hdGl2ZS0+aml0RXhlY3V0ZUNvdW50ZXIoKSwKKyAgICAgICAgICAgICIsIHJlb3B0aW1pemF0
aW9uUmV0cnlDb3VudGVyID0gIiwgYWx0ZXJuYXRpdmUtPnJlb3B0aW1pemF0aW9uUmV0cnlDb3Vu
dGVyKCksCisgICAgICAgICAgICAiLCBvcHRpbWl6YXRpb25EZWxheUNvdW50ZXIgPSAiLCBhbHRl
cm5hdGl2ZS0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkpOworICAgIH0gZWxzZQorICAgICAg
ICBkYXRhTG9nKCJubyBhbHRlcm5hdGl2ZSBjb2RlIGJsb2NrIChpLmUuIHdlJ3ZlIGJlZW4gamV0
dGlzb25lZCkiKTsKKyAgICBkYXRhTG9nKCIsIG9zckV4aXRDb3VudGVyID0gIiwgY29kZUJsb2Nr
LT5vc3JFeGl0Q291bnRlcigpLCAiXG4iKTsKKyAgICBkYXRhTG9nKCIgICAgR1BScyBhdCB0aW1l
IG9mIGV4aXQ6Iik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51bWJl
ck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAgICAgICAgR1BSUmVnIGdwciA9IEdQUkluZm86OnRvUmVn
aXN0ZXIoaSk7CisgICAgICAgIGRhdGFMb2coIiAiLCBjb250ZXh0Lmdwck5hbWUoZ3ByKSwgIjoi
LCBSYXdQb2ludGVyKGNvbnRleHQuZ3ByPHZvaWQqPihncHIpKSk7CisgICAgfQorICAgIGRhdGFM
b2coIlxuIik7CisgICAgZGF0YUxvZygiICAgIEZQUnMgYXQgdGltZSBvZiBleGl0OiIpOworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytp
KSB7CisgICAgICAgIEZQUlJlZyBmcHIgPSBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpOworICAgICAg
ICBkYXRhTG9nKCIgIiwgY29udGV4dC5mcHJOYW1lKGZwciksICI6Iik7CisgICAgICAgIHVpbnQ2
NF90IGJpdHMgPSBjb250ZXh0LmZwcjx1aW50NjRfdD4oZnByKTsKKyAgICAgICAgZG91YmxlIHZh
bHVlID0gY29udGV4dC5mcHIoZnByKTsKKyAgICAgICAgZGF0YUxvZ0YoIiVsbHg6JWxmIiwgc3Rh
dGljX2Nhc3Q8bG9uZyBsb25nPihiaXRzKSwgdmFsdWUpOworICAgIH0KKyAgICBkYXRhTG9nKCJc
biIpOworfQorCiB2b2lkIE9TUkV4aXQ6OmVtaXRSZXN0b3JlQXJndW1lbnRzKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMpCiB7CiAgICAg
SGFzaE1hcDxNaW5pZmllZElELCBpbnQ+IGFscmVhZHlBbGxvY2F0ZWRBcmd1bWVudHM7IC8vIE1h
cHMgcGhhbnRvbSBhcmd1bWVudHMgbm9kZSBJRCB0byBvcGVyYW5kLgpAQCAtMTg0LDI4ICsxMTU2
LDYzIEBAIHZvaWQgSklUX09QRVJBVElPTiBPU1JFeGl0Ojpjb21waWxlT1NSRXgKICAgICB7CiAg
ICAgICAgIENDYWxsSGVscGVycyBqaXQoY29kZUJsb2NrKTsKIAorLy8gICAgICAgIGppdC5wcm9i
ZShbdm0sIGNvZGVCbG9ja10gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisvLyAgICAgICAg
ICAgIGRhdGFMb2coIiAgIGppdCBFeGVjU3RhdGUqID0gIiwgUmF3UG9pbnRlcihjb250ZXh0LmZw
PGNoYXIqPigpKSwgIiAiLCAodm0tPmNhbGxGcmFtZUZvckNhdGNoID8gIkNBVENIIjoiIiksICIg
Y2IgPSAiLCBjb2RlQmxvY2ssICJcbiIpOworLy8gICAgICAgIH0pOworICAgICAgICBpZiAoZ2V0
ZW52KCJ2ZXJib3NlIikpIGppdC5wcm9iZShbXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsK
KyAgICAgICAgICAgIGRhdGFMb2coIiAgIGppdCBAIiwgX19MSU5FX18sICIgc3A8IiwgUmF3UG9p
bnRlcihjb250ZXh0LnNwPGNoYXIqPigpKSwgIj4gZnA8IiwgUmF3UG9pbnRlcihjb250ZXh0LmZw
PGNoYXIqPigpKSwgIj4tMHgzOCBbIiwgUmF3UG9pbnRlcihjb250ZXh0LmZwPGNoYXIqPigpLTB4
MzgpLCAiXSA9ICIsIFJhd1BvaW50ZXIoKih2b2lkKiopKGNvbnRleHQuZnA8Y2hhcio+KCktMHgz
OCkpLCAiXG4iKTsKKyAgICAgICAgfSk7CisgICAgICAgIGppdC5wcm9iZShPU1JFeGl0OjpwcmV0
ZW5kRXhlY3V0ZU9TUkV4aXQsIHZtKTsKKyAgICAgICAgaWYgKGdldGVudigidmVyYm9zZSIpKSBq
aXQucHJvYmUoW10gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICBkYXRh
TG9nKCIgICBqaXQgQCIsIF9fTElORV9fLCAiIHNwPCIsIFJhd1BvaW50ZXIoY29udGV4dC5zcDxj
aGFyKj4oKSksICI+IGZwPCIsIFJhd1BvaW50ZXIoY29udGV4dC5mcDxjaGFyKj4oKSksICI+LTB4
MzggWyIsIFJhd1BvaW50ZXIoY29udGV4dC5mcDxjaGFyKj4oKS0weDM4KSwgIl0gPSAiLCBSYXdQ
b2ludGVyKCoodm9pZCoqKShjb250ZXh0LmZwPGNoYXIqPigpLTB4MzgpKSwgIlxuIik7CisgICAg
ICAgIH0pOworCiAgICAgICAgIGlmIChleGl0Lm1fa2luZCA9PSBHZW5lcmljVW53aW5kKSB7Cisv
LyAgICAgICAgICAgIGppdC5wcm9iZShbdm1dIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewor
Ly8gICAgICAgICAgICAgICAgZGF0YUxvZygiICAgaml0IEJFRk9SRSByZXN0b3JlQ2FsbGVlU2F2
ZXNGcm9tVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIgRXhlY1N0YXRlKiA9ICIsIFJhd1Bv
aW50ZXIoY29udGV4dC5mcCgpKSwgIiB2bS5jYWxsRnJhbWVGb3JDYXRjaCA9ICIsIFJhd1BvaW50
ZXIodm0tPmNhbGxGcmFtZUZvckNhdGNoKSwgIlxuIik7CisvLyAgICAgICAgICAgIH0pOyAvLyBt
bGFtCiAgICAgICAgICAgICAvLyBXZSBhcmUgYWN0aW5nIGFzIGEgZGVmYWN0byBvcF9jYXRjaCBi
ZWNhdXNlIHdlIGFycml2ZSBoZXJlIGZyb20gZ2VuZXJpY1Vud2luZCgpLgogICAgICAgICAgICAg
Ly8gU28sIHdlIG11c3QgcmVzdG9yZSBvdXIgY2FsbCBmcmFtZSBhbmQgc3RhY2sgcG9pbnRlci4K
ICAgICAgICAgICAgIGppdC5yZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1FbnRyeUZyYW1lQ2FsbGVl
U2F2ZXNCdWZmZXIoKnZtKTsKICAgICAgICAgICAgIGppdC5sb2FkUHRyKHZtLT5hZGRyZXNzT2ZD
YWxsRnJhbWVGb3JDYXRjaCgpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisvLyAgICAg
ICAgICAgIGppdC5wcm9iZShbXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKy8vICAgICAg
ICAgICAgICAgIGRhdGFMb2coIiAgIGppdCBBRlRFUiByZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1F
bnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIgRXhlY1N0YXRlKiA9ICIsIFJhd1BvaW50ZXIoY29u
dGV4dC5mcCgpKSwgIlxuIik7CisvLyAgICAgICAgICAgIH0pOyAvLyBtbGFtCiAgICAgICAgIH0K
ICAgICAgICAgaml0LmFkZFB0cigKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKGNvZGVCbG9jay0+c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwK
ICAgICAgICAgICAgIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgaWYgKGdldGVudigidmVyYm9zZSIpKSBqaXQu
cHJvYmUoW10gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICBkYXRhTG9n
KCIgICBqaXQgQCIsIF9fTElORV9fLCAiIHNwPCIsIFJhd1BvaW50ZXIoY29udGV4dC5zcDxjaGFy
Kj4oKSksICI+IGZwPCIsIFJhd1BvaW50ZXIoY29udGV4dC5mcDxjaGFyKj4oKSksICI+LTB4Mzgg
WyIsIFJhd1BvaW50ZXIoY29udGV4dC5mcDxjaGFyKj4oKS0weDM4KSwgIl0gPSAiLCBSYXdQb2lu
dGVyKCoodm9pZCoqKShjb250ZXh0LmZwPGNoYXIqPigpLTB4MzgpKSwgIlxuIik7CisgICAgICAg
IH0pOwogCiAgICAgICAgIGppdC5qaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpOworICAgICAg
ICBpZiAoZ2V0ZW52KCJ2ZXJib3NlIikpIGppdC5wcm9iZShbXSAoUHJvYmU6OkNvbnRleHQmIGNv
bnRleHQpIHsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgIGppdCBAIiwgX19MSU5FX18sICIgc3A8
IiwgUmF3UG9pbnRlcihjb250ZXh0LnNwPGNoYXIqPigpKSwgIj4gZnA8IiwgUmF3UG9pbnRlcihj
b250ZXh0LmZwPGNoYXIqPigpKSwgIj4tMHgzOC0weDM4IFsiLCBSYXdQb2ludGVyKGNvbnRleHQu
ZnA8Y2hhcio+KCktMHgzOCksICJdID0gIiwgUmF3UG9pbnRlcigqKHZvaWQqKikoY29udGV4dC5m
cDxjaGFyKj4oKS0weDM4KSksICJcbiIpOworICAgICAgICB9KTsKIAogICAgICAgICBpZiAoVU5M
SUtFTFkodm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlciAmJiBjb2RlQmxvY2stPmppdENvZGUoKS0+
ZGZnQ29tbW9uKCktPmNvbXBpbGF0aW9uKSkgewogICAgICAgICAgICAgUHJvZmlsZXI6OkRhdGFi
YXNlJiBkYXRhYmFzZSA9ICp2bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyOwogICAgICAgICAgICAg
UHJvZmlsZXI6OkNvbXBpbGF0aW9uKiBjb21waWxhdGlvbiA9IGNvZGVCbG9jay0+aml0Q29kZSgp
LT5kZmdDb21tb24oKS0+Y29tcGlsYXRpb24uZ2V0KCk7CiAKKyAgICAgICAgICAgIGlmIChnZXRl
bnYoInZlcmJvc2UiKSkgaml0LnByb2JlKFtdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewor
ICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgIGppdCBAIiwgX19MSU5FX18sICIgc3A8IiwgUmF3
UG9pbnRlcihjb250ZXh0LnNwPGNoYXIqPigpKSwgIj4gZnA8IiwgUmF3UG9pbnRlcihjb250ZXh0
LmZwPGNoYXIqPigpKSwgIj4tMHgzOCBbIiwgUmF3UG9pbnRlcihjb250ZXh0LmZwPGNoYXIqPigp
LTB4MzgpLCAiXSA9ICIsIFJhd1BvaW50ZXIoKih2b2lkKiopKGNvbnRleHQuZnA8Y2hhcio+KCkt
MHgzOCkpLCAiXG4iKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgUHJvZmlsZXI6Ok9T
UkV4aXQqIHByb2ZpbGVyRXhpdCA9IGNvbXBpbGF0aW9uLT5hZGRPU1JFeGl0KAogICAgICAgICAg
ICAgICAgIGV4aXRJbmRleCwgUHJvZmlsZXI6Ok9yaWdpblN0YWNrKGRhdGFiYXNlLCBjb2RlQmxv
Y2ssIGV4aXQubV9jb2RlT3JpZ2luKSwKICAgICAgICAgICAgICAgICBleGl0Lm1fa2luZCwgZXhp
dC5tX2tpbmQgPT0gVW5jb3VudGFibGVJbnZhbGlkYXRpb24pOworICAgICAgICAgICAgaWYgKGdl
dGVudigidmVyYm9zZSIpKSBqaXQucHJvYmUoW10gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7
CisgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgaml0IEAiLCBfX0xJTkVfXywgIiBzcDwiLCBS
YXdQb2ludGVyKGNvbnRleHQuc3A8Y2hhcio+KCkpLCAiPiBmcDwiLCBSYXdQb2ludGVyKGNvbnRl
eHQuZnA8Y2hhcio+KCkpLCAiPi0weDM4IFsiLCBSYXdQb2ludGVyKGNvbnRleHQuZnA8Y2hhcio+
KCktMHgzOCksICJdID0gIiwgUmF3UG9pbnRlcigqKHZvaWQqKikoY29udGV4dC5mcDxjaGFyKj4o
KS0weDM4KSksICJcbiIpOworICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBqaXQuYWRkNjQo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRy
ZXNzKHByb2ZpbGVyRXhpdC0+Y291bnRlckFkZHJlc3MoKSkpOworICAgICAgICAgICAgaWYgKGdl
dGVudigidmVyYm9zZSIpKSBqaXQucHJvYmUoW10gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7
CisgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgaml0IEAiLCBfX0xJTkVfXywgIiBzcDwiLCBS
YXdQb2ludGVyKGNvbnRleHQuc3A8Y2hhcio+KCkpLCAiPiBmcDwiLCBSYXdQb2ludGVyKGNvbnRl
eHQuZnA8Y2hhcio+KCkpLCAiPi0weDM4IFsiLCBSYXdQb2ludGVyKGNvbnRleHQuZnA8Y2hhcio+
KCktMHgzOCksICJdID0gIiwgUmF3UG9pbnRlcigqKHZvaWQqKikoY29udGV4dC5mcDxjaGFyKj4o
KS0weDM4KSksICJcbiIpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KIAorICAgICAgICBp
ZiAoZ2V0ZW52KCJ2ZXJib3NlIikpIGppdC5wcm9iZShbXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRl
eHQpIHsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgIGppdCBAIiwgX19MSU5FX18sICIgc3A8Iiwg
UmF3UG9pbnRlcihjb250ZXh0LnNwPGNoYXIqPigpKSwgIj4gZnA8IiwgUmF3UG9pbnRlcihjb250
ZXh0LmZwPGNoYXIqPigpKSwgIj4tMHgzOCBbIiwgUmF3UG9pbnRlcihjb250ZXh0LmZwPGNoYXIq
PigpLTB4MzgpLCAiXSA9ICIsIFJhd1BvaW50ZXIoKih2b2lkKiopKGNvbnRleHQuZnA8Y2hhcio+
KCktMHgzOCkpLCAiXG4iKTsKKyAgICAgICAgfSk7CiAgICAgICAgIGNvbXBpbGVFeGl0KGppdCwg
KnZtLCBleGl0LCBvcGVyYW5kcywgcmVjb3ZlcnkpOwogCiAgICAgICAgIExpbmtCdWZmZXIgcGF0
Y2hCdWZmZXIoaml0LCBjb2RlQmxvY2spOwpAQCAtMjI3LDYgKzEyMzQsOSBAQCB2b2lkIE9TUkV4
aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgCiB7CiAgICAgaml0LmppdEFzc2VydFRhZ3NJ
blBsYWNlKCk7CiAKKyAgICBpZiAoZ2V0ZW52KCJ2ZXJib3NlIikpIGppdC5wcm9iZShbXSAoUHJv
YmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgZGF0YUxvZygiICAgaml0IEAiLCBfX0xJ
TkVfXywgIiBzcDwiLCBSYXdQb2ludGVyKGNvbnRleHQuc3A8Y2hhcio+KCkpLCAiPiBmcDwiLCBS
YXdQb2ludGVyKGNvbnRleHQuZnA8Y2hhcio+KCkpLCAiPi0weDM4IFsiLCBSYXdQb2ludGVyKGNv
bnRleHQuZnA8Y2hhcio+KCktMHgzOCksICJdID0gIiwgUmF3UG9pbnRlcigqKHZvaWQqKikoY29u
dGV4dC5mcDxjaGFyKj4oKS0weDM4KSksICJcbiIpOworICAgIH0pOwogICAgIC8vIFByby1mb3Jt
YSBzdHVmZi4KICAgICBpZiAoT3B0aW9uczo6cHJpbnRFYWNoT1NSRXhpdCgpKSB7CiAgICAgICAg
IFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbyogZGVidWdJbmZvID0gbmV3IFNwZWN1bGF0aW9u
RmFpbHVyZURlYnVnSW5mbzsKQEAgLTI2OSw2ICsxMjc5LDkgQEAgdm9pZCBPU1JFeGl0Ojpjb21w
aWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogCiAgICAgLy8gUmVmaW5lIHNvbWUgYXJyYXkgYW5kL29y
IHZhbHVlIHByb2ZpbGUsIGlmIGFwcHJvcHJpYXRlLgogCisgICAgaWYgKGdldGVudigidmVyYm9z
ZSIpKSBqaXQucHJvYmUoW10gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGRh
dGFMb2coIiAgIGppdCBAIiwgX19MSU5FX18sICIgc3A8IiwgUmF3UG9pbnRlcihjb250ZXh0LnNw
PGNoYXIqPigpKSwgIj4gZnA8IiwgUmF3UG9pbnRlcihjb250ZXh0LmZwPGNoYXIqPigpKSwgIj4t
MHgzOCBbIiwgUmF3UG9pbnRlcihjb250ZXh0LmZwPGNoYXIqPigpLTB4MzgpLCAiXSA9ICIsIFJh
d1BvaW50ZXIoKih2b2lkKiopKGNvbnRleHQuZnA8Y2hhcio+KCktMHgzOCkpLCAiXG4iKTsKKyAg
ICB9KTsKICAgICBpZiAoISFleGl0Lm1fanNWYWx1ZVNvdXJjZSkgewogICAgICAgICBpZiAoZXhp
dC5tX2tpbmQgPT0gQmFkQ2FjaGUgfHwgZXhpdC5tX2tpbmQgPT0gQmFkSW5kZXhpbmdUeXBlKSB7
CiAgICAgICAgICAgICAvLyBJZiB0aGUgaW5zdHJ1Y3Rpb24gdGhhdCB0aGlzIG9yaWdpbmF0ZWQg
ZnJvbSBoYXMgYW4gYXJyYXkgcHJvZmlsZSwgdGhlbgpAQCAtNDI4LDYgKzE0NDEsOSBAQCB2b2lk
IE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgCiAgICAgU2NyYXRjaEJ1ZmZlciog
c2NyYXRjaEJ1ZmZlciA9IHZtLnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkgKiBvcGVyYW5kcy5zaXplKCkpOwogICAgIEVuY29kZWRKU1ZhbHVlKiBzY3JhdGNoID0g
c2NyYXRjaEJ1ZmZlciA/IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZl
ci0+ZGF0YUJ1ZmZlcigpKSA6IDA7CiAKKyAgICBpZiAoZ2V0ZW52KCJ2ZXJib3NlIikpIGppdC5w
cm9iZShbXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgZGF0YUxvZygiICAg
aml0IEAiLCBfX0xJTkVfXywgIiBzcDwiLCBSYXdQb2ludGVyKGNvbnRleHQuc3A8Y2hhcio+KCkp
LCAiPiBmcDwiLCBSYXdQb2ludGVyKGNvbnRleHQuZnA8Y2hhcio+KCkpLCAiPi0weDM4IFsiLCBS
YXdQb2ludGVyKGNvbnRleHQuZnA8Y2hhcio+KCktMHgzOCksICJdID0gIiwgUmF3UG9pbnRlcigq
KHZvaWQqKikoY29udGV4dC5mcDxjaGFyKj4oKS0weDM4KSksICJcbiIpOworICAgIH0pOwogICAg
IGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7ICsraW5kZXgp
IHsKICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5kc1tpbmRl
eF07CiAKQEAgLTQ2Niw2ICsxNDgyLDkgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2Fs
bEhlbHBlcnMmIAogCiAgICAgLy8gU2F2ZSBhbGwgc3RhdGUgZnJvbSBGUFJzIGludG8gdGhlIHNj
cmF0Y2ggYnVmZmVyLgogCisgICAgaWYgKGdldGVudigidmVyYm9zZSIpKSBqaXQucHJvYmUoW10g
KFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGRhdGFMb2coIiAgIGppdCBAIiwg
X19MSU5FX18sICIgc3A8IiwgUmF3UG9pbnRlcihjb250ZXh0LnNwPGNoYXIqPigpKSwgIj4gZnA8
IiwgUmF3UG9pbnRlcihjb250ZXh0LmZwPGNoYXIqPigpKSwgIj4tMHgzOCBbIiwgUmF3UG9pbnRl
cihjb250ZXh0LmZwPGNoYXIqPigpLTB4MzgpLCAiXSA9ICIsIFJhd1BvaW50ZXIoKih2b2lkKiop
KGNvbnRleHQuZnA8Y2hhcio+KCktMHgzOCkpLCAiXG4iKTsKKyAgICB9KTsKICAgICBmb3IgKHNp
emVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4KSB7CiAgICAg
ICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhdOwogCkBA
IC00ODcsNiArMTUwNiw5IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJz
JiAKICAgICAvLyBkbyB0aGlzIGV2ZW4gZm9yIHN0YXRlIHRoYXQncyBhbHJlYWR5IGluIHRoZSBy
aWdodCBwbGFjZSBvbiB0aGUgc3RhY2suCiAgICAgLy8gSXQgbWFrZXMgdGhpbmdzIHNpbXBsZXIg
bGF0ZXIuCiAKKyAgICBpZiAoZ2V0ZW52KCJ2ZXJib3NlIikpIGppdC5wcm9iZShbXSAoUHJvYmU6
OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgZGF0YUxvZygiICAgaml0IEAiLCBfX0xJTkVf
XywgIiBzcDwiLCBSYXdQb2ludGVyKGNvbnRleHQuc3A8Y2hhcio+KCkpLCAiPiBmcDwiLCBSYXdQ
b2ludGVyKGNvbnRleHQuZnA8Y2hhcio+KCkpLCAiPi0weDM4IFsiLCBSYXdQb2ludGVyKGNvbnRl
eHQuZnA8Y2hhcio+KCktMHgzOCksICJdID0gIiwgUmF3UG9pbnRlcigqKHZvaWQqKikoY29udGV4
dC5mcDxjaGFyKj4oKS0weDM4KSksICJcbiIpOworICAgIH0pOwogICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7ICsraW5kZXgpIHsKICAgICAgICAgY29u
c3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5kc1tpbmRleF07CiAKQEAgLTUwMCw2
ICsxNTIyLDIxIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAg
ICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgY2FzZSBTdHJpY3RJ
bnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgIGppdC5sb2FkNjQoQXNzZW1ibHlI
ZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgR1BSSW5mbzo6
cmVnVDApOworICAgICAgICAgICAgeyAvLyBtbGFtIFRFU1Qgc2NyaWJibGUKKyAgICAgICAgICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgdnIgPSByZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAg
ICAgICAgICAgICAgICBqaXQucHJvYmUoW3ZyXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsK
KyAgICAgICAgICAgICAgICAgICAgdm9pZCogcmVzdG9yZUFkZHJlc3MgPSBjb250ZXh0LmZwPGNo
YXIqPigpICsgdnIub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpOworICAgICAgICAgICAgICAg
ICAgICBpZiAocmVzdG9yZUFkZHJlc3MgPCBjb250ZXh0LnNwPHZvaWQqPigpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LmdwcihHUFJJbmZvOjpyZWdUMCkgPSAweGJhZGJlZWYw
OyAvLyBzY3JpYmJsZSBpdCEhIQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB9IC8vIG1sYW0gVEVTVAorICAgICAgICAgICAgaWYgKGdldGVu
digidmVyYm9zZSIpKSB7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZyID0gcmVj
b3ZlcnkudmlydHVhbFJlZ2lzdGVyKCk7CisgICAgICAgICAgICAgICAgaml0LnByb2JlKFt2ciwg
dGVjaG5pcXVlID0gcmVjb3ZlcnkudGVjaG5pcXVlKCksIHNjcmF0Y2gsIGluZGV4XSAoUHJvYmU6
OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgaml0
ICIsIHRlY2huaXF1ZSwgIiBpbmRleCAiLCBpbmRleCwgIiBvcGVyYW5kICIsIChpbnQpdnIub2Zm
c2V0KCksICIgc3AgIiwgUmF3UG9pbnRlcihjb250ZXh0LnNwPGNoYXIqPigpKSwgIiBmcCAiLCBS
YXdQb2ludGVyKGNvbnRleHQuZnA8Y2hhcio+KCkpLCAiIFsiLCBSYXdQb2ludGVyKGNvbnRleHQu
ZnA8Y2hhcio+KCkgKyB2ci5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCAiXSBAYWRkcmVz
c0ZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSkgPSAiLCBSYXdQb2ludGVyKGNvbnRleHQu
Z3ByPHZvaWQqPihHUFJJbmZvOjpyZWdUMCkpLCAiIHNjcmF0Y2hBZGRyOiAiLCBSYXdQb2ludGVy
KHNjcmF0Y2ggKyBpbmRleCksICJcbiIpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBp
bmRleCk7CiAgICAgICAgICAgICBicmVhazsKICNlbHNlCkBAIC01MzEsNiArMTU2OCw5IEBAIHZv
aWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAgICAgICAgIC1qaXQu
Y29kZUJsb2NrKCktPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPnJlcXVpcmVkUmVnaXN0ZXJDb3Vu
dEZvckV4aXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpmcmFt
ZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAK
Ky8vICAgIGppdC5wcm9iZShbXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKy8vICAgICAg
ICBkYXRhTG9nKCIgICBqaXQgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcyBFeGVjU3RhdGUqID0gIiwg
UmF3UG9pbnRlcihjb250ZXh0LmZwKCkpLCAiXG4iKTsKKy8vICAgIH0pOyAvLyBtbGFtCiAgICAg
Ly8gUmVzdG9yZSB0aGUgREZHIGNhbGxlZSBzYXZlcyBhbmQgdGhlbiBzYXZlIHRoZSBvbmVzIHRo
ZSBiYXNlbGluZSBKSVQgdXNlcy4KICAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwog
ICAgIGppdC5lbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGppdC5iYXNlbGluZUNvZGVCbG9jaygpKTsK
QEAgLTUzOCw2ICsxNTc4LDkgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBl
cnMmIAogICAgIC8vIFRoZSB0YWcgcmVnaXN0ZXJzIGFyZSBuZWVkZWQgdG8gbWF0ZXJpYWxpemUg
cmVjb3ZlcmllcyBiZWxvdy4KICAgICBqaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3Rl
cnMoKTsKIAorLy8gICAgaml0LnByb2JlKFtdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewor
Ly8gICAgICAgIGRhdGFMb2coIiAgIGppdCBjb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNh
bGxlZVNhdmVzQnVmZmVyIEV4ZWNTdGF0ZSogPSAiLCBSYXdQb2ludGVyKGNvbnRleHQuZnAoKSks
ICJcbiIpOworLy8gICAgfSk7IC8vIG1sYW0KICAgICBpZiAoZXhpdC5pc0V4Y2VwdGlvbkhhbmRs
ZXIoKSkKICAgICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2
ZXNCdWZmZXIodm0pOwogCkBAIC01NTIsNiArMTU5NSw3IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGls
ZUV4aXQoQ0NhbGxIZWxwZXJzJiAKIAogICAgICAgICBpbnQgb3BlcmFuZCA9IHJlZy5vZmZzZXQo
KTsKIAorICAgICAgICBhdXRvIHRlY2huaXF1ZSA9IHJlY292ZXJ5LnRlY2huaXF1ZSgpOyAvLyBt
bGFtCiAgICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2Fz
ZSBEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgIGNhc2UgSW5GUFI6CkBAIC02NDYsMTEgKzE2
OTAsNDAgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogCiAgICAg
ICAgIGNhc2UgVW5ib3hlZERvdWJsZUluRlBSOgogICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNl
ZEluSlNTdGFjazoKKyAgICAgICAgLy8gbWxhbQorICAgICAgICBpZiAoZ2V0ZW52KCJ2ZXJib3Nl
IikpIGppdC5wcm9iZShbdGVjaG5pcXVlLCBvcGVyYW5kXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRl
eHQpIHsKKyAgICAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGNvbnRleHQuZnA8RXhlY1N0YXRl
Kj4oKTsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5yKG9wZXJhbmQpLmpzVmFs
dWUoKTsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICBqaXQgcHJlLVJFQ09WRVIgc3AgIiwgUmF3
UG9pbnRlcihjb250ZXh0LnNwPHZvaWQqPigpKSwgIiBvcGVyYW5kICIsIG9wZXJhbmQsICIgIiwg
dGVjaG5pcXVlLCAiPCIsIChpbnQpdGVjaG5pcXVlLCAiPiBbIiwgUmF3UG9pbnRlcigmZXhlYy0+
dW5jaGVja2VkUihvcGVyYW5kKSksICJdICIsIGZvcm1hdCgiMHglMGxseCIsIEpTVmFsdWU6OmVu
Y29kZSh2YWx1ZSkpLCAiIHwgIik7CisvLyAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
ZnJhbWUuZ2V0T3BlcmFuZDxKU1ZhbHVlPihvcGVyYW5kKTsKKy8vICAgICAgICAgICAgaWYgKHZh
bHVlLmlzQ2VsbCgpICYmICFKU0RvbGxhclZNUHJvdG90eXBlOjppc1ZhbGlkQ2VsbCgmdm0uaGVh
cCwgdmFsdWUuYXNDZWxsKCkpKQorLy8gICAgICAgICAgICAgICAgZGF0YUxvZygiSW52YWxpZCBK
U1ZhbHVlIChub3QgdmFsaWQgY2VsbCkiKTsKKy8vICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKHZhbHVlKTsK
KyAgICAgICAgICAgIGRhdGFMb2coIlxuIik7CisgICAgICAgIH0pOworICAgICAgICAvL21sYW0g
Ki8KICAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihz
Y3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICBqaXQubG9hZERv
dWJsZShNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCksIEZQUkluZm86OmZw
UmVnVDApOworICAgICAgICAvLyBtbGFtCisgICAgICAgIGlmIChnZXRlbnYoInZlcmJvc2UiKSAm
JiByZWNvdmVyeS50ZWNobmlxdWUoKSA9PSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2spIGppdC5w
cm9iZShbdGVjaG5pcXVlLCBvcGVyYW5kLCBzY3JhdGNoLCBpbmRleF0gKFByb2JlOjpDb250ZXh0
JiBjb250ZXh0KSB7CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgaml0IEAiLCBfX0xJTkVfXywg
IiBmcHIgPSAiLCBmb3JtYXQoIjB4JTBsbHgiLCBjb250ZXh0LmZwcjx1aW50NjRfdD4oRlBSSW5m
bzo6ZnBSZWdUMCkpLCAiIHNjcmF0Y2hBZGRyOiAiLCBSYXdQb2ludGVyKHNjcmF0Y2ggKyBpbmRl
eCksICJcbiIpOworICAgICAgICB9KTsKKyAgICAgICAgLy9tbGFtICovCiAgICAgICAgICAgICBq
aXQucHVyaWZ5TmFOKEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAvLyBtbGFtCisgICAgICAg
IGlmIChnZXRlbnYoInZlcmJvc2UiKSAmJiByZWNvdmVyeS50ZWNobmlxdWUoKSA9PSBEb3VibGVE
aXNwbGFjZWRJbkpTU3RhY2spIGppdC5wcm9iZShbdGVjaG5pcXVlLCBvcGVyYW5kXSAoUHJvYmU6
OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICBqaXQgQCIsIF9f
TElORV9fLCAiIGZwciA9ICIsIGZvcm1hdCgiMHglMGxseCIsIGNvbnRleHQuZnByPHVpbnQ2NF90
PihGUFJJbmZvOjpmcFJlZ1QwKSksICJcbiIpOworICAgICAgICB9KTsKKyAgICAgICAgLy9tbGFt
ICovCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgIGppdC5ib3hEb3VibGUoRlBSSW5m
bzo6ZnBSZWdUMCwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAvLyBtbGFtCisgICAgICAgIGlm
IChnZXRlbnYoInZlcmJvc2UiKSAmJiByZWNvdmVyeS50ZWNobmlxdWUoKSA9PSBEb3VibGVEaXNw
bGFjZWRJbkpTU3RhY2spIGppdC5wcm9iZShbdGVjaG5pcXVlLCBvcGVyYW5kXSAoUHJvYmU6OkNv
bnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICBqaXQgQCIsIF9fTElO
RV9fLCAiIGJveGVkID0gIiwgZm9ybWF0KCIweCUwbGx4IiwgY29udGV4dC5ncHIoR1BSSW5mbzo6
cmVnVDApKSwgIlxuIik7CisgICAgICAgIH0pOworICAgICAgICAvL21sYW0gKi8KICAgICAgICAg
ICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NG
b3Iob3BlcmFuZCkpOwogI2Vsc2UKICAgICAgICAgICAgIGppdC5zdG9yZURvdWJsZShGUFJJbmZv
OjpmcFJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwpAQCAtNjgx
LDYgKzE3NTQsMjAgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAog
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CisgICAgICAgIC8vIG1sYW0KKyAgICAgICAgaWYgKGdldGVudigidmVy
Ym9zZSIpKSBqaXQucHJvYmUoW3RlY2huaXF1ZSwgb3BlcmFuZF0gKFByb2JlOjpDb250ZXh0JiBj
b250ZXh0KSB7CisgICAgICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBjb250ZXh0LmZwPEV4ZWNT
dGF0ZSo+KCk7CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+cihvcGVyYW5kKS5q
c1ZhbHVlKCk7CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgaml0IFJFQ09WRVIgc3AgIiwgUmF3
UG9pbnRlcihjb250ZXh0LnNwPHZvaWQqPigpKSwgIiBvcGVyYW5kICIsIG9wZXJhbmQsICIgIiwg
dGVjaG5pcXVlLCAiPCIsIChpbnQpdGVjaG5pcXVlLCAiPiBbIiwgUmF3UG9pbnRlcigmZXhlYy0+
dW5jaGVja2VkUihvcGVyYW5kKSksICJdICIsIGZvcm1hdCgiMHglMGxseCIsIEpTVmFsdWU6OmVu
Y29kZSh2YWx1ZSkpLCAiIHwgIik7CisvLyAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
ZnJhbWUuZ2V0T3BlcmFuZDxKU1ZhbHVlPihvcGVyYW5kKTsKKy8vICAgICAgICAgICAgaWYgKHZh
bHVlLmlzQ2VsbCgpICYmICFKU0RvbGxhclZNUHJvdG90eXBlOjppc1ZhbGlkQ2VsbCgmdm0uaGVh
cCwgdmFsdWUuYXNDZWxsKCkpKQorLy8gICAgICAgICAgICAgICAgZGF0YUxvZygiSW52YWxpZCBK
U1ZhbHVlIChub3QgdmFsaWQgY2VsbCkiKTsKKy8vICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKHZhbHVlKTsK
KyAgICAgICAgICAgIGRhdGFMb2coIlxuIik7CisgICAgICAgIH0pOworICAgICAgICAvL21sYW0g
Ki8KICAgICB9CiAKICAgICAvLyBOb3cgdGhhdCB0aGluZ3Mgb24gdGhlIHN0YWNrIGFyZSByZWNv
dmVyZWQsIGRvIHRoZSBhcmd1bWVudHMgcmVjb3ZlcnkuIFdlIGFzc3VtZSB0aGF0IGFyZ3VtZW50
cwpAQCAtNjg5LDYgKzE3NzYsOSBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVs
cGVycyYgCiAgICAgLy8gTm90ZSB0aGF0IHdlIGFsc28gcm91Z2hseSBhc3N1bWUgdGhhdCB0aGUg
YXJndW1lbnRzIG1pZ2h0IHN0aWxsIGJlIG1hdGVyaWFsaXplZCBvdXRzaWRlIG9mIGl0cwogICAg
IC8vIGlubGluZSBjYWxsIGZyYW1lIHNjb3BlIC0gYnV0IGZvciBub3cgdGhlIERGRyB3b3VsZG4n
dCBkbyB0aGF0LgogCisvLyAgICBqaXQucHJvYmUoW10gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0
KSB7CisvLyAgICAgICAgZGF0YUxvZygiICAgaml0IGVtaXRSZXN0b3JlQXJndW1lbnRzIEV4ZWNT
dGF0ZSogPSAiLCBSYXdQb2ludGVyKGNvbnRleHQuZnAoKSksICJcbiIpOworLy8gICAgfSk7IC8v
IG1sYW0KICAgICBlbWl0UmVzdG9yZUFyZ3VtZW50cyhqaXQsIG9wZXJhbmRzKTsKIAogICAgIC8v
IEFkanVzdCB0aGUgb2xkIEpJVCdzIGV4ZWN1dGUgY291bnRlci4gU2luY2Ugd2UgYXJlIGV4aXRp
bmcgT1NSLCB3ZSBrbm93CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQu
aAkocmV2aXNpb24gMjIxNDY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMywxNyBAQAogI2luY2x1ZGUgIk1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgogI2luY2x1
ZGUgIlZhbHVlUmVjb3ZlcnkuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1jbGFzcyBDQ2FsbEhlbHBlcnM7CituYW1lc3BhY2UgUHJvYmUgeworY2xhc3Mg
Q29udGV4dDsKK30gLy8gbmFtZXNwYWNlIFByb2JlCisKK25hbWVzcGFjZSBQcm9maWxlciB7Citj
bGFzcyBPU1JFeGl0OworfSAvLyBuYW1lc3BhY2UgUHJvZmlsZXIKIAogbmFtZXNwYWNlIERGRyB7
CiAKQEAgLTkxLDYgKzk4LDM0IEBAIHByaXZhdGU6CiAgICAgU3BlY3VsYXRpb25SZWNvdmVyeVR5
cGUgbV90eXBlOwogfTsKIAorc3RydWN0IE9TUkV4aXRTdGF0ZSA6IFJlZkNvdW50ZWQ8T1NSRXhp
dFN0YXRlPiB7CisgICAgT1NSRXhpdFN0YXRlKE9TUkV4aXRCYXNlJiBleGl0LCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jaywKKyAgICAgICAgT3BlcmFu
ZHM8VmFsdWVSZWNvdmVyeT4mIG9wZXJhbmRzLCBTcGVjdWxhdGlvblJlY292ZXJ5KiByZWNvdmVy
eSwgcHRyZGlmZl90IHN0YWNrUG9pbnRlck9mZnNldCwKKyAgICAgICAgaW50MzJfdCBhY3RpdmVU
aHJlc2hvbGQsIGRvdWJsZSBtZW1vcnlVc2FnZUFkanVzdGVkVGhyZXNob2xkLCB2b2lkKiBqdW1w
VGFyZ2V0KQorICAgICAgICA6IGV4aXQoZXhpdCkKKyAgICAgICAgLCBjb2RlQmxvY2soY29kZUJs
b2NrKQorICAgICAgICAsIGJhc2VsaW5lQ29kZUJsb2NrKGJhc2VsaW5lQ29kZUJsb2NrKQorICAg
ICAgICAsIG9wZXJhbmRzKG9wZXJhbmRzKQorICAgICAgICAsIHJlY292ZXJ5KHJlY292ZXJ5KQor
ICAgICAgICAsIHN0YWNrUG9pbnRlck9mZnNldChzdGFja1BvaW50ZXJPZmZzZXQpCisgICAgICAg
ICwgYWN0aXZlVGhyZXNob2xkKGFjdGl2ZVRocmVzaG9sZCkKKyAgICAgICAgLCBtZW1vcnlVc2Fn
ZUFkanVzdGVkVGhyZXNob2xkKG1lbW9yeVVzYWdlQWRqdXN0ZWRUaHJlc2hvbGQpCisgICAgICAg
ICwganVtcFRhcmdldChqdW1wVGFyZ2V0KQorICAgIHsgfQorCisgICAgT1NSRXhpdEJhc2UmIGV4
aXQ7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2s7CisgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNv
ZGVCbG9jazsKKyAgICBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiBvcGVyYW5kczsKKyAgICBTcGVj
dWxhdGlvblJlY292ZXJ5KiByZWNvdmVyeTsKKyAgICBwdHJkaWZmX3Qgc3RhY2tQb2ludGVyT2Zm
c2V0OworICAgIHVpbnQzMl90IGFjdGl2ZVRocmVzaG9sZDsKKyAgICBkb3VibGUgbWVtb3J5VXNh
Z2VBZGp1c3RlZFRocmVzaG9sZDsKKyAgICB2b2lkKiBqdW1wVGFyZ2V0OworCisgICAgUHJvZmls
ZXI6Ok9TUkV4aXQqIHByb2ZpbGVyRXhpdCB7IG51bGxwdHIgfTsKK307CisKIC8vID09PSBPU1JF
eGl0ID09PQogLy8KIC8vIFRoaXMgc3RydWN0dXJlIGRlc2NyaWJlcyBob3cgdG8gZXhpdCB0aGUg
c3BlY3VsYXRpdmUgcGF0aCBieQpAQCAtOTgsMTEgKzEzMywxNyBAQCBwcml2YXRlOgogc3RydWN0
IE9TUkV4aXQgOiBwdWJsaWMgT1NSRXhpdEJhc2UgewogICAgIE9TUkV4aXQoRXhpdEtpbmQsIEpT
VmFsdWVTb3VyY2UsIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUsIFNwZWN1bGF0aXZlSklU
KiwgdW5zaWduZWQgc3RyZWFtSW5kZXgsIHVuc2lnbmVkIHJlY292ZXJ5SW5kZXggPSBVSU5UX01B
WCk7CiAKKyAgICAvLyBtbGFtIFRFU1QgKi8KKyAgICBzdGF0aWMgdm9pZCBwcmV0ZW5kRXhlY3V0
ZU9TUkV4aXQoUHJvYmU6OkNvbnRleHQmKTsKKyAgICBzdGF0aWMgdm9pZCB2ZXJpZnlFeGVjdXRl
T1NSRXhpdChQcm9iZTo6Q29udGV4dCYpOworICAgIC8vIG1sYW0gVEVTVCAqLworICAgIHN0YXRp
YyB2b2lkIGV4ZWN1dGVPU1JFeGl0KFByb2JlOjpDb250ZXh0Jik7CiAgICAgc3RhdGljIHZvaWQg
SklUX09QRVJBVElPTiBjb21waWxlT1NSRXhpdChFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiAK
ICAgICB1bnNpZ25lZCBtX3BhdGNoYWJsZUNvZGVPZmZzZXQgeyAwIH07CiAgICAgCiAgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIG1fY29kZTsKKyAgICBSZWZQdHI8T1NSRXhpdFN0YXRlPiBleGl0
U3RhdGU7CiAgICAgCiAgICAgSlNWYWx1ZVNvdXJjZSBtX2pzVmFsdWVTb3VyY2U7CiAgICAgTWV0
aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBtX3ZhbHVlUHJvZmlsZTsKQEAgLTEzMiw2ICsxNzMs
OSBAQCBzdHJ1Y3QgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvIHsKICAgICB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldDsKIH07CiAKK3ZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhQcm9iZTo6
Q29udGV4dCYsIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2ssIGNvbnN0IE9TUkV4aXRCYXNl
Jik7Cit2b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChQcm9iZTo6Q29udGV4dCYsIFZNJiwgQ29k
ZUJsb2NrKiwgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jaywgT1NSRXhpdCYpOworCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
ckNvbW1vbi5jcHAJKHJldmlzaW9uIDIyMTQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDkg
KzM0LDExIEBACiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKKyNpbmNsdWRlICJQcm9i
ZUNvbnRleHQuaCIgLy8gbWxhbQogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
Ky8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogdm9pZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKIHsKICAgICBpZiAoIWV4aXRLaW5k
TWF5SmV0dGlzb24oZXhpdC5tX2tpbmQpKSB7CkBAIC00Nyw2ICs0OSwxMSBAQCB2b2lkIGhhbmRs
ZUV4aXRDb3VudHMoQ0NhbGxIZWxwZXJzJiBqaXQsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
Ky8vICAgIGlmIChqaXQuY29kZUJsb2NrKCktPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQp
IHsKKy8vICAgICAgICBqaXQucHJvYmUoW10gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7Cisv
LyAgICAgICAgICAgIGRhdGFMb2coIiAgIGppdCBoYW5kbGVFeGl0Q291bnRzIEV4ZWNTdGF0ZSog
PSAiLCBSYXdQb2ludGVyKGNvbnRleHQuZnAoKSksICJcbiIpOworLy8gICAgICAgIH0pOworLy8g
ICAgfQogICAgIGppdC5hZGQzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgQXNz
ZW1ibHlIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoJmV4aXQubV9jb3VudCkpOwogICAgIAogICAg
IGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2NrKCkp
LCBHUFJJbmZvOjpyZWdUMCk7CkBAIC0xNDMsOCArMTUwLDE0IEBAIHZvaWQgaGFuZGxlRXhpdENv
dW50cyhDQ2FsbEhlbHBlcnMmIGppdCwKICAgICBkb25lQWRqdXN0aW5nLmxpbmsoJmppdCk7CiB9
CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVz
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKIHsKKy8vICAgIGlm
IChqaXQuY29kZUJsb2NrKCktPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpIHsKKy8vICAg
ICAgICBqaXQucHJvYmUoW10gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisvLyAgICAgICAg
ICAgIGRhdGFMb2coIiAgIGppdCByZWlmeUlubGluZWRDYWxsRnJhbWVzIEV4ZWNTdGF0ZSogPSAi
LCBSYXdQb2ludGVyKGNvbnRleHQuZnAoKSksICJcbiIpOworLy8gICAgICAgIH0pOworLy8gICAg
fQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgbGVhdmUgaG9sZXMgb24gdGhlIHN0YWNrIHdo
ZW4gcGVyZm9ybWluZyBhbiBPU1IgZXhpdAogICAgIC8vIGluIHByZXNlbmNlIG9mIGlubGluZWQg
dGFpbCBjYWxscy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ3NTExCkBAIC0yNTIsNiArMjY1LDcgQEAgdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVz
KENDYWxsSGVscGVycwogICAgIH0KIH0KIAorLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2Ug
Zml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiBzdGF0
aWMgdm9pZCBvc3JXcml0ZUJhcnJpZXIoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBvd25lciwg
R1BSUmVnIHNjcmF0Y2gpCiB7CiAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIG93bmVySXNSZW1l
bWJlcmVkT3JJbkVkZW4gPSBqaXQuYmFycmllckJyYW5jaFdpdGhvdXRGZW5jZShvd25lcik7CkBA
IC0yNzIsOCArMjg2LDE0IEBAIHN0YXRpYyB2b2lkIG9zcldyaXRlQmFycmllcihDQ2FsbEhlbHBl
cnMKICAgICBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuLmxpbmsoJmppdCk7CiB9CiAKKy8vIEZJ
WE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogdm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0mIHZtLCBD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiB7CisvLyAgICBpZiAo
aml0LmNvZGVCbG9jaygpLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKSB7CisvLyAgICAg
ICAgaml0LnByb2JlKFtdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworLy8gICAgICAgICAg
ICBkYXRhTG9nKCIgICBqaXQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0IEV4ZWNTdGF0ZSogPSAiLCBS
YXdQb2ludGVyKGNvbnRleHQuZnAoKSksICJcbiIpOworLy8gICAgICAgIH0pOworLy8gICAgfQog
ICAgIGppdC5tZW1vcnlGZW5jZSgpOwogICAgIAogICAgIGppdC5tb3ZlKApAQCAtMjk4LDggKzMx
OCwxOSBAQCB2b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChWTSYgdm0sIENDYWxsCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBpZiAoZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQor
ICAgIGlmIChleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpIHsKKy8vICAgICAgICBp
ZiAoaml0LmNvZGVCbG9jaygpLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKSB7CisvLyAg
ICAgICAgICAgIGppdC5wcm9iZShbb2Zmc2V0ID0gZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lLT5zdGFja09mZnNldF0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisvLyAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICBqaXQgcHJlLUlOTElORWQgRXhlY1N0YXRlKiA9ICIsIFJh
d1BvaW50ZXIoY29udGV4dC5mcCgpKSwgIiB8IG9mZnNldCAiLCBSYXdQb2ludGVyKCh2b2lkKiko
dWludHB0cl90KW9mZnNldCksICJcbiIpOworLy8gICAgICAgICAgICB9KTsKKy8vICAgICAgICB9
CiAgICAgICAgIGppdC5hZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZXhpdC5t
X2NvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAqIHNpemVvZihFbmNvZGVk
SlNWYWx1ZSkpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisvLyAgICAgICAgaWYgKGpp
dC5jb2RlQmxvY2soKS0+aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCkgeworLy8gICAgICAg
ICAgICBqaXQucHJvYmUoW2ljZiA9IGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZV0g
KFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisvLyAgICAgICAgICAgICAgICBkYXRhTG9nKCIg
ICBqaXQgSU5MSU5FZCBFeGVjU3RhdGUqID0gIiwgUmF3UG9pbnRlcihjb250ZXh0LmZwKCkpLCAi
IHwgaW5saW5lQ2FsbEZyYW1lICIsIFJhd1BvaW50ZXIoaWNmKSwgIlxuIik7CisvLyAgICAgICAg
ICAgIH0pOworLy8gICAgICAgIH0KKyAgICB9CiAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja0Zv
ckV4aXQgPSBqaXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoZXhpdC5tX2NvZGVPcmlnaW4pOwogICAg
IFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+JiBkZWNvZGVkQ29kZU1hcCA9IGppdC5k
ZWNvZGVkQ29kZU1hcEZvcihjb2RlQmxvY2tGb3JFeGl0KTsKQEAgLTMxOCw2ICszNDksOCBAQCB2
b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChWTSYgdm0sIENDYWxsCiAgICAgfQogICAgIAogICAg
IGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihqdW1wVGFyZ2V0KSwgR1BS
SW5mbzo6cmVnVDIpOworICAgIGlmIChqaXQuY29kZUJsb2NrKCktPmppdFR5cGUoKSA9PSBKSVRD
b2RlOjpERkdKSVQpCisgICAgICAgIGppdC5wcm9iZShPU1JFeGl0Ojp2ZXJpZnlFeGVjdXRlT1NS
RXhpdCwgJnZtKTsgLy8gbWxhbSBURVNUCiAgICAgaml0Lmp1bXAoR1BSSW5mbzo6cmVnVDIpOwog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNv
bW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dENvbXBpbGVyQ29tbW9uLmgJKHJldmlzaW9uIDIyMTQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDAsNiArNDAsNyBAQCB2b2lkIGhhbmRsZUV4aXRDb3VudHMoQ0NhbGxIZWxwZXJzJiwgY29uCiB2
b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJh
c2UmKTsKIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KFZNJiwgQ0NhbGxIZWxwZXJzJiwgY29u
c3QgT1NSRXhpdEJhc2UmKTsKIAorLy8gRklYTUU6IFRoaXMgd29uJ3QgYmUgbmVlZGVkIG9uY2Ug
d2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgSklUQ29kZVR5cGU+CiB2b2lkIGFkanVzdEZyYW1lQW5kU3RhY2tJ
bk9TUkV4aXRDb21waWxlclRodW5rKE1hY3JvQXNzZW1ibGVyJiBqaXQsIFZNKiB2bSwgSklUQ29k
ZTo6SklUVHlwZSBqaXRUeXBlKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMjE0NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYyLDYgKzEz
NjIsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlRGlyCiAgICAgCiAg
ICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOwogICAgIAorICAgIGRhdGFMb2co
IkluIG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4aXRcbiIpOwogICAgIENv
ZGVCbG9jayogY29kZUJsb2NrOwogICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgIGNv
ZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1lKGlubGluZUNhbGxG
cmFtZSk7CkBAIC0xMzkxLDYgKzEzOTIsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQ3JlYXRlQ2xvCiAgICAgCiAgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXAp
OwogICAgIAorICAgIGRhdGFMb2coIkluIG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50c0R1
cmluZ0V4aXRcbiIpOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrOwogICAgIGlmIChpbmxpbmVD
YWxsRnJhbWUpCiAgICAgICAgIGNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5l
Q2FsbEZyYW1lKGlubGluZUNhbGxGcmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1RodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUaHVua3MuY3BwCShyZXZpc2lvbiAyMjE0NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1RodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAsMTQgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRHZW5lcmF0aW9uVAogICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkRGRyBPU1IgZXhpdCBnZW5lcmF0aW9uIHRodW5rIikp
OwogfQogCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdFRodW5rR2VuZXJhdG9yKFZNKiB2
bSkKK3sKKyAgICBNYWNyb0Fzc2VtYmxlciBqaXQ7CisgICAgaml0LnByb2JlKE9TUkV4aXQ6OmV4
ZWN1dGVPU1JFeGl0LCB2bSk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JB
TF9USFVOS19JRCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiREZH
IE9TUiBleGl0IHRodW5rIikpOworfQorCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRW50cnlU
aHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgQXNzZW1ibHlIZWxwZXJzIGppdChudWxscHRy
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuaAkocmV2aXNpb24gMjIx
NDY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIFZNOwogCiBuYW1lc3BhY2UgREZHIHsKIAor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlz
aW9uIDIyMTQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBFeGVjdXRhYmxlQmFzZSogQXNz
ZW1ibHlIZWxwZXJzOjpleGVjdXRhCiAgICAgcmV0dXJuIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZy
YW1lLT5iYXNlbGluZUNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7CiB9CiAKKy8vIEZJWE1F
OiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc1MTQ1LgogVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4mIEFzc2Vt
Ymx5SGVscGVyczo6ZGVjb2RlZENvZGVNYXBGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAg
ICAgQVNTRVJUKGNvZGVCbG9jayA9PSBjb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNp
b24gMjIxNDY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTQ2NSw2ICsxNDY1LDcgQEAgcHVibGljOgogICAgIAogICAg
IHZvaWQgZW1pdER1bWJWaXJ0dWFsQ2FsbChWTSYsIENhbGxMaW5rSW5mbyopOwogICAgIAorICAg
IC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1LgogICAgIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVP
ZmZzZXQ+JiBkZWNvZGVkQ29kZU1hcEZvcihDb2RlQmxvY2sqKTsKIAogICAgIHZvaWQgbWFrZVNw
YWNlT25TdGFja0ZvckNDYWxsKCk7CkBAIC0xNjU2LDYgKzE2NTcsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKICAgICBDb2RlQmxvY2sqIG1fYmFzZWxpbmVDb2Rl
QmxvY2s7CiAKKyAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NS4KICAgICBIYXNoTWFwPENvZGVC
bG9jayosIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+PiBtX2RlY29kZWRDb2RlTWFw
czsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25z
LmNwcAkocmV2aXNpb24gMjIxNDY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRF
eGNlcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcsNiArODcsNyBAQCB2b2lkIGdlbmVy
aWNVbndpbmQoVk0qIHZtLCBFeGVjU3RhdGUqIGNhCiAgICAgQVNTRVJUKGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KGNhbGxGcmFtZSkgPCBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih2bS0+dG9wVk1F
bnRyeUZyYW1lKSk7CiAKICAgICB2bS0+Y2FsbEZyYW1lRm9yQ2F0Y2ggPSBjYWxsRnJhbWU7Cisv
LyAgICBkYXRhTG9nKCIgICBtbGFtIGdlbmVyaWNVbndpbmQpCiAgICAgdm0tPnRhcmdldE1hY2hp
bmVQQ0ZvclRocm93ID0gY2F0Y2hSb3V0aW5lOwogICAgIHZtLT50YXJnZXRJbnRlcnByZXRlclBD
Rm9yVGhyb3cgPSBjYXRjaFBDRm9ySW50ZXJwcmV0ZXI7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDIyMTQ2NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIyOTYsNiArMjI5Niw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVh
bGxvY2F0ZUIKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocmVzdWx0KTsKIH0K
IAorLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
T1NSV3JpdGVCYXJyaWVyKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBjZWxsKQogewogICAgIFZN
KiB2bSA9ICZleGVjLT52bSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgJKHJldmlzaW9uIDIyMTQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDUsNiArNDQ1LDcgQEAgY2hh
ciogSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlQgogY2hhciogSklUX09QRVJBVElP
TiBvcGVyYXRpb25SZWFsbG9jYXRlQnV0dGVyZmx5VG9Hcm93UHJvcGVydHlTdG9yYWdlKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0Kiwgc2l6ZV90IG5ld1NpemUpIFdURl9JTlRFUk5BTDsKIAogdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKEV4ZWNTdGF0ZSosIEpT
Q2VsbCopOworLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgZml4IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uT1NSV3JpdGVCYXJyaWVyKEV4ZWNTdGF0ZSosIEpTQ2VsbCopOwogCiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRXhjZXB0aW9uRnV6eihFeGVjU3RhdGUqKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9TUkV4aXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0LmgJKHJldmlz
aW9uIDIyMTQ2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9T
UkV4aXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw3ICs0Myw4IEBAIHB1YmxpYzoKICAgICAKICAgICB1
aW50NjRfdCogY291bnRlckFkZHJlc3MoKSB7IHJldHVybiAmbV9jb3VudGVyOyB9CiAgICAgdWlu
dDY0X3QgY291bnQoKSBjb25zdCB7IHJldHVybiBtX2NvdW50ZXI7IH0KLSAgICAKKyAgICB2b2lk
IGluY0NvdW50KCkgeyBtX2NvdW50ZXIrKzsgfQorCiAgICAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0
ZSopIGNvbnN0OwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuaAkocmV2aXNpb24gMjIxNDY0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAog
LyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUu
b3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQot
ICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MiwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChD
KSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTM0NCwxMiArMzQ0LDkgQEAgcHVibGljOgogICAgIHVpbnQzMl90IHRhZygp
IGNvbnN0OwogICAgIGludDMyX3QgcGF5bG9hZCgpIGNvbnN0OwogCi0jaWYgIUVOQUJMRShKSVQp
Ci0gICAgLy8gVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGJ5IHRoZSBMTEludCBDIExvb3AgaW50
ZXJwcmV0ZXIgd2hvIG5lZWRzCi0gICAgLy8gc3ludGhlc2l6ZSBKU1ZhbHVlIGZyb20gaXRzICJy
ZWdpc3RlciJzIGhvbGRpbmcgdGFnIGFuZCBwYXlsb2FkCi0gICAgLy8gdmFsdWVzLgorICAgIC8v
IFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBieSB0aGUgTExJbnQgQyBMb29wIGludGVycHJldGVy
IGFuZCBPU1JFeGl0IGNvZGUgd2hvIG5lZWRzCisgICAgLy8gc3ludGhlc2l6ZSBKU1ZhbHVlIGZy
b20gaXRzICJyZWdpc3RlciJzIGhvbGRpbmcgdGFnIGFuZCBwYXlsb2FkIHZhbHVlcy4KICAgICBl
eHBsaWNpdCBKU1ZhbHVlKGludDMyX3QgdGFnLCBpbnQzMl90IHBheWxvYWQpOwotI2VuZGlmCiAK
ICNlbGlmIFVTRShKU1ZBTFVFNjQpCiAgICAgLyoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMjIxNDY0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQwLDcgKzM0MCw3IEBAIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGlu
dCBpKQogICAgIHUuYXNCaXRzLnBheWxvYWQgPSBpOwogfQogCi0jaWYgIUVOQUJMRShKSVQpCisj
aWYgVVNFKEpTVkFMVUUzMl82NCkKIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGludDMyX3QgdGFn
LCBpbnQzMl90IHBheWxvYWQpCiB7CiAgICAgdS5hc0JpdHMudGFnID0gdGFnOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDIyMTQ2NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNjQsNiArMzY0LDEzIEBAIHN0YXRpYyB2b2lkIG92ZXJyaWRlRGVmYXVsdHMoKQog
I2lmICFIQVZFKE1BQ0hfRVhDRVBUSU9OUykKICAgICBPcHRpb25zOjp1c2VNYWNoRm9yRXhjZXB0
aW9ucygpID0gZmFsc2U7CiAjZW5kaWYKKyAgICAvLyBtbGFtIFRFU1QKKyAgICBjb25zdCBjaGFy
KiByZW9wdCA9IGdldGVudigicmVvcHQiKTsKKyAgICBpZiAocmVvcHQpIHsKKyAgICAgICAgaW50
IHZhbHVlID0gYXRvaShyZW9wdCk7CisgICAgICAgIE9wdGlvbnM6Om9zckV4aXRDb3VudEZvclJl
b3B0aW1pemF0aW9uKCkgPSB2YWx1ZTsgLy8gbWxhbSBURVNUCisgICAgfQorICAgIC8vIG1sYW0g
VEVTVCAqLwogfQogCiBzdGF0aWMgdm9pZCByZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320072</attachid>
            <date>2017-09-06 16:14:09 -0700</date>
            <delta_ts>2017-09-07 11:49:40 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-175144.patch</filename>
            <type>text/plain</type>
            <size>129393</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIxNzA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5OSBA
QAorMjAxNy0wOS0wNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
VXNlIEpJVCBwcm9iZXMgZm9yIERGRyBPU1IgZXhpdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzM0MzcwNTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBkb2VzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIDEuIFJlcGxhY2VzIG9z
ckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoKSB3aXRoIG9zckV4aXRUaHVua0dlbmVyYXRv
cigpLgorICAgICAgICAgICBXaGlsZSBvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKCkg
Z2VuZXJhdGVzIGEgdGh1bmsgdGhhdCBjb21waWxlcyBhCisgICAgICAgICAgIHVuaXF1ZSBPU1Ig
b2ZmcmFtcCBmb3IgZWFjaCBERkcgT1NSIGV4aXQgc2l0ZSwgb3NyRXhpdFRodW5rR2VuZXJhdG9y
KCkKKyAgICAgICAgICAgZ2VuZXJhdGVzIGEgdGh1bmsgdGhhdCBqdXN0IGV4ZWN1dGVzIHRoZSBP
U1IgZXhpdC4KKworICAgICAgICAgICBUaGUgb3NyRXhpdFRodW5rR2VuZXJhdG9yKCkgZ2VuZXJh
dGVkIHRodW5rIHdvcmtzIGJ5IHVzaW5nIGEgc2luZ2xlIEpJVCBwcm9iZQorICAgICAgICAgICB0
byBjYWxsIE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KCkuICBUaGUgSklUIHByb2JlIHRha2VzIGNh
cmUgb2YgcHJlc2VydmluZworICAgICAgICAgICBDUFUgcmVnaXN0ZXJzLCBhbmQgcHJvdmlkaW5n
IHRoZSBQcm9iZTo6U3RhY2sgbWVjaGFuaXNtIGZvciBtb2RpZnlpbmcgdGhlCisgICAgICAgICAg
IHN0YWNrIGZyYW1lLgorCisgICAgICAgICAgIE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KCkgcmVw
bGFjZXMgT1NSRXhpdDo6Y29tcGlsZU9TUkV4aXQoKSBhbmQKKyAgICAgICAgICAgT1NSRXhpdDo6
Y29tcGlsZUV4aXQoKS4gIEl0IGlzIGJhc2ljYWxseSBhIHJlLXdyaXRlIG9mIHRob3NlIGZ1bmN0
aW9ucyB0bworICAgICAgICAgICBleGVjdXRlIHRoZSBPU1IgZXhpdCB3b3JrIGluc3RlYWQgb2Yg
Y29tcGlsaW5nIGNvZGUgdG8gZXhlY3V0ZSB0aGUgd29yay4KKworICAgICAgICAgICBBcyBhIHJl
c3VsdCwgd2UgZ2V0IHRoZSBmb2xsb3dpbmcgc2F2aW5nczoKKyAgICAgICAgICAgYS4gbm8gbW9y
ZSBPU1IgZXhpdCByYW1wIGNvbXBpbGF0aW9uIHRpbWUuCisgICAgICAgICAgIGIuIG5vIHVzZSBv
ZiBKSVQgZXhlY3V0YWJsZSBtZW1vcnkgZm9yIHN0b3JpbmcgZWFjaCB1bmlxdWUgT1NSIGV4aXQg
cmFtcC4KKworICAgICAgICAgICBPbiB0aGUgbmVnYXRpdmUgc2lkZSwgd2UgaW5jdXIgdGhlc2Ug
Y29zdHM6CisKKyAgICAgICAgICAgYy4gdGhlIE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KCkgcmFt
cCBtYXkgYmUgYSBsaXR0bGUgc2xvd2VyIHRoYW4gdGhlIGNvbXBpbGVkCisgICAgICAgICAgICAg
IHZlcnNpb24gb2YgdGhlIHJhbXAuICBIb3dldmVyLCBPU1IgZXhpdHMgYXJlIHJhcmUuICBIZW5j
ZSwgdGhpcyBzbWFsbAorICAgICAgICAgICAgICBkaWZmZXJlbmNlIHNob3VsZCBub3QgbWF0dGVy
IG11Y2guICBJdCBpcyBhbHNvIG9mZnNldCBieSB0aGUgc2F2aW5ncyBmcm9tCisgICAgICAgICAg
ICAgIChhKS4KKworICAgICAgICAgICBkLiB0aGUgUHJvYmU6OlN0YWNrIGFsbG9jYXRlcyAxSyBw
YWdlcyBmb3IgbWVtb3J5IGZvciBidWZmZXJpbmcgc3RhY2sKKyAgICAgICAgICAgICAgbW9kaWZj
YXRpb25zLiAgVGhlIG51bWJlciBvZiB0aGVzZSBwYWdlcyBkZXBlbmRzIG9uIHRoZSBzcGFuIG9m
IHN0YWNrIG1lbW9yeQorICAgICAgICAgICAgICB0aGF0IHRoZSBPU1IgZXhpdCByYW1wIHJlYWRz
IGZyb20gYW5kIHdyaXRlcyB0by4gIFNpbmNlIHRoZSBPU1IgZXhpdCByYW1wCisgICAgICAgICAg
ICAgIHRlbmRzIHRvIG9ubHkgbW9kaWZ5IHZhbHVlcyBpbiB0aGUgY3VycmVudCBERkcgZnJhbWUg
YW5kIHRoZSBjdXJyZW50CisgICAgICAgICAgICAgIFZNRW50cnlSZWNvcmQsIHRoZSBudW1iZXIg
b2YgcGFnZXMgdGVuZHMgdG8gb25seSBiZSAxIG9yIDIuCisKKyAgICAgICAgICAgICAgVXNpbmcg
dGhlIGpzYyB0ZXN0cyBhcyBhIHdvcmtsb2FkLCB0aGUgdmFzdCBtYWpvcml0eSBvZiB0ZXN0cyB0
aGF0IGRvIE9TUgorICAgICAgICAgICAgICBleGl0LCB1c2VzIDMgb3IgbGVzcyAxSyBwYWdlcyAo
d2l0aCB0aGUgb3ZlcndoZWxtaW5nIG51bWJlciB1c2luZyBqdXN0IDEgcGFnZSkuCisgICAgICAg
ICAgICAgIEEgZmV3IHRlc3RzIHRoYXQgYXJlIHBhdGhvbG9naWNhbCB1c2VzIHVwIHRvIDE0IHBh
Z2VzLCBhbmQgb25lIHBhcnRpY3VsYXJseQorICAgICAgICAgICAgICBiYWQgdGVzdCAoZnVuY3Rp
b24tYXBwbHktbWFueS1hcmdzLmpzKSB1c2VzIDUxMyBwYWdlcy4KKworICAgICAgICAgICBTaW1p
bGFyIHRvIHRoZSBvbGQgY29kZSwgdGhlIE9TUiBleGl0IHJhbXAgc3RpbGwgaGFzIDIgcGFydHM6
IDEgcGFydCB0aGF0IGlzCisgICAgICAgICAgIG9ubHkgZXhlY3V0ZWQgb25jZSB0byBjb21wdXRl
IHNvbWUgdmFsdWVzIGZvciB0aGUgZXhpdCBzaXRlIHRoYXQgaXMgdXNlZCBieQorICAgICAgICAg
ICBhbGwgZXhpdCBvcGVyYXRpb25zIGZyb20gdGhhdCBzaXRlLCBhbmQgYSAybmQgcGFydCB0byBl
eGVjdXRlIHRoZSBleGl0LiAgVGhlCisgICAgICAgICAgIDFzdCBwYXJ0IGlzIHByb3RlY3RlZCBi
eSBhIGNoZWNraW5nIGlmIGV4aXQuZXhpdFN0YXRlIGhhcyBhbHJlYWR5IGJlZW4KKyAgICAgICAg
ICAgaW5pdGlhbGl6ZWQuICBUaGUgY29tcHV0ZWQgdmFsdWVzIGFyZSBjYWNoZWQgaW4gZXhpdC5l
eGl0U3RhdGUuCisKKyAgICAgICAgICAgQmVjYXVzZSB0aGUgT1NSIGV4aXQgdGh1bmsgbm8gbG9u
Z2VyIGNvbXBpbGVzIGFuIE9TUiBleGl0IG9mZi1yYW1wLCB3ZSBubworICAgICAgICAgICBsb25n
ZXIgbmVlZCB0aGUgZmFjaWxpdHkgdG8gcGF0Y2ggdGhlIHNpdGUgdGhhdCBqdW1wcyB0byB0aGUg
T1NSIGV4aXQgcmFtcC4KKyAgICAgICAgICAgVGhlIERGRzo6SklUQ29tcGlsZXIgaGFzIGJlZW4g
bW9kaWZpZWQgdG8gcmVtb3ZlIHRoaXMgcGF0Y2hpbmcgY29kZS4KKworICAgICAgICAyLiBGaXhl
ZCB0aGUgYm90dG9tIG1vc3QgUHJvYmU6OkNvbnRleHQgYW5kIFByb2JlOjpTdGFjayBnZXQvc2V0
IG1ldGhvZHMgdG8gdXNlCisgICAgICAgICAgIHN0ZDo6bWVtY3B5IHRvIGF2b2lkIHN0cmljdCBh
bGlhc2luZyBpc3N1ZXMuCisKKyAgICAgICAgICAgQWxzbyBvcHRpbWl6ZWQgdGhlIGltcGxlbWVu
dGF0aW9uIG9mIFByb2JlOjpTdGFjazo6cGh5c2ljYWxBZGRyZXNzRm9yKCkuCisKKyAgICAgICAg
My4gTWlzY2VsbGFuZW91cyBjb252ZW5pZW5jZSBtZXRob2RzIGFkZGVkIHRvIG1ha2UgdGhlIFBy
b2JlOjpDb250ZXh0IGVhc2llciBvZgorICAgICAgICAgICB1c2UuCisKKyAgICAgICAgNC4gQWRk
ZWQgYSBQcm9iZTo6RnJhbWUgY2xhc3MgdGhhdCBtYWtlcyBpdCBlYXNpZXIgdG8gZ2V0L3NldCBv
cGVyYW5kcyBhbmQKKyAgICAgICAgICAgYXJndW1lbnRzIGluIGEgZ2l2ZW4gZnJhbWUgdXNpbmcg
dGhlIGRlZmVycmVkIHdyaXRlIHByb3BlcnRpZXMgb2YgdGhlCisgICAgICAgICAgIFByb2JlOjpT
dGFjay4gIFByb2JlOjpGcmFtZSBtYWtlcyBpdCBlYXNpZXIgdG8gZG8gc29tZSBvZiB0aGUgcmVj
b3Zlcnkgd29yayBpbgorICAgICAgICAgICB0aGUgT1NSIGV4aXQgcmFtcC4KKworICAgICAgICA1
LiBDbG9uZWQgb3IgY29udmVydGVkIHNvbWUgZnVuY3Rpb25zIG5lZWRlZCBieSB0aGUgT1NSIGV4
aXQgcmFtcC4gIFRoZSBvcmlnaW5hbAorICAgICAgICAgICBKSVQgdmVyc2lvbnMgb2YgdGhlc2Ug
ZnVuY3Rpb25zIGFyZSBzdGlsbCBsZWZ0IGluIHBsYWNlIGJlY2F1c2UgdGhleSBhcmUgc3RpbGwK
KyAgICAgICAgICAgbmVlZGVkIGZvciBGVEwgT1NSIGV4aXQuICBBIEZJWE1FIGNvbW1lbnQgaGFz
IGJlZW4gYWRkZWQgdG8gcmVtb3ZlIHRoZW0gbGF0ZXIuCisgICAgICAgICAgIFRoZXNlIGZ1bmN0
aW9ucyBpbmNsdWRlOgorCisgICAgICAgICAgIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAn
cyBoYW5kbGVFeGl0Q291bnRzKCkgPT0+CisgICAgICAgICAgICAgICBDb2RlQmxvY2s6OnVwZGF0
ZU9TUkV4aXRDb3VudGVyQW5kQ2hlY2tJZk5lZWRUb1Jlb3B0aW1pemUoKQorICAgICAgICAgICBE
RkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwJ3MgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcygpID09
PgorICAgICAgICAgICAgICAgREZHT1NSRXhpdC5jcHAncyByZWlmeUlubGluZWRDYWxsRnJhbWVz
KCkKKyAgICAgICAgICAgREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCdzIGFkanVzdEFuZEp1
bXBUb1RhcmdldCgpID09PgorICAgICAgICAgICAgICAgREZHT1NSRXhpdC5jcHAncyBhZGp1c3RB
bmRKdW1wVG9UYXJnZXQoKQorCisgICAgICAgICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGU6OmVtaXRSZXBvcnRWYWx1ZSgpID09PgorICAgICAgICAgICAgICAgTWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZTo6cmVwb3J0VmFsdWUoKQorCisgICAgICAgICAgIERGR09wZXJhdGlvbnMu
Y3BwJ3Mgb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdCgpID09PgorICAg
ICAgICAgICAgICAgREZHT1NSRXhpdC5jcHAncyBjcmVhdGVEaXJlY3RBcmd1bWVudHNEdXJpbmdF
eGl0KCkKKyAgICAgICAgICAgREZHT3BlcmF0aW9ucy5jcHAncyBvcGVyYXRpb25DcmVhdGVDbG9u
ZWRBcmd1bWVudHNEdXJpbmdFeGl0KCkgPT0+CisgICAgICAgICAgICAgICBERkdPU1JFeGl0LmNw
cCdzIGNyZWF0ZUNsb25lZEFyZ3VtZW50c0R1cmluZ0V4aXQoKQorCisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpzdGRGdW5jdGlvbkNhbGxiYWNrKToK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6UHJpbnRlcjo6cHJpbnRDYWxsYmFjayk6CisgICAgICAgICogYXNzZW1ibGVyL1Byb2Jl
Q29udGV4dC5oOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q1BVU3RhdGU6OmdwciBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlByb2JlOjpDUFVTdGF0ZTo6c3ByIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
UHJvYmU6OkNvbnRleHQ6OkNvbnRleHQpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q29udGV4dDo6
YXJnKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6Omdwcik6CisgICAgICAgIChKU0M6
OlByb2JlOjpDb250ZXh0OjpzcHIpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q29udGV4dDo6ZnBy
KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6Omdwck5hbWUpOgorICAgICAgICAoSlND
OjpQcm9iZTo6Q29udGV4dDo6c3ByTmFtZSk6CisgICAgICAgIChKU0M6OlByb2JlOjpDb250ZXh0
OjpmcHJOYW1lKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6OmdwciBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlByb2JlOjpDb250ZXh0OjpzcHIgY29uc3QpOgorICAgICAgICAoSlNDOjpQ
cm9iZTo6Q29udGV4dDo6ZnByIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6
OnBjKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6OmZwKToKKyAgICAgICAgKEpTQzo6
UHJvYmU6OkNvbnRleHQ6OnNwKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogYXNzZW1ibGVyL1Byb2JlRnJhbWUuaDogQWRkZWQuCisgICAgICAgIChK
U0M6OlByb2JlOjpGcmFtZTo6RnJhbWUpOgorICAgICAgICAoSlNDOjpQcm9iZTo6RnJhbWU6Omdl
dEFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkZyYW1lOjpnZXRPcGVyYW5kKToKKyAg
ICAgICAgKEpTQzo6UHJvYmU6OkZyYW1lOjpnZXQpOgorICAgICAgICAoSlNDOjpQcm9iZTo6RnJh
bWU6OnNldEFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkZyYW1lOjpzZXRPcGVyYW5k
KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkZyYW1lOjpzZXQpOgorICAgICAgICAqIGFzc2VtYmxl
ci9Qcm9iZVN0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvYmU6OlBhZ2U6OlBhZ2UpOgorICAg
ICAgICAqIGFzc2VtYmxlci9Qcm9iZVN0YWNrLmg6CisgICAgICAgIChKU0M6OlByb2JlOjpQYWdl
OjpnZXQpOgorICAgICAgICAoSlNDOjpQcm9iZTo6UGFnZTo6c2V0KToKKyAgICAgICAgKEpTQzo6
UHJvYmU6OlBhZ2U6OnBoeXNpY2FsQWRkcmVzc0Zvcik6CisgICAgICAgIChKU0M6OlByb2JlOjpT
dGFjazo6bG93V2F0ZXJtYXJrKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OlN0YWNrOjpnZXQpOgor
ICAgICAgICAoSlNDOjpQcm9iZTo6U3RhY2s6OnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQXJp
dGhQcm9maWxlLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9Bcml0aFByb2ZpbGUuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxl
OjpvYnNlcnZlQXJyYXlNb2RlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVwZGF0ZU9TUkV4aXRDb3VudGVyQW5kQ2hlY2tJZk5l
ZWRUb1Jlb3B0aW1pemUpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmFkZHJlc3NPZk9TUkV4aXRDb3VudGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAqIGJ5
dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0aW9uQ291bnRl
cjo6aGFzQ3Jvc3NlZFRocmVzaG9sZCBjb25zdCk6CisgICAgICAgIChKU0M6OkV4ZWN1dGlvbkNv
dW50ZXI6OnNldE5ld1RocmVzaG9sZEZvck9TUkV4aXQpOgorICAgICAgICAqIGJ5dGVjb2RlL01l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpNZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlOjpyZXBvcnRWYWx1ZSk6CisgICAgICAgICogYnl0ZWNvZGUvTWV0
aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oOgorICAgICAgICAqIGRmZy9ERkdEcml2ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OmNvbXBpbGVJbXBsKToKKyAgICAgICAgKiBkZmcvREZHSklU
Q29kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29kZTo6ZmluZFBDKTogRGVsZXRlZC4K
KyAgICAgICAgKiBkZmcvREZHSklUQ29kZS5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmtPU1JFeGl0cyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdP
U1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpqc1ZhbHVlRm9yKToKKyAgICAgICAgKEpT
Qzo6REZHOjpyZXN0b3JlQ2FsbGVlU2F2ZXNGb3IpOgorICAgICAgICAoSlNDOjpERkc6OnNhdmVD
YWxsZWVTYXZlc0Zvcik6CisgICAgICAgIChKU0M6OkRGRzo6cmVzdG9yZUNhbGxlZVNhdmVzRnJv
bVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKToKKyAgICAgICAgKEpTQzo6REZHOjpjb3B5
Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKToKKyAgICAgICAgKEpT
Qzo6REZHOjpzYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IpOgorICAgICAgICAoSlNDOjpERkc6OmNy
ZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4aXQpOgorICAgICAgICAoSlNDOjpERkc6OmNyZWF0
ZUNsb25lZEFyZ3VtZW50c0R1cmluZ0V4aXQpOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6
Ok9TUkV4aXQpOgorICAgICAgICAoSlNDOjpERkc6OmVtaXRSZXN0b3JlQXJndW1lbnRzKToKKyAg
ICAgICAgKEpTQzo6REZHOjpPU1JFeGl0OjpleGVjdXRlT1NSRXhpdCk6CisgICAgICAgIChKU0M6
OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyk6CisgICAgICAgIChKU0M6OkRGRzo6YWRqdXN0
QW5kSnVtcFRvVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpwcmludE9TUkV4aXQpOgorICAg
ICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OnNldFBhdGNoYWJsZUNvZGVPZmZzZXQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmdldFBhdGNoYWJsZUNvZGVPZmZzZXRBc0p1
bXAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvZGVMb2Nh
dGlvbkZvclJlcGF0Y2ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4
aXQ6OmNvcnJlY3RKdW1wKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Ojpl
bWl0UmVzdG9yZUFyZ3VtZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhp
dDo6Y29tcGlsZU9TUkV4aXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6
OmNvbXBpbGVFeGl0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0OjpkZWJ1
Z09wZXJhdGlvblByaW50U3BlY3VsYXRpb25GYWlsdXJlKTogRGVsZXRlZC4KKyAgICAgICAgKiBk
ZmcvREZHT1NSRXhpdC5oOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRTdGF0ZTo6T1NSRXhp
dFN0YXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Ojpjb25zaWRlckFkZGluZ0FzRnJl
cXVlbnRFeGl0U2l0ZSk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5j
cHA6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oOgorICAgICAgICAq
IGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgor
ICAgICAgICAqIGRmZy9ERkdUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om9zckV4aXRU
aHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkRGRzo6b3NyRXhpdEdlbmVyYXRpb25UaHVu
a0dlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR1RodW5rcy5oOgorICAgICAg
ICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBl
cnM6OmRlYnVnQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5o
OgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3Bl
cmF0aW9ucy5oOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5oOgorICAgICAg
ICAoSlNDOjpQcm9maWxlcjo6T1NSRXhpdDo6aW5jQ291bnQpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTctMDktMDYgIFNhYW0gQmFyYXRpICA8c2JhcmF0
aUBhcHBsZS5jb20+CiAKICAgICAgICAgQWlyIHNob3VsZCBoYXZlIGEgVmVjdG9yIG9mIHByb2xv
Z3VlIGdlbmVyYXRvcnMgaW5zdGVhZCBvZiBhIEhhc2hNYXAgcmVwcmVzZW50aW5nIGFuIG9wdGlv
bmFsIHByb2xvZ3VlIGdlbmVyYXRvcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDIyMTY4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQ0LDYgKzI0
NDQsNyBAQAogCQlGRTEwQUFFQzFGNDRENTQ1MDA5REVEQzUgLyogUHJvYmVTdGFjay5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEwQUFFOTFGNDRE
NTEwMDA5REVEQzUgLyogUHJvYmVTdGFjay5jcHAgKi87IH07CiAJCUZFMTBBQUVFMUY0NEQ5NTQw
MDlERURDNSAvKiBQcm9iZUNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFMTBBQUVEMUY0NEQ5NDYwMDlERURDNSAvKiBQcm9iZUNvbnRleHQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTEw
QUFGNDFGNDY4Mzk2MDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTBBQUYzMUY0NjgyNkQwMDlERURDNSAv
KiBQcm9iZUNvbnRleHQuY3BwICovOyB9OworCQlGRTEwQUFGRjFGNEUzOEU1MDA5REVEQzUgLyog
UHJvYmVGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkUxMEFBRkUxRjRFMzhEQTAwOURFREM1IC8qIFByb2JlRnJhbWUuaCAqLzsgfTsKIAkJRkUx
MjIwMjcxQkU3RjU4QzAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxMjIwMjYxQkU3RjU2NDAwMzlFNkYy
IC8qIEpJVEFkZEdlbmVyYXRvci5oICovOyB9OwogCQlGRTEyMjAyODFCRTdGNTkxMDAzOUU2RjIg
LyogSklUQWRkR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFMTIyMDI1MUJFN0Y1NjQwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3Iu
Y3BwICovOyB9OwogCQlGRTE4N0EwMTFCRkJFNTVFMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9y
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTg3
OUZGMUJGQkM3M0MwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuY3BwICovOyB9OwpAQCAtNTEz
OCw2ICs1MTM5LDcgQEAKIAkJRkUxMEFBRUExRjQ0RDUxMjAwOURFREM1IC8qIFByb2JlU3RhY2su
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvYmVTdGFjay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRTEwQUFFRDFGNDREOTQ2MDA5REVEQzUgLyogUHJvYmVD
b250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2JlQ29udGV4dC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTEwQUFGMzFGNDY4MjZEMDA5REVEQzUg
LyogUHJvYmVDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFByb2JlQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMTBBQUZF
MUY0RTM4REEwMDlERURDNSAvKiBQcm9iZUZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFByb2JlRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUx
MjIwMjUxQkU3RjU2NDAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRBZGRHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRTEyMjAyNjFCRTdGNTY0MDAzOUU2RjIgLyogSklUQWRkR2Vu
ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVEFkZEdlbmVyYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTE4NzlGRjFCRkJDNzNDMDAzOEJC
Q0EgLyogSklUTXVsR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpJVE11bEdlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01MjA3LDYgKzUyMDksNyBAQAogCQlGRTgwQzE5NjFENzc1QjI3MDA4NTEwQzAgLyogQ2F0Y2hT
Y29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYXRjaFNjb3BlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODBDMTk4MUQ3NzVGQjQwMDg1MTBDMCAvKiBD
YXRjaFNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhdGNo
U2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTgwQzE5QTFENzc2OEZE
MDA4NTEwQzAgLyogRXhjZXB0aW9uRXZlbnRMb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBFeGNlcHRpb25FdmVudExvY2F0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4NEVFNzkxRjU2MzUyRDAwNTFCOEYxIC8qIENvZGVCbG9j
a0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZUJsb2NrSW5s
aW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTkwQkIzQTFCN0NGNjRFMDA2
QjNGMDMgLyogVk1JbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZN
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTk4QjVCNjFCQjlBRTEx
MDA3M0U3QTYgLyogSklUU3ViR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpJVFN1YkdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
RTk5QjI0NzFDMjRCNkQzMDBDODIxNTkgLyogSklUTmVnR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVE5lZ0dlbmVyYXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NzIyLDYgKzc3MjUsNyBAQAogCQkJCUZFNjNERDUzMUVB
OUI2MEUwMDEwM0E2OSAvKiBQcmludGVyLmggKi8sCiAJCQkJRkUxMEFBRjMxRjQ2ODI2RDAwOURF
REM1IC8qIFByb2JlQ29udGV4dC5jcHAgKi8sCiAJCQkJRkUxMEFBRUQxRjQ0RDk0NjAwOURFREM1
IC8qIFByb2JlQ29udGV4dC5oICovLAorCQkJCUZFMTBBQUZFMUY0RTM4REEwMDlERURDNSAvKiBQ
cm9iZUZyYW1lLmggKi8sCiAJCQkJRkUxMEFBRTkxRjQ0RDUxMDAwOURFREM1IC8qIFByb2JlU3Rh
Y2suY3BwICovLAogCQkJCUZFMTBBQUVBMUY0NEQ1MTIwMDlERURDNSAvKiBQcm9iZVN0YWNrLmgg
Ki8sCiAJCQkJRkU1MzNDQTAxRjIxN0MzMTAwMTZBMUZFIC8qIHRlc3RtYXNtLmNwcCAqLywKQEAg
LTc3NzgsNiArNzc4Miw3IEBACiAJCQkJOTY5QTA3OTEwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVC
bG9jay5oICovLAogCQkJCTBGOEY5NDNEMTY2NzYzMkQwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNo
LmNwcCAqLywKIAkJCQkwRjhGOTQzRTE2Njc2MzJEMDBENjE5NzEgLyogQ29kZUJsb2NrSGFzaC5o
ICovLAorCQkJCUZFODRFRTc5MUY1NjM1MkQwMDUxQjhGMSAvKiBDb2RlQmxvY2tJbmxpbmVzLmgg
Ki8sCiAJCQkJMEZDOTdGMkYxODIwMjBENzAwMkM5QjI2IC8qIENvZGVCbG9ja0pldHRpc29uaW5n
V2F0Y2hwb2ludC5jcHAgKi8sCiAJCQkJMEZDOTdGMzAxODIwMjBENzAwMkM5QjI2IC8qIENvZGVC
bG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5oICovLAogCQkJCTBGOTZFQkIxMTY2NzZFRjQwMDhC
QURFMyAvKiBDb2RlQmxvY2tXaXRoSklUVHlwZS5oICovLApAQCAtOTY4OSw2ICs5Njk0LDcgQEAK
IAkJCQlBRDJGQ0MxRDFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5
cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDQ5MzdDODFEREQwQUFFMDA3N0M4MDcgLyog
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUFEMkZDQzJEMURC
ODM4RkQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRkUxMEFBRkYxRjRFMzhFNTAwOURFREM1IC8qIFByb2JlRnJhbWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUFEMkZDQkY5MURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJv
ckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0MxRTFEQjU5Q0IyMDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUFEMkZDQkZCMURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMjIxNjg3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgY29uc3QgZG91YmxlIE1hY3JvQXNzZW1i
bGVyOjp0d29Ub1RoZTMyIAogI2lmIEVOQUJMRShNQVNNX1BST0JFKQogc3RhdGljIHZvaWQgc3Rk
RnVuY3Rpb25DYWxsYmFjayhQcm9iZTo6Q29udGV4dCYgY29udGV4dCkKIHsKLSAgICBhdXRvIGZ1
bmMgPSBzdGF0aWNfY2FzdDxjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUHJvYmU6OkNvbnRleHQm
KT4qPihjb250ZXh0LmFyZyk7CisgICAgYXV0byBmdW5jID0gY29udGV4dC5hcmc8Y29uc3Qgc3Rk
OjpmdW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+Kj4oKTsKICAgICAoKmZ1bmMpKGNvbnRl
eHQpOwogfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclByaW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcAkocmV2aXNpb24gMjIxNjg3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclByaW50ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBwcmludE1lbW9yeShQ
cmludFN0cmVhbSYgb3V0LCBDb250ZQogdm9pZCBwcmludENhbGxiYWNrKFByb2JlOjpDb250ZXh0
JiBwcm9iZUNvbnRleHQpCiB7CiAgICAgYXV0byYgb3V0ID0gV1RGOjpkYXRhRmlsZSgpOwotICAg
IFByaW50UmVjb3JkTGlzdCYgbGlzdCA9ICpyZWludGVycHJldF9jYXN0PFByaW50UmVjb3JkTGlz
dCo+KHByb2JlQ29udGV4dC5hcmcpOworICAgIFByaW50UmVjb3JkTGlzdCYgbGlzdCA9ICpwcm9i
ZUNvbnRleHQuYXJnPFByaW50UmVjb3JkTGlzdCo+KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsaXN0LnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGF1dG8mIHJlY29yZCA9IGxpc3RbaV07
CiAgICAgICAgIENvbnRleHQgY29udGV4dChwcm9iZUNvbnRleHQsIHJlY29yZC5kYXRhKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVDb250ZXh0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUNvbnRleHQuaAko
cmV2aXNpb24gMjIxNjg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9i
ZUNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTQgKzQ1LDggQEAgc3RydWN0IENQVVN0
YXRlIHsKICAgICBpbmxpbmUgdWludHB0cl90JiBzcHIoU1BSZWdpc3RlcklEKTsKICAgICBpbmxp
bmUgZG91YmxlJiBmcHIoRlBSZWdpc3RlcklEKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlw
ZSogPSBudWxscHRyPgotICAgIFQgZ3ByKFJlZ2lzdGVySUQpIGNvbnN0OwotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxUPjo6
dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+Ci0gICAgVCBncHIoUmVnaXN0ZXJJRCkgY29uc3Q7Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19p
bnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+Ci0gICAgVCBzcHIoU1BSZWdpc3Rl
cklEKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRyPgotICAgIFQg
c3ByKFNQUmVnaXN0ZXJJRCkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBncHIo
UmVnaXN0ZXJJRCkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBzcHIoU1BSZWdp
c3RlcklEKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGZwcihGUFJlZ2lzdGVy
SUQpIGNvbnN0OwogCiAgICAgdm9pZComIHBjKCk7CkBAIC04NSwzMiArNzksMjQgQEAgaW5saW5l
IGRvdWJsZSYgQ1BVU3RhdGU6OmZwcihGUFJlZ2lzdGVySQogICAgIHJldHVybiBmcHJzW2lkXTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKj4KLVQgQ1BVU3RhdGU6OmdwcihSZWdpc3RlcklE
IGlkKSBjb25zdAotewotICAgIENQVVN0YXRlKiBjcHUgPSBjb25zdF9jYXN0PENQVVN0YXRlKj4o
dGhpcyk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGNwdS0+Z3ByKGlkKSk7Ci19Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRl
cjxUPjo6dmFsdWU+Ojp0eXBlKj4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CiBUIENQVVN0YXRlOjpn
cHIoUmVnaXN0ZXJJRCBpZCkgY29uc3QKIHsKICAgICBDUFVTdGF0ZSogY3B1ID0gY29uc3RfY2Fz
dDxDUFVTdGF0ZSo+KHRoaXMpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQ+KGNwdS0+
Z3ByKGlkKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlwZSo+Ci1UIENQVVN0YXRlOjpzcHIo
U1BSZWdpc3RlcklEIGlkKSBjb25zdAotewotICAgIENQVVN0YXRlKiBjcHUgPSBjb25zdF9jYXN0
PENQVVN0YXRlKj4odGhpcyk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGNwdS0+c3ByKGlk
KSk7CisgICAgYXV0byYgZnJvbSA9IGNwdS0+Z3ByKGlkKTsKKyAgICB0eXBlbmFtZSBzdGQ6OnJl
bW92ZV9jb25zdDxUPjo6dHlwZSB0byB7IH07CisgICAgc3RkOjptZW1jcHkoJnRvLCAmZnJvbSwg
c2l6ZW9mKHRvKSk7IC8vIFVzZSBzdGQ6Om1lbWNweSB0byBhdm9pZCBzdHJpY3QgYWxpYXNpbmcg
aXNzdWVzLgorICAgIHJldHVybiB0bzsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGUqPgordGVt
cGxhdGU8dHlwZW5hbWUgVD4KIFQgQ1BVU3RhdGU6OnNwcihTUFJlZ2lzdGVySUQgaWQpIGNvbnN0
CiB7CiAgICAgQ1BVU3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPihjcHUtPnNwcihpZCkpOworICAgIGF1dG8mIGZy
b20gPSBjcHUtPnNwcihpZCk7CisgICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD46OnR5
cGUgdG8geyB9OworICAgIHN0ZDo6bWVtY3B5KCZ0bywgJmZyb20sIHNpemVvZih0bykpOyAvLyBV
c2Ugc3RkOjptZW1jcHkgdG8gYXZvaWQgc3RyaWN0IGFsaWFzaW5nIGlzc3Vlcy4KKyAgICByZXR1
cm4gdG87CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0yMDUsMjUgKzE5MSwzMSBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgRlBSZWdpc3RlcklEID0gTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0
ZXJJRDsKIAogICAgIENvbnRleHQoU3RhdGUqIHN0YXRlKQotICAgICAgICA6IG1fc3RhdGUoc3Rh
dGUpCi0gICAgICAgICwgYXJnKHN0YXRlLT5hcmcpCi0gICAgICAgICwgY3B1KHN0YXRlLT5jcHUp
CisgICAgICAgIDogY3B1KHN0YXRlLT5jcHUpCisgICAgICAgICwgbV9zdGF0ZShzdGF0ZSkKICAg
ICB7IH0KIAotICAgIHVpbnRwdHJfdCYgZ3ByKFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIG1fc3Rh
dGUtPmNwdS5ncHIoaWQpOyB9Ci0gICAgdWludHB0cl90JiBzcHIoU1BSZWdpc3RlcklEIGlkKSB7
IHJldHVybiBtX3N0YXRlLT5jcHUuc3ByKGlkKTsgfQotICAgIGRvdWJsZSYgZnByKEZQUmVnaXN0
ZXJJRCBpZCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LmZwcihpZCk7IH0KLSAgICBjb25zdCBjaGFy
KiBncHJOYW1lKFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5ncHJOYW1lKGlk
KTsgfQotICAgIGNvbnN0IGNoYXIqIHNwck5hbWUoU1BSZWdpc3RlcklEIGlkKSB7IHJldHVybiBt
X3N0YXRlLT5jcHUuc3ByTmFtZShpZCk7IH0KLSAgICBjb25zdCBjaGFyKiBmcHJOYW1lKEZQUmVn
aXN0ZXJJRCBpZCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LmZwck5hbWUoaWQpOyB9Ci0KLSAgICB2
b2lkKiYgcGMoKSB7IHJldHVybiBtX3N0YXRlLT5jcHUucGMoKTsgfQotICAgIHZvaWQqJiBmcCgp
IHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5mcCgpOyB9Ci0gICAgdm9pZComIHNwKCkgeyByZXR1cm4g
bV9zdGF0ZS0+Y3B1LnNwKCk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgcGMoKSB7
IHJldHVybiBtX3N0YXRlLT5jcHUucGM8VD4oKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IFQgZnAoKSB7IHJldHVybiBtX3N0YXRlLT5jcHUuZnA8VD4oKTsgfQotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IFQgc3AoKSB7IHJldHVybiBtX3N0YXRlLT5jcHUuc3A8VD4oKTsgfQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgVCBhcmcoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0
PFQ+KG1fc3RhdGUtPmFyZyk7IH0KKworICAgIHVpbnRwdHJfdCYgZ3ByKFJlZ2lzdGVySUQgaWQp
IHsgcmV0dXJuIGNwdS5ncHIoaWQpOyB9CisgICAgdWludHB0cl90JiBzcHIoU1BSZWdpc3RlcklE
IGlkKSB7IHJldHVybiBjcHUuc3ByKGlkKTsgfQorICAgIGRvdWJsZSYgZnByKEZQUmVnaXN0ZXJJ
RCBpZCkgeyByZXR1cm4gY3B1LmZwcihpZCk7IH0KKyAgICBjb25zdCBjaGFyKiBncHJOYW1lKFJl
Z2lzdGVySUQgaWQpIHsgcmV0dXJuIGNwdS5ncHJOYW1lKGlkKTsgfQorICAgIGNvbnN0IGNoYXIq
IHNwck5hbWUoU1BSZWdpc3RlcklEIGlkKSB7IHJldHVybiBjcHUuc3ByTmFtZShpZCk7IH0KKyAg
ICBjb25zdCBjaGFyKiBmcHJOYW1lKEZQUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gY3B1LmZwck5h
bWUoaWQpOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGdwcihSZWdpc3RlcklEIGlk
KSBjb25zdCB7IHJldHVybiBjcHUuZ3ByPFQ+KGlkKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IFQgc3ByKFNQUmVnaXN0ZXJJRCBpZCkgY29uc3QgeyByZXR1cm4gY3B1LnNwcjxUPihpZCk7
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGZwcihGUFJlZ2lzdGVySUQgaWQpIGNvbnN0
IHsgcmV0dXJuIGNwdS5mcHI8VD4oaWQpOyB9CisKKyAgICB2b2lkKiYgcGMoKSB7IHJldHVybiBj
cHUucGMoKTsgfQorICAgIHZvaWQqJiBmcCgpIHsgcmV0dXJuIGNwdS5mcCgpOyB9CisgICAgdm9p
ZComIHNwKCkgeyByZXR1cm4gY3B1LnNwKCk7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IFQgcGMoKSB7IHJldHVybiBjcHUucGM8VD4oKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IFQgZnAoKSB7IHJldHVybiBjcHUuZnA8VD4oKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IFQgc3AoKSB7IHJldHVybiBjcHUuc3A8VD4oKTsgfQogCiAgICAgU3RhY2smIHN0YWNrKCkKICAg
ICB7CkBAIC0yMzQsMTMgKzIyNiwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNXcml0ZXNUb0Zs
dXNoKCkgeyByZXR1cm4gbV9zdGFjay5oYXNXcml0ZXNUb0ZsdXNoKCk7IH0KICAgICBTdGFjayog
cmVsZWFzZVN0YWNrKCkgeyByZXR1cm4gbmV3IFN0YWNrKFdURk1vdmUobV9zdGFjaykpOyB9CiAK
LXByaXZhdGU6Ci0gICAgU3RhdGUqIG1fc3RhdGU7Ci1wdWJsaWM6Ci0gICAgdm9pZCogYXJnOwog
ICAgIENQVVN0YXRlJiBjcHU7CiAKIHByaXZhdGU6CisgICAgU3RhdGUqIG1fc3RhdGU7CiAgICAg
U3RhY2sgbV9zdGFjazsKIAogICAgIGZyaWVuZCBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBwcm9i
ZVN0YXRlRm9yQ29udGV4dChDb250ZXh0Jik7IC8vIE5vdCBmb3IgZ2VuZXJhbCB1c2UuIFRoaXMg
c2hvdWxkIG9ubHkgYmUgZm9yIHdyaXRpbmcgdGVzdHMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1Byb2JlRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlRnJhbWUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUFTTV9QUk9CRSkKKworI2luY2x1ZGUgIkNh
bGxGcmFtZS5oIgorI2luY2x1ZGUgIlByb2JlU3RhY2suaCIKKworbmFtZXNwYWNlIEpTQyB7Citu
YW1lc3BhY2UgUHJvYmUgeworCitjbGFzcyBGcmFtZSB7CitwdWJsaWM6CisgICAgRnJhbWUodm9p
ZCogZnJhbWVCYXNlLCBTdGFjayYgc3RhY2spCisgICAgICAgIDogbV9mcmFtZUJhc2UgeyByZWlu
dGVycHJldF9jYXN0PHVpbnQ4X3QqPihmcmFtZUJhc2UpIH0KKyAgICAgICAgLCBtX3N0YWNrIHsg
c3RhY2sgfQorICAgIHsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBUIGdldEFy
Z3VtZW50KGludCBhcmd1bWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBnZXQ8VD4oQ2FsbEZy
YW1lOjphcmd1bWVudE9mZnNldChhcmd1bWVudCkgKiBzaXplb2YoUmVnaXN0ZXIpKTsKKyAgICB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBUIGdldE9wZXJhbmQoaW50IG9wZXJhbmQp
CisgICAgeworICAgICAgICByZXR1cm4gZ2V0PFQ+KHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rl
cj4ob3BlcmFuZCkub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKTsKKyAgICB9CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KKyAgICBUIGdldE9wZXJhbmQoaW50IG9wZXJhbmQsIHB0cmRpZmZf
dCBvZmZzZXQpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0PFQ+KHN0YXRpY19jYXN0PFZpcnR1
YWxSZWdpc3Rlcj4ob3BlcmFuZCkub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpICsgb2Zmc2V0
KTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBUIGdldChwdHJkaWZmX3Qg
b2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc3RhY2suZ2V0PFQ+KG1fZnJhbWVCYXNl
ICsgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHZvaWQg
c2V0QXJndW1lbnQoaW50IGFyZ3VtZW50LCBUIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHNldDxUPihDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KGFyZ3VtZW50KSAqIHNpemVvZihSZWdp
c3RlciksIHZhbHVlKTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lk
IHNldE9wZXJhbmQoaW50IG9wZXJhbmQsIFQgdmFsdWUpCisgICAgeworICAgICAgICBzZXQ8VD4o
c3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5kKS5vZmZzZXQoKSAqIHNpemVvZihS
ZWdpc3RlciksIHZhbHVlKTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2
b2lkIHNldE9wZXJhbmQoaW50IG9wZXJhbmQsIHB0cmRpZmZfdCBvZmZzZXQsIFQgdmFsdWUpCisg
ICAgeworICAgICAgICBzZXQ8VD4oc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5k
KS5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikgKyBvZmZzZXQsIHZhbHVlKTsKKyAgICB9Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNldChwdHJkaWZmX3Qgb2Zmc2V0LCBU
IHZhbHVlKQorICAgIHsKKyAgICAgICAgbV9zdGFjay5zZXQ8VD4obV9mcmFtZUJhc2UgKyBvZmZz
ZXQsIHZhbHVlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdWludDhfdCogbV9mcmFtZUJhc2U7
CisgICAgU3RhY2smIG1fc3RhY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBQcm9iZQorfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoTUFTTV9QUk9CRSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmNwcAkocmV2aXNpb24g
MjIxNjg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgUHJvYmUgewogCiBQ
YWdlOjpQYWdlKHZvaWQqIGJhc2VBZGRyZXNzKQogICAgIDogbV9iYXNlTG9naWNhbEFkZHJlc3Mo
YmFzZUFkZHJlc3MpCisgICAgLCBtX3BoeXNpY2FsQWRkcmVzc09mZnNldChyZWludGVycHJldF9j
YXN0PHVpbnQ4X3QqPigmbV9idWZmZXIpIC0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYmFz
ZUFkZHJlc3MpKQogewogICAgIG1lbWNweSgmbV9idWZmZXIsIGJhc2VBZGRyZXNzLCBzX3BhZ2VT
aXplKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFj
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVT
dGFjay5oCShyZXZpc2lvbiAyMjE2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1Byb2JlU3RhY2suaAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTQgKzU2LDI4IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFQgZ2V0KHZvaWQqIGxvZ2ljYWxBZGRy
ZXNzKQogICAgIHsKLSAgICAgICAgcmV0dXJuICpwaHlzaWNhbEFkZHJlc3NGb3I8VCo+KGxvZ2lj
YWxBZGRyZXNzKTsKKyAgICAgICAgdm9pZCogZnJvbSA9IHBoeXNpY2FsQWRkcmVzc0Zvcihsb2dp
Y2FsQWRkcmVzcyk7CisgICAgICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBl
IHRvIHsgfTsKKyAgICAgICAgc3RkOjptZW1jcHkoJnRvLCBmcm9tLCBzaXplb2YodG8pKTsgLy8g
VXNlIHN0ZDo6bWVtY3B5IHRvIGF2b2lkIHN0cmljdCBhbGlhc2luZyBpc3N1ZXMuCisgICAgICAg
IHJldHVybiB0bzsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBUIGdldCh2
b2lkKiBsb2dpY2FsQmFzZUFkZHJlc3MsIHB0cmRpZmZfdCBvZmZzZXQpCisgICAgeworICAgICAg
ICByZXR1cm4gZ2V0PFQ+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGxvZ2ljYWxCYXNlQWRk
cmVzcykgKyBvZmZzZXQpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAg
dm9pZCBzZXQodm9pZCogbG9naWNhbEFkZHJlc3MsIFQgdmFsdWUpCiAgICAgewogICAgICAgICBt
X2RpcnR5Qml0cyB8PSBkaXJ0eUJpdEZvcihsb2dpY2FsQWRkcmVzcyk7Ci0gICAgICAgICpwaHlz
aWNhbEFkZHJlc3NGb3I8VCo+KGxvZ2ljYWxBZGRyZXNzKSA9IHZhbHVlOworICAgICAgICB2b2lk
KiB0byA9IHBoeXNpY2FsQWRkcmVzc0Zvcihsb2dpY2FsQWRkcmVzcyk7CisgICAgICAgIHN0ZDo6
bWVtY3B5KHRvLCAmdmFsdWUsIHNpemVvZihUKSk7IC8vIFVzZSBzdGQ6Om1lbWNweSB0byBhdm9p
ZCBzdHJpY3QgYWxpYXNpbmcgaXNzdWVzLgorICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorICAgIHZvaWQgc2V0KHZvaWQqIGxvZ2ljYWxCYXNlQWRkcmVzcywgcHRyZGlmZl90IG9mZnNl
dCwgVCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHNldDxUPihyZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihsb2dpY2FsQmFzZUFkZHJlc3MpICsgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgfQogCiAgICAg
Ym9vbCBoYXNXcml0ZXNUb0ZsdXNoKCkgY29uc3QgeyByZXR1cm4gISFtX2RpcnR5Qml0czsgfQpA
QCAtODAsMTggKzk0LDE2IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KDEpIDw8IChvZmZzZXQgPj4gc19jaHVua1NpemVTaGlmdCk7CiAgICAgfQogCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZT4KLSAgICBUIHBoeXNpY2FsQWRkcmVz
c0Zvcih2b2lkKiBsb2dpY2FsQWRkcmVzcykKKyAgICB2b2lkKiBwaHlzaWNhbEFkZHJlc3NGb3Io
dm9pZCogbG9naWNhbEFkZHJlc3MpCiAgICAgewotICAgICAgICB1aW50cHRyX3Qgb2Zmc2V0ID0g
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGxvZ2ljYWxBZGRyZXNzKSAmIHNfcGFnZU1hc2s7
Ci0gICAgICAgIHZvaWQqIHBoeXNpY2FsQWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KCZtX2J1ZmZlcikgKyBvZmZzZXQ7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PFQ+KHBoeXNpY2FsQWRkcmVzcyk7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPihsb2dpY2FsQWRkcmVzcykgKyBtX3BoeXNpY2FsQWRkcmVzc09mZnNldDsKICAgICB9
CiAKICAgICB2b2lkIGZsdXNoV3JpdGVzKCk7CiAKICAgICB2b2lkKiBtX2Jhc2VMb2dpY2FsQWRk
cmVzcyB7IG51bGxwdHIgfTsKICAgICB1aW50cHRyX3QgbV9kaXJ0eUJpdHMgeyAwIH07CisgICAg
cHRyZGlmZl90IG1fcGh5c2ljYWxBZGRyZXNzT2Zmc2V0OwogCiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBzaXplX3Qgc19wYWdlU2l6ZSA9IDEwMjQ7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRy
X3Qgc19wYWdlTWFzayA9IHNfcGFnZVNpemUgLSAxOwpAQCAtMTIwLDQwICsxMzIsMzkgQEAgcHVi
bGljOgogICAgIHsgfQogICAgIFN0YWNrKFN0YWNrJiYgb3RoZXIpOwogCi0gICAgdm9pZCogbG93
V2F0ZXJtYXJrKCkgeyByZXR1cm4gbV9sb3dXYXRlcm1hcms7IH0KKyAgICB2b2lkKiBsb3dXYXRl
cm1hcmsoKQorICAgIHsKKyAgICAgICAgLy8gV2UgdXNlIHRoZSBjaHVua0FkZHJlc3MgZm9yIHRo
ZSBsb3cgd2F0ZXJtYXJrIGJlY2F1c2Ugd2UnbGwgYmUgZG9pbmcgd3JpdGUgYmFja3MKKyAgICAg
ICAgLy8gdG8gdGhlIHN0YWNrIGluIGluY3JlbWVudHMgb2YgY2h1bmtzLiBIZW5jZSwgd2UnbGwg
dHJlYXQgdGhlIGxvd2VzdCBhZGRyZXNzIG9mCisgICAgICAgIC8vIHRoZSBjaHVuayBhcyB0aGUg
bG93IHdhdGVybWFyayBvZiBhbnkgZ2l2ZW4gc2V0IGFkZHJlc3MuCisgICAgICAgIHJldHVybiBQ
YWdlOjpjaHVua0FkZHJlc3NGb3IobV9sb3dXYXRlcm1hcmspOworICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci0gICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfc2Ft
ZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+Ojp0
eXBlIGdldCh2b2lkKiBhZGRyZXNzKQorICAgIFQgZ2V0KHZvaWQqIGFkZHJlc3MpCiAgICAgewog
ICAgICAgICBQYWdlKiBwYWdlID0gcGFnZUZvcihhZGRyZXNzKTsKICAgICAgICAgcmV0dXJuIHBh
Z2UtPmdldDxUPihhZGRyZXNzKTsKICAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg
ICBUIGdldCh2b2lkKiBsb2dpY2FsQmFzZUFkZHJlc3MsIHB0cmRpZmZfdCBvZmZzZXQpCisgICAg
eworICAgICAgICByZXR1cm4gZ2V0PFQ+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGxvZ2lj
YWxCYXNlQWRkcmVzcykgKyBvZmZzZXQpOworICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfc2FtZTxkb3Vi
bGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWU+Ojp0eXBlPgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBzZXQodm9pZCogYWRkcmVzcywgVCB2YWx1
ZSkKICAgICB7CiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBwYWdlRm9yKGFkZHJlc3MpOwogICAgICAg
ICBwYWdlLT5zZXQ8VD4oYWRkcmVzcywgdmFsdWUpOwogCi0gICAgICAgIC8vIFdlIHVzZSB0aGUg
Y2h1bmtBZGRyZXNzIGZvciB0aGUgbG93IHdhdGVybWFyayBiZWNhdXNlIHdlJ2xsIGJlIGRvaW5n
IHdyaXRlIGJhY2tzCi0gICAgICAgIC8vIHRvIHRoZSBzdGFjayBpbiBpbmNyZW1lbnRzIG9mIGNo
dW5rcy4gSGVuY2UsIHdlJ2xsIHRyZWF0IHRoZSBsb3dlc3QgYWRkcmVzcyBvZgotICAgICAgICAv
LyB0aGUgY2h1bmsgYXMgdGhlIGxvdyB3YXRlcm1hcmsgb2YgYW55IGdpdmVuIHNldCBhZGRyZXNz
LgotICAgICAgICB2b2lkKiBjaHVua0FkZHJlc3MgPSBQYWdlOjpjaHVua0FkZHJlc3NGb3IoYWRk
cmVzcyk7Ci0gICAgICAgIGlmIChjaHVua0FkZHJlc3MgPCBtX2xvd1dhdGVybWFyaykKLSAgICAg
ICAgICAgIG1fbG93V2F0ZXJtYXJrID0gY2h1bmtBZGRyZXNzOworICAgICAgICBpZiAoYWRkcmVz
cyA8IG1fbG93V2F0ZXJtYXJrKQorICAgICAgICAgICAgbV9sb3dXYXRlcm1hcmsgPSBhZGRyZXNz
OwogICAgIH0KLQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8c3RkOjppc19zYW1lPGRvdWJsZSwgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8VD46
OnR5cGU+Ojp2YWx1ZSwgVD46OnR5cGUgZ2V0KHZvaWQqIGFkZHJlc3MpCi0gICAgewotICAgICAg
ICBQYWdlKiBwYWdlID0gcGFnZUZvcihhZGRyZXNzKTsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxkb3VibGU+KHBhZ2UtPmdldDx1aW50NjRfdD4oYWRkcmVzcykpOwotICAgIH0KLQotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
c3RkOjppc19zYW1lPGRvdWJsZSwgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGU+Ojp2
YWx1ZT46OnR5cGU+Ci0gICAgdm9pZCBzZXQodm9pZCogYWRkcmVzcywgZG91YmxlIHZhbHVlKQor
ICAgIHZvaWQgc2V0KHZvaWQqIGxvZ2ljYWxCYXNlQWRkcmVzcywgcHRyZGlmZl90IG9mZnNldCwg
VCB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHNldDx1aW50NjRfdD4oYWRkcmVzcywgYml0d2lzZV9j
YXN0PHVpbnQ2NF90Pih2YWx1ZSkpOworICAgICAgICBzZXQ8VD4ocmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4obG9naWNhbEJhc2VBZGRyZXNzKSArIG9mZnNldCwgdmFsdWUpOwogICAgIH0KIAog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFBhZ2UqIGVuc3VyZVBhZ2VGb3Iodm9pZCogYWRkcmVzcyk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxl
LmNwcAkocmV2aXNpb24gMjIxNjg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FyaXRoUHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNiArMzIsOCBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKICNpZiBFTkFCTEUoSklUKQorLy8gRklYTUU6IFRoaXMgaXMgYmVpbmcgc3VwcGxh
bnRlZCBieSBvYnNlcnZlUmVzdWx0KCkuIFJlbW92ZSB0aGlzIG9uZQorLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NSBoYXMgYmVlbiBmaXhlZC4KIHZvaWQg
QXJpdGhQcm9maWxlOjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1
ZVJlZ3MgcmVncywgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlKQogewogICAgIGlmICghc2hvdWxkRW1p
dFNldERvdWJsZSgpICYmICFzaG91bGRFbWl0U2V0Tm9uTnVtYmVyKCkpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCShyZXZpc2lvbiAyMjE2
ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjExLDYgKzIxMSw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoSklUKSAgICAK
ICAgICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9E
b3VibGUgfCBOZWdaZXJvRG91YmxlKSBpZiBpdCBzZWVzIGEKICAgICAvLyBkb3VibGUuIFNldHMg
Tm9uTnVtYmVyIGlmIGl0IHNlZXMgYSBub24tbnVtYmVyLgorICAgIC8vIEZJWE1FOiBUaGlzIGlz
IGJlaW5nIHN1cHBsYW50ZWQgYnkgb2JzZXJ2ZVJlc3VsdCgpLiBSZW1vdmUgdGhpcyBvbmUKKyAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1IGhhcyBi
ZWVuIGZpeGVkLgogICAgIHZvaWQgZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiwgSlNW
YWx1ZVJlZ3MsIFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKTsKICAgICAKICAg
ICAvLyBTZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3Vi
bGUgfCBOZWdaZXJvRG91YmxlKS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BcnJheVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHJldmlzaW9uIDIyMTY4NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMTgs
NiArMjE4LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayopOwogICAgIHZvaWQgY29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayosIFN0
cnVjdHVyZSogbGFzdFNlZW5TdHJ1Y3R1cmUpOwogICAgIAorICAgIHZvaWQgb2JzZXJ2ZUFycmF5
TW9kZShBcnJheU1vZGVzIG1vZGUpIHsgbV9vYnNlcnZlZEFycmF5TW9kZXMgfD0gbW9kZTsgfQog
ICAgIEFycmF5TW9kZXMgb2JzZXJ2ZWRBcnJheU1vZGVzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYpIGNvbnN0IHsgcmV0dXJuIG1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9CiAgICAgYm9vbCBtYXlJ
bnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3Qg
eyByZXR1cm4gbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXM7IH0KICAgICAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAy
MjE2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjMxNSw2ICsyMzE1LDU1IEBAIGJvb2wgQ29kZUJsb2NrOjpjaGVj
a0lmT3B0aW1pemF0aW9uVGhyZXMKICAgICByZXR1cm4gbV9qaXRFeGVjdXRlQ291bnRlci5jaGVj
a0lmVGhyZXNob2xkQ3Jvc3NlZEFuZFNldCh0aGlzKTsKIH0KIAorYXV0byBDb2RlQmxvY2s6OnVw
ZGF0ZU9TUkV4aXRDb3VudGVyQW5kQ2hlY2tJZk5lZWRUb1Jlb3B0aW1pemUoREZHOjpPU1JFeGl0
U3RhdGUmIGV4aXRTdGF0ZSkgLT4gT3B0aW1pemVBY3Rpb24KK3sKKyAgICBERkc6Ok9TUkV4aXRC
YXNlJiBleGl0ID0gZXhpdFN0YXRlLmV4aXQ7CisgICAgaWYgKCFleGl0S2luZE1heUpldHRpc29u
KGV4aXQubV9raW5kKSkgeworICAgICAgICAvLyBGSVhNRTogV2UgbWF5IHdhbnQgdG8gbm90aWNl
IHRoYXQgd2UncmUgZnJlcXVlbnRseSBleGl0aW5nCisgICAgICAgIC8vIGF0IGFuIG9wX2NhdGNo
IHRoYXQgd2UgZGlkbid0IGNvbXBpbGUgYW4gZW50cnlwb2ludCBmb3IsIGFuZAorICAgICAgICAv
LyB0aGVuIHRyaWdnZXIgYSByZW9wdGltaXphdGlvbiBvZiB0aGlzIENvZGVCbG9jazoKKyAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTg0MgorICAg
ICAgICByZXR1cm4gT3B0aW1pemVBY3Rpb246Ok5vbmU7CisgICAgfQorCisgICAgZXhpdC5tX2Nv
dW50Kys7CisgICAgbV9vc3JFeGl0Q291bnRlcisrOworCisgICAgLy8gbWxhbSBPcGVyYXRpbmcg
b24gYmFzZWxpbmVDb2RlQmxvY2sgbm93LgorCisgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVC
bG9jayA9IGV4aXRTdGF0ZS5iYXNlbGluZUNvZGVCbG9jazsKKyAgICBBU1NFUlQoYmFzZWxpbmVD
b2RlQmxvY2sgPT0gYmFzZWxpbmVBbHRlcm5hdGl2ZSgpKTsKKyAgICBpZiAoVU5MSUtFTFkoYmFz
ZWxpbmVDb2RlQmxvY2stPmppdEV4ZWN1dGVDb3VudGVyKCkuaGFzQ3Jvc3NlZFRocmVzaG9sZCgp
KSkKKyAgICAgICAgcmV0dXJuIE9wdGltaXplQWN0aW9uOjpSZW9wdGltaXplTm93OworCisgICAg
Ly8gV2Ugd2FudCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYSBwb3NzaWJpbGl0eSB0aGF0IHdl
J3JlIGluIGEgbG9vcC4gRm9yIHRoZSBvdXRlcm1vc3QKKyAgICAvLyBjb2RlIGJsb2NrIGluIHRo
ZSBpbmxpbmUgc3RhY2ssIHdlIGhhbmRsZSB0aGlzIGFwcHJvcHJpYXRlbHkgYnkgaGF2aW5nIHRo
ZSBsb29wIE9TUiB0cmlnZ2VyCisgICAgLy8gY2hlY2sgdGhlIGV4aXQgY291bnQgb2YgdGhlIHJl
cGxhY2VtZW50IG9mIHRoZSBDb2RlQmxvY2sgZnJvbSB3aGljaCB3ZSBhcmUgT1NSaW5nLiBUaGUK
KyAgICAvLyBwcm9ibGVtIGlzIHRoZSBpbmxpbmVkIGZ1bmN0aW9ucywgd2hpY2ggbWlnaHQgYWxz
byBoYXZlIGxvb3BzLCBidXQgd2hvc2UgYmFzZWxpbmUgdmVyc2lvbnMKKyAgICAvLyBkb24ndCBr
bm93IHdoZXJlIHRvIGxvb2sgZm9yIHRoZSBleGl0IGNvdW50LiBGaWd1cmUgb3V0IGlmIHRob3Nl
IGxvb3BzIGFyZSBzZXZlcmUgZW5vdWdoCisgICAgLy8gdGhhdCB3ZSBoYWQgdHJpZWQgdG8gT1NS
IGVudGVyLiBJZiBzbywgdGhlbiB3ZSBzaG91bGQgdXNlIHRoZSBsb29wIHJlb3B0aW1pemF0aW9u
IHRyaWdnZXIuCisgICAgLy8gT3RoZXJ3aXNlLCB3ZSBzaG91bGQgdXNlIHRoZSBub3JtYWwgcmVv
cHRpbWl6YXRpb24gdHJpZ2dlci4KKworICAgIGJvb2wgZGlkVHJ5VG9FbnRlckluTG9vcCA9IGZh
bHNlOworICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBleGl0Lm1f
Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZTsgaW5saW5lQ2FsbEZy
YW1lID0gaW5saW5lQ2FsbEZyYW1lLT5kaXJlY3RDYWxsZXIuaW5saW5lQ2FsbEZyYW1lKSB7Cisg
ICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLT5vd25lclNjcmlw
dEV4ZWN1dGFibGUoKS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgpKSB7CisgICAgICAgICAgICBkaWRU
cnlUb0VudGVySW5Mb29wID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgfQorCisgICAgdWludDMyX3QgZXhpdENvdW50VGhyZXNob2xkID0gZGlkVHJ5VG9FbnRlcklu
TG9vcAorICAgICAgICA/IGV4aXRDb3VudFRocmVzaG9sZEZvclJlb3B0aW1pemF0aW9uRnJvbUxv
b3AoKQorICAgICAgICA6IGV4aXRDb3VudFRocmVzaG9sZEZvclJlb3B0aW1pemF0aW9uKCk7CisK
KyAgICBpZiAobV9vc3JFeGl0Q291bnRlciA+IGV4aXRDb3VudFRocmVzaG9sZCkKKyAgICAgICAg
cmV0dXJuIE9wdGltaXplQWN0aW9uOjpSZW9wdGltaXplTm93OworCisgICAgLy8gVG9vIGZldyBm
YWlscy4gQWRqdXN0IHRoZSBleGVjdXRpb24gY291bnRlciBzdWNoIHRoYXQgdGhlIHRhcmdldCBp
cyB0byBvbmx5IG9wdGltaXplIGFmdGVyIGEgd2hpbGUuCisgICAgYmFzZWxpbmVDb2RlQmxvY2st
Pm1faml0RXhlY3V0ZUNvdW50ZXIuc2V0TmV3VGhyZXNob2xkRm9yT1NSRXhpdChleGl0U3RhdGUu
YWN0aXZlVGhyZXNob2xkLCBleGl0U3RhdGUubWVtb3J5VXNhZ2VBZGp1c3RlZFRocmVzaG9sZCk7
CisgICAgcmV0dXJuIE9wdGltaXplQWN0aW9uOjpOb25lOworfQorCiB2b2lkIENvZGVCbG9jazo6
b3B0aW1pemVOZXh0SW52b2NhdGlvbigpCiB7CiAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1Io
KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJl
dmlzaW9uIDIyMTY4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsMTAgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKK25hbWVzcGFjZSBERkcgeworc3RydWN0IE9TUkV4aXRTdGF0ZTsKK30gLy8gbmFtZXNwYWNl
IERGRworCiBjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM7CiBjbGFzcyBDb2RlQmxvY2tT
ZXQ7CiBjbGFzcyBFeGVjU3RhdGU7CkBAIC03NjIsOCArNzY2LDEwIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgY291bnRPU1JFeGl0KCkgeyBtX29zckV4aXRDb3VudGVyKys7IH0KIAotICAgIHVpbnQz
Ml90KiBhZGRyZXNzT2ZPU1JFeGl0Q291bnRlcigpIHsgcmV0dXJuICZtX29zckV4aXRDb3VudGVy
OyB9CisgICAgZW51bSBjbGFzcyBPcHRpbWl6ZUFjdGlvbiB7IE5vbmUsIFJlb3B0aW1pemVOb3cg
fTsKKyAgICBPcHRpbWl6ZUFjdGlvbiB1cGRhdGVPU1JFeGl0Q291bnRlckFuZENoZWNrSWZOZWVk
VG9SZW9wdGltaXplKERGRzo6T1NSRXhpdFN0YXRlJik7CiAKKyAgICAvLyBGSVhNRTogcmVtb3Zl
IHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NTE0NS4KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mT1NSRXhpdENvdW50ZXIoKSB7
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX29zckV4aXRDb3VudGVyKTsgfQog
CiAgICAgdWludDMyX3QgYWRqdXN0ZWRFeGl0Q291bnRUaHJlc2hvbGQodWludDMyX3QgZGVzaXJl
ZFRocmVzaG9sZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2tJbmxpbmVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJERkdPU1JFeGl0
QmFzZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworLy8gbWxhbSBOZWVkIHRvIHJlbW92ZSB0aGlz
IGZpbGUgaWYgd2UgZW5kIHVwIG5vdCBuZWVkaW5nIGl0LgorCit9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGlvbkNv
dW50ZXIuaAkocmV2aXNpb24gMjIxNjg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0V4ZWN1dGlvbkNvdW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw2ICs0MSw3IEBA
IGVudW0gQ291bnRpbmdWYXJpYW50IHsKIGRvdWJsZSBhcHBseU1lbW9yeVVzYWdlSGV1cmlzdGlj
cyhpbnQzMl90IHZhbHVlLCBDb2RlQmxvY2sqKTsKIGludDMyX3QgYXBwbHlNZW1vcnlVc2FnZUhl
dXJpc3RpY3NBbmRDb252ZXJ0VG9JbnQoaW50MzJfdCB2YWx1ZSwgQ29kZUJsb2NrKik7CiAKKy8v
IEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1LgogaW5saW5lIGludDMyX3QgZm9ybWF0dGVkVG90YWxFeGVj
dXRpb25Db3VudChmbG9hdCB2YWx1ZSkKIHsKICAgICB1bmlvbiB7CkBAIC01NywxMSArNTgsMTkg
QEAgcHVibGljOgogICAgIEV4ZWN1dGlvbkNvdW50ZXIoKTsKICAgICB2b2lkIGZvcmNlU2xvd1Bh
dGhDb25jdXJyZW50bHkoKTsgLy8gSWYgeW91IHVzZSB0aGlzLCBjaGVja0lmVGhyZXNob2xkQ3Jv
c3NlZEFuZFNldCgpIG1heSBzdGlsbCByZXR1cm4gZmFsc2UuCiAgICAgYm9vbCBjaGVja0lmVGhy
ZXNob2xkQ3Jvc3NlZEFuZFNldChDb2RlQmxvY2sqKTsKKyAgICBib29sIGhhc0Nyb3NzZWRUaHJl
c2hvbGQoKSBjb25zdCB7IHJldHVybiBtX2NvdW50ZXIgPj0gMDsgfQogICAgIHZvaWQgc2V0TmV3
VGhyZXNob2xkKGludDMyX3QgdGhyZXNob2xkLCBDb2RlQmxvY2sqKTsKICAgICB2b2lkIGRlZmVy
SW5kZWZpbml0ZWx5KCk7CiAgICAgZG91YmxlIGNvdW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8ZG91YmxlPihtX3RvdGFsQ291bnQpICsgbV9jb3VudGVyOyB9CiAgICAgdm9pZCBkdW1w
KFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCisgICAgdm9pZCBzZXROZXdUaHJlc2hvbGRGb3JP
U1JFeGl0KHVpbnQzMl90IGFjdGl2ZVRocmVzaG9sZCwgZG91YmxlIG1lbW9yeVVzYWdlQWRqdXN0
ZWRUaHJlc2hvbGQpCisgICAgeworICAgICAgICBtX2FjdGl2ZVRocmVzaG9sZCA9IGFjdGl2ZVRo
cmVzaG9sZDsKKyAgICAgICAgbV9jb3VudGVyID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oLW1lbW9y
eVVzYWdlQWRqdXN0ZWRUaHJlc2hvbGQpOworICAgICAgICBtX3RvdGFsQ291bnQgPSBtZW1vcnlV
c2FnZUFkanVzdGVkVGhyZXNob2xkOworICAgIH0KKwogICAgIHN0YXRpYyBpbnQzMl90IG1heGlt
dW1FeGVjdXRpb25Db3VudHNCZXR3ZWVuQ2hlY2twb2ludHMoKQogICAgIHsKICAgICAgICAgc3dp
dGNoIChjb3VudGluZ1ZhcmlhbnQpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5j
cHAJKHJldmlzaW9uIDIyMTY4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9N
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00Niw2ICs0Niw4IEBAIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgTWV0aG9kT2ZHZXQK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCisvLyBGSVhNRTogVGhpcyBpcyBiZWluZyBzdXBwbGFu
dGVkIGJ5IHJlcG9ydFZhbHVlKCkuIFJlbW92ZSB0aGlzIG9uZQorLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NSBoYXMgYmVlbiBmaXhlZC4KIHZvaWQgTWV0
aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVscGVycyYg
aml0LCBKU1ZhbHVlUmVncyByZWdzKSBjb25zdAogewogICAgIHN3aXRjaCAobV9raW5kKSB7CkBA
IC03NCw2ICs3NiwzNCBAQCB2b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRS
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAordm9pZCBNZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlOjpyZXBvcnRWYWx1ZShKU1ZhbHVlIHZhbHVlKQoreworICAgIHN3
aXRjaCAobV9raW5kKSB7CisgICAgY2FzZSBOb25lOgorICAgICAgICByZXR1cm47CisKKyAgICBj
YXNlIFJlYWR5OgorICAgICAgICAqdS5wcm9maWxlLT5zcGVjRmFpbEJ1Y2tldCgwKSA9IEpTVmFs
dWU6OmVuY29kZSh2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgTGF6eU9wZXJh
bmQ6IHsKKyAgICAgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkga2V5KHUubGF6eU9wZXJh
bmQuYnl0ZWNvZGVPZmZzZXQsIFZpcnR1YWxSZWdpc3Rlcih1LmxhenlPcGVyYW5kLm9wZXJhbmQp
KTsKKworICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHUubGF6eU9wZXJhbmQuY29k
ZUJsb2NrLT5tX2xvY2spOworICAgICAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogcHJvZmls
ZSA9CisgICAgICAgICAgICB1LmxhenlPcGVyYW5kLmNvZGVCbG9jay0+bGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVzKCkuYWRkKGxvY2tlciwga2V5KTsKKyAgICAgICAgKnByb2ZpbGUtPnNwZWNGYWls
QnVja2V0KDApID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGNhc2UgQXJpdGhQcm9maWxlUmVhZHk6IHsKKyAgICAgICAgdS5hcml0aFByb2Zp
bGUtPm9ic2VydmVSZXN1bHQodmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfSB9CisKKyAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5oCShyZXZpc2lvbiAyMjE2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcwLDkg
KzcwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgQ29kZUJsb2NrKiwgY29uc3QgTGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGVLZXkmKTsKICAgICAKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29u
c3QgeyByZXR1cm4gbV9raW5kICE9IE5vbmU7IH0KLSAgICAKKworICAgIC8vIEZJWE1FOiBlbWl0
UmVwb3J0VmFsdWUgaXMgYmVpbmcgc3VwcGxhbnRlZCBieSByZXBvcnRWYWx1ZSgpLiBSZW1vdmUg
dGhpcyBvbmUKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc1MTQ1IGhhcyBiZWVuIGZpeGVkLgogICAgIHZvaWQgZW1pdFJlcG9ydFZhbHVlKENDYWxsSGVs
cGVycyYsIEpTVmFsdWVSZWdzKSBjb25zdDsKLSAgICAKKyAgICB2b2lkIHJlcG9ydFZhbHVlKEpT
VmFsdWUpOworCiBwcml2YXRlOgogICAgIGVudW0gS2luZCB7CiAgICAgICAgIE5vbmUsCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAyMjE2ODcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTQsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC04OSw3ICs4OSw3IEBAIHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBjb21w
aWxlSW1wbCgKICAgICAKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBhbnkgc3R1YnMgdGhhdCB0aGUg
REZHIGlzIGdvaW5nIHRvIHVzZSBhcmUgaW5pdGlhbGl6ZWQuIFdlIHdhbnQgdG8KICAgICAvLyBt
YWtlIHN1cmUgdGhhdCBhbGwgSklUIGNvZGUgZ2VuZXJhdGlvbiBkb2VzIGZpbmFsaXphdGlvbiBv
biB0aGUgbWFpbiB0aHJlYWQuCi0gICAgdm0uZ2V0Q1RJU3R1Yihvc3JFeGl0R2VuZXJhdGlvblRo
dW5rR2VuZXJhdG9yKTsKKyAgICB2bS5nZXRDVElTdHViKG9zckV4aXRUaHVua0dlbmVyYXRvcik7
CiAgICAgdm0uZ2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0
b3IpOwogICAgIHZtLmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcik7CiAgICAgdm0u
Z2V0Q1RJU3R1YihsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCShyZXZpc2lvbiAyMjE2ODcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjUsMTggKzIyNSw2IEBAIHZvaWQgSklUQ29kZTo6dmFsaWRhdGVSZWZlcmVuY2VzKGNv
bnN0IFQKICAgICBtaW5pZmllZERGRy52YWxpZGF0ZVJlZmVyZW5jZXModHJhY2tlZFJlZmVyZW5j
ZXMpOwogfQogCi1zdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IEpJVENvZGU6OmZpbmRQQyhDb2Rl
QmxvY2sqLCB2b2lkKiBwYykKLXsKLSAgICBmb3IgKE9TUkV4aXQmIGV4aXQgOiBvc3JFeGl0KSB7
Ci0gICAgICAgIGlmIChFeGVjdXRhYmxlTWVtb3J5SGFuZGxlKiBoYW5kbGUgPSBleGl0Lm1fY29k
ZS5leGVjdXRhYmxlTWVtb3J5KCkpIHsKLSAgICAgICAgICAgIGlmIChoYW5kbGUtPnN0YXJ0KCkg
PD0gcGMgJiYgcGMgPCBoYW5kbGUtPmVuZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om9wdGlvbmFsPENvZGVPcmlnaW4+KGV4aXQubV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUpOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQogdm9pZCBK
SVRDb2RlOjpmaW5hbGl6ZU9TUkVudHJ5cG9pbnRzKCkKIHsKICAgICBhdXRvIGNvbXBhcmF0b3Ig
PSBbXSAoY29uc3QgYXV0byYgYSwgY29uc3QgYXV0byYgYikgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgJKHJldmlzaW9uIDIyMTY4NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsOCArMTI2
LDYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBjb21tb25EYXRhT2Zmc2V0KCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpJVENvZGUsIGNvbW1vbik7IH0KIAotICAgIHN0ZDo6
b3B0aW9uYWw8Q29kZU9yaWdpbj4gZmluZFBDKENvZGVCbG9jayosIHZvaWQqIHBjKSBvdmVycmlk
ZTsKLSAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEpJVENvbXBpbGVyOyAvLyBBbGxv
dyBKSVRDb21waWxlciB0byBjYWxsIHNldENvZGVSZWYoKS4KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDIyMTY4NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04NSw4ICs4NSw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmtPU1JFeGl0cygpCiAg
ICAgICAgIH0KICAgICB9CiAgICAgCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRU
aHVuayA9IHZtKCktPmdldENUSVN0dWIob3NyRXhpdFRodW5rR2VuZXJhdG9yKTsKKyAgICBDb2Rl
TG9jYXRpb25MYWJlbCBvc3JFeGl0VGh1bmtMYWJlbCA9IENvZGVMb2NhdGlvbkxhYmVsKG9zckV4
aXRUaHVuay5jb2RlKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2ppdENvZGUt
Pm9zckV4aXQuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgT1NSRXhpdCYgZXhpdCA9IG1faml0Q29k
ZS0+b3NyRXhpdFtpXTsKICAgICAgICAgT1NSRXhpdENvbXBpbGF0aW9uSW5mbyYgaW5mbyA9IG1f
ZXhpdENvbXBpbGF0aW9uSW5mb1tpXTsKICAgICAgICAgSnVtcExpc3QmIGZhaWx1cmVKdW1wcyA9
IGluZm8ubV9mYWlsdXJlSnVtcHM7CiAgICAgICAgIGlmICghZmFpbHVyZUp1bXBzLmVtcHR5KCkp
CkBAIC05Niw3ICs5NywxMCBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rT1NSRXhpdHMoKQogCiAg
ICAgICAgIGppdEFzc2VydEhhc1ZhbGlkQ2FsbEZyYW1lKCk7CiAgICAgICAgIHN0b3JlMzIoVHJ1
c3RlZEltbTMyKGkpLCAmdm0oKS0+b3NyRXhpdEluZGV4KTsKLSAgICAgICAgZXhpdC5zZXRQYXRj
aGFibGVDb2RlT2Zmc2V0KHBhdGNoYWJsZUp1bXAoKSk7CisgICAgICAgIEp1bXAgdGFyZ2V0ID0g
anVtcCgpOworICAgICAgICBhZGRMaW5rVGFzayhbdGFyZ2V0LCBvc3JFeGl0VGh1bmtMYWJlbF0g
KExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayh0
YXJnZXQsIG9zckV4aXRUaHVua0xhYmVsKTsKKyAgICAgICAgfSk7CiAgICAgfQogfQogCkBAIC0z
MDMsMTMgKzMwNyw4IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0IK
ICAgICAgICAgICAgIGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKHJlY29yZC5jYWxsKSk7
CiAgICAgfQogICAgIAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0VGh1bmsgPSB2
bSgpLT5nZXRDVElTdHViKG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpOwotICAgIENv
ZGVMb2NhdGlvbkxhYmVsIHRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsKG9zckV4aXRUaHVuay5j
b2RlKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2ppdENvZGUtPm9zckV4aXQu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgT1NSRXhpdCYgZXhpdCA9IG1faml0Q29kZS0+b3NyRXhp
dFtpXTsKICAgICAgICAgT1NSRXhpdENvbXBpbGF0aW9uSW5mbyYgaW5mbyA9IG1fZXhpdENvbXBp
bGF0aW9uSW5mb1tpXTsKLSAgICAgICAgbGlua0J1ZmZlci5saW5rKGV4aXQuZ2V0UGF0Y2hhYmxl
Q29kZU9mZnNldEFzSnVtcCgpLCB0YXJnZXQpOwotICAgICAgICBleGl0LmNvcnJlY3RKdW1wKGxp
bmtCdWZmZXIpOwogICAgICAgICBpZiAoaW5mby5tX3JlcGxhY2VtZW50U291cmNlLmlzU2V0KCkp
IHsKICAgICAgICAgICAgIG1faml0Q29kZS0+Y29tbW9uLmp1bXBSZXBsYWNlbWVudHMuYXBwZW5k
KEp1bXBSZXBsYWNlbWVudCgKICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yo
aW5mby5tX3JlcGxhY2VtZW50U291cmNlKSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0LmNwcAkocmV2aXNpb24gMjIxNjg3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw1NyArMjksMjQ1
IEBACiAjaWYgRU5BQkxFKERGR19KSVQpCiAKICNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIK
KyNpbmNsdWRlICJDbG9uZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2lu
Y2x1ZGUgIkRGR01heUV4aXQuaCIKLSNpbmNsdWRlICJERkdPU1JFeGl0Q29tcGlsZXJDb21tb24u
aCIKICNpbmNsdWRlICJERkdPU1JFeGl0UHJlcGFyYXRpb24uaCIKICNpbmNsdWRlICJERkdPcGVy
YXRpb25zLmgiCiAjaW5jbHVkZSAiREZHU3BlY3VsYXRpdmVKSVQuaCIKLSNpbmNsdWRlICJGcmFt
ZVRyYWNlcnMuaCIKKyNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJJbmxp
bmVDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZS5oIgogI2luY2x1ZGUgIk9wZXJhbmRzSW5saW5lcy5oIgorI2luY2x1ZGUgIlByb2JlQ29u
dGV4dC5oIgorI2luY2x1ZGUgIlByb2JlRnJhbWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogCi1PU1JFeGl0OjpPU1JFeGl0KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3Vy
Y2UganNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSB2YWx1ZVByb2Zp
bGUsIFNwZWN1bGF0aXZlSklUKiBqaXQsIHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1bnNpZ25lZCBy
ZWNvdmVyeUluZGV4KQotICAgIDogT1NSRXhpdEJhc2Uoa2luZCwgaml0LT5tX29yaWdpbi5mb3JF
eGl0LCBqaXQtPm1fb3JpZ2luLnNlbWFudGljLCBqaXQtPm1fb3JpZ2luLndhc0hvaXN0ZWQpCi0g
ICAgLCBtX2pzVmFsdWVTb3VyY2UoanNWYWx1ZVNvdXJjZSkKLSAgICAsIG1fdmFsdWVQcm9maWxl
KHZhbHVlUHJvZmlsZSkKLSAgICAsIG1fcmVjb3ZlcnlJbmRleChyZWNvdmVyeUluZGV4KQotICAg
ICwgbV9zdHJlYW1JbmRleChzdHJlYW1JbmRleCkKK3VzaW5nIENQVVN0YXRlID0gUHJvYmU6OkNQ
VVN0YXRlOwordXNpbmcgQ29udGV4dCA9IFByb2JlOjpDb250ZXh0OwordXNpbmcgRnJhbWUgPSBQ
cm9iZTo6RnJhbWU7CisKK3N0YXRpYyB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoUHJvYmU6
OkNvbnRleHQmLCBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrLCBjb25zdCBPU1JFeGl0QmFz
ZSYpOworc3RhdGljIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KFByb2JlOjpDb250ZXh0Jiwg
Vk0mLCBDb2RlQmxvY2sqLCBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrLCBPU1JFeGl0Jik7
CitzdGF0aWMgdm9pZCBwcmludE9TUkV4aXQoQ29udGV4dCYsIHVpbnQzMl90IG9zckV4aXRJbmRl
eCwgY29uc3QgT1NSRXhpdCYpOworCitzdGF0aWMgSlNWYWx1ZSBqc1ZhbHVlRm9yKENQVVN0YXRl
JiBjcHUsIEpTVmFsdWVTb3VyY2Ugc291cmNlKQogewotICAgIGJvb2wgY2FuRXhpdCA9IGppdC0+
bV9vcmlnaW4uZXhpdE9LOwotICAgIGlmICghY2FuRXhpdCAmJiBqaXQtPm1fY3VycmVudE5vZGUp
IHsKLSAgICAgICAgRXhpdE1vZGUgZXhpdE1vZGUgPSBtYXlFeGl0KGppdC0+bV9qaXQuZ3JhcGgo
KSwgaml0LT5tX2N1cnJlbnROb2RlKTsKLSAgICAgICAgY2FuRXhpdCA9IGV4aXRNb2RlID09IEV4
aXRNb2RlOjpFeGl0cyB8fCBleGl0TW9kZSA9PSBFeGl0TW9kZTo6RXhpdHNGb3JFeGNlcHRpb25z
OworICAgIGlmIChzb3VyY2UuaXNBZGRyZXNzKCkpIHsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQ7
CisgICAgICAgIHN0ZDo6bWVtY3B5KCZyZXN1bHQsIGNwdS5ncHI8dWludDhfdCo+KHNvdXJjZS5i
YXNlKCkpICsgc291cmNlLm9mZnNldCgpLCBzaXplb2YoSlNWYWx1ZSkpOworICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KLSAgICBERkdfQVNTRVJUKGppdC0+bV9qaXQuZ3JhcGgoKSwgaml0
LT5tX2N1cnJlbnROb2RlLCBjYW5FeGl0KTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHJldHVy
biBKU1ZhbHVlOjpkZWNvZGUoY3B1LmdwcjxFbmNvZGVkSlNWYWx1ZT4oc291cmNlLmdwcigpKSk7
CisjZWxzZQorICAgIGlmIChzb3VyY2UuaGFzS25vd25UYWcoKSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWUoc291cmNlLnRhZygpLCBjcHUuZ3ByPGludDMyX3Q+KHNvdXJjZS5wYXlsb2FkR1BSKCkp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZShjcHUuZ3ByPGludDMyX3Q+KHNvdXJjZS50YWdHUFIoKSks
IGNwdS5ncHI8aW50MzJfdD4oc291cmNlLnBheWxvYWRHUFIoKSkpOworI2VuZGlmCiB9CiAKLXZv
aWQgT1NSRXhpdDo6c2V0UGF0Y2hhYmxlQ29kZU9mZnNldChNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hh
YmxlSnVtcCBjaGVjaykKKyNpZiBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAK
KworLy8gQmFzZWQgb24gQXNzZW1ibHlIZWxwZXJzOjplbWl0UmVzdG9yZUNhbGxlZVNhdmVzRm9y
KCkuCitzdGF0aWMgdm9pZCByZXN0b3JlQ2FsbGVlU2F2ZXNGb3IoQ29udGV4dCYgY29udGV4dCwg
Q29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgbV9wYXRjaGFibGVDb2RlT2Zmc2V0ID0gY2hl
Y2subV9qdW1wLm1fbGFiZWwubV9vZmZzZXQ7CisgICAgQVNTRVJUKGNvZGVCbG9jayk7CisKKyAg
ICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2stPmNhbGxlZVNh
dmVSZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlclNldCBkb250UmVzdG9yZVJlZ2lzdGVycyA9IFJl
Z2lzdGVyU2V0KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxs
RlBScygpKTsKKyAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUo
KTsKKworICAgIHVpbnRwdHJfdCogcGh5c2ljYWxTdGFja0ZyYW1lID0gY29udGV4dC5mcDx1aW50
cHRyX3QqPigpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBp
KyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChp
KTsKKyAgICAgICAgaWYgKGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgLy8gVGhlIGNhbGxlZSBzYXZlZCB2YWx1ZXMg
Y29tZSBmcm9tIHRoZSBvcmlnaW5hbCBzdGFjaywgbm90IHRoZSByZWNvdmVyZWQgc3RhY2suCisg
ICAgICAgIC8vIEhlbmNlLCB3ZSByZWFkIHRoZSB2YWx1ZXMgZGlyZWN0bHkgZnJvbSB0aGUgcGh5
c2ljYWwgc3RhY2sgbWVtb3J5IGluc3RlYWQgb2YKKyAgICAgICAgLy8gZ29pbmcgdGhyb3VnaCBj
b250ZXh0LnN0YWNrKCkuCisgICAgICAgIEFTU0VSVCghKGVudHJ5Lm9mZnNldCgpICUgc2l6ZW9m
KHVpbnRwdHJfdCkpKTsKKyAgICAgICAgY29udGV4dC5ncHIoZW50cnkucmVnKCkuZ3ByKCkpID0g
cGh5c2ljYWxTdGFja0ZyYW1lW2VudHJ5Lm9mZnNldCgpIC8gc2l6ZW9mKHVpbnRwdHJfdCldOwor
ICAgIH0KK30KKworLy8gQmFzZWQgb24gQXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZUNhbGxlZVNh
dmVzRm9yKCkuCitzdGF0aWMgdm9pZCBzYXZlQ2FsbGVlU2F2ZXNGb3IoQ29udGV4dCYgY29udGV4
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgYXV0byYgc3RhY2sgPSBjb250ZXh0LnN0
YWNrKCk7CisgICAgQVNTRVJUKGNvZGVCbG9jayk7CisKKyAgICBSZWdpc3RlckF0T2Zmc2V0TGlz
dCogY2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBS
ZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJlZ2lzdGVyU2V0Ojpz
dGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxsRlBScygpKTsKKyAgICB1bnNpZ25lZCBy
ZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKKworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNl
dCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChpKTsKKyAgICAgICAgaWYgKGRvbnRTYXZlUmVnaXN0
ZXJzLmdldChlbnRyeS5yZWcoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgc3Rh
Y2suc2V0KGNvbnRleHQuZnAoKSwgZW50cnkub2Zmc2V0KCksIGNvbnRleHQuZ3ByPHVpbnRwdHJf
dD4oZW50cnkucmVnKCkuZ3ByKCkpKTsKKyAgICB9CiB9CiAKLU1hY3JvQXNzZW1ibGVyOjpKdW1w
IE9TUkV4aXQ6OmdldFBhdGNoYWJsZUNvZGVPZmZzZXRBc0p1bXAoKSBjb25zdAorLy8gQmFzZWQg
b24gQXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1FbnRyeUZyYW1lQ2Fs
bGVlU2F2ZXNCdWZmZXIoKS4KK3N0YXRpYyB2b2lkIHJlc3RvcmVDYWxsZWVTYXZlc0Zyb21WTUVu
dHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihDb250ZXh0JiBjb250ZXh0KQogewotICAgIHJldHVy
biBNYWNyb0Fzc2VtYmxlcjo6SnVtcChBc3NlbWJsZXJMYWJlbChtX3BhdGNoYWJsZUNvZGVPZmZz
ZXQpKTsKKyAgICBWTSYgdm0gPSAqY29udGV4dC5hcmc8Vk0qPigpOworICAgIGF1dG8mIHN0YWNr
ID0gY29udGV4dC5zdGFjaygpOworCisgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGFsbENhbGxl
ZVNhdmVzID0gVk06OmdldEFsbENhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKTsKKyAgICBSZWdp
c3RlclNldCBkb250UmVzdG9yZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVy
cygpOworICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBhbGxDYWxsZWVTYXZlcy0+c2l6ZSgp
OworCisgICAgVk1FbnRyeVJlY29yZCogZW50cnlSZWNvcmQgPSB2bUVudHJ5UmVjb3JkKHZtLnRv
cFZNRW50cnlGcmFtZSk7CisgICAgdm9pZCogY2FsbGVlU2F2ZUJ1ZmZlciA9IGVudHJ5UmVjb3Jk
LT5jYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyOworCisgICAgLy8gUmVzdG9yZSBhbGwgY2FsbGVl
IHNhdmVzLgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKysp
IHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5hdChp
KTsKKyAgICAgICAgaWYgKGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGVudHJ5LnJlZygpLmlzR1BSKCkpCisg
ICAgICAgICAgICBjb250ZXh0LmdwcihlbnRyeS5yZWcoKS5ncHIoKSkgPSBzdGFjay5nZXQ8dWlu
dHB0cl90PihjYWxsZWVTYXZlQnVmZmVyLCBlbnRyeS5vZmZzZXQoKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGNvbnRleHQuZ3ByKGVudHJ5LnJlZygpLmdwcigpKSA9IHN0YWNrLmdldDxk
b3VibGU+KGNhbGxlZVNhdmVCdWZmZXIsIGVudHJ5Lm9mZnNldCgpKTsKKyAgICB9Cit9CisKKy8v
IEJhc2VkIG9uIEFzc2VtYmx5SGVscGVyczo6Y29weUNhbGxlZVNhdmVzVG9WTUVudHJ5RnJhbWVD
YWxsZWVTYXZlc0J1ZmZlcigpLgorc3RhdGljIHZvaWQgY29weUNhbGxlZVNhdmVzVG9WTUVudHJ5
RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihDb250ZXh0JiBjb250ZXh0KQoreworICAgIFZNJiB2bSA9
ICpjb250ZXh0LmFyZzxWTSo+KCk7CisgICAgYXV0byYgc3RhY2sgPSBjb250ZXh0LnN0YWNrKCk7
CisKKyAgICBWTUVudHJ5UmVjb3JkKiBlbnRyeVJlY29yZCA9IHZtRW50cnlSZWNvcmQodm0udG9w
Vk1FbnRyeUZyYW1lKTsKKyAgICB2b2lkKiBjYWxsZWVTYXZlQnVmZmVyID0gZW50cnlSZWNvcmQt
PmNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXI7CisKKyAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCog
YWxsQ2FsbGVlU2F2ZXMgPSBWTTo6Z2V0QWxsQ2FsbGVlU2F2ZVJlZ2lzdGVyT2Zmc2V0cygpOwor
ICAgIFJlZ2lzdGVyU2V0IGRvbnRDb3B5UmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0YWNrUmVn
aXN0ZXJzKCk7CisgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGFsbENhbGxlZVNhdmVzLT5z
aXplKCk7CisKKyAgICBBU1NFUlQoaXM2NEJpdCgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50
cnkgPSBhbGxDYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgIGlmIChkb250Q29weVJlZ2lzdGVy
cy5nZXQoZW50cnkucmVnKCkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChl
bnRyeS5yZWcoKS5pc0dQUigpKQorICAgICAgICAgICAgc3RhY2suc2V0KGNhbGxlZVNhdmVCdWZm
ZXIsIGVudHJ5Lm9mZnNldCgpLCBjb250ZXh0Lmdwcjx1aW50cHRyX3Q+KGVudHJ5LnJlZygpLmdw
cigpKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHN0YWNrLnNldChjYWxsZWVTYXZlQnVm
ZmVyLCBlbnRyeS5vZmZzZXQoKSwgY29udGV4dC5mcHI8dWludHB0cl90PihlbnRyeS5yZWcoKS5m
cHIoKSkpOworICAgIH0KIH0KIAotQ29kZUxvY2F0aW9uSnVtcCBPU1JFeGl0Ojpjb2RlTG9jYXRp
b25Gb3JSZXBhdGNoKENvZGVCbG9jayogZGZnQ29kZUJsb2NrKSBjb25zdAorLy8gQmFzZWQgb24g
QXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZU9yQ29weUNhbGxlZVNhdmVzRm9yKCkuCitzdGF0aWMg
dm9pZCBzYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoQ29udGV4dCYgY29udGV4dCwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFZpcnR1YWxSZWdpc3RlciBvZmZzZXRWaXJ0dWFsUmVnaXN0ZXIsIGJvb2wg
d2FzQ2FsbGVkVmlhVGFpbENhbGwpCiB7Ci0gICAgcmV0dXJuIENvZGVMb2NhdGlvbkp1bXAoZGZn
Q29kZUJsb2NrLT5qaXRDb2RlKCktPmRhdGFBZGRyZXNzQXRPZmZzZXQobV9wYXRjaGFibGVDb2Rl
T2Zmc2V0KSk7CisgICAgRnJhbWUgZnJhbWUoY29udGV4dC5mcCgpLCBjb250ZXh0LnN0YWNrKCkp
OworICAgIEFTU0VSVChjb2RlQmxvY2spOworCisgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNh
bGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgUmVnaXN0
ZXJTZXQgZG9udFNhdmVSZWdpc3RlcnMgPSBSZWdpc3RlclNldChSZWdpc3RlclNldDo6c3RhY2tS
ZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OmFsbEZQUnMoKSk7CisgICAgdW5zaWduZWQgcmVnaXN0
ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5zaXplKCk7CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
IFJlZ2lzdGVyU2V0IGJhc2VsaW5lQ2FsbGVlU2F2ZXMgPSBSZWdpc3RlclNldDo6bGxpbnRCYXNl
bGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyNlbmRpZgorCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0
IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAoZG9udFNhdmVSZWdpc3Rl
cnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHVp
bnRwdHJfdCBzYXZlZFJlZ2lzdGVyVmFsdWU7CisKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAg
ICAgICBVTlVTRURfUEFSQU0od2FzQ2FsbGVkVmlhVGFpbENhbGwpOworI2Vsc2UKKyAgICAgICAg
aWYgKHdhc0NhbGxlZFZpYVRhaWxDYWxsICYmIGJhc2VsaW5lQ2FsbGVlU2F2ZXMuZ2V0KGVudHJ5
LnJlZygpKSkKKyAgICAgICAgICAgIHNhdmVkUmVnaXN0ZXJWYWx1ZSA9IGZyYW1lLmdldDx1aW50
cHRyX3Q+KGVudHJ5Lm9mZnNldCgpKTsKKyAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgICAg
ICBzYXZlZFJlZ2lzdGVyVmFsdWUgPSBjb250ZXh0LmdwcihlbnRyeS5yZWcoKS5ncHIoKSk7CisK
KyAgICAgICAgZnJhbWUuc2V0KG9mZnNldFZpcnR1YWxSZWdpc3Rlci5vZmZzZXRJbkJ5dGVzKCkg
KyBlbnRyeS5vZmZzZXQoKSwgc2F2ZWRSZWdpc3RlclZhbHVlKTsKKyAgICB9CiB9CisjZWxzZSAv
LyBub3QgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgPiAwCiAKLXZvaWQgT1NSRXhp
dDo6Y29ycmVjdEp1bXAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKK3N0YXRpYyB2b2lkIHJlc3Rv
cmVDYWxsZWVTYXZlc0ZvcihDb250ZXh0JiwgQ29kZUJsb2NrKikgeyB9CitzdGF0aWMgdm9pZCBz
YXZlQ2FsbGVlU2F2ZXNGb3IoQ29udGV4dCYsIENvZGVCbG9jayopIHsgfQorc3RhdGljIHZvaWQg
cmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKENvbnRl
eHQmKSB7IH0KK3N0YXRpYyB2b2lkIGNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVl
U2F2ZXNCdWZmZXIoQ29udGV4dCYpIHsgfQorc3RhdGljIHZvaWQgc2F2ZU9yQ29weUNhbGxlZVNh
dmVzRm9yKENvbnRleHQmLCBDb2RlQmxvY2sqLCBWaXJ0dWFsUmVnaXN0ZXIsIGJvb2wpIHsgfQor
CisjZW5kaWYgLy8gTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgPiAwCisKK3N0YXRp
YyBKU0NlbGwqIGNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4aXQoQ29udGV4dCYgY29udGV4
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1l
LCBKU0Z1bmN0aW9uKiBjYWxsZWUsIGludDMyX3QgYXJndW1lbnRDb3VudCkKIHsKLSAgICBNYWNy
b0Fzc2VtYmxlcjo6TGFiZWwgbGFiZWw7Ci0gICAgbGFiZWwubV9sYWJlbC5tX29mZnNldCA9IG1f
cGF0Y2hhYmxlQ29kZU9mZnNldDsKLSAgICBtX3BhdGNoYWJsZUNvZGVPZmZzZXQgPSBsaW5rQnVm
ZmVyLm9mZnNldE9mKGxhYmVsKTsKKyAgICBWTSYgdm0gPSAqY29udGV4dC5hcmc8Vk0qPigpOwor
CisgICAgQVNTRVJUKHZtLmhlYXAuaXNEZWZlcnJlZCgpKTsKKworICAgIGlmIChpbmxpbmVDYWxs
RnJhbWUpCisgICAgICAgIGNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2Fs
bEZyYW1lKGlubGluZUNhbGxGcmFtZSk7CisKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBhcmd1bWVu
dENvdW50IC0gMTsKKyAgICB1bnNpZ25lZCBjYXBhY2l0eSA9IHN0ZDo6bWF4KGxlbmd0aCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gMSkpOworICAg
IERpcmVjdEFyZ3VtZW50cyogcmVzdWx0ID0gRGlyZWN0QXJndW1lbnRzOjpjcmVhdGUoCisgICAg
ICAgIHZtLCBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1
cmUoKSwgbGVuZ3RoLCBjYXBhY2l0eSk7CisKKyAgICByZXN1bHQtPmNhbGxlZSgpLnNldCh2bSwg
cmVzdWx0LCBjYWxsZWUpOworCisgICAgdm9pZCogZnJhbWVCYXNlID0gY29udGV4dC5mcDxSZWdp
c3Rlcio+KCkgKyAoaW5saW5lQ2FsbEZyYW1lID8gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNl
dCA6IDApOworICAgIEZyYW1lIGZyYW1lKGZyYW1lQmFzZSwgY29udGV4dC5zdGFjaygpKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspCisgICAgICAgIHJlc3VsdC0+c2V0SW5k
ZXhRdWlja2x5KHZtLCBpLCBmcmFtZS5nZXRBcmd1bWVudDxKU1ZhbHVlPihpKSk7CisKKyAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIE9TUkV4aXQ6OmVtaXRSZXN0b3JlQXJndW1lbnRzKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMp
CitzdGF0aWMgSlNDZWxsKiBjcmVhdGVDbG9uZWRBcmd1bWVudHNEdXJpbmdFeGl0KENvbnRleHQm
IGNvbnRleHQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNh
bGxGcmFtZSwgSlNGdW5jdGlvbiogY2FsbGVlLCBpbnQzMl90IGFyZ3VtZW50Q291bnQpCiB7Cisg
ICAgVk0mIHZtID0gKmNvbnRleHQuYXJnPFZNKj4oKTsKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBj
b250ZXh0LmZwPEV4ZWNTdGF0ZSo+KCk7CisKKyAgICBBU1NFUlQodm0uaGVhcC5pc0RlZmVycmVk
KCkpOworCisgICAgaWYgKGlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgY29kZUJsb2NrID0gYmFz
ZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1lKTsKKworICAg
IHVuc2lnbmVkIGxlbmd0aCA9IGFyZ3VtZW50Q291bnQgLSAxOworICAgIENsb25lZEFyZ3VtZW50
cyogcmVzdWx0ID0gQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGVFbXB0eSgKKyAgICAgICAgdm0sIGNv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmNsb25lZEFyZ3VtZW50c1N0cnVjdHVyZSgpLCBjYWxs
ZWUsIGxlbmd0aCk7CisKKyAgICB2b2lkKiBmcmFtZUJhc2UgPSBjb250ZXh0LmZwPFJlZ2lzdGVy
Kj4oKSArIChpbmxpbmVDYWxsRnJhbWUgPyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0IDog
MCk7CisgICAgRnJhbWUgZnJhbWUoZnJhbWVCYXNlLCBjb250ZXh0LnN0YWNrKCkpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJ
bmRleChleGVjLCBpLCBmcmFtZS5nZXRBcmd1bWVudDxKU1ZhbHVlPihpKSk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworT1NSRXhpdDo6T1NSRXhpdChFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291
cmNlIGpzVmFsdWVTb3VyY2UsIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgdmFsdWVQcm9m
aWxlLCBTcGVjdWxhdGl2ZUpJVCogaml0LCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWduZWQg
cmVjb3ZlcnlJbmRleCkKKyAgICA6IE9TUkV4aXRCYXNlKGtpbmQsIGppdC0+bV9vcmlnaW4uZm9y
RXhpdCwgaml0LT5tX29yaWdpbi5zZW1hbnRpYywgaml0LT5tX29yaWdpbi53YXNIb2lzdGVkKQor
ICAgICwgbV9qc1ZhbHVlU291cmNlKGpzVmFsdWVTb3VyY2UpCisgICAgLCBtX3ZhbHVlUHJvZmls
ZSh2YWx1ZVByb2ZpbGUpCisgICAgLCBtX3JlY292ZXJ5SW5kZXgocmVjb3ZlcnlJbmRleCkKKyAg
ICAsIG1fc3RyZWFtSW5kZXgoc3RyZWFtSW5kZXgpCit7CisgICAgYm9vbCBjYW5FeGl0ID0gaml0
LT5tX29yaWdpbi5leGl0T0s7CisgICAgaWYgKCFjYW5FeGl0ICYmIGppdC0+bV9jdXJyZW50Tm9k
ZSkgeworICAgICAgICBFeGl0TW9kZSBleGl0TW9kZSA9IG1heUV4aXQoaml0LT5tX2ppdC5ncmFw
aCgpLCBqaXQtPm1fY3VycmVudE5vZGUpOworICAgICAgICBjYW5FeGl0ID0gZXhpdE1vZGUgPT0g
RXhpdE1vZGU6OkV4aXRzIHx8IGV4aXRNb2RlID09IEV4aXRNb2RlOjpFeGl0c0ZvckV4Y2VwdGlv
bnM7CisgICAgfQorICAgIERGR19BU1NFUlQoaml0LT5tX2ppdC5ncmFwaCgpLCBqaXQtPm1fY3Vy
cmVudE5vZGUsIGNhbkV4aXQpOworfQorCitzdGF0aWMgdm9pZCBlbWl0UmVzdG9yZUFyZ3VtZW50
cyhDb250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgT3BlcmFuZHM8
VmFsdWVSZWNvdmVyeT4mIG9wZXJhbmRzKQoreworICAgIEZyYW1lIGZyYW1lKGNvbnRleHQuZnAo
KSwgY29udGV4dC5zdGFjaygpKTsKKwogICAgIEhhc2hNYXA8TWluaWZpZWRJRCwgaW50PiBhbHJl
YWR5QWxsb2NhdGVkQXJndW1lbnRzOyAvLyBNYXBzIHBoYW50b20gYXJndW1lbnRzIG5vZGUgSUQg
dG8gb3BlcmFuZC4KICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMu
c2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5
ID0gb3BlcmFuZHNbaW5kZXhdOwpAQCAtOTIsMTQgKzI4MCwxMiBAQCB2b2lkIE9TUkV4aXQ6OmVt
aXRSZXN0b3JlQXJndW1lbnRzKENDYWxsCiAgICAgICAgIE1pbmlmaWVkSUQgaWQgPSByZWNvdmVy
eS5ub2RlSUQoKTsKICAgICAgICAgYXV0byBpdGVyID0gYWxyZWFkeUFsbG9jYXRlZEFyZ3VtZW50
cy5maW5kKGlkKTsKICAgICAgICAgaWYgKGl0ZXIgIT0gYWxyZWFkeUFsbG9jYXRlZEFyZ3VtZW50
cy5lbmQoKSkgewotICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVncyA9IEpTVmFsdWVSZWdzOjp3
aXRoVHdvQXZhaWxhYmxlUmVncyhHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEpOwotICAg
ICAgICAgICAgaml0LmxvYWRWYWx1ZShDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3IoaXRlci0+dmFs
dWUpLCByZWdzKTsKLSAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKHJlZ3MsIENDYWxsSGVscGVy
czo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9w
ZXJhbmQsIGZyYW1lLmdldE9wZXJhbmQ8SlNWYWx1ZT4oaXRlci0+dmFsdWUpKTsKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxp
bmVDYWxsRnJhbWUgPQotICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5qaXRDb2RlKCktPmRm
ZygpLT5taW5pZmllZERGRy5hdChpZCktPmlubGluZUNhbGxGcmFtZSgpOworICAgICAgICAgICAg
Y29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpLT5taW5pZmllZERGRy5hdChpZCktPmlubGluZUNh
bGxGcmFtZSgpOwogCiAgICAgICAgIGludCBzdGFja09mZnNldDsKICAgICAgICAgaWYgKGlubGlu
ZUNhbGxGcmFtZSkKQEAgLTEwNyw1MyArMjkzLDQ4IEBAIHZvaWQgT1NSRXhpdDo6ZW1pdFJlc3Rv
cmVBcmd1bWVudHMoQ0NhbGwKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc3RhY2tPZmZzZXQg
PSAwOwogCi0gICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lIHx8IGlubGluZUNhbGxGcmFtZS0+
aXNDbG9zdXJlQ2FsbCkgewotICAgICAgICAgICAgaml0LmxvYWRQdHIoCi0gICAgICAgICAgICAg
ICAgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKHN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xv
dDo6Y2FsbGVlKSwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBqaXQubW92ZSgKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeS5jb25z
dGFudCgpLmFzQ2VsbCgpKSwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAg
ICAgIH0KKyAgICAgICAgSlNGdW5jdGlvbiogY2FsbGVlOworICAgICAgICBpZiAoIWlubGluZUNh
bGxGcmFtZSB8fCBpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpCisgICAgICAgICAgICBj
YWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZyYW1lLmdldE9wZXJhbmQ8SlNWYWx1ZT4oc3Rh
Y2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUpLmFzQ2VsbCgpKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgY2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihpbmxpbmVDYWxsRnJh
bWUtPmNhbGxlZVJlY292ZXJ5LmNvbnN0YW50KCkuYXNDZWxsKCkpOwogCi0gICAgICAgIGlmICgh
aW5saW5lQ2FsbEZyYW1lIHx8IGlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpIHsKLSAgICAg
ICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXls
b2FkRm9yKHN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksCi0gICAg
ICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgaml0Lm1vdmUoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksCi0gICAgICAg
ICAgICAgICAgR1BSSW5mbzo6cmVnVDEpOwotICAgICAgICB9CisgICAgICAgIGludDMyX3QgYXJn
dW1lbnRDb3VudDsKKyAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUgfHwgaW5saW5lQ2FsbEZy
YW1lLT5pc1ZhcmFyZ3MoKSkKKyAgICAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBmcmFtZS5nZXRP
cGVyYW5kPGludDMyX3Q+KHN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dCwgUGF5bG9hZE9mZnNldCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFyZ3VtZW50Q291
bnQgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwogCi0gICAg
ICAgIGppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoCi0gICAgICAgICAgICBBc3NlbWJs
eUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lKSwgR1BSSW5mbzo6cmVnVDAs
IEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgSlNDZWxsKiBhcmd1bWVudHNPYmplY3Q7CiAgICAg
ICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBEaXJlY3RB
cmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQ6Ci0gICAgICAgICAgICBqaXQubW92ZShBc3NlbWJs
eUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb25DcmVh
dGVEaXJlY3RBcmd1bWVudHNEdXJpbmdFeGl0KSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAg
ICAgICAgICAgYXJndW1lbnRzT2JqZWN0ID0gY3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhp
dChjb250ZXh0LCBjb2RlQmxvY2ssIGlubGluZUNhbGxGcmFtZSwgY2FsbGVlLCBhcmd1bWVudENv
dW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENsb25lZEFyZ3VtZW50c1Ro
YXRXZXJlTm90Q3JlYXRlZDoKLSAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFy
Z3VtZW50c0R1cmluZ0V4aXQpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgICAgICBh
cmd1bWVudHNPYmplY3QgPSBjcmVhdGVDbG9uZWRBcmd1bWVudHNEdXJpbmdFeGl0KGNvbnRleHQs
IGNvZGVCbG9jaywgaW5saW5lQ2FsbEZyYW1lLCBjYWxsZWUsIGFyZ3VtZW50Q291bnQpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAg
ICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgICAgIGppdC5zdG9yZUNlbGwo
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVy
YW5kKSk7CisgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgYXJndW1lbnRzT2JqZWN0
KTsKIAogICAgICAgICBhbHJlYWR5QWxsb2NhdGVkQXJndW1lbnRzLmFkZChpZCwgb3BlcmFuZCk7
CiAgICAgfQogfQogCi12b2lkIEpJVF9PUEVSQVRJT04gT1NSRXhpdDo6Y29tcGlsZU9TUkV4aXQo
RXhlY1N0YXRlKiBleGVjKQordm9pZCBPU1JFeGl0OjpleGVjdXRlT1NSRXhpdChDb250ZXh0JiBj
b250ZXh0KQogewotICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CisgICAgVk0mIHZtID0gKmNvbnRleHQuYXJnPFZNKj4o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBjb250ZXh0LmZwPEV4ZWNTdGF0ZSo+KCk7CisgICAgQVNTRVJUKCZleGVj
LT52bSgpID09ICZ2bSk7CiAKLSAgICBpZiAodm0tPmNhbGxGcmFtZUZvckNhdGNoKQotICAgICAg
ICBSRUxFQVNFX0FTU0VSVCh2bS0+Y2FsbEZyYW1lRm9yQ2F0Y2ggPT0gZXhlYyk7CisgICAgaWYg
KHZtLmNhbGxGcmFtZUZvckNhdGNoKSB7CisgICAgICAgIGV4ZWMgPSB2bS5jYWxsRnJhbWVGb3JD
YXRjaDsKKyAgICAgICAgY29udGV4dC5mcCgpID0gZXhlYzsKKyAgICB9CiAKICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwogICAgIEFTU0VSVChjb2RlQmxvY2sp
OwpAQCAtMTYxLDgxICszNDIsMTAxIEBAIHZvaWQgSklUX09QRVJBVElPTiBPU1JFeGl0Ojpjb21w
aWxlT1NSRXgKIAogICAgIC8vIEl0J3Mgc29ydCBvZiBwcmVmZXJhYmxlIHRoYXQgd2UgZG9uJ3Qg
R0Mgd2hpbGUgaW4gaGVyZS4gQW55d2F5cywgZG9pbmcgc28gd291bGRuJ3QKICAgICAvLyByZWFs
bHkgYmUgcHJvZml0YWJsZS4KLSAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0tPmhlYXAp
OworICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyh2bS5oZWFwKTsKIAotICAgIHVpbnQzMl90
IGV4aXRJbmRleCA9IHZtLT5vc3JFeGl0SW5kZXg7CisgICAgdWludDMyX3QgZXhpdEluZGV4ID0g
dm0ub3NyRXhpdEluZGV4OwogICAgIE9TUkV4aXQmIGV4aXQgPSBjb2RlQmxvY2stPmppdENvZGUo
KS0+ZGZnKCktPm9zckV4aXRbZXhpdEluZGV4XTsKIAotICAgIGlmICh2bS0+Y2FsbEZyYW1lRm9y
Q2F0Y2gpCi0gICAgICAgIEFTU0VSVChleGl0Lm1fa2luZCA9PSBHZW5lcmljVW53aW5kKTsKLSAg
ICBpZiAoZXhpdC5pc0V4Y2VwdGlvbkhhbmRsZXIoKSkKLSAgICAgICAgQVNTRVJUX1VOVVNFRChz
Y29wZSwgISFzY29wZS5leGNlcHRpb24oKSk7Ci0gICAgCi0gICAgcHJlcGFyZUNvZGVPcmlnaW5G
b3JPU1JFeGl0KGV4ZWMsIGV4aXQubV9jb2RlT3JpZ2luKTsKLQotICAgIC8vIENvbXB1dGUgdGhl
IHZhbHVlIHJlY292ZXJpZXMuCi0gICAgT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4gb3BlcmFuZHM7
Ci0gICAgY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpLT52YXJpYWJsZUV2ZW50U3RyZWFtLnJl
Y29uc3RydWN0KGNvZGVCbG9jaywgZXhpdC5tX2NvZGVPcmlnaW4sIGNvZGVCbG9jay0+aml0Q29k
ZSgpLT5kZmcoKS0+bWluaWZpZWRERkcsIGV4aXQubV9zdHJlYW1JbmRleCwgb3BlcmFuZHMpOwot
Ci0gICAgU3BlY3VsYXRpb25SZWNvdmVyeSogcmVjb3ZlcnkgPSAwOwotICAgIGlmIChleGl0Lm1f
cmVjb3ZlcnlJbmRleCAhPSBVSU5UX01BWCkKLSAgICAgICAgcmVjb3ZlcnkgPSAmY29kZUJsb2Nr
LT5qaXRDb2RlKCktPmRmZygpLT5zcGVjdWxhdGlvblJlY292ZXJ5W2V4aXQubV9yZWNvdmVyeUlu
ZGV4XTsKLQotICAgIHsKLSAgICAgICAgQ0NhbGxIZWxwZXJzIGppdChjb2RlQmxvY2spOwotCi0g
ICAgICAgIGlmIChleGl0Lm1fa2luZCA9PSBHZW5lcmljVW53aW5kKSB7Ci0gICAgICAgICAgICAv
LyBXZSBhcmUgYWN0aW5nIGFzIGEgZGVmYWN0byBvcF9jYXRjaCBiZWNhdXNlIHdlIGFycml2ZSBo
ZXJlIGZyb20gZ2VuZXJpY1Vud2luZCgpLgotICAgICAgICAgICAgLy8gU28sIHdlIG11c3QgcmVz
dG9yZSBvdXIgY2FsbCBmcmFtZSBhbmQgc3RhY2sgcG9pbnRlci4KLSAgICAgICAgICAgIGppdC5y
ZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoKnZtKTsK
LSAgICAgICAgICAgIGppdC5sb2FkUHRyKHZtLT5hZGRyZXNzT2ZDYWxsRnJhbWVGb3JDYXRjaCgp
LCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIH0KLSAgICAgICAgaml0LmFk
ZFB0cigKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNvZGVCbG9jay0+
c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwKLSAgICAgICAgICAgIEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKKyAgICBBU1NFUlQoIXZtLmNhbGxGcmFtZUZvckNhdGNoIHx8IGV4aXQubV9raW5kID09
IEdlbmVyaWNVbndpbmQpOworICAgIEFTU0VSVF9VTlVTRUQoc2NvcGUsICFleGl0LmlzRXhjZXB0
aW9uSGFuZGxlcigpIHx8ICEhc2NvcGUuZXhjZXB0aW9uKCkpOworCisgICAgaWYgKFVOTElLRUxZ
KCFleGl0LmV4aXRTdGF0ZSkpIHsKKyAgICAgICAgLy8gV2Ugb25seSBuZWVkIHRvIGV4ZWN1dGUg
dGhpcyBibG9jayBvbmNlIGZvciBlYWNoIE9TUkV4aXQgcmVjb3JkLiBUaGUgY29tcHV0ZWQKKyAg
ICAgICAgLy8gcmVzdWx0cyB3aWxsIGJlIGNhY2hlZCBpbiB0aGUgT1NSRXhpdFN0YXRlIHJlY29y
ZCBmb3IgdXNlIG9mIHRoZSByZXN0IG9mIHRoZQorICAgICAgICAvLyBleGl0IHJhbXAgY29kZS4K
KworICAgICAgICAvLyBFbnN1cmUgd2UgaGF2ZSBiYXNlbGluZSBjb2RlQmxvY2tzIHRvIE9TUiBl
eGl0IHRvLgorICAgICAgICBwcmVwYXJlQ29kZU9yaWdpbkZvck9TUkV4aXQoZXhlYywgZXhpdC5t
X2NvZGVPcmlnaW4pOworCisgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBj
b2RlQmxvY2stPmJhc2VsaW5lQWx0ZXJuYXRpdmUoKTsKKyAgICAgICAgQVNTRVJUKGJhc2VsaW5l
Q29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworCisgICAgICAg
IC8vIENvbXB1dGUgdGhlIHZhbHVlIHJlY292ZXJpZXMuCisgICAgICAgIE9wZXJhbmRzPFZhbHVl
UmVjb3Zlcnk+IG9wZXJhbmRzOworICAgICAgICBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnKCkt
PnZhcmlhYmxlRXZlbnRTdHJlYW0ucmVjb25zdHJ1Y3QoY29kZUJsb2NrLCBleGl0Lm1fY29kZU9y
aWdpbiwgY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpLT5taW5pZmllZERGRywgZXhpdC5tX3N0
cmVhbUluZGV4LCBvcGVyYW5kcyk7CiAKLSAgICAgICAgaml0LmppdEFzc2VydEhhc1ZhbGlkQ2Fs
bEZyYW1lKCk7CisgICAgICAgIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5ID0gbnVsbHB0
cjsKKyAgICAgICAgaWYgKGV4aXQubV9yZWNvdmVyeUluZGV4ICE9IFVJTlRfTUFYKQorICAgICAg
ICAgICAgcmVjb3ZlcnkgPSAmY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpLT5zcGVjdWxhdGlv
blJlY292ZXJ5W2V4aXQubV9yZWNvdmVyeUluZGV4XTsKIAotICAgICAgICBpZiAoVU5MSUtFTFko
dm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlciAmJiBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnQ29t
bW9uKCktPmNvbXBpbGF0aW9uKSkgewotICAgICAgICAgICAgUHJvZmlsZXI6OkRhdGFiYXNlJiBk
YXRhYmFzZSA9ICp2bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyOworICAgICAgICBpbnQzMl90IGFj
dGl2ZVRocmVzaG9sZCA9IGJhc2VsaW5lQ29kZUJsb2NrLT5hZGp1c3RlZENvdW50ZXJWYWx1ZShP
cHRpb25zOjp0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCgpKTsKKyAgICAgICAg
ZG91YmxlIGFkanVzdGVkVGhyZXNob2xkID0gYXBwbHlNZW1vcnlVc2FnZUhldXJpc3RpY3NBbmRD
b252ZXJ0VG9JbnQoYWN0aXZlVGhyZXNob2xkLCBiYXNlbGluZUNvZGVCbG9jayk7CisgICAgICAg
IEFTU0VSVChhZGp1c3RlZFRocmVzaG9sZCA+IDApOworICAgICAgICBhZGp1c3RlZFRocmVzaG9s
ZCA9IEJhc2VsaW5lRXhlY3V0aW9uQ291bnRlcjo6Y2xpcHBlZFRocmVzaG9sZChjb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpLCBhZGp1c3RlZFRocmVzaG9sZCk7CisKKyAgICAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2tGb3JFeGl0ID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGlu
ZUNvZGVCbG9jayhleGl0Lm1fY29kZU9yaWdpbiwgYmFzZWxpbmVDb2RlQmxvY2spOworICAgICAg
ICBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiBkZWNvZGVkQ29kZU1hcDsKKyAgICAg
ICAgY29kZUJsb2NrRm9yRXhpdC0+aml0Q29kZU1hcCgpLT5kZWNvZGUoZGVjb2RlZENvZGVNYXAp
OworCisgICAgICAgIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCogbWFwcGluZyA9IGJpbmFyeVNl
YXJjaDxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQsIHVuc2lnbmVkPihkZWNvZGVkQ29kZU1hcCwg
ZGVjb2RlZENvZGVNYXAuc2l6ZSgpLCBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBC
eXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ6OmdldEJ5dGVjb2RlSW5kZXgpOworCisgICAgICAgIEFT
U0VSVChtYXBwaW5nKTsKKyAgICAgICAgQVNTRVJUKG1hcHBpbmctPm1fYnl0ZWNvZGVJbmRleCA9
PSBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKKworICAgICAgICBwdHJkaWZmX3Qg
ZmluYWxTdGFja1BvaW50ZXJPZmZzZXQgPSBjb2RlQmxvY2tGb3JFeGl0LT5zdGFja1BvaW50ZXJP
ZmZzZXQoKSAqIHNpemVvZihSZWdpc3Rlcik7CisKKyAgICAgICAgdm9pZCoganVtcFRhcmdldCA9
IGNvZGVCbG9ja0ZvckV4aXQtPmppdENvZGUoKS0+ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldCht
YXBwaW5nLT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKKworICAgICAgICBleGl0LmV4aXRTdGF0ZSA9
IGFkb3B0UmVmKG5ldyBPU1JFeGl0U3RhdGUoZXhpdCwgY29kZUJsb2NrLCBiYXNlbGluZUNvZGVC
bG9jaywgb3BlcmFuZHMsIHJlY292ZXJ5LCBmaW5hbFN0YWNrUG9pbnRlck9mZnNldCwgYWN0aXZl
VGhyZXNob2xkLCBhZGp1c3RlZFRocmVzaG9sZCwganVtcFRhcmdldCkpOworCisgICAgICAgIGlm
IChVTkxJS0VMWSh2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIgJiYgY29kZUJsb2NrLT5qaXRDb2Rl
KCktPmRmZ0NvbW1vbigpLT5jb21waWxhdGlvbikpIHsKKyAgICAgICAgICAgIFByb2ZpbGVyOjpE
YXRhYmFzZSYgZGF0YWJhc2UgPSAqdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyOwogICAgICAgICAg
ICAgUHJvZmlsZXI6OkNvbXBpbGF0aW9uKiBjb21waWxhdGlvbiA9IGNvZGVCbG9jay0+aml0Q29k
ZSgpLT5kZmdDb21tb24oKS0+Y29tcGlsYXRpb24uZ2V0KCk7CiAKICAgICAgICAgICAgIFByb2Zp
bGVyOjpPU1JFeGl0KiBwcm9maWxlckV4aXQgPSBjb21waWxhdGlvbi0+YWRkT1NSRXhpdCgKICAg
ICAgICAgICAgICAgICBleGl0SW5kZXgsIFByb2ZpbGVyOjpPcmlnaW5TdGFjayhkYXRhYmFzZSwg
Y29kZUJsb2NrLCBleGl0Lm1fY29kZU9yaWdpbiksCiAgICAgICAgICAgICAgICAgZXhpdC5tX2tp
bmQsIGV4aXQubV9raW5kID09IFVuY291bnRhYmxlSW52YWxpZGF0aW9uKTsKLSAgICAgICAgICAg
IGppdC5hZGQ2NChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgQ0NhbGxIZWxwZXJzOjpB
YnNvbHV0ZUFkZHJlc3MocHJvZmlsZXJFeGl0LT5jb3VudGVyQWRkcmVzcygpKSk7CisgICAgICAg
ICAgICBleGl0LmV4aXRTdGF0ZS0+cHJvZmlsZXJFeGl0ID0gcHJvZmlsZXJFeGl0OwogICAgICAg
ICB9CiAKLSAgICAgICAgY29tcGlsZUV4aXQoaml0LCAqdm0sIGV4aXQsIG9wZXJhbmRzLCByZWNv
dmVyeSk7Ci0KLSAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIGNvZGVCbG9jayk7
Ci0gICAgICAgIGV4aXQubV9jb2RlID0gRklOQUxJWkVfQ09ERV9JRigKLSAgICAgICAgICAgIHNo
b3VsZER1bXBEaXNhc3NlbWJseSgpIHx8IE9wdGlvbnM6OnZlcmJvc2VPU1IoKSB8fCBPcHRpb25z
Ojp2ZXJib3NlREZHT1NSRXhpdCgpLAotICAgICAgICAgICAgcGF0Y2hCdWZmZXIsCi0gICAgICAg
ICAgICAoIkRGRyBPU1IgZXhpdCAjJXUgKCVzLCAlcykgZnJvbSAlcywgd2l0aCBvcGVyYW5kcyA9
ICVzIiwKKyAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSB8fCBPcHRp
b25zOjp2ZXJib3NlREZHT1NSRXhpdCgpKSkgeworICAgICAgICAgICAgZGF0YUxvZ0YoIkRGRyBP
U1IgZXhpdCAjJXUgKCVzLCAlcykgZnJvbSAlcywgd2l0aCBvcGVyYW5kcyA9ICVzXG4iLAogICAg
ICAgICAgICAgICAgIGV4aXRJbmRleCwgdG9DU3RyaW5nKGV4aXQubV9jb2RlT3JpZ2luKS5kYXRh
KCksCiAgICAgICAgICAgICAgICAgZXhpdEtpbmRUb1N0cmluZyhleGl0Lm1fa2luZCksIHRvQ1N0
cmluZygqY29kZUJsb2NrKS5kYXRhKCksCi0gICAgICAgICAgICAgICAgdG9DU3RyaW5nKGlnbm9y
aW5nQ29udGV4dDxEdW1wQ29udGV4dD4ob3BlcmFuZHMpKS5kYXRhKCkpKTsKKyAgICAgICAgICAg
ICAgICB0b0NTdHJpbmcoaWdub3JpbmdDb250ZXh0PER1bXBDb250ZXh0PihvcGVyYW5kcykpLmRh
dGEoKSk7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1
bXAoZXhpdC5jb2RlTG9jYXRpb25Gb3JSZXBhdGNoKGNvZGVCbG9jayksIENvZGVMb2NhdGlvbkxh
YmVsKGV4aXQubV9jb2RlLmNvZGUoKSkpOworICAgIE9TUkV4aXRTdGF0ZSYgZXhpdFN0YXRlID0g
KmV4aXQuZXhpdFN0YXRlLmdldCgpOworICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sg
PSBleGl0U3RhdGUuYmFzZWxpbmVDb2RlQmxvY2s7CisgICAgQVNTRVJUKGJhc2VsaW5lQ29kZUJs
b2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwogCi0gICAgdm0tPm9zckV4
aXRKdW1wRGVzdGluYXRpb24gPSBleGl0Lm1fY29kZS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KTsKLX0KKyAgICBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMgPSBleGl0U3RhdGUu
b3BlcmFuZHM7CisgICAgU3BlY3VsYXRpb25SZWNvdmVyeSogcmVjb3ZlcnkgPSBleGl0U3RhdGUu
cmVjb3Zlcnk7CiAKLXZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQs
IFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QgT3BlcmFuZHM8VmFsdWVSZWNvdmVy
eT4mIG9wZXJhbmRzLCBTcGVjdWxhdGlvblJlY292ZXJ5KiByZWNvdmVyeSkKLXsKLSAgICBqaXQu
aml0QXNzZXJ0VGFnc0luUGxhY2UoKTsKKyAgICBpZiAoZXhpdC5tX2tpbmQgPT0gR2VuZXJpY1Vu
d2luZCkgeworICAgICAgICAvLyBXZSBhcmUgYWN0aW5nIGFzIGEgZGVmYWN0byBvcF9jYXRjaCBi
ZWNhdXNlIHdlIGFycml2ZSBoZXJlIGZyb20gZ2VuZXJpY1Vud2luZCgpLgorICAgICAgICAvLyBT
bywgd2UgbXVzdCByZXN0b3JlIG91ciBjYWxsIGZyYW1lIGFuZCBzdGFjayBwb2ludGVyLgorICAg
ICAgICByZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIo
Y29udGV4dCk7CisgICAgICAgIEFTU0VSVChjb250ZXh0LmZwKCkgPT0gdm0uY2FsbEZyYW1lRm9y
Q2F0Y2gpOworICAgIH0KKyAgICBjb250ZXh0LnNwKCkgPSBjb250ZXh0LmZwPHVpbnQ4X3QqPigp
ICsgKGNvZGVCbG9jay0+c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKTsK
IAotICAgIC8vIFByby1mb3JtYSBzdHVmZi4KLSAgICBpZiAoT3B0aW9uczo6cHJpbnRFYWNoT1NS
RXhpdCgpKSB7Ci0gICAgICAgIFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbyogZGVidWdJbmZv
ID0gbmV3IFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbzsKLSAgICAgICAgZGVidWdJbmZvLT5j
b2RlQmxvY2sgPSBqaXQuY29kZUJsb2NrKCk7Ci0gICAgICAgIGRlYnVnSW5mby0+a2luZCA9IGV4
aXQubV9raW5kOwotICAgICAgICBkZWJ1Z0luZm8tPmJ5dGVjb2RlT2Zmc2V0ID0gZXhpdC5tX2Nv
ZGVPcmlnaW4uYnl0ZWNvZGVJbmRleDsKKyAgICBBU1NFUlQoIShjb250ZXh0LmZwPHVpbnRwdHJf
dD4oKSAmIDB4NykpOwogCi0gICAgICAgIGppdC5kZWJ1Z0NhbGwodm0sIGRlYnVnT3BlcmF0aW9u
UHJpbnRTcGVjdWxhdGlvbkZhaWx1cmUsIGRlYnVnSW5mbyk7Ci0gICAgfQorICAgIGlmIChleGl0
U3RhdGUucHJvZmlsZXJFeGl0KQorICAgICAgICBleGl0U3RhdGUucHJvZmlsZXJFeGl0LT5pbmND
b3VudCgpOworCisgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CisgICAgRnJhbWUgZnJhbWUo
Y3B1LmZwKCksIGNvbnRleHQuc3RhY2soKSk7CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEFT
U0VSVChjcHUuZ3ByKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikgPT0gVGFnVHlwZU51
bWJlcik7CisgICAgQVNTRVJUKGNwdS5ncHIoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSA9PSBU
YWdNYXNrKTsKKyNlbmRpZgorCisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnByaW50RWFjaE9T
UkV4aXQoKSkpCisgICAgICAgIHByaW50T1NSRXhpdChjb250ZXh0LCB2bS5vc3JFeGl0SW5kZXgs
IGV4aXQpOwogCiAgICAgLy8gUGVyZm9ybSBzcGVjdWxhdGlvbiByZWNvdmVyeS4gVGhpcyBvbmx5
IGNvbWVzIGludG8gcGxheSB3aGVuIGFuIG9wZXJhdGlvbgogICAgIC8vIHN0YXJ0cyBtdXRhdGlu
ZyBzdGF0ZSBiZWZvcmUgdmVyaWZ5aW5nIHRoZSBzcGVjdWxhdGlvbiBpdCBoYXMgYWxyZWFkeSBt
YWRlLgpAQCAtMjQzLDIyICs0NDQsMjQgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2Fs
bEhlbHBlcnMmIAogICAgIGlmIChyZWNvdmVyeSkgewogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5
LT50eXBlKCkpIHsKICAgICAgICAgY2FzZSBTcGVjdWxhdGl2ZUFkZDoKLSAgICAgICAgICAgIGpp
dC5zdWIzMihyZWNvdmVyeS0+c3JjKCksIHJlY292ZXJ5LT5kZXN0KCkpOworICAgICAgICAgICAg
Y3B1LmdwcihyZWNvdmVyeS0+ZGVzdCgpKSA9IGNwdS5ncHI8dWludDMyX3Q+KHJlY292ZXJ5LT5k
ZXN0KCkpIC0gY3B1Lmdwcjx1aW50MzJfdD4ocmVjb3ZlcnktPnNyYygpKTsKICNpZiBVU0UoSlNW
QUxVRTY0KQotICAgICAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lz
dGVyLCByZWNvdmVyeS0+ZGVzdCgpKTsKKyAgICAgICAgICAgIEFTU0VSVCghKGNwdS5ncHIocmVj
b3ZlcnktPmRlc3QoKSkgPj4gMzIpKTsKKyAgICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRl
c3QoKSkgfD0gVGFnVHlwZU51bWJlcjsKICNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgY2FzZSBTcGVjdWxhdGl2ZUFkZEltbWVkaWF0ZToKLSAgICAgICAgICAgIGppdC5zdWIz
MihBc3NlbWJseUhlbHBlcnM6OkltbTMyKHJlY292ZXJ5LT5pbW1lZGlhdGUoKSksIHJlY292ZXJ5
LT5kZXN0KCkpOworICAgICAgICAgICAgY3B1LmdwcihyZWNvdmVyeS0+ZGVzdCgpKSA9IChjcHUu
Z3ByPHVpbnQzMl90PihyZWNvdmVyeS0+ZGVzdCgpKSAtIHJlY292ZXJ5LT5pbW1lZGlhdGUoKSk7
CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86OnRhZ1R5
cGVOdW1iZXJSZWdpc3RlciwgcmVjb3ZlcnktPmRlc3QoKSk7CisgICAgICAgICAgICBBU1NFUlQo
IShjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkpID4+IDMyKSk7CisgICAgICAgICAgICBjcHUuZ3By
KHJlY292ZXJ5LT5kZXN0KCkpIHw9IFRhZ1R5cGVOdW1iZXI7CiAjZW5kaWYKICAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgIGNhc2UgQm9vbGVhblNwZWN1bGF0aW9uQ2hlY2s6CiAjaWYgVVNF
KEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGppdC54b3I2NChBc3NlbWJseUhlbHBlcnM6OlRydXN0
ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIHJlY292ZXJ5LT5kZXN0
KCkpOworICAgICAgICAgICAgY3B1LmdwcihyZWNvdmVyeS0+ZGVzdCgpKSA9IGNwdS5ncHIocmVj
b3ZlcnktPmRlc3QoKSkgXiBWYWx1ZUZhbHNlOwogI2VuZGlmCiAgICAgICAgICAgICBicmVhazsK
IApAQCAtMjgxLDM5NSArNDg0LDEwOSBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxs
SGVscGVycyYgCiAgICAgICAgICAgICAvLyBwcm9wZXJ0eSBhY2Nlc3MsIG9yIGR1ZSB0byBhbiBh
cnJheSBwcm9maWxlKS4KIAogICAgICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gZXhp
dC5tX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZTsKLSAgICAgICAgICAgIGlmIChBcnJheVByb2Zp
bGUqIGFycmF5UHJvZmlsZSA9IGppdC5iYXNlbGluZUNvZGVCbG9ja0Zvcihjb2RlT3JpZ2luKS0+
Z2V0QXJyYXlQcm9maWxlKGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpIHsKLSNpZiBVU0UoSlNW
QUxVRTY0KQotICAgICAgICAgICAgICAgIEdQUlJlZyB1c2VkUmVnaXN0ZXI7Ci0gICAgICAgICAg
ICAgICAgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmlzQWRkcmVzcygpKQotICAgICAgICAgICAg
ICAgICAgICB1c2VkUmVnaXN0ZXIgPSBleGl0Lm1fanNWYWx1ZVNvdXJjZS5iYXNlKCk7Ci0gICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXIgPSBleGl0
Lm1fanNWYWx1ZVNvdXJjZS5ncHIoKTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgR1BSUmVnIHVz
ZWRSZWdpc3RlcjE7Ci0gICAgICAgICAgICAgICAgR1BSUmVnIHVzZWRSZWdpc3RlcjI7Ci0gICAg
ICAgICAgICAgICAgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmlzQWRkcmVzcygpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcjEgPSBleGl0Lm1fanNWYWx1ZVNvdXJjZS5iYXNl
KCk7Ci0gICAgICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcjIgPSBJbnZhbGlkR1BSUmVnOwot
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHVzZWRSZWdpc3Rl
cjEgPSBleGl0Lm1fanNWYWx1ZVNvdXJjZS5wYXlsb2FkR1BSKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5oYXNLbm93blRhZygpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgdXNlZFJlZ2lzdGVyMiA9IEludmFsaWRHUFJSZWc7Ci0gICAgICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcjIgPSBleGl0
Lm1fanNWYWx1ZVNvdXJjZS50YWdHUFIoKTsKLSAgICAgICAgICAgICAgICB9Ci0jZW5kaWYKLQot
ICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoMTsKLSAgICAgICAgICAgICAgICBHUFJSZWcg
c2NyYXRjaDI7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgICAgICBzY3JhdGNoMSA9
IEFzc2VtYmx5SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUih1c2VkUmVnaXN0ZXIpOwotICAgICAg
ICAgICAgICAgIHNjcmF0Y2gyID0gQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKHVz
ZWRSZWdpc3Rlciwgc2NyYXRjaDEpOwotI2Vsc2UKLSAgICAgICAgICAgICAgICBzY3JhdGNoMSA9
IEFzc2VtYmx5SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUih1c2VkUmVnaXN0ZXIxLCB1c2VkUmVn
aXN0ZXIyKTsKLSAgICAgICAgICAgICAgICBzY3JhdGNoMiA9IEFzc2VtYmx5SGVscGVyczo6c2Vs
ZWN0U2NyYXRjaEdQUih1c2VkUmVnaXN0ZXIxLCB1c2VkUmVnaXN0ZXIyLCBzY3JhdGNoMSk7Ci0j
ZW5kaWYKLQotICAgICAgICAgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaml0LnB1c2hUb1NhdmUoc2NyYXRjaDEpOwotICAgICAgICAgICAgICAgICAgICBqaXQu
cHVzaFRvU2F2ZShzY3JhdGNoMik7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgaml0LnB1c2goc2NyYXRjaDEpOwotICAgICAgICAgICAgICAgICAgICBqaXQu
cHVzaChzY3JhdGNoMik7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgR1BS
UmVnIHZhbHVlOwotICAgICAgICAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0Fk
ZHJlc3MoKSkgewotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNjcmF0Y2gxOwotICAgICAg
ICAgICAgICAgICAgICBqaXQubG9hZFB0cihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoZXhpdC5t
X2pzVmFsdWVTb3VyY2UuYXNBZGRyZXNzKCkpLCB2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5
bG9hZEdQUigpOwotCi0gICAgICAgICAgICAgICAgaml0LmxvYWQzMihBc3NlbWJseUhlbHBlcnM6
OkFkZHJlc3ModmFsdWUsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2gxKTsK
LSAgICAgICAgICAgICAgICBqaXQuc3RvcmUzMihzY3JhdGNoMSwgYXJyYXlQcm9maWxlLT5hZGRy
ZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOwotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAg
ICAgICAgICAgaml0LmxvYWQ4KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyh2YWx1ZSwgSlNDZWxs
OjppbmRleGluZ1R5cGVBbmRNaXNjT2Zmc2V0KCkpLCBzY3JhdGNoMSk7Ci0jZWxzZQotICAgICAg
ICAgICAgICAgIGppdC5sb2FkOChBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaDEsIFN0
cnVjdHVyZTo6aW5kZXhpbmdUeXBlSW5jbHVkaW5nSGlzdG9yeU9mZnNldCgpKSwgc2NyYXRjaDEp
OwotI2VuZGlmCi0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoMSksIHNjcmF0Y2gyKTsKLSAgICAgICAgICAgICAgICBqaXQubHNoaWZ0MzIoc2Ny
YXRjaDEsIHNjcmF0Y2gyKTsKLSAgICAgICAgICAgICAgICBqaXQub3IzMihzY3JhdGNoMiwgQXNz
ZW1ibHlIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZBcnJh
eU1vZGVzKCkpKTsKLQotICAgICAgICAgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3JhdGNoMik7Ci0gICAgICAgICAgICAgICAg
ICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaDEpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgIGppdC5wb3Aoc2NyYXRjaDIpOwotICAgICAgICAgICAgICAg
ICAgICBqaXQucG9wKHNjcmF0Y2gxKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBD
b2RlQmxvY2sqIHByb2ZpbGVkQ29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5B
bmRCYXNlbGluZUNvZGVCbG9jayhjb2RlT3JpZ2luLCBiYXNlbGluZUNvZGVCbG9jayk7CisgICAg
ICAgICAgICBpZiAoQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBwcm9maWxlZENvZGVCbG9j
ay0+Z2V0QXJyYXlQcm9maWxlKGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpIHsKKyAgICAgICAg
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGpzVmFsdWVGb3IoY3B1LCBleGl0Lm1fanNW
YWx1ZVNvdXJjZSkuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CisgICAgICAgICAgICAgICAgYXJy
YXlQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJlKHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBhcnJheU1vZGVGcm9tU3RydWN0dXJl
KCkgdG8gZGV0ZXJtaW5lIHRoZSBvYnNlcnZlZCBBcnJheU1vZGUgaGVyZS4KKyAgICAgICAgICAg
ICAgICAvLyBIb3dldmVyLCBjdXJyZW50bHksIGRvaW5nIHNvIHdvdWxkIHJlc3VsdCBpbiBhIHBk
ZmpzIHByZWZvcm1hbmNlIHJlZ3Jlc3Npb24uCisgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjQ3MworICAgICAgICAgICAgICAgIGFy
cmF5UHJvZmlsZS0+b2JzZXJ2ZUFycmF5TW9kZShhc0FycmF5TW9kZXMoc3RydWN0dXJlLT5pbmRl
eGluZ1R5cGUoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKE1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGV4aXQubV92YWx1ZVByb2ZpbGUp
IHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgaWYgKGV4aXQubV9qc1ZhbHVlU291
cmNlLmlzQWRkcmVzcygpKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgYmUgc3VyZSB0
aGF0IHdlIGhhdmUgYSBzcGFyZSByZWdpc3Rlci4gU28gdXNlIHRoZSB0YWdUeXBlTnVtYmVyUmVn
aXN0ZXIsCi0gICAgICAgICAgICAgICAgLy8gc2luY2Ugd2Uga25vdyBob3cgdG8gcmVzdG9yZSBp
dC4KLSAgICAgICAgICAgICAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhl
eGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSksIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJS
ZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBK
U1ZhbHVlUmVncyhHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKLSAgICAgICAgICAg
ICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChUYWdUeXBlTnVtYmVy
KSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3Mo
ZXhpdC5tX2pzVmFsdWVTb3VyY2UuZ3ByKCkpKTsKLSNlbHNlIC8vIG5vdCBVU0UoSlNWQUxVRTY0
KQotICAgICAgICAgICAgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmlzQWRkcmVzcygpKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gU2F2ZSBhIHJlZ2lzdGVyIHNvIHdlIGNhbiB1c2UgaXQuCi0gICAg
ICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hQYXlsb2FkID0gQXNzZW1ibHlIZWxwZXJzOjpzZWxl
Y3RTY3JhdGNoR1BSKGV4aXQubV9qc1ZhbHVlU291cmNlLmJhc2UoKSk7Ci0gICAgICAgICAgICAg
ICAgR1BSUmVnIHNjcmF0Y2hUYWcgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIo
ZXhpdC5tX2pzVmFsdWVTb3VyY2UuYmFzZSgpLCBzY3JhdGNoUGF5bG9hZCk7Ci0gICAgICAgICAg
ICAgICAgaml0LnB1c2hUb1NhdmUoc2NyYXRjaFBheWxvYWQpOwotICAgICAgICAgICAgICAgIGpp
dC5wdXNoVG9TYXZlKHNjcmF0Y2hUYWcpOwotCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mg
c2NyYXRjaChzY3JhdGNoVGFnLCBzY3JhdGNoUGF5bG9hZCk7Ci0gICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgaml0LmxvYWRWYWx1ZShleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJl
c3MoKSwgc2NyYXRjaCk7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUo
aml0LCBzY3JhdGNoKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBqaXQucG9w
VG9SZXN0b3JlKHNjcmF0Y2hUYWcpOwotICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUo
c2NyYXRjaFBheWxvYWQpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChleGl0Lm1fanNWYWx1ZVNv
dXJjZS5oYXNLbm93blRhZygpKSB7Ci0gICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hUYWcg
PSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIoZXhpdC5tX2pzVmFsdWVTb3VyY2Uu
cGF5bG9hZEdQUigpKTsKLSAgICAgICAgICAgICAgICBqaXQucHVzaFRvU2F2ZShzY3JhdGNoVGFn
KTsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0z
MihleGl0Lm1fanNWYWx1ZVNvdXJjZS50YWcoKSksIHNjcmF0Y2hUYWcpOwotICAgICAgICAgICAg
ICAgIEpTVmFsdWVSZWdzIHZhbHVlKHNjcmF0Y2hUYWcsIGV4aXQubV9qc1ZhbHVlU291cmNlLnBh
eWxvYWRHUFIoKSk7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0
LCB2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3JhdGNoVGFnKTsK
LSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZh
bHVlKGppdCwgZXhpdC5tX2pzVmFsdWVTb3VyY2UucmVncygpKTsKLSNlbmRpZiAvLyBVU0UoSlNW
QUxVRTY0KQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gV2hhdCBmb2xsb3dzIGlzIGFuIGlu
dGVudGlvbmFsbHkgc2ltcGxlIE9TUiBleGl0IGltcGxlbWVudGF0aW9uIHRoYXQgZ2VuZXJhdGVz
Ci0gICAgLy8gZmFpcmx5IHBvb3IgY29kZSBidXQgaXMgdmVyeSBlYXN5IHRvIGhhY2suIEluIHBh
cnRpY3VsYXIsIGl0IGR1bXBzIGFsbCBzdGF0ZSB0aGF0Ci0gICAgLy8gbmVlZHMgY29udmVyc2lv
biBpbnRvIGEgc2NyYXRjaCBidWZmZXIgc28gdGhhdCBpbiBzdGVwIDYsIHdoZXJlIHdlIGFjdHVh
bGx5IGRvIHRoZQotICAgIC8vIGNvbnZlcnNpb25zLCB3ZSBrbm93IHRoYXQgYWxsIHRlbXAgcmVn
aXN0ZXJzIGFyZSBmcmVlIHRvIHVzZSBhbmQgdGhlIHZhcmlhYmxlIGlzCi0gICAgLy8gZGVmaW5p
dGVseSBpbiBhIHdlbGwta25vd24gc3BvdCBpbiB0aGUgc2NyYXRjaCBidWZmZXIgcmVnYXJkbGVz
cyBvZiB3aGV0aGVyIGl0IGhhZAotICAgIC8vIG9yaWdpbmFsbHkgYmVlbiBpbiBhIHJlZ2lzdGVy
IG9yIHNwaWxsZWQuIFRoaXMgYWxsb3dzIHVzIHRvIGRlY291cGxlICJ3aGVyZSB3YXMKLSAgICAv
LyB0aGUgdmFyaWFibGUiIGZyb20gImhvdyB3YXMgaXQgcmVwcmVzZW50ZWQiLiBDb25zaWRlciB0
aGF0IHRoZQotICAgIC8vIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHJlY292ZXJ5OiBpdCB0ZWxs
cyB1cyB0aGF0IHRoZSB2YWx1ZSBpcyBpbiBhCi0gICAgLy8gcGFydGljdWxhciBwbGFjZSBhbmQg
dGhhdCB0aGF0IHBsYWNlIGhvbGRzIGFuIHVuYm94ZWQgaW50MzIuIFdlIGhhdmUgdHdvIGRpZmZl
cmVudAotICAgIC8vIHBsYWNlcyB0aGF0IGEgdmFsdWUgY291bGQgYmUgKGRpc3BsYWNlZCwgcmVn
aXN0ZXIpIGFuZCBhIGJ1bmNoIG9mIGRpZmZlcmVudAotICAgIC8vIHdheXMgb2YgcmVwcmVzZW50
aW5nIGEgdmFsdWUuIFRoZSBudW1iZXIgb2YgcmVjb3ZlcmllcyBpcyB0d28gKiBhIGJ1bmNoLiBU
aGUgY29kZQotICAgIC8vIGJlbG93IG1lYW5zIHRoYXQgd2UgaGF2ZSB0byBoYXZlIHR3byArIGEg
YnVuY2ggY2FzZXMgcmF0aGVyIHRoYW4gdHdvICogYSBidW5jaC4KLSAgICAvLyBPbmNlIHdlIGhh
dmUgbG9hZGVkIHRoZSB2YWx1ZSBmcm9tIHdoZXJldmVyIGl0IHdhcywgdGhlIHJlYm94aW5nIGlz
IHRoZSBzYW1lCi0gICAgLy8gcmVnYXJkbGVzcyBvZiBpdHMgbG9jYXRpb24uIExpa2V3aXNlLCBi
ZWZvcmUgd2UgZG8gdGhlIHJlYm94aW5nLCB0aGUgd2F5IHdlIGdldCB0bwotICAgIC8vIHRoZSB2
YWx1ZSAoaS5lLiB3aGVyZSB3ZSBsb2FkIGl0IGZyb20pIGlzIHRoZSBzYW1lIHJlZ2FyZGxlc3Mg
b2YgaXRzIHR5cGUuIEJlY2F1c2UKLSAgICAvLyB0aGUgY29kZSBiZWxvdyBhbHdheXMgZHVtcHMg
ZXZlcnl0aGluZyBpbnRvIGEgc2NyYXRjaCBidWZmZXIgZmlyc3QsIHRoZSB0d28KLSAgICAvLyBx
dWVzdGlvbnMgYmVjb21lIG9ydGhvZ29uYWwsIHdoaWNoIHNpbXBsaWZpZXMgYWRkaW5nIG5ldyB0
eXBlcyBhbmQgYWRkaW5nIG5ldwotICAgIC8vIGxvY2F0aW9ucy4KLSAgICAvLwotICAgIC8vIFRo
aXMgcmFpc2VzIHRoZSBxdWVzdGlvbjogZG9lcyB1c2luZyBzdWNoIGEgc3Vib3B0aW1hbCBpbXBs
ZW1lbnRhdGlvbiBvZiBPU1IgZXhpdCwKLSAgICAvLyB3aGVyZSB3ZSBhbHdheXMgZW1pdCBjb2Rl
IHRvIGR1bXAgYWxsIHN0YXRlIGludG8gYSBzY3JhdGNoIGJ1ZmZlciBvbmx5IHRvIHRoZW4KLSAg
ICAvLyBkdW1wIGl0IHJpZ2h0IGJhY2sgaW50byB0aGUgc3RhY2ssIGh1cnQgdXMgaW4gYW55IHdh
eT8gVGhlIGFzbndlciBpcyB0aGF0IE9TUiBleGl0cwotICAgIC8vIGFyZSByYXJlLiBPdXIgdGll
cmluZyBzdHJhdGVneSBlbnN1cmVzIHRoaXMuIFRoaXMgaXMgYmVjYXVzZSBpZiBhbiBPU1IgZXhp
dCBpcwotICAgIC8vIHRha2VuIG1vcmUgdGhhbiB+MTAwIHRpbWVzLCB3ZSBqZXR0aXNvbiB0aGUg
REZHIGNvZGUgYmxvY2sgYWxvbmcgd2l0aCBhbGwgb2YgaXRzCi0gICAgLy8gZXhpdHMuIEl0IGlz
IGltcG9zc2libGUgZm9yIGFuIE9TUiBleGl0IC0gaS5lLiB0aGUgY29kZSB3ZSBjb21waWxlIGJl
bG93IC0gdG8KLSAgICAvLyBleGVjdXRlIGZyZXF1ZW50bHkgZW5vdWdoIGZvciB0aGUgY29kZWdl
biB0byBtYXR0ZXIgdGhhdCBtdWNoLiBJdCBwcm9iYWJseSBtYXR0ZXJzCi0gICAgLy8gZW5vdWdo
IHRoYXQgd2UgZG9uJ3Qgd2FudCB0byB0dXJuIHRoaXMgaW50byBzb21lIHN1cGVyLXNsb3cgZnVu
Y3Rpb24gY2FsbCwgYnV0IHNvCi0gICAgLy8gbG9uZyBhcyB3ZSdyZSBnZW5lcmF0aW5nIHN0cmFp
Z2h0LWxpbmUgY29kZSwgdGhhdCBjb2RlIGNhbiBiZSBwcmV0dHkgYmFkLiBBbHNvCi0gICAgLy8g
YmVjYXVzZSB3ZSB0ZW5kIHRvIGV4aXQgb25seSBhbG9uZyBvbmUgT1NSIGV4aXQgZnJvbSBhbnkg
REZHIGNvZGUgYmxvY2sgLSB0aGF0J3MgYW4KLSAgICAvLyBlbXBpcmljYWwgcmVzdWx0IHRoYXQg
d2UncmUgZXh0cmVtZWx5IGNvbmZpZGVudCBhYm91dCAtIHRoZSBjb2RlIHNpemUgb2YgdGhpcwot
ICAgIC8vIGRvZXNuJ3QgbWF0dGVyIG11Y2guIEhlbmNlIGFueSBhdHRlbXB0IHRvIG9wdGltaXpl
IHRoZSBjb2RlZ2VuIGhlcmUgaXMganVzdCBwdXJlbHkKLSAgICAvLyBoYXJtZnVsIHRvIHRoZSBz
eXN0ZW06IGl0IHByb2JhYmx5IHdvbid0IHJlZHVjZSBlaXRoZXIgbmV0IG1lbW9yeSB1c2FnZSBv
ciBuZXQKLSAgICAvLyBleGVjdXRpb24gdGltZS4gSXQgd2lsbCBvbmx5IHByZXZlbnQgdXMgZnJv
bSBjbGVhbmx5IGRlY291cGxpbmcgIndoZXJlIHdhcyB0aGUKLSAgICAvLyB2YXJpYWJsZSIgZnJv
bSAiaG93IHdhcyBpdCByZXByZXNlbnRlZCIsIHdoaWNoIHdpbGwgbWFrZSBpdCBtb3JlIGRpZmZp
Y3VsdCB0byBhZGQKLSAgICAvLyBmZWF0dXJlcyBpbiB0aGUgZnV0dXJlIGFuZCBpdCB3aWxsIG1h
a2UgaXQgaGFyZGVyIHRvIHJlYXNvbiBhYm91dCBidWdzLgotCi0gICAgLy8gU2F2ZSBhbGwgc3Rh
dGUgZnJvbSBHUFJzIGludG8gdGhlIHNjcmF0Y2ggYnVmZmVyLgotCi0gICAgU2NyYXRjaEJ1ZmZl
ciogc2NyYXRjaEJ1ZmZlciA9IHZtLnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNpemVvZihFbmNvZGVk
SlNWYWx1ZSkgKiBvcGVyYW5kcy5zaXplKCkpOwotICAgIEVuY29kZWRKU1ZhbHVlKiBzY3JhdGNo
ID0gc2NyYXRjaEJ1ZmZlciA/IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1
ZmZlci0+ZGF0YUJ1ZmZlcigpKSA6IDA7Ci0KLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGlu
ZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIGNvbnN0IFZhbHVlUmVj
b3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhdOwotCi0gICAgICAgIHN3aXRjaCAocmVj
b3ZlcnkudGVjaG5pcXVlKCkpIHsKLSAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKLSAg
ICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BSOgotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAg
IGNhc2UgSW5HUFI6Ci0gICAgICAgIGNhc2UgVW5ib3hlZEludDUySW5HUFI6Ci0gICAgICAgIGNh
c2UgVW5ib3hlZFN0cmljdEludDUySW5HUFI6Ci0gICAgICAgICAgICBqaXQuc3RvcmU2NChyZWNv
dmVyeS5ncHIoKSwgc2NyYXRjaCArIGluZGV4KTsKLSAgICAgICAgICAgIGJyZWFrOwotI2Vsc2UK
LSAgICAgICAgY2FzZSBVbmJveGVkQm9vbGVhbkluR1BSOgotICAgICAgICAgICAgaml0LnN0b3Jl
MzIoCi0gICAgICAgICAgICAgICAgcmVjb3ZlcnkuZ3ByKCksCi0gICAgICAgICAgICAgICAgJmJp
dHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNC
aXRzLnBheWxvYWQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAg
Y2FzZSBJblBhaXI6Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBy
ZWNvdmVyeS50YWdHUFIoKSwKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRW
YWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFnKTsKLSAgICAgICAg
ICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIHJlY292ZXJ5LnBheWxvYWRHUFIoKSwK
LSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihz
Y3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7Ci0gICAgICAgICAgICBicmVhazsKLSNl
bmRpZgotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIC8vIEFuZCB2b2lsYSwgYWxsIEdQUnMgYXJlIGZyZWUgdG8gcmV1c2UuCi0K
LSAgICAvLyBTYXZlIGFsbCBzdGF0ZSBmcm9tIEZQUnMgaW50byB0aGUgc2NyYXRjaCBidWZmZXIu
Ci0KLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyAr
K2luZGV4KSB7Ci0gICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFu
ZHNbaW5kZXhdOwotCi0gICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKLSAg
ICAgICAgY2FzZSBVbmJveGVkRG91YmxlSW5GUFI6Ci0gICAgICAgIGNhc2UgSW5GUFI6Ci0gICAg
ICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCAr
IGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlRG91YmxlKHJl
Y292ZXJ5LmZwcigpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCkpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gTm93LCBhbGwgRlBScyBhcmUgYWxzbyBmcmVl
LgotCi0gICAgLy8gU2F2ZSBhbGwgc3RhdGUgZnJvbSB0aGUgc3RhY2sgaW50byB0aGUgc2NyYXRj
aCBidWZmZXIuIEZvciBzaW1wbGljaXR5IHdlCi0gICAgLy8gZG8gdGhpcyBldmVuIGZvciBzdGF0
ZSB0aGF0J3MgYWxyZWFkeSBpbiB0aGUgcmlnaHQgcGxhY2Ugb24gdGhlIHN0YWNrLgotICAgIC8v
IEl0IG1ha2VzIHRoaW5ncyBzaW1wbGVyIGxhdGVyLgotCi0gICAgZm9yIChzaXplX3QgaW5kZXgg
PSAwOyBpbmRleCA8IG9wZXJhbmRzLnNpemUoKTsgKytpbmRleCkgewotICAgICAgICBjb25zdCBW
YWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9wZXJhbmRzW2luZGV4XTsKLQotICAgICAgICBzd2l0
Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7Ci0gICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0
YWNrOgotICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgIGNhc2Ug
Qm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZElu
SlNTdGFjazoKLSAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6Ci0jaWYgVVNF
KEpTVkFMVUU2NCkKLSAgICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAg
ICAgY2FzZSBTdHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIGppdC5s
b2FkNjQoQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3Rl
cigpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6
cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7Ci0gICAgICAgICAgICBicmVhazsKLSNlbHNlCi0gICAg
ICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFn
Rm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwKLSAgICAgICAgICAgICAgICBHUFJJbmZv
OjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgIEFzc2Vt
Ymx5SGVscGVyczo6cGF5bG9hZEZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksCi0gICAg
ICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0g
ICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCi0gICAgICAgICAgICAgICAgJmJpdHdpc2Vf
Y2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnRh
Zyk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpy
ZWdUMSwKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7Ci0gICAgICAgICAgICBicmVh
azsKLSNlbmRpZgotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQorICAgICAgICBpZiAoTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBwcm9maWxlID0g
ZXhpdC5tX3ZhbHVlUHJvZmlsZSkKKyAgICAgICAgICAgIHByb2ZpbGUucmVwb3J0VmFsdWUoanNW
YWx1ZUZvcihjcHUsIGV4aXQubV9qc1ZhbHVlU291cmNlKSk7CiAgICAgfQogCi0gICAgLy8gTmVl
ZCB0byBlbnN1cmUgdGhhdCB0aGUgc3RhY2sgcG9pbnRlciBhY2NvdW50cyBmb3IgdGhlIHdvcnN0
LWNhc2Ugc3RhY2sgdXNhZ2UgYXQgZXhpdC4gVGhpcwotICAgIC8vIGNvdWxkIHRvYXN0IHNvbWUg
c3RhY2sgdGhhdCB0aGUgREZHIHVzZWQuIFdlIG5lZWQgdG8gZG8gaXQgYmVmb3JlIHN0b3Jpbmcg
dG8gc3RhY2sgb2Zmc2V0cwotICAgIC8vIHVzZWQgYnkgYmFzZWxpbmUuCi0gICAgaml0LmFkZFB0
cigKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoCi0gICAgICAgICAgICAtaml0
LmNvZGVCbG9jaygpLT5qaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5yZXF1aXJlZFJlZ2lzdGVyQ291
bnRGb3JFeGl0ICogc2l6ZW9mKFJlZ2lzdGVyKSksCi0gICAgICAgIENDYWxsSGVscGVyczo6ZnJh
bWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwot
Ci0gICAgLy8gUmVzdG9yZSB0aGUgREZHIGNhbGxlZSBzYXZlcyBhbmQgdGhlbiBzYXZlIHRoZSBv
bmVzIHRoZSBiYXNlbGluZSBKSVQgdXNlcy4KLSAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZl
cygpOwotICAgIGppdC5lbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGppdC5iYXNlbGluZUNvZGVCbG9j
aygpKTsKLQotICAgIC8vIFRoZSB0YWcgcmVnaXN0ZXJzIGFyZSBuZWVkZWQgdG8gbWF0ZXJpYWxp
emUgcmVjb3ZlcmllcyBiZWxvdy4KLSAgICBqaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdp
c3RlcnMoKTsKLQotICAgIGlmIChleGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpKQotICAgICAgICBq
aXQuY29weUNhbGxlZVNhdmVzVG9WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bSk7Ci0K
ICAgICAvLyBEbyBhbGwgZGF0YSBmb3JtYXQgY29udmVyc2lvbnMgYW5kIHN0b3JlIHRoZSByZXN1
bHRzIGludG8gdGhlIHN0YWNrLgorICAgIC8vIE5vdGU6IHdlIG5lZWQgdG8gcmVjb3ZlciB2YWx1
ZXMgYmVmb3JlIHJlc3RvcmluZyBjYWxsZWUgc2F2ZSByZWdpc3RlcnMgYmVsb3cKKyAgICAvLyBi
ZWNhdXNlIHRoZSByZWNvdmVyeSBtYXkgcmVseSBvbiB2YWx1ZXMgaW4gc29tZSBvZiBjYWxsZWUg
c2F2ZSByZWdpc3RlcnMuCiAKLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3Bl
cmFuZHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgaW50IGNhbGxlZVNhdmVTcGFjZUFzVmlydHVh
bFJlZ2lzdGVycyA9IHN0YXRpY19jYXN0PGludD4oYmFzZWxpbmVDb2RlQmxvY2stPmNhbGxlZVNh
dmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKTsKKyAgICBzaXplX3QgbnVtYmVyT2ZPcGVyYW5k
cyA9IG9wZXJhbmRzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwg
bnVtYmVyT2ZPcGVyYW5kczsgKytpbmRleCkgewogICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5
JiByZWNvdmVyeSA9IG9wZXJhbmRzW2luZGV4XTsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJl
ZyA9IG9wZXJhbmRzLnZpcnR1YWxSZWdpc3RlckZvckluZGV4KGluZGV4KTsKIAotICAgICAgICBp
ZiAocmVnLmlzTG9jYWwoKSAmJiByZWcudG9Mb2NhbCgpIDwgc3RhdGljX2Nhc3Q8aW50PihqaXQu
YmFzZWxpbmVDb2RlQmxvY2soKS0+Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkp
KQorICAgICAgICBpZiAocmVnLmlzTG9jYWwoKSAmJiByZWcudG9Mb2NhbCgpIDwgY2FsbGVlU2F2
ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgaW50IG9wZXJhbmQgPSByZWcub2Zmc2V0KCk7CiAKICAgICAgICAgc3dpdGNoIChyZWNvdmVy
eS50ZWNobmlxdWUoKSkgewogICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAg
ICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgZXhlYy0+cihyZWNvdmVyeS52aXJ0dWFs
UmVnaXN0ZXIoKSkuanNWYWx1ZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNh
c2UgSW5GUFI6CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIGNwdS5mcHI8
SlNWYWx1ZT4ocmVjb3ZlcnkuZnByKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworCiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICAgICAgY2FzZSBJbkdQUjoKLSAgICAgICAgY2FzZSBVbmJveGVkQ2Vs
bEluR1BSOgotICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgIGNh
c2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIGppdC5sb2FkNjQoc2Ny
YXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmU2NChH
UFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAg
ICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgY3B1LmdwcjxKU1ZhbHVlPihyZWNv
dmVyeS5ncHIoKSkpOwogICAgICAgICAgICAgYnJlYWs7Ci0jZWxzZSAvLyBub3QgVVNFKEpTVkFM
VUU2NCkKKyNlbHNlCiAgICAgICAgIGNhc2UgSW5QYWlyOgotICAgICAgICAgICAgaml0LmxvYWQz
MigKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3Iq
PihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFnLAotICAgICAgICAgICAgICAgIEdQUkluZm86
OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAgICAgICAgICAgJmJpdHdp
c2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRz
LnBheWxvYWQsCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEpOwotICAgICAgICAgICAg
aml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCi0gICAgICAgICAg
ICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgaml0
LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEsCi0gICAgICAgICAgICAg
ICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGZy
YW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShjcHUuZ3ByPGludDMyX3Q+KHJlY292ZXJ5
LnRhZ0dQUigpKSwgY3B1LmdwcjxpbnQzMl90PihyZWNvdmVyeS5wYXlsb2FkR1BSKCkpKSk7CiAg
ICAgICAgICAgICBicmVhazsKKyNlbmRpZgogCiAgICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQ
UjoKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShjcHUuZ3By
PEpTQ2VsbCo+KHJlY292ZXJ5LmdwcigpKSkpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAg
ICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgaml0LmxvYWQzMigK
LSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihz
Y3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKLSAgICAgICAgICAgICAgICBHUFJJbmZv
OjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwKLSAgICAgICAgICAg
ICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBqaXQu
c3RvcmUzMigKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwKLSAgICAgICAgICAgICAg
ICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgZnJh
bWUuc2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVlKGV4ZWMtPnIocmVjb3ZlcnkudmlydHVhbFJl
Z2lzdGVyKCkpLnVuYm94ZWRDZWxsKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisjaWYgVVNF
KEpTVkFMVUUzMl82NCkKICAgICAgICAgY2FzZSBVbmJveGVkQm9vbGVhbkluR1BSOgorICAgICAg
ICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBqc0Jvb2xlYW4oY3B1Lmdwcjxib29sPihy
ZWNvdmVyeS5ncHIoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisKICAgICAgICAg
Y2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgaml0LmxvYWQzMigK
LSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihz
Y3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKLSAgICAgICAgICAgICAgICBHUFJJbmZv
OjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCb29sZWFuVGFnKSwKLSAgICAgICAg
ICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBq
aXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwKLSAgICAgICAgICAg
ICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAg
ZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBleGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3Rl
cigpKS5qc1ZhbHVlKCkpOwogICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYgLy8gVVNFKEpTVkFM
VUU2NCkKIAogICAgICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgorICAgICAgICAgICAgZnJh
bWUuc2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVlKGNwdS5ncHI8aW50MzJfdD4ocmVjb3Zlcnku
Z3ByKCkpKSk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIEludDMyRGlzcGxh
Y2VkSW5KU1N0YWNrOgotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBqaXQubG9hZDY0
KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0Lnplcm9F
eHRlbmQzMlRvUHRyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAg
ICBqaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1Qw
KTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBl
cnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwotI2Vsc2UKLSAgICAgICAgICAgIGppdC5sb2FkMzIo
Ci0gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4o
c2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQsCi0gICAgICAgICAgICAgICAgR1BSSW5m
bzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpLAotICAgICAgICAg
ICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAgIGpp
dC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAotICAgICAgICAgICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7Ci0jZW5kaWYKKyAgICAg
ICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShleGVjLT5yKHJlY292ZXJ5
LnZpcnR1YWxSZWdpc3RlcigpKS51bmJveGVkSW50MzIoKSkpOwogICAgICAgICAgICAgYnJlYWs7
CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNlIFVuYm94ZWRJbnQ1MkluR1BSOgor
ICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVlKGNwdS5ncHI8aW50
NjRfdD4ocmVjb3ZlcnkuZ3ByKCkpID4+IEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgSW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6
Ci0gICAgICAgICAgICBqaXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDAp
OwotICAgICAgICAgICAgaml0LnJzaGlmdDY0KAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBHUFJJbmZvOjpy
ZWdUMCk7Ci0gICAgICAgICAgICBqaXQuYm94SW50NTIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86
OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBq
aXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9w
ZXJhbmQpKTsKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShl
eGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS51bmJveGVkSW50NTIoKSkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NTJJbkdQUjoK
KyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShjcHUuZ3ByPGlu
dDY0X3Q+KHJlY292ZXJ5LmdwcigpKSkpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAg
Y2FzZSBTdHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIGppdC5sb2Fk
NjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuYm94
SW50NTIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgRlBS
SW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwg
QXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGZyYW1l
LnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShleGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdp
c3RlcigpKS51bmJveGVkU3RyaWN0SW50NTIoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAjZW5k
aWYKIAogICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoKKyAgICAgICAgICAgIGZyYW1l
LnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgcHVy
aWZ5TmFOKGNwdS5mcHIocmVjb3ZlcnkuZnByKCkpKSkpOworICAgICAgICAgICAgYnJlYWs7CisK
ICAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBqaXQu
bW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwgR1BS
SW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAg
IGppdC5wdXJpZnlOYU4oRlBSSW5mbzo6ZnBSZWdUMCk7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAg
ICAgICAgICAgIGppdC5ib3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgR1BSSW5mbzo6cmVnVDAp
OwotICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVy
czo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0jZWxzZQotICAgICAgICAgICAgaml0LnN0b3JlRG91
YmxlKEZQUkluZm86OmZwUmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5k
KSk7Ci0jZW5kaWYKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1
ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgcHVyaWZ5TmFOKGV4ZWMtPnIocmVjb3Zlcnkudmly
dHVhbFJlZ2lzdGVyKCkpLnVuYm94ZWREb3VibGUoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgIGNhc2UgQ29uc3RhbnQ6Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAg
IGppdC5zdG9yZTY0KAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bTY0KEpTVmFsdWU6OmVuY29kZShyZWNvdmVyeS5jb25zdGFudCgpKSksCi0gICAgICAgICAgICAg
ICAgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKLSNlbHNlCi0gICAgICAg
ICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0
ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnRhZygpKSwKLSAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigK
LSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5j
b25zdGFudCgpLnBheWxvYWQoKSksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpw
YXlsb2FkRm9yKG9wZXJhbmQpKTsKLSNlbmRpZgorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFu
ZChvcGVyYW5kLCByZWNvdmVyeS5jb25zdGFudCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkOgpAQCAtNjgzLDEz
ICs2MDAsMzEgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAg
ICAgICB9CiAgICAgfQogCisgICAgLy8gTmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgc3RhY2sgcG9p
bnRlciBhY2NvdW50cyBmb3IgdGhlIHdvcnN0LWNhc2Ugc3RhY2sgdXNhZ2UgYXQgZXhpdC4gVGhp
cworICAgIC8vIGNvdWxkIHRvYXN0IHNvbWUgc3RhY2sgdGhhdCB0aGUgREZHIHVzZWQuIFdlIG5l
ZWQgdG8gZG8gaXQgYmVmb3JlIHN0b3JpbmcgdG8gc3RhY2sgb2Zmc2V0cworICAgIC8vIHVzZWQg
YnkgYmFzZWxpbmUuCisgICAgY3B1LnNwKCkgPSBjcHUuZnA8dWludDhfdCo+KCkgLSAoY29kZUJs
b2NrLT5qaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0
ICogc2l6ZW9mKFJlZ2lzdGVyKSk7CisKKyAgICAvLyBSZXN0b3JlIHRoZSBERkcgY2FsbGVlIHNh
dmVzIGFuZCB0aGVuIHNhdmUgdGhlIG9uZXMgdGhlIGJhc2VsaW5lIEpJVCB1c2VzLgorICAgIHJl
c3RvcmVDYWxsZWVTYXZlc0Zvcihjb250ZXh0LCBjb2RlQmxvY2spOworICAgIHNhdmVDYWxsZWVT
YXZlc0Zvcihjb250ZXh0LCBiYXNlbGluZUNvZGVCbG9jayk7CisKKyAgICAvLyBUaGUgdGFnIHJl
Z2lzdGVycyBhcmUgbmVlZGVkIHRvIG1hdGVyaWFsaXplIHJlY292ZXJpZXMgYmVsb3cuCisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICBjcHUuZ3ByKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cikgPSBUYWdUeXBlTnVtYmVyOworICAgIGNwdS5ncHIoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVy
KSA9IFRhZ1R5cGVOdW1iZXIgfCBUYWdCaXRUeXBlT3RoZXI7CisjZW5kaWYKKworICAgIGlmIChl
eGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpKQorICAgICAgICBjb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50
cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKGNvbnRleHQpOworCiAgICAgLy8gTm93IHRoYXQgdGhp
bmdzIG9uIHRoZSBzdGFjayBhcmUgcmVjb3ZlcmVkLCBkbyB0aGUgYXJndW1lbnRzIHJlY292ZXJ5
LiBXZSBhc3N1bWUgdGhhdCBhcmd1bWVudHMKICAgICAvLyByZWNvdmVyaWVzIGRvbid0IHJlY3Vy
c2l2ZWx5IHJlZmVyIHRvIGVhY2ggb3RoZXIuIEJ1dCwgd2UgZG9uJ3QgdHJ5IHRvIGFzc3VtZSB0
aGF0IHRoZXkgb25seQogICAgIC8vIHJlZmVyIHRvIGNlcnRhaW4gcmFuZ2VzIG9mIGxvY2Fscy4g
SGVuY2Ugd2h5IHdlIG5lZWQgdG8gZG8gdGhpcyBoZXJlLCBvbmNlIHRoZSBzdGFjayBpcyBzZW5z
aWJsZS4KICAgICAvLyBOb3RlIHRoYXQgd2UgYWxzbyByb3VnaGx5IGFzc3VtZSB0aGF0IHRoZSBh
cmd1bWVudHMgbWlnaHQgc3RpbGwgYmUgbWF0ZXJpYWxpemVkIG91dHNpZGUgb2YgaXRzCiAgICAg
Ly8gaW5saW5lIGNhbGwgZnJhbWUgc2NvcGUgLSBidXQgZm9yIG5vdyB0aGUgREZHIHdvdWxkbid0
IGRvIHRoYXQuCiAKLSAgICBlbWl0UmVzdG9yZUFyZ3VtZW50cyhqaXQsIG9wZXJhbmRzKTsKKyAg
ICBlbWl0UmVzdG9yZUFyZ3VtZW50cyhjb250ZXh0LCBjb2RlQmxvY2ssIG9wZXJhbmRzKTsKIAog
ICAgIC8vIEFkanVzdCB0aGUgb2xkIEpJVCdzIGV4ZWN1dGUgY291bnRlci4gU2luY2Ugd2UgYXJl
IGV4aXRpbmcgT1NSLCB3ZSBrbm93CiAgICAgLy8gdGhhdCBhbGwgbmV3IGNhbGxzIGludG8gdGhp
cyBjb2RlIHdpbGwgZ28gdG8gdGhlIG5ldyBKSVQsIHNvIHRoZSBleGVjdXRlCkBAIC03MjcsMjYg
KzY2MiwxNjEgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAg
IC8vIGNvdW50ZXIgdG8gMDsgb3RoZXJ3aXNlIHdlIHNldCB0aGUgY291bnRlciB0bwogICAgIC8v
IGNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAoKS4KIAotICAgIGhhbmRsZUV4aXRD
b3VudHMoaml0LCBleGl0KTsKKyAgICBpZiAoVU5MSUtFTFkoY29kZUJsb2NrLT51cGRhdGVPU1JF
eGl0Q291bnRlckFuZENoZWNrSWZOZWVkVG9SZW9wdGltaXplKGV4aXRTdGF0ZSkgPT0gQ29kZUJs
b2NrOjpPcHRpbWl6ZUFjdGlvbjo6UmVvcHRpbWl6ZU5vdykpCisgICAgICAgIHRyaWdnZXJSZW9w
dGltaXphdGlvbk5vdyhiYXNlbGluZUNvZGVCbG9jaywgJmV4aXQpOworCisgICAgcmVpZnlJbmxp
bmVkQ2FsbEZyYW1lcyhjb250ZXh0LCBiYXNlbGluZUNvZGVCbG9jaywgZXhpdCk7CisgICAgYWRq
dXN0QW5kSnVtcFRvVGFyZ2V0KGNvbnRleHQsIHZtLCBjb2RlQmxvY2ssIGJhc2VsaW5lQ29kZUJs
b2NrLCBleGl0KTsKK30KKworc3RhdGljIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDb250
ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIG91dGVybW9zdEJhc2VsaW5lQ29kZUJsb2NrLCBjb25z
dCBPU1JFeGl0QmFzZSYgZXhpdCkKK3sKKyAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKKyAg
ICBGcmFtZSBmcmFtZShjcHUuZnAoKSwgY29udGV4dC5zdGFjaygpKTsKKworICAgIC8vIEZJWE1F
OiBXZSBzaG91bGRuJ3QgbGVhdmUgaG9sZXMgb24gdGhlIHN0YWNrIHdoZW4gcGVyZm9ybWluZyBh
biBPU1IgZXhpdAorICAgIC8vIGluIHByZXNlbmNlIG9mIGlubGluZWQgdGFpbCBjYWxscy4KKyAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NTExCisgICAg
QVNTRVJUKG91dGVybW9zdEJhc2VsaW5lQ29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQpOworICAgIGZyYW1lLnNldE9wZXJhbmQ8Q29kZUJsb2NrKj4oQ2FsbEZyYW1l
U2xvdDo6Y29kZUJsb2NrLCBvdXRlcm1vc3RCYXNlbGluZUNvZGVCbG9jayk7CisKKyAgICBjb25z
dCBDb2RlT3JpZ2luKiBjb2RlT3JpZ2luOworICAgIGZvciAoY29kZU9yaWdpbiA9ICZleGl0Lm1f
Y29kZU9yaWdpbjsgY29kZU9yaWdpbiAmJiBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWU7IGNv
ZGVPcmlnaW4gPSBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUtPmdldENhbGxlclNraXBwaW5n
VGFpbENhbGxzKCkpIHsKKyAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUg
PSBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWU7CisgICAgICAgIENvZGVCbG9jayogYmFzZWxp
bmVDb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJs
b2NrKCpjb2RlT3JpZ2luLCBvdXRlcm1vc3RCYXNlbGluZUNvZGVCbG9jayk7CisgICAgICAgIElu
bGluZUNhbGxGcmFtZTo6S2luZCB0cnVlQ2FsbGVyQ2FsbEtpbmQ7CisgICAgICAgIENvZGVPcmln
aW4qIHRydWVDYWxsZXIgPSBpbmxpbmVDYWxsRnJhbWUtPmdldENhbGxlclNraXBwaW5nVGFpbENh
bGxzKCZ0cnVlQ2FsbGVyQ2FsbEtpbmQpOworICAgICAgICB2b2lkKiBjYWxsZXJGcmFtZSA9IGNw
dS5mcCgpOworCisgICAgICAgIGlmICghdHJ1ZUNhbGxlcikgeworICAgICAgICAgICAgQVNTRVJU
KGlubGluZUNhbGxGcmFtZS0+aXNUYWlsKCkpOworICAgICAgICAgICAgdm9pZCogcmV0dXJuUEMg
PSBmcmFtZS5nZXQ8dm9pZCo+KENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSk7CisgICAgICAg
ICAgICBmcmFtZS5zZXQ8dm9pZCo+KGlubGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSwg
cmV0dXJuUEMpOworICAgICAgICAgICAgY2FsbGVyRnJhbWUgPSBmcmFtZS5nZXQ8dm9pZCo+KENh
bGxGcmFtZTo6Y2FsbGVyRnJhbWVPZmZzZXQoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyID0gYmFzZWxpbmVDb2Rl
QmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jaygqdHJ1ZUNhbGxlciwgb3V0ZXJtb3N0
QmFzZWxpbmVDb2RlQmxvY2spOworICAgICAgICAgICAgdW5zaWduZWQgY2FsbEJ5dGVjb2RlSW5k
ZXggPSB0cnVlQ2FsbGVyLT5ieXRlY29kZUluZGV4OworICAgICAgICAgICAgdm9pZCoganVtcFRh
cmdldCA9IG51bGxwdHI7CisKKyAgICAgICAgICAgIHN3aXRjaCAodHJ1ZUNhbGxlckNhbGxLaW5k
KSB7CisgICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q2FsbDoKKyAgICAgICAgICAg
IGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDb25zdHJ1Y3Q6CisgICAgICAgICAgICBjYXNlIElubGlu
ZUNhbGxGcmFtZTo6Q2FsbFZhcmFyZ3M6CisgICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFt
ZTo6Q29uc3RydWN0VmFyYXJnczoKKyAgICAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpU
YWlsQ2FsbDoKKyAgICAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpUYWlsQ2FsbFZhcmFy
Z3M6IHsKKyAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9CisgICAg
ICAgICAgICAgICAgICAgIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5nZXRDYWxsTGlua0lu
Zm9Gb3JCeXRlY29kZUluZGV4KGNhbGxCeXRlY29kZUluZGV4KTsKKyAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChjYWxsTGlua0luZm8pOworCisgICAgICAgICAgICAgICAganVtcFRhcmdl
dCA9IGNhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Y2FzZSBJbmxpbmVDYWxsRnJhbWU6OkdldHRlckNhbGw6CisgICAgICAgICAgICBjYXNlIElubGlu
ZUNhbGxGcmFtZTo6U2V0dGVyQ2FsbDogeworICAgICAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbyA9CisgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lQ29kZUJsb2NrRm9y
Q2FsbGVyLT5maW5kU3R1YkluZm8oQ29kZU9yaWdpbihjYWxsQnl0ZWNvZGVJbmRleCkpOworICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0dWJJbmZvKTsKKworICAgICAgICAgICAgICAg
IGp1bXBUYXJnZXQgPSBzdHViSW5mby0+ZG9uZUxvY2F0aW9uKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodHJ1ZUNhbGxlci0+aW5saW5lQ2FsbEZy
YW1lKQorICAgICAgICAgICAgICAgIGNhbGxlckZyYW1lID0gY3B1LmZwPHVpbnQ4X3QqPigpICsg
dHJ1ZUNhbGxlci0+aW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAqIHNpemVvZihFbmNvZGVk
SlNWYWx1ZSk7CiAKLSAgICAvLyBSZWlmeSBpbmxpbmVkIGNhbGwgZnJhbWVzLgorICAgICAgICAg
ICAgZnJhbWUuc2V0PHZvaWQqPihpbmxpbmVDYWxsRnJhbWUtPnJldHVyblBDT2Zmc2V0KCksIGp1
bXBUYXJnZXQpOworICAgICAgICB9CiAKLSAgICByZWlmeUlubGluZWRDYWxsRnJhbWVzKGppdCwg
ZXhpdCk7CisgICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dm9pZCo+KGlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2ssIGJhc2VsaW5lQ29kZUJsb2Nr
KTsKKworICAgICAgICAvLyBSZXN0b3JlIHRoZSBpbmxpbmUgY2FsbCBmcmFtZSdzIGNhbGxlZSBz
YXZlIHJlZ2lzdGVycy4KKyAgICAgICAgLy8gSWYgdGhpcyBpbmxpbmVkIGZyYW1lIGlzIGEgdGFp
bCBjYWxsIHRoYXQgd2lsbCByZXR1cm4gYmFjayB0byB0aGUgb3JpZ2luYWwgY2FsbGVyLCB3ZSBu
ZWVkIHRvCisgICAgICAgIC8vIGNvcHkgdGhlIHByaW9yIGNvbnRlbnRzIG9mIHRoZSB0YWcgcmVn
aXN0ZXJzIGFscmVhZHkgc2F2ZWQgZm9yIHRoZSBvdXRlciBmcmFtZSB0byB0aGlzIGZyYW1lLgor
ICAgICAgICBzYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoY29udGV4dCwgYmFzZWxpbmVDb2RlQmxv
Y2ssIHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09m
ZnNldCksICF0cnVlQ2FsbGVyKTsKKworICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZS0+aXNW
YXJhcmdzKCkpCisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kPHVpbnQzMl90PihpbmxpbmVD
YWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCwgUGF5
bG9hZE9mZnNldCwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7
CisgICAgICAgIEFTU0VSVChjYWxsZXJGcmFtZSk7CisgICAgICAgIGZyYW1lLnNldDx2b2lkKj4o
aW5saW5lQ2FsbEZyYW1lLT5jYWxsZXJGcmFtZU9mZnNldCgpLCBjYWxsZXJGcmFtZSk7CisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJ
bmRleChjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KS5iaXRzKCk7CisgICAgICAgIGZyYW1lLnNl
dE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50LCBUYWdPZmZzZXQsIGxvY2F0aW9uQml0cyk7CisgICAgICAg
IGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQorICAgICAgICAgICAgZnJhbWUu
c2V0T3BlcmFuZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6
Y2FsbGVlLCBKU1ZhbHVlKGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29uc3RhbnQoKSkpOworI2Vs
c2UgLy8gVVNFKEpTVkFMVUU2NCkgLy8gc28gdGhpcyBpcyB0aGUgMzItYml0IHBhcnQKKyAgICAg
ICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gYmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0
aW9ucygpLmJlZ2luKCkgKyBjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4OworICAgICAgICB1aW50
MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KGluc3RydWN0aW9uKS5iaXRzKCk7Cisg
ICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tP
ZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBUYWdPZmZzZXQsIGxvY2F0aW9u
Qml0cyk7CisgICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFt
ZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUsIFRhZ09mZnNldCwgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KEpTVmFsdWU6OkNlbGxUYWcpKTsKKyAgICAgICAgaWYgKCFpbmxpbmVD
YWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpCisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKGlu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUsIFBheWxv
YWRPZmZzZXQsIGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29uc3RhbnQoKSk7CisjZW5kaWYgLy8g
VVNFKEpTVkFMVUU2NCkgLy8gZW5kaW5nIHRoZSAjZWxzZSBwYXJ0LCBzbyBkaXJlY3RseSBhYm92
ZSBpcyB0aGUgMzItYml0IHBhcnQKKyAgICB9CiAKLSAgICAvLyBBbmQgZmluaXNoLgotICAgIGFk
anVzdEFuZEp1bXBUb1RhcmdldCh2bSwgaml0LCBleGl0KTsKKyAgICAvLyBEb24ndCBuZWVkIHRv
IHNldCB0aGUgdG9wbGV2ZWwgY29kZSBvcmlnaW4gaWYgd2Ugb25seSBkaWQgaW5saW5lIHRhaWwg
Y2FsbHMKKyAgICBpZiAoY29kZU9yaWdpbikgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAg
IHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoY29kZU9yaWdpbi0+Ynl0ZWNv
ZGVJbmRleCkuYml0cygpOworI2Vsc2UKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
ID0gb3V0ZXJtb3N0QmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBj
b2RlT3JpZ2luLT5ieXRlY29kZUluZGV4OworICAgICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMg
PSBDYWxsU2l0ZUluZGV4KGluc3RydWN0aW9uKS5iaXRzKCk7CisjZW5kaWYKKyAgICAgICAgZnJh
bWUuc2V0T3BlcmFuZDx1aW50MzJfdD4oQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCwgVGFn
T2Zmc2V0LCBsb2NhdGlvbkJpdHMpOworICAgIH0KIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIE9T
UkV4aXQ6OmRlYnVnT3BlcmF0aW9uUHJpbnRTcGVjdWxhdGlvbkZhaWx1cmUoRXhlY1N0YXRlKiBl
eGVjLCB2b2lkKiBkZWJ1Z0luZm9SYXcsIHZvaWQqIHNjcmF0Y2gpCitzdGF0aWMgdm9pZCBhZGp1
c3RBbmRKdW1wVG9UYXJnZXQoQ29udGV4dCYgY29udGV4dCwgVk0mIHZtLCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jaywgT1NSRXhpdCYgZXhpdCkKIHsK
LSAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBleGVjKTsKKyAgICBPU1JFeGl0U3RhdGUqIGV4aXRTdGF0ZSA9IGV4aXQuZXhpdFN0
YXRlLmdldCgpOwogCi0gICAgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvKiBkZWJ1Z0luZm8g
PSBzdGF0aWNfY2FzdDxTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8qPihkZWJ1Z0luZm9SYXcp
OwotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZGVidWdJbmZvLT5jb2RlQmxvY2s7CisgICAg
V1RGOjpzdG9yZUxvYWRGZW5jZSgpOyAvLyBUaGUgb3B0aW1pemluZyBjb21waWxlciBleHBlY3Rz
IHRoYXQgdGhlIE9TUiBleGl0IG1lY2hhbmlzbSB3aWxsIGV4ZWN1dGUgdGhpcyBmZW5jZS4KKyAg
ICB2bS5oZWFwLndyaXRlQmFycmllcihiYXNlbGluZUNvZGVCbG9jayk7CisKKyAgICAvLyBXZSBi
YXJyaWVyIGFsbCBpbmxpbmVkIGZyYW1lcyAtLSBhbmQgbm90IGp1c3QgdGhlIGN1cnJlbnQgaW5s
aW5lIHN0YWNrIC0tCisgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCBrbm93IHdoaWNoIGlubGluZWQg
ZnVuY3Rpb24gb3ducyB0aGUgdmFsdWUgcHJvZmlsZSB0aGF0CisgICAgLy8gd2UnbGwgdXBkYXRl
IHdoZW4gd2UgZXhpdC4gSW4gdGhlIGNhc2Ugb2YgImYoKSB7IGEoKTsgYigpOyB9IiwgaWYgYm90
aAorICAgIC8vIGEgYW5kIGIgYXJlIGlubGluZWQsIHdlIG1pZ2h0IGV4aXQgaW5zaWRlIGIgZHVl
IHRvIGEgYmFkIHZhbHVlIGxvYWRlZAorICAgIC8vIGZyb20gYS4KKyAgICAvLyBGSVhNRTogTWV0
aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBzaG91bGQgcmVtZW1iZXIgd2hpY2ggQ29kZUJsb2Nr
IG93bnMKKyAgICAvLyB0aGUgdmFsdWUgcHJvZmlsZS4KKyAgICBJbmxpbmVDYWxsRnJhbWVTZXQq
IGlubGluZUNhbGxGcmFtZXMgPSBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPmlu
bGluZUNhbGxGcmFtZXMuZ2V0KCk7CisgICAgaWYgKGlubGluZUNhbGxGcmFtZXMpIHsKKyAgICAg
ICAgZm9yIChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA6ICppbmxpbmVDYWxsRnJh
bWVzKQorICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoaW5saW5lQ2FsbEZyYW1lLT5i
YXNlbGluZUNvZGVCbG9jay5nZXQoKSk7CisgICAgfQorCisgICAgaWYgKGV4aXQubV9jb2RlT3Jp
Z2luLmlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgY29udGV4dC5mcCgpID0gY29udGV4dC5mcDx1
aW50OF90Kj4oKSArIGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZz
ZXQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOworCisgICAgdm9pZCoganVtcFRhcmdldCA9IGV4
aXRTdGF0ZS0+anVtcFRhcmdldDsKKyAgICBBU1NFUlQoanVtcFRhcmdldCk7CisKKyAgICBjb250
ZXh0LnNwKCkgPSBjb250ZXh0LmZwPHVpbnQ4X3QqPigpICsgZXhpdFN0YXRlLT5zdGFja1BvaW50
ZXJPZmZzZXQ7CisgICAgaWYgKGV4aXQuaXNFeGNlcHRpb25IYW5kbGVyKCkpIHsKKyAgICAgICAg
Ly8gU2luY2Ugd2UncmUganVtcGluZyB0byBvcF9jYXRjaCwgd2UgbmVlZCB0byBzZXQgY2FsbEZy
YW1lRm9yQ2F0Y2guCisgICAgICAgIHZtLmNhbGxGcmFtZUZvckNhdGNoID0gY29udGV4dC5mcDxF
eGVjU3RhdGUqPigpOworICAgIH0KKworICAgIHZtLnRvcENhbGxGcmFtZSA9IGNvbnRleHQuZnA8
RXhlY1N0YXRlKj4oKTsKKyAgICBjb250ZXh0LnBjKCkgPSBqdW1wVGFyZ2V0OworfQorCitzdGF0
aWMgdm9pZCBwcmludE9TUkV4aXQoQ29udGV4dCYgY29udGV4dCwgdWludDMyX3Qgb3NyRXhpdElu
ZGV4LCBjb25zdCBPU1JFeGl0JiBleGl0KQoreworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGNvbnRl
eHQuZnA8RXhlY1N0YXRlKj4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNv
ZGVCbG9jaygpOwogICAgIENvZGVCbG9jayogYWx0ZXJuYXRpdmUgPSBjb2RlQmxvY2stPmFsdGVy
bmF0aXZlKCk7CisgICAgRXhpdEtpbmQga2luZCA9IGV4aXQubV9raW5kOworICAgIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0ID0gZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleDsKKwogICAg
IGRhdGFMb2coIlNwZWN1bGF0aW9uIGZhaWx1cmUgaW4gIiwgKmNvZGVCbG9jayk7Ci0gICAgZGF0
YUxvZygiIEAgZXhpdCAjIiwgdm0tPm9zckV4aXRJbmRleCwgIiAoYmMjIiwgZGVidWdJbmZvLT5i
eXRlY29kZU9mZnNldCwgIiwgIiwgZXhpdEtpbmRUb1N0cmluZyhkZWJ1Z0luZm8tPmtpbmQpLCAi
KSB3aXRoICIpOworICAgIGRhdGFMb2coIiBAIGV4aXQgIyIsIG9zckV4aXRJbmRleCwgIiAoYmMj
IiwgYnl0ZWNvZGVPZmZzZXQsICIsICIsIGV4aXRLaW5kVG9TdHJpbmcoa2luZCksICIpIHdpdGgg
Iik7CiAgICAgaWYgKGFsdGVybmF0aXZlKSB7CiAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAg
ICAiZXhlY3V0ZUNvdW50ZXIgPSAiLCBhbHRlcm5hdGl2ZS0+aml0RXhlY3V0ZUNvdW50ZXIoKSwK
QEAgLTc1NiwyMSArODI2LDE4IEBAIHZvaWQgSklUX09QRVJBVElPTiBPU1JFeGl0OjpkZWJ1Z09w
ZXJhdGkKICAgICAgICAgZGF0YUxvZygibm8gYWx0ZXJuYXRpdmUgY29kZSBibG9jayAoaS5lLiB3
ZSd2ZSBiZWVuIGpldHRpc29uZWQpIik7CiAgICAgZGF0YUxvZygiLCBvc3JFeGl0Q291bnRlciA9
ICIsIGNvZGVCbG9jay0+b3NyRXhpdENvdW50ZXIoKSwgIlxuIik7CiAgICAgZGF0YUxvZygiICAg
IEdQUnMgYXQgdGltZSBvZiBleGl0OiIpOwotICAgIGNoYXIqIHNjcmF0Y2hQb2ludGVyID0gc3Rh
dGljX2Nhc3Q8Y2hhcio+KHNjcmF0Y2gpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBH
UFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CiAgICAgICAgIEdQUlJlZyBncHIgPSBH
UFJJbmZvOjp0b1JlZ2lzdGVyKGkpOwotICAgICAgICBkYXRhTG9nKCIgIiwgR1BSSW5mbzo6ZGVi
dWdOYW1lKGdwciksICI6IiwgUmF3UG9pbnRlcigqcmVpbnRlcnByZXRfY2FzdF9wdHI8dm9pZCoq
PihzY3JhdGNoUG9pbnRlcikpKTsKLSAgICAgICAgc2NyYXRjaFBvaW50ZXIgKz0gc2l6ZW9mKEVu
Y29kZWRKU1ZhbHVlKTsKKyAgICAgICAgZGF0YUxvZygiICIsIGNvbnRleHQuZ3ByTmFtZShncHIp
LCAiOiIsIFJhd1BvaW50ZXIoY29udGV4dC5ncHI8dm9pZCo+KGdwcikpKTsKICAgICB9CiAgICAg
ZGF0YUxvZygiXG4iKTsKICAgICBkYXRhTG9nKCIgICAgRlBScyBhdCB0aW1lIG9mIGV4aXQ6Iik7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJz
OyArK2kpIHsKICAgICAgICAgRlBSUmVnIGZwciA9IEZQUkluZm86OnRvUmVnaXN0ZXIoaSk7Ci0g
ICAgICAgIGRhdGFMb2coIiAiLCBGUFJJbmZvOjpkZWJ1Z05hbWUoZnByKSwgIjoiKTsKLSAgICAg
ICAgdWludDY0X3QgYml0cyA9ICpyZWludGVycHJldF9jYXN0X3B0cjx1aW50NjRfdCo+KHNjcmF0
Y2hQb2ludGVyKTsKLSAgICAgICAgZG91YmxlIHZhbHVlID0gKnJlaW50ZXJwcmV0X2Nhc3RfcHRy
PGRvdWJsZSo+KHNjcmF0Y2hQb2ludGVyKTsKKyAgICAgICAgZGF0YUxvZygiICIsIGNvbnRleHQu
ZnByTmFtZShmcHIpLCAiOiIpOworICAgICAgICB1aW50NjRfdCBiaXRzID0gY29udGV4dC5mcHI8
dWludDY0X3Q+KGZwcik7CisgICAgICAgIGRvdWJsZSB2YWx1ZSA9IGNvbnRleHQuZnByKGZwcik7
CiAgICAgICAgIGRhdGFMb2dGKCIlbGx4OiVsZiIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oYml0
cyksIHZhbHVlKTsKLSAgICAgICAgc2NyYXRjaFBvaW50ZXIgKz0gc2l6ZW9mKEVuY29kZWRKU1Zh
bHVlKTsKICAgICB9CiAgICAgZGF0YUxvZygiXG4iKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdC5oCShyZXZpc2lvbiAyMjE2ODcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDE3
IEBACiAjaW5jbHVkZSAiTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oIgogI2luY2x1ZGUg
Ik9wZXJhbmRzLmgiCiAjaW5jbHVkZSAiVmFsdWVSZWNvdmVyeS5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIENDYWxsSGVscGVyczsKK25hbWVz
cGFjZSBQcm9iZSB7CitjbGFzcyBDb250ZXh0OworfSAvLyBuYW1lc3BhY2UgUHJvYmUKKworbmFt
ZXNwYWNlIFByb2ZpbGVyIHsKK2NsYXNzIE9TUkV4aXQ7Cit9IC8vIG5hbWVzcGFjZSBQcm9maWxl
cgogCiBuYW1lc3BhY2UgREZHIHsKIApAQCAtOTEsNiArOTgsMzIgQEAgcHJpdmF0ZToKICAgICBT
cGVjdWxhdGlvblJlY292ZXJ5VHlwZSBtX3R5cGU7CiB9OwogCitzdHJ1Y3QgT1NSRXhpdFN0YXRl
IDogUmVmQ291bnRlZDxPU1JFeGl0U3RhdGU+IHsKKyAgICBPU1JFeGl0U3RhdGUoT1NSRXhpdEJh
c2UmIGV4aXQsIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJs
b2NrLCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMsIFNwZWN1bGF0aW9uUmVjb3Zl
cnkqIHJlY292ZXJ5LCBwdHJkaWZmX3Qgc3RhY2tQb2ludGVyT2Zmc2V0LCBpbnQzMl90IGFjdGl2
ZVRocmVzaG9sZCwgZG91YmxlIG1lbW9yeVVzYWdlQWRqdXN0ZWRUaHJlc2hvbGQsIHZvaWQqIGp1
bXBUYXJnZXQpCisgICAgICAgIDogZXhpdChleGl0KQorICAgICAgICAsIGNvZGVCbG9jayhjb2Rl
QmxvY2spCisgICAgICAgICwgYmFzZWxpbmVDb2RlQmxvY2soYmFzZWxpbmVDb2RlQmxvY2spCisg
ICAgICAgICwgb3BlcmFuZHMob3BlcmFuZHMpCisgICAgICAgICwgcmVjb3ZlcnkocmVjb3Zlcnkp
CisgICAgICAgICwgc3RhY2tQb2ludGVyT2Zmc2V0KHN0YWNrUG9pbnRlck9mZnNldCkKKyAgICAg
ICAgLCBhY3RpdmVUaHJlc2hvbGQoYWN0aXZlVGhyZXNob2xkKQorICAgICAgICAsIG1lbW9yeVVz
YWdlQWRqdXN0ZWRUaHJlc2hvbGQobWVtb3J5VXNhZ2VBZGp1c3RlZFRocmVzaG9sZCkKKyAgICAg
ICAgLCBqdW1wVGFyZ2V0KGp1bXBUYXJnZXQpCisgICAgeyB9CisKKyAgICBPU1JFeGl0QmFzZSYg
ZXhpdDsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jazsKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5l
Q29kZUJsb2NrOworICAgIE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+IG9wZXJhbmRzOworICAgIFNw
ZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5OworICAgIHB0cmRpZmZfdCBzdGFja1BvaW50ZXJP
ZmZzZXQ7CisgICAgdWludDMyX3QgYWN0aXZlVGhyZXNob2xkOworICAgIGRvdWJsZSBtZW1vcnlV
c2FnZUFkanVzdGVkVGhyZXNob2xkOworICAgIHZvaWQqIGp1bXBUYXJnZXQ7CisKKyAgICBQcm9m
aWxlcjo6T1NSRXhpdCogcHJvZmlsZXJFeGl0IHsgbnVsbHB0ciB9OworfTsKKwogLy8gPT09IE9T
UkV4aXQgPT09CiAvLwogLy8gVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVzIGhvdyB0byBleGl0IHRo
ZSBzcGVjdWxhdGl2ZSBwYXRoIGJ5CkBAIC05OCwzMiArMTMxLDIwIEBAIHByaXZhdGU6CiBzdHJ1
Y3QgT1NSRXhpdCA6IHB1YmxpYyBPU1JFeGl0QmFzZSB7CiAgICAgT1NSRXhpdChFeGl0S2luZCwg
SlNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSwgU3BlY3VsYXRpdmVK
SVQqLCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCA9IFVJTlRf
TUFYKTsKIAotICAgIHN0YXRpYyB2b2lkIEpJVF9PUEVSQVRJT04gY29tcGlsZU9TUkV4aXQoRXhl
Y1N0YXRlKikgV1RGX0lOVEVSTkFMOworICAgIHN0YXRpYyB2b2lkIGV4ZWN1dGVPU1JFeGl0KFBy
b2JlOjpDb250ZXh0Jik7CiAKLSAgICB1bnNpZ25lZCBtX3BhdGNoYWJsZUNvZGVPZmZzZXQgeyAw
IH07Ci0gICAgCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG1fY29kZTsKKyAgICBSZWZQdHI8
T1NSRXhpdFN0YXRlPiBleGl0U3RhdGU7CiAgICAgCiAgICAgSlNWYWx1ZVNvdXJjZSBtX2pzVmFs
dWVTb3VyY2U7CiAgICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBtX3ZhbHVlUHJvZmls
ZTsKICAgICAKICAgICB1bnNpZ25lZCBtX3JlY292ZXJ5SW5kZXg7CiAKLSAgICB2b2lkIHNldFBh
dGNoYWJsZUNvZGVPZmZzZXQoTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXApOwotICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIGdldFBhdGNoYWJsZUNvZGVPZmZzZXRBc0p1bXAoKSBjb25zdDsK
LSAgICBDb2RlTG9jYXRpb25KdW1wIGNvZGVMb2NhdGlvbkZvclJlcGF0Y2goQ29kZUJsb2NrKikg
Y29uc3Q7Ci0gICAgdm9pZCBjb3JyZWN0SnVtcChMaW5rQnVmZmVyJik7Ci0KICAgICB1bnNpZ25l
ZCBtX3N0cmVhbUluZGV4OwogICAgIHZvaWQgY29uc2lkZXJBZGRpbmdBc0ZyZXF1ZW50RXhpdFNp
dGUoQ29kZUJsb2NrKiBwcm9maWxlZENvZGVCbG9jaykKICAgICB7CiAgICAgICAgIE9TUkV4aXRC
YXNlOjpjb25zaWRlckFkZGluZ0FzRnJlcXVlbnRFeGl0U2l0ZShwcm9maWxlZENvZGVCbG9jaywg
RXhpdEZyb21ERkcpOwogICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgdm9pZCBjb21waWxl
RXhpdChDQ2FsbEhlbHBlcnMmLCBWTSYsIGNvbnN0IE9TUkV4aXQmLCBjb25zdCBPcGVyYW5kczxW
YWx1ZVJlY292ZXJ5PiYsIFNwZWN1bGF0aW9uUmVjb3ZlcnkqKTsKLSAgICBzdGF0aWMgdm9pZCBl
bWl0UmVzdG9yZUFyZ3VtZW50cyhDQ2FsbEhlbHBlcnMmLCBjb25zdCBPcGVyYW5kczxWYWx1ZVJl
Y292ZXJ5PiYpOwotICAgIHN0YXRpYyB2b2lkIEpJVF9PUEVSQVRJT04gZGVidWdPcGVyYXRpb25Q
cmludFNwZWN1bGF0aW9uRmFpbHVyZShFeGVjU3RhdGUqLCB2b2lkKiwgdm9pZCopIFdURl9JTlRF
Uk5BTDsKIH07CiAKIHN0cnVjdCBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8gewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVy
Q29tbW9uLmNwcAkocmV2aXNpb24gMjIxNjg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNiAr
MzcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKKy8vIEZJWE1FOiBy
ZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc1MTQ1Lgogdm9pZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYgaml0LCBj
b25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKIHsKICAgICBpZiAoIWV4aXRLaW5kTWF5SmV0dGlzb24o
ZXhpdC5tX2tpbmQpKSB7CkBAIC0xNDMsNiArMTQ0LDcgQEAgdm9pZCBoYW5kbGVFeGl0Q291bnRz
KENDYWxsSGVscGVycyYgaml0LAogICAgIGRvbmVBZGp1c3RpbmcubGluaygmaml0KTsKIH0KIAor
Ly8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogewogICAgIC8vIEZJWE1F
OiBXZSBzaG91bGRuJ3QgbGVhdmUgaG9sZXMgb24gdGhlIHN0YWNrIHdoZW4gcGVyZm9ybWluZyBh
biBPU1IgZXhpdApAQCAtMjUyLDYgKzI1NCw3IEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1l
cyhDQ2FsbEhlbHBlcnMKICAgICB9CiB9CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdl
IGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogc3Rh
dGljIHZvaWQgb3NyV3JpdGVCYXJyaWVyKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgb3duZXIs
IEdQUlJlZyBzY3JhdGNoKQogewogICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBvd25lcklzUmVt
ZW1iZXJlZE9ySW5FZGVuID0gaml0LmJhcnJpZXJCcmFuY2hXaXRob3V0RmVuY2Uob3duZXIpOwpA
QCAtMjcyLDYgKzI3NSw3IEBAIHN0YXRpYyB2b2lkIG9zcldyaXRlQmFycmllcihDQ2FsbEhlbHBl
cnMKICAgICBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuLmxpbmsoJmppdCk7CiB9CiAKKy8vIEZJ
WE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogdm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0mIHZtLCBD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiB7CiAgICAgaml0Lm1l
bW9yeUZlbmNlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRD
b21waWxlckNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgJKHJldmlzaW9uIDIyMTY4NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNDAsNiArNDAsNyBAQCB2b2lkIGhhbmRsZUV4aXRDb3VudHMoQ0NhbGxIZWxwZXJz
JiwgY29uCiB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiwgY29uc3Qg
T1NSRXhpdEJhc2UmKTsKIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KFZNJiwgQ0NhbGxIZWxw
ZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsKIAorLy8gRklYTUU6IFRoaXMgd29uJ3QgYmUgbmVl
ZGVkIG9uY2Ugd2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzUxNDUuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSklUQ29kZVR5cGU+CiB2b2lkIGFkanVzdEZyYW1l
QW5kU3RhY2tJbk9TUkV4aXRDb21waWxlclRodW5rKE1hY3JvQXNzZW1ibGVyJiBqaXQsIFZNKiB2
bSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMjE2ODcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzU1LDYyICsxMzU1LDYgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUNs
bwogICAgICAgICBleGVjLCBzdHJ1Y3R1cmUsIGFyZ3VtZW50U3RhcnQsIGxlbmd0aCwgY2FsbGVl
KTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3Vt
ZW50c0R1cmluZ0V4aXQoRXhlY1N0YXRlKiBleGVjLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNh
bGxGcmFtZSwgSlNGdW5jdGlvbiogY2FsbGVlLCBpbnQzMl90IGFyZ3VtZW50Q291bnQpCi17Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdGFyZ2V0
KCZ2bSwgZXhlYyk7Ci0gICAgCi0gICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXAp
OwotICAgIAotICAgIENvZGVCbG9jayogY29kZUJsb2NrOwotICAgIGlmIChpbmxpbmVDYWxsRnJh
bWUpCi0gICAgICAgIGNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZy
YW1lKGlubGluZUNhbGxGcmFtZSk7Ci0gICAgZWxzZQotICAgICAgICBjb2RlQmxvY2sgPSBleGVj
LT5jb2RlQmxvY2soKTsKLSAgICAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBhcmd1bWVudENvdW50
IC0gMTsKLSAgICB1bnNpZ25lZCBjYXBhY2l0eSA9IHN0ZDo6bWF4KGxlbmd0aCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gMSkpOwotICAgIERpcmVj
dEFyZ3VtZW50cyogcmVzdWx0ID0gRGlyZWN0QXJndW1lbnRzOjpjcmVhdGUoCi0gICAgICAgIHZt
LCBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUoKSwg
bGVuZ3RoLCBjYXBhY2l0eSk7Ci0gICAgCi0gICAgcmVzdWx0LT5jYWxsZWUoKS5zZXQodm0sIHJl
c3VsdCwgY2FsbGVlKTsKLSAgICAKLSAgICBSZWdpc3RlciogYXJndW1lbnRzID0KLSAgICAgICAg
ZXhlYy0+cmVnaXN0ZXJzKCkgKyAoaW5saW5lQ2FsbEZyYW1lID8gaW5saW5lQ2FsbEZyYW1lLT5z
dGFja09mZnNldCA6IDApICsKLSAgICAgICAgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldCgwKTsK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspCi0gICAgICAgIHJlc3VsdC0+c2V0
SW5kZXhRdWlja2x5KHZtLCBpLCBhcmd1bWVudHNbaV0uanNWYWx1ZSgpKTsKLSAgICAKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRl
Q2xvbmVkQXJndW1lbnRzRHVyaW5nRXhpdChFeGVjU3RhdGUqIGV4ZWMsIElubGluZUNhbGxGcmFt
ZSogaW5saW5lQ2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBjYWxsZWUsIGludDMyX3QgYXJndW1lbnRD
b3VudCkKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0YXJnZXQoJnZtLCBleGVjKTsKLSAgICAKLSAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVy
R0Modm0uaGVhcCk7Ci0gICAgCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2s7Ci0gICAgaWYgKGlu
bGluZUNhbGxGcmFtZSkKLSAgICAgICAgY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJ
bmxpbmVDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1lKTsKLSAgICBlbHNlCi0gICAgICAgIGNvZGVC
bG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwotICAgIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFy
Z3VtZW50Q291bnQgLSAxOwotICAgIENsb25lZEFyZ3VtZW50cyogcmVzdWx0ID0gQ2xvbmVkQXJn
dW1lbnRzOjpjcmVhdGVFbXB0eSgKLSAgICAgICAgdm0sIGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCktPmNsb25lZEFyZ3VtZW50c1N0cnVjdHVyZSgpLCBjYWxsZWUsIGxlbmd0aCk7Ci0gICAgCi0g
ICAgUmVnaXN0ZXIqIGFyZ3VtZW50cyA9Ci0gICAgICAgIGV4ZWMtPnJlZ2lzdGVycygpICsgKGlu
bGluZUNhbGxGcmFtZSA/IGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgOiAwKSArCi0gICAg
ICAgIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoMCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
bGVuZ3RoOyBpLS07KQotICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIGFy
Z3VtZW50c1tpXS5qc1ZhbHVlKCkpOwotCi0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQog
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVJlc3QoRXhlY1N0YXRlKiBleGVj
LCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdW5zaWduZWQgbnVtYmVyT2ZQYXJhbXNUb1NraXAs
IHVuc2lnbmVkIGFycmF5U2l6ZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMjE2
ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM5LDkgKzEzOSw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkNvbXBhcmVTdHIKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RF
cShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Q3JlYXRlQWN0aXZhdGlvbkRpcmVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwg
U3ltYm9sVGFibGUqLCBFbmNvZGVkSlNWYWx1ZSk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMy
X3QgbGVuZ3RoLCBpbnQzMl90IG1pbkNhcGFjaXR5KTsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHNEdXJpbmdFeGl0KEV4ZWNTdGF0ZSosIElubGlu
ZUNhbGxGcmFtZSosIEpTRnVuY3Rpb24qLCBpbnQzMl90IGFyZ3VtZW50Q291bnQpOwogSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cyhFeGVjU3RhdGUq
LCBTdHJ1Y3R1cmUqLCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgaW50MzJfdCBsZW5ndGgsIEpT
RnVuY3Rpb24qIGNhbGxlZSwgSlNMZXhpY2FsRW52aXJvbm1lbnQqKTsKLUpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHNEdXJpbmdFeGl0KEV4ZWNTdGF0
ZSosIElubGluZUNhbGxGcmFtZSosIEpTRnVuY3Rpb24qLCBpbnQzMl90IGFyZ3VtZW50Q291bnQp
OwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50cyhF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgaW50MzJfdCBs
ZW5ndGgsIEpTRnVuY3Rpb24qIGNhbGxlZSk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQ3JlYXRlUmVzdChFeGVjU3RhdGUqLCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdW5zaWdu
ZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAsIHVuc2lnbmVkIGFycmF5U2l6ZSk7CiBkb3VibGUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25GTW9kT25JbnRzKGludDMyX3QsIGludDMyX3QpIFdURl9J
TlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAJKHJl
dmlzaW9uIDIyMTY4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDAsNjQgKzQwLDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRHZW5lcmF0aW9u
VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRUaHVu
a0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgTWFjcm9Bc3NlbWJsZXIgaml0OwotCi0gICAgLy8g
VGhpcyBuZWVkcyB0byBoYXBwZW4gYmVmb3JlIHdlIHVzZSB0aGUgc2NyYXRjaCBidWZmZXIgYmVj
YXVzZSB0aGlzIGZ1bmN0aW9uIGFsc28gdXNlcyB0aGUgc2NyYXRjaCBidWZmZXIuCi0gICAgYWRq
dXN0RnJhbWVBbmRTdGFja0luT1NSRXhpdENvbXBpbGVyVGh1bms8REZHOjpKSVRDb2RlPihqaXQs
IHZtLCBKSVRDb2RlOjpERkdKSVQpOwotICAgIAotICAgIHNpemVfdCBzY3JhdGNoU2l6ZSA9IHNp
emVvZihFbmNvZGVkSlNWYWx1ZSkgKiAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBGUFJJ
bmZvOjpudW1iZXJPZlJlZ2lzdGVycyk7Ci0gICAgU2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1ZmZl
ciA9IHZtLT5zY3JhdGNoQnVmZmVyRm9yU2l6ZShzY3JhdGNoU2l6ZSk7Ci0gICAgRW5jb2RlZEpT
VmFsdWUqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZl
ci0+ZGF0YUJ1ZmZlcigpKTsKLSAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BS
SW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAg
ICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnRvUmVnaXN0ZXIoaSksIGJ1ZmZlciArIGkpOwotI2Vs
c2UKLSAgICAgICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6dG9SZWdpc3RlcihpKSwgYnVmZmVyICsg
aSk7Ci0jZW5kaWYKLSAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86
Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIoYnVmZmVyICsgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBp
KSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6dG9S
ZWdpc3RlcihpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApKTsKLSAg
ICB9Ci0gICAgCi0gICAgLy8gVGVsbCBHQyBtYXJrIHBoYXNlIGhvdyBtdWNoIG9mIHRoZSBzY3Jh
dGNoIGJ1ZmZlciBpcyBhY3RpdmUgZHVyaW5nIGNhbGwuCi0gICAgaml0Lm1vdmUoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3Ro
KCkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgaml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKHNjcmF0Y2hTaXplKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5m
bzo6cmVnVDApKTsKLQotICAgIC8vIFNldCB1cCBvbmUgYXJndW1lbnQuCi0jaWYgQ1BVKFg4NikK
LSAgICBqaXQucG9rZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgMCk7Ci0jZWxzZQotICAg
IGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwotI2VuZGlmCi0KLSAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBmdW5jdGlvbkNhbGwgPSBq
aXQuY2FsbCgpOwotCi0gICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
c2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZvOjpyZWdUMCk7
Ci0gICAgaml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDApLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCkpOwotCi0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSAgICAgICAg
aml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoYnVmZmVyICsgR1BSSW5mbzo6
bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICBqaXQubG9h
ZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCksIEZQUkluZm86
OnRvUmVnaXN0ZXIoaSkpOwotICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BS
SW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAg
ICAgIGppdC5sb2FkNjQoYnVmZmVyICsgaSwgR1BSSW5mbzo6dG9SZWdpc3RlcihpKSk7Ci0jZWxz
ZQotICAgICAgICBqaXQubG9hZDMyKGJ1ZmZlciArIGksIEdQUkluZm86OnRvUmVnaXN0ZXIoaSkp
OwotI2VuZGlmCi0gICAgfQotICAgIAotICAgIGppdC5qdW1wKE1hY3JvQXNzZW1ibGVyOjpBYnNv
bHV0ZUFkZHJlc3MoJnZtLT5vc3JFeGl0SnVtcERlc3RpbmF0aW9uKSk7Ci0gICAgCisgICAgaml0
LnByb2JlKE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0LCB2bSk7CiAgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgCi0gICAgcGF0Y2hCdWZmZXIubGlu
ayhmdW5jdGlvbkNhbGwsIE9TUkV4aXQ6OmNvbXBpbGVPU1JFeGl0KTsKLSAgICAKLSAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJERkcgT1NSIGV4aXQgZ2VuZXJhdGlvbiB0
aHVuayIpKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJERkcgT1NS
IGV4aXQgdGh1bmsiKSk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFbnRyeVRodW5r
R2VuZXJhdG9yKFZNKiB2bSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1
bmtzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3Mu
aAkocmV2aXNpb24gMjIxNjg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVu
a3MuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFZNOwogCiBuYW1l
c3BhY2UgREZHIHsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRHZW5lcmF0aW9uVGh1
bmtHZW5lcmF0b3IoVk0qKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0VGh1bmtHZW5l
cmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFbnRyeVRodW5rR2VuZXJhdG9y
KFZNKik7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDIyMTY4NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTAsNiArNTAsNyBAQCBFeGVjdXRhYmxlQmFzZSogQXNzZW1ibHlIZWxwZXJzOjpl
eGVjdXRhCiAgICAgcmV0dXJuIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7CiB9CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3
aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1
LgogVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4mIEFzc2VtYmx5SGVscGVyczo6ZGVj
b2RlZENvZGVNYXBGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgQVNTRVJUKGNvZGVC
bG9jayA9PSBjb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpKTsKQEAgLTgyMCw2MSArODIxLDYg
QEAgYm9vbCBBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHROZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFdFQkFTU0VNQkxZKQogCi12b2lkIEFzc2VtYmx5SGVscGVyczo6ZGVidWdDYWxsKFZN
JiB2bSwgVl9EZWJ1Z09wZXJhdGlvbl9FUFAgZnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50KQotewot
ICAgIHNpemVfdCBzY3JhdGNoU2l6ZSA9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiAoR1BSSW5m
bzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyk7Ci0gICAg
U2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1ZmZlciA9IHZtLnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNj
cmF0Y2hTaXplKTsKLSAgICBFbmNvZGVkSlNWYWx1ZSogYnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5j
b2RlZEpTVmFsdWUqPihzY3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpOwotCi0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzdG9yZTY0KEdQUkluZm86OnRvUmVnaXN0ZXIoaSks
IGJ1ZmZlciArIGkpOwotI2Vsc2UKLSAgICAgICAgc3RvcmUzMihHUFJJbmZvOjp0b1JlZ2lzdGVy
KGkpLCBidWZmZXIgKyBpKTsKLSNlbmRpZgotICAgIH0KLQotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0gICAgICAgIG1vdmUo
VHJ1c3RlZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBH
UFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIHN0b3JlRG91YmxlKEZQUkluZm86OnRvUmVnaXN0ZXIo
aSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICB9Ci0KLSAgICAvLyBUZWxsIEdDIG1hcmsgcGhhc2Ug
aG93IG11Y2ggb2YgdGhlIHNjcmF0Y2ggYnVmZmVyIGlzIGFjdGl2ZSBkdXJpbmcgY2FsbC4KLSAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3Ro
KCkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihzY3JhdGNo
U2l6ZSksIEdQUkluZm86OnJlZ1QwKTsKLQotI2lmIENQVShYODZfNjQpIHx8IENQVShBUk0pIHx8
IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpCi0gICAgbW92ZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciks
IEdQUkluZm86OmFyZ3VtZW50R1BSMik7Ci0gICAgbW92ZShUcnVzdGVkSW1tUHRyKGFyZ3VtZW50
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIEdQUlJlZyBzY3JhdGNoID0gc2Vs
ZWN0U2NyYXRjaEdQUihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BS
MSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSNlbGlmIENQVShYODYpCi0gICAgcG9rZShHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgMCk7Ci0gICAgcG9rZShUcnVzdGVkSW1tUHRyKGFyZ3Vt
ZW50KSwgMSk7Ci0gICAgcG9rZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciksIDIpOwotICAgIEdQUlJl
ZyBzY3JhdGNoID0gR1BSSW5mbzo6cmVnVDA7Ci0jZWxzZQotI2Vycm9yICJKSVQgbm90IHN1cHBv
cnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKLSNlbmRpZgotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihy
ZWludGVycHJldF9jYXN0PHZvaWQqPihmdW5jdGlvbikpLCBzY3JhdGNoKTsKLSAgICBjYWxsKHNj
cmF0Y2gpOwotCi0gICAgbW92ZShUcnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFkZHJlc3NP
ZkFjdGl2ZUxlbmd0aCgpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgIHN0b3JlUHRyKFRydXN0ZWRJ
bW1QdHIoMCksIEdQUkluZm86OnJlZ1QwKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0gICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZv
OjpyZWdUMCk7Ci0gICAgICAgIGxvYWREb3VibGUoR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OnRv
UmVnaXN0ZXIoaSkpOwotICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5m
bzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAg
IGxvYWQ2NChidWZmZXIgKyBpLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKLSNlbHNlCi0gICAg
ICAgIGxvYWQzMihidWZmZXIgKyBpLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKLSNlbmRpZgot
ICAgIH0KLX0KLQogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmNvcHlDYWxsZWVTYXZlc1RvVk1FbnRy
eUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXJJbXBsKEdQUlJlZyBjYWxsZWVTYXZlc0J1ZmZlcikKIHsK
ICNpZiBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMjIxNjg3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBj
b3B5KQpAQCAtOTkyLDkgKzk5Miw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEdQUkluZm86
OnJlZ1Q1OwogICAgIH0KIAotICAgIC8vIEFkZCBhIGRlYnVnIGNhbGwuIFRoaXMgY2FsbCBoYXMg
bm8gZWZmZWN0IG9uIEpJVCBjb2RlIGV4ZWN1dGlvbiBzdGF0ZS4KLSAgICB2b2lkIGRlYnVnQ2Fs
bChWTSYsIFZfRGVidWdPcGVyYXRpb25fRVBQIGZ1bmN0aW9uLCB2b2lkKiBhcmd1bWVudCk7Ci0K
ICAgICAvLyBUaGVzZSBtZXRob2RzIEpJVCBnZW5lcmF0ZSBkeW5hbWljLCBkZWJ1Zy1vbmx5IGNo
ZWNrcyAtIGFraW4gdG8gQVNTRVJUcy4KICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgdm9pZCBq
aXRBc3NlcnRJc0ludDMyKEdQUlJlZyk7CkBAIC0xNDY1LDYgKzE0NjIsNyBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgdm9pZCBlbWl0RHVtYlZpcnR1YWxDYWxsKFZNJiwgQ2FsbExpbmtJbmZvKik7CiAg
ICAgCisgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgZml4IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiAgICAgVmVjdG9yPEJ5dGVjb2RlQW5k
TWFjaGluZU9mZnNldD4mIGRlY29kZWRDb2RlTWFwRm9yKENvZGVCbG9jayopOwogCiAgICAgdm9p
ZCBtYWtlU3BhY2VPblN0YWNrRm9yQ0NhbGwoKTsKQEAgLTE2NTYsNiArMTY1NCw3IEBAIHByb3Rl
Y3RlZDoKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwogICAgIENvZGVCbG9jayogbV9iYXNl
bGluZUNvZGVCbG9jazsKIAorICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1LgogICAgIEhhc2hN
YXA8Q29kZUJsb2NrKiwgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4+IG1fZGVjb2Rl
ZENvZGVNYXBzOwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMjE2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzA3LDYgKzIzMDcsNyBA
QCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlYWxsb2NhdGVCCiAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHJlc3VsdCk7CiB9CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhp
cyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1
MTQ1Lgogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9TUldyaXRlQmFycmllcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTQ2VsbCogY2VsbCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAy
MjE2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29y
a2luZyBjb3B5KQpAQCAtNDQ2LDYgKzQ0Niw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUmVhbGxvY2F0ZUIKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZUJ1
dHRlcmZseVRvR3Jvd1Byb3BlcnR5U3RvcmFnZShFeGVjU3RhdGUqLCBKU09iamVjdCosIHNpemVf
dCBuZXdTaXplKSBXVEZfSU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25X
cml0ZUJhcnJpZXJTbG93UGF0aChFeGVjU3RhdGUqLCBKU0NlbGwqKTsKKy8vIEZJWE1FOiByZW1v
dmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc1MTQ1Lgogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9TUldyaXRlQmFycmllcihF
eGVjU3RhdGUqLCBKU0NlbGwqKTsKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkV4Y2Vw
dGlvbkZ1enooRXhlY1N0YXRlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZXJPU1JFeGl0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5oCShyZXZpc2lvbiAyMjE2ODcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDMsNyArNDMsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdWludDY0X3QqIGNvdW50ZXJBZGRyZXNz
KCkgeyByZXR1cm4gJm1fY291bnRlcjsgfQogICAgIHVpbnQ2NF90IGNvdW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9jb3VudGVyOyB9Ci0gICAgCisgICAgdm9pZCBpbmNDb3VudCgpIHsgbV9jb3VudGVy
Kys7IH0KKwogICAgIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqKSBjb25zdDsKIAogcHJpdmF0ZToK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlz
aW9uIDIyMTY4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAx
OTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMp
IDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMs
IDIwMDQsIDIwMDUsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTIsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNDQsMTIgKzM0
NCw5IEBAIHB1YmxpYzoKICAgICB1aW50MzJfdCB0YWcoKSBjb25zdDsKICAgICBpbnQzMl90IHBh
eWxvYWQoKSBjb25zdDsKIAotI2lmICFFTkFCTEUoSklUKQotICAgIC8vIFRoaXMgc2hvdWxkIG9u
bHkgYmUgdXNlZCBieSB0aGUgTExJbnQgQyBMb29wIGludGVycHJldGVyIHdobyBuZWVkcwotICAg
IC8vIHN5bnRoZXNpemUgSlNWYWx1ZSBmcm9tIGl0cyAicmVnaXN0ZXIicyBob2xkaW5nIHRhZyBh
bmQgcGF5bG9hZAotICAgIC8vIHZhbHVlcy4KKyAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIHVz
ZWQgYnkgdGhlIExMSW50IEMgTG9vcCBpbnRlcnByZXRlciBhbmQgT1NSRXhpdCBjb2RlIHdobyBu
ZWVkcworICAgIC8vIHN5bnRoZXNpemUgSlNWYWx1ZSBmcm9tIGl0cyAicmVnaXN0ZXIicyBob2xk
aW5nIHRhZyBhbmQgcGF5bG9hZCB2YWx1ZXMuCiAgICAgZXhwbGljaXQgSlNWYWx1ZShpbnQzMl90
IHRhZywgaW50MzJfdCBwYXlsb2FkKTsKLSNlbmRpZgogCiAjZWxpZiBVU0UoSlNWQUxVRTY0KQog
ICAgIC8qCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmgJKHJldmlzaW9uIDIyMTY4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0MCw3ICsz
NDAsNyBAQCBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShpbnQgaSkKICAgICB1LmFzQml0cy5wYXls
b2FkID0gaTsKIH0KIAotI2lmICFFTkFCTEUoSklUKQorI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiBp
bmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShpbnQzMl90IHRhZywgaW50MzJfdCBwYXlsb2FkKQogewog
ICAgIHUuYXNCaXRzLnRhZyA9IHRhZzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAkocmV2aXNpb24gMjIxNjg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAkod29ya2luZyBjb3B5KQpAQCAtNTcxLDcgKzU3MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkKiB0
YXJnZXRNYWNoaW5lUENGb3JUaHJvdzsKICAgICBJbnN0cnVjdGlvbiogdGFyZ2V0SW50ZXJwcmV0
ZXJQQ0ZvclRocm93OwogICAgIHVpbnQzMl90IG9zckV4aXRJbmRleDsKLSAgICB2b2lkKiBvc3JF
eGl0SnVtcERlc3RpbmF0aW9uOwogICAgIGJvb2wgaXNFeGVjdXRpbmdJblJlZ0V4cEpJVCB7IGZh
bHNlIH07CiAKICAgICAvLyBUaGUgdGhyZWFkaW5nIHByb3RvY29sIGhlcmUgaXMgYXMgZm9sbG93
czoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>320075</attachid>
            <date>2017-09-06 16:21:19 -0700</date>
            <delta_ts>2017-09-06 16:21:19 -0700</delta_ts>
            <desc>x86_64 benchmark results (run 1)</desc>
            <filename>bench-result_x86_64.txt</filename>
            <type>text/plain</type>
            <size>97692</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">JCBzbGVlcCA1ICYmIC4uL3dzL0ludGVybmFsL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1iZW5jaG1h
cmtzIC0tb3V0ZXIgOCBiYXNlOmJhc2UvanNjIG5ldzpuZXcvanNjCldhcm5pbmc6IGNvdWxkIG5v
dCBpZGVudGlmeSBjaGVja291dCBsb2NhdGlvbiBmb3IgYmFzZQpXYXJuaW5nOiBjb3VsZCBub3Qg
aWRlbnRpZnkgY2hlY2tvdXQgbG9jYXRpb24gZm9yIG5ldwpXYXJuaW5nOiByZWZ1c2luZyB0byBy
dW4gSlNCZW5jaCBiZWNhdXNlIG5vdCBhbGwgVk1zIGFyZSBEdW1wUmVuZGVyVHJlZSBvciBXZWJL
aXRUZXN0UnVubmVyLgpXYXJuaW5nOiByZWZ1c2luZyB0byBydW4gRFNQSlMgYmVjYXVzZSBub3Qg
YWxsIFZNcyBhcmUgRHVtcFJlbmRlclRyZWUgb3IgV2ViS2l0VGVzdFJ1bm5lci4KMTE5NzIvMTE5
NzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAtZSAgICAgICAgICAgICAgICAgICAgICAgIC1lIApHZW5lcmF0aW5nIGJlbmNo
bWFyayByZXBvcnQgYXQgL1ZvbHVtZXMvRGF0YS9iZW5jaC9iYXNlX25ld19TdW5TcGlkZXJMb25n
U3BpZGVyVjhTcGlkZXJPY3RhbmVLcmFrZW5NaWNyb2JlbmNobWFya3NBc21CZW5jaENvbXByZXNz
aW9uQmVuY2hTaXhTcGVlZF9HYWxlb24tMl8yMDE3MDkwNl8xNTIxX3JlcG9ydC50eHQKQW5kIHJh
dyBkYXRhIGF0IC9Wb2x1bWVzL0RhdGEvYmVuY2gvYmFzZV9uZXdfU3VuU3BpZGVyTG9uZ1NwaWRl
clY4U3BpZGVyT2N0YW5lS3Jha2VuTWljcm9iZW5jaG1hcmtzQXNtQmVuY2hDb21wcmVzc2lvbkJl
bmNoU2l4U3BlZWRfR2FsZW9uLTJfMjAxNzA5MDZfMTUyMS5qc29uCgpCZW5jaG1hcmsgcmVwb3J0
IGZvciBTdW5TcGlkZXIsIExvbmdTcGlkZXIsIFY4U3BpZGVyLCBPY3RhbmUsIEtyYWtlbiwgTWlj
cm9iZW5jaG1hcmtzLCBBc21CZW5jaCwgQ29tcHJlc3Npb25CZW5jaCwgYW5kIFNpeFNwZWVkIG9u
IEdhbGVvbi0yIChNYWNCb29rUHJvMTEsMykuCgpWTXMgdGVzdGVkOgoiYmFzZSIgYXQgL1ZvbHVt
ZXMvRGF0YS9iZW5jaC9iYXNlL2pzYwoibmV3IiBhdCAvVm9sdW1lcy9EYXRhL2JlbmNoL25ldy9q
c2MKCkNvbGxlY3RlZCA4IHNhbXBsZXMgcGVyIGJlbmNobWFyay9WTSwgd2l0aCA4IFZNIGludm9j
YXRpb25zIHBlciBiZW5jaG1hcmsuIEVtaXR0ZWQgYSBjYWxsIHRvIGdjKCkgYmV0d2VlbiBzYW1w
bGUgbWVhc3VyZW1lbnRzLgpVc2VkIDEgYmVuY2htYXJrIGl0ZXJhdGlvbiBwZXIgVk0gaW52b2Nh
dGlvbiBmb3Igd2FybS11cC4gVXNlZCB0aGUganNjLXNwZWNpZmljIHByZWNpc2VUaW1lKCkgZnVu
Y3Rpb24gdG8gZ2V0IG1pY3Jvc2Vjb25kLWxldmVsCnRpbWluZy4gUmVwb3J0aW5nIGJlbmNobWFy
ayBleGVjdXRpb24gdGltZXMgd2l0aCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMgaW4gbWlsbGlz
ZWNvbmRzLgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBiYXNlICAgICAgICAgICAgICAgICAgICAgIG5ldyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKU3VuU3BpZGVyOgogICAzZC1jdWJlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjIwMDcrLTAuMjk0NCAgICAgICAgICAg
IDUuMTAxNCstMC4yMzY0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE5NXggZmFzdGVyCiAgIDNkLW1v
cnBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMjAyNCstMS4x
MDU5ICAgICAgICAgICAgNS42NTIzKy0wLjA2ODIgICAgICAgICAgbWlnaHQgYmUgMS4wOTczeCBm
YXN0ZXIKICAgM2QtcmF5dHJhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNS4wNDc3Ky0wLjE1MDkgICAgICAgICAgICA0Ljk4MzgrLTAuMTY0MSAgICAgICAgICBtaWdo
dCBiZSAxLjAxMjh4IGZhc3RlcgogICBhY2Nlc3MtYmluYXJ5LXRyZWVzICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyLjA4MjIrLTAuMDI3NyAgICAgICAgICAgIDIuMDY1NistMC4wNjU1
ICAgICAgICAKICAgYWNjZXNzLWZhbm5rdWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNy4wNzkxKy0wLjMwODUgICAgID8gICAgICA3LjMyNDkrLTAuNDA5NCAgICAgICAgPyBt
aWdodCBiZSAxLjAzNDd4IHNsb3dlcgogICBhY2Nlc3MtbmJvZHkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyLjg4NTcrLTAuMjU1NSAgICAgICAgICAgIDIuODIyOCstMC4w
OTE4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIyM3ggZmFzdGVyCiAgIGFjY2Vzcy1uc2lldmUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMjI2MCstMC4wODY1ICAgICA/ICAg
ICAgMy4yOTUyKy0wLjE0MDkgICAgICAgID8gbWlnaHQgYmUgMS4wMjE1eCBzbG93ZXIKICAgYml0
b3BzLTNiaXQtYml0cy1pbi1ieXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4yNzI1Ky0w
LjAxNzUgICAgICAgICAgICAxLjI3MDkrLTAuMDUwNSAgICAgICAgCiAgIGJpdG9wcy1iaXRzLWlu
LWJ5dGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuOTMxMSstMC4wNTMyICAgICAg
ICAgICAgMi44OTY5Ky0wLjAzNDIgICAgICAgICAgbWlnaHQgYmUgMS4wMTE4eCBmYXN0ZXIKICAg
Yml0b3BzLWJpdHdpc2UtYW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4zNTI1
Ky0wLjA0OTcgICAgICAgICAgICAyLjMyNjIrLTAuMDIxOCAgICAgICAgICBtaWdodCBiZSAxLjAx
MTN4IGZhc3RlcgogICBiaXRvcHMtbnNpZXZlLWJpdHMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzLjY0MzQrLTAuMDg4OSAgICAgPyAgICAgIDMuNzU1MistMC4xODAyICAgICAgICA/
IG1pZ2h0IGJlIDEuMDMwN3ggc2xvd2VyCiAgIGNvbnRyb2xmbG93LXJlY3Vyc2l2ZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIuMjkzMCstMC4wNzgxICAgICAgICAgICAgMi4yNzI3Ky0w
LjAyODQgICAgICAgIAogICBjcnlwdG8tYWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0LjcwNzErLTAuMTE2NCAgICAgPyAgICAgIDQuODE4MistMC4xMzAwICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDIzNnggc2xvd2VyCiAgIGNyeXB0by1tZDUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIuNjk4NCstMC4xMDgzICAgICAgICAgICAgMi42NTY4
Ky0wLjAxODYgICAgICAgICAgbWlnaHQgYmUgMS4wMTU3eCBmYXN0ZXIKICAgY3J5cHRvLXNoYTEg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi45MjA5Ky0wLjA5MzQgICAg
ICAgICAgICAyLjg2MTkrLTAuMDQzNSAgICAgICAgICBtaWdodCBiZSAxLjAyMDZ4IGZhc3Rlcgog
ICBkYXRlLWZvcm1hdC10b2Z0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjEx
MjgrLTAuNDA3NyAgICAgICAgICAgIDguMDQ5OSstMC40NTM5ICAgICAgICAKICAgZGF0ZS1mb3Jt
YXQteHBhcmIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS45NjIyKy0wLjEzNjYg
ICAgICAgICAgICA1Ljg1MDUrLTAuMjA4MyAgICAgICAgICBtaWdodCBiZSAxLjAxOTF4IGZhc3Rl
cgogICBtYXRoLWNvcmRpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAz
LjIyMTYrLTAuMDcwNyAgICAgPyAgICAgIDMuMzUzNistMC40NTI2ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDQxMHggc2xvd2VyCiAgIG1hdGgtcGFydGlhbC1zdW1zICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQuNDc5OCstMC4xMDg4ICAgICA/ICAgICAgNC42NDk3Ky0wLjQwMTEgICAg
ICAgID8gbWlnaHQgYmUgMS4wMzc5eCBzbG93ZXIKICAgbWF0aC1zcGVjdHJhbC1ub3JtICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4xNTI4Ky0wLjA2MjYgICAgICAgICAgICAyLjA4
OTQrLTAuMDUwMyAgICAgICAgICBtaWdodCBiZSAxLjAzMDN4IGZhc3RlcgogICByZWdleHAtZG5h
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjI2MjYrLTAuNDc3OCAg
ICAgICAgICAgIDcuMjE4MystMC41MzAyICAgICAgICAKICAgc3RyaW5nLWJhc2U2NCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC45OTMyKy0wLjY5MTMgICAgICAgICAgICA0
LjYzNjIrLTAuMTUwMSAgICAgICAgICBtaWdodCBiZSAxLjA3NzB4IGZhc3RlcgogICBzdHJpbmct
ZmFzdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjU0ODUrLTAuMjc0
NSAgICAgPyAgICAgIDYuNjQwMistMC4zMzk2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE0MHggc2xv
d2VyCiAgIHN0cmluZy10YWdjbG91ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDkuMDg2MistMC4zNTAyICAgICA/ICAgICAgOS4xMDAzKy0wLjU4MjIgICAgICAgID8KICAgc3Ry
aW5nLXVucGFjay1jb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS44MzM2Ky0w
LjY5MjAgICAgIF4gICAgIDE4LjY5MjQrLTAuMzA3MCAgICAgICAgXiBkZWZpbml0ZWx5IDEuMDYx
MXggZmFzdGVyCiAgIHN0cmluZy12YWxpZGF0ZS1pbnB1dCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDUuMTAwMistMC4xMjE5ICAgICAgICAgICAgNS4wMDAzKy0wLjIyOTQgICAgICAgICAg
bWlnaHQgYmUgMS4wMjAweCBmYXN0ZXIKCiAgIDxhcml0aG1ldGljPiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDUuMDQ5OSstMC4wNjI0ICAgICAgICAgICAgNC45NzY0Ky0w
LjA1ODQgICAgICAgICAgbWlnaHQgYmUgMS4wMTQ4eCBmYXN0ZXIKCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAgICAgICAgICAg
ICAgICAgICAgICBuZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkxv
bmdTcGlkZXI6CiAgIDNkLWN1YmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA3ODYuNDI2MCstNC44NjEyICAgICAgICAgIDc4My40NTY1Ky01LjMwODEgICAgICAgIAog
ICAzZC1tb3JwaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjE1LjIw
NDMrLTMuMTAzMSAgICAgPyAgICA2MTYuMDk2NistNi4yNTM4ICAgICAgICA/CiAgIDNkLXJheXRy
YWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0OTIuMTgwOSstMy4yMDE3
ICAgICA/ICAgIDUwOS4wMzc3Ky0zMS4zMTMyICAgICAgID8gbWlnaHQgYmUgMS4wMzQyeCBzbG93
ZXIKICAgYWNjZXNzLWJpbmFyeS10cmVlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg2
Ni44MzkzKy04LjIyNzAgICAgID8gICAgODcyLjExMDArLTQuOTk1NSAgICAgICAgPwogICBhY2Nl
c3MtZmFubmt1Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjk0Ljg3MTkrLTE0
Ljg3MDkgICAgICAgICAyODkuNzAyMistMTcuNzA2NyAgICAgICAgIG1pZ2h0IGJlIDEuMDE3OHgg
ZmFzdGVyCiAgIGFjY2Vzcy1uYm9keSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA1NDEuMjI5NCstMy4yNjM1ICAgICA/ICAgIDU0MS40NDQ0Ky00LjAwMTAgICAgICAgID8KICAg
YWNjZXNzLW5zaWV2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwMC4xMjgw
Ky05LjgxNzQgICAgID8gICAgMzAwLjIzMTErLTYuNzUzNSAgICAgICAgPwogICBiaXRvcHMtM2Jp
dC1iaXRzLWluLWJ5dGUgICAgICAgICAgICAgICAgICAgICAgICAgIDM0Ljg5MjUrLTIuMjM1NSAg
ICAgPyAgICAgMzUuNjEwNystMi45MjU4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIwNnggc2xvd2Vy
CiAgIGJpdG9wcy1iaXRzLWluLWJ5dGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTIu
MDQ5MSstMy45NjY3ICAgICA/ICAgICA5Mi45MTg5Ky00LjE5OTggICAgICAgID8KICAgYml0b3Bz
LW5zaWV2ZS1iaXRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM5Mi4yNzkwKy01Ljc5
NTAgICAgICAgICAgMzkxLjkwMjUrLTkuOTcwNiAgICAgICAgCiAgIGNvbnRyb2xmbG93LXJlY3Vy
c2l2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NzEuNjM5NystNC4xNTA4ICAgICA/ICAg
IDQ4OC4wNzE4Ky0yOS43NzcwICAgICAgID8gbWlnaHQgYmUgMS4wMzQ4eCBzbG93ZXIKICAgY3J5
cHRvLWFlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU4MS43ODk5Ky01
LjA5MDYgICAgID8gICAgNTgxLjgxNjcrLTQuMjgwMSAgICAgICAgPwogICBjcnlwdG8tbWQ1ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTUwLjk5NTcrLTUuOTQxMCAgICAg
ICAgICA1NDUuMzIwMistNC4zMTYwICAgICAgICAgIG1pZ2h0IGJlIDEuMDEwNHggZmFzdGVyCiAg
IGNyeXB0by1zaGExICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NjIuNTQ2
NCstMy4yOTE0ICAgICAgICAgIDY1OC44MjUxKy04LjUyOTIgICAgICAgIAogICBkYXRlLWZvcm1h
dC10b2Z0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzY0Ljg0NjUrLTExLjQzOTkg
ICAgICAgICAzNjAuNjUzNystNC45NjA4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDExNnggZmFzdGVy
CiAgIGRhdGUtZm9ybWF0LXhwYXJiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3OTgu
NDYyNSstNC45MjE4ICAgICA/ICAgIDgyMy43OTgzKy00OC4yOTQ2ICAgICAgID8gbWlnaHQgYmUg
MS4wMzE3eCBzbG93ZXIKICAgaGFzaC1tYXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDE1My4zODA4Ky0yLjQ2MTEgICAgID8gICAgMTU0LjQxNzUrLTEuODk4MSAgICAg
ICAgPwogICBtYXRoLWNvcmRpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NDQ0Ljc2MTcrLTUuNzc3NSAgICAgPyAgICA0NTEuMTk5NSstMjIuNDcyNyAgICAgICA/IG1pZ2h0
IGJlIDEuMDE0NXggc2xvd2VyCiAgIG1hdGgtcGFydGlhbC1zdW1zICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyOTUuODg1OCstMTAuODE0MiAgICAgICAgIDI5My43NjE1Ky00LjgzODcg
ICAgICAgIAogICBtYXRoLXNwZWN0cmFsLW5vcm0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNTYzLjEyMDArLTMuOTY4MSAgICAgPyAgICA1NjkuODgzNSstNS45NjMzICAgICAgICA/IG1p
Z2h0IGJlIDEuMDEyMHggc2xvd2VyCiAgIHN0cmluZy1iYXNlNjQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAzNDcuMTA3NSstMTQuMTM1NSAgICA/ICAgIDM1OS4zNTY2Ky0xNC4w
MTM1ICAgICAgID8gbWlnaHQgYmUgMS4wMzUzeCBzbG93ZXIKICAgc3RyaW5nLWZhc3RhICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM0OS41NzMzKy02LjQ2MzMgICAgICAgICAg
MzQ4Ljk2NzErLTguMjI4OCAgICAgICAgCiAgIHN0cmluZy10YWdjbG91ZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxNzAuMTEyMistMi42NjM0ICAgICA/ICAgIDE3MS43NTQxKy01
LjA4OTggICAgICAgID8KCiAgIDxnZW9tZXRyaWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAzNjQuNzk4NistMy4xMDE4ICAgICA/ICAgIDM2Ny4xMjk5Ky0zLjI0NTcgICAg
ICAgID8gbWlnaHQgYmUgMS4wMDY0eCBzbG93ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAgICAgICAgICAgICAgICAgICAg
ICBuZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgClY4U3BpZGVyOgog
ICBjcnlwdG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM3Ljgw
MzArLTIuMzc5MiAgICAgICAgICAgMzcuMDQzMystMC40MjE1ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDIwNXggZmFzdGVyCiAgIGRlbHRhYmx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNTguMjcxNistOC4yMTU4ICAgICAgICAgICA1Ni44OTUyKy0yLjA0MTcgICAgICAg
ICAgbWlnaHQgYmUgMS4wMjQyeCBmYXN0ZXIKICAgZWFybGV5LWJveWVyICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAzMy45MTIyKy0wLjM0NzcgICAgID8gICAgIDM0LjA1NTcr
LTAuNTIyOSAgICAgICAgPwogICByYXl0cmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIwLjc0NTgrLTAuNzQ3MCAgICAgICAgICAgMjAuMTg1MistMC41OTc0ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDI3OHggZmFzdGVyCiAgIHJlZ2V4cCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNTQuOTgwNystMC41MTYwICAgICAgICAgICA1NC44
MTM1Ky0wLjI3ODEgICAgICAgIAogICByaWNoYXJkcyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDQ2LjA0OTYrLTIuMzc2OCAgICAgPyAgICAgNDYuOTkzNystMS4zODY0
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIwNXggc2xvd2VyCiAgIHNwbGF5ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAuOTk5NCstMC45Mjg5ICAgICAgICAgICAz
MC42MzMyKy0wLjUyNjQgICAgICAgICAgbWlnaHQgYmUgMS4wMTIweCBmYXN0ZXIKCiAgIDxnZW9t
ZXRyaWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzguMjU5NSstMC44
NDkwICAgICAgICAgICAzNy45ODUzKy0wLjM4MDQgICAgICAgICAgbWlnaHQgYmUgMS4wMDcyeCBm
YXN0ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYmFzZSAgICAgICAgICAgICAgICAgICAgICBuZXcgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCk9jdGFuZToKICAgZW5jcnlwdCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLjE1NTMwKy0wLjAwMDg3ICAgID8gICAgIDAuMTU4
NTErLTAuMDAzMDQgICAgICAgPyBtaWdodCBiZSAxLjAyMDd4IHNsb3dlcgogICBkZWNyeXB0ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNjg0NTMrLTAuMDE5MTgg
ICAgPyAgICAgMi42ODkzNystMC4wMTQ2NyAgICAgICA/CiAgIGRlbHRhYmx1ZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAgMC4xMjk5NCstMC4wMDE3NiAgICA/ICAgICAw
LjEzMTAzKy0wLjAwMjM3ICAgICAgID8KICAgZWFybGV5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLjI5ODE0Ky0wLjAxOTI3ICAgICAgICAgIDAuMjg0NTErLTAu
MDAwOTAgICAgICAgICBtaWdodCBiZSAxLjA0Nzl4IGZhc3RlcgogICBib3llciAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMDA0NDArLTAuNDkwODIgICAgICAg
ICAgNC44NTE3MistMC4wMzcwNiAgICAgICAgIG1pZ2h0IGJlIDEuMDMxNXggZmFzdGVyCiAgIG5h
dmllci1zdG9rZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAgNS4wNTgzOCst
MC4wNjA5MSAgICAgICAgICA1LjAxMzYzKy0wLjAyMzU1ICAgICAgIAogICByYXl0cmFjZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgIDAuNzc3MDYrLTAuMDA2MzUgICAg
PyAgICAgMC43Nzc4NystMC4wMDkyMyAgICAgICA/CiAgIHJpY2hhcmRzICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeDIgICAgICAgMC4wOTg0MCstMC4wMDA5MSAgICA/ICAgICAwLjA5
OTM4Ky0wLjAwMjE0ICAgICAgID8KICAgc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB4MiAgICAgICAwLjMxMzc5Ky0wLjAwMjUyICAgID8gICAgIDAuMzE0MzkrLTAuMDAx
ODkgICAgICAgPwogICByZWdleHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgy
ICAgICAgMTYuNTUyNjMrLTAuMzAxNTggICAgICAgICAxNi4yODEzMistMC4wMzgzNCAgICAgICAg
IG1pZ2h0IGJlIDEuMDE2N3ggZmFzdGVyCiAgIHBkZmpzICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeDIgICAgICAzNy45OTI3OCstMC4yNDI4OSAgICA/ICAgIDQwLjg2MzI5Ky00
LjUwMjc4ICAgICAgID8gbWlnaHQgYmUgMS4wNzU2eCBzbG93ZXIKICAgbWFuZHJlZWwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgIDQ0LjY1ODEwKy0wLjIzMTU2ICAgICAg
ICAgNDQuNTE0NjQrLTAuMjIxMjcgICAgICAgCiAgIGdiZW11ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeDIgICAgICAzNC4xOTA4NSstMC4zNDE1NyAgICA/ICAgIDM0LjQ4Mjg5
Ky0wLjIyNzU1ICAgICAgID8KICAgY2xvc3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLjQ4OTk4Ky0wLjAwMjc2ICAgICAgICAgIDAuNDg5ODgrLTAuMDAzMjcg
ICAgICAgCiAgIGpxdWVyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNi43NTI5MistMC4wNDM3MiAgICAgICAgICA2Ljc0OTM5Ky0wLjAzODg2ICAgICAgIAogICBi
b3gyZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgIDguNzc5NzUr
LTAuMDg3MjUgICAgPyAgICAgOC44NTc0OSstMC4wOTQwNiAgICAgICA/CiAgIHpsaWIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgIDMyMy41MTk0MistMTkuMzcxMjUg
ICAgICAgMzEyLjE4MjAzKy0xLjIwNDUzICAgICAgICAgbWlnaHQgYmUgMS4wMzYzeCBmYXN0ZXIK
ICAgdHlwZXNjcmlwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgNjI0LjY4
MTYxKy03LjU0Mjg0ICAgICEgICA2NDAuMzgwMjIrLTcuOTg4NjkgICAgICAgISBkZWZpbml0ZWx5
IDEuMDI1MXggc2xvd2VyCgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUuMDc2MjkrLTAuMDI4NjEgICAgPyAgICAgNS4wOTA5MSstMC4wMjg0OSAg
ICAgICA/IG1pZ2h0IGJlIDEuMDAyOXggc2xvd2VyCgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAg
ICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApLcmFrZW46CiAg
IGFpLWFzdGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk4LjY0
MystOC40MTQgICAgICAgICAgICAgOTcuMzQ5Ky0zLjgxOCAgICAgICAgICAgbWlnaHQgYmUgMS4w
MTMzeCBmYXN0ZXIKICAgYXVkaW8tYmVhdC1kZXRlY3Rpb24gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNDEuODU5Ky0wLjc1NiAgICAgID8gICAgICA0MS44ODcrLTAuNjA0ICAgICAgICAg
PwogICBhdWRpby1kZnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5
OC4wOTMrLTEuMjgyICAgICAgPyAgICAgIDk5LjI3MistMi42NDAgICAgICAgICA/IG1pZ2h0IGJl
IDEuMDEyMHggc2xvd2VyCiAgIGF1ZGlvLWZmdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDMwLjQzMistMC4wNzQgICAgICA/ICAgICAgMzEuMDQyKy0xLjExMCAgICAg
ICAgID8gbWlnaHQgYmUgMS4wMjAxeCBzbG93ZXIKICAgYXVkaW8tb3NjaWxsYXRvciAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNDYuNDA5Ky0wLjI5NyAgICAgID8gICAgICA0Ni42
NjArLTEuMDA4ICAgICAgICAgPwogICBpbWFnaW5nLWRhcmtyb29tICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA2Mi4yNDUrLTEuMTc4ICAgICAgICAgICAgIDYxLjgzNCstMS4wNTkg
ICAgICAgICAKICAgaW1hZ2luZy1kZXNhdHVyYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNDQuMTMxKy0wLjM1NyAgICAgID8gICAgICA0NC4zNDgrLTAuNDkwICAgICAgICAgPwog
ICBpbWFnaW5nLWdhdXNzaWFuLWJsdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3MS45
NzYrLTUuNzUyICAgICAgPyAgICAgIDcyLjUxNistMy43MjYgICAgICAgICA/CiAgIGpzb24tcGFy
c2UtZmluYW5jaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM0LjIxNistMS42MTcg
ICAgICAgICAgICAgMzMuNzUwKy0xLjU5MiAgICAgICAgICAgbWlnaHQgYmUgMS4wMTM4eCBmYXN0
ZXIKICAganNvbi1zdHJpbmdpZnktdGluZGVyYm94ICAgICAgICAgICAgICAgICAgICAgICAgICAg
MjAuNjM1Ky0wLjI3MiAgICAgID8gICAgICAyMS4wODYrLTAuNDcyICAgICAgICAgPyBtaWdodCBi
ZSAxLjAyMTl4IHNsb3dlcgogICBzdGFuZm9yZC1jcnlwdG8tYWVzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAzOS4yODcrLTAuNzYyICAgICAgPyAgICAgIDM5LjY3MistMC43MDcgICAg
ICAgICA/CiAgIHN0YW5mb3JkLWNyeXB0by1jY20gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDQwLjUxNistNC4yOTUgICAgICAgICAgICAgMzguMTc2Ky0zLjM0NCAgICAgICAgICAgbWln
aHQgYmUgMS4wNjEzeCBmYXN0ZXIKICAgc3RhbmZvcmQtY3J5cHRvLXBia2RmMiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNjMuNjA3Ky0xLjUyMCAgICAgID8gICAgICA2My42NjgrLTAuNzk5
ICAgICAgICAgPwogICBzdGFuZm9yZC1jcnlwdG8tc2hhMjU2LWl0ZXJhdGl2ZSAgICAgICAgICAg
ICAgICAgICAyMC45NTQrLTEuODI0ICAgICAgICAgICAgIDE5Ljk2OCstMC4xODIgICAgICAgICAg
IG1pZ2h0IGJlIDEuMDQ5NHggZmFzdGVyCgogICA8YXJpdGhtZXRpYz4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1MC45MjkrLTAuODY1ICAgICAgICAgICAgIDUwLjgwMist
MC41NjUgICAgICAgICAgIG1pZ2h0IGJlIDEuMDAyNXggZmFzdGVyCgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAg
ICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApN
aWNyb2JlbmNobWFya3M6CiAgIGFiYy1mb3J3YXJkLWxvb3AtZXF1YWwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMjUuNDYzMSstMi4wMjkxICAgICAgICAgICAyNC4xMjU1Ky0wLjA4OTQgICAg
ICAgICAgbWlnaHQgYmUgMS4wNTU0eCBmYXN0ZXIKICAgYWJjLXBvc3RmaXgtYmFja3dhcmQtbG9v
cCAgICAgICAgICAgICAgICAgICAgICAgICAzMC44MTY5Ky0wLjk3NDMgICAgID8gICAgIDMxLjAz
ODYrLTEuNzM4MCAgICAgICAgPwogICBhYmMtc2ltcGxlLWJhY2t3YXJkLWxvb3AgICAgICAgICAg
ICAgICAgICAgICAgICAgIDI0LjgwNDQrLTEuMzA1OCAgICAgICAgICAgMjQuNTExNCstMC42NDc5
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyMHggZmFzdGVyCiAgIGFiYy1zaW1wbGUtZm9yd2FyZC1s
b29wICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQuODg5OCstMS4yNDA4ICAgICAgICAgICAy
NC43MjI0Ky0xLjI1OTkgICAgICAgIAogICBhYmMtc2tpcHB5LWxvb3AgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIyLjI0NjgrLTEuMzgwMSAgICAgICAgICAgMjEuMjEzNistMC4y
NzY1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ4N3ggZmFzdGVyCiAgIGFicy1ib29sZWFuICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNjUwOSstMC4wOTQwICAgICAgICAg
ICAgMi41ODk2Ky0wLjAzMzEgICAgICAgICAgbWlnaHQgYmUgMS4wMjM3eCBmYXN0ZXIKICAgYWRh
cHQtdG8tZG91YmxlLWRpdmlkZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNS42NTg3Ky0w
LjY4MjYgICAgICAgICAgIDE1LjIyNTYrLTAuNDYwMyAgICAgICAgICBtaWdodCBiZSAxLjAyODR4
IGZhc3RlcgogICBhbGlhc2VkLWFyZ3VtZW50cy1nZXRieXZhbCAgICAgICAgICAgICAgICAgICAg
ICAgICAxLjA5MDcrLTAuMDQxNyAgICAgPyAgICAgIDEuMTI0OCstMC4wNDA3ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDMxMnggc2xvd2VyCiAgIGFsbG9jYXRlLWJpZy1vYmplY3QgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIuNTcxMistMC4wODE4ICAgICA/ICAgICAgMi42NTQ4Ky0wLjE2
MzMgICAgICAgID8gbWlnaHQgYmUgMS4wMzI1eCBzbG93ZXIKICAgYXBwbHktbm90LWFwcGx5ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC45OTgyKy0wLjI5NzYgICAgICAgICAg
ICA0Ljk4OTkrLTAuMjEwNiAgICAgICAgCiAgIGFyZ3VtZW50cy1uYW1lZC1hbmQtcmVmbGVjdGl2
ZSAgICAgICAgICAgICAgICAgICAgIDYuODUxNystMC4xOTg0ICAgICA/ICAgICAgNy4wNjU5Ky0w
LjI0MDAgICAgICAgID8gbWlnaHQgYmUgMS4wMzEyeCBzbG93ZXIKICAgYXJndW1lbnRzLW91dC1v
Zi1ib3VuZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC4zMDA4Ky0wLjE4NzQgICAgID8g
ICAgIDEwLjYzOTkrLTAuNDEyNSAgICAgICAgPyBtaWdodCBiZSAxLjAzMjl4IHNsb3dlcgogICBh
cmd1bWVudHMtc3RyaWN0LW1vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM4LjQxNzgr
LTEuMjg3OSAgICAgPyAgICAgNDAuOTU0NSstNC43MDYxICAgICAgICA/IG1pZ2h0IGJlIDEuMDY2
MHggc2xvd2VyCiAgIGFyZ3VtZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDUuODgxMystMC4xODg4ICAgICA/ICAgICAgNS44OTYwKy0wLjA4OTIgICAgICAgID8K
ICAgYXJpdHktbWlzbWF0Y2gtaW5saW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4w
Mzc4Ky0wLjAxNzUgICAgID8gICAgICAxLjEzMjArLTAuMTcwOCAgICAgICAgPyBtaWdodCBiZSAx
LjA5MDh4IHNsb3dlcgogICBhcnJheS1hY2Nlc3MtcG9seW1vcnBoaWMtc3RydWN0dXJlICAgICAg
ICAgICAgICAgICA0LjY3MzkrLTAuNjA2NyAgICAgICAgICAgIDQuNjUxNCstMC40MjQ1ICAgICAg
ICAKICAgYXJyYXktbm9uYXJyYXktcG9seW1vcmhwaWMtYWNjZXNzICAgICAgICAgICAgICAgICAy
My4xNjgxKy0yLjA4NjEgICAgID8gICAgIDI0LjU4OTUrLTEuNDYwNCAgICAgICAgPyBtaWdodCBi
ZSAxLjA2MTR4IHNsb3dlcgogICBhcnJheS1wcm90b3R5cGUtZXZlcnkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDM2LjE4NTErLTAuMjQ2OSAgICAgICAgICAgMzUuODQ4NCstMC4yMDAzICAg
ICAgICAKICAgYXJyYXktcHJvdG90eXBlLWZvckVhY2ggICAgICAgICAgICAgICAgICAgICAgICAg
ICAzMS43NzY3Ky0xLjc4NTAgICAgICAgICAgIDMxLjA2MDcrLTAuMjc0NiAgICAgICAgICBtaWdo
dCBiZSAxLjAyMzF4IGZhc3RlcgogICBhcnJheS1wcm90b3R5cGUtbWFwICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDMzLjgwMzcrLTAuNTA2OCAgICAgPyAgICAgMzMuOTExMystMC44NjUz
ICAgICAgICA/CiAgIGFycmF5LXByb3RvdHlwZS1yZWR1Y2UgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMzMuMjQ0MistMS4zNzYzICAgICAgICAgICAzMy4wMTc0Ky0wLjc2MTMgICAgICAgIAog
ICBhcnJheS1wcm90b3R5cGUtcmVkdWNlUmlnaHQgICAgICAgICAgICAgICAgICAgICAgIDMzLjgw
OTMrLTMuODgwNCAgICAgICAgICAgMzEuOTkzNistMS41MTA1ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDU2OHggZmFzdGVyCiAgIGFycmF5LXByb3RvdHlwZS1zb21lICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMzUuODg1NSstMC4zMDIzICAgICAgICAgICAzNS43NzQzKy0wLjMyMjcgICAgICAg
IAogICBhcnJheS1zcGxpY2UtY29udGlndW91cyAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5
LjU3NTMrLTAuMzA0MCAgICAgPyAgICAgMzAuNDQ4MistMS4xOTE1ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDI5NXggc2xvd2VyCiAgIGFycmF5LXdpdGgtZG91YmxlLWFkZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDMuOTU2NSstMC4yNjQ4ICAgICAgICAgICAgMy44Mzc4Ky0wLjA0ODUgICAg
ICAgICAgbWlnaHQgYmUgMS4wMzA5eCBmYXN0ZXIKICAgYXJyYXktd2l0aC1kb3VibGUtaW5jcmVt
ZW50ICAgICAgICAgICAgICAgICAgICAgICAgMy4zNDQwKy0wLjUxMDAgICAgICAgICAgICAzLjI3
MjkrLTAuMTczNiAgICAgICAgICBtaWdodCBiZSAxLjAyMTd4IGZhc3RlcgogICBhcnJheS13aXRo
LWRvdWJsZS1tdWwtYWRkICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljc3NDMrLTAuMzQ3NCAg
ICAgICAgICAgIDQuNzM0OCstMC4yMTY5ICAgICAgICAKICAgYXJyYXktd2l0aC1kb3VibGUtc3Vt
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi45ODgyKy0wLjA1NzQgICAgICAgICAgICAy
Ljk2OTkrLTAuMDg1NSAgICAgICAgCiAgIGFycmF5LXdpdGgtaW50MzItYWRkLXN1YiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDUuNTY1MCstMC4wNDY2ICAgICAgICAgICAgNS40OTM3Ky0wLjEx
NzEgICAgICAgICAgbWlnaHQgYmUgMS4wMTMweCBmYXN0ZXIKICAgYXJyYXktd2l0aC1pbnQzMi1v
ci1kb3VibGUtc3VtICAgICAgICAgICAgICAgICAgICAgMy4xMDA3Ky0wLjAzODkgICAgID8gICAg
ICAzLjEwNTMrLTAuMDE2MyAgICAgICAgPwogICBBcnJheUJ1ZmZlci1EYXRhVmlldy1hbGxvYy1s
YXJnZS1sb25nLWxpdmVkICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNDguODY4OSstMC41Mzg0ICAgICA/ICAgICA0OS41OTUwKy0wLjUxNjEg
ICAgICAgID8gbWlnaHQgYmUgMS4wMTQ5eCBzbG93ZXIKICAgQXJyYXlCdWZmZXItRGF0YVZpZXct
YWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAgICAxNy44MTA5Ky0wLjM2MjYgICAgID8gICAgIDE4
LjE3NTkrLTAuNjc0MyAgICAgICAgPyBtaWdodCBiZSAxLjAyMDV4IHNsb3dlcgogICBBcnJheUJ1
ZmZlci1JbnQzMkFycmF5LWJ5dGVPZmZzZXQgICAgICAgICAgICAgICAgICAzLjc2NjcrLTAuMDg0
MSAgICAgICAgICAgIDMuNjc3MistMC4wNTM4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI0M3ggZmFz
dGVyCiAgIEFycmF5QnVmZmVyLUludDhBcnJheS1hbGxvYy1sYXJnZS1sb25nLWxpdmVkICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDguMTM3
NistMC41NjEwICAgICAgICAgICA0Ny40NjU1Ky0wLjUxMzQgICAgICAgICAgbWlnaHQgYmUgMS4w
MTQyeCBmYXN0ZXIKICAgQXJyYXlCdWZmZXItSW50OEFycmF5LWFsbG9jLWxvbmctbGl2ZWQtYnVm
ZmVyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMjQuMTQ0NystMC41NDQ4ICAgICAgICAgICAyMy44MTM0Ky0wLjM5NTggICAgICAgICAgbWln
aHQgYmUgMS4wMTM5eCBmYXN0ZXIKICAgQXJyYXlCdWZmZXItSW50OEFycmF5LWFsbG9jLWxvbmct
bGl2ZWQgICAgICAgICAgICAxNy4xMzczKy0wLjU4MDMgICAgID8gICAgIDE3LjU3ODMrLTEuMzM1
NyAgICAgICAgPyBtaWdodCBiZSAxLjAyNTd4IHNsb3dlcgogICBBcnJheUJ1ZmZlci1JbnQ4QXJy
YXktYWxsb2MgICAgICAgICAgICAgICAgICAgICAgIDE2Ljk2NzMrLTMuNDM0OCAgICAgICAgICAg
MTUuOTQ5OCstMC45NDY2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDYzOHggZmFzdGVyCiAgIGFycm93
ZnVuY2l0b24tZGlyZWN0LWFyZ3VtZW50cyAgICAgICAgICAgICAgICAgICAgIDEuMDgwMistMC4w
MTgyICAgICA/ICAgICAgMS4wOTgxKy0wLjAyNzggICAgICAgID8gbWlnaHQgYmUgMS4wMTY2eCBz
bG93ZXIKICAgYXJyb3dmdW5jaXRvbi1yZWZlcmVuY2UtYXJndW1lbnRzICAgICAgICAgICAgICAg
ICAgMC43Mzc5Ky0wLjAxMTUgICAgICAgICAgICAwLjczNTErLTAuMDEyNCAgICAgICAgCiAgIGFy
cm93ZnVuY3Rpb24tY2FsbC1pbi1jbGFzcy1jb25zdHJ1Y3RvciAgICAgICAgICAgMjAuODY1Nyst
MC4yOTg3ICAgICAgICAgICAyMC42ODIyKy0wLjQxMzIgICAgICAgIAogICBhcnJvd2Z1bmN0aW9u
LWNhbGwtaW4tY2xhc3MtbWV0aG9kICAgICAgICAgICAgICAgIDEwLjkyNTErLTEuNDc4NSAgICAg
ICAgICAgIDkuOTgzMCstMC41MzA2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDk0NHggZmFzdGVyCiAg
IGFycm93ZnVuY3Rpb24tY2FsbC1pbi1mdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgMTAuNjI1
MSstMC4yNDYyICAgICA/ICAgICAxMC44MzA0Ky0wLjQ4MzIgICAgICAgID8gbWlnaHQgYmUgMS4w
MTkzeCBzbG93ZXIKICAgYXJyb3dmdW5jdGlvbi1jYWxsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOC44OTI4Ky0wLjI4NDggICAgICAgICAgICA4LjQyMjArLTAuNDExNiAgICAgICAg
ICBtaWdodCBiZSAxLjA1NTl4IGZhc3RlcgogICBhc21qc19ib29sX2J1ZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA2LjE1OTUrLTAuMjMxOSAgICAgPyAgICAgIDYuMTYwMCst
MC4xMjc3ICAgICAgICA/CiAgIGFzc2lnbi1jdXN0b20tc2V0dGVyLXBvbHltb3JwaGljICAgICAg
ICAgICAgICAgICAgIDMuOTg2NCstMC4yNDk4ICAgICA/ICAgICAgNC4wMTUwKy0wLjIwNTEgICAg
ICAgID8KICAgYXNzaWduLWN1c3RvbS1zZXR0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNi40MDAwKy0wLjA5NjUgICAgID8gICAgICA2LjcwMTkrLTAuMzkxMCAgICAgICAgPyBtaWdo
dCBiZSAxLjA0NzJ4IHNsb3dlcgogICBiYXNpYy1zZXQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA4LjIwMDYrLTAuNjg2MiAgICAgICAgICAgIDcuOTQxNCstMC41OTE2
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDMyNnggZmFzdGVyCiAgIGJpZy1pbnQtbXVsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNDIyNystMC4wNjM3ICAgICA/ICAgICAg
My40NjI1Ky0wLjA5OTAgICAgICAgID8gbWlnaHQgYmUgMS4wMTE2eCBzbG93ZXIKICAgYmlnc3dp
dGNoLWluZGlyZWN0LXN5bWJvbC1vci11bmRlZmluZWQgICAgICAgICAgIDMzMy44NDkwKy0yLjkx
NzggICAgICAgICAgMzA5LjU1ODArLTYwLjQzNTQgICAgICAgICBtaWdodCBiZSAxLjA3ODV4IGZh
c3RlcgogICBiaWdzd2l0Y2gtaW5kaXJlY3Qtc3ltYm9sICAgICAgICAgICAgICAgICAgICAgICAg
IDcyLjgyMjgrLTEuNzkyMyAgICAgPyAgICAgNzMuNDQ2NSstMi4wMzAyICAgICAgICA/CiAgIGJp
Z3N3aXRjaC1pbmRpcmVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDMuOTkxNCst
MS45NDU0ICAgICAgICAgICA0Mi42OTgzKy0wLjI5NzcgICAgICAgICAgbWlnaHQgYmUgMS4wMzAz
eCBmYXN0ZXIKICAgYmlnc3dpdGNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyMy41MDIwKy0wLjM2MjEgICAgICAgICAgIDIzLjA4ODQrLTAuNzI1NCAgICAgICAgICBt
aWdodCBiZSAxLjAxNzl4IGZhc3RlcgogICBib29sZWFuLXRlc3QgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzLjMwOTArLTAuMDI5OCAgICAgPyAgICAgIDMuMzY4NCstMC4x
ODUwICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3OXggc2xvd2VyCiAgIGJvdW5kLWZ1bmN0aW9uLWNh
bGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuMjU1MCstMC4zMDE5ICAgICAgICAg
ICAxMC4wOTgxKy0wLjMyMjYgICAgICAgICAgbWlnaHQgYmUgMS4wMTU1eCBmYXN0ZXIKICAgYm91
bmQtZnVuY3Rpb24tY29uc3RydWN0aW9uLXBlcmZvcm1hbmNlICAgICAgICAgICA3MC45ODI3Ky0w
Ljk0NjAgICAgICAgICAgIDcwLjkyMjcrLTEuNTQ3NSAgICAgICAgCiAgIGJyYW5jaC1mb2xkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMDk5NystMC4wOTYzICAgICA/
ICAgICAgNC4xNDk1Ky0wLjE2ODEgICAgICAgID8gbWlnaHQgYmUgMS4wMTIxeCBzbG93ZXIKICAg
YnJhbmNoLW9uLXN0cmluZy1hcy1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAxMS40NTg2
Ky0wLjcyNjYgICAgID8gICAgIDExLjU4MTIrLTAuOTUxNiAgICAgICAgPyBtaWdodCBiZSAxLjAx
MDd4IHNsb3dlcgogICBidWctMTUzNDMxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzLjMxMTQrLTAuMDc1NSAgICAgPyAgICAgIDMuMzIwNSstMC4wNjU0ICAgICAgICA/
CiAgIGJ1aWxkLWxhcmdlLW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjku
NjAwNistMC4zNTMwICAgICAgICAgICAyOS4yMTU1Ky0wLjIyODkgICAgICAgICAgbWlnaHQgYmUg
MS4wMTMyeCBmYXN0ZXIKICAgYnktdmFsLWdlbmVyaWMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMi41NDUxKy0wLjEzMTcgICAgICAgICAgICAyLjQ5NDgrLTAuMTIwNSAgICAg
ICAgICBtaWdodCBiZSAxLjAyMDF4IGZhc3RlcgogICBjYWxsLW9yLW5vdC1jYWxsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDMwLjk2NzErLTAuMjc2NCAgICAgPyAgICAgMzEuNDM5
MCstMS4yNTA3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE1Mnggc2xvd2VyCiAgIGNhbGwtc3ByZWFk
LWFwcGx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUuMDMyNSstMC43MzgxICAg
ICAgICAgICAyNC43MjQ4Ky0wLjE4MjcgICAgICAgICAgbWlnaHQgYmUgMS4wMTI0eCBmYXN0ZXIK
ICAgY2FsbC1zcHJlYWQtY2FsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNi4w
MzU5Ky0wLjQ5MjggICAgID8gICAgIDI2LjY5NTMrLTMuNDUwMyAgICAgICAgPyBtaWdodCBiZSAx
LjAyNTN4IHNsb3dlcgogICBjYWxsLXVzaW5nLXNwcmVhZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA5LjQ4NzQrLTAuMzM4NyAgICAgICAgICAgIDkuMjg0MCstMC4yNDc2ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDIxOXggZmFzdGVyCiAgIGNhcHR1cmVkLWFzc2lnbm1lbnRzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAuNDY1MSstMC4wMTc2ICAgICAgICAgICAgMC40NjE0
Ky0wLjAxODIgICAgICAgIAogICBjYXN0LWludC10by1kb3VibGUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA1LjA5MTYrLTAuMTE0OSAgICAgPyAgICAgIDUuMjM1MistMC4xNDEwICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDI4Mnggc2xvd2VyCiAgIGNlbGwtYXJndW1lbnQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMDI4NCstMC4xMDkzICAgICA/ICAgICAgMy4w
NTc3Ky0wLjE1NjQgICAgICAgID8KICAgY2ZnLXNpbXBsaWZ5ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMy4wNDcxKy0wLjA0MTMgICAgICAgICAgICAzLjA0MDErLTAuMDE3
NSAgICAgICAgCiAgIGNoYWluLWdldHRlci1hY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTEuNjcwNSstMC40ODM5ICAgICA/ICAgICAxMi4wODcxKy0wLjcyNTEgICAgICAgID8g
bWlnaHQgYmUgMS4wMzU3eCBzbG93ZXIKICAgY21wZXEtb2JqLXRvLW9iai1vdGhlciAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOS4zMzQyKy0wLjM4MDggICAgICAgICAgICA5LjI1MzQrLTAu
MzE2NSAgICAgICAgCiAgIGNvbmNhdC1hcHBlbmQtb25lICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDguNjk5NistMC40ODY5ICAgICAgICAgICAgOC41MDg0Ky0wLjM3MTEgICAgICAg
ICAgbWlnaHQgYmUgMS4wMjI1eCBmYXN0ZXIKICAgY29uc3RhbnQtdGVzdCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNC42ODI1Ky0wLjA3MzIgICAgID8gICAgICA0LjczNTAr
LTAuMTE4MSAgICAgICAgPyBtaWdodCBiZSAxLjAxMTJ4IHNsb3dlcgogICBjcmVhdGUtbG90cy1v
Zi1mdW5jdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICA2Ljc4MjYrLTAuMzI2MyAgICAg
PyAgICAgIDcuMDIyOCstMC40MjM3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM1NHggc2xvd2VyCiAg
IGNzZS1uZXctYXJyYXktYnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNzQ1
MistMC4wOTA1ICAgICAgICAgICAgMi43MTg1Ky0wLjA2NDEgICAgICAgIAogICBjc2UtbmV3LWFy
cmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjgyOTYrLTAuMTk0OCAg
ICAgICAgICAgIDIuNzk3NystMC4wNjQzICAgICAgICAgIG1pZ2h0IGJlIDEuMDExNHggZmFzdGVy
CiAgIGN1c3RvbS1zZXR0ZXItZ2V0dGVyLWFzLXB1dC1nZXQtYnktaWQgICAgICAgICAgICAgIDAu
NjM1NistMC4wMzg5ICAgICAgICAgICAgMC42MDM4Ky0wLjAxNDEgICAgICAgICAgbWlnaHQgYmUg
MS4wNTI3eCBmYXN0ZXIKICAgRGF0YVZpZXctY3VzdG9tLXByb3BlcnRpZXMgICAgICAgICAgICAg
ICAgICAgICAgICA1NC44MzI1Ky0xLjE2MTEgICAgID8gICAgIDU2LjE0MDUrLTEuMTg1NyAgICAg
ICAgPyBtaWdodCBiZSAxLjAyMzl4IHNsb3dlcgogICBkZWxheS10ZWFyLW9mZi1hcmd1bWVudHMt
c3RyaWN0bW9kZSAgICAgICAgICAgICAgICA3LjE2MjQrLTAuMzI3OCAgICAgPyAgICAgIDcuNTU3
NystMS4wMTc2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDU1Mnggc2xvd2VyCiAgIGRlbHRhLWJsdWUt
dHJ5LWNhdGNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTIuMzk1NCstMS4wNjg4ICAg
ICAhICAgICA2My44NjIyKy0xLjg2MTkgICAgICAgICEgZGVmaW5pdGVseSAxLjIxODl4IHNsb3dl
cgogICBkZWx0YWJsdWUtZm9yLW9mICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM0
LjA2ODgrLTEuMjQ1NyAgICAgISAgICAgMzcuMjc0NCstMS40MTIxICAgICAgICAhIGRlZmluaXRl
bHkgMS4wOTQxeCBzbG93ZXIKICAgZGVsdGFibHVlLXZhcmFyZ3MgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxNy41MDExKy0wLjIzNzkgICAgID8gICAgIDE4LjA4NjArLTAuNTE0NCAg
ICAgICAgPyBtaWdodCBiZSAxLjAzMzR4IHNsb3dlcgogICBkZXN0cnVjdHVyaW5nLWFyZ3VtZW50
cyAgICAgICAgICAgICAgICAgICAgICAgICAgIDM1Ljg2OTUrLTAuOTMwMiAgICAgICAgICAgMzUu
NTE3MistMC4zMjQwICAgICAgICAKICAgZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLW92ZXJyaWRk
ZW4tYnktZnVuY3Rpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMC41NjY5Ky0wLjAxNzYgICAgID8gICAgICAwLjU4NzYrLTAuMDI0NiAg
ICAgICAgPyBtaWdodCBiZSAxLjAzNjZ4IHNsb3dlcgogICBkZXN0cnVjdHVyaW5nLXN3YXAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljc5MzUrLTAuMDg5NyAgICAgICAgICAgIDQu
NzYyNystMC4wODkxICAgICAgICAKICAgZGlyZWN0LWFyZ3VtZW50cy1nZXRieXZhbCAgICAgICAg
ICAgICAgICAgICAgICAgICAgMS4xMzM0Ky0wLjA4NzUgICAgICAgICAgICAxLjA5OTYrLTAuMDI4
MSAgICAgICAgICBtaWdodCBiZSAxLjAzMDh4IGZhc3RlcgogICBkaXJlY3QtYXJndW1lbnRzLWxl
bmd0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjUwNDIrLTAuMTU5OCAgICAgPyAgICAg
IDcuNjAwNCstMC4yOTQ0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyOHggc2xvd2VyCiAgIGRpcmVj
dC1hcmd1bWVudHMtb3ZlcnJpZGRlbi1sZW5ndGggICAgICAgICAgICAgICAgIDcuODI2MystMC4y
NDkzICAgICAgICAgICAgNy43MzkzKy0wLjI2MTcgICAgICAgICAgbWlnaHQgYmUgMS4wMTEyeCBm
YXN0ZXIKICAgZGlyZWN0LWFyZ3VtZW50cy1wb3NzaWJseS1vdmVycmlkZGVuLWxlbmd0aCAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjA0
ODcrLTAuMjU0OSAgICAgICAgICAgIDcuOTUyOSstMC4yNzg0ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDEyMHggZmFzdGVyCiAgIGRpcmVjdC1jYWxsLWFyaXR5LW1pc21hdGNoICAgICAgICAgICAgICAg
ICAgICAgICAgNjEuNzMxMistMS4zODY3ICAgICAgICAgICA2MS4yODg4Ky0wLjMyMjAgICAgICAg
IAogICBkaXJlY3QtY2FsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU4
LjMzMjArLTIuNjM0OSAgICAgICAgICAgNTQuNzAyNistMy45OTc0ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDY2M3ggZmFzdGVyCiAgIGRpcmVjdC1jb25zdHJ1Y3QtYXJpdHktbWlzbWF0Y2ggICAgICAg
ICAgICAgICAgICAgOTguMDA2NystNi45MDM2ICAgICAgICAgICA5Ni4zNzI1Ky0yLjQ1NjIgICAg
ICAgICAgbWlnaHQgYmUgMS4wMTcweCBmYXN0ZXIKICAgZGlyZWN0LWNvbnN0cnVjdCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA4Ny42ODkzKy04LjQ0MTYgICAgICAgICAgIDgzLjEw
NjgrLTAuNTYyNCAgICAgICAgICBtaWdodCBiZSAxLjA1NTF4IGZhc3RlcgogICBkaXJlY3QtdGFp
bC1jYWxsLWFyaXR5LW1pc21hdGNoICAgICAgICAgICAgICAgICAgIDY3Ljc5NDYrLTEuNDU0MCAg
ICAgPyAgICAgNjguNDg3NSstMi44MjUwICAgICAgICA/IG1pZ2h0IGJlIDEuMDEwMnggc2xvd2Vy
CiAgIGRpcmVjdC10YWlsLWNhbGwtaW5saW5lZC1jYWxsZXItYXJpdHktbWlzbWF0Y2ggICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NC43NzE3
Ky0yLjYwMjggICAgID8gICAgIDY0Ljk2ODcrLTMuNzUxOCAgICAgICAgPwogICBkaXJlY3QtdGFp
bC1jYWxsLWlubGluZWQtY2FsbGVyICAgICAgICAgICAgICAgICAgIDU4LjcyNDUrLTEuMjkyMSAg
ICAgPyAgICAgNTkuNzg1MCstMi4wNDUwICAgICAgICA/IG1pZ2h0IGJlIDEuMDE4MXggc2xvd2Vy
CiAgIGRpcmVjdC10YWlsLWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjQu
MzMyNSstMi44ODkyICAgICAgICAgICA2Mi40OTIzKy0xLjY1MDQgICAgICAgICAgbWlnaHQgYmUg
MS4wMjk0eCBmYXN0ZXIKICAgZGl2LWJvb2xlYW4tZG91YmxlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNC4yMTUzKy0wLjA4MzAgICAgICAgICAgICA0LjE3ODMrLTAuMDk2OCAgICAg
ICAgCiAgIGRpdi1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDguMDQ5NystMC4yNTUyICAgICAgICAgICAgNy44OTE2Ky0wLjE3NDAgICAgICAgICAgbWlnaHQg
YmUgMS4wMjAweCBmYXN0ZXIKICAgZG91YmxlLWdldC1ieS12YWwtb3V0LW9mLWJvdW5kcyAgICAg
ICAgICAgICAgICAgICAgNS4wNzAwKy0wLjIwNTIgICAgICAgICAgICA0Ljk5NzMrLTAuMTc5NyAg
ICAgICAgICBtaWdodCBiZSAxLjAxNDZ4IGZhc3RlcgogICBkb3VibGUtcG9sbHV0aW9uLWdldGJ5
dmFsICAgICAgICAgICAgICAgICAgICAgICAgICA3Ljc3MDMrLTAuMjYxMyAgICAgPyAgICAgIDcu
ODI1MistMC4yNTQxICAgICAgICA/CiAgIGRvdWJsZS1wb2xsdXRpb24tcHV0YnlvZmZzZXQgICAg
ICAgICAgICAgICAgICAgICAgIDQuMDUzNistMC4wNzk0ICAgICA/ICAgICAgNC4wNTkzKy0wLjA5
ODcgICAgICAgID8KICAgZG91YmxlLXJlYWwtdXNlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyNS42MDAyKy0xLjIzOTQgICAgID8gICAgIDI1Ljc5OTIrLTEuMzY4MyAgICAgICAg
PwogICBkb3VibGUtdG8taW50MzItdHlwZWQtYXJyYXktbm8taW5saW5lICAgICAgICAgICAgICAy
LjUwMzkrLTAuMDU0NiAgICAgPyAgICAgIDIuNTcwNCstMC4xMDMwICAgICAgICA/IG1pZ2h0IGJl
IDEuMDI2Nnggc2xvd2VyCiAgIGRvdWJsZS10by1pbnQzMi10eXBlZC1hcnJheSAgICAgICAgICAg
ICAgICAgICAgICAgIDIuNDUyOSstMC4wNTA3ICAgICA/ICAgICAgMi40NjI4Ky0wLjA3ODIgICAg
ICAgID8KICAgZG91YmxlLXRvLWludDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEzMC4yODU2Ky0xLjgzMTggICAgICAgICAgMTI5LjQ3MjErLTEuMjAxNCAgICAgICAgCiAgIGRv
dWJsZS10by11aW50MzItdHlwZWQtYXJyYXktbm8taW5saW5lICAgICAgICAgICAgIDIuNjgxMyst
MC4xMzc4ICAgICAgICAgICAgMi42MjQwKy0wLjA3MjkgICAgICAgICAgbWlnaHQgYmUgMS4wMjE4
eCBmYXN0ZXIKICAgZG91YmxlLXRvLXVpbnQzMi10eXBlZC1hcnJheSAgICAgICAgICAgICAgICAg
ICAgICAgMi41OTE1Ky0wLjA2MDYgICAgID8gICAgICAyLjY3NTIrLTAuMTQzMyAgICAgICAgPyBt
aWdodCBiZSAxLjAzMjN4IHNsb3dlcgogICBlbGlkYWJsZS1uZXctb2JqZWN0LWRhZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDE5LjA1NzIrLTAuMzU1MSAgICAgISAgICAgMjAuMDA2MCstMC40
OTk1ICAgICAgICAhIGRlZmluaXRlbHkgMS4wNDk4eCBzbG93ZXIKICAgZWxpZGFibGUtbmV3LW9i
amVjdC1yb2ZsY29wdGVyICAgICAgICAgICAgICAgICAgICAxOS4zMzM3Ky0yLjA2MzggICAgICAg
ICAgIDE3Ljc5NTQrLTAuMjUyOSAgICAgICAgICBtaWdodCBiZSAxLjA4NjR4IGZhc3RlcgogICBl
bGlkYWJsZS1uZXctb2JqZWN0LXRoZW4tY2FsbCAgICAgICAgICAgICAgICAgICAgIDE3LjkzMjMr
LTEuMjY2NyAgICAgPyAgICAgMTguMzcwOCstMS4xNjE5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI0
NXggc2xvd2VyCiAgIGVsaWRhYmxlLW5ldy1vYmplY3QtdHJlZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTkuMTQ5NystMi4xNTY4ICAgICAgICAgICAxOC4zMzUxKy0wLjM4NDYgICAgICAgICAg
bWlnaHQgYmUgMS4wNDQ0eCBmYXN0ZXIKICAgZW1wdHktc3RyaW5nLXBsdXMtaW50ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNS43NjIxKy0wLjYwMjMgICAgICAgICAgICA1LjUyOTIrLTAu
MTg4MyAgICAgICAgICBtaWdodCBiZSAxLjA0MjF4IGZhc3RlcgogICBlbXNjcmlwdGVuLWN1YmUy
aGFzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLjIwMTcrLTEuMDE3OSAgICAgPyAg
ICAgMjMuMzAxNCstMC4zNjk3ICAgICAgICA/CiAgIGV2YWwtY2FjaGVkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTkuMjYyNSstMS4yNTc0ICAgICAgICAgICAxOC42MjQ3
Ky0wLjQyNTYgICAgICAgICAgbWlnaHQgYmUgMS4wMzQyeCBmYXN0ZXIKICAgZXZhbC1jb2RlLWZ0
bC1yZWVudHJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOC44MzcxKy0wLjU1NjggICAg
ICAgICAgIDI4LjQ3NTkrLTAuMzIzNyAgICAgICAgICBtaWdodCBiZSAxLjAxMjd4IGZhc3Rlcgog
ICBldmFsLWNvZGUtZnRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQzLjE1
MjcrLTAuMTc1OCAgICAgICAgICAgNDMuMTIzMCstMC4yMzIzICAgICAgICAKICAgZXZhbC1jb21w
dXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNi44NjExKy0xLjgwNzcg
ICAgICAgICAgIDI2LjUzNzkrLTEuNzc5MCAgICAgICAgICBtaWdodCBiZSAxLjAxMjJ4IGZhc3Rl
cgogICBldmFsLW5vdC1ldmFsLWNvbXB1dGUtYXJncyAgICAgICAgICAgICAgICAgICAgICAgIDI0
Ljk0MTcrLTEuNTcyNCAgICAgICAgICAgMjQuNDYyNSstMC4xNzA0ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDE5NnggZmFzdGVyCiAgIGV2YWwtbm90LWV2YWwtY29tcHV0ZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMjQuOTc2MCstMS4yOTU3ICAgICAgICAgICAyNC4yMTY0Ky0wLjIzMDIgICAg
ICAgICAgbWlnaHQgYmUgMS4wMzE0eCBmYXN0ZXIKICAgZXhpdC1sZW5ndGgtb24tcGxhaW4tb2Jq
ZWN0ICAgICAgICAgICAgICAgICAgICAgICAxMS44ODIwKy0wLjM2NjkgICAgICAgICAgIDExLjg0
MTYrLTAuNDg1NCAgICAgICAgCiAgIGV4dGVybmFsLWFyZ3VtZW50cy1nZXRieXZhbCAgICAgICAg
ICAgICAgICAgICAgICAgIDEuMjIyMystMC4wNjY0ICAgICA/ICAgICAgMS4yMzMyKy0wLjAyNzQg
ICAgICAgID8KICAgZXh0ZXJuYWwtYXJndW1lbnRzLXB1dGJ5dmFsICAgICAgICAgICAgICAgICAg
ICAgICAgMi4yMzcwKy0wLjA0MzMgICAgID8gICAgICAyLjI2MTErLTAuMDgzNyAgICAgICAgPyBt
aWdodCBiZSAxLjAxMDh4IHNsb3dlcgogICBmYWtlLWl0ZXJhdG9ycy10aGF0LXRocm93LXdoZW4t
ZmluaXNoZWQgICAgICAgICAgIDkwLjA0MDgrLTQuMDczNyAgICAgISAgICAxMDAuNTA0MSstNC43
MDg1ICAgICAgICAhIGRlZmluaXRlbHkgMS4xMTYyeCBzbG93ZXIKICAgZml4ZWQtdHlwZWQtYXJy
YXktc3RvcmFnZS12YXItaW5kZXggICAgICAgICAgICAgICAgMS43Nzg3Ky0wLjA0MTcgICAgICAg
ICAgICAxLjc1NDQrLTAuMDE1NSAgICAgICAgICBtaWdodCBiZSAxLjAxMzl4IGZhc3RlcgogICBm
aXhlZC10eXBlZC1hcnJheS1zdG9yYWdlICAgICAgICAgICAgICAgICAgICAgICAgICAxLjQ3MTYr
LTAuMjIzNiAgICAgICAgICAgIDEuMzU3MystMC4wMjM1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDg0
MnggZmFzdGVyCiAgIEZsb2F0MzJBcnJheS1tYXRyaXgtbXVsdCAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDYuMTk4NSstMC4yNzg5ICAgICA/ICAgICAgNi4yOTI2Ky0wLjI3OTAgICAgICAgID8g
bWlnaHQgYmUgMS4wMTUyeCBzbG93ZXIKICAgRmxvYXQzMkFycmF5LXRvLUZsb2F0NjRBcnJheS1z
ZXQgICAgICAgICAgICAgICAgICAzNi4zNzc0Ky0wLjcyNTIgICAgICAgICAgIDM1Ljk1MjkrLTAu
NTgxMyAgICAgICAgICBtaWdodCBiZSAxLjAxMTh4IGZhc3RlcgogICBGbG9hdDY0QXJyYXktYWxs
b2MtbG9uZy1saXZlZCAgICAgICAgICAgICAgICAgICAgIDYxLjA2MTQrLTAuOTQ4NyAgICAgICAg
ICAgNjAuOTQ2NSstMC44NjE5ICAgICAgICAKICAgRmxvYXQ2NEFycmF5LXRvLUludDE2QXJyYXkt
c2V0ICAgICAgICAgICAgICAgICAgICA0OC40NDIwKy0xLjY4NTEgICAgICAgICAgIDQ3LjU0OTgr
LTAuNDQ0OSAgICAgICAgICBtaWdodCBiZSAxLjAxODh4IGZhc3RlcgogICBmb2xkLWRvdWJsZS10
by1pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjE4MTMrLTAuNTkwNCAgICAg
ICAgICAgMTMuNjY3OCstMC4zNTAzICAgICAgICAgIG1pZ2h0IGJlIDEuMDM3NnggZmFzdGVyCiAg
IGZvbGQtZ2V0LWJ5LWlkLXRvLW11bHRpLWdldC1ieS1vZmZzZXQtcmFyZS1pbnQgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS40NjYyKy0x
LjE0ODQgICAgICAgICAgICA5LjQxNTkrLTAuOTE3NiAgICAgICAgCiAgIGZvbGQtZ2V0LWJ5LWlk
LXRvLW11bHRpLWdldC1ieS1vZmZzZXQgICAgICAgICAgICAgIDcuODQ5NCstMS4yNTU1ICAgICAg
ICAgICAgNi45MDI4Ky0wLjE1MzQgICAgICAgICAgbWlnaHQgYmUgMS4xMzcxeCBmYXN0ZXIKICAg
Zm9sZC1tdWx0aS1nZXQtYnktb2Zmc2V0LXRvLWdldC1ieS1vZmZzZXQgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4zMTkxKy0wLjkyODgg
ICAgID8gICAgICA1LjUxNTErLTEuMDEzNyAgICAgICAgPyBtaWdodCBiZSAxLjAzNjh4IHNsb3dl
cgogICBmb2xkLW11bHRpLWdldC1ieS1vZmZzZXQtdG8tcG9seS1nZXQtYnktb2Zmc2V0ICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNjM0
NystMS4yMzA3ICAgICA/ICAgICAgNS44MzYyKy0xLjI3MTQgICAgICAgID8gbWlnaHQgYmUgMS4w
MzU4eCBzbG93ZXIKICAgZm9sZC1tdWx0aS1wdXQtYnktb2Zmc2V0LXRvLXBvbHktcHV0LWJ5LW9m
ZnNldCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA1LjcyNDIrLTEuNDA2MCAgICAgICAgICAgIDUuMzkzNistMS4xNTY2ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDYxM3ggZmFzdGVyCiAgIGZvbGQtbXVsdGktcHV0LWJ5LW9mZnNldC10by1wdXQt
Ynktb2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQuNTI4MCstMS4xMDM0ICAgICAgICAgICAgNC4zOTM2Ky0xLjMzNTcgICAgICAg
ICAgbWlnaHQgYmUgMS4wMzA2eCBmYXN0ZXIKICAgZm9sZC1tdWx0aS1wdXQtYnktb2Zmc2V0LXRv
LXJlcGxhY2Utb3ItdHJhbnNpdGlvbi1wdXQtYnktb2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuOTE5MystMC45NTUyICAgICAg
ICAgICAgNy43Mzg1Ky0xLjA1NDYgICAgICAgICAgbWlnaHQgYmUgMS4wMjM0eCBmYXN0ZXIKICAg
Zm9sZC1wdXQtYnktaWQtdG8tbXVsdGktcHV0LWJ5LW9mZnNldCAgICAgICAgICAgICAgOC41Mjk4
Ky0wLjk4MzAgICAgID8gICAgICA5LjA1MjQrLTEuMjkyNCAgICAgICAgPyBtaWdodCBiZSAxLjA2
MTN4IHNsb3dlcgogICBmb2xkLXB1dC1ieS12YWwtd2l0aC1zdHJpbmctdG8tbXVsdGktcHV0LWJ5
LW9mZnNldCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA4LjY4NDErLTAuOTM5MSAgICAgPyAgICAgIDguOTQ5MistMS42Mzk0ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDMwNXggc2xvd2VyCiAgIGZvbGQtcHV0LWJ5LXZhbC13aXRoLXN5bWJvbC10
by1tdWx0aS1wdXQtYnktb2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDguNzE0MSstMC44Nzk4ICAgICAgICAgICAgOC4yMjE5Ky0w
LjI3MjUgICAgICAgICAgbWlnaHQgYmUgMS4wNTk5eCBmYXN0ZXIKICAgZm9sZC1wdXQtc3RydWN0
dXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4zNDk2Ky0xLjI2MjIgICAgICAg
ICAgICA0LjEwMjcrLTEuMjg5MiAgICAgICAgICBtaWdodCBiZSAxLjA2MDJ4IGZhc3RlcgogICBm
b3Itb2YtYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3LjE2Nzkr
LTAuNDg4NSAgICAgPyAgICAgMTcuMTkxNSstMC43MDE2ICAgICAgICA/CiAgIGZvci1vZi1pdGVy
YXRlLWFycmF5LWVudHJpZXMgICAgICAgICAgICAgICAgICAgICAgIDguNTEyNCstMC4yNzg4ICAg
ICA/ICAgICAgOS4yOTIxKy0wLjUzOTYgICAgICAgID8gbWlnaHQgYmUgMS4wOTE2eCBzbG93ZXIK
ICAgZm9yLW9mLWl0ZXJhdGUtYXJyYXkta2V5cyAgICAgICAgICAgICAgICAgICAgICAgICAgNS4x
NjYxKy0wLjA4ODYgICAgICAgICAgICA1LjE0OTMrLTAuMjYyNyAgICAgICAgCiAgIGZvci1vZi1p
dGVyYXRlLWFycmF5LXZhbHVlcyAgICAgICAgICAgICAgICAgICAgICAgIDQuODk1MCstMC43MTc2
ICAgICAgICAgICAgNC40NjgzKy0wLjA5OTkgICAgICAgICAgbWlnaHQgYmUgMS4wOTU1eCBmYXN0
ZXIKICAgZnJlZXplLWFuZC1kby13b3JrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
My45NDA2Ky0wLjcxOTkgICAgICAgICAgIDEzLjY4NzUrLTAuNTM4NSAgICAgICAgICBtaWdodCBi
ZSAxLjAxODV4IGZhc3RlcgogICBmcm91bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEwLjcxNjkrLTAuMjg2MCAgICAgPyAgICAgMTAuODIyMystMC40NzkzICAg
ICAgICA/CiAgIGZ0bC1saWJyYXJ5LWlubGluaW5nLWRhdGF2aWV3ICAgICAgICAgICAgICAgICAg
ICAgODAuNDM4OCstMC42NDc1ICAgICBeICAgICA3OC44OTUyKy0wLjE4NTQgICAgICAgIF4gZGVm
aW5pdGVseSAxLjAxOTZ4IGZhc3RlcgogICBmdGwtbGlicmFyeS1pbmxpbmluZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDI0LjM0ODQrLTEuNTQ5OSAgICAgICAgICAgMjMuNTM3NCstMC4z
OTc2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM0NXggZmFzdGVyCiAgIGZ0bC1wb2x5bW9ycGhpYy1i
aXRhbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzYuOTEzMSstMy4yNDE0ICAgICAgICAg
IDEzNS40MTg5Ky0xLjc4NDcgICAgICAgICAgbWlnaHQgYmUgMS4wMTEweCBmYXN0ZXIKICAgZnRs
LXBvbHltb3JwaGljLWJpdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzNC42NjU4Ky0y
LjEzOTAgICAgID8gICAgMTM1LjI0ODArLTEuNDcyOCAgICAgICAgPwogICBmdGwtcG9seW1vcnBo
aWMtYml0eG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM2LjU1NjMrLTMuMzI4MCAgICAg
ICAgICAxMzYuMzQwNistMi41NTkxICAgICAgICAKICAgZnRsLXBvbHltb3JwaGljLWxzaGlmdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDE2NC43Nzk2Ky0yLjAyNDkgICAgID8gICAgMTY3Ljcz
MTkrLTUuMjcwMiAgICAgICAgPyBtaWdodCBiZSAxLjAxNzl4IHNsb3dlcgogICBmdGwtcG9seW1v
cnBoaWMtcnNoaWZ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYzLjIzODQrLTIuMjQ0NyAg
ICAgPyAgICAxNjMuODY0OCstMi4xOTE0ICAgICAgICA/CiAgIGZ0bC1wb2x5bW9ycGhpYy1TdHJp
bmdGcm9tQ2hhckNvZGUgICAgICAgICAgICAgICAgNDMuNzk1NCstMS4zMzI2ICAgICAgICAgICA0
My42NDk2Ky0xLjY2ODUgICAgICAgIAogICBmdGwtcG9seW1vcnBoaWMtc3ViICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTYxLjQxMjkrLTMuMTM3OCAgICAgPyAgICAxNjIuMjg3MSstNy4x
MDg5ICAgICAgICA/CiAgIGZ0bC1wb2x5bW9ycGhpYy11cnNoaWZ0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAxNzcuNjgzMSstMi42Nzk0ICAgICAgICAgIDE3Ni43MTczKy00LjEwMzggICAgICAg
IAogICBmdW5jdGlvbi1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5
LjI1NjgrLTAuOTA1MiAgICAgPyAgICAgIDkuNDYzNCstMS4zMjk2ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDIyM3ggc2xvd2VyCiAgIGZ1bmN0aW9uLWRvdC1hcHBseSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIuNDQ5OCstMC4wMzM0ICAgICA/ICAgICAgMi40NTkyKy0wLjA0NDQgICAg
ICAgID8KICAgZnVuY3Rpb24tdGVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMy4wODg3Ky0wLjA3MTQgICAgICAgICAgICAzLjAwOTErLTAuMDE4NiAgICAgICAgICBtaWdo
dCBiZSAxLjAyNjR4IGZhc3RlcgogICBmdW5jdGlvbi13aXRoLWV2YWwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDM5LjY1OTcrLTAuMTYyOSAgICAgICAgICAgMzkuNjI1NystMC4xNzg3
ICAgICAgICAKICAgZ2NzZS1wb2x5LWdldC1sZXNzLW9idmlvdXMgICAgICAgICAgICAgICAgICAg
ICAgICAxNS43MDU2Ky0wLjg2MzAgICAgICAgICAgIDE1LjQ5OTgrLTAuMjk1OCAgICAgICAgICBt
aWdodCBiZSAxLjAxMzN4IGZhc3RlcgogICBnY3NlLXBvbHktZ2V0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDE2LjcxNjYrLTAuODA0OCAgICAgICAgICAgMTYuNjk4OCstMS4y
MzIwICAgICAgICAKICAgZ2NzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMy42MzAyKy0wLjEwMjEgICAgICAgICAgICAzLjU5NTQrLTAuMTAzOCAgICAgICAg
CiAgIGdlbmVyYXRvci1jcmVhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAu
OTM2MistMC4wMzIwICAgICA/ICAgICAgMC45NTQzKy0wLjAyNzQgICAgICAgID8gbWlnaHQgYmUg
MS4wMTk0eCBzbG93ZXIKICAgZ2VuZXJhdG9yLWZpYiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxOS45NDUxKy0wLjU4MDIgICAgID8gICAgIDIwLjQ2NjUrLTEuMjU3OSAgICAg
ICAgPyBtaWdodCBiZSAxLjAyNjF4IHNsb3dlcgogICBnZW5lcmF0b3ItZnVuY3Rpb24tY3JlYXRl
ICAgICAgICAgICAgICAgICAgICAgICAgICA0LjYyNjYrLTAuNTQ3NSAgICAgICAgICAgIDQuNTAz
NSstMC4yNzAwICAgICAgICAgIG1pZ2h0IGJlIDEuMDI3M3ggZmFzdGVyCiAgIGdlbmVyYXRvci1z
dW5zcGlkZXItYWNjZXNzLW5zaWV2ZSAgICAgICAgICAgICAgICAgIDUuMjY1NystMC4yNDE4ICAg
ICAgICAgICAgNS4xMjM1Ky0wLjEyNjQgICAgICAgICAgbWlnaHQgYmUgMS4wMjc3eCBmYXN0ZXIK
ICAgZ2VuZXJhdG9yLXdpdGgtc2V2ZXJhbC10eXBlcyAgICAgICAgICAgICAgICAgICAgIDEwNi42
Mzk2Ky0xOC40NTc3ICAgID8gICAgMTE3LjMzNTgrLTE3LjIzNzQgICAgICAgPyBtaWdodCBiZSAx
LjEwMDN4IHNsb3dlcgogICBnZXQtYnktaWQtYmltb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGlt
aW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMi43NjEwKy0wLjMwMjggICAgICAgICAgICAyLjY4NDArLTAuMTIwMiAg
ICAgICAgICBtaWdodCBiZSAxLjAyODd4IGZhc3RlcgogICBnZXQtYnktaWQtYmltb3JwaGljLWNo
ZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljg1NjcrLTAuMTUwMiAgICAgPyAgICAgIDQuODY0
OCstMC4xNzEzICAgICAgICA/CiAgIGdldC1ieS1pZC1jaGFpbi1mcm9tLXRyeS1ibG9jayAgICAg
ICAgICAgICAgICAgICAgIDIuMTU1NystMC4wNjY1ICAgICAgICAgICAgMi4xMTQ2Ky0wLjAzMDMg
ICAgICAgICAgbWlnaHQgYmUgMS4wMTk1eCBmYXN0ZXIKICAgZ2V0LWJ5LWlkLWNoZWNrLXN0cnVj
dHVyZS1lbGltaW5hdGlvbiAgICAgICAgICAgICAgMy45NjA3Ky0wLjA3NDAgICAgICAgICAgICAz
LjkxMDcrLTAuMDgwNyAgICAgICAgICBtaWdodCBiZSAxLjAxMjh4IGZhc3RlcgogICBnZXQtYnkt
aWQtcHJvdG8tb3Itc2VsZiAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjA4OTMrLTAuODU3
OCAgICAgICAgICAgIDguODExOSstMC42MjUzICAgICAgICAgIG1pZ2h0IGJlIDEuMDMxNXggZmFz
dGVyCiAgIGdldC1ieS1pZC1xdWFkbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24t
c2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDMuMDIxOCstMC4wMjc0ICAgICA/ICAgICAgMy4xMTEwKy0wLjI1MTEgICAgICAgID8g
bWlnaHQgYmUgMS4wMjk1eCBzbG93ZXIKICAgZ2V0LWJ5LWlkLXNlbGYtb3ItcHJvdG8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOS40NzIxKy0xLjQ3NjAgICAgICAgICAgICA4LjY0MjIrLTAu
MzUxMSAgICAgICAgICBtaWdodCBiZSAxLjA5NjB4IGZhc3RlcgogICBnZXQtYnktdmFsLW91dC1v
Zi1ib3VuZHMgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjEwMzQrLTAuMTY2OSAgICAgPyAg
ICAgIDUuMTI1OCstMC4xNDMzICAgICAgICA/CiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctYmlt
b3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi44NjI1Ky0wLjAxMzcg
ICAgICAgICAgICAyLjg2MTYrLTAuMDM4OSAgICAgICAgCiAgIGdldC1ieS12YWwtd2l0aC1zdHJp
bmctYmltb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbiAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjYzMzIrLTAuMjYzNCAg
ICAgPyAgICAgIDguMjExNystMS4zMzY0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDc1OHggc2xvd2Vy
CiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctY2hhaW4tZnJvbS10cnktYmxvY2sgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4xOTI1Ky0w
LjAyMDMgICAgICAgICAgICAyLjE5MDYrLTAuMDIyNiAgICAgICAgCiAgIGdldC1ieS12YWwtd2l0
aC1zdHJpbmctY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuNTA5OCstMC4xNDIxICAgICAg
ICAgICAgNi40MTQ3Ky0wLjA4NzkgICAgICAgICAgbWlnaHQgYmUgMS4wMTQ4eCBmYXN0ZXIKICAg
Z2V0LWJ5LXZhbC13aXRoLXN0cmluZy1wcm90by1vci1zZWxmICAgICAgICAgICAgICAxMS4xNzg3
Ky0xLjYwNDQgICAgICAgICAgIDEwLjcyMDgrLTEuMjI1OCAgICAgICAgICBtaWdodCBiZSAxLjA0
Mjd4IGZhc3RlcgogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5nLXF1YWRtb3JwaGljLWNoZWNrLXN0
cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMy41MTA3Ky0wLjEwNjcgICAgID8gICAgICAzLjU1
MTkrLTAuMTIzMyAgICAgICAgPyBtaWdodCBiZSAxLjAxMTd4IHNsb3dlcgogICBnZXQtYnktdmFs
LXdpdGgtc3RyaW5nLXNlbGYtb3ItcHJvdG8gICAgICAgICAgICAgICA5Ljg4MzUrLTEuMDYyMiAg
ICAgPyAgICAgMTAuNzM3MCstMS41NDgyICAgICAgICA/IG1pZ2h0IGJlIDEuMDg2NHggc2xvd2Vy
CiAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wtYmltb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGlt
aW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMi44MDIxKy0wLjA0OTMgICAgID8gICAgICAzLjAxODQrLTAuNTExMCAg
ICAgICAgPyBtaWdodCBiZSAxLjA3NzJ4IHNsb3dlcgogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9s
LWJpbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC4xMzA4Ky0wLjIyOTIgICAg
ID8gICAgIDEwLjMwNTErLTAuMzk3NSAgICAgICAgPyBtaWdodCBiZSAxLjAxNzJ4IHNsb3dlcgog
ICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLWNoYWluLWZyb20tdHJ5LWJsb2NrICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMjMyMistMC4w
NzM0ICAgICAgICAgICAgMi4yMjk3Ky0wLjA4NzMgICAgICAgIAogICBnZXQtYnktdmFsLXdpdGgt
c3ltYm9sLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbiAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjYyNDUrLTAuMjgyMyAgICAgICAg
ICAgIDkuNDI0MSstMC4xODg1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIxM3ggZmFzdGVyCiAgIGdl
dC1ieS12YWwtd2l0aC1zeW1ib2wtcHJvdG8tb3Itc2VsZiAgICAgICAgICAgICAgMTAuNjYyNSst
MS4yNzA0ICAgICA/ICAgICAxMC45ODcyKy0xLjEyNzUgICAgICAgID8gbWlnaHQgYmUgMS4wMzA0
eCBzbG93ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1xdWFkbW9ycGhpYy1jaGVjay1zdHJ1
Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDMuNjUzOSstMC4wOTUxICAgICAgICAgICAgMy42MTc1
Ky0wLjA0OTYgICAgICAgICAgbWlnaHQgYmUgMS4wMTAxeCBmYXN0ZXIKICAgZ2V0LWJ5LXZhbC13
aXRoLXN5bWJvbC1zZWxmLW9yLXByb3RvICAgICAgICAgICAgICAxMC45NzUzKy0xLjMzNTAgICAg
ICAgICAgIDEwLjc0NzgrLTEuNDYyMCAgICAgICAgICBtaWdodCBiZSAxLjAyMTJ4IGZhc3Rlcgog
ICBnZXRfYnlfdmFsLUludDMyQXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjU2
OTQrLTAuMTI3MSAgICAgICAgICAgIDEuNDg2MCstMC4wNDE0ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDU2MXggZmFzdGVyCiAgIGdldF9jYWxsZWVfbW9ub21vcnBoaWMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIuNjA1OCstMC4xMDY5ICAgICAgICAgICAgMi41NzU3Ky0wLjE2MDUgICAgICAg
ICAgbWlnaHQgYmUgMS4wMTE3eCBmYXN0ZXIKICAgZ2V0X2NhbGxlZV9wb2x5bW9ycGhpYyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMy4yNzY2Ky0wLjEzMTAgICAgID8gICAgICAzLjMwOTkr
LTAuMTgwNiAgICAgICAgPyBtaWdodCBiZSAxLjAxMDF4IHNsb3dlcgogICBnZXR0ZXItbm8tYWN0
aXZhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjI4MzErLTAuMDY5MiAgICAg
PyAgICAgIDMuMzI2NystMC4wOTYzICAgICAgICA/IG1pZ2h0IGJlIDEuMDEzM3ggc2xvd2VyCiAg
IGdldHRlci1wcm90b3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMzIy
MistMC4yNDM5ICAgICAgICAgICAgNS4yNjA3Ky0wLjEzNDQgICAgICAgICAgbWlnaHQgYmUgMS4w
MTE3eCBmYXN0ZXIKICAgZ2V0dGVyLXJpY2hhcmRzLXRyeS1jYXRjaCAgICAgICAgICAgICAgICAg
ICAgICAgICA3Ny43OTgzKy0xLjY0MTIgICAgICAgICAgIDc3LjE3MzUrLTAuNjIxNSAgICAgICAg
CiAgIGdldHRlci1yaWNoYXJkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjgu
MTY0MistNC40MTQxICAgICA/ICAgICA2OC44Mzk0Ky0zLjE0NjIgICAgICAgID8KICAgZ2V0dGVy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy45NDg0Ky0wLjEw
ODQgICAgICAgICAgICAzLjgzMjkrLTAuMDQ1MyAgICAgICAgICBtaWdodCBiZSAxLjAzMDF4IGZh
c3RlcgogICBnbG9iYWwtY29kZS1mdGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDM1LjI0NzArLTAuNDgyMyAgICAgPyAgICAgMzYuMDExMystMS4wMDYyICAgICAgICA/IG1pZ2h0
IGJlIDEuMDIxN3ggc2xvd2VyCiAgIGdsb2JhbC1pc05hTiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMTMuMjIxNistMC42MTE2ICAgICA/ICAgICAxMy40ODY1Ky0wLjYzNTYg
ICAgICAgID8gbWlnaHQgYmUgMS4wMjAweCBzbG93ZXIKICAgZ2xvYmFsLW9iamVjdC1hY2Nlc3Mt
d2l0aC1tdXRhdGluZy1zdHJ1Y3R1cmUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNS40Nzc4Ky0wLjIwNTYgICAgID8gICAgICA1LjY0MDkr
LTAuNDk2NSAgICAgICAgPyBtaWdodCBiZSAxLjAyOTh4IHNsb3dlcgogICBnbG9iYWwtdmFyLWNv
bnN0LWluZmVyLWZpcmUtZnJvbS1vcHQgICAgICAgICAgICAgICAwLjk0ODIrLTAuMDQ3NiAgICAg
PyAgICAgIDAuOTQ4NystMC4wMzE1ICAgICAgICA/CiAgIGdsb2JhbC12YXItY29uc3QtaW5mZXIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuODMwOSstMC4wNDgyICAgICAgICAgICAgMC44
MjIxKy0wLjA0OTkgICAgICAgICAgbWlnaHQgYmUgMS4wMTA3eCBmYXN0ZXIKICAgaGFyZC1vdmVy
Zmxvdy1jaGVjay1lcXVhbCAgICAgICAgICAgICAgICAgICAgICAgICAyNS4xMjMyKy0xLjYzOTEg
ICAgICAgICAgIDI1LjAzMjArLTEuOTEyMiAgICAgICAgCiAgIGhhcmQtb3ZlcmZsb3ctY2hlY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjguMDUyNistMS4xNDMyICAgICAgICAgICAy
Ni43OTkwKy0yLjI4NjAgICAgICAgICAgbWlnaHQgYmUgMS4wNDY4eCBmYXN0ZXIKICAgaGFzLW93
bi1wcm9wZXJ0eS1uYW1lLWNhY2hlICAgICAgICAgICAgICAgICAgICAgICA1Ni41Mzc0Ky0xLjQ0
NzEgICAgICAgICAgIDU1Ljk4ODgrLTAuMzMxMSAgICAgICAgCiAgIEhhc2hNYXAtcHV0LWdldC1p
dGVyYXRlLWtleXMgICAgICAgICAgICAgICAgICAgICAgMjMuMTY1NystMC4zODMxICAgICA/ICAg
ICAyNC41ODExKy0yLjU2ODggICAgICAgID8gbWlnaHQgYmUgMS4wNjExeCBzbG93ZXIKICAgSGFz
aE1hcC1wdXQtZ2V0LWl0ZXJhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi45ODE4Ky0w
LjU3NzYgICAgICAgICAgIDIyLjk2NjMrLTAuMjI0NSAgICAgICAgCiAgIEhhc2hNYXAtc3RyaW5n
LXB1dC1nZXQtaXRlcmF0ZSAgICAgICAgICAgICAgICAgICAgMjMuNTQwNCstMC41NTg1ICAgICAh
ICAgICAyNC4zMTAzKy0wLjA4NDkgICAgICAgICEgZGVmaW5pdGVseSAxLjAzMjd4IHNsb3dlcgog
ICBob2lzdC1tYWtlLXJvcGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjI4
MjIrLTAuMjk4MiAgICAgICAgICAgIDQuMTY0OSstMC4xNTY3ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDI4MnggZmFzdGVyCiAgIGhvaXN0LXBvbHktY2hlY2stc3RydWN0dXJlLWVmZmVjdGZ1bC1sb29w
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMuNDA0MSstMC4wNzYxICAgICA/ICAgICAgMy40MTIwKy0wLjA4MDUgICAgICAgID8KICAgaG9p
c3QtcG9seS1jaGVjay1zdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICAgMi4zOTE5Ky0w
LjA4MzggICAgID8gICAgICAyLjQ2MDQrLTAuMDk5MyAgICAgICAgPyBtaWdodCBiZSAxLjAyODZ4
IHNsb3dlcgogICBpbXBsaWNpdC1iaWdzd2l0Y2gtaW5kaXJlY3Qtc3ltYm9sICAgICAgICAgICAg
ICAgIDUxLjM5NzArLTAuNTM2MSAgICAgPyAgICAgNTEuOTQ4MCstMi45NDA2ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDEwN3ggc2xvd2VyCiAgIGltdWwtZG91YmxlLW9ubHkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQuNDYwMystMC4zMjYwICAgICA/ICAgICAgNC41ODM3Ky0wLjMx
NjcgICAgICAgID8gbWlnaHQgYmUgMS4wMjc3eCBzbG93ZXIKICAgaW11bC1pbnQtb25seSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS43MDg5Ky0wLjE0MjUgICAgID8gICAg
ICA1Ljc4MjYrLTAuMTE3MCAgICAgICAgPyBtaWdodCBiZSAxLjAxMjl4IHNsb3dlcgogICBpbXVs
LW1peGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjUyMDMrLTAu
MTM1NyAgICAgPyAgICAgIDQuNzU2MSstMC4zMTIxICAgICAgICA/IG1pZ2h0IGJlIDEuMDUyMngg
c2xvd2VyCiAgIGluLWZvdXItY2FzZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTguODMxNystMi4zMTYwICAgICA/ICAgICAyMC44NjUwKy0yLjEwNDcgICAgICAgID8gbWln
aHQgYmUgMS4xMDgweCBzbG93ZXIKICAgaW4tb25lLWNhc2UtZmFsc2UgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOS4xODM2Ky0wLjI0MDAgICAgID8gICAgICA5LjM0NjArLTAuMzE1
MyAgICAgICAgPyBtaWdodCBiZSAxLjAxNzd4IHNsb3dlcgogICBpbi1vbmUtY2FzZS10cnVlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjIwNzMrLTAuMzUyMiAgICAgPyAgICAg
IDkuMzYxMistMC40MzgxICAgICAgICA/IG1pZ2h0IGJlIDEuMDE2N3ggc2xvd2VyCiAgIGluLXR3
by1jYXNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuNjc3NystMC4z
NzExICAgICA/ICAgICAgOS45NTQ1Ky0wLjQwNjcgICAgICAgID8gbWlnaHQgYmUgMS4wMjg2eCBz
bG93ZXIKICAgaW5kZXhlZC1wcm9wZXJ0aWVzLWluLW9iamVjdHMgICAgICAgICAgICAgICAgICAg
ICAgMy4xNjcwKy0wLjA2MDQgICAgICAgICAgICAzLjEyMzQrLTAuMDM2NSAgICAgICAgICBtaWdo
dCBiZSAxLjAxNDB4IGZhc3RlcgogICBpbmZlci1jbG9zdXJlLWNvbnN0LXRoZW4tbW92LW5vLWlu
bGluZSAgICAgICAgICAgICAzLjYzNzQrLTAuNTY2MiAgICAgICAgICAgIDMuNDM0NSstMC4wOTQ4
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDU5MXggZmFzdGVyCiAgIGluZmVyLWNsb3N1cmUtY29uc3Qt
dGhlbi1tb3YgICAgICAgICAgICAgICAgICAgICAgIDguNDQyOSstMC4zNDM5ICAgICA/ICAgICAg
OC40NDQwKy0wLjQ3MDkgICAgICAgID8KICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVuLXB1dC10
by1zY29wZS1uby1pbmxpbmUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOS40NTI2Ky0wLjM0NDUgICAgID8gICAgICA5LjU1MzIrLTAuMzI0
MyAgICAgICAgPyBtaWdodCBiZSAxLjAxMDZ4IHNsb3dlcgogICBpbmZlci1jbG9zdXJlLWNvbnN0
LXRoZW4tcHV0LXRvLXNjb3BlICAgICAgICAgICAgIDIzLjc1NzcrLTEuNDU0NyAgICAgPyAgICAg
MjMuOTI5MSstMS42MDQ5ICAgICAgICA/CiAgIGluZmVyLWNsb3N1cmUtY29uc3QtdGhlbi1yZWVu
dGVyLW5vLWlubGluZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDM3LjIxODUrLTAuNDE4NSAgICAgPyAgICAgMzcuOTUyMCstMi4wNDg0ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDE5N3ggc2xvd2VyCiAgIGluZmVyLWNsb3N1cmUtY29uc3QtdGhl
bi1yZWVudGVyICAgICAgICAgICAgICAgICAgMjMuNzgyNCstMS4zNjE3ICAgICAgICAgICAyMy4x
MDc5Ky0xLjM0NjUgICAgICAgICAgbWlnaHQgYmUgMS4wMjkyeCBmYXN0ZXIKICAgaW5mZXItY29u
c3RhbnQtZ2xvYmFsLXByb3BlcnR5ICAgICAgICAgICAgICAgICAgICAgMi44MzQxKy0wLjAyNDcg
ICAgID8gICAgICAyLjk1NjErLTAuMTY1NyAgICAgICAgPyBtaWdodCBiZSAxLjA0MzF4IHNsb3dl
cgogICBpbmZlci1jb25zdGFudC1wcm9wZXJ0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
LjUyNjkrLTAuMDg1MyAgICAgICAgICAgIDIuNDE0NistMC4wNDA3ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDQ2NXggZmFzdGVyCiAgIGluZmVyLW9uZS10aW1lLWNsb3N1cmUtdGVuLXZhcnMgICAgICAg
ICAgICAgICAgICAgIDcuMzkzMystMC4zMjUyICAgICAgICAgICAgNy4zNDY3Ky0wLjI5MjEgICAg
ICAgIAogICBpbmZlci1vbmUtdGltZS1jbG9zdXJlLXR3by12YXJzICAgICAgICAgICAgICAgICAg
ICA2Ljk0NjcrLTAuMjA1NiAgICAgPyAgICAgIDcuMTcxMystMC4zNDQ1ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDMyM3ggc2xvd2VyCiAgIGluZmVyLW9uZS10aW1lLWNsb3N1cmUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDYuNjg4NCstMC4xMDM0ICAgICAgICAgICAgNi42MTYzKy0wLjEwNTkg
ICAgICAgICAgbWlnaHQgYmUgMS4wMTA5eCBmYXN0ZXIKICAgaW5mZXItb25lLXRpbWUtZGVlcC1j
bG9zdXJlICAgICAgICAgICAgICAgICAgICAgICAxMi41MTIxKy0wLjU0MzMgICAgICAgICAgIDEx
Ljk0MjkrLTAuMjE5MiAgICAgICAgICBtaWdodCBiZSAxLjA0Nzd4IGZhc3RlcgogICBpbmxpbmUt
YXJndW1lbnRzLWFjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjAzOTQrLTAuMjgw
MiAgICAgICAgICAgIDMuODYyOSstMC4xODA3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ1N3ggZmFz
dGVyCiAgIGlubGluZS1hcmd1bWVudHMtYWxpYXNlZC1hY2Nlc3MgICAgICAgICAgICAgICAgICAg
IDQuMDE3MSstMC4yOTA1ICAgICAgICAgICAgNC4wMDcwKy0wLjExNDYgICAgICAgIAogICBpbmxp
bmUtYXJndW1lbnRzLWxvY2FsLWVzY2FwZSAgICAgICAgICAgICAgICAgICAgICAzLjg1NTYrLTAu
MTE5MiAgICAgPyAgICAgIDMuOTUxMystMC4yNDY2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI0OHgg
c2xvd2VyCiAgIGlubGluZS1nZXQtc2NvcGVkLXZhciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDIuNTg5NSstMC4wNDUzICAgICA/ICAgICAgMi42MDU3Ky0wLjA0NDcgICAgICAgID8KICAg
aW5saW5lZC1wdXQtYnktaWQtdHJhbnNpdGlvbiAgICAgICAgICAgICAgICAgICAgICAgOC41Nzkw
Ky0wLjI5MDYgICAgICAgICAgICA4LjQzNzUrLTAuMzgzOCAgICAgICAgICBtaWdodCBiZSAxLjAx
Njh4IGZhc3RlcgogICBpbmxpbmVkLXB1dC1ieS12YWwtd2l0aC1zdHJpbmctdHJhbnNpdGlvbiAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ1
Ljg4MzkrLTEuMzAxNCAgICAgPyAgICAgNDYuMjQ3MCstMS42ODA5ICAgICAgICA/CiAgIGlubGlu
ZWQtcHV0LWJ5LXZhbC13aXRoLXN5bWJvbC10cmFuc2l0aW9uICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDUuODU1MCstMC41MTMyICAgICAg
ICAgICA0NS41ODM0Ky0wLjIwMjEgICAgICAgIAogICBpbnN0YW5jZW9mLWJvdW5kICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIyLjM1OTkrLTEuNTM4OSAgICAgICAgICAgMjEuMzQ4
MystMC42ODcxICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ3NHggZmFzdGVyCiAgIGludC1vci1vdGhl
ci1hYnMtdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgIDkuMTY4MSstMC4xOTk2ICAg
ICAgICAgICAgOS4wNDExKy0wLjMxOTAgICAgICAgICAgbWlnaHQgYmUgMS4wMTQweCBmYXN0ZXIK
ICAgaW50LW9yLW90aGVyLWFicy16ZXJvLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAxNS44
NzYzKy0wLjUxNDkgICAgID8gICAgIDE2LjgzMDgrLTEuMzA5OSAgICAgICAgPyBtaWdodCBiZSAx
LjA2MDF4IHNsb3dlcgogICBpbnQtb3Itb3RoZXItYWRkLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAg
ICAgICAgICAgICA0Ljg3MDMrLTAuMTM4OCAgICAgICAgICAgIDQuODI2MystMC4xMzgxICAgICAg
ICAKICAgaW50LW9yLW90aGVyLWFkZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ni4wNTMxKy0wLjA3MjQgICAgICAgICAgICA1LjkyNTArLTAuMTc5NyAgICAgICAgICBtaWdodCBi
ZSAxLjAyMTZ4IGZhc3RlcgogICBpbnQtb3Itb3RoZXItZGl2LXRoZW4tZ2V0LWJ5LXZhbCAgICAg
ICAgICAgICAgICAgICA0LjM0NTkrLTAuMDY3NCAgICAgICAgICAgIDQuMjgxNystMC4wNTI5ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDE1MHggZmFzdGVyCiAgIGludC1vci1vdGhlci1tYXgtdGhlbi1n
ZXQtYnktdmFsICAgICAgICAgICAgICAgICAgIDQuNzI5MCstMC4xNTIxICAgICAgICAgICAgNC42
MjI4Ky0wLjEyNjUgICAgICAgICAgbWlnaHQgYmUgMS4wMjMweCBmYXN0ZXIKICAgaW50LW9yLW90
aGVyLW1pbi10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgNS4wNTc4Ky0wLjIxODAg
ICAgICAgICAgICA0Ljk2NzgrLTAuMjA0MyAgICAgICAgICBtaWdodCBiZSAxLjAxODF4IGZhc3Rl
cgogICBpbnQtb3Itb3RoZXItbW9kLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICA0
LjI0NzArLTAuMTI1MSAgICAgICAgICAgIDQuMTQ1MCstMC4wNjM3ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDI0NnggZmFzdGVyCiAgIGludC1vci1vdGhlci1tdWwtdGhlbi1nZXQtYnktdmFsICAgICAg
ICAgICAgICAgICAgIDYuNDQwNistMC4xNzM1ICAgICA/ICAgICAgNi44NTQ4Ky0xLjA3MzIgICAg
ICAgID8gbWlnaHQgYmUgMS4wNjQzeCBzbG93ZXIKICAgaW50LW9yLW90aGVyLW5lZy10aGVuLWdl
dC1ieS12YWwgICAgICAgICAgICAgICAgICAyMi4wOTAxKy0wLjYzMzAgICAgICEgICAgMTA0LjE2
OTIrLTEuNTg4MyAgICAgICAgISBkZWZpbml0ZWx5IDQuNzE1Nnggc2xvd2VyCiAgIGludC1vci1v
dGhlci1uZWctemVyby10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgMTYuMDI5OSstMC40NTc5
ICAgICAgICAgICAxNi4wMTcxKy0wLjI2NDMgICAgICAgIAogICBpbnQtb3Itb3RoZXItc3ViLXRo
ZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICA2LjQ5MTcrLTAuMjU3NCAgICAgPyAgICAg
IDYuNTM0MistMC40MTgxICAgICAgICA/CiAgIGludC1vci1vdGhlci1zdWIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDQuMzE5NCstMC4xMjMyICAgICAgICAgICAgNC4yNjUzKy0w
LjA2OTQgICAgICAgICAgbWlnaHQgYmUgMS4wMTI3eCBmYXN0ZXIKICAgaW50LW92ZXJmbG93LWxv
Y2FsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC42MjYxKy0wLjI1MzUgICAgICAg
ICAgICA0LjU0ODkrLTAuMTA5MCAgICAgICAgICBtaWdodCBiZSAxLjAxNzB4IGZhc3RlcgogICBJ
bnQxNkFycmF5LWFsbG9jLWxvbmctbGl2ZWQgICAgICAgICAgICAgICAgICAgICAgIDQwLjUxMjgr
LTEuMDQ4MCAgICAgPyAgICAgNDAuNTQxOSstMS44MDU3ICAgICAgICA/CiAgIEludDE2QXJyYXkt
YnViYmxlLXNvcnQtd2l0aC1ieXRlTGVuZ3RoICAgICAgICAgICAgMjIuNDE3MCstMS4xNzU3ICAg
ICAgICAgICAyMC45NzMzKy0wLjcxMzggICAgICAgICAgbWlnaHQgYmUgMS4wNjg4eCBmYXN0ZXIK
ICAgSW50MTZBcnJheS1idWJibGUtc29ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMC42
NTc0Ky0wLjQ2NzQgICAgID8gICAgIDIxLjU5MzMrLTEuODM3OSAgICAgICAgPyBtaWdodCBiZSAx
LjA0NTN4IHNsb3dlcgogICBJbnQxNkFycmF5LWxvYWQtaW50LW11bCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxLjk3MTMrLTAuMTA5NiAgICAgICAgICAgIDEuOTAzNSstMC4wMTM0ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDM1NnggZmFzdGVyCiAgIEludDE2QXJyYXktdG8tSW50MzJBcnJheS1z
ZXQgICAgICAgICAgICAgICAgICAgICAgMzYuODExNystMS4wMzMzICAgICA/ICAgICAzNy44MjA3
Ky0xLjQxMzAgICAgICAgID8gbWlnaHQgYmUgMS4wMjc0eCBzbG93ZXIKICAgSW50MzJBcnJheS1h
bGxvYy1sYXJnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi41MjczKy0wLjM3MTkgICAg
ICAgICAgIDEyLjM5NTErLTAuNTQ3OCAgICAgICAgICBtaWdodCBiZSAxLjAxMDd4IGZhc3Rlcgog
ICBJbnQzMkFycmF5LWFsbG9jLWxvbmctbGl2ZWQgICAgICAgICAgICAgICAgICAgICAgIDQ2LjIx
MTgrLTEuOTAxMiAgICAgPyAgICAgNDYuNzIzMCstMC44MTM0ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDExMXggc2xvd2VyCiAgIEludDMyQXJyYXktYWxsb2MgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDMuOTQ3NCstMC4xMTg2ICAgICAgICAgICAgMy44NTMzKy0wLjExMzIgICAgICAg
ICAgbWlnaHQgYmUgMS4wMjQ0eCBmYXN0ZXIKICAgSW50MzJBcnJheS1JbnQ4QXJyYXktdmlldy1h
bGxvYyAgICAgICAgICAgICAgICAgICAgOS40Nzk0Ky0wLjI1MzUgICAgID8gICAgICA5LjUyMTcr
LTAuMzU5OCAgICAgICAgPwogICBpbnQ1Mi1iYWNrLWFuZC1mb3J0aCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA4LjI5ODQrLTAuMjExMyAgICAgPyAgICAgIDguNDQ3MCstMC4zNDM1ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDE3OXggc2xvd2VyCiAgIGludDUyLXNwaWxsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNDQ3NSstMC4zNDA0ICAgICA/ICAgICAgNS40
NzQxKy0wLjE4NTYgICAgICAgID8KICAgSW50OEFycmF5LWFsbG9jLWxvbmctbGl2ZWQgICAgICAg
ICAgICAgICAgICAgICAgICAzNi40NjY4Ky0zLjMyOTQgICAgICAgICAgIDM0Ljc5NTcrLTEuODU4
MSAgICAgICAgICBtaWdodCBiZSAxLjA0ODB4IGZhc3RlcgogICBJbnQ4QXJyYXktbG9hZC13aXRo
LWJ5dGVMZW5ndGggICAgICAgICAgICAgICAgICAgICAzLjg4MjUrLTAuMjc3NiAgICAgICAgICAg
IDMuNzgxNistMC4wODY2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI2N3ggZmFzdGVyCiAgIEludDhB
cnJheS1sb2FkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNzU3NystMC4x
MDA5ICAgICA/ICAgICAgMy44OTkxKy0wLjI3OTMgICAgICAgID8gbWlnaHQgYmUgMS4wMzc2eCBz
bG93ZXIKICAgaW50ZWdlci1kaXZpZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOS43OTE3Ky0wLjI1NzcgICAgID8gICAgICA5Ljc5ODUrLTAuMzExNCAgICAgICAgPwogICBp
bnRlZ2VyLW1vZHVsbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjkyMDAr
LTAuMDcyMSAgICAgICAgICAgIDIuODk5OSstMC4wNTcwICAgICAgICAKICAgaXMtYXJyYXktZm9y
LWFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi40OTg3Ky0wLjEyOTYgICAg
ID8gICAgICAyLjU0NTQrLTAuMDkyNyAgICAgICAgPyBtaWdodCBiZSAxLjAxODd4IHNsb3dlcgog
ICBpcy1hcnJheS1mb3ItbWl4ZWQtY2FzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjE3
OTErLTAuMTgwNiAgICAgPyAgICAgIDUuMjIxMystMC4zMzYzICAgICAgICA/CiAgIGlzLWFycmF5
LWZvci1ub24tYXJyYXktb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgIDIuMzMwMystMC4wODcx
ICAgICAgICAgICAgMi4zMjAzKy0wLjA4MzQgICAgICAgIAogICBpcy1hcnJheS1mb3ItcHJveHkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjMxNDYrLTAuMDI4MiAgICAgPyAgICAg
IDMuMzcwMSstMC4wOTU1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE2N3ggc2xvd2VyCiAgIGlzLWJv
b2xlYW4tZm9sZC10cmlja3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMTk4OCstMC4w
OTQ1ICAgICAgICAgICAgMy4xNjk4Ky0wLjA0MjYgICAgICAgIAogICBpcy1ib29sZWFuLWZvbGQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjQ5NTErLTAuMDc0OSAgICAgICAg
ICAgIDIuNDc1MCstMC4wODEyICAgICAgICAKICAgaXMtZnVuY3Rpb24tZm9sZC10cmlja3ktaW50
ZXJuYWwtZnVuY3Rpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMC4zNjkwKy0wLjQ1MDUgICAgICAgICAgICA5LjkyNDYrLTAuMzI2NyAg
ICAgICAgICBtaWdodCBiZSAxLjA0NDh4IGZhc3RlcgogICBpcy1mdW5jdGlvbi1mb2xkLXRyaWNr
eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjMxNjkrLTAuMDU0NyAgICAgICAgICAgIDMu
MzA3MSstMC4wNzg0ICAgICAgICAKICAgaXMtZnVuY3Rpb24tZm9sZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMi41MDk5Ky0wLjA3NjggICAgICAgICAgICAyLjQ2NTcrLTAuMDQ2
NCAgICAgICAgICBtaWdodCBiZSAxLjAxNzl4IGZhc3RlcgogICBpcy1ub3QtY2VsbC1zcGVjdWxh
dGlvbi1mb3ItZW1wdHktdmFsdWUgICAgICAgICAgIDI0Ljk3MTkrLTAuNDk3MyAgICAgPyAgICAg
MjUuMjUxMCstMC45NjM1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDExMnggc2xvd2VyCiAgIGlzLW51
bWJlci1mb2xkLXRyaWNreSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMzMzMistMC4x
MDY4ICAgICAgICAgICAgMy4yNTcxKy0wLjAzMjMgICAgICAgICAgbWlnaHQgYmUgMS4wMjM0eCBm
YXN0ZXIKICAgaXMtbnVtYmVyLWZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMi40MjI2Ky0wLjA0OTEgICAgID8gICAgICAyLjQyNTArLTAuMDM0MyAgICAgICAgPwogICBp
cy1vYmplY3Qtb3ItbnVsbC1mb2xkLWZ1bmN0aW9ucyAgICAgICAgICAgICAgICAgICAyLjQ5MTUr
LTAuMDU2MCAgICAgPyAgICAgIDIuNTA0MystMC4wOTQwICAgICAgICA/CiAgIGlzLW9iamVjdC1v
ci1udWxsLWZvbGQtbGVzcy10cmlja3kgICAgICAgICAgICAgICAgIDMuMzAxMSstMC4xODM2ICAg
ICA/ICAgICAgMy4zNTE2Ky0wLjA5NzIgICAgICAgID8gbWlnaHQgYmUgMS4wMTUzeCBzbG93ZXIK
ICAgaXMtb2JqZWN0LW9yLW51bGwtZm9sZC10cmlja3kgICAgICAgICAgICAgICAgICAgICAgMy42
ODA3Ky0wLjA4NjAgICAgICAgICAgICAzLjU4OTgrLTAuMDUzOCAgICAgICAgICBtaWdodCBiZSAx
LjAyNTN4IGZhc3RlcgogICBpcy1vYmplY3Qtb3ItbnVsbC1mb2xkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyLjUxMTkrLTAuMDg4MCAgICAgPyAgICAgIDIuNTE2OSstMC4xMjYxICAgICAg
ICA/CiAgIGlzLW9iamVjdC1vci1udWxsLXRyaWNraWVyLWZ1bmN0aW9uICAgICAgICAgICAgICAg
IDMuNTExMistMC40MTQ0ICAgICAgICAgICAgMy40MzQ4Ky0wLjE1MTkgICAgICAgICAgbWlnaHQg
YmUgMS4wMjIzeCBmYXN0ZXIKICAgaXMtb2JqZWN0LW9yLW51bGwtdHJpY2tpZXItaW50ZXJuYWwt
ZnVuY3Rpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxMC40MDQ3Ky0wLjMzNzAgICAgID8gICAgIDEwLjQ5NDArLTAuNjg3NyAgICAgICAg
PwogICBpcy1vYmplY3Qtb3ItbnVsbC10cmlja3ktZnVuY3Rpb24gICAgICAgICAgICAgICAgICAz
LjU1NDIrLTAuNTY3NiAgICAgICAgICAgIDMuMzk1OCstMC4xMjU0ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDQ2NnggZmFzdGVyCiAgIGlzLW9iamVjdC1vci1udWxsLXRyaWNreS1pbnRlcm5hbC1mdW5j
dGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA3Ljc2NjcrLTAuMjEzNiAgICAgICAgICAgIDcuMzQ5OCstMC4yNjE2ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDU2N3ggZmFzdGVyCiAgIGlzLXN0cmluZy1mb2xkLXRyaWNreSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMuMjI2OCstMC4wNDczICAgICA/ICAgICAgMy4yMjkyKy0wLjA0
MDIgICAgICAgID8KICAgaXMtc3RyaW5nLWZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMi40ODQzKy0wLjEwNjQgICAgID8gICAgICAyLjU2NjUrLTAuMTU2NCAgICAgICAg
PyBtaWdodCBiZSAxLjAzMzF4IHNsb3dlcgogICBpcy1zeW1ib2wtbWl4ZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA0LjgyMjgrLTAuMTM2MCAgICAgICAgICAgIDQuODAxMist
MC4zODMxICAgICAgICAKICAgaXMtc3ltYm9sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMS43NzY1Ky0wLjA4MDYgICAgID8gICAgICAxLjgxODArLTAuMTgwMSAgICAg
ICAgPyBtaWdodCBiZSAxLjAyMzN4IHNsb3dlcgogICBpcy11bmRlZmluZWQtZm9sZC10cmlja3kg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyLjg5NzYrLTAuMDgwOSAgICAgPyAgICAgIDIuOTE4
NCstMC4wODIzICAgICAgICA/CiAgIGlzLXVuZGVmaW5lZC1mb2xkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIuNDc4NistMC4wOTIxICAgICA/ICAgICAgMi41MDg0Ky0wLjE1NzAg
ICAgICAgID8gbWlnaHQgYmUgMS4wMTIweCBzbG93ZXIKICAgSlNPTlAtbmVnYXRpdmUtMCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zNjIzKy0wLjA3MTQgICAgICAgICAgICAw
LjMyOTcrLTAuMDIzNyAgICAgICAgICBtaWdodCBiZSAxLjA5ODl4IGZhc3RlcgogICBsYXJnZS1p
bnQtY2FwdHVyZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjk0NjcrLTAuMTI5
NSAgICAgPyAgICAgIDQuMTUwMistMC4yMTA0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDUxNnggc2xv
d2VyCiAgIGxhcmdlLWludC1uZWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MTMuMzM5NCstMS40OTIyICAgICAgICAgICAxMi43MjQ3Ky0wLjQ0MDEgICAgICAgICAgbWlnaHQg
YmUgMS4wNDgzeCBmYXN0ZXIKICAgbGFyZ2UtaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMS4wNjAzKy0wLjQzMDAgICAgID8gICAgIDExLjEwMDArLTAuNDExNSAg
ICAgICAgPwogICBsYXJnZS1tYXAtaXRlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDI3LjMwNzYrLTAuNDE4MCAgICAgICAgICAgMjcuMTQ5NSstMC4zMDE5ICAgICAgICAKICAg
bGF6eS1hcnJheS1zcGVjaWVzLXdhdGNocG9pbnRzICAgICAgICAgICAgICAgICAgICAyMS4wMDkw
Ky0wLjI2NjMgICAgID8gICAgIDIxLjczMTErLTEuMzU3MiAgICAgICAgPyBtaWdodCBiZSAxLjAz
NDR4IHNsb3dlcgogICBsaWNtLWRyYWdvbnMtb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAg
ICAgICAgIDM1LjI2NDkrLTAuMTUxNiAgICAgISAgICAgMzUuNjgzMCstMC4yMjgyICAgICAgICAh
IGRlZmluaXRlbHkgMS4wMTE5eCBzbG93ZXIKICAgbGljbS1kcmFnb25zLW92ZXJmbG93ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxOS4xMjE5Ky0wLjI2NzUgICAgID8gICAgIDE5Ljg3Njcr
LTEuMjg3MSAgICAgICAgPyBtaWdodCBiZSAxLjAzOTV4IHNsb3dlcgogICBsaWNtLWRyYWdvbnMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM3LjYwMTIrLTEuMzQzOSAgICAg
ICAgICAgMzYuNjc2OCstMC40ODQ2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI1MnggZmFzdGVyCiAg
IGxvYWQtdmFyYXJncy1lbGltaW5hdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgMTcuMTkz
NistMC45MzUyICAgICAgICAgICAxNi43MTI2Ky0wLjYzMTEgICAgICAgICAgbWlnaHQgYmUgMS4w
Mjg4eCBmYXN0ZXIKICAgbG9jYWxlLWNvbXBhcmUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyMC44Nzg0Ky0xLjMwMTEgICAgID8gICAgIDIwLjk3NDcrLTEuMTY5OCAgICAgICAg
PwogICBsb2dpY2FsLW5vdC13ZWlyZC10eXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAz
LjE5NzArLTAuMTA1OSAgICAgICAgICAgIDMuMDk4OCstMC4wODk4ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDMxN3ggZmFzdGVyCiAgIGxvZ2ljYWwtbm90ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQuNjc4NistMC4xODYyICAgICAgICAgICAgNC41MzIyKy0wLjA1NDAgICAg
ICAgICAgbWlnaHQgYmUgMS4wMzIzeCBmYXN0ZXIKICAgbG90cy1vZi1maWVsZHMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOS44MDAyKy0wLjI1MDYgICAgICAgICAgICA5LjY0
NTYrLTAuMTkwMyAgICAgICAgICBtaWdodCBiZSAxLjAxNjB4IGZhc3RlcgogICBtYWtlLWluZGV4
ZWQtc3RvcmFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjQwNzUrLTAuMjc2MyAg
ICAgPyAgICAgIDMuODE3MCstMC4xNTUzICAgICAgICA/IG1pZ2h0IGJlIDEuMTIwMnggc2xvd2Vy
CiAgIG1ha2Utcm9wZS1jc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIu
OTg3NSstMC4yMzEwICAgICA/ICAgICAgMy4xMTU2Ky0wLjI2MzcgICAgICAgID8gbWlnaHQgYmUg
MS4wNDI5eCBzbG93ZXIKICAgbWFueS1mb3JlYWNoLWNhbGxzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMi4xOTU3Ky0wLjA5MzkgICAgID8gICAgICAyLjIzMzQrLTAuMDU3MCAgICAg
ICAgPyBtaWdodCBiZSAxLjAxNzJ4IHNsb3dlcgogICBtYW55LXJlcGVhdC1zdG9yZXMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIxLjIwMzcrLTEuNTE5MSAgICAgPyAgICAgMjEuNTg5
NCstMS40ODU2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE4Mnggc2xvd2VyCiAgIG1hcC1jb25zdGFu
dC1rZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNjIuNzA3MSstMi42Nzc3ICAg
ICAgICAgIDE2Mi41ODE3Ky0yLjUzMTkgICAgICAgIAogICBtYXAtZm9yLWVhY2ggICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjA0MDMrLTAuMDQ3NyAgICAgICAgICAgIDIu
MDM2NystMC4wNzQ5ICAgICAgICAKICAgbWFwLWZvci1vZiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNy42Mzk4Ky0wLjM3MjkgICAgID8gICAgICA3Ljg0NjgrLTAuNDc2
NCAgICAgICAgPyBtaWdodCBiZSAxLjAyNzF4IHNsb3dlcgogICBtYXAtaGFzLWdldC1jc2Utb3Bw
b3J0dW5pdHkgICAgICAgICAgICAgICAgICAgICAgIDg3LjIwNzYrLTIuNTc5NiAgICAgICAgICAg
ODUuNTk1MystMS4yMzIzICAgICAgICAgIG1pZ2h0IGJlIDEuMDE4OHggZmFzdGVyCiAgIG1hcC1r
ZXktd2VsbC10eXBlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODguODEzMCstMi44
MDIyICAgICAgICAgICA4NC42OTIwKy0zLjMwNTAgICAgICAgICAgbWlnaHQgYmUgMS4wNDg3eCBm
YXN0ZXIKICAgbWFwLXJlaGFzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNi45NzQwKy0wLjM1MTkgICAgICAgICAgICA2Ljc2MjYrLTAuMjI1MiAgICAgICAgICBtaWdo
dCBiZSAxLjAzMTN4IGZhc3RlcgogICBtYXJzYWdsaWEtbGFyZ2VyLWludHMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDY1LjM3NDIrLTAuMzA2NCAgICAgPyAgICAgNjYuMDE4MCstMS4xNDE0
ICAgICAgICA/CiAgIG1hcnNhZ2xpYS1vc3ItZW50cnkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTguNDc2NistMS4yMDg4ICAgICAgICAgICAxNy44OTU3Ky0wLjM4NTIgICAgICAgICAg
bWlnaHQgYmUgMS4wMzI1eCBmYXN0ZXIKICAgbWF0aC1yYW5kb20gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxNS43MDkxKy0xLjA2MDUgICAgICAgICAgIDE1LjY4NzQrLTAu
NDIzNyAgICAgICAgCiAgIG1hdGgtdHJ1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDYuNDAwNCstMC4xMzAwICAgICAgICAgICAgNi4zMDU4Ky0wLjA2MzYgICAgICAg
ICAgbWlnaHQgYmUgMS4wMTUweCBmYXN0ZXIKICAgbWF0aC13aXRoLW91dC1vZi1ib3VuZHMtYXJy
YXktdmFsdWVzICAgICAgICAgICAgICAyOS41NDEzKy0xLjM2NDEgICAgICAgICAgIDI5LjI3NjQr
LTEuNTM4MyAgICAgICAgCiAgIG1heC1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIuNTU2OCstMC4wMzE5ICAgICA/ICAgICAgMi41NjA3Ky0wLjA3MTYgICAg
ICAgID8KICAgbWVnYW1vcnBoaWMtbG9hZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyOC4wODUxKy0xLjYyNDMgICAgICAgICAgIDI3LjI2MTArLTAuOTgyMyAgICAgICAgICBtaWdo
dCBiZSAxLjAzMDJ4IGZhc3RlcgogICBtZXRob2Qtb24tbnVtYmVyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDE2LjcxNTcrLTAuNzQyNiAgICAgPyAgICAgMTcuMDk3MCstMC45NDg4
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIyOHggc2xvd2VyCiAgIG1pbi1ib29sZWFuICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNTU5NSstMC4wMjk3ICAgICAgICAgICAg
Mi41NTI0Ky0wLjA0NTYgICAgICAgIAogICBtaW51cy1ib29sZWFuLWRvdWJsZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyLjUyOTQrLTAuMDk3MSAgICAgICAgICAgIDIuNDg0MSstMC4w
MTkzICAgICAgICAgIG1pZ2h0IGJlIDEuMDE4MnggZmFzdGVyCiAgIG1pbnVzLWJvb2xlYW4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMzc4MistMC4wODY5ICAgICAgICAg
ICAgMi4zNDc0Ky0wLjA4MDIgICAgICAgICAgbWlnaHQgYmUgMS4wMTMxeCBmYXN0ZXIKICAgbWlz
Yy1zdHJpY3QtZXEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC45OTkyKy0y
LjUzMTkgICAgICAgICAgIDIzLjIwNzIrLTIuNzg4NCAgICAgICAgICBtaWdodCBiZSAxLjA3NzJ4
IGZhc3RlcgogICBtb2QtYm9vbGVhbi1kb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA0Ljc4OTArLTAuMDk1NSAgICAgICAgICAgIDQuNzI1OSstMC4wOTk5ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDEzNHggZmFzdGVyCiAgIG1vZC1ib29sZWFuICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDcuNzQ2MistMC4xNTA2ICAgICAgICAgICAgNy42NzkwKy0wLjE3
OTEgICAgICAgIAogICBtdWwtYm9vbGVhbi1kb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyLjk1MzQrLTAuMTIxNyAgICAgPyAgICAgIDIuOTkwNCstMC4wOTU3ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDEyNXggc2xvd2VyCiAgIG11bC1ib29sZWFuICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIuNTc0NystMC4xOTgxICAgICAgICAgICAgMi41MjM5Ky0w
LjE2NTUgICAgICAgICAgbWlnaHQgYmUgMS4wMjAxeCBmYXN0ZXIKICAgbmVnLWJvb2xlYW4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi41NTMyKy0wLjAyMDkgICAgID8g
ICAgICAyLjYyMTcrLTAuMTMyNyAgICAgICAgPyBtaWdodCBiZSAxLjAyNjh4IHNsb3dlcgogICBu
ZWdhdGl2ZS16ZXJvLWRpdmlkZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjQxNDcr
LTAuMDMxMiAgICAgICAgICAgIDAuNDEwMistMC4wMjE2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEx
MHggZmFzdGVyCiAgIG5lZ2F0aXZlLXplcm8tbW9kdWxvICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuNDI2MSstMC4wMTA1ICAgICA/ICAgICAgMC40MzM2Ky0wLjAxODQgICAgICAgID8g
bWlnaHQgYmUgMS4wMTc1eCBzbG93ZXIKICAgbmVnYXRpdmUtemVyby1uZWdhdGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMC40MDE5Ky0wLjAwODcgICAgID8gICAgICAwLjQwMjgrLTAu
MDE4NyAgICAgICAgPwogICBuZXN0ZWQtZnVuY3Rpb24tcGFyc2luZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTIzLjkwNzUrLTAuNzUxMSAgICAgICAgICAxMjMuODA2OCstMC42NTA1ICAgICAg
ICAKICAgbmV3LWFycmF5LWJ1ZmZlci1kZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1
OS42NjgyKy0xLjU0NjEgICAgID8gICAgIDU5LjcxMDErLTEuNzUwNyAgICAgICAgPwogICBuZXct
YXJyYXktYnVmZmVyLXB1c2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjExMDUrLTAu
MzUxNSAgICAgICAgICAgIDQuODc5OCstMC4yNDk2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ3M3gg
ZmFzdGVyCiAgIG5ldy1hcnJheS1kZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDguNTcyNCstMS4xOTg1ICAgICAgICAgICAgOC4wODg0Ky0wLjI4MzIgICAgICAgICAgbWln
aHQgYmUgMS4wNTk4eCBmYXN0ZXIKICAgbmV3LWFycmF5LXB1c2ggICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNC4wMjM4Ky0wLjUyMDAgICAgICAgICAgICAzLjk0NDUrLTAuMDc2
NiAgICAgICAgICBtaWdodCBiZSAxLjAyMDF4IGZhc3RlcgogICBuby1pbmxpbmUtY29uc3RydWN0
b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLjMyODUrLTAuMzE5MyAgICAgPyAgICAg
MjEuNTkyOSstMC42NTAzICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyNHggc2xvd2VyCiAgIE51bWJl
ci1pc05hTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMuMTk4MistMC40
NTA0ICAgICA/ICAgICAxMy41Nzc2Ky0wLjY2NzggICAgICAgID8gbWlnaHQgYmUgMS4wMjg3eCBz
bG93ZXIKICAgbnVtYmVyLXRlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMy4zNjc5Ky0wLjA5OTkgICAgICAgICAgICAzLjI5NTIrLTAuMDU1NSAgICAgICAgICBtaWdo
dCBiZSAxLjAyMjF4IGZhc3RlcgogICBudW1iZXItdG8tc3RyaW5nLXN0cmVuZ3RoLXJlZHVjdGlv
biAgICAgICAgICAgICAgICA1LjQ2OTYrLTAuMDQ0MiAgICAgPyAgICAgIDUuNTEwMistMC4zMTcw
ICAgICAgICA/CiAgIG51bWJlci10by1zdHJpbmctd2l0aC1hZGQtZW1wdHkgICAgICAgICAgICAg
ICAgICAgIDcuNDUwOSstMC4yMjEzICAgICAgICAgICAgNy4zNjI0Ky0wLjA2ODIgICAgICAgICAg
bWlnaHQgYmUgMS4wMTIweCBmYXN0ZXIKICAgbnVtYmVyLXRvLXN0cmluZy13aXRoLWFkZC1pbi1s
b29wICAgICAgICAgICAgICAgICAgOC45ODY4Ky0wLjMzMTEgICAgID8gICAgICA5LjU4NTUrLTAu
NjgyNiAgICAgICAgPyBtaWdodCBiZSAxLjA2NjZ4IHNsb3dlcgogICBudW1iZXItdG8tc3RyaW5n
LXdpdGgtYWRkICAgICAgICAgICAgICAgICAgICAgICAgICA4LjYwNDcrLTAuMjQ1NSAgICAgICAg
ICAgIDguMTcwMSstMC4yNTg0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDUzMnggZmFzdGVyCiAgIG51
bWJlci10by1zdHJpbmctd2l0aC1yYWRpeC0xMCAgICAgICAgICAgICAgICAgICAgIDEuNDE0Mist
MC4wMjU3ICAgICBeICAgICAgMS4zMzM5Ky0wLjA0ODggICAgICAgIF4gZGVmaW5pdGVseSAxLjA2
MDJ4IGZhc3RlcgogICBudW1iZXItdG8tc3RyaW5nLXdpdGgtcmFkaXgtY3NlICAgICAgICAgICAg
ICAgICAgICA1LjAzMjMrLTAuMTI0MCAgICAgPyAgICAgIDUuMDk4NystMC4yMDI0ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDEzMnggc2xvd2VyCiAgIG51bWJlci10by1zdHJpbmctd2l0aC1yYWRpeCAg
ICAgICAgICAgICAgICAgICAgICAgMTAuNDE1NistMC4yNTM2ICAgICA/ICAgICAxMC45ODk0Ky0w
LjkxMDUgICAgICAgID8gbWlnaHQgYmUgMS4wNTUxeCBzbG93ZXIKICAgb2JqZWN0LWFuZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4zMjIzKy0wLjA5ODEgICAgID8g
ICAgICA1LjQ5MDUrLTAuMjY3NiAgICAgICAgPyBtaWdodCBiZSAxLjAzMTZ4IHNsb3dlcgogICBv
YmplY3QtY2xvc3VyZS1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjU5MTcr
LTEuNDQ2MyAgICAgICAgICAgIDYuNzkzNSstMS41NDMyICAgICAgICAgIG1pZ2h0IGJlIDEuMTE3
NXggZmFzdGVyCiAgIG9iamVjdC1lbnRyaWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgODguMTM5OCstMC40NzkxICAgICA/ICAgICA4OS4yOTkyKy0yLjQ1OTIgICAgICAgID8g
bWlnaHQgYmUgMS4wMTMyeCBzbG93ZXIKICAgb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9s
cy1vbi1sYXJnZS1hcnJheSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxLjI1MDMrLTAuMDM2NCAgICAgICAgICAgIDEuMjQyOSstMC4wNjI2
ICAgICAgICAKICAgb2JqZWN0LWludC1hZGQtYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxMy4yMDQ4Ky0wLjgxNzcgICAgID8gICAgIDEzLjk2MTkrLTAuODIwNiAgICAgICAgPyBt
aWdodCBiZSAxLjA1NzN4IHNsb3dlcgogICBvYmplY3QtaW50LWFkZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDE0LjQwMjArLTAuODU4NSAgICAgICAgICAgMTQuMzIyOCstMC41
OTk5ICAgICAgICAKICAgb2JqZWN0LWludC1hbmQtYXJyYXkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxMi45NDUzKy0wLjMyODEgICAgID8gICAgIDEzLjY2OTUrLTAuODE0NiAgICAgICAg
PyBtaWdodCBiZSAxLjA1NTl4IHNsb3dlcgogICBvYmplY3QtaW50LW11bC1hcnJheSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDE0LjAxNjErLTEuMzIxNiAgICAgICAgICAgMTMuNTUyMCst
MC42NDY5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM0MnggZmFzdGVyCiAgIG9iamVjdC1pbnQtc3Vi
LWFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUuNTQ5NistMC42Njk0ICAgICAg
ICAgICAxNC41NzI0Ky0wLjM4ODkgICAgICAgICAgbWlnaHQgYmUgMS4wNjcxeCBmYXN0ZXIKICAg
b2JqZWN0LWludC1zdWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNC4wNDAz
Ky0wLjQwNzMgICAgID8gICAgIDE0LjA2ODYrLTAuMzg0NSAgICAgICAgPwogICBvYmplY3Qta2V5
cy1tYXAtdmFsdWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUyLjA2MTArLTEuODI0MiAg
ICAgICAgICAgNTEuMzgxNSstMC41MzgyICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzMnggZmFzdGVy
CiAgIG9iamVjdC1sc2hpZnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUu
MzM2NSstMC4xMDE2ICAgICA/ICAgICAgNS40ODY4Ky0wLjE3MzEgICAgICAgID8gbWlnaHQgYmUg
MS4wMjgyeCBzbG93ZXIKICAgb2JqZWN0LW9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNS40MjI1Ky0wLjIyOTQgICAgICAgICAgICA1LjM3OTUrLTAuMDM4MCAgICAg
ICAgCiAgIG9iamVjdC1yc2hpZnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDUuMzU5OSstMC4wNTQ1ICAgICA/ICAgICAgNS40MjI1Ky0wLjEzMzQgICAgICAgID8gbWlnaHQg
YmUgMS4wMTE3eCBzbG93ZXIKICAgb2JqZWN0LXRlc3QgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMy4wMzQyKy0wLjA3MTUgICAgID8gICAgICAzLjExMzcrLTAuMTIyMSAg
ICAgICAgPyBtaWdodCBiZSAxLjAyNjJ4IHNsb3dlcgogICBvYmplY3QtdXJzaGlmdCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjM4NDYrLTAuMTkwNCAgICAgPyAgICAgIDUu
Mzg3NystMC4xNjYwICAgICAgICA/CiAgIG9iamVjdC12YWx1ZXMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMzUuNjExOSstMC4xOTUyICAgICAgICAgICAzNS40MTIzKy0wLjE5
NzIgICAgICAgIAogICBvYmplY3QteG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA1LjI5MzkrLTAuMTEwOCAgICAgPyAgICAgIDUuMzI3OSstMC4wODcwICAgICAgICA/
CiAgIG9idmlvdXMtc2luay1wYXRob2xvZ3ktdGFrZW4gICAgICAgICAgICAgICAgICAgICAgNzku
MTA2NCstMC41MzQ1ICAgICA/ICAgICA4My4zMTM0Ky03LjM3OTEgICAgICAgID8gbWlnaHQgYmUg
MS4wNTMyeCBzbG93ZXIKICAgb2J2aW91cy1zaW5rLXBhdGhvbG9neSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxNy43MzMyKy0wLjg5OTkgICAgID8gICAgIDE4LjQyNjYrLTEuMzI2OCAgICAg
ICAgPyBtaWdodCBiZSAxLjAzOTF4IHNsb3dlcgogICBvYnZpb3VzbHktZWxpZGFibGUtbmV3LW9i
amVjdCAgICAgICAgICAgICAgICAgICAgIDE1Ljc1NzcrLTAuNTMwNiAgICAgPyAgICAgMTUuODM3
MistMS4wOTkxICAgICAgICA/CiAgIHBsdXMtYm9vbGVhbi1hcml0aCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIuMzg1NistMC4wMTMxICAgICAgICAgICAgMi4zNjU4Ky0wLjAzMzIg
ICAgICAgIAogICBwbHVzLWJvb2xlYW4tZG91YmxlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyLjQ4OTQrLTAuMDQyMSAgICAgPyAgICAgIDIuNTMzNCstMC4wNTE5ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDE3N3ggc2xvd2VyCiAgIHBsdXMtYm9vbGVhbiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIuMzA2OSstMC4wMjgyICAgICAgICAgICAgMi4yODg1Ky0wLjA1
MjIgICAgICAgIAogICBwb2x5LWNoYWluLWFjY2Vzcy1kaWZmZXJlbnQtcHJvdG90eXBlcy1zaW1w
bGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMi43MjMzKy0wLjAyNTYgICAgID8gICAgICAyLjcyODcrLTAuMDc0MyAgICAgICAgPwogICBw
b2x5LWNoYWluLWFjY2Vzcy1kaWZmZXJlbnQtcHJvdG90eXBlcyAgICAgICAgICAgICAyLjcwNjcr
LTAuMDcwNiAgICAgPyAgICAgIDIuNzExNistMC4wNTg2ICAgICAgICA/CiAgIHBvbHktY2hhaW4t
YWNjZXNzLXNpbXBsZXIgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNzk3NSstMC4xMDcwICAg
ICAgICAgICAgMi43MTcxKy0wLjAzMjcgICAgICAgICAgbWlnaHQgYmUgMS4wMjk2eCBmYXN0ZXIK
ICAgcG9seS1jaGFpbi1hY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi43
MzcwKy0wLjE0MDMgICAgICAgICAgICAyLjY2OTMrLTAuMDQ5NCAgICAgICAgICBtaWdodCBiZSAx
LjAyNTN4IGZhc3RlcgogICBwb2x5LXN0cmljdGVxICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDYzLjIzNTArLTIuNDg1NyAgICAgICAgICAgNjEuMzcwOSstMS4zOTU3ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDMwNHggZmFzdGVyCiAgIHBvbHltb3JwaGljLWFycmF5LWNhbGwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEuMzg5NCstMC4xMDk2ICAgICA/ICAgICAgMS40NTM0
Ky0wLjE4MDUgICAgICAgID8gbWlnaHQgYmUgMS4wNDYxeCBzbG93ZXIKICAgcG9seW1vcnBoaWMt
Z2V0LWJ5LWlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4yMjMyKy0wLjA5MTkgICAg
ICAgICAgICAyLjIyMjkrLTAuMDkwNCAgICAgICAgCiAgIHBvbHltb3JwaGljLXB1dC1ieS1pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUuMzg3NCstMS42MzM3ICAgICAgICAgICAyNC45
MzM5Ky0wLjIyMTUgICAgICAgICAgbWlnaHQgYmUgMS4wMTgyeCBmYXN0ZXIKICAgcG9seW1vcnBo
aWMtcHV0LWJ5LXZhbC13aXRoLXN0cmluZyAgICAgICAgICAgICAgICAyNi4yMjcyKy0xLjUzNTUg
ICAgICAgICAgIDI1Ljk2OTgrLTEuNTIyNCAgICAgICAgCiAgIHBvbHltb3JwaGljLXB1dC1ieS12
YWwtd2l0aC1zeW1ib2wgICAgICAgICAgICAgICAgMjUuMTU1NSstMC4zNTg0ICAgICA/ICAgICAy
Ni4wNDY3Ky0xLjI3ODIgICAgICAgID8gbWlnaHQgYmUgMS4wMzU0eCBzbG93ZXIKICAgcG9seW1v
cnBoaWMtc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy44MzExKy0xLjA4
MDYgICAgICAgICAgIDEzLjY5OTArLTAuNTgxNSAgICAgICAgCiAgIHBvbHl2YXJpYW50LW1vbm9t
b3JwaGljLWdldC1ieS1pZCAgICAgICAgICAgICAgICAgIDMuODI2MSstMC4xMDg3ICAgICAgICAg
ICAgMy44MTQ4Ky0wLjExNDUgICAgICAgIAogICBwcmV2ZW50LWV4dGVuc2lvbnMtYW5kLWRvLXdv
cmsgICAgICAgICAgICAgICAgICAgIDEzLjU5NjcrLTAuNDMwNSAgICAgICAgICAgMTMuNTY3OSst
MC40MzY2ICAgICAgICAKICAgcHJvdG8tZ2V0dGVyLWFjY2VzcyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxMS43NjM3Ky0wLjQxMzkgICAgID8gICAgIDExLjc3NDArLTAuNTU4MiAgICAg
ICAgPwogICBwcm90b3R5cGUtYWNjZXNzLXdpdGgtbXV0YXRpbmctcHJvdG90eXBlICAgICAgICAg
ICA0Ljg4MzkrLTAuMzk1OSAgICAgPyAgICAgIDUuMDM4MystMC4yOTgwICAgICAgICA/IG1pZ2h0
IGJlIDEuMDMxNnggc2xvd2VyCiAgIHB1dC1ieS1pZC1yZXBsYWNlLWFuZC10cmFuc2l0aW9uICAg
ICAgICAgICAgICAgICAgIDUuNzY2NCstMC40MDQxICAgICA/ICAgICAgNi4wNzQzKy0wLjQ4NDEg
ICAgICAgID8gbWlnaHQgYmUgMS4wNTM0eCBzbG93ZXIKICAgcHV0LWJ5LWlkLXNsaWdodGx5LXBv
bHltb3JwaGljICAgICAgICAgICAgICAgICAgICAgMi41NjQ4Ky0wLjAyNzkgICAgID8gICAgICAy
LjY5MTErLTAuMjM1OCAgICAgICAgPyBtaWdodCBiZSAxLjA0OTJ4IHNsb3dlcgogICBwdXQtYnkt
aWQtdHJhbnNpdGlvbi13aXRoLWluZGV4aW5nLWhlYWRlciAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLjg0MjUrLTAuNTIwNSAgICAgPyAg
ICAgMTQuMDY0MCstMC44Mzk1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE2MHggc2xvd2VyCiAgIHB1
dC1ieS1pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuMTA3Nyst
MC40NDI1ICAgICA/ICAgICAxMS40MTg1Ky0wLjgyMzggICAgICAgID8gbWlnaHQgYmUgMS4wMjgw
eCBzbG93ZXIKICAgcHV0LWJ5LXZhbC1kaXJlY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMC40MzQ4Ky0wLjA0MjMgICAgICAgICAgICAwLjQxNTQrLTAuMDE0OSAgICAgICAgICBt
aWdodCBiZSAxLjA0NjZ4IGZhc3RlcgogICBwdXQtYnktdmFsLWxhcmdlLWluZGV4LWJsYW5rLWlu
ZGV4aW5nLXR5cGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNi43MzE1Ky0wLjM1ODIgICAgID8gICAgICA2Ljc0OTkrLTAuNzE5OSAgICAg
ICAgPwogICBwdXQtYnktdmFsLW1hY2hpbmUtaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzLjMzMDMrLTAuMDg5NiAgICAgPyAgICAgIDMuNDQwNystMC4xNDE5ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDMzMnggc2xvd2VyCiAgIHB1dC1ieS12YWwtd2l0aC1zdHJpbmctcmVwbGFjZS1hbmQt
dHJhbnNpdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEwLjExOTMrLTAuMzU2MSAgICAgPyAgICAgMTAuMjYyNistMC40NzcxICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDE0Mnggc2xvd2VyCiAgIHB1dC1ieS12YWwtd2l0aC1zdHJpbmctc2xp
Z2h0bHktcG9seW1vcnBoaWMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMy4wMDA3Ky0wLjAyMjEgICAgID8gICAgICAzLjAyMzYrLTAuMDQy
MSAgICAgICAgPwogICBwdXQtYnktdmFsLXdpdGgtc3RyaW5nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDExLjY4MzYrLTAuMjU5MiAgICAgICAgICAgMTEuNDI3OCstMC4yNjc3ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDIyNHggZmFzdGVyCiAgIHB1dC1ieS12YWwtd2l0aC1zeW1ib2wtcmVwbGFj
ZS1hbmQtdHJhbnNpdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA5Ljk2NjcrLTAuNTY4NyAgICAgICAgICAgIDkuNjY4NCstMC4zMTIx
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDMwOXggZmFzdGVyCiAgIHB1dC1ieS12YWwtd2l0aC1zeW1i
b2wtc2xpZ2h0bHktcG9seW1vcnBoaWMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMi45NDc1Ky0wLjA5MDYgICAgID8gICAgICAyLjk0Nzkr
LTAuMTM4MyAgICAgICAgPwogICBwdXQtYnktdmFsLXdpdGgtc3ltYm9sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDExLjQ1ODcrLTAuNDcwNiAgICAgPyAgICAgMTEuNTkxOCstMC41MjY2ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDExNnggc2xvd2VyCiAgIHJhcmUtb3NyLWV4aXQtb24tbG9jYWwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMuODQ1OCstMS4yMDI0ICAgICAgICAgICAxMy4w
ODAwKy0xLjY3ODIgICAgICAgICAgbWlnaHQgYmUgMS4wNTg1eCBmYXN0ZXIKICAgcmF5dHJhY2Ut
d2l0aC1lbXB0eS10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAgICAgNS40MDg4Ky0wLjQ1NTgg
ICAgICAgICAgICA1LjI4MjcrLTAuMjc3MSAgICAgICAgICBtaWdodCBiZSAxLjAyMzl4IGZhc3Rl
cgogICByYXl0cmFjZS13aXRoLXRyeS1jYXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICA3
Ljk4MTQrLTAuMDkxNyAgICAgISAgICAgIDguNDQyMCstMC4zMDkzICAgICAgICAhIGRlZmluaXRl
bHkgMS4wNTc3eCBzbG93ZXIKICAgcmVnZXhwLWV4ZWMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA0MS4xNjQ3Ky0xLjQwMTkgICAgICAgICAgIDQwLjQxMTUrLTAuMDg5MiAg
ICAgICAgICBtaWdodCBiZSAxLjAxODZ4IGZhc3RlcgogICByZWdleHAtbGFzdC1pbmRleCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjI1MjcrLTAuNjA1OCAgICAgPyAgICAgMTIu
NDY4MystMC42OTAzICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3Nnggc2xvd2VyCiAgIHJlZ2V4cC1u
ZXN0ZWQtbm9uemVyby1taW4tY291bnRlZC1wYXJlbnMgICAgICAgICAgIDAuMzUxNystMC4wMTk4
ICAgICAgICAgICAgMC4zNDc5Ky0wLjAxMjUgICAgICAgICAgbWlnaHQgYmUgMS4wMTExeCBmYXN0
ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1pcy1ub3QtaW5zdGFuY2UgICAgICAgICAgICAgICAgICAg
MC41MDU2Ky0wLjAyMTUgICAgID8gICAgICAwLjUxNzArLTAuMDMzOSAgICAgICAgPyBtaWdodCBi
ZSAxLjAyMjd4IHNsb3dlcgogICByZWdleHAtcHJvdG90eXBlLXNlYXJjaC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0cyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLjc4MjgrLTAuMDI4MyAgICAgICAgICAgIDAuNzYxNCstMC4wMTkyICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDI4MXggZmFzdGVyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc2VhcmNoLW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzMiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjM4MzcrLTAuMDIwOSAgICAgICAgICAgIDAuMzc2Nyst
MC4wMTI2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE4NnggZmFzdGVyCiAgIHJlZ2V4cC1wcm90b3R5
cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMgICAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4wMzg4Ky0wLjA2MTAgICAgICAgICAg
ICAxLjAyNDQrLTAuMDMzNCAgICAgICAgICBtaWdodCBiZSAxLjAxNDJ4IGZhc3RlcgogICByZWdl
eHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMiAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjQ1MzYrLTAuMDc0
MyAgICAgPyAgICAgIDAuNDYzOCstMC4xNDAyICAgICAgICA/IG1pZ2h0IGJlIDEuMDIyNXggc2xv
d2VyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZs
YWdzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAuNDA1NistMC4wMTYyICAgICAgICAgICAgMC4zOTk2Ky0wLjAxMjYgICAgICAgICAgbWln
aHQgYmUgMS4wMTUyeCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0czMtZ2xvYmFsICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAuNDE0NCstMC4wMDgyICAgICAgICAgICAgMC40MDYzKy0w
LjAyNTAgICAgICAgICAgbWlnaHQgYmUgMS4wMTk5eCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlw
ZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZSAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjQzNjMrLTAuMDQ3
NyAgICAgICAgICAgIDAuNDAzNystMC4wMTY4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDgwOHggZmFz
dGVyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLW11
bHRpbGluZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjQxNzYrLTAuMDE5MiAgICAgICAgICAgIDAuNDExNystMC4wMTg5ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDE0NXggZmFzdGVyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMzLXN0aWNreSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLjQyMDcrLTAuMDMzOCAgICAgICAgICAgIDAuNDA2
OSstMC4wMTI5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDMzOXggZmFzdGVyCiAgIHJlZ2V4cC1wcm90
b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC40MTE4Ky0wLjAx
ODEgICAgICAgICAgICAwLjQwNTUrLTAuMDEyNCAgICAgICAgICBtaWdodCBiZSAxLjAxNTV4IGZh
c3RlcgogICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNCAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LjQxNTkrLTAuMDEzNCAgICAgPyAgICAgIDAuNDI5MistMC4wNDE5ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDMyMXggc2xvd2VyCiAgIHJlZ2V4cC1wcm90b3R5cGUtdGVzdC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0cyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjYxOTMrLTAuMDQ0NiAgICAgPyAgICAgIDAuNjIwMCstMC4wMzc3ICAgICAgICA/
CiAgIHJlZ2V4cC1wcm90b3R5cGUtdGVzdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zOTk3
Ky0wLjAyMjAgICAgID8gICAgICAwLjQwNTcrLTAuMDE4NSAgICAgICAgPyBtaWdodCBiZSAxLjAx
NTF4IHNsb3dlcgogICByZWdleHAtc2V0LWxhc3QtaW5kZXggICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEwLjIzNjgrLTAuMzMwMSAgICAgPyAgICAgMTAuNjAwOCstMC4zNjM3ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDM1Nnggc2xvd2VyCiAgIHJlZ2lzdGVyLXByZXNzdXJlLWZyb20tb3NyICAg
ICAgICAgICAgICAgICAgICAgICAgMTUuMzA1MCstMC4zNzM1ICAgICA/ICAgICAxNi4wNTUxKy0x
LjE2MDYgICAgICAgID8gbWlnaHQgYmUgMS4wNDkweCBzbG93ZXIKICAgcmVwZWF0LW11bHRpLWdl
dC1ieS1vZmZzZXQgICAgICAgICAgICAgICAgICAgICAgICAxNy4zNjAxKy0xLjE2MzkgICAgICAg
ICAgIDE2LjY1NjErLTEuMDM4NCAgICAgICAgICBtaWdodCBiZSAxLjA0MjN4IGZhc3RlcgogICBy
ZXN0LXBhcmFtZXRlci1hbGxvY2F0aW9uLWVsaW1pbmF0aW9uICAgICAgICAgICAgMTkwLjg1NjAr
LTUuNjA0NiAgICAgPyAgICAxOTIuOTA0NSstNy40NjA1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEw
N3ggc2xvd2VyCiAgIHJlc3QtcGFyYW1ldGVyLWNvbnN0cnVjdGlvbi1wZXJmb3JtYW5jZSAgICAg
ICAgICAgMjAuMTI1NistMC41MTQ5ICAgICA/ICAgICAyMC4xODUwKy0wLjQ5NTQgICAgICAgID8K
ICAgcmljaGFyZHMtZW1wdHktdHJ5LWNhdGNoICAgICAgICAgICAgICAgICAgICAgICAgICA1MC40
NTkzKy0wLjIyMDAgICAgID8gICAgIDUwLjYwMTkrLTAuNTQ0NCAgICAgICAgPwogICByaWNoYXJk
cy10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTc3LjUwNTkrLTMuNzIw
OCAgICAgPyAgICAxNzguMjg4NSstMy4yODQyICAgICAgICA/CiAgIHNjb3BlZC1hcmd1bWVudHMt
bGVuZ3RoICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuNzY1NCstMC4yNjkzICAgICA/ICAg
ICAgNy44OTc0Ky0wLjMzODQgICAgICAgID8gbWlnaHQgYmUgMS4wMTcweCBzbG93ZXIKICAgc2Nv
cGVkLWFyZ3VtZW50cy1vdmVycmlkZGVuLWxlbmd0aCAgICAgICAgICAgICAgICAgNy45MDg4Ky0w
LjI2NTMgICAgID8gICAgICA4LjAxNzIrLTAuMjA1OCAgICAgICAgPyBtaWdodCBiZSAxLjAxMzd4
IHNsb3dlcgogICBzY29wZWQtYXJndW1lbnRzLXBvc3NpYmx5LW92ZXJyaWRkZW4tbGVuZ3RoICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgu
MDk2MystMC4zMTIyICAgICA/ICAgICAgOC4yMjk5Ky0wLjM0NTQgICAgICAgID8gbWlnaHQgYmUg
MS4wMTY1eCBzbG93ZXIKICAgc2VhbC1hbmQtZG8td29yayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxMy40NjI1Ky0wLjQ0MjUgICAgID8gICAgIDEzLjkxNzMrLTAuMTMzMyAgICAg
ICAgPyBtaWdodCBiZSAxLjAzMzh4IHNsb3dlcgogICBzZXQtZm9yLWVhY2ggICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyLjAwNjQrLTAuMDQ2NSAgICAgICAgICAgIDEuOTcy
NistMC4wMzQ5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE3MnggZmFzdGVyCiAgIHNldC1mb3Itb2Yg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMTc2MSstMC4xNDg5ICAg
ICA/ICAgICAgNS4xOTQ1Ky0wLjE5NjYgICAgICAgID8KICAgc2V0dGVyLXByb3RvdHlwZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4yNjc5Ky0wLjE4NzUgICAgICAgICAgICA1
LjExOTcrLTAuMDkzNiAgICAgICAgICBtaWdodCBiZSAxLjAyODl4IGZhc3RlcgogICBzZXR0ZXIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjkwMTMrLTAuMDU2
NyAgICAgICAgICAgIDMuODY5NSstMC4wMzg3ICAgICAgICAKICAgc2ltcGxlLWFjdGl2YXRpb24t
ZGVtbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS42MjkzKy0yLjg1NTkgICAgICAgICAg
IDE4LjcwNTIrLTAuNzE1MSAgICAgICAgICBtaWdodCBiZSAxLjA0OTR4IGZhc3RlcgogICBzaW1w
bGUtZ2V0dGVyLWFjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3Ljc4NjMrLTAu
MjczNCAgICAgPyAgICAgMTguNTE0MCstMS4wNzE3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQwOXgg
c2xvd2VyCiAgIHNpbXBsZS1wb2x5LWNhbGwtbmVzdGVkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDQuMTgxNSstMC4yMjQ4ICAgICAgICAgICAgNC4xMTgzKy0wLjE3MzYgICAgICAgICAgbWln
aHQgYmUgMS4wMTUzeCBmYXN0ZXIKICAgc2ltcGxlLXBvbHktY2FsbCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMS40NjIwKy0wLjA4MTYgICAgICAgICAgICAxLjQ0MDArLTAuMDI0
NiAgICAgICAgICBtaWdodCBiZSAxLjAxNTN4IGZhc3RlcgogICBzaW1wbGUtcmVnZXhwLWV4ZWMt
Zm9sZGluZy1mYWlsICAgICAgICAgICAgICAgICAgICAzLjkyMTIrLTAuMTE3OCAgICAgICAgICAg
IDMuODAzNistMC4xMTcxICAgICAgICAgIG1pZ2h0IGJlIDEuMDMwOXggZmFzdGVyCiAgIHNpbXBs
ZS1yZWdleHAtZXhlYy1mb2xkaW5nICAgICAgICAgICAgICAgICAgICAgICAgMTguMzQ2NistMC40
NTg4ICAgICAgICAgICAxOC4wMjU1Ky0wLjI4MTggICAgICAgICAgbWlnaHQgYmUgMS4wMTc4eCBm
YXN0ZXIKICAgc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC13aXRoLWhvaXN0ZWQtcmVn
ZXhwICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTAuNDE2NystMC42NjgwICAgICA/ICAgICAxMC41NDA1Ky0wLjI5MDcgICAgICAgID8gbWln
aHQgYmUgMS4wMTE5eCBzbG93ZXIKICAgc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbCAg
ICAgICAgICAgICAgICAgICAxNi44Nzg5Ky0xLjQ0MjUgICAgICAgICAgIDE2LjMxNTcrLTAuNDg3
NCAgICAgICAgICBtaWdodCBiZSAxLjAzNDV4IGZhc3RlcgogICBzaW1wbGUtcmVnZXhwLXRlc3Qt
Zm9sZGluZy13aXRoLWhvaXN0ZWQtcmVnZXhwICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuMzYxNystMC40NjI4ICAgICA/ICAgICAxMS41
MzUyKy0xLjM1MjggICAgICAgID8gbWlnaHQgYmUgMS4wMTUzeCBzbG93ZXIKICAgc2ltcGxlLXJl
Z2V4cC10ZXN0LWZvbGRpbmcgICAgICAgICAgICAgICAgICAgICAgICAxNy41MTQwKy0wLjY4MjUg
ICAgICAgICAgIDE3LjI4NTcrLTAuMzQ1NSAgICAgICAgICBtaWdodCBiZSAxLjAxMzJ4IGZhc3Rl
cgogICBzaW4tYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3
LjA3NDMrLTAuMjk4OCAgICAgICAgICAgIDcuMDcyNSstMC4yODMxICAgICAgICAKICAgc2luZ2xl
dG9uLXNjb3BlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ny4wNDg3Ky0yLjY3
MjYgICAgID8gICAgIDQ4LjM0MTErLTAuNjM5NyAgICAgICAgPyBtaWdodCBiZSAxLjAyNzV4IHNs
b3dlcgogICBzaW5rLWZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA1Ljg2MzcrLTAuNDEyNiAgICAgICAgICAgIDUuNjkyMCstMC4xODExICAgICAgICAgIG1pZ2h0
IGJlIDEuMDMwMnggZmFzdGVyCiAgIHNpbmstaHVnZS1hY3RpdmF0aW9uICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDkuNzM2NSstMC4yODI2ICAgICA/ICAgICAxMC4yMDE4Ky0wLjgzMTEg
ICAgICAgID8gbWlnaHQgYmUgMS4wNDc4eCBzbG93ZXIKICAgc2lua2FibGUtbmV3LW9iamVjdC1k
YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAzNy45Njc0Ky0xLjQ3MTMgICAgICAgICAgIDM2
Ljc0NjYrLTAuMjU4NiAgICAgICAgICBtaWdodCBiZSAxLjAzMzJ4IGZhc3RlcgogICBzaW5rYWJs
ZS1uZXctb2JqZWN0LXRha2VuICAgICAgICAgICAgICAgICAgICAgICAgIDMyLjQyNzErLTAuNTU5
OSAgICAgPyAgICAgMzIuNDgyMCstMC43NDY2ICAgICAgICA/CiAgIHNpbmthYmxlLW5ldy1vYmpl
Y3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTguMTAyOCstMS4zOTU3ICAgICA/ICAg
ICAxOC40ODM3Ky0xLjY1MzQgICAgICAgID8gbWlnaHQgYmUgMS4wMjEweCBzbG93ZXIKICAgc2xv
dy1hcnJheS1wcm9maWxlLWNvbnZlcmdlbmNlICAgICAgICAgICAgICAgICAgICAgMi43NzkzKy0w
LjEyMTEgICAgID8gICAgICAyLjg3ODArLTAuMTQ0NyAgICAgICAgPyBtaWdodCBiZSAxLjAzNTV4
IHNsb3dlcgogICBzbG93LWNvbnZlcmdlbmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyLjkyMzUrLTAuMDkwMCAgICAgISAgICAgIDMuMTY0NSstMC4wODE2ICAgICAgICAhIGRl
ZmluaXRlbHkgMS4wODI0eCBzbG93ZXIKICAgc2xvdy10ZXJuYXJpZXMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxMy41NDEwKy0wLjYwNzUgICAgICAgICAgIDEzLjI5MjMrLTAu
NTkzMiAgICAgICAgICBtaWdodCBiZSAxLjAxODd4IGZhc3RlcgogICBzb3J0aW5nLWJlbmNobWFy
ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LjY1OTIrLTAuMjk2OSAgICAgISAg
ICAgMjAuNzIzMystMC40NDM5ICAgICAgICAhIGRlZmluaXRlbHkgMS4wNTQxeCBzbG93ZXIKICAg
c3BhcnNlLWNvbmRpdGlvbmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4zMjMw
Ky0wLjAxNTQgICAgID8gICAgICAxLjMyODMrLTAuMDI2OSAgICAgICAgPwogICBzcGFyc2Utc2V0
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU3LjM1MzIrLTEuNzY3NSAg
ICAgICAgICAgNTYuODkzNCstMS42NjQxICAgICAgICAKICAgc3BsaWNlLXRvLXJlbW92ZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNy4yOTE3Ky0xLjIyNzQgICAgICAgICAgIDE2
Ljc5NDMrLTAuOTYyNCAgICAgICAgICBtaWdodCBiZSAxLjAyOTZ4IGZhc3RlcgogICBzcHJlYWQt
bGFyZ2UtYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQyLjU0NjMrLTEuNzcz
OCAgICAgPyAgICAxNDguMzAwNSstMTMuNTIzOCAgICAgICA/IG1pZ2h0IGJlIDEuMDQwNHggc2xv
d2VyCiAgIHN0cmNhdC1jb25zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDUuNDgxNSstMC4xMTgwICAgICA/ICAgICAgNS41MDA4Ky0wLjEwMzMgICAgICAgID8KICAgc3Ry
Y2F0LWxlbmd0aC1jb25zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4zMTI1Ky0w
LjEzMzIgICAgICAgICAgICA1LjI5NDMrLTAuMTM4OCAgICAgICAgCiAgIHN0cmljdC1vc3ItZW50
cnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuOTMzNCstMC41NjkxICAgICAg
ICAgICAxMC41Nzk0Ky0wLjYwMzUgICAgICAgICAgbWlnaHQgYmUgMS4wMzM1eCBmYXN0ZXIKICAg
c3RyaW5nLWFkZC1jb25zdGFudC1mb2xkaW5nICAgICAgICAgICAgICAgICAgICAgIDE1Ni4xNDE0
Ky0wLjU5ODggICAgID8gICAgMTYwLjY4NjYrLTguNTQ5NCAgICAgICAgPyBtaWdodCBiZSAxLjAy
OTF4IHNsb3dlcgogICBzdHJpbmctY2hhci1jb2RlLWF0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE3LjczMDMrLTAuNzMzMiAgICAgPyAgICAgMTcuODI0NSstMC44MjI4ICAgICAgICA/
CiAgIHN0cmluZy1jb25jYXQtY29udmVydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTcu
NTMyMCstMC44MzM3ICAgICAgICAgICA1Ny40MTk1Ky0wLjcwODUgICAgICAgIAogICBzdHJpbmct
Y29uY2F0LWxvbmctY29udmVydCAgICAgICAgICAgICAgICAgICAgICAgIDYzLjE3NzMrLTAuMzc4
NyAgICAgPyAgICAgNjMuNDMxOSstMC41OTA3ICAgICAgICA/CiAgIHN0cmluZy1jb25jYXQtbG9u
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDAuNTU3MSstMi4yNjg5ICAgICAgICAg
ICA0MC4wMjkwKy0zLjIyMzggICAgICAgICAgbWlnaHQgYmUgMS4wMTMyeCBmYXN0ZXIKICAgc3Ry
aW5nLWNvbmNhdC1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4xODI0Ky0w
LjExODYgICAgICAgICAgICAyLjEyOTkrLTAuMDc2MyAgICAgICAgICBtaWdodCBiZSAxLjAyNDZ4
IGZhc3RlcgogICBzdHJpbmctY29uY2F0LXBhaXItb2JqZWN0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAyLjE0NTArLTAuMDk3MSAgICAgPyAgICAgIDIuMTYyOSstMC4xNTY1ICAgICAgICA/CiAg
IHN0cmluZy1jb25jYXQtcGFpci1zaW1wbGUgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMTcz
NCstMC4wNzY3ICAgICAgICAgICAgMy4xMjY5Ky0wLjA0NDEgICAgICAgICAgbWlnaHQgYmUgMS4w
MTQ5eCBmYXN0ZXIKICAgc3RyaW5nLWNvbmNhdC1zaW1wbGUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNS4wNDM3Ky0wLjE2NDMgICAgID8gICAgICA1LjA4NjkrLTAuMTQ1NiAgICAgICAg
PwogICBzdHJpbmctY29uY2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMy
Ljk5OTUrLTAuMjk2NSAgICAgPyAgICAgMzMuNjAxNystMC43NTU5ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDE4Mnggc2xvd2VyCiAgIHN0cmluZy1jb25zLXJlcGVhdCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUuODEwOCstMC4xNzIwICAgICA/ICAgICAgNi4wMjczKy0wLjQ0NjggICAg
ICAgID8gbWlnaHQgYmUgMS4wMzczeCBzbG93ZXIKICAgc3RyaW5nLWNvbnMtdG93ZXIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNC42OTU0Ky0wLjI1MDEgICAgID8gICAgICA1LjA5
MTkrLTAuODQ5OSAgICAgICAgPyBtaWdodCBiZSAxLjA4NDR4IHNsb3dlcgogICBzdHJpbmctZXF1
YWxpdHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjIyNjkrLTAuMzY5NCAg
ICAgICAgICAgMTEuNzkzNSstMC41NzA0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM2N3ggZmFzdGVy
CiAgIHN0cmluZy1mcm9tLWNoYXItY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYu
NzE3OSstMC42OTE4ICAgICAgICAgICAgNi40ODYwKy0wLjE5MTcgICAgICAgICAgbWlnaHQgYmUg
MS4wMzU4eCBmYXN0ZXIKICAgc3RyaW5nLWdldC1ieS12YWwtYmlnLWNoYXIgICAgICAgICAgICAg
ICAgICAgICAgICAgNC41OTI3Ky0wLjEzOTcgICAgID8gICAgICA0LjcxNTArLTAuMTE3OSAgICAg
ICAgPyBtaWdodCBiZSAxLjAyNjZ4IHNsb3dlcgogICBzdHJpbmctZ2V0LWJ5LXZhbC1vdXQtb2Yt
Ym91bmRzLWluc2FuZSAgICAgICAgICAgICA0LjExNTMrLTAuMTEyMyAgICAgPyAgICAgIDQuMTQ3
MystMC4zMTkxICAgICAgICA/CiAgIHN0cmluZy1nZXQtYnktdmFsLW91dC1vZi1ib3VuZHMgICAg
ICAgICAgICAgICAgICAgIDQuOTYzOCstMC4wOTY0ICAgICAgICAgICAgNC45NTUwKy0wLjA5MjUg
ICAgICAgIAogICBzdHJpbmctZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyLjA5MDgrLTAuMDI5NyAgICAgPyAgICAgIDIuMTA2OCstMC4wMjcyICAgICAgICA/CiAg
IHN0cmluZy1oYXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMTI3
MystMC4wNDQwICAgICA/ICAgICAgMi4xNDc5Ky0wLjAzNzkgICAgICAgID8KICAgc3RyaW5nLWxv
bmctaWRlbnQtZXF1YWxpdHkgICAgICAgICAgICAgICAgICAgICAgICAyMC41MzMyKy0xLjc3Mjcg
ICAgIF4gICAgICA5LjEyODMrLTAuNDQ2NCAgICAgICAgXiBkZWZpbml0ZWx5IDIuMjQ5NHggZmFz
dGVyCiAgIHN0cmluZy1vdXQtb2YtYm91bmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MTAuOTAyNSstMC45MTg3ICAgICAgICAgICAxMC40NDU0Ky0wLjM3NjMgICAgICAgICAgbWlnaHQg
YmUgMS4wNDM4eCBmYXN0ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC44NTUxKy0wLjAxOTYgICAgID8gICAgICAwLjkxNzgrLTAuMDcyMyAgICAg
ICAgPyBtaWdodCBiZSAxLjA3MzN4IHNsb3dlcgogICBzdHJpbmctcHJvdG90eXBlLXNlYXJjaC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMC40NTQ2Ky0wLjAxOTcgICAgID8gICAgICAwLjQ1NTMr
LTAuMDE5MCAgICAgICAgPwogICBzdHJpbmctcHJvdG90eXBlLXNlYXJjaC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC40Mzc3Ky0wLjAxMTQgICAgID8gICAgICAwLjQ1MzgrLTAuMDM5MCAgICAg
ICAgPyBtaWdodCBiZSAxLjAzNjZ4IHNsb3dlcgogICBzdHJpbmctcHJvdG90eXBlLXNlYXJjaC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMC40NTk4Ky0wLjA0MzUgICAgICAgICAgICAwLjQ1MjUr
LTAuMDEzNiAgICAgICAgICBtaWdodCBiZSAxLjAxNjB4IGZhc3RlcgogICBzdHJpbmctcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMzQ0MSstMC4xNzUwICAgICAgICAg
ICAgMS4zMDY2Ky0wLjEzNzMgICAgICAgICAgbWlnaHQgYmUgMS4wMjg3eCBmYXN0ZXIKICAgc3Ry
aW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC40NjU5Ky0wLjAw
NzMgICAgID8gICAgICAwLjQ2OTErLTAuMDE0OSAgICAgICAgPwogICBzdHJpbmctcHJvdG90eXBl
LXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1mbGFncyAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjUyMzIrLTAuMDk2OSAgICAg
ICAgICAgIDAuNDY3NSstMC4wMTE4ICAgICAgICAgIG1pZ2h0IGJlIDEuMTE5MXggZmFzdGVyCiAg
IHN0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbCAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LjQ4NjQrLTAuMDE3OSAgICAgPyAgICAgIDAuNDg4NystMC4wNDU3ICAgICAgICA/CiAgIHN0cmlu
Zy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC40
NjQxKy0wLjAxMjIgICAgID8gICAgICAwLjQ4ODErLTAuMDIzOCAgICAgICAgPyBtaWdodCBiZSAx
LjA1MTl4IHNsb3dlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1l
ZmZlY3RzMy1tdWx0aWxpbmUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC40NzY4Ky0wLjAwOTcgICAgICAgICAgICAwLjQ3MzQrLTAuMDEy
NCAgICAgICAgCiAgIHN0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVj
dHMzLXN0aWNreSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLjQ4ODcrLTAuMDQxOCAgICAgICAgICAgIDAuNDY0MystMC4wMTA4ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDUyNHggZmFzdGVyCiAgIHN0cmluZy1wcm90b3R5cGUtc3BsaXQtb2Jz
ZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC41MjUxKy0wLjEwNTcgICAgICAgICAgICAw
LjQ5MTcrLTAuMDUxNyAgICAgICAgICBtaWdodCBiZSAxLjA2Nzl4IGZhc3RlcgogICBzdHJpbmct
cHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNCAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjQ5MTUrLTAuMDE4MSAg
ICAgICAgICAgIDAuNDc0MSstMC4wMTI5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM2N3ggZmFzdGVy
CiAgIHN0cmluZy1yZXBlYXQtYXJpdGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjIu
NjEyOSstMS40MzMxICAgICAgICAgICAyMi4zMjYzKy0xLjUyODggICAgICAgICAgbWlnaHQgYmUg
MS4wMTI4eCBmYXN0ZXIKICAgc3RyaW5nLXJlcGVhdC1ub3QtcmVzb2x2aW5nLWZpeGVkICAgICAg
ICAgICAgICAgICAgMy4wMjM1Ky0wLjEwOTkgICAgICAgICAgICAyLjk1NTErLTAuMDYxOSAgICAg
ICAgICBtaWdodCBiZSAxLjAyMzF4IGZhc3RlcgogICBzdHJpbmctcmVwZWF0LW5vdC1yZXNvbHZp
bmctbm8taW5saW5lICAgICAgICAgICAgICAzLjUyNDgrLTAuMTQ0NyAgICAgPyAgICAgIDMuNzc4
MistMC4xNzQ0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDcxOXggc2xvd2VyCiAgIHN0cmluZy1yZXBl
YXQtbm90LXJlc29sdmluZyAgICAgICAgICAgICAgICAgICAgICAgIDMuODMwMSstMC4xMTc5ICAg
ICAgICAgICAgMy43OTkwKy0wLjI2MTAgICAgICAgIAogICBzdHJpbmctcmVwZWF0LXJlc29sdmlu
Zy1maXhlZCAgICAgICAgICAgICAgICAgICAgIDIxLjcyNjMrLTEuMzE4NiAgICAgICAgICAgMjAu
NDg2OSstMS4yNzY1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDYwNXggZmFzdGVyCiAgIHN0cmluZy1y
ZXBlYXQtcmVzb2x2aW5nLW5vLWlubGluZSAgICAgICAgICAgICAgICAgMjcuMTE2NCstMC4zMjUz
ICAgICA/ICAgICAyOC4wNjcyKy0xLjI2ODkgICAgICAgID8gbWlnaHQgYmUgMS4wMzUxeCBzbG93
ZXIKICAgc3RyaW5nLXJlcGVhdC1yZXNvbHZpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAy
Ny40MzY0Ky0xLjA1MjAgICAgICAgICAgIDI3LjIzNDQrLTAuNTgzOSAgICAgICAgCiAgIHN0cmlu
Zy1yZXBlYXQtc2luZ2xlLW5vdC1yZXNvbHZpbmcgICAgICAgICAgICAgICAgIDguMTg0NCstMS4x
NDU2ICAgICAgICAgICAgNy4xOTc4Ky0wLjU3NDAgICAgICAgICAgbWlnaHQgYmUgMS4xMzcxeCBm
YXN0ZXIKICAgc3RyaW5nLXJlcGVhdC1zaW5nbGUtcmVzb2x2aW5nICAgICAgICAgICAgICAgICAg
ICAgNy4xNTc4Ky0wLjE3MjYgICAgID8gICAgICA3LjYwODIrLTAuNjAwOCAgICAgICAgPyBtaWdo
dCBiZSAxLjA2Mjl4IHNsb3dlcgogICBzdHJpbmctcmVwZWF0LXNtYWxsLW5vdC1yZXNvbHZpbmcg
ICAgICAgICAgICAgICAgICAyLjk5NzgrLTAuMDc2NiAgICAgICAgICAgIDIuOTcwMSstMC4wODY1
ICAgICAgICAKICAgc3RyaW5nLXJlcGVhdC1zbWFsbC1yZXNvbHZpbmcgICAgICAgICAgICAgICAg
ICAgICAyOC41MTMwKy0yLjA5MTEgICAgICAgICAgIDI3LjU0MTcrLTAuNTI3MyAgICAgICAgICBt
aWdodCBiZSAxLjAzNTN4IGZhc3RlcgogICBzdHJpbmctcmVwbGFjZS1lbXB0eSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA5LjY0NTMrLTAuMzI1MSAgICAgICAgICAgIDkuNDM2NistMC4y
MjY4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIyMXggZmFzdGVyCiAgIHN0cmluZy1yZXBsYWNlLWdl
bmVyaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDguMDU4MystMS4yNzAxICAgICAgICAg
ICA0Ny41Mjc1Ky0xLjM5MDQgICAgICAgICAgbWlnaHQgYmUgMS4wMTEyeCBmYXN0ZXIKICAgc3Ry
aW5nLXJlcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS43NzExKy0w
LjQ4MzEgICAgICAgICAgICA5Ljc0MDIrLTAuMzQ2MSAgICAgICAgCiAgIHN0cmluZy1yb3BlLXdp
dGgtb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTguOTM3OSstMC43MTg2ICAgICA/
ICAgICAxOS44MTM0Ky0xLjQzOTEgICAgICAgID8gbWlnaHQgYmUgMS4wNDYyeCBzbG93ZXIKICAg
c3RyaW5nLXN1YiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MC40Nzgw
Ky0xLjI5NzcgICAgIF4gICAgIDM3LjM5MTMrLTEuNjcxMiAgICAgICAgXiBkZWZpbml0ZWx5IDEu
MDgyNnggZmFzdGVyCiAgIHN0cmluZy10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDMuMDc4NSstMC4wMjcxICAgICA/ICAgICAgMy4xMDU1Ky0wLjA3MzQgICAgICAg
ID8KICAgc3RyaW5nLXRyYW5zY29kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
Ni4xOTkyKy0wLjY3MzIgICAgID8gICAgIDE3Ljg2MTYrLTEuMDQwNCAgICAgICAgPyBtaWdodCBi
ZSAxLjEwMjZ4IHNsb3dlcgogICBzdHJpbmctdmFyLWVxdWFsaXR5ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDI3LjU2NzMrLTEuODQyMyAgICAgICAgICAgMjYuOTEyMSstMC44ODcwICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDI0M3ggZmFzdGVyCiAgIHN0cmluZ2FsbG9jICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgODIuNDU4OSstMC44MDg4ICAgICA/ICAgICA4My4x
MTgzKy0xLjE2MjQgICAgICAgID8KICAgc3RydWN0dXJlLWhvaXN0LW92ZXItdHJhbnNpdGlvbnMg
ICAgICAgICAgICAgICAgICAgMi44MzA0Ky0wLjA4MjUgICAgID8gICAgICAyLjg1NDErLTAuMDcx
NCAgICAgICAgPwogICBzdWJzdHJpbmctY29uY2F0LXdlaXJkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDM4LjY0NDkrLTAuMzcyNyAgICAgPyAgICAgMzkuNDQwMSstMS41NTU5ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDIwNnggc2xvd2VyCiAgIHN1YnN0cmluZy1jb25jYXQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNDMuODk2NSstMC4zMjI2ICAgICAgICAgICA0My44ODY4Ky0w
LjQ1OTYgICAgICAgIAogICBzdWJzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDUyLjYwMzMrLTAuMTk0MCAgICAgPyAgICAgNTQuMDAwOCstMi4xMDY4ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDI2Nnggc2xvd2VyCiAgIHN1cGVyLWdldC1ieS1pZC13aXRoLXRoaXMt
bW9ub21vcnBoaWMgICAgICAgICAgICAgMTkuMTU2OCstMC4yODQzICAgICAhICAgICAyMC4xODk3
Ky0wLjI4MzUgICAgICAgICEgZGVmaW5pdGVseSAxLjA1Mzl4IHNsb3dlcgogICBzdXBlci1nZXQt
YnktaWQtd2l0aC10aGlzLXBvbHltb3JwaGljICAgICAgICAgICAgIDE3Ljc3NjgrLTAuMjkwOCAg
ICAgPyAgICAgMTguNDg2MCstMC44NTQ2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM5OXggc2xvd2Vy
CiAgIHN1cGVyLWdldC1ieS12YWwtd2l0aC10aGlzLW1vbm9tb3JwaGljICAgICAgICAgICAgMjUu
MDMzMistMC44MDU5ICAgICA/ICAgICAyNS42MTk1Ky0wLjI5NTAgICAgICAgID8gbWlnaHQgYmUg
MS4wMjM0eCBzbG93ZXIKICAgc3VwZXItZ2V0LWJ5LXZhbC13aXRoLXRoaXMtcG9seW1vcnBoaWMg
ICAgICAgICAgICAyMy4xNDM2Ky0wLjczMTYgICAgICAgICAgIDIzLjAzMzkrLTAuNTU3MSAgICAg
ICAgCiAgIHN1cGVyLWdldHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MzAuMTA4MCstMC43MTE4ICAgICA/ICAgICAzMC4xMjA3Ky0xLjY1NDggICAgICAgID8KICAgc3dp
dGNoLWNoYXItY29uc3RhbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4xODY2Ky0w
LjA0MDggICAgID8gICAgICAyLjE5MjUrLTAuMDQxNCAgICAgICAgPwogICBzd2l0Y2gtY2hhciAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjA1MTUrLTAuMTAzMCAgICAg
PyAgICAgIDUuMjA5NCstMC40NDk0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMxM3ggc2xvd2VyCiAg
IHN3aXRjaC1jb25zdGFudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMDMy
MystMC4xODc1ICAgICAgICAgICAgNC45NzA4Ky0wLjE5NTQgICAgICAgICAgbWlnaHQgYmUgMS4w
MTI0eCBmYXN0ZXIKICAgc3dpdGNoLXN0cmluZy1iYXNpYy1iaWctdmFyICAgICAgICAgICAgICAg
ICAgICAgICAxNi4xNjc0Ky0xLjA2MDIgICAgID8gICAgIDE2LjQyMjArLTEuMzk1NyAgICAgICAg
PyBtaWdodCBiZSAxLjAxNTd4IHNsb3dlcgogICBzd2l0Y2gtc3RyaW5nLWJhc2ljLWJpZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEyLjM4NzYrLTAuNzA1MyAgICAgICAgICAgMTEuOTIyMyst
MC40MzQwICAgICAgICAgIG1pZ2h0IGJlIDEuMDM5MHggZmFzdGVyCiAgIHN3aXRjaC1zdHJpbmct
YmFzaWMtdmFyICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUuNDA2NCstMC4zNTcxICAgICA/
ICAgICAxNS42MjIyKy0wLjIxNjQgICAgICAgID8gbWlnaHQgYmUgMS4wMTQweCBzbG93ZXIKICAg
c3dpdGNoLXN0cmluZy1iYXNpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi40MzEx
Ky0xLjM4MjQgICAgICAgICAgIDExLjUzNDUrLTAuMjM0MyAgICAgICAgICBtaWdodCBiZSAxLjA3
Nzd4IGZhc3RlcgogICBzd2l0Y2gtc3RyaW5nLWJpZy1sZW5ndGgtdG93ZXItdmFyICAgICAgICAg
ICAgICAgIDIwLjM0MTUrLTEuMTY1MyAgICAgICAgICAgMTkuNTA0NSstMC4yNjMwICAgICAgICAg
IG1pZ2h0IGJlIDEuMDQyOXggZmFzdGVyCiAgIHN3aXRjaC1zdHJpbmctbGVuZ3RoLXRvd2VyLXZh
ciAgICAgICAgICAgICAgICAgICAgMTUuODE5NCstMC41ODA1ICAgICAgICAgICAxNS4xOTc5Ky0w
LjUzNjEgICAgICAgICAgbWlnaHQgYmUgMS4wNDA5eCBmYXN0ZXIKICAgc3dpdGNoLXN0cmluZy1s
ZW5ndGgtdG93ZXIgICAgICAgICAgICAgICAgICAgICAgICAxMS4xNjYzKy0wLjIyNTMgICAgID8g
ICAgIDExLjUyNTQrLTAuNDY0NiAgICAgICAgPyBtaWdodCBiZSAxLjAzMjJ4IHNsb3dlcgogICBz
d2l0Y2gtc3RyaW5nLXNob3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjM2OTAr
LTAuMzQwNyAgICAgPyAgICAgMTEuNDQ4OSstMC40MTMzICAgICAgICA/CiAgIHN3aXRjaCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMTg0NistMC4yNzY4ICAg
ICA/ICAgICAgNi4yNDkzKy0wLjEzNDkgICAgICAgID8gbWlnaHQgYmUgMS4wMTA1eCBzbG93ZXIK
ICAgc3dpdGNoaW5nLXNpemUtY2xhc3NlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNi40
OTY1Ky0wLjEzMDMgICAgICAgICAgIDI2LjM3NzUrLTAuMTc3MCAgICAgICAgCiAgIHN5bWJvbC10
b3N0cmluZ3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuODY3MCstMC4xMjQy
ICAgICA/ICAgICAgMi44ODIyKy0wLjEwNzcgICAgICAgID8KICAgdGFuICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3Mi43MzA0Ky0yLjEyNDMgICAgICAgICAg
IDcxLjQ0NjArLTAuMTkyMSAgICAgICAgICBtaWdodCBiZSAxLjAxODB4IGZhc3RlcgogICB0ZWFy
LW9mZi1hcmd1bWVudHMtc2ltcGxlICAgICAgICAgICAgICAgICAgICAgICAgICAyLjY3OTUrLTAu
MTE0MCAgICAgICAgICAgIDIuNjc1MistMC4wNjY5ICAgICAgICAKICAgdGVhci1vZmYtYXJndW1l
bnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy41MTIwKy0wLjIyOTIgICAgICAg
ICAgICAzLjM4NzkrLTAuMTE2MSAgICAgICAgICBtaWdodCBiZSAxLjAzNjZ4IGZhc3RlcgogICB0
ZW1wbGF0ZS1zdHJpbmctYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjQ3MzMr
LTAuMjU4OCAgICAgPyAgICAgIDUuNTQ4OSstMC4zNDk5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEz
OHggc2xvd2VyCiAgIHRlbXBvcmFsLXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTIuNzY4NSstMC44ODUzICAgICA/ICAgICAxMy4wOTAxKy0xLjA3NjQgICAgICAgID8g
bWlnaHQgYmUgMS4wMjUyeCBzbG93ZXIKICAgdG8taW50MzItYm9vbGVhbiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxMi44MjEyKy0wLjI5NzggICAgID8gICAgIDEzLjM0ODErLTAu
ODc3OSAgICAgICAgPyBtaWdodCBiZSAxLjA0MTF4IHNsb3dlcgogICB0by1sb3dlci1jYXNlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA3LjcwNTUrLTEuNTExNSAgICAgICAg
ICAxMDcuMzk0MSstMS44OTM5ICAgICAgICAKICAgdG8tbnVtYmVyLWNvbnN0cnVjdG9yLW51bWJl
ci1zdHJpbmctbnVtYmVyLXN0cmluZyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAzLjcxNTcrLTAuMTQ1NSAgICAgICAgICAgIDMuNjY1Nist
MC4wNTA4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzN3ggZmFzdGVyCiAgIHRvLW51bWJlci1jb25z
dHJ1Y3Rvci1vbmx5LW51bWJlciAgICAgICAgICAgICAgICAgIDAuNzQxMystMC4wMjE4ICAgICA/
ICAgICAgMC43NjI2Ky0wLjAyNTAgICAgICAgID8gbWlnaHQgYmUgMS4wMjg3eCBzbG93ZXIKICAg
dG8tbnVtYmVyLWNvbnN0cnVjdG9yLW9ubHktc3RyaW5nICAgICAgICAgICAgICAgICAgMS44NTQ1
Ky0wLjAzNzUgICAgID8gICAgICAxLjg2MzUrLTAuMDQ1NyAgICAgICAgPwogICB0by1udW1iZXIt
Y29uc3RydWN0b3Itc3RyaW5nLW51bWJlci1zdHJpbmctbnVtYmVyICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMDM3OSstMC4wNjg5ICAg
ICA/ICAgICAgMy4xMDkxKy0wLjExNTYgICAgICAgID8gbWlnaHQgYmUgMS4wMjM0eCBzbG93ZXIK
ICAgdG8tbnVtYmVyLW51bWJlci1zdHJpbmctbnVtYmVyLXN0cmluZyAgICAgICAgICAgICAgMy4x
OTE1Ky0wLjEwODkgICAgICAgICAgICAzLjE0MDYrLTAuMDQ4NiAgICAgICAgICBtaWdodCBiZSAx
LjAxNjJ4IGZhc3RlcgogICB0by1udW1iZXItb25seS1udW1iZXIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLjY1NTMrLTAuMDM3NCAgICAgPyAgICAgIDAuNjc0NistMC4wMjQxICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDI5NHggc2xvd2VyCiAgIHRvLW51bWJlci1vbmx5LXN0cmluZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEuNzg0NistMC4wMzM2ICAgICAgICAgICAgMS43Nzk1
Ky0wLjA0OTUgICAgICAgIAogICB0by1udW1iZXItc3RyaW5nLW51bWJlci1zdHJpbmctbnVtYmVy
ICAgICAgICAgICAgICAyLjk5NDMrLTAuMDQzNyAgICAgPyAgICAgIDMuMDUyMistMC4xNDU3ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDE5NHggc2xvd2VyCiAgIHRyeS1jYXRjaC1nZXQtYnktdmFsLWNs
b25lZC1hcmd1bWVudHMgICAgICAgICAgICAgIDQuODY2NistMC4yMzE2ICAgICA/ICAgICAgNC45
NDk4Ky0wLjE3NzIgICAgICAgID8gbWlnaHQgYmUgMS4wMTcxeCBzbG93ZXIKICAgdHJ5LWNhdGNo
LWdldC1ieS12YWwtZGlyZWN0LWFyZ3VtZW50cyAgICAgICAgICAgICAgMi4zNDIzKy0wLjA4MTUg
ICAgICAgICAgICAyLjMyNzYrLTAuMDkwMCAgICAgICAgCiAgIHRyeS1jYXRjaC1nZXQtYnktdmFs
LXNjb3BlZC1hcmd1bWVudHMgICAgICAgICAgICAgIDUuMDYzNistMC4yNjUzICAgICA/ICAgICAg
NS4yMDkyKy0wLjMzMjYgICAgICAgID8gbWlnaHQgYmUgMS4wMjg4eCBzbG93ZXIKICAgdHJ5LWNh
dGNoLXdvcmQtY291bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMy42MzUwKy0wLjMw
NzYgICAgID8gICAgIDM0Ljg3OTArLTEuODA5NSAgICAgICAgPyBtaWdodCBiZSAxLjAzNzB4IHNs
b3dlcgogICB0cnktZ2V0LWJ5LWlkLWJhc2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA1Ljk2NTArLTAuMjE2MSAgICAgICAgICAgIDUuOTE1NistMC4xODQ2ICAgICAgICAKICAgdHJ5
LWdldC1ieS1pZC1wb2x5bW9ycGhpYyAgICAgICAgICAgICAgICAgICAgICAgICAgNy4wNTY1Ky0w
LjE1NzcgICAgID8gICAgICA3LjE0NTYrLTAuMDg3MiAgICAgICAgPyBtaWdodCBiZSAxLjAxMjZ4
IHNsb3dlcgogICB0eXBlZC1hcnJheS1nZXQtc2V0LWJ5LXZhbC1wcm9maWxpbmcgICAgICAgICAg
ICAgIDIwLjc3NTIrLTAuMjU5MiAgICAgPyAgICAgMjAuOTMyMistMC42ODA0ICAgICAgICA/CiAg
IHR5cGVkLWFycmF5LXN1YmFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzkuNDI5
MistMi41NDI1ICAgICA/ICAgICA0MC4wOTU2Ky0yLjc4NDMgICAgICAgID8gbWlnaHQgYmUgMS4w
MTY5eCBzbG93ZXIKICAgdW5kZWZpbmVkLXByb3BlcnR5LWFjY2VzcyAgICAgICAgICAgICAgICAg
ICAgICAgIDIxMi43NjEwKy00LjEzNjYgICAgICAgICAgMjExLjQyMjgrLTIuMzE5MSAgICAgICAg
CiAgIHVuZGVmaW5lZC10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMu
MzMzOSstMC4xMTQwICAgICAgICAgICAgMy4yNTc3Ky0wLjA1MjAgICAgICAgICAgbWlnaHQgYmUg
MS4wMjM0eCBmYXN0ZXIKICAgdW5wcm9maWxlZC1saWNtICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNi41MzU1Ky0wLjM1NTkgICAgID8gICAgICA2LjY4NDArLTAuMjM4OCAgICAg
ICAgPyBtaWdodCBiZSAxLjAyMjd4IHNsb3dlcgogICB1bnR5cGVkLXN0cmluZy1mcm9tLWNoYXIt
Y29kZSAgICAgICAgICAgICAgICAgICAgIDEwLjgzMDcrLTAuMzg0MCAgICAgPyAgICAgMTAuODcz
NystMC4zNDY3ICAgICAgICA/CiAgIHY4LXJheXRyYWNlLXdpdGgtZW1wdHktdHJ5LWNhdGNoICAg
ICAgICAgICAgICAgICAgMzQuOTExMCstMS42NjEwICAgICAgICAgICAzNC4wODI5Ky0xLjA4MjUg
ICAgICAgICAgbWlnaHQgYmUgMS4wMjQzeCBmYXN0ZXIKICAgdjgtcmF5dHJhY2Utd2l0aC10cnkt
Y2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICA1MS42MTMwKy0xLjA5MTYgICAgID8gICAgIDUy
LjUxNzkrLTAuMzQwMiAgICAgICAgPyBtaWdodCBiZSAxLjAxNzV4IHNsb3dlcgogICB2OC1yZWdl
eHAtc2VhcmNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUwLjEyMDArLTAuNDk2
MSAgICAgICAgICAgNTAuMDgwOCstMC42ODc5ICAgICAgICAKICAgdmFyYXJncy1jYWxsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi40MTU3Ky0wLjI0MDUgICAgID8gICAg
IDEyLjczNzIrLTAuNTQ2OCAgICAgICAgPyBtaWdodCBiZSAxLjAyNTl4IHNsb3dlcgogICB2YXJh
cmdzLWNvbnN0cnVjdC1pbmxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LjM4NzUrLTAu
OTY2MyAgICAgICAgICAgMTUuODI3MystMC4zNzI4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM1NHgg
ZmFzdGVyCiAgIHZhcmFyZ3MtY29uc3RydWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTkuMjIzMCstMC45NjQ1ICAgICA/ICAgICAxOS40NTYyKy0xLjUxMzAgICAgICAgID8gbWln
aHQgYmUgMS4wMTIxeCBzbG93ZXIKICAgdmFyYXJncy1pbmxpbmUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNy40MDMwKy0wLjMxNjIgICAgICAgICAgICA3LjI4MzMrLTAuMjQ2
OCAgICAgICAgICBtaWdodCBiZSAxLjAxNjR4IGZhc3RlcgogICB2YXJhcmdzLXN0cmljdC1tb2Rl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjI3NTkrLTAuNDM5NCAgICAgPyAgICAg
IDguNDk0MSstMC40MTI1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI2NHggc2xvd2VyCiAgIHZhcmFy
Z3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguMzg1NystMC40
MzkzICAgICAgICAgICAgOC4zMTM2Ky0wLjI4NjkgICAgICAgIAogICB3ZWlyZC1pbmxpbmluZy1j
b25zdC1wcm9wICAgICAgICAgICAgICAgICAgICAgICAgICAyLjIxMzQrLTAuMTMyNyAgICAgICAg
ICAgIDIuMDUzMystMC4xMDU3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDc4MHggZmFzdGVyCgogICA8
Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjEzNDYr
LTAuMDIyNSAgICAgPyAgICAgIDguMTM3NSstMC4wMjE5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDAw
NHggc2xvd2VyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIApBc21CZW5jaDoKICAgYmlnZmliLmNwcCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ2Mi42ODM4Ky0zLjQzMDEgICAgID8gICAg
NDY0LjgxMTErLTguNDkyMSAgICAgICAgPwogICBjcmF5LmMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMzg0LjU1NDErLTIuNzk4OCAgICAgPyAgICAzODQuNjg5Mist
My41NjAyICAgICAgICA/CiAgIGRyeS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0MjYuMzQ3MystMy44OTczICAgICAgICAgIDQyNS40Mjg3Ky00LjM3MjEgICAg
ICAgIAogICBGbG9hdE1NLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NjU5Ljk5MDQrLTMuNTQ0OCAgICAgPyAgICA2NjAuNjgxMistMi41ODkxICAgICAgICA/CiAgIGdj
Yy1sb29wcy5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM2NjUuNjE5Mist
MzEuNTMzMSAgICA/ICAgMzY3OS44MTM4Ky0xOC4yNzg3ICAgICAgID8KICAgbi1ib2R5LmMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgxNy44NTg5Ky02LjY3NzUgICAg
ICAgICAgODE1LjAyOTArLTQuNzkwNiAgICAgICAgCiAgIFF1aWNrc29ydC5jICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzOTAuNjc0OCstMy42NjU3ICAgICA/ICAgIDM5NC43
NDM3Ky0yLjY4MTQgICAgICAgID8gbWlnaHQgYmUgMS4wMTA0eCBzbG93ZXIKICAgc3RlcGFub3Zf
Y29udGFpbmVyLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgMzI5NC42MTMwKy00My41Mzg5
ICAgICAgICAzMjg1LjYyNzgrLTI2LjY3OTYgICAgICAgCiAgIFRvd2Vycy5jICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNDUuNTMzOCstMi4yMzU3ICAgICAgICAgIDI0
NC4yMDc0Ky0xLjg4MTkgICAgICAgIAoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDcxMi42NjExKy0yLjgzMzIgICAgID8gICAgNzEzLjE2OTErLTIu
OTkxNiAgICAgICAgPyBtaWdodCBiZSAxLjAwMDd4IHNsb3dlcgoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlICAgICAgICAgICAg
ICAgICAgICAgIG5ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKQ29t
cHJlc3Npb25CZW5jaDoKICAgaHVmZm1hbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyMC42NzIxKy0wLjk1NzcgICAgICAgICAgIDIwLjQyMTgrLTEuMDEyMyAgICAg
ICAgICBtaWdodCBiZSAxLjAxMjN4IGZhc3RlcgogICBhcml0aG1ldGljLXNpbXBsZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMjY5LjYyNzYrLTEuNjYzNCAgICAgICAgICAyNjguMjU5
NistMS4zNDg4ICAgICAgICAKICAgYXJpdGhtZXRpYy1wcmVjaXNlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDI0OC4yOTc3Ky01LjQ2OTQgICAgICAgICAgMjQ1Ljk1NjArLTkuNjIwMiAg
ICAgICAgCiAgIGFyaXRobWV0aWMtY29tcGxleC1wcmVjaXNlICAgICAgICAgICAgICAgICAgICAg
ICAyNjUuNDM4MSstMTUuMjYyMCAgICA/ICAgIDI3Mi4xNzY3Ky05LjQzNTggICAgICAgID8gbWln
aHQgYmUgMS4wMjU0eCBzbG93ZXIKICAgYXJpdGhtZXRpYy1wcmVjaXNlLW9yZGVyLTAgICAgICAg
ICAgICAgICAgICAgICAgIDI4Ny4xNzY4Ky0yLjA2NDEgICAgID8gICAgMjg3LjYzMDYrLTMuNjYz
NiAgICAgICAgPwogICBhcml0aG1ldGljLXByZWNpc2Utb3JkZXItMSAgICAgICAgICAgICAgICAg
ICAgICAgMzA1LjA1ODkrLTQuNTAxMCAgICAgICAgICAyOTcuNzIwOCstNC45NzIxICAgICAgICAg
IG1pZ2h0IGJlIDEuMDI0NnggZmFzdGVyCiAgIGFyaXRobWV0aWMtcHJlY2lzZS1vcmRlci0yICAg
ICAgICAgICAgICAgICAgICAgICAzNDcuODk5OCstMS4yNDAzICAgICA/ICAgIDM1NC4xNTM0Ky0x
Ni4yNjY0ICAgICAgID8gbWlnaHQgYmUgMS4wMTgweCBzbG93ZXIKICAgYXJpdGhtZXRpYy1zaW1w
bGUtb3JkZXItMSAgICAgICAgICAgICAgICAgICAgICAgIDMxNy4xODM2Ky0zLjU4MDIgICAgID8g
ICAgMzE4Ljk1NTIrLTUuNTc5MSAgICAgICAgPwogICBhcml0aG1ldGljLXNpbXBsZS1vcmRlci0y
ICAgICAgICAgICAgICAgICAgICAgICAgMzY5LjcyMzIrLTUuOTE5NiAgICAgICAgICAzNjUuOTAw
MistMi40MjY5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEwNHggZmFzdGVyCiAgIGx6LXN0cmluZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMzkuMDQ1MystNC4wMzM1ICAg
ICA/ICAgIDI0MS45MTQyKy01LjI4NDUgICAgICAgID8gbWlnaHQgYmUgMS4wMTIweCBzbG93ZXIK
CiAgIDxnZW9tZXRyaWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMjMu
NjEwNCstMS4yNTg4ICAgICA/ICAgIDIyMy42MTE2Ky0yLjM3MjggICAgICAgID8gbWlnaHQgYmUg
MS4wMDAweCBzbG93ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYmFzZSAgICAgICAgICAgICAgICAgICAgICBuZXcgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgClNpeFNwZWVkOgogICB0ZW1wbGF0ZV9zdHJp
bmcuZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1NzkxLjY5NzYrLTgxLjc1MzkgICAg
PyAgIDU4MDMuMjA3OSstMTA5LjMxODEgICAgICA/CiAgIHRlbXBsYXRlX3N0cmluZy5lczYgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDM2MDkuMDIxNistNDUuODU3MSAgICAgICAgMzYwNi40
MzI2Ky0yOC40NDM4ICAgICAgIAogICBkZWZhdWx0cy5lczUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMzQ1LjA1ODArLTMuNTIxMiAgICAgPyAgICAzNDcuODAzMCstNC41Nzkx
ICAgICAgICA/CiAgIGRlZmF1bHRzLmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzNDYuNzM0MCstNS4xNzgxICAgICAgICAgIDM0Ni43MDQwKy00LjM5NTUgICAgICAgIAog
ICBtYXAtc2V0LWxvb2t1cC5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYyLjgx
NDYrLTEuNzE5MyAgICAgICAgICAgNjEuNzAxOCstMS4xNTU5ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDE4MHggZmFzdGVyCiAgIG1hcC1zZXQtbG9va3VwLmVzNiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEuNDE0NistMC41NzQxICAgICA/ICAgICAgMS41MTIxKy0wLjU0MjEgICAgICAg
ID8gbWlnaHQgYmUgMS4wNjkweCBzbG93ZXIKICAgc3ByZWFkLmVzNSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxMy44Njc4Ky0wLjU2NjAgICAgID8gICAgIDE0LjQyNDAr
LTAuNjE0OCAgICAgICAgPyBtaWdodCBiZSAxLjA0MDF4IHNsb3dlcgogICBzcHJlYWQuZXM2ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ0LjE3OTErLTAuMzgyNyAgICAg
PyAgICAgNDQuNjcwNSstMC44OTQ0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDExMXggc2xvd2VyCiAg
IG9iamVjdC1hc3NpZ24uZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOTAuNjkz
MistMy4zMTM3ICAgICA/ICAgIDI5NC4zMTk2Ky0zLjEwODEgICAgICAgID8gbWlnaHQgYmUgMS4w
MTI1eCBzbG93ZXIKICAgb2JqZWN0LWFzc2lnbi5lczYgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDI0MS41NDQ1Ky00LjI1NDIgICAgID8gICAgMjQ3LjUxMjkrLTMuNzc2NCAgICAgICAg
PyBtaWdodCBiZSAxLjAyNDd4IHNsb3dlcgogICBzcHJlYWQtbGl0ZXJhbC5lczUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDgzLjcyNjgrLTAuNDIwNyAgICAgICAgICAgODMuMzk5MCst
MC4zMDMzICAgICAgICAKICAgc3ByZWFkLWxpdGVyYWwuZXM2ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyNC44MDc3Ky0wLjY3MzcgICAgICAgICAgIDI0LjUyNzkrLTAuNDgwOSAgICAg
ICAgICBtaWdodCBiZSAxLjAxMTR4IGZhc3RlcgogICBtYXAtc2V0LmVzNSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIxLjI0MDErLTEuNDg3MSAgICAgPyAgICAgMjIuMzc3
NCstMS4yNDU4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDUzNXggc2xvd2VyCiAgIG1hcC1zZXQuZXM2
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTMuNDQzMCstMi41Njc2ICAg
ICA/ICAgIDE1Ni4yNjYzKy0xLjcxODEgICAgICAgID8gbWlnaHQgYmUgMS4wMTg0eCBzbG93ZXIK
ICAgZGVzdHJ1Y3R1cmluZy1zaW1wbGUuZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICA2OC4z
ODcwKy0wLjE1NTcgICAgID8gICAgIDcwLjYyNDkrLTMuMzcxOCAgICAgICAgPyBtaWdodCBiZSAx
LjAzMjd4IHNsb3dlcgogICBkZXN0cnVjdHVyaW5nLXNpbXBsZS5lczYgICAgICAgICAgICAgICAg
ICAgICAgICAgIDY4Ljc3NjMrLTEuNDAwOSAgICAgPyAgICAgNzAuNTM2OSstMi44MTMzICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDI1Nnggc2xvd2VyCiAgIHN1cGVyLmVzNSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDkuNTE2NCstMC41MzE3ICAgICAhICAgICAxMS42OTM1
Ky0xLjI5OTkgICAgICAgICEgZGVmaW5pdGVseSAxLjIyODh4IHNsb3dlcgogICBzdXBlci5lczYg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc2LjUyNDArLTAuMjg0OSAg
ICAgPyAgICAgNzYuOTM4NSstMS41NTY5ICAgICAgICA/CiAgIGZvci1vZi1vYmplY3QuZXM1ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDMuOTU5NystMC41ODY3ICAgICA/ICAgICA0
NS42NTk0Ky00LjM1MzcgICAgICAgID8gbWlnaHQgYmUgMS4wMzg3eCBzbG93ZXIKICAgZm9yLW9m
LW9iamVjdC5lczYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxMC42NDg3Ky0xLjQx
NTYgICAgID8gICAgMjEyLjMyMDMrLTEuMzUwNyAgICAgICAgPwogICByZXN0LmVzNSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM4LjAzOTErLTIuMDMwNiAgICAgICAg
ICAgMzcuODg0MCstMS4zMDE2ICAgICAgICAKICAgcmVzdC5lczYgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMS43ODA4Ky0wLjA2ODUgICAgID8gICAgICAxLjc4ODEr
LTAuMDkyNCAgICAgICAgPwogICByZWdleC11LmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQwLjk5NDMrLTAuNDg3NiAgICAgPyAgICAgNDQuMDMwMistNS44NzM1ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDc0MXggc2xvd2VyCiAgIHJlZ2V4LXUuZXM2ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNzIuMjAyMistMS44NTg3ICAgICA/ICAgICA3My43
NDQzKy0xLjk5NjcgICAgICAgID8gbWlnaHQgYmUgMS4wMjE0eCBzbG93ZXIKICAgYXJyb3cuZXM1
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3MC4wMDEzKy0yLjMwMTUg
ICAgICAgICAgIDY3LjgyNDUrLTAuMTcwNCAgICAgICAgICBtaWdodCBiZSAxLjAzMjF4IGZhc3Rl
cgogICBhcnJvdy5lczYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY4
Ljc5NjQrLTEuMDg2MyAgICAgICAgICAgNjcuODk2MystMC40NjIyICAgICAgICAgIG1pZ2h0IGJl
IDEuMDEzM3ggZmFzdGVyCiAgIGJpbmRpbmdzLWNvbXBvdW5kLmVzNSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNTguMzMxMSstMi42NjEzICAgICAgICAgICA1NS4yMTM0Ky0xLjE2OTIgICAg
ICAgICAgbWlnaHQgYmUgMS4wNTY1eCBmYXN0ZXIKICAgYmluZGluZ3MtY29tcG91bmQuZXM2ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA1NC45NDU0Ky0wLjcxNjkgICAgICEgICAgIDY2LjY3
NTUrLTQuNDQ4NyAgICAgICAgISBkZWZpbml0ZWx5IDEuMjEzNXggc2xvd2VyCiAgIGNsYXNzZXMu
ZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjEuNjczMCstMC4yNzM1
ICAgICA/ICAgICA2MS43NzA2Ky0wLjQ0MjYgICAgICAgID8KICAgY2xhc3Nlcy5lczYgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MS41MjUyKy0wLjE3OTQgICAgID8gICAg
IDYyLjAwMDArLTAuNzI3MiAgICAgICAgPwogICB0ZW1wbGF0ZV9zdHJpbmdfdGFnLmVzNSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDU4Ljg3MDkrLTAuNjcyMCAgICAgPyAgICAgNTkuMTYxMyst
MS4xNDczICAgICAgICA/CiAgIHRlbXBsYXRlX3N0cmluZ190YWcuZXM2ICAgICAgICAgICAgICAg
ICAgICAgICAgICAxODAuNzE4NSstMi4yNjYwICAgICBeICAgIDE3Ni4yMzYxKy0wLjc5MTEgICAg
ICAgIF4gZGVmaW5pdGVseSAxLjAyNTR4IGZhc3RlcgogICBtYXAtc3RyaW5nLmVzNSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE2LjgwMzkrLTguNzA3MCAgICAgPyAgICAxMTYu
OTQ0NystNi43NjU1ICAgICAgICA/CiAgIG1hcC1zdHJpbmcuZXM2ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0ODUuMTg1NCstNC44NDE1ICAgICBeICAgIDQ2Ni40MjkyKy0zLjE2
NDggICAgICAgIF4gZGVmaW5pdGVseSAxLjA0MDJ4IGZhc3RlcgogICBhcnJvdy1kZWNsYXJlLmVz
NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA0Ljk2OTgrLTMuODgxNyAgICAgICAg
ICAxMDMuNjE5MistMi4wNjI5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzMHggZmFzdGVyCiAgIGFy
cm93LWRlY2xhcmUuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDEuOTk3NSst
MC4xNjY2ICAgICA/ICAgIDEwMy42NjkyKy0xLjY2NzAgICAgICAgID8gbWlnaHQgYmUgMS4wMTY0
eCBzbG93ZXIKICAgc3ByZWFkLWdlbmVyYXRvci5lczUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA4MC43NjA1Ky0wLjY3NzcgICAgICEgICAgIDgzLjE0ODcrLTAuNTYyMiAgICAgICAgISBk
ZWZpbml0ZWx5IDEuMDI5Nnggc2xvd2VyCiAgIHNwcmVhZC1nZW5lcmF0b3IuZXM2ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyMTYuNTkzNSstMTUuNzQ1OSAgICAgICAgIDE5OS44MjE0Ky00
LjIwNDEgICAgICAgICAgbWlnaHQgYmUgMS4wODM5eCBmYXN0ZXIKICAgb2JqZWN0LWxpdGVyYWwt
ZXh0LmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi45OTMzKy0wLjQzMjcgICAgID8g
ICAgIDE3LjMwNTQrLTAuNTUzOSAgICAgICAgPyBtaWdodCBiZSAxLjAxODR4IHNsb3dlcgogICBv
YmplY3QtbGl0ZXJhbC1leHQuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5Ljc2MDMr
LTAuMjY3NCAgICAgPyAgICAgMTkuODIzNSstMC40NjIxICAgICAgICA/CiAgIGdlbmVyYXRvci5l
czUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDMuMzAxOCstMC41ODMzICAg
ICA/ICAgIDEwMy40OTE5Ky0xLjIzNTAgICAgICAgID8KICAgZ2VuZXJhdG9yLmVzNiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4NS40MTYyKy0zLjExMzUgICAgID8gICAgMTkw
LjM3NTErLTEwLjY1MjAgICAgICAgPyBtaWdodCBiZSAxLjAyNjd4IHNsb3dlcgogICBhcnJvdy1h
cmdzLmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYwLjU5OTgrLTEuMTk4
NSAgICAgPyAgICAgNjIuNTgwOCstNC40NjU5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMyN3ggc2xv
d2VyCiAgIGFycm93LWFyZ3MuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NjMuMDQ1MystMy42MTcyICAgICA/ICAgICA2Ny40ODAzKy00LjQ0MTkgICAgICAgID8gbWlnaHQg
YmUgMS4wNzAzeCBzbG93ZXIKICAgZm9yLW9mLWFycmF5LmVzNSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDE3My41NDU2Ky0xLjg5MTMgICAgID8gICAgMTc1LjIxMzcrLTEuMjMzNiAg
ICAgICAgPwogICBmb3Itb2YtYXJyYXkuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMjAyLjkwMTMrLTMuMTQ4MCAgICAgICAgICAxOTguMTcxNSstMy40ODgzICAgICAgICAgIG1p
Z2h0IGJlIDEuMDIzOXggZmFzdGVyCiAgIGJpbmRpbmdzLmVzNSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNjAuNjUyNCstNC41MTE2ICAgICAgICAgICA1NS41MDUwKy0xLjM2
OTcgICAgICAgICAgbWlnaHQgYmUgMS4wOTI3eCBmYXN0ZXIKICAgYmluZGluZ3MuZXM2ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2OC44ODEyKy0xLjU0MTUgICAgICAgICAg
IDY4LjQxODUrLTEuODMzNCAgICAgICAgCiAgIGRlc3RydWN0dXJpbmcuZXM1ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNjYuMjk0NSstMS41ODgyICAgICA/ICAgICA2Ni40NDcxKy0x
LjUyMzcgICAgICAgID8KICAgZGVzdHJ1Y3R1cmluZy5lczYgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA3OC44MTQ0Ky0yLjk5MzIgICAgID8gICAgIDgxLjU4NDIrLTMuMjY1NSAgICAg
ICAgPyBtaWdodCBiZSAxLjAzNTF4IHNsb3dlcgogICBtYXAtc2V0LW9iamVjdC5lczUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDI4LjgwNjcrLTAuMjYzMCAgICAgICAgICAgMjguNTM0
MSstMC4yMDA3ICAgICAgICAKICAgbWFwLXNldC1vYmplY3QuZXM2ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDE1Ny4wOTA1Ky0xLjQ2NDAgICAgICEgICAgMTYyLjI4ODIrLTEuNzA3MCAg
ICAgICAgISBkZWZpbml0ZWx5IDEuMDMzMXggc2xvd2VyCgogICA8Z2VvbWV0cmljPiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc3Ljc2NTArLTAuNTEwMyAgICAgPyAgICAg
NzguODA1OCstMC45MTU2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEzNHggc2xvd2VyCgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2Ug
ICAgICAgICAgICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIApHZW9tZWFuIG9mIHByZWZlcnJlZCBtZWFuczoKICAgPHNjYWxlZC1yZXN1bHQ+ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0OS42NTY5Ky0wLjIyMTYgICAgICAgICAg
IDQ5LjY1MzgrLTAuMTEyMiAgICAgICAgICBtaWdodCBiZSAxLjAwMDF4IGZhc3RlcgoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>320076</attachid>
            <date>2017-09-06 16:21:41 -0700</date>
            <delta_ts>2017-09-06 16:21:41 -0700</delta_ts>
            <desc>x86_64 benchmark results (run 2)</desc>
            <filename>bench-result_x86_64-2.txt</filename>
            <type>text/plain</type>
            <size>98775</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">JCBzbGVlcCA1ICYmIC4uL3dzL0ludGVybmFsL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1iZW5jaG1h
cmtzIC0tb3V0ZXIgOCBiYXNlOmJhc2UvanNjIG5ldzpuZXcvanNjCldhcm5pbmc6IGNvdWxkIG5v
dCBpZGVudGlmeSBjaGVja291dCBsb2NhdGlvbiBmb3IgYmFzZQpXYXJuaW5nOiBjb3VsZCBub3Qg
aWRlbnRpZnkgY2hlY2tvdXQgbG9jYXRpb24gZm9yIG5ldwpXYXJuaW5nOiByZWZ1c2luZyB0byBy
dW4gSlNCZW5jaCBiZWNhdXNlIG5vdCBhbGwgVk1zIGFyZSBEdW1wUmVuZGVyVHJlZSBvciBXZWJL
aXRUZXN0UnVubmVyLgpXYXJuaW5nOiByZWZ1c2luZyB0byBydW4gRFNQSlMgYmVjYXVzZSBub3Qg
YWxsIFZNcyBhcmUgRHVtcFJlbmRlclRyZWUgb3IgV2ViS2l0VGVzdFJ1bm5lci4KMTE5NzIvMTE5
NzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAtZSAgICAgICAgICAgICAgICAgICAgICAgIC1lIApHZW5lcmF0aW5nIGJlbmNo
bWFyayByZXBvcnQgYXQgL1ZvbHVtZXMvRGF0YS9iZW5jaC9iYXNlX25ld19TdW5TcGlkZXJMb25n
U3BpZGVyVjhTcGlkZXJPY3RhbmVLcmFrZW5NaWNyb2JlbmNobWFya3NBc21CZW5jaENvbXByZXNz
aW9uQmVuY2hTaXhTcGVlZF9HYWxlb24tMl8yMDE3MDkwNl8xNjE2X3JlcG9ydC50eHQKQW5kIHJh
dyBkYXRhIGF0IC9Wb2x1bWVzL0RhdGEvYmVuY2gvYmFzZV9uZXdfU3VuU3BpZGVyTG9uZ1NwaWRl
clY4U3BpZGVyT2N0YW5lS3Jha2VuTWljcm9iZW5jaG1hcmtzQXNtQmVuY2hDb21wcmVzc2lvbkJl
bmNoU2l4U3BlZWRfR2FsZW9uLTJfMjAxNzA5MDZfMTYxNi5qc29uCgpCZW5jaG1hcmsgcmVwb3J0
IGZvciBTdW5TcGlkZXIsIExvbmdTcGlkZXIsIFY4U3BpZGVyLCBPY3RhbmUsIEtyYWtlbiwgTWlj
cm9iZW5jaG1hcmtzLCBBc21CZW5jaCwgQ29tcHJlc3Npb25CZW5jaCwgYW5kIFNpeFNwZWVkIG9u
IEdhbGVvbi0yIChNYWNCb29rUHJvMTEsMykuCgpWTXMgdGVzdGVkOgoiYmFzZSIgYXQgL1ZvbHVt
ZXMvRGF0YS9iZW5jaC9iYXNlL2pzYwoibmV3IiBhdCAvVm9sdW1lcy9EYXRhL2JlbmNoL25ldy9q
c2MKCkNvbGxlY3RlZCA4IHNhbXBsZXMgcGVyIGJlbmNobWFyay9WTSwgd2l0aCA4IFZNIGludm9j
YXRpb25zIHBlciBiZW5jaG1hcmsuIEVtaXR0ZWQgYSBjYWxsIHRvIGdjKCkgYmV0d2VlbiBzYW1w
bGUgbWVhc3VyZW1lbnRzLgpVc2VkIDEgYmVuY2htYXJrIGl0ZXJhdGlvbiBwZXIgVk0gaW52b2Nh
dGlvbiBmb3Igd2FybS11cC4gVXNlZCB0aGUganNjLXNwZWNpZmljIHByZWNpc2VUaW1lKCkgZnVu
Y3Rpb24gdG8gZ2V0IG1pY3Jvc2Vjb25kLWxldmVsCnRpbWluZy4gUmVwb3J0aW5nIGJlbmNobWFy
ayBleGVjdXRpb24gdGltZXMgd2l0aCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMgaW4gbWlsbGlz
ZWNvbmRzLgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBiYXNlICAgICAgICAgICAgICAgICAgICAgIG5ldyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKU3VuU3BpZGVyOgogICAzZC1jdWJlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjExNzcrLTAuMzE5NiAgICAgICAgICAg
IDQuOTUzNCstMC4yMTgxICAgICAgICAgIG1pZ2h0IGJlIDEuMDMzMnggZmFzdGVyCiAgIDNkLW1v
cnBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNjY2MystMC4x
NTMxICAgICA/ICAgICAgNS43OTAyKy0wLjE4OTUgICAgICAgID8gbWlnaHQgYmUgMS4wMjE5eCBz
bG93ZXIKICAgM2QtcmF5dHJhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNS4wMTg0Ky0wLjIwNzUgICAgID8gICAgICA1LjEzMjErLTAuMzU2NCAgICAgICAgPyBtaWdo
dCBiZSAxLjAyMjZ4IHNsb3dlcgogICBhY2Nlc3MtYmluYXJ5LXRyZWVzICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyLjE0MTQrLTAuMTIyNyAgICAgICAgICAgIDIuMDYyNistMC4wNzQw
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM4MnggZmFzdGVyCiAgIGFjY2Vzcy1mYW5ua3VjaCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuMDM1NCstMC4yMjI2ICAgICA/ICAgICAg
Ny4xNzQyKy0wLjM1NDAgICAgICAgID8gbWlnaHQgYmUgMS4wMTk3eCBzbG93ZXIKICAgYWNjZXNz
LW5ib2R5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi45Nzc3Ky0wLjE2
MTAgICAgICAgICAgICAyLjk2ODYrLTAuMjAzNyAgICAgICAgCiAgIGFjY2Vzcy1uc2lldmUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMjQ2MystMC4xMTk1ICAgICA/ICAg
ICAgMy40NDM2Ky0wLjIzMTIgICAgICAgID8gbWlnaHQgYmUgMS4wNjA4eCBzbG93ZXIKICAgYml0
b3BzLTNiaXQtYml0cy1pbi1ieXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4yODM3Ky0w
LjA0NDkgICAgIF4gICAgICAxLjIyMzUrLTAuMDEzMyAgICAgICAgXiBkZWZpbml0ZWx5IDEuMDQ5
MnggZmFzdGVyCiAgIGJpdG9wcy1iaXRzLWluLWJ5dGUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDIuOTc5OCstMC4wOTAzICAgICA/ICAgICAgMy4wNjE2Ky0wLjEwODIgICAgICAgID8g
bWlnaHQgYmUgMS4wMjc1eCBzbG93ZXIKICAgYml0b3BzLWJpdHdpc2UtYW5kICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMi4zODAyKy0wLjA2NzMgICAgID8gICAgICAyLjM5OTArLTAu
MTEzNiAgICAgICAgPwogICBiaXRvcHMtbnNpZXZlLWJpdHMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAzLjY5NTMrLTAuMTAyMCAgICAgPyAgICAgIDMuNzQ1MCstMC4xMTkxICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDEzNHggc2xvd2VyCiAgIGNvbnRyb2xmbG93LXJlY3Vyc2l2ZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIuMzg5NistMC4xMjg5ICAgICAgICAgICAgMi4zMzQ1
Ky0wLjA5MzMgICAgICAgICAgbWlnaHQgYmUgMS4wMjM2eCBmYXN0ZXIKICAgY3J5cHRvLWFlcyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC45ODE0Ky0wLjEzNDUgICAg
ICAgICAgICA0LjcyNzkrLTAuMjA2NyAgICAgICAgICBtaWdodCBiZSAxLjA1MzZ4IGZhc3Rlcgog
ICBjcnlwdG8tbWQ1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjcz
NzUrLTAuMTQxMCAgICAgICAgICAgIDIuNzE2MSstMC4wNzcxICAgICAgICAKICAgY3J5cHRvLXNo
YTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi45NDQ5Ky0wLjA2Nzgg
ICAgICAgICAgICAyLjkwMTgrLTAuMTMxMyAgICAgICAgICBtaWdodCBiZSAxLjAxNDl4IGZhc3Rl
cgogICBkYXRlLWZvcm1hdC10b2Z0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4
LjE5MzIrLTAuNDQ4MCAgICAgPyAgICAgIDguMzA2MistMC40ODExICAgICAgICA/IG1pZ2h0IGJl
IDEuMDEzOHggc2xvd2VyCiAgIGRhdGUtZm9ybWF0LXhwYXJiICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUuOTA2NSstMC4yNTAzICAgICAgICAgICAgNS42NzI1Ky0wLjA2NDcgICAg
ICAgICAgbWlnaHQgYmUgMS4wNDEyeCBmYXN0ZXIKICAgbWF0aC1jb3JkaWMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4yODk0Ky0wLjA4NjcgICAgID8gICAgICAzLjM3
MzcrLTAuMjA1OSAgICAgICAgPyBtaWdodCBiZSAxLjAyNTZ4IHNsb3dlcgogICBtYXRoLXBhcnRp
YWwtc3VtcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjU2NDErLTAuMTYxOCAg
ICAgPyAgICAgIDQuNzk0MSstMC4xNTMxICAgICAgICA/IG1pZ2h0IGJlIDEuMDUwNHggc2xvd2Vy
CiAgIG1hdGgtc3BlY3RyYWwtbm9ybSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIu
Mjk2OSstMC4xOTMzICAgICAgICAgICAgMi4xMzgxKy0wLjA5NDIgICAgICAgICAgbWlnaHQgYmUg
MS4wNzQzeCBmYXN0ZXIKICAgcmVnZXhwLWRuYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNy4wOTM3Ky0wLjMzNzMgICAgID8gICAgICA3LjQwNzcrLTAuMzc2NCAgICAg
ICAgPyBtaWdodCBiZSAxLjA0NDN4IHNsb3dlcgogICBzdHJpbmctYmFzZTY0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0LjczMTArLTAuMjA1NCAgICAgICAgICAgIDQuNjg4
MystMC4yNTQyICAgICAgICAKICAgc3RyaW5nLWZhc3RhICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNi43MzU0Ky0wLjIxMDQgICAgICAgICAgICA2LjU1MDUrLTAuMzQzMiAg
ICAgICAgICBtaWdodCBiZSAxLjAyODJ4IGZhc3RlcgogICBzdHJpbmctdGFnY2xvdWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjE4ODkrLTAuNDIxOCAgICAgPyAgICAgIDku
NzE1NystMC4yODc0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDU3M3ggc2xvd2VyCiAgIHN0cmluZy11
bnBhY2stY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAuMjE0OSstMS4wNzU1
ICAgICAgICAgICAxOS4yMTc4Ky0wLjUyNjcgICAgICAgICAgbWlnaHQgYmUgMS4wNTE5eCBmYXN0
ZXIKICAgc3RyaW5nLXZhbGlkYXRlLWlucHV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NS4wNTY0Ky0wLjEzNjMgICAgID8gICAgICA1LjIyMzUrLTAuMjE1NyAgICAgICAgPyBtaWdodCBi
ZSAxLjAzMzF4IHNsb3dlcgoKICAgPGFyaXRobWV0aWM+ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNS4wNzE4Ky0wLjA0MjAgICAgICAgICAgICA1LjA2NjIrLTAuMDQxMiAg
ICAgICAgICBtaWdodCBiZSAxLjAwMTF4IGZhc3RlcgoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlICAgICAgICAgICAgICAgICAg
ICAgIG5ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKTG9uZ1NwaWRl
cjoKICAgM2QtY3ViZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgz
MC40MDI5Ky0xMC42MDI1ICAgICAgICAgODMwLjIzMjcrLTEwLjU0NDIgICAgICAgCiAgIDNkLW1v
cnBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NTYuNDA2MistNi40
ODAxICAgICAgICAgIDY1My41OTg2Ky03LjM5MTkgICAgICAgIAogICAzZC1yYXl0cmFjZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTIxLjY4MjYrLTguMTU5OCAgICAgPyAg
ICA1MjYuMzg5NystNC4yODIxICAgICAgICA/CiAgIGFjY2Vzcy1iaW5hcnktdHJlZXMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA5MTMuMTk4MSstMjQuODczMiAgICA/ICAgIDkyMC42NjA4
Ky01MC45MzYxICAgICAgID8KICAgYWNjZXNzLWZhbm5rdWNoICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDMwOC4wNjM4Ky0yMS4xNDI0ICAgID8gICAgMzA4Ljg3NDIrLTIwLjMzMTEg
ICAgICAgPwogICBhY2Nlc3MtbmJvZHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNTc3LjY1MjArLTkuNDYzMSAgICAgICAgICA1NzQuNDE0OCstNy4yNDk2ICAgICAgICAKICAg
YWNjZXNzLW5zaWV2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMyMi42MzI1
Ky0xMC4yODQzICAgID8gICAgMzIzLjYzOTMrLTYuNzM2OCAgICAgICAgPwogICBiaXRvcHMtM2Jp
dC1iaXRzLWluLWJ5dGUgICAgICAgICAgICAgICAgICAgICAgICAgIDM1Ljg4ODUrLTIuNTUxMyAg
ICAgICAgICAgMzQuOTUwMistMS4yMTgzICAgICAgICAgIG1pZ2h0IGJlIDEuMDI2OHggZmFzdGVy
CiAgIGJpdG9wcy1iaXRzLWluLWJ5dGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDAu
NTg0NSstNC43NDQ3ICAgICAgICAgIDEwMC4xMTQ1Ky00LjExODAgICAgICAgIAogICBiaXRvcHMt
bnNpZXZlLWJpdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIxLjE1OTgrLTkuMDc5
NSAgICAgPyAgICA0MjMuNTUwNystNi4wNTU3ICAgICAgICA/CiAgIGNvbnRyb2xmbG93LXJlY3Vy
c2l2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICA0OTcuMjA5MystNC42MDc5ICAgICA/ICAg
IDQ5Ny41ODIxKy04LjU1NzQgICAgICAgID8KICAgY3J5cHRvLWFlcyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDYxNS42OTQ1Ky01LjQ5MzMgICAgID8gICAgNjIyLjY0MDgr
LTE1LjczNzkgICAgICAgPyBtaWdodCBiZSAxLjAxMTN4IHNsb3dlcgogICBjcnlwdG8tbWQ1ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTc3LjQ3ODgrLTQuMjU1NCAgICAg
ICAgICA1NzMuNDA3MystMy44NDU1ICAgICAgICAKICAgY3J5cHRvLXNoYTEgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDcwNC40NjE4Ky01LjI0ODUgICAgICAgICAgNzAxLjc1
MTArLTkuMjc5MCAgICAgICAgCiAgIGRhdGUtZm9ybWF0LXRvZnRlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAzODEuNjY0MystOS45MzM3ICAgICAgICAgIDM4MC42NjA0Ky04LjAxNzEg
ICAgICAgIAogICBkYXRlLWZvcm1hdC14cGFyYiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgODQ1LjE3NTUrLTguNTAxNiAgICAgICAgICA4NDIuNzQzNystNy4yODg1ICAgICAgICAKICAg
aGFzaC1tYXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2MS41NjIy
Ky01LjM4NTggICAgID8gICAgMTYyLjg4MjcrLTIuMzAxNSAgICAgICAgPwogICBtYXRoLWNvcmRp
YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDgxLjc4NzQrLTI2LjAxNDkg
ICAgICAgICA0NjkuNDAwNistOS4xMDMzICAgICAgICAgIG1pZ2h0IGJlIDEuMDI2NHggZmFzdGVy
CiAgIG1hdGgtcGFydGlhbC1zdW1zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMDku
NjMwNSstNi43MTAzICAgICA/ICAgIDMxMi44NzE0Ky05LjEyMjEgICAgICAgID8gbWlnaHQgYmUg
MS4wMTA1eCBzbG93ZXIKICAgbWF0aC1zcGVjdHJhbC1ub3JtICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDYwNC40NjM5Ky00Ljc4MjUgICAgICAgICAgNTk1LjM5MzYrLTUuMjcwMSAgICAg
ICAgICBtaWdodCBiZSAxLjAxNTJ4IGZhc3RlcgogICBzdHJpbmctYmFzZTY0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMzg0LjU0MjErLTUuODIwMSAgICAgICAgICAzNjguNDMz
NistMjIuMTQzMSAgICAgICAgIG1pZ2h0IGJlIDEuMDQzN3ggZmFzdGVyCiAgIHN0cmluZy1mYXN0
YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNzUuMTMzMSstOS45MzcwICAg
ICAgICAgIDM3Mi4yNDUxKy0xMC44MTExICAgICAgIAogICBzdHJpbmctdGFnY2xvdWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTg0LjA5OTIrLTguMTk4NyAgICAgICAgICAxNzYu
NzAyNystMi43NDcyICAgICAgICAgIG1pZ2h0IGJlIDEuMDQxOXggZmFzdGVyCgogICA8Z2VvbWV0
cmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzg3LjkwNTErLTAuODEx
NyAgICAgICAgICAzODUuNzM4MSstMS41MjA2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDA1NnggZmFz
dGVyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIApWOFNwaWRlcjoKICAgY3J5cHRvICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzNy43OTk0Ky0wLjQzNzcgICAgICAgICAgIDM3Ljcw
MTgrLTAuNzU4MCAgICAgICAgCiAgIGRlbHRhYmx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNTQuMTI2NCstMi4wMDYxICAgICA/ICAgICA1NS42ODYwKy0yLjg4ODgg
ICAgICAgID8gbWlnaHQgYmUgMS4wMjg4eCBzbG93ZXIKICAgZWFybGV5LWJveWVyICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNC42OTQ2Ky0wLjU1MTYgICAgID8gICAgIDM2
LjAwOTgrLTAuODQwMCAgICAgICAgPyBtaWdodCBiZSAxLjAzNzl4IHNsb3dlcgogICByYXl0cmFj
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLjIxNzkrLTEuMTAz
NyAgICAgPyAgICAgMjEuMjk4OSstMS4xODU2ICAgICAgICA/CiAgIHJlZ2V4cCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTcuODY5NystMS4yOTI4ICAgICA/ICAg
ICA1OC4xMzAzKy0xLjkyOTcgICAgICAgID8KICAgcmljaGFyZHMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA0Ny42MTg5Ky0xLjgzODEgICAgICAgICAgIDQ3LjAwNTMr
LTEuNjA3MyAgICAgICAgICBtaWdodCBiZSAxLjAxMzF4IGZhc3RlcgogICBzcGxheSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLjk4NTIrLTAuNjgxMyAgICAg
PyAgICAgMzEuODc1NistMC42ODk0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI4N3ggc2xvd2VyCgog
ICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM4LjYx
OTMrLTAuNDYzOCAgICAgPyAgICAgMzkuMDkxMystMC40NTE0ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDEyMnggc2xvd2VyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAgICAgbmV3ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIApPY3RhbmU6CiAgIGVuY3J5cHQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4xNjY1NystMC4wMDM0NSAgICA/ICAg
ICAwLjE2Nzc3Ky0wLjAwMzcyICAgICAgID8KICAgZGVjcnlwdCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAyLjkxNTQ2Ky0wLjA4NjkzICAgICAgICAgIDIuODk0ODQr
LTAuMDQ5NTYgICAgICAgCiAgIGRlbHRhYmx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeDIgICAgICAgMC4xNDA5OSstMC4wMDI4OCAgICAgICAgICAwLjE0MDYwKy0wLjAwMzU4ICAg
ICAgIAogICBlYXJsZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAuMjk5MTgrLTAuMDAyODggICAgICAgICAgMC4yOTg4MistMC4wMDM5MyAgICAgICAKICAgYm95
ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjEyMzQ1Ky0w
LjA0MzE2ICAgICAgICAgIDUuMDgwMDcrLTAuMDc2MzIgICAgICAgCiAgIG5hdmllci1zdG9rZXMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAgNS4zNjc2OSstMC4wNjAwOCAgICAg
ICAgICA1LjMzMjg0Ky0wLjA1Nzk1ICAgICAgIAogICByYXl0cmFjZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHgyICAgICAgIDAuODExMjMrLTAuMDEwMDIgICAgPyAgICAgMC44MTk0
MistMC4wMDk4MyAgICAgICA/IG1pZ2h0IGJlIDEuMDEwMXggc2xvd2VyCiAgIHJpY2hhcmRzICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAgMC4xMDU2NCstMC4wMDE1MyAg
ICA/ICAgICAwLjEwNjAxKy0wLjAwMTUxICAgICAgID8KICAgc3BsYXkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB4MiAgICAgICAwLjMzNTE4Ky0wLjAwMjYzICAgID8gICAgIDAu
MzM2MzIrLTAuMDAzOTIgICAgICAgPwogICByZWdleHAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHgyICAgICAgMTguNDYxMjQrLTAuNzMzNDggICAgICAgICAxOC4wODQ2NCstMC40
OTk0MSAgICAgICAgIG1pZ2h0IGJlIDEuMDIwOHggZmFzdGVyCiAgIHBkZmpzICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAzOS42NTQ2NistMC4yNjQyOCAgICAhICAg
IDQwLjU1MTg5Ky0wLjQ3MTcyICAgICAgICEgZGVmaW5pdGVseSAxLjAyMjZ4IHNsb3dlcgogICBt
YW5kcmVlbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgNDcuMjQzNzQr
LTAuNzU1MTggICAgICAgICA0Ny4wMzgwNistMC41ODY2OCAgICAgICAKICAgZ2JlbXUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgIDM1LjM5MDY5Ky0wLjQ4OTY1ICAg
ICEgICAgMzYuMzAwNjMrLTAuMzQyNDcgICAgICAgISBkZWZpbml0ZWx5IDEuMDI1N3ggc2xvd2Vy
CiAgIGNsb3N1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC41
MjkwNistMC4wMDU3MiAgICA/ICAgICAwLjUyOTk3Ky0wLjAwNjkyICAgICAgID8KICAganF1ZXJ5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjIwMzg4Ky0wLjAy
MzcwICAgID8gICAgIDcuMjA5OTIrLTAuMDY1MTkgICAgICAgPwogICBib3gyZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgIDkuNDM3NjkrLTAuMDY4MTUgICAgPyAg
ICAgOS41NzM4MystMC4zNzUwOCAgICAgICA/IG1pZ2h0IGJlIDEuMDE0NHggc2xvd2VyCiAgIHps
aWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgIDMyNi4yMTI2MSst
Mi41MTI1MiAgICA/ICAgMzI3LjUxMzQyKy00LjE5MDk1ICAgICAgID8KICAgdHlwZXNjcmlwdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgNjM1LjA5ODg1Ky0xMC44NzEyOSAg
ICEgICA2NjAuNTYwMDArLTEyLjIyMTY0ICAgICAgISBkZWZpbml0ZWx5IDEuMDQwMXggc2xvd2Vy
CgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUu
MzYzMzkrLTAuMDIyOTkgICAgPyAgICAgNS4zOTM1NSstMC4wMzI2OSAgICAgICA/IG1pZ2h0IGJl
IDEuMDA1Nnggc2xvd2VyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAgICAgbmV3ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApLcmFrZW46CiAgIGFpLWFzdGFyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAzLjM4OCstNC4wODUgICAgICAg
ICAgICAxMDIuNjAzKy0xLjc5MyAgICAgICAgIAogICBhdWRpby1iZWF0LWRldGVjdGlvbiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0My4wMzgrLTEuMjAzICAgICAgICAgICAgIDQyLjI0
NCstMC44MTggICAgICAgICAgIG1pZ2h0IGJlIDEuMDE4OHggZmFzdGVyCiAgIGF1ZGlvLWRmdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAyLjgyOCstMS41ODUgICAg
ICA/ICAgICAxMDYuMjA1Ky0yLjg3MiAgICAgICAgID8gbWlnaHQgYmUgMS4wMzI4eCBzbG93ZXIK
ICAgYXVkaW8tZmZ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzEu
OTQ3Ky0xLjc2MyAgICAgICAgICAgICAzMS42NDcrLTEuMTkyICAgICAgICAgCiAgIGF1ZGlvLW9z
Y2lsbGF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ5LjMwMCstMi4xMzYg
ICAgICA/ICAgICAgNTAuNjQ5Ky0yLjI3OCAgICAgICAgID8gbWlnaHQgYmUgMS4wMjc0eCBzbG93
ZXIKICAgaW1hZ2luZy1kYXJrcm9vbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NjYuMjkxKy0xLjkyMSAgICAgID8gICAgICA2OC40NDcrLTIuNDMwICAgICAgICAgPyBtaWdodCBi
ZSAxLjAzMjV4IHNsb3dlcgogICBpbWFnaW5nLWRlc2F0dXJhdGUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA0OS41NjErLTMuNjcxICAgICAgICAgICAgIDQ5LjIxMystMi40OTEgICAg
ICAgICAKICAgaW1hZ2luZy1nYXVzc2lhbi1ibHVyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNjguOTgyKy01LjA1MSAgICAgID8gICAgICA2OS4xMzgrLTQuNTc0ICAgICAgICAgPwogICBq
c29uLXBhcnNlLWZpbmFuY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNS41MzMr
LTEuNjkxICAgICAgICAgICAgIDM1LjUxMystMS4wNjIgICAgICAgICAKICAganNvbi1zdHJpbmdp
ZnktdGluZGVyYm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjIuNjUyKy0xLjM2NCAgICAg
ID8gICAgICAyMy4wODArLTIuMDk1ICAgICAgICAgPyBtaWdodCBiZSAxLjAxODl4IHNsb3dlcgog
ICBzdGFuZm9yZC1jcnlwdG8tYWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Mi40
MTQrLTIuMjUxICAgICAgICAgICAgIDQwLjczMystMS41NTUgICAgICAgICAgIG1pZ2h0IGJlIDEu
MDQxM3ggZmFzdGVyCiAgIHN0YW5mb3JkLWNyeXB0by1jY20gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDM4LjA5OSstMy45NDYgICAgICA/ICAgICAgNDEuMjQ0Ky0yLjk2NiAgICAgICAg
ID8gbWlnaHQgYmUgMS4wODI1eCBzbG93ZXIKICAgc3RhbmZvcmQtY3J5cHRvLXBia2RmMiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNjUuODcyKy0xLjg3MyAgICAgID8gICAgICA2Ni45NzMr
LTIuMjIxICAgICAgICAgPyBtaWdodCBiZSAxLjAxNjd4IHNsb3dlcgogICBzdGFuZm9yZC1jcnlw
dG8tc2hhMjU2LWl0ZXJhdGl2ZSAgICAgICAgICAgICAgICAgICAyMC4yMjUrLTAuNDkxICAgICAg
PyAgICAgIDIwLjkwMSstMS4wNjAgICAgICAgICA/IG1pZ2h0IGJlIDEuMDMzNHggc2xvd2VyCgog
ICA8YXJpdGhtZXRpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Mi44
NjcrLTAuNjQxICAgICAgPyAgICAgIDUzLjQ3MSstMC41NDAgICAgICAgICA/IG1pZ2h0IGJlIDEu
MDExNHggc2xvd2VyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAgICAgbmV3ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIApNaWNyb2JlbmNobWFya3M6CiAgIGFiYy1mb3J3
YXJkLWxvb3AtZXF1YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjYuMzY0NSstMS4zNTYy
ICAgICA/ICAgICAyNi44MTM3Ky0xLjg0OTAgICAgICAgID8gbWlnaHQgYmUgMS4wMTcweCBzbG93
ZXIKICAgYWJjLXBvc3RmaXgtYmFja3dhcmQtbG9vcCAgICAgICAgICAgICAgICAgICAgICAgICAz
My40NDA1Ky0yLjI2ODIgICAgICAgICAgIDMyLjk0MjYrLTEuNjUyNyAgICAgICAgICBtaWdodCBi
ZSAxLjAxNTF4IGZhc3RlcgogICBhYmMtc2ltcGxlLWJhY2t3YXJkLWxvb3AgICAgICAgICAgICAg
ICAgICAgICAgICAgIDI0LjU0MTQrLTAuNDY3MyAgICAgPyAgICAgMjYuOTgxMSstMi4wNzQxICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDk5NHggc2xvd2VyCiAgIGFiYy1zaW1wbGUtZm9yd2FyZC1sb29w
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjYuNDUwNSstMS42Mzg5ICAgICAgICAgICAyNC44
MzMzKy0xLjAyNzAgICAgICAgICAgbWlnaHQgYmUgMS4wNjUxeCBmYXN0ZXIKICAgYWJjLXNraXBw
eS1sb29wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi4wMTU3Ky0wLjc1Mjcg
ICAgID8gICAgIDIzLjE1MjQrLTEuNTU4NCAgICAgICAgPyBtaWdodCBiZSAxLjA1MTZ4IHNsb3dl
cgogICBhYnMtYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
LjYyNDQrLTAuMDY4MiAgICAgICAgICAgIDIuNjA1NistMC4wODk1ICAgICAgICAKICAgYWRhcHQt
dG8tZG91YmxlLWRpdmlkZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNS44NjM2Ky0wLjk1
OTIgICAgICAgICAgIDE1LjU4NjArLTAuNTQ4MiAgICAgICAgICBtaWdodCBiZSAxLjAxNzh4IGZh
c3RlcgogICBhbGlhc2VkLWFyZ3VtZW50cy1nZXRieXZhbCAgICAgICAgICAgICAgICAgICAgICAg
ICAxLjEzNTkrLTAuMDM3NCAgICAgICAgICAgIDEuMTIzNCstMC4wNTIwICAgICAgICAgIG1pZ2h0
IGJlIDEuMDExMXggZmFzdGVyCiAgIGFsbG9jYXRlLWJpZy1vYmplY3QgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIuNzYxMistMC4xMjIxICAgICAgICAgICAgMi42NDcxKy0wLjE3MTcg
ICAgICAgICAgbWlnaHQgYmUgMS4wNDMxeCBmYXN0ZXIKICAgYXBwbHktbm90LWFwcGx5ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4yMjQ0Ky0wLjM3MzYgICAgICAgICAgICA1
LjAzMDUrLTAuMTI3MSAgICAgICAgICBtaWdodCBiZSAxLjAzODV4IGZhc3RlcgogICBhcmd1bWVu
dHMtbmFtZWQtYW5kLXJlZmxlY3RpdmUgICAgICAgICAgICAgICAgICAgICA2LjgwMTgrLTAuMTY1
NyAgICAgPyAgICAgIDYuODIxMystMC4xNDYzICAgICAgICA/CiAgIGFyZ3VtZW50cy1vdXQtb2Yt
Ym91bmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuOTg3MCstMC41OTY5ICAgICA/ICAg
ICAxMS4wOTEzKy0wLjYxMTcgICAgICAgID8KICAgYXJndW1lbnRzLXN0cmljdC1tb2RlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAzOS42NzU5Ky0xLjUwNzcgICAgICAgICAgIDM5LjUxNTMr
LTEuODE3NSAgICAgICAgCiAgIGFyZ3VtZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUuODM3NSstMC4xNjQwICAgICA/ICAgICAgNi4wNjM3Ky0wLjE2NjYgICAg
ICAgID8gbWlnaHQgYmUgMS4wMzg3eCBzbG93ZXIKICAgYXJpdHktbWlzbWF0Y2gtaW5saW5pbmcg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4wNTAxKy0wLjAzOTkgICAgID8gICAgICAxLjA1
ODcrLTAuMDM0MiAgICAgICAgPwogICBhcnJheS1hY2Nlc3MtcG9seW1vcnBoaWMtc3RydWN0dXJl
ICAgICAgICAgICAgICAgICA0LjM4NzArLTAuMTg2MSAgICAgICAgICAgIDQuMjkzNCstMC4xNzA0
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIxOHggZmFzdGVyCiAgIGFycmF5LW5vbmFycmF5LXBvbHlt
b3JocGljLWFjY2VzcyAgICAgICAgICAgICAgICAgMjMuOTA1NSstMS4wOTg1ICAgICA/ICAgICAy
NS40ODM0Ky0xLjQwNDUgICAgICAgID8gbWlnaHQgYmUgMS4wNjYweCBzbG93ZXIKICAgYXJyYXkt
cHJvdG90eXBlLWV2ZXJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzOC40NjgyKy0xLjEx
ODUgICAgICAgICAgIDM3Ljg3OTUrLTEuNDgxMSAgICAgICAgICBtaWdodCBiZSAxLjAxNTV4IGZh
c3RlcgogICBhcnJheS1wcm90b3R5cGUtZm9yRWFjaCAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMxLjExODkrLTAuMzEzOSAgICAgPyAgICAgMzMuMDg3NCstMS45ODUwICAgICAgICA/IG1pZ2h0
IGJlIDEuMDYzM3ggc2xvd2VyCiAgIGFycmF5LXByb3RvdHlwZS1tYXAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMzQuNjI2MCstMC45MTI5ICAgICA/ICAgICAzNS43Mjg3Ky0xLjIzMTEg
ICAgICAgID8gbWlnaHQgYmUgMS4wMzE4eCBzbG93ZXIKICAgYXJyYXktcHJvdG90eXBlLXJlZHVj
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNS4wMjIzKy0xLjg2ODcgICAgICAgICAgIDM0
LjMyMDMrLTEuOTY3MCAgICAgICAgICBtaWdodCBiZSAxLjAyMDV4IGZhc3RlcgogICBhcnJheS1w
cm90b3R5cGUtcmVkdWNlUmlnaHQgICAgICAgICAgICAgICAgICAgICAgIDMyLjY4NDYrLTEuNTY2
OCAgICAgPyAgICAgMzQuMDMwMistMS4zOTQ5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQxMnggc2xv
d2VyCiAgIGFycmF5LXByb3RvdHlwZS1zb21lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MzcuNDczMCstMS4yODk4ICAgICA/ICAgICAzNy45Mzg3Ky0xLjYxMTQgICAgICAgID8gbWlnaHQg
YmUgMS4wMTI0eCBzbG93ZXIKICAgYXJyYXktc3BsaWNlLWNvbnRpZ3VvdXMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAzMi4xMTIwKy0xLjUzODAgICAgICAgICAgIDMxLjcxMzArLTEuNjg0NyAg
ICAgICAgICBtaWdodCBiZSAxLjAxMjZ4IGZhc3RlcgogICBhcnJheS13aXRoLWRvdWJsZS1hZGQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjg4ODUrLTAuMDc5NiAgICAgPyAgICAgIDQu
MDgzNCstMC4xMjI3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDUwMXggc2xvd2VyCiAgIGFycmF5LXdp
dGgtZG91YmxlLWluY3JlbWVudCAgICAgICAgICAgICAgICAgICAgICAgIDMuNjA4MistMC42MjY0
ICAgICAgICAgICAgMy4zMzMwKy0wLjE4NDEgICAgICAgICAgbWlnaHQgYmUgMS4wODI2eCBmYXN0
ZXIKICAgYXJyYXktd2l0aC1kb3VibGUtbXVsLWFkZCAgICAgICAgICAgICAgICAgICAgICAgICAg
NC44NDUxKy0wLjI1OTMgICAgICAgICAgICA0LjczNzcrLTAuMTc3OCAgICAgICAgICBtaWdodCBi
ZSAxLjAyMjd4IGZhc3RlcgogICBhcnJheS13aXRoLWRvdWJsZS1zdW0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAzLjAyOTIrLTAuMDg4NyAgICAgPyAgICAgIDMuMjUxOSstMC4yODUyICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDczNXggc2xvd2VyCiAgIGFycmF5LXdpdGgtaW50MzItYWRkLXN1
YiAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNjk1NCstMC4xODgyICAgICAgICAgICAgNS41
NzMyKy0wLjAzOTMgICAgICAgICAgbWlnaHQgYmUgMS4wMjE5eCBmYXN0ZXIKICAgYXJyYXktd2l0
aC1pbnQzMi1vci1kb3VibGUtc3VtICAgICAgICAgICAgICAgICAgICAgMy4yOTMxKy0wLjEwNDMg
ICAgICAgICAgICAzLjE0NDkrLTAuMDg1OCAgICAgICAgICBtaWdodCBiZSAxLjA0NzF4IGZhc3Rl
cgogICBBcnJheUJ1ZmZlci1EYXRhVmlldy1hbGxvYy1sYXJnZS1sb25nLWxpdmVkICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTEuMTUwNSst
MS43MjkyICAgICAgICAgICA1MC4xMzY4Ky0xLjA4MjMgICAgICAgICAgbWlnaHQgYmUgMS4wMjAy
eCBmYXN0ZXIKICAgQXJyYXlCdWZmZXItRGF0YVZpZXctYWxsb2MtbG9uZy1saXZlZCAgICAgICAg
ICAgICAxOC41MzMyKy0wLjg1MTMgICAgID8gICAgIDE5LjcyNDArLTEuMTIyMSAgICAgICAgPyBt
aWdodCBiZSAxLjA2NDN4IHNsb3dlcgogICBBcnJheUJ1ZmZlci1JbnQzMkFycmF5LWJ5dGVPZmZz
ZXQgICAgICAgICAgICAgICAgICAzLjkyMzQrLTAuMTMwOSAgICAgICAgICAgIDMuODQwMCstMC4w
OTMzICAgICAgICAgIG1pZ2h0IGJlIDEuMDIxN3ggZmFzdGVyCiAgIEFycmF5QnVmZmVyLUludDhB
cnJheS1hbGxvYy1sYXJnZS1sb25nLWxpdmVkICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNDkuMzUzOCstMS42Mjc0ICAgICA/ICAgICA1MC42
MzU3Ky0yLjQ3MzYgICAgICAgID8gbWlnaHQgYmUgMS4wMjYweCBzbG93ZXIKICAgQXJyYXlCdWZm
ZXItSW50OEFycmF5LWFsbG9jLWxvbmctbGl2ZWQtYnVmZmVyICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjYuMTMyMSstMS45NjUzICAgICAg
ICAgICAyNC44MDk5Ky0wLjU4NzUgICAgICAgICAgbWlnaHQgYmUgMS4wNTMzeCBmYXN0ZXIKICAg
QXJyYXlCdWZmZXItSW50OEFycmF5LWFsbG9jLWxvbmctbGl2ZWQgICAgICAgICAgICAxOC41NTM4
Ky0xLjM0MDEgICAgID8gICAgIDE4LjU5MjQrLTEuNjc4NCAgICAgICAgPwogICBBcnJheUJ1ZmZl
ci1JbnQ4QXJyYXktYWxsb2MgICAgICAgICAgICAgICAgICAgICAgIDE2LjUyNTQrLTEuMzAyMCAg
ICAgICAgICAgMTYuNDA5MystMC45NzA1ICAgICAgICAKICAgYXJyb3dmdW5jaXRvbi1kaXJlY3Qt
YXJndW1lbnRzICAgICAgICAgICAgICAgICAgICAgMS4xNTExKy0wLjEyMDggICAgICAgICAgICAx
LjA4OTIrLTAuMDQ5MyAgICAgICAgICBtaWdodCBiZSAxLjA1Njh4IGZhc3RlcgogICBhcnJvd2Z1
bmNpdG9uLXJlZmVyZW5jZS1hcmd1bWVudHMgICAgICAgICAgICAgICAgICAwLjc0ODIrLTAuMDM0
MSAgICAgPyAgICAgIDAuNzU0OSstMC4wMzA1ICAgICAgICA/CiAgIGFycm93ZnVuY3Rpb24tY2Fs
bC1pbi1jbGFzcy1jb25zdHJ1Y3RvciAgICAgICAgICAgMjEuODc5MSstMS4yNTMyICAgICAgICAg
ICAyMS40NzczKy0wLjUxOTYgICAgICAgICAgbWlnaHQgYmUgMS4wMTg3eCBmYXN0ZXIKICAgYXJy
b3dmdW5jdGlvbi1jYWxsLWluLWNsYXNzLW1ldGhvZCAgICAgICAgICAgICAgICAxMC4yNTQ2Ky0w
LjQwNDUgICAgID8gICAgIDEwLjUyNjUrLTAuNDA3MCAgICAgICAgPyBtaWdodCBiZSAxLjAyNjV4
IHNsb3dlcgogICBhcnJvd2Z1bmN0aW9uLWNhbGwtaW4tZnVuY3Rpb24gICAgICAgICAgICAgICAg
ICAgIDEwLjU5OTQrLTAuMzkyNCAgICAgPyAgICAgMTEuMDA1OCstMC40MTI5ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDM4M3ggc2xvd2VyCiAgIGFycm93ZnVuY3Rpb24tY2FsbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDguNzYyMSstMC4yMTA4ICAgICBeICAgICAgOC4zODYyKy0wLjEz
MzYgICAgICAgIF4gZGVmaW5pdGVseSAxLjA0NDh4IGZhc3RlcgogICBhc21qc19ib29sX2J1ZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjIzMjMrLTAuMTY4NSAgICAgPyAg
ICAgIDYuMjcwOCstMC4yMDY2ICAgICAgICA/CiAgIGFzc2lnbi1jdXN0b20tc2V0dGVyLXBvbHlt
b3JwaGljICAgICAgICAgICAgICAgICAgIDQuMDYyMystMC4yNDEwICAgICAgICAgICAgNC4wMzU0
Ky0wLjE5MTMgICAgICAgIAogICBhc3NpZ24tY3VzdG9tLXNldHRlciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA2LjU0MTMrLTAuMTg0OCAgICAgPyAgICAgIDYuNzA1MSstMC4yNzczICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDI1MHggc2xvd2VyCiAgIGJhc2ljLXNldCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuODU5OSstMC4zMzk3ICAgICA/ICAgICAgOC4x
NjQzKy0wLjcyOTcgICAgICAgID8gbWlnaHQgYmUgMS4wMzg3eCBzbG93ZXIKICAgYmlnLWludC1t
dWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy41MTY4Ky0wLjA5MTkg
ICAgID8gICAgICAzLjYzMDMrLTAuMTQzMCAgICAgICAgPyBtaWdodCBiZSAxLjAzMjN4IHNsb3dl
cgogICBiaWdzd2l0Y2gtaW5kaXJlY3Qtc3ltYm9sLW9yLXVuZGVmaW5lZCAgICAgICAgICAgMzU4
LjkxNzkrLTguNTc0NiAgICAgPyAgICAzNTguOTQwNSstMTQuMDU0NyAgICAgICA/CiAgIGJpZ3N3
aXRjaC1pbmRpcmVjdC1zeW1ib2wgICAgICAgICAgICAgICAgICAgICAgICAgNzYuNTQxOCstMi40
MzkwICAgICA/ICAgICA3Ny4xNzU5Ky0yLjg3NTQgICAgICAgID8KICAgYmlnc3dpdGNoLWluZGly
ZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NC40Njg2Ky0xLjY0OTQgICAgICAg
ICAgIDQ0LjIxNDMrLTEuMTU2MyAgICAgICAgCiAgIGJpZ3N3aXRjaCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMjQuMDY3OCstMS4zNjM3ICAgICA/ICAgICAyNC40Mzcw
Ky0wLjg5MzkgICAgICAgID8gbWlnaHQgYmUgMS4wMTUzeCBzbG93ZXIKICAgYm9vbGVhbi10ZXN0
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4zODc1Ky0wLjA3ODkgICAg
ICAgICAgICAzLjM0MTYrLTAuMDQ2MiAgICAgICAgICBtaWdodCBiZSAxLjAxMzd4IGZhc3Rlcgog
ICBib3VuZC1mdW5jdGlvbi1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjI0
OTIrLTAuMzc3NiAgICAgICAgICAgMTAuMjMxNystMC4yNzI0ICAgICAgICAKICAgYm91bmQtZnVu
Y3Rpb24tY29uc3RydWN0aW9uLXBlcmZvcm1hbmNlICAgICAgICAgICA3My4zMTE2Ky0yLjE1NDkg
ICAgID8gICAgIDczLjc0MTYrLTIuNzU0NyAgICAgICAgPwogICBicmFuY2gtZm9sZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjIwOTUrLTAuMTE2NyAgICAgPyAgICAg
IDQuMjI3MistMC4xMjEyICAgICAgICA/CiAgIGJyYW5jaC1vbi1zdHJpbmctYXMtYm9vbGVhbiAg
ICAgICAgICAgICAgICAgICAgICAgMTEuMTE5NSstMC41MTEzICAgICA/ICAgICAxMi4xNDQwKy0w
Ljc3ODIgICAgICAgID8gbWlnaHQgYmUgMS4wOTIxeCBzbG93ZXIKICAgYnVnLTE1MzQzMSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy40MjIzKy0wLjEyNzUgICAgID8g
ICAgICAzLjQ2MDkrLTAuMjU2MSAgICAgICAgPyBtaWdodCBiZSAxLjAxMTN4IHNsb3dlcgogICBi
dWlsZC1sYXJnZS1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5Ljc0NTcr
LTAuNTM0NCAgICAgICAgICAgMjkuNzQxNSstMC4yODUyICAgICAgICAKICAgYnktdmFsLWdlbmVy
aWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi42MjU2Ky0wLjEyNDAgICAg
ID8gICAgICAyLjcxNDUrLTAuNDIyOCAgICAgICAgPyBtaWdodCBiZSAxLjAzMzh4IHNsb3dlcgog
ICBjYWxsLW9yLW5vdC1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMxLjg2
OTUrLTAuODU4MiAgICAgPyAgICAgMzIuNTcwMystMS4zMjA3ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDIyMHggc2xvd2VyCiAgIGNhbGwtc3ByZWFkLWFwcGx5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMjUuNjIzMystMC42NDk0ICAgICAgICAgICAyNS40OTk2Ky0wLjU0MjMgICAgICAg
IAogICBjYWxsLXNwcmVhZC1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI2
LjE2NjArLTAuNzY5MCAgICAgPyAgICAgMjYuMjk1OSstMS4wNDExICAgICAgICA/CiAgIGNhbGwt
dXNpbmctc3ByZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuNTA2MCstMC4z
NTM5ICAgICAgICAgICAgOS4zNjkzKy0wLjMwMjEgICAgICAgICAgbWlnaHQgYmUgMS4wMTQ2eCBm
YXN0ZXIKICAgY2FwdHVyZWQtYXNzaWdubWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMC40NzAzKy0wLjAxNTggICAgID8gICAgICAwLjQ5NTUrLTAuMDUwNCAgICAgICAgPyBtaWdo
dCBiZSAxLjA1MzZ4IHNsb3dlcgogICBjYXN0LWludC10by1kb3VibGUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1LjE0MzYrLTAuMTQ5MiAgICAgPyAgICAgIDUuMjczNystMC4wNjcy
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI1M3ggc2xvd2VyCiAgIGNlbGwtYXJndW1lbnQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMTA5MCstMC4xNjA1ICAgICA/ICAgICAg
My4xNjI3Ky0wLjE4MjggICAgICAgID8gbWlnaHQgYmUgMS4wMTczeCBzbG93ZXIKICAgY2ZnLXNp
bXBsaWZ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4xMjM5Ky0wLjEx
NzQgICAgICAgICAgICAzLjA4MzErLTAuMDQ4OSAgICAgICAgICBtaWdodCBiZSAxLjAxMzJ4IGZh
c3RlcgogICBjaGFpbi1nZXR0ZXItYWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDExLjg2MzUrLTAuMzIyMCAgICAgPyAgICAgMTIuMTA5NCstMC4zNzE3ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDIwN3ggc2xvd2VyCiAgIGNtcGVxLW9iai10by1vYmotb3RoZXIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDkuMjQ3MystMC4yNDQzICAgICA/ICAgICAgOS42NDQ0Ky0wLjMxNzQg
ICAgICAgID8gbWlnaHQgYmUgMS4wNDI5eCBzbG93ZXIKICAgY29uY2F0LWFwcGVuZC1vbmUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC44MzA1Ky0wLjU2MjMgICAgICAgICAgICA4
LjgyNTErLTAuNjkxMiAgICAgICAgCiAgIGNvbnN0YW50LXRlc3QgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQuODY3NystMC4xMzgxICAgICAgICAgICAgNC43NzYzKy0wLjEz
NjkgICAgICAgICAgbWlnaHQgYmUgMS4wMTkxeCBmYXN0ZXIKICAgY3JlYXRlLWxvdHMtb2YtZnVu
Y3Rpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgNi42NTI3Ky0wLjA5MDQgICAgICEgICAg
ICA3LjA2NTgrLTAuMjkwOCAgICAgICAgISBkZWZpbml0ZWx5IDEuMDYyMXggc2xvd2VyCiAgIGNz
ZS1uZXctYXJyYXktYnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNzcxMSst
MC4xMTg3ICAgICA/ICAgICAgMi43OTg1Ky0wLjE2MjYgICAgICAgID8KICAgY3NlLW5ldy1hcnJh
eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4wMzkwKy0wLjQ3ODIgICAg
ICAgICAgICAyLjgwNjErLTAuMDU4NyAgICAgICAgICBtaWdodCBiZSAxLjA4MzB4IGZhc3Rlcgog
ICBjdXN0b20tc2V0dGVyLWdldHRlci1hcy1wdXQtZ2V0LWJ5LWlkICAgICAgICAgICAgICAwLjYy
MjYrLTAuMDE5NiAgICAgICAgICAgIDAuNjAwOSstMC4wMTk5ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDM2MnggZmFzdGVyCiAgIERhdGFWaWV3LWN1c3RvbS1wcm9wZXJ0aWVzICAgICAgICAgICAgICAg
ICAgICAgICAgNTcuODQ2NSstMS43MjA0ICAgICA/ICAgICA1OS4zNzIzKy0zLjI0OTQgICAgICAg
ID8gbWlnaHQgYmUgMS4wMjY0eCBzbG93ZXIKICAgZGVsYXktdGVhci1vZmYtYXJndW1lbnRzLXN0
cmljdG1vZGUgICAgICAgICAgICAgICAgNy4yMjUyKy0wLjIxNTkgICAgID8gICAgICA3LjQ0OTkr
LTAuNDI2MSAgICAgICAgPyBtaWdodCBiZSAxLjAzMTF4IHNsb3dlcgogICBkZWx0YS1ibHVlLXRy
eS1jYXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUzLjA0NDkrLTAuOTg0NiAgICAg
ISAgICAgNjQuMzk0NystMC45NjIzICAgICAgICAhIGRlZmluaXRlbHkgMS4yMTQweCBzbG93ZXIK
ICAgZGVsdGFibHVlLWZvci1vZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNC44
MTAxKy0xLjQ2OTkgICAgID8gICAgIDM3LjIwNzIrLTEuMjEzMyAgICAgICAgPyBtaWdodCBiZSAx
LjA2ODl4IHNsb3dlcgogICBkZWx0YWJsdWUtdmFyYXJncyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDE3LjcxMDErLTAuMzEzNCAgICAgPyAgICAgMTcuOTU5NCstMC42MDA1ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDE0MXggc2xvd2VyCiAgIGRlc3RydWN0dXJpbmctYXJndW1lbnRzICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMzcuOTAyNistMC43NjI1ICAgICAgICAgICAzNy41NjU5
Ky0xLjQ2NTAgICAgICAgIAogICBkZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1i
eS1mdW5jdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLjYxMzkrLTAuMDU2NSAgICAgICAgICAgIDAuNTczNSstMC4wMjQ2ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDcwNXggZmFzdGVyCiAgIGRlc3RydWN0dXJpbmctc3dhcCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDQuODk3MystMC4yMDY5ICAgICA/ICAgICAgNC45NDc1
Ky0wLjE0MjMgICAgICAgID8gbWlnaHQgYmUgMS4wMTAyeCBzbG93ZXIKICAgZGlyZWN0LWFyZ3Vt
ZW50cy1nZXRieXZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgMS4xNjU2Ky0wLjEzMTggICAg
ICAgICAgICAxLjE1MDgrLTAuMDk0NyAgICAgICAgICBtaWdodCBiZSAxLjAxMjl4IGZhc3Rlcgog
ICBkaXJlY3QtYXJndW1lbnRzLWxlbmd0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjU4
MDUrLTAuMjc1NyAgICAgPyAgICAgIDguMDEyNystMC43OTIwICAgICAgICA/IG1pZ2h0IGJlIDEu
MDU3MHggc2xvd2VyCiAgIGRpcmVjdC1hcmd1bWVudHMtb3ZlcnJpZGRlbi1sZW5ndGggICAgICAg
ICAgICAgICAgIDcuNjIyMystMC4xNDYyICAgICA/ICAgICAgNy43NTMwKy0wLjM1MTMgICAgICAg
ID8gbWlnaHQgYmUgMS4wMTcxeCBzbG93ZXIKICAgZGlyZWN0LWFyZ3VtZW50cy1wb3NzaWJseS1v
dmVycmlkZGVuLWxlbmd0aCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA4LjAzNjMrLTAuMjQ3MyAgICAgPyAgICAgIDguMDYyNystMC4zODQ0
ICAgICAgICA/CiAgIGRpcmVjdC1jYWxsLWFyaXR5LW1pc21hdGNoICAgICAgICAgICAgICAgICAg
ICAgICAgNjUuMDg5MSstMi45NDIyICAgICA/ICAgICA2OC4xMjg2Ky0zLjAyMzQgICAgICAgID8g
bWlnaHQgYmUgMS4wNDY3eCBzbG93ZXIKICAgZGlyZWN0LWNhbGwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA1OS44MDM2Ky0yLjc1NTEgICAgICAgICAgIDU2LjU2MDErLTIu
MDYyNSAgICAgICAgICBtaWdodCBiZSAxLjA1NzN4IGZhc3RlcgogICBkaXJlY3QtY29uc3RydWN0
LWFyaXR5LW1pc21hdGNoICAgICAgICAgICAgICAgICAgIDk5LjIxMzgrLTEuNTM4NiAgICAgICAg
ICAgOTguNDg1NistMS4zODYwICAgICAgICAKICAgZGlyZWN0LWNvbnN0cnVjdCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA4OC4wMDkyKy0yLjc0NzUgICAgICAgICAgIDg1Ljk0ODQr
LTAuNzkwMyAgICAgICAgICBtaWdodCBiZSAxLjAyNDB4IGZhc3RlcgogICBkaXJlY3QtdGFpbC1j
YWxsLWFyaXR5LW1pc21hdGNoICAgICAgICAgICAgICAgICAgIDcyLjMxOTUrLTIuNjUzMiAgICAg
PyAgICAgNzIuODYxNCstMi40ODgxICAgICAgICA/CiAgIGRpcmVjdC10YWlsLWNhbGwtaW5saW5l
ZC1jYWxsZXItYXJpdHktbWlzbWF0Y2ggICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA2OC41NjQxKy0yLjU2NjkgICAgICAgICAgIDY3LjA2MjQr
LTEuNjYwNSAgICAgICAgICBtaWdodCBiZSAxLjAyMjR4IGZhc3RlcgogICBkaXJlY3QtdGFpbC1j
YWxsLWlubGluZWQtY2FsbGVyICAgICAgICAgICAgICAgICAgIDYxLjA4MTgrLTEuNzUyMyAgICAg
PyAgICAgNjIuNDUxNistMy44NTQ2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIyNHggc2xvd2VyCiAg
IGRpcmVjdC10YWlsLWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjcuMTUx
OCstMi41NDg1ICAgICAgICAgICA2NC45MjY0Ky0zLjM4NjYgICAgICAgICAgbWlnaHQgYmUgMS4w
MzQzeCBmYXN0ZXIKICAgZGl2LWJvb2xlYW4tZG91YmxlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNC40MTM3Ky0wLjIyNTEgICAgID8gICAgICA0LjUyNDArLTAuMjIyNiAgICAgICAg
PyBtaWdodCBiZSAxLjAyNTB4IHNsb3dlcgogICBkaXYtYm9vbGVhbiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA4LjAxNTUrLTAuMzAwOSAgICAgPyAgICAgIDguMDIwNSst
MC4yODIxICAgICAgICA/CiAgIGRvdWJsZS1nZXQtYnktdmFsLW91dC1vZi1ib3VuZHMgICAgICAg
ICAgICAgICAgICAgIDUuMjAyNystMC4xODcwICAgICAgICAgICAgNS4xODk2Ky0wLjE4NjAgICAg
ICAgIAogICBkb3VibGUtcG9sbHV0aW9uLWdldGJ5dmFsICAgICAgICAgICAgICAgICAgICAgICAg
ICA3LjgxNjMrLTAuMzAxMCAgICAgPyAgICAgIDcuODcxOCstMC4yMDg5ICAgICAgICA/CiAgIGRv
dWJsZS1wb2xsdXRpb24tcHV0YnlvZmZzZXQgICAgICAgICAgICAgICAgICAgICAgIDQuMDk1Mist
MC4xNTg0ICAgICA/ICAgICAgNC4yNjEyKy0wLjA4MTcgICAgICAgID8gbWlnaHQgYmUgMS4wNDA1
eCBzbG93ZXIKICAgZG91YmxlLXJlYWwtdXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyOS4wODMyKy0zLjA1OTMgICAgICAgICAgIDI2LjE5MjkrLTEuMTQxNCAgICAgICAgICBt
aWdodCBiZSAxLjExMDN4IGZhc3RlcgogICBkb3VibGUtdG8taW50MzItdHlwZWQtYXJyYXktbm8t
aW5saW5lICAgICAgICAgICAgICAyLjUzNjUrLTAuMDI3MiAgICAgPyAgICAgIDIuNjM4MistMC4x
ODE1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQwMXggc2xvd2VyCiAgIGRvdWJsZS10by1pbnQzMi10
eXBlZC1hcnJheSAgICAgICAgICAgICAgICAgICAgICAgIDIuNTA2MSstMC4wMjcyICAgICA/ICAg
ICAgMi42NjY3Ky0wLjE2NDAgICAgICAgID8gbWlnaHQgYmUgMS4wNjQxeCBzbG93ZXIKICAgZG91
YmxlLXRvLWludDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0Mi4wMjg1Ky00
Ljk0MzMgICAgICAgICAgMTM4LjgwNjErLTIuMjgxMyAgICAgICAgICBtaWdodCBiZSAxLjAyMzJ4
IGZhc3RlcgogICBkb3VibGUtdG8tdWludDMyLXR5cGVkLWFycmF5LW5vLWlubGluZSAgICAgICAg
ICAgICAyLjU2NjcrLTAuMDk3NSAgICAgPyAgICAgIDIuNjk0NCstMC4xMzgwICAgICAgICA/IG1p
Z2h0IGJlIDEuMDQ5OHggc2xvd2VyCiAgIGRvdWJsZS10by11aW50MzItdHlwZWQtYXJyYXkgICAg
ICAgICAgICAgICAgICAgICAgIDIuNjUwOCstMC4wODU0ICAgICAgICAgICAgMi42Mjc3Ky0wLjEw
NDkgICAgICAgIAogICBlbGlkYWJsZS1uZXctb2JqZWN0LWRhZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE5LjgxMjQrLTAuNzI2MiAgICAgPyAgICAgMjAuMTg1MistMC45NzAyICAgICAgICA/
IG1pZ2h0IGJlIDEuMDE4OHggc2xvd2VyCiAgIGVsaWRhYmxlLW5ldy1vYmplY3Qtcm9mbGNvcHRl
ciAgICAgICAgICAgICAgICAgICAgMTguOTM3NistMS4zMDMwICAgICA/ICAgICAxOS43OTY2Ky0y
LjExNjUgICAgICAgID8gbWlnaHQgYmUgMS4wNDU0eCBzbG93ZXIKICAgZWxpZGFibGUtbmV3LW9i
amVjdC10aGVuLWNhbGwgICAgICAgICAgICAgICAgICAgICAxOC40Mzg1Ky0xLjI5MjUgICAgICAg
ICAgIDE3LjYyOTMrLTAuMjc4OSAgICAgICAgICBtaWdodCBiZSAxLjA0NTl4IGZhc3RlcgogICBl
bGlkYWJsZS1uZXctb2JqZWN0LXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LjUyMTEr
LTEuNTMxMyAgICAgICAgICAgMTguODUxMystMC41NDgzICAgICAgICAgIG1pZ2h0IGJlIDEuMDM1
NXggZmFzdGVyCiAgIGVtcHR5LXN0cmluZy1wbHVzLWludCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDUuNDMwNistMC4xMDkzICAgICA/ICAgICAgNS42MDgzKy0wLjMyMDkgICAgICAgID8g
bWlnaHQgYmUgMS4wMzI3eCBzbG93ZXIKICAgZW1zY3JpcHRlbi1jdWJlMmhhc2ggICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyNC41OTM5Ky0xLjYwMjggICAgICAgICAgIDIzLjYwNDIrLTAu
Mzc2MyAgICAgICAgICBtaWdodCBiZSAxLjA0MTl4IGZhc3RlcgogICBldmFsLWNhY2hlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LjQzNTArLTAuODA5MCAgICAgPyAg
ICAgMTkuOTE1NSstMS4zNzMwICAgICAgICA/IG1pZ2h0IGJlIDEuMDI0N3ggc2xvd2VyCiAgIGV2
YWwtY29kZS1mdGwtcmVlbnRyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjkuNjIwOCst
MC45MTUzICAgICA/ICAgICAzMS40MjIxKy00LjE1MjAgICAgICAgID8gbWlnaHQgYmUgMS4wNjA4
eCBzbG93ZXIKICAgZXZhbC1jb2RlLWZ0bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA0NS44MTM1Ky0yLjI3NjMgICAgICAgICAgIDQ1LjM1OTIrLTIuMDMzMSAgICAgICAgICBt
aWdodCBiZSAxLjAxMDB4IGZhc3RlcgogICBldmFsLWNvbXB1dGUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDI4LjI2MzQrLTEuNzI5MiAgICAgICAgICAgMjYuODQ1MistMS43
NjU3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDUyOHggZmFzdGVyCiAgIGV2YWwtbm90LWV2YWwtY29t
cHV0ZS1hcmdzICAgICAgICAgICAgICAgICAgICAgICAgMjUuMjI5NSstMS4xNzk4ICAgICA/ICAg
ICAyNS44NDg2Ky0xLjI3MDQgICAgICAgID8gbWlnaHQgYmUgMS4wMjQ1eCBzbG93ZXIKICAgZXZh
bC1ub3QtZXZhbC1jb21wdXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNi43ODg0Ky0x
Ljg2MjMgICAgICAgICAgIDI2LjExNDArLTEuNTY5OSAgICAgICAgICBtaWdodCBiZSAxLjAyNTh4
IGZhc3RlcgogICBleGl0LWxlbmd0aC1vbi1wbGFpbi1vYmplY3QgICAgICAgICAgICAgICAgICAg
ICAgIDEyLjA1MjIrLTAuNTI0OCAgICAgICAgICAgMTEuNzU1NistMC4zMDM3ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDI1MnggZmFzdGVyCiAgIGV4dGVybmFsLWFyZ3VtZW50cy1nZXRieXZhbCAgICAg
ICAgICAgICAgICAgICAgICAgIDEuMjQ2OSstMC4wNjkzICAgICA/ICAgICAgMS4yNTMzKy0wLjAz
MzcgICAgICAgID8KICAgZXh0ZXJuYWwtYXJndW1lbnRzLXB1dGJ5dmFsICAgICAgICAgICAgICAg
ICAgICAgICAgMi4zMzQ4Ky0wLjE1MDkgICAgICAgICAgICAyLjMyMzIrLTAuMTIxNCAgICAgICAg
CiAgIGZha2UtaXRlcmF0b3JzLXRoYXQtdGhyb3ctd2hlbi1maW5pc2hlZCAgICAgICAgICAgOTMu
NzQwMystNC40MTQyICAgICAhICAgIDEwMy44NDQ4Ky00LjE3NzEgICAgICAgICEgZGVmaW5pdGVs
eSAxLjEwNzh4IHNsb3dlcgogICBmaXhlZC10eXBlZC1hcnJheS1zdG9yYWdlLXZhci1pbmRleCAg
ICAgICAgICAgICAgICAxLjc5MDMrLTAuMDUwOCAgICAgPyAgICAgIDEuNzkxOSstMC4wNzc3ICAg
ICAgICA/CiAgIGZpeGVkLXR5cGVkLWFycmF5LXN0b3JhZ2UgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEuMzk3NSstMC4wNDk1ICAgICA/ICAgICAgMS40MDU5Ky0wLjA1NjEgICAgICAgID8KICAg
RmxvYXQzMkFycmF5LW1hdHJpeC1tdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4yNDk1
Ky0wLjI2MjQgICAgID8gICAgICA2LjM4NTQrLTAuMjgyOSAgICAgICAgPyBtaWdodCBiZSAxLjAy
MTd4IHNsb3dlcgogICBGbG9hdDMyQXJyYXktdG8tRmxvYXQ2NEFycmF5LXNldCAgICAgICAgICAg
ICAgICAgIDQwLjA4OTYrLTEuODgzMSAgICAgICAgICAgMzguNzY4MistMi44MDk1ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDM0MXggZmFzdGVyCiAgIEZsb2F0NjRBcnJheS1hbGxvYy1sb25nLWxpdmVk
ICAgICAgICAgICAgICAgICAgICAgNjEuNTgzMSstMC44ODU1ICAgICA/ICAgICA2Mi41ODEwKy0x
LjI3ODggICAgICAgID8gbWlnaHQgYmUgMS4wMTYyeCBzbG93ZXIKICAgRmxvYXQ2NEFycmF5LXRv
LUludDE2QXJyYXktc2V0ICAgICAgICAgICAgICAgICAgICA1MC4wODY4Ky0xLjQxNDkgICAgICAg
ICAgIDQ5Ljc3MjkrLTEuNjU1OSAgICAgICAgCiAgIGZvbGQtZG91YmxlLXRvLWludCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTQuMTk0OCstMC4zOTAzICAgICAgICAgICAxMy45ODc5
Ky0wLjY0NDMgICAgICAgICAgbWlnaHQgYmUgMS4wMTQ4eCBmYXN0ZXIKICAgZm9sZC1nZXQtYnkt
aWQtdG8tbXVsdGktZ2V0LWJ5LW9mZnNldC1yYXJlLWludCAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjA5MzkrLTAuMzM2OSAgICAgICAg
ICAgIDkuMDA3OSstMC40MDc2ICAgICAgICAKICAgZm9sZC1nZXQtYnktaWQtdG8tbXVsdGktZ2V0
LWJ5LW9mZnNldCAgICAgICAgICAgICAgNi44NDQyKy0wLjIyNjYgICAgID8gICAgICA2Ljg0NzUr
LTAuNDA3NCAgICAgICAgPwogICBmb2xkLW11bHRpLWdldC1ieS1vZmZzZXQtdG8tZ2V0LWJ5LW9m
ZnNldCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA1LjE1NjQrLTEuMDMyMSAgICAgPyAgICAgIDUuMjYxMystMS4wMjA5ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDIwM3ggc2xvd2VyCiAgIGZvbGQtbXVsdGktZ2V0LWJ5LW9mZnNldC10by1wb2x5
LWdldC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNS41MTUwKy0xLjE4MDcgICAgICAgICAgICA0LjkxODUrLTAuODg0MiAg
ICAgICAgICBtaWdodCBiZSAxLjEyMTN4IGZhc3RlcgogICBmb2xkLW11bHRpLXB1dC1ieS1vZmZz
ZXQtdG8tcG9seS1wdXQtYnktb2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDQuNzQ3OSstMC4yNTc2ICAgICA/ICAgICAgNS42NDU3
Ky0xLjI1NTcgICAgICAgID8gbWlnaHQgYmUgMS4xODkxeCBzbG93ZXIKICAgZm9sZC1tdWx0aS1w
dXQtYnktb2Zmc2V0LXRvLXB1dC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4xMDMyKy0xLjQ5MDUgICAgICAgICAgICA0
LjIyMTErLTAuMzE1MyAgICAgICAgICBtaWdodCBiZSAxLjIwOTB4IGZhc3RlcgogICBmb2xkLW11
bHRpLXB1dC1ieS1vZmZzZXQtdG8tcmVwbGFjZS1vci10cmFuc2l0aW9uLXB1dC1ieS1vZmZzZXQg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ny40OTE4Ky0wLjY2NjQgICAgID8gICAgICA3LjU2MTYrLTAuODg0OSAgICAgICAgPwogICBmb2xk
LXB1dC1ieS1pZC10by1tdWx0aS1wdXQtYnktb2Zmc2V0ICAgICAgICAgICAgICA5LjE0NTcrLTEu
MzgxNiAgICAgICAgICAgIDkuMDYzNystMS4yNzk3ICAgICAgICAKICAgZm9sZC1wdXQtYnktdmFs
LXdpdGgtc3RyaW5nLXRvLW11bHRpLXB1dC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC4xNjY3Ky0wLjI0MTAgICAgID8g
ICAgICA4LjYyMzgrLTAuNjA0MyAgICAgICAgPyBtaWdodCBiZSAxLjA1NjB4IHNsb3dlcgogICBm
b2xkLXB1dC1ieS12YWwtd2l0aC1zeW1ib2wtdG8tbXVsdGktcHV0LWJ5LW9mZnNldCAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjUyMDYr
LTAuNzI1MyAgICAgICAgICAgIDguNDQ5NistMC42NTU2ICAgICAgICAKICAgZm9sZC1wdXQtc3Ry
dWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4zMjE2Ky0xLjA2MTUgICAg
ICAgICAgICA0LjI0NTUrLTEuNDQ4NiAgICAgICAgICBtaWdodCBiZSAxLjAxNzl4IGZhc3Rlcgog
ICBmb3Itb2YtYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3LjQ0
MjcrLTAuNjMwNyAgICAgPyAgICAgMTcuNzA2MCstMC42MTE1ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDE1MXggc2xvd2VyCiAgIGZvci1vZi1pdGVyYXRlLWFycmF5LWVudHJpZXMgICAgICAgICAgICAg
ICAgICAgICAgIDguNTUyMCstMC4yODk2ICAgICAgICAgICAgOC41NDM5Ky0wLjIzOTIgICAgICAg
IAogICBmb3Itb2YtaXRlcmF0ZS1hcnJheS1rZXlzICAgICAgICAgICAgICAgICAgICAgICAgICA1
LjI1NDArLTAuMDgxMCAgICAgICAgICAgIDUuMTk0MCstMC4yMDg4ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDExNnggZmFzdGVyCiAgIGZvci1vZi1pdGVyYXRlLWFycmF5LXZhbHVlcyAgICAgICAgICAg
ICAgICAgICAgICAgIDQuNTkzOCstMC4xOTA2ICAgICA/ICAgICAgNS4xMDc3Ky0wLjc3NDcgICAg
ICAgID8gbWlnaHQgYmUgMS4xMTE5eCBzbG93ZXIKICAgZnJlZXplLWFuZC1kby13b3JrICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxMy43MTQ0Ky0wLjQyODYgICAgID8gICAgIDEzLjk0
NDMrLTAuNDYxNCAgICAgICAgPyBtaWdodCBiZSAxLjAxNjh4IHNsb3dlcgogICBmcm91bmQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjk4NjgrLTAuNDY5OSAg
ICAgICAgICAgMTAuODE5MCstMC4yNTU4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE1NXggZmFzdGVy
CiAgIGZ0bC1saWJyYXJ5LWlubGluaW5nLWRhdGF2aWV3ICAgICAgICAgICAgICAgICAgICAgODUu
NDk3OSstMi45NTU4ICAgICAgICAgICA4NC44MjU4Ky0xLjY2MTIgICAgICAgIAogICBmdGwtbGli
cmFyeS1pbmxpbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LjQ2MDYrLTEuNDE5
NCAgICAgPyAgICAgMjUuODU5OCstMS42MjA0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDU3Mnggc2xv
d2VyCiAgIGZ0bC1wb2x5bW9ycGhpYy1iaXRhbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAx
NDYuMzMzOCstNC4zODQxICAgICAgICAgIDE0My41OTczKy0zLjc2ODQgICAgICAgICAgbWlnaHQg
YmUgMS4wMTkxeCBmYXN0ZXIKICAgZnRsLXBvbHltb3JwaGljLWJpdG9yICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDE0NS42NzQ4Ky00LjIxNDUgICAgICAgICAgMTQxLjY3OTQrLTMuMDU2MyAg
ICAgICAgICBtaWdodCBiZSAxLjAyODJ4IGZhc3RlcgogICBmdGwtcG9seW1vcnBoaWMtYml0eG9y
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQ3LjE0NTErLTExLjA1NDggICAgPyAgICAxNDcu
MjAyNistNC40ODM5ICAgICAgICA/CiAgIGZ0bC1wb2x5bW9ycGhpYy1sc2hpZnQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxNzQuOTc2NCstNC40OTkwICAgICA/ICAgIDE3OC4yNTIwKy00LjAw
NDIgICAgICAgID8gbWlnaHQgYmUgMS4wMTg3eCBzbG93ZXIKICAgZnRsLXBvbHltb3JwaGljLXJz
aGlmdCAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3NC40NzUxKy00LjA2NTYgICAgICAgICAg
MTcyLjczMjkrLTQuODY0MiAgICAgICAgICBtaWdodCBiZSAxLjAxMDF4IGZhc3RlcgogICBmdGwt
cG9seW1vcnBoaWMtU3RyaW5nRnJvbUNoYXJDb2RlICAgICAgICAgICAgICAgIDQ0LjA0MjErLTAu
NzE2OCAgICAgPyAgICAgNDQuNDUyMistMS4zMzY5ICAgICAgICA/CiAgIGZ0bC1wb2x5bW9ycGhp
Yy1zdWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNjguNTQwNCstNC4yMzc2ICAgICA/
ICAgIDE3NC4yNzIxKy0zLjYwMDcgICAgICAgID8gbWlnaHQgYmUgMS4wMzQweCBzbG93ZXIKICAg
ZnRsLXBvbHltb3JwaGljLXVyc2hpZnQgICAgICAgICAgICAgICAgICAgICAgICAgIDE5MS45MDY2
Ky05LjY3MzYgICAgICAgICAgMTg4Ljk1MDcrLTMuNDA1OCAgICAgICAgICBtaWdodCBiZSAxLjAx
NTZ4IGZhc3RlcgogICBmdW5jdGlvbi1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA5LjA1MTYrLTAuMzEwMSAgICAgICAgICAgIDguODQ0OCstMC4yMzY2ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDIzNHggZmFzdGVyCiAgIGZ1bmN0aW9uLWRvdC1hcHBseSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIuNDg1OCstMC4wNjU1ICAgICA/ICAgICAgMi41NzM4Ky0w
LjEzMDIgICAgICAgID8gbWlnaHQgYmUgMS4wMzU0eCBzbG93ZXIKICAgZnVuY3Rpb24tdGVzdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4wMjk3Ky0wLjAxODQgICAgID8g
ICAgICAzLjA4MTArLTAuMTA3NSAgICAgICAgPyBtaWdodCBiZSAxLjAxNjl4IHNsb3dlcgogICBm
dW5jdGlvbi13aXRoLWV2YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQxLjM4Njcr
LTAuOTgyNCAgICAgICAgICAgNDEuMjQ0NCstMC45MzQ5ICAgICAgICAKICAgZ2NzZS1wb2x5LWdl
dC1sZXNzLW9idmlvdXMgICAgICAgICAgICAgICAgICAgICAgICAxNS44Nzk2Ky0wLjcxMjAgICAg
ICAgICAgIDE1LjcyOTYrLTAuMzk3MiAgICAgICAgCiAgIGdjc2UtcG9seS1nZXQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYuNzY1MSstMC40NjYwICAgICA/ICAgICAxNy40
MTM2Ky0wLjk5NTggICAgICAgID8gbWlnaHQgYmUgMS4wMzg3eCBzbG93ZXIKICAgZ2NzZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy45NjE4Ky0wLjQzODYg
ICAgICAgICAgICAzLjc3NjIrLTAuMjAwNyAgICAgICAgICBtaWdodCBiZSAxLjA0OTF4IGZhc3Rl
cgogICBnZW5lcmF0b3ItY3JlYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
Ljk4MjgrLTAuMDI4OSAgICAgICAgICAgIDAuOTY2MCstMC4wNTEyICAgICAgICAgIG1pZ2h0IGJl
IDEuMDE3NHggZmFzdGVyCiAgIGdlbmVyYXRvci1maWIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMjAuNjE4NSstMC42NTk2ICAgICAgICAgICAxOS44OTExKy0wLjU2NTIgICAg
ICAgICAgbWlnaHQgYmUgMS4wMzY2eCBmYXN0ZXIKICAgZ2VuZXJhdG9yLWZ1bmN0aW9uLWNyZWF0
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgNC4zNzUwKy0wLjE5NjUgICAgICAgICAgICA0LjM3
NDUrLTAuMjIyNiAgICAgICAgCiAgIGdlbmVyYXRvci1zdW5zcGlkZXItYWNjZXNzLW5zaWV2ZSAg
ICAgICAgICAgICAgICAgIDUuMTkyMystMC4yMjYzICAgICA/ICAgICAgNS40Mjg4Ky0wLjE1MzEg
ICAgICAgID8gbWlnaHQgYmUgMS4wNDU1eCBzbG93ZXIKICAgZ2VuZXJhdG9yLXdpdGgtc2V2ZXJh
bC10eXBlcyAgICAgICAgICAgICAgICAgICAgIDExMS4yNDQ0Ky0yMS45MzUxICAgID8gICAgMTEz
LjM4MTUrLTE5LjI5NTMgICAgICAgPyBtaWdodCBiZSAxLjAxOTJ4IHNsb3dlcgogICBnZXQtYnkt
aWQtYmltb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi42OTU3Ky0w
LjA3NTIgICAgICAgICAgICAyLjY1MTArLTAuMDMzMyAgICAgICAgICBtaWdodCBiZSAxLjAxNjl4
IGZhc3RlcgogICBnZXQtYnktaWQtYmltb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlv
biAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA1LjA2MTArLTAuMTMzOCAgICAgICAgICAgIDUuMDA4NSstMC4xNDA0ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDEwNXggZmFzdGVyCiAgIGdldC1ieS1pZC1jaGFpbi1mcm9tLXRyeS1ibG9jayAgICAg
ICAgICAgICAgICAgICAgIDIuMTQ1OSstMC4wNDcxICAgICA/ICAgICAgMi4xODYxKy0wLjA4NzAg
ICAgICAgID8gbWlnaHQgYmUgMS4wMTg3eCBzbG93ZXIKICAgZ2V0LWJ5LWlkLWNoZWNrLXN0cnVj
dHVyZS1lbGltaW5hdGlvbiAgICAgICAgICAgICAgMy45Nzc2Ky0wLjA5ODYgICAgID8gICAgICA0
LjA5MTkrLTAuMjI4OCAgICAgICAgPyBtaWdodCBiZSAxLjAyODd4IHNsb3dlcgogICBnZXQtYnkt
aWQtcHJvdG8tb3Itc2VsZiAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjkzNTUrLTAuNzU3
OSAgICAgICAgICAgIDguODU1MCstMC43MTE2ICAgICAgICAKICAgZ2V0LWJ5LWlkLXF1YWRtb3Jw
aGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4xNDEzKy0wLjA5OTkgICAg
ICAgICAgICAzLjA2OTcrLTAuMDY5OSAgICAgICAgICBtaWdodCBiZSAxLjAyMzN4IGZhc3Rlcgog
ICBnZXQtYnktaWQtc2VsZi1vci1wcm90byAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjA2
OTMrLTAuODU3NSAgICAgPyAgICAgIDkuMjMxOSstMC45NDY4ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDE3OXggc2xvd2VyCiAgIGdldC1ieS12YWwtb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDUuMTQ1NistMC4wODQyICAgICAgICAgICAgNS4wODgxKy0wLjE4MDIgICAgICAg
ICAgbWlnaHQgYmUgMS4wMTEzeCBmYXN0ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN0cmluZy1iaW1v
cnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uLXNpbXBsZSAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjk2MjMrLTAuMTA2NSAg
ICAgICAgICAgIDIuOTA4MCstMC4wMzEzICAgICAgICAgIG1pZ2h0IGJlIDEuMDE4N3ggZmFzdGVy
CiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctYmltb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGlt
aW5hdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA3LjYxOTUrLTAuMjEyMiAgICAgPyAgICAgIDcuNzAyNystMC4yMzQ2ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDEwOXggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctY2hhaW4t
ZnJvbS10cnktYmxvY2sgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMi4zMzY3Ky0wLjI2MjMgICAgICAgICAgICAyLjI4OTUrLTAuMTE2NyAg
ICAgICAgICBtaWdodCBiZSAxLjAyMDZ4IGZhc3RlcgogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5n
LWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjQwODkrLTAuMjIyMSAgICAgICAgICAgIDYu
MzIxNystMC4xNTc0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzOHggZmFzdGVyCiAgIGdldC1ieS12
YWwtd2l0aC1zdHJpbmctcHJvdG8tb3Itc2VsZiAgICAgICAgICAgICAgMTIuMDk4NCstMC40OTYz
ICAgICAgICAgICAxMC4zMjUwKy0xLjMyNzkgICAgICAgICAgbWlnaHQgYmUgMS4xNzE4eCBmYXN0
ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN0cmluZy1xdWFkbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUt
ZWxpbWluYXRpb24tc2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMuNjU5MistMC4xNzMwICAgICAgICAgICAgMy40OTI0Ky0wLjA2
NzMgICAgICAgICAgbWlnaHQgYmUgMS4wNDc4eCBmYXN0ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN0
cmluZy1zZWxmLW9yLXByb3RvICAgICAgICAgICAgICAxMS4yNDA4Ky0xLjUyNTkgICAgICAgICAg
IDExLjA2MjYrLTEuNDY2NiAgICAgICAgICBtaWdodCBiZSAxLjAxNjF4IGZhc3RlcgogICBnZXQt
YnktdmFsLXdpdGgtc3ltYm9sLWJpbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24t
c2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDIuOTE4NCstMC4xMjE4ICAgICA/ICAgICAgMi45NTM4Ky0wLjExODYgICAgICAgID8g
bWlnaHQgYmUgMS4wMTIxeCBzbG93ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1iaW1vcnBo
aWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuNDE0NystMC4zMTIwICAgICA/ICAgICAx
MS4wMTk4Ky0xLjgwMTUgICAgICAgID8gbWlnaHQgYmUgMS4wNTgxeCBzbG93ZXIKICAgZ2V0LWJ5
LXZhbC13aXRoLXN5bWJvbC1jaGFpbi1mcm9tLXRyeS1ibG9jayAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjI3MjcrLTAuMTAwOCAgICAg
ICAgICAgIDIuMjQ1NystMC4wNzc3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyMHggZmFzdGVyCiAg
IGdldC1ieS12YWwtd2l0aC1zeW1ib2wtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuMDM4
MistMC4zMTM0ICAgICAgICAgICAgOS41NDI5Ky0wLjIzNzIgICAgICAgICAgbWlnaHQgYmUgMS4w
NTE5eCBmYXN0ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1wcm90by1vci1zZWxmICAgICAg
ICAgICAgICAxMC4yMzYwKy0xLjE4MjAgICAgID8gICAgIDEwLjc5MDcrLTEuMjk2OSAgICAgICAg
PyBtaWdodCBiZSAxLjA1NDJ4IHNsb3dlcgogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLXF1YWRt
b3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy43NzU4Ky0wLjEzMTQg
ICAgICAgICAgICAzLjc0MjIrLTAuMDc5MiAgICAgICAgCiAgIGdldC1ieS12YWwtd2l0aC1zeW1i
b2wtc2VsZi1vci1wcm90byAgICAgICAgICAgICAgMTAuNTY3MystMS4wNDYwICAgICA/ICAgICAx
MS4wMjYyKy0xLjI1MTYgICAgICAgID8gbWlnaHQgYmUgMS4wNDM0eCBzbG93ZXIKICAgZ2V0X2J5
X3ZhbC1JbnQzMkFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS41MTAxKy0wLjA0
NTMgICAgID8gICAgICAxLjU2MDArLTAuMTE1OSAgICAgICAgPyBtaWdodCBiZSAxLjAzMzB4IHNs
b3dlcgogICBnZXRfY2FsbGVlX21vbm9tb3JwaGljICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyLjYzOTkrLTAuMTU0NSAgICAgPyAgICAgIDIuNzUyNSstMC4yMTAyICAgICAgICA/IG1pZ2h0
IGJlIDEuMDQyN3ggc2xvd2VyCiAgIGdldF9jYWxsZWVfcG9seW1vcnBoaWMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDMuMjkwMCstMC4xMTc1ICAgICA/ICAgICAgMy4zMTYxKy0wLjIyMzgg
ICAgICAgID8KICAgZ2V0dGVyLW5vLWFjdGl2YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMy40MDg4Ky0wLjA5NzAgICAgICAgICAgICAzLjMwMDArLTAuMDYyOSAgICAgICAgICBt
aWdodCBiZSAxLjAzMzB4IGZhc3RlcgogICBnZXR0ZXItcHJvdG90eXBlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA1LjM4MzYrLTAuMTM3MSAgICAgICAgICAgIDUuMzE1MystMC4x
NzQyICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyOXggZmFzdGVyCiAgIGdldHRlci1yaWNoYXJkcy10
cnktY2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgNzkuMzY0OSstMS42NTMwICAgICA/ICAg
ICA4MC45MjAwKy0yLjI3NDUgICAgICAgID8gbWlnaHQgYmUgMS4wMTk2eCBzbG93ZXIKICAgZ2V0
dGVyLXJpY2hhcmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3Mi43NzIyKy0x
LjU5NjIgICAgICAgICAgIDcxLjU1MjIrLTMuNTMxNyAgICAgICAgICBtaWdodCBiZSAxLjAxNzF4
IGZhc3RlcgogICBnZXR0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzLjg4MDMrLTAuMDY4MyAgICAgICAgICAgIDMuODcxOSstMC4wODU3ICAgICAgICAKICAg
Z2xvYmFsLWNvZGUtZnRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNy4wODQw
Ky0yLjAxNTMgICAgID8gICAgIDM3LjI3MDYrLTIuNjQzNSAgICAgICAgPwogICBnbG9iYWwtaXNO
YU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjcyOTArLTAuODcwMyAg
ICAgPyAgICAgMTMuMzI2NistMC41OTU4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ2OXggc2xvd2Vy
CiAgIGdsb2JhbC1vYmplY3QtYWNjZXNzLXdpdGgtbXV0YXRpbmctc3RydWN0dXJlICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNzU3Nyst
MC41MTY2ICAgICAgICAgICAgNS42MDU3Ky0wLjM2OTkgICAgICAgICAgbWlnaHQgYmUgMS4wMjcx
eCBmYXN0ZXIKICAgZ2xvYmFsLXZhci1jb25zdC1pbmZlci1maXJlLWZyb20tb3B0ICAgICAgICAg
ICAgICAgMC45OTI5Ky0wLjAyOTEgICAgID8gICAgICAxLjAwNzMrLTAuMDY5NCAgICAgICAgPyBt
aWdodCBiZSAxLjAxNDV4IHNsb3dlcgogICBnbG9iYWwtdmFyLWNvbnN0LWluZmVyICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLjg4OTUrLTAuMDgxMSAgICAgICAgICAgIDAuODQ5MystMC4w
NTU0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ3M3ggZmFzdGVyCiAgIGhhcmQtb3ZlcmZsb3ctY2hl
Y2stZXF1YWwgICAgICAgICAgICAgICAgICAgICAgICAgMjcuMjY4NistMi45MDIyICAgICAgICAg
ICAyNS43NjQ3Ky0yLjQyNDMgICAgICAgICAgbWlnaHQgYmUgMS4wNTg0eCBmYXN0ZXIKICAgaGFy
ZC1vdmVyZmxvdy1jaGVjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNi4wNDgxKy0y
LjA1MzggICAgICAgICAgIDI1Ljk3MzgrLTIuNjQyMSAgICAgICAgCiAgIGhhcy1vd24tcHJvcGVy
dHktbmFtZS1jYWNoZSAgICAgICAgICAgICAgICAgICAgICAgNjAuNTQzMystMi4xMzQwICAgICAg
ICAgICA2MC4xNTYyKy0xLjgxMjEgICAgICAgIAogICBIYXNoTWFwLXB1dC1nZXQtaXRlcmF0ZS1r
ZXlzICAgICAgICAgICAgICAgICAgICAgIDIzLjI2MjIrLTAuMjY5OCAgICAgPyAgICAgMjMuNDQ3
MistMC41OTMzICAgICAgICA/CiAgIEhhc2hNYXAtcHV0LWdldC1pdGVyYXRlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMjMuNjUwMCstMC42NTkxICAgICAgICAgICAyMy4xOTQ4Ky0wLjMyOTAg
ICAgICAgICAgbWlnaHQgYmUgMS4wMTk2eCBmYXN0ZXIKICAgSGFzaE1hcC1zdHJpbmctcHV0LWdl
dC1pdGVyYXRlICAgICAgICAgICAgICAgICAgICAyNC4xOTIyKy0wLjUyOTcgICAgID8gICAgIDI1
LjUzODcrLTEuMDU5OCAgICAgICAgPyBtaWdodCBiZSAxLjA1NTd4IHNsb3dlcgogICBob2lzdC1t
YWtlLXJvcGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjI4MzYrLTAuMjMw
NCAgICAgPyAgICAgIDQuMzkxNistMC4zNzU2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI1Mnggc2xv
d2VyCiAgIGhvaXN0LXBvbHktY2hlY2stc3RydWN0dXJlLWVmZmVjdGZ1bC1sb29wICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNDY1NSst
MC4xNDI3ICAgICA/ICAgICAgMy40NzMyKy0wLjE1MTMgICAgICAgID8KICAgaG9pc3QtcG9seS1j
aGVjay1zdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICAgMi40MTM1Ky0wLjA5ODMgICAg
ID8gICAgICAyLjQ4ODQrLTAuMTc2MCAgICAgICAgPyBtaWdodCBiZSAxLjAzMTF4IHNsb3dlcgog
ICBpbXBsaWNpdC1iaWdzd2l0Y2gtaW5kaXJlY3Qtc3ltYm9sICAgICAgICAgICAgICAgIDUyLjYy
NTQrLTAuNjI0NiAgICAgPyAgICAgNTMuODI4NSstMi4xODI2ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDIyOXggc2xvd2VyCiAgIGltdWwtZG91YmxlLW9ubHkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQuNTk3NistMC4xNTM3ICAgICAgICAgICAgNC41NDQzKy0wLjE5NjggICAgICAg
ICAgbWlnaHQgYmUgMS4wMTE3eCBmYXN0ZXIKICAgaW11bC1pbnQtb25seSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNS43ODMyKy0wLjE1OTIgICAgICAgICAgICA1LjcyMDgr
LTAuMTg5MyAgICAgICAgICBtaWdodCBiZSAxLjAxMDl4IGZhc3RlcgogICBpbXVsLW1peGVkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjgwMTIrLTAuMjIzMCAgICAg
ICAgICAgIDQuNzMzMistMC4xMTI4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0NHggZmFzdGVyCiAg
IGluLWZvdXItY2FzZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAuNzI3
OSstMi44MTg2ICAgICAgICAgICAyMC42NDMxKy0xLjYyNDggICAgICAgIAogICBpbi1vbmUtY2Fz
ZS1mYWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjI3NDArLTAuMzk1OCAg
ICAgPyAgICAgIDkuNDI1NCstMC40MjkyICAgICAgICA/IG1pZ2h0IGJlIDEuMDE2M3ggc2xvd2Vy
CiAgIGluLW9uZS1jYXNlLXRydWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDku
MDI3NCstMC4yNjQ2ICAgICA/ICAgICAgOS41NDgyKy0wLjM2MzYgICAgICAgID8gbWlnaHQgYmUg
MS4wNTc3eCBzbG93ZXIKICAgaW4tdHdvLWNhc2VzICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOS44MjgyKy0wLjYyODMgICAgICAgICAgICA5LjgxOTIrLTAuNjIxNiAgICAg
ICAgCiAgIGluZGV4ZWQtcHJvcGVydGllcy1pbi1vYmplY3RzICAgICAgICAgICAgICAgICAgICAg
IDMuMTcyNSstMC4wNTMwICAgICAgICAgICAgMy4xNjMxKy0wLjA5NjQgICAgICAgIAogICBpbmZl
ci1jbG9zdXJlLWNvbnN0LXRoZW4tbW92LW5vLWlubGluZSAgICAgICAgICAgICAzLjQ2NDMrLTAu
MDk4OCAgICAgICAgICAgIDMuMzk4NystMC4wNjI1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE5M3gg
ZmFzdGVyCiAgIGluZmVyLWNsb3N1cmUtY29uc3QtdGhlbi1tb3YgICAgICAgICAgICAgICAgICAg
ICAgIDguMzU1MystMC4yODA1ICAgICA/ICAgICAgOC40NTk1Ky0wLjQ5OTYgICAgICAgID8gbWln
aHQgYmUgMS4wMTI1eCBzbG93ZXIKICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVuLXB1dC10by1z
Y29wZS1uby1pbmxpbmUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOS42NjE1Ky0wLjM3NTMgICAgID8gICAgICA5LjkxNDgrLTAuNzA0NyAg
ICAgICAgPyBtaWdodCBiZSAxLjAyNjJ4IHNsb3dlcgogICBpbmZlci1jbG9zdXJlLWNvbnN0LXRo
ZW4tcHV0LXRvLXNjb3BlICAgICAgICAgICAgIDI0LjEwMzErLTEuNjQ4MCAgICAgICAgICAgMjMu
OTQwOSstMS40MjE0ICAgICAgICAKICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVuLXJlZW50ZXIt
bm8taW5saW5lICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMzkuMzM5OSstMS4zMDk3ICAgICA/ICAgICAzOS41MzM5Ky0yLjQ5NDggICAgICAg
ID8KICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVuLXJlZW50ZXIgICAgICAgICAgICAgICAgICAy
My43Mjk3Ky0wLjk4MDAgICAgID8gICAgIDI0LjI0NzkrLTEuMDkzMCAgICAgICAgPyBtaWdodCBi
ZSAxLjAyMTh4IHNsb3dlcgogICBpbmZlci1jb25zdGFudC1nbG9iYWwtcHJvcGVydHkgICAgICAg
ICAgICAgICAgICAgICAyLjg3NTIrLTAuMDkxNyAgICAgPyAgICAgIDIuOTAyMistMC4wMzY1ICAg
ICAgICA/CiAgIGluZmVyLWNvbnN0YW50LXByb3BlcnR5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDIuNTg3NistMC4xNDM0ICAgICAgICAgICAgMi40OTA1Ky0wLjA4NzEgICAgICAgICAgbWln
aHQgYmUgMS4wMzkweCBmYXN0ZXIKICAgaW5mZXItb25lLXRpbWUtY2xvc3VyZS10ZW4tdmFycyAg
ICAgICAgICAgICAgICAgICAgOC4wNjc2Ky0wLjg2NTAgICAgICAgICAgICA3LjM3MDErLTAuMTk4
MyAgICAgICAgICBtaWdodCBiZSAxLjA5NDZ4IGZhc3RlcgogICBpbmZlci1vbmUtdGltZS1jbG9z
dXJlLXR3by12YXJzICAgICAgICAgICAgICAgICAgICA2Ljk4MjErLTAuMjQzMyAgICAgICAgICAg
IDYuOTMwNystMC4xNTg1ICAgICAgICAKICAgaW5mZXItb25lLXRpbWUtY2xvc3VyZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNi45OTQ2Ky0wLjE3MDEgICAgICAgICAgICA2LjkwNzUrLTAu
MjY2NCAgICAgICAgICBtaWdodCBiZSAxLjAxMjZ4IGZhc3RlcgogICBpbmZlci1vbmUtdGltZS1k
ZWVwLWNsb3N1cmUgICAgICAgICAgICAgICAgICAgICAgIDEyLjQ2MzIrLTAuNDQzOSAgICAgPyAg
ICAgMTIuNzA4NystMC43MTA4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE5N3ggc2xvd2VyCiAgIGlu
bGluZS1hcmd1bWVudHMtYWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuOTA4OCst
MC4yMDMyICAgICA/ICAgICAgNC4yMzY4Ky0wLjQyMTcgICAgICAgID8gbWlnaHQgYmUgMS4wODM5
eCBzbG93ZXIKICAgaW5saW5lLWFyZ3VtZW50cy1hbGlhc2VkLWFjY2VzcyAgICAgICAgICAgICAg
ICAgICAgNC4wMDM5Ky0wLjIyMDUgICAgICAgICAgICAzLjk3OTErLTAuMTYwMiAgICAgICAgCiAg
IGlubGluZS1hcmd1bWVudHMtbG9jYWwtZXNjYXBlICAgICAgICAgICAgICAgICAgICAgIDQuMDg1
OSstMC4xOTkzICAgICAgICAgICAgNC4wMTQxKy0wLjI1NjAgICAgICAgICAgbWlnaHQgYmUgMS4w
MTc5eCBmYXN0ZXIKICAgaW5saW5lLWdldC1zY29wZWQtdmFyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMi43MzEzKy0wLjEyOTcgICAgICAgICAgICAyLjY4NzQrLTAuMTc5OSAgICAgICAg
ICBtaWdodCBiZSAxLjAxNjN4IGZhc3RlcgogICBpbmxpbmVkLXB1dC1ieS1pZC10cmFuc2l0aW9u
ICAgICAgICAgICAgICAgICAgICAgICA4LjYwOTYrLTAuMzk1OCAgICAgPyAgICAgIDguNzAxNSst
MC41MTAzICAgICAgICA/IG1pZ2h0IGJlIDEuMDEwN3ggc2xvd2VyCiAgIGlubGluZWQtcHV0LWJ5
LXZhbC13aXRoLXN0cmluZy10cmFuc2l0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNDkuNDAwOSstMy4xODUzICAgICAgICAgICA0Ny42
MzM2Ky0xLjE4OTAgICAgICAgICAgbWlnaHQgYmUgMS4wMzcxeCBmYXN0ZXIKICAgaW5saW5lZC1w
dXQtYnktdmFsLXdpdGgtc3ltYm9sLXRyYW5zaXRpb24gICAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ny44NDQ2Ky0xLjg0ODggICAgID8gICAg
IDQ4Ljg4NTUrLTIuMTg5OCAgICAgICAgPyBtaWdodCBiZSAxLjAyMTh4IHNsb3dlcgogICBpbnN0
YW5jZW9mLWJvdW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLjUxNzkrLTEu
NjIyMiAgICAgICAgICAgMjIuNDQwMistMS4yMjAxICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ4MHgg
ZmFzdGVyCiAgIGludC1vci1vdGhlci1hYnMtdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAg
ICAgIDkuMTIxMystMC4zODg0ICAgICA/ICAgICAgOS4yOTMyKy0wLjM0MTkgICAgICAgID8gbWln
aHQgYmUgMS4wMTg4eCBzbG93ZXIKICAgaW50LW9yLW90aGVyLWFicy16ZXJvLXRoZW4tZ2V0LWJ5
LXZhbCAgICAgICAgICAgICAxNi42MTQwKy0wLjg4NzIgICAgICAgICAgIDE2LjQ1MDgrLTAuNzkx
NiAgICAgICAgCiAgIGludC1vci1vdGhlci1hZGQtdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAg
ICAgICAgIDUuMDM4MistMC4xNDU5ICAgICAgICAgICAgNS4wMTMwKy0wLjE1OTcgICAgICAgIAog
ICBpbnQtb3Itb3RoZXItYWRkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjE5
ODErLTAuMTMzNiAgICAgICAgICAgIDYuMTU2MistMC4zNjYxICAgICAgICAKICAgaW50LW9yLW90
aGVyLWRpdi10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgNC40OTc0Ky0wLjExNTYg
ICAgID8gICAgICA0LjU0MTcrLTAuMTA5NCAgICAgICAgPwogICBpbnQtb3Itb3RoZXItbWF4LXRo
ZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICA0LjgxNzcrLTAuMTY1NiAgICAgPyAgICAg
IDQuODUyOCstMC4xMDUyICAgICAgICA/CiAgIGludC1vci1vdGhlci1taW4tdGhlbi1nZXQtYnkt
dmFsICAgICAgICAgICAgICAgICAgIDUuMjI0MystMC41NjQ4ICAgICAgICAgICAgNS4wNjU3Ky0w
LjIyMDYgICAgICAgICAgbWlnaHQgYmUgMS4wMzEzeCBmYXN0ZXIKICAgaW50LW9yLW90aGVyLW1v
ZC10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgNC40MDU3Ky0wLjEzODIgICAgICAg
ICAgICA0LjM4NjArLTAuMjExMSAgICAgICAgCiAgIGludC1vci1vdGhlci1tdWwtdGhlbi1nZXQt
YnktdmFsICAgICAgICAgICAgICAgICAgIDYuNTUwMCstMC4zMDE2ICAgICA/ICAgICAgNi42Mzcz
Ky0wLjQ2MzEgICAgICAgID8gbWlnaHQgYmUgMS4wMTMzeCBzbG93ZXIKICAgaW50LW9yLW90aGVy
LW5lZy10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAyMi40MjM2Ky0wLjUxNTIgICAg
ICEgICAgMTA5LjQ5NDQrLTYuMjM4NSAgICAgICAgISBkZWZpbml0ZWx5IDQuODgzMHggc2xvd2Vy
CiAgIGludC1vci1vdGhlci1uZWctemVyby10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgMTUu
NjQ3MCstMC4zOTQ1ICAgICA/ICAgICAxNi4yNTM1Ky0xLjA4NTMgICAgICAgID8gbWlnaHQgYmUg
MS4wMzg4eCBzbG93ZXIKICAgaW50LW9yLW90aGVyLXN1Yi10aGVuLWdldC1ieS12YWwgICAgICAg
ICAgICAgICAgICAgNi40MjQ3Ky0wLjE1NDMgICAgID8gICAgICA2LjU1NzIrLTAuMjIxMyAgICAg
ICAgPyBtaWdodCBiZSAxLjAyMDZ4IHNsb3dlcgogICBpbnQtb3Itb3RoZXItc3ViICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0LjYzNTIrLTAuMzYyNCAgICAgICAgICAgIDQuMzk2
OCstMC4xMjczICAgICAgICAgIG1pZ2h0IGJlIDEuMDU0MnggZmFzdGVyCiAgIGludC1vdmVyZmxv
dy1sb2NhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNzY1MSstMC4xMTAzICAg
ICAgICAgICAgNC42ODk3Ky0wLjEzMTQgICAgICAgICAgbWlnaHQgYmUgMS4wMTYxeCBmYXN0ZXIK
ICAgSW50MTZBcnJheS1hbGxvYy1sb25nLWxpdmVkICAgICAgICAgICAgICAgICAgICAgICA0Mi4x
NDU0Ky0xLjcwMTQgICAgICAgICAgIDQwLjUyNTkrLTEuNTI0MyAgICAgICAgICBtaWdodCBiZSAx
LjA0MDB4IGZhc3RlcgogICBJbnQxNkFycmF5LWJ1YmJsZS1zb3J0LXdpdGgtYnl0ZUxlbmd0aCAg
ICAgICAgICAgIDIzLjU2OTIrLTIuMDI4NCAgICAgICAgICAgMjIuMTE0OSstMS43OTYzICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDY1OHggZmFzdGVyCiAgIEludDE2QXJyYXktYnViYmxlLXNvcnQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMjEuMTUwOCstMC43OTg2ICAgICAgICAgICAyMC45Mjk2
Ky0wLjU4ODkgICAgICAgICAgbWlnaHQgYmUgMS4wMTA2eCBmYXN0ZXIKICAgSW50MTZBcnJheS1s
b2FkLWludC1tdWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4wMzYyKy0wLjE0NDMgICAg
ICAgICAgICAyLjAxODcrLTAuMTIwOCAgICAgICAgCiAgIEludDE2QXJyYXktdG8tSW50MzJBcnJh
eS1zZXQgICAgICAgICAgICAgICAgICAgICAgMzkuMTk5MystMS4zOTQxICAgICAgICAgICAzNy45
NTkwKy0xLjkyOTMgICAgICAgICAgbWlnaHQgYmUgMS4wMzI3eCBmYXN0ZXIKICAgSW50MzJBcnJh
eS1hbGxvYy1sYXJnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi44OTE0Ky0wLjI4NDgg
ICAgID8gICAgIDEzLjA5NTYrLTAuMzM3NiAgICAgICAgPyBtaWdodCBiZSAxLjAxNTh4IHNsb3dl
cgogICBJbnQzMkFycmF5LWFsbG9jLWxvbmctbGl2ZWQgICAgICAgICAgICAgICAgICAgICAgIDQ3
LjI3OTQrLTEuNDczMiAgICAgICAgICAgNDcuMjQ0NSstMS42Mzk5ICAgICAgICAKICAgSW50MzJB
cnJheS1hbGxvYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy45Mzg4Ky0wLjMw
MTggICAgICAgICAgICAzLjg3OTArLTAuMTcwMyAgICAgICAgICBtaWdodCBiZSAxLjAxNTR4IGZh
c3RlcgogICBJbnQzMkFycmF5LUludDhBcnJheS12aWV3LWFsbG9jICAgICAgICAgICAgICAgICAg
ICA5LjY4MTgrLTAuNDczMSAgICAgICAgICAgIDkuNTQ2MystMC40MTk1ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDE0MnggZmFzdGVyCiAgIGludDUyLWJhY2stYW5kLWZvcnRoICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDkuMzUxMistMS43OTU5ICAgICAgICAgICAgOC40NDU0Ky0wLjMyMDEg
ICAgICAgICAgbWlnaHQgYmUgMS4xMDczeCBmYXN0ZXIKICAgaW50NTItc3BpbGwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS41MDM4Ky0wLjI4MjkgICAgID8gICAgICA1
LjUwNjUrLTAuMTMyMiAgICAgICAgPwogICBJbnQ4QXJyYXktYWxsb2MtbG9uZy1saXZlZCAgICAg
ICAgICAgICAgICAgICAgICAgIDM3LjUzMjUrLTIuMTE4NyAgICAgPyAgICAgMzguODUyNystMS42
OTU5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM1Mnggc2xvd2VyCiAgIEludDhBcnJheS1sb2FkLXdp
dGgtYnl0ZUxlbmd0aCAgICAgICAgICAgICAgICAgICAgIDMuOTY0NSstMC4xOTM1ICAgICA/ICAg
ICAgMy45NjYzKy0wLjEyOTUgICAgICAgID8KICAgSW50OEFycmF5LWxvYWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMy45MzIyKy0wLjEzMDYgICAgICAgICAgICAzLjkyMTQr
LTAuMzA0NSAgICAgICAgCiAgIGludGVnZXItZGl2aWRlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDkuODM5NCstMC4yNDc5ICAgICA/ICAgICAgOS44ODYxKy0wLjI0NzYgICAg
ICAgID8KICAgaW50ZWdlci1tb2R1bG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMy4xMzc5Ky0wLjUwNDIgICAgICAgICAgICAyLjk3MzkrLTAuMDgxMSAgICAgICAgICBtaWdo
dCBiZSAxLjA1NTF4IGZhc3RlcgogICBpcy1hcnJheS1mb3ItYXJyYXkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyLjY4MjcrLTAuMTI1NSAgICAgICAgICAgIDIuNjAyMistMC4xMzk0
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDMwOXggZmFzdGVyCiAgIGlzLWFycmF5LWZvci1taXhlZC1j
YXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMTExMCstMC40MjA3ICAgICA/ICAgICAg
NS4yODI1Ky0wLjI1MjUgICAgICAgID8gbWlnaHQgYmUgMS4wMzM1eCBzbG93ZXIKICAgaXMtYXJy
YXktZm9yLW5vbi1hcnJheS1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgMi4zNDYzKy0wLjEy
MDkgICAgID8gICAgICAyLjM4NjQrLTAuMTAyNSAgICAgICAgPyBtaWdodCBiZSAxLjAxNzF4IHNs
b3dlcgogICBpcy1hcnJheS1mb3ItcHJveHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzLjQ1OTYrLTAuMTExOCAgICAgICAgICAgIDMuMzYxNistMC4wOTQxICAgICAgICAgIG1pZ2h0
IGJlIDEuMDI5MnggZmFzdGVyCiAgIGlzLWJvb2xlYW4tZm9sZC10cmlja3kgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDMuMjA5OSstMC4wNjQ3ICAgICAgICAgICAgMy4yMDQ0Ky0wLjA2MzMg
ICAgICAgIAogICBpcy1ib29sZWFuLWZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyLjQ3NzgrLTAuMDc3MiAgICAgPyAgICAgIDIuNTA2NSstMC4wOTg3ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDExNnggc2xvd2VyCiAgIGlzLWZ1bmN0aW9uLWZvbGQtdHJpY2t5LWludGVybmFs
LWZ1bmN0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTAuNTAyMSstMC40OTc4ICAgICAgICAgICAxMC4wMTkyKy0wLjIyMTMgICAgICAg
ICAgbWlnaHQgYmUgMS4wNDgyeCBmYXN0ZXIKICAgaXMtZnVuY3Rpb24tZm9sZC10cmlja3kgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMy40OTc5Ky0wLjE0MzYgICAgID8gICAgICAzLjUzMDYr
LTAuMTg4OSAgICAgICAgPwogICBpcy1mdW5jdGlvbi1mb2xkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyLjUwODkrLTAuMTA0NSAgICAgPyAgICAgIDIuNTQyOCstMC4wNjcxICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDEzNXggc2xvd2VyCiAgIGlzLW5vdC1jZWxsLXNwZWN1bGF0aW9u
LWZvci1lbXB0eS12YWx1ZSAgICAgICAgICAgMjUuMjQyMistMC4zODk2ICAgICA/ICAgICAyNi4y
NzAwKy0xLjQ1ODkgICAgICAgID8gbWlnaHQgYmUgMS4wNDA3eCBzbG93ZXIKICAgaXMtbnVtYmVy
LWZvbGQtdHJpY2t5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy40MDI1Ky0wLjExMTgg
ICAgICAgICAgICAzLjM0MTkrLTAuMDY2MiAgICAgICAgICBtaWdodCBiZSAxLjAxODF4IGZhc3Rl
cgogICBpcy1udW1iZXItZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
LjUxNDgrLTAuMDg3MyAgICAgPyAgICAgIDIuNTM1NystMC4xNTE5ICAgICAgICA/CiAgIGlzLW9i
amVjdC1vci1udWxsLWZvbGQtZnVuY3Rpb25zICAgICAgICAgICAgICAgICAgIDIuNDc5MistMC4w
NzAzICAgICA/ICAgICAgMi42MTY0Ky0wLjE0NTggICAgICAgID8gbWlnaHQgYmUgMS4wNTUzeCBz
bG93ZXIKICAgaXMtb2JqZWN0LW9yLW51bGwtZm9sZC1sZXNzLXRyaWNreSAgICAgICAgICAgICAg
ICAgMy41MDI0Ky0wLjIwMjkgICAgICAgICAgICAzLjQ2NDgrLTAuMDk0MyAgICAgICAgICBtaWdo
dCBiZSAxLjAxMDl4IGZhc3RlcgogICBpcy1vYmplY3Qtb3ItbnVsbC1mb2xkLXRyaWNreSAgICAg
ICAgICAgICAgICAgICAgICAzLjg0OTgrLTAuMjIxNiAgICAgICAgICAgIDMuNzMxMistMC4xMjM1
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDMxOHggZmFzdGVyCiAgIGlzLW9iamVjdC1vci1udWxsLWZv
bGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNTgxNystMC4xNTE1ICAgICAgICAgICAg
Mi41MjY5Ky0wLjEwMTggICAgICAgICAgbWlnaHQgYmUgMS4wMjE3eCBmYXN0ZXIKICAgaXMtb2Jq
ZWN0LW9yLW51bGwtdHJpY2tpZXItZnVuY3Rpb24gICAgICAgICAgICAgICAgMy40ODMxKy0wLjE0
MTUgICAgID8gICAgICAzLjY4MDIrLTAuMzk0MiAgICAgICAgPyBtaWdodCBiZSAxLjA1NjZ4IHNs
b3dlcgogICBpcy1vYmplY3Qtb3ItbnVsbC10cmlja2llci1pbnRlcm5hbC1mdW5jdGlvbiAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjQ4
OTArLTAuMzI0OSAgICAgICAgICAgMTAuMjM3OSstMC4zMTk5ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDI0NXggZmFzdGVyCiAgIGlzLW9iamVjdC1vci1udWxsLXRyaWNreS1mdW5jdGlvbiAgICAgICAg
ICAgICAgICAgIDMuMzY2MistMC4wNTkwICAgICA/ICAgICAgMy40MzQ4Ky0wLjA4MzQgICAgICAg
ID8gbWlnaHQgYmUgMS4wMjA0eCBzbG93ZXIKICAgaXMtb2JqZWN0LW9yLW51bGwtdHJpY2t5LWlu
dGVybmFsLWZ1bmN0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDcuNTc4MSstMC4xNTcyICAgICAgICAgICAgNy40NzQ0Ky0wLjI4MzAg
ICAgICAgICAgbWlnaHQgYmUgMS4wMTM5eCBmYXN0ZXIKICAgaXMtc3RyaW5nLWZvbGQtdHJpY2t5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4zNjYwKy0wLjExMjEgICAgICAgICAgICAz
LjM2MDYrLTAuMTI1OCAgICAgICAgCiAgIGlzLXN0cmluZy1mb2xkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIuNTg3MCstMC4xMTI0ICAgICAgICAgICAgMi41NDgyKy0wLjA2
MzggICAgICAgICAgbWlnaHQgYmUgMS4wMTUyeCBmYXN0ZXIKICAgaXMtc3ltYm9sLW1peGVkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC42OTI4Ky0wLjMzMDUgICAgID8gICAg
ICA0LjkwMTkrLTAuMjYzNSAgICAgICAgPyBtaWdodCBiZSAxLjA0NDV4IHNsb3dlcgogICBpcy1z
eW1ib2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjc3OTMrLTAu
MTg2MiAgICAgPyAgICAgIDEuOTA2NSstMC4yNDA0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDcxNXgg
c2xvd2VyCiAgIGlzLXVuZGVmaW5lZC1mb2xkLXRyaWNreSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDMuMDMwOCstMC4xNDk3ICAgICAgICAgICAgMi45NDk5Ky0wLjEwOTIgICAgICAgICAgbWln
aHQgYmUgMS4wMjc0eCBmYXN0ZXIKICAgaXMtdW5kZWZpbmVkLWZvbGQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMi41MDU4Ky0wLjA1ODcgICAgID8gICAgICAyLjU0MDgrLTAuMTE2
MSAgICAgICAgPyBtaWdodCBiZSAxLjAxNDB4IHNsb3dlcgogICBKU09OUC1uZWdhdGl2ZS0wICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjMyMzMrLTAuMDIzOCAgICAgPyAgICAg
IDAuMzQ4NCstMC4wMzMyICAgICAgICA/IG1pZ2h0IGJlIDEuMDc3OHggc2xvd2VyCiAgIGxhcmdl
LWludC1jYXB0dXJlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMDM2OCstMC4y
NDU5ICAgICAgICAgICAgNC4wMTMwKy0wLjE1NjEgICAgICAgIAogICBsYXJnZS1pbnQtbmVnICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjk0OTIrLTAuNTg3MiAgICAgPyAg
ICAgMTMuNzA4NystMC43NTcwICAgICAgICA/IG1pZ2h0IGJlIDEuMDU4N3ggc2xvd2VyCiAgIGxh
cmdlLWludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuMDkyNyst
MC40NDI2ICAgICA/ICAgICAxMS4xOTc4Ky0wLjQ5NzEgICAgICAgID8KICAgbGFyZ2UtbWFwLWl0
ZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOC4wNTA0Ky0wLjY4NDYgICAg
ID8gICAgIDI5LjMwNTQrLTIuMzA5NiAgICAgICAgPyBtaWdodCBiZSAxLjA0NDd4IHNsb3dlcgog
ICBsYXp5LWFycmF5LXNwZWNpZXMtd2F0Y2hwb2ludHMgICAgICAgICAgICAgICAgICAgIDIxLjgz
NTkrLTAuOTEyOSAgICAgPyAgICAgMjIuNjQxNistMi42OTEzICAgICAgICA/IG1pZ2h0IGJlIDEu
MDM2OXggc2xvd2VyCiAgIGxpY20tZHJhZ29ucy1vdXQtb2YtYm91bmRzICAgICAgICAgICAgICAg
ICAgICAgICAgMzYuNjg3NCstMS4yNDU5ICAgICA/ICAgICAzOC4yMDQyKy0yLjE5MTkgICAgICAg
ID8gbWlnaHQgYmUgMS4wNDEzeCBzbG93ZXIKICAgbGljbS1kcmFnb25zLW92ZXJmbG93ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxOS41OTEzKy0wLjM4MDEgICAgID8gICAgIDE5Ljg3NzIr
LTAuNTk0MCAgICAgICAgPyBtaWdodCBiZSAxLjAxNDZ4IHNsb3dlcgogICBsaWNtLWRyYWdvbnMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM5LjY5NzYrLTIuMjY3MyAgICAg
ICAgICAgMzguNTQ1OCstMS44NzAxICAgICAgICAgIG1pZ2h0IGJlIDEuMDI5OXggZmFzdGVyCiAg
IGxvYWQtdmFyYXJncy1lbGltaW5hdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgMTcuNTU3
OSstMS4xMzE3ICAgICAgICAgICAxNi44OTM4Ky0wLjY2MTkgICAgICAgICAgbWlnaHQgYmUgMS4w
MzkzeCBmYXN0ZXIKICAgbG9jYWxlLWNvbXBhcmUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyMi4wMDA5Ky0xLjk3NzcgICAgICAgICAgIDIxLjc3NTQrLTEuMjk5OSAgICAgICAg
ICBtaWdodCBiZSAxLjAxMDR4IGZhc3RlcgogICBsb2dpY2FsLW5vdC13ZWlyZC10eXBlcyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAzLjIzNDIrLTAuMDk1MCAgICAgICAgICAgIDMuMjAwNyst
MC4xNDM5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEwNXggZmFzdGVyCiAgIGxvZ2ljYWwtbm90ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuODQyMystMC4xMTQ0ICAgICAg
ICAgICAgNC42NDc0Ky0wLjExMDIgICAgICAgICAgbWlnaHQgYmUgMS4wNDE5eCBmYXN0ZXIKICAg
bG90cy1vZi1maWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS44NTk4
Ky0wLjM3NzcgICAgICAgICAgICA5LjQ5OTYrLTAuMjQ1MCAgICAgICAgICBtaWdodCBiZSAxLjAz
Nzl4IGZhc3RlcgogICBtYWtlLWluZGV4ZWQtc3RvcmFnZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzLjI3MTIrLTAuMTgzMCAgICAgPyAgICAgIDMuNzE0MSstMC4zMDk4ICAgICAgICA/
IG1pZ2h0IGJlIDEuMTM1NHggc2xvd2VyCiAgIG1ha2Utcm9wZS1jc2UgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDMuMjc1NSstMC4zOTU2ICAgICAgICAgICAgMy4yNTc4Ky0w
LjI1ODMgICAgICAgIAogICBtYW55LWZvcmVhY2gtY2FsbHMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyLjIwMzYrLTAuMTI4OCAgICAgPyAgICAgIDIuMzE4MSstMC4xNDk2ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDUyMHggc2xvd2VyCiAgIG1hbnktcmVwZWF0LXN0b3JlcyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMjEuMDcwMSstMC43ODk0ICAgICA/ICAgICAyMS41MDIx
Ky0xLjQyNjUgICAgICAgID8gbWlnaHQgYmUgMS4wMjA1eCBzbG93ZXIKICAgbWFwLWNvbnN0YW50
LWtleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3My40Mjk2Ky05LjMxNTMgICAg
ICAgICAgMTcxLjAzNjIrLTQuNTEwOCAgICAgICAgICBtaWdodCBiZSAxLjAxNDB4IGZhc3Rlcgog
ICBtYXAtZm9yLWVhY2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjEw
MDArLTAuMDg5OCAgICAgICAgICAgIDIuMDQwNCstMC4wNjMyICAgICAgICAgIG1pZ2h0IGJlIDEu
MDI5MnggZmFzdGVyCiAgIG1hcC1mb3Itb2YgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDcuNzM4MSstMC40MDIxICAgICAgICAgICAgNy41NTU1Ky0wLjM0NTggICAgICAg
ICAgbWlnaHQgYmUgMS4wMjQyeCBmYXN0ZXIKICAgbWFwLWhhcy1nZXQtY3NlLW9wcG9ydHVuaXR5
ICAgICAgICAgICAgICAgICAgICAgICA5Mi4xMDg2Ky0zLjYwNjUgICAgICAgICAgIDg5LjAyMzEr
LTMuMTU4OCAgICAgICAgICBtaWdodCBiZSAxLjAzNDd4IGZhc3RlcgogICBtYXAta2V5LXdlbGwt
dHlwZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkzLjg5NzUrLTguMDI5MSAgICAg
ICAgICAgOTIuMzAyMistNC40NTM2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE3M3ggZmFzdGVyCiAg
IG1hcC1yZWhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuMjgx
OCstMC4yNTUxICAgICAgICAgICAgNy4xNzE2Ky0wLjYwNzggICAgICAgICAgbWlnaHQgYmUgMS4w
MTU0eCBmYXN0ZXIKICAgbWFyc2FnbGlhLWxhcmdlci1pbnRzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA3MS4zMTk4Ky0yLjY0OTUgICAgICAgICAgIDY5LjM5NDcrLTIuNDY0NyAgICAgICAg
ICBtaWdodCBiZSAxLjAyNzd4IGZhc3RlcgogICBtYXJzYWdsaWEtb3NyLWVudHJ5ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDE4LjAzNjArLTAuNDI4MCAgICAgPyAgICAgMTguMTk3Mist
MC41NDc0ICAgICAgICA/CiAgIG1hdGgtcmFuZG9tICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTUuNjA3MystMC40NTIwICAgICA/ICAgICAxNS44OTQ2Ky0wLjgwMjIgICAg
ICAgID8gbWlnaHQgYmUgMS4wMTg0eCBzbG93ZXIKICAgbWF0aC10cnVuYyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNi41MTc4Ky0wLjIzNTIgICAgICAgICAgICA2LjM1
NTgrLTAuMjM1NyAgICAgICAgICBtaWdodCBiZSAxLjAyNTV4IGZhc3RlcgogICBtYXRoLXdpdGgt
b3V0LW9mLWJvdW5kcy1hcnJheS12YWx1ZXMgICAgICAgICAgICAgIDMwLjQxMzYrLTEuNTkyMCAg
ICAgICAgICAgMzAuMjE0MystMS42NTYyICAgICAgICAKICAgbWF4LWJvb2xlYW4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi42NDIzKy0wLjA4ODIgICAgID8gICAgICAy
LjY0ODMrLTAuMTIyNyAgICAgICAgPwogICBtZWdhbW9ycGhpYy1sb2FkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDI4LjYwMTMrLTEuMDc0OSAgICAgPyAgICAgMjkuNjUwMCstMi4x
MDA0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM2N3ggc2xvd2VyCiAgIG1ldGhvZC1vbi1udW1iZXIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYuNTM5NystMC45NjI3ICAgICA/ICAg
ICAxNy4wNTQxKy0wLjc5OTUgICAgICAgID8gbWlnaHQgYmUgMS4wMzExeCBzbG93ZXIKICAgbWlu
LWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi42MTYwKy0w
LjA2NjggICAgICAgICAgICAyLjU3NTIrLTAuMDM1NSAgICAgICAgICBtaWdodCBiZSAxLjAxNTh4
IGZhc3RlcgogICBtaW51cy1ib29sZWFuLWRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyLjUzNjcrLTAuMDQ4MSAgICAgICAgICAgIDIuNTI2MCstMC4wNTIxICAgICAgICAKICAg
bWludXMtYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi41MTA2
Ky0wLjE0OTMgICAgICAgICAgICAyLjQ1MTErLTAuMTEyNCAgICAgICAgICBtaWdodCBiZSAxLjAy
NDJ4IGZhc3RlcgogICBtaXNjLXN0cmljdC1lcSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDI2LjkwMTYrLTEuMjU3MCAgICAgICAgICAgMjMuOTI1OSstMS44ODk3ICAgICAgICAg
IG1pZ2h0IGJlIDEuMTI0NHggZmFzdGVyCiAgIG1vZC1ib29sZWFuLWRvdWJsZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDUuMDE5OCstMC4yMDkwICAgICAgICAgICAgNC44OTU1Ky0w
LjA4ODcgICAgICAgICAgbWlnaHQgYmUgMS4wMjU0eCBmYXN0ZXIKICAgbW9kLWJvb2xlYW4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy45MTQ0Ky0wLjQxMjggICAgICAg
ICAgICA3LjgyNDQrLTAuMjUzNSAgICAgICAgICBtaWdodCBiZSAxLjAxMTV4IGZhc3RlcgogICBt
dWwtYm9vbGVhbi1kb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjAyOTIr
LTAuMjk4MyAgICAgICAgICAgIDIuOTgxMCstMC4xMDk4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE2
MnggZmFzdGVyCiAgIG11bC1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDIuNTMzOSstMC4wNTUyICAgICA/ICAgICAgMi41NjMzKy0wLjExODYgICAgICAgID8g
bWlnaHQgYmUgMS4wMTE2eCBzbG93ZXIKICAgbmVnLWJvb2xlYW4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMi42MDUzKy0wLjA0MTMgICAgID8gICAgICAyLjYxMTMrLTAu
MDM3MSAgICAgICAgPwogICBuZWdhdGl2ZS16ZXJvLWRpdmlkZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLjQxNjUrLTAuMDI3MCAgICAgPyAgICAgIDAuNDIzOCstMC4wMzIyICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDE3NHggc2xvd2VyCiAgIG5lZ2F0aXZlLXplcm8tbW9kdWxvICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAuNDUwNistMC4wNjczICAgICAgICAgICAgMC40Mjcx
Ky0wLjAxNzUgICAgICAgICAgbWlnaHQgYmUgMS4wNTQ5eCBmYXN0ZXIKICAgbmVnYXRpdmUtemVy
by1uZWdhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC40Mzk4Ky0wLjA0NTMgICAg
ICAgICAgICAwLjQxNTArLTAuMDUzMiAgICAgICAgICBtaWdodCBiZSAxLjA1OTd4IGZhc3Rlcgog
ICBuZXN0ZWQtZnVuY3Rpb24tcGFyc2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgMTM1LjIx
MjUrLTMuNzU4MSAgICAgPyAgICAxMzUuMjk3MystNy4wMTAyICAgICAgICA/CiAgIG5ldy1hcnJh
eS1idWZmZXItZGVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjAuMzAyOSstMC4zNzkx
ICAgICA/ICAgICA2MS4xNjc5Ky0xLjA4MjIgICAgICAgID8gbWlnaHQgYmUgMS4wMTQzeCBzbG93
ZXIKICAgbmV3LWFycmF5LWJ1ZmZlci1wdXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NS4xNDUxKy0wLjI5NDQgICAgICAgICAgICA0Ljk0NTgrLTAuNDAxNCAgICAgICAgICBtaWdodCBi
ZSAxLjA0MDN4IGZhc3RlcgogICBuZXctYXJyYXktZGVhZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA4LjE5MjkrLTAuMzQ4MCAgICAgICAgICAgIDcuOTUxOSstMC4zMTAwICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDMwM3ggZmFzdGVyCiAgIG5ldy1hcnJheS1wdXNoICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuODM1NCstMC4yMDExICAgICAgICAgICAgMy43
NTU1Ky0wLjA5MDMgICAgICAgICAgbWlnaHQgYmUgMS4wMjEzeCBmYXN0ZXIKICAgbm8taW5saW5l
LWNvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi42NTYxKy0xLjE0ODAg
ICAgICAgICAgIDIyLjU3OTUrLTAuNjY4OCAgICAgICAgCiAgIE51bWJlci1pc05hTiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuNzczMSstMS4wOTk3ICAgICA/ICAgICAx
My42NDM3Ky0wLjY2MjAgICAgICAgID8gbWlnaHQgYmUgMS4wNjgyeCBzbG93ZXIKICAgbnVtYmVy
LXRlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy40ODcyKy0wLjM1
MzUgICAgICAgICAgICAzLjMwOTArLTAuMDYyOCAgICAgICAgICBtaWdodCBiZSAxLjA1Mzl4IGZh
c3RlcgogICBudW1iZXItdG8tc3RyaW5nLXN0cmVuZ3RoLXJlZHVjdGlvbiAgICAgICAgICAgICAg
ICA1LjU5MTYrLTAuMTE4OSAgICAgICAgICAgIDUuNTgwMSstMC4xMzg5ICAgICAgICAKICAgbnVt
YmVyLXRvLXN0cmluZy13aXRoLWFkZC1lbXB0eSAgICAgICAgICAgICAgICAgICAgNy45MjU0Ky0w
LjYxNTcgICAgICAgICAgICA3LjcxMzMrLTAuNDgzOCAgICAgICAgICBtaWdodCBiZSAxLjAyNzV4
IGZhc3RlcgogICBudW1iZXItdG8tc3RyaW5nLXdpdGgtYWRkLWluLWxvb3AgICAgICAgICAgICAg
ICAgICA5LjUyNDArLTAuNjEzNCAgICAgICAgICAgIDkuMTA2NCstMC4yNjcyICAgICAgICAgIG1p
Z2h0IGJlIDEuMDQ1OXggZmFzdGVyCiAgIG51bWJlci10by1zdHJpbmctd2l0aC1hZGQgICAgICAg
ICAgICAgICAgICAgICAgICAgIDguMjcxMystMC4yMjQ1ICAgICA/ICAgICAgOC41NTAxKy0wLjM2
MTYgICAgICAgID8gbWlnaHQgYmUgMS4wMzM3eCBzbG93ZXIKICAgbnVtYmVyLXRvLXN0cmluZy13
aXRoLXJhZGl4LTEwICAgICAgICAgICAgICAgICAgICAgMS40ODA5Ky0wLjA0OTcgICAgICAgICAg
ICAxLjM4MTErLTAuMDc0NyAgICAgICAgICBtaWdodCBiZSAxLjA3MjJ4IGZhc3RlcgogICBudW1i
ZXItdG8tc3RyaW5nLXdpdGgtcmFkaXgtY3NlICAgICAgICAgICAgICAgICAgICA1LjA1MzUrLTAu
MDkxOCAgICAgICAgICAgIDQuODQ0MistMC4yNTI0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQzMngg
ZmFzdGVyCiAgIG51bWJlci10by1zdHJpbmctd2l0aC1yYWRpeCAgICAgICAgICAgICAgICAgICAg
ICAgMTAuODcyMystMC41MDYxICAgICAgICAgICAxMC43ODY4Ky0wLjUwOTUgICAgICAgIAogICBv
YmplY3QtYW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjM5Nzkr
LTAuMTY0MSAgICAgICAgICAgIDUuMzMyMSstMC4xMTc2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEy
NHggZmFzdGVyCiAgIG9iamVjdC1jbG9zdXJlLWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDYuMzYzMSstMS4wODY5ICAgICA/ICAgICAgNi41Mzc2Ky0xLjkyNTcgICAgICAgID8g
bWlnaHQgYmUgMS4wMjc0eCBzbG93ZXIKICAgb2JqZWN0LWVudHJpZXMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA5My41ODkwKy0zLjc0NzcgICAgID8gICAgIDk1LjcyNjIrLTIu
NDk1NCAgICAgICAgPyBtaWdodCBiZSAxLjAyMjh4IHNsb3dlcgogICBvYmplY3QtZ2V0LW93bi1w
cm9wZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5ICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMzIxNCstMC4xMzczICAgICAgICAgICAg
MS4zMTU3Ky0wLjEwMTkgICAgICAgIAogICBvYmplY3QtaW50LWFkZC1hcnJheSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDEzLjA5NzQrLTAuMzUxNSAgICAgPyAgICAgMTMuNDcyNystMC43
MTY2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI4N3ggc2xvd2VyCiAgIG9iamVjdC1pbnQtYWRkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQuNTYzMSstMS4wODI1ICAgICAgICAg
ICAxNC4zODc5Ky0wLjQ1ODIgICAgICAgICAgbWlnaHQgYmUgMS4wMTIyeCBmYXN0ZXIKICAgb2Jq
ZWN0LWludC1hbmQtYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy45MTQ3Ky0w
Ljg3ODMgICAgICAgICAgIDEzLjkxNDArLTEuNDQ5NSAgICAgICAgCiAgIG9iamVjdC1pbnQtbXVs
LWFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMuNTE2NistMC41MDAzICAgICAg
ICAgICAxMy4zODEyKy0wLjQ3MjcgICAgICAgICAgbWlnaHQgYmUgMS4wMTAxeCBmYXN0ZXIKICAg
b2JqZWN0LWludC1zdWItYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNC41MTMx
Ky0wLjM2OTcgICAgID8gICAgIDE1LjA0NDMrLTAuNjQ0MiAgICAgICAgPyBtaWdodCBiZSAxLjAz
NjZ4IHNsb3dlcgogICBvYmplY3QtaW50LXN1YiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE0LjAwMDIrLTAuNTA1MiAgICAgICAgICAgMTMuODg2MCstMC4zMTc5ICAgICAgICAK
ICAgb2JqZWN0LWtleXMtbWFwLXZhbHVlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICA1NS4y
MzAzKy0yLjQ4NTIgICAgICAgICAgIDUzLjU0MTcrLTEuNDg2NyAgICAgICAgICBtaWdodCBiZSAx
LjAzMTV4IGZhc3RlcgogICBvYmplY3QtbHNoaWZ0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA1LjQwMDcrLTAuMTI1MSAgICAgPyAgICAgIDUuNDc1NSstMC4xNTQ4ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDEzOHggc2xvd2VyCiAgIG9iamVjdC1vciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDUuNDk0MCstMC4yMjYyICAgICA/ICAgICAgNS41MDYw
Ky0wLjE3NDcgICAgICAgID8KICAgb2JqZWN0LXJzaGlmdCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNS40NjgyKy0wLjA5OTYgICAgID8gICAgICA1LjUzNTQrLTAuMjA2NyAg
ICAgICAgPyBtaWdodCBiZSAxLjAxMjN4IHNsb3dlcgogICBvYmplY3QtdGVzdCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjI4MTArLTAuMjk4OCAgICAgICAgICAgIDMu
MDczNistMC4wNzQ1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDY3NXggZmFzdGVyCiAgIG9iamVjdC11
cnNoaWZ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNDI0MistMC4xMDA2
ICAgICA/ICAgICAgNS42MTEwKy0wLjMyNzkgICAgICAgID8gbWlnaHQgYmUgMS4wMzQ0eCBzbG93
ZXIKICAgb2JqZWN0LXZhbHVlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAz
OS4xNjc0Ky0yLjM3NTEgICAgICAgICAgIDM3Ljg0NjArLTEuODY4OSAgICAgICAgICBtaWdodCBi
ZSAxLjAzNDl4IGZhc3RlcgogICBvYmplY3QteG9yICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA1LjQ1NTcrLTAuMTYyNCAgICAgPyAgICAgIDUuNTQ2OSstMC4yMjY4ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDE2N3ggc2xvd2VyCiAgIG9idmlvdXMtc2luay1wYXRob2xvZ3kt
dGFrZW4gICAgICAgICAgICAgICAgICAgICAgODEuMzk5NystMS4yNjc4ICAgICA/ICAgICA4MS43
MDk0Ky0xLjUxODEgICAgICAgID8KICAgb2J2aW91cy1zaW5rLXBhdGhvbG9neSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxNy44ODU5Ky0wLjQzNzYgICAgID8gICAgIDE4LjA1MDgrLTEuMTg1
NSAgICAgICAgPwogICBvYnZpb3VzbHktZWxpZGFibGUtbmV3LW9iamVjdCAgICAgICAgICAgICAg
ICAgICAgIDE2LjA3NDkrLTEuMjY2NiAgICAgPyAgICAgMTYuNTUyNystMC42NjgzICAgICAgICA/
IG1pZ2h0IGJlIDEuMDI5N3ggc2xvd2VyCiAgIHBsdXMtYm9vbGVhbi1hcml0aCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIuNTMxMistMC4xNTA3ICAgICAgICAgICAgMi40MjI3Ky0w
LjE1MTYgICAgICAgICAgbWlnaHQgYmUgMS4wNDQ4eCBmYXN0ZXIKICAgcGx1cy1ib29sZWFuLWRv
dWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi41NzUwKy0wLjEyNDUgICAgID8g
ICAgICAyLjU4OTYrLTAuMDcwMCAgICAgICAgPwogICBwbHVzLWJvb2xlYW4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyLjUyMDcrLTAuMzA3MSAgICAgICAgICAgIDIuMzI5
NystMC4wMzkxICAgICAgICAgIG1pZ2h0IGJlIDEuMDgyMHggZmFzdGVyCiAgIHBvbHktY2hhaW4t
YWNjZXNzLWRpZmZlcmVudC1wcm90b3R5cGVzLXNpbXBsZSAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjc5NzMrLTAuMDg0NSAgICAgICAg
ICAgIDIuNzQ4MCstMC4wNTA0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE3OXggZmFzdGVyCiAgIHBv
bHktY2hhaW4tYWNjZXNzLWRpZmZlcmVudC1wcm90b3R5cGVzICAgICAgICAgICAgIDIuNjk2Nist
MC4wMzA0ICAgICA/ICAgICAgMi43MTIyKy0wLjA3MTIgICAgICAgID8KICAgcG9seS1jaGFpbi1h
Y2Nlc3Mtc2ltcGxlciAgICAgICAgICAgICAgICAgICAgICAgICAgMi43NjIyKy0wLjA5NzEgICAg
ICAgICAgICAyLjY5OTArLTAuMDQxMCAgICAgICAgICBtaWdodCBiZSAxLjAyMzR4IGZhc3Rlcgog
ICBwb2x5LWNoYWluLWFjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjg4
OTMrLTAuMTA1OCAgICAgICAgICAgIDIuNzUyNystMC4wOTA3ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDQ5N3ggZmFzdGVyCiAgIHBvbHktc3RyaWN0ZXEgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNjQuOTYzOSstMS45NzIzICAgICA/ICAgICA2NS45Mzk5Ky0zLjE2MjEgICAgICAg
ID8gbWlnaHQgYmUgMS4wMTUweCBzbG93ZXIKICAgcG9seW1vcnBoaWMtYXJyYXktY2FsbCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMS40MTg4Ky0wLjA3MjkgICAgID8gICAgICAxLjQ1ODYr
LTAuMTQ5NiAgICAgICAgPyBtaWdodCBiZSAxLjAyODB4IHNsb3dlcgogICBwb2x5bW9ycGhpYy1n
ZXQtYnktaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjI5MzArLTAuMTc0OCAgICAg
PyAgICAgIDIuMzQ3MSstMC4yMzQ5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIzNnggc2xvd2VyCiAg
IHBvbHltb3JwaGljLXB1dC1ieS1pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjcuNjcy
MystMS42MTY5ICAgICAgICAgICAyNi44ODYzKy0xLjMxOTAgICAgICAgICAgbWlnaHQgYmUgMS4w
MjkyeCBmYXN0ZXIKICAgcG9seW1vcnBoaWMtcHV0LWJ5LXZhbC13aXRoLXN0cmluZyAgICAgICAg
ICAgICAgICAyNy4wNjg4Ky0xLjM5NjAgICAgICAgICAgIDI1Ljc3MjIrLTAuNjM4MyAgICAgICAg
ICBtaWdodCBiZSAxLjA1MDN4IGZhc3RlcgogICBwb2x5bW9ycGhpYy1wdXQtYnktdmFsLXdpdGgt
c3ltYm9sICAgICAgICAgICAgICAgIDI1LjY5MDArLTAuNDg0OSAgICAgPyAgICAgMjYuNDQ5Mist
MS4xMzgyICAgICAgICA/IG1pZ2h0IGJlIDEuMDI5Nnggc2xvd2VyCiAgIHBvbHltb3JwaGljLXN0
cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMuNTQwMystMC4yNDQ1ICAgICA/
ICAgICAxMy43MjM1Ky0wLjI1NjUgICAgICAgID8gbWlnaHQgYmUgMS4wMTM1eCBzbG93ZXIKICAg
cG9seXZhcmlhbnQtbW9ub21vcnBoaWMtZ2V0LWJ5LWlkICAgICAgICAgICAgICAgICAgMy44ODM4
Ky0wLjIwMDkgICAgICAgICAgICAzLjg2ODMrLTAuMTE2OSAgICAgICAgCiAgIHByZXZlbnQtZXh0
ZW5zaW9ucy1hbmQtZG8td29yayAgICAgICAgICAgICAgICAgICAgMTMuOTg5NystMC42Njc4ICAg
ICAgICAgICAxMy40NDY5Ky0wLjMyNDMgICAgICAgICAgbWlnaHQgYmUgMS4wNDA0eCBmYXN0ZXIK
ICAgcHJvdG8tZ2V0dGVyLWFjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMS45
OTk5Ky0wLjUzMTQgICAgICAgICAgIDExLjkzNzgrLTAuMjgxNCAgICAgICAgCiAgIHByb3RvdHlw
ZS1hY2Nlc3Mtd2l0aC1tdXRhdGluZy1wcm90b3R5cGUgICAgICAgICAgIDQuOTM2NSstMC4zNzY1
ICAgICAgICAgICAgNC44ODgzKy0wLjA4MDcgICAgICAgIAogICBwdXQtYnktaWQtcmVwbGFjZS1h
bmQtdHJhbnNpdGlvbiAgICAgICAgICAgICAgICAgICA1Ljc5NzUrLTAuMzE3MiAgICAgPyAgICAg
IDYuMTUxOSstMC41NjQ3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDYxMXggc2xvd2VyCiAgIHB1dC1i
eS1pZC1zbGlnaHRseS1wb2x5bW9ycGhpYyAgICAgICAgICAgICAgICAgICAgIDIuNjk0MystMC4x
Mzk3ICAgICAgICAgICAgMi42MzI5Ky0wLjA5NjUgICAgICAgICAgbWlnaHQgYmUgMS4wMjMzeCBm
YXN0ZXIKICAgcHV0LWJ5LWlkLXRyYW5zaXRpb24td2l0aC1pbmRleGluZy1oZWFkZXIgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy43MzEw
Ky0wLjI2ODQgICAgID8gICAgIDEzLjkxNTMrLTAuMzkxOSAgICAgICAgPyBtaWdodCBiZSAxLjAx
MzR4IHNsb3dlcgogICBwdXQtYnktaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDExLjIxOTErLTAuNDM2NCAgICAgICAgICAgMTAuODcwNystMC4xNTYyICAgICAgICAg
IG1pZ2h0IGJlIDEuMDMyMXggZmFzdGVyCiAgIHB1dC1ieS12YWwtZGlyZWN0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAuNDMxNSstMC4wMjE2ICAgICAgICAgICAgMC40MTcwKy0w
LjAxMTMgICAgICAgICAgbWlnaHQgYmUgMS4wMzQ5eCBmYXN0ZXIKICAgcHV0LWJ5LXZhbC1sYXJn
ZS1pbmRleC1ibGFuay1pbmRleGluZy10eXBlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuMDY5OSstMC40Mzk1ICAgICA/ICAgICAgNy4x
OTM1Ky0wLjQ2NzAgICAgICAgID8gbWlnaHQgYmUgMS4wMTc1eCBzbG93ZXIKICAgcHV0LWJ5LXZh
bC1tYWNoaW5lLWludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy40NzE5Ky0wLjE3Njgg
ICAgID8gICAgICAzLjU5NTYrLTAuMTI0OCAgICAgICAgPyBtaWdodCBiZSAxLjAzNTZ4IHNsb3dl
cgogICBwdXQtYnktdmFsLXdpdGgtc3RyaW5nLXJlcGxhY2UtYW5kLXRyYW5zaXRpb24gICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC4wMjA5
Ky0wLjMxMDUgICAgID8gICAgIDEwLjMwMDIrLTAuOTExMSAgICAgICAgPyBtaWdodCBiZSAxLjAy
Nzl4IHNsb3dlcgogICBwdXQtYnktdmFsLXdpdGgtc3RyaW5nLXNsaWdodGx5LXBvbHltb3JwaGlj
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMuMTU5OSstMC4xNjEzICAgICAgICAgICAgMy4wNzg0Ky0wLjExMDIgICAgICAgICAgbWlnaHQg
YmUgMS4wMjY1eCBmYXN0ZXIKICAgcHV0LWJ5LXZhbC13aXRoLXN0cmluZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMS4zOTc5Ky0wLjQxMDMgICAgID8gICAgIDExLjc5NDIrLTEuMzkyMyAg
ICAgICAgPyBtaWdodCBiZSAxLjAzNDh4IHNsb3dlcgogICBwdXQtYnktdmFsLXdpdGgtc3ltYm9s
LXJlcGxhY2UtYW5kLXRyYW5zaXRpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxMC4wNzc5Ky0wLjM4MTAgICAgICAgICAgICA5Ljc1MzQr
LTAuMzE3NCAgICAgICAgICBtaWdodCBiZSAxLjAzMzN4IGZhc3RlcgogICBwdXQtYnktdmFsLXdp
dGgtc3ltYm9sLXNsaWdodGx5LXBvbHltb3JwaGljICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMDU2MystMC4xODQ3ICAgICA/ICAgICAg
My4wODU0Ky0wLjE4OTAgICAgICAgID8KICAgcHV0LWJ5LXZhbC13aXRoLXN5bWJvbCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxMS40NTk2Ky0wLjMyNzMgICAgID8gICAgIDExLjQ4MjkrLTAu
NjMyNyAgICAgICAgPwogICByYXJlLW9zci1leGl0LW9uLWxvY2FsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDE0LjkzMzgrLTEuMDI1NiAgICAgICAgICAgMTMuMzU3NystMC43MzgzICAgICAg
ICAgIG1pZ2h0IGJlIDEuMTE4MHggZmFzdGVyCiAgIHJheXRyYWNlLXdpdGgtZW1wdHktdHJ5LWNh
dGNoICAgICAgICAgICAgICAgICAgICAgIDUuMjgzMistMC4zMDU3ICAgICA/ICAgICAgNS40MjQ1
Ky0wLjMwNDEgICAgICAgID8gbWlnaHQgYmUgMS4wMjY3eCBzbG93ZXIKICAgcmF5dHJhY2Utd2l0
aC10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgOC42NDgxKy0xLjMyMTYgICAg
ICAgICAgICA4LjQ2MDErLTAuMzA3MSAgICAgICAgICBtaWdodCBiZSAxLjAyMjJ4IGZhc3Rlcgog
ICByZWdleHAtZXhlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQzLjI1
NDUrLTEuNjM3MyAgICAgPyAgICAgNDMuNDcyNCstMi40ODM5ICAgICAgICA/CiAgIHJlZ2V4cC1s
YXN0LWluZGV4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuNTA5NystMC43Mzcx
ICAgICAgICAgICAxMi4yNTc5Ky0wLjc0NTMgICAgICAgICAgbWlnaHQgYmUgMS4wMjA1eCBmYXN0
ZXIKICAgcmVnZXhwLW5lc3RlZC1ub256ZXJvLW1pbi1jb3VudGVkLXBhcmVucyAgICAgICAgICAg
MC4zNjYwKy0wLjAyNTUgICAgID8gICAgICAwLjM4MDcrLTAuMDI5OCAgICAgICAgPyBtaWdodCBi
ZSAxLjA0MDN4IHNsb3dlcgogICByZWdleHAtcHJvdG90eXBlLWlzLW5vdC1pbnN0YW5jZSAgICAg
ICAgICAgICAgICAgICAwLjUzNDgrLTAuMDU4NSAgICAgICAgICAgIDAuNTA5MistMC4wMTEzICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDUwM3ggZmFzdGVyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc2VhcmNo
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAuODEzNistMC4wNTAxICAgICAgICAgICAgMC43NzIw
Ky0wLjAyMzQgICAgICAgICAgbWlnaHQgYmUgMS4wNTM5eCBmYXN0ZXIKICAgcmVnZXhwLXByb3Rv
dHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNDA2OCstMC4wNDg1ICAgICA/
ICAgICAgMC40MjEyKy0wLjA0MDkgICAgICAgID8gbWlnaHQgYmUgMS4wMzU2eCBzbG93ZXIKICAg
cmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cyAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjA4NzErLTAu
MDc3MiAgICAgICAgICAgIDEuMDUxMystMC4wNDEyICAgICAgICAgIG1pZ2h0IGJlIDEuMDM0MHgg
ZmFzdGVyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMy
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAuNDUxMystMC4wNTA2ICAgICAgICAgICAgMC40MTU3Ky0wLjAyMzkgICAgICAgICAgbWlnaHQg
YmUgMS4wODU0eCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czMtZmxhZ3MgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC40Mjc5Ky0wLjAzMTMgICAgID8gICAgICAwLjQzNTArLTAuMDY4
MCAgICAgICAgPyBtaWdodCBiZSAxLjAxNjZ4IHNsb3dlcgogICByZWdleHAtcHJvdG90eXBlLXNw
bGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC40NDAxKy0wLjA0NDQgICAgICAg
ICAgICAwLjQzMzgrLTAuMDUyNSAgICAgICAgICBtaWdodCBiZSAxLjAxNDZ4IGZhc3RlcgogICBy
ZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNl
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAuNDE2NystMC4wMTU3ICAgICA/ICAgICAgMC40MjIxKy0wLjAyNTggICAgICAgID8gbWlnaHQg
YmUgMS4wMTMweCBzbG93ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czMtbXVsdGlsaW5lICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAuNDI0OSstMC4wMzA0ICAgICAgICAgICAgMC40MjQ3Ky0w
LjAyMjkgICAgICAgIAogICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1l
ZmZlY3RzMy1zdGlja3kgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMC40NTQyKy0wLjAzODYgICAgICAgICAgICAwLjQzMzArLTAuMDI5NCAg
ICAgICAgICBtaWdodCBiZSAxLjA0OTF4IGZhc3RlcgogICByZWdleHAtcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2RlICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNDQ1MystMC4wNDMzICAgICAgICAg
ICAgMC40MzExKy0wLjA0NTMgICAgICAgICAgbWlnaHQgYmUgMS4wMzMweCBmYXN0ZXIKICAgcmVn
ZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC40MjM2Ky0wLjAy
NTggICAgID8gICAgICAwLjQ0NzcrLTAuMDQ2NyAgICAgICAgPyBtaWdodCBiZSAxLjA1Njh4IHNs
b3dlcgogICByZWdleHAtcHJvdG90eXBlLXRlc3Qtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC42
NDIyKy0wLjA0NDAgICAgID8gICAgICAwLjY1NDIrLTAuMDQ4NyAgICAgICAgPyBtaWdodCBiZSAx
LjAxODZ4IHNsb3dlcgogICByZWdleHAtcHJvdG90eXBlLXRlc3Qtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHMyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuNDA1NistMC4wNDE4ICAgICAgICAgICAgMC4zODI1Ky0wLjAxMzAgICAgICAgICAg
bWlnaHQgYmUgMS4wNjA1eCBmYXN0ZXIKICAgcmVnZXhwLXNldC1sYXN0LWluZGV4ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxMC40NDg2Ky0wLjQ0NDQgICAgID8gICAgIDEwLjY0NzArLTAu
Mzk0MyAgICAgICAgPyBtaWdodCBiZSAxLjAxOTB4IHNsb3dlcgogICByZWdpc3Rlci1wcmVzc3Vy
ZS1mcm9tLW9zciAgICAgICAgICAgICAgICAgICAgICAgIDE1LjM2NDUrLTAuMzgzMyAgICAgPyAg
ICAgMTUuNzA2OSstMC41NTAzICAgICAgICA/IG1pZ2h0IGJlIDEuMDIyM3ggc2xvd2VyCiAgIHJl
cGVhdC1tdWx0aS1nZXQtYnktb2Zmc2V0ICAgICAgICAgICAgICAgICAgICAgICAgMTYuNDU2OSst
MC42NTY5ICAgICAgICAgICAxNi4zNzQ5Ky0wLjUxMTEgICAgICAgIAogICByZXN0LXBhcmFtZXRl
ci1hbGxvY2F0aW9uLWVsaW1pbmF0aW9uICAgICAgICAgICAgMTkzLjMwMDQrLTIuNDA5MiAgICAg
PyAgICAxOTYuMjE0NSstMi41MDIyICAgICAgICA/IG1pZ2h0IGJlIDEuMDE1MXggc2xvd2VyCiAg
IHJlc3QtcGFyYW1ldGVyLWNvbnN0cnVjdGlvbi1wZXJmb3JtYW5jZSAgICAgICAgICAgMjAuNDI5
MistMC4yMDA3ICAgICAgICAgICAyMC4zOTAwKy0wLjQ1MTkgICAgICAgIAogICByaWNoYXJkcy1l
bXB0eS10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgIDUyLjI2NDErLTEuODIzNyAg
ICAgICAgICAgNTEuODk5OSstMS40NDQzICAgICAgICAKICAgcmljaGFyZHMtdHJ5LWNhdGNoICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4Ni4zNjAzKy0yLjYyODIgICAgID8gICAgMTg5
LjcxNTYrLTYuMTk4NiAgICAgICAgPyBtaWdodCBiZSAxLjAxODB4IHNsb3dlcgogICBzY29wZWQt
YXJndW1lbnRzLWxlbmd0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjkzNDYrLTAuMjg5
OSAgICAgICAgICAgIDcuODg2MSstMC4yNjI4ICAgICAgICAKICAgc2NvcGVkLWFyZ3VtZW50cy1v
dmVycmlkZGVuLWxlbmd0aCAgICAgICAgICAgICAgICAgOC4yMTE1Ky0wLjQ3MTcgICAgICAgICAg
ICA4LjAxNDgrLTAuMjE2OCAgICAgICAgICBtaWdodCBiZSAxLjAyNDV4IGZhc3RlcgogICBzY29w
ZWQtYXJndW1lbnRzLXBvc3NpYmx5LW92ZXJyaWRkZW4tbGVuZ3RoICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguMzM0OSstMC43MjEzICAg
ICAgICAgICAgOC4xNTQ1Ky0wLjM3NzcgICAgICAgICAgbWlnaHQgYmUgMS4wMjIxeCBmYXN0ZXIK
ICAgc2VhbC1hbmQtZG8td29yayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNC4w
Mjg5Ky0wLjk1OTUgICAgICAgICAgIDEzLjkyOTQrLTAuNjE2MCAgICAgICAgCiAgIHNldC1mb3It
ZWFjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMTI4NSstMC4xNDU5
ICAgICAgICAgICAgMS45OTkwKy0wLjA3NjYgICAgICAgICAgbWlnaHQgYmUgMS4wNjQ4eCBmYXN0
ZXIKICAgc2V0LWZvci1vZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NS4xOTgzKy0wLjIyMjMgICAgID8gICAgICA1LjIyODYrLTAuMjM3NiAgICAgICAgPwogICBzZXR0
ZXItcHJvdG90eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjMzODUrLTAu
MDg2MCAgICAgPyAgICAgIDUuMzQ4MystMC4xMjg2ICAgICAgICA/CiAgIHNldHRlciAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMDE3NCstMC4xNTU0ICAgICAg
ICAgICAgMy45MzkzKy0wLjExODkgICAgICAgICAgbWlnaHQgYmUgMS4wMTk4eCBmYXN0ZXIKICAg
c2ltcGxlLWFjdGl2YXRpb24tZGVtbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS40NDg1
Ky0yLjMyMjMgICAgICAgICAgIDIwLjI4OTMrLTIuOTg1NCAgICAgICAgICBtaWdodCBiZSAxLjA1
NzF4IGZhc3RlcgogICBzaW1wbGUtZ2V0dGVyLWFjY2VzcyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE4LjczNTArLTEuMzUwMCAgICAgPyAgICAgMTguODA5OSstMS4zMjQzICAgICAgICA/
CiAgIHNpbXBsZS1wb2x5LWNhbGwtbmVzdGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQu
NDgxMystMC4yNjA0ICAgICAgICAgICAgNC40NjY4Ky0wLjM0MjUgICAgICAgIAogICBzaW1wbGUt
cG9seS1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjU1NzArLTAuMDQ0
MyAgICAgICAgICAgIDEuNDk1MSstMC4wNTg4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQxNHggZmFz
dGVyCiAgIHNpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwgICAgICAgICAgICAgICAgICAg
IDMuNzgwMCstMC4xMjYxICAgICA/ICAgICAgMy44Mjg1Ky0wLjEwMjkgICAgICAgID8gbWlnaHQg
YmUgMS4wMTI4eCBzbG93ZXIKICAgc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcgICAgICAgICAg
ICAgICAgICAgICAgICAxOS4wNjIwKy0wLjc2MjkgICAgICAgICAgIDE4Ljc5NDMrLTAuNTk5OCAg
ICAgICAgICBtaWdodCBiZSAxLjAxNDJ4IGZhc3RlcgogICBzaW1wbGUtcmVnZXhwLXRlc3QtZm9s
ZGluZy1mYWlsLXdpdGgtaG9pc3RlZC1yZWdleHAgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMS43MjQ1Ky0yLjI0MjUgICAgICAgICAgIDEw
LjU0NzgrLTAuMjkzOSAgICAgICAgICBtaWdodCBiZSAxLjExMTZ4IGZhc3RlcgogICBzaW1wbGUt
cmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsICAgICAgICAgICAgICAgICAgIDE2LjI1OTYrLTAuMzI1
MCAgICAgPyAgICAgMTYuMzE1NistMC41ODcxICAgICAgICA/CiAgIHNpbXBsZS1yZWdleHAtdGVz
dC1mb2xkaW5nLXdpdGgtaG9pc3RlZC1yZWdleHAgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMS4zNzUyKy0wLjIzOTQgICAgICAgICAgIDEx
LjE4ODkrLTAuNDQzNCAgICAgICAgICBtaWdodCBiZSAxLjAxNjd4IGZhc3RlcgogICBzaW1wbGUt
cmVnZXhwLXRlc3QtZm9sZGluZyAgICAgICAgICAgICAgICAgICAgICAgIDE3LjM1MDkrLTEuMTM1
NiAgICAgPyAgICAgMTcuNjg2OCstMC4zODYyICAgICAgICA/IG1pZ2h0IGJlIDEuMDE5NHggc2xv
d2VyCiAgIHNpbi1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDcuMTA5NistMC4zNzEwICAgICAgICAgICAgNi45NjMwKy0wLjI1MTggICAgICAgICAgbWlnaHQg
YmUgMS4wMjExeCBmYXN0ZXIKICAgc2luZ2xldG9uLXNjb3BlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA1MC4xMzUzKy0zLjYyMTMgICAgID8gICAgIDUxLjE0MzIrLTIuNDg0NCAg
ICAgICAgPyBtaWdodCBiZSAxLjAyMDF4IHNsb3dlcgogICBzaW5rLWZ1bmN0aW9uICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjE5MTkrLTAuNTk1MyAgICAgICAgICAgIDUu
NzQ3NistMC4zMjY3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDc3M3ggZmFzdGVyCiAgIHNpbmstaHVn
ZS1hY3RpdmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuMDAyNystMC40NDk2
ICAgICA/ICAgICAxMC4xNjg3Ky0wLjQzMjEgICAgICAgID8gbWlnaHQgYmUgMS4wMTY2eCBzbG93
ZXIKICAgc2lua2FibGUtbmV3LW9iamVjdC1kYWcgICAgICAgICAgICAgICAgICAgICAgICAgICAz
Ny45NTk0Ky0xLjI4MjEgICAgID8gICAgIDM5LjU1NjYrLTIuMzQ4MyAgICAgICAgPyBtaWdodCBi
ZSAxLjA0MjF4IHNsb3dlcgogICBzaW5rYWJsZS1uZXctb2JqZWN0LXRha2VuICAgICAgICAgICAg
ICAgICAgICAgICAgIDM0LjQzODArLTEuMzkwOCAgICAgPyAgICAgMzUuMjczNCstMS41ODg4ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDI0M3ggc2xvd2VyCiAgIHNpbmthYmxlLW5ldy1vYmplY3QgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTguODg1OSstMS43Mzc2ICAgICAgICAgICAxOC4y
NDUyKy0wLjgwNTYgICAgICAgICAgbWlnaHQgYmUgMS4wMzUxeCBmYXN0ZXIKICAgc2xvdy1hcnJh
eS1wcm9maWxlLWNvbnZlcmdlbmNlICAgICAgICAgICAgICAgICAgICAgMi43ODc4Ky0wLjA0NzEg
ICAgICEgICAgICAzLjA1NzErLTAuMTMyNiAgICAgICAgISBkZWZpbml0ZWx5IDEuMDk2Nnggc2xv
d2VyCiAgIHNsb3ctY29udmVyZ2VuY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDIuOTMwMCstMC4xMTM5ICAgICAhICAgICAgMy4xNzU1Ky0wLjEwMzUgICAgICAgICEgZGVmaW5p
dGVseSAxLjA4Mzh4IHNsb3dlcgogICBzbG93LXRlcm5hcmllcyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEzLjU4NjUrLTAuNDQzNSAgICAgPyAgICAgMTQuMDExOCstMC4yNTk3
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMxM3ggc2xvd2VyCiAgIHNvcnRpbmctYmVuY2htYXJrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAuMDQ2NSstMC4yODI1ICAgICA/ICAgICAy
MC41NjY3Ky0wLjI1MjkgICAgICAgID8gbWlnaHQgYmUgMS4wMjYweCBzbG93ZXIKICAgc3BhcnNl
LWNvbmRpdGlvbmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4zOTUyKy0wLjA3
MjcgICAgICAgICAgICAxLjM2OTUrLTAuMDU4MCAgICAgICAgICBtaWdodCBiZSAxLjAxODh4IGZh
c3RlcgogICBzcGFyc2Utc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDYxLjczOTkrLTIuODg0MCAgICAgICAgICAgNjEuMjUwNystMi40MjMyICAgICAgICAKICAgc3Bs
aWNlLXRvLXJlbW92ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNy4wOTUyKy0w
Ljg1OTEgICAgID8gICAgIDE3LjU2MzkrLTEuMDc3NyAgICAgICAgPyBtaWdodCBiZSAxLjAyNzR4
IHNsb3dlcgogICBzcHJlYWQtbGFyZ2UtYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTQ3LjI1MDUrLTEuODUwMSAgICAgPyAgICAxNDcuNjc2MystMS4wNTIzICAgICAgICA/CiAg
IHN0cmNhdC1jb25zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNTUy
MistMC4yMzQzICAgICAgICAgICAgNS40ODI3Ky0wLjEyNTAgICAgICAgICAgbWlnaHQgYmUgMS4w
MTI3eCBmYXN0ZXIKICAgc3RyY2F0LWxlbmd0aC1jb25zdCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNS4zNDgxKy0wLjExNzcgICAgICAgICAgICA1LjIyNTIrLTAuMTU4MCAgICAgICAg
ICBtaWdodCBiZSAxLjAyMzV4IGZhc3RlcgogICBzdHJpY3Qtb3NyLWVudHJ5ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEwLjY1MTUrLTAuNzEwOSAgICAgICAgICAgMTAuNTg4OCst
MC42MDY1ICAgICAgICAKICAgc3RyaW5nLWFkZC1jb25zdGFudC1mb2xkaW5nICAgICAgICAgICAg
ICAgICAgICAgIDE2Ny42MjI4Ky02LjAyNTUgICAgICAgICAgMTY1LjM5MDQrLTIuNzAwNyAgICAg
ICAgICBtaWdodCBiZSAxLjAxMzV4IGZhc3RlcgogICBzdHJpbmctY2hhci1jb2RlLWF0ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDE3LjUzMzMrLTAuMzMyNSAgICAgPyAgICAgMTcuODcw
MystMC42MDUxICAgICAgICA/IG1pZ2h0IGJlIDEuMDE5Mnggc2xvd2VyCiAgIHN0cmluZy1jb25j
YXQtY29udmVydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTguODQ2OSstMC45ODI4ICAg
ICA/ICAgICA1OC45NjU4Ky0xLjEyMjQgICAgICAgID8KICAgc3RyaW5nLWNvbmNhdC1sb25nLWNv
bnZlcnQgICAgICAgICAgICAgICAgICAgICAgICA2Ni40MjQ3Ky0yLjM4MjcgICAgICAgICAgIDY1
LjU2OTMrLTEuMDU2NCAgICAgICAgICBtaWdodCBiZSAxLjAxMzB4IGZhc3RlcgogICBzdHJpbmct
Y29uY2F0LWxvbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM5LjY5OTcrLTAuNjY1
NyAgICAgICAgICAgMzkuMzYyMistMC44MTk4ICAgICAgICAKICAgc3RyaW5nLWNvbmNhdC1vYmpl
Y3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4yNDYwKy0wLjE0NTQgICAgICAgICAg
ICAyLjIwOTQrLTAuMjM1NSAgICAgICAgICBtaWdodCBiZSAxLjAxNjZ4IGZhc3RlcgogICBzdHJp
bmctY29uY2F0LXBhaXItb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAyLjExMjArLTAu
MDYwOSAgICAgPyAgICAgIDIuMjAwNistMC4xNDI3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQxOXgg
c2xvd2VyCiAgIHN0cmluZy1jb25jYXQtcGFpci1zaW1wbGUgICAgICAgICAgICAgICAgICAgICAg
ICAgIDMuMzQ1NSstMC4yMzAwICAgICAgICAgICAgMy4yNTgwKy0wLjIzMDAgICAgICAgICAgbWln
aHQgYmUgMS4wMjY4eCBmYXN0ZXIKICAgc3RyaW5nLWNvbmNhdC1zaW1wbGUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNC45NjQxKy0wLjA5NDMgICAgID8gICAgICA1LjAxOTIrLTAuMTY0
OCAgICAgICAgPyBtaWdodCBiZSAxLjAxMTF4IHNsb3dlcgogICBzdHJpbmctY29uY2F0ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMzLjkyNDgrLTAuNTM4MyAgICAgPyAgICAg
MzMuOTQ3NSstMC43OTYxICAgICAgICA/CiAgIHN0cmluZy1jb25zLXJlcGVhdCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDYuMDgwMCstMC41MzcxICAgICAgICAgICAgNS45MzEyKy0w
LjMwODMgICAgICAgICAgbWlnaHQgYmUgMS4wMjUxeCBmYXN0ZXIKICAgc3RyaW5nLWNvbnMtdG93
ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC45ODEzKy0wLjM4MDIgICAgID8g
ICAgICA1LjE2MjkrLTAuNDU3NyAgICAgICAgPyBtaWdodCBiZSAxLjAzNjV4IHNsb3dlcgogICBz
dHJpbmctZXF1YWxpdHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjk3NTAr
LTEuNTQ2NSAgICAgICAgICAgMTEuNTQ1NistMC4zNjAwICAgICAgICAgIG1pZ2h0IGJlIDEuMTIz
OHggZmFzdGVyCiAgIHN0cmluZy1mcm9tLWNoYXItY29kZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDYuNDk5NCstMC4yNTE2ICAgICA/ICAgICAgNi41ODgzKy0wLjQwODMgICAgICAgID8g
bWlnaHQgYmUgMS4wMTM3eCBzbG93ZXIKICAgc3RyaW5nLWdldC1ieS12YWwtYmlnLWNoYXIgICAg
ICAgICAgICAgICAgICAgICAgICAgNC43NjQ5Ky0wLjE1MDYgICAgICAgICAgICA0LjU5MDErLTAu
MjM0MyAgICAgICAgICBtaWdodCBiZSAxLjAzODF4IGZhc3RlcgogICBzdHJpbmctZ2V0LWJ5LXZh
bC1vdXQtb2YtYm91bmRzLWluc2FuZSAgICAgICAgICAgICA0LjE1NjMrLTAuMjE0OCAgICAgPyAg
ICAgIDQuMTk1NistMC4xNjAxICAgICAgICA/CiAgIHN0cmluZy1nZXQtYnktdmFsLW91dC1vZi1i
b3VuZHMgICAgICAgICAgICAgICAgICAgIDUuMTU1MCstMC4xNzQxICAgICA/ICAgICAgNS4xOTUw
Ky0wLjEyMDAgICAgICAgID8KICAgc3RyaW5nLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMi4yMjc3Ky0wLjEyNTEgICAgICAgICAgICAyLjE2MjMrLTAuMDk2MiAg
ICAgICAgICBtaWdodCBiZSAxLjAzMDJ4IGZhc3RlcgogICBzdHJpbmctaGFzaCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjE4NzMrLTAuMDY1MSAgICAgICAgICAgIDIu
MTI4MSstMC4wMzU4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI3OHggZmFzdGVyCiAgIHN0cmluZy1s
b25nLWlkZW50LWVxdWFsaXR5ICAgICAgICAgICAgICAgICAgICAgICAgMjEuMzIxNistMS4xMjc1
ICAgICBeICAgICAgOC43NDAzKy0wLjM0NjIgICAgICAgIF4gZGVmaW5pdGVseSAyLjQzOTV4IGZh
c3RlcgogICBzdHJpbmctb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEwLjU0NDArLTAuMzI1NiAgICAgPyAgICAgMTAuNzI0NSstMC42MzIzICAgICAgICA/IG1pZ2h0
IGJlIDEuMDE3MXggc2xvd2VyCiAgIHN0cmluZy1wcm90b3R5cGUtc2VhcmNoLW9ic2VydmFibGUt
c2lkZS1lZmZlY3RzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEuMDAzOSstMC4yNDIwICAgICAgICAgICAgMC44ODI2Ky0wLjAyMzYgICAg
ICAgICAgbWlnaHQgYmUgMS4xMzc0eCBmYXN0ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zZWFyY2gt
b2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAuNDgyMystMC4wNTY4ICAgICAgICAgICAgMC40NTc3
Ky0wLjAzMjAgICAgICAgICAgbWlnaHQgYmUgMS4wNTM3eCBmYXN0ZXIKICAgc3RyaW5nLXByb3Rv
dHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNDc2NSstMC4wMzUzICAgICAg
ICAgICAgMC40NjcxKy0wLjA1NDIgICAgICAgICAgbWlnaHQgYmUgMS4wMjAxeCBmYXN0ZXIKICAg
c3RyaW5nLXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0ICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNDY1Myst
MC4wMjk0ICAgICAgICAgICAgMC40NTY0Ky0wLjAxNzYgICAgICAgICAgbWlnaHQgYmUgMS4wMTk3
eCBmYXN0ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
cyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxLjI2ODYrLTAuMTM0NCAgICAgPyAgICAgIDEuMzYwMCstMC4xOTY2ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDcyMHggc2xvd2VyCiAgIHN0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAuNDkxNSstMC4wNDQ4ICAgICA/ICAgICAgMC41MDM5Ky0wLjAzMTggICAg
ICAgID8gbWlnaHQgYmUgMS4wMjUyeCBzbG93ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC41MTQzKy0wLjA2MjAgICAgID8gICAgICAw
LjUyMjkrLTAuMDQ4OCAgICAgICAgPyBtaWdodCBiZSAxLjAxNjd4IHNsb3dlcgogICBzdHJpbmct
cHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC41MDE4Ky0w
LjAzNTYgICAgICAgICAgICAwLjQ5NDgrLTAuMDIzMiAgICAgICAgICBtaWdodCBiZSAxLjAxNDJ4
IGZhc3RlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3Rz
My1pZ25vcmVDYXNlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAuNDc4MistMC4wMjI0ICAgICA/ICAgICAgMC40ODMwKy0wLjAzNjMgICAg
ICAgID8gbWlnaHQgYmUgMS4wMTAweCBzbG93ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNDc4MSstMC4wMjQyICAgICA/ICAg
ICAgMC40ODIwKy0wLjAyMjQgICAgICAgID8KICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNl
cnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNDkwMSstMC4wMTgyICAgICA/ICAgICAgMC40
OTMzKy0wLjAyNjQgICAgICAgID8KICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0czMtdW5pY29kZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjUwOTYrLTAuMDQ5MCAgICAgICAgICAgIDAuNDczMist
MC4wMTg4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDc2OXggZmFzdGVyCiAgIHN0cmluZy1wcm90b3R5
cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0ICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNDkwOSstMC4wMzExICAgICA/ICAg
ICAgMC41MDUyKy0wLjAzMTkgICAgICAgID8gbWlnaHQgYmUgMS4wMjkweCBzbG93ZXIKICAgc3Ry
aW5nLXJlcGVhdC1hcml0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMy40OTk0Ky0x
LjM5ODYgICAgICAgICAgIDIyLjUwMzErLTEuNjQ0MyAgICAgICAgICBtaWdodCBiZSAxLjA0NDN4
IGZhc3RlcgogICBzdHJpbmctcmVwZWF0LW5vdC1yZXNvbHZpbmctZml4ZWQgICAgICAgICAgICAg
ICAgICAzLjAwNjMrLTAuMTMwMiAgICAgPyAgICAgIDMuMDIwMSstMC4xNDM3ICAgICAgICA/CiAg
IHN0cmluZy1yZXBlYXQtbm90LXJlc29sdmluZy1uby1pbmxpbmUgICAgICAgICAgICAgIDMuNDc0
MistMC4yMDk4ICAgICA/ICAgICAgMy42MTQ0Ky0wLjE3ODcgICAgICAgID8gbWlnaHQgYmUgMS4w
NDA0eCBzbG93ZXIKICAgc3RyaW5nLXJlcGVhdC1ub3QtcmVzb2x2aW5nICAgICAgICAgICAgICAg
ICAgICAgICAgMy44MjY0Ky0wLjE4ODYgICAgICAgICAgICAzLjc0ODcrLTAuMjA3OSAgICAgICAg
ICBtaWdodCBiZSAxLjAyMDd4IGZhc3RlcgogICBzdHJpbmctcmVwZWF0LXJlc29sdmluZy1maXhl
ZCAgICAgICAgICAgICAgICAgICAgIDIwLjk5NjkrLTAuODE5MCAgICAgPyAgICAgMjEuOTA3MSst
MS40Nzc4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQzNHggc2xvd2VyCiAgIHN0cmluZy1yZXBlYXQt
cmVzb2x2aW5nLW5vLWlubGluZSAgICAgICAgICAgICAgICAgMjguNjYxNSstMS43NTk3ICAgICAg
ICAgICAyOC4wMTQ4Ky0wLjg3OTUgICAgICAgICAgbWlnaHQgYmUgMS4wMjMxeCBmYXN0ZXIKICAg
c3RyaW5nLXJlcGVhdC1yZXNvbHZpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAyOS4zNTg0
Ky0xLjU3ODYgICAgICAgICAgIDI3Ljc1NzgrLTAuODE5MSAgICAgICAgICBtaWdodCBiZSAxLjA1
Nzd4IGZhc3RlcgogICBzdHJpbmctcmVwZWF0LXNpbmdsZS1ub3QtcmVzb2x2aW5nICAgICAgICAg
ICAgICAgICA3LjU3NTUrLTEuMDI0MyAgICAgPyAgICAgIDcuNzI5MCstMS4xMjM0ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDIwM3ggc2xvd2VyCiAgIHN0cmluZy1yZXBlYXQtc2luZ2xlLXJlc29sdmlu
ZyAgICAgICAgICAgICAgICAgICAgIDcuNTI4NSstMC42MDk4ICAgICA/ICAgICAgNy42OTkyKy0w
LjQwODQgICAgICAgID8gbWlnaHQgYmUgMS4wMjI3eCBzbG93ZXIKICAgc3RyaW5nLXJlcGVhdC1z
bWFsbC1ub3QtcmVzb2x2aW5nICAgICAgICAgICAgICAgICAgMy4wMzU2Ky0wLjEzNzMgICAgID8g
ICAgICAzLjA4MzIrLTAuMTA3NyAgICAgICAgPyBtaWdodCBiZSAxLjAxNTd4IHNsb3dlcgogICBz
dHJpbmctcmVwZWF0LXNtYWxsLXJlc29sdmluZyAgICAgICAgICAgICAgICAgICAgIDI5LjA1MDYr
LTEuNjU5MCAgICAgICAgICAgMjguNzY2MistMS4zMzM3ICAgICAgICAKICAgc3RyaW5nLXJlcGxh
Y2UtZW1wdHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS41MjE0Ky0wLjQwMzEgICAg
ID8gICAgICA5Ljg2NjQrLTAuNDM2OSAgICAgICAgPyBtaWdodCBiZSAxLjAzNjJ4IHNsb3dlcgog
ICBzdHJpbmctcmVwbGFjZS1nZW5lcmljICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ5Ljgx
MTArLTEuNTM3MiAgICAgPyAgICAgNTAuMTYyNSstMS42NDM5ICAgICAgICA/CiAgIHN0cmluZy1y
ZXBsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuNzY3MSstMC40ODMx
ICAgICA/ICAgICAxMC4xNDU4Ky0wLjgwODMgICAgICAgID8gbWlnaHQgYmUgMS4wMzg4eCBzbG93
ZXIKICAgc3RyaW5nLXJvcGUtd2l0aC1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAx
OS44MzE2Ky0xLjY3NjMgICAgICAgICAgIDE5LjMyNjArLTAuNzI5NiAgICAgICAgICBtaWdodCBi
ZSAxLjAyNjJ4IGZhc3RlcgogICBzdHJpbmctc3ViICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQyLjkxMTYrLTMuNDQ2MiAgICAgICAgICAgNDAuODk3OSstMi4zMzI4ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDQ5MnggZmFzdGVyCiAgIHN0cmluZy10ZXN0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMTY0NistMC4xNDI3ICAgICA/ICAgICAgMy4y
ODAxKy0wLjI5ODcgICAgICAgID8gbWlnaHQgYmUgMS4wMzY1eCBzbG93ZXIKICAgc3RyaW5nLXRy
YW5zY29kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi42Mzc5Ky0xLjk5MTYg
ICAgID8gICAgIDE4LjE1NjErLTAuODU4NyAgICAgICAgPyBtaWdodCBiZSAxLjA5MTJ4IHNsb3dl
cgogICBzdHJpbmctdmFyLWVxdWFsaXR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI3
LjY1NzIrLTAuODQ4NyAgICAgICAgICAgMjYuNjgxMystMC44NjY1ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDM2NnggZmFzdGVyCiAgIHN0cmluZ2FsbG9jICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgODUuOTg1NSstMS4zMTc4ICAgICAgICAgICA4NS4xMTgyKy0xLjQ3ODMgICAg
ICAgICAgbWlnaHQgYmUgMS4wMTAyeCBmYXN0ZXIKICAgc3RydWN0dXJlLWhvaXN0LW92ZXItdHJh
bnNpdGlvbnMgICAgICAgICAgICAgICAgICAgMi45NjExKy0wLjEwNzIgICAgID8gICAgICAzLjA1
ODMrLTAuMjM0NCAgICAgICAgPyBtaWdodCBiZSAxLjAzMjh4IHNsb3dlcgogICBzdWJzdHJpbmct
Y29uY2F0LXdlaXJkICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQxLjM3NTYrLTEuNzY2NyAg
ICAgICAgICAgMzkuODU5OSstMC43OTc3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM4MHggZmFzdGVy
CiAgIHN1YnN0cmluZy1jb25jYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDcu
MDkwOSstMi45Njk2ICAgICA/ICAgICA0OS4wNDM4Ky0yLjc0NzEgICAgICAgID8gbWlnaHQgYmUg
MS4wNDE1eCBzbG93ZXIKICAgc3Vic3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA1NS43MTUwKy0xLjgxMzggICAgID8gICAgIDU2LjE0MDkrLTIuMzM1MSAgICAg
ICAgPwogICBzdXBlci1nZXQtYnktaWQtd2l0aC10aGlzLW1vbm9tb3JwaGljICAgICAgICAgICAg
IDE5LjQxODgrLTAuNjI5OCAgICAgPyAgICAgMjEuMDAzNCstMS4xODc2ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDgxNnggc2xvd2VyCiAgIHN1cGVyLWdldC1ieS1pZC13aXRoLXRoaXMtcG9seW1vcnBo
aWMgICAgICAgICAgICAgMTcuNzMxMSstMC4zMjU1ICAgICA/ICAgICAxOC40NjU2Ky0wLjUwNDMg
ICAgICAgID8gbWlnaHQgYmUgMS4wNDE0eCBzbG93ZXIKICAgc3VwZXItZ2V0LWJ5LXZhbC13aXRo
LXRoaXMtbW9ub21vcnBoaWMgICAgICAgICAgICAyNS4yNjEyKy0wLjQ0ODggICAgID8gICAgIDI2
LjA0OTYrLTAuNjQwNiAgICAgICAgPyBtaWdodCBiZSAxLjAzMTJ4IHNsb3dlcgogICBzdXBlci1n
ZXQtYnktdmFsLXdpdGgtdGhpcy1wb2x5bW9ycGhpYyAgICAgICAgICAgIDIzLjc1NDkrLTEuNzc2
MiAgICAgPyAgICAgMjMuODEyMCstMC43NzAyICAgICAgICA/CiAgIHN1cGVyLWdldHRlciAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAuMDQwOSstMC42NTg1ICAgICA/ICAg
ICAzMS4wNzEyKy0xLjQxMTAgICAgICAgID8gbWlnaHQgYmUgMS4wMzQzeCBzbG93ZXIKICAgc3dp
dGNoLWNoYXItY29uc3RhbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4yNTUwKy0w
LjA2NjcgICAgICAgICAgICAyLjIyNTIrLTAuMDYwNSAgICAgICAgICBtaWdodCBiZSAxLjAxMzR4
IGZhc3RlcgogICBzd2l0Y2gtY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA1LjI4MDIrLTAuMTcyNiAgICAgICAgICAgIDUuMTM5NystMC4xMTA5ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDI3M3ggZmFzdGVyCiAgIHN3aXRjaC1jb25zdGFudCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDUuMDI4MystMC4yMDAzICAgICAgICAgICAgNC45MzM5Ky0wLjE2
MDQgICAgICAgICAgbWlnaHQgYmUgMS4wMTkxeCBmYXN0ZXIKICAgc3dpdGNoLXN0cmluZy1iYXNp
Yy1iaWctdmFyICAgICAgICAgICAgICAgICAgICAgICAxNS44MTQ4Ky0wLjQwMDggICAgICAgICAg
IDE1LjgwNDkrLTAuNTQ5OCAgICAgICAgCiAgIHN3aXRjaC1zdHJpbmctYmFzaWMtYmlnICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTIuMDk0MistMC40ODY3ICAgICA/ICAgICAxMi4yODQ5Ky0w
LjQwMTkgICAgICAgID8gbWlnaHQgYmUgMS4wMTU4eCBzbG93ZXIKICAgc3dpdGNoLXN0cmluZy1i
YXNpYy12YXIgICAgICAgICAgICAgICAgICAgICAgICAgICAxNS43NzQ4Ky0wLjcwMjYgICAgID8g
ICAgIDE1Ljc5MjgrLTAuMzQxNSAgICAgICAgPwogICBzd2l0Y2gtc3RyaW5nLWJhc2ljICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDExLjkwMjUrLTAuODAyMiAgICAgPyAgICAgMTEuOTc2
OSstMC41ODQyICAgICAgICA/CiAgIHN3aXRjaC1zdHJpbmctYmlnLWxlbmd0aC10b3dlci12YXIg
ICAgICAgICAgICAgICAgMjAuNDU4NCstMC43OTgyICAgICAgICAgICAyMC4yNTA2Ky0wLjM4MDcg
ICAgICAgICAgbWlnaHQgYmUgMS4wMTAzeCBmYXN0ZXIKICAgc3dpdGNoLXN0cmluZy1sZW5ndGgt
dG93ZXItdmFyICAgICAgICAgICAgICAgICAgICAxNS4xOTI1Ky0wLjYwNzIgICAgICAgICAgIDE1
LjA1NTMrLTAuMzk1OSAgICAgICAgCiAgIHN3aXRjaC1zdHJpbmctbGVuZ3RoLXRvd2VyICAgICAg
ICAgICAgICAgICAgICAgICAgMTEuNzczOCstMC40NzQ2ICAgICAgICAgICAxMS42OTA1Ky0wLjMy
MTYgICAgICAgIAogICBzd2l0Y2gtc3RyaW5nLXNob3J0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEyLjE1NTkrLTAuODg4MiAgICAgICAgICAgMTEuNzQ5OSstMC40NDQ5ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDM0NXggZmFzdGVyCiAgIHN3aXRjaCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDYuMjg1MCstMC4xOTEwICAgICAgICAgICAgNi4xMDU2Ky0w
LjIwMDIgICAgICAgICAgbWlnaHQgYmUgMS4wMjk0eCBmYXN0ZXIKICAgc3dpdGNoaW5nLXNpemUt
Y2xhc3NlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNy4yMjYyKy0wLjI0ODUgICAgICAg
ICAgIDI3LjIyNTkrLTAuMzc2OSAgICAgICAgCiAgIHN5bWJvbC10b3N0cmluZ3RhZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDMuMDEzMistMC4yNzM0ICAgICAgICAgICAgMi44NzUy
Ky0wLjA5MTMgICAgICAgICAgbWlnaHQgYmUgMS4wNDgweCBmYXN0ZXIKICAgdGFuICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3Ni41NTcxKy0yLjgyMzUgICAg
ID8gICAgIDc2Ljk3OTMrLTIuNTAxOCAgICAgICAgPwogICB0ZWFyLW9mZi1hcmd1bWVudHMtc2lt
cGxlICAgICAgICAgICAgICAgICAgICAgICAgICAyLjc0MDUrLTAuMTE2NiAgICAgICAgICAgIDIu
NjkxMystMC4wODk4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE4M3ggZmFzdGVyCiAgIHRlYXItb2Zm
LWFyZ3VtZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNDY5MistMC4xMjA1
ICAgICA/ICAgICAgMy41OTUwKy0wLjEyMDUgICAgICAgID8gbWlnaHQgYmUgMS4wMzYyeCBzbG93
ZXIKICAgdGVtcGxhdGUtc3RyaW5nLWFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NS41NzEzKy0wLjM3NDMgICAgICAgICAgICA1LjQxOTIrLTAuMjUxMSAgICAgICAgICBtaWdodCBi
ZSAxLjAyODF4IGZhc3RlcgogICB0ZW1wb3JhbC1zdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEyLjk4ODErLTAuNzcyMiAgICAgPyAgICAgMTMuMjY2OCstMC40ODcxICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDIxNXggc2xvd2VyCiAgIHRvLWludDMyLWJvb2xlYW4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMuMTIzMistMC40ODI5ICAgICA/ICAgICAxMy4y
MzMwKy0wLjQyOTMgICAgICAgID8KICAgdG8tbG93ZXItY2FzZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDExNC44MTY4Ky0yLjAyODcgICAgICAgICAgMTE0LjI1NzcrLTMuMTI5
NCAgICAgICAgCiAgIHRvLW51bWJlci1jb25zdHJ1Y3Rvci1udW1iZXItc3RyaW5nLW51bWJlci1z
dHJpbmcgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMy44NzY0Ky0wLjIwNzkgICAgID8gICAgICA0LjAxOTErLTAuMzUzNiAgICAgICAgPyBt
aWdodCBiZSAxLjAzNjh4IHNsb3dlcgogICB0by1udW1iZXItY29uc3RydWN0b3Itb25seS1udW1i
ZXIgICAgICAgICAgICAgICAgICAwLjc1NjArLTAuMDE4MSAgICAgPyAgICAgIDAuNzk1NistMC4w
MjQyICAgICAgICA/IG1pZ2h0IGJlIDEuMDUyNHggc2xvd2VyCiAgIHRvLW51bWJlci1jb25zdHJ1
Y3Rvci1vbmx5LXN0cmluZyAgICAgICAgICAgICAgICAgIDEuOTIxNistMC4wOTU0ICAgICAgICAg
ICAgMS44OTgyKy0wLjA0ODggICAgICAgICAgbWlnaHQgYmUgMS4wMTIzeCBmYXN0ZXIKICAgdG8t
bnVtYmVyLWNvbnN0cnVjdG9yLXN0cmluZy1udW1iZXItc3RyaW5nLW51bWJlciAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjE4NjIrLTAu
MTc5OSAgICAgICAgICAgIDMuMDMyNystMC4wNTM4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDUwNngg
ZmFzdGVyCiAgIHRvLW51bWJlci1udW1iZXItc3RyaW5nLW51bWJlci1zdHJpbmcgICAgICAgICAg
ICAgIDMuMzAyNistMC4xNDIyICAgICAgICAgICAgMy4yNDcxKy0wLjE2NjQgICAgICAgICAgbWln
aHQgYmUgMS4wMTcxeCBmYXN0ZXIKICAgdG8tbnVtYmVyLW9ubHktbnVtYmVyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC42OTk5Ky0wLjA0OTggICAgICAgICAgICAwLjY1MTIrLTAuMDM4
MSAgICAgICAgICBtaWdodCBiZSAxLjA3NDh4IGZhc3RlcgogICB0by1udW1iZXItb25seS1zdHJp
bmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjgwMjUrLTAuMDc4NCAgICAgPyAgICAg
IDEuODI0MystMC4wNzYzICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyMXggc2xvd2VyCiAgIHRvLW51
bWJlci1zdHJpbmctbnVtYmVyLXN0cmluZy1udW1iZXIgICAgICAgICAgICAgIDMuMDM3MistMC4x
MjI2ICAgICA/ICAgICAgMy4xMzAwKy0wLjE1ODcgICAgICAgID8gbWlnaHQgYmUgMS4wMzA2eCBz
bG93ZXIKICAgdHJ5LWNhdGNoLWdldC1ieS12YWwtY2xvbmVkLWFyZ3VtZW50cyAgICAgICAgICAg
ICAgNS4wMjQ1Ky0wLjI0OTMgICAgID8gICAgICA1LjIwMjIrLTAuMTM2MiAgICAgICAgPyBtaWdo
dCBiZSAxLjAzNTR4IHNsb3dlcgogICB0cnktY2F0Y2gtZ2V0LWJ5LXZhbC1kaXJlY3QtYXJndW1l
bnRzICAgICAgICAgICAgICAyLjQ0MDkrLTAuMDc4NCAgICAgPyAgICAgIDIuNjgwMSstMC41NzU2
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDk4MHggc2xvd2VyCiAgIHRyeS1jYXRjaC1nZXQtYnktdmFs
LXNjb3BlZC1hcmd1bWVudHMgICAgICAgICAgICAgIDUuMTg2NCstMC40NzgxICAgICAgICAgICAg
NS4wMDE0Ky0wLjE3ODggICAgICAgICAgbWlnaHQgYmUgMS4wMzcweCBmYXN0ZXIKICAgdHJ5LWNh
dGNoLXdvcmQtY291bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzOC41NTgwKy0yLjA2
NjMgICAgICAgICAgIDM3Ljc2NzIrLTEuODEyOSAgICAgICAgICBtaWdodCBiZSAxLjAyMDl4IGZh
c3RlcgogICB0cnktZ2V0LWJ5LWlkLWJhc2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA2LjA3MjIrLTAuMzA0NiAgICAgPyAgICAgIDYuMTk3NSstMC4yODMzICAgICAgICA/IG1pZ2h0
IGJlIDEuMDIwNnggc2xvd2VyCiAgIHRyeS1nZXQtYnktaWQtcG9seW1vcnBoaWMgICAgICAgICAg
ICAgICAgICAgICAgICAgIDcuMTk1MCstMC4yMjE5ICAgICAgICAgICAgNy4xNzk3Ky0wLjE4OTAg
ICAgICAgIAogICB0eXBlZC1hcnJheS1nZXQtc2V0LWJ5LXZhbC1wcm9maWxpbmcgICAgICAgICAg
ICAgIDIxLjA4NTgrLTAuNjE2NSAgICAgPyAgICAgMjEuODkwMCstMS4zMTI3ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDM4MXggc2xvd2VyCiAgIHR5cGVkLWFycmF5LXN1YmFycmF5ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNDAuNDA4MSstMi42ODI1ICAgICA/ICAgICA0MC45MjQ1Ky0xLjg1
NzEgICAgICAgID8gbWlnaHQgYmUgMS4wMTI4eCBzbG93ZXIKICAgdW5kZWZpbmVkLXByb3BlcnR5
LWFjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgIDIyNS40NzMxKy0zLjYzOTcgICAgID8gICAg
MjMwLjI5OTkrLTYuMzU3NSAgICAgICAgPyBtaWdodCBiZSAxLjAyMTR4IHNsb3dlcgogICB1bmRl
ZmluZWQtdGVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjQzNzArLTAu
MTM3NiAgICAgICAgICAgIDMuMzczOCstMC4xNjA0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE4N3gg
ZmFzdGVyCiAgIHVucHJvZmlsZWQtbGljbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDYuNjg5MistMC4zMTIxICAgICA/ICAgICAgNi43MTgyKy0wLjI0NTEgICAgICAgID8KICAg
dW50eXBlZC1zdHJpbmctZnJvbS1jaGFyLWNvZGUgICAgICAgICAgICAgICAgICAgICAxMC43Mjcx
Ky0wLjUzNDMgICAgICAgICAgIDEwLjcxODArLTAuMjAwMyAgICAgICAgCiAgIHY4LXJheXRyYWNl
LXdpdGgtZW1wdHktdHJ5LWNhdGNoICAgICAgICAgICAgICAgICAgMzMuODQ0MystMS4wNTAyICAg
ICA/ICAgICAzNS42NDUxKy0xLjQwNjggICAgICAgID8gbWlnaHQgYmUgMS4wNTMyeCBzbG93ZXIK
ICAgdjgtcmF5dHJhY2Utd2l0aC10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICA1My41
NjY5Ky0yLjg2NjEgICAgID8gICAgIDU0LjMzNjUrLTAuODg2NSAgICAgICAgPyBtaWdodCBiZSAx
LjAxNDR4IHNsb3dlcgogICB2OC1yZWdleHAtc2VhcmNoICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDUzLjE3NjUrLTEuNTMwMCAgICAgICAgICAgNTIuNjI1NistMi40MTczICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDEwNXggZmFzdGVyCiAgIHZhcmFyZ3MtY2FsbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTIuOTA4NSstMC4zNjE4ICAgICAgICAgICAxMi42NzAz
Ky0wLjU5OTAgICAgICAgICAgbWlnaHQgYmUgMS4wMTg4eCBmYXN0ZXIKICAgdmFyYXJncy1jb25z
dHJ1Y3QtaW5saW5lICAgICAgICAgICAgICAgICAgICAgICAgICAxNi4xNzcwKy0wLjQwMzkgICAg
ID8gICAgIDE2LjMwMjUrLTAuNzAzMiAgICAgICAgPwogICB2YXJhcmdzLWNvbnN0cnVjdCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLjM5NjQrLTEuNTQ4MiAgICAgICAgICAgMTku
ODI4NSstMC43MjkyICAgICAgICAgIG1pZ2h0IGJlIDEuMDI4NnggZmFzdGVyCiAgIHZhcmFyZ3Mt
aW5saW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuMTAzMistMC4yMzQ5
ICAgICA/ICAgICAgNy4zNzEzKy0wLjIwMTMgICAgICAgID8gbWlnaHQgYmUgMS4wMzc3eCBzbG93
ZXIKICAgdmFyYXJncy1zdHJpY3QtbW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OC41MDQyKy0wLjM0NjggICAgID8gICAgICA4LjYwMTkrLTAuMzAyNCAgICAgICAgPyBtaWdodCBi
ZSAxLjAxMTV4IHNsb3dlcgogICB2YXJhcmdzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA4LjI3ODQrLTAuNDMxNyAgICAgPyAgICAgIDguMzg4NistMC40MTMwICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDEzM3ggc2xvd2VyCiAgIHdlaXJkLWlubGluaW5nLWNvbnN0LXBy
b3AgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMTkwMistMC4xNzk1ICAgICA/ICAgICAgMi4y
MzQwKy0wLjEwNTEgICAgICAgID8gbWlnaHQgYmUgMS4wMjAweCBzbG93ZXIKCiAgIDxnZW9tZXRy
aWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguMzE0OCstMC4wMTc2
ICAgICA/ICAgICAgOC4zMjE5Ky0wLjAxOTMgICAgICAgID8gbWlnaHQgYmUgMS4wMDA5eCBzbG93
ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYmFzZSAgICAgICAgICAgICAgICAgICAgICBuZXcgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCkFzbUJlbmNoOgogICBiaWdmaWIuY3BwICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNDg0LjE3NjUrLTYuOTY3MiAgICAgPyAgICA0ODYuNTg4
NSstMi41NzcwICAgICAgICA/CiAgIGNyYXkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA0MDMuODU4NistNi42MDcxICAgICA/ICAgIDQwOS40OTU4Ky01Ljc3MjMg
ICAgICAgID8gbWlnaHQgYmUgMS4wMTQweCBzbG93ZXIKICAgZHJ5LmMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ1NS41NzM0Ky0xMS42MDkyICAgID8gICAgNDU2
Ljc4ODUrLTcuNDQ5NCAgICAgICAgPwogICBGbG9hdE1NLmMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNzAxLjAyODcrLTkuMzE2NCAgICAgPyAgICA3MDguNTM3OSstNS43
ODk5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEwN3ggc2xvd2VyCiAgIGdjYy1sb29wcy5jcHAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM4OTYuMzc0NystMzIuMjY1OCAgICA/ICAg
MzkxNS41MDg1Ky0yMy41NDE2ICAgICAgID8KICAgbi1ib2R5LmMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDg4MS4zNjE4Ky01Mi41MDU3ICAgICAgICAgODY0Ljk2Njcr
LTEwLjE1ODUgICAgICAgICBtaWdodCBiZSAxLjAxOTB4IGZhc3RlcgogICBRdWlja3NvcnQuYyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDE1LjAzODgrLTQuNDkwMCAgICAg
PyAgICA0MTcuMDcxMSstNi4yNDM0ICAgICAgICA/CiAgIHN0ZXBhbm92X2NvbnRhaW5lci5jcHAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDM1OTMuODI1MSstMjkuNDA0NyAgICA/ICAgMzYxMC44
ODg5Ky0zOC40NzI3ICAgICAgID8KICAgVG93ZXJzLmMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDI2NS40MjgwKy0zLjk1MDQgICAgICAgICAgMjU5LjY3NjUrLTMuMDE1
NSAgICAgICAgICBtaWdodCBiZSAxLjAyMjF4IGZhc3RlcgoKICAgPGdlb21ldHJpYz4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc2MC4wOTAzKy03LjA5MzcgICAgID8gICAg
NzYwLjc2NjcrLTMuNjQyMyAgICAgICAgPyBtaWdodCBiZSAxLjAwMDl4IHNsb3dlcgoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNl
ICAgICAgICAgICAgICAgICAgICAgIG5ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKQ29tcHJlc3Npb25CZW5jaDoKICAgaHVmZm1hbiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAyMS41NTExKy0wLjY4MTUgICAgICAgICAgIDIwLjc0Njcr
LTAuODQxNiAgICAgICAgICBtaWdodCBiZSAxLjAzODh4IGZhc3RlcgogICBhcml0aG1ldGljLXNp
bXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjg2LjQyMTMrLTguMDg0OSAgICAg
PyAgICAyODYuNDU1NistNy43MDkzICAgICAgICA/CiAgIGFyaXRobWV0aWMtcHJlY2lzZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyNjUuMjc5MCstMTQuNzc5MSAgICAgICAgIDI2MS41
MDY5Ky03Ljc5NTYgICAgICAgICAgbWlnaHQgYmUgMS4wMTQ0eCBmYXN0ZXIKICAgYXJpdGhtZXRp
Yy1jb21wbGV4LXByZWNpc2UgICAgICAgICAgICAgICAgICAgICAgIDI2NS42OTAyKy04LjAzOTQg
ICAgID8gICAgMjc2Ljg2MzErLTkuODkzMCAgICAgICAgPyBtaWdodCBiZSAxLjA0MjF4IHNsb3dl
cgogICBhcml0aG1ldGljLXByZWNpc2Utb3JkZXItMCAgICAgICAgICAgICAgICAgICAgICAgMjk4
Ljc4MzcrLTMuMzE5NSAgICAgPyAgICAzMDQuMzE0MystNy4zNDU5ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDE4NXggc2xvd2VyCiAgIGFyaXRobWV0aWMtcHJlY2lzZS1vcmRlci0xICAgICAgICAgICAg
ICAgICAgICAgICAzMTYuODQ2NystNC40MjQ4ICAgICAgICAgIDMxNS44NTMxKy00LjQ0NDUgICAg
ICAgIAogICBhcml0aG1ldGljLXByZWNpc2Utb3JkZXItMiAgICAgICAgICAgICAgICAgICAgICAg
Mzc0LjA1NjQrLTcuNDg0MSAgICAgPyAgICAzNzQuODI4OSstNi4wMzY5ICAgICAgICA/CiAgIGFy
aXRobWV0aWMtc2ltcGxlLW9yZGVyLTEgICAgICAgICAgICAgICAgICAgICAgICAzMzcuODM5OCst
Ni45NTY3ICAgICAgICAgIDMzNS41NTc1Ky00LjU3NTkgICAgICAgIAogICBhcml0aG1ldGljLXNp
bXBsZS1vcmRlci0yICAgICAgICAgICAgICAgICAgICAgICAgMzk1LjgzOTkrLTcuMDg3NCAgICAg
PyAgICA0MDEuOTkwNCstOC4zMjkxICAgICAgICA/IG1pZ2h0IGJlIDEuMDE1NXggc2xvd2VyCiAg
IGx6LXN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNjQuOTMw
MistNC43NTA2ICAgICAgICAgIDI2My41MDkxKy0yLjkwODAgICAgICAgIAoKICAgPGdlb21ldHJp
Yz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzNi4zMjM4Ky0xLjM0NDgg
ICAgID8gICAgMjM2LjU3NzYrLTIuNDUyMSAgICAgICAgPyBtaWdodCBiZSAxLjAwMTF4IHNsb3dl
cgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBiYXNlICAgICAgICAgICAgICAgICAgICAgIG5ldyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKU2l4U3BlZWQ6CiAgIHRlbXBsYXRlX3N0cmluZy5lczUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDU5ODQuNjcwMCstNzAuNjkwNiAgICA/ICAgNjA2My41MzU5
Ky0xNzYuODMyNCAgICAgID8gbWlnaHQgYmUgMS4wMTMyeCBzbG93ZXIKICAgdGVtcGxhdGVfc3Ry
aW5nLmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzgzOC4xODQ1Ky0zMS4zODI2ICAg
ID8gICAzODUxLjc2ODYrLTQ5LjE1NDEgICAgICAgPwogICBkZWZhdWx0cy5lczUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzY3LjYzNDYrLTMuNjY2NCAgICAgPyAgICAzNjku
Mjk1NistNy44OTU5ICAgICAgICA/CiAgIGRlZmF1bHRzLmVzNiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAzNjUuNTIwNistNy4zMDgxICAgICA/ICAgIDM2OS45MzY4Ky05LjM1
MDMgICAgICAgID8gbWlnaHQgYmUgMS4wMTIxeCBzbG93ZXIKICAgbWFwLXNldC1sb29rdXAuZXM1
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2Ni4yMjgyKy0zLjMzNTkgICAgICAgICAg
IDY2LjA1MDgrLTIuOTU2OSAgICAgICAgCiAgIG1hcC1zZXQtbG9va3VwLmVzNiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEuNTUyMistMC40NjQ2ICAgICAgICAgICAgMS4yNTE3Ky0w
LjI2MDkgICAgICAgICAgbWlnaHQgYmUgMS4yNDAweCBmYXN0ZXIKICAgc3ByZWFkLmVzNSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNC4yMzI0Ky0wLjcyNTIgICAgICAg
ICAgIDEzLjk2OTkrLTAuNTYxOSAgICAgICAgICBtaWdodCBiZSAxLjAxODh4IGZhc3RlcgogICBz
cHJlYWQuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ4LjY4OTkr
LTIuMDAxNiAgICAgICAgICAgNDYuOTkzMSstMS43MTI3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM2
MXggZmFzdGVyCiAgIG9iamVjdC1hc3NpZ24uZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzMDYuNDI2OCstNS44OTU0ICAgICA/ICAgIDMxNC40OTU4Ky0zLjE4MTMgICAgICAgID8g
bWlnaHQgYmUgMS4wMjYzeCBzbG93ZXIKICAgb2JqZWN0LWFzc2lnbi5lczYgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDI1Ni4zNzc5Ky00LjgyNDUgICAgID8gICAgMjYxLjQ0NTcrLTMu
OTgyNyAgICAgICAgPyBtaWdodCBiZSAxLjAxOTh4IHNsb3dlcgogICBzcHJlYWQtbGl0ZXJhbC5l
czUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg4LjAzNDYrLTIuMDUwMCAgICAgPyAg
ICAgOTAuMzQ5MystMi4xNjE1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI2M3ggc2xvd2VyCiAgIHNw
cmVhZC1saXRlcmFsLmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUuMDEwNSst
MC42OTU1ICAgICA/ICAgICAyNS45MzQwKy0yLjAzNTEgICAgICAgID8gbWlnaHQgYmUgMS4wMzY5
eCBzbG93ZXIKICAgbWFwLXNldC5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyMS4yMTI5Ky0xLjAwNjAgICAgICEgICAgIDI0Ljc2ODcrLTEuMzE5MiAgICAgICAgISBk
ZWZpbml0ZWx5IDEuMTY3Nnggc2xvd2VyCiAgIG1hcC1zZXQuZXM2ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxNTYuNTEwNystMy40OTUzICAgICA/ICAgIDE2Mi41NjI0Ky0z
LjM5NTMgICAgICAgID8gbWlnaHQgYmUgMS4wMzg3eCBzbG93ZXIKICAgZGVzdHJ1Y3R1cmluZy1z
aW1wbGUuZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICA3My40NTA4Ky0xLjkwMjMgICAgICAg
ICAgIDcyLjI3NjIrLTIuNjY0MiAgICAgICAgICBtaWdodCBiZSAxLjAxNjN4IGZhc3RlcgogICBk
ZXN0cnVjdHVyaW5nLXNpbXBsZS5lczYgICAgICAgICAgICAgICAgICAgICAgICAgIDY5Ljg0MTQr
LTYuMTMwMCAgICAgPyAgICAgNzMuOTk1MistMS44NjkzICAgICAgICA/IG1pZ2h0IGJlIDEuMDU5
NXggc2xvd2VyCiAgIHN1cGVyLmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDkuODg4MSstMC41MDI2ICAgICAhICAgICAxMC44Mzc5Ky0wLjI4NzggICAgICAgICEg
ZGVmaW5pdGVseSAxLjA5NjF4IHNsb3dlcgogICBzdXBlci5lczYgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDc5Ljk3MjQrLTEuMTc1OCAgICAgPyAgICAgODEuNjY3OCst
My41MDA3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIxMnggc2xvd2VyCiAgIGZvci1vZi1vYmplY3Qu
ZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDUuMzM3OCstMS4zMTk3ICAgICA/
ICAgICA0Ni41MDczKy0xLjYyNTIgICAgICAgID8gbWlnaHQgYmUgMS4wMjU4eCBzbG93ZXIKICAg
Zm9yLW9mLW9iamVjdC5lczYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyMC4wOTQ5
Ky0yLjY4MDMgICAgID8gICAgMjIzLjc5ODUrLTIuODAwNSAgICAgICAgPyBtaWdodCBiZSAxLjAx
Njh4IHNsb3dlcgogICByZXN0LmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDM5LjY4NjUrLTEuNzY0MyAgICAgPyAgICAgNDEuMzM3MistMS44OTI2ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDQxNnggc2xvd2VyCiAgIHJlc3QuZXM2ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEuODU2NSstMC4wODgyICAgICA/ICAgICAgMS44ODY2Ky0w
LjA3NjIgICAgICAgID8gbWlnaHQgYmUgMS4wMTYyeCBzbG93ZXIKICAgcmVnZXgtdS5lczUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NC4xMzY1Ky0xLjg0MzcgICAgID8g
ICAgIDQ0LjkxMDIrLTIuNzA2NyAgICAgICAgPyBtaWdodCBiZSAxLjAxNzV4IHNsb3dlcgogICBy
ZWdleC11LmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc4LjYxMTIr
LTUuOTQxMiAgICAgICAgICAgNzUuNzU2MistMS4zNzkzICAgICAgICAgIG1pZ2h0IGJlIDEuMDM3
N3ggZmFzdGVyCiAgIGFycm93LmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNzIuNjQ1OSstMi45MDUwICAgICAgICAgICA3Mi4wNDI3Ky0xLjk4MjUgICAgICAgIAog
ICBhcnJvdy5lczYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc1LjQx
MDkrLTQuNjYyMyAgICAgICAgICAgNzIuOTU2NystMy4wNjQ0ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDMzNnggZmFzdGVyCiAgIGJpbmRpbmdzLWNvbXBvdW5kLmVzNSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNjQuODgwOCstNC44NDU3ICAgICAgICAgICA1OS4zNjQ0Ky0zLjA2OTYgICAgICAg
ICAgbWlnaHQgYmUgMS4wOTI5eCBmYXN0ZXIKICAgYmluZGluZ3MtY29tcG91bmQuZXM2ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1OS44NTM1Ky01LjAyMTggICAgID8gICAgIDY5LjE2Njkr
LTUuNzMyMiAgICAgICAgPyBtaWdodCBiZSAxLjE1NTZ4IHNsb3dlcgogICBjbGFzc2VzLmVzNSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY0LjQyMzArLTEuNjQxMiAgICAg
ICAgICAgNjMuMDMxNistMC40MzQ3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIyMXggZmFzdGVyCiAg
IGNsYXNzZXMuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjQuMzQz
NSstMi40OTc3ICAgICAgICAgICA2NC4xNzQ4Ky0xLjMzNzAgICAgICAgIAogICB0ZW1wbGF0ZV9z
dHJpbmdfdGFnLmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgIDYwLjA0MjMrLTAuODY3NiAg
ICAgPyAgICAgNjEuOTE2MCstMS45MDg5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMxMnggc2xvd2Vy
CiAgIHRlbXBsYXRlX3N0cmluZ190YWcuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAxOTMu
MjM3OSstNS4xNDE1ICAgICAgICAgIDE5MS4wMjc3Ky0zLjIzNTIgICAgICAgICAgbWlnaHQgYmUg
MS4wMTE2eCBmYXN0ZXIKICAgbWFwLXN0cmluZy5lczUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEyNS42OTY4Ky05LjU2NTIgICAgICAgICAgMTE3LjAzNjUrLTUuMjkzMSAgICAg
ICAgICBtaWdodCBiZSAxLjA3NDB4IGZhc3RlcgogICBtYXAtc3RyaW5nLmVzNiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNTE5LjM1OTQrLTcuNjg0MSAgICAgXiAgICA0ODkuMjIw
NCstMTAuNTQwMCAgICAgICBeIGRlZmluaXRlbHkgMS4wNjE2eCBmYXN0ZXIKICAgYXJyb3ctZGVj
bGFyZS5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwOS43NjMxKy00LjUxMjEg
ICAgICAgICAgMTA5LjYxODkrLTMuMDM5OSAgICAgICAgCiAgIGFycm93LWRlY2xhcmUuZXM2ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTAuODU3NSstMy41NDcwICAgICAgICAgIDEw
Ny45MDEwKy0yLjY0NDkgICAgICAgICAgbWlnaHQgYmUgMS4wMjc0eCBmYXN0ZXIKICAgc3ByZWFk
LWdlbmVyYXRvci5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4NC42OTA2Ky0zLjA0
MDcgICAgID8gICAgIDkxLjE5NjcrLTMuNTA4NyAgICAgICAgPyBtaWdodCBiZSAxLjA3Njh4IHNs
b3dlcgogICBzcHJlYWQtZ2VuZXJhdG9yLmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MjM0LjU4ODkrLTE0LjM3NTYgICAgXiAgICAyMTAuMzI1NSstMi41OTY3ICAgICAgICBeIGRlZmlu
aXRlbHkgMS4xMTU0eCBmYXN0ZXIKICAgb2JqZWN0LWxpdGVyYWwtZXh0LmVzNSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxNy41NDI4Ky0wLjQ2NTIgICAgICAgICAgIDE3LjE4ODYrLTAuMjI4
MSAgICAgICAgICBtaWdodCBiZSAxLjAyMDZ4IGZhc3RlcgogICBvYmplY3QtbGl0ZXJhbC1leHQu
ZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLjIxNDMrLTAuNDMwNCAgICAgPyAgICAg
MjAuNTQ1OSstMC41MjEyICAgICAgICA/IG1pZ2h0IGJlIDEuMDE2NHggc2xvd2VyCiAgIGdlbmVy
YXRvci5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDYuOTA5NCstMS4z
NDU1ICAgICA/ICAgIDEwNy42NDAyKy0xLjQxNTIgICAgICAgID8KICAgZ2VuZXJhdG9yLmVzNiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5My4yMTk4Ky00LjE5NDMgICAgID8g
ICAgMTk3LjM4OTQrLTQuMzUxNyAgICAgICAgPyBtaWdodCBiZSAxLjAyMTZ4IHNsb3dlcgogICBh
cnJvdy1hcmdzLmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY1LjUzMTYr
LTMuMTM0MiAgICAgICAgICAgNjIuODc0MSstMi43NjYwICAgICAgICAgIG1pZ2h0IGJlIDEuMDQy
M3ggZmFzdGVyCiAgIGFycm93LWFyZ3MuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNjUuOTg5NCstMi41MDEwICAgICAhICAgICA3MS43NTI3Ky0xLjk3NDcgICAgICAgICEg
ZGVmaW5pdGVseSAxLjA4NzN4IHNsb3dlcgogICBmb3Itb2YtYXJyYXkuZXM1ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTg3LjUyMzcrLTEzLjg3NzQgICAgICAgICAxODUuMjA5NCst
NC4wMjk0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyNXggZmFzdGVyCiAgIGZvci1vZi1hcnJheS5l
czYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMTAuOTY4MystNS40ODAwICAgICA/
ICAgIDIxNC40Mzg4Ky02LjkyMjQgICAgICAgID8gbWlnaHQgYmUgMS4wMTY1eCBzbG93ZXIKICAg
YmluZGluZ3MuZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2My44Nzk5
Ky0zLjk2MTAgICAgIF4gICAgIDU3LjU2NjIrLTIuMTAyNiAgICAgICAgXiBkZWZpbml0ZWx5IDEu
MTA5N3ggZmFzdGVyCiAgIGJpbmRpbmdzLmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNzMuNzk0OSstMy41MDY1ICAgICAgICAgICA3My4zMTE0Ky0zLjcxNTIgICAgICAg
IAogICBkZXN0cnVjdHVyaW5nLmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcx
LjI2NzcrLTIuNzE0OSAgICAgICAgICAgNjkuNjg5OSstMS45NjIwICAgICAgICAgIG1pZ2h0IGJl
IDEuMDIyNnggZmFzdGVyCiAgIGRlc3RydWN0dXJpbmcuZXM2ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgODMuMDIzMSstMy43NDY0ICAgICA/ICAgICA4NS4xMTczKy01LjA1NzUgICAg
ICAgID8gbWlnaHQgYmUgMS4wMjUyeCBzbG93ZXIKICAgbWFwLXNldC1vYmplY3QuZXM1ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyOS42Mzc5Ky0wLjYwNTggICAgID8gICAgIDI5Ljk3
NDcrLTAuNzk0NSAgICAgICAgPyBtaWdodCBiZSAxLjAxMTR4IHNsb3dlcgogICBtYXAtc2V0LW9i
amVjdC5lczYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTY1LjUyMzMrLTQuNzc4OCAg
ICAgPyAgICAxNjYuNjk2MSstNC40ODk1ICAgICAgICA/CgogICA8Z2VvbWV0cmljPiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgxLjk4NDIrLTAuODM4MyAgICAgPyAgICAg
ODIuMTg3MystMC41MTI5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDAyNXggc2xvd2VyCgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2Ug
ICAgICAgICAgICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIApHZW9tZWFuIG9mIHByZWZlcnJlZCBtZWFuczoKICAgPHNjYWxlZC1yZXN1bHQ+ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MS42OTYxKy0wLjE2NDIgICAgID8gICAg
IDUxLjg1NTYrLTAuMDcxMiAgICAgICAgPyBtaWdodCBiZSAxLjAwMzF4IHNsb3dlcgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320149</attachid>
            <date>2017-09-07 11:49:40 -0700</date>
            <delta_ts>2017-09-07 11:54:44 -0700</delta_ts>
            <desc>proposed patch (w/ 32-bit fixes).</desc>
            <filename>bug-175144.patch</filename>
            <type>text/plain</type>
            <size>129663</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIxNzA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5OSBA
QAorMjAxNy0wOS0wNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
VXNlIEpJVCBwcm9iZXMgZm9yIERGRyBPU1IgZXhpdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzM0MzcwNTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBkb2VzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIDEuIFJlcGxhY2VzIG9z
ckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoKSB3aXRoIG9zckV4aXRUaHVua0dlbmVyYXRv
cigpLgorICAgICAgICAgICBXaGlsZSBvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKCkg
Z2VuZXJhdGVzIGEgdGh1bmsgdGhhdCBjb21waWxlcyBhCisgICAgICAgICAgIHVuaXF1ZSBPU1Ig
b2ZmcmFtcCBmb3IgZWFjaCBERkcgT1NSIGV4aXQgc2l0ZSwgb3NyRXhpdFRodW5rR2VuZXJhdG9y
KCkKKyAgICAgICAgICAgZ2VuZXJhdGVzIGEgdGh1bmsgdGhhdCBqdXN0IGV4ZWN1dGVzIHRoZSBP
U1IgZXhpdC4KKworICAgICAgICAgICBUaGUgb3NyRXhpdFRodW5rR2VuZXJhdG9yKCkgZ2VuZXJh
dGVkIHRodW5rIHdvcmtzIGJ5IHVzaW5nIGEgc2luZ2xlIEpJVCBwcm9iZQorICAgICAgICAgICB0
byBjYWxsIE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KCkuICBUaGUgSklUIHByb2JlIHRha2VzIGNh
cmUgb2YgcHJlc2VydmluZworICAgICAgICAgICBDUFUgcmVnaXN0ZXJzLCBhbmQgcHJvdmlkaW5n
IHRoZSBQcm9iZTo6U3RhY2sgbWVjaGFuaXNtIGZvciBtb2RpZnlpbmcgdGhlCisgICAgICAgICAg
IHN0YWNrIGZyYW1lLgorCisgICAgICAgICAgIE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KCkgcmVw
bGFjZXMgT1NSRXhpdDo6Y29tcGlsZU9TUkV4aXQoKSBhbmQKKyAgICAgICAgICAgT1NSRXhpdDo6
Y29tcGlsZUV4aXQoKS4gIEl0IGlzIGJhc2ljYWxseSBhIHJlLXdyaXRlIG9mIHRob3NlIGZ1bmN0
aW9ucyB0bworICAgICAgICAgICBleGVjdXRlIHRoZSBPU1IgZXhpdCB3b3JrIGluc3RlYWQgb2Yg
Y29tcGlsaW5nIGNvZGUgdG8gZXhlY3V0ZSB0aGUgd29yay4KKworICAgICAgICAgICBBcyBhIHJl
c3VsdCwgd2UgZ2V0IHRoZSBmb2xsb3dpbmcgc2F2aW5nczoKKyAgICAgICAgICAgYS4gbm8gbW9y
ZSBPU1IgZXhpdCByYW1wIGNvbXBpbGF0aW9uIHRpbWUuCisgICAgICAgICAgIGIuIG5vIHVzZSBv
ZiBKSVQgZXhlY3V0YWJsZSBtZW1vcnkgZm9yIHN0b3JpbmcgZWFjaCB1bmlxdWUgT1NSIGV4aXQg
cmFtcC4KKworICAgICAgICAgICBPbiB0aGUgbmVnYXRpdmUgc2lkZSwgd2UgaW5jdXIgdGhlc2Ug
Y29zdHM6CisKKyAgICAgICAgICAgYy4gdGhlIE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KCkgcmFt
cCBtYXkgYmUgYSBsaXR0bGUgc2xvd2VyIHRoYW4gdGhlIGNvbXBpbGVkCisgICAgICAgICAgICAg
IHZlcnNpb24gb2YgdGhlIHJhbXAuICBIb3dldmVyLCBPU1IgZXhpdHMgYXJlIHJhcmUuICBIZW5j
ZSwgdGhpcyBzbWFsbAorICAgICAgICAgICAgICBkaWZmZXJlbmNlIHNob3VsZCBub3QgbWF0dGVy
IG11Y2guICBJdCBpcyBhbHNvIG9mZnNldCBieSB0aGUgc2F2aW5ncyBmcm9tCisgICAgICAgICAg
ICAgIChhKS4KKworICAgICAgICAgICBkLiB0aGUgUHJvYmU6OlN0YWNrIGFsbG9jYXRlcyAxSyBw
YWdlcyBmb3IgbWVtb3J5IGZvciBidWZmZXJpbmcgc3RhY2sKKyAgICAgICAgICAgICAgbW9kaWZj
YXRpb25zLiAgVGhlIG51bWJlciBvZiB0aGVzZSBwYWdlcyBkZXBlbmRzIG9uIHRoZSBzcGFuIG9m
IHN0YWNrIG1lbW9yeQorICAgICAgICAgICAgICB0aGF0IHRoZSBPU1IgZXhpdCByYW1wIHJlYWRz
IGZyb20gYW5kIHdyaXRlcyB0by4gIFNpbmNlIHRoZSBPU1IgZXhpdCByYW1wCisgICAgICAgICAg
ICAgIHRlbmRzIHRvIG9ubHkgbW9kaWZ5IHZhbHVlcyBpbiB0aGUgY3VycmVudCBERkcgZnJhbWUg
YW5kIHRoZSBjdXJyZW50CisgICAgICAgICAgICAgIFZNRW50cnlSZWNvcmQsIHRoZSBudW1iZXIg
b2YgcGFnZXMgdGVuZHMgdG8gb25seSBiZSAxIG9yIDIuCisKKyAgICAgICAgICAgICAgVXNpbmcg
dGhlIGpzYyB0ZXN0cyBhcyBhIHdvcmtsb2FkLCB0aGUgdmFzdCBtYWpvcml0eSBvZiB0ZXN0cyB0
aGF0IGRvIE9TUgorICAgICAgICAgICAgICBleGl0LCB1c2VzIDMgb3IgbGVzcyAxSyBwYWdlcyAo
d2l0aCB0aGUgb3ZlcndoZWxtaW5nIG51bWJlciB1c2luZyBqdXN0IDEgcGFnZSkuCisgICAgICAg
ICAgICAgIEEgZmV3IHRlc3RzIHRoYXQgYXJlIHBhdGhvbG9naWNhbCB1c2VzIHVwIHRvIDE0IHBh
Z2VzLCBhbmQgb25lIHBhcnRpY3VsYXJseQorICAgICAgICAgICAgICBiYWQgdGVzdCAoZnVuY3Rp
b24tYXBwbHktbWFueS1hcmdzLmpzKSB1c2VzIDUxMyBwYWdlcy4KKworICAgICAgICAgICBTaW1p
bGFyIHRvIHRoZSBvbGQgY29kZSwgdGhlIE9TUiBleGl0IHJhbXAgc3RpbGwgaGFzIDIgcGFydHM6
IDEgcGFydCB0aGF0IGlzCisgICAgICAgICAgIG9ubHkgZXhlY3V0ZWQgb25jZSB0byBjb21wdXRl
IHNvbWUgdmFsdWVzIGZvciB0aGUgZXhpdCBzaXRlIHRoYXQgaXMgdXNlZCBieQorICAgICAgICAg
ICBhbGwgZXhpdCBvcGVyYXRpb25zIGZyb20gdGhhdCBzaXRlLCBhbmQgYSAybmQgcGFydCB0byBl
eGVjdXRlIHRoZSBleGl0LiAgVGhlCisgICAgICAgICAgIDFzdCBwYXJ0IGlzIHByb3RlY3RlZCBi
eSBhIGNoZWNraW5nIGlmIGV4aXQuZXhpdFN0YXRlIGhhcyBhbHJlYWR5IGJlZW4KKyAgICAgICAg
ICAgaW5pdGlhbGl6ZWQuICBUaGUgY29tcHV0ZWQgdmFsdWVzIGFyZSBjYWNoZWQgaW4gZXhpdC5l
eGl0U3RhdGUuCisKKyAgICAgICAgICAgQmVjYXVzZSB0aGUgT1NSIGV4aXQgdGh1bmsgbm8gbG9u
Z2VyIGNvbXBpbGVzIGFuIE9TUiBleGl0IG9mZi1yYW1wLCB3ZSBubworICAgICAgICAgICBsb25n
ZXIgbmVlZCB0aGUgZmFjaWxpdHkgdG8gcGF0Y2ggdGhlIHNpdGUgdGhhdCBqdW1wcyB0byB0aGUg
T1NSIGV4aXQgcmFtcC4KKyAgICAgICAgICAgVGhlIERGRzo6SklUQ29tcGlsZXIgaGFzIGJlZW4g
bW9kaWZpZWQgdG8gcmVtb3ZlIHRoaXMgcGF0Y2hpbmcgY29kZS4KKworICAgICAgICAyLiBGaXhl
ZCB0aGUgYm90dG9tIG1vc3QgUHJvYmU6OkNvbnRleHQgYW5kIFByb2JlOjpTdGFjayBnZXQvc2V0
IG1ldGhvZHMgdG8gdXNlCisgICAgICAgICAgIHN0ZDo6bWVtY3B5IHRvIGF2b2lkIHN0cmljdCBh
bGlhc2luZyBpc3N1ZXMuCisKKyAgICAgICAgICAgQWxzbyBvcHRpbWl6ZWQgdGhlIGltcGxlbWVu
dGF0aW9uIG9mIFByb2JlOjpTdGFjazo6cGh5c2ljYWxBZGRyZXNzRm9yKCkuCisKKyAgICAgICAg
My4gTWlzY2VsbGFuZW91cyBjb252ZW5pZW5jZSBtZXRob2RzIGFkZGVkIHRvIG1ha2UgdGhlIFBy
b2JlOjpDb250ZXh0IGVhc2llciBvZgorICAgICAgICAgICB1c2UuCisKKyAgICAgICAgNC4gQWRk
ZWQgYSBQcm9iZTo6RnJhbWUgY2xhc3MgdGhhdCBtYWtlcyBpdCBlYXNpZXIgdG8gZ2V0L3NldCBv
cGVyYW5kcyBhbmQKKyAgICAgICAgICAgYXJndW1lbnRzIGluIGEgZ2l2ZW4gZnJhbWUgdXNpbmcg
dGhlIGRlZmVycmVkIHdyaXRlIHByb3BlcnRpZXMgb2YgdGhlCisgICAgICAgICAgIFByb2JlOjpT
dGFjay4gIFByb2JlOjpGcmFtZSBtYWtlcyBpdCBlYXNpZXIgdG8gZG8gc29tZSBvZiB0aGUgcmVj
b3Zlcnkgd29yayBpbgorICAgICAgICAgICB0aGUgT1NSIGV4aXQgcmFtcC4KKworICAgICAgICA1
LiBDbG9uZWQgb3IgY29udmVydGVkIHNvbWUgZnVuY3Rpb25zIG5lZWRlZCBieSB0aGUgT1NSIGV4
aXQgcmFtcC4gIFRoZSBvcmlnaW5hbAorICAgICAgICAgICBKSVQgdmVyc2lvbnMgb2YgdGhlc2Ug
ZnVuY3Rpb25zIGFyZSBzdGlsbCBsZWZ0IGluIHBsYWNlIGJlY2F1c2UgdGhleSBhcmUgc3RpbGwK
KyAgICAgICAgICAgbmVlZGVkIGZvciBGVEwgT1NSIGV4aXQuICBBIEZJWE1FIGNvbW1lbnQgaGFz
IGJlZW4gYWRkZWQgdG8gcmVtb3ZlIHRoZW0gbGF0ZXIuCisgICAgICAgICAgIFRoZXNlIGZ1bmN0
aW9ucyBpbmNsdWRlOgorCisgICAgICAgICAgIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAn
cyBoYW5kbGVFeGl0Q291bnRzKCkgPT0+CisgICAgICAgICAgICAgICBDb2RlQmxvY2s6OnVwZGF0
ZU9TUkV4aXRDb3VudGVyQW5kQ2hlY2tJZk5lZWRUb1Jlb3B0aW1pemUoKQorICAgICAgICAgICBE
RkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwJ3MgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcygpID09
PgorICAgICAgICAgICAgICAgREZHT1NSRXhpdC5jcHAncyByZWlmeUlubGluZWRDYWxsRnJhbWVz
KCkKKyAgICAgICAgICAgREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCdzIGFkanVzdEFuZEp1
bXBUb1RhcmdldCgpID09PgorICAgICAgICAgICAgICAgREZHT1NSRXhpdC5jcHAncyBhZGp1c3RB
bmRKdW1wVG9UYXJnZXQoKQorCisgICAgICAgICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGU6OmVtaXRSZXBvcnRWYWx1ZSgpID09PgorICAgICAgICAgICAgICAgTWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZTo6cmVwb3J0VmFsdWUoKQorCisgICAgICAgICAgIERGR09wZXJhdGlvbnMu
Y3BwJ3Mgb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdCgpID09PgorICAg
ICAgICAgICAgICAgREZHT1NSRXhpdC5jcHAncyBjcmVhdGVEaXJlY3RBcmd1bWVudHNEdXJpbmdF
eGl0KCkKKyAgICAgICAgICAgREZHT3BlcmF0aW9ucy5jcHAncyBvcGVyYXRpb25DcmVhdGVDbG9u
ZWRBcmd1bWVudHNEdXJpbmdFeGl0KCkgPT0+CisgICAgICAgICAgICAgICBERkdPU1JFeGl0LmNw
cCdzIGNyZWF0ZUNsb25lZEFyZ3VtZW50c0R1cmluZ0V4aXQoKQorCisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpzdGRGdW5jdGlvbkNhbGxiYWNrKToK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6UHJpbnRlcjo6cHJpbnRDYWxsYmFjayk6CisgICAgICAgICogYXNzZW1ibGVyL1Byb2Jl
Q29udGV4dC5oOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q1BVU3RhdGU6OmdwciBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlByb2JlOjpDUFVTdGF0ZTo6c3ByIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
UHJvYmU6OkNvbnRleHQ6OkNvbnRleHQpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q29udGV4dDo6
YXJnKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6Omdwcik6CisgICAgICAgIChKU0M6
OlByb2JlOjpDb250ZXh0OjpzcHIpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q29udGV4dDo6ZnBy
KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6Omdwck5hbWUpOgorICAgICAgICAoSlND
OjpQcm9iZTo6Q29udGV4dDo6c3ByTmFtZSk6CisgICAgICAgIChKU0M6OlByb2JlOjpDb250ZXh0
OjpmcHJOYW1lKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6OmdwciBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlByb2JlOjpDb250ZXh0OjpzcHIgY29uc3QpOgorICAgICAgICAoSlNDOjpQ
cm9iZTo6Q29udGV4dDo6ZnByIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6
OnBjKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6OmZwKToKKyAgICAgICAgKEpTQzo6
UHJvYmU6OkNvbnRleHQ6OnNwKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogYXNzZW1ibGVyL1Byb2JlRnJhbWUuaDogQWRkZWQuCisgICAgICAgIChK
U0M6OlByb2JlOjpGcmFtZTo6RnJhbWUpOgorICAgICAgICAoSlNDOjpQcm9iZTo6RnJhbWU6Omdl
dEFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkZyYW1lOjpnZXRPcGVyYW5kKToKKyAg
ICAgICAgKEpTQzo6UHJvYmU6OkZyYW1lOjpnZXQpOgorICAgICAgICAoSlNDOjpQcm9iZTo6RnJh
bWU6OnNldEFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkZyYW1lOjpzZXRPcGVyYW5k
KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkZyYW1lOjpzZXQpOgorICAgICAgICAqIGFzc2VtYmxl
ci9Qcm9iZVN0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvYmU6OlBhZ2U6OlBhZ2UpOgorICAg
ICAgICAqIGFzc2VtYmxlci9Qcm9iZVN0YWNrLmg6CisgICAgICAgIChKU0M6OlByb2JlOjpQYWdl
OjpnZXQpOgorICAgICAgICAoSlNDOjpQcm9iZTo6UGFnZTo6c2V0KToKKyAgICAgICAgKEpTQzo6
UHJvYmU6OlBhZ2U6OnBoeXNpY2FsQWRkcmVzc0Zvcik6CisgICAgICAgIChKU0M6OlByb2JlOjpT
dGFjazo6bG93V2F0ZXJtYXJrKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OlN0YWNrOjpnZXQpOgor
ICAgICAgICAoSlNDOjpQcm9iZTo6U3RhY2s6OnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQXJp
dGhQcm9maWxlLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9Bcml0aFByb2ZpbGUuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxl
OjpvYnNlcnZlQXJyYXlNb2RlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVwZGF0ZU9TUkV4aXRDb3VudGVyQW5kQ2hlY2tJZk5l
ZWRUb1Jlb3B0aW1pemUpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmFkZHJlc3NPZk9TUkV4aXRDb3VudGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAqIGJ5
dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0aW9uQ291bnRl
cjo6aGFzQ3Jvc3NlZFRocmVzaG9sZCBjb25zdCk6CisgICAgICAgIChKU0M6OkV4ZWN1dGlvbkNv
dW50ZXI6OnNldE5ld1RocmVzaG9sZEZvck9TUkV4aXQpOgorICAgICAgICAqIGJ5dGVjb2RlL01l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpNZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlOjpyZXBvcnRWYWx1ZSk6CisgICAgICAgICogYnl0ZWNvZGUvTWV0
aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oOgorICAgICAgICAqIGRmZy9ERkdEcml2ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OmNvbXBpbGVJbXBsKToKKyAgICAgICAgKiBkZmcvREZHSklU
Q29kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29kZTo6ZmluZFBDKTogRGVsZXRlZC4K
KyAgICAgICAgKiBkZmcvREZHSklUQ29kZS5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmtPU1JFeGl0cyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdP
U1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpqc1ZhbHVlRm9yKToKKyAgICAgICAgKEpT
Qzo6REZHOjpyZXN0b3JlQ2FsbGVlU2F2ZXNGb3IpOgorICAgICAgICAoSlNDOjpERkc6OnNhdmVD
YWxsZWVTYXZlc0Zvcik6CisgICAgICAgIChKU0M6OkRGRzo6cmVzdG9yZUNhbGxlZVNhdmVzRnJv
bVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKToKKyAgICAgICAgKEpTQzo6REZHOjpjb3B5
Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKToKKyAgICAgICAgKEpT
Qzo6REZHOjpzYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IpOgorICAgICAgICAoSlNDOjpERkc6OmNy
ZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4aXQpOgorICAgICAgICAoSlNDOjpERkc6OmNyZWF0
ZUNsb25lZEFyZ3VtZW50c0R1cmluZ0V4aXQpOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6
Ok9TUkV4aXQpOgorICAgICAgICAoSlNDOjpERkc6OmVtaXRSZXN0b3JlQXJndW1lbnRzKToKKyAg
ICAgICAgKEpTQzo6REZHOjpPU1JFeGl0OjpleGVjdXRlT1NSRXhpdCk6CisgICAgICAgIChKU0M6
OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyk6CisgICAgICAgIChKU0M6OkRGRzo6YWRqdXN0
QW5kSnVtcFRvVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpwcmludE9TUkV4aXQpOgorICAg
ICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OnNldFBhdGNoYWJsZUNvZGVPZmZzZXQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmdldFBhdGNoYWJsZUNvZGVPZmZzZXRBc0p1
bXAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvZGVMb2Nh
dGlvbkZvclJlcGF0Y2ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4
aXQ6OmNvcnJlY3RKdW1wKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Ojpl
bWl0UmVzdG9yZUFyZ3VtZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhp
dDo6Y29tcGlsZU9TUkV4aXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6
OmNvbXBpbGVFeGl0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0OjpkZWJ1
Z09wZXJhdGlvblByaW50U3BlY3VsYXRpb25GYWlsdXJlKTogRGVsZXRlZC4KKyAgICAgICAgKiBk
ZmcvREZHT1NSRXhpdC5oOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRTdGF0ZTo6T1NSRXhp
dFN0YXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Ojpjb25zaWRlckFkZGluZ0FzRnJl
cXVlbnRFeGl0U2l0ZSk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5j
cHA6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oOgorICAgICAgICAq
IGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgor
ICAgICAgICAqIGRmZy9ERkdUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om9zckV4aXRU
aHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkRGRzo6b3NyRXhpdEdlbmVyYXRpb25UaHVu
a0dlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR1RodW5rcy5oOgorICAgICAg
ICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBl
cnM6OmRlYnVnQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5o
OgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3Bl
cmF0aW9ucy5oOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5oOgorICAgICAg
ICAoSlNDOjpQcm9maWxlcjo6T1NSRXhpdDo6aW5jQ291bnQpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTctMDktMDYgIFNhYW0gQmFyYXRpICA8c2JhcmF0
aUBhcHBsZS5jb20+CiAKICAgICAgICAgQWlyIHNob3VsZCBoYXZlIGEgVmVjdG9yIG9mIHByb2xv
Z3VlIGdlbmVyYXRvcnMgaW5zdGVhZCBvZiBhIEhhc2hNYXAgcmVwcmVzZW50aW5nIGFuIG9wdGlv
bmFsIHByb2xvZ3VlIGdlbmVyYXRvcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDIyMTY4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQ0LDYgKzI0
NDQsNyBAQAogCQlGRTEwQUFFQzFGNDRENTQ1MDA5REVEQzUgLyogUHJvYmVTdGFjay5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEwQUFFOTFGNDRE
NTEwMDA5REVEQzUgLyogUHJvYmVTdGFjay5jcHAgKi87IH07CiAJCUZFMTBBQUVFMUY0NEQ5NTQw
MDlERURDNSAvKiBQcm9iZUNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFMTBBQUVEMUY0NEQ5NDYwMDlERURDNSAvKiBQcm9iZUNvbnRleHQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTEw
QUFGNDFGNDY4Mzk2MDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTBBQUYzMUY0NjgyNkQwMDlERURDNSAv
KiBQcm9iZUNvbnRleHQuY3BwICovOyB9OworCQlGRTEwQUFGRjFGNEUzOEU1MDA5REVEQzUgLyog
UHJvYmVGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkUxMEFBRkUxRjRFMzhEQTAwOURFREM1IC8qIFByb2JlRnJhbWUuaCAqLzsgfTsKIAkJRkUx
MjIwMjcxQkU3RjU4QzAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxMjIwMjYxQkU3RjU2NDAwMzlFNkYy
IC8qIEpJVEFkZEdlbmVyYXRvci5oICovOyB9OwogCQlGRTEyMjAyODFCRTdGNTkxMDAzOUU2RjIg
LyogSklUQWRkR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFMTIyMDI1MUJFN0Y1NjQwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3Iu
Y3BwICovOyB9OwogCQlGRTE4N0EwMTFCRkJFNTVFMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9y
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTg3
OUZGMUJGQkM3M0MwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuY3BwICovOyB9OwpAQCAtNTEz
OCw2ICs1MTM5LDcgQEAKIAkJRkUxMEFBRUExRjQ0RDUxMjAwOURFREM1IC8qIFByb2JlU3RhY2su
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvYmVTdGFjay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRTEwQUFFRDFGNDREOTQ2MDA5REVEQzUgLyogUHJvYmVD
b250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2JlQ29udGV4dC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTEwQUFGMzFGNDY4MjZEMDA5REVEQzUg
LyogUHJvYmVDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFByb2JlQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMTBBQUZF
MUY0RTM4REEwMDlERURDNSAvKiBQcm9iZUZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFByb2JlRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUx
MjIwMjUxQkU3RjU2NDAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRBZGRHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRTEyMjAyNjFCRTdGNTY0MDAzOUU2RjIgLyogSklUQWRkR2Vu
ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVEFkZEdlbmVyYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTE4NzlGRjFCRkJDNzNDMDAzOEJC
Q0EgLyogSklUTXVsR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpJVE11bEdlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01MjA3LDYgKzUyMDksNyBAQAogCQlGRTgwQzE5NjFENzc1QjI3MDA4NTEwQzAgLyogQ2F0Y2hT
Y29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYXRjaFNjb3BlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODBDMTk4MUQ3NzVGQjQwMDg1MTBDMCAvKiBD
YXRjaFNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhdGNo
U2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTgwQzE5QTFENzc2OEZE
MDA4NTEwQzAgLyogRXhjZXB0aW9uRXZlbnRMb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBFeGNlcHRpb25FdmVudExvY2F0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4NEVFNzkxRjU2MzUyRDAwNTFCOEYxIC8qIENvZGVCbG9j
a0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZUJsb2NrSW5s
aW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTkwQkIzQTFCN0NGNjRFMDA2
QjNGMDMgLyogVk1JbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZN
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTk4QjVCNjFCQjlBRTEx
MDA3M0U3QTYgLyogSklUU3ViR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpJVFN1YkdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
RTk5QjI0NzFDMjRCNkQzMDBDODIxNTkgLyogSklUTmVnR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVE5lZ0dlbmVyYXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NzIyLDYgKzc3MjUsNyBAQAogCQkJCUZFNjNERDUzMUVB
OUI2MEUwMDEwM0E2OSAvKiBQcmludGVyLmggKi8sCiAJCQkJRkUxMEFBRjMxRjQ2ODI2RDAwOURF
REM1IC8qIFByb2JlQ29udGV4dC5jcHAgKi8sCiAJCQkJRkUxMEFBRUQxRjQ0RDk0NjAwOURFREM1
IC8qIFByb2JlQ29udGV4dC5oICovLAorCQkJCUZFMTBBQUZFMUY0RTM4REEwMDlERURDNSAvKiBQ
cm9iZUZyYW1lLmggKi8sCiAJCQkJRkUxMEFBRTkxRjQ0RDUxMDAwOURFREM1IC8qIFByb2JlU3Rh
Y2suY3BwICovLAogCQkJCUZFMTBBQUVBMUY0NEQ1MTIwMDlERURDNSAvKiBQcm9iZVN0YWNrLmgg
Ki8sCiAJCQkJRkU1MzNDQTAxRjIxN0MzMTAwMTZBMUZFIC8qIHRlc3RtYXNtLmNwcCAqLywKQEAg
LTc3NzgsNiArNzc4Miw3IEBACiAJCQkJOTY5QTA3OTEwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVC
bG9jay5oICovLAogCQkJCTBGOEY5NDNEMTY2NzYzMkQwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNo
LmNwcCAqLywKIAkJCQkwRjhGOTQzRTE2Njc2MzJEMDBENjE5NzEgLyogQ29kZUJsb2NrSGFzaC5o
ICovLAorCQkJCUZFODRFRTc5MUY1NjM1MkQwMDUxQjhGMSAvKiBDb2RlQmxvY2tJbmxpbmVzLmgg
Ki8sCiAJCQkJMEZDOTdGMkYxODIwMjBENzAwMkM5QjI2IC8qIENvZGVCbG9ja0pldHRpc29uaW5n
V2F0Y2hwb2ludC5jcHAgKi8sCiAJCQkJMEZDOTdGMzAxODIwMjBENzAwMkM5QjI2IC8qIENvZGVC
bG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5oICovLAogCQkJCTBGOTZFQkIxMTY2NzZFRjQwMDhC
QURFMyAvKiBDb2RlQmxvY2tXaXRoSklUVHlwZS5oICovLApAQCAtOTY4OSw2ICs5Njk0LDcgQEAK
IAkJCQlBRDJGQ0MxRDFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5
cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDQ5MzdDODFEREQwQUFFMDA3N0M4MDcgLyog
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUFEMkZDQzJEMURC
ODM4RkQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRkUxMEFBRkYxRjRFMzhFNTAwOURFREM1IC8qIFByb2JlRnJhbWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUFEMkZDQkY5MURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJv
ckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0MxRTFEQjU5Q0IyMDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUFEMkZDQkZCMURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMjIxNjg3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgY29uc3QgZG91YmxlIE1hY3JvQXNzZW1i
bGVyOjp0d29Ub1RoZTMyIAogI2lmIEVOQUJMRShNQVNNX1BST0JFKQogc3RhdGljIHZvaWQgc3Rk
RnVuY3Rpb25DYWxsYmFjayhQcm9iZTo6Q29udGV4dCYgY29udGV4dCkKIHsKLSAgICBhdXRvIGZ1
bmMgPSBzdGF0aWNfY2FzdDxjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUHJvYmU6OkNvbnRleHQm
KT4qPihjb250ZXh0LmFyZyk7CisgICAgYXV0byBmdW5jID0gY29udGV4dC5hcmc8Y29uc3Qgc3Rk
OjpmdW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+Kj4oKTsKICAgICAoKmZ1bmMpKGNvbnRl
eHQpOwogfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclByaW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcAkocmV2aXNpb24gMjIxNjg3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclByaW50ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBwcmludE1lbW9yeShQ
cmludFN0cmVhbSYgb3V0LCBDb250ZQogdm9pZCBwcmludENhbGxiYWNrKFByb2JlOjpDb250ZXh0
JiBwcm9iZUNvbnRleHQpCiB7CiAgICAgYXV0byYgb3V0ID0gV1RGOjpkYXRhRmlsZSgpOwotICAg
IFByaW50UmVjb3JkTGlzdCYgbGlzdCA9ICpyZWludGVycHJldF9jYXN0PFByaW50UmVjb3JkTGlz
dCo+KHByb2JlQ29udGV4dC5hcmcpOworICAgIFByaW50UmVjb3JkTGlzdCYgbGlzdCA9ICpwcm9i
ZUNvbnRleHQuYXJnPFByaW50UmVjb3JkTGlzdCo+KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsaXN0LnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGF1dG8mIHJlY29yZCA9IGxpc3RbaV07
CiAgICAgICAgIENvbnRleHQgY29udGV4dChwcm9iZUNvbnRleHQsIHJlY29yZC5kYXRhKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVDb250ZXh0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUNvbnRleHQuaAko
cmV2aXNpb24gMjIxNjg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9i
ZUNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTQgKzQ1LDggQEAgc3RydWN0IENQVVN0
YXRlIHsKICAgICBpbmxpbmUgdWludHB0cl90JiBzcHIoU1BSZWdpc3RlcklEKTsKICAgICBpbmxp
bmUgZG91YmxlJiBmcHIoRlBSZWdpc3RlcklEKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlw
ZSogPSBudWxscHRyPgotICAgIFQgZ3ByKFJlZ2lzdGVySUQpIGNvbnN0OwotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxUPjo6
dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+Ci0gICAgVCBncHIoUmVnaXN0ZXJJRCkgY29uc3Q7Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19p
bnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+Ci0gICAgVCBzcHIoU1BSZWdpc3Rl
cklEKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRyPgotICAgIFQg
c3ByKFNQUmVnaXN0ZXJJRCkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBncHIo
UmVnaXN0ZXJJRCkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBzcHIoU1BSZWdp
c3RlcklEKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGZwcihGUFJlZ2lzdGVy
SUQpIGNvbnN0OwogCiAgICAgdm9pZComIHBjKCk7CkBAIC04NSwzMiArNzksMjQgQEAgaW5saW5l
IGRvdWJsZSYgQ1BVU3RhdGU6OmZwcihGUFJlZ2lzdGVySQogICAgIHJldHVybiBmcHJzW2lkXTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKj4KLVQgQ1BVU3RhdGU6OmdwcihSZWdpc3RlcklE
IGlkKSBjb25zdAotewotICAgIENQVVN0YXRlKiBjcHUgPSBjb25zdF9jYXN0PENQVVN0YXRlKj4o
dGhpcyk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGNwdS0+Z3ByKGlkKSk7Ci19Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRl
cjxUPjo6dmFsdWU+Ojp0eXBlKj4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CiBUIENQVVN0YXRlOjpn
cHIoUmVnaXN0ZXJJRCBpZCkgY29uc3QKIHsKICAgICBDUFVTdGF0ZSogY3B1ID0gY29uc3RfY2Fz
dDxDUFVTdGF0ZSo+KHRoaXMpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQ+KGNwdS0+
Z3ByKGlkKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlwZSo+Ci1UIENQVVN0YXRlOjpzcHIo
U1BSZWdpc3RlcklEIGlkKSBjb25zdAotewotICAgIENQVVN0YXRlKiBjcHUgPSBjb25zdF9jYXN0
PENQVVN0YXRlKj4odGhpcyk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGNwdS0+c3ByKGlk
KSk7CisgICAgYXV0byYgZnJvbSA9IGNwdS0+Z3ByKGlkKTsKKyAgICB0eXBlbmFtZSBzdGQ6OnJl
bW92ZV9jb25zdDxUPjo6dHlwZSB0byB7IH07CisgICAgc3RkOjptZW1jcHkoJnRvLCAmZnJvbSwg
c2l6ZW9mKHRvKSk7IC8vIFVzZSBzdGQ6Om1lbWNweSB0byBhdm9pZCBzdHJpY3QgYWxpYXNpbmcg
aXNzdWVzLgorICAgIHJldHVybiB0bzsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGUqPgordGVt
cGxhdGU8dHlwZW5hbWUgVD4KIFQgQ1BVU3RhdGU6OnNwcihTUFJlZ2lzdGVySUQgaWQpIGNvbnN0
CiB7CiAgICAgQ1BVU3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPihjcHUtPnNwcihpZCkpOworICAgIGF1dG8mIGZy
b20gPSBjcHUtPnNwcihpZCk7CisgICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD46OnR5
cGUgdG8geyB9OworICAgIHN0ZDo6bWVtY3B5KCZ0bywgJmZyb20sIHNpemVvZih0bykpOyAvLyBV
c2Ugc3RkOjptZW1jcHkgdG8gYXZvaWQgc3RyaWN0IGFsaWFzaW5nIGlzc3Vlcy4KKyAgICByZXR1
cm4gdG87CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0yMDUsMjUgKzE5MSwzMSBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgRlBSZWdpc3RlcklEID0gTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0
ZXJJRDsKIAogICAgIENvbnRleHQoU3RhdGUqIHN0YXRlKQotICAgICAgICA6IG1fc3RhdGUoc3Rh
dGUpCi0gICAgICAgICwgYXJnKHN0YXRlLT5hcmcpCi0gICAgICAgICwgY3B1KHN0YXRlLT5jcHUp
CisgICAgICAgIDogY3B1KHN0YXRlLT5jcHUpCisgICAgICAgICwgbV9zdGF0ZShzdGF0ZSkKICAg
ICB7IH0KIAotICAgIHVpbnRwdHJfdCYgZ3ByKFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIG1fc3Rh
dGUtPmNwdS5ncHIoaWQpOyB9Ci0gICAgdWludHB0cl90JiBzcHIoU1BSZWdpc3RlcklEIGlkKSB7
IHJldHVybiBtX3N0YXRlLT5jcHUuc3ByKGlkKTsgfQotICAgIGRvdWJsZSYgZnByKEZQUmVnaXN0
ZXJJRCBpZCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LmZwcihpZCk7IH0KLSAgICBjb25zdCBjaGFy
KiBncHJOYW1lKFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5ncHJOYW1lKGlk
KTsgfQotICAgIGNvbnN0IGNoYXIqIHNwck5hbWUoU1BSZWdpc3RlcklEIGlkKSB7IHJldHVybiBt
X3N0YXRlLT5jcHUuc3ByTmFtZShpZCk7IH0KLSAgICBjb25zdCBjaGFyKiBmcHJOYW1lKEZQUmVn
aXN0ZXJJRCBpZCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LmZwck5hbWUoaWQpOyB9Ci0KLSAgICB2
b2lkKiYgcGMoKSB7IHJldHVybiBtX3N0YXRlLT5jcHUucGMoKTsgfQotICAgIHZvaWQqJiBmcCgp
IHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5mcCgpOyB9Ci0gICAgdm9pZComIHNwKCkgeyByZXR1cm4g
bV9zdGF0ZS0+Y3B1LnNwKCk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgcGMoKSB7
IHJldHVybiBtX3N0YXRlLT5jcHUucGM8VD4oKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IFQgZnAoKSB7IHJldHVybiBtX3N0YXRlLT5jcHUuZnA8VD4oKTsgfQotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IFQgc3AoKSB7IHJldHVybiBtX3N0YXRlLT5jcHUuc3A8VD4oKTsgfQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgVCBhcmcoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0
PFQ+KG1fc3RhdGUtPmFyZyk7IH0KKworICAgIHVpbnRwdHJfdCYgZ3ByKFJlZ2lzdGVySUQgaWQp
IHsgcmV0dXJuIGNwdS5ncHIoaWQpOyB9CisgICAgdWludHB0cl90JiBzcHIoU1BSZWdpc3RlcklE
IGlkKSB7IHJldHVybiBjcHUuc3ByKGlkKTsgfQorICAgIGRvdWJsZSYgZnByKEZQUmVnaXN0ZXJJ
RCBpZCkgeyByZXR1cm4gY3B1LmZwcihpZCk7IH0KKyAgICBjb25zdCBjaGFyKiBncHJOYW1lKFJl
Z2lzdGVySUQgaWQpIHsgcmV0dXJuIGNwdS5ncHJOYW1lKGlkKTsgfQorICAgIGNvbnN0IGNoYXIq
IHNwck5hbWUoU1BSZWdpc3RlcklEIGlkKSB7IHJldHVybiBjcHUuc3ByTmFtZShpZCk7IH0KKyAg
ICBjb25zdCBjaGFyKiBmcHJOYW1lKEZQUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gY3B1LmZwck5h
bWUoaWQpOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGdwcihSZWdpc3RlcklEIGlk
KSBjb25zdCB7IHJldHVybiBjcHUuZ3ByPFQ+KGlkKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IFQgc3ByKFNQUmVnaXN0ZXJJRCBpZCkgY29uc3QgeyByZXR1cm4gY3B1LnNwcjxUPihpZCk7
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGZwcihGUFJlZ2lzdGVySUQgaWQpIGNvbnN0
IHsgcmV0dXJuIGNwdS5mcHI8VD4oaWQpOyB9CisKKyAgICB2b2lkKiYgcGMoKSB7IHJldHVybiBj
cHUucGMoKTsgfQorICAgIHZvaWQqJiBmcCgpIHsgcmV0dXJuIGNwdS5mcCgpOyB9CisgICAgdm9p
ZComIHNwKCkgeyByZXR1cm4gY3B1LnNwKCk7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IFQgcGMoKSB7IHJldHVybiBjcHUucGM8VD4oKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IFQgZnAoKSB7IHJldHVybiBjcHUuZnA8VD4oKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IFQgc3AoKSB7IHJldHVybiBjcHUuc3A8VD4oKTsgfQogCiAgICAgU3RhY2smIHN0YWNrKCkKICAg
ICB7CkBAIC0yMzQsMTMgKzIyNiwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNXcml0ZXNUb0Zs
dXNoKCkgeyByZXR1cm4gbV9zdGFjay5oYXNXcml0ZXNUb0ZsdXNoKCk7IH0KICAgICBTdGFjayog
cmVsZWFzZVN0YWNrKCkgeyByZXR1cm4gbmV3IFN0YWNrKFdURk1vdmUobV9zdGFjaykpOyB9CiAK
LXByaXZhdGU6Ci0gICAgU3RhdGUqIG1fc3RhdGU7Ci1wdWJsaWM6Ci0gICAgdm9pZCogYXJnOwog
ICAgIENQVVN0YXRlJiBjcHU7CiAKIHByaXZhdGU6CisgICAgU3RhdGUqIG1fc3RhdGU7CiAgICAg
U3RhY2sgbV9zdGFjazsKIAogICAgIGZyaWVuZCBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBwcm9i
ZVN0YXRlRm9yQ29udGV4dChDb250ZXh0Jik7IC8vIE5vdCBmb3IgZ2VuZXJhbCB1c2UuIFRoaXMg
c2hvdWxkIG9ubHkgYmUgZm9yIHdyaXRpbmcgdGVzdHMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1Byb2JlRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlRnJhbWUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUFTTV9QUk9CRSkKKworI2luY2x1ZGUgIkNh
bGxGcmFtZS5oIgorI2luY2x1ZGUgIlByb2JlU3RhY2suaCIKKworbmFtZXNwYWNlIEpTQyB7Citu
YW1lc3BhY2UgUHJvYmUgeworCitjbGFzcyBGcmFtZSB7CitwdWJsaWM6CisgICAgRnJhbWUodm9p
ZCogZnJhbWVCYXNlLCBTdGFjayYgc3RhY2spCisgICAgICAgIDogbV9mcmFtZUJhc2UgeyByZWlu
dGVycHJldF9jYXN0PHVpbnQ4X3QqPihmcmFtZUJhc2UpIH0KKyAgICAgICAgLCBtX3N0YWNrIHsg
c3RhY2sgfQorICAgIHsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IEpTVmFsdWU+Cisg
ICAgVCBnZXRBcmd1bWVudChpbnQgYXJndW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0
PFQ+KENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoYXJndW1lbnQpICogc2l6ZW9mKFJlZ2lzdGVy
KSk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQgPSBKU1ZhbHVlPgorICAgIFQgZ2V0
T3BlcmFuZChpbnQgb3BlcmFuZCkKKyAgICB7CisgICAgICAgIHJldHVybiBnZXQ8VD4oc3RhdGlj
X2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5kKS5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3Rl
cikpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gSlNWYWx1ZT4KKyAgICBUIGdl
dE9wZXJhbmQoaW50IG9wZXJhbmQsIHB0cmRpZmZfdCBvZmZzZXQpCisgICAgeworICAgICAgICBy
ZXR1cm4gZ2V0PFQ+KHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4ob3BlcmFuZCkub2Zmc2V0
KCkgKiBzaXplb2YoUmVnaXN0ZXIpICsgb2Zmc2V0KTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCA9IEpTVmFsdWU+CisgICAgVCBnZXQocHRyZGlmZl90IG9mZnNldCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX3N0YWNrLmdldDxUPihtX2ZyYW1lQmFzZSArIG9mZnNldCk7CisgICAg
fQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNldEFyZ3VtZW50KGludCBh
cmd1bWVudCwgVCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBzZXQ8VD4oQ2FsbEZyYW1l
Ojphcmd1bWVudE9mZnNldChhcmd1bWVudCkgKiBzaXplb2YoUmVnaXN0ZXIpLCB2YWx1ZSk7Cisg
ICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBzZXRPcGVyYW5kKGludCBv
cGVyYW5kLCBUIHZhbHVlKQorICAgIHsKKyAgICAgICAgc2V0PFQ+KHN0YXRpY19jYXN0PFZpcnR1
YWxSZWdpc3Rlcj4ob3BlcmFuZCkub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpLCB2YWx1ZSk7
CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBzZXRPcGVyYW5kKGlu
dCBvcGVyYW5kLCBwdHJkaWZmX3Qgb2Zmc2V0LCBUIHZhbHVlKQorICAgIHsKKyAgICAgICAgc2V0
PFQ+KHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4ob3BlcmFuZCkub2Zmc2V0KCkgKiBzaXpl
b2YoUmVnaXN0ZXIpICsgb2Zmc2V0LCB2YWx1ZSk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CisgICAgdm9pZCBzZXQocHRyZGlmZl90IG9mZnNldCwgVCB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIG1fc3RhY2suc2V0PFQ+KG1fZnJhbWVCYXNlICsgb2Zmc2V0LCB2YWx1ZSk7CisgICAg
fQorCitwcml2YXRlOgorICAgIHVpbnQ4X3QqIG1fZnJhbWVCYXNlOworICAgIFN0YWNrJiBtX3N0
YWNrOworfTsKKworfSAvLyBuYW1lc3BhY2UgUHJvYmUKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1Byb2JlU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAJKHJldmlzaW9uIDIyMTY4NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFByb2JlIHsKIAogUGFnZTo6UGFnZSh2b2lkKiBi
YXNlQWRkcmVzcykKICAgICA6IG1fYmFzZUxvZ2ljYWxBZGRyZXNzKGJhc2VBZGRyZXNzKQorICAg
ICwgbV9waHlzaWNhbEFkZHJlc3NPZmZzZXQocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJm1f
YnVmZmVyKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNzKSkKIHsKICAg
ICBtZW1jcHkoJm1fYnVmZmVyLCBiYXNlQWRkcmVzcywgc19wYWdlU2l6ZSk7CiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suaAkocmV2aXNpb24g
MjIxNjg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU2LDE0ICs1NiwyOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KICAgICBUIGdldCh2b2lkKiBsb2dpY2FsQWRkcmVzcykKICAgICB7Ci0gICAg
ICAgIHJldHVybiAqcGh5c2ljYWxBZGRyZXNzRm9yPFQqPihsb2dpY2FsQWRkcmVzcyk7CisgICAg
ICAgIHZvaWQqIGZyb20gPSBwaHlzaWNhbEFkZHJlc3NGb3IobG9naWNhbEFkZHJlc3MpOworICAg
ICAgICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZSB0byB7IH07CisgICAgICAg
IHN0ZDo6bWVtY3B5KCZ0bywgZnJvbSwgc2l6ZW9mKHRvKSk7IC8vIFVzZSBzdGQ6Om1lbWNweSB0
byBhdm9pZCBzdHJpY3QgYWxpYXNpbmcgaXNzdWVzLgorICAgICAgICByZXR1cm4gdG87CisgICAg
fQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgVCBnZXQodm9pZCogbG9naWNhbEJhc2VB
ZGRyZXNzLCBwdHJkaWZmX3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldDxUPihy
ZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihsb2dpY2FsQmFzZUFkZHJlc3MpICsgb2Zmc2V0KTsK
ICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgc2V0KHZvaWQqIGxv
Z2ljYWxBZGRyZXNzLCBUIHZhbHVlKQogICAgIHsKICAgICAgICAgbV9kaXJ0eUJpdHMgfD0gZGly
dHlCaXRGb3IobG9naWNhbEFkZHJlc3MpOwotICAgICAgICAqcGh5c2ljYWxBZGRyZXNzRm9yPFQq
Pihsb2dpY2FsQWRkcmVzcykgPSB2YWx1ZTsKKyAgICAgICAgdm9pZCogdG8gPSBwaHlzaWNhbEFk
ZHJlc3NGb3IobG9naWNhbEFkZHJlc3MpOworICAgICAgICBzdGQ6Om1lbWNweSh0bywgJnZhbHVl
LCBzaXplb2YoVCkpOyAvLyBVc2Ugc3RkOjptZW1jcHkgdG8gYXZvaWQgc3RyaWN0IGFsaWFzaW5n
IGlzc3Vlcy4KKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNldCh2
b2lkKiBsb2dpY2FsQmFzZUFkZHJlc3MsIHB0cmRpZmZfdCBvZmZzZXQsIFQgdmFsdWUpCisgICAg
eworICAgICAgICBzZXQ8VD4ocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obG9naWNhbEJhc2VB
ZGRyZXNzKSArIG9mZnNldCwgdmFsdWUpOwogICAgIH0KIAogICAgIGJvb2wgaGFzV3JpdGVzVG9G
bHVzaCgpIGNvbnN0IHsgcmV0dXJuICEhbV9kaXJ0eUJpdHM7IH0KQEAgLTgwLDE4ICs5NCwxNiBA
QCBwcml2YXRlOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSA8PCAo
b2Zmc2V0ID4+IHNfY2h1bmtTaXplU2hpZnQpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVy
PFQ+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgVCBwaHlzaWNhbEFkZHJlc3NGb3Iodm9pZCogbG9naWNh
bEFkZHJlc3MpCisgICAgdm9pZCogcGh5c2ljYWxBZGRyZXNzRm9yKHZvaWQqIGxvZ2ljYWxBZGRy
ZXNzKQogICAgIHsKLSAgICAgICAgdWludHB0cl90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90Pihsb2dpY2FsQWRkcmVzcykgJiBzX3BhZ2VNYXNrOwotICAgICAgICB2b2lkKiBw
aHlzaWNhbEFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmbV9idWZmZXIpICsg
b2Zmc2V0OwotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPihwaHlzaWNhbEFkZHJl
c3MpOworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obG9naWNhbEFk
ZHJlc3MpICsgbV9waHlzaWNhbEFkZHJlc3NPZmZzZXQ7CiAgICAgfQogCiAgICAgdm9pZCBmbHVz
aFdyaXRlcygpOwogCiAgICAgdm9pZCogbV9iYXNlTG9naWNhbEFkZHJlc3MgeyBudWxscHRyIH07
CiAgICAgdWludHB0cl90IG1fZGlydHlCaXRzIHsgMCB9OworICAgIHB0cmRpZmZfdCBtX3BoeXNp
Y2FsQWRkcmVzc09mZnNldDsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNfcGFnZVNp
emUgPSAxMDI0OwogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IHNfcGFnZU1hc2sgPSBz
X3BhZ2VTaXplIC0gMTsKQEAgLTEyMCw0MCArMTMyLDM5IEBAIHB1YmxpYzoKICAgICB7IH0KICAg
ICBTdGFjayhTdGFjayYmIG90aGVyKTsKIAotICAgIHZvaWQqIGxvd1dhdGVybWFyaygpIHsgcmV0
dXJuIG1fbG93V2F0ZXJtYXJrOyB9CisgICAgdm9pZCogbG93V2F0ZXJtYXJrKCkKKyAgICB7Cisg
ICAgICAgIC8vIFdlIHVzZSB0aGUgY2h1bmtBZGRyZXNzIGZvciB0aGUgbG93IHdhdGVybWFyayBi
ZWNhdXNlIHdlJ2xsIGJlIGRvaW5nIHdyaXRlIGJhY2tzCisgICAgICAgIC8vIHRvIHRoZSBzdGFj
ayBpbiBpbmNyZW1lbnRzIG9mIGNodW5rcy4gSGVuY2UsIHdlJ2xsIHRyZWF0IHRoZSBsb3dlc3Qg
YWRkcmVzcyBvZgorICAgICAgICAvLyB0aGUgY2h1bmsgYXMgdGhlIGxvdyB3YXRlcm1hcmsgb2Yg
YW55IGdpdmVuIHNldCBhZGRyZXNzLgorICAgICAgICByZXR1cm4gUGFnZTo6Y2h1bmtBZGRyZXNz
Rm9yKG1fbG93V2F0ZXJtYXJrKTsKKyAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
ICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX3NhbWU8ZG91YmxlLCB0eXBlbmFt
ZSBzdGQ6OnJlbW92ZV9jdjxUPjo6dHlwZT46OnZhbHVlLCBUPjo6dHlwZSBnZXQodm9pZCogYWRk
cmVzcykKKyAgICBUIGdldCh2b2lkKiBhZGRyZXNzKQogICAgIHsKICAgICAgICAgUGFnZSogcGFn
ZSA9IHBhZ2VGb3IoYWRkcmVzcyk7CiAgICAgICAgIHJldHVybiBwYWdlLT5nZXQ8VD4oYWRkcmVz
cyk7CiAgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgVCBnZXQodm9pZCogbG9n
aWNhbEJhc2VBZGRyZXNzLCBwdHJkaWZmX3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGdldDxUPihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihsb2dpY2FsQmFzZUFkZHJlc3MpICsg
b2Zmc2V0KTsKKyAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX3NhbWU8ZG91YmxlLCB0eXBlbmFtZSBzdGQ6
OnJlbW92ZV9jdjxUPjo6dHlwZT46OnZhbHVlPjo6dHlwZT4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgogICAgIHZvaWQgc2V0KHZvaWQqIGFkZHJlc3MsIFQgdmFsdWUpCiAgICAgewogICAgICAg
ICBQYWdlKiBwYWdlID0gcGFnZUZvcihhZGRyZXNzKTsKICAgICAgICAgcGFnZS0+c2V0PFQ+KGFk
ZHJlc3MsIHZhbHVlKTsKIAotICAgICAgICAvLyBXZSB1c2UgdGhlIGNodW5rQWRkcmVzcyBmb3Ig
dGhlIGxvdyB3YXRlcm1hcmsgYmVjYXVzZSB3ZSdsbCBiZSBkb2luZyB3cml0ZSBiYWNrcwotICAg
ICAgICAvLyB0byB0aGUgc3RhY2sgaW4gaW5jcmVtZW50cyBvZiBjaHVua3MuIEhlbmNlLCB3ZSds
bCB0cmVhdCB0aGUgbG93ZXN0IGFkZHJlc3Mgb2YKLSAgICAgICAgLy8gdGhlIGNodW5rIGFzIHRo
ZSBsb3cgd2F0ZXJtYXJrIG9mIGFueSBnaXZlbiBzZXQgYWRkcmVzcy4KLSAgICAgICAgdm9pZCog
Y2h1bmtBZGRyZXNzID0gUGFnZTo6Y2h1bmtBZGRyZXNzRm9yKGFkZHJlc3MpOwotICAgICAgICBp
ZiAoY2h1bmtBZGRyZXNzIDwgbV9sb3dXYXRlcm1hcmspCi0gICAgICAgICAgICBtX2xvd1dhdGVy
bWFyayA9IGNodW5rQWRkcmVzczsKKyAgICAgICAgaWYgKGFkZHJlc3MgPCBtX2xvd1dhdGVybWFy
aykKKyAgICAgICAgICAgIG1fbG93V2F0ZXJtYXJrID0gYWRkcmVzczsKICAgICB9Ci0KICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
c2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+
Ojp0eXBlIGdldCh2b2lkKiBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgUGFnZSogcGFnZSA9IHBh
Z2VGb3IoYWRkcmVzcyk7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8ZG91YmxlPihwYWdl
LT5nZXQ8dWludDY0X3Q+KGFkZHJlc3MpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxkb3Vi
bGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWU+Ojp0eXBlPgotICAg
IHZvaWQgc2V0KHZvaWQqIGFkZHJlc3MsIGRvdWJsZSB2YWx1ZSkKKyAgICB2b2lkIHNldCh2b2lk
KiBsb2dpY2FsQmFzZUFkZHJlc3MsIHB0cmRpZmZfdCBvZmZzZXQsIFQgdmFsdWUpCiAgICAgewot
ICAgICAgICBzZXQ8dWludDY0X3Q+KGFkZHJlc3MsIGJpdHdpc2VfY2FzdDx1aW50NjRfdD4odmFs
dWUpKTsKKyAgICAgICAgc2V0PFQ+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGxvZ2ljYWxC
YXNlQWRkcmVzcykgKyBvZmZzZXQsIHZhbHVlKTsKICAgICB9CiAKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBQYWdlKiBlbnN1cmVQYWdlRm9yKHZvaWQqIGFkZHJlc3MpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAJKHJldmlzaW9uIDIy
MTY4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMyLDggQEAKIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgRU5B
QkxFKEpJVCkKKy8vIEZJWE1FOiBUaGlzIGlzIGJlaW5nIHN1cHBsYW50ZWQgYnkgb2JzZXJ2ZVJl
c3VsdCgpLiBSZW1vdmUgdGhpcyBvbmUKKy8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzUxNDUgaGFzIGJlZW4gZml4ZWQuCiB2b2lkIEFyaXRoUHJvZmlsZTo6ZW1p
dE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MsIFRhZ1Jl
Z2lzdGVyc01vZGUgbW9kZSkKIHsKICAgICBpZiAoIXNob3VsZEVtaXRTZXREb3VibGUoKSAmJiAh
c2hvdWxkRW1pdFNldE5vbk51bWJlcigpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FyaXRoUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaAkocmV2aXNpb24gMjIxNjg3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIxMSw2
ICsyMTEsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEpJVCkgICAgCiAgICAgLy8gU2V0cyAoSW50
MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0Rv
dWJsZSkgaWYgaXQgc2VlcyBhCiAgICAgLy8gZG91YmxlLiBTZXRzIE5vbk51bWJlciBpZiBpdCBz
ZWVzIGEgbm9uLW51bWJlci4KKyAgICAvLyBGSVhNRTogVGhpcyBpcyBiZWluZyBzdXBwbGFudGVk
IGJ5IG9ic2VydmVSZXN1bHQoKS4gUmVtb3ZlIHRoaXMgb25lCisgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NSBoYXMgYmVlbiBmaXhlZC4KICAgICB2
b2lkIGVtaXRPYnNlcnZlUmVzdWx0KENDYWxsSGVscGVycyYsIEpTVmFsdWVSZWdzLCBUYWdSZWdp
c3RlcnNNb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycyk7CiAgICAgCiAgICAgLy8gU2V0cyAoSW50MzJP
dmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJs
ZSkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmls
ZS5oCShyZXZpc2lvbiAyMjE2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QXJyYXlQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjE4LDYgKzIxOCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNM
b2NrZXImLCBDb2RlQmxvY2sqKTsKICAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGxhc3RTZWVu
U3RydWN0dXJlKTsKICAgICAKKyAgICB2b2lkIG9ic2VydmVBcnJheU1vZGUoQXJyYXlNb2RlcyBt
b2RlKSB7IG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHw9IG1vZGU7IH0KICAgICBBcnJheU1vZGVzIG9i
c2VydmVkQXJyYXlNb2Rlcyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVy
biBtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJvb2wgbWF5SW50ZXJjZXB0SW5kZXhlZEFj
Y2Vzc2VzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5SW50
ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzOyB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjIxNjg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIzMTUsNiArMjMxNSw1NSBAQCBib29sIENvZGVCbG9jazo6Y2hlY2tJZk9wdGltaXphdGlvblRo
cmVzCiAgICAgcmV0dXJuIG1faml0RXhlY3V0ZUNvdW50ZXIuY2hlY2tJZlRocmVzaG9sZENyb3Nz
ZWRBbmRTZXQodGhpcyk7CiB9CiAKK2F1dG8gQ29kZUJsb2NrOjp1cGRhdGVPU1JFeGl0Q291bnRl
ckFuZENoZWNrSWZOZWVkVG9SZW9wdGltaXplKERGRzo6T1NSRXhpdFN0YXRlJiBleGl0U3RhdGUp
IC0+IE9wdGltaXplQWN0aW9uCit7CisgICAgREZHOjpPU1JFeGl0QmFzZSYgZXhpdCA9IGV4aXRT
dGF0ZS5leGl0OworICAgIGlmICghZXhpdEtpbmRNYXlKZXR0aXNvbihleGl0Lm1fa2luZCkpIHsK
KyAgICAgICAgLy8gRklYTUU6IFdlIG1heSB3YW50IHRvIG5vdGljZSB0aGF0IHdlJ3JlIGZyZXF1
ZW50bHkgZXhpdGluZworICAgICAgICAvLyBhdCBhbiBvcF9jYXRjaCB0aGF0IHdlIGRpZG4ndCBj
b21waWxlIGFuIGVudHJ5cG9pbnQgZm9yLCBhbmQKKyAgICAgICAgLy8gdGhlbiB0cmlnZ2VyIGEg
cmVvcHRpbWl6YXRpb24gb2YgdGhpcyBDb2RlQmxvY2s6CisgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU4NDIKKyAgICAgICAgcmV0dXJuIE9wdGlt
aXplQWN0aW9uOjpOb25lOworICAgIH0KKworICAgIGV4aXQubV9jb3VudCsrOworICAgIG1fb3Ny
RXhpdENvdW50ZXIrKzsKKworICAgIC8vIG1sYW0gT3BlcmF0aW5nIG9uIGJhc2VsaW5lQ29kZUJs
b2NrIG5vdy4KKworICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBleGl0U3RhdGUu
YmFzZWxpbmVDb2RlQmxvY2s7CisgICAgQVNTRVJUKGJhc2VsaW5lQ29kZUJsb2NrID09IGJhc2Vs
aW5lQWx0ZXJuYXRpdmUoKSk7CisgICAgaWYgKFVOTElLRUxZKGJhc2VsaW5lQ29kZUJsb2NrLT5q
aXRFeGVjdXRlQ291bnRlcigpLmhhc0Nyb3NzZWRUaHJlc2hvbGQoKSkpCisgICAgICAgIHJldHVy
biBPcHRpbWl6ZUFjdGlvbjo6UmVvcHRpbWl6ZU5vdzsKKworICAgIC8vIFdlIHdhbnQgdG8gZmln
dXJlIG91dCBpZiB0aGVyZSdzIGEgcG9zc2liaWxpdHkgdGhhdCB3ZSdyZSBpbiBhIGxvb3AuIEZv
ciB0aGUgb3V0ZXJtb3N0CisgICAgLy8gY29kZSBibG9jayBpbiB0aGUgaW5saW5lIHN0YWNrLCB3
ZSBoYW5kbGUgdGhpcyBhcHByb3ByaWF0ZWx5IGJ5IGhhdmluZyB0aGUgbG9vcCBPU1IgdHJpZ2dl
cgorICAgIC8vIGNoZWNrIHRoZSBleGl0IGNvdW50IG9mIHRoZSByZXBsYWNlbWVudCBvZiB0aGUg
Q29kZUJsb2NrIGZyb20gd2hpY2ggd2UgYXJlIE9TUmluZy4gVGhlCisgICAgLy8gcHJvYmxlbSBp
cyB0aGUgaW5saW5lZCBmdW5jdGlvbnMsIHdoaWNoIG1pZ2h0IGFsc28gaGF2ZSBsb29wcywgYnV0
IHdob3NlIGJhc2VsaW5lIHZlcnNpb25zCisgICAgLy8gZG9uJ3Qga25vdyB3aGVyZSB0byBsb29r
IGZvciB0aGUgZXhpdCBjb3VudC4gRmlndXJlIG91dCBpZiB0aG9zZSBsb29wcyBhcmUgc2V2ZXJl
IGVub3VnaAorICAgIC8vIHRoYXQgd2UgaGFkIHRyaWVkIHRvIE9TUiBlbnRlci4gSWYgc28sIHRo
ZW4gd2Ugc2hvdWxkIHVzZSB0aGUgbG9vcCByZW9wdGltaXphdGlvbiB0cmlnZ2VyLgorICAgIC8v
IE90aGVyd2lzZSwgd2Ugc2hvdWxkIHVzZSB0aGUgbm9ybWFsIHJlb3B0aW1pemF0aW9uIHRyaWdn
ZXIuCisKKyAgICBib29sIGRpZFRyeVRvRW50ZXJJbkxvb3AgPSBmYWxzZTsKKyAgICBmb3IgKElu
bGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZSA9IGlubGluZUNhbGxG
cmFtZS0+ZGlyZWN0Q2FsbGVyLmlubGluZUNhbGxGcmFtZSkgeworICAgICAgICBpZiAoaW5saW5l
Q2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPmRp
ZFRyeVRvRW50ZXJJbkxvb3AoKSkgeworICAgICAgICAgICAgZGlkVHJ5VG9FbnRlckluTG9vcCA9
IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHVpbnQz
Ml90IGV4aXRDb3VudFRocmVzaG9sZCA9IGRpZFRyeVRvRW50ZXJJbkxvb3AKKyAgICAgICAgPyBl
eGl0Q291bnRUaHJlc2hvbGRGb3JSZW9wdGltaXphdGlvbkZyb21Mb29wKCkKKyAgICAgICAgOiBl
eGl0Q291bnRUaHJlc2hvbGRGb3JSZW9wdGltaXphdGlvbigpOworCisgICAgaWYgKG1fb3NyRXhp
dENvdW50ZXIgPiBleGl0Q291bnRUaHJlc2hvbGQpCisgICAgICAgIHJldHVybiBPcHRpbWl6ZUFj
dGlvbjo6UmVvcHRpbWl6ZU5vdzsKKworICAgIC8vIFRvbyBmZXcgZmFpbHMuIEFkanVzdCB0aGUg
ZXhlY3V0aW9uIGNvdW50ZXIgc3VjaCB0aGF0IHRoZSB0YXJnZXQgaXMgdG8gb25seSBvcHRpbWl6
ZSBhZnRlciBhIHdoaWxlLgorICAgIGJhc2VsaW5lQ29kZUJsb2NrLT5tX2ppdEV4ZWN1dGVDb3Vu
dGVyLnNldE5ld1RocmVzaG9sZEZvck9TUkV4aXQoZXhpdFN0YXRlLmFjdGl2ZVRocmVzaG9sZCwg
ZXhpdFN0YXRlLm1lbW9yeVVzYWdlQWRqdXN0ZWRUaHJlc2hvbGQpOworICAgIHJldHVybiBPcHRp
bWl6ZUFjdGlvbjo6Tm9uZTsKK30KKwogdm9pZCBDb2RlQmxvY2s6Om9wdGltaXplTmV4dEludm9j
YXRpb24oKQogewogICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMjE2ODcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc3LDYgKzc3LDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCituYW1lc3BhY2UgREZH
IHsKK3N0cnVjdCBPU1JFeGl0U3RhdGU7Cit9IC8vIG5hbWVzcGFjZSBERkcKKwogY2xhc3MgQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOwogY2xhc3MgQ29kZUJsb2NrU2V0OwogY2xhc3MgRXhlY1N0
YXRlOwpAQCAtNzYyLDggKzc2NiwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvdW50T1NSRXhp
dCgpIHsgbV9vc3JFeGl0Q291bnRlcisrOyB9CiAKLSAgICB1aW50MzJfdCogYWRkcmVzc09mT1NS
RXhpdENvdW50ZXIoKSB7IHJldHVybiAmbV9vc3JFeGl0Q291bnRlcjsgfQorICAgIGVudW0gY2xh
c3MgT3B0aW1pemVBY3Rpb24geyBOb25lLCBSZW9wdGltaXplTm93IH07CisgICAgT3B0aW1pemVB
Y3Rpb24gdXBkYXRlT1NSRXhpdENvdW50ZXJBbmRDaGVja0lmTmVlZFRvUmVvcHRpbWl6ZShERkc6
Ok9TUkV4aXRTdGF0ZSYpOwogCisgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgZml4
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiAgICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZk9TUkV4aXRDb3VudGVyKCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKENvZGVCbG9jaywgbV9vc3JFeGl0Q291bnRlcik7IH0KIAogICAgIHVpbnQzMl90IGFk
anVzdGVkRXhpdENvdW50VGhyZXNob2xkKHVpbnQzMl90IGRlc2lyZWRUaHJlc2hvbGQpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5l
cy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2tJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiREZHT1NSRXhpdEJhc2UuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKKy8vIG1sYW0gTmVlZCB0byByZW1vdmUgdGhpcyBmaWxlIGlmIHdlIGVuZCB1
cCBub3QgbmVlZGluZyBpdC4KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmgJKHJldmlzaW9u
IDIyMTY4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRpb25Db3Vu
dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNiArNDEsNyBAQCBlbnVtIENvdW50aW5nVmFy
aWFudCB7CiBkb3VibGUgYXBwbHlNZW1vcnlVc2FnZUhldXJpc3RpY3MoaW50MzJfdCB2YWx1ZSwg
Q29kZUJsb2NrKik7CiBpbnQzMl90IGFwcGx5TWVtb3J5VXNhZ2VIZXVyaXN0aWNzQW5kQ29udmVy
dFRvSW50KGludDMyX3QgdmFsdWUsIENvZGVCbG9jayopOwogCisvLyBGSVhNRTogcmVtb3ZlIHRo
aXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTE0NS4KIGlubGluZSBpbnQzMl90IGZvcm1hdHRlZFRvdGFsRXhlY3V0aW9uQ291bnQoZmxvYXQg
dmFsdWUpCiB7CiAgICAgdW5pb24gewpAQCAtNTcsMTEgKzU4LDE5IEBAIHB1YmxpYzoKICAgICBF
eGVjdXRpb25Db3VudGVyKCk7CiAgICAgdm9pZCBmb3JjZVNsb3dQYXRoQ29uY3VycmVudGx5KCk7
IC8vIElmIHlvdSB1c2UgdGhpcywgY2hlY2tJZlRocmVzaG9sZENyb3NzZWRBbmRTZXQoKSBtYXkg
c3RpbGwgcmV0dXJuIGZhbHNlLgogICAgIGJvb2wgY2hlY2tJZlRocmVzaG9sZENyb3NzZWRBbmRT
ZXQoQ29kZUJsb2NrKik7CisgICAgYm9vbCBoYXNDcm9zc2VkVGhyZXNob2xkKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb3VudGVyID49IDA7IH0KICAgICB2b2lkIHNldE5ld1RocmVzaG9sZChpbnQzMl90
IHRocmVzaG9sZCwgQ29kZUJsb2NrKik7CiAgICAgdm9pZCBkZWZlckluZGVmaW5pdGVseSgpOwog
ICAgIGRvdWJsZSBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4obV90
b3RhbENvdW50KSArIG1fY291bnRlcjsgfQogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNv
bnN0OwogICAgIAorICAgIHZvaWQgc2V0TmV3VGhyZXNob2xkRm9yT1NSRXhpdCh1aW50MzJfdCBh
Y3RpdmVUaHJlc2hvbGQsIGRvdWJsZSBtZW1vcnlVc2FnZUFkanVzdGVkVGhyZXNob2xkKQorICAg
IHsKKyAgICAgICAgbV9hY3RpdmVUaHJlc2hvbGQgPSBhY3RpdmVUaHJlc2hvbGQ7CisgICAgICAg
IG1fY291bnRlciA9IHN0YXRpY19jYXN0PGludDMyX3Q+KC1tZW1vcnlVc2FnZUFkanVzdGVkVGhy
ZXNob2xkKTsKKyAgICAgICAgbV90b3RhbENvdW50ID0gbWVtb3J5VXNhZ2VBZGp1c3RlZFRocmVz
aG9sZDsKKyAgICB9CisKICAgICBzdGF0aWMgaW50MzJfdCBtYXhpbXVtRXhlY3V0aW9uQ291bnRz
QmV0d2VlbkNoZWNrcG9pbnRzKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAoY291bnRpbmdWYXJp
YW50KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCShyZXZpc2lvbiAyMjE2
ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsNiArNDYsOCBAQCBN
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIE1ldGhvZE9mR2V0CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAorLy8gRklYTUU6IFRoaXMgaXMgYmVpbmcgc3VwcGxhbnRlZCBieSByZXBvcnRWYWx1
ZSgpLiBSZW1vdmUgdGhpcyBvbmUKKy8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzUxNDUgaGFzIGJlZW4gZml4ZWQuCiB2b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3Mg
cmVncykgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fa2luZCkgewpAQCAtNzQsNiArNzYsMzQgQEAg
dm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjplbWl0UgogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3ZvaWQgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZTo6cmVwb3J0VmFsdWUoSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBzd2l0Y2ggKG1fa2luZCkgewor
ICAgIGNhc2UgTm9uZToKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBSZWFkeToKKyAgICAg
ICAgKnUucHJvZmlsZS0+c3BlY0ZhaWxCdWNrZXQoMCkgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUp
OworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIExhenlPcGVyYW5kOiB7CisgICAgICAgIExh
enlPcGVyYW5kVmFsdWVQcm9maWxlS2V5IGtleSh1LmxhenlPcGVyYW5kLmJ5dGVjb2RlT2Zmc2V0
LCBWaXJ0dWFsUmVnaXN0ZXIodS5sYXp5T3BlcmFuZC5vcGVyYW5kKSk7CisKKyAgICAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcih1LmxhenlPcGVyYW5kLmNvZGVCbG9jay0+bV9sb2NrKTsK
KyAgICAgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPQorICAgICAgICAgICAg
dS5sYXp5T3BlcmFuZC5jb2RlQmxvY2stPmxhenlPcGVyYW5kVmFsdWVQcm9maWxlcygpLmFkZChs
b2NrZXIsIGtleSk7CisgICAgICAgICpwcm9maWxlLT5zcGVjRmFpbEJ1Y2tldCgwKSA9IEpTVmFs
dWU6OmVuY29kZSh2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIEFy
aXRoUHJvZmlsZVJlYWR5OiB7CisgICAgICAgIHUuYXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0
KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0gfQorCisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFC
TEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaAkocmV2aXNpb24gMjIx
Njg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FW
YWx1ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03MCw5ICs3MCwxMiBAQCBwdWJsaWM6
CiAgICAgICAgIENvZGVCbG9jayosIGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5Jik7
CiAgICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fa2lu
ZCAhPSBOb25lOyB9Ci0gICAgCisKKyAgICAvLyBGSVhNRTogZW1pdFJlcG9ydFZhbHVlIGlzIGJl
aW5nIHN1cHBsYW50ZWQgYnkgcmVwb3J0VmFsdWUoKS4gUmVtb3ZlIHRoaXMgb25lCisgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NSBoYXMgYmVlbiBm
aXhlZC4KICAgICB2b2lkIGVtaXRSZXBvcnRWYWx1ZShDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVn
cykgY29uc3Q7Ci0gICAgCisgICAgdm9pZCByZXBvcnRWYWx1ZShKU1ZhbHVlKTsKKwogcHJpdmF0
ZToKICAgICBlbnVtIEtpbmQgewogICAgICAgICBOb25lLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkocmV2aXNpb24gMjIxNjg3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODks
NyArODksNyBAQCBzdGF0aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoCiAgICAgCiAg
ICAgLy8gTWFrZSBzdXJlIHRoYXQgYW55IHN0dWJzIHRoYXQgdGhlIERGRyBpcyBnb2luZyB0byB1
c2UgYXJlIGluaXRpYWxpemVkLiBXZSB3YW50IHRvCiAgICAgLy8gbWFrZSBzdXJlIHRoYXQgYWxs
IEpJVCBjb2RlIGdlbmVyYXRpb24gZG9lcyBmaW5hbGl6YXRpb24gb24gdGhlIG1haW4gdGhyZWFk
LgotICAgIHZtLmdldENUSVN0dWIob3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik7Cisg
ICAgdm0uZ2V0Q1RJU3R1Yihvc3JFeGl0VGh1bmtHZW5lcmF0b3IpOwogICAgIHZtLmdldENUSVN0
dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKTsKICAgICB2bS5nZXRD
VElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpOwogICAgIHZtLmdldENUSVN0dWIobGlua1Bv
bHltb3JwaGljQ2FsbFRodW5rR2VuZXJhdG9yKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb2RlLmNwcAkocmV2aXNpb24gMjIxNjg3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI1LDE4ICsyMjUs
NiBAQCB2b2lkIEpJVENvZGU6OnZhbGlkYXRlUmVmZXJlbmNlcyhjb25zdCBUCiAgICAgbWluaWZp
ZWRERkcudmFsaWRhdGVSZWZlcmVuY2VzKHRyYWNrZWRSZWZlcmVuY2VzKTsKIH0KIAotc3RkOjpv
cHRpb25hbDxDb2RlT3JpZ2luPiBKSVRDb2RlOjpmaW5kUEMoQ29kZUJsb2NrKiwgdm9pZCogcGMp
Ci17Ci0gICAgZm9yIChPU1JFeGl0JiBleGl0IDogb3NyRXhpdCkgewotICAgICAgICBpZiAoRXhl
Y3V0YWJsZU1lbW9yeUhhbmRsZSogaGFuZGxlID0gZXhpdC5tX2NvZGUuZXhlY3V0YWJsZU1lbW9y
eSgpKSB7Ci0gICAgICAgICAgICBpZiAoaGFuZGxlLT5zdGFydCgpIDw9IHBjICYmIHBjIDwgaGFu
ZGxlLT5lbmQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxDb2RlT3Jp
Z2luPihleGl0Lm1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlKTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KIHZvaWQgSklUQ29kZTo6ZmluYWxpemVP
U1JFbnRyeXBvaW50cygpCiB7CiAgICAgYXV0byBjb21wYXJhdG9yID0gW10gKGNvbnN0IGF1dG8m
IGEsIGNvbnN0IGF1dG8mIGIpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29kZS5oCShyZXZpc2lvbiAyMjE2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDggKzEyNiw2IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBwdHJkaWZmX3QgY29tbW9uRGF0YU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihKSVRDb2RlLCBjb21tb24pOyB9CiAKLSAgICBzdGQ6Om9wdGlvbmFsPENvZGVPcmln
aW4+IGZpbmRQQyhDb2RlQmxvY2sqLCB2b2lkKiBwYykgb3ZlcnJpZGU7Ci0gICAgCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBKSVRDb21waWxlcjsgLy8gQWxsb3cgSklUQ29tcGlsZXIgdG8g
Y2FsbCBzZXRDb2RlUmVmKCkuCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMjE2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsOCArODUs
OSBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rT1NSRXhpdHMoKQogICAgICAgICB9CiAgICAgfQog
ICAgIAorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0VGh1bmsgPSB2bSgpLT5nZXRD
VElTdHViKG9zckV4aXRUaHVua0dlbmVyYXRvcik7CisgICAgQ29kZUxvY2F0aW9uTGFiZWwgb3Ny
RXhpdFRodW5rTGFiZWwgPSBDb2RlTG9jYXRpb25MYWJlbChvc3JFeGl0VGh1bmsuY29kZSgpKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9qaXRDb2RlLT5vc3JFeGl0LnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIE9TUkV4aXQmIGV4aXQgPSBtX2ppdENvZGUtPm9zckV4aXRbaV07CiAg
ICAgICAgIE9TUkV4aXRDb21waWxhdGlvbkluZm8mIGluZm8gPSBtX2V4aXRDb21waWxhdGlvbklu
Zm9baV07CiAgICAgICAgIEp1bXBMaXN0JiBmYWlsdXJlSnVtcHMgPSBpbmZvLm1fZmFpbHVyZUp1
bXBzOwogICAgICAgICBpZiAoIWZhaWx1cmVKdW1wcy5lbXB0eSgpKQpAQCAtOTYsNyArOTcsMTAg
QEAgdm9pZCBKSVRDb21waWxlcjo6bGlua09TUkV4aXRzKCkKIAogICAgICAgICBqaXRBc3NlcnRI
YXNWYWxpZENhbGxGcmFtZSgpOwogICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihpKSwgJnZt
KCktPm9zckV4aXRJbmRleCk7Ci0gICAgICAgIGV4aXQuc2V0UGF0Y2hhYmxlQ29kZU9mZnNldChw
YXRjaGFibGVKdW1wKCkpOworICAgICAgICBKdW1wIHRhcmdldCA9IGp1bXAoKTsKKyAgICAgICAg
YWRkTGlua1Rhc2soW3RhcmdldCwgb3NyRXhpdFRodW5rTGFiZWxdIChMaW5rQnVmZmVyJiBsaW5r
QnVmZmVyKSB7CisgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsodGFyZ2V0LCBvc3JFeGl0VGh1
bmtMYWJlbCk7CisgICAgICAgIH0pOwogICAgIH0KIH0KIApAQCAtMzAzLDEzICszMDcsOCBAQCB2
b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAgICAgICAgICAgICBsaW5r
QnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbChyZWNvcmQuY2FsbCkpOwogICAgIH0KICAgICAKLSAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdFRodW5rID0gdm0oKS0+Z2V0Q1RJU3R1Yihv
c3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKTsKLSAgICBDb2RlTG9jYXRpb25MYWJlbCB0
YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbChvc3JFeGl0VGh1bmsuY29kZSgpKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9qaXRDb2RlLT5vc3JFeGl0LnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIE9TUkV4aXQmIGV4aXQgPSBtX2ppdENvZGUtPm9zckV4aXRbaV07CiAgICAgICAgIE9T
UkV4aXRDb21waWxhdGlvbkluZm8mIGluZm8gPSBtX2V4aXRDb21waWxhdGlvbkluZm9baV07Ci0g
ICAgICAgIGxpbmtCdWZmZXIubGluayhleGl0LmdldFBhdGNoYWJsZUNvZGVPZmZzZXRBc0p1bXAo
KSwgdGFyZ2V0KTsKLSAgICAgICAgZXhpdC5jb3JyZWN0SnVtcChsaW5rQnVmZmVyKTsKICAgICAg
ICAgaWYgKGluZm8ubV9yZXBsYWNlbWVudFNvdXJjZS5pc1NldCgpKSB7CiAgICAgICAgICAgICBt
X2ppdENvZGUtPmNvbW1vbi5qdW1wUmVwbGFjZW1lbnRzLmFwcGVuZChKdW1wUmVwbGFjZW1lbnQo
CiAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGluZm8ubV9yZXBsYWNlbWVu
dFNvdXJjZSksCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJ
KHJldmlzaW9uIDIyMTY4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNTcgKzI5LDI0NSBAQAogI2lmIEVOQUJMRShE
RkdfSklUKQogCiAjaW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzLmgiCisjaW5jbHVkZSAiQ2xvbmVk
QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdNYXlFeGl0
LmgiCi0jaW5jbHVkZSAiREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZH
T1NSRXhpdFByZXBhcmF0aW9uLmgiCiAjaW5jbHVkZSAiREZHT3BlcmF0aW9ucy5oIgogI2luY2x1
ZGUgIkRGR1NwZWN1bGF0aXZlSklULmgiCi0jaW5jbHVkZSAiRnJhbWVUcmFjZXJzLmgiCisjaW5j
bHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCisjaW5jbHVkZSAiSW5saW5lQ2FsbEZyYW1lLmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRl
ICJPcGVyYW5kc0lubGluZXMuaCIKKyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKKyNpbmNsdWRl
ICJQcm9iZUZyYW1lLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotT1NS
RXhpdDo6T1NSRXhpdChFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2Us
IE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgdmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJ
VCogaml0LCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCkKLSAg
ICA6IE9TUkV4aXRCYXNlKGtpbmQsIGppdC0+bV9vcmlnaW4uZm9yRXhpdCwgaml0LT5tX29yaWdp
bi5zZW1hbnRpYywgaml0LT5tX29yaWdpbi53YXNIb2lzdGVkKQotICAgICwgbV9qc1ZhbHVlU291
cmNlKGpzVmFsdWVTb3VyY2UpCi0gICAgLCBtX3ZhbHVlUHJvZmlsZSh2YWx1ZVByb2ZpbGUpCi0g
ICAgLCBtX3JlY292ZXJ5SW5kZXgocmVjb3ZlcnlJbmRleCkKLSAgICAsIG1fc3RyZWFtSW5kZXgo
c3RyZWFtSW5kZXgpCit1c2luZyBDUFVTdGF0ZSA9IFByb2JlOjpDUFVTdGF0ZTsKK3VzaW5nIENv
bnRleHQgPSBQcm9iZTo6Q29udGV4dDsKK3VzaW5nIEZyYW1lID0gUHJvYmU6OkZyYW1lOworCitz
dGF0aWMgdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKFByb2JlOjpDb250ZXh0JiwgQ29kZUJs
b2NrKiBiYXNlbGluZUNvZGVCbG9jaywgY29uc3QgT1NSRXhpdEJhc2UmKTsKK3N0YXRpYyB2b2lk
IGFkanVzdEFuZEp1bXBUb1RhcmdldChQcm9iZTo6Q29udGV4dCYsIFZNJiwgQ29kZUJsb2NrKiwg
Q29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jaywgT1NSRXhpdCYpOworc3RhdGljIHZvaWQgcHJp
bnRPU1JFeGl0KENvbnRleHQmLCB1aW50MzJfdCBvc3JFeGl0SW5kZXgsIGNvbnN0IE9TUkV4aXQm
KTsKKworc3RhdGljIEpTVmFsdWUganNWYWx1ZUZvcihDUFVTdGF0ZSYgY3B1LCBKU1ZhbHVlU291
cmNlIHNvdXJjZSkKIHsKLSAgICBib29sIGNhbkV4aXQgPSBqaXQtPm1fb3JpZ2luLmV4aXRPSzsK
LSAgICBpZiAoIWNhbkV4aXQgJiYgaml0LT5tX2N1cnJlbnROb2RlKSB7Ci0gICAgICAgIEV4aXRN
b2RlIGV4aXRNb2RlID0gbWF5RXhpdChqaXQtPm1faml0LmdyYXBoKCksIGppdC0+bV9jdXJyZW50
Tm9kZSk7Ci0gICAgICAgIGNhbkV4aXQgPSBleGl0TW9kZSA9PSBFeGl0TW9kZTo6RXhpdHMgfHwg
ZXhpdE1vZGUgPT0gRXhpdE1vZGU6OkV4aXRzRm9yRXhjZXB0aW9uczsKKyAgICBpZiAoc291cmNl
LmlzQWRkcmVzcygpKSB7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0OworICAgICAgICBzdGQ6Om1l
bWNweSgmcmVzdWx0LCBjcHUuZ3ByPHVpbnQ4X3QqPihzb3VyY2UuYmFzZSgpKSArIHNvdXJjZS5v
ZmZzZXQoKSwgc2l6ZW9mKEpTVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
Ci0gICAgREZHX0FTU0VSVChqaXQtPm1faml0LmdyYXBoKCksIGppdC0+bV9jdXJyZW50Tm9kZSwg
Y2FuRXhpdCk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2Rl
KGNwdS5ncHI8RW5jb2RlZEpTVmFsdWU+KHNvdXJjZS5ncHIoKSkpOworI2Vsc2UKKyAgICBpZiAo
c291cmNlLmhhc0tub3duVGFnKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlKHNvdXJjZS50YWco
KSwgY3B1LmdwcjxpbnQzMl90Pihzb3VyY2UucGF5bG9hZEdQUigpKSk7CisgICAgcmV0dXJuIEpT
VmFsdWUoY3B1LmdwcjxpbnQzMl90Pihzb3VyY2UudGFnR1BSKCkpLCBjcHUuZ3ByPGludDMyX3Q+
KHNvdXJjZS5wYXlsb2FkR1BSKCkpKTsKKyNlbmRpZgogfQogCi12b2lkIE9TUkV4aXQ6OnNldFBh
dGNoYWJsZUNvZGVPZmZzZXQoTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgY2hlY2spCisj
aWYgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgPiAwCisKKy8vIEJhc2VkIG9uIEFz
c2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0ZvcigpLgorc3RhdGljIHZvaWQg
cmVzdG9yZUNhbGxlZVNhdmVzRm9yKENvbnRleHQmIGNvbnRleHQsIENvZGVCbG9jayogY29kZUJs
b2NrKQogewotICAgIG1fcGF0Y2hhYmxlQ29kZU9mZnNldCA9IGNoZWNrLm1fanVtcC5tX2xhYmVs
Lm1fb2Zmc2V0OworICAgIEFTU0VSVChjb2RlQmxvY2spOworCisgICAgUmVnaXN0ZXJBdE9mZnNl
dExpc3QqIGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7Cisg
ICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmVSZWdpc3RlcnMgPSBSZWdpc3RlclNldChSZWdpc3Rl
clNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OmFsbEZQUnMoKSk7CisgICAgdW5z
aWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5zaXplKCk7CisKKyAgICB1aW50cHRy
X3QqIHBoeXNpY2FsU3RhY2tGcmFtZSA9IGNvbnRleHQuZnA8dWludHB0cl90Kj4oKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIFJl
Z2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgIGlmIChk
b250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIC8vIFRoZSBjYWxsZWUgc2F2ZWQgdmFsdWVzIGNvbWUgZnJvbSB0aGUgb3Jp
Z2luYWwgc3RhY2ssIG5vdCB0aGUgcmVjb3ZlcmVkIHN0YWNrLgorICAgICAgICAvLyBIZW5jZSwg
d2UgcmVhZCB0aGUgdmFsdWVzIGRpcmVjdGx5IGZyb20gdGhlIHBoeXNpY2FsIHN0YWNrIG1lbW9y
eSBpbnN0ZWFkIG9mCisgICAgICAgIC8vIGdvaW5nIHRocm91Z2ggY29udGV4dC5zdGFjaygpLgor
ICAgICAgICBBU1NFUlQoIShlbnRyeS5vZmZzZXQoKSAlIHNpemVvZih1aW50cHRyX3QpKSk7Cisg
ICAgICAgIGNvbnRleHQuZ3ByKGVudHJ5LnJlZygpLmdwcigpKSA9IHBoeXNpY2FsU3RhY2tGcmFt
ZVtlbnRyeS5vZmZzZXQoKSAvIHNpemVvZih1aW50cHRyX3QpXTsKKyAgICB9CiB9CiAKLU1hY3Jv
QXNzZW1ibGVyOjpKdW1wIE9TUkV4aXQ6OmdldFBhdGNoYWJsZUNvZGVPZmZzZXRBc0p1bXAoKSBj
b25zdAorLy8gQmFzZWQgb24gQXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZUNhbGxlZVNhdmVzRm9y
KCkuCitzdGF0aWMgdm9pZCBzYXZlQ2FsbGVlU2F2ZXNGb3IoQ29udGV4dCYgY29udGV4dCwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpKdW1wKEFz
c2VtYmxlckxhYmVsKG1fcGF0Y2hhYmxlQ29kZU9mZnNldCkpOworICAgIGF1dG8mIHN0YWNrID0g
Y29udGV4dC5zdGFjaygpOworICAgIEFTU0VSVChjb2RlQmxvY2spOworCisgICAgUmVnaXN0ZXJB
dE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJz
KCk7CisgICAgUmVnaXN0ZXJTZXQgZG9udFNhdmVSZWdpc3RlcnMgPSBSZWdpc3RlclNldChSZWdp
c3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OmFsbEZQUnMoKSk7CisgICAg
dW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5zaXplKCk7CisKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lz
dGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgIGlmIChkb250
U2F2ZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIHN0YWNrLnNldChjb250ZXh0LmZwKCksIGVudHJ5Lm9mZnNldCgpLCBjb250ZXh0Lmdw
cjx1aW50cHRyX3Q+KGVudHJ5LnJlZygpLmdwcigpKSk7CisgICAgfQogfQogCi1Db2RlTG9jYXRp
b25KdW1wIE9TUkV4aXQ6OmNvZGVMb2NhdGlvbkZvclJlcGF0Y2goQ29kZUJsb2NrKiBkZmdDb2Rl
QmxvY2spIGNvbnN0CisvLyBCYXNlZCBvbiBBc3NlbWJseUhlbHBlcnM6OnJlc3RvcmVDYWxsZWVT
YXZlc0Zyb21WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcigpLgorc3RhdGljIHZvaWQgcmVz
dG9yZUNhbGxlZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKENvbnRleHQm
IGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIENvZGVMb2NhdGlvbkp1bXAoZGZnQ29kZUJsb2NrLT5q
aXRDb2RlKCktPmRhdGFBZGRyZXNzQXRPZmZzZXQobV9wYXRjaGFibGVDb2RlT2Zmc2V0KSk7Cisg
ICAgVk0mIHZtID0gKmNvbnRleHQuYXJnPFZNKj4oKTsKKyAgICBhdXRvJiBzdGFjayA9IGNvbnRl
eHQuc3RhY2soKTsKKworICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBhbGxDYWxsZWVTYXZlcyA9
IFZNOjpnZXRBbGxDYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7CisgICAgUmVnaXN0ZXJTZXQg
ZG9udFJlc3RvcmVSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKTsKKyAg
ICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gYWxsQ2FsbGVlU2F2ZXMtPnNpemUoKTsKKworICAg
IFZNRW50cnlSZWNvcmQqIGVudHJ5UmVjb3JkID0gdm1FbnRyeVJlY29yZCh2bS50b3BWTUVudHJ5
RnJhbWUpOworICAgIHZvaWQqIGNhbGxlZVNhdmVCdWZmZXIgPSBlbnRyeVJlY29yZC0+Y2FsbGVl
U2F2ZVJlZ2lzdGVyc0J1ZmZlcjsKKworICAgIC8vIFJlc3RvcmUgYWxsIGNhbGxlZSBzYXZlcy4K
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAg
ICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBhbGxDYWxsZWVTYXZlcy0+YXQoaSk7CisgICAg
ICAgIGlmIChkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIGlmIChlbnRyeS5yZWcoKS5pc0dQUigpKQorICAgICAgICAg
ICAgY29udGV4dC5ncHIoZW50cnkucmVnKCkuZ3ByKCkpID0gc3RhY2suZ2V0PHVpbnRwdHJfdD4o
Y2FsbGVlU2F2ZUJ1ZmZlciwgZW50cnkub2Zmc2V0KCkpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBjb250ZXh0LmdwcihlbnRyeS5yZWcoKS5ncHIoKSkgPSBzdGFjay5nZXQ8ZG91YmxlPihj
YWxsZWVTYXZlQnVmZmVyLCBlbnRyeS5vZmZzZXQoKSk7CisgICAgfQogfQogCi12b2lkIE9TUkV4
aXQ6OmNvcnJlY3RKdW1wKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCisvLyBCYXNlZCBvbiBBc3Nl
bWJseUhlbHBlcnM6OmNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZm
ZXIoKS4KK3N0YXRpYyB2b2lkIGNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2
ZXNCdWZmZXIoQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwg
bGFiZWw7Ci0gICAgbGFiZWwubV9sYWJlbC5tX29mZnNldCA9IG1fcGF0Y2hhYmxlQ29kZU9mZnNl
dDsKLSAgICBtX3BhdGNoYWJsZUNvZGVPZmZzZXQgPSBsaW5rQnVmZmVyLm9mZnNldE9mKGxhYmVs
KTsKKyAgICBWTSYgdm0gPSAqY29udGV4dC5hcmc8Vk0qPigpOworICAgIGF1dG8mIHN0YWNrID0g
Y29udGV4dC5zdGFjaygpOworCisgICAgVk1FbnRyeVJlY29yZCogZW50cnlSZWNvcmQgPSB2bUVu
dHJ5UmVjb3JkKHZtLnRvcFZNRW50cnlGcmFtZSk7CisgICAgdm9pZCogY2FsbGVlU2F2ZUJ1ZmZl
ciA9IGVudHJ5UmVjb3JkLT5jYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyOworCisgICAgUmVnaXN0
ZXJBdE9mZnNldExpc3QqIGFsbENhbGxlZVNhdmVzID0gVk06OmdldEFsbENhbGxlZVNhdmVSZWdp
c3Rlck9mZnNldHMoKTsKKyAgICBSZWdpc3RlclNldCBkb250Q29weVJlZ2lzdGVycyA9IFJlZ2lz
dGVyU2V0OjpzdGFja1JlZ2lzdGVycygpOworICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBh
bGxDYWxsZWVTYXZlcy0+c2l6ZSgpOworCisgICAgQVNTRVJUKGlzNjRCaXQoKSk7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVyQ291bnQ7IGkrKykgeworICAgICAgICBSZWdp
c3RlckF0T2Zmc2V0IGVudHJ5ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAo
ZG9udENvcHlSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBpZiAoZW50cnkucmVnKCkuaXNHUFIoKSkKKyAgICAgICAgICAgIHN0YWNrLnNl
dChjYWxsZWVTYXZlQnVmZmVyLCBlbnRyeS5vZmZzZXQoKSwgY29udGV4dC5ncHI8dWludHB0cl90
PihlbnRyeS5yZWcoKS5ncHIoKSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdGFjay5z
ZXQoY2FsbGVlU2F2ZUJ1ZmZlciwgZW50cnkub2Zmc2V0KCksIGNvbnRleHQuZnByPHVpbnRwdHJf
dD4oZW50cnkucmVnKCkuZnByKCkpKTsKKyAgICB9CiB9CiAKLXZvaWQgT1NSRXhpdDo6ZW1pdFJl
c3RvcmVBcmd1bWVudHMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9wZXJhbmRzPFZhbHVlUmVj
b3Zlcnk+JiBvcGVyYW5kcykKKy8vIEJhc2VkIG9uIEFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVP
ckNvcHlDYWxsZWVTYXZlc0ZvcigpLgorc3RhdGljIHZvaWQgc2F2ZU9yQ29weUNhbGxlZVNhdmVz
Rm9yKENvbnRleHQmIGNvbnRleHQsIENvZGVCbG9jayogY29kZUJsb2NrLCBWaXJ0dWFsUmVnaXN0
ZXIgb2Zmc2V0VmlydHVhbFJlZ2lzdGVyLCBib29sIHdhc0NhbGxlZFZpYVRhaWxDYWxsKQogewor
ICAgIEZyYW1lIGZyYW1lKGNvbnRleHQuZnAoKSwgY29udGV4dC5zdGFjaygpKTsKKyAgICBBU1NF
UlQoY29kZUJsb2NrKTsKKworICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9
IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOworICAgIFJlZ2lzdGVyU2V0IGRvbnRT
YXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCks
IFJlZ2lzdGVyU2V0OjphbGxGUFJzKCkpOworICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBj
YWxsZWVTYXZlcy0+c2l6ZSgpOworCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBSZWdpc3RlclNl
dCBiYXNlbGluZUNhbGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVT
YXZlUmVnaXN0ZXJzKCk7CisjZW5kaWYKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBy
ZWdpc3RlckNvdW50OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNh
bGxlZVNhdmVzLT5hdChpKTsKKyAgICAgICAgaWYgKGRvbnRTYXZlUmVnaXN0ZXJzLmdldChlbnRy
eS5yZWcoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICB1aW50cHRyX3Qgc2F2
ZWRSZWdpc3RlclZhbHVlOworCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgVU5VU0VE
X1BBUkFNKHdhc0NhbGxlZFZpYVRhaWxDYWxsKTsKKyNlbHNlCisgICAgICAgIGlmICh3YXNDYWxs
ZWRWaWFUYWlsQ2FsbCAmJiBiYXNlbGluZUNhbGxlZVNhdmVzLmdldChlbnRyeS5yZWcoKSkpCisg
ICAgICAgICAgICBzYXZlZFJlZ2lzdGVyVmFsdWUgPSBmcmFtZS5nZXQ8dWludHB0cl90PihlbnRy
eS5vZmZzZXQoKSk7CisgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgc2F2ZWRSZWdp
c3RlclZhbHVlID0gY29udGV4dC5ncHIoZW50cnkucmVnKCkuZ3ByKCkpOworCisgICAgICAgIGZy
YW1lLnNldChvZmZzZXRWaXJ0dWFsUmVnaXN0ZXIub2Zmc2V0SW5CeXRlcygpICsgZW50cnkub2Zm
c2V0KCksIHNhdmVkUmVnaXN0ZXJWYWx1ZSk7CisgICAgfQorfQorI2Vsc2UgLy8gbm90IE5VTUJF
Ul9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTID4gMAorCitzdGF0aWMgdm9pZCByZXN0b3JlQ2Fs
bGVlU2F2ZXNGb3IoQ29udGV4dCYsIENvZGVCbG9jayopIHsgfQorc3RhdGljIHZvaWQgc2F2ZUNh
bGxlZVNhdmVzRm9yKENvbnRleHQmLCBDb2RlQmxvY2sqKSB7IH0KK3N0YXRpYyB2b2lkIHJlc3Rv
cmVDYWxsZWVTYXZlc0Zyb21WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihDb250ZXh0Jikg
eyB9CitzdGF0aWMgdm9pZCBjb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVz
QnVmZmVyKENvbnRleHQmKSB7IH0KK3N0YXRpYyB2b2lkIHNhdmVPckNvcHlDYWxsZWVTYXZlc0Zv
cihDb250ZXh0JiwgQ29kZUJsb2NrKiwgVmlydHVhbFJlZ2lzdGVyLCBib29sKSB7IH0KKworI2Vu
ZGlmIC8vIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTID4gMAorCitzdGF0aWMgSlND
ZWxsKiBjcmVhdGVEaXJlY3RBcmd1bWVudHNEdXJpbmdFeGl0KENvbnRleHQmIGNvbnRleHQsIENv
ZGVCbG9jayogY29kZUJsb2NrLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgSlNG
dW5jdGlvbiogY2FsbGVlLCBpbnQzMl90IGFyZ3VtZW50Q291bnQpCit7CisgICAgVk0mIHZtID0g
KmNvbnRleHQuYXJnPFZNKj4oKTsKKworICAgIEFTU0VSVCh2bS5oZWFwLmlzRGVmZXJyZWQoKSk7
CisKKyAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKQorICAgICAgICBjb2RlQmxvY2sgPSBiYXNlbGlu
ZUNvZGVCbG9ja0ZvcklubGluZUNhbGxGcmFtZShpbmxpbmVDYWxsRnJhbWUpOworCisgICAgdW5z
aWduZWQgbGVuZ3RoID0gYXJndW1lbnRDb3VudCAtIDE7CisgICAgdW5zaWduZWQgY2FwYWNpdHkg
PSBzdGQ6Om1heChsZW5ndGgsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSAtIDEpKTsKKyAgICBEaXJlY3RBcmd1bWVudHMqIHJlc3VsdCA9IERpcmVjdEFy
Z3VtZW50czo6Y3JlYXRlKAorICAgICAgICB2bSwgY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+
ZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlKCksIGxlbmd0aCwgY2FwYWNpdHkpOworCisgICAgcmVz
dWx0LT5jYWxsZWUoKS5zZXQodm0sIHJlc3VsdCwgY2FsbGVlKTsKKworICAgIHZvaWQqIGZyYW1l
QmFzZSA9IGNvbnRleHQuZnA8UmVnaXN0ZXIqPigpICsgKGlubGluZUNhbGxGcmFtZSA/IGlubGlu
ZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgOiAwKTsKKyAgICBGcmFtZSBmcmFtZShmcmFtZUJhc2Us
IGNvbnRleHQuc3RhY2soKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KQor
ICAgICAgICByZXN1bHQtPnNldEluZGV4UXVpY2tseSh2bSwgaSwgZnJhbWUuZ2V0QXJndW1lbnQ8
SlNWYWx1ZT4oaSkpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIEpTQ2VsbCog
Y3JlYXRlQ2xvbmVkQXJndW1lbnRzRHVyaW5nRXhpdChDb250ZXh0JiBjb250ZXh0LCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIEpTRnVuY3Rp
b24qIGNhbGxlZSwgaW50MzJfdCBhcmd1bWVudENvdW50KQoreworICAgIFZNJiB2bSA9ICpjb250
ZXh0LmFyZzxWTSo+KCk7CisgICAgRXhlY1N0YXRlKiBleGVjID0gY29udGV4dC5mcDxFeGVjU3Rh
dGUqPigpOworCisgICAgQVNTRVJUKHZtLmhlYXAuaXNEZWZlcnJlZCgpKTsKKworICAgIGlmIChp
bmxpbmVDYWxsRnJhbWUpCisgICAgICAgIGNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9y
SW5saW5lQ2FsbEZyYW1lKGlubGluZUNhbGxGcmFtZSk7CisKKyAgICB1bnNpZ25lZCBsZW5ndGgg
PSBhcmd1bWVudENvdW50IC0gMTsKKyAgICBDbG9uZWRBcmd1bWVudHMqIHJlc3VsdCA9IENsb25l
ZEFyZ3VtZW50czo6Y3JlYXRlRW1wdHkoCisgICAgICAgIHZtLCBjb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpLT5jbG9uZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSwgY2FsbGVlLCBsZW5ndGgpOworCisg
ICAgdm9pZCogZnJhbWVCYXNlID0gY29udGV4dC5mcDxSZWdpc3Rlcio+KCkgKyAoaW5saW5lQ2Fs
bEZyYW1lID8gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCA6IDApOworICAgIEZyYW1lIGZy
YW1lKGZyYW1lQmFzZSwgY29udGV4dC5zdGFjaygpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBs
ZW5ndGg7IGktLTspCisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwgZnJh
bWUuZ2V0QXJndW1lbnQ8SlNWYWx1ZT4oaSkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK09T
UkV4aXQ6Ok9TUkV4aXQoRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNl
LCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHZhbHVlUHJvZmlsZSwgU3BlY3VsYXRpdmVK
SVQqIGppdCwgdW5zaWduZWQgc3RyZWFtSW5kZXgsIHVuc2lnbmVkIHJlY292ZXJ5SW5kZXgpCisg
ICAgOiBPU1JFeGl0QmFzZShraW5kLCBqaXQtPm1fb3JpZ2luLmZvckV4aXQsIGppdC0+bV9vcmln
aW4uc2VtYW50aWMsIGppdC0+bV9vcmlnaW4ud2FzSG9pc3RlZCkKKyAgICAsIG1fanNWYWx1ZVNv
dXJjZShqc1ZhbHVlU291cmNlKQorICAgICwgbV92YWx1ZVByb2ZpbGUodmFsdWVQcm9maWxlKQor
ICAgICwgbV9yZWNvdmVyeUluZGV4KHJlY292ZXJ5SW5kZXgpCisgICAgLCBtX3N0cmVhbUluZGV4
KHN0cmVhbUluZGV4KQoreworICAgIGJvb2wgY2FuRXhpdCA9IGppdC0+bV9vcmlnaW4uZXhpdE9L
OworICAgIGlmICghY2FuRXhpdCAmJiBqaXQtPm1fY3VycmVudE5vZGUpIHsKKyAgICAgICAgRXhp
dE1vZGUgZXhpdE1vZGUgPSBtYXlFeGl0KGppdC0+bV9qaXQuZ3JhcGgoKSwgaml0LT5tX2N1cnJl
bnROb2RlKTsKKyAgICAgICAgY2FuRXhpdCA9IGV4aXRNb2RlID09IEV4aXRNb2RlOjpFeGl0cyB8
fCBleGl0TW9kZSA9PSBFeGl0TW9kZTo6RXhpdHNGb3JFeGNlcHRpb25zOworICAgIH0KKyAgICBE
RkdfQVNTRVJUKGppdC0+bV9qaXQuZ3JhcGgoKSwgaml0LT5tX2N1cnJlbnROb2RlLCBjYW5FeGl0
KTsKK30KKworc3RhdGljIHZvaWQgZW1pdFJlc3RvcmVBcmd1bWVudHMoQ29udGV4dCYgY29udGV4
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+JiBv
cGVyYW5kcykKK3sKKyAgICBGcmFtZSBmcmFtZShjb250ZXh0LmZwKCksIGNvbnRleHQuc3RhY2so
KSk7CisKICAgICBIYXNoTWFwPE1pbmlmaWVkSUQsIGludD4gYWxyZWFkeUFsbG9jYXRlZEFyZ3Vt
ZW50czsgLy8gTWFwcyBwaGFudG9tIGFyZ3VtZW50cyBub2RlIElEIHRvIG9wZXJhbmQuCiAgICAg
Zm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNpemUoKTsgKytpbmRleCkg
ewogICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9wZXJhbmRzW2luZGV4
XTsKQEAgLTkyLDE0ICsyODAsMTIgQEAgdm9pZCBPU1JFeGl0OjplbWl0UmVzdG9yZUFyZ3VtZW50
cyhDQ2FsbAogICAgICAgICBNaW5pZmllZElEIGlkID0gcmVjb3Zlcnkubm9kZUlEKCk7CiAgICAg
ICAgIGF1dG8gaXRlciA9IGFscmVhZHlBbGxvY2F0ZWRBcmd1bWVudHMuZmluZChpZCk7CiAgICAg
ICAgIGlmIChpdGVyICE9IGFscmVhZHlBbGxvY2F0ZWRBcmd1bWVudHMuZW5kKCkpIHsKLSAgICAg
ICAgICAgIEpTVmFsdWVSZWdzIHJlZ3MgPSBKU1ZhbHVlUmVnczo6d2l0aFR3b0F2YWlsYWJsZVJl
Z3MoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsKLSAgICAgICAgICAgIGppdC5sb2Fk
VmFsdWUoQ0NhbGxIZWxwZXJzOjphZGRyZXNzRm9yKGl0ZXItPnZhbHVlKSwgcmVncyk7Ci0gICAg
ICAgICAgICBqaXQuc3RvcmVWYWx1ZShyZWdzLCBDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3Iob3Bl
cmFuZCkpOworICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBmcmFtZS5nZXRP
cGVyYW5kPEpTVmFsdWU+KGl0ZXItPnZhbHVlKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQogCiAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0KLSAg
ICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+aml0Q29kZSgpLT5kZmcoKS0+bWluaWZpZWRERkcu
YXQoaWQpLT5pbmxpbmVDYWxsRnJhbWUoKTsKKyAgICAgICAgICAgIGNvZGVCbG9jay0+aml0Q29k
ZSgpLT5kZmcoKS0+bWluaWZpZWRERkcuYXQoaWQpLT5pbmxpbmVDYWxsRnJhbWUoKTsKIAogICAg
ICAgICBpbnQgc3RhY2tPZmZzZXQ7CiAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCkBAIC0x
MDcsNTMgKzI5Myw0OCBAQCB2b2lkIE9TUkV4aXQ6OmVtaXRSZXN0b3JlQXJndW1lbnRzKENDYWxs
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHN0YWNrT2Zmc2V0ID0gMDsKIAotICAgICAgICBp
ZiAoIWlubGluZUNhbGxGcmFtZSB8fCBpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpIHsK
LSAgICAgICAgICAgIGppdC5sb2FkUHRyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVy
czo6YWRkcmVzc0ZvcihzdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksCi0gICAg
ICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgaml0Lm1vdmUoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkuY29uc3RhbnQoKS5hc0NlbGwoKSks
Ci0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICB9CisgICAgICAgIEpT
RnVuY3Rpb24qIGNhbGxlZTsKKyAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUgfHwgaW5saW5l
Q2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQorICAgICAgICAgICAgY2FsbGVlID0ganNDYXN0PEpT
RnVuY3Rpb24qPihmcmFtZS5nZXRPcGVyYW5kPEpTVmFsdWU+KHN0YWNrT2Zmc2V0ICsgQ2FsbEZy
YW1lU2xvdDo6Y2FsbGVlKS5hc0NlbGwoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNh
bGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVy
eS5jb25zdGFudCgpLmFzQ2VsbCgpKTsKIAotICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSB8
fCBpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygpKSB7Ci0gICAgICAgICAgICBqaXQubG9hZDMy
KAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihzdGFja09mZnNl
dCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLAotICAgICAgICAgICAgICAgIEdQUklu
Zm86OnJlZ1QxKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGppdC5tb3ZlKAotICAg
ICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpLAotICAgICAgICAgICAgICAgIEdQUkluZm86
OnJlZ1QxKTsKLSAgICAgICAgfQorICAgICAgICBpbnQzMl90IGFyZ3VtZW50Q291bnQ7CisgICAg
ICAgIGlmICghaW5saW5lQ2FsbEZyYW1lIHx8IGlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkp
CisgICAgICAgICAgICBhcmd1bWVudENvdW50ID0gZnJhbWUuZ2V0T3BlcmFuZDxpbnQzMl90Pihz
dGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIFBheWxvYWRPZmZzZXQp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcmd1bWVudENvdW50ID0gaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKIAotICAgICAgICBqaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKAotICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGlubGluZUNhbGxGcmFtZSksIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSk7
CisgICAgICAgIEpTQ2VsbCogYXJndW1lbnRzT2JqZWN0OwogICAgICAgICBzd2l0Y2ggKHJlY292
ZXJ5LnRlY2huaXF1ZSgpKSB7CiAgICAgICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzVGhhdFdlcmVO
b3RDcmVhdGVkOgotICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4ob3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRz
RHVyaW5nRXhpdCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgICAgIGFyZ3VtZW50
c09iamVjdCA9IGNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4aXQoY29udGV4dCwgY29kZUJs
b2NrLCBpbmxpbmVDYWxsRnJhbWUsIGNhbGxlZSwgYXJndW1lbnRDb3VudCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDbG9uZWRBcmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQ6
Ci0gICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0
d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHNEdXJpbmdFeGl0
KSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICAgICAgYXJndW1lbnRzT2JqZWN0ID0g
Y3JlYXRlQ2xvbmVkQXJndW1lbnRzRHVyaW5nRXhpdChjb250ZXh0LCBjb2RlQmxvY2ssIGlubGlu
ZUNhbGxGcmFtZSwgY2FsbGVlLCBhcmd1bWVudENvdW50KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGppdC5jYWxsKEdQUklu
Zm86Om5vbkFyZ0dQUjApOwotICAgICAgICBqaXQuc3RvcmVDZWxsKEdQUkluZm86OnJldHVyblZh
bHVlR1BSLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAgICBm
cmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFsdWUoYXJndW1lbnRzT2JqZWN0KSk7CiAKICAg
ICAgICAgYWxyZWFkeUFsbG9jYXRlZEFyZ3VtZW50cy5hZGQoaWQsIG9wZXJhbmQpOwogICAgIH0K
IH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIE9TUkV4aXQ6OmNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0
ZSogZXhlYykKK3ZvaWQgT1NSRXhpdDo6ZXhlY3V0ZU9TUkV4aXQoQ29udGV4dCYgY29udGV4dCkK
IHsKLSAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSgqdm0pOworICAgIFZNJiB2bSA9ICpjb250ZXh0LmFyZzxWTSo+KCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgaWYgKHZtLT5jYWxs
RnJhbWVGb3JDYXRjaCkKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0tPmNhbGxGcmFtZUZvckNh
dGNoID09IGV4ZWMpOworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGNvbnRleHQuZnA8RXhlY1N0YXRl
Kj4oKTsKKyAgICBBU1NFUlQoJmV4ZWMtPnZtKCkgPT0gJnZtKTsKKworICAgIGlmICh2bS5jYWxs
RnJhbWVGb3JDYXRjaCkgeworICAgICAgICBleGVjID0gdm0uY2FsbEZyYW1lRm9yQ2F0Y2g7Cisg
ICAgICAgIGNvbnRleHQuZnAoKSA9IGV4ZWM7CisgICAgfQogCiAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBBU1NFUlQoY29kZUJsb2NrKTsKQEAgLTE2
MSw4MSArMzQyLDEwMSBAQCB2b2lkIEpJVF9PUEVSQVRJT04gT1NSRXhpdDo6Y29tcGlsZU9TUkV4
CiAKICAgICAvLyBJdCdzIHNvcnQgb2YgcHJlZmVyYWJsZSB0aGF0IHdlIGRvbid0IEdDIHdoaWxl
IGluIGhlcmUuIEFueXdheXMsIGRvaW5nIHNvIHdvdWxkbid0CiAgICAgLy8gcmVhbGx5IGJlIHBy
b2ZpdGFibGUuCi0gICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLT5oZWFwKTsKKyAgICBE
ZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0uaGVhcCk7CiAKLSAgICB1aW50MzJfdCBleGl0SW5k
ZXggPSB2bS0+b3NyRXhpdEluZGV4OworICAgIHVpbnQzMl90IGV4aXRJbmRleCA9IHZtLm9zckV4
aXRJbmRleDsKICAgICBPU1JFeGl0JiBleGl0ID0gY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygp
LT5vc3JFeGl0W2V4aXRJbmRleF07CiAKLSAgICBpZiAodm0tPmNhbGxGcmFtZUZvckNhdGNoKQot
ICAgICAgICBBU1NFUlQoZXhpdC5tX2tpbmQgPT0gR2VuZXJpY1Vud2luZCk7Ci0gICAgaWYgKGV4
aXQuaXNFeGNlcHRpb25IYW5kbGVyKCkpCi0gICAgICAgIEFTU0VSVF9VTlVTRUQoc2NvcGUsICEh
c2NvcGUuZXhjZXB0aW9uKCkpOwotICAgIAotICAgIHByZXBhcmVDb2RlT3JpZ2luRm9yT1NSRXhp
dChleGVjLCBleGl0Lm1fY29kZU9yaWdpbik7Ci0KLSAgICAvLyBDb21wdXRlIHRoZSB2YWx1ZSBy
ZWNvdmVyaWVzLgotICAgIE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+IG9wZXJhbmRzOwotICAgIGNv
ZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKS0+dmFyaWFibGVFdmVudFN0cmVhbS5yZWNvbnN0cnVj
dChjb2RlQmxvY2ssIGV4aXQubV9jb2RlT3JpZ2luLCBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZn
KCktPm1pbmlmaWVkREZHLCBleGl0Lm1fc3RyZWFtSW5kZXgsIG9wZXJhbmRzKTsKLQotICAgIFNw
ZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5ID0gMDsKLSAgICBpZiAoZXhpdC5tX3JlY292ZXJ5
SW5kZXggIT0gVUlOVF9NQVgpCi0gICAgICAgIHJlY292ZXJ5ID0gJmNvZGVCbG9jay0+aml0Q29k
ZSgpLT5kZmcoKS0+c3BlY3VsYXRpb25SZWNvdmVyeVtleGl0Lm1fcmVjb3ZlcnlJbmRleF07Ci0K
LSAgICB7Ci0gICAgICAgIENDYWxsSGVscGVycyBqaXQoY29kZUJsb2NrKTsKLQotICAgICAgICBp
ZiAoZXhpdC5tX2tpbmQgPT0gR2VuZXJpY1Vud2luZCkgewotICAgICAgICAgICAgLy8gV2UgYXJl
IGFjdGluZyBhcyBhIGRlZmFjdG8gb3BfY2F0Y2ggYmVjYXVzZSB3ZSBhcnJpdmUgaGVyZSBmcm9t
IGdlbmVyaWNVbndpbmQoKS4KLSAgICAgICAgICAgIC8vIFNvLCB3ZSBtdXN0IHJlc3RvcmUgb3Vy
IGNhbGwgZnJhbWUgYW5kIHN0YWNrIHBvaW50ZXIuCi0gICAgICAgICAgICBqaXQucmVzdG9yZUNh
bGxlZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKCp2bSk7Ci0gICAgICAg
ICAgICBqaXQubG9hZFB0cih2bS0+YWRkcmVzc09mQ2FsbEZyYW1lRm9yQ2F0Y2goKSwgR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICB9Ci0gICAgICAgIGppdC5hZGRQdHIoCi0g
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjb2RlQmxvY2stPnN0YWNrUG9p
bnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksCi0gICAgICAgICAgICBHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Cisg
ICAgQVNTRVJUKCF2bS5jYWxsRnJhbWVGb3JDYXRjaCB8fCBleGl0Lm1fa2luZCA9PSBHZW5lcmlj
VW53aW5kKTsKKyAgICBBU1NFUlRfVU5VU0VEKHNjb3BlLCAhZXhpdC5pc0V4Y2VwdGlvbkhhbmRs
ZXIoKSB8fCAhIXNjb3BlLmV4Y2VwdGlvbigpKTsKKworICAgIGlmIChVTkxJS0VMWSghZXhpdC5l
eGl0U3RhdGUpKSB7CisgICAgICAgIC8vIFdlIG9ubHkgbmVlZCB0byBleGVjdXRlIHRoaXMgYmxv
Y2sgb25jZSBmb3IgZWFjaCBPU1JFeGl0IHJlY29yZC4gVGhlIGNvbXB1dGVkCisgICAgICAgIC8v
IHJlc3VsdHMgd2lsbCBiZSBjYWNoZWQgaW4gdGhlIE9TUkV4aXRTdGF0ZSByZWNvcmQgZm9yIHVz
ZSBvZiB0aGUgcmVzdCBvZiB0aGUKKyAgICAgICAgLy8gZXhpdCByYW1wIGNvZGUuCisKKyAgICAg
ICAgLy8gRW5zdXJlIHdlIGhhdmUgYmFzZWxpbmUgY29kZUJsb2NrcyB0byBPU1IgZXhpdCB0by4K
KyAgICAgICAgcHJlcGFyZUNvZGVPcmlnaW5Gb3JPU1JFeGl0KGV4ZWMsIGV4aXQubV9jb2RlT3Jp
Z2luKTsKKworICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gY29kZUJsb2Nr
LT5iYXNlbGluZUFsdGVybmF0aXZlKCk7CisgICAgICAgIEFTU0VSVChiYXNlbGluZUNvZGVCbG9j
ay0+aml0VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKworICAgICAgICAvLyBDb21w
dXRlIHRoZSB2YWx1ZSByZWNvdmVyaWVzLgorICAgICAgICBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5
PiBvcGVyYW5kczsKKyAgICAgICAgY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpLT52YXJpYWJs
ZUV2ZW50U3RyZWFtLnJlY29uc3RydWN0KGNvZGVCbG9jaywgZXhpdC5tX2NvZGVPcmlnaW4sIGNv
ZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKS0+bWluaWZpZWRERkcsIGV4aXQubV9zdHJlYW1JbmRl
eCwgb3BlcmFuZHMpOworCisgICAgICAgIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5ID0g
bnVsbHB0cjsKKyAgICAgICAgaWYgKGV4aXQubV9yZWNvdmVyeUluZGV4ICE9IFVJTlRfTUFYKQor
ICAgICAgICAgICAgcmVjb3ZlcnkgPSAmY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpLT5zcGVj
dWxhdGlvblJlY292ZXJ5W2V4aXQubV9yZWNvdmVyeUluZGV4XTsKIAotICAgICAgICBqaXQuaml0
QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKTsKKyAgICAgICAgaW50MzJfdCBhY3RpdmVUaHJlc2hv
bGQgPSBiYXNlbGluZUNvZGVCbG9jay0+YWRqdXN0ZWRDb3VudGVyVmFsdWUoT3B0aW9uczo6dGhy
ZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAoKSk7CisgICAgICAgIGRvdWJsZSBhZGp1
c3RlZFRocmVzaG9sZCA9IGFwcGx5TWVtb3J5VXNhZ2VIZXVyaXN0aWNzQW5kQ29udmVydFRvSW50
KGFjdGl2ZVRocmVzaG9sZCwgYmFzZWxpbmVDb2RlQmxvY2spOworICAgICAgICBBU1NFUlQoYWRq
dXN0ZWRUaHJlc2hvbGQgPiAwKTsKKyAgICAgICAgYWRqdXN0ZWRUaHJlc2hvbGQgPSBCYXNlbGlu
ZUV4ZWN1dGlvbkNvdW50ZXI6OmNsaXBwZWRUaHJlc2hvbGQoY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSwgYWRqdXN0ZWRUaHJlc2hvbGQpOwogCi0gICAgICAgIGlmIChVTkxJS0VMWSh2bS0+bV9w
ZXJCeXRlY29kZVByb2ZpbGVyICYmIGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmdDb21tb24oKS0+
Y29tcGlsYXRpb24pKSB7Ci0gICAgICAgICAgICBQcm9maWxlcjo6RGF0YWJhc2UmIGRhdGFiYXNl
ID0gKnZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXI7CisgICAgICAgIENvZGVCbG9jayogY29kZUJs
b2NrRm9yRXhpdCA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxv
Y2soZXhpdC5tX2NvZGVPcmlnaW4sIGJhc2VsaW5lQ29kZUJsb2NrKTsKKyAgICAgICAgVmVjdG9y
PEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4gZGVjb2RlZENvZGVNYXA7CisgICAgICAgIGNvZGVC
bG9ja0ZvckV4aXQtPmppdENvZGVNYXAoKS0+ZGVjb2RlKGRlY29kZWRDb2RlTWFwKTsKKworICAg
ICAgICBCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQqIG1hcHBpbmcgPSBiaW5hcnlTZWFyY2g8Qnl0
ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0LCB1bnNpZ25lZD4oZGVjb2RlZENvZGVNYXAsIGRlY29kZWRD
b2RlTWFwLnNpemUoKSwgZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgQnl0ZWNvZGVB
bmRNYWNoaW5lT2Zmc2V0OjpnZXRCeXRlY29kZUluZGV4KTsKKworICAgICAgICBBU1NFUlQobWFw
cGluZyk7CisgICAgICAgIEFTU0VSVChtYXBwaW5nLT5tX2J5dGVjb2RlSW5kZXggPT0gZXhpdC5t
X2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CisKKyAgICAgICAgcHRyZGlmZl90IGZpbmFsU3Rh
Y2tQb2ludGVyT2Zmc2V0ID0gY29kZUJsb2NrRm9yRXhpdC0+c3RhY2tQb2ludGVyT2Zmc2V0KCkg
KiBzaXplb2YoUmVnaXN0ZXIpOworCisgICAgICAgIHZvaWQqIGp1bXBUYXJnZXQgPSBjb2RlQmxv
Y2tGb3JFeGl0LT5qaXRDb2RlKCktPmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQobWFwcGluZy0+
bV9tYWNoaW5lQ29kZU9mZnNldCk7CisKKyAgICAgICAgZXhpdC5leGl0U3RhdGUgPSBhZG9wdFJl
ZihuZXcgT1NSRXhpdFN0YXRlKGV4aXQsIGNvZGVCbG9jaywgYmFzZWxpbmVDb2RlQmxvY2ssIG9w
ZXJhbmRzLCByZWNvdmVyeSwgZmluYWxTdGFja1BvaW50ZXJPZmZzZXQsIGFjdGl2ZVRocmVzaG9s
ZCwgYWRqdXN0ZWRUaHJlc2hvbGQsIGp1bXBUYXJnZXQpKTsKKworICAgICAgICBpZiAoVU5MSUtF
TFkodm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyICYmIGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmdD
b21tb24oKS0+Y29tcGlsYXRpb24pKSB7CisgICAgICAgICAgICBQcm9maWxlcjo6RGF0YWJhc2Um
IGRhdGFiYXNlID0gKnZtLm1fcGVyQnl0ZWNvZGVQcm9maWxlcjsKICAgICAgICAgICAgIFByb2Zp
bGVyOjpDb21waWxhdGlvbiogY29tcGlsYXRpb24gPSBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZn
Q29tbW9uKCktPmNvbXBpbGF0aW9uLmdldCgpOwogCiAgICAgICAgICAgICBQcm9maWxlcjo6T1NS
RXhpdCogcHJvZmlsZXJFeGl0ID0gY29tcGlsYXRpb24tPmFkZE9TUkV4aXQoCiAgICAgICAgICAg
ICAgICAgZXhpdEluZGV4LCBQcm9maWxlcjo6T3JpZ2luU3RhY2soZGF0YWJhc2UsIGNvZGVCbG9j
aywgZXhpdC5tX2NvZGVPcmlnaW4pLAogICAgICAgICAgICAgICAgIGV4aXQubV9raW5kLCBleGl0
Lm1fa2luZCA9PSBVbmNvdW50YWJsZUludmFsaWRhdGlvbik7Ci0gICAgICAgICAgICBqaXQuYWRk
NjQoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVB
ZGRyZXNzKHByb2ZpbGVyRXhpdC0+Y291bnRlckFkZHJlc3MoKSkpOworICAgICAgICAgICAgZXhp
dC5leGl0U3RhdGUtPnByb2ZpbGVyRXhpdCA9IHByb2ZpbGVyRXhpdDsKICAgICAgICAgfQogCi0g
ICAgICAgIGNvbXBpbGVFeGl0KGppdCwgKnZtLCBleGl0LCBvcGVyYW5kcywgcmVjb3ZlcnkpOwot
Ci0gICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBjb2RlQmxvY2spOwotICAgICAg
ICBleGl0Lm1fY29kZSA9IEZJTkFMSVpFX0NPREVfSUYoCi0gICAgICAgICAgICBzaG91bGREdW1w
RGlzYXNzZW1ibHkoKSB8fCBPcHRpb25zOjp2ZXJib3NlT1NSKCkgfHwgT3B0aW9uczo6dmVyYm9z
ZURGR09TUkV4aXQoKSwKLSAgICAgICAgICAgIHBhdGNoQnVmZmVyLAotICAgICAgICAgICAgKCJE
RkcgT1NSIGV4aXQgIyV1ICglcywgJXMpIGZyb20gJXMsIHdpdGggb3BlcmFuZHMgPSAlcyIsCisg
ICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp2ZXJib3NlT1NSKCkgfHwgT3B0aW9uczo6dmVy
Ym9zZURGR09TUkV4aXQoKSkpIHsKKyAgICAgICAgICAgIGRhdGFMb2dGKCJERkcgT1NSIGV4aXQg
IyV1ICglcywgJXMpIGZyb20gJXMsIHdpdGggb3BlcmFuZHMgPSAlc1xuIiwKICAgICAgICAgICAg
ICAgICBleGl0SW5kZXgsIHRvQ1N0cmluZyhleGl0Lm1fY29kZU9yaWdpbikuZGF0YSgpLAogICAg
ICAgICAgICAgICAgIGV4aXRLaW5kVG9TdHJpbmcoZXhpdC5tX2tpbmQpLCB0b0NTdHJpbmcoKmNv
ZGVCbG9jaykuZGF0YSgpLAotICAgICAgICAgICAgICAgIHRvQ1N0cmluZyhpZ25vcmluZ0NvbnRl
eHQ8RHVtcENvbnRleHQ+KG9wZXJhbmRzKSkuZGF0YSgpKSk7CisgICAgICAgICAgICAgICAgdG9D
U3RyaW5nKGlnbm9yaW5nQ29udGV4dDxEdW1wQ29udGV4dD4ob3BlcmFuZHMpKS5kYXRhKCkpOwor
ICAgICAgICB9CiAgICAgfQogCi0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGV4aXQu
Y29kZUxvY2F0aW9uRm9yUmVwYXRjaChjb2RlQmxvY2spLCBDb2RlTG9jYXRpb25MYWJlbChleGl0
Lm1fY29kZS5jb2RlKCkpKTsKKyAgICBPU1JFeGl0U3RhdGUmIGV4aXRTdGF0ZSA9ICpleGl0LmV4
aXRTdGF0ZS5nZXQoKTsKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gZXhpdFN0
YXRlLmJhc2VsaW5lQ29kZUJsb2NrOworICAgIEFTU0VSVChiYXNlbGluZUNvZGVCbG9jay0+aml0
VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKIAotICAgIHZtLT5vc3JFeGl0SnVtcERl
c3RpbmF0aW9uID0gZXhpdC5tX2NvZGUuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7Ci19Cisg
ICAgT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4mIG9wZXJhbmRzID0gZXhpdFN0YXRlLm9wZXJhbmRz
OworICAgIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5ID0gZXhpdFN0YXRlLnJlY292ZXJ5
OwogCi12b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0s
IGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0IE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+JiBvcGVy
YW5kcywgU3BlY3VsYXRpb25SZWNvdmVyeSogcmVjb3ZlcnkpCi17Ci0gICAgaml0LmppdEFzc2Vy
dFRhZ3NJblBsYWNlKCk7CisgICAgaWYgKGV4aXQubV9raW5kID09IEdlbmVyaWNVbndpbmQpIHsK
KyAgICAgICAgLy8gV2UgYXJlIGFjdGluZyBhcyBhIGRlZmFjdG8gb3BfY2F0Y2ggYmVjYXVzZSB3
ZSBhcnJpdmUgaGVyZSBmcm9tIGdlbmVyaWNVbndpbmQoKS4KKyAgICAgICAgLy8gU28sIHdlIG11
c3QgcmVzdG9yZSBvdXIgY2FsbCBmcmFtZSBhbmQgc3RhY2sgcG9pbnRlci4KKyAgICAgICAgcmVz
dG9yZUNhbGxlZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKGNvbnRleHQp
OworICAgICAgICBBU1NFUlQoY29udGV4dC5mcCgpID09IHZtLmNhbGxGcmFtZUZvckNhdGNoKTsK
KyAgICB9CisgICAgY29udGV4dC5zcCgpID0gY29udGV4dC5mcDx1aW50OF90Kj4oKSArIChjb2Rl
QmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSk7CiAKLSAgICAv
LyBQcm8tZm9ybWEgc3R1ZmYuCi0gICAgaWYgKE9wdGlvbnM6OnByaW50RWFjaE9TUkV4aXQoKSkg
ewotICAgICAgICBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8qIGRlYnVnSW5mbyA9IG5ldyBT
cGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm87Ci0gICAgICAgIGRlYnVnSW5mby0+Y29kZUJsb2Nr
ID0gaml0LmNvZGVCbG9jaygpOwotICAgICAgICBkZWJ1Z0luZm8tPmtpbmQgPSBleGl0Lm1fa2lu
ZDsKLSAgICAgICAgZGVidWdJbmZvLT5ieXRlY29kZU9mZnNldCA9IGV4aXQubV9jb2RlT3JpZ2lu
LmJ5dGVjb2RlSW5kZXg7CisgICAgQVNTRVJUKCEoY29udGV4dC5mcDx1aW50cHRyX3Q+KCkgJiAw
eDcpKTsKIAotICAgICAgICBqaXQuZGVidWdDYWxsKHZtLCBkZWJ1Z09wZXJhdGlvblByaW50U3Bl
Y3VsYXRpb25GYWlsdXJlLCBkZWJ1Z0luZm8pOwotICAgIH0KKyAgICBpZiAoZXhpdFN0YXRlLnBy
b2ZpbGVyRXhpdCkKKyAgICAgICAgZXhpdFN0YXRlLnByb2ZpbGVyRXhpdC0+aW5jQ291bnQoKTsK
KworICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OworICAgIEZyYW1lIGZyYW1lKGNwdS5mcCgp
LCBjb250ZXh0LnN0YWNrKCkpOworCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBBU1NFUlQoY3B1
LmdwcihHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpID09IFRhZ1R5cGVOdW1iZXIpOwor
ICAgIEFTU0VSVChjcHUuZ3ByKEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikgPT0gVGFnTWFzayk7
CisjZW5kaWYKKworICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpwcmludEVhY2hPU1JFeGl0KCkp
KQorICAgICAgICBwcmludE9TUkV4aXQoY29udGV4dCwgdm0ub3NyRXhpdEluZGV4LCBleGl0KTsK
IAogICAgIC8vIFBlcmZvcm0gc3BlY3VsYXRpb24gcmVjb3ZlcnkuIFRoaXMgb25seSBjb21lcyBp
bnRvIHBsYXkgd2hlbiBhbiBvcGVyYXRpb24KICAgICAvLyBzdGFydHMgbXV0YXRpbmcgc3RhdGUg
YmVmb3JlIHZlcmlmeWluZyB0aGUgc3BlY3VsYXRpb24gaXQgaGFzIGFscmVhZHkgbWFkZS4KQEAg
LTI0MywyMiArNDQ0LDI0IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJz
JiAKICAgICBpZiAocmVjb3ZlcnkpIHsKICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS0+dHlwZSgp
KSB7CiAgICAgICAgIGNhc2UgU3BlY3VsYXRpdmVBZGQ6Ci0gICAgICAgICAgICBqaXQuc3ViMzIo
cmVjb3ZlcnktPnNyYygpLCByZWNvdmVyeS0+ZGVzdCgpKTsKKyAgICAgICAgICAgIGNwdS5ncHIo
cmVjb3ZlcnktPmRlc3QoKSkgPSBjcHUuZ3ByPHVpbnQzMl90PihyZWNvdmVyeS0+ZGVzdCgpKSAt
IGNwdS5ncHI8dWludDMyX3Q+KHJlY292ZXJ5LT5zcmMoKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVj
b3ZlcnktPmRlc3QoKSk7CisgICAgICAgICAgICBBU1NFUlQoIShjcHUuZ3ByKHJlY292ZXJ5LT5k
ZXN0KCkpID4+IDMyKSk7CisgICAgICAgICAgICBjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkpIHw9
IFRhZ1R5cGVOdW1iZXI7CiAjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNh
c2UgU3BlY3VsYXRpdmVBZGRJbW1lZGlhdGU6Ci0gICAgICAgICAgICBqaXQuc3ViMzIoQXNzZW1i
bHlIZWxwZXJzOjpJbW0zMihyZWNvdmVyeS0+aW1tZWRpYXRlKCkpLCByZWNvdmVyeS0+ZGVzdCgp
KTsKKyAgICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgPSAoY3B1Lmdwcjx1aW50
MzJfdD4ocmVjb3ZlcnktPmRlc3QoKSkgLSByZWNvdmVyeS0+aW1tZWRpYXRlKCkpOwogI2lmIFVT
RShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBqaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIsIHJlY292ZXJ5LT5kZXN0KCkpOworICAgICAgICAgICAgQVNTRVJUKCEoY3B1Lmdw
cihyZWNvdmVyeS0+ZGVzdCgpKSA+PiAzMikpOworICAgICAgICAgICAgY3B1LmdwcihyZWNvdmVy
eS0+ZGVzdCgpKSB8PSBUYWdUeXBlTnVtYmVyOwogI2VuZGlmCiAgICAgICAgICAgICBicmVhazsK
IAogICAgICAgICBjYXNlIEJvb2xlYW5TcGVjdWxhdGlvbkNoZWNrOgogI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgICAgICAgICBqaXQueG9yNjQoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCByZWNvdmVyeS0+ZGVzdCgpKTsKKyAg
ICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgPSBjcHUuZ3ByKHJlY292ZXJ5LT5k
ZXN0KCkpIF4gVmFsdWVGYWxzZTsKICNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTI4
MSwzOTUgKzQ4NCwxMTMgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMm
IAogICAgICAgICAgICAgLy8gcHJvcGVydHkgYWNjZXNzLCBvciBkdWUgdG8gYW4gYXJyYXkgcHJv
ZmlsZSkuCiAKICAgICAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGV4aXQubV9jb2Rl
T3JpZ2luRm9yRXhpdFByb2ZpbGU7Ci0gICAgICAgICAgICBpZiAoQXJyYXlQcm9maWxlKiBhcnJh
eVByb2ZpbGUgPSBqaXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoY29kZU9yaWdpbiktPmdldEFycmF5
UHJvZmlsZShjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKSB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICAgICAgICAgICAgICBHUFJSZWcgdXNlZFJlZ2lzdGVyOwotICAgICAgICAgICAgICAgIGlm
IChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0FkZHJlc3MoKSkKLSAgICAgICAgICAgICAgICAgICAg
dXNlZFJlZ2lzdGVyID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UuYmFzZSgpOwotICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVyID0gZXhpdC5tX2pzVmFs
dWVTb3VyY2UuZ3ByKCk7Ci0jZWxzZQotICAgICAgICAgICAgICAgIEdQUlJlZyB1c2VkUmVnaXN0
ZXIxOwotICAgICAgICAgICAgICAgIEdQUlJlZyB1c2VkUmVnaXN0ZXIyOwotICAgICAgICAgICAg
ICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0FkZHJlc3MoKSkgewotICAgICAgICAgICAg
ICAgICAgICB1c2VkUmVnaXN0ZXIxID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UuYmFzZSgpOwotICAg
ICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXIyID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXIxID0gZXhp
dC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigpOwotICAgICAgICAgICAgICAgICAgICBpZiAo
ZXhpdC5tX2pzVmFsdWVTb3VyY2UuaGFzS25vd25UYWcoKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHVzZWRSZWdpc3RlcjIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXIyID0gZXhpdC5tX2pzVmFs
dWVTb3VyY2UudGFnR1BSKCk7Ci0gICAgICAgICAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAg
ICAgICAgICBHUFJSZWcgc2NyYXRjaDE7Ci0gICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2gy
OwotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICAgICAgc2NyYXRjaDEgPSBBc3NlbWJs
eUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIodXNlZFJlZ2lzdGVyKTsKLSAgICAgICAgICAgICAg
ICBzY3JhdGNoMiA9IEFzc2VtYmx5SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUih1c2VkUmVnaXN0
ZXIsIHNjcmF0Y2gxKTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgc2NyYXRjaDEgPSBBc3NlbWJs
eUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIodXNlZFJlZ2lzdGVyMSwgdXNlZFJlZ2lzdGVyMik7
Ci0gICAgICAgICAgICAgICAgc2NyYXRjaDIgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0
Y2hHUFIodXNlZFJlZ2lzdGVyMSwgdXNlZFJlZ2lzdGVyMiwgc2NyYXRjaDEpOwotI2VuZGlmCi0K
LSAgICAgICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGpp
dC5wdXNoVG9TYXZlKHNjcmF0Y2gxKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnB1c2hUb1Nh
dmUoc2NyYXRjaDIpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGppdC5wdXNoKHNjcmF0Y2gxKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnB1c2goc2Ny
YXRjaDIpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIEdQUlJlZyB2YWx1
ZTsKLSAgICAgICAgICAgICAgICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaXNBZGRyZXNzKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzY3JhdGNoMTsKLSAgICAgICAgICAgICAg
ICAgICAgaml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKGV4aXQubV9qc1ZhbHVl
U291cmNlLmFzQWRkcmVzcygpKSwgdmFsdWUpOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgICAgICB2YWx1ZSA9IGV4aXQubV9qc1ZhbHVlU291cmNlLnBheWxvYWRHUFIo
KTsKLQotICAgICAgICAgICAgICAgIGppdC5sb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNz
KHZhbHVlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoMSk7Ci0gICAgICAg
ICAgICAgICAgaml0LnN0b3JlMzIoc2NyYXRjaDEsIGFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFz
dFNlZW5TdHJ1Y3R1cmVJRCgpKTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgICAg
IGppdC5sb2FkOChBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3ModmFsdWUsIEpTQ2VsbDo6aW5kZXhp
bmdUeXBlQW5kTWlzY09mZnNldCgpKSwgc2NyYXRjaDEpOwotI2Vsc2UKLSAgICAgICAgICAgICAg
ICBqaXQubG9hZDgoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gxLCBTdHJ1Y3R1cmU6
OmluZGV4aW5nVHlwZUluY2x1ZGluZ0hpc3RvcnlPZmZzZXQoKSksIHNjcmF0Y2gxKTsKLSNlbmRp
ZgotICAgICAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMy
KDEpLCBzY3JhdGNoMik7Ci0gICAgICAgICAgICAgICAgaml0LmxzaGlmdDMyKHNjcmF0Y2gxLCBz
Y3JhdGNoMik7Ci0gICAgICAgICAgICAgICAgaml0Lm9yMzIoc2NyYXRjaDIsIEFzc2VtYmx5SGVs
cGVyczo6QWJzb2x1dGVBZGRyZXNzKGFycmF5UHJvZmlsZS0+YWRkcmVzc09mQXJyYXlNb2Rlcygp
KSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoaXNBUk02NCgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaDIpOwotICAgICAgICAgICAgICAgICAgICBqaXQu
cG9wVG9SZXN0b3JlKHNjcmF0Y2gxKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICBqaXQucG9wKHNjcmF0Y2gyKTsKLSAgICAgICAgICAgICAgICAgICAgaml0
LnBvcChzY3JhdGNoMSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgQ29kZUJsb2Nr
KiBwcm9maWxlZENvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxp
bmVDb2RlQmxvY2soY29kZU9yaWdpbiwgYmFzZWxpbmVDb2RlQmxvY2spOworICAgICAgICAgICAg
aWYgKEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gcHJvZmlsZWRDb2RlQmxvY2stPmdldEFy
cmF5UHJvZmlsZShjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKSB7CisgICAgICAgICAgICAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBqc1ZhbHVlRm9yKGNwdSwgZXhpdC5tX2pzVmFsdWVTb3Vy
Y2UpLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICAgICAgICAgIGFycmF5UHJvZmls
ZS0+b2JzZXJ2ZVN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgYmUgYWJsZSB0byB1c2UgYXJyYXlNb2RlRnJvbVN0cnVjdHVyZSgpIHRvIGRl
dGVybWluZSB0aGUgb2JzZXJ2ZWQgQXJyYXlNb2RlIGhlcmUuCisgICAgICAgICAgICAgICAgLy8g
SG93ZXZlciwgY3VycmVudGx5LCBkb2luZyBzbyB3b3VsZCByZXN1bHQgaW4gYSBwZGZqcyBwcmVm
b3JtYW5jZSByZWdyZXNzaW9uLgorICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0NzMKKyAgICAgICAgICAgICAgICBhcnJheVByb2Zp
bGUtPm9ic2VydmVBcnJheU1vZGUoYXNBcnJheU1vZGVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBl
KCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChNZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBleGl0Lm1fdmFsdWVQcm9maWxlKSB7Ci0jaWYg
VVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0Fk
ZHJlc3MoKSkgewotICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IGJlIHN1cmUgdGhhdCB3ZSBo
YXZlIGEgc3BhcmUgcmVnaXN0ZXIuIFNvIHVzZSB0aGUgdGFnVHlwZU51bWJlclJlZ2lzdGVyLAot
ICAgICAgICAgICAgICAgIC8vIHNpbmNlIHdlIGtub3cgaG93IHRvIHJlc3RvcmUgaXQuCi0gICAg
ICAgICAgICAgICAgaml0LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoZXhpdC5tX2pz
VmFsdWVTb3VyY2UuYXNBZGRyZXNzKCkpLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIp
OwotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJl
Z3MoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7Ci0gICAgICAgICAgICAgICAgaml0
Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tNjQoVGFnVHlwZU51bWJlciksIEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKGV4aXQubV9q
c1ZhbHVlU291cmNlLmdwcigpKSk7Ci0jZWxzZSAvLyBub3QgVVNFKEpTVkFMVUU2NCkKLSAgICAg
ICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0FkZHJlc3MoKSkgewotICAgICAgICAg
ICAgICAgIC8vIFNhdmUgYSByZWdpc3RlciBzbyB3ZSBjYW4gdXNlIGl0LgotICAgICAgICAgICAg
ICAgIEdQUlJlZyBzY3JhdGNoUGF5bG9hZCA9IEFzc2VtYmx5SGVscGVyczo6c2VsZWN0U2NyYXRj
aEdQUihleGl0Lm1fanNWYWx1ZVNvdXJjZS5iYXNlKCkpOwotICAgICAgICAgICAgICAgIEdQUlJl
ZyBzY3JhdGNoVGFnID0gQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGV4aXQubV9q
c1ZhbHVlU291cmNlLmJhc2UoKSwgc2NyYXRjaFBheWxvYWQpOwotICAgICAgICAgICAgICAgIGpp
dC5wdXNoVG9TYXZlKHNjcmF0Y2hQYXlsb2FkKTsKLSAgICAgICAgICAgICAgICBqaXQucHVzaFRv
U2F2ZShzY3JhdGNoVGFnKTsKLQotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHNjcmF0Y2go
c2NyYXRjaFRhZywgc2NyYXRjaFBheWxvYWQpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIGppdC5sb2FkVmFsdWUoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYXNBZGRyZXNzKCksIHNj
cmF0Y2gpOwotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgc2Ny
YXRjaCk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9y
ZShzY3JhdGNoVGFnKTsKLSAgICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2hQ
YXlsb2FkKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaGFz
S25vd25UYWcoKSkgewotICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoVGFnID0gQXNzZW1i
bHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGV4aXQubV9qc1ZhbHVlU291cmNlLnBheWxvYWRH
UFIoKSk7Ci0gICAgICAgICAgICAgICAgaml0LnB1c2hUb1NhdmUoc2NyYXRjaFRhZyk7Ci0gICAg
ICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZXhpdC5t
X2pzVmFsdWVTb3VyY2UudGFnKCkpLCBzY3JhdGNoVGFnKTsKLSAgICAgICAgICAgICAgICBKU1Zh
bHVlUmVncyB2YWx1ZShzY3JhdGNoVGFnLCBleGl0Lm1fanNWYWx1ZVNvdXJjZS5wYXlsb2FkR1BS
KCkpOwotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgdmFsdWUp
OwotICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaFRhZyk7Ci0gICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQs
IGV4aXQubV9qc1ZhbHVlU291cmNlLnJlZ3MoKSk7Ci0jZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkK
LSAgICAgICAgfQorICAgICAgICBpZiAoTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBwcm9m
aWxlID0gZXhpdC5tX3ZhbHVlUHJvZmlsZSkKKyAgICAgICAgICAgIHByb2ZpbGUucmVwb3J0VmFs
dWUoanNWYWx1ZUZvcihjcHUsIGV4aXQubV9qc1ZhbHVlU291cmNlKSk7CiAgICAgfQogCi0gICAg
Ly8gV2hhdCBmb2xsb3dzIGlzIGFuIGludGVudGlvbmFsbHkgc2ltcGxlIE9TUiBleGl0IGltcGxl
bWVudGF0aW9uIHRoYXQgZ2VuZXJhdGVzCi0gICAgLy8gZmFpcmx5IHBvb3IgY29kZSBidXQgaXMg
dmVyeSBlYXN5IHRvIGhhY2suIEluIHBhcnRpY3VsYXIsIGl0IGR1bXBzIGFsbCBzdGF0ZSB0aGF0
Ci0gICAgLy8gbmVlZHMgY29udmVyc2lvbiBpbnRvIGEgc2NyYXRjaCBidWZmZXIgc28gdGhhdCBp
biBzdGVwIDYsIHdoZXJlIHdlIGFjdHVhbGx5IGRvIHRoZQotICAgIC8vIGNvbnZlcnNpb25zLCB3
ZSBrbm93IHRoYXQgYWxsIHRlbXAgcmVnaXN0ZXJzIGFyZSBmcmVlIHRvIHVzZSBhbmQgdGhlIHZh
cmlhYmxlIGlzCi0gICAgLy8gZGVmaW5pdGVseSBpbiBhIHdlbGwta25vd24gc3BvdCBpbiB0aGUg
c2NyYXRjaCBidWZmZXIgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGhhZAotICAgIC8vIG9yaWdp
bmFsbHkgYmVlbiBpbiBhIHJlZ2lzdGVyIG9yIHNwaWxsZWQuIFRoaXMgYWxsb3dzIHVzIHRvIGRl
Y291cGxlICJ3aGVyZSB3YXMKLSAgICAvLyB0aGUgdmFyaWFibGUiIGZyb20gImhvdyB3YXMgaXQg
cmVwcmVzZW50ZWQiLiBDb25zaWRlciB0aGF0IHRoZQotICAgIC8vIEludDMyRGlzcGxhY2VkSW5K
U1N0YWNrIHJlY292ZXJ5OiBpdCB0ZWxscyB1cyB0aGF0IHRoZSB2YWx1ZSBpcyBpbiBhCi0gICAg
Ly8gcGFydGljdWxhciBwbGFjZSBhbmQgdGhhdCB0aGF0IHBsYWNlIGhvbGRzIGFuIHVuYm94ZWQg
aW50MzIuIFdlIGhhdmUgdHdvIGRpZmZlcmVudAotICAgIC8vIHBsYWNlcyB0aGF0IGEgdmFsdWUg
Y291bGQgYmUgKGRpc3BsYWNlZCwgcmVnaXN0ZXIpIGFuZCBhIGJ1bmNoIG9mIGRpZmZlcmVudAot
ICAgIC8vIHdheXMgb2YgcmVwcmVzZW50aW5nIGEgdmFsdWUuIFRoZSBudW1iZXIgb2YgcmVjb3Zl
cmllcyBpcyB0d28gKiBhIGJ1bmNoLiBUaGUgY29kZQotICAgIC8vIGJlbG93IG1lYW5zIHRoYXQg
d2UgaGF2ZSB0byBoYXZlIHR3byArIGEgYnVuY2ggY2FzZXMgcmF0aGVyIHRoYW4gdHdvICogYSBi
dW5jaC4KLSAgICAvLyBPbmNlIHdlIGhhdmUgbG9hZGVkIHRoZSB2YWx1ZSBmcm9tIHdoZXJldmVy
IGl0IHdhcywgdGhlIHJlYm94aW5nIGlzIHRoZSBzYW1lCi0gICAgLy8gcmVnYXJkbGVzcyBvZiBp
dHMgbG9jYXRpb24uIExpa2V3aXNlLCBiZWZvcmUgd2UgZG8gdGhlIHJlYm94aW5nLCB0aGUgd2F5
IHdlIGdldCB0bwotICAgIC8vIHRoZSB2YWx1ZSAoaS5lLiB3aGVyZSB3ZSBsb2FkIGl0IGZyb20p
IGlzIHRoZSBzYW1lIHJlZ2FyZGxlc3Mgb2YgaXRzIHR5cGUuIEJlY2F1c2UKLSAgICAvLyB0aGUg
Y29kZSBiZWxvdyBhbHdheXMgZHVtcHMgZXZlcnl0aGluZyBpbnRvIGEgc2NyYXRjaCBidWZmZXIg
Zmlyc3QsIHRoZSB0d28KLSAgICAvLyBxdWVzdGlvbnMgYmVjb21lIG9ydGhvZ29uYWwsIHdoaWNo
IHNpbXBsaWZpZXMgYWRkaW5nIG5ldyB0eXBlcyBhbmQgYWRkaW5nIG5ldwotICAgIC8vIGxvY2F0
aW9ucy4KLSAgICAvLwotICAgIC8vIFRoaXMgcmFpc2VzIHRoZSBxdWVzdGlvbjogZG9lcyB1c2lu
ZyBzdWNoIGEgc3Vib3B0aW1hbCBpbXBsZW1lbnRhdGlvbiBvZiBPU1IgZXhpdCwKLSAgICAvLyB3
aGVyZSB3ZSBhbHdheXMgZW1pdCBjb2RlIHRvIGR1bXAgYWxsIHN0YXRlIGludG8gYSBzY3JhdGNo
IGJ1ZmZlciBvbmx5IHRvIHRoZW4KLSAgICAvLyBkdW1wIGl0IHJpZ2h0IGJhY2sgaW50byB0aGUg
c3RhY2ssIGh1cnQgdXMgaW4gYW55IHdheT8gVGhlIGFzbndlciBpcyB0aGF0IE9TUiBleGl0cwot
ICAgIC8vIGFyZSByYXJlLiBPdXIgdGllcmluZyBzdHJhdGVneSBlbnN1cmVzIHRoaXMuIFRoaXMg
aXMgYmVjYXVzZSBpZiBhbiBPU1IgZXhpdCBpcwotICAgIC8vIHRha2VuIG1vcmUgdGhhbiB+MTAw
IHRpbWVzLCB3ZSBqZXR0aXNvbiB0aGUgREZHIGNvZGUgYmxvY2sgYWxvbmcgd2l0aCBhbGwgb2Yg
aXRzCi0gICAgLy8gZXhpdHMuIEl0IGlzIGltcG9zc2libGUgZm9yIGFuIE9TUiBleGl0IC0gaS5l
LiB0aGUgY29kZSB3ZSBjb21waWxlIGJlbG93IC0gdG8KLSAgICAvLyBleGVjdXRlIGZyZXF1ZW50
bHkgZW5vdWdoIGZvciB0aGUgY29kZWdlbiB0byBtYXR0ZXIgdGhhdCBtdWNoLiBJdCBwcm9iYWJs
eSBtYXR0ZXJzCi0gICAgLy8gZW5vdWdoIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byB0dXJuIHRoaXMg
aW50byBzb21lIHN1cGVyLXNsb3cgZnVuY3Rpb24gY2FsbCwgYnV0IHNvCi0gICAgLy8gbG9uZyBh
cyB3ZSdyZSBnZW5lcmF0aW5nIHN0cmFpZ2h0LWxpbmUgY29kZSwgdGhhdCBjb2RlIGNhbiBiZSBw
cmV0dHkgYmFkLiBBbHNvCi0gICAgLy8gYmVjYXVzZSB3ZSB0ZW5kIHRvIGV4aXQgb25seSBhbG9u
ZyBvbmUgT1NSIGV4aXQgZnJvbSBhbnkgREZHIGNvZGUgYmxvY2sgLSB0aGF0J3MgYW4KLSAgICAv
LyBlbXBpcmljYWwgcmVzdWx0IHRoYXQgd2UncmUgZXh0cmVtZWx5IGNvbmZpZGVudCBhYm91dCAt
IHRoZSBjb2RlIHNpemUgb2YgdGhpcwotICAgIC8vIGRvZXNuJ3QgbWF0dGVyIG11Y2guIEhlbmNl
IGFueSBhdHRlbXB0IHRvIG9wdGltaXplIHRoZSBjb2RlZ2VuIGhlcmUgaXMganVzdCBwdXJlbHkK
LSAgICAvLyBoYXJtZnVsIHRvIHRoZSBzeXN0ZW06IGl0IHByb2JhYmx5IHdvbid0IHJlZHVjZSBl
aXRoZXIgbmV0IG1lbW9yeSB1c2FnZSBvciBuZXQKLSAgICAvLyBleGVjdXRpb24gdGltZS4gSXQg
d2lsbCBvbmx5IHByZXZlbnQgdXMgZnJvbSBjbGVhbmx5IGRlY291cGxpbmcgIndoZXJlIHdhcyB0
aGUKLSAgICAvLyB2YXJpYWJsZSIgZnJvbSAiaG93IHdhcyBpdCByZXByZXNlbnRlZCIsIHdoaWNo
IHdpbGwgbWFrZSBpdCBtb3JlIGRpZmZpY3VsdCB0byBhZGQKLSAgICAvLyBmZWF0dXJlcyBpbiB0
aGUgZnV0dXJlIGFuZCBpdCB3aWxsIG1ha2UgaXQgaGFyZGVyIHRvIHJlYXNvbiBhYm91dCBidWdz
LgotCi0gICAgLy8gU2F2ZSBhbGwgc3RhdGUgZnJvbSBHUFJzIGludG8gdGhlIHNjcmF0Y2ggYnVm
ZmVyLgotCi0gICAgU2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1ZmZlciA9IHZtLnNjcmF0Y2hCdWZm
ZXJGb3JTaXplKHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBvcGVyYW5kcy5zaXplKCkpOwotICAg
IEVuY29kZWRKU1ZhbHVlKiBzY3JhdGNoID0gc2NyYXRjaEJ1ZmZlciA/IHN0YXRpY19jYXN0PEVu
Y29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKSA6IDA7Ci0KLSAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4KSB7
Ci0gICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhd
OwotCi0gICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKLSAgICAgICAgY2Fz
ZSBVbmJveGVkSW50MzJJbkdQUjoKLSAgICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BSOgotI2lm
IFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGNhc2UgSW5HUFI6Ci0gICAgICAgIGNhc2UgVW5ib3hl
ZEludDUySW5HUFI6Ci0gICAgICAgIGNhc2UgVW5ib3hlZFN0cmljdEludDUySW5HUFI6Ci0gICAg
ICAgICAgICBqaXQuc3RvcmU2NChyZWNvdmVyeS5ncHIoKSwgc2NyYXRjaCArIGluZGV4KTsKLSAg
ICAgICAgICAgIGJyZWFrOwotI2Vsc2UKLSAgICAgICAgY2FzZSBVbmJveGVkQm9vbGVhbkluR1BS
OgotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgcmVjb3ZlcnkuZ3By
KCksCi0gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
Kj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBJblBhaXI6Ci0gICAgICAgICAgICBqaXQuc3Rv
cmUzMigKLSAgICAgICAgICAgICAgICByZWNvdmVyeS50YWdHUFIoKSwKLSAgICAgICAgICAgICAg
ICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgp
LT5hc0JpdHMudGFnKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAg
IHJlY292ZXJ5LnBheWxvYWRHUFIoKSwKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7
Ci0gICAgICAgICAgICBicmVhazsKLSNlbmRpZgotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIEFuZCB2b2lsYSwgYWxsIEdQ
UnMgYXJlIGZyZWUgdG8gcmV1c2UuCi0KLSAgICAvLyBTYXZlIGFsbCBzdGF0ZSBmcm9tIEZQUnMg
aW50byB0aGUgc2NyYXRjaCBidWZmZXIuCi0KLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGlu
ZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIGNvbnN0IFZhbHVlUmVj
b3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhdOwotCi0gICAgICAgIHN3aXRjaCAocmVj
b3ZlcnkudGVjaG5pcXVlKCkpIHsKLSAgICAgICAgY2FzZSBVbmJveGVkRG91YmxlSW5GUFI6Ci0g
ICAgICAgIGNhc2UgSW5GUFI6Ci0gICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAg
ICAgICAgaml0LnN0b3JlRG91YmxlKHJlY292ZXJ5LmZwcigpLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhHUFJJbmZvOjpyZWdUMCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gTm93
LCBhbGwgRlBScyBhcmUgYWxzbyBmcmVlLgotCi0gICAgLy8gU2F2ZSBhbGwgc3RhdGUgZnJvbSB0
aGUgc3RhY2sgaW50byB0aGUgc2NyYXRjaCBidWZmZXIuIEZvciBzaW1wbGljaXR5IHdlCi0gICAg
Ly8gZG8gdGhpcyBldmVuIGZvciBzdGF0ZSB0aGF0J3MgYWxyZWFkeSBpbiB0aGUgcmlnaHQgcGxh
Y2Ugb24gdGhlIHN0YWNrLgotICAgIC8vIEl0IG1ha2VzIHRoaW5ncyBzaW1wbGVyIGxhdGVyLgot
Ci0gICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNpemUoKTsgKytp
bmRleCkgewotICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9wZXJhbmRz
W2luZGV4XTsKLQotICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7Ci0gICAg
ICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJ
bkpTU3RhY2s6Ci0gICAgICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAg
ICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBEb3VibGVEaXNw
bGFjZWRJbkpTU3RhY2s6Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgY2FzZSBJbnQ1MkRp
c3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBTdHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNT
dGFjazoKLSAgICAgICAgICAgIGppdC5sb2FkNjQoQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9y
KHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAg
ICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSNlbHNlCi0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwK
LSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQubG9hZDMy
KAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihyZWNvdmVyeS52
aXJ0dWFsUmVnaXN0ZXIoKSksCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEpOwotICAg
ICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCi0g
ICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2Ny
YXRjaCArIGluZGV4KS0+YXNCaXRzLnRhZyk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAg
ICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSwKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9j
YXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5
bG9hZCk7Ci0gICAgICAgICAgICBicmVhazsKLSNlbmRpZgotCi0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIE5lZWQgdG8gZW5z
dXJlIHRoYXQgdGhlIHN0YWNrIHBvaW50ZXIgYWNjb3VudHMgZm9yIHRoZSB3b3JzdC1jYXNlIHN0
YWNrIHVzYWdlIGF0IGV4aXQuIFRoaXMKLSAgICAvLyBjb3VsZCB0b2FzdCBzb21lIHN0YWNrIHRo
YXQgdGhlIERGRyB1c2VkLiBXZSBuZWVkIHRvIGRvIGl0IGJlZm9yZSBzdG9yaW5nIHRvIHN0YWNr
IG9mZnNldHMKLSAgICAvLyB1c2VkIGJ5IGJhc2VsaW5lLgotICAgIGppdC5hZGRQdHIoCi0gICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKAotICAgICAgICAgICAgLWppdC5jb2RlQmxv
Y2soKS0+aml0Q29kZSgpLT5kZmdDb21tb24oKS0+cmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhp
dCAqIHNpemVvZihSZWdpc3RlcikpLAotICAgICAgICBDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRl
clJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLQotICAgIC8v
IFJlc3RvcmUgdGhlIERGRyBjYWxsZWUgc2F2ZXMgYW5kIHRoZW4gc2F2ZSB0aGUgb25lcyB0aGUg
YmFzZWxpbmUgSklUIHVzZXMuCi0gICAgaml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKLSAg
ICBqaXQuZW1pdFNhdmVDYWxsZWVTYXZlc0ZvcihqaXQuYmFzZWxpbmVDb2RlQmxvY2soKSk7Ci0K
LSAgICAvLyBUaGUgdGFnIHJlZ2lzdGVycyBhcmUgbmVlZGVkIHRvIG1hdGVyaWFsaXplIHJlY292
ZXJpZXMgYmVsb3cuCi0gICAgaml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7
Ci0KLSAgICBpZiAoZXhpdC5pc0V4Y2VwdGlvbkhhbmRsZXIoKSkKLSAgICAgICAgaml0LmNvcHlD
YWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0pOwotCiAgICAgLy8g
RG8gYWxsIGRhdGEgZm9ybWF0IGNvbnZlcnNpb25zIGFuZCBzdG9yZSB0aGUgcmVzdWx0cyBpbnRv
IHRoZSBzdGFjay4KKyAgICAvLyBOb3RlOiB3ZSBuZWVkIHRvIHJlY292ZXIgdmFsdWVzIGJlZm9y
ZSByZXN0b3JpbmcgY2FsbGVlIHNhdmUgcmVnaXN0ZXJzIGJlbG93CisgICAgLy8gYmVjYXVzZSB0
aGUgcmVjb3ZlcnkgbWF5IHJlbHkgb24gdmFsdWVzIGluIHNvbWUgb2YgY2FsbGVlIHNhdmUgcmVn
aXN0ZXJzLgogCi0gICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNp
emUoKTsgKytpbmRleCkgeworICAgIGludCBjYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3Rl
cnMgPSBzdGF0aWNfY2FzdDxpbnQ+KGJhc2VsaW5lQ29kZUJsb2NrLT5jYWxsZWVTYXZlU3BhY2VB
c1ZpcnR1YWxSZWdpc3RlcnMoKSk7CisgICAgc2l6ZV90IG51bWJlck9mT3BlcmFuZHMgPSBvcGVy
YW5kcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG51bWJlck9m
T3BlcmFuZHM7ICsraW5kZXgpIHsKICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3Zl
cnkgPSBvcGVyYW5kc1tpbmRleF07CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZWcgPSBvcGVy
YW5kcy52aXJ0dWFsUmVnaXN0ZXJGb3JJbmRleChpbmRleCk7CiAKLSAgICAgICAgaWYgKHJlZy5p
c0xvY2FsKCkgJiYgcmVnLnRvTG9jYWwoKSA8IHN0YXRpY19jYXN0PGludD4oaml0LmJhc2VsaW5l
Q29kZUJsb2NrKCktPmNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKSkKKyAgICAg
ICAgaWYgKHJlZy5pc0xvY2FsKCkgJiYgcmVnLnRvTG9jYWwoKSA8IGNhbGxlZVNhdmVTcGFjZUFz
VmlydHVhbFJlZ2lzdGVycykKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGludCBv
cGVyYW5kID0gcmVnLm9mZnNldCgpOwogCiAgICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5p
cXVlKCkpIHsKICAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBm
cmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIGV4ZWMtPnIocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVy
KCkpLmpzVmFsdWUoKSk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIEluRlBS
OgorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBjcHUuZnByPEpTVmFsdWU+
KHJlY292ZXJ5LmZwcigpKSk7CisgICAgICAgICAgICBicmVhazsKKwogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgICAgIGNhc2UgSW5HUFI6Ci0gICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoK
LSAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICBjYXNlIEJvb2xl
YW5EaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBqaXQubG9hZDY0KHNjcmF0Y2ggKyBp
bmRleCwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6
cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CisgICAgICAgICAg
ICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIGNwdS5ncHI8SlNWYWx1ZT4ocmVjb3ZlcnkuZ3By
KCkpKTsKICAgICAgICAgICAgIGJyZWFrOwotI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCisj
ZWxzZQogICAgICAgICBjYXNlIEluUGFpcjoKLSAgICAgICAgICAgIGppdC5sb2FkMzIoCi0gICAg
ICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRj
aCArIGluZGV4KS0+YXNCaXRzLnRhZywKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7
Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8
RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2Fk
LAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKLSAgICAgICAgICAgIGppdC5zdG9y
ZTMyKAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAotICAgICAgICAgICAgICAgIEFz
c2VtYmx5SGVscGVyczo6dGFnRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMy
KAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxLAotICAgICAgICAgICAgICAgIEFzc2Vt
Ymx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7CisgICAgICAgICAgICBmcmFtZS5zZXRP
cGVyYW5kKG9wZXJhbmQsIEpTVmFsdWUoY3B1LmdwcjxpbnQzMl90PihyZWNvdmVyeS50YWdHUFIo
KSksIGNwdS5ncHI8aW50MzJfdD4ocmVjb3ZlcnkucGF5bG9hZEdQUigpKSkpOwogICAgICAgICAg
ICAgYnJlYWs7CisjZW5kaWYKIAogICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6CisgICAg
ICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFsdWUoY3B1LmdwcjxKU0NlbGwq
PihyZWNvdmVyeS5ncHIoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2Ug
Q2VsbERpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAg
ICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCAr
IGluZGV4KS0+YXNCaXRzLnBheWxvYWQsCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAp
OwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksCi0gICAgICAgICAgICAgICAgQXNz
ZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIo
Ci0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCi0gICAgICAgICAgICAgICAgQXNzZW1i
bHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGZyYW1lLnNldE9w
ZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShleGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3Rlcigp
KS51bmJveGVkQ2VsbCgpKSk7CiAgICAgICAgICAgICBicmVhazsKIAorI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCiAgICAgICAgIGNhc2UgVW5ib3hlZEJvb2xlYW5JbkdQUjoKLSAgICAgICAgY2FzZSBC
b29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgaml0LmxvYWQzMigKLSAgICAg
ICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNo
ICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdU
MCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCb29sZWFuVGFnKSwKLSAgICAgICAgICAgICAg
ICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBqaXQuc3Rv
cmUzMigKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwKLSAgICAgICAgICAgICAgICBB
c3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgZnJhbWUu
c2V0T3BlcmFuZChvcGVyYW5kLCBqc0Jvb2xlYW4oY3B1Lmdwcjxib29sPihyZWNvdmVyeS5ncHIo
KSkpKTsKICAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisjZW5k
aWYKIAotICAgICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgotICAgICAgICBjYXNlIEludDMy
RGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3Rh
Y2s6CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGppdC5sb2FkNjQoc2NyYXRjaCAr
IGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuemVyb0V4dGVuZDMyVG9Q
dHIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5vcjY0
KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDApOwotICAgICAg
ICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVz
c0ZvcihvcGVyYW5kKSk7CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIGV4
ZWMtPnIocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLmpzVmFsdWUoKSk7CiAjZWxzZQotICAg
ICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKLSAg
ICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigK
LSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJ
bnQzMlRhZyksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFu
ZCkpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6
cmVnVDAsCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJh
bmQpKTsKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwganNCb29sZWFuKGV4
ZWMtPnIocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLmpzVmFsdWUoKS5wYXlsb2FkKCkpKTsK
ICNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJ
bkdQUjoKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShjcHUu
Z3ByPGludDMyX3Q+KHJlY292ZXJ5LmdwcigpKSkpOworICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIGZyYW1lLnNl
dE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShleGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3Rl
cigpKS51bmJveGVkSW50MzIoKSkpOworICAgICAgICAgICAgYnJlYWs7CisKICNpZiBVU0UoSlNW
QUxVRTY0KQogICAgICAgICBjYXNlIFVuYm94ZWRJbnQ1MkluR1BSOgorICAgICAgICAgICAgZnJh
bWUuc2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVlKGNwdS5ncHI8aW50NjRfdD4ocmVjb3Zlcnku
Z3ByKCkpID4+IEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpKTsKKyAgICAgICAgICAgIGJyZWFr
OworCiAgICAgICAgIGNhc2UgSW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBq
aXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAg
aml0LnJzaGlmdDY0KAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAg
ICAgICBqaXQuYm94SW50NTIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZv
OjpyZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJ
bmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAg
ICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShleGVjLT5yKHJlY292ZXJ5
LnZpcnR1YWxSZWdpc3RlcigpKS51bmJveGVkSW50NTIoKSkpOwogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NTJJbkdQUjoKKyAgICAgICAgICAgIGZy
YW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShjcHUuZ3ByPGludDY0X3Q+KHJlY292ZXJ5
LmdwcigpKSkpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBTdHJpY3RJbnQ1
MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIGppdC5sb2FkNjQoc2NyYXRjaCArIGlu
ZGV4LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuYm94SW50NTIoR1BSSW5mbzo6
cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7
Ci0gICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJz
OjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3Bl
cmFuZCwgSlNWYWx1ZShleGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS51bmJveGVk
U3RyaWN0SW50NTIoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKIAogICAgICAgICBj
YXNlIFVuYm94ZWREb3VibGVJbkZQUjoKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3Bl
cmFuZCwgSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgcHVyaWZ5TmFOKGNwdS5mcHIo
cmVjb3ZlcnkuZnByKCkpKSkpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBE
b3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOwot
ICAgICAgICAgICAgaml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5m
bzo6cmVnVDApLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5wdXJpZnlOYU4o
RlBSSW5mbzo6ZnBSZWdUMCk7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGppdC5i
b3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAg
aml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcihv
cGVyYW5kKSk7Ci0jZWxzZQotICAgICAgICAgICAgaml0LnN0b3JlRG91YmxlKEZQUkluZm86OmZw
UmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0jZW5kaWYKKyAg
ICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShKU1ZhbHVlOjpFbmNv
ZGVBc0RvdWJsZSwgcHVyaWZ5TmFOKGV4ZWMtPnIocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkp
LnVuYm94ZWREb3VibGUoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
Q29uc3RhbnQ6Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KAot
ICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVu
Y29kZShyZWNvdmVyeS5jb25zdGFudCgpKSksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxw
ZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKLSNlbHNlCi0gICAgICAgICAgICBqaXQuc3RvcmUz
MigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZWNvdmVy
eS5jb25zdGFudCgpLnRhZygpKSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRh
Z0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAg
ICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnBheWxv
YWQoKSksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJh
bmQpKTsKLSNlbmRpZgorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCByZWNv
dmVyeS5jb25zdGFudCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgRGly
ZWN0QXJndW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkOgpAQCAtNjgzLDEzICs2MDQsMzEgQEAgdm9p
ZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgICAgICB9CiAgICAgfQog
CisgICAgLy8gTmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgc3RhY2sgcG9pbnRlciBhY2NvdW50cyBm
b3IgdGhlIHdvcnN0LWNhc2Ugc3RhY2sgdXNhZ2UgYXQgZXhpdC4gVGhpcworICAgIC8vIGNvdWxk
IHRvYXN0IHNvbWUgc3RhY2sgdGhhdCB0aGUgREZHIHVzZWQuIFdlIG5lZWQgdG8gZG8gaXQgYmVm
b3JlIHN0b3JpbmcgdG8gc3RhY2sgb2Zmc2V0cworICAgIC8vIHVzZWQgYnkgYmFzZWxpbmUuCisg
ICAgY3B1LnNwKCkgPSBjcHUuZnA8dWludDhfdCo+KCkgLSAoY29kZUJsb2NrLT5qaXRDb2RlKCkt
PmRmZ0NvbW1vbigpLT5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0ICogc2l6ZW9mKFJlZ2lz
dGVyKSk7CisKKyAgICAvLyBSZXN0b3JlIHRoZSBERkcgY2FsbGVlIHNhdmVzIGFuZCB0aGVuIHNh
dmUgdGhlIG9uZXMgdGhlIGJhc2VsaW5lIEpJVCB1c2VzLgorICAgIHJlc3RvcmVDYWxsZWVTYXZl
c0Zvcihjb250ZXh0LCBjb2RlQmxvY2spOworICAgIHNhdmVDYWxsZWVTYXZlc0Zvcihjb250ZXh0
LCBiYXNlbGluZUNvZGVCbG9jayk7CisKKyAgICAvLyBUaGUgdGFnIHJlZ2lzdGVycyBhcmUgbmVl
ZGVkIHRvIG1hdGVyaWFsaXplIHJlY292ZXJpZXMgYmVsb3cuCisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICBjcHUuZ3ByKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikgPSBUYWdUeXBlTnVt
YmVyOworICAgIGNwdS5ncHIoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSA9IFRhZ1R5cGVOdW1i
ZXIgfCBUYWdCaXRUeXBlT3RoZXI7CisjZW5kaWYKKworICAgIGlmIChleGl0LmlzRXhjZXB0aW9u
SGFuZGxlcigpKQorICAgICAgICBjb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNh
dmVzQnVmZmVyKGNvbnRleHQpOworCiAgICAgLy8gTm93IHRoYXQgdGhpbmdzIG9uIHRoZSBzdGFj
ayBhcmUgcmVjb3ZlcmVkLCBkbyB0aGUgYXJndW1lbnRzIHJlY292ZXJ5LiBXZSBhc3N1bWUgdGhh
dCBhcmd1bWVudHMKICAgICAvLyByZWNvdmVyaWVzIGRvbid0IHJlY3Vyc2l2ZWx5IHJlZmVyIHRv
IGVhY2ggb3RoZXIuIEJ1dCwgd2UgZG9uJ3QgdHJ5IHRvIGFzc3VtZSB0aGF0IHRoZXkgb25seQog
ICAgIC8vIHJlZmVyIHRvIGNlcnRhaW4gcmFuZ2VzIG9mIGxvY2Fscy4gSGVuY2Ugd2h5IHdlIG5l
ZWQgdG8gZG8gdGhpcyBoZXJlLCBvbmNlIHRoZSBzdGFjayBpcyBzZW5zaWJsZS4KICAgICAvLyBO
b3RlIHRoYXQgd2UgYWxzbyByb3VnaGx5IGFzc3VtZSB0aGF0IHRoZSBhcmd1bWVudHMgbWlnaHQg
c3RpbGwgYmUgbWF0ZXJpYWxpemVkIG91dHNpZGUgb2YgaXRzCiAgICAgLy8gaW5saW5lIGNhbGwg
ZnJhbWUgc2NvcGUgLSBidXQgZm9yIG5vdyB0aGUgREZHIHdvdWxkbid0IGRvIHRoYXQuCiAKLSAg
ICBlbWl0UmVzdG9yZUFyZ3VtZW50cyhqaXQsIG9wZXJhbmRzKTsKKyAgICBlbWl0UmVzdG9yZUFy
Z3VtZW50cyhjb250ZXh0LCBjb2RlQmxvY2ssIG9wZXJhbmRzKTsKIAogICAgIC8vIEFkanVzdCB0
aGUgb2xkIEpJVCdzIGV4ZWN1dGUgY291bnRlci4gU2luY2Ugd2UgYXJlIGV4aXRpbmcgT1NSLCB3
ZSBrbm93CiAgICAgLy8gdGhhdCBhbGwgbmV3IGNhbGxzIGludG8gdGhpcyBjb2RlIHdpbGwgZ28g
dG8gdGhlIG5ldyBKSVQsIHNvIHRoZSBleGVjdXRlCkBAIC03MjcsMjYgKzY2NiwxNjEgQEAgdm9p
ZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgIC8vIGNvdW50ZXIgdG8g
MDsgb3RoZXJ3aXNlIHdlIHNldCB0aGUgY291bnRlciB0bwogICAgIC8vIGNvdW50ZXJWYWx1ZUZv
ck9wdGltaXplQWZ0ZXJXYXJtVXAoKS4KIAotICAgIGhhbmRsZUV4aXRDb3VudHMoaml0LCBleGl0
KTsKKyAgICBpZiAoVU5MSUtFTFkoY29kZUJsb2NrLT51cGRhdGVPU1JFeGl0Q291bnRlckFuZENo
ZWNrSWZOZWVkVG9SZW9wdGltaXplKGV4aXRTdGF0ZSkgPT0gQ29kZUJsb2NrOjpPcHRpbWl6ZUFj
dGlvbjo6UmVvcHRpbWl6ZU5vdykpCisgICAgICAgIHRyaWdnZXJSZW9wdGltaXphdGlvbk5vdyhi
YXNlbGluZUNvZGVCbG9jaywgJmV4aXQpOworCisgICAgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhj
b250ZXh0LCBiYXNlbGluZUNvZGVCbG9jaywgZXhpdCk7CisgICAgYWRqdXN0QW5kSnVtcFRvVGFy
Z2V0KGNvbnRleHQsIHZtLCBjb2RlQmxvY2ssIGJhc2VsaW5lQ29kZUJsb2NrLCBleGl0KTsKK30K
Kworc3RhdGljIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDb250ZXh0JiBjb250ZXh0LCBD
b2RlQmxvY2sqIG91dGVybW9zdEJhc2VsaW5lQ29kZUJsb2NrLCBjb25zdCBPU1JFeGl0QmFzZSYg
ZXhpdCkKK3sKKyAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKKyAgICBGcmFtZSBmcmFtZShj
cHUuZnAoKSwgY29udGV4dC5zdGFjaygpKTsKKworICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3Qg
bGVhdmUgaG9sZXMgb24gdGhlIHN0YWNrIHdoZW4gcGVyZm9ybWluZyBhbiBPU1IgZXhpdAorICAg
IC8vIGluIHByZXNlbmNlIG9mIGlubGluZWQgdGFpbCBjYWxscy4KKyAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NTExCisgICAgQVNTRVJUKG91dGVybW9z
dEJhc2VsaW5lQ29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwor
ICAgIGZyYW1lLnNldE9wZXJhbmQ8Q29kZUJsb2NrKj4oQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
LCBvdXRlcm1vc3RCYXNlbGluZUNvZGVCbG9jayk7CisKKyAgICBjb25zdCBDb2RlT3JpZ2luKiBj
b2RlT3JpZ2luOworICAgIGZvciAoY29kZU9yaWdpbiA9ICZleGl0Lm1fY29kZU9yaWdpbjsgY29k
ZU9yaWdpbiAmJiBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWU7IGNvZGVPcmlnaW4gPSBjb2Rl
T3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUtPmdldENhbGxlclNraXBwaW5nVGFpbENhbGxzKCkpIHsK
KyAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luLT5p
bmxpbmVDYWxsRnJhbWU7CisgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBi
YXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKCpjb2RlT3JpZ2lu
LCBvdXRlcm1vc3RCYXNlbGluZUNvZGVCbG9jayk7CisgICAgICAgIElubGluZUNhbGxGcmFtZTo6
S2luZCB0cnVlQ2FsbGVyQ2FsbEtpbmQ7CisgICAgICAgIENvZGVPcmlnaW4qIHRydWVDYWxsZXIg
PSBpbmxpbmVDYWxsRnJhbWUtPmdldENhbGxlclNraXBwaW5nVGFpbENhbGxzKCZ0cnVlQ2FsbGVy
Q2FsbEtpbmQpOworICAgICAgICB2b2lkKiBjYWxsZXJGcmFtZSA9IGNwdS5mcCgpOworCisgICAg
ICAgIGlmICghdHJ1ZUNhbGxlcikgeworICAgICAgICAgICAgQVNTRVJUKGlubGluZUNhbGxGcmFt
ZS0+aXNUYWlsKCkpOworICAgICAgICAgICAgdm9pZCogcmV0dXJuUEMgPSBmcmFtZS5nZXQ8dm9p
ZCo+KENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSk7CisgICAgICAgICAgICBmcmFtZS5zZXQ8
dm9pZCo+KGlubGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSwgcmV0dXJuUEMpOworICAg
ICAgICAgICAgY2FsbGVyRnJhbWUgPSBmcmFtZS5nZXQ8dm9pZCo+KENhbGxGcmFtZTo6Y2FsbGVy
RnJhbWVPZmZzZXQoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBDb2RlQmxvY2sq
IGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5B
bmRCYXNlbGluZUNvZGVCbG9jaygqdHJ1ZUNhbGxlciwgb3V0ZXJtb3N0QmFzZWxpbmVDb2RlQmxv
Y2spOworICAgICAgICAgICAgdW5zaWduZWQgY2FsbEJ5dGVjb2RlSW5kZXggPSB0cnVlQ2FsbGVy
LT5ieXRlY29kZUluZGV4OworICAgICAgICAgICAgdm9pZCoganVtcFRhcmdldCA9IG51bGxwdHI7
CisKKyAgICAgICAgICAgIHN3aXRjaCAodHJ1ZUNhbGxlckNhbGxLaW5kKSB7CisgICAgICAgICAg
ICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q2FsbDoKKyAgICAgICAgICAgIGNhc2UgSW5saW5lQ2Fs
bEZyYW1lOjpDb25zdHJ1Y3Q6CisgICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q2Fs
bFZhcmFyZ3M6CisgICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q29uc3RydWN0VmFy
YXJnczoKKyAgICAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpUYWlsQ2FsbDoKKyAgICAg
ICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpUYWlsQ2FsbFZhcmFyZ3M6IHsKKyAgICAgICAg
ICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9CisgICAgICAgICAgICAgICAgICAg
IGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5nZXRDYWxsTGlua0luZm9Gb3JCeXRlY29kZUlu
ZGV4KGNhbGxCeXRlY29kZUluZGV4KTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChj
YWxsTGlua0luZm8pOworCisgICAgICAgICAgICAgICAganVtcFRhcmdldCA9IGNhbGxMaW5rSW5m
by0+Y2FsbFJldHVybkxvY2F0aW9uKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KIAotICAgIC8vIFJlaWZ5IGlubGluZWQgY2FsbCBm
cmFtZXMuCisgICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6R2V0dGVyQ2FsbDoKKyAg
ICAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpTZXR0ZXJDYWxsOiB7CisgICAgICAgICAg
ICAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvID0KKyAgICAgICAgICAgICAgICAgICAg
YmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXItPmZpbmRTdHViSW5mbyhDb2RlT3JpZ2luKGNhbGxC
eXRlY29kZUluZGV4KSk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3R1YkluZm8p
OworCisgICAgICAgICAgICAgICAganVtcFRhcmdldCA9IHN0dWJJbmZvLT5kb25lTG9jYXRpb24o
KS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CiAKLSAgICByZWlmeUlubGluZWRDYWxs
RnJhbWVzKGppdCwgZXhpdCk7CisgICAgICAgICAgICBpZiAodHJ1ZUNhbGxlci0+aW5saW5lQ2Fs
bEZyYW1lKQorICAgICAgICAgICAgICAgIGNhbGxlckZyYW1lID0gY3B1LmZwPHVpbnQ4X3QqPigp
ICsgdHJ1ZUNhbGxlci0+aW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAqIHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSk7CiAKLSAgICAvLyBBbmQgZmluaXNoLgotICAgIGFkanVzdEFuZEp1bXBUb1Rh
cmdldCh2bSwgaml0LCBleGl0KTsKKyAgICAgICAgICAgIGZyYW1lLnNldDx2b2lkKj4oaW5saW5l
Q2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpLCBqdW1wVGFyZ2V0KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dm9pZCo+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZz
ZXQgKyBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2ssIGJhc2VsaW5lQ29kZUJsb2NrKTsKKworICAg
ICAgICAvLyBSZXN0b3JlIHRoZSBpbmxpbmUgY2FsbCBmcmFtZSdzIGNhbGxlZSBzYXZlIHJlZ2lz
dGVycy4KKyAgICAgICAgLy8gSWYgdGhpcyBpbmxpbmVkIGZyYW1lIGlzIGEgdGFpbCBjYWxsIHRo
YXQgd2lsbCByZXR1cm4gYmFjayB0byB0aGUgb3JpZ2luYWwgY2FsbGVyLCB3ZSBuZWVkIHRvCisg
ICAgICAgIC8vIGNvcHkgdGhlIHByaW9yIGNvbnRlbnRzIG9mIHRoZSB0YWcgcmVnaXN0ZXJzIGFs
cmVhZHkgc2F2ZWQgZm9yIHRoZSBvdXRlciBmcmFtZSB0byB0aGlzIGZyYW1lLgorICAgICAgICBz
YXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoY29udGV4dCwgYmFzZWxpbmVDb2RlQmxvY2ssIHN0YXRp
Y19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCksICF0
cnVlQ2FsbGVyKTsKKworICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkp
CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kPHVpbnQzMl90PihpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCwgUGF5bG9hZE9mZnNl
dCwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgICAg
IEFTU0VSVChjYWxsZXJGcmFtZSk7CisgICAgICAgIGZyYW1lLnNldDx2b2lkKj4oaW5saW5lQ2Fs
bEZyYW1lLT5jYWxsZXJGcmFtZU9mZnNldCgpLCBjYWxsZXJGcmFtZSk7CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChjb2Rl
T3JpZ2luLT5ieXRlY29kZUluZGV4KS5iaXRzKCk7CisgICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8
dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50LCBUYWdPZmZzZXQsIGxvY2F0aW9uQml0cyk7CisgICAgICAgIGlmICghaW5s
aW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFu
ZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBK
U1ZhbHVlKGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29uc3RhbnQoKSkpOworI2Vsc2UgLy8gVVNF
KEpTVkFMVUU2NCkgLy8gc28gdGhpcyBpcyB0aGUgMzItYml0IHBhcnQKKyAgICAgICAgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uID0gYmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJl
Z2luKCkgKyBjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4OworICAgICAgICB1aW50MzJfdCBsb2Nh
dGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KGluc3RydWN0aW9uKS5iaXRzKCk7CisgICAgICAgIGZy
YW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBUYWdPZmZzZXQsIGxvY2F0aW9uQml0cyk7Cisg
ICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tP
ZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUsIFRhZ09mZnNldCwgc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KEpTVmFsdWU6OkNlbGxUYWcpKTsKKyAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUt
PmlzQ2xvc3VyZUNhbGwpCisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKGlubGluZUNhbGxG
cmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUsIFBheWxvYWRPZmZzZXQs
IGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29uc3RhbnQoKSk7CisjZW5kaWYgLy8gVVNFKEpTVkFM
VUU2NCkgLy8gZW5kaW5nIHRoZSAjZWxzZSBwYXJ0LCBzbyBkaXJlY3RseSBhYm92ZSBpcyB0aGUg
MzItYml0IHBhcnQKKyAgICB9CisKKyAgICAvLyBEb24ndCBuZWVkIHRvIHNldCB0aGUgdG9wbGV2
ZWwgY29kZSBvcmlnaW4gaWYgd2Ugb25seSBkaWQgaW5saW5lIHRhaWwgY2FsbHMKKyAgICBpZiAo
Y29kZU9yaWdpbikgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHVpbnQzMl90IGxvY2F0
aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleCkuYml0cygp
OworI2Vsc2UKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gb3V0ZXJtb3N0QmFz
ZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBjb2RlT3JpZ2luLT5ieXRl
Y29kZUluZGV4OworICAgICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4
KGluc3RydWN0aW9uKS5iaXRzKCk7CisjZW5kaWYKKyAgICAgICAgZnJhbWUuc2V0T3BlcmFuZDx1
aW50MzJfdD4oQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCwgVGFnT2Zmc2V0LCBsb2NhdGlv
bkJpdHMpOworICAgIH0KIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIE9TUkV4aXQ6OmRlYnVnT3Bl
cmF0aW9uUHJpbnRTcGVjdWxhdGlvbkZhaWx1cmUoRXhlY1N0YXRlKiBleGVjLCB2b2lkKiBkZWJ1
Z0luZm9SYXcsIHZvaWQqIHNjcmF0Y2gpCitzdGF0aWMgdm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJn
ZXQoQ29udGV4dCYgY29udGV4dCwgVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUJs
b2NrKiBiYXNlbGluZUNvZGVCbG9jaywgT1NSRXhpdCYgZXhpdCkKIHsKLSAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsK
KyAgICBPU1JFeGl0U3RhdGUqIGV4aXRTdGF0ZSA9IGV4aXQuZXhpdFN0YXRlLmdldCgpOwogCi0g
ICAgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvKiBkZWJ1Z0luZm8gPSBzdGF0aWNfY2FzdDxT
cGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8qPihkZWJ1Z0luZm9SYXcpOwotICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZGVidWdJbmZvLT5jb2RlQmxvY2s7CisgICAgV1RGOjpzdG9yZUxvYWRG
ZW5jZSgpOyAvLyBUaGUgb3B0aW1pemluZyBjb21waWxlciBleHBlY3RzIHRoYXQgdGhlIE9TUiBl
eGl0IG1lY2hhbmlzbSB3aWxsIGV4ZWN1dGUgdGhpcyBmZW5jZS4KKyAgICB2bS5oZWFwLndyaXRl
QmFycmllcihiYXNlbGluZUNvZGVCbG9jayk7CisKKyAgICAvLyBXZSBiYXJyaWVyIGFsbCBpbmxp
bmVkIGZyYW1lcyAtLSBhbmQgbm90IGp1c3QgdGhlIGN1cnJlbnQgaW5saW5lIHN0YWNrIC0tCisg
ICAgLy8gYmVjYXVzZSB3ZSBkb24ndCBrbm93IHdoaWNoIGlubGluZWQgZnVuY3Rpb24gb3ducyB0
aGUgdmFsdWUgcHJvZmlsZSB0aGF0CisgICAgLy8gd2UnbGwgdXBkYXRlIHdoZW4gd2UgZXhpdC4g
SW4gdGhlIGNhc2Ugb2YgImYoKSB7IGEoKTsgYigpOyB9IiwgaWYgYm90aAorICAgIC8vIGEgYW5k
IGIgYXJlIGlubGluZWQsIHdlIG1pZ2h0IGV4aXQgaW5zaWRlIGIgZHVlIHRvIGEgYmFkIHZhbHVl
IGxvYWRlZAorICAgIC8vIGZyb20gYS4KKyAgICAvLyBGSVhNRTogTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZSBzaG91bGQgcmVtZW1iZXIgd2hpY2ggQ29kZUJsb2NrIG93bnMKKyAgICAvLyB0
aGUgdmFsdWUgcHJvZmlsZS4KKyAgICBJbmxpbmVDYWxsRnJhbWVTZXQqIGlubGluZUNhbGxGcmFt
ZXMgPSBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPmlubGluZUNhbGxGcmFtZXMu
Z2V0KCk7CisgICAgaWYgKGlubGluZUNhbGxGcmFtZXMpIHsKKyAgICAgICAgZm9yIChJbmxpbmVD
YWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA6ICppbmxpbmVDYWxsRnJhbWVzKQorICAgICAgICAg
ICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9j
ay5nZXQoKSk7CisgICAgfQorCisgICAgaWYgKGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZSkKKyAgICAgICAgY29udGV4dC5mcCgpID0gY29udGV4dC5mcDx1aW50OF90Kj4oKSArIGV4
aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKiBzaXplb2YoRW5j
b2RlZEpTVmFsdWUpOworCisgICAgdm9pZCoganVtcFRhcmdldCA9IGV4aXRTdGF0ZS0+anVtcFRh
cmdldDsKKyAgICBBU1NFUlQoanVtcFRhcmdldCk7CisKKyAgICBjb250ZXh0LnNwKCkgPSBjb250
ZXh0LmZwPHVpbnQ4X3QqPigpICsgZXhpdFN0YXRlLT5zdGFja1BvaW50ZXJPZmZzZXQ7CisgICAg
aWYgKGV4aXQuaXNFeGNlcHRpb25IYW5kbGVyKCkpIHsKKyAgICAgICAgLy8gU2luY2Ugd2UncmUg
anVtcGluZyB0byBvcF9jYXRjaCwgd2UgbmVlZCB0byBzZXQgY2FsbEZyYW1lRm9yQ2F0Y2guCisg
ICAgICAgIHZtLmNhbGxGcmFtZUZvckNhdGNoID0gY29udGV4dC5mcDxFeGVjU3RhdGUqPigpOwor
ICAgIH0KKworICAgIHZtLnRvcENhbGxGcmFtZSA9IGNvbnRleHQuZnA8RXhlY1N0YXRlKj4oKTsK
KyAgICBjb250ZXh0LnBjKCkgPSBqdW1wVGFyZ2V0OworfQorCitzdGF0aWMgdm9pZCBwcmludE9T
UkV4aXQoQ29udGV4dCYgY29udGV4dCwgdWludDMyX3Qgb3NyRXhpdEluZGV4LCBjb25zdCBPU1JF
eGl0JiBleGl0KQoreworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGNvbnRleHQuZnA8RXhlY1N0YXRl
Kj4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwogICAg
IENvZGVCbG9jayogYWx0ZXJuYXRpdmUgPSBjb2RlQmxvY2stPmFsdGVybmF0aXZlKCk7CisgICAg
RXhpdEtpbmQga2luZCA9IGV4aXQubV9raW5kOworICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
ID0gZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleDsKKwogICAgIGRhdGFMb2coIlNwZWN1
bGF0aW9uIGZhaWx1cmUgaW4gIiwgKmNvZGVCbG9jayk7Ci0gICAgZGF0YUxvZygiIEAgZXhpdCAj
Iiwgdm0tPm9zckV4aXRJbmRleCwgIiAoYmMjIiwgZGVidWdJbmZvLT5ieXRlY29kZU9mZnNldCwg
IiwgIiwgZXhpdEtpbmRUb1N0cmluZyhkZWJ1Z0luZm8tPmtpbmQpLCAiKSB3aXRoICIpOworICAg
IGRhdGFMb2coIiBAIGV4aXQgIyIsIG9zckV4aXRJbmRleCwgIiAoYmMjIiwgYnl0ZWNvZGVPZmZz
ZXQsICIsICIsIGV4aXRLaW5kVG9TdHJpbmcoa2luZCksICIpIHdpdGggIik7CiAgICAgaWYgKGFs
dGVybmF0aXZlKSB7CiAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAiZXhlY3V0ZUNvdW50
ZXIgPSAiLCBhbHRlcm5hdGl2ZS0+aml0RXhlY3V0ZUNvdW50ZXIoKSwKQEAgLTc1NiwyMSArODMw
LDE4IEBAIHZvaWQgSklUX09QRVJBVElPTiBPU1JFeGl0OjpkZWJ1Z09wZXJhdGkKICAgICAgICAg
ZGF0YUxvZygibm8gYWx0ZXJuYXRpdmUgY29kZSBibG9jayAoaS5lLiB3ZSd2ZSBiZWVuIGpldHRp
c29uZWQpIik7CiAgICAgZGF0YUxvZygiLCBvc3JFeGl0Q291bnRlciA9ICIsIGNvZGVCbG9jay0+
b3NyRXhpdENvdW50ZXIoKSwgIlxuIik7CiAgICAgZGF0YUxvZygiICAgIEdQUnMgYXQgdGltZSBv
ZiBleGl0OiIpOwotICAgIGNoYXIqIHNjcmF0Y2hQb2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+
KHNjcmF0Y2gpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHUFJJbmZvOjpudW1iZXJP
ZlJlZ2lzdGVyczsgKytpKSB7CiAgICAgICAgIEdQUlJlZyBncHIgPSBHUFJJbmZvOjp0b1JlZ2lz
dGVyKGkpOwotICAgICAgICBkYXRhTG9nKCIgIiwgR1BSSW5mbzo6ZGVidWdOYW1lKGdwciksICI6
IiwgUmF3UG9pbnRlcigqcmVpbnRlcnByZXRfY2FzdF9wdHI8dm9pZCoqPihzY3JhdGNoUG9pbnRl
cikpKTsKLSAgICAgICAgc2NyYXRjaFBvaW50ZXIgKz0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsK
KyAgICAgICAgZGF0YUxvZygiICIsIGNvbnRleHQuZ3ByTmFtZShncHIpLCAiOiIsIFJhd1BvaW50
ZXIoY29udGV4dC5ncHI8dm9pZCo+KGdwcikpKTsKICAgICB9CiAgICAgZGF0YUxvZygiXG4iKTsK
ICAgICBkYXRhTG9nKCIgICAgRlBScyBhdCB0aW1lIG9mIGV4aXQ6Iik7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKICAgICAg
ICAgRlBSUmVnIGZwciA9IEZQUkluZm86OnRvUmVnaXN0ZXIoaSk7Ci0gICAgICAgIGRhdGFMb2co
IiAiLCBGUFJJbmZvOjpkZWJ1Z05hbWUoZnByKSwgIjoiKTsKLSAgICAgICAgdWludDY0X3QgYml0
cyA9ICpyZWludGVycHJldF9jYXN0X3B0cjx1aW50NjRfdCo+KHNjcmF0Y2hQb2ludGVyKTsKLSAg
ICAgICAgZG91YmxlIHZhbHVlID0gKnJlaW50ZXJwcmV0X2Nhc3RfcHRyPGRvdWJsZSo+KHNjcmF0
Y2hQb2ludGVyKTsKKyAgICAgICAgZGF0YUxvZygiICIsIGNvbnRleHQuZnByTmFtZShmcHIpLCAi
OiIpOworICAgICAgICB1aW50NjRfdCBiaXRzID0gY29udGV4dC5mcHI8dWludDY0X3Q+KGZwcik7
CisgICAgICAgIGRvdWJsZSB2YWx1ZSA9IGNvbnRleHQuZnByKGZwcik7CiAgICAgICAgIGRhdGFM
b2dGKCIlbGx4OiVsZiIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oYml0cyksIHZhbHVlKTsKLSAg
ICAgICAgc2NyYXRjaFBvaW50ZXIgKz0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKICAgICB9CiAg
ICAgZGF0YUxvZygiXG4iKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdC5oCShyZXZpc2lvbiAyMjE2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDE3IEBACiAjaW5jbHVkZSAi
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCiAj
aW5jbHVkZSAiVmFsdWVSZWNvdmVyeS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLWNsYXNzIENDYWxsSGVscGVyczsKK25hbWVzcGFjZSBQcm9iZSB7Citj
bGFzcyBDb250ZXh0OworfSAvLyBuYW1lc3BhY2UgUHJvYmUKKworbmFtZXNwYWNlIFByb2ZpbGVy
IHsKK2NsYXNzIE9TUkV4aXQ7Cit9IC8vIG5hbWVzcGFjZSBQcm9maWxlcgogCiBuYW1lc3BhY2Ug
REZHIHsKIApAQCAtOTEsNiArOTgsMzIgQEAgcHJpdmF0ZToKICAgICBTcGVjdWxhdGlvblJlY292
ZXJ5VHlwZSBtX3R5cGU7CiB9OwogCitzdHJ1Y3QgT1NSRXhpdFN0YXRlIDogUmVmQ291bnRlZDxP
U1JFeGl0U3RhdGU+IHsKKyAgICBPU1JFeGl0U3RhdGUoT1NSRXhpdEJhc2UmIGV4aXQsIENvZGVC
bG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrLCBPcGVyYW5kczxW
YWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMsIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5LCBw
dHJkaWZmX3Qgc3RhY2tQb2ludGVyT2Zmc2V0LCBpbnQzMl90IGFjdGl2ZVRocmVzaG9sZCwgZG91
YmxlIG1lbW9yeVVzYWdlQWRqdXN0ZWRUaHJlc2hvbGQsIHZvaWQqIGp1bXBUYXJnZXQpCisgICAg
ICAgIDogZXhpdChleGl0KQorICAgICAgICAsIGNvZGVCbG9jayhjb2RlQmxvY2spCisgICAgICAg
ICwgYmFzZWxpbmVDb2RlQmxvY2soYmFzZWxpbmVDb2RlQmxvY2spCisgICAgICAgICwgb3BlcmFu
ZHMob3BlcmFuZHMpCisgICAgICAgICwgcmVjb3ZlcnkocmVjb3ZlcnkpCisgICAgICAgICwgc3Rh
Y2tQb2ludGVyT2Zmc2V0KHN0YWNrUG9pbnRlck9mZnNldCkKKyAgICAgICAgLCBhY3RpdmVUaHJl
c2hvbGQoYWN0aXZlVGhyZXNob2xkKQorICAgICAgICAsIG1lbW9yeVVzYWdlQWRqdXN0ZWRUaHJl
c2hvbGQobWVtb3J5VXNhZ2VBZGp1c3RlZFRocmVzaG9sZCkKKyAgICAgICAgLCBqdW1wVGFyZ2V0
KGp1bXBUYXJnZXQpCisgICAgeyB9CisKKyAgICBPU1JFeGl0QmFzZSYgZXhpdDsKKyAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jazsKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrOworICAg
IE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+IG9wZXJhbmRzOworICAgIFNwZWN1bGF0aW9uUmVjb3Zl
cnkqIHJlY292ZXJ5OworICAgIHB0cmRpZmZfdCBzdGFja1BvaW50ZXJPZmZzZXQ7CisgICAgdWlu
dDMyX3QgYWN0aXZlVGhyZXNob2xkOworICAgIGRvdWJsZSBtZW1vcnlVc2FnZUFkanVzdGVkVGhy
ZXNob2xkOworICAgIHZvaWQqIGp1bXBUYXJnZXQ7CisKKyAgICBQcm9maWxlcjo6T1NSRXhpdCog
cHJvZmlsZXJFeGl0IHsgbnVsbHB0ciB9OworfTsKKwogLy8gPT09IE9TUkV4aXQgPT09CiAvLwog
Ly8gVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVzIGhvdyB0byBleGl0IHRoZSBzcGVjdWxhdGl2ZSBw
YXRoIGJ5CkBAIC05OCwzMiArMTMxLDIwIEBAIHByaXZhdGU6CiBzdHJ1Y3QgT1NSRXhpdCA6IHB1
YmxpYyBPU1JFeGl0QmFzZSB7CiAgICAgT1NSRXhpdChFeGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwg
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSwgU3BlY3VsYXRpdmVKSVQqLCB1bnNpZ25lZCBz
dHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCA9IFVJTlRfTUFYKTsKIAotICAgIHN0
YXRpYyB2b2lkIEpJVF9PUEVSQVRJT04gY29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKikgV1RGX0lO
VEVSTkFMOworICAgIHN0YXRpYyB2b2lkIGV4ZWN1dGVPU1JFeGl0KFByb2JlOjpDb250ZXh0Jik7
CiAKLSAgICB1bnNpZ25lZCBtX3BhdGNoYWJsZUNvZGVPZmZzZXQgeyAwIH07Ci0gICAgCi0gICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG1fY29kZTsKKyAgICBSZWZQdHI8T1NSRXhpdFN0YXRlPiBl
eGl0U3RhdGU7CiAgICAgCiAgICAgSlNWYWx1ZVNvdXJjZSBtX2pzVmFsdWVTb3VyY2U7CiAgICAg
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBtX3ZhbHVlUHJvZmlsZTsKICAgICAKICAgICB1
bnNpZ25lZCBtX3JlY292ZXJ5SW5kZXg7CiAKLSAgICB2b2lkIHNldFBhdGNoYWJsZUNvZGVPZmZz
ZXQoTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXApOwotICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIGdldFBhdGNoYWJsZUNvZGVPZmZzZXRBc0p1bXAoKSBjb25zdDsKLSAgICBDb2RlTG9jYXRp
b25KdW1wIGNvZGVMb2NhdGlvbkZvclJlcGF0Y2goQ29kZUJsb2NrKikgY29uc3Q7Ci0gICAgdm9p
ZCBjb3JyZWN0SnVtcChMaW5rQnVmZmVyJik7Ci0KICAgICB1bnNpZ25lZCBtX3N0cmVhbUluZGV4
OwogICAgIHZvaWQgY29uc2lkZXJBZGRpbmdBc0ZyZXF1ZW50RXhpdFNpdGUoQ29kZUJsb2NrKiBw
cm9maWxlZENvZGVCbG9jaykKICAgICB7CiAgICAgICAgIE9TUkV4aXRCYXNlOjpjb25zaWRlckFk
ZGluZ0FzRnJlcXVlbnRFeGl0U2l0ZShwcm9maWxlZENvZGVCbG9jaywgRXhpdEZyb21ERkcpOwog
ICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgdm9pZCBjb21waWxlRXhpdChDQ2FsbEhlbHBl
cnMmLCBWTSYsIGNvbnN0IE9TUkV4aXQmLCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYs
IFNwZWN1bGF0aW9uUmVjb3ZlcnkqKTsKLSAgICBzdGF0aWMgdm9pZCBlbWl0UmVzdG9yZUFyZ3Vt
ZW50cyhDQ2FsbEhlbHBlcnMmLCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYpOwotICAg
IHN0YXRpYyB2b2lkIEpJVF9PUEVSQVRJT04gZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9u
RmFpbHVyZShFeGVjU3RhdGUqLCB2b2lkKiwgdm9pZCopIFdURl9JTlRFUk5BTDsKIH07CiAKIHN0
cnVjdCBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8gewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAkocmV2
aXNpb24gMjIxNjg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29t
cGlsZXJDb21tb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVu
IHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgog
dm9pZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFz
ZSYgZXhpdCkKIHsKICAgICBpZiAoIWV4aXRLaW5kTWF5SmV0dGlzb24oZXhpdC5tX2tpbmQpKSB7
CkBAIC0xNDMsNiArMTQ0LDcgQEAgdm9pZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYg
aml0LAogICAgIGRvbmVBZGp1c3RpbmcubGluaygmaml0KTsKIH0KIAorLy8gRklYTUU6IHJlbW92
ZSB0aGlzIHdoZW4gd2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzUxNDUuCiB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3Qg
bGVhdmUgaG9sZXMgb24gdGhlIHN0YWNrIHdoZW4gcGVyZm9ybWluZyBhbiBPU1IgZXhpdApAQCAt
MjUyLDYgKzI1NCw3IEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMK
ICAgICB9CiB9CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogc3RhdGljIHZvaWQgb3NyV3Jp
dGVCYXJyaWVyKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgb3duZXIsIEdQUlJlZyBzY3JhdGNo
KQogewogICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVu
ID0gaml0LmJhcnJpZXJCcmFuY2hXaXRob3V0RmVuY2Uob3duZXIpOwpAQCAtMjcyLDYgKzI3NSw3
IEBAIHN0YXRpYyB2b2lkIG9zcldyaXRlQmFycmllcihDQ2FsbEhlbHBlcnMKICAgICBvd25lcklz
UmVtZW1iZXJlZE9ySW5FZGVuLmxpbmsoJmppdCk7CiB9CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhp
cyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1
MTQ1Lgogdm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiB7CiAgICAgaml0Lm1lbW9yeUZlbmNlKCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyQ29tbW9uLmgJKHJldmlzaW9uIDIyMTY4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNiAr
NDAsNyBAQCB2b2lkIGhhbmRsZUV4aXRDb3VudHMoQ0NhbGxIZWxwZXJzJiwgY29uCiB2b2lkIHJl
aWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsK
IHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KFZNJiwgQ0NhbGxIZWxwZXJzJiwgY29uc3QgT1NS
RXhpdEJhc2UmKTsKIAorLy8gRklYTUU6IFRoaXMgd29uJ3QgYmUgbmVlZGVkIG9uY2Ugd2UgZml4
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgSklUQ29kZVR5cGU+CiB2b2lkIGFkanVzdEZyYW1lQW5kU3RhY2tJbk9TUkV4
aXRDb21waWxlclRodW5rKE1hY3JvQXNzZW1ibGVyJiBqaXQsIFZNKiB2bSwgSklUQ29kZTo6SklU
VHlwZSBqaXRUeXBlKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMjE2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzU1LDYyICsxMzU1LDYg
QEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUNsbwogICAgICAgICBleGVj
LCBzdHJ1Y3R1cmUsIGFyZ3VtZW50U3RhcnQsIGxlbmd0aCwgY2FsbGVlKTsKIH0KIAotSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4aXQo
RXhlY1N0YXRlKiBleGVjLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgSlNGdW5j
dGlvbiogY2FsbGVlLCBpbnQzMl90IGFyZ3VtZW50Q291bnQpCi17Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdGFyZ2V0KCZ2bSwgZXhlYyk7Ci0g
ICAgCi0gICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOwotICAgIAotICAgIENv
ZGVCbG9jayogY29kZUJsb2NrOwotICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgIGNv
ZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1lKGlubGluZUNhbGxG
cmFtZSk7Ci0gICAgZWxzZQotICAgICAgICBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsK
LSAgICAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBhcmd1bWVudENvdW50IC0gMTsKLSAgICB1bnNp
Z25lZCBjYXBhY2l0eSA9IHN0ZDo6bWF4KGxlbmd0aCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gMSkpOwotICAgIERpcmVjdEFyZ3VtZW50cyogcmVz
dWx0ID0gRGlyZWN0QXJndW1lbnRzOjpjcmVhdGUoCi0gICAgICAgIHZtLCBjb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpLT5kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUoKSwgbGVuZ3RoLCBjYXBhY2l0
eSk7Ci0gICAgCi0gICAgcmVzdWx0LT5jYWxsZWUoKS5zZXQodm0sIHJlc3VsdCwgY2FsbGVlKTsK
LSAgICAKLSAgICBSZWdpc3RlciogYXJndW1lbnRzID0KLSAgICAgICAgZXhlYy0+cmVnaXN0ZXJz
KCkgKyAoaW5saW5lQ2FsbEZyYW1lID8gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCA6IDAp
ICsKLSAgICAgICAgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldCgwKTsKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSBsZW5ndGg7IGktLTspCi0gICAgICAgIHJlc3VsdC0+c2V0SW5kZXhRdWlja2x5KHZt
LCBpLCBhcmd1bWVudHNbaV0uanNWYWx1ZSgpKTsKLSAgICAKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1lbnRz
RHVyaW5nRXhpdChFeGVjU3RhdGUqIGV4ZWMsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZy
YW1lLCBKU0Z1bmN0aW9uKiBjYWxsZWUsIGludDMyX3QgYXJndW1lbnRDb3VudCkKLXsKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0YXJnZXQoJnZt
LCBleGVjKTsKLSAgICAKLSAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0uaGVhcCk7Ci0g
ICAgCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2s7Ci0gICAgaWYgKGlubGluZUNhbGxGcmFtZSkK
LSAgICAgICAgY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUo
aW5saW5lQ2FsbEZyYW1lKTsKLSAgICBlbHNlCi0gICAgICAgIGNvZGVCbG9jayA9IGV4ZWMtPmNv
ZGVCbG9jaygpOwotICAgIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFyZ3VtZW50Q291bnQgLSAx
OwotICAgIENsb25lZEFyZ3VtZW50cyogcmVzdWx0ID0gQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGVF
bXB0eSgKLSAgICAgICAgdm0sIGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmNsb25lZEFyZ3Vt
ZW50c1N0cnVjdHVyZSgpLCBjYWxsZWUsIGxlbmd0aCk7Ci0gICAgCi0gICAgUmVnaXN0ZXIqIGFy
Z3VtZW50cyA9Ci0gICAgICAgIGV4ZWMtPnJlZ2lzdGVycygpICsgKGlubGluZUNhbGxGcmFtZSA/
IGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgOiAwKSArCi0gICAgICAgIENhbGxGcmFtZTo6
YXJndW1lbnRPZmZzZXQoMCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KQot
ICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIGFyZ3VtZW50c1tpXS5qc1Zh
bHVlKCkpOwotCi0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVJlc3QoRXhlY1N0YXRlKiBleGVjLCBSZWdpc3RlciogYXJn
dW1lbnRTdGFydCwgdW5zaWduZWQgbnVtYmVyT2ZQYXJhbXNUb1NraXAsIHVuc2lnbmVkIGFycmF5
U2l6ZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMjE2ODcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5
LDkgKzEzOSw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHIKIHNp
emVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcShFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZf
SU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlv
bkRpcmVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqLCBF
bmNvZGVkSlNWYWx1ZSk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlRGly
ZWN0QXJndW1lbnRzKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QgbGVuZ3RoLCBpbnQz
Ml90IG1pbkNhcGFjaXR5KTsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVE
aXJlY3RBcmd1bWVudHNEdXJpbmdFeGl0KEV4ZWNTdGF0ZSosIElubGluZUNhbGxGcmFtZSosIEpT
RnVuY3Rpb24qLCBpbnQzMl90IGFyZ3VtZW50Q291bnQpOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cyhFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBS
ZWdpc3RlciogYXJndW1lbnRTdGFydCwgaW50MzJfdCBsZW5ndGgsIEpTRnVuY3Rpb24qIGNhbGxl
ZSwgSlNMZXhpY2FsRW52aXJvbm1lbnQqKTsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25DcmVhdGVDbG9uZWRBcmd1bWVudHNEdXJpbmdFeGl0KEV4ZWNTdGF0ZSosIElubGluZUNhbGxG
cmFtZSosIEpTRnVuY3Rpb24qLCBpbnQzMl90IGFyZ3VtZW50Q291bnQpOwogSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50cyhFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmUqLCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgaW50MzJfdCBsZW5ndGgsIEpTRnVuY3Rp
b24qIGNhbGxlZSk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlUmVzdChF
eGVjU3RhdGUqLCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdW5zaWduZWQgbnVtYmVyT2ZBcmd1
bWVudHNUb1NraXAsIHVuc2lnbmVkIGFycmF5U2l6ZSk7CiBkb3VibGUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25GTW9kT25JbnRzKGludDMyX3QsIGludDMyX3QpIFdURl9JTlRFUk5BTDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAJKHJldmlzaW9uIDIyMTY4NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNjQgKzQwLDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
IAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3Io
Vk0qIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRUaHVua0dlbmVyYXRvcihWTSog
dm0pCiB7CiAgICAgTWFjcm9Bc3NlbWJsZXIgaml0OwotCi0gICAgLy8gVGhpcyBuZWVkcyB0byBo
YXBwZW4gYmVmb3JlIHdlIHVzZSB0aGUgc2NyYXRjaCBidWZmZXIgYmVjYXVzZSB0aGlzIGZ1bmN0
aW9uIGFsc28gdXNlcyB0aGUgc2NyYXRjaCBidWZmZXIuCi0gICAgYWRqdXN0RnJhbWVBbmRTdGFj
a0luT1NSRXhpdENvbXBpbGVyVGh1bms8REZHOjpKSVRDb2RlPihqaXQsIHZtLCBKSVRDb2RlOjpE
RkdKSVQpOwotICAgIAotICAgIHNpemVfdCBzY3JhdGNoU2l6ZSA9IHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkgKiAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjpudW1iZXJPZlJl
Z2lzdGVycyk7Ci0gICAgU2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1ZmZlciA9IHZtLT5zY3JhdGNo
QnVmZmVyRm9yU2l6ZShzY3JhdGNoU2l6ZSk7Ci0gICAgRW5jb2RlZEpTVmFsdWUqIGJ1ZmZlciA9
IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigp
KTsKLSAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnM7ICsraSkgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGppdC5zdG9yZTY0
KEdQUkluZm86OnRvUmVnaXN0ZXIoaSksIGJ1ZmZlciArIGkpOwotI2Vsc2UKLSAgICAgICAgaml0
LnN0b3JlMzIoR1BSSW5mbzo6dG9SZWdpc3RlcihpKSwgYnVmZmVyICsgaSk7Ci0jZW5kaWYKLSAg
ICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0
ZXJzOyArK2kpIHsKLSAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoYnVmZmVyICsgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSwgR1BSSW5mbzo6cmVn
VDApOwotICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6dG9SZWdpc3RlcihpKSwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApKTsKLSAgICB9Ci0gICAgCi0gICAg
Ly8gVGVsbCBHQyBtYXJrIHBoYXNlIGhvdyBtdWNoIG9mIHRoZSBzY3JhdGNoIGJ1ZmZlciBpcyBh
Y3RpdmUgZHVyaW5nIGNhbGwuCi0gICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZvOjpy
ZWdUMCk7Ci0gICAgaml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHNj
cmF0Y2hTaXplKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApKTsKLQot
ICAgIC8vIFNldCB1cCBvbmUgYXJndW1lbnQuCi0jaWYgQ1BVKFg4NikKLSAgICBqaXQucG9rZShH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgMCk7Ci0jZWxzZQotICAgIGppdC5tb3ZlKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotI2VuZGlmCi0K
LSAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBmdW5jdGlvbkNhbGwgPSBqaXQuY2FsbCgpOwotCi0g
ICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+
YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgaml0LnN0b3Jl
UHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDApLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhHUFJJbmZvOjpyZWdUMCkpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSAgICAgICAgaml0Lm1vdmUoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoYnVmZmVyICsgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3Rl
cnMgKyBpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCksIEZQUkluZm86OnRvUmVnaXN0ZXIoaSkp
OwotICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnM7ICsraSkgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGppdC5sb2FkNjQo
YnVmZmVyICsgaSwgR1BSSW5mbzo6dG9SZWdpc3RlcihpKSk7Ci0jZWxzZQotICAgICAgICBqaXQu
bG9hZDMyKGJ1ZmZlciArIGksIEdQUkluZm86OnRvUmVnaXN0ZXIoaSkpOwotI2VuZGlmCi0gICAg
fQotICAgIAotICAgIGppdC5qdW1wKE1hY3JvQXNzZW1ibGVyOjpBYnNvbHV0ZUFkZHJlc3MoJnZt
LT5vc3JFeGl0SnVtcERlc3RpbmF0aW9uKSk7Ci0gICAgCisgICAgaml0LnByb2JlKE9TUkV4aXQ6
OmV4ZWN1dGVPU1JFeGl0LCB2bSk7CiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdM
T0JBTF9USFVOS19JRCk7Ci0gICAgCi0gICAgcGF0Y2hCdWZmZXIubGluayhmdW5jdGlvbkNhbGws
IE9TUkV4aXQ6OmNvbXBpbGVPU1JFeGl0KTsKLSAgICAKLSAgICByZXR1cm4gRklOQUxJWkVfQ09E
RShwYXRjaEJ1ZmZlciwgKCJERkcgT1NSIGV4aXQgZ2VuZXJhdGlvbiB0aHVuayIpKTsKKyAgICBy
ZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJERkcgT1NSIGV4aXQgdGh1bmsiKSk7
CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2
bSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuaAkocmV2aXNpb24gMjIx
Njg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFZNOwogCiBuYW1lc3BhY2UgREZHIHsKIAot
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoVk0q
KTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0VGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDIyMTY4NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiAr
NTAsNyBAQCBFeGVjdXRhYmxlQmFzZSogQXNzZW1ibHlIZWxwZXJzOjpleGVjdXRhCiAgICAgcmV0
dXJuIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCk7CiB9CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1LgogVmVjdG9yPEJ5dGVj
b2RlQW5kTWFjaGluZU9mZnNldD4mIEFzc2VtYmx5SGVscGVyczo6ZGVjb2RlZENvZGVNYXBGb3Io
Q29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgQVNTRVJUKGNvZGVCbG9jayA9PSBjb2RlQmxv
Y2stPmJhc2VsaW5lVmVyc2lvbigpKTsKQEAgLTgyMCw2MSArODIxLDYgQEAgYm9vbCBBc3NlbWJs
eUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHROZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VN
QkxZKQogCi12b2lkIEFzc2VtYmx5SGVscGVyczo6ZGVidWdDYWxsKFZNJiB2bSwgVl9EZWJ1Z09w
ZXJhdGlvbl9FUFAgZnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50KQotewotICAgIHNpemVfdCBzY3Jh
dGNoU2l6ZSA9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdp
c3RlcnMgKyBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyk7Ci0gICAgU2NyYXRjaEJ1ZmZlciog
c2NyYXRjaEJ1ZmZlciA9IHZtLnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNjcmF0Y2hTaXplKTsKLSAg
ICBFbmNvZGVkSlNWYWx1ZSogYnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihz
Y3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSNpZiBVU0UoSlNWQUxVRTY0
KQotICAgICAgICBzdG9yZTY0KEdQUkluZm86OnRvUmVnaXN0ZXIoaSksIGJ1ZmZlciArIGkpOwot
I2Vsc2UKLSAgICAgICAgc3RvcmUzMihHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBidWZmZXIgKyBp
KTsKLSNlbmRpZgotICAgIH0KLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZv
OjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihi
dWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZvOjpyZWdUMCk7
Ci0gICAgICAgIHN0b3JlRG91YmxlKEZQUkluZm86OnRvUmVnaXN0ZXIoaSksIEdQUkluZm86OnJl
Z1QwKTsKLSAgICB9Ci0KLSAgICAvLyBUZWxsIEdDIG1hcmsgcGhhc2UgaG93IG11Y2ggb2YgdGhl
IHNjcmF0Y2ggYnVmZmVyIGlzIGFjdGl2ZSBkdXJpbmcgY2FsbC4KLSAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZvOjpy
ZWdUMCk7Ci0gICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihzY3JhdGNoU2l6ZSksIEdQUkluZm86
OnJlZ1QwKTsKLQotI2lmIENQVShYODZfNjQpIHx8IENQVShBUk0pIHx8IENQVShBUk02NCkgfHwg
Q1BVKE1JUFMpCi0gICAgbW92ZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMik7Ci0gICAgbW92ZShUcnVzdGVkSW1tUHRyKGFyZ3VtZW50KSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKTsKLSAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOwotICAgIEdQUlJlZyBzY3JhdGNoID0gc2VsZWN0U2NyYXRjaEdQUihH
UFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIyKTsKLSNlbGlmIENQVShYODYpCi0gICAgcG9rZShHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgMCk7Ci0gICAgcG9rZShUcnVzdGVkSW1tUHRyKGFyZ3VtZW50KSwgMSk7Ci0gICAg
cG9rZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciksIDIpOwotICAgIEdQUlJlZyBzY3JhdGNoID0gR1BS
SW5mbzo6cmVnVDA7Ci0jZWxzZQotI2Vycm9yICJKSVQgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBs
YXRmb3JtLiIKLSNlbmRpZgotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0
PHZvaWQqPihmdW5jdGlvbikpLCBzY3JhdGNoKTsKLSAgICBjYWxsKHNjcmF0Y2gpOwotCi0gICAg
bW92ZShUcnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFkZHJlc3NPZkFjdGl2ZUxlbmd0aCgp
KSwgR1BSSW5mbzo6cmVnVDApOwotICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEdQUklu
Zm86OnJlZ1QwKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1i
ZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihidWZmZXIg
KyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAg
ICAgIGxvYWREb3VibGUoR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OnRvUmVnaXN0ZXIoaSkpOwot
ICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdp
c3RlcnM7ICsraSkgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGxvYWQ2NChidWZmZXIg
KyBpLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKLSNlbHNlCi0gICAgICAgIGxvYWQzMihidWZm
ZXIgKyBpLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKLSNlbmRpZgotICAgIH0KLX0KLQogdm9p
ZCBBc3NlbWJseUhlbHBlcnM6OmNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2
ZXNCdWZmZXJJbXBsKEdQUlJlZyBjYWxsZWVTYXZlc0J1ZmZlcikKIHsKICNpZiBOVU1CRVJfT0Zf
Q0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMjIxNjg3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtOTkyLDkg
Kzk5Miw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEdQUkluZm86OnJlZ1Q1OwogICAgIH0K
IAotICAgIC8vIEFkZCBhIGRlYnVnIGNhbGwuIFRoaXMgY2FsbCBoYXMgbm8gZWZmZWN0IG9uIEpJ
VCBjb2RlIGV4ZWN1dGlvbiBzdGF0ZS4KLSAgICB2b2lkIGRlYnVnQ2FsbChWTSYsIFZfRGVidWdP
cGVyYXRpb25fRVBQIGZ1bmN0aW9uLCB2b2lkKiBhcmd1bWVudCk7Ci0KICAgICAvLyBUaGVzZSBt
ZXRob2RzIEpJVCBnZW5lcmF0ZSBkeW5hbWljLCBkZWJ1Zy1vbmx5IGNoZWNrcyAtIGFraW4gdG8g
QVNTRVJUcy4KICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgdm9pZCBqaXRBc3NlcnRJc0ludDMy
KEdQUlJlZyk7CkBAIC0xNDY1LDYgKzE0NjIsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBl
bWl0RHVtYlZpcnR1YWxDYWxsKFZNJiwgQ2FsbExpbmtJbmZvKik7CiAgICAgCisgICAgLy8gRklY
TUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzUxNDUuCiAgICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4m
IGRlY29kZWRDb2RlTWFwRm9yKENvZGVCbG9jayopOwogCiAgICAgdm9pZCBtYWtlU3BhY2VPblN0
YWNrRm9yQ0NhbGwoKTsKQEAgLTE2NTYsNiArMTY1NCw3IEBAIHByb3RlY3RlZDoKICAgICBDb2Rl
QmxvY2sqIG1fY29kZUJsb2NrOwogICAgIENvZGVCbG9jayogbV9iYXNlbGluZUNvZGVCbG9jazsK
IAorICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1LgogICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwg
VmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4+IG1fZGVjb2RlZENvZGVNYXBzOwogfTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShy
ZXZpc2lvbiAyMjE2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzA3LDYgKzIzMDcsNyBAQCBjaGFyKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblJlYWxsb2NhdGVCCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KHJlc3VsdCk7CiB9CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk9TUldyaXRlQmFycmllcihFeGVjU3RhdGUqIGV4ZWMsIEpTQ2Vs
bCogY2VsbCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMjE2ODcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAt
NDQ2LDYgKzQ0Niw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZUIK
IGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZUJ1dHRlcmZseVRvR3Jvd1By
b3BlcnR5U3RvcmFnZShFeGVjU3RhdGUqLCBKU09iamVjdCosIHNpemVfdCBuZXdTaXplKSBXVEZf
SU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93
UGF0aChFeGVjU3RhdGUqLCBKU0NlbGwqKTsKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdl
IGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9TUldyaXRlQmFycmllcihFeGVjU3RhdGUqLCBKU0Nl
bGwqKTsKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enooRXhlY1N0
YXRlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPU1JF
eGl0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2Zp
bGVyT1NSRXhpdC5oCShyZXZpc2lvbiAyMjE2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNyArNDMsOCBAQCBw
dWJsaWM6CiAgICAgCiAgICAgdWludDY0X3QqIGNvdW50ZXJBZGRyZXNzKCkgeyByZXR1cm4gJm1f
Y291bnRlcjsgfQogICAgIHVpbnQ2NF90IGNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudGVy
OyB9Ci0gICAgCisgICAgdm9pZCBpbmNDb3VudCgpIHsgbV9jb3VudGVyKys7IH0KKwogICAgIEpT
VmFsdWUgdG9KUyhFeGVjU3RhdGUqKSBjb25zdDsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlzaW9uIDIyMTY4NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkg
UG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2Vs
bHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIw
MDcsIDIwMDgsIDIwMDksIDIwMTIsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNDQsMTIgKzM0NCw5IEBAIHB1YmxpYzoK
ICAgICB1aW50MzJfdCB0YWcoKSBjb25zdDsKICAgICBpbnQzMl90IHBheWxvYWQoKSBjb25zdDsK
IAotI2lmICFFTkFCTEUoSklUKQotICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBieSB0
aGUgTExJbnQgQyBMb29wIGludGVycHJldGVyIHdobyBuZWVkcwotICAgIC8vIHN5bnRoZXNpemUg
SlNWYWx1ZSBmcm9tIGl0cyAicmVnaXN0ZXIicyBob2xkaW5nIHRhZyBhbmQgcGF5bG9hZAotICAg
IC8vIHZhbHVlcy4KKyAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgdGhlIExMSW50
IEMgTG9vcCBpbnRlcnByZXRlciBhbmQgT1NSRXhpdCBjb2RlIHdobyBuZWVkcworICAgIC8vIHN5
bnRoZXNpemUgSlNWYWx1ZSBmcm9tIGl0cyAicmVnaXN0ZXIicyBob2xkaW5nIHRhZyBhbmQgcGF5
bG9hZCB2YWx1ZXMuCiAgICAgZXhwbGljaXQgSlNWYWx1ZShpbnQzMl90IHRhZywgaW50MzJfdCBw
YXlsb2FkKTsKLSNlbmRpZgogCiAjZWxpZiBVU0UoSlNWQUxVRTY0KQogICAgIC8qCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJ
KHJldmlzaW9uIDIyMTY4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0MCw3ICszNDAsNyBAQCBpbmxpbmUg
SlNWYWx1ZTo6SlNWYWx1ZShpbnQgaSkKICAgICB1LmFzQml0cy5wYXlsb2FkID0gaTsKIH0KIAot
I2lmICFFTkFCTEUoSklUKQorI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiBpbmxpbmUgSlNWYWx1ZTo6
SlNWYWx1ZShpbnQzMl90IHRhZywgaW50MzJfdCBwYXlsb2FkKQogewogICAgIHUuYXNCaXRzLnRh
ZyA9IHRhZzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjIx
Njg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5
KQpAQCAtNTcxLDcgKzU3MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkKiB0YXJnZXRNYWNoaW5lUENG
b3JUaHJvdzsKICAgICBJbnN0cnVjdGlvbiogdGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93Owog
ICAgIHVpbnQzMl90IG9zckV4aXRJbmRleDsKLSAgICB2b2lkKiBvc3JFeGl0SnVtcERlc3RpbmF0
aW9uOwogICAgIGJvb2wgaXNFeGVjdXRpbmdJblJlZ0V4cEpJVCB7IGZhbHNlIH07CiAKICAgICAv
LyBUaGUgdGhyZWFkaW5nIHByb3RvY29sIGhlcmUgaXMgYXMgZm9sbG93czoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320151</attachid>
            <date>2017-09-07 11:54:44 -0700</date>
            <delta_ts>2017-09-07 15:21:43 -0700</delta_ts>
            <desc>proposed patch (removed some debugging code).</desc>
            <filename>bug-175144.patch</filename>
            <type>text/plain</type>
            <size>125985</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIxNzA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5OCBA
QAorMjAxNy0wOS0wNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
VXNlIEpJVCBwcm9iZXMgZm9yIERGRyBPU1IgZXhpdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzM0MzcwNTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBkb2VzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIDEuIFJlcGxhY2VzIG9z
ckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoKSB3aXRoIG9zckV4aXRUaHVua0dlbmVyYXRv
cigpLgorICAgICAgICAgICBXaGlsZSBvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKCkg
Z2VuZXJhdGVzIGEgdGh1bmsgdGhhdCBjb21waWxlcyBhCisgICAgICAgICAgIHVuaXF1ZSBPU1Ig
b2ZmcmFtcCBmb3IgZWFjaCBERkcgT1NSIGV4aXQgc2l0ZSwgb3NyRXhpdFRodW5rR2VuZXJhdG9y
KCkKKyAgICAgICAgICAgZ2VuZXJhdGVzIGEgdGh1bmsgdGhhdCBqdXN0IGV4ZWN1dGVzIHRoZSBP
U1IgZXhpdC4KKworICAgICAgICAgICBUaGUgb3NyRXhpdFRodW5rR2VuZXJhdG9yKCkgZ2VuZXJh
dGVkIHRodW5rIHdvcmtzIGJ5IHVzaW5nIGEgc2luZ2xlIEpJVCBwcm9iZQorICAgICAgICAgICB0
byBjYWxsIE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KCkuICBUaGUgSklUIHByb2JlIHRha2VzIGNh
cmUgb2YgcHJlc2VydmluZworICAgICAgICAgICBDUFUgcmVnaXN0ZXJzLCBhbmQgcHJvdmlkaW5n
IHRoZSBQcm9iZTo6U3RhY2sgbWVjaGFuaXNtIGZvciBtb2RpZnlpbmcgdGhlCisgICAgICAgICAg
IHN0YWNrIGZyYW1lLgorCisgICAgICAgICAgIE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KCkgcmVw
bGFjZXMgT1NSRXhpdDo6Y29tcGlsZU9TUkV4aXQoKSBhbmQKKyAgICAgICAgICAgT1NSRXhpdDo6
Y29tcGlsZUV4aXQoKS4gIEl0IGlzIGJhc2ljYWxseSBhIHJlLXdyaXRlIG9mIHRob3NlIGZ1bmN0
aW9ucyB0bworICAgICAgICAgICBleGVjdXRlIHRoZSBPU1IgZXhpdCB3b3JrIGluc3RlYWQgb2Yg
Y29tcGlsaW5nIGNvZGUgdG8gZXhlY3V0ZSB0aGUgd29yay4KKworICAgICAgICAgICBBcyBhIHJl
c3VsdCwgd2UgZ2V0IHRoZSBmb2xsb3dpbmcgc2F2aW5nczoKKyAgICAgICAgICAgYS4gbm8gbW9y
ZSBPU1IgZXhpdCByYW1wIGNvbXBpbGF0aW9uIHRpbWUuCisgICAgICAgICAgIGIuIG5vIHVzZSBv
ZiBKSVQgZXhlY3V0YWJsZSBtZW1vcnkgZm9yIHN0b3JpbmcgZWFjaCB1bmlxdWUgT1NSIGV4aXQg
cmFtcC4KKworICAgICAgICAgICBPbiB0aGUgbmVnYXRpdmUgc2lkZSwgd2UgaW5jdXIgdGhlc2Ug
Y29zdHM6CisKKyAgICAgICAgICAgYy4gdGhlIE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KCkgcmFt
cCBtYXkgYmUgYSBsaXR0bGUgc2xvd2VyIHRoYW4gdGhlIGNvbXBpbGVkCisgICAgICAgICAgICAg
IHZlcnNpb24gb2YgdGhlIHJhbXAuICBIb3dldmVyLCBPU1IgZXhpdHMgYXJlIHJhcmUuICBIZW5j
ZSwgdGhpcyBzbWFsbAorICAgICAgICAgICAgICBkaWZmZXJlbmNlIHNob3VsZCBub3QgbWF0dGVy
IG11Y2guICBJdCBpcyBhbHNvIG9mZnNldCBieSB0aGUgc2F2aW5ncyBmcm9tCisgICAgICAgICAg
ICAgIChhKS4KKworICAgICAgICAgICBkLiB0aGUgUHJvYmU6OlN0YWNrIGFsbG9jYXRlcyAxSyBw
YWdlcyBmb3IgbWVtb3J5IGZvciBidWZmZXJpbmcgc3RhY2sKKyAgICAgICAgICAgICAgbW9kaWZj
YXRpb25zLiAgVGhlIG51bWJlciBvZiB0aGVzZSBwYWdlcyBkZXBlbmRzIG9uIHRoZSBzcGFuIG9m
IHN0YWNrIG1lbW9yeQorICAgICAgICAgICAgICB0aGF0IHRoZSBPU1IgZXhpdCByYW1wIHJlYWRz
IGZyb20gYW5kIHdyaXRlcyB0by4gIFNpbmNlIHRoZSBPU1IgZXhpdCByYW1wCisgICAgICAgICAg
ICAgIHRlbmRzIHRvIG9ubHkgbW9kaWZ5IHZhbHVlcyBpbiB0aGUgY3VycmVudCBERkcgZnJhbWUg
YW5kIHRoZSBjdXJyZW50CisgICAgICAgICAgICAgIFZNRW50cnlSZWNvcmQsIHRoZSBudW1iZXIg
b2YgcGFnZXMgdGVuZHMgdG8gb25seSBiZSAxIG9yIDIuCisKKyAgICAgICAgICAgICAgVXNpbmcg
dGhlIGpzYyB0ZXN0cyBhcyBhIHdvcmtsb2FkLCB0aGUgdmFzdCBtYWpvcml0eSBvZiB0ZXN0cyB0
aGF0IGRvIE9TUgorICAgICAgICAgICAgICBleGl0LCB1c2VzIDMgb3IgbGVzcyAxSyBwYWdlcyAo
d2l0aCB0aGUgb3ZlcndoZWxtaW5nIG51bWJlciB1c2luZyBqdXN0IDEgcGFnZSkuCisgICAgICAg
ICAgICAgIEEgZmV3IHRlc3RzIHRoYXQgYXJlIHBhdGhvbG9naWNhbCB1c2VzIHVwIHRvIDE0IHBh
Z2VzLCBhbmQgb25lIHBhcnRpY3VsYXJseQorICAgICAgICAgICAgICBiYWQgdGVzdCAoZnVuY3Rp
b24tYXBwbHktbWFueS1hcmdzLmpzKSB1c2VzIDUxMyBwYWdlcy4KKworICAgICAgICAgICBTaW1p
bGFyIHRvIHRoZSBvbGQgY29kZSwgdGhlIE9TUiBleGl0IHJhbXAgc3RpbGwgaGFzIDIgcGFydHM6
IDEgcGFydCB0aGF0IGlzCisgICAgICAgICAgIG9ubHkgZXhlY3V0ZWQgb25jZSB0byBjb21wdXRl
IHNvbWUgdmFsdWVzIGZvciB0aGUgZXhpdCBzaXRlIHRoYXQgaXMgdXNlZCBieQorICAgICAgICAg
ICBhbGwgZXhpdCBvcGVyYXRpb25zIGZyb20gdGhhdCBzaXRlLCBhbmQgYSAybmQgcGFydCB0byBl
eGVjdXRlIHRoZSBleGl0LiAgVGhlCisgICAgICAgICAgIDFzdCBwYXJ0IGlzIHByb3RlY3RlZCBi
eSBhIGNoZWNraW5nIGlmIGV4aXQuZXhpdFN0YXRlIGhhcyBhbHJlYWR5IGJlZW4KKyAgICAgICAg
ICAgaW5pdGlhbGl6ZWQuICBUaGUgY29tcHV0ZWQgdmFsdWVzIGFyZSBjYWNoZWQgaW4gZXhpdC5l
eGl0U3RhdGUuCisKKyAgICAgICAgICAgQmVjYXVzZSB0aGUgT1NSIGV4aXQgdGh1bmsgbm8gbG9u
Z2VyIGNvbXBpbGVzIGFuIE9TUiBleGl0IG9mZi1yYW1wLCB3ZSBubworICAgICAgICAgICBsb25n
ZXIgbmVlZCB0aGUgZmFjaWxpdHkgdG8gcGF0Y2ggdGhlIHNpdGUgdGhhdCBqdW1wcyB0byB0aGUg
T1NSIGV4aXQgcmFtcC4KKyAgICAgICAgICAgVGhlIERGRzo6SklUQ29tcGlsZXIgaGFzIGJlZW4g
bW9kaWZpZWQgdG8gcmVtb3ZlIHRoaXMgcGF0Y2hpbmcgY29kZS4KKworICAgICAgICAyLiBGaXhl
ZCB0aGUgYm90dG9tIG1vc3QgUHJvYmU6OkNvbnRleHQgYW5kIFByb2JlOjpTdGFjayBnZXQvc2V0
IG1ldGhvZHMgdG8gdXNlCisgICAgICAgICAgIHN0ZDo6bWVtY3B5IHRvIGF2b2lkIHN0cmljdCBh
bGlhc2luZyBpc3N1ZXMuCisKKyAgICAgICAgICAgQWxzbyBvcHRpbWl6ZWQgdGhlIGltcGxlbWVu
dGF0aW9uIG9mIFByb2JlOjpTdGFjazo6cGh5c2ljYWxBZGRyZXNzRm9yKCkuCisKKyAgICAgICAg
My4gTWlzY2VsbGFuZW91cyBjb252ZW5pZW5jZSBtZXRob2RzIGFkZGVkIHRvIG1ha2UgdGhlIFBy
b2JlOjpDb250ZXh0IGVhc2llciBvZgorICAgICAgICAgICB1c2UuCisKKyAgICAgICAgNC4gQWRk
ZWQgYSBQcm9iZTo6RnJhbWUgY2xhc3MgdGhhdCBtYWtlcyBpdCBlYXNpZXIgdG8gZ2V0L3NldCBv
cGVyYW5kcyBhbmQKKyAgICAgICAgICAgYXJndW1lbnRzIGluIGEgZ2l2ZW4gZnJhbWUgdXNpbmcg
dGhlIGRlZmVycmVkIHdyaXRlIHByb3BlcnRpZXMgb2YgdGhlCisgICAgICAgICAgIFByb2JlOjpT
dGFjay4gIFByb2JlOjpGcmFtZSBtYWtlcyBpdCBlYXNpZXIgdG8gZG8gc29tZSBvZiB0aGUgcmVj
b3Zlcnkgd29yayBpbgorICAgICAgICAgICB0aGUgT1NSIGV4aXQgcmFtcC4KKworICAgICAgICA1
LiBDbG9uZWQgb3IgY29udmVydGVkIHNvbWUgZnVuY3Rpb25zIG5lZWRlZCBieSB0aGUgT1NSIGV4
aXQgcmFtcC4gIFRoZSBvcmlnaW5hbAorICAgICAgICAgICBKSVQgdmVyc2lvbnMgb2YgdGhlc2Ug
ZnVuY3Rpb25zIGFyZSBzdGlsbCBsZWZ0IGluIHBsYWNlIGJlY2F1c2UgdGhleSBhcmUgc3RpbGwK
KyAgICAgICAgICAgbmVlZGVkIGZvciBGVEwgT1NSIGV4aXQuICBBIEZJWE1FIGNvbW1lbnQgaGFz
IGJlZW4gYWRkZWQgdG8gcmVtb3ZlIHRoZW0gbGF0ZXIuCisgICAgICAgICAgIFRoZXNlIGZ1bmN0
aW9ucyBpbmNsdWRlOgorCisgICAgICAgICAgIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAn
cyBoYW5kbGVFeGl0Q291bnRzKCkgPT0+CisgICAgICAgICAgICAgICBDb2RlQmxvY2s6OnVwZGF0
ZU9TUkV4aXRDb3VudGVyQW5kQ2hlY2tJZk5lZWRUb1Jlb3B0aW1pemUoKQorICAgICAgICAgICBE
RkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwJ3MgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcygpID09
PgorICAgICAgICAgICAgICAgREZHT1NSRXhpdC5jcHAncyByZWlmeUlubGluZWRDYWxsRnJhbWVz
KCkKKyAgICAgICAgICAgREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCdzIGFkanVzdEFuZEp1
bXBUb1RhcmdldCgpID09PgorICAgICAgICAgICAgICAgREZHT1NSRXhpdC5jcHAncyBhZGp1c3RB
bmRKdW1wVG9UYXJnZXQoKQorCisgICAgICAgICAgIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGU6OmVtaXRSZXBvcnRWYWx1ZSgpID09PgorICAgICAgICAgICAgICAgTWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZTo6cmVwb3J0VmFsdWUoKQorCisgICAgICAgICAgIERGR09wZXJhdGlvbnMu
Y3BwJ3Mgb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdCgpID09PgorICAg
ICAgICAgICAgICAgREZHT1NSRXhpdC5jcHAncyBjcmVhdGVEaXJlY3RBcmd1bWVudHNEdXJpbmdF
eGl0KCkKKyAgICAgICAgICAgREZHT3BlcmF0aW9ucy5jcHAncyBvcGVyYXRpb25DcmVhdGVDbG9u
ZWRBcmd1bWVudHNEdXJpbmdFeGl0KCkgPT0+CisgICAgICAgICAgICAgICBERkdPU1JFeGl0LmNw
cCdzIGNyZWF0ZUNsb25lZEFyZ3VtZW50c0R1cmluZ0V4aXQoKQorCisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpzdGRGdW5jdGlvbkNhbGxiYWNrKToK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6UHJpbnRlcjo6cHJpbnRDYWxsYmFjayk6CisgICAgICAgICogYXNzZW1ibGVyL1Byb2Jl
Q29udGV4dC5oOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q1BVU3RhdGU6OmdwciBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlByb2JlOjpDUFVTdGF0ZTo6c3ByIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
UHJvYmU6OkNvbnRleHQ6OkNvbnRleHQpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q29udGV4dDo6
YXJnKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6Omdwcik6CisgICAgICAgIChKU0M6
OlByb2JlOjpDb250ZXh0OjpzcHIpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q29udGV4dDo6ZnBy
KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6Omdwck5hbWUpOgorICAgICAgICAoSlND
OjpQcm9iZTo6Q29udGV4dDo6c3ByTmFtZSk6CisgICAgICAgIChKU0M6OlByb2JlOjpDb250ZXh0
OjpmcHJOYW1lKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6OmdwciBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlByb2JlOjpDb250ZXh0OjpzcHIgY29uc3QpOgorICAgICAgICAoSlNDOjpQ
cm9iZTo6Q29udGV4dDo6ZnByIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6
OnBjKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6OmZwKToKKyAgICAgICAgKEpTQzo6
UHJvYmU6OkNvbnRleHQ6OnNwKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogYXNzZW1ibGVyL1Byb2JlRnJhbWUuaDogQWRkZWQuCisgICAgICAgIChK
U0M6OlByb2JlOjpGcmFtZTo6RnJhbWUpOgorICAgICAgICAoSlNDOjpQcm9iZTo6RnJhbWU6Omdl
dEFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkZyYW1lOjpnZXRPcGVyYW5kKToKKyAg
ICAgICAgKEpTQzo6UHJvYmU6OkZyYW1lOjpnZXQpOgorICAgICAgICAoSlNDOjpQcm9iZTo6RnJh
bWU6OnNldEFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkZyYW1lOjpzZXRPcGVyYW5k
KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkZyYW1lOjpzZXQpOgorICAgICAgICAqIGFzc2VtYmxl
ci9Qcm9iZVN0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvYmU6OlBhZ2U6OlBhZ2UpOgorICAg
ICAgICAqIGFzc2VtYmxlci9Qcm9iZVN0YWNrLmg6CisgICAgICAgIChKU0M6OlByb2JlOjpQYWdl
OjpnZXQpOgorICAgICAgICAoSlNDOjpQcm9iZTo6UGFnZTo6c2V0KToKKyAgICAgICAgKEpTQzo6
UHJvYmU6OlBhZ2U6OnBoeXNpY2FsQWRkcmVzc0Zvcik6CisgICAgICAgIChKU0M6OlByb2JlOjpT
dGFjazo6bG93V2F0ZXJtYXJrKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OlN0YWNrOjpnZXQpOgor
ICAgICAgICAoSlNDOjpQcm9iZTo6U3RhY2s6OnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQXJp
dGhQcm9maWxlLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9Bcml0aFByb2ZpbGUuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxl
OjpvYnNlcnZlQXJyYXlNb2RlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVwZGF0ZU9TUkV4aXRDb3VudGVyQW5kQ2hlY2tJZk5l
ZWRUb1Jlb3B0aW1pemUpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmFkZHJlc3NPZk9TUkV4aXRDb3VudGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmg6CisgICAgICAgIChKU0M6OkV4ZWN1
dGlvbkNvdW50ZXI6Omhhc0Nyb3NzZWRUaHJlc2hvbGQgY29uc3QpOgorICAgICAgICAoSlNDOjpF
eGVjdXRpb25Db3VudGVyOjpzZXROZXdUaHJlc2hvbGRGb3JPU1JFeGl0KToKKyAgICAgICAgKiBi
eXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6cmVwb3J0VmFsdWUpOgorICAgICAgICAqIGJ5
dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKiBkZmcvREZH
RHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlSW1wbCk6CisgICAgICAgICog
ZGZnL0RGR0pJVENvZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvZGU6OmZpbmRQQyk6
IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0pJVENvZGUuaDoKKyAgICAgICAgKiBkZmcvREZH
SklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rT1NS
RXhpdHMpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAg
KiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6anNWYWx1ZUZvcik6Cisg
ICAgICAgIChKU0M6OkRGRzo6cmVzdG9yZUNhbGxlZVNhdmVzRm9yKToKKyAgICAgICAgKEpTQzo6
REZHOjpzYXZlQ2FsbGVlU2F2ZXNGb3IpOgorICAgICAgICAoSlNDOjpERkc6OnJlc3RvcmVDYWxs
ZWVTYXZlc0Zyb21WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcik6CisgICAgICAgIChKU0M6
OkRGRzo6Y29weUNhbGxlZVNhdmVzVG9WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcik6Cisg
ICAgICAgIChKU0M6OkRGRzo6c2F2ZU9yQ29weUNhbGxlZVNhdmVzRm9yKToKKyAgICAgICAgKEpT
Qzo6REZHOjpjcmVhdGVEaXJlY3RBcmd1bWVudHNEdXJpbmdFeGl0KToKKyAgICAgICAgKEpTQzo6
REZHOjpjcmVhdGVDbG9uZWRBcmd1bWVudHNEdXJpbmdFeGl0KToKKyAgICAgICAgKEpTQzo6REZH
OjpPU1JFeGl0OjpPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjplbWl0UmVzdG9yZUFyZ3Vt
ZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6ZXhlY3V0ZU9TUkV4aXQpOgorICAg
ICAgICAoSlNDOjpERkc6OnJlaWZ5SW5saW5lZENhbGxGcmFtZXMpOgorICAgICAgICAoSlNDOjpE
Rkc6OmFkanVzdEFuZEp1bXBUb1RhcmdldCk6CisgICAgICAgIChKU0M6OkRGRzo6cHJpbnRPU1JF
eGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0OjpzZXRQYXRjaGFibGVDb2RlT2Zmc2V0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0OjpnZXRQYXRjaGFibGVDb2Rl
T2Zmc2V0QXNKdW1wIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0
Ojpjb2RlTG9jYXRpb25Gb3JSZXBhdGNoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
REZHOjpPU1JFeGl0Ojpjb3JyZWN0SnVtcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6
T1NSRXhpdDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpE
Rkc6Ok9TUkV4aXQ6OmNvbXBpbGVPU1JFeGl0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZH
OjpPU1JFeGl0Ojpjb21waWxlRXhpdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6T1NS
RXhpdDo6ZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFpbHVyZSk6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0U3Rh
dGU6Ok9TUkV4aXRTdGF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Y29uc2lkZXJB
ZGRpbmdBc0ZyZXF1ZW50RXhpdFNpdGUpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGls
ZXJDb21tb24uY3BwOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaDoK
KyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJh
dGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
Ojpvc3JFeGl0VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6Om9zckV4aXRHZW5l
cmF0aW9uVGh1bmtHZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdUaHVua3Mu
aDoKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6QXNz
ZW1ibHlIZWxwZXJzOjpkZWJ1Z0NhbGwpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9Bc3NlbWJs
eUhlbHBlcnMuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlck9TUkV4aXQu
aDoKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6Ok9TUkV4aXQ6OmluY0NvdW50KToKKyAgICAgICAg
KiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmg6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDE3LTA5LTA2ICBTYWFtIEJhcmF0
aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIEFpciBzaG91bGQgaGF2ZSBhIFZlY3Rv
ciBvZiBwcm9sb2d1ZSBnZW5lcmF0b3JzIGluc3RlYWQgb2YgYSBIYXNoTWFwIHJlcHJlc2VudGlu
ZyBhbiBvcHRpb25hbCBwcm9sb2d1ZSBnZW5lcmF0b3IKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAyMjE2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MjQ0NCw2ICsyNDQ0LDcgQEAKIAkJRkUxMEFBRUMxRjQ0RDU0NTAwOURFREM1IC8qIFByb2JlU3Rh
Y2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUx
MEFBRTkxRjQ0RDUxMDAwOURFREM1IC8qIFByb2JlU3RhY2suY3BwICovOyB9OwogCQlGRTEwQUFF
RTFGNDREOTU0MDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEwQUFFRDFGNDREOTQ2MDA5REVEQzUgLyogUHJv
YmVDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRkUxMEFBRjQxRjQ2ODM5NjAwOURFREM1IC8qIFByb2JlQ29udGV4dC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEwQUFGMzFGNDY4MjZE
MDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmNwcCAqLzsgfTsKKwkJRkUxMEFBRkYxRjRFMzhFNTAw
OURFREM1IC8qIFByb2JlRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFMTBBQUZFMUY0RTM4REEwMDlERURDNSAvKiBQcm9iZUZyYW1lLmggKi87
IH07CiAJCUZFMTIyMDI3MUJFN0Y1OEMwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTIyMDI2MUJFN0Y1
NjQwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuaCAqLzsgfTsKIAkJRkUxMjIwMjgxQkU3RjU5
MTAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEyMjAyNTFCRTdGNTY0MDAzOUU2RjIgLyogSklUQWRk
R2VuZXJhdG9yLmNwcCAqLzsgfTsKIAkJRkUxODdBMDExQkZCRTU1RTAwMzhCQkNBIC8qIEpJVE11
bEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTE4NzlGRjFCRkJDNzNDMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmNwcCAqLzsg
fTsKQEAgLTUxMzgsNiArNTEzOSw3IEBACiAJCUZFMTBBQUVBMUY0NEQ1MTIwMDlERURDNSAvKiBQ
cm9iZVN0YWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2JlU3RhY2su
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxMEFBRUQxRjQ0RDk0NjAwOURFREM1
IC8qIFByb2JlQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9i
ZUNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxMEFBRjMxRjQ2ODI2
RDAwOURFREM1IC8qIFByb2JlQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQcm9iZUNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGRTEwQUFGRTFGNEUzOERBMDA5REVEQzUgLyogUHJvYmVGcmFtZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQcm9iZUZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZFMTIyMDI1MUJFN0Y1NjQwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUQWRkR2VuZXJhdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxMjIwMjYxQkU3RjU2NDAwMzlFNkYyIC8q
IEpJVEFkZEdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRB
ZGRHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxODc5RkYxQkZC
QzczQzAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKSVRNdWxHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNzcyMiw2ICs3NzI0LDcgQEAKIAkJCQlGRTYzREQ1MzFFQTlCNjBFMDAxMDNB
NjkgLyogUHJpbnRlci5oICovLAogCQkJCUZFMTBBQUYzMUY0NjgyNkQwMDlERURDNSAvKiBQcm9i
ZUNvbnRleHQuY3BwICovLAogCQkJCUZFMTBBQUVEMUY0NEQ5NDYwMDlERURDNSAvKiBQcm9iZUNv
bnRleHQuaCAqLywKKwkJCQlGRTEwQUFGRTFGNEUzOERBMDA5REVEQzUgLyogUHJvYmVGcmFtZS5o
ICovLAogCQkJCUZFMTBBQUU5MUY0NEQ1MTAwMDlERURDNSAvKiBQcm9iZVN0YWNrLmNwcCAqLywK
IAkJCQlGRTEwQUFFQTFGNDRENTEyMDA5REVEQzUgLyogUHJvYmVTdGFjay5oICovLAogCQkJCUZF
NTMzQ0EwMUYyMTdDMzEwMDE2QTFGRSAvKiB0ZXN0bWFzbS5jcHAgKi8sCkBAIC05Njg5LDYgKzk2
OTIsNyBAQAogCQkJCUFEMkZDQzFEMURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1vZHVs
ZVByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUFENDkzN0M4MURERDBBQUUwMDc3
QzgwNyAvKiBXZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQy
RkNDMkQxREI4MzhGRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGRTEwQUFGRjFGNEUzOEU1MDA5REVEQzUgLyogUHJvYmVGcmFtZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQUQyRkNCRjkxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVu
dGltZUVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUFEMkZDQzFFMURCNTlD
QjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmx1dC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNCRkIxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5
UnVudGltZUVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCShyZXZpc2lv
biAyMjE2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBjb25zdCBkb3VibGUgTWFj
cm9Bc3NlbWJsZXI6OnR3b1RvVGhlMzIgCiAjaWYgRU5BQkxFKE1BU01fUFJPQkUpCiBzdGF0aWMg
dm9pZCBzdGRGdW5jdGlvbkNhbGxiYWNrKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KQogewotICAg
IGF1dG8gZnVuYyA9IHN0YXRpY19jYXN0PGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChQcm9iZTo6
Q29udGV4dCYpPio+KGNvbnRleHQuYXJnKTsKKyAgICBhdXRvIGZ1bmMgPSBjb250ZXh0LmFyZzxj
b25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUHJvYmU6OkNvbnRleHQmKT4qPigpOwogICAgICgqZnVu
YykoY29udGV4dCk7CiB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwCShyZXZpc2lvbiAy
MjE2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
UHJpbnRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIHByaW50
TWVtb3J5KFByaW50U3RyZWFtJiBvdXQsIENvbnRlCiB2b2lkIHByaW50Q2FsbGJhY2soUHJvYmU6
OkNvbnRleHQmIHByb2JlQ29udGV4dCkKIHsKICAgICBhdXRvJiBvdXQgPSBXVEY6OmRhdGFGaWxl
KCk7Ci0gICAgUHJpbnRSZWNvcmRMaXN0JiBsaXN0ID0gKnJlaW50ZXJwcmV0X2Nhc3Q8UHJpbnRS
ZWNvcmRMaXN0Kj4ocHJvYmVDb250ZXh0LmFyZyk7CisgICAgUHJpbnRSZWNvcmRMaXN0JiBsaXN0
ID0gKnByb2JlQ29udGV4dC5hcmc8UHJpbnRSZWNvcmRMaXN0Kj4oKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyBpKyspIHsKICAgICAgICAgYXV0byYgcmVjb3JkID0g
bGlzdFtpXTsKICAgICAgICAgQ29udGV4dCBjb250ZXh0KHByb2JlQ29udGV4dCwgcmVjb3JkLmRh
dGEpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUNvbnRleHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlQ29u
dGV4dC5oCShyZXZpc2lvbiAyMjE2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1Byb2JlQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxNCArNDUsOCBAQCBzdHJ1
Y3QgQ1BVU3RhdGUgewogICAgIGlubGluZSB1aW50cHRyX3QmIHNwcihTUFJlZ2lzdGVySUQpOwog
ICAgIGlubGluZSBkb3VibGUmIGZwcihGUFJlZ2lzdGVySUQpOwogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFs
dWU+Ojp0eXBlKiA9IG51bGxwdHI+Ci0gICAgVCBncHIoUmVnaXN0ZXJJRCkgY29uc3Q7Ci0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2lu
dGVyPFQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVsbHB0cj4KLSAgICBUIGdwcihSZWdpc3RlcklEKSBj
b25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVsbHB0cj4KLSAgICBUIHNwcihT
UFJlZ2lzdGVySUQpIGNvbnN0OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+
Ci0gICAgVCBzcHIoU1BSZWdpc3RlcklEKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBUIGdwcihSZWdpc3RlcklEKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHNw
cihTUFJlZ2lzdGVySUQpIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgZnByKEZQ
UmVnaXN0ZXJJRCkgY29uc3Q7CiAKICAgICB2b2lkKiYgcGMoKTsKQEAgLTg1LDMyICs3OSwyNCBA
QCBpbmxpbmUgZG91YmxlJiBDUFVTdGF0ZTo6ZnByKEZQUmVnaXN0ZXJJCiAgICAgcmV0dXJuIGZw
cnNbaWRdOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGUqPgotVCBDUFVTdGF0ZTo6Z3ByKFJl
Z2lzdGVySUQgaWQpIGNvbnN0Ci17Ci0gICAgQ1BVU3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8Q1BV
U3RhdGUqPih0aGlzKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oY3B1LT5ncHIoaWQpKTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGUqPgordGVtcGxhdGU8dHlwZW5hbWUgVD4KIFQgQ1BV
U3RhdGU6OmdwcihSZWdpc3RlcklEIGlkKSBjb25zdAogewogICAgIENQVVN0YXRlKiBjcHUgPSBj
b25zdF9jYXN0PENQVVN0YXRlKj4odGhpcyk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
VD4oY3B1LT5ncHIoaWQpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKj4KLVQgQ1BVU3Rh
dGU6OnNwcihTUFJlZ2lzdGVySUQgaWQpIGNvbnN0Ci17Ci0gICAgQ1BVU3RhdGUqIGNwdSA9IGNv
bnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oY3B1
LT5zcHIoaWQpKTsKKyAgICBhdXRvJiBmcm9tID0gY3B1LT5ncHIoaWQpOworICAgIHR5cGVuYW1l
IHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlIHRvIHsgfTsKKyAgICBzdGQ6Om1lbWNweSgmdG8s
ICZmcm9tLCBzaXplb2YodG8pKTsgLy8gVXNlIHN0ZDo6bWVtY3B5IHRvIGF2b2lkIHN0cmljdCBh
bGlhc2luZyBpc3N1ZXMuCisgICAgcmV0dXJuIHRvOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlw
ZSo+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogVCBDUFVTdGF0ZTo6c3ByKFNQUmVnaXN0ZXJJRCBp
ZCkgY29uc3QKIHsKICAgICBDUFVTdGF0ZSogY3B1ID0gY29uc3RfY2FzdDxDUFVTdGF0ZSo+KHRo
aXMpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQ+KGNwdS0+c3ByKGlkKSk7CisgICAg
YXV0byYgZnJvbSA9IGNwdS0+c3ByKGlkKTsKKyAgICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25z
dDxUPjo6dHlwZSB0byB7IH07CisgICAgc3RkOjptZW1jcHkoJnRvLCAmZnJvbSwgc2l6ZW9mKHRv
KSk7IC8vIFVzZSBzdGQ6Om1lbWNweSB0byBhdm9pZCBzdHJpY3QgYWxpYXNpbmcgaXNzdWVzLgor
ICAgIHJldHVybiB0bzsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTIwNSwyNSArMTkx
LDMxIEBAIHB1YmxpYzoKICAgICB1c2luZyBGUFJlZ2lzdGVySUQgPSBNYWNyb0Fzc2VtYmxlcjo6
RlBSZWdpc3RlcklEOwogCiAgICAgQ29udGV4dChTdGF0ZSogc3RhdGUpCi0gICAgICAgIDogbV9z
dGF0ZShzdGF0ZSkKLSAgICAgICAgLCBhcmcoc3RhdGUtPmFyZykKLSAgICAgICAgLCBjcHUoc3Rh
dGUtPmNwdSkKKyAgICAgICAgOiBjcHUoc3RhdGUtPmNwdSkKKyAgICAgICAgLCBtX3N0YXRlKHN0
YXRlKQogICAgIHsgfQogCi0gICAgdWludHB0cl90JiBncHIoUmVnaXN0ZXJJRCBpZCkgeyByZXR1
cm4gbV9zdGF0ZS0+Y3B1LmdwcihpZCk7IH0KLSAgICB1aW50cHRyX3QmIHNwcihTUFJlZ2lzdGVy
SUQgaWQpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5zcHIoaWQpOyB9Ci0gICAgZG91YmxlJiBmcHIo
RlBSZWdpc3RlcklEIGlkKSB7IHJldHVybiBtX3N0YXRlLT5jcHUuZnByKGlkKTsgfQotICAgIGNv
bnN0IGNoYXIqIGdwck5hbWUoUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1Lmdw
ck5hbWUoaWQpOyB9Ci0gICAgY29uc3QgY2hhciogc3ByTmFtZShTUFJlZ2lzdGVySUQgaWQpIHsg
cmV0dXJuIG1fc3RhdGUtPmNwdS5zcHJOYW1lKGlkKTsgfQotICAgIGNvbnN0IGNoYXIqIGZwck5h
bWUoRlBSZWdpc3RlcklEIGlkKSB7IHJldHVybiBtX3N0YXRlLT5jcHUuZnByTmFtZShpZCk7IH0K
LQotICAgIHZvaWQqJiBwYygpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5wYygpOyB9Ci0gICAgdm9p
ZComIGZwKCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LmZwKCk7IH0KLSAgICB2b2lkKiYgc3AoKSB7
IHJldHVybiBtX3N0YXRlLT5jcHUuc3AoKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
VCBwYygpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5wYzxUPigpOyB9Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gVCBmcCgpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5mcDxUPigpOyB9Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gVCBzcCgpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5zcDxUPigpOyB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBUIGFyZygpIHsgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8VD4obV9zdGF0ZS0+YXJnKTsgfQorCisgICAgdWludHB0cl90JiBncHIoUmVnaXN0
ZXJJRCBpZCkgeyByZXR1cm4gY3B1LmdwcihpZCk7IH0KKyAgICB1aW50cHRyX3QmIHNwcihTUFJl
Z2lzdGVySUQgaWQpIHsgcmV0dXJuIGNwdS5zcHIoaWQpOyB9CisgICAgZG91YmxlJiBmcHIoRlBS
ZWdpc3RlcklEIGlkKSB7IHJldHVybiBjcHUuZnByKGlkKTsgfQorICAgIGNvbnN0IGNoYXIqIGdw
ck5hbWUoUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gY3B1Lmdwck5hbWUoaWQpOyB9CisgICAgY29u
c3QgY2hhciogc3ByTmFtZShTUFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIGNwdS5zcHJOYW1lKGlk
KTsgfQorICAgIGNvbnN0IGNoYXIqIGZwck5hbWUoRlBSZWdpc3RlcklEIGlkKSB7IHJldHVybiBj
cHUuZnByTmFtZShpZCk7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgZ3ByKFJlZ2lz
dGVySUQgaWQpIGNvbnN0IHsgcmV0dXJuIGNwdS5ncHI8VD4oaWQpOyB9CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gVCBzcHIoU1BSZWdpc3RlcklEIGlkKSBjb25zdCB7IHJldHVybiBjcHUuc3By
PFQ+KGlkKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgZnByKEZQUmVnaXN0ZXJJRCBp
ZCkgY29uc3QgeyByZXR1cm4gY3B1LmZwcjxUPihpZCk7IH0KKworICAgIHZvaWQqJiBwYygpIHsg
cmV0dXJuIGNwdS5wYygpOyB9CisgICAgdm9pZComIGZwKCkgeyByZXR1cm4gY3B1LmZwKCk7IH0K
KyAgICB2b2lkKiYgc3AoKSB7IHJldHVybiBjcHUuc3AoKTsgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gVCBwYygpIHsgcmV0dXJuIGNwdS5wYzxUPigpOyB9CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gVCBmcCgpIHsgcmV0dXJuIGNwdS5mcDxUPigpOyB9CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gVCBzcCgpIHsgcmV0dXJuIGNwdS5zcDxUPigpOyB9CiAKICAgICBTdGFjayYgc3Rh
Y2soKQogICAgIHsKQEAgLTIzNCwxMyArMjI2LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGhhc1dy
aXRlc1RvRmx1c2goKSB7IHJldHVybiBtX3N0YWNrLmhhc1dyaXRlc1RvRmx1c2goKTsgfQogICAg
IFN0YWNrKiByZWxlYXNlU3RhY2soKSB7IHJldHVybiBuZXcgU3RhY2soV1RGTW92ZShtX3N0YWNr
KSk7IH0KIAotcHJpdmF0ZToKLSAgICBTdGF0ZSogbV9zdGF0ZTsKLXB1YmxpYzoKLSAgICB2b2lk
KiBhcmc7CiAgICAgQ1BVU3RhdGUmIGNwdTsKIAogcHJpdmF0ZToKKyAgICBTdGF0ZSogbV9zdGF0
ZTsKICAgICBTdGFjayBtX3N0YWNrOwogCiAgICAgZnJpZW5kIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQqIHByb2JlU3RhdGVGb3JDb250ZXh0KENvbnRleHQmKTsgLy8gTm90IGZvciBnZW5lcmFsIHVz
ZS4gVGhpcyBzaG91bGQgb25seSBiZSBmb3Igd3JpdGluZyB0ZXN0cy4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVGcmFtZS5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVGcmFtZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNQVNNX1BST0JFKQorCisjaW5j
bHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiUHJvYmVTdGFjay5oIgorCituYW1lc3BhY2Ug
SlNDIHsKK25hbWVzcGFjZSBQcm9iZSB7CisKK2NsYXNzIEZyYW1lIHsKK3B1YmxpYzoKKyAgICBG
cmFtZSh2b2lkKiBmcmFtZUJhc2UsIFN0YWNrJiBzdGFjaykKKyAgICAgICAgOiBtX2ZyYW1lQmFz
ZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGZyYW1lQmFzZSkgfQorICAgICAgICAsIG1f
c3RhY2sgeyBzdGFjayB9CisgICAgeyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gSlNW
YWx1ZT4KKyAgICBUIGdldEFyZ3VtZW50KGludCBhcmd1bWVudCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBnZXQ8VD4oQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldChhcmd1bWVudCkgKiBzaXplb2Yo
UmVnaXN0ZXIpKTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IEpTVmFsdWU+Cisg
ICAgVCBnZXRPcGVyYW5kKGludCBvcGVyYW5kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldDxU
PihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG9wZXJhbmQpLm9mZnNldCgpICogc2l6ZW9m
KFJlZ2lzdGVyKSk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQgPSBKU1ZhbHVlPgor
ICAgIFQgZ2V0T3BlcmFuZChpbnQgb3BlcmFuZCwgcHRyZGlmZl90IG9mZnNldCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBnZXQ8VD4oc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5k
KS5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikgKyBvZmZzZXQpOworICAgIH0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUID0gSlNWYWx1ZT4KKyAgICBUIGdldChwdHJkaWZmX3Qgb2Zmc2V0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc3RhY2suZ2V0PFQ+KG1fZnJhbWVCYXNlICsgb2Zmc2V0
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHZvaWQgc2V0QXJndW1l
bnQoaW50IGFyZ3VtZW50LCBUIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNldDxUPihD
YWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KGFyZ3VtZW50KSAqIHNpemVvZihSZWdpc3RlciksIHZh
bHVlKTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNldE9wZXJh
bmQoaW50IG9wZXJhbmQsIFQgdmFsdWUpCisgICAgeworICAgICAgICBzZXQ8VD4oc3RhdGljX2Nh
c3Q8VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5kKS5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3Rlciks
IHZhbHVlKTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNldE9w
ZXJhbmQoaW50IG9wZXJhbmQsIHB0cmRpZmZfdCBvZmZzZXQsIFQgdmFsdWUpCisgICAgeworICAg
ICAgICBzZXQ8VD4oc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5kKS5vZmZzZXQo
KSAqIHNpemVvZihSZWdpc3RlcikgKyBvZmZzZXQsIHZhbHVlKTsKKyAgICB9CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNldChwdHJkaWZmX3Qgb2Zmc2V0LCBUIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgbV9zdGFjay5zZXQ8VD4obV9mcmFtZUJhc2UgKyBvZmZzZXQsIHZhbHVl
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdWludDhfdCogbV9mcmFtZUJhc2U7CisgICAgU3Rh
Y2smIG1fc3RhY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBQcm9iZQorfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoTUFTTV9QUk9CRSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmNwcAkocmV2aXNpb24gMjIxNjg3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgUHJvYmUgewogCiBQYWdlOjpQYWdl
KHZvaWQqIGJhc2VBZGRyZXNzKQogICAgIDogbV9iYXNlTG9naWNhbEFkZHJlc3MoYmFzZUFkZHJl
c3MpCisgICAgLCBtX3BoeXNpY2FsQWRkcmVzc09mZnNldChyZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPigmbV9idWZmZXIpIC0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYmFzZUFkZHJlc3Mp
KQogewogICAgIG1lbWNweSgmbV9idWZmZXIsIGJhc2VBZGRyZXNzLCBzX3BhZ2VTaXplKTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5oCShy
ZXZpc2lvbiAyMjE2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2Jl
U3RhY2suaAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTQgKzU2LDI4IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFQgZ2V0KHZvaWQqIGxvZ2ljYWxBZGRyZXNzKQogICAg
IHsKLSAgICAgICAgcmV0dXJuICpwaHlzaWNhbEFkZHJlc3NGb3I8VCo+KGxvZ2ljYWxBZGRyZXNz
KTsKKyAgICAgICAgdm9pZCogZnJvbSA9IHBoeXNpY2FsQWRkcmVzc0Zvcihsb2dpY2FsQWRkcmVz
cyk7CisgICAgICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlIHRvIHsgfTsK
KyAgICAgICAgc3RkOjptZW1jcHkoJnRvLCBmcm9tLCBzaXplb2YodG8pKTsgLy8gVXNlIHN0ZDo6
bWVtY3B5IHRvIGF2b2lkIHN0cmljdCBhbGlhc2luZyBpc3N1ZXMuCisgICAgICAgIHJldHVybiB0
bzsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBUIGdldCh2b2lkKiBsb2dp
Y2FsQmFzZUFkZHJlc3MsIHB0cmRpZmZfdCBvZmZzZXQpCisgICAgeworICAgICAgICByZXR1cm4g
Z2V0PFQ+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGxvZ2ljYWxCYXNlQWRkcmVzcykgKyBv
ZmZzZXQpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBzZXQo
dm9pZCogbG9naWNhbEFkZHJlc3MsIFQgdmFsdWUpCiAgICAgewogICAgICAgICBtX2RpcnR5Qml0
cyB8PSBkaXJ0eUJpdEZvcihsb2dpY2FsQWRkcmVzcyk7Ci0gICAgICAgICpwaHlzaWNhbEFkZHJl
c3NGb3I8VCo+KGxvZ2ljYWxBZGRyZXNzKSA9IHZhbHVlOworICAgICAgICB2b2lkKiB0byA9IHBo
eXNpY2FsQWRkcmVzc0Zvcihsb2dpY2FsQWRkcmVzcyk7CisgICAgICAgIHN0ZDo6bWVtY3B5KHRv
LCAmdmFsdWUsIHNpemVvZihUKSk7IC8vIFVzZSBzdGQ6Om1lbWNweSB0byBhdm9pZCBzdHJpY3Qg
YWxpYXNpbmcgaXNzdWVzLgorICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHZv
aWQgc2V0KHZvaWQqIGxvZ2ljYWxCYXNlQWRkcmVzcywgcHRyZGlmZl90IG9mZnNldCwgVCB2YWx1
ZSkKKyAgICB7CisgICAgICAgIHNldDxUPihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihsb2dp
Y2FsQmFzZUFkZHJlc3MpICsgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgfQogCiAgICAgYm9vbCBoYXNX
cml0ZXNUb0ZsdXNoKCkgY29uc3QgeyByZXR1cm4gISFtX2RpcnR5Qml0czsgfQpAQCAtODAsMTgg
Kzk0LDE2IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+
KDEpIDw8IChvZmZzZXQgPj4gc19jaHVua1NpemVTaGlmdCk7CiAgICAgfQogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZT4KLSAgICBUIHBoeXNpY2FsQWRkcmVzc0Zvcih2b2lk
KiBsb2dpY2FsQWRkcmVzcykKKyAgICB2b2lkKiBwaHlzaWNhbEFkZHJlc3NGb3Iodm9pZCogbG9n
aWNhbEFkZHJlc3MpCiAgICAgewotICAgICAgICB1aW50cHRyX3Qgb2Zmc2V0ID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KGxvZ2ljYWxBZGRyZXNzKSAmIHNfcGFnZU1hc2s7Ci0gICAgICAg
IHZvaWQqIHBoeXNpY2FsQWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZtX2J1
ZmZlcikgKyBvZmZzZXQ7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQ+KHBoeXNp
Y2FsQWRkcmVzcyk7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihs
b2dpY2FsQWRkcmVzcykgKyBtX3BoeXNpY2FsQWRkcmVzc09mZnNldDsKICAgICB9CiAKICAgICB2
b2lkIGZsdXNoV3JpdGVzKCk7CiAKICAgICB2b2lkKiBtX2Jhc2VMb2dpY2FsQWRkcmVzcyB7IG51
bGxwdHIgfTsKICAgICB1aW50cHRyX3QgbV9kaXJ0eUJpdHMgeyAwIH07CisgICAgcHRyZGlmZl90
IG1fcGh5c2ljYWxBZGRyZXNzT2Zmc2V0OwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
c19wYWdlU2l6ZSA9IDEwMjQ7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3Qgc19wYWdl
TWFzayA9IHNfcGFnZVNpemUgLSAxOwpAQCAtMTIwLDQwICsxMzIsMzkgQEAgcHVibGljOgogICAg
IHsgfQogICAgIFN0YWNrKFN0YWNrJiYgb3RoZXIpOwogCi0gICAgdm9pZCogbG93V2F0ZXJtYXJr
KCkgeyByZXR1cm4gbV9sb3dXYXRlcm1hcms7IH0KKyAgICB2b2lkKiBsb3dXYXRlcm1hcmsoKQor
ICAgIHsKKyAgICAgICAgLy8gV2UgdXNlIHRoZSBjaHVua0FkZHJlc3MgZm9yIHRoZSBsb3cgd2F0
ZXJtYXJrIGJlY2F1c2Ugd2UnbGwgYmUgZG9pbmcgd3JpdGUgYmFja3MKKyAgICAgICAgLy8gdG8g
dGhlIHN0YWNrIGluIGluY3JlbWVudHMgb2YgY2h1bmtzLiBIZW5jZSwgd2UnbGwgdHJlYXQgdGhl
IGxvd2VzdCBhZGRyZXNzIG9mCisgICAgICAgIC8vIHRoZSBjaHVuayBhcyB0aGUgbG93IHdhdGVy
bWFyayBvZiBhbnkgZ2l2ZW4gc2V0IGFkZHJlc3MuCisgICAgICAgIHJldHVybiBQYWdlOjpjaHVu
a0FkZHJlc3NGb3IobV9sb3dXYXRlcm1hcmspOworICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci0gICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfc2FtZTxkb3VibGUs
IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+Ojp0eXBlIGdldCh2
b2lkKiBhZGRyZXNzKQorICAgIFQgZ2V0KHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICBQ
YWdlKiBwYWdlID0gcGFnZUZvcihhZGRyZXNzKTsKICAgICAgICAgcmV0dXJuIHBhZ2UtPmdldDxU
PihhZGRyZXNzKTsKICAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBUIGdldCh2
b2lkKiBsb2dpY2FsQmFzZUFkZHJlc3MsIHB0cmRpZmZfdCBvZmZzZXQpCisgICAgeworICAgICAg
ICByZXR1cm4gZ2V0PFQ+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGxvZ2ljYWxCYXNlQWRk
cmVzcykgKyBvZmZzZXQpOworICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfc2FtZTxkb3VibGUsIHR5cGVu
YW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWU+Ojp0eXBlPgorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBzZXQodm9pZCogYWRkcmVzcywgVCB2YWx1ZSkKICAgICB7
CiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBwYWdlRm9yKGFkZHJlc3MpOwogICAgICAgICBwYWdlLT5z
ZXQ8VD4oYWRkcmVzcywgdmFsdWUpOwogCi0gICAgICAgIC8vIFdlIHVzZSB0aGUgY2h1bmtBZGRy
ZXNzIGZvciB0aGUgbG93IHdhdGVybWFyayBiZWNhdXNlIHdlJ2xsIGJlIGRvaW5nIHdyaXRlIGJh
Y2tzCi0gICAgICAgIC8vIHRvIHRoZSBzdGFjayBpbiBpbmNyZW1lbnRzIG9mIGNodW5rcy4gSGVu
Y2UsIHdlJ2xsIHRyZWF0IHRoZSBsb3dlc3QgYWRkcmVzcyBvZgotICAgICAgICAvLyB0aGUgY2h1
bmsgYXMgdGhlIGxvdyB3YXRlcm1hcmsgb2YgYW55IGdpdmVuIHNldCBhZGRyZXNzLgotICAgICAg
ICB2b2lkKiBjaHVua0FkZHJlc3MgPSBQYWdlOjpjaHVua0FkZHJlc3NGb3IoYWRkcmVzcyk7Ci0g
ICAgICAgIGlmIChjaHVua0FkZHJlc3MgPCBtX2xvd1dhdGVybWFyaykKLSAgICAgICAgICAgIG1f
bG93V2F0ZXJtYXJrID0gY2h1bmtBZGRyZXNzOworICAgICAgICBpZiAoYWRkcmVzcyA8IG1fbG93
V2F0ZXJtYXJrKQorICAgICAgICAgICAgbV9sb3dXYXRlcm1hcmsgPSBhZGRyZXNzOwogICAgIH0K
LQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
c3RkOjppc19zYW1lPGRvdWJsZSwgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGU+Ojp2
YWx1ZSwgVD46OnR5cGUgZ2V0KHZvaWQqIGFkZHJlc3MpCi0gICAgewotICAgICAgICBQYWdlKiBw
YWdlID0gcGFnZUZvcihhZGRyZXNzKTsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxkb3Vi
bGU+KHBhZ2UtPmdldDx1aW50NjRfdD4oYWRkcmVzcykpOwotICAgIH0KLQotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19z
YW1lPGRvdWJsZSwgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGU+Ojp2YWx1ZT46OnR5
cGU+Ci0gICAgdm9pZCBzZXQodm9pZCogYWRkcmVzcywgZG91YmxlIHZhbHVlKQorICAgIHZvaWQg
c2V0KHZvaWQqIGxvZ2ljYWxCYXNlQWRkcmVzcywgcHRyZGlmZl90IG9mZnNldCwgVCB2YWx1ZSkK
ICAgICB7Ci0gICAgICAgIHNldDx1aW50NjRfdD4oYWRkcmVzcywgYml0d2lzZV9jYXN0PHVpbnQ2
NF90Pih2YWx1ZSkpOworICAgICAgICBzZXQ8VD4ocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
bG9naWNhbEJhc2VBZGRyZXNzKSArIG9mZnNldCwgdmFsdWUpOwogICAgIH0KIAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIFBhZ2UqIGVuc3VyZVBhZ2VGb3Iodm9pZCogYWRkcmVzcyk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAkocmV2
aXNpb24gMjIxNjg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJv
ZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNiArMzIsOCBAQAogbmFtZXNwYWNlIEpTQyB7CiAK
ICNpZiBFTkFCTEUoSklUKQorLy8gRklYTUU6IFRoaXMgaXMgYmVpbmcgc3VwcGxhbnRlZCBieSBv
YnNlcnZlUmVzdWx0KCkuIFJlbW92ZSB0aGlzIG9uZQorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NSBoYXMgYmVlbiBmaXhlZC4KIHZvaWQgQXJpdGhQcm9m
aWxlOjplbWl0T2JzZXJ2ZVJlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVn
cywgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlKQogewogICAgIGlmICghc2hvdWxkRW1pdFNldERvdWJs
ZSgpICYmICFzaG91bGRFbWl0U2V0Tm9uTnVtYmVyKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCShyZXZpc2lvbiAyMjE2ODcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjExLDYgKzIxMSw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoSklUKSAgICAKICAgICAvLyBT
ZXRzIChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBO
ZWdaZXJvRG91YmxlKSBpZiBpdCBzZWVzIGEKICAgICAvLyBkb3VibGUuIFNldHMgTm9uTnVtYmVy
IGlmIGl0IHNlZXMgYSBub24tbnVtYmVyLgorICAgIC8vIEZJWE1FOiBUaGlzIGlzIGJlaW5nIHN1
cHBsYW50ZWQgYnkgb2JzZXJ2ZVJlc3VsdCgpLiBSZW1vdmUgdGhpcyBvbmUKKyAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1IGhhcyBiZWVuIGZpeGVk
LgogICAgIHZvaWQgZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJzJiwgSlNWYWx1ZVJlZ3Ms
IFRhZ1JlZ2lzdGVyc01vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKTsKICAgICAKICAgICAvLyBTZXRz
IChJbnQzMk92ZXJmbG93IHwgSW50NTJPdmVyZmxvdyB8IE5vbk5lZ1plcm9Eb3VibGUgfCBOZWda
ZXJvRG91YmxlKS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVBy
b2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJy
YXlQcm9maWxlLmgJKHJldmlzaW9uIDIyMTY4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BcnJheVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMTgsNiArMjE4LDcg
QEAgcHVibGljOgogICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayopOwogICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVk
aWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayosIFN0cnVjdHVyZSog
bGFzdFNlZW5TdHJ1Y3R1cmUpOwogICAgIAorICAgIHZvaWQgb2JzZXJ2ZUFycmF5TW9kZShBcnJh
eU1vZGVzIG1vZGUpIHsgbV9vYnNlcnZlZEFycmF5TW9kZXMgfD0gbW9kZTsgfQogICAgIEFycmF5
TW9kZXMgb2JzZXJ2ZWRBcnJheU1vZGVzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0
IHsgcmV0dXJuIG1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9CiAgICAgYm9vbCBtYXlJbnRlcmNlcHRJ
bmRleGVkQWNjZXNzZXMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4g
bV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXM7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMjE2ODcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjMxNSw2ICsyMzE1LDUzIEBAIGJvb2wgQ29kZUJsb2NrOjpjaGVja0lmT3B0aW1p
emF0aW9uVGhyZXMKICAgICByZXR1cm4gbV9qaXRFeGVjdXRlQ291bnRlci5jaGVja0lmVGhyZXNo
b2xkQ3Jvc3NlZEFuZFNldCh0aGlzKTsKIH0KIAorYXV0byBDb2RlQmxvY2s6OnVwZGF0ZU9TUkV4
aXRDb3VudGVyQW5kQ2hlY2tJZk5lZWRUb1Jlb3B0aW1pemUoREZHOjpPU1JFeGl0U3RhdGUmIGV4
aXRTdGF0ZSkgLT4gT3B0aW1pemVBY3Rpb24KK3sKKyAgICBERkc6Ok9TUkV4aXRCYXNlJiBleGl0
ID0gZXhpdFN0YXRlLmV4aXQ7CisgICAgaWYgKCFleGl0S2luZE1heUpldHRpc29uKGV4aXQubV9r
aW5kKSkgeworICAgICAgICAvLyBGSVhNRTogV2UgbWF5IHdhbnQgdG8gbm90aWNlIHRoYXQgd2Un
cmUgZnJlcXVlbnRseSBleGl0aW5nCisgICAgICAgIC8vIGF0IGFuIG9wX2NhdGNoIHRoYXQgd2Ug
ZGlkbid0IGNvbXBpbGUgYW4gZW50cnlwb2ludCBmb3IsIGFuZAorICAgICAgICAvLyB0aGVuIHRy
aWdnZXIgYSByZW9wdGltaXphdGlvbiBvZiB0aGlzIENvZGVCbG9jazoKKyAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTg0MgorICAgICAgICByZXR1
cm4gT3B0aW1pemVBY3Rpb246Ok5vbmU7CisgICAgfQorCisgICAgZXhpdC5tX2NvdW50Kys7Cisg
ICAgbV9vc3JFeGl0Q291bnRlcisrOworCisgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9j
ayA9IGV4aXRTdGF0ZS5iYXNlbGluZUNvZGVCbG9jazsKKyAgICBBU1NFUlQoYmFzZWxpbmVDb2Rl
QmxvY2sgPT0gYmFzZWxpbmVBbHRlcm5hdGl2ZSgpKTsKKyAgICBpZiAoVU5MSUtFTFkoYmFzZWxp
bmVDb2RlQmxvY2stPmppdEV4ZWN1dGVDb3VudGVyKCkuaGFzQ3Jvc3NlZFRocmVzaG9sZCgpKSkK
KyAgICAgICAgcmV0dXJuIE9wdGltaXplQWN0aW9uOjpSZW9wdGltaXplTm93OworCisgICAgLy8g
V2Ugd2FudCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYSBwb3NzaWJpbGl0eSB0aGF0IHdlJ3Jl
IGluIGEgbG9vcC4gRm9yIHRoZSBvdXRlcm1vc3QKKyAgICAvLyBjb2RlIGJsb2NrIGluIHRoZSBp
bmxpbmUgc3RhY2ssIHdlIGhhbmRsZSB0aGlzIGFwcHJvcHJpYXRlbHkgYnkgaGF2aW5nIHRoZSBs
b29wIE9TUiB0cmlnZ2VyCisgICAgLy8gY2hlY2sgdGhlIGV4aXQgY291bnQgb2YgdGhlIHJlcGxh
Y2VtZW50IG9mIHRoZSBDb2RlQmxvY2sgZnJvbSB3aGljaCB3ZSBhcmUgT1NSaW5nLiBUaGUKKyAg
ICAvLyBwcm9ibGVtIGlzIHRoZSBpbmxpbmVkIGZ1bmN0aW9ucywgd2hpY2ggbWlnaHQgYWxzbyBo
YXZlIGxvb3BzLCBidXQgd2hvc2UgYmFzZWxpbmUgdmVyc2lvbnMKKyAgICAvLyBkb24ndCBrbm93
IHdoZXJlIHRvIGxvb2sgZm9yIHRoZSBleGl0IGNvdW50LiBGaWd1cmUgb3V0IGlmIHRob3NlIGxv
b3BzIGFyZSBzZXZlcmUgZW5vdWdoCisgICAgLy8gdGhhdCB3ZSBoYWQgdHJpZWQgdG8gT1NSIGVu
dGVyLiBJZiBzbywgdGhlbiB3ZSBzaG91bGQgdXNlIHRoZSBsb29wIHJlb3B0aW1pemF0aW9uIHRy
aWdnZXIuCisgICAgLy8gT3RoZXJ3aXNlLCB3ZSBzaG91bGQgdXNlIHRoZSBub3JtYWwgcmVvcHRp
bWl6YXRpb24gdHJpZ2dlci4KKworICAgIGJvb2wgZGlkVHJ5VG9FbnRlckluTG9vcCA9IGZhbHNl
OworICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBleGl0Lm1fY29k
ZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1l
ID0gaW5saW5lQ2FsbEZyYW1lLT5kaXJlY3RDYWxsZXIuaW5saW5lQ2FsbEZyYW1lKSB7CisgICAg
ICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLT5vd25lclNjcmlwdEV4
ZWN1dGFibGUoKS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgpKSB7CisgICAgICAgICAgICBkaWRUcnlU
b0VudGVySW5Mb29wID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorCisgICAgdWludDMyX3QgZXhpdENvdW50VGhyZXNob2xkID0gZGlkVHJ5VG9FbnRlckluTG9v
cAorICAgICAgICA/IGV4aXRDb3VudFRocmVzaG9sZEZvclJlb3B0aW1pemF0aW9uRnJvbUxvb3Ao
KQorICAgICAgICA6IGV4aXRDb3VudFRocmVzaG9sZEZvclJlb3B0aW1pemF0aW9uKCk7CisKKyAg
ICBpZiAobV9vc3JFeGl0Q291bnRlciA+IGV4aXRDb3VudFRocmVzaG9sZCkKKyAgICAgICAgcmV0
dXJuIE9wdGltaXplQWN0aW9uOjpSZW9wdGltaXplTm93OworCisgICAgLy8gVG9vIGZldyBmYWls
cy4gQWRqdXN0IHRoZSBleGVjdXRpb24gY291bnRlciBzdWNoIHRoYXQgdGhlIHRhcmdldCBpcyB0
byBvbmx5IG9wdGltaXplIGFmdGVyIGEgd2hpbGUuCisgICAgYmFzZWxpbmVDb2RlQmxvY2stPm1f
aml0RXhlY3V0ZUNvdW50ZXIuc2V0TmV3VGhyZXNob2xkRm9yT1NSRXhpdChleGl0U3RhdGUuYWN0
aXZlVGhyZXNob2xkLCBleGl0U3RhdGUubWVtb3J5VXNhZ2VBZGp1c3RlZFRocmVzaG9sZCk7Cisg
ICAgcmV0dXJuIE9wdGltaXplQWN0aW9uOjpOb25lOworfQorCiB2b2lkIENvZGVCbG9jazo6b3B0
aW1pemVOZXh0SW52b2NhdGlvbigpCiB7CiAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlz
aW9uIDIyMTY4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsMTAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
K25hbWVzcGFjZSBERkcgeworc3RydWN0IE9TUkV4aXRTdGF0ZTsKK30gLy8gbmFtZXNwYWNlIERG
RworCiBjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM7CiBjbGFzcyBDb2RlQmxvY2tTZXQ7
CiBjbGFzcyBFeGVjU3RhdGU7CkBAIC03NjIsOCArNzY2LDEwIEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgY291bnRPU1JFeGl0KCkgeyBtX29zckV4aXRDb3VudGVyKys7IH0KIAotICAgIHVpbnQzMl90
KiBhZGRyZXNzT2ZPU1JFeGl0Q291bnRlcigpIHsgcmV0dXJuICZtX29zckV4aXRDb3VudGVyOyB9
CisgICAgZW51bSBjbGFzcyBPcHRpbWl6ZUFjdGlvbiB7IE5vbmUsIFJlb3B0aW1pemVOb3cgfTsK
KyAgICBPcHRpbWl6ZUFjdGlvbiB1cGRhdGVPU1JFeGl0Q291bnRlckFuZENoZWNrSWZOZWVkVG9S
ZW9wdGltaXplKERGRzo6T1NSRXhpdFN0YXRlJik7CiAKKyAgICAvLyBGSVhNRTogcmVtb3ZlIHRo
aXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTE0NS4KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mT1NSRXhpdENvdW50ZXIoKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX29zckV4aXRDb3VudGVyKTsgfQogCiAg
ICAgdWludDMyX3QgYWRqdXN0ZWRFeGl0Q291bnRUaHJlc2hvbGQodWludDMyX3QgZGVzaXJlZFRo
cmVzaG9sZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0aW9u
Q291bnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGVjdXRpb25Db3VudGVyLmgJKHJldmlzaW9uIDIyMTY4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEs
NiArNDEsNyBAQCBlbnVtIENvdW50aW5nVmFyaWFudCB7CiBkb3VibGUgYXBwbHlNZW1vcnlVc2Fn
ZUhldXJpc3RpY3MoaW50MzJfdCB2YWx1ZSwgQ29kZUJsb2NrKik7CiBpbnQzMl90IGFwcGx5TWVt
b3J5VXNhZ2VIZXVyaXN0aWNzQW5kQ29udmVydFRvSW50KGludDMyX3QgdmFsdWUsIENvZGVCbG9j
ayopOwogCisvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSBmaXggaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0NS4KIGlubGluZSBpbnQzMl90IGZvcm1hdHRl
ZFRvdGFsRXhlY3V0aW9uQ291bnQoZmxvYXQgdmFsdWUpCiB7CiAgICAgdW5pb24gewpAQCAtNTcs
MTEgKzU4LDE5IEBAIHB1YmxpYzoKICAgICBFeGVjdXRpb25Db3VudGVyKCk7CiAgICAgdm9pZCBm
b3JjZVNsb3dQYXRoQ29uY3VycmVudGx5KCk7IC8vIElmIHlvdSB1c2UgdGhpcywgY2hlY2tJZlRo
cmVzaG9sZENyb3NzZWRBbmRTZXQoKSBtYXkgc3RpbGwgcmV0dXJuIGZhbHNlLgogICAgIGJvb2wg
Y2hlY2tJZlRocmVzaG9sZENyb3NzZWRBbmRTZXQoQ29kZUJsb2NrKik7CisgICAgYm9vbCBoYXND
cm9zc2VkVGhyZXNob2xkKCkgY29uc3QgeyByZXR1cm4gbV9jb3VudGVyID49IDA7IH0KICAgICB2
b2lkIHNldE5ld1RocmVzaG9sZChpbnQzMl90IHRocmVzaG9sZCwgQ29kZUJsb2NrKik7CiAgICAg
dm9pZCBkZWZlckluZGVmaW5pdGVseSgpOwogICAgIGRvdWJsZSBjb3VudCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4obV90b3RhbENvdW50KSArIG1fY291bnRlcjsgfQogICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIAorICAgIHZvaWQgc2V0TmV3VGhy
ZXNob2xkRm9yT1NSRXhpdCh1aW50MzJfdCBhY3RpdmVUaHJlc2hvbGQsIGRvdWJsZSBtZW1vcnlV
c2FnZUFkanVzdGVkVGhyZXNob2xkKQorICAgIHsKKyAgICAgICAgbV9hY3RpdmVUaHJlc2hvbGQg
PSBhY3RpdmVUaHJlc2hvbGQ7CisgICAgICAgIG1fY291bnRlciA9IHN0YXRpY19jYXN0PGludDMy
X3Q+KC1tZW1vcnlVc2FnZUFkanVzdGVkVGhyZXNob2xkKTsKKyAgICAgICAgbV90b3RhbENvdW50
ID0gbWVtb3J5VXNhZ2VBZGp1c3RlZFRocmVzaG9sZDsKKyAgICB9CisKICAgICBzdGF0aWMgaW50
MzJfdCBtYXhpbXVtRXhlY3V0aW9uQ291bnRzQmV0d2VlbkNoZWNrcG9pbnRzKCkKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAoY291bnRpbmdWYXJpYW50KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUuY3BwCShyZXZpc2lvbiAyMjE2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDYsNiArNDYsOCBAQCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIE1l
dGhvZE9mR2V0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorLy8gRklYTUU6IFRoaXMgaXMgYmVp
bmcgc3VwcGxhbnRlZCBieSByZXBvcnRWYWx1ZSgpLiBSZW1vdmUgdGhpcyBvbmUKKy8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUgaGFzIGJlZW4gZml4ZWQu
CiB2b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OmVtaXRSZXBvcnRWYWx1ZShDQ2Fs
bEhlbHBlcnMmIGppdCwgSlNWYWx1ZVJlZ3MgcmVncykgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1f
a2luZCkgewpAQCAtNzQsNiArNzYsMzQgQEAgdm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9m
aWxlOjplbWl0UgogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3ZvaWQg
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6cmVwb3J0VmFsdWUoSlNWYWx1ZSB2YWx1ZSkK
K3sKKyAgICBzd2l0Y2ggKG1fa2luZCkgeworICAgIGNhc2UgTm9uZToKKyAgICAgICAgcmV0dXJu
OworCisgICAgY2FzZSBSZWFkeToKKyAgICAgICAgKnUucHJvZmlsZS0+c3BlY0ZhaWxCdWNrZXQo
MCkgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNl
IExhenlPcGVyYW5kOiB7CisgICAgICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5IGtleSh1
LmxhenlPcGVyYW5kLmJ5dGVjb2RlT2Zmc2V0LCBWaXJ0dWFsUmVnaXN0ZXIodS5sYXp5T3BlcmFu
ZC5vcGVyYW5kKSk7CisKKyAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcih1LmxhenlP
cGVyYW5kLmNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGUqIHByb2ZpbGUgPQorICAgICAgICAgICAgdS5sYXp5T3BlcmFuZC5jb2RlQmxvY2stPmxhenlP
cGVyYW5kVmFsdWVQcm9maWxlcygpLmFkZChsb2NrZXIsIGtleSk7CisgICAgICAgICpwcm9maWxl
LT5zcGVjRmFpbEJ1Y2tldCgwKSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBjYXNlIEFyaXRoUHJvZmlsZVJlYWR5OiB7CisgICAgICAgIHUu
YXJpdGhQcm9maWxlLT5vYnNlcnZlUmVzdWx0KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0gfQorCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FW
YWx1ZVByb2ZpbGUuaAkocmV2aXNpb24gMjIxNjg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC03MCw5ICs3MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIENvZGVCbG9jayosIGNvbnN0IExh
enlPcGVyYW5kVmFsdWVQcm9maWxlS2V5Jik7CiAgICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCAhPSBOb25lOyB9Ci0gICAgCisKKyAgICAvLyBG
SVhNRTogZW1pdFJlcG9ydFZhbHVlIGlzIGJlaW5nIHN1cHBsYW50ZWQgYnkgcmVwb3J0VmFsdWUo
KS4gUmVtb3ZlIHRoaXMgb25lCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NTE0NSBoYXMgYmVlbiBmaXhlZC4KICAgICB2b2lkIGVtaXRSZXBvcnRWYWx1
ZShDQ2FsbEhlbHBlcnMmLCBKU1ZhbHVlUmVncykgY29uc3Q7Ci0gICAgCisgICAgdm9pZCByZXBv
cnRWYWx1ZShKU1ZhbHVlKTsKKwogcHJpdmF0ZToKICAgICBlbnVtIEtpbmQgewogICAgICAgICBO
b25lLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkocmV2aXNp
b24gMjIxNjg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODksNyArODksNyBAQCBzdGF0aWMgQ29tcGlsYXRpb25S
ZXN1bHQgY29tcGlsZUltcGwoCiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgYW55IHN0dWJz
IHRoYXQgdGhlIERGRyBpcyBnb2luZyB0byB1c2UgYXJlIGluaXRpYWxpemVkLiBXZSB3YW50IHRv
CiAgICAgLy8gbWFrZSBzdXJlIHRoYXQgYWxsIEpJVCBjb2RlIGdlbmVyYXRpb24gZG9lcyBmaW5h
bGl6YXRpb24gb24gdGhlIG1haW4gdGhyZWFkLgotICAgIHZtLmdldENUSVN0dWIob3NyRXhpdEdl
bmVyYXRpb25UaHVua0dlbmVyYXRvcik7CisgICAgdm0uZ2V0Q1RJU3R1Yihvc3JFeGl0VGh1bmtH
ZW5lcmF0b3IpOwogICAgIHZtLmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQ
YXRoR2VuZXJhdG9yKTsKICAgICB2bS5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3Ip
OwogICAgIHZtLmdldENUSVN0dWIobGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2VuZXJhdG9yKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAkocmV2aXNpb24g
MjIxNjg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjI1LDE4ICsyMjUsNiBAQCB2b2lkIEpJVENvZGU6OnZhbGlkYXRlUmVm
ZXJlbmNlcyhjb25zdCBUCiAgICAgbWluaWZpZWRERkcudmFsaWRhdGVSZWZlcmVuY2VzKHRyYWNr
ZWRSZWZlcmVuY2VzKTsKIH0KIAotc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPiBKSVRDb2RlOjpm
aW5kUEMoQ29kZUJsb2NrKiwgdm9pZCogcGMpCi17Ci0gICAgZm9yIChPU1JFeGl0JiBleGl0IDog
b3NyRXhpdCkgewotICAgICAgICBpZiAoRXhlY3V0YWJsZU1lbW9yeUhhbmRsZSogaGFuZGxlID0g
ZXhpdC5tX2NvZGUuZXhlY3V0YWJsZU1lbW9yeSgpKSB7Ci0gICAgICAgICAgICBpZiAoaGFuZGxl
LT5zdGFydCgpIDw9IHBjICYmIHBjIDwgaGFuZGxlLT5lbmQoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPihleGl0Lm1fY29kZU9yaWdpbkZvckV4aXRQ
cm9maWxlKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19
Ci0KIHZvaWQgSklUQ29kZTo6ZmluYWxpemVPU1JFbnRyeXBvaW50cygpCiB7CiAgICAgYXV0byBj
b21wYXJhdG9yID0gW10gKGNvbnN0IGF1dG8mIGEsIGNvbnN0IGF1dG8mIGIpIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCShyZXZpc2lvbiAyMjE2ODcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTI2LDggKzEyNiw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBwdHJkaWZmX3QgY29tbW9uRGF0
YU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKSVRDb2RlLCBjb21tb24pOyB9CiAK
LSAgICBzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IGZpbmRQQyhDb2RlQmxvY2sqLCB2b2lkKiBw
Yykgb3ZlcnJpZGU7Ci0gICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBKSVRDb21waWxl
cjsgLy8gQWxsb3cgSklUQ29tcGlsZXIgdG8gY2FsbCBzZXRDb2RlUmVmKCkuCiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAy
MjE2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODUsOCArODUsOSBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rT1NS
RXhpdHMoKQogICAgICAgICB9CiAgICAgfQogICAgIAorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBvc3JFeGl0VGh1bmsgPSB2bSgpLT5nZXRDVElTdHViKG9zckV4aXRUaHVua0dlbmVyYXRvcik7
CisgICAgQ29kZUxvY2F0aW9uTGFiZWwgb3NyRXhpdFRodW5rTGFiZWwgPSBDb2RlTG9jYXRpb25M
YWJlbChvc3JFeGl0VGh1bmsuY29kZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9qaXRDb2RlLT5vc3JFeGl0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIE9TUkV4aXQmIGV4aXQg
PSBtX2ppdENvZGUtPm9zckV4aXRbaV07CiAgICAgICAgIE9TUkV4aXRDb21waWxhdGlvbkluZm8m
IGluZm8gPSBtX2V4aXRDb21waWxhdGlvbkluZm9baV07CiAgICAgICAgIEp1bXBMaXN0JiBmYWls
dXJlSnVtcHMgPSBpbmZvLm1fZmFpbHVyZUp1bXBzOwogICAgICAgICBpZiAoIWZhaWx1cmVKdW1w
cy5lbXB0eSgpKQpAQCAtOTYsNyArOTcsMTAgQEAgdm9pZCBKSVRDb21waWxlcjo6bGlua09TUkV4
aXRzKCkKIAogICAgICAgICBqaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpOwogICAgICAgICBz
dG9yZTMyKFRydXN0ZWRJbW0zMihpKSwgJnZtKCktPm9zckV4aXRJbmRleCk7Ci0gICAgICAgIGV4
aXQuc2V0UGF0Y2hhYmxlQ29kZU9mZnNldChwYXRjaGFibGVKdW1wKCkpOworICAgICAgICBKdW1w
IHRhcmdldCA9IGp1bXAoKTsKKyAgICAgICAgYWRkTGlua1Rhc2soW3RhcmdldCwgb3NyRXhpdFRo
dW5rTGFiZWxdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICBsaW5rQnVm
ZmVyLmxpbmsodGFyZ2V0LCBvc3JFeGl0VGh1bmtMYWJlbCk7CisgICAgICAgIH0pOwogICAgIH0K
IH0KIApAQCAtMzAzLDEzICszMDcsOCBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZm
ZXImIGxpbmtCCiAgICAgICAgICAgICBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbChyZWNv
cmQuY2FsbCkpOwogICAgIH0KICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhp
dFRodW5rID0gdm0oKS0+Z2V0Q1RJU3R1Yihvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9y
KTsKLSAgICBDb2RlTG9jYXRpb25MYWJlbCB0YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbChvc3JF
eGl0VGh1bmsuY29kZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9qaXRDb2Rl
LT5vc3JFeGl0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIE9TUkV4aXQmIGV4aXQgPSBtX2ppdENv
ZGUtPm9zckV4aXRbaV07CiAgICAgICAgIE9TUkV4aXRDb21waWxhdGlvbkluZm8mIGluZm8gPSBt
X2V4aXRDb21waWxhdGlvbkluZm9baV07Ci0gICAgICAgIGxpbmtCdWZmZXIubGluayhleGl0Lmdl
dFBhdGNoYWJsZUNvZGVPZmZzZXRBc0p1bXAoKSwgdGFyZ2V0KTsKLSAgICAgICAgZXhpdC5jb3Jy
ZWN0SnVtcChsaW5rQnVmZmVyKTsKICAgICAgICAgaWYgKGluZm8ubV9yZXBsYWNlbWVudFNvdXJj
ZS5pc1NldCgpKSB7CiAgICAgICAgICAgICBtX2ppdENvZGUtPmNvbW1vbi5qdW1wUmVwbGFjZW1l
bnRzLmFwcGVuZChKdW1wUmVwbGFjZW1lbnQoCiAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5s
b2NhdGlvbk9mKGluZm8ubV9yZXBsYWNlbWVudFNvdXJjZSksCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHJldmlzaW9uIDIyMTY4NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjks
NTcgKzI5LDI0NSBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAiQXNzZW1ibHlI
ZWxwZXJzLmgiCisjaW5jbHVkZSAiQ2xvbmVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiREZHR3Jh
cGguaCIKICNpbmNsdWRlICJERkdNYXlFeGl0LmgiCi0jaW5jbHVkZSAiREZHT1NSRXhpdENvbXBp
bGVyQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdFByZXBhcmF0aW9uLmgiCiAjaW5jbHVk
ZSAiREZHT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkRGR1NwZWN1bGF0aXZlSklULmgiCi0jaW5j
bHVkZSAiRnJhbWVUcmFjZXJzLmgiCisjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCisjaW5j
bHVkZSAiSW5saW5lQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1
ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMuaCIKKyNpbmNsdWRl
ICJQcm9iZUNvbnRleHQuaCIKKyNpbmNsdWRlICJQcm9iZUZyYW1lLmgiCiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKIAotT1NSRXhpdDo6T1NSRXhpdChFeGl0S2luZCBraW5kLCBK
U1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUg
dmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCogaml0LCB1bnNpZ25lZCBzdHJlYW1JbmRleCwg
dW5zaWduZWQgcmVjb3ZlcnlJbmRleCkKLSAgICA6IE9TUkV4aXRCYXNlKGtpbmQsIGppdC0+bV9v
cmlnaW4uZm9yRXhpdCwgaml0LT5tX29yaWdpbi5zZW1hbnRpYywgaml0LT5tX29yaWdpbi53YXNI
b2lzdGVkKQotICAgICwgbV9qc1ZhbHVlU291cmNlKGpzVmFsdWVTb3VyY2UpCi0gICAgLCBtX3Zh
bHVlUHJvZmlsZSh2YWx1ZVByb2ZpbGUpCi0gICAgLCBtX3JlY292ZXJ5SW5kZXgocmVjb3ZlcnlJ
bmRleCkKLSAgICAsIG1fc3RyZWFtSW5kZXgoc3RyZWFtSW5kZXgpCit1c2luZyBDUFVTdGF0ZSA9
IFByb2JlOjpDUFVTdGF0ZTsKK3VzaW5nIENvbnRleHQgPSBQcm9iZTo6Q29udGV4dDsKK3VzaW5n
IEZyYW1lID0gUHJvYmU6OkZyYW1lOworCitzdGF0aWMgdm9pZCByZWlmeUlubGluZWRDYWxsRnJh
bWVzKFByb2JlOjpDb250ZXh0JiwgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jaywgY29uc3Qg
T1NSRXhpdEJhc2UmKTsKK3N0YXRpYyB2b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChQcm9iZTo6
Q29udGV4dCYsIFZNJiwgQ29kZUJsb2NrKiwgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jaywg
T1NSRXhpdCYpOworc3RhdGljIHZvaWQgcHJpbnRPU1JFeGl0KENvbnRleHQmLCB1aW50MzJfdCBv
c3JFeGl0SW5kZXgsIGNvbnN0IE9TUkV4aXQmKTsKKworc3RhdGljIEpTVmFsdWUganNWYWx1ZUZv
cihDUFVTdGF0ZSYgY3B1LCBKU1ZhbHVlU291cmNlIHNvdXJjZSkKIHsKLSAgICBib29sIGNhbkV4
aXQgPSBqaXQtPm1fb3JpZ2luLmV4aXRPSzsKLSAgICBpZiAoIWNhbkV4aXQgJiYgaml0LT5tX2N1
cnJlbnROb2RlKSB7Ci0gICAgICAgIEV4aXRNb2RlIGV4aXRNb2RlID0gbWF5RXhpdChqaXQtPm1f
aml0LmdyYXBoKCksIGppdC0+bV9jdXJyZW50Tm9kZSk7Ci0gICAgICAgIGNhbkV4aXQgPSBleGl0
TW9kZSA9PSBFeGl0TW9kZTo6RXhpdHMgfHwgZXhpdE1vZGUgPT0gRXhpdE1vZGU6OkV4aXRzRm9y
RXhjZXB0aW9uczsKKyAgICBpZiAoc291cmNlLmlzQWRkcmVzcygpKSB7CisgICAgICAgIEpTVmFs
dWUgcmVzdWx0OworICAgICAgICBzdGQ6Om1lbWNweSgmcmVzdWx0LCBjcHUuZ3ByPHVpbnQ4X3Qq
Pihzb3VyY2UuYmFzZSgpKSArIHNvdXJjZS5vZmZzZXQoKSwgc2l6ZW9mKEpTVmFsdWUpKTsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgREZHX0FTU0VSVChqaXQtPm1faml0Lmdy
YXBoKCksIGppdC0+bV9jdXJyZW50Tm9kZSwgY2FuRXhpdCk7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKGNwdS5ncHI8RW5jb2RlZEpTVmFsdWU+KHNvdXJj
ZS5ncHIoKSkpOworI2Vsc2UKKyAgICBpZiAoc291cmNlLmhhc0tub3duVGFnKCkpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlKHNvdXJjZS50YWcoKSwgY3B1LmdwcjxpbnQzMl90Pihzb3VyY2UucGF5
bG9hZEdQUigpKSk7CisgICAgcmV0dXJuIEpTVmFsdWUoY3B1LmdwcjxpbnQzMl90Pihzb3VyY2Uu
dGFnR1BSKCkpLCBjcHUuZ3ByPGludDMyX3Q+KHNvdXJjZS5wYXlsb2FkR1BSKCkpKTsKKyNlbmRp
ZgogfQogCi12b2lkIE9TUkV4aXQ6OnNldFBhdGNoYWJsZUNvZGVPZmZzZXQoTWFjcm9Bc3NlbWJs
ZXI6OlBhdGNoYWJsZUp1bXAgY2hlY2spCisjaWYgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJ
U1RFUlMgPiAwCisKKy8vIEJhc2VkIG9uIEFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmVDYWxs
ZWVTYXZlc0ZvcigpLgorc3RhdGljIHZvaWQgcmVzdG9yZUNhbGxlZVNhdmVzRm9yKENvbnRleHQm
IGNvbnRleHQsIENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIG1fcGF0Y2hhYmxlQ29kZU9m
ZnNldCA9IGNoZWNrLm1fanVtcC5tX2xhYmVsLm1fb2Zmc2V0OworICAgIEFTU0VSVChjb2RlQmxv
Y2spOworCisgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0gY29kZUJsb2Nr
LT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmVSZWdp
c3RlcnMgPSBSZWdpc3RlclNldChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0
ZXJTZXQ6OmFsbEZQUnMoKSk7CisgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNh
dmVzLT5zaXplKCk7CisKKyAgICB1aW50cHRyX3QqIHBoeXNpY2FsU3RhY2tGcmFtZSA9IGNvbnRl
eHQuZnA8dWludHB0cl90Kj4oKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0
ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVT
YXZlcy0+YXQoaSk7CisgICAgICAgIGlmIChkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnku
cmVnKCkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIC8vIFRoZSBjYWxsZWUgc2F2
ZWQgdmFsdWVzIGNvbWUgZnJvbSB0aGUgb3JpZ2luYWwgc3RhY2ssIG5vdCB0aGUgcmVjb3ZlcmVk
IHN0YWNrLgorICAgICAgICAvLyBIZW5jZSwgd2UgcmVhZCB0aGUgdmFsdWVzIGRpcmVjdGx5IGZy
b20gdGhlIHBoeXNpY2FsIHN0YWNrIG1lbW9yeSBpbnN0ZWFkIG9mCisgICAgICAgIC8vIGdvaW5n
IHRocm91Z2ggY29udGV4dC5zdGFjaygpLgorICAgICAgICBBU1NFUlQoIShlbnRyeS5vZmZzZXQo
KSAlIHNpemVvZih1aW50cHRyX3QpKSk7CisgICAgICAgIGNvbnRleHQuZ3ByKGVudHJ5LnJlZygp
LmdwcigpKSA9IHBoeXNpY2FsU3RhY2tGcmFtZVtlbnRyeS5vZmZzZXQoKSAvIHNpemVvZih1aW50
cHRyX3QpXTsKKyAgICB9CiB9CiAKLU1hY3JvQXNzZW1ibGVyOjpKdW1wIE9TUkV4aXQ6OmdldFBh
dGNoYWJsZUNvZGVPZmZzZXRBc0p1bXAoKSBjb25zdAorLy8gQmFzZWQgb24gQXNzZW1ibHlIZWxw
ZXJzOjplbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKCkuCitzdGF0aWMgdm9pZCBzYXZlQ2FsbGVlU2F2
ZXNGb3IoQ29udGV4dCYgY29udGV4dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0
dXJuIE1hY3JvQXNzZW1ibGVyOjpKdW1wKEFzc2VtYmxlckxhYmVsKG1fcGF0Y2hhYmxlQ29kZU9m
ZnNldCkpOworICAgIGF1dG8mIHN0YWNrID0gY29udGV4dC5zdGFjaygpOworICAgIEFTU0VSVChj
b2RlQmxvY2spOworCisgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0gY29k
ZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgUmVnaXN0ZXJTZXQgZG9udFNhdmVS
ZWdpc3RlcnMgPSBSZWdpc3RlclNldChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVn
aXN0ZXJTZXQ6OmFsbEZQUnMoKSk7CisgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxl
ZVNhdmVzLT5zaXplKCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJD
b3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZl
cy0+YXQoaSk7CisgICAgICAgIGlmIChkb250U2F2ZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkp
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHN0YWNrLnNldChjb250ZXh0LmZwKCks
IGVudHJ5Lm9mZnNldCgpLCBjb250ZXh0Lmdwcjx1aW50cHRyX3Q+KGVudHJ5LnJlZygpLmdwcigp
KSk7CisgICAgfQogfQogCi1Db2RlTG9jYXRpb25KdW1wIE9TUkV4aXQ6OmNvZGVMb2NhdGlvbkZv
clJlcGF0Y2goQ29kZUJsb2NrKiBkZmdDb2RlQmxvY2spIGNvbnN0CisvLyBCYXNlZCBvbiBBc3Nl
bWJseUhlbHBlcnM6OnJlc3RvcmVDYWxsZWVTYXZlc0Zyb21WTUVudHJ5RnJhbWVDYWxsZWVTYXZl
c0J1ZmZlcigpLgorc3RhdGljIHZvaWQgcmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNRW50cnlGcmFt
ZUNhbGxlZVNhdmVzQnVmZmVyKENvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIENvZGVM
b2NhdGlvbkp1bXAoZGZnQ29kZUJsb2NrLT5qaXRDb2RlKCktPmRhdGFBZGRyZXNzQXRPZmZzZXQo
bV9wYXRjaGFibGVDb2RlT2Zmc2V0KSk7CisgICAgVk0mIHZtID0gKmNvbnRleHQuYXJnPFZNKj4o
KTsKKyAgICBhdXRvJiBzdGFjayA9IGNvbnRleHQuc3RhY2soKTsKKworICAgIFJlZ2lzdGVyQXRP
ZmZzZXRMaXN0KiBhbGxDYWxsZWVTYXZlcyA9IFZNOjpnZXRBbGxDYWxsZWVTYXZlUmVnaXN0ZXJP
ZmZzZXRzKCk7CisgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmVSZWdpc3RlcnMgPSBSZWdpc3Rl
clNldDo6c3RhY2tSZWdpc3RlcnMoKTsKKyAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gYWxs
Q2FsbGVlU2F2ZXMtPnNpemUoKTsKKworICAgIFZNRW50cnlSZWNvcmQqIGVudHJ5UmVjb3JkID0g
dm1FbnRyeVJlY29yZCh2bS50b3BWTUVudHJ5RnJhbWUpOworICAgIHZvaWQqIGNhbGxlZVNhdmVC
dWZmZXIgPSBlbnRyeVJlY29yZC0+Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlcjsKKworICAgIC8v
IFJlc3RvcmUgYWxsIGNhbGxlZSBzYXZlcy4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
cmVnaXN0ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBh
bGxDYWxsZWVTYXZlcy0+YXQoaSk7CisgICAgICAgIGlmIChkb250UmVzdG9yZVJlZ2lzdGVycy5n
ZXQoZW50cnkucmVnKCkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChlbnRy
eS5yZWcoKS5pc0dQUigpKQorICAgICAgICAgICAgY29udGV4dC5ncHIoZW50cnkucmVnKCkuZ3By
KCkpID0gc3RhY2suZ2V0PHVpbnRwdHJfdD4oY2FsbGVlU2F2ZUJ1ZmZlciwgZW50cnkub2Zmc2V0
KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb250ZXh0LmdwcihlbnRyeS5yZWcoKS5n
cHIoKSkgPSBzdGFjay5nZXQ8ZG91YmxlPihjYWxsZWVTYXZlQnVmZmVyLCBlbnRyeS5vZmZzZXQo
KSk7CisgICAgfQogfQogCi12b2lkIE9TUkV4aXQ6OmNvcnJlY3RKdW1wKExpbmtCdWZmZXImIGxp
bmtCdWZmZXIpCisvLyBCYXNlZCBvbiBBc3NlbWJseUhlbHBlcnM6OmNvcHlDYWxsZWVTYXZlc1Rv
Vk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoKS4KK3N0YXRpYyB2b2lkIGNvcHlDYWxsZWVT
YXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoQ29udGV4dCYgY29udGV4dCkKIHsK
LSAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbGFiZWw7Ci0gICAgbGFiZWwubV9sYWJlbC5tX29m
ZnNldCA9IG1fcGF0Y2hhYmxlQ29kZU9mZnNldDsKLSAgICBtX3BhdGNoYWJsZUNvZGVPZmZzZXQg
PSBsaW5rQnVmZmVyLm9mZnNldE9mKGxhYmVsKTsKKyAgICBWTSYgdm0gPSAqY29udGV4dC5hcmc8
Vk0qPigpOworICAgIGF1dG8mIHN0YWNrID0gY29udGV4dC5zdGFjaygpOworCisgICAgVk1FbnRy
eVJlY29yZCogZW50cnlSZWNvcmQgPSB2bUVudHJ5UmVjb3JkKHZtLnRvcFZNRW50cnlGcmFtZSk7
CisgICAgdm9pZCogY2FsbGVlU2F2ZUJ1ZmZlciA9IGVudHJ5UmVjb3JkLT5jYWxsZWVTYXZlUmVn
aXN0ZXJzQnVmZmVyOworCisgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGFsbENhbGxlZVNhdmVz
ID0gVk06OmdldEFsbENhbGxlZVNhdmVSZWdpc3Rlck9mZnNldHMoKTsKKyAgICBSZWdpc3RlclNl
dCBkb250Q29weVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpOworICAg
IHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBhbGxDYWxsZWVTYXZlcy0+c2l6ZSgpOworCisgICAg
QVNTRVJUKGlzNjRCaXQoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lzdGVy
Q291bnQ7IGkrKykgeworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gYWxsQ2FsbGVl
U2F2ZXMtPmF0KGkpOworICAgICAgICBpZiAoZG9udENvcHlSZWdpc3RlcnMuZ2V0KGVudHJ5LnJl
ZygpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoZW50cnkucmVnKCkuaXNH
UFIoKSkKKyAgICAgICAgICAgIHN0YWNrLnNldChjYWxsZWVTYXZlQnVmZmVyLCBlbnRyeS5vZmZz
ZXQoKSwgY29udGV4dC5ncHI8dWludHB0cl90PihlbnRyeS5yZWcoKS5ncHIoKSkpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBzdGFjay5zZXQoY2FsbGVlU2F2ZUJ1ZmZlciwgZW50cnkub2Zm
c2V0KCksIGNvbnRleHQuZnByPHVpbnRwdHJfdD4oZW50cnkucmVnKCkuZnByKCkpKTsKKyAgICB9
CiB9CiAKLXZvaWQgT1NSRXhpdDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+JiBvcGVyYW5kcykKKy8vIEJhc2VkIG9u
IEFzc2VtYmx5SGVscGVyczo6ZW1pdFNhdmVPckNvcHlDYWxsZWVTYXZlc0ZvcigpLgorc3RhdGlj
IHZvaWQgc2F2ZU9yQ29weUNhbGxlZVNhdmVzRm9yKENvbnRleHQmIGNvbnRleHQsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBWaXJ0dWFsUmVnaXN0ZXIgb2Zmc2V0VmlydHVhbFJlZ2lzdGVyLCBib29s
IHdhc0NhbGxlZFZpYVRhaWxDYWxsKQogeworICAgIEZyYW1lIGZyYW1lKGNvbnRleHQuZnAoKSwg
Y29udGV4dC5zdGFjaygpKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrKTsKKworICAgIFJlZ2lzdGVy
QXRPZmZzZXRMaXN0KiBjYWxsZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVy
cygpOworICAgIFJlZ2lzdGVyU2V0IGRvbnRTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVn
aXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjphbGxGUFJzKCkpOworICAg
IHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6ZSgpOworCisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICBSZWdpc3RlclNldCBiYXNlbGluZUNhbGxlZVNhdmVzID0gUmVnaXN0
ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CisjZW5kaWYKKworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsKKyAgICAgICAg
UmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxlZVNhdmVzLT5hdChpKTsKKyAgICAgICAgaWYg
KGRvbnRTYXZlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICB1aW50cHRyX3Qgc2F2ZWRSZWdpc3RlclZhbHVlOworCisjaWYgVVNFKEpT
VkFMVUUzMl82NCkKKyAgICAgICAgVU5VU0VEX1BBUkFNKHdhc0NhbGxlZFZpYVRhaWxDYWxsKTsK
KyNlbHNlCisgICAgICAgIGlmICh3YXNDYWxsZWRWaWFUYWlsQ2FsbCAmJiBiYXNlbGluZUNhbGxl
ZVNhdmVzLmdldChlbnRyeS5yZWcoKSkpCisgICAgICAgICAgICBzYXZlZFJlZ2lzdGVyVmFsdWUg
PSBmcmFtZS5nZXQ8dWludHB0cl90PihlbnRyeS5vZmZzZXQoKSk7CisgICAgICAgIGVsc2UKKyNl
bmRpZgorICAgICAgICAgICAgc2F2ZWRSZWdpc3RlclZhbHVlID0gY29udGV4dC5ncHIoZW50cnku
cmVnKCkuZ3ByKCkpOworCisgICAgICAgIGZyYW1lLnNldChvZmZzZXRWaXJ0dWFsUmVnaXN0ZXIu
b2Zmc2V0SW5CeXRlcygpICsgZW50cnkub2Zmc2V0KCksIHNhdmVkUmVnaXN0ZXJWYWx1ZSk7Cisg
ICAgfQorfQorI2Vsc2UgLy8gbm90IE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTID4g
MAorCitzdGF0aWMgdm9pZCByZXN0b3JlQ2FsbGVlU2F2ZXNGb3IoQ29udGV4dCYsIENvZGVCbG9j
ayopIHsgfQorc3RhdGljIHZvaWQgc2F2ZUNhbGxlZVNhdmVzRm9yKENvbnRleHQmLCBDb2RlQmxv
Y2sqKSB7IH0KK3N0YXRpYyB2b2lkIHJlc3RvcmVDYWxsZWVTYXZlc0Zyb21WTUVudHJ5RnJhbWVD
YWxsZWVTYXZlc0J1ZmZlcihDb250ZXh0JikgeyB9CitzdGF0aWMgdm9pZCBjb3B5Q2FsbGVlU2F2
ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKENvbnRleHQmKSB7IH0KK3N0YXRpYyB2
b2lkIHNhdmVPckNvcHlDYWxsZWVTYXZlc0ZvcihDb250ZXh0JiwgQ29kZUJsb2NrKiwgVmlydHVh
bFJlZ2lzdGVyLCBib29sKSB7IH0KKworI2VuZGlmIC8vIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNf
UkVHSVNURVJTID4gMAorCitzdGF0aWMgSlNDZWxsKiBjcmVhdGVEaXJlY3RBcmd1bWVudHNEdXJp
bmdFeGl0KENvbnRleHQmIGNvbnRleHQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbmxpbmVDYWxs
RnJhbWUqIGlubGluZUNhbGxGcmFtZSwgSlNGdW5jdGlvbiogY2FsbGVlLCBpbnQzMl90IGFyZ3Vt
ZW50Q291bnQpCit7CisgICAgVk0mIHZtID0gKmNvbnRleHQuYXJnPFZNKj4oKTsKKworICAgIEFT
U0VSVCh2bS5oZWFwLmlzRGVmZXJyZWQoKSk7CisKKyAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKQor
ICAgICAgICBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcklubGluZUNhbGxGcmFtZShp
bmxpbmVDYWxsRnJhbWUpOworCisgICAgdW5zaWduZWQgbGVuZ3RoID0gYXJndW1lbnRDb3VudCAt
IDE7CisgICAgdW5zaWduZWQgY2FwYWNpdHkgPSBzdGQ6Om1heChsZW5ndGgsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIDEpKTsKKyAgICBEaXJlY3RB
cmd1bWVudHMqIHJlc3VsdCA9IERpcmVjdEFyZ3VtZW50czo6Y3JlYXRlKAorICAgICAgICB2bSwg
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+ZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlKCksIGxl
bmd0aCwgY2FwYWNpdHkpOworCisgICAgcmVzdWx0LT5jYWxsZWUoKS5zZXQodm0sIHJlc3VsdCwg
Y2FsbGVlKTsKKworICAgIHZvaWQqIGZyYW1lQmFzZSA9IGNvbnRleHQuZnA8UmVnaXN0ZXIqPigp
ICsgKGlubGluZUNhbGxGcmFtZSA/IGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgOiAwKTsK
KyAgICBGcmFtZSBmcmFtZShmcmFtZUJhc2UsIGNvbnRleHQuc3RhY2soKSk7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KQorICAgICAgICByZXN1bHQtPnNldEluZGV4UXVpY2ts
eSh2bSwgaSwgZnJhbWUuZ2V0QXJndW1lbnQ8SlNWYWx1ZT4oaSkpOworCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworc3RhdGljIEpTQ2VsbCogY3JlYXRlQ2xvbmVkQXJndW1lbnRzRHVyaW5nRXhp
dChDb250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5saW5lQ2FsbEZyYW1l
KiBpbmxpbmVDYWxsRnJhbWUsIEpTRnVuY3Rpb24qIGNhbGxlZSwgaW50MzJfdCBhcmd1bWVudENv
dW50KQoreworICAgIFZNJiB2bSA9ICpjb250ZXh0LmFyZzxWTSo+KCk7CisgICAgRXhlY1N0YXRl
KiBleGVjID0gY29udGV4dC5mcDxFeGVjU3RhdGUqPigpOworCisgICAgQVNTRVJUKHZtLmhlYXAu
aXNEZWZlcnJlZCgpKTsKKworICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCisgICAgICAgIGNvZGVC
bG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1lKGlubGluZUNhbGxGcmFt
ZSk7CisKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBhcmd1bWVudENvdW50IC0gMTsKKyAgICBDbG9u
ZWRBcmd1bWVudHMqIHJlc3VsdCA9IENsb25lZEFyZ3VtZW50czo6Y3JlYXRlRW1wdHkoCisgICAg
ICAgIHZtLCBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5jbG9uZWRBcmd1bWVudHNTdHJ1Y3R1
cmUoKSwgY2FsbGVlLCBsZW5ndGgpOworCisgICAgdm9pZCogZnJhbWVCYXNlID0gY29udGV4dC5m
cDxSZWdpc3Rlcio+KCkgKyAoaW5saW5lQ2FsbEZyYW1lID8gaW5saW5lQ2FsbEZyYW1lLT5zdGFj
a09mZnNldCA6IDApOworICAgIEZyYW1lIGZyYW1lKGZyYW1lQmFzZSwgY29udGV4dC5zdGFjaygp
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspCisgICAgICAgIHJlc3VsdC0+
cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwgZnJhbWUuZ2V0QXJndW1lbnQ8SlNWYWx1ZT4oaSkpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK09TUkV4aXQ6Ok9TUkV4aXQoRXhpdEtpbmQga2luZCwg
SlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
IHZhbHVlUHJvZmlsZSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgdW5zaWduZWQgc3RyZWFtSW5kZXgs
IHVuc2lnbmVkIHJlY292ZXJ5SW5kZXgpCisgICAgOiBPU1JFeGl0QmFzZShraW5kLCBqaXQtPm1f
b3JpZ2luLmZvckV4aXQsIGppdC0+bV9vcmlnaW4uc2VtYW50aWMsIGppdC0+bV9vcmlnaW4ud2Fz
SG9pc3RlZCkKKyAgICAsIG1fanNWYWx1ZVNvdXJjZShqc1ZhbHVlU291cmNlKQorICAgICwgbV92
YWx1ZVByb2ZpbGUodmFsdWVQcm9maWxlKQorICAgICwgbV9yZWNvdmVyeUluZGV4KHJlY292ZXJ5
SW5kZXgpCisgICAgLCBtX3N0cmVhbUluZGV4KHN0cmVhbUluZGV4KQoreworICAgIGJvb2wgY2Fu
RXhpdCA9IGppdC0+bV9vcmlnaW4uZXhpdE9LOworICAgIGlmICghY2FuRXhpdCAmJiBqaXQtPm1f
Y3VycmVudE5vZGUpIHsKKyAgICAgICAgRXhpdE1vZGUgZXhpdE1vZGUgPSBtYXlFeGl0KGppdC0+
bV9qaXQuZ3JhcGgoKSwgaml0LT5tX2N1cnJlbnROb2RlKTsKKyAgICAgICAgY2FuRXhpdCA9IGV4
aXRNb2RlID09IEV4aXRNb2RlOjpFeGl0cyB8fCBleGl0TW9kZSA9PSBFeGl0TW9kZTo6RXhpdHNG
b3JFeGNlcHRpb25zOworICAgIH0KKyAgICBERkdfQVNTRVJUKGppdC0+bV9qaXQuZ3JhcGgoKSwg
aml0LT5tX2N1cnJlbnROb2RlLCBjYW5FeGl0KTsKK30KKworc3RhdGljIHZvaWQgZW1pdFJlc3Rv
cmVBcmd1bWVudHMoQ29udGV4dCYgY29udGV4dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0
IE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+JiBvcGVyYW5kcykKK3sKKyAgICBGcmFtZSBmcmFtZShj
b250ZXh0LmZwKCksIGNvbnRleHQuc3RhY2soKSk7CisKICAgICBIYXNoTWFwPE1pbmlmaWVkSUQs
IGludD4gYWxyZWFkeUFsbG9jYXRlZEFyZ3VtZW50czsgLy8gTWFwcyBwaGFudG9tIGFyZ3VtZW50
cyBub2RlIElEIHRvIG9wZXJhbmQuCiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8
IG9wZXJhbmRzLnNpemUoKTsgKytpbmRleCkgewogICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5
JiByZWNvdmVyeSA9IG9wZXJhbmRzW2luZGV4XTsKQEAgLTkyLDE0ICsyODAsMTIgQEAgdm9pZCBP
U1JFeGl0OjplbWl0UmVzdG9yZUFyZ3VtZW50cyhDQ2FsbAogICAgICAgICBNaW5pZmllZElEIGlk
ID0gcmVjb3Zlcnkubm9kZUlEKCk7CiAgICAgICAgIGF1dG8gaXRlciA9IGFscmVhZHlBbGxvY2F0
ZWRBcmd1bWVudHMuZmluZChpZCk7CiAgICAgICAgIGlmIChpdGVyICE9IGFscmVhZHlBbGxvY2F0
ZWRBcmd1bWVudHMuZW5kKCkpIHsKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzIHJlZ3MgPSBKU1Zh
bHVlUmVnczo6d2l0aFR3b0F2YWlsYWJsZVJlZ3MoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJl
Z1QxKTsKLSAgICAgICAgICAgIGppdC5sb2FkVmFsdWUoQ0NhbGxIZWxwZXJzOjphZGRyZXNzRm9y
KGl0ZXItPnZhbHVlKSwgcmVncyk7Ci0gICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZShyZWdzLCBD
Q2FsbEhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgZnJhbWUuc2V0
T3BlcmFuZChvcGVyYW5kLCBmcmFtZS5nZXRPcGVyYW5kPEpTVmFsdWU+KGl0ZXItPnZhbHVlKSk7
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIElubGluZUNhbGxG
cmFtZSogaW5saW5lQ2FsbEZyYW1lID0KLSAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+aml0
Q29kZSgpLT5kZmcoKS0+bWluaWZpZWRERkcuYXQoaWQpLT5pbmxpbmVDYWxsRnJhbWUoKTsKKyAg
ICAgICAgICAgIGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKS0+bWluaWZpZWRERkcuYXQoaWQp
LT5pbmxpbmVDYWxsRnJhbWUoKTsKIAogICAgICAgICBpbnQgc3RhY2tPZmZzZXQ7CiAgICAgICAg
IGlmIChpbmxpbmVDYWxsRnJhbWUpCkBAIC0xMDcsNTMgKzI5Myw0OCBAQCB2b2lkIE9TUkV4aXQ6
OmVtaXRSZXN0b3JlQXJndW1lbnRzKENDYWxsCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHN0
YWNrT2Zmc2V0ID0gMDsKIAotICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSB8fCBpbmxpbmVD
YWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpIHsKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKAotICAg
ICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihzdGFja09mZnNldCArIENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSksCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaml0Lm1vdmUoCi0gICAgICAgICAgICAgICAg
QXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVj
b3ZlcnkuY29uc3RhbnQoKS5hc0NlbGwoKSksCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVn
VDApOwotICAgICAgICB9CisgICAgICAgIEpTRnVuY3Rpb24qIGNhbGxlZTsKKyAgICAgICAgaWYg
KCFpbmxpbmVDYWxsRnJhbWUgfHwgaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQorICAg
ICAgICAgICAgY2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihmcmFtZS5nZXRPcGVyYW5kPEpT
VmFsdWU+KHN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKS5hc0NlbGwoKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oaW5s
aW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeS5jb25zdGFudCgpLmFzQ2VsbCgpKTsKIAotICAg
ICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSB8fCBpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygp
KSB7Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVs
cGVyczo6cGF5bG9hZEZvcihzdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQpLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIGppdC5tb3ZlKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTMyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
LAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKLSAgICAgICAgfQorICAgICAgICBp
bnQzMl90IGFyZ3VtZW50Q291bnQ7CisgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lIHx8IGlu
bGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCisgICAgICAgICAgICBhcmd1bWVudENvdW50ID0g
ZnJhbWUuZ2V0T3BlcmFuZDxpbnQzMl90PihzdGFja09mZnNldCArIENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnQsIFBheWxvYWRPZmZzZXQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBh
cmd1bWVudENvdW50ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
czsKIAotICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKAotICAgICAgICAg
ICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFtZSksIEdQUklu
Zm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgIEpTQ2VsbCogYXJndW1lbnRzT2Jq
ZWN0OwogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7CiAgICAgICAgIGNh
c2UgRGlyZWN0QXJndW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkOgotICAgICAgICAgICAgaml0Lm1v
dmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4ob3Bl
cmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdCkpLCBHUFJJbmZvOjpub25BcmdH
UFIwKTsKKyAgICAgICAgICAgIGFyZ3VtZW50c09iamVjdCA9IGNyZWF0ZURpcmVjdEFyZ3VtZW50
c0R1cmluZ0V4aXQoY29udGV4dCwgY29kZUJsb2NrLCBpbmxpbmVDYWxsRnJhbWUsIGNhbGxlZSwg
YXJndW1lbnRDb3VudCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDbG9uZWRB
cmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQ6Ci0gICAgICAgICAgICBqaXQubW92ZShBc3NlbWJs
eUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb25DcmVh
dGVDbG9uZWRBcmd1bWVudHNEdXJpbmdFeGl0KSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAg
ICAgICAgICAgYXJndW1lbnRzT2JqZWN0ID0gY3JlYXRlQ2xvbmVkQXJndW1lbnRzRHVyaW5nRXhp
dChjb250ZXh0LCBjb2RlQmxvY2ssIGlubGluZUNhbGxGcmFtZSwgY2FsbGVlLCBhcmd1bWVudENv
dW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9Ci0gICAgICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgICAgICBqaXQu
c3RvcmVDZWxsKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJl
c3NGb3Iob3BlcmFuZCkpOworICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFs
dWUoYXJndW1lbnRzT2JqZWN0KSk7CiAKICAgICAgICAgYWxyZWFkeUFsbG9jYXRlZEFyZ3VtZW50
cy5hZGQoaWQsIG9wZXJhbmQpOwogICAgIH0KIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIE9TUkV4
aXQ6OmNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYykKK3ZvaWQgT1NSRXhpdDo6ZXhlY3V0
ZU9TUkV4aXQoQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsK
LSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOworICAgIFZNJiB2bSA9
ICpjb250ZXh0LmFyZzxWTSo+KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgaWYgKHZtLT5jYWxsRnJhbWVGb3JDYXRjaCkKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlQodm0tPmNhbGxGcmFtZUZvckNhdGNoID09IGV4ZWMpOworICAgIEV4ZWNTdGF0ZSog
ZXhlYyA9IGNvbnRleHQuZnA8RXhlY1N0YXRlKj4oKTsKKyAgICBBU1NFUlQoJmV4ZWMtPnZtKCkg
PT0gJnZtKTsKKworICAgIGlmICh2bS5jYWxsRnJhbWVGb3JDYXRjaCkgeworICAgICAgICBleGVj
ID0gdm0uY2FsbEZyYW1lRm9yQ2F0Y2g7CisgICAgICAgIGNvbnRleHQuZnAoKSA9IGV4ZWM7Cisg
ICAgfQogCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAg
ICBBU1NFUlQoY29kZUJsb2NrKTsKQEAgLTE2MSw4MSArMzQyLDEwMSBAQCB2b2lkIEpJVF9PUEVS
QVRJT04gT1NSRXhpdDo6Y29tcGlsZU9TUkV4CiAKICAgICAvLyBJdCdzIHNvcnQgb2YgcHJlZmVy
YWJsZSB0aGF0IHdlIGRvbid0IEdDIHdoaWxlIGluIGhlcmUuIEFueXdheXMsIGRvaW5nIHNvIHdv
dWxkbid0CiAgICAgLy8gcmVhbGx5IGJlIHByb2ZpdGFibGUuCi0gICAgRGVmZXJHQ0ZvckFXaGls
ZSBkZWZlckdDKHZtLT5oZWFwKTsKKyAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0uaGVh
cCk7CiAKLSAgICB1aW50MzJfdCBleGl0SW5kZXggPSB2bS0+b3NyRXhpdEluZGV4OworICAgIHVp
bnQzMl90IGV4aXRJbmRleCA9IHZtLm9zckV4aXRJbmRleDsKICAgICBPU1JFeGl0JiBleGl0ID0g
Y29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpLT5vc3JFeGl0W2V4aXRJbmRleF07CiAKLSAgICBp
ZiAodm0tPmNhbGxGcmFtZUZvckNhdGNoKQotICAgICAgICBBU1NFUlQoZXhpdC5tX2tpbmQgPT0g
R2VuZXJpY1Vud2luZCk7Ci0gICAgaWYgKGV4aXQuaXNFeGNlcHRpb25IYW5kbGVyKCkpCi0gICAg
ICAgIEFTU0VSVF9VTlVTRUQoc2NvcGUsICEhc2NvcGUuZXhjZXB0aW9uKCkpOwotICAgIAotICAg
IHByZXBhcmVDb2RlT3JpZ2luRm9yT1NSRXhpdChleGVjLCBleGl0Lm1fY29kZU9yaWdpbik7Ci0K
LSAgICAvLyBDb21wdXRlIHRoZSB2YWx1ZSByZWNvdmVyaWVzLgotICAgIE9wZXJhbmRzPFZhbHVl
UmVjb3Zlcnk+IG9wZXJhbmRzOwotICAgIGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKS0+dmFy
aWFibGVFdmVudFN0cmVhbS5yZWNvbnN0cnVjdChjb2RlQmxvY2ssIGV4aXQubV9jb2RlT3JpZ2lu
LCBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnKCktPm1pbmlmaWVkREZHLCBleGl0Lm1fc3RyZWFt
SW5kZXgsIG9wZXJhbmRzKTsKLQotICAgIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5ID0g
MDsKLSAgICBpZiAoZXhpdC5tX3JlY292ZXJ5SW5kZXggIT0gVUlOVF9NQVgpCi0gICAgICAgIHJl
Y292ZXJ5ID0gJmNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKS0+c3BlY3VsYXRpb25SZWNvdmVy
eVtleGl0Lm1fcmVjb3ZlcnlJbmRleF07Ci0KLSAgICB7Ci0gICAgICAgIENDYWxsSGVscGVycyBq
aXQoY29kZUJsb2NrKTsKLQotICAgICAgICBpZiAoZXhpdC5tX2tpbmQgPT0gR2VuZXJpY1Vud2lu
ZCkgewotICAgICAgICAgICAgLy8gV2UgYXJlIGFjdGluZyBhcyBhIGRlZmFjdG8gb3BfY2F0Y2gg
YmVjYXVzZSB3ZSBhcnJpdmUgaGVyZSBmcm9tIGdlbmVyaWNVbndpbmQoKS4KLSAgICAgICAgICAg
IC8vIFNvLCB3ZSBtdXN0IHJlc3RvcmUgb3VyIGNhbGwgZnJhbWUgYW5kIHN0YWNrIHBvaW50ZXIu
Ci0gICAgICAgICAgICBqaXQucmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNhbGxl
ZVNhdmVzQnVmZmVyKCp2bSk7Ci0gICAgICAgICAgICBqaXQubG9hZFB0cih2bS0+YWRkcmVzc09m
Q2FsbEZyYW1lRm9yQ2F0Y2goKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAg
ICB9Ci0gICAgICAgIGppdC5hZGRQdHIoCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVy
KSksCi0gICAgICAgICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ0NhbGxIZWxwZXJz
OjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgQVNTRVJUKCF2bS5jYWxsRnJhbWVGb3JDYXRj
aCB8fCBleGl0Lm1fa2luZCA9PSBHZW5lcmljVW53aW5kKTsKKyAgICBBU1NFUlRfVU5VU0VEKHNj
b3BlLCAhZXhpdC5pc0V4Y2VwdGlvbkhhbmRsZXIoKSB8fCAhIXNjb3BlLmV4Y2VwdGlvbigpKTsK
KworICAgIGlmIChVTkxJS0VMWSghZXhpdC5leGl0U3RhdGUpKSB7CisgICAgICAgIC8vIFdlIG9u
bHkgbmVlZCB0byBleGVjdXRlIHRoaXMgYmxvY2sgb25jZSBmb3IgZWFjaCBPU1JFeGl0IHJlY29y
ZC4gVGhlIGNvbXB1dGVkCisgICAgICAgIC8vIHJlc3VsdHMgd2lsbCBiZSBjYWNoZWQgaW4gdGhl
IE9TUkV4aXRTdGF0ZSByZWNvcmQgZm9yIHVzZSBvZiB0aGUgcmVzdCBvZiB0aGUKKyAgICAgICAg
Ly8gZXhpdCByYW1wIGNvZGUuCisKKyAgICAgICAgLy8gRW5zdXJlIHdlIGhhdmUgYmFzZWxpbmUg
Y29kZUJsb2NrcyB0byBPU1IgZXhpdCB0by4KKyAgICAgICAgcHJlcGFyZUNvZGVPcmlnaW5Gb3JP
U1JFeGl0KGV4ZWMsIGV4aXQubV9jb2RlT3JpZ2luKTsKKworICAgICAgICBDb2RlQmxvY2sqIGJh
c2VsaW5lQ29kZUJsb2NrID0gY29kZUJsb2NrLT5iYXNlbGluZUFsdGVybmF0aXZlKCk7CisgICAg
ICAgIEFTU0VSVChiYXNlbGluZUNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkJhc2Vs
aW5lSklUKTsKKworICAgICAgICAvLyBDb21wdXRlIHRoZSB2YWx1ZSByZWNvdmVyaWVzLgorICAg
ICAgICBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiBvcGVyYW5kczsKKyAgICAgICAgY29kZUJsb2Nr
LT5qaXRDb2RlKCktPmRmZygpLT52YXJpYWJsZUV2ZW50U3RyZWFtLnJlY29uc3RydWN0KGNvZGVC
bG9jaywgZXhpdC5tX2NvZGVPcmlnaW4sIGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKS0+bWlu
aWZpZWRERkcsIGV4aXQubV9zdHJlYW1JbmRleCwgb3BlcmFuZHMpOworCisgICAgICAgIFNwZWN1
bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5ID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGV4aXQubV9y
ZWNvdmVyeUluZGV4ICE9IFVJTlRfTUFYKQorICAgICAgICAgICAgcmVjb3ZlcnkgPSAmY29kZUJs
b2NrLT5qaXRDb2RlKCktPmRmZygpLT5zcGVjdWxhdGlvblJlY292ZXJ5W2V4aXQubV9yZWNvdmVy
eUluZGV4XTsKIAotICAgICAgICBqaXQuaml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKTsKKyAg
ICAgICAgaW50MzJfdCBhY3RpdmVUaHJlc2hvbGQgPSBiYXNlbGluZUNvZGVCbG9jay0+YWRqdXN0
ZWRDb3VudGVyVmFsdWUoT3B0aW9uczo6dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJt
VXAoKSk7CisgICAgICAgIGRvdWJsZSBhZGp1c3RlZFRocmVzaG9sZCA9IGFwcGx5TWVtb3J5VXNh
Z2VIZXVyaXN0aWNzQW5kQ29udmVydFRvSW50KGFjdGl2ZVRocmVzaG9sZCwgYmFzZWxpbmVDb2Rl
QmxvY2spOworICAgICAgICBBU1NFUlQoYWRqdXN0ZWRUaHJlc2hvbGQgPiAwKTsKKyAgICAgICAg
YWRqdXN0ZWRUaHJlc2hvbGQgPSBCYXNlbGluZUV4ZWN1dGlvbkNvdW50ZXI6OmNsaXBwZWRUaHJl
c2hvbGQoY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgYWRqdXN0ZWRUaHJlc2hvbGQpOwogCi0g
ICAgICAgIGlmIChVTkxJS0VMWSh2bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyICYmIGNvZGVCbG9j
ay0+aml0Q29kZSgpLT5kZmdDb21tb24oKS0+Y29tcGlsYXRpb24pKSB7Ci0gICAgICAgICAgICBQ
cm9maWxlcjo6RGF0YWJhc2UmIGRhdGFiYXNlID0gKnZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXI7
CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrRm9yRXhpdCA9IGJhc2VsaW5lQ29kZUJsb2Nr
Rm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soZXhpdC5tX2NvZGVPcmlnaW4sIGJhc2VsaW5l
Q29kZUJsb2NrKTsKKyAgICAgICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4gZGVj
b2RlZENvZGVNYXA7CisgICAgICAgIGNvZGVCbG9ja0ZvckV4aXQtPmppdENvZGVNYXAoKS0+ZGVj
b2RlKGRlY29kZWRDb2RlTWFwKTsKKworICAgICAgICBCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQq
IG1hcHBpbmcgPSBiaW5hcnlTZWFyY2g8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0LCB1bnNpZ25l
ZD4oZGVjb2RlZENvZGVNYXAsIGRlY29kZWRDb2RlTWFwLnNpemUoKSwgZXhpdC5tX2NvZGVPcmln
aW4uYnl0ZWNvZGVJbmRleCwgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0OjpnZXRCeXRlY29kZUlu
ZGV4KTsKKworICAgICAgICBBU1NFUlQobWFwcGluZyk7CisgICAgICAgIEFTU0VSVChtYXBwaW5n
LT5tX2J5dGVjb2RlSW5kZXggPT0gZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CisK
KyAgICAgICAgcHRyZGlmZl90IGZpbmFsU3RhY2tQb2ludGVyT2Zmc2V0ID0gY29kZUJsb2NrRm9y
RXhpdC0+c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpOworCisgICAgICAg
IHZvaWQqIGp1bXBUYXJnZXQgPSBjb2RlQmxvY2tGb3JFeGl0LT5qaXRDb2RlKCktPmV4ZWN1dGFi
bGVBZGRyZXNzQXRPZmZzZXQobWFwcGluZy0+bV9tYWNoaW5lQ29kZU9mZnNldCk7CisKKyAgICAg
ICAgZXhpdC5leGl0U3RhdGUgPSBhZG9wdFJlZihuZXcgT1NSRXhpdFN0YXRlKGV4aXQsIGNvZGVC
bG9jaywgYmFzZWxpbmVDb2RlQmxvY2ssIG9wZXJhbmRzLCByZWNvdmVyeSwgZmluYWxTdGFja1Bv
aW50ZXJPZmZzZXQsIGFjdGl2ZVRocmVzaG9sZCwgYWRqdXN0ZWRUaHJlc2hvbGQsIGp1bXBUYXJn
ZXQpKTsKKworICAgICAgICBpZiAoVU5MSUtFTFkodm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyICYm
IGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmdDb21tb24oKS0+Y29tcGlsYXRpb24pKSB7CisgICAg
ICAgICAgICBQcm9maWxlcjo6RGF0YWJhc2UmIGRhdGFiYXNlID0gKnZtLm1fcGVyQnl0ZWNvZGVQ
cm9maWxlcjsKICAgICAgICAgICAgIFByb2ZpbGVyOjpDb21waWxhdGlvbiogY29tcGlsYXRpb24g
PSBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPmNvbXBpbGF0aW9uLmdldCgpOwog
CiAgICAgICAgICAgICBQcm9maWxlcjo6T1NSRXhpdCogcHJvZmlsZXJFeGl0ID0gY29tcGlsYXRp
b24tPmFkZE9TUkV4aXQoCiAgICAgICAgICAgICAgICAgZXhpdEluZGV4LCBQcm9maWxlcjo6T3Jp
Z2luU3RhY2soZGF0YWJhc2UsIGNvZGVCbG9jaywgZXhpdC5tX2NvZGVPcmlnaW4pLAogICAgICAg
ICAgICAgICAgIGV4aXQubV9raW5kLCBleGl0Lm1fa2luZCA9PSBVbmNvdW50YWJsZUludmFsaWRh
dGlvbik7Ci0gICAgICAgICAgICBqaXQuYWRkNjQoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
MSksIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKHByb2ZpbGVyRXhpdC0+Y291bnRlckFk
ZHJlc3MoKSkpOworICAgICAgICAgICAgZXhpdC5leGl0U3RhdGUtPnByb2ZpbGVyRXhpdCA9IHBy
b2ZpbGVyRXhpdDsKICAgICAgICAgfQogCi0gICAgICAgIGNvbXBpbGVFeGl0KGppdCwgKnZtLCBl
eGl0LCBvcGVyYW5kcywgcmVjb3ZlcnkpOwotCi0gICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIoaml0LCBjb2RlQmxvY2spOwotICAgICAgICBleGl0Lm1fY29kZSA9IEZJTkFMSVpFX0NPREVf
SUYoCi0gICAgICAgICAgICBzaG91bGREdW1wRGlzYXNzZW1ibHkoKSB8fCBPcHRpb25zOjp2ZXJi
b3NlT1NSKCkgfHwgT3B0aW9uczo6dmVyYm9zZURGR09TUkV4aXQoKSwKLSAgICAgICAgICAgIHBh
dGNoQnVmZmVyLAotICAgICAgICAgICAgKCJERkcgT1NSIGV4aXQgIyV1ICglcywgJXMpIGZyb20g
JXMsIHdpdGggb3BlcmFuZHMgPSAlcyIsCisgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp2
ZXJib3NlT1NSKCkgfHwgT3B0aW9uczo6dmVyYm9zZURGR09TUkV4aXQoKSkpIHsKKyAgICAgICAg
ICAgIGRhdGFMb2dGKCJERkcgT1NSIGV4aXQgIyV1ICglcywgJXMpIGZyb20gJXMsIHdpdGggb3Bl
cmFuZHMgPSAlc1xuIiwKICAgICAgICAgICAgICAgICBleGl0SW5kZXgsIHRvQ1N0cmluZyhleGl0
Lm1fY29kZU9yaWdpbikuZGF0YSgpLAogICAgICAgICAgICAgICAgIGV4aXRLaW5kVG9TdHJpbmco
ZXhpdC5tX2tpbmQpLCB0b0NTdHJpbmcoKmNvZGVCbG9jaykuZGF0YSgpLAotICAgICAgICAgICAg
ICAgIHRvQ1N0cmluZyhpZ25vcmluZ0NvbnRleHQ8RHVtcENvbnRleHQ+KG9wZXJhbmRzKSkuZGF0
YSgpKSk7CisgICAgICAgICAgICAgICAgdG9DU3RyaW5nKGlnbm9yaW5nQ29udGV4dDxEdW1wQ29u
dGV4dD4ob3BlcmFuZHMpKS5kYXRhKCkpOworICAgICAgICB9CiAgICAgfQogCi0gICAgTWFjcm9B
c3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGV4aXQuY29kZUxvY2F0aW9uRm9yUmVwYXRjaChjb2RlQmxv
Y2spLCBDb2RlTG9jYXRpb25MYWJlbChleGl0Lm1fY29kZS5jb2RlKCkpKTsKKyAgICBPU1JFeGl0
U3RhdGUmIGV4aXRTdGF0ZSA9ICpleGl0LmV4aXRTdGF0ZS5nZXQoKTsKKyAgICBDb2RlQmxvY2sq
IGJhc2VsaW5lQ29kZUJsb2NrID0gZXhpdFN0YXRlLmJhc2VsaW5lQ29kZUJsb2NrOworICAgIEFT
U0VSVChiYXNlbGluZUNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklU
KTsKIAotICAgIHZtLT5vc3JFeGl0SnVtcERlc3RpbmF0aW9uID0gZXhpdC5tX2NvZGUuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCk7Ci19CisgICAgT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4mIG9w
ZXJhbmRzID0gZXhpdFN0YXRlLm9wZXJhbmRzOworICAgIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJl
Y292ZXJ5ID0gZXhpdFN0YXRlLnJlY292ZXJ5OwogCi12b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0
KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0IE9w
ZXJhbmRzPFZhbHVlUmVjb3Zlcnk+JiBvcGVyYW5kcywgU3BlY3VsYXRpb25SZWNvdmVyeSogcmVj
b3ZlcnkpCi17Ci0gICAgaml0LmppdEFzc2VydFRhZ3NJblBsYWNlKCk7CisgICAgaWYgKGV4aXQu
bV9raW5kID09IEdlbmVyaWNVbndpbmQpIHsKKyAgICAgICAgLy8gV2UgYXJlIGFjdGluZyBhcyBh
IGRlZmFjdG8gb3BfY2F0Y2ggYmVjYXVzZSB3ZSBhcnJpdmUgaGVyZSBmcm9tIGdlbmVyaWNVbndp
bmQoKS4KKyAgICAgICAgLy8gU28sIHdlIG11c3QgcmVzdG9yZSBvdXIgY2FsbCBmcmFtZSBhbmQg
c3RhY2sgcG9pbnRlci4KKyAgICAgICAgcmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNRW50cnlGcmFt
ZUNhbGxlZVNhdmVzQnVmZmVyKGNvbnRleHQpOworICAgICAgICBBU1NFUlQoY29udGV4dC5mcCgp
ID09IHZtLmNhbGxGcmFtZUZvckNhdGNoKTsKKyAgICB9CisgICAgY29udGV4dC5zcCgpID0gY29u
dGV4dC5mcDx1aW50OF90Kj4oKSArIChjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICog
c2l6ZW9mKFJlZ2lzdGVyKSk7CiAKLSAgICAvLyBQcm8tZm9ybWEgc3R1ZmYuCi0gICAgaWYgKE9w
dGlvbnM6OnByaW50RWFjaE9TUkV4aXQoKSkgewotICAgICAgICBTcGVjdWxhdGlvbkZhaWx1cmVE
ZWJ1Z0luZm8qIGRlYnVnSW5mbyA9IG5ldyBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm87Ci0g
ICAgICAgIGRlYnVnSW5mby0+Y29kZUJsb2NrID0gaml0LmNvZGVCbG9jaygpOwotICAgICAgICBk
ZWJ1Z0luZm8tPmtpbmQgPSBleGl0Lm1fa2luZDsKLSAgICAgICAgZGVidWdJbmZvLT5ieXRlY29k
ZU9mZnNldCA9IGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXg7CisgICAgQVNTRVJUKCEo
Y29udGV4dC5mcDx1aW50cHRyX3Q+KCkgJiAweDcpKTsKIAotICAgICAgICBqaXQuZGVidWdDYWxs
KHZtLCBkZWJ1Z09wZXJhdGlvblByaW50U3BlY3VsYXRpb25GYWlsdXJlLCBkZWJ1Z0luZm8pOwot
ICAgIH0KKyAgICBpZiAoZXhpdFN0YXRlLnByb2ZpbGVyRXhpdCkKKyAgICAgICAgZXhpdFN0YXRl
LnByb2ZpbGVyRXhpdC0+aW5jQ291bnQoKTsKKworICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1
OworICAgIEZyYW1lIGZyYW1lKGNwdS5mcCgpLCBjb250ZXh0LnN0YWNrKCkpOworCisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICBBU1NFUlQoY3B1LmdwcihHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVn
aXN0ZXIpID09IFRhZ1R5cGVOdW1iZXIpOworICAgIEFTU0VSVChjcHUuZ3ByKEdQUkluZm86OnRh
Z01hc2tSZWdpc3RlcikgPT0gVGFnTWFzayk7CisjZW5kaWYKKworICAgIGlmIChVTkxJS0VMWShP
cHRpb25zOjpwcmludEVhY2hPU1JFeGl0KCkpKQorICAgICAgICBwcmludE9TUkV4aXQoY29udGV4
dCwgdm0ub3NyRXhpdEluZGV4LCBleGl0KTsKIAogICAgIC8vIFBlcmZvcm0gc3BlY3VsYXRpb24g
cmVjb3ZlcnkuIFRoaXMgb25seSBjb21lcyBpbnRvIHBsYXkgd2hlbiBhbiBvcGVyYXRpb24KICAg
ICAvLyBzdGFydHMgbXV0YXRpbmcgc3RhdGUgYmVmb3JlIHZlcmlmeWluZyB0aGUgc3BlY3VsYXRp
b24gaXQgaGFzIGFscmVhZHkgbWFkZS4KQEAgLTI0MywyMiArNDQ0LDI0IEBAIHZvaWQgT1NSRXhp
dDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAgICBpZiAocmVjb3ZlcnkpIHsKICAgICAg
ICAgc3dpdGNoIChyZWNvdmVyeS0+dHlwZSgpKSB7CiAgICAgICAgIGNhc2UgU3BlY3VsYXRpdmVB
ZGQ6Ci0gICAgICAgICAgICBqaXQuc3ViMzIocmVjb3ZlcnktPnNyYygpLCByZWNvdmVyeS0+ZGVz
dCgpKTsKKyAgICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgPSBjcHUuZ3ByPHVp
bnQzMl90PihyZWNvdmVyeS0+ZGVzdCgpKSAtIGNwdS5ncHI8dWludDMyX3Q+KHJlY292ZXJ5LT5z
cmMoKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVjb3ZlcnktPmRlc3QoKSk7CisgICAgICAgICAgICBB
U1NFUlQoIShjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkpID4+IDMyKSk7CisgICAgICAgICAgICBj
cHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkpIHw9IFRhZ1R5cGVOdW1iZXI7CiAjZW5kaWYKICAgICAg
ICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU3BlY3VsYXRpdmVBZGRJbW1lZGlhdGU6Ci0g
ICAgICAgICAgICBqaXQuc3ViMzIoQXNzZW1ibHlIZWxwZXJzOjpJbW0zMihyZWNvdmVyeS0+aW1t
ZWRpYXRlKCkpLCByZWNvdmVyeS0+ZGVzdCgpKTsKKyAgICAgICAgICAgIGNwdS5ncHIocmVjb3Zl
cnktPmRlc3QoKSkgPSAoY3B1Lmdwcjx1aW50MzJfdD4ocmVjb3ZlcnktPmRlc3QoKSkgLSByZWNv
dmVyeS0+aW1tZWRpYXRlKCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBqaXQu
b3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHJlY292ZXJ5LT5kZXN0KCkpOwor
ICAgICAgICAgICAgQVNTRVJUKCEoY3B1LmdwcihyZWNvdmVyeS0+ZGVzdCgpKSA+PiAzMikpOwor
ICAgICAgICAgICAgY3B1LmdwcihyZWNvdmVyeS0+ZGVzdCgpKSB8PSBUYWdUeXBlTnVtYmVyOwog
I2VuZGlmCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEJvb2xlYW5TcGVjdWxh
dGlvbkNoZWNrOgogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBqaXQueG9yNjQoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxz
ZSkpLCByZWNvdmVyeS0+ZGVzdCgpKTsKKyAgICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRl
c3QoKSkgPSBjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkpIF4gVmFsdWVGYWxzZTsKICNlbmRpZgog
ICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTI4MSwzOTUgKzQ4NCwxMTMgQEAgdm9pZCBPU1JFeGl0
Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgICAgICAgICAgLy8gcHJvcGVydHkgYWNj
ZXNzLCBvciBkdWUgdG8gYW4gYXJyYXkgcHJvZmlsZSkuCiAKICAgICAgICAgICAgIENvZGVPcmln
aW4gY29kZU9yaWdpbiA9IGV4aXQubV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGU7Ci0gICAgICAg
ICAgICBpZiAoQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBqaXQuYmFzZWxpbmVDb2RlQmxv
Y2tGb3IoY29kZU9yaWdpbiktPmdldEFycmF5UHJvZmlsZShjb2RlT3JpZ2luLmJ5dGVjb2RlSW5k
ZXgpKSB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgICAgICBHUFJSZWcgdXNlZFJl
Z2lzdGVyOwotICAgICAgICAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0FkZHJl
c3MoKSkKLSAgICAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVyID0gZXhpdC5tX2pzVmFsdWVT
b3VyY2UuYmFzZSgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
dXNlZFJlZ2lzdGVyID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UuZ3ByKCk7Ci0jZWxzZQotICAgICAg
ICAgICAgICAgIEdQUlJlZyB1c2VkUmVnaXN0ZXIxOwotICAgICAgICAgICAgICAgIEdQUlJlZyB1
c2VkUmVnaXN0ZXIyOwotICAgICAgICAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5p
c0FkZHJlc3MoKSkgewotICAgICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXIxID0gZXhpdC5t
X2pzVmFsdWVTb3VyY2UuYmFzZSgpOwotICAgICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXIy
ID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICB1c2VkUmVnaXN0ZXIxID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigp
OwotICAgICAgICAgICAgICAgICAgICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaGFzS25vd25U
YWcoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcjIgPSBJbnZhbGlkR1BS
UmVnOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICB1
c2VkUmVnaXN0ZXIyID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UudGFnR1BSKCk7Ci0gICAgICAgICAg
ICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaDE7Ci0gICAg
ICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyOwotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAg
ICAgICAgICAgc2NyYXRjaDEgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIodXNl
ZFJlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICBzY3JhdGNoMiA9IEFzc2VtYmx5SGVscGVyczo6
c2VsZWN0U2NyYXRjaEdQUih1c2VkUmVnaXN0ZXIsIHNjcmF0Y2gxKTsKLSNlbHNlCi0gICAgICAg
ICAgICAgICAgc2NyYXRjaDEgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIodXNl
ZFJlZ2lzdGVyMSwgdXNlZFJlZ2lzdGVyMik7Ci0gICAgICAgICAgICAgICAgc2NyYXRjaDIgPSBB
c3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIodXNlZFJlZ2lzdGVyMSwgdXNlZFJlZ2lz
dGVyMiwgc2NyYXRjaDEpOwotI2VuZGlmCi0KLSAgICAgICAgICAgICAgICBpZiAoaXNBUk02NCgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5wdXNoVG9TYXZlKHNjcmF0Y2gxKTsKLSAgICAg
ICAgICAgICAgICAgICAgaml0LnB1c2hUb1NhdmUoc2NyYXRjaDIpOwotICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5wdXNoKHNjcmF0Y2gxKTsKLSAgICAg
ICAgICAgICAgICAgICAgaml0LnB1c2goc2NyYXRjaDIpOwotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIEdQUlJlZyB2YWx1ZTsKLSAgICAgICAgICAgICAgICBpZiAoZXhpdC5t
X2pzVmFsdWVTb3VyY2UuaXNBZGRyZXNzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUg
PSBzY3JhdGNoMTsKLSAgICAgICAgICAgICAgICAgICAgaml0LmxvYWRQdHIoQXNzZW1ibHlIZWxw
ZXJzOjpBZGRyZXNzKGV4aXQubV9qc1ZhbHVlU291cmNlLmFzQWRkcmVzcygpKSwgdmFsdWUpOwot
ICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGV4aXQu
bV9qc1ZhbHVlU291cmNlLnBheWxvYWRHUFIoKTsKLQotICAgICAgICAgICAgICAgIGppdC5sb2Fk
MzIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCBzY3JhdGNoMSk7Ci0gICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoc2NyYXRjaDEs
IGFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKLSNpZiBVU0Uo
SlNWQUxVRTY0KQotICAgICAgICAgICAgICAgIGppdC5sb2FkOChBc3NlbWJseUhlbHBlcnM6OkFk
ZHJlc3ModmFsdWUsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlQW5kTWlzY09mZnNldCgpKSwgc2NyYXRj
aDEpOwotI2Vsc2UKLSAgICAgICAgICAgICAgICBqaXQubG9hZDgoQXNzZW1ibHlIZWxwZXJzOjpB
ZGRyZXNzKHNjcmF0Y2gxLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZUluY2x1ZGluZ0hpc3RvcnlP
ZmZzZXQoKSksIHNjcmF0Y2gxKTsKLSNlbmRpZgotICAgICAgICAgICAgICAgIGppdC5tb3ZlKEFz
c2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBzY3JhdGNoMik7Ci0gICAgICAgICAgICAg
ICAgaml0LmxzaGlmdDMyKHNjcmF0Y2gxLCBzY3JhdGNoMik7Ci0gICAgICAgICAgICAgICAgaml0
Lm9yMzIoc2NyYXRjaDIsIEFzc2VtYmx5SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFycmF5UHJv
ZmlsZS0+YWRkcmVzc09mQXJyYXlNb2RlcygpKSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoaXNB
Uk02NCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaDIp
OwotICAgICAgICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2gxKTsKLSAgICAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBqaXQucG9wKHNjcmF0Y2gy
KTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnBvcChzY3JhdGNoMSk7Ci0gICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgQ29kZUJsb2NrKiBwcm9maWxlZENvZGVCbG9jayA9IGJhc2VsaW5l
Q29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soY29kZU9yaWdpbiwgYmFzZWxp
bmVDb2RlQmxvY2spOworICAgICAgICAgICAgaWYgKEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxl
ID0gcHJvZmlsZWRDb2RlQmxvY2stPmdldEFycmF5UHJvZmlsZShjb2RlT3JpZ2luLmJ5dGVjb2Rl
SW5kZXgpKSB7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBqc1ZhbHVl
Rm9yKGNwdSwgZXhpdC5tX2pzVmFsdWVTb3VyY2UpLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOwor
ICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+b2JzZXJ2ZVN0cnVjdHVyZShzdHJ1Y3R1cmUp
OworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byB1c2UgYXJy
YXlNb2RlRnJvbVN0cnVjdHVyZSgpIHRvIGRldGVybWluZSB0aGUgb2JzZXJ2ZWQgQXJyYXlNb2Rl
IGhlcmUuCisgICAgICAgICAgICAgICAgLy8gSG93ZXZlciwgY3VycmVudGx5LCBkb2luZyBzbyB3
b3VsZCByZXN1bHQgaW4gYSBwZGZqcyBwcmVmb3JtYW5jZSByZWdyZXNzaW9uLgorICAgICAgICAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0NzMK
KyAgICAgICAgICAgICAgICBhcnJheVByb2ZpbGUtPm9ic2VydmVBcnJheU1vZGUoYXNBcnJheU1v
ZGVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCi0gICAgICAgIGlmIChNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBl
eGl0Lm1fdmFsdWVQcm9maWxlKSB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGlm
IChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0FkZHJlc3MoKSkgewotICAgICAgICAgICAgICAgIC8v
IFdlIGNhbid0IGJlIHN1cmUgdGhhdCB3ZSBoYXZlIGEgc3BhcmUgcmVnaXN0ZXIuIFNvIHVzZSB0
aGUgdGFnVHlwZU51bWJlclJlZ2lzdGVyLAotICAgICAgICAgICAgICAgIC8vIHNpbmNlIHdlIGtu
b3cgaG93IHRvIHJlc3RvcmUgaXQuCi0gICAgICAgICAgICAgICAgaml0LmxvYWQ2NChBc3NlbWJs
eUhlbHBlcnM6OkFkZHJlc3MoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYXNBZGRyZXNzKCkpLCBHUFJJ
bmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1p
dFJlcG9ydFZhbHVlKGppdCwgSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lz
dGVyKSk7Ci0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tNjQoVGFnVHlwZU51bWJlciksIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0g
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1
ZShqaXQsIEpTVmFsdWVSZWdzKGV4aXQubV9qc1ZhbHVlU291cmNlLmdwcigpKSk7Ci0jZWxzZSAv
LyBub3QgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJj
ZS5pc0FkZHJlc3MoKSkgewotICAgICAgICAgICAgICAgIC8vIFNhdmUgYSByZWdpc3RlciBzbyB3
ZSBjYW4gdXNlIGl0LgotICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoUGF5bG9hZCA9IEFz
c2VtYmx5SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUihleGl0Lm1fanNWYWx1ZVNvdXJjZS5iYXNl
KCkpOwotICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoVGFnID0gQXNzZW1ibHlIZWxwZXJz
OjpzZWxlY3RTY3JhdGNoR1BSKGV4aXQubV9qc1ZhbHVlU291cmNlLmJhc2UoKSwgc2NyYXRjaFBh
eWxvYWQpOwotICAgICAgICAgICAgICAgIGppdC5wdXNoVG9TYXZlKHNjcmF0Y2hQYXlsb2FkKTsK
LSAgICAgICAgICAgICAgICBqaXQucHVzaFRvU2F2ZShzY3JhdGNoVGFnKTsKLQotICAgICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzIHNjcmF0Y2goc2NyYXRjaFRhZywgc2NyYXRjaFBheWxvYWQpOwot
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGppdC5sb2FkVmFsdWUoZXhpdC5tX2pz
VmFsdWVTb3VyY2UuYXNBZGRyZXNzKCksIHNjcmF0Y2gpOwotICAgICAgICAgICAgICAgIHByb2Zp
bGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgc2NyYXRjaCk7Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3JhdGNoVGFnKTsKLSAgICAgICAgICAgICAg
ICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2hQYXlsb2FkKTsKLSAgICAgICAgICAgIH0gZWxzZSBp
ZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaGFzS25vd25UYWcoKSkgewotICAgICAgICAgICAgICAg
IEdQUlJlZyBzY3JhdGNoVGFnID0gQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGV4
aXQubV9qc1ZhbHVlU291cmNlLnBheWxvYWRHUFIoKSk7Ci0gICAgICAgICAgICAgICAgaml0LnB1
c2hUb1NhdmUoc2NyYXRjaFRhZyk7Ci0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoZXhpdC5tX2pzVmFsdWVTb3VyY2UudGFnKCkpLCBzY3JhdGNo
VGFnKTsKLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZShzY3JhdGNoVGFnLCBleGl0
Lm1fanNWYWx1ZVNvdXJjZS5wYXlsb2FkR1BSKCkpOwotICAgICAgICAgICAgICAgIHByb2ZpbGUu
ZW1pdFJlcG9ydFZhbHVlKGppdCwgdmFsdWUpOwotICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jl
c3RvcmUoc2NyYXRjaFRhZyk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBw
cm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIGV4aXQubV9qc1ZhbHVlU291cmNlLnJlZ3MoKSk7
Ci0jZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgfQorICAgICAgICBpZiAoTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBwcm9maWxlID0gZXhpdC5tX3ZhbHVlUHJvZmlsZSkKKyAg
ICAgICAgICAgIHByb2ZpbGUucmVwb3J0VmFsdWUoanNWYWx1ZUZvcihjcHUsIGV4aXQubV9qc1Zh
bHVlU291cmNlKSk7CiAgICAgfQogCi0gICAgLy8gV2hhdCBmb2xsb3dzIGlzIGFuIGludGVudGlv
bmFsbHkgc2ltcGxlIE9TUiBleGl0IGltcGxlbWVudGF0aW9uIHRoYXQgZ2VuZXJhdGVzCi0gICAg
Ly8gZmFpcmx5IHBvb3IgY29kZSBidXQgaXMgdmVyeSBlYXN5IHRvIGhhY2suIEluIHBhcnRpY3Vs
YXIsIGl0IGR1bXBzIGFsbCBzdGF0ZSB0aGF0Ci0gICAgLy8gbmVlZHMgY29udmVyc2lvbiBpbnRv
IGEgc2NyYXRjaCBidWZmZXIgc28gdGhhdCBpbiBzdGVwIDYsIHdoZXJlIHdlIGFjdHVhbGx5IGRv
IHRoZQotICAgIC8vIGNvbnZlcnNpb25zLCB3ZSBrbm93IHRoYXQgYWxsIHRlbXAgcmVnaXN0ZXJz
IGFyZSBmcmVlIHRvIHVzZSBhbmQgdGhlIHZhcmlhYmxlIGlzCi0gICAgLy8gZGVmaW5pdGVseSBp
biBhIHdlbGwta25vd24gc3BvdCBpbiB0aGUgc2NyYXRjaCBidWZmZXIgcmVnYXJkbGVzcyBvZiB3
aGV0aGVyIGl0IGhhZAotICAgIC8vIG9yaWdpbmFsbHkgYmVlbiBpbiBhIHJlZ2lzdGVyIG9yIHNw
aWxsZWQuIFRoaXMgYWxsb3dzIHVzIHRvIGRlY291cGxlICJ3aGVyZSB3YXMKLSAgICAvLyB0aGUg
dmFyaWFibGUiIGZyb20gImhvdyB3YXMgaXQgcmVwcmVzZW50ZWQiLiBDb25zaWRlciB0aGF0IHRo
ZQotICAgIC8vIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrIHJlY292ZXJ5OiBpdCB0ZWxscyB1cyB0
aGF0IHRoZSB2YWx1ZSBpcyBpbiBhCi0gICAgLy8gcGFydGljdWxhciBwbGFjZSBhbmQgdGhhdCB0
aGF0IHBsYWNlIGhvbGRzIGFuIHVuYm94ZWQgaW50MzIuIFdlIGhhdmUgdHdvIGRpZmZlcmVudAot
ICAgIC8vIHBsYWNlcyB0aGF0IGEgdmFsdWUgY291bGQgYmUgKGRpc3BsYWNlZCwgcmVnaXN0ZXIp
IGFuZCBhIGJ1bmNoIG9mIGRpZmZlcmVudAotICAgIC8vIHdheXMgb2YgcmVwcmVzZW50aW5nIGEg
dmFsdWUuIFRoZSBudW1iZXIgb2YgcmVjb3ZlcmllcyBpcyB0d28gKiBhIGJ1bmNoLiBUaGUgY29k
ZQotICAgIC8vIGJlbG93IG1lYW5zIHRoYXQgd2UgaGF2ZSB0byBoYXZlIHR3byArIGEgYnVuY2gg
Y2FzZXMgcmF0aGVyIHRoYW4gdHdvICogYSBidW5jaC4KLSAgICAvLyBPbmNlIHdlIGhhdmUgbG9h
ZGVkIHRoZSB2YWx1ZSBmcm9tIHdoZXJldmVyIGl0IHdhcywgdGhlIHJlYm94aW5nIGlzIHRoZSBz
YW1lCi0gICAgLy8gcmVnYXJkbGVzcyBvZiBpdHMgbG9jYXRpb24uIExpa2V3aXNlLCBiZWZvcmUg
d2UgZG8gdGhlIHJlYm94aW5nLCB0aGUgd2F5IHdlIGdldCB0bwotICAgIC8vIHRoZSB2YWx1ZSAo
aS5lLiB3aGVyZSB3ZSBsb2FkIGl0IGZyb20pIGlzIHRoZSBzYW1lIHJlZ2FyZGxlc3Mgb2YgaXRz
IHR5cGUuIEJlY2F1c2UKLSAgICAvLyB0aGUgY29kZSBiZWxvdyBhbHdheXMgZHVtcHMgZXZlcnl0
aGluZyBpbnRvIGEgc2NyYXRjaCBidWZmZXIgZmlyc3QsIHRoZSB0d28KLSAgICAvLyBxdWVzdGlv
bnMgYmVjb21lIG9ydGhvZ29uYWwsIHdoaWNoIHNpbXBsaWZpZXMgYWRkaW5nIG5ldyB0eXBlcyBh
bmQgYWRkaW5nIG5ldwotICAgIC8vIGxvY2F0aW9ucy4KLSAgICAvLwotICAgIC8vIFRoaXMgcmFp
c2VzIHRoZSBxdWVzdGlvbjogZG9lcyB1c2luZyBzdWNoIGEgc3Vib3B0aW1hbCBpbXBsZW1lbnRh
dGlvbiBvZiBPU1IgZXhpdCwKLSAgICAvLyB3aGVyZSB3ZSBhbHdheXMgZW1pdCBjb2RlIHRvIGR1
bXAgYWxsIHN0YXRlIGludG8gYSBzY3JhdGNoIGJ1ZmZlciBvbmx5IHRvIHRoZW4KLSAgICAvLyBk
dW1wIGl0IHJpZ2h0IGJhY2sgaW50byB0aGUgc3RhY2ssIGh1cnQgdXMgaW4gYW55IHdheT8gVGhl
IGFzbndlciBpcyB0aGF0IE9TUiBleGl0cwotICAgIC8vIGFyZSByYXJlLiBPdXIgdGllcmluZyBz
dHJhdGVneSBlbnN1cmVzIHRoaXMuIFRoaXMgaXMgYmVjYXVzZSBpZiBhbiBPU1IgZXhpdCBpcwot
ICAgIC8vIHRha2VuIG1vcmUgdGhhbiB+MTAwIHRpbWVzLCB3ZSBqZXR0aXNvbiB0aGUgREZHIGNv
ZGUgYmxvY2sgYWxvbmcgd2l0aCBhbGwgb2YgaXRzCi0gICAgLy8gZXhpdHMuIEl0IGlzIGltcG9z
c2libGUgZm9yIGFuIE9TUiBleGl0IC0gaS5lLiB0aGUgY29kZSB3ZSBjb21waWxlIGJlbG93IC0g
dG8KLSAgICAvLyBleGVjdXRlIGZyZXF1ZW50bHkgZW5vdWdoIGZvciB0aGUgY29kZWdlbiB0byBt
YXR0ZXIgdGhhdCBtdWNoLiBJdCBwcm9iYWJseSBtYXR0ZXJzCi0gICAgLy8gZW5vdWdoIHRoYXQg
d2UgZG9uJ3Qgd2FudCB0byB0dXJuIHRoaXMgaW50byBzb21lIHN1cGVyLXNsb3cgZnVuY3Rpb24g
Y2FsbCwgYnV0IHNvCi0gICAgLy8gbG9uZyBhcyB3ZSdyZSBnZW5lcmF0aW5nIHN0cmFpZ2h0LWxp
bmUgY29kZSwgdGhhdCBjb2RlIGNhbiBiZSBwcmV0dHkgYmFkLiBBbHNvCi0gICAgLy8gYmVjYXVz
ZSB3ZSB0ZW5kIHRvIGV4aXQgb25seSBhbG9uZyBvbmUgT1NSIGV4aXQgZnJvbSBhbnkgREZHIGNv
ZGUgYmxvY2sgLSB0aGF0J3MgYW4KLSAgICAvLyBlbXBpcmljYWwgcmVzdWx0IHRoYXQgd2UncmUg
ZXh0cmVtZWx5IGNvbmZpZGVudCBhYm91dCAtIHRoZSBjb2RlIHNpemUgb2YgdGhpcwotICAgIC8v
IGRvZXNuJ3QgbWF0dGVyIG11Y2guIEhlbmNlIGFueSBhdHRlbXB0IHRvIG9wdGltaXplIHRoZSBj
b2RlZ2VuIGhlcmUgaXMganVzdCBwdXJlbHkKLSAgICAvLyBoYXJtZnVsIHRvIHRoZSBzeXN0ZW06
IGl0IHByb2JhYmx5IHdvbid0IHJlZHVjZSBlaXRoZXIgbmV0IG1lbW9yeSB1c2FnZSBvciBuZXQK
LSAgICAvLyBleGVjdXRpb24gdGltZS4gSXQgd2lsbCBvbmx5IHByZXZlbnQgdXMgZnJvbSBjbGVh
bmx5IGRlY291cGxpbmcgIndoZXJlIHdhcyB0aGUKLSAgICAvLyB2YXJpYWJsZSIgZnJvbSAiaG93
IHdhcyBpdCByZXByZXNlbnRlZCIsIHdoaWNoIHdpbGwgbWFrZSBpdCBtb3JlIGRpZmZpY3VsdCB0
byBhZGQKLSAgICAvLyBmZWF0dXJlcyBpbiB0aGUgZnV0dXJlIGFuZCBpdCB3aWxsIG1ha2UgaXQg
aGFyZGVyIHRvIHJlYXNvbiBhYm91dCBidWdzLgotCi0gICAgLy8gU2F2ZSBhbGwgc3RhdGUgZnJv
bSBHUFJzIGludG8gdGhlIHNjcmF0Y2ggYnVmZmVyLgotCi0gICAgU2NyYXRjaEJ1ZmZlciogc2Ny
YXRjaEJ1ZmZlciA9IHZtLnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkgKiBvcGVyYW5kcy5zaXplKCkpOwotICAgIEVuY29kZWRKU1ZhbHVlKiBzY3JhdGNoID0gc2Ny
YXRjaEJ1ZmZlciA/IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+
ZGF0YUJ1ZmZlcigpKSA6IDA7Ci0KLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwg
b3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIGNvbnN0IFZhbHVlUmVjb3Zlcnkm
IHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhdOwotCi0gICAgICAgIHN3aXRjaCAocmVjb3Zlcnku
dGVjaG5pcXVlKCkpIHsKLSAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKLSAgICAgICAg
Y2FzZSBVbmJveGVkQ2VsbEluR1BSOgotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGNhc2Ug
SW5HUFI6Ci0gICAgICAgIGNhc2UgVW5ib3hlZEludDUySW5HUFI6Ci0gICAgICAgIGNhc2UgVW5i
b3hlZFN0cmljdEludDUySW5HUFI6Ci0gICAgICAgICAgICBqaXQuc3RvcmU2NChyZWNvdmVyeS5n
cHIoKSwgc2NyYXRjaCArIGluZGV4KTsKLSAgICAgICAgICAgIGJyZWFrOwotI2Vsc2UKLSAgICAg
ICAgY2FzZSBVbmJveGVkQm9vbGVhbkluR1BSOgotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0g
ICAgICAgICAgICAgICAgcmVjb3ZlcnkuZ3ByKCksCi0gICAgICAgICAgICAgICAgJmJpdHdpc2Vf
Y2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBh
eWxvYWQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBJ
blBhaXI6Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICByZWNvdmVy
eS50YWdHUFIoKSwKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFnKTsKLSAgICAgICAgICAgIGpp
dC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIHJlY292ZXJ5LnBheWxvYWRHUFIoKSwKLSAgICAg
ICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNo
ICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7Ci0gICAgICAgICAgICBicmVhazsKLSNlbmRpZgot
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIC8vIEFuZCB2b2lsYSwgYWxsIEdQUnMgYXJlIGZyZWUgdG8gcmV1c2UuCi0KLSAgICAv
LyBTYXZlIGFsbCBzdGF0ZSBmcm9tIEZQUnMgaW50byB0aGUgc2NyYXRjaCBidWZmZXIuCi0KLSAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4
KSB7Ci0gICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5k
ZXhdOwotCi0gICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKLSAgICAgICAg
Y2FzZSBVbmJveGVkRG91YmxlSW5GUFI6Ci0gICAgICAgIGNhc2UgSW5GUFI6Ci0gICAgICAgICAg
ICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4
KSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlRG91YmxlKHJlY292ZXJ5
LmZwcigpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCkpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgLy8gTm93LCBhbGwgRlBScyBhcmUgYWxzbyBmcmVlLgotCi0g
ICAgLy8gU2F2ZSBhbGwgc3RhdGUgZnJvbSB0aGUgc3RhY2sgaW50byB0aGUgc2NyYXRjaCBidWZm
ZXIuIEZvciBzaW1wbGljaXR5IHdlCi0gICAgLy8gZG8gdGhpcyBldmVuIGZvciBzdGF0ZSB0aGF0
J3MgYWxyZWFkeSBpbiB0aGUgcmlnaHQgcGxhY2Ugb24gdGhlIHN0YWNrLgotICAgIC8vIEl0IG1h
a2VzIHRoaW5ncyBzaW1wbGVyIGxhdGVyLgotCi0gICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBp
bmRleCA8IG9wZXJhbmRzLnNpemUoKTsgKytpbmRleCkgewotICAgICAgICBjb25zdCBWYWx1ZVJl
Y292ZXJ5JiByZWNvdmVyeSA9IG9wZXJhbmRzW2luZGV4XTsKLQotICAgICAgICBzd2l0Y2ggKHJl
Y292ZXJ5LnRlY2huaXF1ZSgpKSB7Ci0gICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOgot
ICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgIGNhc2UgQm9vbGVh
bkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFj
azoKLSAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6Ci0jaWYgVVNFKEpTVkFM
VUU2NCkKLSAgICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2Fz
ZSBTdHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIGppdC5sb2FkNjQo
QXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwg
R1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAs
IHNjcmF0Y2ggKyBpbmRleCk7Ci0gICAgICAgICAgICBicmVhazsKLSNlbHNlCi0gICAgICAgICAg
ICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKHJl
Y292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdU
MCk7Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVs
cGVyczo6cGF5bG9hZEZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksCi0gICAgICAgICAg
ICAgICAgR1BSSW5mbzo6cmVnVDEpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAg
ICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCi0gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnRhZyk7Ci0g
ICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSwK
LSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihz
Y3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7Ci0gICAgICAgICAgICBicmVhazsKLSNl
bmRpZgotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIC8vIE5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHN0YWNrIHBvaW50ZXIgYWNj
b3VudHMgZm9yIHRoZSB3b3JzdC1jYXNlIHN0YWNrIHVzYWdlIGF0IGV4aXQuIFRoaXMKLSAgICAv
LyBjb3VsZCB0b2FzdCBzb21lIHN0YWNrIHRoYXQgdGhlIERGRyB1c2VkLiBXZSBuZWVkIHRvIGRv
IGl0IGJlZm9yZSBzdG9yaW5nIHRvIHN0YWNrIG9mZnNldHMKLSAgICAvLyB1c2VkIGJ5IGJhc2Vs
aW5lLgotICAgIGppdC5hZGRQdHIoCi0gICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KAotICAgICAgICAgICAgLWppdC5jb2RlQmxvY2soKS0+aml0Q29kZSgpLT5kZmdDb21tb24oKS0+
cmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhpdCAqIHNpemVvZihSZWdpc3RlcikpLAotICAgICAg
ICBDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKLQotICAgIC8vIFJlc3RvcmUgdGhlIERGRyBjYWxsZWUgc2F2ZXMg
YW5kIHRoZW4gc2F2ZSB0aGUgb25lcyB0aGUgYmFzZWxpbmUgSklUIHVzZXMuCi0gICAgaml0LmVt
aXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKLSAgICBqaXQuZW1pdFNhdmVDYWxsZWVTYXZlc0Zvcihq
aXQuYmFzZWxpbmVDb2RlQmxvY2soKSk7Ci0KLSAgICAvLyBUaGUgdGFnIHJlZ2lzdGVycyBhcmUg
bmVlZGVkIHRvIG1hdGVyaWFsaXplIHJlY292ZXJpZXMgYmVsb3cuCi0gICAgaml0LmVtaXRNYXRl
cmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7Ci0KLSAgICBpZiAoZXhpdC5pc0V4Y2VwdGlvbkhh
bmRsZXIoKSkKLSAgICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVl
U2F2ZXNCdWZmZXIodm0pOwotCiAgICAgLy8gRG8gYWxsIGRhdGEgZm9ybWF0IGNvbnZlcnNpb25z
IGFuZCBzdG9yZSB0aGUgcmVzdWx0cyBpbnRvIHRoZSBzdGFjay4KKyAgICAvLyBOb3RlOiB3ZSBu
ZWVkIHRvIHJlY292ZXIgdmFsdWVzIGJlZm9yZSByZXN0b3JpbmcgY2FsbGVlIHNhdmUgcmVnaXN0
ZXJzIGJlbG93CisgICAgLy8gYmVjYXVzZSB0aGUgcmVjb3ZlcnkgbWF5IHJlbHkgb24gdmFsdWVz
IGluIHNvbWUgb2YgY2FsbGVlIHNhdmUgcmVnaXN0ZXJzLgogCi0gICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNpemUoKTsgKytpbmRleCkgeworICAgIGludCBjYWxs
ZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMgPSBzdGF0aWNfY2FzdDxpbnQ+KGJhc2VsaW5l
Q29kZUJsb2NrLT5jYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSk7CisgICAgc2l6
ZV90IG51bWJlck9mT3BlcmFuZHMgPSBvcGVyYW5kcy5zaXplKCk7CisgICAgZm9yIChzaXplX3Qg
aW5kZXggPSAwOyBpbmRleCA8IG51bWJlck9mT3BlcmFuZHM7ICsraW5kZXgpIHsKICAgICAgICAg
Y29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5kc1tpbmRleF07CiAgICAgICAg
IFZpcnR1YWxSZWdpc3RlciByZWcgPSBvcGVyYW5kcy52aXJ0dWFsUmVnaXN0ZXJGb3JJbmRleChp
bmRleCk7CiAKLSAgICAgICAgaWYgKHJlZy5pc0xvY2FsKCkgJiYgcmVnLnRvTG9jYWwoKSA8IHN0
YXRpY19jYXN0PGludD4oaml0LmJhc2VsaW5lQ29kZUJsb2NrKCktPmNhbGxlZVNhdmVTcGFjZUFz
VmlydHVhbFJlZ2lzdGVycygpKSkKKyAgICAgICAgaWYgKHJlZy5pc0xvY2FsKCkgJiYgcmVnLnRv
TG9jYWwoKSA8IGNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycykKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIGludCBvcGVyYW5kID0gcmVnLm9mZnNldCgpOwogCiAgICAg
ICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBEaXNwbGFj
ZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIGV4ZWMt
PnIocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLmpzVmFsdWUoKSk7CisgICAgICAgICAgICBi
cmVhazsKKwogICAgICAgICBjYXNlIEluRlBSOgorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFu
ZChvcGVyYW5kLCBjcHUuZnByPEpTVmFsdWU+KHJlY292ZXJ5LmZwcigpKSk7CisgICAgICAgICAg
ICBicmVhazsKKwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGNhc2UgSW5HUFI6Ci0gICAg
ICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKLSAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5K
U1N0YWNrOgotICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAg
ICAgICBqaXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOwotICAgICAg
ICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVz
c0ZvcihvcGVyYW5kKSk7CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIGNw
dS5ncHI8SlNWYWx1ZT4ocmVjb3ZlcnkuZ3ByKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwotI2Vs
c2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCisjZWxzZQogICAgICAgICBjYXNlIEluUGFpcjoKLSAg
ICAgICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnRhZywKLSAgICAg
ICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAg
ICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0
Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJl
Z1QxKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEdQUkluZm86
OnJlZ1QwLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKG9wZXJhbmQp
KTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJl
Z1QxLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5k
KSk7CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFsdWUoY3B1Lmdw
cjxpbnQzMl90PihyZWNvdmVyeS50YWdHUFIoKSksIGNwdS5ncHI8aW50MzJfdD4ocmVjb3Zlcnku
cGF5bG9hZEdQUigpKSkpOwogICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKIAogICAgICAgICBj
YXNlIFVuYm94ZWRDZWxsSW5HUFI6CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJh
bmQsIEpTVmFsdWUoY3B1LmdwcjxKU0NlbGwqPihyZWNvdmVyeS5ncHIoKSkpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazoKLSAgICAg
ICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQsCi0gICAg
ICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0g
ICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2Vs
bFRhZyksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkp
OwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVn
VDAsCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQp
KTsKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShleGVjLT5y
KHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS51bmJveGVkQ2VsbCgpKSk7CiAgICAgICAgICAg
ICBicmVhazsKIAorI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGNhc2UgVW5ib3hlZEJv
b2xlYW5JbkdQUjoKLSAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgotICAg
ICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKLSAg
ICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigK
LSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpC
b29sZWFuVGFnKSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVy
YW5kKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBHUFJJbmZv
OjpyZWdUMCwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3Bl
cmFuZCkpOworICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBqc0Jvb2xlYW4o
Y3B1Lmdwcjxib29sPihyZWNvdmVyeS5ncHIoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwotI2Vu
ZGlmIC8vIFVTRShKU1ZBTFVFNjQpCisjZW5kaWYKIAotICAgICAgICBjYXNlIFVuYm94ZWRJbnQz
MkluR1BSOgotICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBj
YXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAg
ICAgICAgIGppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAg
ICAgICAgICBqaXQuemVyb0V4dGVuZDMyVG9QdHIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
ciwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVn
VDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CisgICAgICAgICAgICBm
cmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIGV4ZWMtPnIocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVy
KCkpLmpzVmFsdWUoKSk7CiAjZWxzZQotICAgICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAg
ICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsg
aW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7
Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksCi0gICAgICAgICAgICAgICAgQXNz
ZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIo
Ci0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCi0gICAgICAgICAgICAgICAgQXNzZW1i
bHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGZyYW1lLnNldE9w
ZXJhbmQob3BlcmFuZCwganNCb29sZWFuKGV4ZWMtPnIocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVy
KCkpLmpzVmFsdWUoKS5wYXlsb2FkKCkpKTsKICNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAK
KyAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKKyAgICAgICAgICAgIGZyYW1lLnNldE9w
ZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShjcHUuZ3ByPGludDMyX3Q+KHJlY292ZXJ5LmdwcigpKSkp
OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNT
dGFjazoKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShleGVj
LT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS51bmJveGVkSW50MzIoKSkpOworICAgICAg
ICAgICAgYnJlYWs7CisKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNlIFVuYm94ZWRJ
bnQ1MkluR1BSOgorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVl
KGNwdS5ncHI8aW50NjRfdD4ocmVjb3ZlcnkuZ3ByKCkpID4+IEpTVmFsdWU6OmludDUyU2hpZnRB
bW91bnQpKTsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgSW50NTJEaXNwbGFj
ZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBqaXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BS
SW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnJzaGlmdDY0KAotICAgICAgICAgICAgICAg
IEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQp
LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuYm94SW50NTIoR1BSSW5mbzo6cmVn
VDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0g
ICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjph
ZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFu
ZCwgSlNWYWx1ZShleGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS51bmJveGVkSW50
NTIoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0
SW50NTJJbkdQUjoKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1
ZShjcHUuZ3ByPGludDY0X3Q+KHJlY292ZXJ5LmdwcigpKSkpOworICAgICAgICAgICAgYnJlYWs7
CisKICAgICAgICAgY2FzZSBTdHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAg
ICAgIGppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAg
ICAgICBqaXQuYm94SW50NTIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZv
OjpyZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJ
bmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAg
ICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShleGVjLT5yKHJlY292ZXJ5
LnZpcnR1YWxSZWdpc3RlcigpKS51bmJveGVkU3RyaWN0SW50NTIoKSkpOwogICAgICAgICAgICAg
YnJlYWs7CiAjZW5kaWYKIAogICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoKKyAgICAg
ICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVB
c0RvdWJsZSwgcHVyaWZ5TmFOKGNwdS5mcHIocmVjb3ZlcnkuZnByKCkpKSkpOworICAgICAgICAg
ICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAg
ICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCAr
IGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LmxvYWREb3VibGUoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApLCBGUFJJbmZvOjpmcFJlZ1QwKTsK
LSAgICAgICAgICAgIGppdC5wdXJpZnlOYU4oRlBSSW5mbzo6ZnBSZWdUMCk7Ci0jaWYgVVNFKEpT
VkFMVUU2NCkKLSAgICAgICAgICAgIGppdC5ib3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgR1BS
SW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFz
c2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0jZWxzZQotICAgICAgICAgICAg
aml0LnN0b3JlRG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVz
c0ZvcihvcGVyYW5kKSk7Ci0jZW5kaWYKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3Bl
cmFuZCwgSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgcHVyaWZ5TmFOKGV4ZWMtPnIo
cmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLnVuYm94ZWREb3VibGUoKSkpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgQ29uc3RhbnQ6Ci0jaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICAgICAgICAgIGppdC5zdG9yZTY0KAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShyZWNvdmVyeS5jb25zdGFudCgpKSksCi0g
ICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKLSNl
bHNlCi0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnRhZygpKSwKLSAgICAgICAg
ICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBq
aXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0z
MihyZWNvdmVyeS5jb25zdGFudCgpLnBheWxvYWQoKSksCi0gICAgICAgICAgICAgICAgQXNzZW1i
bHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKLSNlbmRpZgorICAgICAgICAgICAgZnJh
bWUuc2V0T3BlcmFuZChvcGVyYW5kLCByZWNvdmVyeS5jb25zdGFudCgpKTsKICAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVk
OgpAQCAtNjgzLDEzICs2MDQsMzEgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhl
bHBlcnMmIAogICAgICAgICB9CiAgICAgfQogCisgICAgLy8gTmVlZCB0byBlbnN1cmUgdGhhdCB0
aGUgc3RhY2sgcG9pbnRlciBhY2NvdW50cyBmb3IgdGhlIHdvcnN0LWNhc2Ugc3RhY2sgdXNhZ2Ug
YXQgZXhpdC4gVGhpcworICAgIC8vIGNvdWxkIHRvYXN0IHNvbWUgc3RhY2sgdGhhdCB0aGUgREZH
IHVzZWQuIFdlIG5lZWQgdG8gZG8gaXQgYmVmb3JlIHN0b3JpbmcgdG8gc3RhY2sgb2Zmc2V0cwor
ICAgIC8vIHVzZWQgYnkgYmFzZWxpbmUuCisgICAgY3B1LnNwKCkgPSBjcHUuZnA8dWludDhfdCo+
KCkgLSAoY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5yZXF1aXJlZFJlZ2lzdGVy
Q291bnRGb3JFeGl0ICogc2l6ZW9mKFJlZ2lzdGVyKSk7CisKKyAgICAvLyBSZXN0b3JlIHRoZSBE
RkcgY2FsbGVlIHNhdmVzIGFuZCB0aGVuIHNhdmUgdGhlIG9uZXMgdGhlIGJhc2VsaW5lIEpJVCB1
c2VzLgorICAgIHJlc3RvcmVDYWxsZWVTYXZlc0Zvcihjb250ZXh0LCBjb2RlQmxvY2spOworICAg
IHNhdmVDYWxsZWVTYXZlc0Zvcihjb250ZXh0LCBiYXNlbGluZUNvZGVCbG9jayk7CisKKyAgICAv
LyBUaGUgdGFnIHJlZ2lzdGVycyBhcmUgbmVlZGVkIHRvIG1hdGVyaWFsaXplIHJlY292ZXJpZXMg
YmVsb3cuCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjcHUuZ3ByKEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3RlcikgPSBUYWdUeXBlTnVtYmVyOworICAgIGNwdS5ncHIoR1BSSW5mbzo6dGFn
TWFza1JlZ2lzdGVyKSA9IFRhZ1R5cGVOdW1iZXIgfCBUYWdCaXRUeXBlT3RoZXI7CisjZW5kaWYK
KworICAgIGlmIChleGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpKQorICAgICAgICBjb3B5Q2FsbGVl
U2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKGNvbnRleHQpOworCiAgICAgLy8g
Tm93IHRoYXQgdGhpbmdzIG9uIHRoZSBzdGFjayBhcmUgcmVjb3ZlcmVkLCBkbyB0aGUgYXJndW1l
bnRzIHJlY292ZXJ5LiBXZSBhc3N1bWUgdGhhdCBhcmd1bWVudHMKICAgICAvLyByZWNvdmVyaWVz
IGRvbid0IHJlY3Vyc2l2ZWx5IHJlZmVyIHRvIGVhY2ggb3RoZXIuIEJ1dCwgd2UgZG9uJ3QgdHJ5
IHRvIGFzc3VtZSB0aGF0IHRoZXkgb25seQogICAgIC8vIHJlZmVyIHRvIGNlcnRhaW4gcmFuZ2Vz
IG9mIGxvY2Fscy4gSGVuY2Ugd2h5IHdlIG5lZWQgdG8gZG8gdGhpcyBoZXJlLCBvbmNlIHRoZSBz
dGFjayBpcyBzZW5zaWJsZS4KICAgICAvLyBOb3RlIHRoYXQgd2UgYWxzbyByb3VnaGx5IGFzc3Vt
ZSB0aGF0IHRoZSBhcmd1bWVudHMgbWlnaHQgc3RpbGwgYmUgbWF0ZXJpYWxpemVkIG91dHNpZGUg
b2YgaXRzCiAgICAgLy8gaW5saW5lIGNhbGwgZnJhbWUgc2NvcGUgLSBidXQgZm9yIG5vdyB0aGUg
REZHIHdvdWxkbid0IGRvIHRoYXQuCiAKLSAgICBlbWl0UmVzdG9yZUFyZ3VtZW50cyhqaXQsIG9w
ZXJhbmRzKTsKKyAgICBlbWl0UmVzdG9yZUFyZ3VtZW50cyhjb250ZXh0LCBjb2RlQmxvY2ssIG9w
ZXJhbmRzKTsKIAogICAgIC8vIEFkanVzdCB0aGUgb2xkIEpJVCdzIGV4ZWN1dGUgY291bnRlci4g
U2luY2Ugd2UgYXJlIGV4aXRpbmcgT1NSLCB3ZSBrbm93CiAgICAgLy8gdGhhdCBhbGwgbmV3IGNh
bGxzIGludG8gdGhpcyBjb2RlIHdpbGwgZ28gdG8gdGhlIG5ldyBKSVQsIHNvIHRoZSBleGVjdXRl
CkBAIC03MjcsMjYgKzY2NiwxNjEgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhl
bHBlcnMmIAogICAgIC8vIGNvdW50ZXIgdG8gMDsgb3RoZXJ3aXNlIHdlIHNldCB0aGUgY291bnRl
ciB0bwogICAgIC8vIGNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAoKS4KIAotICAg
IGhhbmRsZUV4aXRDb3VudHMoaml0LCBleGl0KTsKKyAgICBpZiAoVU5MSUtFTFkoY29kZUJsb2Nr
LT51cGRhdGVPU1JFeGl0Q291bnRlckFuZENoZWNrSWZOZWVkVG9SZW9wdGltaXplKGV4aXRTdGF0
ZSkgPT0gQ29kZUJsb2NrOjpPcHRpbWl6ZUFjdGlvbjo6UmVvcHRpbWl6ZU5vdykpCisgICAgICAg
IHRyaWdnZXJSZW9wdGltaXphdGlvbk5vdyhiYXNlbGluZUNvZGVCbG9jaywgJmV4aXQpOworCisg
ICAgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhjb250ZXh0LCBiYXNlbGluZUNvZGVCbG9jaywgZXhp
dCk7CisgICAgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KGNvbnRleHQsIHZtLCBjb2RlQmxvY2ssIGJh
c2VsaW5lQ29kZUJsb2NrLCBleGl0KTsKK30KKworc3RhdGljIHZvaWQgcmVpZnlJbmxpbmVkQ2Fs
bEZyYW1lcyhDb250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIG91dGVybW9zdEJhc2VsaW5lQ29k
ZUJsb2NrLCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKK3sKKyAgICBhdXRvJiBjcHUgPSBjb250
ZXh0LmNwdTsKKyAgICBGcmFtZSBmcmFtZShjcHUuZnAoKSwgY29udGV4dC5zdGFjaygpKTsKKwor
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgbGVhdmUgaG9sZXMgb24gdGhlIHN0YWNrIHdoZW4g
cGVyZm9ybWluZyBhbiBPU1IgZXhpdAorICAgIC8vIGluIHByZXNlbmNlIG9mIGlubGluZWQgdGFp
bCBjYWxscy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ3NTExCisgICAgQVNTRVJUKG91dGVybW9zdEJhc2VsaW5lQ29kZUJsb2NrLT5qaXRUeXBlKCkg
PT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIGZyYW1lLnNldE9wZXJhbmQ8Q29kZUJsb2Nr
Kj4oQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrLCBvdXRlcm1vc3RCYXNlbGluZUNvZGVCbG9jayk7
CisKKyAgICBjb25zdCBDb2RlT3JpZ2luKiBjb2RlT3JpZ2luOworICAgIGZvciAoY29kZU9yaWdp
biA9ICZleGl0Lm1fY29kZU9yaWdpbjsgY29kZU9yaWdpbiAmJiBjb2RlT3JpZ2luLT5pbmxpbmVD
YWxsRnJhbWU7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUtPmdldENh
bGxlclNraXBwaW5nVGFpbENhbGxzKCkpIHsKKyAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxp
bmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWU7CisgICAgICAgIENvZGVC
bG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJh
c2VsaW5lQ29kZUJsb2NrKCpjb2RlT3JpZ2luLCBvdXRlcm1vc3RCYXNlbGluZUNvZGVCbG9jayk7
CisgICAgICAgIElubGluZUNhbGxGcmFtZTo6S2luZCB0cnVlQ2FsbGVyQ2FsbEtpbmQ7CisgICAg
ICAgIENvZGVPcmlnaW4qIHRydWVDYWxsZXIgPSBpbmxpbmVDYWxsRnJhbWUtPmdldENhbGxlclNr
aXBwaW5nVGFpbENhbGxzKCZ0cnVlQ2FsbGVyQ2FsbEtpbmQpOworICAgICAgICB2b2lkKiBjYWxs
ZXJGcmFtZSA9IGNwdS5mcCgpOworCisgICAgICAgIGlmICghdHJ1ZUNhbGxlcikgeworICAgICAg
ICAgICAgQVNTRVJUKGlubGluZUNhbGxGcmFtZS0+aXNUYWlsKCkpOworICAgICAgICAgICAgdm9p
ZCogcmV0dXJuUEMgPSBmcmFtZS5nZXQ8dm9pZCo+KENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQo
KSk7CisgICAgICAgICAgICBmcmFtZS5zZXQ8dm9pZCo+KGlubGluZUNhbGxGcmFtZS0+cmV0dXJu
UENPZmZzZXQoKSwgcmV0dXJuUEMpOworICAgICAgICAgICAgY2FsbGVyRnJhbWUgPSBmcmFtZS5n
ZXQ8dm9pZCo+KENhbGxGcmFtZTo6Y2FsbGVyRnJhbWVPZmZzZXQoKSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyID0g
YmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jaygqdHJ1ZUNhbGxl
ciwgb3V0ZXJtb3N0QmFzZWxpbmVDb2RlQmxvY2spOworICAgICAgICAgICAgdW5zaWduZWQgY2Fs
bEJ5dGVjb2RlSW5kZXggPSB0cnVlQ2FsbGVyLT5ieXRlY29kZUluZGV4OworICAgICAgICAgICAg
dm9pZCoganVtcFRhcmdldCA9IG51bGxwdHI7CisKKyAgICAgICAgICAgIHN3aXRjaCAodHJ1ZUNh
bGxlckNhbGxLaW5kKSB7CisgICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q2FsbDoK
KyAgICAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDb25zdHJ1Y3Q6CisgICAgICAgICAg
ICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q2FsbFZhcmFyZ3M6CisgICAgICAgICAgICBjYXNlIElu
bGluZUNhbGxGcmFtZTo6Q29uc3RydWN0VmFyYXJnczoKKyAgICAgICAgICAgIGNhc2UgSW5saW5l
Q2FsbEZyYW1lOjpUYWlsQ2FsbDoKKyAgICAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpU
YWlsQ2FsbFZhcmFyZ3M6IHsKKyAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5r
SW5mbyA9CisgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5n
ZXRDYWxsTGlua0luZm9Gb3JCeXRlY29kZUluZGV4KGNhbGxCeXRlY29kZUluZGV4KTsKKyAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsTGlua0luZm8pOworCisgICAgICAgICAgICAg
ICAganVtcFRhcmdldCA9IGNhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KIAot
ICAgIC8vIFJlaWZ5IGlubGluZWQgY2FsbCBmcmFtZXMuCisgICAgICAgICAgICBjYXNlIElubGlu
ZUNhbGxGcmFtZTo6R2V0dGVyQ2FsbDoKKyAgICAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1l
OjpTZXR0ZXJDYWxsOiB7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvID0KKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXItPmZp
bmRTdHViSW5mbyhDb2RlT3JpZ2luKGNhbGxCeXRlY29kZUluZGV4KSk7CisgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoc3R1YkluZm8pOworCisgICAgICAgICAgICAgICAganVtcFRhcmdl
dCA9IHN0dWJJbmZvLT5kb25lTG9jYXRpb24oKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAg
ICB9CiAKLSAgICByZWlmeUlubGluZWRDYWxsRnJhbWVzKGppdCwgZXhpdCk7CisgICAgICAgICAg
ICBpZiAodHJ1ZUNhbGxlci0+aW5saW5lQ2FsbEZyYW1lKQorICAgICAgICAgICAgICAgIGNhbGxl
ckZyYW1lID0gY3B1LmZwPHVpbnQ4X3QqPigpICsgdHJ1ZUNhbGxlci0+aW5saW5lQ2FsbEZyYW1l
LT5zdGFja09mZnNldCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CiAKLSAgICAvLyBBbmQgZmlu
aXNoLgotICAgIGFkanVzdEFuZEp1bXBUb1RhcmdldCh2bSwgaml0LCBleGl0KTsKKyAgICAgICAg
ICAgIGZyYW1lLnNldDx2b2lkKj4oaW5saW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpLCBq
dW1wVGFyZ2V0KTsKKyAgICAgICAgfQorCisgICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dm9pZCo+
KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2ss
IGJhc2VsaW5lQ29kZUJsb2NrKTsKKworICAgICAgICAvLyBSZXN0b3JlIHRoZSBpbmxpbmUgY2Fs
bCBmcmFtZSdzIGNhbGxlZSBzYXZlIHJlZ2lzdGVycy4KKyAgICAgICAgLy8gSWYgdGhpcyBpbmxp
bmVkIGZyYW1lIGlzIGEgdGFpbCBjYWxsIHRoYXQgd2lsbCByZXR1cm4gYmFjayB0byB0aGUgb3Jp
Z2luYWwgY2FsbGVyLCB3ZSBuZWVkIHRvCisgICAgICAgIC8vIGNvcHkgdGhlIHByaW9yIGNvbnRl
bnRzIG9mIHRoZSB0YWcgcmVnaXN0ZXJzIGFscmVhZHkgc2F2ZWQgZm9yIHRoZSBvdXRlciBmcmFt
ZSB0byB0aGlzIGZyYW1lLgorICAgICAgICBzYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoY29udGV4
dCwgYmFzZWxpbmVDb2RlQmxvY2ssIHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oaW5saW5l
Q2FsbEZyYW1lLT5zdGFja09mZnNldCksICF0cnVlQ2FsbGVyKTsKKworICAgICAgICBpZiAoIWlu
bGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5k
PHVpbnQzMl90PihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudCwgUGF5bG9hZE9mZnNldCwgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyk7CisgICAgICAgIEFTU0VSVChjYWxsZXJGcmFtZSk7CisgICAgICAg
IGZyYW1lLnNldDx2b2lkKj4oaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXJGcmFtZU9mZnNldCgpLCBj
YWxsZXJGcmFtZSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgdWludDMyX3QgbG9jYXRp
b25CaXRzID0gQ2FsbFNpdGVJbmRleChjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KS5iaXRzKCk7
CisgICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3Rh
Y2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBUYWdPZmZzZXQsIGxvY2F0
aW9uQml0cyk7CisgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQor
ICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0
ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBKU1ZhbHVlKGlubGluZUNhbGxGcmFtZS0+Y2FsbGVl
Q29uc3RhbnQoKSkpOworI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkgLy8gc28gdGhpcyBpcyB0aGUg
MzItYml0IHBhcnQKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gYmFzZWxpbmVD
b2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBjb2RlT3JpZ2luLT5ieXRlY29kZUlu
ZGV4OworICAgICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KGluc3Ry
dWN0aW9uKS5iaXRzKCk7CisgICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGlu
ZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBU
YWdPZmZzZXQsIGxvY2F0aW9uQml0cyk7CisgICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMy
X3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUs
IFRhZ09mZnNldCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTVmFsdWU6OkNlbGxUYWcpKTsKKyAg
ICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpCisgICAgICAgICAgICBm
cmFtZS5zZXRPcGVyYW5kKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVT
bG90OjpjYWxsZWUsIFBheWxvYWRPZmZzZXQsIGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29uc3Rh
bnQoKSk7CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkgLy8gZW5kaW5nIHRoZSAjZWxzZSBwYXJ0
LCBzbyBkaXJlY3RseSBhYm92ZSBpcyB0aGUgMzItYml0IHBhcnQKKyAgICB9CisKKyAgICAvLyBE
b24ndCBuZWVkIHRvIHNldCB0aGUgdG9wbGV2ZWwgY29kZSBvcmlnaW4gaWYgd2Ugb25seSBkaWQg
aW5saW5lIHRhaWwgY2FsbHMKKyAgICBpZiAoY29kZU9yaWdpbikgeworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoY29kZU9y
aWdpbi0+Ynl0ZWNvZGVJbmRleCkuYml0cygpOworI2Vsc2UKKyAgICAgICAgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uID0gb3V0ZXJtb3N0QmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9ucygp
LmJlZ2luKCkgKyBjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4OworICAgICAgICB1aW50MzJfdCBs
b2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KGluc3RydWN0aW9uKS5iaXRzKCk7CisjZW5kaWYK
KyAgICAgICAgZnJhbWUuc2V0T3BlcmFuZDx1aW50MzJfdD4oQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudCwgVGFnT2Zmc2V0LCBsb2NhdGlvbkJpdHMpOworICAgIH0KIH0KIAotdm9pZCBKSVRf
T1BFUkFUSU9OIE9TUkV4aXQ6OmRlYnVnT3BlcmF0aW9uUHJpbnRTcGVjdWxhdGlvbkZhaWx1cmUo
RXhlY1N0YXRlKiBleGVjLCB2b2lkKiBkZWJ1Z0luZm9SYXcsIHZvaWQqIHNjcmF0Y2gpCitzdGF0
aWMgdm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoQ29udGV4dCYgY29udGV4dCwgVk0mIHZtLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jaywgT1NSRXhp
dCYgZXhpdCkKIHsKLSAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBPU1JFeGl0U3RhdGUqIGV4aXRTdGF0ZSA9
IGV4aXQuZXhpdFN0YXRlLmdldCgpOwogCi0gICAgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZv
KiBkZWJ1Z0luZm8gPSBzdGF0aWNfY2FzdDxTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8qPihk
ZWJ1Z0luZm9SYXcpOwotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZGVidWdJbmZvLT5jb2Rl
QmxvY2s7CisgICAgV1RGOjpzdG9yZUxvYWRGZW5jZSgpOyAvLyBUaGUgb3B0aW1pemluZyBjb21w
aWxlciBleHBlY3RzIHRoYXQgdGhlIE9TUiBleGl0IG1lY2hhbmlzbSB3aWxsIGV4ZWN1dGUgdGhp
cyBmZW5jZS4KKyAgICB2bS5oZWFwLndyaXRlQmFycmllcihiYXNlbGluZUNvZGVCbG9jayk7CisK
KyAgICAvLyBXZSBiYXJyaWVyIGFsbCBpbmxpbmVkIGZyYW1lcyAtLSBhbmQgbm90IGp1c3QgdGhl
IGN1cnJlbnQgaW5saW5lIHN0YWNrIC0tCisgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCBrbm93IHdo
aWNoIGlubGluZWQgZnVuY3Rpb24gb3ducyB0aGUgdmFsdWUgcHJvZmlsZSB0aGF0CisgICAgLy8g
d2UnbGwgdXBkYXRlIHdoZW4gd2UgZXhpdC4gSW4gdGhlIGNhc2Ugb2YgImYoKSB7IGEoKTsgYigp
OyB9IiwgaWYgYm90aAorICAgIC8vIGEgYW5kIGIgYXJlIGlubGluZWQsIHdlIG1pZ2h0IGV4aXQg
aW5zaWRlIGIgZHVlIHRvIGEgYmFkIHZhbHVlIGxvYWRlZAorICAgIC8vIGZyb20gYS4KKyAgICAv
LyBGSVhNRTogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBzaG91bGQgcmVtZW1iZXIgd2hp
Y2ggQ29kZUJsb2NrIG93bnMKKyAgICAvLyB0aGUgdmFsdWUgcHJvZmlsZS4KKyAgICBJbmxpbmVD
YWxsRnJhbWVTZXQqIGlubGluZUNhbGxGcmFtZXMgPSBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZn
Q29tbW9uKCktPmlubGluZUNhbGxGcmFtZXMuZ2V0KCk7CisgICAgaWYgKGlubGluZUNhbGxGcmFt
ZXMpIHsKKyAgICAgICAgZm9yIChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA6ICpp
bmxpbmVDYWxsRnJhbWVzKQorICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoaW5saW5l
Q2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5nZXQoKSk7CisgICAgfQorCisgICAgaWYgKGV4
aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgY29udGV4dC5mcCgpID0g
Y29udGV4dC5mcDx1aW50OF90Kj4oKSArIGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFt
ZS0+c3RhY2tPZmZzZXQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOworCisgICAgdm9pZCoganVt
cFRhcmdldCA9IGV4aXRTdGF0ZS0+anVtcFRhcmdldDsKKyAgICBBU1NFUlQoanVtcFRhcmdldCk7
CisKKyAgICBjb250ZXh0LnNwKCkgPSBjb250ZXh0LmZwPHVpbnQ4X3QqPigpICsgZXhpdFN0YXRl
LT5zdGFja1BvaW50ZXJPZmZzZXQ7CisgICAgaWYgKGV4aXQuaXNFeGNlcHRpb25IYW5kbGVyKCkp
IHsKKyAgICAgICAgLy8gU2luY2Ugd2UncmUganVtcGluZyB0byBvcF9jYXRjaCwgd2UgbmVlZCB0
byBzZXQgY2FsbEZyYW1lRm9yQ2F0Y2guCisgICAgICAgIHZtLmNhbGxGcmFtZUZvckNhdGNoID0g
Y29udGV4dC5mcDxFeGVjU3RhdGUqPigpOworICAgIH0KKworICAgIHZtLnRvcENhbGxGcmFtZSA9
IGNvbnRleHQuZnA8RXhlY1N0YXRlKj4oKTsKKyAgICBjb250ZXh0LnBjKCkgPSBqdW1wVGFyZ2V0
OworfQorCitzdGF0aWMgdm9pZCBwcmludE9TUkV4aXQoQ29udGV4dCYgY29udGV4dCwgdWludDMy
X3Qgb3NyRXhpdEluZGV4LCBjb25zdCBPU1JFeGl0JiBleGl0KQoreworICAgIEV4ZWNTdGF0ZSog
ZXhlYyA9IGNvbnRleHQuZnA8RXhlY1N0YXRlKj4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGV4ZWMtPmNvZGVCbG9jaygpOwogICAgIENvZGVCbG9jayogYWx0ZXJuYXRpdmUgPSBjb2Rl
QmxvY2stPmFsdGVybmF0aXZlKCk7CisgICAgRXhpdEtpbmQga2luZCA9IGV4aXQubV9raW5kOwor
ICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJ
bmRleDsKKwogICAgIGRhdGFMb2coIlNwZWN1bGF0aW9uIGZhaWx1cmUgaW4gIiwgKmNvZGVCbG9j
ayk7Ci0gICAgZGF0YUxvZygiIEAgZXhpdCAjIiwgdm0tPm9zckV4aXRJbmRleCwgIiAoYmMjIiwg
ZGVidWdJbmZvLT5ieXRlY29kZU9mZnNldCwgIiwgIiwgZXhpdEtpbmRUb1N0cmluZyhkZWJ1Z0lu
Zm8tPmtpbmQpLCAiKSB3aXRoICIpOworICAgIGRhdGFMb2coIiBAIGV4aXQgIyIsIG9zckV4aXRJ
bmRleCwgIiAoYmMjIiwgYnl0ZWNvZGVPZmZzZXQsICIsICIsIGV4aXRLaW5kVG9TdHJpbmcoa2lu
ZCksICIpIHdpdGggIik7CiAgICAgaWYgKGFsdGVybmF0aXZlKSB7CiAgICAgICAgIGRhdGFMb2co
CiAgICAgICAgICAgICAiZXhlY3V0ZUNvdW50ZXIgPSAiLCBhbHRlcm5hdGl2ZS0+aml0RXhlY3V0
ZUNvdW50ZXIoKSwKQEAgLTc1NiwyMSArODMwLDE4IEBAIHZvaWQgSklUX09QRVJBVElPTiBPU1JF
eGl0OjpkZWJ1Z09wZXJhdGkKICAgICAgICAgZGF0YUxvZygibm8gYWx0ZXJuYXRpdmUgY29kZSBi
bG9jayAoaS5lLiB3ZSd2ZSBiZWVuIGpldHRpc29uZWQpIik7CiAgICAgZGF0YUxvZygiLCBvc3JF
eGl0Q291bnRlciA9ICIsIGNvZGVCbG9jay0+b3NyRXhpdENvdW50ZXIoKSwgIlxuIik7CiAgICAg
ZGF0YUxvZygiICAgIEdQUnMgYXQgdGltZSBvZiBleGl0OiIpOwotICAgIGNoYXIqIHNjcmF0Y2hQ
b2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHNjcmF0Y2gpOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CiAgICAgICAgIEdQ
UlJlZyBncHIgPSBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpOwotICAgICAgICBkYXRhTG9nKCIgIiwg
R1BSSW5mbzo6ZGVidWdOYW1lKGdwciksICI6IiwgUmF3UG9pbnRlcigqcmVpbnRlcnByZXRfY2Fz
dF9wdHI8dm9pZCoqPihzY3JhdGNoUG9pbnRlcikpKTsKLSAgICAgICAgc2NyYXRjaFBvaW50ZXIg
Kz0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKKyAgICAgICAgZGF0YUxvZygiICIsIGNvbnRleHQu
Z3ByTmFtZShncHIpLCAiOiIsIFJhd1BvaW50ZXIoY29udGV4dC5ncHI8dm9pZCo+KGdwcikpKTsK
ICAgICB9CiAgICAgZGF0YUxvZygiXG4iKTsKICAgICBkYXRhTG9nKCIgICAgRlBScyBhdCB0aW1l
IG9mIGV4aXQ6Iik7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJl
ck9mUmVnaXN0ZXJzOyArK2kpIHsKICAgICAgICAgRlBSUmVnIGZwciA9IEZQUkluZm86OnRvUmVn
aXN0ZXIoaSk7Ci0gICAgICAgIGRhdGFMb2coIiAiLCBGUFJJbmZvOjpkZWJ1Z05hbWUoZnByKSwg
IjoiKTsKLSAgICAgICAgdWludDY0X3QgYml0cyA9ICpyZWludGVycHJldF9jYXN0X3B0cjx1aW50
NjRfdCo+KHNjcmF0Y2hQb2ludGVyKTsKLSAgICAgICAgZG91YmxlIHZhbHVlID0gKnJlaW50ZXJw
cmV0X2Nhc3RfcHRyPGRvdWJsZSo+KHNjcmF0Y2hQb2ludGVyKTsKKyAgICAgICAgZGF0YUxvZygi
ICIsIGNvbnRleHQuZnByTmFtZShmcHIpLCAiOiIpOworICAgICAgICB1aW50NjRfdCBiaXRzID0g
Y29udGV4dC5mcHI8dWludDY0X3Q+KGZwcik7CisgICAgICAgIGRvdWJsZSB2YWx1ZSA9IGNvbnRl
eHQuZnByKGZwcik7CiAgICAgICAgIGRhdGFMb2dGKCIlbGx4OiVsZiIsIHN0YXRpY19jYXN0PGxv
bmcgbG9uZz4oYml0cyksIHZhbHVlKTsKLSAgICAgICAgc2NyYXRjaFBvaW50ZXIgKz0gc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKTsKICAgICB9CiAgICAgZGF0YUxvZygiXG4iKTsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCShyZXZpc2lvbiAyMjE2ODcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsMTAgKzMzLDE3IEBACiAjaW5jbHVkZSAiTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5o
IgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCiAjaW5jbHVkZSAiVmFsdWVSZWNvdmVyeS5oIgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIENDYWxsSGVs
cGVyczsKK25hbWVzcGFjZSBQcm9iZSB7CitjbGFzcyBDb250ZXh0OworfSAvLyBuYW1lc3BhY2Ug
UHJvYmUKKworbmFtZXNwYWNlIFByb2ZpbGVyIHsKK2NsYXNzIE9TUkV4aXQ7Cit9IC8vIG5hbWVz
cGFjZSBQcm9maWxlcgogCiBuYW1lc3BhY2UgREZHIHsKIApAQCAtOTEsNiArOTgsMzIgQEAgcHJp
dmF0ZToKICAgICBTcGVjdWxhdGlvblJlY292ZXJ5VHlwZSBtX3R5cGU7CiB9OwogCitzdHJ1Y3Qg
T1NSRXhpdFN0YXRlIDogUmVmQ291bnRlZDxPU1JFeGl0U3RhdGU+IHsKKyAgICBPU1JFeGl0U3Rh
dGUoT1NSRXhpdEJhc2UmIGV4aXQsIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2sqIGJh
c2VsaW5lQ29kZUJsb2NrLCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMsIFNwZWN1
bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5LCBwdHJkaWZmX3Qgc3RhY2tQb2ludGVyT2Zmc2V0LCBp
bnQzMl90IGFjdGl2ZVRocmVzaG9sZCwgZG91YmxlIG1lbW9yeVVzYWdlQWRqdXN0ZWRUaHJlc2hv
bGQsIHZvaWQqIGp1bXBUYXJnZXQpCisgICAgICAgIDogZXhpdChleGl0KQorICAgICAgICAsIGNv
ZGVCbG9jayhjb2RlQmxvY2spCisgICAgICAgICwgYmFzZWxpbmVDb2RlQmxvY2soYmFzZWxpbmVD
b2RlQmxvY2spCisgICAgICAgICwgb3BlcmFuZHMob3BlcmFuZHMpCisgICAgICAgICwgcmVjb3Zl
cnkocmVjb3ZlcnkpCisgICAgICAgICwgc3RhY2tQb2ludGVyT2Zmc2V0KHN0YWNrUG9pbnRlck9m
ZnNldCkKKyAgICAgICAgLCBhY3RpdmVUaHJlc2hvbGQoYWN0aXZlVGhyZXNob2xkKQorICAgICAg
ICAsIG1lbW9yeVVzYWdlQWRqdXN0ZWRUaHJlc2hvbGQobWVtb3J5VXNhZ2VBZGp1c3RlZFRocmVz
aG9sZCkKKyAgICAgICAgLCBqdW1wVGFyZ2V0KGp1bXBUYXJnZXQpCisgICAgeyB9CisKKyAgICBP
U1JFeGl0QmFzZSYgZXhpdDsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jazsKKyAgICBDb2RlQmxv
Y2sqIGJhc2VsaW5lQ29kZUJsb2NrOworICAgIE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+IG9wZXJh
bmRzOworICAgIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5OworICAgIHB0cmRpZmZfdCBz
dGFja1BvaW50ZXJPZmZzZXQ7CisgICAgdWludDMyX3QgYWN0aXZlVGhyZXNob2xkOworICAgIGRv
dWJsZSBtZW1vcnlVc2FnZUFkanVzdGVkVGhyZXNob2xkOworICAgIHZvaWQqIGp1bXBUYXJnZXQ7
CisKKyAgICBQcm9maWxlcjo6T1NSRXhpdCogcHJvZmlsZXJFeGl0IHsgbnVsbHB0ciB9OworfTsK
KwogLy8gPT09IE9TUkV4aXQgPT09CiAvLwogLy8gVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVzIGhv
dyB0byBleGl0IHRoZSBzcGVjdWxhdGl2ZSBwYXRoIGJ5CkBAIC05OCwzMiArMTMxLDIwIEBAIHBy
aXZhdGU6CiBzdHJ1Y3QgT1NSRXhpdCA6IHB1YmxpYyBPU1JFeGl0QmFzZSB7CiAgICAgT1NSRXhp
dChFeGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSwg
U3BlY3VsYXRpdmVKSVQqLCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3ZlcnlJ
bmRleCA9IFVJTlRfTUFYKTsKIAotICAgIHN0YXRpYyB2b2lkIEpJVF9PUEVSQVRJT04gY29tcGls
ZU9TUkV4aXQoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOworICAgIHN0YXRpYyB2b2lkIGV4ZWN1
dGVPU1JFeGl0KFByb2JlOjpDb250ZXh0Jik7CiAKLSAgICB1bnNpZ25lZCBtX3BhdGNoYWJsZUNv
ZGVPZmZzZXQgeyAwIH07Ci0gICAgCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG1fY29kZTsK
KyAgICBSZWZQdHI8T1NSRXhpdFN0YXRlPiBleGl0U3RhdGU7CiAgICAgCiAgICAgSlNWYWx1ZVNv
dXJjZSBtX2pzVmFsdWVTb3VyY2U7CiAgICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBt
X3ZhbHVlUHJvZmlsZTsKICAgICAKICAgICB1bnNpZ25lZCBtX3JlY292ZXJ5SW5kZXg7CiAKLSAg
ICB2b2lkIHNldFBhdGNoYWJsZUNvZGVPZmZzZXQoTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1
bXApOwotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGdldFBhdGNoYWJsZUNvZGVPZmZzZXRBc0p1
bXAoKSBjb25zdDsKLSAgICBDb2RlTG9jYXRpb25KdW1wIGNvZGVMb2NhdGlvbkZvclJlcGF0Y2go
Q29kZUJsb2NrKikgY29uc3Q7Ci0gICAgdm9pZCBjb3JyZWN0SnVtcChMaW5rQnVmZmVyJik7Ci0K
ICAgICB1bnNpZ25lZCBtX3N0cmVhbUluZGV4OwogICAgIHZvaWQgY29uc2lkZXJBZGRpbmdBc0Zy
ZXF1ZW50RXhpdFNpdGUoQ29kZUJsb2NrKiBwcm9maWxlZENvZGVCbG9jaykKICAgICB7CiAgICAg
ICAgIE9TUkV4aXRCYXNlOjpjb25zaWRlckFkZGluZ0FzRnJlcXVlbnRFeGl0U2l0ZShwcm9maWxl
ZENvZGVCbG9jaywgRXhpdEZyb21ERkcpOwogICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGF0aWMg
dm9pZCBjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmLCBWTSYsIGNvbnN0IE9TUkV4aXQmLCBjb25z
dCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYsIFNwZWN1bGF0aW9uUmVjb3ZlcnkqKTsKLSAgICBz
dGF0aWMgdm9pZCBlbWl0UmVzdG9yZUFyZ3VtZW50cyhDQ2FsbEhlbHBlcnMmLCBjb25zdCBPcGVy
YW5kczxWYWx1ZVJlY292ZXJ5PiYpOwotICAgIHN0YXRpYyB2b2lkIEpJVF9PUEVSQVRJT04gZGVi
dWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFpbHVyZShFeGVjU3RhdGUqLCB2b2lkKiwgdm9p
ZCopIFdURl9JTlRFUk5BTDsKIH07CiAKIHN0cnVjdCBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0lu
Zm8gewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJD
b21tb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyQ29tbW9uLmNwcAkocmV2aXNpb24gMjIxNjg3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
Ky8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogdm9pZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKIHsKICAgICBpZiAoIWV4aXRLaW5k
TWF5SmV0dGlzb24oZXhpdC5tX2tpbmQpKSB7CkBAIC0xNDMsNiArMTQ0LDcgQEAgdm9pZCBoYW5k
bGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYgaml0LAogICAgIGRvbmVBZGp1c3RpbmcubGluaygm
aml0KTsKIH0KIAorLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgZml4IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiB2b2lkIHJlaWZ5SW5saW5lZENh
bGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogewog
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgbGVhdmUgaG9sZXMgb24gdGhlIHN0YWNrIHdoZW4g
cGVyZm9ybWluZyBhbiBPU1IgZXhpdApAQCAtMjUyLDYgKzI1NCw3IEBAIHZvaWQgcmVpZnlJbmxp
bmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMKICAgICB9CiB9CiAKKy8vIEZJWE1FOiByZW1vdmUg
dGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc1MTQ1Lgogc3RhdGljIHZvaWQgb3NyV3JpdGVCYXJyaWVyKENDYWxsSGVscGVycyYgaml0LCBH
UFJSZWcgb3duZXIsIEdQUlJlZyBzY3JhdGNoKQogewogICAgIEFzc2VtYmx5SGVscGVyczo6SnVt
cCBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuID0gaml0LmJhcnJpZXJCcmFuY2hXaXRob3V0RmVu
Y2Uob3duZXIpOwpAQCAtMjcyLDYgKzI3NSw3IEBAIHN0YXRpYyB2b2lkIG9zcldyaXRlQmFycmll
cihDQ2FsbEhlbHBlcnMKICAgICBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuLmxpbmsoJmppdCk7
CiB9CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogdm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJn
ZXQoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiB7
CiAgICAgaml0Lm1lbW9yeUZlbmNlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgJKHJldmlzaW9uIDIyMTY4NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNiArNDAsNyBAQCB2b2lkIGhhbmRsZUV4aXRDb3VudHMo
Q0NhbGxIZWxwZXJzJiwgY29uCiB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxw
ZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsKIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KFZN
JiwgQ0NhbGxIZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsKIAorLy8gRklYTUU6IFRoaXMg
d29uJ3QgYmUgbmVlZGVkIG9uY2Ugd2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzUxNDUuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSklUQ29kZVR5cGU+CiB2b2lk
IGFkanVzdEZyYW1lQW5kU3RhY2tJbk9TUkV4aXRDb21waWxlclRodW5rKE1hY3JvQXNzZW1ibGVy
JiBqaXQsIFZNKiB2bSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMjE2ODcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzU1LDYyICsxMzU1LDYgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNyZWF0ZUNsbwogICAgICAgICBleGVjLCBzdHJ1Y3R1cmUsIGFyZ3VtZW50U3RhcnQsIGxl
bmd0aCwgY2FsbGVlKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0
ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4aXQoRXhlY1N0YXRlKiBleGVjLCBJbmxpbmVDYWxsRnJh
bWUqIGlubGluZUNhbGxGcmFtZSwgSlNGdW5jdGlvbiogY2FsbGVlLCBpbnQzMl90IGFyZ3VtZW50
Q291bnQpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdGFyZ2V0KCZ2bSwgZXhlYyk7Ci0gICAgCi0gICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZl
ckdDKHZtLmhlYXApOwotICAgIAotICAgIENvZGVCbG9jayogY29kZUJsb2NrOwotICAgIGlmIChp
bmxpbmVDYWxsRnJhbWUpCi0gICAgICAgIGNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9y
SW5saW5lQ2FsbEZyYW1lKGlubGluZUNhbGxGcmFtZSk7Ci0gICAgZWxzZQotICAgICAgICBjb2Rl
QmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKLSAgICAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBh
cmd1bWVudENvdW50IC0gMTsKLSAgICB1bnNpZ25lZCBjYXBhY2l0eSA9IHN0ZDo6bWF4KGxlbmd0
aCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gMSkp
OwotICAgIERpcmVjdEFyZ3VtZW50cyogcmVzdWx0ID0gRGlyZWN0QXJndW1lbnRzOjpjcmVhdGUo
Ci0gICAgICAgIHZtLCBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5kaXJlY3RBcmd1bWVudHNT
dHJ1Y3R1cmUoKSwgbGVuZ3RoLCBjYXBhY2l0eSk7Ci0gICAgCi0gICAgcmVzdWx0LT5jYWxsZWUo
KS5zZXQodm0sIHJlc3VsdCwgY2FsbGVlKTsKLSAgICAKLSAgICBSZWdpc3RlciogYXJndW1lbnRz
ID0KLSAgICAgICAgZXhlYy0+cmVnaXN0ZXJzKCkgKyAoaW5saW5lQ2FsbEZyYW1lID8gaW5saW5l
Q2FsbEZyYW1lLT5zdGFja09mZnNldCA6IDApICsKLSAgICAgICAgQ2FsbEZyYW1lOjphcmd1bWVu
dE9mZnNldCgwKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspCi0gICAgICAg
IHJlc3VsdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpLCBhcmd1bWVudHNbaV0uanNWYWx1ZSgpKTsK
LSAgICAKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1lbnRzRHVyaW5nRXhpdChFeGVjU3RhdGUqIGV4ZWMsIElu
bGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBjYWxsZWUsIGludDMy
X3QgYXJndW1lbnRDb3VudCkKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0YXJnZXQoJnZtLCBleGVjKTsKLSAgICAKLSAgICBEZWZlckdDRm9y
QVdoaWxlIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2s7
Ci0gICAgaWYgKGlubGluZUNhbGxGcmFtZSkKLSAgICAgICAgY29kZUJsb2NrID0gYmFzZWxpbmVD
b2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1lKTsKLSAgICBlbHNlCi0g
ICAgICAgIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwotICAgIAotICAgIHVuc2lnbmVk
IGxlbmd0aCA9IGFyZ3VtZW50Q291bnQgLSAxOwotICAgIENsb25lZEFyZ3VtZW50cyogcmVzdWx0
ID0gQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGVFbXB0eSgKLSAgICAgICAgdm0sIGNvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCktPmNsb25lZEFyZ3VtZW50c1N0cnVjdHVyZSgpLCBjYWxsZWUsIGxlbmd0
aCk7Ci0gICAgCi0gICAgUmVnaXN0ZXIqIGFyZ3VtZW50cyA9Ci0gICAgICAgIGV4ZWMtPnJlZ2lz
dGVycygpICsgKGlubGluZUNhbGxGcmFtZSA/IGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQg
OiAwKSArCi0gICAgICAgIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoMCk7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KQotICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4
KGV4ZWMsIGksIGFyZ3VtZW50c1tpXS5qc1ZhbHVlKCkpOwotCi0gICAgCi0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVJlc3QoRXhl
Y1N0YXRlKiBleGVjLCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdW5zaWduZWQgbnVtYmVyT2ZQ
YXJhbXNUb1NraXAsIHVuc2lnbmVkIGFycmF5U2l6ZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+
dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShy
ZXZpc2lvbiAyMjE2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDkgKzEzOSw3IEBAIHNpemVfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkNvbXBhcmVTdHIKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNv
bXBhcmVTdHJpY3RFcShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUq
LCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqLCBFbmNvZGVkSlNWYWx1ZSk7CiBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzKEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZSosIGludDMyX3QgbGVuZ3RoLCBpbnQzMl90IG1pbkNhcGFjaXR5KTsKLUpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHNEdXJpbmdFeGl0KEV4ZWNT
dGF0ZSosIElubGluZUNhbGxGcmFtZSosIEpTRnVuY3Rpb24qLCBpbnQzMl90IGFyZ3VtZW50Q291
bnQpOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50
cyhFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgaW50MzJf
dCBsZW5ndGgsIEpTRnVuY3Rpb24qIGNhbGxlZSwgSlNMZXhpY2FsRW52aXJvbm1lbnQqKTsKLUpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHNEdXJpbmdF
eGl0KEV4ZWNTdGF0ZSosIElubGluZUNhbGxGcmFtZSosIEpTRnVuY3Rpb24qLCBpbnQzMl90IGFy
Z3VtZW50Q291bnQpOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUNsb25l
ZEFyZ3VtZW50cyhFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBSZWdpc3RlciogYXJndW1lbnRTdGFy
dCwgaW50MzJfdCBsZW5ndGgsIEpTRnVuY3Rpb24qIGNhbGxlZSk7CiBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQ3JlYXRlUmVzdChFeGVjU3RhdGUqLCBSZWdpc3RlciogYXJndW1lbnRT
dGFydCwgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAsIHVuc2lnbmVkIGFycmF5U2l6
ZSk7CiBkb3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25GTW9kT25JbnRzKGludDMyX3QsIGlu
dDMyX3QpIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Ro
dW5rcy5jcHAJKHJldmlzaW9uIDIyMTY4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNjQgKzQwLDEyIEBACiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4
aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IG9zckV4aXRUaHVua0dlbmVyYXRvcihWTSogdm0pCiB7CiAgICAgTWFjcm9Bc3NlbWJsZXIgaml0
OwotCi0gICAgLy8gVGhpcyBuZWVkcyB0byBoYXBwZW4gYmVmb3JlIHdlIHVzZSB0aGUgc2NyYXRj
aCBidWZmZXIgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGFsc28gdXNlcyB0aGUgc2NyYXRjaCBidWZm
ZXIuCi0gICAgYWRqdXN0RnJhbWVBbmRTdGFja0luT1NSRXhpdENvbXBpbGVyVGh1bms8REZHOjpK
SVRDb2RlPihqaXQsIHZtLCBKSVRDb2RlOjpERkdKSVQpOwotICAgIAotICAgIHNpemVfdCBzY3Jh
dGNoU2l6ZSA9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdp
c3RlcnMgKyBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyk7Ci0gICAgU2NyYXRjaEJ1ZmZlciog
c2NyYXRjaEJ1ZmZlciA9IHZtLT5zY3JhdGNoQnVmZmVyRm9yU2l6ZShzY3JhdGNoU2l6ZSk7Ci0g
ICAgRW5jb2RlZEpTVmFsdWUqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4o
c2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKTsKLSAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewotI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnRvUmVnaXN0ZXIoaSksIGJ1ZmZl
ciArIGkpOwotI2Vsc2UKLSAgICAgICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6dG9SZWdpc3Rlcihp
KSwgYnVmZmVyICsgaSk7Ci0jZW5kaWYKLSAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSAgICAgICAgaml0Lm1vdmUo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoYnVmZmVyICsgR1BSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnMgKyBpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICBqaXQuc3RvcmVEb3VibGUo
RlBSSW5mbzo6dG9SZWdpc3RlcihpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6
cmVnVDApKTsKLSAgICB9Ci0gICAgCi0gICAgLy8gVGVsbCBHQyBtYXJrIHBoYXNlIGhvdyBtdWNo
IG9mIHRoZSBzY3JhdGNoIGJ1ZmZlciBpcyBhY3RpdmUgZHVyaW5nIGNhbGwuCi0gICAgaml0Lm1v
dmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09m
QWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgaml0LnN0b3JlUHRyKE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2hTaXplKSwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoR1BSSW5mbzo6cmVnVDApKTsKLQotICAgIC8vIFNldCB1cCBvbmUgYXJndW1lbnQuCi0j
aWYgQ1BVKFg4NikKLSAgICBqaXQucG9rZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgMCk7
Ci0jZWxzZQotICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOwotI2VuZGlmCi0KLSAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBmdW5j
dGlvbkNhbGwgPSBqaXQuY2FsbCgpOwotCi0gICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBHUFJJ
bmZvOjpyZWdUMCk7Ci0gICAgaml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKDApLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCkpOwotCi0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kp
IHsKLSAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoYnVmZmVy
ICsgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSwgR1BSSW5mbzo6cmVnVDApOwotICAg
ICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdU
MCksIEZQUkluZm86OnRvUmVnaXN0ZXIoaSkpOwotICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewotI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgICAgIGppdC5sb2FkNjQoYnVmZmVyICsgaSwgR1BSSW5mbzo6dG9SZWdpc3Rl
cihpKSk7Ci0jZWxzZQotICAgICAgICBqaXQubG9hZDMyKGJ1ZmZlciArIGksIEdQUkluZm86OnRv
UmVnaXN0ZXIoaSkpOwotI2VuZGlmCi0gICAgfQotICAgIAotICAgIGppdC5qdW1wKE1hY3JvQXNz
ZW1ibGVyOjpBYnNvbHV0ZUFkZHJlc3MoJnZtLT5vc3JFeGl0SnVtcERlc3RpbmF0aW9uKSk7Ci0g
ICAgCisgICAgaml0LnByb2JlKE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0LCB2bSk7CiAgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgCi0gICAgcGF0
Y2hCdWZmZXIubGluayhmdW5jdGlvbkNhbGwsIE9TUkV4aXQ6OmNvbXBpbGVPU1JFeGl0KTsKLSAg
ICAKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJERkcgT1NSIGV4aXQg
Z2VuZXJhdGlvbiB0aHVuayIpKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgKCJERkcgT1NSIGV4aXQgdGh1bmsiKSk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBv
c3JFbnRyeVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVGh1bmtzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUaHVua3MuaAkocmV2aXNpb24gMjIxNjg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdUaHVua3MuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNz
IFZNOwogCiBuYW1lc3BhY2UgREZHIHsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRH
ZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoVk0qKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JF
eGl0VGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFbnRyeVRo
dW5rR2VuZXJhdG9yKFZNKik7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9u
IDIyMTY4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBFeGVjdXRhYmxlQmFzZSogQXNzZW1i
bHlIZWxwZXJzOjpleGVjdXRhCiAgICAgcmV0dXJuIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
LT5iYXNlbGluZUNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7CiB9CiAKKy8vIEZJWE1FOiBy
ZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc1MTQ1LgogVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4mIEFzc2VtYmx5
SGVscGVyczo6ZGVjb2RlZENvZGVNYXBGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAg
QVNTRVJUKGNvZGVCbG9jayA9PSBjb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpKTsKQEAgLTgy
MCw2MSArODIxLDYgQEAgYm9vbCBBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHROZQog
CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQogCi12b2lkIEFzc2VtYmx5SGVscGVyczo6
ZGVidWdDYWxsKFZNJiB2bSwgVl9EZWJ1Z09wZXJhdGlvbl9FUFAgZnVuY3Rpb24sIHZvaWQqIGFy
Z3VtZW50KQotewotICAgIHNpemVfdCBzY3JhdGNoU2l6ZSA9IHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkgKiAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjpudW1iZXJPZlJlZ2lz
dGVycyk7Ci0gICAgU2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1ZmZlciA9IHZtLnNjcmF0Y2hCdWZm
ZXJGb3JTaXplKHNjcmF0Y2hTaXplKTsKLSAgICBFbmNvZGVkSlNWYWx1ZSogYnVmZmVyID0gc3Rh
dGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihzY3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpOwot
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJz
OyArK2kpIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzdG9yZTY0KEdQUkluZm86OnRv
UmVnaXN0ZXIoaSksIGJ1ZmZlciArIGkpOwotI2Vsc2UKLSAgICAgICAgc3RvcmUzMihHUFJJbmZv
Ojp0b1JlZ2lzdGVyKGkpLCBidWZmZXIgKyBpKTsKLSNlbmRpZgotICAgIH0KLQotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0g
ICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lz
dGVycyArIGkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIHN0b3JlRG91YmxlKEZQUkluZm86
OnRvUmVnaXN0ZXIoaSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICB9Ci0KLSAgICAvLyBUZWxsIEdD
IG1hcmsgcGhhc2UgaG93IG11Y2ggb2YgdGhlIHNjcmF0Y2ggYnVmZmVyIGlzIGFjdGl2ZSBkdXJp
bmcgY2FsbC4KLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09m
QWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgc3RvcmVQdHIoVHJ1c3RlZElt
bVB0cihzY3JhdGNoU2l6ZSksIEdQUkluZm86OnJlZ1QwKTsKLQotI2lmIENQVShYODZfNjQpIHx8
IENQVShBUk0pIHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpCi0gICAgbW92ZShUcnVzdGVkSW1t
UHRyKGJ1ZmZlciksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7Ci0gICAgbW92ZShUcnVzdGVkSW1t
UHRyKGFyZ3VtZW50KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBtb3ZlKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIEdQUlJlZyBz
Y3JhdGNoID0gc2VsZWN0U2NyYXRjaEdQUihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86
OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSNlbGlmIENQVShYODYpCi0g
ICAgcG9rZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgMCk7Ci0gICAgcG9rZShUcnVzdGVk
SW1tUHRyKGFyZ3VtZW50KSwgMSk7Ci0gICAgcG9rZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciksIDIp
OwotICAgIEdQUlJlZyBzY3JhdGNoID0gR1BSSW5mbzo6cmVnVDA7Ci0jZWxzZQotI2Vycm9yICJK
SVQgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKLSNlbmRpZgotICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihmdW5jdGlvbikpLCBzY3JhdGNoKTsK
LSAgICBjYWxsKHNjcmF0Y2gpOwotCi0gICAgbW92ZShUcnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZm
ZXItPmFkZHJlc3NPZkFjdGl2ZUxlbmd0aCgpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgIHN0b3Jl
UHRyKFRydXN0ZWRJbW1QdHIoMCksIEdQUkluZm86OnJlZ1QwKTsKLQotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0gICAgICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyAr
IGkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgIGxvYWREb3VibGUoR1BSSW5mbzo6cmVnVDAs
IEZQUkluZm86OnRvUmVnaXN0ZXIoaSkpOwotICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewotI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgICAgIGxvYWQ2NChidWZmZXIgKyBpLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsK
LSNlbHNlCi0gICAgICAgIGxvYWQzMihidWZmZXIgKyBpLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkp
KTsKLSNlbmRpZgotICAgIH0KLX0KLQogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmNvcHlDYWxsZWVT
YXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXJJbXBsKEdQUlJlZyBjYWxsZWVTYXZl
c0J1ZmZlcikKIHsKICNpZiBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNp
b24gMjIxNjg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
aAkod29ya2luZyBjb3B5KQpAQCAtOTkyLDkgKzk5Miw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIEdQUkluZm86OnJlZ1Q1OwogICAgIH0KIAotICAgIC8vIEFkZCBhIGRlYnVnIGNhbGwuIFRo
aXMgY2FsbCBoYXMgbm8gZWZmZWN0IG9uIEpJVCBjb2RlIGV4ZWN1dGlvbiBzdGF0ZS4KLSAgICB2
b2lkIGRlYnVnQ2FsbChWTSYsIFZfRGVidWdPcGVyYXRpb25fRVBQIGZ1bmN0aW9uLCB2b2lkKiBh
cmd1bWVudCk7Ci0KICAgICAvLyBUaGVzZSBtZXRob2RzIEpJVCBnZW5lcmF0ZSBkeW5hbWljLCBk
ZWJ1Zy1vbmx5IGNoZWNrcyAtIGFraW4gdG8gQVNTRVJUcy4KICNpZiAhQVNTRVJUX0RJU0FCTEVE
CiAgICAgdm9pZCBqaXRBc3NlcnRJc0ludDMyKEdQUlJlZyk7CkBAIC0xNDY1LDYgKzE0NjIsNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBlbWl0RHVtYlZpcnR1YWxDYWxsKFZNJiwgQ2FsbExp
bmtJbmZvKik7CiAgICAgCisgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgZml4IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiAgICAgVmVjdG9y
PEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4mIGRlY29kZWRDb2RlTWFwRm9yKENvZGVCbG9jayop
OwogCiAgICAgdm9pZCBtYWtlU3BhY2VPblN0YWNrRm9yQ0NhbGwoKTsKQEAgLTE2NTYsNiArMTY1
NCw3IEBAIHByb3RlY3RlZDoKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwogICAgIENvZGVC
bG9jayogbV9iYXNlbGluZUNvZGVCbG9jazsKIAorICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3
aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1
LgogICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNl
dD4+IG1fZGVjb2RlZENvZGVNYXBzOwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMjE2ODcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzA3
LDYgKzIzMDcsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlYWxsb2NhdGVCCiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHJlc3VsdCk7CiB9CiAKKy8vIEZJWE1F
OiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc1MTQ1Lgogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9TUldyaXRlQmFy
cmllcihFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogY2VsbCkKIHsKICAgICBWTSogdm0gPSAmZXhl
Yy0+dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
CShyZXZpc2lvbiAyMjE2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDQ2LDYgKzQ0Niw3IEBAIGNoYXIqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZUIKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UmVhbGxvY2F0ZUJ1dHRlcmZseVRvR3Jvd1Byb3BlcnR5U3RvcmFnZShFeGVjU3RhdGUqLCBKU09i
amVjdCosIHNpemVfdCBuZXdTaXplKSBXVEZfSU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93UGF0aChFeGVjU3RhdGUqLCBKU0NlbGwqKTsKKy8v
IEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9TUldy
aXRlQmFycmllcihFeGVjU3RhdGUqLCBKU0NlbGwqKTsKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkV4Y2VwdGlvbkZ1enooRXhlY1N0YXRlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5oCShyZXZpc2lvbiAyMjE2ODcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDMsNyArNDMsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdWludDY0X3QqIGNv
dW50ZXJBZGRyZXNzKCkgeyByZXR1cm4gJm1fY291bnRlcjsgfQogICAgIHVpbnQ2NF90IGNvdW50
KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudGVyOyB9Ci0gICAgCisgICAgdm9pZCBpbmNDb3VudCgp
IHsgbV9jb3VudGVyKys7IH0KKwogICAgIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqKSBjb25zdDsK
IAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmgJKHJldmlzaW9uIDIyMTY4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29w
eXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBD
b3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmln
aHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTIsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0zNDQsMTIgKzM0NCw5IEBAIHB1YmxpYzoKICAgICB1aW50MzJfdCB0YWcoKSBjb25zdDsKICAg
ICBpbnQzMl90IHBheWxvYWQoKSBjb25zdDsKIAotI2lmICFFTkFCTEUoSklUKQotICAgIC8vIFRo
aXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBieSB0aGUgTExJbnQgQyBMb29wIGludGVycHJldGVyIHdo
byBuZWVkcwotICAgIC8vIHN5bnRoZXNpemUgSlNWYWx1ZSBmcm9tIGl0cyAicmVnaXN0ZXIicyBo
b2xkaW5nIHRhZyBhbmQgcGF5bG9hZAotICAgIC8vIHZhbHVlcy4KKyAgICAvLyBUaGlzIHNob3Vs
ZCBvbmx5IGJlIHVzZWQgYnkgdGhlIExMSW50IEMgTG9vcCBpbnRlcnByZXRlciBhbmQgT1NSRXhp
dCBjb2RlIHdobyBuZWVkcworICAgIC8vIHN5bnRoZXNpemUgSlNWYWx1ZSBmcm9tIGl0cyAicmVn
aXN0ZXIicyBob2xkaW5nIHRhZyBhbmQgcGF5bG9hZCB2YWx1ZXMuCiAgICAgZXhwbGljaXQgSlNW
YWx1ZShpbnQzMl90IHRhZywgaW50MzJfdCBwYXlsb2FkKTsKLSNlbmRpZgogCiAjZWxpZiBVU0Uo
SlNWQUxVRTY0KQogICAgIC8qCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHJldmlzaW9uIDIyMTY4NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0MCw3ICszNDAsNyBAQCBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShpbnQgaSkKICAgICB1
LmFzQml0cy5wYXlsb2FkID0gaTsKIH0KIAotI2lmICFFTkFCTEUoSklUKQorI2lmIFVTRShKU1ZB
TFVFMzJfNjQpCiBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShpbnQzMl90IHRhZywgaW50MzJfdCBw
YXlsb2FkKQogewogICAgIHUuYXNCaXRzLnRhZyA9IHRhZzsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjIxNjg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNTcxLDcgKzU3MSw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkKiB0YXJnZXRNYWNoaW5lUENGb3JUaHJvdzsKICAgICBJbnN0cnVjdGlvbiogdGFy
Z2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93OwogICAgIHVpbnQzMl90IG9zckV4aXRJbmRleDsKLSAg
ICB2b2lkKiBvc3JFeGl0SnVtcERlc3RpbmF0aW9uOwogICAgIGJvb2wgaXNFeGVjdXRpbmdJblJl
Z0V4cEpJVCB7IGZhbHNlIH07CiAKICAgICAvLyBUaGUgdGhyZWFkaW5nIHByb3RvY29sIGhlcmUg
aXMgYXMgZm9sbG93czoK
</data>
<flag name="review"
          id="340295"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320367</attachid>
            <date>2017-09-09 17:20:33 -0700</date>
            <delta_ts>2017-09-09 17:20:33 -0700</delta_ts>
            <desc>patch for re-landing.</desc>
            <filename>bug-175144b.patch</filename>
            <type>text/plain</type>
            <size>123510</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjE4MzEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE3IEBACisyMDE3LTA5LTA5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBbUmUtbGFuZGluZ10gVXNlIEpJVCBwcm9iZXMgZm9yIERGRyBPU1IgZXhp
dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE0
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzM0MzcwNTA+CisKKyAgICAgICAgTm90IHJldmll
d2VkLiAgT3JpZ2luYWwgcGF0Y2ggcmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAg
RGlzYWJsZSB0aGVzZSB0ZXN0cyBmb3IgZGVidWcgYnVpbGRzIGJlY2F1c2UgdGhleSBydW4gdG9v
IHNsb3cgd2l0aCB0aGUgbmV3IE9TUiBleGl0LgorCisgICAgICAgICogc3RyZXNzL29wX21vZC1D
b25zdFZhci5qczoKKyAgICAgICAgKiBzdHJlc3Mvb3BfbW9kLVZhckNvbnN0LmpzOgorICAgICAg
ICAqIHN0cmVzcy9vcF9tb2QtVmFyVmFyLmpzOgorCiAyMDE3LTA5LTA4ICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtERkddIE5ld0FycmF5V2l0aFNp
emUoc2l6ZSkncyBzaXplIGRvZXMgbm90IGNhcmUgbmVnYXRpdmUgemVybwpJbmRleDogSlNUZXN0
cy9zdHJlc3Mvb3BfbW9kLUNvbnN0VmFyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNz
L29wX21vZC1Db25zdFZhci5qcwkocmV2aXNpb24gMjIxODMxKQorKysgSlNUZXN0cy9zdHJlc3Mv
b3BfbW9kLUNvbnN0VmFyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotLy9AIHJ1
bkZUTE5vQ0pJVCgiLS10aW1lb3V0TXVsdGlwbGllcj0xLjUiKQorLy9AIGlmICRidWlsZFR5cGUg
PT0gInJlbGVhc2UiIHRoZW4gcnVuRlRMTm9DSklUKCItLXRpbWVvdXRNdWx0aXBsaWVyPTEuNSIp
IGVsc2Ugc2tpcCBlbmQKIAogLy8gSWYgYWxsIGdvZXMgd2VsbCwgdGhpcyB0ZXN0IG1vZHVsZSB3
aWxsIHRlcm1pbmF0ZSBzaWxlbnRseS4gSWYgbm90LCBpdCB3aWxsIHByaW50CiAvLyBlcnJvcnMu
IFNlZSBiaW5hcnktb3AtdGVzdC5qcyBmb3IgZGVidWdnaW5nIG9wdGlvbnMgaWYgbmVlZGVkLgpJ
bmRleDogSlNUZXN0cy9zdHJlc3Mvb3BfbW9kLVZhckNvbnN0LmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpT
VGVzdHMvc3RyZXNzL29wX21vZC1WYXJDb25zdC5qcwkocmV2aXNpb24gMjIxODMxKQorKysgSlNU
ZXN0cy9zdHJlc3Mvb3BfbW9kLVZhckNvbnN0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEs
NCBAQAotLy9AIHJ1bkZUTE5vQ0pJVCgiLS10aW1lb3V0TXVsdGlwbGllcj0xLjUiKQorLy9AIGlm
ICRidWlsZFR5cGUgPT0gInJlbGVhc2UiIHRoZW4gcnVuRlRMTm9DSklUKCItLXRpbWVvdXRNdWx0
aXBsaWVyPTEuNSIpIGVsc2Ugc2tpcCBlbmQKIAogLy8gSWYgYWxsIGdvZXMgd2VsbCwgdGhpcyB0
ZXN0IG1vZHVsZSB3aWxsIHRlcm1pbmF0ZSBzaWxlbnRseS4gSWYgbm90LCBpdCB3aWxsIHByaW50
CiAvLyBlcnJvcnMuIFNlZSBiaW5hcnktb3AtdGVzdC5qcyBmb3IgZGVidWdnaW5nIG9wdGlvbnMg
aWYgbmVlZGVkLgpJbmRleDogSlNUZXN0cy9zdHJlc3Mvb3BfbW9kLVZhclZhci5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9vcF9tb2QtVmFyVmFyLmpzCShyZXZpc2lvbiAyMjE4MzEp
CisrKyBKU1Rlc3RzL3N0cmVzcy9vcF9tb2QtVmFyVmFyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDQgKzEsNCBAQAotLy9AIHJ1bkZUTE5vQ0pJVCgiLS10aW1lb3V0TXVsdGlwbGllcj0xLjUiKQor
Ly9AIGlmICRidWlsZFR5cGUgPT0gInJlbGVhc2UiIHRoZW4gcnVuRlRMTm9DSklUKCItLXRpbWVv
dXRNdWx0aXBsaWVyPTEuNSIpIGVsc2Ugc2tpcCBlbmQKIAogLy8gSWYgYWxsIGdvZXMgd2VsbCwg
dGhpcyB0ZXN0IG1vZHVsZSB3aWxsIHRlcm1pbmF0ZSBzaWxlbnRseS4gSWYgbm90LCBpdCB3aWxs
IHByaW50CiAvLyBlcnJvcnMuIFNlZSBiaW5hcnktb3AtdGVzdC5qcyBmb3IgZGVidWdnaW5nIG9w
dGlvbnMgaWYgbmVlZGVkLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
MjE4MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTEzIEBACisyMDE3LTA5LTA5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxl
LmNvbT4KKworICAgICAgICBbUmUtbGFuZGluZ10gVXNlIEpJVCBwcm9iZXMgZm9yIERGRyBPU1Ig
ZXhpdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTE0NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzM0MzcwNTA+CisKKyAgICAgICAgTm90IHJl
dmlld2VkLiAgT3JpZ2luYWwgcGF0Y2ggcmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAg
ICAgUmVsYW5kaW5nIHIyMjE3NzQuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5j
cHA6CisgICAgICAgIChKU0M6OnN0ZEZ1bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwOgorICAgICAgICAoSlNDOjpQcmludGVyOjpw
cmludENhbGxiYWNrKToKKyAgICAgICAgKiBhc3NlbWJsZXIvUHJvYmVDb250ZXh0Lmg6CisgICAg
ICAgIChKU0M6OlByb2JlOjpDUFVTdGF0ZTo6Z3ByIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJv
YmU6OkNQVVN0YXRlOjpzcHIgY29uc3QpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q29udGV4dDo6
Q29udGV4dCk6CisgICAgICAgIChKU0M6OlByb2JlOjpDb250ZXh0OjphcmcpOgorICAgICAgICAo
SlNDOjpQcm9iZTo6Q29udGV4dDo6Z3ByKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6
OnNwcik6CisgICAgICAgIChKU0M6OlByb2JlOjpDb250ZXh0OjpmcHIpOgorICAgICAgICAoSlND
OjpQcm9iZTo6Q29udGV4dDo6Z3ByTmFtZSk6CisgICAgICAgIChKU0M6OlByb2JlOjpDb250ZXh0
OjpzcHJOYW1lKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6OmZwck5hbWUpOgorICAg
ICAgICAoSlNDOjpQcm9iZTo6Q29udGV4dDo6Z3ByIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJv
YmU6OkNvbnRleHQ6OnNwciBjb25zdCk6CisgICAgICAgIChKU0M6OlByb2JlOjpDb250ZXh0Ojpm
cHIgY29uc3QpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q29udGV4dDo6cGMpOgorICAgICAgICAo
SlNDOjpQcm9iZTo6Q29udGV4dDo6ZnApOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q29udGV4dDo6
c3ApOgorICAgICAgICAoSlNDOjpQcm9iZTo6IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBh
c3NlbWJsZXIvUHJvYmVGcmFtZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1Byb2JlRnJhbWUuaC4KKyAgICAgICAgKiBhc3NlbWJsZXIvUHJvYmVTdGFjay5j
cHA6CisgICAgICAgIChKU0M6OlByb2JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKiBhc3NlbWJs
ZXIvUHJvYmVTdGFjay5oOgorICAgICAgICAoSlNDOjpQcm9iZTo6UGFnZTo6Z2V0KToKKyAgICAg
ICAgKEpTQzo6UHJvYmU6OlBhZ2U6OnNldCk6CisgICAgICAgIChKU0M6OlByb2JlOjpQYWdlOjpw
aHlzaWNhbEFkZHJlc3NGb3IpOgorICAgICAgICAoSlNDOjpQcm9iZTo6U3RhY2s6Omxvd1dhdGVy
bWFyayk6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6Z2V0KToKKyAgICAgICAgKEpTQzo6
UHJvYmU6OlN0YWNrOjpzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHA6
CisgICAgICAgICogYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmg6CisgICAgICAgICogYnl0ZWNvZGUv
QXJyYXlQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6b2JzZXJ2ZUFycmF5
TW9kZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjp1cGRhdGVPU1JFeGl0Q291bnRlckFuZENoZWNrSWZOZWVkVG9SZW9wdGltaXpl
KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjphZGRyZXNzT2ZPU1JFeGl0Q291bnRlcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNv
ZGUvRXhlY3V0aW9uQ291bnRlci5oOgorICAgICAgICAoSlNDOjpFeGVjdXRpb25Db3VudGVyOjpo
YXNDcm9zc2VkVGhyZXNob2xkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RXhlY3V0aW9uQ291bnRl
cjo6c2V0TmV3VGhyZXNob2xkRm9yT1NSRXhpdCk6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6Ok1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGU6OnJlcG9ydFZhbHVlKToKKyAgICAgICAgKiBieXRlY29kZS9NZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlLmg6CisgICAgICAgICogZGZnL0RGR0RyaXZlci5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Y29tcGlsZUltcGwpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb2Rl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb2RlOjpmaW5kUEMpOiBEZWxldGVkLgorICAg
ICAgICAqIGRmZy9ERkdKSVRDb2RlLmg6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGlua09TUkV4aXRzKToKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR09TUkV4
aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmpzVmFsdWVGb3IpOgorICAgICAgICAoSlNDOjpE
Rkc6OnJlc3RvcmVDYWxsZWVTYXZlc0Zvcik6CisgICAgICAgIChKU0M6OkRGRzo6c2F2ZUNhbGxl
ZVNhdmVzRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpyZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1F
bnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIpOgorICAgICAgICAoSlNDOjpERkc6OmNvcHlDYWxs
ZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIpOgorICAgICAgICAoSlNDOjpE
Rkc6OnNhdmVPckNvcHlDYWxsZWVTYXZlc0Zvcik6CisgICAgICAgIChKU0M6OkRGRzo6Y3JlYXRl
RGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdCk6CisgICAgICAgIChKU0M6OkRGRzo6Y3JlYXRlQ2xv
bmVkQXJndW1lbnRzRHVyaW5nRXhpdCk6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6T1NS
RXhpdCk6CisgICAgICAgIChKU0M6OkRGRzo6ZW1pdFJlc3RvcmVBcmd1bWVudHMpOgorICAgICAg
ICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZH
OjpyZWlmeUlubGluZWRDYWxsRnJhbWVzKToKKyAgICAgICAgKEpTQzo6REZHOjphZGp1c3RBbmRK
dW1wVG9UYXJnZXQpOgorICAgICAgICAoSlNDOjpERkc6OnByaW50T1NSRXhpdCk6CisgICAgICAg
IChKU0M6OkRGRzo6T1NSRXhpdDo6c2V0UGF0Y2hhYmxlQ29kZU9mZnNldCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Z2V0UGF0Y2hhYmxlQ29kZU9mZnNldEFzSnVtcCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Y29kZUxvY2F0aW9u
Rm9yUmVwYXRjaCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6
Y29ycmVjdEp1bXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmVtaXRS
ZXN0b3JlQXJndW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Ojpj
b21waWxlT1NSRXhpdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Y29t
cGlsZUV4aXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmRlYnVnT3Bl
cmF0aW9uUHJpbnRTcGVjdWxhdGlvbkZhaWx1cmUpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9E
RkdPU1JFeGl0Lmg6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdFN0YXRlOjpPU1JFeGl0U3Rh
dGUpOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvbnNpZGVyQWRkaW5nQXNGcmVxdWVu
dEV4aXRTaXRlKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmg6CisgICAgICAgICogZGZn
L0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAg
ICAgICogZGZnL0RGR1RodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6b3NyRXhpdFRodW5r
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpvc3JFeGl0R2VuZXJhdGlvblRodW5rR2Vu
ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHVGh1bmtzLmg6CisgICAgICAgICog
aml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6
ZGVidWdDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6Cisg
ICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRp
b25zLmg6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0Lmg6CisgICAgICAgIChK
U0M6OlByb2ZpbGVyOjpPU1JFeGl0OjppbmNDb3VudCk6CisgICAgICAgICogcnVudGltZS9KU0NK
U1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAg
ICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxNy0wOS0wOSAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFk
QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjIxNzc0LgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyMTgzMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQ0LDYgKzI0NDQsNyBAQAogCQlGRTEwQUFFQzFGNDRE
NTQ1MDA5REVEQzUgLyogUHJvYmVTdGFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEwQUFFOTFGNDRENTEwMDA5REVEQzUgLyogUHJvYmVTdGFj
ay5jcHAgKi87IH07CiAJCUZFMTBBQUVFMUY0NEQ5NTQwMDlERURDNSAvKiBQcm9iZUNvbnRleHQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTBBQUVE
MUY0NEQ5NDYwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTEwQUFGNDFGNDY4Mzk2MDA5REVEQzUgLyog
UHJvYmVDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMTBBQUYzMUY0NjgyNkQwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuY3BwICovOyB9
OworCQlGRTEwQUFGRjFGNEUzOEU1MDA5REVEQzUgLyogUHJvYmVGcmFtZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxMEFBRkUxRjRFMzhEQTAwOURF
REM1IC8qIFByb2JlRnJhbWUuaCAqLzsgfTsKIAkJRkUxMjIwMjcxQkU3RjU4QzAwMzlFNkYyIC8q
IEpJVEFkZEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkUxMjIwMjYxQkU3RjU2NDAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5oICov
OyB9OwogCQlGRTEyMjAyODFCRTdGNTkxMDAzOUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTIyMDI1MUJF
N0Y1NjQwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuY3BwICovOyB9OwogCQlGRTE4N0EwMTFC
RkJFNTVFMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTg3OUZGMUJGQkM3M0MwMDM4QkJDQSAvKiBK
SVRNdWxHZW5lcmF0b3IuY3BwICovOyB9OwpAQCAtNTEzOCw2ICs1MTM5LDcgQEAKIAkJRkUxMEFB
RUExRjQ0RDUxMjAwOURFREM1IC8qIFByb2JlU3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUHJvYmVTdGFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
RTEwQUFFRDFGNDREOTQ2MDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFByb2JlQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRTEwQUFGMzFGNDY4MjZEMDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb2JlQ29udGV4dC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMTBBQUZFMUY0RTM4REEwMDlERURDNSAvKiBQcm9i
ZUZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2JlRnJhbWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxMjIwMjUxQkU3RjU2NDAwMzlFNkYyIC8q
IEpJVEFkZEdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKSVRBZGRHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTEy
MjAyNjFCRTdGNTY0MDAzOUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpJVEFkZEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRTE4NzlGRjFCRkJDNzNDMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVE11bEdlbmVyYXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NzIyLDYgKzc3MjQsNyBAQAogCQkJ
CUZFNjNERDUzMUVBOUI2MEUwMDEwM0E2OSAvKiBQcmludGVyLmggKi8sCiAJCQkJRkUxMEFBRjMx
RjQ2ODI2RDAwOURFREM1IC8qIFByb2JlQ29udGV4dC5jcHAgKi8sCiAJCQkJRkUxMEFBRUQxRjQ0
RDk0NjAwOURFREM1IC8qIFByb2JlQ29udGV4dC5oICovLAorCQkJCUZFMTBBQUZFMUY0RTM4REEw
MDlERURDNSAvKiBQcm9iZUZyYW1lLmggKi8sCiAJCQkJRkUxMEFBRTkxRjQ0RDUxMDAwOURFREM1
IC8qIFByb2JlU3RhY2suY3BwICovLAogCQkJCUZFMTBBQUVBMUY0NEQ1MTIwMDlERURDNSAvKiBQ
cm9iZVN0YWNrLmggKi8sCiAJCQkJRkU1MzNDQTAxRjIxN0MzMTAwMTZBMUZFIC8qIHRlc3RtYXNt
LmNwcCAqLywKQEAgLTk2ODksNiArOTY5Miw3IEBACiAJCQkJQUQyRkNDMUQxREI1OUNCMjAwQjNF
NzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQUQ0OTM3QzgxREREMEFBRTAwNzdDODA3IC8qIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0MyRDFEQjgzOEZEMDBCM0U3MzYgLyogV2ViQXNzZW1i
bHlQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMTBBQUZGMUY0RTM4RTUwMDlERURD
NSAvKiBQcm9iZUZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0JGOTFEQjU4REFEMDBC
M0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQUQyRkNDMUUxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVy
cm9yQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0JGQjFEQjU4REFE
MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDIyMTgzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw3IEBAIGNvbnN0IGRvdWJsZSBNYWNyb0Fzc2VtYmxlcjo6dHdvVG9UaGUzMiAKICNpZiBFTkFC
TEUoTUFTTV9QUk9CRSkKIHN0YXRpYyB2b2lkIHN0ZEZ1bmN0aW9uQ2FsbGJhY2soUHJvYmU6OkNv
bnRleHQmIGNvbnRleHQpCiB7Ci0gICAgYXV0byBmdW5jID0gc3RhdGljX2Nhc3Q8Y29uc3Qgc3Rk
OjpmdW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+Kj4oY29udGV4dC5hcmcpOworICAgIGF1
dG8gZnVuYyA9IGNvbnRleHQuYXJnPGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChQcm9iZTo6Q29u
dGV4dCYpPio+KCk7CiAgICAgKCpmdW5jKShjb250ZXh0KTsKIH0KICAgICAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
UHJpbnRlci5jcHAJKHJldmlzaW9uIDIyMTgzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc1
LDcgKzE3NSw3IEBAIHZvaWQgcHJpbnRNZW1vcnkoUHJpbnRTdHJlYW0mIG91dCwgQ29udGUKIHZv
aWQgcHJpbnRDYWxsYmFjayhQcm9iZTo6Q29udGV4dCYgcHJvYmVDb250ZXh0KQogewogICAgIGF1
dG8mIG91dCA9IFdURjo6ZGF0YUZpbGUoKTsKLSAgICBQcmludFJlY29yZExpc3QmIGxpc3QgPSAq
cmVpbnRlcnByZXRfY2FzdDxQcmludFJlY29yZExpc3QqPihwcm9iZUNvbnRleHQuYXJnKTsKKyAg
ICBQcmludFJlY29yZExpc3QmIGxpc3QgPSAqcHJvYmVDb250ZXh0LmFyZzxQcmludFJlY29yZExp
c3QqPigpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7IGkrKykgewog
ICAgICAgICBhdXRvJiByZWNvcmQgPSBsaXN0W2ldOwogICAgICAgICBDb250ZXh0IGNvbnRleHQo
cHJvYmVDb250ZXh0LCByZWNvcmQuZGF0YSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1Byb2JlQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvUHJvYmVDb250ZXh0LmgJKHJldmlzaW9uIDIyMTgzMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVDb250ZXh0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDE0ICs0NSw4IEBAIHN0cnVjdCBDUFVTdGF0ZSB7CiAgICAgaW5saW5lIHVpbnRwdHJf
dCYgc3ByKFNQUmVnaXN0ZXJJRCk7CiAgICAgaW5saW5lIGRvdWJsZSYgZnByKEZQUmVnaXN0ZXJJ
RCk7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVsbHB0cj4KLSAgICBUIGdwcihS
ZWdpc3RlcklEKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRyPgot
ICAgIFQgZ3ByKFJlZ2lzdGVySUQpIGNvbnN0OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlwZSog
PSBudWxscHRyPgotICAgIFQgc3ByKFNQUmVnaXN0ZXJJRCkgY29uc3Q7Ci0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2
YWx1ZT46OnR5cGUqID0gbnVsbHB0cj4KLSAgICBUIHNwcihTUFJlZ2lzdGVySUQpIGNvbnN0Owor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgZ3ByKFJlZ2lzdGVySUQpIGNvbnN0OworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IFQgc3ByKFNQUmVnaXN0ZXJJRCkgY29uc3Q7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gVCBmcHIoRlBSZWdpc3RlcklEKSBjb25zdDsKIAogICAgIHZvaWQqJiBw
YygpOwpAQCAtODUsMzIgKzc5LDI0IEBAIGlubGluZSBkb3VibGUmIENQVVN0YXRlOjpmcHIoRlBS
ZWdpc3RlckkKICAgICByZXR1cm4gZnByc1tpZF07CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlw
ZSo+Ci1UIENQVVN0YXRlOjpncHIoUmVnaXN0ZXJJRCBpZCkgY29uc3QKLXsKLSAgICBDUFVTdGF0
ZSogY3B1ID0gY29uc3RfY2FzdDxDUFVTdGF0ZSo+KHRoaXMpOwotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxUPihjcHUtPmdwcihpZCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZSo+Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgogVCBDUFVTdGF0ZTo6Z3ByKFJlZ2lzdGVySUQgaWQpIGNvbnN0CiB7
CiAgICAgQ1BVU3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPihjcHUtPmdwcihpZCkpOwotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2
YWx1ZT46OnR5cGUqPgotVCBDUFVTdGF0ZTo6c3ByKFNQUmVnaXN0ZXJJRCBpZCkgY29uc3QKLXsK
LSAgICBDUFVTdGF0ZSogY3B1ID0gY29uc3RfY2FzdDxDUFVTdGF0ZSo+KHRoaXMpOwotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxUPihjcHUtPnNwcihpZCkpOworICAgIGF1dG8mIGZyb20gPSBjcHUt
PmdwcihpZCk7CisgICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD46OnR5cGUgdG8geyB9
OworICAgIHN0ZDo6bWVtY3B5KCZ0bywgJmZyb20sIHNpemVvZih0bykpOyAvLyBVc2Ugc3RkOjpt
ZW1jcHkgdG8gYXZvaWQgc3RyaWN0IGFsaWFzaW5nIGlzc3Vlcy4KKyAgICByZXR1cm4gdG87CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
cG9pbnRlcjxUPjo6dmFsdWU+Ojp0eXBlKj4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CiBUIENQVVN0
YXRlOjpzcHIoU1BSZWdpc3RlcklEIGlkKSBjb25zdAogewogICAgIENQVVN0YXRlKiBjcHUgPSBj
b25zdF9jYXN0PENQVVN0YXRlKj4odGhpcyk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
VD4oY3B1LT5zcHIoaWQpKTsKKyAgICBhdXRvJiBmcm9tID0gY3B1LT5zcHIoaWQpOworICAgIHR5
cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlIHRvIHsgfTsKKyAgICBzdGQ6Om1lbWNw
eSgmdG8sICZmcm9tLCBzaXplb2YodG8pKTsgLy8gVXNlIHN0ZDo6bWVtY3B5IHRvIGF2b2lkIHN0
cmljdCBhbGlhc2luZyBpc3N1ZXMuCisgICAgcmV0dXJuIHRvOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgpAQCAtMjA1LDI1ICsxOTEsMzEgQEAgcHVibGljOgogICAgIHVzaW5nIEZQUmVnaXN0
ZXJJRCA9IE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQ7CiAKICAgICBDb250ZXh0KFN0YXRl
KiBzdGF0ZSkKLSAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQotICAgICAgICAsIGFyZyhzdGF0ZS0+
YXJnKQotICAgICAgICAsIGNwdShzdGF0ZS0+Y3B1KQorICAgICAgICA6IGNwdShzdGF0ZS0+Y3B1
KQorICAgICAgICAsIG1fc3RhdGUoc3RhdGUpCiAgICAgeyB9CiAKLSAgICB1aW50cHRyX3QmIGdw
cihSZWdpc3RlcklEIGlkKSB7IHJldHVybiBtX3N0YXRlLT5jcHUuZ3ByKGlkKTsgfQotICAgIHVp
bnRwdHJfdCYgc3ByKFNQUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LnNwcihp
ZCk7IH0KLSAgICBkb3VibGUmIGZwcihGUFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIG1fc3RhdGUt
PmNwdS5mcHIoaWQpOyB9Ci0gICAgY29uc3QgY2hhciogZ3ByTmFtZShSZWdpc3RlcklEIGlkKSB7
IHJldHVybiBtX3N0YXRlLT5jcHUuZ3ByTmFtZShpZCk7IH0KLSAgICBjb25zdCBjaGFyKiBzcHJO
YW1lKFNQUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LnNwck5hbWUoaWQpOyB9
Ci0gICAgY29uc3QgY2hhciogZnByTmFtZShGUFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIG1fc3Rh
dGUtPmNwdS5mcHJOYW1lKGlkKTsgfQotCi0gICAgdm9pZComIHBjKCkgeyByZXR1cm4gbV9zdGF0
ZS0+Y3B1LnBjKCk7IH0KLSAgICB2b2lkKiYgZnAoKSB7IHJldHVybiBtX3N0YXRlLT5jcHUuZnAo
KTsgfQotICAgIHZvaWQqJiBzcCgpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5zcCgpOyB9Ci0KLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHBjKCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LnBjPFQ+
KCk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGZwKCkgeyByZXR1cm4gbV9zdGF0ZS0+
Y3B1LmZwPFQ+KCk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHNwKCkgeyByZXR1cm4g
bV9zdGF0ZS0+Y3B1LnNwPFQ+KCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFQg
YXJnKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPihtX3N0YXRlLT5hcmcpOyB9CisKKyAg
ICB1aW50cHRyX3QmIGdwcihSZWdpc3RlcklEIGlkKSB7IHJldHVybiBjcHUuZ3ByKGlkKTsgfQor
ICAgIHVpbnRwdHJfdCYgc3ByKFNQUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gY3B1LnNwcihpZCk7
IH0KKyAgICBkb3VibGUmIGZwcihGUFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIGNwdS5mcHIoaWQp
OyB9CisgICAgY29uc3QgY2hhciogZ3ByTmFtZShSZWdpc3RlcklEIGlkKSB7IHJldHVybiBjcHUu
Z3ByTmFtZShpZCk7IH0KKyAgICBjb25zdCBjaGFyKiBzcHJOYW1lKFNQUmVnaXN0ZXJJRCBpZCkg
eyByZXR1cm4gY3B1LnNwck5hbWUoaWQpOyB9CisgICAgY29uc3QgY2hhciogZnByTmFtZShGUFJl
Z2lzdGVySUQgaWQpIHsgcmV0dXJuIGNwdS5mcHJOYW1lKGlkKTsgfQorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gVCBncHIoUmVnaXN0ZXJJRCBpZCkgY29uc3QgeyByZXR1cm4gY3B1LmdwcjxU
PihpZCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHNwcihTUFJlZ2lzdGVySUQgaWQp
IGNvbnN0IHsgcmV0dXJuIGNwdS5zcHI8VD4oaWQpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gVCBmcHIoRlBSZWdpc3RlcklEIGlkKSBjb25zdCB7IHJldHVybiBjcHUuZnByPFQ+KGlkKTsg
fQorCisgICAgdm9pZComIHBjKCkgeyByZXR1cm4gY3B1LnBjKCk7IH0KKyAgICB2b2lkKiYgZnAo
KSB7IHJldHVybiBjcHUuZnAoKTsgfQorICAgIHZvaWQqJiBzcCgpIHsgcmV0dXJuIGNwdS5zcCgp
OyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHBjKCkgeyByZXR1cm4gY3B1LnBjPFQ+
KCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGZwKCkgeyByZXR1cm4gY3B1LmZwPFQ+
KCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHNwKCkgeyByZXR1cm4gY3B1LnNwPFQ+
KCk7IH0KIAogICAgIFN0YWNrJiBzdGFjaygpCiAgICAgewpAQCAtMjM0LDEzICsyMjYsMTAgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzV3JpdGVzVG9GbHVzaCgpIHsgcmV0dXJuIG1fc3RhY2suaGFz
V3JpdGVzVG9GbHVzaCgpOyB9CiAgICAgU3RhY2sqIHJlbGVhc2VTdGFjaygpIHsgcmV0dXJuIG5l
dyBTdGFjayhXVEZNb3ZlKG1fc3RhY2spKTsgfQogCi1wcml2YXRlOgotICAgIFN0YXRlKiBtX3N0
YXRlOwotcHVibGljOgotICAgIHZvaWQqIGFyZzsKICAgICBDUFVTdGF0ZSYgY3B1OwogCiBwcml2
YXRlOgorICAgIFN0YXRlKiBtX3N0YXRlOwogICAgIFN0YWNrIG1fc3RhY2s7CiAKICAgICBmcmll
bmQgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogcHJvYmVTdGF0ZUZvckNvbnRleHQoQ29udGV4dCYp
OyAvLyBOb3QgZm9yIGdlbmVyYWwgdXNlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGZvciB3cml0aW5n
IHRlc3RzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUZyYW1l
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUZy
YW1lLmgJKHJldmlzaW9uIDIyMTgyMikJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9Qcm9iZUZyYW1lLmg6MjIxODIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9Qcm9iZUZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKE1BU01fUFJPQkUpCisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRl
ICJQcm9iZVN0YWNrLmgiCisKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIFByb2JlIHsKKwor
Y2xhc3MgRnJhbWUgeworcHVibGljOgorICAgIEZyYW1lKHZvaWQqIGZyYW1lQmFzZSwgU3RhY2sm
IHN0YWNrKQorICAgICAgICA6IG1fZnJhbWVCYXNlIHsgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90
Kj4oZnJhbWVCYXNlKSB9CisgICAgICAgICwgbV9zdGFjayB7IHN0YWNrIH0KKyAgICB7IH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQgPSBKU1ZhbHVlPgorICAgIFQgYXJndW1lbnQoaW50IGFy
Z3VtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldDxUPihDYWxsRnJhbWU6OmFyZ3VtZW50
T2Zmc2V0KGFyZ3VtZW50KSAqIHNpemVvZihSZWdpc3RlcikpOworICAgIH0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUID0gSlNWYWx1ZT4KKyAgICBUIG9wZXJhbmQoaW50IG9wZXJhbmQpCisgICAg
eworICAgICAgICByZXR1cm4gZ2V0PFQ+KHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4ob3Bl
cmFuZCkub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKTsKKyAgICB9CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCA9IEpTVmFsdWU+CisgICAgVCBvcGVyYW5kKGludCBvcGVyYW5kLCBwdHJkaWZm
X3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldDxUPihzdGF0aWNfY2FzdDxWaXJ0
dWFsUmVnaXN0ZXI+KG9wZXJhbmQpLm9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSArIG9mZnNl
dCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNldEFyZ3Vt
ZW50KGludCBhcmd1bWVudCwgVCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBzZXQ8VD4o
Q2FsbEZyYW1lOjphcmd1bWVudE9mZnNldChhcmd1bWVudCkgKiBzaXplb2YoUmVnaXN0ZXIpLCB2
YWx1ZSk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBzZXRPcGVy
YW5kKGludCBvcGVyYW5kLCBUIHZhbHVlKQorICAgIHsKKyAgICAgICAgc2V0PFQ+KHN0YXRpY19j
YXN0PFZpcnR1YWxSZWdpc3Rlcj4ob3BlcmFuZCkub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIp
LCB2YWx1ZSk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBzZXRP
cGVyYW5kKGludCBvcGVyYW5kLCBwdHJkaWZmX3Qgb2Zmc2V0LCBUIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgc2V0PFQ+KHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4ob3BlcmFuZCkub2Zmc2V0
KCkgKiBzaXplb2YoUmVnaXN0ZXIpICsgb2Zmc2V0LCB2YWx1ZSk7CisgICAgfQorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCA9IEpTVmFsdWU+CisgICAgVCBnZXQocHRyZGlmZl90IG9mZnNldCkK
KyAgICB7CisgICAgICAgIHJldHVybiBtX3N0YWNrLmdldDxUPihtX2ZyYW1lQmFzZSArIG9mZnNl
dCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBzZXQocHRyZGlm
Zl90IG9mZnNldCwgVCB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fc3RhY2suc2V0PFQ+KG1fZnJh
bWVCYXNlICsgb2Zmc2V0LCB2YWx1ZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHVpbnQ4X3Qq
IG1fZnJhbWVCYXNlOworICAgIFN0YWNrJiBtX3N0YWNrOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
UHJvYmUKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5j
cHAJKHJldmlzaW9uIDIyMTgzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
UHJvYmVTdGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNl
IFByb2JlIHsKIAogUGFnZTo6UGFnZSh2b2lkKiBiYXNlQWRkcmVzcykKICAgICA6IG1fYmFzZUxv
Z2ljYWxBZGRyZXNzKGJhc2VBZGRyZXNzKQorICAgICwgbV9waHlzaWNhbEFkZHJlc3NPZmZzZXQo
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJm1fYnVmZmVyKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KGJhc2VBZGRyZXNzKSkKIHsKICAgICBtZW1jcHkoJm1fYnVmZmVyLCBiYXNlQWRk
cmVzcywgc19wYWdlU2l6ZSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1Byb2JlU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1Byb2JlU3RhY2suaAkocmV2aXNpb24gMjIxODMxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDE0ICs1
NiwyOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIGdldCh2b2lk
KiBsb2dpY2FsQWRkcmVzcykKICAgICB7Ci0gICAgICAgIHJldHVybiAqcGh5c2ljYWxBZGRyZXNz
Rm9yPFQqPihsb2dpY2FsQWRkcmVzcyk7CisgICAgICAgIHZvaWQqIGZyb20gPSBwaHlzaWNhbEFk
ZHJlc3NGb3IobG9naWNhbEFkZHJlc3MpOworICAgICAgICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9j
b25zdDxUPjo6dHlwZSB0byB7IH07CisgICAgICAgIHN0ZDo6bWVtY3B5KCZ0bywgZnJvbSwgc2l6
ZW9mKHRvKSk7IC8vIFVzZSBzdGQ6Om1lbWNweSB0byBhdm9pZCBzdHJpY3QgYWxpYXNpbmcgaXNz
dWVzLgorICAgICAgICByZXR1cm4gdG87CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CisgICAgVCBnZXQodm9pZCogbG9naWNhbEJhc2VBZGRyZXNzLCBwdHJkaWZmX3Qgb2Zmc2V0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGdldDxUPihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihs
b2dpY2FsQmFzZUFkZHJlc3MpICsgb2Zmc2V0KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogICAgIHZvaWQgc2V0KHZvaWQqIGxvZ2ljYWxBZGRyZXNzLCBUIHZhbHVlKQogICAg
IHsKICAgICAgICAgbV9kaXJ0eUJpdHMgfD0gZGlydHlCaXRGb3IobG9naWNhbEFkZHJlc3MpOwot
ICAgICAgICAqcGh5c2ljYWxBZGRyZXNzRm9yPFQqPihsb2dpY2FsQWRkcmVzcykgPSB2YWx1ZTsK
KyAgICAgICAgdm9pZCogdG8gPSBwaHlzaWNhbEFkZHJlc3NGb3IobG9naWNhbEFkZHJlc3MpOwor
ICAgICAgICBzdGQ6Om1lbWNweSh0bywgJnZhbHVlLCBzaXplb2YoVCkpOyAvLyBVc2Ugc3RkOjpt
ZW1jcHkgdG8gYXZvaWQgc3RyaWN0IGFsaWFzaW5nIGlzc3Vlcy4KKyAgICB9CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNldCh2b2lkKiBsb2dpY2FsQmFzZUFkZHJlc3MsIHB0
cmRpZmZfdCBvZmZzZXQsIFQgdmFsdWUpCisgICAgeworICAgICAgICBzZXQ8VD4ocmVpbnRlcnBy
ZXRfY2FzdDx1aW50OF90Kj4obG9naWNhbEJhc2VBZGRyZXNzKSArIG9mZnNldCwgdmFsdWUpOwog
ICAgIH0KIAogICAgIGJvb2wgaGFzV3JpdGVzVG9GbHVzaCgpIGNvbnN0IHsgcmV0dXJuICEhbV9k
aXJ0eUJpdHM7IH0KQEAgLTgwLDE4ICs5NCwxNiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSA8PCAob2Zmc2V0ID4+IHNfY2h1bmtTaXplU2hpZnQp
OwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgVCBw
aHlzaWNhbEFkZHJlc3NGb3Iodm9pZCogbG9naWNhbEFkZHJlc3MpCisgICAgdm9pZCogcGh5c2lj
YWxBZGRyZXNzRm9yKHZvaWQqIGxvZ2ljYWxBZGRyZXNzKQogICAgIHsKLSAgICAgICAgdWludHB0
cl90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihsb2dpY2FsQWRkcmVzcykg
JiBzX3BhZ2VNYXNrOwotICAgICAgICB2b2lkKiBwaHlzaWNhbEFkZHJlc3MgPSByZWludGVycHJl
dF9jYXN0PHVpbnQ4X3QqPigmbV9idWZmZXIpICsgb2Zmc2V0OwotICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxUPihwaHlzaWNhbEFkZHJlc3MpOworICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4obG9naWNhbEFkZHJlc3MpICsgbV9waHlzaWNhbEFkZHJlc3NP
ZmZzZXQ7CiAgICAgfQogCiAgICAgdm9pZCBmbHVzaFdyaXRlcygpOwogCiAgICAgdm9pZCogbV9i
YXNlTG9naWNhbEFkZHJlc3MgeyBudWxscHRyIH07CiAgICAgdWludHB0cl90IG1fZGlydHlCaXRz
IHsgMCB9OworICAgIHB0cmRpZmZfdCBtX3BoeXNpY2FsQWRkcmVzc09mZnNldDsKIAogICAgIHN0
YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNfcGFnZVNpemUgPSAxMDI0OwogICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludHB0cl90IHNfcGFnZU1hc2sgPSBzX3BhZ2VTaXplIC0gMTsKQEAgLTEyMCw0MCAr
MTMyLDM5IEBAIHB1YmxpYzoKICAgICB7IH0KICAgICBTdGFjayhTdGFjayYmIG90aGVyKTsKIAot
ICAgIHZvaWQqIGxvd1dhdGVybWFyaygpIHsgcmV0dXJuIG1fbG93V2F0ZXJtYXJrOyB9CisgICAg
dm9pZCogbG93V2F0ZXJtYXJrKCkKKyAgICB7CisgICAgICAgIC8vIFdlIHVzZSB0aGUgY2h1bmtB
ZGRyZXNzIGZvciB0aGUgbG93IHdhdGVybWFyayBiZWNhdXNlIHdlJ2xsIGJlIGRvaW5nIHdyaXRl
IGJhY2tzCisgICAgICAgIC8vIHRvIHRoZSBzdGFjayBpbiBpbmNyZW1lbnRzIG9mIGNodW5rcy4g
SGVuY2UsIHdlJ2xsIHRyZWF0IHRoZSBsb3dlc3QgYWRkcmVzcyBvZgorICAgICAgICAvLyB0aGUg
Y2h1bmsgYXMgdGhlIGxvdyB3YXRlcm1hcmsgb2YgYW55IGdpdmVuIHNldCBhZGRyZXNzLgorICAg
ICAgICByZXR1cm4gUGFnZTo6Y2h1bmtBZGRyZXNzRm9yKG1fbG93V2F0ZXJtYXJrKTsKKyAgICB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PCFzdGQ6OmlzX3NhbWU8ZG91YmxlLCB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjxUPjo6dHlwZT46
OnZhbHVlLCBUPjo6dHlwZSBnZXQodm9pZCogYWRkcmVzcykKKyAgICBUIGdldCh2b2lkKiBhZGRy
ZXNzKQogICAgIHsKICAgICAgICAgUGFnZSogcGFnZSA9IHBhZ2VGb3IoYWRkcmVzcyk7CiAgICAg
ICAgIHJldHVybiBwYWdlLT5nZXQ8VD4oYWRkcmVzcyk7CiAgICAgfQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CisgICAgVCBnZXQodm9pZCogbG9naWNhbEJhc2VBZGRyZXNzLCBwdHJkaWZmX3Qg
b2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldDxUPihyZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPihsb2dpY2FsQmFzZUFkZHJlc3MpICsgb2Zmc2V0KTsKKyAgICB9CiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6
OmlzX3NhbWU8ZG91YmxlLCB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjxUPjo6dHlwZT46OnZhbHVl
Pjo6dHlwZT4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgc2V0KHZvaWQqIGFk
ZHJlc3MsIFQgdmFsdWUpCiAgICAgewogICAgICAgICBQYWdlKiBwYWdlID0gcGFnZUZvcihhZGRy
ZXNzKTsKICAgICAgICAgcGFnZS0+c2V0PFQ+KGFkZHJlc3MsIHZhbHVlKTsKIAotICAgICAgICAv
LyBXZSB1c2UgdGhlIGNodW5rQWRkcmVzcyBmb3IgdGhlIGxvdyB3YXRlcm1hcmsgYmVjYXVzZSB3
ZSdsbCBiZSBkb2luZyB3cml0ZSBiYWNrcwotICAgICAgICAvLyB0byB0aGUgc3RhY2sgaW4gaW5j
cmVtZW50cyBvZiBjaHVua3MuIEhlbmNlLCB3ZSdsbCB0cmVhdCB0aGUgbG93ZXN0IGFkZHJlc3Mg
b2YKLSAgICAgICAgLy8gdGhlIGNodW5rIGFzIHRoZSBsb3cgd2F0ZXJtYXJrIG9mIGFueSBnaXZl
biBzZXQgYWRkcmVzcy4KLSAgICAgICAgdm9pZCogY2h1bmtBZGRyZXNzID0gUGFnZTo6Y2h1bmtB
ZGRyZXNzRm9yKGFkZHJlc3MpOwotICAgICAgICBpZiAoY2h1bmtBZGRyZXNzIDwgbV9sb3dXYXRl
cm1hcmspCi0gICAgICAgICAgICBtX2xvd1dhdGVybWFyayA9IGNodW5rQWRkcmVzczsKKyAgICAg
ICAgaWYgKGFkZHJlc3MgPCBtX2xvd1dhdGVybWFyaykKKyAgICAgICAgICAgIG1fbG93V2F0ZXJt
YXJrID0gYWRkcmVzczsKICAgICB9Ci0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+Ojp0eXBlIGdldCh2b2lkKiBhZGRyZXNzKQot
ICAgIHsKLSAgICAgICAgUGFnZSogcGFnZSA9IHBhZ2VGb3IoYWRkcmVzcyk7Ci0gICAgICAgIHJl
dHVybiBiaXR3aXNlX2Nhc3Q8ZG91YmxlPihwYWdlLT5nZXQ8dWludDY0X3Q+KGFkZHJlc3MpKTsK
LSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2
PFQ+Ojp0eXBlPjo6dmFsdWU+Ojp0eXBlPgotICAgIHZvaWQgc2V0KHZvaWQqIGFkZHJlc3MsIGRv
dWJsZSB2YWx1ZSkKKyAgICB2b2lkIHNldCh2b2lkKiBsb2dpY2FsQmFzZUFkZHJlc3MsIHB0cmRp
ZmZfdCBvZmZzZXQsIFQgdmFsdWUpCiAgICAgewotICAgICAgICBzZXQ8dWludDY0X3Q+KGFkZHJl
c3MsIGJpdHdpc2VfY2FzdDx1aW50NjRfdD4odmFsdWUpKTsKKyAgICAgICAgc2V0PFQ+KHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGxvZ2ljYWxCYXNlQWRkcmVzcykgKyBvZmZzZXQsIHZhbHVl
KTsKICAgICB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBQYWdlKiBlbnN1cmVQYWdlRm9yKHZv
aWQqIGFkZHJlc3MpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRo
UHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FyaXRoUHJvZmlsZS5jcHAJKHJldmlzaW9uIDIyMTgzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMyLDgg
QEAKIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgRU5BQkxFKEpJVCkKKy8vIEZJWE1FOiBUaGlzIGlz
IGJlaW5nIHN1cHBsYW50ZWQgYnkgb2JzZXJ2ZVJlc3VsdCgpLiBSZW1vdmUgdGhpcyBvbmUKKy8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUgaGFzIGJlZW4g
Zml4ZWQuCiB2b2lkIEFyaXRoUHJvZmlsZTo6ZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxIZWxwZXJz
JiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSkKIHsKICAgICBp
ZiAoIXNob3VsZEVtaXRTZXREb3VibGUoKSAmJiAhc2hvdWxkRW1pdFNldE5vbk51bWJlcigpKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRoUHJvZmlsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Bcml0aFByb2ZpbGUuaAko
cmV2aXNpb24gMjIxODMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FyaXRo
UHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIxMSw2ICsyMTEsOCBAQCBwdWJsaWM6CiAjaWYgRU5B
QkxFKEpJVCkgICAgCiAgICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cg
fCBOb25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkgaWYgaXQgc2VlcyBhCiAgICAgLy8g
ZG91YmxlLiBTZXRzIE5vbk51bWJlciBpZiBpdCBzZWVzIGEgbm9uLW51bWJlci4KKyAgICAvLyBG
SVhNRTogVGhpcyBpcyBiZWluZyBzdXBwbGFudGVkIGJ5IG9ic2VydmVSZXN1bHQoKS4gUmVtb3Zl
IHRoaXMgb25lCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NTE0NSBoYXMgYmVlbiBmaXhlZC4KICAgICB2b2lkIGVtaXRPYnNlcnZlUmVzdWx0KENDYWxs
SGVscGVycyYsIEpTVmFsdWVSZWdzLCBUYWdSZWdpc3RlcnNNb2RlID0gSGF2ZVRhZ1JlZ2lzdGVy
cyk7CiAgICAgCiAgICAgLy8gU2V0cyAoSW50MzJPdmVyZmxvdyB8IEludDUyT3ZlcmZsb3cgfCBO
b25OZWdaZXJvRG91YmxlIHwgTmVnWmVyb0RvdWJsZSkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCShyZXZpc2lvbiAyMjE4MzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjE4LDYgKzIxOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqKTsKICAgICB2
b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBD
b2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlKTsKICAgICAKKyAgICB2b2lk
IG9ic2VydmVBcnJheU1vZGUoQXJyYXlNb2RlcyBtb2RlKSB7IG1fb2JzZXJ2ZWRBcnJheU1vZGVz
IHw9IG1vZGU7IH0KICAgICBBcnJheU1vZGVzIG9ic2VydmVkQXJyYXlNb2Rlcyhjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX29ic2VydmVkQXJyYXlNb2RlczsgfQog
ICAgIGJvb2wgbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzOyB9CiAg
ICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAkocmV2aXNpb24gMjIxODMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMTUsNiArMjMxNSw1MyBAQCBib29sIENv
ZGVCbG9jazo6Y2hlY2tJZk9wdGltaXphdGlvblRocmVzCiAgICAgcmV0dXJuIG1faml0RXhlY3V0
ZUNvdW50ZXIuY2hlY2tJZlRocmVzaG9sZENyb3NzZWRBbmRTZXQodGhpcyk7CiB9CiAKK2F1dG8g
Q29kZUJsb2NrOjp1cGRhdGVPU1JFeGl0Q291bnRlckFuZENoZWNrSWZOZWVkVG9SZW9wdGltaXpl
KERGRzo6T1NSRXhpdFN0YXRlJiBleGl0U3RhdGUpIC0+IE9wdGltaXplQWN0aW9uCit7CisgICAg
REZHOjpPU1JFeGl0QmFzZSYgZXhpdCA9IGV4aXRTdGF0ZS5leGl0OworICAgIGlmICghZXhpdEtp
bmRNYXlKZXR0aXNvbihleGl0Lm1fa2luZCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIG1heSB3
YW50IHRvIG5vdGljZSB0aGF0IHdlJ3JlIGZyZXF1ZW50bHkgZXhpdGluZworICAgICAgICAvLyBh
dCBhbiBvcF9jYXRjaCB0aGF0IHdlIGRpZG4ndCBjb21waWxlIGFuIGVudHJ5cG9pbnQgZm9yLCBh
bmQKKyAgICAgICAgLy8gdGhlbiB0cmlnZ2VyIGEgcmVvcHRpbWl6YXRpb24gb2YgdGhpcyBDb2Rl
QmxvY2s6CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzU4NDIKKyAgICAgICAgcmV0dXJuIE9wdGltaXplQWN0aW9uOjpOb25lOworICAgIH0KKwor
ICAgIGV4aXQubV9jb3VudCsrOworICAgIG1fb3NyRXhpdENvdW50ZXIrKzsKKworICAgIENvZGVC
bG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBleGl0U3RhdGUuYmFzZWxpbmVDb2RlQmxvY2s7Cisg
ICAgQVNTRVJUKGJhc2VsaW5lQ29kZUJsb2NrID09IGJhc2VsaW5lQWx0ZXJuYXRpdmUoKSk7Cisg
ICAgaWYgKFVOTElLRUxZKGJhc2VsaW5lQ29kZUJsb2NrLT5qaXRFeGVjdXRlQ291bnRlcigpLmhh
c0Nyb3NzZWRUaHJlc2hvbGQoKSkpCisgICAgICAgIHJldHVybiBPcHRpbWl6ZUFjdGlvbjo6UmVv
cHRpbWl6ZU5vdzsKKworICAgIC8vIFdlIHdhbnQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGEg
cG9zc2liaWxpdHkgdGhhdCB3ZSdyZSBpbiBhIGxvb3AuIEZvciB0aGUgb3V0ZXJtb3N0CisgICAg
Ly8gY29kZSBibG9jayBpbiB0aGUgaW5saW5lIHN0YWNrLCB3ZSBoYW5kbGUgdGhpcyBhcHByb3By
aWF0ZWx5IGJ5IGhhdmluZyB0aGUgbG9vcCBPU1IgdHJpZ2dlcgorICAgIC8vIGNoZWNrIHRoZSBl
eGl0IGNvdW50IG9mIHRoZSByZXBsYWNlbWVudCBvZiB0aGUgQ29kZUJsb2NrIGZyb20gd2hpY2gg
d2UgYXJlIE9TUmluZy4gVGhlCisgICAgLy8gcHJvYmxlbSBpcyB0aGUgaW5saW5lZCBmdW5jdGlv
bnMsIHdoaWNoIG1pZ2h0IGFsc28gaGF2ZSBsb29wcywgYnV0IHdob3NlIGJhc2VsaW5lIHZlcnNp
b25zCisgICAgLy8gZG9uJ3Qga25vdyB3aGVyZSB0byBsb29rIGZvciB0aGUgZXhpdCBjb3VudC4g
RmlndXJlIG91dCBpZiB0aG9zZSBsb29wcyBhcmUgc2V2ZXJlIGVub3VnaAorICAgIC8vIHRoYXQg
d2UgaGFkIHRyaWVkIHRvIE9TUiBlbnRlci4gSWYgc28sIHRoZW4gd2Ugc2hvdWxkIHVzZSB0aGUg
bG9vcCByZW9wdGltaXphdGlvbiB0cmlnZ2VyLgorICAgIC8vIE90aGVyd2lzZSwgd2Ugc2hvdWxk
IHVzZSB0aGUgbm9ybWFsIHJlb3B0aW1pemF0aW9uIHRyaWdnZXIuCisKKyAgICBib29sIGRpZFRy
eVRvRW50ZXJJbkxvb3AgPSBmYWxzZTsKKyAgICBmb3IgKElubGluZUNhbGxGcmFtZSogaW5saW5l
Q2FsbEZyYW1lID0gZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxs
RnJhbWU7IGlubGluZUNhbGxGcmFtZSA9IGlubGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2FsbGVyLmlu
bGluZUNhbGxGcmFtZSkgeworICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNv
ZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPmRpZFRyeVRvRW50ZXJJbkxvb3AoKSkg
eworICAgICAgICAgICAgZGlkVHJ5VG9FbnRlckluTG9vcCA9IHRydWU7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHVpbnQzMl90IGV4aXRDb3VudFRocmVzaG9s
ZCA9IGRpZFRyeVRvRW50ZXJJbkxvb3AKKyAgICAgICAgPyBleGl0Q291bnRUaHJlc2hvbGRGb3JS
ZW9wdGltaXphdGlvbkZyb21Mb29wKCkKKyAgICAgICAgOiBleGl0Q291bnRUaHJlc2hvbGRGb3JS
ZW9wdGltaXphdGlvbigpOworCisgICAgaWYgKG1fb3NyRXhpdENvdW50ZXIgPiBleGl0Q291bnRU
aHJlc2hvbGQpCisgICAgICAgIHJldHVybiBPcHRpbWl6ZUFjdGlvbjo6UmVvcHRpbWl6ZU5vdzsK
KworICAgIC8vIFRvbyBmZXcgZmFpbHMuIEFkanVzdCB0aGUgZXhlY3V0aW9uIGNvdW50ZXIgc3Vj
aCB0aGF0IHRoZSB0YXJnZXQgaXMgdG8gb25seSBvcHRpbWl6ZSBhZnRlciBhIHdoaWxlLgorICAg
IGJhc2VsaW5lQ29kZUJsb2NrLT5tX2ppdEV4ZWN1dGVDb3VudGVyLnNldE5ld1RocmVzaG9sZEZv
ck9TUkV4aXQoZXhpdFN0YXRlLmFjdGl2ZVRocmVzaG9sZCwgZXhpdFN0YXRlLm1lbW9yeVVzYWdl
QWRqdXN0ZWRUaHJlc2hvbGQpOworICAgIHJldHVybiBPcHRpbWl6ZUFjdGlvbjo6Tm9uZTsKK30K
Kwogdm9pZCBDb2RlQmxvY2s6Om9wdGltaXplTmV4dEludm9jYXRpb24oKQogewogICAgIGlmIChP
cHRpb25zOjp2ZXJib3NlT1NSKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMjE4MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDEwIEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCituYW1lc3BhY2UgREZHIHsKK3N0cnVjdCBPU1JFeGl0U3Rh
dGU7Cit9IC8vIG5hbWVzcGFjZSBERkcKKwogY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
OwogY2xhc3MgQ29kZUJsb2NrU2V0OwogY2xhc3MgRXhlY1N0YXRlOwpAQCAtNzYyLDggKzc2Niwx
MCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvdW50T1NSRXhpdCgpIHsgbV9vc3JFeGl0Q291bnRl
cisrOyB9CiAKLSAgICB1aW50MzJfdCogYWRkcmVzc09mT1NSRXhpdENvdW50ZXIoKSB7IHJldHVy
biAmbV9vc3JFeGl0Q291bnRlcjsgfQorICAgIGVudW0gY2xhc3MgT3B0aW1pemVBY3Rpb24geyBO
b25lLCBSZW9wdGltaXplTm93IH07CisgICAgT3B0aW1pemVBY3Rpb24gdXBkYXRlT1NSRXhpdENv
dW50ZXJBbmRDaGVja0lmTmVlZFRvUmVvcHRpbWl6ZShERkc6Ok9TUkV4aXRTdGF0ZSYpOwogCisg
ICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
Zk9TUkV4aXRDb3VudGVyKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvZGVCbG9jaywgbV9v
c3JFeGl0Q291bnRlcik7IH0KIAogICAgIHVpbnQzMl90IGFkanVzdGVkRXhpdENvdW50VGhyZXNo
b2xkKHVpbnQzMl90IGRlc2lyZWRUaHJlc2hvbGQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5oCShyZXZpc2lvbiAyMjE4MzEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDYgKzQxLDcgQEAgZW51bSBDb3VudGluZ1ZhcmlhbnQgewog
ZG91YmxlIGFwcGx5TWVtb3J5VXNhZ2VIZXVyaXN0aWNzKGludDMyX3QgdmFsdWUsIENvZGVCbG9j
ayopOwogaW50MzJfdCBhcHBseU1lbW9yeVVzYWdlSGV1cmlzdGljc0FuZENvbnZlcnRUb0ludChp
bnQzMl90IHZhbHVlLCBDb2RlQmxvY2sqKTsKIAorLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4g
d2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiBp
bmxpbmUgaW50MzJfdCBmb3JtYXR0ZWRUb3RhbEV4ZWN1dGlvbkNvdW50KGZsb2F0IHZhbHVlKQog
ewogICAgIHVuaW9uIHsKQEAgLTU3LDExICs1OCwxOSBAQCBwdWJsaWM6CiAgICAgRXhlY3V0aW9u
Q291bnRlcigpOwogICAgIHZvaWQgZm9yY2VTbG93UGF0aENvbmN1cnJlbnRseSgpOyAvLyBJZiB5
b3UgdXNlIHRoaXMsIGNoZWNrSWZUaHJlc2hvbGRDcm9zc2VkQW5kU2V0KCkgbWF5IHN0aWxsIHJl
dHVybiBmYWxzZS4KICAgICBib29sIGNoZWNrSWZUaHJlc2hvbGRDcm9zc2VkQW5kU2V0KENvZGVC
bG9jayopOworICAgIGJvb2wgaGFzQ3Jvc3NlZFRocmVzaG9sZCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y291bnRlciA+PSAwOyB9CiAgICAgdm9pZCBzZXROZXdUaHJlc2hvbGQoaW50MzJfdCB0aHJlc2hv
bGQsIENvZGVCbG9jayopOwogICAgIHZvaWQgZGVmZXJJbmRlZmluaXRlbHkoKTsKICAgICBkb3Vi
bGUgY291bnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KG1fdG90YWxDb3Vu
dCkgKyBtX2NvdW50ZXI7IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAg
ICAKKyAgICB2b2lkIHNldE5ld1RocmVzaG9sZEZvck9TUkV4aXQodWludDMyX3QgYWN0aXZlVGhy
ZXNob2xkLCBkb3VibGUgbWVtb3J5VXNhZ2VBZGp1c3RlZFRocmVzaG9sZCkKKyAgICB7CisgICAg
ICAgIG1fYWN0aXZlVGhyZXNob2xkID0gYWN0aXZlVGhyZXNob2xkOworICAgICAgICBtX2NvdW50
ZXIgPSBzdGF0aWNfY2FzdDxpbnQzMl90PigtbWVtb3J5VXNhZ2VBZGp1c3RlZFRocmVzaG9sZCk7
CisgICAgICAgIG1fdG90YWxDb3VudCA9IG1lbW9yeVVzYWdlQWRqdXN0ZWRUaHJlc2hvbGQ7Cisg
ICAgfQorCiAgICAgc3RhdGljIGludDMyX3QgbWF4aW11bUV4ZWN1dGlvbkNvdW50c0JldHdlZW5D
aGVja3BvaW50cygpCiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvdW50aW5nVmFyaWFudCkgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAkocmV2aXNpb24gMjIxODMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2Zp
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDYgKzQ2LDggQEAgTWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZSBNZXRob2RPZkdldAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
Ky8vIEZJWE1FOiBUaGlzIGlzIGJlaW5nIHN1cHBsYW50ZWQgYnkgcmVwb3J0VmFsdWUoKS4gUmVt
b3ZlIHRoaXMgb25lCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc1MTQ1IGhhcyBiZWVuIGZpeGVkLgogdm9pZCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
OjplbWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTVmFsdWVSZWdzIHJlZ3MpIGNv
bnN0CiB7CiAgICAgc3dpdGNoIChtX2tpbmQpIHsKQEAgLTc0LDYgKzc2LDM0IEBAIHZvaWQgTWV0
aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZW1pdFIKICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQogCit2b2lkIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGU6OnJlcG9y
dFZhbHVlKEpTVmFsdWUgdmFsdWUpCit7CisgICAgc3dpdGNoIChtX2tpbmQpIHsKKyAgICBjYXNl
IE5vbmU6CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgUmVhZHk6CisgICAgICAgICp1LnBy
b2ZpbGUtPnNwZWNGYWlsQnVja2V0KDApID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKKyAgICAg
ICAgcmV0dXJuOworCisgICAgY2FzZSBMYXp5T3BlcmFuZDogeworICAgICAgICBMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZUtleSBrZXkodS5sYXp5T3BlcmFuZC5ieXRlY29kZU9mZnNldCwgVmlydHVh
bFJlZ2lzdGVyKHUubGF6eU9wZXJhbmQub3BlcmFuZCkpOworCisgICAgICAgIENvbmN1cnJlbnRK
U0xvY2tlciBsb2NrZXIodS5sYXp5T3BlcmFuZC5jb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAg
IExhenlPcGVyYW5kVmFsdWVQcm9maWxlKiBwcm9maWxlID0KKyAgICAgICAgICAgIHUubGF6eU9w
ZXJhbmQuY29kZUJsb2NrLT5sYXp5T3BlcmFuZFZhbHVlUHJvZmlsZXMoKS5hZGQobG9ja2VyLCBr
ZXkpOworICAgICAgICAqcHJvZmlsZS0+c3BlY0ZhaWxCdWNrZXQoMCkgPSBKU1ZhbHVlOjplbmNv
ZGUodmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBBcml0aFByb2Zp
bGVSZWFkeTogeworICAgICAgICB1LmFyaXRoUHJvZmlsZS0+b2JzZXJ2ZVJlc3VsdCh2YWx1ZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9IH0KKworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19K
SVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDIyMTgzMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9m
aWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzAsOSArNzAsMTIgQEAgcHVibGljOgogICAgICAg
ICBDb2RlQmxvY2sqLCBjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYpOwogICAgIAog
ICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2tpbmQgIT0gTm9u
ZTsgfQotICAgIAorCisgICAgLy8gRklYTUU6IGVtaXRSZXBvcnRWYWx1ZSBpcyBiZWluZyBzdXBw
bGFudGVkIGJ5IHJlcG9ydFZhbHVlKCkuIFJlbW92ZSB0aGlzIG9uZQorICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUgaGFzIGJlZW4gZml4ZWQuCiAg
ICAgdm9pZCBlbWl0UmVwb3J0VmFsdWUoQ0NhbGxIZWxwZXJzJiwgSlNWYWx1ZVJlZ3MpIGNvbnN0
OwotICAgIAorICAgIHZvaWQgcmVwb3J0VmFsdWUoSlNWYWx1ZSk7CisKIHByaXZhdGU6CiAgICAg
ZW51bSBLaW5kIHsKICAgICAgICAgTm9uZSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRHJpdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RyaXZlci5jcHAJKHJldmlzaW9uIDIyMTgzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRHJpdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg5LDcgKzg5LDcg
QEAgc3RhdGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAogICAgIAogICAgIC8vIE1h
a2Ugc3VyZSB0aGF0IGFueSBzdHVicyB0aGF0IHRoZSBERkcgaXMgZ29pbmcgdG8gdXNlIGFyZSBp
bml0aWFsaXplZC4gV2Ugd2FudCB0bwogICAgIC8vIG1ha2Ugc3VyZSB0aGF0IGFsbCBKSVQgY29k
ZSBnZW5lcmF0aW9uIGRvZXMgZmluYWxpemF0aW9uIG9uIHRoZSBtYWluIHRocmVhZC4KLSAgICB2
bS5nZXRDVElTdHViKG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpOworICAgIHZtLmdl
dENUSVN0dWIob3NyRXhpdFRodW5rR2VuZXJhdG9yKTsKICAgICB2bS5nZXRDVElTdHViKHRocm93
RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcik7CiAgICAgdm0uZ2V0Q1RJU3R1Yihs
aW5rQ2FsbFRodW5rR2VuZXJhdG9yKTsKICAgICB2bS5nZXRDVElTdHViKGxpbmtQb2x5bW9ycGhp
Y0NhbGxUaHVua0dlbmVyYXRvcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29kZS5jcHAJKHJldmlzaW9uIDIyMTgzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNSwxOCArMjI1LDYgQEAgdm9p
ZCBKSVRDb2RlOjp2YWxpZGF0ZVJlZmVyZW5jZXMoY29uc3QgVAogICAgIG1pbmlmaWVkREZHLnZh
bGlkYXRlUmVmZXJlbmNlcyh0cmFja2VkUmVmZXJlbmNlcyk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8
Q29kZU9yaWdpbj4gSklUQ29kZTo6ZmluZFBDKENvZGVCbG9jayosIHZvaWQqIHBjKQotewotICAg
IGZvciAoT1NSRXhpdCYgZXhpdCA6IG9zckV4aXQpIHsKLSAgICAgICAgaWYgKEV4ZWN1dGFibGVN
ZW1vcnlIYW5kbGUqIGhhbmRsZSA9IGV4aXQubV9jb2RlLmV4ZWN1dGFibGVNZW1vcnkoKSkgewot
ICAgICAgICAgICAgaWYgKGhhbmRsZS0+c3RhcnQoKSA8PSBwYyAmJiBwYyA8IGhhbmRsZS0+ZW5k
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8Q29kZU9yaWdpbj4oZXhp
dC5tX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCiB2b2lkIEpJVENvZGU6OmZpbmFsaXplT1NSRW50cnlw
b2ludHMoKQogewogICAgIGF1dG8gY29tcGFyYXRvciA9IFtdIChjb25zdCBhdXRvJiBhLCBjb25z
dCBhdXRvJiBiKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAko
cmV2aXNpb24gMjIxODMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw4ICsxMjYsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgcHRyZGlmZl90IGNvbW1vbkRhdGFPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
SklUQ29kZSwgY29tbW9uKTsgfQogCi0gICAgc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPiBmaW5k
UEMoQ29kZUJsb2NrKiwgdm9pZCogcGMpIG92ZXJyaWRlOwotICAgIAogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgSklUQ29tcGlsZXI7IC8vIEFsbG93IEpJVENvbXBpbGVyIHRvIGNhbGwgc2V0
Q29kZVJlZigpLgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmNwcAkocmV2aXNpb24gMjIxODMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDggKzg1LDkgQEAgdm9p
ZCBKSVRDb21waWxlcjo6bGlua09TUkV4aXRzKCkKICAgICAgICAgfQogICAgIH0KICAgICAKKyAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdFRodW5rID0gdm0oKS0+Z2V0Q1RJU3R1Yihv
c3JFeGl0VGh1bmtHZW5lcmF0b3IpOworICAgIENvZGVMb2NhdGlvbkxhYmVsIG9zckV4aXRUaHVu
a0xhYmVsID0gQ29kZUxvY2F0aW9uTGFiZWwob3NyRXhpdFRodW5rLmNvZGUoKSk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faml0Q29kZS0+b3NyRXhpdC5zaXplKCk7ICsraSkgewot
ICAgICAgICBPU1JFeGl0JiBleGl0ID0gbV9qaXRDb2RlLT5vc3JFeGl0W2ldOwogICAgICAgICBP
U1JFeGl0Q29tcGlsYXRpb25JbmZvJiBpbmZvID0gbV9leGl0Q29tcGlsYXRpb25JbmZvW2ldOwog
ICAgICAgICBKdW1wTGlzdCYgZmFpbHVyZUp1bXBzID0gaW5mby5tX2ZhaWx1cmVKdW1wczsKICAg
ICAgICAgaWYgKCFmYWlsdXJlSnVtcHMuZW1wdHkoKSkKQEAgLTk2LDcgKzk3LDEwIEBAIHZvaWQg
SklUQ29tcGlsZXI6OmxpbmtPU1JFeGl0cygpCiAKICAgICAgICAgaml0QXNzZXJ0SGFzVmFsaWRD
YWxsRnJhbWUoKTsKICAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoaSksICZ2bSgpLT5vc3JF
eGl0SW5kZXgpOwotICAgICAgICBleGl0LnNldFBhdGNoYWJsZUNvZGVPZmZzZXQocGF0Y2hhYmxl
SnVtcCgpKTsKKyAgICAgICAgSnVtcCB0YXJnZXQgPSBqdW1wKCk7CisgICAgICAgIGFkZExpbmtU
YXNrKFt0YXJnZXQsIG9zckV4aXRUaHVua0xhYmVsXSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikg
eworICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHRhcmdldCwgb3NyRXhpdFRodW5rTGFiZWwp
OworICAgICAgICB9KTsKICAgICB9CiB9CiAKQEAgLTMwMywxMyArMzA3LDggQEAgdm9pZCBKSVRD
b21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgICAgICAgICAgbGlua0J1ZmZlci5s
b2NhdGlvbk9mTmVhckNhbGwocmVjb3JkLmNhbGwpKTsKICAgICB9CiAgICAgCi0gICAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIG9zckV4aXRUaHVuayA9IHZtKCktPmdldENUSVN0dWIob3NyRXhpdEdl
bmVyYXRpb25UaHVua0dlbmVyYXRvcik7Ci0gICAgQ29kZUxvY2F0aW9uTGFiZWwgdGFyZ2V0ID0g
Q29kZUxvY2F0aW9uTGFiZWwob3NyRXhpdFRodW5rLmNvZGUoKSk7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1faml0Q29kZS0+b3NyRXhpdC5zaXplKCk7ICsraSkgewotICAgICAgICBP
U1JFeGl0JiBleGl0ID0gbV9qaXRDb2RlLT5vc3JFeGl0W2ldOwogICAgICAgICBPU1JFeGl0Q29t
cGlsYXRpb25JbmZvJiBpbmZvID0gbV9leGl0Q29tcGlsYXRpb25JbmZvW2ldOwotICAgICAgICBs
aW5rQnVmZmVyLmxpbmsoZXhpdC5nZXRQYXRjaGFibGVDb2RlT2Zmc2V0QXNKdW1wKCksIHRhcmdl
dCk7Ci0gICAgICAgIGV4aXQuY29ycmVjdEp1bXAobGlua0J1ZmZlcik7CiAgICAgICAgIGlmIChp
bmZvLm1fcmVwbGFjZW1lbnRTb3VyY2UuaXNTZXQoKSkgewogICAgICAgICAgICAgbV9qaXRDb2Rl
LT5jb21tb24uanVtcFJlcGxhY2VtZW50cy5hcHBlbmQoSnVtcFJlcGxhY2VtZW50KAogICAgICAg
ICAgICAgICAgIGxpbmtCdWZmZXIubG9jYXRpb25PZihpbmZvLm1fcmVwbGFjZW1lbnRTb3VyY2Up
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCShyZXZpc2lv
biAyMjE4MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDU3ICsyOSwyNDAgQEAKICNpZiBFTkFCTEUoREZHX0pJVCkK
IAogI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVycy5oIgorI2luY2x1ZGUgIkNsb25lZEFyZ3VtZW50
cy5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHTWF5RXhpdC5oIgotI2lu
Y2x1ZGUgIkRGR09TUkV4aXRDb21waWxlckNvbW1vbi5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXRQ
cmVwYXJhdGlvbi5oIgogI2luY2x1ZGUgIkRGR09wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJERkdT
cGVjdWxhdGl2ZUpJVC5oIgotI2luY2x1ZGUgIkZyYW1lVHJhY2Vycy5oIgorI2luY2x1ZGUgIkRp
cmVjdEFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIklubGluZUNhbGxGcmFtZS5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiT3BlcmFu
ZHNJbmxpbmVzLmgiCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCisjaW5jbHVkZSAiUHJvYmVG
cmFtZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLU9TUkV4aXQ6Ok9T
UkV4aXQoRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlIHZhbHVlUHJvZmlsZSwgU3BlY3VsYXRpdmVKSVQqIGppdCwg
dW5zaWduZWQgc3RyZWFtSW5kZXgsIHVuc2lnbmVkIHJlY292ZXJ5SW5kZXgpCi0gICAgOiBPU1JF
eGl0QmFzZShraW5kLCBqaXQtPm1fb3JpZ2luLmZvckV4aXQsIGppdC0+bV9vcmlnaW4uc2VtYW50
aWMsIGppdC0+bV9vcmlnaW4ud2FzSG9pc3RlZCkKLSAgICAsIG1fanNWYWx1ZVNvdXJjZShqc1Zh
bHVlU291cmNlKQotICAgICwgbV92YWx1ZVByb2ZpbGUodmFsdWVQcm9maWxlKQotICAgICwgbV9y
ZWNvdmVyeUluZGV4KHJlY292ZXJ5SW5kZXgpCi0gICAgLCBtX3N0cmVhbUluZGV4KHN0cmVhbUlu
ZGV4KQordXNpbmcgQ1BVU3RhdGUgPSBQcm9iZTo6Q1BVU3RhdGU7Cit1c2luZyBDb250ZXh0ID0g
UHJvYmU6OkNvbnRleHQ7Cit1c2luZyBGcmFtZSA9IFByb2JlOjpGcmFtZTsKKworc3RhdGljIHZv
aWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhQcm9iZTo6Q29udGV4dCYsIENvZGVCbG9jayogYmFz
ZWxpbmVDb2RlQmxvY2ssIGNvbnN0IE9TUkV4aXRCYXNlJik7CitzdGF0aWMgdm9pZCBhZGp1c3RB
bmRKdW1wVG9UYXJnZXQoUHJvYmU6OkNvbnRleHQmLCBWTSYsIENvZGVCbG9jayosIENvZGVCbG9j
ayogYmFzZWxpbmVDb2RlQmxvY2ssIE9TUkV4aXQmKTsKK3N0YXRpYyB2b2lkIHByaW50T1NSRXhp
dChDb250ZXh0JiwgdWludDMyX3Qgb3NyRXhpdEluZGV4LCBjb25zdCBPU1JFeGl0Jik7CisKK3N0
YXRpYyBKU1ZhbHVlIGpzVmFsdWVGb3IoQ1BVU3RhdGUmIGNwdSwgSlNWYWx1ZVNvdXJjZSBzb3Vy
Y2UpCiB7Ci0gICAgYm9vbCBjYW5FeGl0ID0gaml0LT5tX29yaWdpbi5leGl0T0s7Ci0gICAgaWYg
KCFjYW5FeGl0ICYmIGppdC0+bV9jdXJyZW50Tm9kZSkgewotICAgICAgICBFeGl0TW9kZSBleGl0
TW9kZSA9IG1heUV4aXQoaml0LT5tX2ppdC5ncmFwaCgpLCBqaXQtPm1fY3VycmVudE5vZGUpOwot
ICAgICAgICBjYW5FeGl0ID0gZXhpdE1vZGUgPT0gRXhpdE1vZGU6OkV4aXRzIHx8IGV4aXRNb2Rl
ID09IEV4aXRNb2RlOjpFeGl0c0ZvckV4Y2VwdGlvbnM7CisgICAgaWYgKHNvdXJjZS5pc0FkZHJl
c3MoKSkgeworICAgICAgICBKU1ZhbHVlIHJlc3VsdDsKKyAgICAgICAgc3RkOjptZW1jcHkoJnJl
c3VsdCwgY3B1Lmdwcjx1aW50OF90Kj4oc291cmNlLmJhc2UoKSkgKyBzb3VyY2Uub2Zmc2V0KCks
IHNpemVvZihKU1ZhbHVlKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIERG
R19BU1NFUlQoaml0LT5tX2ppdC5ncmFwaCgpLCBqaXQtPm1fY3VycmVudE5vZGUsIGNhbkV4aXQp
OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShjcHUuZ3By
PEVuY29kZWRKU1ZhbHVlPihzb3VyY2UuZ3ByKCkpKTsKKyNlbHNlCisgICAgaWYgKHNvdXJjZS5o
YXNLbm93blRhZygpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZShzb3VyY2UudGFnKCksIGNwdS5n
cHI8aW50MzJfdD4oc291cmNlLnBheWxvYWRHUFIoKSkpOworICAgIHJldHVybiBKU1ZhbHVlKGNw
dS5ncHI8aW50MzJfdD4oc291cmNlLnRhZ0dQUigpKSwgY3B1LmdwcjxpbnQzMl90Pihzb3VyY2Uu
cGF5bG9hZEdQUigpKSk7CisjZW5kaWYKIH0KIAotdm9pZCBPU1JFeGl0OjpzZXRQYXRjaGFibGVD
b2RlT2Zmc2V0KE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIGNoZWNrKQorI2lmIE5VTUJF
Ul9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTID4gMAorCitzdGF0aWNfYXNzZXJ0KGlzNjRCaXQo
KSwgIndlIG9ubHkgc3VwcG9ydCBjYWxsZWUgc2F2ZSByZWdpc3RlcnMgb24gNjQtYml0Iik7CisK
Ky8vIEJhc2VkIG9uIEFzc2VtYmx5SGVscGVyczo6ZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0Zvcigp
Lgorc3RhdGljIHZvaWQgcmVzdG9yZUNhbGxlZVNhdmVzRm9yKENvbnRleHQmIGNvbnRleHQsIENv
ZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIG1fcGF0Y2hhYmxlQ29kZU9mZnNldCA9IGNoZWNr
Lm1fanVtcC5tX2xhYmVsLm1fb2Zmc2V0OworICAgIEFTU0VSVChjb2RlQmxvY2spOworCisgICAg
UmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVTYXZl
UmVnaXN0ZXJzKCk7CisgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmVSZWdpc3RlcnMgPSBSZWdp
c3RlclNldChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OmFsbEZQ
UnMoKSk7CisgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5zaXplKCk7
CisKKyAgICB1aW50cHRyX3QqIHBoeXNpY2FsU3RhY2tGcmFtZSA9IGNvbnRleHQuZnA8dWludHB0
cl90Kj4oKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsr
KSB7CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+YXQoaSk7
CisgICAgICAgIGlmIChkb250UmVzdG9yZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIC8vIFRoZSBjYWxsZWUgc2F2ZWQgdmFsdWVzIGNv
bWUgZnJvbSB0aGUgb3JpZ2luYWwgc3RhY2ssIG5vdCB0aGUgcmVjb3ZlcmVkIHN0YWNrLgorICAg
ICAgICAvLyBIZW5jZSwgd2UgcmVhZCB0aGUgdmFsdWVzIGRpcmVjdGx5IGZyb20gdGhlIHBoeXNp
Y2FsIHN0YWNrIG1lbW9yeSBpbnN0ZWFkIG9mCisgICAgICAgIC8vIGdvaW5nIHRocm91Z2ggY29u
dGV4dC5zdGFjaygpLgorICAgICAgICBBU1NFUlQoIShlbnRyeS5vZmZzZXQoKSAlIHNpemVvZih1
aW50cHRyX3QpKSk7CisgICAgICAgIGNvbnRleHQuZ3ByKGVudHJ5LnJlZygpLmdwcigpKSA9IHBo
eXNpY2FsU3RhY2tGcmFtZVtlbnRyeS5vZmZzZXQoKSAvIHNpemVvZih1aW50cHRyX3QpXTsKKyAg
ICB9CiB9CiAKLU1hY3JvQXNzZW1ibGVyOjpKdW1wIE9TUkV4aXQ6OmdldFBhdGNoYWJsZUNvZGVP
ZmZzZXRBc0p1bXAoKSBjb25zdAorLy8gQmFzZWQgb24gQXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2
ZUNhbGxlZVNhdmVzRm9yKCkuCitzdGF0aWMgdm9pZCBzYXZlQ2FsbGVlU2F2ZXNGb3IoQ29udGV4
dCYgY29udGV4dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0dXJuIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wKEFzc2VtYmxlckxhYmVsKG1fcGF0Y2hhYmxlQ29kZU9mZnNldCkpOworICAg
IGF1dG8mIHN0YWNrID0gY29udGV4dC5zdGFjaygpOworICAgIEFTU0VSVChjb2RlQmxvY2spOwor
CisgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxs
ZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgUmVnaXN0ZXJTZXQgZG9udFNhdmVSZWdpc3RlcnMgPSBS
ZWdpc3RlclNldChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OmFs
bEZQUnMoKSk7CisgICAgdW5zaWduZWQgcmVnaXN0ZXJDb3VudCA9IGNhbGxlZVNhdmVzLT5zaXpl
KCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7
CisgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+YXQoaSk7Cisg
ICAgICAgIGlmIChkb250U2F2ZVJlZ2lzdGVycy5nZXQoZW50cnkucmVnKCkpKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIHN0YWNrLnNldChjb250ZXh0LmZwKCksIGVudHJ5Lm9mZnNl
dCgpLCBjb250ZXh0Lmdwcjx1aW50cHRyX3Q+KGVudHJ5LnJlZygpLmdwcigpKSk7CisgICAgfQog
fQogCi1Db2RlTG9jYXRpb25KdW1wIE9TUkV4aXQ6OmNvZGVMb2NhdGlvbkZvclJlcGF0Y2goQ29k
ZUJsb2NrKiBkZmdDb2RlQmxvY2spIGNvbnN0CisvLyBCYXNlZCBvbiBBc3NlbWJseUhlbHBlcnM6
OnJlc3RvcmVDYWxsZWVTYXZlc0Zyb21WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcigpLgor
c3RhdGljIHZvaWQgcmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVz
QnVmZmVyKENvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIENvZGVMb2NhdGlvbkp1bXAo
ZGZnQ29kZUJsb2NrLT5qaXRDb2RlKCktPmRhdGFBZGRyZXNzQXRPZmZzZXQobV9wYXRjaGFibGVD
b2RlT2Zmc2V0KSk7CisgICAgVk0mIHZtID0gKmNvbnRleHQuYXJnPFZNKj4oKTsKKworICAgIFJl
Z2lzdGVyQXRPZmZzZXRMaXN0KiBhbGxDYWxsZWVTYXZlcyA9IFZNOjpnZXRBbGxDYWxsZWVTYXZl
UmVnaXN0ZXJPZmZzZXRzKCk7CisgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmVSZWdpc3RlcnMg
PSBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKTsKKyAgICB1bnNpZ25lZCByZWdpc3RlckNv
dW50ID0gYWxsQ2FsbGVlU2F2ZXMtPnNpemUoKTsKKworICAgIFZNRW50cnlSZWNvcmQqIGVudHJ5
UmVjb3JkID0gdm1FbnRyeVJlY29yZCh2bS50b3BWTUVudHJ5RnJhbWUpOworICAgIHVpbnRwdHJf
dCogY2FsbGVlU2F2ZUJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Kj4oZW50cnlS
ZWNvcmQtPmNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXIpOworCisgICAgLy8gUmVzdG9yZSBhbGwg
Y2FsbGVlIHNhdmVzLgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50
OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVz
LT5hdChpKTsKKyAgICAgICAgaWYgKGRvbnRSZXN0b3JlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWco
KSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgc2l6ZV90IHVpbnRwdHJPZmZzZXQg
PSBlbnRyeS5vZmZzZXQoKSAvIHNpemVvZih1aW50cHRyX3QpOworICAgICAgICBpZiAoZW50cnku
cmVnKCkuaXNHUFIoKSkKKyAgICAgICAgICAgIGNvbnRleHQuZ3ByKGVudHJ5LnJlZygpLmdwcigp
KSA9IGNhbGxlZVNhdmVCdWZmZXJbdWludHB0ck9mZnNldF07CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGNvbnRleHQuZnByKGVudHJ5LnJlZygpLmZwcigpKSA9IGJpdHdpc2VfY2FzdDxkb3Vi
bGU+KGNhbGxlZVNhdmVCdWZmZXJbdWludHB0ck9mZnNldF0pOworICAgIH0KIH0KIAotdm9pZCBP
U1JFeGl0Ojpjb3JyZWN0SnVtcChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQorLy8gQmFzZWQgb24g
QXNzZW1ibHlIZWxwZXJzOjpjb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVz
QnVmZmVyKCkuCitzdGF0aWMgdm9pZCBjb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxl
ZVNhdmVzQnVmZmVyKENvbnRleHQmIGNvbnRleHQpCit7CisgICAgVk0mIHZtID0gKmNvbnRleHQu
YXJnPFZNKj4oKTsKKyAgICBhdXRvJiBzdGFjayA9IGNvbnRleHQuc3RhY2soKTsKKworICAgIFZN
RW50cnlSZWNvcmQqIGVudHJ5UmVjb3JkID0gdm1FbnRyeVJlY29yZCh2bS50b3BWTUVudHJ5RnJh
bWUpOworICAgIHZvaWQqIGNhbGxlZVNhdmVCdWZmZXIgPSBlbnRyeVJlY29yZC0+Y2FsbGVlU2F2
ZVJlZ2lzdGVyc0J1ZmZlcjsKKworICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBhbGxDYWxsZWVT
YXZlcyA9IFZNOjpnZXRBbGxDYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7CisgICAgUmVnaXN0
ZXJTZXQgZG9udENvcHlSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKTsK
KyAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gYWxsQ2FsbGVlU2F2ZXMtPnNpemUoKTsKKwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsKKyAgICAg
ICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGFsbENhbGxlZVNhdmVzLT5hdChpKTsKKyAgICAg
ICAgaWYgKGRvbnRDb3B5UmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpCisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgaWYgKGVudHJ5LnJlZygpLmlzR1BSKCkpCisgICAgICAgICAgICBz
dGFjay5zZXQoY2FsbGVlU2F2ZUJ1ZmZlciwgZW50cnkub2Zmc2V0KCksIGNvbnRleHQuZ3ByPHVp
bnRwdHJfdD4oZW50cnkucmVnKCkuZ3ByKCkpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
c3RhY2suc2V0KGNhbGxlZVNhdmVCdWZmZXIsIGVudHJ5Lm9mZnNldCgpLCBjb250ZXh0LmZwcjx1
aW50cHRyX3Q+KGVudHJ5LnJlZygpLmZwcigpKSk7CisgICAgfQorfQorCisvLyBCYXNlZCBvbiBB
c3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoKS4KK3N0YXRpYyB2
b2lkIHNhdmVPckNvcHlDYWxsZWVTYXZlc0ZvcihDb250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgVmlydHVhbFJlZ2lzdGVyIG9mZnNldFZpcnR1YWxSZWdpc3RlciwgYm9vbCB3
YXNDYWxsZWRWaWFUYWlsQ2FsbCkKK3sKKyAgICBGcmFtZSBmcmFtZShjb250ZXh0LmZwKCksIGNv
bnRleHQuc3RhY2soKSk7CisgICAgQVNTRVJUKGNvZGVCbG9jayk7CisKKyAgICBSZWdpc3RlckF0
T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMo
KTsKKyAgICBSZWdpc3RlclNldCBkb250U2F2ZVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0KFJlZ2lz
dGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLCBSZWdpc3RlclNldDo6YWxsRlBScygpKTsKKyAgICB1
bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsKKworICAgIFJlZ2lz
dGVyU2V0IGJhc2VsaW5lQ2FsbGVlU2F2ZXMgPSBSZWdpc3RlclNldDo6bGxpbnRCYXNlbGluZUNh
bGxlZVNhdmVSZWdpc3RlcnMoKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdp
c3RlckNvdW50OyBpKyspIHsKKyAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCBlbnRyeSA9IGNhbGxl
ZVNhdmVzLT5hdChpKTsKKyAgICAgICAgaWYgKGRvbnRTYXZlUmVnaXN0ZXJzLmdldChlbnRyeS5y
ZWcoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICB1aW50cHRyX3Qgc2F2ZWRS
ZWdpc3RlclZhbHVlOworCisgICAgICAgIGlmICh3YXNDYWxsZWRWaWFUYWlsQ2FsbCAmJiBiYXNl
bGluZUNhbGxlZVNhdmVzLmdldChlbnRyeS5yZWcoKSkpCisgICAgICAgICAgICBzYXZlZFJlZ2lz
dGVyVmFsdWUgPSBmcmFtZS5nZXQ8dWludHB0cl90PihlbnRyeS5vZmZzZXQoKSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHNhdmVkUmVnaXN0ZXJWYWx1ZSA9IGNvbnRleHQuZ3ByKGVudHJ5
LnJlZygpLmdwcigpKTsKKworICAgICAgICBmcmFtZS5zZXQob2Zmc2V0VmlydHVhbFJlZ2lzdGVy
Lm9mZnNldEluQnl0ZXMoKSArIGVudHJ5Lm9mZnNldCgpLCBzYXZlZFJlZ2lzdGVyVmFsdWUpOwor
ICAgIH0KK30KKyNlbHNlIC8vIG5vdCBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+
IDAKKworc3RhdGljIHZvaWQgcmVzdG9yZUNhbGxlZVNhdmVzRm9yKENvbnRleHQmLCBDb2RlQmxv
Y2sqKSB7IH0KK3N0YXRpYyB2b2lkIHNhdmVDYWxsZWVTYXZlc0ZvcihDb250ZXh0JiwgQ29kZUJs
b2NrKikgeyB9CitzdGF0aWMgdm9pZCByZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1FbnRyeUZyYW1l
Q2FsbGVlU2F2ZXNCdWZmZXIoQ29udGV4dCYpIHsgfQorc3RhdGljIHZvaWQgY29weUNhbGxlZVNh
dmVzVG9WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihDb250ZXh0JikgeyB9CitzdGF0aWMg
dm9pZCBzYXZlT3JDb3B5Q2FsbGVlU2F2ZXNGb3IoQ29udGV4dCYsIENvZGVCbG9jayosIFZpcnR1
YWxSZWdpc3RlciwgYm9vbCkgeyB9CisKKyNlbmRpZiAvLyBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVT
X1JFR0lTVEVSUyA+IDAKKworc3RhdGljIEpTQ2VsbCogY3JlYXRlRGlyZWN0QXJndW1lbnRzRHVy
aW5nRXhpdChDb250ZXh0JiBjb250ZXh0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5saW5lQ2Fs
bEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIEpTRnVuY3Rpb24qIGNhbGxlZSwgaW50MzJfdCBhcmd1
bWVudENvdW50KQoreworICAgIFZNJiB2bSA9ICpjb250ZXh0LmFyZzxWTSo+KCk7CisKKyAgICBB
U1NFUlQodm0uaGVhcC5pc0RlZmVycmVkKCkpOworCisgICAgaWYgKGlubGluZUNhbGxGcmFtZSkK
KyAgICAgICAgY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUo
aW5saW5lQ2FsbEZyYW1lKTsKKworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFyZ3VtZW50Q291bnQg
LSAxOworICAgIHVuc2lnbmVkIGNhcGFjaXR5ID0gc3RkOjptYXgobGVuZ3RoLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSAxKSk7CisgICAgRGlyZWN0
QXJndW1lbnRzKiByZXN1bHQgPSBEaXJlY3RBcmd1bWVudHM6OmNyZWF0ZSgKKyAgICAgICAgdm0s
IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmRpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSgpLCBs
ZW5ndGgsIGNhcGFjaXR5KTsKKworICAgIHJlc3VsdC0+Y2FsbGVlKCkuc2V0KHZtLCByZXN1bHQs
IGNhbGxlZSk7CisKKyAgICB2b2lkKiBmcmFtZUJhc2UgPSBjb250ZXh0LmZwPFJlZ2lzdGVyKj4o
KSArIChpbmxpbmVDYWxsRnJhbWUgPyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0IDogMCk7
CisgICAgRnJhbWUgZnJhbWUoZnJhbWVCYXNlLCBjb250ZXh0LnN0YWNrKCkpOworICAgIGZvciAo
dW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykKKyAgICAgICAgcmVzdWx0LT5zZXRJbmRleFF1aWNr
bHkodm0sIGksIGZyYW1lLmFyZ3VtZW50KGkpKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3N0YXRpYyBKU0NlbGwqIGNyZWF0ZUNsb25lZEFyZ3VtZW50c0R1cmluZ0V4aXQoQ29udGV4dCYg
Y29udGV4dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2Fs
bEZyYW1lLCBKU0Z1bmN0aW9uKiBjYWxsZWUsIGludDMyX3QgYXJndW1lbnRDb3VudCkKK3sKKyAg
ICBWTSYgdm0gPSAqY29udGV4dC5hcmc8Vk0qPigpOworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGNv
bnRleHQuZnA8RXhlY1N0YXRlKj4oKTsKKworICAgIEFTU0VSVCh2bS5oZWFwLmlzRGVmZXJyZWQo
KSk7CisKKyAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKQorICAgICAgICBjb2RlQmxvY2sgPSBiYXNl
bGluZUNvZGVCbG9ja0ZvcklubGluZUNhbGxGcmFtZShpbmxpbmVDYWxsRnJhbWUpOworCisgICAg
dW5zaWduZWQgbGVuZ3RoID0gYXJndW1lbnRDb3VudCAtIDE7CisgICAgQ2xvbmVkQXJndW1lbnRz
KiByZXN1bHQgPSBDbG9uZWRBcmd1bWVudHM6OmNyZWF0ZUVtcHR5KAorICAgICAgICB2bSwgY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Y2xvbmVkQXJndW1lbnRzU3RydWN0dXJlKCksIGNhbGxl
ZSwgbGVuZ3RoKTsKKworICAgIHZvaWQqIGZyYW1lQmFzZSA9IGNvbnRleHQuZnA8UmVnaXN0ZXIq
PigpICsgKGlubGluZUNhbGxGcmFtZSA/IGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgOiAw
KTsKKyAgICBGcmFtZSBmcmFtZShmcmFtZUJhc2UsIGNvbnRleHQuc3RhY2soKSk7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KQorICAgICAgICByZXN1bHQtPnB1dERpcmVjdElu
ZGV4KGV4ZWMsIGksIGZyYW1lLmFyZ3VtZW50KGkpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitPU1JFeGl0OjpPU1JFeGl0KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNv
dXJjZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSB2YWx1ZVByb2ZpbGUsIFNwZWN1bGF0
aXZlSklUKiBqaXQsIHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4
KQorICAgIDogT1NSRXhpdEJhc2Uoa2luZCwgaml0LT5tX29yaWdpbi5mb3JFeGl0LCBqaXQtPm1f
b3JpZ2luLnNlbWFudGljLCBqaXQtPm1fb3JpZ2luLndhc0hvaXN0ZWQpCisgICAgLCBtX2pzVmFs
dWVTb3VyY2UoanNWYWx1ZVNvdXJjZSkKKyAgICAsIG1fdmFsdWVQcm9maWxlKHZhbHVlUHJvZmls
ZSkKKyAgICAsIG1fcmVjb3ZlcnlJbmRleChyZWNvdmVyeUluZGV4KQorICAgICwgbV9zdHJlYW1J
bmRleChzdHJlYW1JbmRleCkKIHsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbGFiZWw7Ci0g
ICAgbGFiZWwubV9sYWJlbC5tX29mZnNldCA9IG1fcGF0Y2hhYmxlQ29kZU9mZnNldDsKLSAgICBt
X3BhdGNoYWJsZUNvZGVPZmZzZXQgPSBsaW5rQnVmZmVyLm9mZnNldE9mKGxhYmVsKTsKKyAgICBi
b29sIGNhbkV4aXQgPSBqaXQtPm1fb3JpZ2luLmV4aXRPSzsKKyAgICBpZiAoIWNhbkV4aXQgJiYg
aml0LT5tX2N1cnJlbnROb2RlKSB7CisgICAgICAgIEV4aXRNb2RlIGV4aXRNb2RlID0gbWF5RXhp
dChqaXQtPm1faml0LmdyYXBoKCksIGppdC0+bV9jdXJyZW50Tm9kZSk7CisgICAgICAgIGNhbkV4
aXQgPSBleGl0TW9kZSA9PSBFeGl0TW9kZTo6RXhpdHMgfHwgZXhpdE1vZGUgPT0gRXhpdE1vZGU6
OkV4aXRzRm9yRXhjZXB0aW9uczsKKyAgICB9CisgICAgREZHX0FTU0VSVChqaXQtPm1faml0Lmdy
YXBoKCksIGppdC0+bV9jdXJyZW50Tm9kZSwgY2FuRXhpdCk7CiB9CiAKLXZvaWQgT1NSRXhpdDo6
ZW1pdFJlc3RvcmVBcmd1bWVudHMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9wZXJhbmRzPFZh
bHVlUmVjb3Zlcnk+JiBvcGVyYW5kcykKK3N0YXRpYyB2b2lkIGVtaXRSZXN0b3JlQXJndW1lbnRz
KENvbnRleHQmIGNvbnRleHQsIENvZGVCbG9jayogY29kZUJsb2NrLCBERkc6OkpJVENvZGUqIGRm
Z0pJVENvZGUsIGNvbnN0IE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+JiBvcGVyYW5kcykKIHsKKyAg
ICBGcmFtZSBmcmFtZShjb250ZXh0LmZwKCksIGNvbnRleHQuc3RhY2soKSk7CisKICAgICBIYXNo
TWFwPE1pbmlmaWVkSUQsIGludD4gYWxyZWFkeUFsbG9jYXRlZEFyZ3VtZW50czsgLy8gTWFwcyBw
aGFudG9tIGFyZ3VtZW50cyBub2RlIElEIHRvIG9wZXJhbmQuCiAgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNpemUoKTsgKytpbmRleCkgewogICAgICAgICBjb25z
dCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IG9wZXJhbmRzW2luZGV4XTsKQEAgLTkyLDE0ICsy
NzUsMTIgQEAgdm9pZCBPU1JFeGl0OjplbWl0UmVzdG9yZUFyZ3VtZW50cyhDQ2FsbAogICAgICAg
ICBNaW5pZmllZElEIGlkID0gcmVjb3Zlcnkubm9kZUlEKCk7CiAgICAgICAgIGF1dG8gaXRlciA9
IGFscmVhZHlBbGxvY2F0ZWRBcmd1bWVudHMuZmluZChpZCk7CiAgICAgICAgIGlmIChpdGVyICE9
IGFscmVhZHlBbGxvY2F0ZWRBcmd1bWVudHMuZW5kKCkpIHsKLSAgICAgICAgICAgIEpTVmFsdWVS
ZWdzIHJlZ3MgPSBKU1ZhbHVlUmVnczo6d2l0aFR3b0F2YWlsYWJsZVJlZ3MoR1BSSW5mbzo6cmVn
VDAsIEdQUkluZm86OnJlZ1QxKTsKLSAgICAgICAgICAgIGppdC5sb2FkVmFsdWUoQ0NhbGxIZWxw
ZXJzOjphZGRyZXNzRm9yKGl0ZXItPnZhbHVlKSwgcmVncyk7Ci0gICAgICAgICAgICBqaXQuc3Rv
cmVWYWx1ZShyZWdzLCBDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAg
ICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBmcmFtZS5vcGVyYW5kKGl0ZXItPnZhbHVl
KSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIElubGluZUNh
bGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0KLSAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+
aml0Q29kZSgpLT5kZmcoKS0+bWluaWZpZWRERkcuYXQoaWQpLT5pbmxpbmVDYWxsRnJhbWUoKTsK
KyAgICAgICAgICAgIGRmZ0pJVENvZGUtPm1pbmlmaWVkREZHLmF0KGlkKS0+aW5saW5lQ2FsbEZy
YW1lKCk7CiAKICAgICAgICAgaW50IHN0YWNrT2Zmc2V0OwogICAgICAgICBpZiAoaW5saW5lQ2Fs
bEZyYW1lKQpAQCAtMTA3LDUzICsyODgsNDggQEAgdm9pZCBPU1JFeGl0OjplbWl0UmVzdG9yZUFy
Z3VtZW50cyhDQ2FsbAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzdGFja09mZnNldCA9IDA7
CiAKLSAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUgfHwgaW5saW5lQ2FsbEZyYW1lLT5pc0Ns
b3N1cmVDYWxsKSB7Ci0gICAgICAgICAgICBqaXQubG9hZFB0cigKLSAgICAgICAgICAgICAgICBB
c3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Ioc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojpj
YWxsZWUpLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGppdC5tb3ZlKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbVB0cihpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZVJlY292ZXJ5LmNvbnN0YW50
KCkuYXNDZWxsKCkpLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAg
fQorICAgICAgICBKU0Z1bmN0aW9uKiBjYWxsZWU7CisgICAgICAgIGlmICghaW5saW5lQ2FsbEZy
YW1lIHx8IGlubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkKKyAgICAgICAgICAgIGNhbGxl
ZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZnJhbWUub3BlcmFuZChzdGFja09mZnNldCArIENhbGxG
cmFtZVNsb3Q6OmNhbGxlZSkuYXNDZWxsKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBj
YWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3Zl
cnkuY29uc3RhbnQoKS5hc0NlbGwoKSk7CiAKLSAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUg
fHwgaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgewotICAgICAgICAgICAgaml0LmxvYWQz
MigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Ioc3RhY2tPZmZz
ZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwKLSAgICAgICAgICAgICAgICBHUFJJ
bmZvOjpyZWdUMSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBqaXQubW92ZSgKLSAg
ICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihpbmxpbmVDYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSwKLSAgICAgICAgICAgICAgICBHUFJJbmZv
OjpyZWdUMSk7Ci0gICAgICAgIH0KKyAgICAgICAgaW50MzJfdCBhcmd1bWVudENvdW50OworICAg
ICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSB8fCBpbmxpbmVDYWxsRnJhbWUtPmlzVmFyYXJncygp
KQorICAgICAgICAgICAgYXJndW1lbnRDb3VudCA9IGZyYW1lLm9wZXJhbmQ8aW50MzJfdD4oc3Rh
Y2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBQYXlsb2FkT2Zmc2V0KTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXJndW1lbnRDb3VudCA9IGlubGluZUNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CiAKLSAgICAgICAgaml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZSgKLSAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bVB0cihpbmxpbmVDYWxsRnJhbWUpLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEpOwor
ICAgICAgICBKU0NlbGwqIGFyZ3VtZW50c09iamVjdDsKICAgICAgICAgc3dpdGNoIChyZWNvdmVy
eS50ZWNobmlxdWUoKSkgewogICAgICAgICBjYXNlIERpcmVjdEFyZ3VtZW50c1RoYXRXZXJlTm90
Q3JlYXRlZDoKLSAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1
cmluZ0V4aXQpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgICAgICBhcmd1bWVudHNP
YmplY3QgPSBjcmVhdGVEaXJlY3RBcmd1bWVudHNEdXJpbmdFeGl0KGNvbnRleHQsIGNvZGVCbG9j
aywgaW5saW5lQ2FsbEZyYW1lLCBjYWxsZWUsIGFyZ3VtZW50Q291bnQpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQ2xvbmVkQXJndW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkOgot
ICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJpdHdp
c2VfY2FzdDx2b2lkKj4ob3BlcmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1lbnRzRHVyaW5nRXhpdCkp
LCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgICAgIGFyZ3VtZW50c09iamVjdCA9IGNy
ZWF0ZUNsb25lZEFyZ3VtZW50c0R1cmluZ0V4aXQoY29udGV4dCwgY29kZUJsb2NrLCBpbmxpbmVD
YWxsRnJhbWUsIGNhbGxlZSwgYXJndW1lbnRDb3VudCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBqaXQuY2FsbChHUFJJbmZv
Ojpub25BcmdHUFIwKTsKLSAgICAgICAgaml0LnN0b3JlQ2VsbChHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUiwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgZnJh
bWUuc2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVlKGFyZ3VtZW50c09iamVjdCkpOwogCiAgICAg
ICAgIGFscmVhZHlBbGxvY2F0ZWRBcmd1bWVudHMuYWRkKGlkLCBvcGVyYW5kKTsKICAgICB9CiB9
CiAKLXZvaWQgSklUX09QRVJBVElPTiBPU1JFeGl0Ojpjb21waWxlT1NSRXhpdChFeGVjU3RhdGUq
IGV4ZWMpCit2b2lkIE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KENvbnRleHQmIGNvbnRleHQpCiB7
Ci0gICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUoKnZtKTsKKyAgICBWTSYgdm0gPSAqY29udGV4dC5hcmc8Vk0qPigpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IGNvbnRleHQuZnA8RXhlY1N0YXRlKj4oKTsKKyAgICBBU1NFUlQoJmV4ZWMtPnZtKCkgPT0g
JnZtKTsKIAotICAgIGlmICh2bS0+Y2FsbEZyYW1lRm9yQ2F0Y2gpCi0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHZtLT5jYWxsRnJhbWVGb3JDYXRjaCA9PSBleGVjKTsKKyAgICBpZiAodm0uY2FsbEZy
YW1lRm9yQ2F0Y2gpIHsKKyAgICAgICAgZXhlYyA9IHZtLmNhbGxGcmFtZUZvckNhdGNoOworICAg
ICAgICBjb250ZXh0LmZwKCkgPSBleGVjOworICAgIH0KIAogICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7CkBAIC0xNjEs
ODEgKzMzNywxMDIgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIE9TUkV4aXQ6OmNvbXBpbGVPU1JFeAog
CiAgICAgLy8gSXQncyBzb3J0IG9mIHByZWZlcmFibGUgdGhhdCB3ZSBkb24ndCBHQyB3aGlsZSBp
biBoZXJlLiBBbnl3YXlzLCBkb2luZyBzbyB3b3VsZG4ndAogICAgIC8vIHJlYWxseSBiZSBwcm9m
aXRhYmxlLgotICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyh2bS0+aGVhcCk7CisgICAgRGVm
ZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOwogCi0gICAgdWludDMyX3QgZXhpdEluZGV4
ID0gdm0tPm9zckV4aXRJbmRleDsKLSAgICBPU1JFeGl0JiBleGl0ID0gY29kZUJsb2NrLT5qaXRD
b2RlKCktPmRmZygpLT5vc3JFeGl0W2V4aXRJbmRleF07CisgICAgdWludDMyX3QgZXhpdEluZGV4
ID0gdm0ub3NyRXhpdEluZGV4OworICAgIERGRzo6SklUQ29kZSogZGZnSklUQ29kZSA9IGNvZGVC
bG9jay0+aml0Q29kZSgpLT5kZmcoKTsKKyAgICBPU1JFeGl0JiBleGl0ID0gZGZnSklUQ29kZS0+
b3NyRXhpdFtleGl0SW5kZXhdOwogCi0gICAgaWYgKHZtLT5jYWxsRnJhbWVGb3JDYXRjaCkKLSAg
ICAgICAgQVNTRVJUKGV4aXQubV9raW5kID09IEdlbmVyaWNVbndpbmQpOwotICAgIGlmIChleGl0
LmlzRXhjZXB0aW9uSGFuZGxlcigpKQotICAgICAgICBBU1NFUlRfVU5VU0VEKHNjb3BlLCAhIXNj
b3BlLmV4Y2VwdGlvbigpKTsKLSAgICAKLSAgICBwcmVwYXJlQ29kZU9yaWdpbkZvck9TUkV4aXQo
ZXhlYywgZXhpdC5tX2NvZGVPcmlnaW4pOwotCi0gICAgLy8gQ29tcHV0ZSB0aGUgdmFsdWUgcmVj
b3Zlcmllcy4KLSAgICBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiBvcGVyYW5kczsKLSAgICBjb2Rl
QmxvY2stPmppdENvZGUoKS0+ZGZnKCktPnZhcmlhYmxlRXZlbnRTdHJlYW0ucmVjb25zdHJ1Y3Qo
Y29kZUJsb2NrLCBleGl0Lm1fY29kZU9yaWdpbiwgY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygp
LT5taW5pZmllZERGRywgZXhpdC5tX3N0cmVhbUluZGV4LCBvcGVyYW5kcyk7Ci0KLSAgICBTcGVj
dWxhdGlvblJlY292ZXJ5KiByZWNvdmVyeSA9IDA7Ci0gICAgaWYgKGV4aXQubV9yZWNvdmVyeUlu
ZGV4ICE9IFVJTlRfTUFYKQotICAgICAgICByZWNvdmVyeSA9ICZjb2RlQmxvY2stPmppdENvZGUo
KS0+ZGZnKCktPnNwZWN1bGF0aW9uUmVjb3ZlcnlbZXhpdC5tX3JlY292ZXJ5SW5kZXhdOwotCi0g
ICAgewotICAgICAgICBDQ2FsbEhlbHBlcnMgaml0KGNvZGVCbG9jayk7Ci0KLSAgICAgICAgaWYg
KGV4aXQubV9raW5kID09IEdlbmVyaWNVbndpbmQpIHsKLSAgICAgICAgICAgIC8vIFdlIGFyZSBh
Y3RpbmcgYXMgYSBkZWZhY3RvIG9wX2NhdGNoIGJlY2F1c2Ugd2UgYXJyaXZlIGhlcmUgZnJvbSBn
ZW5lcmljVW53aW5kKCkuCi0gICAgICAgICAgICAvLyBTbywgd2UgbXVzdCByZXN0b3JlIG91ciBj
YWxsIGZyYW1lIGFuZCBzdGFjayBwb2ludGVyLgotICAgICAgICAgICAgaml0LnJlc3RvcmVDYWxs
ZWVTYXZlc0Zyb21WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcigqdm0pOwotICAgICAgICAg
ICAgaml0LmxvYWRQdHIodm0tPmFkZHJlc3NPZkNhbGxGcmFtZUZvckNhdGNoKCksIEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgfQotICAgICAgICBqaXQuYWRkUHRyKAotICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY29kZUJsb2NrLT5zdGFja1BvaW50
ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLAotICAgICAgICAgICAgR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAg
IEFTU0VSVCghdm0uY2FsbEZyYW1lRm9yQ2F0Y2ggfHwgZXhpdC5tX2tpbmQgPT0gR2VuZXJpY1Vu
d2luZCk7CisgICAgQVNTRVJUX1VOVVNFRChzY29wZSwgIWV4aXQuaXNFeGNlcHRpb25IYW5kbGVy
KCkgfHwgISFzY29wZS5leGNlcHRpb24oKSk7CisKKyAgICBpZiAoVU5MSUtFTFkoIWV4aXQuZXhp
dFN0YXRlKSkgeworICAgICAgICAvLyBXZSBvbmx5IG5lZWQgdG8gZXhlY3V0ZSB0aGlzIGJsb2Nr
IG9uY2UgZm9yIGVhY2ggT1NSRXhpdCByZWNvcmQuIFRoZSBjb21wdXRlZAorICAgICAgICAvLyBy
ZXN1bHRzIHdpbGwgYmUgY2FjaGVkIGluIHRoZSBPU1JFeGl0U3RhdGUgcmVjb3JkIGZvciB1c2Ug
b2YgdGhlIHJlc3Qgb2YgdGhlCisgICAgICAgIC8vIGV4aXQgcmFtcCBjb2RlLgorCisgICAgICAg
IC8vIEVuc3VyZSB3ZSBoYXZlIGJhc2VsaW5lIGNvZGVCbG9ja3MgdG8gT1NSIGV4aXQgdG8uCisg
ICAgICAgIHByZXBhcmVDb2RlT3JpZ2luRm9yT1NSRXhpdChleGVjLCBleGl0Lm1fY29kZU9yaWdp
bik7CisKKyAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IGNvZGVCbG9jay0+
YmFzZWxpbmVBbHRlcm5hdGl2ZSgpOworICAgICAgICBBU1NFUlQoYmFzZWxpbmVDb2RlQmxvY2st
PmppdFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisKKyAgICAgICAgLy8gQ29tcHV0
ZSB0aGUgdmFsdWUgcmVjb3Zlcmllcy4KKyAgICAgICAgT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4g
b3BlcmFuZHM7CisgICAgICAgIGRmZ0pJVENvZGUtPnZhcmlhYmxlRXZlbnRTdHJlYW0ucmVjb25z
dHJ1Y3QoY29kZUJsb2NrLCBleGl0Lm1fY29kZU9yaWdpbiwgZGZnSklUQ29kZS0+bWluaWZpZWRE
RkcsIGV4aXQubV9zdHJlYW1JbmRleCwgb3BlcmFuZHMpOworCisgICAgICAgIFNwZWN1bGF0aW9u
UmVjb3ZlcnkqIHJlY292ZXJ5ID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGV4aXQubV9yZWNvdmVy
eUluZGV4ICE9IFVJTlRfTUFYKQorICAgICAgICAgICAgcmVjb3ZlcnkgPSAmZGZnSklUQ29kZS0+
c3BlY3VsYXRpb25SZWNvdmVyeVtleGl0Lm1fcmVjb3ZlcnlJbmRleF07CisKKyAgICAgICAgaW50
MzJfdCBhY3RpdmVUaHJlc2hvbGQgPSBiYXNlbGluZUNvZGVCbG9jay0+YWRqdXN0ZWRDb3VudGVy
VmFsdWUoT3B0aW9uczo6dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAoKSk7Cisg
ICAgICAgIGRvdWJsZSBhZGp1c3RlZFRocmVzaG9sZCA9IGFwcGx5TWVtb3J5VXNhZ2VIZXVyaXN0
aWNzQW5kQ29udmVydFRvSW50KGFjdGl2ZVRocmVzaG9sZCwgYmFzZWxpbmVDb2RlQmxvY2spOwor
ICAgICAgICBBU1NFUlQoYWRqdXN0ZWRUaHJlc2hvbGQgPiAwKTsKKyAgICAgICAgYWRqdXN0ZWRU
aHJlc2hvbGQgPSBCYXNlbGluZUV4ZWN1dGlvbkNvdW50ZXI6OmNsaXBwZWRUaHJlc2hvbGQoY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgYWRqdXN0ZWRUaHJlc2hvbGQpOworCisgICAgICAgIENv
ZGVCbG9jayogY29kZUJsb2NrRm9yRXhpdCA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5k
QmFzZWxpbmVDb2RlQmxvY2soZXhpdC5tX2NvZGVPcmlnaW4sIGJhc2VsaW5lQ29kZUJsb2NrKTsK
KyAgICAgICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4gZGVjb2RlZENvZGVNYXA7
CisgICAgICAgIGNvZGVCbG9ja0ZvckV4aXQtPmppdENvZGVNYXAoKS0+ZGVjb2RlKGRlY29kZWRD
b2RlTWFwKTsKKworICAgICAgICBCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQqIG1hcHBpbmcgPSBi
aW5hcnlTZWFyY2g8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0LCB1bnNpZ25lZD4oZGVjb2RlZENv
ZGVNYXAsIGRlY29kZWRDb2RlTWFwLnNpemUoKSwgZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJ
bmRleCwgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0OjpnZXRCeXRlY29kZUluZGV4KTsKIAotICAg
ICAgICBqaXQuaml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKTsKKyAgICAgICAgQVNTRVJUKG1h
cHBpbmcpOworICAgICAgICBBU1NFUlQobWFwcGluZy0+bV9ieXRlY29kZUluZGV4ID09IGV4aXQu
bV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOwogCi0gICAgICAgIGlmIChVTkxJS0VMWSh2bS0+
bV9wZXJCeXRlY29kZVByb2ZpbGVyICYmIGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmdDb21tb24o
KS0+Y29tcGlsYXRpb24pKSB7Ci0gICAgICAgICAgICBQcm9maWxlcjo6RGF0YWJhc2UmIGRhdGFi
YXNlID0gKnZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXI7CisgICAgICAgIHB0cmRpZmZfdCBmaW5h
bFN0YWNrUG9pbnRlck9mZnNldCA9IGNvZGVCbG9ja0ZvckV4aXQtPnN0YWNrUG9pbnRlck9mZnNl
dCgpICogc2l6ZW9mKFJlZ2lzdGVyKTsKKworICAgICAgICB2b2lkKiBqdW1wVGFyZ2V0ID0gY29k
ZUJsb2NrRm9yRXhpdC0+aml0Q29kZSgpLT5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KG1hcHBp
bmctPm1fbWFjaGluZUNvZGVPZmZzZXQpOworCisgICAgICAgIGV4aXQuZXhpdFN0YXRlID0gYWRv
cHRSZWYobmV3IE9TUkV4aXRTdGF0ZShleGl0LCBjb2RlQmxvY2ssIGJhc2VsaW5lQ29kZUJsb2Nr
LCBvcGVyYW5kcywgcmVjb3ZlcnksIGZpbmFsU3RhY2tQb2ludGVyT2Zmc2V0LCBhY3RpdmVUaHJl
c2hvbGQsIGFkanVzdGVkVGhyZXNob2xkLCBqdW1wVGFyZ2V0KSk7CisKKyAgICAgICAgaWYgKFVO
TElLRUxZKHZtLm1fcGVyQnl0ZWNvZGVQcm9maWxlciAmJiBjb2RlQmxvY2stPmppdENvZGUoKS0+
ZGZnQ29tbW9uKCktPmNvbXBpbGF0aW9uKSkgeworICAgICAgICAgICAgUHJvZmlsZXI6OkRhdGFi
YXNlJiBkYXRhYmFzZSA9ICp2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXI7CiAgICAgICAgICAgICBQ
cm9maWxlcjo6Q29tcGlsYXRpb24qIGNvbXBpbGF0aW9uID0gY29kZUJsb2NrLT5qaXRDb2RlKCkt
PmRmZ0NvbW1vbigpLT5jb21waWxhdGlvbi5nZXQoKTsKIAogICAgICAgICAgICAgUHJvZmlsZXI6
Ok9TUkV4aXQqIHByb2ZpbGVyRXhpdCA9IGNvbXBpbGF0aW9uLT5hZGRPU1JFeGl0KAogICAgICAg
ICAgICAgICAgIGV4aXRJbmRleCwgUHJvZmlsZXI6Ok9yaWdpblN0YWNrKGRhdGFiYXNlLCBjb2Rl
QmxvY2ssIGV4aXQubV9jb2RlT3JpZ2luKSwKICAgICAgICAgICAgICAgICBleGl0Lm1fa2luZCwg
ZXhpdC5tX2tpbmQgPT0gVW5jb3VudGFibGVJbnZhbGlkYXRpb24pOwotICAgICAgICAgICAgaml0
LmFkZDY0KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBDQ2FsbEhlbHBlcnM6OkFic29s
dXRlQWRkcmVzcyhwcm9maWxlckV4aXQtPmNvdW50ZXJBZGRyZXNzKCkpKTsKKyAgICAgICAgICAg
IGV4aXQuZXhpdFN0YXRlLT5wcm9maWxlckV4aXQgPSBwcm9maWxlckV4aXQ7CiAgICAgICAgIH0K
IAotICAgICAgICBjb21waWxlRXhpdChqaXQsICp2bSwgZXhpdCwgb3BlcmFuZHMsIHJlY292ZXJ5
KTsKLQotICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgY29kZUJsb2NrKTsKLSAg
ICAgICAgZXhpdC5tX2NvZGUgPSBGSU5BTElaRV9DT0RFX0lGKAotICAgICAgICAgICAgc2hvdWxk
RHVtcERpc2Fzc2VtYmx5KCkgfHwgT3B0aW9uczo6dmVyYm9zZU9TUigpIHx8IE9wdGlvbnM6OnZl
cmJvc2VERkdPU1JFeGl0KCksCi0gICAgICAgICAgICBwYXRjaEJ1ZmZlciwKLSAgICAgICAgICAg
ICgiREZHIE9TUiBleGl0ICMldSAoJXMsICVzKSBmcm9tICVzLCB3aXRoIG9wZXJhbmRzID0gJXMi
LAorICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dmVyYm9zZU9TUigpIHx8IE9wdGlvbnM6
OnZlcmJvc2VERkdPU1JFeGl0KCkpKSB7CisgICAgICAgICAgICBkYXRhTG9nRigiREZHIE9TUiBl
eGl0ICMldSAoJXMsICVzKSBmcm9tICVzLCB3aXRoIG9wZXJhbmRzID0gJXNcbiIsCiAgICAgICAg
ICAgICAgICAgZXhpdEluZGV4LCB0b0NTdHJpbmcoZXhpdC5tX2NvZGVPcmlnaW4pLmRhdGEoKSwK
ICAgICAgICAgICAgICAgICBleGl0S2luZFRvU3RyaW5nKGV4aXQubV9raW5kKSwgdG9DU3RyaW5n
KCpjb2RlQmxvY2spLmRhdGEoKSwKLSAgICAgICAgICAgICAgICB0b0NTdHJpbmcoaWdub3JpbmdD
b250ZXh0PER1bXBDb250ZXh0PihvcGVyYW5kcykpLmRhdGEoKSkpOworICAgICAgICAgICAgICAg
IHRvQ1N0cmluZyhpZ25vcmluZ0NvbnRleHQ8RHVtcENvbnRleHQ+KG9wZXJhbmRzKSkuZGF0YSgp
KTsKKyAgICAgICAgfQogICAgIH0KIAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChl
eGl0LmNvZGVMb2NhdGlvbkZvclJlcGF0Y2goY29kZUJsb2NrKSwgQ29kZUxvY2F0aW9uTGFiZWwo
ZXhpdC5tX2NvZGUuY29kZSgpKSk7CisgICAgT1NSRXhpdFN0YXRlJiBleGl0U3RhdGUgPSAqZXhp
dC5leGl0U3RhdGUuZ2V0KCk7CisgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IGV4
aXRTdGF0ZS5iYXNlbGluZUNvZGVCbG9jazsKKyAgICBBU1NFUlQoYmFzZWxpbmVDb2RlQmxvY2st
PmppdFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CiAKLSAgICB2bS0+b3NyRXhpdEp1
bXBEZXN0aW5hdGlvbiA9IGV4aXQubV9jb2RlLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOwot
fQorICAgIE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+JiBvcGVyYW5kcyA9IGV4aXRTdGF0ZS5vcGVy
YW5kczsKKyAgICBTcGVjdWxhdGlvblJlY292ZXJ5KiByZWNvdmVyeSA9IGV4aXRTdGF0ZS5yZWNv
dmVyeTsKIAotdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0m
IHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYg
b3BlcmFuZHMsIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5KQotewotICAgIGppdC5qaXRB
c3NlcnRUYWdzSW5QbGFjZSgpOworICAgIGlmIChleGl0Lm1fa2luZCA9PSBHZW5lcmljVW53aW5k
KSB7CisgICAgICAgIC8vIFdlIGFyZSBhY3RpbmcgYXMgYSBkZWZhY3RvIG9wX2NhdGNoIGJlY2F1
c2Ugd2UgYXJyaXZlIGhlcmUgZnJvbSBnZW5lcmljVW53aW5kKCkuCisgICAgICAgIC8vIFNvLCB3
ZSBtdXN0IHJlc3RvcmUgb3VyIGNhbGwgZnJhbWUgYW5kIHN0YWNrIHBvaW50ZXIuCisgICAgICAg
IHJlc3RvcmVDYWxsZWVTYXZlc0Zyb21WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihjb250
ZXh0KTsKKyAgICAgICAgQVNTRVJUKGNvbnRleHQuZnAoKSA9PSB2bS5jYWxsRnJhbWVGb3JDYXRj
aCk7CisgICAgfQorICAgIGNvbnRleHQuc3AoKSA9IGNvbnRleHQuZnA8dWludDhfdCo+KCkgKyAo
Y29kZUJsb2NrLT5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpOwogCi0g
ICAgLy8gUHJvLWZvcm1hIHN0dWZmLgotICAgIGlmIChPcHRpb25zOjpwcmludEVhY2hPU1JFeGl0
KCkpIHsKLSAgICAgICAgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvKiBkZWJ1Z0luZm8gPSBu
ZXcgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvOwotICAgICAgICBkZWJ1Z0luZm8tPmNvZGVC
bG9jayA9IGppdC5jb2RlQmxvY2soKTsKLSAgICAgICAgZGVidWdJbmZvLT5raW5kID0gZXhpdC5t
X2tpbmQ7Ci0gICAgICAgIGRlYnVnSW5mby0+Ynl0ZWNvZGVPZmZzZXQgPSBleGl0Lm1fY29kZU9y
aWdpbi5ieXRlY29kZUluZGV4OworICAgIEFTU0VSVCghKGNvbnRleHQuZnA8dWludHB0cl90Pigp
ICYgMHg3KSk7CiAKLSAgICAgICAgaml0LmRlYnVnQ2FsbCh2bSwgZGVidWdPcGVyYXRpb25Qcmlu
dFNwZWN1bGF0aW9uRmFpbHVyZSwgZGVidWdJbmZvKTsKLSAgICB9CisgICAgaWYgKGV4aXRTdGF0
ZS5wcm9maWxlckV4aXQpCisgICAgICAgIGV4aXRTdGF0ZS5wcm9maWxlckV4aXQtPmluY0NvdW50
KCk7CisKKyAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKKyAgICBGcmFtZSBmcmFtZShjcHUu
ZnAoKSwgY29udGV4dC5zdGFjaygpKTsKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgQVNTRVJU
KGNwdS5ncHIoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSA9PSBUYWdUeXBlTnVtYmVy
KTsKKyAgICBBU1NFUlQoY3B1LmdwcihHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpID09IFRhZ01h
c2spOworI2VuZGlmCisKKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6cHJpbnRFYWNoT1NSRXhp
dCgpKSkKKyAgICAgICAgcHJpbnRPU1JFeGl0KGNvbnRleHQsIHZtLm9zckV4aXRJbmRleCwgZXhp
dCk7CiAKICAgICAvLyBQZXJmb3JtIHNwZWN1bGF0aW9uIHJlY292ZXJ5LiBUaGlzIG9ubHkgY29t
ZXMgaW50byBwbGF5IHdoZW4gYW4gb3BlcmF0aW9uCiAgICAgLy8gc3RhcnRzIG11dGF0aW5nIHN0
YXRlIGJlZm9yZSB2ZXJpZnlpbmcgdGhlIHNwZWN1bGF0aW9uIGl0IGhhcyBhbHJlYWR5IG1hZGUu
CkBAIC0yNDMsMjIgKzQ0MCwyNCBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVs
cGVycyYgCiAgICAgaWYgKHJlY292ZXJ5KSB7CiAgICAgICAgIHN3aXRjaCAocmVjb3ZlcnktPnR5
cGUoKSkgewogICAgICAgICBjYXNlIFNwZWN1bGF0aXZlQWRkOgotICAgICAgICAgICAgaml0LnN1
YjMyKHJlY292ZXJ5LT5zcmMoKSwgcmVjb3ZlcnktPmRlc3QoKSk7CisgICAgICAgICAgICBjcHUu
Z3ByKHJlY292ZXJ5LT5kZXN0KCkpID0gY3B1Lmdwcjx1aW50MzJfdD4ocmVjb3ZlcnktPmRlc3Qo
KSkgLSBjcHUuZ3ByPHVpbnQzMl90PihyZWNvdmVyeS0+c3JjKCkpOwogI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgICAgICAgICBqaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIs
IHJlY292ZXJ5LT5kZXN0KCkpOworICAgICAgICAgICAgQVNTRVJUKCEoY3B1LmdwcihyZWNvdmVy
eS0+ZGVzdCgpKSA+PiAzMikpOworICAgICAgICAgICAgY3B1LmdwcihyZWNvdmVyeS0+ZGVzdCgp
KSB8PSBUYWdUeXBlTnVtYmVyOwogI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICBjYXNlIFNwZWN1bGF0aXZlQWRkSW1tZWRpYXRlOgotICAgICAgICAgICAgaml0LnN1YjMyKEFz
c2VtYmx5SGVscGVyczo6SW1tMzIocmVjb3ZlcnktPmltbWVkaWF0ZSgpKSwgcmVjb3ZlcnktPmRl
c3QoKSk7CisgICAgICAgICAgICBjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkpID0gKGNwdS5ncHI8
dWludDMyX3Q+KHJlY292ZXJ5LT5kZXN0KCkpIC0gcmVjb3ZlcnktPmltbWVkaWF0ZSgpKTsKICNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyLCByZWNvdmVyeS0+ZGVzdCgpKTsKKyAgICAgICAgICAgIEFTU0VSVCghKGNw
dS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgPj4gMzIpKTsKKyAgICAgICAgICAgIGNwdS5ncHIocmVj
b3ZlcnktPmRlc3QoKSkgfD0gVGFnVHlwZU51bWJlcjsKICNlbmRpZgogICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgY2FzZSBCb29sZWFuU3BlY3VsYXRpb25DaGVjazoKICNpZiBVU0UoSlNW
QUxVRTY0KQotICAgICAgICAgICAgaml0LnhvcjY0KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgcmVjb3ZlcnktPmRlc3QoKSk7
CisgICAgICAgICAgICBjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkpID0gY3B1LmdwcihyZWNvdmVy
eS0+ZGVzdCgpKSBeIFZhbHVlRmFsc2U7CiAjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwogCkBA
IC0yODEsMzk1ICs0ODAsMTEzIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxw
ZXJzJiAKICAgICAgICAgICAgIC8vIHByb3BlcnR5IGFjY2Vzcywgb3IgZHVlIHRvIGFuIGFycmF5
IHByb2ZpbGUpLgogCiAgICAgICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBleGl0Lm1f
Y29kZU9yaWdpbkZvckV4aXRQcm9maWxlOwotICAgICAgICAgICAgaWYgKEFycmF5UHJvZmlsZSog
YXJyYXlQcm9maWxlID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVPcmlnaW4pLT5nZXRB
cnJheVByb2ZpbGUoY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkgewotI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgICAgICAgICAgICAgR1BSUmVnIHVzZWRSZWdpc3RlcjsKLSAgICAgICAgICAgICAg
ICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaXNBZGRyZXNzKCkpCi0gICAgICAgICAgICAgICAg
ICAgIHVzZWRSZWdpc3RlciA9IGV4aXQubV9qc1ZhbHVlU291cmNlLmJhc2UoKTsKLSAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlciA9IGV4aXQubV9q
c1ZhbHVlU291cmNlLmdwcigpOwotI2Vsc2UKLSAgICAgICAgICAgICAgICBHUFJSZWcgdXNlZFJl
Z2lzdGVyMTsKLSAgICAgICAgICAgICAgICBHUFJSZWcgdXNlZFJlZ2lzdGVyMjsKLSAgICAgICAg
ICAgICAgICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaXNBZGRyZXNzKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgdXNlZFJlZ2lzdGVyMSA9IGV4aXQubV9qc1ZhbHVlU291cmNlLmJhc2UoKTsK
LSAgICAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVyMiA9IEludmFsaWRHUFJSZWc7Ci0gICAg
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVyMSA9
IGV4aXQubV9qc1ZhbHVlU291cmNlLnBheWxvYWRHUFIoKTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmhhc0tub3duVGFnKCkpCi0gICAgICAgICAgICAgICAg
ICAgICAgICB1c2VkUmVnaXN0ZXIyID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVyMiA9IGV4aXQubV9q
c1ZhbHVlU291cmNlLnRhZ0dQUigpOwotICAgICAgICAgICAgICAgIH0KLSNlbmRpZgotCi0gICAg
ICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2gxOwotICAgICAgICAgICAgICAgIEdQUlJlZyBzY3Jh
dGNoMjsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgICAgIHNjcmF0Y2gxID0gQXNz
ZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKHVzZWRSZWdpc3Rlcik7Ci0gICAgICAgICAg
ICAgICAgc2NyYXRjaDIgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIodXNlZFJl
Z2lzdGVyLCBzY3JhdGNoMSk7Ci0jZWxzZQotICAgICAgICAgICAgICAgIHNjcmF0Y2gxID0gQXNz
ZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKHVzZWRSZWdpc3RlcjEsIHVzZWRSZWdpc3Rl
cjIpOwotICAgICAgICAgICAgICAgIHNjcmF0Y2gyID0gQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RT
Y3JhdGNoR1BSKHVzZWRSZWdpc3RlcjEsIHVzZWRSZWdpc3RlcjIsIHNjcmF0Y2gxKTsKLSNlbmRp
ZgotCi0gICAgICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSkgewotICAgICAgICAgICAgICAgICAg
ICBqaXQucHVzaFRvU2F2ZShzY3JhdGNoMSk7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5wdXNo
VG9TYXZlKHNjcmF0Y2gyKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICBqaXQucHVzaChzY3JhdGNoMSk7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5wdXNo
KHNjcmF0Y2gyKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBHUFJSZWcg
dmFsdWU7Ci0gICAgICAgICAgICAgICAgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmlzQWRkcmVz
cygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gc2NyYXRjaDE7Ci0gICAgICAgICAg
ICAgICAgICAgIGppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhleGl0Lm1fanNW
YWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSksIHZhbHVlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBleGl0Lm1fanNWYWx1ZVNvdXJjZS5wYXlsb2Fk
R1BSKCk7Ci0KLSAgICAgICAgICAgICAgICBqaXQubG9hZDMyKEFzc2VtYmx5SGVscGVyczo6QWRk
cmVzcyh2YWx1ZSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaDEpOwotICAg
ICAgICAgICAgICAgIGppdC5zdG9yZTMyKHNjcmF0Y2gxLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NP
Zkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAg
ICAgICBqaXQubG9hZDgoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6Omlu
ZGV4aW5nVHlwZUFuZE1pc2NPZmZzZXQoKSksIHNjcmF0Y2gxKTsKLSNlbHNlCi0gICAgICAgICAg
ICAgICAgaml0LmxvYWQ4KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhzY3JhdGNoMSwgU3RydWN0
dXJlOjppbmRleGluZ1R5cGVJbmNsdWRpbmdIaXN0b3J5T2Zmc2V0KCkpLCBzY3JhdGNoMSk7Ci0j
ZW5kaWYKLSAgICAgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW0zMigxKSwgc2NyYXRjaDIpOwotICAgICAgICAgICAgICAgIGppdC5sc2hpZnQzMihzY3JhdGNo
MSwgc2NyYXRjaDIpOwotICAgICAgICAgICAgICAgIGppdC5vcjMyKHNjcmF0Y2gyLCBBc3NlbWJs
eUhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkFycmF5TW9k
ZXMoKSkpOwotCi0gICAgICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSkgewotICAgICAgICAgICAg
ICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2gyKTsKLSAgICAgICAgICAgICAgICAgICAg
aml0LnBvcFRvUmVzdG9yZShzY3JhdGNoMSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgaml0LnBvcChzY3JhdGNoMik7Ci0gICAgICAgICAgICAgICAgICAg
IGppdC5wb3Aoc2NyYXRjaDEpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIENvZGVC
bG9jayogcHJvZmlsZWRDb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJh
c2VsaW5lQ29kZUJsb2NrKGNvZGVPcmlnaW4sIGJhc2VsaW5lQ29kZUJsb2NrKTsKKyAgICAgICAg
ICAgIGlmIChBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IHByb2ZpbGVkQ29kZUJsb2NrLT5n
ZXRBcnJheVByb2ZpbGUoY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkgeworICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0ganNWYWx1ZUZvcihjcHUsIGV4aXQubV9qc1ZhbHVl
U291cmNlKS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAgICAgICAgICBhcnJheVBy
b2ZpbGUtPm9ic2VydmVTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gdXNlIGFycmF5TW9kZUZyb21TdHJ1Y3R1cmUoKSB0
byBkZXRlcm1pbmUgdGhlIG9ic2VydmVkIEFycmF5TW9kZSBoZXJlLgorICAgICAgICAgICAgICAg
IC8vIEhvd2V2ZXIsIGN1cnJlbnRseSwgZG9pbmcgc28gd291bGQgcmVzdWx0IGluIGEgcGRmanMg
cHJlZm9ybWFuY2UgcmVncmVzc2lvbi4KKyAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDczCisgICAgICAgICAgICAgICAgYXJyYXlQ
cm9maWxlLT5vYnNlcnZlQXJyYXlNb2RlKGFzQXJyYXlNb2RlcyhzdHJ1Y3R1cmUtPmluZGV4aW5n
VHlwZSgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBwcm9maWxlID0gZXhpdC5tX3ZhbHVlUHJvZmlsZSkgewot
I2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2Uu
aXNBZGRyZXNzKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBiZSBzdXJlIHRoYXQg
d2UgaGF2ZSBhIHNwYXJlIHJlZ2lzdGVyLiBTbyB1c2UgdGhlIHRhZ1R5cGVOdW1iZXJSZWdpc3Rl
ciwKLSAgICAgICAgICAgICAgICAvLyBzaW5jZSB3ZSBrbm93IGhvdyB0byByZXN0b3JlIGl0Lgot
ICAgICAgICAgICAgICAgIGppdC5sb2FkNjQoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKGV4aXQu
bV9qc1ZhbHVlU291cmNlLmFzQWRkcmVzcygpKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lz
dGVyKTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFs
dWVSZWdzKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwotICAgICAgICAgICAgICAg
IGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KFRhZ1R5cGVOdW1iZXIpLCBH
UFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhleGl0
Lm1fanNWYWx1ZVNvdXJjZS5ncHIoKSkpOwotI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCi0g
ICAgICAgICAgICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaXNBZGRyZXNzKCkpIHsKLSAgICAg
ICAgICAgICAgICAvLyBTYXZlIGEgcmVnaXN0ZXIgc28gd2UgY2FuIHVzZSBpdC4KLSAgICAgICAg
ICAgICAgICBHUFJSZWcgc2NyYXRjaFBheWxvYWQgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNj
cmF0Y2hHUFIoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYmFzZSgpKTsKLSAgICAgICAgICAgICAgICBH
UFJSZWcgc2NyYXRjaFRhZyA9IEFzc2VtYmx5SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUihleGl0
Lm1fanNWYWx1ZVNvdXJjZS5iYXNlKCksIHNjcmF0Y2hQYXlsb2FkKTsKLSAgICAgICAgICAgICAg
ICBqaXQucHVzaFRvU2F2ZShzY3JhdGNoUGF5bG9hZCk7Ci0gICAgICAgICAgICAgICAgaml0LnB1
c2hUb1NhdmUoc2NyYXRjaFRhZyk7Ci0KLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyBzY3Jh
dGNoKHNjcmF0Y2hUYWcsIHNjcmF0Y2hQYXlsb2FkKTsKLSAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICBqaXQubG9hZFZhbHVlKGV4aXQubV9qc1ZhbHVlU291cmNlLmFzQWRkcmVzcygp
LCBzY3JhdGNoKTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQs
IHNjcmF0Y2gpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jl
c3RvcmUoc2NyYXRjaFRhZyk7Ci0gICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3Jh
dGNoUGF5bG9hZCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNl
Lmhhc0tub3duVGFnKCkpIHsKLSAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaFRhZyA9IEFz
c2VtYmx5SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUihleGl0Lm1fanNWYWx1ZVNvdXJjZS5wYXls
b2FkR1BSKCkpOwotICAgICAgICAgICAgICAgIGppdC5wdXNoVG9TYXZlKHNjcmF0Y2hUYWcpOwot
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGV4
aXQubV9qc1ZhbHVlU291cmNlLnRhZygpKSwgc2NyYXRjaFRhZyk7Ci0gICAgICAgICAgICAgICAg
SlNWYWx1ZVJlZ3MgdmFsdWUoc2NyYXRjaFRhZywgZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5bG9h
ZEdQUigpKTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIHZh
bHVlKTsKLSAgICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2hUYWcpOwotICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUo
aml0LCBleGl0Lm1fanNWYWx1ZVNvdXJjZS5yZWdzKCkpOwotI2VuZGlmIC8vIFVTRShKU1ZBTFVF
NjQpCi0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBXaGF0IGZvbGxvd3MgaXMgYW4gaW50ZW50
aW9uYWxseSBzaW1wbGUgT1NSIGV4aXQgaW1wbGVtZW50YXRpb24gdGhhdCBnZW5lcmF0ZXMKLSAg
ICAvLyBmYWlybHkgcG9vciBjb2RlIGJ1dCBpcyB2ZXJ5IGVhc3kgdG8gaGFjay4gSW4gcGFydGlj
dWxhciwgaXQgZHVtcHMgYWxsIHN0YXRlIHRoYXQKLSAgICAvLyBuZWVkcyBjb252ZXJzaW9uIGlu
dG8gYSBzY3JhdGNoIGJ1ZmZlciBzbyB0aGF0IGluIHN0ZXAgNiwgd2hlcmUgd2UgYWN0dWFsbHkg
ZG8gdGhlCi0gICAgLy8gY29udmVyc2lvbnMsIHdlIGtub3cgdGhhdCBhbGwgdGVtcCByZWdpc3Rl
cnMgYXJlIGZyZWUgdG8gdXNlIGFuZCB0aGUgdmFyaWFibGUgaXMKLSAgICAvLyBkZWZpbml0ZWx5
IGluIGEgd2VsbC1rbm93biBzcG90IGluIHRoZSBzY3JhdGNoIGJ1ZmZlciByZWdhcmRsZXNzIG9m
IHdoZXRoZXIgaXQgaGFkCi0gICAgLy8gb3JpZ2luYWxseSBiZWVuIGluIGEgcmVnaXN0ZXIgb3Ig
c3BpbGxlZC4gVGhpcyBhbGxvd3MgdXMgdG8gZGVjb3VwbGUgIndoZXJlIHdhcwotICAgIC8vIHRo
ZSB2YXJpYWJsZSIgZnJvbSAiaG93IHdhcyBpdCByZXByZXNlbnRlZCIuIENvbnNpZGVyIHRoYXQg
dGhlCi0gICAgLy8gSW50MzJEaXNwbGFjZWRJbkpTU3RhY2sgcmVjb3Zlcnk6IGl0IHRlbGxzIHVz
IHRoYXQgdGhlIHZhbHVlIGlzIGluIGEKLSAgICAvLyBwYXJ0aWN1bGFyIHBsYWNlIGFuZCB0aGF0
IHRoYXQgcGxhY2UgaG9sZHMgYW4gdW5ib3hlZCBpbnQzMi4gV2UgaGF2ZSB0d28gZGlmZmVyZW50
Ci0gICAgLy8gcGxhY2VzIHRoYXQgYSB2YWx1ZSBjb3VsZCBiZSAoZGlzcGxhY2VkLCByZWdpc3Rl
cikgYW5kIGEgYnVuY2ggb2YgZGlmZmVyZW50Ci0gICAgLy8gd2F5cyBvZiByZXByZXNlbnRpbmcg
YSB2YWx1ZS4gVGhlIG51bWJlciBvZiByZWNvdmVyaWVzIGlzIHR3byAqIGEgYnVuY2guIFRoZSBj
b2RlCi0gICAgLy8gYmVsb3cgbWVhbnMgdGhhdCB3ZSBoYXZlIHRvIGhhdmUgdHdvICsgYSBidW5j
aCBjYXNlcyByYXRoZXIgdGhhbiB0d28gKiBhIGJ1bmNoLgotICAgIC8vIE9uY2Ugd2UgaGF2ZSBs
b2FkZWQgdGhlIHZhbHVlIGZyb20gd2hlcmV2ZXIgaXQgd2FzLCB0aGUgcmVib3hpbmcgaXMgdGhl
IHNhbWUKLSAgICAvLyByZWdhcmRsZXNzIG9mIGl0cyBsb2NhdGlvbi4gTGlrZXdpc2UsIGJlZm9y
ZSB3ZSBkbyB0aGUgcmVib3hpbmcsIHRoZSB3YXkgd2UgZ2V0IHRvCi0gICAgLy8gdGhlIHZhbHVl
IChpLmUuIHdoZXJlIHdlIGxvYWQgaXQgZnJvbSkgaXMgdGhlIHNhbWUgcmVnYXJkbGVzcyBvZiBp
dHMgdHlwZS4gQmVjYXVzZQotICAgIC8vIHRoZSBjb2RlIGJlbG93IGFsd2F5cyBkdW1wcyBldmVy
eXRoaW5nIGludG8gYSBzY3JhdGNoIGJ1ZmZlciBmaXJzdCwgdGhlIHR3bwotICAgIC8vIHF1ZXN0
aW9ucyBiZWNvbWUgb3J0aG9nb25hbCwgd2hpY2ggc2ltcGxpZmllcyBhZGRpbmcgbmV3IHR5cGVz
IGFuZCBhZGRpbmcgbmV3Ci0gICAgLy8gbG9jYXRpb25zLgotICAgIC8vCi0gICAgLy8gVGhpcyBy
YWlzZXMgdGhlIHF1ZXN0aW9uOiBkb2VzIHVzaW5nIHN1Y2ggYSBzdWJvcHRpbWFsIGltcGxlbWVu
dGF0aW9uIG9mIE9TUiBleGl0LAotICAgIC8vIHdoZXJlIHdlIGFsd2F5cyBlbWl0IGNvZGUgdG8g
ZHVtcCBhbGwgc3RhdGUgaW50byBhIHNjcmF0Y2ggYnVmZmVyIG9ubHkgdG8gdGhlbgotICAgIC8v
IGR1bXAgaXQgcmlnaHQgYmFjayBpbnRvIHRoZSBzdGFjaywgaHVydCB1cyBpbiBhbnkgd2F5PyBU
aGUgYXNud2VyIGlzIHRoYXQgT1NSIGV4aXRzCi0gICAgLy8gYXJlIHJhcmUuIE91ciB0aWVyaW5n
IHN0cmF0ZWd5IGVuc3VyZXMgdGhpcy4gVGhpcyBpcyBiZWNhdXNlIGlmIGFuIE9TUiBleGl0IGlz
Ci0gICAgLy8gdGFrZW4gbW9yZSB0aGFuIH4xMDAgdGltZXMsIHdlIGpldHRpc29uIHRoZSBERkcg
Y29kZSBibG9jayBhbG9uZyB3aXRoIGFsbCBvZiBpdHMKLSAgICAvLyBleGl0cy4gSXQgaXMgaW1w
b3NzaWJsZSBmb3IgYW4gT1NSIGV4aXQgLSBpLmUuIHRoZSBjb2RlIHdlIGNvbXBpbGUgYmVsb3cg
LSB0bwotICAgIC8vIGV4ZWN1dGUgZnJlcXVlbnRseSBlbm91Z2ggZm9yIHRoZSBjb2RlZ2VuIHRv
IG1hdHRlciB0aGF0IG11Y2guIEl0IHByb2JhYmx5IG1hdHRlcnMKLSAgICAvLyBlbm91Z2ggdGhh
dCB3ZSBkb24ndCB3YW50IHRvIHR1cm4gdGhpcyBpbnRvIHNvbWUgc3VwZXItc2xvdyBmdW5jdGlv
biBjYWxsLCBidXQgc28KLSAgICAvLyBsb25nIGFzIHdlJ3JlIGdlbmVyYXRpbmcgc3RyYWlnaHQt
bGluZSBjb2RlLCB0aGF0IGNvZGUgY2FuIGJlIHByZXR0eSBiYWQuIEFsc28KLSAgICAvLyBiZWNh
dXNlIHdlIHRlbmQgdG8gZXhpdCBvbmx5IGFsb25nIG9uZSBPU1IgZXhpdCBmcm9tIGFueSBERkcg
Y29kZSBibG9jayAtIHRoYXQncyBhbgotICAgIC8vIGVtcGlyaWNhbCByZXN1bHQgdGhhdCB3ZSdy
ZSBleHRyZW1lbHkgY29uZmlkZW50IGFib3V0IC0gdGhlIGNvZGUgc2l6ZSBvZiB0aGlzCi0gICAg
Ly8gZG9lc24ndCBtYXR0ZXIgbXVjaC4gSGVuY2UgYW55IGF0dGVtcHQgdG8gb3B0aW1pemUgdGhl
IGNvZGVnZW4gaGVyZSBpcyBqdXN0IHB1cmVseQotICAgIC8vIGhhcm1mdWwgdG8gdGhlIHN5c3Rl
bTogaXQgcHJvYmFibHkgd29uJ3QgcmVkdWNlIGVpdGhlciBuZXQgbWVtb3J5IHVzYWdlIG9yIG5l
dAotICAgIC8vIGV4ZWN1dGlvbiB0aW1lLiBJdCB3aWxsIG9ubHkgcHJldmVudCB1cyBmcm9tIGNs
ZWFubHkgZGVjb3VwbGluZyAid2hlcmUgd2FzIHRoZQotICAgIC8vIHZhcmlhYmxlIiBmcm9tICJo
b3cgd2FzIGl0IHJlcHJlc2VudGVkIiwgd2hpY2ggd2lsbCBtYWtlIGl0IG1vcmUgZGlmZmljdWx0
IHRvIGFkZAotICAgIC8vIGZlYXR1cmVzIGluIHRoZSBmdXR1cmUgYW5kIGl0IHdpbGwgbWFrZSBp
dCBoYXJkZXIgdG8gcmVhc29uIGFib3V0IGJ1Z3MuCi0KLSAgICAvLyBTYXZlIGFsbCBzdGF0ZSBm
cm9tIEdQUnMgaW50byB0aGUgc2NyYXRjaCBidWZmZXIuCi0KLSAgICBTY3JhdGNoQnVmZmVyKiBz
Y3JhdGNoQnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZlckZvclNpemUoc2l6ZW9mKEVuY29kZWRKU1Zh
bHVlKSAqIG9wZXJhbmRzLnNpemUoKSk7Ci0gICAgRW5jb2RlZEpTVmFsdWUqIHNjcmF0Y2ggPSBz
Y3JhdGNoQnVmZmVyID8gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihzY3JhdGNoQnVmZmVy
LT5kYXRhQnVmZmVyKCkpIDogMDsKLQotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXgg
PCBvcGVyYW5kcy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVy
eSYgcmVjb3ZlcnkgPSBvcGVyYW5kc1tpbmRleF07Ci0KLSAgICAgICAgc3dpdGNoIChyZWNvdmVy
eS50ZWNobmlxdWUoKSkgewotICAgICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgotICAgICAg
ICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgY2Fz
ZSBJbkdQUjoKLSAgICAgICAgY2FzZSBVbmJveGVkSW50NTJJbkdQUjoKLSAgICAgICAgY2FzZSBV
bmJveGVkU3RyaWN0SW50NTJJbkdQUjoKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KHJlY292ZXJ5
LmdwcigpLCBzY3JhdGNoICsgaW5kZXgpOwotICAgICAgICAgICAgYnJlYWs7Ci0jZWxzZQotICAg
ICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigK
LSAgICAgICAgICAgICAgICByZWNvdmVyeS5ncHIoKSwKLSAgICAgICAgICAgICAgICAmYml0d2lz
ZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMu
cGF5bG9hZCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICBjYXNl
IEluUGFpcjoKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIHJlY292
ZXJ5LnRhZ0dQUigpLAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVl
RGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy50YWcpOwotICAgICAgICAgICAg
aml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgcmVjb3ZlcnkucGF5bG9hZEdQUigpLAotICAg
ICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0
Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkKTsKLSAgICAgICAgICAgIGJyZWFrOwotI2VuZGlm
Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgLy8gQW5kIHZvaWxhLCBhbGwgR1BScyBhcmUgZnJlZSB0byByZXVzZS4KLQotICAg
IC8vIFNhdmUgYWxsIHN0YXRlIGZyb20gRlBScyBpbnRvIHRoZSBzY3JhdGNoIGJ1ZmZlci4KLQot
ICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7ICsraW5k
ZXgpIHsKLSAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5kc1tp
bmRleF07Ci0KLSAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewotICAgICAg
ICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoKLSAgICAgICAgY2FzZSBJbkZQUjoKLSAgICAgICAg
ICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5k
ZXgpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmVEb3VibGUocmVjb3Zl
cnkuZnByKCksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwKSk7Ci0gICAg
ICAgICAgICBicmVhazsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KKyAgICAgICAgaWYgKE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgcHJvZmls
ZSA9IGV4aXQubV92YWx1ZVByb2ZpbGUpCisgICAgICAgICAgICBwcm9maWxlLnJlcG9ydFZhbHVl
KGpzVmFsdWVGb3IoY3B1LCBleGl0Lm1fanNWYWx1ZVNvdXJjZSkpOwogICAgIH0KIAotICAgIC8v
IE5vdywgYWxsIEZQUnMgYXJlIGFsc28gZnJlZS4KLQotICAgIC8vIFNhdmUgYWxsIHN0YXRlIGZy
b20gdGhlIHN0YWNrIGludG8gdGhlIHNjcmF0Y2ggYnVmZmVyLiBGb3Igc2ltcGxpY2l0eSB3ZQot
ICAgIC8vIGRvIHRoaXMgZXZlbiBmb3Igc3RhdGUgdGhhdCdzIGFscmVhZHkgaW4gdGhlIHJpZ2h0
IHBsYWNlIG9uIHRoZSBzdGFjay4KLSAgICAvLyBJdCBtYWtlcyB0aGluZ3Mgc2ltcGxlciBsYXRl
ci4KLQotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7
ICsraW5kZXgpIHsKLSAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVy
YW5kc1tpbmRleF07Ci0KLSAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewot
ICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBDZWxsRGlzcGxh
Y2VkSW5KU1N0YWNrOgotICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6Ci0g
ICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgIGNhc2UgRG91Ymxl
RGlzcGxhY2VkSW5KU1N0YWNrOgotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGNhc2UgSW50
NTJEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgIGNhc2UgU3RyaWN0SW50NTJEaXNwbGFjZWRJ
bkpTU3RhY2s6Ci0gICAgICAgICAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6YWRkcmVz
c0ZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAg
ICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0jZWxzZQotICAgICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAg
ICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIo
KSksCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0Lmxv
YWQzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IocmVjb3Zl
cnkudmlydHVhbFJlZ2lzdGVyKCkpLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsK
LSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1Qw
LAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+
KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy50YWcpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIo
Ci0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEsCi0gICAgICAgICAgICAgICAgJmJpdHdp
c2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRz
LnBheWxvYWQpOwotICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLQotICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBOZWVkIHRv
IGVuc3VyZSB0aGF0IHRoZSBzdGFjayBwb2ludGVyIGFjY291bnRzIGZvciB0aGUgd29yc3QtY2Fz
ZSBzdGFjayB1c2FnZSBhdCBleGl0LiBUaGlzCi0gICAgLy8gY291bGQgdG9hc3Qgc29tZSBzdGFj
ayB0aGF0IHRoZSBERkcgdXNlZC4gV2UgbmVlZCB0byBkbyBpdCBiZWZvcmUgc3RvcmluZyB0byBz
dGFjayBvZmZzZXRzCi0gICAgLy8gdXNlZCBieSBiYXNlbGluZS4KLSAgICBqaXQuYWRkUHRyKAot
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigKLSAgICAgICAgICAgIC1qaXQuY29k
ZUJsb2NrKCktPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZv
ckV4aXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpmcmFtZVBv
aW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0KLSAg
ICAvLyBSZXN0b3JlIHRoZSBERkcgY2FsbGVlIHNhdmVzIGFuZCB0aGVuIHNhdmUgdGhlIG9uZXMg
dGhlIGJhc2VsaW5lIEpJVCB1c2VzLgotICAgIGppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7
Ci0gICAgaml0LmVtaXRTYXZlQ2FsbGVlU2F2ZXNGb3Ioaml0LmJhc2VsaW5lQ29kZUJsb2NrKCkp
OwotCi0gICAgLy8gVGhlIHRhZyByZWdpc3RlcnMgYXJlIG5lZWRlZCB0byBtYXRlcmlhbGl6ZSBy
ZWNvdmVyaWVzIGJlbG93LgotICAgIGppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVy
cygpOwotCi0gICAgaWYgKGV4aXQuaXNFeGNlcHRpb25IYW5kbGVyKCkpCi0gICAgICAgIGppdC5j
b3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKTsKLQogICAg
IC8vIERvIGFsbCBkYXRhIGZvcm1hdCBjb252ZXJzaW9ucyBhbmQgc3RvcmUgdGhlIHJlc3VsdHMg
aW50byB0aGUgc3RhY2suCisgICAgLy8gTm90ZTogd2UgbmVlZCB0byByZWNvdmVyIHZhbHVlcyBi
ZWZvcmUgcmVzdG9yaW5nIGNhbGxlZSBzYXZlIHJlZ2lzdGVycyBiZWxvdworICAgIC8vIGJlY2F1
c2UgdGhlIHJlY292ZXJ5IG1heSByZWx5IG9uIHZhbHVlcyBpbiBzb21lIG9mIGNhbGxlZSBzYXZl
IHJlZ2lzdGVycy4KIAotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5k
cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICBpbnQgY2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVn
aXN0ZXJzID0gc3RhdGljX2Nhc3Q8aW50PihiYXNlbGluZUNvZGVCbG9jay0+Y2FsbGVlU2F2ZVNw
YWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCkpOworICAgIHNpemVfdCBudW1iZXJPZk9wZXJhbmRzID0g
b3BlcmFuZHMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBudW1i
ZXJPZk9wZXJhbmRzOyArK2luZGV4KSB7CiAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJl
Y292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhdOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0g
b3BlcmFuZHMudmlydHVhbFJlZ2lzdGVyRm9ySW5kZXgoaW5kZXgpOwogCi0gICAgICAgIGlmIChy
ZWcuaXNMb2NhbCgpICYmIHJlZy50b0xvY2FsKCkgPCBzdGF0aWNfY2FzdDxpbnQ+KGppdC5iYXNl
bGluZUNvZGVCbG9jaygpLT5jYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkpCisg
ICAgICAgIGlmIChyZWcuaXNMb2NhbCgpICYmIHJlZy50b0xvY2FsKCkgPCBjYWxsZWVTYXZlU3Bh
Y2VBc1ZpcnR1YWxSZWdpc3RlcnMpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBp
bnQgb3BlcmFuZCA9IHJlZy5vZmZzZXQoKTsKIAogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRl
Y2huaXF1ZSgpKSB7CiAgICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAg
ICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBleGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdp
c3RlcigpKS5qc1ZhbHVlKCkpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBJ
bkZQUjoKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgY3B1LmZwcjxKU1Zh
bHVlPihyZWNvdmVyeS5mcHIoKSkpOworICAgICAgICAgICAgYnJlYWs7CisKICNpZiBVU0UoSlNW
QUxVRTY0KQogICAgICAgICBjYXNlIEluR1BSOgotICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5H
UFI6Ci0gICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBC
b29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNo
ICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUklu
Zm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAg
ICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBjcHUuZ3ByPEpTVmFsdWU+KHJlY292ZXJ5
LmdwcigpKSk7CiAgICAgICAgICAgICBicmVhazsKLSNlbHNlIC8vIG5vdCBVU0UoSlNWQUxVRTY0
KQorI2Vsc2UKICAgICAgICAgY2FzZSBJblBhaXI6Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAot
ICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNj
cmF0Y2ggKyBpbmRleCktPmFzQml0cy50YWcsCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVn
VDApOwotICAgICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9j
YXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5
bG9hZCwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgICAgICAgICBqaXQu
c3RvcmUzMigKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwKLSAgICAgICAgICAgICAg
ICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBqaXQuc3Rv
cmUzMigKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSwKLSAgICAgICAgICAgICAgICBB
c3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgZnJhbWUu
c2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVlKGNwdS5ncHI8aW50MzJfdD4ocmVjb3ZlcnkudGFn
R1BSKCkpLCBjcHUuZ3ByPGludDMyX3Q+KHJlY292ZXJ5LnBheWxvYWRHUFIoKSkpKTsKICAgICAg
ICAgICAgIGJyZWFrOworI2VuZGlmCiAKICAgICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BSOgor
ICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5kLCBKU1ZhbHVlKGNwdS5ncHI8SlND
ZWxsKj4ocmVjb3ZlcnkuZ3ByKCkpKSk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBj
YXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAg
ICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0
Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLAotICAgICAgICAgICAgICAg
IEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAgIGppdC5zdG9y
ZTMyKAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAotICAgICAgICAgICAgICAgIEFz
c2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7CisgICAgICAgICAgICBmcmFtZS5z
ZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFsdWUoZXhlYy0+cihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0
ZXIoKSkudW5ib3hlZENlbGwoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAKKyNpZiBVU0UoSlNW
QUxVRTMyXzY0KQogICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6Ci0gICAgICAgIGNh
c2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIGppdC5sb2FkMzIoCi0g
ICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2Ny
YXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQsCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6
cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1i
bHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZyksCi0gICAgICAgICAg
ICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgaml0
LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCi0gICAgICAgICAgICAg
ICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGZy
YW1lLnNldE9wZXJhbmQob3BlcmFuZCwganNCb29sZWFuKGNwdS5ncHI8Ym9vbD4ocmVjb3Zlcnku
Z3ByKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKLSNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQor
I2VuZGlmCiAKLSAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKLSAgICAgICAgY2FzZSBJ
bnQzMkRpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5K
U1N0YWNrOgogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBqaXQubG9hZDY0KHNjcmF0
Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0Lnplcm9FeHRlbmQz
MlRvUHRyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQu
b3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QwKTsKLSAg
ICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFk
ZHJlc3NGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChvcGVyYW5k
LCBleGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS5qc1ZhbHVlKCkpOwogI2Vsc2UK
LSAgICAgICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQs
Ci0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3Jl
MzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6SW50MzJUYWcpLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKG9w
ZXJhbmQpKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEdQUklu
Zm86OnJlZ1QwLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihv
cGVyYW5kKSk7CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIGpzQm9vbGVh
bihleGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKS5qc1ZhbHVlKCkucGF5bG9hZCgp
KSk7CiAjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgVW5ib3hlZElu
dDMySW5HUFI6CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFsdWUo
Y3B1LmdwcjxpbnQzMl90PihyZWNvdmVyeS5ncHIoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBmcmFt
ZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFsdWUoZXhlYy0+cihyZWNvdmVyeS52aXJ0dWFsUmVn
aXN0ZXIoKSkudW5ib3hlZEludDMyKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworCiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICAgICAgY2FzZSBVbmJveGVkSW50NTJJbkdQUjoKKyAgICAgICAgICAg
IGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwgSlNWYWx1ZShjcHUuZ3ByPGludDY0X3Q+KHJlY292
ZXJ5LmdwcigpKSA+PiBKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSk7CisgICAgICAgICAgICBi
cmVhazsKKwogICAgICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAg
ICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAg
ICAgIGppdC5yc2hpZnQ2NCgKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0
ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgR1BSSW5mbzo6cmVnVDApOwotICAg
ICAgICAgICAgaml0LmJveEludDUyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCwgR1BS
SW5mbzo6cmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlNjQo
R1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Cisg
ICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFsdWUoZXhlYy0+cihyZWNv
dmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSkudW5ib3hlZEludDUyKCkpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogCiAgICAgICAgIGNhc2UgVW5ib3hlZFN0cmljdEludDUySW5HUFI6CisgICAgICAgICAg
ICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFsdWUoY3B1LmdwcjxpbnQ2NF90PihyZWNv
dmVyeS5ncHIoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgU3RyaWN0
SW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBqaXQubG9hZDY0KHNjcmF0Y2gg
KyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LmJveEludDUyKEdQUklu
Zm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIEZQUkluZm86OmZwUmVn
VDApOwotICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVs
cGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5k
KG9wZXJhbmQsIEpTVmFsdWUoZXhlYy0+cihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSkudW5i
b3hlZFN0cmljdEludDUyKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAKICAgICAg
ICAgY2FzZSBVbmJveGVkRG91YmxlSW5GUFI6CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5k
KG9wZXJhbmQsIEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUsIHB1cmlmeU5hTihjcHUu
ZnByKHJlY292ZXJ5LmZwcigpKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNh
c2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1i
bHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2ggKyBpbmRleCksIEdQUkluZm86OnJlZ1Qw
KTsKLSAgICAgICAgICAgIGppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQ
UkluZm86OnJlZ1QwKSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQucHVyaWZ5
TmFOKEZQUkluZm86OmZwUmVnVDApOwotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBq
aXQuYm94RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAg
ICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NG
b3Iob3BlcmFuZCkpOwotI2Vsc2UKLSAgICAgICAgICAgIGppdC5zdG9yZURvdWJsZShGUFJJbmZv
OjpmcFJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwotI2VuZGlm
CisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKG9wZXJhbmQsIEpTVmFsdWUoSlNWYWx1ZTo6
RW5jb2RlQXNEb3VibGUsIHB1cmlmeU5hTihleGVjLT5yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3Rl
cigpKS51bmJveGVkRG91YmxlKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBj
YXNlIENvbnN0YW50OgotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBqaXQuc3RvcmU2
NCgKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVl
OjplbmNvZGUocmVjb3ZlcnkuY29uc3RhbnQoKSkpLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5
SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0jZWxzZQotICAgICAgICAgICAgaml0LnN0
b3JlMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIocmVj
b3ZlcnkuY29uc3RhbnQoKS50YWcoKSksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJz
Ojp0YWdGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAg
ICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIocmVjb3ZlcnkuY29uc3RhbnQoKS5w
YXlsb2FkKCkpLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihv
cGVyYW5kKSk7Ci0jZW5kaWYKKyAgICAgICAgICAgIGZyYW1lLnNldE9wZXJhbmQob3BlcmFuZCwg
cmVjb3ZlcnkuY29uc3RhbnQoKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNl
IERpcmVjdEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZDoKQEAgLTY4MywxMyArNjAwLDMxIEBA
IHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAgICAgfQogICAg
IH0KIAorICAgIC8vIE5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHN0YWNrIHBvaW50ZXIgYWNjb3Vu
dHMgZm9yIHRoZSB3b3JzdC1jYXNlIHN0YWNrIHVzYWdlIGF0IGV4aXQuIFRoaXMKKyAgICAvLyBj
b3VsZCB0b2FzdCBzb21lIHN0YWNrIHRoYXQgdGhlIERGRyB1c2VkLiBXZSBuZWVkIHRvIGRvIGl0
IGJlZm9yZSBzdG9yaW5nIHRvIHN0YWNrIG9mZnNldHMKKyAgICAvLyB1c2VkIGJ5IGJhc2VsaW5l
LgorICAgIGNwdS5zcCgpID0gY3B1LmZwPHVpbnQ4X3QqPigpIC0gKGNvZGVCbG9jay0+aml0Q29k
ZSgpLT5kZmdDb21tb24oKS0+cmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhpdCAqIHNpemVvZihS
ZWdpc3RlcikpOworCisgICAgLy8gUmVzdG9yZSB0aGUgREZHIGNhbGxlZSBzYXZlcyBhbmQgdGhl
biBzYXZlIHRoZSBvbmVzIHRoZSBiYXNlbGluZSBKSVQgdXNlcy4KKyAgICByZXN0b3JlQ2FsbGVl
U2F2ZXNGb3IoY29udGV4dCwgY29kZUJsb2NrKTsKKyAgICBzYXZlQ2FsbGVlU2F2ZXNGb3IoY29u
dGV4dCwgYmFzZWxpbmVDb2RlQmxvY2spOworCisgICAgLy8gVGhlIHRhZyByZWdpc3RlcnMgYXJl
IG5lZWRlZCB0byBtYXRlcmlhbGl6ZSByZWNvdmVyaWVzIGJlbG93LgorI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgY3B1LmdwcihHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpID0gVGFnVHlw
ZU51bWJlcjsKKyAgICBjcHUuZ3ByKEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikgPSBUYWdUeXBl
TnVtYmVyIHwgVGFnQml0VHlwZU90aGVyOworI2VuZGlmCisKKyAgICBpZiAoZXhpdC5pc0V4Y2Vw
dGlvbkhhbmRsZXIoKSkKKyAgICAgICAgY29weUNhbGxlZVNhdmVzVG9WTUVudHJ5RnJhbWVDYWxs
ZWVTYXZlc0J1ZmZlcihjb250ZXh0KTsKKwogICAgIC8vIE5vdyB0aGF0IHRoaW5ncyBvbiB0aGUg
c3RhY2sgYXJlIHJlY292ZXJlZCwgZG8gdGhlIGFyZ3VtZW50cyByZWNvdmVyeS4gV2UgYXNzdW1l
IHRoYXQgYXJndW1lbnRzCiAgICAgLy8gcmVjb3ZlcmllcyBkb24ndCByZWN1cnNpdmVseSByZWZl
ciB0byBlYWNoIG90aGVyLiBCdXQsIHdlIGRvbid0IHRyeSB0byBhc3N1bWUgdGhhdCB0aGV5IG9u
bHkKICAgICAvLyByZWZlciB0byBjZXJ0YWluIHJhbmdlcyBvZiBsb2NhbHMuIEhlbmNlIHdoeSB3
ZSBuZWVkIHRvIGRvIHRoaXMgaGVyZSwgb25jZSB0aGUgc3RhY2sgaXMgc2Vuc2libGUuCiAgICAg
Ly8gTm90ZSB0aGF0IHdlIGFsc28gcm91Z2hseSBhc3N1bWUgdGhhdCB0aGUgYXJndW1lbnRzIG1p
Z2h0IHN0aWxsIGJlIG1hdGVyaWFsaXplZCBvdXRzaWRlIG9mIGl0cwogICAgIC8vIGlubGluZSBj
YWxsIGZyYW1lIHNjb3BlIC0gYnV0IGZvciBub3cgdGhlIERGRyB3b3VsZG4ndCBkbyB0aGF0Lgog
Ci0gICAgZW1pdFJlc3RvcmVBcmd1bWVudHMoaml0LCBvcGVyYW5kcyk7CisgICAgZW1pdFJlc3Rv
cmVBcmd1bWVudHMoY29udGV4dCwgY29kZUJsb2NrLCBkZmdKSVRDb2RlLCBvcGVyYW5kcyk7CiAK
ICAgICAvLyBBZGp1c3QgdGhlIG9sZCBKSVQncyBleGVjdXRlIGNvdW50ZXIuIFNpbmNlIHdlIGFy
ZSBleGl0aW5nIE9TUiwgd2Uga25vdwogICAgIC8vIHRoYXQgYWxsIG5ldyBjYWxscyBpbnRvIHRo
aXMgY29kZSB3aWxsIGdvIHRvIHRoZSBuZXcgSklULCBzbyB0aGUgZXhlY3V0ZQpAQCAtNzI3LDI2
ICs2NjIsMTYxIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAg
ICAvLyBjb3VudGVyIHRvIDA7IG90aGVyd2lzZSB3ZSBzZXQgdGhlIGNvdW50ZXIgdG8KICAgICAv
LyBjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKCkuCiAKLSAgICBoYW5kbGVFeGl0
Q291bnRzKGppdCwgZXhpdCk7CisgICAgaWYgKFVOTElLRUxZKGNvZGVCbG9jay0+dXBkYXRlT1NS
RXhpdENvdW50ZXJBbmRDaGVja0lmTmVlZFRvUmVvcHRpbWl6ZShleGl0U3RhdGUpID09IENvZGVC
bG9jazo6T3B0aW1pemVBY3Rpb246OlJlb3B0aW1pemVOb3cpKQorICAgICAgICB0cmlnZ2VyUmVv
cHRpbWl6YXRpb25Ob3coYmFzZWxpbmVDb2RlQmxvY2ssICZleGl0KTsKKworICAgIHJlaWZ5SW5s
aW5lZENhbGxGcmFtZXMoY29udGV4dCwgYmFzZWxpbmVDb2RlQmxvY2ssIGV4aXQpOworICAgIGFk
anVzdEFuZEp1bXBUb1RhcmdldChjb250ZXh0LCB2bSwgY29kZUJsb2NrLCBiYXNlbGluZUNvZGVC
bG9jaywgZXhpdCk7Cit9CisKK3N0YXRpYyB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ29u
dGV4dCYgY29udGV4dCwgQ29kZUJsb2NrKiBvdXRlcm1vc3RCYXNlbGluZUNvZGVCbG9jaywgY29u
c3QgT1NSRXhpdEJhc2UmIGV4aXQpCit7CisgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7Cisg
ICAgRnJhbWUgZnJhbWUoY3B1LmZwKCksIGNvbnRleHQuc3RhY2soKSk7CisKKyAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkbid0IGxlYXZlIGhvbGVzIG9uIHRoZSBzdGFjayB3aGVuIHBlcmZvcm1pbmcg
YW4gT1NSIGV4aXQKKyAgICAvLyBpbiBwcmVzZW5jZSBvZiBpbmxpbmVkIHRhaWwgY2FsbHMuCisg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzUxMQorICAg
IEFTU0VSVChvdXRlcm1vc3RCYXNlbGluZUNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6
OkJhc2VsaW5lSklUKTsKKyAgICBmcmFtZS5zZXRPcGVyYW5kPENvZGVCbG9jayo+KENhbGxGcmFt
ZVNsb3Q6OmNvZGVCbG9jaywgb3V0ZXJtb3N0QmFzZWxpbmVDb2RlQmxvY2spOworCisgICAgY29u
c3QgQ29kZU9yaWdpbiogY29kZU9yaWdpbjsKKyAgICBmb3IgKGNvZGVPcmlnaW4gPSAmZXhpdC5t
X2NvZGVPcmlnaW47IGNvZGVPcmlnaW4gJiYgY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lOyBj
b2RlT3JpZ2luID0gY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lLT5nZXRDYWxsZXJTa2lwcGlu
Z1RhaWxDYWxscygpKSB7CisgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1l
ID0gY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lOworICAgICAgICBDb2RlQmxvY2sqIGJhc2Vs
aW5lQ29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVC
bG9jaygqY29kZU9yaWdpbiwgb3V0ZXJtb3N0QmFzZWxpbmVDb2RlQmxvY2spOworICAgICAgICBJ
bmxpbmVDYWxsRnJhbWU6OktpbmQgdHJ1ZUNhbGxlckNhbGxLaW5kOworICAgICAgICBDb2RlT3Jp
Z2luKiB0cnVlQ2FsbGVyID0gaW5saW5lQ2FsbEZyYW1lLT5nZXRDYWxsZXJTa2lwcGluZ1RhaWxD
YWxscygmdHJ1ZUNhbGxlckNhbGxLaW5kKTsKKyAgICAgICAgdm9pZCogY2FsbGVyRnJhbWUgPSBj
cHUuZnAoKTsKKworICAgICAgICBpZiAoIXRydWVDYWxsZXIpIHsKKyAgICAgICAgICAgIEFTU0VS
VChpbmxpbmVDYWxsRnJhbWUtPmlzVGFpbCgpKTsKKyAgICAgICAgICAgIHZvaWQqIHJldHVyblBD
ID0gZnJhbWUuZ2V0PHZvaWQqPihDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkpOworICAgICAg
ICAgICAgZnJhbWUuc2V0PHZvaWQqPihpbmxpbmVDYWxsRnJhbWUtPnJldHVyblBDT2Zmc2V0KCks
IHJldHVyblBDKTsKKyAgICAgICAgICAgIGNhbGxlckZyYW1lID0gZnJhbWUuZ2V0PHZvaWQqPihD
YWxsRnJhbWU6OmNhbGxlckZyYW1lT2Zmc2V0KCkpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlciA9IGJhc2VsaW5lQ29k
ZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soKnRydWVDYWxsZXIsIG91dGVybW9z
dEJhc2VsaW5lQ29kZUJsb2NrKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNhbGxCeXRlY29kZUlu
ZGV4ID0gdHJ1ZUNhbGxlci0+Ynl0ZWNvZGVJbmRleDsKKyAgICAgICAgICAgIHZvaWQqIGp1bXBU
YXJnZXQgPSBudWxscHRyOworCisgICAgICAgICAgICBzd2l0Y2ggKHRydWVDYWxsZXJDYWxsS2lu
ZCkgeworICAgICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OkNhbGw6CisgICAgICAgICAg
ICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q29uc3RydWN0OgorICAgICAgICAgICAgY2FzZSBJbmxp
bmVDYWxsRnJhbWU6OkNhbGxWYXJhcmdzOgorICAgICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJh
bWU6OkNvbnN0cnVjdFZhcmFyZ3M6CisgICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6
VGFpbENhbGw6CisgICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6VGFpbENhbGxWYXJh
cmdzOiB7CisgICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPQorICAg
ICAgICAgICAgICAgICAgICBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlci0+Z2V0Q2FsbExpbmtJ
bmZvRm9yQnl0ZWNvZGVJbmRleChjYWxsQnl0ZWNvZGVJbmRleCk7CisgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoY2FsbExpbmtJbmZvKTsKKworICAgICAgICAgICAgICAgIGp1bXBUYXJn
ZXQgPSBjYWxsTGlua0luZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbigpLmV4ZWN1dGFibGVBZGRyZXNz
KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpHZXR0ZXJDYWxsOgorICAgICAgICAgICAgY2FzZSBJbmxp
bmVDYWxsRnJhbWU6OlNldHRlckNhbGw6IHsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8gPQorICAgICAgICAgICAgICAgICAgICBiYXNlbGluZUNvZGVCbG9ja0Zv
ckNhbGxlci0+ZmluZFN0dWJJbmZvKENvZGVPcmlnaW4oY2FsbEJ5dGVjb2RlSW5kZXgpKTsKKyAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzdHViSW5mbyk7CisKKyAgICAgICAgICAgICAg
ICBqdW1wVGFyZ2V0ID0gc3R1YkluZm8tPmRvbmVMb2NhdGlvbigpLmV4ZWN1dGFibGVBZGRyZXNz
KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHRydWVDYWxsZXItPmlubGluZUNhbGxG
cmFtZSkKKyAgICAgICAgICAgICAgICBjYWxsZXJGcmFtZSA9IGNwdS5mcDx1aW50OF90Kj4oKSAr
IHRydWVDYWxsZXItPmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKiBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpOwogCi0gICAgLy8gUmVpZnkgaW5saW5lZCBjYWxsIGZyYW1lcy4KKyAgICAgICAg
ICAgIGZyYW1lLnNldDx2b2lkKj4oaW5saW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpLCBq
dW1wVGFyZ2V0KTsKKyAgICAgICAgfQogCi0gICAgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhqaXQs
IGV4aXQpOworICAgICAgICBmcmFtZS5zZXRPcGVyYW5kPHZvaWQqPihpbmxpbmVDYWxsRnJhbWUt
PnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrLCBiYXNlbGluZUNvZGVCbG9j
ayk7CisKKyAgICAgICAgLy8gUmVzdG9yZSB0aGUgaW5saW5lIGNhbGwgZnJhbWUncyBjYWxsZWUg
c2F2ZSByZWdpc3RlcnMuCisgICAgICAgIC8vIElmIHRoaXMgaW5saW5lZCBmcmFtZSBpcyBhIHRh
aWwgY2FsbCB0aGF0IHdpbGwgcmV0dXJuIGJhY2sgdG8gdGhlIG9yaWdpbmFsIGNhbGxlciwgd2Ug
bmVlZCB0bworICAgICAgICAvLyBjb3B5IHRoZSBwcmlvciBjb250ZW50cyBvZiB0aGUgdGFnIHJl
Z2lzdGVycyBhbHJlYWR5IHNhdmVkIGZvciB0aGUgb3V0ZXIgZnJhbWUgdG8gdGhpcyBmcmFtZS4K
KyAgICAgICAgc2F2ZU9yQ29weUNhbGxlZVNhdmVzRm9yKGNvbnRleHQsIGJhc2VsaW5lQ29kZUJs
b2NrLCBWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCksICF0cnVl
Q2FsbGVyKTsKKworICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCisg
ICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kPHVpbnQzMl90PihpbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCwgUGF5bG9hZE9mZnNldCwg
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgICAgIEFT
U0VSVChjYWxsZXJGcmFtZSk7CisgICAgICAgIGZyYW1lLnNldDx2b2lkKj4oaW5saW5lQ2FsbEZy
YW1lLT5jYWxsZXJGcmFtZU9mZnNldCgpLCBjYWxsZXJGcmFtZSk7CisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChjb2RlT3Jp
Z2luLT5ieXRlY29kZUluZGV4KS5iaXRzKCk7CisgICAgICAgIGZyYW1lLnNldE9wZXJhbmQ8dWlu
dDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50LCBUYWdPZmZzZXQsIGxvY2F0aW9uQml0cyk7CisgICAgICAgIGlmICghaW5saW5l
Q2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQorICAgICAgICAgICAgZnJhbWUuc2V0T3BlcmFuZChp
bmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBKU1Zh
bHVlKGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29uc3RhbnQoKSkpOworI2Vsc2UgLy8gVVNFKEpT
VkFMVUU2NCkgLy8gc28gdGhpcyBpcyB0aGUgMzItYml0IHBhcnQKKyAgICAgICAgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uID0gYmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2lu
KCkgKyBjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4OworICAgICAgICB1aW50MzJfdCBsb2NhdGlv
bkJpdHMgPSBDYWxsU2l0ZUluZGV4KGluc3RydWN0aW9uKS5iaXRzKCk7CisgICAgICAgIGZyYW1l
LnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBUYWdPZmZzZXQsIGxvY2F0aW9uQml0cyk7CisgICAg
ICAgIGZyYW1lLnNldE9wZXJhbmQ8dWludDMyX3Q+KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZz
ZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUsIFRhZ09mZnNldCwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KEpTVmFsdWU6OkNlbGxUYWcpKTsKKyAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmlz
Q2xvc3VyZUNhbGwpCisgICAgICAgICAgICBmcmFtZS5zZXRPcGVyYW5kKGlubGluZUNhbGxGcmFt
ZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWVTbG90OjpjYWxsZWUsIFBheWxvYWRPZmZzZXQsIGlu
bGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29uc3RhbnQoKSk7CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2
NCkgLy8gZW5kaW5nIHRoZSAjZWxzZSBwYXJ0LCBzbyBkaXJlY3RseSBhYm92ZSBpcyB0aGUgMzIt
Yml0IHBhcnQKKyAgICB9CiAKLSAgICAvLyBBbmQgZmluaXNoLgotICAgIGFkanVzdEFuZEp1bXBU
b1RhcmdldCh2bSwgaml0LCBleGl0KTsKKyAgICAvLyBEb24ndCBuZWVkIHRvIHNldCB0aGUgdG9w
bGV2ZWwgY29kZSBvcmlnaW4gaWYgd2Ugb25seSBkaWQgaW5saW5lIHRhaWwgY2FsbHMKKyAgICBp
ZiAoY29kZU9yaWdpbikgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHVpbnQzMl90IGxv
Y2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgoY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleCkuYml0
cygpOworI2Vsc2UKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gb3V0ZXJtb3N0
QmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBjb2RlT3JpZ2luLT5i
eXRlY29kZUluZGV4OworICAgICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUlu
ZGV4KGluc3RydWN0aW9uKS5iaXRzKCk7CisjZW5kaWYKKyAgICAgICAgZnJhbWUuc2V0T3BlcmFu
ZDx1aW50MzJfdD4oQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCwgVGFnT2Zmc2V0LCBsb2Nh
dGlvbkJpdHMpOworICAgIH0KIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIE9TUkV4aXQ6OmRlYnVn
T3BlcmF0aW9uUHJpbnRTcGVjdWxhdGlvbkZhaWx1cmUoRXhlY1N0YXRlKiBleGVjLCB2b2lkKiBk
ZWJ1Z0luZm9SYXcsIHZvaWQqIHNjcmF0Y2gpCitzdGF0aWMgdm9pZCBhZGp1c3RBbmRKdW1wVG9U
YXJnZXQoQ29udGV4dCYgY29udGV4dCwgVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29k
ZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jaywgT1NSRXhpdCYgZXhpdCkKIHsKLSAgICBWTSogdm0g
PSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVj
KTsKKyAgICBPU1JFeGl0U3RhdGUqIGV4aXRTdGF0ZSA9IGV4aXQuZXhpdFN0YXRlLmdldCgpOwog
Ci0gICAgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvKiBkZWJ1Z0luZm8gPSBzdGF0aWNfY2Fz
dDxTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8qPihkZWJ1Z0luZm9SYXcpOwotICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZGVidWdJbmZvLT5jb2RlQmxvY2s7CisgICAgV1RGOjpzdG9yZUxv
YWRGZW5jZSgpOyAvLyBUaGUgb3B0aW1pemluZyBjb21waWxlciBleHBlY3RzIHRoYXQgdGhlIE9T
UiBleGl0IG1lY2hhbmlzbSB3aWxsIGV4ZWN1dGUgdGhpcyBmZW5jZS4KKyAgICB2bS5oZWFwLndy
aXRlQmFycmllcihiYXNlbGluZUNvZGVCbG9jayk7CisKKyAgICAvLyBXZSBiYXJyaWVyIGFsbCBp
bmxpbmVkIGZyYW1lcyAtLSBhbmQgbm90IGp1c3QgdGhlIGN1cnJlbnQgaW5saW5lIHN0YWNrIC0t
CisgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCBrbm93IHdoaWNoIGlubGluZWQgZnVuY3Rpb24gb3du
cyB0aGUgdmFsdWUgcHJvZmlsZSB0aGF0CisgICAgLy8gd2UnbGwgdXBkYXRlIHdoZW4gd2UgZXhp
dC4gSW4gdGhlIGNhc2Ugb2YgImYoKSB7IGEoKTsgYigpOyB9IiwgaWYgYm90aAorICAgIC8vIGEg
YW5kIGIgYXJlIGlubGluZWQsIHdlIG1pZ2h0IGV4aXQgaW5zaWRlIGIgZHVlIHRvIGEgYmFkIHZh
bHVlIGxvYWRlZAorICAgIC8vIGZyb20gYS4KKyAgICAvLyBGSVhNRTogTWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZSBzaG91bGQgcmVtZW1iZXIgd2hpY2ggQ29kZUJsb2NrIG93bnMKKyAgICAv
LyB0aGUgdmFsdWUgcHJvZmlsZS4KKyAgICBJbmxpbmVDYWxsRnJhbWVTZXQqIGlubGluZUNhbGxG
cmFtZXMgPSBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnQ29tbW9uKCktPmlubGluZUNhbGxGcmFt
ZXMuZ2V0KCk7CisgICAgaWYgKGlubGluZUNhbGxGcmFtZXMpIHsKKyAgICAgICAgZm9yIChJbmxp
bmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA6ICppbmxpbmVDYWxsRnJhbWVzKQorICAgICAg
ICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVC
bG9jay5nZXQoKSk7CisgICAgfQorCisgICAgaWYgKGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNh
bGxGcmFtZSkKKyAgICAgICAgY29udGV4dC5mcCgpID0gY29udGV4dC5mcDx1aW50OF90Kj4oKSAr
IGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKiBzaXplb2Yo
RW5jb2RlZEpTVmFsdWUpOworCisgICAgdm9pZCoganVtcFRhcmdldCA9IGV4aXRTdGF0ZS0+anVt
cFRhcmdldDsKKyAgICBBU1NFUlQoanVtcFRhcmdldCk7CisKKyAgICBjb250ZXh0LnNwKCkgPSBj
b250ZXh0LmZwPHVpbnQ4X3QqPigpICsgZXhpdFN0YXRlLT5zdGFja1BvaW50ZXJPZmZzZXQ7Cisg
ICAgaWYgKGV4aXQuaXNFeGNlcHRpb25IYW5kbGVyKCkpIHsKKyAgICAgICAgLy8gU2luY2Ugd2Un
cmUganVtcGluZyB0byBvcF9jYXRjaCwgd2UgbmVlZCB0byBzZXQgY2FsbEZyYW1lRm9yQ2F0Y2gu
CisgICAgICAgIHZtLmNhbGxGcmFtZUZvckNhdGNoID0gY29udGV4dC5mcDxFeGVjU3RhdGUqPigp
OworICAgIH0KKworICAgIHZtLnRvcENhbGxGcmFtZSA9IGNvbnRleHQuZnA8RXhlY1N0YXRlKj4o
KTsKKyAgICBjb250ZXh0LnBjKCkgPSBqdW1wVGFyZ2V0OworfQorCitzdGF0aWMgdm9pZCBwcmlu
dE9TUkV4aXQoQ29udGV4dCYgY29udGV4dCwgdWludDMyX3Qgb3NyRXhpdEluZGV4LCBjb25zdCBP
U1JFeGl0JiBleGl0KQoreworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGNvbnRleHQuZnA8RXhlY1N0
YXRlKj4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwog
ICAgIENvZGVCbG9jayogYWx0ZXJuYXRpdmUgPSBjb2RlQmxvY2stPmFsdGVybmF0aXZlKCk7Cisg
ICAgRXhpdEtpbmQga2luZCA9IGV4aXQubV9raW5kOworICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0ID0gZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleDsKKwogICAgIGRhdGFMb2coIlNw
ZWN1bGF0aW9uIGZhaWx1cmUgaW4gIiwgKmNvZGVCbG9jayk7Ci0gICAgZGF0YUxvZygiIEAgZXhp
dCAjIiwgdm0tPm9zckV4aXRJbmRleCwgIiAoYmMjIiwgZGVidWdJbmZvLT5ieXRlY29kZU9mZnNl
dCwgIiwgIiwgZXhpdEtpbmRUb1N0cmluZyhkZWJ1Z0luZm8tPmtpbmQpLCAiKSB3aXRoICIpOwor
ICAgIGRhdGFMb2coIiBAIGV4aXQgIyIsIG9zckV4aXRJbmRleCwgIiAoYmMjIiwgYnl0ZWNvZGVP
ZmZzZXQsICIsICIsIGV4aXRLaW5kVG9TdHJpbmcoa2luZCksICIpIHdpdGggIik7CiAgICAgaWYg
KGFsdGVybmF0aXZlKSB7CiAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAiZXhlY3V0ZUNv
dW50ZXIgPSAiLCBhbHRlcm5hdGl2ZS0+aml0RXhlY3V0ZUNvdW50ZXIoKSwKQEAgLTc1NiwyMSAr
ODI2LDE4IEBAIHZvaWQgSklUX09QRVJBVElPTiBPU1JFeGl0OjpkZWJ1Z09wZXJhdGkKICAgICAg
ICAgZGF0YUxvZygibm8gYWx0ZXJuYXRpdmUgY29kZSBibG9jayAoaS5lLiB3ZSd2ZSBiZWVuIGpl
dHRpc29uZWQpIik7CiAgICAgZGF0YUxvZygiLCBvc3JFeGl0Q291bnRlciA9ICIsIGNvZGVCbG9j
ay0+b3NyRXhpdENvdW50ZXIoKSwgIlxuIik7CiAgICAgZGF0YUxvZygiICAgIEdQUnMgYXQgdGlt
ZSBvZiBleGl0OiIpOwotICAgIGNoYXIqIHNjcmF0Y2hQb2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hh
cio+KHNjcmF0Y2gpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHUFJJbmZvOjpudW1i
ZXJPZlJlZ2lzdGVyczsgKytpKSB7CiAgICAgICAgIEdQUlJlZyBncHIgPSBHUFJJbmZvOjp0b1Jl
Z2lzdGVyKGkpOwotICAgICAgICBkYXRhTG9nKCIgIiwgR1BSSW5mbzo6ZGVidWdOYW1lKGdwciks
ICI6IiwgUmF3UG9pbnRlcigqcmVpbnRlcnByZXRfY2FzdF9wdHI8dm9pZCoqPihzY3JhdGNoUG9p
bnRlcikpKTsKLSAgICAgICAgc2NyYXRjaFBvaW50ZXIgKz0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVl
KTsKKyAgICAgICAgZGF0YUxvZygiICIsIGNvbnRleHQuZ3ByTmFtZShncHIpLCAiOiIsIFJhd1Bv
aW50ZXIoY29udGV4dC5ncHI8dm9pZCo+KGdwcikpKTsKICAgICB9CiAgICAgZGF0YUxvZygiXG4i
KTsKICAgICBkYXRhTG9nKCIgICAgRlBScyBhdCB0aW1lIG9mIGV4aXQ6Iik7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKICAg
ICAgICAgRlBSUmVnIGZwciA9IEZQUkluZm86OnRvUmVnaXN0ZXIoaSk7Ci0gICAgICAgIGRhdGFM
b2coIiAiLCBGUFJJbmZvOjpkZWJ1Z05hbWUoZnByKSwgIjoiKTsKLSAgICAgICAgdWludDY0X3Qg
Yml0cyA9ICpyZWludGVycHJldF9jYXN0X3B0cjx1aW50NjRfdCo+KHNjcmF0Y2hQb2ludGVyKTsK
LSAgICAgICAgZG91YmxlIHZhbHVlID0gKnJlaW50ZXJwcmV0X2Nhc3RfcHRyPGRvdWJsZSo+KHNj
cmF0Y2hQb2ludGVyKTsKKyAgICAgICAgZGF0YUxvZygiICIsIGNvbnRleHQuZnByTmFtZShmcHIp
LCAiOiIpOworICAgICAgICB1aW50NjRfdCBiaXRzID0gY29udGV4dC5mcHI8dWludDY0X3Q+KGZw
cik7CisgICAgICAgIGRvdWJsZSB2YWx1ZSA9IGNvbnRleHQuZnByKGZwcik7CiAgICAgICAgIGRh
dGFMb2dGKCIlbGx4OiVsZiIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oYml0cyksIHZhbHVlKTsK
LSAgICAgICAgc2NyYXRjaFBvaW50ZXIgKz0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKICAgICB9
CiAgICAgZGF0YUxvZygiXG4iKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdC5oCShyZXZpc2lvbiAyMjE4MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDE3IEBACiAjaW5jbHVk
ZSAiTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgi
CiAjaW5jbHVkZSAiVmFsdWVSZWNvdmVyeS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIENDYWxsSGVscGVyczsKK25hbWVzcGFjZSBQcm9iZSB7
CitjbGFzcyBDb250ZXh0OworfSAvLyBuYW1lc3BhY2UgUHJvYmUKKworbmFtZXNwYWNlIFByb2Zp
bGVyIHsKK2NsYXNzIE9TUkV4aXQ7Cit9IC8vIG5hbWVzcGFjZSBQcm9maWxlcgogCiBuYW1lc3Bh
Y2UgREZHIHsKIApAQCAtOTEsNiArOTgsMzIgQEAgcHJpdmF0ZToKICAgICBTcGVjdWxhdGlvblJl
Y292ZXJ5VHlwZSBtX3R5cGU7CiB9OwogCitzdHJ1Y3QgT1NSRXhpdFN0YXRlIDogUmVmQ291bnRl
ZDxPU1JFeGl0U3RhdGU+IHsKKyAgICBPU1JFeGl0U3RhdGUoT1NSRXhpdEJhc2UmIGV4aXQsIENv
ZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrLCBPcGVyYW5k
czxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMsIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5
LCBwdHJkaWZmX3Qgc3RhY2tQb2ludGVyT2Zmc2V0LCBpbnQzMl90IGFjdGl2ZVRocmVzaG9sZCwg
ZG91YmxlIG1lbW9yeVVzYWdlQWRqdXN0ZWRUaHJlc2hvbGQsIHZvaWQqIGp1bXBUYXJnZXQpCisg
ICAgICAgIDogZXhpdChleGl0KQorICAgICAgICAsIGNvZGVCbG9jayhjb2RlQmxvY2spCisgICAg
ICAgICwgYmFzZWxpbmVDb2RlQmxvY2soYmFzZWxpbmVDb2RlQmxvY2spCisgICAgICAgICwgb3Bl
cmFuZHMob3BlcmFuZHMpCisgICAgICAgICwgcmVjb3ZlcnkocmVjb3ZlcnkpCisgICAgICAgICwg
c3RhY2tQb2ludGVyT2Zmc2V0KHN0YWNrUG9pbnRlck9mZnNldCkKKyAgICAgICAgLCBhY3RpdmVU
aHJlc2hvbGQoYWN0aXZlVGhyZXNob2xkKQorICAgICAgICAsIG1lbW9yeVVzYWdlQWRqdXN0ZWRU
aHJlc2hvbGQobWVtb3J5VXNhZ2VBZGp1c3RlZFRocmVzaG9sZCkKKyAgICAgICAgLCBqdW1wVGFy
Z2V0KGp1bXBUYXJnZXQpCisgICAgeyB9CisKKyAgICBPU1JFeGl0QmFzZSYgZXhpdDsKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jazsKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrOwor
ICAgIE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+IG9wZXJhbmRzOworICAgIFNwZWN1bGF0aW9uUmVj
b3ZlcnkqIHJlY292ZXJ5OworICAgIHB0cmRpZmZfdCBzdGFja1BvaW50ZXJPZmZzZXQ7CisgICAg
dWludDMyX3QgYWN0aXZlVGhyZXNob2xkOworICAgIGRvdWJsZSBtZW1vcnlVc2FnZUFkanVzdGVk
VGhyZXNob2xkOworICAgIHZvaWQqIGp1bXBUYXJnZXQ7CisKKyAgICBQcm9maWxlcjo6T1NSRXhp
dCogcHJvZmlsZXJFeGl0IHsgbnVsbHB0ciB9OworfTsKKwogLy8gPT09IE9TUkV4aXQgPT09CiAv
LwogLy8gVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVzIGhvdyB0byBleGl0IHRoZSBzcGVjdWxhdGl2
ZSBwYXRoIGJ5CkBAIC05OCwzMiArMTMxLDIwIEBAIHByaXZhdGU6CiBzdHJ1Y3QgT1NSRXhpdCA6
IHB1YmxpYyBPU1JFeGl0QmFzZSB7CiAgICAgT1NSRXhpdChFeGl0S2luZCwgSlNWYWx1ZVNvdXJj
ZSwgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSwgU3BlY3VsYXRpdmVKSVQqLCB1bnNpZ25l
ZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCA9IFVJTlRfTUFYKTsKIAotICAg
IHN0YXRpYyB2b2lkIEpJVF9PUEVSQVRJT04gY29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKikgV1RG
X0lOVEVSTkFMOworICAgIHN0YXRpYyB2b2lkIGV4ZWN1dGVPU1JFeGl0KFByb2JlOjpDb250ZXh0
Jik7CiAKLSAgICB1bnNpZ25lZCBtX3BhdGNoYWJsZUNvZGVPZmZzZXQgeyAwIH07Ci0gICAgCi0g
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG1fY29kZTsKKyAgICBSZWZQdHI8T1NSRXhpdFN0YXRl
PiBleGl0U3RhdGU7CiAgICAgCiAgICAgSlNWYWx1ZVNvdXJjZSBtX2pzVmFsdWVTb3VyY2U7CiAg
ICAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBtX3ZhbHVlUHJvZmlsZTsKICAgICAKICAg
ICB1bnNpZ25lZCBtX3JlY292ZXJ5SW5kZXg7CiAKLSAgICB2b2lkIHNldFBhdGNoYWJsZUNvZGVP
ZmZzZXQoTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXApOwotICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIGdldFBhdGNoYWJsZUNvZGVPZmZzZXRBc0p1bXAoKSBjb25zdDsKLSAgICBDb2RlTG9j
YXRpb25KdW1wIGNvZGVMb2NhdGlvbkZvclJlcGF0Y2goQ29kZUJsb2NrKikgY29uc3Q7Ci0gICAg
dm9pZCBjb3JyZWN0SnVtcChMaW5rQnVmZmVyJik7Ci0KICAgICB1bnNpZ25lZCBtX3N0cmVhbUlu
ZGV4OwogICAgIHZvaWQgY29uc2lkZXJBZGRpbmdBc0ZyZXF1ZW50RXhpdFNpdGUoQ29kZUJsb2Nr
KiBwcm9maWxlZENvZGVCbG9jaykKICAgICB7CiAgICAgICAgIE9TUkV4aXRCYXNlOjpjb25zaWRl
ckFkZGluZ0FzRnJlcXVlbnRFeGl0U2l0ZShwcm9maWxlZENvZGVCbG9jaywgRXhpdEZyb21ERkcp
OwogICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgdm9pZCBjb21waWxlRXhpdChDQ2FsbEhl
bHBlcnMmLCBWTSYsIGNvbnN0IE9TUkV4aXQmLCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5
PiYsIFNwZWN1bGF0aW9uUmVjb3ZlcnkqKTsKLSAgICBzdGF0aWMgdm9pZCBlbWl0UmVzdG9yZUFy
Z3VtZW50cyhDQ2FsbEhlbHBlcnMmLCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYpOwot
ICAgIHN0YXRpYyB2b2lkIEpJVF9PUEVSQVRJT04gZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0
aW9uRmFpbHVyZShFeGVjU3RhdGUqLCB2b2lkKiwgdm9pZCopIFdURl9JTlRFUk5BTDsKIH07CiAK
IHN0cnVjdCBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8gewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAko
cmV2aXNpb24gMjIxODMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
Q29tcGlsZXJDb21tb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNiArMzcsNyBAQAogCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3
aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1
Lgogdm9pZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0
QmFzZSYgZXhpdCkKIHsKICAgICBpZiAoIWV4aXRLaW5kTWF5SmV0dGlzb24oZXhpdC5tX2tpbmQp
KSB7CkBAIC0xNDMsNiArMTQ0LDcgQEAgdm9pZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVscGVy
cyYgaml0LAogICAgIGRvbmVBZGp1c3RpbmcubGluaygmaml0KTsKIH0KIAorLy8gRklYTUU6IHJl
bW92ZSB0aGlzIHdoZW4gd2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzUxNDUuCiB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGRu
J3QgbGVhdmUgaG9sZXMgb24gdGhlIHN0YWNrIHdoZW4gcGVyZm9ybWluZyBhbiBPU1IgZXhpdApA
QCAtMjUyLDYgKzI1NCw3IEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBl
cnMKICAgICB9CiB9CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogc3RhdGljIHZvaWQgb3Ny
V3JpdGVCYXJyaWVyKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgb3duZXIsIEdQUlJlZyBzY3Jh
dGNoKQogewogICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBvd25lcklzUmVtZW1iZXJlZE9ySW5F
ZGVuID0gaml0LmJhcnJpZXJCcmFuY2hXaXRob3V0RmVuY2Uob3duZXIpOwpAQCAtMjcyLDYgKzI3
NSw3IEBAIHN0YXRpYyB2b2lkIG9zcldyaXRlQmFycmllcihDQ2FsbEhlbHBlcnMKICAgICBvd25l
cklzUmVtZW1iZXJlZE9ySW5FZGVuLmxpbmsoJmppdCk7CiB9CiAKKy8vIEZJWE1FOiByZW1vdmUg
dGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc1MTQ1Lgogdm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0mIHZtLCBDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiB7CiAgICAgaml0Lm1lbW9yeUZlbmNlKCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1v
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENv
bXBpbGVyQ29tbW9uLmgJKHJldmlzaW9uIDIyMTgzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAs
NiArNDAsNyBAQCB2b2lkIGhhbmRsZUV4aXRDb3VudHMoQ0NhbGxIZWxwZXJzJiwgY29uCiB2b2lk
IHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2Um
KTsKIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KFZNJiwgQ0NhbGxIZWxwZXJzJiwgY29uc3Qg
T1NSRXhpdEJhc2UmKTsKIAorLy8gRklYTUU6IFRoaXMgd29uJ3QgYmUgbmVlZGVkIG9uY2Ugd2Ug
Zml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDUuCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgSklUQ29kZVR5cGU+CiB2b2lkIGFkanVzdEZyYW1lQW5kU3RhY2tJbk9T
UkV4aXRDb21waWxlclRodW5rKE1hY3JvQXNzZW1ibGVyJiBqaXQsIFZNKiB2bSwgSklUQ29kZTo6
SklUVHlwZSBqaXRUeXBlKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMjE4MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDc0LDYyICsxNDc0
LDYgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUNsbwogICAgICAgICBl
eGVjLCBzdHJ1Y3R1cmUsIGFyZ3VtZW50U3RhcnQsIGxlbmd0aCwgY2FsbGVlKTsKIH0KIAotSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4
aXQoRXhlY1N0YXRlKiBleGVjLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgSlNG
dW5jdGlvbiogY2FsbGVlLCBpbnQzMl90IGFyZ3VtZW50Q291bnQpCi17Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdGFyZ2V0KCZ2bSwgZXhlYyk7
Ci0gICAgCi0gICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOwotICAgIAotICAg
IENvZGVCbG9jayogY29kZUJsb2NrOwotICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCi0gICAgICAg
IGNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1lKGlubGluZUNh
bGxGcmFtZSk7Ci0gICAgZWxzZQotICAgICAgICBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2so
KTsKLSAgICAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBhcmd1bWVudENvdW50IC0gMTsKLSAgICB1
bnNpZ25lZCBjYXBhY2l0eSA9IHN0ZDo6bWF4KGxlbmd0aCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gMSkpOwotICAgIERpcmVjdEFyZ3VtZW50cyog
cmVzdWx0ID0gRGlyZWN0QXJndW1lbnRzOjpjcmVhdGUoCi0gICAgICAgIHZtLCBjb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpLT5kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUoKSwgbGVuZ3RoLCBjYXBh
Y2l0eSk7Ci0gICAgCi0gICAgcmVzdWx0LT5jYWxsZWUoKS5zZXQodm0sIHJlc3VsdCwgY2FsbGVl
KTsKLSAgICAKLSAgICBSZWdpc3RlciogYXJndW1lbnRzID0KLSAgICAgICAgZXhlYy0+cmVnaXN0
ZXJzKCkgKyAoaW5saW5lQ2FsbEZyYW1lID8gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCA6
IDApICsKLSAgICAgICAgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldCgwKTsKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSBsZW5ndGg7IGktLTspCi0gICAgICAgIHJlc3VsdC0+c2V0SW5kZXhRdWlja2x5
KHZtLCBpLCBhcmd1bWVudHNbaV0uanNWYWx1ZSgpKTsKLSAgICAKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1l
bnRzRHVyaW5nRXhpdChFeGVjU3RhdGUqIGV4ZWMsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2Fs
bEZyYW1lLCBKU0Z1bmN0aW9uKiBjYWxsZWUsIGludDMyX3QgYXJndW1lbnRDb3VudCkKLXsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0YXJnZXQo
JnZtLCBleGVjKTsKLSAgICAKLSAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0uaGVhcCk7
Ci0gICAgCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2s7Ci0gICAgaWYgKGlubGluZUNhbGxGcmFt
ZSkKLSAgICAgICAgY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJh
bWUoaW5saW5lQ2FsbEZyYW1lKTsKLSAgICBlbHNlCi0gICAgICAgIGNvZGVCbG9jayA9IGV4ZWMt
PmNvZGVCbG9jaygpOwotICAgIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFyZ3VtZW50Q291bnQg
LSAxOwotICAgIENsb25lZEFyZ3VtZW50cyogcmVzdWx0ID0gQ2xvbmVkQXJndW1lbnRzOjpjcmVh
dGVFbXB0eSgKLSAgICAgICAgdm0sIGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmNsb25lZEFy
Z3VtZW50c1N0cnVjdHVyZSgpLCBjYWxsZWUsIGxlbmd0aCk7Ci0gICAgCi0gICAgUmVnaXN0ZXIq
IGFyZ3VtZW50cyA9Ci0gICAgICAgIGV4ZWMtPnJlZ2lzdGVycygpICsgKGlubGluZUNhbGxGcmFt
ZSA/IGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgOiAwKSArCi0gICAgICAgIENhbGxGcmFt
ZTo6YXJndW1lbnRPZmZzZXQoMCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07
KQotICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIGFyZ3VtZW50c1tpXS5q
c1ZhbHVlKCkpOwotCi0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVJlc3QoRXhlY1N0YXRlKiBleGVjLCBSZWdpc3Rlciog
YXJndW1lbnRTdGFydCwgdW5zaWduZWQgbnVtYmVyT2ZQYXJhbXNUb1NraXAsIHVuc2lnbmVkIGFy
cmF5U2l6ZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMjE4MzEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MTQ5LDkgKzE0OSw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHIK
IHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcShFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBX
VEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0aXZh
dGlvbkRpcmVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUq
LCBFbmNvZGVkSlNWYWx1ZSk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRl
RGlyZWN0QXJndW1lbnRzKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QgbGVuZ3RoLCBp
bnQzMl90IG1pbkNhcGFjaXR5KTsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVh
dGVEaXJlY3RBcmd1bWVudHNEdXJpbmdFeGl0KEV4ZWNTdGF0ZSosIElubGluZUNhbGxGcmFtZSos
IEpTRnVuY3Rpb24qLCBpbnQzMl90IGFyZ3VtZW50Q291bnQpOwogSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cyhFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUq
LCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgaW50MzJfdCBsZW5ndGgsIEpTRnVuY3Rpb24qIGNh
bGxlZSwgSlNMZXhpY2FsRW52aXJvbm1lbnQqKTsKLUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHNEdXJpbmdFeGl0KEV4ZWNTdGF0ZSosIElubGluZUNh
bGxGcmFtZSosIEpTRnVuY3Rpb24qLCBpbnQzMl90IGFyZ3VtZW50Q291bnQpOwogSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50cyhFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmUqLCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgaW50MzJfdCBsZW5ndGgsIEpTRnVu
Y3Rpb24qIGNhbGxlZSk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlUmVz
dChFeGVjU3RhdGUqLCBSZWdpc3RlciogYXJndW1lbnRTdGFydCwgdW5zaWduZWQgbnVtYmVyT2ZB
cmd1bWVudHNUb1NraXAsIHVuc2lnbmVkIGFycmF5U2l6ZSk7CiBkb3VibGUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25GTW9kT25JbnRzKGludDMyX3QsIGludDMyX3QpIFdURl9JTlRFUk5BTDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAJKHJldmlzaW9uIDIyMTgz
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDAsNjQgKzQwLDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0
b3IoVk0qIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRUaHVua0dlbmVyYXRvcihW
TSogdm0pCiB7CiAgICAgTWFjcm9Bc3NlbWJsZXIgaml0OwotCi0gICAgLy8gVGhpcyBuZWVkcyB0
byBoYXBwZW4gYmVmb3JlIHdlIHVzZSB0aGUgc2NyYXRjaCBidWZmZXIgYmVjYXVzZSB0aGlzIGZ1
bmN0aW9uIGFsc28gdXNlcyB0aGUgc2NyYXRjaCBidWZmZXIuCi0gICAgYWRqdXN0RnJhbWVBbmRT
dGFja0luT1NSRXhpdENvbXBpbGVyVGh1bms8REZHOjpKSVRDb2RlPihqaXQsIHZtLCBKSVRDb2Rl
OjpERkdKSVQpOwotICAgIAotICAgIHNpemVfdCBzY3JhdGNoU2l6ZSA9IHNpemVvZihFbmNvZGVk
SlNWYWx1ZSkgKiAoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjpudW1iZXJP
ZlJlZ2lzdGVycyk7Ci0gICAgU2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1ZmZlciA9IHZtLT5zY3Jh
dGNoQnVmZmVyRm9yU2l6ZShzY3JhdGNoU2l6ZSk7Ci0gICAgRW5jb2RlZEpTVmFsdWUqIGJ1ZmZl
ciA9IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZl
cigpKTsKLSAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVy
T2ZSZWdpc3RlcnM7ICsraSkgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGppdC5zdG9y
ZTY0KEdQUkluZm86OnRvUmVnaXN0ZXIoaSksIGJ1ZmZlciArIGkpOwotI2Vsc2UKLSAgICAgICAg
aml0LnN0b3JlMzIoR1BSSW5mbzo6dG9SZWdpc3RlcihpKSwgYnVmZmVyICsgaSk7Ci0jZW5kaWYK
LSAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVn
aXN0ZXJzOyArK2kpIHsKLSAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIoYnVmZmVyICsgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSwgR1BSSW5mbzo6
cmVnVDApOwotICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6dG9SZWdpc3RlcihpKSwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApKTsKLSAgICB9Ci0gICAgCi0g
ICAgLy8gVGVsbCBHQyBtYXJrIHBoYXNlIGhvdyBtdWNoIG9mIHRoZSBzY3JhdGNoIGJ1ZmZlciBp
cyBhY3RpdmUgZHVyaW5nIGNhbGwuCi0gICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZv
OjpyZWdUMCk7Ci0gICAgaml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KHNjcmF0Y2hTaXplKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApKTsK
LQotICAgIC8vIFNldCB1cCBvbmUgYXJndW1lbnQuCi0jaWYgQ1BVKFg4NikKLSAgICBqaXQucG9r
ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgMCk7Ci0jZWxzZQotICAgIGppdC5tb3ZlKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotI2VuZGlm
Ci0KLSAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBmdW5jdGlvbkNhbGwgPSBqaXQuY2FsbCgpOwot
Ci0gICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZl
ci0+YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgaml0LnN0
b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDApLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCkpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSAgICAgICAgaml0Lm1vdmUoTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoYnVmZmVyICsgR1BSSW5mbzo6bnVtYmVyT2ZSZWdp
c3RlcnMgKyBpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICBqaXQubG9hZERvdWJsZShNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCksIEZQUkluZm86OnRvUmVnaXN0ZXIo
aSkpOwotICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVy
T2ZSZWdpc3RlcnM7ICsraSkgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGppdC5sb2Fk
NjQoYnVmZmVyICsgaSwgR1BSSW5mbzo6dG9SZWdpc3RlcihpKSk7Ci0jZWxzZQotICAgICAgICBq
aXQubG9hZDMyKGJ1ZmZlciArIGksIEdQUkluZm86OnRvUmVnaXN0ZXIoaSkpOwotI2VuZGlmCi0g
ICAgfQotICAgIAotICAgIGppdC5qdW1wKE1hY3JvQXNzZW1ibGVyOjpBYnNvbHV0ZUFkZHJlc3Mo
JnZtLT5vc3JFeGl0SnVtcERlc3RpbmF0aW9uKSk7Ci0gICAgCisgICAgaml0LnByb2JlKE9TUkV4
aXQ6OmV4ZWN1dGVPU1JFeGl0LCB2bSk7CiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQs
IEdMT0JBTF9USFVOS19JRCk7Ci0gICAgCi0gICAgcGF0Y2hCdWZmZXIubGluayhmdW5jdGlvbkNh
bGwsIE9TUkV4aXQ6OmNvbXBpbGVPU1JFeGl0KTsKLSAgICAKLSAgICByZXR1cm4gRklOQUxJWkVf
Q09ERShwYXRjaEJ1ZmZlciwgKCJERkcgT1NSIGV4aXQgZ2VuZXJhdGlvbiB0aHVuayIpKTsKKyAg
ICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJERkcgT1NSIGV4aXQgdGh1bmsi
KSk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFbnRyeVRodW5rR2VuZXJhdG9yKFZN
KiB2bSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuaAkocmV2aXNpb24g
MjIxODMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFZNOwogCiBuYW1lc3BhY2UgREZHIHsK
IAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3Io
Vk0qKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0VGh1bmtHZW5lcmF0b3IoVk0qKTsK
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CiAKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDIyMTgzMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAs
NiArNTAsNyBAQCBFeGVjdXRhYmxlQmFzZSogQXNzZW1ibHlIZWxwZXJzOjpleGVjdXRhCiAgICAg
cmV0dXJuIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCk7CiB9CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1LgogVmVjdG9yPEJ5
dGVjb2RlQW5kTWFjaGluZU9mZnNldD4mIEFzc2VtYmx5SGVscGVyczo6ZGVjb2RlZENvZGVNYXBG
b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgQVNTRVJUKGNvZGVCbG9jayA9PSBjb2Rl
QmxvY2stPmJhc2VsaW5lVmVyc2lvbigpKTsKQEAgLTgyMCw2MSArODIxLDYgQEAgYm9vbCBBc3Nl
bWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHROZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFT
U0VNQkxZKQogCi12b2lkIEFzc2VtYmx5SGVscGVyczo6ZGVidWdDYWxsKFZNJiB2bSwgVl9EZWJ1
Z09wZXJhdGlvbl9FUFAgZnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50KQotewotICAgIHNpemVfdCBz
Y3JhdGNoU2l6ZSA9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiAoR1BSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnMgKyBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyk7Ci0gICAgU2NyYXRjaEJ1ZmZl
ciogc2NyYXRjaEJ1ZmZlciA9IHZtLnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNjcmF0Y2hTaXplKTsK
LSAgICBFbmNvZGVkSlNWYWx1ZSogYnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUq
PihzY3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKLSNpZiBVU0UoSlNWQUxV
RTY0KQotICAgICAgICBzdG9yZTY0KEdQUkluZm86OnRvUmVnaXN0ZXIoaSksIGJ1ZmZlciArIGkp
OwotI2Vsc2UKLSAgICAgICAgc3RvcmUzMihHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpLCBidWZmZXIg
KyBpKTsKLSNlbmRpZgotICAgIH0KLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJ
bmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihidWZmZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZvOjpyZWdU
MCk7Ci0gICAgICAgIHN0b3JlRG91YmxlKEZQUkluZm86OnRvUmVnaXN0ZXIoaSksIEdQUkluZm86
OnJlZ1QwKTsKLSAgICB9Ci0KLSAgICAvLyBUZWxsIEdDIG1hcmsgcGhhc2UgaG93IG11Y2ggb2Yg
dGhlIHNjcmF0Y2ggYnVmZmVyIGlzIGFjdGl2ZSBkdXJpbmcgY2FsbC4KLSAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZv
OjpyZWdUMCk7Ci0gICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihzY3JhdGNoU2l6ZSksIEdQUklu
Zm86OnJlZ1QwKTsKLQotI2lmIENQVShYODZfNjQpIHx8IENQVShBUk0pIHx8IENQVShBUk02NCkg
fHwgQ1BVKE1JUFMpCi0gICAgbW92ZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciksIEdQUkluZm86OmFy
Z3VtZW50R1BSMik7Ci0gICAgbW92ZShUcnVzdGVkSW1tUHRyKGFyZ3VtZW50KSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKLSAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwotICAgIEdQUlJlZyBzY3JhdGNoID0gc2VsZWN0U2NyYXRjaEdQ
UihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIyKTsKLSNlbGlmIENQVShYODYpCi0gICAgcG9rZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgMCk7Ci0gICAgcG9rZShUcnVzdGVkSW1tUHRyKGFyZ3VtZW50KSwgMSk7Ci0g
ICAgcG9rZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciksIDIpOwotICAgIEdQUlJlZyBzY3JhdGNoID0g
R1BSSW5mbzo6cmVnVDA7Ci0jZWxzZQotI2Vycm9yICJKSVQgbm90IHN1cHBvcnRlZCBvbiB0aGlz
IHBsYXRmb3JtLiIKLSNlbmRpZgotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9j
YXN0PHZvaWQqPihmdW5jdGlvbikpLCBzY3JhdGNoKTsKLSAgICBjYWxsKHNjcmF0Y2gpOwotCi0g
ICAgbW92ZShUcnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFkZHJlc3NPZkFjdGl2ZUxlbmd0
aCgpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEdQ
UkluZm86OnJlZ1QwKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpu
dW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihidWZm
ZXIgKyBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZvOjpyZWdUMCk7Ci0g
ICAgICAgIGxvYWREb3VibGUoR1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OnRvUmVnaXN0ZXIoaSkp
OwotICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnM7ICsraSkgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGxvYWQ2NChidWZm
ZXIgKyBpLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKLSNlbHNlCi0gICAgICAgIGxvYWQzMihi
dWZmZXIgKyBpLCBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKLSNlbmRpZgotICAgIH0KLX0KLQog
dm9pZCBBc3NlbWJseUhlbHBlcnM6OmNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVl
U2F2ZXNCdWZmZXJJbXBsKEdQUlJlZyBjYWxsZWVTYXZlc0J1ZmZlcikKIHsKICNpZiBOVU1CRVJf
T0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMjIxODMxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtOTky
LDkgKzk5Miw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEdQUkluZm86OnJlZ1Q1OwogICAg
IH0KIAotICAgIC8vIEFkZCBhIGRlYnVnIGNhbGwuIFRoaXMgY2FsbCBoYXMgbm8gZWZmZWN0IG9u
IEpJVCBjb2RlIGV4ZWN1dGlvbiBzdGF0ZS4KLSAgICB2b2lkIGRlYnVnQ2FsbChWTSYsIFZfRGVi
dWdPcGVyYXRpb25fRVBQIGZ1bmN0aW9uLCB2b2lkKiBhcmd1bWVudCk7Ci0KICAgICAvLyBUaGVz
ZSBtZXRob2RzIEpJVCBnZW5lcmF0ZSBkeW5hbWljLCBkZWJ1Zy1vbmx5IGNoZWNrcyAtIGFraW4g
dG8gQVNTRVJUcy4KICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgdm9pZCBqaXRBc3NlcnRJc0lu
dDMyKEdQUlJlZyk7CkBAIC0xNDY1LDYgKzE0NjIsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9p
ZCBlbWl0RHVtYlZpcnR1YWxDYWxsKFZNJiwgQ2FsbExpbmtJbmZvKik7CiAgICAgCisgICAgLy8g
RklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzUxNDUuCiAgICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNl
dD4mIGRlY29kZWRDb2RlTWFwRm9yKENvZGVCbG9jayopOwogCiAgICAgdm9pZCBtYWtlU3BhY2VP
blN0YWNrRm9yQ0NhbGwoKTsKQEAgLTE2NTYsNiArMTY1NCw3IEBAIHByb3RlY3RlZDoKICAgICBD
b2RlQmxvY2sqIG1fY29kZUJsb2NrOwogICAgIENvZGVCbG9jayogbV9iYXNlbGluZUNvZGVCbG9j
azsKIAorICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1LgogICAgIEhhc2hNYXA8Q29kZUJsb2Nr
KiwgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4+IG1fZGVjb2RlZENvZGVNYXBzOwog
fTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CShyZXZpc2lvbiAyMjE4MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzA3LDYgKzIzMDcsNyBAQCBjaGFyKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblJlYWxsb2NhdGVCCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KHJlc3VsdCk7CiB9CiAKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZp
eCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgogdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9TUldyaXRlQmFycmllcihFeGVjU3RhdGUqIGV4ZWMsIEpT
Q2VsbCogY2VsbCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMjE4MzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtNDQ3LDYgKzQ0Nyw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0
ZUIKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZUJ1dHRlcmZseVRvR3Jv
d1Byb3BlcnR5U3RvcmFnZShFeGVjU3RhdGUqLCBKU09iamVjdCosIHNpemVfdCBuZXdTaXplKSBX
VEZfSU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Xcml0ZUJhcnJpZXJT
bG93UGF0aChFeGVjU3RhdGUqLCBKU0NlbGwqKTsKKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVu
IHdlIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQ1Lgog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9TUldyaXRlQmFycmllcihFeGVjU3RhdGUqLCBK
U0NlbGwqKTsKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enooRXhl
Y1N0YXRlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJP
U1JFeGl0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGVyT1NSRXhpdC5oCShyZXZpc2lvbiAyMjE4MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNyArNDMsOCBA
QCBwdWJsaWM6CiAgICAgCiAgICAgdWludDY0X3QqIGNvdW50ZXJBZGRyZXNzKCkgeyByZXR1cm4g
Jm1fY291bnRlcjsgfQogICAgIHVpbnQ2NF90IGNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3Vu
dGVyOyB9Ci0gICAgCisgICAgdm9pZCBpbmNDb3VudCgpIHsgbV9jb3VudGVyKys7IH0KKwogICAg
IEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqKSBjb25zdDsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlzaW9uIDIyMTgzMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFy
cmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIg
S2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUs
IDIwMDcsIDIwMDgsIDIwMDksIDIwMTIsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNDQsMTIgKzM0NCw5IEBAIHB1Ymxp
YzoKICAgICB1aW50MzJfdCB0YWcoKSBjb25zdDsKICAgICBpbnQzMl90IHBheWxvYWQoKSBjb25z
dDsKIAotI2lmICFFTkFCTEUoSklUKQotICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBi
eSB0aGUgTExJbnQgQyBMb29wIGludGVycHJldGVyIHdobyBuZWVkcwotICAgIC8vIHN5bnRoZXNp
emUgSlNWYWx1ZSBmcm9tIGl0cyAicmVnaXN0ZXIicyBob2xkaW5nIHRhZyBhbmQgcGF5bG9hZAot
ICAgIC8vIHZhbHVlcy4KKyAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgdGhlIExM
SW50IEMgTG9vcCBpbnRlcnByZXRlciBhbmQgT1NSRXhpdCBjb2RlIHdobyBuZWVkcworICAgIC8v
IHN5bnRoZXNpemUgSlNWYWx1ZSBmcm9tIGl0cyAicmVnaXN0ZXIicyBob2xkaW5nIHRhZyBhbmQg
cGF5bG9hZCB2YWx1ZXMuCiAgICAgZXhwbGljaXQgSlNWYWx1ZShpbnQzMl90IHRhZywgaW50MzJf
dCBwYXlsb2FkKTsKLSNlbmRpZgogCiAjZWxpZiBVU0UoSlNWQUxVRTY0KQogICAgIC8qCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVz
LmgJKHJldmlzaW9uIDIyMTgzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0MCw3ICszNDAsNyBAQCBpbmxp
bmUgSlNWYWx1ZTo6SlNWYWx1ZShpbnQgaSkKICAgICB1LmFzQml0cy5wYXlsb2FkID0gaTsKIH0K
IAotI2lmICFFTkFCTEUoSklUKQorI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiBpbmxpbmUgSlNWYWx1
ZTo6SlNWYWx1ZShpbnQzMl90IHRhZywgaW50MzJfdCBwYXlsb2FkKQogewogICAgIHUuYXNCaXRz
LnRhZyA9IHRhZzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24g
MjIxODMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBj
b3B5KQpAQCAtNTcxLDcgKzU3MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkKiB0YXJnZXRNYWNoaW5l
UENGb3JUaHJvdzsKICAgICBJbnN0cnVjdGlvbiogdGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93
OwogICAgIHVpbnQzMl90IG9zckV4aXRJbmRleDsKLSAgICB2b2lkKiBvc3JFeGl0SnVtcERlc3Rp
bmF0aW9uOwogICAgIGJvb2wgaXNFeGVjdXRpbmdJblJlZ0V4cEpJVCB7IGZhbHNlIH07CiAKICAg
ICAvLyBUaGUgdGhyZWFkaW5nIHByb3RvY29sIGhlcmUgaXMgYXMgZm9sbG93czoK
</data>

          </attachment>
      

    </bug>

</bugzilla>