<?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>150411</bug_id>
          
          <creation_ts>2015-10-21 13:24:27 -0700</creation_ts>
          <short_desc>Factor out the graph node worklists from DFG into WTF</short_desc>
          <delta_ts>2015-10-21 18:52:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>150280</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1135358</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-21 13:24:27 -0700</bug_when>
    <thetext>They are generally useful graph algorithms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135359</commentid>
    <comment_count>1</comment_count>
      <attachid>263724</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-21 13:28:28 -0700</bug_when>
    <thetext>Created attachment 263724
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135361</commentid>
    <comment_count>2</comment_count>
      <attachid>263724</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-10-21 13:31:53 -0700</bug_when>
    <thetext>Comment on attachment 263724
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135518</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-21 18:45:20 -0700</bug_when>
    <thetext>Performance is OK:


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

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/primary/OpenSource/WebKitBuild/Release/jsc (r191393)
&quot;GenericWorklists&quot; at /Volumes/Data/primary/OpenSource/WebKitBuild/Release/jsc (r191393)

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

                                                        TipOfTree              GenericWorklists                                 
SunSpider:
   3d-cube                                            8.0450+-0.1897     ?      8.0507+-0.2692        ?
   3d-morph                                           7.9333+-0.1080     ?      8.0475+-0.1454        ? might be 1.0144x slower
   3d-raytrace                                        8.9262+-0.1230     ?      8.9430+-0.1260        ?
   access-binary-trees                                3.2608+-0.1369     ?      3.3052+-0.1594        ? might be 1.0136x slower
   access-fannkuch                                    8.9844+-0.1024            8.9564+-0.1478        
   access-nbody                                       4.3510+-0.0695     ?      4.4594+-0.1144        ? might be 1.0249x slower
   access-nsieve                                      4.6391+-0.1299     ?      4.6761+-0.0845        ?
   bitops-3bit-bits-in-byte                           1.7710+-0.0867            1.7296+-0.0349          might be 1.0239x faster
   bitops-bits-in-byte                                5.5178+-0.0736     ?      5.5371+-0.0611        ?
   bitops-bitwise-and                                 2.8841+-0.0982            2.8725+-0.1014        
   bitops-nsieve-bits                                 4.5081+-0.0859     ?      4.5723+-0.0561        ? might be 1.0142x slower
   controlflow-recursive                              3.5727+-0.0775     ?      3.6543+-0.0880        ? might be 1.0228x slower
   crypto-aes                                         6.3045+-0.1336     ?      6.4715+-0.2193        ? might be 1.0265x slower
   crypto-md5                                         3.9965+-0.0969     ?      4.0812+-0.0461        ? might be 1.0212x slower
   crypto-sha1                                        3.5018+-0.0647     ?      3.5526+-0.0647        ? might be 1.0145x slower
   date-format-tofte                                 12.7460+-0.1951     ?     12.9031+-0.3239        ? might be 1.0123x slower
   date-format-xparb                                  7.3077+-0.2296            7.2304+-0.1379          might be 1.0107x faster
   math-cordic                                        4.4888+-0.0923            4.4420+-0.0861          might be 1.0105x faster
   math-partial-sums                                  9.8922+-0.1370     ?      9.9416+-0.0853        ?
   math-spectral-norm                                 3.1499+-0.0499     ?      3.1751+-0.0673        ?
   regexp-dna                                         9.9414+-0.2927            9.8294+-0.1702          might be 1.0114x faster
   string-base64                                      6.4867+-0.1896            6.4585+-0.2014        
   string-fasta                                       9.2944+-0.2229            9.1907+-0.2022          might be 1.0113x faster
   string-tagcloud                                   12.9019+-0.2356           12.8151+-0.1774        
   string-unpack-code                                26.3481+-0.4676           26.1677+-0.1233        
   string-validate-input                              6.9359+-0.0917            6.8730+-0.1807        

   &lt;arithmetic&gt;                                       7.2188+-0.0355     ?      7.2283+-0.0310        ? might be 1.0013x slower

                                                        TipOfTree              GenericWorklists                                 
LongSpider:
   3d-cube                                         1155.6601+-8.5516     ?   1163.8699+-15.0329       ?
   3d-morph                                        1863.9361+-0.9507         1863.9305+-0.5985        
   3d-raytrace                                     1005.8300+-7.4421         1004.5938+-5.9892        
   access-binary-trees                             1344.2396+-3.0459         1340.8564+-5.3376        
   access-fannkuch                                  479.2048+-19.3874         477.1605+-19.8660       
   access-nbody                                    1012.0490+-0.8867         1011.6962+-0.4588        
   access-nsieve                                    683.8355+-2.0990          679.9116+-3.8079        
   bitops-3bit-bits-in-byte                          45.4649+-0.1392           45.3461+-0.2695        
   bitops-bits-in-byte                              330.2244+-2.6977          329.0985+-3.4267        
   bitops-nsieve-bits                               619.0131+-2.0720          618.2724+-2.0391        
   controlflow-recursive                            718.9256+-1.2415     ?    719.4626+-0.8728        ?
   crypto-aes                                       901.3771+-5.6849          901.1705+-6.9983        
   crypto-md5                                       803.6898+-4.7946          799.7443+-4.7302        
   crypto-sha1                                     1052.4622+-8.9492         1045.8446+-3.2099        
   date-format-tofte                               1015.2259+-8.0389     ?   1019.3237+-11.7731       ?
   date-format-xparb                               1046.4105+-51.5531    ?   1046.7062+-25.8152       ?
   hash-map                                         244.5816+-1.5645          244.1763+-1.8230        
   math-cordic                                      626.9113+-0.5584     ?    628.0275+-1.9578        ?
   math-partial-sums                               1082.6723+-1.7242     ?   1083.2077+-2.3225        ?
   math-spectral-norm                              1073.5779+-0.6697         1073.1822+-1.0887        
   string-base64                                    558.1914+-14.9184         553.6543+-6.0730        
   string-fasta                                     581.1021+-3.1637     ?    581.6072+-2.5445        ?
   string-tagcloud                                  288.5450+-1.6098     ?    291.0676+-7.4417        ?

   &lt;geometric&gt;                                      665.9694+-2.7508          665.4348+-1.6184          might be 1.0008x faster

                                                        TipOfTree              GenericWorklists                                 
V8Spider:
   crypto                                            74.7216+-0.7410           74.3231+-0.7209        
   deltablue                                         94.1597+-4.1004     ?     95.3026+-3.2067        ? might be 1.0121x slower
   earley-boyer                                      66.4316+-0.6366     ?     66.4683+-1.1508        ?
   raytrace                                          43.4229+-1.1035           42.9346+-1.2269          might be 1.0114x faster
   regexp                                           102.2779+-0.2411          102.1243+-0.6106        
   richards                                          77.2685+-0.7230     ?     77.7741+-0.9270        ?
   splay                                             53.7781+-0.7202           53.2035+-0.6027          might be 1.0108x faster

   &lt;geometric&gt;                                       70.4532+-0.7108           70.3539+-0.3435          might be 1.0014x faster

                                                        TipOfTree              GenericWorklists                                 
Octane:
   encrypt                                           0.25447+-0.00479    ?     0.25728+-0.00607       ? might be 1.0111x slower
   decrypt                                           4.79548+-0.00418    ?     4.79587+-0.00519       ?
   deltablue                                x2       0.22061+-0.00297          0.21991+-0.00127       
   earley                                            0.51287+-0.00197          0.51170+-0.00187       
   boyer                                             8.36781+-0.08987          8.30172+-0.07316       
   navier-stokes                            x2       6.32380+-0.00247    ?     6.33041+-0.00825       ?
   raytrace                                 x2       1.49291+-0.00377    !     1.50831+-0.00875       ! definitely 1.0103x slower
   richards                                 x2       0.14926+-0.00050    ?     0.15035+-0.00189       ?
   splay                                    x2       0.53333+-0.00321          0.53142+-0.00303       
   regexp                                   x2      38.11281+-0.24134         37.95939+-0.07744       
   pdfjs                                    x2      60.08905+-0.18959    ?    60.09668+-0.15924       ?
   mandreel                                 x2      65.89819+-0.63586         65.56092+-0.54460       
   gbemu                                    x2      57.28104+-2.47488    ?    58.49364+-4.60276       ? might be 1.0212x slower
   closure                                           0.92593+-0.00392    ?     0.92617+-0.00226       ?
   jquery                                           12.01974+-0.05085    ?    12.04493+-0.02820       ?
   box2d                                    x2      16.56358+-0.24379         16.54328+-0.04019       
   zlib                                     x2     579.71529+-1.70887        579.53743+-2.84852       
   typescript                               x2    1127.63637+-8.91823    ?  1131.04443+-4.98765       ?

   &lt;geometric&gt;                                       8.67375+-0.03411    ?     8.68823+-0.04164       ? might be 1.0017x slower

                                                        TipOfTree              GenericWorklists                                 
Kraken:
   ai-astar                                          213.264+-1.260            213.072+-1.202         
   audio-beat-detection                               78.961+-0.429      ?      78.971+-0.220         ?
   audio-dft                                         129.248+-0.997            128.083+-1.102         
   audio-fft                                          58.537+-0.416             58.397+-0.266         
   audio-oscillator                                   93.691+-0.289             93.489+-0.380         
   imaging-darkroom                                   94.518+-0.159      ?      94.770+-0.159         ?
   imaging-desaturate                                 89.546+-0.148      ?      89.703+-0.618         ?
   imaging-gaussian-blur                             153.834+-1.175      ?     156.854+-7.898         ? might be 1.0196x slower
   json-parse-financial                               68.195+-0.555             68.021+-0.198         
   json-stringify-tinderbox                           41.008+-0.738             40.855+-0.177         
   stanford-crypto-aes                                63.008+-0.322      ?      63.169+-0.539         ?
   stanford-crypto-ccm                                60.035+-1.510      ?      60.697+-1.138         ? might be 1.0110x slower
   stanford-crypto-pbkdf2                            147.131+-0.798            146.311+-0.676         
   stanford-crypto-sha256-iterative                   58.363+-0.477             57.740+-0.170           might be 1.0108x faster

   &lt;arithmetic&gt;                                       96.381+-0.180      ?      96.438+-0.614         ? might be 1.0006x slower

                                                        TipOfTree              GenericWorklists                                 
