<?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>186812</bug_id>
          
          <creation_ts>2018-06-19 12:15:07 -0700</creation_ts>
          <short_desc>constructArray variants should take the slow path for subclasses of Array</short_desc>
          <delta_ts>2018-06-19 13:10:16 -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="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1434477</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-06-19 12:15:07 -0700</bug_when>
    <thetext>constructArray variants should take the slow path for subclasses of Array</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1434478</commentid>
    <comment_count>1</comment_count>
      <attachid>343072</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-06-19 12:15:38 -0700</bug_when>
    <thetext>Created attachment 343072
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1434482</commentid>
    <comment_count>2</comment_count>
      <attachid>343072</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-06-19 12:20:19 -0700</bug_when>
    <thetext>Comment on attachment 343072
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        allocate a new structure for an indexing type change while initializing

Why are we doing an indexing type change? Why would that only effect sublasses?

&gt; Source/JavaScriptCore/runtime/JSArray.cpp:1411
&gt; +JSArray* constructArray(ExecState* exec, Structure* arrayStructure, const ArgList&amp; values)
&gt; +{
&gt; +    VM&amp; vm = exec-&gt;vm();
&gt; +    unsigned length = values.size();
&gt; +    ObjectInitializationScope scope(vm);
&gt; +
&gt; +    // FIXME: We only need this for subclasses of Array because we might need to allocate a new structure to change
&gt; +    // indexing types while initializing. If this triggered a GC then we might scan our currently uninitialized
&gt; +    // array and crash. https://bugs.webkit.org/show_bug.cgi?id=186811
&gt; +    JSArray* array;
&gt; +    if (arrayStructure-&gt;globalObject()-&gt;isOriginalArrayStructure(arrayStructure))
&gt; +        array = JSArray::tryCreateUninitializedRestricted(scope, arrayStructure, length);
&gt; +    else
&gt; +        array = JSArray::create(vm, arrayStructure, length);
&gt; +
&gt; +    // FIXME: we should probably throw an out of memory error here, but
&gt; +    // when making this change we should check that all clients of this
&gt; +    // function will correctly handle an exception being thrown from here.
&gt; +    // https://bugs.webkit.org/show_bug.cgi?id=169786
&gt; +    RELEASE_ASSERT(array);
&gt; +
&gt; +    for (unsigned i = 0; i &lt; length; ++i)
&gt; +        array-&gt;initializeIndex(scope, i, values.at(i));
&gt; +    return array;
&gt; +}
&gt; +
&gt; +JSArray* constructArray(ExecState* exec, Structure* arrayStructure, const JSValue* values, unsigned length)
&gt; +{
&gt; +    VM&amp; vm = exec-&gt;vm();
&gt; +    ObjectInitializationScope scope(vm);
&gt; +    // FIXME: We only need this for subclasses of Array because we might need to allocate a new structure to change
&gt; +    // indexing types while initializing. If this triggered a GC then we might scan our currently uninitialized
&gt; +    // array and crash. https://bugs.webkit.org/show_bug.cgi?id=186811
&gt; +    JSArray* array;
&gt; +    if (arrayStructure-&gt;globalObject()-&gt;isOriginalArrayStructure(arrayStructure))
&gt; +        array = JSArray::tryCreateUninitializedRestricted(scope, arrayStructure, length);
&gt; +    else
&gt; +        array = JSArray::create(vm, arrayStructure, length);
&gt; +
&gt; +    // FIXME: we should probably throw an out of memory error here, but
&gt; +    // when making this change we should check that all clients of this
&gt; +    // function will correctly handle an exception being thrown from here.
&gt; +    // https://bugs.webkit.org/show_bug.cgi?id=169786
&gt; +    RELEASE_ASSERT(array);
&gt; +
&gt; +    for (unsigned i = 0; i &lt; length; ++i)
&gt; +        array-&gt;initializeIndex(scope, i, values[i]);
&gt; +    return array;
&gt; +}
&gt; +
&gt; +JSArray* constructArrayNegativeIndexed(ExecState* exec, Structure* arrayStructure, const JSValue* values, unsigned length)
&gt; +{
&gt; +    VM&amp; vm = exec-&gt;vm();
&gt; +    ObjectInitializationScope scope(vm);
&gt; +    // FIXME: We only need this for subclasses of Array because we might need to allocate a new structure to change
&gt; +    // indexing types while initializing. If this triggered a GC then we might scan our currently uninitialized
&gt; +    // array and crash. https://bugs.webkit.org/show_bug.cgi?id=186811
&gt; +    JSArray* array;
&gt; +    if (arrayStructure-&gt;globalObject()-&gt;isOriginalArrayStructure(arrayStructure))
&gt; +        array = JSArray::tryCreateUninitializedRestricted(scope, arrayStructure, length);
&gt; +    else
&gt; +        array = JSArray::create(vm, arrayStructure, length);
&gt; +
&gt; +    // FIXME: we should probably throw an out of memory error here, but
&gt; +    // when making this change we should check that all clients of this
&gt; +    // function will correctly handle an exception being thrown from here.
&gt; +    // https://bugs.webkit.org/show_bug.cgi?id=169786
&gt; +    RELEASE_ASSERT(array);
&gt; +
&gt; +    for (int i = 0; i &lt; static_cast&lt;int&gt;(length); ++i)
&gt; +        array-&gt;initializeIndex(scope, i, values[-i]);
&gt; +    return array;
&gt; +}

So much repeated code. Can we abstract this in some way?

Also, is inlining this really not profitable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1434483</commentid>
    <comment_count>3</comment_count>
      <attachid>343072</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-06-19 12:21:19 -0700</bug_when>
    <thetext>Comment on attachment 343072
Patch

Can you add tests for this?  r=me too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1434489</commentid>
    <comment_count>4</comment_count>
      <attachid>343072</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-06-19 12:31:12 -0700</bug_when>
    <thetext>Comment on attachment 343072
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:9
&gt;&gt; +        allocate a new structure for an indexing type change while initializing
&gt; 
&gt; Why are we doing an indexing type change? Why would that only effect sublasses?

For non-subclasses we have the structure cached on the global object so no allocation happens. We do an indexing type change because before the allocation profile is set up we don&apos;t know what values we are going to stick into the array.

It&apos;s possible we should be scanning the arguments to compute the indexing type we should use. This would avoid a late indexing type change and rewriting the butterfly.

&gt;&gt; Source/JavaScriptCore/runtime/JSArray.cpp:1411
&gt;&gt; +}
&gt; 
&gt; So much repeated code. Can we abstract this in some way?
&gt; 
&gt; Also, is inlining this really not profitable?

I guess we could use a template and have a functor that provides the arguments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1434490</commentid>
    <comment_count>5</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-06-19 12:31:33 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #3)
&gt; Comment on attachment 343072 [details]
&gt; Patch
&gt; 
&gt; Can you add tests for this?  r=me too.

