<?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>144945</bug_id>
          
          <creation_ts>2015-05-12 21:57:30 -0700</creation_ts>
          <short_desc>The liveness pruning done by ObjectAllocationSinkingPhase ignores the possibility of an object&apos;s bytecode liveness being longer than its DFG liveness</short_desc>
          <delta_ts>2015-05-13 15:18:23 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>144853</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>basile_clement</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1094401</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-12 21:57:30 -0700</bug_when>
    <thetext>This fails every time, because in the continuation after the ternary expression in foo(), we have materialized the activation if p was true but we haven&apos;t done so if p was false.  We think that we don&apos;t need to place a materialization point on the false path (or to avoid sinking entirely) because we don&apos;t realize that the activation is still live after the ternary.  We don&apos;t know that it&apos;s live because we&apos;re using DFG liveness instead of both DFG and bytecode liveness.

function foo(p) {
    var result = 0;
    var o = {valueOf: function() { result = 1; }};
    var q = {f: p ? o : 42};
    var tmp = q.f + 1;
    return result;
}

noInline(foo);

for (var i = 0; i &lt; 10000; ++i) {
    var result = foo(false);
    if (result !== 0)
        throw &quot;Error: bad result: &quot; + result;
}

var result = foo(true);
if (result !== 1)
    throw &quot;Error: bad result at end: &quot; + result;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094403</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-12 21:58:51 -0700</bug_when>
    <thetext>Bugs like this make me question why we even make it possible to ask for DFG liveness without that answer also telling us the bytecode liveness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094404</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-12 21:59:37 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Bugs like this make me question why we even make it possible to ask for DFG
&gt; liveness without that answer also telling us the bytecode liveness.

Never mind, that&apos;s a dumb observation. The most important client of DFG liveness is AI, which uses it for pruning and doesn&apos;t care about bytecode liveness at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094493</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-13 11:01:35 -0700</bug_when>
    <thetext>Another test:

var global = null;

function foo(p, q) {
    var o = {f:42};
    if (p)
        global = o;
    var tmp = q + 1;
    return o.f + tmp;
}

noInline(foo);

var lastObject = null;

function validateEscape(when) {
    if (global === lastObject)
        throw &quot;Error: bad value in global &quot; + when + &quot;, identical to lastObject.&quot;;
    if (global === null || !(typeof global == &quot;object&quot;))
        throw &quot;Error: bad value in global &quot; + when + &quot;: it&apos;s not an object.&quot;;
    if (global.f != 42)
        throw &quot;Error: bad value in global &quot; + when + &quot;: f isn&apos;t 42, it&apos;s: &quot; + global.f;
    lastObject = global;
    global = null;
}

for (var i = 0; i &lt; 10000; ++i) {
    var escape = !!(i &amp; 1);
    var result = foo(escape, 42);
    if (result != 42 + 42 + 1)
        throw &quot;Error: bad result: &quot; + result;
    if (escape)
        validateEscape(&quot;in loop&quot;);
    else if (global !== null)
        throw &quot;Error: bad value in global: &quot; + global;
}

var result = foo(true, 2147483647);
if (result != 42 + 2147483647 + 1)
    throw &quot;Error: bad result at end: &quot; + result;
