<?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>149586</bug_id>
          
          <creation_ts>2015-09-27 10:46:55 -0700</creation_ts>
          <short_desc>GC copy phase spans too many files</short_desc>
          <delta_ts>2015-09-29 09:39:59 -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>Other</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>
          
          <blocked>149432</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1128936</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-27 10:46:55 -0700</bug_when>
    <thetext>Current the GC copy phase has some code in HeapInlines.h that gets included into every file in WebKit, some code in Heap.cpp, some code in CopyVisitor.cpp, and some in CopyVisitorInlines.h.  Also, CopyVisitor has this peculiar idiom where you always use it by first instantiating it, then calling an init method, then doing things, then calling a tear-down method, and then calling some malloc method, and then destructing the CopyVisitor.  That&apos;s too complicated.

Part of the problem is that we have a fairly clever sharding work distribution algorithm that uses Heap as the place where we hold shared state.  We don&apos;t really have to do that.  Because we now use a lambda-based parallelism API (ParallelHelperPool), we could just have the state on the stack, and have all of the functionality in one place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128937</commentid>
    <comment_count>1</comment_count>
      <attachid>261989</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-27 10:53:18 -0700</bug_when>
    <thetext>Created attachment 261989
the patch

Not yet ready for review since I need to run more tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128938</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-27 10:56:26 -0700</bug_when>
    <thetext>Attachment 261989 did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/Heap.cpp:641:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/Heap.cpp:645:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/CopyVisitor.h:40:  The parameter name &quot;heap&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>1129158</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-28 23:40:38 -0700</bug_when>
    <thetext>The last version of the patch slows down Octane/splay.  I&apos;ll investigate...


Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on shakezilla (MacBookPro11,3).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (r190302)
&quot;ParallelVectorIterator&quot; at /Volumes/Data/quartary/OpenSource/WebKitBuild/Release/jsc (r190302)

Collected 7 samples per benchmark/VM, with 7 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           ParallelVectorIterator                              
SunSpider:
   3d-cube                                            4.7198+-0.3629            4.4973+-0.0583          might be 1.0495x faster
   3d-morph                                           5.3687+-0.3406            5.2551+-0.2312          might be 1.0216x faster
   3d-raytrace                                        5.4230+-0.2569            5.1507+-0.1708          might be 1.0529x faster
   access-binary-trees                                2.1505+-0.0483     ?      2.1868+-0.1030        ? might be 1.0169x slower
   access-fannkuch                                    5.4629+-0.0694     ?      5.4673+-0.0533        ?
   access-nbody                                       2.6101+-0.2702            2.5481+-0.1092          might be 1.0243x faster
   access-nsieve                                      3.0956+-0.1562            3.0051+-0.0381          might be 1.0301x faster
   bitops-3bit-bits-in-byte                           1.1445+-0.0382     ?      1.2137+-0.0976        ? might be 1.0605x slower
   bitops-bits-in-byte                                3.2238+-0.0844            3.2224+-0.0849        
   bitops-bitwise-and                                 2.0033+-0.0710     ?      2.1066+-0.2302        ? might be 1.0516x slower
   bitops-nsieve-bits                                 2.9574+-0.0439     ?      2.9666+-0.1764        ?
   controlflow-recursive                              2.3386+-0.0750     ?      2.4635+-0.2343        ? might be 1.0534x slower
   crypto-aes                                         3.8857+-0.1144     ?      4.0352+-0.2337        ? might be 1.0385x slower
   crypto-md5                                         2.5060+-0.0917     ?      2.5598+-0.1586        ? might be 1.0214x slower
   crypto-sha1                                        2.4192+-0.1554     ?      2.5396+-0.3143        ? might be 1.0498x slower
   date-format-tofte                                  6.5307+-0.1700     ?      6.7145+-0.2908        ? might be 1.0281x slower
   date-format-xparb                                  4.8283+-0.2585            4.6191+-0.1358          might be 1.0453x faster
   math-cordic                                        2.8214+-0.1112            2.7889+-0.1126          might be 1.0117x faster
   math-partial-sums                                  4.7613+-0.1672            4.6622+-0.0444          might be 1.0213x faster
   math-spectral-norm                                 1.9011+-0.0435     ?      1.9155+-0.0357        ?
   regexp-dna                                         5.9851+-0.1017            5.9785+-0.0597        
   string-base64                                      4.3509+-0.0973     ?      4.5108+-0.2447        ? might be 1.0368x slower
   string-fasta                                       5.8706+-0.0838     ?      5.8842+-0.3663        ?
   string-tagcloud                                    7.9868+-0.1685            7.9612+-0.1245        
   string-unpack-code                                18.5650+-0.9484     ?     18.8600+-0.7487        ? might be 1.0159x slower
   string-validate-input                              4.5596+-0.1195            4.4879+-0.0511          might be 1.0160x faster

   &lt;arithmetic&gt;                                       4.5181+-0.0335     ?      4.5231+-0.0661        ? might be 1.0011x slower

                                                        TipOfTree           ParallelVectorIterator                              
LongSpider:
   3d-cube                                          806.5286+-10.9772         800.6581+-7.9082        
   3d-morph                                        1488.3861+-8.4161         1486.2430+-4.5600        
   3d-raytrace                                      593.6773+-4.5456     ?    596.5057+-6.3147        ?
   access-binary-trees                              788.3520+-4.1456     ?    791.7157+-4.7713        ?
   access-fannkuch                                  273.2931+-3.8264     ?    273.9457+-3.5773        ?
   access-nbody                                     507.1519+-3.9987          507.0606+-2.5119        
   access-nsieve                                    361.1972+-9.5092     ?    361.5741+-8.9620        ?
   bitops-3bit-bits-in-byte                          35.1540+-1.3661           34.1175+-0.6946          might be 1.0304x faster
   bitops-bits-in-byte                               75.4170+-1.8178           74.7498+-2.4062        
   bitops-nsieve-bits                               402.8913+-7.0871          402.6664+-4.2827        
   controlflow-recursive                            424.9516+-3.5355          424.2087+-2.7112        
   crypto-aes                                       558.5502+-12.2380         557.5879+-3.6967        
   crypto-md5                                       431.8592+-3.1391     ?    432.3088+-2.3650        ?
   crypto-sha1                                      624.1000+-10.7727         615.5404+-2.8211          might be 1.0139x faster
   date-format-tofte                                501.8983+-9.4399          495.6991+-2.4300          might be 1.0125x faster
   date-format-xparb                                659.6085+-12.7646         656.1720+-5.6042        
   hash-map                                         148.3479+-1.6938          147.7510+-1.2404        
   math-cordic                                      475.0909+-1.0715          474.5952+-1.5610        
   math-partial-sums                                456.0489+-4.0120     ?    456.6125+-3.1241        ?
   math-spectral-norm                               548.1241+-2.7451     ?    548.1714+-4.4251        ?
   string-base64                                    357.0710+-3.8468     ?    357.1678+-4.1928        ?
   string-fasta                                     365.1264+-2.9431     ?    365.6739+-2.8872        ?
   string-tagcloud                                  177.1620+-2.9066          176.5926+-3.8678        

   &lt;geometric&gt;                                      382.9365+-0.9874          381.7101+-1.3184          might be 1.0032x faster

                                                        TipOfTree           ParallelVectorIterator                              
V8Spider:
   crypto                                            48.3882+-0.8375     ?     48.4755+-0.9997        ?
   deltablue                                         76.9487+-1.1511     ?     79.1720+-3.4619        ? might be 1.0289x slower
   earley-boyer                                      41.9492+-1.4348     ?     42.2403+-1.0588        ?
   raytrace                                          31.9180+-0.5899           30.3493+-1.6250          might be 1.0517x faster
   regexp                                            62.8758+-2.0589           62.4668+-1.1517        
   richards                                          54.0979+-0.8149     ?     56.0048+-2.4996        ? might be 1.0352x slower
   splay                                             35.9219+-1.2276           35.9107+-0.6539        

   &lt;geometric&gt;                                       48.2420+-0.5888     ?     48.3300+-0.6411        ? might be 1.0018x slower

                                                        TipOfTree           ParallelVectorIterator                              
Octane:
   encrypt                                           0.16391+-0.00251          0.16341+-0.00199       
   decrypt                                           2.90447+-0.01149          2.90354+-0.01478       
   deltablue                                x2       0.14223+-0.00544    ?     0.14566+-0.01236       ? might be 1.0241x slower
   earley                                            0.30285+-0.00538          0.30252+-0.00506       
   boyer                                             4.31675+-0.06716          4.31633+-0.03843       
   navier-stokes                            x2       4.81196+-0.01963    ?     4.82167+-0.01869       ?
   raytrace                                 x2       0.85262+-0.00451    ?     0.85832+-0.00534       ?
   richards                                 x2       0.08824+-0.00081          0.08802+-0.00068       
   splay                                    x2       0.33032+-0.00191    !     0.34865+-0.00428       ! definitely 1.0555x slower
   regexp                                   x2      24.07513+-0.22880         23.88162+-0.12267       
   pdfjs                                    x2      36.95176+-0.46881    ?    37.58974+-0.52199       ? might be 1.0173x slower
   mandreel                                 x2      42.32431+-0.34138    ?    42.62847+-0.37430       ?
   gbemu                                    x2      31.41305+-0.25535    ?    33.14016+-3.38958       ? might be 1.0550x slower
   closure                                           0.57352+-0.00448    ?     0.57630+-0.00403       ?
   jquery                                            7.23065+-0.04616    ?     7.25613+-0.07282       ?
   box2d                                    x2       9.13888+-0.08414          9.05755+-0.06801       
   zlib                                     x2     383.49586+-6.18816    ?   386.36110+-4.91962       ?
   typescript                               x2     659.80699+-9.13697    ?   676.34664+-9.46067       ? might be 1.0251x slower

   &lt;geometric&gt;                                       5.30716+-0.01964    ?     5.36851+-0.06267       ? might be 1.0116x slower

                                                        TipOfTree           ParallelVectorIterator                              
Kraken:
   ai-astar                                          127.952+-3.161            127.569+-2.103         
   audio-beat-detection                               49.759+-0.161      ?      50.196+-0.564         ?
   audio-dft                                          96.581+-1.775      ?      96.905+-2.104         ?
   audio-fft                                          36.030+-2.434             34.911+-0.131           might be 1.0320x faster
   audio-oscillator                                   56.216+-0.795             55.926+-0.668         
   imaging-darkroom                                   60.720+-1.773             60.051+-0.969           might be 1.0111x faster
   imaging-desaturate                                 47.834+-0.177      ?      48.658+-2.248         ? might be 1.0172x slower
   imaging-gaussian-blur                              87.420+-4.314             84.698+-0.267           might be 1.0321x faster
   json-parse-financial                               39.951+-0.940             39.531+-0.815           might be 1.0106x faster
   json-stringify-tinderbox                           22.896+-0.506             22.050+-0.490           might be 1.0384x faster
   stanford-crypto-aes                                41.904+-3.078             40.575+-1.016           might be 1.0327x faster
   stanford-crypto-ccm                                36.384+-0.916      ?      36.593+-0.820         ?
   stanford-crypto-pbkdf2                             94.205+-0.779      ?      94.322+-1.702         ?
   stanford-crypto-sha256-iterative                   36.736+-1.131             36.162+-0.882           might be 1.0159x faster

   &lt;arithmetic&gt;                                       59.613+-0.475             59.153+-0.397           might be 1.0078x faster

                                                        TipOfTree           ParallelVectorIterator                              