This is fixing already broken tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1434500</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-06-19 12:40:44 -0700</bug_when>
    <thetext>(In reply to Keith Miller from comment #5)
&gt; (In reply to Mark Lam from comment #3)
&gt; &gt; Comment on attachment 343072 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Can you add tests for this?  r=me too.
&gt; 
&gt; This is fixing already broken tests.

nit: can you note in the ChangeLog that this is covered by existing tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1434502</commentid>
    <comment_count>7</comment_count>
      <attachid>343083</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-06-19 12:42:22 -0700</bug_when>
    <thetext>Created attachment 343083
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1434508</commentid>
    <comment_count>8</comment_count>
      <attachid>343087</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-06-19 12:52:26 -0700</bug_when>
    <thetext>Created attachment 343087
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1434511</commentid>
    <comment_count>9</comment_count>
      <attachid>343072</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-06-19 12:55:58 -0700</bug_when>
    <thetext>Comment on attachment 343072
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSArray.cpp:1411
&gt;&gt;&gt; +}
&gt;&gt; 
&gt;&gt; So much repeated code. Can we abstract this in some way?
&gt;&gt; 
&gt;&gt; Also, is inlining this really not profitable?
&gt; 
&gt; I guess we could use a template and have a functor that provides the arguments.

What about making this no longer inlined?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1434512</commentid>
    <comment_count>10</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-06-19 13:02:58 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #9)
&gt; Comment on attachment 343072 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=343072&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/JavaScriptCore/runtime/JSArray.cpp:1411
&gt; &gt;&gt;&gt; +}
&gt; &gt;&gt; 
&gt; &gt;&gt; So much repeated code. Can we abstract this in some way?
&gt; &gt;&gt; 
&gt; &gt;&gt; Also, is inlining this really not profitable?
&gt; &gt; 
&gt; &gt; I guess we could use a template and have a functor that provides the arguments.
&gt; 
&gt; What about making this no longer inlined?

Oh I doubt that matters since we don&apos;t really have information about the structure and the allocation methods were already out of line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1434514</commentid>
    <comment_count>11</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-06-19 13:09:22 -0700</bug_when>
    <thetext>Committed r232977: &lt;https://trac.webkit.org/changeset/232977&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1434515</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-06-19 13:10:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/41260811&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343072</attachid>
            <date>2018-06-19 12:15:38 -0700</date>
            <delta_ts>2018-06-19 12:42:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186812-20180619121537.patch</filename>
            <type>text/plain</type>
            <size>8085</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyOTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
