<?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>145092</bug_id>
          
          <creation_ts>2015-05-15 22:38:25 -0700</creation_ts>
          <short_desc>[JSC] When entering a CheckTierUp without OSREntry, force the CheckTierUp for the outer loops with OSR Entry</short_desc>
          <delta_ts>2015-05-18 22:07:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1095395</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-05-15 22:38:25 -0700</bug_when>
    <thetext>[JSC] When entering a CheckTierUp without OSREntry, force the CheckTierUp for the outer loops with OSR Entry</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095407</commentid>
    <comment_count>1</comment_count>
      <attachid>253268</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-05-15 23:06:18 -0700</bug_when>
    <thetext>Created attachment 253268
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095408</commentid>
    <comment_count>2</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-05-15 23:07:05 -0700</bug_when>
    <thetext>                                                          Conf#1                    Conf#2                                      
SunSpider:
   3d-cube                                            7.4096+-0.4321            7.2295+-0.1111          might be 1.0249x faster
   3d-morph                                           7.8741+-0.1753     ?      7.9550+-0.3005        ? might be 1.0103x slower
   3d-raytrace                                        8.8748+-0.2838            8.7518+-0.2634          might be 1.0141x faster
   access-binary-trees                                3.0294+-0.4368     ?      3.1710+-0.2458        ? might be 1.0468x slower
   access-fannkuch                                    8.3342+-0.1834     ?      8.3436+-0.2267        ?
   access-nbody                                       4.0822+-0.0964     ?      4.1282+-0.1061        ? might be 1.0113x slower
   access-nsieve                                      4.5242+-0.2813            4.3885+-0.1269          might be 1.0309x faster
   bitops-3bit-bits-in-byte                           1.9634+-0.1456            1.8323+-0.1213          might be 1.0716x faster
   bitops-bits-in-byte                                5.5760+-0.0646            5.5617+-0.0638        
   bitops-bitwise-and                                 2.6872+-0.3286            2.5275+-0.4685          might be 1.0632x faster
   bitops-nsieve-bits                                 4.1599+-0.1240     ?      4.2923+-0.1247        ? might be 1.0318x slower
   controlflow-recursive                              2.9416+-0.0529            2.8656+-0.1007          might be 1.0265x faster
   crypto-aes                                         6.0355+-0.3085            6.0340+-0.2578        
   crypto-md5                                         3.6725+-0.1909     ?      3.7355+-0.2876        ? might be 1.0171x slower
   crypto-sha1                                        3.3675+-0.1658            3.2496+-0.1339          might be 1.0363x faster
   date-format-tofte                                 12.3451+-0.4289     ?     12.3464+-0.7354        ?
   date-format-xparb                                  7.3520+-0.1714     ?      7.7325+-0.5321        ? might be 1.0518x slower
   math-cordic                                        4.2152+-0.0703     ?      4.2251+-0.0392        ?
   math-partial-sums                                  9.2520+-0.2259            9.0646+-0.1921          might be 1.0207x faster
   math-spectral-norm                                 2.9468+-0.1743            2.9208+-0.1529        
   regexp-dna                                         9.4365+-0.4021            9.4285+-0.6929        
   string-base64                                      6.1243+-0.3377     ?      6.1534+-0.2686        ?
   string-fasta                                       9.1610+-0.3489     ?      9.2357+-0.6859        ?
   string-tagcloud                                   12.5499+-0.1709     ?     13.0637+-0.5248        ? might be 1.0409x slower
   string-unpack-code                                26.9385+-1.0011     ?     28.3401+-2.4999        ? might be 1.0520x slower
   string-validate-input                              6.7728+-0.2807            6.7043+-0.2554          might be 1.0102x faster

   &lt;arithmetic&gt;                                       6.9856+-0.0279     ?      7.0493+-0.1514        ? might be 1.0091x slower

                                                          Conf#1                    Conf#2                                      
LongSpider:
   3d-cube                                         1268.0212+-7.4885     ?   1272.5211+-21.0230       ?
   3d-morph                                        1873.6866+-2.3872         1872.7179+-0.3717        
   3d-raytrace                                     1044.4565+-6.7884         1040.5856+-4.4081        
   access-binary-trees                             1380.8423+-9.5336         1377.9116+-2.5945        
   access-fannkuch                                  443.9774+-25.1541    ?    456.6666+-33.7031       ? might be 1.0286x slower
   access-nbody                                    1038.7339+-1.0117         1038.0443+-1.3889        
   access-nsieve                                    675.2741+-9.5097          673.0815+-8.2942        
   bitops-3bit-bits-in-byte                          50.4523+-0.3199     ?     51.2123+-1.0412        ? might be 1.0151x slower
   bitops-bits-in-byte                              342.6328+-4.6170          335.3754+-12.7133         might be 1.0216x faster
   bitops-nsieve-bits                               627.5229+-3.7500     ?    629.0696+-5.6238        ?
   controlflow-recursive                            704.6216+-1.7479     ?    711.0287+-5.2002        ?
   crypto-aes                                       934.9258+-4.7238          932.8550+-11.5641       
   crypto-md5                                       679.8302+-7.2845          678.2703+-7.9047        
   crypto-sha1                                      915.9385+-2.7019     ?    916.5547+-5.3382        ?
   date-format-tofte                                986.4698+-25.6638         970.1834+-29.2711         might be 1.0168x faster
   date-format-xparb                               1006.0831+-32.7056        1005.1788+-17.6326       
   math-cordic                                      672.9966+-1.3803     ?    673.1827+-2.7542        ?
   math-partial-sums                               1063.6277+-2.4464     ?   1066.1705+-0.4335        ?
   math-spectral-norm                              1073.1489+-1.2558     ?   1074.0620+-2.4636        ?
   string-base64                                    485.8058+-2.1626     ?    490.2803+-5.8771        ?
   string-fasta                                     597.7646+-2.3193     !    610.3297+-7.1476        ! definitely 1.0210x slower
   string-tagcloud                                  276.0377+-2.6581          273.9587+-2.5604        

   &lt;geometric&gt;                                      690.5534+-2.9513     ?    691.5118+-4.7578        ? might be 1.0014x slower

                                                          Conf#1                    Conf#2                                      
V8Spider:
   crypto                                            73.0366+-0.7141           72.9620+-1.1089        
   deltablue                                         89.8962+-1.8999     ?     91.3795+-3.9843        ? might be 1.0165x slower
   earley-boyer                                      62.6042+-0.6684     ?     62.8981+-0.7167        ?
   raytrace                                          41.1804+-0.6308           40.4802+-2.7896          might be 1.0173x faster
   regexp                                           110.2186+-0.4657     ?    112.0044+-1.5653        ? might be 1.0162x slower
   richards                                         101.2618+-7.0370          100.6540+-3.6778        
   splay                                             52.3573+-3.2217           50.0626+-5.0468          might be 1.0458x faster

   &lt;geometric&gt;                                       71.8442+-1.1007           71.5029+-0.6859          might be 1.0048x faster

                                                          Conf#1                    Conf#2                                      
Octane:
   encrypt                                           0.30776+-0.00040    ?     0.31168+-0.01168       ? might be 1.0127x slower
   decrypt                                           5.68525+-0.08538          5.65907+-0.00341       
   deltablue                                x2       0.26863+-0.00917          0.26766+-0.00912       
   earley                                            0.64525+-0.00123          0.64506+-0.00309       
   boyer                                            10.44943+-0.03030         10.41606+-0.07009       
   navier-stokes                            x2       6.39014+-0.01320          6.38707+-0.00863       
   raytrace                                 x2       1.73498+-0.07933    ?     1.74529+-0.12279       ?
   richards                                 x2       0.16801+-0.00494          0.16639+-0.00440       
   splay                                    x2       0.54389+-0.00704    ?     0.54517+-0.00430       ?
   regexp                                   x2      42.34250+-0.33029    ?    42.64431+-0.40393       ?
   pdfjs                                    x2      57.93497+-0.13332         57.93039+-0.20377       
   mandreel                                 x2      69.54558+-0.63641    ?    69.64517+-0.64704       ?
   gbemu                                    x2      59.73309+-0.83850    ?    59.76650+-1.21648       ?
   closure                                           0.75760+-0.00357    ?     0.75937+-0.00498       ?
   jquery                                            9.45755+-0.02425          9.43707+-0.05357       
   box2d                                    x2      17.45292+-0.16513         17.38255+-0.07527       
   zlib                                     x2     546.97654+-11.14701       534.28184+-43.11547        might be 1.0238x faster
   typescript                               x2    1079.12885+-30.22092   ?  1082.95648+-27.75814      ?

   &lt;geometric&gt;                                       9.14683+-0.03390          9.13502+-0.09445         might be 1.0013x faster

                                                          Conf#1                    Conf#2                                      
Kraken:
   ai-astar                                          482.243+-12.438     ^     346.427+-1.074         ^ definitely 1.3920x faster
   audio-beat-detection                              147.332+-1.911      ?     147.907+-2.737         ?
   audio-dft                                         143.395+-4.087      ?     143.926+-3.885         ?
   audio-fft                                         116.386+-7.577            111.155+-0.859           might be 1.0471x faster
   audio-oscillator                                   97.463+-1.043             97.060+-0.500         
   imaging-darkroom                                  140.253+-2.540            139.450+-0.320         
   imaging-desaturate                                 94.622+-0.433             94.419+-0.361         
   imaging-gaussian-blur                             147.111+-0.734            147.086+-0.712         
   json-parse-financial                               65.643+-1.555      ?      66.186+-0.651         ?
   json-stringify-tinderbox                           43.159+-0.039      ?      43.358+-0.275         ?
   stanford-crypto-aes                                81.284+-0.741      ?      82.970+-1.679         ? might be 1.0207x slower
   stanford-crypto-ccm                                70.367+-4.351             68.662+-2.061           might be 1.0248x faster
   stanford-crypto-pbkdf2                            160.158+-4.868            158.283+-1.684           might be 1.0118x faster
   stanford-crypto-sha256-iterative                   63.869+-0.744             63.549+-0.280         

   &lt;arithmetic&gt;                                      132.378+-0.679      ^     122.174+-0.180         ^ definitely 1.0835x faster

                                                          Conf#1                    Conf#2                                      
