<?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>181967</bug_id>
          
          <creation_ts>2018-01-22 17:33:44 -0800</creation_ts>
          <short_desc>Fix CommitSet.equals bug which will always return false when comparing CommitSet against MeasurementCommitSet.</short_desc>
          <delta_ts>2018-01-24 14:09:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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>dewei_zhu</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dewei_zhu</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1391908</commentid>
    <comment_count>0</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2018-01-22 17:33:44 -0800</bug_when>
    <thetext>Fix CommitSet.equals bug which will always return false when comparing CommitSet against MeasurementCommitSet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391928</commentid>
    <comment_count>1</comment_count>
      <attachid>331990</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2018-01-22 18:00:45 -0800</bug_when>
    <thetext>Created attachment 331990
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391946</commentid>
    <comment_count>2</comment_count>
      <attachid>331990</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-01-22 19:05:56 -0800</bug_when>
    <thetext>Comment on attachment 331990
Patch

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

r-. There are enough issues in this patch that I don&apos;t think we can land as is.

&gt; Websites/perf.webkit.org/ChangeLog:15
&gt; +        (CommitSet.prototype.commitForRepository): Returns null instead of undefined when key does not exist.

Why do we need to do that? null == undefined.

&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:70
&gt; +    commitForRepository(repository) { return CommitSet.getFromMapWithFallbackReturn(this._repositoryToCommitMap, repository); }

A canonical way to write this would be this._repositoryToCommitOwnerMap.get(repository) || null.

&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:90
&gt; +    requiresBuildForRepository(repository) { return CommitSet.getFromMapWithFallbackReturn(this._repositoryRequiresBuildMap, repository, false); }

There is no need to do this. !!null and !!undefined are both false.

