<?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>200952</bug_id>
          
          <creation_ts>2019-08-20 16:47:38 -0700</creation_ts>
          <short_desc>[WASM-References] Do not overwrite argument registers in jsCallEntrypoint</short_desc>
          <delta_ts>2019-08-23 14:34:19 -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>JavaScriptCore</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="Justin Michaud">justin_michaud</reporter>
          <assigned_to name="Justin Michaud">justin_michaud</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1563302</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-08-20 16:47:38 -0700</bug_when>
    <thetext>Do not overwrite argument registers / callee saves in jsCallEntrypoint</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563304</commentid>
    <comment_count>1</comment_count>
      <attachid>376828</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-08-20 16:48:45 -0700</bug_when>
    <thetext>Created attachment 376828
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563309</commentid>
    <comment_count>2</comment_count>
      <attachid>376828</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-20 17:09:26 -0700</bug_when>
    <thetext>Comment on attachment 376828
Patch

How does exception handling restore these? Why is this needed? I thought it was already handled?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563311</commentid>
    <comment_count>3</comment_count>
      <attachid>376828</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-20 17:10:58 -0700</bug_when>
    <thetext>Comment on attachment 376828
Patch

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

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp:320
&gt; +                // Save callee saves before call. We can remove this when inlined.

we already do this! Read above &quot;usedCalleeSaveRegisters&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563312</commentid>
    <comment_count>4</comment_count>
      <attachid>376828</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-20 17:11:45 -0700</bug_when>
    <thetext>Comment on attachment 376828
Patch

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

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp:330
&gt; +                    jit.storePtr(reg, calleeFrame.withOffset(-(i+1) * sizeof(int64_t*)));

if you actually needed to do this, which I don&apos;t think you do, since we do it above, you&apos;d need to adjust the frame size calculation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563368</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-20 18:47:45 -0700</bug_when>
    <thetext>I misunderstood what&apos;s going on.

It&apos;s pretty crazy we&apos;re calling a C function in the middle of loading up the argument registers.

An easy way to fix this would be to emit checks on the funcrefs before any argument is loaded into the corresponding argument register

And even better solution would just to emit inline asm to type check the thing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563369</commentid>
    <comment_count>6</comment_count>
      <attachid>376828</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-20 18:56:38 -0700</bug_when>
    <thetext>Comment on attachment 376828
Patch

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

&gt; JSTests/wasm/references/func_ref.js:461
&gt; +        .Function(&quot;test&quot;, { params: [&quot;i32&quot;, &quot;funcref&quot;], ret: &quot;i32&quot; })

please add a test where you have a bunch of i32s followed by a funcref, that should fail even with your current patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563800</commentid>
    <comment_count>7</comment_count>
      <attachid>376950</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-08-21 16:44:02 -0700</bug_when>
    <thetext>Created attachment 376950
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563832</commentid>
    <comment_count>8</comment_count>
      <attachid>376950</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-21 17:23:01 -0700</bug_when>
    <thetext>Comment on attachment 376950
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        We just inline the call to isWebassemblyHostFunction.

can you explain what the issue before was in some detail here?

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp:330
&gt; +                static_assert(std::is_final&lt;WebAssemblyFunction&gt;::value, &quot;This loop is untested&quot;);
&gt; +                static_assert(std::is_final&lt;WebAssemblyWrapperFunction&gt;::value, &quot;This loop is untested&quot;);
&gt; +
&gt; +                jit.move(CCallHelpers::TrustedImmPtr(WebAssemblyFunction::info()), scratch2GPR);
&gt; +                auto isWasmFunction = jit.branch64(CCallHelpers::Equal, scratchGPR, scratch2GPR);
&gt; +                jit.move(CCallHelpers::TrustedImmPtr(WebAssemblyWrapperFunction::info()), scratch2GPR);
&gt; +                auto isWasmFunctionWrapper = jit.branch64(CCallHelpers::Equal, scratchGPR, scratch2GPR);

Please let&apos;s not add a loop that&apos;s untested. We should just have a single branch, which should be ensured by the is_final check above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563901</commentid>
    <comment_count>9</comment_count>
      <attachid>376966</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-08-21 19:28:14 -0700</bug_when>
    <thetext>Created attachment 376966
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563906</commentid>
    <comment_count>10</comment_count>
      <attachid>376966</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-21 19:38:34 -0700</bug_when>
    <thetext>Comment on attachment 376966
Patch

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

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp:317
&gt; +                slowPath.append(jit.branchIfNotObject(scratchGPR));

don&apos;t think this is necessary. All cell&apos;s have structures. All structure&apos;s have class infos. So this is an unnecessary branch.

Can you add tests where you try to pass non-object cells. And other JSObject types (like an array or something).

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp:326
&gt; +                jit.move(CCallHelpers::TrustedImmPtr(WebAssemblyFunction::info()), scratch2GPR);
&gt; +                auto isWasmFunction = jit.branch64(CCallHelpers::Equal, scratchGPR, scratch2GPR);

let&apos;s use inline branch64 with immediate.

Also, it&apos;s wrong to use scratch2GPR in this loop. I did a terrible job naming scratch2GPR. Maybe it&apos;s worth naming it cachedStackLimit or something like that so we don&apos;t make this mistake in the future.

This wrong value in stack limit should be testable.

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp:328
&gt; +                jit.move(CCallHelpers::TrustedImmPtr(WebAssemblyWrapperFunction::info()), scratch2GPR);
&gt; +                slowPath.append(jit.branch64(CCallHelpers::NotEqual, scratchGPR, scratch2GPR));

ditto

&gt; JSTests/wasm/references/func_ref.js:469
&gt; +    const myfun = makeExportedFunction(1337);
&gt; +    assert.eq(myfun(), 1337)
&gt; +    assert.eq(42, $1.exports.test(42, myfun))
&gt; +    assert.throws(() =&gt; $1.exports.test(42, () =&gt; 5), Error, &quot;Funcref must be an exported wasm function (evaluating &apos;func(...args)&apos;)&quot;)

let&apos;s run this in a loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564153</commentid>
    <comment_count>11</comment_count>
      <attachid>377031</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-08-22 11:55:02 -0700</bug_when>
    <thetext>Created attachment 377031
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564193</commentid>
    <comment_count>12</comment_count>
      <attachid>377031</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-22 13:18:36 -0700</bug_when>
    <thetext>Comment on attachment 377031
Patch

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

r=me

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp:321
&gt; +                jit.loadPtr(vm.addressOfSoftStackLimit(), stackLimitGPR);

please remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564201</commentid>
    <comment_count>13</comment_count>
      <attachid>377041</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-08-22 13:40:36 -0700</bug_when>
    <thetext>Created attachment 377041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564604</commentid>
    <comment_count>14</comment_count>
      <attachid>377041</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-23 14:33:15 -0700</bug_when>
    <thetext>Comment on attachment 377041
Patch

Clearing flags on attachment: 377041

Committed r249069: &lt;https://trac.webkit.org/changeset/249069&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564605</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-23 14:33:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564606</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-23 14:34:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/54654491&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376828</attachid>
            <date>2019-08-20 16:48:45 -0700</date>
            <delta_ts>2019-08-21 16:44:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200952-20190820164844.patch</filename>
            <type>text/plain</type>
            <size>4807</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4OTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