JSRegress:
   abc-forward-loop-equal                            57.2529+-0.1791           57.2066+-0.2058        
   abc-postfix-backward-loop                         56.5731+-0.1912           56.2877+-0.3968        
   abc-simple-backward-loop                          56.4027+-0.1993           56.1158+-0.2897        
   abc-simple-forward-loop                           56.2754+-0.4234     ?     56.2918+-0.2083        ?
   abc-skippy-loop                                   38.8399+-0.1613     ?     38.9109+-0.1004        ?
   abs-boolean                                        3.8238+-0.0587            3.7971+-0.0553        
   adapt-to-double-divide                            18.2852+-0.4368           18.1784+-0.2146        
   aliased-arguments-getbyval                         1.6562+-0.1390     ?      1.6762+-0.1216        ? might be 1.0121x slower
   allocate-big-object                                3.8201+-0.2155            3.7775+-0.1917          might be 1.0113x faster
   arguments-named-and-reflective                    16.0508+-0.2069           15.6296+-0.3556          might be 1.0269x faster
   arguments-out-of-bounds                           15.6425+-0.1946     ?     15.7563+-0.2157        ?
   arguments-strict-mode                             13.9859+-0.3993     ?     13.9902+-0.1945        ?
   arguments                                         12.6297+-0.1045     ?     12.6526+-0.1630        ?
   arity-mismatch-inlining                            1.3216+-0.0737            1.2435+-0.0363          might be 1.0628x faster
   array-access-polymorphic-structure                11.0757+-0.1543     ?     11.1364+-0.0797        ?
   array-nonarray-polymorhpic-access                 40.4914+-0.8122     ?     40.6033+-0.9482        ?
   array-prototype-every                            123.3767+-1.1287     ?    125.4301+-2.1562        ? might be 1.0166x slower
   array-prototype-forEach                          120.2466+-0.5855     ?    122.1533+-2.5821        ? might be 1.0159x slower
   array-prototype-map                              135.8372+-1.7269     ?    136.1270+-2.2699        ?
   array-prototype-reduce                           114.1013+-1.6594     ?    115.0646+-2.1337        ?
   array-prototype-reduceRight                      114.9946+-2.1508     ?    115.1226+-1.0870        ?
   array-prototype-some                             124.8209+-2.2136          123.6822+-1.8165        
   array-splice-contiguous                           36.4754+-0.2589     ?     36.7859+-0.2609        ?
   array-with-double-add                              5.8048+-0.0505     ?      5.8539+-0.0657        ?
   array-with-double-increment                        4.4800+-0.0532     ?      4.5485+-0.0804        ? might be 1.0153x slower
   array-with-double-mul-add                          7.4905+-0.0618     ?      7.5144+-0.1070        ?
   array-with-double-sum                              4.4378+-0.0841            4.4070+-0.0484        
   array-with-int32-add-sub                          10.5215+-0.0912           10.5008+-0.1291        
   array-with-int32-or-double-sum                     4.6005+-0.0629            4.5482+-0.0671          might be 1.0115x faster
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     47.3147+-1.1667     ?     47.7456+-0.8396        ?
   ArrayBuffer-DataView-alloc-long-lived             19.5360+-0.6100     ?     19.9990+-1.8373        ? might be 1.0237x slower
   ArrayBuffer-Int32Array-byteOffset                  5.4534+-0.1430     ?      5.4909+-0.0694        ?
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     46.2877+-0.4899     ?     46.5961+-0.8171        ?
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     30.1038+-0.2082     ?     30.3300+-0.5815        ?
   ArrayBuffer-Int8Array-alloc-long-lived            17.5511+-0.1481           17.3660+-0.1657          might be 1.0107x faster
   ArrayBuffer-Int8Array-alloc                       14.3062+-0.1392           14.2574+-0.1734        
   arrowfunction-call                                15.5047+-0.1614     ?     15.6060+-0.1720        ?
   asmjs_bool_bug                                    10.0251+-0.0787     ?     10.1386+-0.0410        ? might be 1.0113x slower
   assign-custom-setter-polymorphic                   4.2888+-0.0686     ?      4.3255+-0.1114        ?
   assign-custom-setter                               5.8952+-0.2577     ?      5.9067+-0.1752        ?
   basic-set                                         11.4240+-0.1791     ?     11.7043+-0.3442        ? might be 1.0245x slower
   big-int-mul                                        5.9426+-0.1141            5.8761+-0.0843          might be 1.0113x faster
   boolean-test                                       4.5440+-0.0841     ?      4.5733+-0.0627        ?
   branch-fold                                        4.8586+-0.0490            4.8259+-0.0575        
   branch-on-string-as-boolean                       26.0485+-0.3252           25.7268+-0.4061          might be 1.0125x faster
   by-val-generic                                     3.7490+-0.0993     ?      3.7844+-0.1073        ?
   call-spread-apply                                 41.0086+-0.5553     ?     41.3356+-0.6347        ?
   call-spread-call                                  31.7451+-0.1917     ?     32.1305+-0.3954        ? might be 1.0121x slower
   captured-assignments                               0.7765+-0.0638     ?      0.7835+-0.0569        ?
   cast-int-to-double                                 8.6316+-0.1314     ?      8.6730+-0.0758        ?
   cell-argument                                      8.4973+-0.2886     ?      8.7734+-0.1084        ? might be 1.0325x slower
   cfg-simplify                                       3.9102+-0.0750            3.8430+-0.1023          might be 1.0175x faster
   chain-getter-access                               11.8966+-0.2412           11.7097+-0.3108          might be 1.0160x faster
   cmpeq-obj-to-obj-other                            15.3016+-0.3092           14.9859+-0.1285          might be 1.0211x faster
   constant-test                                      8.0721+-0.1440            8.0473+-0.1516        
   create-lots-of-functions                          16.3488+-0.2860     ?     16.4703+-0.2963        ?
   cse-new-array-buffer                               3.4015+-0.1061            3.3722+-0.1186        
   cse-new-array                                      3.4547+-0.0551            3.4504+-0.1459        
   custom-setter-getter-as-put-get-by-id              0.8903+-0.0666            0.8710+-0.0649          might be 1.0221x faster
   DataView-custom-properties                        53.7612+-0.6149     ?     54.3515+-0.7625        ? might be 1.0110x slower
   delay-tear-off-arguments-strictmode               19.4616+-0.1349     ?     19.4889+-0.1540        ?
   deltablue-varargs                                277.8173+-2.4187     ?    279.1944+-2.4429        ?
   destructuring-arguments                          242.9729+-0.7531     ?    243.3605+-1.5052        ?
   destructuring-parameters-overridden-by-function   
                                                      0.7805+-0.0840            0.7766+-0.0830        
   destructuring-swap                                 7.8784+-0.0954            7.8445+-0.0813        
   direct-arguments-getbyval                          1.6943+-0.1383     ?      1.7171+-0.1182        ? might be 1.0135x slower
   div-boolean-double                                 5.5969+-0.0537     ?      5.6048+-0.0693        ?
   div-boolean                                        9.8734+-0.1436     ?      9.9751+-0.1160        ? might be 1.0103x slower
   double-get-by-val-out-of-bounds                    6.8902+-0.1693     ?      6.9930+-0.0967        ? might be 1.0149x slower
   double-pollution-getbyval                          9.8431+-0.1284            9.8411+-0.1360        
   double-pollution-putbyoffset                       5.7104+-0.2738            5.4974+-0.0743          might be 1.0387x faster
   double-real-use                                   40.4751+-0.1608           40.4249+-0.2036        
   double-to-int32-typed-array-no-inline              3.2691+-0.0700            3.2122+-0.0593          might be 1.0177x faster
   double-to-int32-typed-array                        2.9212+-0.0715            2.9015+-0.0651        
   double-to-uint32-typed-array-no-inline             3.3250+-0.0864            3.2694+-0.0868          might be 1.0170x faster
   double-to-uint32-typed-array                       3.0140+-0.1076            2.9802+-0.0644          might be 1.0114x faster
   elidable-new-object-dag                           54.9653+-0.8056           54.1196+-0.7625          might be 1.0156x faster
   elidable-new-object-roflcopter                    54.8549+-1.3626     ?     55.6869+-0.4555        ? might be 1.0152x slower
   elidable-new-object-then-call                     56.0517+-1.8219     ?     56.8683+-1.2621        ? might be 1.0146x slower
   elidable-new-object-tree                          66.3336+-1.2436           66.0351+-1.3025        
   empty-string-plus-int                              7.6153+-0.0952     ?      7.6923+-0.1207        ? might be 1.0101x slower
   emscripten-cube2hash                              47.7596+-1.6076           47.1208+-0.3939          might be 1.0136x faster
   exit-length-on-plain-object                       22.6911+-0.3124           22.5022+-0.1342        
   external-arguments-getbyval                        1.8286+-0.0812            1.7997+-0.1554          might be 1.0161x faster
   external-arguments-putbyval                        3.4638+-0.1288     ?      3.5508+-0.1421        ? might be 1.0251x slower
   fixed-typed-array-storage-var-index                1.7196+-0.0810     ?      1.7891+-0.0760        ? might be 1.0404x slower
   fixed-typed-array-storage                          1.4436+-0.0143     ?      1.4562+-0.0663        ?
   Float32Array-matrix-mult                           6.8230+-0.1286            6.7920+-0.1870        
   Float32Array-to-Float64Array-set                  79.9035+-0.5867     ?     80.1122+-0.6561        ?
   Float64Array-alloc-long-lived                     95.6242+-0.4751           95.4479+-0.5150        
   Float64Array-to-Int16Array-set                    90.0803+-0.3727           89.9157+-0.4759        
   fold-double-to-int                                19.2173+-0.1608     ?     19.3090+-0.0830        ?
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     12.1568+-0.0783     ?     12.2869+-0.1449        ? might be 1.0107x slower
   fold-get-by-id-to-multi-get-by-offset             10.3157+-0.1718           10.2094+-0.0739          might be 1.0104x faster
   fold-multi-get-by-offset-to-get-by-offset   
                                                      9.1040+-0.5265     ?      9.3095+-0.2546        ? might be 1.0226x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      9.6220+-0.3918     ?      9.6341+-0.3980        ?
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                     11.4004+-0.0850     ?     11.4766+-0.0417        ?
   fold-multi-put-by-offset-to-put-by-offset   
                                                     10.8296+-0.0547           10.7015+-0.2185          might be 1.0120x faster
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     15.7133+-0.7195     ?     16.0562+-0.6171        ? might be 1.0218x slower
   fold-put-by-id-to-multi-put-by-offset             12.8485+-0.6437           12.4842+-0.4249          might be 1.0292x faster
   fold-put-by-val-with-string-to-multi-put-by-offset   
                                                     12.5331+-0.3958     ?     12.7153+-0.6089        ? might be 1.0145x slower
   fold-put-by-val-with-symbol-to-multi-put-by-offset   
                                                     12.9504+-0.5275           12.5410+-0.4815          might be 1.0326x faster
   fold-put-structure                                 8.6841+-0.1566            8.6790+-0.1212        
   for-of-iterate-array-entries                      16.4910+-0.0629           16.4349+-0.0976        
   for-of-iterate-array-keys                          5.2878+-0.2399            5.2846+-0.2342        
   for-of-iterate-array-values                        5.0901+-0.1287     ?      5.1720+-0.1892        ? might be 1.0161x slower
   fround                                            21.8780+-0.2779     ?     22.1552+-0.4909        ? might be 1.0127x slower
   ftl-library-inlining-dataview                     99.1686+-3.1142     ?    101.0362+-2.5894        ? might be 1.0188x slower
   ftl-library-inlining                             105.5294+-17.7445    ?    126.4540+-15.9031       ? might be 1.1983x slower
   function-call                                     15.0564+-0.1828     ?     15.1268+-0.2193        ?
   function-dot-apply                                 3.1314+-0.0648     ?      3.2025+-0.0708        ? might be 1.0227x slower
   function-test                                      4.4651+-0.0940            4.4497+-0.0636        
   function-with-eval                               126.4769+-0.5661     ?    126.4811+-0.3676        ?
   gcse-poly-get-less-obvious                        33.3212+-0.5705     ?     33.4000+-0.6227        ?
   gcse-poly-get                                     34.5037+-0.0680           34.3259+-0.2972        
   gcse                                               6.7882+-0.0589     ?      6.7891+-0.1057        ?
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      3.2612+-0.0707     ?      3.2916+-0.0824        ?
   get-by-id-bimorphic-check-structure-elimination   
                                                      8.1537+-0.1248     ?      8.1948+-0.0895        ?
   get-by-id-chain-from-try-block                     3.4573+-0.1042     ?      3.5037+-0.1088        ? might be 1.0134x slower
   get-by-id-check-structure-elimination              7.6890+-0.0746            7.6791+-0.1016        
   get-by-id-proto-or-self                           25.2915+-2.1214           24.4609+-1.9262          might be 1.0340x faster
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      4.0549+-0.0682     ?      4.1020+-0.0544        ? might be 1.0116x slower
   get-by-id-self-or-proto                           24.6881+-1.8873           23.8703+-0.8546          might be 1.0343x faster
   get-by-val-out-of-bounds                           6.8771+-0.1562     ?      7.0069+-0.2094        ? might be 1.0189x slower
   get-by-val-with-string-bimorphic-check-structure-elimination-simple   
                                                      3.9494+-0.0535     ?      3.9696+-0.0764        ?
   get-by-val-with-string-bimorphic-check-structure-elimination   
                                                     10.7667+-0.1472           10.7656+-0.1311        
   get-by-val-with-string-chain-from-try-block   
                                                      3.5520+-0.1005     ?      3.5593+-0.0793        ?
   get-by-val-with-string-check-structure-elimination   
                                                      9.5354+-0.1441     ?      9.5956+-0.1162        ?
   get-by-val-with-string-proto-or-self              25.4818+-2.0041           24.0124+-0.2301          might be 1.0612x faster
   get-by-val-with-string-quadmorphic-check-structure-elimination-simple   
                                                      5.0750+-0.1028            5.0547+-0.0943        
   get-by-val-with-string-self-or-proto              24.6597+-1.3915     ?     25.1587+-1.7259        ? might be 1.0202x slower
   get-by-val-with-symbol-bimorphic-check-structure-elimination-simple   
                                                      4.6584+-0.0925     ?      4.6696+-0.0500        ?
   get-by-val-with-symbol-bimorphic-check-structure-elimination   
                                                     19.2783+-0.3051           19.1176+-0.2110        
   get-by-val-with-symbol-chain-from-try-block   
                                                      3.5652+-0.0814     ?      3.6620+-0.1115        ? might be 1.0272x slower
   get-by-val-with-symbol-check-structure-elimination   
                                                     18.4820+-0.2821           18.3664+-0.2447        
   get-by-val-with-symbol-proto-or-self              25.3190+-1.5477           24.8064+-1.2587          might be 1.0207x faster
   get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple   
                                                      6.1434+-0.0846            6.0638+-0.0778          might be 1.0131x faster
   get-by-val-with-symbol-self-or-proto              25.3576+-1.6107           25.2823+-1.6594        
   get_callee_monomorphic                             3.7027+-0.0811            3.6964+-0.1521        
   get_callee_polymorphic                             4.8742+-0.1061     ?      4.8898+-0.1819        ?
   getter-no-activation                               5.8955+-0.0491     ?      5.9141+-0.0819        ?
   getter-prototype                                  12.8700+-0.2843           12.7211+-0.1990          might be 1.0117x faster
   getter-richards-try-catch                       1751.3234+-52.6971    ?   1760.2136+-56.3097       ?
   getter-richards                                  139.1341+-2.0740          138.8544+-1.6459        
   getter                                             7.3849+-0.0417            7.3694+-0.0527        
   global-object-access-with-mutating-structure   
                                                      8.1904+-0.1611            8.1664+-0.1793        
   global-var-const-infer-fire-from-opt               1.1932+-0.0971            1.1857+-0.1029        
   global-var-const-infer                             1.0808+-0.1259            1.0185+-0.0995          might be 1.0612x faster
   hard-overflow-check-equal                         46.2803+-0.2071           46.1007+-0.3085        
   hard-overflow-check                               46.1043+-0.6795           45.7723+-0.1571        
   HashMap-put-get-iterate-keys                      35.6764+-0.2276     ?     35.8870+-0.3314        ?
   HashMap-put-get-iterate                           36.3406+-1.1369           35.5342+-0.3561          might be 1.0227x faster
   HashMap-string-put-get-iterate                    35.9408+-0.6708     ?     36.1544+-0.7315        ?
   hoist-make-rope                                   15.6207+-1.0232           15.0496+-0.9140          might be 1.0379x faster
   hoist-poly-check-structure-effectful-loop   
                                                      6.7202+-0.0809            6.7167+-0.0805        
   hoist-poly-check-structure                         4.5197+-0.0624     ?      4.5497+-0.1257        ?
   imul-double-only                                  10.4066+-0.1895     ?     10.4191+-0.1183        ?
   imul-int-only                                     12.3346+-0.5790     ?     12.3675+-0.5547        ?
   imul-mixed                                        10.0946+-0.2815     ?     10.5204+-0.4865        ? might be 1.0422x slower
   in-four-cases                                     28.6258+-0.7408           28.3526+-0.2099        
   in-one-case-false                                 16.4298+-0.1766           16.3777+-0.1135        
   in-one-case-true                                  16.3405+-0.1193     ?     16.3605+-0.1015        ?
   in-two-cases                                      17.0786+-0.1088           16.9062+-0.0963          might be 1.0102x faster
   indexed-properties-in-objects                      4.0326+-0.0675     ?      4.0770+-0.0666        ? might be 1.0110x slower
   infer-closure-const-then-mov-no-inline             5.3901+-0.0604     ?      5.4566+-0.0830        ? might be 1.0123x slower
   infer-closure-const-then-mov                      23.1853+-0.2249     ?     23.1955+-0.2792        ?
   infer-closure-const-then-put-to-scope-no-inline   
                                                     17.3305+-0.1590     ?     17.3709+-0.1511        ?
   infer-closure-const-then-put-to-scope             32.2706+-0.2491     ?     32.5427+-0.6009        ?
   infer-closure-const-then-reenter-no-inline   
                                                     74.4884+-0.2290           74.3628+-0.2076        
   infer-closure-const-then-reenter                  32.1460+-1.3838     ?     32.7888+-0.2215        ? might be 1.0200x slower
   infer-constant-global-property                     4.8814+-0.0804            4.8524+-0.0922        
   infer-constant-property                            3.3479+-0.0729     ?      3.3958+-0.1121        ? might be 1.0143x slower
   infer-one-time-closure-ten-vars                   12.7628+-0.1290           12.4994+-0.2146          might be 1.0211x faster
   infer-one-time-closure-two-vars                   12.0444+-0.3368           11.9735+-0.2477        
   infer-one-time-closure                            12.0589+-0.2109           11.9847+-0.2708        
   infer-one-time-deep-closure                       18.8457+-0.3279     ?     18.8908+-0.1779        ?
   inline-arguments-access                            6.0030+-0.1787     ?      6.0383+-0.1118        ?
   inline-arguments-aliased-access                    6.1132+-0.0917     ?      6.1276+-0.1047        ?
   inline-arguments-local-escape                      6.1004+-0.1540     ?      6.1413+-0.0696        ?
   inline-get-scoped-var                              5.7393+-0.0595     ?      5.7548+-0.0523        ?
   inlined-put-by-id-transition                      15.4907+-0.2769     ?     15.6458+-0.1530        ? might be 1.0100x slower
   inlined-put-by-val-with-string-transition   
                                                     67.3207+-1.7473           66.7160+-1.0521        
   inlined-put-by-val-with-symbol-transition   
                                                     66.8237+-0.5818           66.7135+-0.5438        
   int-or-other-abs-then-get-by-val                   6.6390+-0.0835     ?      6.6907+-0.0426        ?
   int-or-other-abs-zero-then-get-by-val             27.8441+-0.1901     ?     27.8918+-0.2701        ?
   int-or-other-add-then-get-by-val                   6.4935+-0.0667     ?      6.5334+-0.0525        ?
   int-or-other-add                                   8.2465+-0.0775            8.2308+-0.0953        
   int-or-other-div-then-get-by-val                   5.1862+-0.0709            5.1110+-0.0272          might be 1.0147x faster
   int-or-other-max-then-get-by-val                   5.1530+-0.1023     ?      5.1941+-0.0626        ?
   int-or-other-min-then-get-by-val                   5.2823+-0.0612            5.1921+-0.1066          might be 1.0174x faster
   int-or-other-mod-then-get-by-val                   4.9391+-0.0874     ?      5.0173+-0.0430        ? might be 1.0158x slower
   int-or-other-mul-then-get-by-val                   5.3040+-0.0499            5.2490+-0.0732          might be 1.0105x faster
   int-or-other-neg-then-get-by-val                   5.8437+-0.0702     ?      5.8911+-0.0950        ?
   int-or-other-neg-zero-then-get-by-val             28.0933+-0.1476     ?     28.1040+-0.2057        ?
   int-or-other-sub-then-get-by-val                   6.4779+-0.0866     ?      6.5037+-0.1023        ?
   int-or-other-sub                                   5.3200+-0.0607     ?      5.3299+-0.1032        ?
   int-overflow-local                                 6.0839+-0.0580     ?      6.1372+-0.0551        ?
   Int16Array-alloc-long-lived                       66.9566+-0.6377           66.3027+-0.3732        
   Int16Array-bubble-sort-with-byteLength            40.6077+-0.2442           40.5888+-0.1391        
   Int16Array-bubble-sort                            39.2030+-0.2769     ?     39.2427+-0.0664        ?
   Int16Array-load-int-mul                            2.1957+-0.0565            2.1904+-0.0747        
   Int16Array-to-Int32Array-set                      69.6260+-0.5511           69.3682+-0.4729        
   Int32Array-alloc-large                            32.3111+-0.6185     ?     32.6027+-0.6070        ?
   Int32Array-alloc-long-lived                       75.4177+-0.4941     ?     75.6831+-0.6250        ?
   Int32Array-alloc                                   4.6218+-0.1233     ?      4.6637+-0.0768        ?
   Int32Array-Int8Array-view-alloc                    9.7103+-0.2334            9.6928+-0.1426        
   int52-spill                                        7.2452+-0.1052            7.1093+-0.1092          might be 1.0191x faster
   Int8Array-alloc-long-lived                        59.2963+-0.5380           59.1951+-0.5252        
   Int8Array-load-with-byteLength                     4.8382+-0.1102     ?      4.8750+-0.0353        ?
   Int8Array-load                                     4.7988+-0.0872            4.7705+-0.0727        
   integer-divide                                    13.9802+-0.0833           13.9747+-0.0653        
   integer-modulo                                     2.7777+-0.0804            2.7648+-0.0920        
   is-boolean-fold-tricky                             5.7202+-0.0571            5.6963+-0.0390        
   is-boolean-fold                                    4.0531+-0.0637     ?      4.1113+-0.0818        ? might be 1.0143x slower
   is-function-fold-tricky-internal-function   
                                                     14.8918+-0.4077           14.7024+-0.1351          might be 1.0129x faster
   is-function-fold-tricky                            5.8737+-0.0535            5.8206+-0.0662        
   is-function-fold                                   4.1953+-0.0349     ^      4.0754+-0.0662        ^ definitely 1.0294x faster
   is-number-fold-tricky                              5.7553+-0.0889     ?      5.8076+-0.0789        ?
   is-number-fold                                     4.0508+-0.0720            4.0413+-0.0539        
   is-object-or-null-fold-functions                   4.1592+-0.0698     ?      4.2168+-0.1137        ? might be 1.0138x slower
   is-object-or-null-fold-less-tricky                 5.7724+-0.0572     ?      5.7752+-0.0720        ?
   is-object-or-null-fold-tricky                      7.4119+-0.0804     ?      7.4667+-0.1339        ?
   is-object-or-null-fold                             4.1047+-0.1043            4.0689+-0.0630        
   is-object-or-null-trickier-function                5.9051+-0.0774            5.8900+-0.0914        
   is-object-or-null-trickier-internal-function   
                                                     15.7208+-0.7839           15.3537+-0.1759          might be 1.0239x faster
   is-object-or-null-tricky-function                  5.8222+-0.0639     ?      5.8304+-0.0731        ?
   is-object-or-null-tricky-internal-function   
                                                     11.6070+-0.3471           11.5319+-0.3601        
   is-string-fold-tricky                              5.6822+-0.0613            5.6699+-0.0546        
   is-string-fold                                     4.0736+-0.0746            4.0534+-0.0722        
   is-undefined-fold-tricky                           4.8302+-0.0812     ?      4.8364+-0.0974        ?
   is-undefined-fold                                  4.0791+-0.0934     ?      4.1078+-0.0795        ?
   JSONP-negative-0                                   0.4452+-0.0429     ?      0.4697+-0.0417        ? might be 1.0551x slower
   large-int-captured                                 6.8582+-0.1316     ?      6.9565+-0.0681        ? might be 1.0143x slower
   large-int-neg                                     21.0918+-0.2915     ?     21.1885+-0.2824        ?
   large-int                                         18.6550+-0.1965           18.4751+-0.2471        
   load-varargs-elimination                          30.5209+-0.3707     ?     30.9009+-0.7898        ? might be 1.0125x slower
   logical-not-weird-types                            5.2087+-0.1590            5.1315+-0.1011          might be 1.0150x faster
   logical-not                                        6.6961+-0.0754            6.6883+-0.1059        
   lots-of-fields                                    17.2129+-0.1318           17.1650+-0.0503        
   make-indexed-storage                               4.4449+-0.2404            4.3801+-0.2747          might be 1.0148x faster
   make-rope-cse                                      6.3325+-0.1018     ?      6.3431+-0.0799        ?
   marsaglia-larger-ints                             53.2137+-0.5910     ?     53.8279+-0.4117        ? might be 1.0115x slower
   marsaglia-osr-entry                               28.3415+-0.3218           28.1782+-0.3031        
   math-with-out-of-bounds-array-values              41.3537+-0.5158     ?     41.7181+-0.9260        ?
   max-boolean                                        3.3614+-0.0848     ?      3.3926+-0.0835        ?
   method-on-number                                  23.8027+-0.6586           23.4462+-0.2784          might be 1.0152x faster
   min-boolean                                        3.4866+-0.2402            3.4490+-0.0742          might be 1.0109x faster
   minus-boolean-double                               4.2746+-0.0563     ?      4.3228+-0.0780        ? might be 1.0113x slower
   minus-boolean                                      3.3836+-0.0623     ?      3.4148+-0.0635        ?
   misc-strict-eq                                    48.9081+-1.7741     ?     50.9057+-0.5705        ? might be 1.0408x slower
   mod-boolean-double                                11.8782+-0.1114           11.8572+-0.0886        
   mod-boolean                                        9.0938+-0.0698            9.0111+-0.1899        
   mul-boolean-double                                 4.9479+-0.0725            4.9421+-0.0487        
   mul-boolean                                        3.5773+-0.0652            3.5450+-0.0432        
   neg-boolean                                        4.3290+-0.0383     ?      4.3480+-0.1277        ?
   negative-zero-divide                               0.6415+-0.0628            0.5750+-0.0516          might be 1.1156x faster
   negative-zero-modulo                               0.6069+-0.0484            0.5710+-0.0455          might be 1.0629x faster
   negative-zero-negate                               0.5544+-0.0746     ?      0.5785+-0.0529        ? might be 1.0434x slower
   nested-function-parsing                           73.1676+-0.4054     ?     73.2620+-0.4694        ?
   new-array-buffer-dead                            143.9983+-0.8122          143.5743+-1.5965        
   new-array-buffer-push                              9.9095+-0.0875            9.9095+-0.2101        
   new-array-dead                                    24.3753+-1.6163     ?     25.4379+-1.4107        ? might be 1.0436x slower
   new-array-push                                     5.8251+-0.3112            5.7933+-0.2556        
   no-inline-constructor                             50.2793+-0.3213           50.1066+-0.2710        
   number-test                                        4.5194+-0.0536            4.5119+-0.0432        
   object-closure-call                                7.6655+-0.0962            7.6045+-0.1073        
   object-get-own-property-symbols-on-large-array   
                                                      5.3523+-0.2100     ?      5.3782+-0.3580        ?
   object-test                                        4.3743+-0.0698     ?      4.3822+-0.1011        ?
   obvious-sink-pathology-taken                     166.9330+-1.4749          166.9204+-1.2518        
   obvious-sink-pathology                            53.5663+-0.8350           52.7315+-0.7230          might be 1.0158x faster
   obviously-elidable-new-object                     50.5619+-0.5859           50.4368+-0.9530        
   plus-boolean-arith                                 3.4803+-0.0707            3.4203+-0.0810          might be 1.0176x faster
   plus-boolean-double                                4.3329+-0.0798            4.3090+-0.0452        
   plus-boolean                                       3.2890+-0.0914     ?      3.2982+-0.0947        ?
   poly-chain-access-different-prototypes-simple   
                                                      3.9755+-0.0847            3.9633+-0.0435        
   poly-chain-access-different-prototypes             3.4424+-0.0802     ?      3.4809+-0.1373        ? might be 1.0112x slower
   poly-chain-access-simpler                          3.9381+-0.1087            3.9223+-0.0638        
   poly-chain-access                                  3.3915+-0.0975     ?      3.4160+-0.0953        ?
   poly-stricteq                                     82.5961+-0.1498     ?     82.6910+-0.2465        ?
   polymorphic-array-call                             1.9804+-0.1146            1.9713+-0.1390        
   polymorphic-get-by-id                              4.2053+-0.0891     ?      4.3826+-0.2105        ? might be 1.0422x slower
   polymorphic-put-by-id                             54.6272+-2.0068     ?     56.3930+-1.4845        ? might be 1.0323x slower
   polymorphic-put-by-val-with-string                45.7613+-4.4778           44.1024+-0.5379          might be 1.0376x faster
   polymorphic-put-by-val-with-symbol                44.2247+-0.6407     ?     44.3390+-0.8987        ?
   polymorphic-structure                             25.2349+-0.0890           25.1796+-0.1422        
   polyvariant-monomorphic-get-by-id                 11.5950+-0.1302           11.5583+-0.0682        
   proto-getter-access                               11.6204+-0.3353     ?     11.6360+-0.1956        ?
   prototype-access-with-mutating-prototype           7.9417+-0.1242            7.8915+-0.0850        
   put-by-id-replace-and-transition                  12.6883+-0.2543     ?     12.8797+-0.1502        ? might be 1.0151x slower
   put-by-id-slightly-polymorphic                     3.6762+-0.0860     ?      3.7328+-0.0552        ? might be 1.0154x slower
   put-by-id                                         18.1106+-0.3624     ?     18.4309+-0.1710        ? might be 1.0177x slower
   put-by-val-direct                                  0.5697+-0.0394     ?      0.6424+-0.0636        ? might be 1.1276x slower
   put-by-val-large-index-blank-indexing-type   
                                                      8.4584+-0.1175     ?      8.4785+-0.1195        ?
   put-by-val-machine-int                             3.8350+-0.0756            3.8218+-0.1235        
   put-by-val-with-string-replace-and-transition   
                                                     19.1742+-0.2572           18.8432+-0.2290          might be 1.0176x faster
   put-by-val-with-string-slightly-polymorphic   
                                                      4.8283+-0.1175     ?      4.8927+-0.0775        ? might be 1.0133x slower
   put-by-val-with-string                            19.2790+-0.4216     ?     19.3557+-0.2362        ?
   put-by-val-with-symbol-replace-and-transition   
                                                     21.0057+-0.3236           20.7767+-0.1911          might be 1.0110x faster
   put-by-val-with-symbol-slightly-polymorphic   
                                                      5.1085+-0.0841            5.0423+-0.0624          might be 1.0131x faster
   put-by-val-with-symbol                            18.9741+-0.2725     ?     19.2188+-0.3977        ? might be 1.0129x slower
   rare-osr-exit-on-local                            17.3137+-0.4197     ?     17.4639+-0.0730        ?
   raytrace-with-empty-try-catch                      9.1977+-0.2818            8.9629+-0.3427          might be 1.0262x faster
   raytrace-with-try-catch                           15.9074+-0.2818           15.8892+-0.1988        
   register-pressure-from-osr                        25.1003+-0.2091     ?     25.3040+-0.0786        ?
   repeat-multi-get-by-offset                        29.3581+-0.2903     ?     29.4869+-0.1873        ?
   richards-empty-try-catch                         119.6795+-2.0566     ?    121.5035+-2.5079        ? might be 1.0152x slower
   richards-try-catch                               398.8606+-2.3233     ?    400.7347+-4.6996        ?
   setter-prototype                                  13.3307+-0.4867           13.1070+-0.3034          might be 1.0171x faster
   setter                                             7.3994+-0.0525            7.3274+-0.0742        
   simple-activation-demo                            34.9090+-0.1706           34.9060+-0.1841        
   simple-getter-access                              15.5056+-0.2802     ?     15.8985+-0.4627        ? might be 1.0253x slower
   simple-poly-call-nested                           11.0404+-0.3192     ?     11.2891+-0.3146        ? might be 1.0225x slower
   simple-poly-call                                   1.8642+-0.0572     ?      1.8874+-0.0665        ? might be 1.0125x slower
   sin-boolean                                       26.6543+-0.3474     ?     27.0491+-0.2406        ? might be 1.0148x slower
   singleton-scope                                   87.3914+-0.0692           87.3133+-0.1465        
   sink-function                                     14.7156+-1.1774     ?     15.0594+-1.3403        ? might be 1.0234x slower
   sink-huge-activation                              22.4687+-0.3885           22.2039+-0.2452          might be 1.0119x faster
   sinkable-new-object-dag                           89.2825+-1.9141           88.6441+-2.3133        
   sinkable-new-object-taken                         67.6826+-1.4493           67.6559+-1.3028        
   sinkable-new-object                               52.7913+-0.5993     ?     52.9699+-0.9832        ?
   slow-array-profile-convergence                     4.0536+-0.1763     ?      4.0848+-0.1616        ?
   slow-convergence                                   3.9239+-0.1097     ?      3.9517+-0.0810        ?
   slow-ternaries                                    32.4793+-0.3228     ?     32.5429+-0.1899        ?
   sorting-benchmark                                 25.9421+-0.3165           25.9021+-0.4036        
   sparse-conditional                                 1.8113+-0.0507            1.7979+-0.1092        
   splice-to-remove                                  19.3196+-0.1568     ?     19.5781+-0.2529        ? might be 1.0134x slower
   string-char-code-at                               20.6963+-0.1775           20.6468+-0.1623        
   string-concat-object                               3.2375+-0.0618     ?      3.2637+-0.1203        ?
   string-concat-pair-object                          3.1822+-0.0665            3.1648+-0.0611        
   string-concat-pair-simple                         16.9983+-0.1789     ?     17.1003+-0.1999        ?
   string-concat-simple                              17.4954+-0.2571           17.4024+-0.2546        
   string-cons-repeat                                11.3903+-0.0365     ?     11.4167+-0.0748        ?
   string-cons-tower                                 10.8377+-0.0853     ?     10.8492+-0.0668        ?
   string-equality                                   24.7481+-0.1043           24.6689+-0.2440        
   string-get-by-val-big-char                        10.6123+-0.4392           10.6019+-0.4690        
   string-get-by-val-out-of-bounds-insane             5.3167+-0.1147            5.3144+-0.1403        
   string-get-by-val-out-of-bounds                    6.7434+-0.1116            6.6991+-0.0746        
   string-get-by-val                                  4.8369+-0.0440     ?      4.8722+-0.0361        ?
   string-hash                                        2.8547+-0.0714     ?      2.8844+-0.0695        ? might be 1.0104x slower
   string-long-ident-equality                        20.1291+-0.1669     ?     20.2073+-0.1362        ?
   string-out-of-bounds                              16.4204+-0.1464           16.3953+-0.2226        
   string-repeat-arith                               43.0889+-0.3410     ?     43.2401+-0.3835        ?
   string-sub                                        57.0259+-1.6278           56.7346+-1.0198        
   string-test                                        4.5931+-0.0501            4.5021+-0.0791          might be 1.0202x faster
   string-var-equality                               59.7314+-1.3092     ?     60.7015+-1.5011        ? might be 1.0162x slower
   structure-hoist-over-transitions                   3.4789+-0.0998            3.4731+-0.1098        
   substring-concat-weird                            56.9949+-0.2749     ?     57.2543+-0.1944        ?
   substring-concat                                  62.5310+-0.3514     ?     62.8480+-0.3078        ?
   substring                                         69.6360+-0.1544     ?     70.4950+-0.9070        ? might be 1.0123x slower
   switch-char-constant                               3.4672+-0.0397     ?      3.5096+-0.0528        ? might be 1.0122x slower
   switch-char                                        8.1979+-0.0630            8.1801+-0.0762        
   switch-constant                                   11.6392+-0.2661           11.4007+-0.2533          might be 1.0209x faster
   switch-string-basic-big-var                       32.6360+-0.1734           32.3052+-0.2656          might be 1.0102x faster
   switch-string-basic-big                           29.0562+-0.5474           28.0467+-1.1293          might be 1.0360x faster
   switch-string-basic-var                           32.8414+-0.1941           32.5997+-0.2490        
   switch-string-basic                               21.9007+-0.8075           21.8489+-0.6463        
   switch-string-big-length-tower-var                28.4353+-0.2881     ?     28.5186+-0.3358        ?
   switch-string-length-tower-var                    21.5228+-0.1001     ?     21.5902+-0.1817        ?
   switch-string-length-tower                        15.5613+-0.1559     ?     15.6363+-0.2080        ?
   switch-string-short                               15.4298+-0.1426     ?     15.5543+-0.0898        ?
   switch                                            17.2907+-1.0281     ?     17.7548+-1.0326        ? might be 1.0268x slower
   tear-off-arguments-simple                          4.5514+-0.1526            4.5029+-0.0764          might be 1.0108x faster
   tear-off-arguments                                 6.4979+-0.1653     ?      6.6431+-0.3423        ? might be 1.0224x slower
   temporal-structure                                16.6166+-0.0892     ?     16.6806+-0.1156        ?
   to-int32-boolean                                  21.1055+-0.1339           21.0088+-0.2118        
   try-catch-get-by-val-cloned-arguments             14.6412+-0.2108     ?     14.6935+-0.1571        ?
   try-catch-get-by-val-direct-arguments              3.0686+-0.1657            2.9653+-0.1201          might be 1.0348x faster
   try-catch-get-by-val-scoped-arguments              6.7649+-0.0725            6.7467+-0.1094        
   typed-array-get-set-by-val-profiling              38.3472+-0.9561     ?     40.0820+-2.2171        ? might be 1.0452x slower
   undefined-property-access                        439.0367+-1.5002     ?    439.8026+-1.4546        ?
   undefined-test                                     4.6564+-0.0524     ?      4.6703+-0.0773        ?
   unprofiled-licm                                   16.4599+-0.2576     ?     16.6633+-0.2021        ? might be 1.0124x slower
   v8-raytrace-with-empty-try-catch                  46.9037+-0.4590     ?     48.0060+-0.9527        ? might be 1.0235x slower
   v8-raytrace-with-try-catch                       106.7578+-0.8865     ?    106.7657+-1.2545        ?
   varargs-call                                      18.8128+-0.4345           18.6660+-0.3093        
   varargs-construct-inline                          36.8742+-0.1860     ?     36.9501+-0.3509        ?
   varargs-construct                                 29.7749+-0.1722           29.6518+-0.2524        
   varargs-inline                                    13.0803+-0.1309           12.9395+-0.2279          might be 1.0109x faster
   varargs-strict-mode                               15.0273+-0.1365           14.9999+-0.1041        
   varargs                                           14.7953+-0.2092           14.7607+-0.2272        
   weird-inlining-const-prop                          3.1908+-0.1051            3.1670+-0.0355        

   &lt;geometric&gt;                                       12.2664+-0.0142     ?     12.2786+-0.0221        ? might be 1.0010x slower

                                                        TipOfTree              GenericWorklists                                 
