<?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>178389</bug_id>
          
          <creation_ts>2017-10-17 08:59:28 -0700</creation_ts>
          <short_desc>Enable tier-up in loops created by recursive tail call optimizations.</short_desc>
          <delta_ts>2022-03-08 18:55:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          <dependson>176601</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Robin Morisset">rmorisset</reporter>
          <assigned_to name="Robin Morisset">rmorisset</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jbedard</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rniwa</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>1361244</commentid>
    <comment_count>0</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2017-10-17 08:59:28 -0700</bug_when>
    <thetext>See the comments on https://bugs.webkit.org/show_bug.cgi?id=176601</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363286</commentid>
    <comment_count>1</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2017-10-23 08:33:24 -0700</bug_when>
    <thetext>I ran some tests between no optimization, optimization in both DFG and FTL, and optimization only in FTL:
                         Disabled                   Normal                   FTLOnly               FTLOnly v. Disabled    

n-body              679.4277+-12.1793    ^    608.0302+-17.0313    ^    556.8847+-9.6934        ^ definitely 1.2201x faster
merge-sort         1056.9295+-13.0481        1025.3372+-19.3403    ^    764.4767+-28.6580       ^ definitely 1.3826x faster

&lt;geometric&gt;         847.3528+-10.6054    ^    789.3578+-12.1466    ^    652.3523+-16.1727       ^ definitely 1.2989x faster