JSRegress:
   abc-forward-loop-equal                            29.6770+-0.7162           29.4969+-0.6214        
   abc-postfix-backward-loop                         29.8435+-0.8621           29.4561+-0.4044          might be 1.0132x faster
   abc-simple-backward-loop                          29.0502+-0.4882           28.9692+-0.4055        
   abc-simple-forward-loop                           29.4918+-0.8450           28.8855+-0.4949          might be 1.0210x faster
   abc-skippy-loop                                   21.0804+-0.3147     ?     21.1904+-0.5192        ?
   abs-boolean                                        2.4701+-0.0704            2.4453+-0.0214          might be 1.0102x faster
   adapt-to-double-divide                            16.5219+-0.2640           16.3653+-0.3598        
   aliased-arguments-getbyval                         1.2864+-0.1142            1.1804+-0.0439          might be 1.0899x faster
   allocate-big-object                                2.5823+-0.0736            2.4933+-0.1815          might be 1.0357x faster
   arguments-named-and-reflective                    10.8886+-0.4118           10.8502+-0.8668        
   arguments-out-of-bounds                            9.7872+-0.8404            9.1480+-0.3854          might be 1.0699x faster
   arguments-strict-mode                              9.8865+-0.4604            9.6050+-0.7045          might be 1.0293x faster
   arguments                                          8.3978+-0.1832            8.3838+-0.2936        
   arity-mismatch-inlining                            0.8483+-0.0317     ?      0.8514+-0.0148        ?
   array-access-polymorphic-structure                 7.1277+-0.2311            7.0051+-0.1500          might be 1.0175x faster
   array-nonarray-polymorhpic-access                 23.5317+-0.2949           23.2759+-0.4260          might be 1.0110x faster
   array-prototype-every                             76.5602+-1.9625           74.3754+-1.1216          might be 1.0294x faster
   array-prototype-forEach                           73.8797+-1.1221           73.3880+-1.0849        
   array-prototype-map                               84.4649+-5.8481           81.8962+-3.2133          might be 1.0314x faster
   array-prototype-reduce                            72.2394+-1.6381           70.4252+-0.9117          might be 1.0258x faster
   array-prototype-reduceRight                       72.2816+-2.0628           70.2383+-0.8014          might be 1.0291x faster
   array-prototype-some                              74.5935+-0.9776     ?     75.8073+-1.4885        ? might be 1.0163x slower
   array-splice-contiguous                           19.9602+-0.7089     ?     21.7476+-1.7305        ? might be 1.0895x slower
   array-with-double-add                              3.4406+-0.0702            3.3806+-0.0753          might be 1.0178x faster
   array-with-double-increment                        3.0778+-0.0572     ?      3.1352+-0.1672        ? might be 1.0186x slower
   array-with-double-mul-add                          4.3679+-0.4207            4.3239+-0.2821          might be 1.0102x faster
   array-with-double-sum                              3.2352+-0.0837     ?      3.2458+-0.1447        ?
   array-with-int32-add-sub                           5.6926+-0.1260     ?      5.7109+-0.2785        ?
   array-with-int32-or-double-sum                     3.2786+-0.0803            3.2245+-0.0167          might be 1.0168x faster
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     25.8411+-1.1773     ?     26.2293+-1.5782        ? might be 1.0150x slower
   ArrayBuffer-DataView-alloc-long-lived             11.7835+-0.2069     ?     11.9142+-0.4903        ? might be 1.0111x slower
   ArrayBuffer-Int32Array-byteOffset                  3.5314+-0.0934            3.4839+-0.0423          might be 1.0136x faster
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     26.3897+-1.0839           26.1191+-0.8353          might be 1.0104x faster
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     19.3875+-0.4117     ?     19.5706+-0.7506        ?
   ArrayBuffer-Int8Array-alloc-long-lived            11.1662+-0.3716     ?     11.4241+-0.6068        ? might be 1.0231x slower
   ArrayBuffer-Int8Array-alloc                        9.3915+-0.1825     ?      9.6046+-0.4490        ? might be 1.0227x slower
   arrowfunction-call                                11.0184+-0.2956           10.8916+-0.1434          might be 1.0116x faster
   asmjs_bool_bug                                     7.4454+-0.1004     ?      7.4710+-0.1434        ?
   assign-custom-setter-polymorphic                   2.4972+-0.0503     ?      2.5307+-0.0817        ? might be 1.0134x slower
   assign-custom-setter                               3.4521+-0.0681     ?      3.4799+-0.0731        ?
   basic-set                                          7.1288+-0.2272     ?      7.2008+-0.2775        ? might be 1.0101x slower
   big-int-mul                                        3.5892+-0.1656            3.5240+-0.1795          might be 1.0185x faster
   boolean-test                                       3.0974+-0.1035     ?      3.1780+-0.2850        ? might be 1.0260x slower
   branch-fold                                        3.6129+-0.0702     ?      3.6708+-0.1759        ? might be 1.0160x slower
   branch-on-string-as-boolean                       16.8345+-0.6243     ?     16.9973+-0.5976        ?
   by-val-generic                                     2.5074+-0.2997            2.4803+-0.1628          might be 1.0109x faster
   call-spread-apply                                 27.4395+-1.6954     ?     27.6671+-0.6994        ?
   call-spread-call                                  21.2433+-0.9638     ?     21.5852+-0.5724        ? might be 1.0161x slower
   captured-assignments                               0.4233+-0.0286     ?      0.4251+-0.0296        ?
   cast-int-to-double                                 5.0602+-0.0672     ?      5.0606+-0.0561        ?
   cell-argument                                      5.9829+-0.2760     ?      6.0107+-0.5199        ?
   cfg-simplify                                       2.8534+-0.0777     ?      2.8678+-0.0565        ?
   chain-getter-access                                8.2721+-0.1988     ?      8.3705+-0.2343        ? might be 1.0119x slower
   cmpeq-obj-to-obj-other                            12.6757+-0.9236     ?     13.7775+-0.9394        ? might be 1.0869x slower
   constant-test                                      4.9523+-0.3058            4.8662+-0.0626          might be 1.0177x faster
   create-lots-of-functions                           9.7955+-0.5147            9.6869+-0.4708          might be 1.0112x faster
   cse-new-array-buffer                               2.2826+-0.1175     ?      2.2896+-0.1332        ?
   cse-new-array                                      2.3422+-0.0907            2.3362+-0.1107        
   DataView-custom-properties                        31.6114+-1.5687           30.9164+-0.7174          might be 1.0225x faster
   delay-tear-off-arguments-strictmode               12.6078+-0.3017           12.5170+-0.4205        
   deltablue-varargs                                174.3766+-3.5076          174.2301+-10.1673       
   destructuring-arguments                          164.7410+-1.4091     ^    160.4176+-0.7298        ^ definitely 1.0270x faster
   destructuring-parameters-overridden-by-function   
                                                      0.4701+-0.0289     ?      0.5084+-0.0713        ? might be 1.0815x slower
   destructuring-swap                                 4.7796+-0.1328     ?      4.7808+-0.0599        ?
   direct-arguments-getbyval                          1.2084+-0.0595            1.1816+-0.0867          might be 1.0226x faster
   div-boolean-double                                 5.2433+-0.1205     ?      5.2883+-0.1269        ?
   div-boolean                                        8.1613+-0.2435            8.0975+-0.0431        
   double-get-by-val-out-of-bounds                    4.4399+-0.0810     ?      4.4649+-0.0369        ?
   double-pollution-getbyval                          8.7924+-0.3001     ?      8.8292+-0.3646        ?
   double-pollution-putbyoffset                       3.9293+-0.4153            3.5732+-0.0651          might be 1.0996x faster
   double-real-use                                   24.3079+-1.4268     ?     25.5923+-2.5703        ? might be 1.0528x slower
   double-to-int32-typed-array-no-inline              2.1471+-0.0544     ?      2.2559+-0.1414        ? might be 1.0507x slower
   double-to-int32-typed-array                        2.0924+-0.0183     ?      2.1481+-0.1496        ? might be 1.0266x slower
   double-to-uint32-typed-array-no-inline             2.3039+-0.0497            2.2379+-0.0435          might be 1.0295x faster
   double-to-uint32-typed-array                       2.1039+-0.0355            2.0942+-0.0331        
   elidable-new-object-dag                           34.3477+-1.0919           33.5826+-0.7355          might be 1.0228x faster
   elidable-new-object-roflcopter                    33.4452+-1.1616           32.1285+-1.6350          might be 1.0410x faster
   elidable-new-object-then-call                     31.7069+-0.6927     ?     31.7254+-0.6728        ?
   elidable-new-object-tree                          37.1338+-0.7748     ?     37.4034+-0.5054        ?
   empty-string-plus-int                              4.7148+-0.0995            4.6979+-0.0802        
   emscripten-cube2hash                              28.0883+-0.9972           26.8709+-1.2746          might be 1.0453x faster
   exit-length-on-plain-object                       15.3962+-0.3820     ?     15.4000+-0.6944        ?
   external-arguments-getbyval                        1.2035+-0.1038     ?      1.3633+-0.2590        ? might be 1.1328x slower
   external-arguments-putbyval                        2.1987+-0.1281            2.0954+-0.0688          might be 1.0493x faster
   fixed-typed-array-storage-var-index                1.2307+-0.0409     ?      1.3546+-0.2997        ? might be 1.1007x slower
   fixed-typed-array-storage                          0.9903+-0.1437            0.9811+-0.1574        
   Float32Array-matrix-mult                           4.0787+-0.1666     ?      4.1012+-0.1819        ?
   Float32Array-to-Float64Array-set                  46.6777+-0.9884     ?     47.0780+-0.5295        ?
   Float64Array-alloc-long-lived                     59.3318+-1.7185           59.1440+-1.8451        
   Float64Array-to-Int16Array-set                    56.3639+-0.7206     ?     57.8730+-2.2894        ? might be 1.0268x slower
   fold-double-to-int                                12.1485+-0.2297     ?     12.1792+-0.1018        ?
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     11.2668+-1.2814           10.7415+-1.0988          might be 1.0489x faster
   fold-get-by-id-to-multi-get-by-offset             10.4859+-0.8394            9.5759+-0.3636          might be 1.0950x faster
   fold-multi-get-by-offset-to-get-by-offset   
                                                      9.2978+-0.7358            8.2230+-1.2851          might be 1.1307x faster
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      8.2277+-1.1763     ?      9.3454+-1.0889        ? might be 1.1359x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      9.5171+-1.4215     ?      9.7660+-0.9283        ? might be 1.0261x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                     10.8831+-1.4569     ?     11.0658+-1.7935        ? might be 1.0168x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                      9.2083+-0.2837            9.1522+-0.2898        
   fold-put-by-id-to-multi-put-by-offset             10.6126+-0.7352     ?     11.3849+-0.7043        ? might be 1.0728x slower
   fold-put-by-val-with-string-to-multi-put-by-offset   
                                                     11.7564+-0.5140           11.2516+-0.9656          might be 1.0449x faster
   fold-put-by-val-with-symbol-to-multi-put-by-offset   
                                                     11.0328+-1.4508     ?     11.5962+-1.7949        ? might be 1.0511x slower
   fold-put-structure                                 7.7807+-0.9301     ?      8.1231+-0.9151        ? might be 1.0440x slower
   for-of-iterate-array-entries                      10.7488+-0.2276           10.6910+-0.2495        
   for-of-iterate-array-keys                          3.4860+-0.1427            3.4175+-0.1811          might be 1.0201x faster
   for-of-iterate-array-values                        3.3741+-0.2295     ?      3.3807+-0.1580        ?
   fround                                            17.4179+-0.5303     ?     17.5969+-0.7738        ? might be 1.0103x slower
   ftl-library-inlining-dataview                     56.8091+-1.0227     ?     57.2077+-1.3081        ?
   ftl-library-inlining                              96.8898+-0.6429     ?     97.2562+-1.2549        ?
   function-call                                     11.0019+-0.8980           10.9349+-0.6033        
   function-dot-apply                                 2.1870+-0.2914            2.1302+-0.1772          might be 1.0267x faster
   function-test                                      2.7544+-0.0731     ?      2.7723+-0.0878        ?
   function-with-eval                                92.9128+-0.8352     ?     93.1299+-1.0733        ?
   gcse-poly-get-less-obvious                        20.4478+-0.2368     ?     20.6124+-0.5163        ?
   gcse-poly-get                                     22.4891+-0.3689     ?     22.6455+-0.6326        ?
   gcse                                               3.4142+-0.1312     ?      3.4217+-0.0569        ?
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.6511+-0.1016            2.6334+-0.1101        
   get-by-id-bimorphic-check-structure-elimination   
                                                      4.7292+-0.0710            4.6743+-0.0236          might be 1.0118x faster
   get-by-id-chain-from-try-block                     2.4201+-0.0701     ?      2.5405+-0.2013        ? might be 1.0498x slower
   get-by-id-check-structure-elimination              3.9374+-0.0653            3.8959+-0.0880          might be 1.0106x faster
   get-by-id-proto-or-self                           15.1851+-0.5198     ?     15.7605+-0.8221        ? might be 1.0379x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      2.9361+-0.0715            2.8616+-0.0474          might be 1.0260x faster
   get-by-id-self-or-proto                           15.2713+-0.3762     ?     15.8104+-0.9283        ? might be 1.0353x slower
   get-by-val-out-of-bounds                           4.3072+-0.0741     ?      4.3229+-0.0975        ?
   get-by-val-with-string-bimorphic-check-structure-elimination-simple   
                                                      2.7436+-0.1100            2.7276+-0.0847        
   get-by-val-with-string-bimorphic-check-structure-elimination   
                                                      5.9237+-0.2391     ?      5.9936+-0.2462        ? might be 1.0118x slower
   get-by-val-with-string-chain-from-try-block   
                                                      2.4171+-0.0455     ?      2.4606+-0.1043        ? might be 1.0180x slower
   get-by-val-with-string-check-structure-elimination   
                                                      5.2216+-0.2045            5.1315+-0.1039          might be 1.0176x faster
   get-by-val-with-string-proto-or-self              15.6932+-0.6184           15.4091+-0.5114          might be 1.0184x faster
   get-by-val-with-string-quadmorphic-check-structure-elimination-simple   
                                                      3.1074+-0.0975            3.0829+-0.0893        
   get-by-val-with-string-self-or-proto              15.2571+-0.2186     ?     15.5173+-0.3712        ? might be 1.0171x slower
   get-by-val-with-symbol-bimorphic-check-structure-elimination-simple   
                                                      2.9511+-0.0983            2.9343+-0.0655        
   get-by-val-with-symbol-bimorphic-check-structure-elimination   
                                                     12.3140+-0.0812     ?     12.3884+-0.2537        ?
   get-by-val-with-symbol-chain-from-try-block   
                                                      2.3986+-0.0296     ?      2.4385+-0.0719        ? might be 1.0166x slower
   get-by-val-with-symbol-check-structure-elimination   
                                                     11.0212+-0.1042           10.9775+-0.0785        
   get-by-val-with-symbol-proto-or-self              15.8233+-0.7195           15.5793+-0.5583          might be 1.0157x faster
   get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple   
                                                      3.9875+-0.1452            3.9099+-0.0781          might be 1.0198x faster
   get-by-val-with-symbol-self-or-proto              16.2772+-0.9066     ?     16.3554+-1.2275        ?
   get_callee_monomorphic                             2.3077+-0.0714     ?      2.3846+-0.3107        ? might be 1.0333x slower
   get_callee_polymorphic                             3.6186+-0.4392            3.3800+-0.0898          might be 1.0706x faster
   getter-no-activation                               4.7125+-0.1866     ?      4.8066+-0.2054        ? might be 1.0200x slower
   getter-prototype                                   8.0119+-0.0895            7.9814+-0.2099        
   getter-richards-try-catch                       1004.8022+-19.6664         978.9166+-14.5859         might be 1.0264x faster
   getter-richards                                  113.0417+-7.5249          110.6151+-3.9557          might be 1.0219x faster
   getter                                             5.2949+-0.5255     ?      5.4763+-0.5872        ? might be 1.0343x slower
   global-object-access-with-mutating-structure   
                                                      5.6864+-0.2938            5.5027+-0.2135          might be 1.0334x faster
   global-var-const-infer-fire-from-opt               0.8319+-0.0933     ?      0.8619+-0.0964        ? might be 1.0361x slower
   global-var-const-infer                             0.7117+-0.0699            0.6870+-0.0489          might be 1.0359x faster
   hard-overflow-check-equal                         27.9329+-0.6513     ?     28.2484+-0.8833        ? might be 1.0113x slower
   hard-overflow-check                               27.3933+-0.8720           26.3164+-0.8791          might be 1.0409x faster
   HashMap-put-get-iterate-keys                      26.9686+-1.8430           25.5536+-2.8207          might be 1.0554x faster
   HashMap-put-get-iterate                           28.1602+-0.6819     ?     29.2721+-1.3300        ? might be 1.0395x slower
   HashMap-string-put-get-iterate                    24.0840+-1.0760     ?     25.3236+-1.7875        ? might be 1.0515x slower
   hoist-make-rope                                    8.6285+-0.4054            8.5981+-0.4463        
   hoist-poly-check-structure-effectful-loop   
                                                      3.5981+-0.1305     ?      3.8786+-0.3253        ? might be 1.0779x slower
   hoist-poly-check-structure                         3.0853+-0.0436     ?      3.2411+-0.1919        ? might be 1.0505x slower
   imul-double-only                                   7.6740+-0.4026     ?      7.7243+-0.3599        ?
   imul-int-only                                      8.4802+-1.0744            8.2806+-0.9237          might be 1.0241x faster
   imul-mixed                                         7.1970+-0.4605            7.1761+-0.6919        
   in-four-cases                                     17.0289+-0.5030     ?     17.1070+-0.2652        ?
   in-one-case-false                                  9.5100+-0.5981            9.3691+-0.2533          might be 1.0150x faster
   in-one-case-true                                   9.4107+-0.3569     ?      9.6008+-0.4339        ? might be 1.0202x slower
   in-two-cases                                      10.1095+-0.4431           10.0510+-0.3440        
   indexed-properties-in-objects                      2.7348+-0.0433     ?      2.8201+-0.0960        ? might be 1.0312x slower
   infer-closure-const-then-mov-no-inline             3.8145+-0.5175     ?      3.8334+-0.5874        ?
   infer-closure-const-then-mov                      18.4396+-0.5674     ?     18.7829+-0.3901        ? might be 1.0186x slower
   infer-closure-const-then-put-to-scope-no-inline   
                                                     10.9309+-0.1441           10.8907+-0.1758        
   infer-closure-const-then-put-to-scope             22.8817+-0.5774     ?     23.0935+-0.3905        ?
   infer-closure-const-then-reenter-no-inline   
                                                     47.3127+-0.6095     ?     47.7298+-0.4000        ?
   infer-closure-const-then-reenter                  23.4400+-1.5639           22.8026+-0.8222          might be 1.0280x faster
   infer-constant-global-property                     3.4227+-0.0683            3.3811+-0.0458          might be 1.0123x faster
   infer-constant-property                            2.6168+-0.0299     ?      2.6426+-0.0677        ?
   infer-one-time-closure-ten-vars                    7.8292+-0.4415            7.7040+-0.2297          might be 1.0163x faster
   infer-one-time-closure-two-vars                    7.4386+-0.6323     ?      7.4827+-0.3301        ?
   infer-one-time-closure                             7.2569+-0.1427     ?      7.3122+-0.2519        ?
   infer-one-time-deep-closure                       11.1136+-0.5784           11.0881+-0.6143        
   inline-arguments-access                            3.4675+-0.0939     ?      3.6915+-0.2641        ? might be 1.0646x slower
   inline-arguments-aliased-access                    3.7949+-0.1664            3.6841+-0.1122          might be 1.0301x faster
   inline-arguments-local-escape                      3.7462+-0.2082            3.6034+-0.3012          might be 1.0396x faster
   inline-get-scoped-var                              4.4468+-0.1021     ?      4.5379+-0.2102        ? might be 1.0205x slower
   inlined-put-by-id-transition                       9.2277+-0.5035            8.9526+-0.3671          might be 1.0307x faster
   inlined-put-by-val-with-string-transition   
                                                     42.1857+-1.2557     ?     42.7688+-1.3706        ? might be 1.0138x slower
   inlined-put-by-val-with-symbol-transition   
                                                     44.4078+-3.3003           43.3343+-1.6856          might be 1.0248x faster
   int-or-other-abs-then-get-by-val                   4.5595+-0.2664            4.4706+-0.1160          might be 1.0199x faster
   int-or-other-abs-zero-then-get-by-val             15.3921+-0.3038     ?     15.8472+-0.5329        ? might be 1.0296x slower
   int-or-other-add-then-get-by-val                   4.0172+-0.0187     ?      4.0480+-0.0926        ?
   int-or-other-add                                   4.8963+-0.0479     ?      4.9362+-0.1123        ?
   int-or-other-div-then-get-by-val                   3.7567+-0.0578     ?      3.7798+-0.0848        ?
   int-or-other-max-then-get-by-val                   3.9105+-0.1643     ?      4.0031+-0.2356        ? might be 1.0237x slower
   int-or-other-min-then-get-by-val                   3.7319+-0.0371     ?      3.9442+-0.2236        ? might be 1.0569x slower
   int-or-other-mod-then-get-by-val                   3.4665+-0.0394            3.4118+-0.0423          might be 1.0160x faster
   int-or-other-mul-then-get-by-val                   3.6628+-0.2355            3.5913+-0.0687          might be 1.0199x faster
   int-or-other-neg-then-get-by-val                   3.9674+-0.0712     ?      4.0123+-0.0783        ? might be 1.0113x slower
   int-or-other-neg-zero-then-get-by-val             15.2318+-0.2796     ?     15.6262+-0.5351        ? might be 1.0259x slower
   int-or-other-sub-then-get-by-val                   4.1803+-0.2702            4.0664+-0.1616          might be 1.0280x faster
   int-or-other-sub                                   3.4561+-0.0830     ?      3.4676+-0.0962        ?
   int-overflow-local                                 4.1094+-0.1042     ?      4.1394+-0.0855        ?
   Int16Array-alloc-long-lived                       42.8222+-1.0441           42.3891+-1.2822          might be 1.0102x faster
   Int16Array-bubble-sort-with-byteLength            17.1483+-0.5543           17.1142+-0.5054        
   Int16Array-bubble-sort                            16.6215+-0.3203     ?     17.0758+-0.3792        ? might be 1.0273x slower
   Int16Array-load-int-mul                            1.4260+-0.0385     ?      1.4661+-0.0772        ? might be 1.0282x slower
   Int16Array-to-Int32Array-set                      44.3347+-0.7585     ?     45.0978+-2.2138        ? might be 1.0172x slower
   Int32Array-alloc-large                            11.9339+-0.4855     ?     12.1517+-1.0080        ? might be 1.0183x slower
   Int32Array-alloc-long-lived                       48.5370+-1.1996           48.1074+-1.2698        
   Int32Array-alloc                                   2.8971+-0.5147            2.8558+-0.1982          might be 1.0145x faster
   Int32Array-Int8Array-view-alloc                    5.8100+-0.0570     ?      5.8604+-0.3055        ?
   int52-spill                                        4.6993+-0.2533     ?      4.9553+-0.5697        ? might be 1.0545x slower
   Int8Array-alloc-long-lived                        39.3871+-2.0717           38.0007+-0.5861          might be 1.0365x faster
   Int8Array-load-with-byteLength                     3.3352+-0.0155     ?      3.3764+-0.0502        ? might be 1.0124x slower
   Int8Array-load                                     3.4974+-0.2933            3.3928+-0.0592          might be 1.0308x faster
   integer-divide                                    10.4599+-0.1940     ?     10.8890+-1.3211        ? might be 1.0410x slower
   integer-modulo                                     1.5858+-0.1044     ?      1.6018+-0.0314        ? might be 1.0101x slower
   is-boolean-fold-tricky                             3.8574+-0.1665            3.7771+-0.0474          might be 1.0213x faster
   is-boolean-fold                                    2.7332+-0.2260            2.6324+-0.0550          might be 1.0383x faster
   is-function-fold-tricky-internal-function   
                                                      9.6073+-0.2732            9.3526+-0.1450          might be 1.0272x faster
   is-function-fold-tricky                            4.0649+-0.0585     ?      4.1437+-0.1400        ? might be 1.0194x slower
   is-function-fold                                   2.6742+-0.0500            2.6601+-0.0645        
   is-number-fold-tricky                              3.9841+-0.2819            3.9727+-0.1071        
   is-number-fold                                     2.6272+-0.0214     ?      2.6305+-0.0405        ?
   is-object-or-null-fold-functions                   2.6556+-0.0606     ?      2.7143+-0.0504        ? might be 1.0221x slower
   is-object-or-null-fold-less-tricky                 4.1639+-0.2697            4.0422+-0.1090          might be 1.0301x faster
   is-object-or-null-fold-tricky                      4.8451+-0.0970     ?      4.9031+-0.2310        ? might be 1.0120x slower
   is-object-or-null-fold                             2.6584+-0.0250     ?      2.7042+-0.0726        ? might be 1.0172x slower
   is-object-or-null-trickier-function                4.1253+-0.1271     ?      4.1557+-0.2725        ?
   is-object-or-null-trickier-internal-function   
                                                      9.7689+-0.2194     ?      9.8943+-0.3791        ? might be 1.0128x slower
   is-object-or-null-tricky-function                  4.0228+-0.0454     ?      4.0255+-0.0678        ?
   is-object-or-null-tricky-internal-function   
                                                      7.3601+-0.0425     ?      7.4750+-0.1840        ? might be 1.0156x slower
   is-string-fold-tricky                              4.0060+-0.0894            3.9669+-0.0950        
   is-string-fold                                     2.6727+-0.1490     ?      2.6865+-0.0801        ?
   is-undefined-fold-tricky                           3.4399+-0.1369            3.2958+-0.0402          might be 1.0437x faster
   is-undefined-fold                                  2.6394+-0.0246     ?      2.6979+-0.0720        ? might be 1.0222x slower
   JSONP-negative-0                                   0.2457+-0.0040     ?      0.2545+-0.0184        ? might be 1.0361x slower
   large-int-captured                                 4.0660+-0.1125     ?      4.0811+-0.1012        ?
   large-int-neg                                     14.2176+-0.4421     ?     14.2315+-0.3477        ?
   large-int                                         13.4577+-0.3351           13.1978+-0.4118          might be 1.0197x faster
   load-varargs-elimination                          20.3990+-0.7054           20.2183+-0.2766        
   logical-not-weird-types                            3.1539+-0.2277            3.1475+-0.2718        
   logical-not                                        4.2455+-0.1013     ?      4.3793+-0.1858        ? might be 1.0315x slower
   lots-of-fields                                     9.2709+-0.1913     ?      9.6934+-0.5642        ? might be 1.0456x slower
   make-indexed-storage                               2.7335+-0.0949            2.6902+-0.3176          might be 1.0161x faster
   make-rope-cse                                      3.7055+-0.3128            3.6099+-0.0691          might be 1.0265x faster
   marsaglia-larger-ints                             32.6343+-1.8756           32.4033+-1.2181        
   marsaglia-osr-entry                               21.7427+-0.9894     ?     21.8319+-1.0145        ?
   math-with-out-of-bounds-array-values              21.8448+-0.8821           21.6093+-0.4812          might be 1.0109x faster
   max-boolean                                        2.6380+-0.0385            2.6307+-0.0422        
   method-on-number                                  15.6768+-0.2380           15.3625+-0.1640          might be 1.0205x faster
   min-boolean                                        2.6856+-0.1192     ?      2.7666+-0.1329        ? might be 1.0302x slower
   minus-boolean-double                               3.1154+-0.0982            3.0609+-0.0258          might be 1.0178x faster
   minus-boolean                                      2.3399+-0.0343            2.3380+-0.0679        
   misc-strict-eq                                    28.9134+-0.9028           28.6462+-0.7979        
   mod-boolean-double                                10.9830+-0.1200     ?     11.0098+-0.1241        ?
   mod-boolean                                        8.4160+-0.2968            8.2483+-0.0656          might be 1.0203x faster
   mul-boolean-double                                 3.5726+-0.0384     ?      3.6059+-0.1000        ?
   mul-boolean                                        2.8511+-0.0810            2.7853+-0.0341          might be 1.0236x faster
   neg-boolean                                        3.0852+-0.0806     ?      3.1302+-0.0981        ? might be 1.0146x slower
   negative-zero-divide                               0.3400+-0.0219     ?      0.3576+-0.0353        ? might be 1.0518x slower
   negative-zero-modulo                               0.3420+-0.0131            0.3394+-0.0149        
   negative-zero-negate                               0.3174+-0.0054     ?      0.3443+-0.0299        ? might be 1.0848x slower
   nested-function-parsing                           44.5689+-0.2881     ?     44.6025+-1.0757        ?
   new-array-buffer-dead                             86.9551+-0.5985     ?     87.9126+-1.0495        ? might be 1.0110x slower
   new-array-buffer-push                              6.0558+-0.1208     ?      6.1197+-0.3972        ? might be 1.0105x slower
   new-array-dead                                    16.0193+-0.6076           14.8572+-0.6364          might be 1.0782x faster
   new-array-push                                     3.4784+-0.2079     ?      3.5104+-0.2230        ?
   no-inline-constructor                             31.4183+-0.2544     ?     32.1433+-0.8846        ? might be 1.0231x slower
   number-test                                        3.0160+-0.0578     ?      3.1002+-0.2561        ? might be 1.0279x slower
   object-closure-call                                4.9472+-0.2748            4.8197+-0.0473          might be 1.0264x faster
   object-get-own-property-symbols-on-large-array   
                                                      4.0938+-0.1991     ?      4.1530+-0.3105        ? might be 1.0144x slower
   object-test                                        2.7143+-0.0573     ?      2.7381+-0.0879        ?
   obvious-sink-pathology-taken                      97.5793+-1.0778           97.3818+-0.7431        
   obvious-sink-pathology                            93.2603+-0.5603           92.1355+-1.2641          might be 1.0122x faster
   obviously-elidable-new-object                     28.0208+-0.4412     ?     28.2259+-0.4939        ?
   plus-boolean-arith                                 2.4407+-0.1074     ?      2.4535+-0.1050        ?
   plus-boolean-double                                3.1010+-0.0526     ?      3.1159+-0.0203        ?
   plus-boolean                                       2.5040+-0.0393     ?      2.5258+-0.0837        ?
   poly-chain-access-different-prototypes-simple   
                                                      2.5908+-0.0481            2.5719+-0.0559        
   poly-chain-access-different-prototypes             2.5342+-0.0598     ?      2.5768+-0.0817        ? might be 1.0168x slower
   poly-chain-access-simpler                          2.5961+-0.0582     ?      2.6466+-0.0968        ? might be 1.0194x slower
   poly-chain-access                                  2.4767+-0.0321     ?      2.5084+-0.0467        ? might be 1.0128x slower
   poly-stricteq                                     49.3317+-0.6505           49.2115+-0.6802        
   polymorphic-array-call                             1.2897+-0.1324            1.2595+-0.0585          might be 1.0240x faster
   polymorphic-get-by-id                              2.8389+-0.0309            2.8055+-0.0338          might be 1.0119x faster
   polymorphic-put-by-id                             27.7979+-0.8278     ?     28.9282+-1.3970        ? might be 1.0407x slower
   polymorphic-put-by-val-with-string                29.1529+-1.3317     ?     29.4073+-1.2137        ?
   polymorphic-put-by-val-with-symbol                29.5353+-1.2086     ?     30.4859+-1.8198        ? might be 1.0322x slower
   polymorphic-structure                             12.4118+-0.1201     ?     12.8125+-0.9792        ? might be 1.0323x slower
   polyvariant-monomorphic-get-by-id                  7.3883+-1.1816            7.0173+-1.0364          might be 1.0529x faster
   proto-getter-access                                8.6376+-0.6961            8.3865+-0.2581          might be 1.0299x faster
   prototype-access-with-mutating-prototype           5.5536+-0.2589            5.5229+-0.2885        
   put-by-id-replace-and-transition                   8.3089+-1.0534     ?      8.4595+-0.7194        ? might be 1.0181x slower
   put-by-id-slightly-polymorphic                     2.7794+-0.2549            2.7279+-0.1127          might be 1.0189x faster
   put-by-id                                          9.8139+-0.4846            9.6297+-0.3283          might be 1.0191x faster
   put-by-val-direct                                  0.3523+-0.0243     ?      0.3901+-0.1184        ? might be 1.1073x slower
   put-by-val-large-index-blank-indexing-type   
                                                      5.2549+-0.2090     ?      5.4855+-0.3573        ? might be 1.0439x slower
   put-by-val-machine-int                             2.4643+-0.1222     ?      2.6445+-0.3289        ? might be 1.0731x slower
   put-by-val-with-string-replace-and-transition   
                                                     10.0909+-0.2394     ?     10.1880+-0.3616        ?
   put-by-val-with-string-slightly-polymorphic   
                                                      3.0334+-0.1066     ?      3.0686+-0.1899        ? might be 1.0116x slower
   put-by-val-with-string                            10.3218+-0.4999     ?     10.4972+-0.4983        ? might be 1.0170x slower
   put-by-val-with-symbol-replace-and-transition   
                                                     11.5505+-0.2809     ?     11.8688+-0.5962        ? might be 1.0276x slower
   put-by-val-with-symbol-slightly-polymorphic   
                                                      3.2356+-0.0616     ?      3.3199+-0.2729        ? might be 1.0261x slower
   put-by-val-with-symbol                            10.2814+-0.4428     ?     10.3164+-0.3856        ?
   rare-osr-exit-on-local                            13.4415+-0.0910     ?     13.4814+-0.1624        ?
   raytrace-with-empty-try-catch                      5.3946+-0.3841            5.2033+-0.1937          might be 1.0368x faster
   raytrace-with-try-catch                            9.5641+-0.1392     ?      9.8623+-0.3271        ? might be 1.0312x slower
   register-pressure-from-osr                        16.4407+-0.3720     ?     16.7373+-0.7062        ? might be 1.0180x slower
   repeat-multi-get-by-offset                        21.8018+-0.4516     ?     21.8478+-0.5516        ?
   richards-empty-try-catch                          71.6671+-1.3105     ?     71.8797+-0.9423        ?
   richards-try-catch                               240.5911+-4.0544          239.8602+-1.4102        
   setter-prototype                                   7.7629+-0.2271            7.7384+-0.2739        
   setter                                             5.8600+-0.4555            5.4999+-0.4255          might be 1.0655x faster
   simple-activation-demo                            24.2722+-0.5836     ?     24.3283+-0.7621        ?
   simple-getter-access                              10.6872+-0.2813           10.5184+-0.2677          might be 1.0160x faster
   simple-poly-call-nested                            8.7399+-0.4254            8.3803+-0.3762          might be 1.0429x faster
   simple-poly-call                                   1.3357+-0.1195            1.2462+-0.0341          might be 1.0718x faster
   sin-boolean                                       19.6247+-1.9533     ?     20.5963+-1.6036        ? might be 1.0495x slower
   singleton-scope                                   64.8293+-1.3862           64.0579+-0.5945          might be 1.0120x faster
   sink-function                                     10.7642+-0.5270     ^      9.7822+-0.4075        ^ definitely 1.1004x faster
   sink-huge-activation                              16.3645+-0.6742     ?     16.5791+-1.0191        ? might be 1.0131x slower
   sinkable-new-object-dag                           53.2177+-0.7142     ?     54.9324+-1.6513        ? might be 1.0322x slower
   sinkable-new-object-taken                         44.1754+-1.1355     ?     44.2919+-0.8080        ?
   sinkable-new-object                               30.2204+-1.1504           30.1243+-0.7862        
   slow-array-profile-convergence                     2.6412+-0.2142            2.4782+-0.1150          might be 1.0658x faster
   slow-convergence                                   2.4249+-0.3062            2.3341+-0.0566          might be 1.0389x faster
   slow-ternaries                                    17.3737+-0.3820     ?     17.4223+-0.7844        ?
   sorting-benchmark                                 17.2174+-0.4645     ?     17.3118+-1.1968        ?
   sparse-conditional                                 1.1561+-0.0315     ?      1.1880+-0.0737        ? might be 1.0276x slower
   splice-to-remove                                  12.6351+-1.2448           12.3420+-0.6045          might be 1.0238x faster
   string-char-code-at                               13.0364+-0.1796     ?     13.2134+-0.1866        ? might be 1.0136x slower
   string-concat-object                               2.2462+-0.1707            2.1144+-0.0976          might be 1.0624x faster
   string-concat-pair-object                          2.1083+-0.0596            2.0428+-0.0799          might be 1.0320x faster
   string-concat-pair-simple                          9.0213+-0.2967     ?      9.4517+-0.6198        ? might be 1.0477x slower
   string-concat-simple                               9.1240+-0.3749     ?      9.3624+-0.6665        ? might be 1.0261x slower
   string-cons-repeat                                 6.5746+-0.2303            6.5534+-0.5195        
   string-cons-tower                                  6.4961+-0.0943     ?      6.7939+-0.2833        ? might be 1.0459x slower
   string-equality                                   15.0994+-0.2956           14.9392+-0.3086          might be 1.0107x faster
   string-get-by-val-big-char                         6.7433+-0.6510            6.5887+-0.1945          might be 1.0235x faster
   string-get-by-val-out-of-bounds-insane             3.1051+-0.2297     ?      3.2043+-0.2856        ? might be 1.0320x slower
   string-get-by-val-out-of-bounds                    3.9191+-0.1328            3.9134+-0.0688        
   string-get-by-val                                  2.7541+-0.0295     ?      2.7720+-0.0253        ?
   string-hash                                        1.8431+-0.0363     ?      1.8436+-0.0523        ?
   string-long-ident-equality                        13.0469+-0.3256     ?     13.1634+-0.4427        ?
   string-out-of-bounds                              10.1843+-0.1470           10.1148+-0.3264        
   string-repeat-arith                               27.3773+-0.6802           27.1851+-1.1514        
   string-sub                                        55.6023+-0.9198     ?     55.8103+-0.5386        ?
   string-test                                        2.9307+-0.2078            2.9067+-0.1454        
   string-var-equality                               26.9177+-1.1870           26.5417+-0.5691          might be 1.0142x faster
   structure-hoist-over-transitions                   2.3397+-0.0760            2.2908+-0.0882          might be 1.0213x faster
   substring-concat-weird                            35.3231+-1.2600           34.6815+-0.4950          might be 1.0185x faster
   substring-concat                                  38.8700+-0.7205     ?     39.8767+-1.0532        ? might be 1.0259x slower
   substring                                         44.9980+-1.4145     ?     45.2886+-1.1949        ?
   switch-char-constant                               2.6686+-0.0374     ?      2.6808+-0.0428        ?
   switch-char                                        5.5224+-0.3622     ?      6.0460+-1.0145        ? might be 1.0948x slower
   switch-constant                                    8.2701+-0.9718            7.5202+-0.7092          might be 1.0997x faster
   switch-string-basic-big-var                       14.4404+-0.3636           14.3031+-0.3766        
   switch-string-basic-big                           14.8748+-0.1993           14.8220+-0.1424        
   switch-string-basic-var                           13.4073+-0.2109           13.1989+-0.3181          might be 1.0158x faster
   switch-string-basic                               12.4755+-0.2809     ?     13.1125+-0.8782        ? might be 1.0511x slower
   switch-string-big-length-tower-var                17.8474+-0.3683     ?     18.1482+-0.4978        ? might be 1.0169x slower
   switch-string-length-tower-var                    13.5779+-0.4865           13.2005+-0.3800          might be 1.0286x faster
   switch-string-length-tower                        11.7563+-0.7424           11.6149+-0.8558          might be 1.0122x faster
   switch-string-short                               11.3710+-0.1319     ?     11.4155+-0.4367        ?
   switch                                            11.2035+-0.7201           10.9507+-0.4702          might be 1.0231x faster
   tear-off-arguments-simple                          3.0854+-0.1353            3.0314+-0.0965          might be 1.0178x faster
   tear-off-arguments                                 4.2083+-0.1619     ?      4.4774+-1.2493        ? might be 1.0640x slower
   temporal-structure                                12.1154+-0.5187           11.9754+-0.4179          might be 1.0117x faster
   to-int32-boolean                                  12.6476+-0.2737           12.3763+-0.1256          might be 1.0219x faster
   try-catch-get-by-val-cloned-arguments              9.5428+-0.3446            9.2576+-0.3506          might be 1.0308x faster
   try-catch-get-by-val-direct-arguments              2.1165+-0.1402     ?      2.1273+-0.3604        ?
   try-catch-get-by-val-scoped-arguments              4.7640+-0.1703     ?      4.9064+-0.5234        ? might be 1.0299x slower
   typed-array-get-set-by-val-profiling              26.8555+-0.8235     ?     27.0438+-0.9424        ?
   undefined-property-access                        217.3007+-3.5391          215.7565+-0.4759        
   undefined-test                                     2.9516+-0.0506     ?      2.9690+-0.0766        ?
   unprofiled-licm                                    9.6862+-0.8713            9.6771+-0.3205        
   v8-raytrace-with-empty-try-catch                  24.0251+-0.8599     ?     24.1824+-0.5494        ?
   v8-raytrace-with-try-catch                        61.9902+-1.2281           60.8697+-1.2398          might be 1.0184x faster
   varargs-call                                      13.1579+-0.4265           12.9939+-0.2224          might be 1.0126x faster
   varargs-construct-inline                          22.0255+-0.4269           21.7186+-0.4674          might be 1.0141x faster
   varargs-construct                                 20.9310+-0.6121           20.8031+-1.0267        
   varargs-inline                                     8.6428+-0.0874     ?      8.8281+-0.1710        ? might be 1.0214x slower
   varargs-strict-mode                               10.0477+-0.2875            9.9021+-0.0542          might be 1.0147x faster
   varargs                                            9.8313+-0.1873            9.7568+-0.1145        
   weird-inlining-const-prop                          2.1732+-0.0983     ?      2.3579+-0.2472        ? might be 1.0850x slower

   &lt;geometric&gt;                                        8.0380+-0.0198     ?      8.0449+-0.0189        ? might be 1.0009x slower

                                                        TipOfTree           ParallelVectorIterator                              