M2EyNWRiYWJmYzFmMTJlZWQwNmRjNWFkZjg1MGYwODhhNTg0ZjRmLi5jMGQ0N2JkZWVmNjAxYTA2
YWNiOGNkMDc0ZTkwMWE5YzBkZDY2NmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxOC0wNi0xOSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBjb25zdHJ1Y3RBcnJheSB2YXJpYW50cyBzaG91bGQgdGFrZSB0aGUg
c2xvdyBwYXRoIGZvciBzdWJjbGFzc2VzIG9mIEFycmF5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY4MTIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIGEgY3Jhc2ggaW4gdGhl
IE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUgd2hlcmUgd2Ugd291bGQKKyAgICAgICAgYWxsb2Nh
dGUgYSBuZXcgc3RydWN0dXJlIGZvciBhbiBpbmRleGluZyB0eXBlIGNoYW5nZSB3aGlsZSBpbml0
aWFsaXppbmcKKyAgICAgICAgYSBzdWJjbGFzcyBvZiBBcnJheS4gU2luY2UgdGhlIG5ldyBhcnJh
eSBoYXNuJ3QgYmVlbiBmdWxseSBpbml0aWFsaXplZAorICAgICAgICBpZiB0aGUgR0MgcmFuIGl0
IHdvdWxkIHNlZSBnYXJiYWdlIGFuZCB3ZSBtaWdodCBjcmFzaC4KKworICAgICAgICAqIHJ1bnRp
bWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFycmF5KToKKyAgICAgICAg
KEpTQzo6Y29uc3RydWN0QXJyYXlOZWdhdGl2ZUluZGV4ZWQpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBcnJheS5oOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBcnJheSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OmNvbnN0cnVjdEFycmF5TmVnYXRpdmVJbmRleGVkKTogRGVsZXRlZC4KKwogMjAx
OC0wNi0xOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCBmaXggdGhlIGJ1aWxkLi4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuY3BwCmluZGV4IDAzOTJkMmEyYzg4Yjk4YWFiZTc5OTVlNzlkNDIyYjU4OTNm
NmZlMzcuLmVlYjYwZDg5YWNjNmMzNDI2NDYxZDJiMjU3YWJmZjUyMzY5NWFmNGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC0xMzM2LDQgKzEzMzYsNzgg
QEAgYm9vbCBKU0FycmF5Ojppc0l0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2JzZXJ2YWJsZSgp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK0pTQXJyYXkqIGNvbnN0cnVjdEFycmF5KEV4ZWNTdGF0
ZSogZXhlYywgU3RydWN0dXJlKiBhcnJheVN0cnVjdHVyZSwgY29uc3QgQXJnTGlzdCYgdmFsdWVz
KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gdmFs
dWVzLnNpemUoKTsKKyAgICBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlIHNjb3BlKHZtKTsKKwor
ICAgIC8vIEZJWE1FOiBXZSBvbmx5IG5lZWQgdGhpcyBmb3Igc3ViY2xhc3NlcyBvZiBBcnJheSBi
ZWNhdXNlIHdlIG1pZ2h0IG5lZWQgdG8gYWxsb2NhdGUgYSBuZXcgc3RydWN0dXJlIHRvIGNoYW5n
ZQorICAgIC8vIGluZGV4aW5nIHR5cGVzIHdoaWxlIGluaXRpYWxpemluZy4gSWYgdGhpcyB0cmln
Z2VyZWQgYSBHQyB0aGVuIHdlIG1pZ2h0IHNjYW4gb3VyIGN1cnJlbnRseSB1bmluaXRpYWxpemVk
CisgICAgLy8gYXJyYXkgYW5kIGNyYXNoLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg2ODExCisgICAgSlNBcnJheSogYXJyYXk7CisgICAgaWYgKGFycmF5U3RydWN0
dXJlLT5nbG9iYWxPYmplY3QoKS0+aXNPcmlnaW5hbEFycmF5U3RydWN0dXJlKGFycmF5U3RydWN0
dXJlKSkKKyAgICAgICAgYXJyYXkgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVz
dHJpY3RlZChzY29wZSwgYXJyYXlTdHJ1Y3R1cmUsIGxlbmd0aCk7CisgICAgZWxzZQorICAgICAg
ICBhcnJheSA9IEpTQXJyYXk6OmNyZWF0ZSh2bSwgYXJyYXlTdHJ1Y3R1cmUsIGxlbmd0aCk7CisK
KyAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHByb2JhYmx5IHRocm93IGFuIG91dCBvZiBtZW1vcnkg
ZXJyb3IgaGVyZSwgYnV0CisgICAgLy8gd2hlbiBtYWtpbmcgdGhpcyBjaGFuZ2Ugd2Ugc2hvdWxk
IGNoZWNrIHRoYXQgYWxsIGNsaWVudHMgb2YgdGhpcworICAgIC8vIGZ1bmN0aW9uIHdpbGwgY29y
cmVjdGx5IGhhbmRsZSBhbiBleGNlcHRpb24gYmVpbmcgdGhyb3duIGZyb20gaGVyZS4KKyAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5Nzg2CisgICAgUkVM
RUFTRV9BU1NFUlQoYXJyYXkpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKQorICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHNjb3BlLCBpLCB2YWx1ZXMu
YXQoaSkpOworICAgIHJldHVybiBhcnJheTsKK30KKworSlNBcnJheSogY29uc3RydWN0QXJyYXko
RXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIGFycmF5U3RydWN0dXJlLCBjb25zdCBKU1ZhbHVl
KiB2YWx1ZXMsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUgc2NvcGUodm0pOworICAgIC8vIEZJWE1FOiBX
ZSBvbmx5IG5lZWQgdGhpcyBmb3Igc3ViY2xhc3NlcyBvZiBBcnJheSBiZWNhdXNlIHdlIG1pZ2h0
IG5lZWQgdG8gYWxsb2NhdGUgYSBuZXcgc3RydWN0dXJlIHRvIGNoYW5nZQorICAgIC8vIGluZGV4
aW5nIHR5cGVzIHdoaWxlIGluaXRpYWxpemluZy4gSWYgdGhpcyB0cmlnZ2VyZWQgYSBHQyB0aGVu
IHdlIG1pZ2h0IHNjYW4gb3VyIGN1cnJlbnRseSB1bmluaXRpYWxpemVkCisgICAgLy8gYXJyYXkg
YW5kIGNyYXNoLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2ODEx
CisgICAgSlNBcnJheSogYXJyYXk7CisgICAgaWYgKGFycmF5U3RydWN0dXJlLT5nbG9iYWxPYmpl
Y3QoKS0+aXNPcmlnaW5hbEFycmF5U3RydWN0dXJlKGFycmF5U3RydWN0dXJlKSkKKyAgICAgICAg
YXJyYXkgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVzdHJpY3RlZChzY29wZSwg
YXJyYXlTdHJ1Y3R1cmUsIGxlbmd0aCk7CisgICAgZWxzZQorICAgICAgICBhcnJheSA9IEpTQXJy
YXk6OmNyZWF0ZSh2bSwgYXJyYXlTdHJ1Y3R1cmUsIGxlbmd0aCk7CisKKyAgICAvLyBGSVhNRTog
d2Ugc2hvdWxkIHByb2JhYmx5IHRocm93IGFuIG91dCBvZiBtZW1vcnkgZXJyb3IgaGVyZSwgYnV0
CisgICAgLy8gd2hlbiBtYWtpbmcgdGhpcyBjaGFuZ2Ugd2Ugc2hvdWxkIGNoZWNrIHRoYXQgYWxs
IGNsaWVudHMgb2YgdGhpcworICAgIC8vIGZ1bmN0aW9uIHdpbGwgY29ycmVjdGx5IGhhbmRsZSBh
biBleGNlcHRpb24gYmVpbmcgdGhyb3duIGZyb20gaGVyZS4KKyAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5Nzg2CisgICAgUkVMRUFTRV9BU1NFUlQoYXJy
YXkpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAg
ICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHNjb3BlLCBpLCB2YWx1ZXNbaV0pOworICAgIHJldHVy
biBhcnJheTsKK30KKworSlNBcnJheSogY29uc3RydWN0QXJyYXlOZWdhdGl2ZUluZGV4ZWQoRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIGFycmF5U3RydWN0dXJlLCBjb25zdCBKU1ZhbHVlKiB2
YWx1ZXMsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUgc2NvcGUodm0pOworICAgIC8vIEZJWE1FOiBXZSBv
bmx5IG5lZWQgdGhpcyBmb3Igc3ViY2xhc3NlcyBvZiBBcnJheSBiZWNhdXNlIHdlIG1pZ2h0IG5l
ZWQgdG8gYWxsb2NhdGUgYSBuZXcgc3RydWN0dXJlIHRvIGNoYW5nZQorICAgIC8vIGluZGV4aW5n
IHR5cGVzIHdoaWxlIGluaXRpYWxpemluZy4gSWYgdGhpcyB0cmlnZ2VyZWQgYSBHQyB0aGVuIHdl
IG1pZ2h0IHNjYW4gb3VyIGN1cnJlbnRseSB1bmluaXRpYWxpemVkCisgICAgLy8gYXJyYXkgYW5k
IGNyYXNoLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2ODExCisg
ICAgSlNBcnJheSogYXJyYXk7CisgICAgaWYgKGFycmF5U3RydWN0dXJlLT5nbG9iYWxPYmplY3Qo
KS0+aXNPcmlnaW5hbEFycmF5U3RydWN0dXJlKGFycmF5U3RydWN0dXJlKSkKKyAgICAgICAgYXJy
YXkgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVzdHJpY3RlZChzY29wZSwgYXJy
YXlTdHJ1Y3R1cmUsIGxlbmd0aCk7CisgICAgZWxzZQorICAgICAgICBhcnJheSA9IEpTQXJyYXk6
OmNyZWF0ZSh2bSwgYXJyYXlTdHJ1Y3R1cmUsIGxlbmd0aCk7CisKKyAgICAvLyBGSVhNRTogd2Ug
c2hvdWxkIHByb2JhYmx5IHRocm93IGFuIG91dCBvZiBtZW1vcnkgZXJyb3IgaGVyZSwgYnV0Cisg
ICAgLy8gd2hlbiBtYWtpbmcgdGhpcyBjaGFuZ2Ugd2Ugc2hvdWxkIGNoZWNrIHRoYXQgYWxsIGNs
aWVudHMgb2YgdGhpcworICAgIC8vIGZ1bmN0aW9uIHdpbGwgY29ycmVjdGx5IGhhbmRsZSBhbiBl
eGNlcHRpb24gYmVpbmcgdGhyb3duIGZyb20gaGVyZS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5Nzg2CisgICAgUkVMRUFTRV9BU1NFUlQoYXJyYXkp
OworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0aCk7ICsr
aSkKKyAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRleChzY29wZSwgaSwgdmFsdWVzWy1pXSk7
CisgICAgcmV0dXJuIGFycmF5OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAppbmRleCA2MDJmMmEwYTA3MjlhMWQxYTVkMDBiZDk2
MmJiM2NhMmM0ZTI5NTljLi5kZmM0OWNhOGFmNjk2Mjc3OGNiODJlYmQzMjgwYzEzNjVhNTEyNjE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCkBAIC0zMDMsNTYgKzMw
Myw4IEBAIGlubGluZSBib29sIGlzSlNBcnJheShKU0NlbGwqIGNlbGwpCiAKIGlubGluZSBib29s
IGlzSlNBcnJheShKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYgaXNKU0FycmF5KHYu
YXNDZWxsKCkpOyB9CiAKLWlubGluZSBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheShFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZSogYXJyYXlTdHJ1Y3R1cmUsIGNvbnN0IEFyZ0xpc3QmIHZhbHVlcykK
LXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHZhbHVl
cy5zaXplKCk7Ci0gICAgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSBzY29wZSh2bSk7Ci0gICAg
SlNBcnJheSogYXJyYXkgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVzdHJpY3Rl
ZChzY29wZSwgYXJyYXlTdHJ1Y3R1cmUsIGxlbmd0aCk7Ci0KLSAgICAvLyBGSVhNRTogd2Ugc2hv
dWxkIHByb2JhYmx5IHRocm93IGFuIG91dCBvZiBtZW1vcnkgZXJyb3IgaGVyZSwgYnV0Ci0gICAg
Ly8gd2hlbiBtYWtpbmcgdGhpcyBjaGFuZ2Ugd2Ugc2hvdWxkIGNoZWNrIHRoYXQgYWxsIGNsaWVu
dHMgb2YgdGhpcwotICAgIC8vIGZ1bmN0aW9uIHdpbGwgY29ycmVjdGx5IGhhbmRsZSBhbiBleGNl
cHRpb24gYmVpbmcgdGhyb3duIGZyb20gaGVyZS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5Nzg2Ci0gICAgUkVMRUFTRV9BU1NFUlQoYXJyYXkpOwot
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICBhcnJh
eS0+aW5pdGlhbGl6ZUluZGV4KHNjb3BlLCBpLCB2YWx1ZXMuYXQoaSkpOwotICAgIHJldHVybiBh
cnJheTsKLX0KLSAgICAKLWlubGluZSBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheShFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZSogYXJyYXlTdHJ1Y3R1cmUsIGNvbnN0IEpTVmFsdWUqIHZhbHVlcywg
dW5zaWduZWQgbGVuZ3RoKQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgT2JqZWN0
SW5pdGlhbGl6YXRpb25TY29wZSBzY29wZSh2bSk7Ci0gICAgSlNBcnJheSogYXJyYXkgPSBKU0Fy
cmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVzdHJpY3RlZChzY29wZSwgYXJyYXlTdHJ1Y3R1
cmUsIGxlbmd0aCk7Ci0KLSAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHByb2JhYmx5IHRocm93IGFu
IG91dCBvZiBtZW1vcnkgZXJyb3IgaGVyZSwgYnV0Ci0gICAgLy8gd2hlbiBtYWtpbmcgdGhpcyBj
aGFuZ2Ugd2Ugc2hvdWxkIGNoZWNrIHRoYXQgYWxsIGNsaWVudHMgb2YgdGhpcwotICAgIC8vIGZ1
bmN0aW9uIHdpbGwgY29ycmVjdGx5IGhhbmRsZSBhbiBleGNlcHRpb24gYmVpbmcgdGhyb3duIGZy
b20gaGVyZS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY5Nzg2Ci0gICAgUkVMRUFTRV9BU1NFUlQoYXJyYXkpOwotCi0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHNj
b3BlLCBpLCB2YWx1ZXNbaV0pOwotICAgIHJldHVybiBhcnJheTsKLX0KLQotaW5saW5lIEpTQXJy
YXkqIGNvbnN0cnVjdEFycmF5TmVnYXRpdmVJbmRleGVkKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0
dXJlKiBhcnJheVN0cnVjdHVyZSwgY29uc3QgSlNWYWx1ZSogdmFsdWVzLCB1bnNpZ25lZCBsZW5n
dGgpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBPYmplY3RJbml0aWFsaXphdGlv
blNjb3BlIHNjb3BlKHZtKTsKLSAgICBKU0FycmF5KiBhcnJheSA9IEpTQXJyYXk6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWRSZXN0cmljdGVkKHNjb3BlLCBhcnJheVN0cnVjdHVyZSwgbGVuZ3RoKTsK
LQotICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgcHJvYmFibHkgdGhyb3cgYW4gb3V0IG9mIG1lbW9y
eSBlcnJvciBoZXJlLCBidXQKLSAgICAvLyB3aGVuIG1ha2luZyB0aGlzIGNoYW5nZSB3ZSBzaG91
bGQgY2hlY2sgdGhhdCBhbGwgY2xpZW50cyBvZiB0aGlzCi0gICAgLy8gZnVuY3Rpb24gd2lsbCBj
b3JyZWN0bHkgaGFuZGxlIGFuIGV4Y2VwdGlvbiBiZWluZyB0aHJvd24gZnJvbSBoZXJlLgotICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3ODYKLSAgICBS
RUxFQVNFX0FTU0VSVChhcnJheSk7Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHN0YXRpY19j
YXN0PGludD4obGVuZ3RoKTsgKytpKQotICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHNj
b3BlLCBpLCB2YWx1ZXNbLWldKTsKLSAgICByZXR1cm4gYXJyYXk7Ci19CitKU0FycmF5KiBjb25z
dHJ1Y3RBcnJheShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBjb25zdCBBcmdMaXN0JiB2YWx1ZXMp
OworSlNBcnJheSogY29uc3RydWN0QXJyYXkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgY29uc3Qg
SlNWYWx1ZSogdmFsdWVzLCB1bnNpZ25lZCBsZW5ndGgpOworSlNBcnJheSogY29uc3RydWN0QXJy
YXlOZWdhdGl2ZUluZGV4ZWQoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgY29uc3QgSlNWYWx1ZSog
dmFsdWVzLCB1bnNpZ25lZCBsZW5ndGgpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343083</attachid>
            <date>2018-06-19 12:42:22 -0700</date>
            <delta_ts>2018-06-19 12:52:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186812-20180619124221.patch</filename>
            <type>text/plain</type>
            <size>6687</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyOTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
