<?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>83125</bug_id>
          
          <creation_ts>2012-04-04 01:52:08 -0700</creation_ts>
          <short_desc>Web Inspector: linearise aggregate&apos;s retaining size calculation</short_desc>
          <delta_ts>2012-04-04 08:50:15 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>alph</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>595309</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-04-04 01:52:08 -0700</bug_when>
    <thetext>It gives us no performance gain but gives us the flexibility for future improvements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595310</commentid>
    <comment_count>1</comment_count>
      <attachid>135529</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-04-04 01:55:21 -0700</bug_when>
    <thetext>Created attachment 135529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595491</commentid>
    <comment_count>2</comment_count>
      <attachid>135579</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-04-04 06:39:40 -0700</bug_when>
    <thetext>Created attachment 135579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595513</commentid>
    <comment_count>3</comment_count>
      <attachid>135579</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-04-04 07:05:57 -0700</bug_when>
    <thetext>Comment on attachment 135579
Patch

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

&gt; Source/WebCore/ChangeLog:15
&gt; +2012-04-04  Ilya Tikhonovsky  &lt;loislo@chromium.org&gt;

Remove duplicate entry.

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1136
&gt; +        for (var nodeIndex = this._rootNodeIndex; nodeIndex &lt; onlyNodesLength; nodeIndex += nodeFieldsCount) {

We may want to extract this loop into its own method so that we can measure its performance without _calculateClassesRetainedSize. WDYT?

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1138
&gt; +            var selfSize = onlyNodes[nodeIndex + selfSizeOffset];

Given that in other places here we use &quot;node&quot; to get corresponding field value I&apos;d rather use it here as well for consistency. Does it have any impact on the performance of this method?

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1195
&gt; +            var dominatedIndexFrom = firstDominatedNodeIndex[nodeIndex / nodeFieldCount];

var nodeOrdinal = nodeIndex / nodeFieldCount; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595530</commentid>
    <comment_count>4</comment_count>
      <attachid>135588</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-04-04 07:55:21 -0700</bug_when>
    <thetext>Created attachment 135588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595556</commentid>
    <comment_count>5</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-04-04 08:25:28 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 135579 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=135579&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:15
&gt; &gt; +2012-04-04  Ilya Tikhonovsky  &lt;loislo@chromium.org (:loislo) (c)&gt;
&gt; 
&gt; Remove duplicate entry.

done.

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1136
&gt; &gt; +        for (var nodeIndex = this._rootNodeIndex; nodeIndex &lt; onlyNodesLength; nodeIndex += nodeFieldsCount) {
&gt; 
&gt; We may want to extract this loop into its own method so that we can measure its performance without _calculateClassesRetainedSize. WDYT?
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1138
&gt; &gt; +            var selfSize = onlyNodes[nodeIndex + selfSizeOffset];
&gt; 
&gt; Given that in other places here we use &quot;node&quot; to get corresponding field value I&apos;d rather use it here as well for consistency. Does it have any impact on the performance of this method?

v8 doesn&apos;t inline our getters. I&apos;d like to inline classIndex too but it a separate patch. Also in general we have no control over filter function.

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1195
&gt; &gt; +            var dominatedIndexFrom = firstDominatedNodeIndex[nodeIndex / nodeFieldCount];
&gt; 
&gt; var nodeOrdinal = nodeIndex / nodeFieldCount; ?

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595562</commentid>
    <comment_count>6</comment_count>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-04-04 08:33:10 -0700</bug_when>
    <thetext>lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595573</commentid>
    <comment_count>7</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-04-04 08:50:15 -0700</bug_when>
    <thetext>Committed r113194: &lt;http://trac.webkit.org/changeset/113194&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135529</attachid>
            <date>2012-04-04 01:55:21 -0700</date>
            <delta_ts>2012-04-04 06:39:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83125-20120404125519.patch</filename>
            <type>text/plain</type>
            <size>3981</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2M2NGU1MmVhMzhhM2Zl
MzJkYjRkYzFlMTc1NGEwOTZhNmM4MjJlOS4uNDQ5NGI2MTdmMjQ4MzZjYmEzY2U1NmU3NDhkNGQx
ZTYyNzdjZmFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA0LTA0ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBsaW5lYXJpc2UgYWdncmVnYXRlJ3MgcmV0YWluaW5nIHNpemUgY2FsY3VsYXRpb24uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzEyNQorCisg
ICAgICAgIFRoZXJlIHdhcyBhIHJlY3Vyc2l2ZSBhbGdvcml0aG0gYnV0IGZyb20gcGVyZm9ybWFu
Y2UgcG9pbnQgb2YgdmlldworICAgICAgICBpdCBpcyBhIGJpdCBzaW1wbGVyIHRvIHNwZWVkLXVw
IGEgbm9uLXJlY3Vyc2l2ZSB2ZXJzaW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5fYnVpbGRBZ2dy
ZWdhdGVzLmZvckRvbWluYXRlZE5vZGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3QucHJvdG90eXBlLl9idWlsZEFnZ3JlZ2F0ZXMpOgorCiAyMDEyLTA0LTA0ICBNYXJpdXN6
IEdyemVnb3JjenlrICA8bWFyaXVzei5nQHNhbXN1bmcuY29tPgogCiAgICAgICAgIEZpeCBidWls
ZCBicmVhayB3aGVuIENPTlRFWFRfTUVOVVMgaXMgZGlzYWJsZWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCmluZGV4IGU3YTEyMTM1
Yjk3NDA5MWNiNjg2NTc1ZWRiODdlNmRiN2Q2OWFkOTQuLjQ3MDEzZTJkMzA5YmFhNzNjZjE1OWQx
ZjAwZmVjNjk4ODQzZmU0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCkBAIC0xMTUzLDI2ICsxMTUzLDQwIEBAIFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKLSAgICAgICAgLy8gUmVjdXJzaXZlbHkgdmlzaXQgZG9taW5hdG9ycyB0cmVlIGFuZCBzdW0g
dXAgcmV0YWluZWQgc2l6ZXMKLSAgICAgICAgLy8gb2YgdG9wbW9zdCBvYmplY3RzIGluIGVhY2gg
Y2xhc3MuCi0gICAgICAgIC8vIFRoaXMgZ2l2ZXMgdXMgcmV0YWluZWQgc2l6ZXMgZm9yIGNsYXNz
ZXMuCi0gICAgICAgIHZhciBzZWVuQ2xhc3NOYW1lSW5kZXhlcyA9IHt9OwotICAgICAgICB2YXIg
c25hcHNob3QgPSB0aGlzOwotICAgICAgICBmdW5jdGlvbiBmb3JEb21pbmF0ZWROb2Rlcyhub2Rl
SW5kZXgpCisgICAgICAgIGZ1bmN0aW9uIGZvckRvbWluYXRlZE5vZGVzKHNuYXBzaG90KQogICAg
ICAgICB7Ci0gICAgICAgICAgICB2YXIgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90Tm9kZShzbmFwc2hvdCwgbm9kZUluZGV4KTsKLSAgICAgICAgICAgIHZhciBjbGFzc0luZGV4
ID0gbm9kZS5jbGFzc0luZGV4OwotICAgICAgICAgICAgdmFyIHNlZW4gPSAhIXNlZW5DbGFzc05h
bWVJbmRleGVzW2NsYXNzSW5kZXhdOwotICAgICAgICAgICAgaWYgKCFzZWVuICYmIGNsYXNzSW5k
ZXggaW4gYWdncmVnYXRlcyAmJiAhc2hvdWxkU2tpcChub2RlKSkgewotICAgICAgICAgICAgICAg
IGFnZ3JlZ2F0ZXNbY2xhc3NJbmRleF0ubWF4UmV0ICs9IG5vZGUucmV0YWluZWRTaXplOwotICAg
ICAgICAgICAgICAgIHNlZW5DbGFzc05hbWVJbmRleGVzW2NsYXNzSW5kZXhdID0gdHJ1ZTsKKyAg
ICAgICAgICAgIHZhciByb290Tm9kZUluZGV4ID0gc25hcHNob3QuX3Jvb3ROb2RlSW5kZXg7Cisg
ICAgICAgICAgICB2YXIgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZShz
bmFwc2hvdCwgcm9vdE5vZGVJbmRleCk7CisgICAgICAgICAgICB2YXIgbGlzdCA9IFtyb290Tm9k
ZUluZGV4XTsKKyAgICAgICAgICAgIHZhciBzaXplcyA9IFstMV07CisgICAgICAgICAgICB2YXIg
Y2xhc3NlcyA9IFtdOworICAgICAgICAgICAgdmFyIHNlZW5DbGFzc05hbWVJbmRleGVzID0ge307
CisgICAgICAgICAgICB3aGlsZSAobGlzdC5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBub2Rl
Lm5vZGVJbmRleCA9IGxpc3QucG9wKCk7CisgICAgICAgICAgICAgICAgdmFyIGNsYXNzSW5kZXgg
PSBub2RlLmNsYXNzSW5kZXg7CisgICAgICAgICAgICAgICAgdmFyIHNlZW4gPSAhIXNlZW5DbGFz
c05hbWVJbmRleGVzW2NsYXNzSW5kZXhdOworICAgICAgICAgICAgICAgIHZhciBkb21pbmF0ZWRO
b2RlcyA9IHNuYXBzaG90Ll9kb21pbmF0ZWROb2Rlc09mTm9kZShub2RlKTsKKyAgICAgICAgICAg
ICAgICB2YXIgZG9taW5hdGVkTm9kZXNMZW5ndGggPSBkb21pbmF0ZWROb2Rlcy5sZW5ndGg7CisK
KyAgICAgICAgICAgICAgICBpZiAoIXNlZW4gJiYgY2xhc3NJbmRleCBpbiBhZ2dyZWdhdGVzICYm
ICFzaG91bGRTa2lwKG5vZGUpKSB7CisgICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0ZXNbY2xh
c3NJbmRleF0ubWF4UmV0ICs9IG5vZGUucmV0YWluZWRTaXplOworICAgICAgICAgICAgICAgICAg
ICBpZiAoZG9taW5hdGVkTm9kZXNMZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNl
ZW5DbGFzc05hbWVJbmRleGVzW2NsYXNzSW5kZXhdID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVzLnB1c2gobGlzdC5sZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAg
Y2xhc3Nlcy5wdXNoKGNsYXNzSW5kZXgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZG9taW5hdGVk
Tm9kZXNMZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgbGlzdC5wdXNoKGRvbWluYXRl
ZE5vZGVzLml0ZW0oaSkpOworICAgICAgICAgICAgICAgIHZhciBsID0gbGlzdC5sZW5ndGg7Cisg
ICAgICAgICAgICAgICAgd2hpbGUgKHNpemVzW3NpemVzLmxlbmd0aCAtIDFdID09PSBsKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHNpemVzLnBvcCgpOworICAgICAgICAgICAgICAgICAgICBjbGFz
c0luZGV4ID0gY2xhc3Nlcy5wb3AoKTsKKyAgICAgICAgICAgICAgICAgICAgc2VlbkNsYXNzTmFt
ZUluZGV4ZXNbY2xhc3NJbmRleF0gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB2YXIgZG9taW5hdGVkTm9kZXMgPSBzbmFwc2hvdC5fZG9taW5h
dGVkTm9kZXNPZk5vZGUobm9kZSk7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRv
bWluYXRlZE5vZGVzLmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgICAgIGZvckRvbWluYXRlZE5v
ZGVzKGRvbWluYXRlZE5vZGVzLml0ZW0oaSkpOwotICAgICAgICAgICAgc2VlbkNsYXNzTmFtZUlu
ZGV4ZXNbY2xhc3NJbmRleF0gPSBzZWVuOwogICAgICAgICB9Ci0gICAgICAgIGZvckRvbWluYXRl
ZE5vZGVzKHRoaXMuX3Jvb3ROb2RlSW5kZXgpOworICAgICAgICBmb3JEb21pbmF0ZWROb2Rlcyh0
aGlzKTsKIAogICAgICAgICAvLyBTaGF2ZSBvZmYgcHJvdmlzaW9uYWxseSBhbGxvY2F0ZWQgc3Bh
Y2UuCiAgICAgICAgIGZvciAodmFyIGNsYXNzSW5kZXggaW4gYWdncmVnYXRlcykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135579</attachid>
            <date>2012-04-04 06:39:40 -0700</date>
            <delta_ts>2012-04-04 07:55:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83125-20120404173938.patch</filename>
            <type>text/plain</type>
            <size>10754</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDVkYmExNmYxZjIyOWI1
YmM1ODEyNzNkYmQwZGU0ZjZhM2I1ZWZiYi4uMGVkYmYzZTc2ODkyNjEyMDEyMTM2M2YyNmE0N2Jk
YmQyNjEzZmE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA0LTA0ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBsaW5lYXJpc2UgYWdncmVnYXRlJ3MgcmV0YWluaW5nIHNpemUgY2FsY3VsYXRpb24uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzEyNQorCisg
ICAgICAgIFRoaXMgdmVyc2lvbiBpcyB0d2ljZSBhcyBmYXN0IGFzIHRoZSBvcmlnaW5hbCBhbmQg
aXQgaXMgbm9uLXJlY3Vyc2l2ZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX2dldERvbWluYXRlZElu
ZGV4KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLl9idWls
ZEFnZ3JlZ2F0ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5
cGUuX2NhbGN1bGF0ZUNsYXNzZXNSZXRhaW5lZFNpemUpOgorCisyMDEyLTA0LTA0ICBJbHlhIFRp
a2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBsaW5lYXJpc2UgYWdncmVnYXRlJ3MgcmV0YWluaW5nIHNpemUgY2FsY3VsYXRpb24uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzEyNQorCisgICAg
ICAgIFRoaXMgdmVyc2lvbiBpcyB0d2ljZSBhcyBmYXN0IGFzIHRoZSBvcmlnaW5hbCBhbmQgaXQg
aXMgbm9uLXJlY3Vyc2l2ZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX2J1aWxkQWdncmVnYXRlcy5m
b3JEb21pbmF0ZWROb2Rlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnBy
b3RvdHlwZS5fYnVpbGRBZ2dyZWdhdGVzKToKKwogMjAxMi0wNC0wNCAgQWxsYW4gU2FuZGZlbGQg
SmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KIAogICAgICAgICBCZXN0IHpvb21hYmxl
IGFyZWEgZG9lcyBub3QgYmFsYW5jZSBpbnRlcnNlY3Rpb24gd2l0aCB0YXJnZXQgYXJlYS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMK
aW5kZXggZTdhMTIxMzViOTc0MDkxY2I2ODY1NzVlZGI4N2U2ZGI3ZDY5YWQ5NC4uMWVhM2VhOTZj
MTg1MDcyYjZlYWI5ZGU3NDM5M2YxM2ZmMWQ3MDhiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKQEAgLTEwMTAsNiArMTAxMCwx
MyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0
dXJuIHRoaXMucm9vdE5vZGUucmV0YWluZWRTaXplOwogICAgIH0sCiAKKyAgICBfZ2V0RG9taW5h
dGVkSW5kZXg6IGZ1bmN0aW9uKG5vZGVJbmRleCkKKyAgICB7CisgICAgICAgIGlmIChub2RlSW5k
ZXggJSB0aGlzLl9ub2RlRmllbGRDb3VudCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
SW52YWxpZCBub2RlSW5kZXg6ICIgKyBub2RlSW5kZXgpOworICAgICAgICByZXR1cm4gdGhpcy5f
Zmlyc3REb21pbmF0ZWROb2RlSW5kZXhbbm9kZUluZGV4IC8gdGhpcy5fbm9kZUZpZWxkQ291bnRd
OworICAgIH0sCisKICAgICBfZG9taW5hdGVkTm9kZXNPZk5vZGU6IGZ1bmN0aW9uKG5vZGUpCiAg
ICAgewogICAgICAgICB2YXIgZG9taW5hdGVkSW5kZXhGcm9tID0gdGhpcy5fZ2V0RG9taW5hdGVk
SW5kZXgobm9kZS5ub2RlSW5kZXgpOwpAQCAtMTExNSwxOSArMTEyMiwyMyBAQCBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKIAogICAgIF9idWlsZEFnZ3JlZ2F0ZXM6IGZ1
bmN0aW9uKGZpbHRlcikKICAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIHNob3VsZFNraXAobm9kZSkK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKGZpbHRlciAmJiAhZmlsdGVyKG5vZGUpKQotICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgaWYgKCFub2RlLnNlbGZTaXpl
ICYmICFub2RlLmlzTmF0aXZlKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KICAgICAgICAgdmFyIGFnZ3JlZ2F0ZXMg
PSB7fTsKICAgICAgICAgdmFyIGFnZ3JlZ2F0ZXNCeUNsYXNzTmFtZSA9IHt9OwotICAgICAgICBm
b3IgKHZhciBub2RlID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlKHRoaXMsIHRo
aXMuX3Jvb3ROb2RlSW5kZXgpOyBub2RlLm5vZGVJbmRleCA8IHRoaXMuX29ubHlOb2Rlcy5sZW5n
dGg7IG5vZGUubm9kZUluZGV4ID0gbm9kZS5fbmV4dE5vZGVJbmRleCkgewotICAgICAgICAgICAg
aWYgKHNob3VsZFNraXAobm9kZSkpCisgICAgICAgIHZhciBvbmx5Tm9kZXMgPSB0aGlzLl9vbmx5
Tm9kZXM7CisgICAgICAgIHZhciBvbmx5Tm9kZXNMZW5ndGggPSBvbmx5Tm9kZXMubGVuZ3RoOwor
ICAgICAgICB2YXIgbm9kZU5hdGl2ZVR5cGUgPSB0aGlzLl9ub2RlTmF0aXZlVHlwZTsKKyAgICAg
ICAgdmFyIG5vZGVGaWVsZHNDb3VudCA9IHRoaXMuX25vZGVGaWVsZENvdW50OworICAgICAgICB2
YXIgc2VsZlNpemVPZmZzZXQgPSB0aGlzLl9ub2RlU2VsZlNpemVPZmZzZXQ7CisgICAgICAgIHZh
ciBub2RlVHlwZU9mZnNldCA9IHRoaXMuX25vZGVUeXBlT2Zmc2V0OworICAgICAgICB2YXIgbm9k
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZSh0aGlzLCB0aGlzLl9yb290Tm9k
ZUluZGV4KTsKKyAgICAgICAgdmFyIGRpc3RhbmNlc1RvV2luZG93ID0gdGhpcy5fZGlzdGFuY2Vz
VG9XaW5kb3c7CisKKyAgICAgICAgZm9yICh2YXIgbm9kZUluZGV4ID0gdGhpcy5fcm9vdE5vZGVJ
bmRleDsgbm9kZUluZGV4IDwgb25seU5vZGVzTGVuZ3RoOyBub2RlSW5kZXggKz0gbm9kZUZpZWxk
c0NvdW50KSB7CisgICAgICAgICAgICBub2RlLm5vZGVJbmRleCA9IG5vZGVJbmRleDsKKyAgICAg
ICAgICAgIHZhciBzZWxmU2l6ZSA9IG9ubHlOb2Rlc1tub2RlSW5kZXggKyBzZWxmU2l6ZU9mZnNl
dF07CisgICAgICAgICAgICBpZiAoZmlsdGVyICYmICFmaWx0ZXIobm9kZSkpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoIXNlbGZTaXplICYmIG9ubHlOb2Rlc1tu
b2RlSW5kZXggKyBub2RlVHlwZU9mZnNldF0gIT09IG5vZGVOYXRpdmVUeXBlKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgdmFyIGNsYXNzSW5kZXggPSBub2RlLmNsYXNz
SW5kZXg7CiAgICAgICAgICAgICBpZiAoIShjbGFzc0luZGV4IGluIGFnZ3JlZ2F0ZXMpKSB7CkBA
IC0xMTM1LDQ5ICsxMTQ2LDc2IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgICAgIHZhciBuYW1lTWF0dGVycyA9IG5vZGVUeXBlID09PSAib2Jq
ZWN0IiB8fCBub2RlVHlwZSA9PT0gIm5hdGl2ZSI7CiAgICAgICAgICAgICAgICAgdmFyIHZhbHVl
ID0gewogICAgICAgICAgICAgICAgICAgICBjb3VudDogMSwKLSAgICAgICAgICAgICAgICAgICAg
ZGlzdGFuY2VUb1dpbmRvdzogbm9kZS5kaXN0YW5jZVRvV2luZG93LAotICAgICAgICAgICAgICAg
ICAgICBzZWxmOiBub2RlLnNlbGZTaXplLAorICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZVRv
V2luZG93OiBkaXN0YW5jZXNUb1dpbmRvd1tub2RlSW5kZXhdLAorICAgICAgICAgICAgICAgICAg
ICBzZWxmOiBzZWxmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgbWF4UmV0OiAwLAogICAgICAg
ICAgICAgICAgICAgICB0eXBlOiBub2RlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgbmFtZTog
bmFtZU1hdHRlcnMgPyBub2RlLm5hbWUgOiBudWxsLAotICAgICAgICAgICAgICAgICAgICBpZHhz
OiBbbm9kZS5ub2RlSW5kZXhdCisgICAgICAgICAgICAgICAgICAgIGlkeHM6IFtub2RlSW5kZXhd
CiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICBhZ2dyZWdhdGVzW2NsYXNzSW5k
ZXhdID0gdmFsdWU7CiAgICAgICAgICAgICAgICAgYWdncmVnYXRlc0J5Q2xhc3NOYW1lW25vZGUu
Y2xhc3NOYW1lXSA9IHZhbHVlOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICB2YXIgY2xzcyA9IGFnZ3JlZ2F0ZXNbY2xhc3NJbmRleF07Ci0gICAgICAgICAgICAgICAgY2xz
cy5kaXN0YW5jZVRvV2luZG93ID0gTWF0aC5taW4oY2xzcy5kaXN0YW5jZVRvV2luZG93LCBub2Rl
LmRpc3RhbmNlVG9XaW5kb3cpOworICAgICAgICAgICAgICAgIGNsc3MuZGlzdGFuY2VUb1dpbmRv
dyA9IE1hdGgubWluKGNsc3MuZGlzdGFuY2VUb1dpbmRvdywgZGlzdGFuY2VzVG9XaW5kb3dbbm9k
ZUluZGV4XSk7CiAgICAgICAgICAgICAgICAgKytjbHNzLmNvdW50OwotICAgICAgICAgICAgICAg
IGNsc3Muc2VsZiArPSBub2RlLnNlbGZTaXplOwotICAgICAgICAgICAgICAgIGNsc3MuaWR4cy5w
dXNoKG5vZGUubm9kZUluZGV4KTsKKyAgICAgICAgICAgICAgICBjbHNzLnNlbGYgKz0gc2VsZlNp
emU7CisgICAgICAgICAgICAgICAgY2xzcy5pZHhzLnB1c2gobm9kZUluZGV4KTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IHZpc2l0IGRvbWluYXRv
cnMgdHJlZSBhbmQgc3VtIHVwIHJldGFpbmVkIHNpemVzCi0gICAgICAgIC8vIG9mIHRvcG1vc3Qg
b2JqZWN0cyBpbiBlYWNoIGNsYXNzLgotICAgICAgICAvLyBUaGlzIGdpdmVzIHVzIHJldGFpbmVk
IHNpemVzIGZvciBjbGFzc2VzLgorICAgICAgICB0aGlzLl9jYWxjdWxhdGVDbGFzc2VzUmV0YWlu
ZWRTaXplKGFnZ3JlZ2F0ZXMsIGZpbHRlcik7CisKKyAgICAgICAgLy8gU2hhdmUgb2ZmIHByb3Zp
c2lvbmFsbHkgYWxsb2NhdGVkIHNwYWNlLgorICAgICAgICBmb3IgKHZhciBjbGFzc0luZGV4IGlu
IGFnZ3JlZ2F0ZXMpCisgICAgICAgICAgICBhZ2dyZWdhdGVzW2NsYXNzSW5kZXhdLmlkeHMgPSBh
Z2dyZWdhdGVzW2NsYXNzSW5kZXhdLmlkeHMuc2xpY2UoMCk7CisgICAgICAgIHJldHVybiBhZ2dy
ZWdhdGVzQnlDbGFzc05hbWU7CisgICAgfSwKKworICAgIF9jYWxjdWxhdGVDbGFzc2VzUmV0YWlu
ZWRTaXplOiBmdW5jdGlvbihhZ2dyZWdhdGVzLCBmaWx0ZXIpCisgICAgeworICAgICAgICB2YXIg
cm9vdE5vZGVJbmRleCA9IHRoaXMuX3Jvb3ROb2RlSW5kZXg7CisgICAgICAgIHZhciBub2RlID0g
bmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlKHRoaXMsIHJvb3ROb2RlSW5kZXgpOwor
ICAgICAgICB2YXIgbGlzdCA9IFtyb290Tm9kZUluZGV4XTsKKyAgICAgICAgdmFyIHNpemVzID0g
Wy0xXTsKKyAgICAgICAgdmFyIGNsYXNzZXMgPSBbXTsKICAgICAgICAgdmFyIHNlZW5DbGFzc05h
bWVJbmRleGVzID0ge307Ci0gICAgICAgIHZhciBzbmFwc2hvdCA9IHRoaXM7Ci0gICAgICAgIGZ1
bmN0aW9uIGZvckRvbWluYXRlZE5vZGVzKG5vZGVJbmRleCkKLSAgICAgICAgewotICAgICAgICAg
ICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUoc25hcHNob3Qs
IG5vZGVJbmRleCk7CisgICAgICAgIHZhciBub2RlRmllbGRDb3VudCA9IHRoaXMuX25vZGVGaWVs
ZENvdW50OworICAgICAgICB2YXIgbm9kZVR5cGVPZmZzZXQgPSB0aGlzLl9ub2RlVHlwZU9mZnNl
dDsKKyAgICAgICAgdmFyIG5vZGVOYXRpdmVUeXBlID0gdGhpcy5fbm9kZU5hdGl2ZVR5cGU7Cisg
ICAgICAgIHZhciBkb21pbmF0ZWROb2RlcyA9IHRoaXMuX2RvbWluYXRlZE5vZGVzOworICAgICAg
ICB2YXIgb25seU5vZGVzID0gdGhpcy5fb25seU5vZGVzOworICAgICAgICB2YXIgZmlyc3REb21p
bmF0ZWROb2RlSW5kZXggPSB0aGlzLl9maXJzdERvbWluYXRlZE5vZGVJbmRleDsKKworICAgICAg
ICB3aGlsZSAobGlzdC5sZW5ndGgpIHsKKyAgICAgICAgICAgIHZhciBub2RlSW5kZXggPSBsaXN0
LnBvcCgpOworICAgICAgICAgICAgbm9kZS5ub2RlSW5kZXggPSBub2RlSW5kZXg7CiAgICAgICAg
ICAgICB2YXIgY2xhc3NJbmRleCA9IG5vZGUuY2xhc3NJbmRleDsKICAgICAgICAgICAgIHZhciBz
ZWVuID0gISFzZWVuQ2xhc3NOYW1lSW5kZXhlc1tjbGFzc0luZGV4XTsKLSAgICAgICAgICAgIGlm
ICghc2VlbiAmJiBjbGFzc0luZGV4IGluIGFnZ3JlZ2F0ZXMgJiYgIXNob3VsZFNraXAobm9kZSkp
IHsKKyAgICAgICAgICAgIHZhciBkb21pbmF0ZWRJbmRleEZyb20gPSBmaXJzdERvbWluYXRlZE5v
ZGVJbmRleFtub2RlSW5kZXggLyBub2RlRmllbGRDb3VudF07CisgICAgICAgICAgICB2YXIgZG9t
aW5hdGVkSW5kZXhUbyA9IGZpcnN0RG9taW5hdGVkTm9kZUluZGV4WzEgKyBub2RlSW5kZXggLyBu
b2RlRmllbGRDb3VudF07CisKKyAgICAgICAgICAgIGlmICghc2VlbiAmJgorICAgICAgICAgICAg
ICAgICghZmlsdGVyIHx8IGZpbHRlcihub2RlKSkgJiYKKyAgICAgICAgICAgICAgICAobm9kZS5z
ZWxmU2l6ZSB8fCBvbmx5Tm9kZXNbbm9kZUluZGV4ICsgbm9kZVR5cGVPZmZzZXRdID09PSBub2Rl
TmF0aXZlVHlwZSkKKyAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgIGFnZ3JlZ2F0
ZXNbY2xhc3NJbmRleF0ubWF4UmV0ICs9IG5vZGUucmV0YWluZWRTaXplOwotICAgICAgICAgICAg
ICAgIHNlZW5DbGFzc05hbWVJbmRleGVzW2NsYXNzSW5kZXhdID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBpZiAoZG9taW5hdGVkSW5kZXhGcm9tICE9PSBkb21pbmF0ZWRJbmRleFRvKSB7CisgICAg
ICAgICAgICAgICAgICAgIHNlZW5DbGFzc05hbWVJbmRleGVzW2NsYXNzSW5kZXhdID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgc2l6ZXMucHVzaChsaXN0Lmxlbmd0aCk7CisgICAgICAgICAg
ICAgICAgICAgIGNsYXNzZXMucHVzaChjbGFzc0luZGV4KTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKHZhciBpID0gZG9taW5hdGVkSW5kZXhGcm9t
OyBpIDwgZG9taW5hdGVkSW5kZXhUbzsgaSsrKQorICAgICAgICAgICAgICAgIGxpc3QucHVzaChk
b21pbmF0ZWROb2Rlc1tpXSk7CisKKyAgICAgICAgICAgIHZhciBsID0gbGlzdC5sZW5ndGg7Cisg
ICAgICAgICAgICB3aGlsZSAoc2l6ZXNbc2l6ZXMubGVuZ3RoIC0gMV0gPT09IGwpIHsKKyAgICAg
ICAgICAgICAgICBzaXplcy5wb3AoKTsKKyAgICAgICAgICAgICAgICBjbGFzc0luZGV4ID0gY2xh
c3Nlcy5wb3AoKTsKKyAgICAgICAgICAgICAgICBzZWVuQ2xhc3NOYW1lSW5kZXhlc1tjbGFzc0lu
ZGV4XSA9IGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFyIGRvbWluYXRlZE5v
ZGVzID0gc25hcHNob3QuX2RvbWluYXRlZE5vZGVzT2ZOb2RlKG5vZGUpOwotICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBkb21pbmF0ZWROb2Rlcy5sZW5ndGg7IGkrKykKLSAgICAgICAg
ICAgICAgICBmb3JEb21pbmF0ZWROb2Rlcyhkb21pbmF0ZWROb2Rlcy5pdGVtKGkpKTsKLSAgICAg
ICAgICAgIHNlZW5DbGFzc05hbWVJbmRleGVzW2NsYXNzSW5kZXhdID0gc2VlbjsKICAgICAgICAg
fQotICAgICAgICBmb3JEb21pbmF0ZWROb2Rlcyh0aGlzLl9yb290Tm9kZUluZGV4KTsKLQotICAg
ICAgICAvLyBTaGF2ZSBvZmYgcHJvdmlzaW9uYWxseSBhbGxvY2F0ZWQgc3BhY2UuCi0gICAgICAg
IGZvciAodmFyIGNsYXNzSW5kZXggaW4gYWdncmVnYXRlcykKLSAgICAgICAgICAgIGFnZ3JlZ2F0
ZXNbY2xhc3NJbmRleF0uaWR4cyA9IGFnZ3JlZ2F0ZXNbY2xhc3NJbmRleF0uaWR4cy5zbGljZSgw
KTsKLSAgICAgICAgcmV0dXJuIGFnZ3JlZ2F0ZXNCeUNsYXNzTmFtZTsKICAgICB9LAogCiAgICAg
X3NvcnRBZ2dyZWdhdGVJbmRleGVzOiBmdW5jdGlvbihhZ2dyZWdhdGVzKQpAQCAtMTIzNCwxMyAr
MTI3Miw2IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAgICAg
ICB9CiAgICAgfSwKIAotICAgIF9nZXREb21pbmF0ZWRJbmRleDogZnVuY3Rpb24obm9kZUluZGV4
KQotICAgIHsKLSAgICAgICAgaWYgKG5vZGVJbmRleCAlIHRoaXMuX25vZGVGaWVsZENvdW50KQot
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIG5vZGVJbmRleDogIiArIG5vZGVJ
bmRleCk7Ci0gICAgICAgIHJldHVybiB0aGlzLl9maXJzdERvbWluYXRlZE5vZGVJbmRleFtub2Rl
SW5kZXggLyB0aGlzLl9ub2RlRmllbGRDb3VudF07Ci0gICAgfSwKLQogICAgIF9tYXJrSW52aXNp
YmxlRWRnZXM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIC8vIE1hcmsgaGlkZGVuIGVkZ2Vz
IG9mIGdsb2JhbCBvYmplY3RzIGFzIGludmlzaWJsZS4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTc0YTE5
OGE3YWQ2YmJjNmIzN2NkOWU1MTUyNDgwOWFiYjgxYWZlOS4uOGJkZGNkZjY0NzdkNGQzNTYxNjYy
ZDBiMmUyYjc5MzA5NmQ2YzcxOCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
Mi0wNC0wNCAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgV2ViIEluc3BlY3RvcjogbGluZWFyaXNlIGFnZ3JlZ2F0ZSdzIHJldGFpbmluZyBzaXplIGNh
bGN1bGF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODMxMjUKKworICAgICAgICBUaGlzIHZlcnNpb24gaXMgdHdpY2UgYXMgZmFzdCBhcyB0aGUg
b3JpZ2luYWwgYW5kIGl0IGlzIG5vbi1yZWN1cnNpdmUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGV0YWlsZWQtaGVhcHNob3Rz
LXNtb2tlLXRlc3QuaHRtbDoKKwogMjAxMi0wMy0zMCAgRGF2aWQgQmFyciAgPGRhdmlkYmFyckBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3BsaXQgdXAgdG9wLWxldmVsIC5naXRpZ25vcmUgYW5k
IC5naXRhdHRyaWJ1dGVzCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9k
ZXRhaWxlZC1oZWFwc2hvdHMtc21va2UtdGVzdC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9pbnNw
ZWN0b3IvZGV0YWlsZWQtaGVhcHNob3RzLXNtb2tlLXRlc3QuaHRtbAppbmRleCA0ZTdmN2EzYTE4
OWFhNzU0NWVkZWUwZGM4MWE1MTQ0YjE1MDI2ZjFhLi5mYWU0ODU0NmVhMjE2ZmViY2I4NzMyNjk2
YjE0N2Y1ODVkODc3MTFjIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9k
ZXRhaWxlZC1oZWFwc2hvdHMtc21va2UtdGVzdC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
aW5zcGVjdG9yL2RldGFpbGVkLWhlYXBzaG90cy1zbW9rZS10ZXN0Lmh0bWwKQEAgLTI0LDYgKzI0
LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVG
dW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9idWlsZERvbWlu
YXRlZE5vZGVzIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9jYWxjdWxhdGVGbGFncyIpOwog
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdC5wcm90b3R5cGUsICJfYnVpbGRBZ2dyZWdhdGVzIik7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnBy
b3RvdHlwZSwgIl9jYWxjdWxhdGVDbGFzc2VzUmV0YWluZWRTaXplIik7CiAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnBy
b3RvdHlwZSwgIl9jYWxjdWxhdGVPYmplY3RUb1dpbmRvd0Rpc3RhbmNlIik7CiAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVGdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
LnByb3RvdHlwZSwgIl9tYXJrRGV0YWNoZWRET01UcmVlTm9kZXMiKTsKICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJv
dG90eXBlLCAiX21hcmtRdWVyaWFibGVIZWFwT2JqZWN0cyIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135588</attachid>
            <date>2012-04-04 07:55:21 -0700</date>
            <delta_ts>2012-04-04 08:34:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83125-20120404185519.patch</filename>
            <type>text/plain</type>
            <size>11803</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDVkYmExNmYxZjIyOWI1
YmM1ODEyNzNkYmQwZGU0ZjZhM2I1ZWZiYi4uZTdmYmM0MGU0MzhkZjRkYTI1ZTY5MWZlODA0ZWE4
ODQ4OTk1MTNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA0LTA0ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBsaW5lYXJpc2UgYWdncmVnYXRlJ3MgcmV0YWluaW5nIHNpemUgY2FsY3VsYXRpb24uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzEyNQorCisg
ICAgICAgIFRoaXMgdmVyc2lvbiBpcyB0d2ljZSBhcyBmYXN0IGFzIHRoZSBvcmlnaW5hbCBhbmQg
aXQgaXMgbm9uLXJlY3Vyc2l2ZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX2dldERvbWluYXRlZElu
ZGV4KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLmFnZ3Jl
Z2F0ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX2J1
aWxkQWdncmVnYXRlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3Rv
dHlwZS5fY2FsY3VsYXRlQ2xhc3Nlc1JldGFpbmVkU2l6ZSk6CisKIDIwMTItMDQtMDQgIEFsbGFu
IFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CiAKICAgICAgICAgQmVz
dCB6b29tYWJsZSBhcmVhIGRvZXMgbm90IGJhbGFuY2UgaW50ZXJzZWN0aW9uIHdpdGggdGFyZ2V0
IGFyZWEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hl
YXBTbmFwc2hvdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNu
YXBzaG90LmpzCmluZGV4IGU3YTEyMTM1Yjk3NDA5MWNiNjg2NTc1ZWRiODdlNmRiN2Q2OWFkOTQu
LjQwZWNjYjBlODc0OTc2ODk5ZGVjZjVkNTc1NGRmODFlZDcwNTZlYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCkBAIC0xMDEw
LDYgKzEwMTAsMTMgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHJldHVybiB0aGlzLnJvb3ROb2RlLnJldGFpbmVkU2l6ZTsKICAgICB9LAogCisgICAg
X2dldERvbWluYXRlZEluZGV4OiBmdW5jdGlvbihub2RlSW5kZXgpCisgICAgeworICAgICAgICBp
ZiAobm9kZUluZGV4ICUgdGhpcy5fbm9kZUZpZWxkQ291bnQpCisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkludmFsaWQgbm9kZUluZGV4OiAiICsgbm9kZUluZGV4KTsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2ZpcnN0RG9taW5hdGVkTm9kZUluZGV4W25vZGVJbmRleCAvIHRoaXMuX25vZGVG
aWVsZENvdW50XTsKKyAgICB9LAorCiAgICAgX2RvbWluYXRlZE5vZGVzT2ZOb2RlOiBmdW5jdGlv
bihub2RlKQogICAgIHsKICAgICAgICAgdmFyIGRvbWluYXRlZEluZGV4RnJvbSA9IHRoaXMuX2dl
dERvbWluYXRlZEluZGV4KG5vZGUubm9kZUluZGV4KTsKQEAgLTEwMjksMjggKzEwMzYsMzAgQEAg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlz
Ll9hZ2dyZWdhdGVzU29ydGVkRmxhZ3MgPSB7fTsKICAgICAgICAgfQogCi0gICAgICAgIHZhciBh
Z2dyZWdhdGVzID0gdGhpcy5fYWdncmVnYXRlc1trZXldOwotICAgICAgICBpZiAoYWdncmVnYXRl
cykgeworICAgICAgICB2YXIgYWdncmVnYXRlc0J5Q2xhc3NOYW1lID0gdGhpcy5fYWdncmVnYXRl
c1trZXldOworICAgICAgICBpZiAoYWdncmVnYXRlc0J5Q2xhc3NOYW1lKSB7CiAgICAgICAgICAg
ICBpZiAoc29ydGVkSW5kZXhlcyAmJiAhdGhpcy5fYWdncmVnYXRlc1NvcnRlZEZsYWdzW2tleV0p
IHsKLSAgICAgICAgICAgICAgICB0aGlzLl9zb3J0QWdncmVnYXRlSW5kZXhlcyhhZ2dyZWdhdGVz
KTsKKyAgICAgICAgICAgICAgICB0aGlzLl9zb3J0QWdncmVnYXRlSW5kZXhlcyhhZ2dyZWdhdGVz
QnlDbGFzc05hbWUpOwogICAgICAgICAgICAgICAgIHRoaXMuX2FnZ3JlZ2F0ZXNTb3J0ZWRGbGFn
c1trZXldID0gc29ydGVkSW5kZXhlczsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVy
biBhZ2dyZWdhdGVzOworICAgICAgICAgICAgcmV0dXJuIGFnZ3JlZ2F0ZXNCeUNsYXNzTmFtZTsK
ICAgICAgICAgfQogCiAgICAgICAgIHZhciBmaWx0ZXI7CiAgICAgICAgIGlmIChmaWx0ZXJTdHJp
bmcpCiAgICAgICAgICAgICBmaWx0ZXIgPSB0aGlzLl9wYXJzZUZpbHRlcihmaWx0ZXJTdHJpbmcp
OwogCi0gICAgICAgIGFnZ3JlZ2F0ZXMgPSB0aGlzLl9idWlsZEFnZ3JlZ2F0ZXMoZmlsdGVyKTsK
KyAgICAgICAgdmFyIGFnZ3JlZ2F0ZXMgPSB0aGlzLl9idWlsZEFnZ3JlZ2F0ZXMoZmlsdGVyKTsK
KyAgICAgICAgdGhpcy5fY2FsY3VsYXRlQ2xhc3Nlc1JldGFpbmVkU2l6ZShhZ2dyZWdhdGVzLmFn
Z3JlZ2F0ZXNCeUNsYXNzSW5kZXgsIGZpbHRlcik7CisgICAgICAgIGFnZ3JlZ2F0ZXNCeUNsYXNz
TmFtZSA9IGFnZ3JlZ2F0ZXMuYWdncmVnYXRlc0J5Q2xhc3NOYW1lOwogCiAgICAgICAgIGlmIChz
b3J0ZWRJbmRleGVzKQotICAgICAgICAgICAgdGhpcy5fc29ydEFnZ3JlZ2F0ZUluZGV4ZXMoYWdn
cmVnYXRlcyk7CisgICAgICAgICAgICB0aGlzLl9zb3J0QWdncmVnYXRlSW5kZXhlcyhhZ2dyZWdh
dGVzQnlDbGFzc05hbWUpOwogCiAgICAgICAgIHRoaXMuX2FnZ3JlZ2F0ZXNTb3J0ZWRGbGFnc1tr
ZXldID0gc29ydGVkSW5kZXhlczsKLSAgICAgICAgdGhpcy5fYWdncmVnYXRlc1trZXldID0gYWdn
cmVnYXRlczsKKyAgICAgICAgdGhpcy5fYWdncmVnYXRlc1trZXldID0gYWdncmVnYXRlc0J5Q2xh
c3NOYW1lOwogCi0gICAgICAgIHJldHVybiBhZ2dyZWdhdGVzOworICAgICAgICByZXR1cm4gYWdn
cmVnYXRlc0J5Q2xhc3NOYW1lOwogICAgIH0sCiAKICAgICBfY2FsY3VsYXRlT2JqZWN0VG9XaW5k
b3dEaXN0YW5jZTogZnVuY3Rpb24oKQpAQCAtMTExNSwxOSArMTEyNCwyMyBAQCBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKIAogICAgIF9idWlsZEFnZ3JlZ2F0ZXM6IGZ1
bmN0aW9uKGZpbHRlcikKICAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIHNob3VsZFNraXAobm9kZSkK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKGZpbHRlciAmJiAhZmlsdGVyKG5vZGUpKQotICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgaWYgKCFub2RlLnNlbGZTaXpl
ICYmICFub2RlLmlzTmF0aXZlKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KICAgICAgICAgdmFyIGFnZ3JlZ2F0ZXMg
PSB7fTsKICAgICAgICAgdmFyIGFnZ3JlZ2F0ZXNCeUNsYXNzTmFtZSA9IHt9OwotICAgICAgICBm
b3IgKHZhciBub2RlID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlKHRoaXMsIHRo
aXMuX3Jvb3ROb2RlSW5kZXgpOyBub2RlLm5vZGVJbmRleCA8IHRoaXMuX29ubHlOb2Rlcy5sZW5n
dGg7IG5vZGUubm9kZUluZGV4ID0gbm9kZS5fbmV4dE5vZGVJbmRleCkgewotICAgICAgICAgICAg
aWYgKHNob3VsZFNraXAobm9kZSkpCisgICAgICAgIHZhciBvbmx5Tm9kZXMgPSB0aGlzLl9vbmx5
Tm9kZXM7CisgICAgICAgIHZhciBvbmx5Tm9kZXNMZW5ndGggPSBvbmx5Tm9kZXMubGVuZ3RoOwor
ICAgICAgICB2YXIgbm9kZU5hdGl2ZVR5cGUgPSB0aGlzLl9ub2RlTmF0aXZlVHlwZTsKKyAgICAg
ICAgdmFyIG5vZGVGaWVsZHNDb3VudCA9IHRoaXMuX25vZGVGaWVsZENvdW50OworICAgICAgICB2
YXIgc2VsZlNpemVPZmZzZXQgPSB0aGlzLl9ub2RlU2VsZlNpemVPZmZzZXQ7CisgICAgICAgIHZh
ciBub2RlVHlwZU9mZnNldCA9IHRoaXMuX25vZGVUeXBlT2Zmc2V0OworICAgICAgICB2YXIgbm9k
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZSh0aGlzLCB0aGlzLl9yb290Tm9k
ZUluZGV4KTsKKyAgICAgICAgdmFyIGRpc3RhbmNlc1RvV2luZG93ID0gdGhpcy5fZGlzdGFuY2Vz
VG9XaW5kb3c7CisKKyAgICAgICAgZm9yICh2YXIgbm9kZUluZGV4ID0gdGhpcy5fcm9vdE5vZGVJ
bmRleDsgbm9kZUluZGV4IDwgb25seU5vZGVzTGVuZ3RoOyBub2RlSW5kZXggKz0gbm9kZUZpZWxk
c0NvdW50KSB7CisgICAgICAgICAgICBub2RlLm5vZGVJbmRleCA9IG5vZGVJbmRleDsKKyAgICAg
ICAgICAgIHZhciBzZWxmU2l6ZSA9IG9ubHlOb2Rlc1tub2RlSW5kZXggKyBzZWxmU2l6ZU9mZnNl
dF07CisgICAgICAgICAgICBpZiAoZmlsdGVyICYmICFmaWx0ZXIobm9kZSkpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoIXNlbGZTaXplICYmIG9ubHlOb2Rlc1tu
b2RlSW5kZXggKyBub2RlVHlwZU9mZnNldF0gIT09IG5vZGVOYXRpdmVUeXBlKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgdmFyIGNsYXNzSW5kZXggPSBub2RlLmNsYXNz
SW5kZXg7CiAgICAgICAgICAgICBpZiAoIShjbGFzc0luZGV4IGluIGFnZ3JlZ2F0ZXMpKSB7CkBA
IC0xMTM1LDQ5ICsxMTQ4LDc1IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgICAgIHZhciBuYW1lTWF0dGVycyA9IG5vZGVUeXBlID09PSAib2Jq
ZWN0IiB8fCBub2RlVHlwZSA9PT0gIm5hdGl2ZSI7CiAgICAgICAgICAgICAgICAgdmFyIHZhbHVl
ID0gewogICAgICAgICAgICAgICAgICAgICBjb3VudDogMSwKLSAgICAgICAgICAgICAgICAgICAg
ZGlzdGFuY2VUb1dpbmRvdzogbm9kZS5kaXN0YW5jZVRvV2luZG93LAotICAgICAgICAgICAgICAg
ICAgICBzZWxmOiBub2RlLnNlbGZTaXplLAorICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZVRv
V2luZG93OiBkaXN0YW5jZXNUb1dpbmRvd1tub2RlSW5kZXhdLAorICAgICAgICAgICAgICAgICAg
ICBzZWxmOiBzZWxmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgbWF4UmV0OiAwLAogICAgICAg
ICAgICAgICAgICAgICB0eXBlOiBub2RlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgbmFtZTog
bmFtZU1hdHRlcnMgPyBub2RlLm5hbWUgOiBudWxsLAotICAgICAgICAgICAgICAgICAgICBpZHhz
OiBbbm9kZS5ub2RlSW5kZXhdCisgICAgICAgICAgICAgICAgICAgIGlkeHM6IFtub2RlSW5kZXhd
CiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICBhZ2dyZWdhdGVzW2NsYXNzSW5k
ZXhdID0gdmFsdWU7CiAgICAgICAgICAgICAgICAgYWdncmVnYXRlc0J5Q2xhc3NOYW1lW25vZGUu
Y2xhc3NOYW1lXSA9IHZhbHVlOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICB2YXIgY2xzcyA9IGFnZ3JlZ2F0ZXNbY2xhc3NJbmRleF07Ci0gICAgICAgICAgICAgICAgY2xz
cy5kaXN0YW5jZVRvV2luZG93ID0gTWF0aC5taW4oY2xzcy5kaXN0YW5jZVRvV2luZG93LCBub2Rl
LmRpc3RhbmNlVG9XaW5kb3cpOworICAgICAgICAgICAgICAgIGNsc3MuZGlzdGFuY2VUb1dpbmRv
dyA9IE1hdGgubWluKGNsc3MuZGlzdGFuY2VUb1dpbmRvdywgZGlzdGFuY2VzVG9XaW5kb3dbbm9k
ZUluZGV4XSk7CiAgICAgICAgICAgICAgICAgKytjbHNzLmNvdW50OwotICAgICAgICAgICAgICAg
IGNsc3Muc2VsZiArPSBub2RlLnNlbGZTaXplOwotICAgICAgICAgICAgICAgIGNsc3MuaWR4cy5w
dXNoKG5vZGUubm9kZUluZGV4KTsKKyAgICAgICAgICAgICAgICBjbHNzLnNlbGYgKz0gc2VsZlNp
emU7CisgICAgICAgICAgICAgICAgY2xzcy5pZHhzLnB1c2gobm9kZUluZGV4KTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IHZpc2l0IGRvbWluYXRv
cnMgdHJlZSBhbmQgc3VtIHVwIHJldGFpbmVkIHNpemVzCi0gICAgICAgIC8vIG9mIHRvcG1vc3Qg
b2JqZWN0cyBpbiBlYWNoIGNsYXNzLgotICAgICAgICAvLyBUaGlzIGdpdmVzIHVzIHJldGFpbmVk
IHNpemVzIGZvciBjbGFzc2VzLgorICAgICAgICAvLyBTaGF2ZSBvZmYgcHJvdmlzaW9uYWxseSBh
bGxvY2F0ZWQgc3BhY2UuCisgICAgICAgIGZvciAodmFyIGNsYXNzSW5kZXggaW4gYWdncmVnYXRl
cykKKyAgICAgICAgICAgIGFnZ3JlZ2F0ZXNbY2xhc3NJbmRleF0uaWR4cyA9IGFnZ3JlZ2F0ZXNb
Y2xhc3NJbmRleF0uaWR4cy5zbGljZSgwKTsKKyAgICAgICAgcmV0dXJuIHthZ2dyZWdhdGVzQnlD
bGFzc05hbWU6IGFnZ3JlZ2F0ZXNCeUNsYXNzTmFtZSwgYWdncmVnYXRlc0J5Q2xhc3NJbmRleDog
YWdncmVnYXRlc307CisgICAgfSwKKworICAgIF9jYWxjdWxhdGVDbGFzc2VzUmV0YWluZWRTaXpl
OiBmdW5jdGlvbihhZ2dyZWdhdGVzLCBmaWx0ZXIpCisgICAgeworICAgICAgICB2YXIgcm9vdE5v
ZGVJbmRleCA9IHRoaXMuX3Jvb3ROb2RlSW5kZXg7CisgICAgICAgIHZhciBub2RlID0gbmV3IFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlKHRoaXMsIHJvb3ROb2RlSW5kZXgpOworICAgICAg
ICB2YXIgbGlzdCA9IFtyb290Tm9kZUluZGV4XTsKKyAgICAgICAgdmFyIHNpemVzID0gWy0xXTsK
KyAgICAgICAgdmFyIGNsYXNzZXMgPSBbXTsKICAgICAgICAgdmFyIHNlZW5DbGFzc05hbWVJbmRl
eGVzID0ge307Ci0gICAgICAgIHZhciBzbmFwc2hvdCA9IHRoaXM7Ci0gICAgICAgIGZ1bmN0aW9u
IGZvckRvbWluYXRlZE5vZGVzKG5vZGVJbmRleCkKLSAgICAgICAgewotICAgICAgICAgICAgdmFy
IG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUoc25hcHNob3QsIG5vZGVJ
bmRleCk7CisgICAgICAgIHZhciBub2RlRmllbGRDb3VudCA9IHRoaXMuX25vZGVGaWVsZENvdW50
OworICAgICAgICB2YXIgbm9kZVR5cGVPZmZzZXQgPSB0aGlzLl9ub2RlVHlwZU9mZnNldDsKKyAg
ICAgICAgdmFyIG5vZGVOYXRpdmVUeXBlID0gdGhpcy5fbm9kZU5hdGl2ZVR5cGU7CisgICAgICAg
IHZhciBkb21pbmF0ZWROb2RlcyA9IHRoaXMuX2RvbWluYXRlZE5vZGVzOworICAgICAgICB2YXIg
b25seU5vZGVzID0gdGhpcy5fb25seU5vZGVzOworICAgICAgICB2YXIgZmlyc3REb21pbmF0ZWRO
b2RlSW5kZXggPSB0aGlzLl9maXJzdERvbWluYXRlZE5vZGVJbmRleDsKKworICAgICAgICB3aGls
ZSAobGlzdC5sZW5ndGgpIHsKKyAgICAgICAgICAgIHZhciBub2RlSW5kZXggPSBsaXN0LnBvcCgp
OworICAgICAgICAgICAgbm9kZS5ub2RlSW5kZXggPSBub2RlSW5kZXg7CiAgICAgICAgICAgICB2
YXIgY2xhc3NJbmRleCA9IG5vZGUuY2xhc3NJbmRleDsKICAgICAgICAgICAgIHZhciBzZWVuID0g
ISFzZWVuQ2xhc3NOYW1lSW5kZXhlc1tjbGFzc0luZGV4XTsKLSAgICAgICAgICAgIGlmICghc2Vl
biAmJiBjbGFzc0luZGV4IGluIGFnZ3JlZ2F0ZXMgJiYgIXNob3VsZFNraXAobm9kZSkpIHsKKyAg
ICAgICAgICAgIHZhciBub2RlT3JkaW5hbCA9IG5vZGVJbmRleCAvIG5vZGVGaWVsZENvdW50Owor
ICAgICAgICAgICAgdmFyIGRvbWluYXRlZEluZGV4RnJvbSA9IGZpcnN0RG9taW5hdGVkTm9kZUlu
ZGV4W25vZGVPcmRpbmFsXTsKKyAgICAgICAgICAgIHZhciBkb21pbmF0ZWRJbmRleFRvID0gZmly
c3REb21pbmF0ZWROb2RlSW5kZXhbbm9kZU9yZGluYWwgKyAxXTsKKworICAgICAgICAgICAgaWYg
KCFzZWVuICYmCisgICAgICAgICAgICAgICAgKCFmaWx0ZXIgfHwgZmlsdGVyKG5vZGUpKSAmJgor
ICAgICAgICAgICAgICAgIChub2RlLnNlbGZTaXplIHx8IG9ubHlOb2Rlc1tub2RlSW5kZXggKyBu
b2RlVHlwZU9mZnNldF0gPT09IG5vZGVOYXRpdmVUeXBlKQorICAgICAgICAgICAgICAgKSB7CiAg
ICAgICAgICAgICAgICAgYWdncmVnYXRlc1tjbGFzc0luZGV4XS5tYXhSZXQgKz0gbm9kZS5yZXRh
aW5lZFNpemU7Ci0gICAgICAgICAgICAgICAgc2VlbkNsYXNzTmFtZUluZGV4ZXNbY2xhc3NJbmRl
eF0gPSB0cnVlOworICAgICAgICAgICAgICAgIGlmIChkb21pbmF0ZWRJbmRleEZyb20gIT09IGRv
bWluYXRlZEluZGV4VG8pIHsKKyAgICAgICAgICAgICAgICAgICAgc2VlbkNsYXNzTmFtZUluZGV4
ZXNbY2xhc3NJbmRleF0gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBzaXplcy5wdXNoKGxp
c3QubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKGNsYXNzSW5kZXgp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAodmFy
IGkgPSBkb21pbmF0ZWRJbmRleEZyb207IGkgPCBkb21pbmF0ZWRJbmRleFRvOyBpKyspCisgICAg
ICAgICAgICAgICAgbGlzdC5wdXNoKGRvbWluYXRlZE5vZGVzW2ldKTsKKworICAgICAgICAgICAg
dmFyIGwgPSBsaXN0Lmxlbmd0aDsKKyAgICAgICAgICAgIHdoaWxlIChzaXplc1tzaXplcy5sZW5n
dGggLSAxXSA9PT0gbCkgeworICAgICAgICAgICAgICAgIHNpemVzLnBvcCgpOworICAgICAgICAg
ICAgICAgIGNsYXNzSW5kZXggPSBjbGFzc2VzLnBvcCgpOworICAgICAgICAgICAgICAgIHNlZW5D
bGFzc05hbWVJbmRleGVzW2NsYXNzSW5kZXhdID0gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB2YXIgZG9taW5hdGVkTm9kZXMgPSBzbmFwc2hvdC5fZG9taW5hdGVkTm9kZXNPZk5v
ZGUobm9kZSk7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRvbWluYXRlZE5vZGVz
Lmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgICAgIGZvckRvbWluYXRlZE5vZGVzKGRvbWluYXRl
ZE5vZGVzLml0ZW0oaSkpOwotICAgICAgICAgICAgc2VlbkNsYXNzTmFtZUluZGV4ZXNbY2xhc3NJ
bmRleF0gPSBzZWVuOwogICAgICAgICB9Ci0gICAgICAgIGZvckRvbWluYXRlZE5vZGVzKHRoaXMu
X3Jvb3ROb2RlSW5kZXgpOwotCi0gICAgICAgIC8vIFNoYXZlIG9mZiBwcm92aXNpb25hbGx5IGFs
bG9jYXRlZCBzcGFjZS4KLSAgICAgICAgZm9yICh2YXIgY2xhc3NJbmRleCBpbiBhZ2dyZWdhdGVz
KQotICAgICAgICAgICAgYWdncmVnYXRlc1tjbGFzc0luZGV4XS5pZHhzID0gYWdncmVnYXRlc1tj
bGFzc0luZGV4XS5pZHhzLnNsaWNlKDApOwotICAgICAgICByZXR1cm4gYWdncmVnYXRlc0J5Q2xh
c3NOYW1lOwogICAgIH0sCiAKICAgICBfc29ydEFnZ3JlZ2F0ZUluZGV4ZXM6IGZ1bmN0aW9uKGFn
Z3JlZ2F0ZXMpCkBAIC0xMjM0LDEzICsxMjczLDYgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgX2dldERvbWluYXRlZElu
ZGV4OiBmdW5jdGlvbihub2RlSW5kZXgpCi0gICAgewotICAgICAgICBpZiAobm9kZUluZGV4ICUg
dGhpcy5fbm9kZUZpZWxkQ291bnQpCi0gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkludmFs
aWQgbm9kZUluZGV4OiAiICsgbm9kZUluZGV4KTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2ZpcnN0
RG9taW5hdGVkTm9kZUluZGV4W25vZGVJbmRleCAvIHRoaXMuX25vZGVGaWVsZENvdW50XTsKLSAg
ICB9LAotCiAgICAgX21hcmtJbnZpc2libGVFZGdlczogZnVuY3Rpb24oKQogICAgIHsKICAgICAg
ICAgLy8gTWFyayBoaWRkZW4gZWRnZXMgb2YgZ2xvYmFsIG9iamVjdHMgYXMgaW52aXNpYmxlLgpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwppbmRleCBhNzRhMTk4YTdhZDZiYmM2YjM3Y2Q5ZTUxNTI0ODA5YWJiODFhZmU5
Li44YmRkY2RmNjQ3N2Q0ZDM1NjE2NjJkMGIyZTJiNzkzMDk2ZDZjNzE4IDEwMDY0NAotLS0gYS9Q
ZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA0LTA0ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xv
QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBsaW5lYXJpc2UgYWdncmVn
YXRlJ3MgcmV0YWluaW5nIHNpemUgY2FsY3VsYXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzEyNQorCisgICAgICAgIFRoaXMgdmVyc2lvbiBp
cyB0d2ljZSBhcyBmYXN0IGFzIHRoZSBvcmlnaW5hbCBhbmQgaXQgaXMgbm9uLXJlY3Vyc2l2ZS4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9kZXRhaWxlZC1oZWFwc2hvdHMtc21va2UtdGVzdC5odG1sOgorCiAyMDEyLTAzLTMwICBE
YXZpZCBCYXJyICA8ZGF2aWRiYXJyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBTcGxpdCB1cCB0
b3AtbGV2ZWwgLmdpdGlnbm9yZSBhbmQgLmdpdGF0dHJpYnV0ZXMKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvaW5zcGVjdG9yL2RldGFpbGVkLWhlYXBzaG90cy1zbW9rZS10ZXN0Lmh0bWwg
Yi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9kZXRhaWxlZC1oZWFwc2hvdHMtc21va2UtdGVz
dC5odG1sCmluZGV4IDRlN2Y3YTNhMTg5YWE3NTQ1ZWRlZTBkYzgxYTUxNDRiMTUwMjZmMWEuLmZh
ZTQ4NTQ2ZWEyMTZmZWJjYjg3MzI2OTZiMTQ3ZjU4NWQ4NzcxMWMgMTAwNjQ0Ci0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvaW5zcGVjdG9yL2RldGFpbGVkLWhlYXBzaG90cy1zbW9rZS10ZXN0Lmh0bWwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvZGV0YWlsZWQtaGVhcHNob3RzLXNtb2tl
LXRlc3QuaHRtbApAQCAtMjQsNiArMjQsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Qu
cHJvdG90eXBlLCAiX2J1aWxkRG9taW5hdGVkTm9kZXMiKTsKICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBl
LCAiX2NhbGN1bGF0ZUZsYWdzIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm1lYXN1cmVG
dW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSwgIl9idWlsZEFnZ3Jl
Z2F0ZXMiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2NhbGN1bGF0ZUNsYXNzZXNSZXRhaW5l
ZFNpemUiKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAiX2NhbGN1bGF0ZU9iamVjdFRvV2luZG93
RGlzdGFuY2UiKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubWVhc3VyZUZ1bmN0aW9uKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLCAiX21hcmtEZXRhY2hlZERPTVRyZWVO
b2RlcyIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5tZWFzdXJlRnVuY3Rpb24oV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUsICJfbWFya1F1ZXJpYWJsZUhlYXBPYmplY3Rz
Iik7Cg==
</data>
<flag name="review"
          id="140146"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>