<?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>164001</bug_id>
          
          <creation_ts>2016-10-25 18:19:47 -0700</creation_ts>
          <short_desc>Add support for wide gamut for ShareableBitmap for image popovers</short_desc>
          <delta_ts>2016-12-10 00:35:47 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Megan Gardner">megan_gardner</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1244589</commentid>
    <comment_count>0</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2016-10-25 18:19:47 -0700</bug_when>
    <thetext>Add support for wide gamut for ShareableBitmap for image popovers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244590</commentid>
    <comment_count>1</comment_count>
      <attachid>292860</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2016-10-25 18:27:31 -0700</bug_when>
    <thetext>Created attachment 292860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244592</commentid>
    <comment_count>2</comment_count>
      <attachid>292860</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-10-25 18:34:39 -0700</bug_when>
    <thetext>Comment on attachment 292860
Patch

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

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:101
&gt; +//    // Out-of-date CG installations will not honor kCGColorSpaceSRGB. This logic avoids

I think it is likely that if not all Windowses know about kCGColorSpaceSRGB, they won&apos;t know about kCGColorSpaceExtendedSRGB either, so probably just un-comment this out.

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.h:37
&gt; +WEBCORE_EXPORT CGColorSpaceRef extendedsRGBColorSpaceRef();

I do not love the lowercase s. What do others think?

&gt; Source/WebKit2/Platform/IPC/Decoder.cpp:249
&gt; +bool Decoder::decode(size_t&amp; result)

This is a bad idea, the two sides of IPC can be different bittiness - this has bitten us before. Just use uint64_t everywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244598</commentid>
    <comment_count>3</comment_count>
      <attachid>292860</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-10-25 18:46:13 -0700</bug_when>
    <thetext>Comment on attachment 292860
Patch

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

