<?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>154440</bug_id>
          
          <creation_ts>2016-02-18 23:00:10 -0800</creation_ts>
          <short_desc>[ES6] Implement Proxy.[[Construct]]</short_desc>
          <delta_ts>2016-03-01 04:51:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>154856</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sukolsak</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1166340</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-02-18 23:00:10 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166644</commentid>
    <comment_count>1</comment_count>
      <attachid>271833</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-02-19 18:19:36 -0800</bug_when>
    <thetext>Created attachment 271833
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166645</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-19 18:21:11 -0800</bug_when>
    <thetext>Attachment 271833 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGOperations.cpp:167:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166646</commentid>
    <comment_count>3</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-02-19 18:23:38 -0800</bug_when>
    <thetext>Ran benchmarks because of changing create_this
It&apos;s claiming a big slow down on json-stringify-tinderbox,
but I don&apos;t trust that it&apos;s actually a slow down. I haven&apos;t
changed code related to that benchmark and have seen a slow down (like now),
and I&apos;ve also changed code not related to it and seen a speed up
in the past. I&apos;m going to ignore it for now. When running just
that benchmark without the entire suite, I was getting about a 4% &quot;slowdown&quot;.



Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on Saams-MacBook-Pro (MacBookPro11,3).

VMs tested:
&quot;og&quot; at /Volumes/Data/WK/a/OpenSource/WebKitBuild/Release/jsc (r196836)
&quot;change&quot; at /Volumes/Data/WK/c/OpenSource/WebKitBuild/Release/jsc (r196836)

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

                                                            og                      change                                      
SunSpider:
   3d-cube                                            7.3352+-0.4663            7.1460+-0.1870          might be 1.0265x faster
   3d-morph                                           8.1139+-0.1181            8.0964+-0.1144        
   3d-raytrace                                        9.6134+-2.8296            9.1818+-0.9997          might be 1.0470x faster
   access-binary-trees                                3.0880+-0.0443            3.0793+-0.0598        
   access-fannkuch                                    9.0050+-0.1508            8.8686+-0.2245          might be 1.0154x faster
   access-nbody                                       4.0245+-0.2063            3.9428+-0.0500          might be 1.0207x faster
   access-nsieve                                      4.9777+-0.2602            4.9047+-0.0782          might be 1.0149x faster
   bitops-3bit-bits-in-byte                           1.6918+-0.0608     ?      1.6965+-0.0245        ?
   bitops-bits-in-byte                                4.6413+-0.1482     ?      4.6781+-0.1415        ?
   bitops-bitwise-and                                 3.0629+-0.0525            3.0483+-0.0649        
   bitops-nsieve-bits                                 4.9324+-1.1371            4.5110+-0.2135          might be 1.0934x faster
   controlflow-recursive                              3.5227+-0.1266            3.5150+-0.0640        
   crypto-aes                                         6.0642+-0.0389            6.0491+-0.0793        
   crypto-md5                                         3.8072+-0.0445     ?      3.8101+-0.0630        ?
   crypto-sha1                                        3.4468+-0.0914            3.3488+-0.0455          might be 1.0292x faster
   date-format-tofte                                 10.6065+-0.5264     ?     10.7917+-0.5968        ? might be 1.0175x slower
   date-format-xparb                                  7.1639+-0.3590     ?      7.6572+-1.3926        ? might be 1.0689x slower
   math-cordic                                        4.3578+-0.0657     ?      4.3887+-0.1230        ?
   math-partial-sums                                  7.3992+-0.0502     ?      7.4186+-0.1427        ?
   math-spectral-norm                                 2.9541+-0.0452            2.9510+-0.0163        
   regexp-dna                                         9.7386+-0.3839            9.5715+-0.1910          might be 1.0175x faster
   string-base64                                      6.6731+-0.0606     ?      7.4460+-1.8705        ? might be 1.1158x slower
   string-fasta                                       9.0912+-0.5939            8.9958+-0.2135          might be 1.0106x faster
   string-tagcloud                                   12.3619+-0.2760           12.2238+-0.3188          might be 1.0113x faster
   string-unpack-code                                27.1171+-0.3927     ?     27.6357+-0.7797        ? might be 1.0191x slower
   string-validate-input                              6.3763+-0.0605     ?      6.3915+-0.0894        ?

   &lt;arithmetic&gt;                                       6.9680+-0.1766     ?      6.9749+-0.1716        ? might be 1.0010x slower

                                                            og                      change                                      
LongSpider:
   3d-cube                                         1242.4852+-13.6719        1232.8468+-6.8158        
   3d-morph                                         922.0151+-2.5596          921.1400+-0.8496        
   3d-raytrace                                      966.2213+-6.3557     ?    969.6072+-6.8909        ?
   access-binary-trees                             1245.0384+-11.3726        1240.1152+-4.8851        
   access-fannkuch                                  439.0143+-46.6689         426.0937+-48.7848         might be 1.0303x faster
   access-nbody                                     796.5947+-0.2257          796.5033+-0.1370        
   access-nsieve                                    515.4970+-3.4211     ?    538.3703+-58.0893       ? might be 1.0444x slower
   bitops-3bit-bits-in-byte                          51.5664+-0.2317           51.4462+-0.0411        
   bitops-bits-in-byte                              168.5716+-3.5800     ?    169.2112+-2.8106        ?
   bitops-nsieve-bits                               598.8747+-6.1902          594.7639+-3.1494        
   controlflow-recursive                            706.6451+-3.4939          705.9624+-2.3617        
   crypto-aes                                       989.7089+-4.5953     ?    990.3807+-5.8667        ?
   crypto-md5                                       908.3913+-12.5433    ?    910.6193+-11.0576       ?
   crypto-sha1                                     1153.3921+-5.9309         1152.8166+-4.9250        
   date-format-tofte                                876.1734+-21.3831    ?    876.4246+-12.1941       ?
   date-format-xparb                                995.1245+-4.4365     !   1001.1654+-1.5823        ! definitely 1.0061x slower
   hash-map                                         236.8259+-4.1157          236.4858+-2.8132        
   math-cordic                                      731.4942+-9.0434     ?    738.7069+-9.5928        ?
   math-partial-sums                                636.4109+-0.7241          635.8084+-0.8192        
   math-spectral-norm                               854.4603+-0.7814          853.9714+-0.9064        
   string-base64                                    589.3462+-6.6652     ?    627.6405+-91.9425       ? might be 1.0650x slower
   string-fasta                                     542.2315+-5.4449     ?    548.3340+-12.0857       ? might be 1.0113x slower
   string-tagcloud                                  256.9517+-2.5891          255.6188+-0.9506        

   &lt;geometric&gt;                                      594.3759+-3.8175     ?    596.2281+-4.9291        ? might be 1.0031x slower

                                                            og                      change                                      
V8Spider:
   crypto                                            57.8856+-0.5269           57.3193+-0.1828        
   deltablue                                         76.2763+-2.8686     ?     77.2826+-1.9250        ? might be 1.0132x slower
   earley-boyer                                      59.5703+-0.3917           59.4159+-0.6276        
   raytrace                                          30.1468+-0.4771     ?     30.5571+-0.7821        ? might be 1.0136x slower
   regexp                                            94.7330+-2.2973     ?     94.7757+-1.6146        ?
   richards                                          62.1947+-0.4271     ?     62.5832+-0.6415        ?
   splay                                             50.3670+-4.1729           49.7024+-2.5730          might be 1.0134x faster

   &lt;geometric&gt;                                       58.5024+-0.2974     ?     58.5851+-0.9460        ? might be 1.0014x slower

                                                            og                      change                                      
Octane:
   encrypt                                           0.23992+-0.00382    ?     0.24193+-0.00226       ?
   decrypt                                           4.33483+-0.02945          4.32319+-0.01387       
   deltablue                                x2       0.21232+-0.01646          0.20528+-0.00414         might be 1.0343x faster
   earley                                            0.44867+-0.00994    ?     0.45108+-0.00533       ?
   boyer                                             7.47964+-0.04263          7.47459+-0.01792       
   navier-stokes                            x2       7.60486+-0.00891    ?     7.60855+-0.01461       ?
   raytrace                                 x2       1.38565+-0.02772    ?     1.40023+-0.00514       ? might be 1.0105x slower
   richards                                 x2       0.12613+-0.00208          0.12560+-0.00089       
   splay                                    x2       0.52524+-0.00810          0.51534+-0.00977         might be 1.0192x faster
   regexp                                   x2      39.57396+-0.47047         38.73897+-0.70656         might be 1.0216x faster
   pdfjs                                    x2      58.68395+-0.24273         58.28930+-0.59698       
   mandreel                                 x2      69.95148+-0.19873    ?    70.00130+-0.14337       ?
   gbemu                                    x2      42.50506+-1.06774         42.14435+-0.22374       
   closure                                           0.87863+-0.00905          0.87338+-0.00326       
   jquery                                           11.38190+-0.06962         11.31866+-0.04586       
   box2d                                    x2      15.35900+-0.07890    ?    15.49120+-0.10929       ?
   zlib                                     x2     575.99291+-2.97203    ?   577.16005+-2.72533       ?
   typescript                               x2     957.06177+-5.46219    ?   963.24581+-15.50920      ?

   &lt;geometric&gt;                                       8.20108+-0.05889          8.16650+-0.02706         might be 1.0042x faster

                                                            og                      change                                      
Kraken:
   ai-astar                                          147.391+-2.454      ?     151.310+-6.850         ? might be 1.0266x slower
   audio-beat-detection                               65.647+-0.283      ?      65.717+-0.627         ?
   audio-dft                                         150.811+-15.608           145.208+-0.649           might be 1.0386x faster
   audio-fft                                          48.611+-0.186             48.520+-0.134         
   audio-oscillator                                   74.217+-0.455      ?      74.354+-0.533         ?
   imaging-darkroom                                   89.717+-0.629             89.319+-0.189         
   imaging-desaturate                                 69.847+-4.291             68.393+-0.377           might be 1.0213x faster
   imaging-gaussian-blur                             118.460+-0.151            116.509+-6.020           might be 1.0167x faster
   json-parse-financial                               56.039+-0.214             55.788+-0.254         
   json-stringify-tinderbox                           35.173+-1.173      !      38.194+-1.300         ! definitely 1.0859x slower
   stanford-crypto-aes                                62.263+-2.311             60.545+-0.534           might be 1.0284x faster
   stanford-crypto-ccm                                54.027+-2.789      ?      54.896+-0.589         ? might be 1.0161x slower
   stanford-crypto-pbkdf2                            154.988+-1.636      ?     155.629+-2.984         ?
   stanford-crypto-sha256-iterative                   59.001+-0.121             58.664+-0.241         

   &lt;arithmetic&gt;                                       84.728+-0.973             84.503+-0.751           might be 1.0027x faster

                                                            og                      change                                      