Y2QzNmQxZTA0MTExZDJhZTFiNDk2MWQ2YzEwNjc5ODk5YzA4NWQ1Li45MTQxODViZGJiOGI5NmQw
ODQ5YTM2YjBiMzcyNzg0OTQ4MzhkOTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxOS0wOC0yMCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gRG8gbm90IG92ZXJ3cml0ZSBh
cmd1bWVudCByZWdpc3RlcnMgaW4ganNDYWxsRW50cnlwb2ludAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwOTUyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rp
b24uY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUZ1bmN0aW9uOjpqc0NhbGxFbnRyeXBv
aW50U2xvdyk6CisKIDIwMTktMDgtMjAgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgogCiAgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIEVuYWJsZSBieSBkZWZhdWx0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1
bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVu
Y3Rpb24uY3BwCmluZGV4IDg2YjRhNDI5Njg1YzgzMjU1Y2FkZTRmZDhmNzQ4NWY4MzcwOGEyZTYu
LjAyOTY3OGE4YWE0MjgzNjRiOWE4ODUwYmI0OWQwODM1ZTJmMTUwMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBA
IC0zMTcsNiArMzE3LDE5IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBX
ZWJBc3NlbWJseUZ1bmN0aW9uOjpqc0NhbGxFbnRyeXBvaW50U2xvdygpCiAgICAgICAgICAgICAg
ICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICFpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCBhcmcpICYmICFhcmcuaXNOdWxs
KCk7CiAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAvLyBTYXZlIGNhbGxlZSBz
YXZlcyBiZWZvcmUgY2FsbC4gV2UgY2FuIHJlbW92ZSB0aGlzIHdoZW4gaW5saW5lZC4KKyAgICAg
ICAgICAgICAgICBSZWdpc3RlclNldCBjYWxsZWVTYXZlcyA9IFJlZ2lzdGVyU2V0Ojp2bUNhbGxl
ZVNhdmVSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgICAgICBjYWxsZWVTYXZlcy5hZGQoR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgICAgICAgICBjYWxsZWVTYXZlcy5hZGQoR1BSSW5m
bzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgICAgICAgICBjYWxsZWVTYXZlcy5hZGQoR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
R1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7IGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAg
R1BSUmVnIHJlZyA9IEdQUkluZm86OnRvUmVnaXN0ZXIoaSk7CisgICAgICAgICAgICAgICAgICAg
IGlmICghY2FsbGVlU2F2ZXMuZ2V0KHJlZykpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlUHRyKHJlZywgY2FsbGVlRnJhbWUu
d2l0aE9mZnNldCgtKGkrMSkgKiBzaXplb2YoaW50NjRfdCopKSk7CisgICAgICAgICAgICAgICAg
fQorCiAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KCZpbnN0YW5jZSgpLT5pbnN0YW5jZSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICAg
ICAgICAgICAgICBqaXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwganNPZmZzZXQpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwogICAgICAg
ICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShzaG91bGRUaHJvdyk+KEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKQEAgLTMyNiw3ICszMzks
MTYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IFdlYkFzc2VtYmx5RnVu
Y3Rpb246OmpzQ2FsbEVudHJ5cG9pbnRTbG93KCkKICAgICAgICAgICAgICAgICAgICAgbGlua0J1
ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4oc2hvdWxkVGhyb3cp
KTsKICAgICAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVu
ZChqaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6Tm9uWmVybywgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUiwgc2NyYXRjaEdQUik7CisKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBH
UFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgaS0tOykgeworICAgICAgICAgICAgICAgICAgICBH
UFJSZWcgcmVnID0gR1BSSW5mbzo6dG9SZWdpc3RlcihpKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCFjYWxsZWVTYXZlcy5nZXQocmVnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgICAgICAgICBqaXQubG9hZFB0cihjYWxsZWVGcmFtZS53aXRoT2Zm
c2V0KC0oaSsxKSAqIHNpemVvZihpbnQ2NF90KikpLCByZWcpOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChqaXQuYnJhbmNoVGVzdDMyKENDYWxs
SGVscGVyczo6Tm9uWmVybywgc2NyYXRjaEdQUikpOwogCiAgICAgICAgICAgICAgICAgRkFMTFRI
Uk9VR0g7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGIzN2JkN2U3MTNkODJkZmU0MTI2ZDM3MWIwNTExZjhiNDNh
ZDZkN2QuLjRjOThlYTY3ZjExYzI4ODFiMTBlOWJmZTBmZTBiYzRjMDk3NDkyNTAgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTktMDgtMjAgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUu
Y29tPgorCisgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIERvIG5vdCBvdmVyd3JpdGUgYXJndW1l
bnQgcmVnaXN0ZXJzIGluIGpzQ2FsbEVudHJ5cG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDk1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2FzbS9yZWZlcmVuY2VzL2Z1bmNfcmVmLmpzOgor
ICAgICAgICAoYXNzZXJ0LnRocm93cyk6CisKIDIwMTktMDgtMjAgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBBcnJheS5wcm90b3R5cGUudG9TdHJp
bmcgc2hvdWxkIG5vdCBnZXQgImpvaW4iIGZ1bmN0aW9uIGVhY2ggdGltZQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvZnVuY19yZWYuanMgYi9KU1Rlc3RzL3dhc20vcmVmZXJl
bmNlcy9mdW5jX3JlZi5qcwppbmRleCA5MjY1ZTYzMGI2ZGUzZjVjNWY2YWNlZGRmNWFiYTlmNTNm
OWM1ZDVjLi5iNTU3OTc3YzI2Zjc4NjQxNGE2MzEwYWU3YjdiYTYxOTU4NmE3Zjc0IDEwMDY0NAot
LS0gYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy9mdW5jX3JlZi5qcworKysgYi9KU1Rlc3RzL3dh
c20vcmVmZXJlbmNlcy9mdW5jX3JlZi5qcwpAQCAtNDQ4LDMgKzQ0OCwyMiBAQCBmb3IgKGxldCBp
bXBvcnRlZEZ1biBvZiBbZnVuY3Rpb24oaSkgeyByZXR1cm4gaTsgfSwgbWFrZUZ1bmNyZWZJZGVu
dCgpXSkgewogICAgICAgICB9CiAgICAgfQogfQorCit7CisgICAgY29uc3QgJDEgPSBuZXcgV2Vi
QXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkK
KyAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgIC5JbXBvcnQoKS5FbmQoKQorICAgICAgLkZ1bmN0
aW9uKCkuRW5kKCkKKyAgICAgIC5FeHBvcnQoKQorICAgICAgICAgIC5GdW5jdGlvbigidGVzdCIp
CisgICAgICAuRW5kKCkKKyAgICAgIC5Db2RlKCkKKyAgICAgICAgLkZ1bmN0aW9uKCJ0ZXN0Iiwg
eyBwYXJhbXM6IFsiaTMyIiwgImZ1bmNyZWYiXSwgcmV0OiAiaTMyIiB9KQorICAgICAgICAgIC5H
ZXRMb2NhbCgwKQorICAgICAgICAuRW5kKCkKKyAgICAgIC5FbmQoKS5XZWJBc3NlbWJseSgpLmdl
dCgpKSwgeyB9KTsKKworICAgIGNvbnN0IG15ZnVuID0gbWFrZUV4cG9ydGVkRnVuY3Rpb24oMTMz
Nyk7CisgICAgYXNzZXJ0LmVxKDQyLCAkMS5leHBvcnRzLnRlc3QoNDIsIG15ZnVuKSkKKyAgICBh
c3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9ydHMudGVzdCg0MiwgKCkgPT4gNSksIEVycm9yLCAi
RnVuY3JlZiBtdXN0IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ2Z1
bmMoLi4uYXJncyknKSIpCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376950</attachid>
            <date>2019-08-21 16:44:02 -0700</date>
            <delta_ts>2019-08-21 19:28:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200952-20190821164402.patch</filename>
            <type>text/plain</type>
            <size>5910</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4OTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MjE1NDI0NjJhOGZhYzAxZjBkNDEzNzM5M2I0ZTczYTViZDZlZWM2Li5hODZhZTdmZGEzMjAyYzU5