JSRegress:
   abs-boolean                                        3.7422+-0.1309            3.7372+-0.2595        
   adapt-to-double-divide                            17.8514+-0.5351     ?     18.0812+-0.4517        ? might be 1.0129x slower
   aliased-arguments-getbyval                         1.6255+-0.3316     ?      1.7136+-0.2224        ? might be 1.0542x slower
   allocate-big-object                                3.9202+-0.3838            3.4868+-0.1403          might be 1.1243x faster
   arguments-named-and-reflective                    13.7587+-0.3791           13.7529+-0.3428        
   arguments-out-of-bounds                           17.9221+-0.2008     ?     18.1804+-0.2191        ? might be 1.0144x slower
   arguments-strict-mode                             12.1758+-0.8507     ?     12.4395+-0.2778        ? might be 1.0217x slower
   arguments                                         10.6910+-0.4041     ?     10.8334+-0.3925        ? might be 1.0133x slower
   arity-mismatch-inlining                            1.1241+-0.0747     ?      1.1693+-0.1470        ? might be 1.0402x slower
   array-access-polymorphic-structure                 9.2833+-0.2092            9.2592+-0.1446        
   array-nonarray-polymorhpic-access                 47.8260+-4.0733           44.8722+-1.5713          might be 1.0658x faster
   array-prototype-every                            118.2007+-3.7282          118.0327+-6.1622        
   array-prototype-forEach                          115.1426+-2.7295          114.4564+-3.7227        
   array-prototype-map                              129.4517+-5.0508     ?    130.3257+-3.9208        ?
   array-prototype-some                             117.3803+-3.3255          116.2163+-4.0940          might be 1.0100x faster
   array-splice-contiguous                           56.9510+-1.1477     ?     58.2750+-2.1221        ? might be 1.0232x slower
   array-with-double-add                              5.5500+-0.0843            5.5248+-0.2637        
   array-with-double-increment                        4.1963+-0.1133     ?      4.1990+-0.0825        ?
   array-with-double-mul-add                          7.7622+-0.1199     ?      8.1044+-0.3582        ? might be 1.0441x slower
   array-with-double-sum                              4.3704+-0.2163     ?      4.4834+-0.2341        ? might be 1.0259x slower
   array-with-int32-add-sub                           9.4347+-0.4075     ?      9.6816+-0.1991        ? might be 1.0262x slower
   array-with-int32-or-double-sum                     4.4847+-0.0707            4.4403+-0.1444          might be 1.0100x faster
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     46.4658+-0.8514     ?     47.0073+-2.4632        ? might be 1.0117x slower
   ArrayBuffer-DataView-alloc-long-lived             18.6667+-0.6113           18.5284+-0.2182        
   ArrayBuffer-Int32Array-byteOffset                  5.2388+-0.1988            5.2250+-0.2455        
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     48.7741+-1.2937     ?     50.0892+-1.7502        ? might be 1.0270x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     30.5464+-0.6689     ?     30.8710+-0.5036        ? might be 1.0106x slower
   ArrayBuffer-Int8Array-alloc-long-lived            17.7871+-0.2103     ?     18.6082+-2.9255        ? might be 1.0462x slower
   ArrayBuffer-Int8Array-alloc                       14.8199+-0.2183     ?     14.8277+-0.6256        ?
   asmjs_bool_bug                                     8.5380+-0.1052            8.4977+-0.1466        
   assign-custom-setter-polymorphic                   4.2233+-0.0328     ?      4.4238+-0.2830        ? might be 1.0475x slower
   assign-custom-setter                               5.7774+-0.2053            5.6968+-0.1148          might be 1.0142x faster
   basic-set                                         11.7647+-0.7079           11.3712+-0.7750          might be 1.0346x faster
   big-int-mul                                        6.0403+-0.6120            5.8502+-0.0879          might be 1.0325x faster
   boolean-test                                       4.2919+-0.0918            4.1660+-0.1545          might be 1.0302x faster
   branch-fold                                        4.7460+-0.0799     ?      4.7581+-0.1146        ?
   branch-on-string-as-boolean                       23.2715+-1.0278           22.9630+-0.5241          might be 1.0134x faster
   by-val-generic                                    10.5383+-0.1576           10.4403+-0.1065        
   call-spread-apply                                 38.2026+-1.6316     ?     38.3565+-1.9117        ?
   call-spread-call                                  31.6150+-0.6764     ?     32.2588+-2.8897        ? might be 1.0204x slower
   captured-assignments                               0.6319+-0.1442            0.5405+-0.0113          might be 1.1692x faster
   cast-int-to-double                                 8.1635+-0.2214            8.1583+-0.4559        
   cell-argument                                      9.8698+-0.4333            9.6938+-0.4508          might be 1.0182x faster
   cfg-simplify                                       3.7433+-0.1199            3.7227+-0.1917        
   chain-getter-access                               11.2462+-0.3212     ?     11.4217+-0.3413        ? might be 1.0156x slower
   cmpeq-obj-to-obj-other                            12.1963+-0.2526     ?     12.2415+-0.6957        ?
   constant-test                                      7.7679+-0.4227            7.7180+-0.1767        
   create-lots-of-functions                          16.5130+-0.2008     ?     16.8088+-0.6934        ? might be 1.0179x slower
   DataView-custom-properties                        54.4031+-5.0640           53.6191+-2.0809          might be 1.0146x faster
   deconstructing-parameters-overridden-by-function   
                                                      0.6790+-0.1700     ?      0.7104+-0.1404        ? might be 1.0463x slower
   delay-tear-off-arguments-strictmode               18.7840+-0.4651           18.6525+-0.5725        
   deltablue-varargs                                267.0200+-5.7302          266.0157+-1.7043        
   destructuring-arguments                           23.0815+-0.4349           22.8698+-0.3055        
   destructuring-swap                                 7.7483+-0.0567     ?      7.8548+-0.1780        ? might be 1.0137x slower
   direct-arguments-getbyval                          1.6967+-0.2582     ?      1.7043+-0.2095        ?
   div-boolean-double                                 5.5460+-0.1491            5.4739+-0.3141          might be 1.0132x faster
   div-boolean                                        9.7258+-0.1758     ?      9.8068+-0.0968        ?
   double-get-by-val-out-of-bounds                    5.9543+-0.2852            5.9047+-0.1158        
   double-pollution-getbyval                          9.6517+-0.2926            9.6313+-0.2419        
   double-pollution-putbyoffset                       5.7720+-0.2998            5.6910+-0.3937          might be 1.0142x faster
   double-to-int32-typed-array-no-inline              2.9440+-0.1380            2.8777+-0.0815          might be 1.0230x faster
   double-to-int32-typed-array                        2.5878+-0.2392            2.5701+-0.2110        
   double-to-uint32-typed-array-no-inline             2.9845+-0.2631     ?      3.0284+-0.2026        ? might be 1.0147x slower
   double-to-uint32-typed-array                       2.6552+-0.1209     ?      2.6928+-0.1681        ? might be 1.0142x slower
   elidable-new-object-dag                           55.6988+-1.5605           55.5293+-1.1679        
   elidable-new-object-roflcopter                    57.3250+-1.1781     ?     57.4745+-1.4374        ?
   elidable-new-object-then-call                     52.1206+-0.8916     ?     52.9622+-3.3101        ? might be 1.0161x slower
   elidable-new-object-tree                          63.1033+-1.2722     ?     63.8928+-1.7384        ? might be 1.0125x slower
   empty-string-plus-int                              7.4193+-0.3821     ?      7.4338+-0.3608        ?
   emscripten-cube2hash                              44.5948+-0.6836     ?     45.1779+-1.8574        ? might be 1.0131x slower
   exit-length-on-plain-object                       18.4332+-0.2368     ?     19.5961+-1.0439        ? might be 1.0631x slower
   external-arguments-getbyval                        1.6359+-0.1753     ?      1.7571+-0.1755        ? might be 1.0741x slower
   external-arguments-putbyval                        3.2233+-0.1448     ?      3.3232+-0.1647        ? might be 1.0310x slower
   fixed-typed-array-storage-var-index                1.5100+-0.1541     ?      1.5546+-0.0161        ? might be 1.0295x slower
   fixed-typed-array-storage                          1.2036+-0.1331            1.1685+-0.1303          might be 1.0300x faster
   Float32Array-matrix-mult                           6.5128+-0.5359            5.9775+-0.1383          might be 1.0895x faster
   Float32Array-to-Float64Array-set                  71.4758+-2.9792     ?     72.0480+-0.3647        ?
   Float64Array-alloc-long-lived                     90.7786+-0.4999     ?     91.2631+-0.1590        ?
   Float64Array-to-Int16Array-set                    97.9057+-2.8249     ^     92.1890+-1.0313        ^ definitely 1.0620x faster
   fold-double-to-int                                19.2197+-0.1867     ?     19.2540+-0.7911        ?
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     11.0966+-0.4366     ?     11.1602+-0.9253        ?
   fold-get-by-id-to-multi-get-by-offset              9.0608+-0.3661            8.9490+-0.3568          might be 1.0125x faster
   fold-multi-get-by-offset-to-get-by-offset   
                                                      7.8362+-0.9115     ?      8.0537+-1.0908        ? might be 1.0278x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      8.4352+-0.8557     ?      8.5040+-0.1276        ?
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      7.7589+-0.7450            7.7160+-0.6720        
   fold-multi-put-by-offset-to-put-by-offset   
                                                      6.6730+-0.2324            6.2821+-0.8816          might be 1.0622x faster
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     13.2521+-1.1814           13.0448+-0.5962          might be 1.0159x faster
   fold-put-by-id-to-multi-put-by-offset              8.9363+-0.7300     ?      8.9927+-0.7870        ?
   fold-put-structure                                 6.3957+-0.6712            6.2534+-0.6633          might be 1.0228x faster
   for-of-iterate-array-entries                       6.1273+-0.1584            6.1070+-0.3324        
   for-of-iterate-array-keys                          4.8741+-0.1127     ?      5.0315+-0.2891        ? might be 1.0323x slower
   for-of-iterate-array-values                        4.6542+-0.1177     ?      5.0082+-0.4648        ? might be 1.0760x slower
   fround                                            23.3628+-0.2423           22.5988+-0.6350          might be 1.0338x faster
   ftl-library-inlining-dataview                     89.9639+-2.3532           89.7096+-1.4120        
   ftl-library-inlining                              83.9793+-0.3680     ?     84.2917+-0.4779        ?
   function-dot-apply                                 2.7266+-0.2017            2.7253+-0.1046        
   function-test                                      4.3962+-0.0109            4.3405+-0.1609          might be 1.0128x faster
   function-with-eval                               134.9413+-0.4916     ?    135.8190+-2.0134        ?
   gcse-poly-get-less-obvious                        24.7675+-0.2478     ?     24.9218+-0.5324        ?
   gcse-poly-get                                     24.8823+-0.5430           24.5759+-0.1013          might be 1.0125x faster
   gcse                                               6.5655+-0.0387            6.5611+-0.1232        
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      3.2735+-0.0807            3.1830+-0.0773          might be 1.0284x faster
   get-by-id-bimorphic-check-structure-elimination   
                                                      8.3607+-0.1596     ?      8.6699+-0.9563        ? might be 1.0370x slower
   get-by-id-chain-from-try-block                    11.3790+-0.1820           11.3723+-0.2485        
   get-by-id-check-structure-elimination              7.5605+-0.1263            7.5060+-0.2236        
   get-by-id-proto-or-self                           22.2900+-0.2937     ?     25.0308+-4.0392        ? might be 1.1230x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      4.1202+-0.4394            3.9293+-0.1963          might be 1.0486x faster
   get-by-id-self-or-proto                           23.6880+-3.4584     ?     25.3682+-3.8392        ? might be 1.0709x slower
   get-by-val-out-of-bounds                           5.9632+-0.3026            5.8264+-0.2601          might be 1.0235x faster
   get_callee_monomorphic                             3.7885+-0.3248     ?      3.8502+-0.1745        ? might be 1.0163x slower
   get_callee_polymorphic                             4.6920+-0.2669     ?      4.7850+-0.2264        ? might be 1.0198x slower
   getter-no-activation                               5.8248+-0.1261            5.7660+-0.1701          might be 1.0102x faster
   getter-richards                                  133.0975+-7.6090     ?    133.5500+-6.1166        ?
   getter                                             7.2609+-0.1388            7.1865+-0.0947          might be 1.0104x faster
   global-var-const-infer-fire-from-opt               1.2928+-0.0951            1.2153+-0.1549          might be 1.0638x faster
   global-var-const-infer                             1.1158+-0.2873     ?      1.2031+-0.1981        ? might be 1.0782x slower
   HashMap-put-get-iterate-keys                      33.2063+-0.2256     ?     33.4995+-0.9418        ?
   HashMap-put-get-iterate                           33.3687+-0.8784           32.7208+-0.5542          might be 1.0198x faster
   HashMap-string-put-get-iterate                    35.6882+-0.6607           35.0953+-1.8071          might be 1.0169x faster
   hoist-make-rope                                   13.8912+-1.2967           13.7521+-1.0620          might be 1.0101x faster
   hoist-poly-check-structure-effectful-loop   
                                                      7.0490+-0.1389            6.9832+-0.1889        
   hoist-poly-check-structure                         4.7887+-0.1190     ?      4.8152+-0.1496        ?
   imul-double-only                                  10.2176+-0.4419            9.8351+-1.3229          might be 1.0389x faster
   imul-int-only                                     11.9084+-0.7895     ?     12.4055+-0.8495        ? might be 1.0417x slower
   imul-mixed                                        10.2748+-1.1720            9.5801+-0.2461          might be 1.0725x faster
   in-four-cases                                     25.5345+-0.2581     !     26.2859+-0.4530        ! definitely 1.0294x slower
   in-one-case-false                                 12.9228+-0.1448     !     13.5966+-0.1973        ! definitely 1.0521x slower
   in-one-case-true                                  12.8130+-0.2738     !     13.6617+-0.2394        ! definitely 1.0662x slower
   in-two-cases                                      13.1282+-0.0212     !     13.9134+-0.1818        ! definitely 1.0598x slower
   indexed-properties-in-objects                      3.8068+-0.1035     ?      3.8540+-0.2093        ? might be 1.0124x slower
   infer-closure-const-then-mov-no-inline             4.7050+-0.0896            4.6821+-0.0700        
   infer-closure-const-then-mov                      25.1077+-1.0551           24.7088+-0.5810          might be 1.0161x faster
   infer-closure-const-then-put-to-scope-no-inline   
                                                     14.4610+-0.1821     ?     14.6712+-0.5008        ? might be 1.0145x slower
   infer-closure-const-then-put-to-scope             27.7517+-0.2632     ?     27.9768+-0.5190        ?
   infer-closure-const-then-reenter-no-inline   
                                                     61.2000+-0.2745           60.9952+-0.5074        
   infer-closure-const-then-reenter                  29.2050+-0.3979     ?     29.6309+-0.5954        ? might be 1.0146x slower
   infer-constant-global-property                     4.6965+-0.1833     ?      4.7518+-0.1707        ? might be 1.0118x slower
   infer-constant-property                            3.3015+-0.1579            3.2905+-0.0849        
   infer-one-time-closure-ten-vars                   14.7155+-0.1768           14.5817+-0.2534        
   infer-one-time-closure-two-vars                   14.0554+-0.6466           13.9701+-0.3921        
   infer-one-time-closure                            14.1082+-0.4383           14.0326+-0.7710        
   infer-one-time-deep-closure                       24.5408+-0.5201           24.5278+-0.1693        
   inline-arguments-access                            6.0930+-0.3684     ?      6.1346+-0.1363        ?
   inline-arguments-aliased-access                    6.1035+-0.1645            5.9907+-0.2252          might be 1.0188x faster
   inline-arguments-local-escape                      6.0782+-0.1097     ?      6.1248+-0.0879        ?
   inline-get-scoped-var                              5.6235+-0.0429     ?      5.6861+-0.1083        ? might be 1.0111x slower
   inlined-put-by-id-transition                      15.5560+-1.2614     ?     15.6841+-0.9635        ?
   int-or-other-abs-then-get-by-val                   6.6573+-0.1095            6.6501+-0.1250        
   int-or-other-abs-zero-then-get-by-val             26.8134+-0.2655     !     28.2209+-0.1543        ! definitely 1.0525x slower
   int-or-other-add-then-get-by-val                   5.5606+-0.0868            5.5461+-0.0774        
   int-or-other-add                                   7.9968+-0.2689            7.8940+-0.1235          might be 1.0130x faster
   int-or-other-div-then-get-by-val                   5.1768+-0.0970     ?      5.1853+-0.1171        ?
   int-or-other-max-then-get-by-val                   5.1223+-0.2081            5.0160+-0.2154          might be 1.0212x faster
   int-or-other-min-then-get-by-val                   4.9898+-0.1493     ?      5.0132+-0.1788        ?
   int-or-other-mod-then-get-by-val                   5.0004+-0.1130     ?      5.0016+-0.0498        ?
   int-or-other-mul-then-get-by-val                   4.9682+-0.1808            4.8970+-0.1411          might be 1.0145x faster
   int-or-other-neg-then-get-by-val                   6.1400+-0.0995     ?      6.1612+-0.1098        ?
   int-or-other-neg-zero-then-get-by-val             28.3271+-0.4434           28.2800+-0.1824        
   int-or-other-sub-then-get-by-val                   6.0319+-0.2696            6.0120+-0.1034        
   int-or-other-sub                                   4.3267+-0.1167            4.2486+-0.2913          might be 1.0184x faster
   int-overflow-local                                 5.6375+-0.1341     ?      5.7073+-0.1554        ? might be 1.0124x slower
   Int16Array-alloc-long-lived                       63.4147+-1.1081           62.7795+-0.5083          might be 1.0101x faster
   Int16Array-bubble-sort-with-byteLength            36.8495+-0.1125     ?     37.4127+-0.6394        ? might be 1.0153x slower
   Int16Array-bubble-sort                            37.0640+-0.4500           36.3057+-1.3948          might be 1.0209x faster
   Int16Array-load-int-mul                            2.0525+-0.0623            1.9800+-0.1198          might be 1.0366x faster
   Int16Array-to-Int32Array-set                      74.3745+-3.5218     ^     69.4207+-1.3354        ^ definitely 1.0714x faster
   Int32Array-alloc-large                            32.5974+-0.6722     ?     32.7523+-0.8570        ?
   Int32Array-alloc-long-lived                       70.4001+-1.0120           70.0493+-0.5996        
   Int32Array-alloc                                   4.6061+-0.3099            4.4865+-0.0931          might be 1.0267x faster
   Int32Array-Int8Array-view-alloc                    9.5339+-0.3081     ?     10.0070+-0.9643        ? might be 1.0496x slower
   int52-spill                                        7.9623+-0.2949     ?      8.1422+-0.7959        ? might be 1.0226x slower
   Int8Array-alloc-long-lived                        56.0406+-0.5807     ?     56.3823+-0.8220        ?
   Int8Array-load-with-byteLength                     4.8468+-0.3971            4.7596+-0.2377          might be 1.0183x faster
   Int8Array-load                                     4.6346+-0.1968     ?      4.8000+-0.1150        ? might be 1.0357x slower
   integer-divide                                    13.2360+-0.1768     ?     13.3300+-0.3936        ?
   integer-modulo                                     2.8152+-0.2308            2.7271+-0.2039          might be 1.0323x faster
   is-boolean-fold-tricky                             5.7575+-0.1227     ?      5.7686+-0.2149        ?
   is-boolean-fold                                    3.9764+-0.1518     ?      3.9866+-0.0952        ?
   is-function-fold-tricky-internal-function   
                                                     15.6998+-2.0659           15.1478+-1.5582          might be 1.0364x faster
   is-function-fold-tricky                            5.9380+-0.0320     ?      5.9655+-0.1397        ?
   is-function-fold                                   4.0978+-0.1713            3.9910+-0.0416          might be 1.0268x faster
   is-number-fold-tricky                              5.7118+-0.1573     ?      5.7922+-0.1266        ? might be 1.0141x slower
   is-number-fold                                     4.0186+-0.0953            3.9717+-0.0778          might be 1.0118x faster
   is-object-or-null-fold-functions                   4.0694+-0.0419     ?      4.0698+-0.0623        ?
   is-object-or-null-fold-less-tricky                 5.8361+-0.1197            5.7689+-0.2331          might be 1.0117x faster
   is-object-or-null-fold-tricky                      7.5372+-0.2035     ?      7.7497+-0.2131        ? might be 1.0282x slower
   is-object-or-null-fold                             4.0483+-0.0507     ?      4.1313+-0.0834        ? might be 1.0205x slower
   is-object-or-null-trickier-function                5.9559+-0.1492     ?      5.9565+-0.1156        ?
   is-object-or-null-trickier-internal-function   
                                                     14.7305+-0.1576     ?     15.4662+-1.2758        ? might be 1.0499x slower
   is-object-or-null-tricky-function                  5.8967+-0.1606     ?      5.9236+-0.1672        ?
   is-object-or-null-tricky-internal-function   
                                                     11.5053+-1.0166     ?     11.5720+-1.0575        ?
   is-string-fold-tricky                              5.6730+-0.0965     ?      5.7296+-0.1585        ?
   is-string-fold                                     3.9423+-0.2592     ?      3.9427+-0.1257        ?
   is-undefined-fold-tricky                           4.5008+-0.1506     ?      4.5837+-0.4064        ? might be 1.0184x slower
   is-undefined-fold                                  3.9810+-0.0829            3.9529+-0.0937        
   large-int-captured                                 6.7298+-0.1422     ?      6.8820+-0.2491        ? might be 1.0226x slower
   large-int-neg                                     20.5619+-0.2371     ?     20.6318+-0.5967        ?
   large-int                                         18.5438+-0.2682     ?     18.8806+-0.8673        ? might be 1.0182x slower
   logical-not                                        6.1951+-0.4395     ?      6.3339+-0.4968        ? might be 1.0224x slower
   lots-of-fields                                    19.4164+-0.2646     ?     19.4471+-0.2740        ?
   make-indexed-storage                               4.3958+-0.5372     ?      4.4141+-0.3227        ?
   make-rope-cse                                      6.5758+-0.0158     ?      6.7048+-0.2198        ? might be 1.0196x slower
   marsaglia-larger-ints                             55.0110+-0.6776           54.9468+-1.3151        
   marsaglia-osr-entry                               28.0146+-0.7272     ?     28.1848+-0.8076        ?
   max-boolean                                        3.3473+-0.0576            3.3425+-0.1593        
   method-on-number                                  23.4218+-1.2537     ?     23.5944+-0.5422        ?
   min-boolean                                        3.1982+-0.1130     ?      3.4373+-0.3274        ? might be 1.0747x slower
   minus-boolean-double                               4.1424+-0.1714     ?      4.1877+-0.0877        ? might be 1.0109x slower
   minus-boolean                                      3.3113+-0.0596     ?      3.3616+-0.1080        ? might be 1.0152x slower
   misc-strict-eq                                    58.1064+-1.6370           56.8527+-0.4478          might be 1.0221x faster
   mod-boolean-double                                11.7592+-0.2157           11.6608+-0.3237        
   mod-boolean                                        8.6920+-0.1959            8.6310+-0.1772        
   mul-boolean-double                                 4.9365+-0.0513            4.8385+-0.1001          might be 1.0202x faster
   mul-boolean                                        3.5311+-0.0250     ?      3.5454+-0.0440        ?
   neg-boolean                                        4.3907+-0.1500     ?      4.4230+-0.0672        ?
   negative-zero-divide                               0.5255+-0.0785            0.5086+-0.1230          might be 1.0331x faster
   negative-zero-modulo                               0.5074+-0.1231     ?      0.5224+-0.0995        ? might be 1.0295x slower
   negative-zero-negate                               0.4507+-0.0806     ?      0.4703+-0.0948        ? might be 1.0435x slower
   nested-function-parsing                           58.5352+-0.5686           58.1280+-0.4787        
   new-array-buffer-dead                            139.5070+-0.9305     ?    139.6418+-2.8406        ?
   new-array-buffer-push                              9.6666+-0.5001            9.6044+-0.3732        
   new-array-dead                                    23.4177+-2.5904     ?     23.8912+-0.5810        ? might be 1.0202x slower
   new-array-push                                     5.5901+-0.2263            5.3682+-0.5245          might be 1.0413x faster
   no-inline-constructor                            162.6556+-1.5355     ?    162.8774+-0.9498        ?
   number-test                                        4.2115+-0.1431     ?      4.2253+-0.0493        ?
   object-closure-call                                7.3397+-0.1310     ?      7.4064+-0.3349        ?
   object-test                                        4.0927+-0.0871     ?      4.1530+-0.1922        ? might be 1.0147x slower
   obvious-sink-pathology-taken                     174.8243+-1.2241          174.0619+-2.5873        
   obvious-sink-pathology                           158.1450+-3.6838          157.6970+-1.3447        
   obviously-elidable-new-object                     46.2120+-3.7554     ?     48.3525+-5.4072        ? might be 1.0463x slower
   plus-boolean-arith                                 3.2982+-0.0653            3.2845+-0.0638        
   plus-boolean-double                                4.2627+-0.1664            4.2610+-0.1156        
   plus-boolean                                       3.2443+-0.0501     ?      3.2585+-0.1435        ?
   poly-chain-access-different-prototypes-simple   
                                                      3.9297+-0.1276            3.8149+-0.1958          might be 1.0301x faster
   poly-chain-access-different-prototypes             3.1880+-0.2072            3.1694+-0.1231        
   poly-chain-access-simpler                          3.9290+-0.1387            3.8187+-0.1223          might be 1.0289x faster
   poly-chain-access                                  3.0140+-0.1677     ?      3.1200+-0.0470        ? might be 1.0352x slower
   poly-stricteq                                     70.7733+-0.8841           69.7659+-0.1351          might be 1.0144x faster
   polymorphic-array-call                             1.6818+-0.2823     ?      1.8308+-0.2167        ? might be 1.0886x slower
   polymorphic-get-by-id                              4.1216+-0.1801            4.0978+-0.1457        
   polymorphic-put-by-id                             41.1440+-4.5537           40.5253+-6.2879          might be 1.0153x faster
   polymorphic-structure                             17.6848+-0.3520     ?     17.7747+-0.2784        ?
   polyvariant-monomorphic-get-by-id                 11.4928+-0.4427     ?     11.5502+-0.2308        ?
   proto-getter-access                               11.3408+-0.2451           11.3258+-0.5227        
   put-by-id-replace-and-transition                  12.5128+-0.6623     ?     12.5195+-0.4694        ?
   put-by-id-slightly-polymorphic                     3.4612+-0.0929     ?      3.5577+-0.1929        ? might be 1.0279x slower
   put-by-id                                         18.7379+-0.7532     ?     18.8900+-0.9568        ?
   put-by-val-direct                                  0.4618+-0.0290     ?      0.5286+-0.1181        ? might be 1.1446x slower
   put-by-val-large-index-blank-indexing-type   
                                                      8.6318+-0.2994            8.4048+-0.2384          might be 1.0270x faster
   put-by-val-machine-int                             3.7980+-0.1217            3.5347+-0.2219          might be 1.0745x faster
   rare-osr-exit-on-local                            18.4399+-0.6374           18.3370+-0.1489        
   register-pressure-from-osr                        25.8647+-0.5141           25.7877+-0.5171        
   setter                                             6.5560+-0.1834            6.5023+-0.0163        
   simple-activation-demo                            30.4695+-0.1573     !     31.6783+-0.0762        ! definitely 1.0397x slower
   simple-getter-access                              15.3398+-1.1417           15.0986+-0.1525          might be 1.0160x faster
   simple-poly-call-nested                           10.0863+-0.1334           10.0298+-0.0603        
   simple-poly-call                                   1.6743+-0.0671            1.6603+-0.1446        
   sin-boolean                                       24.2331+-3.9202           23.4335+-3.6171          might be 1.0341x faster
   singleton-scope                                   80.6254+-1.0473           79.7516+-0.2568          might be 1.0110x faster
   sink-function                                     14.5565+-1.9012     ?     16.0663+-0.1805        ? might be 1.1037x slower
   sinkable-new-object-dag                           95.4863+-0.7490           94.7890+-1.2014        
   sinkable-new-object-taken                         69.9092+-1.3012     ?     71.1263+-3.5533        ? might be 1.0174x slower
   sinkable-new-object                               52.8945+-2.1031     ?     53.2414+-0.9370        ?
   slow-array-profile-convergence                     4.3166+-0.1544            3.9872+-0.2096          might be 1.0826x faster
   slow-convergence                                   3.7594+-0.2832     ?      3.7916+-0.3091        ?
   sorting-benchmark                                 26.6241+-0.7246           26.5754+-1.3269        
   sparse-conditional                                 1.5567+-0.1452            1.5505+-0.1594        
   splice-to-remove                                  21.0100+-0.6248           20.9741+-0.5146        
   string-char-code-at                               19.4006+-0.2942           19.3666+-0.2850        
   string-concat-object                               3.2827+-0.1799     ?      3.3642+-0.4492        ? might be 1.0248x slower
   string-concat-pair-object                          3.2302+-0.3743     ?      3.2308+-0.3185        ?
   string-concat-pair-simple                         16.9865+-0.6083     ?     17.1617+-0.5504        ? might be 1.0103x slower
   string-concat-simple                              17.3638+-0.1267     ?     17.4813+-0.7031        ?
   string-cons-repeat                                11.2527+-0.0567           11.1714+-0.1243        
   string-cons-tower                                 10.4318+-0.2448           10.3754+-0.2403        
   string-equality                                   23.2003+-0.3611           23.0903+-0.3177        
   string-get-by-val-big-char                         9.9117+-0.3041     ?      9.9705+-0.2427        ?
   string-get-by-val-out-of-bounds-insane             5.0617+-0.1368     ?      5.0878+-0.3194        ?
   string-get-by-val-out-of-bounds                    6.8635+-0.1343     ?      6.8936+-0.2956        ?
   string-get-by-val                                  4.7663+-0.0737            4.7451+-0.1451        
   string-hash                                        2.7797+-0.1378            2.7551+-0.1706        
   string-long-ident-equality                        18.7140+-0.1365           18.4695+-0.1693          might be 1.0132x faster
   string-out-of-bounds                              17.4018+-0.3397           17.2255+-0.2664          might be 1.0102x faster
   string-repeat-arith                               40.3503+-1.1610           39.9767+-1.0706        
   string-sub                                        78.2010+-1.5364     ?     78.5092+-2.1882        ?
   string-test                                        4.2333+-0.0837     ?      4.2359+-0.1632        ?
   string-var-equality                               44.4532+-0.2662     ?     44.5902+-0.7879        ?
   structure-hoist-over-transitions                   3.4788+-0.2393     ?      3.5037+-0.2511        ?
   substring-concat-weird                            54.5711+-0.2233     ?     55.0406+-0.7104        ?
   substring-concat                                  58.2054+-0.4469           58.1079+-0.5902        
   substring                                         63.6298+-0.9288           63.5603+-0.8438        
   switch-char-constant                               3.3008+-0.1359     ?      3.3098+-0.0680        ?
   switch-char                                        7.6281+-0.0744     !      8.3591+-0.1456        ! definitely 1.0958x slower
   switch-constant                                   11.5192+-0.6054     ?     11.6098+-1.0892        ?
   switch-string-basic-big-var                       27.4593+-0.3257     ?     27.6035+-0.5384        ?
   switch-string-basic-big                           21.7273+-2.5610           21.1240+-1.8475          might be 1.0286x faster
   switch-string-basic-var                           27.5532+-1.0303     ?     27.8824+-0.5815        ? might be 1.0120x slower
   switch-string-basic                               17.4401+-2.6263           17.0593+-2.1942          might be 1.0223x faster
   switch-string-big-length-tower-var                25.6187+-0.7664     ?     26.0302+-0.2806        ? might be 1.0161x slower
   switch-string-length-tower-var                    19.8433+-0.8386     ?     19.8738+-0.3357        ?
   switch-string-length-tower                        16.7722+-1.0658           16.3123+-0.5275          might be 1.0282x faster
   switch-string-short                               14.1661+-0.3177           13.9133+-0.0853          might be 1.0182x faster
   switch                                            16.8407+-2.7005           16.0522+-2.5560          might be 1.0491x faster
   tear-off-arguments-simple                          4.4750+-0.3200     ?      4.5831+-0.1593        ? might be 1.0242x slower
   tear-off-arguments                                 6.1550+-0.5346     ?      6.4944+-0.8541        ? might be 1.0552x slower
   temporal-structure                                14.9678+-0.1603     ?     15.2777+-0.3230        ? might be 1.0207x slower
   to-int32-boolean                                  20.3646+-0.3574     ?     20.5148+-0.3857        ?
   try-catch-get-by-val-cloned-arguments             19.9688+-1.4664           19.4621+-0.2802          might be 1.0260x faster
   try-catch-get-by-val-direct-arguments              8.6019+-0.3546     ?      8.6063+-0.0982        ?
   try-catch-get-by-val-scoped-arguments             10.2950+-0.4135           10.2313+-0.3078        
   typed-array-get-set-by-val-profiling              42.3372+-1.2574     ?     43.2767+-1.5860        ? might be 1.0222x slower
   undefined-property-access                        426.5948+-5.0233          426.5269+-4.0609        
   undefined-test                                     4.5036+-0.0177     ?      4.5191+-0.1668        ?
   unprofiled-licm                                   27.1672+-0.8266     ?     27.2308+-0.8465        ?
   varargs-call                                      17.7362+-0.5779     ?     17.8770+-0.0618        ?
   varargs-construct-inline                          28.7390+-0.1056     !     30.2424+-0.3826        ! definitely 1.0523x slower
   varargs-construct                                 42.9865+-0.4376     ?     43.3063+-0.8870        ?
   varargs-inline                                    10.5728+-0.7141           10.4869+-0.4649        
   varargs-strict-mode                               12.6675+-0.4226     ?     12.7802+-0.2999        ?
   varargs                                           12.6412+-0.2668     ?     12.8602+-0.5870        ? might be 1.0173x slower
   weird-inlining-const-prop                          2.9622+-0.1815            2.9083+-0.1863          might be 1.0185x faster

   &lt;geometric&gt;                                       10.8691+-0.0247     ?     10.8939+-0.0274        ? might be 1.0023x slower

                                                          Conf#1                    Conf#2                                      