JSRegress:
   abc-forward-loop-equal                            36.5127+-0.2768           36.4107+-0.1725        
   abc-postfix-backward-loop                         45.5080+-0.0747     ?     45.5204+-0.0417        ?
   abc-simple-backward-loop                          40.7005+-11.3838          36.0231+-0.0780          might be 1.1298x faster
   abc-simple-forward-loop                           36.2334+-0.1271           36.1530+-0.1020        
   abc-skippy-loop                                   31.6122+-0.1952           31.4352+-0.0621        
   abs-boolean                                        3.6845+-0.0299     ?      3.6922+-0.0226        ?
   adapt-to-double-divide                            22.0971+-0.2176     ?     22.2865+-0.3434        ?
   aliased-arguments-getbyval                         1.6357+-0.0828     ?      1.6758+-0.0866        ? might be 1.0245x slower
   allocate-big-object                                3.3757+-0.0770     ?      3.3944+-0.1404        ?
   arguments-named-and-reflective                    12.2998+-0.2238           12.2590+-0.0716        
   arguments-out-of-bounds                           10.5395+-0.7868           10.3346+-0.1138          might be 1.0198x faster
   arguments-strict-mode                             71.3882+-4.1087           71.2793+-1.9183        
   arguments                                         10.2171+-0.0319     ?     10.2407+-0.0300        ?
   arity-mismatch-inlining                            1.2443+-0.0231     ?      1.2830+-0.0845        ? might be 1.0311x slower
   array-access-polymorphic-structure                12.0463+-3.1274           10.9351+-0.2735          might be 1.1016x faster
   array-nonarray-polymorhpic-access                 30.0765+-0.5181           29.8516+-0.7048        
   array-prototype-every                            105.4339+-1.3356     ?    105.7482+-0.8858        ?
   array-prototype-forEach                          104.0730+-1.4117     ?    105.2797+-0.4358        ? might be 1.0116x slower
   array-prototype-map                              114.9467+-1.7982     ?    116.4191+-3.1071        ? might be 1.0128x slower
   array-prototype-reduce                            99.3820+-0.1125     ?     99.8306+-0.3842        ?
   array-prototype-reduceRight                      129.2960+-4.7693     ^    122.7528+-0.1741        ^ definitely 1.0533x faster
   array-prototype-some                             105.7176+-0.3662     ?    106.9655+-2.5647        ? might be 1.0118x slower
   array-splice-contiguous                           34.0573+-0.4899           33.8890+-0.4219        
   array-with-double-add                              5.2749+-0.0627            5.2520+-0.0256        
   array-with-double-increment                        5.0711+-1.0856            4.5960+-0.0376          might be 1.1034x faster
   array-with-double-mul-add                          6.7314+-0.0665     ?      6.7346+-0.0713        ?
   array-with-double-sum                              4.7786+-0.0399            4.7714+-0.0736        
   array-with-int32-add-sub                           9.4058+-0.0691     ?     10.7882+-2.9958        ? might be 1.1470x slower
   array-with-int32-or-double-sum                     5.1645+-0.6110            4.9011+-0.0578          might be 1.0537x faster
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     41.8556+-0.6715           41.0613+-0.4165          might be 1.0193x faster
   ArrayBuffer-DataView-alloc-long-lived             18.8993+-0.1697           18.8428+-0.1673        
   ArrayBuffer-Int32Array-byteOffset                  5.4115+-0.1345            5.3882+-0.0663        
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     41.4325+-0.5990           41.1364+-0.2769        
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     30.0013+-0.6733           29.9598+-0.1891        
   ArrayBuffer-Int8Array-alloc-long-lived            17.4955+-0.3460           17.4491+-0.5773        
   ArrayBuffer-Int8Array-alloc                       14.8814+-0.4550           14.5488+-0.2238          might be 1.0229x faster
   arrowfunction-call                                14.7749+-0.1841     ?     14.9010+-0.3003        ?
   asmjs_bool_bug                                    11.3498+-0.1272           11.2873+-0.2073        
   assign-custom-setter-polymorphic                   3.8240+-0.0232     ?      3.8607+-0.0253        ?
   assign-custom-setter                               5.4792+-0.2313            5.4765+-0.0333        
   basic-set                                         11.9658+-0.5783           11.7269+-0.3591          might be 1.0204x faster
   big-int-mul                                        4.6221+-0.0462            4.6187+-0.0323        
   boolean-test                                       4.9812+-0.0602     ?      5.0057+-0.0443        ?
   branch-fold                                        5.3112+-0.0398            5.3009+-0.0350        
   branch-on-string-as-boolean                       17.7840+-0.6994     ?     18.3415+-1.1960        ? might be 1.0313x slower
   by-val-generic                                     6.3180+-0.2985     ?      6.3468+-0.2372        ?
   call-spread-apply                                 66.5140+-1.0930           66.0244+-1.2365        
   call-spread-call                                 102.3954+-4.6849           99.5690+-4.5115          might be 1.0284x faster
   captured-assignments                               0.6586+-0.0178            0.6558+-0.0117        
   cast-int-to-double                                 7.5343+-0.0406            7.5205+-0.0197        
   cell-argument                                      4.2754+-0.0304            4.2317+-0.0327          might be 1.0103x faster
   cfg-simplify                                       4.2502+-0.1075     ?      4.3474+-0.1401        ? might be 1.0229x slower
   chain-getter-access                               16.9537+-0.1834     ?     16.9654+-0.1570        ?
   cmpeq-obj-to-obj-other                            13.3575+-0.6335           13.2274+-0.2207        
   constant-test                                      7.1350+-0.0863            7.0872+-0.0265        
   create-lots-of-functions                          11.5844+-1.5026     ?     11.7909+-1.5675        ? might be 1.0178x slower
   cse-new-array-buffer                               3.2148+-0.1239            3.1968+-0.1363        
   cse-new-array                                      3.3415+-0.1660            3.1746+-0.1719          might be 1.0526x faster
   custom-setter-getter-as-put-get-by-id              0.7576+-0.0270     ?      0.7635+-0.0417        ?
   DataView-custom-properties                        49.3934+-0.6126     ?     49.8127+-0.3023        ?
   delay-tear-off-arguments-strictmode               17.6281+-0.2527     ?     18.7403+-2.6266        ? might be 1.0631x slower
   deltablue-varargs                                 59.4245+-5.3761           57.9547+-0.8120          might be 1.0254x faster
   destructuring-arguments                          236.2841+-1.8385     ?    238.0123+-1.1428        ?
   destructuring-parameters-overridden-by-function   
                                                      0.6628+-0.0130     ?      0.6650+-0.0117        ?
   destructuring-swap                                 6.9567+-0.0358     ?      6.9786+-0.0583        ?
   direct-arguments-getbyval                          1.6383+-0.0637     ?      1.7878+-0.1479        ? might be 1.0913x slower
   div-boolean-double                                 7.0535+-0.0249            7.0513+-0.0280        
   div-boolean                                       11.7393+-0.0862     ?     11.8074+-0.1443        ?
   double-get-by-val-out-of-bounds                    6.3873+-0.1944     ?      6.3898+-0.3729        ?
   double-pollution-getbyval                         12.8420+-0.2003           12.7166+-0.1455        
   double-pollution-putbyoffset                       5.3537+-0.0494     ?      5.3572+-0.1084        ?
   double-real-use                                   36.8113+-0.0908     ?     37.7024+-2.2315        ? might be 1.0242x slower
   double-to-int32-typed-array-no-inline              3.0017+-0.1833            2.9656+-0.0477          might be 1.0122x faster
   double-to-int32-typed-array                        2.9742+-0.0250     ?      3.0913+-0.1779        ? might be 1.0394x slower
   double-to-uint32-typed-array-no-inline             3.3708+-0.8654            3.1635+-0.1382          might be 1.0655x faster
   double-to-uint32-typed-array                       3.0540+-0.1024            3.0181+-0.0453          might be 1.0119x faster
   elidable-new-object-dag                           46.5707+-0.2543     ?     47.0789+-0.8476        ? might be 1.0109x slower
   elidable-new-object-roflcopter                    48.3047+-0.2728     ?     48.4083+-0.2487        ?
   elidable-new-object-then-call                     35.7102+-0.1747           35.5980+-0.1774        
   elidable-new-object-tree                          48.2112+-0.6200           47.9027+-0.1552        
   empty-string-plus-int                              7.2731+-0.1318            7.1809+-0.1425          might be 1.0128x faster
   emscripten-cube2hash                              37.1432+-0.5754     ?     37.2406+-0.4953        ?
   exit-length-on-plain-object                       22.8970+-1.0963           22.7937+-0.2576        
   external-arguments-getbyval                        1.6542+-0.0996            1.6338+-0.0334          might be 1.0125x faster
   external-arguments-putbyval                        3.2590+-0.0425     ?      3.3352+-0.1985        ? might be 1.0234x slower
   fixed-typed-array-storage-var-index                1.7450+-0.0189            1.7439+-0.0535        
   fixed-typed-array-storage                          1.3679+-0.0361     ?      1.4212+-0.1523        ? might be 1.0390x slower
   Float32Array-matrix-mult                           7.0207+-0.5170            6.7926+-0.1140          might be 1.0336x faster
   Float32Array-to-Float64Array-set                  65.3985+-1.9354     ?     67.2919+-1.8026        ? might be 1.0290x slower
   Float64Array-alloc-long-lived                     83.0955+-0.8420           82.6116+-0.7893        
   Float64Array-to-Int16Array-set                    85.6010+-0.5512     ?     89.3221+-9.6583        ? might be 1.0435x slower
   fold-double-to-int                                19.6587+-0.0380     ?     19.8480+-0.3100        ?
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     13.0333+-0.2278     ?     13.1366+-0.3499        ?
   fold-get-by-id-to-multi-get-by-offset             10.4372+-0.1702     ?     10.5262+-0.1806        ?
   fold-multi-get-by-offset-to-get-by-offset   
                                                      9.4837+-2.0436     ?      9.4855+-2.0086        ?
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                     11.0156+-2.6362            9.3213+-2.0326          might be 1.1818x faster
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                     10.8171+-1.7410     ?     11.5111+-1.8754        ? might be 1.0642x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                      9.5806+-1.7255     ?     10.0908+-3.0790        ? might be 1.0533x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     14.9005+-1.5536           14.3613+-0.2485          might be 1.0375x faster
   fold-put-by-id-to-multi-put-by-offset             12.4680+-0.1263     ?     12.4839+-0.2977        ?
   fold-put-by-val-with-string-to-multi-put-by-offset   
                                                     12.6362+-0.3500           12.6081+-0.1973        
   fold-put-by-val-with-symbol-to-multi-put-by-offset   
                                                     12.8319+-0.3048           12.7501+-0.0574        
   fold-put-structure                                 7.5072+-0.2071            7.5013+-0.2324        
   for-of-iterate-array-entries                      14.3945+-0.3636           14.3225+-0.4338        
   for-of-iterate-array-keys                          4.8986+-0.0542     ?      5.0497+-0.3272        ? might be 1.0309x slower
   for-of-iterate-array-values                        4.7144+-0.1667     ?      4.7320+-0.2589        ?
   fround                                            17.9428+-0.1264     ?     18.1596+-0.2618        ? might be 1.0121x slower
   ftl-library-inlining-dataview                     88.3227+-0.2569     !     91.5600+-0.6799        ! definitely 1.0367x slower
   ftl-library-inlining                              35.2849+-0.1448     ?     35.2864+-0.1758        ?
   ftl-polymorphic-bitand                           175.4882+-3.2483          172.1012+-0.5833          might be 1.0197x faster
   ftl-polymorphic-bitor                            173.1597+-0.9592     ?    173.2799+-1.6247        ?
   ftl-polymorphic-bitxor                           173.8219+-0.5132     ?    174.8843+-3.1955        ?
   ftl-polymorphic-div                              685.9545+-1.1611          685.5875+-1.2797        
   ftl-polymorphic-lshift                           218.6148+-1.2449     ?    218.6245+-2.9951        ?
   ftl-polymorphic-mul                              336.7717+-0.1422     ?    339.4548+-7.5028        ?
   ftl-polymorphic-rshift                           218.1824+-0.9519          217.1938+-0.1702        
   ftl-polymorphic-StringFromCharCode                63.9398+-0.1199           63.8251+-0.1476        
   ftl-polymorphic-sub                              252.9625+-0.3664          252.6932+-2.7098        
   ftl-polymorphic-urshift                          237.5991+-0.7323          236.0367+-0.9759        
   function-call                                     15.9484+-0.2519     ?     16.0035+-0.4752        ?
   function-dot-apply                                 3.0202+-0.0150     ?      3.1239+-0.2001        ? might be 1.0344x slower
   function-test                                      4.7552+-0.1199     ?      4.7553+-0.0935        ?
   function-with-eval                               145.3370+-2.1079     ?    146.6096+-2.3273        ?
   gcse-poly-get-less-obvious                        22.7405+-0.2632     ?     22.8514+-0.3162        ?
   gcse-poly-get                                     24.8124+-2.5626           23.9698+-1.9312          might be 1.0352x faster
   gcse                                               5.0226+-0.0825     ?      5.1953+-0.4405        ? might be 1.0344x slower
   generator-create                                   1.0518+-0.0317     ?      1.0668+-0.0282        ? might be 1.0142x slower
   generator-fib                                    153.5582+-1.2765     ^    150.7392+-1.0958        ^ definitely 1.0187x faster
   generator-function-create                          5.3707+-0.1517     ?      5.6363+-0.4477        ? might be 1.0494x slower
   generator-sunspider-access-nsieve                  8.6490+-0.3300            8.5156+-0.1898          might be 1.0157x faster
   generator-with-several-types                     493.9170+-13.1188         485.7619+-13.5076         might be 1.0168x faster
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      3.8737+-0.0362     ?      3.9077+-0.0367        ?
   get-by-id-bimorphic-check-structure-elimination   
                                                      7.1379+-0.0967     ?      7.1790+-0.1883        ?
   get-by-id-chain-from-try-block                     2.8326+-0.0567            2.8015+-0.0448          might be 1.0111x faster
   get-by-id-check-structure-elimination              5.8606+-0.0418            5.8466+-0.0233        
   get-by-id-proto-or-self                           15.5701+-2.7598     ?     16.4089+-2.9899        ? might be 1.0539x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      4.2708+-0.0396            4.2435+-0.0203        
   get-by-id-self-or-proto                           14.9701+-1.2901           14.6457+-0.7033          might be 1.0222x faster
   get-by-val-out-of-bounds                           6.1491+-0.2306            5.8848+-0.2132          might be 1.0449x faster
   get-by-val-with-string-bimorphic-check-structure-elimination-simple   
                                                      4.0388+-0.0338     ?      4.0628+-0.0810        ?
   get-by-val-with-string-bimorphic-check-structure-elimination   
                                                      9.5597+-0.0601     ?      9.6092+-0.1637        ?
   get-by-val-with-string-chain-from-try-block   
                                                      2.8895+-0.0350     ?      2.9218+-0.0358        ? might be 1.0112x slower
   get-by-val-with-string-check-structure-elimination   
                                                      8.4188+-0.0607     ?      8.4316+-0.0552        ?
   get-by-val-with-string-proto-or-self              18.2996+-2.0405     ?     18.7792+-0.6434        ? might be 1.0262x slower
   get-by-val-with-string-quadmorphic-check-structure-elimination-simple   
                                                      4.5113+-0.0214     ?      4.5506+-0.0678        ?
   get-by-val-with-string-self-or-proto              18.3485+-1.4860     ?     19.3942+-1.9123        ? might be 1.0570x slower
   get-by-val-with-symbol-bimorphic-check-structure-elimination-simple   
                                                      4.6612+-0.0707     ?      4.6785+-0.0380        ?
   get-by-val-with-symbol-bimorphic-check-structure-elimination   
                                                     18.4610+-0.1008     ?     18.6217+-0.2762        ?
   get-by-val-with-symbol-chain-from-try-block   
                                                      3.0371+-0.2759            2.9181+-0.0371          might be 1.0408x faster
   get-by-val-with-symbol-check-structure-elimination   
                                                     17.1880+-0.2597     ?     17.3105+-0.3335        ?
   get-by-val-with-symbol-proto-or-self              20.2994+-3.6912           18.3208+-1.6119          might be 1.1080x faster
   get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple   
                                                      5.5154+-0.0476            5.5114+-0.0398        
   get-by-val-with-symbol-self-or-proto              18.1453+-2.0495           16.4001+-1.4451          might be 1.1064x faster
   get_callee_monomorphic                             3.3018+-0.0688            3.2433+-0.0651          might be 1.0180x faster
   get_callee_polymorphic                             4.8344+-0.0362            4.8059+-0.0750        
   getter-no-activation                               5.7209+-0.1461     ?      6.0096+-0.8254        ? might be 1.0505x slower
   getter-prototype                                   7.4089+-0.3238     ?      7.9696+-1.3818        ? might be 1.0757x slower
   getter-richards-try-catch                       1547.6431+-59.7478        1521.9575+-22.9692         might be 1.0169x faster
   getter-richards                                  105.7059+-2.9596          103.1278+-2.9477          might be 1.0250x faster
   getter                                             6.5839+-0.0613     ?      6.9824+-0.7681        ? might be 1.0605x slower
   global-object-access-with-mutating-structure   
                                                      7.7180+-0.1545            7.3677+-0.2279          might be 1.0475x faster
   global-var-const-infer-fire-from-opt               1.3598+-0.1727            1.3182+-0.0711          might be 1.0315x faster
   global-var-const-infer                             0.9591+-0.0289     ?      1.0335+-0.1651        ? might be 1.0776x slower
   hard-overflow-check-equal                         35.5187+-0.1450     ?     35.5840+-0.2942        ?
   hard-overflow-check                               35.3431+-0.1382     ?     35.3699+-0.1358        ?
   HashMap-put-get-iterate-keys                      34.3416+-0.3465           34.2168+-0.2729        
   HashMap-put-get-iterate                           34.2607+-0.5856     ?     34.4462+-1.7167        ?
   HashMap-string-put-get-iterate                    36.8549+-0.3654     ?     36.9733+-0.3020        ?
   hoist-make-rope                                    6.4775+-0.9738            6.4035+-1.0641          might be 1.0116x faster
   hoist-poly-check-structure-effectful-loop   
                                                      4.4012+-0.1416            4.3260+-0.0335          might be 1.0174x faster
   hoist-poly-check-structure                         3.1106+-0.1098            3.0762+-0.1358          might be 1.0112x faster
   imul-double-only                                   4.7521+-0.1344            4.6755+-0.1696          might be 1.0164x faster
   imul-int-only                                      7.4068+-0.0392     ?      7.4666+-0.0636        ?
   imul-mixed                                         5.1799+-0.0709     ^      4.8108+-0.2240        ^ definitely 1.0767x faster
   in-four-cases                                     23.4937+-0.0575           23.4754+-0.2535        
   in-one-case-false                                 14.3460+-0.1505           14.3180+-0.2068        
   in-one-case-true                                  14.2873+-0.0892     ?     14.3241+-0.1125        ?
   in-two-cases                                      14.2828+-0.2859     ?     14.3976+-0.2306        ?
   indexed-properties-in-objects                      4.2327+-0.1281            4.2002+-0.0114        
   infer-closure-const-then-mov-no-inline             4.1933+-0.0818            4.1393+-0.0493          might be 1.0131x faster
   infer-closure-const-then-mov                      12.6670+-0.1506     ?     12.7088+-0.1389        ?
   infer-closure-const-then-put-to-scope-no-inline   
                                                     15.6665+-0.2379           15.5171+-0.1046        
   infer-closure-const-then-put-to-scope             33.4108+-0.8179           33.3271+-1.1169        
   infer-closure-const-then-reenter-no-inline   
                                                     76.6954+-0.1106           76.6901+-0.1295        
   infer-closure-const-then-reenter                  34.2723+-1.1223     ?     34.7363+-0.6064        ? might be 1.0135x slower
   infer-constant-global-property                     5.1849+-0.0360            5.1743+-0.0170        
   infer-constant-property                            3.9683+-0.1591            3.9233+-0.0327          might be 1.0115x faster
   infer-one-time-closure-ten-vars                   10.3198+-0.0475           10.3032+-0.0534        
   infer-one-time-closure-two-vars                   10.5979+-2.2868            9.9693+-0.6518          might be 1.0631x faster
   infer-one-time-closure                             9.5979+-0.0557     ?      9.6009+-0.0230        ?
   infer-one-time-deep-closure                       17.8221+-0.2032           17.5766+-0.1021          might be 1.0140x faster
   inline-arguments-access                            5.3415+-0.0708            5.1864+-0.2236          might be 1.0299x faster
   inline-arguments-aliased-access                    5.2658+-0.1773     ?      5.3311+-0.0711        ? might be 1.0124x slower
   inline-arguments-local-escape                      5.3666+-0.0945            5.1756+-0.2207          might be 1.0369x faster
   inline-get-scoped-var                              4.8099+-0.1290     ?      4.8564+-0.1545        ?
   inlined-put-by-id-transition                      12.0333+-0.2894     ?     12.2568+-0.2338        ? might be 1.0186x slower
   inlined-put-by-val-with-string-transition   
                                                     62.6267+-1.8504           62.2166+-0.3297        
   inlined-put-by-val-with-symbol-transition   
                                                     62.3299+-0.4378           62.3156+-1.2862        
   instanceof-bound                                  31.5683+-0.9842           31.1843+-1.0715          might be 1.0123x faster
   int-or-other-abs-then-get-by-val                   6.8374+-0.0562     ?      6.9029+-0.1474        ?
   int-or-other-abs-zero-then-get-by-val             24.2957+-0.7968           23.9038+-0.0620          might be 1.0164x faster
   int-or-other-add-then-get-by-val                   6.2443+-0.0705            6.2177+-0.0571        
   int-or-other-add                                   7.2432+-0.0593            7.2347+-0.0413        
   int-or-other-div-then-get-by-val                   5.5774+-0.0342     ?      5.5868+-0.0573        ?
   int-or-other-max-then-get-by-val                   6.1101+-0.6278            5.8626+-0.0331          might be 1.0422x faster
   int-or-other-min-then-get-by-val                   5.8550+-0.0251            5.8375+-0.0350        
   int-or-other-mod-then-get-by-val                   5.2418+-0.1202            5.2014+-0.1025        
   int-or-other-mul-then-get-by-val                   5.3068+-0.1583     ?      5.5450+-0.6122        ? might be 1.0449x slower
   int-or-other-neg-then-get-by-val                   6.4061+-0.0926            6.3575+-0.0365        
   int-or-other-neg-zero-then-get-by-val             23.8300+-0.0943     ?     23.8955+-0.2391        ?
   int-or-other-sub-then-get-by-val                   6.1521+-0.0367     ?      6.2494+-0.2527        ? might be 1.0158x slower
   int-or-other-sub                                   5.2462+-0.2628            5.1430+-0.0340          might be 1.0201x faster
   int-overflow-local                                 6.0723+-0.0523            6.0406+-0.0339        
   Int16Array-alloc-long-lived                       62.5029+-1.5811     ?     62.9885+-0.8118        ?
   Int16Array-bubble-sort-with-byteLength            29.4482+-0.6337     ?     30.2061+-1.6903        ? might be 1.0257x slower
   Int16Array-bubble-sort                            25.3726+-1.8484           25.1509+-1.7096        
   Int16Array-load-int-mul                            2.2699+-0.1545            2.1992+-0.0352          might be 1.0321x faster
   Int16Array-to-Int32Array-set                      65.7238+-0.4022     ?     66.3443+-0.6372        ?
   Int32Array-alloc-large                            16.9514+-0.3800     ?     17.0409+-0.3350        ?
   Int32Array-alloc-long-lived                       68.1875+-1.6635           67.9428+-1.4037        
   Int32Array-alloc                                   3.8949+-0.1839            3.8800+-0.2420        
   Int32Array-Int8Array-view-alloc                    8.8443+-0.2012            8.7766+-0.3832        
   int52-spill                                        6.7494+-0.0398     !      6.9426+-0.0687        ! definitely 1.0286x slower
   Int8Array-alloc-long-lived                        57.2685+-0.9510           57.2085+-0.3226        
   Int8Array-load-with-byteLength                     5.1019+-0.0936            5.0420+-0.0935          might be 1.0119x faster
   Int8Array-load                                     5.0302+-0.0478     ?      5.2028+-0.4787        ? might be 1.0343x slower
   integer-divide                                    16.3103+-0.3023           16.1924+-0.1932        
   integer-modulo                                     2.4087+-0.2065            2.3656+-0.0892          might be 1.0182x faster
   is-boolean-fold-tricky                             5.7236+-0.0374            5.6979+-0.0381        
   is-boolean-fold                                    3.9963+-0.0186     ?      4.0311+-0.0449        ?
   is-function-fold-tricky-internal-function   
                                                     15.2024+-0.0919     ?     15.2553+-0.3571        ?
   is-function-fold-tricky                            6.4002+-0.8454            6.1028+-0.0480          might be 1.0487x faster
   is-function-fold                                   4.0638+-0.0643            4.0310+-0.0266        
   is-number-fold-tricky                              5.9173+-0.0330     ?      5.9763+-0.0800        ?
   is-number-fold                                     4.0157+-0.0575            4.0088+-0.0534        
   is-object-or-null-fold-functions                   4.0557+-0.0527     ?      4.1493+-0.3145        ? might be 1.0231x slower
   is-object-or-null-fold-less-tricky                 6.0814+-0.0866     ?      6.1680+-0.2123        ? might be 1.0142x slower
   is-object-or-null-fold-tricky                      7.3810+-0.0893            7.3304+-0.0567        
   is-object-or-null-fold                             4.0769+-0.0766            4.0450+-0.0374        
   is-object-or-null-trickier-function                6.1122+-0.1003     ?      6.1295+-0.0734        ?
   is-object-or-null-trickier-internal-function   
                                                     15.5140+-0.1864           15.3000+-0.1969          might be 1.0140x faster
   is-object-or-null-tricky-function                  6.0601+-0.1080     ?      6.0941+-0.0197        ?
   is-object-or-null-tricky-internal-function   
                                                     11.0850+-0.0826     ?     11.4460+-1.2449        ? might be 1.0326x slower
   is-string-fold-tricky                              5.9472+-0.0425     ?      6.0403+-0.1174        ? might be 1.0156x slower
   is-string-fold                                     3.9900+-0.0279            3.9785+-0.0245        
   is-undefined-fold-tricky                           5.0855+-0.0980            5.0554+-0.0104        
   is-undefined-fold                                  4.0333+-0.0441            3.9975+-0.0432        
   JSONP-negative-0                                   0.4107+-0.0158            0.4005+-0.0107          might be 1.0255x faster
   large-int-captured                                 4.5031+-0.2556            4.4060+-0.1977          might be 1.0220x faster
   large-int-neg                                     19.3480+-0.3985     ?     19.4628+-0.4978        ?
   large-int                                         17.5559+-0.4404     ?     17.7906+-0.3476        ? might be 1.0134x slower
   load-varargs-elimination                          28.4366+-0.1928     !     28.8330+-0.1196        ! definitely 1.0139x slower
   logical-not-weird-types                            3.9340+-0.0751            3.8880+-0.0989          might be 1.0118x faster
   logical-not                                        5.9482+-0.0937            5.8951+-0.0541        
   lots-of-fields                                    13.0492+-0.2061     ?     13.3067+-0.2836        ? might be 1.0197x slower
   make-indexed-storage                               3.9650+-0.0698            3.9175+-0.2383          might be 1.0121x faster
   make-rope-cse                                      5.3645+-0.2529            5.2591+-0.2562          might be 1.0200x faster
   map-for-each                                       7.4818+-0.0525            7.4747+-0.0227        
   map-for-of                                        24.9205+-0.1689     ?     28.1435+-8.5316        ? might be 1.1293x slower
   marsaglia-larger-ints                             48.6647+-0.1743     ?     48.8601+-0.5913        ?
   marsaglia-osr-entry                               26.8451+-0.1773     ?     26.8917+-0.2405        ?
   math-random                                       23.2582+-0.2455           23.1407+-0.0971        
   math-with-out-of-bounds-array-values              43.9109+-0.2138     ?     44.7003+-0.8455        ? might be 1.0180x slower
   max-boolean                                        3.9622+-0.0819            3.9333+-0.0991        
   method-on-number                                  24.8516+-0.1847     ?     24.8754+-0.2555        ?
   min-boolean                                        4.0030+-0.0600     ?      4.2287+-0.6737        ? might be 1.0564x slower
   minus-boolean-double                               4.6459+-0.0333     ?      4.6659+-0.0602        ?
   minus-boolean                                      3.5435+-0.0267     ?      3.5656+-0.0206        ?
   misc-strict-eq                                    33.0730+-0.1662     !     34.9010+-0.4626        ! definitely 1.0553x slower
   mod-boolean-double                                15.0351+-0.2027     ?     15.9023+-2.2406        ? might be 1.0577x slower
   mod-boolean                                       11.5800+-0.2455     ?     11.6160+-0.3053        ?
   mul-boolean-double                                 5.2626+-0.0829     ?      5.6991+-1.1095        ? might be 1.0829x slower
   mul-boolean                                        4.2786+-0.0242            4.2693+-0.0321        
   neg-boolean                                        4.7124+-0.0345     ?      4.7303+-0.1374        ?
   negative-zero-divide                               0.5252+-0.0036     ?      0.5302+-0.0119        ?
   negative-zero-modulo                               0.5326+-0.0186            0.5239+-0.0105          might be 1.0165x faster
   negative-zero-negate                               0.5127+-0.0247            0.5096+-0.0240        
   nested-function-parsing                           49.4496+-0.4550     ?     49.6578+-0.5947        ?
   new-array-buffer-dead                            119.4880+-4.3061          117.1335+-0.5165          might be 1.0201x faster
   new-array-buffer-push                              7.9799+-0.2830     ?      8.1658+-0.1978        ? might be 1.0233x slower
   new-array-dead                                    13.3962+-0.5461     ?     13.4049+-0.2098        ?
   new-array-push                                     6.4332+-1.2681            5.7236+-0.1012          might be 1.1240x faster
   no-inline-constructor                             45.4425+-1.0702           45.1940+-1.2605        
   number-test                                        4.9425+-0.0264            4.9155+-0.0246        
   object-closure-call                                7.0085+-0.0601            7.0017+-0.0496        
   object-get-own-property-symbols-on-large-array   
                                                      6.0000+-0.1751     ?      6.0967+-0.1437        ? might be 1.0161x slower
   object-test                                        4.6977+-0.0442     ?      4.8900+-0.4328        ? might be 1.0409x slower
   obvious-sink-pathology-taken                     160.6304+-1.1043     ?    160.9726+-2.3731        ?
   obvious-sink-pathology                            35.0104+-0.1164     ?     35.3424+-0.6363        ?
   obviously-elidable-new-object                     32.3903+-0.4493     ?     32.5429+-0.5355        ?
   plus-boolean-arith                                 3.6440+-0.0769            3.5968+-0.0382          might be 1.0131x faster
   plus-boolean-double                                4.6995+-0.0791            4.6820+-0.0665        
   plus-boolean                                       3.8328+-0.1582     ?      3.8521+-0.0531        ?
   poly-chain-access-different-prototypes-simple   
                                                      3.8849+-0.0233     ?      3.8994+-0.0570        ?
   poly-chain-access-different-prototypes             3.8616+-0.1525            3.7792+-0.0464          might be 1.0218x faster
   poly-chain-access-simpler                          3.9967+-0.3572            3.9088+-0.0502          might be 1.0225x faster
   poly-chain-access                                  3.7918+-0.0542            3.7363+-0.0382          might be 1.0148x faster
   poly-stricteq                                     81.3334+-0.0676     ?     81.3598+-0.0835        ?
   polymorphic-array-call                             1.7807+-0.0972     ?      1.8214+-0.0733        ? might be 1.0229x slower
   polymorphic-get-by-id                              2.9429+-0.1345            2.8700+-0.0282          might be 1.0254x faster
   polymorphic-put-by-id                             40.0223+-0.5869           39.9401+-0.3397        
   polymorphic-put-by-val-with-string                41.6779+-0.4718     ?     42.0228+-0.8549        ?
   polymorphic-put-by-val-with-symbol                41.6500+-0.2673     ?     41.7900+-0.3352        ?
   polymorphic-structure                             18.9698+-0.1446           18.9672+-0.0983        
   polyvariant-monomorphic-get-by-id                  7.6318+-0.9305            7.2413+-0.1419          might be 1.0539x faster
   proto-getter-access                               17.0009+-0.3214           16.9019+-0.1348        
   prototype-access-with-mutating-prototype           6.5837+-0.1380     ?      7.3748+-2.1172        ? might be 1.1202x slower
   put-by-id-replace-and-transition                  11.0131+-0.4684     ?     11.0694+-0.5120        ?
   put-by-id-slightly-polymorphic                     4.0700+-0.0401            4.0407+-0.0267        
   put-by-id                                         13.2924+-0.2684     ?     13.4668+-0.5491        ? might be 1.0131x slower
   put-by-val-direct                                  0.5928+-0.0097     ?      0.6091+-0.0287        ? might be 1.0275x slower
   put-by-val-large-index-blank-indexing-type   
                                                      7.4611+-0.1469            7.4378+-0.2849        
   put-by-val-machine-int                             3.5855+-0.0252            3.5462+-0.0634          might be 1.0111x faster
   put-by-val-with-string-replace-and-transition   
                                                     14.4017+-0.1764           14.2524+-0.1653          might be 1.0105x faster
   put-by-val-with-string-slightly-polymorphic   
                                                      4.1780+-0.0516     ?      4.2477+-0.1096        ? might be 1.0167x slower
   put-by-val-with-string                            13.7965+-0.1196           13.7106+-0.1450        
   put-by-val-with-symbol-replace-and-transition   
                                                     15.0494+-0.1576     ?     15.1524+-0.1329        ?
   put-by-val-with-symbol-slightly-polymorphic   
                                                      4.8634+-0.2193            4.8458+-0.0593        
   put-by-val-with-symbol                            13.9401+-0.1130     ?     14.1119+-0.7327        ? might be 1.0123x slower
   rare-osr-exit-on-local                            19.8051+-0.2842     ?     20.0817+-0.6250        ? might be 1.0140x slower
   raytrace-with-empty-try-catch                      8.9111+-0.4105            8.7410+-0.2404          might be 1.0194x faster
   raytrace-with-try-catch                           14.7268+-0.2213     ^     14.2409+-0.2554        ^ definitely 1.0341x faster
   register-pressure-from-osr                        23.7214+-0.2741           23.6470+-0.0914        
   repeat-multi-get-by-offset                        30.5710+-5.8529           28.4630+-0.3609          might be 1.0741x faster
   richards-empty-try-catch                          71.4103+-5.7457           68.7843+-0.3326          might be 1.0382x faster
   richards-try-catch                               354.1188+-76.1118         324.4282+-2.2928          might be 1.0915x faster
   set-for-each                                       6.7646+-0.0461     ^      6.6001+-0.0532        ^ definitely 1.0249x faster
   set-for-of                                        11.2890+-0.2674     ?     11.3539+-0.3180        ?
   setter-prototype                                   6.9079+-0.0917            6.9040+-0.1063        
   setter                                             6.0641+-0.0744            6.0193+-0.0678        
   simple-activation-demo                            33.1843+-0.0719           33.1360+-0.1566        
   simple-getter-access                              26.2434+-0.2898     ?     26.7198+-1.5606        ? might be 1.0182x slower
   simple-poly-call-nested                            8.3691+-0.1419            8.3311+-0.1761        
   simple-poly-call                                   1.7627+-0.0573            1.7360+-0.0267          might be 1.0153x faster
   sin-boolean                                       21.8491+-0.6421           21.7348+-0.2768        
   singleton-scope                                   84.8085+-0.1387     ?     93.6055+-22.6281       ? might be 1.1037x slower
   sink-function                                      9.9616+-1.2196     ?     10.3310+-2.0556        ? might be 1.0371x slower
   sink-huge-activation                              18.2753+-0.3470     ?     18.3888+-0.3342        ?
   sinkable-new-object-dag                           76.8681+-2.6999           75.8316+-1.2106          might be 1.0137x faster
   sinkable-new-object-taken                         58.9646+-0.2968     ?     58.9820+-0.1132        ?
   sinkable-new-object                               35.2549+-0.4458           35.1755+-0.2643        
   slow-array-profile-convergence                     3.8692+-0.0742            3.8266+-0.0664          might be 1.0111x faster
   slow-convergence                                   3.8338+-0.0421            3.7851+-0.0194          might be 1.0129x faster
   slow-ternaries                                    20.6774+-0.1790           20.6444+-0.1114        
   sorting-benchmark                                 27.0177+-0.1313           26.9085+-0.4223        
   sparse-conditional                                 1.7276+-0.0473            1.7059+-0.0235          might be 1.0128x faster
   splice-to-remove                                  19.7582+-0.1115     ?     19.8053+-0.1693        ?
   string-char-code-at                               21.4609+-0.0733     ?     21.4627+-0.1335        ?
   string-concat-object                               2.8738+-0.1922     ?      2.9926+-0.1223        ? might be 1.0413x slower
   string-concat-pair-object                          2.8662+-0.1602     ?      2.8671+-0.1669        ?
   string-concat-pair-simple                         13.0529+-0.5002           12.8652+-0.3004          might be 1.0146x faster
   string-concat-simple                              12.9978+-0.0892     ?     13.1060+-0.2139        ?
   string-cons-repeat                                 9.3387+-0.0587     ?      9.4807+-0.1550        ? might be 1.0152x slower
   string-cons-tower                                  9.8221+-0.2895            9.8158+-0.3771        
   string-equality                                   27.2059+-0.1336           27.1510+-0.1953        
   string-from-char-code                             10.2132+-0.0498     ?     10.2390+-0.0871        ?
   string-get-by-val-big-char                         9.8724+-0.3123            9.7667+-0.2208          might be 1.0108x faster
   string-get-by-val-out-of-bounds-insane             4.9495+-0.0321     ?      5.0662+-0.2124        ? might be 1.0236x slower
   string-get-by-val-out-of-bounds                    6.6034+-0.0651     ?      6.6462+-0.0628        ?
   string-get-by-val                                  4.1853+-0.0350     ?      4.2027+-0.1092        ?
   string-hash                                        2.7817+-0.0732            2.7709+-0.0327        
   string-long-ident-equality                        22.2733+-0.2472           22.0866+-0.1361        
   string-out-of-bounds                               9.8992+-0.0732     ?      9.9023+-0.1033        ?
   string-repeat-arith                               32.7754+-0.2072     !     33.8663+-0.3155        ! definitely 1.0333x slower
   string-rope-with-object                           23.7585+-0.1900           23.6923+-0.0845        
   string-sub                                        52.9309+-0.1859           52.4725+-0.3550        
   string-test                                        4.7309+-0.0454            4.7024+-0.0466        
   string-var-equality                               42.7756+-0.4060     ?     43.2160+-0.9962        ? might be 1.0103x slower
   structure-hoist-over-transitions                   3.3651+-0.0201            3.3591+-0.1155        
   substring-concat-weird                            55.2593+-1.3799           54.7868+-0.3755        
   substring-concat                                  60.3185+-0.4186           60.0205+-0.4169        
   substring                                         67.9400+-0.7730           67.6596+-0.1598        
   switch-char-constant                               4.0018+-0.0936            3.9758+-0.0625        
   switch-char                                        7.8196+-0.0672            7.8182+-0.0603        
   switch-constant                                   11.1912+-1.0910           10.6873+-0.5423          might be 1.0472x faster
   switch-string-basic-big-var                       21.6525+-0.3355     ?     21.7806+-0.2080        ?
   switch-string-basic-big                           18.5285+-0.1110     ?     18.7478+-0.2245        ? might be 1.0118x slower
   switch-string-basic-var                           21.2526+-0.1912     ?     21.7740+-0.7582        ? might be 1.0245x slower
   switch-string-basic                               17.4508+-0.2163     ?     17.5323+-0.3478        ?
   switch-string-big-length-tower-var                29.4825+-0.1788           29.3839+-0.1258        
   switch-string-length-tower-var                    21.2351+-0.0929     ?     21.2598+-0.1533        ?
   switch-string-length-tower                        16.5072+-0.3293     ?     16.6566+-0.2086        ?
   switch-string-short                               16.7141+-0.8044           16.6085+-0.5511        
   switch                                            15.3250+-1.2799           13.6655+-0.6662          might be 1.1214x faster
   symbol-tostringtag                                 4.5565+-0.0495            4.5276+-0.0224        
   tear-off-arguments-simple                          3.5693+-0.0955            3.5156+-0.1522          might be 1.0153x faster
   tear-off-arguments                                 4.8850+-0.0997            4.7584+-0.1557          might be 1.0266x faster
   temporal-structure                                17.9347+-0.2729           17.8079+-0.1940        
   to-int32-boolean                                  20.9460+-0.2816           20.6972+-0.0731          might be 1.0120x faster
   try-catch-get-by-val-cloned-arguments              9.6198+-0.1946     ?      9.8465+-0.3887        ? might be 1.0236x slower
   try-catch-get-by-val-direct-arguments              3.0007+-0.1277            2.9815+-0.1558        
   try-catch-get-by-val-scoped-arguments              6.1469+-0.2228     ?      6.1512+-0.0376        ?
   typed-array-get-set-by-val-profiling              30.1675+-0.2700           29.9151+-0.2727        
   undefined-property-access                        436.2507+-0.7529          435.6184+-0.2402        
   undefined-test                                     5.0278+-0.0488     ?      5.0688+-0.0841        ?
   unprofiled-licm                                    9.0498+-0.0441     ?      9.1113+-0.2760        ?
   untyped-string-from-char-code                     16.5423+-0.3320           16.3845+-0.1732        
   v8-raytrace-with-empty-try-catch                  75.3236+-0.8218           75.2559+-2.5712        
   v8-raytrace-with-try-catch-high-frequency-throws   
                                                    566.5656+-6.1392     ?    570.7330+-6.2896        ?
   v8-raytrace-with-try-catch                        93.9289+-1.4513           92.4885+-1.2031          might be 1.0156x faster
   v8-regexp-search                                  78.1325+-0.3097     ?     78.8407+-0.8522        ?
   varargs-call                                      18.5940+-0.1792     ?     18.7168+-0.3275        ?
   varargs-construct-inline                          28.4097+-0.7312     ?     29.1790+-0.1356        ? might be 1.0271x slower
   varargs-construct                                 36.2092+-0.3085           36.0785+-0.1431        
   varargs-inline                                    12.4316+-0.0194           12.4306+-0.0848        
   varargs-strict-mode                               14.0713+-0.0688     ?     14.1359+-0.1714        ?
   varargs                                           13.9894+-0.2463           13.8499+-0.0881          might be 1.0101x faster
   weird-inlining-const-prop                          2.9602+-0.1189            2.8633+-0.0272          might be 1.0339x faster

   &lt;geometric&gt;                                       12.2885+-0.0287           12.2771+-0.0361          might be 1.0009x faster

                                                            og                      change                                      
