<?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>62979</bug_id>
          
          <creation_ts>2011-06-20 05:19:15 -0700</creation_ts>
          <short_desc>Web Inspector: [Chromium] Improve speed of heap profiles dominators view</short_desc>
          <delta_ts>2011-06-22 12:48:25 -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>1</everconfirmed>
          <reporter name="Mikhail Naganov">mnaganov</reporter>
          <assigned_to name="Mikhail Naganov">mnaganov</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>423609</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-06-20 05:19:15 -0700</bug_when>
    <thetext>Currently in snapshot we only have a dominator index, which makes calculation of dominated nodes on the fly expensive.
Solved by building a back index.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423611</commentid>
    <comment_count>1</comment_count>
      <attachid>97784</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-06-20 05:22:46 -0700</bug_when>
    <thetext>Created attachment 97784
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425485</commentid>
    <comment_count>2</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-06-22 12:48:25 -0700</bug_when>
    <thetext>Manually committed http://trac.webkit.org/changeset/89457


2011-06-20  Mikhail Naganov  &lt;mnaganov@chromium.org&gt;

        Reviewed by Pavel Feldman.

        Web Inspector: [Chromium] Improve speed of heap profiles dominators view.
        https://bugs.webkit.org/show_bug.cgi?id=62979

        * inspector/front-end/DetailedHeapshotGridNodes.js:
        (WebInspector.HeapSnapshotDominatorObjectNode.prototype._createProvider):
        * inspector/front-end/HeapSnapshot.js:
        (WebInspector.HeapSnapshotArraySlice.prototype.item):
        (WebInspector.HeapSnapshotArraySlice.prototype.slice):
        (WebInspector.HeapSnapshot.prototype.dispose):
        (WebInspector.HeapSnapshot.prototype._dominatedNodesOfNode):
        (WebInspector.HeapSnapshot.prototype._buildReverseIndex.var):
        (WebInspector.HeapSnapshot.prototype._buildReverseIndex):
        (WebInspector.HeapSnapshot.prototype._buildRetainers):
        (WebInspector.HeapSnapshot.prototype._buildNodeIndex):
        (WebInspector.HeapSnapshot.prototype._buildDominatedNodes):
        (WebInspector.HeapSnapshot.prototype._getDominatedIndex):
        (WebInspector.HeapSnapshot.prototype.createNodesProviderForClass):
        (WebInspector.HeapSnapshot.prototype.createNodesProviderForDominator):
        (WebInspector.HeapSnapshotFilteredOrderedIterator):
        (WebInspector.HeapSnapshotFilteredOrderedIterator.prototype._createIterationOrder):
        (WebInspector.HeapSnapshotFilteredOrderedIterator.prototype.get length):
        (WebInspector.HeapSnapshotFilteredOrderedIterator.prototype.serializeNextItems):
        (WebInspector.HeapSnapshotNodesProvider):
        * inspector/front-end/HeapSnapshotProxy.js:
        (WebInspector.HeapSnapshotProxy.prototype.createNodesProviderForDominator):</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97784</attachid>
            <date>2011-06-20 05:22:46 -0700</date>
            <delta_ts>2011-06-22 07:12:20 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch-62979</filename>
            <type>text/plain</type>
            <size>16335</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZjU2YmY0Li5mNGEyZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTEtMDYtMjAgIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBbQ2hyb21pdW1dIEltcHJvdmUgc3BlZWQgb2YgaGVhcCBwcm9maWxlcyBkb21pbmF0