Two conclusions:
- the win between no optimization and unconditional optimization is a lot smaller than what I had measured earlier (I had got about 20% in a less rigorous benchmark, before I got TailBench supported into the run-jsc-benchmarks script)
- there is clearly a huge gain in only running it in FTL mode, which confirms our suspicion that the optimization is preventing tier-up from DFG to FTL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363295</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-23 09:16:07 -0700</bug_when>
    <thetext>(In reply to Robin Morisset from comment #1)
&gt; I ran some tests between no optimization, optimization in both DFG and FTL,
&gt; and optimization only in FTL:
&gt;                          Disabled                   Normal                  
&gt; FTLOnly               FTLOnly v. Disabled    
&gt; 
&gt; n-body              679.4277+-12.1793    ^    608.0302+-17.0313    ^   
&gt; 556.8847+-9.6934        ^ definitely 1.2201x faster
&gt; merge-sort         1056.9295+-13.0481        1025.3372+-19.3403    ^   
&gt; 764.4767+-28.6580       ^ definitely 1.3826x faster
&gt; 
&gt; &lt;geometric&gt;         847.3528+-10.6054    ^    789.3578+-12.1466    ^   
&gt; 652.3523+-16.1727       ^ definitely 1.2989x faster
&gt; 
&gt; Two conclusions:
&gt; - the win between no optimization and unconditional optimization is a lot
&gt; smaller than what I had measured earlier (I had got about 20% in a less
&gt; rigorous benchmark, before I got TailBench supported into the
&gt; run-jsc-benchmarks script)
&gt; - there is clearly a huge gain in only running it in FTL mode, which
&gt; confirms our suspicion that the optimization is preventing tier-up from DFG
&gt; to FTL.

I’d be okay with saying we only do this in FTL until we figure out how to OSR using this loop you introduce.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363440</commentid>
    <comment_count>3</comment_count>
      <attachid>324603</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2017-10-23 15:55:52 -0700</bug_when>
    <thetext>Created attachment 324603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363441</commentid>
    <comment_count>4</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2017-10-23 16:00:12 -0700</bug_when>
    <thetext>Some notes about that patch:
- I am not sure of the necessity of the resetting of m_exitOK to false at the end of handleRecursiveTailCall
- The second setting of m_exitOK to true before the placement of the LoopHint might also be unnecessary.

Here are some performance numbers:
&quot;Normal&quot; at /Users/rmorisset/Webkit2/OpenSource/WebKitBuild/Baseline/Release/jsc
&quot;FTLOnly&quot; at /Users/rmorisset/Webkit2/OpenSource/WebKitBuild/TierUp/Release/jsc
&quot;LoopHint&quot; at /Users/rmorisset/Webkit2/OpenSource/WebKitBuild/TierUp2/Release/jsc

Collected 20 samples per benchmark/VM, with 20 VM invocations per benchmark. Emitted a call to gc() between sample
measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to
get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                          Normal                   FTLOnly                   LoopHint               LoopHint v. Normal    

n-body              562.0193+-4.9093     ^    521.3055+-1.6532     !    559.7732+-4.8271        
merge-sort          963.8272+-3.6327     ^    711.8453+-6.1834          708.6563+-6.2171        ^ definitely 1.3601x faster

&lt;geometric&gt;         735.9597+-3.4519     ^    609.1411+-2.7327     !    629.7776+-3.7344        ^ definitely 1.1686x faster

We see that adding the LoopHint improves performance over the baseline, but for some reason less than running the code only in FTL for n-body.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1420101</commentid>
    <comment_count>5</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-05-03 06:22:48 -0700</bug_when>
    <thetext>I&apos;ve revisited this topic, and I am even more confused than before.

First, here are the numbers for TailBench with the optimisation completely disabled (and with a small fix to merge-sort-cps so it takes a similar amount of time to run as merge-sort), as a kind of baseline :
n-body              614.1399+-2.6044    
merge-sort          476.6205+-2.4212    
merge-sort-cps      462.0143+-1.4312    
bf-interpreter      401.7443+-3.4122    
&lt;geometric&gt;         482.7646+-0.9180
(all numbers are from running Tools/Scripts/run-jsc-benchmarks WebKitBuild/Release/jsc --inner 2 --outer 10 --tail-bench on my iMac, on top-of-tree as of May 2nd, 2018).

Next, here are the numbers for the default configuration, where the optimisation runs, but presumably interferes with tier up:
n-body              574.8102+-2.9423    
merge-sort          399.7921+-4.3145    
merge-sort-cps      460.7351+-5.7754    
bf-interpreter      264.6061+-3.6597    
&lt;geometric&gt;         409.0464+-2.4496

So far so good, we improve all programs except for merge-sort-cps that we don&apos;t regress at least. Now let&apos;s try several different ways to deal with the tier-up problem. With the patch that I had proposed before (inserting a LoopHint at the right place):
n-body              572.7142+-2.7052    
merge-sort          436.1483+-1.5764    
merge-sort-cps      443.3050+-11.2810   
bf-interpreter      260.9475+-4.1062    
&lt;geometric&gt;         412.1350+-2.9962

We finally improve merge-sort-cps a tiny bit, but at the cost of a significant regression on merge-sort. Is it due to some overhead from the way the patch works (since we add a No-op at the beginning of potential target blocks to have a place to easily put the LoopHint)? No, I tested a patch with just the transformation of No-op to LoopHint disabled, and it performs as the default (current) configuration:
n-body              575.9674+-2.9741    
merge-sort          400.1163+-4.3708    
merge-sort-cps      460.9874+-5.5892    
bf-interpreter      266.0997+-3.7222    
&lt;geometric&gt;         409.9563+-1.9411

Is it maybe due to a problem with OSR-entry at this specific point in the program? I tried making the patch insert a LoopHint but not marking it as a potential OSR entry point:
n-body              573.6579+-3.0651    
merge-sort          435.2522+-1.5020    
merge-sort-cps      446.3558+-10.7560   
bf-interpreter      263.8143+-3.2532    
&lt;geometric&gt;         413.9548+-2.7296 
No significant difference from the normal patch.

So at this point I tried a completely different approach: marking the jump back (by putting 1 into its m_opInfo2), and teaching CheckTierUpInjectionPhase to treat such a jump like a return or tail call and insert a CheckTierUpAtReturn just before it:
n-body              548.8219+-5.1428    
merge-sort          428.9825+-1.4452    
merge-sort-cps      432.5123+-4.8355    
bf-interpreter      256.7629+-2.6664    
&lt;geometric&gt;         402.0644+-2.0024
Great news: it not-only improves merge-sort-cps, it also improves bf-interpreter a tiny bit, and n-body a slightly larger amount. But it still makes merge-sort slower than the default!

At last, I tried running the optimisation only in FTL mode, and it proved even better for merge-sort-cps, same as that last patch for the rest:
n-body              548.3229+-5.8444    
merge-sort          427.2701+-1.7264    
merge-sort-cps      411.6702+-1.6944    
bf-interpreter      254.7185+-2.1882    
&lt;geometric&gt;         395.8613+-1.1237

So, here are my temporary conclusions:
- the patch I first proposed is strictly dominated by only running the optimisation in FTL
- the alternate patch the marks the jump is very similar to only running the optimisation in FTL, but is slower for merge-sort-cps
- the current (default) situation is only faster than optimizing purely in FTL for merge-sort.
- the optimisation is a win for all 4 benchmarks in all cases.

I will thus submit a patch that makes the optimisation only run in FTL, even though I am still confused as to what is actually going on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1420104</commentid>
    <comment_count>6</comment_count>
      <attachid>339404</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-05-03 06:37:49 -0700</bug_when>
    <thetext>Created attachment 339404
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422364</commentid>
    <comment_count>7</comment_count>
      <attachid>339404</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2018-05-09 11:17:32 -0700</bug_when>
    <thetext>Comment on attachment 339404
Patch

I&apos;ve tested the optimization with useFTLJIT=false, and it appears to have a positive impact in that case. So just running in FTL is probably not ideal, but I still recommend doing it as a simple performance improvement in the mean time.

Results (on the same machine as the previous results), without FTL and without the optimisation:
n-body              964.5178+-4.1374
merge-sort          550.7901+-4.0016
merge-sort-cps      514.8657+-2.3150
bf-interpreter      600.9773+-1.5814
&lt;geometric&gt;         636.7378+-0.6850

Results, without FTL but with the optimization:
n-body              901.5132+-1.7837
merge-sort          526.0939+-1.4784
merge-sort-cps      484.5323+-4.2516
bf-interpreter      515.0320+-5.5436
&lt;geometric&gt;         586.5377+-2.4870</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430579</commentid>
    <comment_count>8</comment_count>
      <attachid>339404</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-06-06 14:28:50 -0700</bug_when>
    <thetext>Comment on attachment 339404
Patch

r=me
Not CQ+ing since we should make sure this still applies cleanly to ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848969</commentid>
    <comment_count>9</comment_count>
      <attachid>454036</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2022-03-07 14:16:32 -0800</bug_when>
    <thetext>Created attachment 454036
Patch

Just rebased for landing, thanks Mark for reminding me of this super old patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849475</commentid>
    <comment_count>10</comment_count>
      <attachid>454036</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2022-03-08 16:50:28 -0800</bug_when>
    <thetext>Comment on attachment 454036
Patch

Trying to land this as all bots are green except for iOS-wk2 which appears to be down for all patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849518</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-08 18:54:21 -0800</bug_when>
    <thetext>Committed r291026 (248200@main): &lt;https://commits.webkit.org/248200@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 454036.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849519</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-08 18:55:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/90004728&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324603</attachid>
            <date>2017-10-23 15:55:52 -0700</date>
            <delta_ts>2018-05-03 06:37:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178389-20171024005550.patch</filename>
            <type>text/plain</type>
            <size>4283</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzODM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
Mzk1N2YwOWYyY2EwMjIzNmYzYmE2MGZmMDIwYTdiMzY2YjNhYWJjLi4zOGExMDM1MmQ0OWQ3ZTZl
ZGZjNmU4NGRhMmVmZGMzYzVhMzI1ZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxNy0xMC0yMyAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUu
Y29tPgorCisgICAgICAgIEVuYWJsZSB0aWVyLXVwIGluIGxvb3BzIGNyZWF0ZWQgYnkgcmVjdXJz
aXZlIHRhaWwgY2FsbCBvcHRpbWl6YXRpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4Mzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBkb25lIGJ5IGFkZGluZyBhIExvb3BIaW50IGF0
IHRoZSB0b3Agb2YgdGhlIG5ld2x5IGNyZWF0ZWQgbG9vcCwgYW5kIG1hcmtpbmcgaXQgYXMgYW4g
T1NSIGVudHJ5IHBvaW50IGlmIHdlIGFyZSBpbiB0aGUgbWFjaGluZSBjb2RlQmxvY2suCisgICAg
ICAgIEluIG9yZGVyIHRvIGhhdmUgc29tZXdoZXJlIHRvIHB1dCB0aGF0IExvb3BIaW50LCB3ZSBh
dXRvbWF0aWNhbGx5IGFkZCBhIENoZWNrIG5vZGUganVzdCBhZnRlciB0aGUgb3BfZW50ZXIgc3Bs
aXQsIHRvIGJlIG92ZXJ3cml0dGVuIGlmIGEgcmVjdXJzaXZlIHRhaWwgY2FsbCBpcyBsYXRlciBv
cHRpbWl6ZWQuCisKKyAgICAgICAgKiBkZmcvREZHQmFzaWNCbG9jay5oOgorICAgICAgICAoSlND
OjpERkc6OkJhc2ljQmxvY2s6OnJlcGxhY2VGaXJzdE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZVJlY3Vyc2l2ZVRhaWxDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6cGFyc2VDb2RlQmxvY2spOgorCiAyMDE3LTEwLTIzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtKU0NdIFVzZSBmYXN0Sm9pbiBpbiBBcnJheSN0
b1N0cmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAppbmRleCAx
ZTIzZTM3NjM3YzQzMWUxOGI2ODU4ZjE2YjYzNDkyZGM3YWNmODdiLi43MzJjNjBkZThlZWY3NDJl
OTAyMmFjZDM4MDE4NzMzMWE1MDQ3OWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Jhc2ljQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Jhc2ljQmxvY2suaApAQCAtMTE1LDcgKzExNSwxMyBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFJl
ZkNvdW50ZWQ8QmFzaWNCbG9jaz4gewogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX25vZGVz
Lmluc2VydChyZXN1bHQuaW5kZXgsIG5vZGUpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgcmVw
bGFjZUZpcnN0Tm9kZShOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
KG1fbm9kZXNbMF0tPm9wKCkgPT0gQ2hlY2spIHx8IChtX25vZGVzWzBdLT5vcCgpID09IG5vZGUt
Pm9wKCkpKTsKKyAgICAgICAgbV9ub2Rlc1swXSA9IG5vZGU7CisgICAgfQorCiAgICAgdm9pZCBy
ZXBsYWNlVGVybWluYWwoTm9kZSopOwogICAgIAogICAgIHNpemVfdCBudW1Ob2RlcygpIGNvbnN0
IHsgcmV0dXJuIHBoaXMuc2l6ZSgpICsgc2l6ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDM1Yjc2NDE5ZTE5Yjg1NzFhMjgy
MGJkNjBlZTdhZTA4ZWRhZTY1YWYuLjg0YjFiNzY1MjNlOTA0MGQ3ODllNWNkZGMzMDhjNmYzN2Mw
YWUwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCkBAIC0xNDcxLDEyICsxNDcxLDI0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZVJlY3Vyc2l2ZVRhaWxDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBjb25zdCBDYWxsTGluCiAg
ICAgICAgIG1fY3VycmVudEluZGV4ID0gT1BDT0RFX0xFTkdUSChvcF9lbnRlcik7CiAgICAgICAg
IG1fZXhpdE9LID0gdHJ1ZTsKICAgICAgICAgcHJvY2Vzc1NldExvY2FsUXVldWUoKTsKKworICAg
ICAgICBCYXNpY0Jsb2NrKiogZW50cnlCbG9ja1B0ciA9IHRyeUJpbmFyeVNlYXJjaDxCYXNpY0Js
b2NrKiwgdW5zaWduZWQ+KHN0YWNrRW50cnktPm1fYmxvY2tMaW5raW5nVGFyZ2V0cywgc3RhY2tF
bnRyeS0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLnNpemUoKSwgT1BDT0RFX0xFTkdUSChvcF9lbnRl
ciksIGdldEJ5dGVjb2RlQmVnaW5Gb3JCbG9jayk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVu
dHJ5QmxvY2tQdHIpOworCisgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKKyAgICAgICAgTm9kZSog
bG9vcEhpbnQgPSBtX2dyYXBoLmFkZE5vZGUoTG9vcEhpbnQsIGN1cnJlbnROb2RlT3JpZ2luKCks
IEVkZ2UoKSwgRWRnZSgpLCBFZGdlKCkpOworICAgICAgICAoKmVudHJ5QmxvY2tQdHIpLT5yZXBs
YWNlRmlyc3ROb2RlKGxvb3BIaW50KTsKKyAgICAgICAgLy8gV2UgbmV2ZXIgZG8gT1NSIGludG8g
YW4gaW5saW5lZCBjb2RlIGJsb2NrLiBUaGF0IGNvdWxkIG5vdCBoYXBwZW4sIHNpbmNlIE9TUgor
ICAgICAgICAvLyBsb29rcyB1cCB0aGUgY29kZSBibG9jayB0aGF0IGlzIHRoZSByZXBsYWNlbWVu
dCBmb3IgdGhlIGJhc2VsaW5lIEpJVCBjb2RlCisgICAgICAgIC8vIGJsb2NrLiBIZW5jZSwgbWFj
aGluZSBjb2RlIGJsb2NrID0gdHJ1ZSBjb2RlIGJsb2NrID0gbm90IGlubGluZSBjb2RlIGJsb2Nr
LgorICAgICAgICBpZiAoIXN0YWNrRW50cnktPm1fY2FsbGVyKQorICAgICAgICAgICAgKCplbnRy
eUJsb2NrUHRyKS0+aXNPU1JUYXJnZXQgPSB0cnVlOworCisKICAgICAgICAgbV9jdXJyZW50SW5k
ZXggPSBvbGRJbmRleDsKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcCA9IG9sZFN0YWNrVG9wOwog
ICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOwogCi0gICAgICAgIEJhc2ljQmxvY2sqKiBlbnRyeUJs
b2NrUHRyID0gdHJ5QmluYXJ5U2VhcmNoPEJhc2ljQmxvY2sqLCB1bnNpZ25lZD4oc3RhY2tFbnRy
eS0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLCBzdGFja0VudHJ5LT5tX2Jsb2NrTGlua2luZ1Rhcmdl
dHMuc2l6ZSgpLCBPUENPREVfTEVOR1RIKG9wX2VudGVyKSwgZ2V0Qnl0ZWNvZGVCZWdpbkZvckJs
b2NrKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoZW50cnlCbG9ja1B0cik7CiAgICAgICAgIGFk
ZEp1bXBUbygqZW50cnlCbG9ja1B0cik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAv
LyBJdCB3b3VsZCBiZSB1bnNvdW5kIHRvIGp1bXAgb3ZlciBhIG5vbi10YWlsIGNhbGw6IHRoZSAi
dGFpbCIgY2FsbCBpcyBub3QgcmVhbGx5IGEgdGFpbCBjYWxsIGluIHRoYXQgY2FzZS4KQEAgLTY0
NTIsNiArNjQ2NCwxMSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAg
ICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5pc09TUlRhcmdldCA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9yb290cy5hcHBlbmQobV9jdXJyZW50QmxvY2sp
OwogICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIEp1c3QgYWZ0ZXIgYW4g
b3BfZW50ZXIsIHdlIGFkZCBhIG5vLW9wIHRvIHRoZSBncmFwaCwgc28gdGhhdCBpdCBjYW4gYmUg
b3ZlcndyaXR0ZW4gYnkgYSBMb29wSGludCBpZiBhIHRhaWwgY2FsbCBpcyBvcHRpbWl6ZWQgaW50
byBhIGp1bXAgdG8gaXQuCisgICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudEluZGV4ID09IE9Q
Q09ERV9MRU5HVEgob3BfZW50ZXIpKQorICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENo
ZWNrKTsKKwogICAgICAgICAgICAgICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKICAgICAgICAg
ICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339404</attachid>
            <date>2018-05-03 06:37:49 -0700</date>
            <delta_ts>2022-03-07 14:16:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178389-20180503153748.patch</filename>
            <type>text/plain</type>
            <size>6020</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NDcwNjY4OGZiZDFlMGJlOGY0YWQ4MTcwMWVhNTYxYzRmODNhN2JlLi5jYzhlNzc3MGIyNTI3ZGU5
ZmZiN2U1ZDQ3ZjQ2MjQzMWY4ZjQzODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxOC0wNS0wMyAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUu
Y29tPgorCisgICAgICAgIEVuYWJsZSB0aWVyLXVwIGluIGxvb3BzIGNyZWF0ZWQgYnkgcmVjdXJz
aXZlIHRhaWwgY2FsbCBvcHRpbWl6YXRpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4Mzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTWFkZSB0aGUgcmVjdXJzaXZlIHRhaWwgY2FsbCBvcHRpbWl6
YXRpb24gb25seSBydW4gaW4gRlRMIG1vZGUsIHNpbmNlIGl0IGlzIGEgc2lnbmlmaWNhbnQgcHJv
Z3Jlc3Npb24gb24gVGFpbEJlbmNoLgorICAgICAgICBBbHNvIHNvbWUgdHJpdmlhbCByZWZhY3Rv
cmluZyBvZiBoYW5kbGVSZWN1cnNpdmVUYWlsQ2FsbC4KKworICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZVJlY3Vyc2l2ZVRhaWxDYWxsKToKKwogMjAxOC0wNS0wMyAgRG9taW5payBJbmZ1ZWhyICA8ZGlu
ZnVlaHJAaWdhbGlhLmNvbT4KIAogICAgICAgICBEaXNhYmxlIHVzYWdlIG9mIGZ1c2VkIG11bHRp
cGx5LWFkZCBpbnN0cnVjdGlvbnMgZm9yIEpTQyB3aXRoIGNvbXBpbGVyIGZsYWcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggNGYzZWRl
MWRhMWZiN2YxNmY1NTFmMjM0ODg4OGRhMzg5M2U2YzVhNC4uMDc0YTNmZjM0NmVjYmY4OTMzOTRi
ZTE5ZTUzY2YxNzIwZTU1NmQwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTEzNjEsNiArMTM2MSwxMSBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVSZWN1cnNpdmVUYWlsQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgQ2Fs
bFZhcmlhbnQgYwogICAgIGlmIChVTkxJS0VMWSghT3B0aW9uczo6b3B0aW1pemVSZWN1cnNpdmVU
YWlsQ2FsbHMoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIC8vIFRoaXMgb3B0aW1p
c2F0aW9uIGJyaW5ncyBtb3JlIHBlcmZvcm1hbmNlIGlmIGl0IG9ubHkgcnVucyBpbiBGVEwsIHBy
b2JhYmx5IGJlY2F1c2UgaXQgaW50ZXJmZXJlcyB3aXRoIHRpZXItdXAuCisgICAgLy8gU2VlIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgzODkgZm9yIGRldGFpbHMu
CisgICAgaWYgKCFpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCiAgICAgYXV0byB0YXJnZXRFeGVjdXRhYmxlID0gY2FsbFZhcmlhbnQuZXhlY3V0YWJs
ZSgpOwogICAgIElubGluZVN0YWNrRW50cnkqIHN0YWNrRW50cnkgPSBtX2lubGluZVN0YWNrVG9w
OwogICAgIGRvIHsKQEAgLTEzNzMsNiArMTM3OCwxMCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVSZWN1cnNpdmVUYWlsQ2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgQ2FsbFZhcmlhbnQg
YwogICAgICAgICAgICAgLy8gV2UgImNvbnRpbnVlIiBpbnN0ZWFkIG9mIHJldHVybmluZyBmYWxz
ZSBpbiBjYXNlIGFub3RoZXIgc3RhY2sgZW50cnkgZnVydGhlciBvbiB0aGUgc3RhY2sgaGFzIHRo
ZSByaWdodCBudW1iZXIgb2YgYXJndW1lbnRzLgogICAgICAgICAgICAgaWYgKGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzICE9IHN0YXRpY19jYXN0PGludD4oY2FsbEZyYW1lLT5hcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcykpCiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAvLyBJZiBhbiBJbmxpbmVDYWxsRnJhbWUgaXMgbm90IGEgY2xvc3VyZSwgaXQgd2FzIG9wdGlt
aXplZCB1c2luZyBhIGNvbnN0YW50IGNhbGxlZS4KKyAgICAgICAgICAgIC8vIENoZWNrIGlmIHRo
aXMgaXMgdGhlIHNhbWUgY2FsbGVlIHRoYXQgd2UgYXJlIGRlYWxpbmcgd2l0aC4KKyAgICAgICAg
ICAgIGlmICghY2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsICYmIGNhbGxGcmFtZS0+Y2FsbGVlQ29u
c3RhbnQoKSAhPSBjYWxsVmFyaWFudC5mdW5jdGlvbigpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gV2UgYXJlIGluIHRoZSBtYWNo
aW5lIGNvZGUgZW50cnkgKGkuZS4gdGhlIG9yaWdpbmFsIGNhbGxlcikuCiAgICAgICAgICAgICAv
LyBJZiB3ZSBoYXZlIG1vcmUgYXJndW1lbnRzIHRoYW4gdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJz
IHRvIHRoZSBmdW5jdGlvbiwgaXQgaXMgbm90IGNsZWFyIHdoZXJlIHdlIGNvdWxkIHB1dCB0aGVt
IG9uIHRoZSBzdGFjay4KQEAgLTEzODAsMjQgKzEzODksMTYgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlUmVjdXJzaXZlVGFpbENhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIENhbGxWYXJp
YW50IGMKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAg
ICAvLyBJZiBhbiBJbmxpbmVDYWxsRnJhbWUgaXMgbm90IGEgY2xvc3VyZSwgaXQgd2FzIG9wdGlt
aXplZCB1c2luZyBhIGNvbnN0YW50IGNhbGxlZS4KLSAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBp
cyB0aGUgc2FtZSBjYWxsZWUgdGhhdCB3ZSB0cnkgdG8gaW5saW5lIGhlcmUuCi0gICAgICAgIGlm
IChzdGFja0VudHJ5LT5tX2lubGluZUNhbGxGcmFtZSAmJiAhc3RhY2tFbnRyeS0+bV9pbmxpbmVD
YWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpIHsKLSAgICAgICAgICAgIGlmIChzdGFja0VudHJ5LT5t
X2lubGluZUNhbGxGcmFtZS0+Y2FsbGVlQ29uc3RhbnQoKSAhPSBjYWxsVmFyaWFudC5mdW5jdGlv
bigpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KICAgICAgICAgLy8g
V2UgbXVzdCBhZGQgc29tZSBjaGVjayB0aGF0IHRoZSBwcm9maWxpbmcgaW5mb3JtYXRpb24gd2Fz
IGNvcnJlY3QgYW5kIHRoZSB0YXJnZXQgb2YgdGhpcyBjYWxsIGlzIHdoYXQgd2UgdGhvdWdodC4K
ICAgICAgICAgZW1pdEZ1bmN0aW9uQ2hlY2tJZk5lZWRlZCgpOwogICAgICAgICAvLyBXZSBmbHVz
aCBldmVyeXRoaW5nLCBhcyBpZiB3ZSB3ZXJlIGluIHRoZSBiYWNrZWRnZSBvZiBhIGxvb3AgKHNl
ZSB0cmVhdG1lbnQgb2Ygb3Bfam1wIGluIHBhcnNlQmxvY2spLgogICAgICAgICBmbHVzaEZvclRl
cm1pbmFsKCk7CiAKICAgICAgICAgLy8gV2UgbXVzdCBzZXQgdGhlIGNhbGxlZSB0byB0aGUgcmln
aHQgdmFsdWUKLSAgICAgICAgaWYgKHN0YWNrRW50cnktPm1faW5saW5lQ2FsbEZyYW1lKSB7Ci0g
ICAgICAgICAgICBpZiAoc3RhY2tFbnRyeS0+bV9pbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNh
bGwpCi0gICAgICAgICAgICAgICAgc2V0RGlyZWN0KHN0YWNrRW50cnktPnJlbWFwT3BlcmFuZChW
aXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSksIGNhbGxUYXJnZXROb2RlLCBO
b3JtYWxTZXQpOwotICAgICAgICB9IGVsc2UKKyAgICAgICAgaWYgKCFzdGFja0VudHJ5LT5tX2lu
bGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgIGFkZFRvR3JhcGgoU2V0Q2FsbGVlLCBjYWxsVGFy
Z2V0Tm9kZSk7CisgICAgICAgIGVsc2UgaWYgKHN0YWNrRW50cnktPm1faW5saW5lQ2FsbEZyYW1l
LT5pc0Nsb3N1cmVDYWxsKQorICAgICAgICAgICAgc2V0RGlyZWN0KHN0YWNrRW50cnktPnJlbWFw
T3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSksIGNhbGxUYXJn
ZXROb2RlLCBOb3JtYWxTZXQpOwogCiAgICAgICAgIC8vIFdlIG11c3Qgc2V0IHRoZSBhcmd1bWVu
dHMgdG8gdGhlIHJpZ2h0IHZhbHVlcwogICAgICAgICBpZiAoIXN0YWNrRW50cnktPm1faW5saW5l
Q2FsbEZyYW1lKQpAQCAtMTQzNCw3ICsxNDM1LDYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlUmVjdXJzaXZlVGFpbENhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIENhbGxWYXJpYW50IGMK
ICAgICAgICAgLy8gSXQgd291bGQgYmUgdW5zb3VuZCB0byBqdW1wIG92ZXIgYSBub24tdGFpbCBj
YWxsOiB0aGUgInRhaWwiIGNhbGwgaXMgbm90IHJlYWxseSBhIHRhaWwgY2FsbCBpbiB0aGF0IGNh
c2UuCiAgICAgfSB3aGlsZSAoc3RhY2tFbnRyeS0+bV9pbmxpbmVDYWxsRnJhbWUgJiYgc3RhY2tF
bnRyeS0+bV9pbmxpbmVDYWxsRnJhbWUtPmtpbmQgPT0gSW5saW5lQ2FsbEZyYW1lOjpUYWlsQ2Fs
bCAmJiAoc3RhY2tFbnRyeSA9IHN0YWNrRW50cnktPm1fY2FsbGVyKSk7CiAKLSAgICAvLyBUaGUg
dGFpbCBjYWxsIHdhcyBub3QgcmVjdXJzaXZlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDcxNDBhOWIxYmEyYTBhMTVlYWViOTNjMmM3YjI0NDc4M2Y5YTMwZWMuLmFi
ZmY4NDlhYjEwNjkxYjJiMTJhNjNkZGE2MzVlNWEzOWE0YWVhOGIgMTAwNjQ0Ci0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTgtMDUtMDMgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFw
cGxlLmNvbT4KKworICAgICAgICBFbmFibGUgdGllci11cCBpbiBsb29wcyBjcmVhdGVkIGJ5IHJl
Y3Vyc2l2ZSB0YWlsIGNhbGwgb3B0aW1pemF0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODM4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEp1c3QgY2hhbmdlZCBhIGNvbnN0YW50IGZvciBjb25z
aXN0ZW5jeSB3aXRoIFRhaWxCZW5jaDkwMDAvbWVyZ2Utc29ydC5qcworCisgICAgICAgICogVGFp
bEJlbmNoOTAwMC9tZXJnZS1zb3J0LWNwcy5qczoKKwogMjAxOC0wNC0zMCAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIEltcHJvdmUgdGhlIHBlcmZv
cm1hbmNlIG9mIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24ncyBlZmZlY3RpdmVGYW1pbGllcwpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9UYWlsQmVuY2g5MDAwL21lcmdlLXNvcnQtY3BzLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9UYWlsQmVuY2g5MDAwL21lcmdlLXNvcnQtY3BzLmpzCmluZGV4
IGZmZjMxYTZiOGQwMTRiYjZlYTE5MTdmZGIyYzU1NWIxOTE4NWYzMzcuLjcxMGFmZjVkMDQ1ZGIz
NWY4ZjUzOWZlZGNmODc3NTkwMWFiODY5MGQgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMv
VGFpbEJlbmNoOTAwMC9tZXJnZS1zb3J0LWNwcy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Rh
aWxCZW5jaDkwMDAvbWVyZ2Utc29ydC1jcHMuanMKQEAgLTEzMSw3ICsxMzEsNyBAQCBmdW5jdGlv
biBidWlsZEFycmF5KGxlbmd0aCwgdmFsdWUpCiBsZXQgYXJyYXlzID0gWwogICAgIGJ1aWxkQXJy
YXkoMTAsIHggPT4geCksCiAgICAgYnVpbGRBcnJheSgxMCwgeCA9PiAteCksCi0gICAgYnVpbGRB
cnJheSgxMDAwLCB4ID0+IHJhbmRvbSgpKQorICAgIGJ1aWxkQXJyYXkoMTAwMDAsIHggPT4gcmFu
ZG9tKCkpCiBdOwogCiBmdW5jdGlvbiB0ZXN0KGluZGV4KQo=
</data>
<flag name="review"
          id="357651"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454036</attachid>
            <date>2022-03-07 14:16:32 -0800</date>
            <delta_ts>2022-03-08 18:54:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch178389</filename>
            <type>text/plain</type>
            <size>5565</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggMzI4NTMzN2Y5N2IxLi5iZTNmMGI3MjcxZjYgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDMtMDcgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlz
c2V0QGFwcGxlLmNvbT4KKworICAgICAgICBFbmFibGUgdGllci11cCBpbiBsb29wcyBjcmVhdGVk
IGJ5IHJlY3Vyc2l2ZSB0YWlsIGNhbGwgb3B0aW1pemF0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODM4OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgIEp1c3QgY2hhbmdlZCBhIGNvbnN0YW50IGZvciBj
b25zaXN0ZW5jeSB3aXRoIFRhaWxCZW5jaDkwMDAvbWVyZ2Utc29ydC5qcworCisgICAgICAgICog
VGFpbEJlbmNoOTAwMC9tZXJnZS1zb3J0LWNwcy5qczoKKwogMjAyMi0wMy0wMSAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBTcGVlZG9tZXRlcidzIHNl
dFRpbWVvdXQgdGhyb3R0bGluZyBpc3N1ZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9U
YWlsQmVuY2g5MDAwL21lcmdlLXNvcnQtY3BzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9UYWlsQmVu
Y2g5MDAwL21lcmdlLXNvcnQtY3BzLmpzCmluZGV4IGZmZjMxYTZiOGQwMS4uNzEwYWZmNWQwNDVk
IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1RhaWxCZW5jaDkwMDAvbWVyZ2Utc29ydC1j
cHMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9UYWlsQmVuY2g5MDAwL21lcmdlLXNvcnQtY3Bz
LmpzCkBAIC0xMzEsNyArMTMxLDcgQEAgZnVuY3Rpb24gYnVpbGRBcnJheShsZW5ndGgsIHZhbHVl
KQogbGV0IGFycmF5cyA9IFsKICAgICBidWlsZEFycmF5KDEwLCB4ID0+IHgpLAogICAgIGJ1aWxk
QXJyYXkoMTAsIHggPT4gLXgpLAotICAgIGJ1aWxkQXJyYXkoMTAwMCwgeCA9PiByYW5kb20oKSkK
KyAgICBidWlsZEFycmF5KDEwMDAwLCB4ID0+IHJhbmRvbSgpKQogXTsKIAogZnVuY3Rpb24gdGVz
dChpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGQ5N2MxMjMyNjU3Yi4uZTgxZjlm
M2VlNDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0w
My0wNyAgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBF
bmFibGUgdGllci11cCBpbiBsb29wcyBjcmVhdGVkIGJ5IHJlY3Vyc2l2ZSB0YWlsIGNhbGwgb3B0
aW1pemF0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3ODM4OQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAg
IE1hZGUgdGhlIHJlY3Vyc2l2ZSB0YWlsIGNhbGwgb3B0aW1pemF0aW9uIG9ubHkgcnVuIGluIEZU
TCBtb2RlLCBzaW5jZSBpdCBpcyBhIHNpZ25pZmljYW50IHByb2dyZXNzaW9uIG9uIFRhaWxCZW5j
aC4KKyAgICAgICAgQWxzbyBzb21lIHRyaXZpYWwgcmVmYWN0b3Jpbmcgb2YgaGFuZGxlUmVjdXJz
aXZlVGFpbENhbGwuCisKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVSZWN1cnNpdmVUYWlsQ2FsbCk6
CisKIDIwMjItMDMtMDcgIEFuZ2Vsb3MgT2lrb25vbW9wb3Vsb3MgIDxhbmdlbG9zQGlnYWxpYS5j
b20+CiAKICAgICAgICAgQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnM6IHVzZSBsb2FkL3N0b3JlIHBh
aXIgb24gQVJNdjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggN2E0ZmUwMzk2MWU4Li5kOThmYjc2ZWNiNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0xNDY3LDYgKzE0
NjcsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUmVjdXJzaXZlVGFpbENhbGwoTm9k
ZSogY2FsbFRhcmdldE5vZGUsIENhbGxWYXJpYW50IGMKICAgICBpZiAoVU5MSUtFTFkoIU9wdGlv
bnM6Om9wdGltaXplUmVjdXJzaXZlVGFpbENhbGxzKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKKyAgICAvLyBUaGlzIG9wdGltaXNhdGlvbiBicmluZ3MgbW9yZSBwZXJmb3JtYW5jZSBpZiBp
dCBvbmx5IHJ1bnMgaW4gRlRMLCBwcm9iYWJseSBiZWNhdXNlIGl0IGludGVyZmVyZXMgd2l0aCB0
aWVyLXVwLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc4Mzg5IGZvciBkZXRhaWxzLgorICAgIGlmICghaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9k
ZSgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgYXV0byB0YXJnZXRFeGVjdXRhYmxl
ID0gY2FsbFZhcmlhbnQuZXhlY3V0YWJsZSgpOwogICAgIElubGluZVN0YWNrRW50cnkqIHN0YWNr
RW50cnkgPSBtX2lubGluZVN0YWNrVG9wOwogICAgIGRvIHsKQEAgLTE0ODgsNiArMTQ5MywxMCBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVSZWN1cnNpdmVUYWlsQ2FsbChOb2RlKiBjYWxs
VGFyZ2V0Tm9kZSwgQ2FsbFZhcmlhbnQgYwogICAgICAgICAgICAgLy8gYSBnb29kIHRhcmdldCB0
byBqdW1wIGludG8uCiAgICAgICAgICAgICBpZiAoY2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIC8vIElmIGFuIElubGluZUNhbGxG
cmFtZSBpcyBub3QgYSBjbG9zdXJlLCBpdCB3YXMgb3B0aW1pemVkIHVzaW5nIGEgY29uc3RhbnQg
Y2FsbGVlLgorICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyB0aGUgc2FtZSBjYWxsZWUg
dGhhdCB3ZSBhcmUgZGVhbGluZyB3aXRoLgorICAgICAgICAgICAgaWYgKCFjYWxsRnJhbWUtPmlz
Q2xvc3VyZUNhbGwgJiYgY2FsbEZyYW1lLT5jYWxsZWVDb25zdGFudCgpICE9IGNhbGxWYXJpYW50
LmZ1bmN0aW9uKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAvLyBXZSBhcmUgaW4gdGhlIG1hY2hpbmUgY29kZSBlbnRyeSAoaS5lLiB0
aGUgb3JpZ2luYWwgY2FsbGVyKS4KICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgbW9yZSBhcmd1
bWVudHMgdGhhbiB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMgdG8gdGhlIGZ1bmN0aW9uLCBpdCBp
cyBub3QgY2xlYXIgd2hlcmUgd2UgY291bGQgcHV0IHRoZW0gb24gdGhlIHN0YWNrLgpAQCAtMTQ5
NSwyNCArMTUwNCwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVSZWN1cnNpdmVUYWls
Q2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgQ2FsbFZhcmlhbnQgYwogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIElmIGFuIElubGluZUNhbGxG
cmFtZSBpcyBub3QgYSBjbG9zdXJlLCBpdCB3YXMgb3B0aW1pemVkIHVzaW5nIGEgY29uc3RhbnQg
Y2FsbGVlLgotICAgICAgICAvLyBDaGVjayBpZiB0aGlzIGlzIHRoZSBzYW1lIGNhbGxlZSB0aGF0
IHdlIHRyeSB0byBpbmxpbmUgaGVyZS4KLSAgICAgICAgaWYgKHN0YWNrRW50cnktPm1faW5saW5l
Q2FsbEZyYW1lICYmICFzdGFja0VudHJ5LT5tX2lubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2Fs
bCkgewotICAgICAgICAgICAgaWYgKHN0YWNrRW50cnktPm1faW5saW5lQ2FsbEZyYW1lLT5jYWxs
ZWVDb25zdGFudCgpICE9IGNhbGxWYXJpYW50LmZ1bmN0aW9uKCkpCi0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIH0KLQogICAgICAgICAvLyBXZSBtdXN0IGFkZCBzb21lIGNoZWNr
IHRoYXQgdGhlIHByb2ZpbGluZyBpbmZvcm1hdGlvbiB3YXMgY29ycmVjdCBhbmQgdGhlIHRhcmdl
dCBvZiB0aGlzIGNhbGwgaXMgd2hhdCB3ZSB0aG91Z2h0LgogICAgICAgICBlbWl0RnVuY3Rpb25D
aGVja0lmTmVlZGVkKCk7CiAgICAgICAgIC8vIFdlIGZsdXNoIGV2ZXJ5dGhpbmcsIGFzIGlmIHdl
IHdlcmUgaW4gdGhlIGJhY2tlZGdlIG9mIGEgbG9vcCAoc2VlIHRyZWF0bWVudCBvZiBvcF9qbXAg
aW4gcGFyc2VCbG9jaykuCiAgICAgICAgIGZsdXNoRm9yVGVybWluYWwoKTsKIAogICAgICAgICAv
LyBXZSBtdXN0IHNldCB0aGUgY2FsbGVlIHRvIHRoZSByaWdodCB2YWx1ZQotICAgICAgICBpZiAo
c3RhY2tFbnRyeS0+bV9pbmxpbmVDYWxsRnJhbWUpIHsKLSAgICAgICAgICAgIGlmIChzdGFja0Vu
dHJ5LT5tX2lubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkKLSAgICAgICAgICAgICAgICBz
ZXREaXJlY3QocmVtYXBPcGVyYW5kKHN0YWNrRW50cnktPm1faW5saW5lQ2FsbEZyYW1lLCBDYWxs
RnJhbWVTbG90OjpjYWxsZWUpLCBjYWxsVGFyZ2V0Tm9kZSwgTm9ybWFsU2V0KTsKLSAgICAgICAg
fSBlbHNlCisgICAgICAgIGlmICghc3RhY2tFbnRyeS0+bV9pbmxpbmVDYWxsRnJhbWUpCiAgICAg
ICAgICAgICBhZGRUb0dyYXBoKFNldENhbGxlZSwgY2FsbFRhcmdldE5vZGUpOworICAgICAgICBl
bHNlIGlmIChzdGFja0VudHJ5LT5tX2lubGluZUNhbGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCkKKyAg
ICAgICAgICAgIHNldERpcmVjdChyZW1hcE9wZXJhbmQoc3RhY2tFbnRyeS0+bV9pbmxpbmVDYWxs
RnJhbWUsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksIGNhbGxUYXJnZXROb2RlLCBOb3JtYWxTZXQp
OworCiAKICAgICAgICAgLy8gV2UgbXVzdCBzZXQgdGhlIGFyZ3VtZW50cyB0byB0aGUgcmlnaHQg
dmFsdWVzCiAgICAgICAgIGlmICghc3RhY2tFbnRyeS0+bV9pbmxpbmVDYWxsRnJhbWUpCkBAIC0x
NTUwLDcgKzE1NTIsNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVSZWN1cnNpdmVUYWls
Q2FsbChOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgQ2FsbFZhcmlhbnQgYwogICAgICAgICAvLyBJdCB3
b3VsZCBiZSB1bnNvdW5kIHRvIGp1bXAgb3ZlciBhIG5vbi10YWlsIGNhbGw6IHRoZSAidGFpbCIg
Y2FsbCBpcyBub3QgcmVhbGx5IGEgdGFpbCBjYWxsIGluIHRoYXQgY2FzZS4KICAgICB9IHdoaWxl
IChzdGFja0VudHJ5LT5tX2lubGluZUNhbGxGcmFtZSAmJiBzdGFja0VudHJ5LT5tX2lubGluZUNh
bGxGcmFtZS0+a2luZCA9PSBJbmxpbmVDYWxsRnJhbWU6OlRhaWxDYWxsICYmIChzdGFja0VudHJ5
ID0gc3RhY2tFbnRyeS0+bV9jYWxsZXIpKTsKIAotICAgIC8vIFRoZSB0YWlsIGNhbGwgd2FzIG5v
dCByZWN1cnNpdmUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>