AsmBench:
   bigfib.cpp                                       683.5334+-9.7256          681.6018+-10.2384       
   cray.c                                           624.2872+-2.5149          623.0776+-1.5575        
   dry.c                                            657.4501+-0.6846     ?    657.6554+-0.5280        ?
   FloatMM.c                                        914.9680+-0.5428     ?    915.1158+-0.7271        ?
   gcc-loops.cpp                                   5880.2138+-20.5164    ?   5880.6633+-19.9790       ?
   n-body.c                                        1680.2953+-2.1174         1679.7355+-1.1112        
   Quicksort.c                                      570.2659+-6.4270          568.1601+-6.4621        
   stepanov_container.cpp                          4833.8294+-21.3924    ?   4838.3918+-24.8045       ?
   Towers.c                                         425.7756+-0.7485          425.5538+-0.8176        

   &lt;geometric&gt;                                     1128.8307+-1.1341         1127.8504+-2.7188          might be 1.0009x faster

                                                        TipOfTree              GenericWorklists                                 
CompressionBench:
   huffman                                           81.1210+-0.6061     ?     81.7928+-0.5135        ?
   arithmetic-simple                                442.1411+-1.8785     ?    443.3913+-0.9648        ?
   arithmetic-precise                               367.7755+-2.3200     ?    369.6377+-1.5423        ?
   arithmetic-complex-precise                       369.9783+-3.8380     ?    370.2219+-2.8552        ?
   arithmetic-precise-order-0                       456.3726+-0.7984          455.0498+-2.6114        
   arithmetic-precise-order-1                       423.6693+-1.2184          423.2876+-2.6275        
   arithmetic-precise-order-2                       494.4846+-4.3073          493.4485+-3.2185        
   arithmetic-simple-order-1                        502.2907+-1.5623     ?    507.6640+-6.8615        ? might be 1.0107x slower
   arithmetic-simple-order-2                        567.3240+-2.7059     ?    568.1195+-2.9303        ?
   lz-string                                        424.6541+-5.2064          423.9112+-5.5660        

   &lt;geometric&gt;                                      375.9831+-1.0086     ?    376.7779+-1.1414        ? might be 1.0021x slower

                                                        TipOfTree              GenericWorklists                                 
