<?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>149220</bug_id>
          
          <creation_ts>2015-09-16 10:07:42 -0700</creation_ts>
          <short_desc>JavaScriptCore should discard baseline code after some time</short_desc>
          <delta_ts>2015-09-18 04:42:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>149341</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1126376</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-09-16 10:07:42 -0700</bug_when>
    <thetext>JavaScriptCore should discard baseline code after some time</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126379</commentid>
    <comment_count>1</comment_count>
      <attachid>261317</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-09-16 10:20:05 -0700</bug_when>
    <thetext>Created attachment 261317
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126383</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-09-16 10:20:53 -0700</bug_when>
    <thetext>Seems performance neutral.

~&gt; sleep 20; run-jsc-benchmarks Base:/Volumes/Big/ggaren/OpenSource/WebKitBuild/Release/jsc Patch:/Volumes/Big/ggaren/OpenSource/WebKitBuildPatch/Release/jsc
Warning: could not identify checkout location for Patch
Warning: refusing to run JSBench because not all VMs are DumpRenderTree or WebKitTestRunner.
Warning: refusing to run DSPJS because not all VMs are DumpRenderTree or WebKitTestRunner.
3892/3892                                                                                       
Generating benchmark report at /Volumes/Big/ggaren/Base_Patch_SunSpiderLongSpiderV8SpiderOctaneKrakenJSRegressAsmBenchCompressionBench_Geoffrey-Garens-Mac-Pro_20150915_2359_report.txt
And raw data at /Volumes/Big/ggaren/Base_Patch_SunSpiderLongSpiderV8SpiderOctaneKrakenJSRegressAsmBenchCompressionBench_Geoffrey-Garens-Mac-Pro_20150915_2359.json

Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on Geoffrey-Garens-Mac-Pro (MacPro6,1).

VMs tested:
&quot;Base&quot; at /Volumes/Big/ggaren/OpenSource/WebKitBuild/Release/jsc (r189741)
&quot;Patch&quot; at /Volumes/Big/ggaren/OpenSource/WebKitBuildPatch/Release/jsc

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

                                                           Base                     Patch                                       
SunSpider:
   3d-cube                                            6.5603+-0.3894            6.4139+-0.1927          might be 1.0228x faster
   3d-morph                                           6.4872+-0.6904            6.2409+-0.0957          might be 1.0395x faster
   3d-raytrace                                        7.3541+-0.7708            7.2534+-0.2803          might be 1.0139x faster
   access-binary-trees                                2.5805+-0.3312            2.5168+-0.0461          might be 1.0253x faster
   access-fannkuch                                    6.6228+-0.1532     ?      6.7097+-0.6813        ? might be 1.0131x slower
   access-nbody                                       3.3103+-0.1136            3.2226+-0.1272          might be 1.0272x faster
   access-nsieve                                      3.7620+-0.0606     ?      3.8248+-0.1307        ? might be 1.0167x slower
   bitops-3bit-bits-in-byte                           1.5037+-0.0298     ?      1.5457+-0.0849        ? might be 1.0279x slower
   bitops-bits-in-byte                                3.8218+-0.0676     ?      3.8362+-0.0737        ?
   bitops-bitwise-and                                 2.3657+-0.0363     ?      2.4307+-0.0564        ? might be 1.0275x slower
   bitops-nsieve-bits                                 3.4626+-0.1031     !      3.6457+-0.0131        ! definitely 1.0529x slower
   controlflow-recursive                              3.0403+-0.2234            2.8785+-0.1383          might be 1.0562x faster
   crypto-aes                                         5.0170+-0.0225     !      5.2024+-0.1269        ! definitely 1.0370x slower
   crypto-md5                                         3.1704+-0.1790            3.0761+-0.1488          might be 1.0307x faster
   crypto-sha1                                        3.0629+-0.1430            2.9616+-0.0640          might be 1.0342x faster
   date-format-tofte                                 10.0912+-0.2154     ?     10.8346+-0.7257        ? might be 1.0737x slower
   date-format-xparb                                  5.8612+-0.4406            5.8294+-0.0919        
   math-cordic                                        3.6912+-0.2265            3.5688+-0.1828          might be 1.0343x faster
   math-partial-sums                                  6.2147+-0.2342            6.1755+-0.3651        
   math-spectral-norm                                 2.3663+-0.0528     ?      2.3981+-0.1295        ? might be 1.0134x slower
   regexp-dna                                         7.5562+-0.1805            7.5475+-0.2346        
   string-base64                                      5.5637+-0.5075            5.3541+-0.1776          might be 1.0391x faster
   string-fasta                                       6.9385+-0.0915            6.9122+-0.1136        
   string-tagcloud                                    9.6252+-0.4637     ?      9.7869+-0.5223        ? might be 1.0168x slower
   string-unpack-code                                21.3167+-0.2894           21.0056+-0.4787          might be 1.0148x faster
   string-validate-input                              5.1380+-0.2240     ?      5.2619+-0.2492        ? might be 1.0241x slower

   &lt;arithmetic&gt;                                       5.6340+-0.0435            5.6321+-0.0518          might be 1.0003x faster

                                                           Base                     Patch                                       
LongSpider:
   3d-cube                                          939.7841+-12.5076         939.3315+-22.2898       
   3d-morph                                        1624.4495+-2.6792     ?   1626.9637+-5.6262        ?
   3d-raytrace                                      741.8020+-6.5224          740.5963+-17.6069       
   access-binary-trees                             1010.8120+-5.9944     ?   1011.6047+-3.5397        ?
   access-fannkuch                                  356.0345+-11.2057         346.3792+-11.3684         might be 1.0279x faster
   access-nbody                                     623.5544+-1.3081          623.2225+-1.9568        
   access-nsieve                                    458.7300+-3.8396          456.6512+-6.5089        
   bitops-3bit-bits-in-byte                          41.6187+-0.4052     ?     41.8928+-0.2887        ?
   bitops-bits-in-byte                               92.2961+-2.1921     ?     93.3606+-1.8503        ? might be 1.0115x slower
   bitops-nsieve-bits                               459.4717+-3.8056          458.8168+-5.1771        
   controlflow-recursive                            501.1620+-2.3375     ?    502.8552+-3.2525        ?
   crypto-aes                                       685.1367+-4.0588          684.0010+-7.5649        
   crypto-md5                                       551.4175+-42.4130         539.4528+-1.9418          might be 1.0222x faster
   crypto-sha1                                      756.2400+-6.3094     ?    759.5553+-2.8698        ?
   date-format-tofte                                773.6315+-21.2127    ?    791.2377+-12.2896       ? might be 1.0228x slower
   date-format-xparb                                847.0171+-55.5367         841.8094+-39.8569       
   hash-map                                         187.4117+-2.2797     ?    187.5757+-1.3145        ?
   math-cordic                                      563.0038+-1.4128          562.8652+-2.0366        
   math-partial-sums                                628.4641+-5.3690     ?    631.0867+-3.8700        ?
   math-spectral-norm                               600.0810+-6.3299     ?    602.4261+-5.6054        ?
   string-base64                                    422.1178+-4.5700          418.5012+-1.2900        
   string-fasta                                     426.2481+-5.9042          423.2271+-4.5535        
   string-tagcloud                                  207.5378+-1.9748     ?    208.4220+-1.1923        ?

   &lt;geometric&gt;                                      469.9353+-3.8542          469.5864+-1.3258          might be 1.0007x faster

                                                           Base                     Patch                                       
V8Spider:
   crypto                                            58.2842+-1.6672           57.8063+-0.6676        
   deltablue                                         80.6270+-5.0350           79.3740+-2.4385          might be 1.0158x faster
   earley-boyer                                      48.4796+-0.5609     ?     48.4865+-0.2761        ?
   raytrace                                          33.9642+-0.6506           33.2551+-0.4022          might be 1.0213x faster
   regexp                                            77.7988+-0.9274     ?     78.0112+-0.9568        ?
   richards                                          66.1256+-0.6609           65.9355+-0.5367        
   splay                                             39.1680+-1.6157           38.8192+-0.8243        

   &lt;geometric&gt;                                       55.1799+-0.5398           54.7618+-0.2904          might be 1.0076x faster

                                                           Base                     Patch                                       
Octane:
   encrypt                                           0.23311+-0.00589          0.23059+-0.00341         might be 1.0109x faster
   decrypt                                           3.89551+-0.00691    ?     3.91439+-0.06953       ?
   deltablue                                x2       0.20393+-0.01503    ?     0.21233+-0.01642       ? might be 1.0412x slower
   earley                                            0.38272+-0.00213          0.38105+-0.00272       
   boyer                                             5.57586+-0.04072    ?     5.58646+-0.04983       ?
   navier-stokes                            x2       5.44539+-0.02936          5.44528+-0.01798       
   raytrace                                 x2       1.14271+-0.01533    ?     1.14844+-0.01658       ?
   richards                                 x2       0.12944+-0.00262    ?     0.13058+-0.00096       ?
   splay                                    x2       0.38025+-0.00464          0.37619+-0.00666         might be 1.0108x faster
   regexp                                   x2      28.73626+-0.10840    ?    28.87414+-0.27187       ?
   pdfjs                                    x2      44.89580+-0.32702         44.89320+-0.22547       
   mandreel                                 x2      51.40183+-0.32379         51.17590+-0.36480       
   gbemu                                    x2      51.15650+-3.14372    ?    52.91884+-6.41383       ? might be 1.0344x slower
   closure                                           0.77491+-0.00232    ?     0.77511+-0.00337       ?
   jquery                                            9.70526+-0.08665    ?     9.71806+-0.11101       ?
   box2d                                    x2      13.50478+-0.07451         13.46200+-0.09191       
   zlib                                     x2     430.84829+-33.08330   ?   439.65063+-1.16567       ? might be 1.0204x slower
   typescript                               x2     870.05603+-5.35669    ?   873.27429+-17.40847      ?

   &lt;geometric&gt;                                       6.93024+-0.04537    ?     6.97376+-0.03862       ? might be 1.0063x slower

                                                           Base                     Patch                                       
Kraken:
   ai-astar                                          289.689+-6.848            284.817+-3.374           might be 1.0171x faster
   audio-beat-detection                               62.773+-1.479      ?      63.393+-3.948         ?
   audio-dft                                         112.557+-1.971            112.456+-2.503         
   audio-fft                                          42.840+-0.470             42.655+-0.366         
   audio-oscillator                                   75.745+-2.536             74.362+-0.522           might be 1.0186x faster
   imaging-darkroom                                   73.274+-1.360      ?      76.021+-10.253        ? might be 1.0375x slower
   imaging-desaturate                                 65.269+-0.757      ?      65.438+-1.065         ?
   imaging-gaussian-blur                             110.618+-7.622            110.242+-1.901         
   json-parse-financial                               48.703+-1.267      ?      49.049+-0.291         ?
   json-stringify-tinderbox                           29.129+-0.281      ?      29.329+-0.844         ?
   stanford-crypto-aes                                48.568+-1.203             48.284+-0.777         
   stanford-crypto-ccm                                46.413+-0.544      ?      46.611+-1.711         ?
   stanford-crypto-pbkdf2                            107.535+-0.505      ?     107.542+-1.153         ?
   stanford-crypto-sha256-iterative                   44.032+-0.077      ?      44.048+-1.345         ?

   &lt;arithmetic&gt;                                       82.653+-1.146             82.446+-1.140           might be 1.0025x faster

                                                           Base                     Patch                                       