AsmBench:
   bigfib.cpp                                       661.5013+-13.4620    ?    670.5317+-10.6529       ? might be 1.0137x slower
   cray.c                                           561.5823+-3.9861     ?    561.5918+-1.8885        ?
   dry.c                                            752.4342+-86.6775         720.1064+-115.8633        might be 1.0449x faster
   FloatMM.c                                       1091.3007+-14.6774    ?   1093.5269+-13.0445       ?
   gcc-loops.cpp                                   5575.3427+-74.7673        5543.4100+-5.8119        
   n-body.c                                        1245.0841+-2.2604     ?   1245.1384+-2.7895        ?
   Quicksort.c                                      619.4657+-0.6508          619.2747+-1.0433        
   stepanov_container.cpp                          5108.8988+-47.3369        5103.9646+-35.8850       
   Towers.c                                         412.9349+-0.2848     ?    414.4034+-4.3465        ?

   &lt;geometric&gt;                                     1119.1238+-14.3800        1114.7468+-18.4962         might be 1.0039x faster

                                                            og                      change                                      
CompressionBench:
   huffman                                           50.3894+-0.4553     ?     50.6534+-0.2988        ?
   arithmetic-simple                                406.5302+-1.8682          406.0992+-1.8129        
   arithmetic-precise                               382.9674+-2.1728     ^    377.3667+-1.4519        ^ definitely 1.0148x faster
   arithmetic-complex-precise                       377.9872+-0.7360          377.5079+-2.3922        
   arithmetic-precise-order-0                       410.0075+-1.8998     ?    412.9126+-6.3363        ?
   arithmetic-precise-order-1                       462.8408+-3.7065          461.5418+-2.7419        
   arithmetic-precise-order-2                       533.6747+-5.1098          532.8269+-3.7177        
   arithmetic-simple-order-1                        477.6129+-3.6987          477.2491+-2.6985        
   arithmetic-simple-order-2                        557.0336+-6.2226     ?    557.5456+-5.3669        ?
   lz-string                                        497.6081+-11.5666         494.4930+-13.1728       

   &lt;geometric&gt;                                      363.0155+-0.8455          362.4586+-1.2120          might be 1.0015x faster

                                                            og                      change                                      