AsmBench:
   bigfib.cpp                                       449.9829+-9.3862          447.4383+-6.5769        
   cray.c                                           391.1788+-0.9719     ?    392.3573+-3.9766        ?
   dry.c                                            425.5672+-2.2263          422.7777+-5.6461        
   FloatMM.c                                        682.1969+-4.8086          681.9141+-4.0784        
   gcc-loops.cpp                                   3415.7914+-15.4003    ?   3542.5110+-289.8301      ? might be 1.0371x slower
   n-body.c                                         822.2723+-2.8582     ?    825.1013+-5.5596        ?
   Quicksort.c                                      400.1668+-3.6393     ?    405.6935+-5.8324        ? might be 1.0138x slower
   stepanov_container.cpp                          3515.0561+-35.7537        3511.6133+-49.5142       
   Towers.c                                         234.5948+-5.0463          231.9956+-0.6542          might be 1.0112x faster

   &lt;geometric&gt;                                      712.5263+-2.2075     ?    714.8510+-7.4813        ? might be 1.0033x slower

                                                        TipOfTree           ParallelVectorIterator                              
CompressionBench:
   huffman                                           59.1395+-0.9240     ?     59.2012+-1.2806        ?
   arithmetic-simple                                271.2191+-3.3708     ?    271.6396+-3.8963        ?
   arithmetic-precise                               242.5250+-1.7289          240.9445+-1.1679        
   arithmetic-complex-precise                       242.5132+-1.4665          242.3458+-2.4149        
   arithmetic-precise-order-0                       281.9789+-3.4864          279.9594+-1.5527        
   arithmetic-precise-order-1                       298.8577+-1.0877     ?    300.7672+-10.2189       ?
   arithmetic-precise-order-2                       343.8937+-3.9892     ?    345.4187+-3.5366        ?
   arithmetic-simple-order-1                        321.0414+-3.7064          317.5757+-1.5001          might be 1.0109x faster
   arithmetic-simple-order-2                        371.5095+-5.9257          368.1855+-0.7561        
   lz-string                                        308.1920+-2.9452     ?    308.9833+-4.8797        ?

   &lt;geometric&gt;                                      251.2977+-0.5382          250.8272+-1.2069          might be 1.0019x faster

                                                        TipOfTree           ParallelVectorIterator                              
Geomean of preferred means:
   &lt;scaled-result&gt;                                   49.8280+-0.0854     ?     49.8628+-0.2417        ? might be 1.0007x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129160</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-28 23:52:09 -0700</bug_when>
    <thetext>Duh, the problem is that I removed the call to recycleEvacuatedBlock().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129161</commentid>
    <comment_count>5</comment_count>
      <attachid>262043</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-28 23:53:10 -0700</bug_when>
    <thetext>Created attachment 262043
the patch

With performance/memory fixes.  This version restores the call to recycleEvacuatedBlock().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129162</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-28 23:55:32 -0700</bug_when>
    <thetext>Attachment 262043 did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/Heap.cpp:641:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/Heap.cpp:645:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 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>1129245</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-29 08:54:06 -0700</bug_when>
    <thetext>Performance looks OK now:


Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on shakezilla (MacBookPro11,3).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (r190302)
&quot;ParallelVectorIterator&quot; at /Volumes/Data/quartary/OpenSource/WebKitBuild/Release/jsc (r190302)

Collected 7 samples per benchmark/VM, with 7 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           ParallelVectorIterator                              
SunSpider:
   3d-cube                                            4.4760+-0.1011     ?      4.5503+-0.1280        ? might be 1.0166x slower
   3d-morph                                           5.2051+-0.1151     ?      5.2645+-0.1730        ? might be 1.0114x slower
   3d-raytrace                                        5.4387+-0.7276            5.1344+-0.0425          might be 1.0593x faster
   access-binary-trees                                2.1580+-0.1263            2.1196+-0.0804          might be 1.0181x faster
   access-fannkuch                                    5.5060+-0.0549            5.4628+-0.0489        
   access-nbody                                       2.4975+-0.0342            2.4721+-0.0226          might be 1.0103x faster
   access-nsieve                                      3.0690+-0.1363            3.0399+-0.0980        
   bitops-3bit-bits-in-byte                           1.1452+-0.0150     ?      1.1590+-0.0248        ? might be 1.0121x slower
   bitops-bits-in-byte                                3.2238+-0.0402            3.1960+-0.0292        
   bitops-bitwise-and                                 2.0126+-0.0587            1.9724+-0.0240          might be 1.0204x faster
   bitops-nsieve-bits                                 2.9532+-0.0482     ?      3.0289+-0.1853        ? might be 1.0256x slower
   controlflow-recursive                              2.3255+-0.0283     ?      2.3405+-0.0747        ?
   crypto-aes                                         3.8658+-0.0404     ?      3.9212+-0.1958        ? might be 1.0143x slower
   crypto-md5                                         2.4762+-0.0683            2.4743+-0.0361        
   crypto-sha1                                        2.4375+-0.1146            2.3984+-0.1364          might be 1.0163x faster
   date-format-tofte                                  6.6451+-0.0606     ?      6.9538+-0.6022        ? might be 1.0465x slower
   date-format-xparb                                  4.5715+-0.0765            4.5397+-0.0984        
   math-cordic                                        2.7650+-0.0320     ?      2.7802+-0.0505        ?
   math-partial-sums                                  4.8819+-0.5450            4.7296+-0.1249          might be 1.0322x faster
   math-spectral-norm                                 1.9132+-0.0304            1.9097+-0.0310        
   regexp-dna                                         6.0192+-0.1430            5.9832+-0.1069        
   string-base64                                      4.3147+-0.0650     ?      4.4003+-0.1752        ? might be 1.0198x slower
   string-fasta                                       5.8130+-0.0444     ?      5.8391+-0.1349        ?
   string-tagcloud                                    7.9428+-0.0656     ?      8.1255+-0.2620        ? might be 1.0230x slower
   string-unpack-code                                17.9911+-0.3018     ?     18.0786+-0.4590        ?
   string-validate-input                              4.5458+-0.0302     ?      4.7008+-0.2212        ? might be 1.0341x slower

   &lt;arithmetic&gt;                                       4.4690+-0.0393     ?      4.4836+-0.0265        ? might be 1.0033x slower

                                                        TipOfTree           ParallelVectorIterator                              
LongSpider:
   3d-cube                                          798.8271+-5.1104     ?    803.5287+-6.3206        ?
   3d-morph                                        1506.4283+-29.4142        1495.5259+-11.5887       
   3d-raytrace                                      599.0761+-7.7710          598.4250+-7.8796        
   access-binary-trees                              793.5181+-8.9766          788.1069+-5.8970        
   access-fannkuch                                  277.2193+-8.9864          275.4223+-3.5293        
   access-nbody                                     508.8670+-7.7075          506.9766+-2.4202        
   access-nsieve                                    361.8585+-6.7853     ?    373.0757+-9.6836        ? might be 1.0310x slower
   bitops-3bit-bits-in-byte                          33.5029+-0.2938     ?     34.2511+-1.2225        ? might be 1.0223x slower
   bitops-bits-in-byte                               73.8964+-0.6802     ?     74.3853+-1.1433        ?
   bitops-nsieve-bits                               404.2176+-8.4078          402.2663+-5.8251        
   controlflow-recursive                            428.3780+-4.4866          426.1742+-2.6473        
   crypto-aes                                       558.3344+-6.0687     ?    560.8743+-12.3034       ?
   crypto-md5                                       432.1639+-4.5533     ?    441.8394+-23.4057       ? might be 1.0224x slower
   crypto-sha1                                      639.3575+-17.1097    ?    642.6121+-7.8061        ?
   date-format-tofte                                501.2223+-5.1957     ?    502.2789+-18.7141       ?
   date-format-xparb                                668.5439+-10.6333    ?    725.5767+-59.9340       ? might be 1.0853x slower
   hash-map                                         150.1240+-2.4418     ?    150.8898+-2.7840        ?
   math-cordic                                      478.6348+-4.9698          476.2370+-2.9685        
   math-partial-sums                                457.1077+-4.6655     ?    458.5506+-5.6254        ?
   math-spectral-norm                               548.8940+-1.9265     ?    551.8439+-6.9814        ?
   string-base64                                    358.7466+-5.0325          353.1794+-2.8580          might be 1.0158x faster
   string-fasta                                     366.1895+-5.3917     ?    367.6398+-8.4016        ?
   string-tagcloud                                  177.7227+-3.5085     ?    179.8787+-2.4627        ? might be 1.0121x slower

   &lt;geometric&gt;                                      383.7846+-0.9294     !    386.2831+-1.4708        ! definitely 1.0065x slower

                                                        TipOfTree           ParallelVectorIterator                              
V8Spider:
   crypto                                            47.4623+-1.3045           47.0640+-1.5126        
   deltablue                                         77.4427+-2.4629     ?     78.5190+-2.9625        ? might be 1.0139x slower
   earley-boyer                                      41.3913+-0.6641           40.9458+-0.8638          might be 1.0109x faster
   raytrace                                          31.0310+-1.3919     ?     31.5144+-0.4037        ? might be 1.0156x slower
   regexp                                            60.4610+-0.3144     ?     61.8942+-2.9957        ? might be 1.0237x slower
   richards                                          54.9540+-2.3860     ?     55.7616+-6.7552        ? might be 1.0147x slower
   splay                                             35.3907+-0.7883     ?     35.5698+-1.9180        ?

   &lt;geometric&gt;                                       47.6010+-0.6628     ?     47.9159+-0.8198        ? might be 1.0066x slower

                                                        TipOfTree           ParallelVectorIterator                              
Octane:
   encrypt                                           0.16423+-0.00231    ?     0.16487+-0.00316       ?
   decrypt                                           2.92221+-0.02064    ?     2.93800+-0.02892       ?
   deltablue                                x2       0.13891+-0.00388    ?     0.14167+-0.00289       ? might be 1.0199x slower
   earley                                            0.30365+-0.00786          0.30313+-0.00460       
   boyer                                             4.41469+-0.06999          4.33658+-0.12231         might be 1.0180x faster
   navier-stokes                            x2       4.84928+-0.02590          4.83957+-0.02466       
   raytrace                                 x2       0.85928+-0.00761    ?     0.86164+-0.00734       ?
   richards                                 x2       0.08910+-0.00107          0.08835+-0.00068       
   splay                                    x2       0.33515+-0.00598          0.33258+-0.00484       
   regexp                                   x2      24.09492+-0.15174         23.99685+-0.27603       
   pdfjs                                    x2      37.19903+-0.39897         36.97696+-0.49196       
   mandreel                                 x2      43.12332+-1.29720         42.56409+-0.34918         might be 1.0131x faster
   gbemu                                    x2      31.98209+-1.66746         31.47769+-1.78718         might be 1.0160x faster
   closure                                           0.57345+-0.00368    ?     0.57482+-0.00511       ?
   jquery                                            7.24384+-0.05257    ?     7.29155+-0.12094       ?
   box2d                                    x2       9.18229+-0.14855          9.09036+-0.10005         might be 1.0101x faster
   zlib                                     x2     386.07243+-6.75619        379.10514+-13.25442        might be 1.0184x faster
   typescript                               x2     665.86011+-15.97762       663.07286+-22.11981      

   &lt;geometric&gt;                                       5.34144+-0.03373          5.31713+-0.02370         might be 1.0046x faster

                                                        TipOfTree           ParallelVectorIterator                              
Kraken:
   ai-astar                                          127.322+-0.887            126.497+-1.089         
   audio-beat-detection                               49.981+-0.648      ?      50.102+-0.716         ?
   audio-dft                                          97.563+-2.305             97.221+-3.051         
   audio-fft                                          34.892+-0.283      ?      35.433+-1.046         ? might be 1.0155x slower
   audio-oscillator                                   56.858+-2.899             56.239+-1.918           might be 1.0110x faster
   imaging-darkroom                                   59.989+-0.340      ?      60.627+-1.670         ? might be 1.0106x slower
   imaging-desaturate                                 47.920+-0.531             47.595+-0.198         
   imaging-gaussian-blur                              85.319+-0.775      ?      86.006+-1.130         ?
   json-parse-financial                               39.151+-0.286             39.001+-0.752         
   json-stringify-tinderbox                           21.598+-0.275      ?      21.740+-0.451         ?
   stanford-crypto-aes                                41.438+-2.584             40.750+-1.356           might be 1.0169x faster
   stanford-crypto-ccm                                34.218+-0.659      ?      35.349+-0.746         ? might be 1.0330x slower
   stanford-crypto-pbkdf2                             94.013+-0.409             93.409+-0.316         
   stanford-crypto-sha256-iterative                   35.968+-0.660      ?      36.285+-0.580         ?

   &lt;arithmetic&gt;                                       59.017+-0.463      ?      59.018+-0.319         ? might be 1.0000x slower

                                                        TipOfTree           ParallelVectorIterator                              