JSRegress:
   abc-forward-loop-equal                            48.4385+-1.0004           47.9706+-0.6203        
   abc-postfix-backward-loop                         47.7814+-0.5351           47.6727+-0.2708        
   abc-simple-backward-loop                          47.8793+-0.1934     ^     47.4250+-0.1500        ^ definitely 1.0096x faster
   abc-simple-forward-loop                           48.3625+-2.6234           47.9471+-0.8028        
   abc-skippy-loop                                   32.7526+-0.6131           32.6213+-0.3847        
   abs-boolean                                        2.9535+-0.0738     ?      2.9558+-0.0451        ?
   adapt-to-double-divide                            16.7516+-0.3247           16.5004+-0.1174          might be 1.0152x faster
   aliased-arguments-getbyval                         1.4655+-0.1056            1.4310+-0.0590          might be 1.0241x faster
   allocate-big-object                                2.7367+-0.1155            2.7336+-0.2112        
   arguments-named-and-reflective                    11.1603+-0.2202           11.0572+-0.6253        
   arguments-out-of-bounds                           12.3165+-0.5936     ?     12.7600+-1.1690        ? might be 1.0360x slower
   arguments-strict-mode                             10.0324+-0.4771            9.7510+-0.2766          might be 1.0289x faster
   arguments                                          8.8114+-0.3651            8.6701+-0.4558          might be 1.0163x faster
   arity-mismatch-inlining                            1.1770+-0.0156            1.1503+-0.0453          might be 1.0232x faster
   array-access-polymorphic-structure                 6.5560+-0.0938     ?      6.9245+-1.0111        ? might be 1.0562x slower
   array-nonarray-polymorhpic-access                 29.9655+-0.5710     ?     30.3783+-0.6087        ? might be 1.0138x slower
   array-prototype-every                             87.5136+-1.0632     ?     91.4833+-6.9981        ? might be 1.0454x slower
   array-prototype-forEach                           85.0555+-0.0747     !     88.6065+-1.4573        ! definitely 1.0417x slower
   array-prototype-map                               96.0403+-7.5117           94.0826+-1.8978          might be 1.0208x faster
   array-prototype-reduce                            82.8670+-0.5863     ?     84.0671+-1.3332        ? might be 1.0145x slower
   array-prototype-reduceRight                       82.7802+-1.2492     ?     90.2417+-11.2722       ? might be 1.0901x slower
   array-prototype-some                              87.5215+-1.4737     ?     88.8808+-0.8430        ? might be 1.0155x slower
   array-splice-contiguous                           27.1020+-0.8588     ?     27.5464+-0.7195        ? might be 1.0164x slower
   array-with-double-add                              4.4654+-0.0596            4.3904+-0.0888          might be 1.0171x faster
   array-with-double-increment                        3.5830+-0.1110            3.5472+-0.0641          might be 1.0101x faster
   array-with-double-mul-add                          5.5158+-0.3232            5.3306+-0.0621          might be 1.0348x faster
   array-with-double-sum                              3.5504+-0.0262     ?      3.5916+-0.1303        ? might be 1.0116x slower
   array-with-int32-add-sub                           7.4265+-0.2709            7.3253+-0.1491          might be 1.0138x faster
   array-with-int32-or-double-sum                     3.6985+-0.1078     ?      3.7272+-0.0976        ?
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     32.1441+-0.4292     ?     32.1750+-0.7064        ?
   ArrayBuffer-DataView-alloc-long-lived             13.5419+-0.5111           13.4531+-0.1861        
   ArrayBuffer-Int32Array-byteOffset                  4.2041+-0.3557            4.1539+-0.1202          might be 1.0121x faster
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     39.4155+-0.6788     ?     39.6042+-1.2325        ?
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     22.9980+-0.6329           22.4125+-0.0920          might be 1.0261x faster
   ArrayBuffer-Int8Array-alloc-long-lived            13.6879+-0.3550     ?     14.0687+-0.5706        ? might be 1.0278x slower
   ArrayBuffer-Int8Array-alloc                       10.9440+-1.1452           10.4605+-0.1112          might be 1.0462x faster
   arrowfunction-call                                12.2424+-0.0874           12.1793+-0.3027        
   asmjs_bool_bug                                     8.3790+-0.1161     ?      8.5815+-0.5673        ? might be 1.0242x slower
   assign-custom-setter-polymorphic                   3.3345+-0.0533            3.3073+-0.0263        
   assign-custom-setter                               4.6690+-0.1437            4.6430+-0.1026        
   basic-set                                         10.1022+-0.4411           10.0158+-0.1593        
   big-int-mul                                        4.3154+-0.2435            4.3023+-0.1957        
   boolean-test                                       3.4933+-0.1439     ?      3.5458+-0.2384        ? might be 1.0150x slower
   branch-fold                                        4.2195+-0.0767            4.1855+-0.0218        
   branch-on-string-as-boolean                       18.2888+-0.4853     ?     18.4279+-0.3908        ?
   by-val-generic                                     2.8409+-0.1627            2.7807+-0.0394          might be 1.0217x faster
   call-spread-apply                                 31.2122+-0.5765     ?     31.3067+-0.9259        ?
   call-spread-call                                  25.1936+-0.8043           24.9936+-0.3568        
   captured-assignments                               0.6902+-0.0724            0.6761+-0.0666          might be 1.0208x faster
   cast-int-to-double                                 5.9118+-0.1842     ?      5.9763+-0.3079        ? might be 1.0109x slower
   cell-argument                                      7.2664+-0.3513     ?      7.4520+-0.5276        ? might be 1.0255x slower
   cfg-simplify                                       3.1397+-0.0853            3.1320+-0.1266        
   chain-getter-access                                8.5065+-0.3362     ?      8.5401+-0.7673        ?
   cmpeq-obj-to-obj-other                            11.5084+-0.4295           11.5025+-0.1754        
   constant-test                                      5.3563+-0.0780     ?      5.4814+-0.2116        ? might be 1.0234x slower
   create-lots-of-functions                          11.4005+-0.1727           11.2442+-0.2577          might be 1.0139x faster
   cse-new-array-buffer                               2.5917+-0.0200     ?      2.6629+-0.0801        ? might be 1.0275x slower
   cse-new-array                                      2.7243+-0.0723     ?      2.7746+-0.2248        ? might be 1.0185x slower
   DataView-custom-properties                        39.1183+-1.3141           38.1703+-1.4718          might be 1.0248x faster
   delay-tear-off-arguments-strictmode               14.2700+-0.5223           14.2575+-0.3649        
   deltablue-varargs                                225.6832+-9.6355     ?    241.3152+-20.2026       ? might be 1.0693x slower
   destructuring-arguments                          194.0278+-12.1833         190.3033+-1.2482          might be 1.0196x faster
   destructuring-parameters-overridden-by-function   
                                                      0.7049+-0.0443     ?      0.7219+-0.0609        ? might be 1.0242x slower
   destructuring-swap                                 5.6330+-0.3935            5.5632+-0.0977          might be 1.0125x faster
   direct-arguments-getbyval                          1.5109+-0.0760            1.4261+-0.1127          might be 1.0594x faster
   div-boolean-double                                 5.6097+-0.0607     ?      5.8747+-0.3835        ? might be 1.0472x slower
   div-boolean                                        8.3243+-0.0922            8.3233+-0.0917        
   double-get-by-val-out-of-bounds                    4.9123+-0.1674            4.7969+-0.1003          might be 1.0241x faster
   double-pollution-getbyval                          9.5291+-0.4897     ?      9.6265+-0.2729        ? might be 1.0102x slower
   double-pollution-putbyoffset                       4.5397+-0.0863     ?      4.5850+-0.0651        ?
   double-real-use                                   30.5219+-0.2282     ?     30.5300+-0.2791        ?
   double-to-int32-typed-array-no-inline              2.8080+-0.0930            2.7819+-0.1870        
   double-to-int32-typed-array                        2.5417+-0.0709            2.4838+-0.0225          might be 1.0233x faster
   double-to-uint32-typed-array-no-inline             2.7941+-0.0302     !      2.8806+-0.0404        ! definitely 1.0310x slower
   double-to-uint32-typed-array                       2.5236+-0.0402     ?      2.5583+-0.1419        ? might be 1.0138x slower
   elidable-new-object-dag                           39.6432+-0.6352     ?     40.0974+-1.0421        ? might be 1.0115x slower
   elidable-new-object-roflcopter                    41.2698+-1.6198           40.9259+-1.4380        
   elidable-new-object-then-call                     32.6513+-1.4065     ?     32.7830+-1.4655        ?
   elidable-new-object-tree                          44.1001+-2.2981           43.7822+-0.8057        
   empty-string-plus-int                              5.6047+-0.5302     ?      6.0330+-1.8855        ? might be 1.0764x slower
   emscripten-cube2hash                              40.5524+-1.1455           40.5468+-0.5237        
   exit-length-on-plain-object                       14.2370+-0.2269     ?     14.3899+-0.4669        ? might be 1.0107x slower
   external-arguments-getbyval                        1.5688+-0.1803            1.5364+-0.1499          might be 1.0211x faster
   external-arguments-putbyval                        2.7455+-0.1109            2.6012+-0.0796          might be 1.0555x faster
   fixed-typed-array-storage-var-index                1.5784+-0.0223     ?      1.5940+-0.0336        ?
   fixed-typed-array-storage                          1.2090+-0.0203            1.2055+-0.0592        
   Float32Array-matrix-mult                           5.0745+-0.2028            4.9938+-0.0921          might be 1.0162x faster
   Float32Array-to-Float64Array-set                  54.6872+-0.6227     !     57.8745+-0.5846        ! definitely 1.0583x slower
   Float64Array-alloc-long-lived                     87.4615+-1.0273     ?     87.5657+-2.1573        ?
   Float64Array-to-Int16Array-set                    70.9818+-0.8323     !     73.4004+-0.5106        ! definitely 1.0341x slower
   fold-double-to-int                                14.7247+-0.1762           14.7180+-0.3810        
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     10.6169+-0.4836     ?     10.6803+-1.0978        ?
   fold-get-by-id-to-multi-get-by-offset              9.4269+-0.5454            9.3851+-0.4437        
   fold-multi-get-by-offset-to-get-by-offset   
                                                      7.8975+-0.5509     ?      7.9695+-0.5291        ?
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      9.1089+-0.6722            8.9977+-0.2517          might be 1.0124x faster
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                     10.3375+-0.8193     ?     10.4849+-0.1288        ? might be 1.0143x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                      6.4623+-0.3723            6.2089+-0.0832          might be 1.0408x faster
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     12.9352+-0.9996           12.8314+-1.4967        
   fold-put-by-id-to-multi-put-by-offset             11.1688+-0.7609           11.1128+-0.6648        
   fold-put-by-val-with-string-to-multi-put-by-offset   
                                                     11.4228+-0.8501     ?     12.1550+-0.3101        ? might be 1.0641x slower
   fold-put-by-val-with-symbol-to-multi-put-by-offset   
                                                     12.0649+-0.7237           11.7993+-0.9112          might be 1.0225x faster
   fold-put-structure                                 5.6920+-0.1091     ?      5.9481+-0.6281        ? might be 1.0450x slower
   for-of-iterate-array-entries                      12.8428+-0.3743     ?     13.0099+-0.6217        ? might be 1.0130x slower
   for-of-iterate-array-keys                          4.3323+-0.4770            4.0525+-0.1044          might be 1.0691x faster
   for-of-iterate-array-values                        4.1064+-0.3536     ?      4.1157+-0.2443        ?
   fround                                            17.2164+-0.6206     ?     17.3066+-0.9918        ?
   ftl-library-inlining-dataview                     68.2321+-0.9907     !     73.0328+-2.7124        ! definitely 1.0704x slower
   ftl-library-inlining                              85.3702+-6.7550     !    101.7737+-7.7224        ! definitely 1.1921x slower
   function-call                                     12.5651+-0.3200           12.4426+-0.1514        
   function-dot-apply                                 2.5968+-0.0251            2.5919+-0.0569        
   function-test                                      3.2151+-0.1027     ?      3.2335+-0.0647        ?
   function-with-eval                               110.6265+-0.2985     ?    113.4136+-6.3099        ? might be 1.0252x slower
   gcse-poly-get-less-obvious                        22.8365+-0.8640           22.7455+-0.2198        
   gcse-poly-get                                     27.0750+-4.2601           26.7712+-4.2581          might be 1.0113x faster
   gcse                                               4.7331+-0.1899     ?      4.8594+-0.5172        ? might be 1.0267x slower
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      3.0269+-0.1322            2.9584+-0.0252          might be 1.0231x faster
   get-by-id-bimorphic-check-structure-elimination   
                                                      6.5823+-0.3329            6.5514+-0.3677        
   get-by-id-chain-from-try-block                     6.0735+-0.2163     ?      6.0839+-0.1297        ?
   get-by-id-check-structure-elimination              5.5975+-0.2537            5.5656+-0.4807        
   get-by-id-proto-or-self                           18.6448+-3.0953           17.3132+-0.6520          might be 1.0769x faster
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      3.5404+-0.1842            3.4754+-0.0478          might be 1.0187x faster
   get-by-id-self-or-proto                           18.1985+-2.7713     ?     18.2787+-2.8901        ?
   get-by-val-out-of-bounds                           4.7210+-0.1550            4.6721+-0.0106          might be 1.0105x faster
   get-by-val-with-string-bimorphic-check-structure-elimination-simple   
                                                      3.2297+-0.1534            3.0924+-0.1255          might be 1.0444x faster
   get-by-val-with-string-bimorphic-check-structure-elimination   
                                                      7.5812+-0.0975     ?      7.5825+-0.1449        ?
   get-by-val-with-string-chain-from-try-block   
                                                      6.0710+-0.0904     ?      6.1572+-0.2256        ? might be 1.0142x slower
   get-by-val-with-string-check-structure-elimination   
                                                      6.5306+-0.2523            6.4643+-0.1619          might be 1.0103x faster
   get-by-val-with-string-proto-or-self              19.9135+-4.9856           19.2968+-5.7446          might be 1.0320x faster
   get-by-val-with-string-quadmorphic-check-structure-elimination-simple   
                                                      4.0856+-0.2684            3.9866+-0.1921          might be 1.0248x faster
   get-by-val-with-string-self-or-proto              18.5351+-2.7989     ?     18.7604+-3.4143        ? might be 1.0122x slower
   get-by-val-with-symbol-bimorphic-check-structure-elimination-simple   
                                                      4.1290+-0.4875            3.9883+-0.0945          might be 1.0353x faster
   get-by-val-with-symbol-bimorphic-check-structure-elimination   
                                                     14.6425+-0.2303     ?     14.6533+-0.0690        ?
   get-by-val-with-symbol-chain-from-try-block   
                                                      6.0824+-0.0775     ?      6.1449+-0.1674        ? might be 1.0103x slower
   get-by-val-with-symbol-check-structure-elimination   
                                                     13.9239+-0.1994           13.7551+-0.0959          might be 1.0123x faster
   get-by-val-with-symbol-proto-or-self              18.6318+-3.5699     ?     18.7146+-2.5463        ?
   get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple   
                                                      4.7333+-0.3114            4.7100+-0.2787        
   get-by-val-with-symbol-self-or-proto              17.7708+-0.6492     ?     18.6176+-2.6605        ? might be 1.0476x slower
   get_callee_monomorphic                             2.6976+-0.0471     ?      2.7240+-0.1908        ?
   get_callee_polymorphic                             3.7998+-0.1303     ?      3.8251+-0.2281        ?
   getter-no-activation                               5.5576+-0.1153            5.5035+-0.1976        
   getter-prototype                                  12.3812+-0.2393     ?     12.6035+-0.1623        ? might be 1.0180x slower
   getter-richards                                  108.2291+-2.8455          107.9364+-0.6112        
   getter                                             5.9042+-0.0994     ?      5.9968+-0.2472        ? might be 1.0157x slower
   global-object-access-with-mutating-structure   
                                                      6.0942+-0.3015     ?      6.1329+-0.2211        ?
   global-var-const-infer-fire-from-opt               1.0330+-0.1687            1.0047+-0.0282          might be 1.0282x faster
   global-var-const-infer                             1.0078+-0.1775     ?      1.0210+-0.2820        ? might be 1.0131x slower
   hard-overflow-check-equal                         53.1231+-0.2406           52.6664+-0.7344        
   hard-overflow-check                               52.6982+-0.5580           52.3494+-0.6300        
   HashMap-put-get-iterate-keys                      29.3154+-0.5712     ?     29.7616+-0.7079        ? might be 1.0152x slower
   HashMap-put-get-iterate                           29.3003+-0.3060     ?     29.4941+-0.4633        ?
   HashMap-string-put-get-iterate                    29.4344+-1.3981           28.4036+-0.8598          might be 1.0363x faster
   hoist-make-rope                                    9.5923+-1.7123            9.1724+-1.6214          might be 1.0458x faster
   hoist-poly-check-structure-effectful-loop   
                                                      5.5543+-0.0241     ?      5.5661+-0.1551        ?
   hoist-poly-check-structure                         3.9246+-0.0387     ?      3.9791+-0.1378        ? might be 1.0139x slower
   imul-double-only                                   6.6705+-0.4220            6.5861+-0.3112          might be 1.0128x faster
   imul-int-only                                      7.4628+-0.2407            7.4296+-0.3006        
   imul-mixed                                         6.2333+-0.9204     ?      6.4494+-0.8369        ? might be 1.0347x slower
   in-four-cases                                     22.0026+-0.2791     ?     22.1445+-0.7918        ?
   in-one-case-false                                 12.2765+-0.3877           11.9660+-0.2262          might be 1.0259x faster
   in-one-case-true                                  12.0403+-0.1916     ?     12.2253+-0.2184        ? might be 1.0154x slower
   in-two-cases                                      13.1022+-0.1742           13.0113+-0.2153        
   indexed-properties-in-objects                      3.3224+-0.1155     ?      4.0531+-2.0128        ? might be 1.2199x slower
   infer-closure-const-then-mov-no-inline             4.4571+-0.1659     ?      4.4952+-0.0924        ?
   infer-closure-const-then-mov                      18.2888+-0.4157           18.0943+-0.6814          might be 1.0108x faster
   infer-closure-const-then-put-to-scope-no-inline   
                                                     13.1842+-0.5077     ?     13.3171+-0.1392        ? might be 1.0101x slower
   infer-closure-const-then-put-to-scope             23.6145+-1.4146     ?     24.5007+-0.5680        ? might be 1.0375x slower
   infer-closure-const-then-reenter-no-inline   
                                                     59.4333+-0.1783     ?     59.4834+-0.2891        ?
   infer-closure-const-then-reenter                  23.7703+-0.4772     ?     24.7847+-1.0060        ? might be 1.0427x slower
   infer-constant-global-property                     3.9059+-0.1343            3.8763+-0.0484        
   infer-constant-property                            3.1425+-0.1200            2.9939+-0.0915          might be 1.0496x faster
   infer-one-time-closure-ten-vars                    9.7555+-0.6599            9.6486+-0.3119          might be 1.0111x faster
   infer-one-time-closure-two-vars                    9.1502+-0.4508     ?      9.2570+-0.0655        ? might be 1.0117x slower
   infer-one-time-closure                             8.9015+-0.2623     ?      9.1566+-0.5591        ? might be 1.0287x slower
   infer-one-time-deep-closure                       15.5337+-0.5211     ?     15.5502+-0.3177        ?
   inline-arguments-access                            4.3012+-0.1332            4.2126+-0.0711          might be 1.0210x faster
   inline-arguments-aliased-access                    4.2302+-0.0886     ?      4.3643+-0.2766        ? might be 1.0317x slower
   inline-arguments-local-escape                      4.2955+-0.0822            4.2557+-0.1938        
   inline-get-scoped-var                              5.5092+-0.1719     ?      5.5130+-0.0333        ?
   inlined-put-by-id-transition                      11.0466+-0.3856     ?     11.2091+-0.7156        ? might be 1.0147x slower
   inlined-put-by-val-with-string-transition   
                                                     49.7241+-0.8599           49.5027+-0.6879        
   inlined-put-by-val-with-symbol-transition   
                                                     49.6205+-0.8762           49.5827+-0.1764        
   int-or-other-abs-then-get-by-val                   5.2975+-0.3505     ?      5.3448+-0.2639        ?
   int-or-other-abs-zero-then-get-by-val             17.8883+-0.3787           17.8868+-0.5562        
   int-or-other-add-then-get-by-val                   4.7955+-0.1422            4.7725+-0.2178        
   int-or-other-add                                   5.8253+-0.2411     ?      5.8278+-0.1798        ?
   int-or-other-div-then-get-by-val                   4.4576+-0.0827     ?      4.5757+-0.1726        ? might be 1.0265x slower
   int-or-other-max-then-get-by-val                   4.7620+-0.1570     ?      4.8051+-0.3309        ?
   int-or-other-min-then-get-by-val                   4.5877+-0.1047     ?      4.6812+-0.1460        ? might be 1.0204x slower
   int-or-other-mod-then-get-by-val                   4.0624+-0.0934     ?      4.1971+-0.1286        ? might be 1.0332x slower
   int-or-other-mul-then-get-by-val                   4.3468+-0.0839            4.3175+-0.1514        
   int-or-other-neg-then-get-by-val                   4.9346+-0.2368            4.8440+-0.1689          might be 1.0187x faster
   int-or-other-neg-zero-then-get-by-val             17.6385+-0.3398     ?     18.3288+-1.5514        ? might be 1.0391x slower
   int-or-other-sub-then-get-by-val                   4.9095+-0.0498     ?      4.9121+-0.1112        ?
   int-or-other-sub                                   3.9445+-0.0954     ?      4.0037+-0.0641        ? might be 1.0150x slower
   int-overflow-local                                 4.9790+-0.1559            4.9189+-0.1659          might be 1.0122x faster
   Int16Array-alloc-long-lived                       53.8672+-1.0874     ?     53.9400+-1.0696        ?
   Int16Array-bubble-sort-with-byteLength            21.7380+-0.2041     !     23.3881+-0.7897        ! definitely 1.0759x slower
   Int16Array-bubble-sort                            21.0056+-0.7643     !     23.3905+-0.3603        ! definitely 1.1135x slower
   Int16Array-load-int-mul                            1.8010+-0.0349     ?      1.8264+-0.0887        ? might be 1.0141x slower
   Int16Array-to-Int32Array-set                      58.4927+-0.4355     ^     53.3931+-1.5254        ^ definitely 1.0955x faster
   Int32Array-alloc-large                            20.7781+-0.5200     ?     21.2060+-0.5504        ? might be 1.0206x slower
   Int32Array-alloc-long-lived                       64.6129+-1.4303     ?     65.4820+-1.4588        ? might be 1.0135x slower
   Int32Array-alloc                                   2.7354+-0.0396     ?      2.8274+-0.1967        ? might be 1.0336x slower
   Int32Array-Int8Array-view-alloc                    6.7985+-0.1783            6.6442+-0.0447          might be 1.0232x faster
   int52-spill                                        5.8488+-0.2469            5.8333+-0.1249        
   Int8Array-alloc-long-lived                        47.7485+-0.4171           47.7425+-0.9773        
   Int8Array-load-with-byteLength                     3.6738+-0.0676     ?      3.6968+-0.0672        ?
   Int8Array-load                                     3.7245+-0.0640            3.7166+-0.1518        
   integer-divide                                    12.6697+-1.1481           12.4412+-0.1683          might be 1.0184x faster
   integer-modulo                                     2.4300+-0.1035            2.3798+-0.0791          might be 1.0211x faster
   is-boolean-fold-tricky                             4.4983+-0.0679     ?      4.5880+-0.2703        ? might be 1.0199x slower
   is-boolean-fold                                    3.1512+-0.1145     ?      3.1630+-0.1106        ?
   is-function-fold-tricky-internal-function   
                                                     12.1884+-0.0773     !     12.7218+-0.1508        ! definitely 1.0438x slower
   is-function-fold-tricky                            4.6455+-0.1064     ?      4.7042+-0.2289        ? might be 1.0126x slower
   is-function-fold                                   3.1310+-0.0807            3.1069+-0.0884        
   is-number-fold-tricky                              4.5527+-0.1503            4.5072+-0.0733          might be 1.0101x faster
   is-number-fold                                     3.1432+-0.2023            3.0825+-0.1145          might be 1.0197x faster
   is-object-or-null-fold-functions                   3.2886+-0.1961            3.2835+-0.2464        
   is-object-or-null-fold-less-tricky                 4.6042+-0.1916            4.5967+-0.0856        
   is-object-or-null-fold-tricky                      6.3550+-0.1745            6.3372+-0.1004        
   is-object-or-null-fold                             3.2062+-0.2001            3.1422+-0.0611          might be 1.0204x faster
   is-object-or-null-trickier-function                4.7308+-0.1447            4.6909+-0.1330        
   is-object-or-null-trickier-internal-function   
                                                     12.6672+-0.2128     ?     12.8444+-0.1458        ? might be 1.0140x slower
   is-object-or-null-tricky-function                  4.6712+-0.0479     ?      4.8320+-0.2071        ? might be 1.0344x slower
   is-object-or-null-tricky-internal-function   
                                                      9.4990+-0.0386     !      9.6522+-0.1068        ! definitely 1.0161x slower
   is-string-fold-tricky                              4.5215+-0.0648            4.4880+-0.0849        
   is-string-fold                                     3.0846+-0.0405     ?      3.1155+-0.1024        ? might be 1.0100x slower
   is-undefined-fold-tricky                           3.7652+-0.1062            3.7279+-0.0408          might be 1.0100x faster
   is-undefined-fold                                  3.1428+-0.0810            3.0930+-0.0617          might be 1.0161x faster
   JSONP-negative-0                                   0.3908+-0.0331     ?      0.3962+-0.0536        ? might be 1.0137x slower
   large-int-captured                                 4.7368+-0.2116            4.7290+-0.1282        
   large-int-neg                                     16.0886+-0.4964     ?     16.1848+-0.5565        ?
   large-int                                         14.6126+-0.6274           14.5823+-0.5471        
   load-varargs-elimination                          24.8365+-0.7590     ?     24.9482+-0.3441        ?
   logical-not-weird-types                            3.8774+-0.0830            3.8004+-0.0746          might be 1.0203x faster
   logical-not                                        5.0198+-0.0935     ?      5.0700+-0.0805        ?
   lots-of-fields                                    12.2990+-0.9051           12.1740+-0.3648          might be 1.0103x faster
   make-indexed-storage                               3.4527+-0.1677            3.1910+-0.4418          might be 1.0820x faster
   make-rope-cse                                      3.9208+-0.4063            3.8467+-0.2791          might be 1.0192x faster
   marsaglia-larger-ints                             40.5367+-1.0501           39.8842+-0.9609          might be 1.0164x faster
   marsaglia-osr-entry                               22.1937+-0.6693     ?     22.4345+-0.5269        ? might be 1.0108x slower
   math-with-out-of-bounds-array-values              25.1246+-0.3113     ?     25.4286+-0.3949        ? might be 1.0121x slower
   max-boolean                                        2.7662+-0.1314     ?      2.8574+-0.1025        ? might be 1.0330x slower
   method-on-number                                  18.3702+-0.6622     ?     19.0658+-0.3204        ? might be 1.0379x slower
   min-boolean                                        2.8196+-0.0674            2.8105+-0.0745        
   minus-boolean-double                               3.5003+-0.2126     ?      3.5027+-0.0991        ?
   minus-boolean                                      2.6059+-0.0448     ?      2.6720+-0.1017        ? might be 1.0254x slower
   misc-strict-eq                                    32.9980+-2.1335     ?     33.9673+-1.0231        ? might be 1.0294x slower
   mod-boolean-double                                11.6408+-0.1082           11.4771+-0.1813          might be 1.0143x faster
   mod-boolean                                        8.3013+-0.0469     ?      8.3367+-0.1115        ?
   mul-boolean-double                                 4.0350+-0.1238     ?      4.0991+-0.1007        ? might be 1.0159x slower
   mul-boolean                                        3.1696+-0.1403     ?      3.2272+-0.1162        ? might be 1.0182x slower
   neg-boolean                                        3.6008+-0.2842            3.4625+-0.0613          might be 1.0400x faster
   negative-zero-divide                               0.5229+-0.0401     ?      0.5325+-0.0179        ? might be 1.0183x slower
   negative-zero-modulo                               0.5060+-0.0339     ?      0.5262+-0.0151        ? might be 1.0398x slower
   negative-zero-negate                               0.5250+-0.0258     ?      0.5654+-0.1424        ? might be 1.0770x slower
   nested-function-parsing                           55.2430+-1.1088     ^     53.0649+-0.9822        ^ definitely 1.0410x faster
   new-array-buffer-dead                            106.6616+-1.0923     ?    107.2172+-1.2857        ?
   new-array-buffer-push                              6.9430+-0.2282            6.9383+-0.2599        
   new-array-dead                                    17.1138+-2.5506           14.9310+-0.5942          might be 1.1462x faster
   new-array-push                                     4.0809+-0.1468            3.9954+-0.1363          might be 1.0214x faster
   no-inline-constructor                             37.6915+-0.3192           37.5555+-0.4416        
   number-test                                        3.4291+-0.0442     ?      3.4589+-0.2106        ?
   object-closure-call                                6.2952+-0.0631     ?      6.4268+-0.4713        ? might be 1.0209x slower
   object-get-own-property-symbols-on-large-array   
                                                      4.1165+-0.3802            4.0236+-0.0947          might be 1.0231x faster
   object-test                                        3.3125+-0.1854            3.1569+-0.0269          might be 1.0493x faster
   obvious-sink-pathology-taken                     124.5929+-0.5280     ?    125.0524+-0.6721        ?
   obvious-sink-pathology                           117.5924+-1.1300          117.2501+-1.2841        
   obviously-elidable-new-object                     29.8876+-4.3213           28.8047+-1.0649          might be 1.0376x faster
   plus-boolean-arith                                 2.8110+-0.0537     ?      2.8268+-0.0629        ?
   plus-boolean-double                                3.5860+-0.3055            3.5031+-0.1497          might be 1.0237x faster
   plus-boolean                                       2.6479+-0.0940     ?      2.6753+-0.0461        ? might be 1.0103x slower
   poly-chain-access-different-prototypes-simple   
                                                      4.4873+-0.1377            4.4645+-0.2329        
   poly-chain-access-different-prototypes             4.5804+-0.3487            4.5065+-0.1887          might be 1.0164x faster
   poly-chain-access-simpler                          4.4668+-0.1540     ?      4.5073+-0.2103        ?
   poly-chain-access                                  4.4688+-0.0546     ?      4.4688+-0.1069        ?
   poly-stricteq                                     65.2650+-0.3076     ^     64.1461+-0.7799        ^ definitely 1.0174x faster
   polymorphic-array-call                             1.6577+-0.1252     ?      1.7103+-0.0656        ? might be 1.0317x slower
   polymorphic-get-by-id                              3.7065+-0.0583            3.6837+-0.0312        
   polymorphic-put-by-id                             35.5652+-0.8091           34.9481+-0.3013          might be 1.0177x faster
   polymorphic-put-by-val-with-string                36.6308+-0.6685     ?     36.6917+-0.4215        ?
   polymorphic-put-by-val-with-symbol                36.7618+-0.1500     ?     37.0685+-0.8657        ?
   polymorphic-structure                             16.0342+-0.3852           15.7387+-0.2286          might be 1.0188x faster
   polyvariant-monomorphic-get-by-id                  9.2830+-0.2353     ?      9.3631+-0.7306        ?
   proto-getter-access                                8.3293+-0.3494     ?      8.6104+-0.3477        ? might be 1.0337x slower
   prototype-access-with-mutating-prototype           5.7056+-0.3315     ?      5.8647+-0.3423        ? might be 1.0279x slower
   put-by-id-replace-and-transition                   9.7278+-0.4674            9.6188+-0.1756          might be 1.0113x faster
   put-by-id-slightly-polymorphic                     3.1567+-0.1258            3.1434+-0.1298        
   put-by-id                                         12.6862+-0.3990     ?     12.8585+-0.4686        ? might be 1.0136x slower
   put-by-val-direct                                  0.5599+-0.0108     ?      0.5620+-0.0399        ?
   put-by-val-large-index-blank-indexing-type   
                                                      5.8495+-0.4444            5.5744+-0.0711          might be 1.0493x faster
   put-by-val-machine-int                             2.9068+-0.0831     ?      2.9146+-0.2627        ?
   put-by-val-with-string-replace-and-transition   
                                                     14.4487+-1.3228           13.9974+-0.3094          might be 1.0322x faster
   put-by-val-with-string-slightly-polymorphic   
                                                      4.1116+-0.1238     ?      4.2819+-0.6686        ? might be 1.0414x slower
   put-by-val-with-string                            13.2440+-0.2700     ?     13.3961+-0.5930        ? might be 1.0115x slower
   put-by-val-with-symbol-replace-and-transition   
                                                     15.0317+-0.5304           15.0240+-0.3735        
   put-by-val-with-symbol-slightly-polymorphic   
                                                      4.0765+-0.1027            4.0488+-0.1598        
   put-by-val-with-symbol                            13.2420+-0.0778     ?     13.3092+-0.5175        ?
   rare-osr-exit-on-local                            15.0540+-0.4468     ?     15.3038+-0.7393        ? might be 1.0166x slower
   register-pressure-from-osr                        23.0023+-0.5199           22.8749+-0.6278        
   repeat-multi-get-by-offset                        25.2162+-0.2813     ?     25.5941+-0.5384        ? might be 1.0150x slower
   setter-prototype                                   7.5236+-0.2044     ?      7.6197+-0.7912        ? might be 1.0128x slower
   setter                                             6.1618+-0.2152            6.1022+-0.0705        
   simple-activation-demo                            26.6537+-0.3498           26.5323+-0.2905        
   simple-getter-access                              11.2228+-0.2778           11.2035+-0.9184        
   simple-poly-call-nested                            7.9392+-0.1828     ?      8.0836+-0.2967        ? might be 1.0182x slower
   simple-poly-call                                   1.6960+-0.0452            1.6802+-0.0418        
   sin-boolean                                       18.2958+-0.1517           18.1707+-0.3601        
   singleton-scope                                   65.7258+-0.6610     ?     65.8408+-1.3708        ?
   sink-function                                     10.1452+-0.4399     ?     10.1749+-0.4044        ?
   sink-huge-activation                              16.2695+-0.3357     ?     16.4393+-0.5550        ? might be 1.0104x slower
   sinkable-new-object-dag                           64.5400+-8.6404     ?     67.0403+-1.7564        ? might be 1.0387x slower
   sinkable-new-object-taken                         49.2160+-0.4686           49.0378+-1.2202        
   sinkable-new-object                               36.5236+-0.3121           35.7310+-3.5649          might be 1.0222x faster
   slow-array-profile-convergence                     3.1595+-0.0540     ?      3.1852+-0.1749        ?
   slow-convergence                                   3.0402+-0.2725            3.0206+-0.0409        
   slow-ternaries                                    19.1595+-0.5126     ?     19.2150+-0.4439        ?
   sorting-benchmark                                 20.3738+-0.3620           19.9596+-0.1493          might be 1.0208x faster
   sparse-conditional                                 1.5189+-0.0424     ?      1.5336+-0.0508        ?
   splice-to-remove                                  15.7368+-0.9727           15.3914+-0.1856          might be 1.0224x faster
   string-char-code-at                               17.4854+-0.1670     ?     17.5253+-0.6077        ?
   string-concat-object                               2.3218+-0.1292     ?      2.3701+-0.2554        ? might be 1.0208x slower
   string-concat-pair-object                          2.1503+-0.0451     ?      2.1808+-0.0991        ? might be 1.0142x slower
   string-concat-pair-simple                         11.6962+-0.1592           11.5507+-0.1605          might be 1.0126x faster
   string-concat-simple                              12.0999+-0.3453           12.0681+-0.3436        
   string-cons-repeat                                 7.6475+-0.1501     ?      7.7543+-0.2845        ? might be 1.0140x slower
   string-cons-tower                                  8.0410+-0.6392            7.8224+-0.1678          might be 1.0279x faster
   string-equality                                   18.5906+-0.1861           18.4943+-0.3761        
   string-get-by-val-big-char                         7.2769+-0.1642     ?      7.3173+-0.1132        ?
   string-get-by-val-out-of-bounds-insane             3.8461+-0.0590     ?      3.9437+-0.1560        ? might be 1.0254x slower
   string-get-by-val-out-of-bounds                    5.5264+-0.2404     ?      5.5761+-0.2715        ?
   string-get-by-val                                  3.6389+-0.0782            3.6154+-0.2378        
   string-hash                                        2.3807+-0.0986     ?      2.4231+-0.1512        ? might be 1.0178x slower
   string-long-ident-equality                        15.4088+-0.2734           15.3124+-0.4170        
   string-out-of-bounds                              12.7224+-0.2176           12.5309+-0.2523          might be 1.0153x faster
   string-repeat-arith                               34.3174+-2.0218           33.6370+-0.6571          might be 1.0202x faster
   string-sub                                        70.6385+-0.7024           69.2532+-1.5395          might be 1.0200x faster
   string-test                                        3.2553+-0.0524     ?      3.3680+-0.1940        ? might be 1.0346x slower
   string-var-equality                               34.0363+-0.5889     ?     34.2701+-0.2880        ?
   structure-hoist-over-transitions                   2.6616+-0.0532     ?      2.7012+-0.1455        ? might be 1.0149x slower
   substring-concat-weird                            43.2397+-0.7307     ?     43.5719+-2.0647        ?
   substring-concat                                  46.9651+-0.6640           46.6758+-0.6189        
   substring                                         52.0125+-1.7227           51.3823+-0.6849          might be 1.0123x faster
   switch-char-constant                               3.0483+-0.0252     ?      3.0612+-0.0981        ?
   switch-char                                        6.9095+-0.2386            6.6958+-0.1456          might be 1.0319x faster
   switch-constant                                   11.7318+-1.1099           11.2012+-1.0747          might be 1.0474x faster
   switch-string-basic-big-var                       22.0388+-0.6644     ?     22.1835+-1.3931        ?
   switch-string-basic-big                           19.3062+-0.4938     ?     19.4990+-0.5091        ?
   switch-string-basic-var                           16.1727+-0.2487     ^     15.8146+-0.0661        ^ definitely 1.0226x faster
   switch-string-basic                               15.0780+-0.7544     ?     15.2633+-0.9609        ? might be 1.0123x slower
   switch-string-big-length-tower-var                21.2589+-0.4049     ?     21.2808+-0.5299        ?
   switch-string-length-tower-var                    15.8157+-0.4398     ?     15.8580+-0.4894        ?
   switch-string-length-tower                        13.3525+-0.3404           13.2632+-0.2221        
   switch-string-short                               13.4604+-0.2416           13.3218+-0.3024          might be 1.0104x faster
   switch                                            14.8997+-0.6189           14.7243+-0.4209          might be 1.0119x faster
   tear-off-arguments-simple                          3.4080+-0.0668            3.3970+-0.0567        
   tear-off-arguments                                 4.4963+-0.0434     ?      4.6071+-0.1783        ? might be 1.0247x slower
   temporal-structure                                14.0770+-0.2420     ?     14.3173+-0.4359        ? might be 1.0171x slower
   to-int32-boolean                                  14.1996+-0.3602     ?     14.2188+-0.1128        ?
   try-catch-get-by-val-cloned-arguments             15.8323+-1.2526           15.7555+-0.9223        
   try-catch-get-by-val-direct-arguments              7.0589+-0.1250     ?      7.1021+-0.1582        ?
   try-catch-get-by-val-scoped-arguments              8.2290+-0.2692     ?      8.4306+-0.7312        ? might be 1.0245x slower
   typed-array-get-set-by-val-profiling              30.4668+-1.2228           30.0059+-0.3001          might be 1.0154x faster
   undefined-property-access                        381.8022+-1.2962          380.6481+-1.1555        
   undefined-test                                     3.5732+-0.2782            3.3777+-0.0545          might be 1.0579x faster
   unprofiled-licm                                   20.0573+-0.4678           19.9504+-0.3552        
   varargs-call                                      14.8782+-0.2887           14.7787+-0.2599        
   varargs-construct-inline                          26.8729+-0.8669     ?     27.1504+-1.1152        ? might be 1.0103x slower
   varargs-construct                                 23.6143+-0.6193           23.4274+-0.4016        
   varargs-inline                                     9.4180+-0.1135     ?      9.6813+-0.4002        ? might be 1.0280x slower
   varargs-strict-mode                               10.6765+-0.1564     ?     10.9326+-0.4810        ? might be 1.0240x slower
   varargs                                           10.6583+-0.1391     ?     10.6970+-0.1308        ?
   weird-inlining-const-prop                          2.7065+-0.2282            2.6072+-0.0594          might be 1.0381x faster

   &lt;geometric&gt;                                        9.3874+-0.0404     ?      9.4019+-0.0213        ? might be 1.0015x slower

                                                           Base                     Patch                                       
