<?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>87286</bug_id>
          
          <creation_ts>2012-05-23 11:00:03 -0700</creation_ts>
          <short_desc>Web Inspector: Speed up edges iteration in heap profiler</short_desc>
          <delta_ts>2012-05-25 10:40:28 -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="Alexei Filippov">alph</reporter>
          <assigned_to name="Alexei Filippov">alph</assigned_to>
          <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>631808</commentid>
    <comment_count>0</comment_count>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-05-23 11:00:03 -0700</bug_when>
    <thetext>Add an extra node to nodes array that points to the end of edges array.
It allows to eliminate a check for the last node in iteration code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631858</commentid>
    <comment_count>1</comment_count>
      <attachid>143604</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-05-23 11:43:31 -0700</bug_when>
    <thetext>Created attachment 143604
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632939</commentid>
    <comment_count>2</comment_count>
      <attachid>143604</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-24 10:47:15 -0700</bug_when>
    <thetext>Comment on attachment 143604
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Web Inspector: Speed up edges iteration in heap profiler

Does it have any noticeable impact on the performance? Please attach measurement results for the heap profiler perf test.

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:724
&gt; +        this._nodesLength = this._nodes.length;

_nodesLength name is confusing because _nodes.length is actually different, you can use this.nodeCount * this._nodeFieldCount for nodesLength where necessary or pick a better name that would reflect the difference with this._nodes.length</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632957</commentid>
    <comment_count>3</comment_count>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-05-24 11:08:01 -0700</bug_when>
    <thetext>Before:

RESULT heap-snapshot: take-snapshot= 2169 ms
RESULT heap-snapshot: transfer-snapshot= 1719 ms
RESULT heap-snapshot: _buildRetainers= 448 ms
RESULT heap-snapshot: _markDetachedDOMTreeNodes= 2 ms
RESULT heap-snapshot: _markQueriableHeapObjects= 32 ms
RESULT heap-snapshot: _markPageOwnedNodes= 43 ms
RESULT heap-snapshot: _calculateFlags= 80 ms
RESULT heap-snapshot: _calculateObjectToWindowDistance= 144 ms
RESULT heap-snapshot: _buildPostOrderIndex= 73 ms
RESULT heap-snapshot: _buildDominatorTree= 364 ms
RESULT heap-snapshot: _calculateRetainedSizes= 83 ms
RESULT heap-snapshot: _buildDominatedNodes= 17 ms
RESULT heap-snapshot: show-snapshot= 2259 ms
RESULT heap-snapshot: _buildAggregates= 631 ms
RESULT heap-snapshot: _calculateClassesRetainedSize= 719 ms
RESULT heap-snapshot: switch-to-containment-view= 1470 ms
RESULT heap-snapshot: full-summary-snapshot-time= 7620 ms
RESULT heap-snapshot: clear-snapshot= 58 ms
RESULT heap-delta: heap-snapshot= 139 kB

After:

RESULT heap-snapshot: take-snapshot= 2139 ms
RESULT heap-snapshot: transfer-snapshot= 1721 ms
RESULT heap-snapshot: _buildRetainers= 86 ms
RESULT heap-snapshot: _markDetachedDOMTreeNodes= 2 ms
RESULT heap-snapshot: _markQueriableHeapObjects= 33 ms
RESULT heap-snapshot: _markPageOwnedNodes= 44 ms
RESULT heap-snapshot: _calculateFlags= 83 ms
RESULT heap-snapshot: _calculateObjectToWindowDistance= 163 ms
RESULT heap-snapshot: _buildPostOrderIndex= 78 ms
RESULT heap-snapshot: _buildDominatorTree= 401 ms
RESULT heap-snapshot: _calculateRetainedSizes= 83 ms
RESULT heap-snapshot: _buildDominatedNodes= 17 ms
RESULT heap-snapshot: show-snapshot= 2077 ms
RESULT heap-snapshot: _buildAggregates= 615 ms
RESULT heap-snapshot: _calculateClassesRetainedSize= 719 ms
RESULT heap-snapshot: switch-to-containment-view= 1443 ms
RESULT heap-snapshot: full-summary-snapshot-time= 7382 ms
RESULT heap-snapshot: clear-snapshot= 69 ms
RESULT heap-delta: heap-snapshot= 142 kB</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632970</commentid>
    <comment_count>4</comment_count>
      <attachid>143855</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-05-24 11:14:57 -0700</bug_when>
    <thetext>Created attachment 143855
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633660</commentid>
    <comment_count>5</comment_count>
      <attachid>143855</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-25 00:56:42 -0700</bug_when>
    <thetext>Comment on attachment 143855
Patch

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

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:724
&gt; +        this._realNodesLength = this._nodes.length;

I&apos;d call it just _nodesLength

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:730
&gt; +        this._nodes = new Uint32Array(this._realNodesLength + this._nodeFieldCount);

Actually _nodes array has extra elements that were stripped in WebInspector.Uint32Array.array getter.
Thus we can avoid additional array reallocation here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633698</commentid>
    <comment_count>6</comment_count>
      <attachid>143855</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-25 01:34:58 -0700</bug_when>
    <thetext>Comment on attachment 143855
Patch

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

&gt;&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:730
&gt;&gt; +        this._nodes = new Uint32Array(this._realNodesLength + this._nodeFieldCount);
&gt; 
&gt; Actually _nodes array has extra elements that were stripped in WebInspector.Uint32Array.array getter.
&gt; Thus we can avoid additional array reallocation here.

Can we pass an array with nodeLength + nodeFieldCount elements so that we don&apos;t need to allocate new array?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633812</commentid>
    <comment_count>7</comment_count>
      <attachid>143855</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-05-25 04:07:43 -0700</bug_when>
    <thetext>Comment on attachment 143855
Patch

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

&gt;&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:724
&gt;&gt; +        this._realNodesLength = this._nodes.length;
&gt; 
&gt; I&apos;d call it just _nodesLength

I&apos;d too, but Yury asked to rename it.

&gt;&gt;&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:730
&gt;&gt;&gt; +        this._nodes = new Uint32Array(this._realNodesLength + this._nodeFieldCount);
&gt;&gt; 
&gt;&gt; Actually _nodes array has extra elements that were stripped in WebInspector.Uint32Array.array getter.
&gt;&gt; Thus we can avoid additional array reallocation here.
&gt; 
&gt; Can we pass an array with nodeLength + nodeFieldCount elements so that we don&apos;t need to allocate new array?

@Ilya actually it does not, because the exact number of nodes is allocated in HeapSnapshotLoader.
@Yury That was my initial implementation, but I didn&apos;t like it because in this case the logic has to go into the HeapSnapshotLoader.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633925</commentid>
    <comment_count>8</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-25 07:57:08 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; @Yury That was my initial implementation, but I didn&apos;t like it because in this case the logic has to go into the HeapSnapshotLoader.

Do you have numbers of what it costs us?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633956</commentid>
    <comment_count>9</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-25 08:33:06 -0700</bug_when>
    <thetext>Committed r118528: &lt;http://trac.webkit.org/changeset/118528&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634050</commentid>
    <comment_count>10</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-25 10:40:28 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; @Yury That was my initial implementation, but I didn&apos;t like it because in this case the logic has to go into the HeapSnapshotLoader.