Geomean of preferred means:
   &lt;scaled-result&gt;                                   78.7160+-0.1175     ?     78.7516+-0.1384        ? might be 1.0005x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135520</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-21 18:52:27 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/191424</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263724</attachid>
            <date>2015-10-21 13:28:28 -0700</date>
            <delta_ts>2015-10-21 13:31:53 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>29840</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkxNDAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBA
CisyMDE1LTEwLTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RmFjdG9yIG91dCB0aGUgZ3JhcGggbm9kZSB3b3JrbGlzdHMgZnJvbSBERkcgaW50byBXVEYKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDQxMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJld3JpdGUgdGhl
IERGR0Jsb2NrV29ya2xpc3QuaCBmaWxlIGFzIGEgYnVuY2ggb2YgdHlwZWRlZnMgYW5kIGFsaWFz
ZXMgZm9yIHRoaW5ncyBpbgorICAgICAgICB3dGYvR3JhcGhOb2RlV29ya2xpc3QuaC4gTW9zdCB1
c2VycyB3b24ndCBub3RpY2UsIGV4Y2VwdCB0aGF0IHNvbWUgc21hbGwgdGhpbmdzIGdvdAorICAg
ICAgICByZW5hbWVkLiBGb3IgZXhhbXBsZSBQcmVPcmRlciBiZWNvbWVzIFZpc2l0T3JkZXI6OlBy
ZSBhbmQgaXRlbS5ibG9jayBiZWNvbWVzIGl0ZW0ubm9kZS4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogZGZnL0RGR0Jsb2NrV29ya2xpc3QuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIGRmZy9ERkdCbG9ja1dvcmtsaXN0Lmg6CisgICAgICAgIChKU0M6OkRGRzo6QmxvY2tXb3Jr
bGlzdDo6bm90RW1wdHkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkJsb2NrV2l0aDo6
QmxvY2tXaXRoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpCbG9ja1dpdGg6Om9wZXJh
dG9yIGJvb2wpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkV4dGVuZGVkQmxvY2tXb3Jr
bGlzdDo6RXh0ZW5kZWRCbG9ja1dvcmtsaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZH
OjpFeHRlbmRlZEJsb2NrV29ya2xpc3Q6OmZvcmNlUHVzaCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkRGRzo6RXh0ZW5kZWRCbG9ja1dvcmtsaXN0OjpwdXNoKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6REZHOjpFeHRlbmRlZEJsb2NrV29ya2xpc3Q6Om5vdEVtcHR5KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6REZHOjpFeHRlbmRlZEJsb2NrV29ya2xpc3Q6OnBvcCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkRGRzo6QmxvY2tXaXRoT3JkZXI6OkJsb2NrV2l0aE9yZGVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6REZHOjpCbG9ja1dpdGhPcmRlcjo6b3BlcmF0b3IgYm9vbCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6UG9zdE9yZGVyQmxvY2tXb3JrbGlzdDo6cHVzaCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6UG9zdE9yZGVyQmxvY2tXb3JrbGlzdDo6bm90
RW1wdHkpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdEb21pbmF0b3JzLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpEb21pbmF0b3JzOjpjb21wdXRlKToKKyAgICAgICAgKiBkZmcvREZHR3Jh
cGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpibG9ja3NJblBvc3RPcmRlcik6Cisg
ICAgICAgICogZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlByZVBvc3ROdW1iZXJpbmc6OmNvbXB1dGUpOgorCiAyMDE1LTEwLTIxICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQXJyYXkg
cHJldmlld3Mgd2l0aCBTeW1ib2wgb2JqZWN0cyBoYXZlIHRvbyBmZXcgcHJldmlldyB2YWx1ZXMK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE5MTM5MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTUwLDcgKzE1MCw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RG
R0Jhc2ljQmxvY2suY3BwCiAgICAgZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcAogICAgIGRm
Zy9ERkdCbG9ja1NldC5jcHAKLSAgICBkZmcvREZHQmxvY2tXb3JrbGlzdC5jcHAKICAgICBkZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCiAgICAgZGZnL0RGR0NGQVBoYXNlLmNwcAogICAgIGRmZy9E
RkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDE5MTM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NDUs
NyArNTQ1LDYgQEAKIAkJMEZDM0NDRkMxOUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrTWFwLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMzQ0NGNTE5
QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tNYXAuaCAqLzsgfTsKIAkJMEZDM0NDRkQxOUFEQTQx
MDAwNkFDNzJBIC8qIERGR0Jsb2NrTWFwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDM0NDRjYxOUFEQTQxMDAwNkFDNzJBIC8qIERGR0Js
b2NrTWFwSW5saW5lcy5oICovOyB9OwogCQkwRkMzQ0NGRTE5QURBNDEwMDA2QUM3MkEgLyogREZH
QmxvY2tTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQzNDQ0Y3MTlBREE0MTAwMDZBQzcyQSAvKiBERkdCbG9ja1NldC5oICovOyB9OwotCQkwRkMz
Q0NGRjE5QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tXb3JrbGlzdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMzQ0NGODE5QURBNDEwMDA2QUM3
MkEgLyogREZHQmxvY2tXb3JrbGlzdC5jcHAgKi87IH07CiAJCTBGQzNDRDAwMTlBREE0MTAwMDZB
QzcyQSAvKiBERkdCbG9ja1dvcmtsaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkMzQ0NGOTE5QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tXb3Jr
bGlzdC5oICovOyB9OwogCQkwRkMzQ0QwMTE5QURBNDExMDA2QUM3MkEgLyogREZHTmFpdmVEb21p
bmF0b3JzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQzNDQ0ZBMTlBREE0MTAwMDZBQzcyQSAvKiBERkdOYWl2ZURvbWluYXRvcnMuY3BwICovOyB9
OwogCQkwRkMzQ0QwMjE5QURBNDExMDA2QUM3MkEgLyogREZHTmFpdmVEb21pbmF0b3JzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMzQ0NGQjE5QURB
NDEwMDA2QUM3MkEgLyogREZHTmFpdmVEb21pbmF0b3JzLmggKi87IH07CkBAIC0yNDEwLDcgKzI0
MDksNiBAQAogCQkwRkMzQ0NGNTE5QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tNYXAuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQmxvY2tNYXAuaDsgcGF0aCA9IGRmZy9E
RkdCbG9ja01hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMzQ0NGNjE5QURB
NDEwMDA2QUM3MkEgLyogREZHQmxvY2tNYXBJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR0Jsb2NrTWFwSW5saW5lcy5oOyBwYXRoID0gZGZnL0RGR0Jsb2NrTWFw
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMzQ0NGNzE5QURBNDEw
MDA2QUM3MkEgLyogREZHQmxvY2tTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHQmxvY2tTZXQuaDsgcGF0aCA9IGRmZy9ERkdCbG9ja1NldC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkwRkMzQ0NGODE5QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tXb3Jr
bGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdCbG9ja1dv
cmtsaXN0LmNwcDsgcGF0aCA9IGRmZy9ERkdCbG9ja1dvcmtsaXN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEZDM0NDRjkxOUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrV29y
a2xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQmxvY2tXb3JrbGlz
dC5oOyBwYXRoID0gZGZnL0RGR0Jsb2NrV29ya2xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZDM0NDRkExOUFEQTQxMDAwNkFDNzJBIC8qIERGR05haXZlRG9taW5hdG9ycy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdOYWl2ZURvbWluYXRv
cnMuY3BwOyBwYXRoID0gZGZnL0RGR05haXZlRG9taW5hdG9ycy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGQzNDQ0ZCMTlBREE0MTAwMDZBQzcyQSAvKiBERkdOYWl2ZURvbWlu
YXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTmFpdmVEb21pbmF0
b3JzLmg7IHBhdGggPSBkZmcvREZHTmFpdmVEb21pbmF0b3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC01MjE3LDcgKzUyMTUsNiBAQAogCQkJCTBGQkYxNThBMTlCN0E1MzEwMDY5
NUREMCAvKiBERkdCbG9ja1NldC5jcHAgKi8sCiAJCQkJMEZDM0NDRjcxOUFEQTQxMDAwNkFDNzJB
IC8qIERGR0Jsb2NrU2V0LmggKi8sCiAJCQkJMEZCRjE1OEIxOUI3QTUzMTAwNjk1REQwIC8qIERG
R0Jsb2NrU2V0SW5saW5lcy5oICovLAotCQkJCTBGQzNDQ0Y4MTlBREE0MTAwMDZBQzcyQSAvKiBE
RkdCbG9ja1dvcmtsaXN0LmNwcCAqLywKIAkJCQkwRkMzQ0NGOTE5QURBNDEwMDA2QUM3MkEgLyog
REZHQmxvY2tXb3JrbGlzdC5oICovLAogCQkJCTBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBE
RkdCcmFuY2hEaXJlY3Rpb24uaCAqLywKIAkJCQk4NkVDOURCNDEzMjhERjgyMDAyQjJBRDcgLyog
REZHQnl0ZUNvZGVQYXJzZXIuY3BwICovLApAQCAtNzU2OCw3ICs3NTY1LDYgQEAKIAkJCQlBN0Q4
OUNGMjE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBN0Q4OUNGMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCRjE1OEMxOUI3QTUzMTAwNjk1REQwIC8qIERGR0Jsb2Nr
U2V0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGQzNDQ0ZGMTlBREE0MTAwMDZBQzcyQSAvKiBE
RkdCbG9ja1dvcmtsaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5REM0MTMyOERGODIw
MDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4
MkUyMTE0MTcyQ0UzMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRkZDOTU3MTRFRjkwQTAwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgaW4gU291
cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxvY2tXb3JrbGlz
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCbG9ja1dv
cmtsaXN0LmNwcAkocmV2aXNpb24gMTkxMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCbG9ja1dvcmtsaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw4NiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJERkdCbG9ja1dvcmtsaXN0LmgiCi0KLSNpZiBFTkFCTEUoREZH
X0pJVCkKLQotI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2suaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewotCi1CbG9ja1dvcmtsaXN0OjpCbG9ja1dvcmtsaXN0KCkKLXsKLX0KLQot
QmxvY2tXb3JrbGlzdDo6fkJsb2NrV29ya2xpc3QoKQotewotfQotCi1ib29sIEJsb2NrV29ya2xp
c3Q6OnB1c2goQmFzaWNCbG9jayogYmxvY2spCi17Ci0gICAgaWYgKCFtX3NlZW4uYWRkKGJsb2Nr
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIG1fc3RhY2suYXBwZW5kKGJsb2Nr
KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotQmFzaWNCbG9jayogQmxvY2tXb3JrbGlzdDo6cG9w
KCkKLXsKLSAgICBpZiAobV9zdGFjay5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIAotICAgIHJldHVybiBtX3N0YWNrLnRha2VMYXN0KCk7Ci19Ci0KLVBvc3RPcmRlckJs
b2NrV29ya2xpc3Q6OlBvc3RPcmRlckJsb2NrV29ya2xpc3QoKQotewotfQotCi1Qb3N0T3JkZXJC
bG9ja1dvcmtsaXN0Ojp+UG9zdE9yZGVyQmxvY2tXb3JrbGlzdCgpCi17Ci19Ci0KLWJvb2wgUG9z
dE9yZGVyQmxvY2tXb3JrbGlzdDo6cHVzaFByZShCYXNpY0Jsb2NrKiBibG9jaykKLXsKLSAgICBy
ZXR1cm4gbV93b3JrbGlzdC5wdXNoKGJsb2NrLCBQcmVPcmRlcik7Ci19Ci0KLXZvaWQgUG9zdE9y
ZGVyQmxvY2tXb3JrbGlzdDo6cHVzaFBvc3QoQmFzaWNCbG9jayogYmxvY2spCi17Ci0gICAgbV93
b3JrbGlzdC5mb3JjZVB1c2goYmxvY2ssIFBvc3RPcmRlcik7Ci19Ci0KLUJsb2NrV2l0aE9yZGVy
IFBvc3RPcmRlckJsb2NrV29ya2xpc3Q6OnBvcCgpCi17Ci0gICAgQmxvY2tXaXRoPFZpc2l0T3Jk
ZXI+IHJlc3VsdCA9IG1fd29ya2xpc3QucG9wKCk7Ci0gICAgcmV0dXJuIEJsb2NrV2l0aE9yZGVy
KHJlc3VsdC5ibG9jaywgcmVzdWx0LmRhdGEpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6
REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQmxvY2tXb3JrbGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQmxvY2tXb3JrbGlzdC5oCShyZXZpc2lvbiAxOTEzOTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jsb2NrV29ya2xpc3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzAsMTUxICszMCwyOSBAQAogCiAjaW5jbHVkZSAiREZHQmFzaWNCbG9jay5oIgogI2luY2x1ZGUg
IkRGR0Jsb2NrU2V0LmgiCisjaW5jbHVkZSA8d3RmL0dyYXBoTm9kZVdvcmtsaXN0Lmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
IHN0cnVjdCBCYXNpY0Jsb2NrOwogCi1jbGFzcyBCbG9ja1dvcmtsaXN0IHsKLXB1YmxpYzoKLSAg
ICBCbG9ja1dvcmtsaXN0KCk7Ci0gICAgfkJsb2NrV29ya2xpc3QoKTsKLSAgICAKLSAgICBib29s
IHB1c2goQmFzaWNCbG9jayopOyAvLyBSZXR1cm5zIHRydWUgaWYgd2UgZGlkbid0IGtub3cgYWJv
dXQgdGhlIGJsb2NrIGJlZm9yZS4KLSAgICAKLSAgICBib29sIG5vdEVtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gIW1fc3RhY2suaXNFbXB0eSgpOyB9Ci0gICAgQmFzaWNCbG9jayogcG9wKCk7Ci0gICAg
Ci1wcml2YXRlOgotICAgIEJsb2NrU2V0IG1fc2VlbjsKLSAgICBWZWN0b3I8QmFzaWNCbG9jayos
IDE2PiBtX3N0YWNrOwotfTsKK3R5cGVkZWYgR3JhcGhOb2RlV29ya2xpc3Q8QmFzaWNCbG9jayos
IEJsb2NrU2V0PiBCbG9ja1dvcmtsaXN0OwogCiAvLyBXaGVuIHlvdSBzYXkgQmxvY2tXaXRoPGlu
dD4geW91IHNob3VsZCByZWFkIGl0IGFzICJibG9jayB3aXRoIGFuIGludCIuCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotc3RydWN0IEJsb2NrV2l0aCB7Ci0gICAgQmxvY2tXaXRoKCkKLSAgICAgICAg
OiBibG9jayhudWxscHRyKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgQmxvY2tXaXRoKEJhc2lj
QmxvY2sqIGJsb2NrLCBjb25zdCBUJiBkYXRhKQotICAgICAgICA6IGJsb2NrKGJsb2NrKQotICAg
ICAgICAsIGRhdGEoZGF0YSkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBibG9jazsgfQotCi0gICAgQmFzaWNCbG9jayogYmxv
Y2s7Ci0gICAgVCBkYXRhOwotfTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHVzaW5nIEJsb2NrV2l0
aCA9IEdyYXBoTm9kZVdpdGg8QmFzaWNCbG9jayosIFQ+OwogCiAvLyBFeHRlbmRlZCBibG9jayB3
b3JrbGlzdCBpcyB1c2VmdWwgZm9yIGVucXVldWVpbmcgc29tZSBtZXRhLWRhdGEgYWxvbmcgd2l0
aCB0aGUgYmxvY2suIEl0IGFsc28KIC8vIHBlcm1pdHMgZm9yY2libHkgZW5xdWV1ZWluZyB0aGlu
Z3MgZXZlbiBpZiB0aGUgYmxvY2sgaGFzIGFscmVhZHkgYmVlbiBzZWVuLiBJdCdzIHVzZWZ1bCBm
b3IKIC8vIHRoaW5ncyBsaWtlIGJ1aWxkaW5nIGEgc3Bhbm5pbmcgdHJlZSwgaW4gd2hpY2ggY2Fz
ZSBUICh0aGUgYXV4aWxpYXJ5IHBheWxvYWQpIHdvdWxkIGJlIHRoZQogLy8gc3VjY2Vzc29yIGlu
ZGV4LgotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIEV4dGVuZGVkQmxvY2tXb3JrbGlzdCB7
Ci1wdWJsaWM6Ci0gICAgRXh0ZW5kZWRCbG9ja1dvcmtsaXN0KCkgeyB9Ci0gICAgCi0gICAgdm9p
ZCBmb3JjZVB1c2goY29uc3QgQmxvY2tXaXRoPFQ+JiBlbnRyeSkKLSAgICB7Ci0gICAgICAgIG1f
c3RhY2suYXBwZW5kKGVudHJ5KTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBmb3JjZVB1c2goQmFz
aWNCbG9jayogYmxvY2ssIGNvbnN0IFQmIGRhdGEpCi0gICAgewotICAgICAgICBmb3JjZVB1c2go
QmxvY2tXaXRoPFQ+KGJsb2NrLCBkYXRhKSk7Ci0gICAgfQotICAgIAotICAgIGJvb2wgcHVzaChj
b25zdCBCbG9ja1dpdGg8VD4mIGVudHJ5KQotICAgIHsKLSAgICAgICAgaWYgKCFtX3NlZW4uYWRk
KGVudHJ5LmJsb2NrKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAg
ICAgIGZvcmNlUHVzaChlbnRyeSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAK
LSAgICBib29sIHB1c2goQmFzaWNCbG9jayogYmxvY2ssIGNvbnN0IFQmIGRhdGEpCi0gICAgewot
ICAgICAgICByZXR1cm4gcHVzaChCbG9ja1dpdGg8VD4oYmxvY2ssIGRhdGEpKTsKLSAgICB9Ci0g
ICAgCi0gICAgYm9vbCBub3RFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX3N0YWNrLmlzRW1wdHko
KTsgfQotICAgIAotICAgIEJsb2NrV2l0aDxUPiBwb3AoKQotICAgIHsKLSAgICAgICAgaWYgKG1f
c3RhY2suaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIEJsb2NrV2l0aDxUPigpOwotICAg
ICAgICAKLSAgICAgICAgcmV0dXJuIG1fc3RhY2sudGFrZUxhc3QoKTsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgQmxvY2tTZXQgbV9zZWVuOwotICAgIFZlY3RvcjxCbG9ja1dpdGg8VD4+IG1fc3Rh
Y2s7Ci19OwotCi1lbnVtIFZpc2l0T3JkZXIgewotICAgIFByZU9yZGVyLAotICAgIFBvc3RPcmRl
cgotfTsKLQotc3RydWN0IEJsb2NrV2l0aE9yZGVyIHsKLSAgICBCbG9ja1dpdGhPcmRlcigpCi0g
ICAgICAgIDogYmxvY2sobnVsbHB0cikKLSAgICAgICAgLCBvcmRlcihQcmVPcmRlcikKLSAgICB7
Ci0gICAgfQotICAgIAotICAgIEJsb2NrV2l0aE9yZGVyKEJhc2ljQmxvY2sqIGJsb2NrLCBWaXNp
dE9yZGVyIG9yZGVyKQotICAgICAgICA6IGJsb2NrKGJsb2NrKQotICAgICAgICAsIG9yZGVyKG9y
ZGVyKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuIGJsb2NrOyB9Ci0KLSAgICBCYXNpY0Jsb2NrKiBibG9jazsKLSAgICBWaXNp
dE9yZGVyIG9yZGVyOwotfTsKLQotLy8gQmxvY2sgd29ya2xpc3Qgc3VpdGFibGUgZm9yIHBvc3Qt
b3JkZXIgdHJhdmVyc2FsLgotY2xhc3MgUG9zdE9yZGVyQmxvY2tXb3JrbGlzdCB7Ci1wdWJsaWM6
Ci0gICAgUG9zdE9yZGVyQmxvY2tXb3JrbGlzdCgpOwotICAgIH5Qb3N0T3JkZXJCbG9ja1dvcmts
aXN0KCk7Ci0gICAgCi0gICAgYm9vbCBwdXNoUHJlKEJhc2ljQmxvY2sqKTsKLSAgICB2b2lkIHB1
c2hQb3N0KEJhc2ljQmxvY2sqKTsKLSAgICAKLSAgICBib29sIHB1c2goQmFzaWNCbG9jayogYmxv
Y2ssIFZpc2l0T3JkZXIgb3JkZXIgPSBQcmVPcmRlcikKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAo
b3JkZXIpIHsKLSAgICAgICAgY2FzZSBQcmVPcmRlcjoKLSAgICAgICAgICAgIHJldHVybiBwdXNo
UHJlKGJsb2NrKTsKLSAgICAgICAgY2FzZSBQb3N0T3JkZXI6Ci0gICAgICAgICAgICBwdXNoUG9z
dChibG9jayk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIGJvb2wgcHVzaChjb25zdCBCbG9ja1dpdGhPcmRlciYgZGF0YSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBwdXNoKGRhdGEuYmxvY2ssIGRhdGEub3JkZXIpOwotICAgIH0KLSAgICAKLSAg
ICBib29sIG5vdEVtcHR5KCkgY29uc3QgeyByZXR1cm4gbV93b3JrbGlzdC5ub3RFbXB0eSgpOyB9
Ci0gICAgQmxvY2tXaXRoT3JkZXIgcG9wKCk7Ci0KLXByaXZhdGU6Ci0gICAgRXh0ZW5kZWRCbG9j
a1dvcmtsaXN0PFZpc2l0T3JkZXI+IG1fd29ya2xpc3Q7Ci19OwordGVtcGxhdGU8dHlwZW5hbWUg
VD4gdXNpbmcgRXh0ZW5kZWRCbG9ja1dvcmtsaXN0ID0gRXh0ZW5kZWRHcmFwaE5vZGVXb3JrbGlz
dDxCYXNpY0Jsb2NrKiwgVCwgQmxvY2tTZXQ+OworCit0eXBlZGVmIEdyYXBoVmlzaXRPcmRlciBW
aXNpdE9yZGVyOworCit0eXBlZGVmIEdyYXBoTm9kZVdpdGhPcmRlcjxCYXNpY0Jsb2NrKj4gQmxv
Y2tXaXRoT3JkZXI7CisKK3R5cGVkZWYgUG9zdE9yZGVyR3JhcGhOb2RlV29ya2xpc3Q8QmFzaWNC
bG9jayosIEJsb2NrU2V0PiBQb3N0T3JkZXJCbG9ja1dvcmtsaXN0OwogCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6REZHCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9taW5h
dG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21p
bmF0b3JzLmNwcAkocmV2aXNpb24gMTkxMzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb21pbmF0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTA4LDcgKzEw
OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHdvcmtsaXN0LnB1c2gobV9ncmFwaC5ibG9jaygwKSwg
MCk7CiAgICAgICAgIAogICAgICAgICB3aGlsZSAoQmxvY2tXaXRoPHVuc2lnbmVkPiBpdGVtID0g
d29ya2xpc3QucG9wKCkpIHsKLSAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gaXRlbS5i
bG9jazsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gaXRlbS5ub2RlOwogICAgICAg
ICAgICAgdW5zaWduZWQgc3VjY2Vzc29ySW5kZXggPSBpdGVtLmRhdGE7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIC8vIFdlIGluaXRpYWxseSBwdXNoIHdpdGggc3VjY2Vzc29ySW5kZXggPSAw
IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3Qgd2UgaGF2ZSBhbnkKQEAgLTM1NSwxOCArMzU1
LDE4IEBAIHZvaWQgRG9taW5hdG9yczo6Y29tcHV0ZShHcmFwaCYgZ3JhcGgpCiAgICAgCiAgICAg
Ly8gUGxhaW4gc3RhY2stYmFzZWQgd29ya2xpc3QgYmVjYXVzZSB3ZSBhcmUgZ3VhcmFudGVlZCB0
byBzZWUgZWFjaCBibG9jayBleGFjdGx5IG9uY2UgYW55d2F5LgogICAgIFZlY3RvcjxCbG9ja1dp
dGhPcmRlcj4gd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QuYXBwZW5kKEJsb2NrV2l0aE9yZGVyKGdy
YXBoLmJsb2NrKDApLCBQcmVPcmRlcikpOworICAgIHdvcmtsaXN0LmFwcGVuZChCbG9ja1dpdGhP
cmRlcihncmFwaC5ibG9jaygwKSwgVmlzaXRPcmRlcjo6UHJlKSk7CiAgICAgd2hpbGUgKCF3b3Jr
bGlzdC5pc0VtcHR5KCkpIHsKICAgICAgICAgQmxvY2tXaXRoT3JkZXIgaXRlbSA9IHdvcmtsaXN0
LnRha2VMYXN0KCk7CiAgICAgICAgIHN3aXRjaCAoaXRlbS5vcmRlcikgewotICAgICAgICBjYXNl
IFByZU9yZGVyOgotICAgICAgICAgICAgbV9kYXRhW2l0ZW0uYmxvY2tdLnByZU51bWJlciA9IG5l
eHRQcmVOdW1iZXIrKzsKLSAgICAgICAgICAgIHdvcmtsaXN0LmFwcGVuZChCbG9ja1dpdGhPcmRl
cihpdGVtLmJsb2NrLCBQb3N0T3JkZXIpKTsKLSAgICAgICAgICAgIGZvciAoQmFzaWNCbG9jayog
a2lkIDogbV9kYXRhW2l0ZW0uYmxvY2tdLmlkb21LaWRzKQotICAgICAgICAgICAgICAgIHdvcmts
aXN0LmFwcGVuZChCbG9ja1dpdGhPcmRlcihraWQsIFByZU9yZGVyKSk7CisgICAgICAgIGNhc2Ug
VmlzaXRPcmRlcjo6UHJlOgorICAgICAgICAgICAgbV9kYXRhW2l0ZW0ubm9kZV0ucHJlTnVtYmVy
ID0gbmV4dFByZU51bWJlcisrOworICAgICAgICAgICAgd29ya2xpc3QuYXBwZW5kKEJsb2NrV2l0
aE9yZGVyKGl0ZW0ubm9kZSwgVmlzaXRPcmRlcjo6UG9zdCkpOworICAgICAgICAgICAgZm9yIChC
YXNpY0Jsb2NrKiBraWQgOiBtX2RhdGFbaXRlbS5ub2RlXS5pZG9tS2lkcykKKyAgICAgICAgICAg
ICAgICB3b3JrbGlzdC5hcHBlbmQoQmxvY2tXaXRoT3JkZXIoa2lkLCBWaXNpdE9yZGVyOjpQcmUp
KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBvc3RPcmRlcjoKLSAgICAgICAg
ICAgIG1fZGF0YVtpdGVtLmJsb2NrXS5wb3N0TnVtYmVyID0gbmV4dFBvc3ROdW1iZXIrKzsKKyAg
ICAgICAgY2FzZSBWaXNpdE9yZGVyOjpQb3N0OgorICAgICAgICAgICAgbV9kYXRhW2l0ZW0ubm9k
ZV0ucG9zdE51bWJlciA9IG5leHRQb3N0TnVtYmVyKys7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3Bw
CShyZXZpc2lvbiAxOTEzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAyLDEzICs4MDIsMTMgQEAgQmxvY2tMaXN0IEdyYXBo
OjpibG9ja3NJblBvc3RPcmRlcigpCiAgICAgd29ya2xpc3QucHVzaChibG9jaygwKSk7CiAgICAg
d2hpbGUgKEJsb2NrV2l0aE9yZGVyIGl0ZW0gPSB3b3JrbGlzdC5wb3AoKSkgewogICAgICAgICBz
d2l0Y2ggKGl0ZW0ub3JkZXIpIHsKLSAgICAgICAgY2FzZSBQcmVPcmRlcjoKLSAgICAgICAgICAg
IHdvcmtsaXN0LnB1c2hQb3N0KGl0ZW0uYmxvY2spOwotICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gaXRlbS5ibG9jay0+bnVtU3VjY2Vzc29ycygpOyBpLS07KQotICAgICAgICAgICAgICAg
IHdvcmtsaXN0LnB1c2goaXRlbS5ibG9jay0+c3VjY2Vzc29yKGkpKTsKKyAgICAgICAgY2FzZSBW
aXNpdE9yZGVyOjpQcmU6CisgICAgICAgICAgICB3b3JrbGlzdC5wdXNoUG9zdChpdGVtLm5vZGUp
OworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gaXRlbS5ub2RlLT5udW1TdWNjZXNzb3Jz
KCk7IGktLTspCisgICAgICAgICAgICAgICAgd29ya2xpc3QucHVzaChpdGVtLm5vZGUtPnN1Y2Nl
c3NvcihpKSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQb3N0T3JkZXI6Ci0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKGl0ZW0uYmxvY2spOworICAgICAgICBjYXNlIFZpc2l0
T3JkZXI6OlBvc3Q6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGl0ZW0ubm9kZSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAkocmV2aXNpb24gMTkxMzkz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDcsMTQgKzQ3LDE0IEBAIHZvaWQgUHJlUG9zdE51bWJlcmluZzo6
Y29tcHV0ZShHcmFwaCYgZ3IKICAgICB1bnNpZ25lZCBuZXh0UG9zdE51bWJlciA9IDA7CiAgICAg
d2hpbGUgKEJsb2NrV2l0aE9yZGVyIGl0ZW0gPSB3b3JrbGlzdC5wb3AoKSkgewogICAgICAgICBz
d2l0Y2ggKGl0ZW0ub3JkZXIpIHsKLSAgICAgICAgY2FzZSBQcmVPcmRlcjoKLSAgICAgICAgICAg
IG1fbWFwW2l0ZW0uYmxvY2tdLm1fcHJlTnVtYmVyID0gbmV4dFByZU51bWJlcisrOwotICAgICAg
ICAgICAgd29ya2xpc3QucHVzaFBvc3QoaXRlbS5ibG9jayk7Ci0gICAgICAgICAgICBmb3IgKEJh
c2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGl0ZW0uYmxvY2stPnN1Y2Nlc3NvcnMoKSkKKyAgICAgICAg
Y2FzZSBWaXNpdE9yZGVyOjpQcmU6CisgICAgICAgICAgICBtX21hcFtpdGVtLm5vZGVdLm1fcHJl
TnVtYmVyID0gbmV4dFByZU51bWJlcisrOworICAgICAgICAgICAgd29ya2xpc3QucHVzaFBvc3Qo
aXRlbS5ub2RlKTsKKyAgICAgICAgICAgIGZvciAoQmFzaWNCbG9jayogc3VjY2Vzc29yIDogaXRl
bS5ub2RlLT5zdWNjZXNzb3JzKCkpCiAgICAgICAgICAgICAgICAgd29ya2xpc3QucHVzaChzdWNj
ZXNzb3IpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUG9zdE9yZGVyOgotICAg
ICAgICAgICAgbV9tYXBbaXRlbS5ibG9ja10ubV9wb3N0TnVtYmVyID0gbmV4dFBvc3ROdW1iZXIr
KzsKKyAgICAgICAgY2FzZSBWaXNpdE9yZGVyOjpQb3N0OgorICAgICAgICAgICAgbV9tYXBbaXRl
bS5ub2RlXS5tX3Bvc3ROdW1iZXIgPSBuZXh0UG9zdE51bWJlcisrOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTkxMzkzKQorKysgU291cmNl
L1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MCBAQAorMjAxNS0xMC0y
MSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEZhY3RvciBvdXQg
dGhlIGdyYXBoIG5vZGUgd29ya2xpc3RzIGZyb20gREZHIGludG8gV1RGCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA0MTEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgbmV3IEdyYXBoTm9kZVdvcmts
aXN0LmggZmlsZSBpcyBiYXNpY2FsbHkganVzdCB0aGUgZnVuY3Rpb25hbGl0eSBmcm9tIHRoZSBv
bGQKKyAgICAgICAgREZHQmxvY2tXb3JrbGlzdC5oLCBidXQgdGVtcGxhdGl6ZWQgdG8gd29yayBm
b3IgYW55IGdyYXBoIG5vZGUgdHlwZSBhbmQgYW55IGtpbmQgb2YgZ3JhcGgKKyAgICAgICAgbm9k
ZSBzZXQuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL0dyYXBoTm9kZVdvcmtsaXN0
Lmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpHcmFwaE5vZGVXb3JrbGlzdDo6cHVzaCk6CisgICAg
ICAgIChXVEY6OkdyYXBoTm9kZVdvcmtsaXN0Ojpub3RFbXB0eSk6CisgICAgICAgIChXVEY6Okdy
YXBoTm9kZVdvcmtsaXN0Ojpwb3ApOgorICAgICAgICAoV1RGOjpHcmFwaE5vZGVXaXRoOjpHcmFw
aE5vZGVXaXRoKToKKyAgICAgICAgKFdURjo6R3JhcGhOb2RlV2l0aDo6b3BlcmF0b3IgYm9vbCk6
CisgICAgICAgIChXVEY6OkV4dGVuZGVkR3JhcGhOb2RlV29ya2xpc3Q6OkV4dGVuZGVkR3JhcGhO
b2RlV29ya2xpc3QpOgorICAgICAgICAoV1RGOjpFeHRlbmRlZEdyYXBoTm9kZVdvcmtsaXN0Ojpm
b3JjZVB1c2gpOgorICAgICAgICAoV1RGOjpFeHRlbmRlZEdyYXBoTm9kZVdvcmtsaXN0OjpwdXNo
KToKKyAgICAgICAgKFdURjo6RXh0ZW5kZWRHcmFwaE5vZGVXb3JrbGlzdDo6bm90RW1wdHkpOgor
ICAgICAgICAoV1RGOjpFeHRlbmRlZEdyYXBoTm9kZVdvcmtsaXN0Ojpwb3ApOgorICAgICAgICAo
V1RGOjpHcmFwaE5vZGVXaXRoT3JkZXI6OkdyYXBoTm9kZVdpdGhPcmRlcik6CisgICAgICAgIChX
VEY6OkdyYXBoTm9kZVdpdGhPcmRlcjo6b3BlcmF0b3IgYm9vbCk6CisgICAgICAgIChXVEY6OlBv
c3RPcmRlckdyYXBoTm9kZVdvcmtsaXN0OjpQb3N0T3JkZXJHcmFwaE5vZGVXb3JrbGlzdCk6Cisg
ICAgICAgIChXVEY6OlBvc3RPcmRlckdyYXBoTm9kZVdvcmtsaXN0Ojp+UG9zdE9yZGVyR3JhcGhO
b2RlV29ya2xpc3QpOgorICAgICAgICAoV1RGOjpQb3N0T3JkZXJHcmFwaE5vZGVXb3JrbGlzdDo6
cHVzaFByZSk6CisgICAgICAgIChXVEY6OlBvc3RPcmRlckdyYXBoTm9kZVdvcmtsaXN0OjpwdXNo
UG9zdCk6CisgICAgICAgIChXVEY6OlBvc3RPcmRlckdyYXBoTm9kZVdvcmtsaXN0OjpwdXNoKToK
KyAgICAgICAgKFdURjo6UG9zdE9yZGVyR3JhcGhOb2RlV29ya2xpc3Q6Om5vdEVtcHR5KToKKyAg
ICAgICAgKFdURjo6UG9zdE9yZGVyR3JhcGhOb2RlV29ya2xpc3Q6OnBvcCk6CisgICAgICAgICog
d3RmL0hhc2hUYWJsZS5oOgorICAgICAgICAoV1RGOjpIYXNoVGFibGVBZGRSZXN1bHQ6Okhhc2hU
YWJsZUFkZFJlc3VsdCk6CisgICAgICAgIChXVEY6Okhhc2hUYWJsZUFkZFJlc3VsdDo6b3BlcmF0
b3IgYm9vbCk6CisKIDIwMTUtMTAtMjAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgVHJ5IHRvIGZpeCB0aGUgYnVpbGQgYnkgZGlzYWJsaW5nIE1BQ19H
RVNUVVJFX0VWRU5UUyBvbiAxMC45IGFuZCAxMC4xMApJbmRleDogU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTEzOTMpCisrKyBTb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3
IEBACiAJCTBGRTQ0NzlEMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNDQ3OUIxQjdBQUEwMzAwOTQ5
OEVCIC8qIFdvcmRMb2NrLmggKi87IH07CiAJCTBGRUIzRENGMUJCNUQ2ODQwMDlEN0FBRCAvKiBT
aGFyZWRUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkVCM0RDRTFCQjVENjg0MDA5RDdBQUQgLyogU2hhcmVkVGFzay5oICovOyB9OwogCQkwRkVC
M0REMTFCQjczNjZCMDA5RDdBQUQgLyogUGFyYWxsZWxWZWN0b3JJdGVyYXRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQjNERDAxQkI3MzY2QjAw
OUQ3QUFEIC8qIFBhcmFsbGVsVmVjdG9ySXRlcmF0b3IuaCAqLzsgfTsKKwkJMEZFQzg0QUYxQkQ4
MjUzMTAwODBGRjc0IC8qIEdyYXBoTm9kZVdvcmtsaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODRBRTFCRDgyNTMxMDA4MEZGNzQgLyogR3Jh
cGhOb2RlV29ya2xpc3QuaCAqLzsgfTsKIAkJMEZFRDY3QjYxQjIyRDREODAwNjZDRTE1IC8qIFRp
bnlQdHJTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRUQ2N0I1MUIyMkQ0RDgwMDY2Q0UxNSAvKiBUaW55UHRyU2V0LmggKi87IH07CiAJCTBGRjg2
MDk1MUJDQ0JENzQwMDQ1MTI3RiAvKiBQb2ludGVyQ29tcGFyaXNvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGODYwOTQxQkNDQkQ3NDAwNDUxMjdG
IC8qIFBvaW50ZXJDb21wYXJpc29uLmggKi87IH07CiAJCTBGRkYxOURDMUJCMzM0RUIwMDg4NkQ5
MSAvKiBQYXJhbGxlbEhlbHBlclBvb2wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZGRjE5REExQkIzMzRFQjAwODg2RDkxIC8qIFBhcmFsbGVsSGVs
cGVyUG9vbC5jcHAgKi87IH07CkBAIC0zNDQsNiArMzQ1LDcgQEAKIAkJMEZFNDQ3OUIxQjdBQUEw
MzAwOTQ5OEVCIC8qIFdvcmRMb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdvcmRMb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUIzRENFMUJCNUQ2
ODQwMDlEN0FBRCAvKiBTaGFyZWRUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNoYXJlZFRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQjNERDAx
QkI3MzY2QjAwOUQ3QUFEIC8qIFBhcmFsbGVsVmVjdG9ySXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyYWxsZWxWZWN0b3JJdGVyYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRkVDODRBRTFCRDgyNTMxMDA4MEZGNzQgLyogR3JhcGhOb2Rl
V29ya2xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhOb2RlV29y
a2xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFRDY3QjUxQjIyRDREODAw
NjZDRTE1IC8qIFRpbnlQdHJTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VGlueVB0clNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY4NjA5NDFCQ0NC
RDc0MDA0NTEyN0YgLyogUG9pbnRlckNvbXBhcmlzb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUG9pbnRlckNvbXBhcmlzb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEZGRjE5REExQkIzMzRFQjAwODg2RDkxIC8qIFBhcmFsbGVsSGVscGVyUG9vbC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJhbGxlbEhlbHBlclBvb2wu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzc3LDYgKzc3OSw3IEBACiAJCQkJ
MUExRDhCOUQxNzMxODc5ODAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAgKi8sCiAJ
CQkJMUExRDhCOUIxNzMxODZDRTAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5oICovLAog
CQkJCUE4QTQ3MkE4MTUxQTgyNUEwMDQxMjNGRiAvKiBHZXRQdHIuaCAqLywKKwkJCQkwRkVDODRB
RTFCRDgyNTMxMDA4MEZGNzQgLyogR3JhcGhOb2RlV29ya2xpc3QuaCAqLywKIAkJCQkyQ0NEODky
OTE1QzAzOTAyMDAyODUwODMgLyogR3JlZ29yaWFuRGF0ZVRpbWUuY3BwICovLAogCQkJCTJDMDUz
ODUzMTVCQzgxOTAwMEYyMUI5NiAvKiBHcmVnb3JpYW5EYXRlVGltZS5oICovLAogCQkJCUE4QTQ3
MkIzMTUxQTgyNUEwMDQxMjNGRiAvKiBIYXNoQ291bnRlZFNldC5oICovLApAQCAtMTI0OSw2ICsx
MjUyLDcgQEAKIAkJCQkxQUZERTY0ODE5NTIwMUMzMDBDNDhGRkEgLyogVHlwZUNhc3RzQ0YuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDZEMTUxQTgyNUIwMDQxMjNGRiAvKiBVbmlvbkZpbmQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTcwRUNBNjBGMUIwMjQyNjgwMDQ0OTczOSAvKiBVbmlxdWVk
U3RyaW5nSW1wbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFQzg0QUYxQkQ4MjUzMTAwODBGRjc0
IC8qIEdyYXBoTm9kZVdvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ2QTE1MUE4
MjVCMDA0MTIzRkYgLyogVVRGOC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQjkxNTFBODI1
QjAwNDEyM0ZGIC8qIHV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ3RDE1MUE4MjVC
MDA0MTIzRkYgLyogVmFsdWVDaGVjay5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gMTkxMzkzKQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAgc2V0KFdURl9IRUFERVJTCiAgICAg
RnVuY3Rpb25EaXNwYXRjaGVyLmgKICAgICBGdW5jdGlvbmFsLmgKICAgICBHZXRQdHIuaAorICAg
IEdyYXBoTm9kZVdvcmtsaXN0LmgKICAgICBHcmVnb3JpYW5EYXRlVGltZS5oCiAgICAgSGFzaENv
dW50ZWRTZXQuaAogICAgIEhhc2hlci5oCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9HcmFwaE5vZGVX
b3JrbGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0dyYXBoTm9kZVdvcmtsaXN0
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RGL3d0Zi9HcmFwaE5vZGVXb3JrbGlzdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgR3JhcGhOb2RlV29ya2xpc3RfaAorI2RlZmlu
ZSBHcmFwaE5vZGVXb3JrbGlzdF9oCisKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1l
c3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgTm9kZSwgdHlwZW5hbWUgU2V0ID0gSGFz
aFNldDxOb2RlPj4KK2NsYXNzIEdyYXBoTm9kZVdvcmtsaXN0IHsKK3B1YmxpYzoKKyAgICBHcmFw
aE5vZGVXb3JrbGlzdCgpIHsgfQorICAgIH5HcmFwaE5vZGVXb3JrbGlzdCgpIHsgfQorCisgICAg
Ly8gUmV0dXJucyB0cnVlIGlmIHdlIGRpZG4ndCBrbm93IGFib3V0IHRoZSBub2RlIGJlZm9yZS4K
KyAgICBib29sIHB1c2goTm9kZSBub2RlKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3NlZW4uYWRk
KG5vZGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtX3N0YWNrLmFwcGVu
ZChub2RlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYm9vbCBub3RFbXB0
eSgpIGNvbnN0IHsgcmV0dXJuICFtX3N0YWNrLmlzRW1wdHkoKTsgfQorICAgIAorICAgIE5vZGUg
cG9wKCkKKyAgICB7CisgICAgICAgIGlmIChtX3N0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
IHJldHVybiBOb2RlKCk7CisgICAgICAgIHJldHVybiBtX3N0YWNrLnRha2VMYXN0KCk7CisgICAg
fQorCitwcml2YXRlOgorICAgIFNldCBtX3NlZW47CisgICAgVmVjdG9yPE5vZGUsIDE2PiBtX3N0
YWNrOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgTm9kZSwgdHlwZW5hbWUgVD4KK3N0cnVjdCBH
cmFwaE5vZGVXaXRoIHsKKyAgICBHcmFwaE5vZGVXaXRoKCkKKyAgICAgICAgOiBub2RlKCkKKyAg
ICAgICAgLCBkYXRhKCkKKyAgICB7CisgICAgfQorCisgICAgR3JhcGhOb2RlV2l0aChOb2RlIG5v
ZGUsIGNvbnN0IFQmIGRhdGEpCisgICAgICAgIDogbm9kZShub2RlKQorICAgICAgICAsIGRhdGEo
ZGF0YSkKKyAgICB7CisgICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0
IHsgcmV0dXJuIG5vZGU7IH0KKyAgICAKKyAgICBOb2RlIG5vZGU7CisgICAgVCBkYXRhOworfTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgTm9kZSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgU2V0ID0gSGFz
aFNldDxOb2RlPj4KK2NsYXNzIEV4dGVuZGVkR3JhcGhOb2RlV29ya2xpc3QgeworcHVibGljOgor
ICAgIEV4dGVuZGVkR3JhcGhOb2RlV29ya2xpc3QoKSB7IH0KKworICAgIHZvaWQgZm9yY2VQdXNo
KGNvbnN0IEdyYXBoTm9kZVdpdGg8Tm9kZSwgVD4mIGVudHJ5KQorICAgIHsKKyAgICAgICAgbV9z
dGFjay5hcHBlbmQoZW50cnkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGZvcmNlUHVzaChOb2Rl
IG5vZGUsIGNvbnN0IFQmIGRhdGEpCisgICAgeworICAgICAgICBmb3JjZVB1c2goR3JhcGhOb2Rl
V2l0aDxOb2RlLCBUPihub2RlLCBkYXRhKSk7CisgICAgfQorICAgIAorICAgIGJvb2wgcHVzaChj
b25zdCBHcmFwaE5vZGVXaXRoPE5vZGUsIFQ+JiBlbnRyeSkKKyAgICB7CisgICAgICAgIGlmICgh
bV9zZWVuLmFkZChlbnRyeS5ub2RlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCisgICAgICAgIGZvcmNlUHVzaChlbnRyeSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICAKKyAgICBib29sIHB1c2goTm9kZSBub2RlLCBjb25zdCBUJiBkYXRhKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHB1c2goR3JhcGhOb2RlV2l0aDxOb2RlLCBUPihub2RlLCBkYXRhKSk7
CisgICAgfQorICAgIAorICAgIGJvb2wgbm90RW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9zdGFj
ay5pc0VtcHR5KCk7IH0KKyAgICAKKyAgICBHcmFwaE5vZGVXaXRoPE5vZGUsIFQ+IHBvcCgpCisg
ICAgeworICAgICAgICBpZiAobV9zdGFjay5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4g
R3JhcGhOb2RlV2l0aDxOb2RlLCBUPigpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIG1fc3Rh
Y2sudGFrZUxhc3QoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU2V0IG1fc2VlbjsKKyAgICBW
ZWN0b3I8R3JhcGhOb2RlV2l0aDxOb2RlLCBUPj4gbV9zdGFjazsKK307CisKK2VudW0gY2xhc3Mg
R3JhcGhWaXNpdE9yZGVyIDogdWludDhfdCB7CisgICAgUHJlLAorICAgIFBvc3QKK307CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIE5vZGU+CitzdHJ1Y3QgR3JhcGhOb2RlV2l0aE9yZGVyIHsKKyAgICBH
cmFwaE5vZGVXaXRoT3JkZXIoKQorICAgICAgICA6IG5vZGUoKQorICAgICAgICAsIG9yZGVyKEdy
YXBoVmlzaXRPcmRlcjo6UHJlKQorICAgIHsKKyAgICB9CisgICAgCisgICAgR3JhcGhOb2RlV2l0
aE9yZGVyKE5vZGUgbm9kZSwgR3JhcGhWaXNpdE9yZGVyIG9yZGVyKQorICAgICAgICA6IG5vZGUo
bm9kZSkKKyAgICAgICAgLCBvcmRlcihvcmRlcikKKyAgICB7CisgICAgfQorICAgIAorICAgIGV4
cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBub2RlOyB9CisKKyAgICBOb2Rl
IG5vZGU7CisgICAgR3JhcGhWaXNpdE9yZGVyIG9yZGVyOworfTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgTm9kZSwgdHlwZW5hbWUgU2V0ID0gSGFzaFNldDxOb2RlPj4KK2NsYXNzIFBvc3RPcmRlckdy
YXBoTm9kZVdvcmtsaXN0IHsKK3B1YmxpYzoKKyAgICBQb3N0T3JkZXJHcmFwaE5vZGVXb3JrbGlz
dCgpCisgICAgeworICAgIH0KKyAgICAKKyAgICB+UG9zdE9yZGVyR3JhcGhOb2RlV29ya2xpc3Qo
KQorICAgIHsKKyAgICB9CisgICAgCisgICAgYm9vbCBwdXNoUHJlKE5vZGUgbm9kZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBtX3dvcmtsaXN0LnB1c2gobm9kZSwgR3JhcGhWaXNpdE9yZGVyOjpQ
cmUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHB1c2hQb3N0KE5vZGUgbm9kZSkKKyAgICB7Cisg
ICAgICAgIG1fd29ya2xpc3QuZm9yY2VQdXNoKG5vZGUsIEdyYXBoVmlzaXRPcmRlcjo6UG9zdCk7
CisgICAgfQorICAgIAorICAgIGJvb2wgcHVzaChOb2RlIG5vZGUsIEdyYXBoVmlzaXRPcmRlciBv
cmRlciA9IEdyYXBoVmlzaXRPcmRlcjo6UHJlKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcmRl
cikgeworICAgICAgICBjYXNlIEdyYXBoVmlzaXRPcmRlcjo6UHJlOgorICAgICAgICAgICAgcmV0
dXJuIHB1c2hQcmUobm9kZSk7CisgICAgICAgIGNhc2UgR3JhcGhWaXNpdE9yZGVyOjpQb3N0Ogor
ICAgICAgICAgICAgcHVzaFBvc3Qobm9kZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGJvb2wgcHVzaChjb25zdCBHcmFwaE5vZGVXaXRoT3Jk
ZXI8Tm9kZT4mIGRhdGEpCisgICAgeworICAgICAgICByZXR1cm4gcHVzaChkYXRhLm5vZGUsIGRh
dGEub3JkZXIpOworICAgIH0KKyAgICAKKyAgICBib29sIG5vdEVtcHR5KCkgY29uc3QgeyByZXR1
cm4gbV93b3JrbGlzdC5ub3RFbXB0eSgpOyB9CisgICAgCisgICAgR3JhcGhOb2RlV2l0aE9yZGVy
PE5vZGU+IHBvcCgpCisgICAgeworICAgICAgICBHcmFwaE5vZGVXaXRoPE5vZGUsIEdyYXBoVmlz
aXRPcmRlcj4gcmVzdWx0ID0gbV93b3JrbGlzdC5wb3AoKTsKKyAgICAgICAgcmV0dXJuIEdyYXBo
Tm9kZVdpdGhPcmRlcjxOb2RlPihyZXN1bHQubm9kZSwgcmVzdWx0LmRhdGEpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBFeHRlbmRlZEdyYXBoTm9kZVdvcmtsaXN0PE5vZGUsIEdyYXBoVmlzaXRP
cmRlciwgU2V0PiBtX3dvcmtsaXN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5n
IFdURjo6R3JhcGhOb2RlV29ya2xpc3Q7Cit1c2luZyBXVEY6OkdyYXBoTm9kZVdpdGg7Cit1c2lu
ZyBXVEY6OkV4dGVuZGVkR3JhcGhOb2RlV29ya2xpc3Q7Cit1c2luZyBXVEY6OkdyYXBoVmlzaXRP
cmRlcjsKK3VzaW5nIFdURjo6R3JhcGhOb2RlV2l0aE9yZGVyOwordXNpbmcgV1RGOjpQb3N0T3Jk
ZXJHcmFwaE5vZGVXb3JrbGlzdDsKKworI2VuZGlmIC8vIEdyYXBoTm9kZVdvcmtsaXN0X2gKKwpJ
bmRleDogU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvSGFzaFRhYmxlLmgJKHJldmlzaW9uIDE5MTM5MykKKysrIFNvdXJjZS9XVEYvd3RmL0hh
c2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTAsNiArMjkwLDggQEAgbmFtZXNwYWNlIFdU
RiB7CiAgICAgICAgIEhhc2hUYWJsZUFkZFJlc3VsdChJdGVyYXRvclR5cGUgaXRlciwgYm9vbCBp
c05ld0VudHJ5KSA6IGl0ZXJhdG9yKGl0ZXIpLCBpc05ld0VudHJ5KGlzTmV3RW50cnkpIHsgfQog
ICAgICAgICBJdGVyYXRvclR5cGUgaXRlcmF0b3I7CiAgICAgICAgIGJvb2wgaXNOZXdFbnRyeTsK
KworICAgICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gaXNOZXdF
bnRyeTsgfQogICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1l
IFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgo=
</data>
<flag name="review"
          id="288840"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>