JSRegress:
   abc-forward-loop-equal                            29.1121+-0.5965     ?     29.1455+-0.4696        ?
   abc-postfix-backward-loop                         29.3722+-0.5073           28.8387+-0.1417          might be 1.0185x faster
   abc-simple-backward-loop                          28.6260+-0.3652     ?     29.3899+-1.0110        ? might be 1.0267x slower
   abc-simple-forward-loop                           28.9833+-0.2718           28.9671+-0.6357        
   abc-skippy-loop                                   20.9405+-0.6247     ?     21.0560+-0.6178        ?
   abs-boolean                                        2.4223+-0.0268     ?      2.4348+-0.0307        ?
   adapt-to-double-divide                            16.3673+-0.4261     ?     16.4058+-1.0262        ?
   aliased-arguments-getbyval                         1.2047+-0.0473     ?      1.2391+-0.0615        ? might be 1.0286x slower
   allocate-big-object                                2.5626+-0.0742            2.5096+-0.1418          might be 1.0211x faster
   arguments-named-and-reflective                    10.8996+-1.1279           10.3493+-0.2441          might be 1.0532x faster
   arguments-out-of-bounds                            9.1663+-0.1361            9.1600+-0.1646        
   arguments-strict-mode                              9.3867+-0.4921     ?      9.7508+-0.6504        ? might be 1.0388x slower
   arguments                                          8.2552+-0.1409     ?      8.3955+-0.1770        ? might be 1.0170x slower
   arity-mismatch-inlining                            0.8302+-0.0216     ?      0.8476+-0.0174        ? might be 1.0209x slower
   array-access-polymorphic-structure                 7.0699+-0.1042     ?      7.3020+-0.7181        ? might be 1.0328x slower
   array-nonarray-polymorhpic-access                 22.8116+-0.2054     ?     23.2497+-0.8786        ? might be 1.0192x slower
   array-prototype-every                             75.7182+-3.1570           74.6999+-0.9136          might be 1.0136x faster
   array-prototype-forEach                           73.5049+-0.5588           72.8525+-0.4795        
   array-prototype-map                               82.2889+-0.7749           80.9135+-2.3317          might be 1.0170x faster
   array-prototype-reduce                            71.6960+-1.5202           70.0963+-0.6532          might be 1.0228x faster
   array-prototype-reduceRight                       71.9127+-3.8101     ?     72.1363+-3.3234        ?
   array-prototype-some                              73.8372+-0.4430     ?     74.1003+-0.4074        ?
   array-splice-contiguous                           19.5972+-0.4254     ?     19.6080+-0.5108        ?
   array-with-double-add                              3.4896+-0.1196            3.4303+-0.0663          might be 1.0173x faster
   array-with-double-increment                        3.0737+-0.0186            3.0408+-0.0268          might be 1.0108x faster
   array-with-double-mul-add                          4.2914+-0.1765            4.1804+-0.0614          might be 1.0266x faster
   array-with-double-sum                              3.2666+-0.1683            3.1569+-0.0088          might be 1.0348x faster
   array-with-int32-add-sub                           5.9488+-0.6883            5.6540+-0.1033          might be 1.0521x faster
   array-with-int32-or-double-sum                     3.2627+-0.0467     ?      3.3152+-0.1150        ? might be 1.0161x slower
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     25.3457+-0.1960     ?     25.7479+-0.7329        ? might be 1.0159x slower
   ArrayBuffer-DataView-alloc-long-lived             11.7183+-0.3364     ?     11.7446+-0.4392        ?
   ArrayBuffer-Int32Array-byteOffset                  3.5743+-0.1404            3.5199+-0.0349          might be 1.0154x faster
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     25.6548+-0.2841     ?     26.2605+-0.7358        ? might be 1.0236x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     19.9502+-1.5047           19.1771+-0.1552          might be 1.0403x faster
   ArrayBuffer-Int8Array-alloc-long-lived            11.0955+-0.2835     ?     11.1167+-0.4836        ?
   ArrayBuffer-Int8Array-alloc                        9.2408+-0.0711     ?      9.4263+-0.2532        ? might be 1.0201x slower
   arrowfunction-call                                10.8542+-0.1503           10.8432+-0.3217        
   asmjs_bool_bug                                     7.4485+-0.0629            7.3970+-0.0559        
   assign-custom-setter-polymorphic                   2.4996+-0.0410            2.4769+-0.0370        
   assign-custom-setter                               3.3970+-0.0279     ?      3.5472+-0.1427        ? might be 1.0442x slower
   basic-set                                          7.2848+-0.3268            7.2317+-0.2186        
   big-int-mul                                        3.5149+-0.1919            3.4525+-0.0550          might be 1.0181x faster
   boolean-test                                       3.0523+-0.0201     ?      3.0629+-0.0597        ?
   branch-fold                                        3.6014+-0.0336            3.5923+-0.0233        
   branch-on-string-as-boolean                       16.4125+-0.2349           16.2785+-0.2122        
   by-val-generic                                     2.5175+-0.1216     ?      2.5593+-0.2735        ? might be 1.0166x slower
   call-spread-apply                                 26.6446+-0.3987     ?     26.6971+-0.3647        ?
   call-spread-call                                  21.2158+-0.6265           20.8985+-0.5462          might be 1.0152x faster
   captured-assignments                               0.4297+-0.0369            0.4250+-0.0223          might be 1.0109x faster
   cast-int-to-double                                 5.1125+-0.0397     ?      5.1139+-0.0588        ?
   cell-argument                                      6.0601+-0.2094            6.0045+-0.0708        
   cfg-simplify                                       2.8971+-0.0668            2.8680+-0.0301          might be 1.0102x faster
   chain-getter-access                                8.3442+-0.1948     ?      8.4343+-0.3932        ? might be 1.0108x slower
   cmpeq-obj-to-obj-other                            12.2571+-0.9320     ?     12.5652+-0.8972        ? might be 1.0251x slower
   constant-test                                      4.8120+-0.0636     ?      4.8298+-0.0500        ?
   create-lots-of-functions                           9.9379+-0.8040            9.1459+-0.4150          might be 1.0866x faster
   cse-new-array-buffer                               2.3007+-0.0375     ?      2.3100+-0.0865        ?
   cse-new-array                                      2.3294+-0.0855     ?      2.4193+-0.1601        ? might be 1.0386x slower
   DataView-custom-properties                        30.2248+-0.1755     ?     30.6316+-0.5658        ? might be 1.0135x slower
   delay-tear-off-arguments-strictmode               12.4605+-0.0908           12.2671+-0.3434          might be 1.0158x faster
   deltablue-varargs                                172.8281+-5.3036     ?    176.7958+-3.6378        ? might be 1.0230x slower
   destructuring-arguments                          165.3172+-1.8582     ^    161.9852+-1.2179        ^ definitely 1.0206x faster
   destructuring-parameters-overridden-by-function   
                                                      0.4636+-0.0255     ?      0.4868+-0.0587        ? might be 1.0502x slower
   destructuring-swap                                 4.7871+-0.0537     ?      4.8150+-0.0842        ?
   direct-arguments-getbyval                          1.1851+-0.0458     ?      1.2514+-0.0764        ? might be 1.0560x slower
   div-boolean-double                                 5.2794+-0.1279     ?      5.3027+-0.1285        ?
   div-boolean                                        8.1384+-0.1794            8.0715+-0.0317        
   double-get-by-val-out-of-bounds                    4.6966+-0.5737            4.4523+-0.0915          might be 1.0549x faster
   double-pollution-getbyval                          8.6701+-0.0701     ?      8.7029+-0.1724        ?
   double-pollution-putbyoffset                       3.5848+-0.0842     ?      3.6646+-0.1031        ? might be 1.0223x slower
   double-real-use                                   23.5763+-0.4887     ?     23.9912+-1.4961        ? might be 1.0176x slower
   double-to-int32-typed-array-no-inline              2.2020+-0.0310     ?      2.2128+-0.0415        ?
   double-to-int32-typed-array                        2.0776+-0.0421     ?      2.1418+-0.1169        ? might be 1.0309x slower
   double-to-uint32-typed-array-no-inline             2.2651+-0.0761     ?      2.3134+-0.1048        ? might be 1.0213x slower
   double-to-uint32-typed-array                       2.2333+-0.2385            2.1851+-0.1203          might be 1.0221x faster
   elidable-new-object-dag                           33.4408+-0.5322           33.2882+-0.3470        
   elidable-new-object-roflcopter                    32.1123+-1.2389     ?     33.0120+-0.6379        ? might be 1.0280x slower
   elidable-new-object-then-call                     32.1181+-0.6399           31.6716+-0.8482          might be 1.0141x faster
   elidable-new-object-tree                          37.8586+-1.6753           36.5401+-0.4071          might be 1.0361x faster
   empty-string-plus-int                              4.7100+-0.1724     ?      5.5265+-0.6847        ? might be 1.1733x slower
   emscripten-cube2hash                              27.0485+-1.6696     ?     28.1802+-1.2500        ? might be 1.0418x slower
   exit-length-on-plain-object                       15.6039+-0.5570           14.9476+-0.2954          might be 1.0439x faster
   external-arguments-getbyval                        1.3576+-0.1639            1.2963+-0.0773          might be 1.0473x faster
   external-arguments-putbyval                        2.1631+-0.1196            2.1323+-0.0178          might be 1.0144x faster
   fixed-typed-array-storage-var-index                1.2236+-0.0094     ?      1.3030+-0.1568        ? might be 1.0649x slower
   fixed-typed-array-storage                          0.9484+-0.0524            0.9037+-0.0092          might be 1.0494x faster
   Float32Array-matrix-mult                           3.9625+-0.0531     ?      3.9934+-0.0560        ?
   Float32Array-to-Float64Array-set                  47.5383+-3.7964           45.9960+-0.2876          might be 1.0335x faster
   Float64Array-alloc-long-lived                     58.2018+-1.6090     ?     59.3402+-2.6478        ? might be 1.0196x slower
   Float64Array-to-Int16Array-set                    55.6957+-1.5913           55.3457+-0.7925        
   fold-double-to-int                                12.4749+-1.5414           11.9400+-0.2132          might be 1.0448x faster
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     10.2129+-0.7225     ?     10.7928+-1.0028        ? might be 1.0568x slower
   fold-get-by-id-to-multi-get-by-offset             10.9081+-1.2445           10.0770+-0.7065          might be 1.0825x faster
   fold-multi-get-by-offset-to-get-by-offset   
                                                      9.4059+-0.4723     ?      9.6368+-1.1170        ? might be 1.0245x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      8.2180+-1.0274     ?      8.3362+-1.1683        ? might be 1.0144x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      9.5136+-0.5687            9.2336+-1.7312          might be 1.0303x faster
   fold-multi-put-by-offset-to-put-by-offset   
                                                     10.3065+-0.6875           10.1905+-0.4979          might be 1.0114x faster
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                      9.1424+-0.1023            9.1179+-0.2423        
   fold-put-by-id-to-multi-put-by-offset             11.3881+-1.1523     ?     11.9783+-0.9853        ? might be 1.0518x slower
   fold-put-by-val-with-string-to-multi-put-by-offset   
                                                     11.9833+-1.7229           11.1740+-1.1187          might be 1.0724x faster
   fold-put-by-val-with-symbol-to-multi-put-by-offset   
                                                     10.6434+-1.5013           10.6233+-1.2405        
   fold-put-structure                                 8.2535+-0.1997            7.6973+-0.9533          might be 1.0723x faster
   for-of-iterate-array-entries                      10.9053+-0.3246           10.6725+-0.0796          might be 1.0218x faster
   for-of-iterate-array-keys                          3.4251+-0.1287     ?      3.4566+-0.0758        ?
   for-of-iterate-array-values                        3.3857+-0.0983            3.3755+-0.1251        
   fround                                            17.2327+-0.1801     ?     17.4142+-0.9514        ? might be 1.0105x slower
   ftl-library-inlining-dataview                     55.9349+-0.7179     ?     56.0762+-0.8952        ?
   ftl-library-inlining                              97.3609+-1.7316           97.1164+-2.0733        
   function-call                                     10.7308+-0.1899     ?     10.8166+-0.4631        ?
   function-dot-apply                                 2.1641+-0.2495            2.0436+-0.0291          might be 1.0590x faster
   function-test                                      2.7477+-0.0624     ?      2.7927+-0.1224        ? might be 1.0164x slower
   function-with-eval                                97.0897+-0.6721     !     99.2897+-1.1061        ! definitely 1.0227x slower
   gcse-poly-get-less-obvious                        20.7380+-1.2587           19.9685+-0.2858          might be 1.0385x faster
   gcse-poly-get                                     21.8378+-0.2322     ?     22.9421+-1.1203        ? might be 1.0506x slower
   gcse                                               3.4908+-0.2148            3.4118+-0.0770          might be 1.0231x faster
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.5835+-0.0211     ?      2.6098+-0.0408        ? might be 1.0102x slower
   get-by-id-bimorphic-check-structure-elimination   
                                                      4.6686+-0.0344     ?      4.7674+-0.0879        ? might be 1.0212x slower
   get-by-id-chain-from-try-block                     2.4127+-0.0695     ?      2.4134+-0.0484        ?
   get-by-id-check-structure-elimination              3.9170+-0.0545            3.8957+-0.0329        
   get-by-id-proto-or-self                           15.5020+-0.9044     ?     15.5521+-0.7342        ?
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      2.8836+-0.0265            2.8647+-0.0364        
   get-by-id-self-or-proto                           15.0330+-0.4155     ?     15.5348+-0.8611        ? might be 1.0334x slower
   get-by-val-out-of-bounds                           4.3211+-0.0515     ?      4.3563+-0.0484        ?
   get-by-val-with-string-bimorphic-check-structure-elimination-simple   
                                                      2.7186+-0.0544     ?      2.7768+-0.1135        ? might be 1.0214x slower
   get-by-val-with-string-bimorphic-check-structure-elimination   
                                                      5.8315+-0.0494     ?      5.9183+-0.1920        ? might be 1.0149x slower
   get-by-val-with-string-chain-from-try-block   
                                                      2.3723+-0.0129     !      2.5110+-0.1250        ! definitely 1.0585x slower
   get-by-val-with-string-check-structure-elimination   
                                                      5.0906+-0.0422     ?      5.1766+-0.1880        ? might be 1.0169x slower
   get-by-val-with-string-proto-or-self              15.5871+-0.8635           14.9418+-0.2238          might be 1.0432x faster
   get-by-val-with-string-quadmorphic-check-structure-elimination-simple   
                                                      3.0837+-0.0597     ?      3.0986+-0.0654        ?
   get-by-val-with-string-self-or-proto              15.9916+-1.1109           15.5327+-0.4303          might be 1.0295x faster
   get-by-val-with-symbol-bimorphic-check-structure-elimination-simple   
                                                      2.9184+-0.0403     ?      2.9277+-0.0831        ?
   get-by-val-with-symbol-bimorphic-check-structure-elimination   
                                                     12.4183+-0.1692           12.2113+-0.0710          might be 1.0170x faster
   get-by-val-with-symbol-chain-from-try-block   
                                                      2.3992+-0.0450            2.3866+-0.0264        
   get-by-val-with-symbol-check-structure-elimination   
                                                     10.9339+-0.0379     ?     10.9662+-0.0624        ?
   get-by-val-with-symbol-proto-or-self              15.4903+-0.7557           15.2866+-0.5816          might be 1.0133x faster
   get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple   
                                                      3.9407+-0.0226            3.9239+-0.0743        
   get-by-val-with-symbol-self-or-proto              15.8197+-0.6311     ?     15.9622+-0.7394        ?
   get_callee_monomorphic                             2.4690+-0.1326     ?      2.5161+-0.2868        ? might be 1.0191x slower
   get_callee_polymorphic                             3.4029+-0.0853            3.3582+-0.0859          might be 1.0133x faster
   getter-no-activation                               4.7528+-0.1306            4.6845+-0.0176          might be 1.0146x faster
   getter-prototype                                   7.8770+-0.1242     ?      7.8785+-0.1236        ?
   getter-richards-try-catch                       1003.8516+-14.8322    ?   1006.2893+-22.8049       ?
   getter-richards                                  116.3187+-5.9325          115.3047+-4.2551        
   getter                                             5.4393+-0.5208            5.4095+-0.7102        
   global-object-access-with-mutating-structure   
                                                      5.6101+-0.1158            5.6000+-0.1132        
   global-var-const-infer-fire-from-opt               0.8994+-0.1189            0.8647+-0.0668          might be 1.0401x faster
   global-var-const-infer                             0.6861+-0.0571     ?      0.6868+-0.1051        ?
   hard-overflow-check-equal                         27.5022+-0.5646     ?     27.7935+-1.4991        ? might be 1.0106x slower
   hard-overflow-check                               26.5630+-0.9052     ?     27.2798+-1.3911        ? might be 1.0270x slower
   HashMap-put-get-iterate-keys                      24.3657+-1.4198     ?     25.6622+-2.1858        ? might be 1.0532x slower
   HashMap-put-get-iterate                           26.9809+-1.0037     ?     27.2630+-0.7071        ? might be 1.0105x slower
   HashMap-string-put-get-iterate                    23.7254+-0.8529     ?     24.7883+-1.0751        ? might be 1.0448x slower
   hoist-make-rope                                    8.0553+-0.6604     ?      8.5497+-1.1249        ? might be 1.0614x slower
   hoist-poly-check-structure-effectful-loop   
                                                      3.6301+-0.0172     ?      3.7735+-0.3572        ? might be 1.0395x slower
   hoist-poly-check-structure                         3.1493+-0.2147            3.1149+-0.0684          might be 1.0111x faster
   imul-double-only                                   7.7979+-0.1538            7.3724+-0.4511          might be 1.0577x faster
   imul-int-only                                      8.3660+-0.7346            8.0697+-0.7495          might be 1.0367x faster
   imul-mixed                                         6.7442+-0.2941     ?      6.9148+-0.4655        ? might be 1.0253x slower
   in-four-cases                                     16.8946+-0.4379     ?     16.9442+-0.4645        ?
   in-one-case-false                                  9.6648+-0.4894     ?      9.6676+-0.4500        ?
   in-one-case-true                                   9.4445+-0.4164            9.2825+-0.2234          might be 1.0174x faster
   in-two-cases                                       9.7161+-0.3722            9.5063+-0.0488          might be 1.0221x faster
   indexed-properties-in-objects                      2.8331+-0.2249            2.7437+-0.0161          might be 1.0326x faster
   infer-closure-const-then-mov-no-inline             3.6027+-0.0348     ?      3.6102+-0.0383        ?
   infer-closure-const-then-mov                      18.2684+-0.5430           18.1890+-0.6500        
   infer-closure-const-then-put-to-scope-no-inline   
                                                     11.0326+-0.6526           10.8909+-0.3358          might be 1.0130x faster
   infer-closure-const-then-put-to-scope             22.8913+-0.9619     ?     22.9354+-1.2509        ?
   infer-closure-const-then-reenter-no-inline   
                                                     49.0533+-2.7693           46.9982+-0.2951          might be 1.0437x faster
   infer-closure-const-then-reenter                  22.3295+-0.6142     ?     22.5478+-0.6013        ?
   infer-constant-global-property                     3.5012+-0.2478            3.4132+-0.0496          might be 1.0258x faster
   infer-constant-property                            2.6516+-0.0906            2.6398+-0.0516        
   infer-one-time-closure-ten-vars                    7.8410+-0.3470            7.6407+-0.1149          might be 1.0262x faster
   infer-one-time-closure-two-vars                    7.3453+-0.1911            7.2380+-0.1800          might be 1.0148x faster
   infer-one-time-closure                             7.3534+-0.1950            7.2211+-0.1631          might be 1.0183x faster
   infer-one-time-deep-closure                       10.5110+-0.2370     ?     10.7154+-0.1690        ? might be 1.0194x slower
   inline-arguments-access                            3.6664+-0.0869            3.5341+-0.0723          might be 1.0374x faster
   inline-arguments-aliased-access                    3.5893+-0.0529     ?      3.7872+-0.2433        ? might be 1.0552x slower
   inline-arguments-local-escape                      3.7092+-0.2217            3.6522+-0.1772          might be 1.0156x faster
   inline-get-scoped-var                              4.5711+-0.1255            4.4637+-0.0453          might be 1.0241x faster
   inlined-put-by-id-transition                       9.0726+-0.3906            9.0156+-0.4615        
   inlined-put-by-val-with-string-transition   
                                                     41.7287+-1.0218     ?     43.4899+-2.8786        ? might be 1.0422x slower
   inlined-put-by-val-with-symbol-transition   
                                                     42.0261+-1.9817           41.1012+-0.7465          might be 1.0225x faster
   int-or-other-abs-then-get-by-val                   4.4624+-0.0525     ?      4.5027+-0.0190        ?
   int-or-other-abs-zero-then-get-by-val             15.1442+-0.3203     ?     15.3780+-0.2351        ? might be 1.0154x slower
   int-or-other-add-then-get-by-val                   4.1184+-0.1721            4.0650+-0.0735          might be 1.0131x faster
   int-or-other-add                                   4.9571+-0.0460     ?      4.9936+-0.2106        ?
   int-or-other-div-then-get-by-val                   3.7128+-0.0636            3.6816+-0.0515        
   int-or-other-max-then-get-by-val                   3.9004+-0.0494            3.8568+-0.0505          might be 1.0113x faster
   int-or-other-min-then-get-by-val                   3.7497+-0.0498            3.7379+-0.0303        
   int-or-other-mod-then-get-by-val                   3.4990+-0.0658     ?      3.6640+-0.4436        ? might be 1.0472x slower
   int-or-other-mul-then-get-by-val                   3.7610+-0.2777            3.6003+-0.0477          might be 1.0446x faster
   int-or-other-neg-then-get-by-val                   4.0717+-0.1709     ?      4.0924+-0.3322        ?
   int-or-other-neg-zero-then-get-by-val             15.3349+-0.6612     ?     15.4238+-0.7499        ?
   int-or-other-sub-then-get-by-val                   4.0158+-0.0960            4.0063+-0.0589        
   int-or-other-sub                                   3.4261+-0.0396     ?      3.4426+-0.0984        ?
   int-overflow-local                                 4.0902+-0.0439            4.0877+-0.0645        
   Int16Array-alloc-long-lived                       43.1358+-0.9222           43.0531+-1.7731        
   Int16Array-bubble-sort-with-byteLength            16.9632+-0.2633     ?     17.4961+-1.2364        ? might be 1.0314x slower
   Int16Array-bubble-sort                            16.5819+-0.2792     ?     16.9068+-0.6025        ? might be 1.0196x slower
   Int16Array-load-int-mul                            1.4284+-0.0065            1.4238+-0.0135        
   Int16Array-to-Int32Array-set                      43.9258+-1.7384           43.6491+-1.4121        
   Int32Array-alloc-large                            11.6555+-0.3134           11.5811+-0.3945        
   Int32Array-alloc-long-lived                       48.1889+-0.9801           47.7393+-1.4367        
   Int32Array-alloc                                   2.8681+-0.0937     ?      2.9786+-0.1563        ? might be 1.0385x slower
   Int32Array-Int8Array-view-alloc                    5.8605+-0.0965            5.8452+-0.0997        
   int52-spill                                        4.5774+-0.1524     ?      4.6252+-0.2510        ? might be 1.0104x slower
   Int8Array-alloc-long-lived                        38.1917+-1.1019     ?     38.4717+-0.8402        ?
   Int8Array-load-with-byteLength                     3.3606+-0.0437     ?      3.4159+-0.1025        ? might be 1.0164x slower
   Int8Array-load                                     3.3596+-0.0517     ?      3.4083+-0.0763        ? might be 1.0145x slower
   integer-divide                                    10.3008+-0.0760     ?     10.3247+-0.1489        ?
   integer-modulo                                     1.7251+-0.2893            1.6343+-0.1036          might be 1.0555x faster
   is-boolean-fold-tricky                             3.8044+-0.1069            3.7895+-0.0789        
   is-boolean-fold                                    2.6698+-0.0600     ?      2.6986+-0.0803        ? might be 1.0108x slower
   is-function-fold-tricky-internal-function   
                                                      9.4686+-0.0522     ?      9.5271+-0.1066        ?
   is-function-fold-tricky                            4.3418+-0.6433            4.0280+-0.0680          might be 1.0779x faster
   is-function-fold                                   2.6777+-0.0405            2.6639+-0.0503        
   is-number-fold-tricky                              4.1464+-0.4107            4.0104+-0.1481          might be 1.0339x faster
   is-number-fold                                     2.6746+-0.0876            2.6521+-0.0213        
   is-object-or-null-fold-functions                   2.7348+-0.0736            2.6825+-0.0249          might be 1.0195x faster
   is-object-or-null-fold-less-tricky                 4.0337+-0.1464            4.0137+-0.0942        
   is-object-or-null-fold-tricky                      4.7740+-0.0537            4.7253+-0.0439          might be 1.0103x faster
   is-object-or-null-fold                             2.6865+-0.0302     ?      2.6943+-0.0558        ?
   is-object-or-null-trickier-function                4.0513+-0.0495            4.0040+-0.0356          might be 1.0118x faster
   is-object-or-null-trickier-internal-function   
                                                      9.7108+-0.1497     ?      9.7270+-0.1587        ?
   is-object-or-null-tricky-function                  4.0153+-0.0833            3.9944+-0.0939        
   is-object-or-null-tricky-internal-function   
                                                      7.3594+-0.0415            7.3578+-0.0486        
   is-string-fold-tricky                              3.9643+-0.0816     ?      3.9811+-0.0921        ?
   is-string-fold                                     2.6381+-0.0185     ?      2.7160+-0.1709        ? might be 1.0295x slower
   is-undefined-fold-tricky                           3.3368+-0.0213     ?      3.4235+-0.1758        ? might be 1.0260x slower
   is-undefined-fold                                  2.6476+-0.0234     ?      2.6660+-0.0718        ?
   JSONP-negative-0                                   0.2511+-0.0084     ?      0.2523+-0.0193        ?
   large-int-captured                                 4.0184+-0.0823     ?      4.0720+-0.0545        ? might be 1.0133x slower
   large-int-neg                                     13.9774+-0.4073           13.9306+-0.5992        
   large-int                                         12.7616+-0.4113     ?     13.5119+-1.3120        ? might be 1.0588x slower
   load-varargs-elimination                          19.8640+-0.2821     ?     20.6838+-0.7239        ? might be 1.0413x slower
   logical-not-weird-types                            2.9961+-0.0399     ?      2.9987+-0.0291        ?
   logical-not                                        4.2502+-0.0693            4.2212+-0.0465        
   lots-of-fields                                     9.2935+-0.2502     ?      9.4337+-0.2857        ? might be 1.0151x slower
   make-indexed-storage                               2.7396+-0.1582     ?      2.7481+-0.1312        ?
   make-rope-cse                                      3.6148+-0.0536     ?      3.6708+-0.1546        ? might be 1.0155x slower
   marsaglia-larger-ints                             31.7422+-1.0254           31.5574+-0.3920        
   marsaglia-osr-entry                               21.0744+-0.5361           20.8016+-0.2617          might be 1.0131x faster
   math-with-out-of-bounds-array-values              21.7229+-1.4554           21.6044+-1.0768        
   max-boolean                                        2.6173+-0.0421            2.6029+-0.0673        
   method-on-number                                  15.3292+-0.2632     ?     15.3542+-0.2254        ?
   min-boolean                                        2.6292+-0.0275            2.6101+-0.0656        
   minus-boolean-double                               3.0944+-0.0618            3.0908+-0.0320        
   minus-boolean                                      2.3405+-0.0459            2.3139+-0.0184          might be 1.0115x faster
   misc-strict-eq                                    28.2450+-1.0709     ?     28.5756+-1.2139        ? might be 1.0117x slower
   mod-boolean-double                                11.0805+-0.3549           10.9470+-0.0495          might be 1.0122x faster
   mod-boolean                                        8.2726+-0.0847     ?      8.2924+-0.0918        ?
   mul-boolean-double                                 3.6063+-0.0354     ?      3.6085+-0.0731        ?
   mul-boolean                                        2.7904+-0.0204     ?      2.8168+-0.0330        ?
   neg-boolean                                        3.0726+-0.0086     ?      3.1037+-0.0772        ? might be 1.0101x slower
   negative-zero-divide                               0.3340+-0.0022     ?      0.3485+-0.0286        ? might be 1.0433x slower
   negative-zero-modulo                               0.3621+-0.0648            0.3390+-0.0142          might be 1.0681x faster
   negative-zero-negate                               0.4069+-0.2081            0.3236+-0.0058          might be 1.2574x faster
   nested-function-parsing                           45.1926+-0.7766     ?     45.6406+-1.6269        ?
   new-array-buffer-dead                             86.6356+-0.4919     ?     86.9308+-0.9623        ?
   new-array-buffer-push                              6.0083+-0.0370            6.0029+-0.2238        
   new-array-dead                                    14.8462+-1.5262     ?     14.9300+-1.0844        ?
   new-array-push                                     3.4109+-0.0906     ?      3.4545+-0.1124        ? might be 1.0128x slower
   no-inline-constructor                             31.1731+-0.2070     ?     31.7261+-0.5414        ? might be 1.0177x slower
   number-test                                        3.0663+-0.0548            3.0213+-0.0518          might be 1.0149x faster
   object-closure-call                                4.8797+-0.0794            4.8364+-0.0334        
   object-get-own-property-symbols-on-large-array   
                                                      4.1746+-0.2175     ?      4.3607+-0.3634        ? might be 1.0446x slower
   object-test                                        2.7277+-0.0132            2.7016+-0.0338        
   obvious-sink-pathology-taken                      97.6988+-2.0089           97.6124+-1.4182        
   obvious-sink-pathology                            92.7352+-1.3241           92.5547+-0.6536        
   obviously-elidable-new-object                     27.9913+-0.4251     ?     28.6787+-0.6965        ? might be 1.0246x slower
   plus-boolean-arith                                 2.4656+-0.1383            2.4016+-0.0233          might be 1.0266x faster
   plus-boolean-double                                3.1330+-0.0664            3.1131+-0.0859        
   plus-boolean                                       2.5026+-0.0427            2.4983+-0.0525        
   poly-chain-access-different-prototypes-simple   
                                                      2.5435+-0.0265     ?      2.6134+-0.0440        ? might be 1.0275x slower
   poly-chain-access-different-prototypes             2.5402+-0.0209     ?      2.5710+-0.0292        ? might be 1.0121x slower
   poly-chain-access-simpler                          2.5693+-0.0159     ?      2.6270+-0.0662        ? might be 1.0225x slower
   poly-chain-access                                  2.4784+-0.0329     ?      2.5301+-0.0702        ? might be 1.0209x slower
   poly-stricteq                                     48.8127+-0.3009     ?     49.1757+-0.9144        ?
   polymorphic-array-call                             1.3324+-0.0555     ?      1.3343+-0.1835        ?
   polymorphic-get-by-id                              2.8764+-0.0620            2.8357+-0.0192          might be 1.0144x faster
   polymorphic-put-by-id                             27.4346+-0.6317           26.7222+-0.3400          might be 1.0267x faster
   polymorphic-put-by-val-with-string                28.9216+-1.1163           28.8349+-0.9711        
   polymorphic-put-by-val-with-symbol                29.3331+-1.5205           28.3643+-0.3558          might be 1.0342x faster
   polymorphic-structure                             12.3028+-0.1576           12.2429+-0.1719        
   polyvariant-monomorphic-get-by-id                  6.7134+-0.9402            6.5030+-0.8394          might be 1.0324x faster
   proto-getter-access                                8.3820+-0.1863     ?      8.3924+-0.3178        ?
   prototype-access-with-mutating-prototype           5.4463+-0.2123     ?      5.6363+-0.2297        ? might be 1.0349x slower
   put-by-id-replace-and-transition                   7.8863+-0.3081            7.8338+-0.4660        
   put-by-id-slightly-polymorphic                     2.6911+-0.0088            2.6854+-0.0188        
   put-by-id                                          9.4120+-0.1544     ?      9.4896+-0.3098        ?
   put-by-val-direct                                  0.3540+-0.0206     ?      0.3547+-0.0203        ?
   put-by-val-large-index-blank-indexing-type   
                                                      5.2478+-0.1932     ?      5.4642+-0.1633        ? might be 1.0412x slower
   put-by-val-machine-int                             2.5067+-0.0881     ?      2.5949+-0.3009        ? might be 1.0352x slower
   put-by-val-with-string-replace-and-transition   
                                                      9.9909+-0.3400            9.8702+-0.0445          might be 1.0122x faster
   put-by-val-with-string-slightly-polymorphic   
                                                      2.9320+-0.0581     ?      2.9841+-0.0686        ? might be 1.0178x slower
   put-by-val-with-string                            10.0031+-0.2774            9.9614+-0.2143        
   put-by-val-with-symbol-replace-and-transition   
                                                     11.6682+-0.5119     ?     11.6835+-0.3869        ?
   put-by-val-with-symbol-slightly-polymorphic   
                                                      3.1926+-0.0589            3.1387+-0.0984          might be 1.0172x faster
   put-by-val-with-symbol                             9.8921+-0.0685     ?     10.0697+-0.3361        ? might be 1.0179x slower
   rare-osr-exit-on-local                            13.3027+-0.0699           13.2896+-0.0924        
   raytrace-with-empty-try-catch                      5.2686+-0.4243            5.0702+-0.0605          might be 1.0391x faster
   raytrace-with-try-catch                            9.6886+-0.2680     ?      9.7048+-0.1519        ?
   register-pressure-from-osr                        16.1607+-0.1224     ?     16.4074+-0.1858        ? might be 1.0153x slower
   repeat-multi-get-by-offset                        21.1818+-0.1380     ?     21.4956+-0.4828        ? might be 1.0148x slower
   richards-empty-try-catch                          71.9101+-1.6521           71.5377+-1.6662        
   richards-try-catch                               241.5111+-5.1729     ?    243.2578+-5.0892        ?
   setter-prototype                                   7.6279+-0.1360     ?      7.6721+-0.0928        ?
   setter                                             5.4072+-0.4494     ?      5.4295+-0.4336        ?
   simple-activation-demo                            23.6376+-0.2631     ?     23.7525+-0.4889        ?
   simple-getter-access                              10.5458+-0.2731     ?     10.7325+-0.2074        ? might be 1.0177x slower
   simple-poly-call-nested                            8.7629+-0.5479            8.5541+-0.5201          might be 1.0244x faster
   simple-poly-call                                   1.3005+-0.0546            1.2673+-0.0229          might be 1.0263x faster
   sin-boolean                                       21.3939+-0.5481           19.6918+-1.5215          might be 1.0864x faster
   singleton-scope                                   62.8305+-0.4561     ?     63.2624+-1.4098        ?
   sink-function                                     10.0673+-0.6817            9.7631+-0.7376          might be 1.0312x faster
   sink-huge-activation                              16.0059+-0.6491     ?     16.4120+-0.3517        ? might be 1.0254x slower
   sinkable-new-object-dag                           53.2526+-0.9570     ?     53.6776+-0.8207        ?
   sinkable-new-object-taken                         43.4637+-2.2779           43.0030+-1.0998          might be 1.0107x faster
   sinkable-new-object                               29.7319+-0.4265     ?     29.8645+-0.9156        ?
   slow-array-profile-convergence                     2.4724+-0.0913     ?      2.4727+-0.0403        ?
   slow-convergence                                   2.3357+-0.0395     ?      2.5086+-0.2432        ? might be 1.0740x slower
   slow-ternaries                                    17.3373+-0.7472           16.8895+-0.1804          might be 1.0265x faster
   sorting-benchmark                                 16.9160+-1.1910           16.8585+-0.5659        
   sparse-conditional                                 1.1297+-0.0265     ?      1.1570+-0.0270        ? might be 1.0242x slower
   splice-to-remove                                  14.4522+-1.3204     ^     11.8686+-0.1010        ^ definitely 1.2177x faster
   string-char-code-at                               13.1022+-0.2396           12.9436+-0.1156          might be 1.0122x faster
   string-concat-object                               2.1628+-0.0292     ?      2.1946+-0.0814        ? might be 1.0147x slower
   string-concat-pair-object                          2.1302+-0.0325            2.0908+-0.0578          might be 1.0189x faster
   string-concat-pair-simple                          9.0516+-0.2534     ?      9.5371+-0.7135        ? might be 1.0536x slower
   string-concat-simple                               9.2077+-0.3967     ?      9.3782+-0.4752        ? might be 1.0185x slower
   string-cons-repeat                                 6.3434+-0.1325            6.2967+-0.0446        
   string-cons-tower                                  6.5045+-0.2455     ?      6.6711+-0.3746        ? might be 1.0256x slower
   string-equality                                   14.9669+-0.6641     ?     14.9797+-0.5307        ?
   string-get-by-val-big-char                         6.6260+-0.4533            6.4640+-0.0507          might be 1.0251x faster
   string-get-by-val-out-of-bounds-insane             2.9989+-0.0166     ?      3.0672+-0.1003        ? might be 1.0228x slower
   string-get-by-val-out-of-bounds                    3.9314+-0.0672            3.8737+-0.0306          might be 1.0149x faster
   string-get-by-val                                  2.8581+-0.1227            2.7907+-0.0318          might be 1.0242x faster
   string-hash                                        1.8155+-0.0182     ?      1.8518+-0.0370        ? might be 1.0200x slower
   string-long-ident-equality                        12.7831+-0.1130     ?     12.9298+-0.1882        ? might be 1.0115x slower
   string-out-of-bounds                              10.1140+-0.3049           10.0350+-0.3149        
   string-repeat-arith                               26.5645+-0.5564     ?     27.1384+-1.3064        ? might be 1.0216x slower
   string-sub                                        54.9455+-0.8494     ?     56.4158+-0.7074        ? might be 1.0268x slower
   string-test                                        2.8958+-0.2087            2.8886+-0.0801        
   string-var-equality                               25.9427+-0.5661     ?     25.9983+-0.4391        ?
   structure-hoist-over-transitions                   2.3418+-0.0749     ?      2.3429+-0.0463        ?
   substring-concat-weird                            35.5424+-0.7252           35.5164+-0.3529        
   substring-concat                                  40.5896+-1.3102     ?     40.5914+-2.4632        ?
   substring                                         44.0460+-0.3503     ?     45.1400+-1.1958        ? might be 1.0248x slower
   switch-char-constant                               2.7066+-0.0433            2.6617+-0.0206          might be 1.0169x faster
   switch-char                                        5.6145+-0.8081     ?      6.3776+-1.0541        ? might be 1.1359x slower
   switch-constant                                    8.0564+-0.7897            7.8280+-0.8773          might be 1.0292x faster
   switch-string-basic-big-var                       14.3335+-0.1259     ^     13.9696+-0.0769        ^ definitely 1.0261x faster
   switch-string-basic-big                           14.7600+-0.2120           14.5927+-0.1107          might be 1.0115x faster
   switch-string-basic-var                           13.4458+-0.9157           12.9737+-0.0910          might be 1.0364x faster
   switch-string-basic                               12.3363+-0.2838     ?     12.4946+-0.4528        ? might be 1.0128x slower
   switch-string-big-length-tower-var                17.8181+-0.3911           17.7440+-0.6094        
   switch-string-length-tower-var                    12.8684+-0.1300     ?     13.1723+-0.5755        ? might be 1.0236x slower
   switch-string-length-tower                        11.2435+-0.2429     ?     11.2757+-0.1891        ?
   switch-string-short                               11.2231+-0.1287           11.2068+-0.1112        
   switch                                            10.4695+-0.4600     ?     10.6816+-0.3367        ? might be 1.0203x slower
   tear-off-arguments-simple                          3.0341+-0.0668     ?      3.0400+-0.0887        ?
   tear-off-arguments                                 4.0707+-0.1244            4.0384+-0.1883        
   temporal-structure                                11.8155+-0.2400           11.5958+-0.1598          might be 1.0189x faster
   to-int32-boolean                                  12.4307+-0.3661           12.3171+-0.2105        
   try-catch-get-by-val-cloned-arguments              9.5251+-0.4616            9.2840+-0.0926          might be 1.0260x faster
   try-catch-get-by-val-direct-arguments              2.1624+-0.2055            2.0860+-0.0107          might be 1.0366x faster
   try-catch-get-by-val-scoped-arguments              4.6680+-0.0589     ?      4.7234+-0.2122        ? might be 1.0119x slower
   typed-array-get-set-by-val-profiling              26.6460+-0.4162           26.1608+-0.3362          might be 1.0185x faster
   undefined-property-access                        218.3126+-2.7169          217.1899+-2.3551        
   undefined-test                                     2.9870+-0.0484            2.9794+-0.0303        
   unprofiled-licm                                    9.4313+-0.3685            9.4021+-0.1890        
   v8-raytrace-with-empty-try-catch                  23.8767+-1.0763           23.4472+-0.1819          might be 1.0183x faster
   v8-raytrace-with-try-catch                        61.2155+-1.1874           61.0274+-1.0342        
   varargs-call                                      12.9182+-0.2788     ?     13.0686+-0.4183        ? might be 1.0116x slower
   varargs-construct-inline                          21.3981+-0.2423     ?     21.6842+-0.4570        ? might be 1.0134x slower
   varargs-construct                                 20.4292+-0.5025     ?     20.9313+-1.0477        ? might be 1.0246x slower
   varargs-inline                                     8.7004+-0.0871     ?      8.7317+-0.2245        ?
   varargs-strict-mode                               10.1039+-0.3554     ?     10.3634+-0.9649        ? might be 1.0257x slower
   varargs                                            9.8156+-0.1705            9.8063+-0.0793        
   weird-inlining-const-prop                          2.1760+-0.1239     ?      2.2282+-0.2768        ? might be 1.0240x slower

   &lt;geometric&gt;                                        7.9828+-0.0187            7.9798+-0.0204          might be 1.0004x faster

                                                        TipOfTree           ParallelVectorIterator                              
