<?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>190092</bug_id>
          
          <creation_ts>2018-09-28 14:32:29 -0700</creation_ts>
          <short_desc>CRASH in CVPixelBufferGetBytePointerCallback()</short_desc>
          <delta_ts>2018-10-03 12:28:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jonlee</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1464511</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-09-28 14:32:29 -0700</bug_when>
    <thetext>CRASH in CVPixelBufferGetBytePointerCallback()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464513</commentid>
    <comment_count>1</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-09-28 14:32:57 -0700</bug_when>
    <thetext>&lt;rdar://43824620&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464514</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-28 14:33:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/44875084&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464516</commentid>
    <comment_count>3</comment_count>
      <attachid>351114</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-09-28 14:36:11 -0700</bug_when>
    <thetext>Created attachment 351114
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464517</commentid>
    <comment_count>4</comment_count>
      <attachid>351114</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-09-28 14:41:00 -0700</bug_when>
    <thetext>Comment on attachment 351114
Patch

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

&gt; Source/WebCore/platform/graphics/cv/PixelBufferConformerCV.cpp:108
&gt; +    --info-&gt;lockCount;

Might be worth adding something like &quot;ASSERT(info-&gt;lockCount &gt; 0)&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464518</commentid>
    <comment_count>5</comment_count>
      <attachid>351114</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-09-28 14:47:10 -0700</bug_when>
    <thetext>Comment on attachment 351114
Patch

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

&gt; Source/WebCore/platform/graphics/cv/PixelBufferConformerCV.cpp:128
&gt; +            CVReturn result = CVPixelBufferLockBaseAddress(info-&gt;pixelBuffer.get(), kCVPixelBufferLock_ReadOnly);

I think you want an unlock here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464522</commentid>
    <comment_count>6</comment_count>
      <attachid>351115</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-09-28 14:53:23 -0700</bug_when>
    <thetext>Created attachment 351115
Patch

Removed the Lock from the info struct, fixed the incorrect lock in the release info callback, and added release logging of the CVPixelBuffer size in the get byte pointer callback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464523</commentid>
    <comment_count>7</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-09-28 14:54:07 -0700</bug_when>
    <thetext>&lt;rdar://problem/43824620&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464532</commentid>
    <comment_count>8</comment_count>
      <attachid>351114</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-09-28 15:06:58 -0700</bug_when>
    <thetext>Comment on attachment 351114
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/cv/PixelBufferConformerCV.cpp:108
&gt;&gt; +    --info-&gt;lockCount;
&gt; 
&gt; Might be worth adding something like &quot;ASSERT(info-&gt;lockCount &gt; 0)&quot;

Good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1464605</commentid>
    <comment_count>9</comment_count>
      <attachid>351138</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-09-28 16:35:17 -0700</bug_when>
    <thetext>Created attachment 351138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465063</commentid>
    <comment_count>10</comment_count>
      <attachid>351138</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-01 10:18:04 -0700</bug_when>
    <thetext>Comment on attachment 351138
Patch

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

&gt; Source/WebCore/platform/graphics/cv/PixelBufferConformerCV.cpp:61
&gt; +    int lockCount { 0 };

Since you changed the pointer type to be RetainPtr&lt;&gt;, can&apos;t we get rid of lockCount and use

CFRetain(pixelBuffer.get())
CFRelease(pixelBuffer.get())
CFGetRetainCount(pixelBuffer.get())

Instead of:
++info-&gt;lockCount
--info-&gt;lockCount
info-&gt;lockCount

I think it is conceptually correct as well. You can consider the lock count as a ref/retain count.

&gt; Source/WebCore/platform/graphics/cv/PixelBufferConformerCV.cpp:83
&gt; +    ++info-&gt;lockCount;

Is this code thread-safe?

&gt; Source/WebCore/platform/graphics/cv/PixelBufferConformerCV.cpp:85
&gt; +    RELEASE_LOG_INFO(Media, &quot;CVPixelBufferGetBytePointerCallback() returning bytePointer: %p, size: %zu&quot;, address, CVPixelBufferGetDataSize(info-&gt;pixelBuffer.get()));

How often does this function get called? If it&apos;s called many times, I would suggest removing this particular RELEASE_LOG_INFO statement because it might add tons of unneeded information.

&gt; Source/WebCore/platform/graphics/cv/PixelBufferConformerCV.cpp:139
&gt; +    info-&gt;pixelBuffer = nullptr;
&gt; +    delete info;

If you change info to std::unique_ptr or you pass RetainPtr&lt;CVPixelBufferRef&gt;, you will not have to do any of these releases. The pointer will be delete itself once the caller of CVPixelBufferReleaseInfoCallback() releases the last reference to this pointer.

&gt; Source/WebCore/platform/graphics/cv/PixelBufferConformerCV.cpp:180
&gt; +    CVPixelBufferInfo* info = new CVPixelBufferInfo();

We usually do not do bare &quot;new&quot; calls. 

Can&apos;t we do it this way?
    CVPixelBufferInfo* info = std::make_unique&lt;CVPixelBufferInfo&gt;().release();

Or can&apos;t we make info a std::unique_ptr?
    auto info = std::make_unique&lt;CVPixelBufferInfo&gt;();

Or can&apos;t we pass the RetainPtr itself instead of the &quot;info&quot; pointer and use CFRetain/CFRelease instead of lockCount?
    RetainPtr&lt;CVPixelBufferRef&gt; pixelBuffer = WTFMove(buffer);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465080</commentid>
    <comment_count>11</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-10-01 10:28:53 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #10)
&gt; Comment on attachment 351138 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=351138&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cv/PixelBufferConformerCV.cpp:61
&gt; &gt; +    int lockCount { 0 };
&gt; 
&gt; Since you changed the pointer type to be RetainPtr&lt;&gt;, can&apos;t we get rid of
&gt; lockCount and use
&gt; 
&gt; CFRetain(pixelBuffer.get())
&gt; CFRelease(pixelBuffer.get())
&gt; CFGetRetainCount(pixelBuffer.get())
&gt; 
&gt; Instead of:
&gt; ++info-&gt;lockCount
&gt; --info-&gt;lockCount
&gt; info-&gt;lockCount

No, because that would turn a logging change into a behavior change. We don&apos;t want to map locking the pixel buffer onto ref&apos;ing the buffer itself, especially if the client isn&apos;t matching up its locks and unlocks.

&gt; I think it is conceptually correct as well. You can consider the lock count
&gt; as a ref/retain count.

No, you absolutely cannot. The lock count is on the CVPixelBuffer&apos;s internal storage, not the CVPixelBuffer itself.  Their lifetimes are not the same, and we can&apos;t treat them as the same.

&gt; &gt; Source/WebCore/platform/graphics/cv/PixelBufferConformerCV.cpp:83
&gt; &gt; +    ++info-&gt;lockCount;
&gt; 
&gt; Is this code thread-safe?

Nope!  But again, this is just a logging change.  If the caller is calling lock and unlock simultaneously on different threads, there&apos;s already huge problems because the pointer returned by lock() won&apos;t be valid after unlock() is called.+

&gt; &gt; Source/WebCore/platform/graphics/cv/PixelBufferConformerCV.cpp:85
&gt; &gt; +    RELEASE_LOG_INFO(Media, &quot;CVPixelBufferGetBytePointerCallback() returning bytePointer: %p, size: %zu&quot;, address, CVPixelBufferGetDataSize(info-&gt;pixelBuffer.get()));
&gt; 
&gt; How often does this function get called? If it&apos;s called many times, I would
&gt; suggest removing this particular RELEASE_LOG_INFO statement because it might
&gt; add tons of unneeded information.

According to my testing, this is called twice per enter- or exit-fullscreen operation, which is not very often. The entire purpose of this logging is to allow us to co-relate the crash location to what CV thinks the size of the buffer is, so I think this is particularly essential logging.

&gt; &gt; Source/WebCore/platform/graphics/cv/PixelBufferConformerCV.cpp:139
&gt; &gt; +    info-&gt;pixelBuffer = nullptr;
&gt; &gt; +    delete info;
&gt; 
&gt; If you change info to std::unique_ptr or you pass
&gt; RetainPtr&lt;CVPixelBufferRef&gt;, you will not have to do any of these releases.
&gt; The pointer will be delete itself once the caller of
&gt; CVPixelBufferReleaseInfoCallback() releases the last reference to this
&gt; pointer.

Not sure I really understand your point here. The CVPixelBuffer is stored in a RetainPtr.  And info can&apos;t be stored in a std::unique_ptr, since it&apos;s just passed around as a void*.

&gt; &gt; Source/WebCore/platform/graphics/cv/PixelBufferConformerCV.cpp:180
&gt; &gt; +    CVPixelBufferInfo* info = new CVPixelBufferInfo();
&gt; 
&gt; We usually do not do bare &quot;new&quot; calls. 
&gt; 
&gt; Can&apos;t we do it this way?
&gt;     CVPixelBufferInfo* info =
&gt; std::make_unique&lt;CVPixelBufferInfo&gt;().release();

How does that solve anything? That&apos;s just a complicated wrapper around &apos;new&apos;.