NmM1ODkxYjlmMjBjNWY0YWRmMTMwZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxOS0wOC0yMSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gRG8gbm90IG92ZXJ3cml0ZSBh
cmd1bWVudCByZWdpc3RlcnMgaW4ganNDYWxsRW50cnlwb2ludAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwOTUyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UganVzdCBpbmxpbmUgdGhlIGNhbGwgdG8g
aXNXZWJhc3NlbWJseUhvc3RGdW5jdGlvbi4KKworICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1i
bHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5RnVuY3Rpb246OmpzQ2Fs
bEVudHJ5cG9pbnRTbG93KToKKwogMjAxOS0wOC0yMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHN1cGVyZmx1b3VzIHNpemUgYXJndW1lbnQgdG8gYWxs
b2NhdGVDZWxsKCkgZm9yIGZpeGVkIHNpemUgb2JqZWN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKaW5kZXggODZiNGE0
Mjk2ODVjODMyNTVjYWRlNGZkOGY3NDg1ZjgzNzA4YTJlNi4uYTZlYzhiNDM2OWUzNWMzNTcwMjFj
M2FkYWU4MDFlNGUxZTNiNGZjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKQEAgLTMxMCwyNCArMzEwLDMyIEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBXZWJBc3NlbWJseUZ1bmN0aW9uOjpq
c0NhbGxFbnRyeXBvaW50U2xvdygpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBXYXNtOjpGdW5jcmVmOiB7Ci0gICAgICAgICAgICAg
ICAgLy8gRklYTUU6IEVtaXQgdGhpcyBpbmxpbmUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTg1MDY+LgotICAgICAgICAgICAgICAgIGJvb2wgKCpzaG91bGRUaHJv
dykoV2FzbTo6SW5zdGFuY2UqLCBKU1ZhbHVlKSA9IFtdIChXYXNtOjpJbnN0YW5jZSogd2FzbUlu
c3RhbmNlLCBKU1ZhbHVlIGFyZykgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgICAgIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSB3YXNtSW5zdGFuY2UtPm93bmVyPEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZT4oKTsKLSAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGluc3RhbmNlLT5nbG9iYWxPYmplY3QoKTsKLSAgICAgICAgICAgICAgICAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gIWlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24odm0sIGFyZykgJiYgIWFyZy5pc051bGwoKTsK
LSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cigmaW5zdGFuY2UoKS0+aW5zdGFuY2UoKSksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7Ci0gICAgICAgICAgICAgICAgaml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGpzT2Zmc2V0KSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKTsKLSAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUoc2hv
dWxkVGhyb3cpPihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7
Ci0gICAgICAgICAgICAgICAgYXV0byBjYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsK
LQotICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtC
dWZmZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIEZ1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4oc2hvdWxkVGhyb3cpKTsKLSAgICAgICAgICAgICAgICB9
KTsKLQotICAgICAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChqaXQuYnJhbmNoVGVzdDMyKEND
YWxsSGVscGVyczo6Tm9uWmVybywgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpKTsKKyAgICAgICAg
ICAgICAgICAvLyBFbnN1cmUgd2UgaGF2ZSBhIFdBU00gZXhwb3J0ZWQgZnVuY3Rpb24uCisgICAg
ICAgICAgICAgICAgaml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIGpzT2Zmc2V0KSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAg
YXV0byBpc051bGwgPSBqaXQuYnJhbmNoSWZOdWxsKHNjcmF0Y2hHUFIpOworICAgICAgICAgICAg
ICAgIHNsb3dQYXRoLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKHNjcmF0Y2hHUFIpKTsKKyAg
ICAgICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQoaml0LmJyYW5jaElmTm90T2JqZWN0KHNjcmF0
Y2hHUFIpKTsKKworICAgICAgICAgICAgICAgIGppdC5lbWl0TG9hZFN0cnVjdHVyZSh2bSwgc2Ny
YXRjaEdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIpOworICAgICAgICAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6OmNsYXNz
SW5mb09mZnNldCgpKSwgc2NyYXRjaEdQUik7CisKKyAgICAgICAgICAgICAgICBhdXRvIGxvb3Ag
PSBqaXQubGFiZWwoKTsKKworICAgICAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19m
aW5hbDxXZWJBc3NlbWJseUZ1bmN0aW9uPjo6dmFsdWUsICJUaGlzIGxvb3AgaXMgdW50ZXN0ZWQi
KTsKKyAgICAgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZmluYWw8V2ViQXNzZW1i
bHlXcmFwcGVyRnVuY3Rpb24+Ojp2YWx1ZSwgIlRoaXMgbG9vcCBpcyB1bnRlc3RlZCIpOworCisg
ICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKFdlYkFz
c2VtYmx5RnVuY3Rpb246OmluZm8oKSksIHNjcmF0Y2gyR1BSKTsKKyAgICAgICAgICAgICAgICBh
dXRvIGlzV2FzbUZ1bmN0aW9uID0gaml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6RXF1YWwsIHNj
cmF0Y2hHUFIsIHNjcmF0Y2gyR1BSKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb246OmluZm8oKSks
IHNjcmF0Y2gyR1BSKTsKKyAgICAgICAgICAgICAgICBhdXRvIGlzV2FzbUZ1bmN0aW9uV3JhcHBl
ciA9IGppdC5icmFuY2g2NChDQ2FsbEhlbHBlcnM6OkVxdWFsLCBzY3JhdGNoR1BSLCBzY3JhdGNo
MkdQUik7CisKKyAgICAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3Moc2NyYXRjaEdQUiwgQ2xhc3NJbmZvOjpvZmZzZXRPZlBhcmVudENsYXNzKCkpLCBzY3JhdGNo
R1BSKTsKKyAgICAgICAgICAgICAgICBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Ok5v
blplcm8sIHNjcmF0Y2hHUFIpLmxpbmtUbyhsb29wLCAmaml0KTsKKyAgICAgICAgICAgICAgICBz
bG93UGF0aC5hcHBlbmQoaml0Lmp1bXAoKSk7CiAKKyAgICAgICAgICAgICAgICBpc1dhc21GdW5j
dGlvbi5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgIGlzV2FzbUZ1bmN0aW9uV3JhcHBlci5s
aW5rKCZqaXQpOworICAgICAgICAgICAgICAgIGlzTnVsbC5saW5rKCZqaXQpOwogICAgICAgICAg
ICAgICAgIEZBTExUSFJPVUdIOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBXYXNt
OjpBbnlyZWY6IHsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggYjM3YmQ3ZTcxM2Q4MmRmZTQxMjZkMzcxYjA1MTFmOGI0M2FkNmQ3ZC4uMzA5
NWQ2MDQ4MDUzYWVhNTI1MjFkOGEyZDg1ZGFhMjg0NTExNzNkMiAxMDA2NDQKLS0tIGEvSlNUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
OS0wOC0yMSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dBU00tUmVmZXJlbmNlc10gRG8gbm90IG92ZXJ3cml0ZSBhcmd1bWVudCByZWdpc3Rl
cnMgaW4ganNDYWxsRW50cnlwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAwOTUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiB3YXNtL3JlZmVyZW5jZXMvZnVuY19yZWYuanM6CisgICAgICAgIChh
c3NlcnQudGhyb3dzKToKKwogMjAxOS0wOC0yMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFtKU0NdIEFycmF5LnByb3RvdHlwZS50b1N0cmluZyBzaG91bGQg
bm90IGdldCAiam9pbiIgZnVuY3Rpb24gZWFjaCB0aW1lCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dh
c20vcmVmZXJlbmNlcy9mdW5jX3JlZi5qcyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2Z1bmNf
cmVmLmpzCmluZGV4IDkyNjVlNjMwYjZkZTNmNWM1ZjZhY2VkZGY1YWJhOWY1M2Y5YzVkNWMuLjMx
YzBmZmIyOTE5YWZlYjZiNzNmYTk5YzFhNGIyMjIyY2NjOTcyZDIgMTAwNjQ0Ci0tLSBhL0pTVGVz
dHMvd2FzbS9yZWZlcmVuY2VzL2Z1bmNfcmVmLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVu
Y2VzL2Z1bmNfcmVmLmpzCkBAIC00NDgsMyArNDQ4LDIzIEBAIGZvciAobGV0IGltcG9ydGVkRnVu
IG9mIFtmdW5jdGlvbihpKSB7IHJldHVybiBpOyB9LCBtYWtlRnVuY3JlZklkZW50KCldKSB7CiAg
ICAgICAgIH0KICAgICB9CiB9CisKK3sKKyAgICBjb25zdCAkMSA9IG5ldyBXZWJBc3NlbWJseS5J
bnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQorICAgICAgLlR5
cGUoKS5FbmQoKQorICAgICAgLkltcG9ydCgpLkVuZCgpCisgICAgICAuRnVuY3Rpb24oKS5FbmQo
KQorICAgICAgLkV4cG9ydCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCJ0ZXN0IikKKyAgICAgIC5F
bmQoKQorICAgICAgLkNvZGUoKQorICAgICAgICAuRnVuY3Rpb24oInRlc3QiLCB7IHBhcmFtczog
WyJpMzIiLCAiZnVuY3JlZiJdLCByZXQ6ICJpMzIiIH0pCisgICAgICAgICAgLkdldExvY2FsKDAp
CisgICAgICAgIC5FbmQoKQorICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpLCB7IH0p
OworCisgICAgY29uc3QgbXlmdW4gPSBtYWtlRXhwb3J0ZWRGdW5jdGlvbigxMzM3KTsKKyAgICBh
c3NlcnQuZXEobXlmdW4oKSwgMTMzNykKKyAgICBhc3NlcnQuZXEoNDIsICQxLmV4cG9ydHMudGVz
dCg0MiwgbXlmdW4pKQorICAgIGFzc2VydC50aHJvd3MoKCkgPT4gJDEuZXhwb3J0cy50ZXN0KDQy
LCAoKSA9PiA1KSwgRXJyb3IsICJGdW5jcmVmIG11c3QgYmUgYW4gZXhwb3J0ZWQgd2FzbSBmdW5j
dGlvbiAoZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIikKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376966</attachid>
            <date>2019-08-21 19:28:14 -0700</date>
            <delta_ts>2019-08-22 11:55:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200952-20190821192813.patch</filename>
            <type>text/plain</type>
            <size>5790</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4OTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YTdiZmUzYzkwN2QyNDY1MDZkODI4NDk5ZmQ5Mjc0NjdmNDcyYTRlLi5lMjcwYmFmN2JmYjAwN2Q2