&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:117
&gt; +        const neitherIsMeasurementCommitSet = !(this instanceof MeasurementCommitSet) &amp;&amp; !(other instanceof MeasurementCommitSet);
&gt; +        if (neitherIsMeasurementCommitSet) {

We shouldn&apos;t have a different code path like this.
Both CommitSet and MeasurementCommitSet should have methods to get the list of owned commits in the set instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391968</commentid>
    <comment_count>3</comment_count>
      <attachid>332005</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2018-01-22 21:24:01 -0800</bug_when>
    <thetext>Created attachment 332005
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392420</commentid>
    <comment_count>4</comment_count>
      <attachid>332005</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-01-23 20:20:30 -0800</bug_when>
    <thetext>Comment on attachment 332005
Patch

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

&gt; Websites/perf.webkit.org/ChangeLog:3
&gt; +        Fix CommitSet.equals bug which will always return false when comparing CommitSet against MeasurementCommitSet.

We should be describing the end impact in the bug title which is that TestGroupResultsViewer creates unnecessary rows.

&gt; Websites/perf.webkit.org/ChangeLog:10
&gt; +        comparison between a CommitSet and a MeasurementCommitSet.
&gt; +        MeasurementCommitSet does not have full information for the commits, thus, it cannot build mappings

Need a blank line between two paragraphs.

&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:119
&gt; +        const neitherIsMeasurementCommitSet = !(this instanceof MeasurementCommitSet) &amp;&amp; !(other instanceof MeasurementCommitSet);
&gt; +        if (neitherIsMeasurementCommitSet) {
&gt; +            if (this._repositoryToPatchMap.size != other._repositoryToPatchMap.size)
&gt; +                return false;
&gt; +            if (this._repositoryToRootMap.size != other._repositoryToRootMap.size)
&gt; +                return false;
&gt; +            if (this._repositoryToCommitOwnerMap.size != other._repositoryToCommitOwnerMap.size)
&gt; +                return false;
&gt; +            if (this._repositoryRequiresBuildMap.size != other._repositoryRequiresBuildMap.size)
&gt; +                return false;
&gt; +        }
&gt; +

We shouldn&apos;t have this special branch as I mentioned earlier. r- because of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392469</commentid>
    <comment_count>5</comment_count>
      <attachid>332005</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2018-01-24 00:38:20 -0800</bug_when>
    <thetext>Comment on attachment 332005
Patch

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

&gt;&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:119
&gt;&gt; +
&gt; 
&gt; We shouldn&apos;t have this special branch as I mentioned earlier. r- because of this.

Sure. Then, we need to repeat below for loop, but loop against other._repositoryToCommitMap instead. Otherwise, this function will give us a incorrect return if &apos;this&apos; is some sort of subset of &apos;other&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392470</commentid>
    <comment_count>6</comment_count>
      <attachid>332005</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2018-01-24 00:45:35 -0800</bug_when>
    <thetext>Comment on attachment 332005
Patch

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

&gt;&gt;&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:119
&gt;&gt;&gt; +
&gt;&gt; 
&gt;&gt; We shouldn&apos;t have this special branch as I mentioned earlier. r- because of this.
&gt; 
&gt; Sure. Then, we need to repeat below for loop, but loop against other._repositoryToCommitMap instead. Otherwise, this function will give us a incorrect return if &apos;this&apos; is some sort of subset of &apos;other&apos;.

Never mind. As we&apos;ve already checked the size of repositories.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392471</commentid>
    <comment_count>7</comment_count>
      <attachid>332129</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2018-01-24 00:54:56 -0800</bug_when>
    <thetext>Created attachment 332129
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392478</commentid>
    <comment_count>8</comment_count>
      <attachid>332134</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2018-01-24 01:11:59 -0800</bug_when>
    <thetext>Created attachment 332134
Patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331990</attachid>
            <date>2018-01-22 18:00:45 -0800</date>
            <delta_ts>2018-01-22 21:23:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181967-20180122180045.patch</filename>
            <type>text/plain</type>
            <size>14067</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI3MzczCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCA0NmZjNzdjZmM1OTQ0Y2MxMDc4NjAzYTQxZjgwZGMwYTE3ZTg1YWE4Li44MjhjNzUwNjA3
Y2QxNzc3YWJjZjkxOGNmZWFlMTgwODNhMzA2YzJhIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxOC0wMS0yMiAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBGaXggQ29tbWl0U2V0LmVxdWFscyBidWcgd2hpY2ggd2ls
bCBhbHdheXMgcmV0dXJuIGZhbHNlIHdoZW4gY29tcGFyaW5nIENvbW1pdFNldCBhZ2FpbnN0IE1l
YXN1cmVtZW50Q29tbWl0U2V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgxOTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTWVhc3VyZW1lbnRDb21taXRTZXQgZG9lcyBub3QgaGF2ZSBmdWxsIGluZm9y
bWF0aW9uIGZvciB0aGUgY29tbWl0cywgdGh1cywgaXQgY2Fubm90IGJ1aWxkIG1hcHBpbmdzCisg
ICAgICAgIGJldHdlZW4gcm9vdC9wYXRjaC9vd25lciBjb21taXQvcmVxdWlyZXMgYnVpbGQgdG8g
cmVwb3NpdG9yeS4gQXMgYSByZXN1bHQsIGNvbXBhcmluZyB0byBhbnkgQ29tbWl0U2V0CisgICAg
ICAgIHdpbGwgcmV0dXJuIGZhbHNlLiBUaGlzIGlzIG5vdCBhIGRlc2lyZWQgYmVoYXZpb3IuIFRv
IGZpeCB0aGlzLCBpbnN0ZWFkIG9mIGFjY2Vzc2luZyB0aG9zZSBtYXBwaW5ncworICAgICAgICBy
ZWRpcmVjdGx5LCB1c2Ugd3JhcHBlZCBmdW5jdGlvbiB3aGljaCB3aWxsIHJldHVybnMgYSBkZWZh
dWx0IHZhbHVlIHdoZW4ga2V5IGlzIG1pc3NpbmcuCisgICAgICAgIEFsc28gZml4ZWQgYSBidWcg
Y2F1c2VkIGJ5IGEgdHlwbyBpbiBDb21taXRTZXQuZXF1YWxzLgorCisgICAgICAgICogcHVibGlj
L3YzL21vZGVscy9jb21taXQtc2V0LmpzOgorICAgICAgICAoQ29tbWl0U2V0LnByb3RvdHlwZS5j
b21taXRGb3JSZXBvc2l0b3J5KTogUmV0dXJucyBudWxsIGluc3RlYWQgb2YgdW5kZWZpbmVkIHdo
ZW4ga2V5IGRvZXMgbm90IGV4aXN0LgorICAgICAgICAoQ29tbWl0U2V0LnByb3RvdHlwZS5vd25l
ckNvbW1pdEZvclJlcG9zaXRvcnkpOiBSZXR1cm5zIG51bGwgaW5zdGVhZCBvZiB1bmRlZmluZWQg
d2hlbiBrZXkgZG9lcyBub3QgZXhpc3QuCisgICAgICAgIChDb21taXRTZXQucHJvdG90eXBlLm93
bmVkUmVwb3NpdG9yaWVzRm9yT3duZXJSZXBvc2l0b3J5KTogUmV0dXJucyBudWxsIGluc3RlYWQg
b2YgdW5kZWZpbmVkIHdoZW4ga2V5IGRvZXMgbm90IGV4aXN0LgorICAgICAgICAoQ29tbWl0U2V0
LnByb3RvdHlwZS5wYXRjaEZvclJlcG9zaXRvcnkpOiBSZXR1cm5zIG51bGwgaW5zdGVhZCBvZiB1
bmRlZmluZWQgd2hlbiBrZXkgZG9lcyBub3QgZXhpc3QuCisgICAgICAgIChDb21taXRTZXQucHJv
dG90eXBlLnJvb3RGb3JSZXBvc2l0b3J5KTogUmV0dXJucyBudWxsIGluc3RlYWQgb2YgdW5kZWZp
bmVkIHdoZW4ga2V5IGRvZXMgbm90IGV4aXN0LgorICAgICAgICAoQ29tbWl0U2V0LnByb3RvdHlw
ZS5yZXF1aXJlc0J1aWxkRm9yUmVwb3NpdG9yeSk6IFJldHVybnMgZmFsc2UgaW5zdGVhZCBvZiB1
bmRlZmluZWQgd2hlbiBrZXkgZG9lcyBub3QgZXhpc3QuCisgICAgICAgIChDb21taXRTZXQuZ2V0
RnJvbU1hcFdpdGhGYWxsYmFja1JldHVybik6IEEgaGVscGVyIGZ1bmN0aW9uIHdoaWNoIHJldHVy
biBmYWxsYmFjayB2YWx1ZSB3aGVuIGVudHJ5IGlzIG1pc3NpbmcuCisgICAgICAgIChDb21taXRT
ZXQucHJvdG90eXBlLmVxdWFscyk6IEZpeGVkIGEgdHlwby4gQWxzbyBhZGQgY2hlY2tzIG9uIGFs
bCBtYXBwaW5ncyBzaXplIHdoZW4gYm90aCBhcmUgbm90ICdNZWFzdXJlbWVudFNldCcuCisgICAg
ICAgIFVzZSB3cmFwcGVkIGZ1bmN0aW9uKGUuZy4gcGF0Y2hGb3JSZXBvc2l0b3J5KSBpbnN0ZWFk
IG9mIGFjY2Vzc2luZyB0aGUgbWFwKGUuZy4gX3JlcG9zaXRvcnlUb1BhdGNoTWFwKSBzbyB0aGF0
IGl0IHdpbGwKKyAgICAgICAgc3RpbGwgZ2l2ZSByaWdodCByZXN1bHRzIHdoZW4gY29tcGFyaW5n
IGEgQ29tbWl0U2V0IHdpdGggYSBNZWFzdXJlbWVudENvbW1pdFNldC4KKyAgICAgICAgKiB1bml0
LXRlc3RzL2NvbW1pdC1zZXQtdGVzdHMuanM6IEFkZGVkIHVuaXQgdGVzdHMuCisKIDIwMTgtMDEt
MjAgIERld2VpIFpodSAgPGRld2VpX3podUBhcHBsZS5jb20+CiAKICAgICAgICAgRXh0ZW5kICdp
ZkJ1aWx0JyBjb25maWcga2V5IHRvIHNldCBwcm9wZXJ0eSBiYXNlZCBvbiB3aGV0aGVyIGNlcnRh
aW4gcmVwb3NpdG9yaWVzIGFyZSBidWlsdCBvciBub3QuCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9jb21taXQtc2V0LmpzIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvY29tbWl0LXNldC5qcwppbmRleCBjZjhh
MWNjNGI4MzM2MjRlNTNmMTA5YjcyYzUzM2Y0MzQ2NTZmZmE3Li5hZjMyZDdjZTM2M2NhNjdmMDMy
YmYwNDk4MGE1MWRiYzZhNWE1NDhiIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL21vZGVscy9jb21taXQtc2V0LmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2NvbW1pdC1zZXQuanMKQEAgLTY3LDExICs2NywxMSBA
QCBjbGFzcyBDb21taXRTZXQgZXh0ZW5kcyBEYXRhTW9kZWxPYmplY3QgewogICAgIHJlcG9zaXRv
cmllcygpIHsgcmV0dXJuIHRoaXMuX3JlcG9zaXRvcmllczsgfQogICAgIGN1c3RvbVJvb3RzKCkg
eyByZXR1cm4gdGhpcy5fY3VzdG9tUm9vdHM7IH0KICAgICBhbGxSb290RmlsZXMoKSB7IHJldHVy
biB0aGlzLl9hbGxSb290RmlsZXM7IH0KLSAgICBjb21taXRGb3JSZXBvc2l0b3J5KHJlcG9zaXRv
cnkpIHsgcmV0dXJuIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcC5nZXQocmVwb3NpdG9yeSk7
IH0KLSAgICBvd25lckNvbW1pdEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkgeyByZXR1cm4gdGhp
cy5fcmVwb3NpdG9yeVRvQ29tbWl0T3duZXJNYXAuZ2V0KHJlcG9zaXRvcnkpOyB9CisgICAgY29t
bWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSB7IHJldHVybiBDb21taXRTZXQuZ2V0RnJvbU1h
cFdpdGhGYWxsYmFja1JldHVybih0aGlzLl9yZXBvc2l0b3J5VG9Db21taXRNYXAsIHJlcG9zaXRv
cnkpOyB9CisgICAgb3duZXJDb21taXRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpIHsgcmV0dXJu
IENvbW1pdFNldC5nZXRGcm9tTWFwV2l0aEZhbGxiYWNrUmV0dXJuKHRoaXMuX3JlcG9zaXRvcnlU
b0NvbW1pdE93bmVyTWFwLCByZXBvc2l0b3J5KTsgfQogICAgIHRvcExldmVsUmVwb3NpdG9yaWVz
KCkgeyByZXR1cm4gUmVwb3NpdG9yeS5zb3J0QnlOYW1lUHJlZmVycmluZ09uZXNXaXRoVVJMKHRo
aXMuX3JlcG9zaXRvcmllcy5maWx0ZXIoKHJlcG9zaXRvcnkpID0+ICF0aGlzLm93bmVyUmV2aXNp
b25Gb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpKSk7IH0KLSAgICBvd25lZFJlcG9zaXRvcmllc0Zv
ck93bmVyUmVwb3NpdG9yeShyZXBvc2l0b3J5KSB7IHJldHVybiB0aGlzLl9vd25lclJlcG9zaXRv
cnlUb093bmVkUmVwb3NpdG9yaWVzTWFwLmdldChyZXBvc2l0b3J5KTsgfQotICAgIGNvbW1pdEZv
clJlcG9zaXRvcnkocmVwb3NpdG9yeSkgeyByZXR1cm4gdGhpcy5fcmVwb3NpdG9yeVRvQ29tbWl0
TWFwLmdldChyZXBvc2l0b3J5KTsgfQorICAgIG93bmVkUmVwb3NpdG9yaWVzRm9yT3duZXJSZXBv
c2l0b3J5KHJlcG9zaXRvcnkpIHsgcmV0dXJuIENvbW1pdFNldC5nZXRGcm9tTWFwV2l0aEZhbGxi
YWNrUmV0dXJuKHRoaXMuX293bmVyUmVwb3NpdG9yeVRvT3duZWRSZXBvc2l0b3JpZXNNYXAsIHJl
cG9zaXRvcnkpOyB9CisgICAgY29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSB7IHJldHVy
biBDb21taXRTZXQuZ2V0RnJvbU1hcFdpdGhGYWxsYmFja1JldHVybih0aGlzLl9yZXBvc2l0b3J5
VG9Db21taXRNYXAsIHJlcG9zaXRvcnkpOyB9CiAKICAgICByZXZpc2lvbkZvclJlcG9zaXRvcnko
cmVwb3NpdG9yeSkKICAgICB7CkBAIC04NSw5ICs4NSwxNyBAQCBjbGFzcyBDb21taXRTZXQgZXh0
ZW5kcyBEYXRhTW9kZWxPYmplY3QgewogICAgICAgICByZXR1cm4gY29tbWl0ID8gY29tbWl0LnJl
dmlzaW9uKCkgOiBudWxsOwogICAgIH0KIAotICAgIHBhdGNoRm9yUmVwb3NpdG9yeShyZXBvc2l0
b3J5KSB7IHJldHVybiB0aGlzLl9yZXBvc2l0b3J5VG9QYXRjaE1hcC5nZXQocmVwb3NpdG9yeSk7
IH0KLSAgICByb290Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSB7IHJldHVybiB0aGlzLl9yZXBv
c2l0b3J5VG9Sb290TWFwLmdldChyZXBvc2l0b3J5KTsgfQotICAgIHJlcXVpcmVzQnVpbGRGb3JS
ZXBvc2l0b3J5KHJlcG9zaXRvcnkpIHsgcmV0dXJuIHRoaXMuX3JlcG9zaXRvcnlSZXF1aXJlc0J1
aWxkTWFwLmdldChyZXBvc2l0b3J5KTsgfQorICAgIHBhdGNoRm9yUmVwb3NpdG9yeShyZXBvc2l0
b3J5KSB7IHJldHVybiBDb21taXRTZXQuZ2V0RnJvbU1hcFdpdGhGYWxsYmFja1JldHVybih0aGlz
Ll9yZXBvc2l0b3J5VG9QYXRjaE1hcCwgcmVwb3NpdG9yeSk7IH0KKyAgICByb290Rm9yUmVwb3Np
dG9yeShyZXBvc2l0b3J5KSB7IHJldHVybiBDb21taXRTZXQuZ2V0RnJvbU1hcFdpdGhGYWxsYmFj
a1JldHVybih0aGlzLl9yZXBvc2l0b3J5VG9Sb290TWFwLCByZXBvc2l0b3J5KTsgfQorICAgIHJl
cXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpIHsgcmV0dXJuIENvbW1pdFNldC5n
ZXRGcm9tTWFwV2l0aEZhbGxiYWNrUmV0dXJuKHRoaXMuX3JlcG9zaXRvcnlSZXF1aXJlc0J1aWxk
TWFwLCByZXBvc2l0b3J5LCBmYWxzZSk7IH0KKworICAgIHN0YXRpYyBnZXRGcm9tTWFwV2l0aEZh
bGxiYWNrUmV0dXJuKG1hcCwga2V5LCBmYWxsYmFja1JldHVybiA9IG51bGwpCisgICAgeworICAg
ICAgICBjb25zb2xlLmFzc2VydChtYXAgaW5zdGFuY2VvZiBNYXApOworICAgICAgICBpZiAobWFw
LmhhcyhrZXkpKQorICAgICAgICAgICAgcmV0dXJuIG1hcC5nZXQoa2V5KTsKKyAgICAgICAgcmV0
dXJuIGZhbGxiYWNrUmV0dXJuOworICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBy
ZXR1cm4gYSBEYXRlIG9iamVjdC4KICAgICBsYXRlc3RDb21taXRUaW1lKCkKQEAgLTEwNSwxNiAr
MTEzLDI4IEBAIGNsYXNzIENvbW1pdFNldCBleHRlbmRzIERhdGFNb2RlbE9iamVjdCB7CiAgICAg
ewogICAgICAgICBpZiAodGhpcy5fcmVwb3NpdG9yaWVzLmxlbmd0aCAhPSBvdGhlci5fcmVwb3Np
dG9yaWVzLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY29uc3Qg
bmVpdGhlcklzTWVhc3VyZW1lbnRDb21taXRTZXQgPSAhKHRoaXMgaW5zdGFuY2VvZiBNZWFzdXJl
bWVudENvbW1pdFNldCkgJiYgIShvdGhlciBpbnN0YW5jZW9mIE1lYXN1cmVtZW50Q29tbWl0U2V0
KTsKKyAgICAgICAgaWYgKG5laXRoZXJJc01lYXN1cmVtZW50Q29tbWl0U2V0KSB7CisgICAgICAg
ICAgICBpZiAodGhpcy5fcmVwb3NpdG9yeVRvUGF0Y2hNYXAuc2l6ZSAhPSBvdGhlci5fcmVwb3Np
dG9yeVRvUGF0Y2hNYXAuc2l6ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICBpZiAodGhpcy5fcmVwb3NpdG9yeVRvUm9vdE1hcC5zaXplICE9IG90aGVyLl9yZXBv
c2l0b3J5VG9Sb290TWFwLnNpemUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgaWYgKHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE93bmVyTWFwLnNpemUgIT0gb3Ro
ZXIuX3JlcG9zaXRvcnlUb0NvbW1pdE93bmVyTWFwLnNpemUpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKHRoaXMuX3JlcG9zaXRvcnlSZXF1aXJlc0J1aWxk
TWFwLnNpemUgIT0gb3RoZXIuX3JlcG9zaXRvcnlSZXF1aXJlc0J1aWxkTWFwLnNpemUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKICAgICAgICAgZm9yIChjb25z
dCBbcmVwb3NpdG9yeSwgY29tbWl0XSBvZiB0aGlzLl9yZXBvc2l0b3J5VG9Db21taXRNYXApIHsK
ICAgICAgICAgICAgIGlmIChjb21taXQgIT0gb3RoZXIuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcC5n
ZXQocmVwb3NpdG9yeSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgaWYgKHRoaXMuX3JlcG9zaXRvcnlUb1BhdGNoTWFwLmdldChyZXBvc2l0b3J5KSAhPSBvdGhl
ci5fcmVwb3NpdG9yeVRvUGF0Y2hNYXAuZ2V0KHJlcG9zaXRvcnkpKQorICAgICAgICAgICAgaWYg
KHRoaXMucGF0Y2hGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpICE9IG90aGVyLnBhdGNoRm9yUmVw
b3NpdG9yeShyZXBvc2l0b3J5KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICBpZiAodGhpcy5fcmVwb3NpdG9yeVRvUm9vdE1hcC5nZXQocmVwb3NpdG9yeSkgIT0g
b3RoZXIuX3JlcG9zaXRvcnlUb1Jvb3RNYXAuZ2V0KHJlcG9zaXRvcnkpKQorICAgICAgICAgICAg
aWYgKHRoaXMucm9vdEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkgIT0gb3RoZXIucm9vdEZvclJl
cG9zaXRvcnkocmVwb3NpdG9yeSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgaWYgKHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE93bmVyTWFwLmdldChyZXBvc2l0
b3J5KSAhPSBvdGhlci5fcmVwb3NpdG9yeVRvQ29tbWl0TWFwLmdldChyZXBvc2l0b3J5KSkKKyAg
ICAgICAgICAgIGlmICh0aGlzLm93bmVyQ29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSAh
PSBvdGhlci5vd25lckNvbW1pdEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKHRoaXMuX3JlcG9zaXRvcnlSZXF1
aXJlc0J1aWxkTWFwLmdldChyZXBvc2l0b3J5KSAhPSBvdGhlci5fcmVwb3NpdG9yeVJlcXVpcmVz
QnVpbGRNYXAuZ2V0KHJlcG9zaXRvcnkpKQorICAgICAgICAgICAgaWYgKHRoaXMucmVxdWlyZXNC
dWlsZEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkgIT0gb3RoZXIucmVxdWlyZXNCdWlsZEZvclJl
cG9zaXRvcnkocmVwb3NpdG9yeSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBDb21taXRTZXQuYXJlQ3VzdG9tUm9vdHNFcXVhbCh0aGlz
Ll9jdXN0b21Sb290cywgb3RoZXIuX2N1c3RvbVJvb3RzKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2NvbW1pdC1zZXQtdGVzdHMuanMgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9jb21taXQtc2V0LXRlc3RzLmpzCmluZGV4IGVi
YjdiY2RhY2Q1YTY4MWU1OGI3YjExZjU4YTA5ZTFhOTliNDM3NWUuLjExMWM2YTY1NDhmNTE4OTJk
ZTFkMjdmZjEzMzE1M2FkY2E2NmUxMDUgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy91bml0LXRlc3RzL2NvbW1pdC1zZXQtdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3VuaXQtdGVzdHMvY29tbWl0LXNldC10ZXN0cy5qcwpAQCAtNywxNiArNywyOCBA
QCBjb25zdCBNb2NrUmVtb3RlQVBJID0gcmVxdWlyZSgnLi4vdW5pdC10ZXN0cy9yZXNvdXJjZXMv
bW9jay1yZW1vdGUtYXBpLmpzJykuTW9jawogCiBmdW5jdGlvbiBjcmVhdGVQYXRjaCgpCiB7Ci0g
ICAgcmV0dXJuIG5ldyBVcGxvYWRlZEZpbGUoNDUzLCB7J2NyZWF0ZWRBdCc6IG5ldyBEYXRlKCcy
MDE3LTA1LTAxVDE5OjE2OjUzWicpLCAnZmlsZW5hbWUnOiAncGF0Y2guZGF0JywgJ2V4dGVuc2lv
bic6ICcuZGF0JywgJ2F1dGhvcic6ICdzb21lIHVzZXInLAorICAgIHJldHVybiBVcGxvYWRlZEZp
bGUuZW5zdXJlU2luZ2xldG9uKDQ1MywgeydjcmVhdGVkQXQnOiBuZXcgRGF0ZSgnMjAxNy0wNS0w
MVQxOToxNjo1M1onKSwgJ2ZpbGVuYW1lJzogJ3BhdGNoLmRhdCcsICdleHRlbnNpb24nOiAnLmRh
dCcsICdhdXRob3InOiAnc29tZSB1c2VyJywKICAgICAgICAgc2l6ZTogNTM0NjM3LCBzaGEyNTY6
ICcxNjk0NjNjODEyNWUwN2M1NzcxMTBmZTE0NGVjZDYzOTQyZWI5NDcyZDQzOGZjMDAxNGY0NzQy
NDVlNWRmOGExJ30pOwogfQogCitmdW5jdGlvbiBjcmVhdGVBbm90aGVyUGF0Y2goKQoreworICAg
IHJldHVybiBVcGxvYWRlZEZpbGUuZW5zdXJlU2luZ2xldG9uKDQ1NCwgeydjcmVhdGVkQXQnOiBu
ZXcgRGF0ZSgnMjAxNy0wNS0wMVQxOToxNjo1M1onKSwgJ2ZpbGVuYW1lJzogJ3BhdGNoLmRhdCcs
ICdleHRlbnNpb24nOiAnLmRhdCcsICdhdXRob3InOiAnc29tZSB1c2VyJywKKyAgICAgICAgc2l6
ZTogNTM0NjExLCBzaGEyNTY6ICcxNjk0NjNjODEyNWUwN2M1NzcxMTBmZTE0NGVjZDYzOTQyZWI5
NDcyZDQzOGZjMDAxNGY0NzQyNDVlNWRmYWFhJ30pOworfQorCiBmdW5jdGlvbiBjcmVhdGVSb290
KCkKIHsKLSAgICByZXR1cm4gbmV3IFVwbG9hZGVkRmlsZSg0NTYsIHsnY3JlYXRlZEF0JzogbmV3
IERhdGUoJzIwMTctMDUtMDFUMjE6MDM6MjdaJyksICdmaWxlbmFtZSc6ICdyb290LmRhdCcsICdl
eHRlbnNpb24nOiAnLmRhdCcsICdhdXRob3InOiAnc29tZSB1c2VyJywKKyAgICByZXR1cm4gVXBs
b2FkZWRGaWxlLmVuc3VyZVNpbmdsZXRvbig0NTYsIHsnY3JlYXRlZEF0JzogbmV3IERhdGUoJzIw
MTctMDUtMDFUMjE6MDM6MjdaJyksICdmaWxlbmFtZSc6ICdyb290LmRhdCcsICdleHRlbnNpb24n
OiAnLmRhdCcsICdhdXRob3InOiAnc29tZSB1c2VyJywKICAgICAgICAgc2l6ZTogMTY0NTIyMzQs
IHNoYTI1NjogJzAzZWVkN2E4NDk0YWI4Nzk0YzQ0YjdkNDMwOGU1NTQ0OGZjNTZmNGQ2YzE3NTgw
OWJhOTY4Zjc4ZjY1NmQ1OGQnfSk7CiB9CiAKK2Z1bmN0aW9uIGNyZWF0ZUFub3RoZXJSb290KCkK
K3sKKyAgICByZXR1cm4gVXBsb2FkZWRGaWxlLmVuc3VyZVNpbmdsZXRvbig0NTcsIHsnY3JlYXRl
ZEF0JzogbmV3IERhdGUoJzIwMTctMDUtMDFUMjE6MDM6MjdaJyksICdmaWxlbmFtZSc6ICdyb290
LmRhdCcsICdleHRlbnNpb24nOiAnLmRhdCcsICdhdXRob3InOiAnc29tZSB1c2VyJywKKyAgICAg
ICAgc2l6ZTogMTY0NTIxMTEsIHNoYTI1NjogJzAzZWVkN2E4NDk0YWI4Nzk0YzQ0YjdkNDMwOGU1
NTQ0OGZjNTZmNGQ2YzE3NTgwOWJhOTY4Zjc4ZjY1NmRiYmInfSk7Cit9CisKIGZ1bmN0aW9uIGN1
c3RvbUNvbW1pdFNldFdpdGhvdXRPd25lZENvbW1pdCgpCiB7CiAgICAgY29uc3QgY3VzdG9tQ29t
bWl0U2V0ID0gbmV3IEN1c3RvbUNvbW1pdFNldDsKQEAgLTU0LDcgKzY2LDcgQEAgZnVuY3Rpb24g
Y3VzdG9tQ29tbWl0U2V0V2l0aE93bmVkUmVwb3NpdG9yeUhhc1NhbWVOYW1lQXNOb3RPd25lZFJl
cG9zaXRvcnkoKQogCiBmdW5jdGlvbiBvd25lckNvbW1pdCgpCiB7Ci0gICAgcmV0dXJuIG5ldyBD
b21taXRMb2coNSwgeworICAgIHJldHVybiBDb21taXRMb2cuZW5zdXJlU2luZ2xldG9uKDUsIHsK
ICAgICAgICAgcmVwb3NpdG9yeTogTW9ja01vZGVscy5vd25lclJlcG9zaXRvcnksCiAgICAgICAg
IHJldmlzaW9uOiAnb3duZXItY29tbWl0LTAnLAogICAgICAgICBvd25zQ29tbWl0czogdHJ1ZSwK
QEAgLTY0LDcgKzc2LDcgQEAgZnVuY3Rpb24gb3duZXJDb21taXQoKQogCiBmdW5jdGlvbiBwYXJ0
aWFsT3duZXJDb21taXQoKQogewotICAgIHJldHVybiBuZXcgQ29tbWl0TG9nKDUsIHsKKyAgICBy
ZXR1cm4gQ29tbWl0TG9nLmVuc3VyZVNpbmdsZXRvbig1LCB7CiAgICAgICAgIHJlcG9zaXRvcnk6
IE1vY2tNb2RlbHMub3duZXJSZXBvc2l0b3J5LAogICAgICAgICByZXZpc2lvbjogJ293bmVyLWNv
bW1pdC0wJywKICAgICAgICAgb3duc0NvbW1pdHM6IG51bGwsCkBAIC04NCw3ICs5Niw3IEBAIGZ1
bmN0aW9uIG93bmVkQ29tbWl0KCkKIAogZnVuY3Rpb24gd2Via2l0Q29tbWl0KCkKIHsKLSAgICBy
ZXR1cm4gbmV3IENvbW1pdExvZygyMDE3LCB7CisgICAgcmV0dXJuIENvbW1pdExvZy5lbnN1cmVT
aW5nbGV0b24oMjAxNywgewogICAgICAgICByZXBvc2l0b3J5OiBNb2NrTW9kZWxzLndlYmtpdCwK
ICAgICAgICAgcmV2aXNpb246ICd3ZWJraXQtY29tbWl0LTAnLAogICAgICAgICBvd25zQ29tbWl0
czogZmFsc2UsCkBAIC05Miw2ICsxMDQsMTAzIEBAIGZ1bmN0aW9uIHdlYmtpdENvbW1pdCgpCiAg
ICAgfSk7CiB9CiAKK2Rlc2NyaWJlKCdDb21taXRTZXQnLCAoKSA9PiB7CisgICAgTW9ja1JlbW90
ZUFQSS5pbmplY3QoKTsKKyAgICBNb2NrTW9kZWxzLmluamVjdCgpOworCisgICAgZnVuY3Rpb24g
b25lQ29tbWl0U2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBDb21taXRTZXQuZW5zdXJlU2lu
Z2xldG9uKDEsIHsKKyAgICAgICAgICAgIHJldmlzaW9uSXRlbXM6IFt7IGNvbW1pdDogd2Via2l0
Q29tbWl0KCksIHJlcXVpcmVzQnVpbGQ6IGZhbHNlIH1dLAorICAgICAgICAgICAgY3VzdG9tUm9v
dHM6IFtdCisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFub3RoZXJDb21taXRT
ZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIENvbW1pdFNldC5lbnN1cmVTaW5nbGV0b24oMiwg
eworICAgICAgICAgICAgcmV2aXNpb25JdGVtczogW3sgY29tbWl0OiB3ZWJraXRDb21taXQoKSwg
cmVxdWlyZXNCdWlsZDogZmFsc2UgfV0sCisgICAgICAgICAgICBjdXN0b21Sb290czogW10KKyAg
ICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY29tbWl0U2V0V2l0aFBhdGNoKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBDb21taXRTZXQuZW5zdXJlU2luZ2xldG9uKDMsIHsKKyAgICAg
ICAgICAgIHJldmlzaW9uSXRlbXM6IFt7IGNvbW1pdDogd2Via2l0Q29tbWl0KCksIHJlcXVpcmVz
QnVpbGQ6IGZhbHNlLCBwYXRjaDogY3JlYXRlUGF0Y2goKSB9XSwKKyAgICAgICAgICAgIGN1c3Rv
bVJvb3RzOiBbXQorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjb21taXRTZXRX
aXRoQW5vdGhlclBhdGNoKCkKKyAgICB7CisgICAgICAgIHJldHVybiBDb21taXRTZXQuZW5zdXJl
U2luZ2xldG9uKDQsIHsKKyAgICAgICAgICAgIHJldmlzaW9uSXRlbXM6IFt7IGNvbW1pdDogd2Vi
a2l0Q29tbWl0KCksIHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCBwYXRjaDogY3JlYXRlQW5vdGhlclBh
dGNoKCkgfV0sCisgICAgICAgICAgICBjdXN0b21Sb290czogW10KKyAgICAgICAgfSk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gY29tbWl0U2V0V2l0aFJvb3QoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIENvbW1pdFNldC5lbnN1cmVTaW5nbGV0b24oNSwgeworICAgICAgICAgICAgcmV2aXNpb25J
dGVtczogW3sgY29tbWl0OiB3ZWJraXRDb21taXQoKSwgcmVxdWlyZXNCdWlsZDogZmFsc2UgfV0s
CisgICAgICAgICAgICBjdXN0b21Sb290czogW2NyZWF0ZVJvb3QoKV0KKyAgICAgICAgfSk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gYW5vdGhlckNvbW1pdFNldFdpdGhSb290KCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBDb21taXRTZXQuZW5zdXJlU2luZ2xldG9uKDYsIHsKKyAgICAgICAgICAg
IHJldmlzaW9uSXRlbXM6IFt7IGNvbW1pdDogd2Via2l0Q29tbWl0KCksIHJlcXVpcmVzQnVpbGQ6
IGZhbHNlIH1dLAorICAgICAgICAgICAgY3VzdG9tUm9vdHM6IFtjcmVhdGVBbm90aGVyUm9vdCgp
XQorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBvbmVNZWFzdXJlbWVudENvbW1p
dFNldCgpCisgICAgeworICAgICAgICByZXR1cm4gTWVhc3VyZW1lbnRDb21taXRTZXQuZW5zdXJl
U2luZ2xldG9uKDEsIFsKKyAgICAgICAgICAgIFsyMDE3LCAxMSwgJ3dlYmtpdC1jb21taXQtMCcs
IDE0NTY5MzI3NzMwMDBdCisgICAgICAgIF0pOworICAgIH0KKworICAgIGRlc2NyaWJlKCdlcXVh
bHMnLCAoKSA9PiB7CisgICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIGlmIHBhdGNoZXMg
Zm9yIHNhbWUgcmVwb3NpdG9yeSBhcmUgZGlmZmVyZW50JywgKCkgPT4geworICAgICAgICAgICAg
YXNzZXJ0KCFjb21taXRTZXRXaXRoUGF0Y2goKS5lcXVhbHMoY29tbWl0U2V0V2l0aEFub3RoZXJQ
YXRjaCgpKSk7CisgICAgICAgICAgICBhc3NlcnQoIWNvbW1pdFNldFdpdGhBbm90aGVyUGF0Y2go
KS5lcXVhbHMoY29tbWl0U2V0V2l0aFBhdGNoKCkpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg
aXQoJ3Nob3VsZCByZXR1cm4gZmFsc2UgaWYgcGF0Y2ggaXMgb25seSBzcGVjaWZpZWQgaW4gb25l
IGNvbW1pdCBzZXQnLCAoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQoIW9uZUNvbW1pdFNldCgp
LmVxdWFscyhjb21taXRTZXRXaXRoUGF0Y2goKSkpOworICAgICAgICAgICAgYXNzZXJ0KCFjb21t
aXRTZXRXaXRoUGF0Y2goKS5lcXVhbHMob25lQ29tbWl0U2V0KCkpKTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2UgaWYgcm9vdHMgZm9yIHNhbWUgcmVwb3Np
dG9yeSBhcmUgZGlmZmVyZW50JywgKCkgPT4geworICAgICAgICAgICAgYXNzZXJ0KCFjb21taXRT
ZXRXaXRoUm9vdCgpLmVxdWFscyhhbm90aGVyQ29tbWl0U2V0V2l0aFJvb3QoKSkpOworICAgICAg
ICAgICAgYXNzZXJ0KCFhbm90aGVyQ29tbWl0U2V0V2l0aFJvb3QoKS5lcXVhbHMoY29tbWl0U2V0
V2l0aFJvb3QoKSkpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIHJldHVybiBm
YWxzZSBpZiByb290IGlzIG9ubHkgc3BlY2lmaWVkIGluIG9uZSBjb21taXQgc2V0JywgKCkgPT4g
eworICAgICAgICAgICAgYXNzZXJ0KCFjb21taXRTZXRXaXRoUm9vdCgpLmVxdWFscyhvbmVDb21t
aXRTZXQoKSkpOworICAgICAgICAgICAgYXNzZXJ0KCFvbmVDb21taXRTZXQoKS5lcXVhbHMoY29t
bWl0U2V0V2l0aFJvb3QoKSkpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIHJl
dHVybiB0cnVlIHdoZW4gY29tcGFyaW5nIHR3byBpZGVudGljYWwgY29tbWl0IHNldCcsICgpID0+
IHsKKyAgICAgICAgICAgIGFzc2VydChvbmVDb21taXRTZXQoKS5lcXVhbHMob25lQ29tbWl0U2V0
KCkpKTsKKyAgICAgICAgICAgIGFzc2VydChhbm90aGVyQ29tbWl0U2V0KCkuZXF1YWxzKGFub3Ro
ZXJDb21taXRTZXQoKSkpOworICAgICAgICAgICAgYXNzZXJ0KGNvbW1pdFNldFdpdGhQYXRjaCgp
LmVxdWFscyhjb21taXRTZXRXaXRoUGF0Y2goKSkpOworICAgICAgICAgICAgYXNzZXJ0KGNvbW1p
dFNldFdpdGhBbm90aGVyUGF0Y2goKS5lcXVhbHMoY29tbWl0U2V0V2l0aEFub3RoZXJQYXRjaCgp
KSk7CisgICAgICAgICAgICBhc3NlcnQob25lTWVhc3VyZW1lbnRDb21taXRTZXQoKS5lcXVhbHMo
b25lTWVhc3VyZW1lbnRDb21taXRTZXQoKSkpOworICAgICAgICAgICAgYXNzZXJ0KGNvbW1pdFNl
dFdpdGhSb290KCkuZXF1YWxzKGNvbW1pdFNldFdpdGhSb290KCkpKTsKKyAgICAgICAgICAgIGFz
c2VydChhbm90aGVyQ29tbWl0U2V0V2l0aFJvb3QoKS5lcXVhbHMoYW5vdGhlckNvbW1pdFNldFdp
dGhSb290KCkpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBiZSBhYmxlIHRv
IGNvbXBhcmUgYmV0d2VlbiBDb21taXRTZXQgYW5kIE1lYXN1cmVtZW50Q29tbWl0U2V0JywgKCkg
PT4geworICAgICAgICAgICAgYXNzZXJ0KG9uZUNvbW1pdFNldCgpLmVxdWFscyhvbmVNZWFzdXJl
bWVudENvbW1pdFNldCgpKSk7CisgICAgICAgICAgICBhc3NlcnQob25lTWVhc3VyZW1lbnRDb21t
aXRTZXQoKS5lcXVhbHMob25lQ29tbWl0U2V0KCkpKTsKKyAgICAgICAgfSk7CisgICAgfSkKK30p
OworCiBkZXNjcmliZSgnSW50ZXJtZWRpYXRlQ29tbWl0U2V0JywgKCkgPT4gewogICAgIE1vY2tS
ZW1vdGVBUEkuaW5qZWN0KCk7CiAgICAgTW9ja01vZGVscy5pbmplY3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332005</attachid>
            <date>2018-01-22 21:24:01 -0800</date>
            <delta_ts>2018-01-24 00:54:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181967-20180122212400.patch</filename>
            <type>text/plain</type>
            <size>11437</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI3MzczCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCA0NmZjNzdjZmM1OTQ0Y2MxMDc4NjAzYTQxZjgwZGMwYTE3ZTg1YWE4Li40NDY4ZGY1Yjdj
MDYzZmJjNjkxZWM3YWJhMTI2NmQzMDdiNzYwNzA1IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxOC0wMS0yMiAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBGaXggQ29tbWl0U2V0LmVxdWFscyBidWcgd2hpY2ggd2ls
bCBhbHdheXMgcmV0dXJuIGZhbHNlIHdoZW4gY29tcGFyaW5nIENvbW1pdFNldCBhZ2FpbnN0IE1l
YXN1cmVtZW50Q29tbWl0U2V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgxOTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRml4ZWQgYSBidWcgY2F1c2VkIGJ5IGEgdHlwbyBpbiBDb21taXRTZXQuZXF1
YWxzLCB3aGljaCBtYWtlcyBpdCByZXR1cm5zIGluY29ycmVjdCByZXN1bHRzIGZvciBtb3N0Cisg
ICAgICAgIGNvbXBhcmlzb24gYmV0d2VlbiBhIENvbW1pdFNldCBhbmQgYSBNZWFzdXJlbWVudENv
bW1pdFNldC4KKyAgICAgICAgTWVhc3VyZW1lbnRDb21taXRTZXQgZG9lcyBub3QgaGF2ZSBmdWxs
IGluZm9ybWF0aW9uIGZvciB0aGUgY29tbWl0cywgdGh1cywgaXQgY2Fubm90IGJ1aWxkIG1hcHBp
bmdzCisgICAgICAgIGJldHdlZW4gcm9vdC9wYXRjaC9vd25lciBjb21taXQvcmVxdWlyZXMgYnVp
bGQgdG8gcmVwb3NpdG9yeS4gV2hlbiBxdWVyeWluZyB3aGV0aGVyIGEgZ2l2ZW4gcmVwb3NpdG9y
eQorICAgICAgICBuZWVkcyB0byBiZSBidWlsdCwgTWVhc3VyZW1lbnRDb21taXRTZXQgd2lsbCBy
ZXR1cm4gdW5kZWZpbmVkLiBEdWUgdG8gJ3VuZGVmaW5lZCAhPSBmYWxzZScsIHRoaXMKKyAgICAg
ICAgZXF1YWxpdHkgY2hlY2sgd2lsbCBmYWlsLiBNYWtpbmcgJ0NvbW1pdFNldC5yZXF1aXJlc0J1
aWxkRm9yUmVwb3NpdG9yeScgZGVmYXVsdHMgdG8gJ2ZhbHNlJyB3b3VsZCBmaXgKKyAgICAgICAg
dGhpcyBidWcuCisKKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL2NvbW1pdC1zZXQuanM6Cisg
ICAgICAgIChDb21taXRTZXQucHJvdG90eXBlLnJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5KTog
TWFrZSBpdCByZXR1cm4gZmFsc2Ugd2hlbiBrZXkgZG9lcyBub3QgZXhpc3QKKyAgICAgICAgaW5z
dGVhZCBvZiAndW5kZWZpbmVkJy4KKyAgICAgICAgKENvbW1pdFNldC5wcm90b3R5cGUuZXF1YWxz
KTogRml4ZWQgdGhlIHR5cG8gdGhhdCBjYXVzZXMgdGhlIGJ1Zy4KKyAgICAgICAgQWRkZWQgbWFw
cGluZyBzaXplIGNoZWNrIHdoZW4gYm90aCBhcmUgbm90ICdNZWFzdXJlbWVudENvbW1pdFNldCcu
CisgICAgICAgIFVzZSB3cmFwcGVkIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIHF1ZXJ5aW5nIHRoZSBt
YXBwaW5nIGRpcmVjdGx5LgorICAgICAgICAqIHVuaXQtdGVzdHMvY29tbWl0LXNldC10ZXN0cy5q
czogQWRkZWQgdW5pdCB0ZXN0cy4KKwogMjAxOC0wMS0yMCAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KIAogICAgICAgICBFeHRlbmQgJ2lmQnVpbHQnIGNvbmZpZyBrZXkgdG8gc2V0
IHByb3BlcnR5IGJhc2VkIG9uIHdoZXRoZXIgY2VydGFpbiByZXBvc2l0b3JpZXMgYXJlIGJ1aWx0
IG9yIG5vdC4KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMv
bW9kZWxzL2NvbW1pdC1zZXQuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yz
L21vZGVscy9jb21taXQtc2V0LmpzCmluZGV4IGNmOGExY2M0YjgzMzYyNGU1M2YxMDliNzJjNTMz
ZjQzNDY1NmZmYTcuLjhkZDliODZjYTZmYzE0NWFjNGY2MTM2ZmQzMjg3NTBmNGFmZWQwNDggMTAw
NjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2NvbW1p
dC1zZXQuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMv
Y29tbWl0LXNldC5qcwpAQCAtODcsNyArODcsNyBAQCBjbGFzcyBDb21taXRTZXQgZXh0ZW5kcyBE
YXRhTW9kZWxPYmplY3QgewogCiAgICAgcGF0Y2hGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpIHsg
cmV0dXJuIHRoaXMuX3JlcG9zaXRvcnlUb1BhdGNoTWFwLmdldChyZXBvc2l0b3J5KTsgfQogICAg
IHJvb3RGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpIHsgcmV0dXJuIHRoaXMuX3JlcG9zaXRvcnlU
b1Jvb3RNYXAuZ2V0KHJlcG9zaXRvcnkpOyB9Ci0gICAgcmVxdWlyZXNCdWlsZEZvclJlcG9zaXRv
cnkocmVwb3NpdG9yeSkgeyByZXR1cm4gdGhpcy5fcmVwb3NpdG9yeVJlcXVpcmVzQnVpbGRNYXAu
Z2V0KHJlcG9zaXRvcnkpOyB9CisgICAgcmVxdWlyZXNCdWlsZEZvclJlcG9zaXRvcnkocmVwb3Np
dG9yeSkgeyByZXR1cm4gdGhpcy5fcmVwb3NpdG9yeVJlcXVpcmVzQnVpbGRNYXAuZ2V0KHJlcG9z
aXRvcnkpIHx8IGZhbHNlOyB9CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmV0dXJuIGEg
RGF0ZSBvYmplY3QuCiAgICAgbGF0ZXN0Q29tbWl0VGltZSgpCkBAIC0xMDUsMTYgKzEwNSwyOCBA
QCBjbGFzcyBDb21taXRTZXQgZXh0ZW5kcyBEYXRhTW9kZWxPYmplY3QgewogICAgIHsKICAgICAg
ICAgaWYgKHRoaXMuX3JlcG9zaXRvcmllcy5sZW5ndGggIT0gb3RoZXIuX3JlcG9zaXRvcmllcy5s
ZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNvbnN0IG5laXRoZXJJ
c01lYXN1cmVtZW50Q29tbWl0U2V0ID0gISh0aGlzIGluc3RhbmNlb2YgTWVhc3VyZW1lbnRDb21t
aXRTZXQpICYmICEob3RoZXIgaW5zdGFuY2VvZiBNZWFzdXJlbWVudENvbW1pdFNldCk7CisgICAg
ICAgIGlmIChuZWl0aGVySXNNZWFzdXJlbWVudENvbW1pdFNldCkgeworICAgICAgICAgICAgaWYg
KHRoaXMuX3JlcG9zaXRvcnlUb1BhdGNoTWFwLnNpemUgIT0gb3RoZXIuX3JlcG9zaXRvcnlUb1Bh
dGNoTWFwLnNpemUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
aWYgKHRoaXMuX3JlcG9zaXRvcnlUb1Jvb3RNYXAuc2l6ZSAhPSBvdGhlci5fcmVwb3NpdG9yeVRv
Um9vdE1hcC5zaXplKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IGlmICh0aGlzLl9yZXBvc2l0b3J5VG9Db21taXRPd25lck1hcC5zaXplICE9IG90aGVyLl9yZXBv
c2l0b3J5VG9Db21taXRPd25lck1hcC5zaXplKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9yZXBvc2l0b3J5UmVxdWlyZXNCdWlsZE1hcC5zaXpl
ICE9IG90aGVyLl9yZXBvc2l0b3J5UmVxdWlyZXNCdWlsZE1hcC5zaXplKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCiAgICAgICAgIGZvciAoY29uc3QgW3JlcG9z
aXRvcnksIGNvbW1pdF0gb2YgdGhpcy5fcmVwb3NpdG9yeVRvQ29tbWl0TWFwKSB7CiAgICAgICAg
ICAgICBpZiAoY29tbWl0ICE9IG90aGVyLl9yZXBvc2l0b3J5VG9Db21taXRNYXAuZ2V0KHJlcG9z
aXRvcnkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGlmICh0
aGlzLl9yZXBvc2l0b3J5VG9QYXRjaE1hcC5nZXQocmVwb3NpdG9yeSkgIT0gb3RoZXIuX3JlcG9z
aXRvcnlUb1BhdGNoTWFwLmdldChyZXBvc2l0b3J5KSkKKyAgICAgICAgICAgIGlmICh0aGlzLnBh
dGNoRm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSAhPSBvdGhlci5wYXRjaEZvclJlcG9zaXRvcnko
cmVwb3NpdG9yeSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
aWYgKHRoaXMuX3JlcG9zaXRvcnlUb1Jvb3RNYXAuZ2V0KHJlcG9zaXRvcnkpICE9IG90aGVyLl9y
ZXBvc2l0b3J5VG9Sb290TWFwLmdldChyZXBvc2l0b3J5KSkKKyAgICAgICAgICAgIGlmICh0aGlz
LnJvb3RGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpICE9IG90aGVyLnJvb3RGb3JSZXBvc2l0b3J5
KHJlcG9zaXRvcnkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
IGlmICh0aGlzLl9yZXBvc2l0b3J5VG9Db21taXRPd25lck1hcC5nZXQocmVwb3NpdG9yeSkgIT0g
b3RoZXIuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcC5nZXQocmVwb3NpdG9yeSkpCisgICAgICAgICAg
ICBpZiAodGhpcy5vd25lckNvbW1pdEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkgIT0gb3RoZXIu
b3duZXJDb21taXRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgIGlmICh0aGlzLl9yZXBvc2l0b3J5UmVxdWlyZXNCdWls
ZE1hcC5nZXQocmVwb3NpdG9yeSkgIT0gb3RoZXIuX3JlcG9zaXRvcnlSZXF1aXJlc0J1aWxkTWFw
LmdldChyZXBvc2l0b3J5KSkKKyAgICAgICAgICAgIGlmICh0aGlzLnJlcXVpcmVzQnVpbGRGb3JS
ZXBvc2l0b3J5KHJlcG9zaXRvcnkpICE9IG90aGVyLnJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5
KHJlcG9zaXRvcnkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm4gQ29tbWl0U2V0LmFyZUN1c3RvbVJvb3RzRXF1YWwodGhpcy5fY3VzdG9t
Um9vdHMsIG90aGVyLl9jdXN0b21Sb290cyk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvdW5pdC10ZXN0cy9jb21taXQtc2V0LXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3VuaXQtdGVzdHMvY29tbWl0LXNldC10ZXN0cy5qcwppbmRleCBlYmI3YmNkYWNk
NWE2ODFlNThiN2IxMWY1OGEwOWUxYTk5YjQzNzVlLi4xMTFjNmE2NTQ4ZjUxODkyZGUxZDI3ZmYx
MzMxNTNhZGNhNjZlMTA1IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5p
dC10ZXN0cy9jb21taXQtc2V0LXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy91bml0LXRlc3RzL2NvbW1pdC1zZXQtdGVzdHMuanMKQEAgLTcsMTYgKzcsMjggQEAgY29uc3Qg
TW9ja1JlbW90ZUFQSSA9IHJlcXVpcmUoJy4uL3VuaXQtdGVzdHMvcmVzb3VyY2VzL21vY2stcmVt
b3RlLWFwaS5qcycpLk1vY2sKIAogZnVuY3Rpb24gY3JlYXRlUGF0Y2goKQogewotICAgIHJldHVy
biBuZXcgVXBsb2FkZWRGaWxlKDQ1MywgeydjcmVhdGVkQXQnOiBuZXcgRGF0ZSgnMjAxNy0wNS0w
MVQxOToxNjo1M1onKSwgJ2ZpbGVuYW1lJzogJ3BhdGNoLmRhdCcsICdleHRlbnNpb24nOiAnLmRh
dCcsICdhdXRob3InOiAnc29tZSB1c2VyJywKKyAgICByZXR1cm4gVXBsb2FkZWRGaWxlLmVuc3Vy
ZVNpbmdsZXRvbig0NTMsIHsnY3JlYXRlZEF0JzogbmV3IERhdGUoJzIwMTctMDUtMDFUMTk6MTY6
NTNaJyksICdmaWxlbmFtZSc6ICdwYXRjaC5kYXQnLCAnZXh0ZW5zaW9uJzogJy5kYXQnLCAnYXV0
aG9yJzogJ3NvbWUgdXNlcicsCiAgICAgICAgIHNpemU6IDUzNDYzNywgc2hhMjU2OiAnMTY5NDYz
YzgxMjVlMDdjNTc3MTEwZmUxNDRlY2Q2Mzk0MmViOTQ3MmQ0MzhmYzAwMTRmNDc0MjQ1ZTVkZjhh
MSd9KTsKIH0KIAorZnVuY3Rpb24gY3JlYXRlQW5vdGhlclBhdGNoKCkKK3sKKyAgICByZXR1cm4g
VXBsb2FkZWRGaWxlLmVuc3VyZVNpbmdsZXRvbig0NTQsIHsnY3JlYXRlZEF0JzogbmV3IERhdGUo
JzIwMTctMDUtMDFUMTk6MTY6NTNaJyksICdmaWxlbmFtZSc6ICdwYXRjaC5kYXQnLCAnZXh0ZW5z
aW9uJzogJy5kYXQnLCAnYXV0aG9yJzogJ3NvbWUgdXNlcicsCisgICAgICAgIHNpemU6IDUzNDYx
MSwgc2hhMjU2OiAnMTY5NDYzYzgxMjVlMDdjNTc3MTEwZmUxNDRlY2Q2Mzk0MmViOTQ3MmQ0Mzhm
YzAwMTRmNDc0MjQ1ZTVkZmFhYSd9KTsKK30KKwogZnVuY3Rpb24gY3JlYXRlUm9vdCgpCiB7Ci0g
ICAgcmV0dXJuIG5ldyBVcGxvYWRlZEZpbGUoNDU2LCB7J2NyZWF0ZWRBdCc6IG5ldyBEYXRlKCcy
MDE3LTA1LTAxVDIxOjAzOjI3WicpLCAnZmlsZW5hbWUnOiAncm9vdC5kYXQnLCAnZXh0ZW5zaW9u
JzogJy5kYXQnLCAnYXV0aG9yJzogJ3NvbWUgdXNlcicsCisgICAgcmV0dXJuIFVwbG9hZGVkRmls
ZS5lbnN1cmVTaW5nbGV0b24oNDU2LCB7J2NyZWF0ZWRBdCc6IG5ldyBEYXRlKCcyMDE3LTA1LTAx
VDIxOjAzOjI3WicpLCAnZmlsZW5hbWUnOiAncm9vdC5kYXQnLCAnZXh0ZW5zaW9uJzogJy5kYXQn
LCAnYXV0aG9yJzogJ3NvbWUgdXNlcicsCiAgICAgICAgIHNpemU6IDE2NDUyMjM0LCBzaGEyNTY6
ICcwM2VlZDdhODQ5NGFiODc5NGM0NGI3ZDQzMDhlNTU0NDhmYzU2ZjRkNmMxNzU4MDliYTk2OGY3
OGY2NTZkNThkJ30pOwogfQogCitmdW5jdGlvbiBjcmVhdGVBbm90aGVyUm9vdCgpCit7CisgICAg
cmV0dXJuIFVwbG9hZGVkRmlsZS5lbnN1cmVTaW5nbGV0b24oNDU3LCB7J2NyZWF0ZWRBdCc6IG5l
dyBEYXRlKCcyMDE3LTA1LTAxVDIxOjAzOjI3WicpLCAnZmlsZW5hbWUnOiAncm9vdC5kYXQnLCAn
ZXh0ZW5zaW9uJzogJy5kYXQnLCAnYXV0aG9yJzogJ3NvbWUgdXNlcicsCisgICAgICAgIHNpemU6
IDE2NDUyMTExLCBzaGEyNTY6ICcwM2VlZDdhODQ5NGFiODc5NGM0NGI3ZDQzMDhlNTU0NDhmYzU2
ZjRkNmMxNzU4MDliYTk2OGY3OGY2NTZkYmJiJ30pOworfQorCiBmdW5jdGlvbiBjdXN0b21Db21t
aXRTZXRXaXRob3V0T3duZWRDb21taXQoKQogewogICAgIGNvbnN0IGN1c3RvbUNvbW1pdFNldCA9
IG5ldyBDdXN0b21Db21taXRTZXQ7CkBAIC01NCw3ICs2Niw3IEBAIGZ1bmN0aW9uIGN1c3RvbUNv
bW1pdFNldFdpdGhPd25lZFJlcG9zaXRvcnlIYXNTYW1lTmFtZUFzTm90T3duZWRSZXBvc2l0b3J5
KCkKIAogZnVuY3Rpb24gb3duZXJDb21taXQoKQogewotICAgIHJldHVybiBuZXcgQ29tbWl0TG9n
KDUsIHsKKyAgICByZXR1cm4gQ29tbWl0TG9nLmVuc3VyZVNpbmdsZXRvbig1LCB7CiAgICAgICAg
IHJlcG9zaXRvcnk6IE1vY2tNb2RlbHMub3duZXJSZXBvc2l0b3J5LAogICAgICAgICByZXZpc2lv
bjogJ293bmVyLWNvbW1pdC0wJywKICAgICAgICAgb3duc0NvbW1pdHM6IHRydWUsCkBAIC02NCw3
ICs3Niw3IEBAIGZ1bmN0aW9uIG93bmVyQ29tbWl0KCkKIAogZnVuY3Rpb24gcGFydGlhbE93bmVy
Q29tbWl0KCkKIHsKLSAgICByZXR1cm4gbmV3IENvbW1pdExvZyg1LCB7CisgICAgcmV0dXJuIENv
bW1pdExvZy5lbnN1cmVTaW5nbGV0b24oNSwgewogICAgICAgICByZXBvc2l0b3J5OiBNb2NrTW9k
ZWxzLm93bmVyUmVwb3NpdG9yeSwKICAgICAgICAgcmV2aXNpb246ICdvd25lci1jb21taXQtMCcs
CiAgICAgICAgIG93bnNDb21taXRzOiBudWxsLApAQCAtODQsNyArOTYsNyBAQCBmdW5jdGlvbiBv
d25lZENvbW1pdCgpCiAKIGZ1bmN0aW9uIHdlYmtpdENvbW1pdCgpCiB7Ci0gICAgcmV0dXJuIG5l
dyBDb21taXRMb2coMjAxNywgeworICAgIHJldHVybiBDb21taXRMb2cuZW5zdXJlU2luZ2xldG9u
KDIwMTcsIHsKICAgICAgICAgcmVwb3NpdG9yeTogTW9ja01vZGVscy53ZWJraXQsCiAgICAgICAg
IHJldmlzaW9uOiAnd2Via2l0LWNvbW1pdC0wJywKICAgICAgICAgb3duc0NvbW1pdHM6IGZhbHNl
LApAQCAtOTIsNiArMTA0LDEwMyBAQCBmdW5jdGlvbiB3ZWJraXRDb21taXQoKQogICAgIH0pOwog
fQogCitkZXNjcmliZSgnQ29tbWl0U2V0JywgKCkgPT4geworICAgIE1vY2tSZW1vdGVBUEkuaW5q
ZWN0KCk7CisgICAgTW9ja01vZGVscy5pbmplY3QoKTsKKworICAgIGZ1bmN0aW9uIG9uZUNvbW1p
dFNldCgpCisgICAgeworICAgICAgICByZXR1cm4gQ29tbWl0U2V0LmVuc3VyZVNpbmdsZXRvbigx
LCB7CisgICAgICAgICAgICByZXZpc2lvbkl0ZW1zOiBbeyBjb21taXQ6IHdlYmtpdENvbW1pdCgp
LCByZXF1aXJlc0J1aWxkOiBmYWxzZSB9XSwKKyAgICAgICAgICAgIGN1c3RvbVJvb3RzOiBbXQor
ICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhbm90aGVyQ29tbWl0U2V0KCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBDb21taXRTZXQuZW5zdXJlU2luZ2xldG9uKDIsIHsKKyAgICAg
ICAgICAgIHJldmlzaW9uSXRlbXM6IFt7IGNvbW1pdDogd2Via2l0Q29tbWl0KCksIHJlcXVpcmVz
QnVpbGQ6IGZhbHNlIH1dLAorICAgICAgICAgICAgY3VzdG9tUm9vdHM6IFtdCisgICAgICAgIH0p
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGNvbW1pdFNldFdpdGhQYXRjaCgpCisgICAgeworICAg
ICAgICByZXR1cm4gQ29tbWl0U2V0LmVuc3VyZVNpbmdsZXRvbigzLCB7CisgICAgICAgICAgICBy
ZXZpc2lvbkl0ZW1zOiBbeyBjb21taXQ6IHdlYmtpdENvbW1pdCgpLCByZXF1aXJlc0J1aWxkOiBm
YWxzZSwgcGF0Y2g6IGNyZWF0ZVBhdGNoKCkgfV0sCisgICAgICAgICAgICBjdXN0b21Sb290czog
W10KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY29tbWl0U2V0V2l0aEFub3Ro
ZXJQYXRjaCgpCisgICAgeworICAgICAgICByZXR1cm4gQ29tbWl0U2V0LmVuc3VyZVNpbmdsZXRv
big0LCB7CisgICAgICAgICAgICByZXZpc2lvbkl0ZW1zOiBbeyBjb21taXQ6IHdlYmtpdENvbW1p
dCgpLCByZXF1aXJlc0J1aWxkOiBmYWxzZSwgcGF0Y2g6IGNyZWF0ZUFub3RoZXJQYXRjaCgpIH1d
LAorICAgICAgICAgICAgY3VzdG9tUm9vdHM6IFtdCisgICAgICAgIH0pOworICAgIH0KKworICAg
IGZ1bmN0aW9uIGNvbW1pdFNldFdpdGhSb290KCkKKyAgICB7CisgICAgICAgIHJldHVybiBDb21t
aXRTZXQuZW5zdXJlU2luZ2xldG9uKDUsIHsKKyAgICAgICAgICAgIHJldmlzaW9uSXRlbXM6IFt7
IGNvbW1pdDogd2Via2l0Q29tbWl0KCksIHJlcXVpcmVzQnVpbGQ6IGZhbHNlIH1dLAorICAgICAg
ICAgICAgY3VzdG9tUm9vdHM6IFtjcmVhdGVSb290KCldCisgICAgICAgIH0pOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIGFub3RoZXJDb21taXRTZXRXaXRoUm9vdCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gQ29tbWl0U2V0LmVuc3VyZVNpbmdsZXRvbig2LCB7CisgICAgICAgICAgICByZXZpc2lv
bkl0ZW1zOiBbeyBjb21taXQ6IHdlYmtpdENvbW1pdCgpLCByZXF1aXJlc0J1aWxkOiBmYWxzZSB9
XSwKKyAgICAgICAgICAgIGN1c3RvbVJvb3RzOiBbY3JlYXRlQW5vdGhlclJvb3QoKV0KKyAgICAg
ICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gb25lTWVhc3VyZW1lbnRDb21taXRTZXQoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIE1lYXN1cmVtZW50Q29tbWl0U2V0LmVuc3VyZVNpbmdsZXRv
bigxLCBbCisgICAgICAgICAgICBbMjAxNywgMTEsICd3ZWJraXQtY29tbWl0LTAnLCAxNDU2OTMy
NzczMDAwXQorICAgICAgICBdKTsKKyAgICB9CisKKyAgICBkZXNjcmliZSgnZXF1YWxzJywgKCkg
PT4geworICAgICAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSBpZiBwYXRjaGVzIGZvciBzYW1l
IHJlcG9zaXRvcnkgYXJlIGRpZmZlcmVudCcsICgpID0+IHsKKyAgICAgICAgICAgIGFzc2VydCgh
Y29tbWl0U2V0V2l0aFBhdGNoKCkuZXF1YWxzKGNvbW1pdFNldFdpdGhBbm90aGVyUGF0Y2goKSkp
OworICAgICAgICAgICAgYXNzZXJ0KCFjb21taXRTZXRXaXRoQW5vdGhlclBhdGNoKCkuZXF1YWxz
KGNvbW1pdFNldFdpdGhQYXRjaCgpKSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91
bGQgcmV0dXJuIGZhbHNlIGlmIHBhdGNoIGlzIG9ubHkgc3BlY2lmaWVkIGluIG9uZSBjb21taXQg
c2V0JywgKCkgPT4geworICAgICAgICAgICAgYXNzZXJ0KCFvbmVDb21taXRTZXQoKS5lcXVhbHMo
Y29tbWl0U2V0V2l0aFBhdGNoKCkpKTsKKyAgICAgICAgICAgIGFzc2VydCghY29tbWl0U2V0V2l0
aFBhdGNoKCkuZXF1YWxzKG9uZUNvbW1pdFNldCgpKSk7CisgICAgICAgIH0pOworCisgICAgICAg
IGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIGlmIHJvb3RzIGZvciBzYW1lIHJlcG9zaXRvcnkgYXJl
IGRpZmZlcmVudCcsICgpID0+IHsKKyAgICAgICAgICAgIGFzc2VydCghY29tbWl0U2V0V2l0aFJv
b3QoKS5lcXVhbHMoYW5vdGhlckNvbW1pdFNldFdpdGhSb290KCkpKTsKKyAgICAgICAgICAgIGFz
c2VydCghYW5vdGhlckNvbW1pdFNldFdpdGhSb290KCkuZXF1YWxzKGNvbW1pdFNldFdpdGhSb290
KCkpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2UgaWYg
cm9vdCBpcyBvbmx5IHNwZWNpZmllZCBpbiBvbmUgY29tbWl0IHNldCcsICgpID0+IHsKKyAgICAg
ICAgICAgIGFzc2VydCghY29tbWl0U2V0V2l0aFJvb3QoKS5lcXVhbHMob25lQ29tbWl0U2V0KCkp
KTsKKyAgICAgICAgICAgIGFzc2VydCghb25lQ29tbWl0U2V0KCkuZXF1YWxzKGNvbW1pdFNldFdp
dGhSb290KCkpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1
ZSB3aGVuIGNvbXBhcmluZyB0d28gaWRlbnRpY2FsIGNvbW1pdCBzZXQnLCAoKSA9PiB7CisgICAg
ICAgICAgICBhc3NlcnQob25lQ29tbWl0U2V0KCkuZXF1YWxzKG9uZUNvbW1pdFNldCgpKSk7Cisg
ICAgICAgICAgICBhc3NlcnQoYW5vdGhlckNvbW1pdFNldCgpLmVxdWFscyhhbm90aGVyQ29tbWl0
U2V0KCkpKTsKKyAgICAgICAgICAgIGFzc2VydChjb21taXRTZXRXaXRoUGF0Y2goKS5lcXVhbHMo
Y29tbWl0U2V0V2l0aFBhdGNoKCkpKTsKKyAgICAgICAgICAgIGFzc2VydChjb21taXRTZXRXaXRo
QW5vdGhlclBhdGNoKCkuZXF1YWxzKGNvbW1pdFNldFdpdGhBbm90aGVyUGF0Y2goKSkpOworICAg
ICAgICAgICAgYXNzZXJ0KG9uZU1lYXN1cmVtZW50Q29tbWl0U2V0KCkuZXF1YWxzKG9uZU1lYXN1
cmVtZW50Q29tbWl0U2V0KCkpKTsKKyAgICAgICAgICAgIGFzc2VydChjb21taXRTZXRXaXRoUm9v
dCgpLmVxdWFscyhjb21taXRTZXRXaXRoUm9vdCgpKSk7CisgICAgICAgICAgICBhc3NlcnQoYW5v
dGhlckNvbW1pdFNldFdpdGhSb290KCkuZXF1YWxzKGFub3RoZXJDb21taXRTZXRXaXRoUm9vdCgp
KSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgYmUgYWJsZSB0byBjb21wYXJl
IGJldHdlZW4gQ29tbWl0U2V0IGFuZCBNZWFzdXJlbWVudENvbW1pdFNldCcsICgpID0+IHsKKyAg
ICAgICAgICAgIGFzc2VydChvbmVDb21taXRTZXQoKS5lcXVhbHMob25lTWVhc3VyZW1lbnRDb21t
aXRTZXQoKSkpOworICAgICAgICAgICAgYXNzZXJ0KG9uZU1lYXN1cmVtZW50Q29tbWl0U2V0KCku
ZXF1YWxzKG9uZUNvbW1pdFNldCgpKSk7CisgICAgICAgIH0pOworICAgIH0pCit9KTsKKwogZGVz
Y3JpYmUoJ0ludGVybWVkaWF0ZUNvbW1pdFNldCcsICgpID0+IHsKICAgICBNb2NrUmVtb3RlQVBJ
LmluamVjdCgpOwogICAgIE1vY2tNb2RlbHMuaW5qZWN0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332129</attachid>
            <date>2018-01-24 00:54:56 -0800</date>
            <delta_ts>2018-01-24 01:11:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181967-20180124005456.patch</filename>
            <type>text/plain</type>
            <size>10533</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI3MzczCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCA0NmZjNzdjZmM1OTQ0Y2MxMDc4NjAzYTQxZjgwZGMwYTE3ZTg1YWE4Li5iYjFkY2NlMTZh
YzM1MjhhMTUwMjFhMzJmOGFiMDYyM2EzNzc4YjU3IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxOC0wMS0yMiAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGhlIGJ1ZyB0aGF0ICdUZXN0R3JvdXBSZXN1bHRz
Vmlld2VyJyBjcmVhdGVzIHVubmVjZXNzYXJ5IHJvd3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE5NjcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCBhIGJ1ZyBjYXVzZWQgYnkgYSB0eXBvIGlu
IENvbW1pdFNldC5lcXVhbHMsIHdoaWNoIG1ha2VzIGl0IHJldHVybnMgaW5jb3JyZWN0IHJlc3Vs
dHMgZm9yIG1vc3QKKyAgICAgICAgY29tcGFyaXNvbiBiZXR3ZWVuIGEgQ29tbWl0U2V0IGFuZCBh
IE1lYXN1cmVtZW50Q29tbWl0U2V0LgorICAgICAgICBNZWFzdXJlbWVudENvbW1pdFNldCBkb2Vz
IG5vdCBoYXZlIGZ1bGwgaW5mb3JtYXRpb24gZm9yIHRoZSBjb21taXRzLCB0aHVzLCBpdCBjYW5u
b3QgYnVpbGQgbWFwcGluZ3MKKyAgICAgICAgYmV0d2VlbiByb290L3BhdGNoL293bmVyIGNvbW1p
dC9yZXF1aXJlcyBidWlsZCB0byByZXBvc2l0b3J5LiBXaGVuIHF1ZXJ5aW5nIHdoZXRoZXIgYSBn
aXZlbiByZXBvc2l0b3J5CisgICAgICAgIG5lZWRzIHRvIGJlIGJ1aWx0LCBNZWFzdXJlbWVudENv
bW1pdFNldCB3aWxsIHJldHVybiB1bmRlZmluZWQuIER1ZSB0byAndW5kZWZpbmVkICE9IGZhbHNl
JywgdGhpcworICAgICAgICBlcXVhbGl0eSBjaGVjayB3aWxsIGZhaWwuIE1ha2luZyAnQ29tbWl0
U2V0LnJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5JyBkZWZhdWx0cyB0byAnZmFsc2UnIHdvdWxk
IGZpeAorICAgICAgICB0aGlzIGJ1Zy4KKworICAgICAgICAqIHB1YmxpYy92My9tb2RlbHMvY29t
bWl0LXNldC5qczoKKyAgICAgICAgKENvbW1pdFNldC5wcm90b3R5cGUucmVxdWlyZXNCdWlsZEZv
clJlcG9zaXRvcnkpOiBNYWtlIGl0IHJldHVybiBmYWxzZSB3aGVuIGtleSBkb2VzIG5vdCBleGlz
dAorICAgICAgICBpbnN0ZWFkIG9mICd1bmRlZmluZWQnLgorICAgICAgICAoQ29tbWl0U2V0LnBy
b3RvdHlwZS5lcXVhbHMpOiBGaXhlZCB0aGUgdHlwbyB0aGF0IGNhdXNlcyB0aGUgYnVnLgorICAg
ICAgICBVc2Ugd3JhcHBlZCBmdW5jdGlvbnMgaW5zdGVhZCBvZiBxdWVyeWluZyB0aGUgbWFwcGlu
ZyBkaXJlY3RseS4KKyAgICAgICAgKiB1bml0LXRlc3RzL2NvbW1pdC1zZXQtdGVzdHMuanM6IEFk
ZGVkIHVuaXQgdGVzdHMuCisKIDIwMTgtMDEtMjAgIERld2VpIFpodSAgPGRld2VpX3podUBhcHBs
ZS5jb20+CiAKICAgICAgICAgRXh0ZW5kICdpZkJ1aWx0JyBjb25maWcga2V5IHRvIHNldCBwcm9w
ZXJ0eSBiYXNlZCBvbiB3aGV0aGVyIGNlcnRhaW4gcmVwb3NpdG9yaWVzIGFyZSBidWlsdCBvciBu
b3QuCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVs
cy9jb21taXQtc2V0LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2Rl
bHMvY29tbWl0LXNldC5qcwppbmRleCBjZjhhMWNjNGI4MzM2MjRlNTNmMTA5YjcyYzUzM2Y0MzQ2
NTZmZmE3Li5lZTVmMzNhMGQ1ZTY1MDc0NjlmYmVmODM4ZjJmYmE0Yjc1MzYxYzBlIDEwMDY0NAot
LS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9jb21taXQtc2V0
LmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2NvbW1p
dC1zZXQuanMKQEAgLTg3LDcgKzg3LDcgQEAgY2xhc3MgQ29tbWl0U2V0IGV4dGVuZHMgRGF0YU1v
ZGVsT2JqZWN0IHsKIAogICAgIHBhdGNoRm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSB7IHJldHVy
biB0aGlzLl9yZXBvc2l0b3J5VG9QYXRjaE1hcC5nZXQocmVwb3NpdG9yeSk7IH0KICAgICByb290
Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSB7IHJldHVybiB0aGlzLl9yZXBvc2l0b3J5VG9Sb290
TWFwLmdldChyZXBvc2l0b3J5KTsgfQotICAgIHJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5KHJl
cG9zaXRvcnkpIHsgcmV0dXJuIHRoaXMuX3JlcG9zaXRvcnlSZXF1aXJlc0J1aWxkTWFwLmdldChy
ZXBvc2l0b3J5KTsgfQorICAgIHJlcXVpcmVzQnVpbGRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkp
IHsgcmV0dXJuIHRoaXMuX3JlcG9zaXRvcnlSZXF1aXJlc0J1aWxkTWFwLmdldChyZXBvc2l0b3J5
KSB8fCBmYWxzZTsgfQogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJldHVybiBhIERhdGUg
b2JqZWN0LgogICAgIGxhdGVzdENvbW1pdFRpbWUoKQpAQCAtMTA4LDEzICsxMDgsMTMgQEAgY2xh
c3MgQ29tbWl0U2V0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKICAgICAgICAgZm9yIChjb25z
dCBbcmVwb3NpdG9yeSwgY29tbWl0XSBvZiB0aGlzLl9yZXBvc2l0b3J5VG9Db21taXRNYXApIHsK
ICAgICAgICAgICAgIGlmIChjb21taXQgIT0gb3RoZXIuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcC5n
ZXQocmVwb3NpdG9yeSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgaWYgKHRoaXMuX3JlcG9zaXRvcnlUb1BhdGNoTWFwLmdldChyZXBvc2l0b3J5KSAhPSBvdGhl
ci5fcmVwb3NpdG9yeVRvUGF0Y2hNYXAuZ2V0KHJlcG9zaXRvcnkpKQorICAgICAgICAgICAgaWYg
KHRoaXMucGF0Y2hGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpICE9IG90aGVyLnBhdGNoRm9yUmVw
b3NpdG9yeShyZXBvc2l0b3J5KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICBpZiAodGhpcy5fcmVwb3NpdG9yeVRvUm9vdE1hcC5nZXQocmVwb3NpdG9yeSkgIT0g
b3RoZXIuX3JlcG9zaXRvcnlUb1Jvb3RNYXAuZ2V0KHJlcG9zaXRvcnkpKQorICAgICAgICAgICAg
aWYgKHRoaXMucm9vdEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkgIT0gb3RoZXIucm9vdEZvclJl
cG9zaXRvcnkocmVwb3NpdG9yeSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgaWYgKHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE93bmVyTWFwLmdldChyZXBvc2l0
b3J5KSAhPSBvdGhlci5fcmVwb3NpdG9yeVRvQ29tbWl0TWFwLmdldChyZXBvc2l0b3J5KSkKKyAg
ICAgICAgICAgIGlmICh0aGlzLm93bmVyQ29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSAh
PSBvdGhlci5vd25lckNvbW1pdEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKHRoaXMuX3JlcG9zaXRvcnlSZXF1
aXJlc0J1aWxkTWFwLmdldChyZXBvc2l0b3J5KSAhPSBvdGhlci5fcmVwb3NpdG9yeVJlcXVpcmVz
QnVpbGRNYXAuZ2V0KHJlcG9zaXRvcnkpKQorICAgICAgICAgICAgaWYgKHRoaXMucmVxdWlyZXNC
dWlsZEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkgIT0gb3RoZXIucmVxdWlyZXNCdWlsZEZvclJl
cG9zaXRvcnkocmVwb3NpdG9yeSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBDb21taXRTZXQuYXJlQ3VzdG9tUm9vdHNFcXVhbCh0aGlz
Ll9jdXN0b21Sb290cywgb3RoZXIuX2N1c3RvbVJvb3RzKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2NvbW1pdC1zZXQtdGVzdHMuanMgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9jb21taXQtc2V0LXRlc3RzLmpzCmluZGV4IGVi
YjdiY2RhY2Q1YTY4MWU1OGI3YjExZjU4YTA5ZTFhOTliNDM3NWUuLjExMWM2YTY1NDhmNTE4OTJk
ZTFkMjdmZjEzMzE1M2FkY2E2NmUxMDUgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy91bml0LXRlc3RzL2NvbW1pdC1zZXQtdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3VuaXQtdGVzdHMvY29tbWl0LXNldC10ZXN0cy5qcwpAQCAtNywxNiArNywyOCBA
QCBjb25zdCBNb2NrUmVtb3RlQVBJID0gcmVxdWlyZSgnLi4vdW5pdC10ZXN0cy9yZXNvdXJjZXMv
bW9jay1yZW1vdGUtYXBpLmpzJykuTW9jawogCiBmdW5jdGlvbiBjcmVhdGVQYXRjaCgpCiB7Ci0g
ICAgcmV0dXJuIG5ldyBVcGxvYWRlZEZpbGUoNDUzLCB7J2NyZWF0ZWRBdCc6IG5ldyBEYXRlKCcy
MDE3LTA1LTAxVDE5OjE2OjUzWicpLCAnZmlsZW5hbWUnOiAncGF0Y2guZGF0JywgJ2V4dGVuc2lv
bic6ICcuZGF0JywgJ2F1dGhvcic6ICdzb21lIHVzZXInLAorICAgIHJldHVybiBVcGxvYWRlZEZp
bGUuZW5zdXJlU2luZ2xldG9uKDQ1MywgeydjcmVhdGVkQXQnOiBuZXcgRGF0ZSgnMjAxNy0wNS0w
MVQxOToxNjo1M1onKSwgJ2ZpbGVuYW1lJzogJ3BhdGNoLmRhdCcsICdleHRlbnNpb24nOiAnLmRh
dCcsICdhdXRob3InOiAnc29tZSB1c2VyJywKICAgICAgICAgc2l6ZTogNTM0NjM3LCBzaGEyNTY6
ICcxNjk0NjNjODEyNWUwN2M1NzcxMTBmZTE0NGVjZDYzOTQyZWI5NDcyZDQzOGZjMDAxNGY0NzQy
NDVlNWRmOGExJ30pOwogfQogCitmdW5jdGlvbiBjcmVhdGVBbm90aGVyUGF0Y2goKQoreworICAg
IHJldHVybiBVcGxvYWRlZEZpbGUuZW5zdXJlU2luZ2xldG9uKDQ1NCwgeydjcmVhdGVkQXQnOiBu
ZXcgRGF0ZSgnMjAxNy0wNS0wMVQxOToxNjo1M1onKSwgJ2ZpbGVuYW1lJzogJ3BhdGNoLmRhdCcs
ICdleHRlbnNpb24nOiAnLmRhdCcsICdhdXRob3InOiAnc29tZSB1c2VyJywKKyAgICAgICAgc2l6
ZTogNTM0NjExLCBzaGEyNTY6ICcxNjk0NjNjODEyNWUwN2M1NzcxMTBmZTE0NGVjZDYzOTQyZWI5
NDcyZDQzOGZjMDAxNGY0NzQyNDVlNWRmYWFhJ30pOworfQorCiBmdW5jdGlvbiBjcmVhdGVSb290
KCkKIHsKLSAgICByZXR1cm4gbmV3IFVwbG9hZGVkRmlsZSg0NTYsIHsnY3JlYXRlZEF0JzogbmV3
IERhdGUoJzIwMTctMDUtMDFUMjE6MDM6MjdaJyksICdmaWxlbmFtZSc6ICdyb290LmRhdCcsICdl
eHRlbnNpb24nOiAnLmRhdCcsICdhdXRob3InOiAnc29tZSB1c2VyJywKKyAgICByZXR1cm4gVXBs
b2FkZWRGaWxlLmVuc3VyZVNpbmdsZXRvbig0NTYsIHsnY3JlYXRlZEF0JzogbmV3IERhdGUoJzIw
MTctMDUtMDFUMjE6MDM6MjdaJyksICdmaWxlbmFtZSc6ICdyb290LmRhdCcsICdleHRlbnNpb24n
OiAnLmRhdCcsICdhdXRob3InOiAnc29tZSB1c2VyJywKICAgICAgICAgc2l6ZTogMTY0NTIyMzQs
IHNoYTI1NjogJzAzZWVkN2E4NDk0YWI4Nzk0YzQ0YjdkNDMwOGU1NTQ0OGZjNTZmNGQ2YzE3NTgw
OWJhOTY4Zjc4ZjY1NmQ1OGQnfSk7CiB9CiAKK2Z1bmN0aW9uIGNyZWF0ZUFub3RoZXJSb290KCkK
K3sKKyAgICByZXR1cm4gVXBsb2FkZWRGaWxlLmVuc3VyZVNpbmdsZXRvbig0NTcsIHsnY3JlYXRl
ZEF0JzogbmV3IERhdGUoJzIwMTctMDUtMDFUMjE6MDM6MjdaJyksICdmaWxlbmFtZSc6ICdyb290
LmRhdCcsICdleHRlbnNpb24nOiAnLmRhdCcsICdhdXRob3InOiAnc29tZSB1c2VyJywKKyAgICAg
ICAgc2l6ZTogMTY0NTIxMTEsIHNoYTI1NjogJzAzZWVkN2E4NDk0YWI4Nzk0YzQ0YjdkNDMwOGU1
NTQ0OGZjNTZmNGQ2YzE3NTgwOWJhOTY4Zjc4ZjY1NmRiYmInfSk7Cit9CisKIGZ1bmN0aW9uIGN1
c3RvbUNvbW1pdFNldFdpdGhvdXRPd25lZENvbW1pdCgpCiB7CiAgICAgY29uc3QgY3VzdG9tQ29t
bWl0U2V0ID0gbmV3IEN1c3RvbUNvbW1pdFNldDsKQEAgLTU0LDcgKzY2LDcgQEAgZnVuY3Rpb24g
Y3VzdG9tQ29tbWl0U2V0V2l0aE93bmVkUmVwb3NpdG9yeUhhc1NhbWVOYW1lQXNOb3RPd25lZFJl
cG9zaXRvcnkoKQogCiBmdW5jdGlvbiBvd25lckNvbW1pdCgpCiB7Ci0gICAgcmV0dXJuIG5ldyBD
b21taXRMb2coNSwgeworICAgIHJldHVybiBDb21taXRMb2cuZW5zdXJlU2luZ2xldG9uKDUsIHsK
ICAgICAgICAgcmVwb3NpdG9yeTogTW9ja01vZGVscy5vd25lclJlcG9zaXRvcnksCiAgICAgICAg
IHJldmlzaW9uOiAnb3duZXItY29tbWl0LTAnLAogICAgICAgICBvd25zQ29tbWl0czogdHJ1ZSwK
QEAgLTY0LDcgKzc2LDcgQEAgZnVuY3Rpb24gb3duZXJDb21taXQoKQogCiBmdW5jdGlvbiBwYXJ0
aWFsT3duZXJDb21taXQoKQogewotICAgIHJldHVybiBuZXcgQ29tbWl0TG9nKDUsIHsKKyAgICBy
ZXR1cm4gQ29tbWl0TG9nLmVuc3VyZVNpbmdsZXRvbig1LCB7CiAgICAgICAgIHJlcG9zaXRvcnk6
IE1vY2tNb2RlbHMub3duZXJSZXBvc2l0b3J5LAogICAgICAgICByZXZpc2lvbjogJ293bmVyLWNv
bW1pdC0wJywKICAgICAgICAgb3duc0NvbW1pdHM6IG51bGwsCkBAIC04NCw3ICs5Niw3IEBAIGZ1
bmN0aW9uIG93bmVkQ29tbWl0KCkKIAogZnVuY3Rpb24gd2Via2l0Q29tbWl0KCkKIHsKLSAgICBy
ZXR1cm4gbmV3IENvbW1pdExvZygyMDE3LCB7CisgICAgcmV0dXJuIENvbW1pdExvZy5lbnN1cmVT
aW5nbGV0b24oMjAxNywgewogICAgICAgICByZXBvc2l0b3J5OiBNb2NrTW9kZWxzLndlYmtpdCwK
ICAgICAgICAgcmV2aXNpb246ICd3ZWJraXQtY29tbWl0LTAnLAogICAgICAgICBvd25zQ29tbWl0
czogZmFsc2UsCkBAIC05Miw2ICsxMDQsMTAzIEBAIGZ1bmN0aW9uIHdlYmtpdENvbW1pdCgpCiAg
ICAgfSk7CiB9CiAKK2Rlc2NyaWJlKCdDb21taXRTZXQnLCAoKSA9PiB7CisgICAgTW9ja1JlbW90
ZUFQSS5pbmplY3QoKTsKKyAgICBNb2NrTW9kZWxzLmluamVjdCgpOworCisgICAgZnVuY3Rpb24g
b25lQ29tbWl0U2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBDb21taXRTZXQuZW5zdXJlU2lu
Z2xldG9uKDEsIHsKKyAgICAgICAgICAgIHJldmlzaW9uSXRlbXM6IFt7IGNvbW1pdDogd2Via2l0
Q29tbWl0KCksIHJlcXVpcmVzQnVpbGQ6IGZhbHNlIH1dLAorICAgICAgICAgICAgY3VzdG9tUm9v
dHM6IFtdCisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFub3RoZXJDb21taXRT
ZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIENvbW1pdFNldC5lbnN1cmVTaW5nbGV0b24oMiwg
eworICAgICAgICAgICAgcmV2aXNpb25JdGVtczogW3sgY29tbWl0OiB3ZWJraXRDb21taXQoKSwg
cmVxdWlyZXNCdWlsZDogZmFsc2UgfV0sCisgICAgICAgICAgICBjdXN0b21Sb290czogW10KKyAg
ICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY29tbWl0U2V0V2l0aFBhdGNoKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBDb21taXRTZXQuZW5zdXJlU2luZ2xldG9uKDMsIHsKKyAgICAg
ICAgICAgIHJldmlzaW9uSXRlbXM6IFt7IGNvbW1pdDogd2Via2l0Q29tbWl0KCksIHJlcXVpcmVz
QnVpbGQ6IGZhbHNlLCBwYXRjaDogY3JlYXRlUGF0Y2goKSB9XSwKKyAgICAgICAgICAgIGN1c3Rv
bVJvb3RzOiBbXQorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjb21taXRTZXRX
aXRoQW5vdGhlclBhdGNoKCkKKyAgICB7CisgICAgICAgIHJldHVybiBDb21taXRTZXQuZW5zdXJl
U2luZ2xldG9uKDQsIHsKKyAgICAgICAgICAgIHJldmlzaW9uSXRlbXM6IFt7IGNvbW1pdDogd2Vi
a2l0Q29tbWl0KCksIHJlcXVpcmVzQnVpbGQ6IGZhbHNlLCBwYXRjaDogY3JlYXRlQW5vdGhlclBh
dGNoKCkgfV0sCisgICAgICAgICAgICBjdXN0b21Sb290czogW10KKyAgICAgICAgfSk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gY29tbWl0U2V0V2l0aFJvb3QoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIENvbW1pdFNldC5lbnN1cmVTaW5nbGV0b24oNSwgeworICAgICAgICAgICAgcmV2aXNpb25J
dGVtczogW3sgY29tbWl0OiB3ZWJraXRDb21taXQoKSwgcmVxdWlyZXNCdWlsZDogZmFsc2UgfV0s
CisgICAgICAgICAgICBjdXN0b21Sb290czogW2NyZWF0ZVJvb3QoKV0KKyAgICAgICAgfSk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gYW5vdGhlckNvbW1pdFNldFdpdGhSb290KCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBDb21taXRTZXQuZW5zdXJlU2luZ2xldG9uKDYsIHsKKyAgICAgICAgICAg
IHJldmlzaW9uSXRlbXM6IFt7IGNvbW1pdDogd2Via2l0Q29tbWl0KCksIHJlcXVpcmVzQnVpbGQ6
IGZhbHNlIH1dLAorICAgICAgICAgICAgY3VzdG9tUm9vdHM6IFtjcmVhdGVBbm90aGVyUm9vdCgp
XQorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBvbmVNZWFzdXJlbWVudENvbW1p
dFNldCgpCisgICAgeworICAgICAgICByZXR1cm4gTWVhc3VyZW1lbnRDb21taXRTZXQuZW5zdXJl
U2luZ2xldG9uKDEsIFsKKyAgICAgICAgICAgIFsyMDE3LCAxMSwgJ3dlYmtpdC1jb21taXQtMCcs
IDE0NTY5MzI3NzMwMDBdCisgICAgICAgIF0pOworICAgIH0KKworICAgIGRlc2NyaWJlKCdlcXVh
bHMnLCAoKSA9PiB7CisgICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIGlmIHBhdGNoZXMg
Zm9yIHNhbWUgcmVwb3NpdG9yeSBhcmUgZGlmZmVyZW50JywgKCkgPT4geworICAgICAgICAgICAg
YXNzZXJ0KCFjb21taXRTZXRXaXRoUGF0Y2goKS5lcXVhbHMoY29tbWl0U2V0V2l0aEFub3RoZXJQ
YXRjaCgpKSk7CisgICAgICAgICAgICBhc3NlcnQoIWNvbW1pdFNldFdpdGhBbm90aGVyUGF0Y2go
KS5lcXVhbHMoY29tbWl0U2V0V2l0aFBhdGNoKCkpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg
aXQoJ3Nob3VsZCByZXR1cm4gZmFsc2UgaWYgcGF0Y2ggaXMgb25seSBzcGVjaWZpZWQgaW4gb25l
IGNvbW1pdCBzZXQnLCAoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQoIW9uZUNvbW1pdFNldCgp
LmVxdWFscyhjb21taXRTZXRXaXRoUGF0Y2goKSkpOworICAgICAgICAgICAgYXNzZXJ0KCFjb21t
aXRTZXRXaXRoUGF0Y2goKS5lcXVhbHMob25lQ29tbWl0U2V0KCkpKTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2UgaWYgcm9vdHMgZm9yIHNhbWUgcmVwb3Np
dG9yeSBhcmUgZGlmZmVyZW50JywgKCkgPT4geworICAgICAgICAgICAgYXNzZXJ0KCFjb21taXRT
ZXRXaXRoUm9vdCgpLmVxdWFscyhhbm90aGVyQ29tbWl0U2V0V2l0aFJvb3QoKSkpOworICAgICAg
ICAgICAgYXNzZXJ0KCFhbm90aGVyQ29tbWl0U2V0V2l0aFJvb3QoKS5lcXVhbHMoY29tbWl0U2V0
V2l0aFJvb3QoKSkpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIHJldHVybiBm
YWxzZSBpZiByb290IGlzIG9ubHkgc3BlY2lmaWVkIGluIG9uZSBjb21taXQgc2V0JywgKCkgPT4g
eworICAgICAgICAgICAgYXNzZXJ0KCFjb21taXRTZXRXaXRoUm9vdCgpLmVxdWFscyhvbmVDb21t
aXRTZXQoKSkpOworICAgICAgICAgICAgYXNzZXJ0KCFvbmVDb21taXRTZXQoKS5lcXVhbHMoY29t
bWl0U2V0V2l0aFJvb3QoKSkpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIHJl
dHVybiB0cnVlIHdoZW4gY29tcGFyaW5nIHR3byBpZGVudGljYWwgY29tbWl0IHNldCcsICgpID0+
IHsKKyAgICAgICAgICAgIGFzc2VydChvbmVDb21taXRTZXQoKS5lcXVhbHMob25lQ29tbWl0U2V0
KCkpKTsKKyAgICAgICAgICAgIGFzc2VydChhbm90aGVyQ29tbWl0U2V0KCkuZXF1YWxzKGFub3Ro
ZXJDb21taXRTZXQoKSkpOworICAgICAgICAgICAgYXNzZXJ0KGNvbW1pdFNldFdpdGhQYXRjaCgp
LmVxdWFscyhjb21taXRTZXRXaXRoUGF0Y2goKSkpOworICAgICAgICAgICAgYXNzZXJ0KGNvbW1p
dFNldFdpdGhBbm90aGVyUGF0Y2goKS5lcXVhbHMoY29tbWl0U2V0V2l0aEFub3RoZXJQYXRjaCgp
KSk7CisgICAgICAgICAgICBhc3NlcnQob25lTWVhc3VyZW1lbnRDb21taXRTZXQoKS5lcXVhbHMo
b25lTWVhc3VyZW1lbnRDb21taXRTZXQoKSkpOworICAgICAgICAgICAgYXNzZXJ0KGNvbW1pdFNl
dFdpdGhSb290KCkuZXF1YWxzKGNvbW1pdFNldFdpdGhSb290KCkpKTsKKyAgICAgICAgICAgIGFz
c2VydChhbm90aGVyQ29tbWl0U2V0V2l0aFJvb3QoKS5lcXVhbHMoYW5vdGhlckNvbW1pdFNldFdp
dGhSb290KCkpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBiZSBhYmxlIHRv
IGNvbXBhcmUgYmV0d2VlbiBDb21taXRTZXQgYW5kIE1lYXN1cmVtZW50Q29tbWl0U2V0JywgKCkg
PT4geworICAgICAgICAgICAgYXNzZXJ0KG9uZUNvbW1pdFNldCgpLmVxdWFscyhvbmVNZWFzdXJl
bWVudENvbW1pdFNldCgpKSk7CisgICAgICAgICAgICBhc3NlcnQob25lTWVhc3VyZW1lbnRDb21t
aXRTZXQoKS5lcXVhbHMob25lQ29tbWl0U2V0KCkpKTsKKyAgICAgICAgfSk7CisgICAgfSkKK30p
OworCiBkZXNjcmliZSgnSW50ZXJtZWRpYXRlQ29tbWl0U2V0JywgKCkgPT4gewogICAgIE1vY2tS
ZW1vdGVBUEkuaW5qZWN0KCk7CiAgICAgTW9ja01vZGVscy5pbmplY3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332134</attachid>
            <date>2018-01-24 01:11:59 -0800</date>
            <delta_ts>2018-01-24 14:09:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181967-20180124011159.patch</filename>
            <type>text/plain</type>
            <size>10535</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI3MzczCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCA0NmZjNzdjZmM1OTQ0Y2MxMDc4NjAzYTQxZjgwZGMwYTE3ZTg1YWE4Li5lYTkzOGNkMGE3
N2IyMzNmZTdhOTMyN2ZkYjNjN2M1ODYxNzQ4MTEzIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxOC0wMS0yMiAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGhlIGJ1ZyB0aGF0ICdUZXN0R3JvdXBSZXN1bHRz
Vmlld2VyJyBjcmVhdGVzIHVubmVjZXNzYXJ5IHJvd3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE5NjcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCBhIGJ1ZyBjYXVzZWQgYnkgYSB0eXBvIGlu
IENvbW1pdFNldC5lcXVhbHMsIHdoaWNoIG1ha2VzIGl0IHJldHVybnMgaW5jb3JyZWN0IHJlc3Vs
dHMgZm9yIG1vc3QKKyAgICAgICAgY29tcGFyaXNvbiBiZXR3ZWVuIGEgQ29tbWl0U2V0IGFuZCBh
IE1lYXN1cmVtZW50Q29tbWl0U2V0LgorCisgICAgICAgIE1lYXN1cmVtZW50Q29tbWl0U2V0IGRv
ZXMgbm90IGhhdmUgZnVsbCBpbmZvcm1hdGlvbiBmb3IgdGhlIGNvbW1pdHMsIHRodXMsIGl0IGNh
bm5vdCBidWlsZCBtYXBwaW5ncworICAgICAgICBiZXR3ZWVuIHJvb3QvcGF0Y2gvb3duZXIgY29t
bWl0L3JlcXVpcmVzIGJ1aWxkIHRvIHJlcG9zaXRvcnkuIFdoZW4gcXVlcnlpbmcgd2hldGhlciBh
IGdpdmVuIHJlcG9zaXRvcnkKKyAgICAgICAgbmVlZHMgdG8gYmUgYnVpbHQsIE1lYXN1cmVtZW50
Q29tbWl0U2V0IHdpbGwgcmV0dXJuIHVuZGVmaW5lZC4gRHVlIHRvICd1bmRlZmluZWQgIT0gZmFs
c2UnLCB0aGlzCisgICAgICAgIGVxdWFsaXR5IGNoZWNrIHdpbGwgZmFpbC4gTWFraW5nICdDb21t
aXRTZXQucmVxdWlyZXNCdWlsZEZvclJlcG9zaXRvcnknIGRlZmF1bHRzIHRvICdmYWxzZScgd291
bGQgZml4CisgICAgICAgIHRoaXMgYnVnLgorCisgICAgICAgICogcHVibGljL3YzL21vZGVscy9j
b21taXQtc2V0LmpzOgorICAgICAgICAoQ29tbWl0U2V0LnByb3RvdHlwZS5yZXF1aXJlc0J1aWxk
Rm9yUmVwb3NpdG9yeSk6IE1ha2UgaXQgcmV0dXJuIGZhbHNlIHdoZW4ga2V5IGRvZXMgbm90IGV4
aXN0CisgICAgICAgIGluc3RlYWQgb2YgJ3VuZGVmaW5lZCcuCisgICAgICAgIChDb21taXRTZXQu
cHJvdG90eXBlLmVxdWFscyk6IEZpeGVkIHRoZSB0eXBvIHRoYXQgY2F1c2VzIHRoZSBidWcuCisg
ICAgICAgIFVzZSB3cmFwcGVkIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIHF1ZXJ5aW5nIHRoZSBtYXBw
aW5nIGRpcmVjdGx5LgorICAgICAgICAqIHVuaXQtdGVzdHMvY29tbWl0LXNldC10ZXN0cy5qczog
QWRkZWQgdW5pdCB0ZXN0cy4KKwogMjAxOC0wMS0yMCAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1QGFw
cGxlLmNvbT4KIAogICAgICAgICBFeHRlbmQgJ2lmQnVpbHQnIGNvbmZpZyBrZXkgdG8gc2V0IHBy
b3BlcnR5IGJhc2VkIG9uIHdoZXRoZXIgY2VydGFpbiByZXBvc2l0b3JpZXMgYXJlIGJ1aWx0IG9y
IG5vdC4KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9k
ZWxzL2NvbW1pdC1zZXQuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21v
ZGVscy9jb21taXQtc2V0LmpzCmluZGV4IGNmOGExY2M0YjgzMzYyNGU1M2YxMDliNzJjNTMzZjQz
NDY1NmZmYTcuLmVlNWYzM2EwZDVlNjUwNzQ2OWZiZWY4MzhmMmZiYTRiNzUzNjFjMGUgMTAwNjQ0
Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2NvbW1pdC1z
ZXQuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvY29t
bWl0LXNldC5qcwpAQCAtODcsNyArODcsNyBAQCBjbGFzcyBDb21taXRTZXQgZXh0ZW5kcyBEYXRh
TW9kZWxPYmplY3QgewogCiAgICAgcGF0Y2hGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpIHsgcmV0
dXJuIHRoaXMuX3JlcG9zaXRvcnlUb1BhdGNoTWFwLmdldChyZXBvc2l0b3J5KTsgfQogICAgIHJv
b3RGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpIHsgcmV0dXJuIHRoaXMuX3JlcG9zaXRvcnlUb1Jv
b3RNYXAuZ2V0KHJlcG9zaXRvcnkpOyB9Ci0gICAgcmVxdWlyZXNCdWlsZEZvclJlcG9zaXRvcnko
cmVwb3NpdG9yeSkgeyByZXR1cm4gdGhpcy5fcmVwb3NpdG9yeVJlcXVpcmVzQnVpbGRNYXAuZ2V0
KHJlcG9zaXRvcnkpOyB9CisgICAgcmVxdWlyZXNCdWlsZEZvclJlcG9zaXRvcnkocmVwb3NpdG9y
eSkgeyByZXR1cm4gdGhpcy5fcmVwb3NpdG9yeVJlcXVpcmVzQnVpbGRNYXAuZ2V0KHJlcG9zaXRv
cnkpIHx8IGZhbHNlOyB9CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmV0dXJuIGEgRGF0
ZSBvYmplY3QuCiAgICAgbGF0ZXN0Q29tbWl0VGltZSgpCkBAIC0xMDgsMTMgKzEwOCwxMyBAQCBj
bGFzcyBDb21taXRTZXQgZXh0ZW5kcyBEYXRhTW9kZWxPYmplY3QgewogICAgICAgICBmb3IgKGNv
bnN0IFtyZXBvc2l0b3J5LCBjb21taXRdIG9mIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcCkg
ewogICAgICAgICAgICAgaWYgKGNvbW1pdCAhPSBvdGhlci5fcmVwb3NpdG9yeVRvQ29tbWl0TWFw
LmdldChyZXBvc2l0b3J5KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICBpZiAodGhpcy5fcmVwb3NpdG9yeVRvUGF0Y2hNYXAuZ2V0KHJlcG9zaXRvcnkpICE9IG90
aGVyLl9yZXBvc2l0b3J5VG9QYXRjaE1hcC5nZXQocmVwb3NpdG9yeSkpCisgICAgICAgICAgICBp
ZiAodGhpcy5wYXRjaEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkgIT0gb3RoZXIucGF0Y2hGb3JS
ZXBvc2l0b3J5KHJlcG9zaXRvcnkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgIGlmICh0aGlzLl9yZXBvc2l0b3J5VG9Sb290TWFwLmdldChyZXBvc2l0b3J5KSAh
PSBvdGhlci5fcmVwb3NpdG9yeVRvUm9vdE1hcC5nZXQocmVwb3NpdG9yeSkpCisgICAgICAgICAg
ICBpZiAodGhpcy5yb290Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSAhPSBvdGhlci5yb290Rm9y
UmVwb3NpdG9yeShyZXBvc2l0b3J5KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICBpZiAodGhpcy5fcmVwb3NpdG9yeVRvQ29tbWl0T3duZXJNYXAuZ2V0KHJlcG9z
aXRvcnkpICE9IG90aGVyLl9yZXBvc2l0b3J5VG9Db21taXRNYXAuZ2V0KHJlcG9zaXRvcnkpKQor
ICAgICAgICAgICAgaWYgKHRoaXMub3duZXJDb21taXRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkp
ICE9IG90aGVyLm93bmVyQ29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAodGhpcy5fcmVwb3NpdG9yeVJl
cXVpcmVzQnVpbGRNYXAuZ2V0KHJlcG9zaXRvcnkpICE9IG90aGVyLl9yZXBvc2l0b3J5UmVxdWly
ZXNCdWlsZE1hcC5nZXQocmVwb3NpdG9yeSkpCisgICAgICAgICAgICBpZiAodGhpcy5yZXF1aXJl
c0J1aWxkRm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSAhPSBvdGhlci5yZXF1aXJlc0J1aWxkRm9y
UmVwb3NpdG9yeShyZXBvc2l0b3J5KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuIENvbW1pdFNldC5hcmVDdXN0b21Sb290c0VxdWFsKHRo
aXMuX2N1c3RvbVJvb3RzLCBvdGhlci5fY3VzdG9tUm9vdHMpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvY29tbWl0LXNldC10ZXN0cy5qcyBiL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2NvbW1pdC1zZXQtdGVzdHMuanMKaW5kZXgg
ZWJiN2JjZGFjZDVhNjgxZTU4YjdiMTFmNThhMDllMWE5OWI0Mzc1ZS4uMTExYzZhNjU0OGY1MTg5
MmRlMWQyN2ZmMTMzMTUzYWRjYTY2ZTEwNSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3VuaXQtdGVzdHMvY29tbWl0LXNldC10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvdW5pdC10ZXN0cy9jb21taXQtc2V0LXRlc3RzLmpzCkBAIC03LDE2ICs3LDI4
IEBAIGNvbnN0IE1vY2tSZW1vdGVBUEkgPSByZXF1aXJlKCcuLi91bml0LXRlc3RzL3Jlc291cmNl
cy9tb2NrLXJlbW90ZS1hcGkuanMnKS5Nb2NrCiAKIGZ1bmN0aW9uIGNyZWF0ZVBhdGNoKCkKIHsK
LSAgICByZXR1cm4gbmV3IFVwbG9hZGVkRmlsZSg0NTMsIHsnY3JlYXRlZEF0JzogbmV3IERhdGUo
JzIwMTctMDUtMDFUMTk6MTY6NTNaJyksICdmaWxlbmFtZSc6ICdwYXRjaC5kYXQnLCAnZXh0ZW5z
aW9uJzogJy5kYXQnLCAnYXV0aG9yJzogJ3NvbWUgdXNlcicsCisgICAgcmV0dXJuIFVwbG9hZGVk
RmlsZS5lbnN1cmVTaW5nbGV0b24oNDUzLCB7J2NyZWF0ZWRBdCc6IG5ldyBEYXRlKCcyMDE3LTA1
LTAxVDE5OjE2OjUzWicpLCAnZmlsZW5hbWUnOiAncGF0Y2guZGF0JywgJ2V4dGVuc2lvbic6ICcu
ZGF0JywgJ2F1dGhvcic6ICdzb21lIHVzZXInLAogICAgICAgICBzaXplOiA1MzQ2MzcsIHNoYTI1
NjogJzE2OTQ2M2M4MTI1ZTA3YzU3NzExMGZlMTQ0ZWNkNjM5NDJlYjk0NzJkNDM4ZmMwMDE0ZjQ3
NDI0NWU1ZGY4YTEnfSk7CiB9CiAKK2Z1bmN0aW9uIGNyZWF0ZUFub3RoZXJQYXRjaCgpCit7Cisg
ICAgcmV0dXJuIFVwbG9hZGVkRmlsZS5lbnN1cmVTaW5nbGV0b24oNDU0LCB7J2NyZWF0ZWRBdCc6
IG5ldyBEYXRlKCcyMDE3LTA1LTAxVDE5OjE2OjUzWicpLCAnZmlsZW5hbWUnOiAncGF0Y2guZGF0
JywgJ2V4dGVuc2lvbic6ICcuZGF0JywgJ2F1dGhvcic6ICdzb21lIHVzZXInLAorICAgICAgICBz
aXplOiA1MzQ2MTEsIHNoYTI1NjogJzE2OTQ2M2M4MTI1ZTA3YzU3NzExMGZlMTQ0ZWNkNjM5NDJl
Yjk0NzJkNDM4ZmMwMDE0ZjQ3NDI0NWU1ZGZhYWEnfSk7Cit9CisKIGZ1bmN0aW9uIGNyZWF0ZVJv
b3QoKQogewotICAgIHJldHVybiBuZXcgVXBsb2FkZWRGaWxlKDQ1NiwgeydjcmVhdGVkQXQnOiBu
ZXcgRGF0ZSgnMjAxNy0wNS0wMVQyMTowMzoyN1onKSwgJ2ZpbGVuYW1lJzogJ3Jvb3QuZGF0Jywg
J2V4dGVuc2lvbic6ICcuZGF0JywgJ2F1dGhvcic6ICdzb21lIHVzZXInLAorICAgIHJldHVybiBV
cGxvYWRlZEZpbGUuZW5zdXJlU2luZ2xldG9uKDQ1NiwgeydjcmVhdGVkQXQnOiBuZXcgRGF0ZSgn
MjAxNy0wNS0wMVQyMTowMzoyN1onKSwgJ2ZpbGVuYW1lJzogJ3Jvb3QuZGF0JywgJ2V4dGVuc2lv
bic6ICcuZGF0JywgJ2F1dGhvcic6ICdzb21lIHVzZXInLAogICAgICAgICBzaXplOiAxNjQ1MjIz
NCwgc2hhMjU2OiAnMDNlZWQ3YTg0OTRhYjg3OTRjNDRiN2Q0MzA4ZTU1NDQ4ZmM1NmY0ZDZjMTc1
ODA5YmE5NjhmNzhmNjU2ZDU4ZCd9KTsKIH0KIAorZnVuY3Rpb24gY3JlYXRlQW5vdGhlclJvb3Qo
KQoreworICAgIHJldHVybiBVcGxvYWRlZEZpbGUuZW5zdXJlU2luZ2xldG9uKDQ1NywgeydjcmVh
dGVkQXQnOiBuZXcgRGF0ZSgnMjAxNy0wNS0wMVQyMTowMzoyN1onKSwgJ2ZpbGVuYW1lJzogJ3Jv
b3QuZGF0JywgJ2V4dGVuc2lvbic6ICcuZGF0JywgJ2F1dGhvcic6ICdzb21lIHVzZXInLAorICAg
ICAgICBzaXplOiAxNjQ1MjExMSwgc2hhMjU2OiAnMDNlZWQ3YTg0OTRhYjg3OTRjNDRiN2Q0MzA4
ZTU1NDQ4ZmM1NmY0ZDZjMTc1ODA5YmE5NjhmNzhmNjU2ZGJiYid9KTsKK30KKwogZnVuY3Rpb24g
Y3VzdG9tQ29tbWl0U2V0V2l0aG91dE93bmVkQ29tbWl0KCkKIHsKICAgICBjb25zdCBjdXN0b21D
b21taXRTZXQgPSBuZXcgQ3VzdG9tQ29tbWl0U2V0OwpAQCAtNTQsNyArNjYsNyBAQCBmdW5jdGlv
biBjdXN0b21Db21taXRTZXRXaXRoT3duZWRSZXBvc2l0b3J5SGFzU2FtZU5hbWVBc05vdE93bmVk
UmVwb3NpdG9yeSgpCiAKIGZ1bmN0aW9uIG93bmVyQ29tbWl0KCkKIHsKLSAgICByZXR1cm4gbmV3
IENvbW1pdExvZyg1LCB7CisgICAgcmV0dXJuIENvbW1pdExvZy5lbnN1cmVTaW5nbGV0b24oNSwg
ewogICAgICAgICByZXBvc2l0b3J5OiBNb2NrTW9kZWxzLm93bmVyUmVwb3NpdG9yeSwKICAgICAg
ICAgcmV2aXNpb246ICdvd25lci1jb21taXQtMCcsCiAgICAgICAgIG93bnNDb21taXRzOiB0cnVl
LApAQCAtNjQsNyArNzYsNyBAQCBmdW5jdGlvbiBvd25lckNvbW1pdCgpCiAKIGZ1bmN0aW9uIHBh
cnRpYWxPd25lckNvbW1pdCgpCiB7Ci0gICAgcmV0dXJuIG5ldyBDb21taXRMb2coNSwgeworICAg
IHJldHVybiBDb21taXRMb2cuZW5zdXJlU2luZ2xldG9uKDUsIHsKICAgICAgICAgcmVwb3NpdG9y
eTogTW9ja01vZGVscy5vd25lclJlcG9zaXRvcnksCiAgICAgICAgIHJldmlzaW9uOiAnb3duZXIt
Y29tbWl0LTAnLAogICAgICAgICBvd25zQ29tbWl0czogbnVsbCwKQEAgLTg0LDcgKzk2LDcgQEAg
ZnVuY3Rpb24gb3duZWRDb21taXQoKQogCiBmdW5jdGlvbiB3ZWJraXRDb21taXQoKQogewotICAg
IHJldHVybiBuZXcgQ29tbWl0TG9nKDIwMTcsIHsKKyAgICByZXR1cm4gQ29tbWl0TG9nLmVuc3Vy
ZVNpbmdsZXRvbigyMDE3LCB7CiAgICAgICAgIHJlcG9zaXRvcnk6IE1vY2tNb2RlbHMud2Via2l0
LAogICAgICAgICByZXZpc2lvbjogJ3dlYmtpdC1jb21taXQtMCcsCiAgICAgICAgIG93bnNDb21t
aXRzOiBmYWxzZSwKQEAgLTkyLDYgKzEwNCwxMDMgQEAgZnVuY3Rpb24gd2Via2l0Q29tbWl0KCkK
ICAgICB9KTsKIH0KIAorZGVzY3JpYmUoJ0NvbW1pdFNldCcsICgpID0+IHsKKyAgICBNb2NrUmVt
b3RlQVBJLmluamVjdCgpOworICAgIE1vY2tNb2RlbHMuaW5qZWN0KCk7CisKKyAgICBmdW5jdGlv
biBvbmVDb21taXRTZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIENvbW1pdFNldC5lbnN1cmVT
aW5nbGV0b24oMSwgeworICAgICAgICAgICAgcmV2aXNpb25JdGVtczogW3sgY29tbWl0OiB3ZWJr
aXRDb21taXQoKSwgcmVxdWlyZXNCdWlsZDogZmFsc2UgfV0sCisgICAgICAgICAgICBjdXN0b21S
b290czogW10KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYW5vdGhlckNvbW1p
dFNldCgpCisgICAgeworICAgICAgICByZXR1cm4gQ29tbWl0U2V0LmVuc3VyZVNpbmdsZXRvbigy
LCB7CisgICAgICAgICAgICByZXZpc2lvbkl0ZW1zOiBbeyBjb21taXQ6IHdlYmtpdENvbW1pdCgp
LCByZXF1aXJlc0J1aWxkOiBmYWxzZSB9XSwKKyAgICAgICAgICAgIGN1c3RvbVJvb3RzOiBbXQor
ICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjb21taXRTZXRXaXRoUGF0Y2goKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIENvbW1pdFNldC5lbnN1cmVTaW5nbGV0b24oMywgeworICAg
ICAgICAgICAgcmV2aXNpb25JdGVtczogW3sgY29tbWl0OiB3ZWJraXRDb21taXQoKSwgcmVxdWly
ZXNCdWlsZDogZmFsc2UsIHBhdGNoOiBjcmVhdGVQYXRjaCgpIH1dLAorICAgICAgICAgICAgY3Vz
dG9tUm9vdHM6IFtdCisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNvbW1pdFNl
dFdpdGhBbm90aGVyUGF0Y2goKQorICAgIHsKKyAgICAgICAgcmV0dXJuIENvbW1pdFNldC5lbnN1
cmVTaW5nbGV0b24oNCwgeworICAgICAgICAgICAgcmV2aXNpb25JdGVtczogW3sgY29tbWl0OiB3
ZWJraXRDb21taXQoKSwgcmVxdWlyZXNCdWlsZDogZmFsc2UsIHBhdGNoOiBjcmVhdGVBbm90aGVy
UGF0Y2goKSB9XSwKKyAgICAgICAgICAgIGN1c3RvbVJvb3RzOiBbXQorICAgICAgICB9KTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBjb21taXRTZXRXaXRoUm9vdCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gQ29tbWl0U2V0LmVuc3VyZVNpbmdsZXRvbig1LCB7CisgICAgICAgICAgICByZXZpc2lv
bkl0ZW1zOiBbeyBjb21taXQ6IHdlYmtpdENvbW1pdCgpLCByZXF1aXJlc0J1aWxkOiBmYWxzZSB9
XSwKKyAgICAgICAgICAgIGN1c3RvbVJvb3RzOiBbY3JlYXRlUm9vdCgpXQorICAgICAgICB9KTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBhbm90aGVyQ29tbWl0U2V0V2l0aFJvb3QoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIENvbW1pdFNldC5lbnN1cmVTaW5nbGV0b24oNiwgeworICAgICAgICAg
ICAgcmV2aXNpb25JdGVtczogW3sgY29tbWl0OiB3ZWJraXRDb21taXQoKSwgcmVxdWlyZXNCdWls
ZDogZmFsc2UgfV0sCisgICAgICAgICAgICBjdXN0b21Sb290czogW2NyZWF0ZUFub3RoZXJSb290
KCldCisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIG9uZU1lYXN1cmVtZW50Q29t
bWl0U2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBNZWFzdXJlbWVudENvbW1pdFNldC5lbnN1
cmVTaW5nbGV0b24oMSwgWworICAgICAgICAgICAgWzIwMTcsIDExLCAnd2Via2l0LWNvbW1pdC0w
JywgMTQ1NjkzMjc3MzAwMF0KKyAgICAgICAgXSk7CisgICAgfQorCisgICAgZGVzY3JpYmUoJ2Vx
dWFscycsICgpID0+IHsKKyAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2UgaWYgcGF0Y2hl
cyBmb3Igc2FtZSByZXBvc2l0b3J5IGFyZSBkaWZmZXJlbnQnLCAoKSA9PiB7CisgICAgICAgICAg
ICBhc3NlcnQoIWNvbW1pdFNldFdpdGhQYXRjaCgpLmVxdWFscyhjb21taXRTZXRXaXRoQW5vdGhl
clBhdGNoKCkpKTsKKyAgICAgICAgICAgIGFzc2VydCghY29tbWl0U2V0V2l0aEFub3RoZXJQYXRj
aCgpLmVxdWFscyhjb21taXRTZXRXaXRoUGF0Y2goKSkpOworICAgICAgICB9KTsKKworICAgICAg
ICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSBpZiBwYXRjaCBpcyBvbmx5IHNwZWNpZmllZCBpbiBv
bmUgY29tbWl0IHNldCcsICgpID0+IHsKKyAgICAgICAgICAgIGFzc2VydCghb25lQ29tbWl0U2V0
KCkuZXF1YWxzKGNvbW1pdFNldFdpdGhQYXRjaCgpKSk7CisgICAgICAgICAgICBhc3NlcnQoIWNv
bW1pdFNldFdpdGhQYXRjaCgpLmVxdWFscyhvbmVDb21taXRTZXQoKSkpOworICAgICAgICB9KTsK
KworICAgICAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSBpZiByb290cyBmb3Igc2FtZSByZXBv
c2l0b3J5IGFyZSBkaWZmZXJlbnQnLCAoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQoIWNvbW1p
dFNldFdpdGhSb290KCkuZXF1YWxzKGFub3RoZXJDb21taXRTZXRXaXRoUm9vdCgpKSk7CisgICAg
ICAgICAgICBhc3NlcnQoIWFub3RoZXJDb21taXRTZXRXaXRoUm9vdCgpLmVxdWFscyhjb21taXRT
ZXRXaXRoUm9vdCgpKSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgcmV0dXJu
IGZhbHNlIGlmIHJvb3QgaXMgb25seSBzcGVjaWZpZWQgaW4gb25lIGNvbW1pdCBzZXQnLCAoKSA9
PiB7CisgICAgICAgICAgICBhc3NlcnQoIWNvbW1pdFNldFdpdGhSb290KCkuZXF1YWxzKG9uZUNv
bW1pdFNldCgpKSk7CisgICAgICAgICAgICBhc3NlcnQoIW9uZUNvbW1pdFNldCgpLmVxdWFscyhj
b21taXRTZXRXaXRoUm9vdCgpKSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQg
cmV0dXJuIHRydWUgd2hlbiBjb21wYXJpbmcgdHdvIGlkZW50aWNhbCBjb21taXQgc2V0JywgKCkg
PT4geworICAgICAgICAgICAgYXNzZXJ0KG9uZUNvbW1pdFNldCgpLmVxdWFscyhvbmVDb21taXRT
ZXQoKSkpOworICAgICAgICAgICAgYXNzZXJ0KGFub3RoZXJDb21taXRTZXQoKS5lcXVhbHMoYW5v
dGhlckNvbW1pdFNldCgpKSk7CisgICAgICAgICAgICBhc3NlcnQoY29tbWl0U2V0V2l0aFBhdGNo
KCkuZXF1YWxzKGNvbW1pdFNldFdpdGhQYXRjaCgpKSk7CisgICAgICAgICAgICBhc3NlcnQoY29t
bWl0U2V0V2l0aEFub3RoZXJQYXRjaCgpLmVxdWFscyhjb21taXRTZXRXaXRoQW5vdGhlclBhdGNo
KCkpKTsKKyAgICAgICAgICAgIGFzc2VydChvbmVNZWFzdXJlbWVudENvbW1pdFNldCgpLmVxdWFs
cyhvbmVNZWFzdXJlbWVudENvbW1pdFNldCgpKSk7CisgICAgICAgICAgICBhc3NlcnQoY29tbWl0
U2V0V2l0aFJvb3QoKS5lcXVhbHMoY29tbWl0U2V0V2l0aFJvb3QoKSkpOworICAgICAgICAgICAg
YXNzZXJ0KGFub3RoZXJDb21taXRTZXRXaXRoUm9vdCgpLmVxdWFscyhhbm90aGVyQ29tbWl0U2V0
V2l0aFJvb3QoKSkpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGJlIGFibGUg
dG8gY29tcGFyZSBiZXR3ZWVuIENvbW1pdFNldCBhbmQgTWVhc3VyZW1lbnRDb21taXRTZXQnLCAo
KSA9PiB7CisgICAgICAgICAgICBhc3NlcnQob25lQ29tbWl0U2V0KCkuZXF1YWxzKG9uZU1lYXN1
cmVtZW50Q29tbWl0U2V0KCkpKTsKKyAgICAgICAgICAgIGFzc2VydChvbmVNZWFzdXJlbWVudENv
bW1pdFNldCgpLmVxdWFscyhvbmVDb21taXRTZXQoKSkpOworICAgICAgICB9KTsKKyAgICB9KQor
fSk7CisKIGRlc2NyaWJlKCdJbnRlcm1lZGlhdGVDb21taXRTZXQnLCAoKSA9PiB7CiAgICAgTW9j
a1JlbW90ZUFQSS5pbmplY3QoKTsKICAgICBNb2NrTW9kZWxzLmluamVjdCgpOwo=
</data>
<flag name="review"
          id="351097"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>