&gt; Or can&apos;t we make info a std::unique_ptr?
&gt;     auto info = std::make_unique&lt;CVPixelBufferInfo&gt;();
&gt; 
&gt; Or can&apos;t we pass the RetainPtr itself instead of the &quot;info&quot; pointer and use
&gt; CFRetain/CFRelease instead of lockCount?
&gt;     RetainPtr&lt;CVPixelBufferRef&gt; pixelBuffer = WTFMove(buffer);

No.

Using a NSObject* instead of a C++ object is just kicking the can down the road. It doesn&apos;t solve anything on its own. This data structure still needs to be passed around as a void* and cast to a type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465090</commentid>
    <comment_count>12</comment_count>
      <attachid>351263</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-10-01 10:40:23 -0700</bug_when>
    <thetext>Created attachment 351263
Patch

One more fix for the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466151</commentid>
    <comment_count>13</comment_count>
      <attachid>351263</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-03 12:28:39 -0700</bug_when>
    <thetext>Comment on attachment 351263
Patch

Clearing flags on attachment: 351263

Committed r236806: &lt;https://trac.webkit.org/changeset/236806&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466152</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-03 12:28:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351114</attachid>
            <date>2018-09-28 14:36:11 -0700</date>
            <delta_ts>2018-09-28 14:53:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190092-20180928143610.patch</filename>
            <type>text/plain</type>
            <size>6766</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg1ZWJmZGUyYjFjYzY3
OTNkNmQwZDI3YWI1MTFhMDE5YjBjMzdkOS4uNTNmZGNkNTU2NDA0NjQ0MGFhZjRmNWI2Y2JmMDYy
YjExZDZmYTAxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTA5LTI4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIENSQVNIIGluIENWUGl4ZWxC
dWZmZXJHZXRCeXRlUG9pbnRlckNhbGxiYWNrKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDA5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFNwZWN1bGF0aXZlIGZpeCBmb3IgY3Jhc2ggdGhhdCBvY2N1
cnMgd2hlbiBjYWxsZXJzIG9mIENWUGl4ZWxCdWZmZXJHZXRCeXRlUG9pbnRlckNhbGxiYWNrKCkg
YXR0ZW1wdAorICAgICAgICB0byByZWFkIHRoZSBsYXN0IGJ5dGUgb2YgYSBDVlBpeGVsQnVmZmVy
IChhcyBhIHByZS1mbGlnaHQgY2hlY2spIGFuZCBjcmFzaCBkdWUgdG8gYSBtZW1vcnkgYWNjZXNz
CisgICAgICAgIGVycm9yLiBJdCdzIHNwZWN1bGF0ZWQgdGhhdCBtaXNtYXRjaGluZyBDVlBpeGVs
QnVmZmVyTG9ja0J5dGVQb2ludGVyIC8gQ1ZQaXhlbEJ1ZmZlclVubG9ja0J5dGVQb2ludGVyCisg
ICAgICAgIGNhbGxzIGNvdWxkIHJlc3VsdCBpbiBhbiBpbmNvcnJlY3Qgc3RhdGUgaW5zaWRlIHRo
ZSBDVlBpeGVsQnVmZmVyLiBBZGQgbG9nIGNvdW50IGNoZWNrcywgbG9ja2luZywgYW5kCisgICAg
ICAgIHJlbGVhc2UgbG9nZ2luZyB0byB0cnkgdG8gcGlucG9pbnQgaWYgbWlzbWF0Y2ggbG9jayBj
b3VudHMgYXJlIG9jY3VycmluZyBpbiB0aGlzIGNvZGUgcGF0aC4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1ZQaXhlbEJ1ZmZlckdldEJ5dGVQb2ludGVyQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6Q1ZQaXhlbEJ1ZmZlclJlbGVhc2VCeXRlUG9pbnRlckNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkNWUGl4ZWxCdWZmZXJSZWxlYXNlSW5mb0NhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y6OmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVy
KToKKwogMjAxOC0wOS0yNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkIHdhdGNoT1MgYnVpbGQgZml4OyBGaXggZGVjbGFyYXRpb24gZm9yIHBv
cnRzIHdoaWNoIFVTRShFTkNSWVBURURfTUVESUEpIGJ1dCBkb24ndApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZv
cm1lckNWLmNwcAppbmRleCBlNDdkYzViNDM3MTg3NzQxODU5ZmFlZjYwNjA1NmFiMWVjMDNmY2Ji
Li43MjRjM2U3OWU1MWUzZmNkNTZlMmMyZTQzMTkxNTYzNDZjN2I4NTA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNW
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZl
ckNvbmZvcm1lckNWLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEhBVkUoQ09SRV9WSURFTykK
IAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCiAjaW5jbHVkZSAiQ29yZVZpZGVvU29mdExp
bmsuaCIKQEAgLTU1LDIzICs1Niw4NyBAQCBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOjpQaXhlbEJ1
ZmZlckNvbmZvcm1lckNWKENGRGljdGlvbmFyeVJlZiBhdHRyaWJ1dGVzKQogI2VuZGlmCiB9CiAK
LXN0YXRpYyBjb25zdCB2b2lkKiBDVlBpeGVsQnVmZmVyR2V0Qnl0ZVBvaW50ZXJDYWxsYmFjayh2
b2lkKiBpbmZvKQorc3RydWN0IENWUGl4ZWxCdWZmZXJJbmZvIHsKKyAgICBSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXI7CisgICAgTG9jayBtdXRhdGlvbkxvY2s7CisgICAg
aW50IGxvY2tDb3VudCB7IDAgfTsKK307CisKK3N0YXRpYyBjb25zdCB2b2lkKiBDVlBpeGVsQnVm
ZmVyR2V0Qnl0ZVBvaW50ZXJDYWxsYmFjayh2b2lkKiByZWZjb24pCiB7Ci0gICAgQ1ZQaXhlbEJ1
ZmZlclJlZiBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KGluZm8p
OwotICAgIENWUGl4ZWxCdWZmZXJMb2NrQmFzZUFkZHJlc3MocGl4ZWxCdWZmZXIsIGtDVlBpeGVs
QnVmZmVyTG9ja19SZWFkT25seSk7Ci0gICAgcmV0dXJuIENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRk
cmVzcyhwaXhlbEJ1ZmZlcik7CisgICAgQVNTRVJUKHJlZmNvbik7CisgICAgaWYgKCFyZWZjb24p
IHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJDVlBpeGVsQnVmZmVyR2V0Qnl0
ZVBvaW50ZXJDYWxsYmFjayBjYWxsZWQgd2l0aCBOVUxMIHJlZmNvbiIpOworICAgICAgICBSRUxF
QVNFX0xPR19TVEFDS1RSQUNFKE1lZGlhKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorICAgIGF1dG8gaW5mbyA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJJbmZvKj4ocmVmY29u
KTsKKworICAgIExvY2tIb2xkZXIgaG9sZGVyIHsgaW5mby0+bXV0YXRpb25Mb2NrIH07CisgICAg
Q1ZSZXR1cm4gcmVzdWx0ID0gQ1ZQaXhlbEJ1ZmZlckxvY2tCYXNlQWRkcmVzcyhpbmZvLT5waXhl
bEJ1ZmZlci5nZXQoKSwga0NWUGl4ZWxCdWZmZXJMb2NrX1JlYWRPbmx5KTsKKworICAgIEFTU0VS
VChyZXN1bHQgPT0ga0NWUmV0dXJuU3VjY2Vzcyk7CisgICAgaWYgKHJlc3VsdCAhPSBrQ1ZSZXR1
cm5TdWNjZXNzKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiQ1ZQaXhlbEJ1
ZmZlckxvY2tCYXNlQWRkcmVzcygpIHJldHVybmVkIGVycm9yIGNvZGUgJWQiLCByZXN1bHQpOwor
ICAgICAgICBSRUxFQVNFX0xPR19TVEFDS1RSQUNFKE1lZGlhKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgKytpbmZvLT5sb2NrQ291bnQ7CisgICAgcmV0dXJuIENWUGl4
ZWxCdWZmZXJHZXRCYXNlQWRkcmVzcyhpbmZvLT5waXhlbEJ1ZmZlci5nZXQoKSk7CiB9CiAKLXN0
YXRpYyB2b2lkIENWUGl4ZWxCdWZmZXJSZWxlYXNlQnl0ZVBvaW50ZXJDYWxsYmFjayh2b2lkKiBp
bmZvLCBjb25zdCB2b2lkKikKK3N0YXRpYyB2b2lkIENWUGl4ZWxCdWZmZXJSZWxlYXNlQnl0ZVBv
aW50ZXJDYWxsYmFjayh2b2lkKiByZWZjb24sIGNvbnN0IHZvaWQqKQogewotICAgIENWUGl4ZWxC
dWZmZXJSZWYgcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihpbmZv
KTsKLSAgICBDVlBpeGVsQnVmZmVyVW5sb2NrQmFzZUFkZHJlc3MocGl4ZWxCdWZmZXIsIGtDVlBp
eGVsQnVmZmVyTG9ja19SZWFkT25seSk7CisgICAgQVNTRVJUKHJlZmNvbik7CisgICAgaWYgKCFy
ZWZjb24pIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJDVlBpeGVsQnVmZmVy
UmVsZWFzZUJ5dGVQb2ludGVyQ2FsbGJhY2sgY2FsbGVkIHdpdGggTlVMTCByZWZjb24iKTsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfU1RBQ0tUUkFDRShNZWRpYSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgYXV0byBpbmZvID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlckluZm8qPihyZWZj
b24pOworCisgICAgTG9ja0hvbGRlciBob2xkZXIgeyBpbmZvLT5tdXRhdGlvbkxvY2sgfTsKKyAg
ICBDVlJldHVybiByZXN1bHQgPSBDVlBpeGVsQnVmZmVyVW5sb2NrQmFzZUFkZHJlc3MoaW5mby0+
cGl4ZWxCdWZmZXIuZ2V0KCksIGtDVlBpeGVsQnVmZmVyTG9ja19SZWFkT25seSk7CisgICAgQVNT
RVJUKHJlc3VsdCA9PSBrQ1ZSZXR1cm5TdWNjZXNzKTsKKyAgICBpZiAocmVzdWx0ICE9IGtDVlJl
dHVyblN1Y2Nlc3MpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJDVlBpeGVs
QnVmZmVyTG9ja0Jhc2VBZGRyZXNzKCkgcmV0dXJuZWQgZXJyb3IgY29kZSAlZCIsIHJlc3VsdCk7
CisgICAgICAgIFJFTEVBU0VfTE9HX1NUQUNLVFJBQ0UoTWVkaWEpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLS1pbmZvLT5sb2NrQ291bnQ7CiB9CiAKLXN0YXRpYyB2b2lkIENWUGl4
ZWxCdWZmZXJSZWxlYXNlSW5mb0NhbGxiYWNrKHZvaWQqIGluZm8pCitzdGF0aWMgdm9pZCBDVlBp
eGVsQnVmZmVyUmVsZWFzZUluZm9DYWxsYmFjayh2b2lkKiByZWZjb24pCiB7Ci0gICAgQ1ZQaXhl
bEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KGlu
Zm8pOwotICAgIENGUmVsZWFzZShwaXhlbEJ1ZmZlcik7CisgICAgQVNTRVJUKHJlZmNvbik7Cisg
ICAgaWYgKCFyZWZjb24pIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJDVlBp
eGVsQnVmZmVyUmVsZWFzZUluZm9DYWxsYmFjayBjYWxsZWQgd2l0aCBOVUxMIHJlZmNvbiIpOwor
ICAgICAgICBSRUxFQVNFX0xPR19TVEFDS1RSQUNFKE1lZGlhKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBhdXRvIGluZm8gPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVySW5mbyo+KHJl
ZmNvbik7CisKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgaG9sZGVyIHsgaW5mby0+bXV0YXRp
b25Mb2NrIH07CisgICAgICAgIEFTU0VSVCghaW5mby0+bG9ja0NvdW50KTsKKyAgICAgICAgaWYg
KGluZm8tPmxvY2tDb3VudCkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEs
ICJDVlBpeGVsQnVmZmVyUmVsZWFzZUluZm9DYWxsYmFjaygpIGNhbGxlZCB3aXRoIGEgbm9uLXpl
cm8gbG9ja0NvdW50OiAlZCIsIGluZm8tPmxvY2tDb3VudCk7CisgICAgICAgICAgICBSRUxFQVNF
X0xPR19TVEFDS1RSQUNFKE1lZGlhKTsKKworICAgICAgICAgICAgQ1ZSZXR1cm4gcmVzdWx0ID0g
Q1ZQaXhlbEJ1ZmZlckxvY2tCYXNlQWRkcmVzcyhpbmZvLT5waXhlbEJ1ZmZlci5nZXQoKSwga0NW
UGl4ZWxCdWZmZXJMb2NrX1JlYWRPbmx5KTsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0g
a0NWUmV0dXJuU3VjY2Vzcyk7CisgICAgICAgICAgICBpZiAocmVzdWx0ICE9IGtDVlJldHVyblN1
Y2Nlc3MpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkNWUGl4
ZWxCdWZmZXJMb2NrQmFzZUFkZHJlc3MoKSByZXR1cm5lZCBlcnJvciBjb2RlICVkIiwgcmVzdWx0
KTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19TVEFDS1RSQUNFKE1lZGlhKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGluZm8tPnBpeGVsQnVmZmVyID0gbnVsbHB0
cjsKKyAgICB9CisKKyAgICBkZWxldGUgaW5mbzsKIH0KIAogUmV0YWluUHRyPENWUGl4ZWxCdWZm
ZXJSZWY+IFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y6OmNvbnZlcnQoQ1ZQaXhlbEJ1ZmZlclJlZiBy
YXdCdWZmZXIpCkBAIC0xMTIsOSArMTc3LDEyIEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBQaXhl
bEJ1ZmZlckNvbmZvcm1lckNWOjpjcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihDVlBpeGVsCiAg
ICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93KGJ1ZmZl
ci5nZXQoKSk7CiAgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBDVlBpeGVsQnVmZmVyR2V0RGF0YVNp
emUoYnVmZmVyLmdldCgpKTsKIAotICAgIENGUmV0YWluKGJ1ZmZlci5nZXQoKSk7IC8vIEJhbGFu
Y2VkIGJ5IENWUGl4ZWxCdWZmZXJSZWxlYXNlSW5mb0NhbGxiYWNrIGluIHByb3ZpZGVyQ2FsbGJh
Y2tzLgorICAgIENWUGl4ZWxCdWZmZXJJbmZvKiBpbmZvID0gbmV3IENWUGl4ZWxCdWZmZXJJbmZv
KCk7CisgICAgaW5mby0+cGl4ZWxCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgaW5mby0+
bG9ja0NvdW50ID0gMDsKKwogICAgIENHRGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3Zp
ZGVyQ2FsbGJhY2tzID0geyAwLCBDVlBpeGVsQnVmZmVyR2V0Qnl0ZVBvaW50ZXJDYWxsYmFjaywg
Q1ZQaXhlbEJ1ZmZlclJlbGVhc2VCeXRlUG9pbnRlckNhbGxiYWNrLCAwLCBDVlBpeGVsQnVmZmVy
UmVsZWFzZUluZm9DYWxsYmFjayB9OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4g
cHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGJ1ZmZlci5nZXQo
KSwgYnl0ZUxlbmd0aCwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CisgICAgUmV0YWluUHRyPENHRGF0
YVByb3ZpZGVyUmVmPiBwcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJl
Y3QoaW5mbywgYnl0ZUxlbmd0aCwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAKICAgICByZXR1cm4g
YWRvcHRDRihDR0ltYWdlQ3JlYXRlKHdpZHRoLCBoZWlnaHQsIDgsIDMyLCBieXRlc1BlclJvdywg
c1JHQkNvbG9yU3BhY2VSZWYoKSwgYml0bWFwSW5mbywgcHJvdmlkZXIuZ2V0KCksIG51bGxwdHIs
IGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351115</attachid>
            <date>2018-09-28 14:53:23 -0700</date>
            <delta_ts>2018-09-28 16:35:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190092-20180928145323.patch</filename>
            <type>text/plain</type>
            <size>6733</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg1ZWJmZGUyYjFjYzY3
