<?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>105293</bug_id>
          
          <creation_ts>2012-12-18 07:34:46 -0800</creation_ts>
          <short_desc>[GStreamer] Port WebAudio backend to 1.0 APIs</short_desc>
          <delta_ts>2014-12-10 09:19:11 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>106182</dependson>
          <blocked>78883</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Philippe Normand">pnormand</assigned_to>
          <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>levin+threading</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>s.choi</cc>
    
    <cc>slomo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>793627</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-12-18 07:34:46 -0800</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793680</commentid>
    <comment_count>1</comment_count>
      <attachid>179948</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-12-18 08:32:54 -0800</bug_when>
    <thetext>Created attachment 179948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793682</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-18 08:34:18 -0800</bug_when>
    <thetext>Attachment 179948 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:99:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:100:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:101:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:101:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:157:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:111:  Missing space before ( in for(  [whitespace/parens] [5]
Source/WebCore/platform/audio/FFTFrame.h:57:  &quot;gst/fft/gstfftf32.h&quot; already included at Source/WebCore/platform/audio/FFTFrame.h:54  [build/include] [4]
Total errors found: 7 in 6 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>793695</commentid>
    <comment_count>3</comment_count>
      <attachid>179953</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-12-18 08:43:09 -0800</bug_when>
    <thetext>Created attachment 179953
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793706</commentid>
    <comment_count>4</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-12-18 09:01:26 -0800</bug_when>
    <thetext>Sebastian, can you have a look please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797517</commentid>
    <comment_count>5</comment_count>
      <attachid>180792</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-12-27 04:49:40 -0800</bug_when>
    <thetext>Created attachment 180792
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797607</commentid>
    <comment_count>6</comment_count>
      <attachid>180792</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-12-27 10:15:12 -0800</bug_when>
    <thetext>Comment on attachment 180792
Patch

I wonder if it makes sense to make the WebAudio backend depend on GStreamer 1.0?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797617</commentid>
    <comment_count>7</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-12-27 10:37:08 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 180792 [details])
&gt; I wonder if it makes sense to make the WebAudio backend depend on GStreamer 1.0?

Well, no strong opinion on that, it&apos;d be a bit sad though now that we support both versions. I was planning to remove the 0.10 support after gst 1.2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797619</commentid>
    <comment_count>8</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-12-27 10:37:48 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 180792 [details] [details])
&gt; &gt; I wonder if it makes sense to make the WebAudio backend depend on GStreamer 1.0?
&gt; 
&gt; Well, no strong opinion on that, it&apos;d be a bit sad though now that we support both versions. I was planning to remove the 0.10 support after gst 1.2.

Okay, let&apos;s do that!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797972</commentid>
    <comment_count>9</comment_count>
      <attachid>180894</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-12-28 13:00:33 -0800</bug_when>
    <thetext>Created attachment 180894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797973</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-28 13:03:39 -0800</bug_when>
    <thetext>Attachment 180894 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:101:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:106:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebCore/platform/graphics/gstreamer/GStreamerVersioning.cpp:158:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebCore/platform/graphics/gstreamer/GStreamerVersioning.cpp:163:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 4 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797981</commentid>
    <comment_count>11</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-12-28 13:17:38 -0800</bug_when>
    <thetext>Complying with the style bot is sometimes a bit tricky :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799538</commentid>
    <comment_count>12</comment_count>
      <attachid>180894</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-01-03 12:01:18 -0800</bug_when>
    <thetext>Comment on attachment 180894
Patch

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

Okay. This all looks pretty reasonable to me, with no obvious problems. The GStreamer code we have is becoming very complicated so perhaps it makes sense to only use GStreamer 1.0 for WebAudio soon.

&gt; Source/WebCore/platform/audio/FFTFrame.h:58
&gt; +#ifndef GST_API_VERSION_1
&gt;  G_BEGIN_DECLS
&gt; +#endif
&gt;  #include &lt;gst/fft/gstfftf32.h&gt;
&gt; +#ifndef GST_API_VERSION_1
&gt;  G_END_DECLS
&gt; +#endif

