<?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>84849</bug_id>
          
          <creation_ts>2012-04-25 05:17:32 -0700</creation_ts>
          <short_desc>Web Inspector: use composite node provider for diff nodes in heap profiler</short_desc>
          <delta_ts>2012-04-25 05:31:20 -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="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</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>609661</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-04-25 05:17:32 -0700</bug_when>
    <thetext>Instead of overriding HeapSnapshotGridNode.prototype.populateChildren in HeapSnapshotDiffNode we should use a composite nodes provider which will populate first added nodes and after that deleted ones. This step is necessary for adding &quot;reveal element in heap profile&quot; action.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609662</commentid>
    <comment_count>1</comment_count>
      <attachid>138788</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-04-25 05:24:39 -0700</bug_when>
    <thetext>Created attachment 138788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609663</commentid>
    <comment_count>2</comment_count>
      <attachid>138788</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-25 05:26:51 -0700</bug_when>
    <thetext>Comment on attachment 138788
Patch

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

&gt; Source/WebCore/inspector/front-end/HeapSnapshotGridNodes.js:711
&gt; +    serializeNextItems: function(count, callback)

serializeSubsequentItems.

&gt; Source/WebCore/inspector/front-end/HeapSnapshotGridNodes.js:713
&gt; +        function didReceiveAllItems(items) {

{ on the next line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609665</commentid>
    <comment_count>3</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-04-25 05:29:40 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 138788 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=138788&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshotGridNodes.js:711
&gt; &gt; +    serializeNextItems: function(count, callback)
&gt; 
&gt; serializeSubsequentItems.
&gt; 
Done.

&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshotGridNodes.js:713
&gt; &gt; +        function didReceiveAllItems(items) {
&gt; 
&gt; { on the next line.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609667</commentid>
    <comment_count>4</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-04-25 05:31:20 -0700</bug_when>
    <thetext>Committed r115189: &lt;http://trac.webkit.org/changeset/115189&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138788</attachid>
            <date>2012-04-25 05:24:39 -0700</date>
            <delta_ts>2012-04-25 05:26:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84849-20120425162437.patch</filename>
            <type>text/plain</type>
            <size>23955</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTY4NGI2OWRiZjM3Mjll
YWU2YTI3OWUzMjgwYTUyYzMzNGM3NzZhYi4uMjRkMDI0ZDE4MDJjZDU2YTI3OTU4MWFmZWQ1NmY4
N2UzYzJiYjI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTA0LTI1ICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHVzZSBjb21wb3NpdGUgbm9kZSBwcm92aWRlciBmb3IgZGlmZiBub2RlcyBpbiBoZWFwIHBy
b2ZpbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NDg0OQorCisgICAgICAgIElucm9kdWNlZCBIZWFwU25hcHNob3REaWZmTm9kZXNQcm92aWRlciB3
aGljaCBpcyBiYXNpY2FsbHkgYSBjb21wb3NpdGUgcHJvdmlkZXIKKyAgICAgICAgY29tYmluaW5n
IHByb3ZpZGVycyBmb3IgYWRkZWQgYW5kIGRlbGV0ZWQgbm9kZXMuIFRoaXMgYWxsb3dlZCB0byBy
ZW1vdmUgY3VzdG9tCisgICAgICAgIGltcGxlbWVudGF0aW9uIG9mIEhlYXBTbmFwc2hvdEdyaWRO
b2RlLnByb3RvdHlwZS5wb3B1bGF0ZUNoaWxkcmVuLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNo
b3QuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZXNQcm92aWRlci5w
cm90b3R5cGUuc29ydC5zb3J0QnlOb2RlRmllbGQpOiBtb3ZlZCBpbmRleCBhc3NpZ25tZW50IHRv
IHNvcnRCeUNvbXBhcmF0b3IKKyAgICAgICAgc28gdGhhdCBpdCBpcyBkb25lIG9ubHkgb25jZS4K
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2Rlc1Byb3ZpZGVyLnByb3RvdHlw
ZS5zb3J0LnNvcnRCeUNvbXBhcmF0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdE5vZGVzUHJvdmlkZXIucHJvdG90eXBlLnNvcnQpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvSGVhcFNuYXBzaG90R3JpZE5vZGVzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdEdyaWROb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RHcmlkTm9kZS5wcm90b3R5cGUucG9wdWxhdGVDaGlsZHJlbi5jYWxsU2VyaWFsaXplKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUucG9wdWxh
dGVDaGlsZHJlbi5jaGlsZHJlblJldHJpZXZlZC5ub3RpZnkpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZS5wb3B1bGF0ZUNoaWxkcmVuLmNoaWxk
cmVuUmV0cmlldmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9k
ZS5wcm90b3R5cGUucG9wdWxhdGVDaGlsZHJlbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90R3JpZE5vZGUucHJvdG90eXBlLnNvcnQuYWZ0ZXJTb3J0KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUuc29ydCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZk5vZGVzUHJvdmlkZXIpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZOb2Rlc1Byb3ZpZGVyLnByb3RvdHlwZS5kaXNw
b3NlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZXNQcm92aWRl
ci5wcm90b3R5cGUuaXNFbXB0eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
RGlmZk5vZGVzUHJvdmlkZXIucHJvdG90eXBlLnNlcmlhbGl6ZU5leHRJdGVtcyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZk5vZGVzUHJvdmlkZXIucHJvdG90eXBlLnNl
cmlhbGl6ZU5leHRJdGVtcy5kaWRSZWNlaXZlRGVsZXRlZEl0ZW1zKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZXNQcm92aWRlci5wcm90b3R5cGUuc2VyaWFsaXpl
TmV4dEl0ZW1zLmRpZFJlY2VpdmVBZGRlZEl0ZW1zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3REaWZmTm9kZXNQcm92aWRlci5wcm90b3R5cGUuc29ydEFuZFJld2luZC5hZnRl
clNvcnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZOb2Rlc1Byb3Zp
ZGVyLnByb3RvdHlwZS5zb3J0QW5kUmV3aW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3REaWZmTm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlm
Zk5vZGUuX2NyZWF0ZVByb3ZpZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3REaWZmTm9kZS5wcm90b3R5cGUuX2NyZWF0ZUNoaWxkTm9kZSk6CisKIDIwMTItMDQtMjQgIFl1
cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZC4gUmV2ZXJ0IHBhcnQgb2YgdGhlIGNoYW5nZSByMTE1MDYzIHdoaWNoIGNvbW1lbnRlZCBvdXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBz
aG90LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3Qu
anMKaW5kZXggZDQ3NzlhMTJhYzgwNWU3NDVjYWZlYTcxN2FkOWFlZjllOGIyNjM1Mi4uMjZiNTE2
NDg5MWQ5NWFmYzE4NjVkOGNjYjAwYjMzZDUyMmFhZDQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKQEAgLTE5MTcsMTAgKzE5
MTcsOCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZXNQcm92aWRlci5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHZhciBub2RlQSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9k
ZSh0aGlzLnNuYXBzaG90KTsKICAgICAgICAgdmFyIG5vZGVCID0gbmV3IFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3ROb2RlKHRoaXMuc25hcHNob3QpOwogCi0gICAgICAgIGZ1bmN0aW9uIHNvcnRC
eU5vZGVGaWVsZChmaWVsZE5hbWUsIGFzY2VuZGluZywgaW5kZXhBLCBpbmRleEIpCisgICAgICAg
IGZ1bmN0aW9uIHNvcnRCeU5vZGVGaWVsZChmaWVsZE5hbWUsIGFzY2VuZGluZykKICAgICAgICAg
ewotICAgICAgICAgICAgbm9kZUEubm9kZUluZGV4ID0gaW5kZXhBOwotICAgICAgICAgICAgbm9k
ZUIubm9kZUluZGV4ID0gaW5kZXhCOwogICAgICAgICAgICAgdmFyIHZhbHVlQSA9IG5vZGVBW2Zp
ZWxkTmFtZV07CiAgICAgICAgICAgICB2YXIgdmFsdWVCID0gbm9kZUJbZmllbGROYW1lXTsKICAg
ICAgICAgICAgIHZhciByZXN1bHQgPSB2YWx1ZUEgPCB2YWx1ZUIgPyAtMSA6ICh2YWx1ZUEgPiB2
YWx1ZUIgPyAxIDogMCk7CkBAIC0xOTI4LDkgKzE5MjYsMTEgQEAgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdE5vZGVzUHJvdmlkZXIucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAg
ZnVuY3Rpb24gc29ydEJ5Q29tcGFyYXRvcihpbmRleEEsIGluZGV4QikgewotICAgICAgICAgICAg
dmFyIHJlc3VsdCA9IHNvcnRCeU5vZGVGaWVsZChmaWVsZE5hbWUxLCBhc2NlbmRpbmcxLCBpbmRl
eEEsIGluZGV4Qik7CisgICAgICAgICAgICBub2RlQS5ub2RlSW5kZXggPSBpbmRleEE7CisgICAg
ICAgICAgICBub2RlQi5ub2RlSW5kZXggPSBpbmRleEI7CisgICAgICAgICAgICB2YXIgcmVzdWx0
ID0gc29ydEJ5Tm9kZUZpZWxkKGZpZWxkTmFtZTEsIGFzY2VuZGluZzEpOwogICAgICAgICAgICAg
aWYgKHJlc3VsdCA9PT0gMCkKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBzb3J0QnlOb2RlRmll
bGQoZmllbGROYW1lMiwgYXNjZW5kaW5nMiwgaW5kZXhBLCBpbmRleEIpOworICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IHNvcnRCeU5vZGVGaWVsZChmaWVsZE5hbWUyLCBhc2NlbmRpbmcyKTsKICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RHcmlkTm9kZXMuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdEdyaWROb2Rlcy5q
cwppbmRleCAwYWM3NmUyZDI2ZTJiMGE3NjM5Y2Y5YmMzZmNjOTgxODAyNTZlOGFlLi4yYjBmM2E4
ODViYjEwYjZiMWFiOTg0MTQ3M2IyY2M3YjQwZmE0ZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdEdyaWROb2Rlcy5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdEdyaWROb2Rlcy5q
cwpAQCAtMzMsMTYgKzMzLDE3IEBACiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkRhdGFHcmlk
Tm9kZX0KICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdy
aWR9IHRyZWUKICAqIEBwYXJhbSB7Ym9vbGVhbn0gaGFzQ2hpbGRyZW4KLSAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3ZpZGVyUHJveHl8V2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdEl0ZXJhdG9yc1R1cGxlfSBwcm92aWRlcgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90UHJvdmlkZXJQcm94eXxXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZk5vZGVz
UHJvdmlkZXJ9IHByb3ZpZGVyCiAgKi8KIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9k
ZSA9IGZ1bmN0aW9uKHRyZWUsIGhhc0NoaWxkcmVuLCBwcm92aWRlcikKIHsKICAgICBXZWJJbnNw
ZWN0b3IuRGF0YUdyaWROb2RlLmNhbGwodGhpcywgbnVsbCwgaGFzQ2hpbGRyZW4pOwogICAgIC8q
KgotICAgICAqIEB0eXBlIHtXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvdmlkZXJQcm94eXxX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90SXRlcmF0b3JzVHVwbGV9CisgICAgICogQHR5cGUge1dl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RQcm92aWRlclByb3h5fFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3REaWZmTm9kZXNQcm92aWRlcn0KICAgICAgKi8KICAgICB0aGlzLl9wcm92aWRlciA9IHBy
b3ZpZGVyOwogICAgIHRoaXMuX2RhdGFHcmlkID0gdHJlZTsKKyAgICB0aGlzLl9pbnN0YW5jZUNv
dW50ID0gMDsKICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoInBvcHVsYXRlIiwgdGhpcy5fcG9w
dWxhdGUsIHRoaXMpOwogfQogCkBAIC0xMDcsNyArMTA4LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5yZW1vdmVFdmVudExp
c3RlbmVyKCJwb3B1bGF0ZSIsIHRoaXMuX3BvcHVsYXRlLCB0aGlzKTsKICAgICAgICAgZnVuY3Rp
b24gc29ydGVkKGlnbm9yZWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMucG9wdWxhdGVD
aGlsZHJlbigpOworICAgICAgICAgICAgdGhpcy5fcG9wdWxhdGVDaGlsZHJlbigpOwogICAgICAg
ICB9CiAgICAgICAgIHRoaXMuX3Byb3ZpZGVyLnNvcnRBbmRSZXdpbmQodGhpcy5jb21wYXJhdG9y
KCksIHNvcnRlZC5iaW5kKHRoaXMpKTsKICAgICB9LApAQCAtMTE2LDE1ICsxMTcsOCBAQCBXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAqIEBwYXJh
bSB7P251bWJlcn0gaG93TWFueQogICAgICAqIEBwYXJhbSB7P251bWJlcn0gYXRJbmRleAogICAg
ICAqLwotICAgIHBvcHVsYXRlQ2hpbGRyZW46IGZ1bmN0aW9uKHByb3ZpZGVyLCBob3dNYW55LCBh
dEluZGV4LCBhZnRlclBvcHVsYXRlLCBzdXBwcmVzc05vdGlmeUFib3V0Q29tcGxldGlvbikKKyAg
ICBfcG9wdWxhdGVDaGlsZHJlbjogZnVuY3Rpb24oaG93TWFueSwgYXRJbmRleCwgYWZ0ZXJQb3B1
bGF0ZSkKICAgICB7Ci0gICAgICAgIGlmICghaG93TWFueSAmJiBwcm92aWRlcikgewotICAgICAg
ICAgICAgaG93TWFueSA9IHByb3ZpZGVyLmluc3RhbmNlQ291bnQ7Ci0gICAgICAgICAgICBwcm92
aWRlci5pbnN0YW5jZUNvdW50ID0gMDsKLSAgICAgICAgfQotICAgICAgICBwcm92aWRlciA9IHBy
b3ZpZGVyIHx8IHRoaXMuX3Byb3ZpZGVyOwotICAgICAgICBpZiAoISgiaW5zdGFuY2VDb3VudCIg
aW4gcHJvdmlkZXIpKQotICAgICAgICAgICAgcHJvdmlkZXIuaW5zdGFuY2VDb3VudCA9IDA7CiAg
ICAgICAgIGhvd01hbnkgPSBob3dNYW55IHx8IHRoaXMuX2RhdGFHcmlkLmRlZmF1bHRQb3B1bGF0
ZUNvdW50KCk7CiAgICAgICAgIGF0SW5kZXggPSBhdEluZGV4IHx8IHRoaXMuY2hpbGRyZW4ubGVu
Z3RoOwogICAgICAgICB2YXIgaGF2ZVNhdmVkQ2hpbGRyZW4gPSAhIXRoaXMuX3NhdmVkQ2hpbGRy
ZW47CkBAIC0xNDIsNyArMTM2LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2Rl
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmIChwYXJ0ID49IGhvd01hbnkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgcGFydCArPSB0aGlzLl9kYXRhR3JpZC5kZWZh
dWx0UG9wdWxhdGVDb3VudCgpOwotICAgICAgICAgICAgcHJvdmlkZXIuc2VyaWFsaXplTmV4dEl0
ZW1zKHRoaXMuX2RhdGFHcmlkLmRlZmF1bHRQb3B1bGF0ZUNvdW50KCksIGNoaWxkcmVuUmV0cmll
dmVkLmJpbmQodGhpcykpOworICAgICAgICAgICAgdGhpcy5fcHJvdmlkZXIuc2VyaWFsaXplTmV4
dEl0ZW1zKHRoaXMuX2RhdGFHcmlkLmRlZmF1bHRQb3B1bGF0ZUNvdW50KCksIGNoaWxkcmVuUmV0
cmlldmVkLmJpbmQodGhpcykpOwogICAgICAgICB9CiAgICAgICAgIGZ1bmN0aW9uIGNoaWxkcmVu
UmV0cmlldmVkKGl0ZW1zKQogICAgICAgICB7CkBAIC0xNTYsMjUgKzE1MCwyMyBAQCBXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRDaGlsZCh0aGlzLl9jcmVhdGVDaGlsZE5v
ZGUoaXRlbSwgcHJvdmlkZXIsIHRoaXMpLCBhdEluZGV4KyspOworICAgICAgICAgICAgICAgIHRo
aXMuaW5zZXJ0Q2hpbGQodGhpcy5fY3JlYXRlQ2hpbGROb2RlKGl0ZW0pLCBhdEluZGV4KyspOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgcHJvdmlkZXIuaW5zdGFuY2VDb3VudCArPSBpdGVt
cy5sZW5ndGg7CisgICAgICAgICAgICB0aGlzLl9pbnN0YW5jZUNvdW50ICs9IGl0ZW1zLmxlbmd0
aDsKICAgICAgICAgICAgIGlmIChwYXJ0IDwgaG93TWFueSkgewogICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoY2FsbFNlcmlhbGl6ZS5iaW5kKHRoaXMpLCAwKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChpdGVtcy5oYXNOZXh0KQot
ICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0Q2hpbGQobmV3IFdlYkluc3BlY3Rvci5TaG93TW9y
ZURhdGFHcmlkTm9kZSh0aGlzLnBvcHVsYXRlQ2hpbGRyZW4uYmluZCh0aGlzLCBwcm92aWRlciks
IHRoaXMuX2RhdGFHcmlkLmRlZmF1bHRQb3B1bGF0ZUNvdW50KCksIGxlbmd0aCksIGF0SW5kZXgr
Kyk7CisgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLlNo
b3dNb3JlRGF0YUdyaWROb2RlKHRoaXMuX3BvcHVsYXRlQ2hpbGRyZW4uYmluZCh0aGlzKSwgdGhp
cy5fZGF0YUdyaWQuZGVmYXVsdFBvcHVsYXRlQ291bnQoKSwgbGVuZ3RoKSwgYXRJbmRleCsrKTsK
ICAgICAgICAgICAgIGlmIChhZnRlclBvcHVsYXRlKQogICAgICAgICAgICAgICAgIGFmdGVyUG9w
dWxhdGUoKTsKLSAgICAgICAgICAgIGlmICghc3VwcHJlc3NOb3RpZnlBYm91dENvbXBsZXRpb24p
IHsKLSAgICAgICAgICAgICAgICBmdW5jdGlvbiBub3RpZnkoKQotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInBvcHVs
YXRlIGNvbXBsZXRlIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQobm90aWZ5LmJpbmQodGhpcyksIDApOworICAgICAgICAgICAgZnVuY3Rpb24gbm90aWZ5
KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycygicG9wdWxhdGUgY29tcGxldGUiKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHNldFRpbWVvdXQobm90aWZ5LmJpbmQodGhpcyksIDApOwogICAgICAgICB9CiAgICAgICAgIHNl
dFRpbWVvdXQoY2FsbFNlcmlhbGl6ZS5iaW5kKHRoaXMpLCAwKTsKICAgICB9LApAQCAtMjEwLDcg
KzIwMiw5IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnJlY3Vy
c2l2ZVNvcnRpbmdMZWF2ZSgpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhpcy5wb3B1
bGF0ZUNoaWxkcmVuKHRoaXMuX3Byb3ZpZGVyLCBudWxsLCBudWxsLCBhZnRlclBvcHVsYXRlLmJp
bmQodGhpcykpOworICAgICAgICAgICAgdmFyIGluc3RhbmNlQ291bnQgPSB0aGlzLl9pbnN0YW5j
ZUNvdW50OworICAgICAgICAgICAgdGhpcy5faW5zdGFuY2VDb3VudCA9IDA7CisgICAgICAgICAg
ICB0aGlzLl9wb3B1bGF0ZUNoaWxkcmVuKGluc3RhbmNlQ291bnQsIG51bGwsIGFmdGVyUG9wdWxh
dGUuYmluZCh0aGlzKSk7CiAgICAgICAgIH0KICAgICAgICAgdGhpcy5fcHJvdmlkZXIuc29ydEFu
ZFJld2luZCh0aGlzLmNvbXBhcmF0b3IoKSwgYWZ0ZXJTb3J0LmJpbmQodGhpcykpOwogICAgIH0K
QEAgLTY4OSwzMyArNjgzLDc1IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb25zdHJ1Y3Rv
ck5vZGUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5IZWFwCiAKIC8qKgogICog
QGNvbnN0cnVjdG9yCi0gKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm92aWRl
clByb3h5fSBpdDEKLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3ZpZGVy
UHJveHl9IGl0MgotICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHl9IGJh
c2VTbmFwc2hvdAotICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHl9IHNu
YXBzaG90CisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3ZpZGVyUHJv
eHl9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm92aWRlclByb3h5fSBh
ZGRlZE5vZGVzUHJvdmlkZXIKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFBy
b3ZpZGVyUHJveHl9IGRlbGV0ZWROb2Rlc1Byb3ZpZGVyCiAgKi8KLVdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RJdGVyYXRvcnNUdXBsZSA9IGZ1bmN0aW9uKGl0MSwgaXQyLCBiYXNlU25hcHNob3Qs
IHNuYXBzaG90KQorV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZOb2Rlc1Byb3ZpZGVyID0g
ZnVuY3Rpb24oYWRkZWROb2Rlc1Byb3ZpZGVyLCBkZWxldGVkTm9kZXNQcm92aWRlciwgYWRkZWRD
b3VudCwgcmVtb3ZlZENvdW50KQogewotICAgIHRoaXMuX2l0MSA9IGl0MTsKLSAgICB0aGlzLl9p
dDIgPSBpdDI7Ci0gICAgdGhpcy5iYXNlU25hcHNob3QgPSBiYXNlU25hcHNob3Q7Ci0gICAgdGhp
cy5zbmFwc2hvdCA9IHNuYXBzaG90OworICAgIHRoaXMuX2FkZGVkTm9kZXNQcm92aWRlciA9IGFk
ZGVkTm9kZXNQcm92aWRlcjsKKyAgICB0aGlzLl9kZWxldGVkTm9kZXNQcm92aWRlciA9IGRlbGV0
ZWROb2Rlc1Byb3ZpZGVyOworICAgIHRoaXMuX2FkZGVkQ291bnQgPSBhZGRlZENvdW50OworICAg
IHRoaXMuX3JlbW92ZWRDb3VudCA9IHJlbW92ZWRDb3VudDsKKyAgICB0aGlzLl9zZXJpYWxpemVk
SXRlbXNDb3VudCA9IDA7CiB9CiAKLVdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RJdGVyYXRvcnNU
dXBsZS5wcm90b3R5cGUgPSB7CitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZk5vZGVzUHJv
dmlkZXIucHJvdG90eXBlID0gewogICAgIGRpc3Bvc2U6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAg
ICAgIHRoaXMuX2l0MS5kaXNwb3NlKCk7Ci0gICAgICAgIHRoaXMuX2l0Mi5kaXNwb3NlKCk7Cisg
ICAgICAgIHRoaXMuX2FkZGVkTm9kZXNQcm92aWRlci5kaXNwb3NlKCk7CisgICAgICAgIHRoaXMu
X2RlbGV0ZWROb2Rlc1Byb3ZpZGVyLmRpc3Bvc2UoKTsKKyAgICB9LAorCisgICAgaXNFbXB0eTog
ZnVuY3Rpb24oY2FsbGJhY2spCisgICAgeworICAgICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAg
fSwKKworICAgIHNlcmlhbGl6ZU5leHRJdGVtczogZnVuY3Rpb24oY291bnQsIGNhbGxiYWNrKQor
ICAgIHsKKyAgICAgICAgZnVuY3Rpb24gZGlkUmVjZWl2ZUFsbEl0ZW1zKGl0ZW1zKSB7CisgICAg
ICAgICAgICB0aGlzLl9zZXJpYWxpemVkSXRlbXNDb3VudCArPSBpdGVtcy5sZW5ndGg7CisgICAg
ICAgICAgICBpdGVtcy50b3RhbExlbmd0aCA9IHRoaXMuX2FkZGVkQ291bnQgKyB0aGlzLl9yZW1v
dmVkQ291bnQ7CisgICAgICAgICAgICBjYWxsYmFjayhpdGVtcyk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBkaWRSZWNlaXZlRGVsZXRlZEl0ZW1zKGFkZGVkSXRlbXMsIGl0ZW1zKSB7
CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICAgICAgICAgICAgaXRlbXNbaV0uaXNBZGRlZE5vdFJlbW92ZWQgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICBhZGRlZEl0ZW1zLnB1c2goaXRlbXNbaV0pOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYWRkZWRJdGVtcy5oYXNOZXh0ID0gaXRlbXMuaGFzTmV4dDsKKyAgICAgICAgICAg
IGRpZFJlY2VpdmVBbGxJdGVtcy5jYWxsKHRoaXMsIGFkZGVkSXRlbXMpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gZGlkUmVjZWl2ZUFkZGVkSXRlbXMoaXRlbXMpIHsKKyAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAg
ICAgaXRlbXNbaV0uaXNBZGRlZE5vdFJlbW92ZWQgPSB0cnVlOworICAgICAgICAgICAgaWYgKGl0
ZW1zLmxlbmd0aCA8IGNvdW50KQorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9kZWxldGVk
Tm9kZXNQcm92aWRlci5zZXJpYWxpemVOZXh0SXRlbXMoY291bnQgLSBpdGVtcy5sZW5ndGgsIGRp
ZFJlY2VpdmVEZWxldGVkSXRlbXMuYmluZCh0aGlzLCBpdGVtcykpOworCisgICAgICAgICAgICBp
dGVtcy50b3RhbExlbmd0aCA9IHRoaXMuX2FkZGVkQ291bnQgKyB0aGlzLl9yZW1vdmVkQ291bnQ7
CisgICAgICAgICAgICBpZiAoIWl0ZW1zLmhhc05leHQpCisgICAgICAgICAgICAgICAgaXRlbXMu
aGFzTmV4dCA9ICEhdGhpcy5fcmVtb3ZlZENvdW50OworICAgICAgICAgICAgZGlkUmVjZWl2ZUFs
bEl0ZW1zLmNhbGwodGhpcywgaXRlbXMpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMu
X3NlcmlhbGl6ZWRJdGVtc0NvdW50IDwgdGhpcy5fYWRkZWRDb3VudCkKKyAgICAgICAgICAgIHRo
aXMuX2FkZGVkTm9kZXNQcm92aWRlci5zZXJpYWxpemVOZXh0SXRlbXMoY291bnQsIGRpZFJlY2Vp
dmVBZGRlZEl0ZW1zLmJpbmQodGhpcykpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlz
Ll9kZWxldGVkTm9kZXNQcm92aWRlci5zZXJpYWxpemVOZXh0SXRlbXMoY291bnQsIGRpZFJlY2Vp
dmVEZWxldGVkSXRlbXMuYmluZCh0aGlzLCBbXSkpOwogICAgIH0sCiAKICAgICBzb3J0QW5kUmV3
aW5kOiBmdW5jdGlvbihjb21wYXJhdG9yLCBjYWxsYmFjaykKICAgICB7CisgICAgICAgIHRoaXMu
X3NlcmlhbGl6ZWRJdGVtc0NvdW50ID0gMDsKKwogICAgICAgICBmdW5jdGlvbiBhZnRlclNvcnQo
aWdub3JlZCkKICAgICAgICAgewotICAgICAgICAgICAgdGhpcy5faXQyLnNvcnRBbmRSZXdpbmQo
Y29tcGFyYXRvciwgY2FsbGJhY2spOworICAgICAgICAgICAgdGhpcy5fZGVsZXRlZE5vZGVzUHJv
dmlkZXIuc29ydEFuZFJld2luZChjb21wYXJhdG9yLCBjYWxsYmFjayk7CiAgICAgICAgIH0KLSAg
ICAgICAgdGhpcy5faXQxLnNvcnRBbmRSZXdpbmQoY29tcGFyYXRvciwgYWZ0ZXJTb3J0LmJpbmQo
dGhpcykpOworICAgICAgICB0aGlzLl9hZGRlZE5vZGVzUHJvdmlkZXIuc29ydEFuZFJld2luZChj
b21wYXJhdG9yLCBhZnRlclNvcnQuYmluZCh0aGlzKSk7CiAgICAgfQogfTsKIApAQCAtNzI2LDcg
Kzc2Miw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RJdGVyYXRvcnNUdXBsZS5wcm90b3R5
cGUgPSB7CiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZk5vZGUgPSBmdW5jdGlvbih0cmVl
LCBjbGFzc05hbWUsIGRpZmZGb3JDbGFzcykKIHsKICAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90R3JpZE5vZGUuY2FsbCh0aGlzLCB0cmVlLCB0cnVlLAotICAgICAgICBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90RGlmZk5vZGUuX2NyZWF0ZVByb3ZpZGVyKHRyZWUsIGNsYXNzTmFtZSwgZGlm
ZkZvckNsYXNzLmRlbGV0ZWRJbmRleGVzKSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3REaWZmTm9kZS5fY3JlYXRlUHJvdmlkZXIodHJlZSwgY2xhc3NOYW1lLCBkaWZmRm9yQ2xh
c3MuZGVsZXRlZEluZGV4ZXMsIGRpZmZGb3JDbGFzcy5hZGRlZENvdW50LCBkaWZmRm9yQ2xhc3Mu
cmVtb3ZlZENvdW50KSk7CiAgICAgdGhpcy5fbmFtZSA9IGNsYXNzTmFtZTsKIAogICAgIHRoaXMu
X2FkZGVkQ291bnQgPSBkaWZmRm9yQ2xhc3MuYWRkZWRDb3VudDsKQEAgLTczNywyMyArNzczLDIy
IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZSA9IGZ1bmN0aW9uKHRyZWUsIGNs
YXNzTmFtZSwgZGlmZkZvckNsYXNzKQogICAgIHRoaXMuX3NpemVEZWx0YSA9IGRpZmZGb3JDbGFz
cy5zaXplRGVsdGE7CiB9CiAKLVdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZS5fY3Jl
YXRlUHJvdmlkZXIgPSBmdW5jdGlvbih0cmVlLCBjbGFzc05hbWUsIGRlbGV0ZWRJbmRleGVzKQor
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdERpZmZOb2RlLl9jcmVhdGVQcm92aWRlciA9IGZ1bmN0
aW9uKHRyZWUsIGNsYXNzTmFtZSwgZGVsZXRlZEluZGV4ZXMsIGFkZGVkQ291bnQsIHJlbW92ZWRD
b3VudCkKIHsKLSAgICB2YXIgcmVzdWx0ID0gIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
SXRlcmF0b3JzVHVwbGUoCisgICAgdmFyIHJlc3VsdCA9ICBuZXcgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdERpZmZOb2Rlc1Byb3ZpZGVyKAogICAgICAgICB0cmVlLnNuYXBzaG90LmNyZWF0ZUFk
ZGVkTm9kZXNQcm92aWRlcih0cmVlLmJhc2VTbmFwc2hvdC51aWQsIGNsYXNzTmFtZSksCiAgICAg
ICAgIHRyZWUuYmFzZVNuYXBzaG90LmNyZWF0ZURlbGV0ZWROb2Rlc1Byb3ZpZGVyKGRlbGV0ZWRJ
bmRleGVzKSwKLSAgICAgICAgdHJlZS5iYXNlU25hcHNob3QsCi0gICAgICAgIHRyZWUuc25hcHNo
b3QpOworICAgICAgICBhZGRlZENvdW50LCByZW1vdmVkQ291bnQpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZS5wcm90b3R5cGUgPSB7
Ci0gICAgX2NyZWF0ZUNoaWxkTm9kZTogZnVuY3Rpb24oaXRlbSwgcHJvdmlkZXIpCisgICAgX2Ny
ZWF0ZUNoaWxkTm9kZTogZnVuY3Rpb24oaXRlbSkKICAgICB7Ci0gICAgICAgIGlmIChwcm92aWRl
ciA9PT0gdGhpcy5fcHJvdmlkZXIuX2l0MSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEluc3RhbmNlTm9kZSh0aGlzLl9kYXRhR3JpZCwgbnVsbCwgdGhp
cy5fcHJvdmlkZXIuc25hcHNob3QsIGl0ZW0pOworICAgICAgICBpZiAoaXRlbS5pc0FkZGVkTm90
UmVtb3ZlZCkKKyAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dEluc3RhbmNlTm9kZSh0aGlzLl9kYXRhR3JpZCwgbnVsbCwgdGhpcy5fZGF0YUdyaWQuc25hcHNo
b3QsIGl0ZW0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RJbnN0YW5jZU5vZGUodGhpcy5fZGF0YUdyaWQsIHRoaXMuX3Byb3Zp
ZGVyLmJhc2VTbmFwc2hvdCwgbnVsbCwgaXRlbSk7CisgICAgICAgICAgICByZXR1cm4gbmV3IFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RJbnN0YW5jZU5vZGUodGhpcy5fZGF0YUdyaWQsIHRoaXMu
X2RhdGFHcmlkLmJhc2VTbmFwc2hvdCwgbnVsbCwgaXRlbSk7CiAgICAgfSwKIAogICAgIF9jaGls
ZEhhc2hGb3JFbnRpdHk6IGZ1bmN0aW9uKG5vZGUpCkBAIC03ODIsMjQgKzgxNyw2IEBAIFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3REaWZmTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVy
biBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RmlsdGVyZWRPcmRlcmVkSXRlcmF0b3IucHJvdG90
eXBlLmNyZWF0ZUNvbXBhcmF0b3Ioc29ydEZpZWxkcyk7CiAgICAgfSwKIAotICAgIHBvcHVsYXRl
Q2hpbGRyZW46IGZ1bmN0aW9uKHByb3ZpZGVyLCBob3dNYW55LCBhdEluZGV4LCBhZnRlclBvcHVs
YXRlKQotICAgIHsKLSAgICAgICAgaWYgKCFwcm92aWRlciAmJiAhaG93TWFueSkgewotICAgICAg
ICAgICAgdmFyIGZpcnN0UHJvdmlkZXJQb3B1bGF0ZWQgPSBmdW5jdGlvbigpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLnBy
b3RvdHlwZS5wb3B1bGF0ZUNoaWxkcmVuLmNhbGwodGhpcywgdGhpcy5fcHJvdmlkZXIuX2l0Miwg
dGhpcy5fZGF0YUdyaWQuZGVmYXVsdFBvcHVsYXRlQ291bnQoKSwgYXRJbmRleCwgYWZ0ZXJQb3B1
bGF0ZSwgZmFsc2UpOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUucG9wdWxhdGVDaGlsZHJlbi5jYWxsKHRoaXMs
IHRoaXMuX3Byb3ZpZGVyLl9pdDEsIHRoaXMuX2RhdGFHcmlkLmRlZmF1bHRQb3B1bGF0ZUNvdW50
KCksIGF0SW5kZXgsIGZpcnN0UHJvdmlkZXJQb3B1bGF0ZWQuYmluZCh0aGlzKSwgdHJ1ZSk7Ci0g
ICAgICAgIH0gZWxzZSBpZiAoIWhvd01hbnkpIHsKLSAgICAgICAgICAgIHZhciBmaXJzdFByb3Zp
ZGVyUG9wdWxhdGVkID0gZnVuY3Rpb24oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUucG9wdWxhdGVDaGls
ZHJlbi5jYWxsKHRoaXMsIHRoaXMuX3Byb3ZpZGVyLl9pdDIsIG51bGwsIGF0SW5kZXgsIGFmdGVy
UG9wdWxhdGUsIGZhbHNlKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90R3JpZE5vZGUucHJvdG90eXBlLnBvcHVsYXRlQ2hpbGRyZW4uY2FsbCh0
aGlzLCB0aGlzLl9wcm92aWRlci5faXQxLCBudWxsLCBhdEluZGV4LCBmaXJzdFByb3ZpZGVyUG9w
dWxhdGVkLmJpbmQodGhpcyksIHRydWUpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUucG9wdWxhdGVDaGlsZHJl
bi5jYWxsKHRoaXMsIHByb3ZpZGVyLCBob3dNYW55LCBhdEluZGV4LCBhZnRlclBvcHVsYXRlLCBm
YWxzZSk7Ci0gICAgfSwKLQogICAgIF9zaWduRm9yRGVsdGE6IGZ1bmN0aW9uKGRlbHRhKQogICAg
IHsKICAgICAgICAgaWYgKGRlbHRhID09PSAwKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFjNmQ5ZTU1MGVjMGRmZDQ4NTlh
ODE1YThiOGQ3N2Q3NzE1YzYwNmMuLjUxNzNjMWFmYTBkYTlhMmI1NWJiZWJiZWU3Yjg2N2RmZDI3
MGUyM2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNC0yNSAgWXVyeSBTZW1pa2hhdHNr
eSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiB1c2UgY29t
cG9zaXRlIG5vZGUgcHJvdmlkZXIgZm9yIGRpZmYgbm9kZXMgaW4gaGVhcCBwcm9maWxlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ4NDkKKworICAg
ICAgICBJbnJvZHVjZWQgSGVhcFNuYXBzaG90RGlmZk5vZGVzUHJvdmlkZXIgd2hpY2ggaXMgYmFz
aWNhbGx5IGEgY29tcG9zaXRlIHByb3ZpZGVyCisgICAgICAgIGNvbWJpbmluZyBwcm92aWRlcnMg
Zm9yIGFkZGVkIGFuZCBkZWxldGVkIG5vZGVzLiBUaGlzIGFsbG93ZWQgdG8gcmVtb3ZlIGN1c3Rv
bQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBIZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5
cGUucG9wdWxhdGVDaGlsZHJlbi4KKworICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29tcGFyaXNv
bi1leHBhbnNpb24tcHJlc2VydmVkLXdoZW4tc29ydGluZy5odG1sOgorICAgICAgICAqIGluc3Bl
Y3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbXBhcmlzb24tc2hvdy1hbGwuaHRtbDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb21wYXJpc29uLXNob3du
LW5vZGUtY291bnQtcHJlc2VydmVkLXdoZW4tc29ydGluZy5odG1sOgorCiAyMDEyLTA0LTI0ICBQ
aGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCBHVEsgc3ZnIHJlYmFzZWxpbmUgYWZ0ZXIgcjExNTA4NS4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbXBhcmlzb24tZXhwYW5z
aW9uLXByZXNlcnZlZC13aGVuLXNvcnRpbmcuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9w
cm9maWxlci9oZWFwLXNuYXBzaG90LWNvbXBhcmlzb24tZXhwYW5zaW9uLXByZXNlcnZlZC13aGVu
LXNvcnRpbmcuaHRtbAppbmRleCA2OTRkNzRmZTdhMmI3NzNmYjFmOGExMzA4MjI3MGZjZTI2YmI2
MWJjLi5mNmQ4OGNhMDdmMjQ3NjNjYjQzYWQ3ZDY2Y2FiNjUzYWFmN2E3OGMzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb21wYXJpc29u
LWV4cGFuc2lvbi1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29tcGFyaXNvbi1leHBhbnNpb24tcHJl
c2VydmVkLXdoZW4tc29ydGluZy5odG1sCkBAIC0zOCwxOSArMzgsMTAgQEAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICB2YXIgYnV0dG9uc05v
ZGUgPSBJbnNwZWN0b3JUZXN0LmZpbmRCdXR0b25zTm9kZShyb3cpOwogICAgICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWJ1dHRvbnNOb2RlLCAibm8g
YnV0dG9ucyBub2RlIGZvdW5kISIpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmNsaWNrU2hvd01vcmVCdXR0b24oInNob3dBbGwiLCBidXR0b25zTm9kZSwgc3RlcDMpOworICAg
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrU2hvd01vcmVCdXR0b24oInNob3dB
bGwiLCBidXR0b25zTm9kZSwgc3RlcDQpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDMoKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIHZhciByb3cgPSBJbnNwZWN0b3JUZXN0LmZpbmRSb3coIm9iamVjdCIsICJCIik7
Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFyb3cs
ICJcIkJcIiByb3ciKTsKLSAgICAgICAgICAgICAgICB2YXIgYnV0dG9uc05vZGUgPSBJbnNwZWN0
b3JUZXN0LmZpbmRCdXR0b25zTm9kZShyb3cpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhYnV0dG9uc05vZGUsICJubyBidXR0b25zIG5vZGUgZm91
bmQhIik7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja1Nob3dNb3JlQnV0dG9u
KCJzaG93QWxsIiwgYnV0dG9uc05vZGUsIHN0ZXA0KTsKLSAgICAgICAgICAgIH0KLQogICAgICAg
ICAgICAgdmFyIGNvbHVtbnM7CiAgICAgICAgICAgICBmdW5jdGlvbiBzdGVwNCgpCiAgICAgICAg
ICAgICB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1z
bmFwc2hvdC1jb21wYXJpc29uLXNob3ctYWxsLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
cHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb21wYXJpc29uLXNob3ctYWxsLmh0bWwKaW5kZXggODNi
ZGY4N2NkOWU3MjlkZWMwYTgxZWMxM2ZkYzg1NDQwODI0YzUwOC4uYjY0ZDI3YjI1NzRmNGM3NjZm
NWJmZmNhZThkZTU1OWE1ZmU2YjFmNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtY29tcGFyaXNvbi1zaG93LWFsbC5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbXBhcmlzb24tc2hv
dy1hbGwuaHRtbApAQCAtMzcsNDYgKzM3LDM3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICB2YXIgY291bnRBOworICAgICAgICAgICAgdmFyIGNvdW50QjsK
ICAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKHJvdykKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBjb3VudEEgPSByb3cuZGF0YVsiYWRkZWRDb3VudCJdOworICAgICAgICAgICAgICAg
IGNvdW50QSA9IHJvdy5fYWRkZWRDb3VudDsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydEVxdWFscyh0cnVlLCBjb3VudEEgPiAwLCAiY291bnRBID4gMCIpOworICAgICAgICAg
ICAgICAgIGNvdW50QiA9IHJvdy5fcmVtb3ZlZENvdW50OworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsIGNvdW50QiA+IDAsICJjb3VudEIgPiAwIik7CisK
ICAgICAgICAgICAgICAgICB2YXIgYnV0dG9uc05vZGUgPSBJbnNwZWN0b3JUZXN0LmZpbmRCdXR0
b25zTm9kZShyb3cpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxz
KHRydWUsICEhYnV0dG9uc05vZGUsICJidXR0b25zIG5vZGUgKGFkZGVkKSIpOwogICAgICAgICAg
ICAgICAgIHZhciB3b3JkcyA9IGJ1dHRvbnNOb2RlLnNob3dBbGwudGV4dENvbnRlbnQuc3BsaXQo
IiAiKTsKICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHdvcmRzLmxlbmd0aDsg
KytpKSB7CiAgICAgICAgICAgICAgICAgICAgIHZhciBtYXliZU51bWJlciA9IHBhcnNlSW50KHdv
cmRzW2ldLCAxMCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghaXNOYU4obWF5YmVOdW1iZXIp
KQotICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoY291
bnRBLCB3b3Jkc1tpXSwgYnV0dG9uc05vZGUuc2hvd0FsbC50ZXh0Q29udGVudCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhjb3VudEEgKyBjb3Vu
dEIsIG1heWJlTnVtYmVyLCBidXR0b25zTm9kZS5zaG93QWxsLnRleHRDb250ZW50KTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja1Nob3dNb3Jl
QnV0dG9uKCJzaG93QWxsIiwgYnV0dG9uc05vZGUsIHN0ZXA0KTsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgdmFyIGNvdW50QjsKICAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA0KHJvdykK
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICB2YXIgcm93c1Nob3duID0gSW5zcGVjdG9y
VGVzdC5jb3VudERhdGFSb3dzKHJvdywgZnVuY3Rpb24obm9kZSkgeyByZXR1cm4gbm9kZS5kYXRh
LmFkZGVkQ291bnQ7IH0pOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1
YWxzKGNvdW50QSwgcm93c1Nob3duLnRvU3RyaW5nKCksICJhZnRlciBzaG93QWxsIGNsaWNrIDEi
KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhjb3VudEEsIHJv
d3NTaG93biwgImFmdGVyIHNob3dBbGwgY2xpY2sgMSIpOwogCi0gICAgICAgICAgICAgICAgY291
bnRCID0gcm93LmRhdGFbInJlbW92ZWRDb3VudCJdOworICAgICAgICAgICAgICAgIGNvdW50QiA9
IHJvdy5fcmVtb3ZlZENvdW50OwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
RXF1YWxzKHRydWUsIGNvdW50QiA+IDAsICJjb3VudEIgPiAwIik7CiAgICAgICAgICAgICAgICAg
dmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVjdG9yVGVzdC5maW5kQnV0dG9uc05vZGUocm93KTsKLSAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWJ1dHRvbnNO
b2RlLCAiYnV0dG9ucyBub2RlIChkZWxldGVkKSIpOwotICAgICAgICAgICAgICAgIHZhciB3b3Jk
cyA9IGJ1dHRvbnNOb2RlLnNob3dBbGwudGV4dENvbnRlbnQuc3BsaXQoIiAiKTsKLSAgICAgICAg
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHdvcmRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHZhciBtYXliZU51bWJlciA9IHBhcnNlSW50KHdvcmRzW2ldLCAxMCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICghaXNOYU4obWF5YmVOdW1iZXIpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoY291bnRCLCB3b3Jkc1tpXSwg
YnV0dG9uc05vZGUuc2hvd0FsbC50ZXh0Q29udGVudCk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tTaG93TW9yZUJ1dHRvbigic2hvd0FsbCIs
IGJ1dHRvbnNOb2RlLCBzdGVwNSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZmFsc2UsICEhYnV0dG9uc05vZGUsICJidXR0b25zIG5v
ZGUgKGRlbGV0ZWQpIik7CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA1KHJvdykKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIgcm93c1Nob3duID0gSW5zcGVjdG9yVGVzdC5j
b3VudERhdGFSb3dzKHJvdywgZnVuY3Rpb24obm9kZSkgeyByZXR1cm4gbm9kZS5kYXRhLnJlbW92
ZWRDb3VudDsgfSk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMo
Y291bnRCLCByb3dzU2hvd24udG9TdHJpbmcoKSwgImFmdGVyIHNob3dBbGwgY2xpY2sgMiIpOwot
ICAgICAgICAgICAgICAgIHZhciBidXR0b25zTm9kZSA9IEluc3BlY3RvclRlc3QuZmluZEJ1dHRv
bnNOb2RlKHJvdyk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMo
ZmFsc2UsICEhYnV0dG9uc05vZGUsICJidXR0b25zIG5vZGUgZm91bmQgYWZ0ZXIgYWxsIHJvd3Mg
c2hvd24iKTsKKyAgICAgICAgICAgICAgICB2YXIgZGVsZXRlZFJvd3NTaG93biA9IEluc3BlY3Rv
clRlc3QuY291bnREYXRhUm93cyhyb3csIGZ1bmN0aW9uKG5vZGUpIHsgcmV0dXJuIG5vZGUuZGF0
YS5yZW1vdmVkQ291bnQ7IH0pOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
RXF1YWxzKGNvdW50QiwgZGVsZXRlZFJvd3NTaG93biwgImRlbGV0ZWQgcm93cyBzaG93biIpOwog
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQobmV4dCwgMCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNu
YXBzaG90LWNvbXBhcmlzb24tc2hvd24tbm9kZS1jb3VudC1wcmVzZXJ2ZWQtd2hlbi1zb3J0aW5n
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1jb21w
YXJpc29uLXNob3duLW5vZGUtY291bnQtcHJlc2VydmVkLXdoZW4tc29ydGluZy5odG1sCmluZGV4
IGUxMzdlZDk4NzkzZjAzNjJiY2YxN2FiN2NjYzA2Yzg3OWVhZjQzMDYuLjgwYzI5YmY3ZjM2NmNj
NmFmYzY3OWUwYmVjMmNlOGI2ZTk2MDE3MDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWNvbXBhcmlzb24tc2hvd24tbm9kZS1jb3VudC1w
cmVzZXJ2ZWQtd2hlbi1zb3J0aW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3By
b2ZpbGVyL2hlYXAtc25hcHNob3QtY29tcGFyaXNvbi1zaG93bi1ub2RlLWNvdW50LXByZXNlcnZl
ZC13aGVuLXNvcnRpbmcuaHRtbApAQCAtNDUsNyArNDUsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHZhciBidXR0b25zTm9kZSA9IElu
c3BlY3RvclRlc3QuZmluZEJ1dHRvbnNOb2RlKHJvdyk7CiAgICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhYnV0dG9uc05vZGUsICJubyBidXR0b25z
IG5vZGUgZm91bmQhIik7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tT
aG93TW9yZUJ1dHRvbigic2hvd05leHQiLCBidXR0b25zTm9kZSwgc3RlcDQpOworICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrU2hvd01vcmVCdXR0b24oInNob3dBbGwiLCBi
dXR0b25zTm9kZSwgc3RlcDQpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApA
QCAtNjAsMTIgKzYwLDEyIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIHZhciBi
SW5zdGFuY2VSb3cgPSBJbnNwZWN0b3JUZXN0LmZpbmRSb3cyKGRlbGV0ZWROb2RlTWF0Y2hlciwg
cm93KTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAh
IWJJbnN0YW5jZVJvdywgIlwiQlwiIGluc3RhbmNlIHJvdyIpOwogICAgICAgICAgICAgICAgIHZh
ciBidXR0b25zTm9kZSA9IEluc3BlY3RvclRlc3QuZmluZEJ1dHRvbnNOb2RlKHJvdywgYkluc3Rh
bmNlUm93KTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVl
LCAhIWJ1dHRvbnNOb2RlLCAibm8gYnV0dG9ucyBub2RlIGZvdW5kISIpOwotICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuY2xpY2tTaG93TW9yZUJ1dHRvbigic2hvd05leHQiLCBidXR0b25z
Tm9kZSwgc3RlcDUpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxz
KGZhbHNlLCAhIWJ1dHRvbnNOb2RlLCAiYnV0dG9ucyBub2RlIGZvdW5kISIpOworICAgICAgICAg
ICAgICAgIHN0ZXA1KCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHZhciBub2RlQ291
bnQ7Ci0gICAgICAgICAgICBmdW5jdGlvbiBzdGVwNShyb3cpCisgICAgICAgICAgICBmdW5jdGlv
biBzdGVwNSgpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgbm9kZUNvdW50ID0gSW5z
cGVjdG9yVGVzdC5jb2x1bW5Db250ZW50cyhjb2x1bW5zWzBdKS5sZW5ndGg7CiAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgbm9kZUNvdW50ID4gMCwgIm5v
ZGVDb3VudCA+IDAiKTsK
</data>
<flag name="review"
          id="144242"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>