OTNkNmQwZDI3YWI1MTFhMDE5YjBjMzdkOS4uNTNmZGNkNTU2NDA0NjQ0MGFhZjRmNWI2Y2JmMDYy
YjExZDZmYTAxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTA5LTI4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIENSQVNIIGluIENWUGl4ZWxC
dWZmZXJHZXRCeXRlUG9pbnRlckNhbGxiYWNrKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDA5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFNwZWN1bGF0aXZlIGZpeCBmb3IgY3Jhc2ggdGhhdCBvY2N1
cnMgd2hlbiBjYWxsZXJzIG9mIENWUGl4ZWxCdWZmZXJHZXRCeXRlUG9pbnRlckNhbGxiYWNrKCkg
YXR0ZW1wdAorICAgICAgICB0byByZWFkIHRoZSBsYXN0IGJ5dGUgb2YgYSBDVlBpeGVsQnVmZmVy
IChhcyBhIHByZS1mbGlnaHQgY2hlY2spIGFuZCBjcmFzaCBkdWUgdG8gYSBtZW1vcnkgYWNjZXNz
CisgICAgICAgIGVycm9yLiBJdCdzIHNwZWN1bGF0ZWQgdGhhdCBtaXNtYXRjaGluZyBDVlBpeGVs
QnVmZmVyTG9ja0J5dGVQb2ludGVyIC8gQ1ZQaXhlbEJ1ZmZlclVubG9ja0J5dGVQb2ludGVyCisg
ICAgICAgIGNhbGxzIGNvdWxkIHJlc3VsdCBpbiBhbiBpbmNvcnJlY3Qgc3RhdGUgaW5zaWRlIHRo
ZSBDVlBpeGVsQnVmZmVyLiBBZGQgbG9nIGNvdW50IGNoZWNrcywgbG9ja2luZywgYW5kCisgICAg
ICAgIHJlbGVhc2UgbG9nZ2luZyB0byB0cnkgdG8gcGlucG9pbnQgaWYgbWlzbWF0Y2ggbG9jayBj
b3VudHMgYXJlIG9jY3VycmluZyBpbiB0aGlzIGNvZGUgcGF0aC4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1ZQaXhlbEJ1ZmZlckdldEJ5dGVQb2ludGVyQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6Q1ZQaXhlbEJ1ZmZlclJlbGVhc2VCeXRlUG9pbnRlckNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkNWUGl4ZWxCdWZmZXJSZWxlYXNlSW5mb0NhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y6OmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVy
KToKKwogMjAxOC0wOS0yNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkIHdhdGNoT1MgYnVpbGQgZml4OyBGaXggZGVjbGFyYXRpb24gZm9yIHBv
cnRzIHdoaWNoIFVTRShFTkNSWVBURURfTUVESUEpIGJ1dCBkb24ndApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZv
cm1lckNWLmNwcAppbmRleCBlNDdkYzViNDM3MTg3NzQxODU5ZmFlZjYwNjA1NmFiMWVjMDNmY2Ji
Li44NzFiNDI4YTVmNzk4N2E1Njg0ODEyZjY4ZTg3NjEzZWU0NTdlZTUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNW
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZl
ckNvbmZvcm1lckNWLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEhBVkUoQ09SRV9WSURFTykK
IAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCiAjaW5jbHVkZSAiQ29yZVZpZGVvU29mdExp
bmsuaCIKQEAgLTU1LDIzICs1Niw4MiBAQCBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOjpQaXhlbEJ1
ZmZlckNvbmZvcm1lckNWKENGRGljdGlvbmFyeVJlZiBhdHRyaWJ1dGVzKQogI2VuZGlmCiB9CiAK
LXN0YXRpYyBjb25zdCB2b2lkKiBDVlBpeGVsQnVmZmVyR2V0Qnl0ZVBvaW50ZXJDYWxsYmFjayh2
b2lkKiBpbmZvKQorc3RydWN0IENWUGl4ZWxCdWZmZXJJbmZvIHsKKyAgICBSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXI7CisgICAgaW50IGxvY2tDb3VudCB7IDAgfTsKK307
CisKK3N0YXRpYyBjb25zdCB2b2lkKiBDVlBpeGVsQnVmZmVyR2V0Qnl0ZVBvaW50ZXJDYWxsYmFj
ayh2b2lkKiByZWZjb24pCiB7Ci0gICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciA9IHN0
YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KGluZm8pOwotICAgIENWUGl4ZWxCdWZmZXJMb2Nr
QmFzZUFkZHJlc3MocGl4ZWxCdWZmZXIsIGtDVlBpeGVsQnVmZmVyTG9ja19SZWFkT25seSk7Ci0g
ICAgcmV0dXJuIENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzcyhwaXhlbEJ1ZmZlcik7CisgICAg
QVNTRVJUKHJlZmNvbik7CisgICAgaWYgKCFyZWZjb24pIHsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWEsICJDVlBpeGVsQnVmZmVyR2V0Qnl0ZVBvaW50ZXJDYWxsYmFjayBjYWxsZWQg
d2l0aCBOVUxMIHJlZmNvbiIpOworICAgICAgICBSRUxFQVNFX0xPR19TVEFDS1RSQUNFKE1lZGlh
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIGF1dG8gaW5mbyA9IHN0YXRp
Y19jYXN0PENWUGl4ZWxCdWZmZXJJbmZvKj4ocmVmY29uKTsKKworICAgIENWUmV0dXJuIHJlc3Vs
dCA9IENWUGl4ZWxCdWZmZXJMb2NrQmFzZUFkZHJlc3MoaW5mby0+cGl4ZWxCdWZmZXIuZ2V0KCks
IGtDVlBpeGVsQnVmZmVyTG9ja19SZWFkT25seSk7CisKKyAgICBBU1NFUlQocmVzdWx0ID09IGtD
VlJldHVyblN1Y2Nlc3MpOworICAgIGlmIChyZXN1bHQgIT0ga0NWUmV0dXJuU3VjY2Vzcykgewor
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkNWUGl4ZWxCdWZmZXJMb2NrQmFzZUFk
ZHJlc3MoKSByZXR1cm5lZCBlcnJvciBjb2RlICVkIiwgcmVzdWx0KTsKKyAgICAgICAgUkVMRUFT
RV9MT0dfU1RBQ0tUUkFDRShNZWRpYSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KworICAgICsraW5mby0+bG9ja0NvdW50OworICAgIHZvaWQqIGFkZHJlc3MgPSBDVlBpeGVsQnVm
ZmVyR2V0QmFzZUFkZHJlc3MoaW5mby0+cGl4ZWxCdWZmZXIuZ2V0KCkpOworICAgIFJFTEVBU0Vf
TE9HX0lORk8oTWVkaWEsICJDVlBpeGVsQnVmZmVyR2V0Qnl0ZVBvaW50ZXJDYWxsYmFjaygpIHJl
dHVybmluZyBieXRlUG9pbnRlcjogJXAsIHNpemU6ICV6dSIsIGFkZHJlc3MsIENWUGl4ZWxCdWZm
ZXJHZXREYXRhU2l6ZShpbmZvLT5waXhlbEJ1ZmZlci5nZXQoKSkpOworICAgIHJldHVybiBhZGRy
ZXNzOwogfQogCi1zdGF0aWMgdm9pZCBDVlBpeGVsQnVmZmVyUmVsZWFzZUJ5dGVQb2ludGVyQ2Fs
bGJhY2sodm9pZCogaW5mbywgY29uc3Qgdm9pZCopCitzdGF0aWMgdm9pZCBDVlBpeGVsQnVmZmVy
UmVsZWFzZUJ5dGVQb2ludGVyQ2FsbGJhY2sodm9pZCogcmVmY29uLCBjb25zdCB2b2lkKikKIHsK
LSAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1
ZmZlclJlZj4oaW5mbyk7Ci0gICAgQ1ZQaXhlbEJ1ZmZlclVubG9ja0Jhc2VBZGRyZXNzKHBpeGVs
QnVmZmVyLCBrQ1ZQaXhlbEJ1ZmZlckxvY2tfUmVhZE9ubHkpOworICAgIEFTU0VSVChyZWZjb24p
OworICAgIGlmICghcmVmY29uKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAi
Q1ZQaXhlbEJ1ZmZlclJlbGVhc2VCeXRlUG9pbnRlckNhbGxiYWNrIGNhbGxlZCB3aXRoIE5VTEwg
cmVmY29uIik7CisgICAgICAgIFJFTEVBU0VfTE9HX1NUQUNLVFJBQ0UoTWVkaWEpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGF1dG8gaW5mbyA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZm
ZXJJbmZvKj4ocmVmY29uKTsKKworICAgIENWUmV0dXJuIHJlc3VsdCA9IENWUGl4ZWxCdWZmZXJV
bmxvY2tCYXNlQWRkcmVzcyhpbmZvLT5waXhlbEJ1ZmZlci5nZXQoKSwga0NWUGl4ZWxCdWZmZXJM
b2NrX1JlYWRPbmx5KTsKKyAgICBBU1NFUlQocmVzdWx0ID09IGtDVlJldHVyblN1Y2Nlc3MpOwor
ICAgIGlmIChyZXN1bHQgIT0ga0NWUmV0dXJuU3VjY2VzcykgeworICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihNZWRpYSwgIkNWUGl4ZWxCdWZmZXJMb2NrQmFzZUFkZHJlc3MoKSByZXR1cm5lZCBl
cnJvciBjb2RlICVkIiwgcmVzdWx0KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfU1RBQ0tUUkFDRShN
ZWRpYSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAtLWluZm8tPmxvY2tDb3VudDsK
IH0KIAotc3RhdGljIHZvaWQgQ1ZQaXhlbEJ1ZmZlclJlbGVhc2VJbmZvQ2FsbGJhY2sodm9pZCog
aW5mbykKK3N0YXRpYyB2b2lkIENWUGl4ZWxCdWZmZXJSZWxlYXNlSW5mb0NhbGxiYWNrKHZvaWQq
IHJlZmNvbikKIHsKLSAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyID0gc3RhdGljX2Nh
c3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oaW5mbyk7Ci0gICAgQ0ZSZWxlYXNlKHBpeGVsQnVmZmVyKTsK
KyAgICBBU1NFUlQocmVmY29uKTsKKyAgICBpZiAoIXJlZmNvbikgeworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYSwgIkNWUGl4ZWxCdWZmZXJSZWxlYXNlSW5mb0NhbGxiYWNrIGNhbGxl
ZCB3aXRoIE5VTEwgcmVmY29uIik7CisgICAgICAgIFJFTEVBU0VfTE9HX1NUQUNLVFJBQ0UoTWVk
aWEpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8gaW5mbyA9IHN0YXRpY19jYXN0
PENWUGl4ZWxCdWZmZXJJbmZvKj4ocmVmY29uKTsKKworICAgIEFTU0VSVCghaW5mby0+bG9ja0Nv
dW50KTsKKyAgICBpZiAoaW5mby0+bG9ja0NvdW50KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE1lZGlhLCAiQ1ZQaXhlbEJ1ZmZlclJlbGVhc2VJbmZvQ2FsbGJhY2soKSBjYWxsZWQgd2l0
aCBhIG5vbi16ZXJvIGxvY2tDb3VudDogJWQiLCBpbmZvLT5sb2NrQ291bnQpOworICAgICAgICBS
RUxFQVNFX0xPR19TVEFDS1RSQUNFKE1lZGlhKTsKKworICAgICAgICBDVlJldHVybiByZXN1bHQg
PSBDVlBpeGVsQnVmZmVyVW5sb2NrQmFzZUFkZHJlc3MoaW5mby0+cGl4ZWxCdWZmZXIuZ2V0KCks
IGtDVlBpeGVsQnVmZmVyTG9ja19SZWFkT25seSk7CisgICAgICAgIEFTU0VSVChyZXN1bHQgPT0g
a0NWUmV0dXJuU3VjY2Vzcyk7CisgICAgICAgIGlmIChyZXN1bHQgIT0ga0NWUmV0dXJuU3VjY2Vz
cykgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJDVlBpeGVsQnVmZmVy
TG9ja0Jhc2VBZGRyZXNzKCkgcmV0dXJuZWQgZXJyb3IgY29kZSAlZCIsIHJlc3VsdCk7CisgICAg
ICAgICAgICBSRUxFQVNFX0xPR19TVEFDS1RSQUNFKE1lZGlhKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGluZm8tPnBpeGVsQnVmZmVyID0gbnVsbHB0cjsKKyAgICBkZWxldGUgaW5mbzsKIH0K
IAogUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y6OmNv
bnZlcnQoQ1ZQaXhlbEJ1ZmZlclJlZiByYXdCdWZmZXIpCkBAIC0xMTIsOSArMTcyLDEyIEBAIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOjpjcmVhdGVJbWFnZUZy
b21QaXhlbEJ1ZmZlcihDVlBpeGVsCiAgICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ1ZQaXhlbEJ1
ZmZlckdldEJ5dGVzUGVyUm93KGJ1ZmZlci5nZXQoKSk7CiAgICAgc2l6ZV90IGJ5dGVMZW5ndGgg
PSBDVlBpeGVsQnVmZmVyR2V0RGF0YVNpemUoYnVmZmVyLmdldCgpKTsKIAotICAgIENGUmV0YWlu
KGJ1ZmZlci5nZXQoKSk7IC8vIEJhbGFuY2VkIGJ5IENWUGl4ZWxCdWZmZXJSZWxlYXNlSW5mb0Nh
bGxiYWNrIGluIHByb3ZpZGVyQ2FsbGJhY2tzLgorICAgIENWUGl4ZWxCdWZmZXJJbmZvKiBpbmZv
ID0gbmV3IENWUGl4ZWxCdWZmZXJJbmZvKCk7CisgICAgaW5mby0+cGl4ZWxCdWZmZXIgPSBXVEZN
b3ZlKGJ1ZmZlcik7CisgICAgaW5mby0+bG9ja0NvdW50ID0gMDsKKwogICAgIENHRGF0YVByb3Zp
ZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCBDVlBpeGVsQnVmZmVy
R2V0Qnl0ZVBvaW50ZXJDYWxsYmFjaywgQ1ZQaXhlbEJ1ZmZlclJlbGVhc2VCeXRlUG9pbnRlckNh
bGxiYWNrLCAwLCBDVlBpeGVsQnVmZmVyUmVsZWFzZUluZm9DYWxsYmFjayB9OwotICAgIFJldGFp
blB0cjxDR0RhdGFQcm92aWRlclJlZj4gcHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVy
Q3JlYXRlRGlyZWN0KGJ1ZmZlci5nZXQoKSwgYnl0ZUxlbmd0aCwgJnByb3ZpZGVyQ2FsbGJhY2tz
KSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBwcm92aWRlciA9IGFkb3B0Q0Yo
Q0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoaW5mbywgYnl0ZUxlbmd0aCwgJnByb3ZpZGVyQ2Fs
bGJhY2tzKSk7CiAKICAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKHdpZHRoLCBoZWln
aHQsIDgsIDMyLCBieXRlc1BlclJvdywgc1JHQkNvbG9yU3BhY2VSZWYoKSwgYml0bWFwSW5mbywg
cHJvdmlkZXIuZ2V0KCksIG51bGxwdHIsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0
KSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351138</attachid>
            <date>2018-09-28 16:35:17 -0700</date>
            <delta_ts>2018-10-01 10:40:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190092-20180928163516.patch</filename>
            <type>text/plain</type>
            <size>6995</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NjE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWU0MTBiMDdhNDE3MzJk