There&apos;s no harm in having nested extern &quot;C&quot; { as far as I know, so you can probably just omit the #ifdefs here and make this more readable.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:41
&gt; +#ifdef GST_API_VERSION_1
&gt; +#include &lt;gst/audio/audio.h&gt;
&gt; +#else
&gt;  #include &lt;gst/audio/multichannel.h&gt;
&gt; +#endif

If possible, move #includes that are guarded by #ifdefs to the end of the include block in a new section.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:111
&gt; +        GstBuffer* buffer = gst_buffer_list_get(buffers, i);
&gt; +        if (buffer) {
&gt; +            GstMapInfo info;
&gt; +            gst_buffer_map(buffer, &amp;info, GST_MAP_READ);
&gt; +            memcpy(audioChannel-&gt;mutableData() + offset, reinterpret_cast&lt;float*&gt;(info.data), info.size);
&gt; +            offset += info.size / sizeof(float);
&gt; +            gst_buffer_unmap(buffer, &amp;info);
&gt; +        }

I think I&apos;d prefer a continue here rather than another level of nesting.

&gt; Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:252
&gt; +        GstAudioChannelPosition channelPosition = webKitWebAudioGStreamerChannelPosition(channelIndex);
&gt; +        GstAudioInfo info;
&gt; +        gst_audio_info_from_caps(&amp;info, monoCaps.get());
&gt; +        GST_AUDIO_INFO_POSITION(&amp;info, 0) = channelPosition;

Why not just:

GST_AUDIO_INFO_POSITION(&amp;info, 0) = webKitWebAudioGStreamerChannelPosition(channelIndex);

?

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerVersioning.cpp:29
&gt; +#ifdef GST_API_VERSION_1
&gt; +#include &lt;gst/audio/audio.h&gt;
&gt; +#else
&gt; +#include &lt;gst/audio/multichannel.h&gt;
&gt; +#endif

#includes that are interspersed with #ifdefs should be after the main include block, generally.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerVersioning.cpp:34
&gt;  
&gt; +
&gt;  void webkitGstObjectRefSink(GstObject* gstObject)

Extra newline here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800042</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-04 00:53:19 -0800</bug_when>
    <thetext>Attachment 180894 was posted by a committer and has review+, assigning to Philippe Normand for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800108</commentid>
    <comment_count>14</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-04 02:17:36 -0800</bug_when>
    <thetext>Committed r138786: &lt;http://trac.webkit.org/changeset/138786&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800110</commentid>
    <comment_count>15</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-04 02:19:50 -0800</bug_when>
    <thetext>Thanks for the review Martin, I applied the changes you suggested and landed the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800913</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-01-05 07:21:54 -0800</bug_when>
    <thetext>It appears this patch caused 8 webaudio tests to crash on WK2 EFL:
http://build.webkit.org/results/EFL%20Linux%2064-bit%20Debug%20WK2/r138842%20%287689%29/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800919</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-01-05 07:35:52 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; It appears this patch caused 8 webaudio tests to crash on WK2 EFL:
&gt; http://build.webkit.org/results/EFL%20Linux%2064-bit%20Debug%20WK2/r138842%20%287689%29/results.html

Hmm. GTK port has gstreamer 1.0.4 installed via jhbuild but EFL does not. We are using gstreamer 0.10.x from the distro. I guess we will need to add gstreamer 1.0.4 to EFL port&apos;s jhbuild (Bug 106178).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800928</commentid>
    <comment_count>18</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-01-05 09:32:19 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; It appears this patch caused 8 webaudio tests to crash on WK2 EFL:
&gt; &gt; http://build.webkit.org/results/EFL%20Linux%2064-bit%20Debug%20WK2/r138842%20%287689%29/results.html
&gt; 
&gt; Hmm. GTK port has gstreamer 1.0.4 installed via jhbuild but EFL does not. We are using gstreamer 0.10.x from the distro. I guess we will need to add gstreamer 1.0.4 to EFL port&apos;s jhbuild (Bug 106178).

Right now the webaudio backend should work with both GStreamer 0.10 and GStreamer 1.x so this seems like a real regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800954</commentid>
    <comment_count>19</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-05 12:10:35 -0800</bug_when>
    <thetext>Right. Can you please provide a stack trace and GST_DEBUG=webkit*:5 trace?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800955</commentid>
    <comment_count>20</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-05 12:12:19 -0800</bug_when>
    <thetext>Some changes of webkitwebsrc are not ifdeffed, I suspect the regression might be related to those.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179948</attachid>
            <date>2012-12-18 08:32:54 -0800</date>
            <delta_ts>2012-12-18 08:43:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>23272</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA0YjhjNDg1ZjZkOGEyYTgyNjRjZWExNTliZDYzYjMzNjlmMTdkZjM3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDE4IERlYyAyMDEyIDE2OjA4OjU3ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDYyICsrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9G
RlRGcmFtZS5jcHAgICAgICAgICB8ICAgIDMgKwogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRkZURnJhbWUuaCAgICAgICAgICAgfCAgICA0ICsKIC4uLi9hdWRpby9nc3RyZWFtZXIvQXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgIHwgICAgOSArKwogLi4uL2F1ZGlvL2dzdHJlYW1l
ci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwICAgfCAgMTA5ICsrKysrKysrKysrKysrKysr
Ky0tCiAuLi4vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcCAgICB8
ICAgNzIgKysrKysrKysrKystLQogNiBmaWxlcyBjaGFuZ2VkLCAyMzkgaW5zZXJ0aW9ucygrKSwg
MjAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGYzYWUxZmIuLjUyNzIyZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsNSArMSw2NyBAQAogMjAxMi0xMi0xOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3Jt
YW5kQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dTdHJlYW1lcl0gUG9ydCBXZWJBdWRpbyBiYWNr
ZW5kIHRvIDEuMCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDUyOTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQb3J0IHRoZSBBdWRpb0ZpbGVSZWFkZXIgYW5kIEF1ZGlvRGVzdGluYXRpb24gdG8g
R1N0cmVhbWVyIDEuMAorICAgICAgICBBUElzLiBJdCB3b3VsZCBiZSBwcmVmZXJhYmxlIHRvIHJl
bHkgb24gYXQgbGVhc3QgR1N0cmVhbWVyIDEuMC40CisgICAgICAgIGZvciB0aGlzIHRvIHdvcmsg
cHJvcGVybHkgYXMgdGhhdCByZWxlYXNlIGNvbnRhaW5zIHR3byBidWcgZml4ZXMKKyAgICAgICAg
Zm9yIHRoZSBkZWludGVybGVhdmUgYW5kIGludGVybGVhdmUgZWxlbWVudHMuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFt
ZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOiBEb24ndCByZXBvcnQgR3N0RkZURjMyCisgICAgICAgIHN0
cnVjdHVyZXMgYW55bW9yZSBiZWNhdXNlIHRoZXkncmUgb3BhcXVlIGluIEdTdHJlYW1lciAxLjAu
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaDogZ3N0ZmZ0ZjMyLmggaXMgcHJv
dGVjdGVkIGJ5CisgICAgICAgIEdfQkVHSU5fL0VORF9ERUNMUyBpbiBHU3RyZWFtZXIgMS4wIGFs
cmVhZHkuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRp
b25HU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKToKKyAg
ICAgICAgVGhlIHdhdnBhcnNlIGVsZW1lbnQgaW4gMS4wIGhhcyBubyBzb21ldGltZXMtcGFkcyBh
bnltb3JlLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFk
ZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoQXVkaW9GaWxlUmVhZGVyKTogVGhlIGRlY29kZWJp
bjIgZWxlbWVudCBoYXMgYmVlbiByZW5hbWVkIHRvCisgICAgICAgIGRlY29kZWJpbiBpbiBHU3Ry
ZWFtZXIgMS4wLgorICAgICAgICAoV2ViQ29yZTo6Z2V0R1N0cmVhbWVyQXVkaW9DYXBzKTogQXVk
aW8gY2FwcyBkZXNjcmlwdGlvbiBjaGFuZ2VkIGEKKyAgICAgICAgbG90IGluIEdTdHJlYW1lciAx
LjAsIHRoZSBmdW5jdGlvbiBub3cgaGFuZGxlcyBib3RoIEFQSXMuCisgICAgICAgIChXZWJDb3Jl
Ojpjb3B5R3N0cmVhbWVyQnVmZmVyc1RvQXVkaW9DaGFubmVsKTogQWRhcHRlZCB0bworICAgICAg
ICBHc3RCdWZmZXJMaXN0IGFuZCBHc3RCdWZmZXIgQVBJIGNoYW5nZXMuCisgICAgICAgIChXZWJD
b3JlOjpvbkFwcHNpbmtQdWxsUmVxdWlyZWRDYWxsYmFjayk6IFB1bGwgYSBzYW1wbGUgb3IgYnVm
ZmVyLAorICAgICAgICBkZXBlbmRpbmcgb24gd2hpY2ggQVBJIHdlIHVzZS4KKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6fkF1ZGlvRmlsZVJlYWRlcik6IFByb3RlY3QKKyAgICAg
ICAgR3N0QnVmZmVyTGlzdEl0ZXJhdG9ycyBpbiAwLjEwLW9ubHkgY29kZSBwYXRoLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmhhbmRsZVNh
bXBsZSk6IFB1bGwgYW4gYXVkaW8gc2FtcGxlCisgICAgICAgIGZyb20gYXBwc2luayBhbmQgaW5z
ZXJ0IGl0IGluIHRoZSBhcHByb3ByaWF0ZSBidWZmZXIgbGlzdC4KKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlTmV3RGVpbnRlcmxlYXZlUGFkKTogSGFuZGxlCisgICAg
ICAgIGFwcHNpbmsgQVBJIGNoYW5nZXMgZnJvbSBHU3RyZWFtZXIgMC4xMCB0byAxLjAuCisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmRlY29kZUF1ZGlvRm9yQnVzQ3JlYXRpb24p
OiBDcmVhdGUgdGhlCisgICAgICAgIGNvcnJlY3QgZGVjb2RlYmluIGVsZW1lbnQuCisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyk6IFByb3RlY3QgR3N0QnVmZmVy
TGlzdEl0ZXJhdG9ycworICAgICAgICBpbiAwLjEwLW9ubHkgY29kZSBwYXRoLgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5j
cHA6CisgICAgICAgIChfV2ViS2l0V2ViQXVkaW9Tb3VyY2VQcml2YXRlKTogR3N0VGFzayBpbiBH
U3RyZWFtZXIgMS4wIHVzZXMgYQorICAgICAgICBHUmVjTXV0ZXggaW5zdGVhZCBvZiBhIChkZXBy
ZWNhdGVkKSBHU3RhdGljUmVjTXV0ZXguCisgICAgICAgIChnZXRHU3RyZWFtZXJNb25vQXVkaW9D
YXBzKTogSGFuZGxlIGNhcHMgZGVzY3JpcHRpb24gY2hhbmdlcworICAgICAgICBiZXR3ZWVuIEdT
dHJlYW1lciAwLjEwIGFuZCAxLjAuCisgICAgICAgICh3ZWJLaXRXZWJBdWRpb0dTdHJlYW1lckNo
YW5uZWxQb3NpdGlvbik6IFBPU0lUSU9OX0xGRSBpbgorICAgICAgICBHU3RyZWFtZXIgMS4wIGlz
IG5vdyBQT1NJVElPTl9MRkUxLiBBbHNvIG1hcCBDaGFubmVsQ2VudGVyIHRvIGl0cworICAgICAg
ICBHU3RyZWFtZXIgZXF1aXZhbGVudC4KKyAgICAgICAgKHdlYmtpdF93ZWJfYXVkaW9fc3JjX2Ns
YXNzX2luaXQpOiBVc2UgZ2VuZXJpYyBzZXRHc3RFbGVtZW50Q2xhc3NNZXRhZGF0YS4KKyAgICAg
ICAgKHdlYmtpdF93ZWJfYXVkaW9fc3JjX2luaXQpOiBIYW5kbGUgR1JlY011dGV4IGluaXRpYWxp
c2F0aW9uLgorICAgICAgICAod2ViS2l0V2ViQXVkaW9TcmNDb25zdHJ1Y3RlZCk6IFNldCBjaGFu
bmVsIHBvc2l0aW9uIG9uCisgICAgICAgIGNhcHNmaWx0ZXIuIFRoaXMgaXMgZG9uZSBmb3IgR1N0
cmVhbWVyIDEuMCBjb2RlIHBhdGggb25seSBiZWNhdXNlCisgICAgICAgIGluIDAuMTAgdGhlIGNh
cHMgaGF2ZSBubyB3YXkgdG8gc3RvcmUgdGhpcyBpbmZvcm1hdGlvbi4KKyAgICAgICAgKHdlYktp
dFdlYkF1ZGlvU3JjRmluYWxpemUpOiBDbGVhciBHUmVjTXV0ZXguCisgICAgICAgICh3ZWJLaXRX
ZWJBdWRpb1NyY0xvb3ApOiBIYW5kbGUgR3N0QnVmZmVyIEFQSSBjaGFuZ2VzIGFuZCBhZGQgYW4K
KyAgICAgICAgZXJyb3IgY2hlY2sgaWYgYnVmZmVycyBjYW4ndCBiZSBjaGFpbmVkIHRvIHF1ZXVl
J3Mgc291cmNlIHBhZC4KKyAgICAgICAgKHdlYktpdFdlYkF1ZGlvU3JjQ2hhbmdlU3RhdGUpOiBB
cyBhZHZpc2VkIGluIHRoZSBHU3RyZWFtZXIgZG9jcywKKyAgICAgICAgZml4dXAgdGhlIHN0YXRl
IGNoYW5nZXMgZm9yIHRoaXMgbGl2ZSBzb3VyY2UgZWxlbWVudDogTk9fUFJFUk9MTAorICAgICAg
ICBpbiBSRUFEWS0+UEFVU0VEIGFuZCBzdGFydC9zdG9wIHRoZSBHc3RUYXNrIHdoZW4gZ29pbmcv
Y29taW5nCisgICAgICAgIHRvL2Zyb20gUExBWUlORy4KKworMjAxMi0xMi0xOCAgUGhpbGlwcGUg
Tm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKICAgICAgICAgW0dTdHJlYW1lcl0gR3N0
TWVzc2FnZSBoYW5kbGVyIGluIEF1ZGlvRGVzdGluYXRpb24KICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTI5MgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAKaW5kZXggZWVlNDVkZS4uYzM1MmI1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcApAQCAtMjc5LDggKzI3OSwxMSBA
QCB2b2lkIEZGVEZyYW1lOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1v
cnlPYmplY3RJbmZvKSBjb25zdAogI2VuZGlmIC8vIFVTRShXRUJBVURJT19GRk1QRUcpCiAKICNp
ZiBVU0UoV0VCQVVESU9fR1NUUkVBTUVSKQorI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAg
IC8vIFRoZSBHc3RGRlRGMzIgc3RydWN0dXJlIGlzIGV4cG9zZWQgcHVibGljbHkgaW4gR1N0cmVh
bWVyIDAuMTAgb25seS4KICAgICBpbmZvLmFkZE1lbWJlcihtX2ZmdCk7CiAgICAgaW5mby5hZGRN
ZW1iZXIobV9pbnZlcnNlRmZ0KTsKKyNlbmRpZgogICAgIGluZm8uYWRkTWVtYmVyKG1fY29tcGxl
eERhdGEpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fcmVhbERhdGEpOwogICAgIGluZm8uYWRkTWVt
YmVyKG1faW1hZ0RhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRkZURnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgK
aW5kZXggNmMxNTM0OS4uYTVjZTlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRkZURnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9G
RlRGcmFtZS5oCkBAIC00OSw5ICs0OSwxMyBAQAogCiAjaWYgVVNFKFdFQkFVRElPX0dTVFJFQU1F
UikKICNpbmNsdWRlIDxnbGliLmg+CisjaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCiBHX0JFR0lO
X0RFQ0xTCiAjaW5jbHVkZSA8Z3N0L2ZmdC9nc3RmZnRmMzIuaD4KIEdfRU5EX0RFQ0xTCisjZWxz
ZQorI2luY2x1ZGUgPGdzdC9mZnQvZ3N0ZmZ0ZjMyLmg+CisjZW5kaWYKICNlbmRpZiAvLyBVU0Uo
V0VCQVVESU9fR1NUUkVBTUVSKQogCiAjaWYgVVNFKFdFQkFVRElPX0ZGTVBFRykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0
aW9uR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAppbmRleCBmYTI4MjFmLi44NjRlZTNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9E
ZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCkBAIC01MSwxMCArNTEs
MTIgQEAgZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkKICAgICBy
ZXR1cm4gNDQxMDA7CiB9CiAKKyNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKIHN0YXRpYyB2b2lk
IG9uR1N0cmVhbWVyV2F2cGFyc2VQYWRBZGRlZENhbGxiYWNrKEdzdEVsZW1lbnQqIGVsZW1lbnQs
IEdzdFBhZCogcGFkLCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKiBkZXN0aW5hdGlvbikKIHsK
ICAgICBkZXN0aW5hdGlvbi0+ZmluaXNoQnVpbGRpbmdQaXBlbGluZUFmdGVyV2F2UGFyc2VyUGFk
UmVhZHkocGFkKTsKIH0KKyNlbmRpZgogCiBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIGZsb2F0IHNh
bXBsZVJhdGUpCiAgICAgOiBtX2NhbGxiYWNrKGNhbGxiYWNrKQpAQCAtODAsOSArODIsMTYgQEAg
QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRp
b0lPQ2FsbGJhY2smIGNhbGxiYWNrLAogICAgIGlmICghbV93YXZQYXJzZXJBdmFpbGFibGUpCiAg
ICAgICAgIHJldHVybjsKIAorI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIGdfc2lnbmFs
X2Nvbm5lY3Qod2F2UGFyc2VyLCAicGFkLWFkZGVkIiwgR19DQUxMQkFDSyhvbkdTdHJlYW1lcldh
dnBhcnNlUGFkQWRkZWRDYWxsYmFjayksIHRoaXMpOworI2VuZGlmCiAgICAgZ3N0X2Jpbl9hZGRf
bWFueShHU1RfQklOKG1fcGlwZWxpbmUpLCB3ZWJraXRBdWRpb1NyYywgd2F2UGFyc2VyLCBOVUxM
KTsKICAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbCh3ZWJraXRBdWRpb1NyYywgInNyYyIs
IHdhdlBhcnNlciwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7CisKKyNpZmRl
ZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgIEdSZWZQdHI8R3N0UGFkPiBzcmNQYWQgPSBhZG9wdEdS
ZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQod2F2UGFyc2VyLCAic3JjIikpOworICAgIGZp
bmlzaEJ1aWxkaW5nUGlwZWxpbmVBZnRlcldhdlBhcnNlclBhZFJlYWR5KHNyY1BhZC5nZXQoKSk7
CisjZW5kaWYKIH0KIAogQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6fkF1ZGlvRGVzdGluYXRp
b25HU3RyZWFtZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Z3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcAppbmRl
eCAzZWFiODViLi4zMjg4NjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVy
LmNwcApAQCAtMzMsNyArMzMsMTEgQEAKIAogI2luY2x1ZGUgPGdpby9naW8uaD4KICNpbmNsdWRl
IDxnc3QvYXBwL2dzdGFwcHNpbmsuaD4KKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorI2luY2x1
ZGUgPGdzdC9hdWRpby9hdWRpby5oPgorI2Vsc2UKICNpbmNsdWRlIDxnc3QvYXVkaW8vbXVsdGlj
aGFubmVsLmg+CisjZW5kaWYKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L3Bi
dXRpbHMvcGJ1dGlscy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNDEsNiAr
NDUsMTIgQEAKICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR1JlZlB0ci5oPgogCisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKK3N0YXRpYyBj
b25zdCBjaGFyKiBnRGVjb2RlYmluTmFtZSA9ICJkZWNvZGViaW4iOworI2Vsc2UKK3N0YXRpYyBj
b25zdCBjaGFyKiBnRGVjb2RlYmluTmFtZSA9ICJkZWNvZGViaW4yIjsKKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvRmlsZVJlYWRlciB7CkBAIC01Miw3ICs2Miwx
MSBAQCBwdWJsaWM6CiAKICAgICBQYXNzT3duUHRyPEF1ZGlvQnVzPiBjcmVhdGVCdXMoZmxvYXQg
c2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01vbm8pOwogCisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEK
KyAgICBHc3RGbG93UmV0dXJuIGhhbmRsZVNhbXBsZShHc3RBcHBTaW5rKik7CisjZWxzZQogICAg
IEdzdEZsb3dSZXR1cm4gaGFuZGxlQnVmZmVyKEdzdEFwcFNpbmsqKTsKKyNlbmRpZgogICAgIGdi
b29sZWFuIGhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSopOwogICAgIHZvaWQgaGFuZGxlTmV3RGVp
bnRlcmxlYXZlUGFkKEdzdFBhZCopOwogICAgIHZvaWQgZGVpbnRlcmxlYXZlUGFkc0NvbmZpZ3Vy
ZWQoKTsKQEAgLTY2LDkgKzgwLDEzIEBAIHByaXZhdGU6CiAKICAgICBmbG9hdCBtX3NhbXBsZVJh
dGU7CiAgICAgR3N0QnVmZmVyTGlzdCogbV9mcm9udExlZnRCdWZmZXJzOwotICAgIEdzdEJ1ZmZl
ckxpc3RJdGVyYXRvciogbV9mcm9udExlZnRCdWZmZXJzSXRlcmF0b3I7CiAgICAgR3N0QnVmZmVy
TGlzdCogbV9mcm9udFJpZ2h0QnVmZmVyczsKKworI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQor
ICAgIEdzdEJ1ZmZlckxpc3RJdGVyYXRvciogbV9mcm9udExlZnRCdWZmZXJzSXRlcmF0b3I7CiAg
ICAgR3N0QnVmZmVyTGlzdEl0ZXJhdG9yKiBtX2Zyb250UmlnaHRCdWZmZXJzSXRlcmF0b3I7Cisj
ZW5kaWYKKwogICAgIEdzdEVsZW1lbnQqIG1fcGlwZWxpbmU7CiAgICAgdW5zaWduZWQgbV9jaGFu
bmVsU2l6ZTsKICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fZGVjb2RlYmluOwpAQCAtNzksMTEg
Kzk3LDI4IEBAIHByaXZhdGU6CiAKIHN0YXRpYyBHc3RDYXBzKiBnZXRHU3RyZWFtZXJBdWRpb0Nh
cHMoaW50IGNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQogeworI2lmZGVmIEdTVF9BUElfVkVS
U0lPTl8xCisgICAgcmV0dXJuIGdzdF9jYXBzX25ld19zaW1wbGUoImF1ZGlvL3gtcmF3IiwgInJh
dGUiLCBHX1RZUEVfSU5ULCBzdGF0aWNfY2FzdDxpbnQ+KHNhbXBsZVJhdGUpLCAiY2hhbm5lbHMi
LCBHX1RZUEVfSU5ULCBjaGFubmVscywgImZvcm1hdCIsIEdfVFlQRV9TVFJJTkcsIGdzdF9hdWRp
b19mb3JtYXRfdG9fc3RyaW5nKEdTVF9BVURJT19GT1JNQVRfRjMyKSwgImxheW91dCIsIEdfVFlQ
RV9TVFJJTkcsICJpbnRlcmxlYXZlZCIsIE5VTEwpOworI2Vsc2UKICAgICByZXR1cm4gZ3N0X2Nh
cHNfbmV3X3NpbXBsZSgiYXVkaW8veC1yYXctZmxvYXQiLCAicmF0ZSIsIEdfVFlQRV9JTlQsIHN0
YXRpY19jYXN0PGludD4oc2FtcGxlUmF0ZSksICJjaGFubmVscyIsIEdfVFlQRV9JTlQsIGNoYW5u
ZWxzLCAiZW5kaWFubmVzcyIsIEdfVFlQRV9JTlQsIEdfQllURV9PUkRFUiwgIndpZHRoIiwgR19U
WVBFX0lOVCwgMzIsIE5VTEwpOworI2VuZGlmCiB9CiAKIHN0YXRpYyB2b2lkIGNvcHlHc3RyZWFt
ZXJCdWZmZXJzVG9BdWRpb0NoYW5uZWwoR3N0QnVmZmVyTGlzdCogYnVmZmVycywgQXVkaW9DaGFu
bmVsKiBhdWRpb0NoYW5uZWwpCiB7CisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICBnc2l6
ZSBvZmZzZXQgPSAwOworICAgIGZvcih1bnNpZ25lZCBpID0gMDsgaSA8IGdzdF9idWZmZXJfbGlz
dF9sZW5ndGgoYnVmZmVycyk7IGkrKykgeworICAgICAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdz
dF9idWZmZXJfbGlzdF9nZXQoYnVmZmVycywgaSk7CisgICAgICAgIGlmIChidWZmZXIpIHsKKyAg
ICAgICAgICAgIEdzdE1hcEluZm8gaW5mbzsKKyAgICAgICAgICAgIGdzdF9idWZmZXJfbWFwKGJ1
ZmZlciwgJmluZm8sIEdTVF9NQVBfUkVBRCk7CisgICAgICAgICAgICBtZW1jcHkoYXVkaW9DaGFu
bmVsLT5tdXRhYmxlRGF0YSgpICsgb2Zmc2V0LCByZWludGVycHJldF9jYXN0PGZsb2F0Kj4oaW5m
by5kYXRhKSwgaW5mby5zaXplKTsKKyAgICAgICAgICAgIG9mZnNldCArPSBpbmZvLnNpemUgLyBz
aXplb2YoZmxvYXQpOworICAgICAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcChidWZmZXIsICZpbmZv
KTsKKyAgICAgICAgfQorICAgIH0KKyNlbHNlCiAgICAgR3N0QnVmZmVyTGlzdEl0ZXJhdG9yKiBp
dGVyID0gZ3N0X2J1ZmZlcl9saXN0X2l0ZXJhdGUoYnVmZmVycyk7CiAgICAgZ3N0X2J1ZmZlcl9s
aXN0X2l0ZXJhdG9yX25leHRfZ3JvdXAoaXRlcik7CiAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBn
c3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfbWVyZ2VfZ3JvdXAoaXRlcik7CkBAIC05MywxMSArMTI4
LDE2IEBAIHN0YXRpYyB2b2lkIGNvcHlHc3RyZWFtZXJCdWZmZXJzVG9BdWRpb0NoYW5uZWwoR3N0
QnVmZmVyTGlzdCogYnVmZmVycywgQXVkaW9DaGFuCiAgICAgfQogCiAgICAgZ3N0X2J1ZmZlcl9s
aXN0X2l0ZXJhdG9yX2ZyZWUoaXRlcik7CisjZW5kaWYKIH0KIAotc3RhdGljIEdzdEZsb3dSZXR1
cm4gb25BcHBzaW5rTmV3QnVmZmVyQ2FsbGJhY2soR3N0QXBwU2luayogc2luaywgZ3BvaW50ZXIg
dXNlckRhdGEpCitzdGF0aWMgR3N0Rmxvd1JldHVybiBvbkFwcHNpbmtQdWxsUmVxdWlyZWRDYWxs
YmFjayhHc3RBcHBTaW5rKiBzaW5rLCBncG9pbnRlciB1c2VyRGF0YSkKIHsKKyNpZmRlZiBHU1Rf
QVBJX1ZFUlNJT05fMQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdWRpb0ZpbGVSZWFkZXIqPih1
c2VyRGF0YSktPmhhbmRsZVNhbXBsZShzaW5rKTsKKyNlbHNlCiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEF1ZGlvRmlsZVJlYWRlcio+KHVzZXJEYXRhKS0+aGFuZGxlQnVmZmVyKHNpbmspOworI2Vu
ZGlmCiB9CiAKIGdib29sZWFuIG1lc3NhZ2VDYWxsYmFjayhHc3RCdXMqIGJ1cywgR3N0TWVzc2Fn
ZSogbWVzc2FnZSwgQXVkaW9GaWxlUmVhZGVyKiByZWFkZXIpCkBAIC0xNjUsMTIgKzIwNSw1OSBA
QCBBdWRpb0ZpbGVSZWFkZXI6On5BdWRpb0ZpbGVSZWFkZXIoKQogICAgICAgICBtX2RlSW50ZXJs
ZWF2ZS5jbGVhcigpOwogICAgIH0KIAorI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIGdz
dF9idWZmZXJfbGlzdF9pdGVyYXRvcl9mcmVlKG1fZnJvbnRMZWZ0QnVmZmVyc0l0ZXJhdG9yKTsK
ICAgICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfZnJlZShtX2Zyb250UmlnaHRCdWZmZXJzSXRl
cmF0b3IpOworI2VuZGlmCiAgICAgZ3N0X2J1ZmZlcl9saXN0X3VucmVmKG1fZnJvbnRMZWZ0QnVm
ZmVycyk7CiAgICAgZ3N0X2J1ZmZlcl9saXN0X3VucmVmKG1fZnJvbnRSaWdodEJ1ZmZlcnMpOwog
fQogCisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKK0dzdEZsb3dSZXR1cm4gQXVkaW9GaWxlUmVh
ZGVyOjpoYW5kbGVTYW1wbGUoR3N0QXBwU2luayogc2luaykKK3sKKyAgICBHc3RTYW1wbGUqIHNh
bXBsZSA9IGdzdF9hcHBfc2lua19wdWxsX3NhbXBsZShzaW5rKTsKKyAgICBpZiAoIXNhbXBsZSkK
KyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworCisgICAgR3N0QnVmZmVyKiBidWZmZXIg
PSBnc3Rfc2FtcGxlX2dldF9idWZmZXIoc2FtcGxlKTsKKyAgICBpZiAoIWJ1ZmZlcikgeworICAg
ICAgICBnc3Rfc2FtcGxlX3VucmVmKHNhbXBsZSk7CisgICAgICAgIHJldHVybiBHU1RfRkxPV19F
UlJPUjsKKyAgICB9CisKKyAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2Fwcyhz
YW1wbGUpOworICAgIGlmICghY2FwcykgeworICAgICAgICBnc3Rfc2FtcGxlX3VucmVmKHNhbXBs
ZSk7CisgICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKyAgICB9CisKKyAgICBHc3RBdWRp
b0luZm8gaW5mbzsKKyAgICBnc3RfYXVkaW9faW5mb19mcm9tX2NhcHMoJmluZm8sIGNhcHMpOwor
ICAgIGludCBmcmFtZXMgPSBHU1RfQ0xPQ0tfVElNRV9UT19GUkFNRVMoR1NUX0JVRkZFUl9EVVJB
VElPTihidWZmZXIpLCBHU1RfQVVESU9fSU5GT19SQVRFKCZpbmZvKSk7CisgICAgR3N0QnVmZmVy
KiBkdXBsaWNhdGVCdWZmZXIgPSBnc3RfYnVmZmVyX2NvcHkoYnVmZmVyKTsKKworICAgIC8vIENo
ZWNrIHRoZSBmaXJzdCBhdWRpbyBjaGFubmVsLiBUaGUgYnVmZmVyIGlzIHN1cHBvc2VkIHRvIHN0
b3JlCisgICAgLy8gZGF0YSBvZiBhIHNpbmdsZSBjaGFubmVsIGFueXdheS4KKyAgICBzd2l0Y2gg
KEdTVF9BVURJT19JTkZPX1BPU0lUSU9OKCZpbmZvLCAwKSkgeworICAgIGNhc2UgR1NUX0FVRElP
X0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfTEVGVDoKKyAgICAgICAgZ3N0X2J1ZmZlcl9saXN0X2Fk
ZChtX2Zyb250TGVmdEJ1ZmZlcnMsIGR1cGxpY2F0ZUJ1ZmZlcik7CisgICAgICAgIG1fY2hhbm5l
bFNpemUgKz0gZnJhbWVzOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9BVURJT19DSEFO
TkVMX1BPU0lUSU9OX0ZST05UX1JJR0hUOgorICAgICAgICBnc3RfYnVmZmVyX2xpc3RfYWRkKG1f
ZnJvbnRSaWdodEJ1ZmZlcnMsIGR1cGxpY2F0ZUJ1ZmZlcik7CisgICAgICAgIGJyZWFrOworICAg
IGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGdzdF9zYW1wbGVfdW5yZWYo
c2FtcGxlKTsKKyAgICByZXR1cm4gR1NUX0ZMT1dfT0s7CisKK30KKyNlbmRpZgorCisjaWZuZGVm
IEdTVF9BUElfVkVSU0lPTl8xCiBHc3RGbG93UmV0dXJuIEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxl
QnVmZmVyKEdzdEFwcFNpbmsqIHNpbmspCiB7CiAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3Rf
YXBwX3NpbmtfcHVsbF9idWZmZXIoc2luayk7CkBAIC0yMjQsNiArMzExLDcgQEAgR3N0Rmxvd1Jl
dHVybiBBdWRpb0ZpbGVSZWFkZXI6OmhhbmRsZUJ1ZmZlcihHc3RBcHBTaW5rKiBzaW5rKQogICAg
IGdzdF9jYXBzX3VucmVmKGNhcHMpOwogICAgIHJldHVybiBHU1RfRkxPV19PSzsKIH0KKyNlbmRp
ZgogCiBnYm9vbGVhbiBBdWRpb0ZpbGVSZWFkZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSog
bWVzc2FnZSkKIHsKQEAgLTI2MiwxNiArMzUwLDE2IEBAIHZvaWQgQXVkaW9GaWxlUmVhZGVyOjpo
YW5kbGVOZXdEZWludGVybGVhdmVQYWQoR3N0UGFkKiBwYWQpCiAgICAgR3N0QXBwU2lua0NhbGxi
YWNrcyBjYWxsYmFja3M7CiAgICAgY2FsbGJhY2tzLmVvcyA9IDA7CiAgICAgY2FsbGJhY2tzLm5l
d19wcmVyb2xsID0gMDsKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgIGNhbGxiYWNrcy5u
ZXdfc2FtcGxlID0gb25BcHBzaW5rUHVsbFJlcXVpcmVkQ2FsbGJhY2s7CisjZWxzZQogICAgIGNh
bGxiYWNrcy5uZXdfYnVmZmVyX2xpc3QgPSAwOwotICAgIGNhbGxiYWNrcy5uZXdfYnVmZmVyID0g
b25BcHBzaW5rTmV3QnVmZmVyQ2FsbGJhY2s7CisgICAgY2FsbGJhY2tzLm5ld19idWZmZXIgPSBv
bkFwcHNpbmtQdWxsUmVxdWlyZWRDYWxsYmFjazsKKyNlbmRpZgogICAgIGdzdF9hcHBfc2lua19z
ZXRfY2FsbGJhY2tzKEdTVF9BUFBfU0lOSyhzaW5rKSwgJmNhbGxiYWNrcywgdGhpcywgMCk7CiAK
ICAgICBnX29iamVjdF9zZXQoc2luaywgInN5bmMiLCBGQUxTRSwgTlVMTCk7CiAKLSAgICBHc3RD
YXBzKiBjYXBzID0gZ2V0R1N0cmVhbWVyQXVkaW9DYXBzKDEsIG1fc2FtcGxlUmF0ZSk7Ci0gICAg
Z3N0X2FwcF9zaW5rX3NldF9jYXBzKEdTVF9BUFBfU0lOSyhzaW5rKSwgY2Fwcyk7Ci0gICAgZ3N0
X2NhcHNfdW5yZWYoY2Fwcyk7Ci0KICAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU4obV9waXBl
bGluZSksIHF1ZXVlLCBzaW5rLCBOVUxMKTsKIAogICAgIEdzdFBhZCogc2lua1BhZCA9IGdzdF9l
bGVtZW50X2dldF9zdGF0aWNfcGFkKHF1ZXVlLCAic2luayIpOwpAQCAtMzQ2LDcgKzQzNCw3IEBA
IHZvaWQgQXVkaW9GaWxlUmVhZGVyOjpkZWNvZGVBdWRpb0ZvckJ1c0NyZWF0aW9uKCkKICAgICAg
ICAgZ19vYmplY3Rfc2V0KHNvdXJjZSwgImxvY2F0aW9uIiwgbV9maWxlUGF0aCwgTlVMTCk7CiAg
ICAgfQogCi0gICAgbV9kZWNvZGViaW4gPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImRlY29k
ZWJpbjIiLCAiZGVjb2RlYmluIik7CisgICAgbV9kZWNvZGViaW4gPSBnc3RfZWxlbWVudF9mYWN0
b3J5X21ha2UoZ0RlY29kZWJpbk5hbWUsICJkZWNvZGViaW4iKTsKICAgICBnX3NpZ25hbF9jb25u
ZWN0KG1fZGVjb2RlYmluLmdldCgpLCAicGFkLWFkZGVkIiwgR19DQUxMQkFDSyhvbkdTdHJlYW1l
ckRlY29kZWJpblBhZEFkZGVkQ2FsbGJhY2spLCB0aGlzKTsKIAogICAgIGdzdF9iaW5fYWRkX21h
bnkoR1NUX0JJTihtX3BpcGVsaW5lKSwgc291cmNlLCBtX2RlY29kZWJpbi5nZXQoKSwgTlVMTCk7
CkBAIC0zNTksMTIgKzQ0NywxNSBAQCBQYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFk
ZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVSYXRlLCBib29sIG1peFRvTW9ubwogICAgIG1fc2Ft
cGxlUmF0ZSA9IHNhbXBsZVJhdGU7CiAKICAgICBtX2Zyb250TGVmdEJ1ZmZlcnMgPSBnc3RfYnVm
ZmVyX2xpc3RfbmV3KCk7CisgICAgbV9mcm9udFJpZ2h0QnVmZmVycyA9IGdzdF9idWZmZXJfbGlz
dF9uZXcoKTsKKworI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIG1fZnJvbnRMZWZ0QnVm
ZmVyc0l0ZXJhdG9yID0gZ3N0X2J1ZmZlcl9saXN0X2l0ZXJhdGUobV9mcm9udExlZnRCdWZmZXJz
KTsKICAgICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfYWRkX2dyb3VwKG1fZnJvbnRMZWZ0QnVm
ZmVyc0l0ZXJhdG9yKTsKIAotICAgIG1fZnJvbnRSaWdodEJ1ZmZlcnMgPSBnc3RfYnVmZmVyX2xp
c3RfbmV3KCk7CiAgICAgbV9mcm9udFJpZ2h0QnVmZmVyc0l0ZXJhdG9yID0gZ3N0X2J1ZmZlcl9s
aXN0X2l0ZXJhdGUobV9mcm9udFJpZ2h0QnVmZmVycyk7CiAgICAgZ3N0X2J1ZmZlcl9saXN0X2l0
ZXJhdG9yX2FkZF9ncm91cChtX2Zyb250UmlnaHRCdWZmZXJzSXRlcmF0b3IpOworI2VuZGlmCiAK
ICAgICBHUmVmUHRyPEdNYWluQ29udGV4dD4gY29udGV4dCA9IGdfbWFpbl9jb250ZXh0X25ldygp
OwogICAgIGdfbWFpbl9jb250ZXh0X3B1c2hfdGhyZWFkX2RlZmF1bHQoY29udGV4dC5nZXQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2Vi
S2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA3
NzE4NDFkLi40MzA2OTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdT
dHJlYW1lci5jcHAKQEAgLTI3LDcgKzI3LDExIEBACiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093
blB0ci5oPgogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJHU3RyZWFt
ZXJWZXJzaW9uaW5nLmgiCisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyNpbmNsdWRlIDxnc3Qv
YXVkaW8vYXVkaW8uaD4KKyNlbHNlCiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL211bHRpY2hhbm5lbC5o
PgorI2VuZGlmCiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvcGJ1dGlscy5oPgogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKQEAgLTQ1LDYgKzQ5LDcgQEAgc3RydWN0IF9XZWJLaXRXZWJBdWRpb1Ny
Y0NsYXNzIHsKICAgICBHc3RCaW5DbGFzcyBwYXJlbnRDbGFzczsKIH07CiAKKyNkZWZpbmUgV0VC
S0lUX1dFQl9BVURJT19TUkNfR0VUX1BSSVZBVEUob2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9Q
UklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJBVURJT19TUkMsIFdlYktpdFdlYkF1ZGlvU291
cmNlUHJpdmF0ZSkpCiBzdHJ1Y3QgX1dlYktpdFdlYkF1ZGlvU291cmNlUHJpdmF0ZSB7CiAgICAg
Z2Zsb2F0IHNhbXBsZVJhdGU7CiAgICAgQXVkaW9CdXMqIGJ1czsKQEAgLTU1LDcgKzYwLDExIEBA
IHN0cnVjdCBfV2ViS2l0V2ViQXVkaW9Tb3VyY2VQcml2YXRlIHsKICAgICBHUmVmUHRyPEdzdEVs
ZW1lbnQ+IHdhdkVuY29kZXI7CiAKICAgICBHUmVmUHRyPEdzdFRhc2s+IHRhc2s7CisjaWZkZWYg
R1NUX0FQSV9WRVJTSU9OXzEKKyAgICBHUmVjTXV0ZXggbXV0ZXg7CisjZWxzZQogICAgIEdTdGF0
aWNSZWNNdXRleCBtdXRleDsKKyNlbmRpZgogCiAgICAgR1NMaXN0KiBwYWRzOyAvLyBMaXN0IG9m
IHF1ZXVlIHNpbmsgcGFkcy4gT25lIHF1ZXVlIGZvciBlYWNoIHBsYW5hciBhdWRpbyBjaGFubmVs
LgogICAgIEdzdFBhZCogc291cmNlUGFkOyAvLyBzcmMgcGFkIG9mIHRoZSBlbGVtZW50LCBpbnRl
cmxlYXZlZCB3YXYgZGF0YSBpcyBwdXNoZWQgdG8gaXQuCkBAIC04NSwxMCArOTQsMTcgQEAgc3Rh
dGljIHZvaWQgd2ViS2l0V2ViQXVkaW9TcmNMb29wKFdlYktpdFdlYkF1ZGlvU3JjKik7CiAKIHN0
YXRpYyBHc3RDYXBzKiBnZXRHU3RyZWFtZXJNb25vQXVkaW9DYXBzKGZsb2F0IHNhbXBsZVJhdGUp
CiB7CisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICByZXR1cm4gZ3N0X2NhcHNfbmV3X3Np
bXBsZSgiYXVkaW8veC1yYXciLCAicmF0ZSIsIEdfVFlQRV9JTlQsIHN0YXRpY19jYXN0PGludD4o
c2FtcGxlUmF0ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYW5uZWxzIiwg
R19UWVBFX0lOVCwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0Iiwg
R19UWVBFX1NUUklORywgZ3N0X2F1ZGlvX2Zvcm1hdF90b19zdHJpbmcoR1NUX0FVRElPX0ZPUk1B
VF9GMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsYXlvdXQiLCBHX1RZUEVf
U1RSSU5HLCAibm9uLWludGVybGVhdmVkIiwgTlVMTCk7CisjZWxzZQogICAgIHJldHVybiBnc3Rf
Y2Fwc19uZXdfc2ltcGxlKCJhdWRpby94LXJhdy1mbG9hdCIsICJyYXRlIiwgR19UWVBFX0lOVCwg
c3RhdGljX2Nhc3Q8aW50PihzYW1wbGVSYXRlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiY2hhbm5lbHMiLCBHX1RZUEVfSU5ULCAxLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJlbmRpYW5uZXNzIiwgR19UWVBFX0lOVCwgR19CWVRFX09SREVSLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCIsIEdfVFlQRV9JTlQsIDMyLCBOVUxMKTsKKyNl
bmRpZgogfQogCiBzdGF0aWMgR3N0QXVkaW9DaGFubmVsUG9zaXRpb24gd2ViS2l0V2ViQXVkaW9H
U3RyZWFtZXJDaGFubmVsUG9zaXRpb24oaW50IGNoYW5uZWxJbmRleCkKQEAgLTEwMywxMSArMTE5
LDE0IEBAIHN0YXRpYyBHc3RBdWRpb0NoYW5uZWxQb3NpdGlvbiB3ZWJLaXRXZWJBdWRpb0dTdHJl
YW1lckNoYW5uZWxQb3NpdGlvbihpbnQgY2hhbm5lCiAgICAgICAgIHBvc2l0aW9uID0gR1NUX0FV
RElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfUklHSFQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQXVkaW9CdXM6OkNoYW5uZWxDZW50ZXI6Ci0gICAgICAgIC8vIENlbnRlciBhbmQgbW9ubyBh
cmUgdGhlIHNhbWUuCi0gICAgICAgIHBvc2l0aW9uID0gR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJ
T05fRlJPTlRfTU9OTzsKKyAgICAgICAgcG9zaXRpb24gPSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJ
VElPTl9GUk9OVF9DRU5URVI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXVkaW9CdXM6OkNo
YW5uZWxMRkU6CisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICAgICAgcG9zaXRpb24gPSBH
U1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9MRkUxOworI2Vsc2UKICAgICAgICAgcG9zaXRpb24g
PSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9MRkU7CisjZW5kaWYKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBBdWRpb0J1czo6Q2hhbm5lbFN1cnJvdW5kTGVmdDoKICAgICAgICAgcG9zaXRp
b24gPSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9SRUFSX0xFRlQ7CkBAIC0xMzQsMTEgKzE1
Myw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfYXVkaW9fc3JjX2NsYXNzX2luaXQoV2ViS2l0
V2ViQXVkaW9TcmNDbGFzcyogd2ViS2l0V2ViQXVkCiAgICAgR3N0RWxlbWVudENsYXNzKiBlbGVt
ZW50Q2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyh3ZWJLaXRXZWJBdWRpb1NyY0NsYXNzKTsKIAog
ICAgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUoZWxlbWVudENsYXNzLCBnc3Rf
c3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQoJnNyY1RlbXBsYXRlKSk7Ci0gICAgZ3N0X2VsZW1lbnRf
Y2xhc3Nfc2V0X2RldGFpbHNfc2ltcGxlKGVsZW1lbnRDbGFzcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIldlYktpdCBXZWJBdWRpbyBzb3VyY2UgZWxlbWVudCIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTb3VyY2UiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGFuZGxlcyBXZWJBdWRpbyBk
YXRhIGZyb20gV2ViQ29yZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29tPiIpOworICAgIHNldEdz
dEVsZW1lbnRDbGFzc01ldGFkYXRhKGVsZW1lbnRDbGFzcywgIldlYktpdCBXZWJBdWRpbyBzb3Vy
Y2UgZWxlbWVudCIsICJTb3VyY2UiLCAiSGFuZGxlcyBXZWJBdWRpbyBkYXRhIGZyb20gV2ViQ29y
ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBoaWxpcHBlIE5vcm1hbmQgPHBu
b3JtYW5kQGlnYWxpYS5jb20+Iik7CiAKICAgICBvYmplY3RDbGFzcy0+Y29uc3RydWN0ZWQgPSB3
ZWJLaXRXZWJBdWRpb1NyY0NvbnN0cnVjdGVkOwogICAgIG9iamVjdENsYXNzLT5maW5hbGl6ZSA9
IHdlYktpdFdlYkF1ZGlvU3JjRmluYWxpemU7CkBAIC0xODUsOSArMjAxLDE0IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfYXVkaW9fc3JjX2luaXQoV2ViS2l0V2ViQXVkaW9TcmMqIHNyYykKICAg
ICBwcml2LT5wcm92aWRlciA9IDA7CiAgICAgcHJpdi0+YnVzID0gMDsKIAorI2lmZGVmIEdTVF9B
UElfVkVSU0lPTl8xCisgICAgZ19yZWNfbXV0ZXhfaW5pdCgmcHJpdi0+bXV0ZXgpOworICAgIHBy
aXYtPnRhc2sgPSBnc3RfdGFza19uZXcocmVpbnRlcnByZXRfY2FzdDxHc3RUYXNrRnVuY3Rpb24+
KHdlYktpdFdlYkF1ZGlvU3JjTG9vcCksIHNyYywgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5v
dGlmeT4oZ19vYmplY3RfdW5yZWYpKTsKKyNlbHNlCiAgICAgZ19zdGF0aWNfcmVjX211dGV4X2lu
aXQoJnByaXYtPm11dGV4KTsKLQogICAgIHByaXYtPnRhc2sgPSBnc3RfdGFza19jcmVhdGUocmVp
bnRlcnByZXRfY2FzdDxHc3RUYXNrRnVuY3Rpb24+KHdlYktpdFdlYkF1ZGlvU3JjTG9vcCksIHNy
Yyk7CisjZW5kaWYKKwogICAgIGdzdF90YXNrX3NldF9sb2NrKHByaXYtPnRhc2suZ2V0KCksICZw
cml2LT5tdXRleCk7CiB9CiAKQEAgLTIyNCw3ICsyNDUsMTcgQEAgc3RhdGljIHZvaWQgd2ViS2l0
V2ViQXVkaW9TcmNDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIEdzdEVsZW1l
bnQqIGF1ZGlvY29udmVydCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXVkaW9jb252ZXJ0
IiwgMCk7CiAKICAgICAgICAgR1JlZlB0cjxHc3RDYXBzPiBtb25vQ2FwcyA9IGFkb3B0R1JlZihn
ZXRHU3RyZWFtZXJNb25vQXVkaW9DYXBzKHByaXYtPnNhbXBsZVJhdGUpKTsKKworI2lmZGVmIEdT
VF9BUElfVkVSU0lPTl8xCisgICAgICAgIEdzdEF1ZGlvQ2hhbm5lbFBvc2l0aW9uIGNoYW5uZWxQ
b3NpdGlvbiA9IHdlYktpdFdlYkF1ZGlvR1N0cmVhbWVyQ2hhbm5lbFBvc2l0aW9uKGNoYW5uZWxJ
bmRleCk7CisgICAgICAgIEdzdEF1ZGlvSW5mbyBpbmZvOworICAgICAgICBnc3RfYXVkaW9faW5m
b19mcm9tX2NhcHMoJmluZm8sIG1vbm9DYXBzLmdldCgpKTsKKyAgICAgICAgR1NUX0FVRElPX0lO
Rk9fUE9TSVRJT04oJmluZm8sIDApID0gY2hhbm5lbFBvc2l0aW9uOworICAgICAgICBHUmVmUHRy
PEdzdENhcHM+IGNhcHMgPSBhZG9wdEdSZWYoZ3N0X2F1ZGlvX2luZm9fdG9fY2FwcygmaW5mbykp
OworICAgICAgICBnX29iamVjdF9zZXQoY2Fwc2ZpbHRlciwgImNhcHMiLCBjYXBzLmdldCgpLCBO
VUxMKTsKKyNlbHNlCiAgICAgICAgIGdfb2JqZWN0X3NldChjYXBzZmlsdGVyLCAiY2FwcyIsIG1v
bm9DYXBzLmdldCgpLCBOVUxMKTsKKyNlbmRpZgogCiAgICAgICAgIC8vIENvbmZpZ3VyZSB0aGUg
cXVldWUgZm9yIG1pbmltYWwgbGF0ZW5jeS4KICAgICAgICAgZ19vYmplY3Rfc2V0KHF1ZXVlLCAi
bWF4LXNpemUtYnVmZmVycyIsIHN0YXRpY19jYXN0PGd1aW50PigxKSwgTlVMTCk7CkBAIC0yNTAs
NyArMjgxLDExIEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYkF1ZGlvU3JjRmluYWxpemUoR09iamVj
dCogb2JqZWN0KQogICAgIFdlYktpdFdlYkF1ZGlvU3JjKiBzcmMgPSBXRUJLSVRfV0VCX0FVRElP
X1NSQyhvYmplY3QpOwogICAgIFdlYktpdFdlYkF1ZGlvU291cmNlUHJpdmF0ZSogcHJpdiA9IHNy
Yy0+cHJpdjsKIAorI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgZ19yZWNfbXV0ZXhfY2xl
YXIoJnByaXYtPm11dGV4KTsKKyNlbHNlCiAgICAgZ19zdGF0aWNfcmVjX211dGV4X2ZyZWUoJnBy
aXYtPm11dGV4KTsKKyNlbmRpZgogCiAgICAgZ19zbGlzdF9mcmVlX2Z1bGwocHJpdi0+cGFkcywg
cmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZ3N0X29iamVjdF91bnJlZikpOwogCkBA
IC0zMjEsNyArMzU2LDE0IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYkF1ZGlvU3JjTG9vcChXZWJL
aXRXZWJBdWRpb1NyYyogc3JjKQogICAgICAgICBHc3RCdWZmZXIqIGNoYW5uZWxCdWZmZXIgPSBn
c3RfYnVmZmVyX25ld19hbmRfYWxsb2MoYnVmZmVyU2l6ZSk7CiAgICAgICAgIEFTU0VSVChjaGFu
bmVsQnVmZmVyKTsKICAgICAgICAgY2hhbm5lbEJ1ZmZlckxpc3QgPSBnX3NsaXN0X3ByZXBlbmQo
Y2hhbm5lbEJ1ZmZlckxpc3QsIGNoYW5uZWxCdWZmZXIpOworI2lmZGVmIEdTVF9BUElfVkVSU0lP
Tl8xCisgICAgICAgIEdzdE1hcEluZm8gaW5mbzsKKyAgICAgICAgZ3N0X2J1ZmZlcl9tYXAoY2hh
bm5lbEJ1ZmZlciwgJmluZm8sIEdTVF9NQVBfUkVBRCk7CisgICAgICAgIHByaXYtPmJ1cy0+c2V0
Q2hhbm5lbE1lbW9yeShpLCByZWludGVycHJldF9jYXN0PGZsb2F0Kj4oaW5mby5kYXRhKSwgcHJp
di0+ZnJhbWVzVG9QdWxsKTsKKyAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcChjaGFubmVsQnVmZmVy
LCAmaW5mbyk7CisjZWxzZQogICAgICAgICBwcml2LT5idXMtPnNldENoYW5uZWxNZW1vcnkoaSwg
cmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KEdTVF9CVUZGRVJfREFUQShjaGFubmVsQnVmZmVyKSks
IHByaXYtPmZyYW1lc1RvUHVsbCk7CisjZW5kaWYKICAgICB9CiAgICAgY2hhbm5lbEJ1ZmZlckxp
c3QgPSBnX3NsaXN0X3JldmVyc2UoY2hhbm5lbEJ1ZmZlckxpc3QpOwogCkBAIC0zMzIsMTMgKzM3
NCwxNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJBdWRpb1NyY0xvb3AoV2ViS2l0V2ViQXVkaW9T
cmMqIHNyYykKICAgICAgICAgR3N0UGFkKiBwYWQgPSBzdGF0aWNfY2FzdDxHc3RQYWQqPihnX3Ns
aXN0X250aF9kYXRhKHByaXYtPnBhZHMsIGkpKTsKICAgICAgICAgR3N0QnVmZmVyKiBjaGFubmVs
QnVmZmVyID0gc3RhdGljX2Nhc3Q8R3N0QnVmZmVyKj4oZ19zbGlzdF9udGhfZGF0YShjaGFubmVs
QnVmZmVyTGlzdCwgaSkpOwogCisjaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgICAgIEdS
ZWZQdHI8R3N0Q2Fwcz4gbW9ub0NhcHMgPSBhZG9wdEdSZWYoZ2V0R1N0cmVhbWVyTW9ub0F1ZGlv
Q2Fwcyhwcml2LT5zYW1wbGVSYXRlKSk7CiAgICAgICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZShtb25vQ2Fwcy5nZXQoKSwgMCk7CiAgICAgICAgIEdz
dEF1ZGlvQ2hhbm5lbFBvc2l0aW9uIGNoYW5uZWxQb3NpdGlvbiA9IHdlYktpdFdlYkF1ZGlvR1N0
cmVhbWVyQ2hhbm5lbFBvc2l0aW9uKGkpOwogICAgICAgICBnc3RfYXVkaW9fc2V0X2NoYW5uZWxf
cG9zaXRpb25zKHN0cnVjdHVyZSwgJmNoYW5uZWxQb3NpdGlvbik7CiAgICAgICAgIGdzdF9idWZm
ZXJfc2V0X2NhcHMoY2hhbm5lbEJ1ZmZlciwgbW9ub0NhcHMuZ2V0KCkpOworI2VuZGlmCiAKLSAg
ICAgICAgZ3N0X3BhZF9jaGFpbihwYWQsIGNoYW5uZWxCdWZmZXIpOworICAgICAgICBHc3RGbG93
UmV0dXJuIHJldCA9IGdzdF9wYWRfY2hhaW4ocGFkLCBjaGFubmVsQnVmZmVyKTsKKyAgICAgICAg
aWYgKHJldCAhPSBHU1RfRkxPV19PSykKKyAgICAgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SKHNy
YywgQ09SRSwgUEFELCAoIkludGVybmFsIFdlYkF1ZGlvU3JjIGVycm9yIiksICgiRmFpbGVkIHRv
IHB1c2ggYnVmZmVyIG9uICVzIiwgR1NUX0RFQlVHX1BBRF9OQU1FKHBhZCkpKTsKICAgICB9CiAK
ICAgICBnX3NsaXN0X2ZyZWUoY2hhbm5lbEJ1ZmZlckxpc3QpOwpAQCAtMzc1LDExICs0MjEsMTUg
QEAgc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHdlYktpdFdlYkF1ZGlvU3JjQ2hhbmdlU3Rh
dGUoR3N0RWxlbWVudCogZWxlbWVudCwgR3MKICAgICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKICAg
ICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fUEFVU0VEOgogICAgICAgICBHU1RfREVC
VUdfT0JKRUNUKHNyYywgIlJFQURZLT5QQVVTRUQiKTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBH
U1RfU1RBVEVfQ0hBTkdFX05PX1BSRVJPTEw7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1NU
X1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUExBWUlORzoKKyAgICAgICAgR1NUX0RFQlVHX09CSkVD
VChzcmMsICJQQVVTRUQtPlBMQVlJTkciKTsKICAgICAgICAgaWYgKCFnc3RfdGFza19zdGFydChz
cmMtPnByaXYtPnRhc2suZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHU1RfU1RB
VEVfQ0hBTkdFX0ZBSUxVUkU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX1NUQVRFX0NI
QU5HRV9QQVVTRURfVE9fUkVBRFk6Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUEFV
U0VELT5SRUFEWSIpOworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QTEFZSU5HX1RPX1BBVVNF
RDoKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQTEFZSU5HLT5QQVVTRUQiKTsKICAg
ICAgICAgaWYgKCFnc3RfdGFza19qb2luKHNyYy0+cHJpdi0+dGFzay5nZXQoKSkpCiAgICAgICAg
ICAgICByZXR1cm5WYWx1ZSA9IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRTsKICAgICAgICAgYnJl
YWs7Ci0tIAoxLjcuMTAuNA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179953</attachid>
            <date>2012-12-18 08:43:09 -0800</date>
            <delta_ts>2012-12-27 04:49:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>23343</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAzNGM2MzBiNjNkN2U5NDMwNGZmMTU0ZGJlZTM0MjRjYmY5NGNiODE0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDE4IERlYyAyMDEyIDE2OjA4OjU3ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDYyICsrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9G
RlRGcmFtZS5jcHAgICAgICAgICB8ICAgIDMgKwogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRkZURnJhbWUuaCAgICAgICAgICAgfCAgICA0ICsKIC4uLi9hdWRpby9nc3RyZWFtZXIvQXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgIHwgICAgOSArKwogLi4uL2F1ZGlvL2dzdHJlYW1l
ci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwICAgfCAgMTA5ICsrKysrKysrKysrKysrKysr
Ky0tCiAuLi4vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcCAgICB8
ICAgNzMgKysrKysrKysrKy0tLQogNiBmaWxlcyBjaGFuZ2VkLCAyMzYgaW5zZXJ0aW9ucygrKSwg
MjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGYzYWUxZmIuLjUyNzIyZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsNSArMSw2NyBAQAogMjAxMi0xMi0xOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3Jt
YW5kQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dTdHJlYW1lcl0gUG9ydCBXZWJBdWRpbyBiYWNr
ZW5kIHRvIDEuMCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDUyOTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQb3J0IHRoZSBBdWRpb0ZpbGVSZWFkZXIgYW5kIEF1ZGlvRGVzdGluYXRpb24gdG8g
R1N0cmVhbWVyIDEuMAorICAgICAgICBBUElzLiBJdCB3b3VsZCBiZSBwcmVmZXJhYmxlIHRvIHJl
bHkgb24gYXQgbGVhc3QgR1N0cmVhbWVyIDEuMC40CisgICAgICAgIGZvciB0aGlzIHRvIHdvcmsg
cHJvcGVybHkgYXMgdGhhdCByZWxlYXNlIGNvbnRhaW5zIHR3byBidWcgZml4ZXMKKyAgICAgICAg
Zm9yIHRoZSBkZWludGVybGVhdmUgYW5kIGludGVybGVhdmUgZWxlbWVudHMuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFt
ZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOiBEb24ndCByZXBvcnQgR3N0RkZURjMyCisgICAgICAgIHN0
cnVjdHVyZXMgYW55bW9yZSBiZWNhdXNlIHRoZXkncmUgb3BhcXVlIGluIEdTdHJlYW1lciAxLjAu
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaDogZ3N0ZmZ0ZjMyLmggaXMgcHJv
dGVjdGVkIGJ5CisgICAgICAgIEdfQkVHSU5fL0VORF9ERUNMUyBpbiBHU3RyZWFtZXIgMS4wIGFs
cmVhZHkuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRp
b25HU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKToKKyAg
ICAgICAgVGhlIHdhdnBhcnNlIGVsZW1lbnQgaW4gMS4wIGhhcyBubyBzb21ldGltZXMtcGFkcyBh
bnltb3JlLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFk
ZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoQXVkaW9GaWxlUmVhZGVyKTogVGhlIGRlY29kZWJp
bjIgZWxlbWVudCBoYXMgYmVlbiByZW5hbWVkIHRvCisgICAgICAgIGRlY29kZWJpbiBpbiBHU3Ry
ZWFtZXIgMS4wLgorICAgICAgICAoV2ViQ29yZTo6Z2V0R1N0cmVhbWVyQXVkaW9DYXBzKTogQXVk
aW8gY2FwcyBkZXNjcmlwdGlvbiBjaGFuZ2VkIGEKKyAgICAgICAgbG90IGluIEdTdHJlYW1lciAx
LjAsIHRoZSBmdW5jdGlvbiBub3cgaGFuZGxlcyBib3RoIEFQSXMuCisgICAgICAgIChXZWJDb3Jl
Ojpjb3B5R3N0cmVhbWVyQnVmZmVyc1RvQXVkaW9DaGFubmVsKTogQWRhcHRlZCB0bworICAgICAg
ICBHc3RCdWZmZXJMaXN0IGFuZCBHc3RCdWZmZXIgQVBJIGNoYW5nZXMuCisgICAgICAgIChXZWJD
b3JlOjpvbkFwcHNpbmtQdWxsUmVxdWlyZWRDYWxsYmFjayk6IFB1bGwgYSBzYW1wbGUgb3IgYnVm
ZmVyLAorICAgICAgICBkZXBlbmRpbmcgb24gd2hpY2ggQVBJIHdlIHVzZS4KKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6fkF1ZGlvRmlsZVJlYWRlcik6IFByb3RlY3QKKyAgICAg
ICAgR3N0QnVmZmVyTGlzdEl0ZXJhdG9ycyBpbiAwLjEwLW9ubHkgY29kZSBwYXRoLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmhhbmRsZVNh
bXBsZSk6IFB1bGwgYW4gYXVkaW8gc2FtcGxlCisgICAgICAgIGZyb20gYXBwc2luayBhbmQgaW5z
ZXJ0IGl0IGluIHRoZSBhcHByb3ByaWF0ZSBidWZmZXIgbGlzdC4KKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlTmV3RGVpbnRlcmxlYXZlUGFkKTogSGFuZGxlCisgICAg
ICAgIGFwcHNpbmsgQVBJIGNoYW5nZXMgZnJvbSBHU3RyZWFtZXIgMC4xMCB0byAxLjAuCisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmRlY29kZUF1ZGlvRm9yQnVzQ3JlYXRpb24p
OiBDcmVhdGUgdGhlCisgICAgICAgIGNvcnJlY3QgZGVjb2RlYmluIGVsZW1lbnQuCisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyk6IFByb3RlY3QgR3N0QnVmZmVy
TGlzdEl0ZXJhdG9ycworICAgICAgICBpbiAwLjEwLW9ubHkgY29kZSBwYXRoLgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5j
cHA6CisgICAgICAgIChfV2ViS2l0V2ViQXVkaW9Tb3VyY2VQcml2YXRlKTogR3N0VGFzayBpbiBH
U3RyZWFtZXIgMS4wIHVzZXMgYQorICAgICAgICBHUmVjTXV0ZXggaW5zdGVhZCBvZiBhIChkZXBy
ZWNhdGVkKSBHU3RhdGljUmVjTXV0ZXguCisgICAgICAgIChnZXRHU3RyZWFtZXJNb25vQXVkaW9D
YXBzKTogSGFuZGxlIGNhcHMgZGVzY3JpcHRpb24gY2hhbmdlcworICAgICAgICBiZXR3ZWVuIEdT
dHJlYW1lciAwLjEwIGFuZCAxLjAuCisgICAgICAgICh3ZWJLaXRXZWJBdWRpb0dTdHJlYW1lckNo
YW5uZWxQb3NpdGlvbik6IFBPU0lUSU9OX0xGRSBpbgorICAgICAgICBHU3RyZWFtZXIgMS4wIGlz
IG5vdyBQT1NJVElPTl9MRkUxLiBBbHNvIG1hcCBDaGFubmVsQ2VudGVyIHRvIGl0cworICAgICAg
ICBHU3RyZWFtZXIgZXF1aXZhbGVudC4KKyAgICAgICAgKHdlYmtpdF93ZWJfYXVkaW9fc3JjX2Ns
YXNzX2luaXQpOiBVc2UgZ2VuZXJpYyBzZXRHc3RFbGVtZW50Q2xhc3NNZXRhZGF0YS4KKyAgICAg
ICAgKHdlYmtpdF93ZWJfYXVkaW9fc3JjX2luaXQpOiBIYW5kbGUgR1JlY011dGV4IGluaXRpYWxp
c2F0aW9uLgorICAgICAgICAod2ViS2l0V2ViQXVkaW9TcmNDb25zdHJ1Y3RlZCk6IFNldCBjaGFu
bmVsIHBvc2l0aW9uIG9uCisgICAgICAgIGNhcHNmaWx0ZXIuIFRoaXMgaXMgZG9uZSBmb3IgR1N0
cmVhbWVyIDEuMCBjb2RlIHBhdGggb25seSBiZWNhdXNlCisgICAgICAgIGluIDAuMTAgdGhlIGNh
cHMgaGF2ZSBubyB3YXkgdG8gc3RvcmUgdGhpcyBpbmZvcm1hdGlvbi4KKyAgICAgICAgKHdlYktp
dFdlYkF1ZGlvU3JjRmluYWxpemUpOiBDbGVhciBHUmVjTXV0ZXguCisgICAgICAgICh3ZWJLaXRX
ZWJBdWRpb1NyY0xvb3ApOiBIYW5kbGUgR3N0QnVmZmVyIEFQSSBjaGFuZ2VzIGFuZCBhZGQgYW4K
KyAgICAgICAgZXJyb3IgY2hlY2sgaWYgYnVmZmVycyBjYW4ndCBiZSBjaGFpbmVkIHRvIHF1ZXVl
J3Mgc291cmNlIHBhZC4KKyAgICAgICAgKHdlYktpdFdlYkF1ZGlvU3JjQ2hhbmdlU3RhdGUpOiBB
cyBhZHZpc2VkIGluIHRoZSBHU3RyZWFtZXIgZG9jcywKKyAgICAgICAgZml4dXAgdGhlIHN0YXRl
IGNoYW5nZXMgZm9yIHRoaXMgbGl2ZSBzb3VyY2UgZWxlbWVudDogTk9fUFJFUk9MTAorICAgICAg
ICBpbiBSRUFEWS0+UEFVU0VEIGFuZCBzdGFydC9zdG9wIHRoZSBHc3RUYXNrIHdoZW4gZ29pbmcv
Y29taW5nCisgICAgICAgIHRvL2Zyb20gUExBWUlORy4KKworMjAxMi0xMi0xOCAgUGhpbGlwcGUg
Tm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKICAgICAgICAgW0dTdHJlYW1lcl0gR3N0
TWVzc2FnZSBoYW5kbGVyIGluIEF1ZGlvRGVzdGluYXRpb24KICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTI5MgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAKaW5kZXggZWVlNDVkZS4uYzM1MmI1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcApAQCAtMjc5LDggKzI3OSwxMSBA
QCB2b2lkIEZGVEZyYW1lOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1v
cnlPYmplY3RJbmZvKSBjb25zdAogI2VuZGlmIC8vIFVTRShXRUJBVURJT19GRk1QRUcpCiAKICNp
ZiBVU0UoV0VCQVVESU9fR1NUUkVBTUVSKQorI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAg
IC8vIFRoZSBHc3RGRlRGMzIgc3RydWN0dXJlIGlzIGV4cG9zZWQgcHVibGljbHkgaW4gR1N0cmVh
bWVyIDAuMTAgb25seS4KICAgICBpbmZvLmFkZE1lbWJlcihtX2ZmdCk7CiAgICAgaW5mby5hZGRN
ZW1iZXIobV9pbnZlcnNlRmZ0KTsKKyNlbmRpZgogICAgIGluZm8uYWRkTWVtYmVyKG1fY29tcGxl
eERhdGEpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fcmVhbERhdGEpOwogICAgIGluZm8uYWRkTWVt
YmVyKG1faW1hZ0RhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRkZURnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgK
aW5kZXggNmMxNTM0OS4uYjQ4M2NiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRkZURnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9G
RlRGcmFtZS5oCkBAIC00OSw5ICs0OSwxMyBAQAogCiAjaWYgVVNFKFdFQkFVRElPX0dTVFJFQU1F
UikKICNpbmNsdWRlIDxnbGliLmg+CisjaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCiBHX0JFR0lO
X0RFQ0xTCisjZW5kaWYKICNpbmNsdWRlIDxnc3QvZmZ0L2dzdGZmdGYzMi5oPgorI2lmbmRlZiBH
U1RfQVBJX1ZFUlNJT05fMQogR19FTkRfREVDTFMKKyNlbmRpZgogI2VuZGlmIC8vIFVTRShXRUJB
VURJT19HU1RSRUFNRVIpCiAKICNpZiBVU0UoV0VCQVVESU9fRkZNUEVHKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1
ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IGZhMjgyMWYuLjg2NGVlM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3Rp
bmF0aW9uR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKQEAgLTUxLDEwICs1MSwxMiBA
QCBmbG9hdCBBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKQogICAgIHJldHVy
biA0NDEwMDsKIH0KIAorI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogc3RhdGljIHZvaWQgb25H
U3RyZWFtZXJXYXZwYXJzZVBhZEFkZGVkQ2FsbGJhY2soR3N0RWxlbWVudCogZWxlbWVudCwgR3N0
UGFkKiBwYWQsIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIqIGRlc3RpbmF0aW9uKQogewogICAg
IGRlc3RpbmF0aW9uLT5maW5pc2hCdWlsZGluZ1BpcGVsaW5lQWZ0ZXJXYXZQYXJzZXJQYWRSZWFk
eShwYWQpOwogfQorI2VuZGlmCiAKIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVz
dGluYXRpb25HU3RyZWFtZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgZmxvYXQgc2FtcGxl
UmF0ZSkKICAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCkBAIC04MCw5ICs4MiwxNiBAQCBBdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKEF1ZGlvSU9D
YWxsYmFjayYgY2FsbGJhY2ssCiAgICAgaWYgKCFtX3dhdlBhcnNlckF2YWlsYWJsZSkKICAgICAg
ICAgcmV0dXJuOwogCisjaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgZ19zaWduYWxfY29u
bmVjdCh3YXZQYXJzZXIsICJwYWQtYWRkZWQiLCBHX0NBTExCQUNLKG9uR1N0cmVhbWVyV2F2cGFy
c2VQYWRBZGRlZENhbGxiYWNrKSwgdGhpcyk7CisjZW5kaWYKICAgICBnc3RfYmluX2FkZF9tYW55
KEdTVF9CSU4obV9waXBlbGluZSksIHdlYmtpdEF1ZGlvU3JjLCB3YXZQYXJzZXIsIE5VTEwpOwog
ICAgIGdzdF9lbGVtZW50X2xpbmtfcGFkc19mdWxsKHdlYmtpdEF1ZGlvU3JjLCAic3JjIiwgd2F2
UGFyc2VyLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKKworI2lmZGVmIEdT
VF9BUElfVkVSU0lPTl8xCisgICAgR1JlZlB0cjxHc3RQYWQ+IHNyY1BhZCA9IGFkb3B0R1JlZihn
c3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCh3YXZQYXJzZXIsICJzcmMiKSk7CisgICAgZmluaXNo
QnVpbGRpbmdQaXBlbGluZUFmdGVyV2F2UGFyc2VyUGFkUmVhZHkoc3JjUGFkLmdldCgpKTsKKyNl
bmRpZgogfQogCiBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjp+QXVkaW9EZXN0aW5hdGlvbkdT
dHJlYW1lcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCmluZGV4IDNl
YWI4NWIuLjhmMzBjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3Bw
CkBAIC0zMyw3ICszMywxMSBAQAogCiAjaW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUgPGdz
dC9hcHAvZ3N0YXBwc2luay5oPgorI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisjaW5jbHVkZSA8
Z3N0L2F1ZGlvL2F1ZGlvLmg+CisjZWxzZQogI2luY2x1ZGUgPGdzdC9hdWRpby9tdWx0aWNoYW5u
ZWwuaD4KKyNlbmRpZgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvcGJ1dGls
cy9wYnV0aWxzLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC00MSw2ICs0NSwx
MiBAQAogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HUmVmUHRyLmg+CiAKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorc3RhdGljIGNvbnN0
IGNoYXIqIGdEZWNvZGViaW5OYW1lID0gImRlY29kZWJpbiI7CisjZWxzZQorc3RhdGljIGNvbnN0
IGNoYXIqIGdEZWNvZGViaW5OYW1lID0gImRlY29kZWJpbjIiOworI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9GaWxlUmVhZGVyIHsKQEAgLTUyLDcgKzYyLDExIEBA
IHB1YmxpYzoKIAogICAgIFBhc3NPd25QdHI8QXVkaW9CdXM+IGNyZWF0ZUJ1cyhmbG9hdCBzYW1w
bGVSYXRlLCBib29sIG1peFRvTW9ubyk7CiAKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAg
IEdzdEZsb3dSZXR1cm4gaGFuZGxlU2FtcGxlKEdzdEFwcFNpbmsqKTsKKyNlbHNlCiAgICAgR3N0
Rmxvd1JldHVybiBoYW5kbGVCdWZmZXIoR3N0QXBwU2luayopOworI2VuZGlmCiAgICAgZ2Jvb2xl
YW4gaGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKik7CiAgICAgdm9pZCBoYW5kbGVOZXdEZWludGVy
bGVhdmVQYWQoR3N0UGFkKik7CiAgICAgdm9pZCBkZWludGVybGVhdmVQYWRzQ29uZmlndXJlZCgp
OwpAQCAtNjYsOSArODAsMTMgQEAgcHJpdmF0ZToKIAogICAgIGZsb2F0IG1fc2FtcGxlUmF0ZTsK
ICAgICBHc3RCdWZmZXJMaXN0KiBtX2Zyb250TGVmdEJ1ZmZlcnM7Ci0gICAgR3N0QnVmZmVyTGlz
dEl0ZXJhdG9yKiBtX2Zyb250TGVmdEJ1ZmZlcnNJdGVyYXRvcjsKICAgICBHc3RCdWZmZXJMaXN0
KiBtX2Zyb250UmlnaHRCdWZmZXJzOworCisjaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAg
R3N0QnVmZmVyTGlzdEl0ZXJhdG9yKiBtX2Zyb250TGVmdEJ1ZmZlcnNJdGVyYXRvcjsKICAgICBH
c3RCdWZmZXJMaXN0SXRlcmF0b3IqIG1fZnJvbnRSaWdodEJ1ZmZlcnNJdGVyYXRvcjsKKyNlbmRp
ZgorCiAgICAgR3N0RWxlbWVudCogbV9waXBlbGluZTsKICAgICB1bnNpZ25lZCBtX2NoYW5uZWxT
aXplOwogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9kZWNvZGViaW47CkBAIC03OSwxMSArOTcs
MjggQEAgcHJpdmF0ZToKIAogc3RhdGljIEdzdENhcHMqIGdldEdTdHJlYW1lckF1ZGlvQ2Fwcyhp
bnQgY2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CisjaWZkZWYgR1NUX0FQSV9WRVJTSU9O
XzEKKyAgICByZXR1cm4gZ3N0X2NhcHNfbmV3X3NpbXBsZSgiYXVkaW8veC1yYXciLCAicmF0ZSIs
IEdfVFlQRV9JTlQsIHN0YXRpY19jYXN0PGludD4oc2FtcGxlUmF0ZSksICJjaGFubmVscyIsIEdf
VFlQRV9JTlQsIGNoYW5uZWxzLCAiZm9ybWF0IiwgR19UWVBFX1NUUklORywgZ3N0X2F1ZGlvX2Zv
cm1hdF90b19zdHJpbmcoR1NUX0FVRElPX0ZPUk1BVF9GMzIpLCAibGF5b3V0IiwgR19UWVBFX1NU
UklORywgImludGVybGVhdmVkIiwgTlVMTCk7CisjZWxzZQogICAgIHJldHVybiBnc3RfY2Fwc19u
ZXdfc2ltcGxlKCJhdWRpby94LXJhdy1mbG9hdCIsICJyYXRlIiwgR19UWVBFX0lOVCwgc3RhdGlj
X2Nhc3Q8aW50PihzYW1wbGVSYXRlKSwgImNoYW5uZWxzIiwgR19UWVBFX0lOVCwgY2hhbm5lbHMs
ICJlbmRpYW5uZXNzIiwgR19UWVBFX0lOVCwgR19CWVRFX09SREVSLCAid2lkdGgiLCBHX1RZUEVf
SU5ULCAzMiwgTlVMTCk7CisjZW5kaWYKIH0KIAogc3RhdGljIHZvaWQgY29weUdzdHJlYW1lckJ1
ZmZlcnNUb0F1ZGlvQ2hhbm5lbChHc3RCdWZmZXJMaXN0KiBidWZmZXJzLCBBdWRpb0NoYW5uZWwq
IGF1ZGlvQ2hhbm5lbCkKIHsKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgIGdzaXplIG9m
ZnNldCA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdzdF9idWZmZXJfbGlzdF9s
ZW5ndGgoYnVmZmVycyk7IGkrKykgeworICAgICAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9i
dWZmZXJfbGlzdF9nZXQoYnVmZmVycywgaSk7CisgICAgICAgIGlmIChidWZmZXIpIHsKKyAgICAg
ICAgICAgIEdzdE1hcEluZm8gaW5mbzsKKyAgICAgICAgICAgIGdzdF9idWZmZXJfbWFwKGJ1ZmZl
ciwgJmluZm8sIEdTVF9NQVBfUkVBRCk7CisgICAgICAgICAgICBtZW1jcHkoYXVkaW9DaGFubmVs
LT5tdXRhYmxlRGF0YSgpICsgb2Zmc2V0LCByZWludGVycHJldF9jYXN0PGZsb2F0Kj4oaW5mby5k
YXRhKSwgaW5mby5zaXplKTsKKyAgICAgICAgICAgIG9mZnNldCArPSBpbmZvLnNpemUgLyBzaXpl
b2YoZmxvYXQpOworICAgICAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcChidWZmZXIsICZpbmZvKTsK
KyAgICAgICAgfQorICAgIH0KKyNlbHNlCiAgICAgR3N0QnVmZmVyTGlzdEl0ZXJhdG9yKiBpdGVy
ID0gZ3N0X2J1ZmZlcl9saXN0X2l0ZXJhdGUoYnVmZmVycyk7CiAgICAgZ3N0X2J1ZmZlcl9saXN0
X2l0ZXJhdG9yX25leHRfZ3JvdXAoaXRlcik7CiAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3Rf
YnVmZmVyX2xpc3RfaXRlcmF0b3JfbWVyZ2VfZ3JvdXAoaXRlcik7CkBAIC05MywxMSArMTI4LDE2
IEBAIHN0YXRpYyB2b2lkIGNvcHlHc3RyZWFtZXJCdWZmZXJzVG9BdWRpb0NoYW5uZWwoR3N0QnVm
ZmVyTGlzdCogYnVmZmVycywgQXVkaW9DaGFuCiAgICAgfQogCiAgICAgZ3N0X2J1ZmZlcl9saXN0
X2l0ZXJhdG9yX2ZyZWUoaXRlcik7CisjZW5kaWYKIH0KIAotc3RhdGljIEdzdEZsb3dSZXR1cm4g
b25BcHBzaW5rTmV3QnVmZmVyQ2FsbGJhY2soR3N0QXBwU2luayogc2luaywgZ3BvaW50ZXIgdXNl
ckRhdGEpCitzdGF0aWMgR3N0Rmxvd1JldHVybiBvbkFwcHNpbmtQdWxsUmVxdWlyZWRDYWxsYmFj
ayhHc3RBcHBTaW5rKiBzaW5rLCBncG9pbnRlciB1c2VyRGF0YSkKIHsKKyNpZmRlZiBHU1RfQVBJ
X1ZFUlNJT05fMQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdWRpb0ZpbGVSZWFkZXIqPih1c2Vy
RGF0YSktPmhhbmRsZVNhbXBsZShzaW5rKTsKKyNlbHNlCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEF1ZGlvRmlsZVJlYWRlcio+KHVzZXJEYXRhKS0+aGFuZGxlQnVmZmVyKHNpbmspOworI2VuZGlm
CiB9CiAKIGdib29sZWFuIG1lc3NhZ2VDYWxsYmFjayhHc3RCdXMqIGJ1cywgR3N0TWVzc2FnZSog
bWVzc2FnZSwgQXVkaW9GaWxlUmVhZGVyKiByZWFkZXIpCkBAIC0xNjUsMTIgKzIwNSw1OSBAQCBB
dWRpb0ZpbGVSZWFkZXI6On5BdWRpb0ZpbGVSZWFkZXIoKQogICAgICAgICBtX2RlSW50ZXJsZWF2
ZS5jbGVhcigpOwogICAgIH0KIAorI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIGdzdF9i
dWZmZXJfbGlzdF9pdGVyYXRvcl9mcmVlKG1fZnJvbnRMZWZ0QnVmZmVyc0l0ZXJhdG9yKTsKICAg
ICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfZnJlZShtX2Zyb250UmlnaHRCdWZmZXJzSXRlcmF0
b3IpOworI2VuZGlmCiAgICAgZ3N0X2J1ZmZlcl9saXN0X3VucmVmKG1fZnJvbnRMZWZ0QnVmZmVy
cyk7CiAgICAgZ3N0X2J1ZmZlcl9saXN0X3VucmVmKG1fZnJvbnRSaWdodEJ1ZmZlcnMpOwogfQog
CisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKK0dzdEZsb3dSZXR1cm4gQXVkaW9GaWxlUmVhZGVy
OjpoYW5kbGVTYW1wbGUoR3N0QXBwU2luayogc2luaykKK3sKKyAgICBHc3RTYW1wbGUqIHNhbXBs
ZSA9IGdzdF9hcHBfc2lua19wdWxsX3NhbXBsZShzaW5rKTsKKyAgICBpZiAoIXNhbXBsZSkKKyAg
ICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworCisgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBn
c3Rfc2FtcGxlX2dldF9idWZmZXIoc2FtcGxlKTsKKyAgICBpZiAoIWJ1ZmZlcikgeworICAgICAg
ICBnc3Rfc2FtcGxlX3VucmVmKHNhbXBsZSk7CisgICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJP
UjsKKyAgICB9CisKKyAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2FwcyhzYW1w
bGUpOworICAgIGlmICghY2FwcykgeworICAgICAgICBnc3Rfc2FtcGxlX3VucmVmKHNhbXBsZSk7
CisgICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKyAgICB9CisKKyAgICBHc3RBdWRpb0lu
Zm8gaW5mbzsKKyAgICBnc3RfYXVkaW9faW5mb19mcm9tX2NhcHMoJmluZm8sIGNhcHMpOworICAg
IGludCBmcmFtZXMgPSBHU1RfQ0xPQ0tfVElNRV9UT19GUkFNRVMoR1NUX0JVRkZFUl9EVVJBVElP
TihidWZmZXIpLCBHU1RfQVVESU9fSU5GT19SQVRFKCZpbmZvKSk7CisgICAgR3N0QnVmZmVyKiBk
dXBsaWNhdGVCdWZmZXIgPSBnc3RfYnVmZmVyX2NvcHkoYnVmZmVyKTsKKworICAgIC8vIENoZWNr
IHRoZSBmaXJzdCBhdWRpbyBjaGFubmVsLiBUaGUgYnVmZmVyIGlzIHN1cHBvc2VkIHRvIHN0b3Jl
CisgICAgLy8gZGF0YSBvZiBhIHNpbmdsZSBjaGFubmVsIGFueXdheS4KKyAgICBzd2l0Y2ggKEdT
VF9BVURJT19JTkZPX1BPU0lUSU9OKCZpbmZvLCAwKSkgeworICAgIGNhc2UgR1NUX0FVRElPX0NI
QU5ORUxfUE9TSVRJT05fRlJPTlRfTEVGVDoKKyAgICAgICAgZ3N0X2J1ZmZlcl9saXN0X2FkZCht
X2Zyb250TGVmdEJ1ZmZlcnMsIGR1cGxpY2F0ZUJ1ZmZlcik7CisgICAgICAgIG1fY2hhbm5lbFNp
emUgKz0gZnJhbWVzOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9BVURJT19DSEFOTkVM
X1BPU0lUSU9OX0ZST05UX1JJR0hUOgorICAgICAgICBnc3RfYnVmZmVyX2xpc3RfYWRkKG1fZnJv
bnRSaWdodEJ1ZmZlcnMsIGR1cGxpY2F0ZUJ1ZmZlcik7CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGdzdF9zYW1wbGVfdW5yZWYoc2Ft
cGxlKTsKKyAgICByZXR1cm4gR1NUX0ZMT1dfT0s7CisKK30KKyNlbmRpZgorCisjaWZuZGVmIEdT
VF9BUElfVkVSU0lPTl8xCiBHc3RGbG93UmV0dXJuIEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlQnVm
ZmVyKEdzdEFwcFNpbmsqIHNpbmspCiB7CiAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RfYXBw
X3NpbmtfcHVsbF9idWZmZXIoc2luayk7CkBAIC0yMjQsNiArMzExLDcgQEAgR3N0Rmxvd1JldHVy
biBBdWRpb0ZpbGVSZWFkZXI6OmhhbmRsZUJ1ZmZlcihHc3RBcHBTaW5rKiBzaW5rKQogICAgIGdz
dF9jYXBzX3VucmVmKGNhcHMpOwogICAgIHJldHVybiBHU1RfRkxPV19PSzsKIH0KKyNlbmRpZgog
CiBnYm9vbGVhbiBBdWRpb0ZpbGVSZWFkZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVz
c2FnZSkKIHsKQEAgLTI2MiwxNiArMzUwLDE2IEBAIHZvaWQgQXVkaW9GaWxlUmVhZGVyOjpoYW5k
bGVOZXdEZWludGVybGVhdmVQYWQoR3N0UGFkKiBwYWQpCiAgICAgR3N0QXBwU2lua0NhbGxiYWNr
cyBjYWxsYmFja3M7CiAgICAgY2FsbGJhY2tzLmVvcyA9IDA7CiAgICAgY2FsbGJhY2tzLm5ld19w
cmVyb2xsID0gMDsKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgIGNhbGxiYWNrcy5uZXdf
c2FtcGxlID0gb25BcHBzaW5rUHVsbFJlcXVpcmVkQ2FsbGJhY2s7CisjZWxzZQogICAgIGNhbGxi
YWNrcy5uZXdfYnVmZmVyX2xpc3QgPSAwOwotICAgIGNhbGxiYWNrcy5uZXdfYnVmZmVyID0gb25B
cHBzaW5rTmV3QnVmZmVyQ2FsbGJhY2s7CisgICAgY2FsbGJhY2tzLm5ld19idWZmZXIgPSBvbkFw
cHNpbmtQdWxsUmVxdWlyZWRDYWxsYmFjazsKKyNlbmRpZgogICAgIGdzdF9hcHBfc2lua19zZXRf
Y2FsbGJhY2tzKEdTVF9BUFBfU0lOSyhzaW5rKSwgJmNhbGxiYWNrcywgdGhpcywgMCk7CiAKICAg
ICBnX29iamVjdF9zZXQoc2luaywgInN5bmMiLCBGQUxTRSwgTlVMTCk7CiAKLSAgICBHc3RDYXBz
KiBjYXBzID0gZ2V0R1N0cmVhbWVyQXVkaW9DYXBzKDEsIG1fc2FtcGxlUmF0ZSk7Ci0gICAgZ3N0
X2FwcF9zaW5rX3NldF9jYXBzKEdTVF9BUFBfU0lOSyhzaW5rKSwgY2Fwcyk7Ci0gICAgZ3N0X2Nh
cHNfdW5yZWYoY2Fwcyk7Ci0KICAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU4obV9waXBlbGlu
ZSksIHF1ZXVlLCBzaW5rLCBOVUxMKTsKIAogICAgIEdzdFBhZCogc2lua1BhZCA9IGdzdF9lbGVt
ZW50X2dldF9zdGF0aWNfcGFkKHF1ZXVlLCAic2luayIpOwpAQCAtMzQ2LDcgKzQzNCw3IEBAIHZv
aWQgQXVkaW9GaWxlUmVhZGVyOjpkZWNvZGVBdWRpb0ZvckJ1c0NyZWF0aW9uKCkKICAgICAgICAg
Z19vYmplY3Rfc2V0KHNvdXJjZSwgImxvY2F0aW9uIiwgbV9maWxlUGF0aCwgTlVMTCk7CiAgICAg
fQogCi0gICAgbV9kZWNvZGViaW4gPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImRlY29kZWJp
bjIiLCAiZGVjb2RlYmluIik7CisgICAgbV9kZWNvZGViaW4gPSBnc3RfZWxlbWVudF9mYWN0b3J5
X21ha2UoZ0RlY29kZWJpbk5hbWUsICJkZWNvZGViaW4iKTsKICAgICBnX3NpZ25hbF9jb25uZWN0
KG1fZGVjb2RlYmluLmdldCgpLCAicGFkLWFkZGVkIiwgR19DQUxMQkFDSyhvbkdTdHJlYW1lckRl
Y29kZWJpblBhZEFkZGVkQ2FsbGJhY2spLCB0aGlzKTsKIAogICAgIGdzdF9iaW5fYWRkX21hbnko
R1NUX0JJTihtX3BpcGVsaW5lKSwgc291cmNlLCBtX2RlY29kZWJpbi5nZXQoKSwgTlVMTCk7CkBA
IC0zNTksMTIgKzQ0NywxNSBAQCBQYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6
OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVSYXRlLCBib29sIG1peFRvTW9ubwogICAgIG1fc2FtcGxl
UmF0ZSA9IHNhbXBsZVJhdGU7CiAKICAgICBtX2Zyb250TGVmdEJ1ZmZlcnMgPSBnc3RfYnVmZmVy
X2xpc3RfbmV3KCk7CisgICAgbV9mcm9udFJpZ2h0QnVmZmVycyA9IGdzdF9idWZmZXJfbGlzdF9u
ZXcoKTsKKworI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIG1fZnJvbnRMZWZ0QnVmZmVy
c0l0ZXJhdG9yID0gZ3N0X2J1ZmZlcl9saXN0X2l0ZXJhdGUobV9mcm9udExlZnRCdWZmZXJzKTsK
ICAgICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfYWRkX2dyb3VwKG1fZnJvbnRMZWZ0QnVmZmVy
c0l0ZXJhdG9yKTsKIAotICAgIG1fZnJvbnRSaWdodEJ1ZmZlcnMgPSBnc3RfYnVmZmVyX2xpc3Rf
bmV3KCk7CiAgICAgbV9mcm9udFJpZ2h0QnVmZmVyc0l0ZXJhdG9yID0gZ3N0X2J1ZmZlcl9saXN0
X2l0ZXJhdGUobV9mcm9udFJpZ2h0QnVmZmVycyk7CiAgICAgZ3N0X2J1ZmZlcl9saXN0X2l0ZXJh
dG9yX2FkZF9ncm91cChtX2Zyb250UmlnaHRCdWZmZXJzSXRlcmF0b3IpOworI2VuZGlmCiAKICAg
ICBHUmVmUHRyPEdNYWluQ29udGV4dD4gY29udGV4dCA9IGdfbWFpbl9jb250ZXh0X25ldygpOwog
ICAgIGdfbWFpbl9jb250ZXh0X3B1c2hfdGhyZWFkX2RlZmF1bHQoY29udGV4dC5nZXQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0
V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA3NzE4
NDFkLi5hNDNkOTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJl
YW1lci5jcHAKQEAgLTI3LDcgKzI3LDExIEBACiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0
ci5oPgogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJHU3RyZWFtZXJW
ZXJzaW9uaW5nLmgiCisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyNpbmNsdWRlIDxnc3QvYXVk
aW8vYXVkaW8uaD4KKyNlbHNlCiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL211bHRpY2hhbm5lbC5oPgor
I2VuZGlmCiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvcGJ1dGlscy5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKQEAgLTQ1LDYgKzQ5LDcgQEAgc3RydWN0IF9XZWJLaXRXZWJBdWRpb1NyY0Ns
YXNzIHsKICAgICBHc3RCaW5DbGFzcyBwYXJlbnRDbGFzczsKIH07CiAKKyNkZWZpbmUgV0VCS0lU
X1dFQl9BVURJT19TUkNfR0VUX1BSSVZBVEUob2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklW
QVRFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJBVURJT19TUkMsIFdlYktpdFdlYkF1ZGlvU291cmNl
UHJpdmF0ZSkpCiBzdHJ1Y3QgX1dlYktpdFdlYkF1ZGlvU291cmNlUHJpdmF0ZSB7CiAgICAgZ2Zs
b2F0IHNhbXBsZVJhdGU7CiAgICAgQXVkaW9CdXMqIGJ1czsKQEAgLTU1LDcgKzYwLDExIEBAIHN0
cnVjdCBfV2ViS2l0V2ViQXVkaW9Tb3VyY2VQcml2YXRlIHsKICAgICBHUmVmUHRyPEdzdEVsZW1l
bnQ+IHdhdkVuY29kZXI7CiAKICAgICBHUmVmUHRyPEdzdFRhc2s+IHRhc2s7CisjaWZkZWYgR1NU
X0FQSV9WRVJTSU9OXzEKKyAgICBHUmVjTXV0ZXggbXV0ZXg7CisjZWxzZQogICAgIEdTdGF0aWNS
ZWNNdXRleCBtdXRleDsKKyNlbmRpZgogCiAgICAgR1NMaXN0KiBwYWRzOyAvLyBMaXN0IG9mIHF1
ZXVlIHNpbmsgcGFkcy4gT25lIHF1ZXVlIGZvciBlYWNoIHBsYW5hciBhdWRpbyBjaGFubmVsLgog
ICAgIEdzdFBhZCogc291cmNlUGFkOyAvLyBzcmMgcGFkIG9mIHRoZSBlbGVtZW50LCBpbnRlcmxl
YXZlZCB3YXYgZGF0YSBpcyBwdXNoZWQgdG8gaXQuCkBAIC04NSwxMCArOTQsMTEgQEAgc3RhdGlj
IHZvaWQgd2ViS2l0V2ViQXVkaW9TcmNMb29wKFdlYktpdFdlYkF1ZGlvU3JjKik7CiAKIHN0YXRp
YyBHc3RDYXBzKiBnZXRHU3RyZWFtZXJNb25vQXVkaW9DYXBzKGZsb2F0IHNhbXBsZVJhdGUpCiB7
Ci0gICAgcmV0dXJuIGdzdF9jYXBzX25ld19zaW1wbGUoImF1ZGlvL3gtcmF3LWZsb2F0IiwgInJh
dGUiLCBHX1RZUEVfSU5ULCBzdGF0aWNfY2FzdDxpbnQ+KHNhbXBsZVJhdGUpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJjaGFubmVscyIsIEdfVFlQRV9JTlQsIDEsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImVuZGlhbm5lc3MiLCBHX1RZUEVfSU5ULCBHX0JZVEVf
T1JERVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIiwgR19UWVBFX0lO
VCwgMzIsIE5VTEwpOworI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgcmV0dXJuIGdzdF9j
YXBzX25ld19zaW1wbGUoImF1ZGlvL3gtcmF3IiwgInJhdGUiLCBHX1RZUEVfSU5ULCBzdGF0aWNf
Y2FzdDxpbnQ+KHNhbXBsZVJhdGUpLCAiY2hhbm5lbHMiLCBHX1RZUEVfSU5ULCAxLCAiZm9ybWF0
IiwgR19UWVBFX1NUUklORywgZ3N0X2F1ZGlvX2Zvcm1hdF90b19zdHJpbmcoR1NUX0FVRElPX0ZP
Uk1BVF9GMzIpLCAibGF5b3V0IiwgR19UWVBFX1NUUklORywgIm5vbi1pbnRlcmxlYXZlZCIsIE5V
TEwpOworI2Vsc2UKKyAgICByZXR1cm4gZ3N0X2NhcHNfbmV3X3NpbXBsZSgiYXVkaW8veC1yYXct
ZmxvYXQiLCAicmF0ZSIsIEdfVFlQRV9JTlQsIHN0YXRpY19jYXN0PGludD4oc2FtcGxlUmF0ZSks
ICJjaGFubmVscyIsIEdfVFlQRV9JTlQsIDEsICJlbmRpYW5uZXNzIiwgR19UWVBFX0lOVCwgR19C
WVRFX09SREVSLCAid2lkdGgiLCBHX1RZUEVfSU5ULCAzMiwgTlVMTCk7CisjZW5kaWYKIH0KIAog
c3RhdGljIEdzdEF1ZGlvQ2hhbm5lbFBvc2l0aW9uIHdlYktpdFdlYkF1ZGlvR1N0cmVhbWVyQ2hh
bm5lbFBvc2l0aW9uKGludCBjaGFubmVsSW5kZXgpCkBAIC0xMDMsMTEgKzExMywxNCBAQCBzdGF0
aWMgR3N0QXVkaW9DaGFubmVsUG9zaXRpb24gd2ViS2l0V2ViQXVkaW9HU3RyZWFtZXJDaGFubmVs
UG9zaXRpb24oaW50IGNoYW5uZQogICAgICAgICBwb3NpdGlvbiA9IEdTVF9BVURJT19DSEFOTkVM
X1BPU0lUSU9OX0ZST05UX1JJR0hUOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEF1ZGlvQnVz
OjpDaGFubmVsQ2VudGVyOgotICAgICAgICAvLyBDZW50ZXIgYW5kIG1vbm8gYXJlIHRoZSBzYW1l
LgotICAgICAgICBwb3NpdGlvbiA9IEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX01P
Tk87CisgICAgICAgIHBvc2l0aW9uID0gR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRf
Q0VOVEVSOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEF1ZGlvQnVzOjpDaGFubmVsTEZFOgor
I2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgICAgIHBvc2l0aW9uID0gR1NUX0FVRElPX0NI
QU5ORUxfUE9TSVRJT05fTEZFMTsKKyNlbHNlCiAgICAgICAgIHBvc2l0aW9uID0gR1NUX0FVRElP
X0NIQU5ORUxfUE9TSVRJT05fTEZFOworI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
QXVkaW9CdXM6OkNoYW5uZWxTdXJyb3VuZExlZnQ6CiAgICAgICAgIHBvc2l0aW9uID0gR1NUX0FV
RElPX0NIQU5ORUxfUE9TSVRJT05fUkVBUl9MRUZUOwpAQCAtMTM0LDExICsxNDcsNyBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX2F1ZGlvX3NyY19jbGFzc19pbml0KFdlYktpdFdlYkF1ZGlvU3Jj
Q2xhc3MqIHdlYktpdFdlYkF1ZAogICAgIEdzdEVsZW1lbnRDbGFzcyogZWxlbWVudENsYXNzID0g
R1NUX0VMRU1FTlRfQ0xBU1Mod2ViS2l0V2ViQXVkaW9TcmNDbGFzcyk7CiAKICAgICBnc3RfZWxl
bWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlKGVsZW1lbnRDbGFzcywgZ3N0X3N0YXRpY19wYWRf
dGVtcGxhdGVfZ2V0KCZzcmNUZW1wbGF0ZSkpOwotICAgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9k
ZXRhaWxzX3NpbXBsZShlbGVtZW50Q2xhc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJXZWJLaXQgV2ViQXVkaW8gc291cmNlIGVsZW1lbnQiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU291cmNlIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhhbmRsZXMgV2ViQXVkaW8gZGF0YSBmcm9tIFdl
YkNvcmUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGhpbGlw
cGUgTm9ybWFuZCA8cG5vcm1hbmRAaWdhbGlhLmNvbT4iKTsKKyAgICBzZXRHc3RFbGVtZW50Q2xh
c3NNZXRhZGF0YShlbGVtZW50Q2xhc3MsICJXZWJLaXQgV2ViQXVkaW8gc291cmNlIGVsZW1lbnQi
LCAiU291cmNlIiwgIkhhbmRsZXMgV2ViQXVkaW8gZGF0YSBmcm9tIFdlYkNvcmUiLCAiUGhpbGlw
cGUgTm9ybWFuZCA8cG5vcm1hbmRAaWdhbGlhLmNvbT4iKTsKIAogICAgIG9iamVjdENsYXNzLT5j
b25zdHJ1Y3RlZCA9IHdlYktpdFdlYkF1ZGlvU3JjQ29uc3RydWN0ZWQ7CiAgICAgb2JqZWN0Q2xh
c3MtPmZpbmFsaXplID0gd2ViS2l0V2ViQXVkaW9TcmNGaW5hbGl6ZTsKQEAgLTE4NSw5ICsxOTQs
MTQgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9hdWRpb19zcmNfaW5pdChXZWJLaXRXZWJBdWRp
b1NyYyogc3JjKQogICAgIHByaXYtPnByb3ZpZGVyID0gMDsKICAgICBwcml2LT5idXMgPSAwOwog
CisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICBnX3JlY19tdXRleF9pbml0KCZwcml2LT5t
dXRleCk7CisgICAgcHJpdi0+dGFzayA9IGdzdF90YXNrX25ldyhyZWludGVycHJldF9jYXN0PEdz
dFRhc2tGdW5jdGlvbj4od2ViS2l0V2ViQXVkaW9TcmNMb29wKSwgc3JjLCByZWludGVycHJldF9j
YXN0PEdEZXN0cm95Tm90aWZ5PihnX29iamVjdF91bnJlZikpOworI2Vsc2UKICAgICBnX3N0YXRp
Y19yZWNfbXV0ZXhfaW5pdCgmcHJpdi0+bXV0ZXgpOwotCiAgICAgcHJpdi0+dGFzayA9IGdzdF90
YXNrX2NyZWF0ZShyZWludGVycHJldF9jYXN0PEdzdFRhc2tGdW5jdGlvbj4od2ViS2l0V2ViQXVk
aW9TcmNMb29wKSwgc3JjKTsKKyNlbmRpZgorCiAgICAgZ3N0X3Rhc2tfc2V0X2xvY2socHJpdi0+
dGFzay5nZXQoKSwgJnByaXYtPm11dGV4KTsKIH0KIApAQCAtMjI0LDcgKzIzOCwxNyBAQCBzdGF0
aWMgdm9pZCB3ZWJLaXRXZWJBdWRpb1NyY0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAg
ICAgICAgR3N0RWxlbWVudCogYXVkaW9jb252ZXJ0ID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtl
KCJhdWRpb2NvbnZlcnQiLCAwKTsKIAogICAgICAgICBHUmVmUHRyPEdzdENhcHM+IG1vbm9DYXBz
ID0gYWRvcHRHUmVmKGdldEdTdHJlYW1lck1vbm9BdWRpb0NhcHMocHJpdi0+c2FtcGxlUmF0ZSkp
OworCisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICAgICAgR3N0QXVkaW9DaGFubmVsUG9z
aXRpb24gY2hhbm5lbFBvc2l0aW9uID0gd2ViS2l0V2ViQXVkaW9HU3RyZWFtZXJDaGFubmVsUG9z
aXRpb24oY2hhbm5lbEluZGV4KTsKKyAgICAgICAgR3N0QXVkaW9JbmZvIGluZm87CisgICAgICAg
IGdzdF9hdWRpb19pbmZvX2Zyb21fY2FwcygmaW5mbywgbW9ub0NhcHMuZ2V0KCkpOworICAgICAg
ICBHU1RfQVVESU9fSU5GT19QT1NJVElPTigmaW5mbywgMCkgPSBjaGFubmVsUG9zaXRpb247Cisg
ICAgICAgIEdSZWZQdHI8R3N0Q2Fwcz4gY2FwcyA9IGFkb3B0R1JlZihnc3RfYXVkaW9faW5mb190
b19jYXBzKCZpbmZvKSk7CisgICAgICAgIGdfb2JqZWN0X3NldChjYXBzZmlsdGVyLCAiY2FwcyIs
IGNhcHMuZ2V0KCksIE5VTEwpOworI2Vsc2UKICAgICAgICAgZ19vYmplY3Rfc2V0KGNhcHNmaWx0
ZXIsICJjYXBzIiwgbW9ub0NhcHMuZ2V0KCksIE5VTEwpOworI2VuZGlmCiAKICAgICAgICAgLy8g
Q29uZmlndXJlIHRoZSBxdWV1ZSBmb3IgbWluaW1hbCBsYXRlbmN5LgogICAgICAgICBnX29iamVj
dF9zZXQocXVldWUsICJtYXgtc2l6ZS1idWZmZXJzIiwgc3RhdGljX2Nhc3Q8Z3VpbnQ+KDEpLCBO
VUxMKTsKQEAgLTI1MCw3ICsyNzQsMTEgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViQXVkaW9TcmNG
aW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiAgICAgV2ViS2l0V2ViQXVkaW9TcmMqIHNyYyA9IFdF
QktJVF9XRUJfQVVESU9fU1JDKG9iamVjdCk7CiAgICAgV2ViS2l0V2ViQXVkaW9Tb3VyY2VQcml2
YXRlKiBwcml2ID0gc3JjLT5wcml2OwogCisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICBn
X3JlY19tdXRleF9jbGVhcigmcHJpdi0+bXV0ZXgpOworI2Vsc2UKICAgICBnX3N0YXRpY19yZWNf
bXV0ZXhfZnJlZSgmcHJpdi0+bXV0ZXgpOworI2VuZGlmCiAKICAgICBnX3NsaXN0X2ZyZWVfZnVs
bChwcml2LT5wYWRzLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5Pihnc3Rfb2JqZWN0
X3VucmVmKSk7CiAKQEAgLTMyMSw3ICszNDksMTQgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViQXVk
aW9TcmNMb29wKFdlYktpdFdlYkF1ZGlvU3JjKiBzcmMpCiAgICAgICAgIEdzdEJ1ZmZlciogY2hh
bm5lbEJ1ZmZlciA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyhidWZmZXJTaXplKTsKICAgICAg
ICAgQVNTRVJUKGNoYW5uZWxCdWZmZXIpOwogICAgICAgICBjaGFubmVsQnVmZmVyTGlzdCA9IGdf
c2xpc3RfcHJlcGVuZChjaGFubmVsQnVmZmVyTGlzdCwgY2hhbm5lbEJ1ZmZlcik7CisjaWZkZWYg
R1NUX0FQSV9WRVJTSU9OXzEKKyAgICAgICAgR3N0TWFwSW5mbyBpbmZvOworICAgICAgICBnc3Rf
YnVmZmVyX21hcChjaGFubmVsQnVmZmVyLCAmaW5mbywgR1NUX01BUF9SRUFEKTsKKyAgICAgICAg
cHJpdi0+YnVzLT5zZXRDaGFubmVsTWVtb3J5KGksIHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPihp
bmZvLmRhdGEpLCBwcml2LT5mcmFtZXNUb1B1bGwpOworICAgICAgICBnc3RfYnVmZmVyX3VubWFw
KGNoYW5uZWxCdWZmZXIsICZpbmZvKTsKKyNlbHNlCiAgICAgICAgIHByaXYtPmJ1cy0+c2V0Q2hh
bm5lbE1lbW9yeShpLCByZWludGVycHJldF9jYXN0PGZsb2F0Kj4oR1NUX0JVRkZFUl9EQVRBKGNo
YW5uZWxCdWZmZXIpKSwgcHJpdi0+ZnJhbWVzVG9QdWxsKTsKKyNlbmRpZgogICAgIH0KICAgICBj
aGFubmVsQnVmZmVyTGlzdCA9IGdfc2xpc3RfcmV2ZXJzZShjaGFubmVsQnVmZmVyTGlzdCk7CiAK
QEAgLTMzMiwxMyArMzY3LDE3IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYkF1ZGlvU3JjTG9vcChX
ZWJLaXRXZWJBdWRpb1NyYyogc3JjKQogICAgICAgICBHc3RQYWQqIHBhZCA9IHN0YXRpY19jYXN0
PEdzdFBhZCo+KGdfc2xpc3RfbnRoX2RhdGEocHJpdi0+cGFkcywgaSkpOwogICAgICAgICBHc3RC
dWZmZXIqIGNoYW5uZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxHc3RCdWZmZXIqPihnX3NsaXN0X250
aF9kYXRhKGNoYW5uZWxCdWZmZXJMaXN0LCBpKSk7CiAKKyNpZm5kZWYgR1NUX0FQSV9WRVJTSU9O
XzEKICAgICAgICAgR1JlZlB0cjxHc3RDYXBzPiBtb25vQ2FwcyA9IGFkb3B0R1JlZihnZXRHU3Ry
ZWFtZXJNb25vQXVkaW9DYXBzKHByaXYtPnNhbXBsZVJhdGUpKTsKICAgICAgICAgR3N0U3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlKG1vbm9DYXBzLmdldCgpLCAw
KTsKICAgICAgICAgR3N0QXVkaW9DaGFubmVsUG9zaXRpb24gY2hhbm5lbFBvc2l0aW9uID0gd2Vi
S2l0V2ViQXVkaW9HU3RyZWFtZXJDaGFubmVsUG9zaXRpb24oaSk7CiAgICAgICAgIGdzdF9hdWRp
b19zZXRfY2hhbm5lbF9wb3NpdGlvbnMoc3RydWN0dXJlLCAmY2hhbm5lbFBvc2l0aW9uKTsKICAg
ICAgICAgZ3N0X2J1ZmZlcl9zZXRfY2FwcyhjaGFubmVsQnVmZmVyLCBtb25vQ2Fwcy5nZXQoKSk7
CisjZW5kaWYKIAotICAgICAgICBnc3RfcGFkX2NoYWluKHBhZCwgY2hhbm5lbEJ1ZmZlcik7Cisg
ICAgICAgIEdzdEZsb3dSZXR1cm4gcmV0ID0gZ3N0X3BhZF9jaGFpbihwYWQsIGNoYW5uZWxCdWZm
ZXIpOworICAgICAgICBpZiAocmV0ICE9IEdTVF9GTE9XX09LKQorICAgICAgICAgICAgR1NUX0VM
RU1FTlRfRVJST1Ioc3JjLCBDT1JFLCBQQUQsICgiSW50ZXJuYWwgV2ViQXVkaW9TcmMgZXJyb3Ii
KSwgKCJGYWlsZWQgdG8gcHVzaCBidWZmZXIgb24gJXMiLCBHU1RfREVCVUdfUEFEX05BTUUocGFk
KSkpOwogICAgIH0KIAogICAgIGdfc2xpc3RfZnJlZShjaGFubmVsQnVmZmVyTGlzdCk7CkBAIC0z
NzUsMTEgKzQxNCwxNSBAQCBzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gd2ViS2l0V2ViQXVk
aW9TcmNDaGFuZ2VTdGF0ZShHc3RFbGVtZW50KiBlbGVtZW50LCBHcwogICAgIHN3aXRjaCAodHJh
bnNpdGlvbikgewogICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19QQVVTRUQ6CiAg
ICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUkVBRFktPlBBVVNFRCIpOworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IEdTVF9TVEFURV9DSEFOR0VfTk9fUFJFUk9MTDsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19QTEFZSU5HOgorICAgICAgICBH
U1RfREVCVUdfT0JKRUNUKHNyYywgIlBBVVNFRC0+UExBWUlORyIpOwogICAgICAgICBpZiAoIWdz
dF90YXNrX3N0YXJ0KHNyYy0+cHJpdi0+dGFzay5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm5W
YWx1ZSA9IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19SRUFEWToKLSAgICAgICAgR1NUX0RFQlVHX09C
SkVDVChzcmMsICJQQVVTRUQtPlJFQURZIik7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BM
QVlJTkdfVE9fUEFVU0VEOgorICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlBMQVlJTkct
PlBBVVNFRCIpOwogICAgICAgICBpZiAoIWdzdF90YXNrX2pvaW4oc3JjLT5wcml2LT50YXNrLmdl
dCgpKSkKICAgICAgICAgICAgIHJldHVyblZhbHVlID0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJF
OwogICAgICAgICBicmVhazsKLS0gCjEuNy4xMC40
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180792</attachid>
            <date>2012-12-27 04:49:40 -0800</date>
            <delta_ts>2012-12-28 13:00:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>26311</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBjYzIyYTMwZjkxNWZkNDM0Zjg4MDU5Y2M4OTk4OGRkMjI0OTRiM2VlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBGcmksIDIxIERlYyAyMDEyIDE1OjE1OjM5ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDYyICsrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9G
RlRGcmFtZS5jcHAgICAgICAgICB8ICAgIDMgKwogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRkZURnJhbWUuaCAgICAgICAgICAgfCAgICA0ICsKIC4uLi9hdWRpby9nc3RyZWFtZXIvQXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgIHwgICAxMyArKy0KIC4uLi9hdWRpby9nc3RyZWFt
ZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oICAgIHwgICAgMiArLQogLi4uL2F1ZGlvL2dz
dHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwICAgfCAgMTEyICsrKysrKysrKysr
KysrKysrKy0tCiAuLi4vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNw
cCAgICB8ICAgNzUgKysrKysrKysrKy0tLQogLi4uL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1Nv
dXJjZUdTdHJlYW1lci5oICAgICAgfCAgICAyICstCiA4IGZpbGVzIGNoYW5nZWQsIDI0MiBpbnNl
cnRpb25zKCspLCAzMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZkZjEyOC4uZGIxYWFj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY3IEBACiAyMDEyLTEyLTE4ICBQaGlsaXBwZSBOb3Jt
YW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAorICAgICAgICBbR1N0cmVhbWVyXSBQb3J0IFdl
YkF1ZGlvIGJhY2tlbmQgdG8gMS4wIEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNTI5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBvcnQgdGhlIEF1ZGlvRmlsZVJlYWRlciBhbmQgQXVkaW9EZXN0
aW5hdGlvbiB0byBHU3RyZWFtZXIgMS4wCisgICAgICAgIEFQSXMuIEl0IHdvdWxkIGJlIHByZWZl
cmFibGUgdG8gcmVseSBvbiBhdCBsZWFzdCBHU3RyZWFtZXIgMS4wLjQKKyAgICAgICAgZm9yIHRo
aXMgdG8gd29yayBwcm9wZXJseSBhcyB0aGF0IHJlbGVhc2UgY29udGFpbnMgdHdvIGJ1ZyBmaXhl
cworICAgICAgICBmb3IgdGhlIGRlaW50ZXJsZWF2ZSBhbmQgaW50ZXJsZWF2ZSBlbGVtZW50cy4K
KworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZGVEZyYW1lOjpyZXBvcnRNZW1vcnlVc2FnZSk6IERvbid0IHJlcG9ydCBHc3RGRlRGMzIK
KyAgICAgICAgc3RydWN0dXJlcyBhbnltb3JlIGJlY2F1c2UgdGhleSdyZSBvcGFxdWUgaW4gR1N0
cmVhbWVyIDEuMC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oOiBnc3RmZnRm
MzIuaCBpcyBwcm90ZWN0ZWQgYnkKKyAgICAgICAgR19CRUdJTl8vRU5EX0RFQ0xTIGluIEdTdHJl
YW1lciAxLjAgYWxyZWFkeS4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3Ry
ZWFtZXIpOgorICAgICAgICBUaGUgd2F2cGFyc2UgZWxlbWVudCBpbiAxLjAgaGFzIG5vIHNvbWV0
aW1lcy1wYWRzIGFueW1vcmUuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1
ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHA6CisgICAgICAgIChBdWRpb0ZpbGVSZWFkZXIpOiBU
aGUgZGVjb2RlYmluMiBlbGVtZW50IGhhcyBiZWVuIHJlbmFtZWQgdG8KKyAgICAgICAgZGVjb2Rl
YmluIGluIEdTdHJlYW1lciAxLjAuCisgICAgICAgIChXZWJDb3JlOjpnZXRHU3RyZWFtZXJBdWRp
b0NhcHMpOiBBdWRpbyBjYXBzIGRlc2NyaXB0aW9uIGNoYW5nZWQgYQorICAgICAgICBsb3QgaW4g
R1N0cmVhbWVyIDEuMCwgdGhlIGZ1bmN0aW9uIG5vdyBoYW5kbGVzIGJvdGggQVBJcy4KKyAgICAg
ICAgKFdlYkNvcmU6OmNvcHlHc3RyZWFtZXJCdWZmZXJzVG9BdWRpb0NoYW5uZWwpOiBBZGFwdGVk
IHRvCisgICAgICAgIEdzdEJ1ZmZlckxpc3QgYW5kIEdzdEJ1ZmZlciBBUEkgY2hhbmdlcy4KKyAg
ICAgICAgKFdlYkNvcmU6Om9uQXBwc2lua1B1bGxSZXF1aXJlZENhbGxiYWNrKTogUHVsbCBhIHNh
bXBsZSBvciBidWZmZXIsCisgICAgICAgIGRlcGVuZGluZyBvbiB3aGljaCBBUEkgd2UgdXNlLgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjp+QXVkaW9GaWxlUmVhZGVyKTogUHJv
dGVjdAorICAgICAgICBHc3RCdWZmZXJMaXN0SXRlcmF0b3JzIGluIDAuMTAtb25seSBjb2RlIHBh
dGguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRl
cjo6aGFuZGxlU2FtcGxlKTogUHVsbCBhbiBhdWRpbyBzYW1wbGUKKyAgICAgICAgZnJvbSBhcHBz
aW5rIGFuZCBpbnNlcnQgaXQgaW4gdGhlIGFwcHJvcHJpYXRlIGJ1ZmZlciBsaXN0LgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVOZXdEZWludGVybGVhdmVQYWQpOiBI
YW5kbGUKKyAgICAgICAgYXBwc2luayBBUEkgY2hhbmdlcyBmcm9tIEdTdHJlYW1lciAwLjEwIHRv
IDEuMC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6ZGVjb2RlQXVkaW9Gb3JC
dXNDcmVhdGlvbik6IENyZWF0ZSB0aGUKKyAgICAgICAgY29ycmVjdCBkZWNvZGViaW4gZWxlbWVu
dC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKTogUHJvdGVj
dCBHc3RCdWZmZXJMaXN0SXRlcmF0b3JzCisgICAgICAgIGluIDAuMTAtb25seSBjb2RlIHBhdGgu
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNl
R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKF9XZWJLaXRXZWJBdWRpb1NvdXJjZVByaXZhdGUpOiBH
c3RUYXNrIGluIEdTdHJlYW1lciAxLjAgdXNlcyBhCisgICAgICAgIEdSZWNNdXRleCBpbnN0ZWFk
IG9mIGEgKGRlcHJlY2F0ZWQpIEdTdGF0aWNSZWNNdXRleC4KKyAgICAgICAgKGdldEdTdHJlYW1l
ck1vbm9BdWRpb0NhcHMpOiBIYW5kbGUgY2FwcyBkZXNjcmlwdGlvbiBjaGFuZ2VzCisgICAgICAg
IGJldHdlZW4gR1N0cmVhbWVyIDAuMTAgYW5kIDEuMC4KKyAgICAgICAgKHdlYktpdFdlYkF1ZGlv
R1N0cmVhbWVyQ2hhbm5lbFBvc2l0aW9uKTogUE9TSVRJT05fTEZFIGluCisgICAgICAgIEdTdHJl
YW1lciAxLjAgaXMgbm93IFBPU0lUSU9OX0xGRTEuIEFsc28gbWFwIENoYW5uZWxDZW50ZXIgdG8g
aXRzCisgICAgICAgIEdTdHJlYW1lciBlcXVpdmFsZW50LgorICAgICAgICAod2Via2l0X3dlYl9h
dWRpb19zcmNfY2xhc3NfaW5pdCk6IFVzZSBnZW5lcmljIHNldEdzdEVsZW1lbnRDbGFzc01ldGFk
YXRhLgorICAgICAgICAod2Via2l0X3dlYl9hdWRpb19zcmNfaW5pdCk6IEhhbmRsZSBHUmVjTXV0
ZXggaW5pdGlhbGlzYXRpb24uCisgICAgICAgICh3ZWJLaXRXZWJBdWRpb1NyY0NvbnN0cnVjdGVk
KTogU2V0IGNoYW5uZWwgcG9zaXRpb24gb24KKyAgICAgICAgY2Fwc2ZpbHRlci4gVGhpcyBpcyBk
b25lIGZvciBHU3RyZWFtZXIgMS4wIGNvZGUgcGF0aCBvbmx5IGJlY2F1c2UKKyAgICAgICAgaW4g
MC4xMCB0aGUgY2FwcyBoYXZlIG5vIHdheSB0byBzdG9yZSB0aGlzIGluZm9ybWF0aW9uLgorICAg
ICAgICAod2ViS2l0V2ViQXVkaW9TcmNGaW5hbGl6ZSk6IENsZWFyIEdSZWNNdXRleC4KKyAgICAg
ICAgKHdlYktpdFdlYkF1ZGlvU3JjTG9vcCk6IEhhbmRsZSBHc3RCdWZmZXIgQVBJIGNoYW5nZXMg
YW5kIGFkZCBhbgorICAgICAgICBlcnJvciBjaGVjayBpZiBidWZmZXJzIGNhbid0IGJlIGNoYWlu
ZWQgdG8gcXVldWUncyBzb3VyY2UgcGFkLgorICAgICAgICAod2ViS2l0V2ViQXVkaW9TcmNDaGFu
Z2VTdGF0ZSk6IEFzIGFkdmlzZWQgaW4gdGhlIEdTdHJlYW1lciBkb2NzLAorICAgICAgICBmaXh1
cCB0aGUgc3RhdGUgY2hhbmdlcyBmb3IgdGhpcyBsaXZlIHNvdXJjZSBlbGVtZW50OiBOT19QUkVS
T0xMCisgICAgICAgIGluIFJFQURZLT5QQVVTRUQgYW5kIHN0YXJ0L3N0b3AgdGhlIEdzdFRhc2sg
d2hlbiBnb2luZy9jb21pbmcKKyAgICAgICAgdG8vZnJvbSBQTEFZSU5HLgorCisyMDEyLTEyLTE4
ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKwogICAgICAgICBbR1N0
cmVhbWVyXSBHc3RNZXNzYWdlIGhhbmRsZXIgaW4gQXVkaW9EZXN0aW5hdGlvbgogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1MjkyCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcAppbmRleCBlZWU0NWRlLi5jMzUyYjUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwCkBAIC0yNzks
OCArMjc5LDExIEBAIHZvaWQgRkZURnJhbWU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAjZW5kaWYgLy8gVVNFKFdFQkFVRElPX0ZG
TVBFRykKIAogI2lmIFVTRShXRUJBVURJT19HU1RSRUFNRVIpCisjaWZuZGVmIEdTVF9BUElfVkVS
U0lPTl8xCisgICAgLy8gVGhlIEdzdEZGVEYzMiBzdHJ1Y3R1cmUgaXMgZXhwb3NlZCBwdWJsaWNs
eSBpbiBHU3RyZWFtZXIgMC4xMCBvbmx5LgogICAgIGluZm8uYWRkTWVtYmVyKG1fZmZ0KTsKICAg
ICBpbmZvLmFkZE1lbWJlcihtX2ludmVyc2VGZnQpOworI2VuZGlmCiAgICAgaW5mby5hZGRNZW1i
ZXIobV9jb21wbGV4RGF0YSk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9yZWFsRGF0YSk7CiAgICAg
aW5mby5hZGRNZW1iZXIobV9pbWFnRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RkZURnJhbWUuaAppbmRleCA2YzE1MzQ5Li5iNDgzY2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0ZGVEZyYW1lLmgKQEAgLTQ5LDkgKzQ5LDEzIEBACiAKICNpZiBVU0UoV0VCQVVE
SU9fR1NUUkVBTUVSKQogI2luY2x1ZGUgPGdsaWIuaD4KKyNpZm5kZWYgR1NUX0FQSV9WRVJTSU9O
XzEKIEdfQkVHSU5fREVDTFMKKyNlbmRpZgogI2luY2x1ZGUgPGdzdC9mZnQvZ3N0ZmZ0ZjMyLmg+
CisjaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCiBHX0VORF9ERUNMUworI2VuZGlmCiAjZW5kaWYg
Ly8gVVNFKFdFQkFVRElPX0dTVFJFQU1FUikKIAogI2lmIFVTRShXRUJBVURJT19GRk1QRUcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9E
ZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKaW5kZXggYmJkMGQxNjguLjVl
ZDQ3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDExLCAyMDEyIElnYWxpYSBTLkwKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAg
LTUxLDEwICs1MSwxMiBAQCBmbG9hdCBBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJh
dGUoKQogICAgIHJldHVybiA0NDEwMDsKIH0KIAorI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQog
c3RhdGljIHZvaWQgb25HU3RyZWFtZXJXYXZwYXJzZVBhZEFkZGVkQ2FsbGJhY2soR3N0RWxlbWVu
dCosIEdzdFBhZCogcGFkLCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKiBkZXN0aW5hdGlvbikK
IHsKICAgICBkZXN0aW5hdGlvbi0+ZmluaXNoQnVpbGRpbmdQaXBlbGluZUFmdGVyV2F2UGFyc2Vy
UGFkUmVhZHkocGFkKTsKIH0KKyNlbmRpZgogCiBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpB
dWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIGZsb2F0
IHNhbXBsZVJhdGUpCiAgICAgOiBtX2NhbGxiYWNrKGNhbGxiYWNrKQpAQCAtODAsOSArODIsMTYg
QEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihB
dWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAogICAgIGlmICghbV93YXZQYXJzZXJBdmFpbGFibGUp
CiAgICAgICAgIHJldHVybjsKIAorI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIGdfc2ln
bmFsX2Nvbm5lY3Qod2F2UGFyc2VyLCAicGFkLWFkZGVkIiwgR19DQUxMQkFDSyhvbkdTdHJlYW1l
cldhdnBhcnNlUGFkQWRkZWRDYWxsYmFjayksIHRoaXMpOworI2VuZGlmCiAgICAgZ3N0X2Jpbl9h
ZGRfbWFueShHU1RfQklOKG1fcGlwZWxpbmUpLCB3ZWJraXRBdWRpb1NyYywgd2F2UGFyc2VyLCBO
VUxMKTsKICAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbCh3ZWJraXRBdWRpb1NyYywgInNy
YyIsIHdhdlBhcnNlciwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7CisKKyNp
ZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgIEdSZWZQdHI8R3N0UGFkPiBzcmNQYWQgPSBhZG9w
dEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQod2F2UGFyc2VyLCAic3JjIikpOworICAg
IGZpbmlzaEJ1aWxkaW5nUGlwZWxpbmVBZnRlcldhdlBhcnNlclBhZFJlYWR5KHNyY1BhZC5nZXQo
KSk7CisjZW5kaWYKIH0KIAogQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6fkF1ZGlvRGVzdGlu
YXRpb25HU3RyZWFtZXIoKQpAQCAtMTIxLDcgKzEzMCw3IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lcjo6ZmluaXNoQnVpbGRpbmdQaXBlbGluZUFmdGVyV2F2UGFyc2VyUGFkUmVhZHko
R3N0CiAKICAgICAvLyBMaW5rIHdhdnBhcnNlJ3Mgc3JjIHBhZCB0byBhdWRpb2NvbnZlcnQgc2lu
ayBwYWQuCiAgICAgR1JlZlB0cjxHc3RQYWQ+IHNpbmtQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1l
bnRfZ2V0X3N0YXRpY19wYWQoYXVkaW9Db252ZXJ0LCAic2luayIpKTsKLSAgICBnc3RfcGFkX2xp
bmsocGFkLCBzaW5rUGFkLmdldCgpKTsKKyAgICBnc3RfcGFkX2xpbmtfZnVsbChwYWQsIHNpbmtQ
YWQuZ2V0KCksIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKIAogICAgIC8vIExpbmsgYXVk
aW9jb252ZXJ0IHRvIGF1ZGlvc2luayBhbmQgcm9sbCBzdGF0ZXMuCiAgICAgZ3N0X2VsZW1lbnRf
bGlua19wYWRzX2Z1bGwoYXVkaW9Db252ZXJ0LCAic3JjIiwgYXVkaW9TaW5rLmdldCgpLCAic2lu
ayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lci5oCmluZGV4IDI2ZTM0MmUuLjEzYmUxNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVz
dGluYXRpb25HU3RyZWFtZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0IChD
KSAyMDExIFBoaWxpcHBlIE5vcm1hbmQgPHBub3JtYW5kQGlnYWxpYS5jb20+CisgKiAgQ29weXJp
Z2h0IChDKSAyMDExLCAyMDEyIElnYWxpYSBTLkwKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVS
ZWFkZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKaW5kZXggYWQzZWZiMC4uOGI1ZWM0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlv
RmlsZVJlYWRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKQEAgLTMzLDcgKzMzLDEx
IEBACiAKICNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAjaW5jbHVkZSA8Z3N0L2FwcC9nc3RhcHBzaW5r
Lmg+CisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8u
aD4KKyNlbHNlCiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL211bHRpY2hhbm5lbC5oPgorI2VuZGlmCiAj
aW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPGdzdC9wYnV0aWxzL3BidXRpbHMuaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTQxLDYgKzQ1LDEyIEBACiAjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4K
IAorI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCitzdGF0aWMgY29uc3QgY2hhciogZ0RlY29kZWJp
bk5hbWUgPSAiZGVjb2RlYmluIjsKKyNlbHNlCitzdGF0aWMgY29uc3QgY2hhciogZ0RlY29kZWJp
bk5hbWUgPSAiZGVjb2RlYmluMiI7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBBdWRpb0ZpbGVSZWFkZXIgewpAQCAtNTIsNyArNjIsMTEgQEAgcHVibGljOgogCiAgICAg
UGFzc093blB0cjxBdWRpb0J1cz4gY3JlYXRlQnVzKGZsb2F0IHNhbXBsZVJhdGUsIGJvb2wgbWl4
VG9Nb25vKTsKIAorI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgR3N0Rmxvd1JldHVybiBo
YW5kbGVTYW1wbGUoR3N0QXBwU2luayopOworI2Vsc2UKICAgICBHc3RGbG93UmV0dXJuIGhhbmRs
ZUJ1ZmZlcihHc3RBcHBTaW5rKik7CisjZW5kaWYKICAgICBnYm9vbGVhbiBoYW5kbGVNZXNzYWdl
KEdzdE1lc3NhZ2UqKTsKICAgICB2b2lkIGhhbmRsZU5ld0RlaW50ZXJsZWF2ZVBhZChHc3RQYWQq
KTsKICAgICB2b2lkIGRlaW50ZXJsZWF2ZVBhZHNDb25maWd1cmVkKCk7CkBAIC02Niw5ICs4MCwx
MyBAQCBwcml2YXRlOgogCiAgICAgZmxvYXQgbV9zYW1wbGVSYXRlOwogICAgIEdzdEJ1ZmZlckxp
c3QqIG1fZnJvbnRMZWZ0QnVmZmVyczsKLSAgICBHc3RCdWZmZXJMaXN0SXRlcmF0b3IqIG1fZnJv
bnRMZWZ0QnVmZmVyc0l0ZXJhdG9yOwogICAgIEdzdEJ1ZmZlckxpc3QqIG1fZnJvbnRSaWdodEJ1
ZmZlcnM7CisKKyNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICBHc3RCdWZmZXJMaXN0SXRl
cmF0b3IqIG1fZnJvbnRMZWZ0QnVmZmVyc0l0ZXJhdG9yOwogICAgIEdzdEJ1ZmZlckxpc3RJdGVy
YXRvciogbV9mcm9udFJpZ2h0QnVmZmVyc0l0ZXJhdG9yOworI2VuZGlmCisKICAgICBHc3RFbGVt
ZW50KiBtX3BpcGVsaW5lOwogICAgIHVuc2lnbmVkIG1fY2hhbm5lbFNpemU7CiAgICAgR1JlZlB0
cjxHc3RFbGVtZW50PiBtX2RlY29kZWJpbjsKQEAgLTc5LDExICs5NywyOCBAQCBwcml2YXRlOgog
CiBzdGF0aWMgR3N0Q2FwcyogZ2V0R1N0cmVhbWVyQXVkaW9DYXBzKGludCBjaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSkKIHsKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgIHJldHVybiBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhdWRpby94LXJhdyIsICJyYXRlIiwgR19UWVBFX0lOVCwgc3Rh
dGljX2Nhc3Q8aW50PihzYW1wbGVSYXRlKSwgImNoYW5uZWxzIiwgR19UWVBFX0lOVCwgY2hhbm5l
bHMsICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCBnc3RfYXVkaW9fZm9ybWF0X3RvX3N0cmluZyhH
U1RfQVVESU9fRk9STUFUX0YzMiksICJsYXlvdXQiLCBHX1RZUEVfU1RSSU5HLCAiaW50ZXJsZWF2
ZWQiLCBOVUxMKTsKKyNlbHNlCiAgICAgcmV0dXJuIGdzdF9jYXBzX25ld19zaW1wbGUoImF1ZGlv
L3gtcmF3LWZsb2F0IiwgInJhdGUiLCBHX1RZUEVfSU5ULCBzdGF0aWNfY2FzdDxpbnQ+KHNhbXBs
ZVJhdGUpLCAiY2hhbm5lbHMiLCBHX1RZUEVfSU5ULCBjaGFubmVscywgImVuZGlhbm5lc3MiLCBH
X1RZUEVfSU5ULCBHX0JZVEVfT1JERVIsICJ3aWR0aCIsIEdfVFlQRV9JTlQsIDMyLCBOVUxMKTsK
KyNlbmRpZgogfQogCiBzdGF0aWMgdm9pZCBjb3B5R3N0cmVhbWVyQnVmZmVyc1RvQXVkaW9DaGFu
bmVsKEdzdEJ1ZmZlckxpc3QqIGJ1ZmZlcnMsIEF1ZGlvQ2hhbm5lbCogYXVkaW9DaGFubmVsKQog
eworI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgZ3NpemUgb2Zmc2V0ID0gMDsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZ3N0X2J1ZmZlcl9saXN0X2xlbmd0aChidWZmZXJzKTsg
aSsrKSB7CisgICAgICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X2J1ZmZlcl9saXN0X2dldChi
dWZmZXJzLCBpKTsKKyAgICAgICAgaWYgKGJ1ZmZlcikgeworICAgICAgICAgICAgR3N0TWFwSW5m
byBpbmZvOworICAgICAgICAgICAgZ3N0X2J1ZmZlcl9tYXAoYnVmZmVyLCAmaW5mbywgR1NUX01B
UF9SRUFEKTsKKyAgICAgICAgICAgIG1lbWNweShhdWRpb0NoYW5uZWwtPm11dGFibGVEYXRhKCkg
KyBvZmZzZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPihpbmZvLmRhdGEpLCBpbmZvLnNpemUp
OworICAgICAgICAgICAgb2Zmc2V0ICs9IGluZm8uc2l6ZSAvIHNpemVvZihmbG9hdCk7CisgICAg
ICAgICAgICBnc3RfYnVmZmVyX3VubWFwKGJ1ZmZlciwgJmluZm8pOworICAgICAgICB9CisgICAg
fQorI2Vsc2UKICAgICBHc3RCdWZmZXJMaXN0SXRlcmF0b3IqIGl0ZXIgPSBnc3RfYnVmZmVyX2xp
c3RfaXRlcmF0ZShidWZmZXJzKTsKICAgICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfbmV4dF9n
cm91cChpdGVyKTsKICAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9idWZmZXJfbGlzdF9pdGVy
YXRvcl9tZXJnZV9ncm91cChpdGVyKTsKQEAgLTkzLDExICsxMjgsMTYgQEAgc3RhdGljIHZvaWQg
Y29weUdzdHJlYW1lckJ1ZmZlcnNUb0F1ZGlvQ2hhbm5lbChHc3RCdWZmZXJMaXN0KiBidWZmZXJz
LCBBdWRpb0NoYW4KICAgICB9CiAKICAgICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfZnJlZShp
dGVyKTsKKyNlbmRpZgogfQogCi1zdGF0aWMgR3N0Rmxvd1JldHVybiBvbkFwcHNpbmtOZXdCdWZm
ZXJDYWxsYmFjayhHc3RBcHBTaW5rKiBzaW5rLCBncG9pbnRlciB1c2VyRGF0YSkKK3N0YXRpYyBH
c3RGbG93UmV0dXJuIG9uQXBwc2lua1B1bGxSZXF1aXJlZENhbGxiYWNrKEdzdEFwcFNpbmsqIHNp
bmssIGdwb2ludGVyIHVzZXJEYXRhKQogeworI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEF1ZGlvRmlsZVJlYWRlcio+KHVzZXJEYXRhKS0+aGFuZGxlU2Ft
cGxlKHNpbmspOworI2Vsc2UKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXVkaW9GaWxlUmVhZGVy
Kj4odXNlckRhdGEpLT5oYW5kbGVCdWZmZXIoc2luayk7CisjZW5kaWYKIH0KIAogZ2Jvb2xlYW4g
bWVzc2FnZUNhbGxiYWNrKEdzdEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIEF1ZGlvRmlsZVJl
YWRlciogcmVhZGVyKQpAQCAtMTY1LDEyICsyMDUsNTggQEAgQXVkaW9GaWxlUmVhZGVyOjp+QXVk
aW9GaWxlUmVhZGVyKCkKICAgICAgICAgbV9kZUludGVybGVhdmUuY2xlYXIoKTsKICAgICB9CiAK
KyNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0b3Jf
ZnJlZShtX2Zyb250TGVmdEJ1ZmZlcnNJdGVyYXRvcik7CiAgICAgZ3N0X2J1ZmZlcl9saXN0X2l0
ZXJhdG9yX2ZyZWUobV9mcm9udFJpZ2h0QnVmZmVyc0l0ZXJhdG9yKTsKKyNlbmRpZgogICAgIGdz
dF9idWZmZXJfbGlzdF91bnJlZihtX2Zyb250TGVmdEJ1ZmZlcnMpOwogICAgIGdzdF9idWZmZXJf
bGlzdF91bnJlZihtX2Zyb250UmlnaHRCdWZmZXJzKTsKIH0KIAorI2lmZGVmIEdTVF9BUElfVkVS
U0lPTl8xCitHc3RGbG93UmV0dXJuIEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlU2FtcGxlKEdzdEFw
cFNpbmsqIHNpbmspCit7CisgICAgR3N0U2FtcGxlKiBzYW1wbGUgPSBnc3RfYXBwX3NpbmtfcHVs
bF9zYW1wbGUoc2luayk7CisgICAgaWYgKCFzYW1wbGUpCisgICAgICAgIHJldHVybiBHU1RfRkxP
V19FUlJPUjsKKworICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVy
KHNhbXBsZSk7CisgICAgaWYgKCFidWZmZXIpIHsKKyAgICAgICAgZ3N0X3NhbXBsZV91bnJlZihz
YW1wbGUpOworICAgICAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CisgICAgfQorCisgICAgR3N0
Q2FwcyogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0X2NhcHMoc2FtcGxlKTsKKyAgICBpZiAoIWNhcHMp
IHsKKyAgICAgICAgZ3N0X3NhbXBsZV91bnJlZihzYW1wbGUpOworICAgICAgICByZXR1cm4gR1NU
X0ZMT1dfRVJST1I7CisgICAgfQorCisgICAgR3N0QXVkaW9JbmZvIGluZm87CisgICAgZ3N0X2F1
ZGlvX2luZm9fZnJvbV9jYXBzKCZpbmZvLCBjYXBzKTsKKyAgICBpbnQgZnJhbWVzID0gR1NUX0NM
T0NLX1RJTUVfVE9fRlJBTUVTKEdTVF9CVUZGRVJfRFVSQVRJT04oYnVmZmVyKSwgR1NUX0FVRElP
X0lORk9fUkFURSgmaW5mbykpOworCisgICAgLy8gQ2hlY2sgdGhlIGZpcnN0IGF1ZGlvIGNoYW5u
ZWwuIFRoZSBidWZmZXIgaXMgc3VwcG9zZWQgdG8gc3RvcmUKKyAgICAvLyBkYXRhIG9mIGEgc2lu
Z2xlIGNoYW5uZWwgYW55d2F5LgorICAgIHN3aXRjaCAoR1NUX0FVRElPX0lORk9fUE9TSVRJT04o
JmluZm8sIDApKSB7CisgICAgY2FzZSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9M
RUZUOgorICAgICAgICBnc3RfYnVmZmVyX2xpc3RfYWRkKG1fZnJvbnRMZWZ0QnVmZmVycywgZ3N0
X2J1ZmZlcl9yZWYoYnVmZmVyKSk7CisgICAgICAgIG1fY2hhbm5lbFNpemUgKz0gZnJhbWVzOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05U
X1JJR0hUOgorICAgICAgICBnc3RfYnVmZmVyX2xpc3RfYWRkKG1fZnJvbnRSaWdodEJ1ZmZlcnMs
IGdzdF9idWZmZXJfcmVmKGJ1ZmZlcikpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBnc3Rfc2FtcGxlX3VucmVmKHNhbXBsZSk7Cisg
ICAgcmV0dXJuIEdTVF9GTE9XX09LOworCit9CisjZW5kaWYKKworI2lmbmRlZiBHU1RfQVBJX1ZF
UlNJT05fMQogR3N0Rmxvd1JldHVybiBBdWRpb0ZpbGVSZWFkZXI6OmhhbmRsZUJ1ZmZlcihHc3RB
cHBTaW5rKiBzaW5rKQogewogICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X2FwcF9zaW5rX3B1
bGxfYnVmZmVyKHNpbmspOwpAQCAtMjI0LDYgKzMxMCw3IEBAIEdzdEZsb3dSZXR1cm4gQXVkaW9G
aWxlUmVhZGVyOjpoYW5kbGVCdWZmZXIoR3N0QXBwU2luayogc2luaykKICAgICBnc3RfY2Fwc191
bnJlZihjYXBzKTsKICAgICByZXR1cm4gR1NUX0ZMT1dfT0s7CiB9CisjZW5kaWYKIAogZ2Jvb2xl
YW4gQXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiB7
CkBAIC0yNjIsMjAgKzM0OSwyMCBAQCB2b2lkIEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlTmV3RGVp
bnRlcmxlYXZlUGFkKEdzdFBhZCogcGFkKQogICAgIEdzdEFwcFNpbmtDYWxsYmFja3MgY2FsbGJh
Y2tzOwogICAgIGNhbGxiYWNrcy5lb3MgPSAwOwogICAgIGNhbGxiYWNrcy5uZXdfcHJlcm9sbCA9
IDA7CisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICBjYWxsYmFja3MubmV3X3NhbXBsZSA9
IG9uQXBwc2lua1B1bGxSZXF1aXJlZENhbGxiYWNrOworI2Vsc2UKICAgICBjYWxsYmFja3MubmV3
X2J1ZmZlcl9saXN0ID0gMDsKLSAgICBjYWxsYmFja3MubmV3X2J1ZmZlciA9IG9uQXBwc2lua05l
d0J1ZmZlckNhbGxiYWNrOworICAgIGNhbGxiYWNrcy5uZXdfYnVmZmVyID0gb25BcHBzaW5rUHVs
bFJlcXVpcmVkQ2FsbGJhY2s7CisjZW5kaWYKICAgICBnc3RfYXBwX3Npbmtfc2V0X2NhbGxiYWNr
cyhHU1RfQVBQX1NJTksoc2luayksICZjYWxsYmFja3MsIHRoaXMsIDApOwogCiAgICAgZ19vYmpl
Y3Rfc2V0KHNpbmssICJzeW5jIiwgRkFMU0UsIE5VTEwpOwogCi0gICAgR3N0Q2FwcyogY2FwcyA9
IGdldEdTdHJlYW1lckF1ZGlvQ2FwcygxLCBtX3NhbXBsZVJhdGUpOwotICAgIGdzdF9hcHBfc2lu
a19zZXRfY2FwcyhHU1RfQVBQX1NJTksoc2luayksIGNhcHMpOwotICAgIGdzdF9jYXBzX3VucmVm
KGNhcHMpOwotCiAgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOKG1fcGlwZWxpbmUpLCBxdWV1
ZSwgc2luaywgTlVMTCk7CiAKICAgICBHc3RQYWQqIHNpbmtQYWQgPSBnc3RfZWxlbWVudF9nZXRf
c3RhdGljX3BhZChxdWV1ZSwgInNpbmsiKTsKLSAgICBnc3RfcGFkX2xpbmsocGFkLCBzaW5rUGFk
KTsKKyAgICBnc3RfcGFkX2xpbmtfZnVsbChwYWQsIHNpbmtQYWQsIEdTVF9QQURfTElOS19DSEVD
S19OT1RISU5HKTsKICAgICBnc3Rfb2JqZWN0X3VucmVmKEdTVF9PQkpFQ1Qoc2lua1BhZCkpOwog
CiAgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwocXVldWUsICJzcmMiLCBzaW5rLCAic2lu
ayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKQEAgLTMxMiw3ICszOTksNyBAQCB2b2lk
IEF1ZGlvRmlsZVJlYWRlcjo6cGx1Z0RlaW50ZXJsZWF2ZShHc3RQYWQqIHBhZCkKICAgICBnc3Rf
YmluX2FkZF9tYW55KEdTVF9CSU4obV9waXBlbGluZSksIGF1ZGlvQ29udmVydCwgYXVkaW9SZXNh
bXBsZSwgY2Fwc0ZpbHRlciwgbV9kZUludGVybGVhdmUuZ2V0KCksIE5VTEwpOwogCiAgICAgR3N0
UGFkKiBzaW5rUGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQoYXVkaW9Db252ZXJ0LCAi
c2luayIpOwotICAgIGdzdF9wYWRfbGluayhwYWQsIHNpbmtQYWQpOworICAgIGdzdF9wYWRfbGlu
a19mdWxsKHBhZCwgc2lua1BhZCwgR1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOwogICAgIGdz
dF9vYmplY3RfdW5yZWYoR1NUX09CSkVDVChzaW5rUGFkKSk7CiAKICAgICBnc3RfZWxlbWVudF9s
aW5rX3BhZHNfZnVsbChhdWRpb0NvbnZlcnQsICJzcmMiLCBhdWRpb1Jlc2FtcGxlLCAic2luayIs
IEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKQEAgLTM0Niw3ICs0MzMsNyBAQCB2b2lkIEF1
ZGlvRmlsZVJlYWRlcjo6ZGVjb2RlQXVkaW9Gb3JCdXNDcmVhdGlvbigpCiAgICAgICAgIGdfb2Jq
ZWN0X3NldChzb3VyY2UsICJsb2NhdGlvbiIsIG1fZmlsZVBhdGgsIE5VTEwpOwogICAgIH0KIAot
ICAgIG1fZGVjb2RlYmluID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJkZWNvZGViaW4yIiwg
ImRlY29kZWJpbiIpOworICAgIG1fZGVjb2RlYmluID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtl
KGdEZWNvZGViaW5OYW1lLCAiZGVjb2RlYmluIik7CiAgICAgZ19zaWduYWxfY29ubmVjdChtX2Rl
Y29kZWJpbi5nZXQoKSwgInBhZC1hZGRlZCIsIEdfQ0FMTEJBQ0sob25HU3RyZWFtZXJEZWNvZGVi
aW5QYWRBZGRlZENhbGxiYWNrKSwgdGhpcyk7CiAKICAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9C
SU4obV9waXBlbGluZSksIHNvdXJjZSwgbV9kZWNvZGViaW4uZ2V0KCksIE5VTEwpOwpAQCAtMzU5
LDEyICs0NDYsMTUgQEAgUGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpjcmVh
dGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01vbm8KICAgICBtX3NhbXBsZVJhdGUg
PSBzYW1wbGVSYXRlOwogCiAgICAgbV9mcm9udExlZnRCdWZmZXJzID0gZ3N0X2J1ZmZlcl9saXN0
X25ldygpOworICAgIG1fZnJvbnRSaWdodEJ1ZmZlcnMgPSBnc3RfYnVmZmVyX2xpc3RfbmV3KCk7
CisKKyNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBtX2Zyb250TGVmdEJ1ZmZlcnNJdGVy
YXRvciA9IGdzdF9idWZmZXJfbGlzdF9pdGVyYXRlKG1fZnJvbnRMZWZ0QnVmZmVycyk7CiAgICAg
Z3N0X2J1ZmZlcl9saXN0X2l0ZXJhdG9yX2FkZF9ncm91cChtX2Zyb250TGVmdEJ1ZmZlcnNJdGVy
YXRvcik7CiAKLSAgICBtX2Zyb250UmlnaHRCdWZmZXJzID0gZ3N0X2J1ZmZlcl9saXN0X25ldygp
OwogICAgIG1fZnJvbnRSaWdodEJ1ZmZlcnNJdGVyYXRvciA9IGdzdF9idWZmZXJfbGlzdF9pdGVy
YXRlKG1fZnJvbnRSaWdodEJ1ZmZlcnMpOwogICAgIGdzdF9idWZmZXJfbGlzdF9pdGVyYXRvcl9h
ZGRfZ3JvdXAobV9mcm9udFJpZ2h0QnVmZmVyc0l0ZXJhdG9yKTsKKyNlbmRpZgogCiAgICAgR1Jl
ZlB0cjxHTWFpbkNvbnRleHQ+IGNvbnRleHQgPSBnX21haW5fY29udGV4dF9uZXcoKTsKICAgICBn
X21haW5fY29udGV4dF9wdXNoX3RocmVhZF9kZWZhdWx0KGNvbnRleHQuZ2V0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1
ZGlvU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dz
dHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggNzcxODQxZC4u
N2U5NWVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMu
TAorICogIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBJZ2FsaWEgUy5MCiAgKgogICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCkBAIC0yNyw3ICsyNywxMSBAQAogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIu
aD4KICNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyVmVy
c2lvbmluZy5oIgorI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisjaW5jbHVkZSA8Z3N0L2F1ZGlv
L2F1ZGlvLmg+CisjZWxzZQogI2luY2x1ZGUgPGdzdC9hdWRpby9tdWx0aWNoYW5uZWwuaD4KKyNl
bmRpZgogI2luY2x1ZGUgPGdzdC9wYnV0aWxzL3BidXRpbHMuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CkBAIC00NSw2ICs0OSw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViQXVkaW9TcmNDbGFz
cyB7CiAgICAgR3N0QmluQ2xhc3MgcGFyZW50Q2xhc3M7CiB9OwogCisjZGVmaW5lIFdFQktJVF9X
RUJfQVVESU9fU1JDX0dFVF9QUklWQVRFKG9iaikgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFU
RSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCQVVESU9fU1JDLCBXZWJLaXRXZWJBdWRpb1NvdXJjZVBy
aXZhdGUpKQogc3RydWN0IF9XZWJLaXRXZWJBdWRpb1NvdXJjZVByaXZhdGUgewogICAgIGdmbG9h
dCBzYW1wbGVSYXRlOwogICAgIEF1ZGlvQnVzKiBidXM7CkBAIC01NSw3ICs2MCwxMSBAQCBzdHJ1
Y3QgX1dlYktpdFdlYkF1ZGlvU291cmNlUHJpdmF0ZSB7CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50
PiB3YXZFbmNvZGVyOwogCiAgICAgR1JlZlB0cjxHc3RUYXNrPiB0YXNrOworI2lmZGVmIEdTVF9B
UElfVkVSU0lPTl8xCisgICAgR1JlY011dGV4IG11dGV4OworI2Vsc2UKICAgICBHU3RhdGljUmVj
TXV0ZXggbXV0ZXg7CisjZW5kaWYKIAogICAgIEdTTGlzdCogcGFkczsgLy8gTGlzdCBvZiBxdWV1
ZSBzaW5rIHBhZHMuIE9uZSBxdWV1ZSBmb3IgZWFjaCBwbGFuYXIgYXVkaW8gY2hhbm5lbC4KICAg
ICBHc3RQYWQqIHNvdXJjZVBhZDsgLy8gc3JjIHBhZCBvZiB0aGUgZWxlbWVudCwgaW50ZXJsZWF2
ZWQgd2F2IGRhdGEgaXMgcHVzaGVkIHRvIGl0LgpAQCAtODUsMTAgKzk0LDExIEBAIHN0YXRpYyB2
b2lkIHdlYktpdFdlYkF1ZGlvU3JjTG9vcChXZWJLaXRXZWJBdWRpb1NyYyopOwogCiBzdGF0aWMg
R3N0Q2FwcyogZ2V0R1N0cmVhbWVyTW9ub0F1ZGlvQ2FwcyhmbG9hdCBzYW1wbGVSYXRlKQogewot
ICAgIHJldHVybiBnc3RfY2Fwc19uZXdfc2ltcGxlKCJhdWRpby94LXJhdy1mbG9hdCIsICJyYXRl
IiwgR19UWVBFX0lOVCwgc3RhdGljX2Nhc3Q8aW50PihzYW1wbGVSYXRlKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiY2hhbm5lbHMiLCBHX1RZUEVfSU5ULCAxLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJlbmRpYW5uZXNzIiwgR19UWVBFX0lOVCwgR19CWVRFX09S
REVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCIsIEdfVFlQRV9JTlQs
IDMyLCBOVUxMKTsKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgIHJldHVybiBnc3RfY2Fw
c19uZXdfc2ltcGxlKCJhdWRpby94LXJhdyIsICJyYXRlIiwgR19UWVBFX0lOVCwgc3RhdGljX2Nh
c3Q8aW50PihzYW1wbGVSYXRlKSwgImNoYW5uZWxzIiwgR19UWVBFX0lOVCwgMSwgImZvcm1hdCIs
IEdfVFlQRV9TVFJJTkcsIGdzdF9hdWRpb19mb3JtYXRfdG9fc3RyaW5nKEdTVF9BVURJT19GT1JN
QVRfRjMyKSwgImxheW91dCIsIEdfVFlQRV9TVFJJTkcsICJub24taW50ZXJsZWF2ZWQiLCBOVUxM
KTsKKyNlbHNlCisgICAgcmV0dXJuIGdzdF9jYXBzX25ld19zaW1wbGUoImF1ZGlvL3gtcmF3LWZs
b2F0IiwgInJhdGUiLCBHX1RZUEVfSU5ULCBzdGF0aWNfY2FzdDxpbnQ+KHNhbXBsZVJhdGUpLCAi
Y2hhbm5lbHMiLCBHX1RZUEVfSU5ULCAxLCAiZW5kaWFubmVzcyIsIEdfVFlQRV9JTlQsIEdfQllU
RV9PUkRFUiwgIndpZHRoIiwgR19UWVBFX0lOVCwgMzIsIE5VTEwpOworI2VuZGlmCiB9CiAKIHN0
YXRpYyBHc3RBdWRpb0NoYW5uZWxQb3NpdGlvbiB3ZWJLaXRXZWJBdWRpb0dTdHJlYW1lckNoYW5u
ZWxQb3NpdGlvbihpbnQgY2hhbm5lbEluZGV4KQpAQCAtMTAzLDExICsxMTMsMTQgQEAgc3RhdGlj
IEdzdEF1ZGlvQ2hhbm5lbFBvc2l0aW9uIHdlYktpdFdlYkF1ZGlvR1N0cmVhbWVyQ2hhbm5lbFBv
c2l0aW9uKGludCBjaGFubmUKICAgICAgICAgcG9zaXRpb24gPSBHU1RfQVVESU9fQ0hBTk5FTF9Q
T1NJVElPTl9GUk9OVF9SSUdIVDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBdWRpb0J1czo6
Q2hhbm5lbENlbnRlcjoKLSAgICAgICAgLy8gQ2VudGVyIGFuZCBtb25vIGFyZSB0aGUgc2FtZS4K
LSAgICAgICAgcG9zaXRpb24gPSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9NT05P
OworICAgICAgICBwb3NpdGlvbiA9IEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX0NF
TlRFUjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBdWRpb0J1czo6Q2hhbm5lbExGRToKKyNp
ZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgICAgICBwb3NpdGlvbiA9IEdTVF9BVURJT19DSEFO
TkVMX1BPU0lUSU9OX0xGRTE7CisjZWxzZQogICAgICAgICBwb3NpdGlvbiA9IEdTVF9BVURJT19D
SEFOTkVMX1BPU0lUSU9OX0xGRTsKKyNlbmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNlIEF1
ZGlvQnVzOjpDaGFubmVsU3Vycm91bmRMZWZ0OgogICAgICAgICBwb3NpdGlvbiA9IEdTVF9BVURJ
T19DSEFOTkVMX1BPU0lUSU9OX1JFQVJfTEVGVDsKQEAgLTEzNCwxMSArMTQ3LDcgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl9hdWRpb19zcmNfY2xhc3NfaW5pdChXZWJLaXRXZWJBdWRpb1NyY0Ns
YXNzKiB3ZWJLaXRXZWJBdWQKICAgICBHc3RFbGVtZW50Q2xhc3MqIGVsZW1lbnRDbGFzcyA9IEdT
VF9FTEVNRU5UX0NMQVNTKHdlYktpdFdlYkF1ZGlvU3JjQ2xhc3MpOwogCiAgICAgZ3N0X2VsZW1l
bnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZShlbGVtZW50Q2xhc3MsIGdzdF9zdGF0aWNfcGFkX3Rl
bXBsYXRlX2dldCgmc3JjVGVtcGxhdGUpKTsKLSAgICBnc3RfZWxlbWVudF9jbGFzc19zZXRfZGV0
YWlsc19zaW1wbGUoZWxlbWVudENsYXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiV2ViS2l0IFdlYkF1ZGlvIHNvdXJjZSBlbGVtZW50IiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNvdXJjZSIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJIYW5kbGVzIFdlYkF1ZGlvIGRhdGEgZnJvbSBXZWJD
b3JlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBoaWxpcHBl
IE5vcm1hbmQgPHBub3JtYW5kQGlnYWxpYS5jb20+Iik7CisgICAgc2V0R3N0RWxlbWVudENsYXNz
TWV0YWRhdGEoZWxlbWVudENsYXNzLCAiV2ViS2l0IFdlYkF1ZGlvIHNvdXJjZSBlbGVtZW50Iiwg
IlNvdXJjZSIsICJIYW5kbGVzIFdlYkF1ZGlvIGRhdGEgZnJvbSBXZWJDb3JlIiwgIlBoaWxpcHBl
IE5vcm1hbmQgPHBub3JtYW5kQGlnYWxpYS5jb20+Iik7CiAKICAgICBvYmplY3RDbGFzcy0+Y29u
c3RydWN0ZWQgPSB3ZWJLaXRXZWJBdWRpb1NyY0NvbnN0cnVjdGVkOwogICAgIG9iamVjdENsYXNz
LT5maW5hbGl6ZSA9IHdlYktpdFdlYkF1ZGlvU3JjRmluYWxpemU7CkBAIC0xODUsOSArMTk0LDE0
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfYXVkaW9fc3JjX2luaXQoV2ViS2l0V2ViQXVkaW9T
cmMqIHNyYykKICAgICBwcml2LT5wcm92aWRlciA9IDA7CiAgICAgcHJpdi0+YnVzID0gMDsKIAor
I2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgZ19yZWNfbXV0ZXhfaW5pdCgmcHJpdi0+bXV0
ZXgpOworICAgIHByaXYtPnRhc2sgPSBnc3RfdGFza19uZXcocmVpbnRlcnByZXRfY2FzdDxHc3RU
YXNrRnVuY3Rpb24+KHdlYktpdFdlYkF1ZGlvU3JjTG9vcCksIHNyYywgcmVpbnRlcnByZXRfY2Fz
dDxHRGVzdHJveU5vdGlmeT4oZ19vYmplY3RfdW5yZWYpKTsKKyNlbHNlCiAgICAgZ19zdGF0aWNf
cmVjX211dGV4X2luaXQoJnByaXYtPm11dGV4KTsKLQogICAgIHByaXYtPnRhc2sgPSBnc3RfdGFz
a19jcmVhdGUocmVpbnRlcnByZXRfY2FzdDxHc3RUYXNrRnVuY3Rpb24+KHdlYktpdFdlYkF1ZGlv
U3JjTG9vcCksIHNyYyk7CisjZW5kaWYKKwogICAgIGdzdF90YXNrX3NldF9sb2NrKHByaXYtPnRh
c2suZ2V0KCksICZwcml2LT5tdXRleCk7CiB9CiAKQEAgLTIyNCw3ICsyMzgsMTcgQEAgc3RhdGlj
IHZvaWQgd2ViS2l0V2ViQXVkaW9TcmNDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAg
ICAgIEdzdEVsZW1lbnQqIGF1ZGlvY29udmVydCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgi
YXVkaW9jb252ZXJ0IiwgMCk7CiAKICAgICAgICAgR1JlZlB0cjxHc3RDYXBzPiBtb25vQ2FwcyA9
IGFkb3B0R1JlZihnZXRHU3RyZWFtZXJNb25vQXVkaW9DYXBzKHByaXYtPnNhbXBsZVJhdGUpKTsK
KworI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgICAgIEdzdEF1ZGlvQ2hhbm5lbFBvc2l0
aW9uIGNoYW5uZWxQb3NpdGlvbiA9IHdlYktpdFdlYkF1ZGlvR1N0cmVhbWVyQ2hhbm5lbFBvc2l0
aW9uKGNoYW5uZWxJbmRleCk7CisgICAgICAgIEdzdEF1ZGlvSW5mbyBpbmZvOworICAgICAgICBn
c3RfYXVkaW9faW5mb19mcm9tX2NhcHMoJmluZm8sIG1vbm9DYXBzLmdldCgpKTsKKyAgICAgICAg
R1NUX0FVRElPX0lORk9fUE9TSVRJT04oJmluZm8sIDApID0gY2hhbm5lbFBvc2l0aW9uOworICAg
ICAgICBHUmVmUHRyPEdzdENhcHM+IGNhcHMgPSBhZG9wdEdSZWYoZ3N0X2F1ZGlvX2luZm9fdG9f
Y2FwcygmaW5mbykpOworICAgICAgICBnX29iamVjdF9zZXQoY2Fwc2ZpbHRlciwgImNhcHMiLCBj
YXBzLmdldCgpLCBOVUxMKTsKKyNlbHNlCiAgICAgICAgIGdfb2JqZWN0X3NldChjYXBzZmlsdGVy
LCAiY2FwcyIsIG1vbm9DYXBzLmdldCgpLCBOVUxMKTsKKyNlbmRpZgogCiAgICAgICAgIC8vIENv
bmZpZ3VyZSB0aGUgcXVldWUgZm9yIG1pbmltYWwgbGF0ZW5jeS4KICAgICAgICAgZ19vYmplY3Rf
c2V0KHF1ZXVlLCAibWF4LXNpemUtYnVmZmVycyIsIHN0YXRpY19jYXN0PGd1aW50PigxKSwgTlVM
TCk7CkBAIC0yNTAsNyArMjc0LDExIEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYkF1ZGlvU3JjRmlu
YWxpemUoR09iamVjdCogb2JqZWN0KQogICAgIFdlYktpdFdlYkF1ZGlvU3JjKiBzcmMgPSBXRUJL
SVRfV0VCX0FVRElPX1NSQyhvYmplY3QpOwogICAgIFdlYktpdFdlYkF1ZGlvU291cmNlUHJpdmF0
ZSogcHJpdiA9IHNyYy0+cHJpdjsKIAorI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgZ19y
ZWNfbXV0ZXhfY2xlYXIoJnByaXYtPm11dGV4KTsKKyNlbHNlCiAgICAgZ19zdGF0aWNfcmVjX211
dGV4X2ZyZWUoJnByaXYtPm11dGV4KTsKKyNlbmRpZgogCiAgICAgZ19zbGlzdF9mcmVlX2Z1bGwo
cHJpdi0+cGFkcywgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZ3N0X29iamVjdF91
bnJlZikpOwogCkBAIC0zMjEsNyArMzQ5LDE0IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYkF1ZGlv
U3JjTG9vcChXZWJLaXRXZWJBdWRpb1NyYyogc3JjKQogICAgICAgICBHc3RCdWZmZXIqIGNoYW5u
ZWxCdWZmZXIgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MoYnVmZmVyU2l6ZSk7CiAgICAgICAg
IEFTU0VSVChjaGFubmVsQnVmZmVyKTsKICAgICAgICAgY2hhbm5lbEJ1ZmZlckxpc3QgPSBnX3Ns
aXN0X3ByZXBlbmQoY2hhbm5lbEJ1ZmZlckxpc3QsIGNoYW5uZWxCdWZmZXIpOworI2lmZGVmIEdT
VF9BUElfVkVSU0lPTl8xCisgICAgICAgIEdzdE1hcEluZm8gaW5mbzsKKyAgICAgICAgZ3N0X2J1
ZmZlcl9tYXAoY2hhbm5lbEJ1ZmZlciwgJmluZm8sIEdTVF9NQVBfUkVBRCk7CisgICAgICAgIHBy
aXYtPmJ1cy0+c2V0Q2hhbm5lbE1lbW9yeShpLCByZWludGVycHJldF9jYXN0PGZsb2F0Kj4oaW5m
by5kYXRhKSwgcHJpdi0+ZnJhbWVzVG9QdWxsKTsKKyAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcChj
aGFubmVsQnVmZmVyLCAmaW5mbyk7CisjZWxzZQogICAgICAgICBwcml2LT5idXMtPnNldENoYW5u
ZWxNZW1vcnkoaSwgcmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KEdTVF9CVUZGRVJfREFUQShjaGFu
bmVsQnVmZmVyKSksIHByaXYtPmZyYW1lc1RvUHVsbCk7CisjZW5kaWYKICAgICB9CiAgICAgY2hh
bm5lbEJ1ZmZlckxpc3QgPSBnX3NsaXN0X3JldmVyc2UoY2hhbm5lbEJ1ZmZlckxpc3QpOwogCkBA
IC0zMzIsMTMgKzM2NywxNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJBdWRpb1NyY0xvb3AoV2Vi
S2l0V2ViQXVkaW9TcmMqIHNyYykKICAgICAgICAgR3N0UGFkKiBwYWQgPSBzdGF0aWNfY2FzdDxH
c3RQYWQqPihnX3NsaXN0X250aF9kYXRhKHByaXYtPnBhZHMsIGkpKTsKICAgICAgICAgR3N0QnVm
ZmVyKiBjaGFubmVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8R3N0QnVmZmVyKj4oZ19zbGlzdF9udGhf
ZGF0YShjaGFubmVsQnVmZmVyTGlzdCwgaSkpOwogCisjaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8x
CiAgICAgICAgIEdSZWZQdHI8R3N0Q2Fwcz4gbW9ub0NhcHMgPSBhZG9wdEdSZWYoZ2V0R1N0cmVh
bWVyTW9ub0F1ZGlvQ2Fwcyhwcml2LT5zYW1wbGVSYXRlKSk7CiAgICAgICAgIEdzdFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZShtb25vQ2Fwcy5nZXQoKSwgMCk7
CiAgICAgICAgIEdzdEF1ZGlvQ2hhbm5lbFBvc2l0aW9uIGNoYW5uZWxQb3NpdGlvbiA9IHdlYktp
dFdlYkF1ZGlvR1N0cmVhbWVyQ2hhbm5lbFBvc2l0aW9uKGkpOwogICAgICAgICBnc3RfYXVkaW9f
c2V0X2NoYW5uZWxfcG9zaXRpb25zKHN0cnVjdHVyZSwgJmNoYW5uZWxQb3NpdGlvbik7CiAgICAg
ICAgIGdzdF9idWZmZXJfc2V0X2NhcHMoY2hhbm5lbEJ1ZmZlciwgbW9ub0NhcHMuZ2V0KCkpOwor
I2VuZGlmCiAKLSAgICAgICAgZ3N0X3BhZF9jaGFpbihwYWQsIGNoYW5uZWxCdWZmZXIpOworICAg
ICAgICBHc3RGbG93UmV0dXJuIHJldCA9IGdzdF9wYWRfY2hhaW4ocGFkLCBjaGFubmVsQnVmZmVy
KTsKKyAgICAgICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykKKyAgICAgICAgICAgIEdTVF9FTEVN
RU5UX0VSUk9SKHNyYywgQ09SRSwgUEFELCAoIkludGVybmFsIFdlYkF1ZGlvU3JjIGVycm9yIiks
ICgiRmFpbGVkIHRvIHB1c2ggYnVmZmVyIG9uICVzIiwgR1NUX0RFQlVHX1BBRF9OQU1FKHBhZCkp
KTsKICAgICB9CiAKICAgICBnX3NsaXN0X2ZyZWUoY2hhbm5lbEJ1ZmZlckxpc3QpOwpAQCAtMzc1
LDExICs0MTQsMTUgQEAgc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHdlYktpdFdlYkF1ZGlv
U3JjQ2hhbmdlU3RhdGUoR3N0RWxlbWVudCogZWxlbWVudCwgR3MKICAgICBzd2l0Y2ggKHRyYW5z
aXRpb24pIHsKICAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fUEFVU0VEOgogICAg
ICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlJFQURZLT5QQVVTRUQiKTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBHU1RfU1RBVEVfQ0hBTkdFX05PX1BSRVJPTEw7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUExBWUlORzoKKyAgICAgICAgR1NU
X0RFQlVHX09CSkVDVChzcmMsICJQQVVTRUQtPlBMQVlJTkciKTsKICAgICAgICAgaWYgKCFnc3Rf
dGFza19zdGFydChzcmMtPnByaXYtPnRhc2suZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJuVmFs
dWUgPSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
R1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUkVBRFk6Ci0gICAgICAgIEdTVF9ERUJVR19PQkpF
Q1Qoc3JjLCAiUEFVU0VELT5SRUFEWSIpOworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QTEFZ
SU5HX1RPX1BBVVNFRDoKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQTEFZSU5HLT5Q
QVVTRUQiKTsKICAgICAgICAgaWYgKCFnc3RfdGFza19qb2luKHNyYy0+cHJpdi0+dGFzay5nZXQo
KSkpCiAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRTsK
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1l
ci5oCmluZGV4IDU3ZGUxMjIuLmI2ZGRiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRp
b1NvdXJjZUdTdHJlYW1lci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMp
IDIwMTEgSWdhbGlhIFMuTAorICogIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBJZ2FsaWEgUy5M
CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCi0tIAoxLjcuMTAuNA==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180894</attachid>
            <date>2012-12-28 13:00:33 -0800</date>
            <delta_ts>2013-01-03 12:01:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>29020</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA5ODk4MWZiOTI1NTI1ZmZhNGEwZGVjODhlZmI0ZjBhMGZmOTA0ZWY1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBGcmksIDIxIERlYyAyMDEyIDE1OjE1OjM5ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDYyICsrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9G
RlRGcmFtZS5jcHAgICAgICAgICB8ICAgIDMgKwogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRkZURnJhbWUuaCAgICAgICAgICAgfCAgICA0ICsKIC4uLi9hdWRpby9nc3RyZWFtZXIvQXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgIHwgICAxMyArKy0KIC4uLi9hdWRpby9nc3RyZWFt
ZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oICAgIHwgICAgMiArLQogLi4uL2F1ZGlvL2dz
dHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwICAgfCAgMTE2ICsrKysrKysrKysr
KysrKysrLS0tCiAuLi4vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNw
cCAgICB8ICAgNzkgKysrKysrKysrKy0tLQogLi4uL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1Nv
dXJjZUdTdHJlYW1lci5oICAgICAgfCAgICAyICstCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lclZlcnNpb25pbmcuY3BwICAgICB8ICAgMjQgKysrKwogLi4uL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmggICAgICAgfCAgICAzICsKIDEwIGZpbGVzIGNoYW5n
ZWQsIDI3MiBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjQ4
MmQxYS4uMTYzNjQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY3IEBACiAyMDEyLTEyLTE4ICBQ
aGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAorICAgICAgICBbR1N0cmVh
bWVyXSBQb3J0IFdlYkF1ZGlvIGJhY2tlbmQgdG8gMS4wIEFQSXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTI5MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcnQgdGhlIEF1ZGlvRmlsZVJlYWRlciBh
bmQgQXVkaW9EZXN0aW5hdGlvbiB0byBHU3RyZWFtZXIgMS4wCisgICAgICAgIEFQSXMuIEl0IHdv
dWxkIGJlIHByZWZlcmFibGUgdG8gcmVseSBvbiBhdCBsZWFzdCBHU3RyZWFtZXIgMS4wLjQKKyAg
ICAgICAgZm9yIHRoaXMgdG8gd29yayBwcm9wZXJseSBhcyB0aGF0IHJlbGVhc2UgY29udGFpbnMg
dHdvIGJ1ZyBmaXhlcworICAgICAgICBmb3IgdGhlIGRlaW50ZXJsZWF2ZSBhbmQgaW50ZXJsZWF2
ZSBlbGVtZW50cy4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpyZXBvcnRNZW1vcnlVc2FnZSk6IERvbid0IHJlcG9y
dCBHc3RGRlRGMzIKKyAgICAgICAgc3RydWN0dXJlcyBhbnltb3JlIGJlY2F1c2UgdGhleSdyZSBv
cGFxdWUgaW4gR1N0cmVhbWVyIDEuMC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9GRlRGcmFt
ZS5oOiBnc3RmZnRmMzIuaCBpcyBwcm90ZWN0ZWQgYnkKKyAgICAgICAgR19CRUdJTl8vRU5EX0RF
Q0xTIGluIEdTdHJlYW1lciAxLjAgYWxyZWFkeS4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVz
dGluYXRpb25HU3RyZWFtZXIpOgorICAgICAgICBUaGUgd2F2cGFyc2UgZWxlbWVudCBpbiAxLjAg
aGFzIG5vIHNvbWV0aW1lcy1wYWRzIGFueW1vcmUuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
Z3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHA6CisgICAgICAgIChBdWRpb0Zp
bGVSZWFkZXIpOiBUaGUgZGVjb2RlYmluMiBlbGVtZW50IGhhcyBiZWVuIHJlbmFtZWQgdG8KKyAg
ICAgICAgZGVjb2RlYmluIGluIEdTdHJlYW1lciAxLjAuCisgICAgICAgIChXZWJDb3JlOjpnZXRH
U3RyZWFtZXJBdWRpb0NhcHMpOiBBdWRpbyBjYXBzIGRlc2NyaXB0aW9uIGNoYW5nZWQgYQorICAg
ICAgICBsb3QgaW4gR1N0cmVhbWVyIDEuMCwgdGhlIGZ1bmN0aW9uIG5vdyBoYW5kbGVzIGJvdGgg
QVBJcy4KKyAgICAgICAgKFdlYkNvcmU6OmNvcHlHc3RyZWFtZXJCdWZmZXJzVG9BdWRpb0NoYW5u
ZWwpOiBBZGFwdGVkIHRvCisgICAgICAgIEdzdEJ1ZmZlckxpc3QgYW5kIEdzdEJ1ZmZlciBBUEkg
Y2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6Om9uQXBwc2lua1B1bGxSZXF1aXJlZENhbGxiYWNr
KTogUHVsbCBhIHNhbXBsZSBvciBidWZmZXIsCisgICAgICAgIGRlcGVuZGluZyBvbiB3aGljaCBB
UEkgd2UgdXNlLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjp+QXVkaW9GaWxl
UmVhZGVyKTogUHJvdGVjdAorICAgICAgICBHc3RCdWZmZXJMaXN0SXRlcmF0b3JzIGluIDAuMTAt
b25seSBjb2RlIHBhdGguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvRmlsZVJlYWRlcjo6aGFuZGxlU2FtcGxlKTogUHVsbCBhbiBhdWRpbyBzYW1wbGUKKyAgICAg
ICAgZnJvbSBhcHBzaW5rIGFuZCBpbnNlcnQgaXQgaW4gdGhlIGFwcHJvcHJpYXRlIGJ1ZmZlciBs
aXN0LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVOZXdEZWludGVy
bGVhdmVQYWQpOiBIYW5kbGUKKyAgICAgICAgYXBwc2luayBBUEkgY2hhbmdlcyBmcm9tIEdTdHJl
YW1lciAwLjEwIHRvIDEuMC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6ZGVj
b2RlQXVkaW9Gb3JCdXNDcmVhdGlvbik6IENyZWF0ZSB0aGUKKyAgICAgICAgY29ycmVjdCBkZWNv
ZGViaW4gZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRl
QnVzKTogUHJvdGVjdCBHc3RCdWZmZXJMaXN0SXRlcmF0b3JzCisgICAgICAgIGluIDAuMTAtb25s
eSBjb2RlIHBhdGguCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdl
YkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKF9XZWJLaXRXZWJBdWRpb1NvdXJj
ZVByaXZhdGUpOiBHc3RUYXNrIGluIEdTdHJlYW1lciAxLjAgdXNlcyBhCisgICAgICAgIEdSZWNN
dXRleCBpbnN0ZWFkIG9mIGEgKGRlcHJlY2F0ZWQpIEdTdGF0aWNSZWNNdXRleC4KKyAgICAgICAg
KGdldEdTdHJlYW1lck1vbm9BdWRpb0NhcHMpOiBIYW5kbGUgY2FwcyBkZXNjcmlwdGlvbiBjaGFu
Z2VzCisgICAgICAgIGJldHdlZW4gR1N0cmVhbWVyIDAuMTAgYW5kIDEuMC4KKyAgICAgICAgKHdl
YktpdFdlYkF1ZGlvR1N0cmVhbWVyQ2hhbm5lbFBvc2l0aW9uKTogUE9TSVRJT05fTEZFIGluCisg
ICAgICAgIEdTdHJlYW1lciAxLjAgaXMgbm93IFBPU0lUSU9OX0xGRTEuIEFsc28gbWFwIENoYW5u
ZWxDZW50ZXIgdG8gaXRzCisgICAgICAgIEdTdHJlYW1lciBlcXVpdmFsZW50LgorICAgICAgICAo
d2Via2l0X3dlYl9hdWRpb19zcmNfY2xhc3NfaW5pdCk6IFVzZSBnZW5lcmljIHNldEdzdEVsZW1l
bnRDbGFzc01ldGFkYXRhLgorICAgICAgICAod2Via2l0X3dlYl9hdWRpb19zcmNfaW5pdCk6IEhh
bmRsZSBHUmVjTXV0ZXggaW5pdGlhbGlzYXRpb24uCisgICAgICAgICh3ZWJLaXRXZWJBdWRpb1Ny
Y0NvbnN0cnVjdGVkKTogU2V0IGNoYW5uZWwgcG9zaXRpb24gb24KKyAgICAgICAgY2Fwc2ZpbHRl
ci4gVGhpcyBpcyBkb25lIGZvciBHU3RyZWFtZXIgMS4wIGNvZGUgcGF0aCBvbmx5IGJlY2F1c2UK
KyAgICAgICAgaW4gMC4xMCB0aGUgY2FwcyBoYXZlIG5vIHdheSB0byBzdG9yZSB0aGlzIGluZm9y
bWF0aW9uLgorICAgICAgICAod2ViS2l0V2ViQXVkaW9TcmNGaW5hbGl6ZSk6IENsZWFyIEdSZWNN
dXRleC4KKyAgICAgICAgKHdlYktpdFdlYkF1ZGlvU3JjTG9vcCk6IEhhbmRsZSBHc3RCdWZmZXIg
QVBJIGNoYW5nZXMgYW5kIGFkZCBhbgorICAgICAgICBlcnJvciBjaGVjayBpZiBidWZmZXJzIGNh
bid0IGJlIGNoYWluZWQgdG8gcXVldWUncyBzb3VyY2UgcGFkLgorICAgICAgICAod2ViS2l0V2Vi
QXVkaW9TcmNDaGFuZ2VTdGF0ZSk6IEFzIGFkdmlzZWQgaW4gdGhlIEdTdHJlYW1lciBkb2NzLAor
ICAgICAgICBmaXh1cCB0aGUgc3RhdGUgY2hhbmdlcyBmb3IgdGhpcyBsaXZlIHNvdXJjZSBlbGVt
ZW50OiBOT19QUkVST0xMCisgICAgICAgIGluIFJFQURZLT5QQVVTRUQgYW5kIHN0YXJ0L3N0b3Ag
dGhlIEdzdFRhc2sgd2hlbiBnb2luZy9jb21pbmcKKyAgICAgICAgdG8vZnJvbSBQTEFZSU5HLgor
CisyMDEyLTEyLTE4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKwog
ICAgICAgICBbR1N0cmVhbWVyXSBHc3RNZXNzYWdlIGhhbmRsZXIgaW4gQXVkaW9EZXN0aW5hdGlv
bgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1Mjky
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcAppbmRleCBlZWU0
NWRlLi5jMzUyYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9G
RlRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUu
Y3BwCkBAIC0yNzksOCArMjc5LDExIEBAIHZvaWQgRkZURnJhbWU6OnJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAjZW5kaWYgLy8gVVNF
KFdFQkFVRElPX0ZGTVBFRykKIAogI2lmIFVTRShXRUJBVURJT19HU1RSRUFNRVIpCisjaWZuZGVm
IEdTVF9BUElfVkVSU0lPTl8xCisgICAgLy8gVGhlIEdzdEZGVEYzMiBzdHJ1Y3R1cmUgaXMgZXhw
b3NlZCBwdWJsaWNseSBpbiBHU3RyZWFtZXIgMC4xMCBvbmx5LgogICAgIGluZm8uYWRkTWVtYmVy
KG1fZmZ0KTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2ludmVyc2VGZnQpOworI2VuZGlmCiAgICAg
aW5mby5hZGRNZW1iZXIobV9jb21wbGV4RGF0YSk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9yZWFs
RGF0YSk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9pbWFnRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vRkZURnJhbWUuaAppbmRleCA2YzE1MzQ5Li5iNDgzY2I0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgKQEAgLTQ5LDkgKzQ5LDEzIEBACiAKICNp
ZiBVU0UoV0VCQVVESU9fR1NUUkVBTUVSKQogI2luY2x1ZGUgPGdsaWIuaD4KKyNpZm5kZWYgR1NU
X0FQSV9WRVJTSU9OXzEKIEdfQkVHSU5fREVDTFMKKyNlbmRpZgogI2luY2x1ZGUgPGdzdC9mZnQv
Z3N0ZmZ0ZjMyLmg+CisjaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCiBHX0VORF9ERUNMUworI2Vu
ZGlmCiAjZW5kaWYgLy8gVVNFKFdFQkFVRElPX0dTVFJFQU1FUikKIAogI2lmIFVTRShXRUJBVURJ
T19GRk1QRUcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKaW5kZXgg
NDM4NmM0Zi4uNGFlMjQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVy
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBT
LkwKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgSWdhbGlhIFMuTAogICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwpAQCAtNTEsMTAgKzUxLDEyIEBAIGZsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3
YXJlU2FtcGxlUmF0ZSgpCiAgICAgcmV0dXJuIDQ0MTAwOwogfQogCisjaWZuZGVmIEdTVF9BUElf
VkVSU0lPTl8xCiBzdGF0aWMgdm9pZCBvbkdTdHJlYW1lcldhdnBhcnNlUGFkQWRkZWRDYWxsYmFj
ayhHc3RFbGVtZW50KiwgR3N0UGFkKiBwYWQsIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIqIGRl
c3RpbmF0aW9uKQogewogICAgIGRlc3RpbmF0aW9uLT5maW5pc2hCdWlsZGluZ1BpcGVsaW5lQWZ0
ZXJXYXZQYXJzZXJQYWRSZWFkeShwYWQpOwogfQorI2VuZGlmCiAKIEF1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxs
YmFjaywgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCkBAIC04
MCw5ICs4MiwxNiBAQCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9u
R1N0cmVhbWVyKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssCiAgICAgaWYgKCFtX3dhdlBhcnNl
ckF2YWlsYWJsZSkKICAgICAgICAgcmV0dXJuOwogCisjaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8x
CiAgICAgZ19zaWduYWxfY29ubmVjdCh3YXZQYXJzZXIsICJwYWQtYWRkZWQiLCBHX0NBTExCQUNL
KG9uR1N0cmVhbWVyV2F2cGFyc2VQYWRBZGRlZENhbGxiYWNrKSwgdGhpcyk7CisjZW5kaWYKICAg
ICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU4obV9waXBlbGluZSksIHdlYmtpdEF1ZGlvU3JjLCB3
YXZQYXJzZXIsIE5VTEwpOwogICAgIGdzdF9lbGVtZW50X2xpbmtfcGFkc19mdWxsKHdlYmtpdEF1
ZGlvU3JjLCAic3JjIiwgd2F2UGFyc2VyLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RI
SU5HKTsKKworI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgR1JlZlB0cjxHc3RQYWQ+IHNy
Y1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCh3YXZQYXJzZXIsICJz
cmMiKSk7CisgICAgZmluaXNoQnVpbGRpbmdQaXBlbGluZUFmdGVyV2F2UGFyc2VyUGFkUmVhZHko
c3JjUGFkLmdldCgpKTsKKyNlbmRpZgogfQogCiBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjp+
QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcigpCkBAIC0xMjEsNyArMTMwLDcgQEAgdm9pZCBBdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpmaW5pc2hCdWlsZGluZ1BpcGVsaW5lQWZ0ZXJXYXZQYXJz
ZXJQYWRSZWFkeShHc3QKIAogICAgIC8vIExpbmsgd2F2cGFyc2UncyBzcmMgcGFkIHRvIGF1ZGlv
Y29udmVydCBzaW5rIHBhZC4KICAgICBHUmVmUHRyPEdzdFBhZD4gc2lua1BhZCA9IGFkb3B0R1Jl
Zihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChhdWRpb0NvbnZlcnQsICJzaW5rIikpOwotICAg
IGdzdF9wYWRfbGluayhwYWQsIHNpbmtQYWQuZ2V0KCkpOworICAgIGdzdF9wYWRfbGlua19mdWxs
KHBhZCwgc2lua1BhZC5nZXQoKSwgR1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOwogCiAgICAg
Ly8gTGluayBhdWRpb2NvbnZlcnQgdG8gYXVkaW9zaW5rIGFuZCByb2xsIHN0YXRlcy4KICAgICBn
c3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbChhdWRpb0NvbnZlcnQsICJzcmMiLCBhdWRpb1Npbmsu
Z2V0KCksICJzaW5rIiwgR1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmgKaW5kZXggMjZlMzQyZS4uMTNiZTE0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRp
b25HU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBD
b3B5cmlnaHQgKEMpIDIwMTEgUGhpbGlwcGUgTm9ybWFuZCA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgSWdhbGlhIFMuTAogICoKICAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVy
L0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcAppbmRleCAzNmRhNTQw
Li5lNWQwOWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcApAQCAt
MjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkF1ZGlvRmlsZVJlYWRlci5oIgogCiAjaW5jbHVkZSAi
QXVkaW9CdXMuaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJWZXJzaW9uaW5nLmgiCiAKICNpZiBQTEFU
Rk9STShRVCkKIC8vIENsZWFyIG91dCBvZmZlbmRpbmcgUXQgbWFjcm8gc28gdGhlIGZvbGxvd2lu
ZyBoZWFkZXIsIGdpby5oLCBjYW4gYmUgaW5jbHVkZWQuCkBAIC0zMyw3ICszNCwxMSBAQAogCiAj
aW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUgPGdzdC9hcHAvZ3N0YXBwc2luay5oPgorI2lm
ZGVmIEdTVF9BUElfVkVSU0lPTl8xCisjaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+CisjZWxz
ZQogI2luY2x1ZGUgPGdzdC9hdWRpby9tdWx0aWNoYW5uZWwuaD4KKyNlbmRpZgogI2luY2x1ZGUg
PGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvcGJ1dGlscy9wYnV0aWxzLmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CkBAIC00MSw2ICs0NiwxMiBAQAogI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAKKyNpZmRl
ZiBHU1RfQVBJX1ZFUlNJT05fMQorc3RhdGljIGNvbnN0IGNoYXIqIGdEZWNvZGViaW5OYW1lID0g
ImRlY29kZWJpbiI7CisjZWxzZQorc3RhdGljIGNvbnN0IGNoYXIqIGdEZWNvZGViaW5OYW1lID0g
ImRlY29kZWJpbjIiOworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVk
aW9GaWxlUmVhZGVyIHsKQEAgLTUyLDcgKzYzLDExIEBAIHB1YmxpYzoKIAogICAgIFBhc3NPd25Q
dHI8QXVkaW9CdXM+IGNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVSYXRlLCBib29sIG1peFRvTW9ubyk7
CiAKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgIEdzdEZsb3dSZXR1cm4gaGFuZGxlU2Ft
cGxlKEdzdEFwcFNpbmsqKTsKKyNlbHNlCiAgICAgR3N0Rmxvd1JldHVybiBoYW5kbGVCdWZmZXIo
R3N0QXBwU2luayopOworI2VuZGlmCiAgICAgZ2Jvb2xlYW4gaGFuZGxlTWVzc2FnZShHc3RNZXNz
YWdlKik7CiAgICAgdm9pZCBoYW5kbGVOZXdEZWludGVybGVhdmVQYWQoR3N0UGFkKik7CiAgICAg
dm9pZCBkZWludGVybGVhdmVQYWRzQ29uZmlndXJlZCgpOwpAQCAtNjYsOSArODEsMTMgQEAgcHJp
dmF0ZToKIAogICAgIGZsb2F0IG1fc2FtcGxlUmF0ZTsKICAgICBHc3RCdWZmZXJMaXN0KiBtX2Zy
b250TGVmdEJ1ZmZlcnM7Ci0gICAgR3N0QnVmZmVyTGlzdEl0ZXJhdG9yKiBtX2Zyb250TGVmdEJ1
ZmZlcnNJdGVyYXRvcjsKICAgICBHc3RCdWZmZXJMaXN0KiBtX2Zyb250UmlnaHRCdWZmZXJzOwor
CisjaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgR3N0QnVmZmVyTGlzdEl0ZXJhdG9yKiBt
X2Zyb250TGVmdEJ1ZmZlcnNJdGVyYXRvcjsKICAgICBHc3RCdWZmZXJMaXN0SXRlcmF0b3IqIG1f
ZnJvbnRSaWdodEJ1ZmZlcnNJdGVyYXRvcjsKKyNlbmRpZgorCiAgICAgR3N0RWxlbWVudCogbV9w
aXBlbGluZTsKICAgICB1bnNpZ25lZCBtX2NoYW5uZWxTaXplOwogICAgIEdSZWZQdHI8R3N0RWxl
bWVudD4gbV9kZWNvZGViaW47CkBAIC03NywxMyArOTYsMjEgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fZXJyb3JPY2N1cnJlZDsKIH07CiAKLXN0YXRpYyBHc3RDYXBzKiBnZXRHU3RyZWFtZXJBdWRp
b0NhcHMoaW50IGNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQotewotICAgIHJldHVybiBnc3Rf
Y2Fwc19uZXdfc2ltcGxlKCJhdWRpby94LXJhdy1mbG9hdCIsICJyYXRlIiwgR19UWVBFX0lOVCwg
c3RhdGljX2Nhc3Q8aW50PihzYW1wbGVSYXRlKSwgImNoYW5uZWxzIiwgR19UWVBFX0lOVCwgY2hh
bm5lbHMsICJlbmRpYW5uZXNzIiwgR19UWVBFX0lOVCwgR19CWVRFX09SREVSLCAid2lkdGgiLCBH
X1RZUEVfSU5ULCAzMiwgTlVMTCk7Ci19Ci0KIHN0YXRpYyB2b2lkIGNvcHlHc3RyZWFtZXJCdWZm
ZXJzVG9BdWRpb0NoYW5uZWwoR3N0QnVmZmVyTGlzdCogYnVmZmVycywgQXVkaW9DaGFubmVsKiBh
dWRpb0NoYW5uZWwpCiB7CisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICBnc2l6ZSBvZmZz
ZXQgPSAwOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBnc3RfYnVmZmVyX2xpc3RfbGVu
Z3RoKGJ1ZmZlcnMpOyBpKyspIHsKKyAgICAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RfYnVm
ZmVyX2xpc3RfZ2V0KGJ1ZmZlcnMsIGkpOworICAgICAgICBpZiAoYnVmZmVyKSB7CisgICAgICAg
ICAgICBHc3RNYXBJbmZvIGluZm87CisgICAgICAgICAgICBnc3RfYnVmZmVyX21hcChidWZmZXIs
ICZpbmZvLCBHU1RfTUFQX1JFQUQpOworICAgICAgICAgICAgbWVtY3B5KGF1ZGlvQ2hhbm5lbC0+
bXV0YWJsZURhdGEoKSArIG9mZnNldCwgcmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KGluZm8uZGF0
YSksIGluZm8uc2l6ZSk7CisgICAgICAgICAgICBvZmZzZXQgKz0gaW5mby5zaXplIC8gc2l6ZW9m
KGZsb2F0KTsKKyAgICAgICAgICAgIGdzdF9idWZmZXJfdW5tYXAoYnVmZmVyLCAmaW5mbyk7Cisg
ICAgICAgIH0KKyAgICB9CisjZWxzZQogICAgIEdzdEJ1ZmZlckxpc3RJdGVyYXRvciogaXRlciA9
IGdzdF9idWZmZXJfbGlzdF9pdGVyYXRlKGJ1ZmZlcnMpOwogICAgIGdzdF9idWZmZXJfbGlzdF9p
dGVyYXRvcl9uZXh0X2dyb3VwKGl0ZXIpOwogICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X2J1
ZmZlcl9saXN0X2l0ZXJhdG9yX21lcmdlX2dyb3VwKGl0ZXIpOwpAQCAtOTMsMTEgKzEyMCwxNiBA
QCBzdGF0aWMgdm9pZCBjb3B5R3N0cmVhbWVyQnVmZmVyc1RvQXVkaW9DaGFubmVsKEdzdEJ1ZmZl
ckxpc3QqIGJ1ZmZlcnMsIEF1ZGlvQ2hhbgogICAgIH0KIAogICAgIGdzdF9idWZmZXJfbGlzdF9p
dGVyYXRvcl9mcmVlKGl0ZXIpOworI2VuZGlmCiB9CiAKLXN0YXRpYyBHc3RGbG93UmV0dXJuIG9u
QXBwc2lua05ld0J1ZmZlckNhbGxiYWNrKEdzdEFwcFNpbmsqIHNpbmssIGdwb2ludGVyIHVzZXJE
YXRhKQorc3RhdGljIEdzdEZsb3dSZXR1cm4gb25BcHBzaW5rUHVsbFJlcXVpcmVkQ2FsbGJhY2so
R3N0QXBwU2luayogc2luaywgZ3BvaW50ZXIgdXNlckRhdGEpCiB7CisjaWZkZWYgR1NUX0FQSV9W
RVJTSU9OXzEKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXVkaW9GaWxlUmVhZGVyKj4odXNlckRh
dGEpLT5oYW5kbGVTYW1wbGUoc2luayk7CisjZWxzZQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxB
dWRpb0ZpbGVSZWFkZXIqPih1c2VyRGF0YSktPmhhbmRsZUJ1ZmZlcihzaW5rKTsKKyNlbmRpZgog
fQogCiBnYm9vbGVhbiBtZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiwgR3N0TWVzc2FnZSogbWVzc2Fn
ZSwgQXVkaW9GaWxlUmVhZGVyKiByZWFkZXIpCkBAIC0xNjUsMTIgKzE5Nyw1OCBAQCBBdWRpb0Zp
bGVSZWFkZXI6On5BdWRpb0ZpbGVSZWFkZXIoKQogICAgICAgICBtX2RlSW50ZXJsZWF2ZS5jbGVh
cigpOwogICAgIH0KIAorI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIGdzdF9idWZmZXJf
bGlzdF9pdGVyYXRvcl9mcmVlKG1fZnJvbnRMZWZ0QnVmZmVyc0l0ZXJhdG9yKTsKICAgICBnc3Rf
YnVmZmVyX2xpc3RfaXRlcmF0b3JfZnJlZShtX2Zyb250UmlnaHRCdWZmZXJzSXRlcmF0b3IpOwor
I2VuZGlmCiAgICAgZ3N0X2J1ZmZlcl9saXN0X3VucmVmKG1fZnJvbnRMZWZ0QnVmZmVycyk7CiAg
ICAgZ3N0X2J1ZmZlcl9saXN0X3VucmVmKG1fZnJvbnRSaWdodEJ1ZmZlcnMpOwogfQogCisjaWZk
ZWYgR1NUX0FQSV9WRVJTSU9OXzEKK0dzdEZsb3dSZXR1cm4gQXVkaW9GaWxlUmVhZGVyOjpoYW5k
bGVTYW1wbGUoR3N0QXBwU2luayogc2luaykKK3sKKyAgICBHc3RTYW1wbGUqIHNhbXBsZSA9IGdz
dF9hcHBfc2lua19wdWxsX3NhbXBsZShzaW5rKTsKKyAgICBpZiAoIXNhbXBsZSkKKyAgICAgICAg
cmV0dXJuIEdTVF9GTE9XX0VSUk9SOworCisgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3Rfc2Ft
cGxlX2dldF9idWZmZXIoc2FtcGxlKTsKKyAgICBpZiAoIWJ1ZmZlcikgeworICAgICAgICBnc3Rf
c2FtcGxlX3VucmVmKHNhbXBsZSk7CisgICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKyAg
ICB9CisKKyAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2FwcyhzYW1wbGUpOwor
ICAgIGlmICghY2FwcykgeworICAgICAgICBnc3Rfc2FtcGxlX3VucmVmKHNhbXBsZSk7CisgICAg
ICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKyAgICB9CisKKyAgICBHc3RBdWRpb0luZm8gaW5m
bzsKKyAgICBnc3RfYXVkaW9faW5mb19mcm9tX2NhcHMoJmluZm8sIGNhcHMpOworICAgIGludCBm
cmFtZXMgPSBHU1RfQ0xPQ0tfVElNRV9UT19GUkFNRVMoR1NUX0JVRkZFUl9EVVJBVElPTihidWZm
ZXIpLCBHU1RfQVVESU9fSU5GT19SQVRFKCZpbmZvKSk7CisKKyAgICAvLyBDaGVjayB0aGUgZmly
c3QgYXVkaW8gY2hhbm5lbC4gVGhlIGJ1ZmZlciBpcyBzdXBwb3NlZCB0byBzdG9yZQorICAgIC8v
IGRhdGEgb2YgYSBzaW5nbGUgY2hhbm5lbCBhbnl3YXkuCisgICAgc3dpdGNoIChHU1RfQVVESU9f
SU5GT19QT1NJVElPTigmaW5mbywgMCkpIHsKKyAgICBjYXNlIEdTVF9BVURJT19DSEFOTkVMX1BP
U0lUSU9OX0ZST05UX0xFRlQ6CisgICAgICAgIGdzdF9idWZmZXJfbGlzdF9hZGQobV9mcm9udExl
ZnRCdWZmZXJzLCBnc3RfYnVmZmVyX3JlZihidWZmZXIpKTsKKyAgICAgICAgbV9jaGFubmVsU2l6
ZSArPSBmcmFtZXM7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX0FVRElPX0NIQU5ORUxf
UE9TSVRJT05fRlJPTlRfUklHSFQ6CisgICAgICAgIGdzdF9idWZmZXJfbGlzdF9hZGQobV9mcm9u
dFJpZ2h0QnVmZmVycywgZ3N0X2J1ZmZlcl9yZWYoYnVmZmVyKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGdzdF9zYW1wbGVfdW5y
ZWYoc2FtcGxlKTsKKyAgICByZXR1cm4gR1NUX0ZMT1dfT0s7CisKK30KKyNlbmRpZgorCisjaWZu
ZGVmIEdTVF9BUElfVkVSU0lPTl8xCiBHc3RGbG93UmV0dXJuIEF1ZGlvRmlsZVJlYWRlcjo6aGFu
ZGxlQnVmZmVyKEdzdEFwcFNpbmsqIHNpbmspCiB7CiAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBn
c3RfYXBwX3NpbmtfcHVsbF9idWZmZXIoc2luayk7CkBAIC0yMjQsNiArMzAyLDcgQEAgR3N0Rmxv
d1JldHVybiBBdWRpb0ZpbGVSZWFkZXI6OmhhbmRsZUJ1ZmZlcihHc3RBcHBTaW5rKiBzaW5rKQog
ICAgIGdzdF9jYXBzX3VucmVmKGNhcHMpOwogICAgIHJldHVybiBHU1RfRkxPV19PSzsKIH0KKyNl
bmRpZgogCiBnYm9vbGVhbiBBdWRpb0ZpbGVSZWFkZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2Fn
ZSogbWVzc2FnZSkKIHsKQEAgLTI2MiwyMCArMzQxLDIwIEBAIHZvaWQgQXVkaW9GaWxlUmVhZGVy
OjpoYW5kbGVOZXdEZWludGVybGVhdmVQYWQoR3N0UGFkKiBwYWQpCiAgICAgR3N0QXBwU2lua0Nh
bGxiYWNrcyBjYWxsYmFja3M7CiAgICAgY2FsbGJhY2tzLmVvcyA9IDA7CiAgICAgY2FsbGJhY2tz
Lm5ld19wcmVyb2xsID0gMDsKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgIGNhbGxiYWNr
cy5uZXdfc2FtcGxlID0gb25BcHBzaW5rUHVsbFJlcXVpcmVkQ2FsbGJhY2s7CisjZWxzZQogICAg
IGNhbGxiYWNrcy5uZXdfYnVmZmVyX2xpc3QgPSAwOwotICAgIGNhbGxiYWNrcy5uZXdfYnVmZmVy
ID0gb25BcHBzaW5rTmV3QnVmZmVyQ2FsbGJhY2s7CisgICAgY2FsbGJhY2tzLm5ld19idWZmZXIg
PSBvbkFwcHNpbmtQdWxsUmVxdWlyZWRDYWxsYmFjazsKKyNlbmRpZgogICAgIGdzdF9hcHBfc2lu
a19zZXRfY2FsbGJhY2tzKEdTVF9BUFBfU0lOSyhzaW5rKSwgJmNhbGxiYWNrcywgdGhpcywgMCk7
CiAKICAgICBnX29iamVjdF9zZXQoc2luaywgInN5bmMiLCBGQUxTRSwgTlVMTCk7CiAKLSAgICBH
c3RDYXBzKiBjYXBzID0gZ2V0R1N0cmVhbWVyQXVkaW9DYXBzKDEsIG1fc2FtcGxlUmF0ZSk7Ci0g
ICAgZ3N0X2FwcF9zaW5rX3NldF9jYXBzKEdTVF9BUFBfU0lOSyhzaW5rKSwgY2Fwcyk7Ci0gICAg
Z3N0X2NhcHNfdW5yZWYoY2Fwcyk7Ci0KICAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU4obV9w
aXBlbGluZSksIHF1ZXVlLCBzaW5rLCBOVUxMKTsKIAogICAgIEdzdFBhZCogc2lua1BhZCA9IGdz
dF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHF1ZXVlLCAic2luayIpOwotICAgIGdzdF9wYWRfbGlu
ayhwYWQsIHNpbmtQYWQpOworICAgIGdzdF9wYWRfbGlua19mdWxsKHBhZCwgc2lua1BhZCwgR1NU
X1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOwogICAgIGdzdF9vYmplY3RfdW5yZWYoR1NUX09CSkVD
VChzaW5rUGFkKSk7CiAKICAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbChxdWV1ZSwgInNy
YyIsIHNpbmssICJzaW5rIiwgR1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOwpAQCAtMzA1LDE0
ICszODQsMTQgQEAgdm9pZCBBdWRpb0ZpbGVSZWFkZXI6OnBsdWdEZWludGVybGVhdmUoR3N0UGFk
KiBwYWQpCiAgICAgZ19zaWduYWxfY29ubmVjdChtX2RlSW50ZXJsZWF2ZS5nZXQoKSwgInBhZC1h
ZGRlZCIsIEdfQ0FMTEJBQ0sob25HU3RyZWFtZXJEZWludGVybGVhdmVQYWRBZGRlZENhbGxiYWNr
KSwgdGhpcyk7CiAgICAgZ19zaWduYWxfY29ubmVjdChtX2RlSW50ZXJsZWF2ZS5nZXQoKSwgIm5v
LW1vcmUtcGFkcyIsIEdfQ0FMTEJBQ0sob25HU3RyZWFtZXJEZWludGVybGVhdmVSZWFkeUNhbGxi
YWNrKSwgdGhpcyk7CiAKLSAgICBHc3RDYXBzKiBjYXBzID0gZ2V0R1N0cmVhbWVyQXVkaW9DYXBz
KDIsIG1fc2FtcGxlUmF0ZSk7CisgICAgR3N0Q2FwcyogY2FwcyA9IGdldEdzdEF1ZGlvQ2Fwcygy
LCBtX3NhbXBsZVJhdGUpOwogICAgIGdfb2JqZWN0X3NldChjYXBzRmlsdGVyLCAiY2FwcyIsIGNh
cHMsIE5VTEwpOwogICAgIGdzdF9jYXBzX3VucmVmKGNhcHMpOwogCiAgICAgZ3N0X2Jpbl9hZGRf
bWFueShHU1RfQklOKG1fcGlwZWxpbmUpLCBhdWRpb0NvbnZlcnQsIGF1ZGlvUmVzYW1wbGUsIGNh
cHNGaWx0ZXIsIG1fZGVJbnRlcmxlYXZlLmdldCgpLCBOVUxMKTsKIAogICAgIEdzdFBhZCogc2lu
a1BhZCA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKGF1ZGlvQ29udmVydCwgInNpbmsiKTsK
LSAgICBnc3RfcGFkX2xpbmsocGFkLCBzaW5rUGFkKTsKKyAgICBnc3RfcGFkX2xpbmtfZnVsbChw
YWQsIHNpbmtQYWQsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKICAgICBnc3Rfb2JqZWN0
X3VucmVmKEdTVF9PQkpFQ1Qoc2lua1BhZCkpOwogCiAgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRz
X2Z1bGwoYXVkaW9Db252ZXJ0LCAic3JjIiwgYXVkaW9SZXNhbXBsZSwgInNpbmsiLCBHU1RfUEFE
X0xJTktfQ0hFQ0tfTk9USElORyk7CkBAIC0zNDYsNyArNDI1LDcgQEAgdm9pZCBBdWRpb0ZpbGVS
ZWFkZXI6OmRlY29kZUF1ZGlvRm9yQnVzQ3JlYXRpb24oKQogICAgICAgICBnX29iamVjdF9zZXQo
c291cmNlLCAibG9jYXRpb24iLCBtX2ZpbGVQYXRoLCBOVUxMKTsKICAgICB9CiAKLSAgICBtX2Rl
Y29kZWJpbiA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiZGVjb2RlYmluMiIsICJkZWNvZGVi
aW4iKTsKKyAgICBtX2RlY29kZWJpbiA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZShnRGVjb2Rl
YmluTmFtZSwgImRlY29kZWJpbiIpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kZWNvZGViaW4u
Z2V0KCksICJwYWQtYWRkZWQiLCBHX0NBTExCQUNLKG9uR1N0cmVhbWVyRGVjb2RlYmluUGFkQWRk
ZWRDYWxsYmFjayksIHRoaXMpOwogCiAgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOKG1fcGlw
ZWxpbmUpLCBzb3VyY2UsIG1fZGVjb2RlYmluLmdldCgpLCBOVUxMKTsKQEAgLTM1OSwxMiArNDM4
LDE1IEBAIFBhc3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKGZs
b2F0IHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9Nb25vCiAgICAgbV9zYW1wbGVSYXRlID0gc2FtcGxl
UmF0ZTsKIAogICAgIG1fZnJvbnRMZWZ0QnVmZmVycyA9IGdzdF9idWZmZXJfbGlzdF9uZXcoKTsK
KyAgICBtX2Zyb250UmlnaHRCdWZmZXJzID0gZ3N0X2J1ZmZlcl9saXN0X25ldygpOworCisjaWZu
ZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgbV9mcm9udExlZnRCdWZmZXJzSXRlcmF0b3IgPSBn
c3RfYnVmZmVyX2xpc3RfaXRlcmF0ZShtX2Zyb250TGVmdEJ1ZmZlcnMpOwogICAgIGdzdF9idWZm
ZXJfbGlzdF9pdGVyYXRvcl9hZGRfZ3JvdXAobV9mcm9udExlZnRCdWZmZXJzSXRlcmF0b3IpOwog
Ci0gICAgbV9mcm9udFJpZ2h0QnVmZmVycyA9IGdzdF9idWZmZXJfbGlzdF9uZXcoKTsKICAgICBt
X2Zyb250UmlnaHRCdWZmZXJzSXRlcmF0b3IgPSBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0ZShtX2Zy
b250UmlnaHRCdWZmZXJzKTsKICAgICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfYWRkX2dyb3Vw
KG1fZnJvbnRSaWdodEJ1ZmZlcnNJdGVyYXRvcik7CisjZW5kaWYKIAogICAgIEdSZWZQdHI8R01h
aW5Db250ZXh0PiBjb250ZXh0ID0gZ19tYWluX2NvbnRleHRfbmV3KCk7CiAgICAgZ19tYWluX2Nv
bnRleHRfcHVzaF90aHJlYWRfZGVmYXVsdChjb250ZXh0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJj
ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
V2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDc3MTg0MWQuLjE5MzkzNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJL
aXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwKKyAqICBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgSWdhbGlhIFMuTAogICoKICAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpA
QCAtMjcsNyArMjcsMTEgQEAKICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5j
bHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkdTdHJlYW1lclZlcnNpb25pbmcu
aCIKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby5o
PgorI2Vsc2UKICNpbmNsdWRlIDxnc3QvYXVkaW8vbXVsdGljaGFubmVsLmg+CisjZW5kaWYKICNp
bmNsdWRlIDxnc3QvcGJ1dGlscy9wYnV0aWxzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwpAQCAtNDUsNiArNDksNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYkF1ZGlvU3JjQ2xhc3MgewogICAg
IEdzdEJpbkNsYXNzIHBhcmVudENsYXNzOwogfTsKIAorI2RlZmluZSBXRUJLSVRfV0VCX0FVRElP
X1NSQ19HRVRfUFJJVkFURShvYmopIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG9iaiks
IFdFQktJVF9UWVBFX1dFQkFVRElPX1NSQywgV2ViS2l0V2ViQXVkaW9Tb3VyY2VQcml2YXRlKSkK
IHN0cnVjdCBfV2ViS2l0V2ViQXVkaW9Tb3VyY2VQcml2YXRlIHsKICAgICBnZmxvYXQgc2FtcGxl
UmF0ZTsKICAgICBBdWRpb0J1cyogYnVzOwpAQCAtNTUsNyArNjAsMTEgQEAgc3RydWN0IF9XZWJL
aXRXZWJBdWRpb1NvdXJjZVByaXZhdGUgewogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gd2F2RW5j
b2RlcjsKIAogICAgIEdSZWZQdHI8R3N0VGFzaz4gdGFzazsKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJ
T05fMQorICAgIEdSZWNNdXRleCBtdXRleDsKKyNlbHNlCiAgICAgR1N0YXRpY1JlY011dGV4IG11
dGV4OworI2VuZGlmCiAKICAgICBHU0xpc3QqIHBhZHM7IC8vIExpc3Qgb2YgcXVldWUgc2luayBw
YWRzLiBPbmUgcXVldWUgZm9yIGVhY2ggcGxhbmFyIGF1ZGlvIGNoYW5uZWwuCiAgICAgR3N0UGFk
KiBzb3VyY2VQYWQ7IC8vIHNyYyBwYWQgb2YgdGhlIGVsZW1lbnQsIGludGVybGVhdmVkIHdhdiBk
YXRhIGlzIHB1c2hlZCB0byBpdC4KQEAgLTg1LDEwICs5NCwxNyBAQCBzdGF0aWMgdm9pZCB3ZWJL
aXRXZWJBdWRpb1NyY0xvb3AoV2ViS2l0V2ViQXVkaW9TcmMqKTsKIAogc3RhdGljIEdzdENhcHMq
IGdldEdTdHJlYW1lck1vbm9BdWRpb0NhcHMoZmxvYXQgc2FtcGxlUmF0ZSkKIHsKKyNpZmRlZiBH
U1RfQVBJX1ZFUlNJT05fMQorICAgIHJldHVybiBnc3RfY2Fwc19uZXdfc2ltcGxlKCJhdWRpby94
LXJhdyIsICJyYXRlIiwgR19UWVBFX0lOVCwgc3RhdGljX2Nhc3Q8aW50PihzYW1wbGVSYXRlKSwK
KyAgICAgICAgImNoYW5uZWxzIiwgR19UWVBFX0lOVCwgMSwKKyAgICAgICAgImZvcm1hdCIsIEdf
VFlQRV9TVFJJTkcsIGdzdF9hdWRpb19mb3JtYXRfdG9fc3RyaW5nKEdTVF9BVURJT19GT1JNQVRf
RjMyKSwKKyAgICAgICAgImxheW91dCIsIEdfVFlQRV9TVFJJTkcsICJub24taW50ZXJsZWF2ZWQi
LCBOVUxMKTsKKyNlbHNlCiAgICAgcmV0dXJuIGdzdF9jYXBzX25ld19zaW1wbGUoImF1ZGlvL3gt
cmF3LWZsb2F0IiwgInJhdGUiLCBHX1RZUEVfSU5ULCBzdGF0aWNfY2FzdDxpbnQ+KHNhbXBsZVJh
dGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFubmVscyIsIEdfVFlQRV9J
TlQsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZGlhbm5lc3MiLCBHX1RZ
UEVfSU5ULCBHX0JZVEVfT1JERVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndp
ZHRoIiwgR19UWVBFX0lOVCwgMzIsIE5VTEwpOworICAgICAgICAiY2hhbm5lbHMiLCBHX1RZUEVf
SU5ULCAxLAorICAgICAgICAiZW5kaWFubmVzcyIsIEdfVFlQRV9JTlQsIEdfQllURV9PUkRFUiwK
KyAgICAgICAgIndpZHRoIiwgR19UWVBFX0lOVCwgMzIsIE5VTEwpOworI2VuZGlmCiB9CiAKIHN0
YXRpYyBHc3RBdWRpb0NoYW5uZWxQb3NpdGlvbiB3ZWJLaXRXZWJBdWRpb0dTdHJlYW1lckNoYW5u
ZWxQb3NpdGlvbihpbnQgY2hhbm5lbEluZGV4KQpAQCAtMTAzLDExICsxMTksMTQgQEAgc3RhdGlj
IEdzdEF1ZGlvQ2hhbm5lbFBvc2l0aW9uIHdlYktpdFdlYkF1ZGlvR1N0cmVhbWVyQ2hhbm5lbFBv
c2l0aW9uKGludCBjaGFubmUKICAgICAgICAgcG9zaXRpb24gPSBHU1RfQVVESU9fQ0hBTk5FTF9Q
T1NJVElPTl9GUk9OVF9SSUdIVDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBdWRpb0J1czo6
Q2hhbm5lbENlbnRlcjoKLSAgICAgICAgLy8gQ2VudGVyIGFuZCBtb25vIGFyZSB0aGUgc2FtZS4K
LSAgICAgICAgcG9zaXRpb24gPSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9NT05P
OworICAgICAgICBwb3NpdGlvbiA9IEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX0NF
TlRFUjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBdWRpb0J1czo6Q2hhbm5lbExGRToKKyNp
ZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgICAgICBwb3NpdGlvbiA9IEdTVF9BVURJT19DSEFO
TkVMX1BPU0lUSU9OX0xGRTE7CisjZWxzZQogICAgICAgICBwb3NpdGlvbiA9IEdTVF9BVURJT19D
SEFOTkVMX1BPU0lUSU9OX0xGRTsKKyNlbmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNlIEF1
ZGlvQnVzOjpDaGFubmVsU3Vycm91bmRMZWZ0OgogICAgICAgICBwb3NpdGlvbiA9IEdTVF9BVURJ
T19DSEFOTkVMX1BPU0lUSU9OX1JFQVJfTEVGVDsKQEAgLTEzNCwxMSArMTUzLDcgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl9hdWRpb19zcmNfY2xhc3NfaW5pdChXZWJLaXRXZWJBdWRpb1NyY0Ns
YXNzKiB3ZWJLaXRXZWJBdWQKICAgICBHc3RFbGVtZW50Q2xhc3MqIGVsZW1lbnRDbGFzcyA9IEdT
VF9FTEVNRU5UX0NMQVNTKHdlYktpdFdlYkF1ZGlvU3JjQ2xhc3MpOwogCiAgICAgZ3N0X2VsZW1l
bnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZShlbGVtZW50Q2xhc3MsIGdzdF9zdGF0aWNfcGFkX3Rl
bXBsYXRlX2dldCgmc3JjVGVtcGxhdGUpKTsKLSAgICBnc3RfZWxlbWVudF9jbGFzc19zZXRfZGV0
YWlsc19zaW1wbGUoZWxlbWVudENsYXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiV2ViS2l0IFdlYkF1ZGlvIHNvdXJjZSBlbGVtZW50IiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNvdXJjZSIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJIYW5kbGVzIFdlYkF1ZGlvIGRhdGEgZnJvbSBXZWJD
b3JlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBoaWxpcHBl
IE5vcm1hbmQgPHBub3JtYW5kQGlnYWxpYS5jb20+Iik7CisgICAgc2V0R3N0RWxlbWVudENsYXNz
TWV0YWRhdGEoZWxlbWVudENsYXNzLCAiV2ViS2l0IFdlYkF1ZGlvIHNvdXJjZSBlbGVtZW50Iiwg
IlNvdXJjZSIsICJIYW5kbGVzIFdlYkF1ZGlvIGRhdGEgZnJvbSBXZWJDb3JlIiwgIlBoaWxpcHBl
IE5vcm1hbmQgPHBub3JtYW5kQGlnYWxpYS5jb20+Iik7CiAKICAgICBvYmplY3RDbGFzcy0+Y29u
c3RydWN0ZWQgPSB3ZWJLaXRXZWJBdWRpb1NyY0NvbnN0cnVjdGVkOwogICAgIG9iamVjdENsYXNz
LT5maW5hbGl6ZSA9IHdlYktpdFdlYkF1ZGlvU3JjRmluYWxpemU7CkBAIC0xODUsOSArMjAwLDE0
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfYXVkaW9fc3JjX2luaXQoV2ViS2l0V2ViQXVkaW9T
cmMqIHNyYykKICAgICBwcml2LT5wcm92aWRlciA9IDA7CiAgICAgcHJpdi0+YnVzID0gMDsKIAor
I2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgZ19yZWNfbXV0ZXhfaW5pdCgmcHJpdi0+bXV0
ZXgpOworICAgIHByaXYtPnRhc2sgPSBnc3RfdGFza19uZXcocmVpbnRlcnByZXRfY2FzdDxHc3RU
YXNrRnVuY3Rpb24+KHdlYktpdFdlYkF1ZGlvU3JjTG9vcCksIHNyYywgcmVpbnRlcnByZXRfY2Fz
dDxHRGVzdHJveU5vdGlmeT4oZ19vYmplY3RfdW5yZWYpKTsKKyNlbHNlCiAgICAgZ19zdGF0aWNf
cmVjX211dGV4X2luaXQoJnByaXYtPm11dGV4KTsKLQogICAgIHByaXYtPnRhc2sgPSBnc3RfdGFz
a19jcmVhdGUocmVpbnRlcnByZXRfY2FzdDxHc3RUYXNrRnVuY3Rpb24+KHdlYktpdFdlYkF1ZGlv
U3JjTG9vcCksIHNyYyk7CisjZW5kaWYKKwogICAgIGdzdF90YXNrX3NldF9sb2NrKHByaXYtPnRh
c2suZ2V0KCksICZwcml2LT5tdXRleCk7CiB9CiAKQEAgLTIyNCw3ICsyNDQsMTcgQEAgc3RhdGlj
IHZvaWQgd2ViS2l0V2ViQXVkaW9TcmNDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAg
ICAgIEdzdEVsZW1lbnQqIGF1ZGlvY29udmVydCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgi
YXVkaW9jb252ZXJ0IiwgMCk7CiAKICAgICAgICAgR1JlZlB0cjxHc3RDYXBzPiBtb25vQ2FwcyA9
IGFkb3B0R1JlZihnZXRHU3RyZWFtZXJNb25vQXVkaW9DYXBzKHByaXYtPnNhbXBsZVJhdGUpKTsK
KworI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgICAgIEdzdEF1ZGlvQ2hhbm5lbFBvc2l0
aW9uIGNoYW5uZWxQb3NpdGlvbiA9IHdlYktpdFdlYkF1ZGlvR1N0cmVhbWVyQ2hhbm5lbFBvc2l0
aW9uKGNoYW5uZWxJbmRleCk7CisgICAgICAgIEdzdEF1ZGlvSW5mbyBpbmZvOworICAgICAgICBn
c3RfYXVkaW9faW5mb19mcm9tX2NhcHMoJmluZm8sIG1vbm9DYXBzLmdldCgpKTsKKyAgICAgICAg
R1NUX0FVRElPX0lORk9fUE9TSVRJT04oJmluZm8sIDApID0gY2hhbm5lbFBvc2l0aW9uOworICAg
ICAgICBHUmVmUHRyPEdzdENhcHM+IGNhcHMgPSBhZG9wdEdSZWYoZ3N0X2F1ZGlvX2luZm9fdG9f
Y2FwcygmaW5mbykpOworICAgICAgICBnX29iamVjdF9zZXQoY2Fwc2ZpbHRlciwgImNhcHMiLCBj
YXBzLmdldCgpLCBOVUxMKTsKKyNlbHNlCiAgICAgICAgIGdfb2JqZWN0X3NldChjYXBzZmlsdGVy
LCAiY2FwcyIsIG1vbm9DYXBzLmdldCgpLCBOVUxMKTsKKyNlbmRpZgogCiAgICAgICAgIC8vIENv
bmZpZ3VyZSB0aGUgcXVldWUgZm9yIG1pbmltYWwgbGF0ZW5jeS4KICAgICAgICAgZ19vYmplY3Rf
c2V0KHF1ZXVlLCAibWF4LXNpemUtYnVmZmVycyIsIHN0YXRpY19jYXN0PGd1aW50PigxKSwgTlVM
TCk7CkBAIC0yNTAsNyArMjgwLDExIEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYkF1ZGlvU3JjRmlu
YWxpemUoR09iamVjdCogb2JqZWN0KQogICAgIFdlYktpdFdlYkF1ZGlvU3JjKiBzcmMgPSBXRUJL
SVRfV0VCX0FVRElPX1NSQyhvYmplY3QpOwogICAgIFdlYktpdFdlYkF1ZGlvU291cmNlUHJpdmF0
ZSogcHJpdiA9IHNyYy0+cHJpdjsKIAorI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgZ19y
ZWNfbXV0ZXhfY2xlYXIoJnByaXYtPm11dGV4KTsKKyNlbHNlCiAgICAgZ19zdGF0aWNfcmVjX211
dGV4X2ZyZWUoJnByaXYtPm11dGV4KTsKKyNlbmRpZgogCiAgICAgZ19zbGlzdF9mcmVlX2Z1bGwo
cHJpdi0+cGFkcywgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZ3N0X29iamVjdF91
bnJlZikpOwogCkBAIC0zMjEsNyArMzU1LDE0IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYkF1ZGlv
U3JjTG9vcChXZWJLaXRXZWJBdWRpb1NyYyogc3JjKQogICAgICAgICBHc3RCdWZmZXIqIGNoYW5u
ZWxCdWZmZXIgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MoYnVmZmVyU2l6ZSk7CiAgICAgICAg
IEFTU0VSVChjaGFubmVsQnVmZmVyKTsKICAgICAgICAgY2hhbm5lbEJ1ZmZlckxpc3QgPSBnX3Ns
aXN0X3ByZXBlbmQoY2hhbm5lbEJ1ZmZlckxpc3QsIGNoYW5uZWxCdWZmZXIpOworI2lmZGVmIEdT
VF9BUElfVkVSU0lPTl8xCisgICAgICAgIEdzdE1hcEluZm8gaW5mbzsKKyAgICAgICAgZ3N0X2J1
ZmZlcl9tYXAoY2hhbm5lbEJ1ZmZlciwgJmluZm8sIEdTVF9NQVBfUkVBRCk7CisgICAgICAgIHBy
aXYtPmJ1cy0+c2V0Q2hhbm5lbE1lbW9yeShpLCByZWludGVycHJldF9jYXN0PGZsb2F0Kj4oaW5m
by5kYXRhKSwgcHJpdi0+ZnJhbWVzVG9QdWxsKTsKKyAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcChj
aGFubmVsQnVmZmVyLCAmaW5mbyk7CisjZWxzZQogICAgICAgICBwcml2LT5idXMtPnNldENoYW5u
ZWxNZW1vcnkoaSwgcmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KEdTVF9CVUZGRVJfREFUQShjaGFu
bmVsQnVmZmVyKSksIHByaXYtPmZyYW1lc1RvUHVsbCk7CisjZW5kaWYKICAgICB9CiAgICAgY2hh
bm5lbEJ1ZmZlckxpc3QgPSBnX3NsaXN0X3JldmVyc2UoY2hhbm5lbEJ1ZmZlckxpc3QpOwogCkBA
IC0zMzIsMTMgKzM3MywxNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJBdWRpb1NyY0xvb3AoV2Vi
S2l0V2ViQXVkaW9TcmMqIHNyYykKICAgICAgICAgR3N0UGFkKiBwYWQgPSBzdGF0aWNfY2FzdDxH
c3RQYWQqPihnX3NsaXN0X250aF9kYXRhKHByaXYtPnBhZHMsIGkpKTsKICAgICAgICAgR3N0QnVm
ZmVyKiBjaGFubmVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8R3N0QnVmZmVyKj4oZ19zbGlzdF9udGhf
ZGF0YShjaGFubmVsQnVmZmVyTGlzdCwgaSkpOwogCisjaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8x
CiAgICAgICAgIEdSZWZQdHI8R3N0Q2Fwcz4gbW9ub0NhcHMgPSBhZG9wdEdSZWYoZ2V0R1N0cmVh
bWVyTW9ub0F1ZGlvQ2Fwcyhwcml2LT5zYW1wbGVSYXRlKSk7CiAgICAgICAgIEdzdFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZShtb25vQ2Fwcy5nZXQoKSwgMCk7
CiAgICAgICAgIEdzdEF1ZGlvQ2hhbm5lbFBvc2l0aW9uIGNoYW5uZWxQb3NpdGlvbiA9IHdlYktp
dFdlYkF1ZGlvR1N0cmVhbWVyQ2hhbm5lbFBvc2l0aW9uKGkpOwogICAgICAgICBnc3RfYXVkaW9f
c2V0X2NoYW5uZWxfcG9zaXRpb25zKHN0cnVjdHVyZSwgJmNoYW5uZWxQb3NpdGlvbik7CiAgICAg
ICAgIGdzdF9idWZmZXJfc2V0X2NhcHMoY2hhbm5lbEJ1ZmZlciwgbW9ub0NhcHMuZ2V0KCkpOwor
I2VuZGlmCiAKLSAgICAgICAgZ3N0X3BhZF9jaGFpbihwYWQsIGNoYW5uZWxCdWZmZXIpOworICAg
ICAgICBHc3RGbG93UmV0dXJuIHJldCA9IGdzdF9wYWRfY2hhaW4ocGFkLCBjaGFubmVsQnVmZmVy
KTsKKyAgICAgICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykKKyAgICAgICAgICAgIEdTVF9FTEVN
RU5UX0VSUk9SKHNyYywgQ09SRSwgUEFELCAoIkludGVybmFsIFdlYkF1ZGlvU3JjIGVycm9yIiks
ICgiRmFpbGVkIHRvIHB1c2ggYnVmZmVyIG9uICVzIiwgR1NUX0RFQlVHX1BBRF9OQU1FKHBhZCkp
KTsKICAgICB9CiAKICAgICBnX3NsaXN0X2ZyZWUoY2hhbm5lbEJ1ZmZlckxpc3QpOwpAQCAtMzc1
LDExICs0MjAsMTUgQEAgc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHdlYktpdFdlYkF1ZGlv
U3JjQ2hhbmdlU3RhdGUoR3N0RWxlbWVudCogZWxlbWVudCwgR3MKICAgICBzd2l0Y2ggKHRyYW5z
aXRpb24pIHsKICAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fUEFVU0VEOgogICAg
ICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlJFQURZLT5QQVVTRUQiKTsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBHU1RfU1RBVEVfQ0hBTkdFX05PX1BSRVJPTEw7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUExBWUlORzoKKyAgICAgICAgR1NU
X0RFQlVHX09CSkVDVChzcmMsICJQQVVTRUQtPlBMQVlJTkciKTsKICAgICAgICAgaWYgKCFnc3Rf
dGFza19zdGFydChzcmMtPnByaXYtPnRhc2suZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJuVmFs
dWUgPSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
R1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUkVBRFk6Ci0gICAgICAgIEdTVF9ERUJVR19PQkpF
Q1Qoc3JjLCAiUEFVU0VELT5SRUFEWSIpOworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QTEFZ
SU5HX1RPX1BBVVNFRDoKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQTEFZSU5HLT5Q
QVVTRUQiKTsKICAgICAgICAgaWYgKCFnc3RfdGFza19qb2luKHNyYy0+cHJpdi0+dGFzay5nZXQo
KSkpCiAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRTsK
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1l
ci5oCmluZGV4IDU3ZGUxMjIuLmI2ZGRiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRp
b1NvdXJjZUdTdHJlYW1lci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMp
IDIwMTEgSWdhbGlhIFMuTAorICogIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBJZ2FsaWEgUy5M
CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5jcHAK
aW5kZXggMjIyMmQzMjUuLmYxOTg1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmlu
Zy5jcHAKQEAgLTIyLDkgKzIyLDE1IEBACiAjaW5jbHVkZSAiR1N0cmVhbWVyVmVyc2lvbmluZy5o
IgogCiAjaWYgVVNFKEdTVFJFQU1FUikKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorI2luY2x1
ZGUgPGdzdC9hdWRpby9hdWRpby5oPgorI2Vsc2UKKyNpbmNsdWRlIDxnc3QvYXVkaW8vbXVsdGlj
aGFubmVsLmg+CisjZW5kaWYKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSA8d3RmL1Vu
dXNlZFBhcmFtLmg+CiAKKwogdm9pZCB3ZWJraXRHc3RPYmplY3RSZWZTaW5rKEdzdE9iamVjdCog
Z3N0T2JqZWN0KQogewogI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCkBAIC0xNDEsNCArMTQ3LDIy
IEBAIHZvaWQgbm90aWZ5R3N0VGFnc09uUGFkKEdzdEVsZW1lbnQqIGVsZW1lbnQsIEdzdFBhZCog
cGFkLCBHc3RUYWdMaXN0KiB0YWdzKQogICAgIGdzdF9lbGVtZW50X2ZvdW5kX3RhZ3NfZm9yX3Bh
ZChlbGVtZW50LCBwYWQsIHRhZ3MpOwogI2VuZGlmCiB9CisKKyNpZiBFTkFCTEUoV0VCX0FVRElP
KQorR3N0Q2FwcyogZ2V0R3N0QXVkaW9DYXBzKGludCBjaGFubmVscywgZmxvYXQgc2FtcGxlUmF0
ZSkKK3sKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgIHJldHVybiBnc3RfY2Fwc19uZXdf
c2ltcGxlKCJhdWRpby94LXJhdyIsICJyYXRlIiwgR19UWVBFX0lOVCwgc3RhdGljX2Nhc3Q8aW50
PihzYW1wbGVSYXRlKSwKKyAgICAgICAgImNoYW5uZWxzIiwgR19UWVBFX0lOVCwgY2hhbm5lbHMs
CisgICAgICAgICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCBnc3RfYXVkaW9fZm9ybWF0X3RvX3N0
cmluZyhHU1RfQVVESU9fRk9STUFUX0YzMiksCisgICAgICAgICJsYXlvdXQiLCBHX1RZUEVfU1RS
SU5HLCAiaW50ZXJsZWF2ZWQiLCBOVUxMKTsKKyNlbHNlCisgICAgcmV0dXJuIGdzdF9jYXBzX25l
d19zaW1wbGUoImF1ZGlvL3gtcmF3LWZsb2F0IiwgInJhdGUiLCBHX1RZUEVfSU5ULCBzdGF0aWNf
Y2FzdDxpbnQ+KHNhbXBsZVJhdGUpLAorICAgICAgICAiY2hhbm5lbHMiLCBHX1RZUEVfSU5ULCBj
aGFubmVscywKKyAgICAgICAgImVuZGlhbm5lc3MiLCBHX1RZUEVfSU5ULCBHX0JZVEVfT1JERVIs
CisgICAgICAgICJ3aWR0aCIsIEdfVFlQRV9JTlQsIDMyLCBOVUxMKTsKKyNlbmRpZgorfQorI2Vu
ZGlmCisKICNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9u
aW5nLmgKaW5kZXggNDA4NDRmOC4uMjNjMzQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lv
bmluZy5oCkBAIC0zOSw1ICszOSw4IEBAIEdzdEJ1ZmZlciogY3JlYXRlR3N0QnVmZmVyKEdzdEJ1
ZmZlciopOwogdm9pZCBzZXRHc3RFbGVtZW50Q2xhc3NNZXRhZGF0YShHc3RFbGVtZW50Q2xhc3Mq
LCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiBsb25nTmFtZSwgY29uc3QgY2hhciogZGVz
Y3JpcHRpb24sIGNvbnN0IGNoYXIqIGF1dGhvcik7CiBib29sIGdzdE9iamVjdElzRmxvYXRpbmco
R3N0T2JqZWN0Kik7CiB2b2lkIG5vdGlmeUdzdFRhZ3NPblBhZChHc3RFbGVtZW50KiwgR3N0UGFk
KiwgR3N0VGFnTGlzdCopOworI2lmIEVOQUJMRShXRUJfQVVESU8pCitHc3RDYXBzKiBnZXRHc3RB
dWRpb0NhcHMoaW50IGNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyNlbmRpZgogI2VuZGlm
IC8vIFVTRShHU1RSRUFNRVIpCiAjZW5kaWYgLy8gR1N0cmVhbWVyVmVyc2lvbmluZ19oCi0tIAox
LjcuMTAuNA==
</data>
<flag name="review"
          id="198314"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>