AsmBench:
   bigfib.cpp                                       530.6050+-4.7992          528.9125+-4.5683        
   cray.c                                           455.1603+-1.6152          454.4106+-3.5056        
   dry.c                                            518.4598+-18.3419    ?    536.6057+-64.9103       ? might be 1.0350x slower
   FloatMM.c                                        764.1703+-3.1253     ?    764.9570+-2.0790        ?
   gcc-loops.cpp                                   4190.6880+-16.4163    ?   4200.0031+-35.8657       ?
   n-body.c                                        1044.6917+-2.9882     ?   1070.4802+-85.7897       ? might be 1.0247x slower
   Quicksort.c                                      443.0504+-12.8461    ?    445.0960+-11.5144       ?
   stepanov_container.cpp                          3920.7372+-44.1427        3905.0117+-39.4533       
   Towers.c                                         267.6252+-1.1371     ?    273.6849+-10.8426       ? might be 1.0226x slower

   &lt;geometric&gt;                                      833.7482+-2.6284     ?    840.9349+-8.1292        ? might be 1.0086x slower

                                                           Base                     Patch                                       
CompressionBench:
   huffman                                           66.2660+-0.7296     ?     67.2934+-2.0024        ? might be 1.0155x slower
   arithmetic-simple                                354.0092+-1.5137          353.5115+-2.5230        
   arithmetic-precise                               286.8986+-2.8166     ?    287.7123+-0.8299        ?
   arithmetic-complex-precise                       287.8580+-1.4566     ?    292.2696+-8.6534        ? might be 1.0153x slower
   arithmetic-precise-order-0                       364.5208+-3.1957          363.2017+-1.2000        
   arithmetic-precise-order-1                       339.4022+-1.2620          337.0495+-3.1161        
   arithmetic-precise-order-2                       400.4547+-3.7089     ?    401.1214+-4.8419        ?
   arithmetic-simple-order-1                        409.5321+-3.5236          406.4100+-3.1946        
   arithmetic-simple-order-2                        469.2952+-2.6152          468.1528+-2.1794        
   lz-string                                        316.1329+-8.0798     ?    333.2802+-29.8763       ? might be 1.0542x slower

   &lt;geometric&gt;                                      299.6219+-0.9096     ?    301.5640+-2.2076        ? might be 1.0065x slower

                                                           Base                     Patch                                       