ZWZjZjlmMmM5ZGFjNjM0YTgzNmMzOWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxOS0wOC0yMSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gRG8gbm90IG92ZXJ3cml0ZSBh
cmd1bWVudCByZWdpc3RlcnMgaW4ganNDYWxsRW50cnlwb2ludAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwOTUyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGMgY2FsbCB0aGF0IHdlIGVtaXR0ZWQg
d2FzIGluY29ycmVjdC4gSWYgd2UgaGFkIGFuIGludCBhcmd1bWVudCB0aGF0IHdhcyBzdXBwb3Nl
ZCB0byBiZSBwbGFjZWQgaW4gR1BSMCBieSB0aGlzIGxvb3AsCisgICAgICAgIHdlIHdvdWxkIGNs
b2JiZXIgaXQgd2hpbGUgbWFraW5nIHRoZSBjYWxsIChhbW9uZyBtYW55IG90aGVyIHBvc3NpYmxl
IHJlZ2lzdGVycykuIFRvIGZpeCB0aGlzLCB3ZSBqdXN0IGlubGluZSB0aGUgY2FsbCAKKyAgICAg
ICAgdG8gaXNXZWJhc3NlbWJseUhvc3RGdW5jdGlvbi4KKworICAgICAgICAqIHdhc20vanMvV2Vi
QXNzZW1ibHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5RnVuY3Rpb246
OmpzQ2FsbEVudHJ5cG9pbnRTbG93KToKKwogMjAxOS0wOC0yMSAgTWFyayBMYW0gIDxtYXJrLmxh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgV2FzbTo6RnVuY3Rpb25QYXJzZXIgaXMgZmFpbGluZyB0
byBlbmZvcmNlIG1heEZ1bmN0aW9uTG9jYWxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAppbmRleCA4NmI0YTQyOTY4NWM4
MzI1NWNhZGU0ZmQ4Zjc0ODVmODM3MDhhMmU2Li40NTBlNDBkOWZhZTM0MzYxNzNiYTJhZDUwZmFl
ZTM1M2U4NDQwMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcApAQCAtMzEwLDI0ICszMTAsMjUgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IFdlYkFzc2VtYmx5RnVuY3Rpb246OmpzQ2FsbEVu
dHJ5cG9pbnRTbG93KCkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIFdhc206OkZ1bmNyZWY6IHsKLSAgICAgICAgICAgICAgICAvLyBG
SVhNRTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5ODUwNj4uCi0gICAgICAgICAgICAgICAgYm9vbCAoKnNob3VsZFRocm93KShXYXNt
OjpJbnN0YW5jZSosIEpTVmFsdWUpID0gW10gKFdhc206Okluc3RhbmNlKiB3YXNtSW5zdGFuY2Us
IEpTVmFsdWUgYXJnKSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgSlNXZWJBc3NlbWJs
eUluc3RhbmNlKiBpbnN0YW5jZSA9IHdhc21JbnN0YW5jZS0+b3duZXI8SlNXZWJBc3NlbWJseUlu
c3RhbmNlPigpOwotICAgICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gaW5zdGFuY2UtPmdsb2JhbE9iamVjdCgpOwotICAgICAgICAgICAgICAgICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAhaXNX
ZWJBc3NlbWJseUhvc3RGdW5jdGlvbih2bSwgYXJnKSAmJiAhYXJnLmlzTnVsbCgpOwotICAgICAg
ICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKCZpbnN0YW5jZSgpLT5pbnN0YW5jZSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKLSAgICAgICAgICAgICAgICBqaXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwganNPZmZzZXQpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
OwotICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShzaG91bGRUaHJv
dyk+KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICAg
ICAgICAgICAgICBhdXRvIGNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwotCi0gICAg
ICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikg
ewotICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHI8
T3BlcmF0aW9uUHRyVGFnPihzaG91bGRUaHJvdykpOwotICAgICAgICAgICAgICAgIH0pOwotCi0g
ICAgICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKGppdC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxw
ZXJzOjpOb25aZXJvLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikpOworICAgICAgICAgICAgICAg
IC8vIEVuc3VyZSB3ZSBoYXZlIGEgV0FTTSBleHBvcnRlZCBmdW5jdGlvbi4KKyAgICAgICAgICAg
ICAgICBqaXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwganNPZmZzZXQpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICBhdXRvIGlz
TnVsbCA9IGppdC5icmFuY2hJZk51bGwoc2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAgc2xv
d1BhdGguYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwoc2NyYXRjaEdQUikpOworICAgICAgICAg
ICAgICAgIHNsb3dQYXRoLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RPYmplY3Qoc2NyYXRjaEdQUikp
OworCisgICAgICAgICAgICAgICAgaml0LmVtaXRMb2FkU3RydWN0dXJlKHZtLCBzY3JhdGNoR1BS
LCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUik7CisgICAgICAgICAgICAgICAgaml0LmxvYWRQdHIo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zm
c2V0KCkpLCBzY3JhdGNoR1BSKTsKKworICAgICAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19maW5hbDxXZWJBc3NlbWJseUZ1bmN0aW9uPjo6dmFsdWUsICJXZSBkbyBub3QgY2hlY2sg
Zm9yIHN1YnR5cGVzIGJlbG93Iik7CisgICAgICAgICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX2ZpbmFsPFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uPjo6dmFsdWUsICJXZSBkbyBub3Qg
Y2hlY2sgZm9yIHN1YnR5cGVzIGJlbG93Iik7CisKKyAgICAgICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoV2ViQXNzZW1ibHlGdW5jdGlvbjo6aW5mbygpKSwg
c2NyYXRjaDJHUFIpOworICAgICAgICAgICAgICAgIGF1dG8gaXNXYXNtRnVuY3Rpb24gPSBqaXQu
YnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpFcXVhbCwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIpOwor
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihXZWJB
c3NlbWJseVdyYXBwZXJGdW5jdGlvbjo6aW5mbygpKSwgc2NyYXRjaDJHUFIpOworICAgICAgICAg
ICAgICAgIHNsb3dQYXRoLmFwcGVuZChqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJzOjpOb3RFcXVh
bCwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIpKTsKIAorICAgICAgICAgICAgICAgIGlzV2FzbUZ1
bmN0aW9uLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgaXNOdWxsLmxpbmsoJmppdCk7CiAg
ICAgICAgICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBj
YXNlIFdhc206OkFueXJlZjogewpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rl
c3RzL0NoYW5nZUxvZwppbmRleCBlMzA4YzEwM2JjOWVkMDk5ZDVhNTJlMTU3ZDg3ZDczMjQ2ZDhj
NTA5Li4wZmU3ZDQ2YjgzN2IwZjc1ZDAxN2Y0YjMwNjgxMmU0YTk5ZWEyNzQ2IDEwMDY0NAotLS0g
YS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDE5LTA4LTIxICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNv
bT4KKworICAgICAgICBbV0FTTS1SZWZlcmVuY2VzXSBEbyBub3Qgb3ZlcndyaXRlIGFyZ3VtZW50
IHJlZ2lzdGVycyBpbiBqc0NhbGxFbnRyeXBvaW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA5NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHdhc20vcmVmZXJlbmNlcy9mdW5jX3JlZi5qczoKKyAg
ICAgICAgKGFzc2VydC50aHJvd3MpOgorCiAyMDE5LTA4LTIxICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBXYXNtOjpGdW5jdGlvblBhcnNlciBpcyBmYWlsaW5nIHRv
IGVuZm9yY2UgbWF4RnVuY3Rpb25Mb2NhbHMuCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmVm
ZXJlbmNlcy9mdW5jX3JlZi5qcyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2Z1bmNfcmVmLmpz
CmluZGV4IDkyNjVlNjMwYjZkZTNmNWM1ZjZhY2VkZGY1YWJhOWY1M2Y5YzVkNWMuLjMxYzBmZmIy
OTE5YWZlYjZiNzNmYTk5YzFhNGIyMjIyY2NjOTcyZDIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2Fz
bS9yZWZlcmVuY2VzL2Z1bmNfcmVmLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2Z1
bmNfcmVmLmpzCkBAIC00NDgsMyArNDQ4LDIzIEBAIGZvciAobGV0IGltcG9ydGVkRnVuIG9mIFtm
dW5jdGlvbihpKSB7IHJldHVybiBpOyB9LCBtYWtlRnVuY3JlZklkZW50KCldKSB7CiAgICAgICAg
IH0KICAgICB9CiB9CisKK3sKKyAgICBjb25zdCAkMSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5j
ZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQorICAgICAgLlR5cGUoKS5F
bmQoKQorICAgICAgLkltcG9ydCgpLkVuZCgpCisgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAg
ICAgLkV4cG9ydCgpCisgICAgICAgICAgLkZ1bmN0aW9uKCJ0ZXN0IikKKyAgICAgIC5FbmQoKQor
ICAgICAgLkNvZGUoKQorICAgICAgICAuRnVuY3Rpb24oInRlc3QiLCB7IHBhcmFtczogWyJpMzIi
LCAiZnVuY3JlZiJdLCByZXQ6ICJpMzIiIH0pCisgICAgICAgICAgLkdldExvY2FsKDApCisgICAg
ICAgIC5FbmQoKQorICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpLCB7IH0pOworCisg
ICAgY29uc3QgbXlmdW4gPSBtYWtlRXhwb3J0ZWRGdW5jdGlvbigxMzM3KTsKKyAgICBhc3NlcnQu
ZXEobXlmdW4oKSwgMTMzNykKKyAgICBhc3NlcnQuZXEoNDIsICQxLmV4cG9ydHMudGVzdCg0Miwg
bXlmdW4pKQorICAgIGFzc2VydC50aHJvd3MoKCkgPT4gJDEuZXhwb3J0cy50ZXN0KDQyLCAoKSA9
PiA1KSwgRXJyb3IsICJGdW5jcmVmIG11c3QgYmUgYW4gZXhwb3J0ZWQgd2FzbSBmdW5jdGlvbiAo
ZXZhbHVhdGluZyAnZnVuYyguLi5hcmdzKScpIikKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377031</attachid>
            <date>2019-08-22 11:55:02 -0700</date>
            <delta_ts>2019-08-22 13:40:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200952-20190822115502.patch</filename>
            <type>text/plain</type>
            <size>8765</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4OTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YTdiZmUzYzkwN2QyNDY1MDZkODI4NDk5ZmQ5Mjc0NjdmNDcyYTRlLi5lMjcwYmFmN2JmYjAwN2Q2