M2EyNWRiYWJmYzFmMTJlZWQwNmRjNWFkZjg1MGYwODhhNTg0ZjRmLi4zZjJjNDU1NzNhNzFjMjI1
NGY4OThmOTAxNTllNDFmYTE5ZDhkM2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxOC0wNi0xOSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBjb25zdHJ1Y3RBcnJheSB2YXJpYW50cyBzaG91bGQgdGFrZSB0aGUg
c2xvdyBwYXRoIGZvciBzdWJjbGFzc2VzIG9mIEFycmF5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY4MTIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIGEgY3Jhc2hpbmcgdGVz
dCBpbiBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlIHdoZXJlIHdlIHdvdWxkCisgICAgICAgIGFs
bG9jYXRlIGEgbmV3IHN0cnVjdHVyZSBmb3IgYW4gaW5kZXhpbmcgdHlwZSBjaGFuZ2Ugd2hpbGUg
aW5pdGlhbGl6aW5nCisgICAgICAgIGEgc3ViY2xhc3Mgb2YgQXJyYXkuIFNpbmNlIHRoZSBuZXcg
YXJyYXkgaGFzbid0IGJlZW4gZnVsbHkgaW5pdGlhbGl6ZWQKKyAgICAgICAgaWYgdGhlIEdDIHJh
biBpdCB3b3VsZCBzZWUgZ2FyYmFnZSBhbmQgd2UgbWlnaHQgY3Jhc2guCisKKyAgICAgICAgKiBy
dW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBcnJheSk6CisgICAg
ICAgIChKU0M6OmNvbnN0cnVjdEFycmF5TmVnYXRpdmVJbmRleGVkKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0QXJyYXkpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBcnJheU5lZ2F0aXZlSW5kZXhlZCk6IERlbGV0ZWQuCisK
IDIwMTgtMDYtMTggIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgZml4IHRoZSBidWlsZC4uLgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmNwcAppbmRleCAwMzkyZDJhMmM4OGI5OGFhYmU3OTk1ZTc5ZDQyMmI1
ODkzZjZmZTM3Li44M2I1MTQ1ZjJhYjAxNzZhZjQzZGI5YTU4ZjQyNzVhMzM3MTAyNzBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMTMzNiw0ICsxMzM2
LDU3IEBAIGJvb2wgSlNBcnJheTo6aXNJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFi
bGUoKQogICAgIHJldHVybiB0cnVlOwogfQogCitpbmxpbmUgSlNBcnJheSogY29uc3RydWN0QXJy
YXkoT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSYgc2NvcGUsIFN0cnVjdHVyZSogYXJyYXlTdHJ1
Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICAvLyBGSVhNRTogV2Ugb25seSBuZWVkIHRo
aXMgZm9yIHN1YmNsYXNzZXMgb2YgQXJyYXkgYmVjYXVzZSB3ZSBtaWdodCBuZWVkIHRvIGFsbG9j
YXRlIGEgbmV3IHN0cnVjdHVyZSB0byBjaGFuZ2UKKyAgICAvLyBpbmRleGluZyB0eXBlcyB3aGls
ZSBpbml0aWFsaXppbmcuIElmIHRoaXMgdHJpZ2dlcmVkIGEgR0MgdGhlbiB3ZSBtaWdodCBzY2Fu
IG91ciBjdXJyZW50bHkgdW5pbml0aWFsaXplZAorICAgIC8vIGFycmF5IGFuZCBjcmFzaC4gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjgxMQorICAgIEpTQXJyYXkq
IGFycmF5OworICAgIGlmIChhcnJheVN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCktPmlzT3JpZ2lu
YWxBcnJheVN0cnVjdHVyZShhcnJheVN0cnVjdHVyZSkpCisgICAgICAgIGFycmF5ID0gSlNBcnJh
eTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlc3RyaWN0ZWQoc2NvcGUsIGFycmF5U3RydWN0dXJl
LCBsZW5ndGgpOworICAgIGVsc2UKKyAgICAgICAgYXJyYXkgPSBKU0FycmF5OjpjcmVhdGUoc2Nv
cGUudm0oKSwgYXJyYXlTdHJ1Y3R1cmUsIGxlbmd0aCk7CisKKyAgICAvLyBGSVhNRTogd2Ugc2hv
dWxkIHByb2JhYmx5IHRocm93IGFuIG91dCBvZiBtZW1vcnkgZXJyb3IgaGVyZSwgYnV0CisgICAg
Ly8gd2hlbiBtYWtpbmcgdGhpcyBjaGFuZ2Ugd2Ugc2hvdWxkIGNoZWNrIHRoYXQgYWxsIGNsaWVu
dHMgb2YgdGhpcworICAgIC8vIGZ1bmN0aW9uIHdpbGwgY29ycmVjdGx5IGhhbmRsZSBhbiBleGNl
cHRpb24gYmVpbmcgdGhyb3duIGZyb20gaGVyZS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5Nzg2CisgICAgUkVMRUFTRV9BU1NFUlQoYXJyYXkpOwor
ICAgIHJldHVybiBhcnJheTsKK30KKworSlNBcnJheSogY29uc3RydWN0QXJyYXkoRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1cmUqIGFycmF5U3RydWN0dXJlLCBjb25zdCBBcmdMaXN0JiB2YWx1ZXMp
Cit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSB2YWx1
ZXMuc2l6ZSgpOworICAgIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUgc2NvcGUodm0pOworCisg
ICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RBcnJheShzY29wZSwgYXJyYXlTdHJ1Y3R1cmUs
IGxlbmd0aCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAg
ICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHNjb3BlLCBpLCB2YWx1ZXMuYXQoaSkpOworICAg
IHJldHVybiBhcnJheTsKK30KKworSlNBcnJheSogY29uc3RydWN0QXJyYXkoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmUqIGFycmF5U3RydWN0dXJlLCBjb25zdCBKU1ZhbHVlKiB2YWx1ZXMsIHVu
c2lnbmVkIGxlbmd0aCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE9iamVjdElu
aXRpYWxpemF0aW9uU2NvcGUgc2NvcGUodm0pOworCisgICAgSlNBcnJheSogYXJyYXkgPSBjb25z
dHJ1Y3RBcnJheShzY29wZSwgYXJyYXlTdHJ1Y3R1cmUsIGxlbmd0aCk7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUlu
ZGV4KHNjb3BlLCBpLCB2YWx1ZXNbaV0pOworICAgIHJldHVybiBhcnJheTsKK30KKworSlNBcnJh
eSogY29uc3RydWN0QXJyYXlOZWdhdGl2ZUluZGV4ZWQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmUqIGFycmF5U3RydWN0dXJlLCBjb25zdCBKU1ZhbHVlKiB2YWx1ZXMsIHVuc2lnbmVkIGxlbmd0
aCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE9iamVjdEluaXRpYWxpemF0aW9u
U2NvcGUgc2NvcGUodm0pOworCisgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RBcnJheShz
Y29wZSwgYXJyYXlTdHJ1Y3R1cmUsIGxlbmd0aCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBz
dGF0aWNfY2FzdDxpbnQ+KGxlbmd0aCk7ICsraSkKKyAgICAgICAgYXJyYXktPmluaXRpYWxpemVJ
bmRleChzY29wZSwgaSwgdmFsdWVzWy1pXSk7CisgICAgcmV0dXJuIGFycmF5OworfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAppbmRl
eCA2MDJmMmEwYTA3MjlhMWQxYTVkMDBiZDk2MmJiM2NhMmM0ZTI5NTljLi5kZmM0OWNhOGFmNjk2
Mjc3OGNiODJlYmQzMjgwYzEzNjVhNTEyNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheS5oCkBAIC0zMDMsNTYgKzMwMyw4IEBAIGlubGluZSBib29sIGlzSlNBcnJheShK
U0NlbGwqIGNlbGwpCiAKIGlubGluZSBib29sIGlzSlNBcnJheShKU1ZhbHVlIHYpIHsgcmV0dXJu
IHYuaXNDZWxsKCkgJiYgaXNKU0FycmF5KHYuYXNDZWxsKCkpOyB9CiAKLWlubGluZSBKU0FycmF5
KiBjb25zdHJ1Y3RBcnJheShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogYXJyYXlTdHJ1Y3R1
cmUsIGNvbnN0IEFyZ0xpc3QmIHZhbHVlcykKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwot
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHZhbHVlcy5zaXplKCk7Ci0gICAgT2JqZWN0SW5pdGlhbGl6
YXRpb25TY29wZSBzY29wZSh2bSk7Ci0gICAgSlNBcnJheSogYXJyYXkgPSBKU0FycmF5Ojp0cnlD
cmVhdGVVbmluaXRpYWxpemVkUmVzdHJpY3RlZChzY29wZSwgYXJyYXlTdHJ1Y3R1cmUsIGxlbmd0
aCk7Ci0KLSAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHByb2JhYmx5IHRocm93IGFuIG91dCBvZiBt
ZW1vcnkgZXJyb3IgaGVyZSwgYnV0Ci0gICAgLy8gd2hlbiBtYWtpbmcgdGhpcyBjaGFuZ2Ugd2Ug
c2hvdWxkIGNoZWNrIHRoYXQgYWxsIGNsaWVudHMgb2YgdGhpcwotICAgIC8vIGZ1bmN0aW9uIHdp
bGwgY29ycmVjdGx5IGhhbmRsZSBhbiBleGNlcHRpb24gYmVpbmcgdGhyb3duIGZyb20gaGVyZS4K
LSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5Nzg2Ci0g
ICAgUkVMRUFTRV9BU1NFUlQoYXJyYXkpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKQotICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHNjb3BlLCBpLCB2
YWx1ZXMuYXQoaSkpOwotICAgIHJldHVybiBhcnJheTsKLX0KLSAgICAKLWlubGluZSBKU0FycmF5
KiBjb25zdHJ1Y3RBcnJheShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogYXJyYXlTdHJ1Y3R1
cmUsIGNvbnN0IEpTVmFsdWUqIHZhbHVlcywgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7Ci0gICAgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSBzY29wZSh2bSk7
Ci0gICAgSlNBcnJheSogYXJyYXkgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVz
dHJpY3RlZChzY29wZSwgYXJyYXlTdHJ1Y3R1cmUsIGxlbmd0aCk7Ci0KLSAgICAvLyBGSVhNRTog
d2Ugc2hvdWxkIHByb2JhYmx5IHRocm93IGFuIG91dCBvZiBtZW1vcnkgZXJyb3IgaGVyZSwgYnV0
Ci0gICAgLy8gd2hlbiBtYWtpbmcgdGhpcyBjaGFuZ2Ugd2Ugc2hvdWxkIGNoZWNrIHRoYXQgYWxs
IGNsaWVudHMgb2YgdGhpcwotICAgIC8vIGZ1bmN0aW9uIHdpbGwgY29ycmVjdGx5IGhhbmRsZSBh
biBleGNlcHRpb24gYmVpbmcgdGhyb3duIGZyb20gaGVyZS4KLSAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5Nzg2Ci0gICAgUkVMRUFTRV9BU1NFUlQoYXJy
YXkpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAg
ICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHNjb3BlLCBpLCB2YWx1ZXNbaV0pOwotICAgIHJldHVy
biBhcnJheTsKLX0KLQotaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5TmVnYXRpdmVJbmRl
eGVkKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBhcnJheVN0cnVjdHVyZSwgY29uc3QgSlNW
YWx1ZSogdmFsdWVzLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKLSAgICBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlIHNjb3BlKHZtKTsKLSAgICBKU0FycmF5
KiBhcnJheSA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZXN0cmljdGVkKHNjb3Bl
LCBhcnJheVN0cnVjdHVyZSwgbGVuZ3RoKTsKLQotICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgcHJv
YmFibHkgdGhyb3cgYW4gb3V0IG9mIG1lbW9yeSBlcnJvciBoZXJlLCBidXQKLSAgICAvLyB3aGVu
IG1ha2luZyB0aGlzIGNoYW5nZSB3ZSBzaG91bGQgY2hlY2sgdGhhdCBhbGwgY2xpZW50cyBvZiB0
aGlzCi0gICAgLy8gZnVuY3Rpb24gd2lsbCBjb3JyZWN0bHkgaGFuZGxlIGFuIGV4Y2VwdGlvbiBi
ZWluZyB0aHJvd24gZnJvbSBoZXJlLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjk3ODYKLSAgICBSRUxFQVNFX0FTU0VSVChhcnJheSk7Ci0KLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PGludD4obGVuZ3RoKTsgKytpKQotICAgICAg
ICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHNjb3BlLCBpLCB2YWx1ZXNbLWldKTsKLSAgICByZXR1
cm4gYXJyYXk7Ci19CitKU0FycmF5KiBjb25zdHJ1Y3RBcnJheShFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmUqLCBjb25zdCBBcmdMaXN0JiB2YWx1ZXMpOworSlNBcnJheSogY29uc3RydWN0QXJyYXkoRXhl
Y1N0YXRlKiwgU3RydWN0dXJlKiwgY29uc3QgSlNWYWx1ZSogdmFsdWVzLCB1bnNpZ25lZCBsZW5n
dGgpOworSlNBcnJheSogY29uc3RydWN0QXJyYXlOZWdhdGl2ZUluZGV4ZWQoRXhlY1N0YXRlKiwg
U3RydWN0dXJlKiwgY29uc3QgSlNWYWx1ZSogdmFsdWVzLCB1bnNpZ25lZCBsZW5ndGgpOwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343087</attachid>
            <date>2018-06-19 12:52:26 -0700</date>
            <delta_ts>2018-06-19 12:52:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186812-20180619125225.patch</filename>
            <type>text/plain</type>
            <size>6741</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyOTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