Geomean of preferred means:
   &lt;scaled-result&gt;                                   61.1781+-0.0963     ?     61.2673+-0.1508        ? might be 1.0015x slower

=====
~&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126461</commentid>
    <comment_count>3</comment_count>
      <attachid>261317</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-09-16 14:16:57 -0700</bug_when>
    <thetext>Comment on attachment 261317
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126470</commentid>
    <comment_count>4</comment_count>
      <attachid>261317</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-09-16 14:37:21 -0700</bug_when>
    <thetext>Comment on attachment 261317
Patch

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

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:2345
&gt;      // their weak references go stale. So if a basline JIT CodeBlock gets

typo in &quot;basline&quot;.  Might as well fix it.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:-3109
&gt; -    RELEASE_ASSERT(JITCode::isOptimizingJIT(jitType()));
&gt; -    
&gt; -    if (Profiler::Compilation* compilation = jitCode()-&gt;dfgCommon()-&gt;compilation.get())
&gt; -        compilation-&gt;setJettisonReason(reason, detail);

If I&apos;m reading this code correctly, you&apos;re allowing jettison() to be called on baseline codeBlocks, yes?
If so, according to the source on ToT, CodeBlock::jettison() has all the interesting bits guarded under #if ENABLE(DFG_JIT).  Should the #if ENABLE(DFG_JIT) be removed now?
If so, something should be done about the &quot;if (DFG::shouldShowDisassembly())&quot; case above this.  Do we want to do the disassembly for jettisoning non-DFG codeBlocks as well?