&gt; Source/WebKit2/Shared/cg/ShareableBitmapCG.cpp:42
&gt; +    if ((flags &amp; ShareableBitmap::SupportsExtendedColor) &amp;&amp; screenSupportsExtendedColor()) {

I&apos;m not 100% sure we want this to depend on the screen. I believe images that bounce through ShareableBitmap can end up getting transmitted to other devices. Maybe we want callers to decide whether they set SupportsExtendedColor based on screenSupportsExtendedColor instead, since they will know whether there&apos;s a chance of it going elsewhere or not?

&gt; Source/WebKit2/Shared/cg/ShareableBitmapCG.cpp:72
&gt; +    RetainPtr&lt;CGContextRef&gt; bitmapContext = adoptCF(CGBitmapContextCreateWithData(data(), m_size.width(), m_size.height(), m_pixelSize &lt;&lt; 1 /* multiply by 2 *8/4 = &lt;&lt; 1 */, m_size.width() * m_pixelSize, colorSpace, bitmapInfo(m_flags), releaseBitmapContextData, this));

I think it&apos;s really OK to multiply by 2 instead of shifting here.

&gt; Source/WebKit2/Shared/cg/ShareableBitmapCG.cpp:110
&gt; +    // FIXME: Make this use extended color, etc.

I don&apos;t think this is optional? You&apos;re pointing at extended color data, won&apos;t that cause trouble if you make a non-extended-sRGB image from it? Or maybe it&apos;s OK because of the semicompatible nature of extended sRGB? What happens to out-of-range values?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244599</commentid>
    <comment_count>4</comment_count>
      <attachid>292860</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-10-25 18:48:45 -0700</bug_when>
    <thetext>Comment on attachment 292860
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.h:37
&gt;&gt; +WEBCORE_EXPORT CGColorSpaceRef extendedsRGBColorSpaceRef();
&gt; 
&gt; I do not love the lowercase s. What do others think?

Yeah, I read this as &quot;extends RGB&quot;. extendedSRGBColorSpaceRef is more readable.

&gt;&gt; Source/WebKit2/Platform/IPC/Decoder.cpp:249
&gt;&gt; +bool Decoder::decode(size_t&amp; result)
&gt; 
&gt; This is a bad idea, the two sides of IPC can be different bittiness - this has bitten us before. Just use uint64_t everywhere.

By which Tim means the existing uint64_t encoder/decoder.

&gt; Source/WebKit2/Platform/IPC/Decoder.h:84
&gt; +    bool decode(size_t&amp;);

Remove.

&gt; Source/WebKit2/Platform/IPC/Encoder.cpp:243
&gt; +void Encoder::encode(size_t n)
&gt; +{
&gt; +    uint8_t* buffer = grow(sizeof(n), sizeof(n));
&gt; +    copyValueToBuffer(n, buffer);
&gt; +}

Remove.

&gt; Source/WebKit2/Platform/IPC/Encoder.h:99
&gt; +    void encode(size_t);

Remove.

&gt; Source/WebKit2/Shared/ShareableBitmap.cpp:42
&gt; +    if (flags &amp; ShareableBitmap::SupportsExtendedColor) {
&gt; +        if (screenSupportsExtendedColor())
&gt; +            return 8;

I think you need to faithfully respect the flag on all hardware, not just if screenSupportsExtendedColor(). The caller should be the one to choose whether to use a deep buffer.

It would also be bad for bytesPerPixel() to give different answers in the two processes.

&gt; Source/WebKit2/Shared/ShareableBitmap.cpp:78
&gt; +    m_pixelSize = bytesPerPixel(m_flags);

I would call this m_bytesPerPixel. &quot;pixelSize&quot; is ambiguous.

&gt; Source/WebKit2/Shared/ShareableBitmap.h:54
&gt; +        SupportsExtendedColor = 1 &lt;&lt; 1,

You&apos;re actually using this flag to both make a deep buffer (what we normally call &quot;deep color&quot;, and to set the extendedSRGB colorspace. I wonder if we should either choose a better name or tease part those two things.

&gt; Source/WebKit2/Shared/ShareableBitmap.h:76
&gt; +        size_t m_pixelSize;

m_bytesPerPixel

&gt; Source/WebKit2/Shared/ShareableBitmap.h:127
&gt; +    ShareableBitmap(const WebCore::IntSize&amp;, Flags, size_t, void*);
&gt; +    ShareableBitmap(const WebCore::IntSize&amp;, Flags, size_t, RefPtr&lt;SharedMemory&gt;);

Please name that new parameter.

&gt; Source/WebKit2/Shared/ShareableBitmap.h:130
&gt; +    // FIXME: make sure this is ok, this seems to be windwos thing, maybe??

windwos?

&gt; Source/WebKit2/Shared/ShareableBitmap.h:133
&gt; +    static size_t numBytesForSize(const WebCore::IntSize&amp; size, int componentSize) { return size.width() * size.height() * componentSize; }

componentSize -&gt; bytesPerPixel (not component!)

&gt; Source/WebKit2/Shared/ShareableBitmap.h:151
&gt; +    size_t m_pixelSize;

m_bytesPerPixel.

&gt; Source/WebKit2/Shared/cg/ShareableBitmapCG.cpp:42
&gt; +    if ((flags &amp; ShareableBitmap::SupportsExtendedColor) &amp;&amp; screenSupportsExtendedColor()) {

I don&apos;t think the screenSupportsExtendedColor() check should be here.

&gt; Source/WebKit2/Shared/cg/ShareableBitmapCG.cpp:67
&gt; +    if ((m_flags &amp; ShareableBitmap::SupportsExtendedColor) &amp;&amp; (screenSupportsExtendedColor()))

Ditto.

&gt; Source/WebKit2/Shared/cg/ShareableBitmapCG.cpp:68
&gt; +        colorSpace = extendedsRGBColorSpaceRef();

On Mac we probably want to use the display colorspace. I think the caller is going to have to pass in a ColorSpace.

&gt; Source/WebKit2/Shared/cg/ShareableBitmapCG.cpp:72
&gt; +    RetainPtr&lt;CGContextRef&gt; bitmapContext = adoptCF(CGBitmapContextCreateWithData(data(), m_size.width(), m_size.height(), m_pixelSize &lt;&lt; 1 /* multiply by 2 *8/4 = &lt;&lt; 1 */, m_size.width() * m_pixelSize, colorSpace, bitmapInfo(m_flags), releaseBitmapContextData, this));

Please don&apos;t use &lt;&lt; 1. It&apos;s a false optimization and makes the code harder to read. Just write out the math and trust the compiler.

&gt; Source/WebKit2/Shared/cg/ShareableBitmapCG.cpp:110
&gt; +    // FIXME: Make this use extended color, etc.

Do we need to fix this before landing the patch?

&gt; Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm:2360
&gt; +                                // FIXME: Only select ExtendedColor on images known to need wide gamut

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244611</commentid>
    <comment_count>5</comment_count>
      <attachid>292867</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2016-10-25 19:52:44 -0700</bug_when>
    <thetext>Created attachment 292867
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244614</commentid>
    <comment_count>6</comment_count>
      <attachid>292867</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-10-25 20:03:16 -0700</bug_when>
    <thetext>Comment on attachment 292867
Patch

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

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:101
&gt; +    // Don&apos;t worry about extended colors on windows

This is not a &quot;don&apos;t worry&quot;, this is a &quot;if it doesn&apos;t have support, fall back to device&quot;. I also think it should probably fall back to sRGB, not device (if we have sRGB support but not extended, this one should use sRGB, not &quot;device&quot;).

&gt; Source/WebKit2/Shared/ShareableBitmap.cpp:41
&gt; +        if (screenSupportsExtendedColor())

What Simon said before: this shouldn&apos;t depend on the screen. If wants extended color, it gets extended color.

&gt; Source/WebKit2/Shared/ShareableBitmap.h:130
&gt; +    // FIXME: make sure this is ok, this seems to be windows thing, maybe??

Get rid of the comment and solve it one way or the other :) Take a peek at ShareableBitmapCairo:

return Checked&lt;unsigned, RecordOverflow&gt;(cairo_format_stride_for_width(cairoFormat, size.width())) * size.height();

So I think you&apos;re OK.

&gt; Source/WebKit2/Shared/cg/ShareableBitmapCG.cpp:67
&gt; +    if ((m_flags &amp; ShareableBitmap::SupportsExtendedColor) &amp;&amp; (screenSupportsExtendedColor()))

No need for the parens around the function call at the end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244616</commentid>
    <comment_count>7</comment_count>
      <attachid>292870</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2016-10-25 20:28:04 -0700</bug_when>
    <thetext>Created attachment 292870
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244617</commentid>
    <comment_count>8</comment_count>
      <attachid>292870</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-10-25 20:31:17 -0700</bug_when>
    <thetext>Comment on attachment 292870
Patch

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

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:103
&gt; +    // if there is no support on device, fall back to sRGB

Capital I, end with a period! (https://webkit.org/code-style-guidelines/#comments-sentences)

&gt; Source/WebKit2/Shared/ShareableBitmap.cpp:54
&gt; +    encoder &lt;&lt; m_bytesPerPixel;

Why do we encode it if it&apos;s computable given m_flags, which we already encode?

&gt; Source/WebKit2/Shared/ShareableBitmap.h:130
&gt; +    // FIXME: make sure this is ok, this seems to be windows thing, maybe??

Get rid of the comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244619</commentid>
    <comment_count>9</comment_count>
      <attachid>292872</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2016-10-25 20:52:14 -0700</bug_when>
    <thetext>Created attachment 292872
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244621</commentid>
    <comment_count>10</comment_count>
      <attachid>292873</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2016-10-25 21:25:55 -0700</bug_when>
    <thetext>Created attachment 292873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244627</commentid>
    <comment_count>11</comment_count>
      <attachid>292873</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-10-25 22:03:11 -0700</bug_when>
    <thetext>Comment on attachment 292873
Patch

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

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:97
&gt; +CGColorSpaceRef extendedSRGBColorSpaceRef()

I think you are missing a ChangeLog in WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244867</commentid>
    <comment_count>12</comment_count>
      <attachid>292873</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-10-26 12:12:44 -0700</bug_when>
    <thetext>Comment on attachment 292873
Patch

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

&gt; Source/WebKit2/Shared/ShareableBitmap.cpp:37
&gt; +static uint calculateBytesPerPixel(ShareableBitmap::Flags flags)

uint -&gt; unsigned.

&gt; Source/WebKit2/Shared/ShareableBitmap.cpp:40
&gt; +        return 8;

You should add a comment here saying which format we use for SupportsExtendedColor, so why 8 is the right number.

&gt; Source/WebKit2/Shared/ShareableBitmap.cpp:78
&gt; +    uint bytesPerPixel = calculateBytesPerPixel(flags);

unsigned. Or just remove this variable.

&gt; Source/WebKit2/Shared/ShareableBitmap.cpp:101
&gt; +    return adoptRef(new ShareableBitmap(size, flags, bytesPerPixel, sharedMemory));

I&apos;m a bit confused about why bytesPerPixel needs to be passed in. Can&apos;t ShareableBitmap compute it from flags?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244868</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-10-26 12:13:46 -0700</bug_when>
    <thetext>How are we going to test this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245303</commentid>
    <comment_count>14</comment_count>
      <attachid>293069</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2016-10-27 15:33:04 -0700</bug_when>
    <thetext>Created attachment 293069
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245349</commentid>
    <comment_count>15</comment_count>
      <attachid>293069</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-10-27 16:57:49 -0700</bug_when>
    <thetext>Comment on attachment 293069
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Added extendedColorSpace creator.

This doesn&apos;t match the actual function name. Would be better to say &quot;Add a function to return a CGColorSpaceRef for extended sRGB&quot;.

&gt; Source/WebCore/ChangeLog:10
&gt; +        This is currently untestable, due to simulator limitations, so no tests added.

What about Mac, since this is shared code?

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:103
&gt; +    // If there is no support on device, fall back to sRGB.

&quot;on device&quot; is confusing in code that&apos;s shared with Mac.

&gt; Source/WebKit2/ChangeLog:12
&gt; +        This also adds using wide gamut images for image popovers in mobileSafari.

&quot;This also adds using wide gamut images for image popovers in mobileSafari.&quot; -&gt; &quot;This makes it possible to show wide gamut images in image popovers on iOS&quot;.

&gt; Source/WebKit2/ChangeLog:13
&gt; +        This is currently untestable, due to simulator limitations, so no tests added.

But this code also compiles on Mac, so you need an excuse to not test on Mac too :)

&gt; Source/WebKit2/Shared/ShareableBitmap.h:76
&gt; +        uint64_t m_bytesPerPixel;

Still uint64_t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245359</commentid>
    <comment_count>16</comment_count>
      <attachid>293084</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2016-10-27 17:15:02 -0700</bug_when>
    <thetext>Created attachment 293084
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245376</commentid>
    <comment_count>17</comment_count>
      <attachid>293084</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-27 17:53:45 -0700</bug_when>
    <thetext>Comment on attachment 293084
Patch

Clearing flags on attachment: 293084

Committed r208020: &lt;http://trac.webkit.org/changeset/208020&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292860</attachid>
            <date>2016-10-25 18:27:31 -0700</date>
            <delta_ts>2016-10-25 19:52:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164001-20161025182345.patch</filename>
            <type>text/plain</type>
            <size>16973</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzU0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE2LTEwLTI1ICBNZWdhbiBH
YXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIHdpZGUgZ2FtdXQgZm9yIFNoYXJlYWJsZUJpdG1hcCBmb3IgaW1hZ2UgcG9wb3ZlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDAwMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIHRlc3RzIGFk
ZGVkLCBhcyB3aWRlIGdhbXV0IGlzIGN1cnJlbnRseSB1bnRlc3RhYmxlIGR1ZSB0byBzaW11bGF0
b3IgbGltaXRhdGlvbnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRlbmRlZHNSR0JDb2xvclNwYWNl
UmVmKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5o
OgorCiAyMDE2LTEwLTE5ICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHVEtdW0VGTF0gQnVpbGQgZml4IGFmdGVyIHIyMDc1NDMuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAyMDc1NDgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTkzLDYgKzkzLDE5IEBAIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZVJlZigp
CiAjZW5kaWYgLy8gUExBVEZPUk0oV0lOKQogICAgIHJldHVybiBzUkdCU3BhY2U7CiB9CisgICAg
CitDR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRzUkdCQ29sb3JTcGFjZVJlZigpCit7CisgICAgc3Rh
dGljIENHQ29sb3JTcGFjZVJlZiBzUkdCU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFt
ZShrQ0dDb2xvclNwYWNlRXh0ZW5kZWRTUkdCKTsKKy8vICNpZiBQTEFURk9STShXSU4pCisvLyAg
ICAvLyBPdXQtb2YtZGF0ZSBDRyBpbnN0YWxsYXRpb25zIHdpbGwgbm90IGhvbm9yIGtDR0NvbG9y
U3BhY2VTUkdCLiBUaGlzIGxvZ2ljIGF2b2lkcworLy8gICAgLy8gY2F1c2luZyBhIGNyYXNoIHVu
ZGVyIHRob3NlIGNvbmRpdGlvbnMuIFNpbmNlIHRoZSBkZWZhdWx0IGNvbG9yIHNwYWNlIGluIFdp
bmRvd3MKKy8vICAgIC8vIGlzIHNSR0IsIHRoaXMgYWxsIHdvcmtzIG91dCBuaWNlbHkuCisvLyAg
ICBpZiAoIXNSR0JTcGFjZSkKKy8vICAgICAgICBzUkdCU3BhY2UgPSBkZXZpY2VSR0JDb2xvclNw
YWNlUmVmKCk7CisvLyAjZW5kaWYgLy8gUExBVEZPUk0oV0lOKQorICAgIHJldHVybiBzUkdCU3Bh
Y2U7Cit9CiAKIENHQ29sb3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCkKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuaAkocmV2aXNpb24gMjA3NTQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAkod29ya2luZyBjb3B5KQpAQCAt
MzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENHQ29sb3JTcGFjZVJlZiBkZXZp
Y2VSR0JDb2xvclNwYWNlUmVmKCk7CiBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgc1JH
QkNvbG9yU3BhY2VSZWYoKTsKK1dFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBleHRlbmRl
ZHNSR0JDb2xvclNwYWNlUmVmKCk7CiBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZGlz
cGxheVAzQ29sb3JTcGFjZVJlZigpOwogQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3Bh
Y2VSZWYoKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3ODYxKQorKysgU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTYtMTAt
MjUgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgc3VwcG9ydCBmb3Igd2lkZSBnYW11dCBmb3IgU2hhcmVhYmxlQml0bWFwIGZvciBpbWFnZSBw
b3BvdmVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY0MDAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgc3VwcHBvcnQgZm9yIHdpZGUgZ2FtdXQgaW4gU2hhcmVhYmxlQml0bWFwLiBTaGFyYWJs
ZUJpdG1hcHMgbm93IGtub3cgdGhlIHNpemUgb2YgdGhlaXIgcGl4ZWxzLAorICAgICAgICBhbmQg
dGhhdCBkYXRhIGlzIHBhc3NlZCBiYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIHRoZSBwcm9jZXNzZXMu
IFRoZSBjYWxsZXJzIG9mIFNoYXJlZEJpdG1hcCB3aWxsIGRldGVybWluZQorICAgICAgICBpZiB0
aGVpciBpbWFnZSBzaG91bGQgc3VwcG9ydCB3aWRlIGdhbXV0LCBidXQgU2hhcmVhYmxlQml0bWFw
IHdpbGwgb3ZlcnJpZGUgYSBzZXQgZmxhZyBvbiBhIGRldmljZSB0aGF0CisgICAgICAgIGlzIGlu
Y2FwYmFibGUgb2Ygc3VwcG9ydGluZyBhIHdpZGUgZ2FtdXQgaW1hZ2UuCisgICAgICAgIFRoaXMg
YWxzbyBhZGRzIHVzaW5nIHdpZGUgZ2FtdXQgaW1hZ2VzIGZvciBpbWFnZSBwb3BvdmVycyBpbiBt
b2JpbGVTYWZhcmkuCisgICAgICAgIFRoaXMgaXMgY3VycmVudGx5IHVudGVzdGFibGUsIGR1ZSB0
byBzaW11bGF0b3IgbGltaXRhdGlvbnMsIHNvIG5vIHRlc3RzIGFkZGVkLgorCisgICAgICAgICog
UGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpkZWNvZGUp
OgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0v
SVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpFbmNvZGVyOjplbmNvZGUpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmg6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJp
dG1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmJ5dGVzUGVyUGl4ZWwpOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVT
aGFyZWFibGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRs
ZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKToK
KyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6CisgICAgICAgIChXZWJLaXQ6OlNo
YXJlYWJsZUJpdG1hcDo6bnVtQnl0ZXNGb3JTaXplKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpzaXplSW5CeXRlcyk6CisgICAgICAgICogU2hhcmVkL2NnL1NoYXJlYWJsZUJp
dG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Yml0bWFwSW5mbyk6CisgICAgICAgIChXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVDR0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmdldFBvc2l0aW9uSW5mb3JtYXRpb24pOgorCiAyMDE2LTEwLTI1ICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ01ha2UgYnVpbGQgZml4LgpJ
bmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAkocmV2aXNpb24gMjA3
NTQ4KQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNDUsNiArMjQ1LDE1IEBAIGJvb2wgRGVjb2Rlcjo6ZGVjb2RlKGludDY0X3Qm
IHJlc3VsdCkKICAgICBkZWNvZGVWYWx1ZUZyb21CdWZmZXIocmVzdWx0LCBtX2J1ZmZlclBvcyk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CisgICAgCitib29sIERlY29kZXI6OmRlY29kZShzaXplX3Qm
IHJlc3VsdCkKK3sKKyAgICBpZiAoIWFsaWduQnVmZmVyUG9zaXRpb24oc2l6ZW9mKHJlc3VsdCks
IHNpemVvZihyZXN1bHQpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGRlY29k
ZVZhbHVlRnJvbUJ1ZmZlcihyZXN1bHQsIG1fYnVmZmVyUG9zKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KIAogYm9vbCBEZWNvZGVyOjpkZWNvZGUoZmxvYXQmIHJlc3VsdCkKIHsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAkocmV2aXNpb24gMjA3NTQ4KQorKysgU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODEsNiAr
ODEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBkZWNvZGUodWludDY0X3QmKTsKICAgICBib29sIGRl
Y29kZShpbnQzMl90Jik7CiAgICAgYm9vbCBkZWNvZGUoaW50NjRfdCYpOworICAgIGJvb2wgZGVj
b2RlKHNpemVfdCYpOwogICAgIGJvb2wgZGVjb2RlKGZsb2F0Jik7CiAgICAgYm9vbCBkZWNvZGUo
ZG91YmxlJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAJ
KHJldmlzaW9uIDIwNzU0OCkKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9FbmNvZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM1LDYgKzIzNSwxMiBAQCB2b2lkIEVuY29kZXI6OmVu
Y29kZShpbnQ2NF90IG4pCiAgICAgdWludDhfdCogYnVmZmVyID0gZ3JvdyhzaXplb2YobiksIHNp
emVvZihuKSk7CiAgICAgY29weVZhbHVlVG9CdWZmZXIobiwgYnVmZmVyKTsKIH0KKyAgICAKK3Zv
aWQgRW5jb2Rlcjo6ZW5jb2RlKHNpemVfdCBuKQoreworICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IGdy
b3coc2l6ZW9mKG4pLCBzaXplb2YobikpOworICAgIGNvcHlWYWx1ZVRvQnVmZmVyKG4sIGJ1ZmZl
cik7Cit9CiAKIHZvaWQgRW5jb2Rlcjo6ZW5jb2RlKGZsb2F0IG4pCiB7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgJKHJldmlzaW9uIDIwNzU0OCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVuY29kZSh1aW50NjRfdCk7CiAgICAgdm9pZCBlbmNv
ZGUoaW50MzJfdCk7CiAgICAgdm9pZCBlbmNvZGUoaW50NjRfdCk7CisgICAgdm9pZCBlbmNvZGUo
c2l6ZV90KTsKICAgICB2b2lkIGVuY29kZShmbG9hdCk7CiAgICAgdm9pZCBlbmNvZGUoZG91Ymxl
KTsKIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAJKHJl
dmlzaW9uIDIwNzU0OCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksMjAgQEAKICNpbmNsdWRlICJTaGFyZWRN
ZW1vcnkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3Jl
ZW4uaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewor
ICAgIAorc3RhdGljIHNpemVfdCBieXRlc1BlclBpeGVsKFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3Mg
ZmxhZ3MpCit7CisgICAgaWYgKGZsYWdzICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0V4dGVu
ZGVkQ29sb3IpIHsKKyAgICAgICAgaWYgKHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcigpKQor
ICAgICAgICAgICAgcmV0dXJuIDg7CisgICAgfQorICAgIHJldHVybiA0OworfQogCiBTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZTo6SGFuZGxlKCkKICAgICA6IG1fZmxhZ3MoMCkKQEAgLTQ0LDYgKzU0
LDcgQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6ZW5jb2RlKElQQwogICAgIGVuY29k
ZXIgPDwgbV9oYW5kbGU7CiAgICAgZW5jb2RlciA8PCBtX3NpemU7CiAgICAgZW5jb2RlciA8PCBt
X2ZsYWdzOworICAgIGVuY29kZXIgPDwgbV9waXhlbFNpemU7CiB9CiAKIGJvb2wgU2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEhhbmRsZSYgaGFu
ZGxlKQpAQCAtNTQsNiArNjUsOCBAQCBib29sIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjpkZWNv
ZGUoSVBDCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhh
bmRsZS5tX2ZsYWdzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaGFuZGxlLm1fcGl4ZWxTaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC02MiwzOCArNzUsNDQgQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZTo6Y2xlYXIoKQogICAgIG1faGFuZGxlLmNsZWFyKCk7CiAgICAgbV9zaXplID0gSW50
U2l6ZSgpOwogICAgIG1fZmxhZ3MgPSBGbGFnOjpOb0ZsYWdzOworICAgIG1fcGl4ZWxTaXplID0g
Ynl0ZXNQZXJQaXhlbChtX2ZsYWdzKTsKIH0KIAogUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MpCiB7
Ci0gICAgc2l6ZV90IG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUpOworICAgIHNpemVf
dCBwaXhlbFNpemUgPSBieXRlc1BlclBpeGVsKGZsYWdzKTsKKyAgICBzaXplX3QgbnVtQnl0ZXMg
PSBudW1CeXRlc0ZvclNpemUoc2l6ZSwgcGl4ZWxTaXplKTsKICAgICAKICAgICB2b2lkKiBkYXRh
ID0gMDsKICAgICBpZiAoIXRyeUZhc3RNYWxsb2MobnVtQnl0ZXMpLmdldFZhbHVlKGRhdGEpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVh
YmxlQml0bWFwKHNpemUsIGZsYWdzLCBkYXRhKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBT
aGFyZWFibGVCaXRtYXAoc2l6ZSwgZmxhZ3MsIHBpeGVsU2l6ZSwgZGF0YSkpOwogfQogCiBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShjb25z
dCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncykKIHsKLSAgICBzaXplX3QgbnVtQnl0ZXMgPSBu
dW1CeXRlc0ZvclNpemUoc2l6ZSk7CisgICAgc2l6ZV90IHBpeGVsU2l6ZSA9IGJ5dGVzUGVyUGl4
ZWwoZmxhZ3MpOworICAgIHNpemVfdCBudW1CeXRlcyA9IG51bUJ5dGVzRm9yU2l6ZShzaXplLCBw
aXhlbFNpemUpOwogCiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5ID0gU2hh
cmVkTWVtb3J5OjphbGxvY2F0ZShudW1CeXRlcyk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFi
bGVCaXRtYXAoc2l6ZSwgZmxhZ3MsIHNoYXJlZE1lbW9yeSkpOworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGZsYWdzLCBwaXhlbFNpemUsIHNoYXJlZE1lbW9y
eSkpOwogfQogCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZShjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncywgUmVmUHRyPFNoYXJlZE1lbW9yeT4g
c2hhcmVkTWVtb3J5KQogewogICAgIEFTU0VSVChzaGFyZWRNZW1vcnkpOwotCi0gICAgc2l6ZV90
IG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUpOwotICAgIEFTU0VSVF9VTlVTRUQobnVt
Qnl0ZXMsIHNoYXJlZE1lbW9yeS0+c2l6ZSgpID49IG51bUJ5dGVzKTsKICAgICAKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBmbGFncywgc2hhcmVkTWVtb3J5
KSk7CisgICAgc2l6ZV90IG1lbW9yeVNpemUgPSBzaGFyZWRNZW1vcnktPnNpemUoKTsKKyAgICBz
aXplX3QgcGl4ZWxTaXplID0gYnl0ZXNQZXJQaXhlbChmbGFncyk7CisgICAgc2l6ZV90IG51bUJ5
dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUsIHBpeGVsU2l6ZSk7CisgICAgCisgICAgQVNTRVJU
X1VOVVNFRChudW1CeXRlcywgbWVtb3J5U2l6ZSA+PSBudW1CeXRlcyk7CisgICAgCisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVCaXRtYXAoc2l6ZSwgZmxhZ3MsIHBpeGVsU2l6ZSwg
c2hhcmVkTWVtb3J5KSk7CiB9CiAKIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlKGNvbnN0IEhhbmRsZSYgaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rp
b24gcHJvdGVjdGlvbikKQEAgLTExNCwxOSArMTMzLDIyIEBAIGJvb2wgU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVIYW5kbGUoSGFuZGwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGhhbmRsZS5t
X3NpemUgPSBtX3NpemU7CiAgICAgaGFuZGxlLm1fZmxhZ3MgPSBtX2ZsYWdzOworICAgIGhhbmRs
ZS5tX3BpeGVsU2l6ZSA9IG1fcGl4ZWxTaXplOwogICAgIHJldHVybiB0cnVlOwogfQogCi1TaGFy
ZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBm
bGFncywgdm9pZCogZGF0YSkKK1NoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKGNvbnN0
IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCBzaXplX3QgcGl4ZWxTaXplLCB2b2lkKiBkYXRh
KQogICAgIDogbV9zaXplKHNpemUpCiAgICAgLCBtX2ZsYWdzKGZsYWdzKQorICAgICwgbV9waXhl
bFNpemUocGl4ZWxTaXplKQogICAgICwgbV9kYXRhKGRhdGEpCiB7CiB9CiAKLVNoYXJlYWJsZUJp
dG1hcDo6U2hhcmVhYmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCBS
ZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCitTaGFyZWFibGVCaXRtYXA6OlNoYXJl
YWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncywgc2l6ZV90IHBpeGVs
U2l6ZSwgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5KQogICAgIDogbV9zaXplKHNp
emUpCiAgICAgLCBtX2ZsYWdzKGZsYWdzKQorICAgICwgbV9waXhlbFNpemUocGl4ZWxTaXplKQog
ICAgICwgbV9zaGFyZWRNZW1vcnkoc2hhcmVkTWVtb3J5KQogICAgICwgbV9kYXRhKDApCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCShyZXZpc2lvbiAyMDc1
NDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAgIGVudW0gRmxhZyB7CiAgICAgICAg
IE5vRmxhZ3MgPSAwLAogICAgICAgICBTdXBwb3J0c0FscGhhID0gMSA8PCAwLAorICAgICAgICBT
dXBwb3J0c0V4dGVuZGVkQ29sb3IgPSAxIDw8IDEsCiAgICAgfTsKICAgICB0eXBlZGVmIHVuc2ln
bmVkIEZsYWdzOwogCkBAIC03Miw2ICs3Myw3IEBAIHB1YmxpYzoKICAgICAgICAgbXV0YWJsZSBT
aGFyZWRNZW1vcnk6OkhhbmRsZSBtX2hhbmRsZTsKICAgICAgICAgV2ViQ29yZTo6SW50U2l6ZSBt
X3NpemU7CiAgICAgICAgIEZsYWdzIG1fZmxhZ3M7CisgICAgICAgIHNpemVfdCBtX3BpeGVsU2l6
ZTsKICAgICB9OwogCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCB0aGF0IHVzZXMg
bWFsbG9jZWQgbWVtb3J5LgpAQCAtMTIxLDEzICsxMjMsMTQgQEAgcHVibGljOgogI2VuZGlmCiAK
IHByaXZhdGU6Ci0gICAgU2hhcmVhYmxlQml0bWFwKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBG
bGFncywgdm9pZCopOwotICAgIFNoYXJlYWJsZUJpdG1hcChjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiwgRmxhZ3MsIFJlZlB0cjxTaGFyZWRNZW1vcnk+KTsKKyAgICBTaGFyZWFibGVCaXRtYXAoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBzaXplX3QsIHZvaWQqKTsKKyAgICBTaGFyZWFi
bGVCaXRtYXAoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBzaXplX3QsIFJlZlB0cjxT
aGFyZWRNZW1vcnk+KTsKIAogI2lmIFVTRShDQUlSTykKLSAgICBzdGF0aWMgc2l6ZV90IG51bUJ5
dGVzRm9yU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CisgICAgLy8gRklYTUU6IG1ha2Ug
c3VyZSB0aGlzIGlzIG9rLCB0aGlzIHNlZW1zIHRvIGJlIHdpbmR3b3MgdGhpbmcsIG1heWJlPz8K
KyAgICBzdGF0aWMgc2l6ZV90IG51bUJ5dGVzRm9yU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiwgaW50IGNvbXBvbmVudFNpemUpOyAKICNlbHNlCi0gICAgc3RhdGljIHNpemVfdCBudW1CeXRl
c0ZvclNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkgeyByZXR1cm4gc2l6ZS53aWR0
aCgpICogc2l6ZS5oZWlnaHQoKSAqIDQ7IH0KKyAgICBzdGF0aWMgc2l6ZV90IG51bUJ5dGVzRm9y
U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBpbnQgY29tcG9uZW50U2l6ZSkgeyBy
ZXR1cm4gc2l6ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSAqIGNvbXBvbmVudFNpemU7IH0KICNl
bmRpZgogCiAjaWYgVVNFKENHKQpAQCAtMTQxLDEwICsxNDQsMTEgQEAgcHJpdmF0ZToKICNlbmRp
ZgogCiAgICAgdm9pZCogZGF0YSgpIGNvbnN0OwotICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNv
bnN0IHsgcmV0dXJuIG51bUJ5dGVzRm9yU2l6ZShtX3NpemUpOyB9CisgICAgc2l6ZV90IHNpemVJ
bkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbnVtQnl0ZXNGb3JTaXplKG1fc2l6ZSwgbV9waXhlbFNp
emUpOyB9CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKICAgICBGbGFncyBtX2ZsYWdz
OworICAgIHNpemVfdCBtX3BpeGVsU2l6ZTsKIAogICAgIC8vIElmIHRoZSBzaGFyZWFibGUgYml0
bWFwIGlzIGJhY2tlZCBieSBzaGFyZWQgbWVtb3J5LCB0aGlzIHBvaW50cyB0byB0aGUgc2hhcmVk
IG1lbW9yeSBvYmplY3QuCiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5j
cHAJKHJldmlzaW9uIDIwNzU0OCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9jZy9TaGFyZWFi
bGVCaXRtYXBDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1
ZGUgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29u
dGV4dENHLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlICJDR1V0aWxpdGllcy5oIgogCkBAIC0zNywyMSAr
MzgsNDAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyBDR0JpdG1hcEluZm8gYml0bWFw
SW5mbyhTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzKQogewotICAgIENHQml0bWFwSW5mbyBp
bmZvID0ga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0OwotICAgIGlmIChmbGFncyAmIFNoYXJlYWJs
ZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSkKLSAgICAgICAgaW5mbyB8PSBrQ0dJbWFnZUFscGhhUHJl
bXVsdGlwbGllZEZpcnN0OwotICAgIGVsc2UKLSAgICAgICAgaW5mbyB8PSBrQ0dJbWFnZUFscGhh
Tm9uZVNraXBGaXJzdDsKLQorICAgIENHQml0bWFwSW5mbyBpbmZvID0gMDsKKyAgICBpZiAoKGZs
YWdzICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0V4dGVuZGVkQ29sb3IpICYmIHNjcmVlblN1
cHBvcnRzRXh0ZW5kZWRDb2xvcigpKSB7CisgICAgICAgIGluZm8gfD0ga0NHQml0bWFwRmxvYXRD
b21wb25lbnRzIHwga0NHQml0bWFwQnl0ZU9yZGVyMTZIb3N0OworICAgICAgICAKKyAgICAgICAg
aWYgKGZsYWdzICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKQorICAgICAgICAgICAg
aW5mbyB8PSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3Q7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGluZm8gfD0ga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdDsKKyAgICAgICAgCisg
ICAgfSBlbHNlIHsKKyAgICAgICAgaW5mbyB8PSBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3Q7Cisg
ICAgICAgIAorICAgICAgICBpZiAoZmxhZ3MgJiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxw
aGEpCisgICAgICAgICAgICBpbmZvIHw9IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3Q7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluZm8gfD0ga0NHSW1hZ2VBbHBoYU5vbmVTa2lw
Rmlyc3Q7CisgICAgfQorICAgIAogICAgIHJldHVybiBpbmZvOwogfQogCiBzdGQ6OnVuaXF1ZV9w
dHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4
dCgpCiB7CiAgICAgcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IGRlcmVmIGluIHJlbGVhc2VCaXRtYXBD
b250ZXh0RGF0YS4KLSAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBiaXRtYXBDb250ZXh0ID0g
YWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVXaXRoRGF0YShkYXRhKCksCi0gICAgICAgIG1f
c2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIDgsIG1fc2l6ZS53aWR0aCgpICogNCwgc1JH
QkNvbG9yU3BhY2VSZWYoKSwKLSAgICAgICAgYml0bWFwSW5mbyhtX2ZsYWdzKSwgcmVsZWFzZUJp
dG1hcENvbnRleHREYXRhLCB0aGlzKSk7CisgICAgCisgICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9y
U3BhY2U7CisgICAgaWYgKChtX2ZsYWdzICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0V4dGVu
ZGVkQ29sb3IpICYmIChzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoKSkpCisgICAgICAgIGNv
bG9yU3BhY2UgPSBleHRlbmRlZHNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgZWxzZQorICAgICAg
ICBjb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICAKKyAgICBSZXRhaW5QdHI8
Q0dDb250ZXh0UmVmPiBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVh
dGVXaXRoRGF0YShkYXRhKCksIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIG1fcGl4
ZWxTaXplIDw8IDEgLyogbXVsdGlwbHkgYnkgMiAqOC80ID0gPDwgMSAqLywgbV9zaXplLndpZHRo
KCkgKiBtX3BpeGVsU2l6ZSwgY29sb3JTcGFjZSwgYml0bWFwSW5mbyhtX2ZsYWdzKSwgcmVsZWFz
ZUJpdG1hcENvbnRleHREYXRhLCB0aGlzKSk7CisgICAgCisgICAgQVNTRVJUKGJpdG1hcENvbnRl
eHQuZ2V0KCkpOwogCiAgICAgLy8gV2Ugd2FudCB0aGUgb3JpZ2luIHRvIGJlIGluIHRoZSB0b3Ag
bGVmdCBjb3JuZXIgc28gd2UgZmxpcCB0aGUgYmFja2luZyBzdG9yZSBjb250ZXh0LgogICAgIENH
Q29udGV4dFRyYW5zbGF0ZUNUTShiaXRtYXBDb250ZXh0LmdldCgpLCAwLCBtX3NpemUuaGVpZ2h0
KCkpOwpAQCAtODcsNyArMTA3LDcgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IFNoYXJlYWJsZUJp
dG1hcDo6bQogUmV0YWluUHRyPENHSW1hZ2VSZWY+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlQ0dJ
bWFnZShDR0RhdGFQcm92aWRlclJlZiBkYXRhUHJvdmlkZXIpIGNvbnN0CiB7CiAgICAgQVNTRVJU
X0FSRyhkYXRhUHJvdmlkZXIsIGRhdGFQcm92aWRlcik7Ci0KKyAgICAvLyBGSVhNRTogTWFrZSB0
aGlzIHVzZSBleHRlbmRlZCBjb2xvciwgZXRjLgogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBp
bWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdo
dCgpLCA4LCAzMiwgbV9zaXplLndpZHRoKCkgKiA0LCBzUkdCQ29sb3JTcGFjZVJlZigpLCBiaXRt
YXBJbmZvKG1fZmxhZ3MpLCBkYXRhUHJvdmlkZXIsIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRl
bnREZWZhdWx0KSk7CiAgICAgcmV0dXJuIGltYWdlOwogfQpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkocmV2aXNpb24g
MjA3NTQ4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzU3LDcgKzIzNTcsOCBAQCB2b2lkIFdlYlBhZ2U6
OmdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNjcmVlblNpemVJblBpeGVscy5zY2FsZShjb3JlUGFnZSgpLT5kZXZpY2VTY2FsZUZhY3Rv
cigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRTaXplIHNjYWxlZFNp
emUgPSBsYXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3QoaW1hZ2UtPnNpemUoKS53
aWR0aCgpIC8gaW1hZ2UtPnNpemUoKS5oZWlnaHQoKSwgRmxvYXRSZWN0KDAsIDAsIHNjcmVlblNp
emVJblBpeGVscy53aWR0aCgpLCBzY3JlZW5TaXplSW5QaXhlbHMuaGVpZ2h0KCkpKS5zaXplKCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0U2l6ZSBiaXRtYXBTaXplID0g
c2NhbGVkU2l6ZS53aWR0aCgpIDwgaW1hZ2UtPnNpemUoKS53aWR0aCgpID8gc2NhbGVkU2l6ZSA6
IGltYWdlLT5zaXplKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRz
QWxwaGEpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBPbmx5
IHNlbGVjdCBFeHRlbmRlZENvbG9yIG9uIGltYWdlcyBrbm93biB0byBuZWVkIHdpZGUgZ2FtdXQK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNp
emUoYml0bWFwU2l6ZSksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSB8IFNoYXJlYWJs
ZUJpdG1hcDo6U3VwcG9ydHNFeHRlbmRlZENvbG9yKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzaGFyZWRCaXRtYXAtPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFw
U2l6ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmZvLmltYWdlID0gc2hhcmVkQml0bWFwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292867</attachid>
            <date>2016-10-25 19:52:44 -0700</date>
            <delta_ts>2016-10-25 20:28:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164001-20161025194857.patch</filename>
            <type>text/plain</type>
            <size>14385</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJldmlzaW9uIDIwNzg2MikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTMsNiArOTMsMTcgQEAgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlUmVm
KCkKICNlbmRpZiAvLyBQTEFURk9STShXSU4pCiAgICAgcmV0dXJuIHNSR0JTcGFjZTsKIH0KKyAg
ICAKK0NHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCkKK3sKKyAgICBz
dGF0aWMgQ0dDb2xvclNwYWNlUmVmIHNSR0JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhO
YW1lKGtDR0NvbG9yU3BhY2VFeHRlbmRlZFNSR0IpOworI2lmIFBMQVRGT1JNKFdJTikKKyAgICAv
LyBEb24ndCB3b3JyeSBhYm91dCBleHRlbmRlZCBjb2xvcnMgb24gd2luZG93cworICAgIGlmICgh
c1JHQlNwYWNlKQorICAgICAgICBzUkdCU3BhY2UgPSBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCk7
CisjZW5kaWYgLy8gUExBVEZPUk0oV0lOKQorICAgIHJldHVybiBzUkdCU3BhY2U7Cit9CiAKIENH
Q29sb3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCkKIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuaAkocmV2aXNpb24gMjA3ODYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENHQ29sb3JTcGFjZVJlZiBkZXZpY2VSR0JDb2xvclNw
YWNlUmVmKCk7CiBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VS
ZWYoKTsKK1dFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNw
YWNlUmVmKCk7CiBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JT
cGFjZVJlZigpOwogQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKTsKIApJ
bmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3ODYyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTYtMTAtMjUgIE1lZ2FuIEdh
cmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBm
b3Igd2lkZSBnYW11dCBmb3IgU2hhcmVhYmxlQml0bWFwIGZvciBpbWFnZSBwb3BvdmVycworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MDAxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgc3VwcHBv
cnQgZm9yIHdpZGUgZ2FtdXQgaW4gU2hhcmVhYmxlQml0bWFwLiBTaGFyYWJsZUJpdG1hcHMgbm93
IGtub3cgdGhlIHNpemUgb2YgdGhlaXIgcGl4ZWxzLAorICAgICAgICBhbmQgdGhhdCBkYXRhIGlz
IHBhc3NlZCBiYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIHRoZSBwcm9jZXNzZXMuIFRoZSBjYWxsZXJz
IG9mIFNoYXJlZEJpdG1hcCB3aWxsIGRldGVybWluZQorICAgICAgICBpZiB0aGVpciBpbWFnZSBz
aG91bGQgc3VwcG9ydCB3aWRlIGdhbXV0LCBidXQgU2hhcmVhYmxlQml0bWFwIHdpbGwgb3ZlcnJp
ZGUgYSBzZXQgZmxhZyBvbiBhIGRldmljZSB0aGF0CisgICAgICAgIGlzIGluY2FwYmFibGUgb2Yg
c3VwcG9ydGluZyBhIHdpZGUgZ2FtdXQgaW1hZ2UuCisgICAgICAgIFRoaXMgYWxzbyBhZGRzIHVz
aW5nIHdpZGUgZ2FtdXQgaW1hZ2VzIGZvciBpbWFnZSBwb3BvdmVycyBpbiBtb2JpbGVTYWZhcmku
CisgICAgICAgIFRoaXMgaXMgY3VycmVudGx5IHVudGVzdGFibGUsIGR1ZSB0byBzaW11bGF0b3Ig
bGltaXRhdGlvbnMsIHNvIG5vIHRlc3RzIGFkZGVkLgorCisgICAgICAgICogUGxhdGZvcm0vSVBD
L0RlY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9EZWNvZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIu
Y3BwOgorICAgICAgICAoSVBDOjpFbmNvZGVyOjplbmNvZGUpOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9FbmNvZGVyLmg6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OmJ5dGVzUGVyUGl4ZWwpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0
bWFwOjpIYW5kbGU6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUpOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRsZSk6CisgICAgICAg
IChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKToKKyAgICAgICAgKiBT
aGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1h
cDo6bnVtQnl0ZXNGb3JTaXplKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpz
aXplSW5CeXRlcyk6CisgICAgICAgICogU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Yml0bWFwSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVDR0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFBvc2l0aW9u
SW5mb3JtYXRpb24pOgorCiAyMDE2LTEwLTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ01ha2UgYnVpbGQgZml4LgpJbmRleDogU291cmNl
L1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAJKHJldmlzaW9uIDIwNzg2MikKKysr
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSwxMCArMjksMjAgQEAKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29u
dGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworICAgIAorc3RhdGljIHVpbnQ2
NF90IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwoU2hhcmVhYmxlQml0bWFwOjpGbGFncyBmbGFncykK
K3sKKyAgICBpZiAoZmxhZ3MgJiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzRXh0ZW5kZWRDb2xv
cikgeworICAgICAgICBpZiAoc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKCkpCisgICAgICAg
ICAgICByZXR1cm4gODsKKyAgICB9CisgICAgcmV0dXJuIDQ7Cit9CiAKIFNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlOjpIYW5kbGUoKQogICAgIDogbV9mbGFncygwKQpAQCAtNDQsNiArNTQsNyBAQCB2
b2lkIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjplbmNvZGUoSVBDCiAgICAgZW5jb2RlciA8PCBt
X2hhbmRsZTsKICAgICBlbmNvZGVyIDw8IG1fc2l6ZTsKICAgICBlbmNvZGVyIDw8IG1fZmxhZ3M7
CisgICAgZW5jb2RlciA8PCBtX2J5dGVzUGVyUGl4ZWw7CiB9CiAKIGJvb2wgU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxl
KQpAQCAtNTQsNiArNjUsOCBAQCBib29sIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjpkZWNvZGUo
SVBDCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhbmRs
ZS5tX2ZsYWdzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoaGFuZGxlLm1fYnl0ZXNQZXJQaXhlbCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjIsMTEgKzc1LDEzIEBAIHZvaWQgU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGU6OmNsZWFyKCkKICAgICBtX2hhbmRsZS5jbGVhcigpOwogICAgIG1fc2l6ZSA9IElu
dFNpemUoKTsKICAgICBtX2ZsYWdzID0gRmxhZzo6Tm9GbGFnczsKKyAgICBtX2J5dGVzUGVyUGl4
ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKG1fZmxhZ3MpOwogfQogCiBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBG
bGFncyBmbGFncykKIHsKLSAgICBhdXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUp
OworICAgIHVpbnQ2NF90IGJ5dGVzUGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGZs
YWdzKTsKKyAgICBhdXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUsIGJ5dGVzUGVy
UGl4ZWwpOwogICAgIGlmIChudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCkBAIC03NCwxMiArODksMTMgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
U2hhcmVhYmxlQml0bWFwOgogICAgIGlmICghdHJ5RmFzdE1hbGxvYyhudW1CeXRlcy51bnNhZmVH
ZXQoKSkuZ2V0VmFsdWUoZGF0YSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVCaXRtYXAoc2l6ZSwgZmxhZ3MsIGRhdGEpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBmbGFncywgYnl0ZXNQ
ZXJQaXhlbCwgZGF0YSkpOwogfQogCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncykK
IHsKLSAgICBhdXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUpOworICAgIHVpbnQ2
NF90IGJ5dGVzUGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGZsYWdzKTsKKyAgICBh
dXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUsIGJ5dGVzUGVyUGl4ZWwpOwogICAg
IGlmIChudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CkBAIC04NywyMiArMTAzLDIzIEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJp
dG1hcDoKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBmbGFncywgc2hh
cmVkTWVtb3J5KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVCaXRtYXAoc2l6
ZSwgZmxhZ3MsIGJ5dGVzUGVyUGl4ZWwsIHNoYXJlZE1lbW9yeSkpOwogfQogCiBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXpl
LCBGbGFncyBmbGFncywgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5KQogewogICAg
IEFTU0VSVChzaGFyZWRNZW1vcnkpOwogCi0gICAgYXV0byBudW1CeXRlcyA9IG51bUJ5dGVzRm9y
U2l6ZShzaXplKTsKKyAgICB1aW50NjRfdCBieXRlc1BlclBpeGVsID0gY2FsY3VsYXRlQnl0ZXNQ
ZXJQaXhlbChmbGFncyk7CisgICAgYXV0byBudW1CeXRlcyA9IG51bUJ5dGVzRm9yU2l6ZShzaXpl
LCBieXRlc1BlclBpeGVsKTsKICAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoc2hhcmVkTWVtb3J5LT5zaXplKCkgPCBudW1C
eXRlcy51bnNhZmVHZXQoKSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFy
ZWFibGVCaXRtYXAoc2l6ZSwgZmxhZ3MsIHNoYXJlZE1lbW9yeSkpOworICAgIAorICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGZsYWdzLCBieXRlc1BlclBpeGVs
LCBzaGFyZWRNZW1vcnkpKTsKIH0KIAogUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbiBwcm90ZWN0aW9uKQpAQCAtMTIzLDE5ICsxNDAsMjIgQEAgYm9vbCBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZUhhbmRsZShIYW5kbAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaGFuZGxl
Lm1fc2l6ZSA9IG1fc2l6ZTsKICAgICBoYW5kbGUubV9mbGFncyA9IG1fZmxhZ3M7CisgICAgaGFu
ZGxlLm1fYnl0ZXNQZXJQaXhlbCA9IG1fYnl0ZXNQZXJQaXhlbDsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotU2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6
ZSwgRmxhZ3MgZmxhZ3MsIHZvaWQqIGRhdGEpCitTaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJp
dG1hcChjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncywgdWludDY0X3QgcGl4ZWxTaXpl
LCB2b2lkKiBkYXRhKQogICAgIDogbV9zaXplKHNpemUpCiAgICAgLCBtX2ZsYWdzKGZsYWdzKQor
ICAgICwgbV9ieXRlc1BlclBpeGVsKHBpeGVsU2l6ZSkKICAgICAsIG1fZGF0YShkYXRhKQogewog
fQogCi1TaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXpl
LCBGbGFncyBmbGFncywgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5KQorU2hhcmVh
YmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxh
Z3MsIHVpbnQ2NF90IHBpeGVsU2l6ZSwgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5
KQogICAgIDogbV9zaXplKHNpemUpCiAgICAgLCBtX2ZsYWdzKGZsYWdzKQorICAgICwgbV9ieXRl
c1BlclBpeGVsKHBpeGVsU2l6ZSkKICAgICAsIG1fc2hhcmVkTWVtb3J5KHNoYXJlZE1lbW9yeSkK
ICAgICAsIG1fZGF0YSgwKQogewpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJs
ZUJpdG1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVC
aXRtYXAuaAkocmV2aXNpb24gMjA3ODYyKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJl
YWJsZUJpdG1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAg
ICBlbnVtIEZsYWcgewogICAgICAgICBOb0ZsYWdzID0gMCwKICAgICAgICAgU3VwcG9ydHNBbHBo
YSA9IDEgPDwgMCwKKyAgICAgICAgU3VwcG9ydHNFeHRlbmRlZENvbG9yID0gMSA8PCAxLAogICAg
IH07CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBGbGFnczsKIApAQCAtNzIsNiArNzMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIG11dGFibGUgU2hhcmVkTWVtb3J5OjpIYW5kbGUgbV9oYW5kbGU7CiAgICAg
ICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwogICAgICAgICBGbGFncyBtX2ZsYWdzOworICAg
ICAgICB1aW50NjRfdCBtX2J5dGVzUGVyUGl4ZWw7CiAgICAgfTsKIAogICAgIC8vIENyZWF0ZSBh
IHNoYXJlYWJsZSBiaXRtYXAgdGhhdCB1c2VzIG1hbGxvY2VkIG1lbW9yeS4KQEAgLTEyMSwxMyAr
MTIzLDE0IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIFNoYXJlYWJsZUJpdG1h
cChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIHZvaWQqKTsKLSAgICBTaGFyZWFibGVC
aXRtYXAoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBSZWZQdHI8U2hhcmVkTWVtb3J5
Pik7CisgICAgU2hhcmVhYmxlQml0bWFwKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncywg
dWludDY0X3QsIHZvaWQqKTsKKyAgICBTaGFyZWFibGVCaXRtYXAoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYsIEZsYWdzLCB1aW50NjRfdCwgUmVmUHRyPFNoYXJlZE1lbW9yeT4pOwogCiAjaWYgVVNF
KENBSVJPKQotICAgIHN0YXRpYyBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gbnVt
Qnl0ZXNGb3JTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKKyAgICAvLyBGSVhNRTogbWFr
ZSBzdXJlIHRoaXMgaXMgb2ssIHRoaXMgc2VlbXMgdG8gYmUgd2luZG93cyB0aGluZywgbWF5YmU/
PworICAgIHN0YXRpYyBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gbnVtQnl0ZXNG
b3JTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBpbnQgYnl0ZXNQZXJQaXhlbCk7CiAjZWxz
ZQotICAgIHN0YXRpYyBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gbnVtQnl0ZXNG
b3JTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpIHsgcmV0dXJuIHNpemUuYXJlYTxS
ZWNvcmRPdmVyZmxvdz4oKSAqIDQ7IH0KKyAgICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVj
b3JkT3ZlcmZsb3c+IG51bUJ5dGVzRm9yU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXpl
LCBpbnQgYnl0ZXNQZXJQaXhlbCkgeyByZXR1cm4gc2l6ZS5hcmVhPFJlY29yZE92ZXJmbG93Pigp
ICogYnl0ZXNQZXJQaXhlbDsgfQogI2VuZGlmCiAKICNpZiBVU0UoQ0cpCkBAIC0xNDEsMTAgKzE0
NCwxMSBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICB2b2lkKiBkYXRhKCkgY29uc3Q7Ci0gICAg
c2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbnVtQnl0ZXNGb3JTaXplKG1fc2l6
ZSkudW5zYWZlR2V0KCk7IH0KKyAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVy
biBudW1CeXRlc0ZvclNpemUobV9zaXplLCBtX2J5dGVzUGVyUGl4ZWwpLnVuc2FmZUdldCgpOyB9
CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKICAgICBGbGFncyBtX2ZsYWdzOworICAg
IHNpemVfdCBtX2J5dGVzUGVyUGl4ZWw7CiAKICAgICAvLyBJZiB0aGUgc2hhcmVhYmxlIGJpdG1h
cCBpcyBiYWNrZWQgYnkgc2hhcmVkIG1lbW9yeSwgdGhpcyBwb2ludHMgdG8gdGhlIHNoYXJlZCBt
ZW1vcnkgb2JqZWN0LgogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OwpJ
bmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3Bw
CShyZXZpc2lvbiAyMDc4NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2cvU2hhcmVhYmxl
Qml0bWFwQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRl
IDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHRDRy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSAiQ0dVdGlsaXRpZXMuaCIKIApAQCAtMzcsMjEgKzM4
LDQwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgQ0dCaXRtYXBJbmZvIGJpdG1hcElu
Zm8oU2hhcmVhYmxlQml0bWFwOjpGbGFncyBmbGFncykKIHsKLSAgICBDR0JpdG1hcEluZm8gaW5m
byA9IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdDsKLSAgICBpZiAoZmxhZ3MgJiBTaGFyZWFibGVC
aXRtYXA6OlN1cHBvcnRzQWxwaGEpCi0gICAgICAgIGluZm8gfD0ga0NHSW1hZ2VBbHBoYVByZW11
bHRpcGxpZWRGaXJzdDsKLSAgICBlbHNlCi0gICAgICAgIGluZm8gfD0ga0NHSW1hZ2VBbHBoYU5v
bmVTa2lwRmlyc3Q7Ci0KKyAgICBDR0JpdG1hcEluZm8gaW5mbyA9IDA7CisgICAgaWYgKChmbGFn
cyAmIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNFeHRlbmRlZENvbG9yKSAmJiBzY3JlZW5TdXBw
b3J0c0V4dGVuZGVkQ29sb3IoKSkgeworICAgICAgICBpbmZvIHw9IGtDR0JpdG1hcEZsb2F0Q29t
cG9uZW50cyB8IGtDR0JpdG1hcEJ5dGVPcmRlcjE2SG9zdDsKKyAgICAgICAgCisgICAgICAgIGlm
IChmbGFncyAmIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSkKKyAgICAgICAgICAgIGlu
Zm8gfD0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0OworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBpbmZvIHw9IGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3Q7CisgICAgICAgIAorICAg
IH0gZWxzZSB7CisgICAgICAgIGluZm8gfD0ga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0OworICAg
ICAgICAKKyAgICAgICAgaWYgKGZsYWdzICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhh
KQorICAgICAgICAgICAgaW5mbyB8PSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0Owor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBpbmZvIHw9IGtDR0ltYWdlQWxwaGFOb25lU2tpcEZp
cnN0OworICAgIH0KKyAgICAKICAgICByZXR1cm4gaW5mbzsKIH0KIAogc3RkOjp1bmlxdWVfcHRy
PEdyYXBoaWNzQ29udGV4dD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQo
KQogewogICAgIHJlZigpOyAvLyBCYWxhbmNlZCBieSBkZXJlZiBpbiByZWxlYXNlQml0bWFwQ29u
dGV4dERhdGEuCi0gICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0bWFwQ29udGV4dCA9IGFk
b3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlV2l0aERhdGEoZGF0YSgpLAotICAgICAgICBtX3Np
emUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCA4LCBtX3NpemUud2lkdGgoKSAqIDQsIHNSR0JD
b2xvclNwYWNlUmVmKCksCi0gICAgICAgIGJpdG1hcEluZm8obV9mbGFncyksIHJlbGVhc2VCaXRt
YXBDb250ZXh0RGF0YSwgdGhpcykpOworICAgIAorICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNw
YWNlOworICAgIGlmICgobV9mbGFncyAmIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNFeHRlbmRl
ZENvbG9yKSAmJiAoc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKCkpKQorICAgICAgICBjb2xv
clNwYWNlID0gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpOworICAgIGVsc2UKKyAgICAgICAg
Y29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgCisgICAgUmV0YWluUHRyPENH
Q29udGV4dFJlZj4gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRl
V2l0aERhdGEoZGF0YSgpLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCBtX2J5dGVz
UGVyUGl4ZWwgKiA4IC8gNCwgbV9zaXplLndpZHRoKCkgKiBtX2J5dGVzUGVyUGl4ZWwsIGNvbG9y
U3BhY2UsIGJpdG1hcEluZm8obV9mbGFncyksIHJlbGVhc2VCaXRtYXBDb250ZXh0RGF0YSwgdGhp
cykpOworICAgIAorICAgIEFTU0VSVChiaXRtYXBDb250ZXh0LmdldCgpKTsKIAogICAgIC8vIFdl
IHdhbnQgdGhlIG9yaWdpbiB0byBiZSBpbiB0aGUgdG9wIGxlZnQgY29ybmVyIHNvIHdlIGZsaXAg
dGhlIGJhY2tpbmcgc3RvcmUgY29udGV4dC4KICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oYml0
bWFwQ29udGV4dC5nZXQoKSwgMCwgbV9zaXplLmhlaWdodCgpKTsKQEAgLTg3LDcgKzEwNyw3IEBA
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBTaGFyZWFibGVCaXRtYXA6Om0KIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUNHSW1hZ2UoQ0dEYXRhUHJvdmlkZXJSZWYg
ZGF0YVByb3ZpZGVyKSBjb25zdAogewogICAgIEFTU0VSVF9BUkcoZGF0YVByb3ZpZGVyLCBkYXRh
UHJvdmlkZXIpOwotCisgICAgLy8gRklYTUU6IE1ha2UgdGhpcyB1c2UgZXh0ZW5kZWQgY29sb3Is
IGV0Yy4KICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VD
cmVhdGUobV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgOCwgMzIsIG1fc2l6ZS53aWR0
aCgpICogNCwgc1JHQkNvbG9yU3BhY2VSZWYoKSwgYml0bWFwSW5mbyhtX2ZsYWdzKSwgZGF0YVBy
b3ZpZGVyLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogICAgIHJldHVy
biBpbWFnZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDIwNzg2MikKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjM1Nyw3ICsyMzU3LDggQEAgdm9pZCBXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9u
KGNvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JlZW5TaXplSW5QaXhlbHMu
c2NhbGUoY29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZsb2F0U2l6ZSBzY2FsZWRTaXplID0gbGFyZ2VzdFJlY3RXaXRoQXNw
ZWN0UmF0aW9JbnNpZGVSZWN0KGltYWdlLT5zaXplKCkud2lkdGgoKSAvIGltYWdlLT5zaXplKCku
aGVpZ2h0KCksIEZsb2F0UmVjdCgwLCAwLCBzY3JlZW5TaXplSW5QaXhlbHMud2lkdGgoKSwgc2Ny
ZWVuU2l6ZUluUGl4ZWxzLmhlaWdodCgpKSkuc2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGbG9hdFNpemUgYml0bWFwU2l6ZSA9IHNjYWxlZFNpemUud2lkdGgoKSA8IGlt
YWdlLT5zaXplKCkud2lkdGgoKSA/IHNjYWxlZFNpemUgOiBpbWFnZS0+c2l6ZSgpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc2hh
cmVkQml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShiaXRt
YXBTaXplKSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogT25seSBzZWxlY3QgRXh0ZW5kZWRDb2xvciBv
biBpbWFnZXMga25vd24gdG8gbmVlZCB3aWRlIGdhbXV0CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzaGFyZWRCaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCBTaGFyZWFi
bGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEgfCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzRXh0ZW5k
ZWRDb2xvcikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gZ3Jh
cGhpY3NDb250ZXh0ID0gc2hhcmVkQml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0lt
YWdlKCppbWFnZSwgRmxvYXRSZWN0KDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6
ZS5oZWlnaHQoKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5p
bWFnZSA9IHNoYXJlZEJpdG1hcDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292870</attachid>
            <date>2016-10-25 20:28:04 -0700</date>
            <delta_ts>2016-10-25 20:52:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164001-20161025202418.patch</filename>
            <type>text/plain</type>
            <size>14344</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJldmlzaW9uIDIwNzg2MikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTMsNiArOTMsMTggQEAgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlUmVm
KCkKICNlbmRpZiAvLyBQTEFURk9STShXSU4pCiAgICAgcmV0dXJuIHNSR0JTcGFjZTsKIH0KKyAg
ICAKK0NHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCkKK3sKKyAgICBz
dGF0aWMgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQlNwYWNlOworI2lmIChQTEFURk9STShJ
T1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMDAwMCkgfHwgKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+IDEwMTIwMCkK
KyAgICBleHRlbmRlZFNSR0JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0Nv
bG9yU3BhY2VFeHRlbmRlZFNSR0IpOworI2VuZGlmCisgICAgLy8gaWYgdGhlcmUgaXMgbm8gc3Vw
cG9ydCBvbiBkZXZpY2UsIGZhbGwgYmFjayB0byBzUkdCCisgICAgaWYgKCFleHRlbmRlZFNSR0JT
cGFjZSkKKyAgICAgICAgZXh0ZW5kZWRTUkdCU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOwor
ICAgIHJldHVybiBleHRlbmRlZFNSR0JTcGFjZTsKK30KIAogQ0dDb2xvclNwYWNlUmVmIGRpc3Bs
YXlQM0NvbG9yU3BhY2VSZWYoKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCShyZXZpc2lvbiAyMDc4
NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRDRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogQ0dDb2xvclNwYWNlUmVmIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsKIFdFQkNPUkVf
RVhQT1JUIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZVJlZigpOworV0VCQ09SRV9FWFBP
UlQgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKTsKIFdFQkNPUkVf
RVhQT1JUIENHQ29sb3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCk7CiBDR0NvbG9y
U3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMDc4NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0MiBAQAorMjAxNi0xMC0yNSAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRu
ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciB3aWRlIGdhbXV0IGZvciBT
aGFyZWFibGVCaXRtYXAgZm9yIGltYWdlIHBvcG92ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQwMDEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzdXBwcG9ydCBmb3Igd2lkZSBnYW11dCBp
biBTaGFyZWFibGVCaXRtYXAuIFNoYXJhYmxlQml0bWFwcyBub3cga25vdyB0aGUgc2l6ZSBvZiB0
aGVpciBwaXhlbHMsCisgICAgICAgIGFuZCB0aGF0IGRhdGEgaXMgcGFzc2VkIGJhY2sgYW5kIGZv
cnRoIGJldHdlZW4gdGhlIHByb2Nlc3Nlcy4gVGhlIGNhbGxlcnMgb2YgU2hhcmVkQml0bWFwIHdp
bGwgZGV0ZXJtaW5lCisgICAgICAgIGlmIHRoZWlyIGltYWdlIHNob3VsZCBzdXBwb3J0IHdpZGUg
Z2FtdXQsIGJ1dCBTaGFyZWFibGVCaXRtYXAgd2lsbCBvdmVycmlkZSBhIHNldCBmbGFnIG9uIGEg
ZGV2aWNlIHRoYXQKKyAgICAgICAgaXMgaW5jYXBiYWJsZSBvZiBzdXBwb3J0aW5nIGEgd2lkZSBn
YW11dCBpbWFnZS4KKyAgICAgICAgVGhpcyBhbHNvIGFkZHMgdXNpbmcgd2lkZSBnYW11dCBpbWFn
ZXMgZm9yIGltYWdlIHBvcG92ZXJzIGluIG1vYmlsZVNhZmFyaS4KKyAgICAgICAgVGhpcyBpcyBj
dXJyZW50bHkgdW50ZXN0YWJsZSwgZHVlIHRvIHNpbXVsYXRvciBsaW1pdGF0aW9ucywgc28gbm8g
dGVzdHMgYWRkZWQuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHA6CisgICAg
ICAgIChJUEM6OkRlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29k
ZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHA6CisgICAgICAgIChJUEM6
OkVuY29kZXI6OmVuY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuaDoKKyAg
ICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Ynl0
ZXNQZXJQaXhlbCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjpl
bmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6ZGVjb2Rl
KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmNsZWFyKToKKyAg
ICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxl
Qml0bWFwOjpTaGFyZWFibGVCaXRtYXApOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRt
YXAuaDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpudW1CeXRlc0ZvclNpemUp
OgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OnNpemVJbkJ5dGVzKToKKyAgICAg
ICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0Ojpi
aXRtYXBJbmZvKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFw
aGljc0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUNH
SW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbik6CisKIDIw
MTYtMTAtMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBDTWFrZSBidWlsZCBmaXguCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hh
cmVhYmxlQml0bWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hh
cmVhYmxlQml0bWFwLmNwcAkocmV2aXNpb24gMjA3ODYyKQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDEzIEBA
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CisgICAgCitz
dGF0aWMgdWludDY0X3QgY2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChTaGFyZWFibGVCaXRtYXA6OkZs
YWdzIGZsYWdzKQoreworICAgIGlmIChmbGFncyAmIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNF
eHRlbmRlZENvbG9yKQorICAgICAgICByZXR1cm4gODsKKyAgICByZXR1cm4gNDsKK30KIAogU2hh
cmVhYmxlQml0bWFwOjpIYW5kbGU6OkhhbmRsZSgpCiAgICAgOiBtX2ZsYWdzKDApCkBAIC00NCw2
ICs1MSw3IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmVuY29kZShJUEMKICAgICBl
bmNvZGVyIDw8IG1faGFuZGxlOwogICAgIGVuY29kZXIgPDwgbV9zaXplOwogICAgIGVuY29kZXIg
PDwgbV9mbGFnczsKKyAgICBlbmNvZGVyIDw8IG1fYnl0ZXNQZXJQaXhlbDsKIH0KIAogYm9vbCBT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgSGFu
ZGxlJiBoYW5kbGUpCkBAIC01NCw2ICs2Miw4IEBAIGJvb2wgU2hhcmVhYmxlQml0bWFwOjpIYW5k
bGU6OmRlY29kZShJUEMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaGFuZGxlLm1fZmxhZ3MpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShoYW5kbGUubV9ieXRlc1BlclBpeGVsKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02MiwxMSArNzIsMTMgQEAgdm9pZCBTaGFy
ZWFibGVCaXRtYXA6OkhhbmRsZTo6Y2xlYXIoKQogICAgIG1faGFuZGxlLmNsZWFyKCk7CiAgICAg
bV9zaXplID0gSW50U2l6ZSgpOwogICAgIG1fZmxhZ3MgPSBGbGFnOjpOb0ZsYWdzOworICAgIG1f
Ynl0ZXNQZXJQaXhlbCA9IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwobV9mbGFncyk7CiB9CiAKIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNp
emUmIHNpemUsIEZsYWdzIGZsYWdzKQogewotICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0Zv
clNpemUoc2l6ZSk7CisgICAgdWludDY0X3QgYnl0ZXNQZXJQaXhlbCA9IGNhbGN1bGF0ZUJ5dGVz
UGVyUGl4ZWwoZmxhZ3MpOworICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6
ZSwgYnl0ZXNQZXJQaXhlbCk7CiAgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTc0LDEyICs4NiwxMyBAQCBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6CiAgICAgaWYgKCF0cnlGYXN0TWFsbG9jKG51bUJ5
dGVzLnVuc2FmZUdldCgpKS5nZXRWYWx1ZShkYXRhKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBmbGFncywg
ZGF0YSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGZs
YWdzLCBieXRlc1BlclBpeGVsLCBkYXRhKSk7CiB9CiAKIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGNvbnN0IEludFNpemUmIHNpemUsIEZs
YWdzIGZsYWdzKQogewotICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSk7
CisgICAgdWludDY0X3QgYnl0ZXNQZXJQaXhlbCA9IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwoZmxh
Z3MpOworICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSwgYnl0ZXNQZXJQ
aXhlbCk7CiAgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKQEAgLTg3LDIyICsxMDAsMjMgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
U2hhcmVhYmxlQml0bWFwOgogICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUs
IGZsYWdzLCBzaGFyZWRNZW1vcnkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJs
ZUJpdG1hcChzaXplLCBmbGFncywgYnl0ZXNQZXJQaXhlbCwgc2hhcmVkTWVtb3J5KSk7CiB9CiAK
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IElu
dFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1v
cnkpCiB7CiAgICAgQVNTRVJUKHNoYXJlZE1lbW9yeSk7CiAKLSAgICBhdXRvIG51bUJ5dGVzID0g
bnVtQnl0ZXNGb3JTaXplKHNpemUpOworICAgIHVpbnQ2NF90IGJ5dGVzUGVyUGl4ZWwgPSBjYWxj
dWxhdGVCeXRlc1BlclBpeGVsKGZsYWdzKTsKKyAgICBhdXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNG
b3JTaXplKHNpemUsIGJ5dGVzUGVyUGl4ZWwpOwogICAgIGlmIChudW1CeXRlcy5oYXNPdmVyZmxv
d2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChzaGFyZWRNZW1vcnktPnNp
emUoKSA8IG51bUJ5dGVzLnVuc2FmZUdldCgpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0KLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBmbGFncywgc2hhcmVkTWVtb3J5KSk7CisgICAg
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVCaXRtYXAoc2l6ZSwgZmxhZ3MsIGJ5
dGVzUGVyUGl4ZWwsIHNoYXJlZE1lbW9yeSkpOwogfQogCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pCkBAIC0xMjMsMTkgKzEzNywyMiBAQCBib29sIFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlSGFuZGxlKEhhbmRsCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBoYW5kbGUubV9zaXplID0gbV9zaXplOwogICAgIGhhbmRsZS5tX2ZsYWdzID0gbV9mbGFn
czsKKyAgICBoYW5kbGUubV9ieXRlc1BlclBpeGVsID0gbV9ieXRlc1BlclBpeGVsOwogICAgIHJl
dHVybiB0cnVlOwogfQogCi1TaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJ
bnRTaXplJiBzaXplLCBGbGFncyBmbGFncywgdm9pZCogZGF0YSkKK1NoYXJlYWJsZUJpdG1hcDo6
U2hhcmVhYmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCB1aW50NjRf
dCBwaXhlbFNpemUsIHZvaWQqIGRhdGEpCiAgICAgOiBtX3NpemUoc2l6ZSkKICAgICAsIG1fZmxh
Z3MoZmxhZ3MpCisgICAgLCBtX2J5dGVzUGVyUGl4ZWwocGl4ZWxTaXplKQogICAgICwgbV9kYXRh
KGRhdGEpCiB7CiB9CiAKLVNoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKGNvbnN0IElu
dFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1v
cnkpCitTaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXpl
LCBGbGFncyBmbGFncywgdWludDY0X3QgcGl4ZWxTaXplLCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBz
aGFyZWRNZW1vcnkpCiAgICAgOiBtX3NpemUoc2l6ZSkKICAgICAsIG1fZmxhZ3MoZmxhZ3MpCisg
ICAgLCBtX2J5dGVzUGVyUGl4ZWwocGl4ZWxTaXplKQogICAgICwgbV9zaGFyZWRNZW1vcnkoc2hh
cmVkTWVtb3J5KQogICAgICwgbV9kYXRhKDApCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvU2hhcmVhYmxlQml0bWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVk
L1NoYXJlYWJsZUJpdG1hcC5oCShyZXZpc2lvbiAyMDc4NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvU2hhcmVhYmxlQml0bWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAg
cHVibGljOgogICAgIGVudW0gRmxhZyB7CiAgICAgICAgIE5vRmxhZ3MgPSAwLAogICAgICAgICBT
dXBwb3J0c0FscGhhID0gMSA8PCAwLAorICAgICAgICBTdXBwb3J0c0V4dGVuZGVkQ29sb3IgPSAx
IDw8IDEsCiAgICAgfTsKICAgICB0eXBlZGVmIHVuc2lnbmVkIEZsYWdzOwogCkBAIC03Miw2ICs3
Myw3IEBAIHB1YmxpYzoKICAgICAgICAgbXV0YWJsZSBTaGFyZWRNZW1vcnk6OkhhbmRsZSBtX2hh
bmRsZTsKICAgICAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemU7CiAgICAgICAgIEZsYWdzIG1f
ZmxhZ3M7CisgICAgICAgIHVpbnQ2NF90IG1fYnl0ZXNQZXJQaXhlbDsKICAgICB9OwogCiAgICAg
Ly8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCB0aGF0IHVzZXMgbWFsbG9jZWQgbWVtb3J5LgpA
QCAtMTIxLDEzICsxMjMsMTQgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgU2hh
cmVhYmxlQml0bWFwKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncywgdm9pZCopOwotICAg
IFNoYXJlYWJsZUJpdG1hcChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFJlZlB0cjxT
aGFyZWRNZW1vcnk+KTsKKyAgICBTaGFyZWFibGVCaXRtYXAoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIEZsYWdzLCB1aW50NjRfdCwgdm9pZCopOworICAgIFNoYXJlYWJsZUJpdG1hcChjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIHVpbnQ2NF90LCBSZWZQdHI8U2hhcmVkTWVtb3J5Pik7
CiAKICNpZiBVU0UoQ0FJUk8pCisgICAgLy8gRklYTUU6IG1ha2Ugc3VyZSB0aGlzIGlzIG9rLCB0
aGlzIHNlZW1zIHRvIGJlIHdpbmRvd3MgdGhpbmcsIG1heWJlPz8KICAgICBzdGF0aWMgQ2hlY2tl
ZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IG51bUJ5dGVzRm9yU2l6ZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJik7CiAjZWxzZQotICAgIHN0YXRpYyBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRP
dmVyZmxvdz4gbnVtQnl0ZXNGb3JTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpIHsg
cmV0dXJuIHNpemUuYXJlYTxSZWNvcmRPdmVyZmxvdz4oKSAqIDQ7IH0KKyAgICBzdGF0aWMgQ2hl
Y2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IG51bUJ5dGVzRm9yU2l6ZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBzaXplLCBpbnQgYnl0ZXNQZXJQaXhlbCkgeyByZXR1cm4gc2l6ZS5hcmVh
PFJlY29yZE92ZXJmbG93PigpICogYnl0ZXNQZXJQaXhlbDsgfQogI2VuZGlmCiAKICNpZiBVU0Uo
Q0cpCkBAIC0xNDEsMTAgKzE0NCwxMSBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICB2b2lkKiBk
YXRhKCkgY29uc3Q7Ci0gICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbnVt
Qnl0ZXNGb3JTaXplKG1fc2l6ZSkudW5zYWZlR2V0KCk7IH0KKyAgICBzaXplX3Qgc2l6ZUluQnl0
ZXMoKSBjb25zdCB7IHJldHVybiBudW1CeXRlc0ZvclNpemUobV9zaXplLCBtX2J5dGVzUGVyUGl4
ZWwpLnVuc2FmZUdldCgpOyB9CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKICAgICBG
bGFncyBtX2ZsYWdzOworICAgIHNpemVfdCBtX2J5dGVzUGVyUGl4ZWw7CiAKICAgICAvLyBJZiB0
aGUgc2hhcmVhYmxlIGJpdG1hcCBpcyBiYWNrZWQgYnkgc2hhcmVkIG1lbW9yeSwgdGhpcyBwb2lu
dHMgdG8gdGhlIHNoYXJlZCBtZW1vcnkgb2JqZWN0LgogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+
IG1fc2hhcmVkTWVtb3J5OwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL2NnL1NoYXJlYWJs
ZUJpdG1hcENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2cvU2hh
cmVhYmxlQml0bWFwQ0cuY3BwCShyZXZpc2lvbiAyMDc4NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3Jl
ZW4uaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSAiQ0dVdGlsaXRpZXMu
aCIKIApAQCAtMzcsMjEgKzM4LDQwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgQ0dC
aXRtYXBJbmZvIGJpdG1hcEluZm8oU2hhcmVhYmxlQml0bWFwOjpGbGFncyBmbGFncykKIHsKLSAg
ICBDR0JpdG1hcEluZm8gaW5mbyA9IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdDsKLSAgICBpZiAo
ZmxhZ3MgJiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpCi0gICAgICAgIGluZm8gfD0g
a0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdDsKLSAgICBlbHNlCi0gICAgICAgIGluZm8g
fD0ga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3Q7Ci0KKyAgICBDR0JpdG1hcEluZm8gaW5mbyA9
IDA7CisgICAgaWYgKChmbGFncyAmIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNFeHRlbmRlZENv
bG9yKSAmJiBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoKSkgeworICAgICAgICBpbmZvIHw9
IGtDR0JpdG1hcEZsb2F0Q29tcG9uZW50cyB8IGtDR0JpdG1hcEJ5dGVPcmRlcjE2SG9zdDsKKyAg
ICAgICAgCisgICAgICAgIGlmIChmbGFncyAmIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBo
YSkKKyAgICAgICAgICAgIGluZm8gfD0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0Owor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBpbmZvIHw9IGtDR0ltYWdlQWxwaGFOb25lU2tpcExh
c3Q7CisgICAgICAgIAorICAgIH0gZWxzZSB7CisgICAgICAgIGluZm8gfD0ga0NHQml0bWFwQnl0
ZU9yZGVyMzJIb3N0OworICAgICAgICAKKyAgICAgICAgaWYgKGZsYWdzICYgU2hhcmVhYmxlQml0
bWFwOjpTdXBwb3J0c0FscGhhKQorICAgICAgICAgICAgaW5mbyB8PSBrQ0dJbWFnZUFscGhhUHJl
bXVsdGlwbGllZEZpcnN0OworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbmZvIHw9IGtDR0lt
YWdlQWxwaGFOb25lU2tpcEZpcnN0OworICAgIH0KKyAgICAKICAgICByZXR1cm4gaW5mbzsKIH0K
IAogc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGVHcmFwaGljc0NvbnRleHQoKQogewogICAgIHJlZigpOyAvLyBCYWxhbmNlZCBieSBkZXJlZiBp
biByZWxlYXNlQml0bWFwQ29udGV4dERhdGEuCi0gICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4g
Yml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlV2l0aERhdGEoZGF0
YSgpLAotICAgICAgICBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCA4LCBtX3NpemUu
d2lkdGgoKSAqIDQsIHNSR0JDb2xvclNwYWNlUmVmKCksCi0gICAgICAgIGJpdG1hcEluZm8obV9m
bGFncyksIHJlbGVhc2VCaXRtYXBDb250ZXh0RGF0YSwgdGhpcykpOworICAgIAorICAgIENHQ29s
b3JTcGFjZVJlZiBjb2xvclNwYWNlOworICAgIGlmIChtX2ZsYWdzICYgU2hhcmVhYmxlQml0bWFw
OjpTdXBwb3J0c0V4dGVuZGVkQ29sb3IpCisgICAgICAgIGNvbG9yU3BhY2UgPSBleHRlbmRlZFNS
R0JDb2xvclNwYWNlUmVmKCk7CisgICAgZWxzZQorICAgICAgICBjb2xvclNwYWNlID0gc1JHQkNv
bG9yU3BhY2VSZWYoKTsKKyAgICAKKyAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBiaXRtYXBD
b250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVXaXRoRGF0YShkYXRhKCksIG1f
c2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIG1fYnl0ZXNQZXJQaXhlbCAqIDggLyA0LCBt
X3NpemUud2lkdGgoKSAqIG1fYnl0ZXNQZXJQaXhlbCwgY29sb3JTcGFjZSwgYml0bWFwSW5mbyht
X2ZsYWdzKSwgcmVsZWFzZUJpdG1hcENvbnRleHREYXRhLCB0aGlzKSk7CisgICAgCisgICAgQVNT
RVJUKGJpdG1hcENvbnRleHQuZ2V0KCkpOwogCiAgICAgLy8gV2Ugd2FudCB0aGUgb3JpZ2luIHRv
IGJlIGluIHRoZSB0b3AgbGVmdCBjb3JuZXIgc28gd2UgZmxpcCB0aGUgYmFja2luZyBzdG9yZSBj
b250ZXh0LgogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShiaXRtYXBDb250ZXh0LmdldCgpLCAw
LCBtX3NpemUuaGVpZ2h0KCkpOwpAQCAtODcsNyArMTA3LDcgQEAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IFNoYXJlYWJsZUJpdG1hcDo6bQogUmV0YWluUHRyPENHSW1hZ2VSZWY+IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlQ0dJbWFnZShDR0RhdGFQcm92aWRlclJlZiBkYXRhUHJvdmlkZXIpIGNvbnN0
CiB7CiAgICAgQVNTRVJUX0FSRyhkYXRhUHJvdmlkZXIsIGRhdGFQcm92aWRlcik7Ci0KKyAgICAv
LyBGSVhNRTogTWFrZSB0aGlzIHVzZSBleHRlbmRlZCBjb2xvciwgZXRjLgogICAgIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShtX3NpemUud2lkdGgo
KSwgbV9zaXplLmhlaWdodCgpLCA4LCAzMiwgbV9zaXplLndpZHRoKCkgKiA0LCBzUkdCQ29sb3JT
cGFjZVJlZigpLCBiaXRtYXBJbmZvKG1fZmxhZ3MpLCBkYXRhUHJvdmlkZXIsIDAsIGZhbHNlLCBr
Q0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CiAgICAgcmV0dXJuIGltYWdlOwogfQpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQkocmV2aXNpb24gMjA3ODYyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzU3LDcgKzIzNTcsMTAg
QEAgdm9pZCBXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzY3JlZW5TaXplSW5QaXhlbHMuc2NhbGUoY29yZVBhZ2UoKS0+
ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZs
b2F0U2l6ZSBzY2FsZWRTaXplID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0
KGltYWdlLT5zaXplKCkud2lkdGgoKSAvIGltYWdlLT5zaXplKCkuaGVpZ2h0KCksIEZsb2F0UmVj
dCgwLCAwLCBzY3JlZW5TaXplSW5QaXhlbHMud2lkdGgoKSwgc2NyZWVuU2l6ZUluUGl4ZWxzLmhl
aWdodCgpKSkuc2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdFNp
emUgYml0bWFwU2l6ZSA9IHNjYWxlZFNpemUud2lkdGgoKSA8IGltYWdlLT5zaXplKCkud2lkdGgo
KSA/IHNjYWxlZFNpemUgOiBpbWFnZS0+c2l6ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc2hhcmVkQml0bWFwID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShiaXRtYXBTaXplKSwgU2hhcmVhYmxl
Qml0bWFwOjpTdXBwb3J0c0FscGhhKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogT25seSBzZWxlY3QgRXh0ZW5kZWRDb2xvciBvbiBpbWFnZXMga25vd24gdG8g
bmVlZCB3aWRlIGdhbXV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYXJlYWJs
ZUJpdG1hcDo6RmxhZ3MgZmxhZ3MgPSBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGE7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IHNjcmVlblN1cHBvcnRzRXh0
ZW5kZWRDb2xvcigpID8gU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0V4dGVuZGVkQ29sb3IgOiAw
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gc2hhcmVkQml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50
U2l6ZShiaXRtYXBTaXplKSwgZmxhZ3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNoYXJlZEJpdG1hcC0+Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQtPmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UmVjdCgwLCAwLCBiaXRtYXBTaXplLndp
ZHRoKCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluZm8uaW1hZ2UgPSBzaGFyZWRCaXRtYXA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292872</attachid>
            <date>2016-10-25 20:52:14 -0700</date>
            <delta_ts>2016-10-25 21:25:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164001-20161025204827.patch</filename>
            <type>text/plain</type>
            <size>14052</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJldmlzaW9uIDIwNzg2MikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTMsNiArOTMsMTggQEAgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlUmVm
KCkKICNlbmRpZiAvLyBQTEFURk9STShXSU4pCiAgICAgcmV0dXJuIHNSR0JTcGFjZTsKIH0KKyAg
ICAKK0NHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCkKK3sKKyAgICBz
dGF0aWMgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQlNwYWNlOworI2lmIChQTEFURk9STShJ
T1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMDAwMCkgfHwgKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+IDEwMTIwMCkK
KyAgICBleHRlbmRlZFNSR0JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0Nv
bG9yU3BhY2VFeHRlbmRlZFNSR0IpOworI2VuZGlmCisgICAgLy8gSWYgdGhlcmUgaXMgbm8gc3Vw
cG9ydCBvbiBkZXZpY2UsIGZhbGwgYmFjayB0byBzUkdCLgorICAgIGlmICghZXh0ZW5kZWRTUkdC
U3BhY2UpCisgICAgICAgIGV4dGVuZGVkU1JHQlNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsK
KyAgICByZXR1cm4gZXh0ZW5kZWRTUkdCU3BhY2U7Cit9CiAKIENHQ29sb3JTcGFjZVJlZiBkaXNw
bGF5UDNDb2xvclNwYWNlUmVmKCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAkocmV2aXNpb24gMjA3
ODYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIENHQ29sb3JTcGFjZVJlZiBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCk7CiBXRUJDT1JF
X0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKTsKK1dFQkNPUkVfRVhQ
T1JUIENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7CiBXRUJDT1JF
X0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOwogQ0dDb2xv
clNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKTsKIApJbmRleDogU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2
aXNpb24gMjA3ODYyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsNDIgQEAKKzIwMTYtMTAtMjUgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJk
bmVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igd2lkZSBnYW11dCBmb3Ig
U2hhcmVhYmxlQml0bWFwIGZvciBpbWFnZSBwb3BvdmVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MDAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgc3VwcHBvcnQgZm9yIHdpZGUgZ2FtdXQg
aW4gU2hhcmVhYmxlQml0bWFwLiBTaGFyYWJsZUJpdG1hcHMgbm93IGtub3cgdGhlIHNpemUgb2Yg
dGhlaXIgcGl4ZWxzLAorICAgICAgICBhbmQgdGhhdCBkYXRhIGlzIHBhc3NlZCBiYWNrIGFuZCBm
b3J0aCBiZXR3ZWVuIHRoZSBwcm9jZXNzZXMuIFRoZSBjYWxsZXJzIG9mIFNoYXJlZEJpdG1hcCB3
aWxsIGRldGVybWluZQorICAgICAgICBpZiB0aGVpciBpbWFnZSBzaG91bGQgc3VwcG9ydCB3aWRl
IGdhbXV0LCBidXQgU2hhcmVhYmxlQml0bWFwIHdpbGwgb3ZlcnJpZGUgYSBzZXQgZmxhZyBvbiBh
IGRldmljZSB0aGF0CisgICAgICAgIGlzIGluY2FwYmFibGUgb2Ygc3VwcG9ydGluZyBhIHdpZGUg
Z2FtdXQgaW1hZ2UuCisgICAgICAgIFRoaXMgYWxzbyBhZGRzIHVzaW5nIHdpZGUgZ2FtdXQgaW1h
Z2VzIGZvciBpbWFnZSBwb3BvdmVycyBpbiBtb2JpbGVTYWZhcmkuCisgICAgICAgIFRoaXMgaXMg
Y3VycmVudGx5IHVudGVzdGFibGUsIGR1ZSB0byBzaW11bGF0b3IgbGltaXRhdGlvbnMsIHNvIG5v
IHRlc3RzIGFkZGVkLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAg
ICAgICAoSVBDOjpEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNv
ZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBD
OjpFbmNvZGVyOjplbmNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmg6Cisg
ICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmJ5
dGVzUGVyUGl4ZWwpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6
ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmRlY29k
ZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjpjbGVhcik6Cisg
ICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUpOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmg6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6bnVtQnl0ZXNGb3JTaXpl
KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpzaXplSW5CeXRlcyk6CisgICAg
ICAgICogU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Yml0bWFwSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVD
R0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24pOgorCiAy
MDE2LTEwLTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgQ01ha2UgYnVpbGQgZml4LgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1No
YXJlYWJsZUJpdG1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1No
YXJlYWJsZUJpdG1hcC5jcHAJKHJldmlzaW9uIDIwNzg2MikKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMywxMyBA
QAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworICAgIAor
c3RhdGljIHVpbnQ2NF90IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwoU2hhcmVhYmxlQml0bWFwOjpG
bGFncyBmbGFncykKK3sKKyAgICBpZiAoZmxhZ3MgJiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRz
RXh0ZW5kZWRDb2xvcikKKyAgICAgICAgcmV0dXJuIDg7CisgICAgcmV0dXJuIDQ7Cit9CiAKIFNo
YXJlYWJsZUJpdG1hcDo6SGFuZGxlOjpIYW5kbGUoKQogICAgIDogbV9mbGFncygwKQpAQCAtNTQs
NiArNjEsNyBAQCBib29sIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjpkZWNvZGUoSVBDCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhbmRsZS5tX2ZsYWdz
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGhhbmRsZS5tX2J5dGVzUGVyUGl4ZWwgPSBj
YWxjdWxhdGVCeXRlc1BlclBpeGVsKGhhbmRsZS5tX2ZsYWdzKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtNjIsMTEgKzcwLDEzIEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmNs
ZWFyKCkKICAgICBtX2hhbmRsZS5jbGVhcigpOwogICAgIG1fc2l6ZSA9IEludFNpemUoKTsKICAg
ICBtX2ZsYWdzID0gRmxhZzo6Tm9GbGFnczsKKyAgICBtX2J5dGVzUGVyUGl4ZWwgPSBjYWxjdWxh
dGVCeXRlc1BlclBpeGVsKG1fZmxhZ3MpOwogfQogCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncykK
IHsKLSAgICBhdXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUpOworICAgIHVpbnQ2
NF90IGJ5dGVzUGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGZsYWdzKTsKKyAgICBh
dXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUsIGJ5dGVzUGVyUGl4ZWwpOwogICAg
IGlmIChudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CkBAIC03NCwxMiArODQsMTMgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0
bWFwOgogICAgIGlmICghdHJ5RmFzdE1hbGxvYyhudW1CeXRlcy51bnNhZmVHZXQoKSkuZ2V0VmFs
dWUoZGF0YSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTaGFyZWFibGVCaXRtYXAoc2l6ZSwgZmxhZ3MsIGRhdGEpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBmbGFncywgYnl0ZXNQZXJQaXhlbCwgZGF0
YSkpOwogfQogCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZVNoYXJlYWJsZShjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncykKIHsKLSAgICBhdXRv
IG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUpOworICAgIHVpbnQ2NF90IGJ5dGVzUGVy
UGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGZsYWdzKTsKKyAgICBhdXRvIG51bUJ5dGVz
ID0gbnVtQnl0ZXNGb3JTaXplKHNpemUsIGJ5dGVzUGVyUGl4ZWwpOwogICAgIGlmIChudW1CeXRl
cy5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC04NywyMiAr
OTgsMjMgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOgogICAgIGlm
ICghc2hhcmVkTWVtb3J5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGZsYWdzLCBzaGFyZWRNZW1vcnkpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBmbGFncywgYnl0
ZXNQZXJQaXhlbCwgc2hhcmVkTWVtb3J5KSk7CiB9CiAKIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdz
LCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCiB7CiAgICAgQVNTRVJUKHNoYXJl
ZE1lbW9yeSk7CiAKLSAgICBhdXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUpOwor
ICAgIHVpbnQ2NF90IGJ5dGVzUGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGZsYWdz
KTsKKyAgICBhdXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUsIGJ5dGVzUGVyUGl4
ZWwpOwogICAgIGlmIChudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIGlmIChzaGFyZWRNZW1vcnktPnNpemUoKSA8IG51bUJ5dGVzLnVuc2FmZUdl
dCgpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChz
aXplLCBmbGFncywgc2hhcmVkTWVtb3J5KSk7CisgICAgCisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTaGFyZWFibGVCaXRtYXAoc2l6ZSwgZmxhZ3MsIGJ5dGVzUGVyUGl4ZWwsIHNoYXJlZE1lbW9y
eSkpOwogfQogCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZShjb25zdCBIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rp
b24pCkBAIC0xMjMsMTkgKzEzNSwyMiBAQCBib29sIFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSGFu
ZGxlKEhhbmRsCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBoYW5kbGUubV9zaXplID0gbV9z
aXplOwogICAgIGhhbmRsZS5tX2ZsYWdzID0gbV9mbGFnczsKKyAgICBoYW5kbGUubV9ieXRlc1Bl
clBpeGVsID0gbV9ieXRlc1BlclBpeGVsOwogICAgIHJldHVybiB0cnVlOwogfQogCi1TaGFyZWFi
bGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFn
cywgdm9pZCogZGF0YSkKK1NoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKGNvbnN0IElu
dFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCB1aW50NjRfdCBwaXhlbFNpemUsIHZvaWQqIGRhdGEp
CiAgICAgOiBtX3NpemUoc2l6ZSkKICAgICAsIG1fZmxhZ3MoZmxhZ3MpCisgICAgLCBtX2J5dGVz
UGVyUGl4ZWwocGl4ZWxTaXplKQogICAgICwgbV9kYXRhKGRhdGEpCiB7CiB9CiAKLVNoYXJlYWJs
ZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdz
LCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCitTaGFyZWFibGVCaXRtYXA6OlNo
YXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncywgdWludDY0X3Qg
cGl4ZWxTaXplLCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCiAgICAgOiBtX3Np
emUoc2l6ZSkKICAgICAsIG1fZmxhZ3MoZmxhZ3MpCisgICAgLCBtX2J5dGVzUGVyUGl4ZWwocGl4
ZWxTaXplKQogICAgICwgbV9zaGFyZWRNZW1vcnkoc2hhcmVkTWVtb3J5KQogICAgICwgbV9kYXRh
KDApCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCShyZXZp
c2lvbiAyMDc4NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAgIGVudW0gRmxhZyB7
CiAgICAgICAgIE5vRmxhZ3MgPSAwLAogICAgICAgICBTdXBwb3J0c0FscGhhID0gMSA8PCAwLAor
ICAgICAgICBTdXBwb3J0c0V4dGVuZGVkQ29sb3IgPSAxIDw8IDEsCiAgICAgfTsKICAgICB0eXBl
ZGVmIHVuc2lnbmVkIEZsYWdzOwogCkBAIC03Miw2ICs3Myw3IEBAIHB1YmxpYzoKICAgICAgICAg
bXV0YWJsZSBTaGFyZWRNZW1vcnk6OkhhbmRsZSBtX2hhbmRsZTsKICAgICAgICAgV2ViQ29yZTo6
SW50U2l6ZSBtX3NpemU7CiAgICAgICAgIEZsYWdzIG1fZmxhZ3M7CisgICAgICAgIHVpbnQ2NF90
IG1fYnl0ZXNQZXJQaXhlbDsKICAgICB9OwogCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJp
dG1hcCB0aGF0IHVzZXMgbWFsbG9jZWQgbWVtb3J5LgpAQCAtMTIxLDEzICsxMjMsMTMgQEAgcHVi
bGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgU2hhcmVhYmxlQml0bWFwKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBGbGFncywgdm9pZCopOwotICAgIFNoYXJlYWJsZUJpdG1hcChjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFJlZlB0cjxTaGFyZWRNZW1vcnk+KTsKKyAgICBTaGFy
ZWFibGVCaXRtYXAoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCB1aW50NjRfdCwgdm9p
ZCopOworICAgIFNoYXJlYWJsZUJpdG1hcChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3Ms
IHVpbnQ2NF90LCBSZWZQdHI8U2hhcmVkTWVtb3J5Pik7CiAKICNpZiBVU0UoQ0FJUk8pCiAgICAg
c3RhdGljIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBudW1CeXRlc0ZvclNpemUo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogI2Vsc2UKLSAgICBzdGF0aWMgQ2hlY2tlZDx1bnNp
Z25lZCwgUmVjb3JkT3ZlcmZsb3c+IG51bUJ5dGVzRm9yU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBzaXplKSB7IHJldHVybiBzaXplLmFyZWE8UmVjb3JkT3ZlcmZsb3c+KCkgKiA0OyB9Cisg
ICAgc3RhdGljIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBudW1CeXRlc0ZvclNp
emUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgaW50IGJ5dGVzUGVyUGl4ZWwpIHsgcmV0
dXJuIHNpemUuYXJlYTxSZWNvcmRPdmVyZmxvdz4oKSAqIGJ5dGVzUGVyUGl4ZWw7IH0KICNlbmRp
ZgogCiAjaWYgVVNFKENHKQpAQCAtMTQxLDEwICsxNDMsMTUgQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAgICAgdm9pZCogZGF0YSgpIGNvbnN0OworI2lmIFVTRShDQUlSTykKICAgICBzaXplX3Qgc2l6
ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBudW1CeXRlc0ZvclNpemUobV9zaXplKS51bnNhZmVH
ZXQoKTsgfQotCisjZWxzZQorICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJu
IG51bUJ5dGVzRm9yU2l6ZShtX3NpemUsIG1fYnl0ZXNQZXJQaXhlbCkudW5zYWZlR2V0KCk7IH0K
KyNlbmRpZgorICAgIAogICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwogICAgIEZsYWdzIG1f
ZmxhZ3M7CisgICAgc2l6ZV90IG1fYnl0ZXNQZXJQaXhlbDsKIAogICAgIC8vIElmIHRoZSBzaGFy
ZWFibGUgYml0bWFwIGlzIGJhY2tlZCBieSBzaGFyZWQgbWVtb3J5LCB0aGlzIHBvaW50cyB0byB0
aGUgc2hhcmVkIG1lbW9yeSBvYmplY3QuCiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbV9zaGFy
ZWRNZW1vcnk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFw
Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9jZy9TaGFyZWFibGVC
aXRtYXBDRy5jcHAJKHJldmlzaW9uIDIwNzg2MikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9j
Zy9TaGFyZWFibGVCaXRtYXBDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dy
YXBoaWNzQ29udGV4dENHLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlICJDR1V0aWxpdGllcy5oIgogCkBA
IC0zNywyMSArMzgsNDAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyBDR0JpdG1hcElu
Zm8gYml0bWFwSW5mbyhTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzKQogewotICAgIENHQml0
bWFwSW5mbyBpbmZvID0ga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0OwotICAgIGlmIChmbGFncyAm
IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSkKLSAgICAgICAgaW5mbyB8PSBrQ0dJbWFn
ZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0OwotICAgIGVsc2UKLSAgICAgICAgaW5mbyB8PSBrQ0dJ
bWFnZUFscGhhTm9uZVNraXBGaXJzdDsKLQorICAgIENHQml0bWFwSW5mbyBpbmZvID0gMDsKKyAg
ICBpZiAoKGZsYWdzICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0V4dGVuZGVkQ29sb3IpICYm
IHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcigpKSB7CisgICAgICAgIGluZm8gfD0ga0NHQml0
bWFwRmxvYXRDb21wb25lbnRzIHwga0NHQml0bWFwQnl0ZU9yZGVyMTZIb3N0OworICAgICAgICAK
KyAgICAgICAgaWYgKGZsYWdzICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKQorICAg
ICAgICAgICAgaW5mbyB8PSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3Q7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGluZm8gfD0ga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdDsKKyAg
ICAgICAgCisgICAgfSBlbHNlIHsKKyAgICAgICAgaW5mbyB8PSBrQ0dCaXRtYXBCeXRlT3JkZXIz
Mkhvc3Q7CisgICAgICAgIAorICAgICAgICBpZiAoZmxhZ3MgJiBTaGFyZWFibGVCaXRtYXA6OlN1
cHBvcnRzQWxwaGEpCisgICAgICAgICAgICBpbmZvIHw9IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBs
aWVkRmlyc3Q7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluZm8gfD0ga0NHSW1hZ2VBbHBo
YU5vbmVTa2lwRmlyc3Q7CisgICAgfQorICAgIAogICAgIHJldHVybiBpbmZvOwogfQogCiBzdGQ6
OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBo
aWNzQ29udGV4dCgpCiB7CiAgICAgcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IGRlcmVmIGluIHJlbGVh
c2VCaXRtYXBDb250ZXh0RGF0YS4KLSAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBiaXRtYXBD
b250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVXaXRoRGF0YShkYXRhKCksCi0g
ICAgICAgIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIDgsIG1fc2l6ZS53aWR0aCgp
ICogNCwgc1JHQkNvbG9yU3BhY2VSZWYoKSwKLSAgICAgICAgYml0bWFwSW5mbyhtX2ZsYWdzKSwg
cmVsZWFzZUJpdG1hcENvbnRleHREYXRhLCB0aGlzKSk7CisgICAgCisgICAgQ0dDb2xvclNwYWNl
UmVmIGNvbG9yU3BhY2U7CisgICAgaWYgKG1fZmxhZ3MgJiBTaGFyZWFibGVCaXRtYXA6OlN1cHBv
cnRzRXh0ZW5kZWRDb2xvcikKKyAgICAgICAgY29sb3JTcGFjZSA9IGV4dGVuZGVkU1JHQkNvbG9y
U3BhY2VSZWYoKTsKKyAgICBlbHNlCisgICAgICAgIGNvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFj
ZVJlZigpOworICAgIAorICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGJpdG1hcENvbnRleHQg
PSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZVdpdGhEYXRhKGRhdGEoKSwgbV9zaXplLndp
ZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgbV9ieXRlc1BlclBpeGVsICogOCAvIDQsIG1fc2l6ZS53
aWR0aCgpICogbV9ieXRlc1BlclBpeGVsLCBjb2xvclNwYWNlLCBiaXRtYXBJbmZvKG1fZmxhZ3Mp
LCByZWxlYXNlQml0bWFwQ29udGV4dERhdGEsIHRoaXMpKTsKKyAgICAKKyAgICBBU1NFUlQoYml0
bWFwQ29udGV4dC5nZXQoKSk7CiAKICAgICAvLyBXZSB3YW50IHRoZSBvcmlnaW4gdG8gYmUgaW4g
dGhlIHRvcCBsZWZ0IGNvcm5lciBzbyB3ZSBmbGlwIHRoZSBiYWNraW5nIHN0b3JlIGNvbnRleHQu
CiAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGJpdG1hcENvbnRleHQuZ2V0KCksIDAsIG1fc2l6
ZS5oZWlnaHQoKSk7CkBAIC04Nyw3ICsxMDcsNyBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gU2hh
cmVhYmxlQml0bWFwOjptCiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGVDR0ltYWdlKENHRGF0YVByb3ZpZGVyUmVmIGRhdGFQcm92aWRlcikgY29uc3QKIHsKICAg
ICBBU1NFUlRfQVJHKGRhdGFQcm92aWRlciwgZGF0YVByb3ZpZGVyKTsKLQorICAgIC8vIEZJWE1F
OiBNYWtlIHRoaXMgdXNlIGV4dGVuZGVkIGNvbG9yLCBldGMuCiAgICAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKG1fc2l6ZS53aWR0aCgpLCBtX3Np
emUuaGVpZ2h0KCksIDgsIDMyLCBtX3NpemUud2lkdGgoKSAqIDQsIHNSR0JDb2xvclNwYWNlUmVm
KCksIGJpdG1hcEluZm8obV9mbGFncyksIGRhdGFQcm92aWRlciwgMCwgZmFsc2UsIGtDR1JlbmRl
cmluZ0ludGVudERlZmF1bHQpKTsKICAgICByZXR1cm4gaW1hZ2U7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCShy
ZXZpc2lvbiAyMDc4NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzNTcsNyArMjM1NywxMCBAQCB2b2lk
IFdlYlBhZ2U6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNjcmVlblNpemVJblBpeGVscy5zY2FsZShjb3JlUGFnZSgpLT5kZXZpY2VT
Y2FsZUZhY3RvcigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRTaXpl
IHNjYWxlZFNpemUgPSBsYXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3QoaW1hZ2Ut
PnNpemUoKS53aWR0aCgpIC8gaW1hZ2UtPnNpemUoKS5oZWlnaHQoKSwgRmxvYXRSZWN0KDAsIDAs
IHNjcmVlblNpemVJblBpeGVscy53aWR0aCgpLCBzY3JlZW5TaXplSW5QaXhlbHMuaGVpZ2h0KCkp
KS5zaXplKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0U2l6ZSBiaXRt
YXBTaXplID0gc2NhbGVkU2l6ZS53aWR0aCgpIDwgaW1hZ2UtPnNpemUoKS53aWR0aCgpID8gc2Nh
bGVkU2l6ZSA6IGltYWdlLT5zaXplKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCBTaGFyZWFibGVCaXRtYXA6
OlN1cHBvcnRzQWxwaGEpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBPbmx5IHNlbGVjdCBFeHRlbmRlZENvbG9yIG9uIGltYWdlcyBrbm93biB0byBuZWVkIHdp
ZGUgZ2FtdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhcmVhYmxlQml0bWFw
OjpGbGFncyBmbGFncyA9IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENv
bG9yKCkgPyBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzRXh0ZW5kZWRDb2xvciA6IDA7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBz
aGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJp
dG1hcFNpemUpLCBmbGFncykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gc2hhcmVkQml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRl
eHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC0+ZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRSZWN0KDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwg
Yml0bWFwU2l6ZS5oZWlnaHQoKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW5mby5pbWFnZSA9IHNoYXJlZEJpdG1hcDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292873</attachid>
            <date>2016-10-25 21:25:55 -0700</date>
            <delta_ts>2016-10-27 15:32:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164001-20161025212208.patch</filename>
            <type>text/plain</type>
            <size>14177</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJldmlzaW9uIDIwNzg2MikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTMsNiArOTMsMTggQEAgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlUmVm
KCkKICNlbmRpZiAvLyBQTEFURk9STShXSU4pCiAgICAgcmV0dXJuIHNSR0JTcGFjZTsKIH0KKyAg
ICAKK0NHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCkKK3sKKyAgICBz
dGF0aWMgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQlNwYWNlOworI2lmIChQTEFURk9STShJ
T1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMDAwMCkgfHwgKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+IDEwMTIwMCkK
KyAgICBleHRlbmRlZFNSR0JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0Nv
bG9yU3BhY2VFeHRlbmRlZFNSR0IpOworI2VuZGlmCisgICAgLy8gSWYgdGhlcmUgaXMgbm8gc3Vw
cG9ydCBvbiBkZXZpY2UsIGZhbGwgYmFjayB0byBzUkdCLgorICAgIGlmICghZXh0ZW5kZWRTUkdC
U3BhY2UpCisgICAgICAgIGV4dGVuZGVkU1JHQlNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsK
KyAgICByZXR1cm4gZXh0ZW5kZWRTUkdCU3BhY2U7Cit9CiAKIENHQ29sb3JTcGFjZVJlZiBkaXNw
bGF5UDNDb2xvclNwYWNlUmVmKCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAkocmV2aXNpb24gMjA3
ODYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIENHQ29sb3JTcGFjZVJlZiBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCk7CiBXRUJDT1JF
X0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKTsKK1dFQkNPUkVfRVhQ
T1JUIENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7CiBXRUJDT1JF
X0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOwogQ0dDb2xv
clNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKTsKIApJbmRleDogU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2
aXNpb24gMjA3ODYyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsNDIgQEAKKzIwMTYtMTAtMjUgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJk
bmVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igd2lkZSBnYW11dCBmb3Ig
U2hhcmVhYmxlQml0bWFwIGZvciBpbWFnZSBwb3BvdmVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MDAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgc3VwcHBvcnQgZm9yIHdpZGUgZ2FtdXQg
aW4gU2hhcmVhYmxlQml0bWFwLiBTaGFyYWJsZUJpdG1hcHMgbm93IGtub3cgdGhlIHNpemUgb2Yg
dGhlaXIgcGl4ZWxzLAorICAgICAgICBhbmQgdGhhdCBkYXRhIGlzIHBhc3NlZCBiYWNrIGFuZCBm
b3J0aCBiZXR3ZWVuIHRoZSBwcm9jZXNzZXMuIFRoZSBjYWxsZXJzIG9mIFNoYXJlZEJpdG1hcCB3
aWxsIGRldGVybWluZQorICAgICAgICBpZiB0aGVpciBpbWFnZSBzaG91bGQgc3VwcG9ydCB3aWRl
IGdhbXV0LCBidXQgU2hhcmVhYmxlQml0bWFwIHdpbGwgb3ZlcnJpZGUgYSBzZXQgZmxhZyBvbiBh
IGRldmljZSB0aGF0CisgICAgICAgIGlzIGluY2FwYmFibGUgb2Ygc3VwcG9ydGluZyBhIHdpZGUg
Z2FtdXQgaW1hZ2UuCisgICAgICAgIFRoaXMgYWxzbyBhZGRzIHVzaW5nIHdpZGUgZ2FtdXQgaW1h
Z2VzIGZvciBpbWFnZSBwb3BvdmVycyBpbiBtb2JpbGVTYWZhcmkuCisgICAgICAgIFRoaXMgaXMg
Y3VycmVudGx5IHVudGVzdGFibGUsIGR1ZSB0byBzaW11bGF0b3IgbGltaXRhdGlvbnMsIHNvIG5v
IHRlc3RzIGFkZGVkLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAg
ICAgICAoSVBDOjpEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNv
ZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBD
OjpFbmNvZGVyOjplbmNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmg6Cisg
ICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmJ5
dGVzUGVyUGl4ZWwpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6
ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmRlY29k
ZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjpjbGVhcik6Cisg
ICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUpOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmg6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6bnVtQnl0ZXNGb3JTaXpl
KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpzaXplSW5CeXRlcyk6CisgICAg
ICAgICogU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Yml0bWFwSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVD
R0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24pOgorCiAy
MDE2LTEwLTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgQ01ha2UgYnVpbGQgZml4LgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1No
YXJlYWJsZUJpdG1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1No
YXJlYWJsZUJpdG1hcC5jcHAJKHJldmlzaW9uIDIwNzg2MikKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMywxMyBA
QAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworICAgIAor
c3RhdGljIHVpbnQgY2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChTaGFyZWFibGVCaXRtYXA6OkZsYWdz
IGZsYWdzKQoreworICAgIGlmIChmbGFncyAmIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNFeHRl
bmRlZENvbG9yKQorICAgICAgICByZXR1cm4gODsKKyAgICByZXR1cm4gNDsKK30KIAogU2hhcmVh
YmxlQml0bWFwOjpIYW5kbGU6OkhhbmRsZSgpCiAgICAgOiBtX2ZsYWdzKDApCkBAIC01NCw2ICs2
MSw3IEBAIGJvb2wgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmRlY29kZShJUEMKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZGxlLm1fZmxhZ3MpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaGFuZGxlLm1fYnl0ZXNQZXJQaXhlbCA9IGNhbGN1
bGF0ZUJ5dGVzUGVyUGl4ZWwoaGFuZGxlLm1fZmxhZ3MpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC02MiwxMSArNzAsMTMgQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6Y2xlYXIo
KQogICAgIG1faGFuZGxlLmNsZWFyKCk7CiAgICAgbV9zaXplID0gSW50U2l6ZSgpOwogICAgIG1f
ZmxhZ3MgPSBGbGFnOjpOb0ZsYWdzOworICAgIG1fYnl0ZXNQZXJQaXhlbCA9IGNhbGN1bGF0ZUJ5
dGVzUGVyUGl4ZWwobV9mbGFncyk7CiB9CiAKIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzKQogewot
ICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSk7CisgICAgdWludCBieXRl
c1BlclBpeGVsID0gY2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChmbGFncyk7CisgICAgYXV0byBudW1C
eXRlcyA9IG51bUJ5dGVzRm9yU2l6ZShzaXplLCBieXRlc1BlclBpeGVsKTsKICAgICBpZiAobnVt
Qnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNzQs
MTIgKzg0LDEzIEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDoKICAg
ICBpZiAoIXRyeUZhc3RNYWxsb2MobnVtQnl0ZXMudW5zYWZlR2V0KCkpLmdldFZhbHVlKGRhdGEp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hh
cmVhYmxlQml0bWFwKHNpemUsIGZsYWdzLCBkYXRhKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTaGFyZWFibGVCaXRtYXAoc2l6ZSwgZmxhZ3MsIGJ5dGVzUGVyUGl4ZWwsIGRhdGEpKTsKIH0K
IAogUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFi
bGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MpCiB7Ci0gICAgYXV0byBudW1CeXRl
cyA9IG51bUJ5dGVzRm9yU2l6ZShzaXplKTsKKyAgICB1aW50IGJ5dGVzUGVyUGl4ZWwgPSBjYWxj
dWxhdGVCeXRlc1BlclBpeGVsKGZsYWdzKTsKKyAgICBhdXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNG
b3JTaXplKHNpemUsIGJ5dGVzUGVyUGl4ZWwpOwogICAgIGlmIChudW1CeXRlcy5oYXNPdmVyZmxv
d2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC04NywyMiArOTgsMjMgQEAgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOgogICAgIGlmICghc2hhcmVkTWVt
b3J5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U2hhcmVhYmxlQml0bWFwKHNpemUsIGZsYWdzLCBzaGFyZWRNZW1vcnkpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBmbGFncywgYnl0ZXNQZXJQaXhlbCwg
c2hhcmVkTWVtb3J5KSk7CiB9CiAKIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCBSZWZQdHI8U2hh
cmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCiB7CiAgICAgQVNTRVJUKHNoYXJlZE1lbW9yeSk7CiAK
LSAgICBhdXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUpOworICAgIHVpbnQgYnl0
ZXNQZXJQaXhlbCA9IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwoZmxhZ3MpOworICAgIGF1dG8gbnVt
Qnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSwgYnl0ZXNQZXJQaXhlbCk7CiAgICAgaWYgKG51
bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYg
KHNoYXJlZE1lbW9yeS0+c2l6ZSgpIDwgbnVtQnl0ZXMudW5zYWZlR2V0KCkpIHsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLQot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGZsYWdzLCBzaGFy
ZWRNZW1vcnkpKTsKKyAgICAKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1h
cChzaXplLCBmbGFncywgYnl0ZXNQZXJQaXhlbCwgc2hhcmVkTWVtb3J5KSk7CiB9CiAKIFJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEhhbmRsZSYg
aGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJvdGVjdGlvbikKQEAgLTEyMywxOSAr
MTM1LDIyIEBAIGJvb2wgU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVIYW5kbGUoSGFuZGwKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGhhbmRsZS5tX3NpemUgPSBtX3NpemU7CiAgICAgaGFuZGxl
Lm1fZmxhZ3MgPSBtX2ZsYWdzOworICAgIGhhbmRsZS5tX2J5dGVzUGVyUGl4ZWwgPSBtX2J5dGVz
UGVyUGl4ZWw7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVNoYXJlYWJsZUJpdG1hcDo6U2hhcmVh
YmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCB2b2lkKiBkYXRhKQor
U2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxh
Z3MgZmxhZ3MsIHVpbnQgYnl0ZXNQZXJQaXhlbCwgdm9pZCogZGF0YSkKICAgICA6IG1fc2l6ZShz
aXplKQogICAgICwgbV9mbGFncyhmbGFncykKKyAgICAsIG1fYnl0ZXNQZXJQaXhlbChieXRlc1Bl
clBpeGVsKQogICAgICwgbV9kYXRhKGRhdGEpCiB7CiB9CiAKLVNoYXJlYWJsZUJpdG1hcDo6U2hh
cmVhYmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCBSZWZQdHI8U2hh
cmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCitTaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1h
cChjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncywgdWludCBieXRlc1BlclBpeGVsLCBS
ZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCiAgICAgOiBtX3NpemUoc2l6ZSkKICAg
ICAsIG1fZmxhZ3MoZmxhZ3MpCisgICAgLCBtX2J5dGVzUGVyUGl4ZWwoYnl0ZXNQZXJQaXhlbCkK
ICAgICAsIG1fc2hhcmVkTWVtb3J5KHNoYXJlZE1lbW9yeSkKICAgICAsIG1fZGF0YSgwKQogewpJ
bmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAkocmV2aXNpb24gMjA3
ODYyKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICBlbnVtIEZsYWcgewogICAgICAg
ICBOb0ZsYWdzID0gMCwKICAgICAgICAgU3VwcG9ydHNBbHBoYSA9IDEgPDwgMCwKKyAgICAgICAg
U3VwcG9ydHNFeHRlbmRlZENvbG9yID0gMSA8PCAxLAogICAgIH07CiAgICAgdHlwZWRlZiB1bnNp
Z25lZCBGbGFnczsKIApAQCAtNzIsNiArNzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG11dGFibGUg
U2hhcmVkTWVtb3J5OjpIYW5kbGUgbV9oYW5kbGU7CiAgICAgICAgIFdlYkNvcmU6OkludFNpemUg
bV9zaXplOwogICAgICAgICBGbGFncyBtX2ZsYWdzOworICAgICAgICB1aW50IG1fYnl0ZXNQZXJQ
aXhlbDsKICAgICB9OwogCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCB0aGF0IHVz
ZXMgbWFsbG9jZWQgbWVtb3J5LgpAQCAtMTIxLDEzICsxMjMsMTQgQEAgcHVibGljOgogI2VuZGlm
CiAKIHByaXZhdGU6Ci0gICAgU2hhcmVhYmxlQml0bWFwKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
LCBGbGFncywgdm9pZCopOwotICAgIFNoYXJlYWJsZUJpdG1hcChjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiwgRmxhZ3MsIFJlZlB0cjxTaGFyZWRNZW1vcnk+KTsKKyAgICBTaGFyZWFibGVCaXRtYXAo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCB1aW50LCB2b2lkKik7CisgICAgU2hhcmVh
YmxlQml0bWFwKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncywgdWludCwgUmVmUHRyPFNo
YXJlZE1lbW9yeT4pOwogCiAjaWYgVVNFKENBSVJPKQogICAgIHN0YXRpYyBDaGVja2VkPHVuc2ln
bmVkLCBSZWNvcmRPdmVyZmxvdz4gbnVtQnl0ZXNGb3JTaXplKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmKTsKKyAgICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IG51bUJ5
dGVzRm9yU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCB1aW50IGJ5dGVzUGVyUGl4
ZWwpIHsgcmV0dXJuIG51bUJ5dGVzRm9yU2l6ZShzaXplKTsgfQogI2Vsc2UKLSAgICBzdGF0aWMg
Q2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IG51bUJ5dGVzRm9yU2l6ZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBzaXplKSB7IHJldHVybiBzaXplLmFyZWE8UmVjb3JkT3ZlcmZsb3c+
KCkgKiA0OyB9CisgICAgc3RhdGljIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBu
dW1CeXRlc0ZvclNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgdWludCBieXRlc1Bl
clBpeGVsKSB7IHJldHVybiBzaXplLmFyZWE8UmVjb3JkT3ZlcmZsb3c+KCkgKiBieXRlc1BlclBp
eGVsOyB9CiAjZW5kaWYKIAogI2lmIFVTRShDRykKQEAgLTE0MSwxMCArMTQ0LDE1IEBAIHByaXZh
dGU6CiAjZW5kaWYKIAogICAgIHZvaWQqIGRhdGEoKSBjb25zdDsKKyNpZiBVU0UoQ0FJUk8pCiAg
ICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbnVtQnl0ZXNGb3JTaXplKG1f
c2l6ZSkudW5zYWZlR2V0KCk7IH0KLQorI2Vsc2UKKyAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBj
b25zdCB7IHJldHVybiBudW1CeXRlc0ZvclNpemUobV9zaXplLCBtX2J5dGVzUGVyUGl4ZWwpLnVu
c2FmZUdldCgpOyB9CisjZW5kaWYKKyAgICAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsK
ICAgICBGbGFncyBtX2ZsYWdzOworICAgIHVpbnQgbV9ieXRlc1BlclBpeGVsOwogCiAgICAgLy8g
SWYgdGhlIHNoYXJlYWJsZSBiaXRtYXAgaXMgYmFja2VkIGJ5IHNoYXJlZCBtZW1vcnksIHRoaXMg
cG9pbnRzIHRvIHRoZSBzaGFyZWQgbWVtb3J5IG9iamVjdC4KICAgICBSZWZQdHI8U2hhcmVkTWVt
b3J5PiBtX3NoYXJlZE1lbW9yeTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9jZy9TaGFy
ZWFibGVCaXRtYXBDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL2Nn
L1NoYXJlYWJsZUJpdG1hcENHLmNwcAkocmV2aXNpb24gMjA3ODYyKQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgs
NiArMjgsNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3Jt
U2NyZWVuLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgIkNHVXRpbGl0
aWVzLmgiCiAKQEAgLTM3LDIxICszOCw0MCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGlj
IENHQml0bWFwSW5mbyBiaXRtYXBJbmZvKFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MpCiB7
Ci0gICAgQ0dCaXRtYXBJbmZvIGluZm8gPSBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3Q7Ci0gICAg
aWYgKGZsYWdzICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKQotICAgICAgICBpbmZv
IHw9IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3Q7Ci0gICAgZWxzZQotICAgICAgICBp
bmZvIHw9IGtDR0ltYWdlQWxwaGFOb25lU2tpcEZpcnN0OwotCisgICAgQ0dCaXRtYXBJbmZvIGlu
Zm8gPSAwOworICAgIGlmICgoZmxhZ3MgJiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzRXh0ZW5k
ZWRDb2xvcikgJiYgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKCkpIHsKKyAgICAgICAgaW5m
byB8PSBrQ0dCaXRtYXBGbG9hdENvbXBvbmVudHMgfCBrQ0dCaXRtYXBCeXRlT3JkZXIxNkhvc3Q7
CisgICAgICAgIAorICAgICAgICBpZiAoZmxhZ3MgJiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRz
QWxwaGEpCisgICAgICAgICAgICBpbmZvIHw9IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFz
dDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5mbyB8PSBrQ0dJbWFnZUFscGhhTm9uZVNr
aXBMYXN0OworICAgICAgICAKKyAgICB9IGVsc2UgeworICAgICAgICBpbmZvIHw9IGtDR0JpdG1h
cEJ5dGVPcmRlcjMySG9zdDsKKyAgICAgICAgCisgICAgICAgIGlmIChmbGFncyAmIFNoYXJlYWJs
ZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSkKKyAgICAgICAgICAgIGluZm8gfD0ga0NHSW1hZ2VBbHBo
YVByZW11bHRpcGxpZWRGaXJzdDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5mbyB8PSBr
Q0dJbWFnZUFscGhhTm9uZVNraXBGaXJzdDsKKyAgICB9CisgICAgCiAgICAgcmV0dXJuIGluZm87
CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkKIHsKICAgICByZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVy
ZWYgaW4gcmVsZWFzZUJpdG1hcENvbnRleHREYXRhLgotICAgIFJldGFpblB0cjxDR0NvbnRleHRS
ZWY+IGJpdG1hcENvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZVdpdGhEYXRh
KGRhdGEoKSwKLSAgICAgICAgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgOCwgbV9z
aXplLndpZHRoKCkgKiA0LCBzUkdCQ29sb3JTcGFjZVJlZigpLAotICAgICAgICBiaXRtYXBJbmZv
KG1fZmxhZ3MpLCByZWxlYXNlQml0bWFwQ29udGV4dERhdGEsIHRoaXMpKTsKKyAgICAKKyAgICBD
R0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZTsKKyAgICBpZiAobV9mbGFncyAmIFNoYXJlYWJsZUJp
dG1hcDo6U3VwcG9ydHNFeHRlbmRlZENvbG9yKQorICAgICAgICBjb2xvclNwYWNlID0gZXh0ZW5k
ZWRTUkdCQ29sb3JTcGFjZVJlZigpOworICAgIGVsc2UKKyAgICAgICAgY29sb3JTcGFjZSA9IHNS
R0JDb2xvclNwYWNlUmVmKCk7CisgICAgCisgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0
bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlV2l0aERhdGEoZGF0YSgp
LCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCBtX2J5dGVzUGVyUGl4ZWwgKiA4IC8g
NCwgbV9zaXplLndpZHRoKCkgKiBtX2J5dGVzUGVyUGl4ZWwsIGNvbG9yU3BhY2UsIGJpdG1hcElu
Zm8obV9mbGFncyksIHJlbGVhc2VCaXRtYXBDb250ZXh0RGF0YSwgdGhpcykpOworICAgIAorICAg
IEFTU0VSVChiaXRtYXBDb250ZXh0LmdldCgpKTsKIAogICAgIC8vIFdlIHdhbnQgdGhlIG9yaWdp
biB0byBiZSBpbiB0aGUgdG9wIGxlZnQgY29ybmVyIHNvIHdlIGZsaXAgdGhlIGJhY2tpbmcgc3Rv
cmUgY29udGV4dC4KICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oYml0bWFwQ29udGV4dC5nZXQo
KSwgMCwgbV9zaXplLmhlaWdodCgpKTsKQEAgLTg3LDcgKzEwNyw3IEBAIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBTaGFyZWFibGVCaXRtYXA6Om0KIFJldGFpblB0cjxDR0ltYWdlUmVmPiBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZUNHSW1hZ2UoQ0dEYXRhUHJvdmlkZXJSZWYgZGF0YVByb3ZpZGVyKSBj
b25zdAogewogICAgIEFTU0VSVF9BUkcoZGF0YVByb3ZpZGVyLCBkYXRhUHJvdmlkZXIpOwotCisg
ICAgLy8gRklYTUU6IE1ha2UgdGhpcyB1c2UgZXh0ZW5kZWQgY29sb3IsIGV0Yy4KICAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUobV9zaXplLndp
ZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgOCwgMzIsIG1fc2l6ZS53aWR0aCgpICogNCwgc1JHQkNv
bG9yU3BhY2VSZWYoKSwgYml0bWFwSW5mbyhtX2ZsYWdzKSwgZGF0YVByb3ZpZGVyLCAwLCBmYWxz
ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogICAgIHJldHVybiBpbWFnZTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0JKHJldmlzaW9uIDIwNzg2MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjM1Nyw3ICsyMzU3
LDEwIEBAIHZvaWQgV2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb24KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuU2l6ZUluUGl4ZWxzLnNjYWxlKGNvcmVQYWdl
KCktPmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGbG9hdFNpemUgc2NhbGVkU2l6ZSA9IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRl
UmVjdChpbWFnZS0+c2l6ZSgpLndpZHRoKCkgLyBpbWFnZS0+c2l6ZSgpLmhlaWdodCgpLCBGbG9h
dFJlY3QoMCwgMCwgc2NyZWVuU2l6ZUluUGl4ZWxzLndpZHRoKCksIHNjcmVlblNpemVJblBpeGVs
cy5oZWlnaHQoKSkpLnNpemUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxv
YXRTaXplIGJpdG1hcFNpemUgPSBzY2FsZWRTaXplLndpZHRoKCkgPCBpbWFnZS0+c2l6ZSgpLndp
ZHRoKCkgPyBzY2FsZWRTaXplIDogaW1hZ2UtPnNpemUoKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNoYXJlZEJpdG1hcCA9IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoYml0bWFwU2l6ZSksIFNoYXJl
YWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IE9ubHkgc2VsZWN0IEV4dGVuZGVkQ29sb3Igb24gaW1hZ2VzIGtub3du
IHRvIG5lZWQgd2lkZSBnYW11dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFy
ZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzID0gU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhh
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyB8PSBzY3JlZW5TdXBwb3J0
c0V4dGVuZGVkQ29sb3IoKSA/IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNFeHRlbmRlZENvbG9y
IDogMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxl
KEludFNpemUoYml0bWFwU2l6ZSksIGZsYWdzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzaGFyZWRCaXRtYXAtPmNyZWF0ZUdy
YXBoaWNzQ29udGV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFwU2l6
ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbmZvLmltYWdlID0gc2hhcmVkQml0bWFwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293069</attachid>
            <date>2016-10-27 15:33:04 -0700</date>
            <delta_ts>2016-10-27 16:57:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164001-20161027152915.patch</filename>
            <type>text/plain</type>
            <size>13840</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzg2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE2LTEwLTI1ICBNZWdhbiBH
YXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIHdpZGUgZ2FtdXQgZm9yIFNoYXJlYWJsZUJpdG1hcCBmb3IgaW1hZ2UgcG9wb3ZlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDAwMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGV4dGVu
ZGVkQ29sb3JTcGFjZSBjcmVhdG9yLgorCisgICAgICAgIFRoaXMgaXMgY3VycmVudGx5IHVudGVz
dGFibGUsIGR1ZSB0byBzaW11bGF0b3IgbGltaXRhdGlvbnMsIHNvIG5vIHRlc3RzIGFkZGVkLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZik6CisKIDIwMTYtMTAt
MjUgIE5hbiBXYW5nICA8bl93YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBMYXlvdXRUZXN0IGFj
Y2Vzc2liaWxpdHkvbWFjL21ldGVyLWdhdWdlLXZhbHVlLWRlc2NyaXB0aW9uLmh0bWwgZmFpbGlu
ZwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkocmV2aXNpb24gMjA3ODYyKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05Myw2ICs5MywxOCBAQCBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VS
ZWYoKQogI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKICAgICByZXR1cm4gc1JHQlNwYWNlOwogfQor
ICAgIAorQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKQoreworICAg
IHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdCU3BhY2U7CisjaWYgKFBMQVRGT1JN
KElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAwMDAwKSB8fCAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID4gMTAxMjAw
KQorICAgIGV4dGVuZGVkU1JHQlNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NH
Q29sb3JTcGFjZUV4dGVuZGVkU1JHQik7CisjZW5kaWYKKyAgICAvLyBJZiB0aGVyZSBpcyBubyBz
dXBwb3J0IG9uIGRldmljZSwgZmFsbCBiYWNrIHRvIHNSR0IuCisgICAgaWYgKCFleHRlbmRlZFNS
R0JTcGFjZSkKKyAgICAgICAgZXh0ZW5kZWRTUkdCU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigp
OworICAgIHJldHVybiBleHRlbmRlZFNSR0JTcGFjZTsKK30KIAogQ0dDb2xvclNwYWNlUmVmIGRp
c3BsYXlQM0NvbG9yU3BhY2VSZWYoKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCShyZXZpc2lvbiAy
MDc4NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogQ0dDb2xvclNwYWNlUmVmIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsKIFdFQkNP
UkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZVJlZigpOworV0VCQ09SRV9F
WFBPUlQgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKTsKIFdFQkNP
UkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCk7CiBDR0Nv
bG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMDc4NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw0MiBAQAorMjAxNi0xMC0yNSAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dh
cmRuZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciB3aWRlIGdhbXV0IGZv
ciBTaGFyZWFibGVCaXRtYXAgZm9yIGltYWdlIHBvcG92ZXJzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQwMDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzdXBwcG9ydCBmb3Igd2lkZSBnYW11
dCBpbiBTaGFyZWFibGVCaXRtYXAuIFNoYXJhYmxlQml0bWFwcyBub3cga25vdyB0aGUgc2l6ZSBv
ZiB0aGVpciBwaXhlbHMsCisgICAgICAgIGFuZCB0aGF0IGRhdGEgaXMgcGFzc2VkIGJhY2sgYW5k
IGZvcnRoIGJldHdlZW4gdGhlIHByb2Nlc3Nlcy4gVGhlIGNhbGxlcnMgb2YgU2hhcmVkQml0bWFw
IHdpbGwgZGV0ZXJtaW5lCisgICAgICAgIGlmIHRoZWlyIGltYWdlIHNob3VsZCBzdXBwb3J0IHdp
ZGUgZ2FtdXQsIGJ1dCBTaGFyZWFibGVCaXRtYXAgd2lsbCBvdmVycmlkZSBhIHNldCBmbGFnIG9u
IGEgZGV2aWNlIHRoYXQKKyAgICAgICAgaXMgaW5jYXBiYWJsZSBvZiBzdXBwb3J0aW5nIGEgd2lk
ZSBnYW11dCBpbWFnZS4KKyAgICAgICAgVGhpcyBhbHNvIGFkZHMgdXNpbmcgd2lkZSBnYW11dCBp
bWFnZXMgZm9yIGltYWdlIHBvcG92ZXJzIGluIG1vYmlsZVNhZmFyaS4KKyAgICAgICAgVGhpcyBp
cyBjdXJyZW50bHkgdW50ZXN0YWJsZSwgZHVlIHRvIHNpbXVsYXRvciBsaW1pdGF0aW9ucywgc28g
bm8gdGVzdHMgYWRkZWQuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHA6Cisg
ICAgICAgIChJUEM6OkRlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Rl
Y29kZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHA6CisgICAgICAgIChJ
UEM6OkVuY29kZXI6OmVuY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuaDoK
KyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Ynl0ZXNQZXJQaXhlbCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxl
OjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmNsZWFyKToK
KyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZSk6CisgICAgICAgIChXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXApOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVC
aXRtYXAuaDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpudW1CeXRlc0ZvclNp
emUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OnNpemVJbkJ5dGVzKToKKyAg
ICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0
OjpiaXRtYXBJbmZvKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVH
cmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZUNHSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbik6CisK
IDIwMTYtMTAtMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBDTWFrZSBidWlsZCBmaXguCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
U2hhcmVhYmxlQml0bWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
U2hhcmVhYmxlQml0bWFwLmNwcAkocmV2aXNpb24gMjA3ODYyKQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDEz
IEBACiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CisgICAg
CitzdGF0aWMgdW5zaWduZWQgY2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChTaGFyZWFibGVCaXRtYXA6
OkZsYWdzIGZsYWdzKQoreworICAgIGlmIChmbGFncyAmIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9y
dHNFeHRlbmRlZENvbG9yKQorICAgICAgICByZXR1cm4gODsgLy8gZm9yIGV4dGVuZGVkIGNvbG9y
LCB3ZSBhcmUgdXNpbmcgaGFsZi1mbG9hdCByZXByZXNlbnRhdGlvbnMKKyAgICByZXR1cm4gNDsK
K30KIAogU2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OkhhbmRsZSgpCiAgICAgOiBtX2ZsYWdzKDAp
CkBAIC01NCw2ICs2MSw3IEBAIGJvb2wgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmRlY29kZShJ
UEMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZGxl
Lm1fZmxhZ3MpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaGFuZGxlLm1fYnl0ZXNQZXJQ
aXhlbCA9IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwoaGFuZGxlLm1fZmxhZ3MpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC02MiwxMSArNzAsMTMgQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZTo6Y2xlYXIoKQogICAgIG1faGFuZGxlLmNsZWFyKCk7CiAgICAgbV9zaXplID0gSW50U2l6
ZSgpOwogICAgIG1fZmxhZ3MgPSBGbGFnOjpOb0ZsYWdzOworICAgIG1fYnl0ZXNQZXJQaXhlbCA9
IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwobV9mbGFncyk7CiB9CiAKIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdz
IGZsYWdzKQogewotICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSk7Cisg
ICAgdW5zaWduZWQgYnl0ZXNQZXJQaXhlbCA9IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwoZmxhZ3Mp
OworICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSwgYnl0ZXNQZXJQaXhl
bCk7CiAgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKQEAgLTc5LDcgKzg5LDggQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVh
YmxlQml0bWFwOgogCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZVNoYXJlYWJsZShjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncykKIHsKLSAgICBh
dXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUpOworICAgIHVuc2lnbmVkIGJ5dGVz
UGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGZsYWdzKTsKKyAgICBhdXRvIG51bUJ5
dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUsIGJ5dGVzUGVyUGl4ZWwpOwogICAgIGlmIChudW1C
eXRlcy5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC05NCwx
NCArMTA1LDE1IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDoKIHsK
ICAgICBBU1NFUlQoc2hhcmVkTWVtb3J5KTsKIAotICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRl
c0ZvclNpemUoc2l6ZSk7CisgICAgdW5zaWduZWQgYnl0ZXNQZXJQaXhlbCA9IGNhbGN1bGF0ZUJ5
dGVzUGVyUGl4ZWwoZmxhZ3MpOworICAgIGF1dG8gbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUo
c2l6ZSwgYnl0ZXNQZXJQaXhlbCk7CiAgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKHNoYXJlZE1lbW9yeS0+c2l6ZSgpIDwg
bnVtQnl0ZXMudW5zYWZlR2V0KCkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLQorICAgIAogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGZsYWdzLCBzaGFyZWRNZW1vcnkpKTsKIH0KIApA
QCAtMTIzLDYgKzEzNSw3IEBAIGJvb2wgU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVIYW5kbGUoSGFu
ZGwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGhhbmRsZS5tX3NpemUgPSBtX3NpemU7CiAg
ICAgaGFuZGxlLm1fZmxhZ3MgPSBtX2ZsYWdzOworICAgIGhhbmRsZS5tX2J5dGVzUGVyUGl4ZWwg
PSBtX2J5dGVzUGVyUGl4ZWw7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEzMSw2ICsxNDQs
NyBAQCBTaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJCiAgICAgLCBtX2Zs
YWdzKGZsYWdzKQogICAgICwgbV9kYXRhKGRhdGEpCiB7CisgICAgbV9ieXRlc1BlclBpeGVsID0g
Y2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChmbGFncyk7CiB9CiAKIFNoYXJlYWJsZUJpdG1hcDo6U2hh
cmVhYmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCBSZWZQdHI8U2hh
cmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCkBAIC0xMzksNiArMTUzLDcgQEAgU2hhcmVhYmxlQml0
bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSQogICAgICwgbV9zaGFyZWRNZW1vcnkoc2hhcmVk
TWVtb3J5KQogICAgICwgbV9kYXRhKDApCiB7CisgICAgbV9ieXRlc1BlclBpeGVsID0gY2FsY3Vs
YXRlQnl0ZXNQZXJQaXhlbChmbGFncyk7CiB9CiAKIFNoYXJlYWJsZUJpdG1hcDo6flNoYXJlYWJs
ZUJpdG1hcCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCShy
ZXZpc2lvbiAyMDc4NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAgIGVudW0gRmxh
ZyB7CiAgICAgICAgIE5vRmxhZ3MgPSAwLAogICAgICAgICBTdXBwb3J0c0FscGhhID0gMSA8PCAw
LAorICAgICAgICBTdXBwb3J0c0V4dGVuZGVkQ29sb3IgPSAxIDw8IDEsCiAgICAgfTsKICAgICB0
eXBlZGVmIHVuc2lnbmVkIEZsYWdzOwogCkBAIC03Miw2ICs3Myw3IEBAIHB1YmxpYzoKICAgICAg
ICAgbXV0YWJsZSBTaGFyZWRNZW1vcnk6OkhhbmRsZSBtX2hhbmRsZTsKICAgICAgICAgV2ViQ29y
ZTo6SW50U2l6ZSBtX3NpemU7CiAgICAgICAgIEZsYWdzIG1fZmxhZ3M7CisgICAgICAgIHVpbnQ2
NF90IG1fYnl0ZXNQZXJQaXhlbDsKICAgICB9OwogCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxl
IGJpdG1hcCB0aGF0IHVzZXMgbWFsbG9jZWQgbWVtb3J5LgpAQCAtMTI2LDggKzEyOCw5IEBAIHBy
aXZhdGU6CiAKICNpZiBVU0UoQ0FJUk8pCiAgICAgc3RhdGljIENoZWNrZWQ8dW5zaWduZWQsIFJl
Y29yZE92ZXJmbG93PiBudW1CeXRlc0ZvclNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwor
ICAgIHN0YXRpYyBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gbnVtQnl0ZXNGb3JT
aXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUsIHVuc2lnbmVkIGJ5dGVzUGVyUGl4ZWwp
IHsgcmV0dXJuIG51bUJ5dGVzRm9yU2l6ZShzaXplKTsgfQogI2Vsc2UKLSAgICBzdGF0aWMgQ2hl
Y2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IG51bUJ5dGVzRm9yU2l6ZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBzaXplKSB7IHJldHVybiBzaXplLmFyZWE8UmVjb3JkT3ZlcmZsb3c+KCkg
KiA0OyB9CisgICAgc3RhdGljIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBudW1C
eXRlc0ZvclNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgdW5zaWduZWQgYnl0ZXNQ
ZXJQaXhlbCkgeyByZXR1cm4gc2l6ZS5hcmVhPFJlY29yZE92ZXJmbG93PigpICogYnl0ZXNQZXJQ
aXhlbDsgfQogI2VuZGlmCiAKICNpZiBVU0UoQ0cpCkBAIC0xNDEsMTAgKzE0NCwxNSBAQCBwcml2
YXRlOgogI2VuZGlmCiAKICAgICB2b2lkKiBkYXRhKCkgY29uc3Q7CisjaWYgVVNFKENBSVJPKQog
ICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG51bUJ5dGVzRm9yU2l6ZSht
X3NpemUpLnVuc2FmZUdldCgpOyB9Ci0KKyNlbHNlCisgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkg
Y29uc3QgeyByZXR1cm4gbnVtQnl0ZXNGb3JTaXplKG1fc2l6ZSwgbV9ieXRlc1BlclBpeGVsKS51
bnNhZmVHZXQoKTsgfQorI2VuZGlmCisgICAgCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemU7
CiAgICAgRmxhZ3MgbV9mbGFnczsKKyAgICB1bnNpZ25lZCBtX2J5dGVzUGVyUGl4ZWw7CiAKICAg
ICAvLyBJZiB0aGUgc2hhcmVhYmxlIGJpdG1hcCBpcyBiYWNrZWQgYnkgc2hhcmVkIG1lbW9yeSwg
dGhpcyBwb2ludHMgdG8gdGhlIHNoYXJlZCBtZW1vcnkgb2JqZWN0LgogICAgIFJlZlB0cjxTaGFy
ZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL2Nn
L1NoYXJlYWJsZUJpdG1hcENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCShyZXZpc2lvbiAyMDc4NjIpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxh
dGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSAiQ0dV
dGlsaXRpZXMuaCIKIApAQCAtMzcsMjEgKzM4LDQwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBz
dGF0aWMgQ0dCaXRtYXBJbmZvIGJpdG1hcEluZm8oU2hhcmVhYmxlQml0bWFwOjpGbGFncyBmbGFn
cykKIHsKLSAgICBDR0JpdG1hcEluZm8gaW5mbyA9IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdDsK
LSAgICBpZiAoZmxhZ3MgJiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpCi0gICAgICAg
IGluZm8gfD0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdDsKLSAgICBlbHNlCi0gICAg
ICAgIGluZm8gfD0ga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3Q7Ci0KKyAgICBDR0JpdG1hcElu
Zm8gaW5mbyA9IDA7CisgICAgaWYgKChmbGFncyAmIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNF
eHRlbmRlZENvbG9yKSAmJiBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoKSkgeworICAgICAg
ICBpbmZvIHw9IGtDR0JpdG1hcEZsb2F0Q29tcG9uZW50cyB8IGtDR0JpdG1hcEJ5dGVPcmRlcjE2
SG9zdDsKKyAgICAgICAgCisgICAgICAgIGlmIChmbGFncyAmIFNoYXJlYWJsZUJpdG1hcDo6U3Vw
cG9ydHNBbHBoYSkKKyAgICAgICAgICAgIGluZm8gfD0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxp
ZWRMYXN0OworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbmZvIHw9IGtDR0ltYWdlQWxwaGFO
b25lU2tpcExhc3Q7CisgICAgICAgIAorICAgIH0gZWxzZSB7CisgICAgICAgIGluZm8gfD0ga0NH
Qml0bWFwQnl0ZU9yZGVyMzJIb3N0OworICAgICAgICAKKyAgICAgICAgaWYgKGZsYWdzICYgU2hh
cmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKQorICAgICAgICAgICAgaW5mbyB8PSBrQ0dJbWFn
ZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0OworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbmZv
IHw9IGtDR0ltYWdlQWxwaGFOb25lU2tpcEZpcnN0OworICAgIH0KKyAgICAKICAgICByZXR1cm4g
aW5mbzsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQogewogICAgIHJlZigpOyAvLyBCYWxhbmNlZCBi
eSBkZXJlZiBpbiByZWxlYXNlQml0bWFwQ29udGV4dERhdGEuCi0gICAgUmV0YWluUHRyPENHQ29u
dGV4dFJlZj4gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlV2l0
aERhdGEoZGF0YSgpLAotICAgICAgICBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCA4
LCBtX3NpemUud2lkdGgoKSAqIDQsIHNSR0JDb2xvclNwYWNlUmVmKCksCi0gICAgICAgIGJpdG1h
cEluZm8obV9mbGFncyksIHJlbGVhc2VCaXRtYXBDb250ZXh0RGF0YSwgdGhpcykpOworICAgIAor
ICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlOworICAgIGlmIChtX2ZsYWdzICYgU2hhcmVh
YmxlQml0bWFwOjpTdXBwb3J0c0V4dGVuZGVkQ29sb3IpCisgICAgICAgIGNvbG9yU3BhY2UgPSBl
eHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgZWxzZQorICAgICAgICBjb2xvclNwYWNl
ID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICAKKyAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVm
PiBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVXaXRoRGF0YShk
YXRhKCksIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIG1fYnl0ZXNQZXJQaXhlbCAq
IDggLyA0LCBtX3NpemUud2lkdGgoKSAqIG1fYnl0ZXNQZXJQaXhlbCwgY29sb3JTcGFjZSwgYml0
bWFwSW5mbyhtX2ZsYWdzKSwgcmVsZWFzZUJpdG1hcENvbnRleHREYXRhLCB0aGlzKSk7CisgICAg
CisgICAgQVNTRVJUKGJpdG1hcENvbnRleHQuZ2V0KCkpOwogCiAgICAgLy8gV2Ugd2FudCB0aGUg
b3JpZ2luIHRvIGJlIGluIHRoZSB0b3AgbGVmdCBjb3JuZXIgc28gd2UgZmxpcCB0aGUgYmFja2lu
ZyBzdG9yZSBjb250ZXh0LgogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShiaXRtYXBDb250ZXh0
LmdldCgpLCAwLCBtX3NpemUuaGVpZ2h0KCkpOwpAQCAtODcsNyArMTA3LDcgQEAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IFNoYXJlYWJsZUJpdG1hcDo6bQogUmV0YWluUHRyPENHSW1hZ2VSZWY+IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlQ0dJbWFnZShDR0RhdGFQcm92aWRlclJlZiBkYXRhUHJvdmlk
ZXIpIGNvbnN0CiB7CiAgICAgQVNTRVJUX0FSRyhkYXRhUHJvdmlkZXIsIGRhdGFQcm92aWRlcik7
Ci0KKyAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHVzZSBleHRlbmRlZCBjb2xvciwgZXRjLgogICAg
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShtX3Np
emUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCA4LCAzMiwgbV9zaXplLndpZHRoKCkgKiA0LCBz
UkdCQ29sb3JTcGFjZVJlZigpLCBiaXRtYXBJbmZvKG1fZmxhZ3MpLCBkYXRhUHJvdmlkZXIsIDAs
IGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CiAgICAgcmV0dXJuIGltYWdlOwog
fQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQkocmV2aXNpb24gMjA3ODYyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzU3LDcg
KzIzNTcsMTAgQEAgdm9pZCBXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JlZW5TaXplSW5QaXhlbHMuc2NhbGUoY29y
ZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZsb2F0U2l6ZSBzY2FsZWRTaXplID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9J
bnNpZGVSZWN0KGltYWdlLT5zaXplKCkud2lkdGgoKSAvIGltYWdlLT5zaXplKCkuaGVpZ2h0KCks
IEZsb2F0UmVjdCgwLCAwLCBzY3JlZW5TaXplSW5QaXhlbHMud2lkdGgoKSwgc2NyZWVuU2l6ZUlu
UGl4ZWxzLmhlaWdodCgpKSkuc2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGbG9hdFNpemUgYml0bWFwU2l6ZSA9IHNjYWxlZFNpemUud2lkdGgoKSA8IGltYWdlLT5zaXpl
KCkud2lkdGgoKSA/IHNjYWxlZFNpemUgOiBpbWFnZS0+c2l6ZSgpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc2hhcmVkQml0bWFw
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShiaXRtYXBTaXplKSwg
U2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogT25seSBzZWxlY3QgRXh0ZW5kZWRDb2xvciBvbiBpbWFnZXMg
a25vd24gdG8gbmVlZCB3aWRlIGdhbXV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MgPSBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRz
QWxwaGE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IHNjcmVlblN1
cHBvcnRzRXh0ZW5kZWRDb2xvcigpID8gU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0V4dGVuZGVk
Q29sb3IgOiAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gc2hhcmVkQml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUoSW50U2l6ZShiaXRtYXBTaXplKSwgZmxhZ3MpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNoYXJlZEJpdG1hcC0+Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UmVjdCgwLCAwLCBiaXRt
YXBTaXplLndpZHRoKCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluZm8uaW1hZ2UgPSBzaGFyZWRCaXRtYXA7Cg==
</data>
<flag name="review"
          id="316008"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293084</attachid>
            <date>2016-10-27 17:15:02 -0700</date>
            <delta_ts>2016-10-27 17:53:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164001-20161027171113.patch</filename>
            <type>text/plain</type>
            <size>13817</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzg2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE2LTEwLTI1ICBNZWdhbiBH
YXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIHdpZGUgZ2FtdXQgZm9yIFNoYXJlYWJsZUJpdG1hcCBmb3IgaW1hZ2UgcG9wb3ZlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDAwMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGZ1bmN0
aW9uIHRvIHJldHVybiBhIENHQ29sb3JTcGFjZVJlZiBmb3IgZXh0ZW5kZWQgc1JHQi4KKworICAg
ICAgICBUaGlzIGlzIGN1cnJlbnRseSB1bnRlc3RhYmxlLCBzbyBubyB0ZXN0cyBhZGRlZC4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYpOgorCiAyMDE2LTEwLTI1
ICBOYW4gV2FuZyAgPG5fd2FuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgTGF5b3V0VGVzdCBhY2Nl
c3NpYmlsaXR5L21hYy9tZXRlci1nYXVnZS12YWx1ZS1kZXNjcmlwdGlvbi5odG1sIGZhaWxpbmcK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJldmlzaW9uIDIwNzg2MikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTMsNiArOTMsMTggQEAgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlUmVm
KCkKICNlbmRpZiAvLyBQTEFURk9STShXSU4pCiAgICAgcmV0dXJuIHNSR0JTcGFjZTsKIH0KKyAg
ICAKK0NHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCkKK3sKKyAgICBz
dGF0aWMgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQlNwYWNlOworI2lmIChQTEFURk9STShJ
T1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMDAwMCkgfHwgKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+IDEwMTIwMCkK
KyAgICBleHRlbmRlZFNSR0JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0Nv
bG9yU3BhY2VFeHRlbmRlZFNSR0IpOworI2VuZGlmCisgICAgLy8gSWYgdGhlcmUgaXMgbm8gc3Vw
cG9ydCBmb3IgZXh0ZW5lZGVkIHNSR0IsIGZhbGwgYmFjayB0byBzUkdCLgorICAgIGlmICghZXh0
ZW5kZWRTUkdCU3BhY2UpCisgICAgICAgIGV4dGVuZGVkU1JHQlNwYWNlID0gc1JHQkNvbG9yU3Bh
Y2VSZWYoKTsKKyAgICByZXR1cm4gZXh0ZW5kZWRTUkdCU3BhY2U7Cit9CiAKIENHQ29sb3JTcGFj
ZVJlZiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAkocmV2
aXNpb24gMjA3ODYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIENHQ29sb3JTcGFjZVJlZiBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCk7
CiBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKTsKK1dF
QkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7
CiBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigp
OwogQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKTsKIApJbmRleDogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjA3ODYyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTYtMTAtMjUgIE1lZ2FuIEdhcmRuZXIgIDxt
ZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igd2lkZSBn
YW11dCBmb3IgU2hhcmVhYmxlQml0bWFwIGZvciBpbWFnZSBwb3BvdmVycworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MDAxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgc3VwcHBvcnQgZm9yIHdp
ZGUgZ2FtdXQgaW4gU2hhcmVhYmxlQml0bWFwLiBTaGFyYWJsZUJpdG1hcHMgbm93IGtub3cgdGhl
IHNpemUgb2YgdGhlaXIgcGl4ZWxzLAorICAgICAgICBhbmQgdGhhdCBkYXRhIGlzIHBhc3NlZCBi
YWNrIGFuZCBmb3J0aCBiZXR3ZWVuIHRoZSBwcm9jZXNzZXMuIFRoZSBjYWxsZXJzIG9mIFNoYXJl
ZEJpdG1hcCB3aWxsIGRldGVybWluZQorICAgICAgICBpZiB0aGVpciBpbWFnZSBzaG91bGQgc3Vw
cG9ydCB3aWRlIGdhbXV0LCBidXQgU2hhcmVhYmxlQml0bWFwIHdpbGwgb3ZlcnJpZGUgYSBzZXQg
ZmxhZyBvbiBhIGRldmljZSB0aGF0CisgICAgICAgIGlzIGluY2FwYmFibGUgb2Ygc3VwcG9ydGlu
ZyBhIHdpZGUgZ2FtdXQgaW1hZ2UuCisgICAgICAgIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8g
c2hvdyB3aWRlIGdhbXV0IGltYWdlcyBpbiBpbWFnZSBwb3BvdmVycyBvbiBpT1MuCisgICAgICAg
IFRoaXMgaXMgY3VycmVudGx5IHVudGVzdGFibGUsIHNvIG5vIHRlc3RzIGFkZGVkLgorCisgICAg
ICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpk
ZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmg6CisgICAgICAgICogUGxh
dGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpFbmNvZGVyOjplbmNvZGUpOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmg6CisgICAgICAgICogU2hhcmVkL1NoYXJl
YWJsZUJpdG1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmJ5dGVzUGVyUGl4ZWwpOgorICAgICAg
ICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6ZW5jb2RlKToKKyAgICAgICAgKFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OlNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpj
cmVhdGVTaGFyZWFibGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZUhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0
bWFwKToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6CisgICAgICAgIChXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6bnVtQnl0ZXNGb3JTaXplKToKKyAgICAgICAgKFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwOjpzaXplSW5CeXRlcyk6CisgICAgICAgICogU2hhcmVkL2NnL1NoYXJl
YWJsZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Yml0bWFwSW5mbyk6CisgICAgICAg
IChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KToKKyAgICAg
ICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVDR0ltYWdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24pOgorCiAyMDE2LTEwLTI1ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ01ha2UgYnVpbGQg
Zml4LgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAJKHJl
dmlzaW9uIDIwNzg2MikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMywxMyBAQAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworICAgIAorc3RhdGljIHVuc2lnbmVkIGNhbGN1
bGF0ZUJ5dGVzUGVyUGl4ZWwoU2hhcmVhYmxlQml0bWFwOjpGbGFncyBmbGFncykKK3sKKyAgICBp
ZiAoZmxhZ3MgJiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzRXh0ZW5kZWRDb2xvcikKKyAgICAg
ICAgcmV0dXJuIDg7IC8vIGZvciBleHRlbmRlZCBjb2xvciwgd2UgYXJlIHVzaW5nIGhhbGYtZmxv
YXQgcmVwcmVzZW50YXRpb25zCisgICAgcmV0dXJuIDQ7Cit9CiAKIFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlOjpIYW5kbGUoKQogICAgIDogbV9mbGFncygwKQpAQCAtNTQsNiArNjEsNyBAQCBib29s
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjpkZWNvZGUoSVBDCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhbmRsZS5tX2ZsYWdzKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGhhbmRsZS5tX2J5dGVzUGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1Bl
clBpeGVsKGhhbmRsZS5tX2ZsYWdzKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjIsMTEg
KzcwLDEzIEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmNsZWFyKCkKICAgICBtX2hh
bmRsZS5jbGVhcigpOwogICAgIG1fc2l6ZSA9IEludFNpemUoKTsKICAgICBtX2ZsYWdzID0gRmxh
Zzo6Tm9GbGFnczsKKyAgICBtX2J5dGVzUGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVs
KG1fZmxhZ3MpOwogfQogCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncykKIHsKLSAgICBhdXRvIG51
bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUpOworICAgIHVuc2lnbmVkIGJ5dGVzUGVyUGl4
ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGZsYWdzKTsKKyAgICBhdXRvIG51bUJ5dGVzID0g
bnVtQnl0ZXNGb3JTaXplKHNpemUsIGJ5dGVzUGVyUGl4ZWwpOwogICAgIGlmIChudW1CeXRlcy5o
YXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC03OSw3ICs4OSw4
IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDoKIAogUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoY29uc3QgSW50
U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MpCiB7Ci0gICAgYXV0byBudW1CeXRlcyA9IG51bUJ5dGVz
Rm9yU2l6ZShzaXplKTsKKyAgICB1bnNpZ25lZCBieXRlc1BlclBpeGVsID0gY2FsY3VsYXRlQnl0
ZXNQZXJQaXhlbChmbGFncyk7CisgICAgYXV0byBudW1CeXRlcyA9IG51bUJ5dGVzRm9yU2l6ZShz
aXplLCBieXRlc1BlclBpeGVsKTsKICAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtOTQsMTQgKzEwNSwxNSBAQCBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6CiB7CiAgICAgQVNTRVJUKHNoYXJlZE1lbW9y
eSk7CiAKLSAgICBhdXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUpOworICAgIHVu
c2lnbmVkIGJ5dGVzUGVyUGl4ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGZsYWdzKTsKKyAg
ICBhdXRvIG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUsIGJ5dGVzUGVyUGl4ZWwpOwog
ICAgIGlmIChudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIGlmIChzaGFyZWRNZW1vcnktPnNpemUoKSA8IG51bUJ5dGVzLnVuc2FmZUdldCgpKSB7
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9Ci0KKyAgICAKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChz
aXplLCBmbGFncywgc2hhcmVkTWVtb3J5KSk7CiB9CiAKQEAgLTEyMyw2ICsxMzUsNyBAQCBib29s
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSGFuZGxlKEhhbmRsCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBoYW5kbGUubV9zaXplID0gbV9zaXplOwogICAgIGhhbmRsZS5tX2ZsYWdzID0gbV9m
bGFnczsKKyAgICBoYW5kbGUubV9ieXRlc1BlclBpeGVsID0gbV9ieXRlc1BlclBpeGVsOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0xMzEsNiArMTQ0LDcgQEAgU2hhcmVhYmxlQml0bWFwOjpT
aGFyZWFibGVCaXRtYXAoY29uc3QgSQogICAgICwgbV9mbGFncyhmbGFncykKICAgICAsIG1fZGF0
YShkYXRhKQogeworICAgIG1fYnl0ZXNQZXJQaXhlbCA9IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwo
ZmxhZ3MpOwogfQogCiBTaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRT
aXplJiBzaXplLCBGbGFncyBmbGFncywgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5
KQpAQCAtMTM5LDYgKzE1Myw3IEBAIFNoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKGNv
bnN0IEkKICAgICAsIG1fc2hhcmVkTWVtb3J5KHNoYXJlZE1lbW9yeSkKICAgICAsIG1fZGF0YSgw
KQogeworICAgIG1fYnl0ZXNQZXJQaXhlbCA9IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwoZmxhZ3Mp
OwogfQogCiBTaGFyZWFibGVCaXRtYXA6On5TaGFyZWFibGVCaXRtYXAoKQpJbmRleDogU291cmNl
L1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAkocmV2aXNpb24gMjA3ODYyKQorKysgU291
cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICBlbnVtIEZsYWcgewogICAgICAgICBOb0ZsYWdzID0g
MCwKICAgICAgICAgU3VwcG9ydHNBbHBoYSA9IDEgPDwgMCwKKyAgICAgICAgU3VwcG9ydHNFeHRl
bmRlZENvbG9yID0gMSA8PCAxLAogICAgIH07CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBGbGFnczsK
IApAQCAtNzIsNiArNzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG11dGFibGUgU2hhcmVkTWVtb3J5
OjpIYW5kbGUgbV9oYW5kbGU7CiAgICAgICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwogICAg
ICAgICBGbGFncyBtX2ZsYWdzOworICAgICAgICB1bnNpZ25lZCBtX2J5dGVzUGVyUGl4ZWw7CiAg
ICAgfTsKIAogICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBiaXRtYXAgdGhhdCB1c2VzIG1hbGxv
Y2VkIG1lbW9yeS4KQEAgLTEyNiw4ICsxMjgsOSBAQCBwcml2YXRlOgogCiAjaWYgVVNFKENBSVJP
KQogICAgIHN0YXRpYyBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gbnVtQnl0ZXNG
b3JTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKKyAgICBzdGF0aWMgQ2hlY2tlZDx1bnNp
Z25lZCwgUmVjb3JkT3ZlcmZsb3c+IG51bUJ5dGVzRm9yU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBzaXplLCB1bnNpZ25lZCBieXRlc1BlclBpeGVsKSB7IHJldHVybiBudW1CeXRlc0ZvclNp
emUoc2l6ZSk7IH0KICNlbHNlCi0gICAgc3RhdGljIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92
ZXJmbG93PiBudW1CeXRlc0ZvclNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkgeyBy
ZXR1cm4gc2l6ZS5hcmVhPFJlY29yZE92ZXJmbG93PigpICogNDsgfQorICAgIHN0YXRpYyBDaGVj
a2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gbnVtQnl0ZXNGb3JTaXplKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHNpemUsIHVuc2lnbmVkIGJ5dGVzUGVyUGl4ZWwpIHsgcmV0dXJuIHNpemUu
YXJlYTxSZWNvcmRPdmVyZmxvdz4oKSAqIGJ5dGVzUGVyUGl4ZWw7IH0KICNlbmRpZgogCiAjaWYg
VVNFKENHKQpAQCAtMTQxLDEwICsxNDQsMTUgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgdm9p
ZCogZGF0YSgpIGNvbnN0OworI2lmIFVTRShDQUlSTykKICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMo
KSBjb25zdCB7IHJldHVybiBudW1CeXRlc0ZvclNpemUobV9zaXplKS51bnNhZmVHZXQoKTsgfQot
CisjZWxzZQorICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG51bUJ5dGVz
Rm9yU2l6ZShtX3NpemUsIG1fYnl0ZXNQZXJQaXhlbCkudW5zYWZlR2V0KCk7IH0KKyNlbmRpZgor
ICAgIAogICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwogICAgIEZsYWdzIG1fZmxhZ3M7Cisg
ICAgdW5zaWduZWQgbV9ieXRlc1BlclBpeGVsOwogCiAgICAgLy8gSWYgdGhlIHNoYXJlYWJsZSBi
aXRtYXAgaXMgYmFja2VkIGJ5IHNoYXJlZCBtZW1vcnksIHRoaXMgcG9pbnRzIHRvIHRoZSBzaGFy
ZWQgbWVtb3J5IG9iamVjdC4KICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9y
eTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENH
LmNwcAkocmV2aXNpb24gMjA3ODYyKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL2NnL1NoYXJl
YWJsZUJpdG1hcENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5j
bHVkZSA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3ND
b250ZXh0Q0cuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgIkNHVXRpbGl0aWVzLmgiCiAKQEAgLTM3LDIx
ICszOCw0MCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIENHQml0bWFwSW5mbyBiaXRt
YXBJbmZvKFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MpCiB7Ci0gICAgQ0dCaXRtYXBJbmZv
IGluZm8gPSBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3Q7Ci0gICAgaWYgKGZsYWdzICYgU2hhcmVh
YmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKQotICAgICAgICBpbmZvIHw9IGtDR0ltYWdlQWxwaGFQ
cmVtdWx0aXBsaWVkRmlyc3Q7Ci0gICAgZWxzZQotICAgICAgICBpbmZvIHw9IGtDR0ltYWdlQWxw
aGFOb25lU2tpcEZpcnN0OwotCisgICAgQ0dCaXRtYXBJbmZvIGluZm8gPSAwOworICAgIGlmICgo
ZmxhZ3MgJiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzRXh0ZW5kZWRDb2xvcikgJiYgc2NyZWVu
U3VwcG9ydHNFeHRlbmRlZENvbG9yKCkpIHsKKyAgICAgICAgaW5mbyB8PSBrQ0dCaXRtYXBGbG9h
dENvbXBvbmVudHMgfCBrQ0dCaXRtYXBCeXRlT3JkZXIxNkhvc3Q7CisgICAgICAgIAorICAgICAg
ICBpZiAoZmxhZ3MgJiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpCisgICAgICAgICAg
ICBpbmZvIHw9IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdDsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgaW5mbyB8PSBrQ0dJbWFnZUFscGhhTm9uZVNraXBMYXN0OworICAgICAgICAK
KyAgICB9IGVsc2UgeworICAgICAgICBpbmZvIHw9IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdDsK
KyAgICAgICAgCisgICAgICAgIGlmIChmbGFncyAmIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNB
bHBoYSkKKyAgICAgICAgICAgIGluZm8gfD0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJz
dDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5mbyB8PSBrQ0dJbWFnZUFscGhhTm9uZVNr
aXBGaXJzdDsKKyAgICB9CisgICAgCiAgICAgcmV0dXJuIGluZm87CiB9CiAKIHN0ZDo6dW5pcXVl
X3B0cjxHcmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250
ZXh0KCkKIHsKICAgICByZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVyZWYgaW4gcmVsZWFzZUJpdG1h
cENvbnRleHREYXRhLgotICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGJpdG1hcENvbnRleHQg
PSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZVdpdGhEYXRhKGRhdGEoKSwKLSAgICAgICAg
bV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgOCwgbV9zaXplLndpZHRoKCkgKiA0LCBz
UkdCQ29sb3JTcGFjZVJlZigpLAotICAgICAgICBiaXRtYXBJbmZvKG1fZmxhZ3MpLCByZWxlYXNl
Qml0bWFwQ29udGV4dERhdGEsIHRoaXMpKTsKKyAgICAKKyAgICBDR0NvbG9yU3BhY2VSZWYgY29s
b3JTcGFjZTsKKyAgICBpZiAobV9mbGFncyAmIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNFeHRl
bmRlZENvbG9yKQorICAgICAgICBjb2xvclNwYWNlID0gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJl
ZigpOworICAgIGVsc2UKKyAgICAgICAgY29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7
CisgICAgCisgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0bWFwQ29udGV4dCA9IGFkb3B0
Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlV2l0aERhdGEoZGF0YSgpLCBtX3NpemUud2lkdGgoKSwg
bV9zaXplLmhlaWdodCgpLCBtX2J5dGVzUGVyUGl4ZWwgKiA4IC8gNCwgbV9zaXplLndpZHRoKCkg
KiBtX2J5dGVzUGVyUGl4ZWwsIGNvbG9yU3BhY2UsIGJpdG1hcEluZm8obV9mbGFncyksIHJlbGVh
c2VCaXRtYXBDb250ZXh0RGF0YSwgdGhpcykpOworICAgIAorICAgIEFTU0VSVChiaXRtYXBDb250
ZXh0LmdldCgpKTsKIAogICAgIC8vIFdlIHdhbnQgdGhlIG9yaWdpbiB0byBiZSBpbiB0aGUgdG9w
IGxlZnQgY29ybmVyIHNvIHdlIGZsaXAgdGhlIGJhY2tpbmcgc3RvcmUgY29udGV4dC4KICAgICBD
R0NvbnRleHRUcmFuc2xhdGVDVE0oYml0bWFwQ29udGV4dC5nZXQoKSwgMCwgbV9zaXplLmhlaWdo
dCgpKTsKQEAgLTg3LDcgKzEwNyw3IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBTaGFyZWFibGVC
aXRtYXA6Om0KIFJldGFpblB0cjxDR0ltYWdlUmVmPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUNH
SW1hZ2UoQ0dEYXRhUHJvdmlkZXJSZWYgZGF0YVByb3ZpZGVyKSBjb25zdAogewogICAgIEFTU0VS
VF9BUkcoZGF0YVByb3ZpZGVyLCBkYXRhUHJvdmlkZXIpOwotCisgICAgLy8gRklYTUU6IE1ha2Ug
dGhpcyB1c2UgZXh0ZW5kZWQgY29sb3IsIGV0Yy4KICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
aW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUobV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWln
aHQoKSwgOCwgMzIsIG1fc2l6ZS53aWR0aCgpICogNCwgc1JHQkNvbG9yU3BhY2VSZWYoKSwgYml0
bWFwSW5mbyhtX2ZsYWdzKSwgZGF0YVByb3ZpZGVyLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50
ZW50RGVmYXVsdCkpOwogICAgIHJldHVybiBpbWFnZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJldmlzaW9u
IDIwNzg2MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjM1Nyw3ICsyMzU3LDEwIEBAIHZvaWQgV2ViUGFn
ZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb24KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2NyZWVuU2l6ZUluUGl4ZWxzLnNjYWxlKGNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFj
dG9yKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdFNpemUgc2NhbGVk
U2l6ZSA9IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVjdChpbWFnZS0+c2l6ZSgp
LndpZHRoKCkgLyBpbWFnZS0+c2l6ZSgpLmhlaWdodCgpLCBGbG9hdFJlY3QoMCwgMCwgc2NyZWVu
U2l6ZUluUGl4ZWxzLndpZHRoKCksIHNjcmVlblNpemVJblBpeGVscy5oZWlnaHQoKSkpLnNpemUo
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRTaXplIGJpdG1hcFNpemUg
PSBzY2FsZWRTaXplLndpZHRoKCkgPCBpbWFnZS0+c2l6ZSgpLndpZHRoKCkgPyBzY2FsZWRTaXpl
IDogaW1hZ2UtPnNpemUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlU2hhcmVhYmxlKEludFNpemUoYml0bWFwU2l6ZSksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9y
dHNBbHBoYSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IE9u
bHkgc2VsZWN0IEV4dGVuZGVkQ29sb3Igb24gaW1hZ2VzIGtub3duIHRvIG5lZWQgd2lkZSBnYW11
dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFyZWFibGVCaXRtYXA6OkZsYWdz
IGZsYWdzID0gU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbGFncyB8PSBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoKSA/
IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNFeHRlbmRlZENvbG9yIDogMDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNoYXJlZEJp
dG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoYml0bWFwU2l6
ZSksIGZsYWdzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBn
cmFwaGljc0NvbnRleHQgPSBzaGFyZWRCaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3
SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFwU2l6ZS53aWR0aCgpLCBiaXRtYXBT
aXplLmhlaWdodCgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZv
LmltYWdlID0gc2hhcmVkQml0bWFwOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>