AsmBench:
   bigfib.cpp                                       667.1432+-2.5466     ?    667.7529+-2.7788        ?
   cray.c                                           625.7172+-10.2970         624.9478+-4.3289        
   dry.c                                            654.0175+-0.7682     ?    654.3418+-2.3595        ?
   FloatMM.c                                        954.7396+-1.2701     ?    954.8128+-1.3096        ?
   gcc-loops.cpp                                   5863.3347+-11.1036    ?   5876.0807+-12.7564       ?
   n-body.c                                        1669.2862+-6.4034         1668.1880+-2.0227        
   Quicksort.c                                      573.0015+-3.8759          571.3672+-9.8300        
   stepanov_container.cpp                          4871.5667+-24.6510    ?   4893.3723+-25.7824       ?
   Towers.c                                         383.1216+-4.4846     ^    376.2726+-1.0400        ^ definitely 1.0182x faster

   &lt;geometric&gt;                                     1117.9722+-2.9526         1116.1537+-1.9342          might be 1.0016x faster

                                                          Conf#1                    Conf#2                                      
CompressionBench:
   huffman                                          498.4947+-3.3280     ?    498.8477+-1.3773        ?
   arithmetic-simple                                527.0795+-1.2821     ^    463.0287+-1.6591        ^ definitely 1.1383x faster
   arithmetic-precise                               402.0682+-2.0220     ^    388.2253+-3.2083        ^ definitely 1.0357x faster
   arithmetic-complex-precise                       400.0457+-3.2566     ?    407.3429+-18.8869       ? might be 1.0182x slower
   arithmetic-precise-order-0                       569.3853+-19.5877    ^    484.9987+-9.0494        ^ definitely 1.1740x faster
   arithmetic-precise-order-1                       421.1037+-2.6749          420.8342+-1.1474        
   arithmetic-precise-order-2                       470.9117+-4.1974          469.5288+-3.4937        
   arithmetic-simple-order-1                        528.0690+-0.5676          527.9777+-1.7186        
   arithmetic-simple-order-2                        583.0833+-3.3230     ?    583.5113+-2.4204        ?
   lz-string                                        415.9227+-2.5952          413.7944+-5.0246        

   &lt;geometric&gt;                                      477.0937+-2.6340     ^    462.3194+-2.4014        ^ definitely 1.0320x faster

                                                          Conf#1                    Conf#2                                      