&gt; 
&gt; Do you have numbers of what it costs us?

it cost us 11ms</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143604</attachid>
            <date>2012-05-23 11:43:31 -0700</date>
            <delta_ts>2012-05-24 11:14:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87286-20120523224329.patch</filename>
            <type>text/plain</type>
            <size>10719</size>
            <attacher name="Alexei Filippov">alph</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDg3ZjQyYjI4MTVmNGVj
Yzk5NGNiMDA0MTA0ZDZiZTI5ZjUxNjIyYi4uMjllZTVkZjY3YjRkOGNkODQxYjkxNDliMWQzYWYy
ZTdhZjcxMjEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA1LTIzICBBbGV4
ZWkgRmlsaXBwb3YgIDxhbGV4ZWlmQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBTcGVlZCB1cCBlZGdlcyBpdGVyYXRpb24gaW4gaGVhcCBwcm9maWxlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODcyODYKKworICAgICAgICBB
ZGQgYW4gZXh0cmEgbm9kZSB0byBub2RlcyBhcnJheSB0aGF0IHBvaW50cyB0byB0aGUgZW5kIG9m
IGVkZ2VzIGFycmF5LgorICAgICAgICBJdCBhbGxvd3MgdG8gZWxpbWluYXRlIGEgY2hlY2sgZm9y
IHRoZSBsYXN0IG5vZGUgaW4gaXRlcmF0aW9uIGNvZGUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFw
c2hvdC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlLnByb3RvdHlw
ZS5fZWRnZUluZGV4ZXNTdGFydCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
Tm9kZS5wcm90b3R5cGUuX2VkZ2VJbmRleGVzRW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3ROb2RlSXRlcmF0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdC5wcm90b3R5cGUuX2J1aWxkUmV0YWluZXJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3QucHJvdG90eXBlLl9iZnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdC5wcm90b3R5cGUuX2J1aWxkQWdncmVnYXRlcyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5fYnVpbGRQb3N0T3JkZXJJbmRleCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5fYnVpbGREb21pbmF0b3JUcmVl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLl9tYXJrUXVl
cmlhYmxlSGVhcE9iamVjdHMpOgorCiAyMDEyLTA1LTIzICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KIAogICAgICAgICBTcGVlZCB1cCB0cmF2ZXJzZU5leHROb2RlIHdoZW4gY2FsbGVk
IG9uIGEgQ29udGFpbmVyTm9kZSBvciBFbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCmluZGV4IGVlYmMyMjk5MDIyNDFhZGM1
YTZjZWIzMTE0OGZhMzU5MzFlYmE3ZmQuLjkzZWRjMmYxYmY3NjMwODE3Mzk2YzJmMjcxODIwMWU0
MzdhNmY0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
SGVhcFNuYXBzaG90LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
SGVhcFNuYXBzaG90LmpzCkBAIC01NjgsMTYgKzU2OCwxNCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90Tm9kZS5wcm90b3R5cGUgPSB7CiAKICAgICBfZWRnZUluZGV4ZXNTdGFydDogZnVuY3Rp
b24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3NuYXBzaG90Ll9ub2Rlc1t0aGlzLm5v
ZGVJbmRleCArIHRoaXMuX3NuYXBzaG90Ll9maXJzdEVkZ2VJbmRleE9mZnNldF07CisgICAgICAg
IHZhciBzbmFwc2hvdCA9IHRoaXMuX3NuYXBzaG90OworICAgICAgICByZXR1cm4gc25hcHNob3Qu
X25vZGVzW3RoaXMubm9kZUluZGV4ICsgc25hcHNob3QuX2ZpcnN0RWRnZUluZGV4T2Zmc2V0XTsK
ICAgICB9LAogCiAgICAgX2VkZ2VJbmRleGVzRW5kOiBmdW5jdGlvbigpCiAgICAgewotICAgICAg
ICB2YXIgbmV4dE5vZGVJbmRleCA9IHRoaXMuX25leHROb2RlSW5kZXgoKTsKICAgICAgICAgdmFy
IHNuYXBzaG90ID0gdGhpcy5fc25hcHNob3Q7Ci0gICAgICAgIGlmIChuZXh0Tm9kZUluZGV4IDwg
c25hcHNob3QuX25vZGVzLmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiBzbmFwc2hvdC5fbm9k
ZXNbbmV4dE5vZGVJbmRleCArIHNuYXBzaG90Ll9maXJzdEVkZ2VJbmRleE9mZnNldF0KLSAgICAg
ICAgcmV0dXJuIHNuYXBzaG90Ll9jb250YWlubWVudEVkZ2VzLmxlbmd0aDsKKyAgICAgICAgcmV0
dXJuIHNuYXBzaG90Ll9ub2Rlc1t0aGlzLl9uZXh0Tm9kZUluZGV4KCkgKyBzbmFwc2hvdC5fZmly
c3RFZGdlSW5kZXhPZmZzZXRdCiAgICAgfSwKIAogICAgIF9uZXh0Tm9kZUluZGV4OiBmdW5jdGlv
bigpCkBAIC01OTgsNyArNTk2LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUucHJv
dG90eXBlID0gewogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVJdGVyYXRvciA9IGZ1bmN0
aW9uKG5vZGUpCiB7CiAgICAgdGhpcy5ub2RlID0gbm9kZTsKLSAgICB0aGlzLl9ub2Rlc0xlbmd0
aCA9IG5vZGUuX3NuYXBzaG90Ll9ub2Rlcy5sZW5ndGg7CisgICAgdGhpcy5fbm9kZXNMZW5ndGgg
PSBub2RlLl9zbmFwc2hvdC5fbm9kZXNMZW5ndGg7CiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3ROb2RlSXRlcmF0b3IucHJvdG90eXBlID0gewpAQCAtNzIzLDkgKzcyMSwxNiBAQCBXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZpc2l0ZWRN
YXJrZXI6ICAgICAweDEwMDAwICAvLyBiaXRzOiAxLDAwMDAsMDAwMCwwMDAwLDAwMDAKICAgICAg
ICAgfTsKIAotICAgICAgICB0aGlzLm5vZGVDb3VudCA9IHRoaXMuX25vZGVzLmxlbmd0aCAvIHRo
aXMuX25vZGVGaWVsZENvdW50OworICAgICAgICB0aGlzLl9ub2Rlc0xlbmd0aCA9IHRoaXMuX25v
ZGVzLmxlbmd0aDsKKyAgICAgICAgdGhpcy5ub2RlQ291bnQgPSB0aGlzLl9ub2Rlc0xlbmd0aCAv
IHRoaXMuX25vZGVGaWVsZENvdW50OwogICAgICAgICB0aGlzLl9lZGdlQ291bnQgPSB0aGlzLl9j
b250YWlubWVudEVkZ2VzLmxlbmd0aCAvIHRoaXMuX2VkZ2VGaWVsZHNDb3VudDsKIAorICAgICAg
ICAvLyBBZGQgYW4gZXh0cmEgbm9kZSBhbmQgbWFrZSBpdHMgZmlyc3QgZWRnZSBmaWVsZCBwb2lu
dCB0byB0aGUgZW5kIG9mIGVkZ2VzIGFycmF5LgorICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9u
b2RlczsKKyAgICAgICAgdGhpcy5fbm9kZXMgPSBuZXcgVWludDMyQXJyYXkodGhpcy5fbm9kZXNM
ZW5ndGggKyB0aGlzLl9ub2RlRmllbGRDb3VudCk7CisgICAgICAgIHRoaXMuX25vZGVzLnNldChu
b2Rlcyk7CisgICAgICAgIHRoaXMuX25vZGVzW3RoaXMuX25vZGVzTGVuZ3RoICsgdGhpcy5fZmly
c3RFZGdlSW5kZXhPZmZzZXRdID0gdGhpcy5fY29udGFpbm1lbnRFZGdlcy5sZW5ndGg7CisKICAg
ICAgICAgdGhpcy5fbWFya0ludmlzaWJsZUVkZ2VzKCk7CiAgICAgICAgIHRoaXMuX2J1aWxkUmV0
YWluZXJzKCk7CiAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZUZsYWdzKCk7CkBAIC03NjgsMTMgKzc3
MywxMSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICB2YXIgc3JjTm9kZUluZGV4ID0gMDsKICAgICAgICAgdmFyIG5leHROb2RlRmlyc3RFZGdlSW5k
ZXggPSBub2Rlc1tmaXJzdEVkZ2VJbmRleE9mZnNldF07Ci0gICAgICAgIHZhciBub2Rlc0xlbmd0
aCA9IG5vZGVzLmxlbmd0aDsKKyAgICAgICAgdmFyIG5vZGVzTGVuZ3RoID0gdGhpcy5fbm9kZXNM
ZW5ndGg7CiAgICAgICAgIHdoaWxlIChzcmNOb2RlSW5kZXggPCBub2Rlc0xlbmd0aCkgewogICAg
ICAgICAgICAgdmFyIGZpcnN0RWRnZUluZGV4ID0gbmV4dE5vZGVGaXJzdEVkZ2VJbmRleDsKICAg
ICAgICAgICAgIHZhciBuZXh0Tm9kZUluZGV4ID0gc3JjTm9kZUluZGV4ICsgbm9kZUZpZWxkQ291
bnQ7Ci0gICAgICAgICAgICBuZXh0Tm9kZUZpcnN0RWRnZUluZGV4ID0gbmV4dE5vZGVJbmRleCA8
IG5vZGVzTGVuZ3RoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbm9kZXNb
bmV4dE5vZGVJbmRleCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0XQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6IGNvbnRhaW5tZW50RWRnZXMubGVuZ3RoOworICAgICAgICAgICAg
bmV4dE5vZGVGaXJzdEVkZ2VJbmRleCA9IG5vZGVzW25leHROb2RlSW5kZXggKyBmaXJzdEVkZ2VJ
bmRleE9mZnNldF07CiAgICAgICAgICAgICBmb3IgKHZhciBlZGdlSW5kZXggPSBmaXJzdEVkZ2VJ
bmRleDsgZWRnZUluZGV4IDwgbmV4dE5vZGVGaXJzdEVkZ2VJbmRleDsgZWRnZUluZGV4ICs9IGVk
Z2VGaWVsZHNDb3VudCkgewogICAgICAgICAgICAgICAgIHZhciB0b05vZGVJbmRleCA9IGNvbnRh
aW5tZW50RWRnZXNbZWRnZUluZGV4ICsgZWRnZVRvTm9kZU9mZnNldF07CiAgICAgICAgICAgICAg
ICAgaWYgKHRvTm9kZUluZGV4ICUgbm9kZUZpZWxkQ291bnQpCkBAIC05NTUsOSArOTU4LDcgQEAg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB2YXIgZGlzdGFuY2UgPSBkaXN0YW5jZXNbbm9kZU9yZGluYWxdICsgMTsKICAg
ICAgICAgICAgIHZhciBmaXJzdEVkZ2VJbmRleCA9IG5vZGVzW25vZGVJbmRleCArIGZpcnN0RWRn
ZUluZGV4T2Zmc2V0XTsKLSAgICAgICAgICAgIHZhciBlZGdlc0VuZCA9IG5vZGVPcmRpbmFsIDwg
bm9kZUNvdW50IC0gMQotICAgICAgICAgICAgICAgICAgICAgICAgID8gbm9kZXNbbm9kZUluZGV4
ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXQgKyBub2RlRmllbGRDb3VudF0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICA6IGNvbnRhaW5tZW50RWRnZXMubGVuZ3RoOworICAgICAgICAgICAgdmFyIGVk
Z2VzRW5kID0gbm9kZXNbbm9kZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXQgKyBub2RlRmll
bGRDb3VudF07CiAgICAgICAgICAgICBmb3IgKHZhciBlZGdlVG9Ob2RlSW5kZXggPSBmaXJzdEVk
Z2VJbmRleCArIGVkZ2VUb05vZGVPZmZzZXQ7IGVkZ2VUb05vZGVJbmRleCA8IGVkZ2VzRW5kOyBl
ZGdlVG9Ob2RlSW5kZXggKz0gZWRnZUZpZWxkc0NvdW50KSB7CiAgICAgICAgICAgICAgICAgdmFy
IGNoaWxkTm9kZUluZGV4ID0gY29udGFpbm1lbnRFZGdlc1tlZGdlVG9Ob2RlSW5kZXhdOwogICAg
ICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVPcmRpbmFsID0gY2hpbGROb2RlSW5kZXggLyBub2Rl
RmllbGRDb3VudDsKQEAgLTk3Niw3ICs5NzcsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGNsYXNzSW5kZXhlcyA9IFtdOwogICAgICAgICB2
YXIgbm9kZXMgPSB0aGlzLl9ub2RlczsKICAgICAgICAgdmFyIGZsYWdzID0gdGhpcy5fZmxhZ3M7
Ci0gICAgICAgIHZhciBub2Rlc0xlbmd0aCA9IG5vZGVzLmxlbmd0aDsKKyAgICAgICAgdmFyIG5v
ZGVzTGVuZ3RoID0gdGhpcy5fbm9kZXNMZW5ndGg7CiAgICAgICAgIHZhciBub2RlTmF0aXZlVHlw
ZSA9IHRoaXMuX25vZGVOYXRpdmVUeXBlOwogICAgICAgICB2YXIgbm9kZUZpZWxkQ291bnQgPSB0
aGlzLl9ub2RlRmllbGRDb3VudDsKICAgICAgICAgdmFyIHNlbGZTaXplT2Zmc2V0ID0gdGhpcy5f
bm9kZVNlbGZTaXplT2Zmc2V0OwpAQCAtMTEyOCw5ICsxMTI5LDcgQEAgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgcGFpbnRlZFtub2RlT3Jk
aW5hbF0gPSBibGFjazsKICAgICAgICAgICAgICAgICB2YXIgbm9kZUZsYWcgPSBmbGFnc1tub2Rl
T3JkaW5hbF0gJiBmbGFnOwogICAgICAgICAgICAgICAgIHZhciBiZWdpbkVkZ2VJbmRleCA9IG5v
ZGVzW25vZGVJbmRleCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0XTsKLSAgICAgICAgICAgICAgICB2
YXIgZW5kRWRnZUluZGV4ID0gIG5vZGVPcmRpbmFsIDwgbm9kZUNvdW50IC0gMQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBub2Rlc1tub2RlSW5kZXggKyBmaXJzdEVkZ2VJ
bmRleE9mZnNldCArIG5vZGVGaWVsZENvdW50XQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiBjb250YWlubWVudEVkZ2VzTGVuZ3RoOworICAgICAgICAgICAgICAgIHZhciBl
bmRFZGdlSW5kZXggPSBub2Rlc1tub2RlSW5kZXggKyBmaXJzdEVkZ2VJbmRleE9mZnNldCArIG5v
ZGVGaWVsZENvdW50XTsKICAgICAgICAgICAgICAgICBmb3IgKHZhciBlZGdlSW5kZXggPSBiZWdp
bkVkZ2VJbmRleDsgZWRnZUluZGV4IDwgZW5kRWRnZUluZGV4OyBlZGdlSW5kZXggKz0gZWRnZUZp
ZWxkc0NvdW50KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlSW5kZXggIT09IHJvb3RO
b2RlSW5kZXggJiYgY29udGFpbm1lbnRFZGdlc1tlZGdlSW5kZXggKyBlZGdlVHlwZU9mZnNldF0g
PT09IGVkZ2VTaG9ydGN1dFR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
QEAgLTEyNjEsOSArMTI2MCw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgICAgICAgICBub2RlT3JkaW5hbCA9IHBvc3RPcmRlckluZGV4Mk5v
ZGVPcmRpbmFsW3Bvc3RPcmRlckluZGV4XTsKICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4
ID0gbm9kZU9yZGluYWwgKiBub2RlRmllbGRDb3VudDsKICAgICAgICAgICAgICAgICAgICAgYmVn
aW5FZGdlVG9Ob2RlRmllbGRJbmRleCA9IG5vZGVzW25vZGVJbmRleCArIGZpcnN0RWRnZUluZGV4
T2Zmc2V0XSArIGVkZ2VUb05vZGVPZmZzZXQ7Ci0gICAgICAgICAgICAgICAgICAgIGVuZEVkZ2VU
b05vZGVGaWVsZEluZGV4ID0gbm9kZU9yZGluYWwgPCBub2Rlc0NvdW50IC0gMQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG5vZGVzW25vZGVJbmRl
eCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0ICsgbm9kZUZpZWxkQ291bnRdCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY29udGFpbm1lbnRFZGdlc0xl
bmd0aDsKKyAgICAgICAgICAgICAgICAgICAgZW5kRWRnZVRvTm9kZUZpZWxkSW5kZXggPSBub2Rl
c1tub2RlSW5kZXggKyBmaXJzdEVkZ2VJbmRleE9mZnNldCArIG5vZGVGaWVsZENvdW50XTsKICAg
ICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdG9Ob2RlRmllbGRJbmRleCA9IGJlZ2luRWRnZVRv
Tm9kZUZpZWxkSW5kZXg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9Ob2RlRmllbGRJbmRl
eCA8IGVuZEVkZ2VUb05vZGVGaWVsZEluZGV4OwogICAgICAgICAgICAgICAgICAgICAgICAgIHRv
Tm9kZUZpZWxkSW5kZXggKz0gZWRnZUZpZWxkc0NvdW50KSB7CkBAIC0xNDg5LDkgKzE0ODYsNyBA
QCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIGZsYWdzW25vZGVPcmRpbmFsXSB8PSBmbGFnOwogICAg
ICAgICAgICAgdmFyIGJlZ2luRWRnZUluZGV4ID0gbm9kZXNbbm9kZUluZGV4ICsgZmlyc3RFZGdl
SW5kZXhPZmZzZXRdOwotICAgICAgICAgICAgdmFyIGVuZEVkZ2VJbmRleCA9IG5vZGVPcmRpbmFs
IDwgbm9kZUNvdW50IC0gMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbm9kZXNb
bm9kZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXQgKyBub2RlRmllbGRDb3VudF0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNvbnRhaW5tZW50RWRnZXMubGVuZ3RoOworICAg
ICAgICAgICAgdmFyIGVuZEVkZ2VJbmRleCA9IG5vZGVzW25vZGVJbmRleCArIGZpcnN0RWRnZUlu
ZGV4T2Zmc2V0ICsgbm9kZUZpZWxkQ291bnRdOwogICAgICAgICAgICAgZm9yICh2YXIgZWRnZUlu
ZGV4ID0gYmVnaW5FZGdlSW5kZXg7IGVkZ2VJbmRleCA8IGVuZEVkZ2VJbmRleDsgZWRnZUluZGV4
ICs9IGVkZ2VGaWVsZHNDb3VudCkgewogICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVJbmRl
eCA9IGNvbnRhaW5tZW50RWRnZXNbZWRnZUluZGV4ICsgZWRnZVRvTm9kZU9mZnNldF07CiAgICAg
ICAgICAgICAgICAgaWYgKGZsYWdzW2NoaWxkTm9kZUluZGV4IC8gbm9kZUZpZWxkQ291bnRdICYg
ZmxhZykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCAzOTEwZDUwMzc1MjNmMDc3ODNjMGQ3NDg3YTYxYjg2Y2ZlZjg2Y2E2Li43
MTY0OTYwZWFmMWMwYjBiNWFlZDQ3N2FmNjNiMzgwNWM5ZTdiNzFjIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMTItMDUtMjMgIEFsZXhlaSBGaWxpcHBvdiAgPGFsZXhlaWZAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNwZWVkIHVwIGVkZ2VzIGl0ZXJhdGlvbiBpbiBo
ZWFwIHByb2ZpbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NzI4NgorCisgICAgICAgIEFkZCBhbiBleHRyYSBub2RlIHRvIG5vZGVzIGFycmF5IHRo
YXQgcG9pbnRzIHRvIHRoZSBlbmQgb2YgZWRnZXMgYXJyYXkuCisgICAgICAgIEl0IGFsbG93cyB0
byBlbGltaW5hdGUgYSBjaGVjayBmb3IgdGhlIGxhc3Qgbm9kZSBpbiBpdGVyYXRpb24gY29kZS4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXpl
X0hlYXBTbmFwc2hvdFRlc3QuSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrT2Jq
ZWN0KToKKyAgICAgICAgKGluaXRpYWxpemVfSGVhcFNuYXBzaG90VGVzdC5JbnNwZWN0b3JUZXN0
Ll9wb3N0cHJvY2Vzc0hlYXBTbmFwc2hvdE1vY2spOgorCiAyMDEyLTA1LTIzICBMZXZpIFdlaW50
cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBmYXN0L3N1Yi1waXhlbC9sYXlv
dXQtYm94ZXMtd2l0aC16b29tLmh0bWwgZmFpbHMgYXQgMTY2JSB6b29tIG9uIFdpbmRvd3Mgb25s
eQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNo
b3QtdGVzdC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90
LXRlc3QuanMKaW5kZXggYmVkMWYyNGY5NTY4YzhhMzI4N2JmNTE2ODk1ODk3NjI0ZDZmZTViMi4u
MGQ2NzlkOTY2YzQ4YTIxZDM3Zjg4YWQzZGRiOWNkYTZmMWVmNjg1NSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qcworKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC10ZXN0LmpzCkBAIC0x
OSw2ICsxOSw3IEBAIEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9ja09iamVjdCA9
IGZ1bmN0aW9uKCkKICAgICAgICAgX2VkZ2VTaG9ydGN1dFR5cGU6IC0xLAogICAgICAgICBfZWRn
ZUhpZGRlblR5cGU6IC0xLAogICAgICAgICBfZWRnZUVsZW1lbnRUeXBlOiAwLAorICAgICAgICBf
bm9kZXNMZW5ndGg6IDE4LAogICAgICAgICAvLyBSZXByZXNlbnRzIHRoZSBmb2xsb3dpbmcgZ3Jh
cGg6CiAgICAgICAgIC8vICAgKG51bWJlcnMgaW4gcGFyZW50aGVzZXMgaW5kaWNhdGUgbm9kZSBv
ZmZzZXQpCiAgICAgICAgIC8vIApAQCAtMzQsNyArMzUsOCBAQCBJbnNwZWN0b3JUZXN0LmNyZWF0
ZUhlYXBTbmFwc2hvdE1vY2tPYmplY3QgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICAxLCAyLCAx
MiwgICAvLyAgNjogQgogICAgICAgICAgICAgMSwgMywgMTgsICAgLy8gIDk6IEMKICAgICAgICAg
ICAgIDEsIDQsIDIxLCAgIC8vIDEyOiBECi0gICAgICAgICAgICAxLCA1LCAyMV0sICAvLyAxNTog
RQorICAgICAgICAgICAgMSwgNSwgMjEsICAgLy8gMTU6IEUKKyAgICAgICAgICAgIDAsIDAsIDIx
XSwgIC8vIDE4OiAoZXh0cmEgbm9kZSkKICAgICAgICAgX2NvbnRhaW5tZW50RWRnZXM6IFsKICAg
ICAgICAgICAgIDIsICA2LCAzLCAgIC8vICAwOiBzaG9ydGN1dCAnYScgdG8gbm9kZSAnQScKICAg
ICAgICAgICAgIDEsICA3LCA2LCAgIC8vICAzOiBwcm9wZXJ0eSAnYicgdG8gbm9kZSAnQicKQEAg
LTk5LDggKzEwMSw4IEBAIEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9ja1JhdyA9
IGZ1bmN0aW9uKCkKIAogSW5zcGVjdG9yVGVzdC5fcG9zdHByb2Nlc3NIZWFwU25hcHNob3RNb2Nr
ID0gZnVuY3Rpb24obW9jaykKIHsKLSAgICBtb2NrLm5vZGVzID0gbmV3IEludDMyQXJyYXkobW9j
ay5ub2Rlcyk7Ci0gICAgbW9jay5lZGdlcyA9IG5ldyBJbnQzMkFycmF5KG1vY2suZWRnZXMpOwor
ICAgIG1vY2subm9kZXMgPSBuZXcgVWludDMyQXJyYXkobW9jay5ub2Rlcyk7CisgICAgbW9jay5l
ZGdlcyA9IG5ldyBVaW50MzJBcnJheShtb2NrLmVkZ2VzKTsKICAgICByZXR1cm4gbW9jazsKIH07
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143855</attachid>
            <date>2012-05-24 11:14:57 -0700</date>
            <delta_ts>2012-05-25 04:07:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87286-20120524221456.patch</filename>
            <type>text/plain</type>
            <size>10827</size>
            <attacher name="Alexei Filippov">alph</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzEyYmE5MTU1NTZjMzM0
