<?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>165741</bug_id>
          
          <creation_ts>2016-12-10 23:09:26 -0800</creation_ts>
          <short_desc>MarkedBlock::marksConveyLivenessDuringMarking should take into account collection scope</short_desc>
          <delta_ts>2016-12-14 10:39:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>165853</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hs85.jeong</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1258841</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-10 23:09:26 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258843</commentid>
    <comment_count>1</comment_count>
      <attachid>296857</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-10 23:35:32 -0800</bug_when>
    <thetext>Created attachment 296857
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258844</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-10 23:37:27 -0800</bug_when>
    <thetext>Attachment 296857 did not pass style-queue:


ERROR: Source/WTF/wtf/DataLog.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/LockedPrintStream.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WTF/wtf/RecursiveLockAdapter.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WTF/wtf/PrintStream.h:287:  The parameter name &quot;tuple&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 24 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>1258906</commentid>
    <comment_count>3</comment_count>
      <attachid>296876</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-11 16:26:55 -0800</bug_when>
    <thetext>Created attachment 296876
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258907</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-11 16:29:26 -0800</bug_when>
    <thetext>Attachment 296876 did not pass style-queue:


ERROR: Source/WTF/wtf/DataLog.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/LockedPrintStream.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WTF/wtf/RecursiveLockAdapter.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WTF/wtf/PrintStream.h:287:  The parameter name &quot;tuple&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 24 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>1258911</commentid>
    <comment_count>5</comment_count>
      <attachid>296876</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-12-11 16:45:24 -0800</bug_when>
    <thetext>Comment on attachment 296876
the patch

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

The JSC bits and WTF bits look good to me. Perhaps it&apos;s worth allowing other people to also comment on the WTF portion before I r+

&gt; Source/JavaScriptCore/runtime/Options.cpp:339
&gt; +    Options::useConcurrentGC() = true;

Oops?

&gt; Source/WTF/wtf/PrintStream.h:304
&gt; +template&lt;unsigned index, typename... Types&gt;
&gt; +struct FormatImplUnpacker {
&gt; +    template&lt;typename... Args&gt;
&gt; +    static void unpack(PrintStream&amp; out, const std::tuple&lt;Types...&gt;&amp; tuple, const Args&amp;... values);
&gt; +};
&gt; +    
&gt; +template&lt;typename... Types&gt;
&gt; +struct FormatImplUnpacker&lt;0, Types...&gt; {
&gt; +    template&lt;typename... Args&gt;
&gt; +    static void unpack(PrintStream&amp; out, const std::tuple&lt;Types...&gt;&amp; tuple, const Args&amp;... values)
&gt; +    {
&gt; +        out.printfVariableFormat(std::get&lt;0&gt;(tuple), values...);
&gt; +    }
&gt; +};
&gt; +    
&gt; +template&lt;unsigned index, typename... Types&gt;
&gt; +template&lt;typename... Args&gt;
&gt; +void FormatImplUnpacker&lt;index, Types...&gt;::unpack(PrintStream&amp; out, const std::tuple&lt;Types...&gt;&amp; tuple, const Args&amp;... values)
&gt; +{
&gt; +    FormatImplUnpacker&lt;index - 1, Types...&gt;::unpack(out, tuple, std::get&lt;index&gt;(tuple), values...);
&gt; +}

I wonder if this can be simplified if we used std::index_sequence.

&gt; Source/WTF/wtf/RecursiveLockAdapter.h:50
&gt; +        m_recursionCount = 1;

Is it worth asserting m_recursionCount == 0 before this store?

&gt; Source/WTF/wtf/RecursiveLockAdapter.h:73
&gt; +        m_recursionCount = 1;

Ditto?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258913</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-11 16:46:02 -0800</bug_when>
    <thetext>*** Bug 165735 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258914</commentid>
    <comment_count>7</comment_count>
      <attachid>296876</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-12-11 16:47:26 -0800</bug_when>
    <thetext>Comment on attachment 296876
the patch

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

&gt;&gt; Source/WTF/wtf/PrintStream.h:304
&gt;&gt; +}
&gt; 
&gt; I wonder if this can be simplified if we used std::index_sequence.

Actually, I thought about this more and forgot to delete this comment. I think it&apos;s ok the way it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258915</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-11 16:48:36 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 296876 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=296876&amp;action=review
&gt; 
&gt; The JSC bits and WTF bits look good to me. Perhaps it&apos;s worth allowing other
&gt; people to also comment on the WTF portion before I r+
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/Options.cpp:339
&gt; &gt; +    Options::useConcurrentGC() = true;
&gt; 
&gt; Oops?

Yeah, I&apos;ll remove this before landing.

&gt; 
&gt; &gt; Source/WTF/wtf/PrintStream.h:304
&gt; &gt; +template&lt;unsigned index, typename... Types&gt;
&gt; &gt; +struct FormatImplUnpacker {
&gt; &gt; +    template&lt;typename... Args&gt;
&gt; &gt; +    static void unpack(PrintStream&amp; out, const std::tuple&lt;Types...&gt;&amp; tuple, const Args&amp;... values);
&gt; &gt; +};
&gt; &gt; +    
&gt; &gt; +template&lt;typename... Types&gt;
&gt; &gt; +struct FormatImplUnpacker&lt;0, Types...&gt; {
&gt; &gt; +    template&lt;typename... Args&gt;
&gt; &gt; +    static void unpack(PrintStream&amp; out, const std::tuple&lt;Types...&gt;&amp; tuple, const Args&amp;... values)
&gt; &gt; +    {
&gt; &gt; +        out.printfVariableFormat(std::get&lt;0&gt;(tuple), values...);
&gt; &gt; +    }
&gt; &gt; +};
&gt; &gt; +    
&gt; &gt; +template&lt;unsigned index, typename... Types&gt;
&gt; &gt; +template&lt;typename... Args&gt;
&gt; &gt; +void FormatImplUnpacker&lt;index, Types...&gt;::unpack(PrintStream&amp; out, const std::tuple&lt;Types...&gt;&amp; tuple, const Args&amp;... values)
&gt; &gt; +{
&gt; &gt; +    FormatImplUnpacker&lt;index - 1, Types...&gt;::unpack(out, tuple, std::get&lt;index&gt;(tuple), values...);
&gt; &gt; +}
&gt; 
&gt; I wonder if this can be simplified if we used std::index_sequence.

I did it this way because I remembered doing it this way before.  What is index_sequence?

&gt; 
&gt; &gt; Source/WTF/wtf/RecursiveLockAdapter.h:50
&gt; &gt; +        m_recursionCount = 1;
&gt; 
&gt; Is it worth asserting m_recursionCount == 0 before this store?
&gt; 
&gt; &gt; Source/WTF/wtf/RecursiveLockAdapter.h:73
&gt; &gt; +        m_recursionCount = 1;
&gt; 
&gt; Ditto?

Added both assertions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258920</commentid>
    <comment_count>9</comment_count>
      <attachid>296876</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-12-11 16:51:58 -0800</bug_when>
    <thetext>Comment on attachment 296876
the patch

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

&gt;&gt;&gt;&gt; Source/WTF/wtf/PrintStream.h:304
&gt;&gt;&gt;&gt; +}
&gt;&gt;&gt; 
&gt;&gt;&gt; I wonder if this can be simplified if we used std::index_sequence.
&gt;&gt; 
&gt;&gt; Actually, I thought about this more and forgot to delete this comment. I think it&apos;s ok the way it is.
&gt; 
&gt; I did it this way because I remembered doing it this way before.  What is index_sequence?

This was the wrong name for it. I meant integer_sequence:
http://en.cppreference.com/w/cpp/utility/integer_sequence

I think it&apos;s easy enough to read this way, but I think integer_sequence could reduce the number of lines of code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258921</commentid>
    <comment_count>10</comment_count>
      <attachid>296876</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-12-11 16:54:43 -0800</bug_when>
    <thetext>Comment on attachment 296876
the patch

r=me

If others have concerns about the new logging code, they can be addressed later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258922</commentid>
    <comment_count>11</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-11 16:54:58 -0800</bug_when>
    <thetext>CC&apos;d some folks since this adds more to WTF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258925</commentid>
    <comment_count>12</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-11 16:58:39 -0800</bug_when>
    <thetext>I&apos;m going to wait for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258933</commentid>
    <comment_count>13</comment_count>
      <attachid>296876</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-11 17:24:27 -0800</bug_when>
    <thetext>Comment on attachment 296876
the patch

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

&gt; Source/WTF/wtf/LockedPrintStream.h:27
&gt; +#ifndef LockedPrintStream_h
&gt; +#define LockedPrintStream_h

Please use #pragma once instead of header guards in new files in WebKit.

&gt; Source/WTF/wtf/PrintStream.cpp:50
&gt; +#pragma clang diagnostic ignored &quot;-Wformat-nonliteral&quot;

Can we use WTF_ATTRIBUTE_PRINTF(2, 3) when declaring this function instead of doing this?

&gt; Source/WTF/wtf/RecursiveLockAdapter.h:27
&gt; +#ifndef WTF_RecursiveLockAdapter_h
&gt; +#define WTF_RecursiveLockAdapter_h

#pragma once</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258935</commentid>
    <comment_count>14</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-11 17:29:42 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Comment on attachment 296876 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=296876&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/LockedPrintStream.h:27
&gt; &gt; +#ifndef LockedPrintStream_h
&gt; &gt; +#define LockedPrintStream_h
&gt; 
&gt; Please use #pragma once instead of header guards in new files in WebKit.

Has this worked for you in WTF?  I use #pragma once elsewhere, but in WTF it often causes problems downstream.  I&apos;m happy to try #pragma once and land a follow-up fix with it, if it builds.

&gt; 
&gt; &gt; Source/WTF/wtf/PrintStream.cpp:50
&gt; &gt; +#pragma clang diagnostic ignored &quot;-Wformat-nonliteral&quot;
&gt; 
&gt; Can we use WTF_ATTRIBUTE_PRINTF(2, 3) when declaring this function instead
&gt; of doing this?

Oh man, this was weird - because format() uses C++ variadic templates to pass the argument list, clang&apos;s format warnings go haywire. Clang&apos;s warnings are brutal in this regard: they refuse to let you pass a non-literal to a format function unless you&apos;re also passing a va_list (and not filling in the ...), but since I&apos;m using variadic templates to fill the ..., the compiler somehow fails to see that the format string is really a literal.

I worked around this by introducing the printfVariableFormat trick, which allows the variadic template stuff to call something that doesn&apos;t warn.  I then hid the warning inside printfVariableFormat.

&gt; 
&gt; &gt; Source/WTF/wtf/RecursiveLockAdapter.h:27
&gt; &gt; +#ifndef WTF_RecursiveLockAdapter_h
&gt; &gt; +#define WTF_RecursiveLockAdapter_h
&gt; 
&gt; #pragma once

I&apos;ll try it!  I&apos;ll land it if it builds!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258936</commentid>
    <comment_count>15</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-11 17:30:29 -0800</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/209691

I&apos;ll land follow-up fixes soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258938</commentid>
    <comment_count>16</comment_count>
      <attachid>296876</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-11 17:53:05 -0800</bug_when>
    <thetext>Comment on attachment 296876
the patch

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

&gt;&gt;&gt; Source/WTF/wtf/LockedPrintStream.h:27
&gt;&gt;&gt; +#define LockedPrintStream_h
&gt;&gt; 
&gt;&gt; Please use #pragma once instead of header guards in new files in WebKit.
&gt; 
&gt; Has this worked for you in WTF?  I use #pragma once elsewhere, but in WTF it often causes problems downstream.  I&apos;m happy to try #pragma once and land a follow-up fix with it, if it builds.

Yes, there are 42 files in WTF that are already using it.

I have seen some problems where the Windows build was depending on use of the same header at two different paths. And another problem with some kind of cyclic header inclusion. But most places it has been working well.

&gt;&gt;&gt; Source/WTF/wtf/PrintStream.cpp:50
&gt;&gt;&gt; +#pragma clang diagnostic ignored &quot;-Wformat-nonliteral&quot;
&gt;&gt; 
&gt;&gt; Can we use WTF_ATTRIBUTE_PRINTF(2, 3) when declaring this function instead of doing this?
&gt; 
&gt; Oh man, this was weird - because format() uses C++ variadic templates to pass the argument list, clang&apos;s format warnings go haywire. Clang&apos;s warnings are brutal in this regard: they refuse to let you pass a non-literal to a format function unless you&apos;re also passing a va_list (and not filling in the ...), but since I&apos;m using variadic templates to fill the ..., the compiler somehow fails to see that the format string is really a literal.
&gt; 
&gt; I worked around this by introducing the printfVariableFormat trick, which allows the variadic template stuff to call something that doesn&apos;t warn.  I then hid the warning inside printfVariableFormat.

Would be nice to have a brief why comment saying that. I would write something like this:

    // Can&apos;t use WTF_ATTRIBUTE_PRINTF because clang does not understand the idiom where the templates build the variable argument list.
    // So instead we have to turn off this warning.

But what I really eventually would probably do is come up with something not based on the printf system at all. After all, we are only using this for a few simple bits of formatting, hex numbers and such.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259107</commentid>
    <comment_count>17</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-12-12 10:32:40 -0800</bug_when>
    <thetext>EFL build is still broken because of this change:

../../Source/WTF/wtf/PrintStream.cpp: In member function ‘void WTF::PrintStream::printfVariableFormat(const char*, ...)’:
../../Source/WTF/wtf/PrintStream.cpp:55:28: error: function might be possible candidate for ‘gnu_printf’ format attribute [-Werror=suggest-attribute=format]
     vprintf(format, argList);
                            ^
cc1plus: all warnings being treated as errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259674</commentid>
    <comment_count>18</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-12-14 01:36:21 -0800</bug_when>
    <thetext>Unfortunately had to rollout in r209795 due to memory use regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259753</commentid>
    <comment_count>19</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-14 09:13:48 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; Unfortunately had to rollout in r209795 due to memory use regression.

You rolled out the wrong patch.  This patch fixes a GC bug, so without it, the debug bots will go red.  Also, rolling this out won&apos;t fix the memory use regression.

I think you meant to roll out https://trac.webkit.org/changeset/209692.

A better option is to disable concurrent GC on the affected platform by editing Options.cpp.

Can you please roll this fix back in - it&apos;s needed regardless of whether concurrent GC is enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259812</commentid>
    <comment_count>20</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-12-14 10:39:33 -0800</bug_when>
    <thetext>Relanded fixed version in r209813.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296857</attachid>
            <date>2016-12-10 23:35:32 -0800</date>
            <delta_ts>2016-12-11 16:26:55 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>57424</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA5Njc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBA
CisyMDE2LTEyLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
TWFya2VkQmxvY2s6Om1hcmtzQ29udmV5TGl2ZW5lc3NEdXJpbmdNYXJraW5nIHNob3VsZCB0YWtl
IGludG8gYWNjb3VudCBjb2xsZWN0aW9uIHNjb3BlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU3NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIE1hcmtlZEJsb2NrOjptYXJrc0NvbnZleUxp
dmVuZXNzRHVyaW5nTWFya2luZyB0aG91Z2h0IHRoYXQgdGhlIG9mZi1ieS1vbmUgbWFya2luZwor
ICAgICAgICB2ZXJzaW9uIGluZGljYXRlZCBsaXZlbmVzcyBkdXJpbmcgYW55IGNvbGxlY3Rpb24g
d2hlbiBpdCdzIGp1c3QgZHVyaW5nIGZ1bGwgY29sbGVjdGlvbi4KKyAgICAgICAgT25lIG9mIGl0
cyB1c2VycyAtIE1hcmtlZEJsb2NrOjpzd2VlcCAtIGtuZXcgdGhpcyBhbmQgaGFkIGEgc3BlY2lh
bCBjYXNlLCBidXQgdGhlIG90aGVyCisgICAgICAgIG9uZSAtIE1hcmtlZEJsb2NrOjppc0xpdmUg
LSBkaWRuJ3QuIFNvLCBJIG1vdmVkIHRoZSBzcGVjaWFsIGNhc2UgaW50bworICAgICAgICBtYXJr
c0NvbnZleUxpdmVuZXNzRHVyaW5nTWFya2luZy4KKyAgICAgICAgCisgICAgICAgIEFsc28sIHRo
aXMgY2xlYW5zIHVwIHNvbWUgcmVtYWluaW5nIGJpdHZlY3RvciByYWNlcy4KKyAgICAgICAgCisg
ICAgICAgIFRvIGZpbmQgdGhpcyBidWcsIEkgc2lnbmlmaWNhbnRseSBzdHJlbmd0aGVuZWQgb3Vy
IGFzc2VydGlvbnMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGhlYXAvQ2Vs
bENvbnRhaW5lci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpDZWxsQ29udGFpbmVyOjppc05l
d2x5QWxsb2NhdGVkKToKKyAgICAgICAgKiBoZWFwL0NlbGxDb250YWluZXIuaDoKKyAgICAgICAg
KiBoZWFwL01hcmtlZEFsbG9jYXRvci5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRv
cjo6YWRkQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnJlbW92ZUJsb2Nr
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpkdW1wQml0cyk6CisgICAgICAgICog
aGVhcC9NYXJrZWRBbGxvY2F0b3IuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpm
b3JFYWNoQml0VmVjdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpmb3JFYWNo
Qml0VmVjdG9yV2l0aE5hbWUpOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QmxvY2s6OkhhbmRsZTo6fkhhbmRsZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpNYXJr
ZWRCbG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVk
U3dlZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNl
bGVjdE1hcmtzTW9kZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BB
bGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6cmVzdW1lQWxs
b2NhdGluZyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjphYm91dFRvTWFya1Nsb3cpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRDb25zdW1lRnJlZUxpc3QpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpkdW1wU3RhdGUpOgorICAgICAgICAq
IGhlYXAvTWFya2VkQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Om1hcmtpbmdW
ZXJzaW9uKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkUmF3KToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkKToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJs
b2NrSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6bWFya3NDb252ZXlMaXZl
bmVzc0R1cmluZ01hcmtpbmcpOgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpTbG90VmlzaXRvcjo6YXBwZW5kSlNDZWxsT3JBdXhpbGlhcnkpOgorICAgICAg
ICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnJlY29tcHV0ZURlcGVuZGVu
dE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpzaXplKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
SURUYWJsZTo6Z2V0KToKKwogMjAxNi0xMi0xMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVl
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwOTY1Mywg
cjIwOTY1NCwgcjIwOTY2MywgYW5kCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CShyZXZpc2lvbiAyMDk2NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ2NCw2ICs0NjQsNyBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfU09VUkNFUwogICAgIGZ0bC9GVExWYWx1ZVJhbmdlLmNwcAogCiAgICAgaGVhcC9BbGxvY2F0
b3JBdHRyaWJ1dGVzLmNwcAorICAgIGhlYXAvQ2VsbENvbnRhaW5lci5jcHAKICAgICBoZWFwL0Nv
ZGVCbG9ja1NldC5jcHAKICAgICBoZWFwL0NvbGxlY3Rpb25TY29wZS5jcHAKICAgICBoZWFwL0Nv
bnNlcnZhdGl2ZVJvb3RzLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDIwOTY2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03NTIsNiArNzUyLDcg
QEAKIAkJMEZEQjJDRUExNzQ4OTZDNzAwN0IzQzFCIC8qIENvbmN1cnJlbnRKU0xvY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGREIyQ0U5MTc0ODk2
QzcwMDdCM0MxQiAvKiBDb25jdXJyZW50SlNMb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZEREJGQjUxNjY2RUVEODAwQzU1RkVGIC8qIERG
R1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZEREJGQjIxNjY2RUVENTAwQzU1RkVGIC8qIERGR1ZhcmlhYmxl
QWNjZXNzRGF0YUR1bXAuY3BwICovOyB9OwogCQkwRkREQkZCNjE2NjZFRURBMDBDNTVGRUYgLyog
REZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZEREJGQjMxNjY2RUVENTAwQzU1RkVGIC8qIERGR1ZhcmlhYmxl
QWNjZXNzRGF0YUR1bXAuaCAqLzsgfTsKKwkJMEZERTg3RjkxREZEMEM3NjAwNjRDMzkwIC8qIENl
bGxDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZERTg3RjgxREZEMEM2RDAwNjRDMzkwIC8qIENlbGxDb250YWluZXIuY3BwICovOyB9
OwogCQkwRkRGNjdEMjFEOUM2RDI3MDAxQjk4MjUgLyogQjNLaW5kLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkRGNjdEMTFEOUM2MDg2MDAxQjk4MjUg
LyogQjNLaW5kLmggKi87IH07CiAJCTBGREY2N0QzMUQ5QzZEMkEwMDFCOTgyNSAvKiBCM0tpbmQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZERjY3
RDAxRDlDNjA4NjAwMUI5ODI1IC8qIEIzS2luZC5jcHAgKi87IH07CiAJCTBGREY2N0Q2MUQ5REM0
NDAwMDFCOTgyNSAvKiBBaXJLaW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGREY2N0Q0MUQ5REM0M0UwMDFCOTgyNSAvKiBBaXJLaW5kLmNwcCAq
LzsgfTsKQEAgLTMxNzksNiArMzE4MCw3IEBACiAJCTBGREIyQ0U5MTc0ODk2QzcwMDdCM0MxQiAv
KiBDb25jdXJyZW50SlNMb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bmN1cnJlbnRKU0xvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEREJGQjIx
NjY2RUVENTAwQzU1RkVGIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5j
cHA7IHBhdGggPSBkZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGRERCRkIzMTY2NkVFRDUwMEM1NUZFRiAvKiBERkdWYXJpYWJs
ZUFjY2Vzc0RhdGFEdW1wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1Zh
cmlhYmxlQWNjZXNzRGF0YUR1bXAuaDsgcGF0aCA9IGRmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGFE
dW1wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGREU4N0Y4MURGRDBDNkQwMDY0
QzM5MCAvKiBDZWxsQ29udGFpbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENlbGxDb250YWluZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkRGNjdEMDFEOUM2MDg2MDAxQjk4MjUgLyogQjNLaW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEIzS2luZC5jcHA7IHBhdGggPSBiMy9CM0tpbmQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkRGNjdEMTFEOUM2MDg2MDAxQjk4MjUgLyogQjNL
aW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzS2luZC5oOyBwYXRoID0g
YjMvQjNLaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGREY2N0Q0MUQ5REM0
M0UwMDFCOTgyNSAvKiBBaXJLaW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEFpcktpbmQuY3BwOyBwYXRoID0gYjMvYWlyL0FpcktpbmQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNTYzMiw2ICs1NjM0LDcgQEAKIAkJCQkwRkE3NjIwQTFEQjk1
OUY2MDBCN0EyRkQgLyogQWxsb2NhdGluZ1Njb3BlLmggKi8sCiAJCQkJMEY5NjMwMzUxRDQxOTJD
MzAwNTYwOUQ5IC8qIEFsbG9jYXRvckF0dHJpYnV0ZXMuY3BwICovLAogCQkJCTBGOTYzMDM2MUQ0
MTkyQzMwMDU2MDlEOSAvKiBBbGxvY2F0b3JBdHRyaWJ1dGVzLmggKi8sCisJCQkJMEZERTg3Rjgx
REZEMEM2RDAwNjRDMzkwIC8qIENlbGxDb250YWluZXIuY3BwICovLAogCQkJCTBGMDcwQTQyMUQ1
NDNBODkwMDZFNzIzMiAvKiBDZWxsQ29udGFpbmVyLmggKi8sCiAJCQkJMEYwNzBBNDMxRDU0M0E4
OTAwNkU3MjMyIC8qIENlbGxDb250YWluZXJJbmxpbmVzLmggKi8sCiAJCQkJMEYxQzNERDkxQkJD
RTA5RTAwRTUyM0U0IC8qIENlbGxTdGF0ZS5oICovLApAQCAtMTAyNDYsNiArMTAyNDksNyBAQAog
CQkJCTBGQjEwNThCMTY3NTQ4MzEwMEY4QUI2RSAvKiBQcm9maWxlck9TUkV4aXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZCMTA1OEQxNjc1NDgzNzAwRjhBQjZFIC8qIFByb2ZpbGVyT1NSRXhp
dFNpdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2MTgzMkIxQzQ1QkYwNzAwNzI0NTBCIC8q
IEFpckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkRFODdGOTFERkQwQzc2MDA2NEMz
OTAgLyogQ2VsbENvbnRhaW5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjEzOTEyQjE2Nzcx
QzNBMDA5Q0NCMDcgLyogUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkQzRTQwRDFCNjE4QjY2MDBDODBFMUUgLyogUHJvcGVydHlDb25kaXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTM1Q0ExNTMxREJDM0E1QzAwRjgzNTE2IC8qIERPTUpJVEhl
YXBSYW5nZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NlbGxDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0NlbGxDb250YWluZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NlbGxDb250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNlbGxDb250YWluZXIuaCIKKworI2luY2x1ZGUg
Ik1hcmtlZEJsb2NrSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworYm9vbCBDZWxsQ29u
dGFpbmVyOjppc05ld2x5QWxsb2NhdGVkKEhlYXBDZWxsKiBjZWxsKSBjb25zdAoreworICAgIGlm
IChpc0xhcmdlQWxsb2NhdGlvbigpKQorICAgICAgICByZXR1cm4gbGFyZ2VBbGxvY2F0aW9uKCku
aXNOZXdseUFsbG9jYXRlZCgpOworICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSA9IG1h
cmtlZEJsb2NrKCkuaGFuZGxlKCk7CisgICAgcmV0dXJuICFoYW5kbGUuaXNOZXdseUFsbG9jYXRl
ZFN0YWxlKCkKKyAgICAgICAgJiYgaGFuZGxlLmlzTmV3bHlBbGxvY2F0ZWQoY2VsbCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9D
ZWxsQ29udGFpbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q2VsbENvbnRhaW5lci5oCShyZXZpc2lvbiAyMDk2NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9DZWxsQ29udGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDggQEAg
cHVibGljOgogICAgIGJvb2wgaXNNYXJrZWQoSGVhcENlbGwqKSBjb25zdDsKICAgICBib29sIGlz
TWFya2VkKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBIZWFwQ2VsbCopIGNvbnN0OwogICAg
IAorICAgIGJvb2wgaXNOZXdseUFsbG9jYXRlZChIZWFwQ2VsbCopIGNvbnN0OworICAgIAogICAg
IHZvaWQgbm90ZU1hcmtlZCgpOwogICAgIHZvaWQgYXNzZXJ0VmFsaWRDZWxsKFZNJiwgSGVhcENl
bGwqKSBjb25zdDsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQWxsb2NhdG9yLmNwcAkocmV2aXNpb24gMjA5NjY5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcwLDYg
KzI3MCw3IEBAIHZvaWQgTWFya2VkQWxsb2NhdG9yOjphZGRCbG9jayhNYXJrZWRCbG8KICAgICAg
ICAgbV9ibG9ja3MuYXBwZW5kKGJsb2NrKTsKICAgICAgICAgaWYgKG1fYmxvY2tzLmNhcGFjaXR5
KCkgIT0gb2xkQ2FwYWNpdHkpIHsKICAgICAgICAgICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAg
ICAgICAgICAgICAgTm9Mb2NraW5nTmVjZXNzYXJ5LAogICAgICAgICAgICAgICAgIFsmXSAoRmFz
dEJpdFZlY3RvciYgdmVjdG9yKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQo
dmVjdG9yLCB2ZWN0b3IubnVtQml0cygpID09IG9sZENhcGFjaXR5KTsKICAgICAgICAgICAgICAg
ICB9KTsKQEAgLTI3OCw2ICsyNzksNyBAQCB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6YWRkQmxvY2so
TWFya2VkQmxvCiAgICAgICAgICAgICAKICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
Yml0dmVjdG9yTG9jayk7CiAgICAgICAgICAgICBmb3JFYWNoQml0VmVjdG9yKAorICAgICAgICAg
ICAgICAgIGxvY2tlciwKICAgICAgICAgICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3Rv
cikgewogICAgICAgICAgICAgICAgICAgICB2ZWN0b3IucmVzaXplKG1fYmxvY2tzLmNhcGFjaXR5
KCkpOwogICAgICAgICAgICAgICAgIH0pOwpAQCAtMjg5LDYgKzI5MSw3IEBAIHZvaWQgTWFya2Vk
QWxsb2NhdG9yOjphZGRCbG9jayhNYXJrZWRCbG8KICAgICB9CiAgICAgCiAgICAgZm9yRWFjaEJp
dFZlY3RvcigKKyAgICAgICAgTm9Mb2NraW5nTmVjZXNzYXJ5LAogICAgICAgICBbJl0gKEZhc3RC
aXRWZWN0b3ImIHZlY3RvcikgewogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh2ZWN0b3IsICF2
ZWN0b3JbaW5kZXhdKTsKICAgICAgICAgfSk7CkBAIC0zMDksNiArMzEyLDcgQEAgdm9pZCBNYXJr
ZWRBbGxvY2F0b3I6OnJlbW92ZUJsb2NrKE1hcmtlZAogICAgIG1fZnJlZUJsb2NrSW5kaWNlcy5h
cHBlbmQoYmxvY2stPmluZGV4KCkpOwogICAgIAogICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAg
ICAgIGhvbGRMb2NrKG1fYml0dmVjdG9yTG9jayksCiAgICAgICAgIFsmXSAoRmFzdEJpdFZlY3Rv
ciYgdmVjdG9yKSB7CiAgICAgICAgICAgICB2ZWN0b3JbYmxvY2stPmluZGV4KCldID0gZmFsc2U7
CiAgICAgICAgIH0pOwpAQCAtNDY3LDEyICs0NzEsMTQgQEAgdm9pZCBNYXJrZWRBbGxvY2F0b3I6
OmR1bXBCaXRzKFByaW50U3RyZQogewogICAgIHVuc2lnbmVkIG1heE5hbWVMZW5ndGggPSAwOwog
ICAgIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSgKKyAgICAgICAgTm9Mb2NraW5nTmVjZXNzYXJ5
LAogICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImLCBjb25zdCBjaGFyKiBuYW1lKSB7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4obmFtZSk7CiAgICAgICAgICAgICBtYXhO
YW1lTGVuZ3RoID0gc3RkOjptYXgobWF4TmFtZUxlbmd0aCwgbGVuZ3RoKTsKICAgICAgICAgfSk7
CiAgICAgCiAgICAgZm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKAorICAgICAgICBOb0xvY2tpbmdO
ZWNlc3NhcnksCiAgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yLCBjb25zdCBjaGFy
KiBuYW1lKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQoIiAgICAiLCBuYW1lLCAiOiAiKTsKICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1heE5hbWVMZW5ndGggLSBzdHJsZW4obmFtZSk7
IGktLTspCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0
b3IuaAkocmV2aXNpb24gMjA5NjY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw3ICsxODIsNyBAQCBwdWJsaWM6
CiAjdW5kZWYgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQUNDRVNTT1JTCiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jPgotICAgIHZvaWQgZm9yRWFjaEJpdFZlY3Rvcihjb25zdCBGdW5jJiBmdW5j
KQorICAgIHZvaWQgZm9yRWFjaEJpdFZlY3Rvcihjb25zdCBBYnN0cmFjdExvY2tlciYsIGNvbnN0
IEZ1bmMmIGZ1bmMpCiAgICAgewogI2RlZmluZSBNQVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFD
Syhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCiAgICAgICAgIGZ1bmMobV8gIyMgbG93
ZXJCaXROYW1lKTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9pZCBmb3JFYWNoQml0VmVjdG9yV2l0aE5h
bWUoY29uc3QgRnVuYyYgZnVuYykKKyAgICB2b2lkIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZShj
b25zdCBBYnN0cmFjdExvY2tlciYsIGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgewogI2RlZmluZSBN
QVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1l
KSBcCiAgICAgICAgIGZ1bmMobV8gIyMgbG93ZXJCaXROYW1lLCAjY2FwaXRhbEJpdE5hbWUpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkocmV2aXNp
b24gMjA5NjY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIE1h
cmtlZEJsb2NrOjp0cnlDcmUKICAgICBpZiAoY29tcHV0ZUJhbGFuY2UpIHsKICAgICAgICAgYmFs
YW5jZSsrOwogICAgICAgICBpZiAoIShiYWxhbmNlICUgMTApKQotICAgICAgICAgICAgZGF0YUxv
Zyh0b0NTdHJpbmcoIk1hcmtlZEJsb2NrIEJhbGFuY2U6ICIsIGJhbGFuY2UsICJcbiIpKTsKKyAg
ICAgICAgICAgIGRhdGFMb2coIk1hcmtlZEJsb2NrIEJhbGFuY2U6ICIsIGJhbGFuY2UsICJcbiIp
OwogICAgIH0KICAgICB2b2lkKiBibG9ja1NwYWNlID0gdHJ5RmFzdEFsaWduZWRNYWxsb2MoYmxv
Y2tTaXplLCBibG9ja1NpemUpOwogICAgIGlmICghYmxvY2tTcGFjZSkKQEAgLTcxLDcgKzcxLDcg
QEAgTWFya2VkQmxvY2s6OkhhbmRsZTo6fkhhbmRsZSgpCiAgICAgaWYgKGNvbXB1dGVCYWxhbmNl
KSB7CiAgICAgICAgIGJhbGFuY2UtLTsKICAgICAgICAgaWYgKCEoYmFsYW5jZSAlIDEwKSkKLSAg
ICAgICAgICAgIGRhdGFMb2codG9DU3RyaW5nKCJNYXJrZWRCbG9jayBCYWxhbmNlOiAiLCBiYWxh
bmNlLCAiXG4iKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJNYXJrZWRCbG9jayBCYWxhbmNlOiAi
LCBiYWxhbmNlLCAiXG4iKTsKICAgICB9CiAgICAgcmVtb3ZlRnJvbUFsbG9jYXRvcigpOwogICAg
IG1fYmxvY2stPn5NYXJrZWRCbG9jaygpOwpAQCAtODUsNyArODUsNyBAQCBNYXJrZWRCbG9jazo6
TWFya2VkQmxvY2soVk0mIHZtLCBIYW5kbGUmCiAgICAgLCBtX3ZtKCZ2bSkKIHsKICAgICBpZiAo
ZmFsc2UpCi0gICAgICAgIGRhdGFMb2codG9DU3RyaW5nKFJhd1BvaW50ZXIodGhpcyksICI6IEFs
bG9jYXRlZC5cbiIpKTsKKyAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiBBbGxv
Y2F0ZWQuXG4iKTsKIH0KIAogdGVtcGxhdGU8TWFya2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlNb2Rl
IGVtcHR5TW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBNb2RlIHN3ZWVwTW9kZSwgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlLCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpOZXdseUFsbG9jYXRlZE1vZGUgbmV3bHlBbGxvY2F0ZWRNb2RlLCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpNYXJrc01vZGUgbWFya3NNb2RlPgpAQCAtOTgsNyArOTgsNyBAQCBGcmVl
TGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplCiAgICAgTWFya2VkQmxvY2smIGJs
b2NrID0gdGhpcy0+YmxvY2soKTsKICAgICAKICAgICBpZiAoZmFsc2UpCi0gICAgICAgIGRhdGFM
b2codG9DU3RyaW5nKFJhd1BvaW50ZXIodGhpcyksICIvIiwgUmF3UG9pbnRlcigmYmxvY2spLCAi
OiBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVwIVxuIikpOworICAgICAgICBk
YXRhTG9nKFJhd1BvaW50ZXIodGhpcyksICIvIiwgUmF3UG9pbnRlcigmYmxvY2spLCAiOiBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVwIVxuIik7CiAgICAgCiAgICAgaWYgKE9w
dGlvbnM6OnVzZUJ1bXBBbGxvY2F0b3IoKQogICAgICAgICAmJiBlbXB0eU1vZGUgPT0gSXNFbXB0
eQpAQCAtMTA2LDExICsxMDYsMTQgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3Bl
Y2lhbGl6ZQogICAgICAgICAKICAgICAgICAgLy8gVGhpcyBpcyBhbiBpbmNyZWRpYmx5IHBvd2Vy
ZnVsIGFzc2VydGlvbiB0aGF0IGNoZWNrcyB0aGUgc2FuaXR5IG9mIG91ciBibG9jayBiaXRzLgog
ICAgICAgICBpZiAobWFya3NNb2RlID09IE1hcmtzTm90U3RhbGUgJiYgIWJsb2NrLm1fbWFya3Mu
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBkYXRhTG9nKHRvQ1N0cmluZygiQmxvY2sgIiwgUmF3
UG9pbnRlcigmYmxvY2spLCAiOiBtYXJrcyBub3QgZW1wdHkhXG4iKSk7Ci0gICAgICAgICAgICBk
YXRhTG9nKHRvQ1N0cmluZygiQmxvY2sgbG9jayBpcyBoZWxkOiAiLCBibG9jay5tX2xvY2suaXNI
ZWxkKCksICJcbiIpKTsKLSAgICAgICAgICAgIGRhdGFMb2codG9DU3RyaW5nKCJNYXJraW5nIHZl
cnNpb24gb2YgYmxvY2s6ICIsIGJsb2NrLm1fbWFya2luZ1ZlcnNpb24sICJcbiIpKTsKLSAgICAg
ICAgICAgIGRhdGFMb2codG9DU3RyaW5nKCJNYXJraW5nIHZlcnNpb24gb2YgaGVhcDogIiwgc3Bh
Y2UoKS0+bWFya2luZ1ZlcnNpb24oKSwgIlxuIikpOwotICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIFdURjo6ZGF0YUZpbGUoKS5hdG9taWNhbGx5
KAorICAgICAgICAgICAgICAgIFsmXSAoUHJpbnRTdHJlYW0mIG91dCkgeworICAgICAgICAgICAg
ICAgICAgICBvdXQucHJpbnQoIkJsb2NrICIsIFJhd1BvaW50ZXIoJmJsb2NrKSwgIjogbWFya3Mg
bm90IGVtcHR5IVxuIik7CisgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgiQmxvY2sgbG9j
ayBpcyBoZWxkOiAiLCBibG9jay5tX2xvY2suaXNIZWxkKCksICJcbiIpOworICAgICAgICAgICAg
ICAgICAgICBvdXQucHJpbnQoIk1hcmtpbmcgdmVyc2lvbiBvZiBibG9jazogIiwgYmxvY2subV9t
YXJraW5nVmVyc2lvbiwgIlxuIik7CisgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgiTWFy
a2luZyB2ZXJzaW9uIG9mIGhlYXA6ICIsIHNwYWNlKCktPm1hcmtpbmdWZXJzaW9uKCksICJcbiIp
OworICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKKyAgICAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgY2hhciogc3RhcnRP
Zkxhc3RDZWxsID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGNlbGxBbGlnbihibG9jay5hdG9tcygpICsg
bV9lbmRBdG9tIC0gMSkpOwpAQCAtMTI3LDcgKzEzMCw3IEBAIEZyZWVMaXN0IE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OnNwZWNpYWxpemUKICAgICAgICAgICAgIGJsb2NrLm1fbG9jay51bmxvY2soKTsK
ICAgICAgICAgRnJlZUxpc3QgcmVzdWx0ID0gRnJlZUxpc3Q6OmJ1bXAocGF5bG9hZEVuZCwgcGF5
bG9hZEVuZCAtIHBheWxvYWRCZWdpbik7CiAgICAgICAgIGlmIChmYWxzZSkKLSAgICAgICAgICAg
IGRhdGFMb2codG9DU3RyaW5nKCJRdWlja2x5IHN3ZXB0IGJsb2NrICIsIFJhd1BvaW50ZXIodGhp
cyksICIgd2l0aCBjZWxsIHNpemUgIiwgY2VsbFNpemUoKSwgIiBhbmQgYXR0cmlidXRlcyAiLCBt
X2F0dHJpYnV0ZXMsICI6ICIsIHJlc3VsdCwgIlxuIikpOworICAgICAgICAgICAgZGF0YUxvZygi
UXVpY2tseSBzd2VwdCBibG9jayAiLCBSYXdQb2ludGVyKHRoaXMpLCAiIHdpdGggY2VsbCBzaXpl
ICIsIGNlbGxTaXplKCksICIgYW5kIGF0dHJpYnV0ZXMgIiwgbV9hdHRyaWJ1dGVzLCAiOiAiLCBy
ZXN1bHQsICJcbiIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTg2LDcg
KzE4OSw3IEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemUKICAgICBl
bHNlIGlmIChpc0VtcHR5KQogICAgICAgICBtX2FsbG9jYXRvci0+c2V0SXNFbXB0eShOb0xvY2tp
bmdOZWNlc3NhcnksIHRoaXMsIHRydWUpOwogICAgIGlmIChmYWxzZSkKLSAgICAgICAgZGF0YUxv
Zyh0b0NTdHJpbmcoIlNsb3dseSBzd2VwdCBibG9jayAiLCBSYXdQb2ludGVyKCZibG9jayksICIg
d2l0aCBjZWxsIHNpemUgIiwgY2VsbFNpemUoKSwgIiBhbmQgYXR0cmlidXRlcyAiLCBtX2F0dHJp
YnV0ZXMsICI6ICIsIHJlc3VsdCwgIlxuIikpOworICAgICAgICBkYXRhTG9nKCJTbG93bHkgc3dl
cHQgYmxvY2sgIiwgUmF3UG9pbnRlcigmYmxvY2spLCAiIHdpdGggY2VsbCBzaXplICIsIGNlbGxT
aXplKCksICIgYW5kIGF0dHJpYnV0ZXMgIiwgbV9hdHRyaWJ1dGVzLCAiOiAiLCByZXN1bHQsICJc
biIpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTI2Miw3ICsyNjUsNyBAQCBGcmVlTGlz
dCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlCiAgICAgSGVhcFZlcnNpb24gbWFya2lu
Z1ZlcnNpb24gPSBzcGFjZSgpLT5tYXJraW5nVmVyc2lvbigpOwogICAgIGJvb2wgbWFya3NBcmVV
c2VmdWwgPSAhYmxvY2soKS5hcmVNYXJrc1N0YWxlKG1hcmtpbmdWZXJzaW9uKTsKICAgICAKLSAg
ICBpZiAoc3BhY2UoKS0+aXNNYXJraW5nKCkgJiYgaGVhcCgpLT5jb2xsZWN0aW9uU2NvcGUoKSA9
PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpCisgICAgaWYgKHNwYWNlKCktPmlzTWFya2luZygpKQog
ICAgICAgICBtYXJrc0FyZVVzZWZ1bCB8PSBibG9jaygpLm1hcmtzQ29udmV5TGl2ZW5lc3NEdXJp
bmdNYXJraW5nKG1hcmtpbmdWZXJzaW9uKTsKICAgICAKICAgICBpZiAoIW1hcmtzQXJlVXNlZnVs
KQpAQCAtMjg3LDEyICsyOTAsMTIgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxs
b2NhdGluZwogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soYmxvY2soKS5tX2xvY2spOwogICAg
IAogICAgIGlmIChmYWxzZSkKLSAgICAgICAgZGF0YUxvZyh0b0NTdHJpbmcoUmF3UG9pbnRlcih0
aGlzKSwgIjogTWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmchXG4iKSk7CisgICAg
ICAgIGRhdGFMb2coUmF3UG9pbnRlcih0aGlzKSwgIjogTWFya2VkQmxvY2s6OkhhbmRsZTo6c3Rv
cEFsbG9jYXRpbmchXG4iKTsKICAgICBBU1NFUlQoIWFsbG9jYXRvcigpLT5pc0FsbG9jYXRlZChO
b0xvY2tpbmdOZWNlc3NhcnksIHRoaXMpKTsKIAogICAgIGlmICghaXNGcmVlTGlzdGVkKCkpIHsK
ICAgICAgICAgaWYgKGZhbHNlKQotICAgICAgICAgICAgZGF0YUxvZyh0b0NTdHJpbmcoIlRoZXJl
IGFpbid0IG5vIG5ld2x5IGFsbG9jYXRlZC5cbiIpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlRo
ZXJlIGFpbid0IG5vIG5ld2x5IGFsbG9jYXRlZC5cbiIpOwogICAgICAgICAvLyBUaGlzIG1lYW5z
IHRoYXQgd2UgZWl0aGVyIGRpZG4ndCB1c2UgdGhpcyBibG9jayBhdCBhbGwgZm9yIGFsbG9jYXRp
b24gc2luY2UgbGFzdCBHQywKICAgICAgICAgLy8gb3Igc29tZW9uZSBoYWQgYWxyZWFkeSBkb25l
IHN0b3BBbGxvY2F0aW5nKCkgYmVmb3JlLgogICAgICAgICBBU1NFUlQoZnJlZUxpc3QuYWxsb2Nh
dGlvbldpbGxGYWlsKCkpOwpAQCAtMzAwLDcgKzMwMyw3IEBAIHZvaWQgTWFya2VkQmxvY2s6Okhh
bmRsZTo6c3RvcEFsbG9jYXRpbmcKICAgICB9CiAgICAgCiAgICAgaWYgKGZhbHNlKQotICAgICAg
ICBkYXRhTG9nKHRvQ1N0cmluZygiRnJlZSBsaXN0OiAiLCBmcmVlTGlzdCwgIlxuIikpOworICAg
ICAgICBkYXRhTG9nKCJGcmVlIGxpc3Q6ICIsIGZyZWVMaXN0LCAiXG4iKTsKICAgICAKICAgICAv
LyBSb2xsIGJhY2sgdG8gYSBjb2hlcmVudCBzdGF0ZSBmb3IgSGVhcCBpbnRyb3NwZWN0aW9uLiBD
ZWxscyBuZXdseQogICAgIC8vIGFsbG9jYXRlZCBmcm9tIG91ciBmcmVlIGxpc3QgYXJlIG5vdCBj
dXJyZW50bHkgbWFya2VkLCBzbyB3ZSBuZWVkIGFub3RoZXIKQEAgLTMxOSw3ICszMjIsNyBAQCB2
b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BBbGxvY2F0aW5nCiAgICAgICAgIGZyZWVMaXN0
LAogICAgICAgICBbJl0gKEhlYXBDZWxsKiBjZWxsKSB7CiAgICAgICAgICAgICBpZiAoZmFsc2Up
Ci0gICAgICAgICAgICAgICAgZGF0YUxvZyh0b0NTdHJpbmcoIkZyZWUgY2VsbDogIiwgUmF3UG9p
bnRlcihjZWxsKSwgIlxuIikpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIkZyZWUgY2VsbDog
IiwgUmF3UG9pbnRlcihjZWxsKSwgIlxuIik7CiAgICAgICAgICAgICBpZiAobV9hdHRyaWJ1dGVz
LmRlc3RydWN0aW9uID09IE5lZWRzRGVzdHJ1Y3Rpb24pCiAgICAgICAgICAgICAgICAgY2VsbC0+
emFwKCk7CiAgICAgICAgICAgICBjbGVhck5ld2x5QWxsb2NhdGVkKGNlbGwpOwpAQCAtMzQ2LDEz
ICszNDksMTMgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6cmVzdW1lQWxsbwogICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGJsb2NrKCkubV9sb2NrKTsKICAgICAgICAgCiAg
ICAgICAgIGlmIChmYWxzZSkKLSAgICAgICAgICAgIGRhdGFMb2codG9DU3RyaW5nKFJhd1BvaW50
ZXIodGhpcyksICI6IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc3VtZUFsbG9jYXRpbmchXG4iKSk7
CisgICAgICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIodGhpcyksICI6IE1hcmtlZEJsb2NrOjpI
YW5kbGU6OnJlc3VtZUFsbG9jYXRpbmchXG4iKTsKICAgICAgICAgQVNTRVJUKCFhbGxvY2F0b3Io
KS0+aXNBbGxvY2F0ZWQoTm9Mb2NraW5nTmVjZXNzYXJ5LCB0aGlzKSk7CiAgICAgICAgIEFTU0VS
VCghaXNGcmVlTGlzdGVkKCkpOwogICAgICAgICAKICAgICAgICAgaWYgKCFoYXNBbnlOZXdseUFs
bG9jYXRlZCgpKSB7CiAgICAgICAgICAgICBpZiAoZmFsc2UpCi0gICAgICAgICAgICAgICAgZGF0
YUxvZyh0b0NTdHJpbmcoIlRoZXJlIGFpbid0IG5vIG5ld2x5IGFsbG9jYXRlZC5cbiIpKTsKKyAg
ICAgICAgICAgICAgICBkYXRhTG9nKCJUaGVyZSBhaW4ndCBubyBuZXdseSBhbGxvY2F0ZWQuXG4i
KTsKICAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMgd2UgaGFkIGFscmVhZHkgZXhoYXVzdGVkIHRo
ZSBibG9jayB3aGVuIHdlIHN0b3BwZWQgYWxsb2NhdGlvbi4KICAgICAgICAgICAgIHJldHVybiBG
cmVlTGlzdCgpOwogICAgICAgICB9CkBAIC00MDEsNyArNDA0LDcgQEAgdm9pZCBNYXJrZWRCbG9j
azo6YWJvdXRUb01hcmtTbG93KEhlYXBWZQogICAgIGlmIChoYW5kbGUoKS5hbGxvY2F0b3IoKS0+
aXNBbGxvY2F0ZWQoaG9sZExvY2soYWxsb2NhdG9yLT5iaXR2ZWN0b3JMb2NrKCkpLCAmaGFuZGxl
KCkpCiAgICAgICAgIHx8ICFtYXJrc0NvbnZleUxpdmVuZXNzRHVyaW5nTWFya2luZyhtYXJraW5n
VmVyc2lvbikpIHsKICAgICAgICAgaWYgKGZhbHNlKQotICAgICAgICAgICAgZGF0YUxvZyh0b0NT
dHJpbmcoUmF3UG9pbnRlcih0aGlzKSwgIjogQ2xlYXJpbmcgbWFya3Mgd2l0aG91dCBkb2luZyBh
bnl0aGluZyBlbHNlLlxuIikpOworICAgICAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMp
LCAiOiBDbGVhcmluZyBtYXJrcyB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2UuXG4iKTsKICAg
ICAgICAgLy8gV2UgYWxyZWFkeSBrbm93IHRoYXQgdGhlIGJsb2NrIGlzIGZ1bGwgYW5kIGlzIGFs
cmVhZHkgcmVjb2duaXplZCBhcyBzdWNoLCBvciB0aGF0IHRoZQogICAgICAgICAvLyBibG9jayBk
aWQgbm90IHN1cnZpdmUgdGhlIHByZXZpb3VzIEdDLiBTbywgd2UgY2FuIGNsZWFyIG1hcmsgYml0
cyB0aGUgb2xkIGZhc2hpb25lZAogICAgICAgICAvLyB3YXkuIE5vdGUgdGhhdCBpdCdzIHBvc3Np
YmxlIGZvciBzdWNoIGEgYmxvY2sgdG8gaGF2ZSBuZXdseUFsbG9jYXRlZCB3aXRoIGFuIHVwLXRv
LQpAQCAtNDExLDcgKzQxNCw3IEBAIHZvaWQgTWFya2VkQmxvY2s6OmFib3V0VG9NYXJrU2xvdyhI
ZWFwVmUKICAgICAgICAgbV9tYXJrcy5jbGVhckFsbCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGlmIChmYWxzZSkKLSAgICAgICAgICAgIGRhdGFMb2codG9DU3RyaW5nKFJhd1BvaW50ZXIodGhp
cyksICI6IERvaW5nIHRoaW5ncy5cbiIpKTsKKyAgICAgICAgICAgIGRhdGFMb2coUmF3UG9pbnRl
cih0aGlzKSwgIjogRG9pbmcgdGhpbmdzLlxuIik7CiAgICAgICAgIEhlYXBWZXJzaW9uIG5ld2x5
QWxsb2NhdGVkVmVyc2lvbiA9IHNwYWNlKCktPm5ld2x5QWxsb2NhdGVkVmVyc2lvbigpOwogICAg
ICAgICBpZiAoaGFuZGxlKCkubV9uZXdseUFsbG9jYXRlZFZlcnNpb24gPT0gbmV3bHlBbGxvY2F0
ZWRWZXJzaW9uKSB7CiAgICAgICAgICAgICAvLyBNZXJnZSB0aGUgY29udGVudHMgb2YgbWFya2Vk
IGludG8gbmV3bHlBbGxvY2F0ZWQuIElmIHdlIGdldCB0aGUgZnVsbCBzZXQgb2YgYml0cwpAQCAt
NDc3LDcgKzQ4MCw3IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQ29uc3VtZUZyZWUK
IHsKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGJsb2NrKCkubV9sb2NrKTsKICAgICBpZiAo
ZmFsc2UpCi0gICAgICAgIGRhdGFMb2codG9DU3RyaW5nKFJhd1BvaW50ZXIodGhpcyksICI6IE1h
cmtlZEJsb2NrOjpIYW5kbGU6OmRpZENvbnN1bWVGcmVlTGlzdCFcbiIpKTsKKyAgICAgICAgZGF0
YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRDb25zdW1l
RnJlZUxpc3QhXG4iKTsKICAgICBBU1NFUlQoaXNGcmVlTGlzdGVkKCkpOwogICAgIG1faXNGcmVl
TGlzdGVkID0gZmFsc2U7CiAgICAgYWxsb2NhdG9yKCktPnNldElzQWxsb2NhdGVkKE5vTG9ja2lu
Z05lY2Vzc2FyeSwgdGhpcywgdHJ1ZSk7CkBAIC01NzMsNiArNTc2LDE2IEBAIHZvaWQgTWFya2Vk
QmxvY2s6OmFzc2VydFZhbGlkQ2VsbChWTSYgdm0KIH0KICNlbmRpZgogCit2b2lkIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OmR1bXBTdGF0ZShQcmludFN0cmVhbSYgb3V0KQoreworICAgIENvbW1hUHJp
bnRlciBjb21tYTsKKyAgICBhbGxvY2F0b3IoKS0+Zm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKAor
ICAgICAgICBob2xkTG9jayhhbGxvY2F0b3IoKS0+Yml0dmVjdG9yTG9jaygpKSwKKyAgICAgICAg
WyZdIChGYXN0Qml0VmVjdG9yJiBiaXR2ZWN0b3IsIGNvbnN0IGNoYXIqIG5hbWUpIHsKKyAgICAg
ICAgICAgIG91dC5wcmludChjb21tYSwgbmFtZSwgIjoiLCBiaXR2ZWN0b3JbaW5kZXgoKV0gPyAi
WUVTIiA6ICJubyIpOworICAgICAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5h
bWVzcGFjZSBXVEYgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9j
ay5oCShyZXZpc2lvbiAyMDk2NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNiArMTg3LDggQEAgcHVibGljOgogICAg
ICAgICB2b2lkIGRpZEFkZFRvQWxsb2NhdG9yKE1hcmtlZEFsbG9jYXRvciosIHNpemVfdCBpbmRl
eCk7CiAgICAgICAgIHZvaWQgZGlkUmVtb3ZlRnJvbUFsbG9jYXRvcigpOwogICAgICAgICAKKyAg
ICAgICAgdm9pZCBkdW1wU3RhdGUoUHJpbnRTdHJlYW0mKTsKKyAgICAgICAgCiAgICAgcHJpdmF0
ZToKICAgICAgICAgSGFuZGxlKEhlYXAmLCB2b2lkKik7CiAgICAgICAgIApAQCAtMjk4LDYgKzMw
MCw5IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHJlc2V0TWFya3MoKTsKICAgICAKKyAgICBi
b29sIGlzTWFya2VkUmF3KGNvbnN0IHZvaWQqIHApOworICAgIEhlYXBWZXJzaW9uIG1hcmtpbmdW
ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXJraW5nVmVyc2lvbjsgfQorICAgIAogcHJpdmF0
ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0b21BbGlnbm1lbnRNYXNrID0gYXRvbVNpemUg
LSAxOwogCkBAIC01MTgsOSArNTIzLDE0IEBAIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OmFzc2VydE0KICAgICBibG9jaygpLmFzc2VydE1hcmtzTm90U3RhbGUoKTsKIH0KIAoraW5s
aW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkUmF3KGNvbnN0IHZvaWQqIHApCit7CisgICAg
cmV0dXJuIG1fbWFya3MuZ2V0KGF0b21OdW1iZXIocCkpOworfQorCiBpbmxpbmUgYm9vbCBNYXJr
ZWRCbG9jazo6aXNNYXJrZWQoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGNvbnN0IHZvaWQq
IHApCiB7Ci0gICAgcmV0dXJuIGFyZU1hcmtzU3RhbGUobWFya2luZ1ZlcnNpb24pID8gZmFsc2Ug
OiBtX21hcmtzLmdldChhdG9tTnVtYmVyKHApKTsKKyAgICByZXR1cm4gYXJlTWFya3NTdGFsZSht
YXJraW5nVmVyc2lvbikgPyBmYWxzZSA6IGlzTWFya2VkUmF3KHApOwogfQogCiBpbmxpbmUgYm9v
bCBNYXJrZWRCbG9jazo6aXNNYXJrZWRDb25jdXJyZW50bHkoSGVhcFZlcnNpb24gbWFya2luZ1Zl
cnNpb24sIGNvbnN0IHZvaWQqIHApCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRCbG9ja0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkocmV2aXNpb24gMjA5NjY5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJNYXJrZWRBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJN
YXJrZWRCbG9jay5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisjaW5jbHVkZSAiVk0uaCIK
IAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTUxLDYgKzUyLDggQEAgaW5saW5lIGJvb2wgTWFya2Vk
QmxvY2s6Om1hcmtzQ29udmV5TGl2ZQogICAgIC8vIGJhY2siIHN0YXRlIG9ubHkgbWFrZXMgc2Vu
c2Ugd2hlbiB3ZSdyZSBpbiBhIGNvbmN1cnJlbnQgY29sbGVjdGlvbiBhbmQgaGF2ZSB0byBiZQog
ICAgIC8vIGNvbnNlcnZhdGl2ZS4KICAgICBBU1NFUlQoc3BhY2UoKS0+aXNNYXJraW5nKCkpOwor
ICAgIGlmIChoZWFwKCktPmNvbGxlY3Rpb25TY29wZSgpICE9IENvbGxlY3Rpb25TY29wZTo6RnVs
bCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBtX21hcmtpbmdWZXJzaW9uID09
IE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbgogICAgICAgICB8fCBNYXJrZWRTcGFjZTo6bmV4dFZl
cnNpb24obV9tYXJraW5nVmVyc2lvbikgPT0gbWFya2luZ1ZlcnNpb247CiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCShyZXZpc2lvbiAyMDk2Njkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNSwxNyArMTM1LDY4IEBAIHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZEpTQ2Vs
bE9yQXV4aWxpYXIKICAgICAKICAgICBBU1NFUlQoIW1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJr
VmlvbGF0aW9uKTsKICAgICAKKyAgICBhdXRvIHZhbGlkYXRlQ2VsbCA9IFsmXSAoSlNDZWxsKiBq
c0NlbGwpIHsKKyAgICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQgPSBqc0NlbGwtPnN0cnVj
dHVyZUlEKCk7CisgICAgICAgIAorICAgICAgICBhdXRvIGRpZSA9IFsmXSAoY29uc3QgY2hhciog
dGV4dCkgeworICAgICAgICAgICAgV1RGOjpkYXRhRmlsZSgpLmF0b21pY2FsbHkoCisgICAgICAg
ICAgICAgICAgWyZdIChQcmludFN0cmVhbSYgb3V0KSB7CisgICAgICAgICAgICAgICAgICAgIG91
dC5wcmludCh0ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCJHQyB0eXBlOiAi
LCBoZWFwKCktPmNvbGxlY3Rpb25TY29wZSgpLCAiXG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
b3V0LnByaW50KCJPYmplY3QgYXQ6ICIsIFJhd1BvaW50ZXIoanNDZWxsKSwgIlxuIik7CisgICAg
ICAgICAgICAgICAgICAgIG91dC5wcmludCgiU3RydWN0dXJlIElEOiAiLCBzdHJ1Y3R1cmVJRCwg
IiAoMHgiLCBmb3JtYXQoIiV4Iiwgc3RydWN0dXJlSUQpLCAiKVxuIik7CisgICAgICAgICAgICAg
ICAgICAgIG91dC5wcmludCgiU3RydWN0dXJlIElEIHRhYmxlIHNpemU6ICIsIGhlYXAoKS0+c3Ry
dWN0dXJlSURUYWJsZSgpLnNpemUoKSwgIlxuIik7CisgICAgICAgICAgICAgICAgICAgIG91dC5w
cmludCgiT2JqZWN0IGNvbnRlbnRzOiIpOworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgMjsgKytpKQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50
KCIgIiwgZm9ybWF0KCIweCUwMTZsbHgiLCBiaXR3aXNlX2Nhc3Q8dWludDY0X3QqPihqc0NlbGwp
W2ldKSk7CisgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgQ2VsbENvbnRhaW5lciBjb250YWluZXIgPSBqc0NlbGwtPmNlbGxDb250YWluZXIo
KTsKKyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCJJcyBtYXJrZWQ6ICIsIGNvbnRhaW5l
ci5pc01hcmtlZChqc0NlbGwpLCAiXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50
KCJJcyBuZXdseSBhbGxvY2F0ZWQ6ICIsIGNvbnRhaW5lci5pc05ld2x5QWxsb2NhdGVkKGpzQ2Vs
bCksICJcbiIpOworICAgICAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyLmlzTWFya2VkQmxv
Y2soKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgTWFya2VkQmxvY2smIGJsb2NrID0gY29u
dGFpbmVyLm1hcmtlZEJsb2NrKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQo
IkJsb2NrOiAiLCBSYXdQb2ludGVyKCZibG9jayksICJcbiIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgYmxvY2suaGFuZGxlKCkuZHVtcFN0YXRlKG91dCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBvdXQucHJpbnQoIlxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQo
IklzIG1hcmtlZCByYXc6ICIsIGJsb2NrLmlzTWFya2VkUmF3KGpzQ2VsbCksICJcbiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCJNYXJraW5nIHZlcnNpb246ICIsIGJsb2Nr
Lm1hcmtpbmdWZXJzaW9uKCksICJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnBy
aW50KCJIZWFwIG1hcmtpbmcgdmVyc2lvbjogIiwgaGVhcCgpLT5vYmplY3RTcGFjZSgpLm1hcmtp
bmdWZXJzaW9uKCksICJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCJJ
cyBuZXdseSBhbGxvY2F0ZWQgcmF3OiAiLCBibG9jay5oYW5kbGUoKS5pc05ld2x5QWxsb2NhdGVk
KGpzQ2VsbCksICJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCJOZXds
eSBhbGxvY2F0ZWQgdmVyc2lvbjogIiwgYmxvY2suaGFuZGxlKCkubmV3bHlBbGxvY2F0ZWRWZXJz
aW9uKCksICJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCJIZWFwIG5l
d2x5IGFsbG9jYXRlZCB2ZXJzaW9uOiAiLCBoZWFwKCktPm9iamVjdFNwYWNlKCkubmV3bHlBbGxv
Y2F0ZWRWZXJzaW9uKCksICJcbiIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgLy8gSXQncyBub3QgT0sgZm9yIHRoZSBz
dHJ1Y3R1cmUgdG8gYmUgbnVsbCBhdCBhbnkgR0Mgc2NhbiBwb2ludC4gV2UgbXVzdCBub3QgR0Mg
d2hpbGUKKyAgICAgICAgLy8gYW4gb2JqZWN0IGlzIG5vdCBmdWxseSBpbml0aWFsaXplZC4KKyAg
ICAgICAgaWYgKCFzdHJ1Y3R1cmVJRCkKKyAgICAgICAgICAgIGRpZSgiR0Mgc2NhbiBmb3VuZCBj
b3JydXB0IG9iamVjdDogc3RydWN0dXJlSUQgaXMgemVybyFcbiIpOworICAgICAgICAKKyAgICAg
ICAgLy8gSXQncyBub3QgT0sgZm9yIHRoZSBzdHJ1Y3R1cmUgdG8gYmUgbnVrZWQgYXQgYW55IEdD
IHNjYW4gcG9pbnQuCisgICAgICAgIGlmIChpc051a2VkKHN0cnVjdHVyZUlEKSkKKyAgICAgICAg
ICAgIGRpZSgiR0Mgc2NhbiBmb3VuZCBvYmplY3QgaW4gYmFkIHN0YXRlOiBzdHJ1Y3R1cmVJRCBp
cyBudWtlZCFcbiIpOworICAgICAgICAKKyAgICAgICAgLy8gVGhpcyBkZXRlY3RzIHRoZSB3b3Jz
dCBvZiB0aGUgYmFkbmVzcy4KKyAgICAgICAgaWYgKHN0cnVjdHVyZUlEID49IGhlYXAoKS0+c3Ry
dWN0dXJlSURUYWJsZSgpLnNpemUoKSkKKyAgICAgICAgICAgIGRpZSgiR0Mgc2NhbiBmb3VuZCBj
b3JydXB0IG9iamVjdDogc3RydWN0dXJlSUQgaXMgb3V0IG9mIGJvdW5kcyFcbiIpOworICAgIH07
CisgICAgCisgICAgLy8gSW4gZGVidWcgbW9kZSwgd2UgdmFsaWRhdGUgYmVmb3JlIG1hcmtpbmcg
c2luY2UgdGhpcyBtYWtlcyBpdCBjbGVhcmVyIHdoYXQgdGhlIHByb2JsZW0KKyAgICAvLyB3YXMu
IEl0J3MgYWxzbyBzbG93ZXIsIHNvIHdlIGRvbid0IGRvIGl0IG5vcm1hbGx5LgorICAgIGlmICgh
QVNTRVJUX0RJU0FCTEVEICYmIGhlYXBDZWxsLT5jZWxsS2luZCgpID09IEhlYXBDZWxsOjpKU0Nl
bGwpCisgICAgICAgIHZhbGlkYXRlQ2VsbChzdGF0aWNfY2FzdDxKU0NlbGwqPihoZWFwQ2VsbCkp
OworICAgIAogICAgIGlmIChIZWFwOjp0ZXN0QW5kU2V0TWFya2VkKG1fbWFya2luZ1ZlcnNpb24s
IGhlYXBDZWxsKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIHN3aXRjaCAoaGVhcENlbGwt
PmNlbGxLaW5kKCkpIHsKICAgICBjYXNlIEhlYXBDZWxsOjpKU0NlbGw6IHsKKyAgICAgICAgLy8g
V2UgaGF2ZSBhbXBsZSBidWRnZXQgdG8gcGVyZm9ybSB2YWxpZGF0aW9uIGhlcmUuCisgICAgCiAg
ICAgICAgIEpTQ2VsbCoganNDZWxsID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oaGVhcENlbGwpOwot
ICAgICAgICAKLSAgICAgICAgaWYgKCFqc0NlbGwtPnN0cnVjdHVyZSgpKSB7Ci0gICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQor
ICAgICAgICB2YWxpZGF0ZUNlbGwoanNDZWxsKTsKICAgICAgICAgCiAgICAgICAgIGpzQ2VsbC0+
c2V0Q2VsbFN0YXRlKENlbGxTdGF0ZTo6R3JleSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZpc2lvbiAyMDk2NjkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM2LDYg
KzMzNiw4IEBAIHN0YXRpYyB2b2lkIHJlY29tcHV0ZURlcGVuZGVudE9wdGlvbnMoKQogICAgIE9w
dGlvbnM6OnVzZUNvbmN1cnJlbnRHQygpID0gZmFsc2U7CiAjZW5kaWYKICAgICAKKyAgICBPcHRp
b25zOjp1c2VDb25jdXJyZW50R0MoKSA9IHRydWU7CisgICAgCiAjaWYgT1MoV0lORE9XUykgJiYg
Q1BVKFg4NikgCiAgICAgLy8gRGlzYWJsZSBKSVQgb24gV2luZG93cyBpZiBTU0UyIGlzIG5vdCBw
cmVzZW50IAogICAgIGlmICghTWFjcm9Bc3NlbWJsZXJYODY6OnN1cHBvcnRzRmxvYXRpbmdQb2lu
dCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUlEVGFibGUuaAkocmV2aXNpb24gMjA5NjY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw2ICs5MCw4IEBA
IHB1YmxpYzoKICAgICBTdHJ1Y3R1cmVJRCBhbGxvY2F0ZUlEKFN0cnVjdHVyZSopOwogCiAgICAg
dm9pZCBmbHVzaE9sZFRhYmxlcygpOworICAgIAorICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaXplOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCByZXNpemUoc2l6ZV90IG5ld0Nh
cGFjaXR5KTsKQEAgLTEyMSw3ICsxMjMsOSBAQCBwcml2YXRlOgogaW5saW5lIFN0cnVjdHVyZSog
U3RydWN0dXJlSURUYWJsZTo6Z2V0KFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEKQogewogI2lmIFVT
RShKU1ZBTFVFNjQpCi0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc3RydWN0
dXJlSUQgJiYgc3RydWN0dXJlSUQgPCBtX2NhcGFjaXR5KTsKKyAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTihzdHJ1Y3R1cmVJRCk7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04oIWlzTnVrZWQoc3RydWN0dXJlSUQpKTsKKyAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTihzdHJ1Y3R1cmVJRCA8IG1fY2FwYWNpdHkpOwogICAgIHJldHVybiB0
YWJsZSgpW3N0cnVjdHVyZUlEXS5zdHJ1Y3R1cmU7CiAjZWxzZQogICAgIHJldHVybiBzdHJ1Y3R1
cmVJRDsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDk2NjkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDE2LTEyLTEwICBGaWxpcCBQaXpsbyAg
PGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgTWFya2VkQmxvY2s6Om1hcmtzQ29udmV5TGl2
ZW5lc3NEdXJpbmdNYXJraW5nIHNob3VsZCB0YWtlIGludG8gYWNjb3VudCBjb2xsZWN0aW9uIHNj
b3BlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU3
NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIFRvIGZpbmQgdGhpcyBidWcsIEkgbmVlZGVkIHRvIHNlcmlvdXNseSBiZWVmIHVwIG91ciBs
b2dnaW5nIGluZnJhc3RydWN0dXJlLgorICAgICAgICAKKyAgICAgICAgSXQncyBub3cgdGhlIGNh
c2UgdGhhdDoKKyAgICAgICAgCisgICAgICAgICAgICBkYXRhTG9nKC4uLik7CisgICAgICAgIAor
ICAgICAgICB3aWxsIHByaW50IGl0cyBvdXRwdXQgYXRvbWljYWxseS4gVGhpcyBoYXBwZW5zIHdp
dGggc29tZSBjYXJlZnVsIG1hZ2ljOgorICAgICAgICAKKyAgICAgICAgLSBkYXRhRmlsZSgpIGlz
IG5vdyBhIExvY2tlZFByaW50U3RyZWFtIHRoYXQgbG9ja3MgYXJvdW5kIHByaW50KCkuCisgICAg
ICAgIAorICAgICAgICAtIFRoZSBsb2NrIGlzIGEgcmVjdXJzaXZlIGxvY2sgdmlhIFJlY3Vyc2l2
ZUxvY2tBZGFwdGVyPD4sIHNvIGlmIHRoZSBkdW1wIG1ldGhvZHMgZW5kCisgICAgICAgICAgdXAg
Y2FsbGluZyBiYWNrIGludG8gZGF0YUxvZygpIHRoZW4gaXQganVzdCB3b3Jrcy4gVGhpcyBpcyBp
bXBvcnRhbnQ6IHNheSB0aGUgZHVtcCgpCisgICAgICAgICAgY2FsbHMgYSBnZXR0ZXIgdGhhdCBp
dHNlbGYgZG9lcyBsb2dnaW5nLCBtYXliZSBiZWNhdXNlIGl0J3MgZW5jb3VudGVyaW5nIGJhZG5l
c3MgYW5kCisgICAgICAgICAgd2FudHMgdG8gcmVwb3J0IGl0IGJlZm9yZSBjcmFzaGluZykuCisg
ICAgICAgIAorICAgICAgICAtIFRoZSBsb2NrIGlzIGEgV29yZExvY2sgc28gdGhhdCBQYXJraW5n
TG90IGFuZCBMb2NrIGNhbiBrZWVwIHVzaW5nIGRhdGFMb2coKSBmb3IKKyAgICAgICAgICBkZWJ1
Z2dpbmcuIFdlIHByb2JhYmx5IHdvbid0IG5lZWQgdG8gZGVidWcgV29yZExvY2sgYW55dGltZSBz
b29uIC0gdGhlIGFsZ29yaXRobSBpcworICAgICAgICAgIHNvIHNpbXBsZS4KKyAgICAgICAgCisg
ICAgICAgIC0gTG9ja2VkUHJpbnRTdHJlYW06OnByaW50KC4uLikgY2F1c2VzIHRoZSBwcmludCBj
YWxsYmFja3Mgb2YgaXRzIGFyZ3VtZW50cyB0byBydW4gb24KKyAgICAgICAgICB0aGUgdW5kZXJs
eWluZyBQcmludFN0cmVhbSwgc28gdGhhdCB5b3UgZG9uJ3QgbmVlZCB0byBkbyByZWN1cnNpdmUg
bG9jayBhY3F1aXNpdGlvbgorICAgICAgICAgIG9uIGVhY2ggaW5kaXZpZHVhbCBhcmd1bWVudCBh
bmQgd2hhdGV2ZXIgcHJpbnRpbmcgaXQgZG9lcyByZWN1cnNpdmVseS4KKworICAgICAgICAqIFdU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiB3dGYvRGF0YUxvZy5jcHA6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVM
b2dGaWxlT25jZSk6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVMb2dGaWxlKToKKyAgICAgICAg
KFdURjo6ZGF0YUZpbGUpOgorICAgICAgICAqIHd0Zi9EYXRhTG9nLmg6CisgICAgICAgICogd3Rm
L0xvY2tlZFByaW50U3RyZWFtLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OkxvY2tlZFByaW50
U3RyZWFtOjpMb2NrZWRQcmludFN0cmVhbSk6CisgICAgICAgIChXVEY6OkxvY2tlZFByaW50U3Ry
ZWFtOjp+TG9ja2VkUHJpbnRTdHJlYW0pOgorICAgICAgICAoV1RGOjpMb2NrZWRQcmludFN0cmVh
bTo6dnByaW50Zik6CisgICAgICAgIChXVEY6OkxvY2tlZFByaW50U3RyZWFtOjpmbHVzaCk6Cisg
ICAgICAgIChXVEY6OkxvY2tlZFByaW50U3RyZWFtOjpiZWdpbik6CisgICAgICAgIChXVEY6Okxv
Y2tlZFByaW50U3RyZWFtOjplbmQpOgorICAgICAgICAqIHd0Zi9Mb2NrZWRQcmludFN0cmVhbS5o
OiBBZGRlZC4KKyAgICAgICAgKiB3dGYvUHJpbnRTdHJlYW0uY3BwOgorICAgICAgICAoV1RGOjpQ
cmludFN0cmVhbTo6cHJpbnRmVmFyaWFibGVGb3JtYXQpOgorICAgICAgICAoV1RGOjpQcmludFN0
cmVhbTo6YmVnaW4pOgorICAgICAgICAoV1RGOjpQcmludFN0cmVhbTo6ZW5kKToKKyAgICAgICAg
KiB3dGYvUHJpbnRTdHJlYW0uaDoKKyAgICAgICAgKFdURjo6UHJpbnRTdHJlYW06OmF0b21pY2Fs
bHkpOgorICAgICAgICAoV1RGOjpQcmludFN0cmVhbTo6cHJpbnQpOgorICAgICAgICAoV1RGOjpQ
cmludFN0cmVhbTo6cHJpbnRsbik6CisgICAgICAgIChXVEY6OlByaW50U3RyZWFtOjpwcmludElt
cGwpOgorICAgICAgICAoV1RGOjo+Ojp1bnBhY2spOgorICAgICAgICAoV1RGOjpGb3JtYXRJbXBs
OjpGb3JtYXRJbXBsKToKKyAgICAgICAgKFdURjo6Rm9ybWF0SW1wbDo6ZHVtcCk6CisgICAgICAg
IChXVEY6OmZvcm1hdCk6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAq
IHd0Zi9SZWN1cnNpdmVMb2NrQWRhcHRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6UmVjdXJz
aXZlTG9ja0FkYXB0ZXI6OlJlY3Vyc2l2ZUxvY2tBZGFwdGVyKToKKyAgICAgICAgKFdURjo6UmVj
dXJzaXZlTG9ja0FkYXB0ZXI6OmxvY2spOgorICAgICAgICAoV1RGOjpSZWN1cnNpdmVMb2NrQWRh
cHRlcjo6dW5sb2NrKToKKyAgICAgICAgKFdURjo6UmVjdXJzaXZlTG9ja0FkYXB0ZXI6OnRyeUxv
Y2spOgorICAgICAgICAoV1RGOjpSZWN1cnNpdmVMb2NrQWRhcHRlcjo6aXNMb2NrZWQpOgorICAg
ICAgICAqIHd0Zi9Xb3JkTG9jay5jcHA6CisgICAgICAgICogd3RmL1dvcmRMb2NrLmg6CisKIDIw
MTYtMTItMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9p
ZCBjYWxsaW5nIHNocmluaygpIGluIHRoZSBWZWN0b3IgZGVzdHJ1Y3RvcgpJbmRleDogU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDk2NjkpCisrKyBT
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw2ICszMCw4IEBACiAJCTBGNDNEOEYyMURCNUFEREMwMDEwOEZCNiAvKiBBdXRvbWF0aWNU
aHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDNEOEYwMURCNUFEREMwMDEwOEZCNiAvKiBBdXRvbWF0aWNUaHJlYWQuaCAqLzsgfTsKIAkJMEY0
NTcwNDMxQkU1QjU4RjAwNjJBNjI5IC8qIERvbWluYXRvcnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDQyMUJFNUI1OEYwMDYyQTYyOSAvKiBE
b21pbmF0b3JzLmggKi87IH07CiAJCTBGNDU3MDQ1MUJFODM0NDEwMDYyQTYyOSAvKiBCdWJibGVT
b3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ1
NzA0NDFCRTgzNDQxMDA2MkE2MjkgLyogQnViYmxlU29ydC5oICovOyB9OworCQkwRjYwRjMyRjFE
RkNCRDFCMDA0MTZENkMgLyogTG9ja2VkUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MEYzMkQxREZDQkQxQjAwNDE2RDZDIC8q
IExvY2tlZFByaW50U3RyZWFtLmNwcCAqLzsgfTsKKwkJMEY2MEYzMzAxREZDQkQxQjAwNDE2RDZD
IC8qIExvY2tlZFByaW50U3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjYwRjMyRTFERkNCRDFCMDA0MTZENkMgLyogTG9ja2VkUHJpbnRTdHJl
YW0uaCAqLzsgfTsKIAkJMEY2NkIyOEExREM5N0JBQjAwNEExRDNGIC8qIENsb2NrVHlwZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2QjI4MDFE
Qzk3QkFCMDA0QTFEM0YgLyogQ2xvY2tUeXBlLmNwcCAqLzsgfTsKIAkJMEY2NkIyOEIxREM5N0JB
QjAwNEExRDNGIC8qIENsb2NrVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY2NkIyODExREM5N0JBQjAwNEExRDNGIC8qIENsb2NrVHlwZS5oICov
OyB9OwogCQkwRjY2QjI4QzFEQzk3QkFCMDA0QTFEM0YgLyogTW9ub3RvbmljVGltZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2QjI4MjFEQzk3
QkFCMDA0QTFEM0YgLyogTW9ub3RvbmljVGltZS5jcHAgKi87IH07CkBAIC02Myw2ICs2NSw3IEBA
CiAJCTBGREI2OThFMUI3QzY0M0EwMDBDMTA3OCAvKiBDb25kaXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGREI2OThEMUI3QzY0M0EwMDBDMTA3
OCAvKiBDb25kaXRpb24uaCAqLzsgfTsKIAkJMEZEREJGQTcxNjY2REZBMzAwQzU1RkVGIC8qIFN0
cmluZ1ByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRERCRkE1MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5j
cHAgKi87IH07CiAJCTBGRERCRkE4MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVh
bS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEREJG
QTYxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFtLmggKi87IH07CisJCTBGREU4
N0Y3MURGRDA3Q0MwMDY0QzM5MCAvKiBSZWN1cnNpdmVMb2NrQWRhcHRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZERTg3RjYxREZEMDdDQzAwNjRD
MzkwIC8qIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyLmggKi87IH07CiAJCTBGRTE2NDZBMUI2RkZDOTYw
MDQwMEU3QyAvKiBMb2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRTE2NDY4MUI2RkZDOTYwMDQwMEU3QyAvKiBMb2NrLmNwcCAqLzsgfTsKIAkJ
MEZFMTY0NkIxQjZGRkM5NjAwNDAwRTdDIC8qIExvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTE2NDY5MUI2RkZDOTYwMDQwMEU3QyAvKiBMb2Nr
LmggKi87IH07CiAJCTBGRTQ0NzlDMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU0NDc5QTFCN0FB
QTAzMDA5NDk4RUIgLyogV29yZExvY2suY3BwICovOyB9OwpAQCAtMzg4LDYgKzM5MSw4IEBACiAJ
CTBGNDNEOEYwMURCNUFEREMwMDEwOEZCNiAvKiBBdXRvbWF0aWNUaHJlYWQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0b21hdGljVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNDU3MDQyMUJFNUI1OEYwMDYyQTYyOSAvKiBEb21pbmF0b3JzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvbWluYXRvcnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NTcwNDQxQkU4MzQ0MTAwNjJBNjI5IC8qIEJ1YmJsZVNv
cnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnViYmxlU29ydC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjYwRjMyRDFERkNCRDFCMDA0MTZENkMgLyogTG9j
a2VkUHJpbnRTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TG9ja2VkUHJpbnRTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjYw
RjMyRTFERkNCRDFCMDA0MTZENkMgLyogTG9ja2VkUHJpbnRTdHJlYW0uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTG9ja2VkUHJpbnRTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY2NkIyODAxREM5N0JBQjAwNEExRDNGIC8qIENsb2NrVHlwZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbG9ja1R5cGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjY2QjI4MTFEQzk3QkFCMDA0QTFEM0YgLyogQ2xv
Y2tUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsb2NrVHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjY2QjI4MjFEQzk3QkFCMDA0QTFEM0YgLyog
TW9ub3RvbmljVGltZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
b25vdG9uaWNUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyMSw2ICs0
MjYsNyBAQAogCQkwRkRCNjk4RDFCN0M2NDNBMDAwQzEwNzggLyogQ29uZGl0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbmRpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkREQkZBNTE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJl
YW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyaW5nUHJpbnRT
dHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkREQkZBNjE2NjZERkEz
MDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3RyaW5nUHJpbnRTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZERTg3RjYxREZEMDdDQzAwNjRDMzkwIC8qIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlY3Vyc2l2ZUxvY2tBZGFwdGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTE2NDY4MUI2RkZDOTYwMDQwMEU3QyAvKiBM
b2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvY2suY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkUxNjQ2OTFCNkZGQzk2MDA0MDBFN0MgLyog
TG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTQ0NzlBMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9j
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JkTG9jay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NTgsNyArODY0LDYgQEAKIAkJQTg3NkRC
RDYxNTE4MTZFNTAwREFEQjk1IC8qIHd0ZiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCi0JCQkJQUQ3QzQzNEExREQyQTRBNzAwMjY4ODhCIC8qIEV4cGVjdGVkLmgg
Ki8sCiAJCQkJMkNERUQwRjAxODExNUMzRjAwNERCQTcwIC8qIGNmICovLAogCQkJCUU0QTBBRDNC
MUE5NjI1MTkwMDUzNkRGNiAvKiBjb2NvYSAqLywKIAkJCQlBOEE0NzI4MTE1MUE4MjVBMDA0MTIz
RkYgLyogZHRvYSAqLywKQEAgLTkyNiw2ICs5MzEsNyBAQAogCQkJCUE4QTQ3Mjk3MTUxQTgyNUEw
MDQxMjNGRiAvKiBkdG9hLmNwcCAqLywKIAkJCQlBOEE0NzI5ODE1MUE4MjVBMDA0MTIzRkYgLyog
ZHRvYS5oICovLAogCQkJCTFBRUE4OEUxMUQ2QkJDRjQwMEU1QUQ2NCAvKiBFbnVtVHJhaXRzLmgg
Ki8sCisJCQkJQUQ3QzQzNEExREQyQTRBNzAwMjY4ODhCIC8qIEV4cGVjdGVkLmggKi8sCiAJCQkJ
QThBNDcyOUYxNTFBODI1QTAwNDEyM0ZGIC8qIEV4cG9ydE1hY3Jvcy5oICovLAogCQkJCTBGN0M1
RkI1MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCAqLywKIAkJCQkwRkQ4MUFD
NDE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oICovLApAQCAtOTY2LDYgKzk3Miw4
IEBACiAJCQkJMEZFMTY0NjgxQjZGRkM5NjAwNDAwRTdDIC8qIExvY2suY3BwICovLAogCQkJCTBG
RTE2NDY5MUI2RkZDOTYwMDQwMEU3QyAvKiBMb2NrLmggKi8sCiAJCQkJMEYwRkNEREQxREQxNjdG
OTAwQ0NBQjUzIC8qIExvY2tBbGdvcml0aG0uaCAqLywKKwkJCQkwRjYwRjMyRDFERkNCRDFCMDA0
MTZENkMgLyogTG9ja2VkUHJpbnRTdHJlYW0uY3BwICovLAorCQkJCTBGNjBGMzJFMURGQ0JEMUIw
MDQxNkQ2QyAvKiBMb2NrZWRQcmludFN0cmVhbS5oICovLAogCQkJCUE4QTQ3MkMzMTUxQTgyNUEw
MDQxMjNGRiAvKiBMb2NrZXIuaCAqLywKIAkJCQk1MTNFMTcwQTFDRDdENUJGMDBFMzY1MEIgLyog
TG9nZ2luZ0FjY3VtdWxhdG9yLmggKi8sCiAJCQkJQThBNDcyQzYxNTFBODI1QTAwNDEyM0ZGIC8q
IE1haW5UaHJlYWQuY3BwICovLApAQCAtMTAyNSw2ICsxMDMzLDcgQEAKIAkJCQlBOEE0NzJGRDE1
MUE4MjVCMDA0MTIzRkYgLyogUmFuZG9tTnVtYmVyU2VlZC5oICovLAogCQkJCTBGNzI1Q0FCMUM1
MDQ2MTYwMEFEOTQzQSAvKiBSYW5nZVNldC5oICovLAogCQkJCTBGODcxMDU5MTY2NDNGMTkwMDkw
QjBBRCAvKiBSYXdQb2ludGVyLmggKi8sCisJCQkJMEZERTg3RjYxREZEMDdDQzAwNjRDMzkwIC8q
IFJlY3Vyc2l2ZUxvY2tBZGFwdGVyLmggKi8sCiAJCQkJQThBNDcyRkUxNTFBODI1QjAwNDEyM0ZG
IC8qIFJlZEJsYWNrVHJlZS5oICovLAogCQkJCTI2Mjk5QjZEMTdBOUU1QjgwMEFERUJFNSAvKiBS
ZWYuaCAqLywKIAkJCQlBOEE0NzJGRjE1MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRlZC5oICov
LApAQCAtMTM4Niw2ICsxMzk1LDcgQEAKIAkJCQk3Q0REN0ZGQTE4NkQyQTU0MDA3NDMzQ0QgLyog
SXRlcmF0b3JSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0M0Q4RjIxREI1QUREQzAwMTA4
RkI2IC8qIEF1dG9tYXRpY1RocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNBQzkxQTgxODk0
MkZDNDAwMjQ0OTM5IC8qIExDaGFyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjYwRjMzMDFERkNC
RDFCMDA0MTZENkMgLyogTG9ja2VkUHJpbnRTdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTUz
OUVCMDYzMUQ1NTI4NDIwMEM4MkVGNyAvKiBMRUJEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzBEQTA4NTE3OTlGMDREMDA1MjlBOUIgLyogTGlzdER1bXAuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNjZCMjkzMURDOTdCQUIwMDRBMUQzRiAvKiBXYWxsVGltZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xNDU5LDYgKzE0NjksNyBAQAogCQkJCTBGRUIzRENGMUJCNUQ2ODQwMDlEN0FBRCAvKiBT
aGFyZWRUYXNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQyMzE1MUE4MjVCMDA0MTIzRkYg
LyogU2ltcGxlU3RhdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDI0MTUxQTgyNUIwMDQx
MjNGRiAvKiBTaW5nbHlMaW5rZWRMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkRFODdGNzFE
RkQwN0NDMDA2NEMzOTAgLyogUmVjdXJzaXZlTG9ja0FkYXB0ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3NDg3NDUzMTdBMEJEQUUwMEZBMDRDQiAvKiBTaXhDaGFyYWN0ZXJIYXNoLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3OUVDNzA2MTFDOTlGOUJDMDAzQTNBRTIgLyogU21hbGxQdHJTZXQuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDI2MTUxQTgyNUIwMDQxMjNGRiAvKiBTcGVjdHJ1bS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xNjU0LDYgKzE2NjUsNyBAQAogCQkJCUE4QTQ3M0IwMTUxQTgy
NUIwMDQxMjNGRiAvKiBkb3VibGUtY29udmVyc2lvbi5jYyBpbiBTb3VyY2VzICovLAogCQkJCUE4
QTQ3M0JBMTUxQTgyNUIwMDQxMjNGRiAvKiBkdG9hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
QTQ3M0IzMTUxQTgyNUIwMDQxMjNGRiAvKiBmYXN0LWR0b2EuY2MgaW4gU291cmNlcyAqLywKKwkJ
CQkwRjYwRjMyRjFERkNCRDFCMDA0MTZENkMgLyogTG9ja2VkUHJpbnRTdHJlYW0uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQThBNDczQzMxNTFBODI1QjAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMzNjAxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmlu
dFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNCNTE1MUE4MjVCMDA0MTIzRkYg
LyogZml4ZWQtZHRvYS5jYyBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJ
KHJldmlzaW9uIDIwOTY2OSkKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIExpc3RIYXNo
U2V0LmgKICAgICBMb2NrLmgKICAgICBMb2NrQWxnb3JpdGhtLmgKKyAgICBMb2NrZWRQcmludFN0
cmVhbS5oCiAgICAgTG9ja2VyLmgKICAgICBNRDUuaAogICAgIE1haW5UaHJlYWQuaApAQCAtOTIs
NiArOTMsNyBAQCBzZXQoV1RGX0hFQURFUlMKICAgICBSYW5kb21OdW1iZXJTZWVkLmgKICAgICBS
YW5nZVNldC5oCiAgICAgUmF3UG9pbnRlci5oCisgICAgUmVjdXJzaXZlTG9ja0FkYXB0ZXIuaAog
ICAgIFJlZEJsYWNrVHJlZS5oCiAgICAgUmVmLmgKICAgICBSZWZDb3VudGVkLmgKQEAgLTE5OCw2
ICsyMDAsNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBHcmVnb3JpYW5EYXRlVGltZS5jcHAKICAg
ICBIYXNoVGFibGUuY3BwCiAgICAgTG9jay5jcHAKKyAgICBMb2NrZWRQcmludFN0cmVhbS5jcHAK
ICAgICBNRDUuY3BwCiAgICAgTWFpblRocmVhZC5jcHAKICAgICBNZWRpYVRpbWUuY3BwCkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9EYXRhTG9nLmNwcAkocmV2aXNpb24gMjA5NjY5KQorKysgU291cmNlL1dURi93dGYvRGF0YUxv
Zy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDEwIEBACiAjaW5jbHVkZSA8c3RkYXJn
Lmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVQcmludFN0cmVhbS5o
PgorI2luY2x1ZGUgPHd0Zi9Mb2NrZWRQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDx0aHJlYWQ+CiAKICNpZiBPUyhV
TklYKSB8fCBPUyhEQVJXSU4pCiAjaW5jbHVkZSA8dW5pc3RkLmg+CkBAIC00NywxNiArNTAsMTQg
QEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLSNpZiBVU0UoUFRIUkVBRFMpCi1zdGF0aWMgcHRocmVh
ZF9vbmNlX3QgaW5pdGlhbGl6ZUxvZ0ZpbGVPbmNlS2V5ID0gUFRIUkVBRF9PTkNFX0lOSVQ7Ci0j
ZW5kaWYKLQotc3RhdGljIEZpbGVQcmludFN0cmVhbSogZmlsZTsKK3N0YXRpYyBQcmludFN0cmVh
bSogc19maWxlOwogCi1zdGF0aWMgdWludDY0X3QgZmlsZURhdGFbKHNpemVvZihGaWxlUHJpbnRT
dHJlYW0pICsgNykgLyA4XTsKK3N0YXRpYyB1aW50NjRfdCBzX2ZpbGVEYXRhWyhzaXplb2YoRmls
ZVByaW50U3RyZWFtKSArIDcpIC8gOF07CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVMb2dGaWxl
T25jZSgpCiB7CisgICAgRmlsZVByaW50U3RyZWFtKiBmaWxlID0gbnVsbHB0cjsKKyAgICAKICNp
ZiBEQVRBX0xPR19UT19GSUxFCiAgICAgY29uc3QgbG9uZyBtYXhQYXRoTGVuZ3RoID0gMTAyNDsK
IApAQCAtMTE3LDI5ICsxMTgsMzggQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUxvZ0ZpbGVPbmNl
KCkKICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiV2FybmluZzogQ291bGQgbm90IG9wZW4gRGF0
YUxvZyBmaWxlICVzIGZvciB3cml0aW5nLlxuIiwgYWN0dWFsRmlsZW5hbWUpOwogICAgIH0KICNl
bmRpZiAvLyBEQVRBX0xPR19UT19GSUxFCisgICAgCisgICAgYm9vbCB3cmFwV2l0aExvY2tlZCA9
IHRydWU7CisgICAgCiAgICAgaWYgKCFmaWxlKSB7CiAgICAgICAgIC8vIFVzZSBwbGFjZW1lbnQg
bmV3OyB0aGlzIG1ha2VzIGl0IGVhc2llciB0byB1c2UgZGF0YUxvZygpIHRvIGRlYnVnCiAgICAg
ICAgIC8vIGZhc3RNYWxsb2MuCi0gICAgICAgIGZpbGUgPSBuZXcgKGZpbGVEYXRhKSBGaWxlUHJp
bnRTdHJlYW0oc3RkZXJyLCBGaWxlUHJpbnRTdHJlYW06OkJvcnJvdyk7CisgICAgICAgIGZpbGUg
PSBuZXcgKHNfZmlsZURhdGEpIEZpbGVQcmludFN0cmVhbShzdGRlcnIsIEZpbGVQcmludFN0cmVh
bTo6Qm9ycm93KTsKKyAgICAgICAgd3JhcFdpdGhMb2NrZWQgPSBmYWxzZTsKICAgICB9CiAgICAg
CiAgICAgc2V0dmJ1ZihmaWxlLT5maWxlKCksIDAsIF9JT05CRiwgMCk7IC8vIFByZWZlciB1bmJ1
ZmZlcmVkIG91dHB1dCwgc28gdGhhdCB3ZSBnZXQgYSBmdWxsIGxvZyB1cG9uIGNyYXNoIG9yIGRl
YWRsb2NrLgorICAgIAorICAgIGlmICh3cmFwV2l0aExvY2tlZCkKKyAgICAgICAgc19maWxlID0g
bmV3IExvY2tlZFByaW50U3RyZWFtKHN0ZDo6dW5pcXVlX3B0cjxGaWxlUHJpbnRTdHJlYW0+KGZp
bGUpKTsKKyAgICBlbHNlCisgICAgICAgIHNfZmlsZSA9IGZpbGU7CiB9CiAKIHN0YXRpYyB2b2lk
IGluaXRpYWxpemVMb2dGaWxlKCkKIHsKLSNpZiBVU0UoUFRIUkVBRFMpCi0gICAgcHRocmVhZF9v
bmNlKCZpbml0aWFsaXplTG9nRmlsZU9uY2VLZXksIGluaXRpYWxpemVMb2dGaWxlT25jZSk7Ci0j
ZWxzZQotICAgIGlmICghZmlsZSkKLSAgICAgICAgaW5pdGlhbGl6ZUxvZ0ZpbGVPbmNlKCk7Ci0j
ZW5kaWYKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKKyAgICBzdGQ6OmNhbGxfb25j
ZSgKKyAgICAgICAgb25jZSwKKyAgICAgICAgW10geworICAgICAgICAgICAgaW5pdGlhbGl6ZUxv
Z0ZpbGVPbmNlKCk7CisgICAgICAgIH0pOwogfQogCi1GaWxlUHJpbnRTdHJlYW0mIGRhdGFGaWxl
KCkKK1ByaW50U3RyZWFtJiBkYXRhRmlsZSgpCiB7CiAgICAgaW5pdGlhbGl6ZUxvZ0ZpbGUoKTsK
LSAgICByZXR1cm4gKmZpbGU7CisgICAgcmV0dXJuICpzX2ZpbGU7CiB9CiAKIHZvaWQgZGF0YUxv
Z0ZWKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdMaXN0KQpJbmRleDogU291cmNlL1dU
Ri93dGYvRGF0YUxvZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0RhdGFMb2cuaAko
cmV2aXNpb24gMjA5NjY5KQorKysgU291cmNlL1dURi93dGYvRGF0YUxvZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCwxMiArMjgsMTIgQEAKIAogI2luY2x1ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUg
PHN0ZGlvLmg+Ci0jaW5jbHVkZSA8d3RmL0ZpbGVQcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0
Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNw
YWNlIFdURiB7CiAKLVdURl9FWFBPUlRfUFJJVkFURSBGaWxlUHJpbnRTdHJlYW0mIGRhdGFGaWxl
KCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgUHJpbnRTdHJlYW0mIGRhdGFGaWxlKCk7CiAKIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGRhdGFMb2dGVihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3Qp
IFdURl9BVFRSSUJVVEVfUFJJTlRGKDEsIDApOwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGF0
YUxvZ0YoY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDEsIDIp
OwpJbmRleDogU291cmNlL1dURi93dGYvTG9ja2VkUHJpbnRTdHJlYW0uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL0xvY2tlZFByaW50U3RyZWFtLmNwcAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV1RGL3d0Zi9Mb2NrZWRQcmludFN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTG9ja2VkUHJpbnRTdHJlYW0uaCIK
KworbmFtZXNwYWNlIFdURiB7CisKK0xvY2tlZFByaW50U3RyZWFtOjpMb2NrZWRQcmludFN0cmVh
bShzdGQ6OnVuaXF1ZV9wdHI8UHJpbnRTdHJlYW0+IHRhcmdldCkKKyAgICA6IG1fdGFyZ2V0KFdU
Rk1vdmUodGFyZ2V0KSkKK3sKK30KKworTG9ja2VkUHJpbnRTdHJlYW06On5Mb2NrZWRQcmludFN0
cmVhbSgpCit7Cit9CisKK3ZvaWQgTG9ja2VkUHJpbnRTdHJlYW06OnZwcmludGYoY29uc3QgY2hh
ciogZm9ybWF0LCB2YV9saXN0IGFyZ3MpCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2xvY2spOworICAgIG1fdGFyZ2V0LT52cHJpbnRmKGZvcm1hdCwgYXJncyk7Cit9CisKK3ZvaWQg
TG9ja2VkUHJpbnRTdHJlYW06OmZsdXNoKCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fbG9jayk7CisgICAgbV90YXJnZXQtPmZsdXNoKCk7Cit9CisKK1ByaW50U3RyZWFtJiBMb2Nr
ZWRQcmludFN0cmVhbTo6YmVnaW4oKQoreworICAgIG1fbG9jay5sb2NrKCk7CisgICAgcmV0dXJu
ICptX3RhcmdldDsKK30KKwordm9pZCBMb2NrZWRQcmludFN0cmVhbTo6ZW5kKCkKK3sKKyAgICBt
X2xvY2sudW5sb2NrKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9Mb2NrZWRQcmludFN0cmVhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L0xvY2tlZFByaW50U3RyZWFtLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dURi93dGYvTG9j
a2VkUHJpbnRTdHJlYW0uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTG9ja2VkUHJp
bnRTdHJlYW1faAorI2RlZmluZSBMb2NrZWRQcmludFN0cmVhbV9oCisKKyNpbmNsdWRlIDx3dGYv
UHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvUmVjdXJzaXZlTG9ja0FkYXB0ZXIuaD4KKyNp
bmNsdWRlIDx3dGYvV29yZExvY2suaD4KKworbmFtZXNwYWNlIFdURiB7CisKKy8vIE1ha2VzIGV2
ZXJ5IGNhbGwgdG8gcHJpbnQoKSBhdG9taWMuCitjbGFzcyBMb2NrZWRQcmludFN0cmVhbSA6IHB1
YmxpYyBQcmludFN0cmVhbSB7CitwdWJsaWM6CisgICAgTG9ja2VkUHJpbnRTdHJlYW0oc3RkOjp1
bmlxdWVfcHRyPFByaW50U3RyZWFtPiB0YXJnZXQpOworICAgIHZpcnR1YWwgfkxvY2tlZFByaW50
U3RyZWFtKCk7CisgICAgCisgICAgdm9pZCB2cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFf
bGlzdCkgb3ZlcnJpZGUgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMCk7CisgICAgdm9pZCBmbHVz
aCgpIG92ZXJyaWRlOworCitwcm90ZWN0ZWQ6CisgICAgUHJpbnRTdHJlYW0mIGJlZ2luKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBlbmQoKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICAvLyBUaGlz
IG5lZWRzIHRvIGJlIGEgcmVjdXJzaXZlIGxvY2sgYmVjYXVzZSBhIHByaW50SW50ZXJuYWwgb3Ig
ZHVtcCBtZXRob2QgY291bGQgYXNzZXJ0LAorICAgIC8vIGFuZCB0aGF0IGFzc2VydCBtaWdodCB3
YW50IHRvIGxvZy4gQmV0dGVyIHRvIGxldCBpdC4gVGhpcyBuZWVkcyB0byBiZSBhIFdvcmRMb2Nr
IHNvIHRoYXQKKyAgICAvLyBMb2NrZWRQcmludFN0cmVhbSAoaS5lLiBjYXRhTG9nKSBjYW4gYmUg
dXNlZCB0byBkZWJ1ZyBQYXJraW5nTG90IGFuZCBMb2NrLgorICAgIFJlY3Vyc2l2ZUxvY2tBZGFw
dGVyPFdvcmRMb2NrPiBtX2xvY2s7CisgICAgc3RkOjp1bmlxdWVfcHRyPFByaW50U3RyZWFtPiBt
X3RhcmdldDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OkxvY2tlZFBy
aW50U3RyZWFtOworCisjZW5kaWYgLy8gTG9ja2VkUHJpbnRTdHJlYW1faApJbmRleDogU291cmNl
L1dURi93dGYvUHJpbnRTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1By
aW50U3RyZWFtLmNwcAkocmV2aXNpb24gMjA5NjY5KQorKysgU291cmNlL1dURi93dGYvUHJpbnRT
dHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMCArNDQsMzAgQEAgdm9pZCBQcmludFN0
cmVhbTo6cHJpbnRmKGNvbnN0IGNoYXIqIGZvcgogICAgIHZhX2VuZChhcmdMaXN0KTsKIH0KIAor
dm9pZCBQcmludFN0cmVhbTo6cHJpbnRmVmFyaWFibGVGb3JtYXQoY29uc3QgY2hhciogZm9ybWF0
LCAuLi4pCit7CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIGlnbm9yZWQgIi1XZm9ybWF0LW5vbmxpdGVyYWwiCisgICAgdmFfbGlzdCBhcmdM
aXN0OworICAgIHZhX3N0YXJ0KGFyZ0xpc3QsIGZvcm1hdCk7CisgICAgdnByaW50Zihmb3JtYXQs
IGFyZ0xpc3QpOworICAgIHZhX2VuZChhcmdMaXN0KTsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwb3AKK30KKwogdm9pZCBQcmludFN0cmVhbTo6Zmx1c2goKQogewogfQogCitQcmludFN0cmVh
bSYgUHJpbnRTdHJlYW06OmJlZ2luKCkKK3sKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3ZvaWQg
UHJpbnRTdHJlYW06OmVuZCgpCit7Cit9CisKIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYgb3V0LCBjb25zdCBjaGFyKiBzdHJpbmcpCiB7CiAgICAgb3V0LnByaW50ZigiJXMiLCBzdHJp
bmcpOwpJbmRleDogU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5oCShyZXZpc2lvbiAyMDk2NjkpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9QcmludFN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSA8c3RkYXJnLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRl
IDx3dGYvUmF3UG9pbnRlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CkBAIC01MCwzMyArNTEsNDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgflByaW50U3RyZWFtKCk7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcmludGYo
Y29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDIsIDMpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHByaW50ZlZhcmlhYmxlRm9ybWF0KGNvbnN0IGNoYXIq
IGZvcm1hdCwgLi4uKTsKICAgICB2aXJ0dWFsIHZvaWQgdnByaW50Zihjb25zdCBjaGFyKiBmb3Jt
YXQsIHZhX2xpc3QpIFdURl9BVFRSSUJVVEVfUFJJTlRGKDIsIDApID0gMDsKIAogICAgIC8vIFR5
cGljYWxseSBhIG5vLW9wIGZvciBtYW55IHN1YmNsYXNzZXMgb2YgUHJpbnRTdHJlYW0sIHRoaXMg
aXMgYSBoaW50IHRoYXQKICAgICAvLyB0aGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIGZsdXNoIGl0
cyBidWZmZXJzIGlmIGl0IGhhZCBub3QgZG9uZSBzbyBhbHJlYWR5LgogICAgIHZpcnR1YWwgdm9p
ZCBmbHVzaCgpOwogICAgIAotICAgIHZvaWQgcHJpbnQoKSB7IH0KLQotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci0gICAgdm9pZCBwcmludChjb25zdCBUJiB2YWx1ZSkKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgYXRvbWljYWxseShjb25zdCBGdW5jJiBmdW5jKQogICAg
IHsKLSAgICAgICAgcHJpbnRJbnRlcm5hbCgqdGhpcywgdmFsdWUpOworICAgICAgICBmdW5jKGJl
Z2luKCkpOworICAgICAgICBlbmQoKTsKICAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZS4uLiBUeXBlcz4KLSAgICB2b2lkIHByaW50KGNvbnN0IFQmIHZhbHVlLCBjb25z
dCBUeXBlcyYuLi4gcmVtYWluaW5nVmFsdWVzKQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIFR5cGVzPgorICAgIHZvaWQgcHJpbnQoY29uc3QgVHlwZXMmLi4uIHZhbHVlcykKICAgICB7
Ci0gICAgICAgIHByaW50SW50ZXJuYWwoKnRoaXMsIHZhbHVlKTsKLSAgICAgICAgcHJpbnQocmVt
YWluaW5nVmFsdWVzLi4uKTsKKyAgICAgICAgYXRvbWljYWxseSgKKyAgICAgICAgICAgIFsmXSAo
UHJpbnRTdHJlYW0mIG91dCkgeworICAgICAgICAgICAgICAgIG91dC5wcmludEltcGwodmFsdWVz
Li4uKTsKKyAgICAgICAgICAgIH0pOwogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBUeXBlcz4KICAgICB2b2lkIHByaW50bG4oY29uc3QgVHlwZXMmLi4uIHZhbHVlcykKICAg
ICB7Ci0gICAgICAgIHByaW50KHZhbHVlcy4uLik7Ci0gICAgICAgIHByaW50KCJcbiIpOworICAg
ICAgICBwcmludCh2YWx1ZXMuLi4sICJcbiIpOwogICAgIH0KKworcHJvdGVjdGVkOgorICAgIHZv
aWQgcHJpbnRJbXBsKCkgeyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4u
LiBUeXBlcz4KKyAgICB2b2lkIHByaW50SW1wbChjb25zdCBUJiB2YWx1ZSwgY29uc3QgVHlwZXMm
Li4uIHJlbWFpbmluZ1ZhbHVlcykKKyAgICB7CisgICAgICAgIHByaW50SW50ZXJuYWwoKnRoaXMs
IHZhbHVlKTsKKyAgICAgICAgcHJpbnRJbXBsKHJlbWFpbmluZ1ZhbHVlcy4uLik7CisgICAgfQor
ICAgIAorICAgIHZpcnR1YWwgUHJpbnRTdHJlYW0mIGJlZ2luKCk7CisgICAgdmlydHVhbCB2b2lk
IGVuZCgpOwogfTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYsIGNvbnN0IGNoYXIqKTsKQEAgLTI2NiwxMSArMjgxLDY2IEBAIFZhbHVlSWdub3Jp
bmdDb250ZXh0PFQsIFU+IGlnbm9yaW5nQ29udGUKICAgICByZXR1cm4gVmFsdWVJZ25vcmluZ0Nv
bnRleHQ8VCwgVT4odmFsdWUpOwogfQogCit0ZW1wbGF0ZTx1bnNpZ25lZCBpbmRleCwgdHlwZW5h
bWUuLi4gVHlwZXM+CitzdHJ1Y3QgRm9ybWF0SW1wbFVucGFja2VyIHsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyB2b2lkIHVucGFjayhQcmludFN0cmVhbSYgb3V0
LCBjb25zdCBzdGQ6OnR1cGxlPFR5cGVzLi4uPiYgdHVwbGUsIGNvbnN0IEFyZ3MmLi4uIHZhbHVl
cyk7Cit9OworICAgIAordGVtcGxhdGU8dHlwZW5hbWUuLi4gVHlwZXM+CitzdHJ1Y3QgRm9ybWF0
SW1wbFVucGFja2VyPDAsIFR5cGVzLi4uPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJn
cz4KKyAgICBzdGF0aWMgdm9pZCB1bnBhY2soUHJpbnRTdHJlYW0mIG91dCwgY29uc3Qgc3RkOjp0
dXBsZTxUeXBlcy4uLj4mIHR1cGxlLCBjb25zdCBBcmdzJi4uLiB2YWx1ZXMpCisgICAgeworICAg
ICAgICBvdXQucHJpbnRmVmFyaWFibGVGb3JtYXQoc3RkOjpnZXQ8MD4odHVwbGUpLCB2YWx1ZXMu
Li4pOworICAgIH0KK307CisgICAgCit0ZW1wbGF0ZTx1bnNpZ25lZCBpbmRleCwgdHlwZW5hbWUu
Li4gVHlwZXM+Cit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgordm9pZCBGb3JtYXRJbXBsVW5w
YWNrZXI8aW5kZXgsIFR5cGVzLi4uPjo6dW5wYWNrKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IHN0
ZDo6dHVwbGU8VHlwZXMuLi4+JiB0dXBsZSwgY29uc3QgQXJncyYuLi4gdmFsdWVzKQoreworICAg
IEZvcm1hdEltcGxVbnBhY2tlcjxpbmRleCAtIDEsIFR5cGVzLi4uPjo6dW5wYWNrKG91dCwgdHVw
bGUsIHN0ZDo6Z2V0PGluZGV4Pih0dXBsZSksIHZhbHVlcy4uLik7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lLi4uIFR5cGVzPgorY2xhc3MgRm9ybWF0SW1wbCB7CitwdWJsaWM6CisgICAgRm9ybWF0
SW1wbChUeXBlcy4uLiB2YWx1ZXMpCisgICAgICAgIDogbV92YWx1ZXModmFsdWVzLi4uKQorICAg
IHsKKyAgICB9CisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cisg
ICAgeworICAgICAgICBGb3JtYXRJbXBsVW5wYWNrZXI8c2l6ZW9mLi4uKFR5cGVzKSAtIDEsIFR5
cGVzLi4uPjo6dW5wYWNrKG91dCwgbV92YWx1ZXMpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBz
dGQ6OnR1cGxlPFR5cGVzLi4uPiBtX3ZhbHVlczsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4u
IFR5cGVzPgorRm9ybWF0SW1wbDxUeXBlcy4uLj4gZm9ybWF0KFR5cGVzLi4uIHZhbHVlcykKK3sK
KyAgICByZXR1cm4gRm9ybWF0SW1wbDxUeXBlcy4uLj4odmFsdWVzLi4uKTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4KK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFQ+JiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUpCisgICAgICAgIG91
dC5wcmludCgqdmFsdWUpOworICAgIGVsc2UKKyAgICAgICAgb3V0LnByaW50KCI8bnVsbG9wdD4i
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6Q2hhcmFjdGVyRHVtcDsK
IHVzaW5nIFdURjo6UG9pbnRlckR1bXA7CiB1c2luZyBXVEY6OlByaW50U3RyZWFtOwordXNpbmcg
V1RGOjpmb3JtYXQ7CiB1c2luZyBXVEY6Omlnbm9yaW5nQ29udGV4dDsKIHVzaW5nIFdURjo6aW5D
b250ZXh0OwogdXNpbmcgV1RGOjpwb2ludGVyRHVtcDsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1Jl
Y3Vyc2l2ZUxvY2tBZGFwdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUmVjdXJz
aXZlTG9ja0FkYXB0ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV1RGL3d0Zi9SZWN1cnNp
dmVMb2NrQWRhcHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgV1RGX1JlY3Vy
c2l2ZUxvY2tBZGFwdGVyX2gKKyNkZWZpbmUgV1RGX1JlY3Vyc2l2ZUxvY2tBZGFwdGVyX2gKKwor
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRl
PHR5cGVuYW1lIExvY2tUeXBlPgorY2xhc3MgUmVjdXJzaXZlTG9ja0FkYXB0ZXIgeworcHVibGlj
OgorICAgIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyKCkKKyAgICB7CisgICAgfQorICAgIAorICAgIHZv
aWQgbG9jaygpCisgICAgeworICAgICAgICBUaHJlYWRJZGVudGlmaWVyIG1lID0gY3VycmVudFRo
cmVhZCgpOworICAgICAgICBpZiAobWUgPT0gbV9vd25lcikgeworICAgICAgICAgICAgbV9yZWN1
cnNpb25Db3VudCsrOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBtX2xvY2subG9jaygpOworICAgICAgICBtX293bmVyID0gbWU7CisgICAgICAgIG1f
cmVjdXJzaW9uQ291bnQgPSAxOworICAgIH0KKyAgICAKKyAgICB2b2lkIHVubG9jaygpCisgICAg
eworICAgICAgICBpZiAoLS1tX3JlY3Vyc2lvbkNvdW50KQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBtX293bmVyID0gMDsKKyAgICAgICAgbV9sb2NrLnVubG9jaygpOworICAgIH0KKyAg
ICAKKyAgICBib29sIHRyeUxvY2soKQorICAgIHsKKyAgICAgICAgVGhyZWFkSWRlbnRpZmllciBt
ZSA9IGN1cnJlbnRUaHJlYWQoKTsKKyAgICAgICAgaWYgKG1lID09IG1fb3duZXIpIHsKKyAgICAg
ICAgICAgIG1fcmVjdXJzaW9uQ291bnQrKzsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoIW1fbG9jay50cnlMb2NrKCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICBtX293bmVyID0gbWU7CisgICAg
ICAgIG1fcmVjdXJzaW9uQ291bnQgPSAxOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgCisgICAgYm9vbCBpc0xvY2tlZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9s
b2NrLmlzTG9ja2VkKCk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBUaHJlYWRJZGVudGlm
aWVyIG1fb3duZXIgeyAwIH07CisgICAgdW5zaWduZWQgbV9yZWN1cnNpb25Db3VudCB7IDAgfTsK
KyAgICBMb2NrVHlwZSBtX2xvY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlm
IC8vIFdURl9SZWN1cnNpdmVMb2NrQWRhcHRlcl9oCisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1dv
cmRMb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Xb3JkTG9jay5jcHAJKHJl
dmlzaW9uIDIwOTY2OSkKKysrIFNvdXJjZS9XVEYvd3RmL1dvcmRMb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldv
cmRMb2NrLmgiCiAKLSNpbmNsdWRlICJEYXRhTG9nLmgiCi0jaW5jbHVkZSAiU3RyaW5nUHJpbnRT
dHJlYW0uaCIKICNpbmNsdWRlICJUaHJlYWRTcGVjaWZpYy5oIgogI2luY2x1ZGUgIlRocmVhZGlu
Z1ByaW1pdGl2ZXMuaCIKICNpbmNsdWRlIDxjb25kaXRpb25fdmFyaWFibGU+CkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9Xb3JkTG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dvcmRM
b2NrLmgJKHJldmlzaW9uIDIwOTY2OSkKKysrIFNvdXJjZS9XVEYvd3RmL1dvcmRMb2NrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDEwIEBAIG5hbWVzcGFjZSBXVEYgewogLy8gTG9jayBp
bnN0ZWFkLiBXb3JkTG9jayBzaXRzIGxvd2VyIGluIHRoZSBzdGFjayBhbmQgaXMgdXNlZCB0byBp
bXBsZW1lbnQgTG9jaywgc28gTG9jayBpcyB0aGUgbWFpbgogLy8gY2xpZW50IG9mIFdvcmRMb2Nr
LgogCisvLyBOT1RFOiBUaGlzIGlzIGFsc28gYSBncmVhdCBsb2NrIHRvIHVzZSBpZiB5b3UgYXJl
IHZlcnkgbG93IGluIHRoZSBzdGFjay4gRm9yIGV4YW1wbGUsCisvLyBQcmludFN0cmVhbSB1c2Vz
IHRoaXMgc28gdGhhdCBQYXJraW5nTG90IGFuZCBMb2NrIGNhbiB1c2UgUHJpbnRTdHJlYW0uIFRo
aXMgbWVhbnMgdGhhdCBpZiB5b3UKKy8vIHRyeSB0byB1c2UgZGF0YUxvZyB0byBkZWJ1ZyB0aGlz
IGNvZGUsIHlvdSB3aWxsIGhhdmUgYSBiYWQgdGltZS4KKwogc3RydWN0IFdvcmRMb2NrQmFzZSB7
CiAgICAgdm9pZCBsb2NrKCkKICAgICB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296876</attachid>
            <date>2016-12-11 16:26:55 -0800</date>
            <delta_ts>2016-12-11 16:54:43 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>57580</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA5Njg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBA
CisyMDE2LTEyLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
TWFya2VkQmxvY2s6Om1hcmtzQ29udmV5TGl2ZW5lc3NEdXJpbmdNYXJraW5nIHNob3VsZCB0YWtl
IGludG8gYWNjb3VudCBjb2xsZWN0aW9uIHNjb3BlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU3NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIE1hcmtlZEJsb2NrOjptYXJrc0NvbnZleUxp
dmVuZXNzRHVyaW5nTWFya2luZyB0aG91Z2h0IHRoYXQgdGhlIG9mZi1ieS1vbmUgbWFya2luZwor
ICAgICAgICB2ZXJzaW9uIGluZGljYXRlZCBsaXZlbmVzcyBkdXJpbmcgYW55IGNvbGxlY3Rpb24g
d2hlbiBpdCdzIGp1c3QgZHVyaW5nIGZ1bGwgY29sbGVjdGlvbi4KKyAgICAgICAgT25lIG9mIGl0
cyB1c2VycyAtIE1hcmtlZEJsb2NrOjpzd2VlcCAtIGtuZXcgdGhpcyBhbmQgaGFkIGEgc3BlY2lh
bCBjYXNlLCBidXQgdGhlIG90aGVyCisgICAgICAgIG9uZSAtIE1hcmtlZEJsb2NrOjppc0xpdmUg
LSBkaWRuJ3QuIFNvLCBJIG1vdmVkIHRoZSBzcGVjaWFsIGNhc2UgaW50bworICAgICAgICBtYXJr
c0NvbnZleUxpdmVuZXNzRHVyaW5nTWFya2luZy4KKyAgICAgICAgCisgICAgICAgIEFsc28sIHRo
aXMgY2xlYW5zIHVwIHNvbWUgcmVtYWluaW5nIGJpdHZlY3RvciByYWNlcy4KKyAgICAgICAgCisg
ICAgICAgIFRvIGZpbmQgdGhpcyBidWcsIEkgc2lnbmlmaWNhbnRseSBzdHJlbmd0aGVuZWQgb3Vy
IGFzc2VydGlvbnMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGhlYXAvQ2Vs
bENvbnRhaW5lci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpDZWxsQ29udGFpbmVyOjppc05l
d2x5QWxsb2NhdGVkKToKKyAgICAgICAgKiBoZWFwL0NlbGxDb250YWluZXIuaDoKKyAgICAgICAg
KiBoZWFwL01hcmtlZEFsbG9jYXRvci5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRv
cjo6YWRkQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OnJlbW92ZUJsb2Nr
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpkdW1wQml0cyk6CisgICAgICAgICog
aGVhcC9NYXJrZWRBbGxvY2F0b3IuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpm
b3JFYWNoQml0VmVjdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpmb3JFYWNo
Qml0VmVjdG9yV2l0aE5hbWUpOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QmxvY2s6OkhhbmRsZTo6fkhhbmRsZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpNYXJr
ZWRCbG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVk
U3dlZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNl
bGVjdE1hcmtzTW9kZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BB
bGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6cmVzdW1lQWxs
b2NhdGluZyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjphYm91dFRvTWFya1Nsb3cpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRDb25zdW1lRnJlZUxpc3QpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpkdW1wU3RhdGUpOgorICAgICAgICAq
IGhlYXAvTWFya2VkQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Om1hcmtpbmdW
ZXJzaW9uKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkUmF3KToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkKToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJs
b2NrSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6bWFya3NDb252ZXlMaXZl
bmVzc0R1cmluZ01hcmtpbmcpOgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpTbG90VmlzaXRvcjo6YXBwZW5kSlNDZWxsT3JBdXhpbGlhcnkpOgorICAgICAg
ICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnJlY29tcHV0ZURlcGVuZGVu
dE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpzaXplKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
SURUYWJsZTo6Z2V0KToKKwogMjAxNi0xMi0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIFRoZSBET00gc2hvdWxkIGhhdmUgYW4gYWR2YW5jaW5nIHdhdmVmcm9u
dCBvcGFxdWUgcm9vdCBiYXJyaWVyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CShyZXZpc2lvbiAyMDk2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ2NCw2ICs0NjQsNyBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfU09VUkNFUwogICAgIGZ0bC9GVExWYWx1ZVJhbmdlLmNwcAogCiAgICAgaGVhcC9BbGxvY2F0
b3JBdHRyaWJ1dGVzLmNwcAorICAgIGhlYXAvQ2VsbENvbnRhaW5lci5jcHAKICAgICBoZWFwL0Nv
ZGVCbG9ja1NldC5jcHAKICAgICBoZWFwL0NvbGxlY3Rpb25TY29wZS5jcHAKICAgICBoZWFwL0Nv
bnNlcnZhdGl2ZVJvb3RzLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDIwOTY4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03NTIsNiArNzUyLDcg
QEAKIAkJMEZEQjJDRUExNzQ4OTZDNzAwN0IzQzFCIC8qIENvbmN1cnJlbnRKU0xvY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGREIyQ0U5MTc0ODk2
QzcwMDdCM0MxQiAvKiBDb25jdXJyZW50SlNMb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZEREJGQjUxNjY2RUVEODAwQzU1RkVGIC8qIERG
R1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZEREJGQjIxNjY2RUVENTAwQzU1RkVGIC8qIERGR1ZhcmlhYmxl
QWNjZXNzRGF0YUR1bXAuY3BwICovOyB9OwogCQkwRkREQkZCNjE2NjZFRURBMDBDNTVGRUYgLyog
REZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZEREJGQjMxNjY2RUVENTAwQzU1RkVGIC8qIERGR1ZhcmlhYmxl
QWNjZXNzRGF0YUR1bXAuaCAqLzsgfTsKKwkJMEZERTg3RjkxREZEMEM3NjAwNjRDMzkwIC8qIENl
bGxDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZERTg3RjgxREZEMEM2RDAwNjRDMzkwIC8qIENlbGxDb250YWluZXIuY3BwICovOyB9
OwogCQkwRkRGNjdEMjFEOUM2RDI3MDAxQjk4MjUgLyogQjNLaW5kLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkRGNjdEMTFEOUM2MDg2MDAxQjk4MjUg
LyogQjNLaW5kLmggKi87IH07CiAJCTBGREY2N0QzMUQ5QzZEMkEwMDFCOTgyNSAvKiBCM0tpbmQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZERjY3
RDAxRDlDNjA4NjAwMUI5ODI1IC8qIEIzS2luZC5jcHAgKi87IH07CiAJCTBGREY2N0Q2MUQ5REM0
NDAwMDFCOTgyNSAvKiBBaXJLaW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGREY2N0Q0MUQ5REM0M0UwMDFCOTgyNSAvKiBBaXJLaW5kLmNwcCAq
LzsgfTsKQEAgLTMxNzgsNiArMzE3OSw3IEBACiAJCTBGREIyQ0U5MTc0ODk2QzcwMDdCM0MxQiAv
KiBDb25jdXJyZW50SlNMb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bmN1cnJlbnRKU0xvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEREJGQjIx
NjY2RUVENTAwQzU1RkVGIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5j
cHA7IHBhdGggPSBkZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGRERCRkIzMTY2NkVFRDUwMEM1NUZFRiAvKiBERkdWYXJpYWJs
ZUFjY2Vzc0RhdGFEdW1wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1Zh
cmlhYmxlQWNjZXNzRGF0YUR1bXAuaDsgcGF0aCA9IGRmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGFE
dW1wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGREU4N0Y4MURGRDBDNkQwMDY0
QzM5MCAvKiBDZWxsQ29udGFpbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENlbGxDb250YWluZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkRGNjdEMDFEOUM2MDg2MDAxQjk4MjUgLyogQjNLaW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEIzS2luZC5jcHA7IHBhdGggPSBiMy9CM0tpbmQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkRGNjdEMTFEOUM2MDg2MDAxQjk4MjUgLyogQjNL
aW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzS2luZC5oOyBwYXRoID0g
YjMvQjNLaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGREY2N0Q0MUQ5REM0
M0UwMDFCOTgyNSAvKiBBaXJLaW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEFpcktpbmQuY3BwOyBwYXRoID0gYjMvYWlyL0FpcktpbmQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNTYyOSw2ICs1NjMxLDcgQEAKIAkJCQkwRkE3NjIwQTFEQjk1
OUY2MDBCN0EyRkQgLyogQWxsb2NhdGluZ1Njb3BlLmggKi8sCiAJCQkJMEY5NjMwMzUxRDQxOTJD
MzAwNTYwOUQ5IC8qIEFsbG9jYXRvckF0dHJpYnV0ZXMuY3BwICovLAogCQkJCTBGOTYzMDM2MUQ0
MTkyQzMwMDU2MDlEOSAvKiBBbGxvY2F0b3JBdHRyaWJ1dGVzLmggKi8sCisJCQkJMEZERTg3Rjgx
REZEMEM2RDAwNjRDMzkwIC8qIENlbGxDb250YWluZXIuY3BwICovLAogCQkJCTBGMDcwQTQyMUQ1
NDNBODkwMDZFNzIzMiAvKiBDZWxsQ29udGFpbmVyLmggKi8sCiAJCQkJMEYwNzBBNDMxRDU0M0E4
OTAwNkU3MjMyIC8qIENlbGxDb250YWluZXJJbmxpbmVzLmggKi8sCiAJCQkJMEYxQzNERDkxQkJD
RTA5RTAwRTUyM0U0IC8qIENlbGxTdGF0ZS5oICovLApAQCAtMTAyNDIsNiArMTAyNDUsNyBAQAog
CQkJCTBGQjEwNThCMTY3NTQ4MzEwMEY4QUI2RSAvKiBQcm9maWxlck9TUkV4aXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZCMTA1OEQxNjc1NDgzNzAwRjhBQjZFIC8qIFByb2ZpbGVyT1NSRXhp
dFNpdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2MTgzMkIxQzQ1QkYwNzAwNzI0NTBCIC8q
IEFpckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkRFODdGOTFERkQwQzc2MDA2NEMz
OTAgLyogQ2VsbENvbnRhaW5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjEzOTEyQjE2Nzcx
QzNBMDA5Q0NCMDcgLyogUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkQzRTQwRDFCNjE4QjY2MDBDODBFMUUgLyogUHJvcGVydHlDb25kaXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTM1Q0ExNTMxREJDM0E1QzAwRjgzNTE2IC8qIERPTUpJVEhl
YXBSYW5nZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NlbGxDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0NlbGxDb250YWluZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NlbGxDb250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNlbGxDb250YWluZXIuaCIKKworI2luY2x1ZGUg
Ik1hcmtlZEJsb2NrSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworYm9vbCBDZWxsQ29u
dGFpbmVyOjppc05ld2x5QWxsb2NhdGVkKEhlYXBDZWxsKiBjZWxsKSBjb25zdAoreworICAgIGlm
IChpc0xhcmdlQWxsb2NhdGlvbigpKQorICAgICAgICByZXR1cm4gbGFyZ2VBbGxvY2F0aW9uKCku
aXNOZXdseUFsbG9jYXRlZCgpOworICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUmIGhhbmRsZSA9IG1h
cmtlZEJsb2NrKCkuaGFuZGxlKCk7CisgICAgcmV0dXJuICFoYW5kbGUuaXNOZXdseUFsbG9jYXRl
ZFN0YWxlKCkKKyAgICAgICAgJiYgaGFuZGxlLmlzTmV3bHlBbGxvY2F0ZWQoY2VsbCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9D
ZWxsQ29udGFpbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q2VsbENvbnRhaW5lci5oCShyZXZpc2lvbiAyMDk2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9DZWxsQ29udGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDggQEAg
cHVibGljOgogICAgIGJvb2wgaXNNYXJrZWQoSGVhcENlbGwqKSBjb25zdDsKICAgICBib29sIGlz
TWFya2VkKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBIZWFwQ2VsbCopIGNvbnN0OwogICAg
IAorICAgIGJvb2wgaXNOZXdseUFsbG9jYXRlZChIZWFwQ2VsbCopIGNvbnN0OworICAgIAogICAg
IHZvaWQgbm90ZU1hcmtlZCgpOwogICAgIHZvaWQgYXNzZXJ0VmFsaWRDZWxsKFZNJiwgSGVhcENl
bGwqKSBjb25zdDsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQWxsb2NhdG9yLmNwcAkocmV2aXNpb24gMjA5Njg3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcwLDYg
KzI3MCw3IEBAIHZvaWQgTWFya2VkQWxsb2NhdG9yOjphZGRCbG9jayhNYXJrZWRCbG8KICAgICAg
ICAgbV9ibG9ja3MuYXBwZW5kKGJsb2NrKTsKICAgICAgICAgaWYgKG1fYmxvY2tzLmNhcGFjaXR5
KCkgIT0gb2xkQ2FwYWNpdHkpIHsKICAgICAgICAgICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAg
ICAgICAgICAgICAgTm9Mb2NraW5nTmVjZXNzYXJ5LAogICAgICAgICAgICAgICAgIFsmXSAoRmFz
dEJpdFZlY3RvciYgdmVjdG9yKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQo
dmVjdG9yLCB2ZWN0b3IubnVtQml0cygpID09IG9sZENhcGFjaXR5KTsKICAgICAgICAgICAgICAg
ICB9KTsKQEAgLTI3OCw2ICsyNzksNyBAQCB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6YWRkQmxvY2so
TWFya2VkQmxvCiAgICAgICAgICAgICAKICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
Yml0dmVjdG9yTG9jayk7CiAgICAgICAgICAgICBmb3JFYWNoQml0VmVjdG9yKAorICAgICAgICAg
ICAgICAgIGxvY2tlciwKICAgICAgICAgICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3Rv
cikgewogICAgICAgICAgICAgICAgICAgICB2ZWN0b3IucmVzaXplKG1fYmxvY2tzLmNhcGFjaXR5
KCkpOwogICAgICAgICAgICAgICAgIH0pOwpAQCAtMjg5LDYgKzI5MSw3IEBAIHZvaWQgTWFya2Vk
QWxsb2NhdG9yOjphZGRCbG9jayhNYXJrZWRCbG8KICAgICB9CiAgICAgCiAgICAgZm9yRWFjaEJp
dFZlY3RvcigKKyAgICAgICAgTm9Mb2NraW5nTmVjZXNzYXJ5LAogICAgICAgICBbJl0gKEZhc3RC
aXRWZWN0b3ImIHZlY3RvcikgewogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh2ZWN0b3IsICF2
ZWN0b3JbaW5kZXhdKTsKICAgICAgICAgfSk7CkBAIC0zMDksNiArMzEyLDcgQEAgdm9pZCBNYXJr
ZWRBbGxvY2F0b3I6OnJlbW92ZUJsb2NrKE1hcmtlZAogICAgIG1fZnJlZUJsb2NrSW5kaWNlcy5h
cHBlbmQoYmxvY2stPmluZGV4KCkpOwogICAgIAogICAgIGZvckVhY2hCaXRWZWN0b3IoCisgICAg
ICAgIGhvbGRMb2NrKG1fYml0dmVjdG9yTG9jayksCiAgICAgICAgIFsmXSAoRmFzdEJpdFZlY3Rv
ciYgdmVjdG9yKSB7CiAgICAgICAgICAgICB2ZWN0b3JbYmxvY2stPmluZGV4KCldID0gZmFsc2U7
CiAgICAgICAgIH0pOwpAQCAtNDY3LDEyICs0NzEsMTQgQEAgdm9pZCBNYXJrZWRBbGxvY2F0b3I6
OmR1bXBCaXRzKFByaW50U3RyZQogewogICAgIHVuc2lnbmVkIG1heE5hbWVMZW5ndGggPSAwOwog
ICAgIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSgKKyAgICAgICAgTm9Mb2NraW5nTmVjZXNzYXJ5
LAogICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImLCBjb25zdCBjaGFyKiBuYW1lKSB7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4obmFtZSk7CiAgICAgICAgICAgICBtYXhO
YW1lTGVuZ3RoID0gc3RkOjptYXgobWF4TmFtZUxlbmd0aCwgbGVuZ3RoKTsKICAgICAgICAgfSk7
CiAgICAgCiAgICAgZm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKAorICAgICAgICBOb0xvY2tpbmdO
ZWNlc3NhcnksCiAgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yLCBjb25zdCBjaGFy
KiBuYW1lKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQoIiAgICAiLCBuYW1lLCAiOiAiKTsKICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1heE5hbWVMZW5ndGggLSBzdHJsZW4obmFtZSk7
IGktLTspCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0
b3IuaAkocmV2aXNpb24gMjA5Njg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw3ICsxODIsNyBAQCBwdWJsaWM6
CiAjdW5kZWYgTUFSS0VEX0FMTE9DQVRPUl9CSVRfQUNDRVNTT1JTCiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jPgotICAgIHZvaWQgZm9yRWFjaEJpdFZlY3Rvcihjb25zdCBGdW5jJiBmdW5j
KQorICAgIHZvaWQgZm9yRWFjaEJpdFZlY3Rvcihjb25zdCBBYnN0cmFjdExvY2tlciYsIGNvbnN0
IEZ1bmMmIGZ1bmMpCiAgICAgewogI2RlZmluZSBNQVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFD
Syhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCiAgICAgICAgIGZ1bmMobV8gIyMgbG93
ZXJCaXROYW1lKTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9pZCBmb3JFYWNoQml0VmVjdG9yV2l0aE5h
bWUoY29uc3QgRnVuYyYgZnVuYykKKyAgICB2b2lkIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZShj
b25zdCBBYnN0cmFjdExvY2tlciYsIGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgewogI2RlZmluZSBN
QVJLRURfQUxMT0NBVE9SX0JJVF9DQUxMQkFDSyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1l
KSBcCiAgICAgICAgIGZ1bmMobV8gIyMgbG93ZXJCaXROYW1lLCAjY2FwaXRhbEJpdE5hbWUpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkocmV2aXNp
b24gMjA5Njg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIE1h
cmtlZEJsb2NrOjp0cnlDcmUKICAgICBpZiAoY29tcHV0ZUJhbGFuY2UpIHsKICAgICAgICAgYmFs
YW5jZSsrOwogICAgICAgICBpZiAoIShiYWxhbmNlICUgMTApKQotICAgICAgICAgICAgZGF0YUxv
Zyh0b0NTdHJpbmcoIk1hcmtlZEJsb2NrIEJhbGFuY2U6ICIsIGJhbGFuY2UsICJcbiIpKTsKKyAg
ICAgICAgICAgIGRhdGFMb2coIk1hcmtlZEJsb2NrIEJhbGFuY2U6ICIsIGJhbGFuY2UsICJcbiIp
OwogICAgIH0KICAgICB2b2lkKiBibG9ja1NwYWNlID0gdHJ5RmFzdEFsaWduZWRNYWxsb2MoYmxv
Y2tTaXplLCBibG9ja1NpemUpOwogICAgIGlmICghYmxvY2tTcGFjZSkKQEAgLTcxLDcgKzcxLDcg
QEAgTWFya2VkQmxvY2s6OkhhbmRsZTo6fkhhbmRsZSgpCiAgICAgaWYgKGNvbXB1dGVCYWxhbmNl
KSB7CiAgICAgICAgIGJhbGFuY2UtLTsKICAgICAgICAgaWYgKCEoYmFsYW5jZSAlIDEwKSkKLSAg
ICAgICAgICAgIGRhdGFMb2codG9DU3RyaW5nKCJNYXJrZWRCbG9jayBCYWxhbmNlOiAiLCBiYWxh
bmNlLCAiXG4iKSk7CisgICAgICAgICAgICBkYXRhTG9nKCJNYXJrZWRCbG9jayBCYWxhbmNlOiAi
LCBiYWxhbmNlLCAiXG4iKTsKICAgICB9CiAgICAgcmVtb3ZlRnJvbUFsbG9jYXRvcigpOwogICAg
IG1fYmxvY2stPn5NYXJrZWRCbG9jaygpOwpAQCAtODUsNyArODUsNyBAQCBNYXJrZWRCbG9jazo6
TWFya2VkQmxvY2soVk0mIHZtLCBIYW5kbGUmCiAgICAgLCBtX3ZtKCZ2bSkKIHsKICAgICBpZiAo
ZmFsc2UpCi0gICAgICAgIGRhdGFMb2codG9DU3RyaW5nKFJhd1BvaW50ZXIodGhpcyksICI6IEFs
bG9jYXRlZC5cbiIpKTsKKyAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiBBbGxv
Y2F0ZWQuXG4iKTsKIH0KIAogdGVtcGxhdGU8TWFya2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlNb2Rl
IGVtcHR5TW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBNb2RlIHN3ZWVwTW9kZSwgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlLCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpOZXdseUFsbG9jYXRlZE1vZGUgbmV3bHlBbGxvY2F0ZWRNb2RlLCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpNYXJrc01vZGUgbWFya3NNb2RlPgpAQCAtOTgsNyArOTgsNyBAQCBGcmVl
TGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplCiAgICAgTWFya2VkQmxvY2smIGJs
b2NrID0gdGhpcy0+YmxvY2soKTsKICAgICAKICAgICBpZiAoZmFsc2UpCi0gICAgICAgIGRhdGFM
b2codG9DU3RyaW5nKFJhd1BvaW50ZXIodGhpcyksICIvIiwgUmF3UG9pbnRlcigmYmxvY2spLCAi
OiBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVwIVxuIikpOworICAgICAgICBk
YXRhTG9nKFJhd1BvaW50ZXIodGhpcyksICIvIiwgUmF3UG9pbnRlcigmYmxvY2spLCAiOiBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVwIVxuIik7CiAgICAgCiAgICAgaWYgKE9w
dGlvbnM6OnVzZUJ1bXBBbGxvY2F0b3IoKQogICAgICAgICAmJiBlbXB0eU1vZGUgPT0gSXNFbXB0
eQpAQCAtMTA2LDExICsxMDYsMTQgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3Bl
Y2lhbGl6ZQogICAgICAgICAKICAgICAgICAgLy8gVGhpcyBpcyBhbiBpbmNyZWRpYmx5IHBvd2Vy
ZnVsIGFzc2VydGlvbiB0aGF0IGNoZWNrcyB0aGUgc2FuaXR5IG9mIG91ciBibG9jayBiaXRzLgog
ICAgICAgICBpZiAobWFya3NNb2RlID09IE1hcmtzTm90U3RhbGUgJiYgIWJsb2NrLm1fbWFya3Mu
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBkYXRhTG9nKHRvQ1N0cmluZygiQmxvY2sgIiwgUmF3
UG9pbnRlcigmYmxvY2spLCAiOiBtYXJrcyBub3QgZW1wdHkhXG4iKSk7Ci0gICAgICAgICAgICBk
YXRhTG9nKHRvQ1N0cmluZygiQmxvY2sgbG9jayBpcyBoZWxkOiAiLCBibG9jay5tX2xvY2suaXNI
ZWxkKCksICJcbiIpKTsKLSAgICAgICAgICAgIGRhdGFMb2codG9DU3RyaW5nKCJNYXJraW5nIHZl
cnNpb24gb2YgYmxvY2s6ICIsIGJsb2NrLm1fbWFya2luZ1ZlcnNpb24sICJcbiIpKTsKLSAgICAg
ICAgICAgIGRhdGFMb2codG9DU3RyaW5nKCJNYXJraW5nIHZlcnNpb24gb2YgaGVhcDogIiwgc3Bh
Y2UoKS0+bWFya2luZ1ZlcnNpb24oKSwgIlxuIikpOwotICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIFdURjo6ZGF0YUZpbGUoKS5hdG9taWNhbGx5
KAorICAgICAgICAgICAgICAgIFsmXSAoUHJpbnRTdHJlYW0mIG91dCkgeworICAgICAgICAgICAg
ICAgICAgICBvdXQucHJpbnQoIkJsb2NrICIsIFJhd1BvaW50ZXIoJmJsb2NrKSwgIjogbWFya3Mg
bm90IGVtcHR5IVxuIik7CisgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgiQmxvY2sgbG9j
ayBpcyBoZWxkOiAiLCBibG9jay5tX2xvY2suaXNIZWxkKCksICJcbiIpOworICAgICAgICAgICAg
ICAgICAgICBvdXQucHJpbnQoIk1hcmtpbmcgdmVyc2lvbiBvZiBibG9jazogIiwgYmxvY2subV9t
YXJraW5nVmVyc2lvbiwgIlxuIik7CisgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgiTWFy
a2luZyB2ZXJzaW9uIG9mIGhlYXA6ICIsIHNwYWNlKCktPm1hcmtpbmdWZXJzaW9uKCksICJcbiIp
OworICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKKyAgICAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgY2hhciogc3RhcnRP
Zkxhc3RDZWxsID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGNlbGxBbGlnbihibG9jay5hdG9tcygpICsg
bV9lbmRBdG9tIC0gMSkpOwpAQCAtMTI3LDcgKzEzMCw3IEBAIEZyZWVMaXN0IE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OnNwZWNpYWxpemUKICAgICAgICAgICAgIGJsb2NrLm1fbG9jay51bmxvY2soKTsK
ICAgICAgICAgRnJlZUxpc3QgcmVzdWx0ID0gRnJlZUxpc3Q6OmJ1bXAocGF5bG9hZEVuZCwgcGF5
bG9hZEVuZCAtIHBheWxvYWRCZWdpbik7CiAgICAgICAgIGlmIChmYWxzZSkKLSAgICAgICAgICAg
IGRhdGFMb2codG9DU3RyaW5nKCJRdWlja2x5IHN3ZXB0IGJsb2NrICIsIFJhd1BvaW50ZXIodGhp
cyksICIgd2l0aCBjZWxsIHNpemUgIiwgY2VsbFNpemUoKSwgIiBhbmQgYXR0cmlidXRlcyAiLCBt
X2F0dHJpYnV0ZXMsICI6ICIsIHJlc3VsdCwgIlxuIikpOworICAgICAgICAgICAgZGF0YUxvZygi
UXVpY2tseSBzd2VwdCBibG9jayAiLCBSYXdQb2ludGVyKHRoaXMpLCAiIHdpdGggY2VsbCBzaXpl
ICIsIGNlbGxTaXplKCksICIgYW5kIGF0dHJpYnV0ZXMgIiwgbV9hdHRyaWJ1dGVzLCAiOiAiLCBy
ZXN1bHQsICJcbiIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTg2LDcg
KzE4OSw3IEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemUKICAgICBl
bHNlIGlmIChpc0VtcHR5KQogICAgICAgICBtX2FsbG9jYXRvci0+c2V0SXNFbXB0eShOb0xvY2tp
bmdOZWNlc3NhcnksIHRoaXMsIHRydWUpOwogICAgIGlmIChmYWxzZSkKLSAgICAgICAgZGF0YUxv
Zyh0b0NTdHJpbmcoIlNsb3dseSBzd2VwdCBibG9jayAiLCBSYXdQb2ludGVyKCZibG9jayksICIg
d2l0aCBjZWxsIHNpemUgIiwgY2VsbFNpemUoKSwgIiBhbmQgYXR0cmlidXRlcyAiLCBtX2F0dHJp
YnV0ZXMsICI6ICIsIHJlc3VsdCwgIlxuIikpOworICAgICAgICBkYXRhTG9nKCJTbG93bHkgc3dl
cHQgYmxvY2sgIiwgUmF3UG9pbnRlcigmYmxvY2spLCAiIHdpdGggY2VsbCBzaXplICIsIGNlbGxT
aXplKCksICIgYW5kIGF0dHJpYnV0ZXMgIiwgbV9hdHRyaWJ1dGVzLCAiOiAiLCByZXN1bHQsICJc
biIpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTI2Miw3ICsyNjUsNyBAQCBGcmVlTGlz
dCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlCiAgICAgSGVhcFZlcnNpb24gbWFya2lu
Z1ZlcnNpb24gPSBzcGFjZSgpLT5tYXJraW5nVmVyc2lvbigpOwogICAgIGJvb2wgbWFya3NBcmVV
c2VmdWwgPSAhYmxvY2soKS5hcmVNYXJrc1N0YWxlKG1hcmtpbmdWZXJzaW9uKTsKICAgICAKLSAg
ICBpZiAoc3BhY2UoKS0+aXNNYXJraW5nKCkgJiYgaGVhcCgpLT5jb2xsZWN0aW9uU2NvcGUoKSA9
PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpCisgICAgaWYgKHNwYWNlKCktPmlzTWFya2luZygpKQog
ICAgICAgICBtYXJrc0FyZVVzZWZ1bCB8PSBibG9jaygpLm1hcmtzQ29udmV5TGl2ZW5lc3NEdXJp
bmdNYXJraW5nKG1hcmtpbmdWZXJzaW9uKTsKICAgICAKICAgICBpZiAoIW1hcmtzQXJlVXNlZnVs
KQpAQCAtMjg3LDEyICsyOTAsMTIgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxs
b2NhdGluZwogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soYmxvY2soKS5tX2xvY2spOwogICAg
IAogICAgIGlmIChmYWxzZSkKLSAgICAgICAgZGF0YUxvZyh0b0NTdHJpbmcoUmF3UG9pbnRlcih0
aGlzKSwgIjogTWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmchXG4iKSk7CisgICAg
ICAgIGRhdGFMb2coUmF3UG9pbnRlcih0aGlzKSwgIjogTWFya2VkQmxvY2s6OkhhbmRsZTo6c3Rv
cEFsbG9jYXRpbmchXG4iKTsKICAgICBBU1NFUlQoIWFsbG9jYXRvcigpLT5pc0FsbG9jYXRlZChO
b0xvY2tpbmdOZWNlc3NhcnksIHRoaXMpKTsKIAogICAgIGlmICghaXNGcmVlTGlzdGVkKCkpIHsK
ICAgICAgICAgaWYgKGZhbHNlKQotICAgICAgICAgICAgZGF0YUxvZyh0b0NTdHJpbmcoIlRoZXJl
IGFpbid0IG5vIG5ld2x5IGFsbG9jYXRlZC5cbiIpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIlRo
ZXJlIGFpbid0IG5vIG5ld2x5IGFsbG9jYXRlZC5cbiIpOwogICAgICAgICAvLyBUaGlzIG1lYW5z
IHRoYXQgd2UgZWl0aGVyIGRpZG4ndCB1c2UgdGhpcyBibG9jayBhdCBhbGwgZm9yIGFsbG9jYXRp
b24gc2luY2UgbGFzdCBHQywKICAgICAgICAgLy8gb3Igc29tZW9uZSBoYWQgYWxyZWFkeSBkb25l
IHN0b3BBbGxvY2F0aW5nKCkgYmVmb3JlLgogICAgICAgICBBU1NFUlQoZnJlZUxpc3QuYWxsb2Nh
dGlvbldpbGxGYWlsKCkpOwpAQCAtMzAwLDcgKzMwMyw3IEBAIHZvaWQgTWFya2VkQmxvY2s6Okhh
bmRsZTo6c3RvcEFsbG9jYXRpbmcKICAgICB9CiAgICAgCiAgICAgaWYgKGZhbHNlKQotICAgICAg
ICBkYXRhTG9nKHRvQ1N0cmluZygiRnJlZSBsaXN0OiAiLCBmcmVlTGlzdCwgIlxuIikpOworICAg
ICAgICBkYXRhTG9nKCJGcmVlIGxpc3Q6ICIsIGZyZWVMaXN0LCAiXG4iKTsKICAgICAKICAgICAv
LyBSb2xsIGJhY2sgdG8gYSBjb2hlcmVudCBzdGF0ZSBmb3IgSGVhcCBpbnRyb3NwZWN0aW9uLiBD
ZWxscyBuZXdseQogICAgIC8vIGFsbG9jYXRlZCBmcm9tIG91ciBmcmVlIGxpc3QgYXJlIG5vdCBj
dXJyZW50bHkgbWFya2VkLCBzbyB3ZSBuZWVkIGFub3RoZXIKQEAgLTMxOSw3ICszMjIsNyBAQCB2
b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BBbGxvY2F0aW5nCiAgICAgICAgIGZyZWVMaXN0
LAogICAgICAgICBbJl0gKEhlYXBDZWxsKiBjZWxsKSB7CiAgICAgICAgICAgICBpZiAoZmFsc2Up
Ci0gICAgICAgICAgICAgICAgZGF0YUxvZyh0b0NTdHJpbmcoIkZyZWUgY2VsbDogIiwgUmF3UG9p
bnRlcihjZWxsKSwgIlxuIikpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIkZyZWUgY2VsbDog
IiwgUmF3UG9pbnRlcihjZWxsKSwgIlxuIik7CiAgICAgICAgICAgICBpZiAobV9hdHRyaWJ1dGVz
LmRlc3RydWN0aW9uID09IE5lZWRzRGVzdHJ1Y3Rpb24pCiAgICAgICAgICAgICAgICAgY2VsbC0+
emFwKCk7CiAgICAgICAgICAgICBjbGVhck5ld2x5QWxsb2NhdGVkKGNlbGwpOwpAQCAtMzQ2LDEz
ICszNDksMTMgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6cmVzdW1lQWxsbwogICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGJsb2NrKCkubV9sb2NrKTsKICAgICAgICAgCiAg
ICAgICAgIGlmIChmYWxzZSkKLSAgICAgICAgICAgIGRhdGFMb2codG9DU3RyaW5nKFJhd1BvaW50
ZXIodGhpcyksICI6IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc3VtZUFsbG9jYXRpbmchXG4iKSk7
CisgICAgICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIodGhpcyksICI6IE1hcmtlZEJsb2NrOjpI
YW5kbGU6OnJlc3VtZUFsbG9jYXRpbmchXG4iKTsKICAgICAgICAgQVNTRVJUKCFhbGxvY2F0b3Io
KS0+aXNBbGxvY2F0ZWQoTm9Mb2NraW5nTmVjZXNzYXJ5LCB0aGlzKSk7CiAgICAgICAgIEFTU0VS
VCghaXNGcmVlTGlzdGVkKCkpOwogICAgICAgICAKICAgICAgICAgaWYgKCFoYXNBbnlOZXdseUFs
bG9jYXRlZCgpKSB7CiAgICAgICAgICAgICBpZiAoZmFsc2UpCi0gICAgICAgICAgICAgICAgZGF0
YUxvZyh0b0NTdHJpbmcoIlRoZXJlIGFpbid0IG5vIG5ld2x5IGFsbG9jYXRlZC5cbiIpKTsKKyAg
ICAgICAgICAgICAgICBkYXRhTG9nKCJUaGVyZSBhaW4ndCBubyBuZXdseSBhbGxvY2F0ZWQuXG4i
KTsKICAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMgd2UgaGFkIGFscmVhZHkgZXhoYXVzdGVkIHRo
ZSBibG9jayB3aGVuIHdlIHN0b3BwZWQgYWxsb2NhdGlvbi4KICAgICAgICAgICAgIHJldHVybiBG
cmVlTGlzdCgpOwogICAgICAgICB9CkBAIC00MDEsNyArNDA0LDcgQEAgdm9pZCBNYXJrZWRCbG9j
azo6YWJvdXRUb01hcmtTbG93KEhlYXBWZQogICAgIGlmIChoYW5kbGUoKS5hbGxvY2F0b3IoKS0+
aXNBbGxvY2F0ZWQoaG9sZExvY2soYWxsb2NhdG9yLT5iaXR2ZWN0b3JMb2NrKCkpLCAmaGFuZGxl
KCkpCiAgICAgICAgIHx8ICFtYXJrc0NvbnZleUxpdmVuZXNzRHVyaW5nTWFya2luZyhtYXJraW5n
VmVyc2lvbikpIHsKICAgICAgICAgaWYgKGZhbHNlKQotICAgICAgICAgICAgZGF0YUxvZyh0b0NT
dHJpbmcoUmF3UG9pbnRlcih0aGlzKSwgIjogQ2xlYXJpbmcgbWFya3Mgd2l0aG91dCBkb2luZyBh
bnl0aGluZyBlbHNlLlxuIikpOworICAgICAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHRoaXMp
LCAiOiBDbGVhcmluZyBtYXJrcyB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2UuXG4iKTsKICAg
ICAgICAgLy8gV2UgYWxyZWFkeSBrbm93IHRoYXQgdGhlIGJsb2NrIGlzIGZ1bGwgYW5kIGlzIGFs
cmVhZHkgcmVjb2duaXplZCBhcyBzdWNoLCBvciB0aGF0IHRoZQogICAgICAgICAvLyBibG9jayBk
aWQgbm90IHN1cnZpdmUgdGhlIHByZXZpb3VzIEdDLiBTbywgd2UgY2FuIGNsZWFyIG1hcmsgYml0
cyB0aGUgb2xkIGZhc2hpb25lZAogICAgICAgICAvLyB3YXkuIE5vdGUgdGhhdCBpdCdzIHBvc3Np
YmxlIGZvciBzdWNoIGEgYmxvY2sgdG8gaGF2ZSBuZXdseUFsbG9jYXRlZCB3aXRoIGFuIHVwLXRv
LQpAQCAtNDExLDcgKzQxNCw3IEBAIHZvaWQgTWFya2VkQmxvY2s6OmFib3V0VG9NYXJrU2xvdyhI
ZWFwVmUKICAgICAgICAgbV9tYXJrcy5jbGVhckFsbCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGlmIChmYWxzZSkKLSAgICAgICAgICAgIGRhdGFMb2codG9DU3RyaW5nKFJhd1BvaW50ZXIodGhp
cyksICI6IERvaW5nIHRoaW5ncy5cbiIpKTsKKyAgICAgICAgICAgIGRhdGFMb2coUmF3UG9pbnRl
cih0aGlzKSwgIjogRG9pbmcgdGhpbmdzLlxuIik7CiAgICAgICAgIEhlYXBWZXJzaW9uIG5ld2x5
QWxsb2NhdGVkVmVyc2lvbiA9IHNwYWNlKCktPm5ld2x5QWxsb2NhdGVkVmVyc2lvbigpOwogICAg
ICAgICBpZiAoaGFuZGxlKCkubV9uZXdseUFsbG9jYXRlZFZlcnNpb24gPT0gbmV3bHlBbGxvY2F0
ZWRWZXJzaW9uKSB7CiAgICAgICAgICAgICAvLyBNZXJnZSB0aGUgY29udGVudHMgb2YgbWFya2Vk
IGludG8gbmV3bHlBbGxvY2F0ZWQuIElmIHdlIGdldCB0aGUgZnVsbCBzZXQgb2YgYml0cwpAQCAt
NDc3LDcgKzQ4MCw3IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQ29uc3VtZUZyZWUK
IHsKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGJsb2NrKCkubV9sb2NrKTsKICAgICBpZiAo
ZmFsc2UpCi0gICAgICAgIGRhdGFMb2codG9DU3RyaW5nKFJhd1BvaW50ZXIodGhpcyksICI6IE1h
cmtlZEJsb2NrOjpIYW5kbGU6OmRpZENvbnN1bWVGcmVlTGlzdCFcbiIpKTsKKyAgICAgICAgZGF0
YUxvZyhSYXdQb2ludGVyKHRoaXMpLCAiOiBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRDb25zdW1l
RnJlZUxpc3QhXG4iKTsKICAgICBBU1NFUlQoaXNGcmVlTGlzdGVkKCkpOwogICAgIG1faXNGcmVl
TGlzdGVkID0gZmFsc2U7CiAgICAgYWxsb2NhdG9yKCktPnNldElzQWxsb2NhdGVkKE5vTG9ja2lu
Z05lY2Vzc2FyeSwgdGhpcywgdHJ1ZSk7CkBAIC01NzMsNiArNTc2LDE2IEBAIHZvaWQgTWFya2Vk
QmxvY2s6OmFzc2VydFZhbGlkQ2VsbChWTSYgdm0KIH0KICNlbmRpZgogCit2b2lkIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OmR1bXBTdGF0ZShQcmludFN0cmVhbSYgb3V0KQoreworICAgIENvbW1hUHJp
bnRlciBjb21tYTsKKyAgICBhbGxvY2F0b3IoKS0+Zm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKAor
ICAgICAgICBob2xkTG9jayhhbGxvY2F0b3IoKS0+Yml0dmVjdG9yTG9jaygpKSwKKyAgICAgICAg
WyZdIChGYXN0Qml0VmVjdG9yJiBiaXR2ZWN0b3IsIGNvbnN0IGNoYXIqIG5hbWUpIHsKKyAgICAg
ICAgICAgIG91dC5wcmludChjb21tYSwgbmFtZSwgIjoiLCBiaXR2ZWN0b3JbaW5kZXgoKV0gPyAi
WUVTIiA6ICJubyIpOworICAgICAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5h
bWVzcGFjZSBXVEYgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9j
ay5oCShyZXZpc2lvbiAyMDk2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNiArMTg3LDggQEAgcHVibGljOgogICAg
ICAgICB2b2lkIGRpZEFkZFRvQWxsb2NhdG9yKE1hcmtlZEFsbG9jYXRvciosIHNpemVfdCBpbmRl
eCk7CiAgICAgICAgIHZvaWQgZGlkUmVtb3ZlRnJvbUFsbG9jYXRvcigpOwogICAgICAgICAKKyAg
ICAgICAgdm9pZCBkdW1wU3RhdGUoUHJpbnRTdHJlYW0mKTsKKyAgICAgICAgCiAgICAgcHJpdmF0
ZToKICAgICAgICAgSGFuZGxlKEhlYXAmLCB2b2lkKik7CiAgICAgICAgIApAQCAtMjk4LDYgKzMw
MCw5IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHJlc2V0TWFya3MoKTsKICAgICAKKyAgICBi
b29sIGlzTWFya2VkUmF3KGNvbnN0IHZvaWQqIHApOworICAgIEhlYXBWZXJzaW9uIG1hcmtpbmdW
ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXJraW5nVmVyc2lvbjsgfQorICAgIAogcHJpdmF0
ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0b21BbGlnbm1lbnRNYXNrID0gYXRvbVNpemUg
LSAxOwogCkBAIC01MTgsOSArNTIzLDE0IEBAIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OmFzc2VydE0KICAgICBibG9jaygpLmFzc2VydE1hcmtzTm90U3RhbGUoKTsKIH0KIAoraW5s
aW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkUmF3KGNvbnN0IHZvaWQqIHApCit7CisgICAg
cmV0dXJuIG1fbWFya3MuZ2V0KGF0b21OdW1iZXIocCkpOworfQorCiBpbmxpbmUgYm9vbCBNYXJr
ZWRCbG9jazo6aXNNYXJrZWQoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGNvbnN0IHZvaWQq
IHApCiB7Ci0gICAgcmV0dXJuIGFyZU1hcmtzU3RhbGUobWFya2luZ1ZlcnNpb24pID8gZmFsc2Ug
OiBtX21hcmtzLmdldChhdG9tTnVtYmVyKHApKTsKKyAgICByZXR1cm4gYXJlTWFya3NTdGFsZSht
YXJraW5nVmVyc2lvbikgPyBmYWxzZSA6IGlzTWFya2VkUmF3KHApOwogfQogCiBpbmxpbmUgYm9v
bCBNYXJrZWRCbG9jazo6aXNNYXJrZWRDb25jdXJyZW50bHkoSGVhcFZlcnNpb24gbWFya2luZ1Zl
cnNpb24sIGNvbnN0IHZvaWQqIHApCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRCbG9ja0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkocmV2aXNpb24gMjA5Njg3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJNYXJrZWRBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJN
YXJrZWRCbG9jay5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisjaW5jbHVkZSAiVk0uaCIK
IAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTUxLDYgKzUyLDggQEAgaW5saW5lIGJvb2wgTWFya2Vk
QmxvY2s6Om1hcmtzQ29udmV5TGl2ZQogICAgIC8vIGJhY2siIHN0YXRlIG9ubHkgbWFrZXMgc2Vu
c2Ugd2hlbiB3ZSdyZSBpbiBhIGNvbmN1cnJlbnQgY29sbGVjdGlvbiBhbmQgaGF2ZSB0byBiZQog
ICAgIC8vIGNvbnNlcnZhdGl2ZS4KICAgICBBU1NFUlQoc3BhY2UoKS0+aXNNYXJraW5nKCkpOwor
ICAgIGlmIChoZWFwKCktPmNvbGxlY3Rpb25TY29wZSgpICE9IENvbGxlY3Rpb25TY29wZTo6RnVs
bCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBtX21hcmtpbmdWZXJzaW9uID09
IE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbgogICAgICAgICB8fCBNYXJrZWRTcGFjZTo6bmV4dFZl
cnNpb24obV9tYXJraW5nVmVyc2lvbikgPT0gbWFya2luZ1ZlcnNpb247CiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCShyZXZpc2lvbiAyMDk2ODcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNSwxNyArMTM1LDc0IEBAIHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZEpTQ2Vs
bE9yQXV4aWxpYXIKICAgICAKICAgICBBU1NFUlQoIW1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJr
VmlvbGF0aW9uKTsKICAgICAKKyAgICBhdXRvIHZhbGlkYXRlQ2VsbCA9IFsmXSAoSlNDZWxsKiBq
c0NlbGwpIHsKKyAgICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQgPSBqc0NlbGwtPnN0cnVj
dHVyZUlEKCk7CisgICAgICAgIAorICAgICAgICBhdXRvIGRpZSA9IFsmXSAoY29uc3QgY2hhciog
dGV4dCkgeworICAgICAgICAgICAgV1RGOjpkYXRhRmlsZSgpLmF0b21pY2FsbHkoCisgICAgICAg
ICAgICAgICAgWyZdIChQcmludFN0cmVhbSYgb3V0KSB7CisgICAgICAgICAgICAgICAgICAgIG91
dC5wcmludCh0ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCJHQyB0eXBlOiAi
LCBoZWFwKCktPmNvbGxlY3Rpb25TY29wZSgpLCAiXG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
b3V0LnByaW50KCJPYmplY3QgYXQ6ICIsIFJhd1BvaW50ZXIoanNDZWxsKSwgIlxuIik7CisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCJTdHJ1Y3R1cmUg
SUQ6ICIsIHN0cnVjdHVyZUlELCAiICgweCIsIGZvcm1hdCgiJXgiLCBzdHJ1Y3R1cmVJRCksICIp
XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCJTdHJ1Y3R1cmUgSUQgdGFibGUg
c2l6ZTogIiwgaGVhcCgpLT5zdHJ1Y3R1cmVJRFRhYmxlKCkuc2l6ZSgpLCAiXG4iKTsKKyNlbHNl
CisgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgiU3RydWN0dXJlOiAiLCBSYXdQb2ludGVy
KHN0cnVjdHVyZUlEKSwgIlxuIik7CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgb3V0LnBy
aW50KCJPYmplY3QgY29udGVudHM6Iik7CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCAyOyArK2kpCisgICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQo
IiAiLCBmb3JtYXQoIjB4JTAxNmxseCIsIGJpdHdpc2VfY2FzdDx1aW50NjRfdCo+KGpzQ2VsbClb
aV0pKTsKKyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOworICAgICAgICAgICAg
ICAgICAgICBDZWxsQ29udGFpbmVyIGNvbnRhaW5lciA9IGpzQ2VsbC0+Y2VsbENvbnRhaW5lcigp
OworICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIklzIG1hcmtlZDogIiwgY29udGFpbmVy
LmlzTWFya2VkKGpzQ2VsbCksICJcbiIpOworICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQo
IklzIG5ld2x5IGFsbG9jYXRlZDogIiwgY29udGFpbmVyLmlzTmV3bHlBbGxvY2F0ZWQoanNDZWxs
KSwgIlxuIik7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluZXIuaXNNYXJrZWRCbG9j
aygpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSBjb250
YWluZXIubWFya2VkQmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgi
QmxvY2s6ICIsIFJhd1BvaW50ZXIoJmJsb2NrKSwgIlxuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICBibG9jay5oYW5kbGUoKS5kdW1wU3RhdGUob3V0KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgi
SXMgbWFya2VkIHJhdzogIiwgYmxvY2suaXNNYXJrZWRSYXcoanNDZWxsKSwgIlxuIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIk1hcmtpbmcgdmVyc2lvbjogIiwgYmxvY2su
bWFya2luZ1ZlcnNpb24oKSwgIlxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJp
bnQoIkhlYXAgbWFya2luZyB2ZXJzaW9uOiAiLCBoZWFwKCktPm9iamVjdFNwYWNlKCkubWFya2lu
Z1ZlcnNpb24oKSwgIlxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIklz
IG5ld2x5IGFsbG9jYXRlZCByYXc6ICIsIGJsb2NrLmhhbmRsZSgpLmlzTmV3bHlBbGxvY2F0ZWQo
anNDZWxsKSwgIlxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIk5ld2x5
IGFsbG9jYXRlZCB2ZXJzaW9uOiAiLCBibG9jay5oYW5kbGUoKS5uZXdseUFsbG9jYXRlZFZlcnNp
b24oKSwgIlxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIkhlYXAgbmV3
bHkgYWxsb2NhdGVkIHZlcnNpb246ICIsIGhlYXAoKS0+b2JqZWN0U3BhY2UoKS5uZXdseUFsbG9j
YXRlZFZlcnNpb24oKSwgIlxuIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICAvLyBJdCdzIG5vdCBPSyBmb3IgdGhlIHN0
cnVjdHVyZSB0byBiZSBudWxsIGF0IGFueSBHQyBzY2FuIHBvaW50LiBXZSBtdXN0IG5vdCBHQyB3
aGlsZQorICAgICAgICAvLyBhbiBvYmplY3QgaXMgbm90IGZ1bGx5IGluaXRpYWxpemVkLgorICAg
ICAgICBpZiAoIXN0cnVjdHVyZUlEKQorICAgICAgICAgICAgZGllKCJHQyBzY2FuIGZvdW5kIGNv
cnJ1cHQgb2JqZWN0OiBzdHJ1Y3R1cmVJRCBpcyB6ZXJvIVxuIik7CisgICAgICAgIAorICAgICAg
ICAvLyBJdCdzIG5vdCBPSyBmb3IgdGhlIHN0cnVjdHVyZSB0byBiZSBudWtlZCBhdCBhbnkgR0Mg
c2NhbiBwb2ludC4KKyAgICAgICAgaWYgKGlzTnVrZWQoc3RydWN0dXJlSUQpKQorICAgICAgICAg
ICAgZGllKCJHQyBzY2FuIGZvdW5kIG9iamVjdCBpbiBiYWQgc3RhdGU6IHN0cnVjdHVyZUlEIGlz
IG51a2VkIVxuIik7CisgICAgICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIC8vIFRo
aXMgZGV0ZWN0cyB0aGUgd29yc3Qgb2YgdGhlIGJhZG5lc3MuCisgICAgICAgIGlmIChzdHJ1Y3R1
cmVJRCA+PSBoZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5zaXplKCkpCisgICAgICAgICAgICBk
aWUoIkdDIHNjYW4gZm91bmQgY29ycnVwdCBvYmplY3Q6IHN0cnVjdHVyZUlEIGlzIG91dCBvZiBi
b3VuZHMhXG4iKTsKKyNlbmRpZgorICAgIH07CisgICAgCisgICAgLy8gSW4gZGVidWcgbW9kZSwg
d2UgdmFsaWRhdGUgYmVmb3JlIG1hcmtpbmcgc2luY2UgdGhpcyBtYWtlcyBpdCBjbGVhcmVyIHdo
YXQgdGhlIHByb2JsZW0KKyAgICAvLyB3YXMuIEl0J3MgYWxzbyBzbG93ZXIsIHNvIHdlIGRvbid0
IGRvIGl0IG5vcm1hbGx5LgorICAgIGlmICghQVNTRVJUX0RJU0FCTEVEICYmIGhlYXBDZWxsLT5j
ZWxsS2luZCgpID09IEhlYXBDZWxsOjpKU0NlbGwpCisgICAgICAgIHZhbGlkYXRlQ2VsbChzdGF0
aWNfY2FzdDxKU0NlbGwqPihoZWFwQ2VsbCkpOworICAgIAogICAgIGlmIChIZWFwOjp0ZXN0QW5k
U2V0TWFya2VkKG1fbWFya2luZ1ZlcnNpb24sIGhlYXBDZWxsKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIAogICAgIHN3aXRjaCAoaGVhcENlbGwtPmNlbGxLaW5kKCkpIHsKICAgICBjYXNlIEhlYXBD
ZWxsOjpKU0NlbGw6IHsKKyAgICAgICAgLy8gV2UgaGF2ZSBhbXBsZSBidWRnZXQgdG8gcGVyZm9y
bSB2YWxpZGF0aW9uIGhlcmUuCisgICAgCiAgICAgICAgIEpTQ2VsbCoganNDZWxsID0gc3RhdGlj
X2Nhc3Q8SlNDZWxsKj4oaGVhcENlbGwpOwotICAgICAgICAKLSAgICAgICAgaWYgKCFqc0NlbGwt
PnN0cnVjdHVyZSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICB2YWxpZGF0ZUNlbGwoanNDZWxsKTsK
ICAgICAgICAgCiAgICAgICAgIGpzQ2VsbC0+c2V0Q2VsbFN0YXRlKENlbGxTdGF0ZTo6R3JleSk7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZp
c2lvbiAyMDk2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzM2LDYgKzMzNiw4IEBAIHN0YXRpYyB2b2lkIHJlY29tcHV0
ZURlcGVuZGVudE9wdGlvbnMoKQogICAgIE9wdGlvbnM6OnVzZUNvbmN1cnJlbnRHQygpID0gZmFs
c2U7CiAjZW5kaWYKICAgICAKKyAgICBPcHRpb25zOjp1c2VDb25jdXJyZW50R0MoKSA9IHRydWU7
CisgICAgCiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4NikgCiAgICAgLy8gRGlzYWJsZSBKSVQg
b24gV2luZG93cyBpZiBTU0UyIGlzIG5vdCBwcmVzZW50IAogICAgIGlmICghTWFjcm9Bc3NlbWJs
ZXJYODY6OnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuaAkocmV2aXNpb24gMjA5Njg3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MCw2ICs5MCw4IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmVJRCBhbGxv
Y2F0ZUlEKFN0cnVjdHVyZSopOwogCiAgICAgdm9pZCBmbHVzaE9sZFRhYmxlcygpOworICAgIAor
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCByZXNpemUoc2l6ZV90IG5ld0NhcGFjaXR5KTsKQEAgLTEyMSw3ICsxMjMsOSBAQCBw
cml2YXRlOgogaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlSURUYWJsZTo6Z2V0KFN0cnVjdHVy
ZUlEIHN0cnVjdHVyZUlEKQogewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oc3RydWN0dXJlSUQgJiYgc3RydWN0dXJlSUQgPCBtX2NhcGFj
aXR5KTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihzdHJ1Y3R1cmVJRCk7
CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWlzTnVrZWQoc3RydWN0dXJl
SUQpKTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihzdHJ1Y3R1cmVJRCA8
IG1fY2FwYWNpdHkpOwogICAgIHJldHVybiB0YWJsZSgpW3N0cnVjdHVyZUlEXS5zdHJ1Y3R1cmU7
CiAjZWxzZQogICAgIHJldHVybiBzdHJ1Y3R1cmVJRDsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDk2ODcp
CisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBA
CisyMDE2LTEyLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
TWFya2VkQmxvY2s6Om1hcmtzQ29udmV5TGl2ZW5lc3NEdXJpbmdNYXJraW5nIHNob3VsZCB0YWtl
IGludG8gYWNjb3VudCBjb2xsZWN0aW9uIHNjb3BlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU3NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRvIGZpbmQgdGhpcyBidWcsIEkgbmVlZGVk
IHRvIHNlcmlvdXNseSBiZWVmIHVwIG91ciBsb2dnaW5nIGluZnJhc3RydWN0dXJlLgorICAgICAg
ICAKKyAgICAgICAgSXQncyBub3cgdGhlIGNhc2UgdGhhdDoKKyAgICAgICAgCisgICAgICAgICAg
ICBkYXRhTG9nKC4uLik7CisgICAgICAgIAorICAgICAgICB3aWxsIHByaW50IGl0cyBvdXRwdXQg
YXRvbWljYWxseS4gVGhpcyBoYXBwZW5zIHdpdGggc29tZSBjYXJlZnVsIG1hZ2ljOgorICAgICAg
ICAKKyAgICAgICAgLSBkYXRhRmlsZSgpIGlzIG5vdyBhIExvY2tlZFByaW50U3RyZWFtIHRoYXQg
bG9ja3MgYXJvdW5kIHByaW50KCkuCisgICAgICAgIAorICAgICAgICAtIFRoZSBsb2NrIGlzIGEg
cmVjdXJzaXZlIGxvY2sgdmlhIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyPD4sIHNvIGlmIHRoZSBkdW1w
IG1ldGhvZHMgZW5kCisgICAgICAgICAgdXAgY2FsbGluZyBiYWNrIGludG8gZGF0YUxvZygpIHRo
ZW4gaXQganVzdCB3b3Jrcy4gVGhpcyBpcyBpbXBvcnRhbnQ6IHNheSB0aGUgZHVtcCgpCisgICAg
ICAgICAgY2FsbHMgYSBnZXR0ZXIgdGhhdCBpdHNlbGYgZG9lcyBsb2dnaW5nLCBtYXliZSBiZWNh
dXNlIGl0J3MgZW5jb3VudGVyaW5nIGJhZG5lc3MgYW5kCisgICAgICAgICAgd2FudHMgdG8gcmVw
b3J0IGl0IGJlZm9yZSBjcmFzaGluZykuCisgICAgICAgIAorICAgICAgICAtIFRoZSBsb2NrIGlz
IGEgV29yZExvY2sgc28gdGhhdCBQYXJraW5nTG90IGFuZCBMb2NrIGNhbiBrZWVwIHVzaW5nIGRh
dGFMb2coKSBmb3IKKyAgICAgICAgICBkZWJ1Z2dpbmcuIFdlIHByb2JhYmx5IHdvbid0IG5lZWQg
dG8gZGVidWcgV29yZExvY2sgYW55dGltZSBzb29uIC0gdGhlIGFsZ29yaXRobSBpcworICAgICAg
ICAgIHNvIHNpbXBsZS4KKyAgICAgICAgCisgICAgICAgIC0gTG9ja2VkUHJpbnRTdHJlYW06OnBy
aW50KC4uLikgY2F1c2VzIHRoZSBwcmludCBjYWxsYmFja3Mgb2YgaXRzIGFyZ3VtZW50cyB0byBy
dW4gb24KKyAgICAgICAgICB0aGUgdW5kZXJseWluZyBQcmludFN0cmVhbSwgc28gdGhhdCB5b3Ug
ZG9uJ3QgbmVlZCB0byBkbyByZWN1cnNpdmUgbG9jayBhY3F1aXNpdGlvbgorICAgICAgICAgIG9u
IGVhY2ggaW5kaXZpZHVhbCBhcmd1bWVudCBhbmQgd2hhdGV2ZXIgcHJpbnRpbmcgaXQgZG9lcyBy
ZWN1cnNpdmVseS4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvRGF0YUxvZy5jcHA6
CisgICAgICAgIChXVEY6OmluaXRpYWxpemVMb2dGaWxlT25jZSk6CisgICAgICAgIChXVEY6Omlu
aXRpYWxpemVMb2dGaWxlKToKKyAgICAgICAgKFdURjo6ZGF0YUZpbGUpOgorICAgICAgICAqIHd0
Zi9EYXRhTG9nLmg6CisgICAgICAgICogd3RmL0xvY2tlZFByaW50U3RyZWFtLmNwcDogQWRkZWQu
CisgICAgICAgIChXVEY6OkxvY2tlZFByaW50U3RyZWFtOjpMb2NrZWRQcmludFN0cmVhbSk6Cisg
ICAgICAgIChXVEY6OkxvY2tlZFByaW50U3RyZWFtOjp+TG9ja2VkUHJpbnRTdHJlYW0pOgorICAg
ICAgICAoV1RGOjpMb2NrZWRQcmludFN0cmVhbTo6dnByaW50Zik6CisgICAgICAgIChXVEY6Okxv
Y2tlZFByaW50U3RyZWFtOjpmbHVzaCk6CisgICAgICAgIChXVEY6OkxvY2tlZFByaW50U3RyZWFt
OjpiZWdpbik6CisgICAgICAgIChXVEY6OkxvY2tlZFByaW50U3RyZWFtOjplbmQpOgorICAgICAg
ICAqIHd0Zi9Mb2NrZWRQcmludFN0cmVhbS5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvUHJpbnRT
dHJlYW0uY3BwOgorICAgICAgICAoV1RGOjpQcmludFN0cmVhbTo6cHJpbnRmVmFyaWFibGVGb3Jt
YXQpOgorICAgICAgICAoV1RGOjpQcmludFN0cmVhbTo6YmVnaW4pOgorICAgICAgICAoV1RGOjpQ
cmludFN0cmVhbTo6ZW5kKToKKyAgICAgICAgKiB3dGYvUHJpbnRTdHJlYW0uaDoKKyAgICAgICAg
KFdURjo6UHJpbnRTdHJlYW06OmF0b21pY2FsbHkpOgorICAgICAgICAoV1RGOjpQcmludFN0cmVh
bTo6cHJpbnQpOgorICAgICAgICAoV1RGOjpQcmludFN0cmVhbTo6cHJpbnRsbik6CisgICAgICAg
IChXVEY6OlByaW50U3RyZWFtOjpwcmludEltcGwpOgorICAgICAgICAoV1RGOjo+Ojp1bnBhY2sp
OgorICAgICAgICAoV1RGOjpGb3JtYXRJbXBsOjpGb3JtYXRJbXBsKToKKyAgICAgICAgKFdURjo6
Rm9ybWF0SW1wbDo6ZHVtcCk6CisgICAgICAgIChXVEY6OmZvcm1hdCk6CisgICAgICAgIChXVEY6
OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIHd0Zi9SZWN1cnNpdmVMb2NrQWRhcHRlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdURjo6UmVjdXJzaXZlTG9ja0FkYXB0ZXI6OlJlY3Vyc2l2ZUxvY2tB
ZGFwdGVyKToKKyAgICAgICAgKFdURjo6UmVjdXJzaXZlTG9ja0FkYXB0ZXI6OmxvY2spOgorICAg
ICAgICAoV1RGOjpSZWN1cnNpdmVMb2NrQWRhcHRlcjo6dW5sb2NrKToKKyAgICAgICAgKFdURjo6
UmVjdXJzaXZlTG9ja0FkYXB0ZXI6OnRyeUxvY2spOgorICAgICAgICAoV1RGOjpSZWN1cnNpdmVM
b2NrQWRhcHRlcjo6aXNMb2NrZWQpOgorICAgICAgICAqIHd0Zi9Xb3JkTG9jay5jcHA6CisgICAg
ICAgICogd3RmL1dvcmRMb2NrLmg6CisKIDIwMTYtMTItMTAgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIy
MDk2NTMsIHIyMDk2NTQsIHIyMDk2NjMsIGFuZApJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDk2ODcpCisrKyBTb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw4IEBA
CiAJCTBGNDNEOEYyMURCNUFEREMwMDEwOEZCNiAvKiBBdXRvbWF0aWNUaHJlYWQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDNEOEYwMURCNUFEREMw
MDEwOEZCNiAvKiBBdXRvbWF0aWNUaHJlYWQuaCAqLzsgfTsKIAkJMEY0NTcwNDMxQkU1QjU4RjAw
NjJBNjI5IC8qIERvbWluYXRvcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDU3MDQyMUJFNUI1OEYwMDYyQTYyOSAvKiBEb21pbmF0b3JzLmggKi87
IH07CiAJCTBGNDU3MDQ1MUJFODM0NDEwMDYyQTYyOSAvKiBCdWJibGVTb3J0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ1NzA0NDFCRTgzNDQxMDA2
MkE2MjkgLyogQnViYmxlU29ydC5oICovOyB9OworCQkwRjYwRjMyRjFERkNCRDFCMDA0MTZENkMg
LyogTG9ja2VkUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY2MEYzMkQxREZDQkQxQjAwNDE2RDZDIC8qIExvY2tlZFByaW50U3Ry
ZWFtLmNwcCAqLzsgfTsKKwkJMEY2MEYzMzAxREZDQkQxQjAwNDE2RDZDIC8qIExvY2tlZFByaW50
U3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjYwRjMyRTFERkNCRDFCMDA0MTZENkMgLyogTG9ja2VkUHJpbnRTdHJlYW0uaCAqLzsgfTsKIAkJ
MEY2NkIyOEExREM5N0JBQjAwNEExRDNGIC8qIENsb2NrVHlwZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2QjI4MDFEQzk3QkFCMDA0QTFEM0Yg
LyogQ2xvY2tUeXBlLmNwcCAqLzsgfTsKIAkJMEY2NkIyOEIxREM5N0JBQjAwNEExRDNGIC8qIENs
b2NrVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY2NkIyODExREM5N0JBQjAwNEExRDNGIC8qIENsb2NrVHlwZS5oICovOyB9OwogCQkwRjY2QjI4
QzFEQzk3QkFCMDA0QTFEM0YgLyogTW9ub3RvbmljVGltZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2QjI4MjFEQzk3QkFCMDA0QTFEM0YgLyog
TW9ub3RvbmljVGltZS5jcHAgKi87IH07CkBAIC02Myw2ICs2NSw3IEBACiAJCTBGREI2OThFMUI3
QzY0M0EwMDBDMTA3OCAvKiBDb25kaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGREI2OThEMUI3QzY0M0EwMDBDMTA3OCAvKiBDb25kaXRpb24u
aCAqLzsgfTsKIAkJMEZEREJGQTcxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFt
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRERC
RkE1MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5jcHAgKi87IH07CiAJCTBG
RERCRkE4MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEREJGQTYxNjY2REZBMzAwQzU1
RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFtLmggKi87IH07CisJCTBGREU4N0Y3MURGRDA3Q0MwMDY0
QzM5MCAvKiBSZWN1cnNpdmVMb2NrQWRhcHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZERTg3RjYxREZEMDdDQzAwNjRDMzkwIC8qIFJlY3Vyc2l2
ZUxvY2tBZGFwdGVyLmggKi87IH07CiAJCTBGRTE2NDZBMUI2RkZDOTYwMDQwMEU3QyAvKiBMb2Nr
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTE2
NDY4MUI2RkZDOTYwMDQwMEU3QyAvKiBMb2NrLmNwcCAqLzsgfTsKIAkJMEZFMTY0NkIxQjZGRkM5
NjAwNDAwRTdDIC8qIExvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRTE2NDY5MUI2RkZDOTYwMDQwMEU3QyAvKiBMb2NrLmggKi87IH07CiAJCTBG
RTQ0NzlDMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU0NDc5QTFCN0FBQTAzMDA5NDk4RUIgLyog
V29yZExvY2suY3BwICovOyB9OwpAQCAtMzg4LDYgKzM5MSw4IEBACiAJCTBGNDNEOEYwMURCNUFE
REMwMDEwOEZCNiAvKiBBdXRvbWF0aWNUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQXV0b21hdGljVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGNDU3MDQyMUJFNUI1OEYwMDYyQTYyOSAvKiBEb21pbmF0b3JzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERvbWluYXRvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY0NTcwNDQxQkU4MzQ0MTAwNjJBNjI5IC8qIEJ1YmJsZVNvcnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnViYmxlU29ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjYwRjMyRDFERkNCRDFCMDA0MTZENkMgLyogTG9ja2VkUHJpbnRTdHJlYW0u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9ja2VkUHJpbnRTdHJl
YW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjYwRjMyRTFERkNCRDFCMDA0
MTZENkMgLyogTG9ja2VkUHJpbnRTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTG9ja2VkUHJpbnRTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY2NkIyODAxREM5N0JBQjAwNEExRDNGIC8qIENsb2NrVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbG9ja1R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjY2QjI4MTFEQzk3QkFCMDA0QTFEM0YgLyogQ2xvY2tUeXBlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsb2NrVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjY2QjI4MjFEQzk3QkFCMDA0QTFEM0YgLyogTW9ub3RvbmljVGltZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb25vdG9uaWNUaW1lLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyMSw2ICs0MjYsNyBAQAogCQkwRkRC
Njk4RDFCN0M2NDNBMDAwQzEwNzggLyogQ29uZGl0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENvbmRpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkREQkZBNTE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyaW5nUHJpbnRTdHJlYW0uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkREQkZBNjE2NjZERkEzMDBDNTVGRUYgLyogU3Ry
aW5nUHJpbnRTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5n
UHJpbnRTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZERTg3RjYxREZE
MDdDQzAwNjRDMzkwIC8qIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlY3Vyc2l2ZUxvY2tBZGFwdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGRTE2NDY4MUI2RkZDOTYwMDQwMEU3QyAvKiBMb2NrLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkUxNjQ2OTFCNkZGQzk2MDA0MDBFN0MgLyogTG9jay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGRTQ0NzlBMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JkTG9jay5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC04NTgsNyArODY0LDYgQEAKIAkJQTg3NkRCRDYxNTE4MTZFNTAwREFE
Qjk1IC8qIHd0ZiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0J
CQkJQUQ3QzQzNEExREQyQTRBNzAwMjY4ODhCIC8qIEV4cGVjdGVkLmggKi8sCiAJCQkJMkNERUQw
RjAxODExNUMzRjAwNERCQTcwIC8qIGNmICovLAogCQkJCUU0QTBBRDNCMUE5NjI1MTkwMDUzNkRG
NiAvKiBjb2NvYSAqLywKIAkJCQlBOEE0NzI4MTE1MUE4MjVBMDA0MTIzRkYgLyogZHRvYSAqLywK
QEAgLTkyNiw2ICs5MzEsNyBAQAogCQkJCUE4QTQ3Mjk3MTUxQTgyNUEwMDQxMjNGRiAvKiBkdG9h
LmNwcCAqLywKIAkJCQlBOEE0NzI5ODE1MUE4MjVBMDA0MTIzRkYgLyogZHRvYS5oICovLAogCQkJ
CTFBRUE4OEUxMUQ2QkJDRjQwMEU1QUQ2NCAvKiBFbnVtVHJhaXRzLmggKi8sCisJCQkJQUQ3QzQz
NEExREQyQTRBNzAwMjY4ODhCIC8qIEV4cGVjdGVkLmggKi8sCiAJCQkJQThBNDcyOUYxNTFBODI1
QTAwNDEyM0ZGIC8qIEV4cG9ydE1hY3Jvcy5oICovLAogCQkJCTBGN0M1RkI1MUQ4ODVDRjIwMDQ0
RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCAqLywKIAkJCQkwRkQ4MUFDNDE1NEZCMjJFMDA5ODNF
NzIgLyogRmFzdEJpdFZlY3Rvci5oICovLApAQCAtOTY2LDYgKzk3Miw4IEBACiAJCQkJMEZFMTY0
NjgxQjZGRkM5NjAwNDAwRTdDIC8qIExvY2suY3BwICovLAogCQkJCTBGRTE2NDY5MUI2RkZDOTYw
MDQwMEU3QyAvKiBMb2NrLmggKi8sCiAJCQkJMEYwRkNEREQxREQxNjdGOTAwQ0NBQjUzIC8qIExv
Y2tBbGdvcml0aG0uaCAqLywKKwkJCQkwRjYwRjMyRDFERkNCRDFCMDA0MTZENkMgLyogTG9ja2Vk
UHJpbnRTdHJlYW0uY3BwICovLAorCQkJCTBGNjBGMzJFMURGQ0JEMUIwMDQxNkQ2QyAvKiBMb2Nr
ZWRQcmludFN0cmVhbS5oICovLAogCQkJCUE4QTQ3MkMzMTUxQTgyNUEwMDQxMjNGRiAvKiBMb2Nr
ZXIuaCAqLywKIAkJCQk1MTNFMTcwQTFDRDdENUJGMDBFMzY1MEIgLyogTG9nZ2luZ0FjY3VtdWxh
dG9yLmggKi8sCiAJCQkJQThBNDcyQzYxNTFBODI1QTAwNDEyM0ZGIC8qIE1haW5UaHJlYWQuY3Bw
ICovLApAQCAtMTAyNSw2ICsxMDMzLDcgQEAKIAkJCQlBOEE0NzJGRDE1MUE4MjVCMDA0MTIzRkYg
LyogUmFuZG9tTnVtYmVyU2VlZC5oICovLAogCQkJCTBGNzI1Q0FCMUM1MDQ2MTYwMEFEOTQzQSAv
KiBSYW5nZVNldC5oICovLAogCQkJCTBGODcxMDU5MTY2NDNGMTkwMDkwQjBBRCAvKiBSYXdQb2lu
dGVyLmggKi8sCisJCQkJMEZERTg3RjYxREZEMDdDQzAwNjRDMzkwIC8qIFJlY3Vyc2l2ZUxvY2tB
ZGFwdGVyLmggKi8sCiAJCQkJQThBNDcyRkUxNTFBODI1QjAwNDEyM0ZGIC8qIFJlZEJsYWNrVHJl
ZS5oICovLAogCQkJCTI2Mjk5QjZEMTdBOUU1QjgwMEFERUJFNSAvKiBSZWYuaCAqLywKIAkJCQlB
OEE0NzJGRjE1MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRlZC5oICovLApAQCAtMTM4Niw2ICsx
Mzk1LDcgQEAKIAkJCQk3Q0REN0ZGQTE4NkQyQTU0MDA3NDMzQ0QgLyogSXRlcmF0b3JSYW5nZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0M0Q4RjIxREI1QUREQzAwMTA4RkI2IC8qIEF1dG9tYXRp
Y1RocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNBQzkxQTgxODk0MkZDNDAwMjQ0OTM5IC8q
IExDaGFyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjYwRjMzMDFERkNCRDFCMDA0MTZENkMgLyog
TG9ja2VkUHJpbnRTdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTUzOUVCMDYzMUQ1NTI4NDIw
MEM4MkVGNyAvKiBMRUJEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzBEQTA4NTE3OTlG
MDREMDA1MjlBOUIgLyogTGlzdER1bXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjZCMjkzMURD
OTdCQUIwMDRBMUQzRiAvKiBXYWxsVGltZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDU5LDYgKzE0
NjksNyBAQAogCQkJCTBGRUIzRENGMUJCNUQ2ODQwMDlEN0FBRCAvKiBTaGFyZWRUYXNrLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBOEE0NzQyMzE1MUE4MjVCMDA0MTIzRkYgLyogU2ltcGxlU3RhdHMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDI0MTUxQTgyNUIwMDQxMjNGRiAvKiBTaW5nbHlM
aW5rZWRMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkRFODdGNzFERkQwN0NDMDA2NEMzOTAg
LyogUmVjdXJzaXZlTG9ja0FkYXB0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NDg3NDUzMTdB
MEJEQUUwMEZBMDRDQiAvKiBTaXhDaGFyYWN0ZXJIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
OUVDNzA2MTFDOTlGOUJDMDAzQTNBRTIgLyogU21hbGxQdHJTZXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4QTQ3NDI2MTUxQTgyNUIwMDQxMjNGRiAvKiBTcGVjdHJ1bS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xNjU0LDYgKzE2NjUsNyBAQAogCQkJCUE4QTQ3M0IwMTUxQTgyNUIwMDQxMjNGRiAvKiBk
b3VibGUtY29udmVyc2lvbi5jYyBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0JBMTUxQTgyNUIw
MDQxMjNGRiAvKiBkdG9hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0IzMTUxQTgyNUIw
MDQxMjNGRiAvKiBmYXN0LWR0b2EuY2MgaW4gU291cmNlcyAqLywKKwkJCQkwRjYwRjMyRjFERkNC
RDFCMDA0MTZENkMgLyogTG9ja2VkUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QThBNDczQzMxNTFBODI1QjAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY5RDMzNjAxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBOEE0NzNCNTE1MUE4MjVCMDA0MTIzRkYgLyogZml4ZWQtZHRvYS5j
YyBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwOTY4
NykKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01
Nyw2ICs1Nyw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIExpc3RIYXNoU2V0LmgKICAgICBMb2Nr
LmgKICAgICBMb2NrQWxnb3JpdGhtLmgKKyAgICBMb2NrZWRQcmludFN0cmVhbS5oCiAgICAgTG9j
a2VyLmgKICAgICBNRDUuaAogICAgIE1haW5UaHJlYWQuaApAQCAtOTIsNiArOTMsNyBAQCBzZXQo
V1RGX0hFQURFUlMKICAgICBSYW5kb21OdW1iZXJTZWVkLmgKICAgICBSYW5nZVNldC5oCiAgICAg
UmF3UG9pbnRlci5oCisgICAgUmVjdXJzaXZlTG9ja0FkYXB0ZXIuaAogICAgIFJlZEJsYWNrVHJl
ZS5oCiAgICAgUmVmLmgKICAgICBSZWZDb3VudGVkLmgKQEAgLTE5OCw2ICsyMDAsNyBAQCBzZXQo
V1RGX1NPVVJDRVMKICAgICBHcmVnb3JpYW5EYXRlVGltZS5jcHAKICAgICBIYXNoVGFibGUuY3Bw
CiAgICAgTG9jay5jcHAKKyAgICBMb2NrZWRQcmludFN0cmVhbS5jcHAKICAgICBNRDUuY3BwCiAg
ICAgTWFpblRocmVhZC5jcHAKICAgICBNZWRpYVRpbWUuY3BwCkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9EYXRhTG9nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmNwcAko
cmV2aXNpb24gMjA5Njg3KQorKysgU291cmNlL1dURi93dGYvRGF0YUxvZy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDcgKzI4LDEwIEBACiAjaW5jbHVkZSA8c3RkYXJnLmg+CiAjaW5jbHVkZSA8
c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVQcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0
Zi9Mb2NrZWRQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNs
dWRlIDxtdXRleD4KKyNpbmNsdWRlIDx0aHJlYWQ+CiAKICNpZiBPUyhVTklYKSB8fCBPUyhEQVJX
SU4pCiAjaW5jbHVkZSA8dW5pc3RkLmg+CkBAIC00NywxNiArNTAsMTQgQEAKIAogbmFtZXNwYWNl
IFdURiB7CiAKLSNpZiBVU0UoUFRIUkVBRFMpCi1zdGF0aWMgcHRocmVhZF9vbmNlX3QgaW5pdGlh
bGl6ZUxvZ0ZpbGVPbmNlS2V5ID0gUFRIUkVBRF9PTkNFX0lOSVQ7Ci0jZW5kaWYKLQotc3RhdGlj
IEZpbGVQcmludFN0cmVhbSogZmlsZTsKK3N0YXRpYyBQcmludFN0cmVhbSogc19maWxlOwogCi1z
dGF0aWMgdWludDY0X3QgZmlsZURhdGFbKHNpemVvZihGaWxlUHJpbnRTdHJlYW0pICsgNykgLyA4
XTsKK3N0YXRpYyB1aW50NjRfdCBzX2ZpbGVEYXRhWyhzaXplb2YoRmlsZVByaW50U3RyZWFtKSAr
IDcpIC8gOF07CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVMb2dGaWxlT25jZSgpCiB7CisgICAg
RmlsZVByaW50U3RyZWFtKiBmaWxlID0gbnVsbHB0cjsKKyAgICAKICNpZiBEQVRBX0xPR19UT19G
SUxFCiAgICAgY29uc3QgbG9uZyBtYXhQYXRoTGVuZ3RoID0gMTAyNDsKIApAQCAtMTE3LDI5ICsx
MTgsMzggQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUxvZ0ZpbGVPbmNlKCkKICAgICAgICAgICAg
IFdURkxvZ0Fsd2F5cygiV2FybmluZzogQ291bGQgbm90IG9wZW4gRGF0YUxvZyBmaWxlICVzIGZv
ciB3cml0aW5nLlxuIiwgYWN0dWFsRmlsZW5hbWUpOwogICAgIH0KICNlbmRpZiAvLyBEQVRBX0xP
R19UT19GSUxFCisgICAgCisgICAgYm9vbCB3cmFwV2l0aExvY2tlZCA9IHRydWU7CisgICAgCiAg
ICAgaWYgKCFmaWxlKSB7CiAgICAgICAgIC8vIFVzZSBwbGFjZW1lbnQgbmV3OyB0aGlzIG1ha2Vz
IGl0IGVhc2llciB0byB1c2UgZGF0YUxvZygpIHRvIGRlYnVnCiAgICAgICAgIC8vIGZhc3RNYWxs
b2MuCi0gICAgICAgIGZpbGUgPSBuZXcgKGZpbGVEYXRhKSBGaWxlUHJpbnRTdHJlYW0oc3RkZXJy
LCBGaWxlUHJpbnRTdHJlYW06OkJvcnJvdyk7CisgICAgICAgIGZpbGUgPSBuZXcgKHNfZmlsZURh
dGEpIEZpbGVQcmludFN0cmVhbShzdGRlcnIsIEZpbGVQcmludFN0cmVhbTo6Qm9ycm93KTsKKyAg
ICAgICAgd3JhcFdpdGhMb2NrZWQgPSBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgc2V0dmJ1Zihm
aWxlLT5maWxlKCksIDAsIF9JT05CRiwgMCk7IC8vIFByZWZlciB1bmJ1ZmZlcmVkIG91dHB1dCwg
c28gdGhhdCB3ZSBnZXQgYSBmdWxsIGxvZyB1cG9uIGNyYXNoIG9yIGRlYWRsb2NrLgorICAgIAor
ICAgIGlmICh3cmFwV2l0aExvY2tlZCkKKyAgICAgICAgc19maWxlID0gbmV3IExvY2tlZFByaW50
U3RyZWFtKHN0ZDo6dW5pcXVlX3B0cjxGaWxlUHJpbnRTdHJlYW0+KGZpbGUpKTsKKyAgICBlbHNl
CisgICAgICAgIHNfZmlsZSA9IGZpbGU7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVMb2dG
aWxlKCkKIHsKLSNpZiBVU0UoUFRIUkVBRFMpCi0gICAgcHRocmVhZF9vbmNlKCZpbml0aWFsaXpl
TG9nRmlsZU9uY2VLZXksIGluaXRpYWxpemVMb2dGaWxlT25jZSk7Ci0jZWxzZQotICAgIGlmICgh
ZmlsZSkKLSAgICAgICAgaW5pdGlhbGl6ZUxvZ0ZpbGVPbmNlKCk7Ci0jZW5kaWYKKyAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKKyAgICBzdGQ6OmNhbGxfb25jZSgKKyAgICAgICAgb25j
ZSwKKyAgICAgICAgW10geworICAgICAgICAgICAgaW5pdGlhbGl6ZUxvZ0ZpbGVPbmNlKCk7Cisg
ICAgICAgIH0pOwogfQogCi1GaWxlUHJpbnRTdHJlYW0mIGRhdGFGaWxlKCkKK1ByaW50U3RyZWFt
JiBkYXRhRmlsZSgpCiB7CiAgICAgaW5pdGlhbGl6ZUxvZ0ZpbGUoKTsKLSAgICByZXR1cm4gKmZp
bGU7CisgICAgcmV0dXJuICpzX2ZpbGU7CiB9CiAKIHZvaWQgZGF0YUxvZ0ZWKGNvbnN0IGNoYXIq
IGZvcm1hdCwgdmFfbGlzdCBhcmdMaXN0KQpJbmRleDogU291cmNlL1dURi93dGYvRGF0YUxvZy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0RhdGFMb2cuaAkocmV2aXNpb24gMjA5Njg3
KQorKysgU291cmNlL1dURi93dGYvRGF0YUxvZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMiAr
MjgsMTIgQEAKIAogI2luY2x1ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5j
bHVkZSA8d3RmL0ZpbGVQcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5o
PgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKLVdU
Rl9FWFBPUlRfUFJJVkFURSBGaWxlUHJpbnRTdHJlYW0mIGRhdGFGaWxlKCk7CitXVEZfRVhQT1JU
X1BSSVZBVEUgUHJpbnRTdHJlYW0mIGRhdGFGaWxlKCk7CiAKIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGRhdGFMb2dGVihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QpIFdURl9BVFRSSUJVVEVf
UFJJTlRGKDEsIDApOwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGF0YUxvZ0YoY29uc3QgY2hh
ciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDEsIDIpOwpJbmRleDogU291cmNl
L1dURi93dGYvTG9ja2VkUHJpbnRTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL0xvY2tlZFByaW50U3RyZWFtLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV1RGL3d0
Zi9Mb2NrZWRQcmludFN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTG9ja2VkUHJpbnRTdHJlYW0uaCIKKworbmFtZXNwYWNlIFdU
RiB7CisKK0xvY2tlZFByaW50U3RyZWFtOjpMb2NrZWRQcmludFN0cmVhbShzdGQ6OnVuaXF1ZV9w
dHI8UHJpbnRTdHJlYW0+IHRhcmdldCkKKyAgICA6IG1fdGFyZ2V0KFdURk1vdmUodGFyZ2V0KSkK
K3sKK30KKworTG9ja2VkUHJpbnRTdHJlYW06On5Mb2NrZWRQcmludFN0cmVhbSgpCit7Cit9CisK
K3ZvaWQgTG9ja2VkUHJpbnRTdHJlYW06OnZwcmludGYoY29uc3QgY2hhciogZm9ybWF0LCB2YV9s
aXN0IGFyZ3MpCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIG1f
dGFyZ2V0LT52cHJpbnRmKGZvcm1hdCwgYXJncyk7Cit9CisKK3ZvaWQgTG9ja2VkUHJpbnRTdHJl
YW06OmZsdXNoKCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAg
bV90YXJnZXQtPmZsdXNoKCk7Cit9CisKK1ByaW50U3RyZWFtJiBMb2NrZWRQcmludFN0cmVhbTo6
YmVnaW4oKQoreworICAgIG1fbG9jay5sb2NrKCk7CisgICAgcmV0dXJuICptX3RhcmdldDsKK30K
Kwordm9pZCBMb2NrZWRQcmludFN0cmVhbTo6ZW5kKCkKK3sKKyAgICBtX2xvY2sudW5sb2NrKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Mb2NrZWRQ
cmludFN0cmVhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0xvY2tlZFByaW50U3Ry
ZWFtLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dURi93dGYvTG9ja2VkUHJpbnRTdHJlYW0u
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTG9ja2VkUHJpbnRTdHJlYW1faAorI2Rl
ZmluZSBMb2NrZWRQcmludFN0cmVhbV9oCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4K
KyNpbmNsdWRlIDx3dGYvUmVjdXJzaXZlTG9ja0FkYXB0ZXIuaD4KKyNpbmNsdWRlIDx3dGYvV29y
ZExvY2suaD4KKworbmFtZXNwYWNlIFdURiB7CisKKy8vIE1ha2VzIGV2ZXJ5IGNhbGwgdG8gcHJp
bnQoKSBhdG9taWMuCitjbGFzcyBMb2NrZWRQcmludFN0cmVhbSA6IHB1YmxpYyBQcmludFN0cmVh
bSB7CitwdWJsaWM6CisgICAgTG9ja2VkUHJpbnRTdHJlYW0oc3RkOjp1bmlxdWVfcHRyPFByaW50
U3RyZWFtPiB0YXJnZXQpOworICAgIHZpcnR1YWwgfkxvY2tlZFByaW50U3RyZWFtKCk7CisgICAg
CisgICAgdm9pZCB2cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCkgb3ZlcnJpZGUg
V1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMCk7CisgICAgdm9pZCBmbHVzaCgpIG92ZXJyaWRlOwor
Citwcm90ZWN0ZWQ6CisgICAgUHJpbnRTdHJlYW0mIGJlZ2luKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBlbmQoKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICAvLyBUaGlzIG5lZWRzIHRvIGJlIGEg
cmVjdXJzaXZlIGxvY2sgYmVjYXVzZSBhIHByaW50SW50ZXJuYWwgb3IgZHVtcCBtZXRob2QgY291
bGQgYXNzZXJ0LAorICAgIC8vIGFuZCB0aGF0IGFzc2VydCBtaWdodCB3YW50IHRvIGxvZy4gQmV0
dGVyIHRvIGxldCBpdC4gVGhpcyBuZWVkcyB0byBiZSBhIFdvcmRMb2NrIHNvIHRoYXQKKyAgICAv
LyBMb2NrZWRQcmludFN0cmVhbSAoaS5lLiBjYXRhTG9nKSBjYW4gYmUgdXNlZCB0byBkZWJ1ZyBQ
YXJraW5nTG90IGFuZCBMb2NrLgorICAgIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyPFdvcmRMb2NrPiBt
X2xvY2s7CisgICAgc3RkOjp1bmlxdWVfcHRyPFByaW50U3RyZWFtPiBtX3RhcmdldDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OkxvY2tlZFByaW50U3RyZWFtOworCisj
ZW5kaWYgLy8gTG9ja2VkUHJpbnRTdHJlYW1faApJbmRleDogU291cmNlL1dURi93dGYvUHJpbnRT
dHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFtLmNwcAko
cmV2aXNpb24gMjA5Njg3KQorKysgU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCwxMCArNDQsMzAgQEAgdm9pZCBQcmludFN0cmVhbTo6cHJpbnRmKGNv
bnN0IGNoYXIqIGZvcgogICAgIHZhX2VuZChhcmdMaXN0KTsKIH0KIAordm9pZCBQcmludFN0cmVh
bTo6cHJpbnRmVmFyaWFibGVGb3JtYXQoY29uc3QgY2hhciogZm9ybWF0LCAuLi4pCit7CisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9y
ZWQgIi1XZm9ybWF0LW5vbmxpdGVyYWwiCisgICAgdmFfbGlzdCBhcmdMaXN0OworICAgIHZhX3N0
YXJ0KGFyZ0xpc3QsIGZvcm1hdCk7CisgICAgdnByaW50Zihmb3JtYXQsIGFyZ0xpc3QpOworICAg
IHZhX2VuZChhcmdMaXN0KTsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKK30KKwogdm9p
ZCBQcmludFN0cmVhbTo6Zmx1c2goKQogewogfQogCitQcmludFN0cmVhbSYgUHJpbnRTdHJlYW06
OmJlZ2luKCkKK3sKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3ZvaWQgUHJpbnRTdHJlYW06OmVu
ZCgpCit7Cit9CisKIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBj
aGFyKiBzdHJpbmcpCiB7CiAgICAgb3V0LnByaW50ZigiJXMiLCBzdHJpbmcpOwpJbmRleDogU291
cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Q
cmludFN0cmVhbS5oCShyZXZpc2lvbiAyMDk2ODcpCisrKyBTb3VyY2UvV1RGL3d0Zi9QcmludFN0
cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8c3RkYXJn
Lmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUmF3UG9pbnRl
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CkBAIC01MCwzMyArNTEsNDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflByaW50U3RyZWFt
KCk7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcmludGYoY29uc3QgY2hhciogZm9y
bWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDIsIDMpOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIHByaW50ZlZhcmlhYmxlRm9ybWF0KGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKTsK
ICAgICB2aXJ0dWFsIHZvaWQgdnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QpIFdU
Rl9BVFRSSUJVVEVfUFJJTlRGKDIsIDApID0gMDsKIAogICAgIC8vIFR5cGljYWxseSBhIG5vLW9w
IGZvciBtYW55IHN1YmNsYXNzZXMgb2YgUHJpbnRTdHJlYW0sIHRoaXMgaXMgYSBoaW50IHRoYXQK
ICAgICAvLyB0aGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIGZsdXNoIGl0cyBidWZmZXJzIGlmIGl0
IGhhZCBub3QgZG9uZSBzbyBhbHJlYWR5LgogICAgIHZpcnR1YWwgdm9pZCBmbHVzaCgpOwogICAg
IAotICAgIHZvaWQgcHJpbnQoKSB7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAg
dm9pZCBwcmludChjb25zdCBUJiB2YWx1ZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgor
ICAgIHZvaWQgYXRvbWljYWxseShjb25zdCBGdW5jJiBmdW5jKQogICAgIHsKLSAgICAgICAgcHJp
bnRJbnRlcm5hbCgqdGhpcywgdmFsdWUpOworICAgICAgICBmdW5jKGJlZ2luKCkpOworICAgICAg
ICBlbmQoKTsKICAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBU
eXBlcz4KLSAgICB2b2lkIHByaW50KGNvbnN0IFQmIHZhbHVlLCBjb25zdCBUeXBlcyYuLi4gcmVt
YWluaW5nVmFsdWVzKQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFR5cGVzPgorICAg
IHZvaWQgcHJpbnQoY29uc3QgVHlwZXMmLi4uIHZhbHVlcykKICAgICB7Ci0gICAgICAgIHByaW50
SW50ZXJuYWwoKnRoaXMsIHZhbHVlKTsKLSAgICAgICAgcHJpbnQocmVtYWluaW5nVmFsdWVzLi4u
KTsKKyAgICAgICAgYXRvbWljYWxseSgKKyAgICAgICAgICAgIFsmXSAoUHJpbnRTdHJlYW0mIG91
dCkgeworICAgICAgICAgICAgICAgIG91dC5wcmludEltcGwodmFsdWVzLi4uKTsKKyAgICAgICAg
ICAgIH0pOwogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUeXBlcz4KICAg
ICB2b2lkIHByaW50bG4oY29uc3QgVHlwZXMmLi4uIHZhbHVlcykKICAgICB7Ci0gICAgICAgIHBy
aW50KHZhbHVlcy4uLik7Ci0gICAgICAgIHByaW50KCJcbiIpOworICAgICAgICBwcmludCh2YWx1
ZXMuLi4sICJcbiIpOwogICAgIH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgcHJpbnRJbXBsKCkg
eyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBUeXBlcz4KKyAgICB2
b2lkIHByaW50SW1wbChjb25zdCBUJiB2YWx1ZSwgY29uc3QgVHlwZXMmLi4uIHJlbWFpbmluZ1Zh
bHVlcykKKyAgICB7CisgICAgICAgIHByaW50SW50ZXJuYWwoKnRoaXMsIHZhbHVlKTsKKyAgICAg
ICAgcHJpbnRJbXBsKHJlbWFpbmluZ1ZhbHVlcy4uLik7CisgICAgfQorICAgIAorICAgIHZpcnR1
YWwgUHJpbnRTdHJlYW0mIGJlZ2luKCk7CisgICAgdmlydHVhbCB2b2lkIGVuZCgpOwogfTsKIAog
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0
IGNoYXIqKTsKQEAgLTI2NiwxMSArMjgxLDY2IEBAIFZhbHVlSWdub3JpbmdDb250ZXh0PFQsIFU+
IGlnbm9yaW5nQ29udGUKICAgICByZXR1cm4gVmFsdWVJZ25vcmluZ0NvbnRleHQ8VCwgVT4odmFs
dWUpOwogfQogCit0ZW1wbGF0ZTx1bnNpZ25lZCBpbmRleCwgdHlwZW5hbWUuLi4gVHlwZXM+Citz
dHJ1Y3QgRm9ybWF0SW1wbFVucGFja2VyIHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdz
PgorICAgIHN0YXRpYyB2b2lkIHVucGFjayhQcmludFN0cmVhbSYgb3V0LCBjb25zdCBzdGQ6OnR1
cGxlPFR5cGVzLi4uPiYgdHVwbGUsIGNvbnN0IEFyZ3MmLi4uIHZhbHVlcyk7Cit9OworICAgIAor
dGVtcGxhdGU8dHlwZW5hbWUuLi4gVHlwZXM+CitzdHJ1Y3QgRm9ybWF0SW1wbFVucGFja2VyPDAs
IFR5cGVzLi4uPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMg
dm9pZCB1bnBhY2soUHJpbnRTdHJlYW0mIG91dCwgY29uc3Qgc3RkOjp0dXBsZTxUeXBlcy4uLj4m
IHR1cGxlLCBjb25zdCBBcmdzJi4uLiB2YWx1ZXMpCisgICAgeworICAgICAgICBvdXQucHJpbnRm
VmFyaWFibGVGb3JtYXQoc3RkOjpnZXQ8MD4odHVwbGUpLCB2YWx1ZXMuLi4pOworICAgIH0KK307
CisgICAgCit0ZW1wbGF0ZTx1bnNpZ25lZCBpbmRleCwgdHlwZW5hbWUuLi4gVHlwZXM+Cit0ZW1w
bGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgordm9pZCBGb3JtYXRJbXBsVW5wYWNrZXI8aW5kZXgsIFR5
cGVzLi4uPjo6dW5wYWNrKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IHN0ZDo6dHVwbGU8VHlwZXMu
Li4+JiB0dXBsZSwgY29uc3QgQXJncyYuLi4gdmFsdWVzKQoreworICAgIEZvcm1hdEltcGxVbnBh
Y2tlcjxpbmRleCAtIDEsIFR5cGVzLi4uPjo6dW5wYWNrKG91dCwgdHVwbGUsIHN0ZDo6Z2V0PGlu
ZGV4Pih0dXBsZSksIHZhbHVlcy4uLik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIFR5cGVz
PgorY2xhc3MgRm9ybWF0SW1wbCB7CitwdWJsaWM6CisgICAgRm9ybWF0SW1wbChUeXBlcy4uLiB2
YWx1ZXMpCisgICAgICAgIDogbV92YWx1ZXModmFsdWVzLi4uKQorICAgIHsKKyAgICB9CisgICAg
CisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CisgICAgeworICAgICAgICBG
b3JtYXRJbXBsVW5wYWNrZXI8c2l6ZW9mLi4uKFR5cGVzKSAtIDEsIFR5cGVzLi4uPjo6dW5wYWNr
KG91dCwgbV92YWx1ZXMpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGQ6OnR1cGxlPFR5cGVz
Li4uPiBtX3ZhbHVlczsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIFR5cGVzPgorRm9ybWF0
SW1wbDxUeXBlcy4uLj4gZm9ybWF0KFR5cGVzLi4uIHZhbHVlcykKK3sKKyAgICByZXR1cm4gRm9y
bWF0SW1wbDxUeXBlcy4uLj4odmFsdWVzLi4uKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFQ+JiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUpCisgICAgICAgIG91dC5wcmludCgqdmFsdWUp
OworICAgIGVsc2UKKyAgICAgICAgb3V0LnByaW50KCI8bnVsbG9wdD4iKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6Q2hhcmFjdGVyRHVtcDsKIHVzaW5nIFdURjo6UG9p
bnRlckR1bXA7CiB1c2luZyBXVEY6OlByaW50U3RyZWFtOwordXNpbmcgV1RGOjpmb3JtYXQ7CiB1
c2luZyBXVEY6Omlnbm9yaW5nQ29udGV4dDsKIHVzaW5nIFdURjo6aW5Db250ZXh0OwogdXNpbmcg
V1RGOjpwb2ludGVyRHVtcDsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1JlY3Vyc2l2ZUxvY2tBZGFw
dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUmVjdXJzaXZlTG9ja0FkYXB0ZXIu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV1RGL3d0Zi9SZWN1cnNpdmVMb2NrQWRhcHRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgV1RGX1JlY3Vyc2l2ZUxvY2tBZGFwdGVy
X2gKKyNkZWZpbmUgV1RGX1JlY3Vyc2l2ZUxvY2tBZGFwdGVyX2gKKworI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIExvY2tU
eXBlPgorY2xhc3MgUmVjdXJzaXZlTG9ja0FkYXB0ZXIgeworcHVibGljOgorICAgIFJlY3Vyc2l2
ZUxvY2tBZGFwdGVyKCkKKyAgICB7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9jaygpCisgICAg
eworICAgICAgICBUaHJlYWRJZGVudGlmaWVyIG1lID0gY3VycmVudFRocmVhZCgpOworICAgICAg
ICBpZiAobWUgPT0gbV9vd25lcikgeworICAgICAgICAgICAgbV9yZWN1cnNpb25Db3VudCsrOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtX2xvY2su
bG9jaygpOworICAgICAgICBtX293bmVyID0gbWU7CisgICAgICAgIG1fcmVjdXJzaW9uQ291bnQg
PSAxOworICAgIH0KKyAgICAKKyAgICB2b2lkIHVubG9jaygpCisgICAgeworICAgICAgICBpZiAo
LS1tX3JlY3Vyc2lvbkNvdW50KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX293bmVy
ID0gMDsKKyAgICAgICAgbV9sb2NrLnVubG9jaygpOworICAgIH0KKyAgICAKKyAgICBib29sIHRy
eUxvY2soKQorICAgIHsKKyAgICAgICAgVGhyZWFkSWRlbnRpZmllciBtZSA9IGN1cnJlbnRUaHJl
YWQoKTsKKyAgICAgICAgaWYgKG1lID09IG1fb3duZXIpIHsKKyAgICAgICAgICAgIG1fcmVjdXJz
aW9uQ291bnQrKzsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBpZiAoIW1fbG9jay50cnlMb2NrKCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIAorICAgICAgICBtX293bmVyID0gbWU7CisgICAgICAgIG1fcmVjdXJzaW9u
Q291bnQgPSAxOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBp
c0xvY2tlZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9sb2NrLmlzTG9ja2VkKCk7
CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBUaHJlYWRJZGVudGlmaWVyIG1fb3duZXIgeyAw
IH07CisgICAgdW5zaWduZWQgbV9yZWN1cnNpb25Db3VudCB7IDAgfTsKKyAgICBMb2NrVHlwZSBt
X2xvY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFdURl9SZWN1cnNp
dmVMb2NrQWRhcHRlcl9oCisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1dvcmRMb2NrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Xb3JkTG9jay5jcHAJKHJldmlzaW9uIDIwOTY4NykK
KysrIFNvdXJjZS9XVEYvd3RmL1dvcmRMb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCAr
MjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldvcmRMb2NrLmgiCiAKLSNp
bmNsdWRlICJEYXRhTG9nLmgiCi0jaW5jbHVkZSAiU3RyaW5nUHJpbnRTdHJlYW0uaCIKICNpbmNs
dWRlICJUaHJlYWRTcGVjaWZpYy5oIgogI2luY2x1ZGUgIlRocmVhZGluZ1ByaW1pdGl2ZXMuaCIK
ICNpbmNsdWRlIDxjb25kaXRpb25fdmFyaWFibGU+CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Xb3Jk
TG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dvcmRMb2NrLmgJKHJldmlzaW9u
IDIwOTY4NykKKysrIFNvdXJjZS9XVEYvd3RmL1dvcmRMb2NrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDYgKzQyLDEwIEBAIG5hbWVzcGFjZSBXVEYgewogLy8gTG9jayBpbnN0ZWFkLiBXb3JkTG9j
ayBzaXRzIGxvd2VyIGluIHRoZSBzdGFjayBhbmQgaXMgdXNlZCB0byBpbXBsZW1lbnQgTG9jaywg
c28gTG9jayBpcyB0aGUgbWFpbgogLy8gY2xpZW50IG9mIFdvcmRMb2NrLgogCisvLyBOT1RFOiBU
aGlzIGlzIGFsc28gYSBncmVhdCBsb2NrIHRvIHVzZSBpZiB5b3UgYXJlIHZlcnkgbG93IGluIHRo
ZSBzdGFjay4gRm9yIGV4YW1wbGUsCisvLyBQcmludFN0cmVhbSB1c2VzIHRoaXMgc28gdGhhdCBQ
YXJraW5nTG90IGFuZCBMb2NrIGNhbiB1c2UgUHJpbnRTdHJlYW0uIFRoaXMgbWVhbnMgdGhhdCBp
ZiB5b3UKKy8vIHRyeSB0byB1c2UgZGF0YUxvZyB0byBkZWJ1ZyB0aGlzIGNvZGUsIHlvdSB3aWxs
IGhhdmUgYSBiYWQgdGltZS4KKwogc3RydWN0IFdvcmRMb2NrQmFzZSB7CiAgICAgdm9pZCBsb2Nr
KCkKICAgICB7Cg==
</data>
<flag name="review"
          id="319251"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>