Geomean of preferred means:
   &lt;scaled-result&gt;                                   83.8033+-0.2157     ^     82.6932+-0.1879        ^ definitely 1.0134x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095409</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-05-15 23:14:38 -0700</bug_when>
    <thetext>From experiments I did today, it looks like we still have plenty of margin to be more aggressive on ai-astar.

What do you think about triggering a FTLForOSREntry from the inner loop for the bytecode of the outer loop?

Something else that would be nice is remove the useless compilations we do in FTL. We compile two FTL functions that we never use because they are inlined, and a full function that we don&apos;t use because it is only possible to OSREnter in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095410</commentid>
    <comment_count>4</comment_count>
      <attachid>253269</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-05-15 23:16:42 -0700</bug_when>
    <thetext>Created attachment 253269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095658</commentid>
    <comment_count>5</comment_count>
      <attachid>253269</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-18 13:07:12 -0700</bug_when>
    <thetext>Comment on attachment 253269
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGTierUpCheckInjectionPhase.cpp:132
&gt; +    HashSet&lt;const NaturalLoop*&gt; findLoopsContainingLoopHintWithoutOSREnter(const NaturalLoops&amp; naturalLoops, FTL::CapabilityLevel level)

Can we do this without a HashSet?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095667</commentid>
    <comment_count>6</comment_count>
      <attachid>253269</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-05-18 13:45:37 -0700</bug_when>
    <thetext>Comment on attachment 253269
Patch

Clearing flags on attachment: 253269

Committed r184511: &lt;http://trac.webkit.org/changeset/184511&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095668</commentid>
    <comment_count>7</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-05-18 13:45:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095679</commentid>
    <comment_count>8</comment_count>
      <attachid>253269</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-05-18 14:23:09 -0700</bug_when>
    <thetext>Comment on attachment 253269
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        When we have a hot loop without OSR Entry inside a slower loop that support OSR Entry,
&gt; +        we get the inside loop driving the tierUpCounter and we have very little chance of
&gt; +        doing a CheckTierUp on the outer loop. In turn, this give almost no opportunity to tier
&gt; +        up in the outer loop and OSR Enter there.

Under what conditions does the FTL not support OSR entry? FTLCapabilities.cpp does not seem to use the CanCompile enum value.

What&apos;s the condition in ai-astart that prohibits OSR entry?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095822</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-05-18 22:07:17 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Under what conditions does the FTL not support OSR entry?
&gt; FTLCapabilities.cpp does not seem to use the CanCompile enum value.
&gt; 
&gt; What&apos;s the condition in ai-astart that prohibits OSR entry?

We do not OSR Entry in code that was inlined.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253268</attachid>
            <date>2015-05-15 23:06:18 -0700</date>
            <delta_ts>2015-05-15 23:16:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145092-20150515230453.patch</filename>
            <type>text/plain</type>
            <size>19481</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0MjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