ZDZmZTE5YWNlYThmYzNkOWQzMWY5M2M2Zi4uYjgyMGQxZDA2MDJiMjZiMzIxNDM4NTBiZDYzYjNi
ODVmNTA3NDdhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA1LTIzICBBbGV4
ZWkgRmlsaXBwb3YgIDxhbGV4ZWlmQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBTcGVlZCB1cCBlZGdlcyBpdGVyYXRpb24gaW4gaGVhcCBwcm9maWxlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODcyODYKKworICAgICAgICBB
ZGQgYW4gZXh0cmEgbm9kZSB0byBub2RlcyBhcnJheSB0aGF0IHBvaW50cyB0byB0aGUgZW5kIG9m
IGVkZ2VzIGFycmF5LgorICAgICAgICBJdCBhbGxvd3MgdG8gZWxpbWluYXRlIGEgY2hlY2sgZm9y
IHRoZSBsYXN0IG5vZGUgaW4gaXRlcmF0aW9uIGNvZGUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFw
c2hvdC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlLnByb3RvdHlw
ZS5fZWRnZUluZGV4ZXNTdGFydCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
Tm9kZS5wcm90b3R5cGUuX2VkZ2VJbmRleGVzRW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3ROb2RlSXRlcmF0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdC5wcm90b3R5cGUuX2J1aWxkUmV0YWluZXJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3QucHJvdG90eXBlLl9iZnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdC5wcm90b3R5cGUuX2J1aWxkQWdncmVnYXRlcyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5fYnVpbGRQb3N0T3JkZXJJbmRleCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5fYnVpbGREb21pbmF0b3JUcmVl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLl9tYXJrUXVl
cmlhYmxlSGVhcE9iamVjdHMpOgorCiAyMDEyLTA1LTI0ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEg
IDxyYWt1Y29Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbRUZMXSBNb2RpZnkga2V5Y29kZSBjb252
ZXJzaW9uIGZ1bmN0aW9ucyB0byByZXR1cm4ga2V5Y29kZXMgd2l0aCBsb2NhdGlvbiBpbmZvcm1h
dGlvbiBhZnRlciByMTE4MDAxLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0hlYXBTbmFwc2hvdC5qcwppbmRleCBiNTk3YTVhNmZmYmJkYjEzMDk5NDEzOTljNGI3
YjIwMmM2MzIxMzhjLi4yOWI3M2I1NDZmNmE2NmFjOGQ3ODIxMzZmOGUzYWZiNjc5NWEzMzExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hv
dC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hv
dC5qcwpAQCAtNTY4LDE2ICs1NjgsMTQgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUu
cHJvdG90eXBlID0gewogCiAgICAgX2VkZ2VJbmRleGVzU3RhcnQ6IGZ1bmN0aW9uKCkKICAgICB7
Ci0gICAgICAgIHJldHVybiB0aGlzLl9zbmFwc2hvdC5fbm9kZXNbdGhpcy5ub2RlSW5kZXggKyB0
aGlzLl9zbmFwc2hvdC5fZmlyc3RFZGdlSW5kZXhPZmZzZXRdOworICAgICAgICB2YXIgc25hcHNo
b3QgPSB0aGlzLl9zbmFwc2hvdDsKKyAgICAgICAgcmV0dXJuIHNuYXBzaG90Ll9ub2Rlc1t0aGlz
Lm5vZGVJbmRleCArIHNuYXBzaG90Ll9maXJzdEVkZ2VJbmRleE9mZnNldF07CiAgICAgfSwKIAog
ICAgIF9lZGdlSW5kZXhlc0VuZDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIG5leHRO
b2RlSW5kZXggPSB0aGlzLl9uZXh0Tm9kZUluZGV4KCk7CiAgICAgICAgIHZhciBzbmFwc2hvdCA9
IHRoaXMuX3NuYXBzaG90OwotICAgICAgICBpZiAobmV4dE5vZGVJbmRleCA8IHNuYXBzaG90Ll9u
b2Rlcy5sZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gc25hcHNob3QuX25vZGVzW25leHROb2Rl
SW5kZXggKyBzbmFwc2hvdC5fZmlyc3RFZGdlSW5kZXhPZmZzZXRdCi0gICAgICAgIHJldHVybiBz
bmFwc2hvdC5fY29udGFpbm1lbnRFZGdlcy5sZW5ndGg7CisgICAgICAgIHJldHVybiBzbmFwc2hv
dC5fbm9kZXNbdGhpcy5fbmV4dE5vZGVJbmRleCgpICsgc25hcHNob3QuX2ZpcnN0RWRnZUluZGV4
T2Zmc2V0XQogICAgIH0sCiAKICAgICBfbmV4dE5vZGVJbmRleDogZnVuY3Rpb24oKQpAQCAtNTk4
LDcgKzU5Niw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlLnByb3RvdHlwZSA9IHsK
IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlSXRlcmF0b3IgPSBmdW5jdGlvbihub2RlKQog
ewogICAgIHRoaXMubm9kZSA9IG5vZGU7Ci0gICAgdGhpcy5fbm9kZXNMZW5ndGggPSBub2RlLl9z
bmFwc2hvdC5fbm9kZXMubGVuZ3RoOworICAgIHRoaXMuX25vZGVzTGVuZ3RoID0gbm9kZS5fc25h
cHNob3QuX3JlYWxOb2Rlc0xlbmd0aDsKIH0KIAogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5v
ZGVJdGVyYXRvci5wcm90b3R5cGUgPSB7CkBAIC03MjMsOSArNzIxLDE2IEBAIFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmlzaXRlZE1hcmtlcjog
ICAgIDB4MTAwMDAgIC8vIGJpdHM6IDEsMDAwMCwwMDAwLDAwMDAsMDAwMAogICAgICAgICB9Owog
Ci0gICAgICAgIHRoaXMubm9kZUNvdW50ID0gdGhpcy5fbm9kZXMubGVuZ3RoIC8gdGhpcy5fbm9k
ZUZpZWxkQ291bnQ7CisgICAgICAgIHRoaXMuX3JlYWxOb2Rlc0xlbmd0aCA9IHRoaXMuX25vZGVz
Lmxlbmd0aDsKKyAgICAgICAgdGhpcy5ub2RlQ291bnQgPSB0aGlzLl9yZWFsTm9kZXNMZW5ndGgg
LyB0aGlzLl9ub2RlRmllbGRDb3VudDsKICAgICAgICAgdGhpcy5fZWRnZUNvdW50ID0gdGhpcy5f
Y29udGFpbm1lbnRFZGdlcy5sZW5ndGggLyB0aGlzLl9lZGdlRmllbGRzQ291bnQ7CiAKKyAgICAg
ICAgLy8gQWRkIGFuIGV4dHJhIG5vZGUgYW5kIG1ha2UgaXRzIGZpcnN0IGVkZ2UgZmllbGQgcG9p
bnQgdG8gdGhlIGVuZCBvZiBlZGdlcyBhcnJheS4KKyAgICAgICAgdmFyIG5vZGVzID0gdGhpcy5f
bm9kZXM7CisgICAgICAgIHRoaXMuX25vZGVzID0gbmV3IFVpbnQzMkFycmF5KHRoaXMuX3JlYWxO
b2Rlc0xlbmd0aCArIHRoaXMuX25vZGVGaWVsZENvdW50KTsKKyAgICAgICAgdGhpcy5fbm9kZXMu
c2V0KG5vZGVzKTsKKyAgICAgICAgdGhpcy5fbm9kZXNbdGhpcy5fcmVhbE5vZGVzTGVuZ3RoICsg
dGhpcy5fZmlyc3RFZGdlSW5kZXhPZmZzZXRdID0gdGhpcy5fY29udGFpbm1lbnRFZGdlcy5sZW5n
dGg7CisKICAgICAgICAgdGhpcy5fbWFya0ludmlzaWJsZUVkZ2VzKCk7CiAgICAgICAgIHRoaXMu
X2J1aWxkUmV0YWluZXJzKCk7CiAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZUZsYWdzKCk7CkBAIC03
NjgsMTMgKzc3MywxMSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsK
IAogICAgICAgICB2YXIgc3JjTm9kZUluZGV4ID0gMDsKICAgICAgICAgdmFyIG5leHROb2RlRmly
c3RFZGdlSW5kZXggPSBub2Rlc1tmaXJzdEVkZ2VJbmRleE9mZnNldF07Ci0gICAgICAgIHZhciBu
b2Rlc0xlbmd0aCA9IG5vZGVzLmxlbmd0aDsKKyAgICAgICAgdmFyIG5vZGVzTGVuZ3RoID0gdGhp
cy5fcmVhbE5vZGVzTGVuZ3RoOwogICAgICAgICB3aGlsZSAoc3JjTm9kZUluZGV4IDwgbm9kZXNM
ZW5ndGgpIHsKICAgICAgICAgICAgIHZhciBmaXJzdEVkZ2VJbmRleCA9IG5leHROb2RlRmlyc3RF
ZGdlSW5kZXg7CiAgICAgICAgICAgICB2YXIgbmV4dE5vZGVJbmRleCA9IHNyY05vZGVJbmRleCAr
IG5vZGVGaWVsZENvdW50OwotICAgICAgICAgICAgbmV4dE5vZGVGaXJzdEVkZ2VJbmRleCA9IG5l
eHROb2RlSW5kZXggPCBub2Rlc0xlbmd0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA/IG5vZGVzW25leHROb2RlSW5kZXggKyBmaXJzdEVkZ2VJbmRleE9mZnNldF0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjb250YWlubWVudEVkZ2VzLmxlbmd0aDsK
KyAgICAgICAgICAgIG5leHROb2RlRmlyc3RFZGdlSW5kZXggPSBub2Rlc1tuZXh0Tm9kZUluZGV4
ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXRdOwogICAgICAgICAgICAgZm9yICh2YXIgZWRnZUluZGV4
ID0gZmlyc3RFZGdlSW5kZXg7IGVkZ2VJbmRleCA8IG5leHROb2RlRmlyc3RFZGdlSW5kZXg7IGVk
Z2VJbmRleCArPSBlZGdlRmllbGRzQ291bnQpIHsKICAgICAgICAgICAgICAgICB2YXIgdG9Ob2Rl
SW5kZXggPSBjb250YWlubWVudEVkZ2VzW2VkZ2VJbmRleCArIGVkZ2VUb05vZGVPZmZzZXRdOwog
ICAgICAgICAgICAgICAgIGlmICh0b05vZGVJbmRleCAlIG5vZGVGaWVsZENvdW50KQpAQCAtOTU3
LDkgKzk2MCw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgdmFyIGRpc3RhbmNlID0gZGlzdGFuY2VzW25vZGVPcmRp
bmFsXSArIDE7CiAgICAgICAgICAgICB2YXIgZmlyc3RFZGdlSW5kZXggPSBub2Rlc1tub2RlSW5k
ZXggKyBmaXJzdEVkZ2VJbmRleE9mZnNldF07Ci0gICAgICAgICAgICB2YXIgZWRnZXNFbmQgPSBu
b2RlT3JkaW5hbCA8IG5vZGVDb3VudCAtIDEKLSAgICAgICAgICAgICAgICAgICAgICAgICA/IG5v
ZGVzW25vZGVJbmRleCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0ICsgbm9kZUZpZWxkQ291bnRdCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgOiBjb250YWlubWVudEVkZ2VzLmxlbmd0aDsKKyAgICAg
ICAgICAgIHZhciBlZGdlc0VuZCA9IG5vZGVzW25vZGVJbmRleCArIGZpcnN0RWRnZUluZGV4T2Zm
c2V0ICsgbm9kZUZpZWxkQ291bnRdOwogICAgICAgICAgICAgZm9yICh2YXIgZWRnZVRvTm9kZUlu
ZGV4ID0gZmlyc3RFZGdlSW5kZXggKyBlZGdlVG9Ob2RlT2Zmc2V0OyBlZGdlVG9Ob2RlSW5kZXgg
PCBlZGdlc0VuZDsgZWRnZVRvTm9kZUluZGV4ICs9IGVkZ2VGaWVsZHNDb3VudCkgewogICAgICAg
ICAgICAgICAgIHZhciBjaGlsZE5vZGVJbmRleCA9IGNvbnRhaW5tZW50RWRnZXNbZWRnZVRvTm9k
ZUluZGV4XTsKICAgICAgICAgICAgICAgICB2YXIgY2hpbGROb2RlT3JkaW5hbCA9IGNoaWxkTm9k
ZUluZGV4IC8gbm9kZUZpZWxkQ291bnQ7CkBAIC05NzgsNyArOTc5LDcgQEAgV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBjbGFzc0luZGV4ZXMgPSBb
XTsKICAgICAgICAgdmFyIG5vZGVzID0gdGhpcy5fbm9kZXM7CiAgICAgICAgIHZhciBmbGFncyA9
IHRoaXMuX2ZsYWdzOwotICAgICAgICB2YXIgbm9kZXNMZW5ndGggPSBub2Rlcy5sZW5ndGg7Cisg
ICAgICAgIHZhciBub2Rlc0xlbmd0aCA9IHRoaXMuX3JlYWxOb2Rlc0xlbmd0aDsKICAgICAgICAg
dmFyIG5vZGVOYXRpdmVUeXBlID0gdGhpcy5fbm9kZU5hdGl2ZVR5cGU7CiAgICAgICAgIHZhciBu
b2RlRmllbGRDb3VudCA9IHRoaXMuX25vZGVGaWVsZENvdW50OwogICAgICAgICB2YXIgc2VsZlNp
emVPZmZzZXQgPSB0aGlzLl9ub2RlU2VsZlNpemVPZmZzZXQ7CkBAIC0xMTMwLDkgKzExMzEsNyBA
QCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAg
ICBwYWludGVkW25vZGVPcmRpbmFsXSA9IGJsYWNrOwogICAgICAgICAgICAgICAgIHZhciBub2Rl
RmxhZyA9IGZsYWdzW25vZGVPcmRpbmFsXSAmIGZsYWc7CiAgICAgICAgICAgICAgICAgdmFyIGJl
Z2luRWRnZUluZGV4ID0gbm9kZXNbbm9kZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXRdOwot
ICAgICAgICAgICAgICAgIHZhciBlbmRFZGdlSW5kZXggPSAgbm9kZU9yZGluYWwgPCBub2RlQ291
bnQgLSAxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG5vZGVzW25vZGVJ
bmRleCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0ICsgbm9kZUZpZWxkQ291bnRdCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNvbnRhaW5tZW50RWRnZXNMZW5ndGg7CisgICAg
ICAgICAgICAgICAgdmFyIGVuZEVkZ2VJbmRleCA9IG5vZGVzW25vZGVJbmRleCArIGZpcnN0RWRn
ZUluZGV4T2Zmc2V0ICsgbm9kZUZpZWxkQ291bnRdOwogICAgICAgICAgICAgICAgIGZvciAodmFy
IGVkZ2VJbmRleCA9IGJlZ2luRWRnZUluZGV4OyBlZGdlSW5kZXggPCBlbmRFZGdlSW5kZXg7IGVk
Z2VJbmRleCArPSBlZGdlRmllbGRzQ291bnQpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG5v
ZGVJbmRleCAhPT0gcm9vdE5vZGVJbmRleCAmJiBjb250YWlubWVudEVkZ2VzW2VkZ2VJbmRleCAr
IGVkZ2VUeXBlT2Zmc2V0XSA9PT0gZWRnZVNob3J0Y3V0VHlwZSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwpAQCAtMTI2Myw5ICsxMjYyLDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgIG5vZGVPcmRpbmFsID0g
cG9zdE9yZGVySW5kZXgyTm9kZU9yZGluYWxbcG9zdE9yZGVySW5kZXhdOwogICAgICAgICAgICAg
ICAgICAgICBub2RlSW5kZXggPSBub2RlT3JkaW5hbCAqIG5vZGVGaWVsZENvdW50OwogICAgICAg
ICAgICAgICAgICAgICBiZWdpbkVkZ2VUb05vZGVGaWVsZEluZGV4ID0gbm9kZXNbbm9kZUluZGV4
ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXRdICsgZWRnZVRvTm9kZU9mZnNldDsKLSAgICAgICAgICAg
ICAgICAgICAgZW5kRWRnZVRvTm9kZUZpZWxkSW5kZXggPSBub2RlT3JkaW5hbCA8IG5vZGVzQ291
bnQgLSAxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID8gbm9kZXNbbm9kZUluZGV4ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXQgKyBub2RlRmllbGRDb3Vu
dF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBj
b250YWlubWVudEVkZ2VzTGVuZ3RoOworICAgICAgICAgICAgICAgICAgICBlbmRFZGdlVG9Ob2Rl
RmllbGRJbmRleCA9IG5vZGVzW25vZGVJbmRleCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0ICsgbm9k
ZUZpZWxkQ291bnRdOwogICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0b05vZGVGaWVsZElu
ZGV4ID0gYmVnaW5FZGdlVG9Ob2RlRmllbGRJbmRleDsKICAgICAgICAgICAgICAgICAgICAgICAg
ICB0b05vZGVGaWVsZEluZGV4IDwgZW5kRWRnZVRvTm9kZUZpZWxkSW5kZXg7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgdG9Ob2RlRmllbGRJbmRleCArPSBlZGdlRmllbGRzQ291bnQpIHsKQEAg
LTE0OTEsOSArMTQ4OCw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgZmxhZ3Nbbm9kZU9yZGlu
YWxdIHw9IGZsYWc7CiAgICAgICAgICAgICB2YXIgYmVnaW5FZGdlSW5kZXggPSBub2Rlc1tub2Rl
SW5kZXggKyBmaXJzdEVkZ2VJbmRleE9mZnNldF07Ci0gICAgICAgICAgICB2YXIgZW5kRWRnZUlu
ZGV4ID0gbm9kZU9yZGluYWwgPCBub2RlQ291bnQgLSAxCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPyBub2Rlc1tub2RlSW5kZXggKyBmaXJzdEVkZ2VJbmRleE9mZnNldCArIG5vZGVG
aWVsZENvdW50XQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY29udGFpbm1lbnRF
ZGdlcy5sZW5ndGg7CisgICAgICAgICAgICB2YXIgZW5kRWRnZUluZGV4ID0gbm9kZXNbbm9kZUlu
ZGV4ICsgZmlyc3RFZGdlSW5kZXhPZmZzZXQgKyBub2RlRmllbGRDb3VudF07CiAgICAgICAgICAg
ICBmb3IgKHZhciBlZGdlSW5kZXggPSBiZWdpbkVkZ2VJbmRleDsgZWRnZUluZGV4IDwgZW5kRWRn
ZUluZGV4OyBlZGdlSW5kZXggKz0gZWRnZUZpZWxkc0NvdW50KSB7CiAgICAgICAgICAgICAgICAg
dmFyIGNoaWxkTm9kZUluZGV4ID0gY29udGFpbm1lbnRFZGdlc1tlZGdlSW5kZXggKyBlZGdlVG9O
b2RlT2Zmc2V0XTsKICAgICAgICAgICAgICAgICBpZiAoZmxhZ3NbY2hpbGROb2RlSW5kZXggLyBu
b2RlRmllbGRDb3VudF0gJiBmbGFnKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE5MDliOTY3MzQ4ZWVkMTY4OTY4MTViNzdk
N2I3M2FjMTI2ZjcxNzIuLjc1ZDVjOWEyMTUyYzFjZTczZTZiNzM3ZGJhNDA0NmQzN2FkNzdmZTkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNS0yMyAgQWxleGVpIEZpbGlwcG92ICA8YWxl
eGVpZkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU3BlZWQgdXAgZWRn
ZXMgaXRlcmF0aW9uIGluIGhlYXAgcHJvZmlsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg3Mjg2CisKKyAgICAgICAgQWRkIGFuIGV4dHJhIG5vZGUg
dG8gbm9kZXMgYXJyYXkgdGhhdCBwb2ludHMgdG8gdGhlIGVuZCBvZiBlZGdlcyBhcnJheS4KKyAg
ICAgICAgSXQgYWxsb3dzIHRvIGVsaW1pbmF0ZSBhIGNoZWNrIGZvciB0aGUgbGFzdCBub2RlIGlu
IGl0ZXJhdGlvbiBjb2RlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qczoKKyAg
ICAgICAgKGluaXRpYWxpemVfSGVhcFNuYXBzaG90VGVzdC5JbnNwZWN0b3JUZXN0LmNyZWF0ZUhl
YXBTbmFwc2hvdE1vY2tPYmplY3QpOgorICAgICAgICAoaW5pdGlhbGl6ZV9IZWFwU25hcHNob3RU
ZXN0Lkluc3BlY3RvclRlc3QuX3Bvc3Rwcm9jZXNzSGVhcFNuYXBzaG90TW9jayk6CisKIDIwMTIt
MDUtMjQgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPHJha3Vjb0B3ZWJraXQub3JnPgogCiAgICAg
ICAgIFtFRkxdIE1vZGlmeSBrZXljb2RlIGNvbnZlcnNpb24gZnVuY3Rpb25zIHRvIHJldHVybiBr
ZXljb2RlcyB3aXRoIGxvY2F0aW9uIGluZm9ybWF0aW9uIGFmdGVyIHIxMTgwMDEuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC10ZXN0Lmpz
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qcwpp
bmRleCBiZWQxZjI0Zjk1NjhjOGEzMjg3YmY1MTY4OTU4OTc2MjRkNmZlNWIyLi4yYzBkNmNlNmVk
MGI3ZDMzNzhkNjljNjY3Y2I3OTMwNTBiZGE3NzcyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC10ZXN0LmpzCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXRlc3QuanMKQEAgLTE5LDYgKzE5LDcg
QEAgSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrT2JqZWN0ID0gZnVuY3Rpb24o
KQogICAgICAgICBfZWRnZVNob3J0Y3V0VHlwZTogLTEsCiAgICAgICAgIF9lZGdlSGlkZGVuVHlw
ZTogLTEsCiAgICAgICAgIF9lZGdlRWxlbWVudFR5cGU6IDAsCisgICAgICAgIF9yZWFsTm9kZXNM
ZW5ndGg6IDE4LAogICAgICAgICAvLyBSZXByZXNlbnRzIHRoZSBmb2xsb3dpbmcgZ3JhcGg6CiAg
ICAgICAgIC8vICAgKG51bWJlcnMgaW4gcGFyZW50aGVzZXMgaW5kaWNhdGUgbm9kZSBvZmZzZXQp
CiAgICAgICAgIC8vIApAQCAtMzQsNyArMzUsOCBAQCBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBT
bmFwc2hvdE1vY2tPYmplY3QgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICAxLCAyLCAxMiwgICAv
LyAgNjogQgogICAgICAgICAgICAgMSwgMywgMTgsICAgLy8gIDk6IEMKICAgICAgICAgICAgIDEs
IDQsIDIxLCAgIC8vIDEyOiBECi0gICAgICAgICAgICAxLCA1LCAyMV0sICAvLyAxNTogRQorICAg
ICAgICAgICAgMSwgNSwgMjEsICAgLy8gMTU6IEUKKyAgICAgICAgICAgIDAsIDAsIDIxXSwgIC8v
IDE4OiAoZXh0cmEgbm9kZSkKICAgICAgICAgX2NvbnRhaW5tZW50RWRnZXM6IFsKICAgICAgICAg
ICAgIDIsICA2LCAzLCAgIC8vICAwOiBzaG9ydGN1dCAnYScgdG8gbm9kZSAnQScKICAgICAgICAg
ICAgIDEsICA3LCA2LCAgIC8vICAzOiBwcm9wZXJ0eSAnYicgdG8gbm9kZSAnQicKQEAgLTk5LDgg
KzEwMSw4IEBAIEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9ja1JhdyA9IGZ1bmN0
aW9uKCkKIAogSW5zcGVjdG9yVGVzdC5fcG9zdHByb2Nlc3NIZWFwU25hcHNob3RNb2NrID0gZnVu
Y3Rpb24obW9jaykKIHsKLSAgICBtb2NrLm5vZGVzID0gbmV3IEludDMyQXJyYXkobW9jay5ub2Rl
cyk7Ci0gICAgbW9jay5lZGdlcyA9IG5ldyBJbnQzMkFycmF5KG1vY2suZWRnZXMpOworICAgIG1v
Y2subm9kZXMgPSBuZXcgVWludDMyQXJyYXkobW9jay5ub2Rlcyk7CisgICAgbW9jay5lZGdlcyA9
IG5ldyBVaW50MzJBcnJheShtb2NrLmVkZ2VzKTsKICAgICByZXR1cm4gbW9jazsKIH07CiAK
</data>
<flag name="review"
          id="150534"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>