<?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>57856</bug_id>
          
          <creation_ts>2011-04-05 09:51:50 -0700</creation_ts>
          <short_desc>Web Inspector: [Chromium] Add layout test for Summary view of detailed heap snapshots.</short_desc>
          <delta_ts>2011-04-06 01:05:09 -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>379672</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-04-05 09:51:50 -0700</bug_when>
    <thetext>We need tests for this new panel. This change adds tests for the first one of its four views.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379683</commentid>
    <comment_count>1</comment_count>
      <attachid>88263</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-04-05 09:55:20 -0700</bug_when>
    <thetext>Created attachment 88263
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380198</commentid>
    <comment_count>2</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-04-06 01:05:09 -0700</bug_when>
    <thetext>Manually committed http://trac.webkit.org/changeset/83031

2011-04-05  Mikhail Naganov  &lt;mnaganov@chromium.org&gt;

        Reviewed by Pavel Feldman.

        Web Inspector: [Chromium] Add layout test for Summary view of detailed heap snapshots.
        https://bugs.webkit.org/show_bug.cgi?id=57856

        Test: inspector/profiler/detailed-heapshots-summary.html

        * inspector/front-end/DataGrid.js:
        (WebInspector.DataGrid):
        * inspector/front-end/DetailedHeapshotGridNodes.js:
        (WebInspector.HeapSnapshotGridNode.prototype._populate.doPopulate):
        (WebInspector.HeapSnapshotGridNode.prototype._populate):
        (WebInspector.HeapSnapshotGridNode.prototype.populateChildren):
        (WebInspector.HeapSnapshotGridNode.prototype.sort.doSort):
        (WebInspector.HeapSnapshotGridNode.prototype.sort):
        (WebInspector.HeapSnapshotDiffNode.prototype.populateChildren):
        * inspector/front-end/DetailedHeapshotView.js:
        (WebInspector.HeapSnapshotSortableDataGrid.prototype.sortingChanged):
        * inspector/front-end/ProfilesPanel.js:
        (WebInspector.ProfilesPanel.prototype._finishHeapSnapshot.doParse):
        (WebInspector.ProfilesPanel.prototype._finishHeapSnapshot):

2011-04-05  Mikhail Naganov  &lt;mnaganov@chromium.org&gt;

        Reviewed by Pavel Feldman.

        Web Inspector: [Chromium] Add layout test for Summary view of detailed heap snapshots.
        https://bugs.webkit.org/show_bug.cgi?id=57856

        * http/tests/inspector/inspector-test.js:
        (initialize_InspectorTest.):
        (initialize_InspectorTest):
        * inspector/profiler/detailed-heapshots-summary-expected.txt: Added.
        * inspector/profiler/detailed-heapshots-summary.html: Added.
        * inspector/profiler/detailed-heapshots-test.js: Added.
        * platform/chromium/inspector/profiler/detailed-heapshots-summary-expected.txt: Added.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88263</attachid>
            <date>2011-04-05 09:55:20 -0700</date>
            <delta_ts>2011-04-06 00:54:03 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch-57856</filename>
            <type>text/plain</type>
            <size>30795</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzODUwM2M0Li44NjU3ZDBmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDQt
MDUgIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbQ2hy
b21pdW1dIEFkZCBsYXlvdXQgdGVzdCBmb3IgU3VtbWFyeSB2aWV3IG9mIGRldGFpbGVkIGhlYXAg
c25hcHNob3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTc4NTYKKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0
LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lik6CisgICAgICAgIChpbml0
aWFsaXplX0luc3BlY3RvclRlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9kZXRh
aWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXRlc3QuanM6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9wcm9maWxlci9k
ZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDExLTA0
LTA0ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKaW5kZXggMWU3MDdjYS4uN2M2OGIyMCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3Qu
anMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3Qu
anMKQEAgLTI0MCw2ICsyNDAsMzEgQEAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyID0gZnVuY3Rp
b24ocmVjZWl2ZXIsIG1ldGhvZE5hbWUsIG92ZXJyaWRlLCBvcHRfc3RpY2t5KQogICAgIH07CiB9
CiAKK0luc3BlY3RvclRlc3Qub3ZlcnJpZGUgPSBmdW5jdGlvbihyZWNlaXZlciwgbWV0aG9kTmFt
ZSwgb3ZlcnJpZGUsIG9wdF9zdGlja3kpCit7CisgICAgb3ZlcnJpZGUgPSBJbnNwZWN0b3JUZXN0
LnNhZmVXcmFwKG92ZXJyaWRlKTsKKworICAgIHZhciBvcmlnaW5hbCA9IHJlY2VpdmVyW21ldGhv
ZE5hbWVdOworICAgIGlmICh0eXBlb2Ygb3JpZ2luYWwgIT09ICJmdW5jdGlvbiIpCisgICAgICAg
IHRocm93ICgiQ2Fubm90IGZpbmQgbWV0aG9kIHRvIG92ZXJyaWRlOiAiICsgbWV0aG9kTmFtZSk7
CisKKyAgICByZWNlaXZlclttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKHZhcl9hcmdzKSB7CisgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHZhciByZXN1bHQg
PSBvdmVycmlkZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgICAgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICAgICAgICAgIHRocm93ICgiRXhjZXB0aW9uIGluIG92ZXJyaWRlbiBtZXRo
b2QgJyIgKyBtZXRob2ROYW1lICsgIic6ICIgKyBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSBmaW5hbGx5IHsKKyAgICAgICAgICAgIGlmICghb3B0X3N0aWNreSkKKyAgICAgICAgICAgICAg
ICByZWNlaXZlclttZXRob2ROYW1lXSA9IG9yaWdpbmFsOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfTsKKworICAgIHJldHVybiBvcmlnaW5hbDsKK30KKwogSW5zcGVj
dG9yVGVzdC50ZXh0Q29udGVudFdpdGhMaW5lQnJlYWtzID0gZnVuY3Rpb24obm9kZSkKIHsKICAg
ICB2YXIgYnVmZmVyID0gIiI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJv
ZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjkxYmMwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBz
aG90cy1zdW1tYXJ5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1Rlc3RzIFN1bW1hcnkg
dmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4KKworSGVhcCBwcm9maWxlciBpcyBkaXNh
YmxlZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWls
ZWQtaGVhcHNob3RzLXN1bW1hcnkuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxl
ci9kZXRhaWxlZC1oZWFwc2hvdHMtc3VtbWFyeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjhkNjdmOTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnkuaHRtbApAQCAtMCwwICsx
LDIyNiBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9ImRl
dGFpbGVkLWhlYXBzaG90cy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIHZhciBpbnN0YW5jZUNvdW50ID0gNTU1OworICAgIGZ1bmN0aW9uIGNy
ZWF0ZUhlYXBTbmFwc2hvdCgpCisgICAgeworICAgICAgICByZXR1cm4gSW5zcGVjdG9yVGVzdC5j
cmVhdGVIZWFwU25hcHNob3QoaW5zdGFuY2VDb3VudCk7CisgICAgfQorCisgICAgSW5zcGVjdG9y
VGVzdC5ydW5EZXRhaWxlZEhlYXBzaG90VGVzdFN1aXRlKFsKKyAgICAgICAgZnVuY3Rpb24gdGVz
dFNvcnRpbmcobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC50YWtl
QW5kT3BlblNuYXBzaG90KGNyZWF0ZUhlYXBTbmFwc2hvdCwgc3RlcDEpOworCisgICAgICAgICAg
ICBmdW5jdGlvbiBzdGVwMSgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5zd2l0Y2hUb1ZpZXcoIlN1bW1hcnkiLCBzdGVwMik7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciBjb2x1bW5zOworICAgICAgICAgICAgdmFyIGN1cnJlbnRDb2x1bW47
CisgICAgICAgICAgICB2YXIgY3VycmVudENvbHVtbk9yZGVyOworCisgICAgICAgICAgICBmdW5j
dGlvbiBzdGVwMigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29sdW1ucyA9IElu
c3BlY3RvclRlc3Qudmlld0NvbHVtbnMoKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50Q29sdW1u
ID0gMDsKKyAgICAgICAgICAgICAgICBjdXJyZW50Q29sdW1uT3JkZXIgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICBzdGVwMygpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlv
biBzdGVwMygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDb2x1
bW4gPj0gY29sdW1ucy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV4dCgpOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5jbGlja0NvbHVtbihjb2x1bW5zW2N1cnJlbnRDb2x1bW5dLCBz
dGVwNCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA0KG5ld0Nv
bHVtblN0YXRlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbHVtbnNbY3VycmVu
dENvbHVtbl0gPSBuZXdDb2x1bW5TdGF0ZTsKKyAgICAgICAgICAgICAgICB2YXIgY29udGVudHMg
PSBJbnNwZWN0b3JUZXN0LmNvbHVtbkNvbnRlbnRzKGNvbHVtbnNbY3VycmVudENvbHVtbl0pOwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhY29udGVu
dHMubGVuZ3RoLCAiY29sdW1uIGNvbnRlbnRzIik7CisgICAgICAgICAgICAgICAgdmFyIHNvcnRU
eXBlcyA9IHsgb2JqZWN0OiAidGV4dCIsIGNvdW50OiAibnVtYmVyIiwgc2hhbGxvd1NpemU6ICJz
aXplIiwgcmV0YWluZWRTaXplOiAic2l6ZSIgfTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIXNvcnRUeXBlc1tjb2x1bW5zW2N1cnJlbnRDb2x1bW5d
LmlkZW50aWZpZXJdLCAic29ydCBieSBpZGVudGlmaWVyIik7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5jaGVja0FycmF5SXNTb3J0ZWQoY29udGVudHMsIHNvcnRUeXBlc1tjb2x1bW5z
W2N1cnJlbnRDb2x1bW5dLmlkZW50aWZpZXJdLCBjb2x1bW5zW2N1cnJlbnRDb2x1bW5dLnNvcnQp
OworCisgICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50Q29sdW1uT3JkZXIpCisgICAgICAgICAg
ICAgICAgICAgIGN1cnJlbnRDb2x1bW5PcmRlciA9IHRydWU7CisgICAgICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb2x1bW5PcmRlciA9IGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICArK2N1cnJlbnRDb2x1bW47CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIHN0ZXAzKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAg
ICAgZnVuY3Rpb24gdGVzdFNob3dOZXh0KG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QudGFrZUFuZE9wZW5TbmFwc2hvdChjcmVhdGVIZWFwU25hcHNob3QsIHN0ZXAx
KTsKKworICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDEoKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3Quc3dpdGNoVG9WaWV3KCJTdW1tYXJ5Iiwgc3RlcDIpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgdmFyIHJvdyA9IEluc3BlY3RvclRlc3QuZmluZFJvdygib2Jq
ZWN0IiwgIkEiKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0
cnVlLCAhIXJvdywgIlwiQVwiIHJvdyIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwYW5kUm93KHJvdywgc3RlcDMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5j
dGlvbiBzdGVwMyhyb3cpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHJvd3NT
aG93biA9IEluc3BlY3RvclRlc3QuY291bnREYXRhUm93cyhyb3cpOworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsIHJvd3NTaG93biA8PSBpbnN0YW5jZUNv
dW50LCAic2hvd24gbW9yZSBpbnN0YW5jZXMgdGhhbiBjcmVhdGVkOiAiICsgcm93c1Nob3duICsg
IiA+ICIgKyBpbnN0YW5jZUNvdW50KTsKKyAgICAgICAgICAgICAgICBpZiAocm93c1Nob3duIDwg
aW5zdGFuY2VDb3VudCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgYnV0dG9uc05vZGUgPSBJ
bnNwZWN0b3JUZXN0LmZpbmRCdXR0b25zTm9kZShyb3cpOworICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWJ1dHRvbnNOb2RlLCAiYnV0dG9ucyBu
b2RlIik7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tTaG93TW9yZUJ1
dHRvbigic2hvd05leHQiLCBidXR0b25zTm9kZSwgc3RlcDMpOworICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAocm93c1Nob3duID09PSBpbnN0YW5jZUNvdW50KSB7CisgICAgICAgICAgICAgICAg
ICAgIHZhciBidXR0b25zTm9kZSA9IEluc3BlY3RvclRlc3QuZmluZEJ1dHRvbnNOb2RlKHJvdyk7
CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZhbHNlLCAh
IWJ1dHRvbnNOb2RlLCAiYnV0dG9ucyBub2RlIGZvdW5kIHdoZW4gYWxsIGluc3RhbmNlcyBhcmUg
c2hvd24hIik7CisgICAgICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdFNob3dB
bGwobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC50YWtlQW5kT3Bl
blNuYXBzaG90KGNyZWF0ZUhlYXBTbmFwc2hvdCwgc3RlcDEpOworCisgICAgICAgICAgICBmdW5j
dGlvbiBzdGVwMSgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5zd2l0Y2hUb1ZpZXcoIlN1bW1hcnkiLCBzdGVwMik7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2
YXIgcm93ID0gSW5zcGVjdG9yVGVzdC5maW5kUm93KCJvYmplY3QiLCAiQSIpOworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhcm93LCAiXCJBXCIgcm93
Iik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBhbmRSb3cocm93LCBzdGVwMyk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKHJvdykKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgY291bnQgPSByb3cuZGF0YVsiY291bnQiXTsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhpbnN0YW5jZUNvdW50
LCBjb3VudCk7CisgICAgICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVjdG9yVGVz
dC5maW5kQnV0dG9uc05vZGUocm93KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydEVxdWFscyh0cnVlLCAhIWJ1dHRvbnNOb2RlLCAiYnV0dG9ucyBub2RlIik7CisgICAgICAg
ICAgICAgICAgdmFyIHdvcmRzID0gYnV0dG9uc05vZGUuc2hvd0FsbC50ZXh0Q29udGVudC5zcGxp
dCgiICIpOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd29yZHMubGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1heWJlTnVtYmVyID0gcGFyc2VJbnQo
d29yZHNbaV0sIDEwKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc05hTihtYXliZU51bWJl
cikpCisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhp
bnN0YW5jZUNvdW50LCBtYXliZU51bWJlciwgYnV0dG9uc05vZGUuc2hvd0FsbC50ZXh0Q29udGVu
dCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xp
Y2tTaG93TW9yZUJ1dHRvbigic2hvd0FsbCIsIGJ1dHRvbnNOb2RlLCBzdGVwNCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXA0KHJvdykKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICB2YXIgcm93c1Nob3duID0gSW5zcGVjdG9yVGVzdC5jb3VudERhdGFS
b3dzKHJvdyk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoaW5z
dGFuY2VDb3VudCwgcm93c1Nob3duLCAiYWZ0ZXIgc2hvd0FsbCBjbGljayIpOworICAgICAgICAg
ICAgICAgIHZhciBidXR0b25zTm9kZSA9IEluc3BlY3RvclRlc3QuZmluZEJ1dHRvbnNOb2RlKHJv
dyk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZmFsc2UsICEh
YnV0dG9uc05vZGUsICJidXR0b25zIG5vZGUgZm91bmQgd2hlbiBhbGwgaW5zdGFuY2VzIGFyZSBz
aG93biEiKTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdEV4cGFuc2lvblByZXNlcnZlZFdoZW5Tb3J0aW5n
KG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QudGFrZUFuZE9wZW5T
bmFwc2hvdChjcmVhdGVIZWFwU25hcHNob3QsIHN0ZXAxKTsKKworICAgICAgICAgICAgZnVuY3Rp
b24gc3RlcDEoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
c3dpdGNoVG9WaWV3KCJTdW1tYXJ5Iiwgc3RlcDIpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgY29sdW1uczsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBjb2x1bW5zID0gSW5zcGVjdG9yVGVzdC52aWV3Q29sdW1u
cygpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4oY29sdW1uc1sw
XSwgc3RlcDMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMygp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHJvdyA9IEluc3BlY3RvclRlc3Qu
ZmluZFJvdygib2JqZWN0IiwgIkIiKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydEVxdWFscyh0cnVlLCAhIXJvdywgIlwiQlwiIHJvdyIpOworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwYW5kUm93KHJvdywgZXhwYW5kQkluc3RhbmNlKTsKKyAgICAgICAgICAg
ICAgICBmdW5jdGlvbiBleHBhbmRCSW5zdGFuY2Uocm93KQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgYkluc3RhbmNlUm93ID0gcm93LmNoaWxkcmVuWzBdOworICAgICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWJJbnN0YW5j
ZVJvdywgIlwiQlwiIGluc3RhbmNlIHJvdyIpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGFuZFJvdyhiSW5zdGFuY2VSb3csIGV4cGFuZEEpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBleHBhbmRBKHJvdykKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHByb3BlcnR5TWF0Y2hlcihkYXRhKQor
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0
YS5uYW1lID09PSAiYSIgJiYgZGF0YS52YWx1ZS5jaGFyQXQoMCkgPT09ICJBIjsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB2YXIgYVJvdyA9IEluc3BlY3RvclRl
c3QuZmluZFJvdygib2JqZWN0IiwgcHJvcGVydHlNYXRjaGVyLCByb3cpOworICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWFSb3csICJcImE6IEFc
IiByb3ciKTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBhbmRSb3coYVJv
dywgc3RlcDQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIGNvbHVtbkNvbnRlbnRzOworICAgICAgICAgICAgdmFyIHRlc3RTdGF0ZXMgPSBbIiIs
ICJleHBhbmRlZCIsICJzaG93IG1vcmUiLCAic2hvdyBhbGwiXTsKKyAgICAgICAgICAgIGZ1bmN0
aW9uIHN0ZXA0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXN0U3RhdGVzLnNo
aWZ0KCk7CisgICAgICAgICAgICAgICAgaWYgKCF0ZXN0U3RhdGVzLmxlbmd0aCkgeworICAgICAg
ICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjb2x1bW5Db250ZW50cyA9IEluc3BlY3Rv
clRlc3QuY29sdW1uQ29udGVudHMoY29sdW1uc1swXSk7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5jbGlja0NvbHVtbihjb2x1bW5zWzBdLCBjbGlja1R3aWNlKTsKKyAgICAgICAgICAg
ICAgICBmdW5jdGlvbiBjbGlja1R3aWNlKCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xpY2tDb2x1bW4oY29sdW1uc1swXSwgc3RlcDUpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24g
c3RlcDUoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBuZXdDb2x1bW5Db250
ZW50cyA9IEluc3BlY3RvclRlc3QuY29sdW1uQ29udGVudHMoY29sdW1uc1swXSk7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRDb2x1bW5Db250ZW50c0VxdWFsKGNvbHVtbkNv
bnRlbnRzLCBuZXdDb2x1bW5Db250ZW50cyk7CisKKyAgICAgICAgICAgICAgICB2YXIgcm93ID0g
SW5zcGVjdG9yVGVzdC5maW5kUm93KCJvYmplY3QiLCAiQiIpOworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsICEhcm93LCAiXCJCXCIgcm93Iik7CisgICAg
ICAgICAgICAgICAgdmFyIGJ1dHRvbnNOb2RlID0gSW5zcGVjdG9yVGVzdC5maW5kQnV0dG9uc05v
ZGUocm93KTsKKyAgICAgICAgICAgICAgICBpZiAodGVzdFN0YXRlc1swXSA9PT0gImV4cGFuZGVk
IiB8fCB0ZXN0U3RhdGVzWzBdID09PSAic2hvdyBtb3JlIikgeworICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWJ1dHRvbnNOb2RlLCB0ZXN0U3Rh
dGVzWzBdICsgIjogbm8gYnV0dG9ucyBub2RlIGZvdW5kISIpOworICAgICAgICAgICAgICAgICAg
ICBpZiAodGVzdFN0YXRlc1swXSA9PT0gImV4cGFuZGVkIikKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuY2xpY2tTaG93TW9yZUJ1dHRvbigic2hvd05leHQiLCBidXR0b25z
Tm9kZSwgc3RlcDQpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmNsaWNrU2hvd01vcmVCdXR0b24oInNob3dBbGwiLCBidXR0
b25zTm9kZSwgc3RlcDQpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZhbHNlLCAhIWJ1dHRvbnNOb2RlLCAi
YnV0dG9ucyBub2RlIGZvdW5kIHdoZW4gYWxsIGluc3RhbmNlcyBhcmUgc2hvd24hIik7CisgICAg
ICAgICAgICAgICAgICAgIHN0ZXA0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgXSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0cyBTdW1tYXJ5IHZpZXcgb2YgZGV0YWlsZWQgaGVh
cCBzbmFwc2hvdHMuCis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXRlc3QuanMgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXRlc3QuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFhNjc0MQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtdGVz
dC5qcwpAQCAtMCwwICsxLDMyOSBAQAordmFyIGluaXRpYWxpemVfRGV0YWlsZWRIZWFwc2hvdFRl
c3QgPSBmdW5jdGlvbigpIHsKKworSW5zcGVjdG9yVGVzdC5zdGFydFByb2ZpbGVyVGVzdCA9IGZ1
bmN0aW9uKGNhbGxiYWNrKQoreworICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInByb2ZpbGVz
Iik7CisKKyAgICBmdW5jdGlvbiBwcm9maWxlckVuYWJsZWQoKQorICAgIHsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIlByb2ZpbGVyIHdhcyBlbmFibGVkLiIpOworICAgICAgICAv
LyBXZSBtb2NrIG91dCBQcm9maWxlckFnZW50IC0tIGFzIERSVCBydW5zIGluIHNpbmdsZS1wcm9j
ZXNzIG1vZGUsIEluc3BlY3RvcgorICAgICAgICAvLyBhbmQgdGVzdCBzaGFyZSB0aGUgc2FtZSBo
ZWFwLiBUYWtpbmcgYSBzbmFwc2hvdCB0YWtlcyB0b28gbG9uZyBmb3IgYSB0ZXN0LAorICAgICAg
ICAvLyBzbyB3ZSBwcm92aWRlIHN5bnRoZXRpYyBzbmFwc2hvdHMuCisgICAgICAgIEluc3BlY3Rv
clRlc3QuX3BhbmVsUmVzZXQgPSBJbnNwZWN0b3JUZXN0Lm92ZXJyaWRlKFdlYkluc3BlY3Rvci5w
YW5lbHMucHJvZmlsZXMsICJfcmVzZXQiLCBmdW5jdGlvbigpe30sIHRydWUpOworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3
LnByb3RvdHlwZSwgIl91cGRhdGVQZXJjZW50QnV0dG9uIiwgSW5zcGVjdG9yVGVzdC5fc25hcHNo
b3RWaWV3U2hvd24sIHRydWUpOworCisgICAgICAgIGlmIChQcmVmZXJlbmNlcy5kZXRhaWxlZEhl
YXBQcm9maWxlcykKKyAgICAgICAgICAgIGRldGFpbGVkSGVhcFByb2ZpbGVzRW5hYmxlZCgpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJ
bnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLCAiX3BvcHVsYXRlUHJvZmlsZXMiLCBkZXRhaWxlZEhl
YXBQcm9maWxlc0VuYWJsZWQpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9m
aWxlcy5fZW5hYmxlRGV0YWlsZWRIZWFwUHJvZmlsZXModHJ1ZSk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBmdW5jdGlvbiBkZXRhaWxlZEhlYXBQcm9maWxlc0VuYWJsZWQoKQorICAgIHsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkRldGFpbGVkIGhlYXAgcHJvZmlsZXMgd2Vy
ZSBlbmFibGVkLiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnNhZmVXcmFwKGNhbGxiYWNrKSgp
OworICAgIH0KKworICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLl9wcm9maWxl
ckVuYWJsZWQpCisgICAgICAgIHByb2ZpbGVyRW5hYmxlZCgpOworICAgIGVsc2UgeworICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcywg
Il9wcm9maWxlcldhc0VuYWJsZWQiLCBwcm9maWxlckVuYWJsZWQpOworICAgICAgICBXZWJJbnNw
ZWN0b3IucGFuZWxzLnByb2ZpbGVzLl90b2dnbGVQcm9maWxpbmcoZmFsc2UpOworICAgIH0KK307
CisKK0luc3BlY3RvclRlc3QuY29tcGxldGVQcm9maWxlclRlc3QgPSBmdW5jdGlvbigpCit7Cisg
ICAgLy8gVGhlcmUgaXMgbm8gd2F5IHRvIGRpc2FibGUgZGV0YWlsZWQgaGVhcCBwcm9maWxlcy4K
KworICAgIGZ1bmN0aW9uIGNvbXBsZXRlVGVzdCgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiIik7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJQcm9m
aWxlciB3YXMgZGlzYWJsZWQuIik7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0
KCk7CisgICAgfQorCisgICAgdmFyIHByb2ZpbGVzUGFuZWwgPSBXZWJJbnNwZWN0b3IucGFuZWxz
LnByb2ZpbGVzOworICAgIGlmICghcHJvZmlsZXNQYW5lbC5fcHJvZmlsZXJFbmFibGVkKQorICAg
ICAgICBjb21wbGV0ZVRlc3QoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMsICJfcHJvZmlsZXJXYXNEaXNh
YmxlZCIsIGNvbXBsZXRlVGVzdCk7CisgICAgICAgIHByb2ZpbGVzUGFuZWwuX3RvZ2dsZVByb2Zp
bGluZyhmYWxzZSk7CisgICAgfQorfTsKKworSW5zcGVjdG9yVGVzdC5ydW5EZXRhaWxlZEhlYXBz
aG90VGVzdFN1aXRlID0gZnVuY3Rpb24odGVzdFN1aXRlKQoreworICAgIGlmICghUHJlZmVyZW5j
ZXMuaGVhcFByb2ZpbGVyUHJlc2VudCkgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiSGVhcCBwcm9maWxlciBpcyBkaXNhYmxlZCIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNv
bXBsZXRlVGVzdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFyIHRlc3RTdWl0
ZVRlc3RzID0gdGVzdFN1aXRlLnNsaWNlKCk7CisKKyAgICBmdW5jdGlvbiBydW5uZXIoKQorICAg
IHsKKyAgICAgICAgaWYgKCF0ZXN0U3VpdGVUZXN0cy5sZW5ndGgpIHsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuY29tcGxldGVQcm9maWxlclRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIHZhciBuZXh0VGVzdCA9IHRlc3RTdWl0ZVRlc3RzLnNoaWZ0
KCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIlJ1bm5pbmc6ICIgKyAvZnVuY3Rpb25ccyhbXihdKikvLmV4ZWMo
bmV4dFRlc3QpWzFdKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5fcGFuZWxSZXNldC5jYWxsKFdl
Ykluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnNhZmVX
cmFwKG5leHRUZXN0KShydW5uZXIsIHJ1bm5lcik7CisgICAgfQorCisgICAgSW5zcGVjdG9yVGVz
dC5zdGFydFByb2ZpbGVyVGVzdChydW5uZXIpOworfTsKKworSW5zcGVjdG9yVGVzdC5hc3NlcnRD
b2x1bW5Db250ZW50c0VxdWFsID0gZnVuY3Rpb24ocmVmZXJlbmNlLCBhY3R1YWwpCit7CisgICAg
dmFyIGxlbmd0aCA9IE1hdGgubWluKHJlZmVyZW5jZS5sZW5ndGgsIGFjdHVhbC5sZW5ndGgpOwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0RXF1YWxzKHJlZmVyZW5jZVtpXSwgYWN0dWFsW2ldLCAicm93ICIgKyBpKTsKKyAg
ICBpZiAocmVmZXJlbmNlLmxlbmd0aCA+IGxlbmd0aCkKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoImV4dHJhIHJvd3MgaW4gcmVmZXJlbmNlIGFycmF5OlxuIiArIHJlZmVyZW5jZS5z
bGljZShsZW5ndGgpLmpvaW4oIlxuIikpOworICAgIGVsc2UgaWYgKGFjdHVhbC5sZW5ndGggPiBs
ZW5ndGgpCisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJleHRyYSByb3dzIGluIGFj
dHVhbCBhcnJheTpcbiIgKyBhY3R1YWwuc2xpY2UobGVuZ3RoKS5qb2luKCJcbiIpKTsKK307CisK
K0luc3BlY3RvclRlc3QuY2hlY2tBcnJheUlzU29ydGVkID0gZnVuY3Rpb24oY29udGVudHMsIHNv
cnRUeXBlLCBzb3J0T3JkZXIpCit7CisgICAgZnVuY3Rpb24gc2ltcGxlQ29tcGFyYXRvcihhLCBi
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEgPCBiID8gLTEgOiAoYSA+IGIgPyAxIDogMCk7Cisg
ICAgfQorICAgIGZ1bmN0aW9uIHBhcnNlU2l6ZShzaXplKQorICAgIHsKKyAgICAgICAgdmFyIGFt
b3VudCA9IHBhcnNlSW50KHNpemUsIDEwKTsKKyAgICAgICAgdmFyIG11bHRpcGxpZXIgPSB7Cisg
ICAgICAgICAgICAiSyI6IDEwMjQsCisgICAgICAgICAgICAiTSI6IDEwMjQgKiAxMDI0CisgICAg
ICAgIH1bc2l6ZS5jaGFyQXQoc2l6ZS5sZW5ndGggLSAxKV07CisgICAgICAgIHJldHVybiBtdWx0
aXBsaWVyID8gYW1vdW50ICogbXVsdGlwbGllciA6IGFtb3VudDsKKyAgICB9CisgICAgdmFyIGNv
bXBhcmF0b3IgPSB7CisgICAgICAgIHRleHQ6IHNpbXBsZUNvbXBhcmF0b3IsCisgICAgICAgIG51
bWJlcjogZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIHNpbXBsZUNvbXBhcmF0b3IocGFyc2VJbnQo
YSwgMTApLCBwYXJzZUludChiLCAxMCkpOyB9LAorICAgICAgICBzaXplOiBmdW5jdGlvbiAoYSwg
YikgeyByZXR1cm4gc2ltcGxlQ29tcGFyYXRvcihwYXJzZVNpemUoYSwgMTApLCBwYXJzZVNpemUo
YiwgMTApKTsgfQorICAgIH1bc29ydFR5cGVdOworICAgIHZhciBhY2NlcHRhYmxlQ29tcGFyaXNv
blJlc3VsdCA9IHsKKyAgICAgICAgYXNjZW5kaW5nOiAtMSwKKyAgICAgICAgZGVzY2VuZGluZzog
MQorICAgIH1bc29ydE9yZGVyXTsKKworICAgIGlmICghY29tcGFyYXRvcikgeworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiSW52YWxpZCBzb3J0IHR5cGU6ICIgKyBzb3J0VHlwZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFhY2NlcHRhYmxlQ29tcGFyaXNvblJl
c3VsdCkgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiSW52YWxpZCBzb3J0IG9y
ZGVyOiAiICsgc29ydE9yZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgY29udGVudHMubGVuZ3RoIC0gMTsgKytpKSB7CisgICAgICAgIHZhciBy
ZXN1bHQgPSBjb21wYXJhdG9yKGNvbnRlbnRzW2ldLCBjb250ZW50c1tpICsgMV0pOworICAgICAg
ICBpZiAocmVzdWx0ICE9PSAwICYmIHJlc3VsdCAhPT0gYWNjZXB0YWJsZUNvbXBhcmlzb25SZXN1
bHQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRWxlbWVudHMgIiArIGkg
KyAiIGFuZCAiICsgKGkgKyAxKSArICIgYXJlIG91dCBvZiBvcmRlcjogIiArIGNvbnRlbnRzW2ld
ICsgIiAiICsgY29udGVudHNbaSArIDFdKTsKKyAgICB9Cit9OworCitJbnNwZWN0b3JUZXN0LmNs
aWNrQ29sdW1uID0gZnVuY3Rpb24oY29sdW1uLCBjYWxsYmFjaykKK3sKKyAgICBjYWxsYmFjayA9
IEluc3BlY3RvclRlc3Quc2FmZVdyYXAoY2FsbGJhY2spOworICAgIHZhciBjZWxsID0gdGhpcy5f
Y3VycmVudEdyaWQoKS5faGVhZGVyVGFibGVIZWFkZXJzW2NvbHVtbi5pZGVudGlmaWVyXTsKKyAg
ICB2YXIgZXZlbnQgPSB7IHRhcmdldDogeyBlbmNsb3NpbmdOb2RlT3JTZWxmV2l0aE5vZGVOYW1l
OiBmdW5jdGlvbigpIHsgcmV0dXJuIGNlbGw7IH0gfSB9OworCisgICAgZnVuY3Rpb24gc29ydGlu
Z0NvbXBsZXRlKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2N1cnJlbnRHcmlkKCkucmVtb3ZlRXZl
bnRMaXN0ZW5lcigic29ydGluZyBjb21wbGV0ZSIsIHNvcnRpbmdDb21wbGV0ZSwgdGhpcyk7Cisg
ICAgICAgIGNvbHVtbi5zb3J0ID0gdGhpcy5fY3VycmVudEdyaWQoKS5zb3J0T3JkZXI7CisgICAg
ICAgIGNhbGxiYWNrKGNvbHVtbik7CisgICAgfQorICAgIHRoaXMuX2N1cnJlbnRHcmlkKCkuYWRk
RXZlbnRMaXN0ZW5lcigic29ydGluZyBjb21wbGV0ZSIsIHNvcnRpbmdDb21wbGV0ZSwgdGhpcyk7
CisgICAgdGhpcy5fY3VycmVudEdyaWQoKS5fY2xpY2tJbkhlYWRlckNlbGwoZXZlbnQpOworfTsK
KworSW5zcGVjdG9yVGVzdC5jbGlja1Nob3dNb3JlQnV0dG9uID0gZnVuY3Rpb24oYnV0dG9uTmFt
ZSwgcm93LCBjYWxsYmFjaykKK3sKKyAgICBjYWxsYmFjayA9IEluc3BlY3RvclRlc3Quc2FmZVdy
YXAoY2FsbGJhY2spOworICAgIHZhciBwYXJlbnQgPSByb3cucGFyZW50OworICAgIGZ1bmN0aW9u
IHBvcHVsYXRlQ29tcGxldGUoKQorICAgIHsKKyAgICAgICAgcGFyZW50LnJlbW92ZUV2ZW50TGlz
dGVuZXIoInBvcHVsYXRlIGNvbXBsZXRlIiwgcG9wdWxhdGVDb21wbGV0ZSwgdGhpcyk7CisgICAg
ICAgIGNhbGxiYWNrKHBhcmVudCk7CisgICAgfQorICAgIHBhcmVudC5hZGRFdmVudExpc3RlbmVy
KCJwb3B1bGF0ZSBjb21wbGV0ZSIsIHBvcHVsYXRlQ29tcGxldGUsIHRoaXMpOworICAgIHJvd1ti
dXR0b25OYW1lXS5jbGljaygpOworfTsKKworSW5zcGVjdG9yVGVzdC5jb2x1bW5Db250ZW50cyA9
IGZ1bmN0aW9uKGNvbHVtbikKK3sKKyAgICB2YXIgcmVzdWx0ID0gW107CisgICAgdmFyIHBhcmVu
dCA9IHRoaXMuX2N1cnJlbnRHcmlkKCk7CisgICAgZm9yICh2YXIgbm9kZSA9IHBhcmVudC5jaGls
ZHJlblswXTsgbm9kZTsgbm9kZSA9IG5vZGUudHJhdmVyc2VOZXh0Tm9kZSh0cnVlLCBwYXJlbnQs
IHRydWUpKSB7CisgICAgICAgIHZhciBkYXRhID0gbm9kZS5kYXRhW2NvbHVtbi5pZGVudGlmaWVy
XTsKKyAgICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAib2JqZWN0IikKKyAgICAgICAgICAgIGRh
dGEgPSBKU09OLnN0cmluZ2lmeShkYXRhKTsKKyAgICAgICAgcmVzdWx0LnB1c2goZGF0YSk7Cisg
ICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9OworCitJbnNwZWN0b3JUZXN0LmNvdW50RGF0YVJv
d3MgPSBmdW5jdGlvbihyb3cpCit7CisgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgZm9yICh2YXIg
bm9kZSA9IHJvdy5jaGlsZHJlblswXTsgbm9kZTsgbm9kZSA9IG5vZGUudHJhdmVyc2VOZXh0Tm9k
ZSh0cnVlLCByb3csIHRydWUpKSB7CisgICAgICAgIGlmIChub2RlLnNlbGVjdGFibGUpCisgICAg
ICAgICAgICArK3Jlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK307CisKK0luc3Bl
Y3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90ID0gZnVuY3Rpb24oaW5zdGFuY2VDb3VudCkKK3sK
KyAgICAvLyBNb2NraW5nIHJlc3VsdHMgb2YgcnVubmluZyB0aGUgZm9sbG93aW5nIGNvZGU6Cisg
ICAgLy8gCisgICAgLy8gZnVuY3Rpb24gQSgpIHsgdGhpcy5hID0gdGhpczsgfQorICAgIC8vIGZ1
bmN0aW9uIEIoeCkgeyB0aGlzLmEgPSBuZXcgQSh4KTsgfQorICAgIC8vIGZvciAodmFyIGkgPSAw
OyBpIDwgaW5zdGFuY2VDb3VudDsgKytpKSBuZXcgQigpOworICAgIC8vIAorICAgIC8vIEluc3Rh
bmNlcyBvZiBBIGhhdmUgMTIgYnl0ZXMgc2l6ZSwgaW5zdGFuY2VzIG9mIEIgaGFzIDE2IGJ5dGVz
IHNpemUuCisgICAgdmFyIHNpemVPZkEgPSAxMjsKKyAgICB2YXIgc2l6ZU9mQiA9IDE2OyAgCisK
KyAgICBmdW5jdGlvbiBnZW5lcmF0ZU5vZGVzKCkKKyAgICB7CisgICAgICAgIHZhciBub2RlcyA9
IFtudWxsXTsKKyAgICAgICAgLy8gUHVzaCB0aGUgJ21ldGEtcm9vdCcgbm9kZS4KKyAgICAgICAg
bm9kZXMucHVzaCgwLCAwLCAxLCAwLCAoc2l6ZU9mQSArIHNpemVPZkIpICogaW5zdGFuY2VDb3Vu
dCwgMSwgMSwgNCwgMSwgbnVsbCk7CisgICAgICAgIC8vIFB1c2ggaW5zdGFuY2VzIG9mIEEgYW5k
IEIuCisgICAgICAgIHZhciBpbmRleGVzT2ZCID0gW107CisgICAgICAgIHZhciBuZXh0SWQgPSA1
OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluc3RhbmNlQ291bnQ7ICsraSkgeworICAg
ICAgICAgICAgdmFyIGluZGV4T2ZBID0gbm9kZXMubGVuZ3RoOworICAgICAgICAgICAgbm9kZXMu
cHVzaCgzLCAxLCBuZXh0SWQrKywgc2l6ZU9mQSwgc2l6ZU9mQSwgbnVsbCwgMSwgMiwgMywgaW5k
ZXhPZkEpOworICAgICAgICAgICAgdmFyIGluZGV4T2ZCID0gbm9kZXMubGVuZ3RoOworICAgICAg
ICAgICAgLy8gU2V0IGRvbWluYXRvciBvZiBBLgorICAgICAgICAgICAgbm9kZXNbaW5kZXhPZkEg
KyA1XSA9IGluZGV4T2ZCOworICAgICAgICAgICAgbm9kZXMucHVzaCgzLCAyLCBuZXh0SWQrKywg
c2l6ZU9mQiwgc2l6ZU9mQiArIHNpemVPZkEsIG51bGwsIDEsIDIsIDMsIGluZGV4T2ZBKTsKKyAg
ICAgICAgICAgIGluZGV4ZXNPZkIucHVzaChpbmRleE9mQik7CisgICAgICAgIH0KKyAgICAgICAg
dmFyIGluZGV4T2ZHQ1Jvb3RzID0gbm9kZXMubGVuZ3RoOworICAgICAgICBub2Rlcy5wdXNoKDMs
IDQsIDMsIDAsIChzaXplT2ZBICsgc2l6ZU9mQikgKiBpbnN0YW5jZUNvdW50LCAxLCBpbnN0YW5j
ZUNvdW50KTsKKyAgICAgICAgLy8gU2V0IGRvbWluYXRvciBvZiBCLgorICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGluc3RhbmNlQ291bnQ7ICsraSkgeworICAgICAgICAgICAgbm9kZXNbaW5k
ZXhlc09mQltpXSArIDVdID0gaW5kZXhPZkdDUm9vdHM7CisgICAgICAgIH0KKyAgICAgICAgLy8g
U2V0IChHQyByb290cykgYXMgY2hpbGQgb2YgbWV0YS1yb290LgorICAgICAgICBub2Rlc1sxMF0g
PSBpbmRleE9mR0NSb290czsKKyAgICAgICAgLy8gUHVzaCBpbnN0YW5jZXMgb2YgQiBhcyBjaGls
ZHJlbiBvZiBHQyByb290cy4KKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnN0YW5jZUNv
dW50OyArK2kpIHsKKyAgICAgICAgICAgIG5vZGVzLnB1c2goMSwgaSArIDEsIGluZGV4ZXNPZkJb
aV0pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBub2RlczsKKyAgICB9CisKKyAgICB2YXIg
cmVzdWx0ID0geworICAgICAgICAic25hcHNob3QiOiB7fSwKKyAgICAgICAgIm5vZGVzIjogZ2Vu
ZXJhdGVOb2RlcygpLAorICAgICAgICAic3RyaW5ncyI6IFsiIiwgIkEiLCAiQiIsICJhIiwgIihH
QyByb290cykiXQorICAgIH07CisgICAgcmVzdWx0Lm5vZGVzWzBdID0geworICAgICAgICAiZmll
bGRzIjpbInR5cGUiLCJuYW1lIiwiaWQiLCJzZWxmX3NpemUiLCJyZXRhaW5lZF9zaXplIiwiZG9t
aW5hdG9yIiwiY2hpbGRyZW5fY291bnQiLCJjaGlsZHJlbiJdLAorICAgICAgICAidHlwZXMiOltb
ImhpZGRlbiIsImFycmF5Iiwic3RyaW5nIiwib2JqZWN0IiwiY29kZSIsImNsb3N1cmUiLCJyZWdl
eHAiLCJudW1iZXIiLCJuYXRpdmUiXSwic3RyaW5nIiwibnVtYmVyIiwibnVtYmVyIiwibnVtYmVy
IiwibnVtYmVyIiwibnVtYmVyIix7CisgICAgICAgICAgICAiZmllbGRzIjpbInR5cGUiLCJuYW1l
X29yX2luZGV4IiwidG9fbm9kZSJdLAorICAgICAgICAgICAgInR5cGVzIjpbWyJjb250ZXh0Iiwi
ZWxlbWVudCIsInByb3BlcnR5IiwiaW50ZXJuYWwiLCJoaWRkZW4iLCJzaG9ydGN1dCJdLCJzdHJp
bmdfb3JfbnVtYmVyIiwibm9kZSJdfV19OworICAgIHJldHVybiByZXN1bHQ7Cit9OworCitJbnNw
ZWN0b3JUZXN0LmV4cGFuZFJvdyA9IGZ1bmN0aW9uKHJvdywgY2FsbGJhY2spCit7CisgICAgY2Fs
bGJhY2sgPSBJbnNwZWN0b3JUZXN0LnNhZmVXcmFwKGNhbGxiYWNrKTsKKyAgICBmdW5jdGlvbiBw
b3B1bGF0ZUNvbXBsZXRlKCkKKyAgICB7CisgICAgICAgIHJvdy5yZW1vdmVFdmVudExpc3RlbmVy
KCJwb3B1bGF0ZSBjb21wbGV0ZSIsIHBvcHVsYXRlQ29tcGxldGUsIHRoaXMpOworICAgICAgICBj
YWxsYmFjayhyb3cpOyAgICAgICAgCisgICAgfQorICAgIHJvdy5hZGRFdmVudExpc3RlbmVyKCJw
b3B1bGF0ZSBjb21wbGV0ZSIsIHBvcHVsYXRlQ29tcGxldGUsIHRoaXMpOworICAgIHJvdy5leHBh
bmQoKTsKK307CisKK0luc3BlY3RvclRlc3QuZmluZEJ1dHRvbnNOb2RlID0gZnVuY3Rpb24ocm93
KQoreworICAgIHZhciByZXN1bHQgPSAwOworICAgIGZvciAodmFyIG5vZGUgPSByb3cuY2hpbGRy
ZW5bMF07IG5vZGU7IG5vZGUgPSBub2RlLnRyYXZlcnNlTmV4dE5vZGUodHJ1ZSwgcm93LCB0cnVl
KSkgeworICAgICAgICBpZiAoIW5vZGUuc2VsZWN0YWJsZSAmJiBub2RlLnNob3dOZXh0KQorICAg
ICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgfQorICAgIHJldHVybiBudWxsOworfTsKKworSW5z
cGVjdG9yVGVzdC5maW5kUm93ID0gZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllciwgbWF0Y2hlciwg
cGFyZW50KQoreworICAgIHBhcmVudCA9IHBhcmVudCB8fCB0aGlzLl9jdXJyZW50R3JpZCgpOwor
ICAgIGlmICh0eXBlb2YgbWF0Y2hlciAhPT0gImZ1bmN0aW9uIikgeworICAgICAgICB2YXIgdmFs
dWUgPSBtYXRjaGVyOworICAgICAgICBtYXRjaGVyID0gZnVuY3Rpb24oeCkgeyByZXR1cm4geCA9
PT0gdmFsdWU7IH07CisgICAgfQorICAgIGZvciAodmFyIG5vZGUgPSBwYXJlbnQuY2hpbGRyZW5b
MF07IG5vZGU7IG5vZGUgPSBub2RlLnRyYXZlcnNlTmV4dE5vZGUodHJ1ZSwgcGFyZW50LCB0cnVl
KSkgeworICAgICAgICBpZiAobWF0Y2hlcihub2RlLmRhdGFbY29sdW1uSWRlbnRpZmllcl0pKQor
ICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgfQorICAgIHJldHVybiBudWxsOworfTsKKwor
SW5zcGVjdG9yVGVzdC5zd2l0Y2hUb1ZpZXcgPSBmdW5jdGlvbih0aXRsZSwgY2FsbGJhY2spCit7
CisgICAgLy8gRklYTUU6IGltcGxlbWVudCB3aGVuIGFkZGluZyB0ZXN0cyBmb3Igb3RoZXIgdmll
d3MuCisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoIlN1bW1hcnkiLCB0aXRsZSk7Cisg
ICAgY2FsbGJhY2sgPSBJbnNwZWN0b3JUZXN0LnNhZmVXcmFwKGNhbGxiYWNrKTsKKyAgICBjYWxs
YmFjaygpOworfTsKKworSW5zcGVjdG9yVGVzdC50YWtlQW5kT3BlblNuYXBzaG90ID0gZnVuY3Rp
b24oZ2VuZXJhdG9yLCBjYWxsYmFjaykKK3sKKyAgICBjYWxsYmFjayA9IEluc3BlY3RvclRlc3Qu
c2FmZVdyYXAoY2FsbGJhY2spOworICAgIHZhciB1aWQgPSAxOworICAgIHZhciBwcm9maWxlID0g
eyB0eXBlSWQ6IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5UeXBlSWQsIHVp
ZDogdWlkLCB0aXRsZTogVXNlckluaXRpYXRlZFByb2ZpbGVOYW1lICsgIi4iICsgdWlkIH07Cisg
ICAgZnVuY3Rpb24gcHVzaEdlbmVyYXRlZFNuYXBzaG90KHR5cGVJZCwgdWlkKQorICAgIHsKKyAg
ICAgICAgdmFyIHNuYXBzaG90ID0gZ2VuZXJhdG9yKCk7CisgICAgICAgIHNuYXBzaG90LnNuYXBz
aG90LnR5cGVJZCA9IHByb2ZpbGUudHlwZUlkOworICAgICAgICBzbmFwc2hvdC5zbmFwc2hvdC50
aXRsZSA9IHByb2ZpbGUudGl0bGU7CisgICAgICAgIHNuYXBzaG90LnNuYXBzaG90LnVpZCA9IHBy
b2ZpbGUudWlkOworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLl9hZGRIZWFw
U25hcHNob3RDaHVuayh1aWQsIEpTT04uc3RyaW5naWZ5KGdlbmVyYXRvcigpKSk7CisgICAgICAg
IFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMuX2ZpbmlzaEhlYXBTbmFwc2hvdCh1aWQpOwor
ICAgIH0KKyAgICBJbnNwZWN0b3JUZXN0Lm92ZXJyaWRlKFByb2ZpbGVyQWdlbnQsICJnZXRQcm9m
aWxlIiwgcHVzaEdlbmVyYXRlZFNuYXBzaG90KTsKKyAgICBJbnNwZWN0b3JUZXN0Ll90YWtlQW5k
T3BlblNuYXBzaG90Q2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICBXZWJJbnNwZWN0b3IucGFuZWxz
LnByb2ZpbGVzLl9hZGRQcm9maWxlSGVhZGVyKHByb2ZpbGUpOworICAgIFdlYkluc3BlY3Rvci5w
YW5lbHMucHJvZmlsZXMuc2hvd1Byb2ZpbGUocHJvZmlsZSk7Cit9OworCitJbnNwZWN0b3JUZXN0
LnZpZXdDb2x1bW5zID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiBJbnNwZWN0b3JUZXN0Ll9j
dXJyZW50R3JpZCgpLl9jb2x1bW5zQXJyYXk7Cit9OworCitJbnNwZWN0b3JUZXN0Ll9jdXJyZW50
R3JpZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9m
aWxlcy52aXNpYmxlVmlldy5kYXRhR3JpZDsKK307CisKK0luc3BlY3RvclRlc3QuX3NuYXBzaG90
Vmlld1Nob3duID0gZnVuY3Rpb24oKQoreworICAgIGlmIChJbnNwZWN0b3JUZXN0Ll90YWtlQW5k
T3BlblNuYXBzaG90Q2FsbGJhY2spIHsKKyAgICAgICAgdmFyIGNhbGxiYWNrID0gSW5zcGVjdG9y
VGVzdC5fdGFrZUFuZE9wZW5TbmFwc2hvdENhbGxiYWNrOworICAgICAgICBJbnNwZWN0b3JUZXN0
Ll90YWtlQW5kT3BlblNuYXBzaG90Q2FsbGJhY2sgPSBudWxsOworICAgICAgICBjYWxsYmFjaygp
OworICAgIH0KK307CisKK307CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXN1bW1hcnktZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVy
L2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi42ZTAxZWY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90
cy1zdW1tYXJ5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUZXN0cyBTdW1tYXJ5IHZp
ZXcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuCisKK1Byb2ZpbGVyIHdhcyBlbmFibGVkLgor
RGV0YWlsZWQgaGVhcCBwcm9maWxlcyB3ZXJlIGVuYWJsZWQuCisKK1J1bm5pbmc6IHRlc3RTb3J0
aW5nCisKK1J1bm5pbmc6IHRlc3RTaG93TmV4dAorCitSdW5uaW5nOiB0ZXN0U2hvd0FsbAorCitS
dW5uaW5nOiB0ZXN0RXhwYW5zaW9uUHJlc2VydmVkV2hlblNvcnRpbmcKKworUHJvZmlsZXIgd2Fz
IGRpc2FibGVkLgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWNmNDIyMC4uZGNkY2NiYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI3IEBACisyMDExLTA0LTA1ICBNaWtoYWlsIE5hZ2Fub3YgIDxtbmFnYW5vdkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogW0Nocm9taXVtXSBBZGQgbGF5b3V0IHRlc3QgZm9yIFN1bW1h
cnkgdmlldyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3ODU2CisKKyAgICAgICAgVGVzdDogaW5zcGVj
dG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy1zdW1tYXJ5Lmh0bWwKKworICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvRGF0YUdyaWQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hv
dEdyaWROb2Rlcy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9k
ZS5wcm90b3R5cGUuX3BvcHVsYXRlLmRvUG9wdWxhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZS5fcG9wdWxhdGUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZS5wb3B1bGF0ZUNoaWxkcmVu
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUu
c29ydC5kb1NvcnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2Rl
LnByb3RvdHlwZS5zb3J0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZm
Tm9kZS5wcm90b3R5cGUucG9wdWxhdGVDaGlsZHJlbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RTb3J0YWJsZURhdGFHcmlkLnByb3RvdHlwZS5zb3J0aW5nQ2hhbmdlZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLl9maW5pc2hIZWFwU25hcHNob3Qu
ZG9QYXJzZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUu
X2ZpbmlzaEhlYXBTbmFwc2hvdCk6CisKIDIwMTEtMDQtMDQgIEFuZHJleSBLb3N5YWtvdiAgPGNh
c2VxQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhR3Jp
ZC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YUdyaWQuanMKaW5k
ZXggNmQ1NDk0MS4uN2Q3MTA5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9EYXRhR3JpZC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RhdGFHcmlkLmpzCkBAIC0xMzMsNiArMTMzLDcgQEAgV2ViSW5zcGVjdG9yLkRhdGFH
cmlkID0gZnVuY3Rpb24oY29sdW1ucywgZWRpdENhbGxiYWNrLCBkZWxldGVDYWxsYmFjaykKICAg
ICB0aGlzLl9jb2x1bW5zQXJyYXkgPSBbXTsKICAgICBmb3IgKHZhciBjb2x1bW5JZGVudGlmaWVy
IGluIGNvbHVtbnMpIHsKICAgICAgICAgY29sdW1uc1tjb2x1bW5JZGVudGlmaWVyXS5vcmRpbmFs
ID0gdGhpcy5fY29sdW1uc0FycmF5Lmxlbmd0aDsKKyAgICAgICAgY29sdW1uc1tjb2x1bW5JZGVu
dGlmaWVyXS5pZGVudGlmaWVyID0gY29sdW1uSWRlbnRpZmllcjsKICAgICAgICAgdGhpcy5fY29s
dW1uc0FycmF5LnB1c2goY29sdW1uc1tjb2x1bW5JZGVudGlmaWVyXSk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNo
b3RHcmlkTm9kZXMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFp
bGVkSGVhcHNob3RHcmlkTm9kZXMuanMKaW5kZXggNGZjMTg0NC4uYzI4ZmY4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90R3Jp
ZE5vZGVzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWls
ZWRIZWFwc2hvdEdyaWROb2Rlcy5qcwpAQCAtNTEsMTQgKzUxLDE0IEBAIFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZnVuY3Rpb24gZG9Q
b3B1bGF0ZSgpCiAgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5l
cigicG9wdWxhdGUiLCB0aGlzLl9wb3B1bGF0ZSwgdGhpcyk7CiAgICAgICAgICAgICB0aGlzLl9w
cm92aWRlci5zb3J0KHRoaXMuY29tcGFyYXRvcigpKTsKICAgICAgICAgICAgIHRoaXMuX3Byb3Zp
ZGVyLmZpcnN0KCk7CiAgICAgICAgICAgICB0aGlzLnBvcHVsYXRlQ2hpbGRyZW4oKTsKLSAgICAg
ICAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9wdWxhdGUiLCB0aGlzLl9wb3B1bGF0
ZSwgdGhpcyk7CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgcG9wdWxhdGVDaGlsZHJlbjogZnVu
Y3Rpb24ocHJvdmlkZXIsIGhvd01hbnksIGF0SW5kZXgpCisgICAgcG9wdWxhdGVDaGlsZHJlbjog
ZnVuY3Rpb24ocHJvdmlkZXIsIGhvd01hbnksIGF0SW5kZXgsIHN1cHByZXNzTm90aWZ5QWJvdXRD
b21wbGV0aW9uKQogICAgIHsKICAgICAgICAgaWYgKCFob3dNYW55ICYmIHByb3ZpZGVyKSB7CiAg
ICAgICAgICAgICBob3dNYW55ID0gcHJvdmlkZXIuaW5zdGFuY2VDb3VudDsKQEAgLTg4LDYgKzg4
LDggQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogICAgICAgICBpZiAocHJvdmlkZXIuaGFzTmV4dCgpKQogICAgICAgICAgICAgdGhp
cy5pbnNlcnRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLlNob3dNb3JlRGF0YUdyaWROb2RlKHRoaXMu
cG9wdWxhdGVDaGlsZHJlbi5iaW5kKHRoaXMsIHByb3ZpZGVyKSwgdGhpcy5fZGVmYXVsdFBvcHVs
YXRlQ291bnQsIHByb3ZpZGVyLmxlbmd0aCksIGF0SW5kZXgrKyk7CisgICAgICAgIGlmICghc3Vw
cHJlc3NOb3RpZnlBYm91dENvbXBsZXRpb24pCisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycygicG9wdWxhdGUgY29tcGxldGUiKTsKICAgICB9LAogCiAgICAgX3NhdmVD
aGlsZHJlbjogZnVuY3Rpb24oKQpAQCAtMTAwLDcgKzEwMiw3IEBAIFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCi0gICAg
c29ydDogZnVuY3Rpb24oKQorICAgIHNvcnQ6IGZ1bmN0aW9uKHN1cHByZXNzTm90aWZ5QWJvdXRD
b21wbGV0aW9uKQogICAgIHsKICAgICAgICAgdmFyIGNvbXBhcmF0b3IgPSB0aGlzLmNvbXBhcmF0
b3IoKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLlBsZWFzZVdhaXRNZXNzYWdlLnByb3RvdHlwZS5z
dGFydEFjdGlvbih0aGlzLmRhdGFHcmlkLmVsZW1lbnQsIGRvU29ydC5iaW5kKHRoaXMpKTsKQEAg
LTExOCw2ICsxMjAsOCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5vZGUucHJvdG90
eXBlID0gewogICAgICAgICAgICAgICAgIGlmIChjaGlsZC5leHBhbmRlZCkKICAgICAgICAgICAg
ICAgICAgICAgY2hpbGQuc29ydCgpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFz
dXBwcmVzc05vdGlmeUFib3V0Q29tcGxldGlvbikKKyAgICAgICAgICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycygic29ydGluZyBjb21wbGV0ZSIpOwogICAgICAgICB9CiAgICAg
fQogfTsKQEAgLTU3OSwxMCArNTgzLDEwIEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZm
Tm9kZS5wcm90b3R5cGUgPSB7CiAgICAgcG9wdWxhdGVDaGlsZHJlbjogZnVuY3Rpb24ocHJvdmlk
ZXIsIGhvd01hbnksIGF0SW5kZXgpCiAgICAgewogICAgICAgICBpZiAoIXByb3ZpZGVyICYmICFo
b3dNYW55KSB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5vZGUu
cHJvdG90eXBlLnBvcHVsYXRlQ2hpbGRyZW4uY2FsbCh0aGlzLCB0aGlzLl9wcm92aWRlci5faXQx
LCB0aGlzLl9kZWZhdWx0UG9wdWxhdGVDb3VudCk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90R3JpZE5vZGUucHJvdG90eXBlLnBvcHVsYXRlQ2hpbGRyZW4uY2FsbCh0aGlz
LCB0aGlzLl9wcm92aWRlci5faXQxLCB0aGlzLl9kZWZhdWx0UG9wdWxhdGVDb3VudCwgbnVsbCwg
dHJ1ZSk7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5vZGUucHJv
dG90eXBlLnBvcHVsYXRlQ2hpbGRyZW4uY2FsbCh0aGlzLCB0aGlzLl9wcm92aWRlci5faXQyLCB0
aGlzLl9kZWZhdWx0UG9wdWxhdGVDb3VudCk7CiAgICAgICAgIH0gZWxzZSBpZiAoIWhvd01hbnkp
IHsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHcmlkTm9kZS5wcm90b3R5
cGUucG9wdWxhdGVDaGlsZHJlbi5jYWxsKHRoaXMsIHRoaXMuX3Byb3ZpZGVyLl9pdDEpOworICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdyaWROb2RlLnByb3RvdHlwZS5wb3B1
bGF0ZUNoaWxkcmVuLmNhbGwodGhpcywgdGhpcy5fcHJvdmlkZXIuX2l0MSwgbnVsbCwgbnVsbCwg
dHJ1ZSk7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5vZGUucHJv
dG90eXBlLnBvcHVsYXRlQ2hpbGRyZW4uY2FsbCh0aGlzLCB0aGlzLl9wcm92aWRlci5faXQyKTsK
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90R3Jp
ZE5vZGUucHJvdG90eXBlLnBvcHVsYXRlQ2hpbGRyZW4uY2FsbCh0aGlzLCBwcm92aWRlciwgaG93
TWFueSwgYXRJbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qcwppbmRleCAyMWQwZmE5Li5jYTdmODk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVk
SGVhcHNob3RWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RGV0YWlsZWRIZWFwc2hvdFZpZXcuanMKQEAgLTg1LDYgKzg1LDcgQEAgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAg
ICAgICAgdGhpcy5fcGVyZm9ybVNvcnRpbmcoU29ydEJ5VHdvRmllbGRzKTsKKyAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInNvcnRpbmcgY29tcGxldGUiKTsKICAgICB9LAog
CiAgICAgX3BlcmZvcm1Tb3J0aW5nOiBmdW5jdGlvbihzb3J0RnVuY3Rpb24pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKaW5kZXgg
ZWE1MzI3Yi4uMWVlNjdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcwpAQCAtNDc4LDggKzQ3OCw2IEBAIFdlYkluc3BlY3Rv
ci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCFwcm9maWxlIHx8IHBy
b2ZpbGUuX2xvYWRlZCB8fCAhcHJvZmlsZS5faXNfbG9hZGluZykKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICB2YXIgY2FsbGJhY2tzID0gcHJvZmlsZS5fY2FsbGJhY2tzOwotICAgICAg
ICBkZWxldGUgcHJvZmlsZS5fY2FsbGJhY2tzOwogICAgICAgICBwcm9maWxlLnNpZGVCYXJFbGVt
ZW50LnN1YnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQYXJzaW5n4oCmIik7CiAgICAg
ICAgIHdpbmRvdy5zZXRUaW1lb3V0KGRvUGFyc2UsIDApOwogCkBAIC00ODgsNiArNDg2LDggQEAg
V2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFy
IGxvYWRlZFNuYXBzaG90ID0gSlNPTi5wYXJzZShwcm9maWxlLl9qc29uKTsKICAgICAgICAgICAg
IGRlbGV0ZSBwcm9maWxlLl9qc29uOwogICAgICAgICAgICAgZGVsZXRlIHByb2ZpbGUuX2lzX2xv
YWRpbmc7CisgICAgICAgICAgICB2YXIgY2FsbGJhY2tzID0gcHJvZmlsZS5fY2FsbGJhY2tzOwor
ICAgICAgICAgICAgZGVsZXRlIHByb2ZpbGUuX2NhbGxiYWNrczsKICAgICAgICAgICAgIHByb2Zp
bGUuX2xvYWRlZCA9IHRydWU7CiAgICAgICAgICAgICBwcm9maWxlLnNpZGVCYXJFbGVtZW50LnN1
YnRpdGxlID0gIiI7CiAK
</data>
<flag name="review"
          id="80748"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="80749"
          type_id="3"
          status="-"
          setter="mnaganov"
    />
          </attachment>
      

    </bug>

</bugzilla>