M2NkMzliM2FkMGM3ZjZiYmU3NGZlZjA4ZjY1NmZmNmNmZDAyMTEwLi4xOWFmOGI0NWUwZjAyY2Y3
Y2NjZGM5ZmQ5Zjg2ZjFhOGZlYjBhZmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NCBAQAorMjAxNS0wNS0xNSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgW0pTQ10gV2hlbiBlbnRlcmluZyBhIENoZWNrVGllclVwIHdpdGhv
dXQgT1NSRW50cnksIGZvcmNlIHRoZSBDaGVja1RpZXJVcCBmb3IgdGhlIG91dGVyIGxvb3BzIHdp
dGggT1NSIEVudHJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDUwOTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXaGVuIHdlIGhhdmUgYSBob3QgbG9vcCB3aXRob3V0IE9TUiBFbnRyeSBpbnNpZGUgYSBz
bG93ZXIgbG9vcCB0aGF0IHN1cHBvcnQgT1NSIEVudHJ5LAorICAgICAgICB3ZSBnZXQgdGhlIGlu
c2lkZSBsb29wIGRyaXZpbmcgdGhlIHRpZXJVcENvdW50ZXIgYW5kIHdlIGhhdmUgdmVyeSBsaXR0
bGUgY2hhbmNlIG9mCisgICAgICAgIGRvaW5nIGEgQ2hlY2tUaWVyVXAgb24gdGhlIG91dGVyIGxv
b3AuIEluIHR1cm4sIHRoaXMgZ2l2ZSBhbG1vc3Qgbm8gb3Bwb3J0dW5pdHkgdG8gdGllcgorICAg
ICAgICB1cCBpbiB0aGUgb3V0ZXIgbG9vcCBhbmQgT1NSIEVudGVyIHRoZXJlLgorCisgICAgICAg
IFRoaXMgcGF0Y2hlcyBjaGFuZ2VzIENoZWNrVGllclVwIHRvIGZvcmNlIGl0cyBvdXRlciBsb29w
cyB0byBkbyBhIENoZWNrVGllclVwIHRoZW1zZWx2ZXMuCisKKyAgICAgICAgVG8gZG8gdGhhdCwg
Q2hlY2tUaWVyVXAgc2V0cyBhIGZsYWcgIm5lc3RlZFRyaWdnZXJJc1NldCIgdG8gZm9yY2UgdGhl
IG91dGVyIGxvb3AgdG8KKyAgICAgICAgZW50ZXIgdGhlaXIgQ2hlY2tUaWVyVXAgcmVnYXJkbGVz
cyBvZiB0aGUgdGllci11cCBjb3VudGVyLgorCisgICAgICAgICogYnl0ZWNvZGUvRXhlY3V0aW9u
Q291bnRlci5jcHA6CisgICAgICAgIChKU0M6OkV4ZWN1dGlvbkNvdW50ZXI8Y291bnRpbmdWYXJp
YW50Pjo6c2V0VGhyZXNob2xkKToKKyAgICAgICAgVGhpcyBpcyBzb21ld2hhdCB1bnJlbGF0ZWQu
IFRoaXMgYXNzZXJ0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IHJlbGllcyBvbgorICAgICAg
ICBtX2NvdW50ZXIsIHdoaWNoIGNoYW5nZXMgb24gYW4gb3RoZXIgdGhyZWFkLgorCisgICAgICAg
IEkgaGF2ZSBoaXQgaXQgYSBjb3VwbGUgb2YgdGltZXMgd2l0aCB0aGlzIHBhdGNoIGJlY2F1c2Ug
d2UgYXJlIGEgYml0IG1vcmUgYWdncmVzc2l2ZQorICAgICAgICBvbiBDaGVja1RpZXJVcC4gV2hh
dCBoYXBwZW5zIGlzOgorICAgICAgICAxKSBFeGVjdXRpb25Db3VudGVyPGNvdW50aW5nVmFyaWFu
dD46OmNoZWNrSWZUaHJlc2hvbGRDcm9zc2VkQW5kU2V0KCkgZmlyc3QgY2hlY2tzCisgICAgICAg
ICAgIGhhc0Nyb3NzZWRUaHJlc2hvbGQoKSwgYW5kIGl0IGlzIGZhbHNlLgorICAgICAgICAyKSBP
biB0aGUgbWFpbiB0aHJlYWQsIHRoZSBob3QgbG9vcHMga2VlcHMgcnVubmluZyBhbmQgdGhlIGNv
dW50ZXIgYmVjb21lcyBsYXJnZQorICAgICAgICAgICBlbm91Z2ggdG8gY3Jvc3MgdGhlIHRocmVz
aG9sZC4KKyAgICAgICAgMykgRXhlY3V0aW9uQ291bnRlcjxjb3VudGluZ1ZhcmlhbnQ+OjpjaGVj
a0lmVGhyZXNob2xkQ3Jvc3NlZEFuZFNldCgpIHJ1bnMgdGhlIG5leHQKKyAgICAgICAgICAgdGVz
dCwgc2V0VGhyZXNob2xkKCksIHdoZXJlIHRoZSBhc3NlcnRpb24gaXMuIFNpbmNlIHRoZSBjb3Vu
dGVyIGlzIG5vdyBsYXJnZSBlbm91Z2gsCisgICAgICAgICAgIHRoZSBhc3NlcnRpb24gZmFpbHMu
CisKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhl
Y3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChK
U0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKworICAgICAgICAq
IGRmZy9ERkdKSVRDb2RlLmg6CisgICAgICAgIEkgdXNlZCBhIHVpbnQ4X3QgaW5zdGVhZCBvZiBh
IGJvb2xlYW4gdG8gbWFrZSB0aGUgY29kZSBnZW5lcmF0aW9uIGNsZWFyZXIKKyAgICAgICAgaW4g
REZHU3BlY3VsYXRpdmVKSVQ2NC4KKworICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAg
ICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9u
cy5oOgorCisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRl
KToKKyAgICAgICAgVGhpcyBpcyBhIGJpdCBhbm5veWluZzogd2UgaGF2ZSB0aGUgTmF0dXJhbExv
b3BzIGFuYWx5c2lzIHRoYXQgcHJvdmlkZXMgdXMKKyAgICAgICAgZXZlcnl0aGluZyB3ZSBuZWVk
IHRvIGtub3cgYWJvdXQgbG9vcHMsIGJ1dCB0aGUgVGllclVwQ2hlY2sgYXJlIGNvbnNlcnZhdGl2
ZQorICAgICAgICBhbmQgc2V0IG9uIExvb3BIaW50LgorCisgICAgICAgIFRvIG1ha2UgdGhlIHR3
byB3b3JrIHRvZ2V0aGVyLCB3ZSBmaXJzdCBmaW5kIGFsbCB0aGUgQ2hlY2tUaWVyVXAgdGhhdCBj
YW5ub3QKKyAgICAgICAgT1NSIGVudGVyIGFuZCB3ZSBrZWVwIGEgbGlzdCBvZiBhbGwgdGhlIG5h
dHVyYWwgbG9vcHMgY29udGFpbmluZyB0aGVtLgorCisgICAgICAgIFRoZW4gd2UgZG8gYSBzZWNv
bmQgcGFzcyBvdmVyIHRoZSBMb29wSGludHMsIGdldCB0aGVpciBOYXR1cmFsTG9vcCwgYW5kIGNo
ZWNrCisgICAgICAgIGlmIGl0IGNvbnRhaW5zIGEgbG9vcCB0aGF0IGNhbm5vdCBPU1IgZW50ZXIu
CisKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6
OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHVGllclVwQ2hlY2tJbmplY3Rp
b25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VGllclVwQ2hlY2tJbmplY3Rpb25QaGFz
ZTo6cnVuKToKKyAgICAgICAgKEpTQzo6REZHOjpUaWVyVXBDaGVja0luamVjdGlvblBoYXNlOjpj
YW5PU1JFbnRlckF0TG9vcEhpbnQpOgorCiAyMDE1LTA1LTEyICBCZW5qYW1pbiBQb3VsYWluICA8
YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggdGhlIGl0ZXJhdGlvbiBjb3VudCBv
ZiBhcml0aC1tb2R1bG8tbm9kZS1iZWhhdmlvcnMuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmNwcAppbmRleCBiYWNiNDllMzM3MGFm
NWRhMjM4NzVkMjFjZDhmYWIyNTQ5NmU0NTZiLi5mZTRlNDMwZjEwYzliNjk5M2RiY2FlM2NmYWFi
ZTUyZWUyNGQzNTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXhlY3V0aW9uQ291bnRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4ZWN1dGlvbkNvdW50ZXIuY3BwCkBAIC0xMzYsOCArMTM2LDYgQEAgYm9vbCBFeGVjdXRpb25D
b3VudGVyPGNvdW50aW5nVmFyaWFudD46OnNldFRocmVzaG9sZChDb2RlQmxvY2sqIGNvZGVCbG9j
aykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAgICAgCi0gICAgQVNTRVJUKCFt
X2FjdGl2ZVRocmVzaG9sZCB8fCAhaGFzQ3Jvc3NlZFRocmVzaG9sZChjb2RlQmxvY2spKTsKLSAg
ICAgICAgCiAgICAgLy8gQ29tcHV0ZSB0aGUgdHJ1ZSB0b3RhbCBjb3VudC4KICAgICBkb3VibGUg
dHJ1ZVRvdGFsQ291bnQgPSBjb3VudCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGUw
MGI0NjhjZDE4NjZhNGE1ZDkwMDY1MDgwNDc5ZTMxNDFkMjEyYjIuLjYyYTVkYjhmZTc2ZDU1YTcy
OTc1N2I0ZjUxYjI1OWY4MDNlNzcwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTIyNzAsNiAr
MjI3MCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4
ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgfQogCiAgICAgY2FzZSBDaGVj
a1RpZXJVcEFuZE9TUkVudGVyOgorICAgIGNhc2UgQ2hlY2tUaWVyVXBXaXRoTmVzdGVkVHJpZ2dl
ckFuZE9TUkVudGVyOgogICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgY2FzZSBab21iaWVIaW50Ogog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgK
aW5kZXggMzUwYjIwZGMyODZkYmY5NDFkZGEwNWQ3ODBiYWQxMGU4Zjk0NWQ0Yy4uMjc0M2M5Nzhk
MjFhMTZiY2NjMzMxODA2ZTM5N2ZiZTA1NGY1ZTFiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTI4Niw2ICsyODYsNyBAQCB2b2lkIGNsb2JiZXJpemUo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3Qg
V3JpdGVGdQogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJV
cEF0UmV0dXJuOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKKyAgICBjYXNlIENo
ZWNrVGllclVwV2l0aE5lc3RlZFRyaWdnZXJBbmRPU1JFbnRlcjoKICAgICBjYXNlIExvb3BIaW50
OgogICAgIGNhc2UgQnJlYWtwb2ludDoKICAgICBjYXNlIFByb2ZpbGVXaWxsQ2FsbDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAxMTE3ZTdhYjQzMmJhNjBlYTA3
M2ZhMGFmZTk4MTlhMjZmODExMzQ4Li4yNGZjOWUwYTRiODk4MDZkYThmNmFjOTAzOWFiOTUxY2Ew
ZTcwYzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0xNTks
NiArMTU5LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNh
c2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAg
IGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKKyAgICBjYXNlIENoZWNrVGllclVwV2l0aE5l
c3RlZFRyaWdnZXJBbmRPU1JFbnRlcjoKICAgICBjYXNlIExvb3BIaW50OgogICAgIGNhc2UgU3Rv
cmVCYXJyaWVyOgogICAgIGNhc2UgU3RvcmVCYXJyaWVyV2l0aE51bGxDaGVjazoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGEzZTBhMDJmN2MyYjEz
MzdiYTczYWVmNTdiYTE2YTI5ODBkYTE0OGYuLmY2ZWI0NTFjODU0Mzg2NzVkNmNkYzk3Nzg0ZmMx
ZjU2ODk5ZGM2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcApAQCAtMTA4OSw2ICsxMDg5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja1Rp
ZXJVcEluTG9vcDoKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAgICAgICBj
YXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CisgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBXaXRo
TmVzdGVkVHJpZ2dlckFuZE9TUkVudGVyOgogICAgICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50
OgogICAgICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKaW5kZXggNGQzMTM2ZmQ3NDkxNDNk
YmMzNTBhNmY0NmUwMWYwM2NhNjA5M2EwYi4uOTQ1ZjU1ZTRmM2JmOWZhODNmYzRmZTI5YWVhODU3
OWQyY2UxZDBjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKQEAgLTEy
MCw2ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgREZHOjpWYXJpYWJsZUV2ZW50U3RyZWFtIHZhcmlh
YmxlRXZlbnRTdHJlYW07CiAgICAgREZHOjpNaW5pZmllZEdyYXBoIG1pbmlmaWVkREZHOwogI2lm
IEVOQUJMRShGVExfSklUKQorICAgIHVpbnQ4X3QgbmVzdGVkVHJpZ2dlcklzU2V0IHsgMCB9Owog
ICAgIFVwcGVyVGllckV4ZWN1dGlvbkNvdW50ZXIgdGllclVwQ291bnRlcjsKICAgICBSZWZQdHI8
Q29kZUJsb2NrPiBvc3JFbnRyeUJsb2NrOwogICAgIHVuc2lnbmVkIG9zckVudHJ5UmV0cnk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggMmNlNzViY2VhYjU1ZDNj
ZTNmNjhlNTU0MDU4N2NiNmVhNWMyNjZlNi4uYmNkNzQxMGU1ZmJjOTMwZjExYTY3OWM3NWNkZDIy
MzkyNGU4NmQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAt
OTEsNiArOTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogVGll
ci11cCBjaGVja3MgZnJvbSB0aGUgREZHIHRvIHRoZSBGVEwuICovXAogICAgIG1hY3JvKENoZWNr
VGllclVwSW5Mb29wLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tUaWVyVXBB
bmRPU1JFbnRlciwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKENoZWNrVGllclVwV2l0
aE5lc3RlZFRyaWdnZXJBbmRPU1JFbnRlciwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3Jv
KENoZWNrVGllclVwQXRSZXR1cm4sIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCiAgICAgLyog
R2V0IHRoZSB2YWx1ZSBvZiBhIGxvY2FsIHZhcmlhYmxlLCB3aXRob3V0IGxpbmtpbmcgaW50byB0
aGUgVmFyaWFibGVBY2Nlc3NEYXRhICovXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAKaW5kZXggOGJiMmQ4ZDQwNDkwODc2NWQ1Y2VlMTk1YjJkYmVhOGU4ODQ5
YmEwZS4uYzk3ZTc3YjlkODMzYjE3ZjA3ZGUyM2M4MTcwMDMyNTFlMzA0MGNhZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0xMzUxLDcgKzEzNTEs
NyBAQCBzdGF0aWMgdm9pZCB0cmlnZ2VyRlRMUmVwbGFjZW1lbnRDb21waWxlKFZNKiB2bSwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEpJVENvZGUqCiAgICAgICAgIE9wZXJhbmRzPEpTVmFsdWU+KCks
IFRvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpjcmVhdGUoY29kZUJsb2NrKSk7CiB9
CiAKLXZvaWQgSklUX09QRVJBVElPTiB0cmlnZ2VyVGllclVwTm93KEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyB2b2lkIHRyaWdnZXJUaWVyVXBOb3coRXhlY1N0YXRlKiBleGVjLCBib29sIGluTG9v
cCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjKTsKQEAgLTEzNzAsMTAgKzEzNzAsMjIgQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIHRyaWdnZXJUaWVyVXBOb3coRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgKmNv
ZGVCbG9jaywgIjogRW50ZXJlZCB0cmlnZ2VyVGllclVwTm93IHdpdGggZXhlY3V0ZUNvdW50ZXIg
PSAiLAogICAgICAgICAgICAgaml0Q29kZS0+dGllclVwQ291bnRlciwgIlxuIik7CiAgICAgfQot
ICAgIAorICAgIGlmIChpbkxvb3ApCisgICAgICAgIGppdENvZGUtPm5lc3RlZFRyaWdnZXJJc1Nl
dCA9IDE7CisKICAgICB0cmlnZ2VyRlRMUmVwbGFjZW1lbnRDb21waWxlKHZtLCBjb2RlQmxvY2ss
IGppdENvZGUpOwogfQogCit2b2lkIEpJVF9PUEVSQVRJT04gdHJpZ2dlclRpZXJVcE5vdyhFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgdHJpZ2dlclRpZXJVcE5vdyhleGVjLCBmYWxzZSk7Cit9CisK
K3ZvaWQgSklUX09QRVJBVElPTiB0cmlnZ2VyVGllclVwTm93SW5Mb29wKEV4ZWNTdGF0ZSogZXhl
YykKK3sKKyAgICB0cmlnZ2VyVGllclVwTm93KGV4ZWMsIHRydWUpOworfQorCiBjaGFyKiBKSVRf
T1BFUkFUSU9OIHRyaWdnZXJPU1JFbnRyeU5vdygKICAgICBFeGVjU3RhdGUqIGV4ZWMsIGludDMy
X3QgYnl0ZWNvZGVJbmRleCwgaW50MzJfdCBzdHJlYW1JbmRleCkKIHsKQEAgLTEzODgsNiArMTQw
MCw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gdHJpZ2dlck9TUkVudHJ5Tm93KAogICAgIH0KICAg
ICAKICAgICBKSVRDb2RlKiBqaXRDb2RlID0gY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpOwor
ICAgIGppdENvZGUtPm5lc3RlZFRyaWdnZXJJc1NldCA9IDA7CiAgICAgCiAgICAgaWYgKE9wdGlv
bnM6OnZlcmJvc2VPU1IoKSkgewogICAgICAgICBkYXRhTG9nKApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCBiOTY2YzhkNjg3MDY0ZDkyYzQyNjQ3ZWY0ZmJk
YzUzOWE0OTRiYmYzLi5jMTAyYjg3YWQzYjc0ZWRkOTA5ZmQzZDAzMTM0MTA2MDYwNmYwZDEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTQ4LDYgKzE0
OCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiB0cmlnZ2VyUmVvcHRpbWl6YXRpb25Ob3coQ29kZUJs
b2NrKiwgT1NSRXhpdEJhc2UqKSBXVEZfSU5URVJOCiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKIHZv
aWQgSklUX09QRVJBVElPTiB0cmlnZ2VyVGllclVwTm93KEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5B
TDsKK3ZvaWQgSklUX09QRVJBVElPTiB0cmlnZ2VyVGllclVwTm93SW5Mb29wKEV4ZWNTdGF0ZSop
IFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gdHJpZ2dlck9TUkVudHJ5Tm93KEV4
ZWNTdGF0ZSosIGludDMyX3QgYnl0ZWNvZGVJbmRleCwgaW50MzJfdCBzdHJlYW1JbmRleCkgV1RG
X0lOVEVSTkFMOwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCmluZGV4IDBmZjVhMzYxMzM3NTg4YTFmOTFkOTFlNTk1OGFhM2M4MmE0YmM0YjIuLmFmMjQy
ODk1YmYwNjViMTM2ZWQ0MTA5YTc2MDM4MTFiZWExYTM5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCkBAIC01NDAsNiArNTQwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja1RpZXJV
cEluTG9vcDoKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAgICAgICBjYXNl
IENoZWNrVGllclVwQW5kT1NSRW50ZXI6CisgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBXaXRoTmVz
dGVkVHJpZ2dlckFuZE9TUkVudGVyOgogICAgICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50Ogog
ICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAgICAgICAgIGNhc2UgVmFsdWVUb0ludDMyOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCA0ZDhk
NzRiMDlhNTg5NjM5YzgyOWI2NDgzOGY3ZWUyYjBlZWJmMzg2Li5hYTI1NmQ5MjMyYjE4NzZjYjA0
MzRiOWE5MWQyMDY4MzA0YzI0YzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaApAQCAtMjQ2LDYgKzI0Niw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShB
YnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBj
YXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAg
ICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CisgICAgY2FzZSBDaGVja1RpZXJVcFdpdGhO
ZXN0ZWRUcmlnZ2VyQW5kT1NSRW50ZXI6CiAgICAgY2FzZSBMb29wSGludDoKICAgICBjYXNlIFN0
b3JlQmFycmllcjoKICAgICBjYXNlIFN0b3JlQmFycmllcldpdGhOdWxsQ2hlY2s6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApp
bmRleCA2Njc4NWIxOTRmMjViMzBjNmQyOTA2ZjBhODk3NTZhNThkNWM0OGM2Li4yNTNkZWIwOTJj
ODkxMzFkY2U2MDQxYzJlMzkwNDdmM2M5YjkyMTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTQ2MTEsNiArNDYx
MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNl
IENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAgICBj
YXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CisgICAgY2FzZSBDaGVja1RpZXJVcFdpdGhOZXN0
ZWRUcmlnZ2VyQW5kT1NSRW50ZXI6CiAgICAgY2FzZSBJbnQ1MlJlcDoKICAgICBjYXNlIEZpYXRJ
bnQ1MjoKICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCAyYTczNmJlNTBiMGFkNzk3NTg2
ZWIwNjQzYmQ3NWUzMzAzMWQ5OTRiLi5hMGEwYmRmMTUwYjQxN2ZjODRiYzkxM2E1NGQ0YjM3YjVi
NjFkZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKQEAgLTQ2MzYsNyArNDYzNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0
ZXJzKEludmFsaWRHUFJSZWcpOwogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c0V4ZWNTdGF0
ZSgpOwotICAgICAgICBhcHBlbmRDYWxsKHRyaWdnZXJUaWVyVXBOb3cpOworICAgICAgICBhcHBl
bmRDYWxsKHRyaWdnZXJUaWVyVXBOb3dJbkxvb3ApOwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVn
aXN0ZXJzKEludmFsaWRHUFJSZWcpOwogICAgICAgICAKICAgICAgICAgZG9uZS5saW5rKCZtX2pp
dCk7CkBAIC00NjU4LDE3ICs0NjU4LDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIENo
ZWNrVGllclVwQW5kT1NSRW50ZXI6IHsKKyAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6
CisgICAgY2FzZSBDaGVja1RpZXJVcFdpdGhOZXN0ZWRUcmlnZ2VyQW5kT1NSRW50ZXI6IHsKICAg
ICAgICAgQVNTRVJUKCFub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKTsKICAg
ICAgICAgCiAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICBHUFJSZWcg
dGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZm9y
Y2VPU1JFbnRyeTsKKyAgICAgICAgaWYgKG9wID09IENoZWNrVGllclVwV2l0aE5lc3RlZFRyaWdn
ZXJBbmRPU1JFbnRlcikKKyAgICAgICAgICAgIGZvcmNlT1NSRW50cnkgPSBtX2ppdC5icmFuY2hU
ZXN0OChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgTWFjcm9Bc3NlbWJsZXI6OkFic29sdXRlQWRk
cmVzcygmbV9qaXQuaml0Q29kZSgpLT5uZXN0ZWRUcmlnZ2VySXNTZXQpKTsKICAgICAgICAgCiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5icmFuY2hBZGQzMigKICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpTaWduZWQsCiAgICAgICAgICAgICBUcnVzdGVkSW1t
MzIoT3B0aW9uczo6ZnRsVGllclVwQ291bnRlckluY3JlbWVudEZvckxvb3AoKSksCiAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJzb2x1dGVBZGRyZXNzKCZtX2ppdC5qaXRDb2RlKCktPnRp
ZXJVcENvdW50ZXIubV9jb3VudGVyKSk7Ci0gICAgICAgIAorCisgICAgICAgIGlmIChmb3JjZU9T
UkVudHJ5LmlzU2V0KCkpCisgICAgICAgICAgICBmb3JjZU9TUkVudHJ5LmxpbmsoJm1faml0KTsK
ICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnModGVtcEdQUik7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZSgKICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihu
b2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCksCkBAIC00Njg2LDYgKzQ2OTMsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDaGVj
a1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgY2FzZSBD
aGVja1RpZXJVcEFuZE9TUkVudGVyOgorICAgIGNhc2UgQ2hlY2tUaWVyVXBXaXRoTmVzdGVkVHJp
Z2dlckFuZE9TUkVudGVyOgogICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwg
IlVuZXhwZWN0ZWQgdGllci11cCBub2RlIik7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmIC8vIEVO
QUJMRShGVExfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
aWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKaW5kZXggYzI1MzNlZjllMjgyNTNiZDUy
YzNjNzY1MDQxNzVmMTM3ZmU4ZDMxOC4uNWY1MDljNDFlMGNmMTFiYTZlNDRkY2NmM2E0MWMzYWIy
NzgxODM3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBD
aGVja0luamVjdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCkBAIC02MCw2ICs2MCwxMyBAQCBwdWJsaWM6
CiAgICAgICAgIAogICAgICAgICBpZiAoIU9wdGlvbnM6OmVuYWJsZU9TUkVudHJ5VG9GVEwoKSkK
ICAgICAgICAgICAgIGxldmVsID0gRlRMOjpDYW5Db21waWxlOworCisgICAgICAgIC8vIEZpcnN0
IHdlIGZpbmQgYWxsIHRoZSBsb29wcyB0aGF0IGNvbnRhaW4gYSBMb29wSGludCBmb3Igd2hpY2gg
d2UgY2Fubm90IE9TUiBlbnRlci4KKyAgICAgICAgLy8gV2UgdXNlIHRoYXQgaW5mb3JtYXRpb24g
dG8gZGVjaWRlIGlmIHdlIG5lZWQgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlciBvciBDaGVja1RpZXJV
cFdpdGhOZXN0ZWRUcmlnZ2VyQW5kT1NSRW50ZXIuCisgICAgICAgIE5hdHVyYWxMb29wcyYgbmF0
dXJhbExvb3BzID0gbV9ncmFwaC5tX25hdHVyYWxMb29wczsKKyAgICAgICAgbmF0dXJhbExvb3Bz
LmNvbXB1dGVJZk5lY2Vzc2FyeShtX2dyYXBoKTsKKworICAgICAgICBIYXNoU2V0PGNvbnN0IE5h
dHVyYWxMb29wKj4gbG9vcHNDb250YWluaW5nTG9vcEhpbnRXaXRob3V0T1NSRW50ZXIgPSBmaW5k
TG9vcHNDb250YWluaW5nTG9vcEhpbnRXaXRob3V0T1NSRW50ZXIobmF0dXJhbExvb3BzLCBsZXZl
bCk7CiAgICAgICAgIAogICAgICAgICBJbnNlcnRpb25TZXQgaW5zZXJ0aW9uU2V0KG1fZ3JhcGgp
OwogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tz
KCk7IGJsb2NrSW5kZXgtLTspIHsKQEAgLTcxLDM1ICs3OCwxNiBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOwogICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5vcCgpICE9IExvb3BIaW50KQogICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHB1dCBP
U1IgY2hlY2tzIGZvciB0aGUgZmlyc3QgTG9vcEhpbnQgaW4gdGhlIGJsb2NrLiBOb3RlIHRoYXQK
LSAgICAgICAgICAgICAgICAvLyBtb3JlIHRoYW4gb25lIExvb3BIaW50IGNvdWxkIGhhcHBlbiBp
biBjYXNlcyB3aGVyZSB3ZSBkaWQgYSBsb3Qgb2YgQ0ZHCi0gICAgICAgICAgICAgICAgLy8gc2lt
cGxpZmljYXRpb24gaW4gdGhlIGJ5dGVjb2RlIHBhcnNlciwgYnV0IGl0IHNob3VsZCBiZSB2ZXJ5
IHJhcmUuCi0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgICAgICBOb2RlT3JpZ2luIG9y
aWdpbiA9IG5vZGUtPm9yaWdpbjsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBp
ZiAobGV2ZWwgIT0gRlRMOjpDYW5Db21waWxlQW5kT1NSRW50ZXIgfHwgb3JpZ2luLnNlbWFudGlj
LmlubGluZUNhbGxGcmFtZSkgewotICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCArIDEsIFNwZWNOb25l
LCBDaGVja1RpZXJVcEluTG9vcCwgb3JpZ2luKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGJv
b2wgaXNBdFRvcCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBzdWJOb2Rl
SW5kZXggPSBub2RlSW5kZXg7IHN1Yk5vZGVJbmRleC0tOykgewotICAgICAgICAgICAgICAgICAg
ICBpZiAoIWJsb2NrLT5hdChzdWJOb2RlSW5kZXgpLT5pc1NlbWFudGljYWxseVNraXBwYWJsZSgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpc0F0VG9wID0gZmFsc2U7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAoIWlzQXRUb3ApIHsK
LSAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAg
ICAgICAgICAgICAgICBub2RlSW5kZXggKyAxLCBTcGVjTm9uZSwgQ2hlY2tUaWVyVXBJbkxvb3As
IG9yaWdpbik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZSgKLSAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ICsgMSwgU3BlY05vbmUsIENoZWNrVGll
clVwQW5kT1NSRW50ZXIsIG9yaWdpbik7CisgICAgICAgICAgICAgICAgaWYgKGNhbk9TUkVudGVy
QXRMb29wSGludChsZXZlbCwgYmxvY2ssIG5vZGVJbmRleCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBuYXR1cmFsTG9vcHMuaW5uZXJNb3N0TG9vcE9m
KGJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxvb3AgJiYgbG9vcHNDb250YWluaW5n
TG9vcEhpbnRXaXRob3V0T1NSRW50ZXIuY29udGFpbnMobG9vcCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShub2RlSW5kZXggKyAxLCBTcGVjTm9uZSwg
Q2hlY2tUaWVyVXBXaXRoTmVzdGVkVHJpZ2dlckFuZE9TUkVudGVyLCBvcmlnaW4pOworICAgICAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZShub2RlSW5kZXggKyAxLCBTcGVjTm9uZSwgQ2hlY2tUaWVyVXBBbmRPU1JFbnRl
ciwgb3JpZ2luKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobm9kZUluZGV4ICsgMSwgU3BlY05vbmUsIENoZWNrVGll
clVwSW5Mb29wLCBvcmlnaW4pOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgCkBAIC0xMTksNiArMTA3LDQ5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQogICAgIH0KKworcHJpdmF0ZToK
KyNpZiBFTkFCTEUoRlRMX0pJVCkKKyAgICBib29sIGNhbk9TUkVudGVyQXRMb29wSGludChGVEw6
OkNhcGFiaWxpdHlMZXZlbCBsZXZlbCwgY29uc3QgQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVk
IG5vZGVJbmRleCkKKyAgICB7CisgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUlu
ZGV4KTsKKyAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gTG9vcEhpbnQpOworCisgICAgICAg
IE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOworICAgICAgICBpZiAobGV2ZWwgIT0g
RlRMOjpDYW5Db21waWxlQW5kT1NSRW50ZXIgfHwgb3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxG
cmFtZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAvLyBXZSBvbmx5IHB1
dCBPU1IgY2hlY2tzIGZvciB0aGUgZmlyc3QgTG9vcEhpbnQgaW4gdGhlIGJsb2NrLiBOb3RlIHRo
YXQKKyAgICAgICAgLy8gbW9yZSB0aGFuIG9uZSBMb29wSGludCBjb3VsZCBoYXBwZW4gaW4gY2Fz
ZXMgd2hlcmUgd2UgZGlkIGEgbG90IG9mIENGRworICAgICAgICAvLyBzaW1wbGlmaWNhdGlvbiBp
biB0aGUgYnl0ZWNvZGUgcGFyc2VyLCBidXQgaXQgc2hvdWxkIGJlIHZlcnkgcmFyZS4KKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBzdWJOb2RlSW5kZXggPSBub2RlSW5kZXg7IHN1Yk5vZGVJbmRleC0t
OykgeworICAgICAgICAgICAgaWYgKCFibG9jay0+YXQoc3ViTm9kZUluZGV4KS0+aXNTZW1hbnRp
Y2FsbHlTa2lwcGFibGUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgSGFzaFNldDxjb25zdCBOYXR1
cmFsTG9vcCo+IGZpbmRMb29wc0NvbnRhaW5pbmdMb29wSGludFdpdGhvdXRPU1JFbnRlcihjb25z
dCBOYXR1cmFsTG9vcHMmIG5hdHVyYWxMb29wcywgRlRMOjpDYXBhYmlsaXR5TGV2ZWwgbGV2ZWwp
CisgICAgeworICAgICAgICBIYXNoU2V0PGNvbnN0IE5hdHVyYWxMb29wKj4gbG9vcHNDb250YWlu
aW5nTG9vcEhpbnRXaXRob3V0T1NSRW50ZXI7CisgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxv
Y2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKKyAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2Rl
SW5kZXgpIHsKKyAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRl
eCk7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgIT0gTG9vcEhpbnQpCisgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgaWYgKCFjYW5PU1JFbnRl
ckF0TG9vcEhpbnQobGV2ZWwsIGJsb2NrLCBub2RlSW5kZXgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0gbmF0dXJhbExvb3BzLmlubmVyTW9zdExvb3BP
ZihibG9jayk7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChsb29wKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBsb29wc0NvbnRhaW5pbmdMb29wSGludFdpdGhvdXRPU1JFbnRlci5hZGQo
bG9vcCk7CisgICAgICAgICAgICAgICAgICAgICAgICBsb29wID0gbmF0dXJhbExvb3BzLmlubmVy
TW9zdE91dGVyTG9vcCgqbG9vcCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGxvb3BzQ29u
dGFpbmluZ0xvb3BIaW50V2l0aG91dE9TUkVudGVyOworICAgIH0KKyNlbmRpZgogfTsKIAogYm9v
bCBwZXJmb3JtVGllclVwQ2hlY2tJbmplY3Rpb24oR3JhcGgmIGdyYXBoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253269</attachid>
            <date>2015-05-15 23:16:42 -0700</date>
            <delta_ts>2015-05-18 13:45:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145092-20150515231518.patch</filename>
            <type>text/plain</type>
            <size>19499</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0MjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