Geomean of preferred means:
   &lt;scaled-result&gt;                                   73.3753+-0.3469           73.3030+-0.1575          might be 1.0010x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166671</commentid>
    <comment_count>4</comment_count>
      <attachid>271833</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2016-02-19 20:12:42 -0800</bug_when>
    <thetext>Comment on attachment 271833
patch

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

r=me

&gt; Source/JavaScriptCore/runtime/ProxyObject.cpp:380
&gt; +    JSArray* argArray = constructArray(exec, static_cast&lt;ArrayAllocationProfile*&gt;(nullptr), ArgList(exec));

out of curiosity, is the &lt;ArrayAllocationProfile&gt; cast necessary? if so this seems like a dangerous API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166789</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-02-20 15:45:41 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 271833 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=271833&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/ProxyObject.cpp:380
&gt; &gt; +    JSArray* argArray = constructArray(exec, static_cast&lt;ArrayAllocationProfile*&gt;(nullptr), ArgList(exec));
&gt; 
&gt; out of curiosity, is the &lt;ArrayAllocationProfile&gt; cast necessary? if so this
&gt; seems like a dangerous API

Thanks for the review.

We have two conflicting definitions, so the cast is necessary.
I&apos;m not sure that the API is dangerous, because you will get
a compiler error without the cast. That said, I think we could make
it cleaner. It would be super easy to do, we can just name
the one I&apos;m calling in this patch something like:
constructArrayWithAllocationProfile(...)