ZWZjZjlmMmM5ZGFjNjM0YTgzNmMzOWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxOS0wOC0yMSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gRG8gbm90IG92ZXJ3cml0ZSBh
cmd1bWVudCByZWdpc3RlcnMgaW4ganNDYWxsRW50cnlwb2ludAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwOTUyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGMgY2FsbCB0aGF0IHdlIGVtaXR0ZWQg
d2FzIGluY29ycmVjdC4gSWYgd2UgaGFkIGFuIGludCBhcmd1bWVudCB0aGF0IHdhcyBzdXBwb3Nl
ZCB0byBiZSBwbGFjZWQgaW4gR1BSMCBieSB0aGlzIGxvb3AsCisgICAgICAgIHdlIHdvdWxkIGNs
b2JiZXIgaXQgd2hpbGUgbWFraW5nIHRoZSBjYWxsIChhbW9uZyBtYW55IG90aGVyIHBvc3NpYmxl
IHJlZ2lzdGVycykuIFRvIGZpeCB0aGlzLCB3ZSBqdXN0IGlubGluZSB0aGUgY2FsbCAKKyAgICAg
ICAgdG8gaXNXZWJhc3NlbWJseUhvc3RGdW5jdGlvbi4KKworICAgICAgICAqIHdhc20vanMvV2Vi
QXNzZW1ibHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5RnVuY3Rpb246
OmpzQ2FsbEVudHJ5cG9pbnRTbG93KToKKwogMjAxOS0wOC0yMSAgTWFyayBMYW0gIDxtYXJrLmxh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgV2FzbTo6RnVuY3Rpb25QYXJzZXIgaXMgZmFpbGluZyB0
byBlbmZvcmNlIG1heEZ1bmN0aW9uTG9jYWxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAppbmRleCA4NmI0YTQyOTY4NWM4
MzI1NWNhZGU0ZmQ4Zjc0ODVmODM3MDhhMmU2Li41NThhOTlhMDMwMzg4ZTE2YzVlYjQzY2U2NjEx
NjI3Y2E2Y2UzYWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcApAQCAtMjY2LDEyICsyNjYsMTMgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IFdlYkFzc2VtYmx5RnVuY3Rpb246OmpzQ2FsbEVu
dHJ5cG9pbnRTbG93KCkKICAgICB9CiAKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IFdhc206Ondh
c21DYWxsaW5nQ29udmVudGlvbkFpcigpLnByb2xvZ3VlU2NyYXRjaCgxKTsKLSAgICBHUFJSZWcg
c2NyYXRjaDJHUFIgPSBXYXNtOjp3YXNtQ2FsbGluZ0NvbnZlbnRpb25BaXIoKS5wcm9sb2d1ZVNj
cmF0Y2goMCk7Ci0gICAgaml0LmxvYWRQdHIodm0uYWRkcmVzc09mU29mdFN0YWNrTGltaXQoKSwg
c2NyYXRjaDJHUFIpOworICAgIGJvb2wgc3RhY2tMaW1pdEdQUklzQ2xvYmJlcmVkID0gZmFsc2U7
CisgICAgR1BSUmVnIHN0YWNrTGltaXRHUFIgPSBXYXNtOjp3YXNtQ2FsbGluZ0NvbnZlbnRpb25B
aXIoKS5wcm9sb2d1ZVNjcmF0Y2goMCk7CisgICAgaml0LmxvYWRQdHIodm0uYWRkcmVzc09mU29m
dFN0YWNrTGltaXQoKSwgc3RhY2tMaW1pdEdQUik7CiAKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0IHNsb3dQYXRoOwogICAgIHNsb3dQYXRoLmFwcGVuZChqaXQuYnJhbmNoUHRyKENDYWxsSGVs
cGVyczo6QWJvdmUsIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIpKTsKLSAgICBzbG93UGF0aC5hcHBlbmQoaml0LmJyYW5jaFB0
cihDQ2FsbEhlbHBlcnM6OkJlbG93LCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIsIHNjcmF0Y2gyR1BSKSk7CisgICAgc2xvd1BhdGguYXBwZW5kKGppdC5icmFuY2hQdHIoQ0Nh
bGxIZWxwZXJzOjpCZWxvdywgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBz
dGFja0xpbWl0R1BSKSk7CiAKICAgICAvLyBFbnN1cmU6CiAgICAgLy8gYXJnQ291bnRQbHVzVGhp
cyAtIDEgPj0gc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKQpAQCAtMzEwLDI0ICszMTEsMjQgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IFdlYkFzc2VtYmx5RnVuY3Rpb246
OmpzQ2FsbEVudHJ5cG9pbnRTbG93KCkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFdhc206OkZ1bmNyZWY6IHsKLSAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5ODUwNj4uCi0gICAgICAgICAgICAgICAgYm9vbCAoKnNob3VsZFRo
cm93KShXYXNtOjpJbnN0YW5jZSosIEpTVmFsdWUpID0gW10gKFdhc206Okluc3RhbmNlKiB3YXNt
SW5zdGFuY2UsIEpTVmFsdWUgYXJnKSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgSlNX
ZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IHdhc21JbnN0YW5jZS0+b3duZXI8SlNXZWJB
c3NlbWJseUluc3RhbmNlPigpOwotICAgICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gaW5zdGFuY2UtPmdsb2JhbE9iamVjdCgpOwotICAgICAgICAgICAgICAg
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiAhaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbih2bSwgYXJnKSAmJiAhYXJnLmlzTnVsbCgp
OwotICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKCZpbnN0YW5jZSgpLT5pbnN0YW5jZSgpKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKLSAgICAgICAgICAgICAgICBqaXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRk
cmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwganNPZmZzZXQpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpOwotICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShz
aG91bGRUaHJvdyk+KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KTsKLSAgICAgICAgICAgICAgICBhdXRvIGNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcp
OwotCi0gICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlu
a0J1ZmZlcikgewotICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgRnVu
Y3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihzaG91bGRUaHJvdykpOwotICAgICAgICAgICAgICAg
IH0pOwotCi0gICAgICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKGppdC5icmFuY2hUZXN0MzIo
Q0NhbGxIZWxwZXJzOjpOb25aZXJvLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikpOworICAgICAg
ICAgICAgICAgIC8vIEVuc3VyZSB3ZSBoYXZlIGEgV0FTTSBleHBvcnRlZCBmdW5jdGlvbi4KKyAg
ICAgICAgICAgICAgICBqaXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwganNPZmZzZXQpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAg
ICBhdXRvIGlzTnVsbCA9IGppdC5icmFuY2hJZk51bGwoc2NyYXRjaEdQUik7CisgICAgICAgICAg
ICAgICAgc2xvd1BhdGguYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwoc2NyYXRjaEdQUikpOwor
CisgICAgICAgICAgICAgICAgc3RhY2tMaW1pdEdQUklzQ2xvYmJlcmVkID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICBqaXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0sIHNjcmF0Y2hHUFIsIHNjcmF0Y2hH
UFIsIHN0YWNrTGltaXRHUFIpOworICAgICAgICAgICAgICAgIGppdC5sb2FkUHRyKHZtLmFkZHJl
c3NPZlNvZnRTdGFja0xpbWl0KCksIHN0YWNrTGltaXRHUFIpOworICAgICAgICAgICAgICAgIGpp
dC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6OmNs
YXNzSW5mb09mZnNldCgpKSwgc2NyYXRjaEdQUik7CisKKyAgICAgICAgICAgICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfZmluYWw8V2ViQXNzZW1ibHlGdW5jdGlvbj46OnZhbHVlLCAiV2UgZG8g
bm90IGNoZWNrIGZvciBzdWJ0eXBlcyBiZWxvdyIpOworICAgICAgICAgICAgICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19maW5hbDxXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbj46OnZhbHVlLCAi
V2UgZG8gbm90IGNoZWNrIGZvciBzdWJ0eXBlcyBiZWxvdyIpOworCisgICAgICAgICAgICAgICAg
YXV0byBpc1dhc21GdW5jdGlvbiA9IGppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpFcXVhbCwg
c2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKFdlYkFzc2VtYmx5RnVuY3Rp
b246OmluZm8oKSkpOworICAgICAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChqaXQuYnJhbmNo
UHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbjo6aW5mbygpKSkpOwogCisgICAg
ICAgICAgICAgICAgaXNXYXNtRnVuY3Rpb24ubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICBp
c051bGwubGluaygmaml0KTsKICAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGNhc2UgV2FzbTo6QW55cmVmOiB7CkBAIC00MzIsMTIgKzQzMywx
MyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gV2ViQXNzZW1ibHlGdW5j
dGlvbjo6anNDYWxsRW50cnlwb2ludFNsb3coKQogICAgICAgICBqaXQubW92ZShzY3JhdGNoR1BS
LCBwaW5uZWRSZWdzLndhc21Db250ZXh0SW5zdGFuY2VQb2ludGVyKTsKICAgICAgICAgaml0LnN0
b3JlUHRyKHNjcmF0Y2hHUFIsIHZtLndhc21Db250ZXh0LnBvaW50ZXJUb0luc3RhbmNlKCkpOwog
ICAgIH0KLSAgICAvLyBUaGlzIGNvbnRhaW5zIHRoZSBjYWNoZWQgc3RhY2sgbGltaXQgc3RpbGwu
Ci0gICAgaml0LnN0b3JlUHRyKHNjcmF0Y2gyR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2Ny
YXRjaEdQUiwgV2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkU3RhY2tMaW1pdCgpKSk7Cisg
ICAgaWYgKHN0YWNrTGltaXRHUFJJc0Nsb2JiZXJlZCkKKyAgICAgICAgaml0LmxvYWRQdHIodm0u
YWRkcmVzc09mU29mdFN0YWNrTGltaXQoKSwgc3RhY2tMaW1pdEdQUik7CisgICAgaml0LnN0b3Jl
UHRyKHN0YWNrTGltaXRHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBXYXNt
OjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRTdGFja0xpbWl0KCkpKTsKIAogICAgIGlmICghIW1v
ZHVsZUluZm9ybWF0aW9uLm1lbW9yeSkgewogICAgICAgICBHUFJSZWcgYmFzZU1lbW9yeSA9IHBp
bm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoT3JTaXpl
ID0gc2NyYXRjaDJHUFI7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoT3JTaXplID0gc3RhY2tMaW1p
dEdQUjsKICAgICAgICAgYXV0byBtb2RlID0gaW5zdGFuY2UoKS0+bWVtb3J5TW9kZSgpOwogCiAg
ICAgICAgIGlmIChpc0FSTTY0RSgpKSB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGUzMDhjMTAzYmM5ZWQwOTlkNWE1MmUxNTdkODdkNzMy
NDZkOGM1MDkuLjBmZTdkNDZiODM3YjBmNzVkMDE3ZjRiMzA2ODEyZTRhOTllYTI3NDYgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTktMDgtMjEgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBw
bGUuY29tPgorCisgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIERvIG5vdCBvdmVyd3JpdGUgYXJn
dW1lbnQgcmVnaXN0ZXJzIGluIGpzQ2FsbEVudHJ5cG9pbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDk1MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2FzbS9yZWZlcmVuY2VzL2Z1bmNfcmVmLmpz
OgorICAgICAgICAoYXNzZXJ0LnRocm93cyk6CisKIDIwMTktMDgtMjEgIE1hcmsgTGFtICA8bWFy
ay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFdhc206OkZ1bmN0aW9uUGFyc2VyIGlzIGZhaWxp
bmcgdG8gZW5mb3JjZSBtYXhGdW5jdGlvbkxvY2Fscy4KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2Fz
bS9yZWZlcmVuY2VzL2Z1bmNfcmVmLmpzIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvZnVuY19y
ZWYuanMKaW5kZXggOTI2NWU2MzBiNmRlM2Y1YzVmNmFjZWRkZjVhYmE5ZjUzZjljNWQ1Yy4uZTFj
NDNhYTIyMGY2NWZhYjFjYjZiZDdiZmJhMzc3NDI0YjEyNDE5YSAxMDA2NDQKLS0tIGEvSlNUZXN0
cy93YXNtL3JlZmVyZW5jZXMvZnVuY19yZWYuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5j
ZXMvZnVuY19yZWYuanMKQEAgLTQ0OCwzICs0NDgsNjIgQEAgZm9yIChsZXQgaW1wb3J0ZWRGdW4g
b2YgW2Z1bmN0aW9uKGkpIHsgcmV0dXJuIGk7IH0sIG1ha2VGdW5jcmVmSWRlbnQoKV0pIHsKICAg
ICAgICAgfQogICAgIH0KIH0KKworeworICAgIGNvbnN0ICQxID0gbmV3IFdlYkFzc2VtYmx5Lklu
c3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgICAgICAuVHlw
ZSgpLkVuZCgpCisgICAgICAuSW1wb3J0KCkuRW5kKCkKKyAgICAgIC5GdW5jdGlvbigpLkVuZCgp
CisgICAgICAuRXhwb3J0KCkKKyAgICAgICAgICAuRnVuY3Rpb24oInRlc3QiKQorICAgICAgLkVu
ZCgpCisgICAgICAuQ29kZSgpCisgICAgICAgIC5GdW5jdGlvbigidGVzdCIsIHsgcGFyYW1zOiBb
ImkzMiIsICJmdW5jcmVmIl0sIHJldDogImkzMiIgfSkKKyAgICAgICAgICAuR2V0TG9jYWwoMCkK
KyAgICAgICAgLkVuZCgpCisgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSksIHsgfSk7
CisKKyAgICBjb25zdCBteWZ1biA9IG1ha2VFeHBvcnRlZEZ1bmN0aW9uKDEzMzcpOworICAgIGFz
c2VydC5lcShteWZ1bigpLCAxMzM3KQorICAgIGFzc2VydC5lcSg0MiwgJDEuZXhwb3J0cy50ZXN0
KDQyLCBteWZ1bikpCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiAkMS5leHBvcnRzLnRlc3QoNDIs
ICgpID0+IDUpLCBFcnJvciwgIkZ1bmNyZWYgbXVzdCBiZSBhbiBleHBvcnRlZCB3YXNtIGZ1bmN0
aW9uIChldmFsdWF0aW5nICdmdW5jKC4uLmFyZ3MpJykiKQorfQorCit7CisgICAgY29uc3QgJDEg
PSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1
aWxkZXIoKSkKKyAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgIC5JbXBvcnQoKS5FbmQoKQorICAg
ICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgIC5FeHBvcnQoKQorICAgICAgICAgIC5GdW5jdGlv
bigidGVzdCIpCisgICAgICAuRW5kKCkKKyAgICAgIC5Db2RlKCkKKyAgICAgICAgLkZ1bmN0aW9u
KCJ0ZXN0IiwgeyBwYXJhbXM6IFsiaTMyIiwgImZ1bmNyZWYiXSwgcmV0OiAiaTMyIiB9KQorICAg
ICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgIC5JZigiaTMyIikKKyAgICAgICAgICAuQmxv
Y2soImkzMiIsIChiKSA9PgorICAgICAgICAgICAgYi5HZXRMb2NhbCgwKQorICAgICAgICAgICAg
LkdldExvY2FsKDEpCisgICAgICAgICAgICAuQ2FsbCgwKQorICAgICAgICAgICkKKyAgICAgICAg
ICAuRWxzZSgpCisgICAgICAgICAgLkJsb2NrKCJpMzIiLCAoYikgPT4KKyAgICAgICAgICAgIGIu
R2V0TG9jYWwoMCkKKyAgICAgICAgICApCisgICAgICAgICAgLkVuZCgpCisgICAgICAgIC5FbmQo
KQorICAgICAgLkVuZCgpLldlYkFzc2VtYmx5KCkuZ2V0KCkpLCB7IH0pOworCisgICAgY29uc3Qg
bXlmdW4gPSBtYWtlRXhwb3J0ZWRGdW5jdGlvbigxMzM3KTsKKyAgICBmdW5jdGlvbiBmb28oYikg
eworICAgICAgICAkMS5leHBvcnRzLnRlc3QoYiwgbXlmdW4pCisgICAgfQorICAgIG5vSW5saW5l
KGZvbyk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKQorICAgICAgICBmb28o
MCk7CisKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+ICQxLmV4cG9ydHMudGVzdCg0MiwgKCkgPT4g
NSksIEVycm9yLCAiRnVuY3JlZiBtdXN0IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVuY3Rpb24gKGV2
YWx1YXRpbmcgJ2Z1bmMoLi4uYXJncyknKSIpCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiAkMS5l
eHBvcnRzLnRlc3QoNDIsIG15ZnVuKSwgUmFuZ2VFcnJvciwgIk1heGltdW0gY2FsbCBzdGFjayBz
aXplIGV4Y2VlZGVkLiIpCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBmb28oMSksIFJhbmdlRXJy
b3IsICJNYXhpbXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZC4iKQorfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377041</attachid>
            <date>2019-08-22 13:40:36 -0700</date>
            <delta_ts>2019-08-23 14:33:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200952-20190822134036.patch</filename>
            <type>text/plain</type>
            <size>8693</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YzY2NjRmMDQ1NGNmZjc5ZmQ2NGEwMTczMWZkOWM2MTczNDJhMTc0Li41OGUzN2ZkNmRiZDVlMDQ2
