<?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>122762</bug_id>
          
          <creation_ts>2013-10-14 10:31:00 -0700</creation_ts>
          <short_desc>[iOS] Upstream JavaScriptCore support for ARM64</short_desc>
          <delta_ts>2013-10-15 15:15:10 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>122796</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>aestes</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dfarler</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>oliver</cc>
    
    <cc>philn</cc>
    
    <cc>rniwa</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>939507</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-10-14 10:31:00 -0700</bug_when>
    <thetext>Upstream ARM64 infrastructure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939508</commentid>
    <comment_count>1</comment_count>
      <attachid>214162</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-10-14 10:33:27 -0700</bug_when>
    <thetext>Created attachment 214162
WTF changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939510</commentid>
    <comment_count>2</comment_count>
      <attachid>214163</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-10-14 10:33:46 -0700</bug_when>
    <thetext>Created attachment 214163
Build system changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939511</commentid>
    <comment_count>3</comment_count>
      <attachid>214164</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-10-14 10:34:22 -0700</bug_when>
    <thetext>Created attachment 214164
JIT changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939512</commentid>
    <comment_count>4</comment_count>
      <attachid>214165</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-10-14 10:35:01 -0700</bug_when>
    <thetext>Created attachment 214165
Assembler and disassembler changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939514</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-14 10:35:39 -0700</bug_when>
    <thetext>Attachment 214162 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/Atomics.h&apos;, u&apos;Source/WTF/wtf/FastMalloc.cpp&apos;, u&apos;Source/WTF/wtf/Platform.h&apos;, u&apos;Source/WTF/wtf/dtoa.cpp&apos;, u&apos;Source/WTF/wtf/dtoa/utils.h&apos;, u&apos;Source/WTF/wtf/text/ASCIIFastPath.h&apos;, u&apos;Source/WTF/wtf/text/StringImpl.h&apos;]&quot; exit_code: 1
Source/WTF/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 1 in 8 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>939515</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-14 10:36:46 -0700</bug_when>
    <thetext>Attachment 214164 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/jit/AssemblyHelpers.h&apos;, u&apos;Source/JavaScriptCore/jit/CCallHelpers.h&apos;, u&apos;Source/JavaScriptCore/jit/ExecutableAllocator.h&apos;, u&apos;Source/JavaScriptCore/jit/FPRInfo.h&apos;, u&apos;Source/JavaScriptCore/jit/GPRInfo.h&apos;, u&apos;Source/JavaScriptCore/jit/JITInlines.h&apos;, u&apos;Source/JavaScriptCore/jit/JITOperationWrappers.h&apos;, u&apos;Source/JavaScriptCore/jit/JITOperations.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITStubs.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITStubs.h&apos;, u&apos;Source/JavaScriptCore/jit/JITStubsARM64.h&apos;, u&apos;Source/JavaScriptCore/jit/JSInterfaceJIT.h&apos;, u&apos;Source/JavaScriptCore/jit/Repatch.cpp&apos;, u&apos;Source/JavaScriptCore/jit/ScratchRegisterAllocator.h&apos;, u&apos;Source/JavaScriptCore/jit/ThunkGenerators.cpp&apos;]&quot; exit_code: 1
Source/JavaScriptCore/jit/JITOperations.cpp:971:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/JITOperations.cpp:978:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/jit/JITOperations.cpp:979:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/jit/JITOperations.cpp:980:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/ThunkGenerators.cpp:424:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/jit/GPRInfo.h:547:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/JavaScriptCore/jit/JITStubsARM64.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/JITStubsARM64.h:63:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/jit/JITStubsARM64.h:130:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JITStubsARM64.h:132:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/JITStubsARM64.h:133:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/jit/JITStubsARM64.h:141:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JITStubsARM64.h:147:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/JITStubsARM64.h:148:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/JavaScriptCore/jit/JITOperationWrappers.h:88:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 15 in 15 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>939516</commentid>
    <comment_count>7</comment_count>
      <attachid>214166</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-10-14 10:37:19 -0700</bug_when>
    <thetext>Created attachment 214166
Yarr and DFG changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939517</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-14 10:37:21 -0700</bug_when>
    <thetext>Attachment 214165 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/assembler/ARM64Assembler.h&apos;, u&apos;Source/JavaScriptCore/assembler/AbstractMacroAssembler.h&apos;, u&apos;Source/JavaScriptCore/assembler/LinkBuffer.cpp&apos;, u&apos;Source/JavaScriptCore/assembler/LinkBuffer.h&apos;, u&apos;Source/JavaScriptCore/assembler/MacroAssembler.h&apos;, u&apos;Source/JavaScriptCore/assembler/MacroAssemblerARM64.h&apos;, u&apos;Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h&apos;, u&apos;Source/JavaScriptCore/disassembler/ARM64/A64DOpcode.cpp&apos;, u&apos;Source/JavaScriptCore/disassembler/ARM64/A64DOpcode.h&apos;, u&apos;Source/JavaScriptCore/disassembler/ARM64Disassembler.cpp&apos;]&quot; exit_code: 1
Source/JavaScriptCore/disassembler/ARM64/A64DOpcode.cpp:28:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Source/JavaScriptCore/disassembler/ARM64/A64DOpcode.cpp:38:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/disassembler/ARM64/A64DOpcode.cpp:39:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/disassembler/ARM64/A64DOpcode.cpp:314:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Source/JavaScriptCore/disassembler/ARM64/A64DOpcode.cpp:404:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/JavaScriptCore/disassembler/ARM64/A64DOpcode.cpp:529:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/JavaScriptCore/disassembler/ARM64/A64DOpcode.cpp:748:  Missing spaces around |  [whitespace/operators] [3]
Source/JavaScriptCore/disassembler/ARM64/A64DOpcode.cpp:862:  Missing space before ( in switch(  [whitespace/parens] [5]
Source/JavaScriptCore/disassembler/ARM64/A64DOpcode.h:29:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/disassembler/ARM64/A64DOpcode.h:202:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1350:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1352:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1353:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1354:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1357:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1361:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1366:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1371:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1376:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1711:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:2281:  Missing spaces around /  [whitespace/operators] [3]
Source/JavaScriptCore/assembler/ARM64Assembler.h:26:  #ifndef header guard has wrong style, please use: ARM64Assembler_h  [build/header_guard] [5]
Source/JavaScriptCore/assembler/ARM64Assembler.h:33:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/assembler/ARM64Assembler.h:350:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/assembler/ARM64Assembler.h:497:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/JavaScriptCore/assembler/ARM64Assembler.h:2508:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/assembler/ARM64Assembler.h:2886:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/JavaScriptCore/assembler/ARM64Assembler.h:2887:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/JavaScriptCore/assembler/ARM64Assembler.h:2888:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/JavaScriptCore/assembler/ARM64Assembler.h:2889:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/JavaScriptCore/assembler/ARM64Assembler.h:3090:  Omit int when using unsigned  [runtime/unsigned] [1]
Source/JavaScriptCore/assembler/MacroAssembler.h:39:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/disassembler/ARM64Disassembler.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 33 in 10 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>939518</commentid>
    <comment_count>9</comment_count>
      <attachid>214167</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-10-14 10:37:37 -0700</bug_when>
    <thetext>Created attachment 214167
Offlineasm changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939519</commentid>
    <comment_count>10</comment_count>
      <attachid>214168</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-10-14 10:38:00 -0700</bug_when>
    <thetext>Created attachment 214168
LLInt changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939522</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-14 10:39:52 -0700</bug_when>
    <thetext>Attachment 214166 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/dfg/DFGFixupPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExitCompiler32_64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExitCompiler64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp&apos;, u&apos;Source/JavaScriptCore/heap/MachineStackMarker.cpp&apos;, u&apos;Source/JavaScriptCore/heap/Region.h&apos;, u&apos;Source/JavaScriptCore/yarr/YarrJIT.cpp&apos;, u&apos;Source/JavaScriptCore/yarr/YarrJIT.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Source/JavaScriptCore/heap/MachineStackMarker.cpp:342:  user_count is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 in 9 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>939529</commentid>
    <comment_count>12</comment_count>
      <attachid>214167</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-14 10:50:39 -0700</bug_when>
    <thetext>Comment on attachment 214167
Offlineasm changes

Attachment 214167 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/3950884</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939532</commentid>
    <comment_count>13</comment_count>
      <attachid>214162</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-10-14 10:54:32 -0700</bug_when>
    <thetext>Comment on attachment 214162
WTF changes

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

&gt;&gt; Source/WTF/ChangeLog:1
&gt;&gt; +2013-10-11  Daniel Bates  &lt;dabates@apple.com&gt;
&gt; 
&gt; ChangeLog entry has no bug number  [changelog/bugnumber] [5]

inlude the bug#</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939534</commentid>
    <comment_count>14</comment_count>
      <attachid>214163</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-10-14 10:55:53 -0700</bug_when>
    <thetext>Comment on attachment 214163
Build system changes

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

&gt; Source/JavaScriptCore/Configurations/Base.xcconfig:62
&gt; +GCC_WARN_64_TO_32_BIT_CONVERSION_arm64 = NO;

That looks like something we&apos;ll need to fix -- filing a bug would be nice :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939537</commentid>
    <comment_count>15</comment_count>
      <attachid>214164</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-10-14 10:57:54 -0700</bug_when>
    <thetext>Comment on attachment 214164
JIT changes

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

&gt;&gt; Source/JavaScriptCore/jit/ThunkGenerators.cpp:424
&gt;&gt; +    // Calling convention:      f(edi, esi, edx, ecx, ...);
&gt; 
&gt; Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]

this comment is clearly wrong, bug to fix it  please</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939538</commentid>
    <comment_count>16</comment_count>
      <attachid>214167</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-14 10:59:29 -0700</bug_when>
    <thetext>Comment on attachment 214167
Offlineasm changes

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

&gt; Source/JavaScriptCore/offlineasm/risc_arm64.rb:31
&gt; +# Copyright (C) 2012 Apple Inc. All rights reserved.
&gt; +#
&gt; +# Redistribution and use in source and binary forms, with or without
&gt; +# modification, are permitted provided that the following conditions
&gt; +# are met:
&gt; +# 1. Redistributions of source code must retain the above copyright
&gt; +#    notice, this list of conditions and the following disclaimer.
&gt; +# 2. Redistributions in binary form must reproduce the above copyright
&gt; +#    notice, this list of conditions and the following disclaimer in the
&gt; +#    documentation and/or other materials provided with the distribution.
&gt; +#
&gt; +# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS&apos;&apos;
&gt; +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
&gt; +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
&gt; +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
&gt; +# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
&gt; +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
&gt; +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
&gt; +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
&gt; +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
&gt; +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
&gt; +# THE POSSIBILITY OF SUCH DAMAGE.
&gt; +
&gt; +require &apos;ast&apos;
&gt; +require &apos;opt&apos;
&gt; +require &apos;risc&apos;
&gt; +
&gt; +# This file contains utilities that should be in risc.rb if it wasn&apos;t for the
&gt; +# fact that risc.rb is shared with the ARMv7 backend, and may be part of a
&gt; +# code dump before ARM64 goes public.
&gt; +#

I would merge this entire file with risk.rb.

&gt; Source/JavaScriptCore/offlineasm/risc_arm64.rb:32
&gt; +# FIXME: when ARM64 goes public, we should merge this file into risc.rb

:-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939541</commentid>
    <comment_count>17</comment_count>
      <attachid>214165</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-10-14 11:02:23 -0700</bug_when>
    <thetext>Comment on attachment 214165
Assembler and disassembler changes

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

&gt;&gt; Source/JavaScriptCore/assembler/ARM64Assembler.h:497
&gt;&gt; +        S
&gt; 
&gt; enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]

Thi should really have a name beyond &quot;S&quot;

&gt;&gt; Source/JavaScriptCore/assembler/ARM64Assembler.h:2886
&gt;&gt; +        return expected &amp;&amp;
&gt; 
&gt; Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]

Can you file a bug on style errors like this, they&apos;re gratuitous and i suspect a byproduct of an absence of a style checker being run on this code :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939543</commentid>
    <comment_count>18</comment_count>
      <attachid>214163</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-14 11:02:36 -0700</bug_when>
    <thetext>Comment on attachment 214163
Build system changes

Attachment 214163 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/3945812</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939545</commentid>
    <comment_count>19</comment_count>
      <attachid>214164</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-14 11:07:44 -0700</bug_when>
    <thetext>Comment on attachment 214164
JIT changes

Attachment 214164 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/3776931</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939547</commentid>
    <comment_count>20</comment_count>
      <attachid>214165</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-14 11:11:32 -0700</bug_when>
    <thetext>Comment on attachment 214165
Assembler and disassembler changes

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

&gt;&gt;&gt; Source/JavaScriptCore/assembler/ARM64Assembler.h:497
&gt;&gt;&gt; +        S
&gt;&gt; 
&gt;&gt; enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
&gt; 
&gt; Thi should really have a name beyond &quot;S&quot;

No.  The purpose of this is to be able to say things like add&lt;64, S&gt;, which more closely reads like actual ARM64 assembly.

&quot;S&quot; is well-known to be a flag in ARM assembly.  It goes by no other name than &quot;S&quot;.

It would greatly hurt the clarity of this code if we made this more than just S.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939549</commentid>
    <comment_count>21</comment_count>
      <attachid>214166</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-14 11:12:24 -0700</bug_when>
    <thetext>Comment on attachment 214166
Yarr and DFG changes

Attachment 214166 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/3949823</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939550</commentid>
    <comment_count>22</comment_count>
      <attachid>214164</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-14 11:16:14 -0700</bug_when>
    <thetext>Comment on attachment 214164
JIT changes

Attachment 214164 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/3403996</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939555</commentid>
    <comment_count>23</comment_count>
      <attachid>214163</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-14 11:20:38 -0700</bug_when>
    <thetext>Comment on attachment 214163
Build system changes

Attachment 214163 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/3945814</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939557</commentid>
    <comment_count>24</comment_count>
      <attachid>214166</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-14 11:21:10 -0700</bug_when>
    <thetext>Comment on attachment 214166
Yarr and DFG changes

Attachment 214166 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/3885863</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939558</commentid>
    <comment_count>25</comment_count>
      <attachid>214164</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-14 11:21:26 -0700</bug_when>
    <thetext>Comment on attachment 214164
JIT changes

Attachment 214164 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/3948752</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939567</commentid>
    <comment_count>26</comment_count>
      <attachid>214164</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-14 11:39:40 -0700</bug_when>
    <thetext>Comment on attachment 214164
JIT changes

Attachment 214164 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/3954851</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939569</commentid>
    <comment_count>27</comment_count>
      <attachid>214164</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-10-14 11:42:05 -0700</bug_when>
    <thetext>Comment on attachment 214164
JIT changes

Attachment 214164 did not pass gtk-wk2-ews (gtk-wk2):
Output: http://webkit-queues.appspot.com/results/3945821</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939581</commentid>
    <comment_count>28</comment_count>
      <attachid>214166</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-14 12:00:53 -0700</bug_when>
    <thetext>Comment on attachment 214166
Yarr and DFG changes

Attachment 214166 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/3885883</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939610</commentid>
    <comment_count>29</comment_count>
      <attachid>214164</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-14 13:13:34 -0700</bug_when>
    <thetext>Comment on attachment 214164
JIT changes

Attachment 214164 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/3946896</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939614</commentid>
    <comment_count>30</comment_count>
      <attachid>214166</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-14 13:24:28 -0700</bug_when>
    <thetext>Comment on attachment 214166
Yarr and DFG changes

Attachment 214166 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/3766936</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939732</commentid>
    <comment_count>31</comment_count>
      <attachid>214209</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-10-14 17:28:36 -0700</bug_when>
    <thetext>Created attachment 214209
Offlineasm changes

Merged the contents of file offlineasm/risc_arm64.rb into file offlineasm/risc.rb per Filip Pizlo&apos;s remark.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939734</commentid>
    <comment_count>32</comment_count>
      <attachid>214209</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-14 17:34:00 -0700</bug_when>
    <thetext>Comment on attachment 214209
Offlineasm changes

Attachment 214209 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/3799027</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939736</commentid>
    <comment_count>33</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-10-14 17:35:07 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; Source/JavaScriptCore/Configurations/Base.xcconfig:62
&gt; &gt; +GCC_WARN_64_TO_32_BIT_CONVERSION_arm64 = NO;
&gt; 
&gt; That looks like something we&apos;ll need to fix -- filing a bug would be nice :)

Filed bug #122791.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939737</commentid>
    <comment_count>34</comment_count>
      <attachid>214209</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-14 17:35:17 -0700</bug_when>
    <thetext>Comment on attachment 214209
Offlineasm changes

Attachment 214209 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/4036011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939741</commentid>
    <comment_count>35</comment_count>
      <attachid>214210</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-10-14 17:41:26 -0700</bug_when>
    <thetext>Created attachment 214210
Offlineasm changes

Remove inclusion of module risc_arm64 from file Source/JavaScriptCore/offlineasm/arm64.rb since we merged module risc_arm64 into module risc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939750</commentid>
    <comment_count>36</comment_count>
      <attachid>214210</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-14 17:46:19 -0700</bug_when>
    <thetext>Comment on attachment 214210
Offlineasm changes

Attachment 214210 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/4039006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939752</commentid>
    <comment_count>37</comment_count>
      <attachid>214210</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-14 17:48:27 -0700</bug_when>
    <thetext>Comment on attachment 214210
Offlineasm changes

Attachment 214210 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/4025006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939764</commentid>
    <comment_count>38</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-10-14 17:59:50 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; &gt;&gt; Source/JavaScriptCore/jit/ThunkGenerators.cpp:424
&gt; &gt;&gt; +    // Calling convention:      f(edi, esi, edx, ecx, ...);
&gt; &gt; 
&gt; [...]
&gt; this comment is clearly wrong, bug to fix it  please

Filed bug #122796. Can you save me some time; do you know what the correct calling convention is for ARM64? Otherwise, I&apos;ll look into fixing this comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939768</commentid>
    <comment_count>39</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-10-14 18:04:08 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt;&gt; Source/WTF/ChangeLog:1
&gt; &gt;&gt; +2013-10-11  Daniel Bates  &lt;dabates@apple.com&gt;
&gt; &gt; 
&gt; &gt; ChangeLog entry has no bug number  [changelog/bugnumber] [5]
&gt; 
&gt; inlude the bug#

I will fix up the change log entries when I concatenate all the reviewed patches to make a single commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939772</commentid>
    <comment_count>40</comment_count>
      <attachid>214210</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-14 18:10:05 -0700</bug_when>
    <thetext>Comment on attachment 214210
Offlineasm changes

Attachment 214210 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/3461046</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939782</commentid>
    <comment_count>41</comment_count>
      <attachid>214210</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-14 18:28:17 -0700</bug_when>
    <thetext>Comment on attachment 214210
Offlineasm changes

Attachment 214210 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/4025004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939797</commentid>
    <comment_count>42</comment_count>
      <attachid>214164</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-10-14 19:18:27 -0700</bug_when>
    <thetext>Comment on attachment 214164
JIT changes

Attachment 214164 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/4041011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939811</commentid>
    <comment_count>43</comment_count>
      <attachid>214166</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-10-14 20:12:00 -0700</bug_when>
    <thetext>Comment on attachment 214166
Yarr and DFG changes

Attachment 214166 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/4060051</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939870</commentid>
    <comment_count>44</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2013-10-14 23:24:19 -0700</bug_when>
    <thetext>Wow, 64 bit ARM support in JSC! This is great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940052</commentid>
    <comment_count>45</comment_count>
      <attachid>214210</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-15 11:20:13 -0700</bug_when>
    <thetext>Comment on attachment 214210
Offlineasm changes

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

&gt; Source/JavaScriptCore/offlineasm/x86.rb:49
&gt; -class SpecialRegister &lt; NoChildren
&gt; +class SpecialRegister

I think you want to revert this.  It looks like a bug fix that landed on trunk but that was reverted by accident in our ARM64 work.  Also, it has nothing to do with arm64 - this is in the x86 file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940053</commentid>
    <comment_count>46</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-10-15 11:22:43 -0700</bug_when>
    <thetext>(In reply to comment #45)
&gt; &gt; Source/JavaScriptCore/offlineasm/x86.rb:49
&gt; &gt; -class SpecialRegister &lt; NoChildren
&gt; &gt; +class SpecialRegister
&gt; 
&gt; I think you want to revert this.  It looks like a bug fix that landed on trunk but that was reverted by accident in our ARM64 work.  Also, it has nothing to do with arm64 - this is in the x86 file.

Will revert change before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940155</commentid>
    <comment_count>47</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-10-15 15:15:10 -0700</bug_when>
    <thetext>Committed r157474: &lt;http://trac.webkit.org/changeset/157474&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214162</attachid>
            <date>2013-10-14 10:33:27 -0700</date>
            <delta_ts>2013-10-14 10:54:32 -0700</delta_ts>
            <desc>WTF changes</desc>
            <filename>0001-Changes-to-WTF.patch</filename>
            <type>text/plain</type>
            <size>10500</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSAzOTFhYjQ5NDczMDhiYTMwOWE0MWU2ODcyNmVlMDQ5MjkzODQyNTE4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRiYXRlc0B3ZWJraXQub3JnPgpEYXRl
OiBNb24sIDE0IE9jdCAyMDEzIDEwOjA2OjMzIC0wNzAwClN1YmplY3Q6IFtQQVRDSCAxLzhdIENo
YW5nZXMgdG8gV1RGCgotLS0KIFNvdXJjZS9XVEYvQ2hhbmdlTG9nICAgICAgICAgICAgICAgIHwg
MTkgKysrKysrKysrKysrKysrKysrKwogU291cmNlL1dURi93dGYvQXRvbWljcy5oICAgICAgICAg
ICAgfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogU291cmNlL1dURi93dGYv
RmFzdE1hbGxvYy5jcHAgICAgICAgfCAgMiArLQogU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCAg
ICAgICAgICAgfCAyOSArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQogU291cmNlL1dURi93
dGYvZHRvYS5jcHAgICAgICAgICAgICAgfCAgMiArLQogU291cmNlL1dURi93dGYvZHRvYS91dGls
cy5oICAgICAgICAgfCAgMiArLQogU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUZhc3RQYXRoLmgg
fCAyMSArKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5oICAgIHwgIDIgKy0KIDggZmlsZXMgY2hhbmdlZCwgOTcgaW5zZXJ0aW9ucygrKSwgMTIgZGVs
ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCAyMzY1ZTk1Li43Y2RhNGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisy
MDEzLTEwLTExICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBb
aU9TXSBVcHN0cmVhbSBKYXZhU2NyaXB0Q29yZSBzdXBwb3J0IGZvciBBUk02NAorICAgICAgICBO
ZWVkIHRoZSBidWcgVVJMIChPT1BTISkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnOgorICAgICAg
ICAqIHd0Zi9BdG9taWNzLmg6CisgICAgICAgIChXVEY6OndlYWtDb21wYXJlQW5kU3dhcCk6Cisg
ICAgICAgIChXVEY6OmFybVY3X2RtYik6CisgICAgICAgICogd3RmL0Zhc3RNYWxsb2MuY3BwOgor
ICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAqIHd0Zi9kdG9hLmNwcDoKKyAgICAg
ICAgKiB3dGYvZHRvYS91dGlscy5oOgorICAgICAgICAqIHd0Zi90ZXh0L0FTQ0lJRmFzdFBhdGgu
aDoKKyAgICAgICAgKFdURjo6Y29weUxDaGFyc0Zyb21VQ2hhclNvdXJjZSk6CisgICAgICAgICog
d3RmL3RleHQvU3RyaW5nSW1wbC5oOgorCiAyMDEzLTEwLTE0ICBaYW4gRG9iZXJzZWsgIDx6ZG9i
ZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBTdGF0aWMgYXNzZXJ0aW9ucyBpbiBXVEY6OmFk
b3B0UHRyIHNob3VsZCBwb2ludCB0byB1c2luZyBhZG9wdFJlZiBmb3IgcmVmLWNvdW50ZWQgb2Jq
ZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXRvbWljcy5oIGIvU291cmNlL1dURi93
dGYvQXRvbWljcy5oCmluZGV4IGJjMTZiNTIuLjkwZWM5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0F0b21pY3MuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgKQEAgLTE1Nyw2
ICsxNTcsMjAgQEAgaW5saW5lIGJvb2wgd2Vha0NvbXBhcmVBbmRTd2FwKHVuc2lnbmVkKiBsb2Nh
dGlvbiwgdW5zaWduZWQgZXhwZWN0ZWQsIHVuc2lnbmVkIG4KICAgICAgICAgOiAiciIoZXhwZWN0
ZWQpLCAiciIobmV3VmFsdWUpCiAgICAgICAgIDogIm1lbW9yeSIpOwogICAgIHJlc3VsdCA9ICFy
ZXN1bHQ7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgdW5zaWduZWQgdG1wOworICAgIHVuc2lnbmVk
IHJlc3VsdDsKKyAgICBhc20gdm9sYXRpbGUoCisgICAgICAgICJtb3YgJXcxLCAjMVxuXHQiCisg
ICAgICAgICJsZHhyICV3MiwgJTBcblx0IgorICAgICAgICAiY21wICV3MywgJXcyXG5cdCIKKyAg
ICAgICAgImIubmUgMGZcblx0IgorICAgICAgICAic3R4ciAldzEsICV3NCwgJTBcblx0IgorICAg
ICAgICAiMDoiCisgICAgICAgIDogIittIigqbG9jYXRpb24pLCAiPSZyIihyZXN1bHQpLCAiPSZy
Iih0bXApCisgICAgICAgIDogInIiKGV4cGVjdGVkKSwgInIiKG5ld1ZhbHVlKQorICAgICAgICA6
ICJtZW1vcnkiKTsKKyAgICByZXN1bHQgPSAhcmVzdWx0OwogI2Vsc2UKICNlcnJvciAiQmFkIGFy
Y2hpdGVjdHVyZSBmb3IgY29tcGFyZSBhbmQgc3dhcC4iCiAjZW5kaWYKQEAgLTE4Myw2ICsxOTcs
MjAgQEAgaW5saW5lIGJvb2wgd2Vha0NvbXBhcmVBbmRTd2FwKHZvaWQqdm9sYXRpbGUqIGxvY2F0
aW9uLCB2b2lkKiBleHBlY3RlZCwgdm9pZCogbmUKICAgICAgICAgOiAibWVtb3J5IgogICAgICAg
ICApOwogICAgIHJldHVybiByZXN1bHQ7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgYm9vbCByZXN1
bHQ7CisgICAgdm9pZCogdG1wOworICAgIGFzbSB2b2xhdGlsZSgKKyAgICAgICAgIm1vdiAldzEs
ICMxXG5cdCIKKyAgICAgICAgImxkeHIgJXgyLCAlMFxuXHQiCisgICAgICAgICJjbXAgJXgzLCAl
eDJcblx0IgorICAgICAgICAiYi5uZSAwZlxuXHQiCisgICAgICAgICJzdHhyICV3MSwgJXg0LCAl
MFxuXHQiCisgICAgICAgICIwOiIKKyAgICAgICAgOiAiK20iKCpsb2NhdGlvbiksICI9JnIiKHJl
c3VsdCksICI9JnIiKHRtcCkKKyAgICAgICAgOiAiciIoZXhwZWN0ZWQpLCAiciIobmV3VmFsdWUp
CisgICAgICAgIDogIm1lbW9yeSIpOworICAgIHJldHVybiAhcmVzdWx0OwogI2Vsc2UKICAgICBy
ZXR1cm4gd2Vha0NvbXBhcmVBbmRTd2FwKGJpdHdpc2VfY2FzdDx1bnNpZ25lZCo+KGxvY2F0aW9u
KSwgYml0d2lzZV9jYXN0PHVuc2lnbmVkPihleHBlY3RlZCksIGJpdHdpc2VfY2FzdDx1bnNpZ25l
ZD4obmV3VmFsdWUpKTsKICNlbmRpZgpAQCAtMjE4LDEzICsyNDYsMTMgQEAgaW5saW5lIHZvaWQg
Y29tcGlsZXJGZW5jZSgpCiAjZW5kaWYKIH0KIAotI2lmIENQVShBUk1fVEhVTUIyKQorI2lmIENQ
VShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNNjQpCiAKIC8vIEZ1bGwgbWVtb3J5IGZlbmNlLiBObyBh
Y2Nlc3NlcyB3aWxsIGZsb2F0IGFib3ZlIHRoaXMsIGFuZCBubyBhY2Nlc3NlcyB3aWxsIHNpbmsK
IC8vIGJlbG93IGl0LgogaW5saW5lIHZvaWQgYXJtVjdfZG1iKCkKIHsKLSAgICBhc20gdm9sYXRp
bGUoImRtYiIgOjo6ICJtZW1vcnkiKTsKKyAgICBhc20gdm9sYXRpbGUoImRtYiBzeSIgOjo6ICJt
ZW1vcnkiKTsKIH0KIAogLy8gTGlrZSB0aGUgYWJvdmUsIGJ1dCBvbmx5IGFmZmVjdHMgc3RvcmVz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9GYXN0TWFsbG9jLmNwcAppbmRleCA1NGJkMWQxLi5kY2YwOTM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFs
bG9jLmNwcApAQCAtMTY1OCw3ICsxNjU4LDcgQEAgdGVtcGxhdGUgPGludCBCSVRTPiBjbGFzcyBN
YXBTZWxlY3RvciB7CiB9OwogCiAjaWYgZGVmaW5lZChXVEZfQ0hBTkdFUykKLSNpZiBDUFUoWDg2
XzY0KQorI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkKIC8vIE9uIGFsbCBrbm93biBYODYt
NjQgcGxhdGZvcm1zLCB0aGUgdXBwZXIgMTYgYml0cyBhcmUgYWx3YXlzIHVudXNlZCBhbmQgdGhl
cmVmb3JlIAogLy8gY2FuIGJlIGV4Y2x1ZGVkIGZyb20gdGhlIFBhZ2VNYXAga2V5LgogLy8gU2Vl
IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvWDg2LTY0I1ZpcnR1YWxfYWRkcmVzc19zcGFj
ZV9kZXRhaWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm0uaAppbmRleCAyZmExNmUwLi5lNDQ3ZTQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgK
QEAgLTE2OCw2ICsxNjgsMTEgQEAKICNkZWZpbmUgV1RGX0NQVV9YODZfNjQgMQogI2VuZGlmCiAK
Ky8qIENQVShBUk02NCkgLSBBcHBsZSAqLworI2lmIGRlZmluZWQoX19hcm02NF9fKSAmJiBkZWZp
bmVkKF9fQVBQTEVfXykKKyNkZWZpbmUgV1RGX0NQVV9BUk02NCAxCisjZW5kaWYKKwogLyogQ1BV
KEFSTSkgLSBBUk0sIGFueSB2ZXJzaW9uKi8KICNkZWZpbmUgV1RGX0FSTV9BUkNIX0FUX0xFQVNU
KE4pIChDUFUoQVJNKSAmJiBXVEZfQVJNX0FSQ0hfVkVSU0lPTiA+PSBOKQogCkBAIC0yMjQsNiAr
MjI5LDkgQEAKICAgICB8fCBkZWZpbmVkKF9fQVJNX0FSQ0hfN1NfXykKICNkZWZpbmUgV1RGX0FS
TV9BUkNIX1ZFUlNJT04gNwogCisjZWxpZiBkZWZpbmVkKF9fQVJNX0FSQ0hfOF9fKQorI2RlZmlu
ZSBXVEZfQVJNX0FSQ0hfVkVSU0lPTiA4CisKIC8qIE1TVkMgc2V0cyBfTV9BUk0gKi8KICNlbGlm
IGRlZmluZWQoX01fQVJNKQogI2RlZmluZSBXVEZfQVJNX0FSQ0hfVkVSU0lPTiBfTV9BUk0KQEAg
LTUzNyw2ICs1NDUsMTAgQEAKICNkZWZpbmUgV1RGX1VTRV9ORVRXT1JLX0NGREFUQV9BUlJBWV9D
QUxMQkFDSyAxCiAjZGVmaW5lIFdURl9VU0VfU0VDVVJJVFlfRlJBTUVXT1JLIDAKICNkZWZpbmUg
V1RGX1VTRV9XRUJfVEhSRUFEIDEKKworI2lmIENQVShBUk02NCkKKyNkZWZpbmUgRU5BQkxFX0pJ
VF9DT05TVEFOVF9CTElORElORyAwCisjZW5kaWYKICNlbmRpZiAvKiBQTEFURk9STShJT1MpICov
CiAKICNpZiBQTEFURk9STShXSU4pICYmICFVU0UoV0lOR0RJKQpAQCAtNjY0LDYgKzY3Niw3IEBA
CiAjaWYgKENQVShYODZfNjQpICYmIChPUyhVTklYKSB8fCBPUyhXSU5ET1dTKSkpIFwKICAgICB8
fCAoQ1BVKElBNjQpICYmICFDUFUoSUE2NF8zMikpIFwKICAgICB8fCBDUFUoQUxQSEEpIFwKKyAg
ICB8fCBDUFUoQVJNNjQpIFwKICAgICB8fCBDUFUoU1BBUkM2NCkgXAogICAgIHx8IENQVShTMzkw
WCkgXAogICAgIHx8IENQVShQUEM2NCkKQEAgLTY4MCw3ICs2OTMsNyBAQAogCiAvKiBUaGUgSklU
IGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvbiBhbGwgeDg2LCB4ODYtNjQsIEFSTSAmIE1JUFMgcGxh
dGZvcm1zLiAqLwogI2lmICFkZWZpbmVkKEVOQUJMRV9KSVQpIFwKLSAgICAmJiAoQ1BVKFg4Nikg
fHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTSkgfHwgQ1BVKE1JUFMpKSBcCisgICAgJiYgKENQVShY
ODYpIHx8IENQVShYODZfNjQpIHx8IENQVShBUk0pIHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMp
KSBcCiAgICAgJiYgKE9TKERBUldJTikgfHwgIUNPTVBJTEVSKEdDQykgfHwgR0NDX1ZFUlNJT05f
QVRfTEVBU1QoNCwgMSwgMCkpIFwKICAgICAmJiAhT1MoV0lOQ0UpIFwKICAgICAmJiAhT1MoUU5Y
KQpAQCAtNzE0LDcgKzcyNywxMSBAQAogI2RlZmluZSBFTkFCTEVfRElTQVNTRU1CTEVSIDEKICNl
bmRpZgogCi0jaWYgIWRlZmluZWQoRU5BQkxFX0RJU0FTU0VNQkxFUikgJiYgKFVTRShVRElTODYp
IHx8IFVTRShBUk1WN19ESVNBU1NFTUJMRVIpKQorI2lmICFkZWZpbmVkKFdURl9VU0VfQVJNNjRf
RElTQVNTRU1CTEVSKSAmJiBFTkFCTEUoSklUKSAmJiBQTEFURk9STShJT1MpICYmIENQVShBUk02
NCkKKyNkZWZpbmUgV1RGX1VTRV9BUk02NF9ESVNBU1NFTUJMRVIgMQorI2VuZGlmCisKKyNpZiAh
ZGVmaW5lZChFTkFCTEVfRElTQVNTRU1CTEVSKSAmJiAoVVNFKFVESVM4NikgfHwgVVNFKEFSTVY3
X0RJU0FTU0VNQkxFUikgfHwgVVNFKEFSTTY0X0RJU0FTU0VNQkxFUikpCiAjZGVmaW5lIEVOQUJM
RV9ESVNBU1NFTUJMRVIgMQogI2VuZGlmCiAKQEAgLTcyNCw3ICs3NDEsNyBAQAogICAgICYmIEVO
QUJMRShKSVQpIFwKICAgICAmJiAoT1MoREFSV0lOKSB8fCBPUyhMSU5VWCkpIFwKICAgICAmJiAo
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKEdUSykpIFwKLSAgICAm
JiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk1f
VFJBRElUSU9OQUwpIHx8IENQVShNSVBTKSB8fCBDUFUoU0g0KSkKKyAgICAmJiAoQ1BVKFg4Nikg
fHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk1fVFJBRElUSU9OQUwp
IHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpIHx8IENQVShTSDQpKQogI2RlZmluZSBFTkFCTEVf
TExJTlQgMQogI2VuZGlmCiAKQEAgLTczNCw3ICs3NTEsNyBAQAogI2RlZmluZSBFTkFCTEVfREZH
X0pJVCAxCiAjZW5kaWYKIC8qIEVuYWJsZSB0aGUgREZHIEpJVCBvbiBBUk12Ny4gIE9ubHkgdGVz
dGVkIG9uIGlPUyBhbmQgUXQvR1RLKyBMaW51eC4gKi8KLSNpZiBDUFUoQVJNX1RIVU1CMikgJiYg
KFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oQkxBQ0tCRVJSWSkgfHwgUExBVEZPUk0oR1RLKSkK
KyNpZiAoQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk02NCkpICYmIChQTEFURk9STShJT1MpIHx8
IFBMQVRGT1JNKEJMQUNLQkVSUlkpIHx8IFBMQVRGT1JNKEdUSykpCiAjZGVmaW5lIEVOQUJMRV9E
RkdfSklUIDEKICNlbmRpZgogLyogRW5hYmxlIHRoZSBERkcgSklUIG9uIEFSTSwgTUlQUyBhbmQg
U0g0LiAqLwpAQCAtODk2LDcgKzkxMyw3IEBACiAjZGVmaW5lIFdURl9VU0VfQUNDRVNTSUJJTElU
WV9DT05URVhUX01FTlVTIDEKICNlbmRpZgogCi0jaWYgQ1BVKEFSTV9USFVNQjIpCisjaWYgQ1BV
KEFSTV9USFVNQjIpIHx8IENQVShBUk02NCkKICNkZWZpbmUgRU5BQkxFX0JSQU5DSF9DT01QQUNU
SU9OIDEKICNlbmRpZgogCkBAIC05MzIsNyArOTQ5LDcgQEAKICNkZWZpbmUgV1RGX1VTRV9JTUxB
TkdfRk9OVF9MSU5LMiAxCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9DT01QQVJFX0FO
RF9TV0FQKSAmJiAoT1MoV0lORE9XUykgfHwgKENPTVBJTEVSKEdDQykgJiYgKENQVShYODYpIHx8
IENQVShYODZfNjQpIHx8IENQVShBUk1fVEhVTUIyKSkpKQorI2lmICFkZWZpbmVkKEVOQUJMRV9D
T01QQVJFX0FORF9TV0FQKSAmJiAoT1MoV0lORE9XUykgfHwgKENPTVBJTEVSKEdDQykgJiYgKENQ
VShYODYpIHx8IENQVShYODZfNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNNjQpKSkp
CiAjZGVmaW5lIEVOQUJMRV9DT01QQVJFX0FORF9TV0FQIDEKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9kdG9hLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2R0b2EuY3BwCmluZGV4
IDEwYTMyMDEuLjVhNTUzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2R0b2EuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL2R0b2EuY3BwCkBAIC00Niw3ICs0Niw3IEBACiAjcHJhZ21hIHdh
cm5pbmcoZGlzYWJsZTogNDU1NCkKICNlbmRpZgogCi0jaWYgQ1BVKFBQQzY0KSB8fCBDUFUoWDg2
XzY0KQorI2lmIENQVShQUEM2NCkgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQogLy8gRklY
TUU6IHNob3VsZCB3ZSBlbmFibGUgdGhpcyBvbiBhbGwgNjQtYml0IENQVXM/CiAvLyA2NC1iaXQg
ZW11bGF0aW9uIHByb3ZpZGVkIGJ5IHRoZSBjb21waWxlciBpcyBsaWtlbHkgdG8gYmUgc2xvd2Vy
IHRoYW4gZHRvYSBvd24gY29kZSBvbiAzMi1iaXQgaGFyZHdhcmUuCiAjZGVmaW5lIFVTRV9MT05H
X0xPTkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2R0b2EvdXRpbHMuaCBiL1NvdXJjZS9X
VEYvd3RmL2R0b2EvdXRpbHMuaAppbmRleCA0MDQ2ZTE1Li44ODU5NGZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9kdG9hL3V0aWxzLmgKKysrIGIvU291cmNlL1dURi93dGYvZHRvYS91dGls
cy5oCkBAIC00OSw3ICs0OSw3IEBACiBkZWZpbmVkKF9fQVJNRUxfXykgfHwgXAogZGVmaW5lZChf
TUlQU19BUkNIX01JUFMzMlIyKQogI2RlZmluZSBET1VCTEVfQ09OVkVSU0lPTl9DT1JSRUNUX0RP
VUJMRV9PUEVSQVRJT05TIDEKLSNlbGlmIENQVShNSVBTKSB8fCBDUFUoUFBDKSB8fCBDUFUoUFBD
NjQpIHx8IE9TKFdJTkNFKSB8fCBDUFUoU0g0KSB8fCBDUFUoUzM5MCkgfHwgQ1BVKFMzOTBYKSB8
fCBDUFUoSUE2NCkgfHwgQ1BVKFNQQVJDKSB8fCBDUFUoQUxQSEEpCisjZWxpZiBDUFUoTUlQUykg
fHwgQ1BVKFBQQykgfHwgQ1BVKFBQQzY0KSB8fCBPUyhXSU5DRSkgfHwgQ1BVKFNINCkgfHwgQ1BV
KFMzOTApIHx8IENQVShTMzkwWCkgfHwgQ1BVKElBNjQpIHx8IENQVShTUEFSQykgfHwgQ1BVKEFM
UEhBKSB8fCBDUFUoQVJNNjQpCiAjZGVmaW5lIERPVUJMRV9DT05WRVJTSU9OX0NPUlJFQ1RfRE9V
QkxFX09QRVJBVElPTlMgMQogI2VsaWYgZGVmaW5lZChfTV9JWDg2KSB8fCBkZWZpbmVkKF9faTM4
Nl9fKQogI2lmIGRlZmluZWQoX1dJTjMyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9BU0NJSUZhc3RQYXRoLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJRmFzdFBhdGguaApp
bmRleCA0MGY2MDc2Li5kMDU3YTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FT
Q0lJRmFzdFBhdGguaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJRmFzdFBhdGguaApA
QCAtMTM3LDYgKzEzNywyNyBAQCBpbmxpbmUgdm9pZCBjb3B5TENoYXJzRnJvbVVDaGFyU291cmNl
KExDaGFyKiBkZXN0aW5hdGlvbiwgY29uc3QgVUNoYXIqIHNvdXJjZSwgcwogICAgICAgICBBU1NF
UlQoIShzb3VyY2VbaV0gJiAweGZmMDApKTsKICAgICAgICAgZGVzdGluYXRpb25baV0gPSBzdGF0
aWNfY2FzdDxMQ2hhcj4oc291cmNlW2ldKTsKICAgICB9CisjZWxpZiBDT01QSUxFUihHQ0MpICYm
IENQVShBUk02NCkgJiYgZGVmaW5lZChOREVCVUcpCisgICAgY29uc3QgTENoYXIqIGNvbnN0IGVu
ZCA9IGRlc3RpbmF0aW9uICsgbGVuZ3RoOworICAgIGNvbnN0IHVpbnRwdHJfdCBtZW1vcnlBY2Nl
c3NTaXplID0gMTY7CisKKyAgICBpZiAobGVuZ3RoID49IG1lbW9yeUFjY2Vzc1NpemUpIHsKKyAg
ICAgICAgY29uc3QgdWludHB0cl90IG1lbW9yeUFjY2Vzc01hc2sgPSBtZW1vcnlBY2Nlc3NTaXpl
IC0gMTsKKworICAgICAgICAvLyBWZWN0b3IgaW50ZXJsZWF2ZWQgdW5wYWNrLCB3ZSBvbmx5IHN0
b3JlIHRoZSBsb3dlciA4IGJpdHMuCisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBsZW5ndGhMZWZ0
ID0gZW5kIC0gZGVzdGluYXRpb247CisgICAgICAgIGNvbnN0IExDaGFyKiBjb25zdCBzaW1kRW5k
ID0gZGVzdGluYXRpb24gKyAobGVuZ3RoTGVmdCAmIH5tZW1vcnlBY2Nlc3NNYXNrKTsKKyAgICAg
ICAgZG8geworICAgICAgICAgICAgYXNtKCJsZDIgICB7IHYwLjE2QiwgdjEuMTZCIH0sIFslW1NP
VVJDRV1dLCAjMzJcblx0IgorICAgICAgICAgICAgICAgICJzdDEgICB7IHYwLjE2QiB9LCBbJVtE
RVNUSU5BVElPTl1dLCAjMTZcblx0IgorICAgICAgICAgICAgICAgIDogW1NPVVJDRV0iK3IiIChz
b3VyY2UpLCBbREVTVElOQVRJT05dIityIiAoZGVzdGluYXRpb24pCisgICAgICAgICAgICAgICAg
OgorICAgICAgICAgICAgICAgIDogIm1lbW9yeSIsICJ2MCIsICJ2MSIpOworICAgICAgICB9IHdo
aWxlIChkZXN0aW5hdGlvbiAhPSBzaW1kRW5kKTsKKyAgICB9CisKKyAgICB3aGlsZSAoZGVzdGlu
YXRpb24gIT0gZW5kKQorICAgICAgICAqZGVzdGluYXRpb24rKyA9IHN0YXRpY19jYXN0PExDaGFy
Pigqc291cmNlKyspOwogI2VsaWYgQ09NUElMRVIoR0NDKSAmJiBDUFUoQVJNX05FT04pICYmICEo
UExBVEZPUk0oQklHX0VORElBTikgfHwgUExBVEZPUk0oTUlERExFX0VORElBTikpICYmIGRlZmlu
ZWQoTkRFQlVHKQogICAgIGNvbnN0IExDaGFyKiBjb25zdCBlbmQgPSBkZXN0aW5hdGlvbiArIGxl
bmd0aDsKICAgICBjb25zdCB1aW50cHRyX3QgbWVtb3J5QWNjZXNzU2l6ZSA9IDg7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oCmluZGV4IDlhYTA2ZmMuLjNhZmRiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5oCkBAIC04NzgsNyArODc4LDcgQEAgaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgY2hh
ciogYSwgU3RyaW5nSW1wbCogYikgeyByZXR1cm4gZXF1YWwoYiwgcmVpbnRlcnByZXRfY2EKIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGVxdWFsTm9uTnVsbChjb25zdCBTdHJpbmdJbXBsKiBh
LCBjb25zdCBTdHJpbmdJbXBsKiBiKTsKIAogLy8gRG8gY29tcGFyaXNvbnMgOCBvciA0IGJ5dGVz
LWF0LWEtdGltZSBvbiBhcmNoaXRlY3R1cmVzIHdoZXJlIGl0J3Mgc2FmZS4KLSNpZiBDUFUoWDg2
XzY0KQorI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkKIEFMV0FZU19JTkxJTkUgYm9vbCBl
cXVhbChjb25zdCBMQ2hhciogYSwgY29uc3QgTENoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCkKIHsK
ICAgICB1bnNpZ25lZCBkd29yZExlbmd0aCA9IGxlbmd0aCA+PiAzOwotLSAKMS44LjMuNCAoQXBw
bGUgR2l0LTQ3KQoK
</data>
<flag name="review"
          id="236666"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214163</attachid>
            <date>2013-10-14 10:33:46 -0700</date>
            <delta_ts>2013-10-14 11:20:37 -0700</delta_ts>
            <desc>Build system changes</desc>
            <filename>0002-Build-system-changes.patch</filename>
            <type>text/plain</type>
            <size>17765</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSBhMjUwY2UwODNmMTc2NDhkMTFlMjBkYmY3NjcyMzhjZGFhNzU0Y2E2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRiYXRlc0B3ZWJraXQub3JnPgpEYXRl
OiBGcmksIDExIE9jdCAyMDEzIDE3OjI3OjIxIC0wNzAwClN1YmplY3Q6IFtQQVRDSCAyLzhdIEJ1
aWxkIHN5c3RlbSBjaGFuZ2VzCgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0
aW9ucy9CYXNlLnhjY29uZmlnIHwgIDcgKysrLS0tCiAuLi4vQ29uZmlndXJhdGlvbnMvRGVidWdS
ZWxlYXNlLnhjY29uZmlnICAgICAgICAgICB8ICA0ICsrLS0KIC4uLi9Db25maWd1cmF0aW9ucy9K
YXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAgICAgICAgIHwgIDEgKwogLi4uL0NvbmZpZ3VyYXRpb25z
L1Rvb2xFeGVjdXRhYmxlLnhjY29uZmlnICAgICAgICAgfCAgMSArCiAuLi4vSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiAgICAgICB8IDI4ICsrKysrKysrKysrKysrKysr
KysrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwICAgICAgICAgICAgICAgICAgICAg
IHwgIDQgKystLQogU291cmNlL1dURi9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnICAgICAg
ICAgICAgfCAgMSArCiA3IGZpbGVzIGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKyksIDcgZGVsZXRp
b25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25z
L0Jhc2UueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvQmFz
ZS54Y2NvbmZpZwppbmRleCA0ZDllMjMxLi44ZmU2MDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwpAQCAtNTksNiArNTksNyBA
QCBHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9ICQoR0NDX1dBUk5fNjRfVE9fMzJf
QklUX0NPTlZFUlNJT05fJChDVVJSRU5UXwogR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJ
T05fID0gWUVTOwogR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT05fYXJtdjcgPSBZRVM7
CiBHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTl9hcm12N3MgPSBZRVM7CitHQ0NfV0FS
Tl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTl9hcm02NCA9IE5POwogR0NDX1dBUk5fNjRfVE9fMzJf
QklUX0NPTlZFUlNJT05faTM4NiA9IFlFUzsKIEdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJT
SU9OX3g4Nl82NCA9IE5POwogR0NDX1dBUk5fQUJPVVRfREVQUkVDQVRFRF9GVU5DVElPTlMgPSBO
TzsKQEAgLTc0LDkgKzc1LDkgQEAgR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOwogTElO
S0VSX0RJU1BMQVlTX01BTkdMRURfTkFNRVMgPSBZRVM7CiBQUkVCSU5ESU5HID0gTk87CiBWQUxJ
RF9BUkNIUyA9ICQoVkFMSURfQVJDSFNfJChQTEFURk9STV9OQU1FKSk7Ci1WQUxJRF9BUkNIU19p
cGhvbmVvcyA9ICQoQVJDSFNfU1RBTkRBUkRfMzJfQklUKTsKLVZBTElEX0FSQ0hTX2lwaG9uZXNp
bXVsYXRvciA9ICQoQVJDSFNfU1RBTkRBUkRfMzJfQklUKTsKLVZBTElEX0FSQ0hTX21hY29zeCA9
IGkzODYgcHBjIHg4Nl82NCBwcGM2NCAkKEFSQ0hTX1VOSVZFUlNBTF9JUEhPTkVfT1MpOworVkFM
SURfQVJDSFNfaXBob25lb3MgPSAkKEFSQ0hTX1NUQU5EQVJEXzMyXzY0X0JJVCk7CitWQUxJRF9B
UkNIU19pcGhvbmVzaW11bGF0b3IgPSAkKEFSQ0hTX1NUQU5EQVJEXzMyXzY0X0JJVCk7CitWQUxJ
RF9BUkNIU19tYWNvc3ggPSBpMzg2IHBwYyB4ODZfNjQgcHBjNjQ7CiBXQVJOSU5HX0NGTEFHUyA9
IC1XYWxsIC1XZXh0cmEgLVdjYXN0LXF1YWwgLVdjaGFyLXN1YnNjcmlwdHMgLVdleHRyYS10b2tl
bnMgLVdmb3JtYXQ9MiAtV2luaXQtc2VsZiAtV21pc3NpbmctZm9ybWF0LWF0dHJpYnV0ZSAtV21p
c3Npbmctbm9yZXR1cm4gLVdwYWNrZWQgLVdwb2ludGVyLWFyaXRoIC1XcmVkdW5kYW50LWRlY2xz
IC1XdW5kZWYgLVd3cml0ZS1zdHJpbmdzIC1XZXhpdC10aW1lLWRlc3RydWN0b3JzIC1XZ2xvYmFs
LWNvbnN0cnVjdG9ycyAtV3RhdXRvbG9naWNhbC1jb21wYXJlOwogSEVBREVSX1NFQVJDSF9QQVRI
UyA9IC4gaWN1ICIke0JVSUxUX1BST0RVQ1RTX0RJUn0vdXNyL2xvY2FsL2luY2x1ZGUiICQoSEVB
REVSX1NFQVJDSF9QQVRIUyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
b25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnCmluZGV4IGYzZTZlOTAuLjlj
YmM0OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9E
ZWJ1Z1JlbGVhc2UueGNjb25maWcKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3Vy
YXRpb25zL0RlYnVnUmVsZWFzZS54Y2NvbmZpZwpAQCAtMjUsOCArMjUsOCBAQAogI2luY2x1ZGUg
IkJhc2UueGNjb25maWciCiAKIEFSQ0hTID0gJChBUkNIU18kKFBMQVRGT1JNX05BTUUpKTsKLUFS
Q0hTX2lwaG9uZW9zID0gJChBUkNIU19VTklWRVJTQUxfSVBIT05FX09TKTsKLUFSQ0hTX2lwaG9u
ZXNpbXVsYXRvciA9ICQoTkFUSVZFX0FSQ0gpOworQVJDSFNfaXBob25lb3MgPSAkKEFSQ0hTX1NU
QU5EQVJEXzMyXzY0X0JJVCk7CitBUkNIU19pcGhvbmVzaW11bGF0b3IgPSAkKEFSQ0hTX1NUQU5E
QVJEXzMyXzY0X0JJVCk7CiBBUkNIU19tYWNvc3ggPSAkKEFSQ0hTX1NUQU5EQVJEXzMyXzY0X0JJ
VCk7CiAKIE9OTFlfQUNUSVZFX0FSQ0ggPSBZRVM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcKaW5k
ZXggMDcxNjg4NS4uYWVmMTkxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Nv
bmZpZ3VyYXRpb25zL0phdmFTY3JpcHRDb3JlLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Db25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZwpAQCAtMjgsNiAr
MjgsNyBAQCBKU1ZBTFVFX01PREVMID0gJChKU1ZBTFVFX01PREVMXyQoQ1VSUkVOVF9BUkNIKSk7
CiBKU1ZBTFVFX01PREVMXyA9IFVOS05PV05fSlNWQUxVRV9NT0RFTDsKIEpTVkFMVUVfTU9ERUxf
YXJtdjYgPSAzMl82NDsKIEpTVkFMVUVfTU9ERUxfYXJtdjcgPSAzMl82NDsKK0pTVkFMVUVfTU9E
RUxfYXJtNjQgPSA2NDsKIEpTVkFMVUVfTU9ERUxfaTM4NiA9IDMyXzY0OwogSlNWQUxVRV9NT0RF
TF9wcGMgPSAzMl82NDsKIEpTVkFMVUVfTU9ERUxfeDg2XzY0ID0gNjQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvVG9vbEV4ZWN1dGFibGUueGNjb25m
aWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvVG9vbEV4ZWN1dGFibGUu
eGNjb25maWcKaW5kZXggODIwOGQwZC4uZjE5YmJjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL1Rvb2xFeGVjdXRhYmxlLnhjY29uZmlnCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9Ub29sRXhlY3V0YWJsZS54Y2NvbmZp
ZwpAQCAtMzksNiArMzksNyBAQCBTS0lQX0lOU1RBTExfWUVTID0gTk87CiBHQ0NfRU5BQkxFX09C
SkNfR0MgPSBOTzsKIENMQU5HX0VOQUJMRV9PQkpDX0FSQyA9ICQoQ0xBTkdfRU5BQkxFX09CSkNf
QVJDXyQoQ1VSUkVOVF9BUkNIKSk7CiBDTEFOR19FTkFCTEVfT0JKQ19BUkNfeDg2XzY0ID0gWUVT
OworQ0xBTkdfRU5BQkxFX09CSkNfQVJDX2FybTY0ID0gWUVTOwogQ0xBTkdfRU5BQkxFX09CSkNf
QVJDX2FybXY3ID0gWUVTOwogQ0xBTkdfRU5BQkxFX09CSkNfQVJDX2FybXY3cyA9IFlFUzsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwYWQwNTM2Li45MWQwMzc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjYzLDYgKzI2Myw3IEBACiAJCTBGNzE0Q0E1MTZF
QTkyRjIwMEYzRUJFQiAvKiBERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjcxNENBMjE2RUE5MkVEMDBG
M0VCRUIgLyogREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNzNEN0FFMTY1QTE0MkQwMEFDQUI3
MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzNEN0FCMTY1QTE0MkEwMEFDQUI3MSAvKiBDbG9zdXJl
Q2FsbFN0dWJSb3V0aW5lLmNwcCAqLzsgfTsKIAkJMEY3M0Q3QUYxNjVBMTQzMDAwQUNBQjcxIC8q
IENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNzNEN0FDMTY1QTE0MkEwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0
dWJSb3V0aW5lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEY3NDNCQUExNkI4ODI0OTAwOUY5Mjc3IC8qIEFSTTY0RGlzYXNzZW1ibGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MkEzQTIwMTY1
MUM2NjEwMEE4MEFGRSAvKiBBUk02NERpc2Fzc2VtYmxlci5jcHAgKi87IH07CiAJCTBGNzY2RDI4
MTVBOENDMUUwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQyNjE1QThDQzFCMDA4RjM2M0UgLyog
SklUU3R1YlJvdXRpbmUuY3BwICovOyB9OwogCQkwRjc2NkQyQjE1QThDQzM4MDA4RjM2M0UgLyog
SklUU3R1YlJvdXRpbmVTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY3NjZEMjkxNUE4Q0MzNDAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0
LmNwcCAqLzsgfTsKIAkJMEY3NjZEMkMxNUE4Q0MzQTAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5l
U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc2
NkQyQTE1QThDQzM0MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTA1LDYgKzUwNiw4IEBACiAJ
CTBGRjcyOUJGMTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlck9yaWdpbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5QTAxNjZBRDM0NzAwMEY1
QkEzIC8qIFByb2ZpbGVyT3JpZ2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEZGNzI5QzAxNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyT3Jp
Z2luU3RhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRjcyOUEyMTY2QUQzNDcwMDBGNUJBMyAvKiBQcm9maWxlck9yaWdpblN0YWNrLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGOTIyRDQxNEY0
NkI0MTAwNDFBMjRFIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIg
LyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLzsgfTsKKwkJMEZGQTU0OTcxNkI4ODM1MDAw
QjNBOTgyIC8qIEE2NERPcGNvZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjUyQTNBMjIxNjUxQzY5NzAwQTgwQUZFIC8qIEE2NERPcGNvZGUuY3Bw
ICovOyB9OworCQkwRkZBNTQ5ODE2Qjg4MzUzMDBCM0E5ODIgLyogQTY0RE9wY29kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUyQTNBMjMxNjUxQzY5
NzAwQTgwQUZFIC8qIEE2NERPcGNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRkZCOTIxODE2RDAyRUIyMDA1NUE1REIgLyogREZHQWxsb2Nh
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0
QjUxOTE2QjYyNzcyMDAzRjY5NkIgLyogREZHQWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGQjkyMUExNkQwMkVDNTAwNTVBNURC
IC8qIERGR0Jhc2ljQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkQ1NjUyMjE2QUI3ODBBMDAxOTc2NTMgLyogREZHQmFzaWNCbG9j
a0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRkZCOTIxQjE2RDAyRjAxMDA1NUE1REIgLyogREZHTm9kZUFsbG9jYXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNEI1MUYxNkI2Mjc3
MjAwM0Y2OTZCIC8qIERGR05vZGVBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjg4LDYgKzY5MSw3IEBACiAJCTM3MUQ4NDJEMTdD
OThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRDg0MkMxN0M5OEI2RTAwRUNGOTk0IC8qIGxpYnouZHls
aWIgKi87IH07CiAJCTQxMzU5Q0YzMEZERDg5QUQwMDIwNjE4MCAvKiBEYXRlQ29udmVyc2lvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDIxMjAyMjkw
QUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252ZXJzaW9uLmggKi87IH07CiAJCTQ0NDNBRTMzMTZF
MTg4RDkwMDc2RjExMCAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjBFQjYxMDVDODZDNkIwMEU2REYxQiAv
KiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsKKwkJNDRERjkzRTYxN0ExRDkyMDAwOTdCOTdC
IC8qIEpJVFN0dWJzQVJNNjQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ0REY5M0U1MTdBMUQ5MjAwMDk3Qjk3QiAvKiBKSVRTdHVic0FSTTY0LmggKi87
IH07CiAJCTQ1MTUzOUI5MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTE1MzlCODEyREM5OTQ1MDBFRjdBQzQg
LyogWWFyci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTVENTM3MjZGMEUxQzU0ODgwMDIxRTU0OSAvKiBUcmFjaW5nLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDUzNzI2RTBFMUM1NDg4MDAyMUU1NDkg
LyogVHJhY2luZy5oICovOyB9OwogCQk1RDVEOEFEMTBFMEQwRUJFMDBGOUM2OTIgLyogbGliZWRp
dC5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVENUQ4QUQwMEUwRDBFQkUwMEY5QzY5MiAvKiBsaWJlZGl0LmR5bGliICovOyB9OwpAQCAtMTg5
NCw2ICsxODk4LDcgQEAKIAkJMkFEODkzMjkxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRp
b25TY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwSXRlcmF0aW9u
U2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxRDg0MkMxN0M5OEI2RTAw
RUNGOTk0IC8qIGxpYnouZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYnouZHlsaWI7
IHBhdGggPSB1c3IvbGliL2xpYnouZHlsaWI7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwogCQk0
NDkwOTdFRTBGOEY4MUI1MDA3NkEzMjcgLyogRmVhdHVyZURlZmluZXMueGNjb25maWcgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRmVhdHVyZURlZmluZXMueGNjb25maWc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0REY5M0U1MTdBMUQ5MjAwMDk3Qjk3QiAvKiBKSVRT
dHVic0FSTTY0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFN0dWJzQVJN
NjQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDUxNTM5QjgxMkRDOTk0NTAwRUY3
QUM0IC8qIFlhcnIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyci5oOyBw
YXRoID0geWFyci9ZYXJyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1RTEyRDg4
MDZBNDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0ganNjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgdGFiV2lkdGggPSA0OyB9OwogCQk1MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91bmRh
dGlvbi5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEZvdW5kYXRpb24uZnJhbWV3b3JrOyBw
YXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcms7IHNv
dXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CkBAIC0xOTA4LDYgKzE5MTMsOSBAQAogCQk2NTA3
RDI5NzBFODcxRTRBMDBEN0Q4OTYgLyogSlNUeXBlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1R5cGVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTY1MTEyMkU1MTQwNDY5QkEwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHRlc3RSZWdFeHAuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1h
Y2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gdGVzdFJlZ0V4cDsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJNjUyQTNBMjAxNjUxQzY2MTAw
QTgwQUZFIC8qIEFSTTY0RGlzYXNzZW1ibGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IEFSTTY0RGlzYXNzZW1ibGVyLmNwcDsgcGF0aCA9IGRpc2Fzc2VtYmxlci9B
Uk02NERpc2Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1MkEz
QTIyMTY1MUM2OTcwMEE4MEFGRSAvKiBBNjRET3Bjb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEE2NERPcGNvZGUuY3BwOyBwYXRoID0gZGlzYXNzZW1ibGVyL0FS
TTY0L0E2NERPcGNvZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NTJBM0Ey
MzE2NTFDNjk3MDBBODBBRkUgLyogQTY0RE9wY29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBBNjRET3Bjb2RlLmg7IHBhdGggPSBkaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9w
Y29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTMwM0Q2MzE0NDdCOUUxMDBE
M0Y5MDQgLyogUGFyc2VyVG9rZW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBhcnNlclRva2Vucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTQwMEMwRjBB
NjlCQUYyMDA1MDk4ODcgLyogUHJvcGVydHlOYW1lQXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3BlcnR5TmFtZUFycmF5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNjU0MDBDMTAwQTY5QkFGMjAwNTA5ODg3IC8qIFByb3BlcnR5TmFt
ZUFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9wZXJ0eU5hbWVB
cnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk2Nyw2ICsxOTc1LDggQEAK
IAkJODYzQzZEOTgxNTIxMTExMjAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxpemVVQ1MyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJDYW5vbmljYWxpemVVQ1My
LmNwcDsgcGF0aCA9IHlhcnIvWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NjNDNkQ5OTE1MjExMTEyMDA1ODVFNEUgLyogWWFyckNhbm9uaWNh
bGl6ZVVDUzIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyckNhbm9uaWNh
bGl6ZVVDUzIuaDsgcGF0aCA9IHlhcnIvWWFyckNhbm9uaWNhbGl6ZVVDUzIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYzQzZEOUExNTIxMTExMjAwNTg1RTRFIC8qIFlhcnJDYW5v
bmljYWxpemVVQ1MyLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0g
WWFyckNhbm9uaWNhbGl6ZVVDUzIuanM7IHBhdGggPSB5YXJyL1lhcnJDYW5vbmljYWxpemVVQ1My
LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjQwOTIzQjE1NkVFRDNCMDA1NjZD
QjIgLyogQVJNNjRBc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QVJNNjRBc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY0MDkyM0Mx
NTZFRUQzQjAwNTY2Q0IyIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJBUk02NC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4NjVBMzBGMDEzNTAwN0UxMDBDREI0OUUgLyogSlNDSlNWYWx1ZUlubGlu
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDSlNWYWx1ZUlubGluZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY1RjQwODcxMEU3RDU2MzAwOTQ3MzYx
IC8qIEFQSVNoaW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVNoaW1z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NjczOUQwMTNCRkRFNzEwMDIzRDg3
QyAvKiBCaWdJbnRlZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJpZ0lu
dGVnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3NTAsOCArMjc2MCwxMCBA
QAogCQkwRkY0MjcyRTE1OEVCQ0NFMDA0Q0I5RkYgLyogZGlzYXNzZW1ibGVyICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk2NTJBM0ExQTE2NTFBOTI0MDBB
ODBBRkUgLyogQVJNNjQgKi8sCiAJCQkJNjVDMDI4NTkxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3
ICovLAogCQkJCTBGRjQyNzMzMTU4RUJENjQwMDRDQjlGRiAvKiB1ZGlzODYgKi8sCisJCQkJNjUy
QTNBMjAxNjUxQzY2MTAwQTgwQUZFIC8qIEFSTTY0RGlzYXNzZW1ibGVyLmNwcCAqLywKIAkJCQk2
NUMwMjg0RjE3MTc5NUUyMDAzNTFFMzUgLyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwICovLAogCQkJ
CTBGOUQzMzZFMTY1REJCOEQwMDVBRDM4NyAvKiBEaXNhc3NlbWJsZXIuY3BwICovLAogCQkJCTBG
RjQyNzJGMTU4RUJENDQwMDRDQjlGRiAvKiBEaXNhc3NlbWJsZXIuaCAqLywKQEAgLTI4NjcsNiAr
Mjg3OSw3IEBACiAJCQkJMTRBMjNENkMwRjRFMTlDRTAwMjNDREFEIC8qIEpJVFN0dWJzLmNwcCAq
LywKIAkJCQkxNEE2NTgxQTBGNEUzNkY0MDAwMTUwRkQgLyogSklUU3R1YnMuaCAqLywKIAkJCQlG
RUY2ODM1QTE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNBUk0uaCAqLywKKwkJCQk0NERGOTNF
NTE3QTFEOTIwMDA5N0I5N0IgLyogSklUU3R1YnNBUk02NC5oICovLAogCQkJCUZFRjY4MzVCMTc0
MzQzQ0MwMEEzMkUyNSAvKiBKSVRTdHVic0FSTXY3LmggKi8sCiAJCQkJQTdBNEFFMDkxNzk3M0I0
RDAwNTYxMkIxIC8qIEpJVFN0dWJzTUlQUy5oICovLAogCQkJCUE3QTRBRTBCMTc5NzNCNEQwMDU2
MTJCMSAvKiBKSVRTdHVic1NINC5oICovLApAQCAtMzEzNiw2ICszMTQ5LDE1IEBACiAJCQl0YWJX
aWR0aCA9IDQ7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07CisJCTY1MkEzQTFBMTY1MUE5MjQwMEE4
MEFGRSAvKiBBUk02NCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJNjUyQTNBMjIxNjUxQzY5NzAwQTgwQUZFIC8qIEE2NERPcGNvZGUuY3BwICovLAorCQkJ
CTY1MkEzQTIzMTY1MUM2OTcwMEE4MEFGRSAvKiBBNjRET3Bjb2RlLmggKi8sCisJCQkpOworCQkJ
bmFtZSA9IEFSTTY0OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNjVDMDI4
NTkxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKQEAgLTM4NTUsNiArMzg3Nyw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAogCQkJCTg2MDE2MURGMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmggKi8sCisJCQkJODY0MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFS
TTY0QXNzZW1ibGVyLmggKi8sCiAJCQkJODZEM0IyQkYxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFz
c2VtYmxlci5jcHAgKi8sCiAJCQkJODZEM0IyQzAxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2Vt
Ymxlci5oICovLAogCQkJCUE3NERFMUNCMTIwQjg2RDYwMEQ0MEQ1QiAvKiBBUk12N0Fzc2VtYmxl
ci5jcHAgKi8sCkBAIC0zODY4LDYgKzM4OTEsNyBAQAogCQkJCTg2QzM2RUU5MEVFMTI4OUQwMEIz
REY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovLAogCQkJCTg2QzU2OEREMTFBMjEzRUUwMDA3RjdG
MCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAgKi8sCiAJCQkJODZEM0IyQzIxMDE1NkJERTAwMjg2
NUU3IC8qIE1hY3JvQXNzZW1ibGVyQVJNLmggKi8sCisJCQkJODY0MDkyM0MxNTZFRUQzQjAwNTY2
Q0IyIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCAqLywKIAkJCQlBNzI5MDA5QjE3OTc2QzYwMDAz
MTcyOTggLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5jcHAgKi8sCiAJCQkJODZBREQxNDQwRkRERUE5
ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLywKIAkJCQk4NjNCMjNERjBGQzYw
RTYyMDA3MDNBQTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggKi8sCkBAIC00MDAyLDYgKzQw
MjYsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAog
CQkJCTBGRkI5MjFGMTZEMDMzMDUwMDU1QTVEQiAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywKKwkJ
CQkwRkZBNTQ5ODE2Qjg4MzUzMDBCM0E5ODIgLyogQTY0RE9wY29kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODYwMTYxRTMwRjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTVGMEY1MTREMTA2M0MwMEFDNzY0OSAvKiBBYnN0cmFj
dFBDLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQTQ4RDE5MTE3NzIzNjVCMDBDNjVBNUYgLyogQVBJ
Q2FsbGJhY2tGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC00MzE1LDYgKzQzNDAsNyBAQAog
CQkJCTBGNzY2RDJDMTVBOENDM0EwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTRDNTI0MkIwRjUzNTVFOTAwQkEzRDA0IC8qIEpJVFN0dWJzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRUY2ODM1RTE3NDM0M0NDMDBBMzJFMjUgLyogSklUU3R1YnNBUk0u
aCBpbiBIZWFkZXJzICovLAorCQkJCTQ0REY5M0U2MTdBMUQ5MjAwMDk3Qjk3QiAvKiBKSVRTdHVi
c0FSTTY0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUY2ODM1RjE3NDM0M0NDMDBBMzJFMjUgLyog
SklUU3R1YnNBUk12Ny5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBNEFFMEQxNzk3M0I0RDAwNTYx
MkIxIC8qIEpJVFN0dWJzTUlQUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBNEFFMEYxNzk3M0I0
RDAwNTYxMkIxIC8qIEpJVFN0dWJzU0g0LmggaW4gSGVhZGVycyAqLywKQEAgLTUwNzMsOSArNTA5
OSwxMSBAQAogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJMEZGQTU0OTcxNkI4ODM1MDAwQjNB
OTgyIC8qIEE2NERPcGNvZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1NUYwRjQxNEQxMDYz
OTAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QkQx
MDdFQzM3NjAwNDI3QTQ4IC8qIEFyZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5
QkUxMDdFQzM3NjAwNDI3QTQ4IC8qIEFyZ3VtZW50cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
Rjc0M0JBQTE2Qjg4MjQ5MDA5RjkyNzcgLyogQVJNNjREaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODZEM0IyQzMxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBNzRERTFEMDEyMEI4NzU2MDBENDBENUIgLyogQVJNdjdBc3Nl
bWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVDMDI4NTAxNzE3OTVFMjAwMzUxRTM1IC8q
IEFSTXY3RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApp
bmRleCAyMTIyZTRjLi5iMzhmNWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtNzgsNyArNzgs
NyBAQAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKQor
I2lmIFBMQVRGT1JNKElPUykgJiYgQ1BVKEFSTV9USFVNQjIpCiAjaW5jbHVkZSA8ZmVudi5oPgog
I2luY2x1ZGUgPGFybS9hcmNoLmg+CiAjZW5kaWYKQEAgLTUzNiw3ICs1MzYsNyBAQCBzdGF0aWMg
Tk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIHRpbWVvdXRUaHJlYWRNYWluKHZvaWQqKQogCiBp
bnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lm
IFBMQVRGT1JNKElPUykgJiYgQ1BVKEFSTV9USFVNQjIpCiAgICAgLy8gRW5hYmxlZCBJRUVFNzU0
IGRlbm9ybWFsIHN1cHBvcnQuCiAgICAgZmVudl90IGVudjsKICAgICBmZWdldGVudiggJmVudiAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnIGIv
U291cmNlL1dURi9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCmluZGV4IGVmOWM5MjcuLmU2
MDEyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZp
ZworKysgYi9Tb3VyY2UvV1RGL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcKQEAgLTYxLDYg
KzYxLDcgQEAgR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSAkKEdDQ19XQVJOXzY0
X1RPXzMyX0JJVF9DT05WRVJTSU9OXyQoQ1VSUkVOVF8KIEdDQ19XQVJOXzY0X1RPXzMyX0JJVF9D
T05WRVJTSU9OXyA9IFlFUzsKIEdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OX2FybXY3
ID0gWUVTOwogR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT05fYXJtdjdzID0gWUVTOwor
R0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT05fYXJtNjQgPSBOTzsKIEdDQ19XQVJOXzY0
X1RPXzMyX0JJVF9DT05WRVJTSU9OX2kzODYgPSBZRVM7CiBHQ0NfV0FSTl82NF9UT18zMl9CSVRf
Q09OVkVSU0lPTl94ODZfNjQgPSBOTzsKIEdDQ19XQVJOX0FCT1VUX0RFUFJFQ0FURURfRlVOQ1RJ
T05TID0gTk87Ci0tIAoxLjguMy40IChBcHBsZSBHaXQtNDcpCgo=
</data>
<flag name="review"
          id="236667"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="236674"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214164</attachid>
            <date>2013-10-14 10:34:22 -0700</date>
            <delta_ts>2013-10-14 19:18:27 -0700</delta_ts>
            <desc>JIT changes</desc>
            <filename>0003-Changes-to-JIT.patch</filename>
            <type>text/plain</type>
            <size>40567</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSBhZjAxZGQ4YzM0ZGI4MWQ5NGQ0ODFkOTk1YjEyMzA1NjE5ODg1ZDA5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRiYXRlc0B3ZWJraXQub3JnPgpEYXRl
OiBGcmksIDExIE9jdCAyMDEzIDE3OjI5OjUxIC0wNzAwClN1YmplY3Q6IFtQQVRDSCAzLzhdIENo
YW5nZXMgdG8gSklUCgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmggICAgICAgIHwgICA0ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVs
cGVycy5oICAgICAgICAgICB8ICAgNiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVj
dXRhYmxlQWxsb2NhdG9yLmggICAgfCAgIDIgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
RlBSSW5mby5oICAgICAgICAgICAgICAgIHwgIDg5ICsrKysrKysrKysKIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvR1BSSW5mby5oICAgICAgICAgICAgICAgIHwgIDkzICsrKysrKysrKysrCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCAgICAgICAgICAgICB8ICAgMiAr
LQogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25XcmFwcGVycy5oICAgfCAg
MTkgKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwICAgICAg
ICB8ICAxMiArKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAgICAgICAg
ICAgICAgfCAgMTIgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaCAgICAg
ICAgICAgICAgIHwgIDI1ICsrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVic0FS
TTY0LmggICAgICAgICAgfCAxODUgKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmggICAgICAgICB8ICAyNyArKysKIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgICAgICAgICAgICAgIHwgIDIzICstLQogLi4u
L0phdmFTY3JpcHRDb3JlL2ppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCAgfCAgMTYgKy0K
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCAgICAgIHwgIDU3
ICsrKysrKysKIDE1IGZpbGVzIGNoYW5nZWQsIDU0NCBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlv
bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzQVJNNjQuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
CmluZGV4IDEwYzgwOWQuLjZjNDhjOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlm
IC8vIENQVShYODZfNjQpIHx8IENQVShYODYpCiAKLSNpZiBDUFUoQVJNKQorI2lmIENQVShBUk0p
IHx8IENQVShBUk02NCkKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcHJlc2VydmVSZXR1cm5BZGRy
ZXNzQWZ0ZXJDYWxsKFJlZ2lzdGVySUQgcmVnKQogICAgIHsKICAgICAgICAgbW92ZShsaW5rUmVn
aXN0ZXIsIHJlZyk7CkBAIC0yMzAsNyArMjMwLDcgQEAgcHVibGljOgogICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWN0aXZlTGVuZ3RoUHRyKCkpLCBHUFJJbmZvOjpy
ZWdUMCk7CiAgICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoc2NyYXRjaFNpemUpLCBHUFJJ
bmZvOjpyZWdUMCk7CiAKLSNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNKSB8fCBDUFUoTUlQUykg
fHwgQ1BVKFNINCkKKyNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNKSB8fCBDUFUoQVJNNjQpIHx8
IENQVShNSVBTKSB8fCBDUFUoU0g0KQogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYnVmZmVy
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFy
Z3VtZW50KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0NDYWxsSGVscGVycy5oCmluZGV4IDQzMjUzYWYuLjU4ZWU1YWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAtNDMyLDcgKzQzMiw3IEBAIHB1
YmxpYzoKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBzd2FwKGRlc3RBLCBkZXN0Qik7CiAg
ICAgfQotI2lmIENQVShYODZfNjQpCisjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQogICAg
IHRlbXBsYXRlPEZQUlJlZyBkZXN0QSwgRlBSUmVnIGRlc3RCPgogICAgIHZvaWQgc2V0dXBUd29T
dHViQXJnc0ZQUihGUFJSZWcgc3JjQSwgRlBSUmVnIHNyY0IpCiAgICAgewpAQCAtNTQyLDcgKzU0
Miw3IEBAIHB1YmxpYzoKICNkZWZpbmUgUE9LRV9BUkdVTUVOVF9PRkZTRVQgMAogI2VuZGlmCiAK
LSNpZiBDUFUoWDg2XzY0KQorI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCiAgICAgewogICAgICAg
ICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CkBAIC03OTAsNyArNzkw
LDcgQEAgcHVibGljOgogICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7
CiAgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CiAgICAgfQotI2lmIENQVShYODZfNjQpICAgIAorI2lmIENQVShYODZfNjQpIHx8
IENQVShBUk02NCkKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tNjQgYXJnMikKICAgICB7CiAgICAgICAgIG1v
dmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKaW5kZXggZmU2M2RkZi4uMWYzYWQwMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKQEAg
LTEwMiw3ICsxMDIsNyBAQCBjbGFzcyBEZW1hbmRFeGVjdXRhYmxlQWxsb2NhdG9yOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoRVhFQ1VUQUJMRV9BTExPQ0FUT1JfRklYRUQpCi0jaWYgQ1BVKEFSTSkK
KyNpZiBDUFUoQVJNKSB8fCBDUFUoQVJNNjQpCiBzdGF0aWMgY29uc3Qgc2l6ZV90IGZpeGVkRXhl
Y3V0YWJsZU1lbW9yeVBvb2xTaXplID0gMTYgKiAxMDI0ICogMTAyNDsKICNlbGlmIENQVShYODZf
NjQpCiBzdGF0aWMgY29uc3Qgc2l6ZV90IGZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2xTaXplID0g
MTAyNCAqIDEwMjQgKiAxMDI0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9GUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ZQUkluZm8uaAppbmRleCA5
MjUzMDE4Li44MDI3ZDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ZQ
UkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ZQUkluZm8uaApAQCAtMTY4
LDYgKzE2OCw5NSBAQCBwdWJsaWM6CiAKICNlbmRpZgogCisjaWYgQ1BVKEFSTTY0KQorCitjbGFz
cyBGUFJJbmZvIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEZQUlJlZyBSZWdpc3RlclR5cGU7Cisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gMjM7CisKKyAgICAv
LyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgorICAgIC8vIHE4LXExNSBhcmUgY2FsbGVlIHNhdmVkLCBx
MzEgaXMgdXNlIGJ5IHRoZSBNYWNyb0Fzc2VtYmxlciBhcyBmcFRlbXBSZWdpc3Rlci4KKyAgICBz
dGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDAgPSBBUk02NFJlZ2lzdGVyczo6cTA7CisgICAgc3Rh
dGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QxID0gQVJNNjRSZWdpc3RlcnM6OnExOworICAgIHN0YXRp
YyBjb25zdCBGUFJSZWcgZnBSZWdUMiA9IEFSTTY0UmVnaXN0ZXJzOjpxMjsKKyAgICBzdGF0aWMg
Y29uc3QgRlBSUmVnIGZwUmVnVDMgPSBBUk02NFJlZ2lzdGVyczo6cTM7CisgICAgc3RhdGljIGNv
bnN0IEZQUlJlZyBmcFJlZ1Q0ID0gQVJNNjRSZWdpc3RlcnM6OnE0OworICAgIHN0YXRpYyBjb25z
dCBGUFJSZWcgZnBSZWdUNSA9IEFSTTY0UmVnaXN0ZXJzOjpxNTsKKyAgICBzdGF0aWMgY29uc3Qg
RlBSUmVnIGZwUmVnVDYgPSBBUk02NFJlZ2lzdGVyczo6cTY7CisgICAgc3RhdGljIGNvbnN0IEZQ
UlJlZyBmcFJlZ1Q3ID0gQVJNNjRSZWdpc3RlcnM6OnE3OworICAgIHN0YXRpYyBjb25zdCBGUFJS
ZWcgZnBSZWdUOCA9IEFSTTY0UmVnaXN0ZXJzOjpxMTY7CisgICAgc3RhdGljIGNvbnN0IEZQUlJl
ZyBmcFJlZ1Q5ID0gQVJNNjRSZWdpc3RlcnM6OnExNzsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVn
IGZwUmVnVDEwID0gQVJNNjRSZWdpc3RlcnM6OnExODsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVn
IGZwUmVnVDExID0gQVJNNjRSZWdpc3RlcnM6OnExOTsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVn
IGZwUmVnVDEyID0gQVJNNjRSZWdpc3RlcnM6OnEyMDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVn
IGZwUmVnVDEzID0gQVJNNjRSZWdpc3RlcnM6OnEyMTsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVn
IGZwUmVnVDE0ID0gQVJNNjRSZWdpc3RlcnM6OnEyMjsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVn
IGZwUmVnVDE1ID0gQVJNNjRSZWdpc3RlcnM6OnEyMzsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVn
IGZwUmVnVDE2ID0gQVJNNjRSZWdpc3RlcnM6OnEyNDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVn
IGZwUmVnVDE3ID0gQVJNNjRSZWdpc3RlcnM6OnEyNTsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVn
IGZwUmVnVDE4ID0gQVJNNjRSZWdpc3RlcnM6OnEyNjsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVn
IGZwUmVnVDE5ID0gQVJNNjRSZWdpc3RlcnM6OnEyNzsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVn
IGZwUmVnVDIwID0gQVJNNjRSZWdpc3RlcnM6OnEyODsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVn
IGZwUmVnVDIxID0gQVJNNjRSZWdpc3RlcnM6OnEyOTsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVn
IGZwUmVnVDIyID0gQVJNNjRSZWdpc3RlcnM6OnEzMDsKKworICAgIHN0YXRpYyBjb25zdCBGUFJS
ZWcgYXJndW1lbnRGUFIwID0gQVJNNjRSZWdpc3RlcnM6OnEwOyAvLyBmcFJlZ1QwCisgICAgc3Rh
dGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjEgPSBBUk02NFJlZ2lzdGVyczo6cTE7IC8vIGZw
UmVnVDEKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMiA9IEFSTTY0UmVnaXN0
ZXJzOjpxMjsgLy8gZnBSZWdUMgorICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIz
ID0gQVJNNjRSZWdpc3RlcnM6OnEzOyAvLyBmcFJlZ1QzCisgICAgc3RhdGljIGNvbnN0IEZQUlJl
ZyBhcmd1bWVudEZQUjQgPSBBUk02NFJlZ2lzdGVyczo6cTQ7IC8vIGZwUmVnVDQKKyAgICBzdGF0
aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSNSA9IEFSTTY0UmVnaXN0ZXJzOjpxNTsgLy8gZnBS
ZWdUNQorICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFI2ID0gQVJNNjRSZWdpc3Rl
cnM6OnE2OyAvLyBmcFJlZ1Q2CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjcg
PSBBUk02NFJlZ2lzdGVyczo6cTc7IC8vIGZwUmVnVDcKKworICAgIHN0YXRpYyBjb25zdCBGUFJS
ZWcgcmV0dXJuVmFsdWVGUFIgPSBBUk02NFJlZ2lzdGVyczo6cTA7IC8vIGZwUmVnVDAKKworICAg
IHN0YXRpYyBGUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChpbmRleCA8IG51bWJlck9mUmVnaXN0ZXJzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0
IEZQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsKKyAgICAgICAg
ICAgIGZwUmVnVDAsIGZwUmVnVDEsIGZwUmVnVDIsIGZwUmVnVDMsIGZwUmVnVDQsIGZwUmVnVDUs
IGZwUmVnVDYsIGZwUmVnVDcsCisgICAgICAgICAgICBmcFJlZ1Q4LCBmcFJlZ1Q5LCBmcFJlZ1Qx
MCwgZnBSZWdUMTEsIGZwUmVnVDEyLCBmcFJlZ1QxMywgZnBSZWdUMTQsIGZwUmVnVDE1LAorICAg
ICAgICAgICAgZnBSZWdUMTYsIGZwUmVnVDE3LCBmcFJlZ1QxOCwgZnBSZWdUMTksIGZwUmVnVDIw
LCBmcFJlZ1QyMSwgZnBSZWdUMjIKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVy
Rm9ySW5kZXhbaW5kZXhdOworICAgIH0KKworICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEZQ
UlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcpOwor
ICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihyZWcpIDwgMzIpOworICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3RlclszMl0gPSB7CisgICAgICAgICAgICAw
LCAxLCAyLCAzLCA0LCA1LCA2LCA3LAorICAgICAgICAgICAgSW52YWxpZEluZGV4LCBJbnZhbGlk
SW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJ
bmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsCisgICAgICAgICAgICA4LCA5LCAxMCwg
MTEsIDEyLCAxMywgMTQsIDE1LAorICAgICAgICAgICAgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwg
MjIsIEludmFsaWRJbmRleAorICAgICAgICB9OworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBp
bmRleEZvclJlZ2lzdGVyW3JlZ107CisgICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxpZElu
ZGV4KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3Qg
Y2hhciogZGVidWdOYW1lKEZQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9
IEludmFsaWRGUFJSZWcpOworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihyZWcpIDwg
MzIpOworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzMyXSA9IHsK
KyAgICAgICAgICAgICJxMCIsICJxMSIsICJxMiIsICJxMyIsICJxNCIsICJxNSIsICJxNiIsICJx
NyIsCisgICAgICAgICAgICAicTgiLCAicTkiLCAicTEwIiwgInExMSIsICJxMTIiLCAicTEzIiwg
InExNCIsICJxMTUiLAorICAgICAgICAgICAgInExNiIsICJxMTciLCAicTE4IiwgInExOSIsICJx
MjAiLCAicTIxIiwgInEyMiIsICJxMjMiLAorICAgICAgICAgICAgInEyNCIsICJxMjUiLCAicTI2
IiwgInEyNyIsICJxMjgiLCAicTI5IiwgInEzMCIsICJxMzEiCisgICAgICAgIH07CisgICAgICAg
IHJldHVybiBuYW1lRm9yUmVnaXN0ZXJbcmVnXTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIEludmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7Cit9OworCisjZW5k
aWYKKwogI2lmIENQVShNSVBTKQogCiBjbGFzcyBGUFJJbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9HUFJJbmZvLmgKaW5kZXggOWMzOTA0ZC4uMzU4MWM0NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9HUFJJbmZvLmgKQEAgLTQ5NSw2ICs0OTUsOTkgQEAgcHJpdmF0ZToKIAogI2VuZGlmCiAKKyNp
ZiBDUFUoQVJNNjQpCisjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgOAorCitj
bGFzcyBHUFJJbmZvIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEdQUlJlZyBSZWdpc3RlclR5cGU7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gMTY7CisKKyAg
ICAvLyBUaGVzZSByZWdpc3RlcnMgbWF0Y2ggdGhlIGJhc2VsaW5lIEpJVC4KKyAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OngwOwor
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgdGltZW91dENoZWNrUmVnaXN0ZXIgPSBBUk02NFJlZ2lz
dGVyczo6eDI2OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBB
Uk02NFJlZ2lzdGVyczo6eDI1OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgdGFnVHlwZU51bWJl
clJlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OngyNzsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IHRhZ01hc2tSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjp4Mjg7CisgICAgLy8gVGVtcG9yYXJ5
IHJlZ2lzdGVycy4KKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QwID0gQVJNNjRSZWdpc3Rl
cnM6OngwOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDEgPSBBUk02NFJlZ2lzdGVyczo6
eDE7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMiA9IEFSTTY0UmVnaXN0ZXJzOjp4MjsK
KyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QzID0gQVJNNjRSZWdpc3RlcnM6OngzOworICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDQgPSBBUk02NFJlZ2lzdGVyczo6eDQ7CisgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyByZWdUNSA9IEFSTTY0UmVnaXN0ZXJzOjp4NTsKKyAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIHJlZ1Q2ID0gQVJNNjRSZWdpc3RlcnM6Ong2OworICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgcmVnVDcgPSBBUk02NFJlZ2lzdGVyczo6eDc7CisgICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyByZWdUOCA9IEFSTTY0UmVnaXN0ZXJzOjp4ODsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IHJlZ1Q5ID0gQVJNNjRSZWdpc3RlcnM6Ong5OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVn
VDEwID0gQVJNNjRSZWdpc3RlcnM6OngxMDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Qx
MSA9IEFSTTY0UmVnaXN0ZXJzOjp4MTE7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMTIg
PSBBUk02NFJlZ2lzdGVyczo6eDEyOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDEzID0g
QVJNNjRSZWdpc3RlcnM6OngxMzsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QxNCA9IEFS
TTY0UmVnaXN0ZXJzOjp4MTQ7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMTUgPSBBUk02
NFJlZ2lzdGVyczo6eDE1OworICAgIC8vIFRoZXNlIGNvbnN0YW50cyBwcm92aWRlIHRoZSBuYW1l
cyBmb3IgdGhlIGdlbmVyYWwgcHVycG9zZSBhcmd1bWVudCAmIHJldHVybiB2YWx1ZSByZWdpc3Rl
cnMuCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjAgPSBBUk02NFJlZ2lzdGVy
czo6eDA7IC8vIHJlZ1QwCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjEgPSBB
Uk02NFJlZ2lzdGVyczo6eDE7IC8vIHJlZ1QxCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1
bWVudEdQUjIgPSBBUk02NFJlZ2lzdGVyczo6eDI7IC8vIHJlZ1QyCisgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBBUk02NFJlZ2lzdGVyczo6eDM7IC8vIHJlZ1QzCisgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjQgPSBBUk02NFJlZ2lzdGVyczo6eDQ7IC8v
IHJlZ1Q0CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjUgPSBBUk02NFJlZ2lz
dGVyczo6eDU7IC8vIHJlZ1Q1CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjYg
PSBBUk02NFJlZ2lzdGVyczo6eDY7IC8vIHJlZ1Q2CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBh
cmd1bWVudEdQUjcgPSBBUk02NFJlZ2lzdGVyczo6eDc7IC8vIHJlZ1Q3CisgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyBub25BcmdHUFIwID0gQVJNNjRSZWdpc3RlcnM6Ong4OyAvLyByZWdUOAorICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IEFSTTY0UmVnaXN0ZXJzOjp4OTsgLy8g
cmVnVDkKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjIgPSBBUk02NFJlZ2lzdGVy
czo6eDEwOyAvLyByZWdUMTAKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BS
ID0gQVJNNjRSZWdpc3RlcnM6OngwOyAvLyByZWdUMAorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
cmV0dXJuVmFsdWVHUFIyID0gQVJNNjRSZWdpc3RlcnM6OngxOyAvLyByZWdUMQorICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gQVJNNjRSZWdpc3RlcnM6
OngyOworCisgICAgLy8gR1BSUmVnIG1hcHBpbmcgaXMgZGlyZWN0LCB0aGUgbWFjaGluZSByZWdz
aXRlciBudW1iZXJzIGNhbgorICAgIC8vIGJlIHVzZWQgZGlyZWN0bHkgYXMgaW5kaWNlcyBpbnRv
IHRoZSBHUFIgUmVnaXN0ZXJCYW5rLgorICAgIENPTVBJTEVfQVNTRVJUKEFSTTY0UmVnaXN0ZXJz
OjpxMCA9PSAwLCBxMF9pc18wKTsKKyAgICBDT01QSUxFX0FTU0VSVChBUk02NFJlZ2lzdGVyczo6
cTEgPT0gMSwgcTFfaXNfMSk7CisgICAgQ09NUElMRV9BU1NFUlQoQVJNNjRSZWdpc3RlcnM6OnEy
ID09IDIsIHEyX2lzXzIpOworICAgIENPTVBJTEVfQVNTRVJUKEFSTTY0UmVnaXN0ZXJzOjpxMyA9
PSAzLCBxM19pc18zKTsKKyAgICBDT01QSUxFX0FTU0VSVChBUk02NFJlZ2lzdGVyczo6cTQgPT0g
NCwgcTRfaXNfNCk7CisgICAgQ09NUElMRV9BU1NFUlQoQVJNNjRSZWdpc3RlcnM6OnE1ID09IDUs
IHE1X2lzXzUpOworICAgIENPTVBJTEVfQVNTRVJUKEFSTTY0UmVnaXN0ZXJzOjpxNiA9PSA2LCBx
Nl9pc182KTsKKyAgICBDT01QSUxFX0FTU0VSVChBUk02NFJlZ2lzdGVyczo6cTcgPT0gNywgcTdf
aXNfNyk7CisgICAgQ09NUElMRV9BU1NFUlQoQVJNNjRSZWdpc3RlcnM6OnE4ID09IDgsIHE4X2lz
XzgpOworICAgIENPTVBJTEVfQVNTRVJUKEFSTTY0UmVnaXN0ZXJzOjpxOSA9PSA5LCBxOV9pc185
KTsKKyAgICBDT01QSUxFX0FTU0VSVChBUk02NFJlZ2lzdGVyczo6cTEwID09IDEwLCBxMTBfaXNf
MTApOworICAgIENPTVBJTEVfQVNTRVJUKEFSTTY0UmVnaXN0ZXJzOjpxMTEgPT0gMTEsIHExMV9p
c18xMSk7CisgICAgQ09NUElMRV9BU1NFUlQoQVJNNjRSZWdpc3RlcnM6OnExMiA9PSAxMiwgcTEy
X2lzXzEyKTsKKyAgICBDT01QSUxFX0FTU0VSVChBUk02NFJlZ2lzdGVyczo6cTEzID09IDEzLCBx
MTNfaXNfMTMpOworICAgIENPTVBJTEVfQVNTRVJUKEFSTTY0UmVnaXN0ZXJzOjpxMTQgPT0gMTQs
IHExNF9pc18xNCk7CisgICAgQ09NUElMRV9BU1NFUlQoQVJNNjRSZWdpc3RlcnM6OnExNSA9PSAx
NSwgcTE1X2lzXzE1KTsKKyAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5k
ZXgpCisgICAgeworICAgICAgICByZXR1cm4gKEdQUlJlZylpbmRleDsKKyAgICB9CisgICAgc3Rh
dGljIHVuc2lnbmVkIHRvSW5kZXgoR1BSUmVnIHJlZykKKyAgICB7CisgICAgICAgIHJldHVybiAo
dW5zaWduZWQpcmVnOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUo
R1BSUmVnIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
cmVnKSAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihyZWcpIDwgMzIpOworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lz
dGVyWzMyXSA9IHsKKyAgICAgICAgICAgICJyMCIsICJyMSIsICJyMiIsICJyMyIsICJyNCIsICJy
NSIsICJyNiIsICJyNyIsCisgICAgICAgICAgICAicjgiLCAicjkiLCAicjEwIiwgInIxMSIsICJy
MTIiLCAicjEzIiwgInIxNCIsICJyMTUiLAorICAgICAgICAgICAgInIxNiIsICJyMTciLCAicjE4
IiwgInIxOSIsICJyMjAiLCAicjIxIiwgInIyMiIsICJyMjMiLAorICAgICAgICAgICAgInIyNCIs
ICJyMjUiLCAicjI2IiwgInIyNyIsICJyMjgiLCAiZnAiLCAibHIiLCAic3AiCisgICAgICAgIH07
CisgICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0ZXJbcmVnXTsKKyAgICB9Citwcml2YXRlOgor
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEludmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7Cit9
OworCisjZW5kaWYKKwogI2lmIENQVShNSVBTKQogI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRf
UkVHSVNURVJTIDQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCBi
NGEyMGI3Li44ZDBkOTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApA
QCAtMTk2LDcgKzE5Niw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OnJlc3RvcmVBcmd1bWVu
dFJlZmVyZW5jZUZvclRyYW1wb2xpbmUoKQogI2lmIENQVShYODYpCiAgICAgLy8gV2l0aGluIGEg
dHJhbXBvbGluZSB0aGUgcmV0dXJuIGFkZHJlc3Mgd2lsbCBiZSBvbiB0aGUgc3RhY2sgYXQgdGhp
cyBwb2ludC4KICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZih2b2lkKikpLCBzdGFja1Bv
aW50ZXJSZWdpc3RlciwgZmlyc3RBcmd1bWVudFJlZ2lzdGVyKTsKLSNlbGlmIENQVShBUk0pCisj
ZWxpZiBDUFUoQVJNKSB8fCBDUFUoQVJNNjQpCiAgICAgbW92ZShzdGFja1BvaW50ZXJSZWdpc3Rl
ciwgZmlyc3RBcmd1bWVudFJlZ2lzdGVyKTsKICNlbGlmIENQVShTSDQpCiAgICAgbW92ZShzdGFj
a1BvaW50ZXJSZWdpc3RlciwgZmlyc3RBcmd1bWVudFJlZ2lzdGVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9uV3JhcHBlcnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9uV3JhcHBlcnMuaAppbmRleCA4NzNiMWMxLi4x
NjgyNDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bldyYXBwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25X
cmFwcGVycy5oCkBAIC04Miw2ICs4MiwyNSBAQCBuYW1lc3BhY2UgSlNDIHsKICNkZWZpbmUgX0pf
RlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKSShmdW5jdGlvbikgIEZVTkNU
SU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTUyhmdW5jdGlvbiwgMjApCiAjZGVmaW5lIF9W
X0ZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FSkNJKGZ1bmN0aW9uKSBGVU5D
VElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1MoZnVuY3Rpb24sIDI0KQogCisjZWxpZiBD
UFUoQVJNNjQpCisKKyNkZWZpbmUgRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNT
KGZ1bmN0aW9uLCByZWdpc3RlcikgXAorICAgIGFzbSAoIFwKKyAgICAiLnRleHQiICJcbiIgXAor
ICAgICIuYWxpZ24gMiIgIlxuIiBcCisgICAgIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZnVuY3Rp
b24pICJcbiIgXAorICAgIEhJREVfU1lNQk9MKGZ1bmN0aW9uKSAiXG4iIFwKKyAgICBTWU1CT0xf
U1RSSU5HKGZ1bmN0aW9uKSAiOiIgIlxuIiBcCisgICAgICAgICJtb3YgIiBTVFJJTkdJWkUocmVn
aXN0ZXIpICIsIGxyIiAiXG4iIFwKKyAgICAgICAgImIgIiBMT0NBTF9SRUZFUkVOQ0UoZnVuY3Rp
b24pICJXaXRoUmV0dXJuQWRkcmVzcyIgIlxuIiBcCisgICAgKTsKKworI2RlZmluZSBfUF9GVU5D
VElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRShmdW5jdGlvbikgICAgRlVOQ1RJT05f
V1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTKGZ1bmN0aW9uLCB4MSkKKyNkZWZpbmUgX0pfRlVO
Q1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0UoZnVuY3Rpb24pICAgIEZVTkNUSU9O
X1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTUyhmdW5jdGlvbiwgeDEpCisjZGVmaW5lIF9KX0ZV
TkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FQ0koZnVuY3Rpb24pICBGVU5DVElP
Tl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1MoZnVuY3Rpb24sIHgzKQorI2RlZmluZSBfSl9G
VU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUpJKGZ1bmN0aW9uKSAgRlVOQ1RJ
T05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTKGZ1bmN0aW9uLCB4MykKKyNkZWZpbmUgX1Zf
RlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKQ0koZnVuY3Rpb24pIEZVTkNU
SU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTUyhmdW5jdGlvbiwgeDQpCisKICNlbGlmIENP
TVBJTEVSKEdDQykgJiYgQ1BVKEFSTV9USFVNQjIpCiAKICNkZWZpbmUgX1BfRlVOQ1RJT05fV1JB
UFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0UoZnVuY3Rpb24pIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGI2MzBlYzUuLjIzZjIxYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtOTY3LDYgKzk2
NywxOCBAQCBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCiAg
ICAgImIgIiBMT0NBTF9SRUZFUkVOQ0UoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3Rh
dGUpICJcbiIKICk7CiAKKyNlbGlmIENQVShBUk02NCkKK2FzbSAoCisiLnRleHQiICJcbiIKKyIu
YWxpZ24gMiIgIlxuIgorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZSkgIlxuIgorSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lN
Qk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJsZHVyIHgy
NSwgW3gyNSwgIy00MF0iICJcbiIKKyAgICAgIm1vdiB4MCwgeDI1IiAiXG4iCisgICAgICJiICIg
TE9DQUxfUkVGRVJFTkNFKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4i
CispOworCiAjZWxpZiBDT01QSUxFUihHQ0MpICYmIENQVShNSVBTKQogYXNtICgKICIudGV4dCIg
IlxuIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAppbmRleCA0NGU3ZjhlLi4y
MTgwMjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcApAQCAtOTUsNiAr
OTUsOCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogI2luY2x1ZGUgIkpJVFN0dWJzWDg2LmgiCiAj
ZWxpZiBDUFUoWDg2XzY0KQogI2luY2x1ZGUgIkpJVFN0dWJzWDg2XzY0LmgiCisjZWxpZiBDUFUo
QVJNNjQpCisjaW5jbHVkZSAiSklUU3R1YnNBUk02NC5oIgogI2Vsc2UKICNlcnJvciAiSklUIG5v
dCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4iCiAjZW5kaWYKQEAgLTExNCw2ICsxMTYsOCBA
QCB2b2lkIHBlcmZvcm1QbGF0Zm9ybVNwZWNpZmljSklUQXNzZXJ0aW9ucyhWTSogdm0pCiAKICNp
ZiBDUFUoQVJNX1RIVU1CMikKICAgICBwZXJmb3JtQVJNdjdKSVRBc3NlcnRpb25zKCk7CisjZWxp
ZiBDUFUoQVJNNjQpCisgICAgcGVyZm9ybUFSTTY0SklUQXNzZXJ0aW9ucygpOwogI2VsaWYgQ1BV
KEFSTV9UUkFESVRJT05BTCkKICAgICBwZXJmb3JtQVJNSklUQXNzZXJ0aW9ucygpOwogI2VsaWYg
Q1BVKE1JUFMpCkBAIC0xNTEsNyArMTU1LDEzIEBAIE5FVkVSX0lOTElORSBzdGF0aWMgdm9pZCB0
cnlDYWNoZVB1dEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsCiAg
ICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhjb2RlQmxvY2ssIHJldHVybkFkZHJl
c3MsIEZ1bmN0aW9uUHRyKGRpcmVjdCA/IGN0aV9vcF9wdXRfYnlfaWRfZGlyZWN0X2dlbmVyaWMg
OiBjdGlfb3BfcHV0X2J5X2lkX2dlbmVyaWMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQor
ICAgIAorICAgIC8vIElmIHRoZSBvZmZzZXQgaXNuJ3Qgc29tZXRoaW5nIHdlIGNhbiBwYXRjaCwg
dGhlbiBiYWlsIG91dC4KKyAgICBpZiAoIU1hY3JvQXNzZW1ibGVyOjppc1B0ckFsaWduZWRBZGRy
ZXNzT2Zmc2V0KG9mZnNldFJlbGF0aXZlVG9QYXRjaGVkU3RvcmFnZShzbG90LmNhY2hlZE9mZnNl
dCgpKSkpIHsKKyAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKGNvZGVCbG9jaywg
cmV0dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoZGlyZWN0ID8gY3RpX29wX3B1dF9ieV9pZF9kaXJl
Y3RfZ2VuZXJpYyA6IGN0aV9vcF9wdXRfYnlfaWRfZ2VuZXJpYykpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIAogICAgIC8vIENhY2hlIGhpdDogU3BlY2lhbGl6ZSBpbnN0cnVjdGlvbiBh
bmQgcmVmIFN0cnVjdHVyZXMuCiAKICAgICAvLyBTdHJ1Y3R1cmUgdHJhbnNpdGlvbiwgY2FjaGUg
dHJhbnNpdGlvbiBpbmZvCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgKaW5kZXggMTM4
MDBkMS4uZmQyZTE5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaApAQCAtMTEw
LDYgKzExMCwzMSBAQCBzdHJ1Y3QgSklUU3RhY2tGcmFtZSB7CiAgICAgLy8gV2hlbiBKSVQgY29k
ZSBtYWtlcyBhIGNhbGwsIGl0IHB1c2hlcyBpdHMgcmV0dXJuIGFkZHJlc3MganVzdCBiZWxvdyB0
aGUgcmVzdCBvZiB0aGUgc3RhY2suCiAgICAgUmV0dXJuQWRkcmVzc1B0ciogcmV0dXJuQWRkcmVz
c1Nsb3QoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PFJldHVybkFkZHJlc3NQdHIqPih0aGlz
KSAtIDE7IH0KIH07CisjZWxpZiBDUFUoQVJNNjQpCitzdHJ1Y3QgSklUU3RhY2tGcmFtZSB7Cisg
ICAgSklUU3R1YkFyZyBhcmdzWzZdOworCisgICAgUmV0dXJuQWRkcmVzc1B0ciB0aHVua1JldHVy
bkFkZHJlc3M7CisKKyAgICB2b2lkKiBwcmVzZXJ2ZWRSZXR1cm5BZGRyZXNzOworICAgIHZvaWQq
IHByZXNlcnZlZFgxOTsKKyAgICB2b2lkKiBwcmVzZXJ2ZWRYMjA7CisgICAgdm9pZCogcHJlc2Vy
dmVkWDIxOworICAgIHZvaWQqIHByZXNlcnZlZFgyMjsKKyAgICB2b2lkKiBwcmVzZXJ2ZWRYMjM7
CisgICAgdm9pZCogcHJlc2VydmVkWDI0OworICAgIHZvaWQqIHByZXNlcnZlZFgyNTsKKyAgICB2
b2lkKiBwcmVzZXJ2ZWRYMjY7CisgICAgdm9pZCogcHJlc2VydmVkWDI3OworICAgIHZvaWQqIHBy
ZXNlcnZlZFgyODsKKworICAgIEpTU3RhY2sqIHN0YWNrOworICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lOworICAgIExlZ2FjeVByb2ZpbGVyKiogZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlOworICAg
IFZNKiB2bTsKKyAgICAKKyAgICBSZXR1cm5BZGRyZXNzUHRyKiByZXR1cm5BZGRyZXNzU2xvdCgp
IHsgcmV0dXJuICZ0aHVua1JldHVybkFkZHJlc3M7IH0KK307CiAjZWxpZiBPUyhXSU5ET1dTKSAm
JiBDUFUoWDg2XzY0KQogc3RydWN0IEpJVFN0YWNrRnJhbWUgewogICAgIHZvaWQqIHNoYWRvd1s0
XTsgLy8gU2hhZG93IHNwYWNlIHJlc2VydmVkIGZvciBhIGNhbGxlZSdzIHBhcmFtZXRlcnMgaG9t
ZSBhZGRyZXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1
YnNBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVic0FSTTY0LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNmYTI4NAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNBUk02NC5oCkBAIC0wLDAgKzEs
MTg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEpJVFN0dWJzQVJNNjRfaAorI2RlZmluZSBKSVRTdHVic0FS
TTY0X2gKKworI2lmICFDUFUoQVJNNjQpCisjZXJyb3IgIkpJVFN0dWJzQVJNNjQuaCBzaG91bGQg
b25seSBiZSAjaW5jbHVkZWQgaWYgQ1BVKEFSTTY0KSIKKyNlbmRpZgorCisjaWYgIVVTRShKU1ZB
TFVFNjQpCisjZXJyb3IgIkpJVFN0dWJzQVJNNjQuaCBvbmx5IGltcGxlbWVudHMgVVNFKEpTVkFM
VUU2NCkiCisjZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7CisKKyNpZiBDT01QSUxFUihHQ0MpCisK
KyNkZWZpbmUgVEhVTktfUkVUVVJOX0FERFJFU1NfT0ZGU0VUICAgICAgMHgzMAorI2RlZmluZSBQ
UkVTRVJWRURfUkVUVVJOX0FERFJFU1NfT0ZGU0VUICAweDM4CisjZGVmaW5lIFBSRVNFUlZFRF9Y
MTlfT0ZGU0VUICAgICAgICAgICAgIDB4NDAKKyNkZWZpbmUgUFJFU0VSVkVEX1gyMF9PRkZTRVQg
ICAgICAgICAgICAgMHg0OAorI2RlZmluZSBQUkVTRVJWRURfWDIxX09GRlNFVCAgICAgICAgICAg
ICAweDUwCisjZGVmaW5lIFBSRVNFUlZFRF9YMjJfT0ZGU0VUICAgICAgICAgICAgIDB4NTgKKyNk
ZWZpbmUgUFJFU0VSVkVEX1gyM19PRkZTRVQgICAgICAgICAgICAgMHg2MAorI2RlZmluZSBQUkVT
RVJWRURfWDI0X09GRlNFVCAgICAgICAgICAgICAweDY4CisjZGVmaW5lIFBSRVNFUlZFRF9YMjVf
T0ZGU0VUICAgICAgICAgICAgIDB4NzAKKyNkZWZpbmUgUFJFU0VSVkVEX1gyNl9PRkZTRVQgICAg
ICAgICAgICAgMHg3OAorI2RlZmluZSBQUkVTRVJWRURfWDI3X09GRlNFVCAgICAgICAgICAgICAw
eDgwCisjZGVmaW5lIFBSRVNFUlZFRF9YMjhfT0ZGU0VUICAgICAgICAgICAgIDB4ODgKKyNkZWZp
bmUgUkVHSVNURVJfRklMRV9PRkZTRVQgICAgICAgICAgICAgMHg5MAorI2RlZmluZSBDQUxMRlJB
TUVfT0ZGU0VUICAgICAgICAgICAgICAgICAweDk4CisjZGVmaW5lIFBST0ZJTEVSX1JFRkVSRU5D
RV9PRkZTRVQgICAgICAgIDB4YTAKKyNkZWZpbmUgVk1fT0ZGU0VUICAgICAgICAgICAgICAgICAg
ICAgICAgMHhhOAorI2RlZmluZSBTSVpFT0ZfSklUU1RBQ0tGUkFNRSAgICAgICAgICAgICAweGIw
CisKK2FzbSAoCisiLnNlY3Rpb24JX19URVhULF9fdGV4dCxyZWd1bGFyLHB1cmVfaW5zdHJ1Y3Rp
b25zIiAiXG4iCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlUcmFtcG9saW5lKSAiXG4iCisi
LmFsaWduIDIiICJcbiIKK0hJREVfU1lNQk9MKGN0aVRyYW1wb2xpbmUpICJcbiIKK1NZTUJPTF9T
VFJJTkcoY3RpVHJhbXBvbGluZSkgIjoiICJcbiIKKyAgICAic3ViIHNwLCBzcCwgIyIgU1RSSU5H
SVpFX1ZBTFVFX09GKFNJWkVPRl9KSVRTVEFDS0ZSQU1FKSAiXG4iCisgICAgInN0ciBsciwgW3Nw
LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVEX1JFVFVSTl9BRERSRVNTX09GRlNFVCkg
Il0iICJcbiIKKyAgICAic3RyIHgxOSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJFU0VS
VkVEX1gxOV9PRkZTRVQpICJdIiAiXG4iCisgICAgInN0ciB4MjAsIFtzcCwgIyIgU1RSSU5HSVpF
X1ZBTFVFX09GKFBSRVNFUlZFRF9YMjBfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJzdHIgeDIxLCBb
c3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUkVTRVJWRURfWDIxX09GRlNFVCkgIl0iICJcbiIK
KyAgICAic3RyIHgyMiwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVEX1gyMl9P
RkZTRVQpICJdIiAiXG4iCisgICAgInN0ciB4MjMsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09G
KFBSRVNFUlZFRF9YMjNfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJzdHIgeDI0LCBbc3AsICMiIFNU
UklOR0laRV9WQUxVRV9PRihQUkVTRVJWRURfWDI0X09GRlNFVCkgIl0iICJcbiIKKyAgICAic3Ry
IHgyNSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVEX1gyNV9PRkZTRVQpICJd
IiAiXG4iCisgICAgInN0ciB4MjYsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZF
RF9YMjZfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJzdHIgeDI3LCBbc3AsICMiIFNUUklOR0laRV9W
QUxVRV9PRihQUkVTRVJWRURfWDI3X09GRlNFVCkgIl0iICJcbiIKKyAgICAic3RyIHgyOCwgW3Nw
LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVEX1gyOF9PRkZTRVQpICJdIiAiXG4iCisg
ICAgInN0ciB4MSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUkVHSVNURVJfRklMRV9PRkZT
RVQpICJdIiAiXG4iCisgICAgInN0ciB4MiwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoQ0FM
TEZSQU1FX09GRlNFVCkgIl0iICJcbiIKKyAgICAic3RyIHg0LCBbc3AsICMiIFNUUklOR0laRV9W
QUxVRV9PRihQUk9GSUxFUl9SRUZFUkVOQ0VfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJzdHIgeDUs
IFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFZNX09GRlNFVCkgIl0iICJcbiIKKyAgICAibW92
IHgyNSwgeDIiICJcbiIgLy8gY2FsbEZyYW1lUmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6eDI1
CisgICAgIm1vdiB4MjYsICM1MTIiICJcbiIgLy8gdGltZW91dENoZWNrUmVnaXN0ZXIgPSBBUk02
NFJlZ2lzdGVyczo6eDI2CisgICAgIm1vdiB4MjcsICMweEZGRkYwMDAwMDAwMDAwMDAiICJcbiIg
Ly8gdGFnVHlwZU51bWJlclJlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OngyNworICAgICJhZGQg
eDI4LCB4MjcsICMyIiAiXG4iIC8vICggIzB4RkZGRjAwMDAwMDAwMDAwMiApIHRhZ01hc2tSZWdp
c3RlciA9IEFSTTY0UmVnaXN0ZXJzOjp4MjgKKyAgICAiYmxyIHgwIiAiXG4iCisgICAgImxkciB4
MjgsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9YMjhfT0ZGU0VUKSAiXSIg
IlxuIgorICAgICJsZHIgeDI3LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUkVTRVJWRURf
WDI3X09GRlNFVCkgIl0iICJcbiIKKyAgICAibGRyIHgyNiwgW3NwLCAjIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJFU0VSVkVEX1gyNl9PRkZTRVQpICJdIiAiXG4iCisgICAgImxkciB4MjUsIFtzcCwg
IyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9YMjVfT0ZGU0VUKSAiXSIgIlxuIgorICAg
ICJsZHIgeDI0LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUkVTRVJWRURfWDI0X09GRlNF
VCkgIl0iICJcbiIKKyAgICAibGRyIHgyMywgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJF
U0VSVkVEX1gyM19PRkZTRVQpICJdIiAiXG4iCisgICAgImxkciB4MjIsIFtzcCwgIyIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9YMjJfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJsZHIgeDIx
LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUkVTRVJWRURfWDIxX09GRlNFVCkgIl0iICJc
biIKKyAgICAibGRyIHgyMCwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVEX1gy
MF9PRkZTRVQpICJdIiAiXG4iCisgICAgImxkciB4MTksIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBSRVNFUlZFRF9YMTlfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJsZHIgbHIsIFtzcCwgIyIg
U1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9SRVRVUk5fQUREUkVTU19PRkZTRVQpICJdIiAi
XG4iCisgICAgImFkZCBzcCwgc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihTSVpFT0ZfSklUU1RB
Q0tGUkFNRSkgIlxuIgorICAgICJyZXQiICJcbiIKKworSElERV9TWU1CT0woY3RpVk1IYW5kbGVF
eGNlcHRpb24pICJcbiIKK1NZTUJPTF9TVFJJTkcoY3RpVk1IYW5kbGVFeGNlcHRpb24pICI6IiAi
XG4iCisgICAgIm1vdiB4MCwgeDI1IiAiXG4iCisgICAgImJsICIgTE9DQUxfUkVGRVJFTkNFKGN0
aV92bV9oYW5kbGVfZXhjZXB0aW9uKSAiXG4iCisgICAgLy8gV2hlbiBjdGlfdm1fdGhyb3dfc2xv
d3BhdGggcmV0dXJucywgeDAgaGFzIGNhbGxGcmFtZSBhbmQgeDEgaGFzIGhhbmRsZXIgYWRkcmVz
cworICAgICJtb3YgeDI1LCB4MCIgIlxuIgorICAgICJiciB4MSIgIlxuIgorCitISURFX1NZTUJP
TChjdGlPcFRocm93Tm90Q2F1Z2h0KSAiXG4iCitTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RD
YXVnaHQpICI6IiAiXG4iCisgICAgImxkciB4MjgsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09G
KFBSRVNFUlZFRF9YMjhfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJsZHIgeDI3LCBbc3AsICMiIFNU
UklOR0laRV9WQUxVRV9PRihQUkVTRVJWRURfWDI3X09GRlNFVCkgIl0iICJcbiIKKyAgICAibGRy
IHgyNiwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVEX1gyNl9PRkZTRVQpICJd
IiAiXG4iCisgICAgImxkciB4MjUsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZF
RF9YMjVfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJsZHIgeDI0LCBbc3AsICMiIFNUUklOR0laRV9W
QUxVRV9PRihQUkVTRVJWRURfWDI0X09GRlNFVCkgIl0iICJcbiIKKyAgICAibGRyIHgyMywgW3Nw
LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVEX1gyM19PRkZTRVQpICJdIiAiXG4iCisg
ICAgImxkciB4MjIsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9YMjJfT0ZG
U0VUKSAiXSIgIlxuIgorICAgICJsZHIgeDIxLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQ
UkVTRVJWRURfWDIxX09GRlNFVCkgIl0iICJcbiIKKyAgICAibGRyIHgyMCwgW3NwLCAjIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJFU0VSVkVEX1gyMF9PRkZTRVQpICJdIiAiXG4iCisgICAgImxkciB4
MTksIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9YMTlfT0ZGU0VUKSAiXSIg
IlxuIgorICAgICJsZHIgbHIsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBSRVNFUlZFRF9S
RVRVUk5fQUREUkVTU19PRkZTRVQpICJdIiAiXG4iCisgICAgImFkZCBzcCwgc3AsICMiIFNUUklO
R0laRV9WQUxVRV9PRihTSVpFT0ZfSklUU1RBQ0tGUkFNRSkgIlxuIgorICAgICJyZXQiICJcbiIK
KyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aVRyYW1wb2xpbmVFbmQpICJcbiIKKyIuYWxpZ24g
MiIgIlxuIgorSElERV9TWU1CT0woY3RpVHJhbXBvbGluZUVuZCkgIlxuIgorU1lNQk9MX1NUUklO
RyhjdGlUcmFtcG9saW5lRW5kKSAiOiIgIlxuIgorKTsKKworYXNtICgKKyIuc2VjdGlvbglfX1RF
WFQsX190ZXh0LHJlZ3VsYXIscHVyZV9pbnN0cnVjdGlvbnMiICJcbiIKKyIuZ2xvYmwgIiBTWU1C
T0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lKSAiXG4iCisiLmFsaWduIDIiICJcbiIKK0hJ
REVfU1lNQk9MKGN0aVZNVGhyb3dUcmFtcG9saW5lKSAiXG4iCitTWU1CT0xfU1RSSU5HKGN0aVZN
VGhyb3dUcmFtcG9saW5lKSAiOiIgIlxuIgorICAgICJtb3YgeDAsIHNwIiAiXG4iCisgICAgImJs
ICIgTE9DQUxfUkVGRVJFTkNFKGN0aV92bV90aHJvdykgIlxuIgorICAgICJobHQgMHhkZWFkIiAi
XG4iIC8vIFNob3VsZCBub3QgYmUgcmVhY2hlZCEKKyk7CisKKyNkZWZpbmUgREVGSU5FX1NUVUJf
RlVOQ1RJT04ocnR5cGUsIG9wKSBcCisgICAgZXh0ZXJuICJDIiB7IFwKKyAgICAgICAgcnR5cGUg
SklUU3R1YlRodW5rZWRfIyNvcChTVFVCX0FSR1NfREVDTEFSQVRJT04pOyBcCisgICAgfTsgXAor
ICAgIGFzbSAoIFwKKyAgICAgICAgIi5zZWN0aW9uCV9fVEVYVCxfX3RleHQscmVndWxhcixwdXJl
X2luc3RydWN0aW9ucyIgIlxuIiBcCisgICAgICAgICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0
aV8jI29wKSAiXG4iIFwKKyAgICAgICAgIi5hbGlnbiAyIiAiXG4iIFwKKyAgICAgICAgSElERV9T
WU1CT0woY3RpXyMjb3ApICJcbiIgICAgICAgICAgICAgXAorICAgICAgICBTWU1CT0xfU1RSSU5H
KGN0aV8jI29wKSAiOiIgIlxuIiBcCisgICAgICAgICJzdHIgbHIsIFtzcCwgIyIgU1RSSU5HSVpF
X1ZBTFVFX09GKFRIVU5LX1JFVFVSTl9BRERSRVNTX09GRlNFVCkgIl0iICJcbiIgXAorICAgICAg
ICAiYmwgIiBTWU1CT0xfU1RSSU5HKEpJVFN0dWJUaHVua2VkXyMjb3ApICJcbiIgXAorICAgICAg
ICAibGRyIGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihUSFVOS19SRVRVUk5fQUREUkVT
U19PRkZTRVQpICJdIiAiXG4iIFwKKyAgICAgICAgInJldCIgIlxuIiBcCisgICAgICAgICk7IFwK
KyAgICBydHlwZSBKSVRTdHViVGh1bmtlZF8jI29wKFNUVUJfQVJHU19ERUNMQVJBVElPTikgXAor
CisjZW5kaWYgLy8gQ09NUElMRVIoR0NDKQorCitzdGF0aWMgdm9pZCBwZXJmb3JtQVJNNjRKSVRB
c3NlcnRpb25zKCkKK3sKKyAgICBBU1NFUlQoT0JKRUNUX09GRlNFVE9GKHN0cnVjdCBKSVRTdGFj
a0ZyYW1lLCB0aHVua1JldHVybkFkZHJlc3MpID09IFRIVU5LX1JFVFVSTl9BRERSRVNTX09GRlNF
VCk7CisgICAgQVNTRVJUKE9CSkVDVF9PRkZTRVRPRihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgcHJl
c2VydmVkUmV0dXJuQWRkcmVzcykgPT0gUFJFU0VSVkVEX1JFVFVSTl9BRERSRVNTX09GRlNFVCk7
CisgICAgQVNTRVJUKE9CSkVDVF9PRkZTRVRPRihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgcHJlc2Vy
dmVkWDE5KSA9PSBQUkVTRVJWRURfWDE5X09GRlNFVCk7CisgICAgQVNTRVJUKE9CSkVDVF9PRkZT
RVRPRihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgcHJlc2VydmVkWDIwKSA9PSBQUkVTRVJWRURfWDIw
X09GRlNFVCk7CisgICAgQVNTRVJUKE9CSkVDVF9PRkZTRVRPRihzdHJ1Y3QgSklUU3RhY2tGcmFt
ZSwgcHJlc2VydmVkWDIxKSA9PSBQUkVTRVJWRURfWDIxX09GRlNFVCk7CisgICAgQVNTRVJUKE9C
SkVDVF9PRkZTRVRPRihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgcHJlc2VydmVkWDIyKSA9PSBQUkVT
RVJWRURfWDIyX09GRlNFVCk7CisgICAgQVNTRVJUKE9CSkVDVF9PRkZTRVRPRihzdHJ1Y3QgSklU
U3RhY2tGcmFtZSwgcHJlc2VydmVkWDIzKSA9PSBQUkVTRVJWRURfWDIzX09GRlNFVCk7CisgICAg
QVNTRVJUKE9CSkVDVF9PRkZTRVRPRihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgcHJlc2VydmVkWDI0
KSA9PSBQUkVTRVJWRURfWDI0X09GRlNFVCk7CisgICAgQVNTRVJUKE9CSkVDVF9PRkZTRVRPRihz
dHJ1Y3QgSklUU3RhY2tGcmFtZSwgcHJlc2VydmVkWDI1KSA9PSBQUkVTRVJWRURfWDI1X09GRlNF
VCk7CisgICAgQVNTRVJUKE9CSkVDVF9PRkZTRVRPRihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgcHJl
c2VydmVkWDI2KSA9PSBQUkVTRVJWRURfWDI2X09GRlNFVCk7CisgICAgQVNTRVJUKE9CSkVDVF9P
RkZTRVRPRihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgcHJlc2VydmVkWDI3KSA9PSBQUkVTRVJWRURf
WDI3X09GRlNFVCk7CisgICAgQVNTRVJUKE9CSkVDVF9PRkZTRVRPRihzdHJ1Y3QgSklUU3RhY2tG
cmFtZSwgcHJlc2VydmVkWDI4KSA9PSBQUkVTRVJWRURfWDI4X09GRlNFVCk7CisgICAgQVNTRVJU
KE9CSkVDVF9PRkZTRVRPRihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgc3RhY2spID09IFJFR0lTVEVS
X0ZJTEVfT0ZGU0VUKTsKKyAgICBBU1NFUlQoT0JKRUNUX09GRlNFVE9GKHN0cnVjdCBKSVRTdGFj
a0ZyYW1lLCBjYWxsRnJhbWUpID09IENBTExGUkFNRV9PRkZTRVQpOworICAgIEFTU0VSVChPQkpF
Q1RfT0ZGU0VUT0Yoc3RydWN0IEpJVFN0YWNrRnJhbWUsIGVuYWJsZWRQcm9maWxlclJlZmVyZW5j
ZSkgPT0gUFJPRklMRVJfUkVGRVJFTkNFX09GRlNFVCk7CisgICAgQVNTRVJUKE9CSkVDVF9PRkZT
RVRPRihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgdm0pID09IFZNX09GRlNFVCk7CisgICAgQVNTRVJU
KHNpemVvZihzdHJ1Y3QgSklUU3RhY2tGcmFtZSkgPT0gU0laRU9GX0pJVFNUQUNLRlJBTUUpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpJVFN0dWJzQVJNNjRfaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCmluZGV4IGRiYzQ0ZWMuLmFh
M2U3YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VK
SVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKQEAg
LTEzMiw2ICsxMzIsMzMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBG
UFJlZ2lzdGVySUQgZnBSZWdUMSA9IEFSTVJlZ2lzdGVyczo6ZDE7CiAgICAgICAgIHN0YXRpYyBj
b25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMiA9IEFSTVJlZ2lzdGVyczo6ZDI7CiAgICAgICAgIHN0
YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMyA9IEFSTVJlZ2lzdGVyczo6ZDM7CisjZWxp
ZiBDUFUoQVJNNjQpCisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVyblZhbHVl
UmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6eDA7CisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdp
c3RlcklEIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OngwOworICAgICAg
ICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmaXJzdEFyZ3VtZW50UmVnaXN0ZXIgPSBBUk02NFJl
Z2lzdGVyczo6eDA7CisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHNlY29uZEFyZ3Vt
ZW50UmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6eDE7CisKKyNpZiBFTkFCTEUoVkFMVUVfUFJP
RklMRVIpCisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGJ1Y2tldENvdW50ZXJSZWdp
c3RlciA9IEFSTTY0UmVnaXN0ZXJzOjp4NzsKKyNlbmRpZgorCisgICAgICAgIHN0YXRpYyBjb25z
dCBSZWdpc3RlcklEIHJlZ1QwID0gQVJNNjRSZWdpc3RlcnM6OngwOworICAgICAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCByZWdUMSA9IEFSTTY0UmVnaXN0ZXJzOjp4MTsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDIgPSBBUk02NFJlZ2lzdGVyczo6eDI7CisgICAgICAg
IHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QzID0gQVJNNjRSZWdpc3RlcnM6OngyMzsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDQgPSBBUk02NFJlZ2lzdGVyczo6eDI0
OworICAgICAgICAKKyAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FsbEZyYW1lUmVn
aXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6eDI1OworICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0
ZXJJRCB0aW1lb3V0Q2hlY2tSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjp4MjY7CisgICAgICAg
IHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHRhZ1R5cGVOdW1iZXJSZWdpc3RlciA9IEFSTTY0UmVn
aXN0ZXJzOjp4Mjc7CisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHRhZ01hc2tSZWdp
c3RlciA9IEFSTTY0UmVnaXN0ZXJzOjp4Mjg7CisgICAgICAgIAorICAgICAgICBzdGF0aWMgY29u
c3QgRlBSZWdpc3RlcklEIGZwUmVnVDAgPSBBUk02NFJlZ2lzdGVyczo6cTA7CisgICAgICAgIHN0
YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMSA9IEFSTTY0UmVnaXN0ZXJzOjpxMTsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QyID0gQVJNNjRSZWdpc3RlcnM6
OnEyOworICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDMgPSBBUk02NFJl
Z2lzdGVyczo6cTM7CisKKyAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgbm9uQXJnR1BS
MSA9IEFSTTY0UmVnaXN0ZXJzOjp4OTsKICNlbGlmIENQVShNSVBTKQogICAgICAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCByZXR1cm5WYWx1ZVJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6djA7
CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVyblZhbHVlMlJlZ2lzdGVyID0g
TUlQU1JlZ2lzdGVyczo6djE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRl
eCAyNmRlOWZhLi43OGI5NzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAK
QEAgLTEzNiwxNCArMTM2LDE0IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChSZXBhdGNo
QnVmZmVyJiByZXBhdGNoQnVmZmVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1CiBzdGF0aWMgdm9p
ZCBlbWl0UmVzdG9yZVNjcmF0Y2goTWFjcm9Bc3NlbWJsZXImIHN0dWJKaXQsIGJvb2wgbmVlZFRv
UmVzdG9yZVNjcmF0Y2gsIEdQUlJlZyBzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCYg
c3VjY2VzcywgTWFjcm9Bc3NlbWJsZXI6Okp1bXAmIGZhaWwsIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCBmYWlsdXJlQ2FzZXMpCiB7CiAgICAgaWYgKG5lZWRUb1Jlc3RvcmVTY3JhdGNoKSB7Ci0g
ICAgICAgIHN0dWJKaXQucG9wKHNjcmF0Y2hHUFIpOworICAgICAgICBzdHViSml0LnBvcFRvUmVz
dG9yZShzY3JhdGNoR1BSKTsKICAgICAgICAgCiAgICAgICAgIHN1Y2Nlc3MgPSBzdHViSml0Lmp1
bXAoKTsKICAgICAgICAgCiAgICAgICAgIC8vIGxpbmsgZmFpbHVyZSBjYXNlcyBoZXJlLCBzbyB3
ZSBjYW4gcG9wIHNjcmF0Y2hHUFIsIGFuZCB0aGVuIGp1bXAgYmFjay4KICAgICAgICAgZmFpbHVy
ZUNhc2VzLmxpbmsoJnN0dWJKaXQpOwogICAgICAgICAKLSAgICAgICAgc3R1YkppdC5wb3Aoc2Ny
YXRjaEdQUik7CisgICAgICAgIHN0dWJKaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2hHUFIpOwogICAg
ICAgICAKICAgICAgICAgZmFpbCA9IHN0dWJKaXQuanVtcCgpOwogICAgICAgICByZXR1cm47CkBA
IC0xOTAsNyArMTkwLDcgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1
YihFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHUKICNlbHNlCiAgICAgICAg
IHNjcmF0Y2hHUFIgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIoYmFzZUdQUiwg
cmVzdWx0R1BSLCByZXN1bHRUYWdHUFIpOwogI2VuZGlmCi0gICAgICAgIHN0dWJKaXQucHVzaChz
Y3JhdGNoR1BSKTsKKyAgICAgICAgc3R1YkppdC5wdXNoVG9TYXZlKHNjcmF0Y2hHUFIpOwogICAg
ICAgICBuZWVkVG9SZXN0b3JlU2NyYXRjaCA9IHRydWU7CiAgICAgfQogICAgIApAQCAtMjY2LDcg
KzI2Niw3IEBAIHN0YXRpYyBib29sIHRyeUNhY2hlR2V0QnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyCiAjZWxzZQogICAgICAgICAgICAgc2Ny
YXRjaEdQUiA9IEFzc2VtYmx5SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUihiYXNlR1BSLCByZXN1
bHRHUFIsIHJlc3VsdFRhZ0dQUik7CiAjZW5kaWYKLSAgICAgICAgICAgIHN0dWJKaXQucHVzaChz
Y3JhdGNoR1BSKTsKKyAgICAgICAgICAgIHN0dWJKaXQucHVzaFRvU2F2ZShzY3JhdGNoR1BSKTsK
ICAgICAgICAgICAgIG5lZWRUb1Jlc3RvcmVTY3JhdGNoID0gdHJ1ZTsKICAgICAgICAgfQogICAg
ICAgICAKQEAgLTY2Myw3ICs2NjMsNyBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0UmVwbGFjZVN0dWIo
CiAgICAgICAgIHNjcmF0Y2hHUFIgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIo
YmFzZUdQUiwgdmFsdWVHUFIsIHZhbHVlVGFnR1BSKTsKICNlbmRpZgogICAgICAgICBuZWVkVG9S
ZXN0b3JlU2NyYXRjaCA9IHRydWU7Ci0gICAgICAgIHN0dWJKaXQucHVzaChzY3JhdGNoR1BSKTsK
KyAgICAgICAgc3R1YkppdC5wdXNoVG9TYXZlKHNjcmF0Y2hHUFIpOwogICAgIH0KIAogICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIGJhZFN0cnVjdHVyZSA9IHN0dWJKaXQuYnJhbmNoUHRyKApAQCAt
Njc3LDkgKzY3Nyw5IEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRSZXBsYWNlU3R1YigKICNlbHNlCiAg
ICAgc2NyYXRjaEdQUjIgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIoYmFzZUdQ
UiwgdmFsdWVHUFIsIHZhbHVlVGFnR1BSLCBzY3JhdGNoR1BSKTsKICNlbmRpZgotICAgIHN0dWJK
aXQucHVzaChzY3JhdGNoR1BSMik7CisgICAgc3R1YkppdC5wdXNoVG9TYXZlKHNjcmF0Y2hHUFIy
KTsKICAgICBBc3NlbWJseUhlbHBlcnM6OndyaXRlQmFycmllcihzdHViSml0LCBiYXNlR1BSLCBz
Y3JhdGNoR1BSLCBzY3JhdGNoR1BSMiwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MpOwot
ICAgIHN0dWJKaXQucG9wKHNjcmF0Y2hHUFIyKTsKKyAgICBzdHViSml0LnBvcFRvUmVzdG9yZShz
Y3JhdGNoR1BSMik7CiAjZW5kaWYKICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtNzA0LDEx
ICs3MDQsMTEgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFJlcGxhY2VTdHViKAogICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIGZhaWx1cmU7CiAgICAgCiAgICAgaWYgKG5lZWRUb1Jlc3RvcmVTY3JhdGNo
KSB7Ci0gICAgICAgIHN0dWJKaXQucG9wKHNjcmF0Y2hHUFIpOworICAgICAgICBzdHViSml0LnBv
cFRvUmVzdG9yZShzY3JhdGNoR1BSKTsKICAgICAgICAgc3VjY2VzcyA9IHN0dWJKaXQuanVtcCgp
OwogICAgICAgICAKICAgICAgICAgYmFkU3RydWN0dXJlLmxpbmsoJnN0dWJKaXQpOwotICAgICAg
ICBzdHViSml0LnBvcChzY3JhdGNoR1BSKTsKKyAgICAgICAgc3R1YkppdC5wb3BUb1Jlc3RvcmUo
c2NyYXRjaEdQUik7CiAgICAgICAgIGZhaWx1cmUgPSBzdHViSml0Lmp1bXAoKTsKICAgICB9IGVs
c2UgewogICAgICAgICBzdWNjZXNzID0gc3R1YkppdC5qdW1wKCk7CkBAIC05ODksNiArOTg5LDkg
QEAgc3RhdGljIGJvb2wgdHJ5Q2FjaGVQdXRCeUlEKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBi
YXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXIKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9CiAKKyAgICAgICAgaWYgKCFNYWNyb0Fzc2VtYmxlcjo6aXNQdHJBbGlnbmVkQWRkcmVz
c09mZnNldChvZmZzZXRSZWxhdGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQo
KSkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgICAgIHJlcGF0Y2hCeUlkU2Vs
ZkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0
KCksIGFwcHJvcHJpYXRlTGlzdEJ1aWxkaW5nUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQp
LCBmYWxzZSk7CiAgICAgICAgIHN0dWJJbmZvLmluaXRQdXRCeUlkUmVwbGFjZSgqdm0sIGNvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtMTE1Myw3ICsxMTU2LDcgQEAgc3RhdGljIGJvb2wgdHJ5UmVwYXRjaEluKAogICAgICAg
ICBib29sIG5lZWRUb1Jlc3RvcmVTY3JhdGNoOwogICAgICAgICBpZiAoc2NyYXRjaEdQUiA9PSBJ
bnZhbGlkR1BSUmVnKSB7CiAgICAgICAgICAgICBzY3JhdGNoR1BSID0gQXNzZW1ibHlIZWxwZXJz
OjpzZWxlY3RTY3JhdGNoR1BSKGJhc2VHUFIsIHJlc3VsdEdQUik7Ci0gICAgICAgICAgICBzdHVi
Sml0LnB1c2goc2NyYXRjaEdQUik7CisgICAgICAgICAgICBzdHViSml0LnB1c2hUb1NhdmUoc2Ny
YXRjaEdQUik7CiAgICAgICAgICAgICBuZWVkVG9SZXN0b3JlU2NyYXRjaCA9IHRydWU7CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgbmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
ci5oCmluZGV4IDg3YTYwNTguLmExMGM1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaApAQCAtOTMsMTQgKzkzLDEyIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0gICAg
ICAgICAgICBpZiAobV9zY3JhdGNoUmVnaXN0ZXJzLmdldEZQUkJ5SW5kZXgoaSkgJiYgbV91c2Vk
UmVnaXN0ZXJzLmdldEZQUkJ5SW5kZXgoaSkpIHsKLSAgICAgICAgICAgICAgICBqaXQuc3ViUHRy
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoOCksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1Bv
aW50ZXJSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgaml0LnN0b3JlRG91YmxlKEZQUkluZm86
OnRvUmVnaXN0ZXIoaSksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobV9zY3JhdGNoUmVnaXN0ZXJzLmdldEZQUkJ5
SW5kZXgoaSkgJiYgbV91c2VkUmVnaXN0ZXJzLmdldEZQUkJ5SW5kZXgoaSkpCisgICAgICAgICAg
ICAgICAgaml0LnB1c2hUb1NhdmUoRlBSSW5mbzo6dG9SZWdpc3RlcihpKSk7CiAgICAgICAgIH0K
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdQUkluZm86Om51bWJlck9mUmVnaXN0
ZXJzOyArK2kpIHsKICAgICAgICAgICAgIGlmIChtX3NjcmF0Y2hSZWdpc3RlcnMuZ2V0R1BSQnlJ
bmRleChpKSAmJiBtX3VzZWRSZWdpc3RlcnMuZ2V0R1BSQnlJbmRleChpKSkKLSAgICAgICAgICAg
ICAgICBqaXQucHVzaChHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyAgICAgICAgICAgICAgICBq
aXQucHVzaFRvU2F2ZShHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpKTsKICAgICAgICAgfQogICAgIH0K
ICAgICAKQEAgLTExMSwxMyArMTA5LDExIEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7CiAgICAg
ICAgICAgICBpZiAobV9zY3JhdGNoUmVnaXN0ZXJzLmdldEdQUkJ5SW5kZXgoaSkgJiYgbV91c2Vk
UmVnaXN0ZXJzLmdldEdQUkJ5SW5kZXgoaSkpCi0gICAgICAgICAgICAgICAgaml0LnBvcChHUFJJ
bmZvOjp0b1JlZ2lzdGVyKGkpKTsKKyAgICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0b3JlKEdQ
UkluZm86OnRvUmVnaXN0ZXIoaSkpOwogICAgICAgICB9CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7Ci0gICAgICAgICAgICBpZiAo
bV9zY3JhdGNoUmVnaXN0ZXJzLmdldEZQUkJ5SW5kZXgoaSkgJiYgbV91c2VkUmVnaXN0ZXJzLmdl
dEZQUkJ5SW5kZXgoaSkpIHsKLSAgICAgICAgICAgICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fz
c2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEZQUkluZm86OnRvUmVnaXN0ZXIoaSkpOwot
ICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMig4
KSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChtX3NjcmF0Y2hSZWdpc3RlcnMuZ2V0RlBSQnlJbmRleChpKSAmJiBt
X3VzZWRSZWdpc3RlcnMuZ2V0RlBSQnlJbmRleChpKSkKKyAgICAgICAgICAgICAgICBqaXQucG9w
VG9SZXN0b3JlKEZQUkluZm86OnRvUmVnaXN0ZXIoaSkpOwogICAgICAgICB9CiAgICAgfQogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCmluZGV4
IDMxYjAxYmIuLjM2YmIyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VGh1bmtHZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5r
R2VuZXJhdG9ycy5jcHAKQEAgLTQwNSw2ICs0MDUsMzMgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBuYXRpdmVGb3JHZW5lcmF0b3IoVk0qIHZtLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IGsKICAgICBqaXQuYWRkUHRyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoNCAqIHNpemVv
ZihpbnQ2NF90KSArIDE2IC0gc2l6ZW9mKGludDY0X3QpKSwgSlNJbnRlcmZhY2VKSVQ6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKICNlbmRpZgogCisjZWxpZiBDUFUoQVJNNjQpCisgICAgQ09NUElM
RV9BU1NFUlQoQVJNNjRSZWdpc3RlcnM6OngzICE9IEpTSW50ZXJmYWNlSklUOjpyZWdUMSwgcHJl
dl9jYWxsZnJhbWVfbm90X3RyYW1wbGVkX2J5X1QxKTsKKyAgICBDT01QSUxFX0FTU0VSVChBUk02
NFJlZ2lzdGVyczo6eDMgIT0gSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzLCBwcmV2X2NhbGxmcmFtZV9u
b3RfdHJhbXBsZWRfYnlfVDMpOworICAgIENPTVBJTEVfQVNTRVJUKEFSTTY0UmVnaXN0ZXJzOjp4
MCAhPSBKU0ludGVyZmFjZUpJVDo6cmVnVDMsIFQzX25vdF90cmFtcGxlZF9ieV9hcmdfMCk7Cisg
ICAgQ09NUElMRV9BU1NFUlQoQVJNNjRSZWdpc3RlcnM6OngxICE9IEpTSW50ZXJmYWNlSklUOjpy
ZWdUMywgVDNfbm90X3RyYW1wbGVkX2J5X2FyZ18xKTsKKyAgICBDT01QSUxFX0FTU0VSVChBUk02
NFJlZ2lzdGVyczo6eDIgIT0gSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzLCBUM19ub3RfdHJhbXBsZWRf
YnlfYXJnXzIpOworCisgICAgLy8gTG9hZCBjYWxsZXIgZnJhbWUncyBzY29wZSBjaGFpbiBpbnRv
IHRoaXMgY2FsbGZyYW1lIHNvIHRoYXQgd2hhdGV2ZXIgd2UgY2FsbCBjYW4KKyAgICAvLyBnZXQg
dG8gaXRzIGdsb2JhbCBkYXRhLgorICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0
cihKU1N0YWNrOjpDYWxsZXJGcmFtZSwgQVJNNjRSZWdpc3RlcnM6OngzKTsKKyAgICBqaXQuZW1p
dEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6U2NvcGVDaGFpbiwgSlNJbnRlcmZh
Y2VKSVQ6OnJlZ1QxLCBBUk02NFJlZ2lzdGVyczo6eDMpOworICAgIGppdC5lbWl0UHV0Q2VsbFRv
Q2FsbEZyYW1lSGVhZGVyKEpTSW50ZXJmYWNlSklUOjpyZWdUMSwgSlNTdGFjazo6U2NvcGVDaGFp
bik7CisKKyAgICBqaXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEpTSW50ZXJmYWNl
SklUOjpyZWdUMyk7IC8vIENhbGxlZSBwcmVzZXJ2ZWQKKyAgICBqaXQuZW1pdFB1dFRvQ2FsbEZy
YW1lSGVhZGVyKEFSTTY0UmVnaXN0ZXJzOjpsciwgSlNTdGFjazo6UmV0dXJuUEMpOworCisgICAg
Ly8gQ2FsbGluZyBjb252ZW50aW9uOiAgICAgIGYoZWRpLCBlc2ksIGVkeCwgZWN4LCAuLi4pOwor
ICAgIC8vIEhvc3QgZnVuY3Rpb24gc2lnbmF0dXJlOiBmKEV4ZWNTdGF0ZSopOworICAgIGppdC5t
b3ZlKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgQVJNNjRSZWdpc3RlcnM6Ongw
KTsKKworICAgIGppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxs
ZWUsIEFSTTY0UmVnaXN0ZXJzOjp4MSk7CisgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6
OkFkZHJlc3MoQVJNNjRSZWdpc3RlcnM6OngxLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFi
bGUoKSksIEFSTTY0UmVnaXN0ZXJzOjp4Mik7CisgICAgaml0Lm1vdmUoQVJNNjRSZWdpc3RlcnM6
OngzLCBKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIpOyAvLyBFYWdlcmx5IHJlc3Rv
cmUgY2FsbGVyIGZyYW1lIHJlZ2lzdGVyIHRvIGF2b2lkIGxvYWRpbmcgZnJvbSBzdGFjay4KKyAg
ICBqaXQuY2FsbChKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhBUk02NFJlZ2lzdGVyczo6eDIsIGV4
ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uKSk7CisKKyAgICBqaXQucmVzdG9yZVJldHVybkFkZHJl
c3NCZWZvcmVSZXR1cm4oSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzKTsKKwogI2VsaWYgQ1BVKEFSTSkK
ICAgICAvLyBMb2FkIGNhbGxlciBmcmFtZSdzIHNjb3BlIGNoYWluIGludG8gdGhpcyBjYWxsZnJh
bWUgc28gdGhhdCB3aGF0ZXZlciB3ZSBjYWxsIGNhbgogICAgIC8vIGdldCB0byBpdHMgZ2xvYmFs
IGRhdGEuCkBAIC03NTUsNiArNzgyLDIzIEBAIGRvdWJsZSBqc1JvdW5kKGRvdWJsZSBkKQogICAg
ICAgICBNYXRoVGh1bmtDYWxsaW5nQ29udmVudGlvbiBmdW5jdGlvbiMjVGh1bmsoTWF0aFRodW5r
Q2FsbGluZ0NvbnZlbnRpb24pOyBcCiAgICAgfSBcCiAgICAgc3RhdGljIE1hdGhUaHVuayBVbmFy
eURvdWJsZU9wV3JhcHBlcihmdW5jdGlvbikgPSAmZnVuY3Rpb24jI1RodW5rOworCisjZWxpZiBD
UFUoQVJNNjQpCisKKyNkZWZpbmUgZGVmaW5lVW5hcnlEb3VibGVPcFdyYXBwZXIoZnVuY3Rpb24p
IFwKKyAgICBhc20oIFwKKyAgICAgICAgIi50ZXh0XG4iIFwKKyAgICAgICAgIi5hbGlnbiAyXG4i
IFwKKyAgICAgICAgIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZnVuY3Rpb24jI1RodW5rKSAiXG4i
IFwKKyAgICAgICAgSElERV9TWU1CT0woZnVuY3Rpb24jI1RodW5rKSAiXG4iIFwKKyAgICAgICAg
U1lNQk9MX1NUUklORyhmdW5jdGlvbiMjVGh1bmspICI6IiAiXG4iIFwKKyAgICAgICAgImIgIiBH
TE9CQUxfUkVGRVJFTkNFKGZ1bmN0aW9uKSAiXG4iIFwKKyAgICApOyBcCisgICAgZXh0ZXJuICJD
IiB7IFwKKyAgICAgICAgTWF0aFRodW5rQ2FsbGluZ0NvbnZlbnRpb24gZnVuY3Rpb24jI1RodW5r
KE1hdGhUaHVua0NhbGxpbmdDb252ZW50aW9uKTsgXAorICAgIH0gXAorICAgIHN0YXRpYyBNYXRo
VGh1bmsgVW5hcnlEb3VibGVPcFdyYXBwZXIoZnVuY3Rpb24pID0gJmZ1bmN0aW9uIyNUaHVuazsK
KwogI2Vsc2UKIAogI2RlZmluZSBkZWZpbmVVbmFyeURvdWJsZU9wV3JhcHBlcihmdW5jdGlvbikg
XApAQCAtNzgyLDYgKzgyNiwxNCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZmxvb3JUaHVua0dl
bmVyYXRvcihWTSogdm0pCiAgICAgaml0LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QwKTsKICAgICBub25JbnRKdW1wLmxpbmsoJmppdCk7CiAgICAgaml0LmxvYWREb3VibGVB
cmd1bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUMCk7CisjaWYgQ1BVKEFSTTY0KQorICAgIFNwZWNpYWxpemVkVGh1bmtKSVQ6Okp1
bXBMaXN0IGRvdWJsZVJlc3VsdDsKKyAgICBqaXQuZmxvb3JEb3VibGUoU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6ZnBSZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7CisgICAgaml0LmJy
YW5jaENvbnZlcnREb3VibGVUb0ludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDAsIFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBkb3VibGVSZXN1bHQsIFNwZWNpYWxpemVkVGh1bmtK
SVQ6OmZwUmVnVDEpOworICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXplZFRodW5rSklUOjpy
ZWdUMCk7CisgICAgZG91YmxlUmVzdWx0LmxpbmsoJmppdCk7CisgICAgaml0LnJldHVybkRvdWJs
ZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKKyNlbHNlCiAgICAgU3BlY2lhbGl6ZWRU
aHVua0pJVDo6SnVtcCBpbnRSZXN1bHQ7CiAgICAgU3BlY2lhbGl6ZWRUaHVua0pJVDo6SnVtcExp
c3QgZG91YmxlUmVzdWx0OwogICAgIGlmIChqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50VHJ1bmNh
dGUoKSkgewpAQCAtODAxLDYgKzg1Myw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmbG9vclRo
dW5rR2VuZXJhdG9yKFZNKiB2bSkKICAgICBqaXQucmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDApOwogICAgIGRvdWJsZVJlc3VsdC5saW5rKCZqaXQpOwogICAgIGppdC5yZXR1
cm5Eb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7CisjZW5kaWYgLy8gQ1BVKEFS
TTY0KQogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxs
KHZtKSwgImZsb29yIik7CiB9CiAKQEAgLTgxNCw3ICs4NjcsMTEgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGNlaWxUaHVua0dlbmVyYXRvcihWTSogdm0pCiAgICAgaml0LnJldHVybkludDMyKFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICBub25JbnRKdW1wLmxpbmsoJmppdCk7CiAg
ICAgaml0LmxvYWREb3VibGVBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1Qw
LCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CisjaWYgQ1BVKEFSTTY0KQorICAgIGppdC5j
ZWlsRG91YmxlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDAsIFNwZWNpYWxpemVkVGh1bmtK
SVQ6OmZwUmVnVDApOworI2Vsc2UKICAgICBqaXQuY2FsbERvdWJsZVRvRG91YmxlUHJlc2Vydmlu
Z1JldHVybihVbmFyeURvdWJsZU9wV3JhcHBlcihjZWlsKSk7CisjZW5kaWYgLy8gQ1BVKEFSTTY0
KQogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQ6Okp1bXBMaXN0IGRvdWJsZVJlc3VsdDsKICAgICBq
aXQuYnJhbmNoQ29udmVydERvdWJsZVRvSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdU
MCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIGRvdWJsZVJlc3VsdCwgU3BlY2lhbGl6ZWRU
aHVua0pJVDo6ZnBSZWdUMSk7CiAgICAgaml0LnJldHVybkludDMyKFNwZWNpYWxpemVkVGh1bmtK
SVQ6OnJlZ1QwKTsKLS0gCjEuOC4zLjQgKEFwcGxlIEdpdC00NykKCg==
</data>
<flag name="review"
          id="236668"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="236675"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214165</attachid>
            <date>2013-10-14 10:35:01 -0700</date>
            <delta_ts>2013-10-14 11:11:32 -0700</delta_ts>
            <desc>Assembler and disassembler changes</desc>
            <filename>0004-Changes-to-assembler-and-disassembler.patch</filename>
            <type>text/plain</type>
            <size>296348</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSBlYjJkMzU4ZTAwYzU1MmM5N2IxMjM2MzYzZmI2MGUyMzNkMTBjNjY0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRiYXRlc0B3ZWJraXQub3JnPgpEYXRl
OiBGcmksIDExIE9jdCAyMDEzIDE3OjMxOjA0IC0wNzAwClN1YmplY3Q6IFtQQVRDSCA0LzhdIENo
YW5nZXMgdG8gYXNzZW1ibGVyIGFuZCBkaXNhc3NlbWJsZXIKCi0tLQogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oICAgfCAzNTAxICsrKysrKysrKysrKysr
KysrKysrCiAuLi4vYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAgICAgICAgICAg
ICB8ICAxMzMgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5j
cHAgICAgIHwgICAzNyArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVm
ZmVyLmggICAgICAgfCAgICA0ICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXIuaCAgIHwgICA0MiArLQogLi4uL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0LmggfCAyNjUwICsrKysrKysrKysrKysrKwogLi4uL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmggfCAgICA0ICsKIC4uLi9kaXNh
c3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHAgICAgICAgICAgICAgIHwgMTEzMiArKysrKysr
CiAuLi4vSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuaCB8ICA2
OTIgKysrKwogLi4uL2Rpc2Fzc2VtYmxlci9BUk02NERpc2Fzc2VtYmxlci5jcHAgICAgICAgICAg
ICAgfCAgIDU3ICsKIDEwIGZpbGVzIGNoYW5nZWQsIDgyMjcgaW5zZXJ0aW9ucygrKSwgMjUgZGVs
ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BUk02NEFzc2VtYmxlci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuY3Bw
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9B
Uk02NC9BNjRET3Bjb2RlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGlzYXNzZW1ibGVyL0FSTTY0RGlzYXNzZW1ibGVyLmNwcAoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5mOTYwN2UzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCkBAIC0wLDAgKzEsMzUwMSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEFS
TUFzc2VtYmxlcl9oCisjZGVmaW5lIEFSTUFzc2VtYmxlcl9oCisKKyNpZiBFTkFCTEUoQVNTRU1C
TEVSKSAmJiBDUFUoQVJNNjQpCisKKyNpbmNsdWRlICJBc3NlbWJsZXJCdWZmZXIuaCIKKyNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRl
IDxzdGRpbnQuaD4KKworI2RlZmluZSBDSEVDS19EQVRBU0laRV9PRihkYXRhc2l6ZSkgQVNTRVJU
KGRhdGFzaXplID09IDMyIHx8IGRhdGFzaXplID09IDY0KQorI2RlZmluZSBEQVRBU0laRV9PRihk
YXRhc2l6ZSkgKChkYXRhc2l6ZSA9PSA2NCkgPyBEYXRhc2l6ZV82NCA6IERhdGFzaXplXzMyKQor
I2RlZmluZSBNRU1PUFNJWkVfT0YoZGF0YXNpemUpICgoZGF0YXNpemUgPT0gOCB8fCBkYXRhc2l6
ZSA9PSAxMjgpID8gTWVtT3BTaXplXzhfb3JfMTI4IDogKGRhdGFzaXplID09IDE2KSA/IE1lbU9w
U2l6ZV8xNiA6IChkYXRhc2l6ZSA9PSAzMikgPyBNZW1PcFNpemVfMzIgOiBNZW1PcFNpemVfNjQp
CisjZGVmaW5lIENIRUNLX0RBVEFTSVpFKCkgQ0hFQ0tfREFUQVNJWkVfT0YoZGF0YXNpemUpCisj
ZGVmaW5lIERBVEFTSVpFIERBVEFTSVpFX09GKGRhdGFzaXplKQorI2RlZmluZSBNRU1PUFNJWkUg
TUVNT1BTSVpFX09GKGRhdGFzaXplKQorI2RlZmluZSBDSEVDS19GUF9NRU1PUF9EQVRBU0laRSgp
IEFTU0VSVChkYXRhc2l6ZSA9PSA4IHx8IGRhdGFzaXplID09IDE2IHx8IGRhdGFzaXplID09IDMy
IHx8IGRhdGFzaXplID09IDY0IHx8IGRhdGFzaXplID09IDEyOCkKKworbmFtZXNwYWNlIEpTQyB7
CisKK0FMV0FZU19JTkxJTkUgYm9vbCBpc0ludDkoaW50MzJfdCB2YWx1ZSkKK3sKKyAgICByZXR1
cm4gdmFsdWUgPT0gKCh2YWx1ZSA8PCAyMykgPj4gMjMpOworfQorCitBTFdBWVNfSU5MSU5FIGJv
b2wgaXNVSW50NShpbnQzMl90IHZhbHVlKQoreworICAgIHJldHVybiAhKHZhbHVlICYgfjB4MWYp
OworfQorCitBTFdBWVNfSU5MSU5FIGJvb2wgaXNVSW50MTIoaW50MzJfdCB2YWx1ZSkKK3sKKyAg
ICByZXR1cm4gISh2YWx1ZSAmIH4weGZmZik7Cit9CisKK0FMV0FZU19JTkxJTkUgYm9vbCBpc1VJ
bnQxMihpbnRwdHJfdCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISh2YWx1ZSAmIH4weGZmZkwpOwor
fQorCitjbGFzcyBVSW50NSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgVUludDUoaW50IHZhbHVl
KQorICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQoaXNVSW50
NSh2YWx1ZSkpOworICAgIH0KKworICAgIG9wZXJhdG9yIGludCgpIHsgcmV0dXJuIG1fdmFsdWU7
IH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV92YWx1ZTsKK307CisKK2NsYXNzIFVJbnQxMiB7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgVUludDEyKGludCB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVl
KHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzVUludDEyKHZhbHVlKSk7CisgICAgfQor
CisgICAgb3BlcmF0b3IgaW50KCkgeyByZXR1cm4gbV92YWx1ZTsgfQorCitwcml2YXRlOgorICAg
IGludCBtX3ZhbHVlOworfTsKKworY2xhc3MgUG9zdEluZGV4IHsKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBQb3N0SW5kZXgoaW50IHZhbHVlKQorICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAg
eworICAgICAgICBBU1NFUlQoaXNJbnQ5KHZhbHVlKSk7CisgICAgfQorCisgICAgb3BlcmF0b3Ig
aW50KCkgeyByZXR1cm4gbV92YWx1ZTsgfQorCitwcml2YXRlOgorICAgIGludCBtX3ZhbHVlOwor
fTsKKworY2xhc3MgUHJlSW5kZXggeworcHVibGljOgorICAgIGV4cGxpY2l0IFByZUluZGV4KGlu
dCB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGlzSW50OSh2YWx1ZSkpOworICAgIH0KKworICAgIG9wZXJhdG9yIGludCgpIHsgcmV0dXJuIG1f
dmFsdWU7IH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV92YWx1ZTsKK307CisKK2NsYXNzIExvZ2lj
YWxJbW1lZGlhdGUgeworcHVibGljOgorICAgIHN0YXRpYyBMb2dpY2FsSW1tZWRpYXRlIGNyZWF0
ZTMyKHVpbnQzMl90IHZhbHVlKQorICAgIHsKKyAgICAgICAgLy8gQ2hlY2sgZm9yIDAsIC0xIC0g
dGhlc2UgY2Fubm90IGJlIGVuY29kZWQuCisgICAgICAgIGlmICghdmFsdWUgfHwgIX52YWx1ZSkK
KyAgICAgICAgICAgIHJldHVybiBJbnZhbGlkTG9naWNhbEltbWVkaWF0ZTsKKworICAgICAgICAv
LyBGaXJzdCBsb29rIGZvciBhIDMyLWJpdCBwYXR0ZXJuLCB0aGVuIGZvciByZXBlYXRpbmcgMTYt
Yml0CisgICAgICAgIC8vIHBhdHRlcm5zLCA4LWJpdCwgNC1iaXQsIGFuZCBmaW5hbGx5IDItYml0
LgorCisgICAgICAgIHVuc2lnbmVkIGhzYiwgbHNiOworICAgICAgICBib29sIGludmVydGVkOwor
ICAgICAgICBpZiAoZmluZEJpdFJhbmdlPDMyPih2YWx1ZSwgaHNiLCBsc2IsIGludmVydGVkKSkK
KyAgICAgICAgICAgIHJldHVybiBlbmNvZGVMb2dpY2FsSW1tZWRpYXRlPDMyPihoc2IsIGxzYiwg
aW52ZXJ0ZWQpOworCisgICAgICAgIGlmICgodmFsdWUgJiAweGZmZmYpICE9ICh2YWx1ZSA+PiAx
NikpCisgICAgICAgICAgICByZXR1cm4gSW52YWxpZExvZ2ljYWxJbW1lZGlhdGU7CisgICAgICAg
IHZhbHVlICY9IDB4ZmZmZjsKKworICAgICAgICBpZiAoZmluZEJpdFJhbmdlPDE2Pih2YWx1ZSwg
aHNiLCBsc2IsIGludmVydGVkKSkKKyAgICAgICAgICAgIHJldHVybiBlbmNvZGVMb2dpY2FsSW1t
ZWRpYXRlPDE2Pihoc2IsIGxzYiwgaW52ZXJ0ZWQpOworCisgICAgICAgIGlmICgodmFsdWUgJiAw
eGZmKSAhPSAodmFsdWUgPj4gOCkpCisgICAgICAgICAgICByZXR1cm4gSW52YWxpZExvZ2ljYWxJ
bW1lZGlhdGU7CisgICAgICAgIHZhbHVlICY9IDB4ZmY7CisKKyAgICAgICAgaWYgKGZpbmRCaXRS
YW5nZTw4Pih2YWx1ZSwgaHNiLCBsc2IsIGludmVydGVkKSkKKyAgICAgICAgICAgIHJldHVybiBl
bmNvZGVMb2dpY2FsSW1tZWRpYXRlPDg+KGhzYiwgbHNiLCBpbnZlcnRlZCk7CisKKyAgICAgICAg
aWYgKCh2YWx1ZSAmIDB4ZikgIT0gKHZhbHVlID4+IDQpKQorICAgICAgICAgICAgcmV0dXJuIElu
dmFsaWRMb2dpY2FsSW1tZWRpYXRlOworICAgICAgICB2YWx1ZSAmPSAweGY7CisKKyAgICAgICAg
aWYgKGZpbmRCaXRSYW5nZTw0Pih2YWx1ZSwgaHNiLCBsc2IsIGludmVydGVkKSkKKyAgICAgICAg
ICAgIHJldHVybiBlbmNvZGVMb2dpY2FsSW1tZWRpYXRlPDQ+KGhzYiwgbHNiLCBpbnZlcnRlZCk7
CisKKyAgICAgICAgaWYgKCh2YWx1ZSAmIDB4MykgIT0gKHZhbHVlID4+IDIpKQorICAgICAgICAg
ICAgcmV0dXJuIEludmFsaWRMb2dpY2FsSW1tZWRpYXRlOworICAgICAgICB2YWx1ZSAmPSAweDM7
CisKKyAgICAgICAgaWYgKGZpbmRCaXRSYW5nZTwyPih2YWx1ZSwgaHNiLCBsc2IsIGludmVydGVk
KSkKKyAgICAgICAgICAgIHJldHVybiBlbmNvZGVMb2dpY2FsSW1tZWRpYXRlPDI+KGhzYiwgbHNi
LCBpbnZlcnRlZCk7CisKKyAgICAgICAgcmV0dXJuIEludmFsaWRMb2dpY2FsSW1tZWRpYXRlOwor
ICAgIH0KKworICAgIHN0YXRpYyBMb2dpY2FsSW1tZWRpYXRlIGNyZWF0ZTY0KHVpbnQ2NF90IHZh
bHVlKQorICAgIHsKKyAgICAgICAgLy8gQ2hlY2sgZm9yIDAsIC0xIC0gdGhlc2UgY2Fubm90IGJl
IGVuY29kZWQuCisgICAgICAgIGlmICghdmFsdWUgfHwgIX52YWx1ZSkKKyAgICAgICAgICAgIHJl
dHVybiBJbnZhbGlkTG9naWNhbEltbWVkaWF0ZTsKKworICAgICAgICAvLyBMb29rIGZvciBhIGNv
bnRpZ3VvdXMgYml0IHJhbmdlLgorICAgICAgICB1bnNpZ25lZCBoc2IsIGxzYjsKKyAgICAgICAg
Ym9vbCBpbnZlcnRlZDsKKyAgICAgICAgaWYgKGZpbmRCaXRSYW5nZTw2ND4odmFsdWUsIGhzYiwg
bHNiLCBpbnZlcnRlZCkpCisgICAgICAgICAgICByZXR1cm4gZW5jb2RlTG9naWNhbEltbWVkaWF0
ZTw2ND4oaHNiLCBsc2IsIGludmVydGVkKTsKKworICAgICAgICAvLyBJZiB0aGUgaGlnaCAmIGxv
dyAzMiBiaXRzIGFyZSBlcXVhbCwgd2UgY2FuIHRyeSBmb3IgYSAzMi1iaXQgKG9yIG5hcnJvd2Vy
KSBwYXR0ZXJuLgorICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlKSA9PSBz
dGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUgPj4gMzIpKQorICAgICAgICAgICAgcmV0dXJuIGNy
ZWF0ZTMyKHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSkpOworICAgICAgICByZXR1cm4gSW52
YWxpZExvZ2ljYWxJbW1lZGlhdGU7CisgICAgfQorCisgICAgaW50IHZhbHVlKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVChpc1ZhbGlkKCkpOworICAgICAgICByZXR1cm4gbV92YWx1ZTsK
KyAgICB9CisKKyAgICBib29sIGlzVmFsaWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fdmFsdWUgIT0gSW52YWxpZExvZ2ljYWxJbW1lZGlhdGU7CisgICAgfQorCisgICAgYm9vbCBp
czY0Yml0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3ZhbHVlICYgKDEgPDwgMTIp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBMb2dpY2FsSW1tZWRpYXRlKGludCB2YWx1ZSkKKyAg
ICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICB9CisKKyAgICAvLyBHZW5lcmF0ZSBh
IG1hc2sgd2l0aCBiaXRzIGluIHRoZSByYW5nZSBoc2IuLjAgc2V0LCBmb3IgZXhhbXBsZToKKyAg
ICAvLyAgIGhzYjo2MyA9IDB4ZmZmZmZmZmZmZmZmZmZmZgorICAgIC8vICAgaHNiOjQyID0gMHgw
MDAwMDdmZmZmZmZmZmZmCisgICAgLy8gICBoc2I6IDAgPSAweDAwMDAwMDAwMDAwMDAwMDEKKyAg
ICBzdGF0aWMgdWludDY0X3QgbWFzayh1bnNpZ25lZCBoc2IpCisgICAgeworICAgICAgICBBU1NF
UlQoaHNiIDwgNjQpOworICAgICAgICByZXR1cm4gMHhmZmZmZmZmZmZmZmZmZmZmdWxsID4+ICg2
MyAtIGhzYik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dW5zaWduZWQgTj4KKyAgICBzdGF0aWMg
dm9pZCBwYXJ0aWFsSFNCKHVpbnQ2NF90JiB2YWx1ZSwgdW5zaWduZWQmcmVzdWx0KQorICAgIHsK
KyAgICAgICAgaWYgKHZhbHVlICYgKDB4ZmZmZmZmZmZmZmZmZmZmZnVsbCA8PCBOKSkgeworICAg
ICAgICAgICAgcmVzdWx0ICs9IE47CisgICAgICAgICAgICB2YWx1ZSA+Pj0gTjsKKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIEZpbmQgdGhlIGJpdCBudW1iZXIgb2YgdGhlIGhpZ2hlc3QgYml0
IHNldCBpbiBhIG5vbi16ZXJvIHZhbHVlLCBmb3IgZXhhbXBsZToKKyAgICAvLyAgIDB4ODA4MDgw
ODA4MDgwODA4MCA9IGhzYjo2MworICAgIC8vICAgMHgwMDAwMDAwMDAwMDAwMDAxID0gaHNiOiAw
CisgICAgLy8gICAweDAwMDAwN2ZmZmZlMDAwMDAgPSBoc2I6NDIKKyAgICBzdGF0aWMgdW5zaWdu
ZWQgaGlnaGVzdFNldEJpdCh1aW50NjRfdCB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh2
YWx1ZSk7CisgICAgICAgIHVuc2lnbmVkIGhzYiA9IDA7CisgICAgICAgIHBhcnRpYWxIU0I8MzI+
KHZhbHVlLCBoc2IpOworICAgICAgICBwYXJ0aWFsSFNCPDE2Pih2YWx1ZSwgaHNiKTsKKyAgICAg
ICAgcGFydGlhbEhTQjw4Pih2YWx1ZSwgaHNiKTsKKyAgICAgICAgcGFydGlhbEhTQjw0Pih2YWx1
ZSwgaHNiKTsKKyAgICAgICAgcGFydGlhbEhTQjwyPih2YWx1ZSwgaHNiKTsKKyAgICAgICAgcGFy
dGlhbEhTQjwxPih2YWx1ZSwgaHNiKTsKKyAgICAgICAgcmV0dXJuIGhzYjsKKyAgICB9CisKKyAg
ICAvLyBUaGlzIGZ1bmN0aW9uIHRha2VzIGEgdmFsdWUgYW5kIGEgYml0IHdpZHRoLCB3aGVyZSB2
YWx1ZSBvYmV5cyB0aGUgZm9sbG93aW5nIGNvbnN0cmFpbnRzOgorICAgIC8vICAgKiBiaXRzIG91
dHNpZGUgb2YgdGhlIHdpZHRoIG9mIHRoZSB2YWx1ZSBtdXN0IGJlIHplcm8uCisgICAgLy8gICAq
IGJpdHMgd2l0aGluIHRoZSB3aWR0aCBvZiB2YWx1ZSBtdXN0IG5laXRoZXIgYmUgYWxsIGNsZWFy
IG9yIGFsbCBzZXQuCisgICAgLy8gVGhlIGlucHV0IGlzIGluc3BlY3RlZCB0byBkZXRlY3QgdmFs
dWVzIHRoYXQgY29uc2lzdCBvZiBlaXRoZXIgdHdvIG9yIHRocmVlIGNvbnRpZ3VvdXMKKyAgICAv
LyByYW5nZXMgb2YgYml0cy4gVGhlIG91dHB1dCByYW5nZSBoc2IuLmxzYiB3aWxsIGRlc2NyaWJl
IHRoZSBzZWNvbmQgcmFuZ2Ugb2YgdGhlIHZhbHVlLgorICAgIC8vIGlmIHRoZSByYW5nZSBpcyBz
ZXQsIGludmVydGVkIHdpbGwgYmUgZmFsc2UsIGFuZCBpZiB0aGUgcmFuZ2UgaXMgY2xlYXIsIGlu
dmVydGVkIHdpbGwKKyAgICAvLyBiZSB0cnVlLiBGb3IgZXhhbXBsZSAod2l0aCB3aWR0aCA4KToK
KyAgICAvLyAgIDAwMDAxMTExID0gaHNiOjMsIGxzYjowLCBpbnZlcnRlZDpmYWxzZQorICAgIC8v
ICAgMTExMTAwMDAgPSBoc2I6MywgbHNiOjAsIGludmVydGVkOnRydWUKKyAgICAvLyAgIDAwMTEx
MTAwID0gaHNiOjUsIGxzYjoyLCBpbnZlcnRlZDpmYWxzZQorICAgIC8vICAgMTEwMDAwMTEgPSBo
c2I6NSwgbHNiOjIsIGludmVydGVkOnRydWUKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCB3aWR0aD4K
KyAgICBzdGF0aWMgYm9vbCBmaW5kQml0UmFuZ2UodWludDY0X3QgdmFsdWUsIHVuc2lnbmVkJiBo
c2IsIHVuc2lnbmVkJiBsc2IsIGJvb2wmIGludmVydGVkKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KHZhbHVlICYgbWFzayh3aWR0aCAtIDEpKTsKKyAgICAgICAgQVNTRVJUKHZhbHVlICE9IG1hc2so
d2lkdGggLSAxKSk7CisgICAgICAgIEFTU0VSVCghKHZhbHVlICYgfm1hc2sod2lkdGggLSAxKSkp
OworCisgICAgICAgIC8vIERldGVjdCBjYXNlcyB3aGVyZSB0aGUgdG9wIGJpdCBpcyBzZXQ7IGlm
IHNvLCBmbGlwIGFsbCB0aGUgYml0cyAmIHNldCBpbnZlcnQuCisgICAgICAgIC8vIFRoaXMgaGFs
dmVzIHRoZSBudW1iZXIgb2YgcGF0dGVybnMgd2UgbmVlZCB0byBsb29rIGZvci4KKyAgICAgICAg
Y29uc3QgdWludDY0X3QgbXNiID0gMXVsbCA8PCAod2lkdGggLSAxKTsKKyAgICAgICAgaWYgKChp
bnZlcnRlZCA9ICh2YWx1ZSAmIG1zYikpKQorICAgICAgICAgICAgdmFsdWUgXj0gbWFzayh3aWR0
aCAtIDEpOworCisgICAgICAgIC8vIEZpbmQgdGhlIGhpZ2hlc3Qgc2V0IGJpdCBpbiB2YWx1ZSwg
Z2VuZXJhdGUgYSBjb3JyZXNwb25kaW5nIG1hc2sgJiBmbGlwIGFsbAorICAgICAgICAvLyBiaXRz
IHVuZGVyIGl0LgorICAgICAgICBoc2IgPSBoaWdoZXN0U2V0Qml0KHZhbHVlKTsKKyAgICAgICAg
dmFsdWUgXj0gbWFzayhoc2IpOworICAgICAgICBpZiAoIXZhbHVlKSB7CisgICAgICAgICAgICAv
LyBJZiB0aGlzIGNsZWFyZWQgdGhlIHZhbHVlLCB0aGVuIHRoZSByYW5nZSBoc2IuLjAgd2FzIGFs
bCBzZXQuCisgICAgICAgICAgICBsc2IgPSAwOworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBUcnkgbWFraW5nIG9uZSBtb3JlIG1hc2ssIGFuZCBmbGlw
cGluZyB0aGUgYml0cyEKKyAgICAgICAgbHNiID0gaGlnaGVzdFNldEJpdCh2YWx1ZSk7CisgICAg
ICAgIHZhbHVlIF49IG1hc2sobHNiKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgeworICAgICAgICAg
ICAgLy8gU3VjY2VzcyAtIGJ1dCBsc2IgYWN0dWFsbHkgcG9pbnRzIHRvIHRoZSBoc2Igb2YgYSB0
aGlyZCByYW5nZSAtIGFkZCBvbmUKKyAgICAgICAgICAgIC8vIHRvIGdldCB0byB0aGUgbHNiIG9m
IHRoZSBtaWQgcmFuZ2UuCisgICAgICAgICAgICArK2xzYjsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8v
IEVuY29kZXMgdGhlIHNldCBvZiBpbW1OOmltbXI6aW1tcyBmaWVsZHMgZm91bmQgaW4gYSBsb2dp
Y2FsIGltbWVkaWF0ZS4KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCB3aWR0aD4KKyAgICBzdGF0aWMg
aW50IGVuY29kZUxvZ2ljYWxJbW1lZGlhdGUodW5zaWduZWQgaHNiLCB1bnNpZ25lZCBsc2IsIGJv
b2wgaW52ZXJ0ZWQpCisgICAgeworICAgICAgICAvLyBDaGVjayB3aWR0aCBpcyBhIHBvd2VyIG9m
IDIhCisgICAgICAgIEFTU0VSVCghKHdpZHRoICYgKHdpZHRoIC0xKSkpOworICAgICAgICBBU1NF
UlQod2lkdGggPD0gNjQgJiYgd2lkdGggPj0gMik7CisgICAgICAgIEFTU0VSVChoc2IgPj0gbHNi
KTsKKyAgICAgICAgQVNTRVJUKGhzYiA8IHdpZHRoKTsKKworICAgICAgICBpbnQgaW1tTiA9IDA7
CisgICAgICAgIGludCBpbW1zID0gMDsKKyAgICAgICAgaW50IGltbXIgPSAwOworCisgICAgICAg
IC8vIEZvciA2NC1iaXQgdmFsdWVzIHRoaXMgaXMgZWFzeSAtIGp1c3Qgc2V0IGltbU4gdG8gdHJ1
ZSwgYW5kIGltbXMganVzdAorICAgICAgICAvLyBjb250YWlucyB0aGUgYml0IG51bWJlciBvZiB0
aGUgaGlnaGVzdCBzZXQgYml0IG9mIHRoZSBzZXQgcmFuZ2UuIEZvcgorICAgICAgICAvLyB2YWx1
ZXMgd2l0aCBuYXJyb3dlciB3aWR0aHMsIHRoZXNlIGFyZSBlbmNvZGVkIGJ5IGEgbGVhZGluZyBz
ZXQgb2YKKyAgICAgICAgLy8gb25lIGJpdHMsIGZvbGxvd2VkIGJ5IGEgemVybyBiaXQsIGZvbGxv
d2VkIGJ5IHRoZSByZW1haW5pbmcgc2V0IG9mIGJpdHMKKyAgICAgICAgLy8gYmVpbmcgdGhlIGhp
Z2ggYml0IG9mIHRoZSByYW5nZS4gRm9yIGEgMzItYml0IGltbWVkaWF0ZSB0aGVyZSBhcmUgbm8K
KyAgICAgICAgLy8gbGVhZGluZyBvbmUgYml0cywganVzdCBhIHplcm8gZm9sbG93ZWQgYnkgYSBm
aXZlIGJpdCBudW1iZXIuIEZvciBhCisgICAgICAgIC8vIDE2LWJpdCBpbW1lZGlhdGUgdGhlcmUg
aXMgb25lIG9uZSBiaXQsIGEgemVybyBiaXQsIGFuZCB0aGVuIGEgZm91ciBiaXQKKyAgICAgICAg
Ly8gYml0LXBvc2l0aW9uLCBldGMuCisgICAgICAgIGlmICh3aWR0aCA9PSA2NCkKKyAgICAgICAg
ICAgIGltbU4gPSAxOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbW1zID0gNjMgJiB+KHdp
ZHRoICsgd2lkdGggLSAxKTsKKworICAgICAgICBpZiAoaW52ZXJ0ZWQpIHsKKyAgICAgICAgICAg
IC8vIGlmIHdpZHRoIGlzIDY0ICYgaHNiIGlzIDYyLCB0aGVuIHdlIGhhdmUgYSB2YWx1ZSBzb21l
dGhpbmcgbGlrZToKKyAgICAgICAgICAgIC8vICAgMHg4MDAwMDAwMGZmZmZmZmZmIChpbiB0aGlz
IGNhc2Ugd2l0aCBsc2IgMzIpLgorICAgICAgICAgICAgLy8gVGhlIHJvciBzaG91bGQgYmUgYnkg
MSwgaW1tcyAoZWZmZWN0aXZlbHkgc2V0IHdpZHRoIG1pbnVzIDEpIGlzCisgICAgICAgICAgICAv
LyAzMi4gU2V0IHdpZHRoIGlzIGZ1bGwgd2lkdGggbWludXMgY2xlYXJlZCB3aWR0aC4KKyAgICAg
ICAgICAgIGltbXIgPSAod2lkdGggLSAxKSAtIGhzYjsKKyAgICAgICAgICAgIGltbXMgfD0gKHdp
ZHRoIC0gKChoc2IgLSBsc2IpICsgMSkpIC0gMTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIC8vIGlmIHdpZHRoIGlzIDY0ICYgaHNiIGlzIDYyLCB0aGVuIHdlIGhhdmUgYSB2YWx1ZSBz
b21ldGhpbmcgbGlrZToKKyAgICAgICAgICAgIC8vICAgMHg3ZmZmZmZmZjAwMDAwMDAwIChpbiB0
aGlzIGNhc2Ugd2l0aCBsc2IgMzIpLgorICAgICAgICAgICAgLy8gVGhlIHZhbHVlIGlzIGVmZmVj
dGl2ZWx5IHJvbCdlZCBieSBsc2IsIHdoaWNoIGlzIGVxdWl2YWxlbnQgdG8KKyAgICAgICAgICAg
IC8vIGEgcm9yIGJ5IHdpZHRoIC0gbHNiIChvciAwLCBpbiB0aGUgY2FzZSB3aGVyZSBsc2IgaXMg
MCkuIGltbXMKKyAgICAgICAgICAgIC8vIGlzIGhzYiAtIGxzYi4KKyAgICAgICAgICAgIGltbXIg
PSAod2lkdGggLSBsc2IpICYgKHdpZHRoIC0gMSk7CisgICAgICAgICAgICBpbW1zIHw9IGhzYiAt
IGxzYjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBpbW1OIDw8IDEyIHwgaW1tciA8PCA2
IHwgaW1tczsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgaW50IEludmFsaWRMb2dpY2FsSW1t
ZWRpYXRlID0gLTE7CisKKyAgICBpbnQgbV92YWx1ZTsKK307CisKK2lubGluZSB1aW50MTZfdCBn
ZXRIYWxmd29yZCh1aW50NjRfdCB2YWx1ZSwgaW50IHdoaWNoKQoreworICAgIHJldHVybiB2YWx1
ZSA+PiAod2hpY2ggPDwgNCk7Cit9CisKK25hbWVzcGFjZSBBUk02NFJlZ2lzdGVycyB7CisgICAg
dHlwZWRlZiBlbnVtIHsKKyAgICAgICAgLy8g77+8UGFyYW1ldGVyL3Jlc3VsdCByZWdpc3RlcnMK
KyAgICAgICAgeDAsCisgICAgICAgIHgxLAorICAgICAgICB4MiwKKyAgICAgICAgeDMsCisgICAg
ICAgIHg0LAorICAgICAgICB4NSwKKyAgICAgICAgeDYsCisgICAgICAgIHg3LAorICAgICAgICAv
LyBJbmRpcmVjdCByZXN1bHQgbG9jYXRpb24gcmVnaXN0ZXIKKyAgICAgICAgeDgsCisgICAgICAg
IC8vIFRlbXBvcmFyeSByZWdpc3RlcnMKKyAgICAgICAgeDksCisgICAgICAgIHgxMCwKKyAgICAg
ICAgeDExLAorICAgICAgICB4MTIsCisgICAgICAgIHgxMywKKyAgICAgICAgeDE0LAorICAgICAg
ICB4MTUsCisgICAgICAgIC8vIEludHJhLXByb2NlZHVyZS1jYWxsIHNjcmF0Y2ggcmVnaXN0ZXJz
ICh0ZW1wb3JhcnkpCisgICAgICAgIHgxNiwgaXAwID0geDE2LAorICAgICAgICB4MTcsIGlwMSA9
IHgxNywKKyAgICAgICAgLy8gUGxhdGZvcm0gUmVnaXN0ZXIgKHRlbXBvcmFyeSkKKyAgICAgICAg
eDE4LAorICAgICAgICAvLyBDYWxsZWUtc2F2ZWQKKyAgICAgICAgeDE5LAorICAgICAgICB4MjAs
CisgICAgICAgIHgyMSwKKyAgICAgICAgeDIyLAorICAgICAgICB4MjMsCisgICAgICAgIHgyNCwK
KyAgICAgICAgeDI1LAorICAgICAgICB4MjYsCisgICAgICAgIHgyNywKKyAgICAgICAgeDI4LAor
ICAgICAgICAvLyBTcGVjaWFsCisgICAgICAgIHgyOSwgZnAgPSB4MjksCisgICAgICAgIHgzMCwg
bHIgPSB4MzAsCisgICAgICAgIHNwLAorICAgICAgICB6ciA9IDB4M2YsCisgICAgfSBSZWdpc3Rl
cklEOworCisgICAgdHlwZWRlZiBlbnVtIHsKKyAgICAgICAgLy8gUGFyYW1ldGVyL3Jlc3VsdCBy
ZWdpc3RlcnMKKyAgICAgICAgcTAsCisgICAgICAgIHExLAorICAgICAgICBxMiwKKyAgICAgICAg
cTMsCisgICAgICAgIHE0LAorICAgICAgICBxNSwKKyAgICAgICAgcTYsCisgICAgICAgIHE3LAor
ICAgICAgICAvLyBDYWxsZWUtc2F2ZWQgKHVwIHRvIDY0LWJpdHMgb25seSEpCisgICAgICAgIHE4
LAorICAgICAgICBxOSwKKyAgICAgICAgcTEwLAorICAgICAgICBxMTEsCisgICAgICAgIHExMiwK
KyAgICAgICAgcTEzLAorICAgICAgICBxMTQsCisgICAgICAgIHExNSwKKyAgICAgICAgLy8gVGVt
cG9yYXJ5IHJlZ2lzdGVycworICAgICAgICBxMTYsCisgICAgICAgIHExNywKKyAgICAgICAgcTE4
LAorICAgICAgICBxMTksCisgICAgICAgIHEyMCwKKyAgICAgICAgcTIxLAorICAgICAgICBxMjIs
CisgICAgICAgIHEyMywKKyAgICAgICAgcTI0LAorICAgICAgICBxMjUsCisgICAgICAgIHEyNiwK
KyAgICAgICAgcTI3LAorICAgICAgICBxMjgsCisgICAgICAgIHEyOSwKKyAgICAgICAgcTMwLAor
ICAgICAgICBxMzEsCisgICAgfSBGUFJlZ2lzdGVySUQ7CisKKyAgICBzdGF0aWMgYm9vbCBpc1Nw
KFJlZ2lzdGVySUQgcmVnKSB7IHJldHVybiByZWcgPT0gc3A7IH0KKyAgICBzdGF0aWMgYm9vbCBp
c1pyKFJlZ2lzdGVySUQgcmVnKSB7IHJldHVybiByZWcgPT0genI7IH0KK30KKworY2xhc3MgQVJN
NjRBc3NlbWJsZXIgeworcHVibGljOgorICAgIHR5cGVkZWYgQVJNNjRSZWdpc3RlcnM6OlJlZ2lz
dGVySUQgUmVnaXN0ZXJJRDsKKyAgICB0eXBlZGVmIEFSTTY0UmVnaXN0ZXJzOjpGUFJlZ2lzdGVy
SUQgRlBSZWdpc3RlcklEOworCitwcml2YXRlOgorICAgIHN0YXRpYyBib29sIGlzU3AoUmVnaXN0
ZXJJRCByZWcpIHsgcmV0dXJuIEFSTTY0UmVnaXN0ZXJzOjppc1NwKHJlZyk7IH0KKyAgICBzdGF0
aWMgYm9vbCBpc1pyKFJlZ2lzdGVySUQgcmVnKSB7IHJldHVybiBBUk02NFJlZ2lzdGVyczo6aXNa
cihyZWcpOyB9CisKK3B1YmxpYzoKKyAgICBBUk02NEFzc2VtYmxlcigpCisgICAgICAgIDogbV9p
bmRleE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKKyAgICAgICAgLCBtX2luZGV4T2ZUYWlsT2ZM
YXN0V2F0Y2hwb2ludChJTlRfTUlOKQorICAgIHsKKyAgICB9CisKKyAgICAvLyAoSFMsIExPLCBI
SSwgTFMpIC0+IChBRSwgQiwgQSwgQkUpCisgICAgLy8gKFZTLCBWQykgLT4gKE8sIE5PKQorICAg
IHR5cGVkZWYgZW51bSB7CisgICAgICAgIENvbmRpdGlvbkVRLAorICAgICAgICBDb25kaXRpb25O
RSwKKyAgICAgICAgQ29uZGl0aW9uSFMsIENvbmRpdGlvbkNTID0gQ29uZGl0aW9uSFMsCisgICAg
ICAgIENvbmRpdGlvbkxPLCBDb25kaXRpb25DQyA9IENvbmRpdGlvbkxPLAorICAgICAgICBDb25k
aXRpb25NSSwKKyAgICAgICAgQ29uZGl0aW9uUEwsCisgICAgICAgIENvbmRpdGlvblZTLAorICAg
ICAgICBDb25kaXRpb25WQywKKyAgICAgICAgQ29uZGl0aW9uSEksCisgICAgICAgIENvbmRpdGlv
bkxTLAorICAgICAgICBDb25kaXRpb25HRSwKKyAgICAgICAgQ29uZGl0aW9uTFQsCisgICAgICAg
IENvbmRpdGlvbkdULAorICAgICAgICBDb25kaXRpb25MRSwKKyAgICAgICAgQ29uZGl0aW9uQUws
CisgICAgICAgIENvbmRpdGlvbkludmFsaWQKKyAgICB9IENvbmRpdGlvbjsKKworICAgIHN0YXRp
YyBDb25kaXRpb24gaW52ZXJ0KENvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PENvbmRpdGlvbj4oY29uZCBeIDEpOworICAgIH0KKworICAgIHR5cGVkZWYg
ZW51bSB7CisgICAgICAgIExTTCwKKyAgICAgICAgTFNSLAorICAgICAgICBBU1IsCisgICAgICAg
IFJPUgorICAgIH0gU2hpZnRUeXBlOworCisgICAgdHlwZWRlZiBlbnVtIHsKKyAgICAgICAgVVhU
QiwKKyAgICAgICAgVVhUSCwKKyAgICAgICAgVVhUVywKKyAgICAgICAgVVhUWCwKKyAgICAgICAg
U1hUQiwKKyAgICAgICAgU1hUSCwKKyAgICAgICAgU1hUVywKKyAgICAgICAgU1hUWAorICAgIH0g
RXh0ZW5kVHlwZTsKKworICAgIGVudW0gU2V0RmxhZ3MgeworICAgICAgICBEb250U2V0RmxhZ3Ms
CisgICAgICAgIFMKKyAgICB9OworCisjZGVmaW5lIEpVTVBfRU5VTV9XSVRIX1NJWkUoaW5kZXgs
IHZhbHVlKSAoKCh2YWx1ZSkgPDwgNCkgfCAoaW5kZXgpKQorI2RlZmluZSBKVU1QX0VOVU1fU0la
RShqdW1wKSAoKGp1bXApID4+IDQpCisgICAgZW51bSBKdW1wVHlwZSB7IEp1bXBGaXhlZCA9IEpV
TVBfRU5VTV9XSVRIX1NJWkUoMCwgMCksCisgICAgICAgIEp1bXBOb0NvbmRpdGlvbiA9IEpVTVBf
RU5VTV9XSVRIX1NJWkUoMSwgMSAqIHNpemVvZih1aW50MzJfdCkpLAorICAgICAgICBKdW1wQ29u
ZGl0aW9uID0gSlVNUF9FTlVNX1dJVEhfU0laRSgyLCAyICogc2l6ZW9mKHVpbnQzMl90KSksCisg
ICAgICAgIEp1bXBDb21wYXJlQW5kQnJhbmNoID0gSlVNUF9FTlVNX1dJVEhfU0laRSgzLCAyICog
c2l6ZW9mKHVpbnQzMl90KSksCisgICAgICAgIEp1bXBUZXN0Qml0ID0gSlVNUF9FTlVNX1dJVEhf
U0laRSg0LCAyICogc2l6ZW9mKHVpbnQzMl90KSksCisgICAgICAgIEp1bXBOb0NvbmRpdGlvbkZp
eGVkU2l6ZSA9IEpVTVBfRU5VTV9XSVRIX1NJWkUoNSwgMSAqIHNpemVvZih1aW50MzJfdCkpLAor
ICAgICAgICBKdW1wQ29uZGl0aW9uRml4ZWRTaXplID0gSlVNUF9FTlVNX1dJVEhfU0laRSg2LCAy
ICogc2l6ZW9mKHVpbnQzMl90KSksCisgICAgICAgIEp1bXBDb21wYXJlQW5kQnJhbmNoRml4ZWRT
aXplID0gSlVNUF9FTlVNX1dJVEhfU0laRSg3LCAyICogc2l6ZW9mKHVpbnQzMl90KSksCisgICAg
ICAgIEp1bXBUZXN0Qml0Rml4ZWRTaXplID0gSlVNUF9FTlVNX1dJVEhfU0laRSg4LCAyICogc2l6
ZW9mKHVpbnQzMl90KSksCisgICAgfTsKKyAgICBlbnVtIEp1bXBMaW5rVHlwZSB7CisgICAgICAg
IExpbmtJbnZhbGlkID0gSlVNUF9FTlVNX1dJVEhfU0laRSgwLCAwKSwKKyAgICAgICAgTGlua0p1
bXBOb0NvbmRpdGlvbiA9IEpVTVBfRU5VTV9XSVRIX1NJWkUoMSwgMSAqIHNpemVvZih1aW50MzJf
dCkpLAorICAgICAgICBMaW5rSnVtcENvbmRpdGlvbkRpcmVjdCA9IEpVTVBfRU5VTV9XSVRIX1NJ
WkUoMiwgMSAqIHNpemVvZih1aW50MzJfdCkpLAorICAgICAgICBMaW5rSnVtcENvbmRpdGlvbiA9
IEpVTVBfRU5VTV9XSVRIX1NJWkUoMywgMiAqIHNpemVvZih1aW50MzJfdCkpLAorICAgICAgICBM
aW5rSnVtcENvbXBhcmVBbmRCcmFuY2ggPSBKVU1QX0VOVU1fV0lUSF9TSVpFKDQsIDIgKiBzaXpl
b2YodWludDMyX3QpKSwKKyAgICAgICAgTGlua0p1bXBDb21wYXJlQW5kQnJhbmNoRGlyZWN0ID0g
SlVNUF9FTlVNX1dJVEhfU0laRSg1LCAxICogc2l6ZW9mKHVpbnQzMl90KSksCisgICAgICAgIExp
bmtKdW1wVGVzdEJpdCA9IEpVTVBfRU5VTV9XSVRIX1NJWkUoNiwgMiAqIHNpemVvZih1aW50MzJf
dCkpLAorICAgICAgICBMaW5rSnVtcFRlc3RCaXREaXJlY3QgPSBKVU1QX0VOVU1fV0lUSF9TSVpF
KDcsIDEgKiBzaXplb2YodWludDMyX3QpKSwKKyAgICB9OworCisgICAgY2xhc3MgTGlua1JlY29y
ZCB7CisgICAgcHVibGljOgorICAgICAgICBMaW5rUmVjb3JkKGludHB0cl90IGZyb20sIGludHB0
cl90IHRvLCBKdW1wVHlwZSB0eXBlLCBDb25kaXRpb24gY29uZGl0aW9uKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkYXRhLnJlYWxUeXBlcy5tX2Zyb20gPSBmcm9tOworICAgICAgICAgICAgZGF0
YS5yZWFsVHlwZXMubV90byA9IHRvOworICAgICAgICAgICAgZGF0YS5yZWFsVHlwZXMubV90eXBl
ID0gdHlwZTsKKyAgICAgICAgICAgIGRhdGEucmVhbFR5cGVzLm1fbGlua1R5cGUgPSBMaW5rSW52
YWxpZDsKKyAgICAgICAgICAgIGRhdGEucmVhbFR5cGVzLm1fY29uZGl0aW9uID0gY29uZGl0aW9u
OworICAgICAgICB9CisgICAgICAgIExpbmtSZWNvcmQoaW50cHRyX3QgZnJvbSwgaW50cHRyX3Qg
dG8sIEp1bXBUeXBlIHR5cGUsIENvbmRpdGlvbiBjb25kaXRpb24sIGJvb2wgaXM2NEJpdCwgUmVn
aXN0ZXJJRCBjb21wYXJlUmVnaXN0ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRhdGEucmVh
bFR5cGVzLm1fZnJvbSA9IGZyb207CisgICAgICAgICAgICBkYXRhLnJlYWxUeXBlcy5tX3RvID0g
dG87CisgICAgICAgICAgICBkYXRhLnJlYWxUeXBlcy5tX3R5cGUgPSB0eXBlOworICAgICAgICAg
ICAgZGF0YS5yZWFsVHlwZXMubV9saW5rVHlwZSA9IExpbmtJbnZhbGlkOworICAgICAgICAgICAg
ZGF0YS5yZWFsVHlwZXMubV9jb25kaXRpb24gPSBjb25kaXRpb247CisgICAgICAgICAgICBkYXRh
LnJlYWxUeXBlcy5tX2lzNjRCaXQgPSBpczY0Qml0OworICAgICAgICAgICAgZGF0YS5yZWFsVHlw
ZXMubV9jb21wYXJlUmVnaXN0ZXIgPSBjb21wYXJlUmVnaXN0ZXI7CisgICAgICAgIH0KKyAgICAg
ICAgTGlua1JlY29yZChpbnRwdHJfdCBmcm9tLCBpbnRwdHJfdCB0bywgSnVtcFR5cGUgdHlwZSwg
Q29uZGl0aW9uIGNvbmRpdGlvbiwgdW5zaWduZWQgYml0TnVtYmVyLCBSZWdpc3RlcklEIGNvbXBh
cmVSZWdpc3RlcikKKyAgICAgICAgeworICAgICAgICAgICAgZGF0YS5yZWFsVHlwZXMubV9mcm9t
ID0gZnJvbTsKKyAgICAgICAgICAgIGRhdGEucmVhbFR5cGVzLm1fdG8gPSB0bzsKKyAgICAgICAg
ICAgIGRhdGEucmVhbFR5cGVzLm1fdHlwZSA9IHR5cGU7CisgICAgICAgICAgICBkYXRhLnJlYWxU
eXBlcy5tX2xpbmtUeXBlID0gTGlua0ludmFsaWQ7CisgICAgICAgICAgICBkYXRhLnJlYWxUeXBl
cy5tX2NvbmRpdGlvbiA9IGNvbmRpdGlvbjsKKyAgICAgICAgICAgIGRhdGEucmVhbFR5cGVzLm1f
Yml0TnVtYmVyID0gYml0TnVtYmVyOworICAgICAgICAgICAgZGF0YS5yZWFsVHlwZXMubV9jb21w
YXJlUmVnaXN0ZXIgPSBjb21wYXJlUmVnaXN0ZXI7CisgICAgICAgIH0KKyAgICAgICAgdm9pZCBv
cGVyYXRvcj0oY29uc3QgTGlua1JlY29yZCYgb3RoZXIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRhdGEuY29weVR5cGVzLmNvbnRlbnRbMF0gPSBvdGhlci5kYXRhLmNvcHlUeXBlcy5jb250ZW50
WzBdOworICAgICAgICAgICAgZGF0YS5jb3B5VHlwZXMuY29udGVudFsxXSA9IG90aGVyLmRhdGEu
Y29weVR5cGVzLmNvbnRlbnRbMV07CisgICAgICAgICAgICBkYXRhLmNvcHlUeXBlcy5jb250ZW50
WzJdID0gb3RoZXIuZGF0YS5jb3B5VHlwZXMuY29udGVudFsyXTsKKyAgICAgICAgfQorICAgICAg
ICBpbnRwdHJfdCBmcm9tKCkgY29uc3QgeyByZXR1cm4gZGF0YS5yZWFsVHlwZXMubV9mcm9tOyB9
CisgICAgICAgIHZvaWQgc2V0RnJvbShpbnRwdHJfdCBmcm9tKSB7IGRhdGEucmVhbFR5cGVzLm1f
ZnJvbSA9IGZyb207IH0KKyAgICAgICAgaW50cHRyX3QgdG8oKSBjb25zdCB7IHJldHVybiBkYXRh
LnJlYWxUeXBlcy5tX3RvOyB9CisgICAgICAgIEp1bXBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBkYXRhLnJlYWxUeXBlcy5tX3R5cGU7IH0KKyAgICAgICAgSnVtcExpbmtUeXBlIGxpbmtUeXBl
KCkgY29uc3QgeyByZXR1cm4gZGF0YS5yZWFsVHlwZXMubV9saW5rVHlwZTsgfQorICAgICAgICB2
b2lkIHNldExpbmtUeXBlKEp1bXBMaW5rVHlwZSBsaW5rVHlwZSkgeyBBU1NFUlQoZGF0YS5yZWFs
VHlwZXMubV9saW5rVHlwZSA9PSBMaW5rSW52YWxpZCk7IGRhdGEucmVhbFR5cGVzLm1fbGlua1R5
cGUgPSBsaW5rVHlwZTsgfQorICAgICAgICBDb25kaXRpb24gY29uZGl0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gZGF0YS5yZWFsVHlwZXMubV9jb25kaXRpb247IH0KKyAgICAgICAgYm9vbCBpczY0Qml0
KCkgY29uc3QgeyByZXR1cm4gZGF0YS5yZWFsVHlwZXMubV9pczY0Qml0OyB9CisgICAgICAgIHVu
c2lnbmVkIGJpdE51bWJlcigpIGNvbnN0IHsgcmV0dXJuIGRhdGEucmVhbFR5cGVzLm1fYml0TnVt
YmVyOyB9CisgICAgICAgIFJlZ2lzdGVySUQgY29tcGFyZVJlZ2lzdGVyKCkgY29uc3QgeyByZXR1
cm4gZGF0YS5yZWFsVHlwZXMubV9jb21wYXJlUmVnaXN0ZXI7IH0KKworICAgIHByaXZhdGU6Cisg
ICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIHN0cnVjdCBSZWFsVHlwZXMgeworICAgICAgICAg
ICAgICAgIGludHB0cl90IG1fZnJvbSA6IDQ4OworICAgICAgICAgICAgICAgIGludHB0cl90IG1f
dG8gOiA0ODsKKyAgICAgICAgICAgICAgICBKdW1wVHlwZSBtX3R5cGUgOiA4OworICAgICAgICAg
ICAgICAgIEp1bXBMaW5rVHlwZSBtX2xpbmtUeXBlIDogODsKKyAgICAgICAgICAgICAgICBDb25k
aXRpb24gbV9jb25kaXRpb24gOiA0OworICAgICAgICAgICAgICAgIGJvb2wgbV9pczY0Qml0IDog
MTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBtX2JpdE51bWJlciA6IDY7CisgICAgICAgICAg
ICAgICAgUmVnaXN0ZXJJRCBtX2NvbXBhcmVSZWdpc3RlciA6IDU7CisgICAgICAgICAgICB9IHJl
YWxUeXBlczsKKyAgICAgICAgICAgIHN0cnVjdCBDb3B5VHlwZXMgeworICAgICAgICAgICAgICAg
IHVpbnQ2NF90IGNvbnRlbnRbM107CisgICAgICAgICAgICB9IGNvcHlUeXBlczsKKyAgICAgICAg
ICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihSZWFsVHlwZXMpID09IHNpemVvZihDb3B5VHlwZXMp
LCBMaW5rUmVjb3JkQ29weVN0cnVjdFNpemVFcXVhbHNSZWFsU3RydWN0KTsKKyAgICAgICAgfSBk
YXRhOworICAgIH07CisKKyAgICAvLyBiaXRzKE4pIFZGUEV4cGFuZEltbShiaXRzKDgpIGltbTgp
OworICAgIC8vCisgICAgLy8gRW5jb2Rpbmcgb2YgZmxvYXRpbmcgcG9pbnQgaW1tZWRpYXRlcyBp
cyBhIGxpdHRlIGNvbXBsaWNhdGVkLiBIZXJlJ3MgYQorICAgIC8vIGhpZ2ggbGV2ZWwgZGVzY3Jp
cHRpb246CisgICAgLy8gICAgICsvLW0qMi1uIHdoZXJlIG0gYW5kIG4gYXJlIGludGVnZXJzLCAx
NiA8PSBtIDw9IDMxLCAwIDw9IG4gPD0gNworICAgIC8vIGFuZCB0aGUgYWxnaXJpdGhtIGZvciBl
eHBhbmRpbmcgdG8gYSBzaW5nbGUgcHJlY2lzaW9uIGZsb2F0OgorICAgIC8vICAgICByZXR1cm4g
aW1tODw3PjpOT1QoaW1tODw2Pik6UmVwbGljYXRlKGltbTg8Nj4sNSk6aW1tODw1OjA+Olplcm9z
KDE5KTsKKyAgICAvLworICAgIC8vIFRoZSB0cmlja2llc3QgYml0IGlzIGhvdyB0aGUgZXhwb25l
bnQgaXMgaGFuZGxlZC4gVGhlIGZvbGxvd2luZyB0YWJsZQorICAgIC8vIG1heSBoZWxwIGNsYXJp
ZnkgdGhpbmdzIGEgbGl0dGxlOgorICAgIC8vICAgICA2NTQKKyAgICAvLyAgICAgMTAwIDAxMTEx
MTAwIDEyNCAtMyAxMDIwIDAxMTExMTExMTAwCisgICAgLy8gICAgIDEwMSAwMTExMTEwMSAxMjUg
LTIgMTAyMSAwMTExMTExMTEwMQorICAgIC8vICAgICAxMTAgMDExMTExMTAgMTI2IC0xIDEwMjIg
MDExMTExMTExMTAKKyAgICAvLyAgICAgMTExIDAxMTExMTExIDEyNyAgMCAxMDIzIDAxMTExMTEx
MTExCisgICAgLy8gICAgIDAwMCAxMDAwMDAwMCAxMjggIDEgMTAyNCAxMDAwMDAwMDAwMAorICAg
IC8vICAgICAwMDEgMTAwMDAwMDEgMTI5ICAyIDEwMjUgMTAwMDAwMDAwMDEKKyAgICAvLyAgICAg
MDEwIDEwMDAwMDEwIDEzMCAgMyAxMDI2IDEwMDAwMDAwMDEwCisgICAgLy8gICAgIDAxMSAxMDAw
MDAxMSAxMzEgIDQgMTAyNyAxMDAwMDAwMDAxMQorICAgIC8vIFRoZSBmaXJzdCBjb2x1bW4gc2hv
d3MgdGhlIGJpdCBwYXR0ZXJuIHN0b3JlZCBpbiBiaXRzIDYtNCBvZiB0aGUgYXJtCisgICAgLy8g
ZW5jb2RlZCBpbW1lZGlhdGUuIFRoZSBzZWNvbmQgY29sdW1uIHNob3dzIHRoZSA4LWJpdCBJRUVF
IDc1NCBzaW5nbGUKKyAgICAvLyAtcHJlY2lzaW9uIGV4cG9uZW50IGluIGJpbmFyeSwgdGhlIHRo
aXJkIGNvbHVtbiBzaG93cyB0aGUgcmF3IGRlY2ltYWwKKyAgICAvLyB2YWx1ZS4gSUVFRSA3NTQg
c2luZ2xlLXByZWNpc2lvbiBudW1iZXJzIGFyZSBzdG9yZWQgd2l0aCBhIGJpYXMgb2YgMTI3Cisg
ICAgLy8gdG8gdGhlIGV4cG9uZW50LCBzbyB0aGUgZm91cnRoIGNvbHVtbiBzaG93cyB0aGUgcmVz
dWx0aW5nIGV4cG9uZW50LgorICAgIC8vIEZyb20gdGhpcyB3YXMgY2FuIHNlZSB0aGF0IHRoZSBl
eHBvbmVudCBjYW4gYmUgaW4gdGhlIHJhbmdlIC0zLi40LAorICAgIC8vIHdoaWNoIGFncmVlcyB3
aXRoIHRoZSBoaWdoIGxldmVsIGRlc2NyaXB0aW9uIGdpdmVuIGFib3ZlLiBUaGUgZmlmdGgKKyAg
ICAvLyBhbmQgc2l4dGggY29sdW1ucyBzaG93cyB0aGUgdmFsdWUgc3RvcmVkIGluIGEgSUVFRSA3
NTQgZG91YmxlLXByZWNpc2lvbgorICAgIC8vIG51bWJlciB0byByZXByZXNlbnQgdGhlc2UgZXhw
b25lbnRzIGluIGRlY2ltYWwgYW5kIGJpbmFyeSwgZ2l2ZW4gdGhlCisgICAgLy8gYmlhcyBvZiAx
MDIzLgorICAgIC8vCisgICAgLy8gVWx0aW1hdGVseSwgZGV0ZWN0aW5nIGRvdWJsZXMgdGhhdCBj
YW4gYmUgZW5jb2RlZCBhcyBpbW1lZGlhdGVzIG9uIGFybQorICAgIC8vIGFuZCBlbmNvZGluZyBk
b3VibGVzIGlzIGFjdHVhbGx5IG5vdCB0b28gYmFkLiBBIGZsb2F0aW5nIHBvaW50IHZhbHVlIGNh
bgorICAgIC8vIGJlIGVuY29kZWQgYnkgcmV0YWluaW5nIHRoZSBzaWduIGJpdCwgdGhlIGxvdyB0
aHJlZSBiaXRzIG9mIHRoZSBleHBvbmVudAorICAgIC8vIGFuZCB0aGUgaGlnaCA0IGJpdHMgb2Yg
dGhlIG1hbnRpc3NhLiBUbyB2YWxpZGx5IGJlIGFibGUgdG8gZW5jb2RlIGFuCisgICAgLy8gaW1t
ZWRpYXRlIHRoZSByZW1haW5kZXIgb2YgdGhlIG1hbnRpc3NhIG11c3QgYmUgemVybywgYW5kIHRo
ZSBoaWdoIHBhcnQKKyAgICAvLyBvZiB0aGUgZXhwb25lbnQgbXVzdCBtYXRjaCB0aGUgdG9wIGJp
dCByZXRhaW5lZCwgYmFyIHRoZSBoaWdoZXN0IGJpdAorICAgIC8vIHdoaWNoIG11c3QgYmUgaXRz
IGludmVyc2UuCisgICAgc3RhdGljIGJvb2wgY2FuRW5jb2RlRlBJbW0oZG91YmxlIGQpCisgICAg
eworICAgICAgICAvLyBEaXNjYXJkIHRoZSBzaWduIGJpdCwgdGhlIGxvdyB0d28gYml0cyBvZiB0
aGUgZXhwb25lbnQgJiB0aGUgaGlnaGVzdAorICAgICAgICAvLyBmb3VyIGJpdHMgb2YgdGhlIG1h
bnRpc3NhLgorICAgICAgICB1aW50NjRfdCBtYXNrZWQgPSBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+
KGQpICYgMHg3ZmMwZmZmZmZmZmZmZmZmdWxsOworICAgICAgICByZXR1cm4gKG1hc2tlZCA9PSAw
eDNmYzAwMDAwMDAwMDAwMDB1bGwpIHx8IChtYXNrZWQgPT0gMHg0MDAwMDAwMDAwMDAwMDAwdWxs
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgc3RhdGljIGJvb2wg
Y2FuRW5jb2RlUEltbU9mZnNldChpbnQzMl90IG9mZnNldCkKKyAgICB7CisgICAgICAgIGludDMy
X3QgbWF4UEltbSA9IDQwOTUgKiAoZGF0YXNpemUgLyA4KTsKKyAgICAgICAgaWYgKG9mZnNldCA8
IDApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChvZmZzZXQgPiBtYXhQ
SW1tKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAob2Zmc2V0ICYgKChk
YXRhc2l6ZSAvIDggKSAtIDEpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBjYW5FbmNvZGVTSW1tT2Zmc2V0
KGludDMyX3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzSW50OShvZmZzZXQpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBpbnQgZW5jb2RlRlBJbW0oZG91YmxlIGQpCisgICAgewor
ICAgICAgICBBU1NFUlQoY2FuRW5jb2RlRlBJbW0oZCkpOworICAgICAgICB1aW50NjRfdCB1NjQg
PSBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KGQpOworICAgICAgICByZXR1cm4gKHN0YXRpY19jYXN0
PGludD4odTY0ID4+IDU2KSAmIDB4ODApIHwgKHN0YXRpY19jYXN0PGludD4odTY0ID4+IDQ4KSAm
IDB4N2YpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBpbnQgZW5j
b2RlU2hpZnRBbW91bnQoaW50IGFtb3VudCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghYW1vdW50
IHx8IGRhdGFzaXplID09ICg4IDw8IGFtb3VudCkpOworICAgICAgICByZXR1cm4gYW1vdW50Owor
ICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBzdGF0aWMgaW50IGVuY29k
ZVBvc2l0aXZlSW1tZWRpYXRlKHVuc2lnbmVkIHBpbW0pCisgICAgeworICAgICAgICBBU1NFUlQo
IShwaW1tICYgKChkYXRhc2l6ZSAvIDgpIC0gMSkpKTsKKyAgICAgICAgcmV0dXJuIHBpbW0gLyAo
ZGF0YXNpemUgLyA4KTsKKyAgICB9CisKKyAgICBlbnVtIERhdGFzaXplIHsKKyAgICAgICAgRGF0
YXNpemVfMzIsCisgICAgICAgIERhdGFzaXplXzY0LAorICAgICAgICBEYXRhc2l6ZV82NF90b3As
CisgICAgICAgIERhdGFzaXplXzE2CisgICAgfTsKKworICAgIGVudW0gTWVtT3BTaXplIHsKKyAg
ICAgICAgTWVtT3BTaXplXzhfb3JfMTI4LAorICAgICAgICBNZW1PcFNpemVfMTYsCisgICAgICAg
IE1lbU9wU2l6ZV8zMiwKKyAgICAgICAgTWVtT3BTaXplXzY0LAorICAgIH07CisKKyAgICBlbnVt
IEJyYW5jaFR5cGUgeworICAgICAgICBCcmFuY2hUeXBlX0pNUCwKKyAgICAgICAgQnJhbmNoVHlw
ZV9DQUxMLAorICAgICAgICBCcmFuY2hUeXBlX1JFVAorICAgIH07CisKKyAgICBlbnVtIEFkZE9w
IHsKKyAgICAgICAgQWRkT3BfQURELAorICAgICAgICBBZGRPcF9TVUIKKyAgICB9OworCisgICAg
ZW51bSBCaXRmaWVsZE9wIHsKKyAgICAgICAgQml0ZmllbGRPcF9TQkZNLAorICAgICAgICBCaXRm
aWVsZE9wX0JGTSwKKyAgICAgICAgQml0ZmllbGRPcF9VQkZNCisgICAgfTsKKworICAgIGVudW0g
RGF0YU9wMVNvdXJjZSB7CisgICAgICAgIERhdGFPcF9SQklULAorICAgICAgICBEYXRhT3BfUkVW
MTYsCisgICAgICAgIERhdGFPcF9SRVYzMiwKKyAgICAgICAgRGF0YU9wX1JFVjY0LAorICAgICAg
ICBEYXRhT3BfQ0xaLAorICAgICAgICBEYXRhT3BfQ0xTCisgICAgfTsKKworICAgIGVudW0gRGF0
YU9wMlNvdXJjZSB7CisgICAgICAgIERhdGFPcF9VRElWID0gMiwKKyAgICAgICAgRGF0YU9wX1NE
SVYgPSAzLAorICAgICAgICBEYXRhT3BfTFNMViA9IDgsCisgICAgICAgIERhdGFPcF9MU1JWID0g
OSwKKyAgICAgICAgRGF0YU9wX0FTUlYgPSAxMCwKKyAgICAgICAgRGF0YU9wX1JPUlYgPSAxMQor
ICAgIH07CisKKyAgICBlbnVtIERhdGFPcDNTb3VyY2UgeworICAgICAgICBEYXRhT3BfTUFERCA9
IDAsCisgICAgICAgIERhdGFPcF9NU1VCID0gMSwKKyAgICAgICAgRGF0YU9wX1NNQURETCA9IDIs
CisgICAgICAgIERhdGFPcF9TTVNVQkwgPSAzLAorICAgICAgICBEYXRhT3BfU01VTEggPSA0LAor
ICAgICAgICBEYXRhT3BfVU1BRERMID0gMTAsCisgICAgICAgIERhdGFPcF9VTVNVQkwgPSAxMSwK
KyAgICAgICAgRGF0YU9wX1VNVUxIID0gMTIKKyAgICB9OworCisgICAgZW51bSBFeGNlcG5PcCB7
CisgICAgICAgIEV4Y2Vwbk9wX0VYQ0VQVElPTiA9IDAsCisgICAgICAgIEV4Y2Vwbk9wX0JSRUFL
UE9JTlQgPSAxLAorICAgICAgICBFeGNlcG5PcF9IQUxUID0gMiwKKyAgICAgICAgRXhjZXBuT3Bf
RENQUyA9IDUKKyAgICB9OworCisgICAgZW51bSBGUENtcE9wIHsKKyAgICAgICAgRlBDbXBPcF9G
Q01QID0gMHgwMCwKKyAgICAgICAgRlBDbXBPcF9GQ01QMCA9IDB4MDgsCisgICAgICAgIEZQQ21w
T3BfRkNNUEUgPSAweDEwLAorICAgICAgICBGUENtcE9wX0ZDTVBFMCA9IDB4MTgKKyAgICB9Owor
CisgICAgZW51bSBGUENvbmRDbXBPcCB7CisgICAgICAgIEZQQ29uZENtcE9wX0ZDTVAsCisgICAg
ICAgIEZQQ29uZENtcE9wX0ZDTVBFCisgICAgfTsKKworICAgIGVudW0gRlBEYXRhT3AxU291cmNl
IHsKKyAgICAgICAgRlBEYXRhT3BfRk1PViA9IDAsCisgICAgICAgIEZQRGF0YU9wX0ZBQlMgPSAx
LAorICAgICAgICBGUERhdGFPcF9GTkVHID0gMiwKKyAgICAgICAgRlBEYXRhT3BfRlNRUlQgPSAz
LAorICAgICAgICBGUERhdGFPcF9GQ1ZUX3RvU2luZ2xlID0gNCwKKyAgICAgICAgRlBEYXRhT3Bf
RkNWVF90b0RvdWJsZSA9IDUsCisgICAgICAgIEZQRGF0YU9wX0ZDVlRfdG9IYWxmID0gNywKKyAg
ICAgICAgRlBEYXRhT3BfRlJJTlROID0gOCwKKyAgICAgICAgRlBEYXRhT3BfRlJJTlRQID0gOSwK
KyAgICAgICAgRlBEYXRhT3BfRlJJTlRNID0gMTAsCisgICAgICAgIEZQRGF0YU9wX0ZSSU5UWiA9
IDExLAorICAgICAgICBGUERhdGFPcF9GUklOVEEgPSAxMiwKKyAgICAgICAgRlBEYXRhT3BfRlJJ
TlRYID0gMTQsCisgICAgICAgIEZQRGF0YU9wX0ZSSU5USSA9IDE1CisgICAgfTsKKworICAgIGVu
dW0gRlBEYXRhT3AyU291cmNlIHsKKyAgICAgICAgRlBEYXRhT3BfRk1VTCwKKyAgICAgICAgRlBE
YXRhT3BfRkRJViwKKyAgICAgICAgRlBEYXRhT3BfRkFERCwKKyAgICAgICAgRlBEYXRhT3BfRlNV
QiwKKyAgICAgICAgRlBEYXRhT3BfRk1BWCwKKyAgICAgICAgRlBEYXRhT3BfRk1JTiwKKyAgICAg
ICAgRlBEYXRhT3BfRk1BWE5NLAorICAgICAgICBGUERhdGFPcF9GTUlOTk0sCisgICAgICAgIEZQ
RGF0YU9wX0ZOTVVMCisgICAgfTsKKworICAgIGVudW0gRlBJbnRDb252T3AgeworICAgICAgICBG
UEludENvbnZPcF9GQ1ZUTlMgPSAweDAwLAorICAgICAgICBGUEludENvbnZPcF9GQ1ZUTlUgPSAw
eDAxLAorICAgICAgICBGUEludENvbnZPcF9TQ1ZURiA9IDB4MDIsCisgICAgICAgIEZQSW50Q29u
dk9wX1VDVlRGID0gMHgwMywKKyAgICAgICAgRlBJbnRDb252T3BfRkNWVEFTID0gMHgwNCwKKyAg
ICAgICAgRlBJbnRDb252T3BfRkNWVEFVID0gMHgwNSwKKyAgICAgICAgRlBJbnRDb252T3BfRk1P
Vl9RdG9YID0gMHgwNiwKKyAgICAgICAgRlBJbnRDb252T3BfRk1PVl9YdG9RID0gMHgwNywKKyAg
ICAgICAgRlBJbnRDb252T3BfRkNWVFBTID0gMHgwOCwKKyAgICAgICAgRlBJbnRDb252T3BfRkNW
VFBVID0gMHgwOSwKKyAgICAgICAgRlBJbnRDb252T3BfRk1PVl9RdG9YX3RvcCA9IDB4MGUsCisg
ICAgICAgIEZQSW50Q29udk9wX0ZNT1ZfWHRvUV90b3AgPSAweDBmLAorICAgICAgICBGUEludENv
bnZPcF9GQ1ZUTVMgPSAweDEwLAorICAgICAgICBGUEludENvbnZPcF9GQ1ZUTVUgPSAweDExLAor
ICAgICAgICBGUEludENvbnZPcF9GQ1ZUWlMgPSAweDE4LAorICAgICAgICBGUEludENvbnZPcF9G
Q1ZUWlUgPSAweDE5LAorICAgIH07CisKKyAgICBlbnVtIExvZ2ljYWxPcCB7CisgICAgICAgIExv
Z2ljYWxPcF9BTkQsCisgICAgICAgIExvZ2ljYWxPcF9PUlIsCisgICAgICAgIExvZ2ljYWxPcF9F
T1IsCisgICAgICAgIExvZ2ljYWxPcF9BTkRTCisgICAgfTsKKworICAgIGVudW0gTWVtT3Agewor
ICAgICAgICBNZW1PcF9TVE9SRSwKKyAgICAgICAgTWVtT3BfTE9BRCwKKyAgICAgICAgTWVtT3Bf
U1RPUkVfVjEyOCwgCisgICAgICAgIE1lbU9wX0xPQURfVjEyOCwKKyAgICAgICAgTWVtT3BfUFJF
RkVUQ0ggPSAyLCAvLyBzaXplIG11c3QgYmUgMworICAgICAgICBNZW1PcF9MT0FEX3NpZ25lZDY0
ID0gMiwgLy8gc2l6ZSBtYXkgYmUgMCwgMSBvciAyCisgICAgICAgIE1lbU9wX0xPQURfc2lnbmVk
MzIgPSAzIC8vIHNpemUgbWF5IGJlIDAgb3IgMQorICAgIH07CisKKyAgICBlbnVtIE1vdmVXaWRl
T3AgeworICAgICAgICBNb3ZlV2lkZU9wX04gPSAwLAorICAgICAgICBNb3ZlV2lkZU9wX1ogPSAy
LAorICAgICAgICBNb3ZlV2lkZU9wX0sgPSAzIAorICAgIH07CisKKyAgICBlbnVtIExkckxpdGVy
YWxPcCB7CisgICAgICAgIExkckxpdGVyYWxPcF8zMkJJVCA9IDAsCisgICAgICAgIExkckxpdGVy
YWxPcF82NEJJVCA9IDEsCisgICAgICAgIExkckxpdGVyYWxPcF9MRFJTVyA9IDIsCisgICAgICAg
IExkckxpdGVyYWxPcF8xMjhCSVQgPSAyCisgICAgfTsKKworcHVibGljOgorICAgIC8vIEludGVn
ZXIgSW5zdHJ1Y3Rpb25zOgorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplLCBTZXRGbGFncyBz
ZXRGbGFncyA9IERvbnRTZXRGbGFncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYWRjKFJlZ2lz
dGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0pCisgICAgeworICAgICAgICBD
SEVDS19EQVRBU0laRSgpOworICAgICAgICBpbnNuKGFkZFN1YnRyYWN0V2l0aENhcnJ5KERBVEFT
SVpFLCBBZGRPcF9BREQsIHNldEZsYWdzLCBybSwgcm4sIHJkKSk7CisgICAgfQorCisgICAgdGVt
cGxhdGU8aW50IGRhdGFzaXplLCBTZXRGbGFncyBzZXRGbGFncyA9IERvbnRTZXRGbGFncz4KKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgYWRkKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFVJ
bnQxMiBpbW0xMiwgaW50IHNoaWZ0ID0gMCkKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpF
KCk7CisgICAgICAgIEFTU0VSVCghc2hpZnQgfHwgc2hpZnQgPT0gMTIpOworICAgICAgICBpbnNu
KGFkZFN1YnRyYWN0SW1tZWRpYXRlKERBVEFTSVpFLCBBZGRPcF9BREQsIHNldEZsYWdzLCBzaGlm
dCA9PSAxMiwgaW1tMTIsIHJuLCByZCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRh
c2l6ZSwgU2V0RmxhZ3Mgc2V0RmxhZ3MgPSBEb250U2V0RmxhZ3M+CisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIGFkZChSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtKQor
ICAgIHsKKyAgICAgICAgYWRkPGRhdGFzaXplLCBzZXRGbGFncz4ocmQsIHJuLCBybSwgTFNMLCAw
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemUsIFNldEZsYWdzIHNldEZsYWdz
ID0gRG9udFNldEZsYWdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhZGQoUmVnaXN0ZXJJRCBy
ZCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSwgRXh0ZW5kVHlwZSBleHRlbmQsIGludCBh
bW91bnQpCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgpOworICAgICAgICBpbnNuKGFk
ZFN1YnRyYWN0RXh0ZW5kZWRSZWdpc3RlcihEQVRBU0laRSwgQWRkT3BfQURELCBzZXRGbGFncywg
cm0sIGV4dGVuZCwgYW1vdW50LCBybiwgcmQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQg
ZGF0YXNpemUsIFNldEZsYWdzIHNldEZsYWdzID0gRG9udFNldEZsYWdzPgorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBhZGQoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBy
bSwgU2hpZnRUeXBlIHNoaWZ0LCBpbnQgYW1vdW50KQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFU
QVNJWkUoKTsKKyAgICAgICAgaWYgKGlzU3Aocm4pKSB7CisgICAgICAgICAgICBBU1NFUlQoc2hp
ZnQgPT0gTFNMKTsKKyAgICAgICAgICAgIGFkZDxkYXRhc2l6ZSwgc2V0RmxhZ3M+KHJkLCBybiwg
cm0sIFVYVFgsIGFtb3VudCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgaW5zbihhZGRT
dWJ0cmFjdFNoaWZ0ZWRSZWdpc3RlcihEQVRBU0laRSwgQWRkT3BfQURELCBzZXRGbGFncywgc2hp
ZnQsIHJtLCBhbW91bnQsIHJuLCByZCkpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBhZHIoUmVnaXN0ZXJJRCByZCwgaW50IG9mZnNldCkKKyAgICB7CisgICAgICAgIGluc24ocGNS
ZWxhdGl2ZShmYWxzZSwgb2Zmc2V0LCByZCkpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBhZHJwKFJlZ2lzdGVySUQgcmQsIGludCBvZmZzZXQpCisgICAgeworICAgICAgICBBU1NF
UlQoIShvZmZzZXQgJiAweGZmZikpOworICAgICAgICBpbnNuKHBjUmVsYXRpdmUodHJ1ZSwgb2Zm
c2V0ID4+IDEyLCByZCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZSwgU2V0
RmxhZ3Mgc2V0RmxhZ3MgPSBEb250U2V0RmxhZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGFu
ZF8oUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSkKKyAgICB7Cisg
ICAgICAgIGFuZF88ZGF0YXNpemUsIHNldEZsYWdzPihyZCwgcm4sIHJtLCBMU0wsIDApOworICAg
IH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZSwgU2V0RmxhZ3Mgc2V0RmxhZ3MgPSBEb250
U2V0RmxhZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGFuZF8oUmVnaXN0ZXJJRCByZCwgUmVn
aXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSwgU2hpZnRUeXBlIHNoaWZ0LCBpbnQgYW1vdW50KQor
ICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihsb2dpY2FsU2hp
ZnRlZFJlZ2lzdGVyKERBVEFTSVpFLCBzZXRGbGFncyA/IExvZ2ljYWxPcF9BTkRTIDogTG9naWNh
bE9wX0FORCwgc2hpZnQsIGZhbHNlLCBybSwgYW1vdW50LCBybiwgcmQpKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemUsIFNldEZsYWdzIHNldEZsYWdzID0gRG9udFNldEZsYWdz
PgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhbmRfKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQg
cm4sIExvZ2ljYWxJbW1lZGlhdGUgaW1tKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUo
KTsKKyAgICAgICAgaW5zbihsb2dpY2FsSW1tZWRpYXRlKERBVEFTSVpFLCBzZXRGbGFncyA/IExv
Z2ljYWxPcF9BTkRTIDogTG9naWNhbE9wX0FORCwgaW1tLnZhbHVlKCksIHJuLCByZCkpOworICAg
IH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
YXNyKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIGludCBzaGlmdCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChzaGlmdCA8IGRhdGFzaXplKTsKKyAgICAgICAgc2JmbTxkYXRhc2l6ZT4ocmQs
IHJuLCBzaGlmdCwgZGF0YXNpemUgLSAxKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0
YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGFzcihSZWdpc3RlcklEIHJkLCBSZWdpc3Rl
cklEIHJuLCBSZWdpc3RlcklEIHJtKQorICAgIHsKKyAgICAgICAgYXNydjxkYXRhc2l6ZT4ocmQs
IHJuLCBybSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBhc3J2KFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVy
SUQgcm0pCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgpOworICAgICAgICBpbnNuKGRh
dGFQcm9jZXNzaW5nMlNvdXJjZShEQVRBU0laRSwgcm0sIERhdGFPcF9BU1JWLCBybiwgcmQpKTsK
KyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYihpbnQzMl90IG9mZnNldCA9IDApCisg
ICAgeworICAgICAgICBBU1NFUlQoIShvZmZzZXQgJiAzKSk7CisgICAgICAgIG9mZnNldCA+Pj0g
MjsKKyAgICAgICAgQVNTRVJUKG9mZnNldCA9PSAob2Zmc2V0IDw8IDYpID4+IDYpOworICAgICAg
ICBpbnNuKHVuY29uZGl0aW9uYWxCcmFuY2hJbW1lZGlhdGUoZmFsc2UsIG9mZnNldCkpOworICAg
IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBiX2NvbmQoQ29uZGl0aW9uIGNvbmQsIGludDMy
X3Qgb2Zmc2V0ID0gMCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghKG9mZnNldCAmIDMpKTsKKyAg
ICAgICAgb2Zmc2V0ID4+PSAyOworICAgICAgICBBU1NFUlQob2Zmc2V0ID09IChvZmZzZXQgPDwg
MTMpID4+IDEzKTsKKyAgICAgICAgaW5zbihjb25kaXRpb25hbEJyYW5jaEltbWVkaWF0ZShvZmZz
ZXQsIGNvbmQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxX
QVlTX0lOTElORSB2b2lkIGJmaShSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBpbnQgbHNi
LCBpbnQgd2lkdGgpCisgICAgeworICAgICAgICBiZm08ZGF0YXNpemU+KHJkLCBybiwgKGRhdGFz
aXplIC0gbHNiKSAmIChkYXRhc2l6ZSAtIDEpLCB3aWR0aCAtIDEpOworICAgIH0KKworICAgIHRl
bXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYmZtKFJlZ2lzdGVy
SUQgcmQsIFJlZ2lzdGVySUQgcm4sIGludCBpbW1yLCBpbnQgaW1tcykKKyAgICB7CisgICAgICAg
IENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24oYml0ZmllbGQoREFUQVNJWkUsIEJpdGZp
ZWxkT3BfQkZNLCBpbW1yLCBpbW1zLCBybiwgcmQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxp
bnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGJmeGlsKFJlZ2lzdGVySUQgcmQs
IFJlZ2lzdGVySUQgcm4sIGludCBsc2IsIGludCB3aWR0aCkKKyAgICB7CisgICAgICAgIGJmbTxk
YXRhc2l6ZT4ocmQsIHJuLCBsc2IsIGxzYiArIHdpZHRoIC0gMSk7CisgICAgfQorCisgICAgdGVt
cGxhdGU8aW50IGRhdGFzaXplLCBTZXRGbGFncyBzZXRGbGFncyA9IERvbnRTZXRGbGFncz4KKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgYmljKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJl
Z2lzdGVySUQgcm0pCisgICAgeworICAgICAgICBiaWM8ZGF0YXNpemUsIHNldEZsYWdzPihyZCwg
cm4sIHJtLCBMU0wsIDApOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZSwgU2V0
RmxhZ3Mgc2V0RmxhZ3MgPSBEb250U2V0RmxhZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGJp
YyhSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtLCBTaGlmdFR5cGUg
c2hpZnQsIGludCBhbW91bnQpCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgpOworICAg
ICAgICBpbnNuKGxvZ2ljYWxTaGlmdGVkUmVnaXN0ZXIoREFUQVNJWkUsIHNldEZsYWdzID8gTG9n
aWNhbE9wX0FORFMgOiBMb2dpY2FsT3BfQU5ELCBzaGlmdCwgdHJ1ZSwgcm0sIGFtb3VudCwgcm4s
IHJkKSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGJsKGludDMyX3Qgb2Zmc2V0
ID0gMCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghKG9mZnNldCAmIDMpKTsKKyAgICAgICAgb2Zm
c2V0ID4+PSAyOworICAgICAgICBpbnNuKHVuY29uZGl0aW9uYWxCcmFuY2hJbW1lZGlhdGUodHJ1
ZSwgb2Zmc2V0KSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGJscihSZWdpc3Rl
cklEIHJuKQorICAgIHsKKyAgICAgICAgaW5zbih1bmNvbmRpdGlvbmFsQnJhbmNoUmVnaXN0ZXIo
QnJhbmNoVHlwZV9DQUxMLCBybikpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBi
cihSZWdpc3RlcklEIHJuKQorICAgIHsKKyAgICAgICAgaW5zbih1bmNvbmRpdGlvbmFsQnJhbmNo
UmVnaXN0ZXIoQnJhbmNoVHlwZV9KTVAsIHJuKSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIGJyayh1aW50MTZfdCBpbW0pCisgICAgeworICAgICAgICBpbnNuKGV4Y2VwbkdlbmVy
YXRpb24oRXhjZXBuT3BfQlJFQUtQT0lOVCwgaW1tLCAwKSk7CisgICAgfQorICAgIAorICAgIHRl
bXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2JueihSZWdpc3Rl
cklEIHJ0LCBpbnQzMl90IG9mZnNldCA9IDApCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0la
RSgpOworICAgICAgICBBU1NFUlQoIShvZmZzZXQgJiAzKSk7CisgICAgICAgIG9mZnNldCA+Pj0g
MjsKKyAgICAgICAgaW5zbihjb21wYXJlQW5kQnJhbmNoSW1tZWRpYXRlKERBVEFTSVpFLCB0cnVl
LCBvZmZzZXQsIHJ0KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBjYnooUmVnaXN0ZXJJRCBydCwgaW50MzJfdCBvZmZzZXQgPSAw
KQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgQVNTRVJUKCEob2Zm
c2V0ICYgMykpOworICAgICAgICBvZmZzZXQgPj49IDI7CisgICAgICAgIGluc24oY29tcGFyZUFu
ZEJyYW5jaEltbWVkaWF0ZShEQVRBU0laRSwgZmFsc2UsIG9mZnNldCwgcnQpKTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNjbW4o
UmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSwgaW50IG56Y3YsIENvbmRpdGlvbiBjb25kKQor
ICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihjb25kaXRpb25h
bENvbXBhcmVSZWdpc3RlcihEQVRBU0laRSwgQWRkT3BfQURELCBybSwgY29uZCwgcm4sIG56Y3Yp
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIGNjbW4oUmVnaXN0ZXJJRCBybiwgVUludDUgaW1tLCBpbnQgbnpjdiwgQ29uZGl0aW9u
IGNvbmQpCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgpOworICAgICAgICBpbnNuKGNv
bmRpdGlvbmFsQ29tcGFyZUltbWVkaWF0ZShEQVRBU0laRSwgQWRkT3BfQURELCBpbW0sIGNvbmQs
IHJuLCBuemN2KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBjY21wKFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0sIGludCBu
emN2LCBDb25kaXRpb24gY29uZCkKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7Cisg
ICAgICAgIGluc24oY29uZGl0aW9uYWxDb21wYXJlUmVnaXN0ZXIoREFUQVNJWkUsIEFkZE9wX1NV
Qiwgcm0sIGNvbmQsIHJuLCBuemN2KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFz
aXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjY21wKFJlZ2lzdGVySUQgcm4sIFVJbnQ1IGlt
bSwgaW50IG56Y3YsIENvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJ
WkUoKTsKKyAgICAgICAgaW5zbihjb25kaXRpb25hbENvbXBhcmVJbW1lZGlhdGUoREFUQVNJWkUs
IEFkZE9wX1NVQiwgaW1tLCBjb25kLCBybiwgbnpjdikpOworICAgIH0KKworICAgIHRlbXBsYXRl
PGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2luYyhSZWdpc3RlcklEIHJk
LCBSZWdpc3RlcklEIHJuLCBDb25kaXRpb24gY29uZCkKKyAgICB7CisgICAgICAgIGNzaW5jPGRh
dGFzaXplPihyZCwgcm4sIHJuLCBpbnZlcnQoY29uZCkpOworICAgIH0KKworICAgIHRlbXBsYXRl
PGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2ludihSZWdpc3RlcklEIHJk
LCBSZWdpc3RlcklEIHJuLCBDb25kaXRpb24gY29uZCkKKyAgICB7CisgICAgICAgIGNzaW52PGRh
dGFzaXplPihyZCwgcm4sIHJuLCBpbnZlcnQoY29uZCkpOworICAgIH0KKworICAgIHRlbXBsYXRl
PGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2xzKFJlZ2lzdGVySUQgcmQs
IFJlZ2lzdGVySUQgcm4pCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgpOworICAgICAg
ICBpbnNuKGRhdGFQcm9jZXNzaW5nMVNvdXJjZShEQVRBU0laRSwgRGF0YU9wX0NMUywgcm4sIHJk
KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBjbHooUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybikKKyAgICB7CisgICAgICAg
IENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24oZGF0YVByb2Nlc3NpbmcxU291cmNlKERB
VEFTSVpFLCBEYXRhT3BfQ0xaLCBybiwgcmQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQg
ZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNtbihSZWdpc3RlcklEIHJuLCBVSW50
MTIgaW1tMTIsIGludCBzaGlmdCA9IDApCisgICAgeworICAgICAgICBhZGQ8ZGF0YXNpemUsIFM+
KEFSTTY0UmVnaXN0ZXJzOjp6ciwgcm4sIGltbTEyLCBzaGlmdCk7CisgICAgfQorCisgICAgdGVt
cGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjbW4oUmVnaXN0ZXJJ
RCBybiwgUmVnaXN0ZXJJRCBybSkKKyAgICB7CisgICAgICAgIGFkZDxkYXRhc2l6ZSwgUz4oQVJN
NjRSZWdpc3RlcnM6OnpyLCBybiwgcm0pOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRh
c2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY21uKFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVy
SUQgcm0sIEV4dGVuZFR5cGUgZXh0ZW5kLCBpbnQgYW1vdW50KQorICAgIHsKKyAgICAgICAgYWRk
PGRhdGFzaXplLCBTPihBUk02NFJlZ2lzdGVyczo6enIsIHJuLCBybSwgZXh0ZW5kLCBhbW91bnQp
OworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgY21uKFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0sIFNoaWZ0VHlwZSBzaGlmdCwg
aW50IGFtb3VudCkKKyAgICB7CisgICAgICAgIGFkZDxkYXRhc2l6ZSwgUz4oQVJNNjRSZWdpc3Rl
cnM6OnpyLCBybiwgcm0sIHNoaWZ0LCBhbW91bnQpOworICAgIH0KKworICAgIHRlbXBsYXRlPGlu
dCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY21wKFJlZ2lzdGVySUQgcm4sIFVJ
bnQxMiBpbW0xMiwgaW50IHNoaWZ0ID0gMCkKKyAgICB7CisgICAgICAgIHN1YjxkYXRhc2l6ZSwg
Uz4oQVJNNjRSZWdpc3RlcnM6OnpyLCBybiwgaW1tMTIsIHNoaWZ0KTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNtcChSZWdpc3Rl
cklEIHJuLCBSZWdpc3RlcklEIHJtKQorICAgIHsKKyAgICAgICAgc3ViPGRhdGFzaXplLCBTPihB
Uk02NFJlZ2lzdGVyczo6enIsIHJuLCBybSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRh
dGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjbXAoUmVnaXN0ZXJJRCBybiwgUmVnaXN0
ZXJJRCBybSwgRXh0ZW5kVHlwZSBleHRlbmQsIGludCBhbW91bnQpCisgICAgeworICAgICAgICBz
dWI8ZGF0YXNpemUsIFM+KEFSTTY0UmVnaXN0ZXJzOjp6ciwgcm4sIHJtLCBleHRlbmQsIGFtb3Vu
dCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBjbXAoUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSwgU2hpZnRUeXBlIHNoaWZ0
LCBpbnQgYW1vdW50KQorICAgIHsKKyAgICAgICAgc3ViPGRhdGFzaXplLCBTPihBUk02NFJlZ2lz
dGVyczo6enIsIHJuLCBybSwgc2hpZnQsIGFtb3VudCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8
aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjbmVnKFJlZ2lzdGVySUQgcmQs
IFJlZ2lzdGVySUQgcm4sIENvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgY3NuZWc8ZGF0
YXNpemU+KHJkLCBybiwgcm4sIGludmVydChjb25kKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8
aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjc2VsKFJlZ2lzdGVySUQgcmQs
IFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0sIENvbmRpdGlvbiBjb25kKQorICAgIHsKKyAg
ICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihjb25kaXRpb25hbFNlbGVjdChE
QVRBU0laRSwgZmFsc2UsIHJtLCBjb25kLCBmYWxzZSwgcm4sIHJkKSk7CisgICAgfQorCisgICAg
dGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjc2V0KFJlZ2lz
dGVySUQgcmQsIENvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgY3NpbmM8ZGF0YXNpemU+
KHJkLCBBUk02NFJlZ2lzdGVyczo6enIsIEFSTTY0UmVnaXN0ZXJzOjp6ciwgaW52ZXJ0KGNvbmQp
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIGNzZXRtKFJlZ2lzdGVySUQgcmQsIENvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAg
ICAgY3NpbnY8ZGF0YXNpemU+KHJkLCBBUk02NFJlZ2lzdGVyczo6enIsIEFSTTY0UmVnaXN0ZXJz
Ojp6ciwgaW52ZXJ0KGNvbmQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNzaW5jKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQg
cm4sIFJlZ2lzdGVySUQgcm0sIENvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgQ0hFQ0tf
REFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihjb25kaXRpb25hbFNlbGVjdChEQVRBU0laRSwgZmFs
c2UsIHJtLCBjb25kLCB0cnVlLCBybiwgcmQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQg
ZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNzaW52KFJlZ2lzdGVySUQgcmQsIFJl
Z2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0sIENvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAg
ICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihjb25kaXRpb25hbFNlbGVjdChEQVRB
U0laRSwgdHJ1ZSwgcm0sIGNvbmQsIGZhbHNlLCBybiwgcmQpKTsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNzbmVnKFJlZ2lzdGVy
SUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0sIENvbmRpdGlvbiBjb25kKQorICAg
IHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihjb25kaXRpb25hbFNl
bGVjdChEQVRBU0laRSwgdHJ1ZSwgcm0sIGNvbmQsIHRydWUsIHJuLCByZCkpOworICAgIH0KKwor
ICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZW9uKFJl
Z2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0pCisgICAgeworICAgICAg
ICBlb248ZGF0YXNpemU+KHJkLCBybiwgcm0sIExTTCwgMCk7CisgICAgfQorCisgICAgdGVtcGxh
dGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBlb24oUmVnaXN0ZXJJRCBy
ZCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSwgU2hpZnRUeXBlIHNoaWZ0LCBpbnQgYW1v
dW50KQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihsb2dp
Y2FsU2hpZnRlZFJlZ2lzdGVyKERBVEFTSVpFLCBMb2dpY2FsT3BfRU9SLCBzaGlmdCwgdHJ1ZSwg
cm0sIGFtb3VudCwgcm4sIHJkKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXpl
PgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBlb3IoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBy
biwgUmVnaXN0ZXJJRCBybSkKKyAgICB7CisgICAgICAgIGVvcjxkYXRhc2l6ZT4ocmQsIHJuLCBy
bSwgTFNMLCAwKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxX
QVlTX0lOTElORSB2b2lkIGVvcihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3Rl
cklEIHJtLCBTaGlmdFR5cGUgc2hpZnQsIGludCBhbW91bnQpCisgICAgeworICAgICAgICBDSEVD
S19EQVRBU0laRSgpOworICAgICAgICBpbnNuKGxvZ2ljYWxTaGlmdGVkUmVnaXN0ZXIoREFUQVNJ
WkUsIExvZ2ljYWxPcF9FT1IsIHNoaWZ0LCBmYWxzZSwgcm0sIGFtb3VudCwgcm4sIHJkKSk7Cisg
ICAgfQorICAgIAorICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgZW9yKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIExvZ2ljYWxJbW1lZGlhdGUg
aW1tKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihsb2dp
Y2FsSW1tZWRpYXRlKERBVEFTSVpFLCBMb2dpY2FsT3BfRU9SLCBpbW0udmFsdWUoKSwgcm4sIHJk
KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBleHRyKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0s
IGludCBsc2IpCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgpOworICAgICAgICBpbnNu
KGV4dHJhY3QoREFUQVNJWkUsIHJtLCBsc2IsIHJuLCByZCkpOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBoaW50KGludCBpbW0pCisgICAgeworICAgICAgICBpbnNuKGhpbnRQc2V1
ZG8oaW1tKSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGhsdCh1aW50MTZfdCBp
bW0pCisgICAgeworICAgICAgICBpbnNuKGV4Y2VwbkdlbmVyYXRpb24oRXhjZXBuT3BfSEFMVCwg
aW1tLCAwKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBsZHIoUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJ
RCBybSkKKyAgICB7CisgICAgICAgIGxkcjxkYXRhc2l6ZT4ocnQsIHJuLCBybSwgVVhUWCwgMCk7
CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBsZHIoUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSwgRXh0
ZW5kVHlwZSBleHRlbmQsIGludCBhbW91bnQpCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0la
RSgpOworICAgICAgICBpbnNuKGxvYWRTdG9yZVJlZ2lzdGVyUmVnaXN0ZXJPZmZzZXQoTUVNT1BT
SVpFLCBmYWxzZSwgTWVtT3BfTE9BRCwgcm0sIGV4dGVuZCwgZW5jb2RlU2hpZnRBbW91bnQ8ZGF0
YXNpemU+KGFtb3VudCksIHJuLCBydCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRh
c2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbGRyKFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVy
SUQgcm4sIHVuc2lnbmVkIHBpbW0pCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgpOwor
ICAgICAgICBpbnNuKGxvYWRTdG9yZVJlZ2lzdGVyVW5zaWduZWRJbW1lZGlhdGUoTUVNT1BTSVpF
LCBmYWxzZSwgTWVtT3BfTE9BRCwgZW5jb2RlUG9zaXRpdmVJbW1lZGlhdGU8ZGF0YXNpemU+KHBp
bW0pLCBybiwgcnQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAg
QUxXQVlTX0lOTElORSB2b2lkIGxkcihSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBQb3N0
SW5kZXggc2ltbSkKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGlu
c24obG9hZFN0b3JlUmVnaXN0ZXJQb3N0SW5kZXgoTUVNT1BTSVpFLCBmYWxzZSwgTWVtT3BfTE9B
RCwgc2ltbSwgcm4sIHJ0KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsZHIoUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwg
UHJlSW5kZXggc2ltbSkKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAg
IGluc24obG9hZFN0b3JlUmVnaXN0ZXJQcmVJbmRleChNRU1PUFNJWkUsIGZhbHNlLCBNZW1PcF9M
T0FELCBzaW1tLCBybiwgcnQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxkcl9saXRlcmFsKFJlZ2lzdGVySUQgcnQsIGludCBv
ZmZzZXQgPSAwKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgQVNT
RVJUKCEob2Zmc2V0ICYgMykpOworICAgICAgICBpbnNuKGxvYWRSZWdpc3RlckxpdGVyYWwoZGF0
YXNpemUgPT0gNjQgPyBMZHJMaXRlcmFsT3BfNjRCSVQgOiBMZHJMaXRlcmFsT3BfMzJCSVQsIGZh
bHNlLCBvZmZzZXQgPj4gMiwgcnQpKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
bGRyYihSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtKQorICAgIHsK
KyAgICAgICAgLy8gTm90IGNhbGxpbmcgdGhlIDUgYXJndW1lbnQgZm9ybSBvZiBsZHJiLCBzaW5j
ZSBpcyBhbW91bnQgaXMgb21taXR0ZWQgUyBpcyBmYWxzZS4KKyAgICAgICAgaW5zbihsb2FkU3Rv
cmVSZWdpc3RlclJlZ2lzdGVyT2Zmc2V0KE1lbU9wU2l6ZV84X29yXzEyOCwgZmFsc2UsIE1lbU9w
X0xPQUQsIHJtLCBVWFRYLCBmYWxzZSwgcm4sIHJ0KSk7CisgICAgfQorCisgICAgQUxXQVlTX0lO
TElORSB2b2lkIGxkcmIoUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBy
bSwgRXh0ZW5kVHlwZSBleHRlbmQsIGludCBhbW91bnQpCisgICAgeworICAgICAgICBBU1NFUlRf
VU5VU0VEKGFtb3VudCwgIWFtb3VudCk7CisgICAgICAgIGluc24obG9hZFN0b3JlUmVnaXN0ZXJS
ZWdpc3Rlck9mZnNldChNZW1PcFNpemVfOF9vcl8xMjgsIGZhbHNlLCBNZW1PcF9MT0FELCBybSwg
ZXh0ZW5kLCB0cnVlLCBybiwgcnQpKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
bGRyYihSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCB1bnNpZ25lZCBwaW1tKQorICAgIHsK
KyAgICAgICAgaW5zbihsb2FkU3RvcmVSZWdpc3RlclVuc2lnbmVkSW1tZWRpYXRlKE1lbU9wU2l6
ZV84X29yXzEyOCwgZmFsc2UsIE1lbU9wX0xPQUQsIGVuY29kZVBvc2l0aXZlSW1tZWRpYXRlPDg+
KHBpbW0pLCBybiwgcnQpKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbGRyYihS
ZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBQb3N0SW5kZXggc2ltbSkKKyAgICB7CisgICAg
ICAgIGluc24obG9hZFN0b3JlUmVnaXN0ZXJQb3N0SW5kZXgoTWVtT3BTaXplXzhfb3JfMTI4LCBm
YWxzZSwgTWVtT3BfTE9BRCwgc2ltbSwgcm4sIHJ0KSk7CisgICAgfQorCisgICAgQUxXQVlTX0lO
TElORSB2b2lkIGxkcmIoUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgUHJlSW5kZXggc2lt
bSkKKyAgICB7CisgICAgICAgIGluc24obG9hZFN0b3JlUmVnaXN0ZXJQcmVJbmRleChNZW1PcFNp
emVfOF9vcl8xMjgsIGZhbHNlLCBNZW1PcF9MT0FELCBzaW1tLCBybiwgcnQpKTsKKyAgICB9CisK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbGRyaChSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJu
LCBSZWdpc3RlcklEIHJtKQorICAgIHsKKyAgICAgICAgbGRyaChydCwgcm4sIHJtLCBVWFRYLCAw
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbGRyaChSZWdpc3RlcklEIHJ0LCBS
ZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtLCBFeHRlbmRUeXBlIGV4dGVuZCwgaW50IGFtb3Vu
dCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghYW1vdW50IHx8IGFtb3VudCA9PSAxKTsKKyAgICAg
ICAgaW5zbihsb2FkU3RvcmVSZWdpc3RlclJlZ2lzdGVyT2Zmc2V0KE1lbU9wU2l6ZV8xNiwgZmFs
c2UsIE1lbU9wX0xPQUQsIHJtLCBleHRlbmQsIGFtb3VudCA9PSAxLCBybiwgcnQpKTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbGRyaChSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklE
IHJuLCB1bnNpZ25lZCBwaW1tKQorICAgIHsKKyAgICAgICAgaW5zbihsb2FkU3RvcmVSZWdpc3Rl
clVuc2lnbmVkSW1tZWRpYXRlKE1lbU9wU2l6ZV8xNiwgZmFsc2UsIE1lbU9wX0xPQUQsIGVuY29k
ZVBvc2l0aXZlSW1tZWRpYXRlPDE2PihwaW1tKSwgcm4sIHJ0KSk7CisgICAgfQorCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIGxkcmgoUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgUG9zdElu
ZGV4IHNpbW0pCisgICAgeworICAgICAgICBpbnNuKGxvYWRTdG9yZVJlZ2lzdGVyUG9zdEluZGV4
KE1lbU9wU2l6ZV8xNiwgZmFsc2UsIE1lbU9wX0xPQUQsIHNpbW0sIHJuLCBydCkpOworICAgIH0K
KworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsZHJoKFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQg
cm4sIFByZUluZGV4IHNpbW0pCisgICAgeworICAgICAgICBpbnNuKGxvYWRTdG9yZVJlZ2lzdGVy
UHJlSW5kZXgoTWVtT3BTaXplXzE2LCBmYWxzZSwgTWVtT3BfTE9BRCwgc2ltbSwgcm4sIHJ0KSk7
CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBsZHJzYihSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtKQor
ICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgLy8gTm90IGNhbGxpbmcg
dGhlIDUgYXJndW1lbnQgZm9ybSBvZiBsZHJzYiwgc2luY2UgaXMgYW1vdW50IGlzIG9tbWl0dGVk
IFMgaXMgZmFsc2UuCisgICAgICAgIGluc24obG9hZFN0b3JlUmVnaXN0ZXJSZWdpc3Rlck9mZnNl
dChNZW1PcFNpemVfOF9vcl8xMjgsIGZhbHNlLCAoZGF0YXNpemUgPT0gNjQpID8gTWVtT3BfTE9B
RF9zaWduZWQ2NCA6IE1lbU9wX0xPQURfc2lnbmVkMzIsIHJtLCBVWFRYLCBmYWxzZSwgcm4sIHJ0
KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBsZHJzYihSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJt
LCBFeHRlbmRUeXBlIGV4dGVuZCwgaW50IGFtb3VudCkKKyAgICB7CisgICAgICAgIENIRUNLX0RB
VEFTSVpFKCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoYW1vdW50LCAhYW1vdW50KTsKKyAgICAg
ICAgaW5zbihsb2FkU3RvcmVSZWdpc3RlclJlZ2lzdGVyT2Zmc2V0KE1lbU9wU2l6ZV84X29yXzEy
OCwgZmFsc2UsIChkYXRhc2l6ZSA9PSA2NCkgPyBNZW1PcF9MT0FEX3NpZ25lZDY0IDogTWVtT3Bf
TE9BRF9zaWduZWQzMiwgcm0sIGV4dGVuZCwgdHJ1ZSwgcm4sIHJ0KSk7CisgICAgfQorCisgICAg
dGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsZHJzYihSZWdp
c3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCB1bnNpZ25lZCBwaW1tKQorICAgIHsKKyAgICAgICAg
Q0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihsb2FkU3RvcmVSZWdpc3RlclVuc2lnbmVk
SW1tZWRpYXRlKE1lbU9wU2l6ZV84X29yXzEyOCwgZmFsc2UsIChkYXRhc2l6ZSA9PSA2NCkgPyBN
ZW1PcF9MT0FEX3NpZ25lZDY0IDogTWVtT3BfTE9BRF9zaWduZWQzMiwgZW5jb2RlUG9zaXRpdmVJ
bW1lZGlhdGU8OD4ocGltbSksIHJuLCBydCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBk
YXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbGRyc2IoUmVnaXN0ZXJJRCBydCwgUmVn
aXN0ZXJJRCBybiwgUG9zdEluZGV4IHNpbW0pCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0la
RSgpOworICAgICAgICBpbnNuKGxvYWRTdG9yZVJlZ2lzdGVyUG9zdEluZGV4KE1lbU9wU2l6ZV84
X29yXzEyOCwgZmFsc2UsIChkYXRhc2l6ZSA9PSA2NCkgPyBNZW1PcF9MT0FEX3NpZ25lZDY0IDog
TWVtT3BfTE9BRF9zaWduZWQzMiwgc2ltbSwgcm4sIHJ0KSk7CisgICAgfQorCisgICAgdGVtcGxh
dGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsZHJzYihSZWdpc3RlcklE
IHJ0LCBSZWdpc3RlcklEIHJuLCBQcmVJbmRleCBzaW1tKQorICAgIHsKKyAgICAgICAgQ0hFQ0tf
REFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihsb2FkU3RvcmVSZWdpc3RlclByZUluZGV4KE1lbU9w
U2l6ZV84X29yXzEyOCwgZmFsc2UsIChkYXRhc2l6ZSA9PSA2NCkgPyBNZW1PcF9MT0FEX3NpZ25l
ZDY0IDogTWVtT3BfTE9BRF9zaWduZWQzMiwgc2ltbSwgcm4sIHJ0KSk7CisgICAgfQorCisgICAg
dGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsZHJzaChSZWdp
c3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtKQorICAgIHsKKyAgICAgICAg
bGRyc2g8ZGF0YXNpemU+KHJ0LCBybiwgcm0sIFVYVFgsIDApOworICAgIH0KKworICAgIHRlbXBs
YXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbGRyc2goUmVnaXN0ZXJJ
RCBydCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSwgRXh0ZW5kVHlwZSBleHRlbmQsIGlu
dCBhbW91bnQpCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgpOworICAgICAgICBBU1NF
UlQoIWFtb3VudCB8fCBhbW91bnQgPT0gMSk7CisgICAgICAgIGluc24obG9hZFN0b3JlUmVnaXN0
ZXJSZWdpc3Rlck9mZnNldChNZW1PcFNpemVfMTYsIGZhbHNlLCAoZGF0YXNpemUgPT0gNjQpID8g
TWVtT3BfTE9BRF9zaWduZWQ2NCA6IE1lbU9wX0xPQURfc2lnbmVkMzIsIHJtLCBleHRlbmQsIGFt
b3VudCA9PSAxLCBybiwgcnQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxkcnNoKFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQg
cm4sIHVuc2lnbmVkIHBpbW0pCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgpOworICAg
ICAgICBpbnNuKGxvYWRTdG9yZVJlZ2lzdGVyVW5zaWduZWRJbW1lZGlhdGUoTWVtT3BTaXplXzE2
LCBmYWxzZSwgKGRhdGFzaXplID09IDY0KSA/IE1lbU9wX0xPQURfc2lnbmVkNjQgOiBNZW1PcF9M
T0FEX3NpZ25lZDMyLCBlbmNvZGVQb3NpdGl2ZUltbWVkaWF0ZTwxNj4ocGltbSksIHJuLCBydCkp
OworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgbGRyc2goUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgUG9zdEluZGV4IHNpbW0p
CisgICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgpOworICAgICAgICBpbnNuKGxvYWRTdG9y
ZVJlZ2lzdGVyUG9zdEluZGV4KE1lbU9wU2l6ZV8xNiwgZmFsc2UsIChkYXRhc2l6ZSA9PSA2NCkg
PyBNZW1PcF9MT0FEX3NpZ25lZDY0IDogTWVtT3BfTE9BRF9zaWduZWQzMiwgc2ltbSwgcm4sIHJ0
KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBsZHJzaChSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBQcmVJbmRleCBzaW1t
KQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihsb2FkU3Rv
cmVSZWdpc3RlclByZUluZGV4KE1lbU9wU2l6ZV8xNiwgZmFsc2UsIChkYXRhc2l6ZSA9PSA2NCkg
PyBNZW1PcF9MT0FEX3NpZ25lZDY0IDogTWVtT3BfTE9BRF9zaWduZWQzMiwgc2ltbSwgcm4sIHJ0
KSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxkcnN3KFJlZ2lzdGVySUQgcnQs
IFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0pCisgICAgeworICAgICAgICBsZHJzdyhydCwg
cm4sIHJtLCBVWFRYLCAwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbGRyc3co
UmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSwgRXh0ZW5kVHlwZSBl
eHRlbmQsIGludCBhbW91bnQpCisgICAgeworICAgICAgICBBU1NFUlQoIWFtb3VudCB8fCBhbW91
bnQgPT0gMik7CisgICAgICAgIGluc24obG9hZFN0b3JlUmVnaXN0ZXJSZWdpc3Rlck9mZnNldChN
ZW1PcFNpemVfMzIsIGZhbHNlLCBNZW1PcF9MT0FEX3NpZ25lZDY0LCBybSwgZXh0ZW5kLCBhbW91
bnQgPT0gMiwgcm4sIHJ0KSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxkcnN3
KFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQgcm4sIHVuc2lnbmVkIHBpbW0pCisgICAgeworICAg
ICAgICBpbnNuKGxvYWRTdG9yZVJlZ2lzdGVyVW5zaWduZWRJbW1lZGlhdGUoTWVtT3BTaXplXzMy
LCBmYWxzZSwgTWVtT3BfTE9BRF9zaWduZWQ2NCwgZW5jb2RlUG9zaXRpdmVJbW1lZGlhdGU8MzI+
KHBpbW0pLCBybiwgcnQpKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbGRyc3co
UmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgUG9zdEluZGV4IHNpbW0pCisgICAgeworICAg
ICAgICBpbnNuKGxvYWRTdG9yZVJlZ2lzdGVyUG9zdEluZGV4KE1lbU9wU2l6ZV8zMiwgZmFsc2Us
IE1lbU9wX0xPQURfc2lnbmVkNjQsIHNpbW0sIHJuLCBydCkpOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBsZHJzdyhSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBQcmVJbmRl
eCBzaW1tKQorICAgIHsKKyAgICAgICAgaW5zbihsb2FkU3RvcmVSZWdpc3RlclByZUluZGV4KE1l
bU9wU2l6ZV8zMiwgZmFsc2UsIE1lbU9wX0xPQURfc2lnbmVkNjQsIHNpbW0sIHJuLCBydCkpOwor
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsZHJzd19saXRlcmFsKFJlZ2lzdGVySUQg
cnQsIGludCBvZmZzZXQgPSAwKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEob2Zmc2V0ICYgMykp
OworICAgICAgICBpbnNuKGxvYWRSZWdpc3RlckxpdGVyYWwoTGRyTGl0ZXJhbE9wX0xEUlNXLCBm
YWxzZSwgb2Zmc2V0ID4+IDIsIHJ0KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFz
aXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsZHVyKFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVy
SUQgcm4sIGludCBzaW1tKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAg
ICAgaW5zbihsb2FkU3RvcmVSZWdpc3RlclVuc2NhbGVkSW1tZWRpYXRlKE1FTU9QU0laRSwgZmFs
c2UsIE1lbU9wX0xPQUQsIHNpbW0sIHJuLCBydCkpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBsZHVyYihSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBpbnQgc2ltbSkKKyAg
ICB7CisgICAgICAgIGluc24obG9hZFN0b3JlUmVnaXN0ZXJVbnNjYWxlZEltbWVkaWF0ZShNZW1P
cFNpemVfOF9vcl8xMjgsIGZhbHNlLCBNZW1PcF9MT0FELCBzaW1tLCBybiwgcnQpKTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbGR1cmgoUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJ
RCBybiwgaW50IHNpbW0pCisgICAgeworICAgICAgICBpbnNuKGxvYWRTdG9yZVJlZ2lzdGVyVW5z
Y2FsZWRJbW1lZGlhdGUoTWVtT3BTaXplXzE2LCBmYWxzZSwgTWVtT3BfTE9BRCwgc2ltbSwgcm4s
IHJ0KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBsZHVyc2IoUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgaW50IHNpbW0p
CisgICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgpOworICAgICAgICBpbnNuKGxvYWRTdG9y
ZVJlZ2lzdGVyVW5zY2FsZWRJbW1lZGlhdGUoTWVtT3BTaXplXzhfb3JfMTI4LCBmYWxzZSwgKGRh
dGFzaXplID09IDY0KSA/IE1lbU9wX0xPQURfc2lnbmVkNjQgOiBNZW1PcF9MT0FEX3NpZ25lZDMy
LCBzaW1tLCBybiwgcnQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+Cisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIGxkdXJzaChSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJu
LCBpbnQgc2ltbSkKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGlu
c24obG9hZFN0b3JlUmVnaXN0ZXJVbnNjYWxlZEltbWVkaWF0ZShNZW1PcFNpemVfMTYsIGZhbHNl
LCAoZGF0YXNpemUgPT0gNjQpID8gTWVtT3BfTE9BRF9zaWduZWQ2NCA6IE1lbU9wX0xPQURfc2ln
bmVkMzIsIHNpbW0sIHJuLCBydCkpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBs
ZHVyc3coUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgaW50IHNpbW0pCisgICAgeworICAg
ICAgICBpbnNuKGxvYWRTdG9yZVJlZ2lzdGVyVW5zY2FsZWRJbW1lZGlhdGUoTWVtT3BTaXplXzMy
LCBmYWxzZSwgTWVtT3BfTE9BRF9zaWduZWQ2NCwgc2ltbSwgcm4sIHJ0KSk7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsc2woUmVn
aXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgaW50IHNoaWZ0KQorICAgIHsKKyAgICAgICAgQVNT
RVJUKHNoaWZ0IDwgZGF0YXNpemUpOworICAgICAgICB1YmZtPGRhdGFzaXplPihyZCwgcm4sIChk
YXRhc2l6ZSAtIHNoaWZ0KSAmIChkYXRhc2l6ZSAtIDEpLCBkYXRhc2l6ZSAtIDEgLSBzaGlmdCk7
CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBsc2woUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSkKKyAg
ICB7CisgICAgICAgIGxzbHY8ZGF0YXNpemU+KHJkLCBybiwgcm0pOworICAgIH0KKworICAgIHRl
bXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbHNsdihSZWdpc3Rl
cklEIHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtKQorICAgIHsKKyAgICAgICAgQ0hF
Q0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihkYXRhUHJvY2Vzc2luZzJTb3VyY2UoREFUQVNJ
WkUsIHJtLCBEYXRhT3BfTFNMViwgcm4sIHJkKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50
IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsc3IoUmVnaXN0ZXJJRCByZCwgUmVn
aXN0ZXJJRCBybiwgaW50IHNoaWZ0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHNoaWZ0IDwgZGF0
YXNpemUpOworICAgICAgICB1YmZtPGRhdGFzaXplPihyZCwgcm4sIHNoaWZ0LCBkYXRhc2l6ZSAt
IDEpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgbHNyKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0p
CisgICAgeworICAgICAgICBsc3J2PGRhdGFzaXplPihyZCwgcm4sIHJtKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxzcnYoUmVn
aXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSkKKyAgICB7CisgICAgICAg
IENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24oZGF0YVByb2Nlc3NpbmcyU291cmNlKERB
VEFTSVpFLCBybSwgRGF0YU9wX0xTUlYsIHJuLCByZCkpOworICAgIH0KKworICAgIHRlbXBsYXRl
PGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbWFkZChSZWdpc3RlcklEIHJk
LCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtLCBSZWdpc3RlcklEIHJhKQorICAgIHsKKyAg
ICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihkYXRhUHJvY2Vzc2luZzNTb3Vy
Y2UoREFUQVNJWkUsIERhdGFPcF9NQURELCBybSwgcmEsIHJuLCByZCkpOworICAgIH0KKworICAg
IHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbW5lZyhSZWdp
c3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtKQorICAgIHsKKyAgICAgICAg
bXN1YjxkYXRhc2l6ZT4ocmQsIHJuLCBybSwgQVJNNjRSZWdpc3RlcnM6OnpyKTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIG1vdihS
ZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJtKQorICAgIHsKKyAgICAgICAgaWYgKGlzU3AocmQp
IHx8IGlzU3Aocm0pKQorICAgICAgICAgICAgYWRkPGRhdGFzaXplPihyZCwgcm0sIFVJbnQxMigw
KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG9ycjxkYXRhc2l6ZT4ocmQsIEFSTTY0UmVn
aXN0ZXJzOjp6ciwgcm0pOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgbW92aShSZWdpc3RlcklEIHJkLCBMb2dpY2FsSW1tZWRpYXRl
IGltbSkKKyAgICB7CisgICAgICAgIG9ycjxkYXRhc2l6ZT4ocmQsIEFSTTY0UmVnaXN0ZXJzOjp6
ciwgaW1tKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlT
X0lOTElORSB2b2lkIG1vdmsoUmVnaXN0ZXJJRCByZCwgdWludDE2X3QgdmFsdWUsIGludCBzaGlm
dCA9IDApCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgpOworICAgICAgICBBU1NFUlQo
IShzaGlmdCAmIDB4ZikpOworICAgICAgICBpbnNuKG1vdmVXaWRlSW1lZGlhdGUoREFUQVNJWkUs
IE1vdmVXaWRlT3BfSywgc2hpZnQgPj4gNCwgdmFsdWUsIHJkKSk7CisgICAgfQorCisgICAgdGVt
cGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBtb3ZuKFJlZ2lzdGVy
SUQgcmQsIHVpbnQxNl90IHZhbHVlLCBpbnQgc2hpZnQgPSAwKQorICAgIHsKKyAgICAgICAgQ0hF
Q0tfREFUQVNJWkUoKTsKKyAgICAgICAgQVNTRVJUKCEoc2hpZnQgJiAweGYpKTsKKyAgICAgICAg
aW5zbihtb3ZlV2lkZUltZWRpYXRlKERBVEFTSVpFLCBNb3ZlV2lkZU9wX04sIHNoaWZ0ID4+IDQs
IHZhbHVlLCByZCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgbW92eihSZWdpc3RlcklEIHJkLCB1aW50MTZfdCB2YWx1ZSwgaW50
IHNoaWZ0ID0gMCkKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIEFT
U0VSVCghKHNoaWZ0ICYgMHhmKSk7CisgICAgICAgIGluc24obW92ZVdpZGVJbWVkaWF0ZShEQVRB
U0laRSwgTW92ZVdpZGVPcF9aLCBzaGlmdCA+PiA0LCB2YWx1ZSwgcmQpKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIG1zdWIoUmVn
aXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSwgUmVnaXN0ZXJJRCByYSkK
KyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24oZGF0YVByb2Nl
c3NpbmczU291cmNlKERBVEFTSVpFLCBEYXRhT3BfTVNVQiwgcm0sIHJhLCBybiwgcmQpKTsKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lk
IG11bChSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtKQorICAgIHsK
KyAgICAgICAgbWFkZDxkYXRhc2l6ZT4ocmQsIHJuLCBybSwgQVJNNjRSZWdpc3RlcnM6OnpyKTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2
b2lkIG12bihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJtKQorICAgIHsKKyAgICAgICAgb3Ju
PGRhdGFzaXplPihyZCwgQVJNNjRSZWdpc3RlcnM6OnpyLCBybSk7CisgICAgfQorCisgICAgdGVt
cGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBtdm4oUmVnaXN0ZXJJ
RCByZCwgUmVnaXN0ZXJJRCBybSwgU2hpZnRUeXBlIHNoaWZ0LCBpbnQgYW1vdW50KQorICAgIHsK
KyAgICAgICAgb3JuPGRhdGFzaXplPihyZCwgQVJNNjRSZWdpc3RlcnM6OnpyLCBybSwgc2hpZnQs
IGFtb3VudCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplLCBTZXRGbGFncyBz
ZXRGbGFncyA9IERvbnRTZXRGbGFncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbmVnKFJlZ2lz
dGVySUQgcmQsIFJlZ2lzdGVySUQgcm0pCisgICAgeworICAgICAgICBzdWI8ZGF0YXNpemUsIHNl
dEZsYWdzPihyZCwgQVJNNjRSZWdpc3RlcnM6OnpyLCBybSk7CisgICAgfQorCisgICAgdGVtcGxh
dGU8aW50IGRhdGFzaXplLCBTZXRGbGFncyBzZXRGbGFncyA9IERvbnRTZXRGbGFncz4KKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgbmVnKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm0sIFNoaWZ0
VHlwZSBzaGlmdCwgaW50IGFtb3VudCkKKyAgICB7CisgICAgICAgIHN1YjxkYXRhc2l6ZSwgc2V0
RmxhZ3M+KHJkLCBBUk02NFJlZ2lzdGVyczo6enIsIHJtLCBzaGlmdCwgYW1vdW50KTsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemUsIFNldEZsYWdzIHNldEZsYWdzID0gRG9udFNl
dEZsYWdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBuZ2MoUmVnaXN0ZXJJRCByZCwgUmVnaXN0
ZXJJRCBybSkKKyAgICB7CisgICAgICAgIHNiYzxkYXRhc2l6ZSwgc2V0RmxhZ3M+KHJkLCBBUk02
NFJlZ2lzdGVyczo6enIsIHJtKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemUs
IFNldEZsYWdzIHNldEZsYWdzID0gRG9udFNldEZsYWdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBuZ2MoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybSwgU2hpZnRUeXBlIHNoaWZ0LCBpbnQg
YW1vdW50KQorICAgIHsKKyAgICAgICAgc2JjPGRhdGFzaXplLCBzZXRGbGFncz4ocmQsIEFSTTY0
UmVnaXN0ZXJzOjp6ciwgcm0sIHNoaWZ0LCBhbW91bnQpOworICAgIH0KKworICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBub3AoKQorICAgIHsKKyAgICAgICAgaW5zbihub3BQc2V1ZG8oKSk7CisgICAg
fQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBv
cm4oUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSkKKyAgICB7Cisg
ICAgICAgIG9ybjxkYXRhc2l6ZT4ocmQsIHJuLCBybSwgTFNMLCAwKTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIG9ybihSZWdpc3Rl
cklEIHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtLCBTaGlmdFR5cGUgc2hpZnQsIGlu
dCBhbW91bnQpCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgpOworICAgICAgICBpbnNu
KGxvZ2ljYWxTaGlmdGVkUmVnaXN0ZXIoREFUQVNJWkUsIExvZ2ljYWxPcF9PUlIsIHNoaWZ0LCB0
cnVlLCBybSwgYW1vdW50LCBybiwgcmQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0
YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIG9ycihSZWdpc3RlcklEIHJkLCBSZWdpc3Rl
cklEIHJuLCBSZWdpc3RlcklEIHJtKQorICAgIHsKKyAgICAgICAgb3JyPGRhdGFzaXplPihyZCwg
cm4sIHJtLCBMU0wsIDApOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgb3JyKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJl
Z2lzdGVySUQgcm0sIFNoaWZ0VHlwZSBzaGlmdCwgaW50IGFtb3VudCkKKyAgICB7CisgICAgICAg
IENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24obG9naWNhbFNoaWZ0ZWRSZWdpc3RlcihE
QVRBU0laRSwgTG9naWNhbE9wX09SUiwgc2hpZnQsIGZhbHNlLCBybSwgYW1vdW50LCBybiwgcmQp
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIG9ycihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBMb2dpY2FsSW1tZWRpYXRl
IGltbSkKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24obG9n
aWNhbEltbWVkaWF0ZShEQVRBU0laRSwgTG9naWNhbE9wX09SUiwgaW1tLnZhbHVlKCksIHJuLCBy
ZCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgcmJpdChSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuKQorICAgIHsKKyAgICAg
ICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihkYXRhUHJvY2Vzc2luZzFTb3VyY2Uo
REFUQVNJWkUsIERhdGFPcF9SQklULCBybiwgcmQpKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgcmV0KFJlZ2lzdGVySUQgcm4gPSBBUk02NFJlZ2lzdGVyczo6bHIpCisgICAgewor
ICAgICAgICBpbnNuKHVuY29uZGl0aW9uYWxCcmFuY2hSZWdpc3RlcihCcmFuY2hUeXBlX1JFVCwg
cm4pKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lO
TElORSB2b2lkIHJldihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuKQorICAgIHsKKyAgICAg
ICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaWYgKGRhdGFzaXplID09IDMyKSAvLyAncmV2
JyBtbmVtb25pYyBtZWFucyBSRVYzMiBvciBSRVY2NCBkZXBlbmRpbmcgb24gdGhlIG9wZXJhbmQg
d2lkdGguCisgICAgICAgICAgICBpbnNuKGRhdGFQcm9jZXNzaW5nMVNvdXJjZShEYXRhc2l6ZV8z
MiwgRGF0YU9wX1JFVjMyLCBybiwgcmQpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5z
bihkYXRhUHJvY2Vzc2luZzFTb3VyY2UoRGF0YXNpemVfNjQsIERhdGFPcF9SRVY2NCwgcm4sIHJk
KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCByZXYxNihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuKQorICAgIHsKKyAgICAg
ICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihkYXRhUHJvY2Vzc2luZzFTb3VyY2Uo
REFUQVNJWkUsIERhdGFPcF9SRVYxNiwgcm4sIHJkKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8
aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXYzMihSZWdpc3RlcklEIHJk
LCBSZWdpc3RlcklEIHJuKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGRhdGFzaXplID09IDY0KTsg
Ly8gJ3JldjMyJyBvbmx5IHZhbGlkIHdpdGggNjQtYml0IG9wZXJhbmRzLgorICAgICAgICBpbnNu
KGRhdGFQcm9jZXNzaW5nMVNvdXJjZShEYXRhc2l6ZV82NCwgRGF0YU9wX1JFVjMyLCBybiwgcmQp
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHJvcihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtKQor
ICAgIHsKKyAgICAgICAgcm9ydjxkYXRhc2l6ZT4ocmQsIHJuLCBybSk7CisgICAgfQorCisgICAg
dGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCByb3IoUmVnaXN0
ZXJJRCByZCwgUmVnaXN0ZXJJRCBycywgaW50IHNoaWZ0KQorICAgIHsKKyAgICAgICAgZXh0cjxk
YXRhc2l6ZT4ocmQsIHJzLCBycywgc2hpZnQpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBk
YXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcm9ydihSZWdpc3RlcklEIHJkLCBSZWdp
c3RlcklEIHJuLCBSZWdpc3RlcklEIHJtKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUo
KTsKKyAgICAgICAgaW5zbihkYXRhUHJvY2Vzc2luZzJTb3VyY2UoREFUQVNJWkUsIHJtLCBEYXRh
T3BfUk9SViwgcm4sIHJkKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplLCBT
ZXRGbGFncyBzZXRGbGFncyA9IERvbnRTZXRGbGFncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2JjKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0pCisgICAgewor
ICAgICAgICBDSEVDS19EQVRBU0laRSgpOworICAgICAgICBpbnNuKGFkZFN1YnRyYWN0V2l0aENh
cnJ5KERBVEFTSVpFLCBBZGRPcF9TVUIsIHNldEZsYWdzLCBybSwgcm4sIHJkKSk7CisgICAgfQor
CisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzYmZp
eihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBpbnQgbHNiLCBpbnQgd2lkdGgpCisgICAg
eworICAgICAgICBzYmZtPGRhdGFzaXplPihyZCwgcm4sIChkYXRhc2l6ZSAtIGxzYikgJiAoZGF0
YXNpemUgLSAxKSwgd2lkdGggLSAxKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNp
emU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNiZm0oUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJ
RCBybiwgaW50IGltbXIsIGludCBpbW1zKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUo
KTsKKyAgICAgICAgaW5zbihiaXRmaWVsZChEQVRBU0laRSwgQml0ZmllbGRPcF9TQkZNLCBpbW1y
LCBpbW1zLCBybiwgcmQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+Cisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNiZngoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwg
aW50IGxzYiwgaW50IHdpZHRoKQorICAgIHsKKyAgICAgICAgc2JmbTxkYXRhc2l6ZT4ocmQsIHJu
LCBsc2IsIGxzYiArIHdpZHRoIC0gMSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFz
aXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZGl2KFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVy
SUQgcm4sIFJlZ2lzdGVySUQgcm0pCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgpOwor
ICAgICAgICBpbnNuKGRhdGFQcm9jZXNzaW5nMlNvdXJjZShEQVRBU0laRSwgcm0sIERhdGFPcF9T
RElWLCBybiwgcmQpKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc21hZGRsKFJl
Z2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0sIFJlZ2lzdGVySUQgcmEp
CisgICAgeworICAgICAgICBpbnNuKGRhdGFQcm9jZXNzaW5nM1NvdXJjZShEYXRhc2l6ZV82NCwg
RGF0YU9wX1NNQURETCwgcm0sIHJhLCBybiwgcmQpKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc21uZWdsKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQg
cm0pCisgICAgeworICAgICAgICBzbXN1YmwocmQsIHJuLCBybSwgQVJNNjRSZWdpc3RlcnM6Onpy
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc21zdWJsKFJlZ2lzdGVySUQgcmQs
IFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0sIFJlZ2lzdGVySUQgcmEpCisgICAgeworICAg
ICAgICBpbnNuKGRhdGFQcm9jZXNzaW5nM1NvdXJjZShEYXRhc2l6ZV82NCwgRGF0YU9wX1NNU1VC
TCwgcm0sIHJhLCBybiwgcmQpKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc211
bGgoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSkKKyAgICB7Cisg
ICAgICAgIGluc24oZGF0YVByb2Nlc3NpbmczU291cmNlKERhdGFzaXplXzY0LCBEYXRhT3BfU01V
TEgsIHJtLCBBUk02NFJlZ2lzdGVyczo6enIsIHJuLCByZCkpOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzbXVsbChSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3Rl
cklEIHJtKQorICAgIHsKKyAgICAgICAgc21hZGRsKHJkLCBybiwgcm0sIEFSTTY0UmVnaXN0ZXJz
Ojp6cik7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzdHIoUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBy
bSkKKyAgICB7CisgICAgICAgIHN0cjxkYXRhc2l6ZT4ocnQsIHJuLCBybSwgVVhUWCwgMCk7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzdHIoUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSwgRXh0ZW5k
VHlwZSBleHRlbmQsIGludCBhbW91bnQpCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgp
OworICAgICAgICBpbnNuKGxvYWRTdG9yZVJlZ2lzdGVyUmVnaXN0ZXJPZmZzZXQoTUVNT1BTSVpF
LCBmYWxzZSwgTWVtT3BfU1RPUkUsIHJtLCBleHRlbmQsIGVuY29kZVNoaWZ0QW1vdW50PGRhdGFz
aXplPihhbW91bnQpLCBybiwgcnQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNp
emU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0cihSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklE
IHJuLCB1bnNpZ25lZCBwaW1tKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAg
ICAgICAgaW5zbihsb2FkU3RvcmVSZWdpc3RlclVuc2lnbmVkSW1tZWRpYXRlKE1FTU9QU0laRSwg
ZmFsc2UsIE1lbU9wX1NUT1JFLCBlbmNvZGVQb3NpdGl2ZUltbWVkaWF0ZTxkYXRhc2l6ZT4ocGlt
bSksIHJuLCBydCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc3RyKFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQgcm4sIFBvc3RJ
bmRleCBzaW1tKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5z
bihsb2FkU3RvcmVSZWdpc3RlclBvc3RJbmRleChNRU1PUFNJWkUsIGZhbHNlLCBNZW1PcF9TVE9S
RSwgc2ltbSwgcm4sIHJ0KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdHIoUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwg
UHJlSW5kZXggc2ltbSkKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAg
IGluc24obG9hZFN0b3JlUmVnaXN0ZXJQcmVJbmRleChNRU1PUFNJWkUsIGZhbHNlLCBNZW1PcF9T
VE9SRSwgc2ltbSwgcm4sIHJ0KSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0
cmIoUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSkKKyAgICB7Cisg
ICAgICAgIC8vIE5vdCBjYWxsaW5nIHRoZSA1IGFyZ3VtZW50IGZvcm0gb2Ygc3RyYiwgc2luY2Ug
aXMgYW1vdW50IGlzIG9tbWl0dGVkIFMgaXMgZmFsc2UuCisgICAgICAgIGluc24obG9hZFN0b3Jl
UmVnaXN0ZXJSZWdpc3Rlck9mZnNldChNZW1PcFNpemVfOF9vcl8xMjgsIGZhbHNlLCBNZW1PcF9T
VE9SRSwgcm0sIFVYVFgsIGZhbHNlLCBybiwgcnQpKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc3RyYihSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJt
LCBFeHRlbmRUeXBlIGV4dGVuZCwgaW50IGFtb3VudCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9V
TlVTRUQoYW1vdW50LCAhYW1vdW50KTsKKyAgICAgICAgaW5zbihsb2FkU3RvcmVSZWdpc3RlclJl
Z2lzdGVyT2Zmc2V0KE1lbU9wU2l6ZV84X29yXzEyOCwgZmFsc2UsIE1lbU9wX1NUT1JFLCBybSwg
ZXh0ZW5kLCB0cnVlLCBybiwgcnQpKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c3RyYihSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCB1bnNpZ25lZCBwaW1tKQorICAgIHsK
KyAgICAgICAgaW5zbihsb2FkU3RvcmVSZWdpc3RlclVuc2lnbmVkSW1tZWRpYXRlKE1lbU9wU2l6
ZV84X29yXzEyOCwgZmFsc2UsIE1lbU9wX1NUT1JFLCBlbmNvZGVQb3NpdGl2ZUltbWVkaWF0ZTw4
PihwaW1tKSwgcm4sIHJ0KSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0cmIo
UmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgUG9zdEluZGV4IHNpbW0pCisgICAgeworICAg
ICAgICBpbnNuKGxvYWRTdG9yZVJlZ2lzdGVyUG9zdEluZGV4KE1lbU9wU2l6ZV84X29yXzEyOCwg
ZmFsc2UsIE1lbU9wX1NUT1JFLCBzaW1tLCBybiwgcnQpKTsKKyAgICB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc3RyYihSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBQcmVJbmRleCBz
aW1tKQorICAgIHsKKyAgICAgICAgaW5zbihsb2FkU3RvcmVSZWdpc3RlclByZUluZGV4KE1lbU9w
U2l6ZV84X29yXzEyOCwgZmFsc2UsIE1lbU9wX1NUT1JFLCBzaW1tLCBybiwgcnQpKTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RyaChSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklE
IHJuLCBSZWdpc3RlcklEIHJtKQorICAgIHsKKyAgICAgICAgc3RyaChydCwgcm4sIHJtLCBVWFRY
LCAwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RyaChSZWdpc3RlcklEIHJ0
LCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtLCBFeHRlbmRUeXBlIGV4dGVuZCwgaW50IGFt
b3VudCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghYW1vdW50IHx8IGFtb3VudCA9PSAxKTsKKyAg
ICAgICAgaW5zbihsb2FkU3RvcmVSZWdpc3RlclJlZ2lzdGVyT2Zmc2V0KE1lbU9wU2l6ZV8xNiwg
ZmFsc2UsIE1lbU9wX1NUT1JFLCBybSwgZXh0ZW5kLCBhbW91bnQgPT0gMSwgcm4sIHJ0KSk7Cisg
ICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0cmgoUmVnaXN0ZXJJRCBydCwgUmVnaXN0
ZXJJRCBybiwgdW5zaWduZWQgcGltbSkKKyAgICB7CisgICAgICAgIGluc24obG9hZFN0b3JlUmVn
aXN0ZXJVbnNpZ25lZEltbWVkaWF0ZShNZW1PcFNpemVfMTYsIGZhbHNlLCBNZW1PcF9TVE9SRSwg
ZW5jb2RlUG9zaXRpdmVJbW1lZGlhdGU8MTY+KHBpbW0pLCBybiwgcnQpKTsKKyAgICB9CisKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RyaChSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBQ
b3N0SW5kZXggc2ltbSkKKyAgICB7CisgICAgICAgIGluc24obG9hZFN0b3JlUmVnaXN0ZXJQb3N0
SW5kZXgoTWVtT3BTaXplXzE2LCBmYWxzZSwgTWVtT3BfU1RPUkUsIHNpbW0sIHJuLCBydCkpOwor
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdHJoKFJlZ2lzdGVySUQgcnQsIFJlZ2lz
dGVySUQgcm4sIFByZUluZGV4IHNpbW0pCisgICAgeworICAgICAgICBpbnNuKGxvYWRTdG9yZVJl
Z2lzdGVyUHJlSW5kZXgoTWVtT3BTaXplXzE2LCBmYWxzZSwgTWVtT3BfU1RPUkUsIHNpbW0sIHJu
LCBydCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc3R1cihSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBpbnQgc2ltbSkK
KyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24obG9hZFN0b3Jl
UmVnaXN0ZXJVbnNjYWxlZEltbWVkaWF0ZShNRU1PUFNJWkUsIGZhbHNlLCBNZW1PcF9TVE9SRSwg
c2ltbSwgcm4sIHJ0KSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0dXJiKFJl
Z2lzdGVySUQgcnQsIFJlZ2lzdGVySUQgcm4sIGludCBzaW1tKQorICAgIHsKKyAgICAgICAgaW5z
bihsb2FkU3RvcmVSZWdpc3RlclVuc2NhbGVkSW1tZWRpYXRlKE1lbU9wU2l6ZV84X29yXzEyOCwg
ZmFsc2UsIE1lbU9wX1NUT1JFLCBzaW1tLCBybiwgcnQpKTsKKyAgICB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc3R1cmgoUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgaW50IHNpbW0p
CisgICAgeworICAgICAgICBpbnNuKGxvYWRTdG9yZVJlZ2lzdGVyVW5zY2FsZWRJbW1lZGlhdGUo
TWVtT3BTaXplXzE2LCBmYWxzZSwgTWVtT3BfU1RPUkUsIHNpbW0sIHJuLCBydCkpOworICAgIH0K
KworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZSwgU2V0RmxhZ3Mgc2V0RmxhZ3MgPSBEb250U2V0
RmxhZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN1YihSZWdpc3RlcklEIHJkLCBSZWdpc3Rl
cklEIHJuLCBVSW50MTIgaW1tMTIsIGludCBzaGlmdCA9IDApCisgICAgeworICAgICAgICBDSEVD
S19EQVRBU0laRSgpOworICAgICAgICBBU1NFUlQoIXNoaWZ0IHx8IHNoaWZ0ID09IDEyKTsKKyAg
ICAgICAgaW5zbihhZGRTdWJ0cmFjdEltbWVkaWF0ZShEQVRBU0laRSwgQWRkT3BfU1VCLCBzZXRG
bGFncywgc2hpZnQgPT0gMTIsIGltbTEyLCBybiwgcmQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTxpbnQgZGF0YXNpemUsIFNldEZsYWdzIHNldEZsYWdzID0gRG9udFNldEZsYWdzPgorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzdWIoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0
ZXJJRCBybSkKKyAgICB7CisgICAgICAgIHN1YjxkYXRhc2l6ZSwgc2V0RmxhZ3M+KHJkLCBybiwg
cm0sIExTTCwgMCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplLCBTZXRGbGFn
cyBzZXRGbGFncyA9IERvbnRTZXRGbGFncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3ViKFJl
Z2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0sIEV4dGVuZFR5cGUgZXh0
ZW5kLCBpbnQgYW1vdW50KQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAg
ICAgaW5zbihhZGRTdWJ0cmFjdEV4dGVuZGVkUmVnaXN0ZXIoREFUQVNJWkUsIEFkZE9wX1NVQiwg
c2V0RmxhZ3MsIHJtLCBleHRlbmQsIGFtb3VudCwgcm4sIHJkKSk7CisgICAgfQorCisgICAgdGVt
cGxhdGU8aW50IGRhdGFzaXplLCBTZXRGbGFncyBzZXRGbGFncyA9IERvbnRTZXRGbGFncz4KKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc3ViKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJl
Z2lzdGVySUQgcm0sIFNoaWZ0VHlwZSBzaGlmdCwgaW50IGFtb3VudCkKKyAgICB7CisgICAgICAg
IENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGlmIChpc1NwKHJuKSkgeworICAgICAgICAgICAg
QVNTRVJUKHNoaWZ0ID09IExTTCk7CisgICAgICAgICAgICBzdWI8ZGF0YXNpemUsIHNldEZsYWdz
PihyZCwgcm4sIHJtLCBVWFRYLCBhbW91bnQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IGluc24oYWRkU3VidHJhY3RTaGlmdGVkUmVnaXN0ZXIoREFUQVNJWkUsIEFkZE9wX1NVQiwgc2V0
RmxhZ3MsIHNoaWZ0LCBybSwgYW1vdW50LCBybiwgcmQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN4dGIoUmVnaXN0ZXJJRCBy
ZCwgUmVnaXN0ZXJJRCBybikKKyAgICB7CisgICAgICAgIHNiZm08ZGF0YXNpemU+KHJkLCBybiwg
MCwgNyk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzeHRoKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4pCisgICAgeworICAg
ICAgICBzYmZtPGRhdGFzaXplPihyZCwgcm4sIDAsIDE1KTsKKyAgICB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc3h0dyhSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuKQorICAgIHsKKyAg
ICAgICAgc2JmbTw2ND4ocmQsIHJuLCAwLCAzMSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHRieihSZWdpc3RlcklEIHJ0LCBpbnQgaW1tLCBpbnQgb2Zmc2V0ID0gMCkKKyAgICB7
CisgICAgICAgIEFTU0VSVCghKG9mZnNldCAmIDMpKTsKKyAgICAgICAgb2Zmc2V0ID4+PSAyOwor
ICAgICAgICBpbnNuKHRlc3RBbmRCcmFuY2hJbW1lZGlhdGUoZmFsc2UsIGltbSwgb2Zmc2V0LCBy
dCkpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCB0Ym56KFJlZ2lzdGVySUQgcnQs
IGludCBpbW0sIGludCBvZmZzZXQgPSAwKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEob2Zmc2V0
ICYgMykpOworICAgICAgICBvZmZzZXQgPj49IDI7CisgICAgICAgIGluc24odGVzdEFuZEJyYW5j
aEltbWVkaWF0ZSh0cnVlLCBpbW0sIG9mZnNldCwgcnQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHRzdChSZWdpc3RlcklEIHJu
LCBSZWdpc3RlcklEIHJtKQorICAgIHsKKyAgICAgICAgYW5kXzxkYXRhc2l6ZSwgUz4oQVJNNjRS
ZWdpc3RlcnM6OnpyLCBybiwgcm0pOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6
ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdHN0KFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQg
cm0sIFNoaWZ0VHlwZSBzaGlmdCwgaW50IGFtb3VudCkKKyAgICB7CisgICAgICAgIGFuZF88ZGF0
YXNpemUsIFM+KEFSTTY0UmVnaXN0ZXJzOjp6ciwgcm4sIHJtLCBzaGlmdCwgYW1vdW50KTsKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHRzdChSZWdpc3RlcklEIHJuLCBMb2dpY2FsSW1tZWRpYXRlIGltbSkKKyAgICB7CisgICAgICAg
IGFuZF88ZGF0YXNpemUsIFM+KEFSTTY0UmVnaXN0ZXJzOjp6ciwgcm4sIGltbSk7CisgICAgfQor
CisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1YmZp
eihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBpbnQgbHNiLCBpbnQgd2lkdGgpCisgICAg
eworICAgICAgICB1YmZtPGRhdGFzaXplPihyZCwgcm4sIChkYXRhc2l6ZSAtIGxzYikgJiAoZGF0
YXNpemUgLSAxKSwgd2lkdGggLSAxKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNp
emU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHViZm0oUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJ
RCBybiwgaW50IGltbXIsIGludCBpbW1zKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUo
KTsKKyAgICAgICAgaW5zbihiaXRmaWVsZChEQVRBU0laRSwgQml0ZmllbGRPcF9VQkZNLCBpbW1y
LCBpbW1zLCBybiwgcmQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+Cisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHViZngoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwg
aW50IGxzYiwgaW50IHdpZHRoKQorICAgIHsKKyAgICAgICAgdWJmbTxkYXRhc2l6ZT4ocmQsIHJu
LCBsc2IsIGxzYiArIHdpZHRoIC0gMSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFz
aXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1ZGl2KFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVy
SUQgcm4sIFJlZ2lzdGVySUQgcm0pCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgpOwor
ICAgICAgICBpbnNuKGRhdGFQcm9jZXNzaW5nMlNvdXJjZShEQVRBU0laRSwgcm0sIERhdGFPcF9V
RElWLCBybiwgcmQpKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdW1hZGRsKFJl
Z2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0sIFJlZ2lzdGVySUQgcmEp
CisgICAgeworICAgICAgICBpbnNuKGRhdGFQcm9jZXNzaW5nM1NvdXJjZShEYXRhc2l6ZV82NCwg
RGF0YU9wX1VNQURETCwgcm0sIHJhLCBybiwgcmQpKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgdW1uZWdsKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQg
cm0pCisgICAgeworICAgICAgICB1bXN1YmwocmQsIHJuLCBybSwgQVJNNjRSZWdpc3RlcnM6Onpy
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdW1zdWJsKFJlZ2lzdGVySUQgcmQs
IFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0sIFJlZ2lzdGVySUQgcmEpCisgICAgeworICAg
ICAgICBpbnNuKGRhdGFQcm9jZXNzaW5nM1NvdXJjZShEYXRhc2l6ZV82NCwgRGF0YU9wX1VNU1VC
TCwgcm0sIHJhLCBybiwgcmQpKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdW11
bGgoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSkKKyAgICB7Cisg
ICAgICAgIGluc24oZGF0YVByb2Nlc3NpbmczU291cmNlKERhdGFzaXplXzY0LCBEYXRhT3BfVU1V
TEgsIHJtLCBBUk02NFJlZ2lzdGVyczo6enIsIHJuLCByZCkpOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCB1bXVsbChSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3Rl
cklEIHJtKQorICAgIHsKKyAgICAgICAgdW1hZGRsKHJkLCBybiwgcm0sIEFSTTY0UmVnaXN0ZXJz
Ojp6cik7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCB1eHRiKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4pCisgICAgeworICAg
ICAgICB1YmZtPGRhdGFzaXplPihyZCwgcm4sIDAsIDcpOworICAgIH0KKworICAgIHRlbXBsYXRl
PGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdXh0aChSZWdpc3RlcklEIHJk
LCBSZWdpc3RlcklEIHJuKQorICAgIHsKKyAgICAgICAgdWJmbTxkYXRhc2l6ZT4ocmQsIHJuLCAw
LCAxNSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHV4dHcoUmVnaXN0ZXJJRCBy
ZCwgUmVnaXN0ZXJJRCBybikKKyAgICB7CisgICAgICAgIHViZm08NjQ+KHJkLCBybiwgMCwgMzEp
OworICAgIH0KKworICAgIC8vIEZsb2F0aW5nIFBvaW50IEluc3RydWN0aW9uczoKKworICAgIHRl
bXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmFicyhGUFJlZ2lz
dGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2bikKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpF
KCk7CisgICAgICAgIGluc24oZmxvYXRpbmdQb2ludERhdGFQcm9jZXNzaW5nMVNvdXJjZShEQVRB
U0laRSwgRlBEYXRhT3BfRkFCUywgdm4sIHZkKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50
IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmYWRkKEZQUmVnaXN0ZXJJRCB2ZCwg
RlBSZWdpc3RlcklEIHZuLCBGUFJlZ2lzdGVySUQgdm0pCisgICAgeworICAgICAgICBDSEVDS19E
QVRBU0laRSgpOworICAgICAgICBpbnNuKGZsb2F0aW5nUG9pbnREYXRhUHJvY2Vzc2luZzJTb3Vy
Y2UoREFUQVNJWkUsIHZtLCBGUERhdGFPcF9GQURELCB2biwgdmQpKTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZjY21wKEZQUmVn
aXN0ZXJJRCB2biwgRlBSZWdpc3RlcklEIHZtLCBpbnQgbnpjdiwgQ29uZGl0aW9uIGNvbmQpCisg
ICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgpOworICAgICAgICBpbnNuKGZsb2F0aW5nUG9p
bnRDb25kaXRpb25hbENvbXBhcmUoREFUQVNJWkUsIHZtLCBjb25kLCB2biwgRlBDb25kQ21wT3Bf
RkNNUCwgbnpjdikpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgZmNjbXBlKEZQUmVnaXN0ZXJJRCB2biwgRlBSZWdpc3RlcklEIHZt
LCBpbnQgbnpjdiwgQ29uZGl0aW9uIGNvbmQpCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0la
RSgpOworICAgICAgICBpbnNuKGZsb2F0aW5nUG9pbnRDb25kaXRpb25hbENvbXBhcmUoREFUQVNJ
WkUsIHZtLCBjb25kLCB2biwgRlBDb25kQ21wT3BfRkNNUEUsIG56Y3YpKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZjbXAoRlBS
ZWdpc3RlcklEIHZuLCBGUFJlZ2lzdGVySUQgdm0pCisgICAgeworICAgICAgICBDSEVDS19EQVRB
U0laRSgpOworICAgICAgICBpbnNuKGZsb2F0aW5nUG9pbnRDb21wYXJlKERBVEFTSVpFLCB2bSwg
dm4sIEZQQ21wT3BfRkNNUCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4K
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmNtcF8wKEZQUmVnaXN0ZXJJRCB2bikKKyAgICB7Cisg
ICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24oZmxvYXRpbmdQb2ludENvbXBh
cmUoREFUQVNJWkUsIHN0YXRpY19jYXN0PEZQUmVnaXN0ZXJJRD4oMCksIHZuLCBGUENtcE9wX0ZD
TVAwKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBmY21wZShGUFJlZ2lzdGVySUQgdm4sIEZQUmVnaXN0ZXJJRCB2bSkKKyAgICB7
CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24oZmxvYXRpbmdQb2ludENv
bXBhcmUoREFUQVNJWkUsIHZtLCB2biwgRlBDbXBPcF9GQ01QRSkpOworICAgIH0KKworICAgIHRl
bXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmNtcGVfMChGUFJl
Z2lzdGVySUQgdm4pCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgpOworICAgICAgICBp
bnNuKGZsb2F0aW5nUG9pbnRDb21wYXJlKERBVEFTSVpFLCBzdGF0aWNfY2FzdDxGUFJlZ2lzdGVy
SUQ+KDApLCB2biwgRlBDbXBPcF9GQ01QRTApKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQg
ZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZjc2VsKEZQUmVnaXN0ZXJJRCB2ZCwg
RlBSZWdpc3RlcklEIHZuLCBGUFJlZ2lzdGVySUQgdm0sIENvbmRpdGlvbiBjb25kKQorICAgIHsK
KyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihmbG9hdGluZ1BvaW50Q29u
ZGl0aW9uYWxTZWxlY3QoREFUQVNJWkUsIHZtLCBjb25kLCB2biwgdmQpKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTxpbnQgZHN0c2l6ZSwgaW50IHNyY3NpemU+CisgICAgQUxXQVlTX0lOTElORSB2
b2lkIGZjdnQoRlBSZWdpc3RlcklEIHZkLCBGUFJlZ2lzdGVySUQgdm4pCisgICAgeworICAgICAg
ICBBU1NFUlQoZHN0c2l6ZSA9PSAxNiB8fCBkc3RzaXplID09IDMyIHx8IGRzdHNpemUgPT0gNjQp
OworICAgICAgICBBU1NFUlQoc3Jjc2l6ZSA9PSAxNiB8fCBzcmNzaXplID09IDMyIHx8IHNyY3Np
emUgPT0gNjQpOworICAgICAgICBBU1NFUlQoZHN0c2l6ZSAhPSBzcmNzaXplKTsKKyAgICAgICAg
RGF0YXNpemUgdHlwZSA9IChzcmNzaXplID09IDY0KSA/IERhdGFzaXplXzY0IDogKHNyY3NpemUg
PT0gMzIpID8gRGF0YXNpemVfMzIgOiBEYXRhc2l6ZV8xNjsKKyAgICAgICAgRlBEYXRhT3AxU291
cmNlIG9wY29kZSA9IChkc3RzaXplID09IDY0KSA/IEZQRGF0YU9wX0ZDVlRfdG9Eb3VibGUgOiAo
ZHN0c2l6ZSA9PSAzMikgPyBGUERhdGFPcF9GQ1ZUX3RvU2luZ2xlIDogRlBEYXRhT3BfRkNWVF90
b0hhbGY7CisgICAgICAgIGluc24oZmxvYXRpbmdQb2ludERhdGFQcm9jZXNzaW5nMVNvdXJjZSh0
eXBlLCBvcGNvZGUsIHZuLCB2ZCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkc3RzaXpl
LCBpbnQgc3Jjc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmN2dGFzKFJlZ2lzdGVySUQg
cmQsIEZQUmVnaXN0ZXJJRCB2bikKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFX09GKGRz
dHNpemUpOworICAgICAgICBDSEVDS19EQVRBU0laRV9PRihzcmNzaXplKTsKKyAgICAgICAgaW5z
bihmbG9hdGluZ1BvaW50SW50ZWdlckNvbnZlcnNpb25zKERBVEFTSVpFX09GKGRzdHNpemUpLCBE
QVRBU0laRV9PRihzcmNzaXplKSwgRlBJbnRDb252T3BfRkNWVEFTLCB2biwgcmQpKTsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZTxpbnQgZHN0c2l6ZSwgaW50IHNyY3NpemU+CisgICAgQUxXQVlTX0lO
TElORSB2b2lkIGZjdnRhdShSZWdpc3RlcklEIHJkLCBGUFJlZ2lzdGVySUQgdm4pCisgICAgewor
ICAgICAgICBDSEVDS19EQVRBU0laRV9PRihkc3RzaXplKTsKKyAgICAgICAgQ0hFQ0tfREFUQVNJ
WkVfT0Yoc3Jjc2l6ZSk7CisgICAgICAgIGluc24oZmxvYXRpbmdQb2ludEludGVnZXJDb252ZXJz
aW9ucyhEQVRBU0laRV9PRihkc3RzaXplKSwgREFUQVNJWkVfT0Yoc3Jjc2l6ZSksIEZQSW50Q29u
dk9wX0ZDVlRBVSwgdm4sIHJkKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRzdHNpemUs
IGludCBzcmNzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmY3Z0bXMoUmVnaXN0ZXJJRCBy
ZCwgRlBSZWdpc3RlcklEIHZuKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkVfT0YoZHN0
c2l6ZSk7CisgICAgICAgIENIRUNLX0RBVEFTSVpFX09GKHNyY3NpemUpOworICAgICAgICBpbnNu
KGZsb2F0aW5nUG9pbnRJbnRlZ2VyQ29udmVyc2lvbnMoREFUQVNJWkVfT0YoZHN0c2l6ZSksIERB
VEFTSVpFX09GKHNyY3NpemUpLCBGUEludENvbnZPcF9GQ1ZUTVMsIHZuLCByZCkpOworICAgIH0K
KworICAgIHRlbXBsYXRlPGludCBkc3RzaXplLCBpbnQgc3Jjc2l6ZT4KKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgZmN2dG11KFJlZ2lzdGVySUQgcmQsIEZQUmVnaXN0ZXJJRCB2bikKKyAgICB7Cisg
ICAgICAgIENIRUNLX0RBVEFTSVpFX09GKGRzdHNpemUpOworICAgICAgICBDSEVDS19EQVRBU0la
RV9PRihzcmNzaXplKTsKKyAgICAgICAgaW5zbihmbG9hdGluZ1BvaW50SW50ZWdlckNvbnZlcnNp
b25zKERBVEFTSVpFX09GKGRzdHNpemUpLCBEQVRBU0laRV9PRihzcmNzaXplKSwgRlBJbnRDb252
T3BfRkNWVE1VLCB2biwgcmQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZHN0c2l6ZSwg
aW50IHNyY3NpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZjdnRucyhSZWdpc3RlcklEIHJk
LCBGUFJlZ2lzdGVySUQgdm4pCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0laRV9PRihkc3Rz
aXplKTsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkVfT0Yoc3Jjc2l6ZSk7CisgICAgICAgIGluc24o
ZmxvYXRpbmdQb2ludEludGVnZXJDb252ZXJzaW9ucyhEQVRBU0laRV9PRihkc3RzaXplKSwgREFU
QVNJWkVfT0Yoc3Jjc2l6ZSksIEZQSW50Q29udk9wX0ZDVlROUywgdm4sIHJkKSk7CisgICAgfQor
CisgICAgdGVtcGxhdGU8aW50IGRzdHNpemUsIGludCBzcmNzaXplPgorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBmY3Z0bnUoUmVnaXN0ZXJJRCByZCwgRlBSZWdpc3RlcklEIHZuKQorICAgIHsKKyAg
ICAgICAgQ0hFQ0tfREFUQVNJWkVfT0YoZHN0c2l6ZSk7CisgICAgICAgIENIRUNLX0RBVEFTSVpF
X09GKHNyY3NpemUpOworICAgICAgICBpbnNuKGZsb2F0aW5nUG9pbnRJbnRlZ2VyQ29udmVyc2lv
bnMoREFUQVNJWkVfT0YoZHN0c2l6ZSksIERBVEFTSVpFX09GKHNyY3NpemUpLCBGUEludENvbnZP
cF9GQ1ZUTlUsIHZuLCByZCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkc3RzaXplLCBp
bnQgc3Jjc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmN2dHBzKFJlZ2lzdGVySUQgcmQs
IEZQUmVnaXN0ZXJJRCB2bikKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFX09GKGRzdHNp
emUpOworICAgICAgICBDSEVDS19EQVRBU0laRV9PRihzcmNzaXplKTsKKyAgICAgICAgaW5zbihm
bG9hdGluZ1BvaW50SW50ZWdlckNvbnZlcnNpb25zKERBVEFTSVpFX09GKGRzdHNpemUpLCBEQVRB
U0laRV9PRihzcmNzaXplKSwgRlBJbnRDb252T3BfRkNWVFBTLCB2biwgcmQpKTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZTxpbnQgZHN0c2l6ZSwgaW50IHNyY3NpemU+CisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIGZjdnRwdShSZWdpc3RlcklEIHJkLCBGUFJlZ2lzdGVySUQgdm4pCisgICAgeworICAg
ICAgICBDSEVDS19EQVRBU0laRV9PRihkc3RzaXplKTsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkVf
T0Yoc3Jjc2l6ZSk7CisgICAgICAgIGluc24oZmxvYXRpbmdQb2ludEludGVnZXJDb252ZXJzaW9u
cyhEQVRBU0laRV9PRihkc3RzaXplKSwgREFUQVNJWkVfT0Yoc3Jjc2l6ZSksIEZQSW50Q29udk9w
X0ZDVlRQVSwgdm4sIHJkKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRzdHNpemUsIGlu
dCBzcmNzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmY3Z0enMoUmVnaXN0ZXJJRCByZCwg
RlBSZWdpc3RlcklEIHZuKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkVfT0YoZHN0c2l6
ZSk7CisgICAgICAgIENIRUNLX0RBVEFTSVpFX09GKHNyY3NpemUpOworICAgICAgICBpbnNuKGZs
b2F0aW5nUG9pbnRJbnRlZ2VyQ29udmVyc2lvbnMoREFUQVNJWkVfT0YoZHN0c2l6ZSksIERBVEFT
SVpFX09GKHNyY3NpemUpLCBGUEludENvbnZPcF9GQ1ZUWlMsIHZuLCByZCkpOworICAgIH0KKwor
ICAgIHRlbXBsYXRlPGludCBkc3RzaXplLCBpbnQgc3Jjc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgZmN2dHp1KFJlZ2lzdGVySUQgcmQsIEZQUmVnaXN0ZXJJRCB2bikKKyAgICB7CisgICAg
ICAgIENIRUNLX0RBVEFTSVpFX09GKGRzdHNpemUpOworICAgICAgICBDSEVDS19EQVRBU0laRV9P
RihzcmNzaXplKTsKKyAgICAgICAgaW5zbihmbG9hdGluZ1BvaW50SW50ZWdlckNvbnZlcnNpb25z
KERBVEFTSVpFX09GKGRzdHNpemUpLCBEQVRBU0laRV9PRihzcmNzaXplKSwgRlBJbnRDb252T3Bf
RkNWVFpVLCB2biwgcmQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+Cisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIGZkaXYoRlBSZWdpc3RlcklEIHZkLCBGUFJlZ2lzdGVySUQg
dm4sIEZQUmVnaXN0ZXJJRCB2bSkKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7Cisg
ICAgICAgIGluc24oZmxvYXRpbmdQb2ludERhdGFQcm9jZXNzaW5nMlNvdXJjZShEQVRBU0laRSwg
dm0sIEZQRGF0YU9wX0ZESVYsIHZuLCB2ZCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBk
YXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZm1hZGQoRlBSZWdpc3RlcklEIHZkLCBG
UFJlZ2lzdGVySUQgdm4sIEZQUmVnaXN0ZXJJRCB2bSwgRlBSZWdpc3RlcklEIHZhKQorICAgIHsK
KyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihmbG9hdGluZ1BvaW50RGF0
YVByb2Nlc3NpbmczU291cmNlKERBVEFTSVpFLCBmYWxzZSwgdm0sIEFkZE9wX0FERCwgdmEsIHZu
LCB2ZCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgZm1heChGUFJlZ2lzdGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2biwgRlBSZWdp
c3RlcklEIHZtKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5z
bihmbG9hdGluZ1BvaW50RGF0YVByb2Nlc3NpbmcyU291cmNlKERBVEFTSVpFLCB2bSwgRlBEYXRh
T3BfRk1BWCwgdm4sIHZkKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmbWF4bm0oRlBSZWdpc3RlcklEIHZkLCBGUFJlZ2lzdGVy
SUQgdm4sIEZQUmVnaXN0ZXJJRCB2bSkKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7
CisgICAgICAgIGluc24oZmxvYXRpbmdQb2ludERhdGFQcm9jZXNzaW5nMlNvdXJjZShEQVRBU0la
RSwgdm0sIEZQRGF0YU9wX0ZNQVhOTSwgdm4sIHZkKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8
aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmbWluKEZQUmVnaXN0ZXJJRCB2
ZCwgRlBSZWdpc3RlcklEIHZuLCBGUFJlZ2lzdGVySUQgdm0pCisgICAgeworICAgICAgICBDSEVD
S19EQVRBU0laRSgpOworICAgICAgICBpbnNuKGZsb2F0aW5nUG9pbnREYXRhUHJvY2Vzc2luZzJT
b3VyY2UoREFUQVNJWkUsIHZtLCBGUERhdGFPcF9GTUlOLCB2biwgdmQpKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZtaW5ubShG
UFJlZ2lzdGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2biwgRlBSZWdpc3RlcklEIHZtKQorICAgIHsK
KyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihmbG9hdGluZ1BvaW50RGF0
YVByb2Nlc3NpbmcyU291cmNlKERBVEFTSVpFLCB2bSwgRlBEYXRhT3BfRk1JTk5NLCB2biwgdmQp
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIGZtb3YoRlBSZWdpc3RlcklEIHZkLCBGUFJlZ2lzdGVySUQgdm4pCisgICAgeworICAg
ICAgICBDSEVDS19EQVRBU0laRSgpOworICAgICAgICBpbnNuKGZsb2F0aW5nUG9pbnREYXRhUHJv
Y2Vzc2luZzFTb3VyY2UoREFUQVNJWkUsIEZQRGF0YU9wX0ZNT1YsIHZuLCB2ZCkpOworICAgIH0K
KworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZm1v
dihGUFJlZ2lzdGVySUQgdmQsIFJlZ2lzdGVySUQgcm4pCisgICAgeworICAgICAgICBDSEVDS19E
QVRBU0laRSgpOworICAgICAgICBpbnNuKGZsb2F0aW5nUG9pbnRJbnRlZ2VyQ29udmVyc2lvbnMo
REFUQVNJWkUsIERBVEFTSVpFLCBGUEludENvbnZPcF9GTU9WX1h0b1EsIHJuLCB2ZCkpOworICAg
IH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
Zm1vdihSZWdpc3RlcklEIHJkLCBGUFJlZ2lzdGVySUQgdm4pCisgICAgeworICAgICAgICBDSEVD
S19EQVRBU0laRSgpOworICAgICAgICBpbnNuKGZsb2F0aW5nUG9pbnRJbnRlZ2VyQ29udmVyc2lv
bnMoREFUQVNJWkUsIERBVEFTSVpFLCBGUEludENvbnZPcF9GTU9WX1F0b1gsIHZuLCByZCkpOwor
ICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgZm1vdihGUFJlZ2lzdGVySUQgdmQsIGRvdWJsZSBpbW0pCisgICAgeworICAgICAgICBDSEVD
S19EQVRBU0laRSgpOworICAgICAgICBpbnNuKGZsb2F0aW5nUG9pbnRJbW1lZGlhdGUoREFUQVNJ
WkUsIGVuY29kZUZQSW1tKGltbSksIHZkKSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIGZtb3ZfdG9wKEZQUmVnaXN0ZXJJRCB2ZCwgUmVnaXN0ZXJJRCBybikKKyAgICB7CisgICAg
ICAgIGluc24oZmxvYXRpbmdQb2ludEludGVnZXJDb252ZXJzaW9ucyhEYXRhc2l6ZV82NCwgRGF0
YXNpemVfNjQsIEZQSW50Q29udk9wX0ZNT1ZfWHRvUV90b3AsIHJuLCB2ZCkpOworICAgIH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmbW92X3RvcChSZWdpc3RlcklEIHJkLCBGUFJlZ2lzdGVy
SUQgdm4pCisgICAgeworICAgICAgICBpbnNuKGZsb2F0aW5nUG9pbnRJbnRlZ2VyQ29udmVyc2lv
bnMoRGF0YXNpemVfNjQsIERhdGFzaXplXzY0LCBGUEludENvbnZPcF9GTU9WX1F0b1hfdG9wLCB2
biwgcmQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlT
X0lOTElORSB2b2lkIGZtc3ViKEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuLCBGUFJl
Z2lzdGVySUQgdm0sIEZQUmVnaXN0ZXJJRCB2YSkKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFT
SVpFKCk7CisgICAgICAgIGluc24oZmxvYXRpbmdQb2ludERhdGFQcm9jZXNzaW5nM1NvdXJjZShE
QVRBU0laRSwgZmFsc2UsIHZtLCBBZGRPcF9TVUIsIHZhLCB2biwgdmQpKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZtdWwoRlBS
ZWdpc3RlcklEIHZkLCBGUFJlZ2lzdGVySUQgdm4sIEZQUmVnaXN0ZXJJRCB2bSkKKyAgICB7Cisg
ICAgICAgIENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24oZmxvYXRpbmdQb2ludERhdGFQ
cm9jZXNzaW5nMlNvdXJjZShEQVRBU0laRSwgdm0sIEZQRGF0YU9wX0ZNVUwsIHZuLCB2ZCkpOwor
ICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgZm5lZyhGUFJlZ2lzdGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2bikKKyAgICB7CisgICAgICAg
IENIRUNLX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24oZmxvYXRpbmdQb2ludERhdGFQcm9jZXNz
aW5nMVNvdXJjZShEQVRBU0laRSwgRlBEYXRhT3BfRk5FRywgdm4sIHZkKSk7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmbm1hZGQo
RlBSZWdpc3RlcklEIHZkLCBGUFJlZ2lzdGVySUQgdm4sIEZQUmVnaXN0ZXJJRCB2bSwgRlBSZWdp
c3RlcklEIHZhKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5z
bihmbG9hdGluZ1BvaW50RGF0YVByb2Nlc3NpbmczU291cmNlKERBVEFTSVpFLCB0cnVlLCB2bSwg
QWRkT3BfQURELCB2YSwgdm4sIHZkKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFz
aXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmbm1zdWIoRlBSZWdpc3RlcklEIHZkLCBGUFJl
Z2lzdGVySUQgdm4sIEZQUmVnaXN0ZXJJRCB2bSwgRlBSZWdpc3RlcklEIHZhKQorICAgIHsKKyAg
ICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihmbG9hdGluZ1BvaW50RGF0YVBy
b2Nlc3NpbmczU291cmNlKERBVEFTSVpFLCB0cnVlLCB2bSwgQWRkT3BfU1VCLCB2YSwgdm4sIHZk
KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBmbm11bChGUFJlZ2lzdGVySUQgdmQsIEZQUmVnaXN0ZXJJRCB2biwgRlBSZWdpc3Rl
cklEIHZtKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihm
bG9hdGluZ1BvaW50RGF0YVByb2Nlc3NpbmcyU291cmNlKERBVEFTSVpFLCB2bSwgRlBEYXRhT3Bf
Rk5NVUwsIHZuLCB2ZCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgZnJpbnRhKEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklE
IHZuKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihmbG9h
dGluZ1BvaW50RGF0YVByb2Nlc3NpbmcxU291cmNlKERBVEFTSVpFLCBGUERhdGFPcF9GUklOVEEs
IHZuLCB2ZCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgZnJpbnRpKEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuKQor
ICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihmbG9hdGluZ1Bv
aW50RGF0YVByb2Nlc3NpbmcxU291cmNlKERBVEFTSVpFLCBGUERhdGFPcF9GUklOVEksIHZuLCB2
ZCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgZnJpbnRtKEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuKQorICAgIHsK
KyAgICAgICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihmbG9hdGluZ1BvaW50RGF0
YVByb2Nlc3NpbmcxU291cmNlKERBVEFTSVpFLCBGUERhdGFPcF9GUklOVE0sIHZuLCB2ZCkpOwor
ICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgZnJpbnRuKEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuKQorICAgIHsKKyAgICAg
ICAgQ0hFQ0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihmbG9hdGluZ1BvaW50RGF0YVByb2Nl
c3NpbmcxU291cmNlKERBVEFTSVpFLCBGUERhdGFPcF9GUklOVE4sIHZuLCB2ZCkpOworICAgIH0K
KworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZnJp
bnRwKEZQUmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuKQorICAgIHsKKyAgICAgICAgQ0hF
Q0tfREFUQVNJWkUoKTsKKyAgICAgICAgaW5zbihmbG9hdGluZ1BvaW50RGF0YVByb2Nlc3Npbmcx
U291cmNlKERBVEFTSVpFLCBGUERhdGFPcF9GUklOVFAsIHZuLCB2ZCkpOworICAgIH0KKworICAg
IHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZnJpbnR4KEZQ
UmVnaXN0ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFU
QVNJWkUoKTsKKyAgICAgICAgaW5zbihmbG9hdGluZ1BvaW50RGF0YVByb2Nlc3NpbmcxU291cmNl
KERBVEFTSVpFLCBGUERhdGFPcF9GUklOVFgsIHZuLCB2ZCkpOworICAgIH0KKworICAgIHRlbXBs
YXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZnJpbnR6KEZQUmVnaXN0
ZXJJRCB2ZCwgRlBSZWdpc3RlcklEIHZuKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUo
KTsKKyAgICAgICAgaW5zbihmbG9hdGluZ1BvaW50RGF0YVByb2Nlc3NpbmcxU291cmNlKERBVEFT
SVpFLCBGUERhdGFPcF9GUklOVFosIHZuLCB2ZCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPGlu
dCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZnNxcnQoRlBSZWdpc3RlcklEIHZk
LCBGUFJlZ2lzdGVySUQgdm4pCisgICAgeworICAgICAgICBDSEVDS19EQVRBU0laRSgpOworICAg
ICAgICBpbnNuKGZsb2F0aW5nUG9pbnREYXRhUHJvY2Vzc2luZzFTb3VyY2UoREFUQVNJWkUsIEZQ
RGF0YU9wX0ZTUVJULCB2biwgdmQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNp
emU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZzdWIoRlBSZWdpc3RlcklEIHZkLCBGUFJlZ2lz
dGVySUQgdm4sIEZQUmVnaXN0ZXJJRCB2bSkKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpF
KCk7CisgICAgICAgIGluc24oZmxvYXRpbmdQb2ludERhdGFQcm9jZXNzaW5nMlNvdXJjZShEQVRB
U0laRSwgdm0sIEZQRGF0YU9wX0ZTVUIsIHZuLCB2ZCkpOworICAgIH0KKworICAgIHRlbXBsYXRl
PGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbGRyKEZQUmVnaXN0ZXJJRCBy
dCwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBybSkKKyAgICB7CisgICAgICAgIGxkcjxkYXRh
c2l6ZT4ocnQsIHJuLCBybSwgVVhUWCwgMCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRh
dGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsZHIoRlBSZWdpc3RlcklEIHJ0LCBSZWdp
c3RlcklEIHJuLCBSZWdpc3RlcklEIHJtLCBFeHRlbmRUeXBlIGV4dGVuZCwgaW50IGFtb3VudCkK
KyAgICB7CisgICAgICAgIENIRUNLX0ZQX01FTU9QX0RBVEFTSVpFKCk7CisgICAgICAgIGluc24o
bG9hZFN0b3JlUmVnaXN0ZXJSZWdpc3Rlck9mZnNldChNRU1PUFNJWkUsIHRydWUsIGRhdGFzaXpl
ID09IDEyOCA/IE1lbU9wX0xPQURfVjEyOCA6IE1lbU9wX0xPQUQsIHJtLCBleHRlbmQsIGVuY29k
ZVNoaWZ0QW1vdW50PGRhdGFzaXplPihhbW91bnQpLCBybiwgcnQpKTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxkcihGUFJlZ2lz
dGVySUQgcnQsIFJlZ2lzdGVySUQgcm4sIHVuc2lnbmVkIHBpbW0pCisgICAgeworICAgICAgICBD
SEVDS19GUF9NRU1PUF9EQVRBU0laRSgpOworICAgICAgICBpbnNuKGxvYWRTdG9yZVJlZ2lzdGVy
VW5zaWduZWRJbW1lZGlhdGUoTUVNT1BTSVpFLCB0cnVlLCBkYXRhc2l6ZSA9PSAxMjggPyBNZW1P
cF9MT0FEX1YxMjggOiBNZW1PcF9MT0FELCBlbmNvZGVQb3NpdGl2ZUltbWVkaWF0ZTxkYXRhc2l6
ZT4ocGltbSksIHJuLCBydCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4K
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbGRyKEZQUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBy
biwgUG9zdEluZGV4IHNpbW0pCisgICAgeworICAgICAgICBDSEVDS19GUF9NRU1PUF9EQVRBU0la
RSgpOworICAgICAgICBpbnNuKGxvYWRTdG9yZVJlZ2lzdGVyUG9zdEluZGV4KE1FTU9QU0laRSwg
dHJ1ZSwgZGF0YXNpemUgPT0gMTI4ID8gTWVtT3BfTE9BRF9WMTI4IDogTWVtT3BfTE9BRCwgc2lt
bSwgcm4sIHJ0KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBsZHIoRlBSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBQcmVJ
bmRleCBzaW1tKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfRlBfTUVNT1BfREFUQVNJWkUoKTsKKyAg
ICAgICAgaW5zbihsb2FkU3RvcmVSZWdpc3RlclByZUluZGV4KE1FTU9QU0laRSwgdHJ1ZSwgZGF0
YXNpemUgPT0gMTI4ID8gTWVtT3BfTE9BRF9WMTI4IDogTWVtT3BfTE9BRCwgc2ltbSwgcm4sIHJ0
KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBsZHJfbGl0ZXJhbChGUFJlZ2lzdGVySUQgcnQsIGludCBvZmZzZXQgPSAwKQorICAg
IHsKKyAgICAgICAgQ0hFQ0tfRlBfTUVNT1BfREFUQVNJWkUoKTsKKyAgICAgICAgQVNTRVJUKGRh
dGFzaXplID49IDMyKTsKKyAgICAgICAgQVNTRVJUKCEob2Zmc2V0ICYgMykpOworICAgICAgICBp
bnNuKGxvYWRSZWdpc3RlckxpdGVyYWwoZGF0YXNpemUgPT0gMTI4ID8gTGRyTGl0ZXJhbE9wXzEy
OEJJVCA6IGRhdGFzaXplID09IDY0ID8gTGRyTGl0ZXJhbE9wXzY0QklUIDogTGRyTGl0ZXJhbE9w
XzMyQklULCB0cnVlLCBvZmZzZXQgPj4gMiwgcnQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxp
bnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxkdXIoRlBSZWdpc3RlcklEIHJ0
LCBSZWdpc3RlcklEIHJuLCBpbnQgc2ltbSkKKyAgICB7CisgICAgICAgIENIRUNLX0ZQX01FTU9Q
X0RBVEFTSVpFKCk7CisgICAgICAgIGluc24obG9hZFN0b3JlUmVnaXN0ZXJVbnNjYWxlZEltbWVk
aWF0ZShNRU1PUFNJWkUsIHRydWUsIGRhdGFzaXplID09IDEyOCA/IE1lbU9wX0xPQURfVjEyOCA6
IE1lbU9wX0xPQUQsIHNpbW0sIHJuLCBydCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBk
c3RzaXplLCBpbnQgc3Jjc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2N2dGYoRlBSZWdp
c3RlcklEIHZkLCBSZWdpc3RlcklEIHJuKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkVf
T0YoZHN0c2l6ZSk7CisgICAgICAgIENIRUNLX0RBVEFTSVpFX09GKHNyY3NpemUpOworICAgICAg
ICBpbnNuKGZsb2F0aW5nUG9pbnRJbnRlZ2VyQ29udmVyc2lvbnMoREFUQVNJWkVfT0Yoc3Jjc2l6
ZSksIERBVEFTSVpFX09GKGRzdHNpemUpLCBGUEludENvbnZPcF9TQ1ZURiwgcm4sIHZkKSk7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzdHIoRlBSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtKQorICAg
IHsKKyAgICAgICAgc3RyPGRhdGFzaXplPihydCwgcm4sIHJtLCBVWFRYLCAwKTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0cihG
UFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0sIEV4dGVuZFR5cGUg
ZXh0ZW5kLCBpbnQgYW1vdW50KQorICAgIHsKKyAgICAgICAgQ0hFQ0tfRlBfTUVNT1BfREFUQVNJ
WkUoKTsKKyAgICAgICAgaW5zbihsb2FkU3RvcmVSZWdpc3RlclJlZ2lzdGVyT2Zmc2V0KE1FTU9Q
U0laRSwgdHJ1ZSwgZGF0YXNpemUgPT0gMTI4ID8gTWVtT3BfU1RPUkVfVjEyOCA6IE1lbU9wX1NU
T1JFLCBybSwgZXh0ZW5kLCBlbmNvZGVTaGlmdEFtb3VudDxkYXRhc2l6ZT4oYW1vdW50KSwgcm4s
IHJ0KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzdHIoRlBSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCB1bnNpZ25lZCBw
aW1tKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfRlBfTUVNT1BfREFUQVNJWkUoKTsKKyAgICAgICAg
aW5zbihsb2FkU3RvcmVSZWdpc3RlclVuc2lnbmVkSW1tZWRpYXRlKE1FTU9QU0laRSwgdHJ1ZSwg
ZGF0YXNpemUgPT0gMTI4ID8gTWVtT3BfU1RPUkVfVjEyOCA6IE1lbU9wX1NUT1JFLCBlbmNvZGVQ
b3NpdGl2ZUltbWVkaWF0ZTxkYXRhc2l6ZT4ocGltbSksIHJuLCBydCkpOworICAgIH0KKworICAg
IHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RyKEZQUmVn
aXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgUG9zdEluZGV4IHNpbW0pCisgICAgeworICAgICAg
ICBDSEVDS19GUF9NRU1PUF9EQVRBU0laRSgpOworICAgICAgICBpbnNuKGxvYWRTdG9yZVJlZ2lz
dGVyUG9zdEluZGV4KE1FTU9QU0laRSwgdHJ1ZSwgZGF0YXNpemUgPT0gMTI4ID8gTWVtT3BfU1RP
UkVfVjEyOCA6IE1lbU9wX1NUT1JFLCBzaW1tLCBybiwgcnQpKTsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0cihGUFJlZ2lzdGVy
SUQgcnQsIFJlZ2lzdGVySUQgcm4sIFByZUluZGV4IHNpbW0pCisgICAgeworICAgICAgICBDSEVD
S19GUF9NRU1PUF9EQVRBU0laRSgpOworICAgICAgICBpbnNuKGxvYWRTdG9yZVJlZ2lzdGVyUHJl
SW5kZXgoTUVNT1BTSVpFLCB0cnVlLCBkYXRhc2l6ZSA9PSAxMjggPyBNZW1PcF9TVE9SRV9WMTI4
IDogTWVtT3BfU1RPUkUsIHNpbW0sIHJuLCBydCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPGlu
dCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3R1cihGUFJlZ2lzdGVySUQgcnQs
IFJlZ2lzdGVySUQgcm4sIGludCBzaW1tKQorICAgIHsKKyAgICAgICAgQ0hFQ0tfREFUQVNJWkUo
KTsKKyAgICAgICAgaW5zbihsb2FkU3RvcmVSZWdpc3RlclVuc2NhbGVkSW1tZWRpYXRlKE1FTU9Q
U0laRSwgdHJ1ZSwgZGF0YXNpemUgPT0gMTI4ID8gTWVtT3BfU1RPUkVfVjEyOCA6IE1lbU9wX1NU
T1JFLCBzaW1tLCBybiwgcnQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZHN0c2l6ZSwg
aW50IHNyY3NpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHVjdnRmKEZQUmVnaXN0ZXJJRCB2
ZCwgUmVnaXN0ZXJJRCBybikKKyAgICB7CisgICAgICAgIENIRUNLX0RBVEFTSVpFX09GKGRzdHNp
emUpOworICAgICAgICBDSEVDS19EQVRBU0laRV9PRihzcmNzaXplKTsKKyAgICAgICAgaW5zbihm
bG9hdGluZ1BvaW50SW50ZWdlckNvbnZlcnNpb25zKERBVEFTSVpFX09GKHNyY3NpemUpLCBEQVRB
U0laRV9PRihkc3RzaXplKSwgRlBJbnRDb252T3BfVUNWVEYsIHJuLCB2ZCkpOworICAgIH0KKwor
ICAgIC8vIEFkbWluIG1ldGhvZHM6CisKKyAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbElnbm9yaW5n
V2F0Y2hwb2ludHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYnVmZmVyLmxhYmVsKCk7Cisg
ICAgfQorCisgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWxGb3JXYXRjaHBvaW50KCkKKyAgICB7Cisg
ICAgICAgIEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IG1fYnVmZmVyLmxhYmVsKCk7CisgICAgICAg
IGlmIChzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdC5tX29mZnNldCkgIT0gbV9pbmRleE9mTGFzdFdh
dGNocG9pbnQpCisgICAgICAgICAgICByZXN1bHQgPSBsYWJlbCgpOworICAgICAgICBtX2luZGV4
T2ZMYXN0V2F0Y2hwb2ludCA9IHJlc3VsdC5tX29mZnNldDsKKyAgICAgICAgbV9pbmRleE9mVGFp
bE9mTGFzdFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQgKyBtYXhKdW1wUmVwbGFjZW1lbnRT
aXplKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgQXNzZW1ibGVyTGFi
ZWwgbGFiZWwoKQorICAgIHsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgcmVzdWx0ID0gbV9idWZm
ZXIubGFiZWwoKTsKKyAgICAgICAgd2hpbGUgKFVOTElLRUxZKHN0YXRpY19jYXN0PGludD4ocmVz
dWx0Lm1fb2Zmc2V0KSA8IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50KSkgeworICAgICAg
ICAgICAgbm9wKCk7CisgICAgICAgICAgICByZXN1bHQgPSBtX2J1ZmZlci5sYWJlbCgpOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgQXNzZW1ibGVyTGFi
ZWwgYWxpZ24oaW50IGFsaWdubWVudCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghKGFsaWdubWVu
dCAmIDMpKTsKKyAgICAgICAgd2hpbGUgKCFtX2J1ZmZlci5pc0FsaWduZWQoYWxpZ25tZW50KSkK
KyAgICAgICAgICAgIGJyaygwKTsKKyAgICAgICAgcmV0dXJuIGxhYmVsKCk7CisgICAgfQorICAg
IAorICAgIHN0YXRpYyB2b2lkKiBnZXRSZWxvY2F0ZWRBZGRyZXNzKHZvaWQqIGNvZGUsIEFzc2Vt
YmxlckxhYmVsIGxhYmVsKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGxhYmVsLmlzU2V0KCkpOwor
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVpbnRlcnByZXRfY2FzdDxw
dHJkaWZmX3Q+KGNvZGUpICsgbGFiZWwubV9vZmZzZXQpOworICAgIH0KKyAgICAKKyAgICBzdGF0
aWMgaW50IGdldERpZmZlcmVuY2VCZXR3ZWVuTGFiZWxzKEFzc2VtYmxlckxhYmVsIGEsIEFzc2Vt
YmxlckxhYmVsIGIpCisgICAgeworICAgICAgICByZXR1cm4gYi5tX29mZnNldCAtIGEubV9vZmZz
ZXQ7CisgICAgfQorCisgICAgaW50IGV4ZWN1dGFibGVPZmZzZXRGb3IoaW50IGxvY2F0aW9uKQor
ICAgIHsKKyAgICAgICAgaWYgKCFsb2NhdGlvbikKKyAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdCo+KG1fYnVmZmVyLmRhdGEoKSlbbG9jYXRp
b24gLyBzaXplb2YoaW50MzJfdCkgLSAxXTsKKyAgICB9CisgICAgCisgICAgUGFzc1JlZlB0cjxF
eGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBleGVjdXRhYmxlQ29weShWTSYgdm0sIHZvaWQqIG93bmVy
VUlELCBKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCisgICAgeworICAgICAgICByZXR1cm4g
bV9idWZmZXIuZXhlY3V0YWJsZUNvcHkodm0sIG93bmVyVUlELCBlZmZvcnQpOworICAgIH0KKwor
ICAgIHZvaWQqIHVubGlua2VkQ29kZSgpIHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQorICAg
IHNpemVfdCBjb2RlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmNvZGVTaXplKCk7IH0K
KworICAgIHN0YXRpYyB1bnNpZ25lZCBnZXRDYWxsUmV0dXJuT2Zmc2V0KEFzc2VtYmxlckxhYmVs
IGNhbGwpCisgICAgeworICAgICAgICBBU1NFUlQoY2FsbC5pc1NldCgpKTsKKyAgICAgICAgcmV0
dXJuIGNhbGwubV9vZmZzZXQ7CisgICAgfQorCisgICAgLy8gTGlua2luZyAmIHBhdGNoaW5nOgor
ICAgIC8vCisgICAgLy8gJ2xpbmsnIGFuZCAncGF0Y2gnIG1ldGhvZHMgYXJlIGZvciB1c2Ugb24g
dW5wcm90ZWN0ZWQgY29kZSAtIHN1Y2ggYXMgdGhlIGNvZGUKKyAgICAvLyB3aXRoaW4gdGhlIEFz
c2VtYmxlckJ1ZmZlciwgYW5kIGNvZGUgYmVpbmcgcGF0Y2hlZCBieSB0aGUgcGF0Y2ggYnVmZmVy
LiAgT25jZQorICAgIC8vIGNvZGUgaGFzIGJlZW4gZmluYWxpemVkIGl0IGlzIChwbGF0Zm9ybSBz
dXBwb3J0IHBlcm1pdHRpbmcpIHdpdGhpbiBhIG5vbi0KKyAgICAvLyB3cml0YWJsZSByZWdpb24g
b2YgbWVtb3J5OyB0byBtb2RpZnkgdGhlIGNvZGUgaW4gYW4gZXhlY3V0ZS1vbmx5IGV4ZWN1YWJs
ZQorICAgIC8vIHBvb2wgdGhlICdyZXBhdGNoJyBhbmQgJ3JlbGluaycgbWV0aG9kcyBzaG91bGQg
YmUgdXNlZC4KKworICAgIHZvaWQgbGlua0p1bXAoQXNzZW1ibGVyTGFiZWwgZnJvbSwgQXNzZW1i
bGVyTGFiZWwgdG8sIEp1bXBUeXBlIHR5cGUsIENvbmRpdGlvbiBjb25kaXRpb24pCisgICAgewor
ICAgICAgICBBU1NFUlQodG8uaXNTZXQoKSk7CisgICAgICAgIEFTU0VSVChmcm9tLmlzU2V0KCkp
OworICAgICAgICBtX2p1bXBzVG9MaW5rLmFwcGVuZChMaW5rUmVjb3JkKGZyb20ubV9vZmZzZXQs
IHRvLm1fb2Zmc2V0LCB0eXBlLCBjb25kaXRpb24pKTsKKyAgICB9CisKKyAgICB2b2lkIGxpbmtK
dW1wKEFzc2VtYmxlckxhYmVsIGZyb20sIEFzc2VtYmxlckxhYmVsIHRvLCBKdW1wVHlwZSB0eXBl
LCBDb25kaXRpb24gY29uZGl0aW9uLCBib29sIGlzNjRCaXQsIFJlZ2lzdGVySUQgY29tcGFyZVJl
Z2lzdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHRvLmlzU2V0KCkpOworICAgICAgICBBU1NF
UlQoZnJvbS5pc1NldCgpKTsKKyAgICAgICAgbV9qdW1wc1RvTGluay5hcHBlbmQoTGlua1JlY29y
ZChmcm9tLm1fb2Zmc2V0LCB0by5tX29mZnNldCwgdHlwZSwgY29uZGl0aW9uLCBpczY0Qml0LCBj
b21wYXJlUmVnaXN0ZXIpKTsKKyAgICB9CisKKyAgICB2b2lkIGxpbmtKdW1wKEFzc2VtYmxlckxh
YmVsIGZyb20sIEFzc2VtYmxlckxhYmVsIHRvLCBKdW1wVHlwZSB0eXBlLCBDb25kaXRpb24gY29u
ZGl0aW9uLCB1bnNpZ25lZCBiaXROdW1iZXIsIFJlZ2lzdGVySUQgY29tcGFyZVJlZ2lzdGVyKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKHRvLmlzU2V0KCkpOworICAgICAgICBBU1NFUlQoZnJvbS5p
c1NldCgpKTsKKyAgICAgICAgbV9qdW1wc1RvTGluay5hcHBlbmQoTGlua1JlY29yZChmcm9tLm1f
b2Zmc2V0LCB0by5tX29mZnNldCwgdHlwZSwgY29uZGl0aW9uLCBiaXROdW1iZXIsIGNvbXBhcmVS
ZWdpc3RlcikpOworICAgIH0KKworICAgIHZvaWQgbGlua0p1bXAoQXNzZW1ibGVyTGFiZWwgZnJv
bSwgQXNzZW1ibGVyTGFiZWwgdG8pCisgICAgeworICAgICAgICBBU1NFUlQoZnJvbS5pc1NldCgp
KTsKKyAgICAgICAgQVNTRVJUKHRvLmlzU2V0KCkpOworICAgICAgICByZWxpbmtKdW1wT3JDYWxs
PGZhbHNlPihhZGRyZXNzT2YoZnJvbSksIGFkZHJlc3NPZih0bykpOworICAgIH0KKyAgICAKKyAg
ICBzdGF0aWMgdm9pZCBsaW5rSnVtcCh2b2lkKiBjb2RlLCBBc3NlbWJsZXJMYWJlbCBmcm9tLCB2
b2lkKiB0bykKKyAgICB7CisgICAgICAgIEFTU0VSVChmcm9tLmlzU2V0KCkpOworICAgICAgICBy
ZWxpbmtKdW1wT3JDYWxsPGZhbHNlPihhZGRyZXNzT2YoY29kZSwgZnJvbSksIHRvKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgdm9pZCBsaW5rQ2FsbCh2b2lkKiBjb2RlLCBBc3NlbWJsZXJMYWJlbCBm
cm9tLCB2b2lkKiB0bykKKyAgICB7CisgICAgICAgIEFTU0VSVChmcm9tLmlzU2V0KCkpOworICAg
ICAgICBsaW5rSnVtcE9yQ2FsbDx0cnVlPihhZGRyZXNzT2YoY29kZSwgZnJvbSkgLSAxLCB0byk7
CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgbGlua1BvaW50ZXIodm9pZCogY29kZSwgQXNzZW1i
bGVyTGFiZWwgd2hlcmUsIHZvaWQqIHZhbHVlUHRyKQorICAgIHsKKyAgICAgICAgbGlua1BvaW50
ZXIoYWRkcmVzc09mKGNvZGUsIHdoZXJlKSwgdmFsdWVQdHIpOworICAgIH0KKworICAgIHN0YXRp
YyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiB3aGVyZSwgdm9pZCogdG8pCisgICAgeworICAg
ICAgICBpbnRwdHJfdCBvZmZzZXQgPSAocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odG8pIC0g
cmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4od2hlcmUpKSA+PiAyOworICAgICAgICBBU1NFUlQo
c3RhdGljX2Nhc3Q8aW50PihvZmZzZXQpID09IG9mZnNldCk7CisgICAgICAgICpzdGF0aWNfY2Fz
dDxpbnQqPih3aGVyZSkgPSB1bmNvbmRpdGlvbmFsQnJhbmNoSW1tZWRpYXRlKGZhbHNlLCBzdGF0
aWNfY2FzdDxpbnQ+KG9mZnNldCkpOworICAgICAgICBjYWNoZUZsdXNoKHdoZXJlLCBzaXplb2Yo
aW50KSk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2Vt
ZW50U2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gNDsKKyAgICB9CisgICAgCisgICAgc3Rh
dGljIHZvaWQgcmVwbGFjZVdpdGhMb2FkKHZvaWQqIHdoZXJlKQorICAgIHsKKyAgICAgICAgRGF0
YXNpemUgc2Y7CisgICAgICAgIEFkZE9wIG9wOworICAgICAgICBTZXRGbGFncyBTOworICAgICAg
ICBpbnQgc2hpZnQ7CisgICAgICAgIGludCBpbW0xMjsKKyAgICAgICAgUmVnaXN0ZXJJRCBybjsK
KyAgICAgICAgUmVnaXN0ZXJJRCByZDsKKyAgICAgICAgaWYgKGRpc2Fzc2VtYmxlQWRkU3VidHJh
Y3RJbW1lZGlhdGUod2hlcmUsIHNmLCBvcCwgUywgc2hpZnQsIGltbTEyLCBybiwgcmQpKSB7Cisg
ICAgICAgICAgICBBU1NFUlQoc2YgPT0gRGF0YXNpemVfNjQpOworICAgICAgICAgICAgQVNTRVJU
KG9wID09IEFkZE9wX0FERCk7CisgICAgICAgICAgICBBU1NFUlQoIVMpOworICAgICAgICAgICAg
QVNTRVJUKCFzaGlmdCk7CisgICAgICAgICAgICBBU1NFUlQoIShpbW0xMiAmIH4weGZmOCkpOwor
ICAgICAgICAgICAgKnN0YXRpY19jYXN0PGludCo+KHdoZXJlKSA9IGxvYWRTdG9yZVJlZ2lzdGVy
VW5zaWduZWRJbW1lZGlhdGUoTWVtT3BTaXplXzY0LCBmYWxzZSwgTWVtT3BfTE9BRCwgZW5jb2Rl
UG9zaXRpdmVJbW1lZGlhdGU8NjQ+KGltbTEyKSwgcm4sIHJkKTsKKyAgICAgICAgICAgIGNhY2hl
Rmx1c2god2hlcmUsIHNpemVvZihpbnQpKTsKKyAgICAgICAgfQorI2lmICFBU1NFUlRfRElTQUJM
RUQKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBNZW1PcFNpemUgc2l6ZTsKKyAgICAgICAg
ICAgIGJvb2wgVjsKKyAgICAgICAgICAgIE1lbU9wIG9wYzsKKyAgICAgICAgICAgIGludCBpbW0x
MjsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQgcm47CisgICAgICAgICAgICBSZWdpc3RlcklEIHJ0
OworICAgICAgICAgICAgQVNTRVJUKGRpc2Fzc2VtYmxlTG9hZFN0b3JlUmVnaXN0ZXJVbnNpZ25l
ZEltbWVkaWF0ZSh3aGVyZSwgc2l6ZSwgViwgb3BjLCBpbW0xMiwgcm4sIHJ0KSk7CisgICAgICAg
ICAgICBBU1NFUlQoc2l6ZSA9PSBNZW1PcFNpemVfNjQpOworICAgICAgICAgICAgQVNTRVJUKCFW
KTsKKyAgICAgICAgICAgIEFTU0VSVChvcGMgPT0gTWVtT3BfTE9BRCk7CisgICAgICAgICAgICBB
U1NFUlQoIShpbW0xMiAmIH4weDFmZikpOworICAgICAgICB9CisjZW5kaWYKKyAgICB9CisKKyAg
ICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbih2b2lkKiB3aGVyZSkK
KyAgICB7CisgICAgICAgIE1lbU9wU2l6ZSBzaXplOworICAgICAgICBib29sIFY7CisgICAgICAg
IE1lbU9wIG9wYzsKKyAgICAgICAgaW50IGltbTEyOworICAgICAgICBSZWdpc3RlcklEIHJuOwor
ICAgICAgICBSZWdpc3RlcklEIHJ0OworICAgICAgICBpZiAoZGlzYXNzZW1ibGVMb2FkU3RvcmVS
ZWdpc3RlclVuc2lnbmVkSW1tZWRpYXRlKHdoZXJlLCBzaXplLCBWLCBvcGMsIGltbTEyLCBybiwg
cnQpKSB7CisgICAgICAgICAgICBBU1NFUlQoc2l6ZSA9PSBNZW1PcFNpemVfNjQpOworICAgICAg
ICAgICAgQVNTRVJUKCFWKTsKKyAgICAgICAgICAgIEFTU0VSVChvcGMgPT0gTWVtT3BfTE9BRCk7
CisgICAgICAgICAgICBBU1NFUlQoIShpbW0xMiAmIH4weDFmZikpOworICAgICAgICAgICAgKnN0
YXRpY19jYXN0PGludCo+KHdoZXJlKSA9IGFkZFN1YnRyYWN0SW1tZWRpYXRlKERhdGFzaXplXzY0
LCBBZGRPcF9BREQsIERvbnRTZXRGbGFncywgMCwgaW1tMTIgKiBzaXplb2Yodm9pZCopLCBybiwg
cnQpOworICAgICAgICAgICAgY2FjaGVGbHVzaCh3aGVyZSwgc2l6ZW9mKGludCkpOworICAgICAg
ICB9CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIERh
dGFzaXplIHNmOworICAgICAgICAgICAgQWRkT3Agb3A7CisgICAgICAgICAgICBTZXRGbGFncyBT
OworICAgICAgICAgICAgaW50IHNoaWZ0OworICAgICAgICAgICAgaW50IGltbTEyOworICAgICAg
ICAgICAgUmVnaXN0ZXJJRCBybjsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQgcmQ7CisgICAgICAg
ICAgICBBU1NFUlQoZGlzYXNzZW1ibGVBZGRTdWJ0cmFjdEltbWVkaWF0ZSh3aGVyZSwgc2YsIG9w
LCBTLCBzaGlmdCwgaW1tMTIsIHJuLCByZCkpOworICAgICAgICAgICAgQVNTRVJUKHNmID09IERh
dGFzaXplXzY0KTsKKyAgICAgICAgICAgIEFTU0VSVChvcCA9PSBBZGRPcF9BREQpOworICAgICAg
ICAgICAgQVNTRVJUKCFTKTsKKyAgICAgICAgICAgIEFTU0VSVCghc2hpZnQpOworICAgICAgICAg
ICAgQVNTRVJUKCEoaW1tMTIgJiB+MHhmZjgpKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQor
CisgICAgc3RhdGljIHZvaWQgcmVwYXRjaFBvaW50ZXIodm9pZCogd2hlcmUsIHZvaWQqIHZhbHVl
UHRyKQorICAgIHsKKyAgICAgICAgbGlua1BvaW50ZXIoc3RhdGljX2Nhc3Q8aW50Kj4od2hlcmUp
LCB2YWx1ZVB0ciwgdHJ1ZSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgc2V0UG9pbnRlcihp
bnQqIGFkZHJlc3MsIHZvaWQqIHZhbHVlUHRyLCBSZWdpc3RlcklEIHJkLCBib29sIGZsdXNoKQor
ICAgIHsKKyAgICAgICAgdWludHB0cl90IHZhbHVlID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KHZhbHVlUHRyKTsKKyAgICAgICAgYWRkcmVzc1swXSA9IG1vdmVXaWRlSW1lZGlhdGUoRGF0
YXNpemVfNjQsIE1vdmVXaWRlT3BfWiwgMCwgZ2V0SGFsZndvcmQodmFsdWUsIDApLCByZCk7Cisg
ICAgICAgIGFkZHJlc3NbMV0gPSBtb3ZlV2lkZUltZWRpYXRlKERhdGFzaXplXzY0LCBNb3ZlV2lk
ZU9wX0ssIDEsIGdldEhhbGZ3b3JkKHZhbHVlLCAxKSwgcmQpOworICAgICAgICBhZGRyZXNzWzJd
ID0gbW92ZVdpZGVJbWVkaWF0ZShEYXRhc2l6ZV82NCwgTW92ZVdpZGVPcF9LLCAyLCBnZXRIYWxm
d29yZCh2YWx1ZSwgMiksIHJkKTsKKworICAgICAgICBpZiAoZmx1c2gpCisgICAgICAgICAgICBj
YWNoZUZsdXNoKGFkZHJlc3MsIHNpemVvZihpbnQpICogMyk7CisgICAgfQorCisgICAgc3RhdGlj
IHZvaWQgcmVwYXRjaEludDMyKHZvaWQqIHdoZXJlLCBpbnQzMl90IHZhbHVlKQorICAgIHsKKyAg
ICAgICAgaW50KiBhZGRyZXNzID0gc3RhdGljX2Nhc3Q8aW50Kj4od2hlcmUpOworCisgICAgICAg
IERhdGFzaXplIHNmOworICAgICAgICBNb3ZlV2lkZU9wIG9wYzsKKyAgICAgICAgaW50IGh3Owor
ICAgICAgICB1aW50MTZfdCBpbW0xNjsKKyAgICAgICAgUmVnaXN0ZXJJRCByZDsKKyAgICAgICAg
Ym9vbCBleHBlY3RlZCA9IGRpc2Fzc2VtYmxlTW92ZVdpZGVJbWVkaWF0ZShhZGRyZXNzLCBzZiwg
b3BjLCBodywgaW1tMTYsIHJkKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChleHBlY3RlZCwgZXhw
ZWN0ZWQgJiYgIXNmICYmIChvcGMgPT0gTW92ZVdpZGVPcF9aIHx8IG9wYyA9PSBNb3ZlV2lkZU9w
X04pICYmICFodyk7CisgICAgICAgIEFTU0VSVChjaGVja01vdms8RGF0YXNpemVfMzI+KGFkZHJl
c3NbMV0sIDEsIHJkKSk7CisKKyAgICAgICAgaWYgKHZhbHVlID49IDApIHsKKyAgICAgICAgICAg
IGFkZHJlc3NbMF0gPSBtb3ZlV2lkZUltZWRpYXRlKERhdGFzaXplXzMyLCBNb3ZlV2lkZU9wX1os
IDAsIGdldEhhbGZ3b3JkKHZhbHVlLCAwKSwgcmQpOworICAgICAgICAgICAgYWRkcmVzc1sxXSA9
IG1vdmVXaWRlSW1lZGlhdGUoRGF0YXNpemVfMzIsIE1vdmVXaWRlT3BfSywgMSwgZ2V0SGFsZndv
cmQodmFsdWUsIDEpLCByZCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhZGRyZXNz
WzBdID0gbW92ZVdpZGVJbWVkaWF0ZShEYXRhc2l6ZV8zMiwgTW92ZVdpZGVPcF9OLCAwLCB+Z2V0
SGFsZndvcmQodmFsdWUsIDApLCByZCk7CisgICAgICAgICAgICBhZGRyZXNzWzFdID0gbW92ZVdp
ZGVJbWVkaWF0ZShEYXRhc2l6ZV8zMiwgTW92ZVdpZGVPcF9LLCAxLCBnZXRIYWxmd29yZCh2YWx1
ZSwgMSksIHJkKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhY2hlRmx1c2god2hlcmUsIHNpemVv
ZihpbnQpICogMik7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQqIHJlYWRQb2ludGVyKHZvaWQq
IHdoZXJlKQorICAgIHsKKyAgICAgICAgaW50KiBhZGRyZXNzID0gc3RhdGljX2Nhc3Q8aW50Kj4o
d2hlcmUpOworCisgICAgICAgIERhdGFzaXplIHNmOworICAgICAgICBNb3ZlV2lkZU9wIG9wYzsK
KyAgICAgICAgaW50IGh3OworICAgICAgICB1aW50MTZfdCBpbW0xNjsKKyAgICAgICAgUmVnaXN0
ZXJJRCByZEZpcnN0LCByZDsKKworICAgICAgICBib29sIGV4cGVjdGVkID0gZGlzYXNzZW1ibGVN
b3ZlV2lkZUltZWRpYXRlKGFkZHJlc3MsIHNmLCBvcGMsIGh3LCBpbW0xNiwgcmRGaXJzdCk7Cisg
ICAgICAgIEFTU0VSVF9VTlVTRUQoZXhwZWN0ZWQsIGV4cGVjdGVkICYmIHNmICYmIG9wYyA9PSBN
b3ZlV2lkZU9wX1ogJiYgIWh3KTsKKyAgICAgICAgdWludHB0cl90IHJlc3VsdCA9IGltbTE2Owor
CisgICAgICAgIGV4cGVjdGVkID0gZGlzYXNzZW1ibGVNb3ZlV2lkZUltZWRpYXRlKGFkZHJlc3Mg
KyAxLCBzZiwgb3BjLCBodywgaW1tMTYsIHJkKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChleHBl
Y3RlZCwgZXhwZWN0ZWQgJiYgc2YgJiYgb3BjID09IE1vdmVXaWRlT3BfSyAmJiBodyA9PSAxICYm
IHJkID09IHJkRmlyc3QpOworICAgICAgICByZXN1bHQgfD0gc3RhdGljX2Nhc3Q8dWludHB0cl90
PihpbW0xNikgPDwgMTY7CisKKyAgICAgICAgZXhwZWN0ZWQgPSBkaXNhc3NlbWJsZU1vdmVXaWRl
SW1lZGlhdGUoYWRkcmVzcyArIDIsIHNmLCBvcGMsIGh3LCBpbW0xNiwgcmQpOworICAgICAgICBB
U1NFUlRfVU5VU0VEKGV4cGVjdGVkLCBleHBlY3RlZCAmJiBzZiAmJiBvcGMgPT0gTW92ZVdpZGVP
cF9LICYmIGh3ID09IDIgJiYgcmQgPT0gcmRGaXJzdCk7CisgICAgICAgIHJlc3VsdCB8PSBzdGF0
aWNfY2FzdDx1aW50cHRyX3Q+KGltbTE2KSA8PCAzMjsKKworICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4ocmVzdWx0KTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCogcmVh
ZENhbGxUYXJnZXQodm9pZCogZnJvbSkKKyAgICB7CisgICAgICAgIHJldHVybiByZWFkUG9pbnRl
cihyZWludGVycHJldF9jYXN0PGludCo+KGZyb20pIC0gNCk7CisgICAgfQorCisgICAgc3RhdGlj
IHZvaWQgcmVsaW5rSnVtcCh2b2lkKiBmcm9tLCB2b2lkKiB0bykKKyAgICB7CisgICAgICAgIHJl
bGlua0p1bXBPckNhbGw8ZmFsc2U+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50Kj4oZnJvbSksIHRvKTsK
KyAgICAgICAgY2FjaGVGbHVzaChmcm9tLCBzaXplb2YoaW50KSk7CisgICAgfQorICAgIAorICAg
IHN0YXRpYyB2b2lkIHJlbGlua0NhbGwodm9pZCogZnJvbSwgdm9pZCogdG8pCisgICAgeworICAg
ICAgICByZWxpbmtKdW1wT3JDYWxsPHRydWU+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50Kj4oZnJvbSkg
LSAxLCB0byk7CisgICAgICAgIGNhY2hlRmx1c2gocmVpbnRlcnByZXRfY2FzdDxpbnQqPihmcm9t
KSAtIDEsIHNpemVvZihpbnQpKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHZvaWQgcmVwYXRj
aENvbXBhY3Qodm9pZCogd2hlcmUsIGludDMyX3QgdmFsdWUpCisgICAgeworICAgICAgICBBU1NF
UlQoISh2YWx1ZSAmIH4weDNmZjgpKTsKKworICAgICAgICBNZW1PcFNpemUgc2l6ZTsKKyAgICAg
ICAgYm9vbCBWOworICAgICAgICBNZW1PcCBvcGM7CisgICAgICAgIGludCBpbW0xMjsKKyAgICAg
ICAgUmVnaXN0ZXJJRCBybjsKKyAgICAgICAgUmVnaXN0ZXJJRCBydDsKKyAgICAgICAgYm9vbCBl
eHBlY3RlZCA9IGRpc2Fzc2VtYmxlTG9hZFN0b3JlUmVnaXN0ZXJVbnNpZ25lZEltbWVkaWF0ZSh3
aGVyZSwgc2l6ZSwgViwgb3BjLCBpbW0xMiwgcm4sIHJ0KTsKKyAgICAgICAgQVNTRVJUX1VOVVNF
RChleHBlY3RlZCwgZXhwZWN0ZWQgJiYgc2l6ZSA+PSBNZW1PcFNpemVfMzIgJiYgIVYgJiYgb3Bj
ID09IE1lbU9wX0xPQUQpOyAvLyBleHBlY3QgMzIvNjQgYml0IGxvYWQgdG8gR1BSLgorCisgICAg
ICAgIGlmIChzaXplID09IE1lbU9wU2l6ZV8zMikKKyAgICAgICAgICAgIGltbTEyID0gZW5jb2Rl
UG9zaXRpdmVJbW1lZGlhdGU8MzI+KHZhbHVlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
aW1tMTIgPSBlbmNvZGVQb3NpdGl2ZUltbWVkaWF0ZTw2ND4odmFsdWUpOworICAgICAgICAqc3Rh
dGljX2Nhc3Q8aW50Kj4od2hlcmUpID0gbG9hZFN0b3JlUmVnaXN0ZXJVbnNpZ25lZEltbWVkaWF0
ZShzaXplLCBWLCBvcGMsIGltbTEyLCBybiwgcnQpOworCisgICAgICAgIGNhY2hlRmx1c2god2hl
cmUsIHNpemVvZihpbnQpKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBkZWJ1Z09mZnNldCgpIHsg
cmV0dXJuIG1fYnVmZmVyLmRlYnVnT2Zmc2V0KCk7IH0KKworICAgIHN0YXRpYyB2b2lkIGNhY2hl
Rmx1c2godm9pZCogY29kZSwgc2l6ZV90IHNpemUpCisgICAgeworI2lmIE9TKElPUykKKyAgICAg
ICAgc3lzX2NhY2hlX2NvbnRyb2woa0NhY2hlRnVuY3Rpb25QcmVwYXJlRm9yRXhlY3V0aW9uLCBj
b2RlLCBzaXplKTsKKyNlbHNlCisjZXJyb3IgIlRoZSBjYWNoZUZsdXNoIHN1cHBvcnQgaXMgbWlz
c2luZyBvbiB0aGlzIHBsYXRmb3JtLiIKKyNlbmRpZgorICAgIH0KKworICAgIC8vIEFzc2VtYmxl
ciBhZG1pbiBtZXRob2RzOgorCisgICAgaW50IGp1bXBTaXplRGVsdGEoSnVtcFR5cGUganVtcFR5
cGUsIEp1bXBMaW5rVHlwZSBqdW1wTGlua1R5cGUpIHsgcmV0dXJuIEpVTVBfRU5VTV9TSVpFKGp1
bXBUeXBlKSAtIEpVTVBfRU5VTV9TSVpFKGp1bXBMaW5rVHlwZSk7IH0KKworICAgIHN0YXRpYyBB
TFdBWVNfSU5MSU5FIGJvb2wgbGlua1JlY29yZFNvdXJjZUNvbXBhcmF0b3IoY29uc3QgTGlua1Jl
Y29yZCYgYSwgY29uc3QgTGlua1JlY29yZCYgYikKKyAgICB7CisgICAgICAgIHJldHVybiBhLmZy
b20oKSA8IGIuZnJvbSgpOworICAgIH0KKworICAgIGJvb2wgY2FuQ29tcGFjdChKdW1wVHlwZSBq
dW1wVHlwZSkKKyAgICB7CisgICAgICAgIC8vIEZpeGVkIGp1bXBzIGNhbm5vdCBiZSBjb21wYWN0
ZWQKKyAgICAgICAgcmV0dXJuIChqdW1wVHlwZSA9PSBKdW1wTm9Db25kaXRpb24pIHx8IChqdW1w
VHlwZSA9PSBKdW1wQ29uZGl0aW9uKSB8fCAoanVtcFR5cGUgPT0gSnVtcENvbXBhcmVBbmRCcmFu
Y2gpIHx8IChqdW1wVHlwZSA9PSBKdW1wVGVzdEJpdCk7CisgICAgfQorCisgICAgSnVtcExpbmtU
eXBlIGNvbXB1dGVKdW1wVHlwZShKdW1wVHlwZSBqdW1wVHlwZSwgY29uc3QgdWludDhfdCogZnJv
bSwgY29uc3QgdWludDhfdCogdG8pCisgICAgeworICAgICAgICBzd2l0Y2ggKGp1bXBUeXBlKSB7
CisgICAgICAgIGNhc2UgSnVtcEZpeGVkOgorICAgICAgICAgICAgcmV0dXJuIExpbmtJbnZhbGlk
OworICAgICAgICBjYXNlIEp1bXBOb0NvbmRpdGlvbkZpeGVkU2l6ZToKKyAgICAgICAgICAgIHJl
dHVybiBMaW5rSnVtcE5vQ29uZGl0aW9uOworICAgICAgICBjYXNlIEp1bXBDb25kaXRpb25GaXhl
ZFNpemU6CisgICAgICAgICAgICByZXR1cm4gTGlua0p1bXBDb25kaXRpb247CisgICAgICAgIGNh
c2UgSnVtcENvbXBhcmVBbmRCcmFuY2hGaXhlZFNpemU6CisgICAgICAgICAgICByZXR1cm4gTGlu
a0p1bXBDb21wYXJlQW5kQnJhbmNoOworICAgICAgICBjYXNlIEp1bXBUZXN0Qml0Rml4ZWRTaXpl
OgorICAgICAgICAgICAgcmV0dXJuIExpbmtKdW1wVGVzdEJpdDsKKyAgICAgICAgY2FzZSBKdW1w
Tm9Db25kaXRpb246CisgICAgICAgICAgICByZXR1cm4gTGlua0p1bXBOb0NvbmRpdGlvbjsKKyAg
ICAgICAgY2FzZSBKdW1wQ29uZGl0aW9uOiB7CisgICAgICAgICAgICBBU1NFUlQoIShyZWludGVy
cHJldF9jYXN0PGludHB0cl90Pihmcm9tKSAmIDB4MykpOworICAgICAgICAgICAgQVNTRVJUKCEo
cmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odG8pICYgMHgzKSk7CisgICAgICAgICAgICBpbnRw
dHJfdCByZWxhdGl2ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRvKSAtIChyZWludGVy
cHJldF9jYXN0PGludHB0cl90Pihmcm9tKSk7CisKKyAgICAgICAgICAgIGlmICgoKHJlbGF0aXZl
IDw8IDQzKSA+PiA0MykgPT0gcmVsYXRpdmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIExpbmtK
dW1wQ29uZGl0aW9uRGlyZWN0OworCisgICAgICAgICAgICByZXR1cm4gTGlua0p1bXBDb25kaXRp
b247CisgICAgICAgICAgICB9CisgICAgICAgIGNhc2UgSnVtcENvbXBhcmVBbmRCcmFuY2g6ICB7
CisgICAgICAgICAgICBBU1NFUlQoIShyZWludGVycHJldF9jYXN0PGludHB0cl90Pihmcm9tKSAm
IDB4MykpOworICAgICAgICAgICAgQVNTRVJUKCEocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4o
dG8pICYgMHgzKSk7CisgICAgICAgICAgICBpbnRwdHJfdCByZWxhdGl2ZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8aW50cHRyX3Q+KHRvKSAtIChyZWludGVycHJldF9jYXN0PGludHB0cl90Pihmcm9tKSk7
CisKKyAgICAgICAgICAgIGlmICgoKHJlbGF0aXZlIDw8IDQzKSA+PiA0MykgPT0gcmVsYXRpdmUp
CisgICAgICAgICAgICAgICAgcmV0dXJuIExpbmtKdW1wQ29tcGFyZUFuZEJyYW5jaERpcmVjdDsK
KworICAgICAgICAgICAgcmV0dXJuIExpbmtKdW1wQ29tcGFyZUFuZEJyYW5jaDsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIEp1bXBUZXN0Qml0OiAgIHsKKyAgICAgICAgICAgIEFTU0VSVCghKHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGZyb20pICYgMHgzKSk7CisgICAgICAgICAgICBBU1NF
UlQoIShyZWludGVycHJldF9jYXN0PGludHB0cl90Pih0bykgJiAweDMpKTsKKyAgICAgICAgICAg
IGludHB0cl90IHJlbGF0aXZlID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odG8pIC0gKHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGZyb20pKTsKKworICAgICAgICAgICAgaWYgKCgocmVs
YXRpdmUgPDwgNTApID4+IDUwKSA9PSByZWxhdGl2ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
TGlua0p1bXBUZXN0Qml0RGlyZWN0OworCisgICAgICAgICAgICByZXR1cm4gTGlua0p1bXBUZXN0
Qml0OworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBMaW5rSnVtcE5vQ29uZGl0
aW9uOworICAgIH0KKworICAgIEp1bXBMaW5rVHlwZSBjb21wdXRlSnVtcFR5cGUoTGlua1JlY29y
ZCYgcmVjb3JkLCBjb25zdCB1aW50OF90KiBmcm9tLCBjb25zdCB1aW50OF90KiB0bykKKyAgICB7
CisgICAgICAgIEp1bXBMaW5rVHlwZSBsaW5rVHlwZSA9IGNvbXB1dGVKdW1wVHlwZShyZWNvcmQu
dHlwZSgpLCBmcm9tLCB0byk7CisgICAgICAgIHJlY29yZC5zZXRMaW5rVHlwZShsaW5rVHlwZSk7
CisgICAgICAgIHJldHVybiBsaW5rVHlwZTsKKyAgICB9CisKKyAgICB2b2lkIHJlY29yZExpbmtP
ZmZzZXRzKGludDMyX3QgcmVnaW9uU3RhcnQsIGludDMyX3QgcmVnaW9uRW5kLCBpbnQzMl90IG9m
ZnNldCkKKyAgICB7CisgICAgICAgIGludDMyX3QgcHRyID0gcmVnaW9uU3RhcnQgLyBzaXplb2Yo
aW50MzJfdCk7CisgICAgICAgIGNvbnN0IGludDMyX3QgZW5kID0gcmVnaW9uRW5kIC8gc2l6ZW9m
KGludDMyX3QpOworICAgICAgICBpbnQzMl90KiBvZmZzZXRzID0gc3RhdGljX2Nhc3Q8aW50MzJf
dCo+KG1fYnVmZmVyLmRhdGEoKSk7CisgICAgICAgIHdoaWxlIChwdHIgPCBlbmQpCisgICAgICAg
ICAgICBvZmZzZXRzW3B0cisrXSA9IG9mZnNldDsKKyAgICB9CisKKyAgICBWZWN0b3I8TGlua1Jl
Y29yZCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+JiBqdW1wc1RvTGluaygpCisgICAgeworICAg
ICAgICBzdGQ6OnNvcnQobV9qdW1wc1RvTGluay5iZWdpbigpLCBtX2p1bXBzVG9MaW5rLmVuZCgp
LCBsaW5rUmVjb3JkU291cmNlQ29tcGFyYXRvcik7CisgICAgICAgIHJldHVybiBtX2p1bXBzVG9M
aW5rOworICAgIH0KKworICAgIHZvaWQgQUxXQVlTX0lOTElORSBsaW5rKExpbmtSZWNvcmQmIHJl
Y29yZCwgdWludDhfdCogZnJvbSwgdWludDhfdCogdG8pCisgICAgeworICAgICAgICBzd2l0Y2gg
KHJlY29yZC5saW5rVHlwZSgpKSB7CisgICAgICAgIGNhc2UgTGlua0p1bXBOb0NvbmRpdGlvbjoK
KyAgICAgICAgICAgIGxpbmtKdW1wT3JDYWxsPGZhbHNlPihyZWludGVycHJldF9jYXN0PGludCo+
KGZyb20pLCB0byk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMaW5rSnVtcENv
bmRpdGlvbkRpcmVjdDoKKyAgICAgICAgICAgIGxpbmtDb25kaXRpb25hbEJyYW5jaDx0cnVlPihy
ZWNvcmQuY29uZGl0aW9uKCksIHJlaW50ZXJwcmV0X2Nhc3Q8aW50Kj4oZnJvbSksIHRvKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIExpbmtKdW1wQ29uZGl0aW9uOgorICAgICAg
ICAgICAgbGlua0NvbmRpdGlvbmFsQnJhbmNoPGZhbHNlPihyZWNvcmQuY29uZGl0aW9uKCksIHJl
aW50ZXJwcmV0X2Nhc3Q8aW50Kj4oZnJvbSkgLSAxLCB0byk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBMaW5rSnVtcENvbXBhcmVBbmRCcmFuY2hEaXJlY3Q6CisgICAgICAgICAg
ICBsaW5rQ29tcGFyZUFuZEJyYW5jaDx0cnVlPihyZWNvcmQuY29uZGl0aW9uKCksIHJlY29yZC5p
czY0Qml0KCksIHJlY29yZC5jb21wYXJlUmVnaXN0ZXIoKSwgcmVpbnRlcnByZXRfY2FzdDxpbnQq
Pihmcm9tKSwgdG8pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTGlua0p1bXBD
b21wYXJlQW5kQnJhbmNoOgorICAgICAgICAgICAgbGlua0NvbXBhcmVBbmRCcmFuY2g8ZmFsc2U+
KHJlY29yZC5jb25kaXRpb24oKSwgcmVjb3JkLmlzNjRCaXQoKSwgcmVjb3JkLmNvbXBhcmVSZWdp
c3RlcigpLCByZWludGVycHJldF9jYXN0PGludCo+KGZyb20pIC0gMSwgdG8pOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgTGlua0p1bXBUZXN0Qml0RGlyZWN0OgorICAgICAgICAg
ICAgbGlua1Rlc3RBbmRCcmFuY2g8dHJ1ZT4ocmVjb3JkLmNvbmRpdGlvbigpLCByZWNvcmQuYml0
TnVtYmVyKCksIHJlY29yZC5jb21wYXJlUmVnaXN0ZXIoKSwgcmVpbnRlcnByZXRfY2FzdDxpbnQq
Pihmcm9tKSwgdG8pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTGlua0p1bXBU
ZXN0Qml0OgorICAgICAgICAgICAgbGlua1Rlc3RBbmRCcmFuY2g8ZmFsc2U+KHJlY29yZC5jb25k
aXRpb24oKSwgcmVjb3JkLmJpdE51bWJlcigpLCByZWNvcmQuY29tcGFyZVJlZ2lzdGVyKCksIHJl
aW50ZXJwcmV0X2Nhc3Q8aW50Kj4oZnJvbSkgLSAxLCB0byk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKK3ByaXZhdGU6CisgICAgdGVtcGxh
dGU8RGF0YXNpemUgc2l6ZT4KKyAgICBzdGF0aWMgYm9vbCBjaGVja01vdmsoaW50IGluc24sIGlu
dCBfaHcsIFJlZ2lzdGVySUQgX3JkKQorICAgIHsKKyAgICAgICAgRGF0YXNpemUgc2Y7CisgICAg
ICAgIE1vdmVXaWRlT3Agb3BjOworICAgICAgICBpbnQgaHc7CisgICAgICAgIHVpbnQxNl90IGlt
bTE2OworICAgICAgICBSZWdpc3RlcklEIHJkOworICAgICAgICBib29sIGV4cGVjdGVkID0gZGlz
YXNzZW1ibGVNb3ZlV2lkZUltZWRpYXRlKCZpbnNuLCBzZiwgb3BjLCBodywgaW1tMTYsIHJkKTsK
KworICAgICAgICByZXR1cm4gZXhwZWN0ZWQgJiYKKyAgICAgICAgICAgIHNmID09IHNpemUgJiYK
KyAgICAgICAgICAgIG9wYyA9PSBNb3ZlV2lkZU9wX0sgJiYKKyAgICAgICAgICAgIGh3ID09IF9o
dyAmJgorICAgICAgICAgICAgcmQgPT0gX3JkOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGxp
bmtQb2ludGVyKGludCogYWRkcmVzcywgdm9pZCogdmFsdWVQdHIsIGJvb2wgZmx1c2ggPSBmYWxz
ZSkKKyAgICB7CisgICAgICAgIERhdGFzaXplIHNmOworICAgICAgICBNb3ZlV2lkZU9wIG9wYzsK
KyAgICAgICAgaW50IGh3OworICAgICAgICB1aW50MTZfdCBpbW0xNjsKKyAgICAgICAgUmVnaXN0
ZXJJRCByZDsKKyAgICAgICAgYm9vbCBleHBlY3RlZCA9IGRpc2Fzc2VtYmxlTW92ZVdpZGVJbWVk
aWF0ZShhZGRyZXNzLCBzZiwgb3BjLCBodywgaW1tMTYsIHJkKTsKKyAgICAgICAgQVNTRVJUX1VO
VVNFRChleHBlY3RlZCwgZXhwZWN0ZWQgJiYgc2YgJiYgb3BjID09IE1vdmVXaWRlT3BfWiAmJiAh
aHcpOworICAgICAgICBBU1NFUlQoY2hlY2tNb3ZrPERhdGFzaXplXzY0PihhZGRyZXNzWzFdLCAx
LCByZCkpOworICAgICAgICBBU1NFUlQoY2hlY2tNb3ZrPERhdGFzaXplXzY0PihhZGRyZXNzWzJd
LCAyLCByZCkpOworCisgICAgICAgIHNldFBvaW50ZXIoYWRkcmVzcywgdmFsdWVQdHIsIHJkLCBm
bHVzaCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8Ym9vbCBpc0NhbGw+CisgICAgc3RhdGljIHZv
aWQgbGlua0p1bXBPckNhbGwoaW50KiBmcm9tLCB2b2lkKiB0bykKKyAgICB7CisgICAgICAgIGJv
b2wgbGluazsKKyAgICAgICAgaW50IGltbTI2OworICAgICAgICBib29sIGlzVW5jb25kaXRpb25h
bEJyYW5jaEltbWVkaWF0ZU9yTm9wID0gZGlzYXNzZW1ibGVVbmNvbmRpdGlvbmFsQnJhbmNoSW1t
ZWRpYXRlKGZyb20sIGxpbmssIGltbTI2KSB8fCBkaXNhc3NlbWJsZU5vcChmcm9tKTsKKworICAg
ICAgICBBU1NFUlRfVU5VU0VEKGlzVW5jb25kaXRpb25hbEJyYW5jaEltbWVkaWF0ZU9yTm9wLCBp
c1VuY29uZGl0aW9uYWxCcmFuY2hJbW1lZGlhdGVPck5vcCk7CisgICAgICAgIEFTU0VSVF9VTlVT
RUQoaXNDYWxsLCAobGluayA9PSBpc0NhbGwpIHx8IGRpc2Fzc2VtYmxlTm9wKGZyb20pKTsKKyAg
ICAgICAgQVNTRVJUKCEocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oZnJvbSkgJiAzKSk7Cisg
ICAgICAgIEFTU0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRvKSAmIDMpKTsKKyAg
ICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0gKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRvKSAt
IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGZyb20pKSA+PiAyOworICAgICAgICBBU1NFUlQo
c3RhdGljX2Nhc3Q8aW50PihvZmZzZXQpID09IG9mZnNldCk7CisKKyAgICAgICAgKmZyb20gPSB1
bmNvbmRpdGlvbmFsQnJhbmNoSW1tZWRpYXRlKGlzQ2FsbCwgc3RhdGljX2Nhc3Q8aW50PihvZmZz
ZXQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxib29sIGlzRGlyZWN0PgorICAgIHN0YXRpYyB2
b2lkIGxpbmtDb21wYXJlQW5kQnJhbmNoKENvbmRpdGlvbiBjb25kaXRpb24sIGJvb2wgaXM2NEJp
dCwgUmVnaXN0ZXJJRCBydCwgaW50KiBmcm9tLCB2b2lkKiB0bykKKyAgICB7CisgICAgICAgIEFT
U0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGZyb20pICYgMykpOworICAgICAgICBB
U1NFUlQoIShyZWludGVycHJldF9jYXN0PGludHB0cl90Pih0bykgJiAzKSk7CisgICAgICAgIGlu
dHB0cl90IG9mZnNldCA9IChyZWludGVycHJldF9jYXN0PGludHB0cl90Pih0bykgLSByZWludGVy
cHJldF9jYXN0PGludHB0cl90Pihmcm9tKSkgPj4gMjsKKyAgICAgICAgQVNTRVJUKCgob2Zmc2V0
IDw8IDM4KSA+PiAzOCkgPT0gb2Zmc2V0KTsKKworICAgICAgICBib29sIHVzZURpcmVjdCA9ICgo
b2Zmc2V0IDw8IDQ1KSA+PiA0NSkgPT0gb2Zmc2V0OyAvLyBGaXRzIGluIDE5IGJpdHMKKyAgICAg
ICAgQVNTRVJUKCFpc0RpcmVjdCB8fCB1c2VEaXJlY3QpOworCisgICAgICAgIGlmICh1c2VEaXJl
Y3QgfHwgaXNEaXJlY3QpIHsKKyAgICAgICAgICAgICpmcm9tID0gY29tcGFyZUFuZEJyYW5jaElt
bWVkaWF0ZShpczY0Qml0ID8gRGF0YXNpemVfNjQgOiBEYXRhc2l6ZV8zMiwgY29uZGl0aW9uID09
IENvbmRpdGlvbk5FLCBzdGF0aWNfY2FzdDxpbnQ+KG9mZnNldCksIHJ0KTsKKyAgICAgICAgICAg
IGlmICghaXNEaXJlY3QpCisgICAgICAgICAgICAgICAgKihmcm9tICsgMSkgPSBub3BQc2V1ZG8o
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICpmcm9tID0gY29tcGFyZUFuZEJyYW5j
aEltbWVkaWF0ZShpczY0Qml0ID8gRGF0YXNpemVfNjQgOiBEYXRhc2l6ZV8zMiwgaW52ZXJ0KGNv
bmRpdGlvbikgPT0gQ29uZGl0aW9uTkUsIDIsIHJ0KTsKKyAgICAgICAgICAgIGxpbmtKdW1wT3JD
YWxsPGZhbHNlPihmcm9tICsgMSwgdG8pOworICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxh
dGU8Ym9vbCBpc0RpcmVjdD4KKyAgICBzdGF0aWMgdm9pZCBsaW5rQ29uZGl0aW9uYWxCcmFuY2go
Q29uZGl0aW9uIGNvbmRpdGlvbiwgaW50KiBmcm9tLCB2b2lkKiB0bykKKyAgICB7CisgICAgICAg
IEFTU0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGZyb20pICYgMykpOworICAgICAg
ICBBU1NFUlQoIShyZWludGVycHJldF9jYXN0PGludHB0cl90Pih0bykgJiAzKSk7CisgICAgICAg
IGludHB0cl90IG9mZnNldCA9IChyZWludGVycHJldF9jYXN0PGludHB0cl90Pih0bykgLSByZWlu
dGVycHJldF9jYXN0PGludHB0cl90Pihmcm9tKSkgPj4gMjsKKyAgICAgICAgQVNTRVJUKCgob2Zm
c2V0IDw8IDM4KSA+PiAzOCkgPT0gb2Zmc2V0KTsKKworICAgICAgICBib29sIHVzZURpcmVjdCA9
ICgob2Zmc2V0IDw8IDQ1KSA+PiA0NSkgPT0gb2Zmc2V0OyAvLyBGaXRzIGluIDE5IGJpdHMKKyAg
ICAgICAgQVNTRVJUKCFpc0RpcmVjdCB8fCB1c2VEaXJlY3QpOworCisgICAgICAgIGlmICh1c2VE
aXJlY3QgfHwgaXNEaXJlY3QpIHsKKyAgICAgICAgICAgICpmcm9tID0gY29uZGl0aW9uYWxCcmFu
Y2hJbW1lZGlhdGUoc3RhdGljX2Nhc3Q8aW50PihvZmZzZXQpLCBjb25kaXRpb24pOworICAgICAg
ICAgICAgaWYgKCFpc0RpcmVjdCkKKyAgICAgICAgICAgICAgICAqKGZyb20gKyAxKSA9IG5vcFBz
ZXVkbygpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgKmZyb20gPSBjb25kaXRpb25h
bEJyYW5jaEltbWVkaWF0ZSgyLCBpbnZlcnQoY29uZGl0aW9uKSk7CisgICAgICAgICAgICBsaW5r
SnVtcE9yQ2FsbDxmYWxzZT4oZnJvbSArIDEsIHRvKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHRlbXBsYXRlPGJvb2wgaXNEaXJlY3Q+CisgICAgc3RhdGljIHZvaWQgbGlua1Rlc3RBbmRCcmFu
Y2goQ29uZGl0aW9uIGNvbmRpdGlvbiwgdW5zaWduZWQgYml0TnVtYmVyLCBSZWdpc3RlcklEIHJ0
LCBpbnQqIGZyb20sIHZvaWQqIHRvKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEocmVpbnRlcnBy
ZXRfY2FzdDxpbnRwdHJfdD4oZnJvbSkgJiAzKSk7CisgICAgICAgIEFTU0VSVCghKHJlaW50ZXJw
cmV0X2Nhc3Q8aW50cHRyX3Q+KHRvKSAmIDMpKTsKKyAgICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0g
KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRvKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRy
X3Q+KGZyb20pKSA+PiAyOworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihvZmZzZXQp
ID09IG9mZnNldCk7CisgICAgICAgIEFTU0VSVCgoKG9mZnNldCA8PCAzOCkgPj4gMzgpID09IG9m
ZnNldCk7CisKKyAgICAgICAgYm9vbCB1c2VEaXJlY3QgPSAoKG9mZnNldCA8PCA1MCkgPj4gNTAp
ID09IG9mZnNldDsgLy8gRml0cyBpbiAxNCBiaXRzCisgICAgICAgIEFTU0VSVCghaXNEaXJlY3Qg
fHwgdXNlRGlyZWN0KTsKKworICAgICAgICBpZiAodXNlRGlyZWN0IHx8IGlzRGlyZWN0KSB7Cisg
ICAgICAgICAgICAqZnJvbSA9IHRlc3RBbmRCcmFuY2hJbW1lZGlhdGUoY29uZGl0aW9uID09IENv
bmRpdGlvbk5FLCBzdGF0aWNfY2FzdDxpbnQ+KGJpdE51bWJlciksIHN0YXRpY19jYXN0PGludD4o
b2Zmc2V0KSwgcnQpOworICAgICAgICAgICAgaWYgKCFpc0RpcmVjdCkKKyAgICAgICAgICAgICAg
ICAqKGZyb20gKyAxKSA9IG5vcFBzZXVkbygpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgKmZyb20gPSB0ZXN0QW5kQnJhbmNoSW1tZWRpYXRlKGludmVydChjb25kaXRpb24pID09IENv
bmRpdGlvbk5FLCBzdGF0aWNfY2FzdDxpbnQ+KGJpdE51bWJlciksIDIsIHJ0KTsKKyAgICAgICAg
ICAgIGxpbmtKdW1wT3JDYWxsPGZhbHNlPihmcm9tICsgMSwgdG8pOworICAgICAgICB9CisgICAg
fQorCisgICAgdGVtcGxhdGU8Ym9vbCBpc0NhbGw+CisgICAgc3RhdGljIHZvaWQgcmVsaW5rSnVt
cE9yQ2FsbChpbnQqIGZyb20sIHZvaWQqIHRvKQorICAgIHsKKyAgICAgICAgaWYgKCFpc0NhbGwg
JiYgZGlzYXNzZW1ibGVOb3AoZnJvbSkpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIG9wMDE7Cisg
ICAgICAgICAgICBpbnQgaW1tMTk7CisgICAgICAgICAgICBDb25kaXRpb24gY29uZGl0aW9uOwor
ICAgICAgICAgICAgYm9vbCBpc0NvbmRpdGlvbmFsQnJhbmNoSW1tZWRpYXRlID0gZGlzYXNzZW1i
bGVDb25kaXRpb25hbEJyYW5jaEltbWVkaWF0ZShmcm9tIC0gMSwgb3AwMSwgaW1tMTksIGNvbmRp
dGlvbik7CisKKyAgICAgICAgICAgIGlmIChpc0NvbmRpdGlvbmFsQnJhbmNoSW1tZWRpYXRlKSB7
CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChvcDAxLCAhb3AwMSk7CisgICAgICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRChpc0NhbGwsICFpc0NhbGwpOworCisgICAgICAgICAgICAgICAg
aWYgKGltbTE5ID09IDgpCisgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbiA9IGludmVydChj
b25kaXRpb24pOworCisgICAgICAgICAgICAgICAgbGlua0NvbmRpdGlvbmFsQnJhbmNoPGZhbHNl
Pihjb25kaXRpb24sIGZyb20gLSAxLCB0byk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBEYXRhc2l6ZSBvcFNpemU7CisgICAgICAgICAgICBi
b29sIG9wOworICAgICAgICAgICAgUmVnaXN0ZXJJRCBydDsKKyAgICAgICAgICAgIGJvb2wgaXND
b21wYXJlQW5kQnJhbmNoSW1tZWRpYXRlID0gZGlzYXNzZW1ibGVDb21wYXJlQW5kQnJhbmNoSW1t
ZWRpYXRlKGZyb20gLSAxLCBvcFNpemUsIG9wLCBpbW0xOSwgcnQpOworCisgICAgICAgICAgICBp
ZiAoaXNDb21wYXJlQW5kQnJhbmNoSW1tZWRpYXRlKSB7CisgICAgICAgICAgICAgICAgaWYgKGlt
bTE5ID09IDgpCisgICAgICAgICAgICAgICAgICAgIG9wID0gIW9wOworCisgICAgICAgICAgICAg
ICAgbGlua0NvbXBhcmVBbmRCcmFuY2g8ZmFsc2U+KG9wID8gQ29uZGl0aW9uTkUgOiBDb25kaXRp
b25FUSwgb3BTaXplID09IERhdGFzaXplXzY0LCBydCwgZnJvbSAtIDEsIHRvKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludCBpbW0xNDsK
KyAgICAgICAgICAgIHVuc2lnbmVkIGJpdE51bWJlcjsKKyAgICAgICAgICAgIGJvb2wgaXNUZXN0
QW5kQnJhbmNoSW1tZWRpYXRlID0gZGlzYXNzZW1ibGVUZXN0QW5kQnJhbmNoSW1tZWRpYXRlKGZy
b20gLSAxLCBvcCwgYml0TnVtYmVyLCBpbW0xNCwgcnQpOworCisgICAgICAgICAgICBpZiAoaXNU
ZXN0QW5kQnJhbmNoSW1tZWRpYXRlKSB7CisgICAgICAgICAgICAgICAgaWYgKGltbTE0ID09IDgp
CisgICAgICAgICAgICAgICAgICAgIG9wID0gIW9wOworCisgICAgICAgICAgICAgICAgbGlua1Rl
c3RBbmRCcmFuY2g8ZmFsc2U+KG9wID8gQ29uZGl0aW9uTkUgOiBDb25kaXRpb25FUSwgYml0TnVt
YmVyLCBydCwgZnJvbSAtIDEsIHRvKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICBsaW5rSnVtcE9yQ2FsbDxpc0NhbGw+KGZyb20s
IHRvKTsKKyAgICB9CisKKyAgICBzdGF0aWMgaW50KiBhZGRyZXNzT2Yodm9pZCogY29kZSwgQXNz
ZW1ibGVyTGFiZWwgbGFiZWwpCisgICAgeworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxpbnQqPihzdGF0aWNfY2FzdDxjaGFyKj4oY29kZSkgKyBsYWJlbC5tX29mZnNldCk7CisgICAg
fQorCisgICAgaW50KiBhZGRyZXNzT2YoQXNzZW1ibGVyTGFiZWwgbGFiZWwpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRkcmVzc09mKG1fYnVmZmVyLmRhdGEoKSwgbGFiZWwpOworICAgIH0KKwor
ICAgIHN0YXRpYyBSZWdpc3RlcklEIGRpc2Fzc2VtYmxlWE9yU3AoaW50IHJlZykgeyByZXR1cm4g
cmVnID09IDMxID8gQVJNNjRSZWdpc3RlcnM6OnNwIDogc3RhdGljX2Nhc3Q8UmVnaXN0ZXJJRD4o
cmVnKTsgfQorICAgIHN0YXRpYyBSZWdpc3RlcklEIGRpc2Fzc2VtYmxlWE9yWnIoaW50IHJlZykg
eyByZXR1cm4gcmVnID09IDMxID8gQVJNNjRSZWdpc3RlcnM6OnpyIDogc3RhdGljX2Nhc3Q8UmVn
aXN0ZXJJRD4ocmVnKTsgfQorICAgIHN0YXRpYyBSZWdpc3RlcklEIGRpc2Fzc2VtYmxlWE9yWnJP
clNwKGJvb2wgdXNlWnIsIGludCByZWcpIHsgcmV0dXJuIHJlZyA9PSAzMSA/ICh1c2VaciA/IEFS
TTY0UmVnaXN0ZXJzOjp6ciA6IEFSTTY0UmVnaXN0ZXJzOjpzcCkgOiBzdGF0aWNfY2FzdDxSZWdp
c3RlcklEPihyZWcpOyB9CisKKyAgICBzdGF0aWMgYm9vbCBkaXNhc3NlbWJsZUFkZFN1YnRyYWN0
SW1tZWRpYXRlKHZvaWQqIGFkZHJlc3MsIERhdGFzaXplJiBzZiwgQWRkT3AmIG9wLCBTZXRGbGFn
cyYgUywgaW50JiBzaGlmdCwgaW50JiBpbW0xMiwgUmVnaXN0ZXJJRCYgcm4sIFJlZ2lzdGVySUQm
IHJkKQorICAgIHsKKyAgICAgICAgaW50IGluc24gPSAqc3RhdGljX2Nhc3Q8aW50Kj4oYWRkcmVz
cyk7CisgICAgICAgIHNmID0gc3RhdGljX2Nhc3Q8RGF0YXNpemU+KChpbnNuID4+IDMxKSAmIDEp
OworICAgICAgICBvcCA9IHN0YXRpY19jYXN0PEFkZE9wPigoaW5zbiA+PiAzMCkgJiAxKTsKKyAg
ICAgICAgUyA9IHN0YXRpY19jYXN0PFNldEZsYWdzPigoaW5zbiA+PiAyOSkgJiAxKTsKKyAgICAg
ICAgc2hpZnQgPSAoaW5zbiA+PiAyMikgJiAzOworICAgICAgICBpbW0xMiA9IChpbnNuID4+IDEw
KSAmIDB4M2ZmOworICAgICAgICBybiA9IGRpc2Fzc2VtYmxlWE9yU3AoKGluc24gPj4gNSkgJiAw
eDFmKTsKKyAgICAgICAgcmQgPSBkaXNhc3NlbWJsZVhPclpyT3JTcChTLCBpbnNuICYgMHgxZik7
CisgICAgICAgIHJldHVybiAoaW5zbiAmIDB4MWYwMDAwMDApID09IDB4MTEwMDAwMDA7CisgICAg
fQorCisgICAgc3RhdGljIGJvb2wgZGlzYXNzZW1ibGVMb2FkU3RvcmVSZWdpc3RlclVuc2lnbmVk
SW1tZWRpYXRlKHZvaWQqIGFkZHJlc3MsIE1lbU9wU2l6ZSYgc2l6ZSwgYm9vbCYgViwgTWVtT3Am
IG9wYywgaW50JiBpbW0xMiwgUmVnaXN0ZXJJRCYgcm4sIFJlZ2lzdGVySUQmIHJ0KQorICAgIHsK
KyAgICAgICAgaW50IGluc24gPSAqc3RhdGljX2Nhc3Q8aW50Kj4oYWRkcmVzcyk7CisgICAgICAg
IHNpemUgPSBzdGF0aWNfY2FzdDxNZW1PcFNpemU+KChpbnNuID4+IDMwKSAmIDMpOworICAgICAg
ICBWID0gKGluc24gPj4gMjYpICYgMTsKKyAgICAgICAgb3BjID0gc3RhdGljX2Nhc3Q8TWVtT3A+
KChpbnNuID4+IDIyKSAmIDMpOworICAgICAgICBpbW0xMiA9IChpbnNuID4+IDEwKSAmIDB4ZmZm
OworICAgICAgICBybiA9IGRpc2Fzc2VtYmxlWE9yU3AoKGluc24gPj4gNSkgJiAweDFmKTsKKyAg
ICAgICAgcnQgPSBkaXNhc3NlbWJsZVhPclpyKGluc24gJiAweDFmKTsKKyAgICAgICAgcmV0dXJu
IChpbnNuICYgMHgzYjAwMDAwMCkgPT0gMHgzOTAwMDAwMDsKKyAgICB9CisKKyAgICBzdGF0aWMg
Ym9vbCBkaXNhc3NlbWJsZU1vdmVXaWRlSW1lZGlhdGUodm9pZCogYWRkcmVzcywgRGF0YXNpemUm
IHNmLCBNb3ZlV2lkZU9wJiBvcGMsIGludCYgaHcsIHVpbnQxNl90JiBpbW0xNiwgUmVnaXN0ZXJJ
RCYgcmQpCisgICAgeworICAgICAgICBpbnQgaW5zbiA9ICpzdGF0aWNfY2FzdDxpbnQqPihhZGRy
ZXNzKTsKKyAgICAgICAgc2YgPSBzdGF0aWNfY2FzdDxEYXRhc2l6ZT4oKGluc24gPj4gMzEpICYg
MSk7CisgICAgICAgIG9wYyA9IHN0YXRpY19jYXN0PE1vdmVXaWRlT3A+KChpbnNuID4+IDI5KSAm
IDMpOworICAgICAgICBodyA9IChpbnNuID4+IDIxKSAmIDM7CisgICAgICAgIGltbTE2ID0gaW5z
biA+PiA1OworICAgICAgICByZCA9IGRpc2Fzc2VtYmxlWE9yWnIoaW5zbiAmIDB4MWYpOworICAg
ICAgICByZXR1cm4gKGluc24gJiAweDFmODAwMDAwKSA9PSAweDEyODAwMDAwOworICAgIH0KKwor
ICAgIHN0YXRpYyBib29sIGRpc2Fzc2VtYmxlTm9wKHZvaWQqIGFkZHJlc3MpCisgICAgeworICAg
ICAgICB1bnNpZ25lZCBpbnQgaW5zbiA9ICpzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQqPihhZGRy
ZXNzKTsKKyAgICAgICAgcmV0dXJuIGluc24gPT0gMHhkNTAzMjAxZjsKKyAgICB9CisKKyAgICBz
dGF0aWMgYm9vbCBkaXNhc3NlbWJsZUNvbXBhcmVBbmRCcmFuY2hJbW1lZGlhdGUodm9pZCogYWRk
cmVzcywgRGF0YXNpemUmIHNmLCBib29sJiBvcCwgaW50JiBpbW0xOSwgUmVnaXN0ZXJJRCYgcnQp
CisgICAgeworICAgICAgICBpbnQgaW5zbiA9ICpzdGF0aWNfY2FzdDxpbnQqPihhZGRyZXNzKTsK
KyAgICAgICAgc2YgPSBzdGF0aWNfY2FzdDxEYXRhc2l6ZT4oKGluc24gPj4gMzEpICYgMSk7Cisg
ICAgICAgIG9wID0gKGluc24gPj4gMjQpICYgMHgxOworICAgICAgICBpbW0xOSA9IChpbnNuIDw8
IDgpID4+IDEzOworICAgICAgICBydCA9IHN0YXRpY19jYXN0PFJlZ2lzdGVySUQ+KGluc24gJiAw
eDFmKTsKKyAgICAgICAgcmV0dXJuIChpbnNuICYgMHg3ZTAwMDAwMCkgPT0gMHgzNDAwMDAwMDsK
KyAgICAgICAgCisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZGlzYXNzZW1ibGVDb25kaXRpb25h
bEJyYW5jaEltbWVkaWF0ZSh2b2lkKiBhZGRyZXNzLCB1bnNpZ25lZCYgb3AwMSwgaW50JiBpbW0x
OSwgQ29uZGl0aW9uICZjb25kaXRpb24pCisgICAgeworICAgICAgICBpbnQgaW5zbiA9ICpzdGF0
aWNfY2FzdDxpbnQqPihhZGRyZXNzKTsKKyAgICAgICAgb3AwMSA9ICgoaW5zbiA+PiAyMykgJiAw
eDIpIHwgKChpbnNuID4+IDQpICYgMHgxKTsKKyAgICAgICAgaW1tMTkgPSAoaW5zbiA8PCA4KSA+
PiAxMzsKKyAgICAgICAgY29uZGl0aW9uID0gc3RhdGljX2Nhc3Q8Q29uZGl0aW9uPihpbnNuICYg
MHhmKTsKKyAgICAgICAgcmV0dXJuIChpbnNuICYgMHhmZTAwMDAwMCkgPT0gMHg1NDAwMDAwMDsK
KyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBkaXNhc3NlbWJsZVRlc3RBbmRCcmFuY2hJbW1lZGlh
dGUodm9pZCogYWRkcmVzcywgYm9vbCYgb3AsIHVuc2lnbmVkJiBiaXROdW1iZXIsIGludCYgaW1t
MTQsIFJlZ2lzdGVySUQmIHJ0KQorICAgIHsKKyAgICAgICAgaW50IGluc24gPSAqc3RhdGljX2Nh
c3Q8aW50Kj4oYWRkcmVzcyk7CisgICAgICAgIG9wID0gKGluc24gPj4gMjQpICYgMHgxOworICAg
ICAgICBpbW0xNCA9IChpbnNuIDw8IDEzKSA+PiAxODsKKyAgICAgICAgYml0TnVtYmVyID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KCgoKGluc24gPj4gMjYpICYgMHgyMCkpIHwgKChpbnNuID4gMTkp
ICYgMHgxZikpOworICAgICAgICBydCA9IHN0YXRpY19jYXN0PFJlZ2lzdGVySUQ+KGluc24gJiAw
eDFmKTsKKyAgICAgICAgcmV0dXJuIChpbnNuICYgMHg3ZTAwMDAwMCkgPT0gMHgzNjAwMDAwMDsK
KyAgICAgICAgCisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZGlzYXNzZW1ibGVVbmNvbmRpdGlv
bmFsQnJhbmNoSW1tZWRpYXRlKHZvaWQqIGFkZHJlc3MsIGJvb2wmIG9wLCBpbnQmIGltbTI2KQor
ICAgIHsKKyAgICAgICAgaW50IGluc24gPSAqc3RhdGljX2Nhc3Q8aW50Kj4oYWRkcmVzcyk7Cisg
ICAgICAgIG9wID0gKGluc24gPj4gMzEpICYgMTsKKyAgICAgICAgaW1tMjYgPSAoaW5zbiA8PCA2
KSA+PiA2OworICAgICAgICByZXR1cm4gKGluc24gJiAweDdjMDAwMDAwKSA9PSAweDE0MDAwMDAw
OworICAgIH0KKworICAgIHN0YXRpYyBpbnQgeE9yU3AoUmVnaXN0ZXJJRCByZWcpIHsgQVNTRVJU
KCFpc1pyKHJlZykpOyByZXR1cm4gcmVnOyB9CisgICAgc3RhdGljIGludCB4T3JacihSZWdpc3Rl
cklEIHJlZykgeyBBU1NFUlQoIWlzU3AocmVnKSk7IHJldHVybiByZWcgJiAzMTsgfQorICAgIHN0
YXRpYyBGUFJlZ2lzdGVySUQgeE9yWnJBc0ZQUihSZWdpc3RlcklEIHJlZykgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RlBSZWdpc3RlcklEPih4T3JacihyZWcpKTsgfQorICAgIHN0YXRpYyBpbnQgeE9y
WnJPclNwKGJvb2wgdXNlWnIsIFJlZ2lzdGVySUQgcmVnKSB7IHJldHVybiB1c2VaciA/IHhPclpy
KHJlZykgOiB4T3JTcChyZWcpOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaW5zbihpbnQg
aW5zdHJ1Y3Rpb24pCisgICAgeworICAgICAgICBtX2J1ZmZlci5wdXRJbnQoaW5zdHJ1Y3Rpb24p
OworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGludCBhZGRTdWJ0cmFjdEV4dGVu
ZGVkUmVnaXN0ZXIoRGF0YXNpemUgc2YsIEFkZE9wIG9wLCBTZXRGbGFncyBTLCBSZWdpc3RlcklE
IHJtLCBFeHRlbmRUeXBlIG9wdGlvbiwgaW50IGltbTMsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVy
SUQgcmQpCisgICAgeworICAgICAgICBBU1NFUlQoaW1tMyA8IDUpOworICAgICAgICAvLyBUaGUg
b25seSBhbGxvY2F0ZWQgdmFsdWVzIGZvciBvcHQgaXMgMC4KKyAgICAgICAgY29uc3QgaW50IG9w
dCA9IDA7CisgICAgICAgIHJldHVybiAoMHgwYjIwMDAwMCB8IHNmIDw8IDMxIHwgb3AgPDwgMzAg
fCBTIDw8IDI5IHwgb3B0IDw8IDIyIHwgeE9yWnIocm0pIDw8IDE2IHwgb3B0aW9uIDw8IDEzIHwg
KGltbTMgJiAweDcpIDw8IDEwIHwgeE9yU3Aocm4pIDw8IDUgfCB4T3Jack9yU3AoUywgcmQpKTsK
KyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBpbnQgYWRkU3VidHJhY3RJbW1lZGlh
dGUoRGF0YXNpemUgc2YsIEFkZE9wIG9wLCBTZXRGbGFncyBTLCBpbnQgc2hpZnQsIGludCBpbW0x
MiwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCByZCkKKyAgICB7CisgICAgICAgIEFTU0VSVChz
aGlmdCA8IDIpOworICAgICAgICBBU1NFUlQoaXNVSW50MTIoaW1tMTIpKTsKKyAgICAgICAgcmV0
dXJuICgweDExMDAwMDAwIHwgc2YgPDwgMzEgfCBvcCA8PCAzMCB8IFMgPDwgMjkgfCBzaGlmdCA8
PCAyMiB8IChpbW0xMiAmIDB4ZmZmKSA8PCAxMCB8IHhPclNwKHJuKSA8PCA1IHwgeE9yWnJPclNw
KFMsIHJkKSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgaW50IGFkZFN1YnRy
YWN0U2hpZnRlZFJlZ2lzdGVyKERhdGFzaXplIHNmLCBBZGRPcCBvcCwgU2V0RmxhZ3MgUywgU2hp
ZnRUeXBlIHNoaWZ0LCBSZWdpc3RlcklEIHJtLCBpbnQgaW1tNiwgUmVnaXN0ZXJJRCBybiwgUmVn
aXN0ZXJJRCByZCkKKyAgICB7CisgICAgICAgIEFTU0VSVChzaGlmdCA8IDMpOworICAgICAgICBB
U1NFUlQoIShpbW02ICYgKHNmID8gfjYzIDogfjMxKSkpOworICAgICAgICByZXR1cm4gKDB4MGIw
MDAwMDAgfCBzZiA8PCAzMSB8IG9wIDw8IDMwIHwgUyA8PCAyOSB8IHNoaWZ0IDw8IDIyIHwgeE9y
WnIocm0pIDw8IDE2IHwgKGltbTYgJiAweDNmKSA8PCAxMCB8IHhPclpyKHJuKSA8PCA1IHwgeE9y
WnIocmQpKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBpbnQgYWRkU3VidHJh
Y3RXaXRoQ2FycnkoRGF0YXNpemUgc2YsIEFkZE9wIG9wLCBTZXRGbGFncyBTLCBSZWdpc3RlcklE
IHJtLCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJkKQorICAgIHsKKyAgICAgICAgY29uc3Qg
aW50IG9wY29kZTIgPSAwOworICAgICAgICByZXR1cm4gKDB4MWEwMDAwMDAgfCBzZiA8PCAzMSB8
IG9wIDw8IDMwIHwgUyA8PCAyOSB8IHhPclpyKHJtKSA8PCAxNiB8IG9wY29kZTIgPDwgMTAgfCB4
T3JacihybikgPDwgNSB8IHhPclpyKHJkKSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBz
dGF0aWMgaW50IGJpdGZpZWxkKERhdGFzaXplIHNmLCBCaXRmaWVsZE9wIG9wYywgaW50IGltbXIs
IGludCBpbW1zLCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJkKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKGltbXIgPCAoc2YgPyA2NCA6IDMyKSk7CisgICAgICAgIEFTU0VSVChpbW1zIDwgKHNm
ID8gNjQgOiAzMikpOworICAgICAgICBjb25zdCBpbnQgTiA9IHNmOworICAgICAgICByZXR1cm4g
KDB4MTMwMDAwMDAgfCBzZiA8PCAzMSB8IG9wYyA8PCAyOSB8IE4gPDwgMjIgfCBpbW1yIDw8IDE2
IHwgaW1tcyA8PCAxMCB8IHhPclpyKHJuKSA8PCA1IHwgeE9yWnIocmQpKTsKKyAgICB9CisKKyAg
ICAvLyAnb3AnIG1lYW5zIG5lZ2F0ZQorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGludCBjb21w
YXJlQW5kQnJhbmNoSW1tZWRpYXRlKERhdGFzaXplIHNmLCBib29sIG9wLCBpbnQzMl90IGltbTE5
LCBSZWdpc3RlcklEIHJ0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGltbTE5ID09IChpbW0xOSA8
PCAxMykgPj4gMTMpOworICAgICAgICByZXR1cm4gKDB4MzQwMDAwMDAgfCBzZiA8PCAzMSB8IG9w
IDw8IDI0IHwgKGltbTE5ICYgMHg3ZmZmZikgPDwgNSB8IHhPclpyKHJ0KSk7CisgICAgfQorCisg
ICAgQUxXQVlTX0lOTElORSBzdGF0aWMgaW50IGNvbmRpdGlvbmFsQnJhbmNoSW1tZWRpYXRlKGlu
dDMyX3QgaW1tMTksIENvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGltbTE5
ID09IChpbW0xOSA8PCAxMykgPj4gMTMpOworICAgICAgICBBU1NFUlQoIShjb25kICYgfjE1KSk7
CisgICAgICAgIC8vIFRoZSBvbmx5IGFsbG9jYXRlZCB2YWx1ZXMgZm9yIG8xICYgbzAgYXJlIDAu
CisgICAgICAgIGNvbnN0IGludCBvMSA9IDA7CisgICAgICAgIGNvbnN0IGludCBvMCA9IDA7Cisg
ICAgICAgIHJldHVybiAoMHg1NDAwMDAwMCB8IG8xIDw8IDI0IHwgKGltbTE5ICYgMHg3ZmZmZikg
PDwgNSB8IG8wIDw8IDQgfCBjb25kKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBpbnQgY29uZGl0aW9uYWxDb21wYXJlSW1tZWRpYXRlKERhdGFzaXplIHNmLCBBZGRPcCBvcCwg
aW50IGltbTUsIENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHJuLCBpbnQgbnpjdikKKyAgICB7
CisgICAgICAgIEFTU0VSVCghKGltbTUgJiB+MHgxZikpOworICAgICAgICBBU1NFUlQobnpjdiA8
IDE2KTsKKyAgICAgICAgY29uc3QgaW50IFMgPSAxOworICAgICAgICBjb25zdCBpbnQgbzIgPSAw
OworICAgICAgICBjb25zdCBpbnQgbzMgPSAwOworICAgICAgICByZXR1cm4gKDB4MWE0MDA4MDAg
fCBzZiA8PCAzMSB8IG9wIDw8IDMwIHwgUyA8PCAyOSB8IChpbW01ICYgMHgxZikgPDwgMTYgfCBj
b25kIDw8IDEyIHwgbzIgPDwgMTAgfCB4T3JacihybikgPDwgNSB8IG8zIDw8IDQgfCBuemN2KTsK
KyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBpbnQgY29uZGl0aW9uYWxDb21wYXJl
UmVnaXN0ZXIoRGF0YXNpemUgc2YsIEFkZE9wIG9wLCBSZWdpc3RlcklEIHJtLCBDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBybiwgaW50IG56Y3YpCisgICAgeworICAgICAgICBBU1NFUlQobnpj
diA8IDE2KTsKKyAgICAgICAgY29uc3QgaW50IFMgPSAxOworICAgICAgICBjb25zdCBpbnQgbzIg
PSAwOworICAgICAgICBjb25zdCBpbnQgbzMgPSAwOworICAgICAgICByZXR1cm4gKDB4MWE0MDAw
MDAgfCBzZiA8PCAzMSB8IG9wIDw8IDMwIHwgUyA8PCAyOSB8IHhPclpyKHJtKSA8PCAxNiB8IGNv
bmQgPDwgMTIgfCBvMiA8PCAxMCB8IHhPclpyKHJuKSA8PCA1IHwgbzMgPDwgNCB8IG56Y3YpOwor
ICAgIH0KKworICAgIC8vICdvcCcgbWVhbnMgbmVnYXRlCisgICAgLy8gJ29wMicgbWVhbnMgaW5j
cmVtZW50CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgaW50IGNvbmRpdGlvbmFsU2VsZWN0KERh
dGFzaXplIHNmLCBib29sIG9wLCBSZWdpc3RlcklEIHJtLCBDb25kaXRpb24gY29uZCwgYm9vbCBv
cDIsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcmQpCisgICAgeworICAgICAgICBjb25zdCBp
bnQgUyA9IDA7CisgICAgICAgIHJldHVybiAoMHgxYTgwMDAwMCB8IHNmIDw8IDMxIHwgb3AgPDwg
MzAgfCBTIDw8IDI5IHwgeE9yWnIocm0pIDw8IDE2IHwgY29uZCA8PCAxMiB8IG9wMiA8PCAxMCB8
IHhPclpyKHJuKSA8PCA1IHwgeE9yWnIocmQpKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBpbnQgZGF0YVByb2Nlc3NpbmcxU291cmNlKERhdGFzaXplIHNmLCBEYXRhT3AxU291
cmNlIG9wY29kZSwgUmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCByZCkKKyAgICB7CisgICAgICAg
IGNvbnN0IGludCBTID0gMDsKKyAgICAgICAgY29uc3QgaW50IG9wY29kZTIgPSAwOworICAgICAg
ICByZXR1cm4gKDB4NWFjMDAwMDAgfCBzZiA8PCAzMSB8IFMgPDwgMjkgfCBvcGNvZGUyIDw8IDE2
IHwgb3Bjb2RlIDw8IDEwIHwgeE9yWnIocm4pIDw8IDUgfCB4T3JacihyZCkpOworICAgIH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGludCBkYXRhUHJvY2Vzc2luZzJTb3VyY2UoRGF0YXNp
emUgc2YsIFJlZ2lzdGVySUQgcm0sIERhdGFPcDJTb3VyY2Ugb3Bjb2RlLCBSZWdpc3RlcklEIHJu
LCBSZWdpc3RlcklEIHJkKQorICAgIHsKKyAgICAgICAgY29uc3QgaW50IFMgPSAwOworICAgICAg
ICByZXR1cm4gKDB4MWFjMDAwMDAgfCBzZiA8PCAzMSB8IFMgPDwgMjkgfCB4T3JacihybSkgPDwg
MTYgfCBvcGNvZGUgPDwgMTAgfCB4T3JacihybikgPDwgNSB8IHhPclpyKHJkKSk7CisgICAgfQor
CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgaW50IGRhdGFQcm9jZXNzaW5nM1NvdXJjZShEYXRh
c2l6ZSBzZiwgRGF0YU9wM1NvdXJjZSBvcGNvZGUsIFJlZ2lzdGVySUQgcm0sIFJlZ2lzdGVySUQg
cmEsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcmQpCisgICAgeworICAgICAgICBpbnQgb3A1
NCA9IG9wY29kZSA+PiA0OworICAgICAgICBpbnQgb3AzMSA9IChvcGNvZGUgPj4gMSkgJiA3Owor
ICAgICAgICBpbnQgb3AwID0gb3Bjb2RlICYgMTsKKyAgICAgICAgcmV0dXJuICgweDFiMDAwMDAw
IHwgc2YgPDwgMzEgfCBvcDU0IDw8IDI5IHwgb3AzMSA8PCAyMSB8IHhPclpyKHJtKSA8PCAxNiB8
IG9wMCA8PCAxNSB8IHhPclpyKHJhKSA8PCAxMCB8IHhPclpyKHJuKSA8PCA1IHwgeE9yWnIocmQp
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBpbnQgZXhjZXBuR2VuZXJhdGlv
bihFeGNlcG5PcCBvcGMsIHVpbnQxNl90IGltbTE2LCBpbnQgTEwpCisgICAgeworICAgICAgICBB
U1NFUlQoKG9wYyA9PSBFeGNlcG5PcF9CUkVBS1BPSU5UIHx8IG9wYyA9PSBFeGNlcG5PcF9IQUxU
KSA/ICFMTCA6IChMTCAmJiAoTEwgPCA0KSkpOworICAgICAgICBjb25zdCBpbnQgb3AyID0gMDsK
KyAgICAgICAgcmV0dXJuICgweGQ0MDAwMDAwIHwgb3BjIDw8IDIxIHwgaW1tMTYgPDwgNSB8IG9w
MiA8PCAyIHwgTEwpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGludCBleHRy
YWN0KERhdGFzaXplIHNmLCBSZWdpc3RlcklEIHJtLCBpbnQgaW1tcywgUmVnaXN0ZXJJRCBybiwg
UmVnaXN0ZXJJRCByZCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbW1zIDwgKHNmID8gNjQgOiAz
MikpOworICAgICAgICBjb25zdCBpbnQgb3AyMSA9IDA7CisgICAgICAgIGNvbnN0IGludCBOID0g
c2Y7CisgICAgICAgIGNvbnN0IGludCBvMCA9IDA7CisgICAgICAgIHJldHVybiAoMHgxMzgwMDAw
MCB8IHNmIDw8IDMxIHwgb3AyMSA8PCAyOSB8IE4gPDwgMjIgfCBvMCA8PCAyMSB8IHhPclpyKHJt
KSA8PCAxNiB8IGltbXMgPDwgMTAgfCB4T3JacihybikgPDwgNSB8IHhPclpyKHJkKSk7CisgICAg
fQorCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgaW50IGZsb2F0aW5nUG9pbnRDb21wYXJlKERh
dGFzaXplIHR5cGUsIEZQUmVnaXN0ZXJJRCBybSwgRlBSZWdpc3RlcklEIHJuLCBGUENtcE9wIG9w
Y29kZTIpCisgICAgeworICAgICAgICBjb25zdCBpbnQgTSA9IDA7CisgICAgICAgIGNvbnN0IGlu
dCBTID0gMDsKKyAgICAgICAgY29uc3QgaW50IG9wID0gMDsKKyAgICAgICAgcmV0dXJuICgweDFl
MjAyMDAwIHwgTSA8PCAzMSB8IFMgPDwgMjkgfCB0eXBlIDw8IDIyIHwgcm0gPDwgMTYgfCBvcCA8
PCAxNCB8IHJuIDw8IDUgfCBvcGNvZGUyKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHN0
YXRpYyBpbnQgZmxvYXRpbmdQb2ludENvbmRpdGlvbmFsQ29tcGFyZShEYXRhc2l6ZSB0eXBlLCBG
UFJlZ2lzdGVySUQgcm0sIENvbmRpdGlvbiBjb25kLCBGUFJlZ2lzdGVySUQgcm4sIEZQQ29uZENt
cE9wIG9wLCBpbnQgbnpjdikKKyAgICB7CisgICAgICAgIEFTU0VSVChuemN2IDwgMTYpOworICAg
ICAgICBjb25zdCBpbnQgTSA9IDA7CisgICAgICAgIGNvbnN0IGludCBTID0gMDsKKyAgICAgICAg
cmV0dXJuICgweDFlMjAwNDAwIHwgTSA8PCAzMSB8IFMgPDwgMjkgfCB0eXBlIDw8IDIyIHwgcm0g
PDwgMTYgfCBjb25kIDw8IDEyIHwgcm4gPDwgNSB8IG9wIDw8IDQgfCBuemN2KTsKKyAgICB9CisK
KyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBpbnQgZmxvYXRpbmdQb2ludENvbmRpdGlvbmFsU2Vs
ZWN0KERhdGFzaXplIHR5cGUsIEZQUmVnaXN0ZXJJRCBybSwgQ29uZGl0aW9uIGNvbmQsIEZQUmVn
aXN0ZXJJRCBybiwgRlBSZWdpc3RlcklEIHJkKQorICAgIHsKKyAgICAgICAgY29uc3QgaW50IE0g
PSAwOworICAgICAgICBjb25zdCBpbnQgUyA9IDA7CisgICAgICAgIHJldHVybiAoMHgxZTIwMGMw
MCB8IE0gPDwgMzEgfCBTIDw8IDI5IHwgdHlwZSA8PCAyMiB8IHJtIDw8IDE2IHwgY29uZCA8PCAx
MiB8IHJuIDw8IDUgfCByZCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgaW50
IGZsb2F0aW5nUG9pbnRJbW1lZGlhdGUoRGF0YXNpemUgdHlwZSwgaW50IGltbTgsIEZQUmVnaXN0
ZXJJRCByZCkKKyAgICB7CisgICAgICAgIGNvbnN0IGludCBNID0gMDsKKyAgICAgICAgY29uc3Qg
aW50IFMgPSAwOworICAgICAgICBjb25zdCBpbnQgaW1tNSA9IDA7CisgICAgICAgIHJldHVybiAo
MHgxZTIwMTAwMCB8IE0gPDwgMzEgfCBTIDw8IDI5IHwgdHlwZSA8PCAyMiB8IChpbW04ICYgMHhm
ZikgPDwgMTMgfCBpbW01IDw8IDUgfCByZCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBz
dGF0aWMgaW50IGZsb2F0aW5nUG9pbnRJbnRlZ2VyQ29udmVyc2lvbnMoRGF0YXNpemUgc2YsIERh
dGFzaXplIHR5cGUsIEZQSW50Q29udk9wIHJtb2RlT3Bjb2RlLCBGUFJlZ2lzdGVySUQgcm4sIEZQ
UmVnaXN0ZXJJRCByZCkKKyAgICB7CisgICAgICAgIGNvbnN0IGludCBTID0gMDsKKyAgICAgICAg
cmV0dXJuICgweDFlMjAwMDAwIHwgc2YgPDwgMzEgfCBTIDw8IDI5IHwgdHlwZSA8PCAyMiB8IHJt
b2RlT3Bjb2RlIDw8IDE2IHwgcm4gPDwgNSB8IHJkKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBpbnQgZmxvYXRpbmdQb2ludEludGVnZXJDb252ZXJzaW9ucyhEYXRhc2l6ZSBz
ZiwgRGF0YXNpemUgdHlwZSwgRlBJbnRDb252T3Agcm1vZGVPcGNvZGUsIEZQUmVnaXN0ZXJJRCBy
biwgUmVnaXN0ZXJJRCByZCkKKyAgICB7CisgICAgICAgIHJldHVybiBmbG9hdGluZ1BvaW50SW50
ZWdlckNvbnZlcnNpb25zKHNmLCB0eXBlLCBybW9kZU9wY29kZSwgcm4sIHhPclpyQXNGUFIocmQp
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBpbnQgZmxvYXRpbmdQb2ludElu
dGVnZXJDb252ZXJzaW9ucyhEYXRhc2l6ZSBzZiwgRGF0YXNpemUgdHlwZSwgRlBJbnRDb252T3Ag
cm1vZGVPcGNvZGUsIFJlZ2lzdGVySUQgcm4sIEZQUmVnaXN0ZXJJRCByZCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBmbG9hdGluZ1BvaW50SW50ZWdlckNvbnZlcnNpb25zKHNmLCB0eXBlLCBybW9k
ZU9wY29kZSwgeE9yWnJBc0ZQUihybiksIHJkKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBpbnQgZmxvYXRpbmdQb2ludERhdGFQcm9jZXNzaW5nMVNvdXJjZShEYXRhc2l6ZSB0
eXBlLCBGUERhdGFPcDFTb3VyY2Ugb3Bjb2RlLCBGUFJlZ2lzdGVySUQgcm4sIEZQUmVnaXN0ZXJJ
RCByZCkKKyAgICB7CisgICAgICAgIGNvbnN0IGludCBNID0gMDsKKyAgICAgICAgY29uc3QgaW50
IFMgPSAwOworICAgICAgICByZXR1cm4gKDB4MWUyMDQwMDAgfCBNIDw8IDMxIHwgUyA8PCAyOSB8
IHR5cGUgPDwgMjIgfCBvcGNvZGUgPDwgMTUgfCBybiA8PCA1IHwgcmQpOworICAgIH0KKworICAg
IEFMV0FZU19JTkxJTkUgc3RhdGljIGludCBmbG9hdGluZ1BvaW50RGF0YVByb2Nlc3NpbmcyU291
cmNlKERhdGFzaXplIHR5cGUsIEZQUmVnaXN0ZXJJRCBybSwgRlBEYXRhT3AyU291cmNlIG9wY29k
ZSwgRlBSZWdpc3RlcklEIHJuLCBGUFJlZ2lzdGVySUQgcmQpCisgICAgeworICAgICAgICBjb25z
dCBpbnQgTSA9IDA7CisgICAgICAgIGNvbnN0IGludCBTID0gMDsKKyAgICAgICAgcmV0dXJuICgw
eDFlMjAwODAwIHwgTSA8PCAzMSB8IFMgPDwgMjkgfCB0eXBlIDw8IDIyIHwgcm0gPDwgMTYgfCBv
cGNvZGUgPDwgMTIgfCBybiA8PCA1IHwgcmQpOworICAgIH0KKworICAgIC8vICdvMScgbWVhbnMg
bmVnYXRlCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgaW50IGZsb2F0aW5nUG9pbnREYXRhUHJv
Y2Vzc2luZzNTb3VyY2UoRGF0YXNpemUgdHlwZSwgYm9vbCBvMSwgRlBSZWdpc3RlcklEIHJtLCBB
ZGRPcCBvMiwgRlBSZWdpc3RlcklEIHJhLCBGUFJlZ2lzdGVySUQgcm4sIEZQUmVnaXN0ZXJJRCBy
ZCkKKyAgICB7CisgICAgICAgIGNvbnN0IGludCBNID0gMDsKKyAgICAgICAgY29uc3QgaW50IFMg
PSAwOworICAgICAgICByZXR1cm4gKDB4MWYwMDAwMDAgfCBNIDw8IDMxIHwgUyA8PCAyOSB8IHR5
cGUgPDwgMjIgfCBvMSA8PCAyMSB8IHJtIDw8IDE2IHwgbzIgPDwgMTUgfCByYSA8PCAxMCB8IHJu
IDw8IDUgfCByZCk7CisgICAgfQorCisgICAgLy8gJ1YnIG1lYW5zIHZlY3RvcgorICAgIEFMV0FZ
U19JTkxJTkUgc3RhdGljIGludCBsb2FkUmVnaXN0ZXJMaXRlcmFsKExkckxpdGVyYWxPcCBvcGMs
IGJvb2wgViwgaW50IGltbTE5LCBGUFJlZ2lzdGVySUQgcnQpCisgICAgeworICAgICAgICBBU1NF
UlQoKChpbW0xOSA8PCAxMykgPj4gMTMpID09IGltbTE5KTsKKyAgICAgICAgcmV0dXJuICgweDE4
MDAwMDAwIHwgb3BjIDw8IDMwIHwgViA8PCAyNiB8IChpbW0xOSAmIDB4N2ZmZmYpIDw8IDUgfCBy
dCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgaW50IGxvYWRSZWdpc3Rlckxp
dGVyYWwoTGRyTGl0ZXJhbE9wIG9wYywgYm9vbCBWLCBpbnQgaW1tMTksIFJlZ2lzdGVySUQgcnQp
CisgICAgeworICAgICAgICByZXR1cm4gbG9hZFJlZ2lzdGVyTGl0ZXJhbChvcGMsIFYsIGltbTE5
LCB4T3JackFzRlBSKHJ0KSk7CisgICAgfQorCisgICAgLy8gJ1YnIG1lYW5zIHZlY3RvcgorICAg
IEFMV0FZU19JTkxJTkUgc3RhdGljIGludCBsb2FkU3RvcmVSZWdpc3RlclBvc3RJbmRleChNZW1P
cFNpemUgc2l6ZSwgYm9vbCBWLCBNZW1PcCBvcGMsIGludCBpbW05LCBSZWdpc3RlcklEIHJuLCBG
UFJlZ2lzdGVySUQgcnQpCisgICAgeworICAgICAgICBBU1NFUlQoIShzaXplICYmIFYgJiYgKG9w
YyAmIDIpKSk7IC8vIE1heGltdW0gdmVjdG9yIHNpemUgaXMgMTI4IGJpdHMuCisgICAgICAgIEFT
U0VSVCghKChzaXplICYgMikgJiYgIVYgJiYgKG9wYyA9PSAzKSkpOyAvLyBzaWduZWQgMzItYml0
IGxvYWQgbXVzdCBiZSBleHRlbmRpbmcgZnJvbSA4LzE2IGJpdHMuCisgICAgICAgIEFTU0VSVChp
c0ludDkoaW1tOSkpOworICAgICAgICByZXR1cm4gKDB4MzgwMDA0MDAgfCBzaXplIDw8IDMwIHwg
ViA8PCAyNiB8IG9wYyA8PCAyMiB8IChpbW05ICYgMHgxZmYpIDw8IDEyIHwgeE9yU3Aocm4pIDw8
IDUgfCBydCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgaW50IGxvYWRTdG9y
ZVJlZ2lzdGVyUG9zdEluZGV4KE1lbU9wU2l6ZSBzaXplLCBib29sIFYsIE1lbU9wIG9wYywgaW50
IGltbTksIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcnQpCisgICAgeworICAgICAgICByZXR1
cm4gbG9hZFN0b3JlUmVnaXN0ZXJQb3N0SW5kZXgoc2l6ZSwgViwgb3BjLCBpbW05LCBybiwgeE9y
WnJBc0ZQUihydCkpOworICAgIH0KKworICAgIC8vICdWJyBtZWFucyB2ZWN0b3IKKyAgICBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBpbnQgbG9hZFN0b3JlUmVnaXN0ZXJQcmVJbmRleChNZW1PcFNpemUg
c2l6ZSwgYm9vbCBWLCBNZW1PcCBvcGMsIGludCBpbW05LCBSZWdpc3RlcklEIHJuLCBGUFJlZ2lz
dGVySUQgcnQpCisgICAgeworICAgICAgICBBU1NFUlQoIShzaXplICYmIFYgJiYgKG9wYyAmIDIp
KSk7IC8vIE1heGltdW0gdmVjdG9yIHNpemUgaXMgMTI4IGJpdHMuCisgICAgICAgIEFTU0VSVCgh
KChzaXplICYgMikgJiYgIVYgJiYgKG9wYyA9PSAzKSkpOyAvLyBzaWduZWQgMzItYml0IGxvYWQg
bXVzdCBiZSBleHRlbmRpbmcgZnJvbSA4LzE2IGJpdHMuCisgICAgICAgIEFTU0VSVChpc0ludDko
aW1tOSkpOworICAgICAgICByZXR1cm4gKDB4MzgwMDBjMDAgfCBzaXplIDw8IDMwIHwgViA8PCAy
NiB8IG9wYyA8PCAyMiB8IChpbW05ICYgMHgxZmYpIDw8IDEyIHwgeE9yU3Aocm4pIDw8IDUgfCBy
dCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgaW50IGxvYWRTdG9yZVJlZ2lz
dGVyUHJlSW5kZXgoTWVtT3BTaXplIHNpemUsIGJvb2wgViwgTWVtT3Agb3BjLCBpbnQgaW1tOSwg
UmVnaXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBydCkKKyAgICB7CisgICAgICAgIHJldHVybiBsb2Fk
U3RvcmVSZWdpc3RlclByZUluZGV4KHNpemUsIFYsIG9wYywgaW1tOSwgcm4sIHhPclpyQXNGUFIo
cnQpKTsKKyAgICB9CisKKyAgICAvLyAnVicgbWVhbnMgdmVjdG9yCisgICAgLy8gJ1MnIG1lYW5z
IHNoaWZ0IHJtCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgaW50IGxvYWRTdG9yZVJlZ2lzdGVy
UmVnaXN0ZXJPZmZzZXQoTWVtT3BTaXplIHNpemUsIGJvb2wgViwgTWVtT3Agb3BjLCBSZWdpc3Rl
cklEIHJtLCBFeHRlbmRUeXBlIG9wdGlvbiwgYm9vbCBTLCBSZWdpc3RlcklEIHJuLCBGUFJlZ2lz
dGVySUQgcnQpCisgICAgeworICAgICAgICBBU1NFUlQoIShzaXplICYmIFYgJiYgKG9wYyAmIDIp
KSk7IC8vIE1heGltdW0gdmVjdG9yIHNpemUgaXMgMTI4IGJpdHMuCisgICAgICAgIEFTU0VSVCgh
KChzaXplICYgMikgJiYgIVYgJiYgKG9wYyA9PSAzKSkpOyAvLyBzaWduZWQgMzItYml0IGxvYWQg
bXVzdCBiZSBleHRlbmRpbmcgZnJvbSA4LzE2IGJpdHMuCisgICAgICAgIEFTU0VSVChvcHRpb24g
JiAyKTsgLy8gVGhlIEV4dGVuZFR5cGUgZm9yIHRoZSBhZGRyZXNzIG11c3QgYmUgMzIvNjQgYml0
LCBzaWduZWQgb3IgdW5zaWduZWQgLSBub3QgOC8xNmJpdC4KKyAgICAgICAgcmV0dXJuICgweDM4
MjAwODAwIHwgc2l6ZSA8PCAzMCB8IFYgPDwgMjYgfCBvcGMgPDwgMjIgfCB4T3JacihybSkgPDwg
MTYgfCBvcHRpb24gPDwgMTMgfCBTIDw8IDEyIHwgeE9yU3Aocm4pIDw8IDUgfCBydCk7CisgICAg
fQorCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgaW50IGxvYWRTdG9yZVJlZ2lzdGVyUmVnaXN0
ZXJPZmZzZXQoTWVtT3BTaXplIHNpemUsIGJvb2wgViwgTWVtT3Agb3BjLCBSZWdpc3RlcklEIHJt
LCBFeHRlbmRUeXBlIG9wdGlvbiwgYm9vbCBTLCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJ0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGxvYWRTdG9yZVJlZ2lzdGVyUmVnaXN0ZXJPZmZzZXQo
c2l6ZSwgViwgb3BjLCBybSwgb3B0aW9uLCBTLCBybiwgeE9yWnJBc0ZQUihydCkpOworICAgIH0K
KworICAgIC8vICdWJyBtZWFucyB2ZWN0b3IKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBpbnQg
bG9hZFN0b3JlUmVnaXN0ZXJVbnNjYWxlZEltbWVkaWF0ZShNZW1PcFNpemUgc2l6ZSwgYm9vbCBW
LCBNZW1PcCBvcGMsIGludCBpbW05LCBSZWdpc3RlcklEIHJuLCBGUFJlZ2lzdGVySUQgcnQpCisg
ICAgeworICAgICAgICBBU1NFUlQoIShzaXplICYmIFYgJiYgKG9wYyAmIDIpKSk7IC8vIE1heGlt
dW0gdmVjdG9yIHNpemUgaXMgMTI4IGJpdHMuCisgICAgICAgIEFTU0VSVCghKChzaXplICYgMikg
JiYgIVYgJiYgKG9wYyA9PSAzKSkpOyAvLyBzaWduZWQgMzItYml0IGxvYWQgbXVzdCBiZSBleHRl
bmRpbmcgZnJvbSA4LzE2IGJpdHMuCisgICAgICAgIEFTU0VSVChpc0ludDkoaW1tOSkpOworICAg
ICAgICByZXR1cm4gKDB4MzgwMDAwMDAgfCBzaXplIDw8IDMwIHwgViA8PCAyNiB8IG9wYyA8PCAy
MiB8IChpbW05ICYgMHgxZmYpIDw8IDEyIHwgeE9yU3Aocm4pIDw8IDUgfCBydCk7CisgICAgfQor
CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgaW50IGxvYWRTdG9yZVJlZ2lzdGVyVW5zY2FsZWRJ
bW1lZGlhdGUoTWVtT3BTaXplIHNpemUsIGJvb2wgViwgTWVtT3Agb3BjLCBpbnQgaW1tOSwgUmVn
aXN0ZXJJRCBybiwgUmVnaXN0ZXJJRCBydCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0ludDko
aW1tOSkpOworICAgICAgICByZXR1cm4gbG9hZFN0b3JlUmVnaXN0ZXJVbnNjYWxlZEltbWVkaWF0
ZShzaXplLCBWLCBvcGMsIGltbTksIHJuLCB4T3JackFzRlBSKHJ0KSk7CisgICAgfQorCisgICAg
Ly8gJ1YnIG1lYW5zIHZlY3RvcgorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGludCBsb2FkU3Rv
cmVSZWdpc3RlclVuc2lnbmVkSW1tZWRpYXRlKE1lbU9wU2l6ZSBzaXplLCBib29sIFYsIE1lbU9w
IG9wYywgaW50IGltbTEyLCBSZWdpc3RlcklEIHJuLCBGUFJlZ2lzdGVySUQgcnQpCisgICAgewor
ICAgICAgICBBU1NFUlQoIShzaXplICYmIFYgJiYgKG9wYyAmIDIpKSk7IC8vIE1heGltdW0gdmVj
dG9yIHNpemUgaXMgMTI4IGJpdHMuCisgICAgICAgIEFTU0VSVCghKChzaXplICYgMikgJiYgIVYg
JiYgKG9wYyA9PSAzKSkpOyAvLyBzaWduZWQgMzItYml0IGxvYWQgbXVzdCBiZSBleHRlbmRpbmcg
ZnJvbSA4LzE2IGJpdHMuCisgICAgICAgIEFTU0VSVChpc1VJbnQxMihpbW0xMikpOworICAgICAg
ICByZXR1cm4gKDB4MzkwMDAwMDAgfCBzaXplIDw8IDMwIHwgViA8PCAyNiB8IG9wYyA8PCAyMiB8
IChpbW0xMiAmIDB4ZmZmKSA8PCAxMCB8IHhPclNwKHJuKSA8PCA1IHwgcnQpOworICAgIH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGludCBsb2FkU3RvcmVSZWdpc3RlclVuc2lnbmVkSW1t
ZWRpYXRlKE1lbU9wU2l6ZSBzaXplLCBib29sIFYsIE1lbU9wIG9wYywgaW50IGltbTEyLCBSZWdp
c3RlcklEIHJuLCBSZWdpc3RlcklEIHJ0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGxvYWRTdG9y
ZVJlZ2lzdGVyVW5zaWduZWRJbW1lZGlhdGUoc2l6ZSwgViwgb3BjLCBpbW0xMiwgcm4sIHhPclpy
QXNGUFIocnQpKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBpbnQgbG9naWNh
bEltbWVkaWF0ZShEYXRhc2l6ZSBzZiwgTG9naWNhbE9wIG9wYywgaW50IE5faW1tcl9pbW1zLCBS
ZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJkKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEoTl9p
bW1yX2ltbXMgJiAoc2YgPyB+MHgxZmZmIDogfjB4ZmZmKSkpOworICAgICAgICByZXR1cm4gKDB4
MTIwMDAwMDAgfCBzZiA8PCAzMSB8IG9wYyA8PCAyOSB8IE5faW1tcl9pbW1zIDw8IDEwIHwgeE9y
WnIocm4pIDw8IDUgfCB4T3Jack9yU3Aob3BjID09IExvZ2ljYWxPcF9BTkRTLCByZCkpOworICAg
IH0KKworICAgIC8vICdOJyBtZWFucyBuZWdhdGUgcm0KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBpbnQgbG9naWNhbFNoaWZ0ZWRSZWdpc3RlcihEYXRhc2l6ZSBzZiwgTG9naWNhbE9wIG9wYywg
U2hpZnRUeXBlIHNoaWZ0LCBib29sIE4sIFJlZ2lzdGVySUQgcm0sIGludCBpbW02LCBSZWdpc3Rl
cklEIHJuLCBSZWdpc3RlcklEIHJkKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEoaW1tNiAmIChz
ZiA/IH42MyA6IH4zMSkpKTsKKyAgICAgICAgcmV0dXJuICgweDBhMDAwMDAwIHwgc2YgPDwgMzEg
fCBvcGMgPDwgMjkgfCBzaGlmdCA8PCAyMiB8IE4gPDwgMjEgfCB4T3JacihybSkgPDwgMTYgfCAo
aW1tNiAmIDB4M2YpIDw8IDEwIHwgeE9yWnIocm4pIDw8IDUgfCB4T3JacihyZCkpOworICAgIH0K
KworICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGludCBtb3ZlV2lkZUltZWRpYXRlKERhdGFzaXpl
IHNmLCBNb3ZlV2lkZU9wIG9wYywgaW50IGh3LCB1aW50MTZfdCBpbW0xNiwgUmVnaXN0ZXJJRCBy
ZCkKKyAgICB7CisgICAgICAgIEFTU0VSVChodyA8IChzZiA/IDQgOiAyKSk7CisgICAgICAgIHJl
dHVybiAoMHgxMjgwMDAwMCB8IHNmIDw8IDMxIHwgb3BjIDw8IDI5IHwgaHcgPDwgMjEgfCAoaW50
KWltbTE2IDw8IDUgfCB4T3JacihyZCkpOworICAgIH0KKworICAgIC8vICdvcCcgbWVhbnMgbGlu
aworICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGludCB1bmNvbmRpdGlvbmFsQnJhbmNoSW1tZWRp
YXRlKGJvb2wgb3AsIGludDMyX3QgaW1tMjYpCisgICAgeworICAgICAgICBBU1NFUlQoaW1tMjYg
PT0gKGltbTI2IDw8IDYpID4+IDYpOworICAgICAgICByZXR1cm4gKDB4MTQwMDAwMDAgfCBvcCA8
PCAzMSB8IChpbW0yNiAmIDB4M2ZmZmZmZikpOworICAgIH0KKworICAgIC8vICdvcCcgbWVhbnMg
cGFnZQorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGludCBwY1JlbGF0aXZlKGJvb2wgb3AsIGlu
dDMyX3QgaW1tMjEsIFJlZ2lzdGVySUQgcmQpCisgICAgeworICAgICAgICBBU1NFUlQoaW1tMjEg
PT0gKGltbTIxIDw8IDExKSA+PiAxMSk7CisgICAgICAgIGludDMyX3QgaW1tbG8gPSBpbW0yMSAm
IDM7CisgICAgICAgIGludDMyX3QgaW1taGkgPSAoaW1tMjEgPj4gMikgJiAweDdmZmZmOworICAg
ICAgICByZXR1cm4gKDB4MTAwMDAwMDAgfCBvcCA8PCAzMSB8IGltbWxvIDw8IDI5IHwgaW1taGkg
PDwgNSB8IHhPclpyKHJkKSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgaW50
IHN5c3RlbShib29sIEwsIGludCBvcDAsIGludCBvcDEsIGludCBjcm4sIGludCBjcm0sIGludCBv
cDIsIFJlZ2lzdGVySUQgcnQpCisgICAgeworICAgICAgICByZXR1cm4gKDB4ZDUwMDAwMDAgfCBM
IDw8IDIxIHwgb3AwIDw8IDE5IHwgb3AxIDw8IDE2IHwgY3JuIDw8IDEyIHwgY3JtIDw8IDggfCBv
cDIgPDwgNSB8IHhPclpyKHJ0KSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMg
aW50IGhpbnRQc2V1ZG8oaW50IGltbSkKKyAgICB7CisgICAgICAgIEFTU0VSVCghKGltbSAmIH4w
eDdmKSk7CisgICAgICAgIHJldHVybiBzeXN0ZW0oMCwgMCwgMywgMiwgKGltbSA+PiAzKSAmIDB4
ZiwgaW1tICYgMHg3LCBBUk02NFJlZ2lzdGVyczo6enIpOworICAgIH0KKworICAgIEFMV0FZU19J
TkxJTkUgc3RhdGljIGludCBub3BQc2V1ZG8oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGhpbnRQ
c2V1ZG8oMCk7CisgICAgfQorICAgIAorICAgIC8vICdvcCcgbWVhbnMgbmVnYXRlCisgICAgQUxX
QVlTX0lOTElORSBzdGF0aWMgaW50IHRlc3RBbmRCcmFuY2hJbW1lZGlhdGUoYm9vbCBvcCwgaW50
IGI1MCwgaW50IGltbTE0LCBSZWdpc3RlcklEIHJ0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEo
YjUwICYgfjB4M2YpKTsKKyAgICAgICAgQVNTRVJUKGltbTE0ID09IChpbW0xNCA8PCAxOCkgPj4g
MTgpOworICAgICAgICBpbnQgYjUgPSBiNTAgPj4gNTsKKyAgICAgICAgaW50IGI0MCA9IGI1MCAm
IDB4MWY7CisgICAgICAgIHJldHVybiAoMHgzNjAwMDAwMCB8IGI1IDw8IDMxIHwgb3AgPDwgMjQg
fCBiNDAgPDwgMTkgfCAoaW1tMTQgJiAweDNmZmYpIDw8IDUgfCB4T3JacihydCkpOworICAgIH0K
KworICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGludCB1bmNvbmRpdGlvbmFsQnJhbmNoUmVnaXN0
ZXIoQnJhbmNoVHlwZSBvcGMsIFJlZ2lzdGVySUQgcm4pCisgICAgeworICAgICAgICAvLyBUaGUg
b25seSBhbGxvY2F0ZWQgdmFsdWVzIGZvciBvcDIgaXMgMHgxZiwgZm9yIG9wMyAmIG9wNCBhcmUg
MC4KKyAgICAgICAgY29uc3QgaW50IG9wMiA9IDB4MWY7CisgICAgICAgIGNvbnN0IGludCBvcDMg
PSAwOworICAgICAgICBjb25zdCBpbnQgb3A0ID0gMDsKKyAgICAgICAgcmV0dXJuICgweGQ2MDAw
MDAwIHwgb3BjIDw8IDIxIHwgb3AyIDw8IDE2IHwgb3AzIDw8IDEwIHwgeE9yWnIocm4pIDw8IDUg
fCBvcDQpOworICAgIH0KKworICAgIEFzc2VtYmxlckJ1ZmZlciBtX2J1ZmZlcjsKKyAgICBWZWN0
b3I8TGlua1JlY29yZCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1fanVtcHNUb0xpbms7Cisg
ICAgaW50IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50OworICAgIGludCBtX2luZGV4T2ZUYWlsT2ZM
YXN0V2F0Y2hwb2ludDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjdW5kZWYgQ0hFQ0tf
REFUQVNJWkVfT0YKKyN1bmRlZiBEQVRBU0laRV9PRgorI3VuZGVmIE1FTU9QU0laRV9PRgorI3Vu
ZGVmIENIRUNLX0RBVEFTSVpFCisjdW5kZWYgREFUQVNJWkUKKyN1bmRlZiBNRU1PUFNJWkUKKyN1
bmRlZiBDSEVDS19GUF9NRU1PUF9EQVRBU0laRQorCisjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxF
UikgJiYgQ1BVKEFSTTY0KQorCisjZW5kaWYgLy8gQVJNQXNzZW1ibGVyX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVy
LmgKaW5kZXggMThlMGEzNC4uZmUxNWE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAgLTQ1LDYgKzQ1
LDE1IEBAIGlubGluZSBib29sIGlzQVJNdjdzKCkKICNlbmRpZgogfQogCitpbmxpbmUgYm9vbCBp
c0FSTTY0KCkKK3sKKyNpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiBpbmxpbmUgYm9vbCBpc1g4NigpCiB7CiAjaWYg
Q1BVKFg4Nl82NCkgfHwgQ1BVKFg4NikKQEAgLTI5MSw3ICszMDAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHsKICAgICAgICAgfQogCi0jaWYgQ1BVKFg4Nl82NCkKKyNpZiBDUFUoWDg2XzY0KSB8fCBD
UFUoQVJNNjQpCiAgICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW02NChUcnVzdGVkSW1tUHRyIHB0
cikKICAgICAgICAgICAgIDogbV92YWx1ZShwdHIuYXNJbnRwdHIoKSkKICAgICAgICAgewpAQCAt
MzA3LDcgKzMxNiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIDogVHJ1c3RlZEltbTY0KHZhbHVl
KQogICAgICAgICB7CiAgICAgICAgIH0KLSNpZiBDUFUoWDg2XzY0KQorI2lmIENQVShYODZfNjQp
IHx8IENQVShBUk02NCkKICAgICAgICAgZXhwbGljaXQgSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIp
CiAgICAgICAgICAgICA6IFRydXN0ZWRJbW02NChwdHIpCiAgICAgICAgIHsKQEAgLTM0Niw4ICsz
NTUsOSBAQCBwdWJsaWM6CiAgICAgICAgIExhYmVsKEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNz
ZW1ibGVyVHlwZT4qIG1hc20pCiAgICAgICAgICAgICA6IG1fbGFiZWwobWFzbS0+bV9hc3NlbWJs
ZXIubGFiZWwoKSkKICAgICAgICAgeworICAgICAgICAgICAgbWFzbS0+aW52YWxpZGF0ZUFsbFRl
bXBSZWdpc3RlcnMoKTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBib29sIGlzU2V0
KCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbC5pc1NldCgpOyB9CiAgICAgcHJpdmF0ZToKICAgICAg
ICAgQXNzZW1ibGVyTGFiZWwgbV9sYWJlbDsKQEAgLTQwMCw3ICs0MTAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICA6IG1fbGFiZWwobWFzbS0+bV9hc3NlbWJsZXIubGFiZWwoKSkKICAgICAgICAg
ewogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJl
dHVybiBtX2xhYmVsLmlzU2V0KCk7IH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKQEAgLTQ0OCw3
ICs0NTgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICA6IG1fbGFiZWwobWFzbS0+bV9hc3NlbWJs
ZXIubGFiZWwoKSkKICAgICAgICAgewogICAgICAgICB9Ci0gICAgCisKICAgICAgICAgRGF0YUxh
YmVsQ29tcGFjdChBc3NlbWJsZXJMYWJlbCBsYWJlbCkKICAgICAgICAgICAgIDogbV9sYWJlbChs
YWJlbCkKICAgICAgICAgewpAQCAtNTI3LDYgKzUzNywzMyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAsIG1fY29uZGl0aW9uKGNvbmRpdGlvbikKICAgICAgICAgewogICAgICAgICB9CisjZWxpZiBD
UFUoQVJNNjQpCisgICAgICAgIEp1bXAoQXNzZW1ibGVyTGFiZWwgam1wLCBBUk02NEFzc2VtYmxl
cjo6SnVtcFR5cGUgdHlwZSA9IEFSTTY0QXNzZW1ibGVyOjpKdW1wTm9Db25kaXRpb24sIEFSTTY0
QXNzZW1ibGVyOjpDb25kaXRpb24gY29uZGl0aW9uID0gQVJNNjRBc3NlbWJsZXI6OkNvbmRpdGlv
bkludmFsaWQpCisgICAgICAgICAgICA6IG1fbGFiZWwoam1wKQorICAgICAgICAgICAgLCBtX3R5
cGUodHlwZSkKKyAgICAgICAgICAgICwgbV9jb25kaXRpb24oY29uZGl0aW9uKQorICAgICAgICB7
CisgICAgICAgIH0KKworICAgICAgICBKdW1wKEFzc2VtYmxlckxhYmVsIGptcCwgQVJNNjRBc3Nl
bWJsZXI6Okp1bXBUeXBlIHR5cGUsIEFSTTY0QXNzZW1ibGVyOjpDb25kaXRpb24gY29uZGl0aW9u
LCBib29sIGlzNjRCaXQsIEFSTTY0QXNzZW1ibGVyOjpSZWdpc3RlcklEIGNvbXBhcmVSZWdpc3Rl
cikKKyAgICAgICAgICAgIDogbV9sYWJlbChqbXApCisgICAgICAgICAgICAsIG1fdHlwZSh0eXBl
KQorICAgICAgICAgICAgLCBtX2NvbmRpdGlvbihjb25kaXRpb24pCisgICAgICAgICAgICAsIG1f
aXM2NEJpdChpczY0Qml0KQorICAgICAgICAgICAgLCBtX2NvbXBhcmVSZWdpc3Rlcihjb21wYXJl
UmVnaXN0ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCgodHlwZSA9PSBBUk02NEFz
c2VtYmxlcjo6SnVtcENvbXBhcmVBbmRCcmFuY2gpIHx8ICh0eXBlID09IEFSTTY0QXNzZW1ibGVy
OjpKdW1wQ29tcGFyZUFuZEJyYW5jaEZpeGVkU2l6ZSkpOworICAgICAgICB9CisKKyAgICAgICAg
SnVtcChBc3NlbWJsZXJMYWJlbCBqbXAsIEFSTTY0QXNzZW1ibGVyOjpKdW1wVHlwZSB0eXBlLCBB
Uk02NEFzc2VtYmxlcjo6Q29uZGl0aW9uIGNvbmRpdGlvbiwgdW5zaWduZWQgYml0TnVtYmVyLCBB
Uk02NEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjb21wYXJlUmVnaXN0ZXIpCisgICAgICAgICAgICA6
IG1fbGFiZWwoam1wKQorICAgICAgICAgICAgLCBtX3R5cGUodHlwZSkKKyAgICAgICAgICAgICwg
bV9jb25kaXRpb24oY29uZGl0aW9uKQorICAgICAgICAgICAgLCBtX2JpdE51bWJlcihiaXROdW1i
ZXIpCisgICAgICAgICAgICAsIG1fY29tcGFyZVJlZ2lzdGVyKGNvbXBhcmVSZWdpc3RlcikKKyAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUKCh0eXBlID09IEFSTTY0QXNzZW1ibGVyOjpKdW1w
VGVzdEJpdCkgfHwgKHR5cGUgPT0gQVJNNjRBc3NlbWJsZXI6Okp1bXBUZXN0Qml0Rml4ZWRTaXpl
KSk7CisgICAgICAgIH0KICNlbGlmIENQVShTSDQpCiAgICAgICAgIEp1bXAoQXNzZW1ibGVyTGFi
ZWwgam1wLCBTSDRBc3NlbWJsZXI6Okp1bXBUeXBlIHR5cGUgPSBTSDRBc3NlbWJsZXI6Okp1bXBG
YXIpCiAgICAgICAgICAgICA6IG1fbGFiZWwoam1wKQpAQCAtNTQ5LDEyICs1ODYsMjEgQEAgcHVi
bGljOgogCiAgICAgICAgIHZvaWQgbGluayhBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxl
clR5cGU+KiBtYXNtKSBjb25zdAogICAgICAgICB7CisgICAgICAgICAgICBtYXNtLT5pbnZhbGlk
YXRlQWxsVGVtcFJlZ2lzdGVycygpOworCiAjaWYgRU5BQkxFKERGR19SRUdJU1RFUl9BTExPQ0FU
SU9OX1ZBTElEQVRJT04pCiAgICAgICAgICAgICBtYXNtLT5jaGVja1JlZ2lzdGVyQWxsb2NhdGlv
bkFnYWluc3RCcmFuY2hSYW5nZShtX2xhYmVsLm1fb2Zmc2V0LCBtYXNtLT5kZWJ1Z09mZnNldCgp
KTsKICNlbmRpZgogCiAjaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAgICAgICAgICBtYXNtLT5tX2Fz
c2VtYmxlci5saW5rSnVtcChtX2xhYmVsLCBtYXNtLT5tX2Fzc2VtYmxlci5sYWJlbCgpLCBtX3R5
cGUsIG1fY29uZGl0aW9uKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICAgICAgICAgIGlmICgobV90
eXBlID09IEFSTTY0QXNzZW1ibGVyOjpKdW1wQ29tcGFyZUFuZEJyYW5jaCkgfHwgKG1fdHlwZSA9
PSBBUk02NEFzc2VtYmxlcjo6SnVtcENvbXBhcmVBbmRCcmFuY2hGaXhlZFNpemUpKQorICAgICAg
ICAgICAgICAgIG1hc20tPm1fYXNzZW1ibGVyLmxpbmtKdW1wKG1fbGFiZWwsIG1hc20tPm1fYXNz
ZW1ibGVyLmxhYmVsKCksIG1fdHlwZSwgbV9jb25kaXRpb24sIG1faXM2NEJpdCwgbV9jb21wYXJl
UmVnaXN0ZXIpOworICAgICAgICAgICAgZWxzZSBpZiAoKG1fdHlwZSA9PSBBUk02NEFzc2VtYmxl
cjo6SnVtcFRlc3RCaXQpIHx8IChtX3R5cGUgPT0gQVJNNjRBc3NlbWJsZXI6Okp1bXBUZXN0Qml0
Rml4ZWRTaXplKSkKKyAgICAgICAgICAgICAgICBtYXNtLT5tX2Fzc2VtYmxlci5saW5rSnVtcCht
X2xhYmVsLCBtYXNtLT5tX2Fzc2VtYmxlci5sYWJlbCgpLCBtX3R5cGUsIG1fY29uZGl0aW9uLCBt
X2JpdE51bWJlciwgbV9jb21wYXJlUmVnaXN0ZXIpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIG1hc20tPm1fYXNzZW1ibGVyLmxpbmtKdW1wKG1fbGFiZWwsIG1hc20tPm1fYXNz
ZW1ibGVyLmxhYmVsKCksIG1fdHlwZSwgbV9jb25kaXRpb24pOwogI2VsaWYgQ1BVKFNINCkKICAg
ICAgICAgICAgIG1hc20tPm1fYXNzZW1ibGVyLmxpbmtKdW1wKG1fbGFiZWwsIG1hc20tPm1fYXNz
ZW1ibGVyLmxhYmVsKCksIG1fdHlwZSk7CiAjZWxzZQpAQCAtNTcwLDYgKzYxNiwxMyBAQCBwdWJs
aWM6CiAKICNpZiBDUFUoQVJNX1RIVU1CMikKICAgICAgICAgICAgIG1hc20tPm1fYXNzZW1ibGVy
LmxpbmtKdW1wKG1fbGFiZWwsIGxhYmVsLm1fbGFiZWwsIG1fdHlwZSwgbV9jb25kaXRpb24pOwor
I2VsaWYgQ1BVKEFSTTY0KQorICAgICAgICAgICAgaWYgKChtX3R5cGUgPT0gQVJNNjRBc3NlbWJs
ZXI6Okp1bXBDb21wYXJlQW5kQnJhbmNoKSB8fCAobV90eXBlID09IEFSTTY0QXNzZW1ibGVyOjpK
dW1wQ29tcGFyZUFuZEJyYW5jaEZpeGVkU2l6ZSkpCisgICAgICAgICAgICAgICAgbWFzbS0+bV9h
c3NlbWJsZXIubGlua0p1bXAobV9sYWJlbCwgbGFiZWwubV9sYWJlbCwgbV90eXBlLCBtX2NvbmRp
dGlvbiwgbV9pczY0Qml0LCBtX2NvbXBhcmVSZWdpc3Rlcik7CisgICAgICAgICAgICBlbHNlIGlm
ICgobV90eXBlID09IEFSTTY0QXNzZW1ibGVyOjpKdW1wVGVzdEJpdCkgfHwgKG1fdHlwZSA9PSBB
Uk02NEFzc2VtYmxlcjo6SnVtcFRlc3RCaXRGaXhlZFNpemUpKQorICAgICAgICAgICAgICAgIG1h
c20tPm1fYXNzZW1ibGVyLmxpbmtKdW1wKG1fbGFiZWwsIGxhYmVsLm1fbGFiZWwsIG1fdHlwZSwg
bV9jb25kaXRpb24sIG1fYml0TnVtYmVyLCBtX2NvbXBhcmVSZWdpc3Rlcik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgbWFzbS0+bV9hc3NlbWJsZXIubGlua0p1bXAobV9sYWJl
bCwgbGFiZWwubV9sYWJlbCwgbV90eXBlLCBtX2NvbmRpdGlvbik7CiAjZWxzZQogICAgICAgICAg
ICAgbWFzbS0+bV9hc3NlbWJsZXIubGlua0p1bXAobV9sYWJlbCwgbGFiZWwubV9sYWJlbCk7CiAj
ZW5kaWYKQEAgLTU4Miw2ICs2MzUsMTIgQEAgcHVibGljOgogI2lmIENQVShBUk1fVEhVTUIyKQog
ICAgICAgICBBUk12N0Fzc2VtYmxlcjo6SnVtcFR5cGUgbV90eXBlOwogICAgICAgICBBUk12N0Fz
c2VtYmxlcjo6Q29uZGl0aW9uIG1fY29uZGl0aW9uOworI2VsaWYgQ1BVKEFSTTY0KQorICAgICAg
ICBBUk02NEFzc2VtYmxlcjo6SnVtcFR5cGUgbV90eXBlOworICAgICAgICBBUk02NEFzc2VtYmxl
cjo6Q29uZGl0aW9uIG1fY29uZGl0aW9uOworICAgICAgICBib29sIG1faXM2NEJpdDsKKyAgICAg
ICAgdW5zaWduZWQgbV9iaXROdW1iZXI7CisgICAgICAgIEFSTTY0QXNzZW1ibGVyOjpSZWdpc3Rl
cklEIG1fY29tcGFyZVJlZ2lzdGVyOwogI2VuZGlmCiAjaWYgQ1BVKFNINCkKICAgICAgICAgU0g0
QXNzZW1ibGVyOjpKdW1wVHlwZSBtX3R5cGU7CkBAIC03ODAsNiArODM5LDcwIEBAIHByb3RlY3Rl
ZDoKICAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCkg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNB
cmNoKHVpbnQ2NF90KSB7IHJldHVybiB0cnVlOyB9CiAKKyAgICBjbGFzcyBDYWNoZWRUZW1wUmVn
aXN0ZXIgeworICAgICAgICBmcmllbmQgY2xhc3MgRGF0YUxhYmVsUHRyOworICAgICAgICBmcmll
bmQgY2xhc3MgRGF0YUxhYmVsMzI7CisgICAgICAgIGZyaWVuZCBjbGFzcyBEYXRhTGFiZWxDb21w
YWN0OworICAgICAgICBmcmllbmQgY2xhc3MgSnVtcDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExh
YmVsOworCisgICAgcHVibGljOgorICAgICAgICBDYWNoZWRUZW1wUmVnaXN0ZXIoQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXJUeXBlPiogbWFzbSwgUmVnaXN0ZXJJRCByZWdpc3RlcklE
KQorICAgICAgICAgICAgOiBtX21hc20obWFzbSkKKyAgICAgICAgICAgICwgbV9yZWdpc3RlcklE
KHJlZ2lzdGVySUQpCisgICAgICAgICAgICAsIG1fdmFsdWUoMCkKKyAgICAgICAgICAgICwgbV92
YWxpZEJpdCgxIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWdpc3RlcklEKSkKKyAgICAgICAg
eworICAgICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWdpc3RlcklEKSA8
IChzaXplb2YodW5zaWduZWQpICogOCkpOworICAgICAgICB9CisKKyAgICAgICAgQUxXQVlTX0lO
TElORSBSZWdpc3RlcklEIHJlZ2lzdGVySURJbnZhbGlkYXRlKCkgeyBpbnZhbGlkYXRlKCk7IHJl
dHVybiBtX3JlZ2lzdGVySUQ7IH0KKworICAgICAgICBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVySUQg
cmVnaXN0ZXJJRE5vSW52YWxpZGF0ZSgpIHsgcmV0dXJuIG1fcmVnaXN0ZXJJRDsgfQorCisgICAg
ICAgIGJvb2wgdmFsdWUoaW50cHRyX3QmIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICB2
YWx1ZSA9IG1fdmFsdWU7CisgICAgICAgICAgICByZXR1cm4gbV9tYXNtLT5pc1RlbXBSZWdpc3Rl
clZhbGlkKG1fdmFsaWRCaXQpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBzZXRWYWx1ZShp
bnRwdHJfdCB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgbV92YWx1ZSA9IHZhbHVlOwor
ICAgICAgICAgICAgbV9tYXNtLT5zZXRUZW1wUmVnaXN0ZXJWYWxpZChtX3ZhbGlkQml0KTsKKyAg
ICAgICAgfQorCisgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBpbnZhbGlkYXRlKCkgeyBtX21h
c20tPmNsZWFyVGVtcFJlZ2lzdGVyVmFsaWQobV92YWxpZEJpdCk7IH0KKworICAgIHByaXZhdGU6
CisgICAgICAgIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyVHlwZT4qIG1fbWFzbTsK
KyAgICAgICAgUmVnaXN0ZXJJRCBtX3JlZ2lzdGVySUQ7CisgICAgICAgIGludHB0cl90IG1fdmFs
dWU7CisgICAgICAgIHVuc2lnbmVkIG1fdmFsaWRCaXQ7CisgICAgfTsKKworICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBpbnZhbGlkYXRlQWxsVGVtcFJlZ2lzdGVycygpCisgICAgeworICAgICAgICBt
X3RlbXBSZWdpc3RlcnNWYWxpZEJpdHMgPSAwOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc1RlbXBSZWdpc3RlclZhbGlkKHVuc2lnbmVkIHJlZ2lzdGVyTWFzaykKKyAgICB7Cisg
ICAgICAgIHJldHVybiAobV90ZW1wUmVnaXN0ZXJzVmFsaWRCaXRzICYgcmVnaXN0ZXJNYXNrKTsK
KyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2xlYXJUZW1wUmVnaXN0ZXJWYWxpZCh1
bnNpZ25lZCByZWdpc3Rlck1hc2spCisgICAgeworICAgICAgICBtX3RlbXBSZWdpc3RlcnNWYWxp
ZEJpdHMgJj0gIH5yZWdpc3Rlck1hc2s7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldFRlbXBSZWdpc3RlclZhbGlkKHVuc2lnbmVkIHJlZ2lzdGVyTWFzaykKKyAgICB7CisgICAg
ICAgIG1fdGVtcFJlZ2lzdGVyc1ZhbGlkQml0cyB8PSByZWdpc3Rlck1hc2s7CisgICAgfQorCisg
ICAgdW5zaWduZWQgbV90ZW1wUmVnaXN0ZXJzVmFsaWRCaXRzOworCiAgICAgZnJpZW5kIGNsYXNz
IExpbmtCdWZmZXI7CiAgICAgZnJpZW5kIGNsYXNzIFJlcGF0Y2hCdWZmZXI7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCmluZGV4IDQyYjU2Njcu
LmVkNjg5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlu
a0J1ZmZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVm
ZmVyLmNwcApAQCAtNTksMTcgKzU5LDEwIEBAIExpbmtCdWZmZXI6OkNvZGVSZWYgTGlua0J1ZmZl
cjo6ZmluYWxpemVDb2RlV2l0aERpc2Fzc2VtYmx5KGNvbnN0IGNoYXIqIGZvcm1hdCwKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIExpbmtCdWZmZXI6OmxpbmtDb2RlKHZvaWQqIG93bmVy
VUlELCBKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCisjaWYgRU5BQkxFKEJSQU5DSF9DT01Q
QUNUSU9OKQordGVtcGxhdGUgPHR5cGVuYW1lIEluc3RydWN0aW9uVHlwZT4KK3ZvaWQgTGlua0J1
ZmZlcjo6Y29weUNvbXBhY3RBbmRMaW5rQ29kZSh2b2lkKiBvd25lclVJRCwgSklUQ29tcGlsYXRp
b25FZmZvcnQgZWZmb3J0KQogewotICAgIEFTU0VSVCghbV9jb2RlKTsKLSNpZiAhRU5BQkxFKEJS
QU5DSF9DT01QQUNUSU9OKQotICAgIG1fZXhlY3V0YWJsZU1lbW9yeSA9IG1fYXNzZW1ibGVyLT5t
X2Fzc2VtYmxlci5leGVjdXRhYmxlQ29weSgqbV92bSwgb3duZXJVSUQsIGVmZm9ydCk7Ci0gICAg
aWYgKCFtX2V4ZWN1dGFibGVNZW1vcnkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2NvZGUgPSBt
X2V4ZWN1dGFibGVNZW1vcnktPnN0YXJ0KCk7Ci0gICAgbV9zaXplID0gbV9hc3NlbWJsZXItPm1f
YXNzZW1ibGVyLmNvZGVTaXplKCk7Ci0gICAgQVNTRVJUKG1fY29kZSk7Ci0jZWxzZQogICAgIG1f
aW5pdGlhbFNpemUgPSBtX2Fzc2VtYmxlci0+bV9hc3NlbWJsZXIuY29kZVNpemUoKTsKICAgICBt
X2V4ZWN1dGFibGVNZW1vcnkgPSBtX3ZtLT5leGVjdXRhYmxlQWxsb2NhdG9yLmFsbG9jYXRlKCpt
X3ZtLCBtX2luaXRpYWxTaXplLCBvd25lclVJRCwgZWZmb3J0KTsKICAgICBpZiAoIW1fZXhlY3V0
YWJsZU1lbW9yeSkKQEAgLTg5LDkgKzgyLDkgQEAgdm9pZCBMaW5rQnVmZmVyOjpsaW5rQ29kZSh2
b2lkKiBvd25lclVJRCwgSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAgICAgICAg
CiAgICAgICAgIC8vIENvcHkgdGhlIGluc3RydWN0aW9ucyBmcm9tIHRoZSBsYXN0IGp1bXAgdG8g
dGhlIGN1cnJlbnQgb25lLgogICAgICAgICBzaXplX3QgcmVnaW9uU2l6ZSA9IGp1bXBzVG9MaW5r
W2ldLmZyb20oKSAtIHJlYWRQdHI7Ci0gICAgICAgIHVpbnQxNl90KiBjb3B5U291cmNlID0gcmVp
bnRlcnByZXRfY2FzdF9wdHI8dWludDE2X3QqPihpbkRhdGEgKyByZWFkUHRyKTsKLSAgICAgICAg
dWludDE2X3QqIGNvcHlFbmQgPSByZWludGVycHJldF9jYXN0X3B0cjx1aW50MTZfdCo+KGluRGF0
YSArIHJlYWRQdHIgKyByZWdpb25TaXplKTsKLSAgICAgICAgdWludDE2X3QqIGNvcHlEc3QgPSBy
ZWludGVycHJldF9jYXN0X3B0cjx1aW50MTZfdCo+KG91dERhdGEgKyB3cml0ZVB0cik7CisgICAg
ICAgIEluc3RydWN0aW9uVHlwZSogY29weVNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPElu
c3RydWN0aW9uVHlwZSo+KGluRGF0YSArIHJlYWRQdHIpOworICAgICAgICBJbnN0cnVjdGlvblR5
cGUqIGNvcHlFbmQgPSByZWludGVycHJldF9jYXN0X3B0cjxJbnN0cnVjdGlvblR5cGUqPihpbkRh
dGEgKyByZWFkUHRyICsgcmVnaW9uU2l6ZSk7CisgICAgICAgIEluc3RydWN0aW9uVHlwZSogY29w
eURzdCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEluc3RydWN0aW9uVHlwZSo+KG91dERhdGEgKyB3
cml0ZVB0cik7CiAgICAgICAgIEFTU0VSVCghKHJlZ2lvblNpemUgJSAyKSk7CiAgICAgICAgIEFT
U0VSVCghKHJlYWRQdHIgJSAyKSk7CiAgICAgICAgIEFTU0VSVCghKHdyaXRlUHRyICUgMikpOwpA
QCAtMTQxLDYgKzEzNCwyNCBAQCB2b2lkIExpbmtCdWZmZXI6OmxpbmtDb2RlKHZvaWQqIG93bmVy
VUlELCBKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAjaWYgRFVNUF9DT0RFCiAgICAgZHVt
cENvZGUobV9jb2RlLCBtX3NpemUpOwogI2VuZGlmCit9CisjZW5kaWYKKworCit2b2lkIExpbmtC
dWZmZXI6OmxpbmtDb2RlKHZvaWQqIG93bmVyVUlELCBKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZv
cnQpCit7CisgICAgQVNTRVJUKCFtX2NvZGUpOworI2lmICFFTkFCTEUoQlJBTkNIX0NPTVBBQ1RJ
T04pCisgICAgbV9leGVjdXRhYmxlTWVtb3J5ID0gbV9hc3NlbWJsZXItPm1fYXNzZW1ibGVyLmV4
ZWN1dGFibGVDb3B5KCptX3ZtLCBvd25lclVJRCwgZWZmb3J0KTsKKyAgICBpZiAoIW1fZXhlY3V0
YWJsZU1lbW9yeSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29kZSA9IG1fZXhlY3V0YWJsZU1l
bW9yeS0+c3RhcnQoKTsKKyAgICBtX3NpemUgPSBtX2Fzc2VtYmxlci0+bV9hc3NlbWJsZXIuY29k
ZVNpemUoKTsKKyAgICBBU1NFUlQobV9jb2RlKTsKKyNlbGlmIENQVShBUk1fVEhVTUIyKQorICAg
IGNvcHlDb21wYWN0QW5kTGlua0NvZGU8dWludDE2X3Q+KG93bmVyVUlELCBlZmZvcnQpOworI2Vs
aWYgQ1BVKEFSTTY0KQorICAgIGNvcHlDb21wYWN0QW5kTGlua0NvZGU8dWludDMyX3Q+KG93bmVy
VUlELCBlZmZvcnQpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9MaW5rQnVmZmVyLmgKaW5kZXggMzkyZGFkOS4uNzAwNTI3OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKQEAgLTI0Myw2ICsyNDMsMTAgQEAg
cHJpdmF0ZToKICAgICB9CiAKICAgICB2b2lkIGxpbmtDb2RlKHZvaWQqIG93bmVyVUlELCBKSVRD
b21waWxhdGlvbkVmZm9ydCk7CisjaWYgRU5BQkxFKEJSQU5DSF9DT01QQUNUSU9OKQorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBJbnN0cnVjdGlvblR5cGU+CisgICAgdm9pZCBjb3B5Q29tcGFjdEFu
ZExpbmtDb2RlKHZvaWQqIG93bmVyVUlELCBKSVRDb21waWxhdGlvbkVmZm9ydCk7CisjZW5kaWYK
IAogICAgIHZvaWQgcGVyZm9ybUZpbmFsaXphdGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggMGExODhlOS4uY2UxNTUx
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaApAQCAtMzQsNiArMzQsMTAgQEAKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckFSTXY3Lmgi
CiBuYW1lc3BhY2UgSlNDIHsgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlckFSTXY3IE1hY3JvQXNzZW1i
bGVyQmFzZTsgfTsKIAorI2VsaWYgQ1BVKEFSTTY0KQorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVy
QVJNNjQuaCIKK25hbWVzcGFjZSBKU0MgeyB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQVJNNjQgTWFj
cm9Bc3NlbWJsZXJCYXNlOyB9OworCiAjZWxpZiBDUFUoQVJNX1RSQURJVElPTkFMKQogI2luY2x1
ZGUgIk1hY3JvQXNzZW1ibGVyQVJNLmgiCiBuYW1lc3BhY2UgSlNDIHsgdHlwZWRlZiBNYWNyb0Fz
c2VtYmxlckFSTSBNYWNyb0Fzc2VtYmxlckJhc2U7IH07CkBAIC0xMTUsNiArMTE5LDExIEBAIHB1
YmxpYzoKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OnVyc2hpZnQzMjsKICAgICB1c2lu
ZyBNYWNyb0Fzc2VtYmxlckJhc2U6OnhvcjMyOwogCisgICAgc3RhdGljIGJvb2wgaXNQdHJBbGln
bmVkQWRkcmVzc09mZnNldChwdHJkaWZmX3QgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4g
dmFsdWUgPT0gKGludDMyX3QpdmFsdWU7CisgICAgfQorCiAgICAgc3RhdGljIGNvbnN0IGRvdWJs
ZSB0d29Ub1RoZTMyOyAvLyBUaGlzIGlzIHN1cGVyIHVzZWZ1bCBmb3Igc29tZSBkb3VibGUgY29k
ZS4KIAogICAgIC8vIFV0aWxpdGllcyB1c2VkIGJ5IHRoZSBERkcgSklULgpAQCAtMjExLDcgKzIy
MCwyOCBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlUHRyKGltbSwgYWRkcmVzc0ZvclBva2UoaW5k
ZXgpKTsKICAgICB9CiAKLSNpZiBDUFUoWDg2XzY0KQorI2lmICFDUFUoQVJNNjQpCisgICAgdm9p
ZCBwdXNoVG9TYXZlKFJlZ2lzdGVySUQgc3JjKQorICAgIHsKKyAgICAgICAgcHVzaChzcmMpOwor
ICAgIH0KKyAgICB2b2lkIHBvcFRvUmVzdG9yZShSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBwb3AoZGVzdCk7CisgICAgfQorICAgIHZvaWQgcHVzaFRvU2F2ZShGUFJlZ2lzdGVySUQg
c3JjKQorICAgIHsKKyAgICAgICAgc3ViUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoZG91YmxlKSks
IHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgc3RvcmVEb3VibGUoc3JjLCBzdGFja1Bv
aW50ZXJSZWdpc3Rlcik7CisgICAgfQorICAgIHZvaWQgcG9wVG9SZXN0b3JlKEZQUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZERvdWJsZShzdGFja1BvaW50ZXJSZWdpc3Rlciwg
ZGVzdCk7CisgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKGRvdWJsZSkpLCBzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7CisgICAgfQorI2VuZGlmIC8vICFDUFUoQVJNNjQpCisKKyNpZiBD
UFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCiAgICAgdm9pZCBwZWVrNjQoUmVnaXN0ZXJJRCBkZXN0
LCBpbnQgaW5kZXggPSAwKQogICAgIHsKICAgICAgICAgbG9hZDY0KEFkZHJlc3Moc3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIChpbmRleCAqIHNpemVvZih2b2lkKikpKSwgZGVzdCk7CkBAIC0yODgsNyAr
MzE4LDcgQEAgcHVibGljOgogICAgICAgICBicmFuY2hUZXN0UHRyKGNvbmQsIHJlZykubGlua1Rv
KHRhcmdldCwgdGhpcyk7CiAgICAgfQogCi0jaWYgIUNQVShBUk1fVEhVTUIyKQorI2lmICFDUFUo
QVJNX1RIVU1CMikgJiYgIUNQVShBUk02NCkKICAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUJy
YW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3RlZElt
bVB0ciByaWdodCA9IFRydXN0ZWRJbW1QdHIoMCkpCiAgICAgewogICAgICAgICByZXR1cm4gUGF0
Y2hhYmxlSnVtcChicmFuY2hQdHIoY29uZCwgbGVmdCwgcmlnaHQpKTsKQEAgLTMwOCwxNCArMzM4
LDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBQYXRjaGFibGVKdW1wKGJyYW5j
aFRlc3QzMihjb25kLCByZWcsIG1hc2spKTsKICAgICB9Ci0jZW5kaWYgLy8gIUNQVShBUk1fVEhV
TUIyKQogCi0jaWYgIUNQVShBUk0pCiAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCcmFuY2gz
MihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBUcnVzdGVkSW1tMzIg
aW1tKQogICAgIHsKICAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAoYnJhbmNoMzIoY29uZCwg
cmVnLCBpbW0pKTsKICAgICB9Ci0jZW5kaWYgLy8gIShDUFUoQVJNKQorI2VuZGlmCiAKICAgICB2
b2lkIGp1bXAoTGFiZWwgdGFyZ2V0KQogICAgIHsKQEAgLTM2MCw3ICszODgsNyBAQCBwdWJsaWM6
CiAgICAgLy8gUHRyIG1ldGhvZHMKICAgICAvLyBPbiAzMi1iaXQgcGxhdGZvcm1zIChpLmUuIHg4
NiksIHRoZXNlIG1ldGhvZHMgZGlyZWN0bHkgbWFwIG9udG8gdGhlaXIgMzItYml0IGVxdWl2YWxl
bnRzLgogICAgIC8vIEZJWE1FOiBzaG91bGQgdGhpcyB1c2UgYSB0ZXN0IGZvciAzMi1iaXRuZXNz
IGluc3RlYWQgb2YgdGhpcyBzcGVjaWZpYyBleGNlcHRpb24/Ci0jaWYgIUNQVShYODZfNjQpCisj
aWYgIUNQVShYODZfNjQpICYmICFDUFUoQVJNNjQpCiAgICAgdm9pZCBhZGRQdHIoQWRkcmVzcyBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGFkZDMyKHNyYywgZGVzdCk7CkBA
IC0xMzE5LDcgKzEzNDcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlUHRyKHZhbHVlLCBhZGRy
ZXNzRm9yUG9rZShpbmRleCkpOwogICAgIH0KICAgICAKLSNpZiBDUFUoWDg2XzY0KQorI2lmIENQ
VShYODZfNjQpIHx8IENQVShBUk02NCkKICAgICB2b2lkIHBva2UoSW1tNjQgdmFsdWUsIGludCBp
bmRleCA9IDApCiAgICAgewogICAgICAgICBzdG9yZTY0KHZhbHVlLCBhZGRyZXNzRm9yUG9rZShp
bmRleCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDMz
ZTA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTAsMCArMSwyNjUwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTWFjcm9Bc3NlbWJsZXJBUk02
NF9oCisjZGVmaW5lIE1hY3JvQXNzZW1ibGVyQVJNNjRfaAorCisjaWYgRU5BQkxFKEFTU0VNQkxF
UikKKworI2luY2x1ZGUgIkFSTTY0QXNzZW1ibGVyLmgiCisjaW5jbHVkZSAiQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXI8QVJNNjRBc3NlbWJsZXI+IHsKKyAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBk
YXRhVGVtcFJlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OmlwMDsKKyAgICBzdGF0aWMgY29uc3Qg
UmVnaXN0ZXJJRCBtZW1vcnlUZW1wUmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6aXAxOworICAg
IHN0YXRpYyBjb25zdCBBUk02NFJlZ2lzdGVyczo6RlBSZWdpc3RlcklEIGZwVGVtcFJlZ2lzdGVy
ID0gQVJNNjRSZWdpc3RlcnM6OnEzMTsKKyAgICBzdGF0aWMgY29uc3QgQVJNNjRBc3NlbWJsZXI6
OlNldEZsYWdzIFMgPSBBUk02NEFzc2VtYmxlcjo6UzsKKyAgICBzdGF0aWMgY29uc3QgaW50cHRy
X3QgbWFza0hhbGZXb3JkMCA9IDB4ZmZmZmw7CisgICAgc3RhdGljIGNvbnN0IGludHB0cl90IG1h
c2tIYWxmV29yZDEgPSAweGZmZmYwMDAwbDsKKyAgICBzdGF0aWMgY29uc3QgaW50cHRyX3QgbWFz
a1VwcGVyV29yZCA9IDB4ZmZmZmZmZmYwMDAwMDAwMGw7CisKKyAgICAvLyA0IGluc3RydWN0aW9u
cyAtIDMgdG8gbG9hZCB0aGUgZnVuY3Rpb24gcG9pbnRlciwgKyBibHIuCisgICAgc3RhdGljIGNv
bnN0IHB0cmRpZmZfdCBSRVBBVENIX09GRlNFVF9DQUxMX1RPX1BPSU5URVIgPSAtMTY7CisgICAg
CitwdWJsaWM6CisgICAgTWFjcm9Bc3NlbWJsZXJBUk02NCgpCisgICAgICAgIDogbV9kYXRhTWVt
b3J5VGVtcFJlZ2lzdGVyKHRoaXMsIGRhdGFUZW1wUmVnaXN0ZXIpCisgICAgICAgICwgbV9jYWNo
ZWRNZW1vcnlUZW1wUmVnaXN0ZXIodGhpcywgbWVtb3J5VGVtcFJlZ2lzdGVyKQorICAgICAgICAs
IG1fbWFrZUp1bXBQYXRjaGFibGUoZmFsc2UpCisgICAgeworICAgIH0KKworICAgIHR5cGVkZWYg
QVJNNjRSZWdpc3RlcnM6OkZQUmVnaXN0ZXJJRCBGUFJlZ2lzdGVySUQ7CisgICAgdHlwZWRlZiBB
Uk02NEFzc2VtYmxlcjo6TGlua1JlY29yZCBMaW5rUmVjb3JkOworICAgIHR5cGVkZWYgQVJNNjRB
c3NlbWJsZXI6Okp1bXBUeXBlIEp1bXBUeXBlOworICAgIHR5cGVkZWYgQVJNNjRBc3NlbWJsZXI6
Okp1bXBMaW5rVHlwZSBKdW1wTGlua1R5cGU7CisgICAgdHlwZWRlZiBBUk02NEFzc2VtYmxlcjo6
Q29uZGl0aW9uIENvbmRpdGlvbjsKKworICAgIHN0YXRpYyBjb25zdCBBUk02NEFzc2VtYmxlcjo6
Q29uZGl0aW9uIERlZmF1bHRDb25kaXRpb24gPSBBUk02NEFzc2VtYmxlcjo6Q29uZGl0aW9uSW52
YWxpZDsKKyAgICBzdGF0aWMgY29uc3QgQVJNNjRBc3NlbWJsZXI6Okp1bXBUeXBlIERlZmF1bHRK
dW1wID0gQVJNNjRBc3NlbWJsZXI6Okp1bXBOb0NvbmRpdGlvbkZpeGVkU2l6ZTsKKworICAgIFZl
Y3RvcjxMaW5rUmVjb3JkLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4mIGp1bXBzVG9MaW5rKCkg
eyByZXR1cm4gbV9hc3NlbWJsZXIuanVtcHNUb0xpbmsoKTsgfQorICAgIHZvaWQqIHVubGlua2Vk
Q29kZSgpIHsgcmV0dXJuIG1fYXNzZW1ibGVyLnVubGlua2VkQ29kZSgpOyB9CisgICAgYm9vbCBj
YW5Db21wYWN0KEp1bXBUeXBlIGp1bXBUeXBlKSB7IHJldHVybiBtX2Fzc2VtYmxlci5jYW5Db21w
YWN0KGp1bXBUeXBlKTsgfQorICAgIEp1bXBMaW5rVHlwZSBjb21wdXRlSnVtcFR5cGUoSnVtcFR5
cGUganVtcFR5cGUsIGNvbnN0IHVpbnQ4X3QqIGZyb20sIGNvbnN0IHVpbnQ4X3QqIHRvKSB7IHJl
dHVybiBtX2Fzc2VtYmxlci5jb21wdXRlSnVtcFR5cGUoanVtcFR5cGUsIGZyb20sIHRvKTsgfQor
ICAgIEp1bXBMaW5rVHlwZSBjb21wdXRlSnVtcFR5cGUoTGlua1JlY29yZCYgcmVjb3JkLCBjb25z
dCB1aW50OF90KiBmcm9tLCBjb25zdCB1aW50OF90KiB0bykgeyByZXR1cm4gbV9hc3NlbWJsZXIu
Y29tcHV0ZUp1bXBUeXBlKHJlY29yZCwgZnJvbSwgdG8pOyB9CisgICAgdm9pZCByZWNvcmRMaW5r
T2Zmc2V0cyhpbnQzMl90IHJlZ2lvblN0YXJ0LCBpbnQzMl90IHJlZ2lvbkVuZCwgaW50MzJfdCBv
ZmZzZXQpIHtyZXR1cm4gbV9hc3NlbWJsZXIucmVjb3JkTGlua09mZnNldHMocmVnaW9uU3RhcnQs
IHJlZ2lvbkVuZCwgb2Zmc2V0KTsgfQorICAgIGludCBqdW1wU2l6ZURlbHRhKEp1bXBUeXBlIGp1
bXBUeXBlLCBKdW1wTGlua1R5cGUganVtcExpbmtUeXBlKSB7IHJldHVybiBtX2Fzc2VtYmxlci5q
dW1wU2l6ZURlbHRhKGp1bXBUeXBlLCBqdW1wTGlua1R5cGUpOyB9CisgICAgdm9pZCBsaW5rKExp
bmtSZWNvcmQmIHJlY29yZCwgdWludDhfdCogZnJvbSwgdWludDhfdCogdG8pIHsgcmV0dXJuIG1f
YXNzZW1ibGVyLmxpbmsocmVjb3JkLCBmcm9tLCB0byk7IH0KKyAgICBpbnQgZXhlY3V0YWJsZU9m
ZnNldEZvcihpbnQgbG9jYXRpb24pIHsgcmV0dXJuIG1fYXNzZW1ibGVyLmV4ZWN1dGFibGVPZmZz
ZXRGb3IobG9jYXRpb24pOyB9CisKKyAgICBzdGF0aWMgY29uc3QgU2NhbGUgU2NhbGVQdHIgPSBU
aW1lc0VpZ2h0OworCisgICAgc3RhdGljIGJvb2wgaXNDb21wYWN0UHRyQWxpZ25lZEFkZHJlc3NP
ZmZzZXQocHRyZGlmZl90IHZhbHVlKQorICAgIHsKKyAgICAgICAgLy8gVGhpcyBpcyB0aGUgbGFy
Z2VzdCAzMi1iaXQgYWNjZXNzIGFsbG93ZWQsIGFsaWduZWQgdG8gNjQtYml0IGJvdW5kYXJ5Lgor
ICAgICAgICByZXR1cm4gISh2YWx1ZSAmIH4weDNmZjgpOworICAgIH0KKworICAgIGVudW0gUmVs
YXRpb25hbENvbmRpdGlvbiB7CisgICAgICAgIEVxdWFsID0gQVJNNjRBc3NlbWJsZXI6OkNvbmRp
dGlvbkVRLAorICAgICAgICBOb3RFcXVhbCA9IEFSTTY0QXNzZW1ibGVyOjpDb25kaXRpb25ORSwK
KyAgICAgICAgQWJvdmUgPSBBUk02NEFzc2VtYmxlcjo6Q29uZGl0aW9uSEksCisgICAgICAgIEFi
b3ZlT3JFcXVhbCA9IEFSTTY0QXNzZW1ibGVyOjpDb25kaXRpb25IUywKKyAgICAgICAgQmVsb3cg
PSBBUk02NEFzc2VtYmxlcjo6Q29uZGl0aW9uTE8sCisgICAgICAgIEJlbG93T3JFcXVhbCA9IEFS
TTY0QXNzZW1ibGVyOjpDb25kaXRpb25MUywKKyAgICAgICAgR3JlYXRlclRoYW4gPSBBUk02NEFz
c2VtYmxlcjo6Q29uZGl0aW9uR1QsCisgICAgICAgIEdyZWF0ZXJUaGFuT3JFcXVhbCA9IEFSTTY0
QXNzZW1ibGVyOjpDb25kaXRpb25HRSwKKyAgICAgICAgTGVzc1RoYW4gPSBBUk02NEFzc2VtYmxl
cjo6Q29uZGl0aW9uTFQsCisgICAgICAgIExlc3NUaGFuT3JFcXVhbCA9IEFSTTY0QXNzZW1ibGVy
OjpDb25kaXRpb25MRQorICAgIH07CisKKyAgICBlbnVtIFJlc3VsdENvbmRpdGlvbiB7CisgICAg
ICAgIE92ZXJmbG93ID0gQVJNNjRBc3NlbWJsZXI6OkNvbmRpdGlvblZTLAorICAgICAgICBTaWdu
ZWQgPSBBUk02NEFzc2VtYmxlcjo6Q29uZGl0aW9uTUksCisgICAgICAgIFBvc2l0aXZlT3JaZXJv
ID0gQVJNNjRBc3NlbWJsZXI6OkNvbmRpdGlvblBMLAorICAgICAgICBaZXJvID0gQVJNNjRBc3Nl
bWJsZXI6OkNvbmRpdGlvbkVRLAorICAgICAgICBOb25aZXJvID0gQVJNNjRBc3NlbWJsZXI6OkNv
bmRpdGlvbk5FCisgICAgfTsKKworICAgIGVudW0gWmVyb0NvbmRpdGlvbiB7CisgICAgICAgIElz
WmVybyA9IEFSTTY0QXNzZW1ibGVyOjpDb25kaXRpb25FUSwKKyAgICAgICAgSXNOb25aZXJvID0g
QVJNNjRBc3NlbWJsZXI6OkNvbmRpdGlvbk5FCisgICAgfTsKKworICAgIGVudW0gRG91YmxlQ29u
ZGl0aW9uIHsKKyAgICAgICAgLy8gVGhlc2UgY29uZGl0aW9ucyB3aWxsIG9ubHkgZXZhbHVhdGUg
dG8gdHJ1ZSBpZiB0aGUgY29tcGFyaXNvbiBpcyBvcmRlcmVkIC0gaS5lLiBuZWl0aGVyIG9wZXJh
bmQgaXMgTmFOLgorICAgICAgICBEb3VibGVFcXVhbCA9IEFSTTY0QXNzZW1ibGVyOjpDb25kaXRp
b25FUSwKKyAgICAgICAgRG91YmxlTm90RXF1YWwgPSBBUk02NEFzc2VtYmxlcjo6Q29uZGl0aW9u
VkMsIC8vIE5vdCB0aGUgcmlnaHQgZmxhZyEgY2hlY2sgZm9yIHRoaXMgJiBoYW5kbGUgZGlmZmVy
ZW50bHkuCisgICAgICAgIERvdWJsZUdyZWF0ZXJUaGFuID0gQVJNNjRBc3NlbWJsZXI6OkNvbmRp
dGlvbkdULAorICAgICAgICBEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWwgPSBBUk02NEFzc2VtYmxl
cjo6Q29uZGl0aW9uR0UsCisgICAgICAgIERvdWJsZUxlc3NUaGFuID0gQVJNNjRBc3NlbWJsZXI6
OkNvbmRpdGlvbkxPLAorICAgICAgICBEb3VibGVMZXNzVGhhbk9yRXF1YWwgPSBBUk02NEFzc2Vt
Ymxlcjo6Q29uZGl0aW9uTFMsCisgICAgICAgIC8vIElmIGVpdGhlciBvcGVyYW5kIGlzIE5hTiwg
dGhlc2UgY29uZGl0aW9ucyBhbHdheXMgZXZhbHVhdGUgdG8gdHJ1ZS4KKyAgICAgICAgRG91Ymxl
RXF1YWxPclVub3JkZXJlZCA9IEFSTTY0QXNzZW1ibGVyOjpDb25kaXRpb25WUywgLy8gTm90IHRo
ZSByaWdodCBmbGFnISBjaGVjayBmb3IgdGhpcyAmIGhhbmRsZSBkaWZmZXJlbnRseS4KKyAgICAg
ICAgRG91YmxlTm90RXF1YWxPclVub3JkZXJlZCA9IEFSTTY0QXNzZW1ibGVyOjpDb25kaXRpb25O
RSwKKyAgICAgICAgRG91YmxlR3JlYXRlclRoYW5PclVub3JkZXJlZCA9IEFSTTY0QXNzZW1ibGVy
OjpDb25kaXRpb25ISSwKKyAgICAgICAgRG91YmxlR3JlYXRlclRoYW5PckVxdWFsT3JVbm9yZGVy
ZWQgPSBBUk02NEFzc2VtYmxlcjo6Q29uZGl0aW9uSFMsCisgICAgICAgIERvdWJsZUxlc3NUaGFu
T3JVbm9yZGVyZWQgPSBBUk02NEFzc2VtYmxlcjo6Q29uZGl0aW9uTFQsCisgICAgICAgIERvdWJs
ZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRlcmVkID0gQVJNNjRBc3NlbWJsZXI6OkNvbmRpdGlvbkxF
LAorICAgIH07CisKKyAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBzdGFja1BvaW50ZXJSZWdp
c3RlciA9IEFSTTY0UmVnaXN0ZXJzOjpzcDsKKyAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBs
aW5rUmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6bHI7CisKKworICAgIC8vIEludGVnZXIgb3Bl
cmF0aW9uczoKKworICAgIHZvaWQgYWRkMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDwzMj4oZGVzdCwgZGVzdCwgc3JjKTsK
KyAgICB9CisKKyAgICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIGFkZDMyKGltbSwgZGVzdCwgZGVzdCk7CisgICAgfQorCisgICAg
dm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgaWYgKGlzVUludDEyKGltbS5tX3ZhbHVlKSkKKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmFkZDwzMj4oZGVzdCwgc3JjLCBVSW50MTIoaW1tLm1fdmFsdWUpKTsK
KyAgICAgICAgZWxzZSBpZiAoaXNVSW50MTIoLWltbS5tX3ZhbHVlKSkKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLnN1YjwzMj4oZGVzdCwgc3JjLCBVSW50MTIoLWltbS5tX3ZhbHVlKSk7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgbW92ZShpbW0sIGdldENhY2hlZERhdGFUZW1wUmVnaXN0
ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8MzI+KGRl
c3QsIHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lk
IGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IGxvYWQzMihhZGRyZXNzLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRl
KCkpOworCisgICAgICAgIGlmIChpc1VJbnQxMihpbW0ubV92YWx1ZSkpCisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5hZGQ8MzI+KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIFVJ
bnQxMihpbW0ubV92YWx1ZSkpOworICAgICAgICBlbHNlIGlmIChpc1VJbnQxMigtaW1tLm1fdmFs
dWUpKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3ViPDMyPihkYXRhVGVtcFJlZ2lzdGVyLCBk
YXRhVGVtcFJlZ2lzdGVyLCBVSW50MTIoLWltbS5tX3ZhbHVlKSk7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgbW92ZShpbW0sIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52
YWxpZGF0ZSgpKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZDwzMj4oZGF0YVRlbXBSZWdp
c3RlciwgZGF0YVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgfQor
CisgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7CisgICAgfQorCisg
ICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIGxvYWQzMihhZGRyZXNzLm1fcHRyLCBnZXRDYWNoZWREYXRhVGVtcFJl
Z2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworCisgICAgICAgIGlmIChpc1VJbnQxMihpbW0ubV92
YWx1ZSkpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZDwzMj4oZGF0YVRlbXBSZWdpc3Rl
ciwgZGF0YVRlbXBSZWdpc3RlciwgVUludDEyKGltbS5tX3ZhbHVlKSk7CisgICAgICAgICAgICBz
dG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MubV9wdHIpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGlzVUludDEyKC1pbW0ubV92YWx1ZSkpIHsK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN1YjwzMj4oZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRl
bXBSZWdpc3RlciwgVUludDEyKC1pbW0ubV92YWx1ZSkpOworICAgICAgICAgICAgc3RvcmUzMihk
YXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm1fcHRyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIG1vdmUoaW1tLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJ
REFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDwzMj4oZGF0YVRlbXBS
ZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAg
c3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm1fcHRyKTsKKyAgICB9CisKKyAgICB2
b2lkIGFkZDMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBs
b2FkMzIoc3JjLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwor
ICAgICAgICBhZGQzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lk
IGFkZDY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5hZGQ8NjQ+KGRlc3QsIGRlc3QsIHNyYyk7CisgICAgfQorCisgICAgdm9pZCBh
ZGQ2NChUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBp
ZiAoaXNVSW50MTIoaW1tLm1fdmFsdWUpKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8
NjQ+KGRlc3QsIGRlc3QsIFVJbnQxMihpbW0ubV92YWx1ZSkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGlmIChpc1VJbnQxMigtaW1tLm1fdmFsdWUpKSB7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5zdWI8NjQ+KGRlc3QsIGRlc3QsIFVJbnQxMigtaW1tLm1fdmFs
dWUpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHNpZ25FeHRl
bmQzMlRvUHRyKGltbSwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgp
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihkZXN0LCBkZXN0LCBkYXRhVGVtcFJlZ2lz
dGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZDY0KFRydXN0ZWRJbW02NCBpbW0sIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIGludHB0cl90IGltbWVkaWF0ZSA9IGltbS5tX3ZhbHVl
OworCisgICAgICAgIGlmIChpc1VJbnQxMihpbW1lZGlhdGUpKSB7CisgICAgICAgICAgICBtX2Fz
c2VtYmxlci5hZGQ8NjQ+KGRlc3QsIGRlc3QsIFVJbnQxMihzdGF0aWNfY2FzdDxpbnQzMl90Pihp
bW1lZGlhdGUpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGlzVUludDEyKC1pbW1lZGlhdGUpKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWI8NjQ+
KGRlc3QsIGRlc3QsIFVJbnQxMihzdGF0aWNfY2FzdDxpbnQzMl90PigtaW1tZWRpYXRlKSkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbW92ZShpbW0sIGdldENh
Y2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIG1fYXNzZW1i
bGVyLmFkZDw2ND4oZGVzdCwgZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgfQorCisgICAg
dm9pZCBhZGQ2NChUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgaWYgKGlzVUludDEyKGltbS5tX3ZhbHVlKSkgeworICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihkZXN0LCBzcmMsIFVJbnQxMihpbW0ubV92YWx1ZSkp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChpc1VJbnQxMigt
aW1tLm1fdmFsdWUpKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWI8NjQ+KGRlc3QsIHNy
YywgVUludDEyKC1pbW0ubV92YWx1ZSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoaW1tLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lz
dGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KGRlc3Qs
IHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgfQorCisgICAgdm9pZCBhZGQ2NChUcnVzdGVk
SW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBsb2FkNjQoYWRkcmVz
cywgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKworICAgICAg
ICBpZiAoaXNVSW50MTIoaW1tLm1fdmFsdWUpKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRk
PDY0PihkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBVSW50MTIoaW1tLm1fdmFs
dWUpKTsKKyAgICAgICAgZWxzZSBpZiAoaXNVSW50MTIoLWltbS5tX3ZhbHVlKSkKKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnN1Yjw2ND4oZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rl
ciwgVUludDEyKC1pbW0ubV92YWx1ZSkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNp
Z25FeHRlbmQzMlRvUHRyKGltbSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZh
bGlkYXRlKCkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihkYXRhVGVtcFJlZ2lz
dGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOworICAgICAgICB9CisK
KyAgICAgICAgc3RvcmU2NChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKKyAgICB9CisKKyAg
ICB2b2lkIGFkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbG9hZDY0KGFkZHJlc3MubV9wdHIsIGdldENhY2hlZERhdGFUZW1wUmVn
aXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisKKyAgICAgICAgaWYgKGlzVUludDEyKGltbS5tX3Zh
bHVlKSkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihkYXRhVGVtcFJlZ2lzdGVy
LCBkYXRhVGVtcFJlZ2lzdGVyLCBVSW50MTIoaW1tLm1fdmFsdWUpKTsKKyAgICAgICAgICAgIHN0
b3JlNjQoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5tX3B0cik7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXNVSW50MTIoLWltbS5tX3ZhbHVlKSkgewor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3ViPDY0PihkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVt
cFJlZ2lzdGVyLCBVSW50MTIoLWltbS5tX3ZhbHVlKSk7CisgICAgICAgICAgICBzdG9yZTY0KGRh
dGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MubV9wdHIpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoaW1tLCBnZXRDYWNoZWRNZW1vcnlU
ZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2
ND4oZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVy
KTsKKyAgICAgICAgc3RvcmU2NChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm1fcHRyKTsKKyAg
ICB9CisKKyAgICB2b2lkIGFkZDY0KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBsb2FkNjQoc3JjLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZh
bGlkYXRlKCkpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KGRlc3QsIGRlc3QsIGRhdGFU
ZW1wUmVnaXN0ZXIpOworICAgIH0KKworICAgIHZvaWQgYWRkNjQoQWJzb2x1dGVBZGRyZXNzIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDY0KHNyYy5tX3B0ciwgZ2V0
Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuYWRkPDY0PihkZXN0LCBkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKKyAg
ICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBhbmQzMihkZXN0LCBzcmMsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgYW5kMzIoUmVn
aXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5hbmRfPDMyPihkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCisgICAg
dm9pZCBhbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBhbmQzMihpbW0sIGRlc3QsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgYW5kMzIoVHJ1
c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIExvZ2ljYWxJbW1lZGlhdGUgbG9naWNhbEltbSA9IExvZ2ljYWxJbW1lZGlhdGU6OmNy
ZWF0ZTMyKGltbS5tX3ZhbHVlKTsKKworICAgICAgICBpZiAobG9naWNhbEltbS5pc1ZhbGlkKCkp
IHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFuZF88MzI+KGRlc3QsIHNyYywgbG9naWNhbElt
bSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtb3ZlKGltbSwg
Z2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIuYW5kXzwzMj4oZGVzdCwgc3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisK
KyAgICB2b2lkIGFuZDMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBsb2FkMzIoc3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgYW5kMzIoZGF0YVRl
bXBSZWdpc3RlciwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBhbmQ2NChSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kXzw2ND4o
ZGVzdCwgZGVzdCwgc3JjKTsKKyAgICB9CisKKyAgICB2b2lkIGFuZDY0KFRydXN0ZWRJbW0zMiBp
bW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIExvZ2ljYWxJbW1lZGlhdGUgbG9n
aWNhbEltbSA9IExvZ2ljYWxJbW1lZGlhdGU6OmNyZWF0ZTY0KHN0YXRpY19jYXN0PGludHB0cl90
PihzdGF0aWNfY2FzdDxpbnQ2NF90PihpbW0ubV92YWx1ZSkpKTsKKworICAgICAgICBpZiAobG9n
aWNhbEltbS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFuZF88NjQ+KGRl
c3QsIGRlc3QsIGxvZ2ljYWxJbW0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoaW1tLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVy
SURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBtX2Fzc2VtYmxlci5hbmRfPDY0PihkZXN0LCBk
ZXN0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGNvdW50TGVhZGluZ1pl
cm9zMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmNsejwzMj4oZGVzdCwgc3JjKTsKKyAgICB9CisKKyAgICB2b2lkIGxzaGlmdDMy
KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sc2w8MzI+KGRlc3QsIHNyYywgc2hpZnRBbW91
bnQpOworICAgIH0KKworICAgIHZvaWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJ
bW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxz
bDwzMj4oZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSAmIDB4MWYpOworICAgIH0KKworICAgIHZvaWQg
bHNoaWZ0MzIoUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgbHNoaWZ0MzIoZGVzdCwgc2hpZnRBbW91bnQsIGRlc3QpOworICAgIH0KKworICAg
IHZvaWQgbHNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgbHNoaWZ0MzIoZGVzdCwgaW1tLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIG11
bDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5tdWw8MzI+KGRlc3QsIGRlc3QsIHNyYyk7CisgICAgfQorCisgICAgdm9pZCBtdWwz
MihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbW92ZShpbW0sIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFs
aWRhdGUoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm11bDwzMj4oZGVzdCwgc3JjLCBkYXRhVGVt
cFJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZzMyKFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZzwzMj4oZGVzdCwgZGVzdCk7CisgICAgfQorCisg
ICAgdm9pZCBuZWc2NChSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5uZWc8NjQ+KGRlc3QsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgb3IzMihSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgb3IzMihkZXN0LCBzcmMsIGRl
c3QpOworICAgIH0KKworICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBv
cDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycjwzMj4o
ZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKworICAgIHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBvcjMyKGltbSwgZGVzdCwgZGVzdCk7
CisgICAgfQorCisgICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBMb2dpY2FsSW1tZWRpYXRlIGxvZ2lj
YWxJbW0gPSBMb2dpY2FsSW1tZWRpYXRlOjpjcmVhdGUzMihpbW0ubV92YWx1ZSk7CisKKyAgICAg
ICAgaWYgKGxvZ2ljYWxJbW0uaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5v
cnI8MzI+KGRlc3QsIHNyYywgbG9naWNhbEltbSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBtb3ZlKGltbSwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JyPDMyPihkZXN0LCBzcmMsIGRh
dGFUZW1wUmVnaXN0ZXIpOworICAgIH0KKworICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIHNyYywg
QWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBsb2FkMzIoYWRkcmVzcy5t
X3B0ciwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIub3JyPDMyPihkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVy
LCBzcmMpOworICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MubV9wdHIp
OworICAgIH0KKworICAgIHZvaWQgb3I2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgb3I2NChkZXN0LCBzcmMsIGRlc3QpOworICAgIH0KKworICAgIHZv
aWQgb3I2NChSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycjw2ND4oZGVzdCwgb3AxLCBvcDIpOworICAg
IH0KKworICAgIHZvaWQgb3I2NChUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBvcjY0KGltbSwgZGVzdCwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBv
cjY0KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBMb2dpY2FsSW1tZWRpYXRlIGxvZ2ljYWxJbW0gPSBMb2dpY2FsSW1tZWRp
YXRlOjpjcmVhdGU2NChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oc3RhdGljX2Nhc3Q8aW50NjRfdD4o
aW1tLm1fdmFsdWUpKSk7CisKKyAgICAgICAgaWYgKGxvZ2ljYWxJbW0uaXNWYWxpZCgpKSB7Cisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5vcnI8NjQ+KGRlc3QsIGRlc3QsIGxvZ2ljYWxJbW0pOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc2lnbkV4dGVuZDMyVG9Q
dHIoaW1tLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAg
ICAgICBtX2Fzc2VtYmxlci5vcnI8NjQ+KGRlc3QsIHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgb3I2NChUcnVzdGVkSW1tNjQgaW1tLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBMb2dpY2FsSW1tZWRpYXRlIGxvZ2ljYWxJbW0gPSBMb2dpY2Fs
SW1tZWRpYXRlOjpjcmVhdGU2NChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oc3RhdGljX2Nhc3Q8aW50
NjRfdD4oaW1tLm1fdmFsdWUpKSk7CisKKyAgICAgICAgaWYgKGxvZ2ljYWxJbW0uaXNWYWxpZCgp
KSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5vcnI8NjQ+KGRlc3QsIGRlc3QsIGxvZ2ljYWxJ
bW0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbW92ZShpbW0s
IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIG1f
YXNzZW1ibGVyLm9ycjw2ND4oZGVzdCwgZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgfQor
CisgICAgdm9pZCByb3RhdGVSaWdodDY0KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3Jj
RHN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIucm9yPDY0PihzcmNEc3QsIHNyY0RzdCwg
aW1tLm1fdmFsdWUgJiA2Myk7CisgICAgfQorCisgICAgdm9pZCByc2hpZnQzMihSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYXNyPDMyPihkZXN0LCBzcmMsIHNoaWZ0QW1vdW50KTsKKyAgICB9
CisKKyAgICB2b2lkIHJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hc3I8MzI+KGRlc3Qs
IHNyYywgaW1tLm1fdmFsdWUgJiAweDFmKTsKKyAgICB9CisKKyAgICB2b2lkIHJzaGlmdDMyKFJl
Z2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHJz
aGlmdDMyKGRlc3QsIHNoaWZ0QW1vdW50LCBkZXN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBy
c2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICByc2hpZnQzMihkZXN0LCBpbW0sIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgc3ViMzIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LnN1YjwzMj4oZGVzdCwgZGVzdCwgc3JjKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YjMyKFRydXN0
ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChpc1VJbnQx
MihpbW0ubV92YWx1ZSkpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN1YjwzMj4oZGVzdCwg
ZGVzdCwgVUludDEyKGltbS5tX3ZhbHVlKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgaWYgKGlzVUludDEyKC1pbW0ubV92YWx1ZSkpIHsKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmFkZDwzMj4oZGVzdCwgZGVzdCwgVUludDEyKC1pbW0ubV92YWx1ZSkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbW92ZShpbW0sIGdldENhY2hl
ZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIG1fYXNzZW1ibGVy
LnN1YjwzMj4oZGVzdCwgZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgfQorCisgICAgdm9p
ZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBsb2FkMzIoYWRkcmVzcywgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0
ZSgpKTsKKworICAgICAgICBpZiAoaXNVSW50MTIoaW1tLm1fdmFsdWUpKQorICAgICAgICAgICAg
bV9hc3NlbWJsZXIuc3ViPDMyPihkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBV
SW50MTIoaW1tLm1fdmFsdWUpKTsKKyAgICAgICAgZWxzZSBpZiAoaXNVSW50MTIoLWltbS5tX3Zh
bHVlKSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZDwzMj4oZGF0YVRlbXBSZWdpc3Rlciwg
ZGF0YVRlbXBSZWdpc3RlciwgVUludDEyKC1pbW0ubV92YWx1ZSkpOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIG1vdmUoaW1tLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZElu
dmFsaWRhdGUoKSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWI8MzI+KGRhdGFUZW1wUmVn
aXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CisgICAgICAgIH0K
KworICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MpOworICAgIH0KKwor
ICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBsb2FkMzIoYWRkcmVzcy5tX3B0ciwgZ2V0Q2FjaGVkRGF0YVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKworICAgICAgICBpZiAoaXNVSW50MTIoaW1tLm1f
dmFsdWUpKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWI8MzI+KGRhdGFUZW1wUmVnaXN0
ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIFVJbnQxMihpbW0ubV92YWx1ZSkpOworICAgICAgICAgICAg
c3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm1fcHRyKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpc1VJbnQxMigtaW1tLm1fdmFsdWUpKSB7
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8MzI+KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFU
ZW1wUmVnaXN0ZXIsIFVJbnQxMigtaW1tLm1fdmFsdWUpKTsKKyAgICAgICAgICAgIHN0b3JlMzIo
ZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5tX3B0cik7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBtb3ZlKGltbSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVy
SURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBtX2Fzc2VtYmxlci5zdWI8MzI+KGRhdGFUZW1w
UmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CisgICAgICAg
IHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5tX3B0cik7CisgICAgfQorCisgICAg
dm9pZCBzdWIzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bG9hZDMyKHNyYywgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsK
KyAgICAgICAgc3ViMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdCk7CisgICAgfQorCisgICAgdm9p
ZCBzdWI2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuc3ViPDY0PihkZXN0LCBkZXN0LCBzcmMpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIHN1YjY0KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIGlmIChpc1VJbnQxMihpbW0ubV92YWx1ZSkpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
LnN1Yjw2ND4oZGVzdCwgZGVzdCwgVUludDEyKGltbS5tX3ZhbHVlKSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzVUludDEyKC1pbW0ubV92YWx1ZSkpIHsK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4oZGVzdCwgZGVzdCwgVUludDEyKC1pbW0u
bV92YWx1ZSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc2ln
bkV4dGVuZDMyVG9QdHIoaW1tLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlk
YXRlKCkpOworICAgICAgICBtX2Fzc2VtYmxlci5zdWI8NjQ+KGRlc3QsIGRlc3QsIGRhdGFUZW1w
UmVnaXN0ZXIpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHN1YjY0KFRydXN0ZWRJbW02NCBpbW0s
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGludHB0cl90IGltbWVkaWF0ZSA9IGlt
bS5tX3ZhbHVlOworCisgICAgICAgIGlmIChpc1VJbnQxMihpbW1lZGlhdGUpKSB7CisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5zdWI8NjQ+KGRlc3QsIGRlc3QsIFVJbnQxMihzdGF0aWNfY2FzdDxp
bnQzMl90PihpbW1lZGlhdGUpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGlzVUludDEyKC1pbW1lZGlhdGUpKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5hZGQ8NjQ+KGRlc3QsIGRlc3QsIFVJbnQxMihzdGF0aWNfY2FzdDxpbnQzMl90PigtaW1tZWRp
YXRlKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbW92ZShp
bW0sIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAg
IG1fYXNzZW1ibGVyLnN1Yjw2ND4oZGVzdCwgZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAg
fQorCisgICAgdm9pZCB1cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRB
bW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxzcjwz
Mj4oZGVzdCwgc3JjLCBzaGlmdEFtb3VudCk7CisgICAgfQorICAgIAorICAgIHZvaWQgdXJzaGlm
dDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sc3I8MzI+KGRlc3QsIHNyYywgaW1tLm1fdmFsdWUg
JiAweDFmKTsKKyAgICB9CisKKyAgICB2b2lkIHVyc2hpZnQzMihSZWdpc3RlcklEIHNoaWZ0QW1v
dW50LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICB1cnNoaWZ0MzIoZGVzdCwgc2hp
ZnRBbW91bnQsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHVyc2hpZnQzMihUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICB1cnNoaWZ0MzIoZGVz
dCwgaW1tLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICB4b3IzMihkZXN0LCBzcmMsIGRlc3QpOwor
ICAgIH0KKworICAgIHZvaWQgeG9yMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5lb3I8MzI+KGRlc3Qs
IG9wMSwgb3AyKTsKKyAgICB9CisKKyAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHhvcjMyKGltbSwgZGVzdCwgZGVzdCk7Cisg
ICAgfQorCisgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIubXZuPDMyPihkZXN0LCBzcmMpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIExvZ2ljYWxJbW1lZGlhdGUgbG9naWNhbEltbSA9IExvZ2ljYWxJbW1l
ZGlhdGU6OmNyZWF0ZTMyKGltbS5tX3ZhbHVlKTsKKworICAgICAgICAgICAgaWYgKGxvZ2ljYWxJ
bW0uaXNWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuZW9yPDMyPihkZXN0
LCBkZXN0LCBsb2dpY2FsSW1tKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIG1vdmUoaW1tLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURB
bmRJbnZhbGlkYXRlKCkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuZW9yPDMyPihkZXN0LCBz
cmMsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCB4b3I2
NChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbG9hZDY0
KGFkZHJlc3MsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmVvcjw2ND4oZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdp
c3Rlciwgc3JjKTsKKyAgICAgICAgc3RvcmU2NChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsK
KyAgICB9CisKKyAgICB2b2lkIHhvcjY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICB4b3I2NChkZXN0LCBzcmMsIGRlc3QpOworICAgIH0KKworICAgIHZv
aWQgeG9yNjQoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5lb3I8NjQ+KGRlc3QsIG9wMSwgb3AyKTsKKyAg
ICB9CisKKyAgICB2b2lkIHhvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIHhvcjY0KGltbSwgZGVzdCwgZGVzdCk7CisgICAgfQorCisgICAgdm9p
ZCB4b3I2NChUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9h
c3NlbWJsZXIubXZuPDY0PihkZXN0LCBzcmMpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IExvZ2ljYWxJbW1lZGlhdGUgbG9naWNhbEltbSA9IExvZ2ljYWxJbW1lZGlhdGU6OmNyZWF0ZTY0
KHN0YXRpY19jYXN0PGludHB0cl90PihzdGF0aWNfY2FzdDxpbnQ2NF90PihpbW0ubV92YWx1ZSkp
KTsKKworICAgICAgICAgICAgaWYgKGxvZ2ljYWxJbW0uaXNWYWxpZCgpKSB7CisgICAgICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuZW9yPDY0PihkZXN0LCBkZXN0LCBsb2dpY2FsSW1tKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNpZ25FeHRl
bmQzMlRvUHRyKGltbSwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgp
KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmVvcjw2ND4oZGVzdCwgc3JjLCBkYXRhVGVtcFJl
Z2lzdGVyKTsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgLy8gTWVtb3J5IGFjY2VzcyBvcGVy
YXRpb25zOgorCisgICAgdm9pZCBsb2FkNjQoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmICh0cnlMb2FkV2l0aE9mZnNldDw2ND4oZGVz
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCkpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwg
Z2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBt
X2Fzc2VtYmxlci5sZHI8NjQ+KGRlc3QsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVy
KTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWQ2NChCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJlc3Mu
c2NhbGUgfHwgYWRkcmVzcy5zY2FsZSA9PSAzKSkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
bGRyPDY0PihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFSTTY0QXNzZW1ibGVy
OjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCks
IGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3Rl
ciwgYWRkcmVzcy5pbmRleCwgQVJNNjRBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5sZHI8NjQ+KGRlc3QsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVt
cFJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWQ2NChjb25zdCB2b2lkKiBhZGRyZXNz
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkPDY0PihhZGRyZXNzLCBkZXN0
KTsKKyAgICB9CisKKyAgICBEYXRhTGFiZWwzMiBsb2FkNjRXaXRoQWRkcmVzc09mZnNldFBhdGNo
KEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgRGF0YUxh
YmVsMzIgbGFiZWwodGhpcyk7CisgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyV2l0aEZpeGVkV2lk
dGgoYWRkcmVzcy5vZmZzZXQsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxp
ZGF0ZSgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRyPDY0PihkZXN0LCBhZGRyZXNzLmJhc2Us
IG1lbW9yeVRlbXBSZWdpc3RlciwgQVJNNjRBc3NlbWJsZXI6OlNYVFcsIDApOworICAgICAgICBy
ZXR1cm4gbGFiZWw7CisgICAgfQorICAgIAorICAgIERhdGFMYWJlbENvbXBhY3QgbG9hZDY0V2l0
aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBBU1NFUlQoaXNDb21wYWN0UHRyQWxpZ25lZEFkZHJlc3NPZmZz
ZXQoYWRkcmVzcy5vZmZzZXQpKTsKKyAgICAgICAgRGF0YUxhYmVsQ29tcGFjdCBsYWJlbCh0aGlz
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRyPDY0PihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJl
c3Mub2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIGxhYmVsOworICAgIH0KKworICAgIENvbnZlcnRp
YmxlTG9hZExhYmVsIGNvbnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHJlc3VsdCh0aGlz
KTsKKyAgICAgICAgQVNTRVJUKCEoYWRkcmVzcy5vZmZzZXQgJiB+MHhmZjgpKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIubGRyPDY0PihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB2b2lkIGxvYWQzMihJbXBsaWNp
dEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKHRy
eUxvYWRXaXRoT2Zmc2V0PDMyPihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVk
SW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZElu
dmFsaWRhdGUoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkcjwzMj4oZGVzdCwgYWRkcmVzcy5i
YXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOworICAgIH0KKworICAgIHZvaWQgbG9hZDMyKEJhc2VJ
bmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAoIWFkZHJl
c3Mub2Zmc2V0ICYmICghYWRkcmVzcy5zY2FsZSB8fCBhZGRyZXNzLnNjYWxlID09IDIpKSB7Cisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHI8MzI+KGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVz
cy5pbmRleCwgQVJNNjRBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3Rl
ZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJ
bnZhbGlkYXRlKCkpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdp
c3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBBUk02NEFzc2VtYmxlcjo6
VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkcjwzMj4oZGVzdCwg
YWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOworICAgIH0KKworICAgIHZvaWQgbG9h
ZDMyKGNvbnN0IHZvaWQqIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IGxvYWQ8MzI+KGFkZHJlc3MsIGRlc3QpOworICAgIH0KKworICAgIERhdGFMYWJlbDMyIGxvYWQz
MldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBEYXRhTGFiZWwzMiBsYWJlbCh0aGlzKTsKKyAgICAgICAgc2lnbkV4
dGVuZDMyVG9QdHJXaXRoRml4ZWRXaWR0aChhZGRyZXNzLm9mZnNldCwgZ2V0Q2FjaGVkTWVtb3J5
VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBtX2Fzc2VtYmxlci5sZHI8
MzI+KGRlc3QsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBBUk02NEFzc2VtYmxl
cjo6U1hUVywgMCk7CisgICAgICAgIHJldHVybiBsYWJlbDsKKyAgICB9CisgICAgCisgICAgRGF0
YUxhYmVsQ29tcGFjdCBsb2FkMzJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaChBZGRyZXNz
IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0NvbXBh
Y3RQdHJBbGlnbmVkQWRkcmVzc09mZnNldChhZGRyZXNzLm9mZnNldCkpOworICAgICAgICBEYXRh
TGFiZWxDb21wYWN0IGxhYmVsKHRoaXMpOworICAgICAgICBtX2Fzc2VtYmxlci5sZHI8MzI+KGRl
c3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOworICAgICAgICByZXR1cm4gbGFiZWw7
CisgICAgfQorCisgICAgdm9pZCBsb2FkMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRzKEJhc2VJbmRl
eCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkMzIoYWRkcmVz
cywgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBsb2FkMTYoSW1wbGljaXRBZGRyZXNzIGFkZHJl
c3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmICh0cnlMb2FkV2l0aE9mZnNl
dDwxNj4oZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCkpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mu
b2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5sZHJoKGRlc3QsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJl
Z2lzdGVyKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkMTYoQmFzZUluZGV4IGFkZHJlc3Ms
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYg
KCFhZGRyZXNzLnNjYWxlIHx8IGFkZHJlc3Muc2NhbGUgPT0gMSkpIHsKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmxkcmgoZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBUk02NEFz
c2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5v
ZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1w
UmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIEFSTTY0QXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNj
YWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRyaChkZXN0LCBhZGRyZXNzLmJhc2UsIG1lbW9y
eVRlbXBSZWdpc3Rlcik7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZDE2VW5hbGlnbmVkKEJh
c2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkMTYo
YWRkcmVzcywgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBsb2FkMTZTaWduZWQoQmFzZUluZGV4
IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmICghYWRkcmVzcy5v
ZmZzZXQgJiYgKCFhZGRyZXNzLnNjYWxlIHx8IGFkZHJlc3Muc2NhbGUgPT0gMSkpIHsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmxkcnNoPDY0PihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
aW5kZXgsIEFSTTY0QXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0ZWRJ
bW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52
YWxpZGF0ZSgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0
ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQVJNNjRBc3NlbWJsZXI6OlVY
VFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxlci5sZHJzaDw2ND4oZGVzdCwg
YWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOworICAgIH0KKworICAgIHZvaWQgbG9h
ZDgoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIGlmICh0cnlMb2FkV2l0aE9mZnNldDw4PihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
b2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBzaWduRXh0ZW5kMzJUb1B0
cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0
ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkcmIoZGVzdCwgYWRk
cmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOworICAgIH0KKworICAgIHZvaWQgbG9hZDgo
QmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmICgh
YWRkcmVzcy5vZmZzZXQgJiYgIWFkZHJlc3Muc2NhbGUpIHsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmxkcmIoZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBUk02NEFzc2VtYmxl
cjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQp
LCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAg
IG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0
ZXIsIGFkZHJlc3MuaW5kZXgsIEFSTTY0QXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsK
KyAgICAgICAgbV9hc3NlbWJsZXIubGRyYihkZXN0LCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBS
ZWdpc3Rlcik7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9hZDgoY29uc3Qgdm9pZCogYWRkcmVz
cywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZVRvQ2FjaGVkUmVnKFRydXN0
ZWRJbW1QdHIoYWRkcmVzcyksIG1fY2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIubGRyYihkZXN0LCBtZW1vcnlUZW1wUmVnaXN0ZXIsIEFSTTY0UmVnaXN0ZXJz
Ojp6cik7CisgICAgfQorCisgICAgdm9pZCBsb2FkOFNpZ25lZChCYXNlSW5kZXggYWRkcmVzcywg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCAmJiAh
YWRkcmVzcy5zY2FsZSkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyc2I8NjQ+KGRlc3Qs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgQVJNNjRBc3NlbWJsZXI6OlVYVFgsIGFkZHJl
c3Muc2NhbGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc2ln
bkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVt
b3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBtX2Fzc2VtYmxlci5h
ZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmlu
ZGV4LCBBUk02NEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxkcnNiPDY0PihkZXN0LCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7
CisgICAgfQorCisgICAgdm9pZCBzdG9yZTY0KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlmICh0cnlTdG9yZVdpdGhPZmZzZXQ8NjQ+KHNy
YywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCkpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwg
Z2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBt
X2Fzc2VtYmxlci5zdHI8NjQ+KHNyYywgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIp
OworICAgIH0KKworICAgIHZvaWQgc3RvcmU2NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFk
ZHJlc3MpCisgICAgeworICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0ICYmICghYWRkcmVzcy5z
Y2FsZSB8fCBhZGRyZXNzLnNjYWxlID09IDMpKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5z
dHI8NjQ+KHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBUk02NEFzc2VtYmxlcjo6
VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBn
ZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIG1f
YXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIs
IGFkZHJlc3MuaW5kZXgsIEFSTTY0QXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuc3RyPDY0PihzcmMsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJl
Z2lzdGVyKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZTY0KFJlZ2lzdGVySUQgc3JjLCBj
b25zdCB2b2lkKiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgc3RvcmU8NjQ+KHNyYywgYWRkcmVz
cyk7CisgICAgfQorCisgICAgdm9pZCBzdG9yZTY0KFRydXN0ZWRJbW02NCBpbW0sIEltcGxpY2l0
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSkgeworICAg
ICAgICAgICAgc3RvcmU2NChBUk02NFJlZ2lzdGVyczo6enIsIGFkZHJlc3MpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbW92ZVRvQ2FjaGVkUmVnKGltbSwgbV9k
YXRhTWVtb3J5VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgc3RvcmU2NChkYXRhVGVtcFJlZ2lzdGVy
LCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlNjQoVHJ1c3RlZEltbTY0IGltbSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBpZiAoIWltbS5tX3ZhbHVlKSB7Cisg
ICAgICAgICAgICBzdG9yZTY0KEFSTTY0UmVnaXN0ZXJzOjp6ciwgYWRkcmVzcyk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtb3ZlVG9DYWNoZWRSZWcoaW1tLCBt
X2RhdGFNZW1vcnlUZW1wUmVnaXN0ZXIpOworICAgICAgICBzdG9yZTY0KGRhdGFUZW1wUmVnaXN0
ZXIsIGFkZHJlc3MpOworICAgIH0KKyAgICAKKyAgICBEYXRhTGFiZWwzMiBzdG9yZTY0V2l0aEFk
ZHJlc3NPZmZzZXRQYXRjaChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgRGF0YUxhYmVsMzIgbGFiZWwodGhpcyk7CisgICAgICAgIHNpZ25FeHRlbmQzMlRv
UHRyV2l0aEZpeGVkV2lkdGgoYWRkcmVzcy5vZmZzZXQsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdp
c3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3RyPDY0PihzcmMs
IGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBBUk02NEFzc2VtYmxlcjo6U1hUVywg
MCk7CisgICAgICAgIHJldHVybiBsYWJlbDsKKyAgICB9CisKKyAgICB2b2lkIHN0b3JlMzIoUmVn
aXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYg
KHRyeVN0b3JlV2l0aE9mZnNldDwzMj4oc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0
KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVz
dGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFu
ZEludmFsaWRhdGUoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0cjwzMj4oc3JjLCBhZGRyZXNz
LmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CisgICAgfQorCisgICAgdm9pZCBzdG9yZTMyKFJl
Z2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlmICghYWRk
cmVzcy5vZmZzZXQgJiYgKCFhZGRyZXNzLnNjYWxlIHx8IGFkZHJlc3Muc2NhbGUgPT0gMikpIHsK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cjwzMj4oc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJl
c3MuaW5kZXgsIEFSTTY0QXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0
ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVn
aXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQVJNNjRBc3NlbWJsZXI6
OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxlci5zdHI8MzI+KHNyYywg
YWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOworICAgIH0KKworICAgIHZvaWQgc3Rv
cmUzMihSZWdpc3RlcklEIHNyYywgY29uc3Qgdm9pZCogYWRkcmVzcykKKyAgICB7CisgICAgICAg
IHN0b3JlPDMyPihzcmMsIGFkZHJlc3MpOworICAgIH0KKworICAgIHZvaWQgc3RvcmUzMihUcnVz
dGVkSW1tMzIgaW1tLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlm
ICghaW1tLm1fdmFsdWUpIHsKKyAgICAgICAgICAgIHN0b3JlMzIoQVJNNjRSZWdpc3RlcnM6Onpy
LCBhZGRyZXNzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1v
dmVUb0NhY2hlZFJlZyhpbW0sIG1fZGF0YU1lbW9yeVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHN0
b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7CisgICAgfQorCisgICAgdm9pZCBzdG9y
ZTMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
aWYgKCFpbW0ubV92YWx1ZSkgeworICAgICAgICAgICAgc3RvcmUzMihBUk02NFJlZ2lzdGVyczo6
enIsIGFkZHJlc3MpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
bW92ZVRvQ2FjaGVkUmVnKGltbSwgbV9kYXRhTWVtb3J5VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAg
c3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKKyAgICB9CisKKyAgICB2b2lkIHN0
b3JlMzIoVHJ1c3RlZEltbTMyIGltbSwgY29uc3Qgdm9pZCogYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIGlmICghaW1tLm1fdmFsdWUpIHsKKyAgICAgICAgICAgIHN0b3JlMzIoQVJNNjRSZWdpc3Rl
cnM6OnpyLCBhZGRyZXNzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIG1vdmVUb0NhY2hlZFJlZyhpbW0sIG1fZGF0YU1lbW9yeVRlbXBSZWdpc3Rlcik7CisgICAg
ICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7CisgICAgfQorCisgICAgRGF0
YUxhYmVsMzIgc3RvcmUzMldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goUmVnaXN0ZXJJRCBzcmMsIEFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIERhdGFMYWJlbDMyIGxhYmVsKHRoaXMpOwor
ICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cldpdGhGaXhlZFdpZHRoKGFkZHJlc3Mub2Zmc2V0LCBn
ZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIG1f
YXNzZW1ibGVyLnN0cjwzMj4oc3JjLCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlciwg
QVJNNjRBc3NlbWJsZXI6OlNYVFcsIDApOworICAgICAgICByZXR1cm4gbGFiZWw7CisgICAgfQor
CisgICAgdm9pZCBzdG9yZTE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYgKCFhZGRyZXNzLnNjYWxlIHx8IGFk
ZHJlc3Muc2NhbGUgPT0gMSkpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cmgoc3JjLCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFSTTY0QXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNz
LnNjYWxlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHNpZ25F
eHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9y
eVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRk
PDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRl
eCwgQVJNNjRBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5zdHJoKHNyYywgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOworICAgIH0K
KworICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYgIWFkZHJlc3Muc2NhbGUpIHsKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cmIoc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5k
ZXgsIEFSTTY0QXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0z
MihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxp
ZGF0ZSgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIs
IG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQVJNNjRBc3NlbWJsZXI6OlVYVFgs
IGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxlci5zdHJiKHNyYywgYWRkcmVzcy5i
YXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOworICAgIH0KKworICAgIHZvaWQgc3RvcmU4KFJlZ2lz
dGVySUQgc3JjLCB2b2lkKiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbW92ZShJbW1QdHIoYWRk
cmVzcyksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuc3RyYihzcmMsIG1lbW9yeVRlbXBSZWdpc3RlciwgMCk7CisgICAg
fQorCisgICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgdm9pZCogYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIGlmICghaW1tLm1fdmFsdWUpIHsKKyAgICAgICAgICAgIHN0b3JlOChBUk02
NFJlZ2lzdGVyczo6enIsIGFkZHJlc3MpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgbW92ZShpbW0sIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFs
aWRhdGUoKSk7CisgICAgICAgIHN0b3JlOChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKKyAg
ICB9CisKKworICAgIC8vIEZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbnM6CisKKyAgICBzdGF0aWMg
Ym9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSB7IHJldHVybiB0cnVlOyB9CisgICAgc3RhdGlj
IGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50VHJ1bmNhdGUoKSB7IHJldHVybiB0cnVlOyB9Cisg
ICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50U3FydCgpIHsgcmV0dXJuIHRydWU7
IH0KKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRBYnMoKSB7IHJldHVybiB0
cnVlOyB9CisKKyAgICBlbnVtIEJyYW5jaFRydW5jYXRlVHlwZSB7IEJyYW5jaElmVHJ1bmNhdGVG
YWlsZWQsIEJyYW5jaElmVHJ1bmNhdGVTdWNjZXNzZnVsIH07CisKKyAgICB2b2lkIGFic0RvdWJs
ZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmZhYnM8NjQ+KGRlc3QsIHNyYyk7CisgICAgfQorCisgICAgdm9pZCBhZGREb3Vi
bGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBh
ZGREb3VibGUoZGVzdCwgc3JjLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIGFkZERvdWJsZShG
UFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmZhZGQ8NjQ+KGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9
CisKKyAgICB2b2lkIGFkZERvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBsb2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIpOworICAgICAgICBh
ZGREb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgYWRkRG91
YmxlKEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIGxvYWREb3VibGUoYWRkcmVzcy5tX3B0ciwgZnBUZW1wUmVnaXN0ZXIpOworICAgICAg
ICBhZGREb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgY2Vp
bERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmZyaW50cDw2ND4oZGVzdCwgc3JjKTsKKyAgICB9CisKKyAgICB2b2lk
IGZsb29yRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIuZnJpbnRtPDY0PihkZXN0LCBzcmMpOworICAgIH0KKworICAg
IC8vIENvbnZlcnQgJ3NyYycgdG8gYW4gaW50ZWdlciwgYW5kIHBsYWNlcyB0aGUgcmVzdWx0aW5n
ICdkZXN0Jy4KKyAgICAvLyBJZiB0aGUgcmVzdWx0IGlzIG5vdCByZXByZXNlbnRhYmxlIGFzIGEg
MzIgYml0IHZhbHVlLCBicmFuY2guCisgICAgLy8gTWF5IGFsc28gYnJhbmNoIGZvciBzb21lIHZh
bHVlcyB0aGF0IGFyZSByZXByZXNlbnRhYmxlIGluIDMyIGJpdHMKKyAgICAvLyAoc3BlY2lmaWNh
bGx5LCBpbiB0aGlzIGNhc2UsIDApLgorICAgIHZvaWQgYnJhbmNoQ29udmVydERvdWJsZVRvSW50
MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBKdW1wTGlzdCYgZmFpbHVyZUNh
c2VzLCBGUFJlZ2lzdGVySUQsIGJvb2wgbmVnWmVyb0NoZWNrID0gdHJ1ZSkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmZjdnRuczwzMiwgNjQ+KGRlc3QsIHNyYyk7CisKKyAgICAgICAgLy8g
Q29udmVydCB0aGUgaW50ZWdlciByZXN1bHQgYmFjayB0byBmbG9hdCAmIGNvbXBhcmUgdG8gdGhl
IG9yaWdpbmFsIHZhbHVlIC0gaWYgbm90IGVxdWFsIG9yIHVub3JkZXJlZCAoTmFOKSB0aGVuIGp1
bXAuCisgICAgICAgIG1fYXNzZW1ibGVyLnNjdnRmPDY0LCAzMj4oZnBUZW1wUmVnaXN0ZXIsIGRl
c3QpOworICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5jaERvdWJsZShEb3VibGVOb3RF
cXVhbE9yVW5vcmRlcmVkLCBzcmMsIGZwVGVtcFJlZ2lzdGVyKSk7CisKKyAgICAgICAgLy8gSWYg
dGhlIHJlc3VsdCBpcyB6ZXJvLCBpdCBtaWdodCBoYXZlIGJlZW4gLTAuMCwgYW5kIHRoZSBkb3Vi
bGUgY29tcGFyaXNvbiB3b24ndCBjYXRjaCB0aGlzIQorICAgICAgICBpZiAobmVnWmVyb0NoZWNr
KQorICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFuY2hUZXN0MzIoWmVybywgZGVz
dCkpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoRG91YmxlKERvdWJsZUNvbmRpdGlvbiBjb25k
LCBGUFJlZ2lzdGVySUQgbGVmdCwgRlBSZWdpc3RlcklEIHJpZ2h0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuZmNtcDw2ND4obGVmdCwgcmlnaHQpOworCisgICAgICAgIGlmIChjb25kID09
IERvdWJsZU5vdEVxdWFsKSB7CisgICAgICAgICAgICAvLyBDb25kaXRpb25ORSBqdW1wcyBpZiBO
b3RFcXVhbCAqb3IqIHVub3JkZXJlZCAtIGZvcmNlIHRoZSB1bm9yZGVyZWQgY2FzZXMgbm90IHRv
IGp1bXAuCisgICAgICAgICAgICBKdW1wIHVub3JkZXJlZCA9IG1ha2VCcmFuY2goQVJNNjRBc3Nl
bWJsZXI6OkNvbmRpdGlvblZTKTsKKyAgICAgICAgICAgIEp1bXAgcmVzdWx0ID0gbWFrZUJyYW5j
aChBUk02NEFzc2VtYmxlcjo6Q29uZGl0aW9uTkUpOworICAgICAgICAgICAgdW5vcmRlcmVkLmxp
bmsodGhpcyk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAg
IGlmIChjb25kID09IERvdWJsZUVxdWFsT3JVbm9yZGVyZWQpIHsKKyAgICAgICAgICAgIEp1bXAg
dW5vcmRlcmVkID0gbWFrZUJyYW5jaChBUk02NEFzc2VtYmxlcjo6Q29uZGl0aW9uVlMpOworICAg
ICAgICAgICAgSnVtcCBub3RFcXVhbCA9IG1ha2VCcmFuY2goQVJNNjRBc3NlbWJsZXI6OkNvbmRp
dGlvbk5FKTsKKyAgICAgICAgICAgIHVub3JkZXJlZC5saW5rKHRoaXMpOworICAgICAgICAgICAg
Ly8gV2UgZ2V0IGhlcmUgaWYgZWl0aGVyIHVub3JkZXJlZCBvciBlcXVhbC4KKyAgICAgICAgICAg
IEp1bXAgcmVzdWx0ID0ganVtcCgpOworICAgICAgICAgICAgbm90RXF1YWwubGluayh0aGlzKTsK
KyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1h
a2VCcmFuY2goY29uZCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hEb3VibGVOb25aZXJvKEZQ
UmVnaXN0ZXJJRCByZWcsIEZQUmVnaXN0ZXJJRCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmZjbXBfMDw2ND4ocmVnKTsKKyAgICAgICAgSnVtcCB1bm9yZGVyZWQgPSBtYWtlQnJhbmNoKEFS
TTY0QXNzZW1ibGVyOjpDb25kaXRpb25WUyk7CisgICAgICAgIEp1bXAgcmVzdWx0ID0gbWFrZUJy
YW5jaChBUk02NEFzc2VtYmxlcjo6Q29uZGl0aW9uTkUpOworICAgICAgICB1bm9yZGVyZWQubGlu
ayh0aGlzKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5j
aERvdWJsZVplcm9Pck5hTihGUFJlZ2lzdGVySUQgcmVnLCBGUFJlZ2lzdGVySUQpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5mY21wXzA8NjQ+KHJlZyk7CisgICAgICAgIEp1bXAgdW5vcmRl
cmVkID0gbWFrZUJyYW5jaChBUk02NEFzc2VtYmxlcjo6Q29uZGl0aW9uVlMpOworICAgICAgICBK
dW1wIG5vdEVxdWFsID0gbWFrZUJyYW5jaChBUk02NEFzc2VtYmxlcjo6Q29uZGl0aW9uTkUpOwor
ICAgICAgICB1bm9yZGVyZWQubGluayh0aGlzKTsKKyAgICAgICAgLy8gV2UgZ2V0IGhlcmUgaWYg
ZWl0aGVyIHVub3JkZXJlZCBvciBlcXVhbC4KKyAgICAgICAgSnVtcCByZXN1bHQgPSBqdW1wKCk7
CisgICAgICAgIG5vdEVxdWFsLmxpbmsodGhpcyk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorCisgICAgSnVtcCBicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBCcmFuY2hUcnVuY2F0ZVR5cGUgYnJhbmNoVHlwZSA9IEJy
YW5jaElmVHJ1bmNhdGVGYWlsZWQpCisgICAgeworICAgICAgICAvLyBUcnVuY2F0ZSB0byBhIDY0
LWJpdCBpbnRlZ2VyIGluIGRhdGFUZW1wUmVnaXN0ZXIsIGNvcHkgdGhlIGxvdyAzMi1iaXQgdG8g
ZGVzdC4KKyAgICAgICAgbV9hc3NlbWJsZXIuZmN2dHpzPDY0LCA2ND4oZ2V0Q2FjaGVkRGF0YVRl
bXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpLCBzcmMpOworICAgICAgICB6ZXJvRXh0ZW5kMzJU
b1B0cihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0KTsKKyAgICAgICAgLy8gQ2hlY2sgdGhsb3cgMzIt
Yml0cyBzaWduIGV4dGVuZCB0byBiZSBlcXVhbCB0byB0aGUgZnVsbCB2YWx1ZS4KKyAgICAgICAg
bV9hc3NlbWJsZXIuY21wPDY0PihkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBB
Uk02NEFzc2VtYmxlcjo6U1hUVywgMCk7CisgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2go
YnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRydW5jYXRlU3VjY2Vzc2Z1bCA/IEVxdWFsIDogTm90RXF1
YWwpKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIoRlBS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBCcmFuY2hUcnVuY2F0ZVR5cGUgYnJhbmNo
VHlwZSA9IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQpCisgICAgeworICAgICAgICAvLyBUcnVuY2F0
ZSB0byBhIDY0LWJpdCBpbnRlZ2VyIGluIGRhdGFUZW1wUmVnaXN0ZXIsIGNvcHkgdGhlIGxvdyAz
Mi1iaXQgdG8gZGVzdC4KKyAgICAgICAgbV9hc3NlbWJsZXIuZmN2dHpzPDY0LCA2ND4oZGVzdCwg
c3JjKTsKKyAgICAgICAgLy8gQ2hlY2sgdGhsb3cgMzItYml0cyB6ZXJvIGV4dGVuZCB0byBiZSBl
cXVhbCB0byB0aGUgZnVsbCB2YWx1ZS4KKyAgICAgICAgbV9hc3NlbWJsZXIuY21wPDY0PihkZXN0
LCBkZXN0LCBBUk02NEFzc2VtYmxlcjo6VVhUVywgMCk7CisgICAgICAgIHJldHVybiBKdW1wKG1h
a2VCcmFuY2goYnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRydW5jYXRlU3VjY2Vzc2Z1bCA/IEVxdWFs
IDogTm90RXF1YWwpKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbnZlcnREb3VibGVUb0Zsb2F0KEZQ
UmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuZmN2dDwzMiwgNjQ+KGRlc3QsIHNyYyk7CisgICAgfQorCisgICAgdm9pZCBjb252ZXJ0
RmxvYXRUb0RvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmZjdnQ8NjQsIDMyPihkZXN0LCBzcmMpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGNvbnZlcnRJbnQzMlRvRG91YmxlKFRydXN0ZWRJbW0zMiBpbW0sIEZQUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZShpbW0sIGdldENhY2hlZERhdGFUZW1w
UmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91Ymxl
KGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNvbnZlcnRJ
bnQzMlRvRG91YmxlKFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnNjdnRmPDY0LCAzMj4oZGVzdCwgc3JjKTsKKyAgICB9CisKKyAg
ICB2b2lkIGNvbnZlcnRJbnQzMlRvRG91YmxlKEFkZHJlc3MgYWRkcmVzcywgRlBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBsb2FkMzIoYWRkcmVzcywgZ2V0Q2FjaGVkRGF0YVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUo
ZGF0YVRlbXBSZWdpc3RlciwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBjb252ZXJ0SW50MzJU
b0RvdWJsZShBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBsb2FkMzIoYWRkcmVzcy5tX3B0ciwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3Rl
cklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUoZGF0YVRl
bXBSZWdpc3RlciwgZGVzdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgZGl2RG91YmxlKEZQUmVn
aXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgZGl2RG91Ymxl
KGRlc3QsIHNyYywgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBkaXZEb3VibGUoRlBSZWdpc3Rl
cklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5mZGl2PDY0PihkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCisgICAg
dm9pZCBsb2FkRG91YmxlKEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIGlmICh0cnlMb2FkV2l0aE9mZnNldDw2ND4oZGVzdCwgYWRkcmVz
cy5iYXNlLCBhZGRyZXNzLm9mZnNldCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
c2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVk
TWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBtX2Fzc2VtYmxl
ci5sZHI8NjQ+KGRlc3QsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKKyAgICB9
CisKKyAgICB2b2lkIGxvYWREb3VibGUoQmFzZUluZGV4IGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJlc3Muc2Nh
bGUgfHwgYWRkcmVzcy5zY2FsZSA9PSAzKSkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRy
PDY0PihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFSTTY0QXNzZW1ibGVyOjpV
WFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdl
dENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3Rlciwg
YWRkcmVzcy5pbmRleCwgQVJNNjRBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAg
ICAgICBtX2Fzc2VtYmxlci5sZHI8NjQ+KGRlc3QsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJl
Z2lzdGVyKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkRG91YmxlKGNvbnN0IHZvaWQqIGFk
ZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZVRvQ2FjaGVkUmVn
KFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIG1fY2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVyKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubGRyPDY0PihkZXN0LCBtZW1vcnlUZW1wUmVnaXN0ZXIsIEFSTTY0
UmVnaXN0ZXJzOjp6cik7CisgICAgfQorCisgICAgdm9pZCBsb2FkRmxvYXQoQmFzZUluZGV4IGFk
ZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKCFhZGRyZXNzLm9m
ZnNldCAmJiAoIWFkZHJlc3Muc2NhbGUgfHwgYWRkcmVzcy5zY2FsZSA9PSAyKSkgeworICAgICAg
ICAgICAgbV9hc3NlbWJsZXIubGRyPDMyPihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5k
ZXgsIEFSTTY0QXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0z
MihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxp
ZGF0ZSgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIs
IG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQVJNNjRBc3NlbWJsZXI6OlVYVFgs
IGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxlci5sZHI8MzI+KGRlc3QsIGFkZHJl
c3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIG1vdmVEb3Vi
bGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5mbW92PDY0PihkZXN0LCBzcmMpOworICAgIH0KKworICAgIHZvaWQgbW92ZURv
dWJsZVRvNjQoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuZm1vdjw2ND4oZGVzdCwgc3JjKTsKKyAgICB9CisKKyAgICB2b2lkIG1v
dmU2NFRvRG91YmxlKFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmZtb3Y8NjQ+KGRlc3QsIHNyYyk7CisgICAgfQorCisgICAgdm9p
ZCBtdWxEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBtdWxEb3VibGUoZGVzdCwgc3JjLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIG11
bERvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmZtdWw8NjQ+KGRlc3QsIG9wMSwgb3Ay
KTsKKyAgICB9CisKKyAgICB2b2lkIG11bERvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBsb2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIpOwor
ICAgICAgICBtdWxEb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGRlc3QpOworICAgIH0KKworICAgIHZv
aWQgbmVnYXRlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuZm5lZzw2ND4oZGVzdCwgc3JjKTsKKyAgICB9CisKKyAg
ICB2b2lkIHNxcnREb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5mc3FydDw2ND4oZGVzdCwgc3JjKTsKKyAgICB9CisK
KyAgICB2b2lkIHN0b3JlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKHRyeVN0b3JlV2l0aE9mZnNldDw2ND4oc3JjLCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRD
YWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLnN0cjw2ND4oc3JjLCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7Cisg
ICAgfQorCisgICAgdm9pZCBzdG9yZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBjb25zdCB2b2lk
KiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbW92ZVRvQ2FjaGVkUmVnKFRydXN0ZWRJbW1QdHIo
YWRkcmVzcyksIG1fY2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuc3RyPDY0PihzcmMsIG1lbW9yeVRlbXBSZWdpc3RlciwgQVJNNjRSZWdpc3RlcnM6OnpyKTsK
KyAgICB9CisKKyAgICB2b2lkIHN0b3JlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRl
eCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJl
c3Muc2NhbGUgfHwgYWRkcmVzcy5zY2FsZSA9PSAzKSkgeworICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuc3RyPDY0PihzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgQVJNNjRBc3NlbWJs
ZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0
KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAg
ICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lz
dGVyLCBhZGRyZXNzLmluZGV4LCBBUk02NEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7
CisgICAgICAgIG1fYXNzZW1ibGVyLnN0cjw2ND4oc3JjLCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRl
bXBSZWdpc3Rlcik7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmVGbG9hdChGUFJlZ2lzdGVy
SUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlmICghYWRkcmVzcy5v
ZmZzZXQgJiYgKCFhZGRyZXNzLnNjYWxlIHx8IGFkZHJlc3Muc2NhbGUgPT0gMikpIHsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnN0cjwzMj4oc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5k
ZXgsIEFSTTY0QXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0z
MihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxp
ZGF0ZSgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIs
IG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQVJNNjRBc3NlbWJsZXI6OlVYVFgs
IGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxlci5zdHI8MzI+KHNyYywgYWRkcmVz
cy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOworICAgIH0KKworICAgIHZvaWQgc3ViRG91Ymxl
KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgc3Vi
RG91YmxlKGRlc3QsIHNyYywgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBzdWJEb3VibGUoRlBS
ZWdpc3RlcklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5mc3ViPDY0PihkZXN0LCBvcDEsIG9wMik7CisgICAgfQor
CisgICAgdm9pZCBzdWJEb3VibGUoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbG9hZERvdWJsZShzcmMsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgc3Vi
RG91YmxlKGZwVGVtcFJlZ2lzdGVyLCBkZXN0KTsKKyAgICB9CisKKyAgICAvLyBSZXN1bHQgaXMg
dW5kZWZpbmVkIGlmIHRoZSB2YWx1ZSBpcyBvdXRzaWRlIG9mIHRoZSBpbnRlZ2VyIHJhbmdlLgor
ICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmZjdnR6czwzMiwgNjQ+KGRlc3Qs
IHNyYyk7CisgICAgfQorCisgICAgdm9pZCB0cnVuY2F0ZURvdWJsZVRvVWludDMyKEZQUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmZj
dnR6dTwzMiwgNjQ+KGRlc3QsIHNyYyk7CisgICAgfQorCisKKyAgICAvLyBTdGFjayBtYW5pcHVs
YXRpb24gb3BlcmF0aW9uczoKKyAgICAvLworICAgIC8vIFRoZSBBQkkgaXMgYXNzdW1lZCB0byBw
cm92aWRlIGEgc3RhY2sgYWJzdHJhY3Rpb24gdG8gbWVtb3J5LAorICAgIC8vIGNvbnRhaW5pbmcg
bWFjaGluZSB3b3JkIHNpemVkIHVuaXRzIG9mIGRhdGEuICBQdXNoIGFuZCBwb3AKKyAgICAvLyBv
cGVyYXRpb25zIGFkZCBhbmQgcmVtb3ZlIGEgc2luZ2xlIHJlZ2lzdGVyIHNpemVkIHVuaXQgb2Yg
ZGF0YQorICAgIC8vIHRvIG9yIGZyb20gdGhlIHN0YWNrLiAgVGhlc2Ugb3BlcmF0aW9ucyBhcmUg
bm90IHN1cHBvcnRlZCBvbgorICAgIC8vIEFSTTY0LiAgUGVlayBhbmQgcG9rZSBvcGVyYXRpb25z
IHJlYWQgb3Igd3JpdGUgdmFsdWVzIG9uIHRoZQorICAgIC8vIHN0YWNrLCB3aXRob3V0IG1vdmlu
ZyB0aGUgY3VycmVudCBzdGFjayBwb3NpdGlvbi4gIEFkZGl0aW9uYWxseSwKKyAgICAvLyB0aGVy
ZSBhcmUgcG9wVG9SZXN0b3JlIGFuZCBwdXNoVG9TYXZlIG9wZXJhdGlvbnMsIHdoaWNoIGFyZQor
ICAgIC8vIGRlc2lnbmVkIGp1c3QgZm9yIHF1aWNrLWFuZC1kaXJ0eSBzYXZpbmcgYW5kIHJlc3Rv
cmluZyBvZgorICAgIC8vIHRlbXBvcmFyeSB2YWx1ZXMuICBUaGVzZSBvcGVyYXRpb25zIGRvbid0
IGNsYWltIHRvIGhhdmUgYW55CisgICAgLy8gQUJJIGNvbXBhdGliaWxpdHkuCisgICAgCisgICAg
dm9pZCBwb3AoUmVnaXN0ZXJJRCkgTk9fUkVUVVJOX0RVRV9UT19DUkFTSAorICAgIHsKKyAgICAg
ICAgQ1JBU0goKTsKKyAgICB9CisKKyAgICB2b2lkIHB1c2goUmVnaXN0ZXJJRCkgTk9fUkVUVVJO
X0RVRV9UT19DUkFTSAorICAgIHsKKyAgICAgICAgQ1JBU0goKTsKKyAgICB9CisKKyAgICB2b2lk
IHB1c2goQWRkcmVzcykgTk9fUkVUVVJOX0RVRV9UT19DUkFTSAorICAgIHsKKyAgICAgICAgQ1JB
U0goKTsKKyAgICB9CisKKyAgICB2b2lkIHB1c2goVHJ1c3RlZEltbTMyKSBOT19SRVRVUk5fRFVF
X1RPX0NSQVNICisgICAgeworICAgICAgICBDUkFTSCgpOworICAgIH0KKworICAgIHZvaWQgcG9w
VG9SZXN0b3JlKFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxk
cjw2ND4oZGVzdCwgQVJNNjRSZWdpc3RlcnM6OnNwLCBQb3N0SW5kZXgoMTYpKTsKKyAgICB9CisK
KyAgICB2b2lkIHB1c2hUb1NhdmUoUmVnaXN0ZXJJRCBzcmMpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5zdHI8NjQ+KHNyYywgQVJNNjRSZWdpc3RlcnM6OnNwLCBQcmVJbmRleCgtMTYpKTsK
KyAgICB9CisKKyAgICB2b2lkIHB1c2hUb1NhdmUoQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbG9hZDMyKGFkZHJlc3MsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFs
aWRhdGUoKSk7CisgICAgICAgIHB1c2hUb1NhdmUoZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgfQor
CisgICAgdm9pZCBwdXNoVG9TYXZlKFRydXN0ZWRJbW0zMiBpbW0pCisgICAgeworICAgICAgICBt
b3ZlKGltbSwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAg
ICAgICAgcHVzaFRvU2F2ZShkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBwb3BUb1Jlc3RvcmUoRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkRG91
YmxlKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBkZXN0KTsKKyAgICAgICAgYWRkNjQoVHJ1c3RlZElt
bTMyKDE2KSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHB1
c2hUb1NhdmUoRlBSZWdpc3RlcklEIHNyYykKKyAgICB7CisgICAgICAgIHN1YjY0KFRydXN0ZWRJ
bW0zMigxNiksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgc3RvcmVEb3VibGUoc3Jj
LCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgfQorCisKKyAgICAvLyBSZWdpc3RlciBtb3Zl
IG9wZXJhdGlvbnM6CisKKyAgICB2b2lkIG1vdmUoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChzcmMgIT0gZGVzdCkKKyAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLm1vdjw2ND4oZGVzdCwgc3JjKTsKKyAgICB9CisKKyAgICB2b2lkIG1vdmUoVHJ1c3Rl
ZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZUludGVybmFs
PFRydXN0ZWRJbW0zMiwgaW50MzJfdD4oaW1tLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIG1v
dmUoVHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1v
dmVJbnRlcm5hbDxUcnVzdGVkSW1tUHRyLCBpbnRwdHJfdD4oaW1tLCBkZXN0KTsKKyAgICB9CisK
KyAgICB2b2lkIG1vdmUoVHJ1c3RlZEltbTY0IGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgbW92ZUludGVybmFsPFRydXN0ZWRJbW02NCwgaW50NjRfdD4oaW1tLCBkZXN0KTsK
KyAgICB9CisKKyAgICB2b2lkIHN3YXAoUmVnaXN0ZXJJRCByZWcxLCBSZWdpc3RlcklEIHJlZzIp
CisgICAgeworICAgICAgICBtb3ZlKHJlZzEsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFu
ZEludmFsaWRhdGUoKSk7CisgICAgICAgIG1vdmUocmVnMiwgcmVnMSk7CisgICAgICAgIG1vdmUo
ZGF0YVRlbXBSZWdpc3RlciwgcmVnMik7CisgICAgfQorICAgIAorICAgIHZvaWQgc2lnbkV4dGVu
ZDMyVG9QdHIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLnN4dHcoZGVzdCwgc3JjKTsKKyAgICB9CisKKyAgICB2b2lkIHplcm9FeHRl
bmQzMlRvUHRyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci51eHR3KGRlc3QsIHNyYyk7CisgICAgfQorCisKKyAgICAvLyBGb3J3YXJk
cyAvIGV4dGVybmFsIGNvbnRyb2wgZmxvdyBvcGVyYXRpb25zOgorICAgIC8vCisgICAgLy8gVGhp
cyBzZXQgb2YganVtcCBhbmQgY29uZGl0aW9uYWwgYnJhbmNoIG9wZXJhdGlvbnMgcmV0dXJuIGEg
SnVtcAorICAgIC8vIG9iamVjdCB3aGljaCBtYXkgbGlua2VkIGF0IGEgbGF0ZXIgcG9pbnQsIGFs
bG93IGZvcndhcmRzIGp1bXAsCisgICAgLy8gb3IganVtcHMgdGhhdCB3aWxsIHJlcXVpcmUgZXh0
ZXJuYWwgbGlua2FnZSAoYWZ0ZXIgdGhlIGNvZGUgaGFzIGJlZW4KKyAgICAvLyByZWxvY2F0ZWQp
LgorICAgIC8vCisgICAgLy8gRm9yIGJyYW5jaGVzLCBzaWduZWQgPCwgPiwgPD0gYW5kID49IGFy
ZSBkZW5vdGVkIGFzIGwsIGcsIGxlLCBhbmQgZ2UKKyAgICAvLyByZXNwZWNpdHZlbHksIGZvciB1
bnNpZ25lZCBjb21wYXJpc29ucyB0aGUgbmFtZXMgYiwgYSwgYmUsIGFuZCBhZSBhcmUKKyAgICAv
LyB1c2VkIChyZXByZXNlbnRpbmcgdGhlIG5hbWVzICdiZWxvdycgYW5kICdhYm92ZScpLgorICAg
IC8vCisgICAgLy8gT3BlcmFuZHMgdG8gdGhlIGNvbXBhcmlzaW9uIGFyZSBwcm92aWRlZCBpbiB0
aGUgZXhwZWN0ZWQgb3JkZXIsIGUuZy4KKyAgICAvLyBqbGUzMihyZWcxLCBUcnVzdGVkSW1tMzIo
NSkpIHdpbGwgYnJhbmNoIGlmIHRoZSB2YWx1ZSBoZWxkIGluIHJlZzEsIHdoZW4KKyAgICAvLyB0
cmVhdGVkIGFzIGEgc2lnbmVkIDMyYml0IHZhbHVlLCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8g
NS4KKyAgICAvLworICAgIC8vIGp6IGFuZCBqbnogdGVzdCB3aGV0aGVyIHRoZSBmaXJzdCBvcGVy
YW5kIGlzIGVxdWFsIHRvIHplcm8sIGFuZCB0YWtlCisgICAgLy8gYW4gb3B0aW9uYWwgc2Vjb25k
IG9wZXJhbmQgb2YgYSBtYXNrIHVuZGVyIHdoaWNoIHRvIHBlcmZvcm0gdGhlIHRlc3QuCisKKyAg
ICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0
LCBSZWdpc3RlcklEIHJpZ2h0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuY21wPDMyPihs
ZWZ0LCByaWdodCk7CisgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOworICAg
IH0KKworICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKKyAgICB7CisgICAgICAgIGlmIChpc1VJbnQx
MihyaWdodC5tX3ZhbHVlKSkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcDwzMj4obGVmdCwg
VUludDEyKHJpZ2h0Lm1fdmFsdWUpKTsKKyAgICAgICAgZWxzZSBpZiAoaXNVSW50MTIoLXJpZ2h0
Lm1fdmFsdWUpKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21uPDMyPihsZWZ0LCBVSW50MTIo
LXJpZ2h0Lm1fdmFsdWUpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtb3ZlVG9DYWNo
ZWRSZWcocmlnaHQsIG1fZGF0YU1lbW9yeVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fz
c2VtYmxlci5jbXA8MzI+KGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOworICAgIH0KKworICAgIEp1bXAgYnJh
bmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEFkZHJlc3Mg
cmlnaHQpCisgICAgeworICAgICAgICBsb2FkMzIocmlnaHQsIGdldENhY2hlZE1lbW9yeVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQs
IGxlZnQsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CisgICAgfQorCisgICAgSnVtcCBicmFuY2gzMihS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkK
KyAgICB7CisgICAgICAgIGxvYWQzMihsZWZ0LCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJ
REFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBtZW1vcnlU
ZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCisgICAg
eworICAgICAgICBsb2FkMzIobGVmdCwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJ
bnZhbGlkYXRlKCkpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbWVtb3J5VGVtcFJl
Z2lzdGVyLCByaWdodCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCisgICAgewor
ICAgICAgICBsb2FkMzIobGVmdCwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZh
bGlkYXRlKCkpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbWVtb3J5VGVtcFJlZ2lz
dGVyLCByaWdodCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQorICAgIHsK
KyAgICAgICAgbG9hZDMyKGxlZnQubV9wdHIsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklE
QW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIG1lbW9yeVRl
bXBSZWdpc3RlciwgcmlnaHQpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0
KQorICAgIHsKKyAgICAgICAgbG9hZDMyKGxlZnQubV9wdHIsIGdldENhY2hlZE1lbW9yeVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQs
IG1lbW9yeVRlbXBSZWdpc3RlciwgcmlnaHQpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoNjQo
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmln
aHQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5jbXA8NjQ+KGxlZnQsIHJpZ2h0KTsKKyAg
ICAgICAgcmV0dXJuIEp1bXAobWFrZUJyYW5jaChjb25kKSk7CisgICAgfQorCisgICAgSnVtcCBi
cmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3Rl
ZEltbTY0IHJpZ2h0KQorICAgIHsKKyAgICAgICAgaW50cHRyX3QgaW1tZWRpYXRlID0gcmlnaHQu
bV92YWx1ZTsKKyAgICAgICAgaWYgKGlzVUludDEyKGltbWVkaWF0ZSkpCisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5jbXA8NjQ+KGxlZnQsIFVJbnQxMihzdGF0aWNfY2FzdDxpbnQzMl90PihpbW1l
ZGlhdGUpKSk7CisgICAgICAgIGVsc2UgaWYgKGlzVUludDEyKC1pbW1lZGlhdGUpKQorICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuY21uPDY0PihsZWZ0LCBVSW50MTIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oLWltbWVkaWF0ZSkpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtb3ZlVG9DYWNo
ZWRSZWcocmlnaHQsIG1fZGF0YU1lbW9yeVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fz
c2VtYmxlci5jbXA8NjQ+KGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOworICAgIH0KKworICAgIEp1bXAgYnJh
bmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEFkZHJlc3Mg
cmlnaHQpCisgICAgeworICAgICAgICBsb2FkNjQocmlnaHQsIGdldENhY2hlZE1lbW9yeVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQs
IGxlZnQsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CisgICAgfQorCisgICAgSnVtcCBicmFuY2g2NChS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBSZWdpc3RlcklE
IHJpZ2h0KQorICAgIHsKKyAgICAgICAgbG9hZDY0KGxlZnQubV9wdHIsIGdldENhY2hlZE1lbW9y
eVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0
KGNvbmQsIG1lbW9yeVRlbXBSZWdpc3RlciwgcmlnaHQpOworICAgIH0KKworICAgIEp1bXAgYnJh
bmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFJlZ2lzdGVySUQg
cmlnaHQpCisgICAgeworICAgICAgICBsb2FkNjQobGVmdCwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJl
Z2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwg
bWVtb3J5VGVtcFJlZ2lzdGVyLCByaWdodCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2g2NChS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTY0IHJpZ2h0
KQorICAgIHsKKyAgICAgICAgbG9hZDY0KGxlZnQsIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3Rl
cklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIG1lbW9y
eVRlbXBSZWdpc3RlciwgcmlnaHQpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoOChSZWxhdGlv
bmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQorICAg
IHsKKyAgICAgICAgQVNTRVJUKCEoMHhmZmZmZmYwMCAmIHJpZ2h0Lm1fdmFsdWUpKTsKKyAgICAg
ICAgbG9hZDgobGVmdCwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRl
KCkpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBy
aWdodCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgQmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKKyAgICB7CisgICAgICAgIEFT
U0VSVCghKDB4ZmZmZmZmMDAgJiByaWdodC5tX3ZhbHVlKSk7CisgICAgICAgIGxvYWQ4KGxlZnQs
IGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAg
cmV0dXJuIGJyYW5jaDMyKGNvbmQsIG1lbW9yeVRlbXBSZWdpc3RlciwgcmlnaHQpOworICAgIH0K
KyAgICAKKyAgICBKdW1wIGJyYW5jaFRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCByZWcsIFJlZ2lzdGVySUQgbWFzaykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnRz
dDwzMj4ocmVnLCBtYXNrKTsKKyAgICAgICAgcmV0dXJuIEp1bXAobWFrZUJyYW5jaChjb25kKSk7
CisgICAgfQorCisgICAgSnVtcCBicmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCisgICAg
eworICAgICAgICBpZiAobWFzay5tX3ZhbHVlID09IC0xKSB7CisgICAgICAgICAgICBpZiAoKGNv
bmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpCisgICAgICAgICAgICAgICAgcmV0dXJu
IEp1bXAobWFrZUNvbXBhcmVBbmRCcmFuY2g8MzI+KHN0YXRpY19jYXN0PFplcm9Db25kaXRpb24+
KGNvbmQpLCByZWcpKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdDwzMj4ocmVnLCByZWcp
OworICAgICAgICB9IGVsc2UgaWYgKGhhc09uZUJpdFNldChtYXNrLm1fdmFsdWUpICYmICgoY29u
ZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSkpCisgICAgICAgICAgICByZXR1cm4gSnVt
cChtYWtlVGVzdEJpdEFuZEJyYW5jaChyZWcsIGdldExTQlNldChtYXNrLm1fdmFsdWUpLCBzdGF0
aWNfY2FzdDxaZXJvQ29uZGl0aW9uPihjb25kKSkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIGlmICgoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSkgeworICAgICAgICAg
ICAgICAgIExvZ2ljYWxJbW1lZGlhdGUgbG9naWNhbEltbSA9IExvZ2ljYWxJbW1lZGlhdGU6OmNy
ZWF0ZTMyKG1hc2subV92YWx1ZSk7CisKKyAgICAgICAgICAgICAgICBpZiAobG9naWNhbEltbS5p
c1ZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIudHN0PDMyPihyZWcs
IGxvZ2ljYWxJbW0pOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNo
KGNvbmQpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IG1vdmUobWFzaywgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdDwzMj4ocmVnLCBkYXRhVGVtcFJlZ2lzdGVyKTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKKyAgICB9
CisKKyAgICBKdW1wIGJyYW5jaFRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBh
ZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCisgICAgeworICAg
ICAgICBsb2FkMzIoYWRkcmVzcywgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZh
bGlkYXRlKCkpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIG1lbW9yeVRlbXBS
ZWdpc3RlciwgbWFzayk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hUZXN0MzIoUmVzdWx0Q29u
ZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0
ZWRJbW0zMigtMSkpCisgICAgeworICAgICAgICBsb2FkMzIoYWRkcmVzcywgZ2V0Q2FjaGVkTWVt
b3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICByZXR1cm4gYnJhbmNo
VGVzdDMyKGNvbmQsIG1lbW9yeVRlbXBSZWdpc3RlciwgbWFzayk7CisgICAgfQorCisgICAgSnVt
cCBicmFuY2hUZXN0NjQoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBSZWdp
c3RlcklEIG1hc2spCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci50c3Q8NjQ+KHJlZywgbWFz
ayk7CisgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOworICAgIH0KKworICAg
IEp1bXAgYnJhbmNoVGVzdDY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHJlZywg
VHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAgaWYg
KG1hc2subV92YWx1ZSA9PSAtMSkgeworICAgICAgICAgICAgaWYgKChjb25kID09IFplcm8pIHx8
IChjb25kID09IE5vblplcm8pKQorICAgICAgICAgICAgICAgIHJldHVybiBKdW1wKG1ha2VDb21w
YXJlQW5kQnJhbmNoPDY0PihzdGF0aWNfY2FzdDxaZXJvQ29uZGl0aW9uPihjb25kKSwgcmVnKSk7
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci50c3Q8NjQ+KHJlZywgcmVnKTsKKyAgICAgICAgfSBl
bHNlIGlmIChoYXNPbmVCaXRTZXQobWFzay5tX3ZhbHVlKSAmJiAoKGNvbmQgPT0gWmVybykgfHwg
KGNvbmQgPT0gTm9uWmVybykpKQorICAgICAgICAgICAgcmV0dXJuIEp1bXAobWFrZVRlc3RCaXRB
bmRCcmFuY2gocmVnLCBnZXRMU0JTZXQobWFzay5tX3ZhbHVlKSwgc3RhdGljX2Nhc3Q8WmVyb0Nv
bmRpdGlvbj4oY29uZCkpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoKGNvbmQg
PT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpIHsKKyAgICAgICAgICAgICAgICBMb2dpY2Fs
SW1tZWRpYXRlIGxvZ2ljYWxJbW0gPSBMb2dpY2FsSW1tZWRpYXRlOjpjcmVhdGU2NChtYXNrLm1f
dmFsdWUpOworCisgICAgICAgICAgICAgICAgaWYgKGxvZ2ljYWxJbW0uaXNWYWxpZCgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdDw2ND4ocmVnLCBsb2dpY2FsSW1tKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEp1bXAobWFrZUJyYW5jaChjb25kKSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzaWduRXh0ZW5kMzJU
b1B0cihtYXNrLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIudHN0PDY0PihyZWcsIGRhdGFUZW1wUmVnaXN0ZXIpOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOworICAgIH0K
KworICAgIEp1bXAgYnJhbmNoVGVzdDY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgbWFzaykKKyAgICB7CisgICAgICAgIGxvYWQ2NChhZGRyZXNzLCBn
ZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICByZXR1
cm4gYnJhbmNoVGVzdDY0KGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2spOworICAgIH0KKwor
ICAgIEp1bXAgYnJhbmNoVGVzdDY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJl
c3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAg
IGxvYWQ2NChhZGRyZXNzLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRl
KCkpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIs
IG1hc2spOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoVGVzdDY0KFJlc3VsdENvbmRpdGlvbiBj
b25kLCBCYXNlSW5kZXggYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIo
LTEpKQorICAgIHsKKyAgICAgICAgbG9hZDY0KGFkZHJlc3MsIGdldENhY2hlZERhdGFUZW1wUmVn
aXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoY29u
ZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFzayk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hUZXN0
NjQoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVk
SW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCisgICAgeworICAgICAgICBsb2FkNjQoYWRk
cmVzcy5tX3B0ciwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsK
KyAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNr
KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBB
ZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAg
ICB7CisgICAgICAgIGxvYWQ4KGFkZHJlc3MsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFu
ZEludmFsaWRhdGUoKSk7CisgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRl
bXBSZWdpc3RlciwgbWFzayk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRD
b25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNr
ID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIGxvYWQ4KGFkZHJlc3MubV9wdHIs
IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIHJl
dHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFzayk7CisgICAgfQor
CisgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgRXh0ZW5kZWRBZGRy
ZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7
CisgICAgICAgIG1vdmUoSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGFkZHJlc3Mub2Zm
c2V0KSksIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxkcmIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5iYXNlLCBkYXRh
VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVt
cFJlZ2lzdGVyLCBtYXNrKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaDMyV2l0aFVuYWxpZ25l
ZEhhbGZXb3JkcyhSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBUcnVz
dGVkSW1tMzIgcmlnaHQpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVm
dCwgcmlnaHQpOworICAgIH0KKworCisgICAgLy8gQXJpdGhtZXRpYyBjb250cm9sIGZsb3cgb3Bl
cmF0aW9uczoKKyAgICAvLworICAgIC8vIFRoaXMgc2V0IG9mIGNvbmRpdGlvbmFsIGJyYW5jaCBv
cGVyYXRpb25zIGJyYW5jaCBiYXNlZAorICAgIC8vIG9uIHRoZSByZXN1bHQgb2YgYW4gYXJpdGht
ZXRpYyBvcGVyYXRpb24uICBUaGUgb3BlcmF0aW9uCisgICAgLy8gaXMgcGVyZm9ybWVkIGFzIG5v
cm1hbCwgc3RvcmluZyB0aGUgcmVzdWx0LgorICAgIC8vCisgICAgLy8gKiBqeiBvcGVyYXRpb25z
IGJyYW5jaCBpZiB0aGUgcmVzdWx0IGlzIHplcm8uCisgICAgLy8gKiBqbyBvcGVyYXRpb25zIGJy
YW5jaCBpZiB0aGUgKHNpZ25lZCkgYXJpdGhtZXRpYworICAgIC8vICAgb3BlcmF0aW9uIGNhdXNl
ZCBhbiBvdmVyZmxvdyB0byBvY2N1ci4KKyAgICAKKyAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDwzMiwgUz4oZGVzdCwgb3Ax
LCBvcDIpOworICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKKyAgICB9CisK
KyAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIG9w
MSwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYg
KGlzVUludDEyKGltbS5tX3ZhbHVlKSkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDMy
LCBTPihkZXN0LCBvcDEsIFVJbnQxMihpbW0ubV92YWx1ZSkpOworICAgICAgICAgICAgcmV0dXJu
IEp1bXAobWFrZUJyYW5jaChjb25kKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzVUludDEy
KC1pbW0ubV92YWx1ZSkpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN1YjwzMiwgUz4oZGVz
dCwgb3AxLCBVSW50MTIoLWltbS5tX3ZhbHVlKSk7CisgICAgICAgICAgICByZXR1cm4gSnVtcCht
YWtlQnJhbmNoKGNvbmQpKTsKKyAgICAgICAgfQorCisgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRy
KGltbSwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAg
ICAgcmV0dXJuIGJyYW5jaEFkZDMyKGNvbmQsIG9wMSwgZGF0YVRlbXBSZWdpc3RlciwgZGVzdCk7
CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFu
Y2hBZGQzMihjb25kLCBkZXN0LCBzcmMsIGRlc3QpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNo
QWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBZGQzMihjb25kLCBkZXN0LCBpbW0s
IGRlc3QpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNv
bmQsIFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbG9hZDMyKGFkZHJlc3MubV9wdHIsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFu
ZEludmFsaWRhdGUoKSk7CisKKyAgICAgICAgaWYgKGlzVUludDEyKGltbS5tX3ZhbHVlKSkgewor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDMyLCBTPihkYXRhVGVtcFJlZ2lzdGVyLCBkYXRh
VGVtcFJlZ2lzdGVyLCBVSW50MTIoaW1tLm1fdmFsdWUpKTsKKyAgICAgICAgICAgIHN0b3JlMzIo
ZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5tX3B0cik7CisgICAgICAgIH0gZWxzZSBpZiAoaXNV
SW50MTIoLWltbS5tX3ZhbHVlKSkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3ViPDMyLCBT
PihkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBVSW50MTIoLWltbS5tX3ZhbHVl
KSk7CisgICAgICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MubV9wdHIp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbW92ZShpbW0sIGdldENhY2hlZE1lbW9y
eVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmFkZDwzMiwgUz4oZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgbWVtb3J5VGVt
cFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVz
cy5tX3B0cik7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNv
bmQpKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEFkZDY0KFJlc3VsdENvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2NCwgUz4oZGVzdCwgb3AxLCBvcDIpOworICAgICAg
ICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5j
aEFkZDY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwgVHJ1c3RlZEltbTMy
IGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKGlzVUludDEyKGltbS5t
X3ZhbHVlKSkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0LCBTPihkZXN0LCBvcDEs
IFVJbnQxMihpbW0ubV92YWx1ZSkpOworICAgICAgICAgICAgcmV0dXJuIEp1bXAobWFrZUJyYW5j
aChjb25kKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzVUludDEyKC1pbW0ubV92YWx1ZSkp
IHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN1Yjw2NCwgUz4oZGVzdCwgb3AxLCBVSW50MTIo
LWltbS5tX3ZhbHVlKSk7CisgICAgICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQp
KTsKKyAgICAgICAgfQorCisgICAgICAgIG1vdmUoaW1tLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lz
dGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICByZXR1cm4gYnJhbmNoQWRkNjQoY29uZCwg
b3AxLCBkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEFk
ZDY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEFkZDY0KGNvbmQsIGRlc3QsIHNyYywgZGVz
dCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hBZGQ2NChSZXN1bHRDb25kaXRpb24gY29uZCwg
VHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaEFkZDY0KGNvbmQsIGRlc3QsIGltbSwgZGVzdCk7CisgICAgfQorCisgICAgSnVtcCBi
cmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3Rl
cklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChjb25kICE9
IFNpZ25lZCk7CisKKyAgICAgICAgaWYgKGNvbmQgIT0gT3ZlcmZsb3cpIHsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLm11bDwzMj4oZGVzdCwgc3JjMSwgc3JjMik7CisgICAgICAgICAgICByZXR1
cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRlc3QpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGhp
cyBpcyBhIHNpZ25lZCBtdWx0aXBsZSBvZiB0d28gMzItYml0IHZhbHVlcywgcHJvZHVjaW5nIGEg
NjQtYml0IHJlc3VsdC4KKyAgICAgICAgbV9hc3NlbWJsZXIuc211bGwoZGVzdCwgc3JjMSwgc3Jj
Mik7CisgICAgICAgIC8vIENvcHkgYml0cyA2My4uMzIgb2YgdGhlIHJlc3VsdCB0byBiaXRzIDMx
Li4wIG9mIGRhdGFUZW1wUmVnaXN0ZXIuCisgICAgICAgIG1fYXNzZW1ibGVyLmFzcjw2ND4oZ2V0
Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpLCBkZXN0LCAzMik7CisgICAg
ICAgIC8vIFNwbGF0IGJpdCAzMSBvZiB0aGUgcmVzdWx0IHRvIGJpdHMgMzEuLjAgb2YgbWVtb3J5
VGVtcFJlZ2lzdGVyLgorICAgICAgICBtX2Fzc2VtYmxlci5hc3I8MzI+KGdldENhY2hlZE1lbW9y
eVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpLCBkZXN0LCAzMSk7CisgICAgICAgIC8vIEFm
dGVyIGEgbXVsMzIgdGhlIHRvcCAzMiBiaXRzIG9mIHRoZSByZWdpc3RlciBzaG91bGQgYmUgY2xl
YXIuCisgICAgICAgIHplcm9FeHRlbmQzMlRvUHRyKGRlc3QsIGRlc3QpOworICAgICAgICAvLyBD
aGVjayB0aGF0IGJpdHMgMzEuLjYzIG9mIHRoZSBvcmlnaW5hbCByZXN1bHQgd2VyZSBhbGwgZXF1
YWwuCisgICAgICAgIHJldHVybiBicmFuY2gzMihOb3RFcXVhbCwgbWVtb3J5VGVtcFJlZ2lzdGVy
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMyKGNvbmQsIGRlc3QsIHNyYywgZGVzdCk7CisgICAg
fQorCisgICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZElt
bTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1vdmUoaW1tLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwor
ICAgICAgICByZXR1cm4gYnJhbmNoTXVsMzIoY29uZCwgZGF0YVRlbXBSZWdpc3Rlciwgc3JjLCBk
ZXN0KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaE5lZzMyKFJlc3VsdENvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWc8MzIsIFM+
KGRlc3QsIGRlc3QpOworICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKKyAg
ICB9CisKKyAgICBKdW1wIGJyYW5jaFN1YjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWc8MzIsIFM+KGRlc3QsIGRl
c3QpOworICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKKyAgICB9CisKKyAg
ICBKdW1wIGJyYW5jaFN1YjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwg
UmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLnN1YjwzMiwgUz4oZGVzdCwgb3AxLCBvcDIpOworICAgICAgICByZXR1cm4gSnVtcChtYWtl
QnJhbmNoKGNvbmQpKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFN1YjMyKFJlc3VsdENvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgaWYgKGlzVUludDEyKGltbS5tX3ZhbHVlKSkgeworICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuc3ViPDMyLCBTPihkZXN0LCBvcDEsIFVJbnQxMihpbW0ubV92YWx1
ZSkpOworICAgICAgICAgICAgcmV0dXJuIEp1bXAobWFrZUJyYW5jaChjb25kKSk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKGlzVUludDEyKC1pbW0ubV92YWx1ZSkpIHsKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmFkZDwzMiwgUz4oZGVzdCwgb3AxLCBVSW50MTIoLWltbS5tX3ZhbHVlKSk7Cisg
ICAgICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKGltbSwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklE
QW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjMyKGNvbmQsIG9wMSwg
ZGF0YVRlbXBSZWdpc3RlciwgZGVzdCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hTdWIzMihS
ZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBicmFuY2hTdWIzMihjb25kLCBkZXN0LCBzcmMsIGRlc3QpOwor
ICAgIH0KKworICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0
ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFu
Y2hTdWIzMihjb25kLCBkZXN0LCBpbW0sIGRlc3QpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNo
U3ViNjQoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9w
MiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViPDY0LCBT
PihkZXN0LCBvcDEsIG9wMik7CisgICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkp
OworICAgIH0KKworICAgIEp1bXAgYnJhbmNoU3ViNjQoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgb3AxLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBpZiAoaXNVSW50MTIoaW1tLm1fdmFsdWUpKSB7CisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5zdWI8NjQsIFM+KGRlc3QsIG9wMSwgVUludDEyKGltbS5tX3ZhbHVlKSk7CisgICAgICAg
ICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoaXNVSW50MTIoLWltbS5tX3ZhbHVlKSkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRk
PDY0LCBTPihkZXN0LCBvcDEsIFVJbnQxMigtaW1tLm1fdmFsdWUpKTsKKyAgICAgICAgICAgIHJl
dHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOworICAgICAgICB9CisKKyAgICAgICAgbW92ZShp
bW0sIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAg
IHJldHVybiBicmFuY2hTdWI2NChjb25kLCBvcDEsIGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QpOwor
ICAgIH0KKworICAgIEp1bXAgYnJhbmNoU3ViNjQoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNo
U3ViNjQoY29uZCwgZGVzdCwgc3JjLCBkZXN0KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFN1
YjY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoU3ViNjQoY29uZCwgZGVzdCwgaW1tLCBk
ZXN0KTsKKyAgICB9CisKKworICAgIC8vIEp1bXBzLCBjYWxscywgcmV0dXJucworCisgICAgQUxX
QVlTX0lOTElORSBDYWxsIGNhbGwoKQorICAgIHsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgcG9p
bnRlckxhYmVsID0gbV9hc3NlbWJsZXIubGFiZWwoKTsKKyAgICAgICAgbW92ZVdpdGhGaXhlZFdp
ZHRoKFRydXN0ZWRJbW1QdHIoMCksIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFs
aWRhdGUoKSk7CisgICAgICAgIGludmFsaWRhdGVBbGxUZW1wUmVnaXN0ZXJzKCk7CisgICAgICAg
IG1fYXNzZW1ibGVyLmJscihkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgQXNzZW1ibGVyTGFi
ZWwgY2FsbExhYmVsID0gbV9hc3NlbWJsZXIubGFiZWwoKTsKKyAgICAgICAgQVNTRVJUX1VOVVNF
RChwb2ludGVyTGFiZWwsIEFSTTY0QXNzZW1ibGVyOjpnZXREaWZmZXJlbmNlQmV0d2VlbkxhYmVs
cyhjYWxsTGFiZWwsIHBvaW50ZXJMYWJlbCkgPT0gUkVQQVRDSF9PRkZTRVRfQ0FMTF9UT19QT0lO
VEVSKTsKKyAgICAgICAgcmV0dXJuIENhbGwoY2FsbExhYmVsLCBDYWxsOjpMaW5rYWJsZSk7Cisg
ICAgfQorCisgICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoUmVnaXN0ZXJJRCB0YXJnZXQpCisg
ICAgeworICAgICAgICBpbnZhbGlkYXRlQWxsVGVtcFJlZ2lzdGVycygpOworICAgICAgICBtX2Fz
c2VtYmxlci5ibHIodGFyZ2V0KTsKKyAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIubGFi
ZWwoKSwgQ2FsbDo6Tm9uZSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwo
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbG9hZDY0KGFkZHJlc3MsIGdldENhY2hl
ZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIHJldHVybiBjYWxs
KGRhdGFUZW1wUmVnaXN0ZXIpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgSnVtcCBqdW1w
KCkKKyAgICB7CisgICAgICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsID0gbV9hc3NlbWJsZXIubGFi
ZWwoKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYigpOworICAgICAgICByZXR1cm4gSnVtcChsYWJl
bCwgbV9tYWtlSnVtcFBhdGNoYWJsZSA/IEFSTTY0QXNzZW1ibGVyOjpKdW1wTm9Db25kaXRpb25G
aXhlZFNpemUgOiBBUk02NEFzc2VtYmxlcjo6SnVtcE5vQ29uZGl0aW9uKTsKKyAgICB9CisKKyAg
ICB2b2lkIGp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5icih0YXJnZXQpOworICAgIH0KKworICAgIHZvaWQganVtcChBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBsb2FkNjQoYWRkcmVzcywgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklE
QW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYnIoZGF0YVRlbXBSZWdpc3Rl
cik7CisgICAgfQorCisgICAgdm9pZCBqdW1wKEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBnZXRDYWNoZWRE
YXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBsb2FkNjQoQWRkcmVz
cyhkYXRhVGVtcFJlZ2lzdGVyKSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1i
bGVyLmJyKGRhdGFUZW1wUmVnaXN0ZXIpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgQ2Fs
bCBtYWtlVGFpbFJlY3Vyc2l2ZUNhbGwoSnVtcCBvbGRKdW1wKQorICAgIHsKKyAgICAgICAgb2xk
SnVtcC5saW5rKHRoaXMpOworICAgICAgICByZXR1cm4gdGFpbFJlY3Vyc2l2ZUNhbGwoKTsKKyAg
ICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIENhbGwgbmVhckNhbGwoKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuYmwoKTsKKyAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIubGFiZWwo
KSwgQ2FsbDo6TGlua2FibGVOZWFyKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
cmV0KCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnJldCgpOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgQ2FsbCB0YWlsUmVjdXJzaXZlQ2FsbCgpCisgICAgeworICAgICAgICAvLyBM
aWtlIGEgbm9ybWFsIGNhbGwsIGJ1dCBkb24ndCBsaW5rLgorICAgICAgICBBc3NlbWJsZXJMYWJl
bCBwb2ludGVyTGFiZWwgPSBtX2Fzc2VtYmxlci5sYWJlbCgpOworICAgICAgICBtb3ZlV2l0aEZp
eGVkV2lkdGgoVHJ1c3RlZEltbVB0cigwKSwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYnIoZGF0YVRlbXBSZWdpc3Rlcik7
CisgICAgICAgIEFzc2VtYmxlckxhYmVsIGNhbGxMYWJlbCA9IG1fYXNzZW1ibGVyLmxhYmVsKCk7
CisgICAgICAgIEFTU0VSVF9VTlVTRUQocG9pbnRlckxhYmVsLCBBUk02NEFzc2VtYmxlcjo6Z2V0
RGlmZmVyZW5jZUJldHdlZW5MYWJlbHMoY2FsbExhYmVsLCBwb2ludGVyTGFiZWwpID09IFJFUEFU
Q0hfT0ZGU0VUX0NBTExfVE9fUE9JTlRFUik7CisgICAgICAgIHJldHVybiBDYWxsKGNhbGxMYWJl
bCwgQ2FsbDo6TGlua2FibGUpOworICAgIH0KKworCisgICAgLy8gQ29tcGFyaXNvbnMgb3BlcmF0
aW9ucworCisgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmNtcDwzMj4obGVmdCwgcmlnaHQpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5jc2V0PDMyPihkZXN0LCBBUk02NENvbmRpdGlvbihjb25kKSk7CisgICAgfQorCisgICAg
dm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFJl
Z2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQzMihs
ZWZ0LCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAg
ICBtX2Fzc2VtYmxlci5jbXA8MzI+KGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKKyAgICAgICAg
bV9hc3NlbWJsZXIuY3NldDwzMj4oZGVzdCwgQVJNNjRDb25kaXRpb24oY29uZCkpOworICAgIH0K
KworICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1vdmUocmlnaHQsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUo
KSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmNtcDwzMj4obGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7
CisgICAgICAgIG1fYXNzZW1ibGVyLmNzZXQ8MzI+KGRlc3QsIEFSTTY0Q29uZGl0aW9uKGNvbmQp
KTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBhcmU2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuY21wPDY0PihsZWZ0LCByaWdodCk7CisgICAgICAgIG1f
YXNzZW1ibGVyLmNzZXQ8MzI+KGRlc3QsIEFSTTY0Q29uZGl0aW9uKGNvbmQpKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBjb21wYXJlNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgc2lnbkV4dGVuZDMyVG9QdHIocmlnaHQsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJ
REFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmNtcDw2ND4obGVmdCwgZGF0
YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmNzZXQ8MzI+KGRlc3QsIEFSTTY0
Q29uZGl0aW9uKGNvbmQpKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBhcmU4KFJlbGF0aW9uYWxD
b25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ4KGxlZnQsIGdldENhY2hlZE1lbW9yeVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgbW92ZShyaWdodCwgZ2V0Q2FjaGVk
RGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgY29tcGFyZTMyKGNv
bmQsIG1lbW9yeVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgZGVzdCk7CisgICAgfQor
ICAgIAorICAgIHZvaWQgdGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNy
YywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlm
IChtYXNrLm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci50c3Q8MzI+KHNy
Yywgc3JjKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaWduRXh0ZW5kMzJUb1B0ciht
YXNrLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAg
ICAgICAgbV9hc3NlbWJsZXIudHN0PDMyPihzcmMsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAg
ICB9CisgICAgICAgIG1fYXNzZW1ibGVyLmNzZXQ8MzI+KGRlc3QsIEFSTTY0Q29uZGl0aW9uKGNv
bmQpKTsKKyAgICB9CisKKyAgICB2b2lkIHRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgQWRk
cmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgbG9hZDMyKGFkZHJlc3MsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZElu
dmFsaWRhdGUoKSk7CisgICAgICAgIHRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNr
LCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIHRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBB
ZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBsb2FkOChhZGRyZXNzLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJ
bnZhbGlkYXRlKCkpOworICAgICAgICB0ZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFz
aywgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCB0ZXN0NjQoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIudHN0PDY0PihvcDEsIG9wMik7CisgICAgICAgIG1fYXNzZW1i
bGVyLmNzZXQ8MzI+KGRlc3QsIEFSTTY0Q29uZGl0aW9uKGNvbmQpKTsKKyAgICB9CisKKyAgICB2
b2lkIHRlc3Q2NChSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJ
bW0zMiBtYXNrLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAobWFzay5tX3Zh
bHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIudHN0PDY0PihzcmMsIHNyYyk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIobWFzaywgZ2V0Q2Fj
aGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnRzdDw2ND4oc3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgfQorICAgICAg
ICBtX2Fzc2VtYmxlci5jc2V0PDMyPihkZXN0LCBBUk02NENvbmRpdGlvbihjb25kKSk7CisgICAg
fQorCisKKyAgICAvLyBQYXRjaGFibGUgb3BlcmF0aW9ucworCisgICAgQUxXQVlTX0lOTElORSBE
YXRhTGFiZWwzMiBtb3ZlV2l0aFBhdGNoKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIERhdGFMYWJlbDMyIGxhYmVsKHRoaXMpOworICAgICAgICBtb3Zl
V2l0aEZpeGVkV2lkdGgoaW1tLCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIGxhYmVsOworICAgIH0K
KworICAgIEFMV0FZU19JTkxJTkUgRGF0YUxhYmVsUHRyIG1vdmVXaXRoUGF0Y2goVHJ1c3RlZElt
bVB0ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIERhdGFMYWJlbFB0ciBs
YWJlbCh0aGlzKTsKKyAgICAgICAgbW92ZVdpdGhGaXhlZFdpZHRoKGltbSwgZGVzdCk7CisgICAg
ICAgIHJldHVybiBsYWJlbDsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIEp1bXAgYnJhbmNo
UHRyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBE
YXRhTGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9
IFRydXN0ZWRJbW1QdHIoMCkpCisgICAgeworICAgICAgICBkYXRhTGFiZWwgPSBEYXRhTGFiZWxQ
dHIodGhpcyk7CisgICAgICAgIG1vdmVXaXRoUGF0Y2goaW5pdGlhbFJpZ2h0VmFsdWUsIGdldENh
Y2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIHJldHVybiBi
cmFuY2g2NChjb25kLCBsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgQWRkcmVzcyBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBp
bml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIoMCkpCisgICAgeworICAgICAgICBkYXRh
TGFiZWwgPSBEYXRhTGFiZWxQdHIodGhpcyk7CisgICAgICAgIG1vdmVXaXRoUGF0Y2goaW5pdGlh
bFJpZ2h0VmFsdWUsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7
CisgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsK
KyAgICB9CisKKyAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUJyYW5jaFB0cihSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbVB0ciByaWdodCA9IFRydXN0
ZWRJbW1QdHIoMCkpCisgICAgeworICAgICAgICBtX21ha2VKdW1wUGF0Y2hhYmxlID0gdHJ1ZTsK
KyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2gzMihjb25kLCBsZWZ0LCBUcnVzdGVkSW1tMzIo
cmlnaHQpKTsKKyAgICAgICAgbV9tYWtlSnVtcFBhdGNoYWJsZSA9IGZhbHNlOworICAgICAgICBy
ZXR1cm4gUGF0Y2hhYmxlSnVtcChyZXN1bHQpOworICAgIH0KKworICAgIFBhdGNoYWJsZUp1bXAg
cGF0Y2hhYmxlQnJhbmNoVGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHJl
ZywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAgICAg
bV9tYWtlSnVtcFBhdGNoYWJsZSA9IHRydWU7CisgICAgICAgIEp1bXAgcmVzdWx0ID0gYnJhbmNo
VGVzdDMyKGNvbmQsIHJlZywgbWFzayk7CisgICAgICAgIG1fbWFrZUp1bXBQYXRjaGFibGUgPSBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAocmVzdWx0KTsKKyAgICB9CisKKyAg
ICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCByZWcsIFRydXN0ZWRJbW0zMiBpbW0pCisgICAgeworICAgICAgICBtX21h
a2VKdW1wUGF0Y2hhYmxlID0gdHJ1ZTsKKyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2gzMihj
b25kLCByZWcsIGltbSk7CisgICAgICAgIG1fbWFrZUp1bXBQYXRjaGFibGUgPSBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAocmVzdWx0KTsKKyAgICB9CisKKyAgICBQYXRjaGFi
bGVKdW1wIHBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNv
bmQsIEFkZHJlc3MgbGVmdCwgRGF0YUxhYmVsUHRyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW1QdHIg
aW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tUHRyKDApKQorICAgIHsKKyAgICAgICAgbV9t
YWtlSnVtcFBhdGNoYWJsZSA9IHRydWU7CisgICAgICAgIEp1bXAgcmVzdWx0ID0gYnJhbmNoUHRy
V2l0aFBhdGNoKGNvbmQsIGxlZnQsIGRhdGFMYWJlbCwgaW5pdGlhbFJpZ2h0VmFsdWUpOworICAg
ICAgICBtX21ha2VKdW1wUGF0Y2hhYmxlID0gZmFsc2U7CisgICAgICAgIHJldHVybiBQYXRjaGFi
bGVKdW1wKHJlc3VsdCk7CisgICAgfQorCisgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVKdW1w
KCkKKyAgICB7CisgICAgICAgIG1fbWFrZUp1bXBQYXRjaGFibGUgPSB0cnVlOworICAgICAgICBK
dW1wIHJlc3VsdCA9IGp1bXAoKTsKKyAgICAgICAgbV9tYWtlSnVtcFBhdGNoYWJsZSA9IGZhbHNl
OworICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChyZXN1bHQpOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgRGF0YUxhYmVsUHRyIHN0b3JlUHRyV2l0aFBhdGNoKFRydXN0ZWRJbW1QdHIg
aW5pdGlhbFZhbHVlLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIERh
dGFMYWJlbFB0ciBsYWJlbCh0aGlzKTsKKyAgICAgICAgbW92ZVdpdGhGaXhlZFdpZHRoKGluaXRp
YWxWYWx1ZSwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAg
ICAgICAgc3RvcmU2NChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKKyAgICAgICAgcmV0dXJu
IGxhYmVsOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgRGF0YUxhYmVsUHRyIHN0b3JlUHRy
V2l0aFBhdGNoKEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHN0b3JlUHRyV2l0aFBhdGNoKFRydXN0ZWRJbW1QdHIoMCksIGFkZHJlc3MpOworICAgIH0KKwor
ICAgIHN0YXRpYyB2b2lkIHJlZW1pdEluaXRpYWxNb3ZlV2l0aFBhdGNoKHZvaWQqIGFkZHJlc3Ms
IHZvaWQqIHZhbHVlKQorICAgIHsKKyAgICAgICAgQVJNNjRBc3NlbWJsZXI6OnNldFBvaW50ZXIo
c3RhdGljX2Nhc3Q8aW50Kj4oYWRkcmVzcyksIHZhbHVlLCBkYXRhVGVtcFJlZ2lzdGVyLCB0cnVl
KTsKKyAgICB9CisKKyAgICAvLyBNaXNjZWxsYW5lb3VzIG9wZXJhdGlvbnM6CisKKyAgICB2b2lk
IGJyZWFrcG9pbnQodWludDE2X3QgaW1tID0gMCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmJyayhpbW0pOworICAgIH0KKworICAgIHZvaWQgbm9wKCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLm5vcCgpOworICAgIH0KKworCisgICAgLy8gTWlzYyBoZWxwZXIgZnVuY3Rpb25zLgor
CisgICAgLy8gSW52ZXJ0IGEgcmVsYXRpb25hbCBjb25kaXRpb24sIGUuZy4gPT0gYmVjb21lcyAh
PSwgPCBiZWNvbWVzID49LCBldGMuCisgICAgc3RhdGljIFJlbGF0aW9uYWxDb25kaXRpb24gaW52
ZXJ0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxSZWxhdGlvbmFsQ29uZGl0aW9uPihBUk02NEFzc2VtYmxlcjo6aW52ZXJ0KHN0YXRp
Y19jYXN0PEFSTTY0QXNzZW1ibGVyOjpDb25kaXRpb24+KGNvbmQpKSk7CisgICAgfQorCisgICAg
c3RhdGljIEZ1bmN0aW9uUHRyIHJlYWRDYWxsVGFyZ2V0KENvZGVMb2NhdGlvbkNhbGwgY2FsbCkK
KyAgICB7CisgICAgICAgIHJldHVybiBGdW5jdGlvblB0cihyZWludGVycHJldF9jYXN0PHZvaWQo
KikoKT4oQVJNNjRBc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0KGNhbGwuZGF0YUxvY2F0aW9uKCkp
KSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlv
bkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQor
ICAgIHsKKyAgICAgICAgQVJNNjRBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlv
blN0YXJ0LmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5kYXRhTG9jYXRpb24oKSk7CisgICAg
fQorICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gQVJNNjRBc3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVudFNp
emUoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJy
YW5jaFB0cldpdGhQYXRjaCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgCisgICAgc3RhdGljIENv
ZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKENvZGVM
b2NhdGlvbkRhdGFMYWJlbFB0ciBsYWJlbCkKKyAgICB7CisgICAgICAgIHJldHVybiBsYWJlbC5s
YWJlbEF0T2Zmc2V0KDApOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgQ29kZUxvY2F0aW9uTGFi
ZWwgc3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRkcmVzcyhDb2RlTG9jYXRp
b25EYXRhTGFiZWxQdHIpCisgICAgeworICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0o
KTsKKyAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkxhYmVsKCk7CisgICAgfQorICAgIAorICAg
IHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBhdGNoKENv
ZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQsIHZvaWQqIGluaXRp
YWxWYWx1ZSkKKyAgICB7CisgICAgICAgIHJlZW1pdEluaXRpYWxNb3ZlV2l0aFBhdGNoKGluc3Ry
dWN0aW9uU3RhcnQuZGF0YUxvY2F0aW9uKCksIGluaXRpYWxWYWx1ZSk7CisgICAgfQorICAgIAor
ICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRy
V2l0aFBhdGNoKENvZGVMb2NhdGlvbkxhYmVsLCBBZGRyZXNzLCB2b2lkKikKKyAgICB7CisgICAg
ICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworICAgIH0KKworcHJvdGVjdGVkOgorICAg
IEFMV0FZU19JTkxJTkUgSnVtcCBtYWtlQnJhbmNoKEFSTTY0QXNzZW1ibGVyOjpDb25kaXRpb24g
Y29uZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmJfY29uZChjb25kKTsKKyAgICAgICAg
QXNzZW1ibGVyTGFiZWwgbGFiZWwgPSBtX2Fzc2VtYmxlci5sYWJlbCgpOworICAgICAgICBtX2Fz
c2VtYmxlci5ub3AoKTsKKyAgICAgICAgcmV0dXJuIEp1bXAobGFiZWwsIG1fbWFrZUp1bXBQYXRj
aGFibGUgPyBBUk02NEFzc2VtYmxlcjo6SnVtcENvbmRpdGlvbkZpeGVkU2l6ZSA6IEFSTTY0QXNz
ZW1ibGVyOjpKdW1wQ29uZGl0aW9uLCBjb25kKTsKKyAgICB9CisgICAgQUxXQVlTX0lOTElORSBK
dW1wIG1ha2VCcmFuY2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKSB7IHJldHVybiBtYWtlQnJh
bmNoKEFSTTY0Q29uZGl0aW9uKGNvbmQpKTsgfQorICAgIEFMV0FZU19JTkxJTkUgSnVtcCBtYWtl
QnJhbmNoKFJlc3VsdENvbmRpdGlvbiBjb25kKSB7IHJldHVybiBtYWtlQnJhbmNoKEFSTTY0Q29u
ZGl0aW9uKGNvbmQpKTsgfQorICAgIEFMV0FZU19JTkxJTkUgSnVtcCBtYWtlQnJhbmNoKERvdWJs
ZUNvbmRpdGlvbiBjb25kKSB7IHJldHVybiBtYWtlQnJhbmNoKEFSTTY0Q29uZGl0aW9uKGNvbmQp
KTsgfQorCisgICAgdGVtcGxhdGUgPGludCBkYXRhU2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIEp1
bXAgbWFrZUNvbXBhcmVBbmRCcmFuY2goWmVyb0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHJl
ZykKKyAgICB7CisgICAgICAgIGlmIChjb25kID09IElzWmVybykKKyAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmNiejxkYXRhU2l6ZT4ocmVnKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9h
c3NlbWJsZXIuY2JuejxkYXRhU2l6ZT4ocmVnKTsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgbGFi
ZWwgPSBtX2Fzc2VtYmxlci5sYWJlbCgpOworICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAg
ICAgICAgcmV0dXJuIEp1bXAobGFiZWwsIG1fbWFrZUp1bXBQYXRjaGFibGUgPyBBUk02NEFzc2Vt
Ymxlcjo6SnVtcENvbXBhcmVBbmRCcmFuY2hGaXhlZFNpemUgOiBBUk02NEFzc2VtYmxlcjo6SnVt
cENvbXBhcmVBbmRCcmFuY2gsIHN0YXRpY19jYXN0PEFSTTY0QXNzZW1ibGVyOjpDb25kaXRpb24+
KGNvbmQpLCBkYXRhU2l6ZSA9PSA2NCwgcmVnKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5F
IEp1bXAgbWFrZVRlc3RCaXRBbmRCcmFuY2goUmVnaXN0ZXJJRCByZWcsIHVuc2lnbmVkIGJpdCwg
WmVyb0NvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGJpdCA8IDY0KTsKKyAg
ICAgICAgYml0ICY9IDB4M2Y7CisgICAgICAgIGlmIChjb25kID09IElzWmVybykKKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnRieihyZWcsIGJpdCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnRibnoocmVnLCBiaXQpOworICAgICAgICBBc3NlbWJsZXJMYWJlbCBsYWJl
bCA9IG1fYXNzZW1ibGVyLmxhYmVsKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAg
ICAgICByZXR1cm4gSnVtcChsYWJlbCwgbV9tYWtlSnVtcFBhdGNoYWJsZSA/IEFSTTY0QXNzZW1i
bGVyOjpKdW1wVGVzdEJpdEZpeGVkU2l6ZSA6IEFSTTY0QXNzZW1ibGVyOjpKdW1wVGVzdEJpdCwg
c3RhdGljX2Nhc3Q8QVJNNjRBc3NlbWJsZXI6OkNvbmRpdGlvbj4oY29uZCksIGJpdCwgcmVnKTsK
KyAgICB9CisKKyAgICBBUk02NEFzc2VtYmxlcjo6Q29uZGl0aW9uIEFSTTY0Q29uZGl0aW9uKFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxBUk02NEFzc2VtYmxlcjo6Q29uZGl0aW9uPihjb25kKTsKKyAgICB9CisKKyAgICBBUk02NEFz
c2VtYmxlcjo6Q29uZGl0aW9uIEFSTTY0Q29uZGl0aW9uKFJlc3VsdENvbmRpdGlvbiBjb25kKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFSTTY0QXNzZW1ibGVyOjpDb25kaXRp
b24+KGNvbmQpOworICAgIH0KKworICAgIEFSTTY0QXNzZW1ibGVyOjpDb25kaXRpb24gQVJNNjRD
b25kaXRpb24oRG91YmxlQ29uZGl0aW9uIGNvbmQpCisgICAgeworICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8QVJNNjRBc3NlbWJsZXI6OkNvbmRpdGlvbj4oY29uZCk7CisgICAgfQorICAgIAor
cHJpdmF0ZToKKyAgICBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVySUQgZ2V0Q2FjaGVkRGF0YVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpIHsgcmV0dXJuIG1fZGF0YU1lbW9yeVRlbXBSZWdpc3Rl
ci5yZWdpc3RlcklESW52YWxpZGF0ZSgpOyB9CisgICAgQUxXQVlTX0lOTElORSBSZWdpc3RlcklE
IGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpIHsgcmV0dXJuIG1f
Y2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVyLnJlZ2lzdGVySURJbnZhbGlkYXRlKCk7IH0KKworICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBpc0luSW50UmFuZ2UoaW50cHRyX3QgdmFsdWUpCisgICAgewor
ICAgICAgICByZXR1cm4gdmFsdWUgPT0gKCh2YWx1ZSA8PCAzMikgPj4gMzIpOworICAgIH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltbWVkaWF0ZVR5cGUsIHR5cGVuYW1lIHJhd1R5cGU+Cisg
ICAgdm9pZCBtb3ZlSW50ZXJuYWwoSW1tZWRpYXRlVHlwZSBpbW0sIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIGNvbnN0IGludCBkYXRhU2l6ZSA9IHNpemVvZihyYXdUeXBlKSo4Owor
ICAgICAgICBjb25zdCBpbnQgbnVtYmVySGFsZldvcmRzID0gZGF0YVNpemUvMTY7CisgICAgICAg
IHJhd1R5cGUgdmFsdWUgPSBiaXR3aXNlX2Nhc3Q8cmF3VHlwZT4oaW1tLm1fdmFsdWUpOworICAg
ICAgICB1aW50MTZfdCBoYWxmd29yZFtudW1iZXJIYWxmV29yZHNdOworCisgICAgICAgIC8vIEhh
bmRsZSAwIGFuZCB+MCBoZXJlIHRvIHNpbXBsaWZ5IGNvZGUgYmVsb3cKKyAgICAgICAgaWYgKCF2
YWx1ZSkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92ejxkYXRhU2l6ZT4oZGVzdCwgMCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKCF+dmFsdWUpIHsK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdm48ZGF0YVNpemU+KGRlc3QsIDApOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgTG9naWNhbEltbWVkaWF0ZSBsb2dp
Y2FsSW1tID0gZGF0YVNpemUgPT0gNjQgPyBMb2dpY2FsSW1tZWRpYXRlOjpjcmVhdGU2NChzdGF0
aWNfY2FzdDx1aW50NjRfdD4odmFsdWUpKSA6IExvZ2ljYWxJbW1lZGlhdGU6OmNyZWF0ZTMyKHN0
YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSkpOworCisgICAgICAgIGlmIChsb2dpY2FsSW1tLmlz
VmFsaWQoKSkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92aTxkYXRhU2l6ZT4oZGVzdCwg
bG9naWNhbEltbSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAv
LyBGaWd1cmUgb3V0IGhvdyBtYW55IGhhbGZ3b3JkcyBhcmUgMCBvciBGRkZGLCB0aGVuIGNob29z
ZSBtb3Z6IG9yIG1vdm4gYWNjb3JkaW5nbHkuCisgICAgICAgIGludCB6ZXJvT3JOZWdhdGVWb3Rl
ID0gMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1iZXJIYWxmV29yZHM7ICsraSkg
eworICAgICAgICAgICAgaGFsZndvcmRbaV0gPSBnZXRIYWxmd29yZCh2YWx1ZSwgaSk7CisgICAg
ICAgICAgICBpZiAoIWhhbGZ3b3JkW2ldKQorICAgICAgICAgICAgICAgIHplcm9Pck5lZ2F0ZVZv
dGUrKzsKKyAgICAgICAgICAgIGVsc2UgaWYgKGhhbGZ3b3JkW2ldID09IDB4ZmZmZikKKyAgICAg
ICAgICAgICAgICB6ZXJvT3JOZWdhdGVWb3RlLS07CisgICAgICAgIH0KKworICAgICAgICBib29s
IG5lZWRUb0NsZWFyUmVnaXN0ZXIgPSB0cnVlOworICAgICAgICBpZiAoemVyb09yTmVnYXRlVm90
ZSA+PSAwKSB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlckhhbGZXb3Jk
czsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKGhhbGZ3b3JkW2ldKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChuZWVkVG9DbGVhclJlZ2lzdGVyKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5tb3Z6PGRhdGFTaXplPihkZXN0LCBoYWxmd29yZFtpXSwgMTYqaSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBuZWVkVG9DbGVhclJlZ2lzdGVyID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubW92azxkYXRhU2l6ZT4oZGVzdCwgaGFsZndvcmRbaV0sIDE2KmkpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbnVtYmVySGFsZldvcmRzOyBpKyspIHsKKyAgICAgICAgICAgICAg
ICBpZiAoaGFsZndvcmRbaV0gIT0gMHhmZmZmKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChu
ZWVkVG9DbGVhclJlZ2lzdGVyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5tb3ZuPGRhdGFTaXplPihkZXN0LCB+aGFsZndvcmRbaV0sIDE2KmkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbmVlZFRvQ2xlYXJSZWdpc3RlciA9IGZhbHNlOworICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdms8ZGF0
YVNpemU+KGRlc3QsIGhhbGZ3b3JkW2ldLCAxNippKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWRVbnNpZ25lZEltbWVkaWF0ZShSZWdpc3RlcklE
IHJ0LCBSZWdpc3RlcklEIHJuLCB1bnNpZ25lZCBwaW1tKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubGRyPGRhdGFzaXplPihydCwgcm4sIHBpbW0pOworICAgIH0KKworICAgIHRlbXBsYXRl
PGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbG9hZFVuc2NhbGVkSW1tZWRp
YXRlKFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQgcm4sIGludCBzaW1tKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubGR1cjxkYXRhc2l6ZT4ocnQsIHJuLCBzaW1tKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHN0b3JlVW5z
aWduZWRJbW1lZGlhdGUoUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgdW5zaWduZWQgcGlt
bSkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN0cjxkYXRhc2l6ZT4ocnQsIHJuLCBwaW1t
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHN0b3JlVW5zY2FsZWRJbW1lZGlhdGUoUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBy
biwgaW50IHNpbW0pCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdHVyPGRhdGFzaXplPihy
dCwgcm4sIHNpbW0pOworICAgIH0KKworICAgIHZvaWQgbW92ZVdpdGhGaXhlZFdpZHRoKFRydXN0
ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGludDMyX3QgdmFs
dWUgPSBpbW0ubV92YWx1ZTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92ejwzMj4oZGVzdCwgZ2V0
SGFsZndvcmQodmFsdWUsIDApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92azwzMj4oZGVzdCwg
Z2V0SGFsZndvcmQodmFsdWUsIDEpLCAxNik7CisgICAgfQorCisgICAgdm9pZCBtb3ZlV2l0aEZp
eGVkV2lkdGgoVHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIGludHB0cl90IHZhbHVlID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW1tLm1fdmFs
dWUpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3Z6PDY0PihkZXN0LCBnZXRIYWxmd29yZCh2YWx1
ZSwgMCkpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZrPDY0PihkZXN0LCBnZXRIYWxmd29yZCh2
YWx1ZSwgMSksIDE2KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92azw2ND4oZGVzdCwgZ2V0SGFs
ZndvcmQodmFsdWUsIDIpLCAzMik7CisgICAgfQorCisgICAgdm9pZCBzaWduRXh0ZW5kMzJUb1B0
cldpdGhGaXhlZFdpZHRoKGludDMyX3QgdmFsdWUsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIGlmICh2YWx1ZSA+PSAwKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3Z6PDMy
PihkZXN0LCBnZXRIYWxmd29yZCh2YWx1ZSwgMCkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
bW92azwzMj4oZGVzdCwgZ2V0SGFsZndvcmQodmFsdWUsIDEpLCAxNik7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZuPDMyPihkZXN0LCB+Z2V0SGFsZndvcmQo
dmFsdWUsIDApKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdms8MzI+KGRlc3QsIGdldEhh
bGZ3b3JkKHZhbHVlLCAxKSwgMTYpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBzaWdu
RXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KGltbS5tX3ZhbHVlKSkpLCBkZXN0KTsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxvYWQoY29uc3Qgdm9p
ZCogYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaW50cHRyX3QgY3Vy
cmVudFJlZ2lzdGVyQ29udGVudHM7CisgICAgICAgIGlmIChtX2NhY2hlZE1lbW9yeVRlbXBSZWdp
c3Rlci52YWx1ZShjdXJyZW50UmVnaXN0ZXJDb250ZW50cykpIHsKKyAgICAgICAgICAgIGludHB0
cl90IGFkZHJlc3NBc0ludCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFkZHJlc3MpOwor
ICAgICAgICAgICAgaW50cHRyX3QgYWRkcmVzc0RlbHRhID0gYWRkcmVzc0FzSW50IC0gY3VycmVu
dFJlZ2lzdGVyQ29udGVudHM7CisKKyAgICAgICAgICAgIGlmIChpc0luSW50UmFuZ2UoYWRkcmVz
c0RlbHRhKSkgeworICAgICAgICAgICAgICAgIGlmIChBUk02NEFzc2VtYmxlcjo6Y2FuRW5jb2Rl
U0ltbU9mZnNldChhZGRyZXNzRGVsdGEpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmxkdXI8ZGF0YXNpemU+KGRlc3QsICBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3NEZWx0
YSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBpZiAoQVJNNjRBc3NlbWJsZXI6OmNhbkVuY29kZVBJbW1PZmZzZXQ8ZGF0
YXNpemU+KGFkZHJlc3NEZWx0YSkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIu
bGRyPGRhdGFzaXplPihkZXN0LCAgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzRGVsdGEpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoKGFkZHJlc3NBc0ludCAmICh+bWFza0hhbGZXb3JkMCkp
ID09IChjdXJyZW50UmVnaXN0ZXJDb250ZW50cyAmICh+bWFza0hhbGZXb3JkMCkpKSB7CisgICAg
ICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92azw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRy
ZXNzQXNJbnQgJiBtYXNrSGFsZldvcmQwLCAwKTsKKyAgICAgICAgICAgICAgICBtX2NhY2hlZE1l
bW9yeVRlbXBSZWdpc3Rlci5zZXRWYWx1ZShyZWludGVycHJldF9jYXN0PGludHB0cl90PihhZGRy
ZXNzKSk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyPGRhdGFzaXplPihkZXN0LCBt
ZW1vcnlUZW1wUmVnaXN0ZXIsIEFSTTY0UmVnaXN0ZXJzOjp6cik7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKGFkZHJlc3MpLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2NhY2hlZE1l
bW9yeVRlbXBSZWdpc3Rlci5zZXRWYWx1ZShyZWludGVycHJldF9jYXN0PGludHB0cl90PihhZGRy
ZXNzKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkcjxkYXRhc2l6ZT4oZGVzdCwgbWVtb3J5VGVt
cFJlZ2lzdGVyLCBBUk02NFJlZ2lzdGVyczo6enIpOworICAgIH0KKworICAgIHRlbXBsYXRlPGlu
dCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RvcmUoUmVnaXN0ZXJJRCBzcmMs
IGNvbnN0IHZvaWQqIGFkZHJlc3MpCisgICAgeworICAgICAgICBpbnRwdHJfdCBjdXJyZW50UmVn
aXN0ZXJDb250ZW50czsKKyAgICAgICAgaWYgKG1fY2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVyLnZh
bHVlKGN1cnJlbnRSZWdpc3RlckNvbnRlbnRzKSkgeworICAgICAgICAgICAgaW50cHRyX3QgYWRk
cmVzc0FzSW50ID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYWRkcmVzcyk7CisgICAgICAg
ICAgICBpbnRwdHJfdCBhZGRyZXNzRGVsdGEgPSBhZGRyZXNzQXNJbnQgLSBjdXJyZW50UmVnaXN0
ZXJDb250ZW50czsKKworICAgICAgICAgICAgaWYgKGlzSW5JbnRSYW5nZShhZGRyZXNzRGVsdGEp
KSB7CisgICAgICAgICAgICAgICAgaWYgKEFSTTY0QXNzZW1ibGVyOjpjYW5FbmNvZGVTSW1tT2Zm
c2V0KGFkZHJlc3NEZWx0YSkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3R1
cjxkYXRhc2l6ZT4oc3JjLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3NEZWx0YSk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBpZiAoQVJNNjRBc3NlbWJsZXI6OmNhbkVuY29kZVBJbW1PZmZzZXQ8ZGF0YXNpemU+KGFk
ZHJlc3NEZWx0YSkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RyPGRhdGFz
aXplPihzcmMsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzc0RlbHRhKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKChhZGRyZXNzQXNJbnQgJiAofm1hc2tIYWxmV29yZDApKSA9PSAoY3VycmVu
dFJlZ2lzdGVyQ29udGVudHMgJiAofm1hc2tIYWxmV29yZDApKSkgeworICAgICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLm1vdms8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzc0FzSW50ICYg
bWFza0hhbGZXb3JkMCwgMCk7CisgICAgICAgICAgICAgICAgbV9jYWNoZWRNZW1vcnlUZW1wUmVn
aXN0ZXIuc2V0VmFsdWUocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYWRkcmVzcykpOworICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cjxkYXRhc2l6ZT4oc3JjLCBtZW1vcnlUZW1wUmVn
aXN0ZXIsIEFSTTY0UmVnaXN0ZXJzOjp6cik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJl
c3MpLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2NhY2hlZE1lbW9yeVRlbXBSZWdp
c3Rlci5zZXRWYWx1ZShyZWludGVycHJldF9jYXN0PGludHB0cl90PihhZGRyZXNzKSk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnN0cjxkYXRhc2l6ZT4oc3JjLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIEFS
TTY0UmVnaXN0ZXJzOjp6cik7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGludCBkYXRhU2l6ZT4K
KyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgdHJ5TW92ZVVzaW5nQ2FjaGVSZWdpc3RlckNvbnRlbnRz
KGludHB0cl90IGltbWVkaWF0ZSwgQ2FjaGVkVGVtcFJlZ2lzdGVyJiBkZXN0KQorICAgIHsKKyAg
ICAgICAgaW50cHRyX3QgY3VycmVudFJlZ2lzdGVyQ29udGVudHM7CisgICAgICAgIGlmIChkZXN0
LnZhbHVlKGN1cnJlbnRSZWdpc3RlckNvbnRlbnRzKSkgeworICAgICAgICAgICAgaWYgKGN1cnJl
bnRSZWdpc3RlckNvbnRlbnRzID09IGltbWVkaWF0ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgICAgICAgICAgTG9naWNhbEltbWVkaWF0ZSBsb2dpY2FsSW1tID0gZGF0YVNp
emUgPT0gNjQgPyBMb2dpY2FsSW1tZWRpYXRlOjpjcmVhdGU2NChzdGF0aWNfY2FzdDx1aW50NjRf
dD4oaW1tZWRpYXRlKSkgOiBMb2dpY2FsSW1tZWRpYXRlOjpjcmVhdGUzMihzdGF0aWNfY2FzdDx1
aW50MzJfdD4oaW1tZWRpYXRlKSk7CisKKyAgICAgICAgICAgIGlmIChsb2dpY2FsSW1tLmlzVmFs
aWQoKSkgeworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmk8ZGF0YVNpemU+KGRlc3Qu
cmVnaXN0ZXJJRE5vSW52YWxpZGF0ZSgpLCBsb2dpY2FsSW1tKTsKKyAgICAgICAgICAgICAgICBk
ZXN0LnNldFZhbHVlKGltbWVkaWF0ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICgoaW1tZWRpYXRlICYgbWFza1VwcGVyV29y
ZCkgPT0gKGN1cnJlbnRSZWdpc3RlckNvbnRlbnRzICYgbWFza1VwcGVyV29yZCkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoKGltbWVkaWF0ZSAmIG1hc2tIYWxmV29yZDEpICE9IChjdXJyZW50UmVn
aXN0ZXJDb250ZW50cyAmIG1hc2tIYWxmV29yZDEpKQorICAgICAgICAgICAgICAgICAgICBtX2Fz
c2VtYmxlci5tb3ZrPGRhdGFTaXplPihkZXN0LnJlZ2lzdGVySUROb0ludmFsaWRhdGUoKSwgKGlt
bWVkaWF0ZSAmIG1hc2tIYWxmV29yZDEpID4+IDE2LCAxNik7CisKKyAgICAgICAgICAgICAgICBp
ZiAoKGltbWVkaWF0ZSAmIG1hc2tIYWxmV29yZDApICE9IChjdXJyZW50UmVnaXN0ZXJDb250ZW50
cyAmIG1hc2tIYWxmV29yZDApKQorICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3Zr
PGRhdGFTaXplPihkZXN0LnJlZ2lzdGVySUROb0ludmFsaWRhdGUoKSwgaW1tZWRpYXRlICYgbWFz
a0hhbGZXb3JkMCwgMCk7CisKKyAgICAgICAgICAgICAgICBkZXN0LnNldFZhbHVlKGltbWVkaWF0
ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgdm9pZCBtb3ZlVG9DYWNo
ZWRSZWcoVHJ1c3RlZEltbTMyIGltbSwgQ2FjaGVkVGVtcFJlZ2lzdGVyJiBkZXN0KQorICAgIHsK
KyAgICAgICAgaWYgKHRyeU1vdmVVc2luZ0NhY2hlUmVnaXN0ZXJDb250ZW50czwzMj4oc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KGltbS5tX3ZhbHVlKSwgZGVzdCkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgbW92ZUludGVybmFsPFRydXN0ZWRJbW0zMiwgaW50MzJfdD4oaW1tLCBkZXN0
LnJlZ2lzdGVySUROb0ludmFsaWRhdGUoKSk7CisgICAgICAgIGRlc3Quc2V0VmFsdWUoaW1tLm1f
dmFsdWUpOworICAgIH0KKworICAgIHZvaWQgbW92ZVRvQ2FjaGVkUmVnKFRydXN0ZWRJbW1QdHIg
aW1tLCBDYWNoZWRUZW1wUmVnaXN0ZXImIGRlc3QpCisgICAgeworICAgICAgICBpZiAodHJ5TW92
ZVVzaW5nQ2FjaGVSZWdpc3RlckNvbnRlbnRzPDY0PihpbW0uYXNJbnRwdHIoKSwgZGVzdCkpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbW92ZUludGVybmFsPFRydXN0ZWRJbW1QdHIs
IGludHB0cl90PihpbW0sIGRlc3QucmVnaXN0ZXJJRE5vSW52YWxpZGF0ZSgpKTsKKyAgICAgICAg
ZGVzdC5zZXRWYWx1ZShpbW0uYXNJbnRwdHIoKSk7CisgICAgfQorCisgICAgdm9pZCBtb3ZlVG9D
YWNoZWRSZWcoVHJ1c3RlZEltbTY0IGltbSwgQ2FjaGVkVGVtcFJlZ2lzdGVyJiBkZXN0KQorICAg
IHsKKyAgICAgICAgaWYgKHRyeU1vdmVVc2luZ0NhY2hlUmVnaXN0ZXJDb250ZW50czw2ND4oc3Rh
dGljX2Nhc3Q8aW50cHRyX3Q+KGltbS5tX3ZhbHVlKSwgZGVzdCkpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgbW92ZUludGVybmFsPFRydXN0ZWRJbW02NCwgaW50NjRfdD4oaW1tLCBk
ZXN0LnJlZ2lzdGVySUROb0ludmFsaWRhdGUoKSk7CisgICAgICAgIGRlc3Quc2V0VmFsdWUoaW1t
Lm1fdmFsdWUpOworICAgIH0KKworICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgdHJ5TG9hZFdpdGhPZmZzZXQoUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJ
RCBybiwgaW50MzJfdCBvZmZzZXQpCisgICAgeworICAgICAgICBpZiAoQVJNNjRBc3NlbWJsZXI6
OmNhbkVuY29kZVNJbW1PZmZzZXQob2Zmc2V0KSkgeworICAgICAgICAgICAgbG9hZFVuc2NhbGVk
SW1tZWRpYXRlPGRhdGFzaXplPihydCwgcm4sIG9mZnNldCk7CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoQVJNNjRBc3NlbWJsZXI6OmNhbkVuY29kZVBJ
bW1PZmZzZXQ8ZGF0YXNpemU+KG9mZnNldCkpIHsKKyAgICAgICAgICAgIGxvYWRVbnNpZ25lZElt
bWVkaWF0ZTxkYXRhc2l6ZT4ocnQsIHJuLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ob2Zmc2V0KSk7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgdGVtcGxhdGU8aW50IGRhdGFzaXplPgorICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCB0cnlMb2FkV2l0aE9mZnNldChGUFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQgcm4s
IGludDMyX3Qgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgaWYgKEFSTTY0QXNzZW1ibGVyOjpjYW5F
bmNvZGVTSW1tT2Zmc2V0KG9mZnNldCkpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkdXI8
ZGF0YXNpemU+KHJ0LCBybiwgb2Zmc2V0KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgICAgIGlmIChBUk02NEFzc2VtYmxlcjo6Y2FuRW5jb2RlUEltbU9mZnNldDxk
YXRhc2l6ZT4ob2Zmc2V0KSkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyPGRhdGFzaXpl
PihydCwgcm4sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihvZmZzZXQpKTsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CisgICAgQUxXQVlTX0lOTElORSBib29sIHRyeVN0b3Jl
V2l0aE9mZnNldChSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCBpbnQzMl90IG9mZnNldCkK
KyAgICB7CisgICAgICAgIGlmIChBUk02NEFzc2VtYmxlcjo6Y2FuRW5jb2RlU0ltbU9mZnNldChv
ZmZzZXQpKSB7CisgICAgICAgICAgICBzdG9yZVVuc2NhbGVkSW1tZWRpYXRlPGRhdGFzaXplPihy
dCwgcm4sIG9mZnNldCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoQVJNNjRBc3NlbWJsZXI6OmNhbkVuY29kZVBJbW1PZmZzZXQ8ZGF0YXNpemU+KG9m
ZnNldCkpIHsKKyAgICAgICAgICAgIHN0b3JlVW5zaWduZWRJbW1lZGlhdGU8ZGF0YXNpemU+KHJ0
LCBybiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG9mZnNldCkpOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHRl
bXBsYXRlPGludCBkYXRhc2l6ZT4KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgdHJ5U3RvcmVXaXRo
T2Zmc2V0KEZQUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgaW50MzJfdCBvZmZzZXQpCisg
ICAgeworICAgICAgICBpZiAoQVJNNjRBc3NlbWJsZXI6OmNhbkVuY29kZVNJbW1PZmZzZXQob2Zm
c2V0KSkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3R1cjxkYXRhc2l6ZT4ocnQsIHJuLCBv
ZmZzZXQpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KEFSTTY0QXNzZW1ibGVyOjpjYW5FbmNvZGVQSW1tT2Zmc2V0PGRhdGFzaXplPihvZmZzZXQpKSB7
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHI8ZGF0YXNpemU+KHJ0LCBybiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG9mZnNldCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGZyaWVuZCBjbGFzcyBMaW5r
QnVmZmVyOworICAgIGZyaWVuZCBjbGFzcyBSZXBhdGNoQnVmZmVyOworCisgICAgc3RhdGljIHZv
aWQgbGlua0NhbGwodm9pZCogY29kZSwgQ2FsbCBjYWxsLCBGdW5jdGlvblB0ciBmdW5jdGlvbikK
KyAgICB7CisgICAgICAgIGlmIChjYWxsLmlzRmxhZ1NldChDYWxsOjpOZWFyKSkKKyAgICAgICAg
ICAgIEFSTTY0QXNzZW1ibGVyOjpsaW5rQ2FsbChjb2RlLCBjYWxsLm1fbGFiZWwsIGZ1bmN0aW9u
LnZhbHVlKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBBUk02NEFzc2VtYmxlcjo6bGlu
a1BvaW50ZXIoY29kZSwgY2FsbC5tX2xhYmVsLmxhYmVsQXRPZmZzZXQoUkVQQVRDSF9PRkZTRVRf
Q0FMTF9UT19QT0lOVEVSKSwgZnVuY3Rpb24udmFsdWUoKSk7CisgICAgfQorCisgICAgc3RhdGlj
IHZvaWQgcmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbCBjYWxsLCBDb2RlTG9jYXRpb25MYWJl
bCBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIEFSTTY0QXNzZW1ibGVyOjpyZXBhdGNoUG9p
bnRlcihjYWxsLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KFJFUEFUQ0hfT0ZGU0VUX0NBTExfVE9fUE9J
TlRFUikuZGF0YUxvY2F0aW9uKCksIGRlc3RpbmF0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwor
ICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGwgY2Fs
bCwgRnVuY3Rpb25QdHIgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBBUk02NEFzc2VtYmxl
cjo6cmVwYXRjaFBvaW50ZXIoY2FsbC5kYXRhTGFiZWxQdHJBdE9mZnNldChSRVBBVENIX09GRlNF
VF9DQUxMX1RPX1BPSU5URVIpLmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5leGVjdXRhYmxl
QWRkcmVzcygpKTsKKyAgICB9CisKKyAgICBDYWNoZWRUZW1wUmVnaXN0ZXIgbV9kYXRhTWVtb3J5
VGVtcFJlZ2lzdGVyOworICAgIENhY2hlZFRlbXBSZWdpc3RlciBtX2NhY2hlZE1lbW9yeVRlbXBS
ZWdpc3RlcjsKKyAgICBib29sIG1fbWFrZUp1bXBQYXRjaGFibGU7Cit9OworCisvLyBFeHRlbmQg
dGhlIHtsb2FkLHN0b3JlfXtVbnNpZ25lZCxVbnNjYWxlZH1JbW1lZGlhdGUgdGVtcGxhdGVkIGdl
bmVyYWwgcmVnaXN0ZXIgbWV0aG9kcyB0byBjb3ZlciBhbGwgbG9hZC9zdG9yZSBzaXplcwordGVt
cGxhdGU8PgorQUxXQVlTX0lOTElORSB2b2lkIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRVbnNp
Z25lZEltbWVkaWF0ZTw4PihSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCB1bnNpZ25lZCBw
aW1tKQoreworICAgIG1fYXNzZW1ibGVyLmxkcmIocnQsIHJuLCBwaW1tKTsKK30KKwordGVtcGxh
dGU8PgorQUxXQVlTX0lOTElORSB2b2lkIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRVbnNpZ25l
ZEltbWVkaWF0ZTwxNj4oUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgdW5zaWduZWQgcGlt
bSkKK3sKKyAgICBtX2Fzc2VtYmxlci5sZHJoKHJ0LCBybiwgcGltbSk7Cit9CisKK3RlbXBsYXRl
PD4KK0FMV0FZU19JTkxJTkUgdm9pZCBNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkVW5zY2FsZWRJ
bW1lZGlhdGU8OD4oUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgaW50IHNpbW0pCit7Cisg
ICAgbV9hc3NlbWJsZXIubGR1cmIocnQsIHJuLCBzaW1tKTsKK30KKwordGVtcGxhdGU8PgorQUxX
QVlTX0lOTElORSB2b2lkIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRVbnNjYWxlZEltbWVkaWF0
ZTwxNj4oUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgaW50IHNpbW0pCit7CisgICAgbV9h
c3NlbWJsZXIubGR1cmgocnQsIHJuLCBzaW1tKTsKK30KKwordGVtcGxhdGU8PgorQUxXQVlTX0lO
TElORSB2b2lkIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlVW5zaWduZWRJbW1lZGlhdGU8OD4o
UmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgdW5zaWduZWQgcGltbSkKK3sKKyAgICBtX2Fz
c2VtYmxlci5zdHJiKHJ0LCBybiwgcGltbSk7Cit9CisKK3RlbXBsYXRlPD4KK0FMV0FZU19JTkxJ
TkUgdm9pZCBNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZVVuc2lnbmVkSW1tZWRpYXRlPDE2PihS
ZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJuLCB1bnNpZ25lZCBwaW1tKQoreworICAgIG1fYXNz
ZW1ibGVyLnN0cmgocnQsIHJuLCBwaW1tKTsKK30KKwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElO
RSB2b2lkIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlVW5zY2FsZWRJbW1lZGlhdGU8OD4oUmVn
aXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBybiwgaW50IHNpbW0pCit7CisgICAgbV9hc3NlbWJsZXIu
c3R1cmIocnQsIHJuLCBzaW1tKTsKK30KKwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSB2b2lk
IE1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlVW5zY2FsZWRJbW1lZGlhdGU8MTY+KFJlZ2lzdGVy
SUQgcnQsIFJlZ2lzdGVySUQgcm4sIGludCBzaW1tKQoreworICAgIG1fYXNzZW1ibGVyLnN0dXJo
KHJ0LCBybiwgc2ltbSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5B
QkxFKEFTU0VNQkxFUikKKworI2VuZGlmIC8vIE1hY3JvQXNzZW1ibGVyQVJNNjRfaApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcu
aAppbmRleCBiNjRjMWM1Li5iMzA3NmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaApAQCAtNTUsNiArNTUsMTAgQEAg
cHVibGljOgogICAgIHR5cGVkZWYgQVJNdjdBc3NlbWJsZXI6OkxpbmtSZWNvcmQgTGlua1JlY29y
ZDsKICAgICB0eXBlZGVmIEFSTXY3QXNzZW1ibGVyOjpKdW1wVHlwZSBKdW1wVHlwZTsKICAgICB0
eXBlZGVmIEFSTXY3QXNzZW1ibGVyOjpKdW1wTGlua1R5cGUgSnVtcExpbmtUeXBlOworICAgIHR5
cGVkZWYgQVJNdjdBc3NlbWJsZXI6OkNvbmRpdGlvbiBDb25kaXRpb247CisKKyAgICBzdGF0aWMg
Y29uc3QgQVJNdjdBc3NlbWJsZXI6OkNvbmRpdGlvbiBEZWZhdWx0Q29uZGl0aW9uID0gQVJNdjdB
c3NlbWJsZXI6OkNvbmRpdGlvbkludmFsaWQ7CisgICAgc3RhdGljIGNvbnN0IEFSTXY3QXNzZW1i
bGVyOjpKdW1wVHlwZSBEZWZhdWx0SnVtcCA9IEFSTXY3QXNzZW1ibGVyOjpKdW1wTm9Db25kaXRp
b25GaXhlZFNpemU7CiAKICAgICBzdGF0aWMgYm9vbCBpc0NvbXBhY3RQdHJBbGlnbmVkQWRkcmVz
c09mZnNldChwdHJkaWZmX3QgdmFsdWUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWU3OWNjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHAKQEAgLTAs
MCArMSwxMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQTY0RE9wY29kZS5oIgorI2luY2x1
ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisK
K25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQVJNNjREaXNhc3NlbWJsZXIgeworCitBNjRET3Bj
b2RlOjpPcGNvZGVHcm91cCogQTY0RE9wY29kZTo6b3Bjb2RlVGFibGVbMzJdOworCitjb25zdCBj
aGFyKiBjb25zdCBBNjRET3Bjb2RlOjpzX2NvbmRpdGlvbk5hbWVzWzE2XSA9IHsKKyAgICJlcSIs
ICJuZSIsICJocyIsICJsbyIsICJtaSIsICJwbCIsICJ2cyIsICJ2YyIsCisgICAiaGkiLCAibHMi
LCAiZ2UiLCAibHQiLCAiZ3QiLCAibGUiLCAiYWwiLCAibmUiCit9OworCitjb25zdCBjaGFyKiBj
b25zdCBBNjRET3Bjb2RlOjpzX29wdGlvbk5hbWVbOF0gPQoreyAidXh0YiIsICJ1eHRoIiwgInV4
dHciLCAidXh0eCIsICJzeHRiIiwgInN4dGgiLCAic3h0dyIsICJzeHR4IiB9OworCitjb25zdCBj
aGFyKiBjb25zdCBBNjRET3Bjb2RlOjpzX3NoaWZ0TmFtZXNbNF0gPSB7CisgICAgImxzbCIsICJs
c3IiLCAiYXNsIiwgInJvciIKK307CisKK2NvbnN0IGNoYXIgQTY0RE9wY29kZTo6c19GUFJlZ2lz
dGVyUHJlZml4WzVdID0geworICAgICdiJywgJ2gnLCAncycsICdkJywgJ3EnCit9OworCitzdHJ1
Y3QgT3Bjb2RlR3JvdXBJbml0aWFsaXplciB7CisgICAgdW5zaWduZWQgbV9vcGNvZGVHcm91cE51
bWJlcjsKKyAgICB1aW50MzJfdCBtX21hc2s7CisgICAgdWludDMyX3QgbV9wYXR0ZXJuOworICAg
IGNvbnN0IGNoYXIqICgqbV9mb3JtYXQpKEE2NERPcGNvZGUqKTsKK307CisKKyNkZWZpbmUgT1BD
T0RFX0dST1VQX0VOVFJZKGdyb3VwSW5kZXgsIGdyb3VwQ2xhc3MpIFwKK3sgZ3JvdXBJbmRleCwg
Z3JvdXBDbGFzczo6bWFzaywgZ3JvdXBDbGFzczo6cGF0dGVybiwgZ3JvdXBDbGFzczo6Zm9ybWF0
IH0KKworc3RhdGljIE9wY29kZUdyb3VwSW5pdGlhbGl6ZXIgb3Bjb2RlR3JvdXBMaXN0W10gPSB7
CisgICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MGEsIEE2NERPcGNvZGVMb2dpY2FsU2hpZnRlZFJl
Z2lzdGVyKSwKKyAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgwYiwgQTY0RE9wY29kZUFkZFN1YnRy
YWN0RXh0ZW5kZWRSZWdpc3RlciksCisgICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MGIsIEE2NERP
cGNvZGVBZGRTdWJ0cmFjdFNoaWZ0ZWRSZWdpc3RlciksCisgICAgT1BDT0RFX0dST1VQX0VOVFJZ
KDB4MTEsIEE2NERPcGNvZGVBZGRTdWJ0cmFjdEltbWVkaWF0ZSksCisgICAgT1BDT0RFX0dST1VQ
X0VOVFJZKDB4MTIsIEE2NERPcGNvZGVNb3ZlV2lkZSksCisgICAgT1BDT0RFX0dST1VQX0VOVFJZ
KDB4MTIsIEE2NERPcGNvZGVMb2dpY2FsSW1tZWRpYXRlKSwKKyAgICBPUENPREVfR1JPVVBfRU5U
UlkoMHgxMywgQTY0RE9wY29kZUJpdGZpZWxkKSwKKyAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgx
MywgQTY0RE9wY29kZUV4dHJhY3QpLAorICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDE0LCBBNjRE
T3Bjb2RlVW5jb25kaXRpb25hbEJyYW5jaEltbWVkaWF0ZSksCisgICAgT1BDT0RFX0dST1VQX0VO
VFJZKDB4MTQsIEE2NERPcGNvZGVDb25kaXRpb25hbEJyYW5jaEltbWVkaWF0ZSksCisgICAgT1BD
T0RFX0dST1VQX0VOVFJZKDB4MTQsIEE2NERPcGNvZGVDb21wYXJlQW5kQnJhbmNoSW1tZWRpYXRl
KSwKKyAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgxNCwgQTY0T3Bjb2RlRXhjZXB0aW9uR2VuZXJh
dGlvbiksCisgICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MTUsIEE2NERPcGNvZGVVbmNvbmRpdGlv
bmFsQnJhbmNoSW1tZWRpYXRlKSwKKyAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgxNSwgQTY0RE9w
Y29kZUNvbmRpdGlvbmFsQnJhbmNoSW1tZWRpYXRlKSwKKyAgICBPUENPREVfR1JPVVBfRU5UUlko
MHgxNSwgQTY0RE9wY29kZUNvbXBhcmVBbmRCcmFuY2hJbW1lZGlhdGUpLAorICAgIE9QQ09ERV9H
Uk9VUF9FTlRSWSgweDE1LCBBNjRET3Bjb2RlSGludCksCisgICAgT1BDT0RFX0dST1VQX0VOVFJZ
KDB4MTYsIEE2NERPcGNvZGVVbmNvbmRpdGlvbmFsQnJhbmNoSW1tZWRpYXRlKSwKKyAgICBPUENP
REVfR1JPVVBfRU5UUlkoMHgxNiwgQTY0RE9wY29kZVVuY29uZGl0aW9uYWxCcmFuY2hSZWdpc3Rl
ciksCisgICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MTYsIEE2NERPcGNvZGVUZXN0QW5kQnJhbmNo
SW1tZWRpYXRlKSwKKyAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgxNywgQTY0RE9wY29kZVVuY29u
ZGl0aW9uYWxCcmFuY2hJbW1lZGlhdGUpLAorICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDE3LCBB
NjRET3Bjb2RlVW5jb25kaXRpb25hbEJyYW5jaFJlZ2lzdGVyKSwKKyAgICBPUENPREVfR1JPVVBf
RU5UUlkoMHgxNywgQTY0RE9wY29kZVRlc3RBbmRCcmFuY2hJbW1lZGlhdGUpLAorICAgIE9QQ09E
RV9HUk9VUF9FTlRSWSgweDE4LCBBNjRET3Bjb2RlTG9hZFN0b3JlSW1tZWRpYXRlKSwKKyAgICBP
UENPREVfR1JPVVBfRU5UUlkoMHgxOCwgQTY0RE9wY29kZUxvYWRTdG9yZVJlZ2lzdGVyT2Zmc2V0
KSwKKyAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgxOSwgQTY0RE9wY29kZUxvYWRTdG9yZVVuc2ln
bmVkSW1tZWRpYXRlKSwKKyAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgxYSwgQTY0RE9wY29kZUNv
bmRpdGlvbmFsU2VsZWN0KSwKKyAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgxYSwgQTY0RE9wY29k
ZURhdGFQcm9jZXNzaW5nMlNvdXJjZSksCisgICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MWIsIEE2
NERPcGNvZGVEYXRhUHJvY2Vzc2luZzNTb3VyY2UpLAorICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgw
eDFjLCBBNjRET3Bjb2RlTG9hZFN0b3JlSW1tZWRpYXRlKSwKKyAgICBPUENPREVfR1JPVVBfRU5U
UlkoMHgxYywgQTY0RE9wY29kZUxvYWRTdG9yZVJlZ2lzdGVyT2Zmc2V0KSwKKyAgICBPUENPREVf
R1JPVVBfRU5UUlkoMHgxZCwgQTY0RE9wY29kZUxvYWRTdG9yZVVuc2lnbmVkSW1tZWRpYXRlKSwK
KyAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgxZSwgQTY0RE9wY29kZUZsb2F0aW5nUG9pbnRDb21w
YXJlKSwKKyAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgxZSwgQTY0RE9wY29kZUZsb2F0aW5nUG9p
bnREYXRhUHJvY2Vzc2luZzJTb3VyY2UpLAorICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDFlLCBB
NjRET3Bjb2RlRmxvYXRpbmdQb2ludERhdGFQcm9jZXNzaW5nMVNvdXJjZSksCisgICAgT1BDT0RF
X0dST1VQX0VOVFJZKDB4MWUsIEE2NERPcGNvZGVGbG9hdGluZ0ZpeGVkUG9pbnRDb252ZXJzaW9u
cyksCisgICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MWUsIEE2NERPcGNvZGVGbG9hdGluZ1BvaW50
SW50ZWdlckNvbnZlcnNpb25zKSwKK307CisKK2Jvb2wgQTY0RE9wY29kZTo6c19pbml0aWFsaXpl
ZCA9IGZhbHNlOworCit2b2lkIEE2NERPcGNvZGU6OmluaXQoKQoreworICAgIGlmIChzX2luaXRp
YWxpemVkKQorICAgICAgICByZXR1cm47CisKKyAgICBPcGNvZGVHcm91cCogbGFzdEdyb3Vwc1sz
Ml07CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMzI7IGkrKykgeworICAgICAgICBv
cGNvZGVUYWJsZVtpXSA9IDA7CisgICAgICAgIGxhc3RHcm91cHNbaV0gPSAwOworICAgIH0KKwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplb2Yob3Bjb2RlR3JvdXBMaXN0KSAvIHNp
emVvZihzdHJ1Y3QgT3Bjb2RlR3JvdXBJbml0aWFsaXplcik7IGkrKykgeworICAgICAgICBPcGNv
ZGVHcm91cCogbmV3T3Bjb2RlR3JvdXAgPSBuZXcgT3Bjb2RlR3JvdXAob3Bjb2RlR3JvdXBMaXN0
W2ldLm1fbWFzaywgb3Bjb2RlR3JvdXBMaXN0W2ldLm1fcGF0dGVybiwgb3Bjb2RlR3JvdXBMaXN0
W2ldLm1fZm9ybWF0KTsKKyAgICAgICAgdWludDMyX3Qgb3Bjb2RlR3JvdXBOdW1iZXIgPSBvcGNv
ZGVHcm91cExpc3RbaV0ubV9vcGNvZGVHcm91cE51bWJlcjsKKworICAgICAgICBpZiAoIW9wY29k
ZVRhYmxlW29wY29kZUdyb3VwTnVtYmVyXSkKKyAgICAgICAgICAgIG9wY29kZVRhYmxlW29wY29k
ZUdyb3VwTnVtYmVyXSA9IG5ld09wY29kZUdyb3VwOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBsYXN0R3JvdXBzW29wY29kZUdyb3VwTnVtYmVyXS0+c2V0TmV4dChuZXdPcGNvZGVHcm91cCk7
CisgICAgICAgIGxhc3RHcm91cHNbb3Bjb2RlR3JvdXBOdW1iZXJdID0gbmV3T3Bjb2RlR3JvdXA7
CisgICAgfQorCisgICAgc19pbml0aWFsaXplZCA9IHRydWU7Cit9CisKK3ZvaWQgQTY0RE9wY29k
ZTo6c2V0UENBbmRPcGNvZGUodWludDMyX3QqIG5ld1BDLCB1aW50MzJfdCBuZXdPcGNvZGUpCit7
CisgICAgbV9jdXJyZW50UEMgPSBuZXdQQzsKKyAgICBtX29wY29kZSA9IG5ld09wY29kZTsKKyAg
ICBtX2J1ZmZlck9mZnNldCA9IDA7CisgICAgbV9mb3JtYXRCdWZmZXJbMF0gPSAnXDAnOworfQor
Citjb25zdCBjaGFyKiBBNjRET3Bjb2RlOjpkaXNhc3NlbWJsZSh1aW50MzJfdCogY3VycmVudFBD
KQoreworICAgIHNldFBDQW5kT3Bjb2RlKGN1cnJlbnRQQywgKmN1cnJlbnRQQyk7CisKKyAgICBP
cGNvZGVHcm91cCogb3BHcm91cCA9IG9wY29kZVRhYmxlW29wY29kZUdyb3VwTnVtYmVyKG1fb3Bj
b2RlKV07CisKKyAgICB3aGlsZSAob3BHcm91cCkgeworICAgICAgICBpZiAob3BHcm91cC0+bWF0
Y2hlcyhtX29wY29kZSkpCisgICAgICAgICAgICByZXR1cm4gb3BHcm91cC0+Zm9ybWF0KHRoaXMp
OworICAgICAgICBvcEdyb3VwID0gb3BHcm91cC0+bmV4dCgpOworICAgIH0KKworICAgIHJldHVy
biBBNjRET3Bjb2RlOjpmb3JtYXQoKTsKK30KKwordm9pZCBBNjRET3Bjb2RlOjpidWZmZXJQcmlu
dGYoY29uc3QgY2hhciogZm9ybWF0LCAuLi4pCit7CisgICAgaWYgKG1fYnVmZmVyT2Zmc2V0ID49
IGJ1ZmZlclNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIHZhX2xpc3QgYXJnTGlzdDsKKyAg
ICB2YV9zdGFydChhcmdMaXN0LCBmb3JtYXQpOworCisgICAgbV9idWZmZXJPZmZzZXQgKz0gdnNu
cHJpbnRmKG1fZm9ybWF0QnVmZmVyICsgbV9idWZmZXJPZmZzZXQsIGJ1ZmZlclNpemUgLSBtX2J1
ZmZlck9mZnNldCwgZm9ybWF0LCBhcmdMaXN0KTsKKworICAgIHZhX2VuZChhcmdMaXN0KTsKK30K
KworY29uc3QgY2hhciogQTY0RE9wY29kZTo6Zm9ybWF0KCkKK3sKKyAgICBidWZmZXJQcmludGYo
IiAgIC5sb25nICAlMDh4IiwgbV9vcGNvZGUpOworICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsK
K30KKwordm9pZCBBNjRET3Bjb2RlOjphcHBlbmRSZWdpc3Rlck5hbWUodW5zaWduZWQgcmVnaXN0
ZXJOdW1iZXIsIGJvb2wgaXM2NEJpdCkKK3sKKyAgICBpZiAocmVnaXN0ZXJOdW1iZXIgPT0gMzAp
IHsKKyAgICAgICAgYnVmZmVyUHJpbnRmKGlzNjRCaXQgPyAibHIiIDogIndsciIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgYnVmZmVyUHJpbnRmKCIlYyV1IiwgaXM2NEJpdCA/ICd4
JyA6ICd3JywgcmVnaXN0ZXJOdW1iZXIpOworfQorCit2b2lkIEE2NERPcGNvZGU6OmFwcGVuZEZQ
UmVnaXN0ZXJOYW1lKHVuc2lnbmVkIHJlZ2lzdGVyTnVtYmVyLCB1bnNpZ25lZCByZWdpc3RlclNp
emUpCit7CisgICAgYnVmZmVyUHJpbnRmKCIlYyV1IiwgRlBSZWdpc3RlclByZWZpeChyZWdpc3Rl
clNpemUpLCByZWdpc3Rlck51bWJlcik7Cit9CisKK2NvbnN0IGNoYXIqIGNvbnN0IEE2NERPcGNv
ZGVBZGRTdWJ0cmFjdDo6c19vcE5hbWVzWzRdID0geyAiYWRkIiwgImFkZHMiLCAic3ViIiwgInN1
YnMiIH07CisKK2NvbnN0IGNoYXIqIEE2NERPcGNvZGVBZGRTdWJ0cmFjdEltbWVkaWF0ZTo6Zm9y
bWF0KCkKK3sKKyAgICBpZiAoaXNDTVAoKSkKKyAgICAgICAgYXBwZW5kSW5zdHJ1Y3Rpb25OYW1l
KGNtcE5hbWUoKSk7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChpc01vdlNQKCkpCisgICAgICAg
ICAgICBhcHBlbmRJbnN0cnVjdGlvbk5hbWUoIm1vdiIpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBhcHBlbmRJbnN0cnVjdGlvbk5hbWUob3BOYW1lKCkpOworICAgICAgICBhcHBlbmRTUE9y
UmVnaXN0ZXJOYW1lKHJkKCksIGlzNjRCaXQoKSk7CisgICAgICAgIGFwcGVuZFNlcGFyYXRvcigp
OworICAgIH0KKyAgICBhcHBlbmRTUE9yUmVnaXN0ZXJOYW1lKHJuKCksIGlzNjRCaXQoKSk7CisK
KyAgICBpZiAoIWlzTW92U1AoKSkgeworICAgICAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAg
ICAgYXBwZW5kVW5zaWduZWRJbW1lZGlhdGUoaW1tZWQxMigpKTsKKyAgICAgICAgaWYgKHNoaWZ0
KCkpIHsKKyAgICAgICAgICAgIGFwcGVuZFNlcGFyYXRvcigpOworICAgICAgICAgICAgYXBwZW5k
U3RyaW5nKHNoaWZ0KCkgPT0gMSA/ICJsc2wiIDogInJlc2VydmVkIik7CisgICAgICAgIH0KKyAg
ICB9CisgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOworfQorCitjb25zdCBjaGFyKiBBNjRET3Bj
b2RlQWRkU3VidHJhY3RFeHRlbmRlZFJlZ2lzdGVyOjpmb3JtYXQoKQoreworICAgIGlmIChpbW1l
ZGlhdGUzKCkgPiA0KQorICAgICAgICByZXR1cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7CisKKyAg
ICBpZiAoaXNDTVAoKSkKKyAgICAgICAgYXBwZW5kSW5zdHJ1Y3Rpb25OYW1lKGNtcE5hbWUoKSk7
CisgICAgZWxzZSB7CisgICAgICAgIGFwcGVuZEluc3RydWN0aW9uTmFtZShvcE5hbWUoKSk7Cisg
ICAgICAgIGFwcGVuZFNQT3JSZWdpc3Rlck5hbWUocmQoKSwgaXM2NEJpdCgpKTsKKyAgICAgICAg
YXBwZW5kU2VwYXJhdG9yKCk7CisgICAgfQorICAgIGFwcGVuZFNQT3JSZWdpc3Rlck5hbWUocm4o
KSwgaXM2NEJpdCgpKTsKKyAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICBhcHBlbmRaUk9yUmVn
aXN0ZXJOYW1lKHJtKCksIGlzNjRCaXQoKSAmJiAoKG9wdGlvbigpICYgMHgzKSA9PSAweDMpKTsK
KyAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICBpZiAob3B0aW9uKCkgPT0gMHgyICYmICgocmQo
KSA9PSAzMSkgfHwgKHJuKCkgPT0gMzEpKSkKKyAgICAgICAgYXBwZW5kU3RyaW5nKCJsc2wiKTsK
KyAgICBlbHNlCisgICAgICAgIGFwcGVuZFN0cmluZyhvcHRpb25OYW1lKCkpOworICAgIGlmIChp
bW1lZGlhdGUzKCkpIHsKKyAgICAgICAgYXBwZW5kQ2hhcmFjdGVyKCcgJyk7CisgICAgICAgIGFw
cGVuZFVuc2lnbmVkSW1tZWRpYXRlKGltbWVkaWF0ZTMoKSk7CisgICAgfQorCisgICAgcmV0dXJu
IG1fZm9ybWF0QnVmZmVyOworfQorCitjb25zdCBjaGFyKiBBNjRET3Bjb2RlQWRkU3VidHJhY3RT
aGlmdGVkUmVnaXN0ZXI6OmZvcm1hdCgpCit7CisgICAgaWYgKCFpczY0Qml0KCkgJiYgaW1tZWRp
YXRlNigpICYgMHgyMCkKKyAgICAgICAgcmV0dXJuIEE2NERPcGNvZGU6OmZvcm1hdCgpOworCisg
ICAgaWYgKHNoaWZ0KCkgPT0gMHgzKQorICAgICAgICByZXR1cm4gQTY0RE9wY29kZTo6Zm9ybWF0
KCk7CisKKyAgICBpZiAoaXNDTVAoKSkKKyAgICAgICAgYXBwZW5kSW5zdHJ1Y3Rpb25OYW1lKGNt
cE5hbWUoKSk7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChpc05lZygpKQorICAgICAgICAgICAg
YXBwZW5kSW5zdHJ1Y3Rpb25OYW1lKGNtcE5hbWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGFwcGVuZEluc3RydWN0aW9uTmFtZShvcE5hbWUoKSk7CisgICAgICAgIGFwcGVuZFNQT3JS
ZWdpc3Rlck5hbWUocmQoKSwgaXM2NEJpdCgpKTsKKyAgICAgICAgYXBwZW5kU2VwYXJhdG9yKCk7
CisgICAgfQorICAgIGlmICghaXNOZWcoKSkgeworICAgICAgICBhcHBlbmRSZWdpc3Rlck5hbWUo
cm4oKSwgaXM2NEJpdCgpKTsKKyAgICAgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgfQorICAg
IGFwcGVuZFpST3JSZWdpc3Rlck5hbWUocm0oKSwgaXM2NEJpdCgpKTsKKyAgICBpZiAoaW1tZWRp
YXRlNigpKSB7CisgICAgICAgIGFwcGVuZFNlcGFyYXRvcigpOworICAgICAgICBhcHBlbmRTaGlm
dFR5cGUoc2hpZnQoKSk7CisgICAgICAgIGFwcGVuZFVuc2lnbmVkSW1tZWRpYXRlKGltbWVkaWF0
ZTYoKSk7CisgICAgfQorCisgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOworfQorCitjb25zdCBj
aGFyKiBjb25zdCBBNjRET3Bjb2RlQml0ZmllbGQ6OnNfb3BOYW1lc1szXSA9IHsgInNiZm0iLCAi
YmZtIiwgInViZm0iIH07Citjb25zdCBjaGFyKiBjb25zdCBBNjRET3Bjb2RlQml0ZmllbGQ6OnNf
ZXh0ZW5kUHNldWRvT3BOYW1lc1szXVszXSA9IHsKKyAgICB7ICJzeHRiIiwgInN4dGgiLCAic3h0
dyIgfSwgeyAwLCAwLCAwfSAsIHsgInV4dGIiLCAidXh0aCIsICJ1eHR3IiB9IH07Citjb25zdCBj
aGFyKiBjb25zdCBBNjRET3Bjb2RlQml0ZmllbGQ6OnNfaW5zZXJ0T3BOYW1lc1szXSA9IHsgInNi
Zml6IiwgImJmaSIsICJ1YmZpeiIgfTsKK2NvbnN0IGNoYXIqIGNvbnN0IEE2NERPcGNvZGVCaXRm
aWVsZDo6c19leHRyYWN0T3BOYW1lc1szXSA9IHsgInNiZngiLCAiYmYiLCAidWJmeCIgfTsKKwor
Y29uc3QgY2hhciogQTY0RE9wY29kZUJpdGZpZWxkOjpmb3JtYXQoKQoreworICAgIGlmIChvcGMo
KSA9PSAweDMpCisgICAgICAgIHJldHVybiBBNjRET3Bjb2RlOjpmb3JtYXQoKTsKKworICAgIGlm
IChpczY0Qml0KCkgIT0gbkJpdCgpKQorICAgICAgICByZXR1cm4gQTY0RE9wY29kZTo6Zm9ybWF0
KCk7CisKKyAgICBpZiAoIWlzNjRCaXQoKSAmJiAoKGltbWVkaWF0ZVIoKSAmIDB4MjApIHx8IChp
bW1lZGlhdGVTKCkgJiAweDIwKSkpCisgICAgICAgIHJldHVybiBBNjRET3Bjb2RlOjpmb3JtYXQo
KTsKKworICAgIGlmICghKG9wYygpICYgMHgxKSAmJiAhaW1tZWRpYXRlUigpKSB7CisgICAgICAg
IC8vIFt1bl1zaWduZWQge2J0eWUsaGFsZi13b3JkLHdvcmR9IGV4dGVuZAorICAgICAgICBib29s
IGlzU1RYVHlwZSA9IGZhbHNlOworICAgICAgICBpZiAoaW1tZWRpYXRlUygpID09IDcpIHsKKyAg
ICAgICAgICAgIGFwcGVuZEluc3RydWN0aW9uTmFtZShleHRlbmRQc2V1ZG9PcE5hbWVzKDApKTsK
KyAgICAgICAgICAgIGlzU1RYVHlwZSA9IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAoaW1tZWRp
YXRlUygpID09IDE1KSB7CisgICAgICAgICAgICBhcHBlbmRJbnN0cnVjdGlvbk5hbWUoZXh0ZW5k
UHNldWRvT3BOYW1lcygxKSk7CisgICAgICAgICAgICBpc1NUWFR5cGUgPSB0cnVlOworICAgICAg
ICB9IGVsc2UgaWYgKGltbWVkaWF0ZVMoKSA9PSAzMSAmJiBpczY0Qml0KCkpIHsKKyAgICAgICAg
ICAgIGFwcGVuZEluc3RydWN0aW9uTmFtZShleHRlbmRQc2V1ZG9PcE5hbWVzKDIpKTsKKyAgICAg
ICAgICAgIGlzU1RYVHlwZSA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXNTVFhU
eXBlKSB7CisgICAgICAgICAgICBhcHBlbmRSZWdpc3Rlck5hbWUocmQoKSwgaXM2NEJpdCgpKTsK
KyAgICAgICAgICAgIGFwcGVuZFNlcGFyYXRvcigpOworICAgICAgICAgICAgYXBwZW5kUmVnaXN0
ZXJOYW1lKHJuKCksIGZhbHNlKTsKKworICAgICAgICAgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVy
OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG9wYygpID09IDB4MiAmJiBpbW1lZGlhdGVT
KCkgPT0gKGltbWVkaWF0ZVIoKSArIDEpKSB7CisgICAgICAgIC8vIGxzbAorICAgICAgICBhcHBl
bmRJbnN0cnVjdGlvbk5hbWUoImxzbCIpOworICAgICAgICBhcHBlbmRSZWdpc3Rlck5hbWUocmQo
KSwgaXM2NEJpdCgpKTsKKyAgICAgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgIGFwcGVu
ZFJlZ2lzdGVyTmFtZShybigpLCBpczY0Qml0KCkpOworICAgICAgICBhcHBlbmRTZXBhcmF0b3Io
KTsKKyAgICAgICAgYXBwZW5kVW5zaWduZWRJbW1lZGlhdGUoKGlzNjRCaXQoKSA/IDYzdSA6IDMx
dSkgLSBpbW1lZGlhdGVSKCkpOworCisgICAgICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKKyAg
ICB9IGVsc2UgaWYgKCEob3BjKCkgJiAweDEpICYmICgoaW1tZWRpYXRlUygpICYgMHgxZikgPT0g
MHgxZikgJiYgKGlzNjRCaXQoKSA9PSAoaW1tZWRpYXRlUygpID4+IDUpKSkgeworICAgICAgICAv
LyBhc3IvbHNyCisgICAgICAgIGFwcGVuZEluc3RydWN0aW9uTmFtZSghb3BjKCkgPyAiYXJzIiA6
ICJsc3IiKTsKKworICAgICAgICBhcHBlbmRSZWdpc3Rlck5hbWUocmQoKSwgaXM2NEJpdCgpKTsK
KyAgICAgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgIGFwcGVuZFJlZ2lzdGVyTmFtZShy
bigpLCBpczY0Qml0KCkpOworICAgICAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgYXBw
ZW5kVW5zaWduZWRJbW1lZGlhdGUoaW1tZWRpYXRlUigpKTsKKworICAgICAgICByZXR1cm4gbV9m
b3JtYXRCdWZmZXI7CisgICAgfSBlbHNlIGlmIChpbW1lZGlhdGVTKCkgPCBpbW1lZGlhdGVSKCkp
IHsKKyAgICAgICAgLy8gYml0IGZpZWxkIGluc2VydAorICAgICAgICBhcHBlbmRJbnN0cnVjdGlv
bk5hbWUoaW5zZXJ0T3BOYW1lcygpKTsKKworICAgICAgICBhcHBlbmRSZWdpc3Rlck5hbWUocmQo
KSwgaXM2NEJpdCgpKTsKKyAgICAgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgIGFwcGVu
ZFJlZ2lzdGVyTmFtZShybigpLCBpczY0Qml0KCkpOworICAgICAgICBhcHBlbmRTZXBhcmF0b3Io
KTsKKyAgICAgICAgYXBwZW5kVW5zaWduZWRJbW1lZGlhdGUoKGlzNjRCaXQoKSA/IDY0dSA6IDMy
dSkgLSBpbW1lZGlhdGVSKCkpOworICAgICAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAg
YXBwZW5kVW5zaWduZWRJbW1lZGlhdGUoaW1tZWRpYXRlUygpICsgMSk7CisKKyAgICAgICAgcmV0
dXJuIG1fZm9ybWF0QnVmZmVyOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIGJpdCBmaWVsZCBl
eHRyYWN0CisgICAgICAgIGFwcGVuZEluc3RydWN0aW9uTmFtZShleHRyYWN0T3BOYW1lcygpKTsK
KworICAgICAgICBhcHBlbmRSZWdpc3Rlck5hbWUocmQoKSwgaXM2NEJpdCgpKTsKKyAgICAgICAg
YXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgIGFwcGVuZFJlZ2lzdGVyTmFtZShybigpLCBpczY0
Qml0KCkpOworICAgICAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgYXBwZW5kVW5zaWdu
ZWRJbW1lZGlhdGUoaW1tZWRpYXRlUigpKTsKKyAgICAgICAgYXBwZW5kU2VwYXJhdG9yKCk7Cisg
ICAgICAgIGFwcGVuZFVuc2lnbmVkSW1tZWRpYXRlKGltbWVkaWF0ZVMoKSAtIGltbWVkaWF0ZVIo
KSArIDEpOworCisgICAgICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKKyAgICB9CisKKyAgICBh
cHBlbmRJbnN0cnVjdGlvbk5hbWUob3BOYW1lKCkpOworICAgIGFwcGVuZFJlZ2lzdGVyTmFtZShy
ZCgpLCBpczY0Qml0KCkpOworICAgIGFwcGVuZFNlcGFyYXRvcigpOworICAgIGFwcGVuZFJlZ2lz
dGVyTmFtZShybigpLCBpczY0Qml0KCkpOworICAgIGFwcGVuZFNlcGFyYXRvcigpOworICAgIGFw
cGVuZFVuc2lnbmVkSW1tZWRpYXRlKGltbWVkaWF0ZVIoKSk7CisgICAgYXBwZW5kU2VwYXJhdG9y
KCk7CisgICAgYXBwZW5kVW5zaWduZWRJbW1lZGlhdGUoaW1tZWRpYXRlUygpKTsKKworICAgIHJl
dHVybiBtX2Zvcm1hdEJ1ZmZlcjsKK30KKworY29uc3QgY2hhciogQTY0RE9wY29kZUNvbXBhcmVB
bmRCcmFuY2hJbW1lZGlhdGU6OmZvcm1hdCgpCit7CisgICAgYXBwZW5kSW5zdHJ1Y3Rpb25OYW1l
KG9wQml0KCkgPyAiY2JueiIgOiAiY2J6Iik7CisgICAgYXBwZW5kUmVnaXN0ZXJOYW1lKHJ0KCks
IGlzNjRCaXQoKSk7CisgICAgYXBwZW5kU2VwYXJhdG9yKCk7ICAgIAorICAgIGFwcGVuZFBDUmVs
YXRpdmVPZmZzZXQobV9jdXJyZW50UEMsIHN0YXRpY19jYXN0PGludDMyX3Q+KGltbWVkaWF0ZTE5
KCkpKTsKKyAgICByZXR1cm4gbV9mb3JtYXRCdWZmZXI7Cit9CisKK2NvbnN0IGNoYXIqIEE2NERP
cGNvZGVDb25kaXRpb25hbEJyYW5jaEltbWVkaWF0ZTo6Zm9ybWF0KCkKK3sKKyAgICBidWZmZXJQ
cmludGYoIiAgIGIuJS01LjVzIiwgY29uZGl0aW9uTmFtZShjb25kaXRpb24oKSkpOworICAgIGFw
cGVuZFBDUmVsYXRpdmVPZmZzZXQobV9jdXJyZW50UEMsIHN0YXRpY19jYXN0PGludDMyX3Q+KGlt
bWVkaWF0ZTE5KCkpKTsKKyAgICByZXR1cm4gbV9mb3JtYXRCdWZmZXI7Cit9CisKK2NvbnN0IGNo
YXIqIGNvbnN0IEE2NERPcGNvZGVDb25kaXRpb25hbFNlbGVjdDo6c19vcE5hbWVzWzRdID0gewor
ICAgICJjc2VsIiwgImNzaW5jIiwgImNzaW52IiwgImNzbmVnIgorfTsKKworY29uc3QgY2hhciog
QTY0RE9wY29kZUNvbmRpdGlvbmFsU2VsZWN0Ojpmb3JtYXQoKQoreworICAgIGlmIChzQml0KCkp
CisgICAgICAgIHJldHVybiBBNjRET3Bjb2RlOjpmb3JtYXQoKTsKKworICAgIGlmIChvcDIoKSAm
IDB4MikKKyAgICAgICAgcmV0dXJuIEE2NERPcGNvZGU6OmZvcm1hdCgpOworCisgICAgaWYgKHJu
KCkgPT0gcm0oKSAmJiAob3BOdW0oKSA9PSAxIHx8IG9wTnVtKCkgPT0gMikpCisgICAgeworICAg
ICAgICBpZiAocm4oKSA9PSAzMSkgeworICAgICAgICAgICAgYXBwZW5kSW5zdHJ1Y3Rpb25OYW1l
KChvcE51bSgpID09IDEpID8gImNzZXQiIDogImNzZXRtIik7CisgICAgICAgICAgICBhcHBlbmRS
ZWdpc3Rlck5hbWUocmQoKSwgaXM2NEJpdCgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGFwcGVuZEluc3RydWN0aW9uTmFtZSgob3BOdW0oKSA9PSAxKSA/ICJjaW5jIiA6ICJjaW52
Iik7CisgICAgICAgICAgICBhcHBlbmRSZWdpc3Rlck5hbWUocmQoKSwgaXM2NEJpdCgpKTsKKyAg
ICAgICAgICAgIGFwcGVuZFNlcGFyYXRvcigpOworICAgICAgICAgICAgYXBwZW5kWlJPclJlZ2lz
dGVyTmFtZShybigpLCBpczY0Qml0KCkpOworICAgICAgICB9CisgICAgICAgIGFwcGVuZFNlcGFy
YXRvcigpOworICAgICAgICBhcHBlbmRTdHJpbmcoY29uZGl0aW9uTmFtZShjb25kaXRpb24oKSBe
IDB4MSkpOworCisgICAgICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKKyAgICB9CisKKyAgICBh
cHBlbmRJbnN0cnVjdGlvbk5hbWUob3BOYW1lKCkpOworICAgIGFwcGVuZFJlZ2lzdGVyTmFtZShy
ZCgpLCBpczY0Qml0KCkpOworICAgIGFwcGVuZFNlcGFyYXRvcigpOworICAgIGFwcGVuZFpST3JS
ZWdpc3Rlck5hbWUocm4oKSwgaXM2NEJpdCgpKTsKKyAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAg
ICBhcHBlbmRaUk9yUmVnaXN0ZXJOYW1lKHJtKCksIGlzNjRCaXQoKSk7CisgICAgYXBwZW5kU2Vw
YXJhdG9yKCk7CisgICAgYXBwZW5kU3RyaW5nKGNvbmRpdGlvbk5hbWUoY29uZGl0aW9uKCkpKTsK
KworICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKKworfQorCitjb25zdCBjaGFyKiBjb25zdCBB
NjRET3Bjb2RlRGF0YVByb2Nlc3NpbmcyU291cmNlOjpzX29wTmFtZXNbOF0gPSB7CisgICAgMCwg
MCwgInVkaXYiLCAic2RpdiIsICJsc2wiLCAibHNyIiwgImFzciIsICJyb3IiIC8vIFdlIHVzZSB0
aGUgcHNldWRvLW9wIG5hbWVzIGZvciB0aGUgc2hpZnQvcm90YXRlIGluc3RydWN0aW9ucworfTsK
KworY29uc3QgY2hhciogQTY0RE9wY29kZURhdGFQcm9jZXNzaW5nMlNvdXJjZTo6Zm9ybWF0KCkK
K3sKKyAgICBpZiAoc0JpdCgpKQorICAgICAgICByZXR1cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7
CisKKyAgICBpZiAoIShvcENvZGUoKSAmIDB4M2UpKQorICAgICAgICByZXR1cm4gQTY0RE9wY29k
ZTo6Zm9ybWF0KCk7CisKKyAgICBpZiAob3BDb2RlKCkgJiAweDMwKQorICAgICAgICByZXR1cm4g
QTY0RE9wY29kZTo6Zm9ybWF0KCk7CisKKyAgICBpZiAoKG9wQ29kZSgpICYgMHgzNCkgPT0gMHg0
KQorICAgICAgICByZXR1cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7CisKKyAgICBhcHBlbmRJbnN0
cnVjdGlvbk5hbWUob3BOYW1lKCkpOworICAgIGFwcGVuZFJlZ2lzdGVyTmFtZShyZCgpLCBpczY0
Qml0KCkpOworICAgIGFwcGVuZFNlcGFyYXRvcigpOworICAgIGFwcGVuZFJlZ2lzdGVyTmFtZShy
bigpLCBpczY0Qml0KCkpOworICAgIGFwcGVuZFNlcGFyYXRvcigpOworICAgIGFwcGVuZFJlZ2lz
dGVyTmFtZShybSgpLCBpczY0Qml0KCkpOworCisgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOwor
fQorCitjb25zdCBjaGFyKiBjb25zdCBBNjRET3Bjb2RlRGF0YVByb2Nlc3NpbmczU291cmNlOjpz
X29wTmFtZXNbMTZdID0geworICAgICJtYWRkIiwgIm1zdWIiLCAic21hZGRsIiwgInNtc3VibCIs
ICJzbXVsaCIsIDAsIDAsIDAsCisgICAgMCwgMCwgInVtYWRkbCIsICJ1bXN1YmwiLCAidW11bGgi
LCAwLCAwLCAwCit9OworCitjb25zdCBjaGFyKiBjb25zdCBBNjRET3Bjb2RlRGF0YVByb2Nlc3Np
bmczU291cmNlOjpzX3BzZXVkb09wTmFtZXNbMTZdID0geworICAgICJtdWwiLCAibW5lZyIsICJz
bXVsbCIsICJzbW5lZ2wiLCAic211bGgiLCAwLCAwLCAwLAorICAgIDAsIDAsICJ1bXVsbCIsICJ1
bW5lZ2wiLCAidW11bGgiLCAwLCAwLCAwCit9OworCitjb25zdCBjaGFyKiBBNjRET3Bjb2RlRGF0
YVByb2Nlc3NpbmczU291cmNlOjpmb3JtYXQoKQoreworICAgIGlmIChvcDU0KCkpCisgICAgICAg
IHJldHVybiBBNjRET3Bjb2RlOjpmb3JtYXQoKTsKKworICAgIGlmIChvcE51bSgpID4gMTIpCisg
ICAgICAgIHJldHVybiBBNjRET3Bjb2RlOjpmb3JtYXQoKTsKKworICAgIGlmICghaXM2NEJpdCgp
ICYmIG9wTnVtKCkgPiAxKQorICAgICAgICByZXR1cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7CisK
KyAgICBpZiAoIW9wTmFtZSgpKQorICAgICAgICByZXR1cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7
CisKKyAgICBhcHBlbmRJbnN0cnVjdGlvbk5hbWUob3BOYW1lKCkpOworICAgIGFwcGVuZFJlZ2lz
dGVyTmFtZShyZCgpLCBpczY0Qml0KCkpOworICAgIGFwcGVuZFNlcGFyYXRvcigpOworICAgIGJv
b2wgc3JjT25lQW5kVHdvQXJlNjRCaXQgPSBpczY0Qml0KCkgJiAhKG9wTnVtKCkgJiAweDIpOwor
ICAgIGFwcGVuZFJlZ2lzdGVyTmFtZShybigpLCBzcmNPbmVBbmRUd29BcmU2NEJpdCk7CisgICAg
YXBwZW5kU2VwYXJhdG9yKCk7CisgICAgYXBwZW5kUmVnaXN0ZXJOYW1lKHJtKCksIHNyY09uZUFu
ZFR3b0FyZTY0Qml0KTsKKworICAgIGlmICgocmEoKSAhPSAzMSkgfHwgIShvcE51bSgpICYgMHg0
KSkgeworICAgICAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgYXBwZW5kUmVnaXN0ZXJO
YW1lKHJhKCksIGlzNjRCaXQoKSk7CisgICAgfQorCisgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVy
OworfQorCitjb25zdCBjaGFyKiBBNjRPcGNvZGVFeGNlcHRpb25HZW5lcmF0aW9uOjpmb3JtYXQo
KQoreworICAgIGNvbnN0IGNoYXIqIG9wbmFtZSA9IDA7CisgICAgaWYgKCFvcDIoKSkgeworICAg
ICAgICBzd2l0Y2ggKG9wYygpKSB7CisgICAgICAgIGNhc2UgMHgwOiAvLyBTVkMsIEhWQyAmIFNN
QworICAgICAgICAgICAgc3dpdGNoIChsbCgpKSB7CisgICAgICAgICAgICBjYXNlIDB4MToKKyAg
ICAgICAgICAgICAgICBvcG5hbWUgPSAic3ZjIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgMHgyOgorICAgICAgICAgICAgICAgIG9wbmFtZSA9ICJodmMiOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAweDM6CisgICAgICAgICAgICAg
ICAgb3BuYW1lID0gInNtYyI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAweDE6IC8vIEJSSworICAgICAgICAg
ICAgaWYgKCFsbCgpKQorICAgICAgICAgICAgICAgIG9wbmFtZSA9ICJicmsiOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgMHgyOiAvLyBITFQKKyAgICAgICAgICAgIGlmICghbGwo
KSkKKyAgICAgICAgICAgICAgICBvcG5hbWUgPSAiaGx0IjsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIDB4NTogLy8gRFBDUzEtMworICAgICAgICAgICAgc3dpdGNoIChsbCgpKSB7
CisgICAgICAgICAgICAgICAgY2FzZSAweDE6CisgICAgICAgICAgICAgICAgICAgIG9wbmFtZSA9
ICJkcGNzMSI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgMHgyOgorICAgICAgICAgICAgICAgICAgICBvcG5hbWUgPSAiZHBjczIiOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDB4MzoKKyAgICAgICAgICAg
ICAgICAgICAgb3BuYW1lID0gImRwY3MzIjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGlmICghb3BuYW1lKQorICAgICAgICByZXR1cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7CisKKyAg
ICBhcHBlbmRJbnN0cnVjdGlvbk5hbWUob3BuYW1lKTsKKyAgICBhcHBlbmRVbnNpZ25lZEltbWVk
aWF0ZShpbW1lZGlhdGUxNigpKTsKKyAgICByZXR1cm4gbV9mb3JtYXRCdWZmZXI7Cit9CisKK2Nv
bnN0IGNoYXIqIEE2NERPcGNvZGVFeHRyYWN0Ojpmb3JtYXQoKQoreworICAgIGlmICghb3AyMSgp
IHx8ICFvMEJpdCgpKQorICAgICAgICByZXR1cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7CisKKyAg
ICBpZiAoaXM2NEJpdCgpICE9IG5CaXQoKSkKKyAgICAgICAgcmV0dXJuIEE2NERPcGNvZGU6OmZv
cm1hdCgpOworCisgICAgaWYgKGlzNjRCaXQoKSAmJiAoaW1tZWRpYXRlUygpICYgMHgyMCkpCisg
ICAgICAgIHJldHVybiBBNjRET3Bjb2RlOjpmb3JtYXQoKTsKKworICAgIGNvbnN0IGNoYXIqIG9w
TmFtZSA9IChybigpID09IHJtKCkpID8gInJvciIgOiAiZXh0ciI7CisKKyAgICBhcHBlbmRJbnN0
cnVjdGlvbk5hbWUob3BOYW1lKTsKKyAgICBhcHBlbmRSZWdpc3Rlck5hbWUocmQoKSwgaXM2NEJp
dCgpKTsKKyAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICBhcHBlbmRSZWdpc3Rlck5hbWUocm4o
KSwgaXM2NEJpdCgpKTsKKyAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICBhcHBlbmRSZWdpc3Rl
ck5hbWUocm0oKSwgaXM2NEJpdCgpKTsKKyAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICBhcHBl
bmRVbnNpZ25lZEltbWVkaWF0ZShpbW1lZGlhdGVTKCkpOworCisgICAgcmV0dXJuIG1fZm9ybWF0
QnVmZmVyOworfQorCitjb25zdCBjaGFyKiBBNjRET3Bjb2RlRmxvYXRpbmdQb2ludENvbXBhcmU6
OmZvcm1hdCgpCit7CisgICAgaWYgKG1CaXQoKSkKKyAgICAgICAgcmV0dXJuIEE2NERPcGNvZGU6
OmZvcm1hdCgpOworCisgICAgaWYgKHNCaXQoKSkKKyAgICAgICAgcmV0dXJuIEE2NERPcGNvZGU6
OmZvcm1hdCgpOworCisgICAgaWYgKHR5cGUoKSAmIDB4MikKKyAgICAgICAgcmV0dXJuIEE2NERP
cGNvZGU6OmZvcm1hdCgpOworCisgICAgaWYgKG9wKCkpCisgICAgICAgIHJldHVybiBBNjRET3Bj
b2RlOjpmb3JtYXQoKTsKKworICAgIGlmIChvcENvZGUyKCkgJiAweDcpCisgICAgICAgIHJldHVy
biBBNjRET3Bjb2RlOjpmb3JtYXQoKTsKKworICAgIGFwcGVuZEluc3RydWN0aW9uTmFtZShvcE5h
bWUoKSk7CisgICAgdW5zaWduZWQgcmVnaXN0ZXJTaXplID0gdHlwZSgpICsgMjsKKyAgICBhcHBl
bmRGUFJlZ2lzdGVyTmFtZShybigpLCByZWdpc3RlclNpemUpOworICAgIGFwcGVuZFNlcGFyYXRv
cigpOworICAgIGlmIChvcENvZGUyKCkgJiAweDgpCisgICAgICAgIGJ1ZmZlclByaW50ZigiIzAu
MCIpOworICAgIGVsc2UKKyAgICAgICAgYXBwZW5kRlBSZWdpc3Rlck5hbWUocm0oKSwgcmVnaXN0
ZXJTaXplKTsKKyAgICAKKyAgICByZXR1cm4gbV9mb3JtYXRCdWZmZXI7Cit9CisKK2NvbnN0IGNo
YXIqIGNvbnN0IEE2NERPcGNvZGVGbG9hdGluZ1BvaW50RGF0YVByb2Nlc3NpbmcxU291cmNlOjpz
X29wTmFtZXNbMTZdID0geworICAgICJmbW92IiwgImZhYnMiLCAiZm5lZyIsICJmc3FydCIsICJm
Y3Z0IiwgImZjdnQiLCAwLCAiZmN2dCIsCisgICAgImZyaW50biIsICJmcmludHAiLCAiZnJpbnRt
IiwgImZyaW50eiIsICJmcmludGEiLCAwLCAiZnJpbnR4IiwgImZyaW50aSIKK307CisKK2NvbnN0
IGNoYXIqIEE2NERPcGNvZGVGbG9hdGluZ1BvaW50RGF0YVByb2Nlc3NpbmcxU291cmNlOjpmb3Jt
YXQoKQoreworICAgIGlmIChtQml0KCkpCisgICAgICAgIHJldHVybiBBNjRET3Bjb2RlOjpmb3Jt
YXQoKTsKKworICAgIGlmIChzQml0KCkpCisgICAgICAgIHJldHVybiBBNjRET3Bjb2RlOjpmb3Jt
YXQoKTsKKworICAgIGlmIChvcE51bSgpID4gMTYpCisgICAgICAgIHJldHVybiBBNjRET3Bjb2Rl
Ojpmb3JtYXQoKTsKKworICAgIHN3aXRjaCAodHlwZSgpKSB7CisgICAgY2FzZSAwOgorICAgICAg
ICBpZiAoKG9wTnVtKCkgPT0gMHg0KSB8fCAob3BOdW0oKSA9PSAweDYpIHx8IChvcE51bSgpID09
IDB4ZCkpCisgICAgICAgICAgICByZXR1cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgMToKKyAgICAgICAgaWYgKChvcE51bSgpID09IDB4NSkgfHwgKG9w
TnVtKCkgPT0gMHg2KSB8fCAob3BOdW0oKSA9PSAweGQpKQorICAgICAgICAgICAgcmV0dXJuIEE2
NERPcGNvZGU6OmZvcm1hdCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAg
IHJldHVybiBBNjRET3Bjb2RlOjpmb3JtYXQoKTsKKyAgICBjYXNlIDM6CisgICAgICAgIGlmICgo
b3BOdW0oKSA8IDB4NCkgfHwgKG9wTnVtKCkgPiAweDUpKQorICAgICAgICAgICAgcmV0dXJuIEE2
NERPcGNvZGU6OmZvcm1hdCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBhcHBlbmRJ
bnN0cnVjdGlvbk5hbWUob3BOYW1lKCkpOworICAgIGlmICgob3BOdW0oKSA+PSAweDQpICYmIChv
cE51bSgpIDw9IDB4NykpIHsKKyAgICAgICAgdW5zaWduZWQgc3JjUmVnaXN0ZXJTaXplID0gdHlw
ZSgpIF4gMHgyOyAvLyAwOnMsIDE6ZCAmIDM6aAorICAgICAgICB1bnNpZ25lZCBkZXN0UmVnaXN0
ZXJTaXplID0gKG9wTnVtKCkgJiAweDMpIF4gMHgyOworICAgICAgICBhcHBlbmRGUFJlZ2lzdGVy
TmFtZShyZCgpLCBkZXN0UmVnaXN0ZXJTaXplKTsKKyAgICAgICAgYXBwZW5kU2VwYXJhdG9yKCk7
CisgICAgICAgIGFwcGVuZEZQUmVnaXN0ZXJOYW1lKHJuKCksIHNyY1JlZ2lzdGVyU2l6ZSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgdW5zaWduZWQgcmVnaXN0ZXJTaXplID0gdHlwZSgpICsgMjsK
KyAgICAgICAgYXBwZW5kRlBSZWdpc3Rlck5hbWUocmQoKSwgcmVnaXN0ZXJTaXplKTsKKyAgICAg
ICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgIGFwcGVuZEZQUmVnaXN0ZXJOYW1lKHJuKCks
IHJlZ2lzdGVyU2l6ZSk7CisgICAgfQorCisgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOworfQor
Citjb25zdCBjaGFyKiBjb25zdCBBNjRET3Bjb2RlRmxvYXRpbmdQb2ludERhdGFQcm9jZXNzaW5n
MlNvdXJjZTo6c19vcE5hbWVzWzE2XSA9IHsKKyAgICAiZm11bCIsICJmZGl2IiwgImZhZGQiLCAi
ZnN1YiIsICJmbWF4IiwgImZtaW4iLCAiZm1heG5tIiwgImZtaW5ubSIsICJmbm11bCIKK307CisK
K2NvbnN0IGNoYXIqIEE2NERPcGNvZGVGbG9hdGluZ1BvaW50RGF0YVByb2Nlc3NpbmcyU291cmNl
Ojpmb3JtYXQoKQoreworICAgIGlmIChtQml0KCkpCisgICAgICAgIHJldHVybiBBNjRET3Bjb2Rl
Ojpmb3JtYXQoKTsKKworICAgIGlmIChzQml0KCkpCisgICAgICAgIHJldHVybiBBNjRET3Bjb2Rl
Ojpmb3JtYXQoKTsKKworICAgIGlmICh0eXBlKCkgJiAweDIpCisgICAgICAgIHJldHVybiBBNjRE
T3Bjb2RlOjpmb3JtYXQoKTsKKworICAgIGlmIChvcE51bSgpID4gOCkKKyAgICAgICAgcmV0dXJu
IEE2NERPcGNvZGU6OmZvcm1hdCgpOworCisgICAgYXBwZW5kSW5zdHJ1Y3Rpb25OYW1lKG9wTmFt
ZSgpKTsKKyAgICB1bnNpZ25lZCByZWdpc3RlclNpemUgPSB0eXBlKCkgKyAyOworICAgIGFwcGVu
ZEZQUmVnaXN0ZXJOYW1lKHJkKCksIHJlZ2lzdGVyU2l6ZSk7CisgICAgYXBwZW5kU2VwYXJhdG9y
KCk7CisgICAgYXBwZW5kRlBSZWdpc3Rlck5hbWUocm4oKSwgcmVnaXN0ZXJTaXplKTsKKyAgICBh
cHBlbmRTZXBhcmF0b3IoKTsKKyAgICBhcHBlbmRGUFJlZ2lzdGVyTmFtZShybSgpLCByZWdpc3Rl
clNpemUpOworCisgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOworfQorCitjb25zdCBjaGFyKiBj
b25zdCBBNjRET3Bjb2RlRmxvYXRpbmdGaXhlZFBvaW50Q29udmVyc2lvbnM6OnNfb3BOYW1lc1s0
XSA9IHsKKyAgICAiZmN2dHpzIiwgImZjdnR6dSIsICJzY3Z0ZiIsICJ1Y3Z0ZiIKK307CisKK2Nv
bnN0IGNoYXIqIEE2NERPcGNvZGVGbG9hdGluZ0ZpeGVkUG9pbnRDb252ZXJzaW9uczo6Zm9ybWF0
KCkKK3sKKyAgICBpZiAoc0JpdCgpKQorICAgICAgICByZXR1cm4gQTY0RE9wY29kZTo6Zm9ybWF0
KCk7CisKKyAgICBpZiAodHlwZSgpICYgMHgyKQorICAgICAgICByZXR1cm4gQTY0RE9wY29kZTo6
Zm9ybWF0KCk7CisKKyAgICBpZiAob3Bjb2RlKCkgJiAweDQpCisgICAgICAgIHJldHVybiBBNjRE
T3Bjb2RlOjpmb3JtYXQoKTsKKworICAgIGlmICghKHJtb2RlKCkgJiAweDEpICYmICEob3Bjb2Rl
KCkgJiAweDYpKQorICAgICAgICByZXR1cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7CisKKyAgICBp
ZiAoKHJtb2RlKCkgJiAweDEpICYmIChvcGNvZGUoKSAmIDB4NikgPT0gMHgyKQorICAgICAgICBy
ZXR1cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7CisKKyAgICBpZiAoIShybW9kZSgpICYgMHgyKSAm
JiAhKG9wY29kZSgpICYgMHg2KSkKKyAgICAgICAgcmV0dXJuIEE2NERPcGNvZGU6OmZvcm1hdCgp
OworCisgICAgaWYgKChybW9kZSgpICYgMHgyKSAmJiAob3Bjb2RlKCkgJiAweDYpID09IDB4MikK
KyAgICAgICAgcmV0dXJuIEE2NERPcGNvZGU6OmZvcm1hdCgpOworCisgICAgaWYgKCFpczY0Qml0
KCkgJiYgc2NhbGUoKSA+PSAzMikKKyAgICAgICAgcmV0dXJuIEE2NERPcGNvZGU6OmZvcm1hdCgp
OworCisgICAgYXBwZW5kSW5zdHJ1Y3Rpb25OYW1lKG9wTmFtZSgpKTsKKyAgICB1bnNpZ25lZCBG
UFJlZ2lzdGVyU2l6ZSA9IHR5cGUoKSArIDI7CisgICAgYm9vbCBkZXN0SXNGUCA9ICFybW9kZSgp
OworICAgIAorICAgIGlmIChkZXN0SXNGUCkgeworICAgICAgICBhcHBlbmRGUFJlZ2lzdGVyTmFt
ZShyZCgpLCBGUFJlZ2lzdGVyU2l6ZSk7CisgICAgICAgIGFwcGVuZFNlcGFyYXRvcigpOworICAg
ICAgICBhcHBlbmRSZWdpc3Rlck5hbWUocm4oKSwgaXM2NEJpdCgpKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBhcHBlbmRSZWdpc3Rlck5hbWUocmQoKSwgaXM2NEJpdCgpKTsKKyAgICAgICAgYXBw
ZW5kU2VwYXJhdG9yKCk7CisgICAgICAgIGFwcGVuZEZQUmVnaXN0ZXJOYW1lKHJuKCksIEZQUmVn
aXN0ZXJTaXplKTsKKyAgICB9CisgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgYXBwZW5kVW5z
aWduZWRJbW1lZGlhdGUoNjQgLSBzY2FsZSgpKTsKKyAgICAKKyAgICByZXR1cm4gbV9mb3JtYXRC
dWZmZXI7Cit9CisKK2NvbnN0IGNoYXIqIGNvbnN0IEE2NERPcGNvZGVGbG9hdGluZ1BvaW50SW50
ZWdlckNvbnZlcnNpb25zOjpzX29wTmFtZXNbMzJdID0geworICAgICJmY3Z0bnMiLCAiZmN2dG51
IiwgInNjdnRmIiwgInVjdnRmIiwgImZjdnRhcyIsICJmY3Z0YXUiLCAiZm1vdiIsICJmbW92IiwK
KyAgICAiZmN2dHBzIiwgImZjdnRwdSIsIDAsIDAsIDAsIDAsICJmbW92IiwgImZtb3YiLAorICAg
ICJmY3Z0bXMiLCAiZmN2dG11IiwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAiZmN2dHpzIiwgImZj
dnR6dSIsIDAsIDAsIDAsIDAsIDAsIDAKK307CisKK2NvbnN0IGNoYXIqIEE2NERPcGNvZGVGbG9h
dGluZ1BvaW50SW50ZWdlckNvbnZlcnNpb25zOjpmb3JtYXQoKQoreworICAgIGlmIChzQml0KCkp
CisgICAgICAgIHJldHVybiBBNjRET3Bjb2RlOjpmb3JtYXQoKTsKKworICAgIGlmICh0eXBlKCkg
PT0gMHgzKQorICAgICAgICByZXR1cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7CisKKyAgICBpZiAo
KChybW9kZSgpICYgMHgxKSB8fCAocm1vZGUoKSAmIDB4MikpICYmICgoKG9wY29kZSgpICYgMHg2
KSA9PSAweDIpfHwgKChvcGNvZGUoKSAmIDB4NikgPT0gMHg0KSkpCisgICAgICAgIHJldHVybiBB
NjRET3Bjb2RlOjpmb3JtYXQoKTsKKworICAgIGlmICgodHlwZSgpID09IDB4MikgJiYgKCEob3Bj
b2RlKCkgJiAweDQpIHx8ICgob3Bjb2RlKCkgJiAweDYpID09IDB4NCkpKQorICAgICAgICByZXR1
cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7CisKKyAgICBpZiAoIXR5cGUoKSAmJiAocm1vZGUoKSAm
IDB4MSkgJiYgKChvcGNvZGUoKSAmIDB4NikgPT0gMHg2KSkKKyAgICAgICAgcmV0dXJuIEE2NERP
cGNvZGU6OmZvcm1hdCgpOworCisgICAgaWYgKGlzNjRCaXQoKSAmJiB0eXBlKCkgPT0gMHgyICYm
ICgob3BOdW0oKSAmIDB4ZSkgPT0gMHg2KSkKKyAgICAgICAgcmV0dXJuIEE2NERPcGNvZGU6OmZv
cm1hdCgpOworCisgICAgaWYgKCFvcE5hbWUoKSkKKyAgICAgICAgcmV0dXJuIEE2NERPcGNvZGU6
OmZvcm1hdCgpOworCisgICAgaWYgKChvcE51bSgpICYgMHgxZSkgPT0gMHhlKSB7CisgICAgICAg
IC8vIEhhbmRsZSBmbW92IHRvL2Zyb20gdXBwZXIgaGFsZiBvZiBxdWFkIHNlcGFyYXRlbHkKKyAg
ICAgICAgaWYgKCFpczY0Qml0KCkgfHwgKHR5cGUoKSAhPSAweDIpKQorICAgICAgICAgICAgcmV0
dXJuIEE2NERPcGNvZGU6OmZvcm1hdCgpOworCisgICAgICAgIGFwcGVuZEluc3RydWN0aW9uTmFt
ZShvcE5hbWUoKSk7CisgICAgICAgIGlmIChvcGNvZGUoKSAmIDB4MSkgeworICAgICAgICAgICAg
Ly8gZm1vdiBWZC5EWzFdLCBYbgorICAgICAgICAgICAgYnVmZmVyUHJpbnRmKCJWJXUuRFsxXSIs
IHJkKCkpOworICAgICAgICAgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgICAgICBhcHBl
bmRSZWdpc3Rlck5hbWUocm4oKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBm
bW92IFhkLCBWbi5EWzFdCisgICAgICAgICAgICBhcHBlbmRSZWdpc3Rlck5hbWUocmQoKSk7Cisg
ICAgICAgICAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgICAgIGJ1ZmZlclByaW50Zigi
ViV1LkRbMV0iLCBybigpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBtX2Zvcm1hdEJ1
ZmZlcjsKKyAgICB9CisKKyAgICBhcHBlbmRJbnN0cnVjdGlvbk5hbWUob3BOYW1lKCkpOworICAg
IHVuc2lnbmVkIEZQUmVnaXN0ZXJTaXplID0gdHlwZSgpICsgMjsKKyAgICBib29sIGRlc3RJc0ZQ
ID0gKChvcE51bSgpID09IDIpIHx8IChvcE51bSgpID09IDMpIHx8IChvcE51bSgpID09IDcpKTsK
KworICAgIGlmIChkZXN0SXNGUCkgeworICAgICAgICBhcHBlbmRGUFJlZ2lzdGVyTmFtZShyZCgp
LCBGUFJlZ2lzdGVyU2l6ZSk7CisgICAgICAgIGFwcGVuZFNlcGFyYXRvcigpOworICAgICAgICBh
cHBlbmRSZWdpc3Rlck5hbWUocm4oKSwgaXM2NEJpdCgpKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBhcHBlbmRSZWdpc3Rlck5hbWUocmQoKSwgaXM2NEJpdCgpKTsKKyAgICAgICAgYXBwZW5kU2Vw
YXJhdG9yKCk7CisgICAgICAgIGFwcGVuZEZQUmVnaXN0ZXJOYW1lKHJuKCksIEZQUmVnaXN0ZXJT
aXplKTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9mb3JtYXRCdWZmZXI7Cit9CisKK2NvbnN0IGNo
YXIqIGNvbnN0IEE2NERPcGNvZGVIaW50OjpzX29wTmFtZXNbNl0gPSB7CisgICAgIm5vcCIsICJ5
aWVsZCIsICJ3ZmUiLCAid2ZpIiwgInNldiIsICJzZXZsIgorfTsKKworY29uc3QgY2hhciogQTY0
RE9wY29kZUhpbnQ6OmZvcm1hdCgpCit7CisgICAgYXBwZW5kSW5zdHJ1Y3Rpb25OYW1lKG9wTmFt
ZSgpKTsKKworICAgIGlmIChpbW1lZGlhdGU3KCkgPiA1KQorICAgICAgICBhcHBlbmRVbnNpZ25l
ZEltbWVkaWF0ZShpbW1lZGlhdGU3KCkpOworCisgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOwor
fQorCisvLyBBIHplcm8gaW4gYW4gZW50cnkgb2YgdGhlIHRhYmxlIG1lYW5zIHRoZSBpbnN0cnVj
dGlvbiBpcyBVbmFsbG9jYXRlZAorY29uc3QgY2hhciogY29uc3QgQTY0RE9wY29kZUxvYWRTdG9y
ZTo6c19vcE5hbWVzWzMyXSA9IHsKKyAgICAic3RyYiIsICJsZHJiIiwgImxkcnNiIiwgImxkcnNi
IiwgInN0ciIsICJsZHIiLCAic3RyIiwgImxkciIsCisgICAgInN0cmgiLCAibGRyaCIsICJsZHJz
aCIsICJsZHJzaCIsICJzdHIiLCAibGRyIiwgMCwgMCwKKyAgICAic3RyIiwgImxkciIsICJsZHJz
dyIsIDAsICJzdHIiLCAibGRyIiwgMCwgMCwKKyAgICAic3RyIiwgImxkciIsIDAsIDAsICJzdHIi
LCAibGRyIiwgMCwgMAorfTsKKworLy8gQSB6ZXJvIGluIGFuIGVudHJ5IG9mIHRoZSB0YWJsZSBt
ZWFucyB0aGUgaW5zdHJ1Y3Rpb24gaXMgVW5hbGxvY2F0ZWQKK2NvbnN0IGNoYXIqIGNvbnN0IEE2
NERPcGNvZGVMb2FkU3RvcmVJbW1lZGlhdGU6OnNfdW5wcml2aWxlZ2VkT3BOYW1lc1szMl0gPSB7
CisgICAgInN0dHJiIiwgImxkdHJiIiwgImxkdHJzYiIsICJsZHRyc2IiLCAwLCAwLCAwLCAwLAor
ICAgICJzdHRyaCIsICJsZHRyaCIsICJsZHRyc2giLCAibGR0cnNoIiwgMCwgMCwgMCwgMCwKKyAg
ICAic3R0ciIsICJsZHRyIiwgImxkdHJzdyIsIDAsIDAsIDAsIDAsIDAsCisgICAgInN0dHIiLCAi
bGR0ciIsIDAsIDAsIDAsIDAsIDAsIDAKK307CisKKy8vIEEgemVybyBpbiBhbiBlbnRyeSBvZiB0
aGUgdGFibGUgbWVhbnMgdGhlIGluc3RydWN0aW9uIGlzIFVuYWxsb2NhdGVkCitjb25zdCBjaGFy
KiBjb25zdCBBNjRET3Bjb2RlTG9hZFN0b3JlSW1tZWRpYXRlOjpzX3Vuc2NhbGVkT3BOYW1lc1sz
Ml0gPSB7CisgICAgInN0dXJiIiwgImxkdXJiIiwgImxkdXJzYiIsICJsZHVyc2IiLCAic3R1ciIs
ICJsZHVyIiwgInN0dXIiLCAibGR1ciIsCisgICAgInN0dXJoIiwgImxkdXJoIiwgImxkdXJzaCIs
ICJsZHVyc2giLCAic3R1ciIsICJsZHVyIiwgMCwgMCwKKyAgICAic3R1ciIsICJsZHVyIiwgImxk
dXJzdyIsIDAsICJzdHVyIiwgImxkdXIiLCAwLCAwLAorICAgICJzdHVyIiwgImxkdXIiLCAicHJm
dW0iLCAwLCAic3R1ciIsICJsZHVyIiwgMCwgMAorfTsKKworY29uc3QgY2hhciogQTY0RE9wY29k
ZUxvYWRTdG9yZUltbWVkaWF0ZTo6Zm9ybWF0KCkKK3sKKyAgICBjb25zdCBjaGFyKiB0aGlzT3BO
YW1lOworCisgICAgaWYgKHR5cGUoKSAmIDB4MSkKKyAgICAgICAgdGhpc09wTmFtZSA9IG9wTmFt
ZSgpOworICAgIGVsc2UgaWYgKCF0eXBlKCkpCisgICAgICAgIHRoaXNPcE5hbWUgPSB1bnNjYWxl
ZE9wTmFtZSgpOworICAgIGVsc2UKKyAgICAgICAgdGhpc09wTmFtZSA9IHVucHJpdmlsZWdlZE9w
TmFtZSgpOworCisgICAgaWYgKCF0aGlzT3BOYW1lKQorICAgICAgICByZXR1cm4gQTY0RE9wY29k
ZTo6Zm9ybWF0KCk7CisKKyAgICBhcHBlbmRJbnN0cnVjdGlvbk5hbWUodGhpc09wTmFtZSk7Cisg
ICAgaWYgKHZCaXQoKSkKKyAgICAgICAgYXBwZW5kRlBSZWdpc3Rlck5hbWUocnQoKSwgc2l6ZSgp
KTsKKyAgICBlbHNlCisgICAgICAgIGFwcGVuZFJlZ2lzdGVyTmFtZShydCgpLCBpczY0Qml0UlQo
KSk7CisgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgYXBwZW5kQ2hhcmFjdGVyKCdbJyk7Cisg
ICAgYXBwZW5kU1BPclJlZ2lzdGVyTmFtZShybigpKTsKKworICAgIHN3aXRjaCh0eXBlKCkpIHsK
KyAgICBjYXNlIDA6IC8vIFVuc2NhbGVkIEltbWVkaWF0ZQorICAgICAgICBpZiAoaW1tZWRpYXRl
OSgpKSB7CisgICAgICAgICAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgICAgIGFwcGVu
ZFNpZ25lZEltbWVkaWF0ZShpbW1lZGlhdGU5KCkpOworICAgICAgICB9CisgICAgICAgIGFwcGVu
ZENoYXJhY3RlcignXScpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDE6IC8vIEltbWVkaWF0
ZSBQb3N0LUluZGV4ZWQKKyAgICAgICAgYXBwZW5kQ2hhcmFjdGVyKCddJyk7CisgICAgICAgIGlm
IChpbW1lZGlhdGU5KCkpIHsKKyAgICAgICAgICAgIGFwcGVuZFNlcGFyYXRvcigpOworICAgICAg
ICAgICAgYXBwZW5kU2lnbmVkSW1tZWRpYXRlKGltbWVkaWF0ZTkoKSk7CisgICAgICAgIH0KKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSAyOiAvLyBVbnByaXZpbGVnZWQKKyAgICAgICAgaWYgKGlt
bWVkaWF0ZTkoKSkgeworICAgICAgICAgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgICAg
ICBhcHBlbmRTaWduZWRJbW1lZGlhdGUoaW1tZWRpYXRlOSgpKTsKKyAgICAgICAgfQorICAgICAg
ICBhcHBlbmRDaGFyYWN0ZXIoJ10nKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAzOiAvLyBJ
bW1lZGlhdGUgUHJlLUluZGV4ZWQKKyAgICAgICAgaWYgKGltbWVkaWF0ZTkoKSkgeworICAgICAg
ICAgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgICAgICBhcHBlbmRTaWduZWRJbW1lZGlh
dGUoaW1tZWRpYXRlOSgpKTsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmRDaGFyYWN0ZXIoJ10n
KTsKKyAgICAgICAgYXBwZW5kQ2hhcmFjdGVyKCchJyk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKK30KKworY29uc3QgY2hhciogQTY0RE9wY29k
ZUxvYWRTdG9yZVJlZ2lzdGVyT2Zmc2V0Ojpmb3JtYXQoKQoreworICAgIGNvbnN0IGNoYXIqIHRo
aXNPcE5hbWUgPSBvcE5hbWUoKTsKKworICAgIGlmICghdGhpc09wTmFtZSkKKyAgICAgICAgcmV0
dXJuIEE2NERPcGNvZGU6OmZvcm1hdCgpOworCisgICAgaWYgKCEob3B0aW9uKCkgJiAweDIpKQor
ICAgICAgICByZXR1cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7CisKKyAgICBhcHBlbmRJbnN0cnVj
dGlvbk5hbWUodGhpc09wTmFtZSk7CisgICAgdW5zaWduZWQgc2NhbGU7CisgICAgaWYgKHZCaXQo
KSkgeworICAgICAgICBhcHBlbmRGUFJlZ2lzdGVyTmFtZShydCgpLCBzaXplKCkpOworICAgICAg
ICBzY2FsZSA9ICgob3BjKCkgJiAyKTw8MSkgfCBzaXplKCk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgYXBwZW5kUmVnaXN0ZXJOYW1lKHJ0KCksIGlzNjRCaXRSVCgpKTsKKyAgICAgICAgc2NhbGUg
PSBzaXplKCk7CisgICAgfQorICAgIGFwcGVuZFNlcGFyYXRvcigpOworICAgIGFwcGVuZENoYXJh
Y3RlcignWycpOworICAgIGFwcGVuZFNQT3JSZWdpc3Rlck5hbWUocm4oKSk7CisgICAgYXBwZW5k
U2VwYXJhdG9yKCk7CisgICAgYXBwZW5kWlJPclJlZ2lzdGVyTmFtZShybSgpLCAob3B0aW9uKCkg
JiAweDMpID09IDB4Myk7CisKKyAgICB1bnNpZ25lZCBzaGlmdCA9IHNCaXQoKSA/IHNjYWxlIDog
MDsKKworICAgIGlmIChvcHRpb24oKSA9PSAweDMpIHsKKyAgICAgICAgaWYgKHNoaWZ0KSB7Cisg
ICAgICAgICAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgICAgIGFwcGVuZFN0cmluZygi
bHNsICIpOworICAgICAgICAgICAgYXBwZW5kVW5zaWduZWRJbW1lZGlhdGUoc2hpZnQpOworICAg
ICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAg
IGFwcGVuZFN0cmluZyhvcHRpb25OYW1lKCkpOworICAgICAgICBpZiAoc2hpZnQpCisgICAgICAg
ICAgICBhcHBlbmRVbnNpZ25lZEltbWVkaWF0ZShzaGlmdCk7CisgICAgfQorCisgICAgYXBwZW5k
Q2hhcmFjdGVyKCddJyk7CisKKyAgICByZXR1cm4gbV9mb3JtYXRCdWZmZXI7Cit9CisKK2NvbnN0
IGNoYXIqIEE2NERPcGNvZGVMb2FkU3RvcmVVbnNpZ25lZEltbWVkaWF0ZTo6Zm9ybWF0KCkKK3sK
KyAgICBjb25zdCBjaGFyKiB0aGlzT3BOYW1lID0gb3BOYW1lKCk7CisKKyAgICBpZiAoIXRoaXNP
cE5hbWUpCisgICAgICAgIHJldHVybiBBNjRET3Bjb2RlOjpmb3JtYXQoKTsKKworICAgIGFwcGVu
ZEluc3RydWN0aW9uTmFtZSh0aGlzT3BOYW1lKTsKKyAgICB1bnNpZ25lZCBzY2FsZTsKKyAgICBp
ZiAodkJpdCgpKSB7CisgICAgICAgIGFwcGVuZEZQUmVnaXN0ZXJOYW1lKHJ0KCksIHNpemUoKSk7
CisgICAgICAgIHNjYWxlID0gKChvcGMoKSAmIDIpPDwxKSB8IHNpemUoKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBhcHBlbmRSZWdpc3Rlck5hbWUocnQoKSwgaXM2NEJpdFJUKCkpOworICAgICAg
ICBzY2FsZSA9IHNpemUoKTsKKyAgICB9CisgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgYXBw
ZW5kQ2hhcmFjdGVyKCdbJyk7CisgICAgYXBwZW5kU1BPclJlZ2lzdGVyTmFtZShybigpKTsKKwor
ICAgIGlmIChpbW1lZGlhdGUxMigpKSB7CisgICAgICAgIGFwcGVuZFNlcGFyYXRvcigpOworICAg
ICAgICBhcHBlbmRVbnNpZ25lZEltbWVkaWF0ZShpbW1lZGlhdGUxMigpIDw8IHNjYWxlKTsKKyAg
ICB9CisKKyAgICBhcHBlbmRDaGFyYWN0ZXIoJ10nKTsKKworICAgIHJldHVybiBtX2Zvcm1hdEJ1
ZmZlcjsKK30KKworLy8gQSB6ZXJvIGluIGFuIGVudHJ5IG9mIHRoZSB0YWJsZSBtZWFucyB0aGUg
aW5zdHJ1Y3Rpb24gaXMgVW5hbGxvY2F0ZWQKK2NvbnN0IGNoYXIqIGNvbnN0IEE2NERPcGNvZGVM
b2dpY2FsOjpzX29wTmFtZXNbOF0gPSB7CisgICAgImFuZCIsICJiaWMiLCAib3JyIiwgIm9ybiIs
ICJlb3IiLCAiZW9uIiwgImFuZHMiLCAiYmljcyIKK307CisKK2NvbnN0IGNoYXIqIEE2NERPcGNv
ZGVMb2dpY2FsU2hpZnRlZFJlZ2lzdGVyOjpmb3JtYXQoKQoreworICAgIGlmICghaXM2NEJpdCgp
ICYmIGltbWVkaWF0ZTYoKSAmIDB4MjApCisgICAgICAgIHJldHVybiBBNjRET3Bjb2RlOjpmb3Jt
YXQoKTsKKworICAgIGlmIChpc1RzdCgpKQorICAgICAgICBhcHBlbmRJbnN0cnVjdGlvbk5hbWUo
InRzdCIpOworICAgIGVsc2UgeworICAgICAgICBpZiAoaXNNb3YoKSkKKyAgICAgICAgICAgIGFw
cGVuZEluc3RydWN0aW9uTmFtZSgibW92Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFw
cGVuZEluc3RydWN0aW9uTmFtZShvcE5hbWUob3BOdW1iZXIoKSkpOworICAgICAgICBhcHBlbmRT
UE9yUmVnaXN0ZXJOYW1lKHJkKCksIGlzNjRCaXQoKSk7CisgICAgICAgIGFwcGVuZFNlcGFyYXRv
cigpOworICAgIH0KKworICAgIGlmICghaXNNb3YoKSkgeworICAgICAgICBhcHBlbmRSZWdpc3Rl
ck5hbWUocm4oKSwgaXM2NEJpdCgpKTsKKyAgICAgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAg
fQorCisgICAgYXBwZW5kWlJPclJlZ2lzdGVyTmFtZShybSgpLCBpczY0Qml0KCkpOworICAgIGlm
IChpbW1lZGlhdGU2KCkpIHsKKyAgICAgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgIGFw
cGVuZFNoaWZ0VHlwZShzaGlmdCgpKTsKKyAgICAgICAgYXBwZW5kVW5zaWduZWRJbW1lZGlhdGUo
aW1tZWRpYXRlNigpKTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9mb3JtYXRCdWZmZXI7Cit9CisK
K3N0YXRpYyB1bnNpZ25lZCBoaWdoZXN0Qml0U2V0KHVuc2lnbmVkIHZhbHVlKQoreworICAgIHVu
c2lnbmVkIHJlc3VsdCA9IDA7CisKKyAgICB3aGlsZSAodmFsdWUgPj49IDEpCisgICAgICAgIHJl
c3VsdCsrOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHVpbnQ2NF90IHJvdGF0
ZVJpZ2h0KHVpbnQ2NF90IHZhbHVlLCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgc2hpZnQpCit7
CisgICAgdWludDY0X3QgcmVzdWx0ID0gdmFsdWU7CisKKyAgICBpZiAoc2hpZnQpCisgICAgICAg
IHJlc3VsdCA9ICh2YWx1ZSA+PiAoc2hpZnQgJSB3aWR0aCkpIHwgKHZhbHVlIDw8ICh3aWR0aCAt
IHNoaWZ0KSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdWludDY0X3QgcmVw
bGljYXRlKHVpbnQ2NF90IHZhbHVlLCB1bnNpZ25lZCB3aWR0aCkKK3sKKyAgICB1aW50NjRfdCBy
ZXN1bHQgPSAwOworCisgICAgZm9yICh1bnNpZ25lZCB0b3RhbEJpdHMgPSAwOyB0b3RhbEJpdHMg
PCA2NDsgdG90YWxCaXRzICs9IHdpZHRoKQorICAgICAgICByZXN1bHQgPSAocmVzdWx0IDw8IHdp
ZHRoKSB8IHZhbHVlOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworY29uc3QgY2hhciogQTY0
RE9wY29kZUxvZ2ljYWxJbW1lZGlhdGU6OmZvcm1hdCgpCit7CisgICAgaWYgKCFpczY0Qml0KCkg
JiYgbkJpdCgpKQorICAgICAgICByZXR1cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7CisKKyAgICB1
bnNpZ25lZCBsZW4gPSBoaWdoZXN0Qml0U2V0KG5CaXQoKSA8PCA2IHwgKGltbWVkaWF0ZVMoKSBe
IDB4M2YpKTsKKyAgICB1bnNpZ25lZCBsZXZlbHMgPSAoMSA8PCBsZW4pIC0gMTsgLy8gbGVuIG51
bWJlciBvZiAxIGJpdHMgc3RhcnRpbmcgYXQgTFNCCisKKyAgICBpZiAoKGltbWVkaWF0ZVMoKSAm
IGxldmVscykgPT0gbGV2ZWxzKQorICAgICAgICByZXR1cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7
CisKKyAgICB1bnNpZ25lZCByID0gaW1tZWRpYXRlUigpICYgbGV2ZWxzOworICAgIHVuc2lnbmVk
IHMgPSBpbW1lZGlhdGVTKCkgJiBsZXZlbHM7CisgICAgdW5zaWduZWQgZVNpemUgPSAxIDw8IGxl
bjsKKyAgICB1aW50NjRfdCBwYXR0ZXJuID0gcm90YXRlUmlnaHQoKDF1bGwgPDwgKHMgKyAxKSkg
LSAxLCBlU2l6ZSwgcik7CisKKyAgICB1aW50NjRfdCBpbW1lZGlhdGUgPSByZXBsaWNhdGUocGF0
dGVybiwgZVNpemUpOworCisgICAgaWYgKCFpczY0Qml0KCkpCisgICAgICAgIGltbWVkaWF0ZSAm
PSAweGZmZmZmZmZmdWxsOworCisgICAgaWYgKGlzVHN0KCkpCisgICAgICAgIGFwcGVuZEluc3Ry
dWN0aW9uTmFtZSgidHN0Iik7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChpc01vdigpKQorICAg
ICAgICAgICAgYXBwZW5kSW5zdHJ1Y3Rpb25OYW1lKCJtb3YiKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgYXBwZW5kSW5zdHJ1Y3Rpb25OYW1lKG9wTmFtZShvcE51bWJlcigpKSk7CisgICAg
ICAgIGFwcGVuZFJlZ2lzdGVyTmFtZShyZCgpLCBpczY0Qml0KCkpOworICAgICAgICBhcHBlbmRT
ZXBhcmF0b3IoKTsKKyAgICB9CisgICAgaWYgKCFpc01vdigpKSB7CisgICAgICAgIGFwcGVuZFJl
Z2lzdGVyTmFtZShybigpLCBpczY0Qml0KCkpOworICAgICAgICBhcHBlbmRTZXBhcmF0b3IoKTsK
KyAgICB9CisgICAgYXBwZW5kVW5zaWduZWRJbW1lZGlhdGU2NChpbW1lZGlhdGUpOworCisgICAg
cmV0dXJuIG1fZm9ybWF0QnVmZmVyOworfQorCitjb25zdCBjaGFyKiBjb25zdCBBNjRET3Bjb2Rl
TW92ZVdpZGU6OnNfb3BOYW1lc1s0XSA9IHsgIm1vdm4iLCAiIiwgIm1vdnoiLCAibW92ayIgfTsK
KworY29uc3QgY2hhciogQTY0RE9wY29kZU1vdmVXaWRlOjpmb3JtYXQoKQoreworICAgIGlmIChv
cGMoKSA9PSAxKQorICAgICAgICByZXR1cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7CisgICAgaWYg
KCFzaXplKCkgJiYgaHcoKSA+PSAyKQorICAgICAgICByZXR1cm4gQTY0RE9wY29kZTo6Zm9ybWF0
KCk7CisKKyAgICBhcHBlbmRJbnN0cnVjdGlvbk5hbWUob3BOYW1lKCkpOworICAgIGFwcGVuZFJl
Z2lzdGVyTmFtZShyZCgpLCBpczY0Qml0KCkpOworICAgIGFwcGVuZFNlcGFyYXRvcigpOworICAg
IGFwcGVuZFVuc2lnbmVkSW1tZWRpYXRlKGltbWVkaWF0ZTE2KCkpOworICAgIGlmIChodygpKSB7
CisgICAgICAgIGFwcGVuZFNlcGFyYXRvcigpOworICAgICAgICBhcHBlbmRTaGlmdEFtb3VudCho
dygpKTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9mb3JtYXRCdWZmZXI7Cit9CisKK2NvbnN0IGNo
YXIqIEE2NERPcGNvZGVUZXN0QW5kQnJhbmNoSW1tZWRpYXRlOjpmb3JtYXQoKQoreworICAgIGFw
cGVuZEluc3RydWN0aW9uTmFtZShvcEJpdCgpID8gInRibnoiIDogInRieiIpOworICAgIGFwcGVu
ZFJlZ2lzdGVyTmFtZShydCgpKTsKKyAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICBhcHBlbmRV
bnNpZ25lZEltbWVkaWF0ZShiaXROdW1iZXIoKSk7CisgICAgYXBwZW5kU2VwYXJhdG9yKCk7Cisg
ICAgYXBwZW5kUENSZWxhdGl2ZU9mZnNldChtX2N1cnJlbnRQQywgc3RhdGljX2Nhc3Q8aW50MzJf
dD4oaW1tZWRpYXRlMTQoKSkpOworICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKK30KKworY29u
c3QgY2hhciogQTY0RE9wY29kZVVuY29uZGl0aW9uYWxCcmFuY2hJbW1lZGlhdGU6OmZvcm1hdCgp
Cit7CisgICAgYXBwZW5kSW5zdHJ1Y3Rpb25OYW1lKG9wKCkgPyAiYmwiIDogImIiKTsKKyAgICBh
cHBlbmRQQ1JlbGF0aXZlT2Zmc2V0KG1fY3VycmVudFBDLCBzdGF0aWNfY2FzdDxpbnQzMl90Pihp
bW1lZGlhdGUyNigpKSk7CisgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOworfQorCitjb25zdCBj
aGFyKiBjb25zdCBBNjRET3Bjb2RlVW5jb25kaXRpb25hbEJyYW5jaFJlZ2lzdGVyOjpzX29wTmFt
ZXNbOF0gPSB7ICJiciIsICJibHIiLCAicmV0IiwgIiIsICJlcmV0IiwgImRycHMiLCAiIiwgIiIg
fTsKKworY29uc3QgY2hhciogQTY0RE9wY29kZVVuY29uZGl0aW9uYWxCcmFuY2hSZWdpc3Rlcjo6
Zm9ybWF0KCkKK3sKKyAgICB1bnNpZ25lZCBvcGNWYWx1ZSA9IG9wYygpOworICAgIGlmIChvcGNW
YWx1ZSA9PSAzIHx8IG9wY1ZhbHVlID4gNSkKKyAgICAgICAgcmV0dXJuIEE2NERPcGNvZGU6OmZv
cm1hdCgpOworICAgIGlmICgoKG9wY1ZhbHVlICYgMHhlKSA9PSAweDQpICYmIHJuKCkgIT0gMHgx
ZikKKyAgICAgICAgcmV0dXJuIEE2NERPcGNvZGU6OmZvcm1hdCgpOworICAgIGFwcGVuZEluc3Ry
dWN0aW9uTmFtZShvcE5hbWUoKSk7CisgICAgaWYgKG9wY1ZhbHVlIDw9IDIpCisgICAgICAgIGFw
cGVuZFJlZ2lzdGVyTmFtZShybigpKTsKKyAgICByZXR1cm4gbV9mb3JtYXRCdWZmZXI7Cit9CisK
K30gfSAvLyBuYW1lc3BhY2UgSlNDOjpBUk02NERpc2Fzc2VtYmxlcgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDE4ZDMwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmgKQEAg
LTAsMCArMSw2OTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEE2NERPcGNvZGVfaAorI2RlZmluZSBBNjRET3Bjb2RlX2gKKworI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK25hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgQVJNNjREaXNhc3NlbWJsZXIgeworCitjbGFzcyBBNjRET3Bjb2RlIHsK
K3ByaXZhdGU6CisgICAgY2xhc3MgT3Bjb2RlR3JvdXAgeworICAgIHB1YmxpYzoKKyAgICAgICAg
T3Bjb2RlR3JvdXAodWludDMyX3Qgb3Bjb2RlTWFzaywgdWludDMyX3Qgb3Bjb2RlUGF0dGVybiwg
Y29uc3QgY2hhciogKCpmb3JtYXQpKEE2NERPcGNvZGUqKSkKKyAgICAgICAgICAgIDogbV9vcGNv
ZGVNYXNrKG9wY29kZU1hc2spCisgICAgICAgICAgICAsIG1fb3Bjb2RlUGF0dGVybihvcGNvZGVQ
YXR0ZXJuKQorICAgICAgICAgICAgLCBtX2Zvcm1hdChmb3JtYXQpCisgICAgICAgICAgICAsIG1f
bmV4dCgwKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHNldE5leHQoT3Bj
b2RlR3JvdXAqIG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbmV4dCA9IG5leHQ7Cisg
ICAgICAgIH0KKworICAgICAgICBPcGNvZGVHcm91cCogbmV4dCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBtX25leHQ7CisgICAgICAgIH0KKworICAgICAgICBib29sIG1hdGNoZXMo
dWludDMyX3Qgb3Bjb2RlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gKG9wY29kZSAm
IG1fb3Bjb2RlTWFzaykgPT0gbV9vcGNvZGVQYXR0ZXJuOworICAgICAgICB9CisKKyAgICAgICAg
Y29uc3QgY2hhciogZm9ybWF0KEE2NERPcGNvZGUqIHRoaXNPYmopCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBtX2Zvcm1hdCh0aGlzT2JqKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0
ZToKKyAgICAgICAgdWludDMyX3QgbV9vcGNvZGVNYXNrOworICAgICAgICB1aW50MzJfdCBtX29w
Y29kZVBhdHRlcm47CisgICAgICAgIGNvbnN0IGNoYXIqICgqbV9mb3JtYXQpKEE2NERPcGNvZGUq
KTsKKyAgICAgICAgT3Bjb2RlR3JvdXAqIG1fbmV4dDsKKyAgICB9OworCitwdWJsaWM6CisgICAg
c3RhdGljIHZvaWQgaW5pdCgpOworCisgICAgQTY0RE9wY29kZSgpCisgICAgICAgIDogbV9vcGNv
ZGUoMCkKKyAgICAgICAgLCBtX2J1ZmZlck9mZnNldCgwKQorICAgIHsKKyAgICAgICAgaW5pdCgp
OworICAgICAgICBtX2Zvcm1hdEJ1ZmZlclswXSA9ICdcMCc7CisgICAgfQorCisgICAgY29uc3Qg
Y2hhciogZGlzYXNzZW1ibGUodWludDMyX3QqIGN1cnJlbnRQQyk7CisKK3Byb3RlY3RlZDoKKyAg
ICB2b2lkIHNldFBDQW5kT3Bjb2RlKHVpbnQzMl90KiwgdWludDMyX3QpOworICAgIGNvbnN0IGNo
YXIqIGZvcm1hdCgpOworCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfY29uZGl0aW9u
TmFtZXNbMTZdOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX3NoaWZ0TmFtZXNbNF07
CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfb3B0aW9uTmFtZVs4XTsKKyAgICBzdGF0
aWMgY29uc3QgY2hhciBzX0ZQUmVnaXN0ZXJQcmVmaXhbNV07CisKKyAgICBzdGF0aWMgY29uc3Qg
Y2hhciogY29uZGl0aW9uTmFtZSh1bnNpZ25lZCBjb25kaXRpb24pIHsgcmV0dXJuIHNfY29uZGl0
aW9uTmFtZXNbY29uZGl0aW9uICYgMHhmXTsgfQorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGlm
dE5hbWUodW5zaWduZWQgc2hpZnRWYWx1ZSkgeyByZXR1cm4gc19zaGlmdE5hbWVzW3NoaWZ0VmFs
dWUgJiAweDNdOyB9CisgICAgY29uc3QgY2hhciogb3B0aW9uTmFtZSgpIHsgcmV0dXJuIHNfb3B0
aW9uTmFtZVtvcHRpb24oKV07IH0KKyAgICBzdGF0aWMgY2hhciBGUFJlZ2lzdGVyUHJlZml4KHVu
c2lnbmVkIEZQUmVnaXN0ZXJTaXplKQorICAgIHsKKyAgICAgICAgaWYgKEZQUmVnaXN0ZXJTaXpl
ID4gNCkKKyAgICAgICAgICAgIEZQUmVnaXN0ZXJTaXplID0gNDsKKyAgICAgICAgcmV0dXJuIHNf
RlBSZWdpc3RlclByZWZpeFtGUFJlZ2lzdGVyU2l6ZV07CisgICAgfQorCisgICAgdW5zaWduZWQg
b3Bjb2RlR3JvdXBOdW1iZXIodWludDMyX3Qgb3Bjb2RlKSB7IHJldHVybiAob3Bjb2RlID4+IDI0
KSAmIDB4MWY7IH0KKworICAgIGJvb2wgaXM2NEJpdCgpIHsgcmV0dXJuIG1fb3Bjb2RlICYgMHg4
MDAwMDAwMDsgfQorICAgIHVuc2lnbmVkIHNpemUoKSB7IHJldHVybiBtX29wY29kZSA+PiAzMDsg
fQorICAgIHVuc2lnbmVkIG9wdGlvbigpIHsgcmV0dXJuIChtX29wY29kZSA+PiAxMykgJiAweDc7
IH0KKyAgICB1bnNpZ25lZCByZCgpIHsgcmV0dXJuIG1fb3Bjb2RlICYgMHgxZjsgfQorICAgIHVu
c2lnbmVkIHJ0KCkgeyByZXR1cm4gbV9vcGNvZGUgJiAweDFmOyB9CisgICAgdW5zaWduZWQgcm4o
KSB7IHJldHVybiAobV9vcGNvZGUgPj4gNSkgJiAweDFmOyB9CisgICAgdW5zaWduZWQgcm0oKSB7
IHJldHVybiAobV9vcGNvZGUgPj4gMTYpICYgMHgxZjsgfQorCisgICAgdm9pZCBidWZmZXJQcmlu
dGYoY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDIsIDMpOwor
CisgICAgdm9pZCBhcHBlbmRJbnN0cnVjdGlvbk5hbWUoY29uc3QgY2hhciogaW5zdHJ1Y3Rpb25O
YW1lKQorICAgIHsKKyAgICAgICAgYnVmZmVyUHJpbnRmKCIgICAlLTcuN3MiLCBpbnN0cnVjdGlv
bk5hbWUpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kUmVnaXN0ZXJOYW1lKHVuc2lnbmVkIHJl
Z2lzdGVyTnVtYmVyLCBib29sIGlzNjRCaXQgPSB0cnVlKTsKKyAgICB2b2lkIGFwcGVuZFNQT3JS
ZWdpc3Rlck5hbWUodW5zaWduZWQgcmVnaXN0ZXJOdW1iZXIsIGJvb2wgaXM2NEJpdCA9IHRydWUp
CisgICAgeworICAgICAgICBpZiAocmVnaXN0ZXJOdW1iZXIgPT0gMzEpIHsKKyAgICAgICAgICAg
IGJ1ZmZlclByaW50ZihpczY0Qml0ID8gInNwIiA6ICJ3c3AiKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmRSZWdpc3Rlck5hbWUocmVnaXN0ZXJOdW1iZXIs
IGlzNjRCaXQpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kWlJPclJlZ2lzdGVyTmFtZSh1bnNp
Z25lZCByZWdpc3Rlck51bWJlciwgYm9vbCBpczY0Qml0ID0gdHJ1ZSkKKyAgICB7CisgICAgICAg
IGlmIChyZWdpc3Rlck51bWJlciA9PSAzMSkgeworICAgICAgICAgICAgYnVmZmVyUHJpbnRmKGlz
NjRCaXQgPyAieHpyIiA6ICJ3enIiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBhcHBlbmRSZWdpc3Rlck5hbWUocmVnaXN0ZXJOdW1iZXIsIGlzNjRCaXQpOworICAg
IH0KKworICAgIHZvaWQgYXBwZW5kRlBSZWdpc3Rlck5hbWUodW5zaWduZWQgcmVnaXN0ZXJOdW1i
ZXIsIHVuc2lnbmVkIHJlZ2lzdGVyU2l6ZSk7CisKKyAgICB2b2lkIGFwcGVuZFNlcGFyYXRvcigp
CisgICAgeworICAgICAgICBidWZmZXJQcmludGYoIiwgIik7CisgICAgfQorCisgICAgdm9pZCBh
cHBlbmRDaGFyYWN0ZXIoY29uc3QgY2hhciBjKQorICAgIHsKKyAgICAgICAgYnVmZmVyUHJpbnRm
KCIlYyIsIGMpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kU3RyaW5nKGNvbnN0IGNoYXIqIHN0
cmluZykKKyAgICB7CisgICAgICAgIGJ1ZmZlclByaW50ZigiJXMiLCBzdHJpbmcpOworICAgIH0K
KworICAgIHZvaWQgYXBwZW5kU2hpZnRUeXBlKHVuc2lnbmVkIHNoaWZ0VmFsdWUpCisgICAgewor
ICAgICAgICBidWZmZXJQcmludGYoIiVzICIsIHNoaWZ0TmFtZShzaGlmdFZhbHVlKSk7CisgICAg
fQorCisgICAgdm9pZCBhcHBlbmRTaWduZWRJbW1lZGlhdGUoaW50IGltbWVkaWF0ZSkKKyAgICB7
CisgICAgICAgIGJ1ZmZlclByaW50ZigiIyVkIiwgaW1tZWRpYXRlKTsKKyAgICB9CisKKyAgICB2
b2lkIGFwcGVuZFVuc2lnbmVkSW1tZWRpYXRlKHVuc2lnbmVkIGltbWVkaWF0ZSkKKyAgICB7Cisg
ICAgICAgIGJ1ZmZlclByaW50ZigiIyV1IiwgaW1tZWRpYXRlKTsKKyAgICB9CisKKyAgICB2b2lk
IGFwcGVuZFVuc2lnbmVkSW1tZWRpYXRlNjQodWludDY0X3QgaW1tZWRpYXRlKQorICAgIHsKKyAg
ICAgICAgYnVmZmVyUHJpbnRmKCIjMHglbGx4IiwgaW1tZWRpYXRlKTsKKyAgICB9CisKKyAgICB2
b2lkIGFwcGVuZFBDUmVsYXRpdmVPZmZzZXQodWludDMyX3QqIHBjLCBpbnQzMl90IGltbWVkaWF0
ZSkKKyAgICB7CisgICAgICAgIGJ1ZmZlclByaW50ZigiMHglbGx4IiwgcmVpbnRlcnByZXRfY2Fz
dDx1aW50NjRfdD4ocGMgKyBpbW1lZGlhdGUpKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZFNo
aWZ0QW1vdW50KHVuc2lnbmVkIGFtb3VudCkKKyAgICB7CisgICAgICAgIGJ1ZmZlclByaW50Zigi
bHNsICMldSIsIDE2ICogYW1vdW50KTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgaW50IGJ1
ZmZlclNpemUgPSA4MTsKKworICAgIGNoYXIgbV9mb3JtYXRCdWZmZXJbYnVmZmVyU2l6ZV07Cisg
ICAgdWludDMyX3QqIG1fY3VycmVudFBDOworICAgIHVpbnQzMl90IG1fb3Bjb2RlOworICAgIGlu
dCBtX2J1ZmZlck9mZnNldDsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgT3Bjb2RlR3JvdXAqIG9w
Y29kZVRhYmxlWzMyXTsKKworICAgIHN0YXRpYyBib29sIHNfaW5pdGlhbGl6ZWQ7Cit9OworCisj
ZGVmaW5lIERFRklORV9TVEFUSUNfRk9STUFUKGtsYXNzLCB0aGlzT2JqKSBcCisgICBzdGF0aWMg
Y29uc3QgY2hhciogZm9ybWF0KEE2NERPcGNvZGUqIHRoaXNPYmopIHsgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8IGtsYXNzICo+KHRoaXNPYmopLT5mb3JtYXQoKTsgfQorCitjbGFzcyBBNjRET3Bj
b2RlQWRkU3VidHJhY3QgOiBwdWJsaWMgQTY0RE9wY29kZSB7Citwcml2YXRlOgorICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBjb25zdCBzX29wTmFtZXNbNF07CisKK3B1YmxpYzoKKyAgICBjb25zdCBj
aGFyKiBvcE5hbWUoKSB7IHJldHVybiBzX29wTmFtZXNbb3BBbmRTKCldOyB9CisgICAgY29uc3Qg
Y2hhciogY21wTmFtZSgpIHsgcmV0dXJuIG9wKCkgPyAiY21wIiA6ICJjbW4iOyB9CisKKyAgICBi
b29sIGlzQ01QKCkgeyByZXR1cm4gKHNCaXQoKSAmJiByZCgpID09IDMxKTsgfQorICAgIHVuc2ln
bmVkIG9wKCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDMwKSAmIDB4MTsgfQorICAgIHVuc2lnbmVk
IHNCaXQoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMjkpICYgMHgxOyB9CisgICAgdW5zaWduZWQg
b3BBbmRTKCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDI5KSAmIDB4MzsgfQorfTsKKworY2xhc3Mg
QTY0RE9wY29kZUFkZFN1YnRyYWN0SW1tZWRpYXRlIDogcHVibGljIEE2NERPcGNvZGVBZGRTdWJ0
cmFjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IG1hc2sgPSAweDFmMDAw
MDAwOworICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBwYXR0ZXJuID0gMHgxMTAwMDAwMDsKKwor
ICAgIERFRklORV9TVEFUSUNfRk9STUFUKEE2NERPcGNvZGVBZGRTdWJ0cmFjdEltbWVkaWF0ZSwg
dGhpc09iaik7CisKKyAgICBjb25zdCBjaGFyKiBmb3JtYXQoKTsKKworICAgIGJvb2wgaXNNb3ZT
UCgpIHsgcmV0dXJuICghb3BBbmRTKCkgJiYgIWltbWVkMTIoKSAmJiAoKHJkKCkgPT0gMzEpIHx8
IHJuKCkgPT0gMzEpKTsgfQorICAgIHVuc2lnbmVkIHNoaWZ0KCkgeyByZXR1cm4gKG1fb3Bjb2Rl
ID4+IDIyKSAmIDB4MzsgfQorICAgIHVuc2lnbmVkIGltbWVkMTIoKSB7IHJldHVybiAobV9vcGNv
ZGUgPj4gMTApICYgMHhmZmY7IH0KK307CisKK2NsYXNzIEE2NERPcGNvZGVBZGRTdWJ0cmFjdEV4
dGVuZGVkUmVnaXN0ZXIgOiBwdWJsaWMgQTY0RE9wY29kZUFkZFN1YnRyYWN0IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgbWFzayA9IDB4MWZlMDAwMDA7CisgICAgc3RhdGlj
IGNvbnN0IHVpbnQzMl90IHBhdHRlcm4gPSAweDBiMjAwMDAwOworCisgICAgREVGSU5FX1NUQVRJ
Q19GT1JNQVQoQTY0RE9wY29kZUFkZFN1YnRyYWN0RXh0ZW5kZWRSZWdpc3RlciwgdGhpc09iaik7
CisKKyAgICBjb25zdCBjaGFyKiBmb3JtYXQoKTsKKworICAgIHVuc2lnbmVkIGltbWVkaWF0ZTMo
KSB7IHJldHVybiAobV9vcGNvZGUgPj4gMTApICYgMHg3OyB9Cit9OworCitjbGFzcyBBNjRET3Bj
b2RlQWRkU3VidHJhY3RTaGlmdGVkUmVnaXN0ZXIgOiBwdWJsaWMgQTY0RE9wY29kZUFkZFN1YnRy
YWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgbWFzayA9IDB4MWYyMDAw
MDA7CisgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHBhdHRlcm4gPSAweDBiMDAwMDAwOworCisg
ICAgREVGSU5FX1NUQVRJQ19GT1JNQVQoQTY0RE9wY29kZUFkZFN1YnRyYWN0U2hpZnRlZFJlZ2lz
dGVyLCB0aGlzT2JqKTsKKworICAgIGNvbnN0IGNoYXIqIGZvcm1hdCgpOworCisgICAgYm9vbCBp
c05lZygpIHsgcmV0dXJuIChvcCgpICYmIHJuKCkgPT0gMzEpOyB9CisgICAgY29uc3QgY2hhciog
bmVnTmFtZSgpIHsgcmV0dXJuIHNCaXQoKSA/ICJuZWdzIiA6ICJuZWciOyB9CisgICAgdW5zaWdu
ZWQgc2hpZnQoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMjIpICYgMHgzOyB9CisgICAgaW50IGlt
bWVkaWF0ZTYoKSB7IHJldHVybiAoc3RhdGljX2Nhc3Q8aW50PigobV9vcGNvZGUgPj4gMTApICYg
MHgzZikgPDwgMjYpID4+IDI2OyB9Cit9OworCitjbGFzcyBBNjRET3Bjb2RlQml0ZmllbGQgOiBw
dWJsaWMgQTY0RE9wY29kZSB7Citwcml2YXRlOgorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25z
dCBzX29wTmFtZXNbM107CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfZXh0ZW5kUHNl
dWRvT3BOYW1lc1szXVszXTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc19pbnNlcnRP
cE5hbWVzWzNdOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX2V4dHJhY3RPcE5hbWVz
WzNdOworCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IG1hc2sgPSAweDFmODAw
MDAwOworICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBwYXR0ZXJuID0gMHgxMzAwMDAwMDsKKwor
ICAgIERFRklORV9TVEFUSUNfRk9STUFUKEE2NERPcGNvZGVCaXRmaWVsZCwgdGhpc09iaik7CisK
KyAgICBjb25zdCBjaGFyKiBmb3JtYXQoKTsKKworICAgIGNvbnN0IGNoYXIqIG9wTmFtZSgpIHsg
cmV0dXJuIHNfb3BOYW1lc1tvcGMoKV07IH0KKyAgICBjb25zdCBjaGFyKiBleHRlbmRQc2V1ZG9P
cE5hbWVzKHVuc2lnbmVkIG9wU2l6ZSkgeyByZXR1cm4gc19leHRlbmRQc2V1ZG9PcE5hbWVzW29w
YygpXVtvcFNpemVdOyB9CisgICAgY29uc3QgY2hhciogaW5zZXJ0T3BOYW1lcygpIHsgcmV0dXJu
IHNfaW5zZXJ0T3BOYW1lc1tvcGMoKV07IH0KKyAgICBjb25zdCBjaGFyKiBleHRyYWN0T3BOYW1l
cygpIHsgcmV0dXJuIHNfZXh0cmFjdE9wTmFtZXNbb3BjKCldOyB9CisKKyAgICB1bnNpZ25lZCBv
cGMoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMjkpICYgMHgzOyB9CisgICAgdW5zaWduZWQgbkJp
dCgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAyMikgJiAweDE7IH0KKyAgICB1bnNpZ25lZCBpbW1l
ZGlhdGVSKCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDE2KSAmIDB4M2Y7IH0KKyAgICB1bnNpZ25l
ZCBpbW1lZGlhdGVTKCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDEwKSAmIDB4M2Y7IH0KK307CisK
K2NsYXNzIEE2NERPcGNvZGVDb21wYXJlQW5kQnJhbmNoSW1tZWRpYXRlIDogcHVibGljIEE2NERP
cGNvZGUgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBtYXNrID0gMHg3ZTAw
MDAwMDsKKyAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgcGF0dGVybiA9IDB4MzQwMDAwMDA7CisK
KyAgICBERUZJTkVfU1RBVElDX0ZPUk1BVChBNjRET3Bjb2RlQ29tcGFyZUFuZEJyYW5jaEltbWVk
aWF0ZSwgdGhpc09iaik7CisKKyAgICBjb25zdCBjaGFyKiBmb3JtYXQoKTsKKworICAgIHVuc2ln
bmVkIG9wQml0KCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDI0KSAmIDB4MTsgfQorICAgIGludCBp
bW1lZGlhdGUxOSgpIHsgcmV0dXJuIChzdGF0aWNfY2FzdDxpbnQ+KChtX29wY29kZSA+PiA1KSAm
IDB4N2ZmZmYpIDw8IDEzKSA+PiAxMzsgfQorfTsKKworY2xhc3MgQTY0RE9wY29kZUNvbmRpdGlv
bmFsQnJhbmNoSW1tZWRpYXRlIDogcHVibGljIEE2NERPcGNvZGUgeworcHVibGljOgorICAgIHN0
YXRpYyBjb25zdCB1aW50MzJfdCBtYXNrID0gMHhmZjAwMDAxMDsKKyAgICBzdGF0aWMgY29uc3Qg
dWludDMyX3QgcGF0dGVybiA9IDB4NTQwMDAwMDA7CisKKyAgICBERUZJTkVfU1RBVElDX0ZPUk1B
VChBNjRET3Bjb2RlQ29uZGl0aW9uYWxCcmFuY2hJbW1lZGlhdGUsIHRoaXNPYmopOworCisgICAg
Y29uc3QgY2hhciogZm9ybWF0KCk7CisKKyAgICB1bnNpZ25lZCBjb25kaXRpb24oKSB7IHJldHVy
biBtX29wY29kZSAmIDB4ZjsgfQorICAgIGludCBpbW1lZGlhdGUxOSgpIHsgcmV0dXJuIChzdGF0
aWNfY2FzdDxpbnQ+KChtX29wY29kZSA+PiA1KSAmIDB4N2ZmZmYpIDw8IDEzKSA+PiAxMzsgfQor
fTsKKworY2xhc3MgQTY0RE9wY29kZUNvbmRpdGlvbmFsU2VsZWN0IDogcHVibGljIEE2NERPcGNv
ZGUgeworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc19vcE5hbWVzWzRd
OworCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IG1hc2sgPSAweDFmZTAwMDEw
OworICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBwYXR0ZXJuID0gMHgxYTgwMDAwMDsKKworICAg
IERFRklORV9TVEFUSUNfRk9STUFUKEE2NERPcGNvZGVDb25kaXRpb25hbFNlbGVjdCwgdGhpc09i
aik7CisKKyAgICBjb25zdCBjaGFyKiBmb3JtYXQoKTsKKworICAgIGNvbnN0IGNoYXIqIG9wTmFt
ZSgpIHsgcmV0dXJuIHNfb3BOYW1lc1tvcE51bSgpXTsgfQorICAgIHVuc2lnbmVkIG9wTnVtKCkg
eyByZXR1cm4gKG9wKCkgPDwgMSB8IChvcDIoKSAmIDB4MSkpOyB9CisgICAgdW5zaWduZWQgb3Ao
KSB7IHJldHVybiAobV9vcGNvZGUgPj4gMzApICYgMHgxOyB9CisgICAgdW5zaWduZWQgc0JpdCgp
IHsgcmV0dXJuIChtX29wY29kZSA+PiAyOSkgJiAweDE7IH0KKyAgICB1bnNpZ25lZCBjb25kaXRp
b24oKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMTIpICYgMHhmOyB9CisgICAgdW5zaWduZWQgb3Ay
KCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDEwKSAmIDB4MzsgfQorfTsKKworY2xhc3MgQTY0RE9w
Y29kZURhdGFQcm9jZXNzaW5nMlNvdXJjZSA6IHB1YmxpYyBBNjRET3Bjb2RlIHsKK3ByaXZhdGU6
CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfb3BOYW1lc1s4XTsKKworcHVibGljOgor
ICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBtYXNrID0gMHg1ZmUwMDAwMDsKKyAgICBzdGF0aWMg
Y29uc3QgdWludDMyX3QgcGF0dGVybiA9IDB4MWFjMDAwMDA7CisKKyAgICBERUZJTkVfU1RBVElD
X0ZPUk1BVChBNjRET3Bjb2RlRGF0YVByb2Nlc3NpbmcyU291cmNlLCB0aGlzT2JqKTsKKworICAg
IGNvbnN0IGNoYXIqIGZvcm1hdCgpOworCisgICAgY29uc3QgY2hhciogb3BOYW1lKCkgeyByZXR1
cm4gc19vcE5hbWVzW29wTmFtZUluZGV4KCldOyB9CisgICAgdW5zaWduZWQgc0JpdCgpIHsgcmV0
dXJuIChtX29wY29kZSA+PiAyOSkgJiAweDE7IH0KKyAgICB1bnNpZ25lZCBvcENvZGUoKSB7IHJl
dHVybiAobV9vcGNvZGUgPj4gMTApICYgMHgzZjsgfQorICAgIHVuc2lnbmVkIG9wTmFtZUluZGV4
KCkgeyByZXR1cm4gKChtX29wY29kZSA+PiAxMSkgJiAweDQpIHwgKChtX29wY29kZSA+PiAxMCkg
JiAweDMpOyB9Cit9OworCitjbGFzcyBBNjRET3Bjb2RlRGF0YVByb2Nlc3NpbmczU291cmNlIDog
cHVibGljIEE2NERPcGNvZGUgeworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgY2hhciogY29u
c3Qgc19vcE5hbWVzWzE2XTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc19wc2V1ZG9P
cE5hbWVzWzE2XTsKKworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBtYXNrID0g
MHgxZjAwMDAwMDsKKyAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgcGF0dGVybiA9IDB4MWIwMDAw
MDA7CisKKyAgICBERUZJTkVfU1RBVElDX0ZPUk1BVChBNjRET3Bjb2RlRGF0YVByb2Nlc3Npbmcz
U291cmNlLCB0aGlzT2JqKTsKKworICAgIGNvbnN0IGNoYXIqIGZvcm1hdCgpOworCisgICAgY29u
c3QgY2hhciogb3BOYW1lKCkgeyByZXR1cm4gcmEoKSA9PSAzMSA/IHNfb3BOYW1lc1tvcE51bSgp
ICYgMHhmXSA6IHNfcHNldWRvT3BOYW1lc1tvcE51bSgpICYgMHhmXTsgfQorICAgIHVuc2lnbmVk
IHJhKCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDEwKSAmIDB4MWY7IH0KKyAgICB1bnNpZ25lZCBv
cDU0KCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDI5KSAmIDB4MzsgfQorICAgIHVuc2lnbmVkIG9w
MzEoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMjEpICYgMHg3OyB9CisgICAgdW5zaWduZWQgb3Aw
KCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDE1KSAmIDB4MTsgfQorICAgIHVuc2lnbmVkIG9wTnVt
KCkgeyByZXR1cm4gKChtX29wY29kZSA+PiAyNSkgJiAweDMwKSB8ICgobV9vcGNvZGUgPj4gMjAp
ICYgMHhlKSB8ICgobV9vcGNvZGUgPj4gMTUpICYgMHgxKTsgfQorfTsKKworY2xhc3MgQTY0T3Bj
b2RlRXhjZXB0aW9uR2VuZXJhdGlvbiA6IHB1YmxpYyBBNjRET3Bjb2RlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY29uc3QgdWludDMyX3QgbWFzayA9IDB4ZmYwMDAwMTA7CisgICAgc3RhdGljIGNv
bnN0IHVpbnQzMl90IHBhdHRlcm4gPSAweGQ0MDAwMDAwOworCisgICAgREVGSU5FX1NUQVRJQ19G
T1JNQVQoQTY0T3Bjb2RlRXhjZXB0aW9uR2VuZXJhdGlvbiwgdGhpc09iaik7CisKKyAgICBjb25z
dCBjaGFyKiBmb3JtYXQoKTsKKworICAgIHVuc2lnbmVkIG9wYygpIHsgcmV0dXJuIChtX29wY29k
ZT4+MjEpICYgMHg3OyB9CisgICAgdW5zaWduZWQgb3AyKCkgeyByZXR1cm4gKG1fb3Bjb2RlPj4y
KSAmIDB4NzsgfQorICAgIHVuc2lnbmVkIGxsKCkgeyByZXR1cm4gbV9vcGNvZGUgJiAweDM7IH0K
KyAgICBpbnQgaW1tZWRpYXRlMTYoKSB7IHJldHVybiAoc3RhdGljX2Nhc3Q8aW50PigobV9vcGNv
ZGUgPj4gNSkgJiAweGZmZmYpIDw8IDE2KSA+PiAxNjsgfQorfTsKKworY2xhc3MgQTY0RE9wY29k
ZUV4dHJhY3QgOiBwdWJsaWMgQTY0RE9wY29kZSB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0
IHVpbnQzMl90IG1hc2sgPSAweDFmODAwMDAwOworICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBw
YXR0ZXJuID0gMHgxMzgwMDAwMDsKKworICAgIERFRklORV9TVEFUSUNfRk9STUFUKEE2NERPcGNv
ZGVFeHRyYWN0LCB0aGlzT2JqKTsKKworICAgIGNvbnN0IGNoYXIqIGZvcm1hdCgpOworCisgICAg
dW5zaWduZWQgb3AyMSgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAyOSkgJiAweDM7IH0KKyAgICB1
bnNpZ25lZCBuQml0KCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDIyKSAmIDB4MTsgfQorICAgIHVu
c2lnbmVkIG8wQml0KCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDIxKSAmIDB4MTsgfQorICAgIHVu
c2lnbmVkIGltbWVkaWF0ZVMoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMTApICYgMHgzZjsgfQor
fTsKKworY2xhc3MgQTY0RE9wY29kZUZsb2F0aW5nUG9pbnRPcHMgOiBwdWJsaWMgQTY0RE9wY29k
ZSB7CitwdWJsaWM6CisgICAgdW5zaWduZWQgbUJpdCgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAz
MSkgJiAweDE7IH0KKyAgICB1bnNpZ25lZCBzQml0KCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDI5
KSAmIDB4MTsgfQorICAgIHVuc2lnbmVkIHR5cGUoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMjIp
ICYgMHgzOyB9Cit9OworCitjbGFzcyBBNjRET3Bjb2RlRmxvYXRpbmdQb2ludENvbXBhcmUgOiBw
dWJsaWMgQTY0RE9wY29kZUZsb2F0aW5nUG9pbnRPcHMgeworcHJpdmF0ZToKKyAgICBzdGF0aWMg
Y29uc3QgY2hhciogY29uc3Qgc19vcE5hbWVzWzE2XTsKKyAgICAKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY29uc3QgdWludDMyX3QgbWFzayA9IDB4NWYyMDNjMDA7CisgICAgc3RhdGljIGNvbnN0IHVp
bnQzMl90IHBhdHRlcm4gPSAweDFlMjAyMDAwOworICAgIAorICAgIERFRklORV9TVEFUSUNfRk9S
TUFUKEE2NERPcGNvZGVGbG9hdGluZ1BvaW50Q29tcGFyZSwgdGhpc09iaik7CisgICAgCisgICAg
Y29uc3QgY2hhciogZm9ybWF0KCk7CisKKyAgICBjb25zdCBjaGFyKiBvcE5hbWUoKSB7IHJldHVy
biAob3BOdW0oKSAmIDB4MikgPyAiZmNtcGUiIDogImZjbXAiOyB9CisKKyAgICB1bnNpZ25lZCBv
cCgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAxNCkgJiAweDM7IH0KKyAgICB1bnNpZ25lZCBvcENv
ZGUyKCkgeyByZXR1cm4gbV9vcGNvZGUgJiAweDFmOyB9CisgICAgdW5zaWduZWQgb3BOdW0oKSB7
IHJldHVybiAobV9vcGNvZGUgPj4gMykgJiAweDM7IH0KK307CisKK2NsYXNzIEE2NERPcGNvZGVG
bG9hdGluZ1BvaW50RGF0YVByb2Nlc3NpbmcxU291cmNlIDogcHVibGljIEE2NERPcGNvZGVGbG9h
dGluZ1BvaW50T3BzIHsKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNf
b3BOYW1lc1sxNl07CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgbWFzayA9
IDB4NWYyMDdjMDA7CisgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHBhdHRlcm4gPSAweDFlMjA0
MDAwOworCisgICAgREVGSU5FX1NUQVRJQ19GT1JNQVQoQTY0RE9wY29kZUZsb2F0aW5nUG9pbnRE
YXRhUHJvY2Vzc2luZzFTb3VyY2UsIHRoaXNPYmopOworCisgICAgY29uc3QgY2hhciogZm9ybWF0
KCk7CisKKyAgICBjb25zdCBjaGFyKiBvcE5hbWUoKSB7IHJldHVybiBzX29wTmFtZXNbb3BOdW0o
KV07IH0KKworICAgIHVuc2lnbmVkIG9wTnVtKCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDE1KSAm
IDB4M2Y7IH0KK307CisKK2NsYXNzIEE2NERPcGNvZGVGbG9hdGluZ1BvaW50RGF0YVByb2Nlc3Np
bmcyU291cmNlIDogcHVibGljIEE2NERPcGNvZGVGbG9hdGluZ1BvaW50T3BzIHsKK3ByaXZhdGU6
CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfb3BOYW1lc1sxNl07CisKK3B1YmxpYzoK
KyAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgbWFzayA9IDB4NWYyMDA4MDA7CisgICAgc3RhdGlj
IGNvbnN0IHVpbnQzMl90IHBhdHRlcm4gPSAweDFlMjAwODAwOworCisgICAgREVGSU5FX1NUQVRJ
Q19GT1JNQVQoQTY0RE9wY29kZUZsb2F0aW5nUG9pbnREYXRhUHJvY2Vzc2luZzJTb3VyY2UsIHRo
aXNPYmopOworCisgICAgY29uc3QgY2hhciogZm9ybWF0KCk7CisKKyAgICBjb25zdCBjaGFyKiBv
cE5hbWUoKSB7IHJldHVybiBzX29wTmFtZXNbb3BOdW0oKV07IH0KKworICAgIHVuc2lnbmVkIG9w
TnVtKCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDEyKSAmIDB4ZjsgfQorfTsKKworY2xhc3MgQTY0
RE9wY29kZUZsb2F0aW5nRml4ZWRQb2ludENvbnZlcnNpb25zIDogcHVibGljIEE2NERPcGNvZGVG
bG9hdGluZ1BvaW50T3BzIHsKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0
IHNfb3BOYW1lc1s0XTsKKyAgICAKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qg
bWFzayA9IDB4NWYyMDAwMDA7CisgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHBhdHRlcm4gPSAw
eDFlMDAwMDAwOworICAgIAorICAgIERFRklORV9TVEFUSUNfRk9STUFUKEE2NERPcGNvZGVGbG9h
dGluZ0ZpeGVkUG9pbnRDb252ZXJzaW9ucywgdGhpc09iaik7CisgICAgCisgICAgY29uc3QgY2hh
ciogZm9ybWF0KCk7CisgICAgCisgICAgY29uc3QgY2hhciogb3BOYW1lKCkgeyByZXR1cm4gc19v
cE5hbWVzW29wTnVtKCldOyB9CisgICAgdW5zaWduZWQgcm1vZGUoKSB7IHJldHVybiAobV9vcGNv
ZGUgPj4gMTkpICYgMHgzOyB9CisgICAgdW5zaWduZWQgb3Bjb2RlKCkgeyByZXR1cm4gKG1fb3Bj
b2RlID4+IDE2KSAmIDB4NzsgfQorICAgIHVuc2lnbmVkIHNjYWxlKCkgeyByZXR1cm4gKG1fb3Bj
b2RlID4+IDEwKSAmIDB4M2Y7IH0KKyAgICB1bnNpZ25lZCBvcE51bSgpIHsgcmV0dXJuIChtX29w
Y29kZSA+PiAxNikgJiAweDM7IH0KK307CisKK2NsYXNzIEE2NERPcGNvZGVGbG9hdGluZ1BvaW50
SW50ZWdlckNvbnZlcnNpb25zIDogcHVibGljIEE2NERPcGNvZGVGbG9hdGluZ1BvaW50T3BzIHsK
K3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfb3BOYW1lc1szMl07Cisg
ICAgCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IG1hc2sgPSAweDVmMjBmYzAw
OworICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBwYXR0ZXJuID0gMHgxZTIwMDAwMDsKKworICAg
IERFRklORV9TVEFUSUNfRk9STUFUKEE2NERPcGNvZGVGbG9hdGluZ1BvaW50SW50ZWdlckNvbnZl
cnNpb25zLCB0aGlzT2JqKTsKKworICAgIGNvbnN0IGNoYXIqIGZvcm1hdCgpOworCisgICAgY29u
c3QgY2hhciogb3BOYW1lKCkgeyByZXR1cm4gc19vcE5hbWVzW29wTnVtKCldOyB9CisgICAgdW5z
aWduZWQgcm1vZGUoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMTkpICYgMHgzOyB9CisgICAgdW5z
aWduZWQgb3Bjb2RlKCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDE2KSAmIDB4NzsgfQorICAgIHVu
c2lnbmVkIG9wTnVtKCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDE2KSAmIDB4MWY7IH0KK307CisK
K2NsYXNzIEE2NERPcGNvZGVIaW50IDogcHVibGljIEE2NERPcGNvZGUgeworcHJpdmF0ZToKKyAg
ICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc19vcE5hbWVzWzZdOworCitwdWJsaWM6CisgICAg
c3RhdGljIGNvbnN0IHVpbnQzMl90IG1hc2sgPSAweGZmZmZmMDFmOworICAgIHN0YXRpYyBjb25z
dCB1aW50MzJfdCBwYXR0ZXJuID0gMHhkNTAzMjAxZjsKKworICAgIERFRklORV9TVEFUSUNfRk9S
TUFUKEE2NERPcGNvZGVIaW50LCB0aGlzT2JqKTsKKworICAgIGNvbnN0IGNoYXIqIGZvcm1hdCgp
OworCisgICAgY29uc3QgY2hhciogb3BOYW1lKCkgeyByZXR1cm4gaW1tZWRpYXRlNygpIDw9IDUg
PyBzX29wTmFtZXNbaW1tZWRpYXRlNygpXSA6ICJoaW50IjsgfQorICAgIHVuc2lnbmVkIGltbWVk
aWF0ZTcoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gNSkgJiAweDdmOyB9Cit9OworCitjbGFzcyBB
NjRET3Bjb2RlTG9hZFN0b3JlIDogcHVibGljIEE2NERPcGNvZGUgeworcHJpdmF0ZToKKyAgICBz
dGF0aWMgY29uc3QgY2hhciogY29uc3Qgc19vcE5hbWVzWzMyXTsKKworcHJvdGVjdGVkOgorICAg
IGNvbnN0IGNoYXIqIG9wTmFtZSgpCisgICAgeworICAgICAgICByZXR1cm4gc19vcE5hbWVzW29w
TnVtYmVyKCldOworICAgIH0KKworICAgIHVuc2lnbmVkIHNpemUoKSB7IHJldHVybiAobV9vcGNv
ZGUgPj4gMzApICYgMHgzOyB9CisgICAgdW5zaWduZWQgdkJpdCgpIHsgcmV0dXJuIChtX29wY29k
ZSA+PiAyNikgJiAweDE7IH0KKyAgICB1bnNpZ25lZCBvcGMoKSB7IHJldHVybiAobV9vcGNvZGUg
Pj4gMjIpICYgMHgzOyB9CisgICAgdW5zaWduZWQgb3BOdW1iZXIoKSB7IHJldHVybiAoc2l6ZSgp
IDw8MyApIHwgKHZCaXQoKSA8PCAyKSB8IG9wYygpOyB9CisgICAgYm9vbCBpczY0Qml0UlQoKSB7
IHJldHVybiAoKG9wTnVtYmVyKCkgJiAweDE3KSA9PSAweDAyKSB8fCAoKG9wTnVtYmVyKCkgJiAw
eDFlKSA9PSAweDE4KTsgfQorfTsKKworY2xhc3MgQTY0RE9wY29kZUxvYWRTdG9yZUltbWVkaWF0
ZSA6IHB1YmxpYyBBNjRET3Bjb2RlTG9hZFN0b3JlIHsKK3ByaXZhdGU6CisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIGNvbnN0IHNfdW5wcml2aWxlZ2VkT3BOYW1lc1szMl07CisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIGNvbnN0IHNfdW5zY2FsZWRPcE5hbWVzWzMyXTsKKworcHVibGljOgorICAgIHN0
YXRpYyBjb25zdCB1aW50MzJfdCBtYXNrID0gMHgzYjIwMDAwMDsKKyAgICBzdGF0aWMgY29uc3Qg
dWludDMyX3QgcGF0dGVybiA9IDB4MzgwMDAwMDA7CisKKyAgICBERUZJTkVfU1RBVElDX0ZPUk1B
VChBNjRET3Bjb2RlTG9hZFN0b3JlSW1tZWRpYXRlLCB0aGlzT2JqKTsKKworICAgIGNvbnN0IGNo
YXIqIGZvcm1hdCgpOworCisgICAgY29uc3QgY2hhciogdW5wcml2aWxlZ2VkT3BOYW1lKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBzX3VucHJpdmlsZWdlZE9wTmFtZXNbb3BOdW1iZXIoKV07Cisg
ICAgfQorICAgIGNvbnN0IGNoYXIqIHVuc2NhbGVkT3BOYW1lKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBzX3Vuc2NhbGVkT3BOYW1lc1tvcE51bWJlcigpXTsKKyAgICB9CisgICAgdW5zaWduZWQg
dHlwZSgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAxMCkgJiAweDM7IH0KKyAgICBpbnQgaW1tZWRp
YXRlOSgpIHsgcmV0dXJuIChzdGF0aWNfY2FzdDxpbnQ+KChtX29wY29kZSA+PiAxMikgJiAweDFm
ZikgPDwgMjMpID4+IDIzOyB9Cit9OworCitjbGFzcyBBNjRET3Bjb2RlTG9hZFN0b3JlUmVnaXN0
ZXJPZmZzZXQgOiBwdWJsaWMgQTY0RE9wY29kZUxvYWRTdG9yZSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIGNvbnN0IHVpbnQzMl90IG1hc2sgPSAweDNiMjAwYzAwOworICAgIHN0YXRpYyBjb25zdCB1
aW50MzJfdCBwYXR0ZXJuID0gMHgzODIwMDgwMDsKKworICAgIERFRklORV9TVEFUSUNfRk9STUFU
KEE2NERPcGNvZGVMb2FkU3RvcmVSZWdpc3Rlck9mZnNldCwgdGhpc09iaik7CisKKyAgICBjb25z
dCBjaGFyKiBmb3JtYXQoKTsKKworICAgIHVuc2lnbmVkIG9wdGlvbigpIHsgcmV0dXJuIChtX29w
Y29kZSA+PiAxMykgJiAweDc7IH0KKyAgICBpbnQgc0JpdCgpIHsgcmV0dXJuIChtX29wY29kZSA+
PiAxMikgJiAweDE7IH0KK307CisKK2NsYXNzIEE2NERPcGNvZGVMb2FkU3RvcmVVbnNpZ25lZElt
bWVkaWF0ZSA6IHB1YmxpYyBBNjRET3Bjb2RlTG9hZFN0b3JlIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY29uc3QgdWludDMyX3QgbWFzayA9IDB4M2IwMDAwMDA7CisgICAgc3RhdGljIGNvbnN0IHVp
bnQzMl90IHBhdHRlcm4gPSAweDM5MDAwMDAwOworCisgICAgREVGSU5FX1NUQVRJQ19GT1JNQVQo
QTY0RE9wY29kZUxvYWRTdG9yZVVuc2lnbmVkSW1tZWRpYXRlLCB0aGlzT2JqKTsKKworICAgIGNv
bnN0IGNoYXIqIGZvcm1hdCgpOworCisgICAgdW5zaWduZWQgaW1tZWRpYXRlMTIoKSB7IHJldHVy
biAobV9vcGNvZGUgPj4gMTApICYgMHhmZmY7IH0KK307CisKK2NsYXNzIEE2NERPcGNvZGVMb2dp
Y2FsIDogcHVibGljIEE2NERPcGNvZGUgeworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgY2hh
ciogY29uc3Qgc19vcE5hbWVzWzhdOworCitwdWJsaWM6CisgICAgY29uc3QgY2hhciogb3BOYW1l
KHVuc2lnbmVkIG9wTnVtYmVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNfb3BOYW1lc1tvcE51
bWJlciAmIDB4N107CisgICAgfQorCisgICAgdW5zaWduZWQgb3BjKCkgeyByZXR1cm4gKG1fb3Bj
b2RlID4+IDI5KSAmIDB4MzsgfQorICAgIHVuc2lnbmVkIG5CaXQoKSB7IHJldHVybiAobV9vcGNv
ZGUgPj4gMjEpICYgMHgxOyB9Cit9OworCitjbGFzcyBBNjRET3Bjb2RlTG9naWNhbEltbWVkaWF0
ZSA6IHB1YmxpYyBBNjRET3Bjb2RlTG9naWNhbCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0
IHVpbnQzMl90IG1hc2sgPSAweDFmODAwMDAwOworICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBw
YXR0ZXJuID0gMHgxMjAwMDAwMDsKKworICAgIERFRklORV9TVEFUSUNfRk9STUFUKEE2NERPcGNv
ZGVMb2dpY2FsSW1tZWRpYXRlLCB0aGlzT2JqKTsKKworICAgIGNvbnN0IGNoYXIqIGZvcm1hdCgp
OworCisgICAgYm9vbCBpc1RzdCgpIHsgcmV0dXJuICgob3BOdW1iZXIoKSA9PSA2KSAmJiAocmQo
KSA9PSAzMSkpOyB9CisgICAgYm9vbCBpc01vdigpIHsgcmV0dXJuICgob3BOdW1iZXIoKSA9PSAy
KSAmJiAocm4oKSA9PSAzMSkpOyB9CisgICAgdW5zaWduZWQgb3BOdW1iZXIoKSB7IHJldHVybiBv
cGMoKSA8PCAxOyB9CisgICAgdW5zaWduZWQgbkJpdCgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAy
MikgJiAweDE7IH0KKyAgICB1bnNpZ25lZCBpbW1lZGlhdGVSKCkgeyByZXR1cm4gKG1fb3Bjb2Rl
ID4+IDE2KSAmIDB4M2Y7IH0KKyAgICB1bnNpZ25lZCBpbW1lZGlhdGVTKCkgeyByZXR1cm4gKG1f
b3Bjb2RlID4+IDEwKSAmIDB4M2Y7IH0KK307CisKK2NsYXNzIEE2NERPcGNvZGVMb2dpY2FsU2hp
ZnRlZFJlZ2lzdGVyIDogcHVibGljIEE2NERPcGNvZGVMb2dpY2FsIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY29uc3QgdWludDMyX3QgbWFzayA9IDB4MWYwMDAwMDA7CisgICAgc3RhdGljIGNvbnN0
IHVpbnQzMl90IHBhdHRlcm4gPSAweDBhMDAwMDAwOworCisgICAgREVGSU5FX1NUQVRJQ19GT1JN
QVQoQTY0RE9wY29kZUxvZ2ljYWxTaGlmdGVkUmVnaXN0ZXIsIHRoaXNPYmopOworCisgICAgY29u
c3QgY2hhciogZm9ybWF0KCk7CisKKyAgICBib29sIGlzVHN0KCkgeyByZXR1cm4gKChvcE51bWJl
cigpID09IDYpICYmIChyZCgpID09IDMxKSk7IH0KKyAgICBib29sIGlzTW92KCkgeyByZXR1cm4g
KChvcE51bWJlcigpID09IDIpICYmIChybigpID09IDMxKSk7IH0KKyAgICB1bnNpZ25lZCBvcE51
bWJlcigpIHsgcmV0dXJuIChvcGMoKSA8PCAxKSB8IG5CaXQoKTsgfQorICAgIHVuc2lnbmVkIHNo
aWZ0KCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDIyKSAmIDB4MzsgfQorICAgIGludCBpbW1lZGlh
dGU2KCkgeyByZXR1cm4gKHN0YXRpY19jYXN0PGludD4oKG1fb3Bjb2RlID4+IDEwKSAmIDB4M2Yp
IDw8IDI2KSA+PiAyNjsgfQorfTsKKworY2xhc3MgQTY0RE9wY29kZU1vdmVXaWRlIDogcHVibGlj
IEE2NERPcGNvZGUgeworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc19v
cE5hbWVzWzRdOworCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IG1hc2sgPSAw
eDFmODAwMDAwOworICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBwYXR0ZXJuID0gMHgxMjgwMDAw
MDsKKworICAgIERFRklORV9TVEFUSUNfRk9STUFUKEE2NERPcGNvZGVNb3ZlV2lkZSwgdGhpc09i
aik7CisKKyAgICBjb25zdCBjaGFyKiBmb3JtYXQoKTsKKworICAgIGNvbnN0IGNoYXIqIG9wTmFt
ZSgpIHsgcmV0dXJuIHNfb3BOYW1lc1tvcGMoKV07IH0KKyAgICB1bnNpZ25lZCBvcGMoKSB7IHJl
dHVybiAobV9vcGNvZGUgPj4gMjkpICYgMHgzOyB9CisgICAgdW5zaWduZWQgaHcoKSB7IHJldHVy
biAobV9vcGNvZGUgPj4gMjEpICYgMHgzOyB9CisgICAgdW5zaWduZWQgaW1tZWRpYXRlMTYoKSB7
IHJldHVybiAobV9vcGNvZGUgPj4gNSkgJiAweGZmZmY7IH0KK307CisKK2NsYXNzIEE2NERPcGNv
ZGVUZXN0QW5kQnJhbmNoSW1tZWRpYXRlIDogcHVibGljIEE2NERPcGNvZGUgeworcHVibGljOgor
ICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBtYXNrID0gMHg3ZTAwMDAwMDsKKyAgICBzdGF0aWMg
Y29uc3QgdWludDMyX3QgcGF0dGVybiA9IDB4MzYwMDAwMDA7CisKKyAgICBERUZJTkVfU1RBVElD
X0ZPUk1BVChBNjRET3Bjb2RlVGVzdEFuZEJyYW5jaEltbWVkaWF0ZSwgdGhpc09iaik7CisKKyAg
ICBjb25zdCBjaGFyKiBmb3JtYXQoKTsKKworICAgIHVuc2lnbmVkIGJpdE51bWJlcigpIHsgcmV0
dXJuICgobV9vcGNvZGUgPj4gMjYpICYgMHgyMCkgfCAoKG1fb3Bjb2RlID4+IDE5KSAmIDB4MWYp
OyB9CisgICAgdW5zaWduZWQgb3BCaXQoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMjQpICYgMHgx
OyB9CisgICAgaW50IGltbWVkaWF0ZTE0KCkgeyByZXR1cm4gKHN0YXRpY19jYXN0PGludD4oKG1f
b3Bjb2RlID4+IDUpICYgMHgzZmZmKSA8PCAxOCkgPj4gMTg7IH0KK307CisKK2NsYXNzIEE2NERP
cGNvZGVVbmNvbmRpdGlvbmFsQnJhbmNoSW1tZWRpYXRlIDogcHVibGljIEE2NERPcGNvZGUgewor
cHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBtYXNrID0gMHg3YzAwMDAwMDsKKyAg
ICBzdGF0aWMgY29uc3QgdWludDMyX3QgcGF0dGVybiA9IDB4MTQwMDAwMDA7CisKKyAgICBERUZJ
TkVfU1RBVElDX0ZPUk1BVChBNjRET3Bjb2RlVW5jb25kaXRpb25hbEJyYW5jaEltbWVkaWF0ZSwg
dGhpc09iaik7CisKKyAgICBjb25zdCBjaGFyKiBmb3JtYXQoKTsKKworICAgIHVuc2lnbmVkIG9w
KCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDMxKSAmIDB4MTsgfQorICAgIGludCBpbW1lZGlhdGUy
NigpIHsgcmV0dXJuIChzdGF0aWNfY2FzdDxpbnQ+KG1fb3Bjb2RlICYgMHgzZmZmZmZmKSA8PCA2
KSA+PiA2OyB9Cit9OworCitjbGFzcyBBNjRET3Bjb2RlVW5jb25kaXRpb25hbEJyYW5jaFJlZ2lz
dGVyIDogcHVibGljIEE2NERPcGNvZGUgeworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgY2hh
ciogY29uc3Qgc19vcE5hbWVzWzhdOworCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHVpbnQz
Ml90IG1hc2sgPSAweGZlMWZmYzFmOworICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBwYXR0ZXJu
ID0gMHhkNjFmMDAwMDsKKworICAgIERFRklORV9TVEFUSUNfRk9STUFUKEE2NERPcGNvZGVVbmNv
bmRpdGlvbmFsQnJhbmNoUmVnaXN0ZXIsIHRoaXNPYmopOworCisgICAgY29uc3QgY2hhciogZm9y
bWF0KCk7CisKKyAgICBjb25zdCBjaGFyKiBvcE5hbWUoKSB7IHJldHVybiBzX29wTmFtZXNbb3Bj
KCldOyB9CisgICAgdW5zaWduZWQgb3BjKCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDIxKSAmIDB4
ZjsgfQorfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkFSTTY0RGlzYXNzZW1ibGVyCisKK3Vz
aW5nIEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGU7CisKKyNlbmRpZiAvLyBBNjRE
T3Bjb2RlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIv
QVJNNjREaXNhc3NlbWJsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxl
ci9BUk02NERpc2Fzc2VtYmxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNGQ5Yjg2ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNh
c3NlbWJsZXIvQVJNNjREaXNhc3NlbWJsZXIuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCisKKyNpZiBVU0UoQVJNNjRfRElTQVNTRU1CTEVS
KQorCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSAiQVJNNjQv
QTY0RE9wY29kZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworYm9vbCB0cnlUb0Rpc2Fzc2VtYmxl
KGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgY29kZVB0ciwgc2l6ZV90IHNpemUsIGNvbnN0
IGNoYXIqIHByZWZpeCwgUHJpbnRTdHJlYW0mIG91dCwgSW5zdHJ1Y3Rpb25TdWJzZXRIaW50KQor
eworICAgIEE2NERPcGNvZGUgYXJtNjRPcGNvZGU7CisKKyAgICB1aW50MzJfdCogY3VycmVudFBD
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3Mo
KSk7CisgICAgc2l6ZV90IGJ5dGVDb3VudCA9IHNpemU7CisKKyAgICB3aGlsZSAoYnl0ZUNvdW50
KSB7CisgICAgICAgIGNoYXIgcGNTdHJpbmdbMjBdOworICAgICAgICBzbnByaW50ZihwY1N0cmlu
Zywgc2l6ZW9mKHBjU3RyaW5nKSwgIjB4JWx4IiwgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBs
b25nPihjdXJyZW50UEMpKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMlMTZzOiAlc1xuIiwgcHJl
Zml4LCBwY1N0cmluZywgYXJtNjRPcGNvZGUuZGlzYXNzZW1ibGUoY3VycmVudFBDKSk7CisgICAg
ICAgIGN1cnJlbnRQQysrOworICAgICAgICBieXRlQ291bnQgLT0gc2l6ZW9mKHVpbnQzMl90KTsK
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNl
bmRpZiAvLyBVU0UoQVJNNjRfRElTQVNTRU1CTEVSKQorCi0tIAoxLjguMy40IChBcHBsZSBHaXQt
NDcpCgo=
</data>
<flag name="review"
          id="236669"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214166</attachid>
            <date>2013-10-14 10:37:19 -0700</date>
            <delta_ts>2013-10-14 20:12:00 -0700</delta_ts>
            <desc>Yarr and DFG changes</desc>
            <filename>0005-Changes-to-DFG-heap-and-Yarr.patch</filename>
            <type>text/plain</type>
            <size>19663</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSBhYmZkZDZkYzlmOTI0ZDc3MjE4NmY0NjcwNTVhMzc5MDYxYjQzYjhjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRiYXRlc0B3ZWJraXQub3JnPgpEYXRl
OiBGcmksIDExIE9jdCAyMDEzIDE3OjMzOjI3IC0wNzAwClN1YmplY3Q6IFtQQVRDSCA1LzhdIENo
YW5nZXMgdG8gREZHLCBoZWFwIGFuZCBZYXJyCgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgIHwgMTE3ICsrKysrKysrKysrKysrKysrKysrKwog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCAgICAgICAgfCAgIDIg
Ky0KIC4uLi9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwIHwg
IDE4ICsrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQu
Y3BwIHwgIDEwICsrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcCAgICB8ICA1MCArKysrKysrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hp
bmVTdGFja01hcmtlci5jcHAgIHwgICA3ICsrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9S
ZWdpb24uaCAgICAgICAgICAgICAgICB8ICAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckpJVC5jcHAgICAgICAgICAgICAgfCAgMjkgKysrKy0KIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJKSVQuaCAgICAgICAgICAgICAgIHwgICAyICstCiA5IGZpbGVzIGNoYW5n
ZWQsIDIzMiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCmluZGV4IDJkMmI3ZjQuLjMyMGY4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyMCBAQAorMjAxMy0xMC0xMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CisKKyAgICAgICAgW2lPU10gVXBzdHJlYW0gSmF2YVNjcmlwdENvcmUgc3VwcG9ydCBmb3Ig
QVJNNjQKKyAgICAgICAgTmVlZCB0aGUgYnVnIFVSTCAoT09QUyEpLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvQmFzZS54
Y2NvbmZpZzoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25maWc6
CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWc6CisgICAg
ICAgICogQ29uZmlndXJhdGlvbnMvVG9vbEV4ZWN1dGFibGUueGNjb25maWc6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3Nl
bWJsZXIvQVJNNjRBc3NlbWJsZXIuaDogQWRkZWQuCisgICAgICAgICogYXNzZW1ibGVyL0Fic3Ry
YWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6aXNBUk02NCk6CisgICAgICAgIChK
U0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkxhYmVsOjpMYWJlbCk6CisgICAgICAgIChKU0M6
OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6Okp1bXA6Okp1bXApOgorICAgICAgICAoSlNDOjpBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyOjpKdW1wOjpsaW5rKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjo6SnVtcDo6bGlua1RvKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNy
b0Fzc2VtYmxlcjo6Q2FjaGVkVGVtcFJlZ2lzdGVyOjpDYWNoZWRUZW1wUmVnaXN0ZXIpOgorICAg
ICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpDYWNoZWRUZW1wUmVnaXN0ZXI6OnJl
Z2lzdGVySURJbnZhbGlkYXRlKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxl
cjo6Q2FjaGVkVGVtcFJlZ2lzdGVyOjpyZWdpc3RlcklETm9JbnZhbGlkYXRlKToKKyAgICAgICAg
KEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6Q2FjaGVkVGVtcFJlZ2lzdGVyOjp2YWx1ZSk6
CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkNhY2hlZFRlbXBSZWdpc3Rl
cjo6c2V0VmFsdWUpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpDYWNo
ZWRUZW1wUmVnaXN0ZXI6OmludmFsaWRhdGUpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyOjppbnZhbGlkYXRlQWxsVGVtcFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXI6OmlzVGVtcFJlZ2lzdGVyVmFsaWQpOgorICAgICAgICAoSlND
OjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpjbGVhclRlbXBSZWdpc3RlclZhbGlkKToKKyAgICAg
ICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6c2V0VGVtcFJlZ2lzdGVyVmFsaWQpOgor
ICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGlua0J1
ZmZlcjo6Y29weUNvbXBhY3RBbmRMaW5rQ29kZSk6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6
OmxpbmtDb2RlKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTGlua0J1ZmZlci5oOgorICAgICAgICAq
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
cjo6aXNQdHJBbGlnbmVkQWRkcmVzc09mZnNldCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyOjpwdXNoVG9TYXZlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBvcFRvUmVz
dG9yZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpwYXRjaGFibGVCcmFuY2hUZXN0
MzIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6IEFkZGVkLgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgICogZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVw
Tm9kZSk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBk
ZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRD
b21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aERpdik6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE1vZCk6Cisg
ICAgICAgICogZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKiBkaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5oOiBBZGRlZC4KKyAgICAgICAgKiBk
aXNhc3NlbWJsZXIvQVJNNjREaXNhc3NlbWJsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
dHJ5VG9EaXNhc3NlbWJsZSk6CisgICAgICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3Bw
OgorICAgICAgICAoSlNDOjpnZXRQbGF0Zm9ybVRocmVhZFJlZ2lzdGVycyk6CisgICAgICAgIChK
U0M6Om90aGVyVGhyZWFkU3RhY2tQb2ludGVyKToKKyAgICAgICAgKiBoZWFwL1JlZ2lvbi5oOgor
ICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjpkZWJ1Z0NhbGwpOgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAg
ICAgKiBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oOgorICAgICAgICAqIGppdC9GUFJJbmZvLmg6
CisgICAgICAgIChKU0M6OkZQUkluZm86OnRvUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpGUFJJ
bmZvOjp0b0luZGV4KToKKyAgICAgICAgKEpTQzo6RlBSSW5mbzo6ZGVidWdOYW1lKToKKyAgICAg
ICAgKiBqaXQvR1BSSW5mby5oOgorICAgICAgICAoSlNDOjpHUFJJbmZvOjp0b1JlZ2lzdGVyKToK
KyAgICAgICAgKEpTQzo6R1BSSW5mbzo6dG9JbmRleCk6CisgICAgICAgIChKU0M6OkdQUkluZm86
OmRlYnVnTmFtZSk6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
SklUOjpyZXN0b3JlQXJndW1lbnRSZWZlcmVuY2VGb3JUcmFtcG9saW5lKToKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9uV3JhcHBlcnMuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5j
cHA6CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6cGVyZm9ybVBs
YXRmb3JtU3BlY2lmaWNKSVRBc3NlcnRpb25zKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRC
eUlEKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuaDoKKyAgICAgICAgKEpTQzo6SklUU3RhY2tG
cmFtZTo6cmV0dXJuQWRkcmVzc1Nsb3QpOgorICAgICAgICAqIGppdC9KSVRTdHVic0FSTTY0Lmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpwZXJmb3JtQVJNNjRKSVRBc3NlcnRpb25zKToKKyAgICAg
ICAgKiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6Cisg
ICAgICAgIChKU0M6OmVtaXRSZXN0b3JlU2NyYXRjaCk6CisgICAgICAgIChKU0M6OmdlbmVyYXRl
UHJvdG9DaGFpbkFjY2Vzc1N0dWIpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5SUQpOgor
ICAgICAgICAoSlNDOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAgICAoSlNDOjp0cnlDYWNo
ZVB1dEJ5SUQpOgorICAgICAgICAoSlNDOjp0cnlSZXBhdGNoSW4pOgorICAgICAgICAqIGppdC9T
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaDoKKyAgICAgICAgKEpTQzo6U2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yOjpwcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyk6CisgICAgICAgIChK
U0M6OlNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5UG9w
cGluZyk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6
Om5hdGl2ZUZvckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmZsb29yVGh1bmtHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpjZWlsVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGpzYy5jcHA6
CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBsbGludC9MTEludE9mZmxpbmVBc21Db25maWcu
aDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxM
SW50OjpoYW5kbGVIb3N0Q2FsbCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAg
ICAgKiBvZmZsaW5lYXNtL2FybS5yYjoKKyAgICAgICAgKiBvZmZsaW5lYXNtL2FybTY0LnJiOiBB
ZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2JhY2tlbmRzLnJiOgorICAgICAgICAqIG9mZmxp
bmVhc20vaW5zdHJ1Y3Rpb25zLnJiOgorICAgICAgICAqIG9mZmxpbmVhc20vcmlzYy5yYjoKKyAg
ICAgICAgKiBvZmZsaW5lYXNtL3Jpc2NfYXJtNjQucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxp
bmVhc20vdHJhbnNmb3JtLnJiOgorICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJiOgorICAgICAg
ICAqIHlhcnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6
OmFsaWduQ2FsbEZyYW1lU2l6ZUluQnl0ZXMpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2Vu
ZXJhdG9yOjppbml0Q2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRv
cjo6cmVtb3ZlQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6
Z2VuZXJhdGVFbnRlcik6CisgICAgICAgICogeWFyci9ZYXJySklULmg6CisKIDIwMTMtMTAtMTMg
IE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFRyYW5zaXRpb24gbWlz
YyBjdGlfb3BfKiBKSVRTdHVicyB0byBKSVQgb3BlcmF0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDI0YWQyMzAuLjFhMzg1NWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMjMzLDcgKzIz
Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQXJpdGhNb2Q6IHsKICAgICAgICAgICAgIGlm
IChOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnQzMkZvckFyaXRobWV0aWMobm9kZS0+Y2hpbGQxKCku
bm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpCiAgICAgICAgICAgICAgICAgJiYgbm9kZS0+
Y2FuU3BlY3VsYXRlSW50MzIoKSkgewotICAgICAgICAgICAgICAgIGlmIChpc1g4NigpIHx8IGlz
QVJNdjdzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNYODYoKSB8fCBpc0FSTTY0KCkgfHwg
aXNBUk12N3MoKSkgewogICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUt
PmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCmluZGV4IDI4
ODI2NmEuLjU4ZjQ0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCkBAIC0xMjAsOCArMTIwLDEzIEBAIHZvaWQgT1NS
RXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdCBPcGVy
YW5kczxWYWx1ZVJlY292CiAgICAgICAgICAgICAgICAgc2NyYXRjaDEgPSBBc3NlbWJseUhlbHBl
cnM6OnNlbGVjdFNjcmF0Y2hHUFIodXNlZFJlZ2lzdGVyMSwgdXNlZFJlZ2lzdGVyMik7CiAgICAg
ICAgICAgICAgICAgc2NyYXRjaDIgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIo
dXNlZFJlZ2lzdGVyMSwgdXNlZFJlZ2lzdGVyMiwgc2NyYXRjaDEpOwogICAgICAgICAgICAgICAg
IAorI2lmIENQVShBUk02NCkKKyAgICAgICAgICAgICAgICBtX2ppdC5wdXNoVG9TYXZlKHNjcmF0
Y2gxKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5wdXNoVG9TYXZlKHNjcmF0Y2gyKTsKKyNlbHNl
CiAgICAgICAgICAgICAgICAgbV9qaXQucHVzaChzY3JhdGNoMSk7CiAgICAgICAgICAgICAgICAg
bV9qaXQucHVzaChzY3JhdGNoMik7CisjZW5kaWYKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBHUFJSZWcgdmFsdWU7CiAgICAgICAgICAgICAgICAgaWYgKGV4aXQubV9qc1ZhbHVl
U291cmNlLmlzQWRkcmVzcygpKSB7CkBAIC0xMzcsOCArMTQyLDEzIEBAIHZvaWQgT1NSRXhpdENv
bXBpbGVyOjpjb21waWxlRXhpdChjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdCBPcGVyYW5kczxW
YWx1ZVJlY292CiAgICAgICAgICAgICAgICAgbV9qaXQubHNoaWZ0MzIoc2NyYXRjaDEsIHNjcmF0
Y2gyKTsKICAgICAgICAgICAgICAgICBtX2ppdC5vcjMyKHNjcmF0Y2gyLCBBc3NlbWJseUhlbHBl
cnM6OkFic29sdXRlQWRkcmVzcyhhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkFycmF5TW9kZXMoKSkp
OwogICAgICAgICAgICAgICAgIAorI2lmIENQVShBUk02NCkKKyAgICAgICAgICAgICAgICBtX2pp
dC5wb3BUb1Jlc3RvcmUoc2NyYXRjaDIpOworICAgICAgICAgICAgICAgIG1faml0LnBvcFRvUmVz
dG9yZShzY3JhdGNoMSk7CisjZWxzZQogICAgICAgICAgICAgICAgIG1faml0LnBvcChzY3JhdGNo
Mik7CiAgICAgICAgICAgICAgICAgbV9qaXQucG9wKHNjcmF0Y2gxKTsKKyNlbmRpZgogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgICAgIApAQCAtMTQ5LDE0ICsxNTksMjIgQEAgdm9pZCBP
U1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0IE9w
ZXJhbmRzPFZhbHVlUmVjb3YKICAgICAgICAgICAgICAgICAvLyBTYXZlIGEgcmVnaXN0ZXIgc28g
d2UgY2FuIHVzZSBpdC4KICAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IEFzc2VtYmx5
SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUihleGl0Lm1fanNWYWx1ZVNvdXJjZS5iYXNlKCkpOwog
ICAgICAgICAgICAgICAgIAorI2lmIENQVShBUk02NCkKKyAgICAgICAgICAgICAgICBtX2ppdC5w
dXNoVG9TYXZlKHNjcmF0Y2gpOworI2Vsc2UKICAgICAgICAgICAgICAgICBtX2ppdC5wdXNoKHNj
cmF0Y2gpOworI2VuZGlmCiAKICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoZXhpdC5tX2pz
VmFsdWVTb3VyY2UuYXNBZGRyZXNzKE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yLCBhc0JpdHMudGFnKSksIHNjcmF0Y2gpOwogICAgICAgICAgICAgICAgIG1faml0LnN0b3Jl
MzIoc2NyYXRjaCwgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oYnVja2V0
KS0+YXNCaXRzLnRhZyk7CiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKGV4aXQubV9qc1Zh
bHVlU291cmNlLmFzQWRkcmVzcyhPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRv
ciwgYXNCaXRzLnBheWxvYWQpKSwgc2NyYXRjaCk7CiAgICAgICAgICAgICAgICAgbV9qaXQuc3Rv
cmUzMihzY3JhdGNoLCAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihidWNr
ZXQpLT5hc0JpdHMucGF5bG9hZCk7CiAgICAgICAgICAgICAgICAgCisjaWYgQ1BVKEFSTTY0KQor
ICAgICAgICAgICAgICAgIG1faml0LnBvcFRvUmVzdG9yZShzY3JhdGNoKTsKKyNlbHNlCiAgICAg
ICAgICAgICAgICAgbV9qaXQucG9wKHNjcmF0Y2gpOworI2VuZGlmCiAgICAgICAgICAgICB9IGVs
c2UgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmhhc0tub3duVGFnKCkpIHsKICAgICAgICAgICAg
ICAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGV4aXQubV9q
c1ZhbHVlU291cmNlLnRhZygpKSwgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
Kj4oYnVja2V0KS0+YXNCaXRzLnRhZyk7CiAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihl
eGl0Lm1fanNWYWx1ZVNvdXJjZS5wYXlsb2FkR1BSKCksICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZh
bHVlRGVzY3JpcHRvcio+KGJ1Y2tldCktPmFzQml0cy5wYXlsb2FkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAKaW5kZXggNGY2Njgz
YS4uZjljOGI5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0Q29tcGlsZXI2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0Q29tcGlsZXI2NC5jcHAKQEAgLTExMyw4ICsxMTMsMTMgQEAgdm9pZCBPU1JFeGl0Q29tcGls
ZXI6OmNvbXBpbGVFeGl0KGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0IE9wZXJhbmRzPFZhbHVl
UmVjb3YKICAgICAgICAgICAgICAgICBzY3JhdGNoMSA9IEFzc2VtYmx5SGVscGVyczo6c2VsZWN0
U2NyYXRjaEdQUih1c2VkUmVnaXN0ZXIpOwogICAgICAgICAgICAgICAgIHNjcmF0Y2gyID0gQXNz
ZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKHVzZWRSZWdpc3Rlciwgc2NyYXRjaDEpOwog
ICAgICAgICAgICAgICAgIAorI2lmIENQVShBUk02NCkKKyAgICAgICAgICAgICAgICBtX2ppdC5w
dXNoVG9TYXZlKHNjcmF0Y2gxKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5wdXNoVG9TYXZlKHNj
cmF0Y2gyKTsKKyNlbHNlCiAgICAgICAgICAgICAgICAgbV9qaXQucHVzaChzY3JhdGNoMSk7CiAg
ICAgICAgICAgICAgICAgbV9qaXQucHVzaChzY3JhdGNoMik7CisjZW5kaWYKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBHUFJSZWcgdmFsdWU7CiAgICAgICAgICAgICAgICAgaWYg
KGV4aXQubV9qc1ZhbHVlU291cmNlLmlzQWRkcmVzcygpKSB7CkBAIC0xMzAsOCArMTM1LDEzIEBA
IHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCBPU1JFeGl0JiBleGl0LCBj
b25zdCBPcGVyYW5kczxWYWx1ZVJlY292CiAgICAgICAgICAgICAgICAgbV9qaXQubHNoaWZ0MzIo
c2NyYXRjaDEsIHNjcmF0Y2gyKTsKICAgICAgICAgICAgICAgICBtX2ppdC5vcjMyKHNjcmF0Y2gy
LCBBc3NlbWJseUhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcnJheVByb2ZpbGUtPmFkZHJlc3NP
ZkFycmF5TW9kZXMoKSkpOwogICAgICAgICAgICAgICAgIAorI2lmIENQVShBUk02NCkKKyAgICAg
ICAgICAgICAgICBtX2ppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaDIpOworICAgICAgICAgICAgICAg
IG1faml0LnBvcFRvUmVzdG9yZShzY3JhdGNoMSk7CisjZWxzZQogICAgICAgICAgICAgICAgIG1f
aml0LnBvcChzY3JhdGNoMik7CiAgICAgICAgICAgICAgICAgbV9qaXQucG9wKHNjcmF0Y2gxKTsK
KyNlbmRpZgogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA0NThmZDNmLi5l
Njk4ZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9y
LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVy
LmgiCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogCkBAIC0zNTA3LDYgKzM1MDgsMzIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUFyaXRoRGl2KE5vZGUqIG5vZGUpCiAgICAgICAgIH0KIAogICAgICAgICBpbnQzMlJl
c3VsdChxdW90aWVudC5ncHIoKSwgbm9kZSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgICAgIFNw
ZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
IFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAg
ICAgIEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7CisgICAgICAgIEdQUlJlZyBvcDJHUFIgPSBv
cDIuZ3ByKCk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBxdW90aWVudCh0aGlzKTsKKyAgICAgICAg
R1BSVGVtcG9yYXJ5IG11bHRpcGx5QW5zd2VyKHRoaXMpOworCisgICAgICAgIC8vIElmIHRoZSB1
c2VyIGNhcmVzIGFib3V0IG5lZ2F0aXZlIHplcm8sIHRoZW4gc3BlY3VsYXRlIHRoYXQgd2UncmUg
bm90IGFib3V0CisgICAgICAgIC8vIHRvIHByb2R1Y2UgbmVnYXRpdmUgemVyby4KKyAgICAgICAg
aWYgKCFub2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKSB7
CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBudW1lcmF0b3JOb25aZXJvID0gbV9q
aXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBvcDFHUFIpOworICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhOZWdhdGl2ZVplcm8sIEpTVmFsdWVSZWdzKCksIDAsIG1f
aml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgb3AyR1BSLCBUcnVzdGVkSW1t
MzIoMCkpKTsKKyAgICAgICAgICAgIG51bWVyYXRvck5vblplcm8ubGluaygmbV9qaXQpOworICAg
ICAgICB9CisKKyAgICAgICAgbV9qaXQuYXNzZW1ibGVyKCkuc2RpdjwzMj4ocXVvdGllbnQuZ3By
KCksIG9wMUdQUiwgb3AyR1BSKTsKKworICAgICAgICAvLyBDaGVjayB0aGF0IHRoZXJlIHdhcyBu
byByZW1haW5kZXIuIElmIHRoZXJlIGhhZCBiZWVuLCB0aGVuIHdlJ2QgYmUgb2JsaWdhdGVkIHRv
CisgICAgICAgIC8vIHByb2R1Y2UgYSBkb3VibGUgcmVzdWx0IGluc3RlYWQuCisgICAgICAgIGlm
IChub2RlVXNlZEFzTnVtYmVyKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKSB7CisgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFu
Y2hNdWwzMihKSVRDb21waWxlcjo6T3ZlcmZsb3csIHF1b3RpZW50LmdwcigpLCBvcDJHUFIsIG11
bHRpcGx5QW5zd2VyLmdwcigpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJm
bG93LCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6Tm90RXF1
YWwsIG11bHRpcGx5QW5zd2VyLmdwcigpLCBvcDFHUFIpKTsKKyAgICAgICAgfQorCisgICAgICAg
IGludDMyUmVzdWx0KHF1b3RpZW50LmdwcigpLCBub2RlKTsKICNlbHNlCiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKQEAgLTM3NTgsNiArMzc4NSwyOSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhNb2QoTm9kZSogbm9kZSkKICAgICAgICAg
fQogCiAgICAgICAgIGludDMyUmVzdWx0KHF1b3RpZW50VGhlblJlbWFpbmRlckdQUiwgbm9kZSk7
CisjZWxpZiBDUFUoQVJNNjQpCisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAg
ICAgICBHUFJUZW1wb3JhcnkgcXVvdGllbnRUaGVuUmVtYWluZGVyKHRoaXMpOworICAgICAgICBH
UFJUZW1wb3JhcnkgbXVsdGlwbHlBbnN3ZXIodGhpcyk7CisgICAgICAgIEdQUlJlZyBkaXZpZGVu
ZEdQUiA9IG9wMS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIGRpdmlzb3JHUFIgPSBvcDIuZ3ByKCk7
CisgICAgICAgIEdQUlJlZyBxdW90aWVudFRoZW5SZW1haW5kZXJHUFIgPSBxdW90aWVudFRoZW5S
ZW1haW5kZXIuZ3ByKCk7CisgICAgICAgIEdQUlJlZyBtdWx0aXBseUFuc3dlckdQUiA9IG11bHRp
cGx5QW5zd2VyLmdwcigpOworCisgICAgICAgIG1faml0LmFzc2VtYmxlcigpLnNkaXY8MzI+KHF1
b3RpZW50VGhlblJlbWFpbmRlckdQUiwgZGl2aWRlbmRHUFIsIGRpdmlzb3JHUFIpOworICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFu
Y2hNdWwzMihKSVRDb21waWxlcjo6T3ZlcmZsb3csIHF1b3RpZW50VGhlblJlbWFpbmRlckdQUiwg
ZGl2aXNvckdQUiwgbXVsdGlwbHlBbnN3ZXJHUFIpKTsKKyAgICAgICAgbV9qaXQuYXNzZW1ibGVy
KCkuc3ViPDMyPihxdW90aWVudFRoZW5SZW1haW5kZXJHUFIsIGRpdmlkZW5kR1BSLCBtdWx0aXBs
eUFuc3dlckdQUik7CisKKyAgICAgICAgLy8gSWYgdGhlIHVzZXIgY2FyZXMgYWJvdXQgbmVnYXRp
dmUgemVybywgdGhlbiBzcGVjdWxhdGUgdGhhdCB3ZSdyZSBub3QgYWJvdXQKKyAgICAgICAgLy8g
dG8gcHJvZHVjZSBuZWdhdGl2ZSB6ZXJvLgorICAgICAgICBpZiAoIW5vZGVDYW5JZ25vcmVOZWdh
dGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpIHsKKyAgICAgICAgICAgIC8vIENoZWNr
IHRoYXQgd2UncmUgbm90IGFib3V0IHRvIGNyZWF0ZSBuZWdhdGl2ZSB6ZXJvLgorICAgICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgbnVtZXJhdG9yUG9zaXRpdmUgPSBtX2ppdC5icmFuY2gzMihK
SVRDb21waWxlcjo6R3JlYXRlclRoYW5PckVxdWFsLCBkaXZpZGVuZEdQUiwgVHJ1c3RlZEltbTMy
KDApKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdz
KCksIDAsIG1faml0LmJyYW5jaFRlc3QzMihKSVRDb21waWxlcjo6WmVybywgcXVvdGllbnRUaGVu
UmVtYWluZGVyR1BSKSk7CisgICAgICAgICAgICBudW1lcmF0b3JQb3NpdGl2ZS5saW5rKCZtX2pp
dCk7CisgICAgICAgIH0KKworICAgICAgICBpbnQzMlJlc3VsdChxdW90aWVudFRoZW5SZW1haW5k
ZXJHUFIsIG5vZGUpOwogI2Vsc2UgLy8gbm90IGFyY2hpdGVjdHVyZSB0aGF0IGNhbiBkbyBpbnRl
Z2VyIGRpdmlzaW9uCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01h
cmtlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIu
Y3BwCmluZGV4IDc4ZmRmYTQuLjYzODU0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcApAQCAtMzAzLDYgKzMwMyw4IEBAIHR5cGVk
ZWYgcHBjX3RocmVhZF9zdGF0ZV90IFBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJzOwogdHlwZWRlZiBw
cGNfdGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVRocmVhZFJlZ2lzdGVyczsKICNlbGlmIENQVShB
Uk0pCiB0eXBlZGVmIGFybV90aHJlYWRfc3RhdGVfdCBQbGF0Zm9ybVRocmVhZFJlZ2lzdGVyczsK
KyNlbGlmIENQVShBUk02NCkKK3R5cGVkZWYgYXJtX3RocmVhZF9zdGF0ZTY0X3QgUGxhdGZvcm1U
aHJlYWRSZWdpc3RlcnM7CiAjZWxzZQogI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCiAjZW5k
aWYKQEAgLTMzNiw2ICszMzgsOSBAQCBzdGF0aWMgc2l6ZV90IGdldFBsYXRmb3JtVGhyZWFkUmVn
aXN0ZXJzKGNvbnN0IFBsYXRmb3JtVGhyZWFkJiBwbGF0Zm9ybVRocmVhZCwgUAogI2VsaWYgQ1BV
KEFSTSkKICAgICB1bnNpZ25lZCB1c2VyX2NvdW50ID0gQVJNX1RIUkVBRF9TVEFURV9DT1VOVDsK
ICAgICB0aHJlYWRfc3RhdGVfZmxhdm9yX3QgZmxhdm9yID0gQVJNX1RIUkVBRF9TVEFURTsKKyNl
bGlmIENQVShBUk02NCkKKyAgICB1bnNpZ25lZCB1c2VyX2NvdW50ID0gQVJNX1RIUkVBRF9TVEFU
RTY0X0NPVU5UOworICAgIHRocmVhZF9zdGF0ZV9mbGF2b3JfdCBmbGF2b3IgPSBBUk1fVEhSRUFE
X1NUQVRFNjQ7CiAjZWxzZQogI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCiAjZW5kaWYKQEAg
LTM5OCw2ICs0MDMsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQqIG90aGVyVGhyZWFkU3RhY2tQb2lu
dGVyKGNvbnN0IFBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJzJiByZWdzKQogICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcjEpOwogI2VsaWYgQ1BVKEFSTSkKICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX3NwKTsKKyNlbGlmIENQVShBUk02NCkK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX3NwKTsKICNlbHNlCiAj
ZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvUmVnaW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9S
ZWdpb24uaAppbmRleCAzNjZmMjU2Li5jNjM4MDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9SZWdpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9S
ZWdpb24uaApAQCAtMzcsNyArMzcsNyBAQAogI2RlZmluZSBFTkFCTEVfU1VQRVJfUkVHSU9OIDAK
IAogI2lmbmRlZiBFTkFCTEVfU1VQRVJfUkVHSU9OCi0jaWYgVVNFKEpTVkFMVUU2NCkKKyNpZiBV
U0UoSlNWQUxVRTY0KSAmJiAhQ1BVKEFSTTY0KQogI2RlZmluZSBFTkFCTEVfU1VQRVJfUkVHSU9O
IDEKICNlbHNlCiAjZGVmaW5lIEVOQUJMRV9TVVBFUl9SRUdJT04gMApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJySklULmNwcAppbmRleCAxYjJiMDMxLi45Mzc5MjRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJySklULmNwcApAQCAtNTMsNiArNTMsMTcgQEAgY2xhc3MgWWFyckdl
bmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgc3RhdGljIGNvbnN0IFJl
Z2lzdGVySUQgcmV0dXJuUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnIwOwogICAgIHN0YXRpYyBj
b25zdCBSZWdpc3RlcklEIHJldHVyblJlZ2lzdGVyMiA9IEFSTVJlZ2lzdGVyczo6cjE7CisjZWxp
ZiBDUFUoQVJNNjQpCisgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgaW5wdXQgPSBBUk02NFJl
Z2lzdGVyczo6eDA7CisgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgaW5kZXggPSBBUk02NFJl
Z2lzdGVyczo6eDE7CisgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgbGVuZ3RoID0gQVJNNjRS
ZWdpc3RlcnM6OngyOworICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIG91dHB1dCA9IEFSTTY0
UmVnaXN0ZXJzOjp4MzsKKworICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QwID0gQVJN
NjRSZWdpc3RlcnM6Ong0OworICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QxID0gQVJN
NjRSZWdpc3RlcnM6Ong1OworCisgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmV0dXJuUmVn
aXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6eDA7CisgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQg
cmV0dXJuUmVnaXN0ZXIyID0gQVJNNjRSZWdpc3RlcnM6OngxOwogI2VsaWYgQ1BVKE1JUFMpCiAg
ICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgaW5wdXQgPSBNSVBTUmVnaXN0ZXJzOjphMDsKICAg
ICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBpbmRleCA9IE1JUFNSZWdpc3RlcnM6OmExOwpAQCAt
MzIyLDE3ICszMzMsMjcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3Nl
bWJsZXIgewogICAgICAgICBqdW1wKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIGZyYW1l
TG9jYXRpb24gKiBzaXplb2Yodm9pZCopKSk7CiAgICAgfQogCisgICAgdW5zaWduZWQgYWxpZ25D
YWxsRnJhbWVTaXplSW5CeXRlcyh1bnNpZ25lZCBjYWxsRnJhbWVTaXplKQorICAgIHsKKyAgICAg
ICAgY2FsbEZyYW1lU2l6ZSAqPSBzaXplb2Yodm9pZCopOworICAgICAgICBpZiAoY2FsbEZyYW1l
U2l6ZSAvIHNpemVvZih2b2lkKikgIT0gbV9wYXR0ZXJuLm1fYm9keS0+bV9jYWxsRnJhbWVTaXpl
KQorICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgY2FsbEZyYW1lU2l6ZSA9IChjYWxsRnJh
bWVTaXplICsgMHgzZikgJiB+MHgzZjsKKyAgICAgICAgaWYgKCFjYWxsRnJhbWVTaXplKQorICAg
ICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgcmV0dXJuIGNhbGxGcmFtZVNpemU7CisgICAgfQog
ICAgIHZvaWQgaW5pdENhbGxGcmFtZSgpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBjYWxsRnJh
bWVTaXplID0gbV9wYXR0ZXJuLm1fYm9keS0+bV9jYWxsRnJhbWVTaXplOwogICAgICAgICBpZiAo
Y2FsbEZyYW1lU2l6ZSkKLSAgICAgICAgICAgIHN1YlB0cihJbW0zMihjYWxsRnJhbWVTaXplICog
c2l6ZW9mKHZvaWQqKSksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgICAgIHN1YlB0
cihJbW0zMihhbGlnbkNhbGxGcmFtZVNpemVJbkJ5dGVzKGNhbGxGcmFtZVNpemUpKSwgc3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOwogICAgIH0KICAgICB2b2lkIHJlbW92ZUNhbGxGcmFtZSgpCiAgICAg
ewogICAgICAgICB1bnNpZ25lZCBjYWxsRnJhbWVTaXplID0gbV9wYXR0ZXJuLm1fYm9keS0+bV9j
YWxsRnJhbWVTaXplOwogICAgICAgICBpZiAoY2FsbEZyYW1lU2l6ZSkKLSAgICAgICAgICAgIGFk
ZFB0cihJbW0zMihjYWxsRnJhbWVTaXplICogc2l6ZW9mKHZvaWQqKSksIHN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsKKyAgICAgICAgICAgIGFkZFB0cihJbW0zMihhbGlnbkNhbGxGcmFtZVNpemVJbkJ5
dGVzKGNhbGxGcmFtZVNpemUpKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIH0KIAogICAg
IC8vIFVzZWQgdG8gcmVjb3JkIHN1YnBhdHRlcnMsIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBj
b21waWxlTW9kZSBpcyBJbmNsdWRlU3VicGF0dGVybnMuCkBAIC0yNTQ5LDYgKzI1NzAsMTAgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBp
ZiAoY29tcGlsZU1vZGUgPT0gSW5jbHVkZVN1YnBhdHRlcm5zKQogICAgICAgICAgICAgbG9hZFB0
cihBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZWJwLCAyICogc2l6ZW9mKHZvaWQqKSksIG91dHB1dCk7
CiAgICAgI2VuZGlmCisjZWxpZiBDUFUoQVJNNjQpCisgICAgICAgIC8vIFRoZSBBQkkgZG9lc24n
dCBndWFyYW50ZWUgdGhlIHVwcGVyIGJpdHMgYXJlIHplcm8gb24gdW5zaWduZWQgYXJndW1lbnRz
LCBzbyBjbGVhciB0aGVtIG91cnNlbHZlcy4KKyAgICAgICAgemVyb0V4dGVuZDMyVG9QdHIoaW5k
ZXgsIGluZGV4KTsKKyAgICAgICAgemVyb0V4dGVuZDMyVG9QdHIobGVuZ3RoLCBsZW5ndGgpOwog
I2VsaWYgQ1BVKEFSTSkKICAgICAgICAgcHVzaChBUk1SZWdpc3RlcnM6OnI0KTsKICAgICAgICAg
cHVzaChBUk1SZWdpc3RlcnM6OnI1KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaApp
bmRleCBiN2NlN2QzLi5lN2IyMjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJySklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5o
CkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIEV4ZWN1dGFibGVQb29sOwogbmFtZXNwYWNlIFlhcnIg
ewogCiBjbGFzcyBZYXJyQ29kZUJsb2NrIHsKLSNpZiBDUFUoWDg2XzY0KQorI2lmIENQVShYODZf
NjQpIHx8IENQVShBUk02NCkKICAgICB0eXBlZGVmIE1hdGNoUmVzdWx0ICgqWWFyckpJVENvZGU4
KShjb25zdCBMQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGlu
dCogb3V0cHV0KSBZQVJSX0NBTEw7CiAgICAgdHlwZWRlZiBNYXRjaFJlc3VsdCAoKllhcnJKSVRD
b2RlMTYpKGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0
aCwgaW50KiBvdXRwdXQpIFlBUlJfQ0FMTDsKICAgICB0eXBlZGVmIE1hdGNoUmVzdWx0ICgqWWFy
ckpJVENvZGVNYXRjaE9ubHk4KShjb25zdCBMQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1
bnNpZ25lZCBsZW5ndGgpIFlBUlJfQ0FMTDsKLS0gCjEuOC4zLjQgKEFwcGxlIEdpdC00NykKCg==
</data>
<flag name="review"
          id="236670"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="236677"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214167</attachid>
            <date>2013-10-14 10:37:37 -0700</date>
            <delta_ts>2013-10-14 17:28:36 -0700</delta_ts>
            <desc>Offlineasm changes</desc>
            <filename>0006-Changes-to-offlineasm.patch</filename>
            <type>text/plain</type>
            <size>44704</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSBhYzM5ZmYzOTY2M2RkMzAwYjk4OTliNWYwODA0YTA5NjMwNjYyOWQ3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRiYXRlc0B3ZWJraXQub3JnPgpEYXRl
OiBGcmksIDExIE9jdCAyMDEzIDE3OjM0OjE3IC0wNzAwClN1YmplY3Q6IFtQQVRDSCA2LzhdIENo
YW5nZXMgdG8gb2ZmbGluZWFzbQoKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9hcm0ucmIgICAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2FybTY0LnJiICAgICAgICB8IDc5MiArKysrKysrKysrKysrKysrKysrKysrKwogU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIgICAgIHwgICAzICsKIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYiB8ICAxMyArLQogU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmlzYy5yYiAgICAgICAgIHwgIDEwICstCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yaXNjX2FybTY0LnJiICAgfCAyMDQgKysr
KysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIgICAgfCAg
MTEgKwogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiICAgICAgICAgIHwg
ICAyICstCiA4IGZpbGVzIGNoYW5nZWQsIDEwMjcgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25z
KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YXJtNjQucmIKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9yaXNjX2FybTY0LnJiCgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vYXJtLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtLnJi
CmluZGV4IDQ5ODMzM2IuLjNjNjllZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2FybS5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9hcm0ucmIKQEAgLTIxNyw3ICsyMTcsNyBAQCBjbGFzcyBTZXF1ZW5jZQogICAgICAgICAgICAg
ZW5kCiAgICAgICAgIH0KICAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyTWFsZm9ybWVkQWRkcmVz
c2VzRG91YmxlKHJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyTWlzcGxhY2VkSW1t
ZWRpYXRlcyhyZXN1bHQsIFsic3RvcmViIiwgInN0b3JlaSIsICJzdG9yZXAiXSkKKyAgICAgICAg
cmVzdWx0ID0gcmlzY0xvd2VyTWlzcGxhY2VkSW1tZWRpYXRlcyhyZXN1bHQsIFsic3RvcmViIiwg
InN0b3JlaSIsICJzdG9yZXAiLCAic3RvcmVxIl0pCiAgICAgICAgIHJlc3VsdCA9IHJpc2NMb3dl
ck1hbGZvcm1lZEltbWVkaWF0ZXMocmVzdWx0LCAwLi4weGZmKQogICAgICAgICByZXN1bHQgPSBy
aXNjTG93ZXJNaXNwbGFjZWRBZGRyZXNzZXMocmVzdWx0KQogICAgICAgICByZXN1bHQgPSByaXNj
TG93ZXJSZWdpc3RlclJldXNlKHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vYXJtNjQucmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVlYWEyMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0
LnJiCkBAIC0wLDAgKzEsNzkyIEBACisjIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJvcHQiCityZXF1aXJlICJyaXNjIgor
cmVxdWlyZSAicmlzY19hcm02NCIKKworIyBOYW1pbmcgY29udmVudGlvbnM6CisjCisjIHg8bnVt
YmVyPiAgPT4gR1BSLiBUaGlzIGlzIGJvdGggdGhlIGdlbmVyaWMgbmFtZSBvZiB0aGUgcmVnaXN0
ZXIsIGFuZCB0aGUgbmFtZSB1c2VkCisjICAgICAgICAgICAgICAgdG8gaW5kaWNhdGUgdGhhdCB0
aGUgcmVnaXN0ZXIgaXMgdXNlZCBpbiA2NC1iaXQgbW9kZS4KKyMgdzxudW1iZXI+ICA9PiBHUFIg
aW4gMzItYml0IG1vZGUuIFRoaXMgaXMgdGhlIGxvdyAzMi1iaXRzIG9mIHRoZSBHUFIuIElmIGl0
IGlzCisjICAgICAgICAgICAgICAgbXV0YXRlZCB0aGVuIHRoZSBoaWdoIDMyLWJpdCBwYXJ0IG9m
IHRoZSByZWdpc3RlciBpcyB6ZXJvIGZpbGxlZC4KKyMgcTxudW1iZXI+ICA9PiBGUFIuIFRoaXMg
aXMgdGhlIGdlbmVyaWMgbmFtZSBvZiB0aGUgcmVnaXN0ZXIuCisjIGQ8bnVtYmVyPiAgPT4gRlBS
IHVzZWQgYXMgYW4gSUVFRSA2NC1iaXQgYmluYXJ5IGZsb2F0aW5nIHBvaW50IG51bWJlciAoaS5l
LiBkb3VibGUpLgorIworIyBHUFIgY29udmVudGlvbnMsIHRvIG1hdGNoIHRoZSBiYXNlbGluZSBK
SVQ6CisjCisjICB4MCAgPT4gcmV0dXJuIHZhbHVlLCBjYWNoZWQgcmVzdWx0LCBmaXJzdCBhcmd1
bWVudCwgdDAsIGEwLCByMAorIyAgeDEgID0+IHQxLCBhMSwgcjEKKyMgIHgyICA9PiB0MgorIyAg
eDkgID0+IChub25BcmdHUFIxIGluIGJhc2VsaW5lKQorIyB4MTAgID0+IHQ0ICh1bnVzZWQgaW4g
YmFzZWxpbmUpCisjIHgxMSAgPT4gdDUgKHVudXNlZCBpbiBiYXNlbGluZSkKKyMgeDEyICA9PiB0
NiAodW51c2VkIGluIGJhc2VsaW5lKQorIyB4MTMgID0+IHNjcmF0Y2ggKHVudXNlZCBpbiBiYXNl
bGluZSkKKyMgeDE2ICA9PiBzY3JhdGNoCisjIHgxNyAgPT4gc2NyYXRjaAorIyB4MjMgID0+IHQz
CisjIHgyNSAgPT4gY2ZyCisjIHgyNiAgPT4gdGltZW91dCBjaGVjayAoaS5lLiBub3QgdG91Y2hl
ZCBieSBMTEludCkKKyMgeDI3ICA9PiBjc3IxICh0YWdUeXBlTnVtYmVyKQorIyB4MjggID0+IGNz
cjIgKHRhZ01hc2spCisjICBzcCAgPT4gc3AKKyMgIGxyICA9PiBscgorIworIyBGUFIgY29uZW50
aW9ucywgdG8gbWF0Y2ggdGhlIGJhc2VsaW5lIEpJVDoKKyMKKyMgIHEwICA9PiBmdDAKKyMgIHEx
ICA9PiBmdDEKKyMgIHEyICA9PiBmdDIKKyMgIHEzICA9PiBmdDMKKyMgIHE0ICA9PiBmdDQgKHVu
dXNlZCBpbiBiYXNlbGluZSkKKyMgIHE1ICA9PiBmdDUgKHVudXNlZCBpbiBiYXNlbGluZSkKKyMg
cTMxICA9PiBzY3JhdGNoCisKK2RlZiBhcm02NEdQUk5hbWUobmFtZSwga2luZCkKKyAgICByYWlz
ZSAiYmFkIEdQUiBuYW1lICN7bmFtZX0iIHVubGVzcyBuYW1lID1+IC9eeC8KKyAgICBudW1iZXIg
PSBuYW1lWzEuLi0xXQorICAgIGNhc2Uga2luZAorICAgIHdoZW4gOmludAorICAgICAgICAidyIg
KyBudW1iZXIKKyAgICB3aGVuIDpwdHIKKyAgICAgICAgIngiICsgbnVtYmVyCisgICAgZWxzZQor
ICAgICAgICByYWlzZSAiV3Jvbmcga2luZDogI3traW5kfSIKKyAgICBlbmQKK2VuZAorCitkZWYg
YXJtNjRGUFJOYW1lKG5hbWUsIGtpbmQpCisgICAgcmFpc2UgImJhZCBGUFIga2luZCAje2tpbmR9
IiB1bmxlc3Mga2luZCA9PSA6ZG91YmxlCisgICAgcmFpc2UgImJhZCBGUFIgbmFtZSAje25hbWV9
IiB1bmxlc3MgbmFtZSA9fiAvXnEvCisgICAgImQiICsgbmFtZVsxLi4tMV0KK2VuZAorCitjbGFz
cyBTcGVjaWFsUmVnaXN0ZXIKKyAgICBkZWYgYXJtNjRPcGVyYW5kKGtpbmQpCisgICAgICAgIGNh
c2UgQG5hbWUKKyAgICAgICAgd2hlbiAvXngvCisgICAgICAgICAgICBhcm02NEdQUk5hbWUoQG5h
bWUsIGtpbmQpCisgICAgICAgIHdoZW4gL15xLworICAgICAgICAgICAgYXJtNjRGUFJOYW1lKEBu
YW1lLCBraW5kKQorICAgICAgICBlbHNlCisgICAgICAgICAgICByYWlzZSAiQmFkIG5hbWU6ICN7
QG5hbWV9IgorICAgICAgICBlbmQKKyAgICBlbmQKK2VuZAorCitBUk02NF9FWFRSQV9HUFJTID0g
W1NwZWNpYWxSZWdpc3Rlci5uZXcoIngxNiIpLCBTcGVjaWFsUmVnaXN0ZXIubmV3KCJ4MTciKSwg
U3BlY2lhbFJlZ2lzdGVyLm5ldygieDEzIildCitBUk02NF9FWFRSQV9GUFJTID0gW1NwZWNpYWxS
ZWdpc3Rlci5uZXcoInEzMSIpXQorCitjbGFzcyBSZWdpc3RlcklECisgICAgZGVmIGFybTY0T3Bl
cmFuZChraW5kKQorICAgICAgICBjYXNlIEBuYW1lCisgICAgICAgIHdoZW4gJ3QwJywgJ2EwJywg
J3IwJworICAgICAgICAgICAgYXJtNjRHUFJOYW1lKCd4MCcsIGtpbmQpCisgICAgICAgIHdoZW4g
J3QxJywgJ2ExJywgJ3IxJworICAgICAgICAgICAgYXJtNjRHUFJOYW1lKCd4MScsIGtpbmQpCisg
ICAgICAgIHdoZW4gJ3QyJworICAgICAgICAgICAgYXJtNjRHUFJOYW1lKCd4MicsIGtpbmQpCisg
ICAgICAgIHdoZW4gJ3QzJworICAgICAgICAgICAgYXJtNjRHUFJOYW1lKCd4MjMnLCBraW5kKQor
ICAgICAgICB3aGVuICd0NCcKKyAgICAgICAgICAgIGFybTY0R1BSTmFtZSgneDEwJywga2luZCkK
KyAgICAgICAgd2hlbiAndDUnCisgICAgICAgICAgICBhcm02NEdQUk5hbWUoJ3gxMScsIGtpbmQp
CisgICAgICAgIHdoZW4gJ3Q2JworICAgICAgICAgICAgYXJtNjRHUFJOYW1lKCd4MTInLCBraW5k
KQorICAgICAgICB3aGVuICdjZnInCisgICAgICAgICAgICBhcm02NEdQUk5hbWUoJ3gyNScsIGtp
bmQpCisgICAgICAgIHdoZW4gJ2NzcjEnCisgICAgICAgICAgICBhcm02NEdQUk5hbWUoJ3gyNycs
IGtpbmQpCisgICAgICAgIHdoZW4gJ2NzcjInCisgICAgICAgICAgICBhcm02NEdQUk5hbWUoJ3gy
OCcsIGtpbmQpCisgICAgICAgIHdoZW4gJ3NwJworICAgICAgICAgICAgJ3NwJworICAgICAgICB3
aGVuICdscicKKyAgICAgICAgICAgICdscicKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFp
c2UgIkJhZCByZWdpc3RlciBuYW1lICN7QG5hbWV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisg
ICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICAgIGRlZiBh
cm02NE9wZXJhbmQoa2luZCkKKyAgICAgICAgY2FzZSBAbmFtZQorICAgICAgICB3aGVuICdmdDAn
CisgICAgICAgICAgICBhcm02NEZQUk5hbWUoJ3EwJywga2luZCkKKyAgICAgICAgd2hlbiAnZnQx
JworICAgICAgICAgICAgYXJtNjRGUFJOYW1lKCdxMScsIGtpbmQpCisgICAgICAgIHdoZW4gJ2Z0
MicKKyAgICAgICAgICAgIGFybTY0RlBSTmFtZSgncTInLCBraW5kKQorICAgICAgICB3aGVuICdm
dDMnCisgICAgICAgICAgICBhcm02NEZQUk5hbWUoJ3EzJywga2luZCkKKyAgICAgICAgd2hlbiAn
ZnQ0JworICAgICAgICAgICAgYXJtNjRGUFJOYW1lKCdxNCcsIGtpbmQpCisgICAgICAgIHdoZW4g
J2Z0NScKKyAgICAgICAgICAgIGFybTY0RlBSTmFtZSgncTUnLCBraW5kKQorICAgICAgICBlbHNl
ICJCYWQgcmVnaXN0ZXIgbmFtZSAje0BuYW1lfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAg
ICAgICBlbmQKKyAgICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgICBkZWYgYXJtNjRP
cGVyYW5kKGtpbmQpCisgICAgICAgIHJhaXNlICJJbnZhbGlkIGltbWVkaWF0ZSAje3ZhbHVlfSBh
dCAje2NvZGVPcmlnaW5TdHJpbmd9IiBpZiB2YWx1ZSA8IDAgb3IgdmFsdWUgPiA0MDk1CisgICAg
ICAgICJcIyN7dmFsdWV9IgorICAgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgICBkZWYg
YXJtNjRPcGVyYW5kKGtpbmQpCisgICAgICAgIHJhaXNlICJJbnZhbGlkIG9mZnNldCAje29mZnNl
dC52YWx1ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgaWYgb2Zmc2V0LnZhbHVlIDwgLTI1NSBv
ciBvZmZzZXQudmFsdWUgPiA0MDk1CisgICAgICAgICJbI3tiYXNlLmFybTY0T3BlcmFuZCg6cHRy
KX0sIFwjI3tvZmZzZXQudmFsdWV9XSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgYXJtNjRFbWl0
TGVhKGRlc3RpbmF0aW9uLCBraW5kKQorICAgICAgICAkYXNtLnB1dHMgImFkZCAje2Rlc3RpbmF0
aW9uLmFybTY0T3BlcmFuZChraW5kKX0sICN7YmFzZS5hcm02NE9wZXJhbmQoa2luZCl9LCBcIyN7
b2Zmc2V0LnZhbHVlfSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgICBkZWYg
YXJtNjRPcGVyYW5kKGtpbmQpCisgICAgICAgIHJhaXNlICJJbnZhbGlkIG9mZnNldCAje29mZnNl
dC52YWx1ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgaWYgb2Zmc2V0LnZhbHVlICE9IDAKKyAg
ICAgICAgIlsje2Jhc2UuYXJtNjRPcGVyYW5kKDpwdHIpfSwgI3tpbmRleC5hcm02NE9wZXJhbmQo
OnB0cil9LCBsc2wgXCMje3NjYWxlU2hpZnR9XSIKKyAgICBlbmQKKworICAgIGRlZiBhcm02NEVt
aXRMZWEoZGVzdGluYXRpb24sIGtpbmQpCisgICAgICAgICRhc20ucHV0cyAiYWRkICN7ZGVzdGlu
YXRpb24uYXJtNjRPcGVyYW5kKGtpbmQpfSwgI3tiYXNlLmFybTY0T3BlcmFuZChraW5kKX0sICN7
aW5kZXguYXJtNjRPcGVyYW5kKGtpbmQpfSwgbHNsIFwjI3tzY2FsZVNoaWZ0fSIKKyAgICBlbmQK
K2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgICBkZWYgYXJtNjRPcGVyYW5kKGtpbmQp
CisgICAgICAgIHJhaXNlICJVbmNvbnZlcnRlZCBhYnNvbHV0ZSBhZGRyZXNzICN7YWRkcmVzcy52
YWx1ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICBlbmQKK2VuZAorCisjIEZJWE1FOiB3
ZSBjb3VsZCBzdXBwb3J0IEFic29sdXRlQWRkcmVzcyBmb3IgbGVhLCBidXQgd2UgZG9uJ3QuCisK
KyMKKyMgQWN0dWFsIGxvd2VyaW5nIGNvZGUgZm9sbG93cy4KKyMKKworY2xhc3MgU2VxdWVuY2UK
KyAgICBkZWYgZ2V0TW9kaWZpZWRMaXN0QVJNNjQKKyAgICAgICAgcmVzdWx0ID0gQGxpc3QKKyAg
ICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyTm90KHJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0gcmlz
Y0xvd2VyU2ltcGxlQnJhbmNoT3BzKHJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2Vy
SGFyZEJyYW5jaE9wczY0KHJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyU2hpZnRP
cHMocmVzdWx0KQorICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJNYWxmb3JtZWRBZGRyZXNzZXMo
cmVzdWx0KSB7CisgICAgICAgICAgICB8IG5vZGUsIGFkZHJlc3MgfAorICAgICAgICAgICAgY2Fz
ZSBub2RlLm9wY29kZQorICAgICAgICAgICAgd2hlbiAibG9hZGIiLCAibG9hZGJzIiwgInN0b3Jl
YiIsIC9eYmIvLCAvXmJ0Yi8sIC9eY2IvLCAvXnRiLworICAgICAgICAgICAgICAgIHNpemUgPSAx
CisgICAgICAgICAgICB3aGVuICJsb2FkaCIsICJsb2FkaHMiCisgICAgICAgICAgICAgICAgc2l6
ZSA9IDIKKyAgICAgICAgICAgIHdoZW4gImxvYWRpIiwgImxvYWRpcyIsICJzdG9yZWkiLCAiYWRk
aSIsICJhbmRpIiwgImxzaGlmdGkiLCAibXVsaSIsICJuZWdpIiwKKyAgICAgICAgICAgICAgICAi
bm90aSIsICJvcmkiLCAicnNoaWZ0aSIsICJ1cnNoaWZ0aSIsICJzdWJpIiwgInhvcmkiLCAvXmJp
LywgL15idGkvLAorICAgICAgICAgICAgICAgIC9eY2kvLCAvXnRpLywgImFkZGlzIiwgInN1Ymlz
IiwgIm11bGlzIiwgInNtdWxsaSIsICJsZWFpIgorICAgICAgICAgICAgICAgIHNpemUgPSA0Cisg
ICAgICAgICAgICB3aGVuICJsb2FkcCIsICJzdG9yZXAiLCAibG9hZHEiLCAic3RvcmVxIiwgImxv
YWRkIiwgInN0b3JlZCIsICJsc2hpZnRwIiwgImxzaGlmdHEiLCAibmVncCIsICJuZWdxIiwgInJz
aGlmdHAiLCAicnNoaWZ0cSIsCisgICAgICAgICAgICAgICAgInVyc2hpZnRwIiwgInVyc2hpZnRx
IiwgImFkZHAiLCAiYWRkcSIsICJtdWxwIiwgIm11bHEiLCAiYW5kcCIsICJhbmRxIiwgIm9ycCIs
ICJvcnEiLCAic3VicCIsICJzdWJxIiwgInhvcnAiLCAieG9ycSIsICJhZGRkIiwKKyAgICAgICAg
ICAgICAgICAiZGl2ZCIsICJzdWJkIiwgIm11bGQiLCAic3FydGQiLCAvXmJwLywgL15icS8sIC9e
YnRwLywgL15idHEvLCAvXmNwLywgL15jcS8sIC9edHAvLCAvXnRxLywgL15iZC8sCisgICAgICAg
ICAgICAgICAgImptcCIsICJjYWxsIiwgImxlYXAiLCAibGVhcSIKKyAgICAgICAgICAgICAgICBz
aXplID0gOAorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJhaXNlICJCYWQgaW5z
dHJ1Y3Rpb24gI3tub2RlLm9wY29kZX0gZm9yIGhlYXAgYWNjZXNzIGF0ICN7bm9kZS5jb2RlT3Jp
Z2luU3RyaW5nfSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgCisgICAgICAgICAgICBp
ZiBhZGRyZXNzLmlzX2E/IEJhc2VJbmRleAorICAgICAgICAgICAgICAgIGFkZHJlc3Mub2Zmc2V0
LnZhbHVlID09IDAgYW5kCisgICAgICAgICAgICAgICAgICAgIChub2RlLm9wY29kZSA9fiAvXmxl
YS8gb3IgYWRkcmVzcy5zY2FsZSA9PSAxIG9yIGFkZHJlc3Muc2NhbGUgPT0gc2l6ZSkKKyAgICAg
ICAgICAgIGVsc2lmIGFkZHJlc3MuaXNfYT8gQWRkcmVzcworICAgICAgICAgICAgICAgICgtMjU1
Li40MDk1KS5pbmNsdWRlPyBhZGRyZXNzLm9mZnNldC52YWx1ZQorICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGZhbHNlCisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgICAg
ICByZXN1bHQgPSByaXNjTG93ZXJNaXNwbGFjZWRJbW1lZGlhdGVzKHJlc3VsdCwgWyJzdG9yZWIi
LCAic3RvcmVpIiwgInN0b3JlcCIsICJzdG9yZXEiXSkKKyAgICAgICAgcmVzdWx0ID0gcmlzY0xv
d2VyTWFsZm9ybWVkSW1tZWRpYXRlcyhyZXN1bHQsIDAuLjQwOTUpCisgICAgICAgIHJlc3VsdCA9
IHJpc2NMb3dlck1pc3BsYWNlZEFkZHJlc3NlcyhyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IHJp
c2NMb3dlck1hbGZvcm1lZEFkZHJlc3NlcyhyZXN1bHQpIHsKKyAgICAgICAgICAgIHwgbm9kZSwg
YWRkcmVzcyB8CisgICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCisgICAgICAgICAgICB3aGVu
IC9ebG9hZC8KKyAgICAgICAgICAgICAgICB0cnVlCisgICAgICAgICAgICB3aGVuIC9ec3RvcmUv
CisgICAgICAgICAgICAgICAgbm90IChhZGRyZXNzLmlzX2E/IEFkZHJlc3MgYW5kIGFkZHJlc3Mu
b2Zmc2V0LnZhbHVlIDwgMCkKKyAgICAgICAgICAgIHdoZW4gL15sZWEvCisgICAgICAgICAgICAg
ICAgdHJ1ZQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJhaXNlICJCYWQgaW5z
dHJ1Y3Rpb24gI3tub2RlLm9wY29kZX0gZm9yIGhlYXAgYWNjZXNzIGF0ICN7bm9kZS5jb2RlT3Jp
Z2luU3RyaW5nfSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAgIHJlc3VsdCA9
IHJpc2NMb3dlclRlc3QocmVzdWx0KQorICAgICAgICByZXN1bHQgPSBhc3NpZ25SZWdpc3RlcnNU
b1RlbXBvcmFyaWVzKHJlc3VsdCwgOmdwciwgQVJNNjRfRVhUUkFfR1BSUykKKyAgICAgICAgcmVz
dWx0ID0gYXNzaWduUmVnaXN0ZXJzVG9UZW1wb3JhcmllcyhyZXN1bHQsIDpmcHIsIEFSTTY0X0VY
VFJBX0ZQUlMpCisgICAgICAgIHJldHVybiByZXN1bHQKKyAgICBlbmQKK2VuZAorCitkZWYgYXJt
NjRPcGVyYW5kcyhvcGVyYW5kcywga2luZHMpCisgICAgaWYga2luZHMuaXNfYT8gQXJyYXkKKyAg
ICAgICAgcmFpc2UgIk1pc21hdGNoZWQgb3BlcmFuZCBsaXN0czogI3tvcGVyYW5kcy5pbnNwZWN0
fSBhbmQgI3traW5kcy5pbnNwZWN0fSIgaWYgb3BlcmFuZHMuc2l6ZSAhPSBraW5kcy5zaXplCisg
ICAgZWxzZQorICAgICAgICBraW5kcyA9IG9wZXJhbmRzLm1hcHsga2luZHMgfQorICAgIGVuZAor
ICAgICgwLi4ub3BlcmFuZHMuc2l6ZSkubWFwIHsKKyAgICAgICAgfCBpbmRleCB8CisgICAgICAg
IG9wZXJhbmRzW2luZGV4XS5hcm02NE9wZXJhbmQoa2luZHNbaW5kZXhdKQorICAgIH0uam9pbign
LCAnKQorZW5kCisKK2RlZiBhcm02NEZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcywga2luZHMpCisg
ICAgaWYga2luZHMuaXNfYT8gQXJyYXkKKyAgICAgICAga2luZHMgPSBba2luZHNbLTFdXSArIGtp
bmRzWzAuLi0yXQorICAgIGVuZAorICAgIGFybTY0T3BlcmFuZHMoW29wZXJhbmRzWy0xXV0gKyBv
cGVyYW5kc1swLi4tMl0sIGtpbmRzKQorZW5kCisKKyMgVEFDID0gdGhyZWUgYWRkcmVzcyBjb2Rl
LgorZGVmIGFybTY0VEFDT3BlcmFuZHMob3BlcmFuZHMsIGtpbmQpCisgICAgaWYgb3BlcmFuZHMu
c2l6ZSA9PSAzCisgICAgICAgIHJldHVybiBhcm02NEZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcywg
a2luZCkKKyAgICBlbmQKKyAgICAKKyAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHMuc2l6ZSA9PSAy
CisgICAgCisgICAgcmV0dXJuIG9wZXJhbmRzWzFdLmFybTY0T3BlcmFuZChraW5kKSArICIsICIg
KyBhcm02NEZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcywga2luZCkKK2VuZAorCitkZWYgZW1pdEFS
TTY0QWRkKG9wY29kZSwgb3BlcmFuZHMsIGtpbmQpCisgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAz
CisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5yZWdpc3Rlcj8KKyAgICAgICAgcmFp
c2UgdW5sZXNzIG9wZXJhbmRzWzJdLnJlZ2lzdGVyPworICAgICAgICAKKyAgICAgICAgaWYgb3Bl
cmFuZHNbMF0uaW1tZWRpYXRlPworICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0udmFsdWUgPT0g
MCBhbmQgZmxhZyAhfiAvcyQvCisgICAgICAgICAgICAgICAgdW5sZXNzIG9wZXJhbmRzWzFdID09
IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAgICAgICAgICRhc20ucHV0cyAibW92ICN7YXJtNjRG
bGlwcGVkT3BlcmFuZHMob3BlcmFuZHNbMS4uMl0sIGtpbmQpfSIKKyAgICAgICAgICAgICAgICBl
bmQKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2Rl
fSAje2FybTY0T3BlcmFuZHMob3BlcmFuZHMucmV2ZXJzZSwga2luZCl9IgorICAgICAgICAgICAg
ZW5kCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZW5kCisgICAgICAgIAorICAgICAgICBy
YWlzZSB1bmxlc3Mgb3BlcmFuZHNbMF0ucmVnaXN0ZXI/CisgICAgICAgICRhc20ucHV0cyAiI3tv
cGNvZGV9ICN7YXJtNjRGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMsIGtpbmQpfSIKKyAgICAgICAg
cmV0dXJuCisgICAgZW5kCisgICAgCisgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzLnNpemUgPT0g
MgorICAgIAorICAgIGlmIG9wZXJhbmRzWzBdLmltbWVkaWF0ZT8gYW5kIG9wZXJhbmRzWzBdLnZh
bHVlID09IDAgYW5kIG9wY29kZSAhfiAvcyQvCisgICAgICAgIHJldHVybgorICAgIGVuZAorICAg
IAorICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7YXJtNjRUQUNPcGVyYW5kcyhvcGVyYW5kcywg
a2luZCl9IgorZW5kCisKK2RlZiBlbWl0QVJNNjRVbmZsaXBwZWQob3Bjb2RlLCBvcGVyYW5kcywg
a2luZCkKKyAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje2FybTY0T3BlcmFuZHMob3BlcmFuZHMs
IGtpbmQpfSIKK2VuZAorCitkZWYgZW1pdEFSTTY0VEFDKG9wY29kZSwgb3BlcmFuZHMsIGtpbmQp
CisgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3thcm02NFRBQ09wZXJhbmRzKG9wZXJhbmRzLCBr
aW5kKX0iCitlbmQKKworZGVmIGVtaXRBUk02NChvcGNvZGUsIG9wZXJhbmRzLCBraW5kKQorICAg
ICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7YXJtNjRGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMsIGtp
bmQpfSIKK2VuZAorCitkZWYgZW1pdEFSTTY0QWNjZXNzKG9wY29kZSwgb3Bjb2RlTmVnYXRpdmVP
ZmZzZXQsIHJlZ2lzdGVyLCBtZW1vcnksIGtpbmQpCisgICAgaWYgbWVtb3J5LmlzX2E/IEFkZHJl
c3MgYW5kIG1lbW9yeS5vZmZzZXQudmFsdWUgPCAwCisgICAgICAgICRhc20ucHV0cyAiI3tvcGNv
ZGVOZWdhdGl2ZU9mZnNldH0gI3tyZWdpc3Rlci5hcm02NE9wZXJhbmQoa2luZCl9LCAje21lbW9y
eS5hcm02NE9wZXJhbmQoa2luZCl9IgorICAgICAgICByZXR1cm4KKyAgICBlbmQKKyAgICAKKyAg
ICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje3JlZ2lzdGVyLmFybTY0T3BlcmFuZChraW5kKX0sICN7
bWVtb3J5LmFybTY0T3BlcmFuZChraW5kKX0iCitlbmQKKworZGVmIGVtaXRBUk02NFNoaWZ0KG9w
Y29kZVJlZ3MsIG9wY29kZUltbWVkaWF0ZSwgb3BlcmFuZHMsIGtpbmQpCisgICAgaWYgb3BlcmFu
ZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sxXS5pbW1lZGlhdGU/CisgICAgICAgIG1hZ2ljTnVt
YmVycyA9IHlpZWxkIG9wZXJhbmRzWzFdLnZhbHVlCisgICAgICAgICRhc20ucHV0cyAiI3tvcGNv
ZGVJbW1lZGlhdGV9ICN7b3BlcmFuZHNbMl0uYXJtNjRPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5k
c1swXS5hcm02NE9wZXJhbmQoa2luZCl9LCBcIyN7bWFnaWNOdW1iZXJzWzBdfSwgXCMje21hZ2lj
TnVtYmVyc1sxXX0iCisgICAgICAgIHJldHVybgorICAgIGVuZAorICAgIAorICAgIGlmIG9wZXJh
bmRzLnNpemUgPT0gMiBhbmQgb3BlcmFuZHNbMF0uaW1tZWRpYXRlPworICAgICAgICBtYWdpY051
bWJlcnMgPSB5aWVsZCBvcGVyYW5kc1swXS52YWx1ZQorICAgICAgICAkYXNtLnB1dHMgIiN7b3Bj
b2RlSW1tZWRpYXRlfSAje29wZXJhbmRzWzFdLmFybTY0T3BlcmFuZChraW5kKX0sICN7b3BlcmFu
ZHNbMV0uYXJtNjRPcGVyYW5kKGtpbmQpfSwgXCMje21hZ2ljTnVtYmVyc1swXX0sIFwjI3ttYWdp
Y051bWJlcnNbMV19IgorICAgICAgICByZXR1cm4KKyAgICBlbmQKKyAgICAKKyAgICBlbWl0QVJN
NjRUQUMob3Bjb2RlUmVncywgb3BlcmFuZHMsIGtpbmQpCitlbmQKKworZGVmIGVtaXRBUk02NEJy
YW5jaChvcGNvZGUsIG9wZXJhbmRzLCBraW5kLCBicmFuY2hPcGNvZGUpCisgICAgZW1pdEFSTTY0
VW5mbGlwcGVkKG9wY29kZSwgb3BlcmFuZHNbMC4uLTJdLCBraW5kKQorICAgICRhc20ucHV0cyAi
I3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbLTFdLmFzbUxhYmVsfSIKK2VuZAorCitkZWYgZW1p
dEFSTTY0Q29tcGFyZShvcGVyYW5kcywga2luZCwgY29tcGFyZUNvZGUpCisgICAgZW1pdEFSTTY0
VW5mbGlwcGVkKCJzdWJzICN7YXJtNjRHUFJOYW1lKCd4enInLCBraW5kKX0sICIsIG9wZXJhbmRz
WzAuLi0yXSwga2luZCkKKyAgICAkYXNtLnB1dHMgImNzaW5jICN7b3BlcmFuZHNbLTFdLmFybTY0
T3BlcmFuZCg6aW50KX0sIHd6ciwgd3pyLCAje2NvbXBhcmVDb2RlfSIKK2VuZAorCitkZWYgZW1p
dEFSTTY0TW92ZUltbWVkaWF0ZSh2YWx1ZSwgdGFyZ2V0KQorICAgIGZpcnN0ID0gdHJ1ZQorICAg
IGlzTmVnYXRpdmUgPSB2YWx1ZSA8IDAKKyAgICBbNDgsIDMyLCAxNiwgMF0uZWFjaCB7CisgICAg
ICAgIHwgc2hpZnQgfAorICAgICAgICBjdXJyZW50VmFsdWUgPSAodmFsdWUgPj4gc2hpZnQpICYg
MHhmZmZmCisgICAgICAgIG5leHQgaWYgY3VycmVudFZhbHVlID09IChpc05lZ2F0aXZlID8gMHhm
ZmZmIDogMCkgYW5kIHNoaWZ0ICE9IDAKKyAgICAgICAgaWYgZmlyc3QKKyAgICAgICAgICAgIGlm
IGlzTmVnYXRpdmUKKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdm4gI3t0YXJnZXQuYXJt
NjRPcGVyYW5kKDpwdHIpfSwgXCMjeyh+Y3VycmVudFZhbHVlKSAmIDB4ZmZmZn0sIGxzbCBcIyN7
c2hpZnR9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAibW92
eiAje3RhcmdldC5hcm02NE9wZXJhbmQoOnB0cil9LCBcIyN7Y3VycmVudFZhbHVlfSwgbHNsIFwj
I3tzaGlmdH0iCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGZpcnN0ID0gZmFsc2UKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZrICN7dGFyZ2V0LmFybTY0T3Bl
cmFuZCg6cHRyKX0sIFwjI3tjdXJyZW50VmFsdWV9LCBsc2wgXCMje3NoaWZ0fSIKKyAgICAgICAg
ZW5kCisgICAgfQorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uCisgICAgZGVmIGxvd2VyQVJNNjQK
KyAgICAgICAgJGFzbS5jb21tZW50IGNvZGVPcmlnaW5TdHJpbmcKKyAgICAgICAgJGFzbS5hbm5v
dGF0aW9uIGFubm90YXRpb24gaWYgJGVuYWJsZUluc3RyQW5ub3RhdGlvbnMKKworICAgICAgICBj
YXNlIG9wY29kZQorICAgICAgICB3aGVuICdhZGRpJworICAgICAgICAgICAgZW1pdEFSTTY0QWRk
KCJhZGQiLCBvcGVyYW5kcywgOmludCkKKyAgICAgICAgd2hlbiAnYWRkaXMnCisgICAgICAgICAg
ICBlbWl0QVJNNjRBZGQoImFkZHMiLCBvcGVyYW5kcywgOmludCkKKyAgICAgICAgd2hlbiAnYWRk
cCcKKyAgICAgICAgICAgIGVtaXRBUk02NEFkZCgiYWRkIiwgb3BlcmFuZHMsIDpwdHIpCisgICAg
ICAgIHdoZW4gJ2FkZHBzJworICAgICAgICAgICAgZW1pdEFSTTY0QWRkKCJhZGRzIiwgb3BlcmFu
ZHMsIDpwdHIpCisgICAgICAgIHdoZW4gJ2FkZHEnCisgICAgICAgICAgICBlbWl0QVJNNjRBZGQo
ImFkZCIsIG9wZXJhbmRzLCA6cHRyKQorICAgICAgICB3aGVuICJhbmRpIgorICAgICAgICAgICAg
ZW1pdEFSTTY0VEFDKCJhbmQiLCBvcGVyYW5kcywgOmludCkKKyAgICAgICAgd2hlbiAiYW5kcCIK
KyAgICAgICAgICAgIGVtaXRBUk02NFRBQygiYW5kIiwgb3BlcmFuZHMsIDpwdHIpCisgICAgICAg
IHdoZW4gImFuZHEiCisgICAgICAgICAgICBlbWl0QVJNNjRUQUMoImFuZCIsIG9wZXJhbmRzLCA6
cHRyKQorICAgICAgICB3aGVuICJvcmkiCisgICAgICAgICAgICBlbWl0QVJNNjRUQUMoIm9yciIs
IG9wZXJhbmRzLCA6aW50KQorICAgICAgICB3aGVuICJvcnAiCisgICAgICAgICAgICBlbWl0QVJN
NjRUQUMoIm9yciIsIG9wZXJhbmRzLCA6cHRyKQorICAgICAgICB3aGVuICJvcnEiCisgICAgICAg
ICAgICBlbWl0QVJNNjRUQUMoIm9yciIsIG9wZXJhbmRzLCA6cHRyKQorICAgICAgICB3aGVuICJ4
b3JpIgorICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJlb3IiLCBvcGVyYW5kcywgOmludCkKKyAg
ICAgICAgd2hlbiAieG9ycCIKKyAgICAgICAgICAgIGVtaXRBUk02NFRBQygiZW9yIiwgb3BlcmFu
ZHMsIDpwdHIpCisgICAgICAgIHdoZW4gInhvcnEiCisgICAgICAgICAgICBlbWl0QVJNNjRUQUMo
ImVvciIsIG9wZXJhbmRzLCA6cHRyKQorICAgICAgICB3aGVuICJsc2hpZnRpIgorICAgICAgICAg
ICAgZW1pdEFSTTY0U2hpZnQoImxzbHYiLCAidWJmbSIsIG9wZXJhbmRzLCA6aW50KSB7CisgICAg
ICAgICAgICAgICAgfCB2YWx1ZSB8CisgICAgICAgICAgICAgICAgWzMyIC0gdmFsdWUsIDMxIC0g
dmFsdWVdCisgICAgICAgICAgICB9CisgICAgICAgIHdoZW4gImxzaGlmdHAiCisgICAgICAgICAg
ICBlbWl0QVJNNjRTaGlmdCgibHNsdiIsICJ1YmZtIiwgb3BlcmFuZHMsIDpwdHIpIHsKKyAgICAg
ICAgICAgICAgICB8IHZhbHVlIHwKKyAgICAgICAgICAgICAgICBbNjQgLSB2YWx1ZSwgNjMgLSB2
YWx1ZV0KKyAgICAgICAgICAgIH0KKyAgICAgICAgd2hlbiAibHNoaWZ0cSIKKyAgICAgICAgICAg
IGVtaXRBUk02NFNoaWZ0KCJsc2x2IiwgInViZm0iLCBvcGVyYW5kcywgOnB0cikgeworICAgICAg
ICAgICAgICAgIHwgdmFsdWUgfAorICAgICAgICAgICAgICAgIFs2NCAtIHZhbHVlLCA2MyAtIHZh
bHVlXQorICAgICAgICAgICAgfQorICAgICAgICB3aGVuICJyc2hpZnRpIgorICAgICAgICAgICAg
ZW1pdEFSTTY0U2hpZnQoImFzcnYiLCAic2JmbSIsIG9wZXJhbmRzLCA6aW50KSB7CisgICAgICAg
ICAgICAgICAgfCB2YWx1ZSB8CisgICAgICAgICAgICAgICAgW3ZhbHVlLCAzMV0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgd2hlbiAicnNoaWZ0cCIKKyAgICAgICAgICAgIGVtaXRBUk02NFNoaWZ0
KCJhc3J2IiwgInNiZm0iLCBvcGVyYW5kcywgOnB0cikgeworICAgICAgICAgICAgICAgIHwgdmFs
dWUgfAorICAgICAgICAgICAgICAgIFt2YWx1ZSwgNjNdCisgICAgICAgICAgICB9CisgICAgICAg
IHdoZW4gInJzaGlmdHEiCisgICAgICAgICAgICBlbWl0QVJNNjRTaGlmdCgiYXNydiIsICJzYmZt
Iiwgb3BlcmFuZHMsIDpwdHIpIHsKKyAgICAgICAgICAgICAgICB8IHZhbHVlIHwKKyAgICAgICAg
ICAgICAgICBbdmFsdWUsIDYzXQorICAgICAgICAgICAgfQorICAgICAgICB3aGVuICJ1cnNoaWZ0
aSIKKyAgICAgICAgICAgIGVtaXRBUk02NFNoaWZ0KCJsc3J2IiwgInViZm0iLCBvcGVyYW5kcywg
OmludCkgeworICAgICAgICAgICAgICAgIHwgdmFsdWUgfAorICAgICAgICAgICAgICAgIFt2YWx1
ZSwgMzFdCisgICAgICAgICAgICB9CisgICAgICAgIHdoZW4gInVyc2hpZnRwIgorICAgICAgICAg
ICAgZW1pdEFSTTY0U2hpZnQoImxzcnYiLCAidWJmbSIsIG9wZXJhbmRzLCA6cHRyKSB7CisgICAg
ICAgICAgICAgICAgfCB2YWx1ZSB8CisgICAgICAgICAgICAgICAgW3ZhbHVlLCA2M10KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgd2hlbiAidXJzaGlmdHEiCisgICAgICAgICAgICBlbWl0QVJNNjRT
aGlmdCgibHNydiIsICJ1YmZtIiwgb3BlcmFuZHMsIDpwdHIpIHsKKyAgICAgICAgICAgICAgICB8
IHZhbHVlIHwKKyAgICAgICAgICAgICAgICBbdmFsdWUsIDYzXQorICAgICAgICAgICAgfQorICAg
ICAgICB3aGVuICJtdWxpIgorICAgICAgICAgICAgJGFzbS5wdXRzICJtYWRkICN7YXJtNjRUQUNP
cGVyYW5kcyhvcGVyYW5kcywgOmludCl9LCB3enIiCisgICAgICAgIHdoZW4gIm11bHAiCisgICAg
ICAgICAgICAkYXNtLnB1dHMgIm1hZGQgI3thcm02NFRBQ09wZXJhbmRzKG9wZXJhbmRzLCA6cHRy
KX0sIHh6ciIKKyAgICAgICAgd2hlbiAibXVscSIKKyAgICAgICAgICAgICRhc20ucHV0cyAibWFk
ZCAje2FybTY0VEFDT3BlcmFuZHMob3BlcmFuZHMsIDpwdHIpfSwgeHpyIgorICAgICAgICB3aGVu
ICJzdWJpIgorICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJzdWIiLCBvcGVyYW5kcywgOmludCkK
KyAgICAgICAgd2hlbiAic3VicCIKKyAgICAgICAgICAgIGVtaXRBUk02NFRBQygic3ViIiwgb3Bl
cmFuZHMsIDpwdHIpCisgICAgICAgIHdoZW4gInN1YnEiCisgICAgICAgICAgICBlbWl0QVJNNjRU
QUMoInN1YiIsIG9wZXJhbmRzLCA6cHRyKQorICAgICAgICB3aGVuICJzdWJpcyIKKyAgICAgICAg
ICAgIGVtaXRBUk02NFRBQygic3VicyIsIG9wZXJhbmRzLCA6aW50KQorICAgICAgICB3aGVuICJu
ZWdpIgorICAgICAgICAgICAgJGFzbS5wdXRzICJzdWIgI3tvcGVyYW5kc1swXS5hcm02NE9wZXJh
bmQoOmludCl9LCB3enIsICN7b3BlcmFuZHNbMF0uYXJtNjRPcGVyYW5kKDppbnQpfSIKKyAgICAg
ICAgd2hlbiAibmVncCIKKyAgICAgICAgICAgICRhc20ucHV0cyAic3ViICN7b3BlcmFuZHNbMF0u
YXJtNjRPcGVyYW5kKDpwdHIpfSwgeHpyLCAje29wZXJhbmRzWzBdLmFybTY0T3BlcmFuZCg6cHRy
KX0iCisgICAgICAgIHdoZW4gIm5lZ3EiCisgICAgICAgICAgICAkYXNtLnB1dHMgInN1YiAje29w
ZXJhbmRzWzBdLmFybTY0T3BlcmFuZCg6cHRyKX0sIHh6ciwgI3tvcGVyYW5kc1swXS5hcm02NE9w
ZXJhbmQoOnB0cil9IgorICAgICAgICB3aGVuICJsb2FkaSIKKyAgICAgICAgICAgIGVtaXRBUk02
NEFjY2VzcygibGRyIiwgImxkdXIiLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMF0sIDppbnQpCisg
ICAgICAgIHdoZW4gImxvYWRpcyIKKyAgICAgICAgICAgIGVtaXRBUk02NEFjY2VzcygibGRyc3ci
LCAibGR1cnN3Iiwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzBdLCA6cHRyKQorICAgICAgICB3aGVu
ICJsb2FkcCIKKyAgICAgICAgICAgIGVtaXRBUk02NEFjY2VzcygibGRyIiwgImxkdXIiLCBvcGVy
YW5kc1sxXSwgb3BlcmFuZHNbMF0sIDpwdHIpCisgICAgICAgIHdoZW4gImxvYWRxIgorICAgICAg
ICAgICAgZW1pdEFSTTY0QWNjZXNzKCJsZHIiLCAibGR1ciIsIG9wZXJhbmRzWzFdLCBvcGVyYW5k
c1swXSwgOnB0cikKKyAgICAgICAgd2hlbiAic3RvcmVpIgorICAgICAgICAgICAgZW1pdEFSTTY0
VW5mbGlwcGVkKCJzdHIiLCBvcGVyYW5kcywgOmludCkKKyAgICAgICAgd2hlbiAic3RvcmVwIgor
ICAgICAgICAgICAgZW1pdEFSTTY0VW5mbGlwcGVkKCJzdHIiLCBvcGVyYW5kcywgOnB0cikKKyAg
ICAgICAgd2hlbiAic3RvcmVxIgorICAgICAgICAgICAgZW1pdEFSTTY0VW5mbGlwcGVkKCJzdHIi
LCBvcGVyYW5kcywgOnB0cikKKyAgICAgICAgd2hlbiAibG9hZGIiCisgICAgICAgICAgICBlbWl0
QVJNNjRBY2Nlc3MoImxkcmIiLCAibGR1cmIiLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMF0sIDpp
bnQpCisgICAgICAgIHdoZW4gImxvYWRicyIKKyAgICAgICAgICAgIGVtaXRBUk02NEFjY2Vzcygi
bGRyc2IiLCAibGR1cnNiIiwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzBdLCA6aW50KQorICAgICAg
ICB3aGVuICJzdG9yZWIiCisgICAgICAgICAgICBlbWl0QVJNNjRVbmZsaXBwZWQoInN0cmIiLCBv
cGVyYW5kcywgOmludCkKKyAgICAgICAgd2hlbiAibG9hZGgiCisgICAgICAgICAgICBlbWl0QVJN
NjRBY2Nlc3MoImxkcmgiLCAibGR1cmgiLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMF0sIDppbnQp
CisgICAgICAgIHdoZW4gImxvYWRocyIKKyAgICAgICAgICAgIGVtaXRBUk02NEFjY2VzcygibGRy
c2giLCAibGR1cnNoIiwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzBdLCA6aW50KQorICAgICAgICB3
aGVuICJzdG9yZWgiCisgICAgICAgICAgICBlbWl0QVJNNjRVbmZsaXBwZWQoInN0cmgiLCBvcGVy
YW5kcywgOmludCkKKyAgICAgICAgd2hlbiAibG9hZGQiCisgICAgICAgICAgICBlbWl0QVJNNjRB
Y2Nlc3MoImxkciIsICJsZHVyIiwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzBdLCA6ZG91YmxlKQor
ICAgICAgICB3aGVuICJzdG9yZWQiCisgICAgICAgICAgICBlbWl0QVJNNjRVbmZsaXBwZWQoInN0
ciIsIG9wZXJhbmRzLCA6ZG91YmxlKQorICAgICAgICB3aGVuICJhZGRkIgorICAgICAgICAgICAg
ZW1pdEFSTTY0VEFDKCJmYWRkIiwgb3BlcmFuZHMsIDpkb3VibGUpCisgICAgICAgIHdoZW4gImRp
dmQiCisgICAgICAgICAgICBlbWl0QVJNNjRUQUMoImZkaXYiLCBvcGVyYW5kcywgOmRvdWJsZSkK
KyAgICAgICAgd2hlbiAic3ViZCIKKyAgICAgICAgICAgIGVtaXRBUk02NFRBQygiZnN1YiIsIG9w
ZXJhbmRzLCA6ZG91YmxlKQorICAgICAgICB3aGVuICJtdWxkIgorICAgICAgICAgICAgZW1pdEFS
TTY0VEFDKCJmbXVsIiwgb3BlcmFuZHMsIDpkb3VibGUpCisgICAgICAgIHdoZW4gInNxcnRkIgor
ICAgICAgICAgICAgZW1pdEFSTTY0KCJmc3FydCIsIG9wZXJhbmRzLCA6ZG91YmxlKQorICAgICAg
ICB3aGVuICJjaTJkIgorICAgICAgICAgICAgZW1pdEFSTTY0KCJzY3Z0ZiIsIG9wZXJhbmRzLCBb
OmludCwgOmRvdWJsZV0pCisgICAgICAgIHdoZW4gImJkZXEiCisgICAgICAgICAgICBlbWl0QVJN
NjRCcmFuY2goImZjbXAiLCBvcGVyYW5kcywgOmRvdWJsZSwgImIuZXEiKQorICAgICAgICB3aGVu
ICJiZG5lcSIKKyAgICAgICAgICAgIGVtaXRBUk02NFVuZmxpcHBlZCgiZmNtcCIsIG9wZXJhbmRz
WzAuLjFdLCA6ZG91YmxlKQorICAgICAgICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVu
aXF1ZSgiYmRuZXEiKQorICAgICAgICAgICAgJGFzbS5wdXRzICJiLnZzICN7TG9jYWxMYWJlbFJl
ZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLmFzbUxhYmVsfSIKKyAgICAgICAg
ICAgICRhc20ucHV0cyAiYi5uZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgICAg
IGlzVW5vcmRlcmVkLmxvd2VyKCJBUk02NCIpCisgICAgICAgIHdoZW4gImJkZ3QiCisgICAgICAg
ICAgICBlbWl0QVJNNjRCcmFuY2goImZjbXAiLCBvcGVyYW5kcywgOmRvdWJsZSwgImIuZ3QiKQor
ICAgICAgICB3aGVuICJiZGd0ZXEiCisgICAgICAgICAgICBlbWl0QVJNNjRCcmFuY2goImZjbXAi
LCBvcGVyYW5kcywgOmRvdWJsZSwgImIuZ2UiKQorICAgICAgICB3aGVuICJiZGx0IgorICAgICAg
ICAgICAgZW1pdEFSTTY0QnJhbmNoKCJmY21wIiwgb3BlcmFuZHMsIDpkb3VibGUsICJiLm1pIikK
KyAgICAgICAgd2hlbiAiYmRsdGVxIgorICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJmY21w
Iiwgb3BlcmFuZHMsIDpkb3VibGUsICJiLmxzIikKKyAgICAgICAgd2hlbiAiYmRlcXVuIgorICAg
ICAgICAgICAgZW1pdEFSTTY0VW5mbGlwcGVkKCJmY21wIiwgb3BlcmFuZHNbMC4uMV0sIDpkb3Vi
bGUpCisgICAgICAgICAgICAkYXNtLnB1dHMgImIudnMgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0i
CisgICAgICAgICAgICAkYXNtLnB1dHMgImIuZXEgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisg
ICAgICAgIHdoZW4gImJkbmVxdW4iCisgICAgICAgICAgICBlbWl0QVJNNjRCcmFuY2goImZjbXAi
LCBvcGVyYW5kcywgOmRvdWJsZSwgImIubmUiKQorICAgICAgICB3aGVuICJiZGd0dW4iCisgICAg
ICAgICAgICBlbWl0QVJNNjRCcmFuY2goImZjbXAiLCBvcGVyYW5kcywgOmRvdWJsZSwgImIuaGki
KQorICAgICAgICB3aGVuICJiZGd0ZXF1biIKKyAgICAgICAgICAgIGVtaXRBUk02NEJyYW5jaCgi
ZmNtcCIsIG9wZXJhbmRzLCA6ZG91YmxlLCAiYi5wbCIpCisgICAgICAgIHdoZW4gImJkbHR1biIK
KyAgICAgICAgICAgIGVtaXRBUk02NEJyYW5jaCgiZmNtcCIsIG9wZXJhbmRzLCA6ZG91YmxlLCAi
Yi5sdCIpCisgICAgICAgIHdoZW4gImJkbHRlcXVuIgorICAgICAgICAgICAgZW1pdEFSTTY0QnJh
bmNoKCJmY21wIiwgb3BlcmFuZHMsIDpkb3VibGUsICJiLmxlIikKKyAgICAgICAgd2hlbiAiYnRk
MmkiCisgICAgICAgICAgICAjIEZJWE1FOiBtYXkgYmUgYSBnb29kIGlkZWEgdG8ganVzdCBnZXQg
cmlkIG9mIHRoaXMgaW5zdHJ1Y3Rpb24sIHNpbmNlIHRoZSBpbnRlcnByZXRlcgorICAgICAgICAg
ICAgIyBjdXJyZW50bHkgZG9lcyBub3QgdXNlIGl0LgorICAgICAgICAgICAgcmFpc2UgIkFSTTY0
IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGNvZGUgeWV0LCAje2NvZGVPcmlnaW5TdHJpbmd9Igor
ICAgICAgICB3aGVuICJ0ZDJpIgorICAgICAgICAgICAgZW1pdEFSTTY0KCJmY3Z0enMiLCBvcGVy
YW5kcywgWzpkb3VibGUsIDppbnRdKQorICAgICAgICB3aGVuICJiY2QyaSIKKyAgICAgICAgICAg
ICMgRklYTUU6IHJlbW92ZSB0aGlzIGluc3RydWN0aW9uLCBvciB1c2UgaXQgYW5kIGltcGxlbWVu
dCBpdC4gQ3VycmVudGx5IGl0J3Mgbm90CisgICAgICAgICAgICAjIHVzZWQuCisgICAgICAgICAg
ICByYWlzZSAiQVJNNjQgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wY29kZSB5ZXQsICN7Y29kZU9y
aWdpblN0cmluZ30iCisgICAgICAgIHdoZW4gIm1vdmR6IgorICAgICAgICAgICAgIyBGSVhNRTog
cmVtb3ZlIGl0IG9yIHN1cHBvcnQgaXQuCisgICAgICAgICAgICByYWlzZSAiQVJNNjQgZG9lcyBu
b3Qgc3VwcG9ydCB0aGlzIG9wY29kZSB5ZXQsICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgICAg
IHdoZW4gInBvcCIKKyAgICAgICAgICAgIGVtaXRBUk02NFVuZmxpcHBlZCgicG9wIiwgb3BlcmFu
ZHMsIDpwdHIpCisgICAgICAgIHdoZW4gInB1c2giCisgICAgICAgICAgICBlbWl0QVJNNjRVbmZs
aXBwZWQoInB1c2giLCBvcGVyYW5kcywgOnB0cikKKyAgICAgICAgd2hlbiAibW92ZSIKKyAgICAg
ICAgICAgIGlmIG9wZXJhbmRzWzBdLmltbWVkaWF0ZT8KKyAgICAgICAgICAgICAgICBlbWl0QVJN
NjRNb3ZlSW1tZWRpYXRlKG9wZXJhbmRzWzBdLnZhbHVlLCBvcGVyYW5kc1sxXSkKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlbWl0QVJNNjQoIm1vdiIsIG9wZXJhbmRzLCA6cHRy
KQorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gInN4aTJwIgorICAgICAgICAgICAgZW1p
dEFSTTY0KCJzeHR3Iiwgb3BlcmFuZHMsIDpwdHIpCisgICAgICAgIHdoZW4gInN4aTJxIgorICAg
ICAgICAgICAgZW1pdEFSTTY0KCJzeHR3Iiwgb3BlcmFuZHMsIDpwdHIpCisgICAgICAgIHdoZW4g
Inp4aTJwIgorICAgICAgICAgICAgZW1pdEFSTTY0KCJ1eHR3Iiwgb3BlcmFuZHMsIDpwdHIpCisg
ICAgICAgIHdoZW4gInp4aTJxIgorICAgICAgICAgICAgZW1pdEFSTTY0KCJ1eHR3Iiwgb3BlcmFu
ZHMsIDpwdHIpCisgICAgICAgIHdoZW4gIm5vcCIKKyAgICAgICAgICAgICRhc20ucHV0cyAibm9w
IgorICAgICAgICB3aGVuICJiaWVxIiwgImJiZXEiCisgICAgICAgICAgICBpZiBvcGVyYW5kc1sw
XS5pbW1lZGlhdGU/IGFuZCBvcGVyYW5kc1swXS52YWx1ZSA9PSAwCisgICAgICAgICAgICAgICAg
JGFzbS5wdXRzICJjYnogI3tvcGVyYW5kc1sxXS5hcm02NE9wZXJhbmQoOmludCl9LCAje29wZXJh
bmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgICAgIGVsc2lmIG9wZXJhbmRzWzFdLmltbWVkaWF0
ZT8gYW5kIG9wZXJhbmRzWzFdLnZhbHVlID09IDAKKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMg
ImNieiAje29wZXJhbmRzWzBdLmFybTY0T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0uYXNt
TGFiZWx9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVtaXRBUk02NEJyYW5j
aCgic3VicyB3enIsICIsIG9wZXJhbmRzLCA6aW50LCAiYi5lcSIpCisgICAgICAgICAgICBlbmQK
KyAgICAgICAgd2hlbiAiYnBlcSIKKyAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLmltbWVkaWF0
ZT8gYW5kIG9wZXJhbmRzWzBdLnZhbHVlID09IDAKKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMg
ImNieiAje29wZXJhbmRzWzFdLmFybTY0T3BlcmFuZCg6cHRyKX0sICN7b3BlcmFuZHNbMl0uYXNt
TGFiZWx9IgorICAgICAgICAgICAgZWxzaWYgb3BlcmFuZHNbMV0uaW1tZWRpYXRlPyBhbmQgb3Bl
cmFuZHNbMV0udmFsdWUgPT0gMAorICAgICAgICAgICAgICAgICRhc20ucHV0cyAiY2J6ICN7b3Bl
cmFuZHNbMF0uYXJtNjRPcGVyYW5kKDpwdHIpfSwgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJzdWJzIHh6
ciwgIiwgb3BlcmFuZHMsIDpwdHIsICJiLmVxIikKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3
aGVuICJicWVxIgorICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0uaW1tZWRpYXRlPyBhbmQgb3Bl
cmFuZHNbMF0udmFsdWUgPT0gMAorICAgICAgICAgICAgICAgICRhc20ucHV0cyAiY2J6ICN7b3Bl
cmFuZHNbMV0uYXJtNjRPcGVyYW5kKDpwdHIpfSwgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisg
ICAgICAgICAgICBlbHNpZiBvcGVyYW5kc1sxXS5pbW1lZGlhdGU/IGFuZCBvcGVyYW5kc1sxXS52
YWx1ZSA9PSAwCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJjYnogI3tvcGVyYW5kc1swXS5h
cm02NE9wZXJhbmQoOnB0cil9LCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBlbWl0QVJNNjRCcmFuY2goInN1YnMgeHpyLCAiLCBvcGVy
YW5kcywgOnB0ciwgImIuZXEiKQorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gImJpbmVx
IiwgImJibmVxIgorICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0uaW1tZWRpYXRlPyBhbmQgb3Bl
cmFuZHNbMF0udmFsdWUgPT0gMAorICAgICAgICAgICAgICAgICRhc20ucHV0cyAiY2JueiAje29w
ZXJhbmRzWzFdLmFybTY0T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9Igor
ICAgICAgICAgICAgZWxzaWYgb3BlcmFuZHNbMV0uaW1tZWRpYXRlPyBhbmQgb3BlcmFuZHNbMV0u
dmFsdWUgPT0gMAorICAgICAgICAgICAgICAgICRhc20ucHV0cyAiY2JueiAje29wZXJhbmRzWzBd
LmFybTY0T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIGVtaXRBUk02NEJyYW5jaCgic3VicyB3enIsICIsIG9w
ZXJhbmRzLCA6aW50LCAiYi5uZSIpCisgICAgICAgICAgICBlbmQKKyAgICAgICAgd2hlbiAiYnBu
ZXEiCisgICAgICAgICAgICBpZiBvcGVyYW5kc1swXS5pbW1lZGlhdGU/IGFuZCBvcGVyYW5kc1sw
XS52YWx1ZSA9PSAwCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJjYm56ICN7b3BlcmFuZHNb
MV0uYXJtNjRPcGVyYW5kKDpwdHIpfSwgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAg
ICAgICBlbHNpZiBvcGVyYW5kc1sxXS5pbW1lZGlhdGU/IGFuZCBvcGVyYW5kc1sxXS52YWx1ZSA9
PSAwCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJjYm56ICN7b3BlcmFuZHNbMF0uYXJtNjRP
cGVyYW5kKDpwdHIpfSwgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJzdWJzIHh6ciwgIiwgb3BlcmFuZHMs
IDpwdHIsICJiLm5lIikKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVuICJicW5lcSIKKyAg
ICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLmltbWVkaWF0ZT8gYW5kIG9wZXJhbmRzWzBdLnZhbHVl
ID09IDAKKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImNibnogI3tvcGVyYW5kc1sxXS5hcm02
NE9wZXJhbmQoOnB0cil9LCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgICAgIGVs
c2lmIG9wZXJhbmRzWzFdLmltbWVkaWF0ZT8gYW5kIG9wZXJhbmRzWzFdLnZhbHVlID09IDAKKyAg
ICAgICAgICAgICAgICAkYXNtLnB1dHMgImNibnogI3tvcGVyYW5kc1swXS5hcm02NE9wZXJhbmQo
OnB0cil9LCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBlbWl0QVJNNjRCcmFuY2goInN1YnMgeHpyLCAiLCBvcGVyYW5kcywgOnB0ciwg
ImIubmUiKQorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gImJpYSIsICJiYmEiCisgICAg
ICAgICAgICBlbWl0QVJNNjRCcmFuY2goInN1YnMgd3pyLCAiLCBvcGVyYW5kcywgOmludCwgImIu
aGkiKQorICAgICAgICB3aGVuICJicGEiCisgICAgICAgICAgICBlbWl0QVJNNjRCcmFuY2goInN1
YnMgeHpyLCAiLCBvcGVyYW5kcywgOnB0ciwgImIuaGkiKQorICAgICAgICB3aGVuICJicWEiCisg
ICAgICAgICAgICBlbWl0QVJNNjRCcmFuY2goInN1YnMgeHpyLCAiLCBvcGVyYW5kcywgOnB0ciwg
ImIuaGkiKQorICAgICAgICB3aGVuICJiaWFlcSIsICJiYmFlcSIKKyAgICAgICAgICAgIGVtaXRB
Uk02NEJyYW5jaCgic3VicyB3enIsICIsIG9wZXJhbmRzLCA6aW50LCAiYi5ocyIpCisgICAgICAg
IHdoZW4gImJwYWVxIgorICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJzdWJzIHh6ciwgIiwg
b3BlcmFuZHMsIDpwdHIsICJiLmhzIikKKyAgICAgICAgd2hlbiAiYnFhZXEiCisgICAgICAgICAg
ICBlbWl0QVJNNjRCcmFuY2goInN1YnMgeHpyLCAiLCBvcGVyYW5kcywgOnB0ciwgImIuaHMiKQor
ICAgICAgICB3aGVuICJiaWIiLCAiYmJiIgorICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJz
dWJzIHd6ciwgIiwgb3BlcmFuZHMsIDppbnQsICJiLmxvIikKKyAgICAgICAgd2hlbiAiYnBiIgor
ICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJzdWJzIHh6ciwgIiwgb3BlcmFuZHMsIDpwdHIs
ICJiLmxvIikKKyAgICAgICAgd2hlbiAiYnFiIgorICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNo
KCJzdWJzIHh6ciwgIiwgb3BlcmFuZHMsIDpwdHIsICJiLmxvIikKKyAgICAgICAgd2hlbiAiYmli
ZXEiLCAiYmJiZXEiCisgICAgICAgICAgICBlbWl0QVJNNjRCcmFuY2goInN1YnMgd3pyLCAiLCBv
cGVyYW5kcywgOmludCwgImIubHMiKQorICAgICAgICB3aGVuICJicGJlcSIKKyAgICAgICAgICAg
IGVtaXRBUk02NEJyYW5jaCgic3VicyB4enIsICIsIG9wZXJhbmRzLCA6cHRyLCAiYi5scyIpCisg
ICAgICAgIHdoZW4gImJxYmVxIgorICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJzdWJzIHh6
ciwgIiwgb3BlcmFuZHMsIDpwdHIsICJiLmxzIikKKyAgICAgICAgd2hlbiAiYmlndCIsICJiYmd0
IgorICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJzdWJzIHd6ciwgIiwgb3BlcmFuZHMsIDpp
bnQsICJiLmd0IikKKyAgICAgICAgd2hlbiAiYnBndCIKKyAgICAgICAgICAgIGVtaXRBUk02NEJy
YW5jaCgic3VicyB4enIsICIsIG9wZXJhbmRzLCA6cHRyLCAiYi5ndCIpCisgICAgICAgIHdoZW4g
ImJxZ3QiCisgICAgICAgICAgICBlbWl0QVJNNjRCcmFuY2goInN1YnMgeHpyLCAiLCBvcGVyYW5k
cywgOnB0ciwgImIuZ3QiKQorICAgICAgICB3aGVuICJiaWd0ZXEiLCAiYmJndGVxIgorICAgICAg
ICAgICAgZW1pdEFSTTY0QnJhbmNoKCJzdWJzIHd6ciwgIiwgb3BlcmFuZHMsIDppbnQsICJiLmdl
IikKKyAgICAgICAgd2hlbiAiYnBndGVxIgorICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJz
dWJzIHh6ciwgIiwgb3BlcmFuZHMsIDpwdHIsICJiLmdlIikKKyAgICAgICAgd2hlbiAiYnFndGVx
IgorICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJzdWJzIHh6ciwgIiwgb3BlcmFuZHMsIDpw
dHIsICJiLmdlIikKKyAgICAgICAgd2hlbiAiYmlsdCIsICJiYmx0IgorICAgICAgICAgICAgZW1p
dEFSTTY0QnJhbmNoKCJzdWJzIHd6ciwgIiwgb3BlcmFuZHMsIDppbnQsICJiLmx0IikKKyAgICAg
ICAgd2hlbiAiYnBsdCIKKyAgICAgICAgICAgIGVtaXRBUk02NEJyYW5jaCgic3VicyB4enIsICIs
IG9wZXJhbmRzLCA6cHRyLCAiYi5sdCIpCisgICAgICAgIHdoZW4gImJxbHQiCisgICAgICAgICAg
ICBlbWl0QVJNNjRCcmFuY2goInN1YnMgeHpyLCAiLCBvcGVyYW5kcywgOnB0ciwgImIubHQiKQor
ICAgICAgICB3aGVuICJiaWx0ZXEiLCAiYmJsdGVxIgorICAgICAgICAgICAgZW1pdEFSTTY0QnJh
bmNoKCJzdWJzIHd6ciwgIiwgb3BlcmFuZHMsIDppbnQsICJiLmxlIikKKyAgICAgICAgd2hlbiAi
YnBsdGVxIgorICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJzdWJzIHh6ciwgIiwgb3BlcmFu
ZHMsIDpwdHIsICJiLmxlIikKKyAgICAgICAgd2hlbiAiYnFsdGVxIgorICAgICAgICAgICAgZW1p
dEFSTTY0QnJhbmNoKCJzdWJzIHh6ciwgIiwgb3BlcmFuZHMsIDpwdHIsICJiLmxlIikKKyAgICAg
ICAgd2hlbiAiam1wIgorICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0ubGFiZWw/CisgICAgICAg
ICAgICAgICAgJGFzbS5wdXRzICJiICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIGVtaXRBUk02NFVuZmxpcHBlZCgiYnIiLCBvcGVyYW5k
cywgOnB0cikKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVuICJjYWxsIgorICAgICAgICAg
ICAgaWYgb3BlcmFuZHNbMF0ubGFiZWw/CisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJibCAj
e29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBlbWl0QVJNNjRVbmZsaXBwZWQoImJsciIsIG9wZXJhbmRzLCA6cHRyKQorICAgICAgICAgICAg
ZW5kCisgICAgICAgIHdoZW4gImJyZWFrIgorICAgICAgICAgICAgJGFzbS5wdXRzICJicmsgXCMw
IgorICAgICAgICB3aGVuICJyZXQiCisgICAgICAgICAgICAkYXNtLnB1dHMgInJldCIKKyAgICAg
ICAgd2hlbiAiY2llcSIsICJjYmVxIgorICAgICAgICAgICAgZW1pdEFSTTY0Q29tcGFyZShvcGVy
YW5kcywgOmludCwgIm5lIikKKyAgICAgICAgd2hlbiAiY3BlcSIKKyAgICAgICAgICAgIGVtaXRB
Uk02NENvbXBhcmUob3BlcmFuZHMsIDpwdHIsICJuZSIpCisgICAgICAgIHdoZW4gImNxZXEiCisg
ICAgICAgICAgICBlbWl0QVJNNjRDb21wYXJlKG9wZXJhbmRzLCA6cHRyLCAibmUiKQorICAgICAg
ICB3aGVuICJjaW5lcSIsICJjYm5lcSIKKyAgICAgICAgICAgIGVtaXRBUk02NENvbXBhcmUob3Bl
cmFuZHMsIDppbnQsICJlcSIpCisgICAgICAgIHdoZW4gImNwbmVxIgorICAgICAgICAgICAgZW1p
dEFSTTY0Q29tcGFyZShvcGVyYW5kcywgOnB0ciwgImVxIikKKyAgICAgICAgd2hlbiAiY3FuZXEi
CisgICAgICAgICAgICBlbWl0QVJNNjRDb21wYXJlKG9wZXJhbmRzLCA6cHRyLCAiZXEiKQorICAg
ICAgICB3aGVuICJjaWEiLCAiY2JhIgorICAgICAgICAgICAgZW1pdEFSTTY0Q29tcGFyZShvcGVy
YW5kcywgOmludCwgImxzIikKKyAgICAgICAgd2hlbiAiY3BhIgorICAgICAgICAgICAgZW1pdEFS
TTY0Q29tcGFyZShvcGVyYW5kcywgOnB0ciwgImxzIikKKyAgICAgICAgd2hlbiAiY3FhIgorICAg
ICAgICAgICAgZW1pdEFSTTY0Q29tcGFyZShvcGVyYW5kcywgOnB0ciwgImxzIikKKyAgICAgICAg
d2hlbiAiY2lhZXEiLCAiY2JhZXEiCisgICAgICAgICAgICBlbWl0QVJNNjRDb21wYXJlKG9wZXJh
bmRzLCA6aW50LCAibG8iKQorICAgICAgICB3aGVuICJjcGFlcSIKKyAgICAgICAgICAgIGVtaXRB
Uk02NENvbXBhcmUob3BlcmFuZHMsIDpwdHIsICJsbyIpCisgICAgICAgIHdoZW4gImNxYWVxIgor
ICAgICAgICAgICAgZW1pdEFSTTY0Q29tcGFyZShvcGVyYW5kcywgOnB0ciwgImxvIikKKyAgICAg
ICAgd2hlbiAiY2liIiwgImNiYiIKKyAgICAgICAgICAgIGVtaXRBUk02NENvbXBhcmUob3BlcmFu
ZHMsIDppbnQsICJocyIpCisgICAgICAgIHdoZW4gImNwYiIKKyAgICAgICAgICAgIGVtaXRBUk02
NENvbXBhcmUob3BlcmFuZHMsIDpwdHIsICJocyIpCisgICAgICAgIHdoZW4gImNxYiIKKyAgICAg
ICAgICAgIGVtaXRBUk02NENvbXBhcmUob3BlcmFuZHMsIDpwdHIsICJocyIpCisgICAgICAgIHdo
ZW4gImNpYmVxIiwgImNiYmVxIgorICAgICAgICAgICAgZW1pdEFSTTY0Q29tcGFyZShvcGVyYW5k
cywgOmludCwgImhpIikKKyAgICAgICAgd2hlbiAiY3BiZXEiCisgICAgICAgICAgICBlbWl0QVJN
NjRDb21wYXJlKG9wZXJhbmRzLCA6cHRyLCAiaGkiKQorICAgICAgICB3aGVuICJjcWJlcSIKKyAg
ICAgICAgICAgIGVtaXRBUk02NENvbXBhcmUob3BlcmFuZHMsIDpwdHIsICJoaSIpCisgICAgICAg
IHdoZW4gImNpbHQiLCAiY2JsdCIKKyAgICAgICAgICAgIGVtaXRBUk02NENvbXBhcmUob3BlcmFu
ZHMsIDppbnQsICJnZSIpCisgICAgICAgIHdoZW4gImNwbHQiCisgICAgICAgICAgICBlbWl0QVJN
NjRDb21wYXJlKG9wZXJhbmRzLCA6cHRyLCAiZ2UiKQorICAgICAgICB3aGVuICJjcWx0IgorICAg
ICAgICAgICAgZW1pdEFSTTY0Q29tcGFyZShvcGVyYW5kcywgOnB0ciwgImdlIikKKyAgICAgICAg
d2hlbiAiY2lsdGVxIiwgImNibHRlcSIKKyAgICAgICAgICAgIGVtaXRBUk02NENvbXBhcmUob3Bl
cmFuZHMsIDppbnQsICJndCIpCisgICAgICAgIHdoZW4gImNwbHRlcSIKKyAgICAgICAgICAgIGVt
aXRBUk02NENvbXBhcmUob3BlcmFuZHMsIDpwdHIsICJndCIpCisgICAgICAgIHdoZW4gImNxbHRl
cSIKKyAgICAgICAgICAgIGVtaXRBUk02NENvbXBhcmUob3BlcmFuZHMsIDpwdHIsICJndCIpCisg
ICAgICAgIHdoZW4gImNpZ3QiLCAiY2JndCIKKyAgICAgICAgICAgIGVtaXRBUk02NENvbXBhcmUo
b3BlcmFuZHMsIDppbnQsICJsZSIpCisgICAgICAgIHdoZW4gImNwZ3QiCisgICAgICAgICAgICBl
bWl0QVJNNjRDb21wYXJlKG9wZXJhbmRzLCA6cHRyLCAibGUiKQorICAgICAgICB3aGVuICJjcWd0
IgorICAgICAgICAgICAgZW1pdEFSTTY0Q29tcGFyZShvcGVyYW5kcywgOnB0ciwgImxlIikKKyAg
ICAgICAgd2hlbiAiY2lndGVxIiwgImNiZ3RlcSIKKyAgICAgICAgICAgIGVtaXRBUk02NENvbXBh
cmUob3BlcmFuZHMsIDppbnQsICJsdCIpCisgICAgICAgIHdoZW4gImNwZ3RlcSIKKyAgICAgICAg
ICAgIGVtaXRBUk02NENvbXBhcmUob3BlcmFuZHMsIDpwdHIsICJsdCIpCisgICAgICAgIHdoZW4g
ImNxZ3RlcSIKKyAgICAgICAgICAgIGVtaXRBUk02NENvbXBhcmUob3BlcmFuZHMsIDpwdHIsICJs
dCIpCisgICAgICAgIHdoZW4gInBlZWsiCisgICAgICAgICAgICAkYXNtLnB1dHMgImxkciAje29w
ZXJhbmRzWzFdLmFybTY0T3BlcmFuZCg6cHRyKX0sIFtzcCwgXCMje29wZXJhbmRzWzBdLnZhbHVl
ICogOH1dIgorICAgICAgICB3aGVuICJwb2tlIgorICAgICAgICAgICAgJGFzbS5wdXRzICJzdHIg
I3tvcGVyYW5kc1sxXS5hcm02NE9wZXJhbmQoOnB0cil9LCBbc3AsIFwjI3tvcGVyYW5kc1swXS52
YWx1ZSAqIDh9XSIKKyAgICAgICAgd2hlbiAiZnAyZCIKKyAgICAgICAgICAgIGVtaXRBUk02NCgi
Zm1vdiIsIG9wZXJhbmRzLCBbOnB0ciwgOmRvdWJsZV0pCisgICAgICAgIHdoZW4gImZxMmQiCisg
ICAgICAgICAgICBlbWl0QVJNNjQoImZtb3YiLCBvcGVyYW5kcywgWzpwdHIsIDpkb3VibGVdKQor
ICAgICAgICB3aGVuICJmZDJwIgorICAgICAgICAgICAgZW1pdEFSTTY0KCJmbW92Iiwgb3BlcmFu
ZHMsIFs6ZG91YmxlLCA6cHRyXSkKKyAgICAgICAgd2hlbiAiZmQycSIKKyAgICAgICAgICAgIGVt
aXRBUk02NCgiZm1vdiIsIG9wZXJhbmRzLCBbOmRvdWJsZSwgOnB0cl0pCisgICAgICAgIHdoZW4g
ImJvIgorICAgICAgICAgICAgJGFzbS5wdXRzICJiLnZzICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9
IgorICAgICAgICB3aGVuICJicyIKKyAgICAgICAgICAgICRhc20ucHV0cyAiYi5taSAje29wZXJh
bmRzWzBdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAiYnoiCisgICAgICAgICAgICAkYXNtLnB1
dHMgImIuZXEgI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgICAgIHdoZW4gImJueiIKKyAg
ICAgICAgICAgICRhc20ucHV0cyAiYi5uZSAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICAg
ICAgd2hlbiAibGVhaSIKKyAgICAgICAgICAgIG9wZXJhbmRzWzBdLmFybTY0RW1pdExlYShvcGVy
YW5kc1sxXSwgOmludCkKKyAgICAgICAgd2hlbiAibGVhcCIKKyAgICAgICAgICAgIG9wZXJhbmRz
WzBdLmFybTY0RW1pdExlYShvcGVyYW5kc1sxXSwgOnB0cikKKyAgICAgICAgd2hlbiAibGVhcSIK
KyAgICAgICAgICAgIG9wZXJhbmRzWzBdLmFybTY0RW1pdExlYShvcGVyYW5kc1sxXSwgOnB0cikK
KyAgICAgICAgd2hlbiAic211bGxpIgorICAgICAgICAgICAgJGFzbS5wdXRzICJzbWFkZGwgI3tv
cGVyYW5kc1syXS5hcm02NE9wZXJhbmQoOnB0cil9LCAje29wZXJhbmRzWzBdLmFybTY0T3BlcmFu
ZCg6aW50KX0sICN7b3BlcmFuZHNbMV0uYXJtNjRPcGVyYW5kKDppbnQpfSwgeHpyIgorICAgICAg
ICBlbHNlCisgICAgICAgICAgICBsb3dlckRlZmF1bHQKKyAgICAgICAgZW5kCisgICAgZW5kCitl
bmQKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2Vu
ZHMucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgppbmRl
eCA5MDJhNzY0Li5iZjAxYjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9iYWNrZW5kcy5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9iYWNrZW5kcy5yYgpAQCAtMjMsNiArMjMsNyBAQAogCiByZXF1aXJlICJjb25maWciCiByZXF1
aXJlICJhcm0iCityZXF1aXJlICJhcm02NCIKIHJlcXVpcmUgImFzdCIKIHJlcXVpcmUgIng4NiIK
IHJlcXVpcmUgIm1pcHMiCkBAIC0zNiw2ICszNyw3IEBAIEJBQ0tFTkRTID0KICAgICAgIkFSTSIs
CiAgICAgICJBUk12NyIsCiAgICAgICJBUk12N19UUkFESVRJT05BTCIsCisgICAgICJBUk02NCIs
CiAgICAgICJNSVBTIiwKICAgICAgIlNINCIsCiAgICAgICJDX0xPT1AiCkBAIC01Myw2ICs1NSw3
IEBAIFdPUktJTkdfQkFDS0VORFMgPQogICAgICAiQVJNIiwKICAgICAgIkFSTXY3IiwKICAgICAg
IkFSTXY3X1RSQURJVElPTkFMIiwKKyAgICAgIkFSTTY0IiwKICAgICAgIk1JUFMiLAogICAgICAi
U0g0IiwKICAgICAgIkNfTE9PUCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2luc3RydWN0aW9ucy5yYgppbmRleCBlYjM5NGFmLi4wM2YwNWM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCkBAIC0yNTcsMTIg
KzI1NywxMyBAQCBYODZfSU5TVFJVQ1RJT05TID0KICAgICAgImlkaXZpIgogICAgIF0KIAotQVJN
X0lOU1RSVUNUSU9OUyA9CitSSVNDX0lOU1RSVUNUSU9OUyA9CiAgICAgWwotICAgICAic211bGxp
IiwKLSAgICAgImFkZGlzIiwKLSAgICAgInN1YmlzIiwKLSAgICAgIm9yaXMiCisgICAgICJzbXVs
bGkiLCAgIyBNdWx0aXBseSB0d28gMzItYml0IHdvcmRzIGFuZCBwcm9kdWNlIGEgNjQtYml0IHdv
cmQKKyAgICAgImFkZGlzIiwgICAjIEFkZCBpbnRlZ2VycyBhbmQgc2V0IGEgZmxhZy4KKyAgICAg
InN1YmlzIiwgICAjIFNhbWUsIGJ1dCBmb3Igc3VidHJhY3Rpb24uCisgICAgICJvcmlzIiwgICAg
IyBTYW1lLCBidXQgZm9yIGJpdHdpc2Ugb3IuCisgICAgICJhZGRwcyIgICAgIyBhZGRpcyBidXQg
Zm9yIHBvaW50ZXJzLgogICAgIF0KIAogTUlQU19JTlNUUlVDVElPTlMgPQpAQCAtMzA2LDcgKzMw
Nyw3IEBAIENYWF9JTlNUUlVDVElPTlMgPQogICAgICAiY2xvb3BEbyIsICAgICAgICAgICAgICAj
IG5vIG9wZXJhbmRzCiAgICAgXQogCi1JTlNUUlVDVElPTlMgPSBNQUNST19JTlNUUlVDVElPTlMg
KyBYODZfSU5TVFJVQ1RJT05TICsgQVJNX0lOU1RSVUNUSU9OUyArIE1JUFNfSU5TVFJVQ1RJT05T
ICsgU0g0X0lOU1RSVUNUSU9OUyArIENYWF9JTlNUUlVDVElPTlMKK0lOU1RSVUNUSU9OUyA9IE1B
Q1JPX0lOU1RSVUNUSU9OUyArIFg4Nl9JTlNUUlVDVElPTlMgKyBSSVNDX0lOU1RSVUNUSU9OUyAr
IE1JUFNfSU5TVFJVQ1RJT05TICsgU0g0X0lOU1RSVUNUSU9OUyArIENYWF9JTlNUUlVDVElPTlMK
IAogSU5TVFJVQ1RJT05fUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIElOU1RSVUNUSU9O
Uy5qb2luKCcpfCgnKSArICcpKVxcWicpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3Jpc2MucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9yaXNjLnJiCmluZGV4IDE2OTZhMGMuLjk1NDc4NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jpc2MucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vcmlzYy5yYgpAQCAtMzcxLDcgKzM3MSw3IEBAIGRlZiByaXNjTG93ZXJNYWxm
b3JtZWRJbW1lZGlhdGVzKGxpc3QsIHZhbGlkSW1tZWRpYXRlcykKICAgICAgICAgICAgIGNhc2Ug
bm9kZS5vcGNvZGUKICAgICAgICAgICAgIHdoZW4gIm1vdmUiCiAgICAgICAgICAgICAgICAgbmV3
TGlzdCA8PCBub2RlCi0gICAgICAgICAgICB3aGVuICJhZGRpIiwgImFkZHAiLCAiYWRkaXMiLCAi
c3ViaSIsICJzdWJwIiwgInN1YmlzIgorICAgICAgICAgICAgd2hlbiAiYWRkaSIsICJhZGRwIiwg
ImFkZHEiLCAiYWRkaXMiLCAic3ViaSIsICJzdWJwIiwgInN1YnEiLCAic3ViaXMiCiAgICAgICAg
ICAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUgYW5kCiAgICAgICAg
ICAgICAgICAgICAgICAgICAobm90IHZhbGlkSW1tZWRpYXRlcy5pbmNsdWRlPyBub2RlLm9wZXJh
bmRzWzBdLnZhbHVlKSBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkSW1tZWRpYXRl
cy5pbmNsdWRlPyAtbm9kZS5vcGVyYW5kc1swXS52YWx1ZQpAQCAtMzg3LDcgKzM4Nyw3IEBAIGRl
ZiByaXNjTG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzKGxpc3QsIHZhbGlkSW1tZWRpYXRlcykKICAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZS5y
aXNjTG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdMaXN0LCB2YWxpZEltbWVkaWF0
ZXMpCiAgICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICB3aGVuICJtdWxpIiwgIm11bHAi
CisgICAgICAgICAgICB3aGVuICJtdWxpIiwgIm11bHAiLCAibXVscSIKICAgICAgICAgICAgICAg
ICBpZiBub2RlLm9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQogICAgICAgICAgICAgICAgICAg
ICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCiAgICAgICAgICAgICAgICAgICAgIG5l
d0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBbbm9kZS5v
cGVyYW5kc1swXSwgdG1wXSwgYW5ub3RhdGlvbikKQEAgLTQ2Niw2ICs0NjYsMTIgQEAgZGVmIHJp
c2NMb3dlck1pc3BsYWNlZEFkZHJlc3NlcyhsaXN0KQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJpc2NBc1JlZ2lzdGVycyhuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rp
b25zLCBub2RlLm9wZXJhbmRzLCAicCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFubm90YXRpb24pCisgICAgICAgICAgICB3aGVuICJhZGRxIiwgImFuZHEi
LCAibHNoaWZ0cSIsICJtdWxxIiwgIm5lZ3EiLCAib3JxIiwgInJzaGlmdHEiLCAidXJzaGlmdHEi
LAorICAgICAgICAgICAgICAgICJzdWJxIiwgInhvcnEiLCAvXmJxLywgL15idHEvLCAvXmNxLwor
ICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdp
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29k
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaXNjQXNSZWdp
c3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgInEiKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uKQogICAg
ICAgICAgICAgd2hlbiAiYmJlcSIsICJiYm5lcSIsICJiYmEiLCAiYmJhZXEiLCAiYmJiIiwgImJi
YmVxIiwgImJ0YnoiLCAiYnRibnoiLCAidGJ6IiwgInRibnoiLAogICAgICAgICAgICAgICAgICJj
YmVxIiwgImNibmVxIiwgImNiYSIsICJjYmFlcSIsICJjYmIiLCAiY2JiZXEiCiAgICAgICAgICAg
ICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmlzY19hcm02NC5yYiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jpc2NfYXJtNjQucmIKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk2MTgwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jpc2NfYXJtNjQucmIKQEAgLTAsMCArMSwyMDQg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgJ2FzdCcK
K3JlcXVpcmUgJ29wdCcKK3JlcXVpcmUgJ3Jpc2MnCisKKyMgVGhpcyBmaWxlIGNvbnRhaW5zIHV0
aWxpdGllcyB0aGF0IHNob3VsZCBiZSBpbiByaXNjLnJiIGlmIGl0IHdhc24ndCBmb3IgdGhlCisj
IGZhY3QgdGhhdCByaXNjLnJiIGlzIHNoYXJlZCB3aXRoIHRoZSBBUk12NyBiYWNrZW5kLCBhbmQg
bWF5IGJlIHBhcnQgb2YgYQorIyBjb2RlIGR1bXAgYmVmb3JlIEFSTTY0IGdvZXMgcHVibGljLgor
IworIyBGSVhNRTogd2hlbiBBUk02NCBnb2VzIHB1YmxpYywgd2Ugc2hvdWxkIG1lcmdlIHRoaXMg
ZmlsZSBpbnRvIHJpc2MucmIKKworIworIyBMb3dlcmluZyBvZiB0aGUgbm90IGluc3RydWN0aW9u
LiBUaGUgZm9sbG93aW5nOgorIworIyBub3RpIHQwCisjCisjIGJlY29tZXM6CisjCisjIHhvcmkg
LTEsIHQwCisjCisKK2RlZiByaXNjTG93ZXJOb3QobGlzdCkKKyAgICBuZXdMaXN0ID0gW10KKyAg
ICBsaXN0LmVhY2ggeworICAgICAgICB8IG5vZGUgfAorICAgICAgICBpZiBub2RlLmlzX2E/IElu
c3RydWN0aW9uCisgICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCisgICAgICAgICAgICB3aGVu
ICJub3RpIiwgIm5vdHAiCisgICAgICAgICAgICAgICAgcmFpc2UgIldyb25nIG51Ym1lciBvZiBv
cGVyYW5kcyBhdCAje25vZGUuY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBub2RlLm9wZXJhbmRz
LnNpemUgPT0gMQorICAgICAgICAgICAgICAgIHN1ZmZpeCA9IG5vZGUub3Bjb2RlWy0xLi4tMV0K
KyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmln
aW4sICJ4b3IiICsgc3VmZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFtJbW1lZGlhdGUubmV3KG5vZGUuY29kZU9yaWdpbiwgLTEpLCBub2RlLm9wZXJhbmRz
WzBdXSkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUK
KyAgICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdMaXN0IDw8IG5v
ZGUKKyAgICAgICAgZW5kCisgICAgfQorICAgIHJldHVybiBuZXdMaXN0CitlbmQKKworIworIyBM
b3dpbmcgb2YgY29tcGxleCBicmFuY2ggb3BzIG9uIDY0LWJpdC4gRm9yIGV4YW1wbGU6CisjCisj
IGJtdWxpbyBmb28sIGJhciwgYmF6CisjCisjIGJlY29tZXM6CisjCisjIHNtdWxsaSBmb28sIGJh
ciwgYmFyCisjIHJzaGlmdHAgYmFyLCAzMiwgdG1wMQorIyByc2hpZnRpIGJhciwgMzEsIHRtcDIK
KyMgenhpMnAgYmFyLCBiYXIgCisjIGJpbmVxIHRtcDEsIHRtcDIsIGJhegorIworCitkZWYgcmlz
Y0xvd2VySGFyZEJyYW5jaE9wczY0KGxpc3QpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbGlzdC5l
YWNoIHsKKyAgICAgICAgfCBub2RlIHwKKyAgICAgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlv
biBhbmQgbm9kZS5vcGNvZGUgPT0gImJtdWxpbyIKKyAgICAgICAgICAgIHRtcDEgPSBUbXAubmV3
KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgIHRtcDIgPSBUbXAubmV3KG5vZGUu
Y29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3
KG5vZGUuY29kZU9yaWdpbiwgInNtdWxsaSIsIFtub2RlLm9wZXJhbmRzWzBdLCBub2RlLm9wZXJh
bmRzWzFdLCBub2RlLm9wZXJhbmRzWzFdXSkKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1
Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgInJzaGlmdHAiLCBbbm9kZS5vcGVyYW5kc1sxXSwg
SW1tZWRpYXRlLm5ldyhub2RlLmNvZGVPcmlnaW4sIDMyKSwgdG1wMV0pCisgICAgICAgICAgICBu
ZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJyc2hpZnRpIiwgW25v
ZGUub3BlcmFuZHNbMV0sIEltbWVkaWF0ZS5uZXcobm9kZS5jb2RlT3JpZ2luLCAzMSksIHRtcDJd
KQorICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2lu
LCAienhpMnAiLCBbbm9kZS5vcGVyYW5kc1sxXSwgbm9kZS5vcGVyYW5kc1sxXV0pCisgICAgICAg
ICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJiaW5lcSIs
IFt0bXAxLCB0bXAyLCBub2RlLm9wZXJhbmRzWzJdXSkKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbmV3TGlzdCA8PCBub2RlCisgICAgICAgIGVuZAorICAgIH0KKyAgICBuZXdMaXN0CitlbmQK
KworIworIyBMb3dlcmluZyBvZiB0ZXN0IGluc3RydWN0aW9ucy4gRm9yIGV4YW1wbGU6CisjCisj
IGJ0aXogdDAsIHQxLCAuZm9vCisjCisjIGJlY29tZXM6CisjCisjIGFuZGkgdDAsIHQxLCB0bXAK
KyMgYmllcSB0bXAsIDAsIC5mb28KKyMKKyMgYW5kIGFub3RoZXIgZXhhbXBsZToKKyMKKyMgdGl6
IHQwLCB0MSwgdDIKKyMKKyMgYmVjb21lczoKKyMKKyMgYW5kaSB0MCwgdDEsIHRtcAorIyBjaWVx
IHRtcCwgMCwgdDIKKyMKKworZGVmIHJpc2NMb3dlclRlc3QobGlzdCkKKyAgICBkZWYgZW1pdChu
ZXdMaXN0LCBhbmRPcGNvZGUsIGJyYW5jaE9wY29kZSwgbm9kZSkKKyAgICAgICAgaWYgbm9kZS5v
cGVyYW5kcy5zaXplID09IDIKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3
KG5vZGUuY29kZU9yaWdpbiwgYnJhbmNoT3Bjb2RlLCBbbm9kZS5vcGVyYW5kc1swXSwgSW1tZWRp
YXRlLm5ldyhub2RlLmNvZGVPcmlnaW4sIDApLCBub2RlLm9wZXJhbmRzWzFdXSkKKyAgICAgICAg
ICAgIHJldHVybgorICAgICAgICBlbmQKKyAgICAgICAgCisgICAgICAgIHJhaXNlICJJbmNvcnJl
Y3QgbnVtYmVyIG9mIG9wZXJhbmRzIGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBub2Rl
Lm9wZXJhbmRzLnNpemUgPT0gMworCisgICAgICAgIGlmIG5vZGUub3BlcmFuZHNbMF0uaW1tZWRp
YXRlPyBhbmQgbm9kZS5vcGVyYW5kc1swXS52YWx1ZSA9PSAtMQorICAgICAgICAgICAgbmV3TGlz
dCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBicmFuY2hPcGNvZGUsIFtub2Rl
Lm9wZXJhbmRzWzFdLCBJbW1lZGlhdGUubmV3KG5vZGUuY29kZU9yaWdpbiwgMCksIG5vZGUub3Bl
cmFuZHNbMl1dKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGVuZAorCisgICAgICAgIGlm
IG5vZGUub3BlcmFuZHNbMV0uaW1tZWRpYXRlPyBhbmQgbm9kZS5vcGVyYW5kc1sxXS52YWx1ZSA9
PSAtMQorICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3Jp
Z2luLCBicmFuY2hPcGNvZGUsIFtub2RlLm9wZXJhbmRzWzBdLCBJbW1lZGlhdGUubmV3KG5vZGUu
Y29kZU9yaWdpbiwgMCksIG5vZGUub3BlcmFuZHNbMl1dKQorICAgICAgICAgICAgcmV0dXJuCisg
ICAgICAgIGVuZAorICAgICAgICAKKyAgICAgICAgdG1wID0gVG1wLm5ldyhub2RlLmNvZGVPcmln
aW4sIDpncHIpCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9y
aWdpbiwgYW5kT3Bjb2RlLCBbbm9kZS5vcGVyYW5kc1swXSwgbm9kZS5vcGVyYW5kc1sxXSwgdG1w
XSkKKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBi
cmFuY2hPcGNvZGUsIFt0bXAsIEltbWVkaWF0ZS5uZXcobm9kZS5jb2RlT3JpZ2luLCAwKSwgbm9k
ZS5vcGVyYW5kc1syXV0pCisgICAgZW5kCisgICAgCisgICAgbmV3TGlzdCA9IFtdCisgICAgbGlz
dC5lYWNoIHsKKyAgICAgICAgfCBub2RlIHwKKyAgICAgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVj
dGlvbgorICAgICAgICAgICAgY2FzZSBub2RlLm9wY29kZQorICAgICAgICAgICAgd2hlbiAiYnRp
cyIKKyAgICAgICAgICAgICAgICBlbWl0KG5ld0xpc3QsICJhbmRpIiwgImJpbHQiLCBub2RlKQor
ICAgICAgICAgICAgd2hlbiAiYnRpeiIKKyAgICAgICAgICAgICAgICBlbWl0KG5ld0xpc3QsICJh
bmRpIiwgImJpZXEiLCBub2RlKQorICAgICAgICAgICAgd2hlbiAiYnRpbnoiCisgICAgICAgICAg
ICAgICAgZW1pdChuZXdMaXN0LCAiYW5kaSIsICJiaW5lcSIsIG5vZGUpCisgICAgICAgICAgICB3
aGVuICJidHBzIgorICAgICAgICAgICAgICAgIGVtaXQobmV3TGlzdCwgImFuZHAiLCAiYnBsdCIs
IG5vZGUpCisgICAgICAgICAgICB3aGVuICJidHB6IgorICAgICAgICAgICAgICAgIGVtaXQobmV3
TGlzdCwgImFuZHAiLCAiYnBlcSIsIG5vZGUpCisgICAgICAgICAgICB3aGVuICJidHBueiIKKyAg
ICAgICAgICAgICAgICBlbWl0KG5ld0xpc3QsICJhbmRwIiwgImJwbmVxIiwgbm9kZSkKKyAgICAg
ICAgICAgIHdoZW4gImJ0cXMiCisgICAgICAgICAgICAgICAgZW1pdChuZXdMaXN0LCAiYW5kcSIs
ICJicWx0Iiwgbm9kZSkKKyAgICAgICAgICAgIHdoZW4gImJ0cXoiCisgICAgICAgICAgICAgICAg
ZW1pdChuZXdMaXN0LCAiYW5kcSIsICJicWVxIiwgbm9kZSkKKyAgICAgICAgICAgIHdoZW4gImJ0
cW56IgorICAgICAgICAgICAgICAgIGVtaXQobmV3TGlzdCwgImFuZHEiLCAiYnFuZXEiLCBub2Rl
KQorICAgICAgICAgICAgd2hlbiAiYnRicyIKKyAgICAgICAgICAgICAgICBlbWl0KG5ld0xpc3Qs
ICJhbmRpIiwgImJibHQiLCBub2RlKQorICAgICAgICAgICAgd2hlbiAiYnRieiIKKyAgICAgICAg
ICAgICAgICBlbWl0KG5ld0xpc3QsICJhbmRpIiwgImJiZXEiLCBub2RlKQorICAgICAgICAgICAg
d2hlbiAiYnRibnoiCisgICAgICAgICAgICAgICAgZW1pdChuZXdMaXN0LCAiYW5kaSIsICJiYm5l
cSIsIG5vZGUpCisgICAgICAgICAgICB3aGVuICJ0aXMiCisgICAgICAgICAgICAgICAgZW1pdChu
ZXdMaXN0LCAiYW5kaSIsICJjaWx0Iiwgbm9kZSkKKyAgICAgICAgICAgIHdoZW4gInRpeiIKKyAg
ICAgICAgICAgICAgICBlbWl0KG5ld0xpc3QsICJhbmRpIiwgImNpZXEiLCBub2RlKQorICAgICAg
ICAgICAgd2hlbiAidGlueiIKKyAgICAgICAgICAgICAgICBlbWl0KG5ld0xpc3QsICJhbmRpIiwg
ImNpbmVxIiwgbm9kZSkKKyAgICAgICAgICAgIHdoZW4gInRwcyIKKyAgICAgICAgICAgICAgICBl
bWl0KG5ld0xpc3QsICJhbmRwIiwgImNwbHQiLCBub2RlKQorICAgICAgICAgICAgd2hlbiAidHB6
IgorICAgICAgICAgICAgICAgIGVtaXQobmV3TGlzdCwgImFuZHAiLCAiY3BlcSIsIG5vZGUpCisg
ICAgICAgICAgICB3aGVuICJ0cG56IgorICAgICAgICAgICAgICAgIGVtaXQobmV3TGlzdCwgImFu
ZHAiLCAiY3BuZXEiLCBub2RlKQorICAgICAgICAgICAgd2hlbiAidHFzIgorICAgICAgICAgICAg
ICAgIGVtaXQobmV3TGlzdCwgImFuZHEiLCAiY3FsdCIsIG5vZGUpCisgICAgICAgICAgICB3aGVu
ICJ0cXoiCisgICAgICAgICAgICAgICAgZW1pdChuZXdMaXN0LCAiYW5kcSIsICJjcWVxIiwgbm9k
ZSkKKyAgICAgICAgICAgIHdoZW4gInRxbnoiCisgICAgICAgICAgICAgICAgZW1pdChuZXdMaXN0
LCAiYW5kcSIsICJjcW5lcSIsIG5vZGUpCisgICAgICAgICAgICB3aGVuICJ0YnMiCisgICAgICAg
ICAgICAgICAgZW1pdChuZXdMaXN0LCAiYW5kaSIsICJjYmx0Iiwgbm9kZSkKKyAgICAgICAgICAg
IHdoZW4gInRieiIKKyAgICAgICAgICAgICAgICBlbWl0KG5ld0xpc3QsICJhbmRpIiwgImNiZXEi
LCBub2RlKQorICAgICAgICAgICAgd2hlbiAidGJueiIKKyAgICAgICAgICAgICAgICBlbWl0KG5l
d0xpc3QsICJhbmRpIiwgImNibmVxIiwgbm9kZSkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisg
ICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgZW5kCisgICAgfQorICAgIHJldHVy
biBuZXdMaXN0CitlbmQKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vdHJhbnNmb3JtLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJh
bnNmb3JtLnJiCmluZGV4IGM4Mzg2MjkuLjMwMjk3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIKQEAgLTQwNCw2ICs0MDQsMTcgQEAgZW5kCiBj
bGFzcyBTZXF1ZW5jZQogICAgIGRlZiB2YWxpZGF0ZQogICAgICAgICB2YWxpZGF0ZUNoaWxkcmVu
CisgICAgICAgIAorICAgICAgICAjIEZ1cnRoZXIgdmVyaWZ5IHRoYXQgdGhpcyBsaXN0IGNvbnRh
aW5zIG9ubHkgaW5zdHJ1Y3Rpb25zLCBsYWJlbHMsIGFuZCBza2lwcy4KKyAgICAgICAgQGxpc3Qu
ZWFjaCB7CisgICAgICAgICAgICB8IG5vZGUgfAorICAgICAgICAgICAgdW5sZXNzIG5vZGUuaXNf
YT8gSW5zdHJ1Y3Rpb24gb3IKKyAgICAgICAgICAgICAgICAgICAgbm9kZS5pc19hPyBMYWJlbCBv
cgorICAgICAgICAgICAgICAgICAgICBub2RlLmlzX2E/IExvY2FsTGFiZWwgb3IKKyAgICAgICAg
ICAgICAgICAgICAgbm9kZS5pc19hPyBTa2lwCisgICAgICAgICAgICAgICAgcmFpc2UgIlVuZXhw
ZWN0ZWQgI3tub2RlLmluc3BlY3R9IGF0ICN7bm9kZS5jb2RlT3JpZ2lufSIgCisgICAgICAgICAg
ICBlbmQKKyAgICAgICAgfQogICAgIGVuZAogZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL3g4Ni5yYgppbmRleCA0ZTIwMTViLi40ZDM5M2VhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20veDg2LnJiCkBAIC00Niw3ICs0Niw3IEBAIGRlZiB1c2VYODcKICAgICBl
bmQKIGVuZAogCi1jbGFzcyBTcGVjaWFsUmVnaXN0ZXIgPCBOb0NoaWxkcmVuCitjbGFzcyBTcGVj
aWFsUmVnaXN0ZXIKICAgICBkZWYgeDg2T3BlcmFuZChraW5kKQogICAgICAgICByYWlzZSB1bmxl
c3MgQG5hbWUgPX4gL15yLwogICAgICAgICByYWlzZSB1bmxlc3MgaXNYNjQKLS0gCjEuOC4zLjQg
KEFwcGxlIEdpdC00NykKCg==
</data>
<flag name="review"
          id="236671"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="236673"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214168</attachid>
            <date>2013-10-14 10:38:00 -0700</date>
            <delta_ts>2013-10-14 11:00:08 -0700</delta_ts>
            <desc>LLInt changes</desc>
            <filename>0007-Changes-to-llint.patch</filename>
            <type>text/plain</type>
            <size>6500</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSBkMmYzOTRlYjUwYjQzNDhmYTg5ZGUxNGEyMmE3YjI3MmQ0MDc5ZmU1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRiYXRlc0B3ZWJraXQub3JnPgpEYXRl
OiBGcmksIDExIE9jdCAyMDEzIDE3OjM0OjQ2IC0wNzAwClN1YmplY3Q6IFtQQVRDSCA3LzhdIENo
YW5nZXMgdG8gbGxpbnQKCi0tLQogLi4uL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGlu
ZUFzbUNvbmZpZy5oICAgfCAgNiArKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcCAgICAgfCAgNCArKwogLi4uL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtICAgfCAgNCArLQogLi4uL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gfCA3NyArKysrKysrKysrKysrKystLS0tLS0tCiA0IGZp
bGVzIGNoYW5nZWQsIDY3IGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAppbmRl
eCBiYWQ2MmRkLi45YTJkNjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCkBAIC05OCw2ICs5OCwxMiBAQAogCiAjZW5kaWYg
Ly8gIUVOQUJMRShMTElOVF9DX0xPT1ApCiAKKyNpZiBDUFUoQVJNNjQpCisjZGVmaW5lIE9GRkxJ
TkVfQVNNX0FSTTY0IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTTY0IDAKKyNlbmRp
ZgorCiAjaWYgVVNFKEpTVkFMVUU2NCkKICNkZWZpbmUgT0ZGTElORV9BU01fSlNWQUxVRTY0IDEK
ICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAppbmRleCA4YTMxMDQ3Li4zNzFhYjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTkzNyw2ICs5MzcsMTAgQEAgTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCkKIAogc3RhdGljIFNsb3dQYXRoUmV0dXJu
VHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBw
YywgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKKyNpZiBM
TElOVF9TTE9XX1BBVEhfVFJBQ0lORworICAgIGRhdGFMb2coIlBlcmZvcm1pbmcgaG9zdCBjYWxs
LlxuIik7CisjZW5kaWYKKyAgICAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5j
YWxsZXJGcmFtZSgpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCA2NmQz
N2EyLi42M2I4Y2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xOTQsNyArMTk0LDcgQEAgbWFjcm8gYXNzZXJ0KGFz
c2VydGlvbikKIGVuZAogCiBtYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoZGVz
dGluYXRpb25SZWdpc3RlcikKLSAgICBpZiBDX0xPT1Agb3IgQVJNIG9yIEFSTXY3IG9yIEFSTXY3
X1RSQURJVElPTkFMIG9yIE1JUFMKKyAgICBpZiBDX0xPT1Agb3IgQVJNIG9yIEFSTXY3IG9yIEFS
TXY3X1RSQURJVElPTkFMIG9yIEFSTTY0IG9yIE1JUFMKICAgICAgICAgIyBJbiBDX0xPT1AgY2Fz
ZSwgd2UncmUgb25seSBwcmVzZXJ2aW5nIHRoZSBieXRlY29kZSB2UEMuCiAgICAgICAgIG1vdmUg
bHIsIGRlc3RpbmF0aW9uUmVnaXN0ZXIKICAgICBlbHNpZiBTSDQKQEAgLTIwNyw3ICsyMDcsNyBA
QCBtYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoZGVzdGluYXRpb25SZWdpc3Rl
cikKIGVuZAogCiBtYWNybyByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihzb3VyY2VS
ZWdpc3RlcikKLSAgICBpZiBDX0xPT1Agb3IgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElP
TkFMIG9yIE1JUFMKKyAgICBpZiBDX0xPT1Agb3IgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJ
VElPTkFMIG9yIEFSTTY0IG9yIE1JUFMKICAgICAgICAgIyBJbiBDX0xPT1AgY2FzZSwgd2UncmUg
b25seSByZXN0b3JpbmcgdGhlIGJ5dGVjb2RlIHZQQy4KICAgICAgICAgbW92ZSBzb3VyY2VSZWdp
c3RlciwgbHIKICAgICBlbHNpZiBTSDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggMTYwYjc2YS4uN2JlZTBhYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20KQEAgLTU2LDYgKzU2LDEwIEBAIG1hY3JvIGNDYWxsMihmdW5jdGlvbiwgYXJn
MSwgYXJnMikKICAgICAgICAgbW92ZSBhcmcxLCB0NQogICAgICAgICBtb3ZlIGFyZzIsIHQ0CiAg
ICAgICAgIGNhbGwgZnVuY3Rpb24KKyAgICBlbHNpZiBBUk02NAorICAgICAgICBtb3ZlIGFyZzEs
IHQwCisgICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICAgICAgY2FsbCBmdW5jdGlvbgogICAgIGVs
c2lmIENfTE9PUAogICAgICAgICBjbG9vcENhbGxTbG93UGF0aCBmdW5jdGlvbiwgYXJnMSwgYXJn
MgogICAgIGVsc2UKQEAgLTcxLDYgKzc1LDEyIEBAIG1hY3JvIGNDYWxsNChmdW5jdGlvbiwgYXJn
MSwgYXJnMiwgYXJnMywgYXJnNCkKICAgICAgICAgbW92ZSBhcmczLCB0MQogICAgICAgICBtb3Zl
IGFyZzQsIHQyCiAgICAgICAgIGNhbGwgZnVuY3Rpb24KKyAgICBlbHNpZiBBUk02NAorICAgICAg
ICBtb3ZlIGFyZzEsIHQwCisgICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICAgICAgbW92ZSBhcmcz
LCB0MgorICAgICAgICBtb3ZlIGFyZzQsIHQzCisgICAgICAgIGNhbGwgZnVuY3Rpb24KICAgICBl
bHNpZiBDX0xPT1AKICAgICAgICAgZXJyb3IKICAgICBlbHNlCkBAIC02MjMsMjYgKzYzMywzMSBA
QCBfbGxpbnRfb3Bfc3ViOgogCiBfbGxpbnRfb3BfZGl2OgogICAgIHRyYWNlRXhlY3V0aW9uKCkK
LSAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAotICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNs
b3csIGluZGV4KQotICAgICAgICAgICAgIyBBc3N1bWUgdDMgaXMgc2NyYXRjaGFibGUuCi0gICAg
ICAgICAgICBidGl6IGxlZnQsIHNsb3cKLSAgICAgICAgICAgIGJpbmVxIGxlZnQsIC0xLCAubm90
TmVnMlR3b1RoZTMxRGl2QnlOZWcxCi0gICAgICAgICAgICBiaWVxIHJpZ2h0LCAtMjE0NzQ4MzY0
OCwgLnNsb3cKLSAgICAgICAgLm5vdE5lZzJUd29UaGUzMURpdkJ5TmVnMToKLSAgICAgICAgICAg
IGJ0aW56IHJpZ2h0LCAuaW50T0sKLSAgICAgICAgICAgIGJpbHQgbGVmdCwgMCwgc2xvdwotICAg
ICAgICAuaW50T0s6Ci0gICAgICAgICAgICBtb3ZlIGxlZnQsIHQzCi0gICAgICAgICAgICBtb3Zl
IHJpZ2h0LCB0MAotICAgICAgICAgICAgY2RxaQotICAgICAgICAgICAgaWRpdmkgdDMKLSAgICAg
ICAgICAgIGJ0aW56IHQxLCBzbG93Ci0gICAgICAgICAgICBvcnEgdGFnVHlwZU51bWJlciwgdDAK
LSAgICAgICAgICAgIHN0b3JlcSB0MCwgW2NmciwgaW5kZXgsIDhdCi0gICAgICAgIGVuZCwKLSAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCwKLSAgICAgICAg
X3Nsb3dfcGF0aF9kaXYpCisgICAgaWYgWDg2XzY0CisgICAgICAgIGJpbmFyeU9wQ3VzdG9tU3Rv
cmUoCisgICAgICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAg
ICAgICAgICAgICMgQXNzdW1lIHQzIGlzIHNjcmF0Y2hhYmxlLgorICAgICAgICAgICAgICAgIGJ0
aXogbGVmdCwgc2xvdworICAgICAgICAgICAgICAgIGJpbmVxIGxlZnQsIC0xLCAubm90TmVnMlR3
b1RoZTMxRGl2QnlOZWcxCisgICAgICAgICAgICAgICAgYmllcSByaWdodCwgLTIxNDc0ODM2NDgs
IC5zbG93CisgICAgICAgICAgICAubm90TmVnMlR3b1RoZTMxRGl2QnlOZWcxOgorICAgICAgICAg
ICAgICAgIGJ0aW56IHJpZ2h0LCAuaW50T0sKKyAgICAgICAgICAgICAgICBiaWx0IGxlZnQsIDAs
IHNsb3cKKyAgICAgICAgICAgIC5pbnRPSzoKKyAgICAgICAgICAgICAgICBtb3ZlIGxlZnQsIHQz
CisgICAgICAgICAgICAgICAgbW92ZSByaWdodCwgdDAKKyAgICAgICAgICAgICAgICBjZHFpCisg
ICAgICAgICAgICAgICAgaWRpdmkgdDMKKyAgICAgICAgICAgICAgICBidGlueiB0MSwgc2xvdwor
ICAgICAgICAgICAgICAgIG9ycSB0YWdUeXBlTnVtYmVyLCB0MAorICAgICAgICAgICAgICAgIHN0
b3JlcSB0MCwgW2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBlbmQsCisgICAgICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQpIGRpdmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICAgICAgX3Ns
b3dfcGF0aF9kaXYpCisgICAgZWxzZQorICAgICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9k
aXYpCisgICAgICAgIGRpc3BhdGNoKDUpCisgICAgZW5kCiAKIAogbWFjcm8gYml0T3Aob3BlcmF0
aW9uLCBzbG93UGF0aCwgYWR2YW5jZSkKQEAgLTE2MzcsNyArMTY1MiwyNSBAQCBtYWNybyBuYXRp
dmVDYWxsVHJhbXBvbGluZShleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbikKICAgICAgICAgbG9h
ZHAgU2NvcGVDaGFpbltjZnJdLCB0MwogICAgICAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgdDMK
ICAgICAgICAgbG9hZHAgTWFya2VkQmxvY2s6Om1fd2Vha1NldCArIFdlYWtTZXQ6Om1fdm1bdDNd
LCB0MwotCisgICAgZWxzaWYgQVJNNjQKKyAgICAgICAgbG9hZHAgU2NvcGVDaGFpbltjZnJdLCB0
MAorICAgICAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgdDAKKyAgICAgICAgbG9hZHAgTWFya2Vk
QmxvY2s6Om1fd2Vha1NldCArIFdlYWtTZXQ6Om1fdm1bdDBdLCB0MAorICAgICAgICBzdG9yZXAg
Y2ZyLCBWTTo6dG9wQ2FsbEZyYW1lW3QwXQorICAgICAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJd
LCB0MgorICAgICAgICBsb2FkcCBTY29wZUNoYWluW3QyXSwgdDEKKyAgICAgICAgc3RvcmVwIHQx
LCBTY29wZUNoYWluW2Nmcl0KKyAgICAgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxs
KHQzKQorICAgICAgICBzdG9yZXAgdDMsIFJldHVyblBDW2Nmcl0KKyAgICAgICAgbW92ZSBjZnIs
IHQwCisgICAgICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0MQorICAgICAgICBsb2FkcCBKU0Z1bmN0
aW9uOjptX2V4ZWN1dGFibGVbdDFdLCB0MQorICAgICAgICBtb3ZlIHQyLCBjZnIgIyBSZXN0b3Jl
IGNmciB0byBhdm9pZCBsb2FkaW5nIGZyb20gc3RhY2sKKyAgICAgICAgY2FsbCBleGVjdXRhYmxl
T2Zmc2V0VG9GdW5jdGlvblt0MV0KKyAgICAgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVS
ZXR1cm4odDMpCisgICAgICAgIGxvYWRwIFNjb3BlQ2hhaW5bY2ZyXSwgdDMKKyAgICAgICAgYW5k
cCBNYXJrZWRCbG9ja01hc2ssIHQzCisgICAgICAgIGxvYWRwIE1hcmtlZEJsb2NrOjptX3dlYWtT
ZXQgKyBXZWFrU2V0OjptX3ZtW3QzXSwgdDMKICAgICBlbHNpZiBDX0xPT1AKICAgICAgICAgbG9h
ZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgdDAKICAgICAgICAgbG9hZHAgU2NvcGVDaGFpblt0MF0sIHQx
CkBAIC0xNjY4LDcgKzE3MDEsNyBAQCBtYWNybyBuYXRpdmVDYWxsVHJhbXBvbGluZShleGVjdXRh
YmxlT2Zmc2V0VG9GdW5jdGlvbikKICAgICBidHFueiBWTTo6bV9leGNlcHRpb25bdDNdLCAuZXhj
ZXB0aW9uCiAgICAgcmV0CiAuZXhjZXB0aW9uOgotICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0Fm
dGVyQ2FsbCh0MSkKKyAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDEpICMgVGhp
cyBpcyByZWFsbHkgb25seSBuZWVkZWQgb24gWDg2XzY0CiAgICAgbG9hZGkgQXJndW1lbnRDb3Vu
dCArIFRhZ09mZnNldFtjZnJdLCBQQwogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQQgogICAg
IGxvYWRwIENvZGVCbG9jazo6bV92bVtQQl0sIHQwCi0tIAoxLjguMy40IChBcHBsZSBHaXQtNDcp
Cgo=
</data>
<flag name="review"
          id="236672"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214209</attachid>
            <date>2013-10-14 17:28:36 -0700</date>
            <delta_ts>2013-10-14 17:41:26 -0700</delta_ts>
            <desc>Offlineasm changes</desc>
            <filename>0006-Changes-to-offlineasm-1.patch</filename>
            <type>text/plain</type>
            <size>42726</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSBkZTk3MDI3NzNhOWIzYWRmM2RmNjlkYmUyYmZlN2FmZTYxNjRlOGRlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRiYXRlc0B3ZWJraXQub3JnPgpEYXRl
OiBGcmksIDExIE9jdCAyMDEzIDE3OjM0OjE3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQ2hhbmdl
cyB0byBvZmZsaW5lYXNtCgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Fy
bS5yYiAgICAgICAgICB8ICAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YXJtNjQucmIgICAgICAgIHwgNzkyICsrKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYiAgICAgfCAgIDMgKwogU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiIHwgIDEzICstCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yaXNjLnJiICAgICAgICAgfCAxODAgKysrKystCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIgICAgfCAgMTEgKwog
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiICAgICAgICAgIHwgICAyICst
CiA3IGZpbGVzIGNoYW5nZWQsIDk5MyBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5y
YgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybS5yYiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybS5yYgppbmRleCA0OTgzMzNiLi4z
YzY5ZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm0u
cmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtLnJiCkBAIC0yMTcs
NyArMjE3LDcgQEAgY2xhc3MgU2VxdWVuY2UKICAgICAgICAgICAgIGVuZAogICAgICAgICB9CiAg
ICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc0RvdWJsZShyZXN1bHQp
Ci0gICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlck1pc3BsYWNlZEltbWVkaWF0ZXMocmVzdWx0LCBb
InN0b3JlYiIsICJzdG9yZWkiLCAic3RvcmVwIl0pCisgICAgICAgIHJlc3VsdCA9IHJpc2NMb3dl
ck1pc3BsYWNlZEltbWVkaWF0ZXMocmVzdWx0LCBbInN0b3JlYiIsICJzdG9yZWkiLCAic3RvcmVw
IiwgInN0b3JlcSJdKQogICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJNYWxmb3JtZWRJbW1lZGlh
dGVzKHJlc3VsdCwgMC4uMHhmZikKICAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyTWlzcGxhY2Vk
QWRkcmVzc2VzKHJlc3VsdCkKICAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyUmVnaXN0ZXJSZXVz
ZShyZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
cm02NC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1ZWFhMjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgpAQCAtMCwwICsxLDc5
MiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisj
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWly
ZSAiYXN0IgorcmVxdWlyZSAib3B0IgorcmVxdWlyZSAicmlzYyIKK3JlcXVpcmUgInJpc2NfYXJt
NjQiCisKKyMgTmFtaW5nIGNvbnZlbnRpb25zOgorIworIyB4PG51bWJlcj4gID0+IEdQUi4gVGhp
cyBpcyBib3RoIHRoZSBnZW5lcmljIG5hbWUgb2YgdGhlIHJlZ2lzdGVyLCBhbmQgdGhlIG5hbWUg
dXNlZAorIyAgICAgICAgICAgICAgIHRvIGluZGljYXRlIHRoYXQgdGhlIHJlZ2lzdGVyIGlzIHVz
ZWQgaW4gNjQtYml0IG1vZGUuCisjIHc8bnVtYmVyPiAgPT4gR1BSIGluIDMyLWJpdCBtb2RlLiBU
aGlzIGlzIHRoZSBsb3cgMzItYml0cyBvZiB0aGUgR1BSLiBJZiBpdCBpcworIyAgICAgICAgICAg
ICAgIG11dGF0ZWQgdGhlbiB0aGUgaGlnaCAzMi1iaXQgcGFydCBvZiB0aGUgcmVnaXN0ZXIgaXMg
emVybyBmaWxsZWQuCisjIHE8bnVtYmVyPiAgPT4gRlBSLiBUaGlzIGlzIHRoZSBnZW5lcmljIG5h
bWUgb2YgdGhlIHJlZ2lzdGVyLgorIyBkPG51bWJlcj4gID0+IEZQUiB1c2VkIGFzIGFuIElFRUUg
NjQtYml0IGJpbmFyeSBmbG9hdGluZyBwb2ludCBudW1iZXIgKGkuZS4gZG91YmxlKS4KKyMKKyMg
R1BSIGNvbnZlbnRpb25zLCB0byBtYXRjaCB0aGUgYmFzZWxpbmUgSklUOgorIworIyAgeDAgID0+
IHJldHVybiB2YWx1ZSwgY2FjaGVkIHJlc3VsdCwgZmlyc3QgYXJndW1lbnQsIHQwLCBhMCwgcjAK
KyMgIHgxICA9PiB0MSwgYTEsIHIxCisjICB4MiAgPT4gdDIKKyMgIHg5ICA9PiAobm9uQXJnR1BS
MSBpbiBiYXNlbGluZSkKKyMgeDEwICA9PiB0NCAodW51c2VkIGluIGJhc2VsaW5lKQorIyB4MTEg
ID0+IHQ1ICh1bnVzZWQgaW4gYmFzZWxpbmUpCisjIHgxMiAgPT4gdDYgKHVudXNlZCBpbiBiYXNl
bGluZSkKKyMgeDEzICA9PiBzY3JhdGNoICh1bnVzZWQgaW4gYmFzZWxpbmUpCisjIHgxNiAgPT4g
c2NyYXRjaAorIyB4MTcgID0+IHNjcmF0Y2gKKyMgeDIzICA9PiB0MworIyB4MjUgID0+IGNmcgor
IyB4MjYgID0+IHRpbWVvdXQgY2hlY2sgKGkuZS4gbm90IHRvdWNoZWQgYnkgTExJbnQpCisjIHgy
NyAgPT4gY3NyMSAodGFnVHlwZU51bWJlcikKKyMgeDI4ICA9PiBjc3IyICh0YWdNYXNrKQorIyAg
c3AgID0+IHNwCisjICBsciAgPT4gbHIKKyMKKyMgRlBSIGNvbmVudGlvbnMsIHRvIG1hdGNoIHRo
ZSBiYXNlbGluZSBKSVQ6CisjCisjICBxMCAgPT4gZnQwCisjICBxMSAgPT4gZnQxCisjICBxMiAg
PT4gZnQyCisjICBxMyAgPT4gZnQzCisjICBxNCAgPT4gZnQ0ICh1bnVzZWQgaW4gYmFzZWxpbmUp
CisjICBxNSAgPT4gZnQ1ICh1bnVzZWQgaW4gYmFzZWxpbmUpCisjIHEzMSAgPT4gc2NyYXRjaAor
CitkZWYgYXJtNjRHUFJOYW1lKG5hbWUsIGtpbmQpCisgICAgcmFpc2UgImJhZCBHUFIgbmFtZSAj
e25hbWV9IiB1bmxlc3MgbmFtZSA9fiAvXngvCisgICAgbnVtYmVyID0gbmFtZVsxLi4tMV0KKyAg
ICBjYXNlIGtpbmQKKyAgICB3aGVuIDppbnQKKyAgICAgICAgInciICsgbnVtYmVyCisgICAgd2hl
biA6cHRyCisgICAgICAgICJ4IiArIG51bWJlcgorICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIldy
b25nIGtpbmQ6ICN7a2luZH0iCisgICAgZW5kCitlbmQKKworZGVmIGFybTY0RlBSTmFtZShuYW1l
LCBraW5kKQorICAgIHJhaXNlICJiYWQgRlBSIGtpbmQgI3traW5kfSIgdW5sZXNzIGtpbmQgPT0g
OmRvdWJsZQorICAgIHJhaXNlICJiYWQgRlBSIG5hbWUgI3tuYW1lfSIgdW5sZXNzIG5hbWUgPX4g
L15xLworICAgICJkIiArIG5hbWVbMS4uLTFdCitlbmQKKworY2xhc3MgU3BlY2lhbFJlZ2lzdGVy
CisgICAgZGVmIGFybTY0T3BlcmFuZChraW5kKQorICAgICAgICBjYXNlIEBuYW1lCisgICAgICAg
IHdoZW4gL154LworICAgICAgICAgICAgYXJtNjRHUFJOYW1lKEBuYW1lLCBraW5kKQorICAgICAg
ICB3aGVuIC9ecS8KKyAgICAgICAgICAgIGFybTY0RlBSTmFtZShAbmFtZSwga2luZCkKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIkJhZCBuYW1lOiAje0BuYW1lfSIKKyAgICAgICAg
ZW5kCisgICAgZW5kCitlbmQKKworQVJNNjRfRVhUUkFfR1BSUyA9IFtTcGVjaWFsUmVnaXN0ZXIu
bmV3KCJ4MTYiKSwgU3BlY2lhbFJlZ2lzdGVyLm5ldygieDE3IiksIFNwZWNpYWxSZWdpc3Rlci5u
ZXcoIngxMyIpXQorQVJNNjRfRVhUUkFfRlBSUyA9IFtTcGVjaWFsUmVnaXN0ZXIubmV3KCJxMzEi
KV0KKworY2xhc3MgUmVnaXN0ZXJJRAorICAgIGRlZiBhcm02NE9wZXJhbmQoa2luZCkKKyAgICAg
ICAgY2FzZSBAbmFtZQorICAgICAgICB3aGVuICd0MCcsICdhMCcsICdyMCcKKyAgICAgICAgICAg
IGFybTY0R1BSTmFtZSgneDAnLCBraW5kKQorICAgICAgICB3aGVuICd0MScsICdhMScsICdyMScK
KyAgICAgICAgICAgIGFybTY0R1BSTmFtZSgneDEnLCBraW5kKQorICAgICAgICB3aGVuICd0MicK
KyAgICAgICAgICAgIGFybTY0R1BSTmFtZSgneDInLCBraW5kKQorICAgICAgICB3aGVuICd0MycK
KyAgICAgICAgICAgIGFybTY0R1BSTmFtZSgneDIzJywga2luZCkKKyAgICAgICAgd2hlbiAndDQn
CisgICAgICAgICAgICBhcm02NEdQUk5hbWUoJ3gxMCcsIGtpbmQpCisgICAgICAgIHdoZW4gJ3Q1
JworICAgICAgICAgICAgYXJtNjRHUFJOYW1lKCd4MTEnLCBraW5kKQorICAgICAgICB3aGVuICd0
NicKKyAgICAgICAgICAgIGFybTY0R1BSTmFtZSgneDEyJywga2luZCkKKyAgICAgICAgd2hlbiAn
Y2ZyJworICAgICAgICAgICAgYXJtNjRHUFJOYW1lKCd4MjUnLCBraW5kKQorICAgICAgICB3aGVu
ICdjc3IxJworICAgICAgICAgICAgYXJtNjRHUFJOYW1lKCd4MjcnLCBraW5kKQorICAgICAgICB3
aGVuICdjc3IyJworICAgICAgICAgICAgYXJtNjRHUFJOYW1lKCd4MjgnLCBraW5kKQorICAgICAg
ICB3aGVuICdzcCcKKyAgICAgICAgICAgICdzcCcKKyAgICAgICAgd2hlbiAnbHInCisgICAgICAg
ICAgICAnbHInCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlICJCYWQgcmVnaXN0ZXIg
bmFtZSAje0BuYW1lfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgICAgICBlbmQKKyAgICBl
bmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQKKyAgICBkZWYgYXJtNjRPcGVyYW5kKGtpbmQp
CisgICAgICAgIGNhc2UgQG5hbWUKKyAgICAgICAgd2hlbiAnZnQwJworICAgICAgICAgICAgYXJt
NjRGUFJOYW1lKCdxMCcsIGtpbmQpCisgICAgICAgIHdoZW4gJ2Z0MScKKyAgICAgICAgICAgIGFy
bTY0RlBSTmFtZSgncTEnLCBraW5kKQorICAgICAgICB3aGVuICdmdDInCisgICAgICAgICAgICBh
cm02NEZQUk5hbWUoJ3EyJywga2luZCkKKyAgICAgICAgd2hlbiAnZnQzJworICAgICAgICAgICAg
YXJtNjRGUFJOYW1lKCdxMycsIGtpbmQpCisgICAgICAgIHdoZW4gJ2Z0NCcKKyAgICAgICAgICAg
IGFybTY0RlBSTmFtZSgncTQnLCBraW5kKQorICAgICAgICB3aGVuICdmdDUnCisgICAgICAgICAg
ICBhcm02NEZQUk5hbWUoJ3E1Jywga2luZCkKKyAgICAgICAgZWxzZSAiQmFkIHJlZ2lzdGVyIG5h
bWUgI3tAbmFtZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgZW5kCisgICAgZW5k
CitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgICAgZGVmIGFybTY0T3BlcmFuZChraW5kKQorICAg
ICAgICByYWlzZSAiSW52YWxpZCBpbW1lZGlhdGUgI3t2YWx1ZX0gYXQgI3tjb2RlT3JpZ2luU3Ry
aW5nfSIgaWYgdmFsdWUgPCAwIG9yIHZhbHVlID4gNDA5NQorICAgICAgICAiXCMje3ZhbHVlfSIK
KyAgICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgICAgZGVmIGFybTY0T3BlcmFuZChraW5k
KQorICAgICAgICByYWlzZSAiSW52YWxpZCBvZmZzZXQgI3tvZmZzZXQudmFsdWV9IGF0ICN7Y29k
ZU9yaWdpblN0cmluZ30iIGlmIG9mZnNldC52YWx1ZSA8IC0yNTUgb3Igb2Zmc2V0LnZhbHVlID4g
NDA5NQorICAgICAgICAiWyN7YmFzZS5hcm02NE9wZXJhbmQoOnB0cil9LCBcIyN7b2Zmc2V0LnZh
bHVlfV0iCisgICAgZW5kCisgICAgCisgICAgZGVmIGFybTY0RW1pdExlYShkZXN0aW5hdGlvbiwg
a2luZCkKKyAgICAgICAgJGFzbS5wdXRzICJhZGQgI3tkZXN0aW5hdGlvbi5hcm02NE9wZXJhbmQo
a2luZCl9LCAje2Jhc2UuYXJtNjRPcGVyYW5kKGtpbmQpfSwgXCMje29mZnNldC52YWx1ZX0iCisg
ICAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgICAgZGVmIGFybTY0T3BlcmFuZChraW5k
KQorICAgICAgICByYWlzZSAiSW52YWxpZCBvZmZzZXQgI3tvZmZzZXQudmFsdWV9IGF0ICN7Y29k
ZU9yaWdpblN0cmluZ30iIGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAgICAgICJbI3tiYXNlLmFy
bTY0T3BlcmFuZCg6cHRyKX0sICN7aW5kZXguYXJtNjRPcGVyYW5kKDpwdHIpfSwgbHNsIFwjI3tz
Y2FsZVNoaWZ0fV0iCisgICAgZW5kCisKKyAgICBkZWYgYXJtNjRFbWl0TGVhKGRlc3RpbmF0aW9u
LCBraW5kKQorICAgICAgICAkYXNtLnB1dHMgImFkZCAje2Rlc3RpbmF0aW9uLmFybTY0T3BlcmFu
ZChraW5kKX0sICN7YmFzZS5hcm02NE9wZXJhbmQoa2luZCl9LCAje2luZGV4LmFybTY0T3BlcmFu
ZChraW5kKX0sIGxzbCBcIyN7c2NhbGVTaGlmdH0iCisgICAgZW5kCitlbmQKKworY2xhc3MgQWJz
b2x1dGVBZGRyZXNzCisgICAgZGVmIGFybTY0T3BlcmFuZChraW5kKQorICAgICAgICByYWlzZSAi
VW5jb252ZXJ0ZWQgYWJzb2x1dGUgYWRkcmVzcyAje2FkZHJlc3MudmFsdWV9IGF0ICN7Y29kZU9y
aWdpblN0cmluZ30iCisgICAgZW5kCitlbmQKKworIyBGSVhNRTogd2UgY291bGQgc3VwcG9ydCBB
YnNvbHV0ZUFkZHJlc3MgZm9yIGxlYSwgYnV0IHdlIGRvbid0LgorCisjCisjIEFjdHVhbCBsb3dl
cmluZyBjb2RlIGZvbGxvd3MuCisjCisKK2NsYXNzIFNlcXVlbmNlCisgICAgZGVmIGdldE1vZGlm
aWVkTGlzdEFSTTY0CisgICAgICAgIHJlc3VsdCA9IEBsaXN0CisgICAgICAgIHJlc3VsdCA9IHJp
c2NMb3dlck5vdChyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlclNpbXBsZUJyYW5j
aE9wcyhyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlckhhcmRCcmFuY2hPcHM2NChy
ZXN1bHQpCisgICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlclNoaWZ0T3BzKHJlc3VsdCkKKyAgICAg
ICAgcmVzdWx0ID0gcmlzY0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzKHJlc3VsdCkgeworICAgICAg
ICAgICAgfCBub2RlLCBhZGRyZXNzIHwKKyAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAg
ICAgICAgICAgIHdoZW4gImxvYWRiIiwgImxvYWRicyIsICJzdG9yZWIiLCAvXmJiLywgL15idGIv
LCAvXmNiLywgL150Yi8KKyAgICAgICAgICAgICAgICBzaXplID0gMQorICAgICAgICAgICAgd2hl
biAibG9hZGgiLCAibG9hZGhzIgorICAgICAgICAgICAgICAgIHNpemUgPSAyCisgICAgICAgICAg
ICB3aGVuICJsb2FkaSIsICJsb2FkaXMiLCAic3RvcmVpIiwgImFkZGkiLCAiYW5kaSIsICJsc2hp
ZnRpIiwgIm11bGkiLCAibmVnaSIsCisgICAgICAgICAgICAgICAgIm5vdGkiLCAib3JpIiwgInJz
aGlmdGkiLCAidXJzaGlmdGkiLCAic3ViaSIsICJ4b3JpIiwgL15iaS8sIC9eYnRpLywKKyAgICAg
ICAgICAgICAgICAvXmNpLywgL150aS8sICJhZGRpcyIsICJzdWJpcyIsICJtdWxpcyIsICJzbXVs
bGkiLCAibGVhaSIKKyAgICAgICAgICAgICAgICBzaXplID0gNAorICAgICAgICAgICAgd2hlbiAi
bG9hZHAiLCAic3RvcmVwIiwgImxvYWRxIiwgInN0b3JlcSIsICJsb2FkZCIsICJzdG9yZWQiLCAi
bHNoaWZ0cCIsICJsc2hpZnRxIiwgIm5lZ3AiLCAibmVncSIsICJyc2hpZnRwIiwgInJzaGlmdHEi
LAorICAgICAgICAgICAgICAgICJ1cnNoaWZ0cCIsICJ1cnNoaWZ0cSIsICJhZGRwIiwgImFkZHEi
LCAibXVscCIsICJtdWxxIiwgImFuZHAiLCAiYW5kcSIsICJvcnAiLCAib3JxIiwgInN1YnAiLCAi
c3VicSIsICJ4b3JwIiwgInhvcnEiLCAiYWRkZCIsCisgICAgICAgICAgICAgICAgImRpdmQiLCAi
c3ViZCIsICJtdWxkIiwgInNxcnRkIiwgL15icC8sIC9eYnEvLCAvXmJ0cC8sIC9eYnRxLywgL15j
cC8sIC9eY3EvLCAvXnRwLywgL150cS8sIC9eYmQvLAorICAgICAgICAgICAgICAgICJqbXAiLCAi
Y2FsbCIsICJsZWFwIiwgImxlYXEiCisgICAgICAgICAgICAgICAgc2l6ZSA9IDgKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICByYWlzZSAiQmFkIGluc3RydWN0aW9uICN7bm9kZS5v
cGNvZGV9IGZvciBoZWFwIGFjY2VzcyBhdCAje25vZGUuY29kZU9yaWdpblN0cmluZ30iCisgICAg
ICAgICAgICBlbmQKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgYWRkcmVzcy5pc19hPyBC
YXNlSW5kZXgKKyAgICAgICAgICAgICAgICBhZGRyZXNzLm9mZnNldC52YWx1ZSA9PSAwIGFuZAor
ICAgICAgICAgICAgICAgICAgICAobm9kZS5vcGNvZGUgPX4gL15sZWEvIG9yIGFkZHJlc3Muc2Nh
bGUgPT0gMSBvciBhZGRyZXNzLnNjYWxlID09IHNpemUpCisgICAgICAgICAgICBlbHNpZiBhZGRy
ZXNzLmlzX2E/IEFkZHJlc3MKKyAgICAgICAgICAgICAgICAoLTI1NS4uNDA5NSkuaW5jbHVkZT8g
YWRkcmVzcy5vZmZzZXQudmFsdWUKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBm
YWxzZQorICAgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0ID0gcmlzY0xv
d2VyTWlzcGxhY2VkSW1tZWRpYXRlcyhyZXN1bHQsIFsic3RvcmViIiwgInN0b3JlaSIsICJzdG9y
ZXAiLCAic3RvcmVxIl0pCisgICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlck1hbGZvcm1lZEltbWVk
aWF0ZXMocmVzdWx0LCAwLi40MDk1KQorICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJNaXNwbGFj
ZWRBZGRyZXNzZXMocmVzdWx0KQorICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJNYWxmb3JtZWRB
ZGRyZXNzZXMocmVzdWx0KSB7CisgICAgICAgICAgICB8IG5vZGUsIGFkZHJlc3MgfAorICAgICAg
ICAgICAgY2FzZSBub2RlLm9wY29kZQorICAgICAgICAgICAgd2hlbiAvXmxvYWQvCisgICAgICAg
ICAgICAgICAgdHJ1ZQorICAgICAgICAgICAgd2hlbiAvXnN0b3JlLworICAgICAgICAgICAgICAg
IG5vdCAoYWRkcmVzcy5pc19hPyBBZGRyZXNzIGFuZCBhZGRyZXNzLm9mZnNldC52YWx1ZSA8IDAp
CisgICAgICAgICAgICB3aGVuIC9ebGVhLworICAgICAgICAgICAgICAgIHRydWUKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICByYWlzZSAiQmFkIGluc3RydWN0aW9uICN7bm9kZS5v
cGNvZGV9IGZvciBoZWFwIGFjY2VzcyBhdCAje25vZGUuY29kZU9yaWdpblN0cmluZ30iCisgICAg
ICAgICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJUZXN0KHJl
c3VsdCkKKyAgICAgICAgcmVzdWx0ID0gYXNzaWduUmVnaXN0ZXJzVG9UZW1wb3JhcmllcyhyZXN1
bHQsIDpncHIsIEFSTTY0X0VYVFJBX0dQUlMpCisgICAgICAgIHJlc3VsdCA9IGFzc2lnblJlZ2lz
dGVyc1RvVGVtcG9yYXJpZXMocmVzdWx0LCA6ZnByLCBBUk02NF9FWFRSQV9GUFJTKQorICAgICAg
ICByZXR1cm4gcmVzdWx0CisgICAgZW5kCitlbmQKKworZGVmIGFybTY0T3BlcmFuZHMob3BlcmFu
ZHMsIGtpbmRzKQorICAgIGlmIGtpbmRzLmlzX2E/IEFycmF5CisgICAgICAgIHJhaXNlICJNaXNt
YXRjaGVkIG9wZXJhbmQgbGlzdHM6ICN7b3BlcmFuZHMuaW5zcGVjdH0gYW5kICN7a2luZHMuaW5z
cGVjdH0iIGlmIG9wZXJhbmRzLnNpemUgIT0ga2luZHMuc2l6ZQorICAgIGVsc2UKKyAgICAgICAg
a2luZHMgPSBvcGVyYW5kcy5tYXB7IGtpbmRzIH0KKyAgICBlbmQKKyAgICAoMC4uLm9wZXJhbmRz
LnNpemUpLm1hcCB7CisgICAgICAgIHwgaW5kZXggfAorICAgICAgICBvcGVyYW5kc1tpbmRleF0u
YXJtNjRPcGVyYW5kKGtpbmRzW2luZGV4XSkKKyAgICB9LmpvaW4oJywgJykKK2VuZAorCitkZWYg
YXJtNjRGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMsIGtpbmRzKQorICAgIGlmIGtpbmRzLmlzX2E/
IEFycmF5CisgICAgICAgIGtpbmRzID0gW2tpbmRzWy0xXV0gKyBraW5kc1swLi4tMl0KKyAgICBl
bmQKKyAgICBhcm02NE9wZXJhbmRzKFtvcGVyYW5kc1stMV1dICsgb3BlcmFuZHNbMC4uLTJdLCBr
aW5kcykKK2VuZAorCisjIFRBQyA9IHRocmVlIGFkZHJlc3MgY29kZS4KK2RlZiBhcm02NFRBQ09w
ZXJhbmRzKG9wZXJhbmRzLCBraW5kKQorICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMworICAgICAg
ICByZXR1cm4gYXJtNjRGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMsIGtpbmQpCisgICAgZW5kCisg
ICAgCisgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzLnNpemUgPT0gMgorICAgIAorICAgIHJldHVy
biBvcGVyYW5kc1sxXS5hcm02NE9wZXJhbmQoa2luZCkgKyAiLCAiICsgYXJtNjRGbGlwcGVkT3Bl
cmFuZHMob3BlcmFuZHMsIGtpbmQpCitlbmQKKworZGVmIGVtaXRBUk02NEFkZChvcGNvZGUsIG9w
ZXJhbmRzLCBraW5kKQorICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMworICAgICAgICByYWlzZSB1
bmxlc3Mgb3BlcmFuZHNbMV0ucmVnaXN0ZXI/CisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5k
c1syXS5yZWdpc3Rlcj8KKyAgICAgICAgCisgICAgICAgIGlmIG9wZXJhbmRzWzBdLmltbWVkaWF0
ZT8KKyAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAgYW5kIGZsYWcgIX4gL3Mk
LworICAgICAgICAgICAgICAgIHVubGVzcyBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAg
ICAgICAgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdiAje2FybTY0RmxpcHBlZE9wZXJhbmRzKG9w
ZXJhbmRzWzEuLjJdLCBraW5kKX0iCisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3thcm02NE9wZXJhbmRz
KG9wZXJhbmRzLnJldmVyc2UsIGtpbmQpfSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAg
cmV0dXJuCisgICAgICAgIGVuZAorICAgICAgICAKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJh
bmRzWzBdLnJlZ2lzdGVyPworICAgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje2FybTY0Rmxp
cHBlZE9wZXJhbmRzKG9wZXJhbmRzLCBraW5kKX0iCisgICAgICAgIHJldHVybgorICAgIGVuZAor
ICAgIAorICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kcy5zaXplID09IDIKKyAgICAKKyAgICBpZiBv
cGVyYW5kc1swXS5pbW1lZGlhdGU/IGFuZCBvcGVyYW5kc1swXS52YWx1ZSA9PSAwIGFuZCBvcGNv
ZGUgIX4gL3MkLworICAgICAgICByZXR1cm4KKyAgICBlbmQKKyAgICAKKyAgICAkYXNtLnB1dHMg
IiN7b3Bjb2RlfSAje2FybTY0VEFDT3BlcmFuZHMob3BlcmFuZHMsIGtpbmQpfSIKK2VuZAorCitk
ZWYgZW1pdEFSTTY0VW5mbGlwcGVkKG9wY29kZSwgb3BlcmFuZHMsIGtpbmQpCisgICAgJGFzbS5w
dXRzICIje29wY29kZX0gI3thcm02NE9wZXJhbmRzKG9wZXJhbmRzLCBraW5kKX0iCitlbmQKKwor
ZGVmIGVtaXRBUk02NFRBQyhvcGNvZGUsIG9wZXJhbmRzLCBraW5kKQorICAgICRhc20ucHV0cyAi
I3tvcGNvZGV9ICN7YXJtNjRUQUNPcGVyYW5kcyhvcGVyYW5kcywga2luZCl9IgorZW5kCisKK2Rl
ZiBlbWl0QVJNNjQob3Bjb2RlLCBvcGVyYW5kcywga2luZCkKKyAgICAkYXNtLnB1dHMgIiN7b3Bj
b2RlfSAje2FybTY0RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzLCBraW5kKX0iCitlbmQKKworZGVm
IGVtaXRBUk02NEFjY2VzcyhvcGNvZGUsIG9wY29kZU5lZ2F0aXZlT2Zmc2V0LCByZWdpc3Rlciwg
bWVtb3J5LCBraW5kKQorICAgIGlmIG1lbW9yeS5pc19hPyBBZGRyZXNzIGFuZCBtZW1vcnkub2Zm
c2V0LnZhbHVlIDwgMAorICAgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlTmVnYXRpdmVPZmZzZXR9
ICN7cmVnaXN0ZXIuYXJtNjRPcGVyYW5kKGtpbmQpfSwgI3ttZW1vcnkuYXJtNjRPcGVyYW5kKGtp
bmQpfSIKKyAgICAgICAgcmV0dXJuCisgICAgZW5kCisgICAgCisgICAgJGFzbS5wdXRzICIje29w
Y29kZX0gI3tyZWdpc3Rlci5hcm02NE9wZXJhbmQoa2luZCl9LCAje21lbW9yeS5hcm02NE9wZXJh
bmQoa2luZCl9IgorZW5kCisKK2RlZiBlbWl0QVJNNjRTaGlmdChvcGNvZGVSZWdzLCBvcGNvZGVJ
bW1lZGlhdGUsIG9wZXJhbmRzLCBraW5kKQorICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQg
b3BlcmFuZHNbMV0uaW1tZWRpYXRlPworICAgICAgICBtYWdpY051bWJlcnMgPSB5aWVsZCBvcGVy
YW5kc1sxXS52YWx1ZQorICAgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlSW1tZWRpYXRlfSAje29w
ZXJhbmRzWzJdLmFybTY0T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMF0uYXJtNjRPcGVyYW5k
KGtpbmQpfSwgXCMje21hZ2ljTnVtYmVyc1swXX0sIFwjI3ttYWdpY051bWJlcnNbMV19IgorICAg
ICAgICByZXR1cm4KKyAgICBlbmQKKyAgICAKKyAgICBpZiBvcGVyYW5kcy5zaXplID09IDIgYW5k
IG9wZXJhbmRzWzBdLmltbWVkaWF0ZT8KKyAgICAgICAgbWFnaWNOdW1iZXJzID0geWllbGQgb3Bl
cmFuZHNbMF0udmFsdWUKKyAgICAgICAgJGFzbS5wdXRzICIje29wY29kZUltbWVkaWF0ZX0gI3tv
cGVyYW5kc1sxXS5hcm02NE9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzFdLmFybTY0T3BlcmFu
ZChraW5kKX0sIFwjI3ttYWdpY051bWJlcnNbMF19LCBcIyN7bWFnaWNOdW1iZXJzWzFdfSIKKyAg
ICAgICAgcmV0dXJuCisgICAgZW5kCisgICAgCisgICAgZW1pdEFSTTY0VEFDKG9wY29kZVJlZ3Ms
IG9wZXJhbmRzLCBraW5kKQorZW5kCisKK2RlZiBlbWl0QVJNNjRCcmFuY2gob3Bjb2RlLCBvcGVy
YW5kcywga2luZCwgYnJhbmNoT3Bjb2RlKQorICAgIGVtaXRBUk02NFVuZmxpcHBlZChvcGNvZGUs
IG9wZXJhbmRzWzAuLi0yXSwga2luZCkKKyAgICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAj
e29wZXJhbmRzWy0xXS5hc21MYWJlbH0iCitlbmQKKworZGVmIGVtaXRBUk02NENvbXBhcmUob3Bl
cmFuZHMsIGtpbmQsIGNvbXBhcmVDb2RlKQorICAgIGVtaXRBUk02NFVuZmxpcHBlZCgic3VicyAj
e2FybTY0R1BSTmFtZSgneHpyJywga2luZCl9LCAiLCBvcGVyYW5kc1swLi4tMl0sIGtpbmQpCisg
ICAgJGFzbS5wdXRzICJjc2luYyAje29wZXJhbmRzWy0xXS5hcm02NE9wZXJhbmQoOmludCl9LCB3
enIsIHd6ciwgI3tjb21wYXJlQ29kZX0iCitlbmQKKworZGVmIGVtaXRBUk02NE1vdmVJbW1lZGlh
dGUodmFsdWUsIHRhcmdldCkKKyAgICBmaXJzdCA9IHRydWUKKyAgICBpc05lZ2F0aXZlID0gdmFs
dWUgPCAwCisgICAgWzQ4LCAzMiwgMTYsIDBdLmVhY2ggeworICAgICAgICB8IHNoaWZ0IHwKKyAg
ICAgICAgY3VycmVudFZhbHVlID0gKHZhbHVlID4+IHNoaWZ0KSAmIDB4ZmZmZgorICAgICAgICBu
ZXh0IGlmIGN1cnJlbnRWYWx1ZSA9PSAoaXNOZWdhdGl2ZSA/IDB4ZmZmZiA6IDApIGFuZCBzaGlm
dCAhPSAwCisgICAgICAgIGlmIGZpcnN0CisgICAgICAgICAgICBpZiBpc05lZ2F0aXZlCisgICAg
ICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZuICN7dGFyZ2V0LmFybTY0T3BlcmFuZCg6cHRyKX0s
IFwjI3sofmN1cnJlbnRWYWx1ZSkgJiAweGZmZmZ9LCBsc2wgXCMje3NoaWZ0fSIKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdnogI3t0YXJnZXQuYXJtNjRP
cGVyYW5kKDpwdHIpfSwgXCMje2N1cnJlbnRWYWx1ZX0sIGxzbCBcIyN7c2hpZnR9IgorICAgICAg
ICAgICAgZW5kCisgICAgICAgICAgICBmaXJzdCA9IGZhbHNlCisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICRhc20ucHV0cyAibW92ayAje3RhcmdldC5hcm02NE9wZXJhbmQoOnB0cil9LCBcIyN7
Y3VycmVudFZhbHVlfSwgbHNsIFwjI3tzaGlmdH0iCisgICAgICAgIGVuZAorICAgIH0KK2VuZAor
CitjbGFzcyBJbnN0cnVjdGlvbgorICAgIGRlZiBsb3dlckFSTTY0CisgICAgICAgICRhc20uY29t
bWVudCBjb2RlT3JpZ2luU3RyaW5nCisgICAgICAgICRhc20uYW5ub3RhdGlvbiBhbm5vdGF0aW9u
IGlmICRlbmFibGVJbnN0ckFubm90YXRpb25zCisKKyAgICAgICAgY2FzZSBvcGNvZGUKKyAgICAg
ICAgd2hlbiAnYWRkaScKKyAgICAgICAgICAgIGVtaXRBUk02NEFkZCgiYWRkIiwgb3BlcmFuZHMs
IDppbnQpCisgICAgICAgIHdoZW4gJ2FkZGlzJworICAgICAgICAgICAgZW1pdEFSTTY0QWRkKCJh
ZGRzIiwgb3BlcmFuZHMsIDppbnQpCisgICAgICAgIHdoZW4gJ2FkZHAnCisgICAgICAgICAgICBl
bWl0QVJNNjRBZGQoImFkZCIsIG9wZXJhbmRzLCA6cHRyKQorICAgICAgICB3aGVuICdhZGRwcycK
KyAgICAgICAgICAgIGVtaXRBUk02NEFkZCgiYWRkcyIsIG9wZXJhbmRzLCA6cHRyKQorICAgICAg
ICB3aGVuICdhZGRxJworICAgICAgICAgICAgZW1pdEFSTTY0QWRkKCJhZGQiLCBvcGVyYW5kcywg
OnB0cikKKyAgICAgICAgd2hlbiAiYW5kaSIKKyAgICAgICAgICAgIGVtaXRBUk02NFRBQygiYW5k
Iiwgb3BlcmFuZHMsIDppbnQpCisgICAgICAgIHdoZW4gImFuZHAiCisgICAgICAgICAgICBlbWl0
QVJNNjRUQUMoImFuZCIsIG9wZXJhbmRzLCA6cHRyKQorICAgICAgICB3aGVuICJhbmRxIgorICAg
ICAgICAgICAgZW1pdEFSTTY0VEFDKCJhbmQiLCBvcGVyYW5kcywgOnB0cikKKyAgICAgICAgd2hl
biAib3JpIgorICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJvcnIiLCBvcGVyYW5kcywgOmludCkK
KyAgICAgICAgd2hlbiAib3JwIgorICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJvcnIiLCBvcGVy
YW5kcywgOnB0cikKKyAgICAgICAgd2hlbiAib3JxIgorICAgICAgICAgICAgZW1pdEFSTTY0VEFD
KCJvcnIiLCBvcGVyYW5kcywgOnB0cikKKyAgICAgICAgd2hlbiAieG9yaSIKKyAgICAgICAgICAg
IGVtaXRBUk02NFRBQygiZW9yIiwgb3BlcmFuZHMsIDppbnQpCisgICAgICAgIHdoZW4gInhvcnAi
CisgICAgICAgICAgICBlbWl0QVJNNjRUQUMoImVvciIsIG9wZXJhbmRzLCA6cHRyKQorICAgICAg
ICB3aGVuICJ4b3JxIgorICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJlb3IiLCBvcGVyYW5kcywg
OnB0cikKKyAgICAgICAgd2hlbiAibHNoaWZ0aSIKKyAgICAgICAgICAgIGVtaXRBUk02NFNoaWZ0
KCJsc2x2IiwgInViZm0iLCBvcGVyYW5kcywgOmludCkgeworICAgICAgICAgICAgICAgIHwgdmFs
dWUgfAorICAgICAgICAgICAgICAgIFszMiAtIHZhbHVlLCAzMSAtIHZhbHVlXQorICAgICAgICAg
ICAgfQorICAgICAgICB3aGVuICJsc2hpZnRwIgorICAgICAgICAgICAgZW1pdEFSTTY0U2hpZnQo
ImxzbHYiLCAidWJmbSIsIG9wZXJhbmRzLCA6cHRyKSB7CisgICAgICAgICAgICAgICAgfCB2YWx1
ZSB8CisgICAgICAgICAgICAgICAgWzY0IC0gdmFsdWUsIDYzIC0gdmFsdWVdCisgICAgICAgICAg
ICB9CisgICAgICAgIHdoZW4gImxzaGlmdHEiCisgICAgICAgICAgICBlbWl0QVJNNjRTaGlmdCgi
bHNsdiIsICJ1YmZtIiwgb3BlcmFuZHMsIDpwdHIpIHsKKyAgICAgICAgICAgICAgICB8IHZhbHVl
IHwKKyAgICAgICAgICAgICAgICBbNjQgLSB2YWx1ZSwgNjMgLSB2YWx1ZV0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgd2hlbiAicnNoaWZ0aSIKKyAgICAgICAgICAgIGVtaXRBUk02NFNoaWZ0KCJh
c3J2IiwgInNiZm0iLCBvcGVyYW5kcywgOmludCkgeworICAgICAgICAgICAgICAgIHwgdmFsdWUg
fAorICAgICAgICAgICAgICAgIFt2YWx1ZSwgMzFdCisgICAgICAgICAgICB9CisgICAgICAgIHdo
ZW4gInJzaGlmdHAiCisgICAgICAgICAgICBlbWl0QVJNNjRTaGlmdCgiYXNydiIsICJzYmZtIiwg
b3BlcmFuZHMsIDpwdHIpIHsKKyAgICAgICAgICAgICAgICB8IHZhbHVlIHwKKyAgICAgICAgICAg
ICAgICBbdmFsdWUsIDYzXQorICAgICAgICAgICAgfQorICAgICAgICB3aGVuICJyc2hpZnRxIgor
ICAgICAgICAgICAgZW1pdEFSTTY0U2hpZnQoImFzcnYiLCAic2JmbSIsIG9wZXJhbmRzLCA6cHRy
KSB7CisgICAgICAgICAgICAgICAgfCB2YWx1ZSB8CisgICAgICAgICAgICAgICAgW3ZhbHVlLCA2
M10KKyAgICAgICAgICAgIH0KKyAgICAgICAgd2hlbiAidXJzaGlmdGkiCisgICAgICAgICAgICBl
bWl0QVJNNjRTaGlmdCgibHNydiIsICJ1YmZtIiwgb3BlcmFuZHMsIDppbnQpIHsKKyAgICAgICAg
ICAgICAgICB8IHZhbHVlIHwKKyAgICAgICAgICAgICAgICBbdmFsdWUsIDMxXQorICAgICAgICAg
ICAgfQorICAgICAgICB3aGVuICJ1cnNoaWZ0cCIKKyAgICAgICAgICAgIGVtaXRBUk02NFNoaWZ0
KCJsc3J2IiwgInViZm0iLCBvcGVyYW5kcywgOnB0cikgeworICAgICAgICAgICAgICAgIHwgdmFs
dWUgfAorICAgICAgICAgICAgICAgIFt2YWx1ZSwgNjNdCisgICAgICAgICAgICB9CisgICAgICAg
IHdoZW4gInVyc2hpZnRxIgorICAgICAgICAgICAgZW1pdEFSTTY0U2hpZnQoImxzcnYiLCAidWJm
bSIsIG9wZXJhbmRzLCA6cHRyKSB7CisgICAgICAgICAgICAgICAgfCB2YWx1ZSB8CisgICAgICAg
ICAgICAgICAgW3ZhbHVlLCA2M10KKyAgICAgICAgICAgIH0KKyAgICAgICAgd2hlbiAibXVsaSIK
KyAgICAgICAgICAgICRhc20ucHV0cyAibWFkZCAje2FybTY0VEFDT3BlcmFuZHMob3BlcmFuZHMs
IDppbnQpfSwgd3pyIgorICAgICAgICB3aGVuICJtdWxwIgorICAgICAgICAgICAgJGFzbS5wdXRz
ICJtYWRkICN7YXJtNjRUQUNPcGVyYW5kcyhvcGVyYW5kcywgOnB0cil9LCB4enIiCisgICAgICAg
IHdoZW4gIm11bHEiCisgICAgICAgICAgICAkYXNtLnB1dHMgIm1hZGQgI3thcm02NFRBQ09wZXJh
bmRzKG9wZXJhbmRzLCA6cHRyKX0sIHh6ciIKKyAgICAgICAgd2hlbiAic3ViaSIKKyAgICAgICAg
ICAgIGVtaXRBUk02NFRBQygic3ViIiwgb3BlcmFuZHMsIDppbnQpCisgICAgICAgIHdoZW4gInN1
YnAiCisgICAgICAgICAgICBlbWl0QVJNNjRUQUMoInN1YiIsIG9wZXJhbmRzLCA6cHRyKQorICAg
ICAgICB3aGVuICJzdWJxIgorICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJzdWIiLCBvcGVyYW5k
cywgOnB0cikKKyAgICAgICAgd2hlbiAic3ViaXMiCisgICAgICAgICAgICBlbWl0QVJNNjRUQUMo
InN1YnMiLCBvcGVyYW5kcywgOmludCkKKyAgICAgICAgd2hlbiAibmVnaSIKKyAgICAgICAgICAg
ICRhc20ucHV0cyAic3ViICN7b3BlcmFuZHNbMF0uYXJtNjRPcGVyYW5kKDppbnQpfSwgd3pyLCAj
e29wZXJhbmRzWzBdLmFybTY0T3BlcmFuZCg6aW50KX0iCisgICAgICAgIHdoZW4gIm5lZ3AiCisg
ICAgICAgICAgICAkYXNtLnB1dHMgInN1YiAje29wZXJhbmRzWzBdLmFybTY0T3BlcmFuZCg6cHRy
KX0sIHh6ciwgI3tvcGVyYW5kc1swXS5hcm02NE9wZXJhbmQoOnB0cil9IgorICAgICAgICB3aGVu
ICJuZWdxIgorICAgICAgICAgICAgJGFzbS5wdXRzICJzdWIgI3tvcGVyYW5kc1swXS5hcm02NE9w
ZXJhbmQoOnB0cil9LCB4enIsICN7b3BlcmFuZHNbMF0uYXJtNjRPcGVyYW5kKDpwdHIpfSIKKyAg
ICAgICAgd2hlbiAibG9hZGkiCisgICAgICAgICAgICBlbWl0QVJNNjRBY2Nlc3MoImxkciIsICJs
ZHVyIiwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzBdLCA6aW50KQorICAgICAgICB3aGVuICJsb2Fk
aXMiCisgICAgICAgICAgICBlbWl0QVJNNjRBY2Nlc3MoImxkcnN3IiwgImxkdXJzdyIsIG9wZXJh
bmRzWzFdLCBvcGVyYW5kc1swXSwgOnB0cikKKyAgICAgICAgd2hlbiAibG9hZHAiCisgICAgICAg
ICAgICBlbWl0QVJNNjRBY2Nlc3MoImxkciIsICJsZHVyIiwgb3BlcmFuZHNbMV0sIG9wZXJhbmRz
WzBdLCA6cHRyKQorICAgICAgICB3aGVuICJsb2FkcSIKKyAgICAgICAgICAgIGVtaXRBUk02NEFj
Y2VzcygibGRyIiwgImxkdXIiLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMF0sIDpwdHIpCisgICAg
ICAgIHdoZW4gInN0b3JlaSIKKyAgICAgICAgICAgIGVtaXRBUk02NFVuZmxpcHBlZCgic3RyIiwg
b3BlcmFuZHMsIDppbnQpCisgICAgICAgIHdoZW4gInN0b3JlcCIKKyAgICAgICAgICAgIGVtaXRB
Uk02NFVuZmxpcHBlZCgic3RyIiwgb3BlcmFuZHMsIDpwdHIpCisgICAgICAgIHdoZW4gInN0b3Jl
cSIKKyAgICAgICAgICAgIGVtaXRBUk02NFVuZmxpcHBlZCgic3RyIiwgb3BlcmFuZHMsIDpwdHIp
CisgICAgICAgIHdoZW4gImxvYWRiIgorICAgICAgICAgICAgZW1pdEFSTTY0QWNjZXNzKCJsZHJi
IiwgImxkdXJiIiwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzBdLCA6aW50KQorICAgICAgICB3aGVu
ICJsb2FkYnMiCisgICAgICAgICAgICBlbWl0QVJNNjRBY2Nlc3MoImxkcnNiIiwgImxkdXJzYiIs
IG9wZXJhbmRzWzFdLCBvcGVyYW5kc1swXSwgOmludCkKKyAgICAgICAgd2hlbiAic3RvcmViIgor
ICAgICAgICAgICAgZW1pdEFSTTY0VW5mbGlwcGVkKCJzdHJiIiwgb3BlcmFuZHMsIDppbnQpCisg
ICAgICAgIHdoZW4gImxvYWRoIgorICAgICAgICAgICAgZW1pdEFSTTY0QWNjZXNzKCJsZHJoIiwg
ImxkdXJoIiwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzBdLCA6aW50KQorICAgICAgICB3aGVuICJs
b2FkaHMiCisgICAgICAgICAgICBlbWl0QVJNNjRBY2Nlc3MoImxkcnNoIiwgImxkdXJzaCIsIG9w
ZXJhbmRzWzFdLCBvcGVyYW5kc1swXSwgOmludCkKKyAgICAgICAgd2hlbiAic3RvcmVoIgorICAg
ICAgICAgICAgZW1pdEFSTTY0VW5mbGlwcGVkKCJzdHJoIiwgb3BlcmFuZHMsIDppbnQpCisgICAg
ICAgIHdoZW4gImxvYWRkIgorICAgICAgICAgICAgZW1pdEFSTTY0QWNjZXNzKCJsZHIiLCAibGR1
ciIsIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1swXSwgOmRvdWJsZSkKKyAgICAgICAgd2hlbiAic3Rv
cmVkIgorICAgICAgICAgICAgZW1pdEFSTTY0VW5mbGlwcGVkKCJzdHIiLCBvcGVyYW5kcywgOmRv
dWJsZSkKKyAgICAgICAgd2hlbiAiYWRkZCIKKyAgICAgICAgICAgIGVtaXRBUk02NFRBQygiZmFk
ZCIsIG9wZXJhbmRzLCA6ZG91YmxlKQorICAgICAgICB3aGVuICJkaXZkIgorICAgICAgICAgICAg
ZW1pdEFSTTY0VEFDKCJmZGl2Iiwgb3BlcmFuZHMsIDpkb3VibGUpCisgICAgICAgIHdoZW4gInN1
YmQiCisgICAgICAgICAgICBlbWl0QVJNNjRUQUMoImZzdWIiLCBvcGVyYW5kcywgOmRvdWJsZSkK
KyAgICAgICAgd2hlbiAibXVsZCIKKyAgICAgICAgICAgIGVtaXRBUk02NFRBQygiZm11bCIsIG9w
ZXJhbmRzLCA6ZG91YmxlKQorICAgICAgICB3aGVuICJzcXJ0ZCIKKyAgICAgICAgICAgIGVtaXRB
Uk02NCgiZnNxcnQiLCBvcGVyYW5kcywgOmRvdWJsZSkKKyAgICAgICAgd2hlbiAiY2kyZCIKKyAg
ICAgICAgICAgIGVtaXRBUk02NCgic2N2dGYiLCBvcGVyYW5kcywgWzppbnQsIDpkb3VibGVdKQor
ICAgICAgICB3aGVuICJiZGVxIgorICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJmY21wIiwg
b3BlcmFuZHMsIDpkb3VibGUsICJiLmVxIikKKyAgICAgICAgd2hlbiAiYmRuZXEiCisgICAgICAg
ICAgICBlbWl0QVJNNjRVbmZsaXBwZWQoImZjbXAiLCBvcGVyYW5kc1swLi4xXSwgOmRvdWJsZSkK
KyAgICAgICAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlxdWUoImJkbmVxIikKKyAg
ICAgICAgICAgICRhc20ucHV0cyAiYi52cyAje0xvY2FsTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVP
cmlnaW4sIGlzVW5vcmRlcmVkKS5hc21MYWJlbH0iCisgICAgICAgICAgICAkYXNtLnB1dHMgImIu
bmUgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAgICAgICBpc1Vub3JkZXJlZC5sb3dl
cigiQVJNNjQiKQorICAgICAgICB3aGVuICJiZGd0IgorICAgICAgICAgICAgZW1pdEFSTTY0QnJh
bmNoKCJmY21wIiwgb3BlcmFuZHMsIDpkb3VibGUsICJiLmd0IikKKyAgICAgICAgd2hlbiAiYmRn
dGVxIgorICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJmY21wIiwgb3BlcmFuZHMsIDpkb3Vi
bGUsICJiLmdlIikKKyAgICAgICAgd2hlbiAiYmRsdCIKKyAgICAgICAgICAgIGVtaXRBUk02NEJy
YW5jaCgiZmNtcCIsIG9wZXJhbmRzLCA6ZG91YmxlLCAiYi5taSIpCisgICAgICAgIHdoZW4gImJk
bHRlcSIKKyAgICAgICAgICAgIGVtaXRBUk02NEJyYW5jaCgiZmNtcCIsIG9wZXJhbmRzLCA6ZG91
YmxlLCAiYi5scyIpCisgICAgICAgIHdoZW4gImJkZXF1biIKKyAgICAgICAgICAgIGVtaXRBUk02
NFVuZmxpcHBlZCgiZmNtcCIsIG9wZXJhbmRzWzAuLjFdLCA6ZG91YmxlKQorICAgICAgICAgICAg
JGFzbS5wdXRzICJiLnZzICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICAgICAgJGFz
bS5wdXRzICJiLmVxICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJiZG5l
cXVuIgorICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJmY21wIiwgb3BlcmFuZHMsIDpkb3Vi
bGUsICJiLm5lIikKKyAgICAgICAgd2hlbiAiYmRndHVuIgorICAgICAgICAgICAgZW1pdEFSTTY0
QnJhbmNoKCJmY21wIiwgb3BlcmFuZHMsIDpkb3VibGUsICJiLmhpIikKKyAgICAgICAgd2hlbiAi
YmRndGVxdW4iCisgICAgICAgICAgICBlbWl0QVJNNjRCcmFuY2goImZjbXAiLCBvcGVyYW5kcywg
OmRvdWJsZSwgImIucGwiKQorICAgICAgICB3aGVuICJiZGx0dW4iCisgICAgICAgICAgICBlbWl0
QVJNNjRCcmFuY2goImZjbXAiLCBvcGVyYW5kcywgOmRvdWJsZSwgImIubHQiKQorICAgICAgICB3
aGVuICJiZGx0ZXF1biIKKyAgICAgICAgICAgIGVtaXRBUk02NEJyYW5jaCgiZmNtcCIsIG9wZXJh
bmRzLCA6ZG91YmxlLCAiYi5sZSIpCisgICAgICAgIHdoZW4gImJ0ZDJpIgorICAgICAgICAgICAg
IyBGSVhNRTogbWF5IGJlIGEgZ29vZCBpZGVhIHRvIGp1c3QgZ2V0IHJpZCBvZiB0aGlzIGluc3Ry
dWN0aW9uLCBzaW5jZSB0aGUgaW50ZXJwcmV0ZXIKKyAgICAgICAgICAgICMgY3VycmVudGx5IGRv
ZXMgbm90IHVzZSBpdC4KKyAgICAgICAgICAgIHJhaXNlICJBUk02NCBkb2VzIG5vdCBzdXBwb3J0
IHRoaXMgb3Bjb2RlIHlldCwgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgd2hlbiAidGQy
aSIKKyAgICAgICAgICAgIGVtaXRBUk02NCgiZmN2dHpzIiwgb3BlcmFuZHMsIFs6ZG91YmxlLCA6
aW50XSkKKyAgICAgICAgd2hlbiAiYmNkMmkiCisgICAgICAgICAgICAjIEZJWE1FOiByZW1vdmUg
dGhpcyBpbnN0cnVjdGlvbiwgb3IgdXNlIGl0IGFuZCBpbXBsZW1lbnQgaXQuIEN1cnJlbnRseSBp
dCdzIG5vdAorICAgICAgICAgICAgIyB1c2VkLgorICAgICAgICAgICAgcmFpc2UgIkFSTTY0IGRv
ZXMgbm90IHN1cHBvcnQgdGhpcyBvcGNvZGUgeWV0LCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAg
ICAgICB3aGVuICJtb3ZkeiIKKyAgICAgICAgICAgICMgRklYTUU6IHJlbW92ZSBpdCBvciBzdXBw
b3J0IGl0LgorICAgICAgICAgICAgcmFpc2UgIkFSTTY0IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBv
cGNvZGUgeWV0LCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgICAgICB3aGVuICJwb3AiCisgICAg
ICAgICAgICBlbWl0QVJNNjRVbmZsaXBwZWQoInBvcCIsIG9wZXJhbmRzLCA6cHRyKQorICAgICAg
ICB3aGVuICJwdXNoIgorICAgICAgICAgICAgZW1pdEFSTTY0VW5mbGlwcGVkKCJwdXNoIiwgb3Bl
cmFuZHMsIDpwdHIpCisgICAgICAgIHdoZW4gIm1vdmUiCisgICAgICAgICAgICBpZiBvcGVyYW5k
c1swXS5pbW1lZGlhdGU/CisgICAgICAgICAgICAgICAgZW1pdEFSTTY0TW92ZUltbWVkaWF0ZShv
cGVyYW5kc1swXS52YWx1ZSwgb3BlcmFuZHNbMV0pCisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgZW1pdEFSTTY0KCJtb3YiLCBvcGVyYW5kcywgOnB0cikKKyAgICAgICAgICAgIGVu
ZAorICAgICAgICB3aGVuICJzeGkycCIKKyAgICAgICAgICAgIGVtaXRBUk02NCgic3h0dyIsIG9w
ZXJhbmRzLCA6cHRyKQorICAgICAgICB3aGVuICJzeGkycSIKKyAgICAgICAgICAgIGVtaXRBUk02
NCgic3h0dyIsIG9wZXJhbmRzLCA6cHRyKQorICAgICAgICB3aGVuICJ6eGkycCIKKyAgICAgICAg
ICAgIGVtaXRBUk02NCgidXh0dyIsIG9wZXJhbmRzLCA6cHRyKQorICAgICAgICB3aGVuICJ6eGky
cSIKKyAgICAgICAgICAgIGVtaXRBUk02NCgidXh0dyIsIG9wZXJhbmRzLCA6cHRyKQorICAgICAg
ICB3aGVuICJub3AiCisgICAgICAgICAgICAkYXNtLnB1dHMgIm5vcCIKKyAgICAgICAgd2hlbiAi
YmllcSIsICJiYmVxIgorICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0uaW1tZWRpYXRlPyBhbmQg
b3BlcmFuZHNbMF0udmFsdWUgPT0gMAorICAgICAgICAgICAgICAgICRhc20ucHV0cyAiY2J6ICN7
b3BlcmFuZHNbMV0uYXJtNjRPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0i
CisgICAgICAgICAgICBlbHNpZiBvcGVyYW5kc1sxXS5pbW1lZGlhdGU/IGFuZCBvcGVyYW5kc1sx
XS52YWx1ZSA9PSAwCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJjYnogI3tvcGVyYW5kc1sw
XS5hcm02NE9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlbWl0QVJNNjRCcmFuY2goInN1YnMgd3pyLCAiLCBv
cGVyYW5kcywgOmludCwgImIuZXEiKQorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gImJw
ZXEiCisgICAgICAgICAgICBpZiBvcGVyYW5kc1swXS5pbW1lZGlhdGU/IGFuZCBvcGVyYW5kc1sw
XS52YWx1ZSA9PSAwCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJjYnogI3tvcGVyYW5kc1sx
XS5hcm02NE9wZXJhbmQoOnB0cil9LCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAg
ICAgIGVsc2lmIG9wZXJhbmRzWzFdLmltbWVkaWF0ZT8gYW5kIG9wZXJhbmRzWzFdLnZhbHVlID09
IDAKKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImNieiAje29wZXJhbmRzWzBdLmFybTY0T3Bl
cmFuZCg6cHRyKX0sICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGVtaXRBUk02NEJyYW5jaCgic3VicyB4enIsICIsIG9wZXJhbmRzLCA6
cHRyLCAiYi5lcSIpCisgICAgICAgICAgICBlbmQKKyAgICAgICAgd2hlbiAiYnFlcSIKKyAgICAg
ICAgICAgIGlmIG9wZXJhbmRzWzBdLmltbWVkaWF0ZT8gYW5kIG9wZXJhbmRzWzBdLnZhbHVlID09
IDAKKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImNieiAje29wZXJhbmRzWzFdLmFybTY0T3Bl
cmFuZCg6cHRyKX0sICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICAgICAgZWxzaWYg
b3BlcmFuZHNbMV0uaW1tZWRpYXRlPyBhbmQgb3BlcmFuZHNbMV0udmFsdWUgPT0gMAorICAgICAg
ICAgICAgICAgICRhc20ucHV0cyAiY2J6ICN7b3BlcmFuZHNbMF0uYXJtNjRPcGVyYW5kKDpwdHIp
fSwgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgZW1pdEFSTTY0QnJhbmNoKCJzdWJzIHh6ciwgIiwgb3BlcmFuZHMsIDpwdHIsICJiLmVx
IikKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVuICJiaW5lcSIsICJiYm5lcSIKKyAgICAg
ICAgICAgIGlmIG9wZXJhbmRzWzBdLmltbWVkaWF0ZT8gYW5kIG9wZXJhbmRzWzBdLnZhbHVlID09
IDAKKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImNibnogI3tvcGVyYW5kc1sxXS5hcm02NE9w
ZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgICAgIGVsc2lm
IG9wZXJhbmRzWzFdLmltbWVkaWF0ZT8gYW5kIG9wZXJhbmRzWzFdLnZhbHVlID09IDAKKyAgICAg
ICAgICAgICAgICAkYXNtLnB1dHMgImNibnogI3tvcGVyYW5kc1swXS5hcm02NE9wZXJhbmQoOmlu
dCl9LCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBlbWl0QVJNNjRCcmFuY2goInN1YnMgd3pyLCAiLCBvcGVyYW5kcywgOmludCwgImIu
bmUiKQorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gImJwbmVxIgorICAgICAgICAgICAg
aWYgb3BlcmFuZHNbMF0uaW1tZWRpYXRlPyBhbmQgb3BlcmFuZHNbMF0udmFsdWUgPT0gMAorICAg
ICAgICAgICAgICAgICRhc20ucHV0cyAiY2JueiAje29wZXJhbmRzWzFdLmFybTY0T3BlcmFuZCg6
cHRyKX0sICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICAgICAgZWxzaWYgb3BlcmFu
ZHNbMV0uaW1tZWRpYXRlPyBhbmQgb3BlcmFuZHNbMV0udmFsdWUgPT0gMAorICAgICAgICAgICAg
ICAgICRhc20ucHV0cyAiY2JueiAje29wZXJhbmRzWzBdLmFybTY0T3BlcmFuZCg6cHRyKX0sICN7
b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IGVtaXRBUk02NEJyYW5jaCgic3VicyB4enIsICIsIG9wZXJhbmRzLCA6cHRyLCAiYi5uZSIpCisg
ICAgICAgICAgICBlbmQKKyAgICAgICAgd2hlbiAiYnFuZXEiCisgICAgICAgICAgICBpZiBvcGVy
YW5kc1swXS5pbW1lZGlhdGU/IGFuZCBvcGVyYW5kc1swXS52YWx1ZSA9PSAwCisgICAgICAgICAg
ICAgICAgJGFzbS5wdXRzICJjYm56ICN7b3BlcmFuZHNbMV0uYXJtNjRPcGVyYW5kKDpwdHIpfSwg
I3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAgICAgICBlbHNpZiBvcGVyYW5kc1sxXS5p
bW1lZGlhdGU/IGFuZCBvcGVyYW5kc1sxXS52YWx1ZSA9PSAwCisgICAgICAgICAgICAgICAgJGFz
bS5wdXRzICJjYm56ICN7b3BlcmFuZHNbMF0uYXJtNjRPcGVyYW5kKDpwdHIpfSwgI3tvcGVyYW5k
c1syXS5hc21MYWJlbH0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdEFS
TTY0QnJhbmNoKCJzdWJzIHh6ciwgIiwgb3BlcmFuZHMsIDpwdHIsICJiLm5lIikKKyAgICAgICAg
ICAgIGVuZAorICAgICAgICB3aGVuICJiaWEiLCAiYmJhIgorICAgICAgICAgICAgZW1pdEFSTTY0
QnJhbmNoKCJzdWJzIHd6ciwgIiwgb3BlcmFuZHMsIDppbnQsICJiLmhpIikKKyAgICAgICAgd2hl
biAiYnBhIgorICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJzdWJzIHh6ciwgIiwgb3BlcmFu
ZHMsIDpwdHIsICJiLmhpIikKKyAgICAgICAgd2hlbiAiYnFhIgorICAgICAgICAgICAgZW1pdEFS
TTY0QnJhbmNoKCJzdWJzIHh6ciwgIiwgb3BlcmFuZHMsIDpwdHIsICJiLmhpIikKKyAgICAgICAg
d2hlbiAiYmlhZXEiLCAiYmJhZXEiCisgICAgICAgICAgICBlbWl0QVJNNjRCcmFuY2goInN1YnMg
d3pyLCAiLCBvcGVyYW5kcywgOmludCwgImIuaHMiKQorICAgICAgICB3aGVuICJicGFlcSIKKyAg
ICAgICAgICAgIGVtaXRBUk02NEJyYW5jaCgic3VicyB4enIsICIsIG9wZXJhbmRzLCA6cHRyLCAi
Yi5ocyIpCisgICAgICAgIHdoZW4gImJxYWVxIgorICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNo
KCJzdWJzIHh6ciwgIiwgb3BlcmFuZHMsIDpwdHIsICJiLmhzIikKKyAgICAgICAgd2hlbiAiYmli
IiwgImJiYiIKKyAgICAgICAgICAgIGVtaXRBUk02NEJyYW5jaCgic3VicyB3enIsICIsIG9wZXJh
bmRzLCA6aW50LCAiYi5sbyIpCisgICAgICAgIHdoZW4gImJwYiIKKyAgICAgICAgICAgIGVtaXRB
Uk02NEJyYW5jaCgic3VicyB4enIsICIsIG9wZXJhbmRzLCA6cHRyLCAiYi5sbyIpCisgICAgICAg
IHdoZW4gImJxYiIKKyAgICAgICAgICAgIGVtaXRBUk02NEJyYW5jaCgic3VicyB4enIsICIsIG9w
ZXJhbmRzLCA6cHRyLCAiYi5sbyIpCisgICAgICAgIHdoZW4gImJpYmVxIiwgImJiYmVxIgorICAg
ICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJzdWJzIHd6ciwgIiwgb3BlcmFuZHMsIDppbnQsICJi
LmxzIikKKyAgICAgICAgd2hlbiAiYnBiZXEiCisgICAgICAgICAgICBlbWl0QVJNNjRCcmFuY2go
InN1YnMgeHpyLCAiLCBvcGVyYW5kcywgOnB0ciwgImIubHMiKQorICAgICAgICB3aGVuICJicWJl
cSIKKyAgICAgICAgICAgIGVtaXRBUk02NEJyYW5jaCgic3VicyB4enIsICIsIG9wZXJhbmRzLCA6
cHRyLCAiYi5scyIpCisgICAgICAgIHdoZW4gImJpZ3QiLCAiYmJndCIKKyAgICAgICAgICAgIGVt
aXRBUk02NEJyYW5jaCgic3VicyB3enIsICIsIG9wZXJhbmRzLCA6aW50LCAiYi5ndCIpCisgICAg
ICAgIHdoZW4gImJwZ3QiCisgICAgICAgICAgICBlbWl0QVJNNjRCcmFuY2goInN1YnMgeHpyLCAi
LCBvcGVyYW5kcywgOnB0ciwgImIuZ3QiKQorICAgICAgICB3aGVuICJicWd0IgorICAgICAgICAg
ICAgZW1pdEFSTTY0QnJhbmNoKCJzdWJzIHh6ciwgIiwgb3BlcmFuZHMsIDpwdHIsICJiLmd0IikK
KyAgICAgICAgd2hlbiAiYmlndGVxIiwgImJiZ3RlcSIKKyAgICAgICAgICAgIGVtaXRBUk02NEJy
YW5jaCgic3VicyB3enIsICIsIG9wZXJhbmRzLCA6aW50LCAiYi5nZSIpCisgICAgICAgIHdoZW4g
ImJwZ3RlcSIKKyAgICAgICAgICAgIGVtaXRBUk02NEJyYW5jaCgic3VicyB4enIsICIsIG9wZXJh
bmRzLCA6cHRyLCAiYi5nZSIpCisgICAgICAgIHdoZW4gImJxZ3RlcSIKKyAgICAgICAgICAgIGVt
aXRBUk02NEJyYW5jaCgic3VicyB4enIsICIsIG9wZXJhbmRzLCA6cHRyLCAiYi5nZSIpCisgICAg
ICAgIHdoZW4gImJpbHQiLCAiYmJsdCIKKyAgICAgICAgICAgIGVtaXRBUk02NEJyYW5jaCgic3Vi
cyB3enIsICIsIG9wZXJhbmRzLCA6aW50LCAiYi5sdCIpCisgICAgICAgIHdoZW4gImJwbHQiCisg
ICAgICAgICAgICBlbWl0QVJNNjRCcmFuY2goInN1YnMgeHpyLCAiLCBvcGVyYW5kcywgOnB0ciwg
ImIubHQiKQorICAgICAgICB3aGVuICJicWx0IgorICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNo
KCJzdWJzIHh6ciwgIiwgb3BlcmFuZHMsIDpwdHIsICJiLmx0IikKKyAgICAgICAgd2hlbiAiYmls
dGVxIiwgImJibHRlcSIKKyAgICAgICAgICAgIGVtaXRBUk02NEJyYW5jaCgic3VicyB3enIsICIs
IG9wZXJhbmRzLCA6aW50LCAiYi5sZSIpCisgICAgICAgIHdoZW4gImJwbHRlcSIKKyAgICAgICAg
ICAgIGVtaXRBUk02NEJyYW5jaCgic3VicyB4enIsICIsIG9wZXJhbmRzLCA6cHRyLCAiYi5sZSIp
CisgICAgICAgIHdoZW4gImJxbHRlcSIKKyAgICAgICAgICAgIGVtaXRBUk02NEJyYW5jaCgic3Vi
cyB4enIsICIsIG9wZXJhbmRzLCA6cHRyLCAiYi5sZSIpCisgICAgICAgIHdoZW4gImptcCIKKyAg
ICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLmxhYmVsPworICAgICAgICAgICAgICAgICRhc20ucHV0
cyAiYiAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBlbWl0QVJNNjRVbmZsaXBwZWQoImJyIiwgb3BlcmFuZHMsIDpwdHIpCisgICAgICAg
ICAgICBlbmQKKyAgICAgICAgd2hlbiAiY2FsbCIKKyAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBd
LmxhYmVsPworICAgICAgICAgICAgICAgICRhc20ucHV0cyAiYmwgI3tvcGVyYW5kc1swXS5hc21M
YWJlbH0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdEFSTTY0VW5mbGlw
cGVkKCJibHIiLCBvcGVyYW5kcywgOnB0cikKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVu
ICJicmVhayIKKyAgICAgICAgICAgICRhc20ucHV0cyAiYnJrIFwjMCIKKyAgICAgICAgd2hlbiAi
cmV0IgorICAgICAgICAgICAgJGFzbS5wdXRzICJyZXQiCisgICAgICAgIHdoZW4gImNpZXEiLCAi
Y2JlcSIKKyAgICAgICAgICAgIGVtaXRBUk02NENvbXBhcmUob3BlcmFuZHMsIDppbnQsICJuZSIp
CisgICAgICAgIHdoZW4gImNwZXEiCisgICAgICAgICAgICBlbWl0QVJNNjRDb21wYXJlKG9wZXJh
bmRzLCA6cHRyLCAibmUiKQorICAgICAgICB3aGVuICJjcWVxIgorICAgICAgICAgICAgZW1pdEFS
TTY0Q29tcGFyZShvcGVyYW5kcywgOnB0ciwgIm5lIikKKyAgICAgICAgd2hlbiAiY2luZXEiLCAi
Y2JuZXEiCisgICAgICAgICAgICBlbWl0QVJNNjRDb21wYXJlKG9wZXJhbmRzLCA6aW50LCAiZXEi
KQorICAgICAgICB3aGVuICJjcG5lcSIKKyAgICAgICAgICAgIGVtaXRBUk02NENvbXBhcmUob3Bl
cmFuZHMsIDpwdHIsICJlcSIpCisgICAgICAgIHdoZW4gImNxbmVxIgorICAgICAgICAgICAgZW1p
dEFSTTY0Q29tcGFyZShvcGVyYW5kcywgOnB0ciwgImVxIikKKyAgICAgICAgd2hlbiAiY2lhIiwg
ImNiYSIKKyAgICAgICAgICAgIGVtaXRBUk02NENvbXBhcmUob3BlcmFuZHMsIDppbnQsICJscyIp
CisgICAgICAgIHdoZW4gImNwYSIKKyAgICAgICAgICAgIGVtaXRBUk02NENvbXBhcmUob3BlcmFu
ZHMsIDpwdHIsICJscyIpCisgICAgICAgIHdoZW4gImNxYSIKKyAgICAgICAgICAgIGVtaXRBUk02
NENvbXBhcmUob3BlcmFuZHMsIDpwdHIsICJscyIpCisgICAgICAgIHdoZW4gImNpYWVxIiwgImNi
YWVxIgorICAgICAgICAgICAgZW1pdEFSTTY0Q29tcGFyZShvcGVyYW5kcywgOmludCwgImxvIikK
KyAgICAgICAgd2hlbiAiY3BhZXEiCisgICAgICAgICAgICBlbWl0QVJNNjRDb21wYXJlKG9wZXJh
bmRzLCA6cHRyLCAibG8iKQorICAgICAgICB3aGVuICJjcWFlcSIKKyAgICAgICAgICAgIGVtaXRB
Uk02NENvbXBhcmUob3BlcmFuZHMsIDpwdHIsICJsbyIpCisgICAgICAgIHdoZW4gImNpYiIsICJj
YmIiCisgICAgICAgICAgICBlbWl0QVJNNjRDb21wYXJlKG9wZXJhbmRzLCA6aW50LCAiaHMiKQor
ICAgICAgICB3aGVuICJjcGIiCisgICAgICAgICAgICBlbWl0QVJNNjRDb21wYXJlKG9wZXJhbmRz
LCA6cHRyLCAiaHMiKQorICAgICAgICB3aGVuICJjcWIiCisgICAgICAgICAgICBlbWl0QVJNNjRD
b21wYXJlKG9wZXJhbmRzLCA6cHRyLCAiaHMiKQorICAgICAgICB3aGVuICJjaWJlcSIsICJjYmJl
cSIKKyAgICAgICAgICAgIGVtaXRBUk02NENvbXBhcmUob3BlcmFuZHMsIDppbnQsICJoaSIpCisg
ICAgICAgIHdoZW4gImNwYmVxIgorICAgICAgICAgICAgZW1pdEFSTTY0Q29tcGFyZShvcGVyYW5k
cywgOnB0ciwgImhpIikKKyAgICAgICAgd2hlbiAiY3FiZXEiCisgICAgICAgICAgICBlbWl0QVJN
NjRDb21wYXJlKG9wZXJhbmRzLCA6cHRyLCAiaGkiKQorICAgICAgICB3aGVuICJjaWx0IiwgImNi
bHQiCisgICAgICAgICAgICBlbWl0QVJNNjRDb21wYXJlKG9wZXJhbmRzLCA6aW50LCAiZ2UiKQor
ICAgICAgICB3aGVuICJjcGx0IgorICAgICAgICAgICAgZW1pdEFSTTY0Q29tcGFyZShvcGVyYW5k
cywgOnB0ciwgImdlIikKKyAgICAgICAgd2hlbiAiY3FsdCIKKyAgICAgICAgICAgIGVtaXRBUk02
NENvbXBhcmUob3BlcmFuZHMsIDpwdHIsICJnZSIpCisgICAgICAgIHdoZW4gImNpbHRlcSIsICJj
Ymx0ZXEiCisgICAgICAgICAgICBlbWl0QVJNNjRDb21wYXJlKG9wZXJhbmRzLCA6aW50LCAiZ3Qi
KQorICAgICAgICB3aGVuICJjcGx0ZXEiCisgICAgICAgICAgICBlbWl0QVJNNjRDb21wYXJlKG9w
ZXJhbmRzLCA6cHRyLCAiZ3QiKQorICAgICAgICB3aGVuICJjcWx0ZXEiCisgICAgICAgICAgICBl
bWl0QVJNNjRDb21wYXJlKG9wZXJhbmRzLCA6cHRyLCAiZ3QiKQorICAgICAgICB3aGVuICJjaWd0
IiwgImNiZ3QiCisgICAgICAgICAgICBlbWl0QVJNNjRDb21wYXJlKG9wZXJhbmRzLCA6aW50LCAi
bGUiKQorICAgICAgICB3aGVuICJjcGd0IgorICAgICAgICAgICAgZW1pdEFSTTY0Q29tcGFyZShv
cGVyYW5kcywgOnB0ciwgImxlIikKKyAgICAgICAgd2hlbiAiY3FndCIKKyAgICAgICAgICAgIGVt
aXRBUk02NENvbXBhcmUob3BlcmFuZHMsIDpwdHIsICJsZSIpCisgICAgICAgIHdoZW4gImNpZ3Rl
cSIsICJjYmd0ZXEiCisgICAgICAgICAgICBlbWl0QVJNNjRDb21wYXJlKG9wZXJhbmRzLCA6aW50
LCAibHQiKQorICAgICAgICB3aGVuICJjcGd0ZXEiCisgICAgICAgICAgICBlbWl0QVJNNjRDb21w
YXJlKG9wZXJhbmRzLCA6cHRyLCAibHQiKQorICAgICAgICB3aGVuICJjcWd0ZXEiCisgICAgICAg
ICAgICBlbWl0QVJNNjRDb21wYXJlKG9wZXJhbmRzLCA6cHRyLCAibHQiKQorICAgICAgICB3aGVu
ICJwZWVrIgorICAgICAgICAgICAgJGFzbS5wdXRzICJsZHIgI3tvcGVyYW5kc1sxXS5hcm02NE9w
ZXJhbmQoOnB0cil9LCBbc3AsIFwjI3tvcGVyYW5kc1swXS52YWx1ZSAqIDh9XSIKKyAgICAgICAg
d2hlbiAicG9rZSIKKyAgICAgICAgICAgICRhc20ucHV0cyAic3RyICN7b3BlcmFuZHNbMV0uYXJt
NjRPcGVyYW5kKDpwdHIpfSwgW3NwLCBcIyN7b3BlcmFuZHNbMF0udmFsdWUgKiA4fV0iCisgICAg
ICAgIHdoZW4gImZwMmQiCisgICAgICAgICAgICBlbWl0QVJNNjQoImZtb3YiLCBvcGVyYW5kcywg
WzpwdHIsIDpkb3VibGVdKQorICAgICAgICB3aGVuICJmcTJkIgorICAgICAgICAgICAgZW1pdEFS
TTY0KCJmbW92Iiwgb3BlcmFuZHMsIFs6cHRyLCA6ZG91YmxlXSkKKyAgICAgICAgd2hlbiAiZmQy
cCIKKyAgICAgICAgICAgIGVtaXRBUk02NCgiZm1vdiIsIG9wZXJhbmRzLCBbOmRvdWJsZSwgOnB0
cl0pCisgICAgICAgIHdoZW4gImZkMnEiCisgICAgICAgICAgICBlbWl0QVJNNjQoImZtb3YiLCBv
cGVyYW5kcywgWzpkb3VibGUsIDpwdHJdKQorICAgICAgICB3aGVuICJibyIKKyAgICAgICAgICAg
ICRhc20ucHV0cyAiYi52cyAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAi
YnMiCisgICAgICAgICAgICAkYXNtLnB1dHMgImIubWkgI3tvcGVyYW5kc1swXS5hc21MYWJlbH0i
CisgICAgICAgIHdoZW4gImJ6IgorICAgICAgICAgICAgJGFzbS5wdXRzICJiLmVxICN7b3BlcmFu
ZHNbMF0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJibnoiCisgICAgICAgICAgICAkYXNtLnB1
dHMgImIubmUgI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgICAgIHdoZW4gImxlYWkiCisg
ICAgICAgICAgICBvcGVyYW5kc1swXS5hcm02NEVtaXRMZWEob3BlcmFuZHNbMV0sIDppbnQpCisg
ICAgICAgIHdoZW4gImxlYXAiCisgICAgICAgICAgICBvcGVyYW5kc1swXS5hcm02NEVtaXRMZWEo
b3BlcmFuZHNbMV0sIDpwdHIpCisgICAgICAgIHdoZW4gImxlYXEiCisgICAgICAgICAgICBvcGVy
YW5kc1swXS5hcm02NEVtaXRMZWEob3BlcmFuZHNbMV0sIDpwdHIpCisgICAgICAgIHdoZW4gInNt
dWxsaSIKKyAgICAgICAgICAgICRhc20ucHV0cyAic21hZGRsICN7b3BlcmFuZHNbMl0uYXJtNjRP
cGVyYW5kKDpwdHIpfSwgI3tvcGVyYW5kc1swXS5hcm02NE9wZXJhbmQoOmludCl9LCAje29wZXJh
bmRzWzFdLmFybTY0T3BlcmFuZCg6aW50KX0sIHh6ciIKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbG93ZXJEZWZhdWx0CisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIKaW5kZXggOTAyYTc2NC4uYmYwMWI1
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMu
cmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIKQEAg
LTIzLDYgKzIzLDcgQEAKIAogcmVxdWlyZSAiY29uZmlnIgogcmVxdWlyZSAiYXJtIgorcmVxdWly
ZSAiYXJtNjQiCiByZXF1aXJlICJhc3QiCiByZXF1aXJlICJ4ODYiCiByZXF1aXJlICJtaXBzIgpA
QCAtMzYsNiArMzcsNyBAQCBCQUNLRU5EUyA9CiAgICAgICJBUk0iLAogICAgICAiQVJNdjciLAog
ICAgICAiQVJNdjdfVFJBRElUSU9OQUwiLAorICAgICAiQVJNNjQiLAogICAgICAiTUlQUyIsCiAg
ICAgICJTSDQiLAogICAgICAiQ19MT09QIgpAQCAtNTMsNiArNTUsNyBAQCBXT1JLSU5HX0JBQ0tF
TkRTID0KICAgICAgIkFSTSIsCiAgICAgICJBUk12NyIsCiAgICAgICJBUk12N19UUkFESVRJT05B
TCIsCisgICAgICJBUk02NCIsCiAgICAgICJNSVBTIiwKICAgICAgIlNINCIsCiAgICAgICJDX0xP
T1AiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVj
dGlvbnMucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMu
cmIKaW5kZXggZWIzOTRhZi4uMDNmMDVjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgpAQCAtMjU3LDEyICsyNTcsMTMgQEAgWDg2X0lO
U1RSVUNUSU9OUyA9CiAgICAgICJpZGl2aSIKICAgICBdCiAKLUFSTV9JTlNUUlVDVElPTlMgPQor
UklTQ19JTlNUUlVDVElPTlMgPQogICAgIFsKLSAgICAgInNtdWxsaSIsCi0gICAgICJhZGRpcyIs
Ci0gICAgICJzdWJpcyIsCi0gICAgICJvcmlzIgorICAgICAic211bGxpIiwgICMgTXVsdGlwbHkg
dHdvIDMyLWJpdCB3b3JkcyBhbmQgcHJvZHVjZSBhIDY0LWJpdCB3b3JkCisgICAgICJhZGRpcyIs
ICAgIyBBZGQgaW50ZWdlcnMgYW5kIHNldCBhIGZsYWcuCisgICAgICJzdWJpcyIsICAgIyBTYW1l
LCBidXQgZm9yIHN1YnRyYWN0aW9uLgorICAgICAib3JpcyIsICAgICMgU2FtZSwgYnV0IGZvciBi
aXR3aXNlIG9yLgorICAgICAiYWRkcHMiICAgICMgYWRkaXMgYnV0IGZvciBwb2ludGVycy4KICAg
ICBdCiAKIE1JUFNfSU5TVFJVQ1RJT05TID0KQEAgLTMwNiw3ICszMDcsNyBAQCBDWFhfSU5TVFJV
Q1RJT05TID0KICAgICAgImNsb29wRG8iLCAgICAgICAgICAgICAgIyBubyBvcGVyYW5kcwogICAg
IF0KIAotSU5TVFJVQ1RJT05TID0gTUFDUk9fSU5TVFJVQ1RJT05TICsgWDg2X0lOU1RSVUNUSU9O
UyArIEFSTV9JTlNUUlVDVElPTlMgKyBNSVBTX0lOU1RSVUNUSU9OUyArIFNINF9JTlNUUlVDVElP
TlMgKyBDWFhfSU5TVFJVQ1RJT05TCitJTlNUUlVDVElPTlMgPSBNQUNST19JTlNUUlVDVElPTlMg
KyBYODZfSU5TVFJVQ1RJT05TICsgUklTQ19JTlNUUlVDVElPTlMgKyBNSVBTX0lOU1RSVUNUSU9O
UyArIFNINF9JTlNUUlVDVElPTlMgKyBDWFhfSU5TVFJVQ1RJT05TCiAKIElOU1RSVUNUSU9OX1BB
VFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBJTlNUUlVDVElPTlMuam9pbignKXwoJykgKyAn
KSlcXFonKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9y
aXNjLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmlzYy5yYgppbmRleCAx
Njk2YTBjLi4zZmJjMDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9yaXNjLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jpc2Mu
cmIKQEAgLTM3MSw3ICszNzEsNyBAQCBkZWYgcmlzY0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlcyhs
aXN0LCB2YWxpZEltbWVkaWF0ZXMpCiAgICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCiAgICAg
ICAgICAgICB3aGVuICJtb3ZlIgogICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQotICAg
ICAgICAgICAgd2hlbiAiYWRkaSIsICJhZGRwIiwgImFkZGlzIiwgInN1YmkiLCAic3VicCIsICJz
dWJpcyIKKyAgICAgICAgICAgIHdoZW4gImFkZGkiLCAiYWRkcCIsICJhZGRxIiwgImFkZGlzIiwg
InN1YmkiLCAic3VicCIsICJzdWJxIiwgInN1YmlzIgogICAgICAgICAgICAgICAgIGlmIG5vZGUu
b3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAg
KG5vdCB2YWxpZEltbWVkaWF0ZXMuaW5jbHVkZT8gbm9kZS5vcGVyYW5kc1swXS52YWx1ZSkgYW5k
CiAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZEltbWVkaWF0ZXMuaW5jbHVkZT8gLW5vZGUu
b3BlcmFuZHNbMF0udmFsdWUKQEAgLTM4Nyw3ICszODcsNyBAQCBkZWYgcmlzY0xvd2VyTWFsZm9y
bWVkSW1tZWRpYXRlcyhsaXN0LCB2YWxpZEltbWVkaWF0ZXMpCiAgICAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUucmlzY0xvd2VyTWFsZm9ybWVk
SW1tZWRpYXRlc1JlY3Vyc2UobmV3TGlzdCwgdmFsaWRJbW1lZGlhdGVzKQogICAgICAgICAgICAg
ICAgIGVuZAotICAgICAgICAgICAgd2hlbiAibXVsaSIsICJtdWxwIgorICAgICAgICAgICAgd2hl
biAibXVsaSIsICJtdWxwIiwgIm11bHEiCiAgICAgICAgICAgICAgICAgaWYgbm9kZS5vcGVyYW5k
c1swXS5pc19hPyBJbW1lZGlhdGUKICAgICAgICAgICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhj
b2RlT3JpZ2luLCA6Z3ByKQogICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0
aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtb3ZlIiwgW25vZGUub3BlcmFuZHNbMF0sIHRtcF0s
IGFubm90YXRpb24pCkBAIC00NjYsNiArNDY2LDEyIEBAIGRlZiByaXNjTG93ZXJNaXNwbGFjZWRB
ZGRyZXNzZXMobGlzdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLm9wY29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByaXNjQXNSZWdpc3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5k
cywgInAiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbm5v
dGF0aW9uKQorICAgICAgICAgICAgd2hlbiAiYWRkcSIsICJhbmRxIiwgImxzaGlmdHEiLCAibXVs
cSIsICJuZWdxIiwgIm9ycSIsICJyc2hpZnRxIiwgInVyc2hpZnRxIiwKKyAgICAgICAgICAgICAg
ICAic3VicSIsICJ4b3JxIiwgL15icS8sIC9eYnRxLywgL15jcS8KKyAgICAgICAgICAgICAgICBu
ZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlzY0FzUmVnaXN0ZXJzKG5ld0xpc3QsIHBv
c3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFuZHMsICJxIiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbikKICAgICAgICAgICAgIHdoZW4gImJi
ZXEiLCAiYmJuZXEiLCAiYmJhIiwgImJiYWVxIiwgImJiYiIsICJiYmJlcSIsICJidGJ6IiwgImJ0
Ym56IiwgInRieiIsICJ0Ym56IiwKICAgICAgICAgICAgICAgICAiY2JlcSIsICJjYm5lcSIsICJj
YmEiLCAiY2JhZXEiLCAiY2JiIiwgImNiYmVxIgogICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwg
SW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKQEAgLTU1MiwzICs1NTgsMTczIEBAIGRl
ZiByaXNjTG93ZXJSZWdpc3RlclJldXNlKGxpc3QpCiAgICAgbmV3TGlzdAogZW5kCiAKKyMKKyMg
TG93ZXJpbmcgb2YgdGhlIG5vdCBpbnN0cnVjdGlvbi4gVGhlIGZvbGxvd2luZzoKKyMKKyMgbm90
aSB0MAorIworIyBiZWNvbWVzOgorIworIyB4b3JpIC0xLCB0MAorIworCitkZWYgcmlzY0xvd2Vy
Tm90KGxpc3QpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbGlzdC5lYWNoIHsKKyAgICAgICAgfCBu
b2RlIHwKKyAgICAgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAgICAgICAgY2Fz
ZSBub2RlLm9wY29kZQorICAgICAgICAgICAgd2hlbiAibm90aSIsICJub3RwIgorICAgICAgICAg
ICAgICAgIHJhaXNlICJXcm9uZyBudWJtZXIgb2Ygb3BlcmFuZHMgYXQgI3tub2RlLmNvZGVPcmln
aW5TdHJpbmd9IiB1bmxlc3Mgbm9kZS5vcGVyYW5kcy5zaXplID09IDEKKyAgICAgICAgICAgICAg
ICBzdWZmaXggPSBub2RlLm9wY29kZVstMS4uLTFdCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8
PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAieG9yIiArIHN1ZmZpeCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSW1tZWRpYXRlLm5ldyhub2Rl
LmNvZGVPcmlnaW4sIC0xKSwgbm9kZS5vcGVyYW5kc1swXV0pCisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICAgICAgICBlbmQKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICAgIGVuZAorICAgIH0KKyAg
ICByZXR1cm4gbmV3TGlzdAorZW5kCisKKyMKKyMgTG93aW5nIG9mIGNvbXBsZXggYnJhbmNoIG9w
cyBvbiA2NC1iaXQuIEZvciBleGFtcGxlOgorIworIyBibXVsaW8gZm9vLCBiYXIsIGJhegorIwor
IyBiZWNvbWVzOgorIworIyBzbXVsbGkgZm9vLCBiYXIsIGJhcgorIyByc2hpZnRwIGJhciwgMzIs
IHRtcDEKKyMgcnNoaWZ0aSBiYXIsIDMxLCB0bXAyCisjIHp4aTJwIGJhciwgYmFyIAorIyBiaW5l
cSB0bXAxLCB0bXAyLCBiYXoKKyMKKworZGVmIHJpc2NMb3dlckhhcmRCcmFuY2hPcHM2NChsaXN0
KQorICAgIG5ld0xpc3QgPSBbXQorICAgIGxpc3QuZWFjaCB7CisgICAgICAgIHwgbm9kZSB8Cisg
ICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24gYW5kIG5vZGUub3Bjb2RlID09ICJibXVs
aW8iCisgICAgICAgICAgICB0bXAxID0gVG1wLm5ldyhub2RlLmNvZGVPcmlnaW4sIDpncHIpCisg
ICAgICAgICAgICB0bXAyID0gVG1wLm5ldyhub2RlLmNvZGVPcmlnaW4sIDpncHIpCisgICAgICAg
ICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJzbXVsbGki
LCBbbm9kZS5vcGVyYW5kc1swXSwgbm9kZS5vcGVyYW5kc1sxXSwgbm9kZS5vcGVyYW5kc1sxXV0p
CisgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4s
ICJyc2hpZnRwIiwgW25vZGUub3BlcmFuZHNbMV0sIEltbWVkaWF0ZS5uZXcobm9kZS5jb2RlT3Jp
Z2luLCAzMiksIHRtcDFdKQorICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXco
bm9kZS5jb2RlT3JpZ2luLCAicnNoaWZ0aSIsIFtub2RlLm9wZXJhbmRzWzFdLCBJbW1lZGlhdGUu
bmV3KG5vZGUuY29kZU9yaWdpbiwgMzEpLCB0bXAyXSkKKyAgICAgICAgICAgIG5ld0xpc3QgPDwg
SW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgInp4aTJwIiwgW25vZGUub3BlcmFuZHNb
MV0sIG5vZGUub3BlcmFuZHNbMV1dKQorICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcobm9kZS5jb2RlT3JpZ2luLCAiYmluZXEiLCBbdG1wMSwgdG1wMiwgbm9kZS5vcGVyYW5k
c1syXV0pCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAg
ICBlbmQKKyAgICB9CisgICAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgdGVzdCBp
bnN0cnVjdGlvbnMuIEZvciBleGFtcGxlOgorIworIyBidGl6IHQwLCB0MSwgLmZvbworIworIyBi
ZWNvbWVzOgorIworIyBhbmRpIHQwLCB0MSwgdG1wCisjIGJpZXEgdG1wLCAwLCAuZm9vCisjCisj
IGFuZCBhbm90aGVyIGV4YW1wbGU6CisjCisjIHRpeiB0MCwgdDEsIHQyCisjCisjIGJlY29tZXM6
CisjCisjIGFuZGkgdDAsIHQxLCB0bXAKKyMgY2llcSB0bXAsIDAsIHQyCisjCisKK2RlZiByaXNj
TG93ZXJUZXN0KGxpc3QpCisgICAgZGVmIGVtaXQobmV3TGlzdCwgYW5kT3Bjb2RlLCBicmFuY2hP
cGNvZGUsIG5vZGUpCisgICAgICAgIGlmIG5vZGUub3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAg
ICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIGJyYW5jaE9w
Y29kZSwgW25vZGUub3BlcmFuZHNbMF0sIEltbWVkaWF0ZS5uZXcobm9kZS5jb2RlT3JpZ2luLCAw
KSwgbm9kZS5vcGVyYW5kc1sxXV0pCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZW5kCisK
KyAgICAgICAgcmFpc2UgIkluY29ycmVjdCBudW1iZXIgb2Ygb3BlcmFuZHMgYXQgI3tjb2RlT3Jp
Z2luU3RyaW5nfSIgdW5sZXNzIG5vZGUub3BlcmFuZHMuc2l6ZSA9PSAzCisKKyAgICAgICAgaWYg
bm9kZS5vcGVyYW5kc1swXS5pbW1lZGlhdGU/IGFuZCBub2RlLm9wZXJhbmRzWzBdLnZhbHVlID09
IC0xCisgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmln
aW4sIGJyYW5jaE9wY29kZSwgW25vZGUub3BlcmFuZHNbMV0sIEltbWVkaWF0ZS5uZXcobm9kZS5j
b2RlT3JpZ2luLCAwKSwgbm9kZS5vcGVyYW5kc1syXV0pCisgICAgICAgICAgICByZXR1cm4KKyAg
ICAgICAgZW5kCisKKyAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1sxXS5pbW1lZGlhdGU/IGFuZCBu
b2RlLm9wZXJhbmRzWzFdLnZhbHVlID09IC0xCisgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3Ry
dWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIGJyYW5jaE9wY29kZSwgW25vZGUub3BlcmFuZHNb
MF0sIEltbWVkaWF0ZS5uZXcobm9kZS5jb2RlT3JpZ2luLCAwKSwgbm9kZS5vcGVyYW5kc1syXV0p
CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZW5kCisgICAgICAgIAorICAgICAgICB0bXAg
PSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0
cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBhbmRPcGNvZGUsIFtub2RlLm9wZXJhbmRzWzBd
LCBub2RlLm9wZXJhbmRzWzFdLCB0bXBdKQorICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9u
Lm5ldyhub2RlLmNvZGVPcmlnaW4sIGJyYW5jaE9wY29kZSwgW3RtcCwgSW1tZWRpYXRlLm5ldyhu
b2RlLmNvZGVPcmlnaW4sIDApLCBub2RlLm9wZXJhbmRzWzJdXSkKKyAgICBlbmQKKworICAgIG5l
d0xpc3QgPSBbXQorICAgIGxpc3QuZWFjaCB7CisgICAgICAgIHwgbm9kZSB8CisgICAgICAgIGlm
IG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAg
ICAgICAgICAgIHdoZW4gImJ0aXMiCisgICAgICAgICAgICAgICAgZW1pdChuZXdMaXN0LCAiYW5k
aSIsICJiaWx0Iiwgbm9kZSkKKyAgICAgICAgICAgIHdoZW4gImJ0aXoiCisgICAgICAgICAgICAg
ICAgZW1pdChuZXdMaXN0LCAiYW5kaSIsICJiaWVxIiwgbm9kZSkKKyAgICAgICAgICAgIHdoZW4g
ImJ0aW56IgorICAgICAgICAgICAgICAgIGVtaXQobmV3TGlzdCwgImFuZGkiLCAiYmluZXEiLCBu
b2RlKQorICAgICAgICAgICAgd2hlbiAiYnRwcyIKKyAgICAgICAgICAgICAgICBlbWl0KG5ld0xp
c3QsICJhbmRwIiwgImJwbHQiLCBub2RlKQorICAgICAgICAgICAgd2hlbiAiYnRweiIKKyAgICAg
ICAgICAgICAgICBlbWl0KG5ld0xpc3QsICJhbmRwIiwgImJwZXEiLCBub2RlKQorICAgICAgICAg
ICAgd2hlbiAiYnRwbnoiCisgICAgICAgICAgICAgICAgZW1pdChuZXdMaXN0LCAiYW5kcCIsICJi
cG5lcSIsIG5vZGUpCisgICAgICAgICAgICB3aGVuICJidHFzIgorICAgICAgICAgICAgICAgIGVt
aXQobmV3TGlzdCwgImFuZHEiLCAiYnFsdCIsIG5vZGUpCisgICAgICAgICAgICB3aGVuICJidHF6
IgorICAgICAgICAgICAgICAgIGVtaXQobmV3TGlzdCwgImFuZHEiLCAiYnFlcSIsIG5vZGUpCisg
ICAgICAgICAgICB3aGVuICJidHFueiIKKyAgICAgICAgICAgICAgICBlbWl0KG5ld0xpc3QsICJh
bmRxIiwgImJxbmVxIiwgbm9kZSkKKyAgICAgICAgICAgIHdoZW4gImJ0YnMiCisgICAgICAgICAg
ICAgICAgZW1pdChuZXdMaXN0LCAiYW5kaSIsICJiYmx0Iiwgbm9kZSkKKyAgICAgICAgICAgIHdo
ZW4gImJ0YnoiCisgICAgICAgICAgICAgICAgZW1pdChuZXdMaXN0LCAiYW5kaSIsICJiYmVxIiwg
bm9kZSkKKyAgICAgICAgICAgIHdoZW4gImJ0Ym56IgorICAgICAgICAgICAgICAgIGVtaXQobmV3
TGlzdCwgImFuZGkiLCAiYmJuZXEiLCBub2RlKQorICAgICAgICAgICAgd2hlbiAidGlzIgorICAg
ICAgICAgICAgICAgIGVtaXQobmV3TGlzdCwgImFuZGkiLCAiY2lsdCIsIG5vZGUpCisgICAgICAg
ICAgICB3aGVuICJ0aXoiCisgICAgICAgICAgICAgICAgZW1pdChuZXdMaXN0LCAiYW5kaSIsICJj
aWVxIiwgbm9kZSkKKyAgICAgICAgICAgIHdoZW4gInRpbnoiCisgICAgICAgICAgICAgICAgZW1p
dChuZXdMaXN0LCAiYW5kaSIsICJjaW5lcSIsIG5vZGUpCisgICAgICAgICAgICB3aGVuICJ0cHMi
CisgICAgICAgICAgICAgICAgZW1pdChuZXdMaXN0LCAiYW5kcCIsICJjcGx0Iiwgbm9kZSkKKyAg
ICAgICAgICAgIHdoZW4gInRweiIKKyAgICAgICAgICAgICAgICBlbWl0KG5ld0xpc3QsICJhbmRw
IiwgImNwZXEiLCBub2RlKQorICAgICAgICAgICAgd2hlbiAidHBueiIKKyAgICAgICAgICAgICAg
ICBlbWl0KG5ld0xpc3QsICJhbmRwIiwgImNwbmVxIiwgbm9kZSkKKyAgICAgICAgICAgIHdoZW4g
InRxcyIKKyAgICAgICAgICAgICAgICBlbWl0KG5ld0xpc3QsICJhbmRxIiwgImNxbHQiLCBub2Rl
KQorICAgICAgICAgICAgd2hlbiAidHF6IgorICAgICAgICAgICAgICAgIGVtaXQobmV3TGlzdCwg
ImFuZHEiLCAiY3FlcSIsIG5vZGUpCisgICAgICAgICAgICB3aGVuICJ0cW56IgorICAgICAgICAg
ICAgICAgIGVtaXQobmV3TGlzdCwgImFuZHEiLCAiY3FuZXEiLCBub2RlKQorICAgICAgICAgICAg
d2hlbiAidGJzIgorICAgICAgICAgICAgICAgIGVtaXQobmV3TGlzdCwgImFuZGkiLCAiY2JsdCIs
IG5vZGUpCisgICAgICAgICAgICB3aGVuICJ0YnoiCisgICAgICAgICAgICAgICAgZW1pdChuZXdM
aXN0LCAiYW5kaSIsICJjYmVxIiwgbm9kZSkKKyAgICAgICAgICAgIHdoZW4gInRibnoiCisgICAg
ICAgICAgICAgICAgZW1pdChuZXdMaXN0LCAiYW5kaSIsICJjYm5lcSIsIG5vZGUpCisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICAgICAgICBl
bmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICAgIGVu
ZAorICAgIH0KKyAgICByZXR1cm4gbmV3TGlzdAorZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIKaW5kZXggYzgzODYyOS4uMzAyOTcxZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgpAQCAtNDA0LDYg
KzQwNCwxNyBAQCBlbmQKIGNsYXNzIFNlcXVlbmNlCiAgICAgZGVmIHZhbGlkYXRlCiAgICAgICAg
IHZhbGlkYXRlQ2hpbGRyZW4KKyAgICAgICAgCisgICAgICAgICMgRnVydGhlciB2ZXJpZnkgdGhh
dCB0aGlzIGxpc3QgY29udGFpbnMgb25seSBpbnN0cnVjdGlvbnMsIGxhYmVscywgYW5kIHNraXBz
LgorICAgICAgICBAbGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHwgbm9kZSB8CisgICAgICAgICAg
ICB1bmxlc3Mgbm9kZS5pc19hPyBJbnN0cnVjdGlvbiBvcgorICAgICAgICAgICAgICAgICAgICBu
b2RlLmlzX2E/IExhYmVsIG9yCisgICAgICAgICAgICAgICAgICAgIG5vZGUuaXNfYT8gTG9jYWxM
YWJlbCBvcgorICAgICAgICAgICAgICAgICAgICBub2RlLmlzX2E/IFNraXAKKyAgICAgICAgICAg
ICAgICByYWlzZSAiVW5leHBlY3RlZCAje25vZGUuaW5zcGVjdH0gYXQgI3tub2RlLmNvZGVPcmln
aW59IiAKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CiAgICAgZW5kCiBlbmQKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCmluZGV4IDRlMjAxNWIuLjRkMzkzZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKQEAgLTQ2LDcgKzQ2LDcgQEAg
ZGVmIHVzZVg4NwogICAgIGVuZAogZW5kCiAKLWNsYXNzIFNwZWNpYWxSZWdpc3RlciA8IE5vQ2hp
bGRyZW4KK2NsYXNzIFNwZWNpYWxSZWdpc3RlcgogICAgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCiAg
ICAgICAgIHJhaXNlIHVubGVzcyBAbmFtZSA9fiAvXnIvCiAgICAgICAgIHJhaXNlIHVubGVzcyBp
c1g2NAotLSAKMS44LjMuNCAoQXBwbGUgR2l0LTQ3KQoK
</data>
<flag name="commit-queue"
          id="236735"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214210</attachid>
            <date>2013-10-14 17:41:26 -0700</date>
            <delta_ts>2013-10-15 11:20:13 -0700</delta_ts>
            <desc>Offlineasm changes</desc>
            <filename>0006-Changes-to-offlineasm-2.patch</filename>
            <type>text/plain</type>
            <size>42704</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSA4MzI1YjY4NzVjZjkyZGU5NGYxYmVmMzNkN2EyYzNlYTViYjEzMDA5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRiYXRlc0B3ZWJraXQub3JnPgpEYXRl
OiBGcmksIDExIE9jdCAyMDEzIDE3OjM0OjE3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQ2hhbmdl
cyB0byBvZmZsaW5lYXNtCgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Fy
bS5yYiAgICAgICAgICB8ICAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YXJtNjQucmIgICAgICAgIHwgNzkxICsrKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYiAgICAgfCAgIDMgKwogU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiIHwgIDEzICstCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yaXNjLnJiICAgICAgICAgfCAxODAgKysrKystCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIgICAgfCAgMTEgKwog
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiICAgICAgICAgIHwgICAyICst
CiA3IGZpbGVzIGNoYW5nZWQsIDk5MiBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5y
YgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybS5yYiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybS5yYgppbmRleCA0OTgzMzNiLi4z
YzY5ZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm0u
cmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtLnJiCkBAIC0yMTcs
NyArMjE3LDcgQEAgY2xhc3MgU2VxdWVuY2UKICAgICAgICAgICAgIGVuZAogICAgICAgICB9CiAg
ICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc0RvdWJsZShyZXN1bHQp
Ci0gICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlck1pc3BsYWNlZEltbWVkaWF0ZXMocmVzdWx0LCBb
InN0b3JlYiIsICJzdG9yZWkiLCAic3RvcmVwIl0pCisgICAgICAgIHJlc3VsdCA9IHJpc2NMb3dl
ck1pc3BsYWNlZEltbWVkaWF0ZXMocmVzdWx0LCBbInN0b3JlYiIsICJzdG9yZWkiLCAic3RvcmVw
IiwgInN0b3JlcSJdKQogICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJNYWxmb3JtZWRJbW1lZGlh
dGVzKHJlc3VsdCwgMC4uMHhmZikKICAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyTWlzcGxhY2Vk
QWRkcmVzc2VzKHJlc3VsdCkKICAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyUmVnaXN0ZXJSZXVz
ZShyZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
cm02NC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmYzFkM2UKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgpAQCAtMCwwICsxLDc5
MSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisj
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWly
ZSAiYXN0IgorcmVxdWlyZSAib3B0IgorcmVxdWlyZSAicmlzYyIKKworIyBOYW1pbmcgY29udmVu
dGlvbnM6CisjCisjIHg8bnVtYmVyPiAgPT4gR1BSLiBUaGlzIGlzIGJvdGggdGhlIGdlbmVyaWMg
bmFtZSBvZiB0aGUgcmVnaXN0ZXIsIGFuZCB0aGUgbmFtZSB1c2VkCisjICAgICAgICAgICAgICAg
dG8gaW5kaWNhdGUgdGhhdCB0aGUgcmVnaXN0ZXIgaXMgdXNlZCBpbiA2NC1iaXQgbW9kZS4KKyMg
dzxudW1iZXI+ICA9PiBHUFIgaW4gMzItYml0IG1vZGUuIFRoaXMgaXMgdGhlIGxvdyAzMi1iaXRz
IG9mIHRoZSBHUFIuIElmIGl0IGlzCisjICAgICAgICAgICAgICAgbXV0YXRlZCB0aGVuIHRoZSBo
aWdoIDMyLWJpdCBwYXJ0IG9mIHRoZSByZWdpc3RlciBpcyB6ZXJvIGZpbGxlZC4KKyMgcTxudW1i
ZXI+ICA9PiBGUFIuIFRoaXMgaXMgdGhlIGdlbmVyaWMgbmFtZSBvZiB0aGUgcmVnaXN0ZXIuCisj
IGQ8bnVtYmVyPiAgPT4gRlBSIHVzZWQgYXMgYW4gSUVFRSA2NC1iaXQgYmluYXJ5IGZsb2F0aW5n
IHBvaW50IG51bWJlciAoaS5lLiBkb3VibGUpLgorIworIyBHUFIgY29udmVudGlvbnMsIHRvIG1h
dGNoIHRoZSBiYXNlbGluZSBKSVQ6CisjCisjICB4MCAgPT4gcmV0dXJuIHZhbHVlLCBjYWNoZWQg
cmVzdWx0LCBmaXJzdCBhcmd1bWVudCwgdDAsIGEwLCByMAorIyAgeDEgID0+IHQxLCBhMSwgcjEK
KyMgIHgyICA9PiB0MgorIyAgeDkgID0+IChub25BcmdHUFIxIGluIGJhc2VsaW5lKQorIyB4MTAg
ID0+IHQ0ICh1bnVzZWQgaW4gYmFzZWxpbmUpCisjIHgxMSAgPT4gdDUgKHVudXNlZCBpbiBiYXNl
bGluZSkKKyMgeDEyICA9PiB0NiAodW51c2VkIGluIGJhc2VsaW5lKQorIyB4MTMgID0+IHNjcmF0
Y2ggKHVudXNlZCBpbiBiYXNlbGluZSkKKyMgeDE2ICA9PiBzY3JhdGNoCisjIHgxNyAgPT4gc2Ny
YXRjaAorIyB4MjMgID0+IHQzCisjIHgyNSAgPT4gY2ZyCisjIHgyNiAgPT4gdGltZW91dCBjaGVj
ayAoaS5lLiBub3QgdG91Y2hlZCBieSBMTEludCkKKyMgeDI3ICA9PiBjc3IxICh0YWdUeXBlTnVt
YmVyKQorIyB4MjggID0+IGNzcjIgKHRhZ01hc2spCisjICBzcCAgPT4gc3AKKyMgIGxyICA9PiBs
cgorIworIyBGUFIgY29uZW50aW9ucywgdG8gbWF0Y2ggdGhlIGJhc2VsaW5lIEpJVDoKKyMKKyMg
IHEwICA9PiBmdDAKKyMgIHExICA9PiBmdDEKKyMgIHEyICA9PiBmdDIKKyMgIHEzICA9PiBmdDMK
KyMgIHE0ICA9PiBmdDQgKHVudXNlZCBpbiBiYXNlbGluZSkKKyMgIHE1ICA9PiBmdDUgKHVudXNl
ZCBpbiBiYXNlbGluZSkKKyMgcTMxICA9PiBzY3JhdGNoCisKK2RlZiBhcm02NEdQUk5hbWUobmFt
ZSwga2luZCkKKyAgICByYWlzZSAiYmFkIEdQUiBuYW1lICN7bmFtZX0iIHVubGVzcyBuYW1lID1+
IC9eeC8KKyAgICBudW1iZXIgPSBuYW1lWzEuLi0xXQorICAgIGNhc2Uga2luZAorICAgIHdoZW4g
OmludAorICAgICAgICAidyIgKyBudW1iZXIKKyAgICB3aGVuIDpwdHIKKyAgICAgICAgIngiICsg
bnVtYmVyCisgICAgZWxzZQorICAgICAgICByYWlzZSAiV3Jvbmcga2luZDogI3traW5kfSIKKyAg
ICBlbmQKK2VuZAorCitkZWYgYXJtNjRGUFJOYW1lKG5hbWUsIGtpbmQpCisgICAgcmFpc2UgImJh
ZCBGUFIga2luZCAje2tpbmR9IiB1bmxlc3Mga2luZCA9PSA6ZG91YmxlCisgICAgcmFpc2UgImJh
ZCBGUFIgbmFtZSAje25hbWV9IiB1bmxlc3MgbmFtZSA9fiAvXnEvCisgICAgImQiICsgbmFtZVsx
Li4tMV0KK2VuZAorCitjbGFzcyBTcGVjaWFsUmVnaXN0ZXIKKyAgICBkZWYgYXJtNjRPcGVyYW5k
KGtpbmQpCisgICAgICAgIGNhc2UgQG5hbWUKKyAgICAgICAgd2hlbiAvXngvCisgICAgICAgICAg
ICBhcm02NEdQUk5hbWUoQG5hbWUsIGtpbmQpCisgICAgICAgIHdoZW4gL15xLworICAgICAgICAg
ICAgYXJtNjRGUFJOYW1lKEBuYW1lLCBraW5kKQorICAgICAgICBlbHNlCisgICAgICAgICAgICBy
YWlzZSAiQmFkIG5hbWU6ICN7QG5hbWV9IgorICAgICAgICBlbmQKKyAgICBlbmQKK2VuZAorCitB
Uk02NF9FWFRSQV9HUFJTID0gW1NwZWNpYWxSZWdpc3Rlci5uZXcoIngxNiIpLCBTcGVjaWFsUmVn
aXN0ZXIubmV3KCJ4MTciKSwgU3BlY2lhbFJlZ2lzdGVyLm5ldygieDEzIildCitBUk02NF9FWFRS
QV9GUFJTID0gW1NwZWNpYWxSZWdpc3Rlci5uZXcoInEzMSIpXQorCitjbGFzcyBSZWdpc3RlcklE
CisgICAgZGVmIGFybTY0T3BlcmFuZChraW5kKQorICAgICAgICBjYXNlIEBuYW1lCisgICAgICAg
IHdoZW4gJ3QwJywgJ2EwJywgJ3IwJworICAgICAgICAgICAgYXJtNjRHUFJOYW1lKCd4MCcsIGtp
bmQpCisgICAgICAgIHdoZW4gJ3QxJywgJ2ExJywgJ3IxJworICAgICAgICAgICAgYXJtNjRHUFJO
YW1lKCd4MScsIGtpbmQpCisgICAgICAgIHdoZW4gJ3QyJworICAgICAgICAgICAgYXJtNjRHUFJO
YW1lKCd4MicsIGtpbmQpCisgICAgICAgIHdoZW4gJ3QzJworICAgICAgICAgICAgYXJtNjRHUFJO
YW1lKCd4MjMnLCBraW5kKQorICAgICAgICB3aGVuICd0NCcKKyAgICAgICAgICAgIGFybTY0R1BS
TmFtZSgneDEwJywga2luZCkKKyAgICAgICAgd2hlbiAndDUnCisgICAgICAgICAgICBhcm02NEdQ
Uk5hbWUoJ3gxMScsIGtpbmQpCisgICAgICAgIHdoZW4gJ3Q2JworICAgICAgICAgICAgYXJtNjRH
UFJOYW1lKCd4MTInLCBraW5kKQorICAgICAgICB3aGVuICdjZnInCisgICAgICAgICAgICBhcm02
NEdQUk5hbWUoJ3gyNScsIGtpbmQpCisgICAgICAgIHdoZW4gJ2NzcjEnCisgICAgICAgICAgICBh
cm02NEdQUk5hbWUoJ3gyNycsIGtpbmQpCisgICAgICAgIHdoZW4gJ2NzcjInCisgICAgICAgICAg
ICBhcm02NEdQUk5hbWUoJ3gyOCcsIGtpbmQpCisgICAgICAgIHdoZW4gJ3NwJworICAgICAgICAg
ICAgJ3NwJworICAgICAgICB3aGVuICdscicKKyAgICAgICAgICAgICdscicKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcmFpc2UgIkJhZCByZWdpc3RlciBuYW1lICN7QG5hbWV9IGF0ICN7Y29k
ZU9yaWdpblN0cmluZ30iCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVn
aXN0ZXJJRAorICAgIGRlZiBhcm02NE9wZXJhbmQoa2luZCkKKyAgICAgICAgY2FzZSBAbmFtZQor
ICAgICAgICB3aGVuICdmdDAnCisgICAgICAgICAgICBhcm02NEZQUk5hbWUoJ3EwJywga2luZCkK
KyAgICAgICAgd2hlbiAnZnQxJworICAgICAgICAgICAgYXJtNjRGUFJOYW1lKCdxMScsIGtpbmQp
CisgICAgICAgIHdoZW4gJ2Z0MicKKyAgICAgICAgICAgIGFybTY0RlBSTmFtZSgncTInLCBraW5k
KQorICAgICAgICB3aGVuICdmdDMnCisgICAgICAgICAgICBhcm02NEZQUk5hbWUoJ3EzJywga2lu
ZCkKKyAgICAgICAgd2hlbiAnZnQ0JworICAgICAgICAgICAgYXJtNjRGUFJOYW1lKCdxNCcsIGtp
bmQpCisgICAgICAgIHdoZW4gJ2Z0NScKKyAgICAgICAgICAgIGFybTY0RlBSTmFtZSgncTUnLCBr
aW5kKQorICAgICAgICBlbHNlICJCYWQgcmVnaXN0ZXIgbmFtZSAje0BuYW1lfSBhdCAje2NvZGVP
cmlnaW5TdHJpbmd9IgorICAgICAgICBlbmQKKyAgICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlh
dGUKKyAgICBkZWYgYXJtNjRPcGVyYW5kKGtpbmQpCisgICAgICAgIHJhaXNlICJJbnZhbGlkIGlt
bWVkaWF0ZSAje3ZhbHVlfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiBpZiB2YWx1ZSA8IDAgb3Ig
dmFsdWUgPiA0MDk1CisgICAgICAgICJcIyN7dmFsdWV9IgorICAgIGVuZAorZW5kCisKK2NsYXNz
IEFkZHJlc3MKKyAgICBkZWYgYXJtNjRPcGVyYW5kKGtpbmQpCisgICAgICAgIHJhaXNlICJJbnZh
bGlkIG9mZnNldCAje29mZnNldC52YWx1ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgaWYgb2Zm
c2V0LnZhbHVlIDwgLTI1NSBvciBvZmZzZXQudmFsdWUgPiA0MDk1CisgICAgICAgICJbI3tiYXNl
LmFybTY0T3BlcmFuZCg6cHRyKX0sIFwjI3tvZmZzZXQudmFsdWV9XSIKKyAgICBlbmQKKyAgICAK
KyAgICBkZWYgYXJtNjRFbWl0TGVhKGRlc3RpbmF0aW9uLCBraW5kKQorICAgICAgICAkYXNtLnB1
dHMgImFkZCAje2Rlc3RpbmF0aW9uLmFybTY0T3BlcmFuZChraW5kKX0sICN7YmFzZS5hcm02NE9w
ZXJhbmQoa2luZCl9LCBcIyN7b2Zmc2V0LnZhbHVlfSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBC
YXNlSW5kZXgKKyAgICBkZWYgYXJtNjRPcGVyYW5kKGtpbmQpCisgICAgICAgIHJhaXNlICJJbnZh
bGlkIG9mZnNldCAje29mZnNldC52YWx1ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgaWYgb2Zm
c2V0LnZhbHVlICE9IDAKKyAgICAgICAgIlsje2Jhc2UuYXJtNjRPcGVyYW5kKDpwdHIpfSwgI3tp
bmRleC5hcm02NE9wZXJhbmQoOnB0cil9LCBsc2wgXCMje3NjYWxlU2hpZnR9XSIKKyAgICBlbmQK
KworICAgIGRlZiBhcm02NEVtaXRMZWEoZGVzdGluYXRpb24sIGtpbmQpCisgICAgICAgICRhc20u
cHV0cyAiYWRkICN7ZGVzdGluYXRpb24uYXJtNjRPcGVyYW5kKGtpbmQpfSwgI3tiYXNlLmFybTY0
T3BlcmFuZChraW5kKX0sICN7aW5kZXguYXJtNjRPcGVyYW5kKGtpbmQpfSwgbHNsIFwjI3tzY2Fs
ZVNoaWZ0fSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgICBkZWYg
YXJtNjRPcGVyYW5kKGtpbmQpCisgICAgICAgIHJhaXNlICJVbmNvbnZlcnRlZCBhYnNvbHV0ZSBh
ZGRyZXNzICN7YWRkcmVzcy52YWx1ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICBlbmQK
K2VuZAorCisjIEZJWE1FOiB3ZSBjb3VsZCBzdXBwb3J0IEFic29sdXRlQWRkcmVzcyBmb3IgbGVh
LCBidXQgd2UgZG9uJ3QuCisKKyMKKyMgQWN0dWFsIGxvd2VyaW5nIGNvZGUgZm9sbG93cy4KKyMK
KworY2xhc3MgU2VxdWVuY2UKKyAgICBkZWYgZ2V0TW9kaWZpZWRMaXN0QVJNNjQKKyAgICAgICAg
cmVzdWx0ID0gQGxpc3QKKyAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyTm90KHJlc3VsdCkKKyAg
ICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyU2ltcGxlQnJhbmNoT3BzKHJlc3VsdCkKKyAgICAgICAg
cmVzdWx0ID0gcmlzY0xvd2VySGFyZEJyYW5jaE9wczY0KHJlc3VsdCkKKyAgICAgICAgcmVzdWx0
ID0gcmlzY0xvd2VyU2hpZnRPcHMocmVzdWx0KQorICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJN
YWxmb3JtZWRBZGRyZXNzZXMocmVzdWx0KSB7CisgICAgICAgICAgICB8IG5vZGUsIGFkZHJlc3Mg
fAorICAgICAgICAgICAgY2FzZSBub2RlLm9wY29kZQorICAgICAgICAgICAgd2hlbiAibG9hZGIi
LCAibG9hZGJzIiwgInN0b3JlYiIsIC9eYmIvLCAvXmJ0Yi8sIC9eY2IvLCAvXnRiLworICAgICAg
ICAgICAgICAgIHNpemUgPSAxCisgICAgICAgICAgICB3aGVuICJsb2FkaCIsICJsb2FkaHMiCisg
ICAgICAgICAgICAgICAgc2l6ZSA9IDIKKyAgICAgICAgICAgIHdoZW4gImxvYWRpIiwgImxvYWRp
cyIsICJzdG9yZWkiLCAiYWRkaSIsICJhbmRpIiwgImxzaGlmdGkiLCAibXVsaSIsICJuZWdpIiwK
KyAgICAgICAgICAgICAgICAibm90aSIsICJvcmkiLCAicnNoaWZ0aSIsICJ1cnNoaWZ0aSIsICJz
dWJpIiwgInhvcmkiLCAvXmJpLywgL15idGkvLAorICAgICAgICAgICAgICAgIC9eY2kvLCAvXnRp
LywgImFkZGlzIiwgInN1YmlzIiwgIm11bGlzIiwgInNtdWxsaSIsICJsZWFpIgorICAgICAgICAg
ICAgICAgIHNpemUgPSA0CisgICAgICAgICAgICB3aGVuICJsb2FkcCIsICJzdG9yZXAiLCAibG9h
ZHEiLCAic3RvcmVxIiwgImxvYWRkIiwgInN0b3JlZCIsICJsc2hpZnRwIiwgImxzaGlmdHEiLCAi
bmVncCIsICJuZWdxIiwgInJzaGlmdHAiLCAicnNoaWZ0cSIsCisgICAgICAgICAgICAgICAgInVy
c2hpZnRwIiwgInVyc2hpZnRxIiwgImFkZHAiLCAiYWRkcSIsICJtdWxwIiwgIm11bHEiLCAiYW5k
cCIsICJhbmRxIiwgIm9ycCIsICJvcnEiLCAic3VicCIsICJzdWJxIiwgInhvcnAiLCAieG9ycSIs
ICJhZGRkIiwKKyAgICAgICAgICAgICAgICAiZGl2ZCIsICJzdWJkIiwgIm11bGQiLCAic3FydGQi
LCAvXmJwLywgL15icS8sIC9eYnRwLywgL15idHEvLCAvXmNwLywgL15jcS8sIC9edHAvLCAvXnRx
LywgL15iZC8sCisgICAgICAgICAgICAgICAgImptcCIsICJjYWxsIiwgImxlYXAiLCAibGVhcSIK
KyAgICAgICAgICAgICAgICBzaXplID0gOAorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHJhaXNlICJCYWQgaW5zdHJ1Y3Rpb24gI3tub2RlLm9wY29kZX0gZm9yIGhlYXAgYWNjZXNz
IGF0ICN7bm9kZS5jb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICAg
ICAgCisgICAgICAgICAgICBpZiBhZGRyZXNzLmlzX2E/IEJhc2VJbmRleAorICAgICAgICAgICAg
ICAgIGFkZHJlc3Mub2Zmc2V0LnZhbHVlID09IDAgYW5kCisgICAgICAgICAgICAgICAgICAgIChu
b2RlLm9wY29kZSA9fiAvXmxlYS8gb3IgYWRkcmVzcy5zY2FsZSA9PSAxIG9yIGFkZHJlc3Muc2Nh
bGUgPT0gc2l6ZSkKKyAgICAgICAgICAgIGVsc2lmIGFkZHJlc3MuaXNfYT8gQWRkcmVzcworICAg
ICAgICAgICAgICAgICgtMjU1Li40MDk1KS5pbmNsdWRlPyBhZGRyZXNzLm9mZnNldC52YWx1ZQor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZhbHNlCisgICAgICAgICAgICBlbmQK
KyAgICAgICAgfQorICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJNaXNwbGFjZWRJbW1lZGlhdGVz
KHJlc3VsdCwgWyJzdG9yZWIiLCAic3RvcmVpIiwgInN0b3JlcCIsICJzdG9yZXEiXSkKKyAgICAg
ICAgcmVzdWx0ID0gcmlzY0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlcyhyZXN1bHQsIDAuLjQwOTUp
CisgICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlck1pc3BsYWNlZEFkZHJlc3NlcyhyZXN1bHQpCisg
ICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlck1hbGZvcm1lZEFkZHJlc3NlcyhyZXN1bHQpIHsKKyAg
ICAgICAgICAgIHwgbm9kZSwgYWRkcmVzcyB8CisgICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2Rl
CisgICAgICAgICAgICB3aGVuIC9ebG9hZC8KKyAgICAgICAgICAgICAgICB0cnVlCisgICAgICAg
ICAgICB3aGVuIC9ec3RvcmUvCisgICAgICAgICAgICAgICAgbm90IChhZGRyZXNzLmlzX2E/IEFk
ZHJlc3MgYW5kIGFkZHJlc3Mub2Zmc2V0LnZhbHVlIDwgMCkKKyAgICAgICAgICAgIHdoZW4gL15s
ZWEvCisgICAgICAgICAgICAgICAgdHJ1ZQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHJhaXNlICJCYWQgaW5zdHJ1Y3Rpb24gI3tub2RlLm9wY29kZX0gZm9yIGhlYXAgYWNjZXNz
IGF0ICN7bm9kZS5jb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9
CisgICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlclRlc3QocmVzdWx0KQorICAgICAgICByZXN1bHQg
PSBhc3NpZ25SZWdpc3RlcnNUb1RlbXBvcmFyaWVzKHJlc3VsdCwgOmdwciwgQVJNNjRfRVhUUkFf
R1BSUykKKyAgICAgICAgcmVzdWx0ID0gYXNzaWduUmVnaXN0ZXJzVG9UZW1wb3JhcmllcyhyZXN1
bHQsIDpmcHIsIEFSTTY0X0VYVFJBX0ZQUlMpCisgICAgICAgIHJldHVybiByZXN1bHQKKyAgICBl
bmQKK2VuZAorCitkZWYgYXJtNjRPcGVyYW5kcyhvcGVyYW5kcywga2luZHMpCisgICAgaWYga2lu
ZHMuaXNfYT8gQXJyYXkKKyAgICAgICAgcmFpc2UgIk1pc21hdGNoZWQgb3BlcmFuZCBsaXN0czog
I3tvcGVyYW5kcy5pbnNwZWN0fSBhbmQgI3traW5kcy5pbnNwZWN0fSIgaWYgb3BlcmFuZHMuc2l6
ZSAhPSBraW5kcy5zaXplCisgICAgZWxzZQorICAgICAgICBraW5kcyA9IG9wZXJhbmRzLm1hcHsg
a2luZHMgfQorICAgIGVuZAorICAgICgwLi4ub3BlcmFuZHMuc2l6ZSkubWFwIHsKKyAgICAgICAg
fCBpbmRleCB8CisgICAgICAgIG9wZXJhbmRzW2luZGV4XS5hcm02NE9wZXJhbmQoa2luZHNbaW5k
ZXhdKQorICAgIH0uam9pbignLCAnKQorZW5kCisKK2RlZiBhcm02NEZsaXBwZWRPcGVyYW5kcyhv
cGVyYW5kcywga2luZHMpCisgICAgaWYga2luZHMuaXNfYT8gQXJyYXkKKyAgICAgICAga2luZHMg
PSBba2luZHNbLTFdXSArIGtpbmRzWzAuLi0yXQorICAgIGVuZAorICAgIGFybTY0T3BlcmFuZHMo
W29wZXJhbmRzWy0xXV0gKyBvcGVyYW5kc1swLi4tMl0sIGtpbmRzKQorZW5kCisKKyMgVEFDID0g
dGhyZWUgYWRkcmVzcyBjb2RlLgorZGVmIGFybTY0VEFDT3BlcmFuZHMob3BlcmFuZHMsIGtpbmQp
CisgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzCisgICAgICAgIHJldHVybiBhcm02NEZsaXBwZWRP
cGVyYW5kcyhvcGVyYW5kcywga2luZCkKKyAgICBlbmQKKyAgICAKKyAgICByYWlzZSB1bmxlc3Mg
b3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgCisgICAgcmV0dXJuIG9wZXJhbmRzWzFdLmFybTY0T3Bl
cmFuZChraW5kKSArICIsICIgKyBhcm02NEZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcywga2luZCkK
K2VuZAorCitkZWYgZW1pdEFSTTY0QWRkKG9wY29kZSwgb3BlcmFuZHMsIGtpbmQpCisgICAgaWYg
b3BlcmFuZHMuc2l6ZSA9PSAzCisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5yZWdp
c3Rlcj8KKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLnJlZ2lzdGVyPworICAgICAg
ICAKKyAgICAgICAgaWYgb3BlcmFuZHNbMF0uaW1tZWRpYXRlPworICAgICAgICAgICAgaWYgb3Bl
cmFuZHNbMF0udmFsdWUgPT0gMCBhbmQgZmxhZyAhfiAvcyQvCisgICAgICAgICAgICAgICAgdW5s
ZXNzIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAgICAgICAgICRhc20u
cHV0cyAibW92ICN7YXJtNjRGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHNbMS4uMl0sIGtpbmQpfSIK
KyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAk
YXNtLnB1dHMgIiN7b3Bjb2RlfSAje2FybTY0T3BlcmFuZHMob3BlcmFuZHMucmV2ZXJzZSwga2lu
ZCl9IgorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZW5kCisg
ICAgICAgIAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMF0ucmVnaXN0ZXI/CisgICAg
ICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7YXJtNjRGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMs
IGtpbmQpfSIKKyAgICAgICAgcmV0dXJuCisgICAgZW5kCisgICAgCisgICAgcmFpc2UgdW5sZXNz
IG9wZXJhbmRzLnNpemUgPT0gMgorICAgIAorICAgIGlmIG9wZXJhbmRzWzBdLmltbWVkaWF0ZT8g
YW5kIG9wZXJhbmRzWzBdLnZhbHVlID09IDAgYW5kIG9wY29kZSAhfiAvcyQvCisgICAgICAgIHJl
dHVybgorICAgIGVuZAorICAgIAorICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7YXJtNjRUQUNP
cGVyYW5kcyhvcGVyYW5kcywga2luZCl9IgorZW5kCisKK2RlZiBlbWl0QVJNNjRVbmZsaXBwZWQo
b3Bjb2RlLCBvcGVyYW5kcywga2luZCkKKyAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje2FybTY0
T3BlcmFuZHMob3BlcmFuZHMsIGtpbmQpfSIKK2VuZAorCitkZWYgZW1pdEFSTTY0VEFDKG9wY29k
ZSwgb3BlcmFuZHMsIGtpbmQpCisgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3thcm02NFRBQ09w
ZXJhbmRzKG9wZXJhbmRzLCBraW5kKX0iCitlbmQKKworZGVmIGVtaXRBUk02NChvcGNvZGUsIG9w
ZXJhbmRzLCBraW5kKQorICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7YXJtNjRGbGlwcGVkT3Bl
cmFuZHMob3BlcmFuZHMsIGtpbmQpfSIKK2VuZAorCitkZWYgZW1pdEFSTTY0QWNjZXNzKG9wY29k
ZSwgb3Bjb2RlTmVnYXRpdmVPZmZzZXQsIHJlZ2lzdGVyLCBtZW1vcnksIGtpbmQpCisgICAgaWYg
bWVtb3J5LmlzX2E/IEFkZHJlc3MgYW5kIG1lbW9yeS5vZmZzZXQudmFsdWUgPCAwCisgICAgICAg
ICRhc20ucHV0cyAiI3tvcGNvZGVOZWdhdGl2ZU9mZnNldH0gI3tyZWdpc3Rlci5hcm02NE9wZXJh
bmQoa2luZCl9LCAje21lbW9yeS5hcm02NE9wZXJhbmQoa2luZCl9IgorICAgICAgICByZXR1cm4K
KyAgICBlbmQKKyAgICAKKyAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje3JlZ2lzdGVyLmFybTY0
T3BlcmFuZChraW5kKX0sICN7bWVtb3J5LmFybTY0T3BlcmFuZChraW5kKX0iCitlbmQKKworZGVm
IGVtaXRBUk02NFNoaWZ0KG9wY29kZVJlZ3MsIG9wY29kZUltbWVkaWF0ZSwgb3BlcmFuZHMsIGtp
bmQpCisgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sxXS5pbW1lZGlhdGU/
CisgICAgICAgIG1hZ2ljTnVtYmVycyA9IHlpZWxkIG9wZXJhbmRzWzFdLnZhbHVlCisgICAgICAg
ICRhc20ucHV0cyAiI3tvcGNvZGVJbW1lZGlhdGV9ICN7b3BlcmFuZHNbMl0uYXJtNjRPcGVyYW5k
KGtpbmQpfSwgI3tvcGVyYW5kc1swXS5hcm02NE9wZXJhbmQoa2luZCl9LCBcIyN7bWFnaWNOdW1i
ZXJzWzBdfSwgXCMje21hZ2ljTnVtYmVyc1sxXX0iCisgICAgICAgIHJldHVybgorICAgIGVuZAor
ICAgIAorICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMiBhbmQgb3BlcmFuZHNbMF0uaW1tZWRpYXRl
PworICAgICAgICBtYWdpY051bWJlcnMgPSB5aWVsZCBvcGVyYW5kc1swXS52YWx1ZQorICAgICAg
ICAkYXNtLnB1dHMgIiN7b3Bjb2RlSW1tZWRpYXRlfSAje29wZXJhbmRzWzFdLmFybTY0T3BlcmFu
ZChraW5kKX0sICN7b3BlcmFuZHNbMV0uYXJtNjRPcGVyYW5kKGtpbmQpfSwgXCMje21hZ2ljTnVt
YmVyc1swXX0sIFwjI3ttYWdpY051bWJlcnNbMV19IgorICAgICAgICByZXR1cm4KKyAgICBlbmQK
KyAgICAKKyAgICBlbWl0QVJNNjRUQUMob3Bjb2RlUmVncywgb3BlcmFuZHMsIGtpbmQpCitlbmQK
KworZGVmIGVtaXRBUk02NEJyYW5jaChvcGNvZGUsIG9wZXJhbmRzLCBraW5kLCBicmFuY2hPcGNv
ZGUpCisgICAgZW1pdEFSTTY0VW5mbGlwcGVkKG9wY29kZSwgb3BlcmFuZHNbMC4uLTJdLCBraW5k
KQorICAgICRhc20ucHV0cyAiI3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbLTFdLmFzbUxhYmVs
fSIKK2VuZAorCitkZWYgZW1pdEFSTTY0Q29tcGFyZShvcGVyYW5kcywga2luZCwgY29tcGFyZUNv
ZGUpCisgICAgZW1pdEFSTTY0VW5mbGlwcGVkKCJzdWJzICN7YXJtNjRHUFJOYW1lKCd4enInLCBr
aW5kKX0sICIsIG9wZXJhbmRzWzAuLi0yXSwga2luZCkKKyAgICAkYXNtLnB1dHMgImNzaW5jICN7
b3BlcmFuZHNbLTFdLmFybTY0T3BlcmFuZCg6aW50KX0sIHd6ciwgd3pyLCAje2NvbXBhcmVDb2Rl
fSIKK2VuZAorCitkZWYgZW1pdEFSTTY0TW92ZUltbWVkaWF0ZSh2YWx1ZSwgdGFyZ2V0KQorICAg
IGZpcnN0ID0gdHJ1ZQorICAgIGlzTmVnYXRpdmUgPSB2YWx1ZSA8IDAKKyAgICBbNDgsIDMyLCAx
NiwgMF0uZWFjaCB7CisgICAgICAgIHwgc2hpZnQgfAorICAgICAgICBjdXJyZW50VmFsdWUgPSAo
dmFsdWUgPj4gc2hpZnQpICYgMHhmZmZmCisgICAgICAgIG5leHQgaWYgY3VycmVudFZhbHVlID09
IChpc05lZ2F0aXZlID8gMHhmZmZmIDogMCkgYW5kIHNoaWZ0ICE9IDAKKyAgICAgICAgaWYgZmly
c3QKKyAgICAgICAgICAgIGlmIGlzTmVnYXRpdmUKKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMg
Im1vdm4gI3t0YXJnZXQuYXJtNjRPcGVyYW5kKDpwdHIpfSwgXCMjeyh+Y3VycmVudFZhbHVlKSAm
IDB4ZmZmZn0sIGxzbCBcIyN7c2hpZnR9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICRhc20ucHV0cyAibW92eiAje3RhcmdldC5hcm02NE9wZXJhbmQoOnB0cil9LCBcIyN7Y3Vy
cmVudFZhbHVlfSwgbHNsIFwjI3tzaGlmdH0iCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAg
IGZpcnN0ID0gZmFsc2UKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3Zr
ICN7dGFyZ2V0LmFybTY0T3BlcmFuZCg6cHRyKX0sIFwjI3tjdXJyZW50VmFsdWV9LCBsc2wgXCMj
e3NoaWZ0fSIKKyAgICAgICAgZW5kCisgICAgfQorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uCisg
ICAgZGVmIGxvd2VyQVJNNjQKKyAgICAgICAgJGFzbS5jb21tZW50IGNvZGVPcmlnaW5TdHJpbmcK
KyAgICAgICAgJGFzbS5hbm5vdGF0aW9uIGFubm90YXRpb24gaWYgJGVuYWJsZUluc3RyQW5ub3Rh
dGlvbnMKKworICAgICAgICBjYXNlIG9wY29kZQorICAgICAgICB3aGVuICdhZGRpJworICAgICAg
ICAgICAgZW1pdEFSTTY0QWRkKCJhZGQiLCBvcGVyYW5kcywgOmludCkKKyAgICAgICAgd2hlbiAn
YWRkaXMnCisgICAgICAgICAgICBlbWl0QVJNNjRBZGQoImFkZHMiLCBvcGVyYW5kcywgOmludCkK
KyAgICAgICAgd2hlbiAnYWRkcCcKKyAgICAgICAgICAgIGVtaXRBUk02NEFkZCgiYWRkIiwgb3Bl
cmFuZHMsIDpwdHIpCisgICAgICAgIHdoZW4gJ2FkZHBzJworICAgICAgICAgICAgZW1pdEFSTTY0
QWRkKCJhZGRzIiwgb3BlcmFuZHMsIDpwdHIpCisgICAgICAgIHdoZW4gJ2FkZHEnCisgICAgICAg
ICAgICBlbWl0QVJNNjRBZGQoImFkZCIsIG9wZXJhbmRzLCA6cHRyKQorICAgICAgICB3aGVuICJh
bmRpIgorICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJhbmQiLCBvcGVyYW5kcywgOmludCkKKyAg
ICAgICAgd2hlbiAiYW5kcCIKKyAgICAgICAgICAgIGVtaXRBUk02NFRBQygiYW5kIiwgb3BlcmFu
ZHMsIDpwdHIpCisgICAgICAgIHdoZW4gImFuZHEiCisgICAgICAgICAgICBlbWl0QVJNNjRUQUMo
ImFuZCIsIG9wZXJhbmRzLCA6cHRyKQorICAgICAgICB3aGVuICJvcmkiCisgICAgICAgICAgICBl
bWl0QVJNNjRUQUMoIm9yciIsIG9wZXJhbmRzLCA6aW50KQorICAgICAgICB3aGVuICJvcnAiCisg
ICAgICAgICAgICBlbWl0QVJNNjRUQUMoIm9yciIsIG9wZXJhbmRzLCA6cHRyKQorICAgICAgICB3
aGVuICJvcnEiCisgICAgICAgICAgICBlbWl0QVJNNjRUQUMoIm9yciIsIG9wZXJhbmRzLCA6cHRy
KQorICAgICAgICB3aGVuICJ4b3JpIgorICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJlb3IiLCBv
cGVyYW5kcywgOmludCkKKyAgICAgICAgd2hlbiAieG9ycCIKKyAgICAgICAgICAgIGVtaXRBUk02
NFRBQygiZW9yIiwgb3BlcmFuZHMsIDpwdHIpCisgICAgICAgIHdoZW4gInhvcnEiCisgICAgICAg
ICAgICBlbWl0QVJNNjRUQUMoImVvciIsIG9wZXJhbmRzLCA6cHRyKQorICAgICAgICB3aGVuICJs
c2hpZnRpIgorICAgICAgICAgICAgZW1pdEFSTTY0U2hpZnQoImxzbHYiLCAidWJmbSIsIG9wZXJh
bmRzLCA6aW50KSB7CisgICAgICAgICAgICAgICAgfCB2YWx1ZSB8CisgICAgICAgICAgICAgICAg
WzMyIC0gdmFsdWUsIDMxIC0gdmFsdWVdCisgICAgICAgICAgICB9CisgICAgICAgIHdoZW4gImxz
aGlmdHAiCisgICAgICAgICAgICBlbWl0QVJNNjRTaGlmdCgibHNsdiIsICJ1YmZtIiwgb3BlcmFu
ZHMsIDpwdHIpIHsKKyAgICAgICAgICAgICAgICB8IHZhbHVlIHwKKyAgICAgICAgICAgICAgICBb
NjQgLSB2YWx1ZSwgNjMgLSB2YWx1ZV0KKyAgICAgICAgICAgIH0KKyAgICAgICAgd2hlbiAibHNo
aWZ0cSIKKyAgICAgICAgICAgIGVtaXRBUk02NFNoaWZ0KCJsc2x2IiwgInViZm0iLCBvcGVyYW5k
cywgOnB0cikgeworICAgICAgICAgICAgICAgIHwgdmFsdWUgfAorICAgICAgICAgICAgICAgIFs2
NCAtIHZhbHVlLCA2MyAtIHZhbHVlXQorICAgICAgICAgICAgfQorICAgICAgICB3aGVuICJyc2hp
ZnRpIgorICAgICAgICAgICAgZW1pdEFSTTY0U2hpZnQoImFzcnYiLCAic2JmbSIsIG9wZXJhbmRz
LCA6aW50KSB7CisgICAgICAgICAgICAgICAgfCB2YWx1ZSB8CisgICAgICAgICAgICAgICAgW3Zh
bHVlLCAzMV0KKyAgICAgICAgICAgIH0KKyAgICAgICAgd2hlbiAicnNoaWZ0cCIKKyAgICAgICAg
ICAgIGVtaXRBUk02NFNoaWZ0KCJhc3J2IiwgInNiZm0iLCBvcGVyYW5kcywgOnB0cikgeworICAg
ICAgICAgICAgICAgIHwgdmFsdWUgfAorICAgICAgICAgICAgICAgIFt2YWx1ZSwgNjNdCisgICAg
ICAgICAgICB9CisgICAgICAgIHdoZW4gInJzaGlmdHEiCisgICAgICAgICAgICBlbWl0QVJNNjRT
aGlmdCgiYXNydiIsICJzYmZtIiwgb3BlcmFuZHMsIDpwdHIpIHsKKyAgICAgICAgICAgICAgICB8
IHZhbHVlIHwKKyAgICAgICAgICAgICAgICBbdmFsdWUsIDYzXQorICAgICAgICAgICAgfQorICAg
ICAgICB3aGVuICJ1cnNoaWZ0aSIKKyAgICAgICAgICAgIGVtaXRBUk02NFNoaWZ0KCJsc3J2Iiwg
InViZm0iLCBvcGVyYW5kcywgOmludCkgeworICAgICAgICAgICAgICAgIHwgdmFsdWUgfAorICAg
ICAgICAgICAgICAgIFt2YWx1ZSwgMzFdCisgICAgICAgICAgICB9CisgICAgICAgIHdoZW4gInVy
c2hpZnRwIgorICAgICAgICAgICAgZW1pdEFSTTY0U2hpZnQoImxzcnYiLCAidWJmbSIsIG9wZXJh
bmRzLCA6cHRyKSB7CisgICAgICAgICAgICAgICAgfCB2YWx1ZSB8CisgICAgICAgICAgICAgICAg
W3ZhbHVlLCA2M10KKyAgICAgICAgICAgIH0KKyAgICAgICAgd2hlbiAidXJzaGlmdHEiCisgICAg
ICAgICAgICBlbWl0QVJNNjRTaGlmdCgibHNydiIsICJ1YmZtIiwgb3BlcmFuZHMsIDpwdHIpIHsK
KyAgICAgICAgICAgICAgICB8IHZhbHVlIHwKKyAgICAgICAgICAgICAgICBbdmFsdWUsIDYzXQor
ICAgICAgICAgICAgfQorICAgICAgICB3aGVuICJtdWxpIgorICAgICAgICAgICAgJGFzbS5wdXRz
ICJtYWRkICN7YXJtNjRUQUNPcGVyYW5kcyhvcGVyYW5kcywgOmludCl9LCB3enIiCisgICAgICAg
IHdoZW4gIm11bHAiCisgICAgICAgICAgICAkYXNtLnB1dHMgIm1hZGQgI3thcm02NFRBQ09wZXJh
bmRzKG9wZXJhbmRzLCA6cHRyKX0sIHh6ciIKKyAgICAgICAgd2hlbiAibXVscSIKKyAgICAgICAg
ICAgICRhc20ucHV0cyAibWFkZCAje2FybTY0VEFDT3BlcmFuZHMob3BlcmFuZHMsIDpwdHIpfSwg
eHpyIgorICAgICAgICB3aGVuICJzdWJpIgorICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJzdWIi
LCBvcGVyYW5kcywgOmludCkKKyAgICAgICAgd2hlbiAic3VicCIKKyAgICAgICAgICAgIGVtaXRB
Uk02NFRBQygic3ViIiwgb3BlcmFuZHMsIDpwdHIpCisgICAgICAgIHdoZW4gInN1YnEiCisgICAg
ICAgICAgICBlbWl0QVJNNjRUQUMoInN1YiIsIG9wZXJhbmRzLCA6cHRyKQorICAgICAgICB3aGVu
ICJzdWJpcyIKKyAgICAgICAgICAgIGVtaXRBUk02NFRBQygic3VicyIsIG9wZXJhbmRzLCA6aW50
KQorICAgICAgICB3aGVuICJuZWdpIgorICAgICAgICAgICAgJGFzbS5wdXRzICJzdWIgI3tvcGVy
YW5kc1swXS5hcm02NE9wZXJhbmQoOmludCl9LCB3enIsICN7b3BlcmFuZHNbMF0uYXJtNjRPcGVy
YW5kKDppbnQpfSIKKyAgICAgICAgd2hlbiAibmVncCIKKyAgICAgICAgICAgICRhc20ucHV0cyAi
c3ViICN7b3BlcmFuZHNbMF0uYXJtNjRPcGVyYW5kKDpwdHIpfSwgeHpyLCAje29wZXJhbmRzWzBd
LmFybTY0T3BlcmFuZCg6cHRyKX0iCisgICAgICAgIHdoZW4gIm5lZ3EiCisgICAgICAgICAgICAk
YXNtLnB1dHMgInN1YiAje29wZXJhbmRzWzBdLmFybTY0T3BlcmFuZCg6cHRyKX0sIHh6ciwgI3tv
cGVyYW5kc1swXS5hcm02NE9wZXJhbmQoOnB0cil9IgorICAgICAgICB3aGVuICJsb2FkaSIKKyAg
ICAgICAgICAgIGVtaXRBUk02NEFjY2VzcygibGRyIiwgImxkdXIiLCBvcGVyYW5kc1sxXSwgb3Bl
cmFuZHNbMF0sIDppbnQpCisgICAgICAgIHdoZW4gImxvYWRpcyIKKyAgICAgICAgICAgIGVtaXRB
Uk02NEFjY2VzcygibGRyc3ciLCAibGR1cnN3Iiwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzBdLCA6
cHRyKQorICAgICAgICB3aGVuICJsb2FkcCIKKyAgICAgICAgICAgIGVtaXRBUk02NEFjY2Vzcygi
bGRyIiwgImxkdXIiLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMF0sIDpwdHIpCisgICAgICAgIHdo
ZW4gImxvYWRxIgorICAgICAgICAgICAgZW1pdEFSTTY0QWNjZXNzKCJsZHIiLCAibGR1ciIsIG9w
ZXJhbmRzWzFdLCBvcGVyYW5kc1swXSwgOnB0cikKKyAgICAgICAgd2hlbiAic3RvcmVpIgorICAg
ICAgICAgICAgZW1pdEFSTTY0VW5mbGlwcGVkKCJzdHIiLCBvcGVyYW5kcywgOmludCkKKyAgICAg
ICAgd2hlbiAic3RvcmVwIgorICAgICAgICAgICAgZW1pdEFSTTY0VW5mbGlwcGVkKCJzdHIiLCBv
cGVyYW5kcywgOnB0cikKKyAgICAgICAgd2hlbiAic3RvcmVxIgorICAgICAgICAgICAgZW1pdEFS
TTY0VW5mbGlwcGVkKCJzdHIiLCBvcGVyYW5kcywgOnB0cikKKyAgICAgICAgd2hlbiAibG9hZGIi
CisgICAgICAgICAgICBlbWl0QVJNNjRBY2Nlc3MoImxkcmIiLCAibGR1cmIiLCBvcGVyYW5kc1sx
XSwgb3BlcmFuZHNbMF0sIDppbnQpCisgICAgICAgIHdoZW4gImxvYWRicyIKKyAgICAgICAgICAg
IGVtaXRBUk02NEFjY2VzcygibGRyc2IiLCAibGR1cnNiIiwgb3BlcmFuZHNbMV0sIG9wZXJhbmRz
WzBdLCA6aW50KQorICAgICAgICB3aGVuICJzdG9yZWIiCisgICAgICAgICAgICBlbWl0QVJNNjRV
bmZsaXBwZWQoInN0cmIiLCBvcGVyYW5kcywgOmludCkKKyAgICAgICAgd2hlbiAibG9hZGgiCisg
ICAgICAgICAgICBlbWl0QVJNNjRBY2Nlc3MoImxkcmgiLCAibGR1cmgiLCBvcGVyYW5kc1sxXSwg
b3BlcmFuZHNbMF0sIDppbnQpCisgICAgICAgIHdoZW4gImxvYWRocyIKKyAgICAgICAgICAgIGVt
aXRBUk02NEFjY2VzcygibGRyc2giLCAibGR1cnNoIiwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzBd
LCA6aW50KQorICAgICAgICB3aGVuICJzdG9yZWgiCisgICAgICAgICAgICBlbWl0QVJNNjRVbmZs
aXBwZWQoInN0cmgiLCBvcGVyYW5kcywgOmludCkKKyAgICAgICAgd2hlbiAibG9hZGQiCisgICAg
ICAgICAgICBlbWl0QVJNNjRBY2Nlc3MoImxkciIsICJsZHVyIiwgb3BlcmFuZHNbMV0sIG9wZXJh
bmRzWzBdLCA6ZG91YmxlKQorICAgICAgICB3aGVuICJzdG9yZWQiCisgICAgICAgICAgICBlbWl0
QVJNNjRVbmZsaXBwZWQoInN0ciIsIG9wZXJhbmRzLCA6ZG91YmxlKQorICAgICAgICB3aGVuICJh
ZGRkIgorICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJmYWRkIiwgb3BlcmFuZHMsIDpkb3VibGUp
CisgICAgICAgIHdoZW4gImRpdmQiCisgICAgICAgICAgICBlbWl0QVJNNjRUQUMoImZkaXYiLCBv
cGVyYW5kcywgOmRvdWJsZSkKKyAgICAgICAgd2hlbiAic3ViZCIKKyAgICAgICAgICAgIGVtaXRB
Uk02NFRBQygiZnN1YiIsIG9wZXJhbmRzLCA6ZG91YmxlKQorICAgICAgICB3aGVuICJtdWxkIgor
ICAgICAgICAgICAgZW1pdEFSTTY0VEFDKCJmbXVsIiwgb3BlcmFuZHMsIDpkb3VibGUpCisgICAg
ICAgIHdoZW4gInNxcnRkIgorICAgICAgICAgICAgZW1pdEFSTTY0KCJmc3FydCIsIG9wZXJhbmRz
LCA6ZG91YmxlKQorICAgICAgICB3aGVuICJjaTJkIgorICAgICAgICAgICAgZW1pdEFSTTY0KCJz
Y3Z0ZiIsIG9wZXJhbmRzLCBbOmludCwgOmRvdWJsZV0pCisgICAgICAgIHdoZW4gImJkZXEiCisg
ICAgICAgICAgICBlbWl0QVJNNjRCcmFuY2goImZjbXAiLCBvcGVyYW5kcywgOmRvdWJsZSwgImIu
ZXEiKQorICAgICAgICB3aGVuICJiZG5lcSIKKyAgICAgICAgICAgIGVtaXRBUk02NFVuZmxpcHBl
ZCgiZmNtcCIsIG9wZXJhbmRzWzAuLjFdLCA6ZG91YmxlKQorICAgICAgICAgICAgaXNVbm9yZGVy
ZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRuZXEiKQorICAgICAgICAgICAgJGFzbS5wdXRzICJi
LnZzICN7TG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLmFz
bUxhYmVsfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiYi5uZSAje29wZXJhbmRzWzJdLmFzbUxh
YmVsfSIKKyAgICAgICAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJBUk02NCIpCisgICAgICAgIHdo
ZW4gImJkZ3QiCisgICAgICAgICAgICBlbWl0QVJNNjRCcmFuY2goImZjbXAiLCBvcGVyYW5kcywg
OmRvdWJsZSwgImIuZ3QiKQorICAgICAgICB3aGVuICJiZGd0ZXEiCisgICAgICAgICAgICBlbWl0
QVJNNjRCcmFuY2goImZjbXAiLCBvcGVyYW5kcywgOmRvdWJsZSwgImIuZ2UiKQorICAgICAgICB3
aGVuICJiZGx0IgorICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJmY21wIiwgb3BlcmFuZHMs
IDpkb3VibGUsICJiLm1pIikKKyAgICAgICAgd2hlbiAiYmRsdGVxIgorICAgICAgICAgICAgZW1p
dEFSTTY0QnJhbmNoKCJmY21wIiwgb3BlcmFuZHMsIDpkb3VibGUsICJiLmxzIikKKyAgICAgICAg
d2hlbiAiYmRlcXVuIgorICAgICAgICAgICAgZW1pdEFSTTY0VW5mbGlwcGVkKCJmY21wIiwgb3Bl
cmFuZHNbMC4uMV0sIDpkb3VibGUpCisgICAgICAgICAgICAkYXNtLnB1dHMgImIudnMgI3tvcGVy
YW5kc1syXS5hc21MYWJlbH0iCisgICAgICAgICAgICAkYXNtLnB1dHMgImIuZXEgI3tvcGVyYW5k
c1syXS5hc21MYWJlbH0iCisgICAgICAgIHdoZW4gImJkbmVxdW4iCisgICAgICAgICAgICBlbWl0
QVJNNjRCcmFuY2goImZjbXAiLCBvcGVyYW5kcywgOmRvdWJsZSwgImIubmUiKQorICAgICAgICB3
aGVuICJiZGd0dW4iCisgICAgICAgICAgICBlbWl0QVJNNjRCcmFuY2goImZjbXAiLCBvcGVyYW5k
cywgOmRvdWJsZSwgImIuaGkiKQorICAgICAgICB3aGVuICJiZGd0ZXF1biIKKyAgICAgICAgICAg
IGVtaXRBUk02NEJyYW5jaCgiZmNtcCIsIG9wZXJhbmRzLCA6ZG91YmxlLCAiYi5wbCIpCisgICAg
ICAgIHdoZW4gImJkbHR1biIKKyAgICAgICAgICAgIGVtaXRBUk02NEJyYW5jaCgiZmNtcCIsIG9w
ZXJhbmRzLCA6ZG91YmxlLCAiYi5sdCIpCisgICAgICAgIHdoZW4gImJkbHRlcXVuIgorICAgICAg
ICAgICAgZW1pdEFSTTY0QnJhbmNoKCJmY21wIiwgb3BlcmFuZHMsIDpkb3VibGUsICJiLmxlIikK
KyAgICAgICAgd2hlbiAiYnRkMmkiCisgICAgICAgICAgICAjIEZJWE1FOiBtYXkgYmUgYSBnb29k
IGlkZWEgdG8ganVzdCBnZXQgcmlkIG9mIHRoaXMgaW5zdHJ1Y3Rpb24sIHNpbmNlIHRoZSBpbnRl
cnByZXRlcgorICAgICAgICAgICAgIyBjdXJyZW50bHkgZG9lcyBub3QgdXNlIGl0LgorICAgICAg
ICAgICAgcmFpc2UgIkFSTTY0IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGNvZGUgeWV0LCAje2Nv
ZGVPcmlnaW5TdHJpbmd9IgorICAgICAgICB3aGVuICJ0ZDJpIgorICAgICAgICAgICAgZW1pdEFS
TTY0KCJmY3Z0enMiLCBvcGVyYW5kcywgWzpkb3VibGUsIDppbnRdKQorICAgICAgICB3aGVuICJi
Y2QyaSIKKyAgICAgICAgICAgICMgRklYTUU6IHJlbW92ZSB0aGlzIGluc3RydWN0aW9uLCBvciB1
c2UgaXQgYW5kIGltcGxlbWVudCBpdC4gQ3VycmVudGx5IGl0J3Mgbm90CisgICAgICAgICAgICAj
IHVzZWQuCisgICAgICAgICAgICByYWlzZSAiQVJNNjQgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9w
Y29kZSB5ZXQsICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgICAgIHdoZW4gIm1vdmR6IgorICAg
ICAgICAgICAgIyBGSVhNRTogcmVtb3ZlIGl0IG9yIHN1cHBvcnQgaXQuCisgICAgICAgICAgICBy
YWlzZSAiQVJNNjQgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wY29kZSB5ZXQsICN7Y29kZU9yaWdp
blN0cmluZ30iCisgICAgICAgIHdoZW4gInBvcCIKKyAgICAgICAgICAgIGVtaXRBUk02NFVuZmxp
cHBlZCgicG9wIiwgb3BlcmFuZHMsIDpwdHIpCisgICAgICAgIHdoZW4gInB1c2giCisgICAgICAg
ICAgICBlbWl0QVJNNjRVbmZsaXBwZWQoInB1c2giLCBvcGVyYW5kcywgOnB0cikKKyAgICAgICAg
d2hlbiAibW92ZSIKKyAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLmltbWVkaWF0ZT8KKyAgICAg
ICAgICAgICAgICBlbWl0QVJNNjRNb3ZlSW1tZWRpYXRlKG9wZXJhbmRzWzBdLnZhbHVlLCBvcGVy
YW5kc1sxXSkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlbWl0QVJNNjQoIm1v
diIsIG9wZXJhbmRzLCA6cHRyKQorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gInN4aTJw
IgorICAgICAgICAgICAgZW1pdEFSTTY0KCJzeHR3Iiwgb3BlcmFuZHMsIDpwdHIpCisgICAgICAg
IHdoZW4gInN4aTJxIgorICAgICAgICAgICAgZW1pdEFSTTY0KCJzeHR3Iiwgb3BlcmFuZHMsIDpw
dHIpCisgICAgICAgIHdoZW4gInp4aTJwIgorICAgICAgICAgICAgZW1pdEFSTTY0KCJ1eHR3Iiwg
b3BlcmFuZHMsIDpwdHIpCisgICAgICAgIHdoZW4gInp4aTJxIgorICAgICAgICAgICAgZW1pdEFS
TTY0KCJ1eHR3Iiwgb3BlcmFuZHMsIDpwdHIpCisgICAgICAgIHdoZW4gIm5vcCIKKyAgICAgICAg
ICAgICRhc20ucHV0cyAibm9wIgorICAgICAgICB3aGVuICJiaWVxIiwgImJiZXEiCisgICAgICAg
ICAgICBpZiBvcGVyYW5kc1swXS5pbW1lZGlhdGU/IGFuZCBvcGVyYW5kc1swXS52YWx1ZSA9PSAw
CisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJjYnogI3tvcGVyYW5kc1sxXS5hcm02NE9wZXJh
bmQoOmludCl9LCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgICAgIGVsc2lmIG9w
ZXJhbmRzWzFdLmltbWVkaWF0ZT8gYW5kIG9wZXJhbmRzWzFdLnZhbHVlID09IDAKKyAgICAgICAg
ICAgICAgICAkYXNtLnB1dHMgImNieiAje29wZXJhbmRzWzBdLmFybTY0T3BlcmFuZCg6aW50KX0s
ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIGVtaXRBUk02NEJyYW5jaCgic3VicyB3enIsICIsIG9wZXJhbmRzLCA6aW50LCAiYi5lcSIp
CisgICAgICAgICAgICBlbmQKKyAgICAgICAgd2hlbiAiYnBlcSIKKyAgICAgICAgICAgIGlmIG9w
ZXJhbmRzWzBdLmltbWVkaWF0ZT8gYW5kIG9wZXJhbmRzWzBdLnZhbHVlID09IDAKKyAgICAgICAg
ICAgICAgICAkYXNtLnB1dHMgImNieiAje29wZXJhbmRzWzFdLmFybTY0T3BlcmFuZCg6cHRyKX0s
ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICAgICAgZWxzaWYgb3BlcmFuZHNbMV0u
aW1tZWRpYXRlPyBhbmQgb3BlcmFuZHNbMV0udmFsdWUgPT0gMAorICAgICAgICAgICAgICAgICRh
c20ucHV0cyAiY2J6ICN7b3BlcmFuZHNbMF0uYXJtNjRPcGVyYW5kKDpwdHIpfSwgI3tvcGVyYW5k
c1syXS5hc21MYWJlbH0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdEFS
TTY0QnJhbmNoKCJzdWJzIHh6ciwgIiwgb3BlcmFuZHMsIDpwdHIsICJiLmVxIikKKyAgICAgICAg
ICAgIGVuZAorICAgICAgICB3aGVuICJicWVxIgorICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0u
aW1tZWRpYXRlPyBhbmQgb3BlcmFuZHNbMF0udmFsdWUgPT0gMAorICAgICAgICAgICAgICAgICRh
c20ucHV0cyAiY2J6ICN7b3BlcmFuZHNbMV0uYXJtNjRPcGVyYW5kKDpwdHIpfSwgI3tvcGVyYW5k
c1syXS5hc21MYWJlbH0iCisgICAgICAgICAgICBlbHNpZiBvcGVyYW5kc1sxXS5pbW1lZGlhdGU/
IGFuZCBvcGVyYW5kc1sxXS52YWx1ZSA9PSAwCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJj
YnogI3tvcGVyYW5kc1swXS5hcm02NE9wZXJhbmQoOnB0cil9LCAje29wZXJhbmRzWzJdLmFzbUxh
YmVsfSIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlbWl0QVJNNjRCcmFuY2go
InN1YnMgeHpyLCAiLCBvcGVyYW5kcywgOnB0ciwgImIuZXEiKQorICAgICAgICAgICAgZW5kCisg
ICAgICAgIHdoZW4gImJpbmVxIiwgImJibmVxIgorICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0u
aW1tZWRpYXRlPyBhbmQgb3BlcmFuZHNbMF0udmFsdWUgPT0gMAorICAgICAgICAgICAgICAgICRh
c20ucHV0cyAiY2JueiAje29wZXJhbmRzWzFdLmFybTY0T3BlcmFuZCg6aW50KX0sICN7b3BlcmFu
ZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICAgICAgZWxzaWYgb3BlcmFuZHNbMV0uaW1tZWRpYXRl
PyBhbmQgb3BlcmFuZHNbMV0udmFsdWUgPT0gMAorICAgICAgICAgICAgICAgICRhc20ucHV0cyAi
Y2JueiAje29wZXJhbmRzWzBdLmFybTY0T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0uYXNt
TGFiZWx9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVtaXRBUk02NEJyYW5j
aCgic3VicyB3enIsICIsIG9wZXJhbmRzLCA6aW50LCAiYi5uZSIpCisgICAgICAgICAgICBlbmQK
KyAgICAgICAgd2hlbiAiYnBuZXEiCisgICAgICAgICAgICBpZiBvcGVyYW5kc1swXS5pbW1lZGlh
dGU/IGFuZCBvcGVyYW5kc1swXS52YWx1ZSA9PSAwCisgICAgICAgICAgICAgICAgJGFzbS5wdXRz
ICJjYm56ICN7b3BlcmFuZHNbMV0uYXJtNjRPcGVyYW5kKDpwdHIpfSwgI3tvcGVyYW5kc1syXS5h
c21MYWJlbH0iCisgICAgICAgICAgICBlbHNpZiBvcGVyYW5kc1sxXS5pbW1lZGlhdGU/IGFuZCBv
cGVyYW5kc1sxXS52YWx1ZSA9PSAwCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJjYm56ICN7
b3BlcmFuZHNbMF0uYXJtNjRPcGVyYW5kKDpwdHIpfSwgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0i
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJzdWJz
IHh6ciwgIiwgb3BlcmFuZHMsIDpwdHIsICJiLm5lIikKKyAgICAgICAgICAgIGVuZAorICAgICAg
ICB3aGVuICJicW5lcSIKKyAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLmltbWVkaWF0ZT8gYW5k
IG9wZXJhbmRzWzBdLnZhbHVlID09IDAKKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImNibnog
I3tvcGVyYW5kc1sxXS5hcm02NE9wZXJhbmQoOnB0cil9LCAje29wZXJhbmRzWzJdLmFzbUxhYmVs
fSIKKyAgICAgICAgICAgIGVsc2lmIG9wZXJhbmRzWzFdLmltbWVkaWF0ZT8gYW5kIG9wZXJhbmRz
WzFdLnZhbHVlID09IDAKKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImNibnogI3tvcGVyYW5k
c1swXS5hcm02NE9wZXJhbmQoOnB0cil9LCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlbWl0QVJNNjRCcmFuY2goInN1YnMgeHpyLCAi
LCBvcGVyYW5kcywgOnB0ciwgImIubmUiKQorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4g
ImJpYSIsICJiYmEiCisgICAgICAgICAgICBlbWl0QVJNNjRCcmFuY2goInN1YnMgd3pyLCAiLCBv
cGVyYW5kcywgOmludCwgImIuaGkiKQorICAgICAgICB3aGVuICJicGEiCisgICAgICAgICAgICBl
bWl0QVJNNjRCcmFuY2goInN1YnMgeHpyLCAiLCBvcGVyYW5kcywgOnB0ciwgImIuaGkiKQorICAg
ICAgICB3aGVuICJicWEiCisgICAgICAgICAgICBlbWl0QVJNNjRCcmFuY2goInN1YnMgeHpyLCAi
LCBvcGVyYW5kcywgOnB0ciwgImIuaGkiKQorICAgICAgICB3aGVuICJiaWFlcSIsICJiYmFlcSIK
KyAgICAgICAgICAgIGVtaXRBUk02NEJyYW5jaCgic3VicyB3enIsICIsIG9wZXJhbmRzLCA6aW50
LCAiYi5ocyIpCisgICAgICAgIHdoZW4gImJwYWVxIgorICAgICAgICAgICAgZW1pdEFSTTY0QnJh
bmNoKCJzdWJzIHh6ciwgIiwgb3BlcmFuZHMsIDpwdHIsICJiLmhzIikKKyAgICAgICAgd2hlbiAi
YnFhZXEiCisgICAgICAgICAgICBlbWl0QVJNNjRCcmFuY2goInN1YnMgeHpyLCAiLCBvcGVyYW5k
cywgOnB0ciwgImIuaHMiKQorICAgICAgICB3aGVuICJiaWIiLCAiYmJiIgorICAgICAgICAgICAg
ZW1pdEFSTTY0QnJhbmNoKCJzdWJzIHd6ciwgIiwgb3BlcmFuZHMsIDppbnQsICJiLmxvIikKKyAg
ICAgICAgd2hlbiAiYnBiIgorICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJzdWJzIHh6ciwg
Iiwgb3BlcmFuZHMsIDpwdHIsICJiLmxvIikKKyAgICAgICAgd2hlbiAiYnFiIgorICAgICAgICAg
ICAgZW1pdEFSTTY0QnJhbmNoKCJzdWJzIHh6ciwgIiwgb3BlcmFuZHMsIDpwdHIsICJiLmxvIikK
KyAgICAgICAgd2hlbiAiYmliZXEiLCAiYmJiZXEiCisgICAgICAgICAgICBlbWl0QVJNNjRCcmFu
Y2goInN1YnMgd3pyLCAiLCBvcGVyYW5kcywgOmludCwgImIubHMiKQorICAgICAgICB3aGVuICJi
cGJlcSIKKyAgICAgICAgICAgIGVtaXRBUk02NEJyYW5jaCgic3VicyB4enIsICIsIG9wZXJhbmRz
LCA6cHRyLCAiYi5scyIpCisgICAgICAgIHdoZW4gImJxYmVxIgorICAgICAgICAgICAgZW1pdEFS
TTY0QnJhbmNoKCJzdWJzIHh6ciwgIiwgb3BlcmFuZHMsIDpwdHIsICJiLmxzIikKKyAgICAgICAg
d2hlbiAiYmlndCIsICJiYmd0IgorICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJzdWJzIHd6
ciwgIiwgb3BlcmFuZHMsIDppbnQsICJiLmd0IikKKyAgICAgICAgd2hlbiAiYnBndCIKKyAgICAg
ICAgICAgIGVtaXRBUk02NEJyYW5jaCgic3VicyB4enIsICIsIG9wZXJhbmRzLCA6cHRyLCAiYi5n
dCIpCisgICAgICAgIHdoZW4gImJxZ3QiCisgICAgICAgICAgICBlbWl0QVJNNjRCcmFuY2goInN1
YnMgeHpyLCAiLCBvcGVyYW5kcywgOnB0ciwgImIuZ3QiKQorICAgICAgICB3aGVuICJiaWd0ZXEi
LCAiYmJndGVxIgorICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJzdWJzIHd6ciwgIiwgb3Bl
cmFuZHMsIDppbnQsICJiLmdlIikKKyAgICAgICAgd2hlbiAiYnBndGVxIgorICAgICAgICAgICAg
ZW1pdEFSTTY0QnJhbmNoKCJzdWJzIHh6ciwgIiwgb3BlcmFuZHMsIDpwdHIsICJiLmdlIikKKyAg
ICAgICAgd2hlbiAiYnFndGVxIgorICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJzdWJzIHh6
ciwgIiwgb3BlcmFuZHMsIDpwdHIsICJiLmdlIikKKyAgICAgICAgd2hlbiAiYmlsdCIsICJiYmx0
IgorICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJzdWJzIHd6ciwgIiwgb3BlcmFuZHMsIDpp
bnQsICJiLmx0IikKKyAgICAgICAgd2hlbiAiYnBsdCIKKyAgICAgICAgICAgIGVtaXRBUk02NEJy
YW5jaCgic3VicyB4enIsICIsIG9wZXJhbmRzLCA6cHRyLCAiYi5sdCIpCisgICAgICAgIHdoZW4g
ImJxbHQiCisgICAgICAgICAgICBlbWl0QVJNNjRCcmFuY2goInN1YnMgeHpyLCAiLCBvcGVyYW5k
cywgOnB0ciwgImIubHQiKQorICAgICAgICB3aGVuICJiaWx0ZXEiLCAiYmJsdGVxIgorICAgICAg
ICAgICAgZW1pdEFSTTY0QnJhbmNoKCJzdWJzIHd6ciwgIiwgb3BlcmFuZHMsIDppbnQsICJiLmxl
IikKKyAgICAgICAgd2hlbiAiYnBsdGVxIgorICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJz
dWJzIHh6ciwgIiwgb3BlcmFuZHMsIDpwdHIsICJiLmxlIikKKyAgICAgICAgd2hlbiAiYnFsdGVx
IgorICAgICAgICAgICAgZW1pdEFSTTY0QnJhbmNoKCJzdWJzIHh6ciwgIiwgb3BlcmFuZHMsIDpw
dHIsICJiLmxlIikKKyAgICAgICAgd2hlbiAiam1wIgorICAgICAgICAgICAgaWYgb3BlcmFuZHNb
MF0ubGFiZWw/CisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJiICN7b3BlcmFuZHNbMF0uYXNt
TGFiZWx9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVtaXRBUk02NFVuZmxp
cHBlZCgiYnIiLCBvcGVyYW5kcywgOnB0cikKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVu
ICJjYWxsIgorICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0ubGFiZWw/CisgICAgICAgICAgICAg
ICAgJGFzbS5wdXRzICJibCAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBlbWl0QVJNNjRVbmZsaXBwZWQoImJsciIsIG9wZXJhbmRzLCA6
cHRyKQorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gImJyZWFrIgorICAgICAgICAgICAg
JGFzbS5wdXRzICJicmsgXCMwIgorICAgICAgICB3aGVuICJyZXQiCisgICAgICAgICAgICAkYXNt
LnB1dHMgInJldCIKKyAgICAgICAgd2hlbiAiY2llcSIsICJjYmVxIgorICAgICAgICAgICAgZW1p
dEFSTTY0Q29tcGFyZShvcGVyYW5kcywgOmludCwgIm5lIikKKyAgICAgICAgd2hlbiAiY3BlcSIK
KyAgICAgICAgICAgIGVtaXRBUk02NENvbXBhcmUob3BlcmFuZHMsIDpwdHIsICJuZSIpCisgICAg
ICAgIHdoZW4gImNxZXEiCisgICAgICAgICAgICBlbWl0QVJNNjRDb21wYXJlKG9wZXJhbmRzLCA6
cHRyLCAibmUiKQorICAgICAgICB3aGVuICJjaW5lcSIsICJjYm5lcSIKKyAgICAgICAgICAgIGVt
aXRBUk02NENvbXBhcmUob3BlcmFuZHMsIDppbnQsICJlcSIpCisgICAgICAgIHdoZW4gImNwbmVx
IgorICAgICAgICAgICAgZW1pdEFSTTY0Q29tcGFyZShvcGVyYW5kcywgOnB0ciwgImVxIikKKyAg
ICAgICAgd2hlbiAiY3FuZXEiCisgICAgICAgICAgICBlbWl0QVJNNjRDb21wYXJlKG9wZXJhbmRz
LCA6cHRyLCAiZXEiKQorICAgICAgICB3aGVuICJjaWEiLCAiY2JhIgorICAgICAgICAgICAgZW1p
dEFSTTY0Q29tcGFyZShvcGVyYW5kcywgOmludCwgImxzIikKKyAgICAgICAgd2hlbiAiY3BhIgor
ICAgICAgICAgICAgZW1pdEFSTTY0Q29tcGFyZShvcGVyYW5kcywgOnB0ciwgImxzIikKKyAgICAg
ICAgd2hlbiAiY3FhIgorICAgICAgICAgICAgZW1pdEFSTTY0Q29tcGFyZShvcGVyYW5kcywgOnB0
ciwgImxzIikKKyAgICAgICAgd2hlbiAiY2lhZXEiLCAiY2JhZXEiCisgICAgICAgICAgICBlbWl0
QVJNNjRDb21wYXJlKG9wZXJhbmRzLCA6aW50LCAibG8iKQorICAgICAgICB3aGVuICJjcGFlcSIK
KyAgICAgICAgICAgIGVtaXRBUk02NENvbXBhcmUob3BlcmFuZHMsIDpwdHIsICJsbyIpCisgICAg
ICAgIHdoZW4gImNxYWVxIgorICAgICAgICAgICAgZW1pdEFSTTY0Q29tcGFyZShvcGVyYW5kcywg
OnB0ciwgImxvIikKKyAgICAgICAgd2hlbiAiY2liIiwgImNiYiIKKyAgICAgICAgICAgIGVtaXRB
Uk02NENvbXBhcmUob3BlcmFuZHMsIDppbnQsICJocyIpCisgICAgICAgIHdoZW4gImNwYiIKKyAg
ICAgICAgICAgIGVtaXRBUk02NENvbXBhcmUob3BlcmFuZHMsIDpwdHIsICJocyIpCisgICAgICAg
IHdoZW4gImNxYiIKKyAgICAgICAgICAgIGVtaXRBUk02NENvbXBhcmUob3BlcmFuZHMsIDpwdHIs
ICJocyIpCisgICAgICAgIHdoZW4gImNpYmVxIiwgImNiYmVxIgorICAgICAgICAgICAgZW1pdEFS
TTY0Q29tcGFyZShvcGVyYW5kcywgOmludCwgImhpIikKKyAgICAgICAgd2hlbiAiY3BiZXEiCisg
ICAgICAgICAgICBlbWl0QVJNNjRDb21wYXJlKG9wZXJhbmRzLCA6cHRyLCAiaGkiKQorICAgICAg
ICB3aGVuICJjcWJlcSIKKyAgICAgICAgICAgIGVtaXRBUk02NENvbXBhcmUob3BlcmFuZHMsIDpw
dHIsICJoaSIpCisgICAgICAgIHdoZW4gImNpbHQiLCAiY2JsdCIKKyAgICAgICAgICAgIGVtaXRB
Uk02NENvbXBhcmUob3BlcmFuZHMsIDppbnQsICJnZSIpCisgICAgICAgIHdoZW4gImNwbHQiCisg
ICAgICAgICAgICBlbWl0QVJNNjRDb21wYXJlKG9wZXJhbmRzLCA6cHRyLCAiZ2UiKQorICAgICAg
ICB3aGVuICJjcWx0IgorICAgICAgICAgICAgZW1pdEFSTTY0Q29tcGFyZShvcGVyYW5kcywgOnB0
ciwgImdlIikKKyAgICAgICAgd2hlbiAiY2lsdGVxIiwgImNibHRlcSIKKyAgICAgICAgICAgIGVt
aXRBUk02NENvbXBhcmUob3BlcmFuZHMsIDppbnQsICJndCIpCisgICAgICAgIHdoZW4gImNwbHRl
cSIKKyAgICAgICAgICAgIGVtaXRBUk02NENvbXBhcmUob3BlcmFuZHMsIDpwdHIsICJndCIpCisg
ICAgICAgIHdoZW4gImNxbHRlcSIKKyAgICAgICAgICAgIGVtaXRBUk02NENvbXBhcmUob3BlcmFu
ZHMsIDpwdHIsICJndCIpCisgICAgICAgIHdoZW4gImNpZ3QiLCAiY2JndCIKKyAgICAgICAgICAg
IGVtaXRBUk02NENvbXBhcmUob3BlcmFuZHMsIDppbnQsICJsZSIpCisgICAgICAgIHdoZW4gImNw
Z3QiCisgICAgICAgICAgICBlbWl0QVJNNjRDb21wYXJlKG9wZXJhbmRzLCA6cHRyLCAibGUiKQor
ICAgICAgICB3aGVuICJjcWd0IgorICAgICAgICAgICAgZW1pdEFSTTY0Q29tcGFyZShvcGVyYW5k
cywgOnB0ciwgImxlIikKKyAgICAgICAgd2hlbiAiY2lndGVxIiwgImNiZ3RlcSIKKyAgICAgICAg
ICAgIGVtaXRBUk02NENvbXBhcmUob3BlcmFuZHMsIDppbnQsICJsdCIpCisgICAgICAgIHdoZW4g
ImNwZ3RlcSIKKyAgICAgICAgICAgIGVtaXRBUk02NENvbXBhcmUob3BlcmFuZHMsIDpwdHIsICJs
dCIpCisgICAgICAgIHdoZW4gImNxZ3RlcSIKKyAgICAgICAgICAgIGVtaXRBUk02NENvbXBhcmUo
b3BlcmFuZHMsIDpwdHIsICJsdCIpCisgICAgICAgIHdoZW4gInBlZWsiCisgICAgICAgICAgICAk
YXNtLnB1dHMgImxkciAje29wZXJhbmRzWzFdLmFybTY0T3BlcmFuZCg6cHRyKX0sIFtzcCwgXCMj
e29wZXJhbmRzWzBdLnZhbHVlICogOH1dIgorICAgICAgICB3aGVuICJwb2tlIgorICAgICAgICAg
ICAgJGFzbS5wdXRzICJzdHIgI3tvcGVyYW5kc1sxXS5hcm02NE9wZXJhbmQoOnB0cil9LCBbc3As
IFwjI3tvcGVyYW5kc1swXS52YWx1ZSAqIDh9XSIKKyAgICAgICAgd2hlbiAiZnAyZCIKKyAgICAg
ICAgICAgIGVtaXRBUk02NCgiZm1vdiIsIG9wZXJhbmRzLCBbOnB0ciwgOmRvdWJsZV0pCisgICAg
ICAgIHdoZW4gImZxMmQiCisgICAgICAgICAgICBlbWl0QVJNNjQoImZtb3YiLCBvcGVyYW5kcywg
WzpwdHIsIDpkb3VibGVdKQorICAgICAgICB3aGVuICJmZDJwIgorICAgICAgICAgICAgZW1pdEFS
TTY0KCJmbW92Iiwgb3BlcmFuZHMsIFs6ZG91YmxlLCA6cHRyXSkKKyAgICAgICAgd2hlbiAiZmQy
cSIKKyAgICAgICAgICAgIGVtaXRBUk02NCgiZm1vdiIsIG9wZXJhbmRzLCBbOmRvdWJsZSwgOnB0
cl0pCisgICAgICAgIHdoZW4gImJvIgorICAgICAgICAgICAgJGFzbS5wdXRzICJiLnZzICN7b3Bl
cmFuZHNbMF0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJicyIKKyAgICAgICAgICAgICRhc20u
cHV0cyAiYi5taSAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAiYnoiCisg
ICAgICAgICAgICAkYXNtLnB1dHMgImIuZXEgI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAg
ICAgIHdoZW4gImJueiIKKyAgICAgICAgICAgICRhc20ucHV0cyAiYi5uZSAje29wZXJhbmRzWzBd
LmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAibGVhaSIKKyAgICAgICAgICAgIG9wZXJhbmRzWzBd
LmFybTY0RW1pdExlYShvcGVyYW5kc1sxXSwgOmludCkKKyAgICAgICAgd2hlbiAibGVhcCIKKyAg
ICAgICAgICAgIG9wZXJhbmRzWzBdLmFybTY0RW1pdExlYShvcGVyYW5kc1sxXSwgOnB0cikKKyAg
ICAgICAgd2hlbiAibGVhcSIKKyAgICAgICAgICAgIG9wZXJhbmRzWzBdLmFybTY0RW1pdExlYShv
cGVyYW5kc1sxXSwgOnB0cikKKyAgICAgICAgd2hlbiAic211bGxpIgorICAgICAgICAgICAgJGFz
bS5wdXRzICJzbWFkZGwgI3tvcGVyYW5kc1syXS5hcm02NE9wZXJhbmQoOnB0cil9LCAje29wZXJh
bmRzWzBdLmFybTY0T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0uYXJtNjRPcGVyYW5kKDpp
bnQpfSwgeHpyIgorICAgICAgICBlbHNlCisgICAgICAgICAgICBsb3dlckRlZmF1bHQKKyAgICAg
ICAgZW5kCisgICAgZW5kCitlbmQKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYmFja2VuZHMucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9iYWNrZW5kcy5yYgppbmRleCA5MDJhNzY0Li5iZjAxYjU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgpAQCAtMjMsNiArMjMsNyBAQAogCiByZXF1
aXJlICJjb25maWciCiByZXF1aXJlICJhcm0iCityZXF1aXJlICJhcm02NCIKIHJlcXVpcmUgImFz
dCIKIHJlcXVpcmUgIng4NiIKIHJlcXVpcmUgIm1pcHMiCkBAIC0zNiw2ICszNyw3IEBAIEJBQ0tF
TkRTID0KICAgICAgIkFSTSIsCiAgICAgICJBUk12NyIsCiAgICAgICJBUk12N19UUkFESVRJT05B
TCIsCisgICAgICJBUk02NCIsCiAgICAgICJNSVBTIiwKICAgICAgIlNINCIsCiAgICAgICJDX0xP
T1AiCkBAIC01Myw2ICs1NSw3IEBAIFdPUktJTkdfQkFDS0VORFMgPQogICAgICAiQVJNIiwKICAg
ICAgIkFSTXY3IiwKICAgICAgIkFSTXY3X1RSQURJVElPTkFMIiwKKyAgICAgIkFSTTY0IiwKICAg
ICAgIk1JUFMiLAogICAgICAiU0g0IiwKICAgICAgIkNfTE9PUCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgppbmRleCBlYjM5NGFmLi4wM2Yw
NWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVj
dGlvbnMucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rp
b25zLnJiCkBAIC0yNTcsMTIgKzI1NywxMyBAQCBYODZfSU5TVFJVQ1RJT05TID0KICAgICAgImlk
aXZpIgogICAgIF0KIAotQVJNX0lOU1RSVUNUSU9OUyA9CitSSVNDX0lOU1RSVUNUSU9OUyA9CiAg
ICAgWwotICAgICAic211bGxpIiwKLSAgICAgImFkZGlzIiwKLSAgICAgInN1YmlzIiwKLSAgICAg
Im9yaXMiCisgICAgICJzbXVsbGkiLCAgIyBNdWx0aXBseSB0d28gMzItYml0IHdvcmRzIGFuZCBw
cm9kdWNlIGEgNjQtYml0IHdvcmQKKyAgICAgImFkZGlzIiwgICAjIEFkZCBpbnRlZ2VycyBhbmQg
c2V0IGEgZmxhZy4KKyAgICAgInN1YmlzIiwgICAjIFNhbWUsIGJ1dCBmb3Igc3VidHJhY3Rpb24u
CisgICAgICJvcmlzIiwgICAgIyBTYW1lLCBidXQgZm9yIGJpdHdpc2Ugb3IuCisgICAgICJhZGRw
cyIgICAgIyBhZGRpcyBidXQgZm9yIHBvaW50ZXJzLgogICAgIF0KIAogTUlQU19JTlNUUlVDVElP
TlMgPQpAQCAtMzA2LDcgKzMwNyw3IEBAIENYWF9JTlNUUlVDVElPTlMgPQogICAgICAiY2xvb3BE
byIsICAgICAgICAgICAgICAjIG5vIG9wZXJhbmRzCiAgICAgXQogCi1JTlNUUlVDVElPTlMgPSBN
QUNST19JTlNUUlVDVElPTlMgKyBYODZfSU5TVFJVQ1RJT05TICsgQVJNX0lOU1RSVUNUSU9OUyAr
IE1JUFNfSU5TVFJVQ1RJT05TICsgU0g0X0lOU1RSVUNUSU9OUyArIENYWF9JTlNUUlVDVElPTlMK
K0lOU1RSVUNUSU9OUyA9IE1BQ1JPX0lOU1RSVUNUSU9OUyArIFg4Nl9JTlNUUlVDVElPTlMgKyBS
SVNDX0lOU1RSVUNUSU9OUyArIE1JUFNfSU5TVFJVQ1RJT05TICsgU0g0X0lOU1RSVUNUSU9OUyAr
IENYWF9JTlNUUlVDVElPTlMKIAogSU5TVFJVQ1RJT05fUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xc
QSgoJyArIElOU1RSVUNUSU9OUy5qb2luKCcpfCgnKSArICcpKVxcWicpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jpc2MucmIgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9yaXNjLnJiCmluZGV4IDE2OTZhMGMuLjNmYmMwN2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jpc2MucmIKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmlzYy5yYgpAQCAtMzcxLDcgKzM3MSw3IEBA
IGRlZiByaXNjTG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzKGxpc3QsIHZhbGlkSW1tZWRpYXRlcykK
ICAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKICAgICAgICAgICAgIHdoZW4gIm1vdmUiCiAg
ICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCi0gICAgICAgICAgICB3aGVuICJhZGRpIiwg
ImFkZHAiLCAiYWRkaXMiLCAic3ViaSIsICJzdWJwIiwgInN1YmlzIgorICAgICAgICAgICAgd2hl
biAiYWRkaSIsICJhZGRwIiwgImFkZHEiLCAiYWRkaXMiLCAic3ViaSIsICJzdWJwIiwgInN1YnEi
LCAic3ViaXMiCiAgICAgICAgICAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1swXS5pc19hPyBJbW1l
ZGlhdGUgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAobm90IHZhbGlkSW1tZWRpYXRlcy5p
bmNsdWRlPyBub2RlLm9wZXJhbmRzWzBdLnZhbHVlKSBhbmQKICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhbGlkSW1tZWRpYXRlcy5pbmNsdWRlPyAtbm9kZS5vcGVyYW5kc1swXS52YWx1ZQpAQCAt
Mzg3LDcgKzM4Nyw3IEBAIGRlZiByaXNjTG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzKGxpc3QsIHZh
bGlkSW1tZWRpYXRlcykKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IG5ld0xpc3QgPDwgbm9kZS5yaXNjTG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdM
aXN0LCB2YWxpZEltbWVkaWF0ZXMpCiAgICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICB3
aGVuICJtdWxpIiwgIm11bHAiCisgICAgICAgICAgICB3aGVuICJtdWxpIiwgIm11bHAiLCAibXVs
cSIKICAgICAgICAgICAgICAgICBpZiBub2RlLm9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQog
ICAgICAgICAgICAgICAgICAgICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCiAgICAg
ICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdp
biwgIm1vdmUiLCBbbm9kZS5vcGVyYW5kc1swXSwgdG1wXSwgYW5ub3RhdGlvbikKQEAgLTQ2Niw2
ICs0NjYsMTIgQEAgZGVmIHJpc2NMb3dlck1pc3BsYWNlZEFkZHJlc3NlcyhsaXN0KQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpc2NBc1JlZ2lzdGVycyhuZXdM
aXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJhbmRzLCAicCIpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubm90YXRpb24pCisgICAgICAgICAgICB3
aGVuICJhZGRxIiwgImFuZHEiLCAibHNoaWZ0cSIsICJtdWxxIiwgIm5lZ3EiLCAib3JxIiwgInJz
aGlmdHEiLCAidXJzaGlmdHEiLAorICAgICAgICAgICAgICAgICJzdWJxIiwgInhvcnEiLCAvXmJx
LywgL15idHEvLCAvXmNxLworICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24u
bmV3KG5vZGUuY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByaXNjQXNSZWdpc3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5v
cGVyYW5kcywgInEiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbm5vdGF0aW9uKQogICAgICAgICAgICAgd2hlbiAiYmJlcSIsICJiYm5lcSIsICJiYmEiLCAi
YmJhZXEiLCAiYmJiIiwgImJiYmVxIiwgImJ0YnoiLCAiYnRibnoiLCAidGJ6IiwgInRibnoiLAog
ICAgICAgICAgICAgICAgICJjYmVxIiwgImNibmVxIiwgImNiYSIsICJjYmFlcSIsICJjYmIiLCAi
Y2JiZXEiCiAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5j
b2RlT3JpZ2luLApAQCAtNTUyLDMgKzU1OCwxNzMgQEAgZGVmIHJpc2NMb3dlclJlZ2lzdGVyUmV1
c2UobGlzdCkKICAgICBuZXdMaXN0CiBlbmQKIAorIworIyBMb3dlcmluZyBvZiB0aGUgbm90IGlu
c3RydWN0aW9uLiBUaGUgZm9sbG93aW5nOgorIworIyBub3RpIHQwCisjCisjIGJlY29tZXM6Cisj
CisjIHhvcmkgLTEsIHQwCisjCisKK2RlZiByaXNjTG93ZXJOb3QobGlzdCkKKyAgICBuZXdMaXN0
ID0gW10KKyAgICBsaXN0LmVhY2ggeworICAgICAgICB8IG5vZGUgfAorICAgICAgICBpZiBub2Rl
LmlzX2E/IEluc3RydWN0aW9uCisgICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCisgICAgICAg
ICAgICB3aGVuICJub3RpIiwgIm5vdHAiCisgICAgICAgICAgICAgICAgcmFpc2UgIldyb25nIG51
Ym1lciBvZiBvcGVyYW5kcyBhdCAje25vZGUuY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBub2Rl
Lm9wZXJhbmRzLnNpemUgPT0gMQorICAgICAgICAgICAgICAgIHN1ZmZpeCA9IG5vZGUub3Bjb2Rl
Wy0xLi4tMV0KKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2Rl
LmNvZGVPcmlnaW4sICJ4b3IiICsgc3VmZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFtJbW1lZGlhdGUubmV3KG5vZGUuY29kZU9yaWdpbiwgLTEpLCBub2Rl
Lm9wZXJhbmRzWzBdXSkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdMaXN0
IDw8IG5vZGUKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdM
aXN0IDw8IG5vZGUKKyAgICAgICAgZW5kCisgICAgfQorICAgIHJldHVybiBuZXdMaXN0CitlbmQK
KworIworIyBMb3dpbmcgb2YgY29tcGxleCBicmFuY2ggb3BzIG9uIDY0LWJpdC4gRm9yIGV4YW1w
bGU6CisjCisjIGJtdWxpbyBmb28sIGJhciwgYmF6CisjCisjIGJlY29tZXM6CisjCisjIHNtdWxs
aSBmb28sIGJhciwgYmFyCisjIHJzaGlmdHAgYmFyLCAzMiwgdG1wMQorIyByc2hpZnRpIGJhciwg
MzEsIHRtcDIKKyMgenhpMnAgYmFyLCBiYXIgCisjIGJpbmVxIHRtcDEsIHRtcDIsIGJhegorIwor
CitkZWYgcmlzY0xvd2VySGFyZEJyYW5jaE9wczY0KGxpc3QpCisgICAgbmV3TGlzdCA9IFtdCisg
ICAgbGlzdC5lYWNoIHsKKyAgICAgICAgfCBub2RlIHwKKyAgICAgICAgaWYgbm9kZS5pc19hPyBJ
bnN0cnVjdGlvbiBhbmQgbm9kZS5vcGNvZGUgPT0gImJtdWxpbyIKKyAgICAgICAgICAgIHRtcDEg
PSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgIHRtcDIgPSBUbXAu
bmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1
Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgInNtdWxsaSIsIFtub2RlLm9wZXJhbmRzWzBdLCBu
b2RlLm9wZXJhbmRzWzFdLCBub2RlLm9wZXJhbmRzWzFdXSkKKyAgICAgICAgICAgIG5ld0xpc3Qg
PDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgInJzaGlmdHAiLCBbbm9kZS5vcGVy
YW5kc1sxXSwgSW1tZWRpYXRlLm5ldyhub2RlLmNvZGVPcmlnaW4sIDMyKSwgdG1wMV0pCisgICAg
ICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJyc2hp
ZnRpIiwgW25vZGUub3BlcmFuZHNbMV0sIEltbWVkaWF0ZS5uZXcobm9kZS5jb2RlT3JpZ2luLCAz
MSksIHRtcDJdKQorICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5j
b2RlT3JpZ2luLCAienhpMnAiLCBbbm9kZS5vcGVyYW5kc1sxXSwgbm9kZS5vcGVyYW5kc1sxXV0p
CisgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4s
ICJiaW5lcSIsIFt0bXAxLCB0bXAyLCBub2RlLm9wZXJhbmRzWzJdXSkKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICAgIGVuZAorICAgIH0KKyAgICBuZXdM
aXN0CitlbmQKKworIworIyBMb3dlcmluZyBvZiB0ZXN0IGluc3RydWN0aW9ucy4gRm9yIGV4YW1w
bGU6CisjCisjIGJ0aXogdDAsIHQxLCAuZm9vCisjCisjIGJlY29tZXM6CisjCisjIGFuZGkgdDAs
IHQxLCB0bXAKKyMgYmllcSB0bXAsIDAsIC5mb28KKyMKKyMgYW5kIGFub3RoZXIgZXhhbXBsZToK
KyMKKyMgdGl6IHQwLCB0MSwgdDIKKyMKKyMgYmVjb21lczoKKyMKKyMgYW5kaSB0MCwgdDEsIHRt
cAorIyBjaWVxIHRtcCwgMCwgdDIKKyMKKworZGVmIHJpc2NMb3dlclRlc3QobGlzdCkKKyAgICBk
ZWYgZW1pdChuZXdMaXN0LCBhbmRPcGNvZGUsIGJyYW5jaE9wY29kZSwgbm9kZSkKKyAgICAgICAg
aWYgbm9kZS5vcGVyYW5kcy5zaXplID09IDIKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1
Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgYnJhbmNoT3Bjb2RlLCBbbm9kZS5vcGVyYW5kc1sw
XSwgSW1tZWRpYXRlLm5ldyhub2RlLmNvZGVPcmlnaW4sIDApLCBub2RlLm9wZXJhbmRzWzFdXSkK
KyAgICAgICAgICAgIHJldHVybgorICAgICAgICBlbmQKKworICAgICAgICByYWlzZSAiSW5jb3Jy
ZWN0IG51bWJlciBvZiBvcGVyYW5kcyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgbm9k
ZS5vcGVyYW5kcy5zaXplID09IDMKKworICAgICAgICBpZiBub2RlLm9wZXJhbmRzWzBdLmltbWVk
aWF0ZT8gYW5kIG5vZGUub3BlcmFuZHNbMF0udmFsdWUgPT0gLTEKKyAgICAgICAgICAgIG5ld0xp
c3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgYnJhbmNoT3Bjb2RlLCBbbm9k
ZS5vcGVyYW5kc1sxXSwgSW1tZWRpYXRlLm5ldyhub2RlLmNvZGVPcmlnaW4sIDApLCBub2RlLm9w
ZXJhbmRzWzJdXSkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBlbmQKKworICAgICAgICBp
ZiBub2RlLm9wZXJhbmRzWzFdLmltbWVkaWF0ZT8gYW5kIG5vZGUub3BlcmFuZHNbMV0udmFsdWUg
PT0gLTEKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9y
aWdpbiwgYnJhbmNoT3Bjb2RlLCBbbm9kZS5vcGVyYW5kc1swXSwgSW1tZWRpYXRlLm5ldyhub2Rl
LmNvZGVPcmlnaW4sIDApLCBub2RlLm9wZXJhbmRzWzJdXSkKKyAgICAgICAgICAgIHJldHVybgor
ICAgICAgICBlbmQKKyAgICAgICAgCisgICAgICAgIHRtcCA9IFRtcC5uZXcobm9kZS5jb2RlT3Jp
Z2luLCA6Z3ByKQorICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVP
cmlnaW4sIGFuZE9wY29kZSwgW25vZGUub3BlcmFuZHNbMF0sIG5vZGUub3BlcmFuZHNbMV0sIHRt
cF0pCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwg
YnJhbmNoT3Bjb2RlLCBbdG1wLCBJbW1lZGlhdGUubmV3KG5vZGUuY29kZU9yaWdpbiwgMCksIG5v
ZGUub3BlcmFuZHNbMl1dKQorICAgIGVuZAorCisgICAgbmV3TGlzdCA9IFtdCisgICAgbGlzdC5l
YWNoIHsKKyAgICAgICAgfCBub2RlIHwKKyAgICAgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlv
bgorICAgICAgICAgICAgY2FzZSBub2RlLm9wY29kZQorICAgICAgICAgICAgd2hlbiAiYnRpcyIK
KyAgICAgICAgICAgICAgICBlbWl0KG5ld0xpc3QsICJhbmRpIiwgImJpbHQiLCBub2RlKQorICAg
ICAgICAgICAgd2hlbiAiYnRpeiIKKyAgICAgICAgICAgICAgICBlbWl0KG5ld0xpc3QsICJhbmRp
IiwgImJpZXEiLCBub2RlKQorICAgICAgICAgICAgd2hlbiAiYnRpbnoiCisgICAgICAgICAgICAg
ICAgZW1pdChuZXdMaXN0LCAiYW5kaSIsICJiaW5lcSIsIG5vZGUpCisgICAgICAgICAgICB3aGVu
ICJidHBzIgorICAgICAgICAgICAgICAgIGVtaXQobmV3TGlzdCwgImFuZHAiLCAiYnBsdCIsIG5v
ZGUpCisgICAgICAgICAgICB3aGVuICJidHB6IgorICAgICAgICAgICAgICAgIGVtaXQobmV3TGlz
dCwgImFuZHAiLCAiYnBlcSIsIG5vZGUpCisgICAgICAgICAgICB3aGVuICJidHBueiIKKyAgICAg
ICAgICAgICAgICBlbWl0KG5ld0xpc3QsICJhbmRwIiwgImJwbmVxIiwgbm9kZSkKKyAgICAgICAg
ICAgIHdoZW4gImJ0cXMiCisgICAgICAgICAgICAgICAgZW1pdChuZXdMaXN0LCAiYW5kcSIsICJi
cWx0Iiwgbm9kZSkKKyAgICAgICAgICAgIHdoZW4gImJ0cXoiCisgICAgICAgICAgICAgICAgZW1p
dChuZXdMaXN0LCAiYW5kcSIsICJicWVxIiwgbm9kZSkKKyAgICAgICAgICAgIHdoZW4gImJ0cW56
IgorICAgICAgICAgICAgICAgIGVtaXQobmV3TGlzdCwgImFuZHEiLCAiYnFuZXEiLCBub2RlKQor
ICAgICAgICAgICAgd2hlbiAiYnRicyIKKyAgICAgICAgICAgICAgICBlbWl0KG5ld0xpc3QsICJh
bmRpIiwgImJibHQiLCBub2RlKQorICAgICAgICAgICAgd2hlbiAiYnRieiIKKyAgICAgICAgICAg
ICAgICBlbWl0KG5ld0xpc3QsICJhbmRpIiwgImJiZXEiLCBub2RlKQorICAgICAgICAgICAgd2hl
biAiYnRibnoiCisgICAgICAgICAgICAgICAgZW1pdChuZXdMaXN0LCAiYW5kaSIsICJiYm5lcSIs
IG5vZGUpCisgICAgICAgICAgICB3aGVuICJ0aXMiCisgICAgICAgICAgICAgICAgZW1pdChuZXdM
aXN0LCAiYW5kaSIsICJjaWx0Iiwgbm9kZSkKKyAgICAgICAgICAgIHdoZW4gInRpeiIKKyAgICAg
ICAgICAgICAgICBlbWl0KG5ld0xpc3QsICJhbmRpIiwgImNpZXEiLCBub2RlKQorICAgICAgICAg
ICAgd2hlbiAidGlueiIKKyAgICAgICAgICAgICAgICBlbWl0KG5ld0xpc3QsICJhbmRpIiwgImNp
bmVxIiwgbm9kZSkKKyAgICAgICAgICAgIHdoZW4gInRwcyIKKyAgICAgICAgICAgICAgICBlbWl0
KG5ld0xpc3QsICJhbmRwIiwgImNwbHQiLCBub2RlKQorICAgICAgICAgICAgd2hlbiAidHB6Igor
ICAgICAgICAgICAgICAgIGVtaXQobmV3TGlzdCwgImFuZHAiLCAiY3BlcSIsIG5vZGUpCisgICAg
ICAgICAgICB3aGVuICJ0cG56IgorICAgICAgICAgICAgICAgIGVtaXQobmV3TGlzdCwgImFuZHAi
LCAiY3BuZXEiLCBub2RlKQorICAgICAgICAgICAgd2hlbiAidHFzIgorICAgICAgICAgICAgICAg
IGVtaXQobmV3TGlzdCwgImFuZHEiLCAiY3FsdCIsIG5vZGUpCisgICAgICAgICAgICB3aGVuICJ0
cXoiCisgICAgICAgICAgICAgICAgZW1pdChuZXdMaXN0LCAiYW5kcSIsICJjcWVxIiwgbm9kZSkK
KyAgICAgICAgICAgIHdoZW4gInRxbnoiCisgICAgICAgICAgICAgICAgZW1pdChuZXdMaXN0LCAi
YW5kcSIsICJjcW5lcSIsIG5vZGUpCisgICAgICAgICAgICB3aGVuICJ0YnMiCisgICAgICAgICAg
ICAgICAgZW1pdChuZXdMaXN0LCAiYW5kaSIsICJjYmx0Iiwgbm9kZSkKKyAgICAgICAgICAgIHdo
ZW4gInRieiIKKyAgICAgICAgICAgICAgICBlbWl0KG5ld0xpc3QsICJhbmRpIiwgImNiZXEiLCBu
b2RlKQorICAgICAgICAgICAgd2hlbiAidGJueiIKKyAgICAgICAgICAgICAgICBlbWl0KG5ld0xp
c3QsICJhbmRpIiwgImNibmVxIiwgbm9kZSkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAg
ICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgZW5kCisgICAgfQorICAgIHJldHVybiBu
ZXdMaXN0CitlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L3RyYW5zZm9ybS5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9y
bS5yYgppbmRleCBjODM4NjI5Li4zMDI5NzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCkBAIC00MDQsNiArNDA0LDE3IEBAIGVuZAogY2xhc3Mg
U2VxdWVuY2UKICAgICBkZWYgdmFsaWRhdGUKICAgICAgICAgdmFsaWRhdGVDaGlsZHJlbgorICAg
ICAgICAKKyAgICAgICAgIyBGdXJ0aGVyIHZlcmlmeSB0aGF0IHRoaXMgbGlzdCBjb250YWlucyBv
bmx5IGluc3RydWN0aW9ucywgbGFiZWxzLCBhbmQgc2tpcHMuCisgICAgICAgIEBsaXN0LmVhY2gg
eworICAgICAgICAgICAgfCBub2RlIHwKKyAgICAgICAgICAgIHVubGVzcyBub2RlLmlzX2E/IElu
c3RydWN0aW9uIG9yCisgICAgICAgICAgICAgICAgICAgIG5vZGUuaXNfYT8gTGFiZWwgb3IKKyAg
ICAgICAgICAgICAgICAgICAgbm9kZS5pc19hPyBMb2NhbExhYmVsIG9yCisgICAgICAgICAgICAg
ICAgICAgIG5vZGUuaXNfYT8gU2tpcAorICAgICAgICAgICAgICAgIHJhaXNlICJVbmV4cGVjdGVk
ICN7bm9kZS5pbnNwZWN0fSBhdCAje25vZGUuY29kZU9yaWdpbn0iIAorICAgICAgICAgICAgZW5k
CisgICAgICAgIH0KICAgICBlbmQKIGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS94ODYucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS94ODYucmIKaW5kZXggNGUyMDE1Yi4uNGQzOTNlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL3g4Ni5yYgpAQCAtNDYsNyArNDYsNyBAQCBkZWYgdXNlWDg3CiAgICAgZW5kCiBl
bmQKIAotY2xhc3MgU3BlY2lhbFJlZ2lzdGVyIDwgTm9DaGlsZHJlbgorY2xhc3MgU3BlY2lhbFJl
Z2lzdGVyCiAgICAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKICAgICAgICAgcmFpc2UgdW5sZXNzIEBu
YW1lID1+IC9eci8KICAgICAgICAgcmFpc2UgdW5sZXNzIGlzWDY0Ci0tIAoxLjguMy40IChBcHBs
ZSBHaXQtNDcpCgo=
</data>
<flag name="review"
          id="236736"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="236738"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>