AsmBench:
   bigfib.cpp                                       448.1843+-5.3940     ?    452.7718+-3.6302        ? might be 1.0102x slower
   cray.c                                           397.6614+-8.7933     ?    397.9905+-8.1765        ?
   dry.c                                            423.6230+-8.0512          422.7723+-6.2957        
   FloatMM.c                                        683.3425+-2.6920     ?    691.5821+-15.4875       ? might be 1.0121x slower
   gcc-loops.cpp                                   3433.2930+-16.4402        3421.2750+-13.7682       
   n-body.c                                         828.4470+-11.9840         824.6730+-6.1826        
   Quicksort.c                                      403.7090+-5.0089     ?    408.7156+-5.5308        ? might be 1.0124x slower
   stepanov_container.cpp                          3520.4555+-18.6736    ?   3589.0770+-132.0583      ? might be 1.0195x slower
   Towers.c                                         233.8587+-2.7037          233.2573+-2.0461        

   &lt;geometric&gt;                                      714.8409+-3.0608     ?    718.1358+-4.3791        ? might be 1.0046x slower

                                                        TipOfTree           ParallelVectorIterator                              
CompressionBench:
   huffman                                           59.9701+-0.6331           59.6248+-0.8616        
   arithmetic-simple                                273.2520+-3.3121          271.1920+-3.6025        
   arithmetic-precise                               244.4824+-3.8363          243.9747+-2.1938        
   arithmetic-complex-precise                       245.6497+-3.6651          242.6950+-1.3713          might be 1.0122x faster
   arithmetic-precise-order-0                       280.7568+-6.5456          278.8388+-2.5852        
   arithmetic-precise-order-1                       298.9087+-2.7398          298.5026+-2.3714        
   arithmetic-precise-order-2                       347.7651+-6.1826     ?    350.9298+-9.2363        ?
   arithmetic-simple-order-1                        323.2661+-3.1287          318.8053+-2.8745          might be 1.0140x faster
   arithmetic-simple-order-2                        374.5296+-10.9722         373.3166+-5.8732        
   lz-string                                        307.7385+-2.1383     ?    313.1673+-7.5722        ? might be 1.0176x slower

   &lt;geometric&gt;                                      252.8671+-1.2074          252.2074+-1.2487          might be 1.0026x faster

                                                        TipOfTree           ParallelVectorIterator                              
Geomean of preferred means:
   &lt;scaled-result&gt;                                   49.6841+-0.2124     ?     49.7672+-0.1204        ? might be 1.0017x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129258</commentid>
    <comment_count>8</comment_count>
      <attachid>262043</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-09-29 09:32:09 -0700</bug_when>
    <thetext>Comment on attachment 262043
the patch

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

r=me

&gt; Source/JavaScriptCore/heap/CopyVisitor.cpp:43
&gt; +    CopiedBlock* block = 0;

nullptr

&gt; Source/JavaScriptCore/heap/Heap.cpp:658
&gt; +                            item.cell()-&gt;methodTable()-&gt;copyBackingStore(
&gt; +                                item.cell(), copyVisitor, item.token());

You could use the methodTable(VM&amp;) overload here.

&gt; Source/WTF/wtf/ParallelVectorIterator.h:29
&gt; +#include &lt;wtf/FastMalloc.h&gt;

You probably don&apos;t need this header here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129262</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-29 09:33:44 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 262043 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=262043&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/heap/CopyVisitor.cpp:43
&gt; &gt; +    CopiedBlock* block = 0;
&gt; 
&gt; nullptr

Yup!

&gt; 
&gt; &gt; Source/JavaScriptCore/heap/Heap.cpp:658
&gt; &gt; +                            item.cell()-&gt;methodTable()-&gt;copyBackingStore(
&gt; &gt; +                                item.cell(), copyVisitor, item.token());
&gt; 
&gt; You could use the methodTable(VM&amp;) overload here.

Wow, that&apos;s kind of a startling omission.  Fixed.

&gt; 
&gt; &gt; Source/WTF/wtf/ParallelVectorIterator.h:29
&gt; &gt; +#include &lt;wtf/FastMalloc.h&gt;
&gt; 
&gt; You probably don&apos;t need this header here.

I use WTF_MAKE_FAST_ALLOCATED in that header, for the ParallelVectorIterator class. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129264</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-29 09:39:59 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/190310</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261989</attachid>
            <date>2015-09-27 10:53:18 -0700</date>
            <delta_ts>2015-09-28 23:53:10 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>22785</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwMjcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgxIEBA
CisyMDE1LTA5LTI3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
R0MgY29weSBwaGFzZSBzcGFucyB0b28gbWFueSBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NTg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwdXRzIHRoZSBjb3JlIGxvZ2ljIG9mIHRo
ZSBjb3B5IHBoYXNlIGludG8gSGVhcDo6Y29weUJhY2tpbmdTdG9yZXMoKS4gTm93LCBpbnN0ZWFk
IG9mCisgICAgICAgIHVzaW5nIG1hbnkgaGVscGVycyBpbiBtYW55IHBsYWNlcywgdGhlIGFjdHVh
bCBhbGdvcml0aG0gaXMgYWxsIGluIG9uZSBwbGFjZS4KKworICAgICAgICBUaGlzIGxldHMgbWUg
ZG8gYSBsb3Qgb2Ygc2ltcGxpZmljYXRpb24uCisKKyAgICAgICAgLSBDb3B5VmlzaXRvciBubyBs
b25nZXIgcmVxdWlyZXMgdGhhdCB5b3UgY2FsbCBzdGFydENvcHlpbmcoKSBiZWZvcmUsIGFuZCBk
b25lQ29weWluZygpIGFuZAorICAgICAgICAgIFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVt
b3J5Rm9yVGhpc1RocmVhZCgpIGFmdGVyLiBUaGUgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3Ig
bm93CisgICAgICAgICAgZG8gdGhpcyBmb3IgeW91LgorCisgICAgICAgIC0gQ29weVZpc2l0b3Ig
bm8gbG9uZ2VyIGNvbnRhaW5zIHRoZSBhbGdvcml0aG0gdGhhdCBkcml2ZXMgY29weWluZy4gVGhh
dCdzIGFsbCBpbgorICAgICAgICAgIEhlYXA6OmNvcHlCYWNraW5nU3RvcmVzKCkgbm93LiBCYXNp
Y2FsbHksIGNvcHlCYWNraW5nU3RvcmVzKCkgZ2x1ZXMgdG9nZXRoZXIgdGhlIG5ldworICAgICAg
ICAgIFdURjo6UGFyYWxsZWxWZWN0b3JJdGVyYXRvciB3aXRoIHRoZSBjb3B5aW5nIGFsZ29yaXRo
bSB0aGF0IHdlIHVzZWQgdG8gaGF2ZSBpbgorICAgICAgICAgIENvcHlWaXNpdG9yOjpjb3B5RnJv
bVNoYXJlZCgpLgorCisgICAgICAgIC0gTG90cyBvZiBzdHVmZiB0aGF0IHdhcyBpbiBoZWFkZXJz
IGlzIG5vdyBpbiAuY3BwIGZpbGVzLiBUaGF0IGluY2x1ZGVzIGFsbCBub24taG90LXBhdGgKKyAg
ICAgICAgICBjb2RlIGluIENvcHlWaXNpdG9yLiBBbHNvLCB0aGUgY29kZSBmb3IgY29weWluZyBp
biBIZWFwSW5saW5lcy5oIGlzIG5vdyBpbgorICAgICAgICAgIFBhcmFsbGVsVmVjdG9yVmlzb3Rv
ciwgYW5kIGl0J3Mgb25seSBpbmNsdWRlZCBieSBIZWFwLmNwcC4KKworICAgICAgICBPdmVyYWxs
LCBJIGxpa2UgdGhpcyBkaXJlY3Rpb24gZm9yIHRoZSBHQy4gSSBkb24ndCB0aGluayBpdCdzIHVz
ZWZ1bCBmb3IgSGVhcC5jcHAgdG8gaGF2ZQorICAgICAgICBjYWxscyB0byBhbGdvcml0aG1zIGlu
IHNvbWUgb3RoZXIgZmlsZSwgdW5sZXNzIHRob3NlIGFsZ29yaXRobXMgYXJlIGVpdGhlciByZXVz
YWJsZSBvciBqdXN0CisgICAgICAgIHZlcnkgZGVuc2UuIFRoYXQncyBub3QgYWN0dWFsbHkgdHJ1
ZSBmb3IgdGhlIGNvcHkgcGhhc2UsIGFuZCBpdCdzIHByb2JhYmx5IG5vdCB0cnVlIGZvcgorICAg
ICAgICBzb21lIG90aGVyIHN0dWZmIGxpa2UgbWFya2luZy4gSSdsbCBwcm9iYWJseSBkbyB0aGUg
c2FtZSByZWZhY3RvcmluZyBmb3IgbWFya2luZyBpbiBhbm90aGVyCisgICAgICAgIGJ1Zy4KKwor
ICAgICAgICBUaGlzIHNob3VsZCBoYXZlIG5vIGVmZmVjdCBvbiBwZXJmb3JtYW5jZS4KKworICAg
ICAgICAqIGhlYXAvQ29weVZpc2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpDb3B5VmlzaXRvcjo6
Q29weVZpc2l0b3IpOgorICAgICAgICAoSlNDOjpDb3B5VmlzaXRvcjo6fkNvcHlWaXNpdG9yKToK
KyAgICAgICAgKEpTQzo6Q29weVZpc2l0b3I6OmNvcHlGcm9tU2hhcmVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBoZWFwL0NvcHlWaXNpdG9yLmg6CisgICAgICAgICogaGVhcC9Db3B5VmlzaXRvcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q29weVZpc2l0b3I6OmNoZWNrSWZTaG91bGRDb3B5KToK
KyAgICAgICAgKEpTQzo6Q29weVZpc2l0b3I6OmFsbG9jYXRlTmV3U3BhY2VTbG93KToKKyAgICAg
ICAgKEpTQzo6Q29weVZpc2l0b3I6OmRpZENvcHkpOgorICAgICAgICAoSlNDOjpDb3B5VmlzaXRv
cjo6dmlzaXRJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29weVZpc2l0b3I6OnN0YXJ0
Q29weWluZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvcHlWaXNpdG9yOjpkb25lQ29weWlu
Zyk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVh
cDo6Y29weUJhY2tpbmdTdG9yZXMpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAq
IGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6dW5yZWdpc3RlcldlYWtH
Q01hcCk6CisgICAgICAgIChKU0M6OkhlYXA6OmdldE5leHRCbG9ja3NUb0NvcHkpOiBEZWxldGVk
LgorCisyMDE1LTA5LTI2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAg
ICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIChPT1BTISkuCisgICAgICAgIE5lZWQgdGhlIGJ1
ZyBVUkwgKE9PUFMhKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGhlYXAvQ29weVZpc2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpDb3B5VmlzaXRv
cjo6Q29weVZpc2l0b3IpOgorICAgICAgICAoSlNDOjpDb3B5VmlzaXRvcjo6fkNvcHlWaXNpdG9y
KToKKyAgICAgICAgKEpTQzo6Q29weVZpc2l0b3I6OmNvcHlGcm9tU2hhcmVkKTogRGVsZXRlZC4K
KyAgICAgICAgKiBoZWFwL0NvcHlWaXNpdG9yLmg6CisgICAgICAgICogaGVhcC9Db3B5VmlzaXRv
cklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q29weVZpc2l0b3I6OmNoZWNrSWZTaG91bGRDb3B5
KToKKyAgICAgICAgKEpTQzo6Q29weVZpc2l0b3I6OmFsbG9jYXRlTmV3U3BhY2VTbG93KToKKyAg
ICAgICAgKEpTQzo6Q29weVZpc2l0b3I6OmRpZENvcHkpOgorICAgICAgICAoSlNDOjpDb3B5Vmlz
aXRvcjo6dmlzaXRJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29weVZpc2l0b3I6OnN0
YXJ0Q29weWluZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvcHlWaXNpdG9yOjpkb25lQ29w
eWluZyk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6
SGVhcDo6Y29weUJhY2tpbmdTdG9yZXMpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAg
ICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6dW5yZWdpc3Rlcldl
YWtHQ01hcCk6CisgICAgICAgIChKU0M6OkhlYXA6OmdldE5leHRCbG9ja3NUb0NvcHkpOiBEZWxl
dGVkLgorCiAyMDE1LTA5LTI2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgZml4IGRlYnVnIHRlc3RzLiBCZWZvcmUgbWFya2luZywgd2UgbmVl
ZCB0byBjYWxsIHJlZ2lzdGVyR0NUaHJlYWRzKCkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db3B5VmlzaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQ29weVZpc2l0b3IuY3BwCShyZXZpc2lvbiAxOTAyNjkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db3B5VmlzaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDI4ICsz
OSwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKIENvcHlWaXNpdG9yOjpDb3B5VmlzaXRvcihIZWFwJiBo
ZWFwKQogICAgIDogbV9oZWFwKGhlYXApCiB7CisgICAgQVNTRVJUKCFtX2NvcGllZEFsbG9jYXRv
ci5pc1ZhbGlkKCkpOworICAgIENvcGllZEJsb2NrKiBibG9jayA9IDA7CisgICAgbV9oZWFwLm1f
c3RvcmFnZVNwYWNlLmRvbmVGaWxsaW5nQmxvY2sobnVsbHB0ciwgJmJsb2NrKTsKKyAgICBtX2Nv
cGllZEFsbG9jYXRvci5zZXRDdXJyZW50QmxvY2soYmxvY2spOwogfQogCi12b2lkIENvcHlWaXNp
dG9yOjpjb3B5RnJvbVNoYXJlZCgpCitDb3B5VmlzaXRvcjo6fkNvcHlWaXNpdG9yKCkKIHsKLSAg
ICBzaXplX3QgbmV4dCwgZW5kOwotICAgIG1faGVhcC5nZXROZXh0QmxvY2tzVG9Db3B5KG5leHQs
IGVuZCk7Ci0gICAgd2hpbGUgKG5leHQgPCBlbmQpIHsKLSAgICAgICAgZm9yICg7IG5leHQgPCBl
bmQ7ICsrbmV4dCkgewotICAgICAgICAgICAgQ29waWVkQmxvY2sqIGJsb2NrID0gbV9oZWFwLm1f
YmxvY2tzVG9Db3B5W25leHRdOwotICAgICAgICAgICAgaWYgKCFibG9jay0+aGFzV29ya0xpc3Qo
KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgQ29weVdvcmtMaXN0
JiB3b3JrTGlzdCA9IGJsb2NrLT53b3JrTGlzdCgpOwotICAgICAgICAgICAgZm9yIChDb3B5V29y
a0xpc3Q6Oml0ZXJhdG9yIGl0ID0gd29ya0xpc3QuYmVnaW4oKTsgaXQgIT0gd29ya0xpc3QuZW5k
KCk7ICsraXQpCi0gICAgICAgICAgICAgICAgdmlzaXRJdGVtKCppdCk7Ci0KLSAgICAgICAgICAg
IEFTU0VSVCghYmxvY2stPmxpdmVCeXRlcygpKTsKLSAgICAgICAgICAgIG1faGVhcC5tX3N0b3Jh
Z2VTcGFjZS5yZWN5Y2xlRXZhY3VhdGVkQmxvY2soYmxvY2ssIG1faGVhcC5vcGVyYXRpb25JblBy
b2dyZXNzKCkpOwotICAgICAgICB9Ci0gICAgICAgIG1faGVhcC5nZXROZXh0QmxvY2tzVG9Db3B5
KG5leHQsIGVuZCk7Ci0gICAgfQotICAgIEFTU0VSVChuZXh0ID09IGVuZCk7CisgICAgaWYgKG1f
Y29waWVkQWxsb2NhdG9yLmlzVmFsaWQoKSkKKyAgICAgICAgbV9oZWFwLm1fc3RvcmFnZVNwYWNl
LmRvbmVGaWxsaW5nQmxvY2sobV9jb3BpZWRBbGxvY2F0b3IucmVzZXRDdXJyZW50QmxvY2soKSwg
bnVsbHB0cik7CisgICAgCisgICAgV1RGOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlGb3JU
aGlzVGhyZWFkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29weVZpc2l0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Db3B5VmlzaXRvci5oCShyZXZpc2lvbiAxOTAyNjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5VmlzaXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsy
Nyw3IEBACiAjZGVmaW5lIENvcHlWaXNpdG9yX2gKIAogI2luY2x1ZGUgIkNvcGllZFNwYWNlLmgi
CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0z
NCwxNCArMzUsMTMgQEAgY2xhc3MgSGVhcDsKIGNsYXNzIEpTQ2VsbDsKIAogY2xhc3MgQ29weVZp
c2l0b3IgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvcHlWaXNpdG9yKTsKIHB1YmxpYzoK
LSAgICBDb3B5VmlzaXRvcihIZWFwJik7CisgICAgQ29weVZpc2l0b3IoSGVhcCYgaGVhcCk7Cisg
ICAgfkNvcHlWaXNpdG9yKCk7CiAKICAgICB2b2lkIGNvcHlGcm9tU2hhcmVkKCk7CiAKLSAgICB2
b2lkIHN0YXJ0Q29weWluZygpOwotICAgIHZvaWQgZG9uZUNvcHlpbmcoKTsKLQogICAgIC8vIExv
dy1sZXZlbCBBUEkgZm9yIGNvcHlpbmcsIGFwcHJvcHJpYXRlIGZvciBjYXNlcyB3aGVyZSB0aGUg
b2JqZWN0J3MgaGVhcCByZWZlcmVuY2VzCiAgICAgLy8gYXJlIGRpc2NvbnRpZ3VvdXMgb3IgaWYg
dGhlIG9iamVjdCBvY2N1cnMgZnJlcXVlbnRseSBlbm91Z2ggdGhhdCB5b3UgbmVlZCB0byBmb2N1
cyBvbgogICAgIC8vIHBlcmZvcm1hbmNlLiBVc2UgdGhpcyB3aXRoIGNhcmUgYXMgaXQgaXMgZWFz
eSB0byBzaG9vdCB5b3Vyc2VsZiBpbiB0aGUgZm9vdC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvcHlWaXNpdG9ySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0NvcHlWaXNpdG9ySW5saW5lcy5oCShyZXZpc2lvbiAxOTAyNjkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5VmlzaXRvcklubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsMTYgKzM0LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWlubGluZSB2
b2lkIENvcHlWaXNpdG9yOjp2aXNpdEl0ZW0oQ29weVdvcmtsaXN0SXRlbSBpdGVtKQotewotICAg
IGlmIChpdGVtLnRva2VuKCkgPT0gQnV0dGVyZmx5Q29weVRva2VuKSB7Ci0gICAgICAgIEpTT2Jq
ZWN0Ojpjb3B5QmFja2luZ1N0b3JlKGl0ZW0uY2VsbCgpLCAqdGhpcywgQnV0dGVyZmx5Q29weVRv
a2VuKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBpdGVtLmNlbGwoKS0+bWV0
aG9kVGFibGUoKS0+Y29weUJhY2tpbmdTdG9yZShpdGVtLmNlbGwoKSwgKnRoaXMsIGl0ZW0udG9r
ZW4oKSk7Ci19Ci0KIGlubGluZSBib29sIENvcHlWaXNpdG9yOjpjaGVja0lmU2hvdWxkQ29weSh2
b2lkKiBvbGRQdHIpCiB7CiAgICAgQ29waWVkQmxvY2sqIGJsb2NrID0gQ29waWVkU3BhY2U6OmJs
b2NrRm9yKG9sZFB0cik7CkBAIC03NSwyMiArNjUsNiBAQCBpbmxpbmUgdm9pZCogQ29weVZpc2l0
b3I6OmFsbG9jYXRlTmV3U3BhCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIHZvaWQg
Q29weVZpc2l0b3I6OnN0YXJ0Q29weWluZygpCi17Ci0gICAgQVNTRVJUKCFtX2NvcGllZEFsbG9j
YXRvci5pc1ZhbGlkKCkpOwotICAgIENvcGllZEJsb2NrKiBibG9jayA9IDA7Ci0gICAgbV9oZWFw
Lm1fc3RvcmFnZVNwYWNlLmRvbmVGaWxsaW5nQmxvY2sobV9jb3BpZWRBbGxvY2F0b3IucmVzZXRD
dXJyZW50QmxvY2soKSwgJmJsb2NrKTsKLSAgICBtX2NvcGllZEFsbG9jYXRvci5zZXRDdXJyZW50
QmxvY2soYmxvY2spOwotfQotCi1pbmxpbmUgdm9pZCBDb3B5VmlzaXRvcjo6ZG9uZUNvcHlpbmco
KQotewotICAgIGlmICghbV9jb3BpZWRBbGxvY2F0b3IuaXNWYWxpZCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX2hlYXAubV9zdG9yYWdlU3BhY2UuZG9uZUZpbGxpbmdCbG9jayhtX2NvcGll
ZEFsbG9jYXRvci5yZXNldEN1cnJlbnRCbG9jaygpLCAwKTsKLX0KLQogaW5saW5lIHZvaWQgQ29w
eVZpc2l0b3I6OmRpZENvcHkodm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpCiB7CiAgICAgQ29waWVk
QmxvY2sqIGJsb2NrID0gQ29waWVkU3BhY2U6OmJsb2NrRm9yKHB0cik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTkwMjY5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAK
ICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL1JBTVNpemUuaD4KICNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvUGFyYWxsZWxWZWN0b3JJdGVyYXRv
ci5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
QEAgLTYwLDcgKzYxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLW5hbWVzcGFjZSB7IAorbmFtZXNwYWNlIHsKIAogc3RhdGljIGNvbnN0IHNpemVfdCBsYXJn
ZUhlYXBTaXplID0gMzIgKiBNQjsgLy8gQWJvdXQgMS41WCB0aGUgYXZlcmFnZSB3ZWJwYWdlLgog
c3RhdGljIGNvbnN0IHNpemVfdCBzbWFsbEhlYXBTaXplID0gMSAqIE1COyAvLyBNYXRjaGVzIHRo
ZSBGYXN0TWFsbG9jIHBlci10aHJlYWQgY2FjaGUuCkBAIC02MTksMjcgKzYyMCw0NCBAQCB2b2lk
IEhlYXA6OmNvcHlCYWNraW5nU3RvcmVzKCkKICAgICB9CiAKICAgICBpZiAobV9zdG9yYWdlU3Bh
Y2Uuc2hvdWxkRG9Db3B5UGhhc2UoKSkgewotICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2NvcHlMb2NrKTsKLSAgICAgICAgICAgIGlmIChtX29wZXJhdGlvbkluUHJv
Z3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb24pIHsKLSAgICAgICAgICAgICAgICAvLyBSZXNldCB0aGUg
dmVjdG9yIHRvIGJlIGVtcHR5LCBidXQgZG9uJ3QgdGhyb3cgYXdheSB0aGUgYmFja2luZyBzdG9y
ZS4KLSAgICAgICAgICAgICAgICBtX2Jsb2Nrc1RvQ29weS5zaHJpbmsoMCk7Ci0gICAgICAgICAg
ICAgICAgZm9yIChDb3BpZWRCbG9jayogYmxvY2sgPSBtX3N0b3JhZ2VTcGFjZS5tX25ld0dlbi5m
cm9tU3BhY2UtPmhlYWQoKTsgYmxvY2s7IGJsb2NrID0gYmxvY2stPm5leHQoKSkKLSAgICAgICAg
ICAgICAgICAgICAgbV9ibG9ja3NUb0NvcHkuYXBwZW5kKGJsb2NrKTsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBG
dWxsQ29sbGVjdGlvbik7Ci0gICAgICAgICAgICAgICAgV1RGOjpjb3B5VG9WZWN0b3IobV9zdG9y
YWdlU3BhY2UubV9ibG9ja1NldCwgbV9ibG9ja3NUb0NvcHkpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgbV9jb3B5SW5kZXggPSAwOworICAgICAgICBpZiAobV9vcGVyYXRpb25JblByb2dy
ZXNzID09IEVkZW5Db2xsZWN0aW9uKSB7CisgICAgICAgICAgICAvLyBSZXNldCB0aGUgdmVjdG9y
IHRvIGJlIGVtcHR5LCBidXQgZG9uJ3QgdGhyb3cgYXdheSB0aGUgYmFja2luZyBzdG9yZS4KKyAg
ICAgICAgICAgIG1fYmxvY2tzVG9Db3B5LnNocmluaygwKTsKKyAgICAgICAgICAgIGZvciAoQ29w
aWVkQmxvY2sqIGJsb2NrID0gbV9zdG9yYWdlU3BhY2UubV9uZXdHZW4uZnJvbVNwYWNlLT5oZWFk
KCk7IGJsb2NrOyBibG9jayA9IGJsb2NrLT5uZXh0KCkpCisgICAgICAgICAgICAgICAgbV9ibG9j
a3NUb0NvcHkuYXBwZW5kKGJsb2NrKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFT
U0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENvbGxlY3Rpb24pOworICAgICAgICAg
ICAgV1RGOjpjb3B5VG9WZWN0b3IobV9zdG9yYWdlU3BhY2UubV9ibG9ja1NldCwgbV9ibG9ja3NU
b0NvcHkpOwogICAgICAgICB9CiAKKyAgICAgICAgUGFyYWxsZWxWZWN0b3JJdGVyYXRvcjxWZWN0
b3I8Q29waWVkQmxvY2sqPj4gaXRlcmF0b3IoCisgICAgICAgICAgICBtX2Jsb2Nrc1RvQ29weSwg
c19ibG9ja0ZyYWdtZW50TGVuZ3RoKTsKKworICAgICAgICAvLyBOb3RlIHRoYXQgaXQncyBzYWZl
IHRvIHVzZSB0aGUgWyZdIGNhcHR1cmUgbGlzdCBoZXJlLCBldmVuIHRob3VnaCB3ZSdyZSBjcmVh
dGluZyBhIHRhc2sKKyAgICAgICAgLy8gdGhhdCBvdGhlciB0aHJlYWRzIHJ1bi4gVGhhdCdzIGJl
Y2F1c2UgYWZ0ZXIgcnVuRnVuY3Rpb25JblBhcmFsbGVsKCkgcmV0dXJucywgdGhlIHRhc2sKKyAg
ICAgICAgLy8gd2UgaGF2ZSBjcmVhdGVkIGlzIG5vdCBnb2luZyB0byBiZSBydW5uaW5nIGFueW1v
cmUuIEhlbmNlLCBldmVyeXRoaW5nIG9uIHRoZSBzdGFjayBoZXJlCisgICAgICAgIC8vIG91dGxp
dmVzIHRoZSB0YXNrLgogICAgICAgICBtX2hlbHBlckNsaWVudC5ydW5GdW5jdGlvbkluUGFyYWxs
ZWwoCi0gICAgICAgICAgICBbdGhpc10gKCkgeworICAgICAgICAgICAgWyZdICgpIHsKICAgICAg
ICAgICAgICAgICBDb3B5VmlzaXRvciBjb3B5VmlzaXRvcigqdGhpcyk7Ci0gICAgICAgICAgICAg
ICAgY29weVZpc2l0b3Iuc3RhcnRDb3B5aW5nKCk7Ci0gICAgICAgICAgICAgICAgY29weVZpc2l0
b3IuY29weUZyb21TaGFyZWQoKTsKLSAgICAgICAgICAgICAgICBjb3B5VmlzaXRvci5kb25lQ29w
eWluZygpOwotICAgICAgICAgICAgICAgIFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5
Rm9yVGhpc1RocmVhZCgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGl0ZXJh
dG9yLml0ZXJhdGUoCisgICAgICAgICAgICAgICAgICAgIFsmXSAoQ29waWVkQmxvY2sqIGJsb2Nr
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWJsb2NrLT5oYXNXb3JrTGlzdCgpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgQ29weVdvcmtMaXN0JiB3b3JrTGlzdCA9IGJs
b2NrLT53b3JrTGlzdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChDb3B5V29ya2xp
c3RJdGVtIGl0ZW0gOiB3b3JrTGlzdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChpdGVtLnRva2VuKCkgPT0gQnV0dGVyZmx5Q29weVRva2VuKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEpTT2JqZWN0Ojpjb3B5QmFja2luZ1N0b3JlKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5jZWxsKCksIGNvcHlWaXNpdG9yLCBCdXR0ZXJm
bHlDb3B5VG9rZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5jZWxsKCktPm1ldGhvZFRhYmxl
KCktPmNvcHlCYWNraW5nU3RvcmUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0
ZW0uY2VsbCgpLCBjb3B5VmlzaXRvciwgaXRlbS50b2tlbigpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICB9
CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxOTAyNjkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM0Niw4ICszNDYsNiBAQCBwcml2YXRlOgogICAgIHNpemVfdCB0aHJlYWRCeXRlc0NvcGllZCgp
OwogICAgIHNpemVfdCB0aHJlYWREdXBTdHJpbmdzKCk7CiAKLSAgICB2b2lkIGdldE5leHRCbG9j
a3NUb0NvcHkoc2l6ZV90Jiwgc2l6ZV90Jik7Ci0KICAgICBjb25zdCBIZWFwVHlwZSBtX2hlYXBU
eXBlOwogICAgIGNvbnN0IHNpemVfdCBtX3JhbVNpemU7CiAgICAgY29uc3Qgc2l6ZV90IG1fbWlu
Qnl0ZXNQZXJDeWNsZTsKQEAgLTQzNyw5ICs0MzUsNyBAQCBwcml2YXRlOgogICAgIExvY2sgbV9v
cGFxdWVSb290c011dGV4OwogICAgIEhhc2hTZXQ8dm9pZCo+IG1fb3BhcXVlUm9vdHM7CiAKLSAg
ICBMb2NrIG1fY29weUxvY2s7CiAgICAgVmVjdG9yPENvcGllZEJsb2NrKj4gbV9ibG9ja3NUb0Nv
cHk7Ci0gICAgc2l6ZV90IG1fY29weUluZGV4IHsgMCB9OwogICAgIHN0YXRpYyBjb25zdCBzaXpl
X3Qgc19ibG9ja0ZyYWdtZW50TGVuZ3RoID0gMzI7CiAKICAgICBMaXN0YWJsZUhhbmRsZXI8V2Vh
a1JlZmVyZW5jZUhhcnZlc3Rlcj46Okxpc3QgbV93ZWFrUmVmZXJlbmNlSGFydmVzdGVyczsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAkocmV2aXNpb24gMTkw
MjY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzI2LDE0ICszMjYsNiBAQCBpbmxpbmUgdm9pZCBIZWFwOjp1bnJlZ2lzdGVy
V2Vha0dDTWFwKHZvCiAgICAgbV93ZWFrR0NNYXBzLnJlbW92ZSh3ZWFrR0NNYXApOwogfQogICAg
IAotaW5saW5lIHZvaWQgSGVhcDo6Z2V0TmV4dEJsb2Nrc1RvQ29weShzaXplX3QmIHN0YXJ0LCBz
aXplX3QmIGVuZCkKLXsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2NvcHlMb2NrKTsKLSAgICBz
dGFydCA9IG1fY29weUluZGV4OwotICAgIGVuZCA9IHN0ZDo6bWluKG1fYmxvY2tzVG9Db3B5LnNp
emUoKSwgbV9jb3B5SW5kZXggKyBzX2Jsb2NrRnJhZ21lbnRMZW5ndGgpOwotICAgIG1fY29weUlu
ZGV4ID0gZW5kOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEhlYXBJbmxp
bmVzX2gKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTAyNzEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE1LTA5LTI3ICBGaWxpcCBQaXpsbyAg
PGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgR0MgY29weSBwaGFzZSBzcGFucyB0b28gbWFu
eSBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ5NTg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RXh0cmFjdCB0aGUgbG9hZCBiYWxhbmNpbmcgYWxnb3JpdGhtIHVzZWQgYnkgdGhlIEdDJ3MgY29w
eSBwaGFzZSBpbnRvIGEgcmV1c2FibGUgdGVtcGxhdGUuCisgICAgICAgIFRoZSBHQyBjb3B5IHBo
YXNlIG5vdyB1c2VzIHRoaXMuCisKKyAgICAgICAgKiBXVEYudmN4cHJvai9XVEYudmN4cHJvajoK
KyAgICAgICAgKiBXVEYudmN4cHJvai9XVEYudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiB3dGYvUGFyYWxsZWxWZWN0b3JJdGVyYXRvci5oOiBBZGRlZC4KKyAgICAg
ICAgKFdURjo6UGFyYWxsZWxWZWN0b3JJdGVyYXRvcjo6UGFyYWxsZWxWZWN0b3JJdGVyYXRvcik6
CisgICAgICAgIChXVEY6OlBhcmFsbGVsVmVjdG9ySXRlcmF0b3I6Oml0ZXJhdGUpOgorCisyMDE1
LTA5LTI2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgTmVlZCBh
IHNob3J0IGRlc2NyaXB0aW9uIChPT1BTISkuCisgICAgICAgIE5lZWQgdGhlIGJ1ZyBVUkwgKE9P
UFMhKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdURi52Y3hwcm9qL1dURi52Y3hwcm9qOgorICAgICAgICAqIFdURi52Y3hwcm9qL1dURi52Y3hw
cm9qLmZpbHRlcnM6CisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9QYXJhbGxlbFZlY3Rv
ckl0ZXJhdG9yLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpQYXJhbGxlbFZlY3Rvckl0ZXJhdG9y
OjpQYXJhbGxlbFZlY3Rvckl0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6UGFyYWxsZWxWZWN0b3JJ
dGVyYXRvcjo6aXRlcmF0ZSk6CisKIDIwMTUtMDktMjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggV2luZG93cyBidWlsZCBieSBhZGRp
bmcgV1RGX0VYUE9SVF9QUklWQVRFIGluIHZhcmlvdXMgcGxhY2VzLgpJbmRleDogU291cmNlL1dU
Ri9XVEYudmN4cHJvai9XVEYudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi52
Y3hwcm9qL1dURi52Y3hwcm9qCShyZXZpc2lvbiAxOTAyNjkpCisrKyBTb3VyY2UvV1RGL1dURi52
Y3hwcm9qL1dURi52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIsNiArMjUyLDcgQEAKICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxQYXJhbGxlbEpvYnNHZW5lcmljLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcUGFyYWxsZWxKb2JzTGliZGlzcGF0Y2guaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxQYXJhbGxlbEpvYnNPcGVuTVAuaCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxQYXJhbGxlbFZlY3Rvckl0ZXJhdG9y
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcUGFya2luZ0xvdC5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFBhc3NSZWZQdHIuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxQbGF0Zm9ybS5oIiAvPgpJbmRleDogU291cmNlL1dURi9X
VEYudmN4cHJvai9XVEYudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
V1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTkwMjY5KQorKysgU291
cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBA
IC01NjUsNiArNTY1LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxQYXJhbGxl
bEpvYnNPcGVuTVAuaCI+CiAgICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPgogICAgIDwvQ2xJbmNs
dWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFBhcmFsbGVsVmVjdG9ySXRlcmF0
b3IuaCI+CisgICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFBhc3NSZWZQdHIuaCI+CiAgICAgICA8RmlsdGVy
Pnd0ZjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTAyNjkpCisrKyBTb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3
IEBACiAJCTBGRTQ0NzlDMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU0NDc5QTFCN0FBQTAzMDA5
NDk4RUIgLyogV29yZExvY2suY3BwICovOyB9OwogCQkwRkU0NDc5RDFCN0FBQTAzMDA5NDk4RUIg
LyogV29yZExvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRTQ0NzlCMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5oICovOyB9OwogCQkwRkVC
M0RDRjFCQjVENjg0MDA5RDdBQUQgLyogU2hhcmVkVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQjNEQ0UxQkI1RDY4NDAwOUQ3QUFEIC8qIFNo
YXJlZFRhc2suaCAqLzsgfTsKKwkJMEZFQjNERDExQkI3MzY2QjAwOUQ3QUFEIC8qIFBhcmFsbGVs
VmVjdG9ySXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRUIzREQwMUJCNzM2NkIwMDlEN0FBRCAvKiBQYXJhbGxlbFZlY3Rvckl0ZXJhdG9y
LmggKi87IH07CiAJCTBGRUQ2N0I2MUIyMkQ0RDgwMDY2Q0UxNSAvKiBUaW55UHRyU2V0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVENjdCNTFCMjJE
NEQ4MDA2NkNFMTUgLyogVGlueVB0clNldC5oICovOyB9OwogCQkwRkZGMTlEQzFCQjMzNEVCMDA4
ODZEOTEgLyogUGFyYWxsZWxIZWxwZXJQb29sLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkYxOURBMUJCMzM0RUIwMDg4NkQ5MSAvKiBQYXJhbGxl
bEhlbHBlclBvb2wuY3BwICovOyB9OwogCQkwRkZGMTlERDFCQjMzNEVCMDA4ODZEOTEgLyogUGFy
YWxsZWxIZWxwZXJQb29sLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkZGMTlEQjFCQjMzNEVCMDA4ODZEOTEgLyogUGFyYWxsZWxIZWxwZXJQb29sLmgg
Ki87IH07CkBAIC0zNDEsNiArMzQyLDcgQEAKIAkJMEZFNDQ3OUExQjdBQUEwMzAwOTQ5OEVCIC8q
IFdvcmRMb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmRM
b2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFNDQ3OUIxQjdBQUEwMzAw
OTQ5OEVCIC8qIFdvcmRMb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdv
cmRMb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUIzRENFMUJCNUQ2ODQw
MDlEN0FBRCAvKiBTaGFyZWRUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNoYXJlZFRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQjNERDAxQkI3
MzY2QjAwOUQ3QUFEIC8qIFBhcmFsbGVsVmVjdG9ySXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGFyYWxsZWxWZWN0b3JJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkVENjdCNTFCMjJENEQ4MDA2NkNFMTUgLyogVGlueVB0clNldC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaW55UHRyU2V0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkYxOURBMUJCMzM0RUIwMDg4NkQ5MSAvKiBQYXJhbGxl
bEhlbHBlclBvb2wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFy
YWxsZWxIZWxwZXJQb29sLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRjE5
REIxQkIzMzRFQjAwODg2RDkxIC8qIFBhcmFsbGVsSGVscGVyUG9vbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQYXJhbGxlbEhlbHBlclBvb2wuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTgzMCw2ICs4MzIsNyBAQAogCQkJCTBGRkYxOURCMUJCMzM0RUIwMDg4
NkQ5MSAvKiBQYXJhbGxlbEhlbHBlclBvb2wuaCAqLywKIAkJCQlBOEE0NzJFNjE1MUE4MjVCMDA0
MTIzRkYgLyogUGFyYWxsZWxKb2JzLmggKi8sCiAJCQkJQThBNDcyRTkxNTFBODI1QjAwNDEyM0ZG
IC8qIFBhcmFsbGVsSm9ic0xpYmRpc3BhdGNoLmggKi8sCisJCQkJMEZFQjNERDAxQkI3MzY2QjAw
OUQ3QUFEIC8qIFBhcmFsbGVsVmVjdG9ySXRlcmF0b3IuaCAqLywKIAkJCQkwRjgyNEE2NDFCNzQ0
M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAgKi8sCiAJCQkJMEY4MjRBNjUxQjc0NDNBMDAw
MkUzNDVEIC8qIFBhcmtpbmdMb3QuaCAqLywKIAkJCQlBOEE0NzJFRDE1MUE4MjVCMDA0MTIzRkYg
LyogUGFzc1JlZlB0ci5oICovLApAQCAtMTA4NSw2ICsxMDg4LDcgQEAKIAkJCQkwRkIxNEUxOTE4
MEZBMjE4MDA5QjZCNEQgLyogQmFnLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxNEUxQjE4MTBF
MURDMDA5QjZCNEQgLyogQmFnVG9IYXNoTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MTM0MDEz
OTE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVCM0RE
MTFCQjczNjZCMDA5RDdBQUQgLyogUGFyYWxsZWxWZWN0b3JJdGVyYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThBNDczQTkxNTFBODI1QjAwNDEyM0ZGIC8qIGJpZ251bS1kdG9hLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOEE0NzNBQjE1MUE4MjVCMDA0MTIzRkYgLyogYmlnbnVtLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkZGMTlERDFCQjMzNEVCMDA4ODZEOTEgLyogUGFyYWxsZWxIZWxwZXJQ
b29sLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAx
OTAyNjkpCisrKyBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNjAsMTAgKzYwLDEyIEBAIHNldChXVEZfSEVBREVSUwogICAgIFBhZ2VBbGxvY2F0aW9uLmgK
ICAgICBQYWdlQmxvY2suaAogICAgIFBhZ2VSZXNlcnZhdGlvbi5oCisgICAgUGFyYWxsZWxIZWxw
ZXJQb29sLmgKICAgICBQYXJhbGxlbEpvYnMuaAogICAgIFBhcmFsbGVsSm9ic0dlbmVyaWMuaAog
ICAgIFBhcmFsbGVsSm9ic0xpYmRpc3BhdGNoLmgKICAgICBQYXJhbGxlbEpvYnNPcGVuTVAuaAor
ICAgIFBhcmFsbGVsVmVjdG9ySXRlcmF0b3IuaAogICAgIFBhcmtpbmdMb3QuaAogICAgIFBhc3NS
ZWZQdHIuaAogICAgIFBsYXRmb3JtLmgKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BhcmFsbGVsVmVj
dG9ySXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QYXJhbGxlbFZlY3Rv
ckl0ZXJhdG9yLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RGL3d0Zi9QYXJhbGxlbFZlY3Rv
ckl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBhcmFsbGVsVmVjdG9y
SXRlcmF0b3JfaAorI2RlZmluZSBQYXJhbGxlbFZlY3Rvckl0ZXJhdG9yX2gKKworI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZl
Y3RvclR5cGU+CitjbGFzcyBQYXJhbGxlbFZlY3Rvckl0ZXJhdG9yIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShQYXJhbGxlbFZlY3Rvckl0ZXJhdG9yKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBQYXJhbGxlbFZlY3Rvckl0ZXJhdG9yKFZlY3RvclR5cGUm
IHZlY3Rvciwgc2l6ZV90IHNoYXJkU2l6ZSkKKyAgICAgICAgOiBtX3ZlY3Rvcih2ZWN0b3IpCisg
ICAgICAgICwgbV9zaGFyZFNpemUoc2hhcmRTaXplKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHZvaWQgaXRlcmF0ZShjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQorICAgIHsKKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgc2l6ZV90IGJl
Z2luOworICAgICAgICAgICAgc2l6ZV90IGVuZDsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICAgICAgICAgIGJlZ2luID0g
bV9uZXh0OworICAgICAgICAgICAgICAgIGlmIChiZWdpbiA9PSBtX3ZlY3Rvci5zaXplKCkpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBpZiAobV92ZWN0b3Iu
c2l6ZSgpIC0gYmVnaW4gPCBtX3NoYXJkU2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgZW5kID0g
bV92ZWN0b3Iuc2l6ZSgpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgZW5kID0gYmVnaW4gKyBtX3NoYXJkU2l6ZTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChlbmQgPD0gbV92ZWN0b3Iuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChiZWdpbiA8IGVuZCk7CisgICAgICAgICAgICAgICAgbV9uZXh0ID0gZW5kOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gYmVnaW47IGkgPCBlbmQ7ICsr
aSkKKyAgICAgICAgICAgICAgICBmdW5jdG9yKG1fdmVjdG9yW2ldKTsKKyAgICAgICAgfQorICAg
IH0KK3ByaXZhdGU6CisgICAgVmVjdG9yVHlwZSYgbV92ZWN0b3I7CisgICAgTG9jayBtX2xvY2s7
CisgICAgc2l6ZV90IG1fc2hhcmRTaXplOworICAgIHNpemVfdCBtX25leHQgeyAwIH07Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpQYXJhbGxlbFZlY3Rvckl0ZXJhdG9y
OworCisjZW5kaWYgLy8gUGFyYWxsZWxWZWN0b3JJdGVyYXRvcl9oCisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262043</attachid>
            <date>2015-09-28 23:53:10 -0700</date>
            <delta_ts>2015-09-29 09:32:09 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>21501</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwMzAyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBA
CisyMDE1LTA5LTI3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
R0MgY29weSBwaGFzZSBzcGFucyB0b28gbWFueSBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NTg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwdXRzIHRoZSBjb3JlIGxvZ2ljIG9mIHRo
ZSBjb3B5IHBoYXNlIGludG8gSGVhcDo6Y29weUJhY2tpbmdTdG9yZXMoKS4gTm93LCBpbnN0ZWFk
IG9mCisgICAgICAgIHVzaW5nIG1hbnkgaGVscGVycyBpbiBtYW55IHBsYWNlcywgdGhlIGFjdHVh
bCBhbGdvcml0aG0gaXMgYWxsIGluIG9uZSBwbGFjZS4KKworICAgICAgICBUaGlzIGxldHMgbWUg
ZG8gYSBsb3Qgb2Ygc2ltcGxpZmljYXRpb24uCisKKyAgICAgICAgLSBDb3B5VmlzaXRvciBubyBs
b25nZXIgcmVxdWlyZXMgdGhhdCB5b3UgY2FsbCBzdGFydENvcHlpbmcoKSBiZWZvcmUsIGFuZCBk
b25lQ29weWluZygpIGFuZAorICAgICAgICAgIFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVt
b3J5Rm9yVGhpc1RocmVhZCgpIGFmdGVyLiBUaGUgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3Ig
bm93CisgICAgICAgICAgZG8gdGhpcyBmb3IgeW91LgorCisgICAgICAgIC0gQ29weVZpc2l0b3Ig
bm8gbG9uZ2VyIGNvbnRhaW5zIHRoZSBhbGdvcml0aG0gdGhhdCBkcml2ZXMgY29weWluZy4gVGhh
dCdzIGFsbCBpbgorICAgICAgICAgIEhlYXA6OmNvcHlCYWNraW5nU3RvcmVzKCkgbm93LiBCYXNp
Y2FsbHksIGNvcHlCYWNraW5nU3RvcmVzKCkgZ2x1ZXMgdG9nZXRoZXIgdGhlIG5ldworICAgICAg
ICAgIFdURjo6UGFyYWxsZWxWZWN0b3JJdGVyYXRvciB3aXRoIHRoZSBjb3B5aW5nIGFsZ29yaXRo
bSB0aGF0IHdlIHVzZWQgdG8gaGF2ZSBpbgorICAgICAgICAgIENvcHlWaXNpdG9yOjpjb3B5RnJv
bVNoYXJlZCgpLgorCisgICAgICAgIC0gTG90cyBvZiBzdHVmZiB0aGF0IHdhcyBpbiBoZWFkZXJz
IGlzIG5vdyBpbiAuY3BwIGZpbGVzLiBUaGF0IGluY2x1ZGVzIGFsbCBub24taG90LXBhdGgKKyAg
ICAgICAgICBjb2RlIGluIENvcHlWaXNpdG9yLiBBbHNvLCB0aGUgY29kZSBmb3IgY29weWluZyBp
biBIZWFwSW5saW5lcy5oIGlzIG5vdyBpbgorICAgICAgICAgIFBhcmFsbGVsVmVjdG9yVmlzb3Rv
ciwgYW5kIGl0J3Mgb25seSBpbmNsdWRlZCBieSBIZWFwLmNwcC4KKworICAgICAgICBPdmVyYWxs
LCBJIGxpa2UgdGhpcyBkaXJlY3Rpb24gZm9yIHRoZSBHQy4gSSBkb24ndCB0aGluayBpdCdzIHVz
ZWZ1bCBmb3IgSGVhcC5jcHAgdG8gaGF2ZQorICAgICAgICBjYWxscyB0byBhbGdvcml0aG1zIGlu
IHNvbWUgb3RoZXIgZmlsZSwgdW5sZXNzIHRob3NlIGFsZ29yaXRobXMgYXJlIGVpdGhlciByZXVz
YWJsZSBvciBqdXN0CisgICAgICAgIHZlcnkgZGVuc2UuIFRoYXQncyBub3QgYWN0dWFsbHkgdHJ1
ZSBmb3IgdGhlIGNvcHkgcGhhc2UsIGFuZCBpdCdzIHByb2JhYmx5IG5vdCB0cnVlIGZvcgorICAg
ICAgICBzb21lIG90aGVyIHN0dWZmIGxpa2UgbWFya2luZy4gSSdsbCBwcm9iYWJseSBkbyB0aGUg
c2FtZSByZWZhY3RvcmluZyBmb3IgbWFya2luZyBpbiBhbm90aGVyCisgICAgICAgIGJ1Zy4KKwor
ICAgICAgICBUaGlzIHNob3VsZCBoYXZlIG5vIGVmZmVjdCBvbiBwZXJmb3JtYW5jZS4KKworICAg
ICAgICAqIGhlYXAvQ29weVZpc2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpDb3B5VmlzaXRvcjo6
Q29weVZpc2l0b3IpOgorICAgICAgICAoSlNDOjpDb3B5VmlzaXRvcjo6fkNvcHlWaXNpdG9yKToK
KyAgICAgICAgKEpTQzo6Q29weVZpc2l0b3I6OmNvcHlGcm9tU2hhcmVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBoZWFwL0NvcHlWaXNpdG9yLmg6CisgICAgICAgICogaGVhcC9Db3B5VmlzaXRvcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q29weVZpc2l0b3I6OmNoZWNrSWZTaG91bGRDb3B5KToK
KyAgICAgICAgKEpTQzo6Q29weVZpc2l0b3I6OmFsbG9jYXRlTmV3U3BhY2VTbG93KToKKyAgICAg
ICAgKEpTQzo6Q29weVZpc2l0b3I6OmRpZENvcHkpOgorICAgICAgICAoSlNDOjpDb3B5VmlzaXRv
cjo6dmlzaXRJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29weVZpc2l0b3I6OnN0YXJ0
Q29weWluZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvcHlWaXNpdG9yOjpkb25lQ29weWlu
Zyk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVh
cDo6Y29weUJhY2tpbmdTdG9yZXMpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAq
IGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6dW5yZWdpc3RlcldlYWtH
Q01hcCk6CisgICAgICAgIChKU0M6OkhlYXA6OmdldE5leHRCbG9ja3NUb0NvcHkpOiBEZWxldGVk
LgorCiAyMDE1LTA5LTI4ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIHVudXNlZCBwYXJzZU1lbW9yeUFtb3VudApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQ29weVZpc2l0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlWaXNpdG9yLmNwcAkocmV2aXNpb24gMTkwMzAyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVZpc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zOSwyOCArMzksMTggQEAgbmFtZXNwYWNlIEpTQyB7CiBDb3B5VmlzaXRvcjo6Q29weVZpc2l0
b3IoSGVhcCYgaGVhcCkKICAgICA6IG1faGVhcChoZWFwKQogeworICAgIEFTU0VSVCghbV9jb3Bp
ZWRBbGxvY2F0b3IuaXNWYWxpZCgpKTsKKyAgICBDb3BpZWRCbG9jayogYmxvY2sgPSAwOworICAg
IG1faGVhcC5tX3N0b3JhZ2VTcGFjZS5kb25lRmlsbGluZ0Jsb2NrKG51bGxwdHIsICZibG9jayk7
CisgICAgbV9jb3BpZWRBbGxvY2F0b3Iuc2V0Q3VycmVudEJsb2NrKGJsb2NrKTsKIH0KIAotdm9p
ZCBDb3B5VmlzaXRvcjo6Y29weUZyb21TaGFyZWQoKQorQ29weVZpc2l0b3I6On5Db3B5VmlzaXRv
cigpCiB7Ci0gICAgc2l6ZV90IG5leHQsIGVuZDsKLSAgICBtX2hlYXAuZ2V0TmV4dEJsb2Nrc1Rv
Q29weShuZXh0LCBlbmQpOwotICAgIHdoaWxlIChuZXh0IDwgZW5kKSB7Ci0gICAgICAgIGZvciAo
OyBuZXh0IDwgZW5kOyArK25leHQpIHsKLSAgICAgICAgICAgIENvcGllZEJsb2NrKiBibG9jayA9
IG1faGVhcC5tX2Jsb2Nrc1RvQ29weVtuZXh0XTsKLSAgICAgICAgICAgIGlmICghYmxvY2stPmhh
c1dvcmtMaXN0KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIENv
cHlXb3JrTGlzdCYgd29ya0xpc3QgPSBibG9jay0+d29ya0xpc3QoKTsKLSAgICAgICAgICAgIGZv
ciAoQ29weVdvcmtMaXN0OjppdGVyYXRvciBpdCA9IHdvcmtMaXN0LmJlZ2luKCk7IGl0ICE9IHdv
cmtMaXN0LmVuZCgpOyArK2l0KQotICAgICAgICAgICAgICAgIHZpc2l0SXRlbSgqaXQpOwotCi0g
ICAgICAgICAgICBBU1NFUlQoIWJsb2NrLT5saXZlQnl0ZXMoKSk7Ci0gICAgICAgICAgICBtX2hl
YXAubV9zdG9yYWdlU3BhY2UucmVjeWNsZUV2YWN1YXRlZEJsb2NrKGJsb2NrLCBtX2hlYXAub3Bl
cmF0aW9uSW5Qcm9ncmVzcygpKTsKLSAgICAgICAgfQotICAgICAgICBtX2hlYXAuZ2V0TmV4dEJs
b2Nrc1RvQ29weShuZXh0LCBlbmQpOwotICAgIH0KLSAgICBBU1NFUlQobmV4dCA9PSBlbmQpOwor
ICAgIGlmIChtX2NvcGllZEFsbG9jYXRvci5pc1ZhbGlkKCkpCisgICAgICAgIG1faGVhcC5tX3N0
b3JhZ2VTcGFjZS5kb25lRmlsbGluZ0Jsb2NrKG1fY29waWVkQWxsb2NhdG9yLnJlc2V0Q3VycmVu
dEJsb2NrKCksIG51bGxwdHIpOworICAgIAorICAgIFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVl
TWVtb3J5Rm9yVGhpc1RocmVhZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlWaXNpdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVZpc2l0b3IuaAkocmV2aXNpb24gMTkwMzAyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVZpc2l0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBDb3B5VmlzaXRvcl9oCiAKICNpbmNsdWRlICJDb3Bp
ZWRTcGFjZS5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSlND
IHsKIApAQCAtMzQsMTQgKzM1LDEzIEBAIGNsYXNzIEhlYXA7CiBjbGFzcyBKU0NlbGw7CiAKIGNs
YXNzIENvcHlWaXNpdG9yIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb3B5VmlzaXRvcik7
CiBwdWJsaWM6CiAgICAgQ29weVZpc2l0b3IoSGVhcCYpOworICAgIH5Db3B5VmlzaXRvcigpOwog
CiAgICAgdm9pZCBjb3B5RnJvbVNoYXJlZCgpOwogCi0gICAgdm9pZCBzdGFydENvcHlpbmcoKTsK
LSAgICB2b2lkIGRvbmVDb3B5aW5nKCk7Ci0KICAgICAvLyBMb3ctbGV2ZWwgQVBJIGZvciBjb3B5
aW5nLCBhcHByb3ByaWF0ZSBmb3IgY2FzZXMgd2hlcmUgdGhlIG9iamVjdCdzIGhlYXAgcmVmZXJl
bmNlcwogICAgIC8vIGFyZSBkaXNjb250aWd1b3VzIG9yIGlmIHRoZSBvYmplY3Qgb2NjdXJzIGZy
ZXF1ZW50bHkgZW5vdWdoIHRoYXQgeW91IG5lZWQgdG8gZm9jdXMgb24KICAgICAvLyBwZXJmb3Jt
YW5jZS4gVXNlIHRoaXMgd2l0aCBjYXJlIGFzIGl0IGlzIGVhc3kgdG8gc2hvb3QgeW91cnNlbGYg
aW4gdGhlIGZvb3QuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5VmlzaXRv
cklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5
VmlzaXRvcklubGluZXMuaAkocmV2aXNpb24gMTkwMzAyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQ29weVZpc2l0b3JJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE2ICsz
NCw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1pbmxpbmUgdm9pZCBDb3B5VmlzaXRvcjo6dmlz
aXRJdGVtKENvcHlXb3JrbGlzdEl0ZW0gaXRlbSkKLXsKLSAgICBpZiAoaXRlbS50b2tlbigpID09
IEJ1dHRlcmZseUNvcHlUb2tlbikgewotICAgICAgICBKU09iamVjdDo6Y29weUJhY2tpbmdTdG9y
ZShpdGVtLmNlbGwoKSwgKnRoaXMsIEJ1dHRlcmZseUNvcHlUb2tlbik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgCi0gICAgaXRlbS5jZWxsKCktPm1ldGhvZFRhYmxlKCktPmNvcHlCYWNr
aW5nU3RvcmUoaXRlbS5jZWxsKCksICp0aGlzLCBpdGVtLnRva2VuKCkpOwotfQotCiBpbmxpbmUg
Ym9vbCBDb3B5VmlzaXRvcjo6Y2hlY2tJZlNob3VsZENvcHkodm9pZCogb2xkUHRyKQogewogICAg
IENvcGllZEJsb2NrKiBibG9jayA9IENvcGllZFNwYWNlOjpibG9ja0ZvcihvbGRQdHIpOwpAQCAt
NzUsMjIgKzY1LDYgQEAgaW5saW5lIHZvaWQqIENvcHlWaXNpdG9yOjphbGxvY2F0ZU5ld1NwYQog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlubGluZSB2b2lkIENvcHlWaXNpdG9yOjpzdGFydENv
cHlpbmcoKQotewotICAgIEFTU0VSVCghbV9jb3BpZWRBbGxvY2F0b3IuaXNWYWxpZCgpKTsKLSAg
ICBDb3BpZWRCbG9jayogYmxvY2sgPSAwOwotICAgIG1faGVhcC5tX3N0b3JhZ2VTcGFjZS5kb25l
RmlsbGluZ0Jsb2NrKG1fY29waWVkQWxsb2NhdG9yLnJlc2V0Q3VycmVudEJsb2NrKCksICZibG9j
ayk7Ci0gICAgbV9jb3BpZWRBbGxvY2F0b3Iuc2V0Q3VycmVudEJsb2NrKGJsb2NrKTsKLX0KLQot
aW5saW5lIHZvaWQgQ29weVZpc2l0b3I6OmRvbmVDb3B5aW5nKCkKLXsKLSAgICBpZiAoIW1fY29w
aWVkQWxsb2NhdG9yLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9oZWFwLm1f
c3RvcmFnZVNwYWNlLmRvbmVGaWxsaW5nQmxvY2sobV9jb3BpZWRBbGxvY2F0b3IucmVzZXRDdXJy
ZW50QmxvY2soKSwgMCk7Ci19Ci0KIGlubGluZSB2b2lkIENvcHlWaXNpdG9yOjpkaWRDb3B5KHZv
aWQqIHB0ciwgc2l6ZV90IGJ5dGVzKQogewogICAgIENvcGllZEJsb2NrKiBibG9jayA9IENvcGll
ZFNwYWNlOjpibG9ja0ZvcihwdHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAJKHJldmlzaW9uIDE5MDMwMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSA8YWxnb3JpdGht
PgogI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CisjaW5jbHVkZSA8d3RmL1BhcmFsbGVsVmVjdG9ySXRlcmF0b3IuaD4KICNpbmNsdWRlIDx3dGYv
UHJvY2Vzc0lELmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC02MCw3ICs2MSw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBKU0MgewogCi1uYW1lc3BhY2UgeyAKK25h
bWVzcGFjZSB7CiAKIHN0YXRpYyBjb25zdCBzaXplX3QgbGFyZ2VIZWFwU2l6ZSA9IDMyICogTUI7
IC8vIEFib3V0IDEuNVggdGhlIGF2ZXJhZ2Ugd2VicGFnZS4KIHN0YXRpYyBjb25zdCBzaXplX3Qg
c21hbGxIZWFwU2l6ZSA9IDEgKiBNQjsgLy8gTWF0Y2hlcyB0aGUgRmFzdE1hbGxvYyBwZXItdGhy
ZWFkIGNhY2hlLgpAQCAtNjE5LDI3ICs2MjAsNDcgQEAgdm9pZCBIZWFwOjpjb3B5QmFja2luZ1N0
b3JlcygpCiAgICAgfQogCiAgICAgaWYgKG1fc3RvcmFnZVNwYWNlLnNob3VsZERvQ29weVBoYXNl
KCkpIHsKLSAgICAgICAgewotICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9jb3B5TG9j
ayk7Ci0gICAgICAgICAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEVkZW5Db2xsZWN0
aW9uKSB7Ci0gICAgICAgICAgICAgICAgLy8gUmVzZXQgdGhlIHZlY3RvciB0byBiZSBlbXB0eSwg
YnV0IGRvbid0IHRocm93IGF3YXkgdGhlIGJhY2tpbmcgc3RvcmUuCi0gICAgICAgICAgICAgICAg
bV9ibG9ja3NUb0NvcHkuc2hyaW5rKDApOwotICAgICAgICAgICAgICAgIGZvciAoQ29waWVkQmxv
Y2sqIGJsb2NrID0gbV9zdG9yYWdlU3BhY2UubV9uZXdHZW4uZnJvbVNwYWNlLT5oZWFkKCk7IGJs
b2NrOyBibG9jayA9IGJsb2NrLT5uZXh0KCkpCi0gICAgICAgICAgICAgICAgICAgIG1fYmxvY2tz
VG9Db3B5LmFwcGVuZChibG9jayk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIEFTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENvbGxlY3Rpb24pOwotICAg
ICAgICAgICAgICAgIFdURjo6Y29weVRvVmVjdG9yKG1fc3RvcmFnZVNwYWNlLm1fYmxvY2tTZXQs
IG1fYmxvY2tzVG9Db3B5KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fY29weUluZGV4
ID0gMDsKKyAgICAgICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBFZGVuQ29sbGVjdGlv
bikgeworICAgICAgICAgICAgLy8gUmVzZXQgdGhlIHZlY3RvciB0byBiZSBlbXB0eSwgYnV0IGRv
bid0IHRocm93IGF3YXkgdGhlIGJhY2tpbmcgc3RvcmUuCisgICAgICAgICAgICBtX2Jsb2Nrc1Rv
Q29weS5zaHJpbmsoMCk7CisgICAgICAgICAgICBmb3IgKENvcGllZEJsb2NrKiBibG9jayA9IG1f
c3RvcmFnZVNwYWNlLm1fbmV3R2VuLmZyb21TcGFjZS0+aGVhZCgpOyBibG9jazsgYmxvY2sgPSBi
bG9jay0+bmV4dCgpKQorICAgICAgICAgICAgICAgIG1fYmxvY2tzVG9Db3B5LmFwcGVuZChibG9j
ayk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQobV9vcGVyYXRpb25JblBy
b2dyZXNzID09IEZ1bGxDb2xsZWN0aW9uKTsKKyAgICAgICAgICAgIFdURjo6Y29weVRvVmVjdG9y
KG1fc3RvcmFnZVNwYWNlLm1fYmxvY2tTZXQsIG1fYmxvY2tzVG9Db3B5KTsKICAgICAgICAgfQog
CisgICAgICAgIFBhcmFsbGVsVmVjdG9ySXRlcmF0b3I8VmVjdG9yPENvcGllZEJsb2NrKj4+IGl0
ZXJhdG9yKAorICAgICAgICAgICAgbV9ibG9ja3NUb0NvcHksIHNfYmxvY2tGcmFnbWVudExlbmd0
aCk7CisKKyAgICAgICAgLy8gTm90ZSB0aGF0IGl0J3Mgc2FmZSB0byB1c2UgdGhlIFsmXSBjYXB0
dXJlIGxpc3QgaGVyZSwgZXZlbiB0aG91Z2ggd2UncmUgY3JlYXRpbmcgYSB0YXNrCisgICAgICAg
IC8vIHRoYXQgb3RoZXIgdGhyZWFkcyBydW4uIFRoYXQncyBiZWNhdXNlIGFmdGVyIHJ1bkZ1bmN0
aW9uSW5QYXJhbGxlbCgpIHJldHVybnMsIHRoZSB0YXNrCisgICAgICAgIC8vIHdlIGhhdmUgY3Jl
YXRlZCBpcyBub3QgZ29pbmcgdG8gYmUgcnVubmluZyBhbnltb3JlLiBIZW5jZSwgZXZlcnl0aGlu
ZyBvbiB0aGUgc3RhY2sgaGVyZQorICAgICAgICAvLyBvdXRsaXZlcyB0aGUgdGFzay4KICAgICAg
ICAgbV9oZWxwZXJDbGllbnQucnVuRnVuY3Rpb25JblBhcmFsbGVsKAotICAgICAgICAgICAgW3Ro
aXNdICgpIHsKKyAgICAgICAgICAgIFsmXSAoKSB7CiAgICAgICAgICAgICAgICAgQ29weVZpc2l0
b3IgY29weVZpc2l0b3IoKnRoaXMpOwotICAgICAgICAgICAgICAgIGNvcHlWaXNpdG9yLnN0YXJ0
Q29weWluZygpOwotICAgICAgICAgICAgICAgIGNvcHlWaXNpdG9yLmNvcHlGcm9tU2hhcmVkKCk7
Ci0gICAgICAgICAgICAgICAgY29weVZpc2l0b3IuZG9uZUNvcHlpbmcoKTsKLSAgICAgICAgICAg
ICAgICBXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeUZvclRoaXNUaHJlYWQoKTsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpdGVyYXRvci5pdGVyYXRlKAorICAgICAg
ICAgICAgICAgICAgICBbJl0gKENvcGllZEJsb2NrKiBibG9jaykgeworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFibG9jay0+aGFzV29ya0xpc3QoKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgICAgIENvcHlXb3JrTGlzdCYgd29ya0xpc3QgPSBibG9jay0+d29ya0xpc3QoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAoQ29weVdvcmtsaXN0SXRlbSBpdGVtIDogd29ya0xp
c3QpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS50b2tlbigpID09IEJ1
dHRlcmZseUNvcHlUb2tlbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09i
amVjdDo6Y29weUJhY2tpbmdTdG9yZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGl0ZW0uY2VsbCgpLCBjb3B5VmlzaXRvciwgQnV0dGVyZmx5Q29weVRva2VuKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGl0ZW0uY2VsbCgpLT5tZXRob2RUYWJsZSgpLT5jb3B5QmFja2luZ1N0b3Jl
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmNlbGwoKSwgY29weVZpc2l0
b3IsIGl0ZW0udG9rZW4oKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghYmxvY2stPmxp
dmVCeXRlcygpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RvcmFnZVNwYWNlLnJlY3lj
bGVFdmFjdWF0ZWRCbG9jayhibG9jaywgbV9vcGVyYXRpb25JblByb2dyZXNzKTsKKyAgICAgICAg
ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICB9CiAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxOTAzMDIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0Niw4ICszNDYsNiBAQCBw
cml2YXRlOgogICAgIHNpemVfdCB0aHJlYWRCeXRlc0NvcGllZCgpOwogICAgIHNpemVfdCB0aHJl
YWREdXBTdHJpbmdzKCk7CiAKLSAgICB2b2lkIGdldE5leHRCbG9ja3NUb0NvcHkoc2l6ZV90Jiwg
c2l6ZV90Jik7Ci0KICAgICBjb25zdCBIZWFwVHlwZSBtX2hlYXBUeXBlOwogICAgIGNvbnN0IHNp
emVfdCBtX3JhbVNpemU7CiAgICAgY29uc3Qgc2l6ZV90IG1fbWluQnl0ZXNQZXJDeWNsZTsKQEAg
LTQzNyw5ICs0MzUsNyBAQCBwcml2YXRlOgogICAgIExvY2sgbV9vcGFxdWVSb290c011dGV4Owog
ICAgIEhhc2hTZXQ8dm9pZCo+IG1fb3BhcXVlUm9vdHM7CiAKLSAgICBMb2NrIG1fY29weUxvY2s7
CiAgICAgVmVjdG9yPENvcGllZEJsb2NrKj4gbV9ibG9ja3NUb0NvcHk7Ci0gICAgc2l6ZV90IG1f
Y29weUluZGV4IHsgMCB9OwogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc19ibG9ja0ZyYWdtZW50
TGVuZ3RoID0gMzI7CiAKICAgICBMaXN0YWJsZUhhbmRsZXI8V2Vha1JlZmVyZW5jZUhhcnZlc3Rl
cj46Okxpc3QgbV93ZWFrUmVmZXJlbmNlSGFydmVzdGVyczsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAkocmV2aXNpb24gMTkwMzAyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzI2LDE0
ICszMjYsNiBAQCBpbmxpbmUgdm9pZCBIZWFwOjp1bnJlZ2lzdGVyV2Vha0dDTWFwKHZvCiAgICAg
bV93ZWFrR0NNYXBzLnJlbW92ZSh3ZWFrR0NNYXApOwogfQogICAgIAotaW5saW5lIHZvaWQgSGVh
cDo6Z2V0TmV4dEJsb2Nrc1RvQ29weShzaXplX3QmIHN0YXJ0LCBzaXplX3QmIGVuZCkKLXsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2NvcHlMb2NrKTsKLSAgICBzdGFydCA9IG1fY29weUluZGV4
OwotICAgIGVuZCA9IHN0ZDo6bWluKG1fYmxvY2tzVG9Db3B5LnNpemUoKSwgbV9jb3B5SW5kZXgg
KyBzX2Jsb2NrRnJhZ21lbnRMZW5ndGgpOwotICAgIG1fY29weUluZGV4ID0gZW5kOwotfQotCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEhlYXBJbmxpbmVzX2gKSW5kZXg6IFNvdXJj
ZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxOTAzMDIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDIxIEBACisyMDE1LTA5LTI3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+
CisKKyAgICAgICAgR0MgY29weSBwaGFzZSBzcGFucyB0b28gbWFueSBmaWxlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NTg2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXh0cmFjdCB0aGUgbG9hZCBi
YWxhbmNpbmcgYWxnb3JpdGhtIHVzZWQgYnkgdGhlIEdDJ3MgY29weSBwaGFzZSBpbnRvIGEgcmV1
c2FibGUgdGVtcGxhdGUuCisgICAgICAgIFRoZSBHQyBjb3B5IHBoYXNlIG5vdyB1c2VzIHRoaXMu
CisKKyAgICAgICAgKiBXVEYudmN4cHJvai9XVEYudmN4cHJvajoKKyAgICAgICAgKiBXVEYudmN4
cHJvai9XVEYudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYv
UGFyYWxsZWxWZWN0b3JJdGVyYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6UGFyYWxsZWxW
ZWN0b3JJdGVyYXRvcjo6UGFyYWxsZWxWZWN0b3JJdGVyYXRvcik6CisgICAgICAgIChXVEY6OlBh
cmFsbGVsVmVjdG9ySXRlcmF0b3I6Oml0ZXJhdGUpOgorCiAyMDE1LTA5LTI2ICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IFdpbmRvd3Mg
YnVpbGQgYnkgYWRkaW5nIFdURl9FWFBPUlRfUFJJVkFURSBpbiB2YXJpb3VzIHBsYWNlcy4KSW5k
ZXg6IFNvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvagkocmV2aXNpb24gMTkwMzAyKQorKysgU291
cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjUyLDYg
KzI1Miw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcUGFyYWxsZWxKb2JzR2Vu
ZXJpYy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFBhcmFsbGVsSm9ic0xp
YmRpc3BhdGNoLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcUGFyYWxsZWxK
b2JzT3Blbk1QLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcUGFyYWxsZWxW
ZWN0b3JJdGVyYXRvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFBhcmtp
bmdMb3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxQYXNzUmVmUHRyLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcUGxhdGZvcm0uaCIgLz4KSW5kZXg6
IFNvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE5
MDMwMikKKysrIFNvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVycwkod29y
a2luZyBjb3B5KQpAQCAtNTY1LDYgKzU2NSw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llx3dGZcUGFyYWxsZWxKb2JzT3Blbk1QLmgiPgogICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4K
ICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxQYXJhbGxl
bFZlY3Rvckl0ZXJhdG9yLmgiPgorICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4KKyAgICA8L0Ns
SW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxQYXNzUmVmUHRyLmgiPgog
ICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTkwMzAyKQorKysg
U291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtNDksNiArNDksNyBAQAogCQkwRkU0NDc5QzFCN0FBQTAzMDA5NDk4RUIgLyogV29yZExvY2su
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNDQ3
OUExQjdBQUEwMzAwOTQ5OEVCIC8qIFdvcmRMb2NrLmNwcCAqLzsgfTsKIAkJMEZFNDQ3OUQxQjdB
QUEwMzAwOTQ5OEVCIC8qIFdvcmRMb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkU0NDc5QjFCN0FBQTAzMDA5NDk4RUIgLyogV29yZExvY2suaCAq
LzsgfTsKIAkJMEZFQjNEQ0YxQkI1RDY4NDAwOUQ3QUFEIC8qIFNoYXJlZFRhc2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUIzRENFMUJCNUQ2ODQw
MDlEN0FBRCAvKiBTaGFyZWRUYXNrLmggKi87IH07CisJCTBGRUIzREQxMUJCNzM2NkIwMDlEN0FB
RCAvKiBQYXJhbGxlbFZlY3Rvckl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVCM0REMDFCQjczNjZCMDA5RDdBQUQgLyogUGFyYWxsZWxW
ZWN0b3JJdGVyYXRvci5oICovOyB9OwogCQkwRkVENjdCNjFCMjJENEQ4MDA2NkNFMTUgLyogVGlu
eVB0clNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZFRDY3QjUxQjIyRDREODAwNjZDRTE1IC8qIFRpbnlQdHJTZXQuaCAqLzsgfTsKIAkJMEZGRjE5
REMxQkIzMzRFQjAwODg2RDkxIC8qIFBhcmFsbGVsSGVscGVyUG9vbC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGMTlEQTFCQjMzNEVCMDA4ODZE
OTEgLyogUGFyYWxsZWxIZWxwZXJQb29sLmNwcCAqLzsgfTsKIAkJMEZGRjE5REQxQkIzMzRFQjAw
ODg2RDkxIC8qIFBhcmFsbGVsSGVscGVyUG9vbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRjE5REIxQkIzMzRFQjAwODg2RDkxIC8qIFBhcmFsbGVs
SGVscGVyUG9vbC5oICovOyB9OwpAQCAtMzQxLDYgKzM0Miw3IEBACiAJCTBGRTQ0NzlBMUI3QUFB
MDMwMDk0OThFQiAvKiBXb3JkTG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXb3JkTG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTQ0
NzlCMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXb3JkTG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVC
M0RDRTFCQjVENjg0MDA5RDdBQUQgLyogU2hhcmVkVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaGFyZWRUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGRUIzREQwMUJCNzM2NkIwMDlEN0FBRCAvKiBQYXJhbGxlbFZlY3Rvckl0ZXJhdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhcmFsbGVsVmVjdG9ySXRlcmF0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFRDY3QjUxQjIyRDREODAwNjZDRTE1IC8q
IFRpbnlQdHJTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGlueVB0clNl
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZGMTlEQTFCQjMzNEVCMDA4ODZE
OTEgLyogUGFyYWxsZWxIZWxwZXJQb29sLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBhcmFsbGVsSGVscGVyUG9vbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGRkYxOURCMUJCMzM0RUIwMDg4NkQ5MSAvKiBQYXJhbGxlbEhlbHBlclBvb2wuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyYWxsZWxIZWxwZXJQb29sLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MzAsNiArODMyLDcgQEAKIAkJCQkwRkZGMTlE
QjFCQjMzNEVCMDA4ODZEOTEgLyogUGFyYWxsZWxIZWxwZXJQb29sLmggKi8sCiAJCQkJQThBNDcy
RTYxNTFBODI1QjAwNDEyM0ZGIC8qIFBhcmFsbGVsSm9icy5oICovLAogCQkJCUE4QTQ3MkU5MTUx
QTgyNUIwMDQxMjNGRiAvKiBQYXJhbGxlbEpvYnNMaWJkaXNwYXRjaC5oICovLAorCQkJCTBGRUIz
REQwMUJCNzM2NkIwMDlEN0FBRCAvKiBQYXJhbGxlbFZlY3Rvckl0ZXJhdG9yLmggKi8sCiAJCQkJ
MEY4MjRBNjQxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuY3BwICovLAogCQkJCTBGODI0
QTY1MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmggKi8sCiAJCQkJQThBNDcyRUQxNTFB
ODI1QjAwNDEyM0ZGIC8qIFBhc3NSZWZQdHIuaCAqLywKQEAgLTEwODUsNiArMTA4OCw3IEBACiAJ
CQkJMEZCMTRFMTkxODBGQTIxODAwOUI2QjREIC8qIEJhZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZCMTRFMUIxODEwRTFEQzAwOUI2QjREIC8qIEJhZ1RvSGFzaE1hcC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODEzNDAxMzkxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEZFQjNERDExQkI3MzY2QjAwOUQ3QUFEIC8qIFBhcmFsbGVsVmVjdG9ySXRlcmF0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0E5MTUxQTgyNUIwMDQxMjNGRiAvKiBiaWdudW0t
ZHRvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQUIxNTFBODI1QjAwNDEyM0ZGIC8qIGJp
Z251bS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRjE5REQxQkIzMzRFQjAwODg2RDkxIC8qIFBh
cmFsbGVsSGVscGVyUG9vbC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dAkocmV2aXNpb24gMTkwMzAyKQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTYwLDEwICs2MCwxMiBAQCBzZXQoV1RGX0hFQURFUlMKICAgICBQYWdl
QWxsb2NhdGlvbi5oCiAgICAgUGFnZUJsb2NrLmgKICAgICBQYWdlUmVzZXJ2YXRpb24uaAorICAg
IFBhcmFsbGVsSGVscGVyUG9vbC5oCiAgICAgUGFyYWxsZWxKb2JzLmgKICAgICBQYXJhbGxlbEpv
YnNHZW5lcmljLmgKICAgICBQYXJhbGxlbEpvYnNMaWJkaXNwYXRjaC5oCiAgICAgUGFyYWxsZWxK
b2JzT3Blbk1QLmgKKyAgICBQYXJhbGxlbFZlY3Rvckl0ZXJhdG9yLmgKICAgICBQYXJraW5nTG90
LmgKICAgICBQYXNzUmVmUHRyLmgKICAgICBQbGF0Zm9ybS5oCkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9QYXJhbGxlbFZlY3Rvckl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
UGFyYWxsZWxWZWN0b3JJdGVyYXRvci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93dGYv
UGFyYWxsZWxWZWN0b3JJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQ
YXJhbGxlbFZlY3Rvckl0ZXJhdG9yX2gKKyNkZWZpbmUgUGFyYWxsZWxWZWN0b3JJdGVyYXRvcl9o
CisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Cisj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBWZWN0b3JUeXBlPgorY2xhc3MgUGFyYWxsZWxWZWN0b3JJdGVyYXRvciB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFyYWxsZWxWZWN0b3JJdGVyYXRvcik7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgUGFyYWxsZWxWZWN0b3JJdGVyYXRv
cihWZWN0b3JUeXBlJiB2ZWN0b3IsIHNpemVfdCBzaGFyZFNpemUpCisgICAgICAgIDogbV92ZWN0
b3IodmVjdG9yKQorICAgICAgICAsIG1fc2hhcmRTaXplKHNoYXJkU2l6ZSkKKyAgICB7CisgICAg
fQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgaXRlcmF0ZShjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAgZm9yICg7
OykgeworICAgICAgICAgICAgc2l6ZV90IGJlZ2luOworICAgICAgICAgICAgc2l6ZV90IGVuZDsK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2sp
OworICAgICAgICAgICAgICAgIGJlZ2luID0gbV9uZXh0OworICAgICAgICAgICAgICAgIGlmIChi
ZWdpbiA9PSBtX3ZlY3Rvci5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICBpZiAobV92ZWN0b3Iuc2l6ZSgpIC0gYmVnaW4gPCBtX3NoYXJkU2l6ZSkK
KyAgICAgICAgICAgICAgICAgICAgZW5kID0gbV92ZWN0b3Iuc2l6ZSgpOworICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZW5kID0gYmVnaW4gKyBtX3NoYXJkU2l6ZTsK
KyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChlbmQgPD0gbV92ZWN0b3Iuc2l6ZSgpKTsK
KyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChiZWdpbiA8IGVuZCk7CisgICAgICAgICAg
ICAgICAgbV9uZXh0ID0gZW5kOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gYmVnaW47IGkgPCBlbmQ7ICsraSkKKyAgICAgICAgICAgICAgICBmdW5jdG9yKG1f
dmVjdG9yW2ldKTsKKyAgICAgICAgfQorICAgIH0KK3ByaXZhdGU6CisgICAgVmVjdG9yVHlwZSYg
bV92ZWN0b3I7CisgICAgTG9jayBtX2xvY2s7CisgICAgc2l6ZV90IG1fc2hhcmRTaXplOworICAg
IHNpemVfdCBtX25leHQgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcg
V1RGOjpQYXJhbGxlbFZlY3Rvckl0ZXJhdG9yOworCisjZW5kaWYgLy8gUGFyYWxsZWxWZWN0b3JJ
dGVyYXRvcl9oCisK
</data>
<flag name="review"
          id="287221"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>