MzMxMTcwOTE1YTY4Yjc4NGExNWJhNDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxOS0wOC0yMiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gRG8gbm90IG92ZXJ3cml0ZSBh
cmd1bWVudCByZWdpc3RlcnMgaW4ganNDYWxsRW50cnlwb2ludAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwOTUyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgVGhlIGMgY2FsbCB0aGF0IHdlIGVtaXR0ZWQgd2Fz
IGluY29ycmVjdC4gSWYgd2UgaGFkIGFuIGludCBhcmd1bWVudCB0aGF0IHdhcyBzdXBwb3NlZCB0
byBiZSBwbGFjZWQgaW4gR1BSMCBieSB0aGlzIGxvb3AsCisgICAgICAgIHdlIHdvdWxkIGNsb2Ji
ZXIgaXQgd2hpbGUgbWFraW5nIHRoZSBjYWxsIChhbW9uZyBtYW55IG90aGVyIHBvc3NpYmxlIHJl
Z2lzdGVycykuIFRvIGZpeCB0aGlzLCB3ZSBqdXN0IGlubGluZSB0aGUgY2FsbCAKKyAgICAgICAg
dG8gaXNXZWJhc3NlbWJseUhvc3RGdW5jdGlvbi4KKworICAgICAgICAqIHdhc20vanMvV2ViQXNz
ZW1ibHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5RnVuY3Rpb246Ompz
Q2FsbEVudHJ5cG9pbnRTbG93KToKKwogMjAxOS0wOC0yMiAgQWRyaWFuIFBlcmV6IGRlIENhc3Ry
byAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gRml4ZXMgZm9yIG5v
bi11bmlmaWVkIGJ1aWxkcyBhZnRlciByMjQ4NTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCmluZGV4IDg2YjRhNDI5Njg1
YzgzMjU1Y2FkZTRmZDhmNzQ4NWY4MzcwOGEyZTYuLmQ5OWIxZGViZTQ0ZmZkNzI3YTc0YTIwYjI4
YTA4ZmYzOWUwYjhmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC0yNjYsMTIgKzI2NiwxMyBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gV2ViQXNzZW1ibHlGdW5jdGlvbjo6anNDYWxs
RW50cnlwb2ludFNsb3coKQogICAgIH0KIAogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gV2FzbTo6
d2FzbUNhbGxpbmdDb252ZW50aW9uQWlyKCkucHJvbG9ndWVTY3JhdGNoKDEpOwotICAgIEdQUlJl
ZyBzY3JhdGNoMkdQUiA9IFdhc206Ondhc21DYWxsaW5nQ29udmVudGlvbkFpcigpLnByb2xvZ3Vl
U2NyYXRjaCgwKTsKLSAgICBqaXQubG9hZFB0cih2bS5hZGRyZXNzT2ZTb2Z0U3RhY2tMaW1pdCgp
LCBzY3JhdGNoMkdQUik7CisgICAgYm9vbCBzdGFja0xpbWl0R1BSSXNDbG9iYmVyZWQgPSBmYWxz
ZTsKKyAgICBHUFJSZWcgc3RhY2tMaW1pdEdQUiA9IFdhc206Ondhc21DYWxsaW5nQ29udmVudGlv
bkFpcigpLnByb2xvZ3VlU2NyYXRjaCgwKTsKKyAgICBqaXQubG9hZFB0cih2bS5hZGRyZXNzT2ZT
b2Z0U3RhY2tMaW1pdCgpLCBzdGFja0xpbWl0R1BSKTsKIAogICAgIENDYWxsSGVscGVyczo6SnVt
cExpc3Qgc2xvd1BhdGg7CiAgICAgc2xvd1BhdGguYXBwZW5kKGppdC5icmFuY2hQdHIoQ0NhbGxI
ZWxwZXJzOjpBYm92ZSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlcikpOwotICAgIHNsb3dQYXRoLmFwcGVuZChqaXQuYnJhbmNo
UHRyKENDYWxsSGVscGVyczo6QmVsb3csIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdp
c3Rlciwgc2NyYXRjaDJHUFIpKTsKKyAgICBzbG93UGF0aC5hcHBlbmQoaml0LmJyYW5jaFB0cihD
Q2FsbEhlbHBlcnM6OkJlbG93LCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIs
IHN0YWNrTGltaXRHUFIpKTsKIAogICAgIC8vIEVuc3VyZToKICAgICAvLyBhcmdDb3VudFBsdXNU
aGlzIC0gMSA+PSBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpCkBAIC0zMTAsMjQgKzMxMSwyMyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gV2ViQXNzZW1ibHlGdW5jdGlv
bjo6anNDYWxsRW50cnlwb2ludFNsb3coKQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgV2FzbTo6RnVuY3JlZjogewotICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KLSAgICAgICAgICAgICAgICBib29sICgqc2hvdWxk
VGhyb3cpKFdhc206Okluc3RhbmNlKiwgSlNWYWx1ZSkgPSBbXSAoV2FzbTo6SW5zdGFuY2UqIHdh
c21JbnN0YW5jZSwgSlNWYWx1ZSBhcmcpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgICAgICBK
U1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gd2FzbUluc3RhbmNlLT5vd25lcjxKU1dl
YkFzc2VtYmx5SW5zdGFuY2U+KCk7Ci0gICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBpbnN0YW5jZS0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgICAgICAg
ICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICFpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCBhcmcpICYmICFhcmcuaXNOdWxs
KCk7Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoJmluc3RhbmNlKCktPmluc3RhbmNlKCkpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOwotICAgICAgICAgICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBqc09mZnNldCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSk7Ci0gICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBl
KHNob3VsZFRocm93KT4oR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpOwotICAgICAgICAgICAgICAgIGF1dG8gY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRh
Zyk7Ci0KLSAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBs
aW5rQnVmZmVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBG
dW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHNob3VsZFRocm93KSk7Ci0gICAgICAgICAgICAg
ICAgfSk7Ci0KLSAgICAgICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQoaml0LmJyYW5jaFRlc3Qz
MihDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJldHVyblZhbHVlR1BSKSk7CisgICAg
ICAgICAgICAgICAgLy8gRW5zdXJlIHdlIGhhdmUgYSBXQVNNIGV4cG9ydGVkIGZ1bmN0aW9uLgor
ICAgICAgICAgICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBqc09mZnNldCksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAg
ICAgIGF1dG8gaXNOdWxsID0gaml0LmJyYW5jaElmTnVsbChzY3JhdGNoR1BSKTsKKyAgICAgICAg
ICAgICAgICBzbG93UGF0aC5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChzY3JhdGNoR1BSKSk7
CisKKyAgICAgICAgICAgICAgICBzdGFja0xpbWl0R1BSSXNDbG9iYmVyZWQgPSB0cnVlOworICAg
ICAgICAgICAgICAgIGppdC5lbWl0TG9hZFN0cnVjdHVyZSh2bSwgc2NyYXRjaEdQUiwgc2NyYXRj
aEdQUiwgc3RhY2tMaW1pdEdQUik7CisgICAgICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkp
LCBzY3JhdGNoR1BSKTsKKworICAgICAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19m
aW5hbDxXZWJBc3NlbWJseUZ1bmN0aW9uPjo6dmFsdWUsICJXZSBkbyBub3QgY2hlY2sgZm9yIHN1
YnR5cGVzIGJlbG93Iik7CisgICAgICAgICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Zp
bmFsPFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uPjo6dmFsdWUsICJXZSBkbyBub3QgY2hlY2sg
Zm9yIHN1YnR5cGVzIGJlbG93Iik7CisKKyAgICAgICAgICAgICAgICBhdXRvIGlzV2FzbUZ1bmN0
aW9uID0gaml0LmJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6OkVxdWFsLCBzY3JhdGNoR1BSLCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoV2ViQXNzZW1ibHlGdW5jdGlvbjo6aW5mbygpKSk7Cisg
ICAgICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKGppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJz
OjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKFdlYkFz
c2VtYmx5V3JhcHBlckZ1bmN0aW9uOjppbmZvKCkpKSk7CiAKKyAgICAgICAgICAgICAgICBpc1dh
c21GdW5jdGlvbi5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgIGlzTnVsbC5saW5rKCZqaXQp
OwogICAgICAgICAgICAgICAgIEZBTExUSFJPVUdIOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgY2FzZSBXYXNtOjpBbnlyZWY6IHsKQEAgLTQzMiwxMiArNDMyLDEzIEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBXZWJBc3NlbWJseUZ1bmN0aW9uOjpqc0NhbGxFbnRy
eXBvaW50U2xvdygpCiAgICAgICAgIGppdC5tb3ZlKHNjcmF0Y2hHUFIsIHBpbm5lZFJlZ3Mud2Fz
bUNvbnRleHRJbnN0YW5jZVBvaW50ZXIpOwogICAgICAgICBqaXQuc3RvcmVQdHIoc2NyYXRjaEdQ
Uiwgdm0ud2FzbUNvbnRleHQucG9pbnRlclRvSW5zdGFuY2UoKSk7CiAgICAgfQotICAgIC8vIFRo
aXMgY29udGFpbnMgdGhlIGNhY2hlZCBzdGFjayBsaW1pdCBzdGlsbC4KLSAgICBqaXQuc3RvcmVQ
dHIoc2NyYXRjaDJHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBXYXNtOjpJ
bnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRTdGFja0xpbWl0KCkpKTsKKyAgICBpZiAoc3RhY2tMaW1p
dEdQUklzQ2xvYmJlcmVkKQorICAgICAgICBqaXQubG9hZFB0cih2bS5hZGRyZXNzT2ZTb2Z0U3Rh
Y2tMaW1pdCgpLCBzdGFja0xpbWl0R1BSKTsKKyAgICBqaXQuc3RvcmVQdHIoc3RhY2tMaW1pdEdQ
UiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFdhc206Okluc3RhbmNlOjpvZmZz
ZXRPZkNhY2hlZFN0YWNrTGltaXQoKSkpOwogCiAgICAgaWYgKCEhbW9kdWxlSW5mb3JtYXRpb24u
bWVtb3J5KSB7CiAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVncy5iYXNlTWVt
b3J5UG9pbnRlcjsKLSAgICAgICAgR1BSUmVnIHNjcmF0Y2hPclNpemUgPSBzY3JhdGNoMkdQUjsK
KyAgICAgICAgR1BSUmVnIHNjcmF0Y2hPclNpemUgPSBzdGFja0xpbWl0R1BSOwogICAgICAgICBh
dXRvIG1vZGUgPSBpbnN0YW5jZSgpLT5tZW1vcnlNb2RlKCk7CiAKICAgICAgICAgaWYgKGlzQVJN
NjRFKCkpIHsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMmM0Mzg1MWVjZTQ3MDdlYTY4YjFlZTZmOWYzNWZmOGFmOTA5OWRjMC4uMGI3N2Zj
MmMzNjQxNWJlZjdhMWYwZDYwOTUxNzQxNTc1ZmRhOWY2NSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0w
OC0yMiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW1dBU00tUmVmZXJlbmNlc10gRG8gbm90IG92ZXJ3cml0ZSBhcmd1bWVudCByZWdpc3RlcnMg
aW4ganNDYWxsRW50cnlwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAwOTUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisK
KyAgICAgICAgKiB3YXNtL3JlZmVyZW5jZXMvZnVuY19yZWYuanM6CisgICAgICAgIChhc3NlcnQu
dGhyb3dzKToKKwogMjAxOS0wOC0yMiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIG1pc3NpbmcgZXhjZXB0aW9uIGNoZWNrIGluIGNhbm9u
aWNhbGl6ZUxvY2FsZUxpc3QKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL2Z1
bmNfcmVmLmpzIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvZnVuY19yZWYuanMKaW5kZXggOTI2
NWU2MzBiNmRlM2Y1YzVmNmFjZWRkZjVhYmE5ZjUzZjljNWQ1Yy4uZTFjNDNhYTIyMGY2NWZhYjFj
YjZiZDdiZmJhMzc3NDI0YjEyNDE5YSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3JlZmVyZW5j
ZXMvZnVuY19yZWYuanMKKysrIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvZnVuY19yZWYuanMK
QEAgLTQ0OCwzICs0NDgsNjIgQEAgZm9yIChsZXQgaW1wb3J0ZWRGdW4gb2YgW2Z1bmN0aW9uKGkp
IHsgcmV0dXJuIGk7IH0sIG1ha2VGdW5jcmVmSWRlbnQoKV0pIHsKICAgICAgICAgfQogICAgIH0K
IH0KKworeworICAgIGNvbnN0ICQxID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJB
c3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpCisgICAgICAuVHlwZSgpLkVuZCgpCisgICAg
ICAuSW1wb3J0KCkuRW5kKCkKKyAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAuRXhwb3J0
KCkKKyAgICAgICAgICAuRnVuY3Rpb24oInRlc3QiKQorICAgICAgLkVuZCgpCisgICAgICAuQ29k
ZSgpCisgICAgICAgIC5GdW5jdGlvbigidGVzdCIsIHsgcGFyYW1zOiBbImkzMiIsICJmdW5jcmVm
Il0sIHJldDogImkzMiIgfSkKKyAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgLkVuZCgp
CisgICAgICAuRW5kKCkuV2ViQXNzZW1ibHkoKS5nZXQoKSksIHsgfSk7CisKKyAgICBjb25zdCBt
eWZ1biA9IG1ha2VFeHBvcnRlZEZ1bmN0aW9uKDEzMzcpOworICAgIGFzc2VydC5lcShteWZ1bigp
LCAxMzM3KQorICAgIGFzc2VydC5lcSg0MiwgJDEuZXhwb3J0cy50ZXN0KDQyLCBteWZ1bikpCisg
ICAgYXNzZXJ0LnRocm93cygoKSA9PiAkMS5leHBvcnRzLnRlc3QoNDIsICgpID0+IDUpLCBFcnJv
ciwgIkZ1bmNyZWYgbXVzdCBiZSBhbiBleHBvcnRlZCB3YXNtIGZ1bmN0aW9uIChldmFsdWF0aW5n
ICdmdW5jKC4uLmFyZ3MpJykiKQorfQorCit7CisgICAgY29uc3QgJDEgPSBuZXcgV2ViQXNzZW1i
bHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSkKKyAgICAg
IC5UeXBlKCkuRW5kKCkKKyAgICAgIC5JbXBvcnQoKS5FbmQoKQorICAgICAgLkZ1bmN0aW9uKCku
RW5kKCkKKyAgICAgIC5FeHBvcnQoKQorICAgICAgICAgIC5GdW5jdGlvbigidGVzdCIpCisgICAg
ICAuRW5kKCkKKyAgICAgIC5Db2RlKCkKKyAgICAgICAgLkZ1bmN0aW9uKCJ0ZXN0IiwgeyBwYXJh
bXM6IFsiaTMyIiwgImZ1bmNyZWYiXSwgcmV0OiAiaTMyIiB9KQorICAgICAgICAgIC5HZXRMb2Nh
bCgwKQorICAgICAgICAgIC5JZigiaTMyIikKKyAgICAgICAgICAuQmxvY2soImkzMiIsIChiKSA9
PgorICAgICAgICAgICAgYi5HZXRMb2NhbCgwKQorICAgICAgICAgICAgLkdldExvY2FsKDEpCisg
ICAgICAgICAgICAuQ2FsbCgwKQorICAgICAgICAgICkKKyAgICAgICAgICAuRWxzZSgpCisgICAg
ICAgICAgLkJsb2NrKCJpMzIiLCAoYikgPT4KKyAgICAgICAgICAgIGIuR2V0TG9jYWwoMCkKKyAg
ICAgICAgICApCisgICAgICAgICAgLkVuZCgpCisgICAgICAgIC5FbmQoKQorICAgICAgLkVuZCgp
LldlYkFzc2VtYmx5KCkuZ2V0KCkpLCB7IH0pOworCisgICAgY29uc3QgbXlmdW4gPSBtYWtlRXhw
b3J0ZWRGdW5jdGlvbigxMzM3KTsKKyAgICBmdW5jdGlvbiBmb28oYikgeworICAgICAgICAkMS5l
eHBvcnRzLnRlc3QoYiwgbXlmdW4pCisgICAgfQorICAgIG5vSW5saW5lKGZvbyk7CisKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKQorICAgICAgICBmb28oMCk7CisKKyAgICBhc3Nl
cnQudGhyb3dzKCgpID0+ICQxLmV4cG9ydHMudGVzdCg0MiwgKCkgPT4gNSksIEVycm9yLCAiRnVu
Y3JlZiBtdXN0IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ2Z1bmMo
Li4uYXJncyknKSIpCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiAkMS5leHBvcnRzLnRlc3QoNDIs
IG15ZnVuKSwgUmFuZ2VFcnJvciwgIk1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkLiIp
CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBmb28oMSksIFJhbmdlRXJyb3IsICJNYXhpbXVtIGNh
bGwgc3RhY2sgc2l6ZSBleGNlZWRlZC4iKQorfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>