validateEscape(&quot;at end&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094549</commentid>
    <comment_count>4</comment_count>
      <attachid>253051</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-13 12:54:59 -0700</bug_when>
    <thetext>Created attachment 253051
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094550</commentid>
    <comment_count>5</comment_count>
      <attachid>253051</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-13 12:55:19 -0700</bug_when>
    <thetext>Comment on attachment 253051
the patch

Clearing r? because I should probably perf test this very carefully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094552</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-13 12:57:06 -0700</bug_when>
    <thetext>Attachment 253051 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGCombinedLiveness.cpp:47:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGCombinedLiveness.h:37:  The parameter name &quot;graph&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGCombinedLiveness.h:37:  The parameter name &quot;block&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 3 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094561</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-13 13:29:38 -0700</bug_when>
    <thetext>Looks like I didn&apos;t break anything too badly.


Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on dethklok (MacBookPro9,1).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/tertiary/OpenSource/WebKitBuild/Release/jsc (r184288)
&quot;FixThingies&quot; at /Volumes/Data/pizlo/quartary/OpenSource/WebKitBuild/Release/jsc (r184288)

Collected 6 samples per benchmark/VM, with 6 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.

                                                        TipOfTree                FixThingies                                    
SunSpider:
   3d-cube                                            5.2002+-0.1954            5.1626+-0.0588        
   3d-morph                                           6.0260+-0.6010     ?      6.0988+-0.5010        ? might be 1.0121x slower
   3d-raytrace                                        6.5802+-0.1433            6.5634+-0.1327        
   access-binary-trees                                2.3208+-0.1105     ?      2.4371+-0.1192        ? might be 1.0501x slower
   access-fannkuch                                    5.9623+-0.1081            5.9535+-0.1777        
   access-nbody                                       3.0112+-0.1184     ?      3.1295+-0.3601        ? might be 1.0393x slower
   access-nsieve                                      3.2177+-0.1013            3.1611+-0.1231          might be 1.0179x faster
   bitops-3bit-bits-in-byte                           1.6567+-0.1326            1.5861+-0.0234          might be 1.0445x faster
   bitops-bits-in-byte                                3.5299+-0.3339            3.4894+-0.2189          might be 1.0116x faster
   bitops-bitwise-and                                 2.2087+-0.2250     ?      2.5187+-0.4311        ? might be 1.1403x slower
   bitops-nsieve-bits                                 3.5922+-0.2361            3.4156+-0.0677          might be 1.0517x faster
   controlflow-recursive                              2.2665+-0.0443     ?      2.3359+-0.1300        ? might be 1.0306x slower
   crypto-aes                                         4.6857+-0.3360            4.4684+-0.1605          might be 1.0486x faster
   crypto-md5                                         3.2595+-1.0262            2.8897+-0.2822          might be 1.1280x faster
   crypto-sha1                                        2.6503+-0.1438     ?      2.7703+-0.2007        ? might be 1.0453x slower
   date-format-tofte                                  9.4430+-0.2850     ?      9.8151+-0.3539        ? might be 1.0394x slower
   date-format-xparb                                  5.8045+-0.1707     ?      5.9838+-0.4443        ? might be 1.0309x slower
   math-cordic                                        3.1745+-0.1156            3.1473+-0.1715        
   math-partial-sums                                  5.5549+-0.3351            5.4035+-0.3497          might be 1.0280x faster
   math-spectral-norm                                 2.0540+-0.1288            2.0213+-0.0896          might be 1.0161x faster
   regexp-dna                                         7.4607+-0.7127     ?      8.0748+-1.3540        ? might be 1.0823x slower
   string-base64                                      4.9790+-0.7554     ?      5.4877+-1.2846        ? might be 1.1022x slower
   string-fasta                                       6.7468+-0.1580     ?      7.0565+-1.0705        ? might be 1.0459x slower
   string-tagcloud                                    9.4782+-1.0057     ?      9.7760+-1.4646        ? might be 1.0314x slower
   string-unpack-code                                19.7032+-0.4643     ?     20.1433+-1.1827        ? might be 1.0223x slower
   string-validate-input                              5.1042+-0.2611     ?      5.2923+-0.4773        ? might be 1.0369x slower

   &lt;arithmetic&gt;                                       5.2181+-0.0739     ?      5.3147+-0.0931        ? might be 1.0185x slower

                                                        TipOfTree                FixThingies                                    
LongSpider:
   3d-cube                                          877.7155+-7.7725     ?    879.3256+-9.8567        ?
   3d-morph                                        1528.7699+-3.5887     ?   1532.7155+-15.4735       ?
   3d-raytrace                                      729.0023+-3.0880          727.5542+-7.0702        
   access-binary-trees                             1012.6830+-8.9830         1011.6504+-12.0866       
   access-fannkuch                                  327.4650+-9.8020          325.8355+-12.3228       
   access-nbody                                     619.5641+-7.6030          617.2178+-2.4351        
   access-nsieve                                    481.8691+-5.8999     ?    482.7452+-7.1025        ?
   bitops-3bit-bits-in-byte                          46.4827+-2.3200           45.3466+-1.6033          might be 1.0251x faster
   bitops-bits-in-byte                              105.3243+-5.1140          102.3203+-3.7074          might be 1.0294x faster
   bitops-nsieve-bits                               423.1814+-4.9988          419.5937+-2.3497        
   controlflow-recursive                            501.8440+-9.6259     ^    483.7972+-0.9081        ^ definitely 1.0373x faster
   crypto-aes                                       703.2701+-8.8848     ?    706.6485+-6.8640        ?
   crypto-md5                                       526.7107+-11.6543         520.2538+-18.7438         might be 1.0124x faster
   crypto-sha1                                      594.2837+-4.4859     ?    595.4454+-6.3655        ?
   date-format-tofte                                734.2985+-11.5387    !    761.7472+-14.6160       ! definitely 1.0374x slower
   date-format-xparb                                792.1957+-19.2447    ?    797.9488+-35.6311       ?
   hash-map                                         190.6460+-36.7466         169.8418+-2.8360          might be 1.1225x faster
   math-cordic                                      590.9899+-4.2658          588.1420+-3.7914        
   math-partial-sums                                503.8551+-1.9292     ?    506.0948+-3.2050        ?
   math-spectral-norm                               565.5621+-2.5219          563.8293+-0.8849        
   string-base64                                    376.2363+-5.5440     ?    377.7590+-5.9596        ?
   string-fasta                                     438.1228+-2.9249          437.2507+-7.1759        
   string-tagcloud                                  200.5420+-3.1439          195.5924+-2.5285          might be 1.0253x faster

   &lt;geometric&gt;                                      454.7923+-3.0971          450.9237+-0.9704          might be 1.0086x faster

                                                        TipOfTree                FixThingies                                    
V8Spider:
   crypto                                            56.6870+-2.4499           55.6864+-2.4727          might be 1.0180x faster
   deltablue                                         93.5605+-2.2655     ?     96.5793+-3.4195        ? might be 1.0323x slower
   earley-boyer                                      44.6254+-0.9218     ?     44.7498+-1.0889        ?
   raytrace                                          44.0024+-3.6785           40.0538+-2.1708          might be 1.0986x faster
   regexp                                            83.1465+-1.6861           82.3719+-2.7861        
   richards                                          81.0850+-1.1314           80.4755+-0.9369        
   splay                                             40.5419+-1.6954           40.4784+-1.6453        

   &lt;geometric&gt;                                       60.1088+-0.7768           59.2981+-0.6953          might be 1.0137x faster

                                                        TipOfTree                FixThingies                                    
Octane:
   encrypt                                           0.20451+-0.00286    ?     0.20530+-0.00175       ?
   decrypt                                           3.56218+-0.03050    ?     3.57375+-0.02496       ?
   deltablue                                x2       0.20558+-0.00170    ?     0.20604+-0.00080       ?
   earley                                            0.47618+-0.00437          0.47079+-0.00261         might be 1.0115x faster
   boyer                                             6.65188+-0.06330          6.61516+-0.04011       
   navier-stokes                            x2       5.21015+-0.04564          5.17201+-0.00209       
   raytrace                                 x2       1.28292+-0.06000    ?     1.29614+-0.04974       ? might be 1.0103x slower
   richards                                 x2       0.12293+-0.00155          0.12277+-0.00193       
   splay                                    x2       0.40118+-0.00394    ^     0.39235+-0.00370       ^ definitely 1.0225x faster
   regexp                                   x2      32.09727+-0.36852         31.69224+-0.20697         might be 1.0128x faster
   pdfjs                                    x2      42.60035+-0.22205    ?    42.75205+-0.29456       ?
   mandreel                                 x2      50.02782+-0.57827    ?    50.18157+-0.53272       ?
   gbemu                                    x2      41.80266+-0.35636         41.47489+-0.48345       
   closure                                           0.56185+-0.00518          0.55754+-0.00435       
   jquery                                            7.09941+-0.03806    ?     7.12974+-0.14307       ?
   box2d                                    x2      12.42189+-0.09692    ?    12.46614+-0.13084       ?
   zlib                                     x2     391.42505+-13.83073       380.86030+-20.05847        might be 1.0277x faster
   typescript                               x2     818.06340+-14.28048   ?   824.65267+-10.25028      ?

   &lt;geometric&gt;                                       6.67644+-0.02880          6.65202+-0.03107         might be 1.0037x faster

                                                        TipOfTree                FixThingies                                    
Kraken:
   ai-astar                                          278.905+-2.087            278.518+-2.541         
   audio-beat-detection                              106.425+-0.828      ?     107.735+-3.089         ? might be 1.0123x slower
   audio-dft                                         118.818+-2.199      ?     120.898+-1.913         ? might be 1.0175x slower
   audio-fft                                          82.237+-3.705      ?      83.776+-7.106         ? might be 1.0187x slower
   audio-oscillator                                   78.821+-1.964      ?      79.478+-3.156         ?
   imaging-darkroom                                  105.346+-2.840      ?     105.895+-2.901         ?
   imaging-desaturate                                 63.197+-0.645      ?      63.481+-1.585         ?
   imaging-gaussian-blur                             112.037+-1.811      ?     113.156+-6.922         ?
   json-parse-financial                               45.324+-1.601      ?      47.564+-2.160         ? might be 1.0494x slower
   json-stringify-tinderbox                           28.953+-1.076             28.893+-1.469         
   stanford-crypto-aes                                57.029+-0.665      ?      57.366+-0.963         ?
   stanford-crypto-ccm                                51.792+-1.926      ?      52.014+-1.157         ?
   stanford-crypto-pbkdf2                            120.829+-1.686            119.795+-2.178         
   stanford-crypto-sha256-iterative                   49.056+-1.068      ?      49.234+-1.831         ?

   &lt;arithmetic&gt;                                       92.769+-0.607      ?      93.415+-0.957         ? might be 1.0070x slower

                                                        TipOfTree                FixThingies                                    
JSRegress:
   abs-boolean                                        2.7096+-0.0921     ?      2.8042+-0.2264        ? might be 1.0349x slower
   adapt-to-double-divide                            16.7837+-0.5438     ?     16.9374+-0.3467        ?
   aliased-arguments-getbyval                         1.2898+-0.0764     ?      1.3322+-0.0778        ? might be 1.0329x slower
   allocate-big-object                                2.8427+-0.0768     !      3.0319+-0.1038        ! definitely 1.0666x slower
   arguments-named-and-reflective                    12.9092+-1.2149           12.1196+-0.4253          might be 1.0651x faster
   arguments-out-of-bounds                           14.9361+-0.2582     ?     15.0345+-0.3947        ?
   arguments-strict-mode                             11.3559+-1.1414           10.4328+-0.3548          might be 1.0885x faster
   arguments                                          9.2830+-0.2959     ?      9.4711+-0.8595        ? might be 1.0203x slower
   arity-mismatch-inlining                            0.9838+-0.1567            0.9397+-0.1039          might be 1.0470x faster
   array-access-polymorphic-structure                 7.1007+-0.5847     ?      7.1732+-0.9522        ? might be 1.0102x slower
   array-nonarray-polymorhpic-access                 34.0080+-1.1068     ?     35.9552+-2.3922        ? might be 1.0573x slower
   array-prototype-every                             87.2562+-1.5596           86.0218+-2.6685          might be 1.0144x faster
   array-prototype-forEach                           83.9061+-2.4206     ?     84.9458+-4.4847        ? might be 1.0124x slower
   array-prototype-map                               92.7231+-2.8649           92.3887+-4.1060        
   array-prototype-some                              85.6057+-2.7703           84.2609+-1.0447          might be 1.0160x faster
   array-splice-contiguous                           40.8750+-0.5267     ?     42.5443+-2.6687        ? might be 1.0408x slower
   array-with-double-add                              4.2040+-0.3369            4.1770+-0.1603        
   array-with-double-increment                        3.2557+-0.0708     ?      3.4231+-0.3083        ? might be 1.0514x slower
   array-with-double-mul-add                          4.9997+-0.0505            4.9869+-0.0421        
   array-with-double-sum                              3.4373+-0.3984            3.3103+-0.1026          might be 1.0384x faster
   array-with-int32-add-sub                           7.2574+-1.0439            6.7214+-0.0242          might be 1.0798x faster
   array-with-int32-or-double-sum                     3.3897+-0.1306     ?      3.6208+-0.3566        ? might be 1.0682x slower
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     34.3132+-2.3851           34.1184+-1.4965        
   ArrayBuffer-DataView-alloc-long-lived             14.8111+-1.5721     ?     16.6681+-1.7111        ? might be 1.1254x slower
   ArrayBuffer-Int32Array-byteOffset                  3.8852+-0.1721            3.8393+-0.0877          might be 1.0119x faster
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     34.4714+-1.4434           32.7334+-1.3703          might be 1.0531x faster
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     25.5635+-2.2876     ?     25.6277+-1.5657        ?
   ArrayBuffer-Int8Array-alloc-long-lived            14.4342+-1.5188           14.0090+-1.5547          might be 1.0304x faster
   ArrayBuffer-Int8Array-alloc                       11.7201+-1.8594           11.0768+-0.7907          might be 1.0581x faster
   asmjs_bool_bug                                     7.7161+-0.1361     ?      8.0187+-0.3511        ? might be 1.0392x slower
   assign-custom-setter-polymorphic                   3.1903+-0.0696     ?      3.3884+-0.1917        ? might be 1.0621x slower
   assign-custom-setter                               4.5389+-0.1772     ?      4.5686+-0.2409        ?
   basic-set                                          8.6403+-0.5726     ?      8.8457+-0.6135        ? might be 1.0238x slower
   big-int-mul                                        4.0225+-0.0907     ?      4.1574+-0.5099        ? might be 1.0335x slower
   boolean-test                                       3.2513+-0.2935            3.0396+-0.0221          might be 1.0697x faster
   branch-fold                                        3.7662+-0.0947     ?      3.7743+-0.0374        ?
   branch-on-string-as-boolean                       19.6534+-1.2638           19.1562+-0.6239          might be 1.0260x faster
   by-val-generic                                     8.5334+-0.3845            8.3252+-0.2105          might be 1.0250x faster
   call-spread-apply                                 29.9347+-1.3392     ?     30.3003+-1.7595        ? might be 1.0122x slower
   call-spread-call                                  25.0193+-0.5557     ?     25.7920+-2.2825        ? might be 1.0309x slower
   captured-assignments                               0.4434+-0.0186            0.4411+-0.0251        
   cast-int-to-double                                 5.2435+-0.0345     ?      5.2999+-0.1066        ? might be 1.0108x slower
   cell-argument                                      8.6821+-0.2872            8.5294+-0.1990          might be 1.0179x faster
   cfg-simplify                                       2.9832+-0.3516            2.8936+-0.2327          might be 1.0310x faster
   chain-getter-access                                9.1381+-0.1679     ?      9.2170+-0.1734        ?
   cmpeq-obj-to-obj-other                            11.6123+-0.6601     ?     11.7586+-1.1263        ? might be 1.0126x slower
   constant-test                                      5.1036+-0.4346            4.9788+-0.1448          might be 1.0251x faster
   create-lots-of-functions                          11.7119+-0.4564     ?     12.3462+-1.2897        ? might be 1.0542x slower
   DataView-custom-properties                        40.3694+-1.3201           38.1027+-1.7055          might be 1.0595x faster
   deconstructing-parameters-overridden-by-function   
                                                      0.5385+-0.0385     ?      0.5739+-0.0634        ? might be 1.0657x slower
   delay-tear-off-arguments-strictmode               14.3512+-0.5061           14.1577+-0.3646          might be 1.0137x faster
   deltablue-varargs                                203.8500+-3.0923          203.2452+-2.1955        
   destructuring-arguments                           17.4195+-0.8704     ?     17.8844+-0.9739        ? might be 1.0267x slower
   destructuring-swap                                 5.0193+-0.0799            5.0167+-0.0688        
   direct-arguments-getbyval                          1.3413+-0.1559     ?      1.4492+-0.3503        ? might be 1.0805x slower
   div-boolean-double                                 5.2252+-0.0264     ?      5.4052+-0.2918        ? might be 1.0345x slower
   div-boolean                                        7.8058+-0.0310            7.7855+-0.0280        
   double-get-by-val-out-of-bounds                    4.8037+-0.4936            4.6004+-0.1056          might be 1.0442x faster
   double-pollution-getbyval                          9.0015+-0.1665            8.9053+-0.0896          might be 1.0108x faster
   double-pollution-putbyoffset                       4.3126+-0.1390     ?      4.3324+-0.0792        ?
   double-to-int32-typed-array-no-inline              2.3341+-0.0779            2.3092+-0.0563          might be 1.0108x faster
   double-to-int32-typed-array                        2.0549+-0.2512            2.0537+-0.1402        
   double-to-uint32-typed-array-no-inline             2.3894+-0.1298     ?      2.3966+-0.1326        ?
   double-to-uint32-typed-array                       2.0929+-0.0592     ?      2.1495+-0.2429        ? might be 1.0271x slower
   elidable-new-object-dag                           45.0874+-2.3001           43.0749+-1.5545          might be 1.0467x faster
   elidable-new-object-roflcopter                    44.4360+-1.0343     ?     45.0785+-1.5143        ? might be 1.0145x slower
   elidable-new-object-then-call                     39.4447+-1.4320           38.9660+-1.1205          might be 1.0123x faster
   elidable-new-object-tree                          46.9416+-2.3451           46.2319+-1.6173          might be 1.0154x faster
   empty-string-plus-int                              5.5490+-0.1459            5.4898+-0.1299          might be 1.0108x faster
   emscripten-cube2hash                              39.0153+-1.9658           38.2844+-1.4932          might be 1.0191x faster
   exit-length-on-plain-object                       14.7779+-2.0146     ?     15.4621+-1.7696        ? might be 1.0463x slower
   external-arguments-getbyval                        1.2557+-0.0656     ?      1.2998+-0.1204        ? might be 1.0351x slower
   external-arguments-putbyval                        2.3207+-0.0789     ?      2.3293+-0.0455        ?
   fixed-typed-array-storage-var-index                1.2436+-0.0608            1.2380+-0.0410        
   fixed-typed-array-storage                          0.9327+-0.1312     ?      0.9654+-0.1201        ? might be 1.0351x slower
   Float32Array-matrix-mult                           4.7683+-0.5870            4.6217+-0.4980          might be 1.0317x faster
   Float32Array-to-Float64Array-set                  53.4274+-1.1000           53.2842+-0.8842        
   Float64Array-alloc-long-lived                     69.8285+-0.8786     ?     69.9957+-2.7974        ?
   Float64Array-to-Int16Array-set                    71.4953+-0.7615           71.1650+-0.5572        
   fold-double-to-int                                15.2241+-0.8217           14.6495+-0.2386          might be 1.0392x faster
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     11.0651+-1.8670     ?     11.0787+-0.8949        ?
   fold-get-by-id-to-multi-get-by-offset              9.7816+-0.6196            9.6176+-0.7667          might be 1.0171x faster
   fold-multi-get-by-offset-to-get-by-offset   
                                                     10.0097+-1.5695            8.9050+-0.5932          might be 1.1241x faster
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      9.5769+-1.7042            9.0180+-0.7634          might be 1.0620x faster
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      9.7798+-1.4422            8.8219+-0.9421          might be 1.1086x faster
   fold-multi-put-by-offset-to-put-by-offset   
                                                      5.6980+-1.2535     ?      6.0759+-1.1212        ? might be 1.0663x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     10.1307+-0.4033            9.7143+-0.3504          might be 1.0429x faster
   fold-put-by-id-to-multi-put-by-offset             10.7280+-1.7582           10.3071+-0.9325          might be 1.0408x faster
   fold-put-structure                                 4.5717+-0.5936     ?      7.0169+-1.8976        ? might be 1.5348x slower
   for-of-iterate-array-entries                       4.9305+-0.3457            4.9153+-0.2616        
   for-of-iterate-array-keys                          3.8199+-0.0876     ?      3.8544+-0.2335        ?
   for-of-iterate-array-values                        3.9135+-0.3063            3.6631+-0.0346          might be 1.0684x faster
   fround                                            21.1193+-0.4045           20.9652+-0.5630        
   ftl-library-inlining-dataview                     63.8012+-0.4122     ?     65.8792+-4.1671        ? might be 1.0326x slower
   ftl-library-inlining                              88.6995+-30.7658          85.6090+-22.6925         might be 1.0361x faster
   function-dot-apply                                 2.0058+-0.0952            1.9510+-0.0198          might be 1.0281x faster
   function-test                                      3.0759+-0.1941            2.9670+-0.1097          might be 1.0367x faster
   function-with-eval                               105.7041+-2.4907          105.3704+-2.3111        
   gcse-poly-get-less-obvious                        18.3164+-1.3022     ?     19.5500+-1.3315        ? might be 1.0674x slower
   gcse-poly-get                                     20.8781+-1.5973           19.8683+-1.0693          might be 1.0508x faster
   gcse                                               4.4803+-0.1864            4.3312+-0.0684          might be 1.0344x faster
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      3.0177+-0.3044            3.0052+-0.3384        
   get-by-id-bimorphic-check-structure-elimination   
                                                      6.1653+-0.2388            6.0600+-0.1138          might be 1.0174x faster
   get-by-id-chain-from-try-block                     7.8825+-1.5753            6.6751+-0.2693          might be 1.1809x faster
   get-by-id-check-structure-elimination              5.1842+-0.1153     ?      5.2090+-0.0852        ?
   get-by-id-proto-or-self                           20.8125+-2.1444           19.8535+-2.4017          might be 1.0483x faster
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      3.2250+-0.0663     ?      3.2417+-0.1107        ?
   get-by-id-self-or-proto                           19.2903+-1.7224           18.7735+-2.2376          might be 1.0275x faster
   get-by-val-out-of-bounds                           4.4634+-0.1407            4.4378+-0.0960        
   get_callee_monomorphic                             2.9116+-0.0886            2.8500+-0.0679          might be 1.0216x faster
   get_callee_polymorphic                             3.6838+-0.0922     ?      3.8419+-0.2644        ? might be 1.0429x slower
   getter-no-activation                               5.1432+-0.3113            5.1414+-0.3670        
   getter-richards                                  123.0626+-7.8790     ?    125.6263+-9.7132        ? might be 1.0208x slower
   getter                                             6.2517+-1.0268            5.9772+-0.7168          might be 1.0459x faster
   global-var-const-infer-fire-from-opt               1.0567+-0.1995     ?      1.1014+-0.2864        ? might be 1.0422x slower
   global-var-const-infer                             0.8145+-0.0845     ?      0.9057+-0.1705        ? might be 1.1119x slower
   HashMap-put-get-iterate-keys                      30.0799+-2.2486           29.3101+-1.8062          might be 1.0263x faster
   HashMap-put-get-iterate                           31.6191+-1.4078           31.0134+-2.3315          might be 1.0195x faster
   HashMap-string-put-get-iterate                    29.1099+-1.6051     ?     29.8998+-2.6990        ? might be 1.0271x slower
   hoist-make-rope                                   12.7408+-0.5222           12.4715+-1.1249          might be 1.0216x faster
   hoist-poly-check-structure-effectful-loop   
                                                      5.0495+-0.2680     ?      5.8531+-1.0909        ? might be 1.1591x slower
   hoist-poly-check-structure                         3.6109+-0.0323     ?      3.6587+-0.0688        ? might be 1.0132x slower
   imul-double-only                                   8.6145+-0.2234     ?      8.7050+-0.1434        ? might be 1.0105x slower
   imul-int-only                                     10.1133+-1.1096           10.0686+-0.6927        
   imul-mixed                                         8.5352+-0.0929            8.3557+-0.2494          might be 1.0215x faster
   in-four-cases                                     21.5441+-0.2742     ?     21.6818+-0.2344        ?
   in-one-case-false                                 10.5025+-0.4557     ?     10.7230+-0.6901        ? might be 1.0210x slower
   in-one-case-true                                  10.7112+-0.7501     ?     10.7629+-0.8133        ?
   in-two-cases                                      11.6860+-1.7088     ?     11.7684+-2.3183        ?
   indexed-properties-in-objects                      3.2550+-0.3756            3.0996+-0.0398          might be 1.0501x faster
   infer-closure-const-then-mov-no-inline             4.2757+-0.4312     ?      4.8860+-0.5488        ? might be 1.1427x slower
   infer-closure-const-then-mov                      20.0610+-0.5248           20.0321+-0.3632        
   infer-closure-const-then-put-to-scope-no-inline   
                                                     11.0998+-0.1168     ?     11.1322+-0.0971        ?
   infer-closure-const-then-put-to-scope             23.4729+-1.4526           22.4580+-1.4721          might be 1.0452x faster
   infer-closure-const-then-reenter-no-inline   
                                                     49.8625+-1.5666           48.2687+-0.4265          might be 1.0330x faster
   infer-closure-const-then-reenter                  22.8731+-1.6263     ?     23.3676+-1.1336        ? might be 1.0216x slower
   infer-constant-global-property                     3.6016+-0.0467     ?      3.7928+-0.2557        ? might be 1.0531x slower
   infer-constant-property                            2.7472+-0.0406     ?      2.7668+-0.0814        ?
   infer-one-time-closure-ten-vars                   12.5192+-0.3307     ?     13.4365+-1.4543        ? might be 1.0733x slower
   infer-one-time-closure-two-vars                   12.7519+-0.9189     ?     12.7698+-0.9478        ?
   infer-one-time-closure                            12.4278+-0.8935     ?     12.4939+-1.4325        ?
   infer-one-time-deep-closure                       21.7373+-1.4895           21.4160+-1.0938          might be 1.0150x faster
   inline-arguments-access                            4.7552+-0.4986            4.5232+-0.1346          might be 1.0513x faster
   inline-arguments-aliased-access                    4.5222+-0.2276     ?      4.7197+-0.3916        ? might be 1.0437x slower
   inline-arguments-local-escape                      4.6453+-0.3231            4.5836+-0.1700          might be 1.0135x faster
   inline-get-scoped-var                              5.0977+-0.3568            4.8334+-0.2340          might be 1.0547x faster
   inlined-put-by-id-transition                      11.1767+-0.5912     ?     11.9476+-0.4915        ? might be 1.0690x slower
   int-or-other-abs-then-get-by-val                   4.9757+-0.1765            4.8644+-0.1099          might be 1.0229x faster
   int-or-other-abs-zero-then-get-by-val             16.9299+-0.8448     ?     17.4402+-1.0610        ? might be 1.0301x slower
   int-or-other-add-then-get-by-val                   4.0545+-0.2774            4.0205+-0.1934        
   int-or-other-add                                   5.2563+-0.0374     ?      5.2611+-0.0339        ?
   int-or-other-div-then-get-by-val                   4.1248+-0.0780     ?      4.2673+-0.1617        ? might be 1.0346x slower
   int-or-other-max-then-get-by-val                   4.1438+-0.0506     ?      4.3809+-0.2456        ? might be 1.0572x slower
   int-or-other-min-then-get-by-val                   4.2046+-0.1929     ?      4.2258+-0.0841        ?
   int-or-other-mod-then-get-by-val                   3.8257+-0.0646     ?      3.8770+-0.1329        ? might be 1.0134x slower
   int-or-other-mul-then-get-by-val                   3.8090+-0.2983            3.7965+-0.2816        
   int-or-other-neg-then-get-by-val                   4.6095+-0.0510     ?      4.6185+-0.0101        ?
   int-or-other-neg-zero-then-get-by-val             17.0020+-0.3526     ?     18.3696+-1.2756        ? might be 1.0804x slower
   int-or-other-sub-then-get-by-val                   4.1319+-0.0372     ?      4.3598+-0.2714        ? might be 1.0552x slower
   int-or-other-sub                                   3.6232+-0.3130            3.3817+-0.0243          might be 1.0714x faster
   int-overflow-local                                 4.2629+-0.0545     ?      4.5451+-0.3755        ? might be 1.0662x slower
   Int16Array-alloc-long-lived                       48.9345+-0.8902     ?     49.2513+-1.6821        ?
   Int16Array-bubble-sort-with-byteLength            20.1413+-0.7182           20.1410+-0.3321        
   Int16Array-bubble-sort                            20.7095+-2.0798           19.8621+-0.2822          might be 1.0427x faster
   Int16Array-load-int-mul                            1.6052+-0.2241            1.5661+-0.0913          might be 1.0250x faster
   Int16Array-to-Int32Array-set                      57.2637+-1.3965     ?     59.1253+-0.5377        ? might be 1.0325x slower
   Int32Array-alloc-large                            25.3105+-1.2248           24.2050+-0.5615          might be 1.0457x faster
   Int32Array-alloc-long-lived                       55.1809+-1.1315           54.0943+-0.8598          might be 1.0201x faster
   Int32Array-alloc                                   3.2967+-0.1587     ?      3.4594+-0.5696        ? might be 1.0493x slower
   Int32Array-Int8Array-view-alloc                    7.9551+-1.0869            7.2735+-0.8806          might be 1.0937x faster
   int52-spill                                        6.4666+-0.1300     ?      6.4778+-0.4525        ?
   Int8Array-alloc-long-lived                        44.1276+-1.5149     ?     45.4674+-0.8409        ? might be 1.0304x slower
   Int8Array-load-with-byteLength                     3.3378+-0.0394     ?      3.4910+-0.2812        ? might be 1.0459x slower
   Int8Array-load                                     3.3319+-0.0342     ?      3.3809+-0.0621        ? might be 1.0147x slower
   integer-divide                                    11.0284+-0.3350           10.9671+-0.3544        
   integer-modulo                                     2.1196+-0.2500     ?      2.2662+-0.3401        ? might be 1.0692x slower
   is-boolean-fold-tricky                             4.9363+-0.7524            4.5920+-0.2270          might be 1.0750x faster
   is-boolean-fold                                    2.8568+-0.0172     !      2.9478+-0.0532        ! definitely 1.0318x slower
   is-function-fold-tricky-internal-function   
                                                     12.1975+-0.2744           12.1068+-0.1163        
   is-function-fold-tricky                            4.6042+-0.1314            4.5521+-0.0664          might be 1.0114x faster
   is-function-fold                                   2.9241+-0.1406            2.9112+-0.0618        
   is-number-fold-tricky                              4.4529+-0.1001     ?      4.9353+-0.9051        ? might be 1.1083x slower
   is-number-fold                                     2.8732+-0.0595     ?      2.9955+-0.2816        ? might be 1.0426x slower
   is-object-or-null-fold-functions                   3.0298+-0.2412            2.9436+-0.0602          might be 1.0293x faster
   is-object-or-null-fold-less-tricky                 4.6013+-0.1053     ?      4.6166+-0.2112        ?
   is-object-or-null-fold-tricky                      6.6275+-0.0572     ?      6.6316+-0.0952        ?
   is-object-or-null-fold                             3.1627+-0.3721            2.9406+-0.0549          might be 1.0755x faster
   is-object-or-null-trickier-function                4.6489+-0.0660     ?      4.9896+-0.5786        ? might be 1.0733x slower
   is-object-or-null-trickier-internal-function   
                                                     12.6346+-0.1446           12.5809+-0.2112        
   is-object-or-null-tricky-function                  4.7240+-0.2250     ?      4.8016+-0.3403        ? might be 1.0164x slower
   is-object-or-null-tricky-internal-function   
                                                      9.4391+-0.3087            9.3428+-0.2861          might be 1.0103x faster
   is-string-fold-tricky                              4.4744+-0.0557     ?      4.4910+-0.0998        ?
   is-string-fold                                     2.9192+-0.1737            2.9137+-0.1164        
   is-undefined-fold-tricky                           3.8257+-0.1564     ?      3.8485+-0.3007        ?
   is-undefined-fold                                  2.8762+-0.0444     ?      2.8768+-0.0592        ?
   large-int-captured                                 4.7499+-0.1825     ?      5.0615+-0.8249        ? might be 1.0656x slower
   large-int-neg                                     16.2874+-0.7664     ?     16.9997+-0.9397        ? might be 1.0437x slower
   large-int                                         15.5330+-1.6982           14.8267+-0.4544          might be 1.0476x faster
   load-varargs-elimination                          23.2519+-0.4875           22.8294+-0.5915          might be 1.0185x faster
   logical-not                                        4.4892+-0.0606     ?      4.6304+-0.2050        ? might be 1.0315x slower
   lots-of-fields                                    14.5129+-1.5097           13.3713+-0.4236          might be 1.0854x faster
   make-indexed-storage                               3.2351+-0.1465     ?      3.2632+-0.1413        ?
   make-rope-cse                                      4.8064+-0.2331     ?      5.0915+-0.6784        ? might be 1.0593x slower
   marsaglia-larger-ints                             36.4963+-1.2110     ?     36.6995+-1.1830        ?
   marsaglia-osr-entry                               23.0561+-0.4780     ?     23.2073+-0.1530        ?
   max-boolean                                        2.5196+-0.0924     ?      2.6487+-0.3246        ? might be 1.0513x slower
   method-on-number                                  16.9267+-0.3250           16.8029+-0.1452        
   min-boolean                                        2.7888+-0.3365            2.6565+-0.2972          might be 1.0498x faster
   minus-boolean-double                               3.4752+-0.3440            3.2357+-0.0640          might be 1.0740x faster
   minus-boolean                                      2.4080+-0.1017     ?      2.4707+-0.3161        ? might be 1.0260x slower
   misc-strict-eq                                    39.5769+-0.3653           38.8828+-0.8557          might be 1.0179x faster
   mod-boolean-double                                10.9644+-0.1964     ?     11.1031+-0.3077        ? might be 1.0127x slower
   mod-boolean                                        7.8765+-0.0998     ?      7.9131+-0.0737        ?
   mul-boolean-double                                 3.8053+-0.0995     ?      4.0181+-0.3399        ? might be 1.0559x slower
   mul-boolean                                        3.0400+-0.2313            2.9345+-0.1519          might be 1.0360x faster
   neg-boolean                                        3.3599+-0.3966     ?      3.4288+-0.3718        ? might be 1.0205x slower
   negative-zero-divide                               0.3874+-0.0486            0.3771+-0.0157          might be 1.0273x faster
   negative-zero-modulo                               0.3759+-0.0294            0.3692+-0.0382          might be 1.0182x faster
   negative-zero-negate                               0.3431+-0.0206     ?      0.3543+-0.0414        ? might be 1.0326x slower
   nested-function-parsing                           38.7250+-1.5337     ?     39.1254+-1.9338        ? might be 1.0103x slower
   new-array-buffer-dead                            117.8438+-9.3873          112.8209+-0.7398          might be 1.0445x faster
   new-array-buffer-push                              6.9592+-0.2553     ?      7.7637+-1.0849        ? might be 1.1156x slower
   new-array-dead                                    19.4302+-0.4179     ?     19.9215+-1.4172        ? might be 1.0253x slower
   new-array-push                                     3.9349+-0.1796     ?      3.9625+-0.1334        ?
   no-inline-constructor                            125.1900+-2.1697          123.8940+-2.4325          might be 1.0105x faster
   number-test                                        3.0565+-0.0584     ?      3.0770+-0.0582        ?
   object-closure-call                                5.6307+-0.3711            5.5433+-0.1754          might be 1.0158x faster
   object-test                                        2.9187+-0.2761            2.8227+-0.0397          might be 1.0340x faster
   obvious-sink-pathology-taken                     140.3638+-1.7287          140.0334+-1.6931        
   obvious-sink-pathology                           131.7812+-3.0751          131.5667+-0.9398        
   obviously-elidable-new-object                     36.0180+-1.8146           35.8641+-0.9861        
   plus-boolean-arith                                 2.7532+-0.3765            2.5478+-0.0641          might be 1.0806x faster
   plus-boolean-double                                3.4214+-0.2614            3.1856+-0.0406          might be 1.0740x faster
   plus-boolean                                       2.4132+-0.0481     ?      2.4427+-0.1663        ? might be 1.0122x slower
   poly-chain-access-different-prototypes-simple   
                                                      3.4126+-0.2013            3.3353+-0.0865          might be 1.0232x faster
   poly-chain-access-different-prototypes             2.7577+-0.3094            2.6257+-0.0471          might be 1.0503x faster
   poly-chain-access-simpler                          3.6092+-0.6921            3.4103+-0.2748          might be 1.0583x faster
   poly-chain-access                                  2.7076+-0.2113            2.6372+-0.0917          might be 1.0267x faster
   poly-stricteq                                     60.3188+-2.5230           59.7644+-1.9277        
   polymorphic-array-call                             1.3350+-0.2008            1.2475+-0.0222          might be 1.0702x faster
   polymorphic-get-by-id                              3.3638+-0.3581            3.1694+-0.0981          might be 1.0614x faster
   polymorphic-put-by-id                             31.3641+-1.9708           31.3074+-1.6670        
   polymorphic-structure                             13.5887+-0.2336     ?     13.7297+-0.2135        ? might be 1.0104x slower
   polyvariant-monomorphic-get-by-id                  8.5825+-0.1760     ?      8.6020+-0.1577        ?
   proto-getter-access                                9.1803+-0.1309            9.1042+-0.2291        
   put-by-id-replace-and-transition                   9.1884+-0.3403            9.0384+-0.0646          might be 1.0166x faster
   put-by-id-slightly-polymorphic                     2.8983+-0.1247     ?      3.2255+-0.3703        ? might be 1.1129x slower
   put-by-id                                         13.8239+-0.8476           13.1672+-0.7067          might be 1.0499x faster
   put-by-val-direct                                  0.3875+-0.0499     ?      0.3890+-0.0458        ?
   put-by-val-large-index-blank-indexing-type   
                                                      5.9199+-0.1112     ?      6.4197+-0.6873        ? might be 1.0844x slower
   put-by-val-machine-int                             2.8182+-0.1142     ?      2.8562+-0.1994        ? might be 1.0135x slower
   rare-osr-exit-on-local                            15.0916+-0.3537           14.9360+-0.1624          might be 1.0104x faster
   register-pressure-from-osr                        21.2586+-0.2775     ?     22.0350+-0.9645        ? might be 1.0365x slower
   setter                                             5.9708+-0.8119            5.6859+-0.6050          might be 1.0501x faster
   simple-activation-demo                            25.5411+-0.8979           25.3350+-1.3286        
   simple-getter-access                              12.0438+-0.4669           11.8875+-0.2466          might be 1.0132x faster
   simple-poly-call-nested                            8.3221+-0.2817            8.2585+-0.2911        
   simple-poly-call                                   1.3142+-0.0146     ?      1.3413+-0.0791        ? might be 1.0207x slower
   sin-boolean                                       24.0199+-1.2357           23.4409+-0.3800          might be 1.0247x faster
   singleton-scope                                   62.1459+-1.3984     ?     62.3223+-1.0298        ?
   sink-function                                     12.3903+-0.2874     ?     12.5122+-0.6255        ?
   sink-huge-activation                              19.1270+-0.2916     ?     19.9437+-1.2830        ? might be 1.0427x slower
   sinkable-new-object-dag                           70.5348+-1.4886     ?     70.9808+-1.2832        ?
   sinkable-new-object-taken                         51.3298+-2.8362     ?     52.8319+-2.2940        ? might be 1.0293x slower
   sinkable-new-object                               39.8567+-1.9276     ?     40.0804+-1.1618        ?
   slow-array-profile-convergence                     3.0973+-0.3547            2.8924+-0.1421          might be 1.0708x faster
   slow-convergence                                   2.8606+-0.3310            2.8507+-0.2235        
   sorting-benchmark                                 20.1239+-0.5998           19.9557+-0.7341        
   sparse-conditional                                 1.1944+-0.0905     ?      1.2402+-0.0795        ? might be 1.0383x slower
   splice-to-remove                                  16.8464+-0.4208     ?     17.2271+-1.3323        ? might be 1.0226x slower
   string-char-code-at                               15.7448+-0.1452     ?     16.0398+-0.4209        ? might be 1.0187x slower
   string-concat-object                               2.5967+-0.0400     ?      2.6514+-0.1204        ? might be 1.0210x slower
   string-concat-pair-object                          2.6040+-0.1004            2.5489+-0.0175          might be 1.0216x faster
   string-concat-pair-simple                         12.8121+-1.4117           11.7393+-0.5004          might be 1.0914x faster
   string-concat-simple                              12.6921+-1.0562           12.2146+-0.6913          might be 1.0391x faster
   string-cons-repeat                                 8.6666+-0.9003     ?      9.1121+-0.9951        ? might be 1.0514x slower
   string-cons-tower                                  8.7117+-0.7892     ?      8.8789+-1.0317        ? might be 1.0192x slower
   string-equality                                   18.7093+-0.6965     ?     18.7583+-0.7157        ?
   string-get-by-val-big-char                         7.2598+-0.1732            7.1322+-0.0636          might be 1.0179x faster
   string-get-by-val-out-of-bounds-insane             3.7918+-0.4699     ?      3.8192+-0.4446        ?
   string-get-by-val-out-of-bounds                    5.2196+-0.0502     ?      5.4255+-0.3742        ? might be 1.0394x slower
   string-get-by-val                                  3.3748+-0.1138     ?      3.3807+-0.1491        ?
   string-hash                                        2.1388+-0.1825            2.0735+-0.1049          might be 1.0315x faster
   string-long-ident-equality                        14.8970+-0.2732           14.7631+-0.3471        
   string-out-of-bounds                              15.9705+-2.9785           14.7850+-0.1520          might be 1.0802x faster
   string-repeat-arith                               32.7494+-1.4133     ?     33.4873+-3.1763        ? might be 1.0225x slower
   string-sub                                        63.5078+-4.3203     ?     65.9730+-1.6891        ? might be 1.0388x slower
   string-test                                        2.9906+-0.1017     ?      2.9940+-0.1524        ?
   string-var-equality                               32.6294+-1.1539           32.6071+-1.0574        
   structure-hoist-over-transitions                   2.7347+-0.1225     ?      2.9179+-0.4578        ? might be 1.0670x slower
   substring-concat-weird                            40.4580+-1.5119     ?     41.5056+-3.3996        ? might be 1.0259x slower
   substring-concat                                  43.0233+-1.4630     ?     43.3078+-1.7450        ?
   substring                                         46.9935+-1.9363     ?     48.3389+-2.4829        ? might be 1.0286x slower
   switch-char-constant                               2.7478+-0.0527     ?      2.8045+-0.1037        ? might be 1.0206x slower
   switch-char                                        6.9785+-0.9710            6.6175+-0.8895          might be 1.0546x faster
   switch-constant                                    8.5750+-0.1178     ?      8.6388+-0.2194        ?
   switch-string-basic-big-var                       18.1136+-0.6568     ?     18.3727+-0.8344        ? might be 1.0143x slower
   switch-string-basic-big                           14.5489+-0.5066     ?     14.6757+-0.8044        ?
   switch-string-basic-var                           15.0861+-0.5997           14.9443+-0.2954        
   switch-string-basic                               13.0924+-0.1829     ?     13.1738+-0.1289        ?
   switch-string-big-length-tower-var                20.0834+-0.4041     ?     20.7172+-1.6382        ? might be 1.0316x slower
   switch-string-length-tower-var                    14.8763+-0.1085     ?     15.4438+-1.3157        ? might be 1.0381x slower
   switch-string-length-tower                        12.8211+-0.2496           12.6375+-0.3306          might be 1.0145x faster
   switch-string-short                               12.5228+-0.1101     ?     12.9848+-0.6176        ? might be 1.0369x slower
   switch                                            12.7225+-0.2120     ?     12.9670+-0.6133        ? might be 1.0192x slower
   tear-off-arguments-simple                          3.4519+-0.0483            3.4406+-0.0741        
   tear-off-arguments                                 4.7764+-0.0628     ?      4.8722+-0.1820        ? might be 1.0200x slower
   temporal-structure                                12.4750+-1.3358           12.0270+-0.1921          might be 1.0372x faster
   to-int32-boolean                                  13.5747+-0.2741           13.5245+-0.1986        
   try-catch-get-by-val-cloned-arguments             14.4663+-0.7088     ?     14.5232+-0.7002        ?
   try-catch-get-by-val-direct-arguments              6.5536+-0.0899     ?      6.8715+-0.2785        ? might be 1.0485x slower
   try-catch-get-by-val-scoped-arguments              7.9830+-0.3712     ?      8.2121+-0.9757        ? might be 1.0287x slower
   typed-array-get-set-by-val-profiling              33.4101+-2.2858           32.1319+-0.6056          might be 1.0398x faster
   undefined-property-access                        342.6272+-7.2367          340.9213+-1.6572        
   undefined-test                                     3.0460+-0.0831     ?      3.2170+-0.4548        ? might be 1.0561x slower
   unprofiled-licm                                   22.5445+-0.4225     ?     23.6062+-1.4269        ? might be 1.0471x slower
   varargs-call                                      14.6009+-0.7960           14.3101+-0.3752          might be 1.0203x faster
   varargs-construct-inline                          61.3050+-2.1588     ?     63.2991+-2.1170        ? might be 1.0325x slower
   varargs-construct                                 30.9337+-0.6965     ?     34.5073+-7.5838        ? might be 1.1155x slower
   varargs-inline                                     9.3240+-0.4838     ?      9.4890+-0.6632        ? might be 1.0177x slower
   varargs-strict-mode                                9.6895+-0.0919     ?      9.8188+-0.2254        ? might be 1.0133x slower
   varargs                                            9.8756+-0.1616            9.7156+-0.0982          might be 1.0165x faster
   weird-inlining-const-prop                          2.4315+-0.1457            2.4045+-0.2801          might be 1.0112x faster

   &lt;geometric&gt;                                        8.6100+-0.0323     ?      8.6317+-0.0285        ? might be 1.0025x slower

                                                        TipOfTree                FixThingies                                    
AsmBench:
   bigfib.cpp                                       499.3941+-6.9257          496.1350+-3.3585        
   cray.c                                           426.9661+-5.1516          425.7356+-7.1094        
   dry.c                                            483.9690+-10.5377    ?    487.5743+-8.1270        ?
   FloatMM.c                                        725.1027+-4.0403          723.9647+-2.1561        
   gcc-loops.cpp                                   4271.4594+-13.2848        4263.1775+-7.0867        
   n-body.c                                        1056.2605+-175.1967        981.2413+-5.3244          might be 1.0765x faster
   Quicksort.c                                      422.0153+-3.9550     ?    424.4740+-5.8388        ?
   stepanov_container.cpp                          3616.0418+-28.2046        3609.5909+-12.3843       
   Towers.c                                         259.5054+-1.6641     ?    259.5632+-0.5848        ?

   &lt;geometric&gt;                                      798.9202+-14.7610         792.9944+-2.1469          might be 1.0075x faster

                                                        TipOfTree                FixThingies                                    
CompressionBench:
   huffman                                          361.1306+-0.9819     ?    369.6755+-11.7435       ? might be 1.0237x slower
   arithmetic-simple                                396.4341+-1.9892     ?    398.0345+-3.3513        ?
   arithmetic-precise                               300.9525+-2.3045          298.6882+-2.6891        
   arithmetic-complex-precise                       296.8240+-2.7751     ?    297.1861+-3.5179        ?
   arithmetic-precise-order-0                       426.8225+-7.9286          423.8863+-6.1627        
   arithmetic-precise-order-1                       330.0705+-3.9236          328.0158+-2.0221        
   arithmetic-precise-order-2                       360.8777+-6.2132     ?    362.2769+-5.0437        ?
   arithmetic-simple-order-1                        463.2390+-98.6608         426.9357+-6.1454          might be 1.0850x faster
   arithmetic-simple-order-2                        465.3241+-5.0675          463.9509+-6.1766        
   lz-string                                        329.7726+-6.8006          326.7632+-14.3573       

   &lt;geometric&gt;                                      368.0271+-6.1015          365.4814+-2.2613          might be 1.0070x faster

                                                        TipOfTree                FixThingies                                    
Geomean of preferred means:
   &lt;scaled-result&gt;                                   62.1846+-0.3457           62.0891+-0.1366          might be 1.0015x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094596</commentid>
    <comment_count>8</comment_count>
      <attachid>253051</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-05-13 14:50:59 -0700</bug_when>
    <thetext>Comment on attachment 253051
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094604</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-13 15:18:23 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/184311</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253051</attachid>
            <date>2015-05-13 12:54:59 -0700</date>
            <delta_ts>2015-05-13 14:50:59 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>24173</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg0Mjk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDE1LTA1LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIGxpdmVuZXNzIHBydW5pbmcgZG9uZSBieSBPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNl
IGlnbm9yZXMgdGhlIHBvc3NpYmlsaXR5IG9mIGFuIG9iamVjdCdzIGJ5dGVjb2RlIGxpdmVuZXNz
IGJlaW5nIGxvbmdlciB0aGFuIGl0cyBERkcgbGl2ZW5lc3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDk0NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgV2Ugd2VyZSBtYWtpbmcgdGhlIG1p
c3Rha2Ugb2YgdXNpbmcgREZHIGxpdmVuZXNzIGZvciBvYmplY3QgYWxsb2NhdGlvbiBzaW5raW5n
IGRlY2lzaW9ucy4KKyAgICAgICAgVGhpcyBpcyB3cm9uZy4gSW4gZmFjdCB3ZSBhbG1vc3QgbmV2
ZXIgd2FudCB0byB1c2UgREZHIGxpdmVuZXNzIGRpcmVjdGx5LiBUaGUgb25seSBwbGFjZQorICAg
ICAgICB3aGVyZSB0aGF0IG1ha2VzIHNlbnNlIGlzIHBydW5pbmcgaW4gREZHIEFJLgorICAgICAg
ICAKKyAgICAgICAgU28sIEkgY3JlYXRlZCBhIENvbWJpbmVkTGl2ZW5lc3MgY2xhc3MgdGhhdCBj
b21iaW5lcyB0aGUgREZHIGxpdmVuZXNzIHdpdGggYnl0ZWNvZGUKKyAgICAgICAgbGl2ZW5lc3Mu
CisgICAgICAgIAorICAgICAgICBJbiB0aGUgcHJvY2VzcyBvZiBkb2luZyB0aGlzLCBJIHJlYWxp
emVkIHRoYXQgdGhlIERGR0ZvckFsbEtpbGxzIGRlZmluaXRpb24gb2YgY29tYmluZWQKKyAgICAg
ICAgbGl2ZW5lc3MgYXQgYmxvY2sgdGFpbCB3YXMgbm90IHN0cmljdGx5IHJpZ2h0OyBpdCB3YXMg
dXNpbmcgdGhlIGJ5dGVjb2RlIGxpdmVuZXNzIGF0IHRoZQorICAgICAgICBibG9jayB0ZXJtaW5h
bCBpbnN0ZWFkIG9mIHRoZSB1bmlvbiBvZiB0aGUgYnl0ZWNvZGUgbGl2ZS1hdC1oZWFkcyBvZiBz
dWNjZXNzb3IgYmxvY2tzLiBTbywKKyAgICAgICAgSSBjaGFuZ2VkIERGR0ZvckFsbEtpbGxzIHRv
IHdvcmsgaW4gdGVybXMgb2YgQ29tYmluZWRMaXZlbmVzcy4KKyAgICAgICAgCisgICAgICAgIFRo
aXMgYWxsb3dzIG1lIHRvIHVuc2tpcCB0aGUgdGVzdCBJIGFkZGVkIGluIHIxODQyNjAuIEkgYWxz
byBhZGRlZCBhIG5ldyB0ZXN0IHRoYXQgdHJpZXMgdG8KKyAgICAgICAgdHJpZ2dlciB0aGlzIGJ1
ZyBtb3JlIGRpcmVjdGx5LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGZn
L0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdDb21i
aW5lZExpdmVuZXNzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkRGRzo6bGl2ZU5vZGVzQXRI
ZWFkKToKKyAgICAgICAgKEpTQzo6REZHOjpDb21iaW5lZExpdmVuZXNzOjpDb21iaW5lZExpdmVu
ZXNzKToKKyAgICAgICAgKiBkZmcvREZHQ29tYmluZWRMaXZlbmVzcy5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6REZHOjpDb21iaW5lZExpdmVuZXNzOjpDb21iaW5lZExpdmVuZXNzKToKKyAgICAg
ICAgKiBkZmcvREZHRm9yQWxsS2lsbHMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpmb3JBbGxLaWxs
c0luQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OmZvckFsbExpdmVOb2Rlc0F0VGFpbCk6IERl
bGV0ZWQuCisgICAgICAgICogZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6Ok9iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2U6OnBlcmZv
cm1TaW5raW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpPYmplY3RBbGxvY2F0aW9uU2lua2luZ1Bo
YXNlOjpkZXRlcm1pbmVNYXRlcmlhbGl6YXRpb25Qb2ludHMpOgorICAgICAgICAoSlNDOjpERkc6
Ok9iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2U6OnBsYWNlTWF0ZXJpYWxpemF0aW9uUG9pbnRz
KToKKyAgICAgICAgKEpTQzo6REZHOjpPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlOjpwcm9t
b3RlU3Vua2VuRmllbGRzKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZXNjYXBlLW9iamVjdC1p
bi1kaWFtb25kLXRoZW4tZXhpdC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvc3RyZXNzL3Np
bmstb2JqZWN0LXBhc3QtaW52YWxpZC1jaGVjay1zbmVha3kuanM6CisKIDIwMTUtMDUtMTMgIEpv
c2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBhbHdh
eXMgcnVubmluZyBzb21lIGRlYnVnIGNvZGUgaW4gdHlwZSBwcm9maWxpbmcKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE4NDI4OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDYgKzE0
NSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RGR0NsZWFuVXBQaGFz
ZS5jcHAKICAgICBkZmcvREZHQ2xvYmJlclNldC5jcHAKICAgICBkZmcvREZHQ2xvYmJlcml6ZS5j
cHAKKyAgICBkZmcvREZHQ29tYmluZWRMaXZlbmVzcy5jcHAKICAgICBkZmcvREZHQ29tbW9uLmNw
cAogICAgIGRmZy9ERkdDb21tb25EYXRhLmNwcAogICAgIGRmZy9ERkdDb21waWxhdGlvbktleS5j
cHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24g
MTg0Mjg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzgzLDYgKzM4Myw3IEBA
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHQ2xlYW5VcFBoYXNlLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdDbG9iYmVyaXplLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdDbG9iYmVyU2V0LmNwcCIgLz4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdDb21iaW5lZExpdmVuZXNzLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdDb21tb24uY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR0NvbW1vbkRhdGEuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cZGZnXERGR0NvbXBpbGF0aW9uS2V5LmNwcCIgLz4KQEAgLTEwNjMsNiAr
MTA2NCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHQ2xlYW5VcFBoYXNl
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHQ2xvYmJlcml6ZS5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0Nsb2JiZXJTZXQuaCIgLz4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdDb21iaW5lZExpdmVuZXNzLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHQ29tbW9uLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHQ29tbW9uRGF0YS5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cZGZnXERGR0NvbXBpbGF0aW9uS2V5LmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTg0Mjg4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTgyLDYgKzgyLDggQEAKIAkJMEYwMzMyQzQxOEIwMTc2MzAwNUY5NzlBIC8qIEdldEJ5
SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjAzMzJDMjE4QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjAzMzJDNjE4QjUzRkE5
MDA1Rjk3OUEgLyogRlRMV2VpZ2h0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjAzMzJDNTE4QjUzRkE5MDA1Rjk3OUEgLyogRlRMV2VpZ2h0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwMzMyQzgx
OEI1NDZFQzAwNUY5NzlBIC8qIEZUTFdlaWdodGVkVGFyZ2V0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjAzMzJDNzE4QjU0NkVDMDA1Rjk3OUEgLyog
RlRMV2VpZ2h0ZWRUYXJnZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjA0Mzk2RDFCMDNEQzBCMDA5NTk4QjcgLyogREZHQ29tYmluZWRMaXZl
bmVzcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjA0Mzk2QjFCMDNEQzBCMDA5NTk4QjcgLyogREZHQ29tYmluZWRMaXZlbmVzcy5jcHAgKi87IH07
CisJCTBGMDQzOTZFMUIwM0RDMEIwMDk1OThCNyAvKiBERkdDb21iaW5lZExpdmVuZXNzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjA0Mzk2QzFCMDNE
QzBCMDA5NTk4QjcgLyogREZHQ29tYmluZWRMaXZlbmVzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMDVDM0I0MTY4M0NGOTIwMEJBRjQ1QiAv
KiBERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjA1QzNCMjE2ODNDRjhGMDBCQUY0NUIgLyogREZHQXJy
YXlpZnlTbG93UGF0aEdlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGMDc3NkJGMTRGRjAwMkIwMDEwMjMzMiAvKiBKSVRDb21waWxh
dGlvbkVmZm9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYwNzc2QkQxNEZGMDAyODAwMTAyMzMyIC8qIEpJVENvbXBpbGF0aW9uRWZmb3J0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzOUMx
NEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTElu
dFRodW5rcy5jcHAgKi87IH07CkBAIC0xODE2LDYgKzE4MTgsOCBAQAogCQkwRjAzMzJDMjE4QjAx
NzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR2V0QnlJZFZhcmlhbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEYwMzMyQzUxOEI1M0ZBOTAwNUY5NzlBIC8qIEZUTFdlaWdodC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBGVExXZWlnaHQuaDsgcGF0aCA9IGZ0bC9GVExXZWlnaHQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwMzMyQzcxOEI1NDZFQzAwNUY5NzlBIC8qIEZU
TFdlaWdodGVkVGFyZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFdl
aWdodGVkVGFyZ2V0Lmg7IHBhdGggPSBmdGwvRlRMV2VpZ2h0ZWRUYXJnZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwNDM5NkIxQjAzREMwQjAwOTU5OEI3IC8qIERGR0NvbWJp
bmVkTGl2ZW5lc3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZH
Q29tYmluZWRMaXZlbmVzcy5jcHA7IHBhdGggPSBkZmcvREZHQ29tYmluZWRMaXZlbmVzcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMDQzOTZDMUIwM0RDMEIwMDk1OThCNyAv
KiBERkdDb21iaW5lZExpdmVuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR0NvbWJpbmVkTGl2ZW5lc3MuaDsgcGF0aCA9IGRmZy9ERkdDb21iaW5lZExpdmVuZXNzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMDVDM0IyMTY4M0NGOEYwMEJBRjQ1QiAv
KiBERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaDsgcGF0aCA9IGRmZy9ERkdB
cnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGMDc3NkJEMTRGRjAwMjgwMDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVmZm9ydC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRDb21waWxhdGlvbkVmZm9ydC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJ
bnRUaHVua3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRU
aHVua3MuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRUaHVua3MuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNDg4MSw2ICs0ODg1LDggQEAKIAkJCQlBNzdBNDIzOTE3QTBCQkZEMDBB
OERCODEgLyogREZHQ2xvYmJlcml6ZS5oICovLAogCQkJCUE3N0E0MjNBMTdBMEJCRkQwMEE4REI4
MSAvKiBERkdDbG9iYmVyU2V0LmNwcCAqLywKIAkJCQlBNzdBNDIzQjE3QTBCQkZEMDBBOERCODEg
LyogREZHQ2xvYmJlclNldC5oICovLAorCQkJCTBGMDQzOTZCMUIwM0RDMEIwMDk1OThCNyAvKiBE
RkdDb21iaW5lZExpdmVuZXNzLmNwcCAqLywKKwkJCQkwRjA0Mzk2QzFCMDNEQzBCMDA5NTk4Qjcg
LyogREZHQ29tYmluZWRMaXZlbmVzcy5oICovLAogCQkJCTBGQjRCNTFBMTZCNjI3NzIwMDNGNjk2
QiAvKiBERkdDb21tb24uY3BwICovLAogCQkJCTBGQzA5NzdFMTQ2OUVCQzQwMENGMjQ0MiAvKiBE
RkdDb21tb24uaCAqLywKIAkJCQkwRkVBMEEyRDE3MEQ0MEJGMDBCQjcyMkMgLyogREZHQ29tbW9u
RGF0YS5jcHAgKi8sCkBAIC02MjMwLDYgKzYyMzYsNyBAQAogCQkJCTBGQzNDRDAwMTlBREE0MTAw
MDZBQzcyQSAvKiBERkdCbG9ja1dvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAx
ODFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRTIwQ0U5RTE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEYwNDM5NkUxQjAzREMwQjAwOTU5OEI3IC8qIERGR0NvbWJpbmVkTGl2ZW5lc3MuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNDY4MENBMTRCQkIxNkMwMEJGRTI3MiAvKiBMTEludENvbW1v
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCREI5QUQxQUIwRkJDNjAwMEI1N0U1IC8qIERGR0Nh
bGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC03NTE0LDYgKzc1MjEsNyBAQAogCQkJCTcwRUMwRUM2MUFBMEQ3REEwMEI2QUFGQSAv
KiBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUZEMDA2
NzE4OUFGRTlDMDA2MzMyMzEgLyogU2NyaXB0QXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE1RkQwMDZEMTg5QjAwQUEwMDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMEYwNDM5NkQxQjAzREMwQjAwOTU5OEI3IC8qIERGR0NvbWJpbmVkTGl2
ZW5lc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVGRDAwNkYxODlCMDBBQTAwNjMzMjMxIC8q
IFNjcmlwdENhbGxTdGFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUZEMDA3RDE4OUIwQjRD
MDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBNTAzRkEyNTE4OEVGRkZEMDAxMTBGMTQgLyogU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0Vs
aW1pbmF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE4NDI4OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJERkdCYXNpY0Js
b2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkRGR0Jsb2NrTWFwSW5saW5lcy5oIgogI2luY2x1ZGUg
IkRGR0Nsb2JiZXJpemUuaCIKKyNpbmNsdWRlICJERkdDb21iaW5lZExpdmVuZXNzLmgiCiAjaW5j
bHVkZSAiREZHRm9yQWxsS2lsbHMuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUg
IkRGR0luc2VydGlvblNldC5oIgpAQCAtMjI2LDYgKzIyNyw3IEBAIHByaXZhdGU6CiAgICAgICAg
IHBlcmZvcm1MaXZlbmVzc0FuYWx5c2lzKG1fZ3JhcGgpOwogICAgICAgICBwZXJmb3JtT1NSQXZh
aWxhYmlsaXR5QW5hbHlzaXMobV9ncmFwaCk7CiAgICAgICAgIG1fZ3JhcGguaW5pdGlhbGl6ZU5v
ZGVPd25lcnMoKTsKKyAgICAgICAgQ29tYmluZWRMaXZlbmVzcyBjb21iaW5lZExpdmVuZXNzKG1f
Z3JhcGgpOwogICAgICAgICAKICAgICAgICAgQmxvY2tNYXA8T3BlcmFuZHM8Ym9vbD4+IGNsb2Ji
ZXJlZEJ5QmxvY2sobV9ncmFwaCk7CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBt
X2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKQEAgLTI2NCw3ICsyNjYsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBmb3JBbGxLaWxsc0luQmxvY2soCi0gICAgICAgICAgICAgICAgbV9ncmFwaCwgYmxvY2ssCisg
ICAgICAgICAgICAgICAgbV9ncmFwaCwgY29tYmluZWRMaXZlbmVzcywgYmxvY2ssCiAgICAgICAg
ICAgICAgICAgWyZdICh1bnNpZ25lZCBub2RlSW5kZXgsIE5vZGUqIGNhbmRpZGF0ZSkgewogICAg
ICAgICAgICAgICAgICAgICBpZiAoIW1fY2FuZGlkYXRlcy5jb250YWlucyhjYW5kaWRhdGUpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb21iaW5lZExpdmVuZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbWJpbmVkTGl2ZW5lc3MuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21iaW5lZExpdmVuZXNzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJERkdDb21iaW5l
ZExpdmVuZXNzLmgiCisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworI2luY2x1ZGUgIkRGR0F2YWls
YWJpbGl0eU1hcC5oIgorI2luY2x1ZGUgIkRGR0Jsb2NrTWFwSW5saW5lcy5oIgorI2luY2x1ZGUg
IkZ1bGxCeXRlY29kZUxpdmVuZXNzLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK0hhc2hTZXQ8Tm9kZSo+IGxpdmVOb2Rlc0F0
SGVhZChHcmFwaCYgZ3JhcGgsIEJhc2ljQmxvY2sqIGJsb2NrKQoreworICAgIEhhc2hTZXQ8Tm9k
ZSo+IHNlZW47CisgICAgZm9yIChOb2RlKiBub2RlIDogYmxvY2stPnNzYS0+bGl2ZUF0SGVhZCkK
KyAgICAgICAgc2Vlbi5hZGQobm9kZSk7CisgICAgCisgICAgQXZhaWxhYmlsaXR5TWFwJiBhdmFp
bGFiaWxpdHlNYXAgPSBibG9jay0+c3NhLT5hdmFpbGFiaWxpdHlBdEhlYWQ7CisgICAgZ3JhcGgu
Zm9yQWxsTG9jYWxzTGl2ZUluQnl0ZWNvZGUoCisgICAgICAgIGJsb2NrLT5maXJzdE9yaWdpbigp
LmZvckV4aXQsCisgICAgICAgIFsmXSAoVmlydHVhbFJlZ2lzdGVyIHJlZykgeworICAgICAgICAg
ICAgYXZhaWxhYmlsaXR5TWFwLmNsb3NlU3RhcnRpbmdXaXRoTG9jYWwoCisgICAgICAgICAgICAg
ICAgcmVnLAorICAgICAgICAgICAgICAgIFsmXSAoTm9kZSogbm9kZSkgLT4gYm9vbCB7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBzZWVuLmNvbnRhaW5zKG5vZGUpOworICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgWyZdIChOb2RlKiBub2RlKSAtPiBib29sIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHNlZW4uYWRkKG5vZGUpLmlzTmV3RW50cnk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIAorICAgIHJldHVybiBzZWVuOworfQorCitD
b21iaW5lZExpdmVuZXNzOjpDb21iaW5lZExpdmVuZXNzKEdyYXBoJiBncmFwaCkKKyAgICA6IGxp
dmVBdEhlYWQoZ3JhcGgpCisgICAgLCBsaXZlQXRUYWlsKGdyYXBoKQoreworICAgIC8vIEZpcnN0
IGNvbXB1dGUgdGhlIGxpdmVBdEhlYWQgZm9yIGVhY2ggYmxvY2suCisgICAgZm9yIChCYXNpY0Js
b2NrKiBibG9jayA6IGdyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpCisgICAgICAgIGxpdmVB
dEhlYWRbYmxvY2tdID0gbGl2ZU5vZGVzQXRIZWFkKGdyYXBoLCBibG9jayk7CisgICAgCisgICAg
Ly8gTm93IGNvbXB1dGUgdGhlIGxpdmVBdFRhaWwgYnkgdW5pZnlpbmcgdGhlIGxpdmVBdEhlYWQg
b2YgdGhlIHN1Y2Nlc3NvcnMuCisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGdyYXBoLmJs
b2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNz
b3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7CisgICAgICAgICAgICBmb3IgKE5vZGUqIG5vZGUg
OiBsaXZlQXRIZWFkW3N1Y2Nlc3Nvcl0pCisgICAgICAgICAgICAgICAgbGl2ZUF0VGFpbFtibG9j
a10uYWRkKG5vZGUpOworICAgICAgICB9CisgICAgfQorfQorCit9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb21iaW5lZExpdmVuZXNzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21iaW5lZExpdmVuZXNzLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbWJpbmVkTGl2ZW5lc3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHQ29tYmluZWRMaXZlbmVzc19oCisjZGVmaW5lIERG
R0NvbWJpbmVkTGl2ZW5lc3NfaAorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJE
RkdCbG9ja01hcC5oIgorI2luY2x1ZGUgIkRGR0dyYXBoLmgiCisKK25hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKKworLy8gUmV0dXJucyB0aGUgc2V0IG9mIG5vZGVzIGxpdmUgYXQgdGFp
bCwgYm90aCBkdWUgdG8gZHVlIERGRyBhbmQgZHVlIHRvIGJ5dGVjb2RlIChpLmUuIE9TUiBleGl0
KS4KK0hhc2hTZXQ8Tm9kZSo+IGxpdmVOb2Rlc0F0SGVhZChHcmFwaCYgZ3JhcGgsIEJhc2ljQmxv
Y2sqIGJsb2NrKTsKKworc3RydWN0IENvbWJpbmVkTGl2ZW5lc3MgeworICAgIENvbWJpbmVkTGl2
ZW5lc3MoKSB7IH0KKyAgICAKKyAgICBDb21iaW5lZExpdmVuZXNzKEdyYXBoJik7CisgICAgCisg
ICAgQmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+IGxpdmVBdEhlYWQ7CisgICAgQmxvY2tNYXA8SGFz
aFNldDxOb2RlKj4+IGxpdmVBdFRhaWw7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZH
CisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR0NvbWJpbmVkTGl2
ZW5lc3NfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZvckFsbEtpbGxz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGb3JBbGxLaWxs
cy5oCShyZXZpc2lvbiAxODQyODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zv
ckFsbEtpbGxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgREZH
Rm9yQWxsS2lsbHNfaAogI2RlZmluZSBERkdGb3JBbGxLaWxsc19oCiAKLSNpbmNsdWRlICJCeXRl
Y29kZUtpbGxzLmgiCisjaW5jbHVkZSAiREZHQ29tYmluZWRMaXZlbmVzcy5oIgogI2luY2x1ZGUg
IkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5o
IgogI2luY2x1ZGUgIkZ1bGxCeXRlY29kZUxpdmVuZXNzLmgiCkBAIC0zOSwzNSArMzksNiBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAvLyBub2RlIGlzIGtpbGxlZC4gQSBwcmVy
ZXF1aXNpdGUgdG8gdXNpbmcgdGhlc2UgdXRpbGl0aWVzIGlzIGhhdmluZyBsaXZlbmVzcyBhbmQg
T1NSIGF2YWlsYWJpbGl0eQogLy8gY29tcHV0ZWQuCiAKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+Ci12b2lkIGZvckFsbExpdmVOb2Rlc0F0VGFpbChHcmFwaCYgZ3JhcGgsIEJhc2ljQmxvY2sq
IGJsb2NrLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQotewotICAgIEhhc2hTZXQ8Tm9kZSo+IHNl
ZW47Ci0gICAgZm9yIChOb2RlKiBub2RlIDogYmxvY2stPnNzYS0+bGl2ZUF0VGFpbCkgewotICAg
ICAgICBpZiAoc2Vlbi5hZGQobm9kZSkuaXNOZXdFbnRyeSkKLSAgICAgICAgICAgIGZ1bmN0b3Io
bm9kZSk7Ci0gICAgfQotICAgIAotICAgIERGR19BU1NFUlQoZ3JhcGgsIGJsb2NrLT50ZXJtaW5h
bCgpLCBibG9jay0+dGVybWluYWwoKS0+b3JpZ2luLmZvckV4aXQuaXNTZXQoKSk7Ci0gICAgCi0g
ICAgQXZhaWxhYmlsaXR5TWFwJiBhdmFpbGFiaWxpdHlNYXAgPSBibG9jay0+c3NhLT5hdmFpbGFi
aWxpdHlBdFRhaWw7Ci0gICAgZ3JhcGguZm9yQWxsTG9jYWxzTGl2ZUluQnl0ZWNvZGUoCi0gICAg
ICAgIGJsb2NrLT50ZXJtaW5hbCgpLT5vcmlnaW4uZm9yRXhpdCwKLSAgICAgICAgWyZdIChWaXJ0
dWFsUmVnaXN0ZXIgcmVnKSB7Ci0gICAgICAgICAgICBhdmFpbGFiaWxpdHlNYXAuY2xvc2VTdGFy
dGluZ1dpdGhMb2NhbCgKLSAgICAgICAgICAgICAgICByZWcsCi0gICAgICAgICAgICAgICAgWyZd
IChOb2RlKiBub2RlKSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlZW4u
Y29udGFpbnMobm9kZSk7Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBbJl0g
KE5vZGUqIG5vZGUpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXNlZW4uYWRk
KG5vZGUpLmlzTmV3RW50cnkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICAgICAgICAgIGZ1bmN0b3Iobm9kZSk7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLX0KLQogLy8g
VGhpcyB0ZWxscyB5b3UgdGhvc2UgdGhpbmdzIHRoYXQgZGllIG9uIHRoZSBib3VuZGFyeSBiZXR3
ZWVuIG5vZGVCZWZvcmUgYW5kIG5vZGVBZnRlci4gSXQgaXMKIC8vIGNvbnNlcnZhdGl2ZSBpbiB0
aGUgc2Vuc2UgdGhhdCBpdCBtaWdodCByZXNvcnQgdG8gdGVsbGluZyB5b3Ugc29tZSB0aGluZ3Mg
dGhhdCBhcmUgc3RpbGwgbGl2ZSBhdAogLy8gbm9kZUFmdGVyLgpAQCAtMTkyLDEzICsxNjMsMTIg
QEAgdm9pZCBmb3JBbGxLaWxsZWROb2Rlc0F0Tm9kZUluZGV4KAogLy8gdGhlIHZhbHVlIGlzIGVp
dGhlciBubyBsb25nZXIgbGl2ZS4gVGhpcyBwcmV0ZW5kcyB0aGF0IG5vZGVzIGFyZSBkZWFkIGF0
IHRoZSBlbmQgb2YgdGhlIGJsb2NrLCBzbyB0aGF0CiAvLyB5b3UgY2FuIHVzZSB0aGlzIHRvIGRv
IHBlci1iYXNpYy1ibG9jayBhbmFseXNlcy4KIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci12
b2lkIGZvckFsbEtpbGxzSW5CbG9jayhHcmFwaCYgZ3JhcGgsIEJhc2ljQmxvY2sqIGJsb2NrLCBj
b25zdCBGdW5jdG9yJiBmdW5jdG9yKQordm9pZCBmb3JBbGxLaWxsc0luQmxvY2soCisgICAgR3Jh
cGgmIGdyYXBoLCBjb25zdCBDb21iaW5lZExpdmVuZXNzJiBjb21iaW5lZExpdmVuZXNzLCBCYXNp
Y0Jsb2NrKiBibG9jaywKKyAgICBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIGZvckFs
bExpdmVOb2Rlc0F0VGFpbCgKLSAgICAgICAgZ3JhcGgsIGJsb2NrLAotICAgICAgICBbJl0gKE5v
ZGUqIG5vZGUpIHsKLSAgICAgICAgICAgIGZ1bmN0b3IoYmxvY2stPnNpemUoKSwgbm9kZSk7Ci0g
ICAgICAgIH0pOworICAgIGZvciAoTm9kZSogbm9kZSA6IGNvbWJpbmVkTGl2ZW5lc3MubGl2ZUF0
VGFpbFtibG9ja10pCisgICAgICAgIGZ1bmN0b3IoYmxvY2stPnNpemUoKSwgbm9kZSk7CiAgICAg
CiAgICAgTG9jYWxPU1JBdmFpbGFiaWxpdHlDYWxjdWxhdG9yIGxvY2FsQXZhaWxhYmlsaXR5Owog
ICAgIGxvY2FsQXZhaWxhYmlsaXR5LmJlZ2luQmxvY2soYmxvY2spOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25T
aW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxODQyODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiREZHQWJzdHJhY3RIZWFwLmgiCiAjaW5jbHVk
ZSAiREZHQmxvY2tNYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcml6ZS5oIgorI2lu
Y2x1ZGUgIkRGR0NvbWJpbmVkTGl2ZW5lc3MuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2lu
Y2x1ZGUgIkRGR0luc2VydE9TUkhpbnRzRm9yVXBkYXRlLmgiCiAjaW5jbHVkZSAiREZHSW5zZXJ0
aW9uU2V0LmgiCkBAIC0xMDcsNiArMTA4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9ncmFwaC5j
b21wdXRlUmVmQ291bnRzKCk7CiAgICAgICAgIHBlcmZvcm1MaXZlbmVzc0FuYWx5c2lzKG1fZ3Jh
cGgpOwogICAgICAgICBwZXJmb3JtT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXMobV9ncmFwaCk7Cisg
ICAgICAgIG1fY29tYmluZWRMaXZlbmVzcyA9IENvbWJpbmVkTGl2ZW5lc3MobV9ncmFwaCk7CiAg
ICAgICAgIAogICAgICAgICBDU3RyaW5nIGdyYXBoQmVmb3JlU2lua2luZzsKICAgICAgICAgaWYg
KE9wdGlvbnM6OnZlcmJvc2VWYWxpZGF0aW9uRmFpbHVyZSgpICYmIE9wdGlvbnM6OnZhbGlkYXRl
R3JhcGhBdEVhY2hQaGFzZSgpKSB7CkBAIC0xODksNyArMTkxLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAvLyBTbywgd2UgcHJ1bmUgbWF0ZXJpYWxpemVkLWF0LXRhaWwgdG8gb25seSBp
bmNsdWRlIHRoaW5ncyB0aGF0IGFyZSBsaXZlLgogICAgICAgICAgICAgICAgIFZlY3RvcjxOb2Rl
Kj4gdG9SZW1vdmU7CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvIHBhaXIgOiBtYXRlcmlhbGl6
ZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFibG9jay0+c3NhLT5saXZlQXRUYWlsLmNv
bnRhaW5zKHBhaXIua2V5KSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2NvbWJpbmVkTGl2
ZW5lc3MubGl2ZUF0VGFpbFtibG9ja10uY29udGFpbnMocGFpci5rZXkpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgdG9SZW1vdmUuYXBwZW5kKHBhaXIua2V5KTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgZm9yIChOb2RlKiBrZXkgOiB0b1JlbW92ZSkKQEAgLTIyNyw3ICsy
MjksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlmIChwYWlyLnZhbHVlKQogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsgLy8gSXQgd2FzIG1hdGVyaWFsaXplZC4KICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAoYmxvY2stPnNzYS0+bGl2ZUF0VGFpbC5jb250
YWlucyhwYWlyLmtleSkpCisgICAgICAgICAgICAgICAgaWYgKG1fY29tYmluZWRMaXZlbmVzcy5s
aXZlQXRUYWlsW2Jsb2NrXS5jb250YWlucyhwYWlyLmtleSkpCiAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOyAvLyBJdCBtaWdodCBzdGlsbCBnZXQgbWF0ZXJpYWxpemVkIGluIGFsbCBvZiB0
aGUgc3VjY2Vzc29ycy4KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBXZSBr
bm93IHRoYXQgaXQgZGllZCBpbiB0aGlzIGJsb2NrIGFuZCBpdCB3YXNuJ3QgbWF0ZXJpYWxpemVk
LiBUaGF0IG1lYW5zIHRoYXQKQEAgLTM5MSw3ICszOTMsNyBAQCBwcml2YXRlOgogICAgICAgICBt
X3NzYUNhbGN1bGF0b3IuY29tcHV0ZVBoaXMoCiAgICAgICAgICAgICBbJl0gKFNTQUNhbGN1bGF0
b3I6OlZhcmlhYmxlKiB2YXJpYWJsZSwgQmFzaWNCbG9jayogYmxvY2spIC0+IE5vZGUqIHsKICAg
ICAgICAgICAgICAgICBOb2RlKiBhbGxvY2F0aW9uID0gaW5kZXhUb05vZGVbdmFyaWFibGUtPmlu
ZGV4KCldOwotICAgICAgICAgICAgICAgIGlmICghYmxvY2stPnNzYS0+bGl2ZUF0SGVhZC5jb250
YWlucyhhbGxvY2F0aW9uKSkKKyAgICAgICAgICAgICAgICBpZiAoIW1fY29tYmluZWRMaXZlbmVz
cy5saXZlQXRIZWFkW2Jsb2NrXS5jb250YWlucyhhbGxvY2F0aW9uKSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
Tm9kZSogcGhpTm9kZSA9IG1fZ3JhcGguYWRkTm9kZShhbGxvY2F0aW9uLT5wcmVkaWN0aW9uKCks
IFBoaSwgTm9kZU9yaWdpbigpKTsKQEAgLTQwNSw3ICs0MDcsNyBAQCBwcml2YXRlOgogICAgICAg
ICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigp
KSB7CiAgICAgICAgICAgICBIYXNoTWFwPE5vZGUqLCBOb2RlKj4gbWFwcGluZzsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgZm9yIChOb2RlKiBjYW5kaWRhdGUgOiBibG9jay0+c3NhLT5saXZl
QXRIZWFkKSB7CisgICAgICAgICAgICBmb3IgKE5vZGUqIGNhbmRpZGF0ZSA6IG1fY29tYmluZWRM
aXZlbmVzcy5saXZlQXRIZWFkW2Jsb2NrXSkgewogICAgICAgICAgICAgICAgIFNTQUNhbGN1bGF0
b3I6OlZhcmlhYmxlKiB2YXJpYWJsZSA9IG5vZGVUb1ZhcmlhYmxlLmdldChjYW5kaWRhdGUpOwog
ICAgICAgICAgICAgICAgIGlmICghdmFyaWFibGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwpAQCAtNzE0LDcgKzcxNiw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fc3NhQ2FsY3VsYXRv
ci5jb21wdXRlUGhpcygKICAgICAgICAgICAgIFsmXSAoU1NBQ2FsY3VsYXRvcjo6VmFyaWFibGUq
IHZhcmlhYmxlLCBCYXNpY0Jsb2NrKiBibG9jaykgLT4gTm9kZSogewogICAgICAgICAgICAgICAg
IFByb21vdGVkSGVhcExvY2F0aW9uIGxvY2F0aW9uID0gbV9pbmRleFRvTG9jYXRpb25bdmFyaWFi
bGUtPmluZGV4KCldOwotICAgICAgICAgICAgICAgIGlmICghYmxvY2stPnNzYS0+bGl2ZUF0SGVh
ZC5jb250YWlucyhsb2NhdGlvbi5iYXNlKCkpKQorICAgICAgICAgICAgICAgIGlmICghbV9jb21i
aW5lZExpdmVuZXNzLmxpdmVBdEhlYWRbYmxvY2tdLmNvbnRhaW5zKGxvY2F0aW9uLmJhc2UoKSkp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIE5vZGUqIHBoaU5vZGUgPSBtX2dyYXBoLmFkZE5vZGUoU3BlY0hlYXBU
b3AsIFBoaSwgTm9kZU9yaWdpbigpKTsKQEAgLTEwODUsNiArMTA4Nyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIH0KICAgICB9CiAgICAgCisgICAgQ29tYmluZWRMaXZlbmVzcyBtX2NvbWJpbmVkTGl2
ZW5lc3M7CiAgICAgU1NBQ2FsY3VsYXRvciBtX3NzYUNhbGN1bGF0b3I7CiAgICAgSGFzaFNldDxO
b2RlKj4gbV9zaW5rQ2FuZGlkYXRlczsKICAgICBIYXNoTWFwPE5vZGUqLCBOb2RlKj4gbV9tYXRl
cmlhbGl6YXRpb25Ub0VzY2FwZWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2VzY2FwZS1vYmplY3QtaW4tZGlhbW9uZC10aGVuLWV4aXQuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9lc2NhcGUtb2JqZWN0LWluLWRp
YW1vbmQtdGhlbi1leGl0LmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9lc2NhcGUtb2JqZWN0LWluLWRpYW1vbmQtdGhlbi1leGl0LmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDAgQEAKK3ZhciBnbG9iYWwgPSBudWxsOworCitmdW5jdGlv
biBmb28ocCwgcSkgeworICAgIHZhciBvID0ge2Y6NDJ9OworICAgIGlmIChwKQorICAgICAgICBn
bG9iYWwgPSBvOworICAgIHZhciB0bXAgPSBxICsgMTsKKyAgICByZXR1cm4gby5mICsgdG1wOwor
fQorCitub0lubGluZShmb28pOworCit2YXIgbGFzdE9iamVjdCA9IG51bGw7CisKK2Z1bmN0aW9u
IHZhbGlkYXRlRXNjYXBlKHdoZW4pIHsKKyAgICBpZiAoZ2xvYmFsID09PSBsYXN0T2JqZWN0KQor
ICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSBpbiBnbG9iYWwgIiArIHdoZW4gKyAiLCBp
ZGVudGljYWwgdG8gbGFzdE9iamVjdC4iOworICAgIGlmIChnbG9iYWwgPT09IG51bGwgfHwgISh0
eXBlb2YgZ2xvYmFsID09ICJvYmplY3QiKSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFs
dWUgaW4gZ2xvYmFsICIgKyB3aGVuICsgIjogaXQncyBub3QgYW4gb2JqZWN0LiI7CisgICAgaWYg
KGdsb2JhbC5mICE9IDQyKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSBpbiBnbG9i
YWwgIiArIHdoZW4gKyAiOiBmIGlzbid0IDQyLCBpdCdzOiAiICsgZ2xvYmFsLmY7CisgICAgbGFz
dE9iamVjdCA9IGdsb2JhbDsKKyAgICBnbG9iYWwgPSBudWxsOworfQorCitmb3IgKHZhciBpID0g
MDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgZXNjYXBlID0gISEoaSAmIDEpOworICAgIHZh
ciByZXN1bHQgPSBmb28oZXNjYXBlLCA0Mik7CisgICAgaWYgKHJlc3VsdCAhPSA0MiArIDQyICsg
MSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworICAgIGlm
IChlc2NhcGUpCisgICAgICAgIHZhbGlkYXRlRXNjYXBlKCJpbiBsb29wIik7CisgICAgZWxzZSBp
ZiAoZ2xvYmFsICE9PSBudWxsKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZSBpbiBn
bG9iYWw6ICIgKyBnbG9iYWw7Cit9CisKK3ZhciByZXN1bHQgPSBmb28odHJ1ZSwgMjE0NzQ4MzY0
Nyk7CitpZiAocmVzdWx0ICE9IDQyICsgMjE0NzQ4MzY0NyArIDEpCisgICAgdGhyb3cgIkVycm9y
OiBiYWQgcmVzdWx0IGF0IGVuZDogIiArIHJlc3VsdDsKK3ZhbGlkYXRlRXNjYXBlKCJhdCBlbmQi
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc2luay1vYmplY3Qt
cGFzdC1pbnZhbGlkLWNoZWNrLXNuZWFreS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL3Npbmstb2JqZWN0LXBhc3QtaW52YWxpZC1jaGVjay1zbmVh
a3kuanMJKHJldmlzaW9uIDE4NDI4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3Mvc2luay1vYmplY3QtcGFzdC1pbnZhbGlkLWNoZWNrLXNuZWFreS5qcwkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDMgQEAKLS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDQ5NDUKLS8vQCBza2lwCi0KIGZ1bmN0aW9uIGZvbyhwKSB7CiAgICAgdmFyIHJl
c3VsdCA9IDA7CiAgICAgdmFyIG8gPSB7dmFsdWVPZjogZnVuY3Rpb24oKSB7IHJlc3VsdCA9IDE7
IH19Owo=
</data>
<flag name="review"
          id="277911"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>