Or am I reading this wrong?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126471</commentid>
    <comment_count>5</comment_count>
      <attachid>261317</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-09-16 14:39:33 -0700</bug_when>
    <thetext>Comment on attachment 261317
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:-3109
&gt;&gt; -        compilation-&gt;setJettisonReason(reason, detail);
&gt; 
&gt; If I&apos;m reading this code correctly, you&apos;re allowing jettison() to be called on baseline codeBlocks, yes?
&gt; If so, according to the source on ToT, CodeBlock::jettison() has all the interesting bits guarded under #if ENABLE(DFG_JIT).  Should the #if ENABLE(DFG_JIT) be removed now?
&gt; If so, something should be done about the &quot;if (DFG::shouldShowDisassembly())&quot; case above this.  Do we want to do the disassembly for jettisoning non-DFG codeBlocks as well?
&gt; 
&gt; Or am I reading this wrong?

Yeah, I think you&apos;re right about this -- I think this patch breaks the no DFG build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126532</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-09-16 17:28:46 -0700</bug_when>
    <thetext>Committed r189889: &lt;http://trac.webkit.org/changeset/189889&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261317</attachid>
            <date>2015-09-16 10:20:05 -0700</date>
            <delta_ts>2015-09-16 14:16:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149220-20150916101953.patch</filename>
            <type>text/plain</type>
            <size>23782</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg5ODY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBA
CisyMDE1LTA5LTE2ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgSmF2YVNjcmlwdENvcmUgc2hvdWxkIGRpc2NhcmQgYmFzZWxpbmUgY29kZSBhZnRlciBzb21l
IHRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
OTIyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgaXMgYSBiaXQgbW9yZSBjb21wbGljYXRlZCB0aGFuIGRpc2NhcmRpbmcgb3B0aW1pemVkIGNv
ZGUgYmVjYXVzZQorICAgICAgICB0aGUgZW5naW5lIHByZXZpb3VzbHkgYXNzdW1lZCB0aGF0IHdl
IHdvdWxkIG5ldmVyIGRpc2NhcmQgYmFzZWxpbmUgY29kZS4KKworICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKTogUmVj
b3JkIGNyZWF0aW9uIHRpbWUgKGFuZCBjb21wdXRlIHRpbWUgc2luY2UKKyAgICAgICAgY3JlYXRp
b24pIGluc3RlYWQgb2YgaW5zdGFsbCB0aW1lIGJlY2F1c2UgQ29kZUJsb2NrcyBjYW4gYmUgaW5z
dGFsbGVkCisgICAgICAgIG1vcmUgdGhhbiBvbmNlLCBhbmQgd2UgZG9uJ3Qgd2FudCB0byBoYXZl
IHRvIHdvcnJ5IGFib3V0IGVkZ2UgY2FzZXMKKyAgICAgICAgY3JlYXRlZCBieSBDb2RlQmxvY2tz
IHNlZW1pbmcgdG8gZ2V0IHlvdW5nZXIuCisKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2aXNp
dEFnZ3JlZ2F0ZSk6IEJlIGV4cGxpY2l0IGFib3V0IG9ubHkgZG9pbmcgdGhlIAorICAgICAgICB3
ZWFrIHJlZmVyZW5jZSBmaXhwb2ludCBmb3Igb3B0aW1pemVkIENvZGVCbG9ja3MuIFdlIHVzZWQg
dG8gYXZvaWQgdGhlCisgICAgICAgIGZpeHBvaW50IGZvciBiYXNlbGluZSBDb2RlQmxvY2tzIGlt
cGxpY2l0bHksIHNpbmNlIHRoZXkgd291bGQgYWx3YXlzCisgICAgICAgIHZpc2l0IHRoZW1zZWx2
ZXMgc3Ryb25nbHkgcmlnaHQgYXdheS4gQnV0IG5vdyBiYXNlbGluZSBDb2RlQmxvY2tzIG1pZ2h0
CisgICAgICAgIG5vdCB2aXNpdCB0aGVtc2VsdmVzIHN0cm9uZ2x5LCBzaW5jZSB0aGV5IG1pZ2h0
IGNob29zZSB0byBqZXR0aXNvbiBkdWUKKyAgICAgICAgdG8gb2xkIGFnZS4KKworICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OnNob3VsZFZpc2l0U3Ryb25nbHkpOiBBZGQgb2xkIGFnZSBhcyBhIHJl
YXNvbiBub3QgdG8KKyAgICAgICAgdmlzaXQgb3Vyc2VsdmVzIHN0cm9uZ2x5LCBzbyB0aGF0IGJh
c2VsaW5lIENvZGVCbG9ja3MgY2FuIGpldHRpc29uIGR1ZQorICAgICAgICB0byBvbGQgYWdlLgor
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2hvdWxkSmV0dGlzb25EdWVUb1dlYWtSZWZlcmVu
Y2UpOiBCZSBleHBsaWNpdCBhYm91dAorICAgICAgICBvbmx5IGpldHRpc29uaW5nIG9wdGltaXpl
ZCBDb2RlQmxvY2tzIGR1ZSB0byB3ZWFrIHJlZmVyZW5jZXMgc28gdGhhdCB3ZQorICAgICAgICBk
b24ndCBjb25mdXNlIG91cnNlbHZlcyBpbnRvIHRoaW5raW5nIHRoYXQgd2Ugd2lsbCBqZXR0aXNv
biBhIGJhc2VsaW5lCisgICAgICAgIENvZGVCbG9jayBkdWUgdG8gd2VhayByZWZlcmVuY2VzLgor
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2hvdWxkSmV0dGlzb25EdWVUb09sZEFnZSk6IFVw
ZGF0ZWQgdG8gdXNlIGNyZWF0aW9uIHRpbWUuCisKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2
aXNpdE9TUkV4aXRUYXJnZXRzKTogQ2xhcmlmeSBhIGNvbW1lbnQgYW5kIGFkZCBhbgorICAgICAg
ICBBU1NFUlQgdG8gaGVscCByZWNvcmQgc29tZSB0aGluZ3MgSSBkaXNjb3ZlcmVkIHdoaWxlIGRl
YnVnZ2luZy4KKworICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmpldHRpc29uKTogQWxsb3cgYSBi
YXNlbGluZSBDb2RlQmxvY2sgdG8gamV0dGlzb24uIERvbid0CisgICAgICAgIGFzc3VtZSB0aGF0
IHdlIGhhdmUgYW4gYWx0ZXJuYXRpdmUgb3IgYSBwcm9maWxlci4KKworICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6Omluc3RhbGwpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnJlbGVhc2VBbHRlcm5hdGl2ZSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2V0SW5zdGFsbFRpbWUpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRpbWVTaW5jZUluc3RhbGwpOiBEZWxldGVkLgorCisg
ICAgICAgICogZGZnL0RGR09TUkV4aXRQcmVwYXJhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6cHJlcGFyZUNvZGVPcmlnaW5Gb3JPU1JFeGl0KTogU2ltcGxpZmllZCB0aGUgY29tcHV0YXRp
b24gb2YKKyAgICAgICAgYmFzZWxpbmUgQ29kZUJsb2NrLgorCisgICAgICAgICogZGZnL0RGR1Bs
YW4uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBsYW46OmNoZWNrTGl2ZW5lc3NBbmRWaXNpdENo
aWxkcmVuKTogQmUgc3VyZSB0byBzdHJvbmdseQorICAgICAgICB2aXNpdCBvdXIgaW5saW5lIGNh
bGxmcmFtZXMgYmVjYXVzZSB3ZSBhc3N1bWUgdGhhdCBhbiBvcHRpbWl6ZWQgQ29kZUJsb2NrCisg
ICAgICAgIHdpbGwga2VlcCBpdHMgT1NSIGV4aXQgdGFyZ2V0cyBhbGl2ZSwgYnV0IHRoZSBDb2Rl
QmxvY2sgb2JqZWN0IHdvbid0IGJlCisgICAgICAgIGFibGUgdG8gbWFyayB0aGVtIGZvciBpdHNl
bGYgdW50aWwgY29tcGlsYXRpb24gaGFzIGNvbXBsZXRlZCAoc2luY2UgaXQKKyAgICAgICAgd29u
J3QgaGF2ZSBhIEpJVENvZGUgb2JqZWN0IHlldCkuCisKKyAgICAgICAgKiBkZmcvREZHVG9GVExE
ZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwOgorICAgICAgICAoSlNDOjpERkc6OlRvRlRM
RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpjb21waWxhdGlvbkRpZENvbXBsZXRlKToKKyAg
ICAgICAgVXBkYXRlZCBmb3IgaW50ZXJmYWNlIGNoYW5nZS4KKworICAgICAgICAqIGppdC9KSVRD
b2RlLmg6CisgICAgICAgIChKU0M6OkpJVENvZGU6OnRpbWVUb0xpdmUpOiBQcm92aWRlIGEgdGlt
ZSB0byBsaXZlIGZvciBpbnRlcnByZXRlciBhbmQKKyAgICAgICAgYmFzZWxpbmUgY29kZSwgc28g
dGhleSB3aWxsIGpldHRpc29uIHdoZW4gb2xkLiBVc2Ugc2Vjb25kcyBpbiBvdXIKKyAgICAgICAg
Y29kZSBzbyB0aGF0IHdlIGRvbid0IG5lZWQgY29tbWVudHMuIE1ha2UgREZHIDJYIGludGVycHJl
dGVyK2Jhc2VsaW5lLAorICAgICAgICBhbmQgRlRMIDJYIERGRytpbnRlcnByZXRlcitiYXNlbGlu
ZSwgYWxzbyBtYXRjaGluZyB0aGUgdGltZSB3ZSBhbGxvdAorICAgICAgICBiZWZvcmUgdGhyb3dp
bmcgYXdheSBhbGwgY29kZS4KKworICAgICAgICAqIGppdC9KSVRUb0RGR0RlZmVycmVkQ29tcGls
YXRpb25DYWxsYmFjay5jcHA6CisgICAgICAgIChKU0M6OkpJVFRvREZHRGVmZXJyZWRDb21waWxh
dGlvbkNhbGxiYWNrOjpjb21waWxhdGlvbkRpZENvbXBsZXRlKToKKyAgICAgICAgKiBsbGludC9M
TEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpqaXRDb21waWxlQW5kU2V0
SGV1cmlzdGljcyk6IFVwZGF0ZWQgZm9yIGludGVyZmFjZSBjaGFuZ2UuCisKKyAgICAgICAgKiBy
dW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpp
bnN0YWxsQ29kZSk6IEFsbG93IG91ciBjYWxsZXIgdG8gaW5zdGFsbCBudWxscHRyLAorICAgICAg
ICBzaW5jZSB3ZSBuZWVkIHRvIGRvIHRoaXMgd2hlbiBqZXR0aXNvbmluZyBhIGJhc2VsaW5lIENv
ZGVCbG9jay4gUmVxdWlyZQorICAgICAgICBvdXIgY2FsbGVyIHRvIHNwZWNpZnkgdGhlIGRldGFp
bHMgb2YgdGhlIGluc3RhbGxhdGlvbiBiZWNhdXNlIHdlIGNhbid0CisgICAgICAgIHJlbHkgb24g
YSBub24tbnVsbCBDb2RlQmxvY2sgaW4gb3JkZXIgdG8gY29tcHV0ZSB0aGVtLgorCisgICAgICAg
IChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0Zvcik6CisgICAgICAgIChKU0M6
OlNjcmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb25JbXBsKToKKyAgICAgICAgKiBy
dW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6cmVj
b3JkUGFyc2UpOiBVcGRhdGVkIGZvciBpbnRlcmZhY2UgY2hhbmdlLgorCisgICAgICAgICogcnVu
dGltZS9PcHRpb25zLmg6IFJlbmFtZWQgdGhlIENvZGVCbG9jayBsaXZlbmVzcyBvcHRpb24gc2lu
Y2UgaXQgbm93CisgICAgICAgIGNvbnRyb2xzIGJhc2VsaW5lIGFuZCBvcHRpbWl6ZWQgY29kZS4K
KwogMjAxNS0wOS0xNSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSb2xsb3V0IHIxODk3NzQgYW5kIDE4OTgxOC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxODk3NDEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTY1MSw2ICsxNjUxLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soQ29weVBhcnNlZEJsb2Nr
VGFnLAogICAgICwgbV9vc3JFeGl0Q291bnRlcigwKQogICAgICwgbV9vcHRpbWl6YXRpb25EZWxh
eUNvdW50ZXIoMCkKICAgICAsIG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoMCkKKyAgICAs
IG1fY3JlYXRpb25UaW1lKHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpKQogICAgICwg
bV9oYXNoKG90aGVyLm1faGFzaCkKICNpZiBFTkFCTEUoSklUKQogICAgICwgbV9jYXBhYmlsaXR5
TGV2ZWxTdGF0ZShERkc6OkNhcGFiaWxpdHlMZXZlbE5vdFNldCkKQEAgLTE3MDYsNiArMTcwNyw3
IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICAsIG1fb3Ny
RXhpdENvdW50ZXIoMCkKICAgICAsIG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKDApCiAgICAg
LCBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKDApCisgICAgLCBtX2NyZWF0aW9uVGltZShz
dGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKSkKICNpZiBFTkFCTEUoSklUKQogICAgICwg
bV9jYXBhYmlsaXR5TGV2ZWxTdGF0ZShERkc6OkNhcGFiaWxpdHlMZXZlbE5vdFNldCkKICNlbmRp
ZgpAQCAtMjE4Myw2ICsyMTg1LDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soV2ViQXNzZW1ibHlF
eGVjdXRhYgogICAgICwgbV9vc3JFeGl0Q291bnRlcigwKQogICAgICwgbV9vcHRpbWl6YXRpb25E
ZWxheUNvdW50ZXIoMCkKICAgICAsIG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoMCkKKyAg
ICAsIG1fY3JlYXRpb25UaW1lKHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpKQogI2lm
IEVOQUJMRShKSVQpCiAgICAgLCBtX2NhcGFiaWxpdHlMZXZlbFN0YXRlKERGRzo6Q2Fubm90Q29t
cGlsZSkKICNlbmRpZgpAQCAtMjMwNSw2ICsyMzA4LDkgQEAgdm9pZCBDb2RlQmxvY2s6OnZpc2l0
QWdncmVnYXRlKFNsb3RWaXNpdAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAorICAgIGlm
ICghSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpCisgICAgICAgIHJldHVybjsK
KwogICAgIC8vIFRoZXJlIGFyZSB0d28gdGhpbmdzIHRoYXQgd2UgdXNlIHdlYWsgcmVmZXJlbmNl
IGhhcnZlc3RlcnMgZm9yOiBERkcgZml4cG9pbnQgZm9yCiAgICAgLy8gamV0dGlzb25pbmcsIGFu
ZCB0cnlpbmcgdG8gZmluZCBzdHJ1Y3R1cmVzIHRoYXQgd291bGQgYmUgbGl2ZSBiYXNlZCBvbiBz
b21lCiAgICAgLy8gaW5saW5lIGNhY2hlLiBTbyBpdCBtYWtlcyBzZW5zZSB0byByZWdpc3RlciB0
aGVtIHJlZ2FyZGxlc3MuCkBAIC0yMzI0LDI3ICsyMzMwLDI0IEBAIHZvaWQgQ29kZUJsb2NrOjp2
aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXQKICAgICAKICAgICBwcm9wYWdhdGVUcmFuc2l0aW9ucyh2
aXNpdG9yKTsKICAgICBkZXRlcm1pbmVMaXZlbmVzcyh2aXNpdG9yKTsKLSNlbHNlIC8vIEVOQUJM
RShERkdfSklUKQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYgLy8g
RU5BQkxFKERGR19KSVQpCiB9CiAKIGJvb2wgQ29kZUJsb2NrOjpzaG91bGRWaXNpdFN0cm9uZ2x5
KCkKIHsKLSNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6Zm9yY2VDb2RlQmxv
Y2tMaXZlbmVzcygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChzaG91bGRKZXR0
aXNvbkR1ZVRvT2xkQWdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIC8vIEludGVy
cHJldGVyIGFuZCBCYXNlbGluZSBKSVQgQ29kZUJsb2NrcyBkb24ndCBuZWVkIHRvIGJlIGpldHRp
c29uZWQgd2hlbgogICAgIC8vIHRoZWlyIHdlYWsgcmVmZXJlbmNlcyBnbyBzdGFsZS4gU28gaWYg
YSBiYXNsaW5lIEpJVCBDb2RlQmxvY2sgZ2V0cwogICAgIC8vIHNjYW5uZWQsIHdlIGNhbiBhc3N1
bWUgdGhhdCB0aGlzIG1lYW5zIHRoYXQgaXQncyBsaXZlLgogICAgIGlmICghSklUQ29kZTo6aXNP
cHRpbWl6aW5nSklUKGppdFR5cGUoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYg
KE9wdGlvbnM6OmZvcmNlREZHQ29kZUJsb2NrTGl2ZW5lc3MoKSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KICAgICByZXR1cm4gZmFsc2U7Ci0jZWxzZQotICAgIHJldHVybiB0cnVlOwotI2VuZGlm
CiB9CiAKIGJvb2wgQ29kZUJsb2NrOjppc0tub3duVG9CZUxpdmVEdXJpbmdHQygpCkBAIC0yMzcy
LDYgKzIzNzUsOCBAQCBib29sIENvZGVCbG9jazo6aXNLbm93blRvQmVMaXZlRHVyaW5nR0MoCiAK
IGJvb2wgQ29kZUJsb2NrOjpzaG91bGRKZXR0aXNvbkR1ZVRvV2Vha1JlZmVyZW5jZSgpCiB7Cisg
ICAgaWYgKCFKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIHJldHVybiAhaXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKTsKIH0KIApA
QCAtMjM4MCwxMCArMjM4NSw3IEBAIGJvb2wgQ29kZUJsb2NrOjpzaG91bGRKZXR0aXNvbkR1ZVRv
T2xkQWcKICAgICBpZiAobV92aXNpdFN0cm9uZ2x5SGFzQmVlbkNhbGxlZC5sb2FkKHN0ZDo6bWVt
b3J5X29yZGVyX3JlbGF4ZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIUpJ
VENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBpZiAodGltZVNpbmNlSW5zdGFsbCgpIDwgSklUQ29kZTo6dGltZVRvTGl2ZShqaXRU
eXBlKCkpKQorICAgIGlmICh0aW1lU2luY2VDcmVhdGlvbigpIDwgSklUQ29kZTo6dGltZVRvTGl2
ZShqaXRUeXBlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTI3NzEsMTcgKzI3NzMsMjAgQEAgQ2FsbExpbmtJbmZvKiBDb2RlQmxvY2s6OmdldENhbGxM
aW5rSW5mbwogCiB2b2lkIENvZGVCbG9jazo6dmlzaXRPU1JFeGl0VGFyZ2V0cyhTbG90VmlzaXRv
ciYgdmlzaXRvcikKIHsKLSAgICAvLyBPU1IgZXhpdHMsIG9uY2UgY29tcGlsZWQsIGxpbmsgdGhl
bXNlbHZlcyBkaXJlY3RseSB0byB0aGVpciB0YXJnZXRzLgotICAgIC8vIFdlIG5lZWQgdG8ga2Vl
cCB0aG9zZSB0YXJnZXRzIGFsaXZlIGluIG9yZGVyIHRvIGtlZXAgT1NSIGV4aXQgZnJvbQotICAg
IC8vIGp1bXBpbmcgdG8gYW4gaW52YWxpZCBkZXN0aW5hdGlvbi4KKyAgICAvLyBXZSBzdHJvbmds
eSB2aXNpdCBPU1IgZXhpdHMgdGFyZ2V0cyBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gZGVhbCB3
aXRoCisgICAgLy8gdGhlIGNvbXBsZXhpdHkgb2YgZ2VuZXJhdGluZyBhbiBleGl0IHRhcmdldCBD
b2RlQmxvY2sgb24gZGVtYW5kIGFuZAorICAgIC8vIGd1YXJhbnRlZWluZyB0aGF0IGl0IG1hdGNo
ZXMgdGhlIGRldGFpbHMgb2YgdGhlIENvZGVCbG9jayB3ZSBjb21waWxlZAorICAgIC8vIHRoZSBP
U1IgZXhpdCBhZ2FpbnN0LgogCiAgICAgYWx0ZXJuYXRpdmUoKS0+dmlzaXRTdHJvbmdseSh2aXNp
dG9yKTsKIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIERGRzo6Q29tbW9uRGF0YSogZGZnQ29t
bW9uID0gbV9qaXRDb2RlLT5kZmdDb21tb24oKTsKICAgICBpZiAoZGZnQ29tbW9uLT5pbmxpbmVD
YWxsRnJhbWVzKSB7Ci0gICAgICAgIGZvciAoYXV0byogaW5saW5lQ2FsbEZyYW1lIDogKmRmZ0Nv
bW1vbi0+aW5saW5lQ2FsbEZyYW1lcykKKyAgICAgICAgZm9yIChhdXRvKiBpbmxpbmVDYWxsRnJh
bWUgOiAqZGZnQ29tbW9uLT5pbmxpbmVDYWxsRnJhbWVzKSB7CisgICAgICAgICAgICBBU1NFUlQo
aW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jaygpKTsKICAgICAgICAgICAgIGlubGlu
ZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2soKS0+dmlzaXRTdHJvbmdseSh2aXNpdG9yKTsK
KyAgICAgICAgfQogICAgIH0KICNlbmRpZgogfQpAQCAtMjk5OSwxMSArMzAwNCw2IEBAIHZvaWQg
Q29kZUJsb2NrOjpsaW5rSW5jb21pbmdDYWxsKEV4ZWNTdGEKICAgICBtX2luY29taW5nTExJbnRD
YWxscy5wdXNoKGluY29taW5nKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6Omluc3RhbGwoKQotewot
ICAgIG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5pbnN0YWxsQ29kZSh0aGlzKTsKLX0KLQogUGFz
c1JlZlB0cjxDb2RlQmxvY2s+IENvZGVCbG9jazo6bmV3UmVwbGFjZW1lbnQoKQogewogICAgIHJl
dHVybiBvd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+bmV3UmVwbGFjZW1lbnRDb2RlQmxvY2tGb3Io
c3BlY2lhbGl6YXRpb25LaW5kKCkpOwpAQCAtMzEwMywxMCArMzEwMyw2IEBAIHZvaWQgQ29kZUJs
b2NrOjpqZXR0aXNvbihQcm9maWxlcjo6SmV0dGkKICAgICB9CiAKICAgICBEZWZlckdDRm9yQVdo
aWxlIGRlZmVyR0MoKm1faGVhcCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoSklUQ29kZTo6aXNPcHRp
bWl6aW5nSklUKGppdFR5cGUoKSkpOwotICAgIAotICAgIGlmIChQcm9maWxlcjo6Q29tcGlsYXRp
b24qIGNvbXBpbGF0aW9uID0gaml0Q29kZSgpLT5kZmdDb21tb24oKS0+Y29tcGlsYXRpb24uZ2V0
KCkpCi0gICAgICAgIGNvbXBpbGF0aW9uLT5zZXRKZXR0aXNvblJlYXNvbihyZWFzb24sIGRldGFp
bCk7CiAgICAgCiAgICAgLy8gV2Ugd2FudCB0byBhY2NvbXBsaXNoIHR3byB0aGluZ3MgaGVyZToK
ICAgICAvLyAxKSBNYWtlIHN1cmUgdGhhdCBpZiB0aGlzIENvZGVCbG9jayBpcyBvbiB0aGUgc3Rh
Y2sgcmlnaHQgbm93LCB0aGVuIGlmIHdlIHJldHVybiB0byBpdApAQCAtMzExNCw2ICszMTEwLDkg
QEAgdm9pZCBDb2RlQmxvY2s6OmpldHRpc29uKFByb2ZpbGVyOjpKZXR0aQogICAgIC8vIDIpIE1h
a2Ugc3VyZSB0aGF0IGlmIHdlIGNhbGwgdGhlIG93bmVyIGV4ZWN1dGFibGUsIHRoZW4gd2Ugc2hv
dWxkbid0IGNhbGwgdGhpcyBDb2RlQmxvY2suCiAKICAgICBpZiAocmVhc29uICE9IFByb2ZpbGVy
OjpKZXR0aXNvbkR1ZVRvT2xkQWdlKSB7CisgICAgICAgIGlmIChQcm9maWxlcjo6Q29tcGlsYXRp
b24qIGNvbXBpbGF0aW9uID0gaml0Q29kZSgpLT5kZmdDb21tb24oKS0+Y29tcGlsYXRpb24uZ2V0
KCkpCisgICAgICAgICAgICBjb21waWxhdGlvbi0+c2V0SmV0dGlzb25SZWFzb24ocmVhc29uLCBk
ZXRhaWwpOworICAgICAgICAKICAgICAgICAgLy8gVGhpcyBhY2NvbXBsaXNoZXMgKDEpLCBhbmQg
ZG9lcyBpdHMgb3duIGJvb2sta2VlcGluZyBhYm91dCB3aGV0aGVyIGl0IGhhcyBhbHJlYWR5IGhh
cHBlbmVkLgogICAgICAgICBpZiAoIWppdENvZGUoKS0+ZGZnQ29tbW9uKCktPmludmFsaWRhdGUo
KSkgewogICAgICAgICAgICAgLy8gV2UndmUgYWxyZWFkeSBiZWVuIGludmFsaWRhdGVkLgpAQCAt
MzE0MCwxMiArMzEzOSwxNiBAQCB2b2lkIENvZGVCbG9jazo6amV0dGlzb24oUHJvZmlsZXI6Okpl
dHRpCiAgICAgICAgIC8vIGJsb2Nrcy4KICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhbHRl
cm5hdGl2ZSgpLT5vcHRpbWl6ZUFmdGVyV2FybVVwKCk7CisKKyAgICBpZiAoYWx0ZXJuYXRpdmUo
KSkKKyAgICAgICAgYWx0ZXJuYXRpdmUoKS0+b3B0aW1pemVBZnRlcldhcm1VcCgpOwogCiAgICAg
aWYgKHJlYXNvbiAhPSBQcm9maWxlcjo6SmV0dGlzb25EdWVUb09sZEFnZSkKICAgICAgICAgdGFs
bHlGcmVxdWVudEV4aXRTaXRlcygpOwogCi0gICAgYWx0ZXJuYXRpdmUoKS0+aW5zdGFsbCgpOwor
ICAgIG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5pbnN0YWxsQ29kZSgKKyAgICAgICAgbV9nbG9i
YWxPYmplY3QtPnZtKCksIGFsdGVybmF0aXZlKCksIGNvZGVUeXBlKCksIHNwZWNpYWxpemF0aW9u
S2luZCgpKTsKKwogICAgIGlmIChERkc6OnNob3VsZFNob3dEaXNhc3NlbWJseSgpKQogICAgICAg
ICBkYXRhTG9nKCIgICAgRGlkIGluc3RhbGwgYmFzZWxpbmUgdmVyc2lvbiBvZiAiLCAqdGhpcywg
IlxuIik7CiAjZWxzZSAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE4OTc0MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTI2
LDcgKzEyNiw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTnVtUGFy
YW1ldGVycygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb2RlQmxvY2ssIG1fbnVtUGFyYW1l
dGVycyk7IH0KIAogICAgIENvZGVCbG9jayogYWx0ZXJuYXRpdmUoKSB7IHJldHVybiBtX2FsdGVy
bmF0aXZlLmdldCgpOyB9Ci0gICAgUGFzc1JlZlB0cjxDb2RlQmxvY2s+IHJlbGVhc2VBbHRlcm5h
dGl2ZSgpIHsgcmV0dXJuIG1fYWx0ZXJuYXRpdmUucmVsZWFzZSgpOyB9CiAgICAgdm9pZCBzZXRB
bHRlcm5hdGl2ZShQYXNzUmVmUHRyPENvZGVCbG9jaz4gYWx0ZXJuYXRpdmUpIHsgbV9hbHRlcm5h
dGl2ZSA9IGFsdGVybmF0aXZlOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4g
dm9pZCBmb3JFYWNoUmVsYXRlZENvZGVCbG9jayhGdW5jdG9yJiYgZnVuY3RvcikKQEAgLTI2NSw5
ICsyNjQsNiBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50KCkgY29u
c3QgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnMuc2l6ZSgpOyB9CiAKLSAgICAvLyBFeGFjdGx5IGVx
dWl2YWxlbnQgdG8gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aW5zdGFsbENvZGUoY29k
ZUJsb2NrKTsKLSAgICB2b2lkIGluc3RhbGwoKTsKLSAgICAKICAgICAvLyBFeGFjdGx5IGVxdWl2
YWxlbnQgdG8gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+bmV3UmVwbGFjZW1lbnRDb2Rl
QmxvY2tGb3IoY29kZUJsb2NrLT5zcGVjaWFsaXphdGlvbktpbmQoKSkKICAgICBQYXNzUmVmUHRy
PENvZGVCbG9jaz4gbmV3UmVwbGFjZW1lbnQoKTsKICAgICAKQEAgLTgzNCw4ICs4MzAsNiBAQCBw
dWJsaWM6CiAgICAgdm9pZCB1cGRhdGVBbGxBcnJheVByZWRpY3Rpb25zKCk7CiAgICAgdm9pZCB1
cGRhdGVBbGxQcmVkaWN0aW9ucygpOwogCi0gICAgdm9pZCBzZXRJbnN0YWxsVGltZShzdGQ6OmNo
cm9ubzo6c3RlYWR5X2Nsb2NrOjp0aW1lX3BvaW50IGluc3RhbGxUaW1lKSB7IG1faW5zdGFsbFRp
bWUgPSBpbnN0YWxsVGltZTsgfQotCiAgICAgdW5zaWduZWQgZnJhbWVSZWdpc3RlckNvdW50KCk7
CiAgICAgaW50IHN0YWNrUG9pbnRlck9mZnNldCgpOwogCkBAIC05ODksMTAgKzk4MywxMCBAQCBw
cml2YXRlOgogICAgIHZvaWQgc3Ryb25nbHlWaXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9y
Jik7CiAgICAgdm9pZCB2aXNpdE9TUkV4aXRUYXJnZXRzKFNsb3RWaXNpdG9yJik7CiAKLSAgICBz
dGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVTaW5jZUluc3RhbGwoKQorICAgIHN0ZDo6Y2hy
b25vOjptaWxsaXNlY29uZHMgdGltZVNpbmNlQ3JlYXRpb24oKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+
KAotICAgICAgICAgICAgc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCkgLSBtX2luc3Rh
bGxUaW1lKTsKKyAgICAgICAgICAgIHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpIC0g
bV9jcmVhdGlvblRpbWUpOwogICAgIH0KIAogICAgIHZvaWQgY3JlYXRlUmFyZURhdGFJZk5lY2Vz
c2FyeSgpCkBAIC0xMDc3LDcgKzEwNzEsNyBAQCBwcml2YXRlOgogICAgIHVpbnQxNl90IG1fb3B0
aW1pemF0aW9uRGVsYXlDb3VudGVyOwogICAgIHVpbnQxNl90IG1fcmVvcHRpbWl6YXRpb25SZXRy
eUNvdW50ZXI7CiAKLSAgICBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjp0aW1lX3BvaW50IG1f
aW5zdGFsbFRpbWU7CisgICAgc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6dGltZV9wb2ludCBt
X2NyZWF0aW9uVGltZTsKIAogICAgIG11dGFibGUgQ29kZUJsb2NrSGFzaCBtX2hhc2g7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdFByZXBhcmF0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRQcmVwYXJh
dGlvbi5jcHAJKHJldmlzaW9uIDE4OTc0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdFByZXBhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTYgKzQyLDEz
IEBAIHZvaWQgcHJlcGFyZUNvZGVPcmlnaW5Gb3JPU1JFeGl0KEV4ZWNTdGEKICAgICBEZWZlckdD
IGRlZmVyR0Modm0uaGVhcCk7CiAgICAgCiAgICAgZm9yICg7IGNvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lOyBjb2RlT3JpZ2luID0gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmNhbGxlcikg
ewotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPQotICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJh
bWUtPmV4ZWN1dGFibGUuZ2V0KCkpOwotICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4
ZWN1dGFibGUtPmJhc2VsaW5lQ29kZUJsb2NrRm9yKAotICAgICAgICAgICAgY29kZU9yaWdpbi5p
bmxpbmVDYWxsRnJhbWUtPnNwZWNpYWxpemF0aW9uS2luZCgpKTsKLSAgICAgICAgCisgICAgICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmJhc2Vs
aW5lQ29kZUJsb2NrKCk7CiAgICAgICAgIGlmIChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKU0M6
OkpJVENvZGU6OkJhc2VsaW5lSklUKQogICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAg
QVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpTQzo6SklUQ29kZTo6SW50ZXJwcmV0ZXJU
aHVuayk7CiAgICAgICAgIEpJVDo6Y29tcGlsZSgmdm0sIGNvZGVCbG9jaywgSklUQ29tcGlsYXRp
b25NdXN0U3VjY2VlZCk7Ci0gICAgICAgIGNvZGVCbG9jay0+aW5zdGFsbCgpOworICAgICAgICBj
b2RlQmxvY2stPm93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5pbnN0YWxsQ29kZShjb2RlQmxvY2sp
OwogICAgIH0KIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCShy
ZXZpc2lvbiAxODk3NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MjYsNiArNjI2LDEzIEBAIHZvaWQgUGxhbjo6Y2hlY2tMaXZl
bmVzc0FuZFZpc2l0Q2hpbGRyZW4KICAgICBpZiAocHJvZmlsZWRERkdDb2RlQmxvY2spCiAgICAg
ICAgIHByb2ZpbGVkREZHQ29kZUJsb2NrLT52aXNpdFN0cm9uZ2x5KHZpc2l0b3IpOwogCisgICAg
aWYgKGlubGluZUNhbGxGcmFtZXMpIHsKKyAgICAgICAgZm9yIChhdXRvKiBpbmxpbmVDYWxsRnJh
bWUgOiAqaW5saW5lQ2FsbEZyYW1lcykgeworICAgICAgICAgICAgQVNTRVJUKGlubGluZUNhbGxG
cmFtZS0+YmFzZWxpbmVDb2RlQmxvY2soKSk7CisgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUt
PmJhc2VsaW5lQ29kZUJsb2NrKCktPnZpc2l0U3Ryb25nbHkodmlzaXRvcik7CisgICAgICAgIH0K
KyAgICB9CisKICAgICB3ZWFrUmVmZXJlbmNlcy52aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogICAg
IHRyYW5zaXRpb25zLnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1RvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RvRlRMRGVmZXJyZWRD
b21waWxhdGlvbkNhbGxiYWNrLmNwcAkocmV2aXNpb24gMTg5NzQxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdUb0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBUb0ZUTERlZmVycmVkQ29tcGlsYXRp
b25DYWxsYmFjazo6YwogICAgIH0KICAgICAKICAgICBpZiAocmVzdWx0ID09IENvbXBpbGF0aW9u
U3VjY2Vzc2Z1bCkKLSAgICAgICAgY29kZUJsb2NrLT5pbnN0YWxsKCk7CisgICAgICAgIGNvZGVC
bG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPmluc3RhbGxDb2RlKGNvZGVCbG9jayk7CiAg
ICAgCiAgICAgbV9kZmdDb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnKCktPnNldE9wdGltaXphdGlv
blRocmVzaG9sZEJhc2VkT25Db21waWxhdGlvblJlc3VsdCgKICAgICAgICAgbV9kZmdDb2RlQmxv
Y2suZ2V0KCksIHJlc3VsdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENv
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAko
cmV2aXNpb24gMTg5NzQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNSwxMCArMTI1LDIwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lVG9MaXZlKEpJVFR5cGUgaml0VHlwZSkKICAg
ICB7CiAgICAgICAgIHN3aXRjaCAoaml0VHlwZSkgeworICAgICAgICBjYXNlIEludGVycHJldGVy
VGh1bms6CisgICAgICAgICAgICByZXR1cm4gc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3Rk
OjpjaHJvbm86Om1pbGxpc2Vjb25kcz4oCisgICAgICAgICAgICAgICAgc3RkOjpjaHJvbm86OnNl
Y29uZHMoNSkpOworICAgICAgICBjYXNlIEJhc2VsaW5lSklUOgorICAgICAgICAgICAgLy8gRWZm
ZWN0aXZlbHkgMTAgYWRkaXRpb25hbCBzZWNvbmRzLCBzaW5jZSBCYXNlbGluZUpJVCBhbmQKKyAg
ICAgICAgICAgIC8vIEludGVycHJldGVyVGh1bmsgc2hhcmUgYSBDb2RlQmxvY2suCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pbGxp
c2Vjb25kcz4oCisgICAgICAgICAgICAgICAgc3RkOjpjaHJvbm86OnNlY29uZHMoMTUpKTsKICAg
ICAgICAgY2FzZSBERkdKSVQ6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpjaHJvbm86Om1pbGxp
c2Vjb25kcygxMDAwMCk7IC8vIDEwcworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Y2hyb25vOjpk
dXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KAorICAgICAgICAgICAgICAg
IHN0ZDo6Y2hyb25vOjpzZWNvbmRzKDIwKSk7CiAgICAgICAgIGNhc2UgRlRMSklUOgotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMoMTAwMDAwKTsgLy8gMTAwcwor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25v
OjptaWxsaXNlY29uZHM+KAorICAgICAgICAgICAgICAgIHN0ZDo6Y2hyb25vOjpzZWNvbmRzKDYw
KSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpjaHJvbm86Om1p
bGxpc2Vjb25kczo6bWF4KCk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9u
Q2FsbGJhY2suY3BwCShyZXZpc2lvbiAxODk3NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxi
YWNrCiAgICAgICAgIGRhdGFMb2coIk9wdGltaXppbmcgY29tcGlsYXRpb24gb2YgIiwgKmNvZGVC
bG9jaywgIiByZXN1bHQ6ICIsIHJlc3VsdCwgIlxuIik7CiAgICAgCiAgICAgaWYgKHJlc3VsdCA9
PSBDb21waWxhdGlvblN1Y2Nlc3NmdWwpCi0gICAgICAgIGNvZGVCbG9jay0+aW5zdGFsbCgpOwor
ICAgICAgICBjb2RlQmxvY2stPm93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5pbnN0YWxsQ29kZShj
b2RlQmxvY2spOwogICAgIAogICAgIGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKS0+c2V0T3B0aW1p
emF0aW9uVGhyZXNob2xkQmFzZWRPbkNvbXBpbGF0aW9uUmVzdWx0KHJlc3VsdCk7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2
aXNpb24gMTg5NzQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI0LDcgKzMyNCw3IEBAIGlubGluZSBib29sIGpp
dENvbXBpbGVBbmRTZXRIZXVyaXN0aWNzKEMKICAgICAgICAgY2FzZSBDb21waWxhdGlvblN1Y2Nl
c3NmdWw6CiAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQogICAgICAgICAg
ICAgICAgIGRhdGFMb2dGKCIgICAgSklUIGNvbXBpbGF0aW9uIHN1Y2Nlc3NmdWwuXG4iKTsKLSAg
ICAgICAgICAgIGNvZGVCbG9jay0+aW5zdGFsbCgpOworICAgICAgICAgICAgY29kZUJsb2NrLT5v
d25lclNjcmlwdEV4ZWN1dGFibGUoKS0+aW5zdGFsbENvZGUoY29kZUJsb2NrKTsKICAgICAgICAg
ICAgIGNvZGVCbG9jay0+aml0U29vbigpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmNwcAkocmV2aXNpb24gMTg5NzQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw0MSArMTE2LDE4IEBA
IHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGMKICAgICBzdGF0aWNfY2Fz
dDxTY3JpcHRFeGVjdXRhYmxlKj4oY2VsbCktPlNjcmlwdEV4ZWN1dGFibGU6On5TY3JpcHRFeGVj
dXRhYmxlKCk7CiB9CiAKLXZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6aW5zdGFsbENvZGUoQ29kZUJs
b2NrKiBnZW5lcmljQ29kZUJsb2NrKQordm9pZCBTY3JpcHRFeGVjdXRhYmxlOjppbnN0YWxsQ29k
ZShDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBpbnN0YWxsQ29kZSgqY29kZUJsb2NrLT52
bSgpLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+Y29kZVR5cGUoKSwgY29kZUJsb2NrLT5zcGVjaWFs
aXphdGlvbktpbmQoKSk7Cit9CisKK3ZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6aW5zdGFsbENvZGUo
Vk0mIHZtLCBDb2RlQmxvY2sqIGdlbmVyaWNDb2RlQmxvY2ssIENvZGVUeXBlIGNvZGVUeXBlLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQoZ2VuZXJp
Y0NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkgPT0gdGhpcyk7Ci0gICAgUkVMRUFTRV9BU1NF
UlQoSklUQ29kZTo6aXNFeGVjdXRhYmxlU2NyaXB0KGdlbmVyaWNDb2RlQmxvY2stPmppdFR5cGUo
KSkpOwotICAgIAotICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCi0gICAgICAgIGRhdGFM
b2coIkluc3RhbGxpbmcgIiwgKmdlbmVyaWNDb2RlQmxvY2ssICJcbiIpOwotICAgIAotICAgIFZN
JiB2bSA9ICpnZW5lcmljQ29kZUJsb2NrLT52bSgpOwotICAgIAotICAgIGlmICh2bS5tX3BlckJ5
dGVjb2RlUHJvZmlsZXIpCi0gICAgICAgIHZtLm1fcGVyQnl0ZWNvZGVQcm9maWxlci0+ZW5zdXJl
Qnl0ZWNvZGVzRm9yKGdlbmVyaWNDb2RlQmxvY2spOwotICAgIAogICAgIEFTU0VSVCh2bS5oZWFw
LmlzRGVmZXJyZWQoKSk7CiAgICAgCi0gICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kID0g
Z2VuZXJpY0NvZGVCbG9jay0+c3BlY2lhbGl6YXRpb25LaW5kKCk7Ci0gICAgCiAgICAgUmVmUHRy
PENvZGVCbG9jaz4gb2xkQ29kZUJsb2NrOwogICAgIAotICAgIHN3aXRjaCAoa2luZCkgewotICAg
IGNhc2UgQ29kZUZvckNhbGw6Ci0gICAgICAgIG1faml0Q29kZUZvckNhbGwgPSBnZW5lcmljQ29k
ZUJsb2NrLT5qaXRDb2RlKCk7Ci0gICAgICAgIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVj
ayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOwotICAgICAgICBtX2ppdENvZGVGb3JDYWxsV2l0
aEFyaXR5Q2hlY2tBbmRQcmVzZXJ2ZVJlZ3MgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsKLSAg
ICAgICAgbV9udW1QYXJhbWV0ZXJzRm9yQ2FsbCA9IGdlbmVyaWNDb2RlQmxvY2stPm51bVBhcmFt
ZXRlcnMoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgotICAg
ICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3QgPSBnZW5lcmljQ29kZUJsb2NrLT5qaXRDb2RlKCk7
Ci0gICAgICAgIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrID0gTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKCk7Ci0gICAgICAgIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNo
ZWNrQW5kUHJlc2VydmVSZWdzID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7Ci0gICAgICAgIG1f
bnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdCA9IGdlbmVyaWNDb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIAotICAgIHN3aXRjaCAoZ2VuZXJpY0Nv
ZGVCbG9jay0+Y29kZVR5cGUoKSkgeworICAgIHN3aXRjaCAoY29kZVR5cGUpIHsKICAgICBjYXNl
IEdsb2JhbENvZGU6IHsKICAgICAgICAgUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBq
c0Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlzKTsKICAgICAgICAgUHJvZ3JhbUNvZGVCbG9j
ayogY29kZUJsb2NrID0gc3RhdGljX2Nhc3Q8UHJvZ3JhbUNvZGVCbG9jayo+KGdlbmVyaWNDb2Rl
QmxvY2spOwpAQCAtMTk5LDE4ICsxNzYsNDIgQEAgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjppbnN0
YWxsQ29kZShDb2RlQgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgYnJl
YWs7Ci0gICAgfSB9CisgICAgfQorICAgIH0KKworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNh
c2UgQ29kZUZvckNhbGw6CisgICAgICAgIG1faml0Q29kZUZvckNhbGwgPSBnZW5lcmljQ29kZUJs
b2NrID8gZ2VuZXJpY0NvZGVCbG9jay0+aml0Q29kZSgpIDogbnVsbHB0cjsKKyAgICAgICAgbV9q
aXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7Cisg
ICAgICAgIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVja0FuZFByZXNlcnZlUmVncyA9IE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cigpOworICAgICAgICBtX251bVBhcmFtZXRlcnNGb3JDYWxsID0g
Z2VuZXJpY0NvZGVCbG9jayA/IGdlbmVyaWNDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA6IE5V
TV9QQVJBTUVURVJTX05PVF9DT01QSUxFRDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb2Rl
Rm9yQ29uc3RydWN0OgorICAgICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3QgPSBnZW5lcmljQ29k
ZUJsb2NrID8gZ2VuZXJpY0NvZGVCbG9jay0+aml0Q29kZSgpIDogbnVsbHB0cjsKKyAgICAgICAg
bV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIoKTsKKyAgICAgICAgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2tBbmRQcmVz
ZXJ2ZVJlZ3MgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsKKyAgICAgICAgbV9udW1QYXJhbWV0
ZXJzRm9yQ29uc3RydWN0ID0gZ2VuZXJpY0NvZGVCbG9jayA/IGdlbmVyaWNDb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSA6IE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxFRDsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgaWYgKGdlbmVyaWNDb2RlQmxvY2spIHsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoZ2VuZXJpY0NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkgPT0gdGhpcyk7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKEpJVENvZGU6OmlzRXhlY3V0YWJsZVNjcmlwdChnZW5lcmlj
Q29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChPcHRpb25zOjp2
ZXJib3NlT1NSKCkpCisgICAgICAgICAgICBkYXRhTG9nKCJJbnN0YWxsaW5nICIsICpnZW5lcmlj
Q29kZUJsb2NrLCAiXG4iKTsKKyAgICAgICAgCisgICAgICAgIGlmICh2bS5tX3BlckJ5dGVjb2Rl
UHJvZmlsZXIpCisgICAgICAgICAgICB2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPmVuc3VyZUJ5
dGVjb2Rlc0ZvcihnZW5lcmljQ29kZUJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIGlmIChEZWJ1
Z2dlciogZGVidWdnZXIgPSBnZW5lcmljQ29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+ZGVidWdn
ZXIoKSkKKyAgICAgICAgICAgIGRlYnVnZ2VyLT5yZWdpc3RlckNvZGVCbG9jayhnZW5lcmljQ29k
ZUJsb2NrKTsKKyAgICB9CiAKICAgICBpZiAob2xkQ29kZUJsb2NrKQogICAgICAgICBvbGRDb2Rl
QmxvY2stPnVubGlua0luY29taW5nQ2FsbHMoKTsKIAotICAgIERlYnVnZ2VyKiBkZWJ1Z2dlciA9
IGdlbmVyaWNDb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpOwotICAgIGlmIChk
ZWJ1Z2dlcikKLSAgICAgICAgZGVidWdnZXItPnJlZ2lzdGVyQ29kZUJsb2NrKGdlbmVyaWNDb2Rl
QmxvY2spOwotCi0gICAgZ2VuZXJpY0NvZGVCbG9jay0+c2V0SW5zdGFsbFRpbWUoc3RkOjpjaHJv
bm86OnN0ZWFkeV9jbG9jazo6bm93KCkpOwotCi0gICAgSGVhcDo6aGVhcCh0aGlzKS0+d3JpdGVC
YXJyaWVyKHRoaXMpOworICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKHRoaXMpOwogfQogCiBSZWZQ
dHI8Q29kZUJsb2NrPiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IoCkBAIC0zNjcs
NyArMzY4LDcgQEAgSlNPYmplY3QqIFNjcmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeAogICAg
IGVsc2UKICAgICAgICAgc2V0dXBKSVQodm0sIGNvZGVCbG9jay5nZXQoKSk7CiAgICAgCi0gICAg
aW5zdGFsbENvZGUoY29kZUJsb2NrLmdldCgpKTsKKyAgICBpbnN0YWxsQ29kZSgqY29kZUJsb2Nr
LT52bSgpLCBjb2RlQmxvY2suZ2V0KCksIGNvZGVCbG9jay0+Y29kZVR5cGUoKSwgY29kZUJsb2Nr
LT5zcGVjaWFsaXphdGlvbktpbmQoKSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDE4OTc0MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNDIwLDYgKzQyMCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2b2lkIGluc3Rh
bGxDb2RlKENvZGVCbG9jayopOworICAgIHZvaWQgaW5zdGFsbENvZGUoVk0mLCBDb2RlQmxvY2sq
LCBDb2RlVHlwZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAgUmVmUHRyPENvZGVCbG9j
az4gbmV3Q29kZUJsb2NrRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQsIEpTRnVuY3Rpb24qLCBK
U1Njb3BlKiwgSlNPYmplY3QqJiBleGNlcHRpb24pOwogICAgIFBhc3NSZWZQdHI8Q29kZUJsb2Nr
PiBuZXdSZXBsYWNlbWVudENvZGVCbG9ja0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9u
IDE4OTc0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29y
a2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw3IEBAIHR5cGVkZWYgY29uc3QgY2hhciogb3B0aW9u
U3RyaW5nOwogICAgIHYoYm9vbCwgY3Jhc2hJZkNhbnRBbGxvY2F0ZUpJVE1lbW9yeSwgZmFsc2Us
IG51bGxwdHIpIFwKICAgICB2KHVuc2lnbmVkLCBqaXRNZW1vcnlSZXNlcnZhdGlvblNpemUsIDAs
IG51bGxwdHIpIFwKICAgICBcCi0gICAgdihib29sLCBmb3JjZURGR0NvZGVCbG9ja0xpdmVuZXNz
LCBmYWxzZSwgbnVsbHB0cikgXAorICAgIHYoYm9vbCwgZm9yY2VDb2RlQmxvY2tMaXZlbmVzcywg
ZmFsc2UsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIGZvcmNlSUNGYWlsdXJlLCBmYWxzZSwgbnVs
bHB0cikgXAogICAgIFwKICAgICB2KGJvb2wsIGR1bXBHZW5lcmF0ZWRCeXRlY29kZXMsIGZhbHNl
LCBudWxscHRyKSBcCg==
</data>
<flag name="review"
          id="286526"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>