M2EyNWRiYWJmYzFmMTJlZWQwNmRjNWFkZjg1MGYwODhhNTg0ZjRmLi4zZjJjNDU1NzNhNzFjMjI1
NGY4OThmOTAxNTllNDFmYTE5ZDhkM2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxOC0wNi0xOSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBjb25zdHJ1Y3RBcnJheSB2YXJpYW50cyBzaG91bGQgdGFrZSB0aGUg
c2xvdyBwYXRoIGZvciBzdWJjbGFzc2VzIG9mIEFycmF5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY4MTIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIGEgY3Jhc2hpbmcgdGVz
dCBpbiBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlIHdoZXJlIHdlIHdvdWxkCisgICAgICAgIGFs
bG9jYXRlIGEgbmV3IHN0cnVjdHVyZSBmb3IgYW4gaW5kZXhpbmcgdHlwZSBjaGFuZ2Ugd2hpbGUg
aW5pdGlhbGl6aW5nCisgICAgICAgIGEgc3ViY2xhc3Mgb2YgQXJyYXkuIFNpbmNlIHRoZSBuZXcg
YXJyYXkgaGFzbid0IGJlZW4gZnVsbHkgaW5pdGlhbGl6ZWQKKyAgICAgICAgaWYgdGhlIEdDIHJh
biBpdCB3b3VsZCBzZWUgZ2FyYmFnZSBhbmQgd2UgbWlnaHQgY3Jhc2guCisKKyAgICAgICAgKiBy
dW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBcnJheSk6CisgICAg
ICAgIChKU0M6OmNvbnN0cnVjdEFycmF5TmVnYXRpdmVJbmRleGVkKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0QXJyYXkpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBcnJheU5lZ2F0aXZlSW5kZXhlZCk6IERlbGV0ZWQuCisK
IDIwMTgtMDYtMTggIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgZml4IHRoZSBidWlsZC4uLgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmNwcAppbmRleCAwMzkyZDJhMmM4OGI5OGFhYmU3OTk1ZTc5ZDQyMmI1
ODkzZjZmZTM3Li44M2I1MTQ1ZjJhYjAxNzZhZjQzZGI5YTU4ZjQyNzVhMzM3MTAyNzBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMTMzNiw0ICsxMzM2
LDU3IEBAIGJvb2wgSlNBcnJheTo6aXNJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFi
bGUoKQogICAgIHJldHVybiB0cnVlOwogfQogCitpbmxpbmUgSlNBcnJheSogY29uc3RydWN0QXJy
YXkoT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSYgc2NvcGUsIFN0cnVjdHVyZSogYXJyYXlTdHJ1
Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICAvLyBGSVhNRTogV2Ugb25seSBuZWVkIHRo
aXMgZm9yIHN1YmNsYXNzZXMgb2YgQXJyYXkgYmVjYXVzZSB3ZSBtaWdodCBuZWVkIHRvIGFsbG9j
YXRlIGEgbmV3IHN0cnVjdHVyZSB0byBjaGFuZ2UKKyAgICAvLyBpbmRleGluZyB0eXBlcyB3aGls
ZSBpbml0aWFsaXppbmcuIElmIHRoaXMgdHJpZ2dlcmVkIGEgR0MgdGhlbiB3ZSBtaWdodCBzY2Fu
IG91ciBjdXJyZW50bHkgdW5pbml0aWFsaXplZAorICAgIC8vIGFycmF5IGFuZCBjcmFzaC4gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjgxMQorICAgIEpTQXJyYXkq
IGFycmF5OworICAgIGlmIChhcnJheVN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCktPmlzT3JpZ2lu
YWxBcnJheVN0cnVjdHVyZShhcnJheVN0cnVjdHVyZSkpCisgICAgICAgIGFycmF5ID0gSlNBcnJh
eTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlc3RyaWN0ZWQoc2NvcGUsIGFycmF5U3RydWN0dXJl
LCBsZW5ndGgpOworICAgIGVsc2UKKyAgICAgICAgYXJyYXkgPSBKU0FycmF5OjpjcmVhdGUoc2Nv
cGUudm0oKSwgYXJyYXlTdHJ1Y3R1cmUsIGxlbmd0aCk7CisKKyAgICAvLyBGSVhNRTogd2Ugc2hv
dWxkIHByb2JhYmx5IHRocm93IGFuIG91dCBvZiBtZW1vcnkgZXJyb3IgaGVyZSwgYnV0CisgICAg
Ly8gd2hlbiBtYWtpbmcgdGhpcyBjaGFuZ2Ugd2Ugc2hvdWxkIGNoZWNrIHRoYXQgYWxsIGNsaWVu
dHMgb2YgdGhpcworICAgIC8vIGZ1bmN0aW9uIHdpbGwgY29ycmVjdGx5IGhhbmRsZSBhbiBleGNl
cHRpb24gYmVpbmcgdGhyb3duIGZyb20gaGVyZS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5Nzg2CisgICAgUkVMRUFTRV9BU1NFUlQoYXJyYXkpOwor
ICAgIHJldHVybiBhcnJheTsKK30KKworSlNBcnJheSogY29uc3RydWN0QXJyYXkoRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1cmUqIGFycmF5U3RydWN0dXJlLCBjb25zdCBBcmdMaXN0JiB2YWx1ZXMp
Cit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSB2YWx1
ZXMuc2l6ZSgpOworICAgIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUgc2NvcGUodm0pOworCisg
ICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RBcnJheShzY29wZSwgYXJyYXlTdHJ1Y3R1cmUs
IGxlbmd0aCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAg
ICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHNjb3BlLCBpLCB2YWx1ZXMuYXQoaSkpOworICAg
IHJldHVybiBhcnJheTsKK30KKworSlNBcnJheSogY29uc3RydWN0QXJyYXkoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmUqIGFycmF5U3RydWN0dXJlLCBjb25zdCBKU1ZhbHVlKiB2YWx1ZXMsIHVu
c2lnbmVkIGxlbmd0aCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE9iamVjdElu
aXRpYWxpemF0aW9uU2NvcGUgc2NvcGUodm0pOworCisgICAgSlNBcnJheSogYXJyYXkgPSBjb25z
dHJ1Y3RBcnJheShzY29wZSwgYXJyYXlTdHJ1Y3R1cmUsIGxlbmd0aCk7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUlu
ZGV4KHNjb3BlLCBpLCB2YWx1ZXNbaV0pOworICAgIHJldHVybiBhcnJheTsKK30KKworSlNBcnJh
eSogY29uc3RydWN0QXJyYXlOZWdhdGl2ZUluZGV4ZWQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmUqIGFycmF5U3RydWN0dXJlLCBjb25zdCBKU1ZhbHVlKiB2YWx1ZXMsIHVuc2lnbmVkIGxlbmd0
aCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE9iamVjdEluaXRpYWxpemF0aW9u
U2NvcGUgc2NvcGUodm0pOworCisgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RBcnJheShz
Y29wZSwgYXJyYXlTdHJ1Y3R1cmUsIGxlbmd0aCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBz
dGF0aWNfY2FzdDxpbnQ+KGxlbmd0aCk7ICsraSkKKyAgICAgICAgYXJyYXktPmluaXRpYWxpemVJ
bmRleChzY29wZSwgaSwgdmFsdWVzWy1pXSk7CisgICAgcmV0dXJuIGFycmF5OworfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAppbmRl
eCA2MDJmMmEwYTA3MjlhMWQxYTVkMDBiZDk2MmJiM2NhMmM0ZTI5NTljLi44YWUwZjRlZGVjOGEz
ZWQ2ZWQwNjkwMjczODI2N2E2YmMwMjQ1ODI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheS5oCkBAIC0zMDMsNTYgKzMwMyw4IEBAIGlubGluZSBib29sIGlzSlNBcnJheShK
U0NlbGwqIGNlbGwpCiAKIGlubGluZSBib29sIGlzSlNBcnJheShKU1ZhbHVlIHYpIHsgcmV0dXJu
IHYuaXNDZWxsKCkgJiYgaXNKU0FycmF5KHYuYXNDZWxsKCkpOyB9CiAKLWlubGluZSBKU0FycmF5
KiBjb25zdHJ1Y3RBcnJheShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogYXJyYXlTdHJ1Y3R1
cmUsIGNvbnN0IEFyZ0xpc3QmIHZhbHVlcykKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwot
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHZhbHVlcy5zaXplKCk7Ci0gICAgT2JqZWN0SW5pdGlhbGl6
YXRpb25TY29wZSBzY29wZSh2bSk7Ci0gICAgSlNBcnJheSogYXJyYXkgPSBKU0FycmF5Ojp0cnlD
cmVhdGVVbmluaXRpYWxpemVkUmVzdHJpY3RlZChzY29wZSwgYXJyYXlTdHJ1Y3R1cmUsIGxlbmd0
aCk7Ci0KLSAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHByb2JhYmx5IHRocm93IGFuIG91dCBvZiBt
ZW1vcnkgZXJyb3IgaGVyZSwgYnV0Ci0gICAgLy8gd2hlbiBtYWtpbmcgdGhpcyBjaGFuZ2Ugd2Ug
c2hvdWxkIGNoZWNrIHRoYXQgYWxsIGNsaWVudHMgb2YgdGhpcwotICAgIC8vIGZ1bmN0aW9uIHdp
bGwgY29ycmVjdGx5IGhhbmRsZSBhbiBleGNlcHRpb24gYmVpbmcgdGhyb3duIGZyb20gaGVyZS4K
LSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5Nzg2Ci0g
ICAgUkVMRUFTRV9BU1NFUlQoYXJyYXkpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKQotICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHNjb3BlLCBpLCB2
YWx1ZXMuYXQoaSkpOwotICAgIHJldHVybiBhcnJheTsKLX0KLSAgICAKLWlubGluZSBKU0FycmF5
KiBjb25zdHJ1Y3RBcnJheShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogYXJyYXlTdHJ1Y3R1
cmUsIGNvbnN0IEpTVmFsdWUqIHZhbHVlcywgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7Ci0gICAgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSBzY29wZSh2bSk7
Ci0gICAgSlNBcnJheSogYXJyYXkgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVz
dHJpY3RlZChzY29wZSwgYXJyYXlTdHJ1Y3R1cmUsIGxlbmd0aCk7Ci0KLSAgICAvLyBGSVhNRTog
d2Ugc2hvdWxkIHByb2JhYmx5IHRocm93IGFuIG91dCBvZiBtZW1vcnkgZXJyb3IgaGVyZSwgYnV0
Ci0gICAgLy8gd2hlbiBtYWtpbmcgdGhpcyBjaGFuZ2Ugd2Ugc2hvdWxkIGNoZWNrIHRoYXQgYWxs
IGNsaWVudHMgb2YgdGhpcwotICAgIC8vIGZ1bmN0aW9uIHdpbGwgY29ycmVjdGx5IGhhbmRsZSBh
biBleGNlcHRpb24gYmVpbmcgdGhyb3duIGZyb20gaGVyZS4KLSAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5Nzg2Ci0gICAgUkVMRUFTRV9BU1NFUlQoYXJy
YXkpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAg
ICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHNjb3BlLCBpLCB2YWx1ZXNbaV0pOwotICAgIHJldHVy
biBhcnJheTsKLX0KLQotaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5TmVnYXRpdmVJbmRl
eGVkKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBhcnJheVN0cnVjdHVyZSwgY29uc3QgSlNW
YWx1ZSogdmFsdWVzLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKLSAgICBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlIHNjb3BlKHZtKTsKLSAgICBKU0FycmF5
KiBhcnJheSA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZXN0cmljdGVkKHNjb3Bl
LCBhcnJheVN0cnVjdHVyZSwgbGVuZ3RoKTsKLQotICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgcHJv
YmFibHkgdGhyb3cgYW4gb3V0IG9mIG1lbW9yeSBlcnJvciBoZXJlLCBidXQKLSAgICAvLyB3aGVu
IG1ha2luZyB0aGlzIGNoYW5nZSB3ZSBzaG91bGQgY2hlY2sgdGhhdCBhbGwgY2xpZW50cyBvZiB0
aGlzCi0gICAgLy8gZnVuY3Rpb24gd2lsbCBjb3JyZWN0bHkgaGFuZGxlIGFuIGV4Y2VwdGlvbiBi
ZWluZyB0aHJvd24gZnJvbSBoZXJlLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjk3ODYKLSAgICBSRUxFQVNFX0FTU0VSVChhcnJheSk7Ci0KLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PGludD4obGVuZ3RoKTsgKytpKQotICAgICAg
ICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHNjb3BlLCBpLCB2YWx1ZXNbLWldKTsKLSAgICByZXR1
cm4gYXJyYXk7Ci19CitKU19FWFBPUlRfUFJJVkFURSBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheShF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBjb25zdCBBcmdMaXN0JiB2YWx1ZXMpOworSlNfRVhQT1JU
X1BSSVZBVEUgSlNBcnJheSogY29uc3RydWN0QXJyYXkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwg
Y29uc3QgSlNWYWx1ZSogdmFsdWVzLCB1bnNpZ25lZCBsZW5ndGgpOworSlNfRVhQT1JUX1BSSVZB
VEUgSlNBcnJheSogY29uc3RydWN0QXJyYXlOZWdhdGl2ZUluZGV4ZWQoRXhlY1N0YXRlKiwgU3Ry
dWN0dXJlKiwgY29uc3QgSlNWYWx1ZSogdmFsdWVzLCB1bnNpZ25lZCBsZW5ndGgpOwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MK
</data>

          </attachment>
      

    </bug>

</bugzilla>