OWY0MTc4ZDgzZDdkMDhiNTJjNWRhODNjOC4uOWEwNDNhNzQ0ZGM3YjlhZTVmODA2Nzg0OGViMDBm
ZjczNDYxZGJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTA5LTI4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIENSQVNIIGluIENWUGl4ZWxC
dWZmZXJHZXRCeXRlUG9pbnRlckNhbGxiYWNrKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDA5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFNwZWN1bGF0aXZlIGZpeCBmb3IgY3Jhc2ggdGhhdCBvY2N1
cnMgd2hlbiBjYWxsZXJzIG9mIENWUGl4ZWxCdWZmZXJHZXRCeXRlUG9pbnRlckNhbGxiYWNrKCkg
YXR0ZW1wdAorICAgICAgICB0byByZWFkIHRoZSBsYXN0IGJ5dGUgb2YgYSBDVlBpeGVsQnVmZmVy
IChhcyBhIHByZS1mbGlnaHQgY2hlY2spIGFuZCBjcmFzaCBkdWUgdG8gYSBtZW1vcnkgYWNjZXNz
CisgICAgICAgIGVycm9yLiBJdCdzIHNwZWN1bGF0ZWQgdGhhdCBtaXNtYXRjaGluZyBDVlBpeGVs
QnVmZmVyTG9ja0J5dGVQb2ludGVyIC8gQ1ZQaXhlbEJ1ZmZlclVubG9ja0J5dGVQb2ludGVyCisg
ICAgICAgIGNhbGxzIGNvdWxkIHJlc3VsdCBpbiBhbiBpbmNvcnJlY3Qgc3RhdGUgaW5zaWRlIHRo
ZSBDVlBpeGVsQnVmZmVyLiBBZGQgbG9nIGNvdW50IGNoZWNrcywgbG9ja2luZywgYW5kCisgICAg
ICAgIHJlbGVhc2UgbG9nZ2luZyB0byB0cnkgdG8gcGlucG9pbnQgaWYgbWlzbWF0Y2ggbG9jayBj
b3VudHMgYXJlIG9jY3VycmluZyBpbiB0aGlzIGNvZGUgcGF0aC4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1ZQaXhlbEJ1ZmZlckdldEJ5dGVQb2ludGVyQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6Q1ZQaXhlbEJ1ZmZlclJlbGVhc2VCeXRlUG9pbnRlckNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkNWUGl4ZWxCdWZmZXJSZWxlYXNlSW5mb0NhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y6OmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVy
KToKKwogMjAxOC0wOS0yNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkIHdhdGNoT1MgYnVpbGQgZml4OyBGaXggZGVjbGFyYXRpb24gZm9yIHBv
cnRzIHdoaWNoIFVTRShFTkNSWVBURURfTUVESUEpIGJ1dCBkb24ndApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZv
cm1lckNWLmNwcAppbmRleCBlNDdkYzViNDM3MTg3NzQxODU5ZmFlZjYwNjA1NmFiMWVjMDNmY2Ji
Li44NTNiMTNmZWZlNWE0NGEzZThkM2JkNTY5M2E5Y2RhMjEyODI5M2FlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNW
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZl
ckNvbmZvcm1lckNWLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEhBVkUoQ09SRV9WSURFTykK
IAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCiAjaW5jbHVkZSAiQ29yZVZpZGVvU29mdExp
bmsuaCIKQEAgLTU1LDIzICs1Niw4NyBAQCBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOjpQaXhlbEJ1
ZmZlckNvbmZvcm1lckNWKENGRGljdGlvbmFyeVJlZiBhdHRyaWJ1dGVzKQogI2VuZGlmCiB9CiAK
LXN0YXRpYyBjb25zdCB2b2lkKiBDVlBpeGVsQnVmZmVyR2V0Qnl0ZVBvaW50ZXJDYWxsYmFjayh2
b2lkKiBpbmZvKQorc3RydWN0IENWUGl4ZWxCdWZmZXJJbmZvIHsKKyAgICBSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXI7CisgICAgaW50IGxvY2tDb3VudCB7IDAgfTsKK307
CisKK3N0YXRpYyBjb25zdCB2b2lkKiBDVlBpeGVsQnVmZmVyR2V0Qnl0ZVBvaW50ZXJDYWxsYmFj
ayh2b2lkKiByZWZjb24pCiB7Ci0gICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciA9IHN0
YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KGluZm8pOwotICAgIENWUGl4ZWxCdWZmZXJMb2Nr
QmFzZUFkZHJlc3MocGl4ZWxCdWZmZXIsIGtDVlBpeGVsQnVmZmVyTG9ja19SZWFkT25seSk7Ci0g
ICAgcmV0dXJuIENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzcyhwaXhlbEJ1ZmZlcik7CisgICAg
QVNTRVJUKHJlZmNvbik7CisgICAgaWYgKCFyZWZjb24pIHsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWEsICJDVlBpeGVsQnVmZmVyR2V0Qnl0ZVBvaW50ZXJDYWxsYmFjaygpIGNhbGxl
ZCB3aXRoIE5VTEwgcmVmY29uIik7CisgICAgICAgIFJFTEVBU0VfTE9HX1NUQUNLVFJBQ0UoTWVk
aWEpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgYXV0byBpbmZvID0gc3Rh
dGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlckluZm8qPihyZWZjb24pOworCisgICAgQ1ZSZXR1cm4gcmVz
dWx0ID0gQ1ZQaXhlbEJ1ZmZlckxvY2tCYXNlQWRkcmVzcyhpbmZvLT5waXhlbEJ1ZmZlci5nZXQo
KSwga0NWUGl4ZWxCdWZmZXJMb2NrX1JlYWRPbmx5KTsKKworICAgIEFTU0VSVChyZXN1bHQgPT0g
a0NWUmV0dXJuU3VjY2Vzcyk7CisgICAgaWYgKHJlc3VsdCAhPSBrQ1ZSZXR1cm5TdWNjZXNzKSB7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiQ1ZQaXhlbEJ1ZmZlckxvY2tCYXNl
QWRkcmVzcygpIHJldHVybmVkIGVycm9yIGNvZGUgJWQiLCByZXN1bHQpOworICAgICAgICBSRUxF
QVNFX0xPR19TVEFDS1RSQUNFKE1lZGlhKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCisgICAgKytpbmZvLT5sb2NrQ291bnQ7CisgICAgdm9pZCogYWRkcmVzcyA9IENWUGl4ZWxC
dWZmZXJHZXRCYXNlQWRkcmVzcyhpbmZvLT5waXhlbEJ1ZmZlci5nZXQoKSk7CisgICAgUkVMRUFT
RV9MT0dfSU5GTyhNZWRpYSwgIkNWUGl4ZWxCdWZmZXJHZXRCeXRlUG9pbnRlckNhbGxiYWNrKCkg
cmV0dXJuaW5nIGJ5dGVQb2ludGVyOiAlcCwgc2l6ZTogJXp1IiwgYWRkcmVzcywgQ1ZQaXhlbEJ1
ZmZlckdldERhdGFTaXplKGluZm8tPnBpeGVsQnVmZmVyLmdldCgpKSk7CisgICAgcmV0dXJuIGFk
ZHJlc3M7CiB9CiAKLXN0YXRpYyB2b2lkIENWUGl4ZWxCdWZmZXJSZWxlYXNlQnl0ZVBvaW50ZXJD
YWxsYmFjayh2b2lkKiBpbmZvLCBjb25zdCB2b2lkKikKK3N0YXRpYyB2b2lkIENWUGl4ZWxCdWZm
ZXJSZWxlYXNlQnl0ZVBvaW50ZXJDYWxsYmFjayh2b2lkKiByZWZjb24sIGNvbnN0IHZvaWQqKQog
ewotICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVs
QnVmZmVyUmVmPihpbmZvKTsKLSAgICBDVlBpeGVsQnVmZmVyVW5sb2NrQmFzZUFkZHJlc3MocGl4
ZWxCdWZmZXIsIGtDVlBpeGVsQnVmZmVyTG9ja19SZWFkT25seSk7CisgICAgQVNTRVJUKHJlZmNv
bik7CisgICAgaWYgKCFyZWZjb24pIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEs
ICJDVlBpeGVsQnVmZmVyUmVsZWFzZUJ5dGVQb2ludGVyQ2FsbGJhY2soKSBjYWxsZWQgd2l0aCBO
VUxMIHJlZmNvbiIpOworICAgICAgICBSRUxFQVNFX0xPR19TVEFDS1RSQUNFKE1lZGlhKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIGluZm8gPSBzdGF0aWNfY2FzdDxDVlBpeGVs
QnVmZmVySW5mbyo+KHJlZmNvbik7CisKKyAgICBDVlJldHVybiByZXN1bHQgPSBDVlBpeGVsQnVm
ZmVyVW5sb2NrQmFzZUFkZHJlc3MoaW5mby0+cGl4ZWxCdWZmZXIuZ2V0KCksIGtDVlBpeGVsQnVm
ZmVyTG9ja19SZWFkT25seSk7CisgICAgQVNTRVJUKHJlc3VsdCA9PSBrQ1ZSZXR1cm5TdWNjZXNz
KTsKKyAgICBpZiAocmVzdWx0ICE9IGtDVlJldHVyblN1Y2Nlc3MpIHsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWEsICJDVlBpeGVsQnVmZmVyTG9ja0Jhc2VBZGRyZXNzKCkgcmV0dXJu
ZWQgZXJyb3IgY29kZSAlZCIsIHJlc3VsdCk7CisgICAgICAgIFJFTEVBU0VfTE9HX1NUQUNLVFJB
Q0UoTWVkaWEpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKGluZm8tPmxv
Y2tDb3VudCk7CisgICAgaWYgKCFpbmZvLT5sb2NrQ291bnQpIHsKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWEsICJDVlBpeGVsQnVmZmVyUmVsZWFzZUJ5dGVQb2ludGVyQ2FsbGJhY2so
KSBjYWxsZWQgd2l0aG91dCBtYXRjaGluZyBDVlBpeGVsQnVmZmVyR2V0Qnl0ZVBvaW50ZXJDYWxs
YmFjaygpIiwgcmVzdWx0KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfU1RBQ0tUUkFDRShNZWRpYSk7
CisgICAgfQorICAgIC0taW5mby0+bG9ja0NvdW50OwogfQogCi1zdGF0aWMgdm9pZCBDVlBpeGVs
QnVmZmVyUmVsZWFzZUluZm9DYWxsYmFjayh2b2lkKiBpbmZvKQorc3RhdGljIHZvaWQgQ1ZQaXhl
bEJ1ZmZlclJlbGVhc2VJbmZvQ2FsbGJhY2sodm9pZCogcmVmY29uKQogewotICAgIENWUGl4ZWxC
dWZmZXJSZWYgcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihpbmZv
KTsKLSAgICBDRlJlbGVhc2UocGl4ZWxCdWZmZXIpOworICAgIEFTU0VSVChyZWZjb24pOworICAg
IGlmICghcmVmY29uKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiQ1ZQaXhl
bEJ1ZmZlclJlbGVhc2VJbmZvQ2FsbGJhY2soKSBjYWxsZWQgd2l0aCBOVUxMIHJlZmNvbiIpOwor
ICAgICAgICBSRUxFQVNFX0xPR19TVEFDS1RSQUNFKE1lZGlhKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBhdXRvIGluZm8gPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVySW5mbyo+KHJl
ZmNvbik7CisKKyAgICBBU1NFUlQoIWluZm8tPmxvY2tDb3VudCk7CisgICAgaWYgKGluZm8tPmxv
Y2tDb3VudCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkNWUGl4ZWxCdWZm
ZXJSZWxlYXNlSW5mb0NhbGxiYWNrKCkgY2FsbGVkIHdpdGggYSBub24temVybyBsb2NrQ291bnQ6
ICVkIiwgaW5mby0+bG9ja0NvdW50KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfU1RBQ0tUUkFDRShN
ZWRpYSk7CisKKyAgICAgICAgQ1ZSZXR1cm4gcmVzdWx0ID0gQ1ZQaXhlbEJ1ZmZlclVubG9ja0Jh
c2VBZGRyZXNzKGluZm8tPnBpeGVsQnVmZmVyLmdldCgpLCBrQ1ZQaXhlbEJ1ZmZlckxvY2tfUmVh
ZE9ubHkpOworICAgICAgICBBU1NFUlQocmVzdWx0ID09IGtDVlJldHVyblN1Y2Nlc3MpOworICAg
ICAgICBpZiAocmVzdWx0ICE9IGtDVlJldHVyblN1Y2Nlc3MpIHsKKyAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE1lZGlhLCAiQ1ZQaXhlbEJ1ZmZlckxvY2tCYXNlQWRkcmVzcygpIHJldHVy
bmVkIGVycm9yIGNvZGUgJWQiLCByZXN1bHQpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfU1RB
Q0tUUkFDRShNZWRpYSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpbmZvLT5waXhlbEJ1ZmZl
ciA9IG51bGxwdHI7CisgICAgZGVsZXRlIGluZm87CiB9CiAKIFJldGFpblB0cjxDVlBpeGVsQnVm
ZmVyUmVmPiBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOjpjb252ZXJ0KENWUGl4ZWxCdWZmZXJSZWYg
cmF3QnVmZmVyKQpAQCAtMTEyLDkgKzE3NywxMiBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gUGl4
ZWxCdWZmZXJDb25mb3JtZXJDVjo6Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIoQ1ZQaXhlbAog
ICAgIHNpemVfdCBieXRlc1BlclJvdyA9IENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJvdyhidWZm
ZXIuZ2V0KCkpOwogICAgIHNpemVfdCBieXRlTGVuZ3RoID0gQ1ZQaXhlbEJ1ZmZlckdldERhdGFT
aXplKGJ1ZmZlci5nZXQoKSk7CiAKLSAgICBDRlJldGFpbihidWZmZXIuZ2V0KCkpOyAvLyBCYWxh
bmNlZCBieSBDVlBpeGVsQnVmZmVyUmVsZWFzZUluZm9DYWxsYmFjayBpbiBwcm92aWRlckNhbGxi
YWNrcy4KKyAgICBDVlBpeGVsQnVmZmVySW5mbyogaW5mbyA9IG5ldyBDVlBpeGVsQnVmZmVySW5m
bygpOworICAgIGluZm8tPnBpeGVsQnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgIGluZm8t
PmxvY2tDb3VudCA9IDA7CisKICAgICBDR0RhdGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyBwcm92
aWRlckNhbGxiYWNrcyA9IHsgMCwgQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVQb2ludGVyQ2FsbGJhY2ss
IENWUGl4ZWxCdWZmZXJSZWxlYXNlQnl0ZVBvaW50ZXJDYWxsYmFjaywgMCwgQ1ZQaXhlbEJ1ZmZl
clJlbGVhc2VJbmZvQ2FsbGJhY2sgfTsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+
IHByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdChidWZmZXIuZ2V0
KCksIGJ5dGVMZW5ndGgsICZwcm92aWRlckNhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0Rh
dGFQcm92aWRlclJlZj4gcHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGly
ZWN0KGluZm8sIGJ5dGVMZW5ndGgsICZwcm92aWRlckNhbGxiYWNrcykpOwogCiAgICAgcmV0dXJu
IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZSh3aWR0aCwgaGVpZ2h0LCA4LCAzMiwgYnl0ZXNQZXJSb3cs
IHNSR0JDb2xvclNwYWNlUmVmKCksIGJpdG1hcEluZm8sIHByb3ZpZGVyLmdldCgpLCBudWxscHRy
LCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351263</attachid>
            <date>2018-10-01 10:40:23 -0700</date>
            <delta_ts>2018-10-03 12:28:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190092-20181001104023.patch</filename>
            <type>text/plain</type>
            <size>6971</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY2ZGQ0OWEyZTRlNTBk