b3JzIHZpZXcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02Mjk3OQorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90
R3JpZE5vZGVzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERvbWluYXRv
ck9iamVjdE5vZGUucHJvdG90eXBlLl9jcmVhdGVQcm92aWRlcik6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90QXJyYXlTbGljZS5wcm90b3R5cGUuaXRlbSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90QXJyYXlTbGljZS5wcm90b3R5cGUuc2xpY2UpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuZGlzcG9zZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5fZG9taW5hdGVkTm9kZXNPZk5vZGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX2J1aWxkUmV2ZXJz
ZUluZGV4LnZhcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlw
ZS5fYnVpbGRSZXZlcnNlSW5kZXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dC5wcm90b3R5cGUuX2J1aWxkUmV0YWluZXJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3QucHJvdG90eXBlLl9idWlsZE5vZGVJbmRleCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5fYnVpbGREb21pbmF0ZWROb2Rlcyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5fZ2V0RG9taW5hdGVkSW5kZXgp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuY3JlYXRlTm9k
ZXNQcm92aWRlckZvckNsYXNzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3Qu
cHJvdG90eXBlLmNyZWF0ZU5vZGVzUHJvdmlkZXJGb3JEb21pbmF0b3IpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVkT3JkZXJlZEl0ZXJhdG9yKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGaWx0ZXJlZE9yZGVyZWRJdGVyYXRvci5wcm90b3R5
cGUuX2NyZWF0ZUl0ZXJhdGlvbk9yZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RGaWx0ZXJlZE9yZGVyZWRJdGVyYXRvci5wcm90b3R5cGUuZ2V0IGxlbmd0aCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RmlsdGVyZWRPcmRlcmVkSXRlcmF0b3IucHJv
dG90eXBlLnNlcmlhbGl6ZU5leHRJdGVtcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90Tm9kZXNQcm92aWRlcik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFw
U25hcHNob3RQcm94eS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94
eS5wcm90b3R5cGUuY3JlYXRlTm9kZXNQcm92aWRlckZvckRvbWluYXRvcik6CisKIDIwMTEtMDYt
MTkgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90R3JpZE5vZGVzLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90R3JpZE5vZGVzLmpzCmluZGV4
IDJkYmRhNjkuLjUzNDcyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdEdyaWROb2Rlcy5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RHcmlkTm9kZXMuanMKQEAgLTcw
MCwxMiArNzAwLDkgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERvbWluYXRvck9iamVjdE5v
ZGUucHJvdG90eXBlID0gewogICAgIF9jcmVhdGVQcm92aWRlcjogZnVuY3Rpb24oc25hcHNob3Qs
IG5vZGVJbmRleCkKICAgICB7CiAgICAgICAgIHZhciBzaG93SGlkZGVuRGF0YSA9IFdlYkluc3Bl
Y3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUuc2hvd0hpZGRlbkRhdGE7Ci0gICAg
ICAgIHJldHVybiBzbmFwc2hvdC5jcmVhdGVOb2Rlc1Byb3ZpZGVyKAorICAgICAgICByZXR1cm4g
c25hcHNob3QuY3JlYXRlTm9kZXNQcm92aWRlckZvckRvbWluYXRvcihub2RlSW5kZXgsCiAgICAg
ICAgICAgICAiZnVuY3Rpb24gKG5vZGUpIHsiICsKLSAgICAgICAgICAgICIgICAgIHZhciBkb21p
bmF0b3JJbmRleCA9IG5vZGUuZG9taW5hdG9ySW5kZXg7IiArCi0gICAgICAgICAgICAiICAgICBy
ZXR1cm4gZG9taW5hdG9ySW5kZXggPT09ICIgKyBub2RlSW5kZXggKyAKLSAgICAgICAgICAgICIg
ICAgICAgICAmJiBkb21pbmF0b3JJbmRleCAhPT0gbm9kZS5ub2RlSW5kZXgiICsKLSAgICAgICAg
ICAgICIgICAgICAgICAmJiAoIiArIHNob3dIaWRkZW5EYXRhICsgIiB8fCAhbm9kZS5pc0hpZGRl
bik7IiArCisgICAgICAgICAgICAiICAgICByZXR1cm4gIiArIHNob3dIaWRkZW5EYXRhICsgIiB8
fCAhbm9kZS5pc0hpZGRlbjsiICsKICAgICAgICAgICAgICJ9Iik7CiAgICAgfSwKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcwppbmRl
eCAzOGUxYzU3Li5lMTY1YTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcwpAQCAtMTk2LDYgKzE5NiwxMyBAQCBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90QXJyYXlTbGljZS5wcm90b3R5cGUgPSB7CiAgICAgaXRlbTogZnVuY3Rp
b24oaW5kZXgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc25hcHNob3RbdGhpcy5fYXJy
YXlOYW1lXVt0aGlzLl9zdGFydCArIGluZGV4XTsKKyAgICB9LAorCisgICAgc2xpY2U6IGZ1bmN0
aW9uKHN0YXJ0LCBlbmQpCisgICAgeworICAgICAgICBpZiAodHlwZW9mIGVuZCA9PT0gInVuZGVm
aW5lZCIpCisgICAgICAgICAgICBlbmQgPSBzdGFydCArIHRoaXMuX3N0YXJ0ICsgdGhpcy5sZW5n
dGg7CisgICAgICAgIHJldHVybiB0aGlzLl9zbmFwc2hvdFt0aGlzLl9hcnJheU5hbWVdLnNsaWNl
KHRoaXMuX3N0YXJ0ICsgc3RhcnQsIGVuZCk7CiAgICAgfQogfQogCkBAIC02OTAsNiArNjk3LDgg
QEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0
aGlzLl9hZ2dyZWdhdGVzSW5kZXhlc1NvcnRlZCA9IGZhbHNlOwogICAgICAgICB9CiAgICAgICAg
IGRlbGV0ZSB0aGlzLl9iYXNlTm9kZUlkczsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2RvbWluYXRl
ZE5vZGVzOworICAgICAgICBkZWxldGUgdGhpcy5fZG9taW5hdGVkSW5kZXg7CiAgICAgfSwKIAog
ICAgIGdldCBfYWxsTm9kZXMoKQpAQCAtNzQ0LDYgKzc1MywxNiBAQCBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90QXJyYXlTbGljZSh0aGlzLCAiX3JldGFpbmVycyIsIHJldEluZGV4RnJvbSwg
cmV0SW5kZXhUbyk7CiAgICAgfSwKIAorICAgIF9kb21pbmF0ZWROb2Rlc09mTm9kZTogZnVuY3Rp
b24obm9kZSkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fZG9taW5hdGVkTm9kZXMpCisgICAg
ICAgICAgICB0aGlzLl9idWlsZERvbWluYXRlZE5vZGVzKCk7CisKKyAgICAgICAgdmFyIGRvbWlu
YXRlZEluZGV4RnJvbSA9IHRoaXMuX2dldERvbWluYXRlZEluZGV4KG5vZGUubm9kZUluZGV4KTsK
KyAgICAgICAgdmFyIGRvbWluYXRlZEluZGV4VG8gPSB0aGlzLl9nZXREb21pbmF0ZWRJbmRleChu
b2RlLl9uZXh0Tm9kZUluZGV4KTsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90QXJyYXlTbGljZSh0aGlzLCAiX2RvbWluYXRlZE5vZGVzIiwgZG9taW5hdGVkSW5k
ZXhGcm9tLCBkb21pbmF0ZWRJbmRleFRvKTsgICAgICAgIAorICAgIH0sCisKICAgICBhZ2dyZWdh
dGVzOiBmdW5jdGlvbihzb3J0ZWRJbmRleGVzKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9h
Z2dyZWdhdGVzKQpAQCAtNzUzLDQ1ICs3NzIsNjEgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9hZ2dyZWdhdGVzOwogICAgIH0s
CiAKLSAgICBfYnVpbGRSZXRhaW5lcnM6IGZ1bmN0aW9uKCkKKyAgICBfYnVpbGRSZXZlcnNlSW5k
ZXg6IGZ1bmN0aW9uKGluZGV4QXJyYXlOYW1lLCBiYWNrUmVmc0FycmF5TmFtZSwgaW5kZXhDYWxs
YmFjaywgZGF0YUNhbGxiYWNrKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9ub2RlSW5kZXgp
CiAgICAgICAgICAgICB0aGlzLl9idWlsZE5vZGVJbmRleCgpOwogCi0gICAgICAgIHRoaXMuX3Jl
dGFpbmVySW5kZXggPSBuZXcgQXJyYXkodGhpcy5fbm9kZUluZGV4Lmxlbmd0aCk7Ci0gICAgICAg
IGZvciAodmFyIGkgPSAwLCBsID0gdGhpcy5fcmV0YWluZXJJbmRleC5sZW5ndGg7IGkgPCBsOyAr
K2kpCi0gICAgICAgICAgICB0aGlzLl9yZXRhaW5lckluZGV4W2ldID0gMDsKKyAgICAgICAgLy8g
QnVpbGRzIHVwIHR3byBhcnJheXM6CisgICAgICAgIC8vICAtICJiYWNrUmVmc0FycmF5IiBpcyBh
IGNvbnRpbnVvdXMgYXJyYXksIHdoZXJlIGVhY2ggbm9kZSBvd25zIGFuCisgICAgICAgIC8vICAg
IGludGVydmFsIChjYW4gYmUgZW1wdHkpIHdpdGggY29ycmVzcG9uZGluZyBiYWNrIHJlZmVyZW5j
ZXMuCisgICAgICAgIC8vICAtICJpbmRleEFycmF5IiBpcyBhbiBhcnJheSBvZiBpbmRleGVzIGlu
IHRoZSAiYmFja1JlZnNBcnJheSIKKyAgICAgICAgLy8gICAgd2l0aCB0aGUgc2FtZSBwb3NpdGlv
bnMgYXMgaW4gdGhlIF9ub2RlSW5kZXguCisgICAgICAgIHZhciBpbmRleEFycmF5ID0gdGhpc1tp
bmRleEFycmF5TmFtZV0gPSBuZXcgQXJyYXkodGhpcy5fbm9kZUluZGV4Lmxlbmd0aCk7CisgICAg
ICAgIGZvciAodmFyIGkgPSAwLCBsID0gaW5kZXhBcnJheS5sZW5ndGg7IGkgPCBsOyArK2kpCisg
ICAgICAgICAgICBpbmRleEFycmF5W2ldID0gMDsKICAgICAgICAgZm9yICh2YXIgbm9kZXNJdGVy
ID0gdGhpcy5fYWxsTm9kZXM7IG5vZGVzSXRlci5oYXNOZXh0KCk7IG5vZGVzSXRlci5uZXh0KCkp
IHsKLSAgICAgICAgICAgIHZhciBub2RlID0gbm9kZXNJdGVyLm5vZGU7Ci0gICAgICAgICAgICBm
b3IgKHZhciBlZGdlc0l0ZXIgPSBub2RlLmVkZ2VzOyBlZGdlc0l0ZXIuaGFzTmV4dCgpOyBlZGdl
c0l0ZXIubmV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGVkZ2UgPSBlZGdlc0l0ZXIuZWRn
ZTsKLSAgICAgICAgICAgICAgICB2YXIgbm9kZUluZGV4ID0gZWRnZS5ub2RlSW5kZXg7Ci0gICAg
ICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0gdGhpcy5fZmluZE5vZGVQb3NpdGlvbkluSW5kZXgo
bm9kZUluZGV4KTsKLSAgICAgICAgICAgICAgICArK3RoaXMuX3JldGFpbmVySW5kZXhbcG9zaXRp
b25dOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5kZXhDYWxsYmFjayhub2Rlc0l0ZXIu
bm9kZSwgZnVuY3Rpb24gKHBvc2l0aW9uKSB7ICsraW5kZXhBcnJheVtwb3NpdGlvbl07IH0pOwog
ICAgICAgICB9Ci0gICAgICAgIHZhciByZXRhaW5lckNvdW50ID0gMDsKLSAgICAgICAgZm9yIChp
ID0gMCwgbCA9IHRoaXMuX3JldGFpbmVySW5kZXgubGVuZ3RoOyBpIDwgbDsgKytpKQotICAgICAg
ICAgICAgcmV0YWluZXJDb3VudCArPSB0aGlzLl9yZXRhaW5lckluZGV4W2ldOwotICAgICAgICB0
aGlzLl9yZXRhaW5lcnMgPSBuZXcgQXJyYXkocmV0YWluZXJDb3VudCArIDEpOwotICAgICAgICB2
YXIgcmV0YWluZXJQb3NpdGlvbiA9IDA7Ci0gICAgICAgIGZvciAoaSA9IDAsIGwgPSB0aGlzLl9y
ZXRhaW5lckluZGV4Lmxlbmd0aDsgaSA8IGw7ICsraSkgewotICAgICAgICAgICAgcmV0YWluZXJD
b3VudCA9IHRoaXMuX3JldGFpbmVyc1tyZXRhaW5lclBvc2l0aW9uXSA9IHRoaXMuX3JldGFpbmVy
SW5kZXhbaV07Ci0gICAgICAgICAgICB0aGlzLl9yZXRhaW5lckluZGV4W2ldID0gcmV0YWluZXJQ
b3NpdGlvbjsKLSAgICAgICAgICAgIHJldGFpbmVyUG9zaXRpb24gKz0gcmV0YWluZXJDb3VudDsK
KyAgICAgICAgdmFyIGJhY2tSZWZzQ291bnQgPSAwOworICAgICAgICBmb3IgKGkgPSAwLCBsID0g
aW5kZXhBcnJheS5sZW5ndGg7IGkgPCBsOyArK2kpCisgICAgICAgICAgICBiYWNrUmVmc0NvdW50
ICs9IGluZGV4QXJyYXlbaV07CisgICAgICAgIHZhciBiYWNrUmVmc0FycmF5ID0gdGhpc1tiYWNr
UmVmc0FycmF5TmFtZV0gPSBuZXcgQXJyYXkoYmFja1JlZnNDb3VudCArIDEpOworICAgICAgICAv
LyBQdXQgaW4gdGhlIGZpcnN0IHNsb3Qgb2YgZWFjaCBiYWNrUmVmc0FycmF5IHNsaWNlIHRoZSBj
b3VudCBvZiBlbnRyaWVzCisgICAgICAgIC8vIHRoYXQgd2lsbCBiZSBmaWxsZWQuCisgICAgICAg
IHZhciBiYWNrUmVmc1Bvc2l0aW9uID0gMDsKKyAgICAgICAgZm9yIChpID0gMCwgbCA9IGluZGV4
QXJyYXkubGVuZ3RoOyBpIDwgbDsgKytpKSB7CisgICAgICAgICAgICBiYWNrUmVmc0NvdW50ID0g
YmFja1JlZnNBcnJheVtiYWNrUmVmc1Bvc2l0aW9uXSA9IGluZGV4QXJyYXlbaV07CisgICAgICAg
ICAgICBpbmRleEFycmF5W2ldID0gYmFja1JlZnNQb3NpdGlvbjsKKyAgICAgICAgICAgIGJhY2tS
ZWZzUG9zaXRpb24gKz0gYmFja1JlZnNDb3VudDsKICAgICAgICAgfQogICAgICAgICBmb3IgKG5v
ZGVzSXRlciA9IHRoaXMuX2FsbE5vZGVzOyBub2Rlc0l0ZXIuaGFzTmV4dCgpOyBub2Rlc0l0ZXIu
bmV4dCgpKSB7Ci0gICAgICAgICAgICB2YXIgbm9kZSA9IG5vZGVzSXRlci5ub2RlOwotICAgICAg
ICAgICAgZm9yICh2YXIgZWRnZXNJdGVyID0gbm9kZS5lZGdlczsgZWRnZXNJdGVyLmhhc05leHQo
KTsgZWRnZXNJdGVyLm5leHQoKSkgewotICAgICAgICAgICAgICAgIHZhciBlZGdlID0gZWRnZXNJ
dGVyLmVkZ2U7Ci0gICAgICAgICAgICAgICAgdmFyIG5vZGVJbmRleCA9IGVkZ2Uubm9kZUluZGV4
OwotICAgICAgICAgICAgICAgIHZhciByZXRJbmRleCA9IHRoaXMuX2dldFJldGFpbmVySW5kZXgo
bm9kZUluZGV4KTsKLSAgICAgICAgICAgICAgICB2YXIgaWR4ID0gcmV0SW5kZXggKyAoLS10aGlz
Ll9yZXRhaW5lcnNbcmV0SW5kZXhdKTsKLSAgICAgICAgICAgICAgICB0aGlzLl9yZXRhaW5lcnNb
aWR4XSA9IG5vZGUubm9kZUluZGV4ICsgdGhpcy5fZmlyc3RFZGdlT2Zmc2V0ICsgZWRnZS5lZGdl
SW5kZXg7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBkYXRhQ2FsbGJhY2sobm9kZXNJdGVy
Lm5vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKGJhY2tSZWZJbmRleCkg
eyByZXR1cm4gYmFja1JlZkluZGV4ICsgKC0tYmFja1JlZnNBcnJheVtiYWNrUmVmSW5kZXhdKTsg
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoYmFja1JlZkluZGV4LCBkZXN0
SW5kZXgpIHsgYmFja1JlZnNBcnJheVtiYWNrUmVmSW5kZXhdID0gZGVzdEluZGV4OyB9KTsKICAg
ICAgICAgfQogICAgIH0sCiAKKyAgICBfYnVpbGRSZXRhaW5lcnM6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHRoaXMuX2J1aWxkUmV2ZXJzZUluZGV4KAorICAgICAgICAgICAgIl9yZXRhaW5l
ckluZGV4IiwKKyAgICAgICAgICAgICJfcmV0YWluZXJzIiwKKyAgICAgICAgICAgIChmdW5jdGlv
biAobm9kZSwgY2FsbGJhY2spCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBmb3Ig
KHZhciBlZGdlc0l0ZXIgPSBub2RlLmVkZ2VzOyBlZGdlc0l0ZXIuaGFzTmV4dCgpOyBlZGdlc0l0
ZXIubmV4dCgpKQorICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fZmluZE5vZGVQ
b3NpdGlvbkluSW5kZXgoZWRnZXNJdGVyLmVkZ2Uubm9kZUluZGV4KSk7CisgICAgICAgICAgICAg
fSkuYmluZCh0aGlzKSwKKyAgICAgICAgICAgIChmdW5jdGlvbiAobm9kZSwgaW5kZXhDYWxsYmFj
aywgZGF0YUNhbGxiYWNrKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgZm9yICh2
YXIgZWRnZXNJdGVyID0gbm9kZS5lZGdlczsgZWRnZXNJdGVyLmhhc05leHQoKTsgZWRnZXNJdGVy
Lm5leHQoKSkgeworICAgICAgICAgICAgICAgICAgICAgdmFyIGVkZ2UgPSBlZGdlc0l0ZXIuZWRn
ZTsKKyAgICAgICAgICAgICAgICAgICAgIHZhciByZXRJbmRleCA9IHRoaXMuX2dldFJldGFpbmVy
SW5kZXgoZWRnZS5ub2RlSW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgZGF0YUNhbGxiYWNr
KGluZGV4Q2FsbGJhY2socmV0SW5kZXgpLCBub2RlLm5vZGVJbmRleCArIHRoaXMuX2ZpcnN0RWRn
ZU9mZnNldCArIGVkZ2UuZWRnZUluZGV4KTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgIH0pLmJpbmQodGhpcykpOworICAgIH0sCisKICAgICBfYnVpbGRBZ2dyZWdhdGVzOiBmdW5j
dGlvbigpCiAgICAgewogICAgICAgICB0aGlzLl9hZ2dyZWdhdGVzID0ge307CkBAIC04MzIsMTEg
Kzg2NywxMCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKIAogICAg
IF9idWlsZE5vZGVJbmRleDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIGNvdW50ID0g
MDsKLSAgICAgICAgZm9yICh2YXIgbm9kZXNJdGVyID0gdGhpcy5fYWxsTm9kZXM7IG5vZGVzSXRl
ci5oYXNOZXh0KCk7IG5vZGVzSXRlci5uZXh0KCksICsrY291bnQpOworICAgICAgICB2YXIgY291
bnQgPSB0aGlzLm5vZGVDb3VudDsKICAgICAgICAgdGhpcy5fbm9kZUluZGV4ID0gbmV3IEFycmF5
KGNvdW50ICsgMSk7CiAgICAgICAgIGNvdW50ID0gMDsKLSAgICAgICAgZm9yIChub2Rlc0l0ZXIg
PSB0aGlzLl9hbGxOb2Rlczsgbm9kZXNJdGVyLmhhc05leHQoKTsgbm9kZXNJdGVyLm5leHQoKSwg
Kytjb3VudCkKKyAgICAgICAgZm9yICh2YXIgbm9kZXNJdGVyID0gdGhpcy5fYWxsTm9kZXM7IG5v
ZGVzSXRlci5oYXNOZXh0KCk7IG5vZGVzSXRlci5uZXh0KCksICsrY291bnQpCiAgICAgICAgICAg
ICB0aGlzLl9ub2RlSW5kZXhbY291bnRdID0gbm9kZXNJdGVyLmluZGV4OwogICAgICAgICB0aGlz
Ll9ub2RlSW5kZXhbY291bnRdID0gdGhpcy5fbm9kZXMubGVuZ3RoOwogICAgIH0sCkBAIC04NjUs
NiArODk5LDMzIEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAg
ICAgICB2YXIgbm9kZVBvc2l0aW9uID0gdGhpcy5fZmluZE5vZGVQb3NpdGlvbkluSW5kZXgobm9k
ZUluZGV4KTsKICAgICAgICAgcmV0dXJuIHRoaXMuX3JldGFpbmVySW5kZXhbbm9kZVBvc2l0aW9u
XTsKICAgICB9LAorCisgICAgX2J1aWxkRG9taW5hdGVkTm9kZXM6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHRoaXMuX2J1aWxkUmV2ZXJzZUluZGV4KAorICAgICAgICAgICAgIl9kb21pbmF0
ZWRJbmRleCIsCisgICAgICAgICAgICAiX2RvbWluYXRlZE5vZGVzIiwKKyAgICAgICAgICAgIChm
dW5jdGlvbiAobm9kZSwgY2FsbGJhY2spCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICB2YXIgZG9taW5hdG9ySW5kZXggPSBub2RlLmRvbWluYXRvckluZGV4OworICAgICAgICAgICAg
ICAgICBpZiAoZG9taW5hdG9ySW5kZXggIT09IG5vZGUubm9kZUluZGV4KQorICAgICAgICAgICAg
ICAgICAgICAgY2FsbGJhY2sodGhpcy5fZmluZE5vZGVQb3NpdGlvbkluSW5kZXgoZG9taW5hdG9y
SW5kZXgpKTsKKyAgICAgICAgICAgICB9KS5iaW5kKHRoaXMpLAorICAgICAgICAgICAgKGZ1bmN0
aW9uIChub2RlLCBpbmRleENhbGxiYWNrLCBkYXRhQ2FsbGJhY2spCisgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICB2YXIgZG9taW5hdG9ySW5kZXggPSBub2RlLmRvbWluYXRvckluZGV4
OworICAgICAgICAgICAgICAgICBpZiAoZG9taW5hdG9ySW5kZXggIT09IG5vZGUubm9kZUluZGV4
KSB7CisgICAgICAgICAgICAgICAgICAgICB2YXIgZG9taW5hdGVkSW5kZXggPSB0aGlzLl9nZXRE
b21pbmF0ZWRJbmRleChkb21pbmF0b3JJbmRleCk7CisgICAgICAgICAgICAgICAgICAgICBkYXRh
Q2FsbGJhY2soaW5kZXhDYWxsYmFjayhkb21pbmF0ZWRJbmRleCksIG5vZGUubm9kZUluZGV4KTsK
KyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0pLmJpbmQodGhpcykpOworICAgIH0s
CisKKyAgICBfZ2V0RG9taW5hdGVkSW5kZXg6IGZ1bmN0aW9uKG5vZGVJbmRleCkKKyAgICB7Cisg
ICAgICAgIHZhciBub2RlUG9zaXRpb24gPSB0aGlzLl9maW5kTm9kZVBvc2l0aW9uSW5JbmRleChu
b2RlSW5kZXgpOworICAgICAgICByZXR1cm4gdGhpcy5fZG9taW5hdGVkSW5kZXhbbm9kZVBvc2l0
aW9uXTsKKyAgICB9LAogICAKICAgICBfbWFya0ludmlzaWJsZUVkZ2VzOiBmdW5jdGlvbigpCiAg
ICAgewpAQCAtOTM3LDcgKzk5OCwxMyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3Rv
dHlwZSA9IHsKIAogICAgIGNyZWF0ZU5vZGVzUHJvdmlkZXJGb3JDbGFzczogZnVuY3Rpb24oY2xh
c3NOYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90Tm9kZXNQcm92aWRlcih0aGlzLCBudWxsLCBjbGFzc05hbWUpOworICAgICAgICByZXR1cm4g
bmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2Rlc1Byb3ZpZGVyKHRoaXMsIG51bGwsIHRo
aXMuYWdncmVnYXRlcyhmYWxzZSlbY2xhc3NOYW1lXS5pZHhzKTsKKyAgICB9LAorCisgICAgY3Jl
YXRlTm9kZXNQcm92aWRlckZvckRvbWluYXRvcjogZnVuY3Rpb24obm9kZUluZGV4LCBmaWx0ZXIp
CisgICAgeworICAgICAgICB2YXIgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
Tm9kZSh0aGlzLCBub2RlSW5kZXgpOworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3ROb2Rlc1Byb3ZpZGVyKHRoaXMsIHRoaXMuX3BhcnNlRmlsdGVyKGZpbHRlciks
IHRoaXMuX2RvbWluYXRlZE5vZGVzT2ZOb2RlKG5vZGUpKTsKICAgICB9LAogCiAgICAgY3JlYXRl
UGF0aEZpbmRlcjogZnVuY3Rpb24odGFyZ2V0Tm9kZUluZGV4LCBza2lwSGlkZGVuKQpAQCAtOTUx
LDExICsxMDE4LDEyIEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewog
ICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGaWx0ZXJlZE9yZGVyZWRJdGVy
YXRvciA9IGZ1bmN0aW9uKGl0ZXJhdG9yLCBmaWx0ZXIsIGl0ZXJhdGlvbk9yZGVyKQorV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVkT3JkZXJlZEl0ZXJhdG9yID0gZnVuY3Rpb24oaXRl
cmF0b3IsIGZpbHRlciwgdW5maWx0ZXJlZEl0ZXJhdGlvbk9yZGVyKQogewogICAgIHRoaXMuX2Zp
bHRlciA9IGZpbHRlcjsKICAgICB0aGlzLl9pdGVyYXRvciA9IGl0ZXJhdG9yOwotICAgIHRoaXMu
X2l0ZXJhdGlvbk9yZGVyID0gaXRlcmF0aW9uT3JkZXIgPyBpdGVyYXRpb25PcmRlci5zbGljZSgw
KSA6IG51bGw7CisgICAgdGhpcy5fdW5maWx0ZXJlZEl0ZXJhdGlvbk9yZGVyID0gdW5maWx0ZXJl
ZEl0ZXJhdGlvbk9yZGVyOworICAgIHRoaXMuX2l0ZXJhdGlvbk9yZGVyID0gbnVsbDsKICAgICB0
aGlzLl9wb3NpdGlvbiA9IDA7CiAgICAgdGhpcy5fY3VycmVudENvbXBhcmF0b3IgPSBudWxsOwog
ICAgIHRoaXMuX2xhc3RDb21wYXJhdG9yID0gbnVsbDsKQEAgLTk2NCwxNiArMTAzMiwzMiBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RmlsdGVyZWRPcmRlcmVkSXRlcmF0b3IgPSBmdW5jdGlv
bihpdGVyYXRvciwgZmlsdGVyLCBpdAogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVk
T3JkZXJlZEl0ZXJhdG9yLnByb3RvdHlwZSA9IHsKICAgICBfY3JlYXRlSXRlcmF0aW9uT3JkZXI6
IGZ1bmN0aW9uKCkKICAgICB7CisgICAgICAgIGlmICh0aGlzLl9pdGVyYXRpb25PcmRlcikKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHRoaXMuX3VuZmlsdGVyZWRJdGVyYXRpb25P
cmRlciAmJiAhdGhpcy5fZmlsdGVyKSB7CisgICAgICAgICAgICB0aGlzLl9pdGVyYXRpb25PcmRl
ciA9IHRoaXMuX3VuZmlsdGVyZWRJdGVyYXRpb25PcmRlci5zbGljZSgwKTsKKyAgICAgICAgICAg
IHRoaXMuX3VuZmlsdGVyZWRJdGVyYXRpb25PcmRlciA9IG51bGw7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KICAgICAgICAgdGhpcy5faXRlcmF0aW9uT3JkZXIgPSBbXTsKICAgICAg
ICAgdmFyIGl0ZXJhdG9yID0gdGhpcy5faXRlcmF0b3I7Ci0gICAgICAgIGlmICghdGhpcy5fZmls
dGVyKSB7CisgICAgICAgIGlmICghdGhpcy5fdW5maWx0ZXJlZEl0ZXJhdGlvbk9yZGVyICYmICF0
aGlzLl9maWx0ZXIpIHsKICAgICAgICAgICAgIGZvciAoaXRlcmF0b3IuZmlyc3QoKTsgaXRlcmF0
b3IuaGFzTmV4dCgpOyBpdGVyYXRvci5uZXh0KCkpCiAgICAgICAgICAgICAgICAgdGhpcy5faXRl
cmF0aW9uT3JkZXIucHVzaChpdGVyYXRvci5pbmRleCk7Ci0gICAgICAgIH0gZWxzZSB7CisgICAg
ICAgIH0gZWxzZSBpZiAoIXRoaXMuX3VuZmlsdGVyZWRJdGVyYXRpb25PcmRlcikgewogICAgICAg
ICAgICAgZm9yIChpdGVyYXRvci5maXJzdCgpOyBpdGVyYXRvci5oYXNOZXh0KCk7IGl0ZXJhdG9y
Lm5leHQoKSkgewogICAgICAgICAgICAgICAgIGlmICh0aGlzLl9maWx0ZXIoaXRlcmF0b3IuaXRl
bSkpCiAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2l0ZXJhdGlvbk9yZGVyLnB1c2goaXRlcmF0
b3IuaW5kZXgpOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
dmFyIG9yZGVyID0gdGhpcy5fdW5maWx0ZXJlZEl0ZXJhdGlvbk9yZGVyLmNvbnN0cnVjdG9yID09
PSBBcnJheSA/CisgICAgICAgICAgICAgICAgdGhpcy5fdW5maWx0ZXJlZEl0ZXJhdGlvbk9yZGVy
IDogdGhpcy5fdW5maWx0ZXJlZEl0ZXJhdGlvbk9yZGVyLnNsaWNlKDApOworICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDAsIGwgPSBvcmRlci5sZW5ndGg7IGkgPCBsOyArK2kpIHsKKyAgICAgICAg
ICAgICAgICBpdGVyYXRvci5pbmRleCA9IG9yZGVyW2ldOworICAgICAgICAgICAgICAgIGlmICh0
aGlzLl9maWx0ZXIoaXRlcmF0b3IuaXRlbSkpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2l0
ZXJhdGlvbk9yZGVyLnB1c2goaXRlcmF0b3IuaW5kZXgpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgdGhpcy5fdW5maWx0ZXJlZEl0ZXJhdGlvbk9yZGVyID0gbnVsbDsKICAgICAgICAgfQog
ICAgIH0sCiAKQEAgLTEwMDksOCArMTA5Myw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RG
aWx0ZXJlZE9yZGVyZWRJdGVyYXRvci5wcm90b3R5cGUgPSB7CiAKICAgICBnZXQgbGVuZ3RoKCkK
ICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5faXRlcmF0aW9uT3JkZXIpCi0gICAgICAgICAgICB0
aGlzLl9jcmVhdGVJdGVyYXRpb25PcmRlcigpOworICAgICAgICB0aGlzLl9jcmVhdGVJdGVyYXRp
b25PcmRlcigpOwogICAgICAgICByZXR1cm4gdGhpcy5faXRlcmF0aW9uT3JkZXIubGVuZ3RoOwog
ICAgIH0sCiAKQEAgLTEwMjEsOCArMTEwNCw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RG
aWx0ZXJlZE9yZGVyZWRJdGVyYXRvci5wcm90b3R5cGUgPSB7CiAKICAgICBzZXJpYWxpemVOZXh0
SXRlbXM6IGZ1bmN0aW9uKGNvdW50KQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9pdGVyYXRp
b25PcmRlcikKLSAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUl0ZXJhdGlvbk9yZGVyKCk7CisgICAg
ICAgIHRoaXMuX2NyZWF0ZUl0ZXJhdGlvbk9yZGVyKCk7CiAgICAgICAgIHZhciByZXN1bHQgPSBu
ZXcgQXJyYXkoY291bnQpOwogICAgICAgICBpZiAodGhpcy5fbGFzdENvbXBhcmF0b3IgIT09IHRo
aXMuX2N1cnJlbnRDb21wYXJhdG9yKQogICAgICAgICAgICAgdGhpcy5zb3J0KHRoaXMuX2N1cnJl
bnRDb21wYXJhdG9yLCB0aGlzLl9wb3NpdGlvbiwgdGhpcy5faXRlcmF0aW9uT3JkZXIubGVuZ3Ro
IC0gMSwgY291bnQpOwpAQCAtMTEzMiwxMyArMTIxNCwxMCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90RWRnZXNQcm92aWRlci5wcm90b3R5cGUgPSB7CiAKIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RFZGdlc1Byb3ZpZGVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90RmlsdGVyZWRPcmRlcmVkSXRlcmF0b3IucHJvdG90eXBlOwogCi1XZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90Tm9kZXNQcm92aWRlciA9IGZ1bmN0aW9uKHNuYXBzaG90LCBmaWx0ZXIs
IGNsYXNzTmFtZSkKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2Rlc1Byb3ZpZGVyID0gZnVu
Y3Rpb24oc25hcHNob3QsIGZpbHRlciwgbm9kZUluZGV4ZXMpCiB7CiAgICAgdGhpcy5zbmFwc2hv
dCA9IHNuYXBzaG90OwotICAgIGlmICghY2xhc3NOYW1lKQotICAgICAgICBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90RmlsdGVyZWRPcmRlcmVkSXRlcmF0b3IuY2FsbCh0aGlzLCBzbmFwc2hvdC5f
YWxsTm9kZXMsIGZpbHRlcik7Ci0gICAgZWxzZQotICAgICAgICBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90RmlsdGVyZWRPcmRlcmVkSXRlcmF0b3IuY2FsbCh0aGlzLCBzbmFwc2hvdC5fYWxsTm9k
ZXMsIG51bGwsIHNuYXBzaG90LmFnZ3JlZ2F0ZXMoZmFsc2UpW2NsYXNzTmFtZV0uaWR4cyk7Cisg
ICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVkT3JkZXJlZEl0ZXJhdG9yLmNhbGwo
dGhpcywgc25hcHNob3QuX2FsbE5vZGVzLCBmaWx0ZXIsIG5vZGVJbmRleGVzKTsKIH0KIAogV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVzUHJvdmlkZXIucHJvdG90eXBlID0gewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RQcm94
eS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90UHJv
eHkuanMKaW5kZXggNmM4NzBmNS4uOTI3ODhmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RQcm94eS5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFByb3h5LmpzCkBAIC0zMDUsNiAr
MzA1LDExIEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHJldHVybiB0aGlzLmNhbGxGYWN0b3J5TWV0aG9kKG51bGwsICJjcmVhdGVOb2Rlc1By
b3ZpZGVyRm9yQ2xhc3MiLCAiV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3ZpZGVyUHJveHki
LCBjbGFzc05hbWUpOwogICAgIH0sCiAKKyAgICBjcmVhdGVOb2Rlc1Byb3ZpZGVyRm9yRG9taW5h
dG9yOiBmdW5jdGlvbihub2RlSW5kZXgsIGZpbHRlcikKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLmNhbGxGYWN0b3J5TWV0aG9kKG51bGwsICJjcmVhdGVOb2Rlc1Byb3ZpZGVyRm9yRG9taW5h
dG9yIiwgIldlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm92aWRlclByb3h5Iiwgbm9kZUluZGV4
LCBmaWx0ZXIpOworICAgIH0sCisKICAgICBjcmVhdGVQYXRoRmluZGVyOiBmdW5jdGlvbih0YXJn
ZXROb2RlSW5kZXgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5jYWxsRmFjdG9yeU1ldGhv
ZChudWxsLCAiY3JlYXRlUGF0aEZpbmRlciIsICJXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UGF0
aEZpbmRlclByb3h5IiwgdGFyZ2V0Tm9kZUluZGV4KTsK
</data>
<flag name="review"
          id="91830"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="91831"
          type_id="3"
          status="-"
          setter="mnaganov"
    />
          </attachment>
      

    </bug>

</bugzilla>