The conflicting definitions are:
inline JSArray* constructArray(ExecState* exec, ArrayAllocationProfile* profile, const ArgList&amp; values, JSValue newTarget = JSValue()) // in JSGlobalObject.h

inline JSArray* constructArray(ExecState* exec, Structure* arrayStructure, const ArgList&amp; values) // in JSArray.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166790</commentid>
    <comment_count>6</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-02-20 15:51:53 -0800</bug_when>
    <thetext>landed in:
http://trac.webkit.org/changeset/196868</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271833</attachid>
            <date>2016-02-19 18:19:36 -0800</date>
            <delta_ts>2016-02-19 20:12:42 -0800</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>24103</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk2ODUwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBA
CisyMDE2LTAyLTE5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFtFUzZdIEltcGxlbWVudCBQcm94eS5bW0NvbnN0cnVjdF1dCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ0NDAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIG1vc3RseSBhbiBpbXBs
ZW1lbnRhdGlvbiBvZgorICAgICAgICBQcm94eS5bW0NvbnN0cnVjdF1dIHdpdGggcmVzcGVjdCB0
byBzZWN0aW9uIDkuNS4xMworICAgICAgICBvZiB0aGUgRUNNQVNjcmlwdCBzcGVjLgorICAgICAg
ICBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1wcm94eS1vYmplY3QtaW50ZXJu
YWwtbWV0aG9kcy1hbmQtaW50ZXJuYWwtc2xvdHMtY29uc3RydWN0LWFyZ3VtZW50c2xpc3QtbmV3
dGFyZ2V0CisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGNoYW5nZXMgb3BfY3JlYXRlX3RoaXMg
dG8gYWNjZXB0IG5ldy50YXJnZXQncworICAgICAgICB0aGF0IGFyZW4ndCBKU0Z1bmN0aW9ucy4g
VGhpcyBpcyBuZWNlc3NhcnkgaW1wbGVtZW50aW5nIFByb3h5LltbQ29uc3RydWN0XV0gCisgICAg
ICAgIGJlY2F1c2Ugd2UgbWlnaHQgY29uc3RydWN0IGEgSlNGdW5jdGlvbiB3aXRoIGEgbmV3LnRh
cmdldCBiZWluZworICAgICAgICBhIFByb3h5LiBUaGlzIHdpbGwgYWxzbyBiZSBuZWVkZWQgd2hl
biB3ZSBpbXBsZW1lbnQgUmVmbGVjdC5jb25zdHJ1Y3QuCisKKyAgICAgICAgKiBkZmcvREZHT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2NyZWF0ZV90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9jcmVhdGVfdGhpcyk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfY3JlYXRlX3RoaXMpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0
YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoK
KyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6
OnBlcmZvcm1Qcm94eUNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpnZXRD
b25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2JqZWN0Lmg6CisgICAgICAg
ICogdGVzdHMvZXM2LnlhbWw6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3Byb3h5LWNvbnN0cnVj
dC5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAodGhyb3cubmV3LkVycm9y
LmxldC50YXJnZXQpOgorICAgICAgICAodGhyb3cubmV3LkVycm9yKToKKyAgICAgICAgKGFzc2Vy
dC5sZXQudGFyZ2V0KToKKyAgICAgICAgKGFzc2VydC5sZXQuaGFuZGxlci5nZXQgY29uc3RydWN0
KToKKyAgICAgICAgKGxldC50YXJnZXQpOgorICAgICAgICAobGV0LmhhbmRsZXIuY29uc3RydWN0
KToKKyAgICAgICAgKGkuY2F0Y2gpOgorICAgICAgICAoYXNzZXJ0LmxldC5oYW5kbGVyLmNvbnN0
cnVjdCk6CisgICAgICAgIChhc3NlcnQubGV0LmNvbnN0cnVjdCk6CisgICAgICAgIChhc3NlcnQu
ZWxzZS5hc3NlcnQubGV0LnRhcmdldCk6CisgICAgICAgIChhc3NlcnQuZWxzZS5hc3NlcnQubGV0
LmNvbnN0cnVjdCk6CisgICAgICAgIChhc3NlcnQuZWxzZS5hc3NlcnQpOgorICAgICAgICAobmV3
LnByb3h5LmxldC50YXJnZXQpOgorICAgICAgICAobmV3LnByb3h5LmxldC5jb25zdHJ1Y3QpOgor
ICAgICAgICAobmV3LnByb3h5KToKKwogMjAxNi0wMi0xOSAgU3Vrb2xzYWsgU2Frc2h1d29uZyAg
PHN1a29sc2FrQGdtYWlsLmNvbT4KIAogICAgICAgICBbSU5UTF0gSW1wbGVtZW50IE51bWJlciBG
b3JtYXQgRnVuY3Rpb25zCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAJKHJldmlzaW9uIDE5NjgzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw4ICsxNjQsMTAgQEAg
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVRoaQogewogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMp
OwotCi0gICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGpzQ2FzdDxKU0Z1bmN0
aW9uKj4oY29uc3RydWN0b3IpLT5yYXJlRGF0YShleGVjLCBpbmxpbmVDYXBhY2l0eSktPm9iamVj
dEFsbG9jYXRpb25Qcm9maWxlKCktPnN0cnVjdHVyZSgpKTsKKyAgICBpZiAoY29uc3RydWN0b3It
PnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGV4ZWMsIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLT5yYXJlRGF0YShl
eGVjLCBpbmxpbmVDYXBhY2l0eSktPm9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCktPnN0cnVjdHVy
ZSgpKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVj
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdEFu
ZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE5NjgzNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3MDcsNiArMzcwNyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBz
bG93UGF0aDsKIAorICAgICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoOChKSVRDb21w
aWxlcjo6Tm90RXF1YWwsCisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhjYWxsZWVH
UFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoSlNGdW5jdGlv
blR5cGUpKSk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoY2Fs
bGVlR1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCByYXJlRGF0YUdQUik7CiAg
ICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVy
OjpaZXJvLCByYXJlRGF0YUdQUikpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVy
OjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFs
bG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxv
Y2F0b3IoKSksIGFsbG9jYXRvckdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE5NjgzNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3NDAsNiArMzc0MCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7
CiAKKyAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaDgoSklUQ29tcGlsZXI6Ok5v
dEVxdWFsLAorICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoY2FsbGVlR1BSLCBKU0Nl
bGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEpTRnVuY3Rpb25UeXBlKSkp
OwogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGNhbGxlZUdQUiwg
SlNGdW5jdGlvbjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSwgcmFyZURhdGFHUFIpOwogICAgICAgICBz
bG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywg
cmFyZURhdGFHUFIpKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVz
cyhyYXJlRGF0YUdQUiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mQWxsb2NhdG9yKCkp
LCBhbGxvY2F0b3JHUFIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMTk2ODM2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NzAsNiArOTcw
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3RpbwogICAgIFJlZ2lz
dGVySUQgc2NyYXRjaFJlZyA9IHJlZ1QzOwogCiAgICAgZW1pdExvYWRQYXlsb2FkKGNhbGxlZSwg
Y2FsbGVlUmVnKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKGNh
bGxlZVJlZywgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihKU0Z1
bmN0aW9uVHlwZSkpKTsKICAgICBsb2FkUHRyKEFkZHJlc3MoY2FsbGVlUmVnLCBKU0Z1bmN0aW9u
OjpvZmZzZXRPZlJhcmVEYXRhKCkpLCByYXJlRGF0YVJlZyk7CiAgICAgYWRkU2xvd0Nhc2UoYnJh
bmNoVGVzdFB0cihaZXJvLCByYXJlRGF0YVJlZykpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyYXJl
RGF0YVJlZywgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxv
Y2F0b3JSZWcpOwpAQCAtOTg3LDYgKzk4OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90
aGlzKEluc3RydWN0aW8KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NyZWF0ZV90aGlzKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCiB7CisgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBDYWxsZWU6Om1fdHlwZSAh
PSBKU0Z1bmN0aW9uVHlwZS4KICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGRvZXNuJ3QgaGF2
ZSByYXJlIGRhdGEKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGRvZXNuJ3QgaGF2ZSBhbiBh
bGxvY2F0aW9uIHByb2ZpbGUKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGFsbG9jYXRpb24g
ZmFpbGVkCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJl
dmlzaW9uIDE5NjgzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcxMiw2ICs3MTIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9j
cmVhdGVfdGhpcyhJbnN0cnVjdGlvCiAgICAgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnID0gcmVnVDM7
CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgY2FsbGVlUmVnKTsKKyAgICBh
ZGRTbG93Q2FzZShicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKGNhbGxlZVJlZywgSlNDZWxsOjp0
eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihKU0Z1bmN0aW9uVHlwZSkpKTsKICAg
ICBsb2FkUHRyKEFkZHJlc3MoY2FsbGVlUmVnLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlJhcmVEYXRh
KCkpLCByYXJlRGF0YVJlZyk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJvLCBy
YXJlRGF0YVJlZykpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyYXJlRGF0YVJlZywgRnVuY3Rpb25S
YXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxvY2F0b3JSZWcpOwpAQCAtNzI5
LDYgKzczMCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW8KIAog
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CisgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBDYWxsZWU6Om1fdHlwZSAhPSBKU0Z1bmN0aW9uVHlwZS4K
ICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGRvZXNuJ3QgaGF2ZSByYXJlIGRhdGEKICAgICBs
aW5rU2xvd0Nhc2UoaXRlcik7IC8vIGRvZXNuJ3QgaGF2ZSBhbiBhbGxvY2F0aW9uIHByb2ZpbGUK
ICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGFsbG9jYXRpb24gZmFpbGVkCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMTk2ODM2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0Niw2ICsxNDYsNyBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2
bSkKICAgICBTVEFUSUNfQVNTRVJUKFN5bWJvbFR5cGUgPT0gNyk7CiAgICAgU1RBVElDX0FTU0VS
VChPYmplY3RUeXBlID09IDIxKTsKICAgICBTVEFUSUNfQVNTRVJUKEZpbmFsT2JqZWN0VHlwZSA9
PSAyMik7CisgICAgU1RBVElDX0FTU0VSVChKU0Z1bmN0aW9uVHlwZSA9PSAyNCk7CiAgICAgU1RB
VElDX0FTU0VSVChNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID09IDEpOwogICAgIFNUQVRJQ19BU1NF
UlQoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9PSAyKTsKICAgICBTVEFUSUNfQVNTRVJU
KEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID09IDB4NDAwMDAwMDApOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20JKHJldmlzaW9uIDE5NjgzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC02OTEsNiAr
NjkxLDcgQEAgX2xsaW50X29wX2NyZWF0ZV90aGlzOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAg
ICBsb2FkaSA4W1BDXSwgdDAKICAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MAorICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgSlNGdW5jdGlvblR5cGUsIC5vcENyZWF0
ZVRoaXNTbG93CiAgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9yYXJlRGF0YVt0MF0sIHQ1CiAgICAg
YnRweiB0NSwgLm9wQ3JlYXRlVGhpc1Nsb3cKICAgICBsb2FkcCBGdW5jdGlvblJhcmVEYXRhOjpt
X29iamVjdEFsbG9jYXRpb25Qcm9maWxlICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om1fYWxs
b2NhdG9yW3Q1XSwgdDEKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAxOTY4MzYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2lu
ZyBjb3B5KQpAQCAtNTk3LDYgKzU5Nyw3IEBAIF9sbGludF9vcF9jcmVhdGVfdGhpczoKICAgICB0
cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQwKQogICAgIGxv
YWRwIFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0MF0sIEpTRnVu
Y3Rpb25UeXBlLCAub3BDcmVhdGVUaGlzU2xvdwogICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fcmFy
ZURhdGFbdDBdLCB0MwogICAgIGJ0cHogdDMsIC5vcENyZWF0ZVRoaXNTbG93CiAgICAgbG9hZHAg
RnVuY3Rpb25SYXJlRGF0YTo6bV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZSArIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlOjptX2FsbG9jYXRvclt0M10sIHQxCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAx
OTY4MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTMzMCw2ICszMzAsNyBAQCBjb25zdCBTdHJpbmdUeXBl
ID0gNgogY29uc3QgU3ltYm9sVHlwZSA9IDcKIGNvbnN0IE9iamVjdFR5cGUgPSAyMQogY29uc3Qg
RmluYWxPYmplY3RUeXBlID0gMjIKK2NvbnN0IEpTRnVuY3Rpb25UeXBlID0gMjQKIAogIyBUeXBl
IGZsYWdzIGNvbnN0YW50cy4KIGNvbnN0IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAJKHJldmlzaW9uIDE5NjgzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMSwxNyArMjIxLDIyIEBAIFNM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfb3V0X29mX2IKIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9jcmVhdGVfdGhpcykKIHsKICAgICBCRUdJTigpOwotICAgIEpTRnVuY3Rpb24qIGNv
bnN0cnVjdG9yID0ganNDYXN0PEpTRnVuY3Rpb24qPihPUCgyKS5qc1ZhbHVlKCkuYXNDZWxsKCkp
OwotCi0gICAgYXV0byYgY2FjaGVXcml0ZUJhcnJpZXIgPSBwY1s0XS51LmpzQ2VsbDsKLSAgICBp
ZiAoIWNhY2hlV3JpdGVCYXJyaWVyKQotICAgICAgICBjYWNoZVdyaXRlQmFycmllci5zZXQoZXhl
Yy0+dm0oKSwgZXhlYy0+Y29kZUJsb2NrKCksIGNvbnN0cnVjdG9yKTsKLSAgICBlbHNlIGlmIChj
YWNoZVdyaXRlQmFycmllci51bnZhbGlkYXRlZEdldCgpICE9IEpTQ2VsbDo6c2Vlbk11bHRpcGxl
Q2FsbGVlT2JqZWN0cygpICYmIGNhY2hlV3JpdGVCYXJyaWVyLmdldCgpICE9IGNvbnN0cnVjdG9y
KQotICAgICAgICBjYWNoZVdyaXRlQmFycmllci5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKEpTQ2Vs
bDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpKTsKLQotICAgIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSA9IHBjWzNdLnUub3BlcmFuZDsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNvbnN0
cnVjdG9yLT5yYXJlRGF0YShleGVjLCBpbmxpbmVDYXBhY2l0eSktPm9iamVjdEFsbG9jYXRpb25Q
cm9maWxlKCktPnN0cnVjdHVyZSgpOwotICAgIFJFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChl
eGVjLCBzdHJ1Y3R1cmUpKTsKKyAgICBKU09iamVjdCogcmVzdWx0OworICAgIEpTQ2VsbCogY29u
c3RydWN0b3JBc0NlbGwgPSBPUCgyKS5qc1ZhbHVlKCkuYXNDZWxsKCk7CisgICAgaWYgKGNvbnN0
cnVjdG9yQXNDZWxsLT50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpIHsKKyAgICAgICAgSlNGdW5j
dGlvbiogY29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yQXNDZWxs
KTsKKyAgICAgICAgYXV0byYgY2FjaGVXcml0ZUJhcnJpZXIgPSBwY1s0XS51LmpzQ2VsbDsKKyAg
ICAgICAgaWYgKCFjYWNoZVdyaXRlQmFycmllcikKKyAgICAgICAgICAgIGNhY2hlV3JpdGVCYXJy
aWVyLnNldChleGVjLT52bSgpLCBleGVjLT5jb2RlQmxvY2soKSwgY29uc3RydWN0b3IpOworICAg
ICAgICBlbHNlIGlmIChjYWNoZVdyaXRlQmFycmllci51bnZhbGlkYXRlZEdldCgpICE9IEpTQ2Vs
bDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpICYmIGNhY2hlV3JpdGVCYXJyaWVyLmdldCgp
ICE9IGNvbnN0cnVjdG9yKQorICAgICAgICAgICAgY2FjaGVXcml0ZUJhcnJpZXIuc2V0V2l0aG91
dFdyaXRlQmFycmllcihKU0NlbGw6OnNlZW5NdWx0aXBsZUNhbGxlZU9iamVjdHMoKSk7CisKKyAg
ICAgICAgc2l6ZV90IGlubGluZUNhcGFjaXR5ID0gcGNbM10udS5vcGVyYW5kOworICAgICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNvbnN0cnVjdG9yLT5yYXJlRGF0YShleGVjLCBpbmxpbmVD
YXBhY2l0eSktPm9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCktPnN0cnVjdHVyZSgpOworICAgICAg
ICByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpOworICAgIH0g
ZWxzZQorICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICBS
RVRVUk4ocmVzdWx0KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX3RoaXMpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCShy
ZXZpc2lvbiAxOTY4MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9i
amVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDkgKzY1LDEzIEBAIHZvaWQgUHJveHlPYmpl
Y3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IENhbGxEYXRhIGlnbm9yZWQ7CiAgICAgSlNPYmplY3QqIHRhcmdldEFzT2JqZWN0ID0ganNDYXN0
PEpTT2JqZWN0Kj4odGFyZ2V0KTsKLSAgICBtX2lzQ2FsbGFibGUgPSB0YXJnZXRBc09iamVjdC0+
bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YSh0YXJnZXRBc09iamVjdCwgaWdub3JlZCkgIT0g
Q2FsbFR5cGVOb25lOworCisgICAgQ2FsbERhdGEgaWdub3JlZENhbGxEYXRhOworICAgIG1faXND
YWxsYWJsZSA9IHRhcmdldEFzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKHRh
cmdldEFzT2JqZWN0LCBpZ25vcmVkQ2FsbERhdGEpICE9IENhbGxUeXBlTm9uZTsKKworICAgIENv
bnN0cnVjdERhdGEgaWdub3JlZENvbnN0cnVjdERhdGE7CisgICAgbV9pc0NvbnN0cnVjdGlibGUg
PSBqc0Nhc3Q8SlNPYmplY3QqPih0YXJnZXQpLT5tZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVj
dERhdGEoanNDYXN0PEpTT2JqZWN0Kj4odGFyZ2V0KSwgaWdub3JlZENvbnN0cnVjdERhdGEpICE9
IENvbnN0cnVjdFR5cGVOb25lOwogCiAgICAgbV90YXJnZXQuc2V0KHZtLCB0aGlzLCB0YXJnZXRB
c09iamVjdCk7CiAgICAgbV9oYW5kbGVyLnNldCh2bSwgdGhpcywgaGFuZGxlcik7CkBAIC0zNTEs
NCArMzU1LDU0IEBAIHZvaWQgUHJveHlPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiAKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9oYW5kbGVyKTsKIH0KIAorc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q29uc3RydWN0KEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFByb3h5T2JqZWN0KiBw
cm94eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBKU1ZhbHVl
IGhhbmRsZXJWYWx1ZSA9IHByb3h5LT5oYW5kbGVyKCk7CisgICAgaWYgKGhhbmRsZXJWYWx1ZS5p
c051bGwoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJQcm94eSAnaGFuZGxlcicgaXMgbnVsbC4gSXQgc2hvdWxkIGJlIGFuIE9iamVjdC4iKSk7
CisKKyAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+KGhhbmRsZXJWYWx1
ZSk7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGU7CisgICAg
SlNWYWx1ZSBjb25zdHJ1Y3RNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZXhlYywgY2FsbERh
dGEsIGNhbGxUeXBlLCBtYWtlSWRlbnRpZmllcih2bSwgImNvbnN0cnVjdCIpLCBBU0NJSUxpdGVy
YWwoIidjb25zdHJ1Y3QnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBj
b25zdHJ1Y3RpYmxlLiIpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgSlNPYmplY3QqIHRh
cmdldCA9IHByb3h5LT50YXJnZXQoKTsKKyAgICBpZiAoY29uc3RydWN0TWV0aG9kLmlzVW5kZWZp
bmVkKCkpIHsKKyAgICAgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOworICAgICAgICBD
b25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSB0YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0
Q29uc3RydWN0RGF0YSh0YXJnZXQsIGNvbnN0cnVjdERhdGEpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVChjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGVOb25lKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3QoZXhlYywgdGFyZ2V0LCBjb25zdHJ1Y3RUeXBlLCBj
b25zdHJ1Y3REYXRhLCBBcmdMaXN0KGV4ZWMpLCBleGVjLT5uZXdUYXJnZXQoKSkpOworICAgIH0K
KworICAgIEpTQXJyYXkqIGFyZ0FycmF5ID0gY29uc3RydWN0QXJyYXkoZXhlYywgc3RhdGljX2Nh
c3Q8QXJyYXlBbGxvY2F0aW9uUHJvZmlsZSo+KG51bGxwdHIpLCBBcmdMaXN0KGV4ZWMpKTsKKyAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwor
ICAgIGFyZ3VtZW50cy5hcHBlbmQodGFyZ2V0KTsKKyAgICBhcmd1bWVudHMuYXBwZW5kKGFyZ0Fy
cmF5KTsKKyAgICBhcmd1bWVudHMuYXBwZW5kKGV4ZWMtPm5ld1RhcmdldCgpKTsKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IGNhbGwoZXhlYywgY29uc3RydWN0TWV0aG9kLCBjYWxsVHlwZSwgY2FsbERh
dGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGlmICgh
cmVzdWx0LmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUmVzdWx0IGZyb20gUHJveHkgaGFuZGxlcidzICdjb25zdHJ1Y3QnIG1l
dGhvZCBzaG91bGQgYmUgYW4gb2JqZWN0LiIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7Cit9CisKK0NvbnN0cnVjdFR5cGUgUHJveHlPYmplY3Q6OmdldENvbnN0cnVjdERh
dGEoSlNDZWxsKiBjZWxsLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIFBy
b3h5T2JqZWN0KiBwcm94eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGNlbGwpOworICAgIGlmICgh
cHJveHktPm1faXNDb25zdHJ1Y3RpYmxlKSB7CisgICAgICAgIGNvbnN0cnVjdERhdGEuanMuZnVu
Y3Rpb25FeGVjdXRhYmxlID0gbnVsbHB0cjsKKyAgICAgICAgY29uc3RydWN0RGF0YS5qcy5zY29w
ZSA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlTm9uZTsKKyAgICB9CisK
KyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IHBlcmZvcm1Qcm94eUNvbnN0cnVj
dDsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCShy
ZXZpc2lvbiAxOTY4MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwg
Q2FsbERhdGEmKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpT
Q2VsbCosIENvbnN0cnVjdERhdGEmKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBib29sIGdldE93blByb3BlcnR5U2xvdENvbW1v
bihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpAQCAtNzEsNiArNzIs
NyBAQCBwcml2YXRlOgogICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4gbV90YXJnZXQ7CiAgICAg
V3JpdGVCYXJyaWVyPFVua25vd24+IG1faGFuZGxlcjsKICAgICBib29sIG1faXNDYWxsYWJsZSA6
IDE7CisgICAgYm9vbCBtX2lzQ29uc3RydWN0aWJsZSA6IDE7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwJKHJldmlzaW9uIDE5
NjgzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAkod29ya2luZyBj
b3B5KQpAQCAtOTExLDcgKzkxMSw3IEBACiAtIHBhdGg6IGVzNi9Qcm94eV9BcnJheS5pc0FycmF5
X3N1cHBvcnQuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L1Byb3h5X2NvbnN0
cnVjdF9oYW5kbGVyLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3Jt
YWwKIC0gcGF0aDogZXM2L1Byb3h5X2NvbnN0cnVjdG9yX3JlcXVpcmVzX25ldy5qcwogICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9Qcm94eV9kZWZpbmVQcm9wZXJ0eV9oYW5kbGVy
LmpzCkBAIC05NjcsNyArOTY3LDcgQEAKIC0gcGF0aDogZXM2L1Byb3h5X2ludGVybmFsX2dldF9j
YWxsc19DbGFzc0RlZmluaXRpb25FdmFsdWF0aW9uLmpzCiAgIGNtZDogcnVuRVM2IDpub3JtYWwK
IC0gcGF0aDogZXM2L1Byb3h5X2ludGVybmFsX2dldF9jYWxsc19DcmVhdGVEeW5hbWljRnVuY3Rp
b24uanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRo
OiBlczYvUHJveHlfaW50ZXJuYWxfZ2V0X2NhbGxzX0NyZWF0ZUxpc3RGcm9tQXJyYXlMaWtlLmpz
CiAgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L1Byb3h5X2ludGVybmFsX2dldF9j
YWxsc19EYXRlLnByb3RvdHlwZS50b0pTT04uanMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvcHJveHktY29uc3RydWN0LmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcHJveHktY29uc3RydWN0LmpzCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wcm94eS1jb25zdHJ1Y3Qu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNjMgQEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7
CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24iKTsK
K30KKworeworICAgIGxldCB0YXJnZXQgPSBmdW5jdGlvbigpIHsgfQorICAgIGxldCBoYW5kbGVy
ID0geworICAgICAgICBjb25zdHJ1Y3Q6IDQ1CisgICAgfTsKKyAgICBsZXQgcHJveHkgPSBuZXcg
UHJveHkodGFyZ2V0LCBoYW5kbGVyKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwMDsgaSsr
KSB7CisgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgICAgICB0cnkgeworICAgICAgICAg
ICAgbmV3IHByb3h5OworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3ID0g
dHJ1ZTsKKyAgICAgICAgICAgIGFzc2VydChlLnRvU3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6ICdj
b25zdHJ1Y3QnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjb25zdHJ1
Y3RpYmxlLiIpOworICAgICAgICB9CisgICAgICAgIGFzc2VydCh0aHJldyk7CisgICAgfQorfQor
Cit7CisgICAgbGV0IHRhcmdldCA9IGZ1bmN0aW9uKCkgeyB9CisgICAgbGV0IGhhbmRsZXIgPSB7
CisgICAgICAgIGNvbnN0cnVjdDogImhlbGxvIgorICAgIH07CisgICAgbGV0IHByb3h5ID0gbmV3
IFByb3h5KHRhcmdldCwgaGFuZGxlcik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7IGkr
KykgeworICAgICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIG5ldyBwcm94eTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJldyA9
IHRydWU7CisgICAgICAgICAgICBhc3NlcnQoZS50b1N0cmluZygpID09PSAiVHlwZUVycm9yOiAn
Y29uc3RydWN0JyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY29uc3Ry
dWN0aWJsZS4iKTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQodGhyZXcpOworICAgIH0KK30K
KworeworICAgIGxldCB0YXJnZXQgPSBmdW5jdGlvbigpIHsgfQorICAgIGxldCBlcnJvciA9IG51
bGw7CisgICAgbGV0IGhhbmRsZXIgPSB7CisgICAgICAgIGdldCBjb25zdHJ1Y3QoKSB7CisgICAg
ICAgICAgICBlcnJvciA9IG5ldyBFcnJvcjsKKyAgICAgICAgICAgIHRocm93IGVycm9yOworICAg
ICAgICB9CisgICAgfTsKKyAgICBsZXQgcHJveHkgPSBuZXcgUHJveHkodGFyZ2V0LCBoYW5kbGVy
KTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwMDsgaSsrKSB7CisgICAgICAgIGxldCB0aHJl
dyA9IGZhbHNlOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbmV3IHByb3h5OworICAgICAg
ICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAgICAgICAgIGFz
c2VydChlID09PSBlcnJvcik7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KHRocmV3KTsKKyAg
ICAgICAgZXJyb3IgPSBudWxsOworICAgIH0KK30KKworeworICAgIGxldCB0YXJnZXQgPSBmdW5j
dGlvbigpIHsgfQorICAgIGxldCBlcnJvciA9IG51bGw7CisgICAgbGV0IGhhbmRsZXIgPSB7Cisg
ICAgICAgIGNvbnN0cnVjdDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlcnJvciA9IG5ldyBF
cnJvcjsKKyAgICAgICAgICAgIHRocm93IGVycm9yOworICAgICAgICB9CisgICAgfTsKKyAgICBs
ZXQgcHJveHkgPSBuZXcgUHJveHkodGFyZ2V0LCBoYW5kbGVyKTsKKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDUwMDsgaSsrKSB7CisgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgICAgICB0
cnkgeworICAgICAgICAgICAgbmV3IHByb3h5OworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAgICAgICAgIGFzc2VydChlID09PSBlcnJvcik7Cisg
ICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KHRocmV3KTsKKyAgICAgICAgZXJyb3IgPSBudWxsOwor
ICAgIH0KK30KKworeworICAgIGxldCBlcnJvciA9IG51bGw7CisgICAgbGV0IHRhcmdldCA9IGZ1
bmN0aW9uKCkgeworICAgICAgICBhc3NlcnQobmV3LnRhcmdldCA9PT0gcHJveHkpOworICAgICAg
ICBlcnJvciA9IG5ldyBFcnJvcjsKKyAgICAgICAgdGhyb3cgZXJyb3I7CisgICAgfTsKKyAgICBs
ZXQgaGFuZGxlciA9IHsgfTsKKyAgICBsZXQgcHJveHkgPSBuZXcgUHJveHkodGFyZ2V0LCBoYW5k
bGVyKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwMDsgaSsrKSB7CisgICAgICAgIGxldCB0
aHJldyA9IGZhbHNlOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbmV3IHByb3h5OworICAg
ICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGFzc2VydChlID09PSBlcnJvcik7CisgICAg
ICAgICAgICBlcnJvciA9IG51bGw7CisgICAgICAgICAgICB0aHJldyA9IHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgYXNzZXJ0KHRocmV3KTsKKyAgICB9Cit9CisKK3sKKyAgICBsZXQgdGFyZ2V0
ID0gZnVuY3Rpb24oKSB7IH0KKyAgICBsZXQgaGFuZGxlciA9IHsKKyAgICAgICAgY29uc3RydWN0
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJldHVybiAyNTsKKyAgICAgICAgfQorICAgIH07
CisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KHRhcmdldCwgaGFuZGxlcik7CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCA1MDA7IGkrKykgeworICAgICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG5ldyBwcm94eTsKKyAgICAgICAgfSBjYXRjaChlKSB7
CisgICAgICAgICAgICB0aHJldyA9IHRydWU7CisgICAgICAgICAgICBhc3NlcnQoZS50b1N0cmlu
ZygpID09PSAiVHlwZUVycm9yOiBSZXN1bHQgZnJvbSBQcm94eSBoYW5kbGVyJ3MgJ2NvbnN0cnVj
dCcgbWV0aG9kIHNob3VsZCBiZSBhbiBvYmplY3QuIik7CisgICAgICAgIH0KKyAgICAgICAgYXNz
ZXJ0KHRocmV3KTsKKyAgICB9Cit9CisKK3sKKyAgICBsZXQgdGFyZ2V0ID0gZnVuY3Rpb24oKSB7
IH0KKyAgICBsZXQgaGFuZGxlciA9IHsKKyAgICAgICAgY29uc3RydWN0OiBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIHJldHVybiAiaGVsbG8iOworICAgICAgICB9CisgICAgfTsKKyAgICBsZXQg
cHJveHkgPSBuZXcgUHJveHkodGFyZ2V0LCBoYW5kbGVyKTsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDUwMDsgaSsrKSB7CisgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgICAgICB0cnkg
eworICAgICAgICAgICAgbmV3IHByb3h5OworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAg
ICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAgICAgICAgIGFzc2VydChlLnRvU3RyaW5nKCkgPT09ICJU
eXBlRXJyb3I6IFJlc3VsdCBmcm9tIFByb3h5IGhhbmRsZXIncyAnY29uc3RydWN0JyBtZXRob2Qg
c2hvdWxkIGJlIGFuIG9iamVjdC4iKTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQodGhyZXcp
OworICAgIH0KK30KKworeworICAgIGxldCB0YXJnZXQgPSBmdW5jdGlvbigpIHsgfQorICAgIGxl
dCBoYW5kbGVyID0geworICAgICAgICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgcmV0dXJuIFN5bWJvbCgpOworICAgICAgICB9CisgICAgfTsKKyAgICBsZXQgcHJveHkgPSBu
ZXcgUHJveHkodGFyZ2V0LCBoYW5kbGVyKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwMDsg
aSsrKSB7CisgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgbmV3IHByb3h5OworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGFzc2VydChlLnRvU3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6
IFJlc3VsdCBmcm9tIFByb3h5IGhhbmRsZXIncyAnY29uc3RydWN0JyBtZXRob2Qgc2hvdWxkIGJl
IGFuIG9iamVjdC4iKTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQodGhyZXcpOworICAgIH0K
K30KKworeworICAgIGxldCBhID0ge307CisgICAgbGV0IGIgPSB7fTsKKyAgICBsZXQgcmV0VmFs
dWUgPSBudWxsOworICAgIGxldCB0YXJnZXQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJu
IHJldFZhbHVlOworICAgIH07CisgICAgbGV0IGVycm9yID0gbnVsbDsKKyAgICBsZXQgaGFuZGxl
ciA9IHsKKyAgICAgICAgY29uc3RydWN0OiBmdW5jdGlvbih0aGVUYXJnZXQsIGFyZ0FycmF5LCBu
ZXdUYXJnZXQpIHsKKyAgICAgICAgICAgIGFzc2VydCh0aGVUYXJnZXQgPT09IHRhcmdldCk7Cisg
ICAgICAgICAgICBhc3NlcnQobmV3VGFyZ2V0ID09PSBwcm94eSk7CisgICAgICAgICAgICByZXR1
cm4gbmV3IHRoZVRhcmdldCguLi5hcmdBcnJheSk7CisgICAgICAgIH0KKyAgICB9OworICAgIGxl
dCBwcm94eSA9IG5ldyBQcm94eSh0YXJnZXQsIGhhbmRsZXIpOworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgNTAwOyBpKyspIHsKKyAgICAgICAgcmV0VmFsdWUgPSBpICUgMiA/IGEgOiBiOworICAg
ICAgICBhc3NlcnQobmV3IHByb3h5ID09PSByZXRWYWx1ZSk7CisgICAgfQorfQorCit7CisgICAg
bGV0IGEgPSB7fTsKKyAgICBsZXQgYiA9IHt9OworICAgIGxldCB0YXJnZXQgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgYXNzZXJ0KG5ldy50YXJnZXQgPT09IHByb3h5KTsKKyAgICAgICAgcmV0dXJu
IGE7CisgICAgfTsKKyAgICBsZXQgZXJyb3IgPSBudWxsOworICAgIGxldCBjb25zdHJ1Y3QgPSBm
dW5jdGlvbih0aGVUYXJnZXQsIGFyZ0FycmF5LCBuZXdUYXJnZXQpIHsKKyAgICAgICAgYXNzZXJ0
KHRoZVRhcmdldCA9PT0gdGFyZ2V0KTsKKyAgICAgICAgYXNzZXJ0KG5ld1RhcmdldCA9PT0gcHJv
eHkpOworICAgICAgICByZXR1cm4gYjsKKyAgICB9OworICAgIGxldCBoYW5kbGVyID0geyB9Owor
ICAgIGxldCBwcm94eSA9IG5ldyBQcm94eSh0YXJnZXQsIGhhbmRsZXIpOworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgNTAwOyBpKyspIHsKKyAgICAgICAgaWYgKGkgJSAyKQorICAgICAgICAgICAg
aGFuZGxlci5jb25zdHJ1Y3QgPSBjb25zdHJ1Y3Q7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGhhbmRsZXIuY29uc3RydWN0ID0gbnVsbDsKKyAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBwcm94
eTsKKyAgICAgICAgaWYgKGkgJSAyKQorICAgICAgICAgICAgYXNzZXJ0KHJlc3VsdCA9PT0gYikK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KHJlc3VsdCA9PT0gYSk7CisgICAgfQor
fQorCit7CisgICAgbGV0IHRhcmdldCA9IGZ1bmN0aW9uKC4uLmFyZ3MpIHsKKyAgICAgICAgYXNz
ZXJ0KG5ldy50YXJnZXQgPT09IHRhcmdldCk7CisgICAgICAgIGFzc2VydChhcmdzWzBdID09PSAw
KTsKKyAgICAgICAgYXNzZXJ0KGFyZ3NbMV0gPT09IDEpOworICAgICAgICBhc3NlcnQoYXJnc1sy
XSA9PT0gImZvbyIpOworICAgIH07CisgICAgbGV0IGVycm9yID0gbnVsbDsKKyAgICBsZXQgY29u
c3RydWN0ID0gZnVuY3Rpb24odGhlVGFyZ2V0LCBhcmdBcnJheSwgbmV3VGFyZ2V0KSB7CisgICAg
ICAgIGFzc2VydCh0aGVUYXJnZXQgPT09IHRhcmdldCk7CisgICAgICAgIGFzc2VydChuZXdUYXJn
ZXQgPT09IHByb3h5KTsKKyAgICAgICAgcmV0dXJuIG5ldyB0YXJnZXQoLi4uYXJnQXJyYXkpOwor
ICAgIH07CisgICAgbGV0IGhhbmRsZXIgPSB7IH07CisgICAgaGFuZGxlci5jb25zdHJ1Y3QgPSBj
b25zdHJ1Y3Q7CisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KHRhcmdldCwgaGFuZGxlcik7Cisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7IGkrKykgeworICAgICAgICBuZXcgcHJveHkoMCwg
MSwgImZvbyIpOworICAgIH0KK30KKworeworICAgIGxldCBvYmogPSBudWxsOworICAgIGxldCB0
YXJnZXQgPSBmdW5jdGlvbiguLi5hcmdzKSB7CisgICAgICAgIGFzc2VydChuZXcudGFyZ2V0ID09
PSB0YXJnZXQpOworICAgICAgICBhc3NlcnQoYXJnc1swXSA9PT0gMCk7CisgICAgICAgIGFzc2Vy
dChvYmopOworICAgICAgICBhc3NlcnQoYXJnc1sxXSA9PT0gb2JqKTsKKyAgICAgICAgYXNzZXJ0
KGFyZ3NbMl0gPT09ICJmb28iKTsKKyAgICB9OworICAgIGxldCBlcnJvciA9IG51bGw7CisgICAg
bGV0IGNvbnN0cnVjdCA9IGZ1bmN0aW9uKHRoZVRhcmdldCwgYXJnQXJyYXksIG5ld1RhcmdldCkg
eworICAgICAgICBhc3NlcnQodGhlVGFyZ2V0ID09PSB0YXJnZXQpOworICAgICAgICBhc3NlcnQo
bmV3VGFyZ2V0ID09PSBwcm94eSk7CisgICAgICAgIHJldHVybiBuZXcgdGFyZ2V0KC4uLmFyZ0Fy
cmF5KTsKKyAgICB9OworICAgIGxldCBoYW5kbGVyID0geyB9OworICAgIGhhbmRsZXIuY29uc3Ry
dWN0ID0gY29uc3RydWN0OworICAgIGxldCBwcm94eSA9IG5ldyBQcm94eSh0YXJnZXQsIGhhbmRs
ZXIpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTAwOyBpKyspIHsKKyAgICAgICAgb2JqID0g
e307CisgICAgICAgIG5ldyBwcm94eSgwLCBvYmosICJmb28iKTsKKyAgICB9Cit9Cg==
</data>
<flag name="review"
          id="296655"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>