NGUxNjUwMzQ3NzUzZjM4NjRlYTdlZmI4OS4uODhhN2M1MjdkODVhZTI2MTg1ZjY2OTRlZmYwYTAx
M2U4Yzc4Mzc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTA5LTI4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIENSQVNIIGluIENWUGl4ZWxC
dWZmZXJHZXRCeXRlUG9pbnRlckNhbGxiYWNrKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDA5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFNwZWN1bGF0aXZlIGZpeCBmb3IgY3Jhc2ggdGhhdCBvY2N1
cnMgd2hlbiBjYWxsZXJzIG9mIENWUGl4ZWxCdWZmZXJHZXRCeXRlUG9pbnRlckNhbGxiYWNrKCkg
YXR0ZW1wdAorICAgICAgICB0byByZWFkIHRoZSBsYXN0IGJ5dGUgb2YgYSBDVlBpeGVsQnVmZmVy
IChhcyBhIHByZS1mbGlnaHQgY2hlY2spIGFuZCBjcmFzaCBkdWUgdG8gYSBtZW1vcnkgYWNjZXNz
CisgICAgICAgIGVycm9yLiBJdCdzIHNwZWN1bGF0ZWQgdGhhdCBtaXNtYXRjaGluZyBDVlBpeGVs
QnVmZmVyTG9ja0J5dGVQb2ludGVyIC8gQ1ZQaXhlbEJ1ZmZlclVubG9ja0J5dGVQb2ludGVyCisg
ICAgICAgIGNhbGxzIGNvdWxkIHJlc3VsdCBpbiBhbiBpbmNvcnJlY3Qgc3RhdGUgaW5zaWRlIHRo
ZSBDVlBpeGVsQnVmZmVyLiBBZGQgbG9nIGNvdW50IGNoZWNrcywgbG9ja2luZywgYW5kCisgICAg
ICAgIHJlbGVhc2UgbG9nZ2luZyB0byB0cnkgdG8gcGlucG9pbnQgaWYgbWlzbWF0Y2ggbG9jayBj
b3VudHMgYXJlIG9jY3VycmluZyBpbiB0aGlzIGNvZGUgcGF0aC4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1ZQaXhlbEJ1ZmZlckdldEJ5dGVQb2ludGVyQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6Q1ZQaXhlbEJ1ZmZlclJlbGVhc2VCeXRlUG9pbnRlckNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkNWUGl4ZWxCdWZmZXJSZWxlYXNlSW5mb0NhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y6OmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVy
KToKKwogMjAxOC0wOS0yNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgYSBxdWlyayB0byBkaXNhYmxlIE1vZGVybiBFTUUgZm9yIHNpdGVzIHdoaWNoIGFy
ZSBicm9rZW4gd2l0aCBpdCBlbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuY3BwCmluZGV4
IGU0N2RjNWI0MzcxODc3NDE4NTlmYWVmNjA2MDU2YWIxZWMwM2ZjYmIuLmU3ZTExYzc2NWJhZjYx
YzUzMTY1YzBmNmZkYzM0ODcwMjUyYjk0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuY3Bw
CkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgSEFWRShDT1JFX1ZJREVPKQogCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0Q0cuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Nv
ZnRMaW5raW5nLmg+CiAKICNpbmNsdWRlICJDb3JlVmlkZW9Tb2Z0TGluay5oIgpAQCAtNTUsMjMg
KzU2LDg3IEBAIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y6OlBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Yo
Q0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMpCiAjZW5kaWYKIH0KIAotc3RhdGljIGNvbnN0IHZv
aWQqIENWUGl4ZWxCdWZmZXJHZXRCeXRlUG9pbnRlckNhbGxiYWNrKHZvaWQqIGluZm8pCitzdHJ1
Y3QgQ1ZQaXhlbEJ1ZmZlckluZm8geworICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBw
aXhlbEJ1ZmZlcjsKKyAgICBpbnQgbG9ja0NvdW50IHsgMCB9OworfTsKKworc3RhdGljIGNvbnN0
IHZvaWQqIENWUGl4ZWxCdWZmZXJHZXRCeXRlUG9pbnRlckNhbGxiYWNrKHZvaWQqIHJlZmNvbikK
IHsKLSAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhl
bEJ1ZmZlclJlZj4oaW5mbyk7Ci0gICAgQ1ZQaXhlbEJ1ZmZlckxvY2tCYXNlQWRkcmVzcyhwaXhl
bEJ1ZmZlciwga0NWUGl4ZWxCdWZmZXJMb2NrX1JlYWRPbmx5KTsKLSAgICByZXR1cm4gQ1ZQaXhl
bEJ1ZmZlckdldEJhc2VBZGRyZXNzKHBpeGVsQnVmZmVyKTsKKyAgICBBU1NFUlQocmVmY29uKTsK
KyAgICBpZiAoIXJlZmNvbikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkNW
UGl4ZWxCdWZmZXJHZXRCeXRlUG9pbnRlckNhbGxiYWNrKCkgY2FsbGVkIHdpdGggTlVMTCByZWZj
b24iKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfU1RBQ0tUUkFDRShNZWRpYSk7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKyAgICBhdXRvIGluZm8gPSBzdGF0aWNfY2FzdDxDVlBpeGVs
QnVmZmVySW5mbyo+KHJlZmNvbik7CisKKyAgICBDVlJldHVybiByZXN1bHQgPSBDVlBpeGVsQnVm
ZmVyTG9ja0Jhc2VBZGRyZXNzKGluZm8tPnBpeGVsQnVmZmVyLmdldCgpLCBrQ1ZQaXhlbEJ1ZmZl
ckxvY2tfUmVhZE9ubHkpOworCisgICAgQVNTRVJUKHJlc3VsdCA9PSBrQ1ZSZXR1cm5TdWNjZXNz
KTsKKyAgICBpZiAocmVzdWx0ICE9IGtDVlJldHVyblN1Y2Nlc3MpIHsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWEsICJDVlBpeGVsQnVmZmVyTG9ja0Jhc2VBZGRyZXNzKCkgcmV0dXJu
ZWQgZXJyb3IgY29kZSAlZCIsIHJlc3VsdCk7CisgICAgICAgIFJFTEVBU0VfTE9HX1NUQUNLVFJB
Q0UoTWVkaWEpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICArK2luZm8t
PmxvY2tDb3VudDsKKyAgICB2b2lkKiBhZGRyZXNzID0gQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRy
ZXNzKGluZm8tPnBpeGVsQnVmZmVyLmdldCgpKTsKKyAgICBSRUxFQVNFX0xPR19JTkZPKE1lZGlh
LCAiQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVQb2ludGVyQ2FsbGJhY2soKSByZXR1cm5pbmcgYnl0ZVBv
aW50ZXI6ICVwLCBzaXplOiAlenUiLCBhZGRyZXNzLCBDVlBpeGVsQnVmZmVyR2V0RGF0YVNpemUo
aW5mby0+cGl4ZWxCdWZmZXIuZ2V0KCkpKTsKKyAgICByZXR1cm4gYWRkcmVzczsKIH0KIAotc3Rh
dGljIHZvaWQgQ1ZQaXhlbEJ1ZmZlclJlbGVhc2VCeXRlUG9pbnRlckNhbGxiYWNrKHZvaWQqIGlu
Zm8sIGNvbnN0IHZvaWQqKQorc3RhdGljIHZvaWQgQ1ZQaXhlbEJ1ZmZlclJlbGVhc2VCeXRlUG9p
bnRlckNhbGxiYWNrKHZvaWQqIHJlZmNvbiwgY29uc3Qgdm9pZCopCiB7Ci0gICAgQ1ZQaXhlbEJ1
ZmZlclJlZiBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KGluZm8p
OwotICAgIENWUGl4ZWxCdWZmZXJVbmxvY2tCYXNlQWRkcmVzcyhwaXhlbEJ1ZmZlciwga0NWUGl4
ZWxCdWZmZXJMb2NrX1JlYWRPbmx5KTsKKyAgICBBU1NFUlQocmVmY29uKTsKKyAgICBpZiAoIXJl
ZmNvbikgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkNWUGl4ZWxCdWZmZXJS
ZWxlYXNlQnl0ZVBvaW50ZXJDYWxsYmFjaygpIGNhbGxlZCB3aXRoIE5VTEwgcmVmY29uIik7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX1NUQUNLVFJBQ0UoTWVkaWEpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGF1dG8gaW5mbyA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJJbmZvKj4ocmVm
Y29uKTsKKworICAgIENWUmV0dXJuIHJlc3VsdCA9IENWUGl4ZWxCdWZmZXJVbmxvY2tCYXNlQWRk
cmVzcyhpbmZvLT5waXhlbEJ1ZmZlci5nZXQoKSwga0NWUGl4ZWxCdWZmZXJMb2NrX1JlYWRPbmx5
KTsKKyAgICBBU1NFUlQocmVzdWx0ID09IGtDVlJldHVyblN1Y2Nlc3MpOworICAgIGlmIChyZXN1
bHQgIT0ga0NWUmV0dXJuU3VjY2VzcykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YSwgIkNWUGl4ZWxCdWZmZXJMb2NrQmFzZUFkZHJlc3MoKSByZXR1cm5lZCBlcnJvciBjb2RlICVk
IiwgcmVzdWx0KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfU1RBQ0tUUkFDRShNZWRpYSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoaW5mby0+bG9ja0NvdW50KTsKKyAgICBp
ZiAoIWluZm8tPmxvY2tDb3VudCkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwg
IkNWUGl4ZWxCdWZmZXJSZWxlYXNlQnl0ZVBvaW50ZXJDYWxsYmFjaygpIGNhbGxlZCB3aXRob3V0
IG1hdGNoaW5nIENWUGl4ZWxCdWZmZXJHZXRCeXRlUG9pbnRlckNhbGxiYWNrKCkiKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfU1RBQ0tUUkFDRShNZWRpYSk7CisgICAgfQorICAgIC0taW5mby0+bG9j
a0NvdW50OwogfQogCi1zdGF0aWMgdm9pZCBDVlBpeGVsQnVmZmVyUmVsZWFzZUluZm9DYWxsYmFj
ayh2b2lkKiBpbmZvKQorc3RhdGljIHZvaWQgQ1ZQaXhlbEJ1ZmZlclJlbGVhc2VJbmZvQ2FsbGJh
Y2sodm9pZCogcmVmY29uKQogewotICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIgPSBz
dGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihpbmZvKTsKLSAgICBDRlJlbGVhc2UocGl4ZWxC
dWZmZXIpOworICAgIEFTU0VSVChyZWZjb24pOworICAgIGlmICghcmVmY29uKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiQ1ZQaXhlbEJ1ZmZlclJlbGVhc2VJbmZvQ2FsbGJh
Y2soKSBjYWxsZWQgd2l0aCBOVUxMIHJlZmNvbiIpOworICAgICAgICBSRUxFQVNFX0xPR19TVEFD
S1RSQUNFKE1lZGlhKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIGluZm8gPSBz
dGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVySW5mbyo+KHJlZmNvbik7CisKKyAgICBBU1NFUlQoIWlu
Zm8tPmxvY2tDb3VudCk7CisgICAgaWYgKGluZm8tPmxvY2tDb3VudCkgeworICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYSwgIkNWUGl4ZWxCdWZmZXJSZWxlYXNlSW5mb0NhbGxiYWNrKCkg
Y2FsbGVkIHdpdGggYSBub24temVybyBsb2NrQ291bnQ6ICVkIiwgaW5mby0+bG9ja0NvdW50KTsK
KyAgICAgICAgUkVMRUFTRV9MT0dfU1RBQ0tUUkFDRShNZWRpYSk7CisKKyAgICAgICAgQ1ZSZXR1
cm4gcmVzdWx0ID0gQ1ZQaXhlbEJ1ZmZlclVubG9ja0Jhc2VBZGRyZXNzKGluZm8tPnBpeGVsQnVm
ZmVyLmdldCgpLCBrQ1ZQaXhlbEJ1ZmZlckxvY2tfUmVhZE9ubHkpOworICAgICAgICBBU1NFUlQo
cmVzdWx0ID09IGtDVlJldHVyblN1Y2Nlc3MpOworICAgICAgICBpZiAocmVzdWx0ICE9IGtDVlJl
dHVyblN1Y2Nlc3MpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiQ1ZQ
aXhlbEJ1ZmZlckxvY2tCYXNlQWRkcmVzcygpIHJldHVybmVkIGVycm9yIGNvZGUgJWQiLCByZXN1
bHQpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfU1RBQ0tUUkFDRShNZWRpYSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBpbmZvLT5waXhlbEJ1ZmZlciA9IG51bGxwdHI7CisgICAgZGVsZXRl
IGluZm87CiB9CiAKIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBQaXhlbEJ1ZmZlckNvbmZv
cm1lckNWOjpjb252ZXJ0KENWUGl4ZWxCdWZmZXJSZWYgcmF3QnVmZmVyKQpAQCAtMTEyLDkgKzE3
NywxMiBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gUGl4ZWxCdWZmZXJDb25mb3JtZXJDVjo6Y3Jl
YXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIoQ1ZQaXhlbAogICAgIHNpemVfdCBieXRlc1BlclJvdyA9
IENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJvdyhidWZmZXIuZ2V0KCkpOwogICAgIHNpemVfdCBi
eXRlTGVuZ3RoID0gQ1ZQaXhlbEJ1ZmZlckdldERhdGFTaXplKGJ1ZmZlci5nZXQoKSk7CiAKLSAg
ICBDRlJldGFpbihidWZmZXIuZ2V0KCkpOyAvLyBCYWxhbmNlZCBieSBDVlBpeGVsQnVmZmVyUmVs
ZWFzZUluZm9DYWxsYmFjayBpbiBwcm92aWRlckNhbGxiYWNrcy4KKyAgICBDVlBpeGVsQnVmZmVy
SW5mbyogaW5mbyA9IG5ldyBDVlBpeGVsQnVmZmVySW5mbygpOworICAgIGluZm8tPnBpeGVsQnVm
ZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgIGluZm8tPmxvY2tDb3VudCA9IDA7CisKICAgICBD
R0RhdGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9IHsgMCwgQ1ZQ
aXhlbEJ1ZmZlckdldEJ5dGVQb2ludGVyQ2FsbGJhY2ssIENWUGl4ZWxCdWZmZXJSZWxlYXNlQnl0
ZVBvaW50ZXJDYWxsYmFjaywgMCwgQ1ZQaXhlbEJ1ZmZlclJlbGVhc2VJbmZvQ2FsbGJhY2sgfTsK
LSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IHByb3ZpZGVyID0gYWRvcHRDRihDR0Rh
dGFQcm92aWRlckNyZWF0ZURpcmVjdChidWZmZXIuZ2V0KCksIGJ5dGVMZW5ndGgsICZwcm92aWRl
ckNhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gcHJvdmlkZXIg
PSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGluZm8sIGJ5dGVMZW5ndGgsICZw
cm92aWRlckNhbGxiYWNrcykpOwogCiAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZSh3
aWR0aCwgaGVpZ2h0LCA4LCAzMiwgYnl0ZXNQZXJSb3csIHNSR0JDb2xvclNwYWNlUmVmKCksIGJp
dG1hcEluZm8sIHByb3ZpZGVyLmdldCgpLCBudWxscHRyLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50
ZW50RGVmYXVsdCkpOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>