M2NkMzliM2FkMGM3ZjZiYmU3NGZlZjA4ZjY1NmZmNmNmZDAyMTEwLi4xOWFmOGI0NWUwZjAyY2Y3
Y2NjZGM5ZmQ5Zjg2ZjFhOGZlYjBhZmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NCBAQAorMjAxNS0wNS0xNSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgW0pTQ10gV2hlbiBlbnRlcmluZyBhIENoZWNrVGllclVwIHdpdGhv
dXQgT1NSRW50cnksIGZvcmNlIHRoZSBDaGVja1RpZXJVcCBmb3IgdGhlIG91dGVyIGxvb3BzIHdp
dGggT1NSIEVudHJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDUwOTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXaGVuIHdlIGhhdmUgYSBob3QgbG9vcCB3aXRob3V0IE9TUiBFbnRyeSBpbnNpZGUgYSBz
bG93ZXIgbG9vcCB0aGF0IHN1cHBvcnQgT1NSIEVudHJ5LAorICAgICAgICB3ZSBnZXQgdGhlIGlu
c2lkZSBsb29wIGRyaXZpbmcgdGhlIHRpZXJVcENvdW50ZXIgYW5kIHdlIGhhdmUgdmVyeSBsaXR0
bGUgY2hhbmNlIG9mCisgICAgICAgIGRvaW5nIGEgQ2hlY2tUaWVyVXAgb24gdGhlIG91dGVyIGxv
b3AuIEluIHR1cm4sIHRoaXMgZ2l2ZSBhbG1vc3Qgbm8gb3Bwb3J0dW5pdHkgdG8gdGllcgorICAg
ICAgICB1cCBpbiB0aGUgb3V0ZXIgbG9vcCBhbmQgT1NSIEVudGVyIHRoZXJlLgorCisgICAgICAg
IFRoaXMgcGF0Y2hlcyBjaGFuZ2VzIENoZWNrVGllclVwIHRvIGZvcmNlIGl0cyBvdXRlciBsb29w
cyB0byBkbyBhIENoZWNrVGllclVwIHRoZW1zZWx2ZXMuCisKKyAgICAgICAgVG8gZG8gdGhhdCwg
Q2hlY2tUaWVyVXAgc2V0cyBhIGZsYWcgIm5lc3RlZFRyaWdnZXJJc1NldCIgdG8gZm9yY2UgdGhl
IG91dGVyIGxvb3AgdG8KKyAgICAgICAgZW50ZXIgdGhlaXIgQ2hlY2tUaWVyVXAgcmVnYXJkbGVz
cyBvZiB0aGUgdGllci11cCBjb3VudGVyLgorCisgICAgICAgICogYnl0ZWNvZGUvRXhlY3V0aW9u
Q291bnRlci5jcHA6CisgICAgICAgIChKU0M6OkV4ZWN1dGlvbkNvdW50ZXI8Y291bnRpbmdWYXJp
YW50Pjo6c2V0VGhyZXNob2xkKToKKyAgICAgICAgVGhpcyBpcyBzb21ld2hhdCB1bnJlbGF0ZWQu
IFRoaXMgYXNzZXJ0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IHJlbGllcyBvbgorICAgICAg
ICBtX2NvdW50ZXIsIHdoaWNoIGNoYW5nZXMgb24gYW4gb3RoZXIgdGhyZWFkLgorCisgICAgICAg
IEkgaGF2ZSBoaXQgaXQgYSBjb3VwbGUgb2YgdGltZXMgd2l0aCB0aGlzIHBhdGNoIGJlY2F1c2Ug
d2UgYXJlIGEgYml0IG1vcmUgYWdncmVzc2l2ZQorICAgICAgICBvbiBDaGVja1RpZXJVcC4gV2hh
dCBoYXBwZW5zIGlzOgorICAgICAgICAxKSBFeGVjdXRpb25Db3VudGVyPGNvdW50aW5nVmFyaWFu
dD46OmNoZWNrSWZUaHJlc2hvbGRDcm9zc2VkQW5kU2V0KCkgZmlyc3QgY2hlY2tzCisgICAgICAg
ICAgIGhhc0Nyb3NzZWRUaHJlc2hvbGQoKSwgYW5kIGl0IGlzIGZhbHNlLgorICAgICAgICAyKSBP
biB0aGUgbWFpbiB0aHJlYWQsIHRoZSBob3QgbG9vcHMga2VlcHMgcnVubmluZyBhbmQgdGhlIGNv
dW50ZXIgYmVjb21lcyBsYXJnZQorICAgICAgICAgICBlbm91Z2ggdG8gY3Jvc3MgdGhlIHRocmVz
aG9sZC4KKyAgICAgICAgMykgRXhlY3V0aW9uQ291bnRlcjxjb3VudGluZ1ZhcmlhbnQ+OjpjaGVj
a0lmVGhyZXNob2xkQ3Jvc3NlZEFuZFNldCgpIHJ1bnMgdGhlIG5leHQKKyAgICAgICAgICAgdGVz
dCwgc2V0VGhyZXNob2xkKCksIHdoZXJlIHRoZSBhc3NlcnRpb24gaXMuIFNpbmNlIHRoZSBjb3Vu
dGVyIGlzIG5vdyBsYXJnZSBlbm91Z2gsCisgICAgICAgICAgIHRoZSBhc3NlcnRpb24gZmFpbHMu
CisKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhl
Y3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChK
U0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKworICAgICAgICAq
IGRmZy9ERkdKSVRDb2RlLmg6CisgICAgICAgIEkgdXNlZCBhIHVpbnQ4X3QgaW5zdGVhZCBvZiBh
IGJvb2xlYW4gdG8gbWFrZSB0aGUgY29kZSBnZW5lcmF0aW9uIGNsZWFyZXIKKyAgICAgICAgaW4g
REZHU3BlY3VsYXRpdmVKSVQ2NC4KKworICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAg
ICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9u
cy5oOgorCisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRl
KToKKyAgICAgICAgVGhpcyBpcyBhIGJpdCBhbm5veWluZzogd2UgaGF2ZSB0aGUgTmF0dXJhbExv
b3BzIGFuYWx5c2lzIHRoYXQgcHJvdmlkZXMgdXMKKyAgICAgICAgZXZlcnl0aGluZyB3ZSBuZWVk
IHRvIGtub3cgYWJvdXQgbG9vcHMsIGJ1dCB0aGUgVGllclVwQ2hlY2sgYXJlIGNvbnNlcnZhdGl2
ZQorICAgICAgICBhbmQgc2V0IG9uIExvb3BIaW50LgorCisgICAgICAgIFRvIG1ha2UgdGhlIHR3
byB3b3JrIHRvZ2V0aGVyLCB3ZSBmaXJzdCBmaW5kIGFsbCB0aGUgQ2hlY2tUaWVyVXAgdGhhdCBj
YW5ub3QKKyAgICAgICAgT1NSIGVudGVyIGFuZCB3ZSBrZWVwIGEgbGlzdCBvZiBhbGwgdGhlIG5h
dHVyYWwgbG9vcHMgY29udGFpbmluZyB0aGVtLgorCisgICAgICAgIFRoZW4gd2UgZG8gYSBzZWNv
bmQgcGFzcyBvdmVyIHRoZSBMb29wSGludHMsIGdldCB0aGVpciBOYXR1cmFsTG9vcCwgYW5kIGNo
ZWNrCisgICAgICAgIGlmIGl0IGNvbnRhaW5zIGEgbG9vcCB0aGF0IGNhbm5vdCBPU1IgZW50ZXIu
CisKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6
OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHVGllclVwQ2hlY2tJbmplY3Rp
b25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VGllclVwQ2hlY2tJbmplY3Rpb25QaGFz
ZTo6cnVuKToKKyAgICAgICAgKEpTQzo6REZHOjpUaWVyVXBDaGVja0luamVjdGlvblBoYXNlOjpj
YW5PU1JFbnRlckF0TG9vcEhpbnQpOgorCiAyMDE1LTA1LTEyICBCZW5qYW1pbiBQb3VsYWluICA8
YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggdGhlIGl0ZXJhdGlvbiBjb3VudCBv
ZiBhcml0aC1tb2R1bG8tbm9kZS1iZWhhdmlvcnMuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmNwcAppbmRleCBiYWNiNDllMzM3MGFm
NWRhMjM4NzVkMjFjZDhmYWIyNTQ5NmU0NTZiLi5mZTRlNDMwZjEwYzliNjk5M2RiY2FlM2NmYWFi
ZTUyZWUyNGQzNTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXhlY3V0aW9uQ291bnRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4ZWN1dGlvbkNvdW50ZXIuY3BwCkBAIC0xMzYsOCArMTM2LDYgQEAgYm9vbCBFeGVjdXRpb25D
b3VudGVyPGNvdW50aW5nVmFyaWFudD46OnNldFRocmVzaG9sZChDb2RlQmxvY2sqIGNvZGVCbG9j
aykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAgICAgCi0gICAgQVNTRVJUKCFt
X2FjdGl2ZVRocmVzaG9sZCB8fCAhaGFzQ3Jvc3NlZFRocmVzaG9sZChjb2RlQmxvY2spKTsKLSAg
ICAgICAgCiAgICAgLy8gQ29tcHV0ZSB0aGUgdHJ1ZSB0b3RhbCBjb3VudC4KICAgICBkb3VibGUg
dHJ1ZVRvdGFsQ291bnQgPSBjb3VudCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGUw
MGI0NjhjZDE4NjZhNGE1ZDkwMDY1MDgwNDc5ZTMxNDFkMjEyYjIuLjYyYTVkYjhmZTc2ZDU1YTcy
OTc1N2I0ZjUxYjI1OWY4MDNlNzcwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTIyNzAsNiAr
MjI3MCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4
ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgfQogCiAgICAgY2FzZSBDaGVj
a1RpZXJVcEFuZE9TUkVudGVyOgorICAgIGNhc2UgQ2hlY2tUaWVyVXBXaXRoTmVzdGVkVHJpZ2dl
ckFuZE9TUkVudGVyOgogICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgY2FzZSBab21iaWVIaW50Ogog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgK
aW5kZXggMzUwYjIwZGMyODZkYmY5NDFkZGEwNWQ3ODBiYWQxMGU4Zjk0NWQ0Yy4uMjc0M2M5Nzhk
MjFhMTZiY2NjMzMxODA2ZTM5N2ZiZTA1NGY1ZTFiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTI4Niw2ICsyODYsNyBAQCB2b2lkIGNsb2JiZXJpemUo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3Qg
V3JpdGVGdQogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJV
cEF0UmV0dXJuOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKKyAgICBjYXNlIENo
ZWNrVGllclVwV2l0aE5lc3RlZFRyaWdnZXJBbmRPU1JFbnRlcjoKICAgICBjYXNlIExvb3BIaW50
OgogICAgIGNhc2UgQnJlYWtwb2ludDoKICAgICBjYXNlIFByb2ZpbGVXaWxsQ2FsbDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAxMTE3ZTdhYjQzMmJhNjBlYTA3
M2ZhMGFmZTk4MTlhMjZmODExMzQ4Li4yNGZjOWUwYTRiODk4MDZkYThmNmFjOTAzOWFiOTUxY2Ew
ZTcwYzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0xNTks
NiArMTU5LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNh
c2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAg
IGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKKyAgICBjYXNlIENoZWNrVGllclVwV2l0aE5l
c3RlZFRyaWdnZXJBbmRPU1JFbnRlcjoKICAgICBjYXNlIExvb3BIaW50OgogICAgIGNhc2UgU3Rv
cmVCYXJyaWVyOgogICAgIGNhc2UgU3RvcmVCYXJyaWVyV2l0aE51bGxDaGVjazoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGEzZTBhMDJmN2MyYjEz
MzdiYTczYWVmNTdiYTE2YTI5ODBkYTE0OGYuLmY2ZWI0NTFjODU0Mzg2NzVkNmNkYzk3Nzg0ZmMx
ZjU2ODk5ZGM2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcApAQCAtMTA4OSw2ICsxMDg5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja1Rp
ZXJVcEluTG9vcDoKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAgICAgICBj
YXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CisgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBXaXRo
TmVzdGVkVHJpZ2dlckFuZE9TUkVudGVyOgogICAgICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50
OgogICAgICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKaW5kZXggNGQzMTM2ZmQ3NDkxNDNk
YmMzNTBhNmY0NmUwMWYwM2NhNjA5M2EwYi4uOTQ1ZjU1ZTRmM2JmOWZhODNmYzRmZTI5YWVhODU3
OWQyY2UxZDBjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKQEAgLTEy
MCw2ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgREZHOjpWYXJpYWJsZUV2ZW50U3RyZWFtIHZhcmlh
YmxlRXZlbnRTdHJlYW07CiAgICAgREZHOjpNaW5pZmllZEdyYXBoIG1pbmlmaWVkREZHOwogI2lm
IEVOQUJMRShGVExfSklUKQorICAgIHVpbnQ4X3QgbmVzdGVkVHJpZ2dlcklzU2V0IHsgMCB9Owog
ICAgIFVwcGVyVGllckV4ZWN1dGlvbkNvdW50ZXIgdGllclVwQ291bnRlcjsKICAgICBSZWZQdHI8
Q29kZUJsb2NrPiBvc3JFbnRyeUJsb2NrOwogICAgIHVuc2lnbmVkIG9zckVudHJ5UmV0cnk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggMmNlNzViY2VhYjU1ZDNj
ZTNmNjhlNTU0MDU4N2NiNmVhNWMyNjZlNi4uYmNkNzQxMGU1ZmJjOTMwZjExYTY3OWM3NWNkZDIy
MzkyNGU4NmQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAt
OTEsNiArOTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogVGll
ci11cCBjaGVja3MgZnJvbSB0aGUgREZHIHRvIHRoZSBGVEwuICovXAogICAgIG1hY3JvKENoZWNr
VGllclVwSW5Mb29wLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tUaWVyVXBB
bmRPU1JFbnRlciwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKENoZWNrVGllclVwV2l0
aE5lc3RlZFRyaWdnZXJBbmRPU1JFbnRlciwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3Jv
KENoZWNrVGllclVwQXRSZXR1cm4sIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCiAgICAgLyog
R2V0IHRoZSB2YWx1ZSBvZiBhIGxvY2FsIHZhcmlhYmxlLCB3aXRob3V0IGxpbmtpbmcgaW50byB0
aGUgVmFyaWFibGVBY2Nlc3NEYXRhICovXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAKaW5kZXggOGJiMmQ4ZDQwNDkwODc2NWQ1Y2VlMTk1YjJkYmVhOGU4ODQ5
YmEwZS4uY2YzYTM0YmZhY2NiYzZlMTBkMjFmZTA4NzhhYjBlZWFjYjM3YzAyYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0xMzUxLDcgKzEzNTEs
NyBAQCBzdGF0aWMgdm9pZCB0cmlnZ2VyRlRMUmVwbGFjZW1lbnRDb21waWxlKFZNKiB2bSwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEpJVENvZGUqCiAgICAgICAgIE9wZXJhbmRzPEpTVmFsdWU+KCks
IFRvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpjcmVhdGUoY29kZUJsb2NrKSk7CiB9
CiAKLXZvaWQgSklUX09QRVJBVElPTiB0cmlnZ2VyVGllclVwTm93KEV4ZWNTdGF0ZSogZXhlYykK
K3N0YXRpYyB2b2lkIHRyaWdnZXJUaWVyVXBOb3dDb21tb24oRXhlY1N0YXRlKiBleGVjLCBib29s
IGluTG9vcCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKQEAgLTEzNzAsMTAgKzEzNzAsMjIgQEAgdm9pZCBK
SVRfT1BFUkFUSU9OIHRyaWdnZXJUaWVyVXBOb3coRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAg
ICAgKmNvZGVCbG9jaywgIjogRW50ZXJlZCB0cmlnZ2VyVGllclVwTm93IHdpdGggZXhlY3V0ZUNv
dW50ZXIgPSAiLAogICAgICAgICAgICAgaml0Q29kZS0+dGllclVwQ291bnRlciwgIlxuIik7CiAg
ICAgfQotICAgIAorICAgIGlmIChpbkxvb3ApCisgICAgICAgIGppdENvZGUtPm5lc3RlZFRyaWdn
ZXJJc1NldCA9IDE7CisKICAgICB0cmlnZ2VyRlRMUmVwbGFjZW1lbnRDb21waWxlKHZtLCBjb2Rl
QmxvY2ssIGppdENvZGUpOwogfQogCit2b2lkIEpJVF9PUEVSQVRJT04gdHJpZ2dlclRpZXJVcE5v
dyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgdHJpZ2dlclRpZXJVcE5vd0NvbW1vbihleGVjLCBm
YWxzZSk7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiB0cmlnZ2VyVGllclVwTm93SW5Mb29wKEV4
ZWNTdGF0ZSogZXhlYykKK3sKKyAgICB0cmlnZ2VyVGllclVwTm93Q29tbW9uKGV4ZWMsIHRydWUp
OworfQorCiBjaGFyKiBKSVRfT1BFUkFUSU9OIHRyaWdnZXJPU1JFbnRyeU5vdygKICAgICBFeGVj
U3RhdGUqIGV4ZWMsIGludDMyX3QgYnl0ZWNvZGVJbmRleCwgaW50MzJfdCBzdHJlYW1JbmRleCkK
IHsKQEAgLTEzODgsNiArMTQwMCw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gdHJpZ2dlck9TUkVu
dHJ5Tm93KAogICAgIH0KICAgICAKICAgICBKSVRDb2RlKiBqaXRDb2RlID0gY29kZUJsb2NrLT5q
aXRDb2RlKCktPmRmZygpOworICAgIGppdENvZGUtPm5lc3RlZFRyaWdnZXJJc1NldCA9IDA7CiAg
ICAgCiAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewogICAgICAgICBkYXRhTG9nKApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCBiOTY2YzhkNjg3
MDY0ZDkyYzQyNjQ3ZWY0ZmJkYzUzOWE0OTRiYmYzLi5jMTAyYjg3YWQzYjc0ZWRkOTA5ZmQzZDAz
MTM0MTA2MDYwNmYwZDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuaApAQCAtMTQ4LDYgKzE0OCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiB0cmlnZ2VyUmVvcHRp
bWl6YXRpb25Ob3coQ29kZUJsb2NrKiwgT1NSRXhpdEJhc2UqKSBXVEZfSU5URVJOCiAKICNpZiBF
TkFCTEUoRlRMX0pJVCkKIHZvaWQgSklUX09QRVJBVElPTiB0cmlnZ2VyVGllclVwTm93KEV4ZWNT
dGF0ZSopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiB0cmlnZ2VyVGllclVwTm93
SW5Mb29wKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gdHJp
Z2dlck9TUkVudHJ5Tm93KEV4ZWNTdGF0ZSosIGludDMyX3QgYnl0ZWNvZGVJbmRleCwgaW50MzJf
dCBzdHJlYW1JbmRleCkgV1RGX0lOVEVSTkFMOwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDBmZjVhMzYxMzM3NTg4YTFmOTFkOTFlNTk1OGFh
M2M4MmE0YmM0YjIuLmFmMjQyODk1YmYwNjViMTM2ZWQ0MTA5YTc2MDM4MTFiZWExYTM5ZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC01NDAsNiArNTQwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0
dXJuOgogICAgICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CisgICAgICAgIGNhc2Ug
Q2hlY2tUaWVyVXBXaXRoTmVzdGVkVHJpZ2dlckFuZE9TUkVudGVyOgogICAgICAgICBjYXNlIElu
dmFsaWRhdGlvblBvaW50OgogICAgICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAgICAgICAgIGNh
c2UgVmFsdWVUb0ludDMyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaAppbmRleCA0ZDhkNzRiMDlhNTg5NjM5YzgyOWI2NDgzOGY3ZWUyYjBlZWJmMzg2Li5h
YTI1NmQ5MjMyYjE4NzZjYjA0MzRiOWE5MWQyMDY4MzA0YzI0YzhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMjQ2LDYgKzI0Niw3IEBAIGJv
b2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tU
aWVyVXBBdFJldHVybjoKICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CisgICAgY2Fz
ZSBDaGVja1RpZXJVcFdpdGhOZXN0ZWRUcmlnZ2VyQW5kT1NSRW50ZXI6CiAgICAgY2FzZSBMb29w
SGludDoKICAgICBjYXNlIFN0b3JlQmFycmllcjoKICAgICBjYXNlIFN0b3JlQmFycmllcldpdGhO
dWxsQ2hlY2s6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAppbmRleCA2Njc4NWIxOTRmMjViMzBjNmQyOTA2ZjBhODk3NTZhNThk
NWM0OGM2Li4yNTNkZWIwOTJjODkxMzFkY2U2MDQxYzJlMzkwNDdmM2M5YjkyMTU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKQEAgLTQ2MTEsNiArNDYxMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVy
VXBBdFJldHVybjoKICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CisgICAgY2FzZSBD
aGVja1RpZXJVcFdpdGhOZXN0ZWRUcmlnZ2VyQW5kT1NSRW50ZXI6CiAgICAgY2FzZSBJbnQ1MlJl
cDoKICAgICBjYXNlIEZpYXRJbnQ1MjoKICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCAy
YTczNmJlNTBiMGFkNzk3NTg2ZWIwNjQzYmQ3NWUzMzAzMWQ5OTRiLi5hMGEwYmRmMTUwYjQxN2Zj
ODRiYzkxM2E1NGQ0YjM3YjViNjFkZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTQ2MzYsNyArNDYzNiw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIHNp
bGVudFNwaWxsQWxsUmVnaXN0ZXJzKEludmFsaWRHUFJSZWcpOwogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpOwotICAgICAgICBhcHBlbmRDYWxsKHRyaWdnZXJUaWVyVXBO
b3cpOworICAgICAgICBhcHBlbmRDYWxsKHRyaWdnZXJUaWVyVXBOb3dJbkxvb3ApOwogICAgICAg
ICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKEludmFsaWRHUFJSZWcpOwogICAgICAgICAKICAgICAg
ICAgZG9uZS5saW5rKCZtX2ppdCk7CkBAIC00NjU4LDE3ICs0NjU4LDI0IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
ICAgICAKLSAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6IHsKKyAgICBjYXNlIENoZWNr
VGllclVwQW5kT1NSRW50ZXI6CisgICAgY2FzZSBDaGVja1RpZXJVcFdpdGhOZXN0ZWRUcmlnZ2Vy
QW5kT1NSRW50ZXI6IHsKICAgICAgICAgQVNTRVJUKCFub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5s
aW5lQ2FsbEZyYW1lKTsKICAgICAgICAgCiAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMp
OwogICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgZm9yY2VPU1JFbnRyeTsKKyAgICAgICAgaWYgKG9wID09IENoZWNrVGll
clVwV2l0aE5lc3RlZFRyaWdnZXJBbmRPU1JFbnRlcikKKyAgICAgICAgICAgIGZvcmNlT1NSRW50
cnkgPSBtX2ppdC5icmFuY2hUZXN0OChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgTWFjcm9Bc3Nl
bWJsZXI6OkFic29sdXRlQWRkcmVzcygmbV9qaXQuaml0Q29kZSgpLT5uZXN0ZWRUcmlnZ2VySXNT
ZXQpKTsKICAgICAgICAgCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBtX2pp
dC5icmFuY2hBZGQzMigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpTaWduZWQsCiAgICAg
ICAgICAgICBUcnVzdGVkSW1tMzIoT3B0aW9uczo6ZnRsVGllclVwQ291bnRlckluY3JlbWVudEZv
ckxvb3AoKSksCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJzb2x1dGVBZGRyZXNzKCZt
X2ppdC5qaXRDb2RlKCktPnRpZXJVcENvdW50ZXIubV9jb3VudGVyKSk7Ci0gICAgICAgIAorCisg
ICAgICAgIGlmIChmb3JjZU9TUkVudHJ5LmlzU2V0KCkpCisgICAgICAgICAgICBmb3JjZU9TUkVu
dHJ5LmxpbmsoJm1faml0KTsKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnModGVtcEdQ
Uik7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZSgKICAgICAgICAg
ICAgIFRydXN0ZWRJbW0zMihub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCksCkBA
IC00Njg2LDYgKzQ2OTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRS
ZXR1cm46CiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgorICAgIGNhc2UgQ2hlY2tU
aWVyVXBXaXRoTmVzdGVkVHJpZ2dlckFuZE9TUkVudGVyOgogICAgICAgICBERkdfQ1JBU0gobV9q
aXQuZ3JhcGgoKSwgbm9kZSwgIlVuZXhwZWN0ZWQgdGllci11cCBub2RlIik7CiAgICAgICAgIGJy
ZWFrOwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKaW5kZXgg
YzI1MzNlZjllMjgyNTNiZDUyYzNjNzY1MDQxNzVmMTM3ZmU4ZDMxOC4uNWY1MDljNDFlMGNmMTFi
YTZlNDRkY2NmM2E0MWMzYWIyNzgxODM3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCkBAIC02MCw2
ICs2MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBpZiAoIU9wdGlvbnM6OmVuYWJs
ZU9TUkVudHJ5VG9GVEwoKSkKICAgICAgICAgICAgIGxldmVsID0gRlRMOjpDYW5Db21waWxlOwor
CisgICAgICAgIC8vIEZpcnN0IHdlIGZpbmQgYWxsIHRoZSBsb29wcyB0aGF0IGNvbnRhaW4gYSBM
b29wSGludCBmb3Igd2hpY2ggd2UgY2Fubm90IE9TUiBlbnRlci4KKyAgICAgICAgLy8gV2UgdXNl
IHRoYXQgaW5mb3JtYXRpb24gdG8gZGVjaWRlIGlmIHdlIG5lZWQgQ2hlY2tUaWVyVXBBbmRPU1JF
bnRlciBvciBDaGVja1RpZXJVcFdpdGhOZXN0ZWRUcmlnZ2VyQW5kT1NSRW50ZXIuCisgICAgICAg
IE5hdHVyYWxMb29wcyYgbmF0dXJhbExvb3BzID0gbV9ncmFwaC5tX25hdHVyYWxMb29wczsKKyAg
ICAgICAgbmF0dXJhbExvb3BzLmNvbXB1dGVJZk5lY2Vzc2FyeShtX2dyYXBoKTsKKworICAgICAg
ICBIYXNoU2V0PGNvbnN0IE5hdHVyYWxMb29wKj4gbG9vcHNDb250YWluaW5nTG9vcEhpbnRXaXRo
b3V0T1NSRW50ZXIgPSBmaW5kTG9vcHNDb250YWluaW5nTG9vcEhpbnRXaXRob3V0T1NSRW50ZXIo
bmF0dXJhbExvb3BzLCBsZXZlbCk7CiAgICAgICAgIAogICAgICAgICBJbnNlcnRpb25TZXQgaW5z
ZXJ0aW9uU2V0KG1fZ3JhcGgpOwogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9
IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKQEAgLTcxLDM1ICs3OCwxNiBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5k
ZXgpOwogICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpICE9IExvb3BIaW50KQogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICAvLyBXZSBvbmx5IHB1dCBPU1IgY2hlY2tzIGZvciB0aGUgZmlyc3QgTG9vcEhpbnQgaW4gdGhl
IGJsb2NrLiBOb3RlIHRoYXQKLSAgICAgICAgICAgICAgICAvLyBtb3JlIHRoYW4gb25lIExvb3BI
aW50IGNvdWxkIGhhcHBlbiBpbiBjYXNlcyB3aGVyZSB3ZSBkaWQgYSBsb3Qgb2YgQ0ZHCi0gICAg
ICAgICAgICAgICAgLy8gc2ltcGxpZmljYXRpb24gaW4gdGhlIGJ5dGVjb2RlIHBhcnNlciwgYnV0
IGl0IHNob3VsZCBiZSB2ZXJ5IHJhcmUuCi0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAg
ICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IG5vZGUtPm9yaWdpbjsKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICBpZiAobGV2ZWwgIT0gRlRMOjpDYW5Db21waWxlQW5kT1NSRW50ZXIg
fHwgb3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSkgewotICAgICAgICAgICAgICAgICAg
ICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJ
bmRleCArIDEsIFNwZWNOb25lLCBDaGVja1RpZXJVcEluTG9vcCwgb3JpZ2luKTsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIGJvb2wgaXNBdFRvcCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBzdWJOb2RlSW5kZXggPSBub2RlSW5kZXg7IHN1Yk5vZGVJbmRleC0tOykgewot
ICAgICAgICAgICAgICAgICAgICBpZiAoIWJsb2NrLT5hdChzdWJOb2RlSW5kZXgpLT5pc1NlbWFu
dGljYWxseVNraXBwYWJsZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpc0F0VG9wID0g
ZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBpZiAoIWlzQXRUb3ApIHsKLSAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggKyAxLCBTcGVjTm9uZSwg
Q2hlY2tUaWVyVXBJbkxvb3AsIG9yaWdpbik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpbnNl
cnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ICsgMSwg
U3BlY05vbmUsIENoZWNrVGllclVwQW5kT1NSRW50ZXIsIG9yaWdpbik7CisgICAgICAgICAgICAg
ICAgaWYgKGNhbk9TUkVudGVyQXRMb29wSGludChsZXZlbCwgYmxvY2ssIG5vZGVJbmRleCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBuYXR1cmFsTG9v
cHMuaW5uZXJNb3N0TG9vcE9mKGJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxvb3Ag
JiYgbG9vcHNDb250YWluaW5nTG9vcEhpbnRXaXRob3V0T1NSRW50ZXIuY29udGFpbnMobG9vcCkp
CisgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShub2RlSW5k
ZXggKyAxLCBTcGVjTm9uZSwgQ2hlY2tUaWVyVXBXaXRoTmVzdGVkVHJpZ2dlckFuZE9TUkVudGVy
LCBvcmlnaW4pOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShub2RlSW5kZXggKyAxLCBTcGVjTm9uZSwgQ2hl
Y2tUaWVyVXBBbmRPU1JFbnRlciwgb3JpZ2luKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobm9kZUluZGV4ICsgMSwg
U3BlY05vbmUsIENoZWNrVGllclVwSW5Mb29wLCBvcmlnaW4pOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0xMTksNiArMTA3LDQ5IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQog
ICAgIH0KKworcHJpdmF0ZToKKyNpZiBFTkFCTEUoRlRMX0pJVCkKKyAgICBib29sIGNhbk9TUkVu
dGVyQXRMb29wSGludChGVEw6OkNhcGFiaWxpdHlMZXZlbCBsZXZlbCwgY29uc3QgQmFzaWNCbG9j
ayogYmxvY2ssIHVuc2lnbmVkIG5vZGVJbmRleCkKKyAgICB7CisgICAgICAgIE5vZGUqIG5vZGUg
PSBibG9jay0+YXQobm9kZUluZGV4KTsKKyAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gTG9v
cEhpbnQpOworCisgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOworICAg
ICAgICBpZiAobGV2ZWwgIT0gRlRMOjpDYW5Db21waWxlQW5kT1NSRW50ZXIgfHwgb3JpZ2luLnNl
bWFudGljLmlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICAvLyBXZSBvbmx5IHB1dCBPU1IgY2hlY2tzIGZvciB0aGUgZmlyc3QgTG9vcEhpbnQgaW4g
dGhlIGJsb2NrLiBOb3RlIHRoYXQKKyAgICAgICAgLy8gbW9yZSB0aGFuIG9uZSBMb29wSGludCBj
b3VsZCBoYXBwZW4gaW4gY2FzZXMgd2hlcmUgd2UgZGlkIGEgbG90IG9mIENGRworICAgICAgICAv
LyBzaW1wbGlmaWNhdGlvbiBpbiB0aGUgYnl0ZWNvZGUgcGFyc2VyLCBidXQgaXQgc2hvdWxkIGJl
IHZlcnkgcmFyZS4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBzdWJOb2RlSW5kZXggPSBub2RlSW5k
ZXg7IHN1Yk5vZGVJbmRleC0tOykgeworICAgICAgICAgICAgaWYgKCFibG9jay0+YXQoc3ViTm9k
ZUluZGV4KS0+aXNTZW1hbnRpY2FsbHlTa2lwcGFibGUoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
SGFzaFNldDxjb25zdCBOYXR1cmFsTG9vcCo+IGZpbmRMb29wc0NvbnRhaW5pbmdMb29wSGludFdp
dGhvdXRPU1JFbnRlcihjb25zdCBOYXR1cmFsTG9vcHMmIG5hdHVyYWxMb29wcywgRlRMOjpDYXBh
YmlsaXR5TGV2ZWwgbGV2ZWwpCisgICAgeworICAgICAgICBIYXNoU2V0PGNvbnN0IE5hdHVyYWxM
b29wKj4gbG9vcHNDb250YWluaW5nTG9vcEhpbnRXaXRob3V0T1NSRW50ZXI7CisgICAgICAgIGZv
ciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgYmxv
Y2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKKyAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0g
YmxvY2stPmF0KG5vZGVJbmRleCk7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgIT0g
TG9vcEhpbnQpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAg
ICAgaWYgKCFjYW5PU1JFbnRlckF0TG9vcEhpbnQobGV2ZWwsIGJsb2NrLCBub2RlSW5kZXgpKSB7
CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0gbmF0dXJhbExv
b3BzLmlubmVyTW9zdExvb3BPZihibG9jayk7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChs
b29wKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsb29wc0NvbnRhaW5pbmdMb29wSGludFdp
dGhvdXRPU1JFbnRlci5hZGQobG9vcCk7CisgICAgICAgICAgICAgICAgICAgICAgICBsb29wID0g
bmF0dXJhbExvb3BzLmlubmVyTW9zdE91dGVyTG9vcCgqbG9vcCk7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIGxvb3BzQ29udGFpbmluZ0xvb3BIaW50V2l0aG91dE9TUkVudGVyOworICAgIH0K
KyNlbmRpZgogfTsKIAogYm9vbCBwZXJmb3JtVGllclVwQ2hlY2tJbmplY3Rpb24oR3JhcGgmIGdy
YXBoKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>