<?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>184368</bug_id>
          
          <creation_ts>2018-04-06 14:50:19 -0700</creation_ts>
          <short_desc>Added a helper function in CommitSet which will be shared between multiple independent incoming changes.</short_desc>
          <delta_ts>2018-04-09 21:27:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>183888</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>dewei_zhu</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dewei_zhu</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1412482</commentid>
    <comment_count>0</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2018-04-06 14:50:19 -0700</bug_when>
    <thetext>Added two helper functions in CommitSet which will be shared between multiple independent incoming changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412485</commentid>
    <comment_count>1</comment_count>
      <attachid>337392</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2018-04-06 14:55:43 -0700</bug_when>
    <thetext>Created attachment 337392
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412515</commentid>
    <comment_count>2</comment_count>
      <attachid>337392</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-04-06 16:43:00 -0700</bug_when>
    <thetext>Comment on attachment 337392
Patch

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

&gt; Websites/perf.webkit.org/ChangeLog:4
&gt; +        Added two helper functions in CommitSet which will be shared between multiple independent incoming changes.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=184368

Don&apos;t add random helper functions like this.
Just add a function to do either.
Each WebKit bug should fix a very specific problem.
r- because of this.

&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:91
&gt; +    withoutRootPatchOrOwnedCommit()

Again, the semantics of this function should be reversed, and this should be called containsRootPatchOrOwnedCommit()
r- because of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412550</commentid>
    <comment_count>3</comment_count>
      <attachid>337412</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2018-04-06 19:38:04 -0700</bug_when>
    <thetext>Created attachment 337412
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412566</commentid>
    <comment_count>4</comment_count>
      <attachid>337412</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-04-06 21:00:15 -0700</bug_when>
    <thetext>Comment on attachment 337412
Patch

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

r=me assuming the following comments are addressed.

&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:149
&gt; +    static createNameWithoutCollision(name, hasDuplicateTestGroupName)

Why don&apos;t we make this function take a set of names instead of a closure
since most of other call sites you&apos;re adding will be using a set.

&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:204
&gt; +                nameParts.push(`${repository.name()}: Patch(${nameForFirstPatch}) - Patch(${nameForSecondPath})`);

We shouldn&apos;t make up a new syntax like Patch(a.patch).
Just say: &quot;WebKit: a.patch - b.patch&quot;
Filenames and revision/git hashes look sufficiently different that the confusion
between the two isn&apos;t really a serious practical concern as far as I can tell.

&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:207
&gt; +                nameParts.push(`${repository.name()}: ${firstCommit.label()} with Patch(${nameForFirstPatch}) - ${secondCommit.label()} with Patch(${nameForSecondPath})`);

Ditto. We shouldn&apos;t be using unnecessarily verbose syntax like Patch(a.patch).
Just say: WebKit: r12345 with a.patch - r12346 with b.patch.

&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:217
&gt; +            const leftRootFileDescription = uniqueInFirstCommitSet.map((rootFile) =&gt; nameGenerator(rootFile.filename())).join(&apos;, &apos;);
&gt; +            const rightRootFileDescription = uniqueInSecondCommitSet.map((rootFile) =&gt; nameGenerator(rootFile.filename())).join(&apos;, &apos;);

These should firstDescription and secondDescription.
Left &amp; right are very LTR centric way of looking at things.

&gt; Websites/perf.webkit.org/public/v3/models/commit-set.js:218
&gt; +            nameParts.push(`Roots: ${leftRootFileDescription.length ? leftRootFileDescription : &apos;none&apos;} - ${rightRootFileDescription.length ? rightRootFileDescription : &apos;none&apos;}`);

&quot;leftRootFileDescription || &apos;none&apos;&quot; would be sufficient here since &apos;&apos; is falsey.

&gt; Websites/perf.webkit.org/unit-tests/commit-set-tests.js:334
&gt; +        });

You need a test case where two repositories&apos; commits differ.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412568</commentid>
    <comment_count>5</comment_count>
      <attachid>337412</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-04-06 21:01:53 -0700</bug_when>
    <thetext>Comment on attachment 337412
Patch

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

&gt; Websites/perf.webkit.org/ChangeLog:3
&gt; +        Added a helper function in CommitSet which will be shared between multiple independent incoming changes.

Please also rename this to say we&apos;re adding CommitSet.diff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413173</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-04-09 21:26:58 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/230441/webkit

Ugh... I asked you to update the bug title to reflect what you&apos;re doing :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413174</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-09 21:27:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/39304875&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337392</attachid>
            <date>2018-04-06 14:55:43 -0700</date>
            <delta_ts>2018-04-06 19:38:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184368-20180406145542.patch</filename>
            <type>text/plain</type>
            <size>12782</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMzU1CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCA0MGMwZTdkZTY0MDg0ZTQwNGMxMjJiN2M3NzFlN2U0OWQzYWExNTE0Li5hODRmNDA1YWI1
YzgwMjQzODcyODM2MTJlMjQ4N2Y5MTFkODgwYzhkIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0wNC0wNiAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGRlZCB0d28gaGVscGVyIGZ1bmN0aW9ucyBpbiBDb21t
aXRTZXQgd2hpY2ggd2lsbCBiZSBzaGFyZWQgYmV0d2VlbiBtdWx0aXBsZSBpbmRlcGVuZGVudCBp
bmNvbWluZyBjaGFuZ2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg0MzY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgYENvbW1pdFNldC5kZXNjcmliZURpZmZlcmVuY2VzQmV0d2VlbkNvbW1pdFNldHNg
IHdpbGwgYmUgdXNlZCBpbiBtdWx0aXBsZSBpbmRlcGVuZGVudCBpbmNvbWluZyBjaGFuZ2VzLgor
ICAgICAgICBJdCB3b3VsZCBiZSBlYXNpZXIgdG8gbWFrZSB0aGlzIGEgc2VwYXJhdGUgY2hhbmdl
IHRvIHBhcmFsbGVsaXplIHRoZSBjaGFuZ2VzIGRlcGVuZHMgb24gdGhpcyBBUEkuCisKKyAgICAg
ICAgKiBwdWJsaWMvdjMvbW9kZWxzL2NvbW1pdC1zZXQuanM6IEFkZGVkIDIgaGVscGVyIGZ1bmN0
aW9ucy4KKyAgICAgICAgKENvbW1pdFNldC53aXRob3V0Um9vdFBhdGNoT3JPd25lZENvbW1pdCk6
IFJldHVybnMgZmFsc2Ugd2hlbiBhIGNvbW1pdCBzZXQgaGFzIHJvb3QsIHBhdGNoIG9yIG93bmVk
IGNvbW1pdC4KKyAgICAgICAgKENvbW1pdFNldC5jcmVhdGVOYW1lV2l0aG91dENvbGxpc2lvbik6
CisgICAgICAgIChDb21taXRTZXQuZGVzY3JpYmVEaWZmZXJlbmNlc0JldHdlZW5Db21taXRTZXRz
KTogRGVzY3JpYmUgZGlmZmVyZW5jZXMgYmV0d2VlbiAyIGNvbW1pdCBzZXRzIGluY2x1ZGluZyBj
b21taXQsIHJvb3QgYW5kIHBhdGNoIGRpZmZlcmVuY2VzLgorICAgICAgICAqIHB1YmxpYy92My9w
YWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanM6IE1vdmUgQW5hbHlzaXNUYXNrUGFnZS5fY3JlYXRl
UmV0cnlOYW1lRm9yVGVzdEdyb3VwIHRvIGhlcmUgaW4gYSBtb3JlIGdlbmVyaWMgZm9ybS4KKyAg
ICAgICAgKEFuYWx5c2lzVGFza1BhZ2UucHJvdG90eXBlLl9yZXRyeUN1cnJlbnRUZXN0R3JvdXAp
OiBVc2UgJ0NvbW1pdFNldC53aXRob3V0Um9vdFBhdGNoT3JPd25lZENvbW1pdCcgaW5zdGVhZC4K
KyAgICAgICAgKEFuYWx5c2lzVGFza1BhZ2UucHJvdG90eXBlLl9jcmVhdGVSZXRyeU5hbWVGb3JU
ZXN0R3JvdXApOiBNb3ZlZCB0byBDb21taXRTZXQgaW4gYSBtb3JlIGdlbmVyaWMgZm9ybS4KKyAg
ICAgICAgKiB1bml0LXRlc3RzL2NvbW1pdC1zZXQtdGVzdHMuanM6IEFkZGVkIHVuaXQgdGVzdHMg
Zm9yIENvbW1pdFNldC5kZXNjcmliZURpZmZlcmVuY2VzQmV0d2VlbkNvbW1pdFNldHMuCisKIDIw
MTgtMDQtMDUgIERld2VpIFpodSAgPGRld2VpX3podUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IGEgYnVnIGludHJvZHVjZWQgaW4gcjIzMDI5NSB0aGF0IEEvQiB0ZXN0IHJlc3VsdCBpcyBub3Qg
c2hvd24uCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21v
ZGVscy9jb21taXQtc2V0LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9t
b2RlbHMvY29tbWl0LXNldC5qcwppbmRleCBlZTVmMzNhMGQ1ZTY1MDc0NjlmYmVmODM4ZjJmYmE0
Yjc1MzYxYzBlLi43MTlhNDc5NWEyNjFkYWE1YTdkMzg3Nzk3ZjQxNjE2ZTM5MTUxM2UyIDEwMDY0
NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9jb21taXQt
c2V0LmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2Nv
bW1pdC1zZXQuanMKQEAgLTg4LDYgKzg4LDIxIEBAIGNsYXNzIENvbW1pdFNldCBleHRlbmRzIERh
dGFNb2RlbE9iamVjdCB7CiAgICAgcGF0Y2hGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpIHsgcmV0
dXJuIHRoaXMuX3JlcG9zaXRvcnlUb1BhdGNoTWFwLmdldChyZXBvc2l0b3J5KTsgfQogICAgIHJv
b3RGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpIHsgcmV0dXJuIHRoaXMuX3JlcG9zaXRvcnlUb1Jv
b3RNYXAuZ2V0KHJlcG9zaXRvcnkpOyB9CiAgICAgcmVxdWlyZXNCdWlsZEZvclJlcG9zaXRvcnko
cmVwb3NpdG9yeSkgeyByZXR1cm4gdGhpcy5fcmVwb3NpdG9yeVJlcXVpcmVzQnVpbGRNYXAuZ2V0
KHJlcG9zaXRvcnkpIHx8IGZhbHNlOyB9CisgICAgd2l0aG91dFJvb3RQYXRjaE9yT3duZWRDb21t
aXQoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuYWxsUm9vdEZpbGVzKCkubGVuZ3RoKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGZvciAoY29uc3QgcmVwb3NpdG9yeSBv
ZiB0aGlzLnJlcG9zaXRvcmllcygpKSB7CisgICAgICAgICAgICBpZiAodGhpcy5vd25lckNvbW1p
dEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgaWYgKHRoaXMub3duZWRSZXBvc2l0b3JpZXNGb3JPd25lclJlcG9zaXRv
cnkocmVwb3NpdG9yeSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgaWYgKHRoaXMucGF0Y2hGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmV0dXJuIGEgRGF0ZSBvYmplY3QuCiAgICAg
bGF0ZXN0Q29tbWl0VGltZSgpCkBAIC0xNDUsNiArMTYwLDgwIEBAIGNsYXNzIENvbW1pdFNldCBl
eHRlbmRzIERhdGFNb2RlbE9iamVjdCB7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KKworICAgIHN0YXRpYyBjcmVhdGVOYW1lV2l0aG91dENvbGxpc2lvbihuYW1lLCBo
YXNEdXBsaWNhdGVUZXN0R3JvdXBOYW1lKQorICAgIHsKKyAgICAgICAgaWYgKCFoYXNEdXBsaWNh
dGVUZXN0R3JvdXBOYW1lKG5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgICAg
IGNvbnN0IG5hbWVXaXRoTnVtYmVyTWF0Y2ggPSBuYW1lLm1hdGNoKC8oLis/KVxzKlwoXHMqKFxk
KylccypcKVxzKiQvKTsKKyAgICAgICAgbGV0IG51bWJlciA9IDE7CisgICAgICAgIGlmIChuYW1l
V2l0aE51bWJlck1hdGNoKSB7CisgICAgICAgICAgICBuYW1lID0gbmFtZVdpdGhOdW1iZXJNYXRj
aFsxXTsKKyAgICAgICAgICAgIG51bWJlciA9IHBhcnNlSW50KG5hbWVXaXRoTnVtYmVyTWF0Y2hb
Ml0pOworICAgICAgICB9CisKKyAgICAgICAgbGV0IG5ld05hbWU7CisgICAgICAgIGRvIHsKKyAg
ICAgICAgICAgIG51bWJlcisrOworICAgICAgICAgICAgbmV3TmFtZSA9IGAke25hbWV9ICgke251
bWJlcn0pYDsKKyAgICAgICAgfSB3aGlsZSAoaGFzRHVwbGljYXRlVGVzdEdyb3VwTmFtZShuZXdO
YW1lKSk7CisKKyAgICAgICAgcmV0dXJuIG5ld05hbWU7CisgICAgfQorCisgICAgc3RhdGljIGRl
c2NyaWJlRGlmZmVyZW5jZXNCZXR3ZWVuQ29tbWl0U2V0cyhmaXJzdENvbW1pdFNldCwgc2Vjb25k
Q29tbWl0U2V0KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIWZpcnN0Q29tbWl0U2V0
LmVxdWFscyhzZWNvbmRDb21taXRTZXQpKTsKKyAgICAgICAgY29uc3QgYWxsUmVwb3NpdG9yaWVz
ID0gbmV3IFNldChbLi4uZmlyc3RDb21taXRTZXQucmVwb3NpdG9yaWVzKCksIC4uLnNlY29uZENv
bW1pdFNldC5yZXBvc2l0b3JpZXMoKV0pOworICAgICAgICBjb25zdCBzb3J0ZWRSZXBvc2l0b3Jp
ZXMgPSBSZXBvc2l0b3J5LnNvcnRCeU5hbWVQcmVmZXJyaW5nT25lc1dpdGhVUkwoWy4uLmFsbFJl
cG9zaXRvcmllc10pOworICAgICAgICBjb25zdCBuYW1lUGFydHMgPSBbXTsKKyAgICAgICAgY29u
c3QgbWlzc2luZ0NvbW1pdCA9IHtsYWJlbDogKCkgPT4gJ21pc3NpbmcnfTsKKyAgICAgICAgY29u
c3QgbWlzc2luZ1BhdGNoID0ge2ZpbGVuYW1lOiAoKSA9PiAnbWlzc2luZyd9OworICAgICAgICBj
b25zdCBtYWtlTmFtZUdlbmVyYXRvciA9ICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGV4aXN0
aW5nTmFtZVNldCA9IG5ldyBTZXQ7CisgICAgICAgICAgICByZXR1cm4gKG5hbWUpID0+IHsKKyAg
ICAgICAgICAgICAgICBjb25zdCBuZXdOYW1lID0gQ29tbWl0U2V0LmNyZWF0ZU5hbWVXaXRob3V0
Q29sbGlzaW9uKG5hbWUsIChuYW1lKSA9PiBleGlzdGluZ05hbWVTZXQuaGFzKG5hbWUpKTsKKyAg
ICAgICAgICAgICAgICBleGlzdGluZ05hbWVTZXQuYWRkKG5ld05hbWUpOworICAgICAgICAgICAg
ICAgIHJldHVybiBuZXdOYW1lOworICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAg
IGZvciAoY29uc3QgcmVwb3NpdG9yeSBvZiBzb3J0ZWRSZXBvc2l0b3JpZXMpIHsKKyAgICAgICAg
ICAgIGNvbnN0IGZpcnN0Q29tbWl0ID0gZmlyc3RDb21taXRTZXQuY29tbWl0Rm9yUmVwb3NpdG9y
eShyZXBvc2l0b3J5KSB8fCBtaXNzaW5nQ29tbWl0OworICAgICAgICAgICAgY29uc3Qgc2Vjb25k
Q29tbWl0ID0gc2Vjb25kQ29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkg
fHwgbWlzc2luZ0NvbW1pdDsKKyAgICAgICAgICAgIGNvbnN0IGZpcnN0UGF0Y2ggPSBmaXJzdENv
bW1pdFNldC5wYXRjaEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkgfHwgbWlzc2luZ1BhdGNoOwor
ICAgICAgICAgICAgY29uc3Qgc2Vjb25kUGF0Y2ggPSBzZWNvbmRDb21taXRTZXQucGF0Y2hGb3JS
ZXBvc2l0b3J5KHJlcG9zaXRvcnkpIHx8IG1pc3NpbmdQYXRjaDsKKyAgICAgICAgICAgIGNvbnN0
IG5hbWVHZW5lcmF0b3IgPSBtYWtlTmFtZUdlbmVyYXRvcigpOworCisgICAgICAgICAgICBpZiAo
Zmlyc3RDb21taXQgPT0gc2Vjb25kQ29tbWl0ICYmIGZpcnN0UGF0Y2ggPT0gc2Vjb25kUGF0Y2gp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmIChmaXJzdENvbW1p
dCAhPSBzZWNvbmRDb21taXQgJiYgZmlyc3RQYXRjaCA9PSBzZWNvbmRQYXRjaCkKKyAgICAgICAg
ICAgICAgICBuYW1lUGFydHMucHVzaChgJHtyZXBvc2l0b3J5Lm5hbWUoKX06ICR7c2Vjb25kQ29t
bWl0LmRpZmYoZmlyc3RDb21taXQpLmxhYmVsfWApOworCisgICAgICAgICAgICBjb25zdCBuYW1l
Rm9yRmlyc3RQYXRjaCA9IG5hbWVHZW5lcmF0b3IoZmlyc3RQYXRjaC5maWxlbmFtZSgpKTsKKyAg
ICAgICAgICAgIGNvbnN0IG5hbWVGb3JTZWNvbmRQYXRoID0gbmFtZUdlbmVyYXRvcihzZWNvbmRQ
YXRjaC5maWxlbmFtZSgpKTsKKworICAgICAgICAgICAgaWYgKGZpcnN0Q29tbWl0ID09IHNlY29u
ZENvbW1pdCAmJiBmaXJzdFBhdGNoICE9IHNlY29uZFBhdGNoKQorICAgICAgICAgICAgICAgIG5h
bWVQYXJ0cy5wdXNoKGAke3JlcG9zaXRvcnkubmFtZSgpfTogUGF0Y2goJHtuYW1lRm9yRmlyc3RQ
YXRjaH0pIC0gUGF0Y2goJHtuYW1lRm9yU2Vjb25kUGF0aH0pYCk7CisKKyAgICAgICAgICAgIGlm
IChmaXJzdENvbW1pdCAhPSBzZWNvbmRDb21taXQgJiYgZmlyc3RQYXRjaCAhPSBzZWNvbmRQYXRj
aCkKKyAgICAgICAgICAgICAgICBuYW1lUGFydHMucHVzaChgJHtyZXBvc2l0b3J5Lm5hbWUoKX06
ICR7Zmlyc3RDb21taXQubGFiZWwoKX0gd2l0aCBQYXRjaCgke25hbWVGb3JGaXJzdFBhdGNofSkg
LSAke3NlY29uZENvbW1pdC5sYWJlbCgpfSB3aXRoIFBhdGNoKCR7bmFtZUZvclNlY29uZFBhdGh9
KWApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZpcnN0Q29tbWl0U2V0LmFsbFJvb3RGaWxl
cygpLmxlbmd0aCB8fCBzZWNvbmRDb21taXRTZXQuYWxsUm9vdEZpbGVzKCkubGVuZ3RoKSB7Cisg
ICAgICAgICAgICBjb25zdCBmaXJzdFJvb3RGaWxlU2V0ID0gbmV3IFNldChmaXJzdENvbW1pdFNl
dC5hbGxSb290RmlsZXMoKSk7CisgICAgICAgICAgICBjb25zdCBzZWNvbmRSb290RmlsZVNldCA9
IG5ldyBTZXQoc2Vjb25kQ29tbWl0U2V0LmFsbFJvb3RGaWxlcygpKTsKKyAgICAgICAgICAgIGNv
bnN0IHVuaXF1ZUluRmlyc3RDb21taXRTZXQgPSBmaXJzdENvbW1pdFNldC5hbGxSb290RmlsZXMo
KS5maWx0ZXIoKHJvb3RGaWxlKSA9PiAhc2Vjb25kUm9vdEZpbGVTZXQuaGFzKHJvb3RGaWxlKSk7
CisgICAgICAgICAgICBjb25zdCB1bmlxdWVJblNlY29uZENvbW1pdFNldCA9IHNlY29uZENvbW1p
dFNldC5hbGxSb290RmlsZXMoKS5maWx0ZXIoKHJvb3RGaWxlKSA9PiAhZmlyc3RSb290RmlsZVNl
dC5oYXMocm9vdEZpbGUpKTsKKyAgICAgICAgICAgIGNvbnN0IG5hbWVHZW5lcmF0b3IgPSBtYWtl
TmFtZUdlbmVyYXRvcigpOworICAgICAgICAgICAgY29uc3QgbGVmdFJvb3RGaWxlRGVzY3JpcHRp
b24gPSB1bmlxdWVJbkZpcnN0Q29tbWl0U2V0Lm1hcCgocm9vdEZpbGUpID0+IG5hbWVHZW5lcmF0
b3Iocm9vdEZpbGUuZmlsZW5hbWUoKSkpLmpvaW4oJywgJyk7CisgICAgICAgICAgICBjb25zdCBy
aWdodFJvb3RGaWxlRGVzY3JpcHRpb24gPSB1bmlxdWVJblNlY29uZENvbW1pdFNldC5tYXAoKHJv
b3RGaWxlKSA9PiBuYW1lR2VuZXJhdG9yKHJvb3RGaWxlLmZpbGVuYW1lKCkpKS5qb2luKCcsICcp
OworICAgICAgICAgICAgbmFtZVBhcnRzLnB1c2goYFJvb3RzOiAke2xlZnRSb290RmlsZURlc2Ny
aXB0aW9uLmxlbmd0aCA/IGxlZnRSb290RmlsZURlc2NyaXB0aW9uIDogJ21pc3NpbmcnfSAtICR7
cmlnaHRSb290RmlsZURlc2NyaXB0aW9uLmxlbmd0aCA/IHJpZ2h0Um9vdEZpbGVEZXNjcmlwdGlv
biA6ICdtaXNzaW5nJ31gKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBuYW1lUGFydHMu
am9pbignICcpOworICAgIH0KIH0KIAogY2xhc3MgTWVhc3VyZW1lbnRDb21taXRTZXQgZXh0ZW5k
cyBDb21taXRTZXQgewpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL3BhZ2VzL2FuYWx5c2lzLXRhc2stcGFnZS5qcwppbmRleCA2MzM3MTI3NWZh
MGRkZDcyYzNhODAyMTgwZWFiMmZiM2NmZjM1M2Y1Li40MzRkNzFjOThkODk1YTg3NzAzYzc5MDky
NTZjNzNmZGRmODhhZDI3IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL3YzL3BhZ2VzL2FuYWx5c2lzLXRhc2stcGFnZS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2FuYWx5c2lzLXRhc2stcGFnZS5qcwpAQCAtNzg1LDcg
Kzc4NSw3IEBAIGNsYXNzIEFuYWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcg
ewogCiAgICAgX3JldHJ5Q3VycmVudFRlc3RHcm91cCh0ZXN0R3JvdXAsIHJlcGV0aXRpb25Db3Vu
dCkKICAgICB7Ci0gICAgICAgIGNvbnN0IG5ld05hbWUgPSB0aGlzLl9jcmVhdGVSZXRyeU5hbWVG
b3JUZXN0R3JvdXAodGVzdEdyb3VwLm5hbWUoKSk7CisgICAgICAgIGNvbnN0IG5ld05hbWUgPSBD
b21taXRTZXQuY3JlYXRlTmFtZVdpdGhvdXRDb2xsaXNpb24odGVzdEdyb3VwLm5hbWUoKSwgdGhp
cy5faGFzRHVwbGljYXRlVGVzdEdyb3VwTmFtZS5iaW5kKHRoaXMpKTsKICAgICAgICAgY29uc3Qg
Y29tbWl0U2V0TGlzdCA9IHRlc3RHcm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCk7CiAgICAgICAg
IGNvbnN0IHBsYXRmb3JtID0gdGhpcy5fdGFzay5wbGF0Zm9ybSgpIHx8IHRlc3RHcm91cC5wbGF0
Zm9ybSgpOwogICAgICAgICByZXR1cm4gVGVzdEdyb3VwLmNyZWF0ZVdpdGhDdXN0b21Db25maWd1
cmF0aW9uKHRoaXMuX3Rhc2ssIHBsYXRmb3JtLCB0ZXN0R3JvdXAudGVzdCgpLCBuZXdOYW1lLCBy
ZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldExpc3QpCkBAIC04NDEsMjQgKzg0MSw2IEBAIGNsYXNz
IEFuYWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAgICB9KTsK
ICAgICB9CiAKLSAgICBfY3JlYXRlUmV0cnlOYW1lRm9yVGVzdEdyb3VwKG5hbWUpCi0gICAgewot
ICAgICAgICB2YXIgbmFtZVdpdGhOdW1iZXJNYXRjaCA9IG5hbWUubWF0Y2goLyguKz8pXHMqXChc
cyooXGQrKVxzKlwpXHMqJC8pOwotICAgICAgICB2YXIgbnVtYmVyID0gMTsKLSAgICAgICAgaWYg
KG5hbWVXaXRoTnVtYmVyTWF0Y2gpIHsKLSAgICAgICAgICAgIG5hbWUgPSBuYW1lV2l0aE51bWJl
ck1hdGNoWzFdOwotICAgICAgICAgICAgbnVtYmVyID0gcGFyc2VJbnQobmFtZVdpdGhOdW1iZXJN
YXRjaFsyXSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgbmV3TmFtZTsKLSAgICAgICAgZG8g
ewotICAgICAgICAgICAgbnVtYmVyKys7Ci0gICAgICAgICAgICBuZXdOYW1lID0gYCR7bmFtZX0g
KCR7bnVtYmVyfSlgOwotICAgICAgICB9IHdoaWxlICh0aGlzLl9oYXNEdXBsaWNhdGVUZXN0R3Jv
dXBOYW1lKG5ld05hbWUpKTsKLQotICAgICAgICByZXR1cm4gbmV3TmFtZTsKLSAgICB9Ci0KICAg
ICBfaGFzRHVwbGljYXRlVGVzdEdyb3VwTmFtZShuYW1lKQogICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQodGhpcy5fdGVzdEdyb3Vwcyk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvdW5pdC10ZXN0cy9jb21taXQtc2V0LXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3VuaXQtdGVzdHMvY29tbWl0LXNldC10ZXN0cy5qcwppbmRleCAxMTFjNmE2NTQ4
ZjUxODkyZGUxZDI3ZmYxMzMxNTNhZGNhNjZlMTA1Li4xMGUxZTY4NWRjMDk3YjM1YzYxNzJjNzRm
NzA0MDJlNWExODVhN2I3IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5p
dC10ZXN0cy9jb21taXQtc2V0LXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy91bml0LXRlc3RzL2NvbW1pdC1zZXQtdGVzdHMuanMKQEAgLTI5LDYgKzI5LDEyIEBAIGZ1bmN0
aW9uIGNyZWF0ZUFub3RoZXJSb290KCkKICAgICAgICAgc2l6ZTogMTY0NTIxMTEsIHNoYTI1Njog
JzAzZWVkN2E4NDk0YWI4Nzk0YzQ0YjdkNDMwOGU1NTQ0OGZjNTZmNGQ2YzE3NTgwOWJhOTY4Zjc4
ZjY1NmRiYmInfSk7CiB9CiAKK2Z1bmN0aW9uIGNyZWF0ZVNoYXJlZFJvb3QoKQoreworICAgIHJl
dHVybiBVcGxvYWRlZEZpbGUuZW5zdXJlU2luZ2xldG9uKDQ1OCwgeydjcmVhdGVkQXQnOiBuZXcg
RGF0ZSgnMjAxNy0wNS0wMVQyMjowMzoyN1onKSwgJ2ZpbGVuYW1lJzogJ3Jvb3QuZGF0JywgJ2V4
dGVuc2lvbic6ICcuZGF0JywgJ2F1dGhvcic6ICdzb21lIHVzZXInLAorICAgICAgICBzaXplOiAx
NjQ1MjExMSwgc2hhMjU2OiAnMDNlZWQ3YTg0OTRhYjg3OTRjNDRiN2Q0MzA4ZTU1NDQ4ZmM1NmY0
YWFjMTc1ODA5YmE5NjhmNzhmNjU2ZGJiYid9KTsKK30KKwogZnVuY3Rpb24gY3VzdG9tQ29tbWl0
U2V0V2l0aG91dE93bmVkQ29tbWl0KCkKIHsKICAgICBjb25zdCBjdXN0b21Db21taXRTZXQgPSBu
ZXcgQ3VzdG9tQ29tbWl0U2V0OwpAQCAtMTA0LDYgKzExMCwxNiBAQCBmdW5jdGlvbiB3ZWJraXRD
b21taXQoKQogICAgIH0pOwogfQogCitmdW5jdGlvbiBhbm90aGVyV2ViS2l0Q29tbWl0KCkKK3sK
KyAgICByZXR1cm4gQ29tbWl0TG9nLmVuc3VyZVNpbmdsZXRvbigyMDE4LCB7CisgICAgICAgIHJl
cG9zaXRvcnk6IE1vY2tNb2RlbHMud2Via2l0LAorICAgICAgICByZXZpc2lvbjogJ3dlYmtpdC1j
b21taXQtMScsCisgICAgICAgIG93bnNDb21taXRzOiBmYWxzZSwKKyAgICAgICAgdGltZTogMTQ1
NjkzMjc3MzAwMAorICAgIH0pOworfQorCiBkZXNjcmliZSgnQ29tbWl0U2V0JywgKCkgPT4gewog
ICAgIE1vY2tSZW1vdGVBUEkuaW5qZWN0KCk7CiAgICAgTW9ja01vZGVscy5pbmplY3QoKTsKQEAg
LTE1Niw2ICsxNzIsMzEgQEAgZGVzY3JpYmUoJ0NvbW1pdFNldCcsICgpID0+IHsKICAgICAgICAg
fSk7CiAgICAgfQogCisgICAgZnVuY3Rpb24gY29tbWl0U2V0V2l0aFR3b1Jvb3RzKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBDb21taXRTZXQuZW5zdXJlU2luZ2xldG9uKDcsIHsKKyAgICAgICAg
ICAgIHJldmlzaW9uSXRlbXM6IFt7IGNvbW1pdDogd2Via2l0Q29tbWl0KCksIHJlcXVpcmVzQnVp
bGQ6IGZhbHNlIH1dLAorICAgICAgICAgICAgY3VzdG9tUm9vdHM6IFtjcmVhdGVSb290KCksIGNy
ZWF0ZVNoYXJlZFJvb3QoKV0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY29t
bWl0U2V0V2l0aEFub3RoZXJXZWJLaXRDb21taXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIENv
bW1pdFNldC5lbnN1cmVTaW5nbGV0b24oOCwgeworICAgICAgICAgICAgcmV2aXNpb25JdGVtczog
W3sgY29tbWl0OiBhbm90aGVyV2ViS2l0Q29tbWl0KCksIHJlcXVpcmVzQnVpbGQ6IGZhbHNlIH1d
LAorICAgICAgICAgICAgY3VzdG9tUm9vdHM6IFtdCisgICAgICAgIH0pOworICAgIH0KKworICAg
IGZ1bmN0aW9uIGNvbW1pdFNldFdpdGhBbm90aGVyQ29tbWl0UGF0Y2hBbmRSb290KCkKKyAgICB7
CisgICAgICAgIHJldHVybiBDb21taXRTZXQuZW5zdXJlU2luZ2xldG9uKDksIHsKKyAgICAgICAg
ICAgIHJldmlzaW9uSXRlbXM6IFt7IGNvbW1pdDogYW5vdGhlcldlYktpdENvbW1pdCgpLCByZXF1
aXJlc0J1aWxkOiB0cnVlLCBwYXRjaDogY3JlYXRlUGF0Y2goKX1dLAorICAgICAgICAgICAgY3Vz
dG9tUm9vdHM6IFtjcmVhdGVSb290KCksIGNyZWF0ZVNoYXJlZFJvb3QoKV0KKyAgICAgICAgfSk7
CisgICAgfQorCisKICAgICBmdW5jdGlvbiBvbmVNZWFzdXJlbWVudENvbW1pdFNldCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gTWVhc3VyZW1lbnRDb21taXRTZXQuZW5zdXJlU2luZ2xldG9uKDEs
IFsKQEAgLTE5OCw3ICsyMzksMjcgQEAgZGVzY3JpYmUoJ0NvbW1pdFNldCcsICgpID0+IHsKICAg
ICAgICAgICAgIGFzc2VydChvbmVDb21taXRTZXQoKS5lcXVhbHMob25lTWVhc3VyZW1lbnRDb21t
aXRTZXQoKSkpOwogICAgICAgICAgICAgYXNzZXJ0KG9uZU1lYXN1cmVtZW50Q29tbWl0U2V0KCku
ZXF1YWxzKG9uZUNvbW1pdFNldCgpKSk7CiAgICAgICAgIH0pOwotICAgIH0pCisgICAgfSk7CisK
KyAgICBkZXNjcmliZSgnZGVzY3JpYmVEaWZmZXJlbmNlc0JldHdlZW5Db21taXRTZXRzJywgICgp
ID0+IHsKKyAgICAgICAgaXQoJ3Nob3VsZCBkZXNjcmliZSBwYXRjaCBkaWZmZXJlbmNlJywgKCkg
PT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKENvbW1pdFNldC5kZXNjcmliZURpZmZlcmVu
Y2VzQmV0d2VlbkNvbW1pdFNldHMoY29tbWl0U2V0V2l0aFBhdGNoKCksIGNvbW1pdFNldFdpdGhB
bm90aGVyUGF0Y2goKSksICdXZWJLaXQ6IFBhdGNoKHBhdGNoLmRhdCkgLSBQYXRjaChwYXRjaC5k
YXQgKDIpKScpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2hvdWxkIGRlc2NyaWJlIHJv
b3QgZGlmZmVyZW5jZScsICgpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChDb21taXRT
ZXQuZGVzY3JpYmVEaWZmZXJlbmNlc0JldHdlZW5Db21taXRTZXRzKGNvbW1pdFNldFdpdGhSb290
KCksIGFub3RoZXJDb21taXRTZXRXaXRoUm9vdCgpKSwgJ1Jvb3RzOiByb290LmRhdCAtIHJvb3Qu
ZGF0ICgyKScpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKENvbW1pdFNldC5kZXNjcmliZURp
ZmZlcmVuY2VzQmV0d2VlbkNvbW1pdFNldHMoY29tbWl0U2V0V2l0aFJvb3QoKSwgY29tbWl0U2V0
V2l0aFR3b1Jvb3RzKCkpLCAnUm9vdHM6IG1pc3NpbmcgLSByb290LmRhdCcpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKENvbW1pdFNldC5kZXNjcmliZURpZmZlcmVuY2VzQmV0d2VlbkNvbW1p
dFNldHMoY29tbWl0U2V0V2l0aFR3b1Jvb3RzKCksIG9uZUNvbW1pdFNldCgpKSwgJ1Jvb3RzOiBy
b290LmRhdCwgcm9vdC5kYXQgKDIpIC0gbWlzc2luZycpOworICAgICAgICB9KTsKKworICAgICAg
ICBpdCgnc2hvdWxkIGRlc2NyaWJlIGNvbW1pdCBkaWZmZXJlbmNlJywgKCkgPT4geworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKENvbW1pdFNldC5kZXNjcmliZURpZmZlcmVuY2VzQmV0d2VlbkNv
bW1pdFNldHMob25lQ29tbWl0U2V0KCksIGNvbW1pdFNldFdpdGhBbm90aGVyV2ViS2l0Q29tbWl0
KCkpLCAnV2ViS2l0OiB3ZWJraXQtY29tbWl0LTAgLSB3ZWJraXQtY29tbWl0LTEnKTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBkZXNjcmliZSBjb21taXQgcm9vdCBhbmQgcGF0
Y2ggZGlmZmVyZW5jZScsICgpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChDb21taXRT
ZXQuZGVzY3JpYmVEaWZmZXJlbmNlc0JldHdlZW5Db21taXRTZXRzKG9uZUNvbW1pdFNldCgpLCBj
b21taXRTZXRXaXRoQW5vdGhlckNvbW1pdFBhdGNoQW5kUm9vdCgpKSwgJ1dlYktpdDogd2Via2l0
LWNvbW1pdC0wIHdpdGggUGF0Y2gobWlzc2luZykgLSB3ZWJraXQtY29tbWl0LTEgd2l0aCBQYXRj
aChwYXRjaC5kYXQpIFJvb3RzOiBtaXNzaW5nIC0gcm9vdC5kYXQsIHJvb3QuZGF0ICgyKScpOwor
ICAgICAgICB9KTsKKyAgICB9KTsKIH0pOwogCiBkZXNjcmliZSgnSW50ZXJtZWRpYXRlQ29tbWl0
U2V0JywgKCkgPT4gewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337412</attachid>
            <date>2018-04-06 19:38:04 -0700</date>
            <delta_ts>2018-04-06 21:00:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184368-20180406193803.patch</filename>
            <type>text/plain</type>
            <size>13713</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMzU1CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCA0MGMwZTdkZTY0MDg0ZTQwNGMxMjJiN2M3NzFlN2U0OWQzYWExNTE0Li41OTFmZjMwZTQ2
NDg3ZTY2NzZlNTczMzBlMWVkZjI5NzljOTY1OTgwIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxOC0wNC0wNiAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGRlZCBhIGhlbHBlciBmdW5jdGlvbiBpbiBDb21taXRT
ZXQgd2hpY2ggd2lsbCBiZSBzaGFyZWQgYmV0d2VlbiBtdWx0aXBsZSBpbmRlcGVuZGVudCBpbmNv
bWluZyBjaGFuZ2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg0MzY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgJ0NvbW1pdFNldC5kaWZmJyB3aWxsIGJlIHVzZWQgaW4gbXVsdGlwbGUgaW5kZXBlbmRl
bnQgaW5jb21pbmcgY2hhbmdlcy4KKyAgICAgICAgSXQgd291bGQgYmUgZWFzaWVyIHRvIG1ha2Ug
dGhpcyBhIHNlcGFyYXRlIGNoYW5nZSB0byBwYXJhbGxlbGl6ZSB0aGUgY2hhbmdlcyBkZXBlbmRz
IG9uIHRoaXMgQVBJLgorCisgICAgICAgICogcHVibGljL3YzL21vZGVscy9jb21taXQtc2V0Lmpz
OgorICAgICAgICAoQ29tbWl0U2V0LnByb3RvdHlwZS5jcmVhdGVOYW1lV2l0aG91dENvbGxpc2lv
bik6IE1vdmVkIGZyb20gJ0FuYWx5c2lzVGFza1BhZ2UnIGFuZCBtYWtlIGl0IG1vcmUgZ2VuZXJp
Yy4KKyAgICAgICAgKENvbW1pdFNldC5wcm90b3R5cGUuZGlmZik6IERlc2NyaWJlIGRpZmZlcmVu
Y2VzIGJldHdlZW4gMiBjb21taXQgc2V0cyBpbmNsdWRpbmcgY29tbWl0LCByb290IGFuZCBwYXRj
aCBkaWZmZXJlbmNlcy4KKyAgICAgICAgKiBwdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMtdGFzay1w
YWdlLmpzOiBNb3ZlICdBbmFseXNpc1Rhc2tQYWdlLl9jcmVhdGVSZXRyeU5hbWVGb3JUZXN0R3Jv
dXAnIHRvIENvbW1pdFNldCBpbiBhIG1vcmUgZ2VuZXJpYyBmb3JtLgorICAgICAgICAoQW5hbHlz
aXNUYXNrUGFnZS5wcm90b3R5cGUuX3JldHJ5Q3VycmVudFRlc3RHcm91cCk6IFVzZSAnQ29tbWl0
U2V0LndpdGhvdXRSb290UGF0Y2hPck93bmVkQ29tbWl0JyBpbnN0ZWFkLgorICAgICAgICAoQW5h
bHlzaXNUYXNrUGFnZS5wcm90b3R5cGUuX2NyZWF0ZVJldHJ5TmFtZUZvclRlc3RHcm91cCk6IE1v
dmVkIHRvIENvbW1pdFNldCBpbiBhIG1vcmUgZ2VuZXJpYyBmb3JtLgorICAgICAgICAqIHVuaXQt
dGVzdHMvY29tbWl0LXNldC10ZXN0cy5qczogQWRkZWQgdW5pdCB0ZXN0cyBmb3IgJ0NvbW1pdFNl
dC5kaWZmJy4KKwogMjAxOC0wNC0wNSAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1QGFwcGxlLmNvbT4K
IAogICAgICAgICBGaXggYSBidWcgaW50cm9kdWNlZCBpbiByMjMwMjk1IHRoYXQgQS9CIHRlc3Qg
cmVzdWx0IGlzIG5vdCBzaG93bi4KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvbW9kZWxzL2NvbW1pdC1zZXQuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL21vZGVscy9jb21taXQtc2V0LmpzCmluZGV4IGVlNWYzM2EwZDVlNjUwNzQ2
OWZiZWY4MzhmMmZiYTRiNzUzNjFjMGUuLmVkN2UzZmM2ZmM5YWE1MTk0ODdlZmMyY2EzYWE4Y2Nk
OGFjNTkwZTYgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMv
bW9kZWxzL2NvbW1pdC1zZXQuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9tb2RlbHMvY29tbWl0LXNldC5qcwpAQCAtMTQ1LDYgKzE0NSw4MSBAQCBjbGFzcyBDb21t
aXRTZXQgZXh0ZW5kcyBEYXRhTW9kZWxPYmplY3QgewogICAgICAgICB9CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CisKKyAgICBzdGF0aWMgY3JlYXRlTmFtZVdpdGhvdXRDb2xsaXNpb24o
bmFtZSwgaGFzRHVwbGljYXRlVGVzdEdyb3VwTmFtZSkKKyAgICB7CisgICAgICAgIGlmICghaGFz
RHVwbGljYXRlVGVzdEdyb3VwTmFtZShuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBuYW1lOwor
ICAgICAgICBjb25zdCBuYW1lV2l0aE51bWJlck1hdGNoID0gbmFtZS5tYXRjaCgvKC4rPylccypc
KFxzKihcZCspXHMqXClccyokLyk7CisgICAgICAgIGxldCBudW1iZXIgPSAxOworICAgICAgICBp
ZiAobmFtZVdpdGhOdW1iZXJNYXRjaCkgeworICAgICAgICAgICAgbmFtZSA9IG5hbWVXaXRoTnVt
YmVyTWF0Y2hbMV07CisgICAgICAgICAgICBudW1iZXIgPSBwYXJzZUludChuYW1lV2l0aE51bWJl
ck1hdGNoWzJdKTsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBuZXdOYW1lOworICAgICAgICBk
byB7CisgICAgICAgICAgICBudW1iZXIrKzsKKyAgICAgICAgICAgIG5ld05hbWUgPSBgJHtuYW1l
fSAoJHtudW1iZXJ9KWA7CisgICAgICAgIH0gd2hpbGUgKGhhc0R1cGxpY2F0ZVRlc3RHcm91cE5h
bWUobmV3TmFtZSkpOworCisgICAgICAgIHJldHVybiBuZXdOYW1lOworICAgIH0KKworICAgIHN0
YXRpYyBkaWZmKGZpcnN0Q29tbWl0U2V0LCBzZWNvbmRDb21taXRTZXQpCisgICAgeworICAgICAg
ICBjb25zb2xlLmFzc2VydCghZmlyc3RDb21taXRTZXQuZXF1YWxzKHNlY29uZENvbW1pdFNldCkp
OworICAgICAgICBjb25zdCBhbGxSZXBvc2l0b3JpZXMgPSBuZXcgU2V0KFsuLi5maXJzdENvbW1p
dFNldC5yZXBvc2l0b3JpZXMoKSwgLi4uc2Vjb25kQ29tbWl0U2V0LnJlcG9zaXRvcmllcygpXSk7
CisgICAgICAgIGNvbnN0IHNvcnRlZFJlcG9zaXRvcmllcyA9IFJlcG9zaXRvcnkuc29ydEJ5TmFt
ZVByZWZlcnJpbmdPbmVzV2l0aFVSTChbLi4uYWxsUmVwb3NpdG9yaWVzXSk7CisgICAgICAgIGNv
bnN0IG5hbWVQYXJ0cyA9IFtdOworICAgICAgICBjb25zdCBtaXNzaW5nQ29tbWl0ID0ge2xhYmVs
OiAoKSA9PiAnbm9uZSd9OworICAgICAgICBjb25zdCBtaXNzaW5nUGF0Y2ggPSB7ZmlsZW5hbWU6
ICgpID0+ICdub25lJ307CisgICAgICAgIGNvbnN0IG1ha2VOYW1lR2VuZXJhdG9yID0gKCkgPT4g
eworICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdOYW1lU2V0ID0gbmV3IFNldDsKKyAgICAgICAg
ICAgIHJldHVybiAobmFtZSkgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IG5ld05hbWUgPSBD
b21taXRTZXQuY3JlYXRlTmFtZVdpdGhvdXRDb2xsaXNpb24obmFtZSwgKG5hbWUpID0+IGV4aXN0
aW5nTmFtZVNldC5oYXMobmFtZSkpOworICAgICAgICAgICAgICAgIGV4aXN0aW5nTmFtZVNldC5h
ZGQobmV3TmFtZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ld05hbWU7CisgICAgICAgICAg
ICB9CisgICAgICAgIH07CisKKyAgICAgICAgZm9yIChjb25zdCByZXBvc2l0b3J5IG9mIHNvcnRl
ZFJlcG9zaXRvcmllcykgeworICAgICAgICAgICAgY29uc3QgZmlyc3RDb21taXQgPSBmaXJzdENv
bW1pdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpIHx8IG1pc3NpbmdDb21taXQ7
CisgICAgICAgICAgICBjb25zdCBzZWNvbmRDb21taXQgPSBzZWNvbmRDb21taXRTZXQuY29tbWl0
Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSB8fCBtaXNzaW5nQ29tbWl0OworICAgICAgICAgICAg
Y29uc3QgZmlyc3RQYXRjaCA9IGZpcnN0Q29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeShyZXBv
c2l0b3J5KSB8fCBtaXNzaW5nUGF0Y2g7CisgICAgICAgICAgICBjb25zdCBzZWNvbmRQYXRjaCA9
IHNlY29uZENvbW1pdFNldC5wYXRjaEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkgfHwgbWlzc2lu
Z1BhdGNoOworICAgICAgICAgICAgY29uc3QgbmFtZUdlbmVyYXRvciA9IG1ha2VOYW1lR2VuZXJh
dG9yKCk7CisKKyAgICAgICAgICAgIGlmIChmaXJzdENvbW1pdCA9PSBzZWNvbmRDb21taXQgJiYg
Zmlyc3RQYXRjaCA9PSBzZWNvbmRQYXRjaCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAgICAgaWYgKGZpcnN0Q29tbWl0ICE9IHNlY29uZENvbW1pdCAmJiBmaXJzdFBhdGNo
ID09IHNlY29uZFBhdGNoKQorICAgICAgICAgICAgICAgIG5hbWVQYXJ0cy5wdXNoKGAke3JlcG9z
aXRvcnkubmFtZSgpfTogJHtzZWNvbmRDb21taXQuZGlmZihmaXJzdENvbW1pdCkubGFiZWx9YCk7
CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNlIGlmIHdlIGNhbiBhYmJy
ZXZpYXRlIHRoZSBuYW1lIHdoZW4gaXQncyB0b28gbG9uZy4KKyAgICAgICAgICAgIGNvbnN0IG5h
bWVGb3JGaXJzdFBhdGNoID0gbmFtZUdlbmVyYXRvcihmaXJzdFBhdGNoLmZpbGVuYW1lKCkpOwor
ICAgICAgICAgICAgY29uc3QgbmFtZUZvclNlY29uZFBhdGggPSBuYW1lR2VuZXJhdG9yKHNlY29u
ZFBhdGNoLmZpbGVuYW1lKCkpOworCisgICAgICAgICAgICBpZiAoZmlyc3RDb21taXQgPT0gc2Vj
b25kQ29tbWl0ICYmIGZpcnN0UGF0Y2ggIT0gc2Vjb25kUGF0Y2gpCisgICAgICAgICAgICAgICAg
bmFtZVBhcnRzLnB1c2goYCR7cmVwb3NpdG9yeS5uYW1lKCl9OiBQYXRjaCgke25hbWVGb3JGaXJz
dFBhdGNofSkgLSBQYXRjaCgke25hbWVGb3JTZWNvbmRQYXRofSlgKTsKKworICAgICAgICAgICAg
aWYgKGZpcnN0Q29tbWl0ICE9IHNlY29uZENvbW1pdCAmJiBmaXJzdFBhdGNoICE9IHNlY29uZFBh
dGNoKQorICAgICAgICAgICAgICAgIG5hbWVQYXJ0cy5wdXNoKGAke3JlcG9zaXRvcnkubmFtZSgp
fTogJHtmaXJzdENvbW1pdC5sYWJlbCgpfSB3aXRoIFBhdGNoKCR7bmFtZUZvckZpcnN0UGF0Y2h9
KSAtICR7c2Vjb25kQ29tbWl0LmxhYmVsKCl9IHdpdGggUGF0Y2goJHtuYW1lRm9yU2Vjb25kUGF0
aH0pYCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZmlyc3RDb21taXRTZXQuYWxsUm9vdEZp
bGVzKCkubGVuZ3RoIHx8IHNlY29uZENvbW1pdFNldC5hbGxSb290RmlsZXMoKS5sZW5ndGgpIHsK
KyAgICAgICAgICAgIGNvbnN0IGZpcnN0Um9vdEZpbGVTZXQgPSBuZXcgU2V0KGZpcnN0Q29tbWl0
U2V0LmFsbFJvb3RGaWxlcygpKTsKKyAgICAgICAgICAgIGNvbnN0IHNlY29uZFJvb3RGaWxlU2V0
ID0gbmV3IFNldChzZWNvbmRDb21taXRTZXQuYWxsUm9vdEZpbGVzKCkpOworICAgICAgICAgICAg
Y29uc3QgdW5pcXVlSW5GaXJzdENvbW1pdFNldCA9IGZpcnN0Q29tbWl0U2V0LmFsbFJvb3RGaWxl
cygpLmZpbHRlcigocm9vdEZpbGUpID0+ICFzZWNvbmRSb290RmlsZVNldC5oYXMocm9vdEZpbGUp
KTsKKyAgICAgICAgICAgIGNvbnN0IHVuaXF1ZUluU2Vjb25kQ29tbWl0U2V0ID0gc2Vjb25kQ29t
bWl0U2V0LmFsbFJvb3RGaWxlcygpLmZpbHRlcigocm9vdEZpbGUpID0+ICFmaXJzdFJvb3RGaWxl
U2V0Lmhhcyhyb290RmlsZSkpOworICAgICAgICAgICAgY29uc3QgbmFtZUdlbmVyYXRvciA9IG1h
a2VOYW1lR2VuZXJhdG9yKCk7CisgICAgICAgICAgICBjb25zdCBsZWZ0Um9vdEZpbGVEZXNjcmlw
dGlvbiA9IHVuaXF1ZUluRmlyc3RDb21taXRTZXQubWFwKChyb290RmlsZSkgPT4gbmFtZUdlbmVy
YXRvcihyb290RmlsZS5maWxlbmFtZSgpKSkuam9pbignLCAnKTsKKyAgICAgICAgICAgIGNvbnN0
IHJpZ2h0Um9vdEZpbGVEZXNjcmlwdGlvbiA9IHVuaXF1ZUluU2Vjb25kQ29tbWl0U2V0Lm1hcCgo
cm9vdEZpbGUpID0+IG5hbWVHZW5lcmF0b3Iocm9vdEZpbGUuZmlsZW5hbWUoKSkpLmpvaW4oJywg
Jyk7CisgICAgICAgICAgICBuYW1lUGFydHMucHVzaChgUm9vdHM6ICR7bGVmdFJvb3RGaWxlRGVz
Y3JpcHRpb24ubGVuZ3RoID8gbGVmdFJvb3RGaWxlRGVzY3JpcHRpb24gOiAnbm9uZSd9IC0gJHty
aWdodFJvb3RGaWxlRGVzY3JpcHRpb24ubGVuZ3RoID8gcmlnaHRSb290RmlsZURlc2NyaXB0aW9u
IDogJ25vbmUnfWApOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5hbWVQYXJ0cy5qb2lu
KCcgJyk7CisgICAgfQogfQogCiBjbGFzcyBNZWFzdXJlbWVudENvbW1pdFNldCBleHRlbmRzIENv
bW1pdFNldCB7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yz
L3BhZ2VzL2FuYWx5c2lzLXRhc2stcGFnZS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMtdGFzay1wYWdlLmpzCmluZGV4IDYzMzcxMjc1ZmEwZGRk
NzJjM2E4MDIxODBlYWIyZmIzY2ZmMzUzZjUuLjQzNGQ3MWM5OGQ4OTVhODc3MDNjNzkwOTI1NmM3
M2ZkZGY4OGFkMjcgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djMvcGFnZXMvYW5hbHlzaXMtdGFzay1wYWdlLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMtdGFzay1wYWdlLmpzCkBAIC03ODUsNyArNzg1
LDcgQEAgY2xhc3MgQW5hbHlzaXNUYXNrUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAK
ICAgICBfcmV0cnlDdXJyZW50VGVzdEdyb3VwKHRlc3RHcm91cCwgcmVwZXRpdGlvbkNvdW50KQog
ICAgIHsKLSAgICAgICAgY29uc3QgbmV3TmFtZSA9IHRoaXMuX2NyZWF0ZVJldHJ5TmFtZUZvclRl
c3RHcm91cCh0ZXN0R3JvdXAubmFtZSgpKTsKKyAgICAgICAgY29uc3QgbmV3TmFtZSA9IENvbW1p
dFNldC5jcmVhdGVOYW1lV2l0aG91dENvbGxpc2lvbih0ZXN0R3JvdXAubmFtZSgpLCB0aGlzLl9o
YXNEdXBsaWNhdGVUZXN0R3JvdXBOYW1lLmJpbmQodGhpcykpOwogICAgICAgICBjb25zdCBjb21t
aXRTZXRMaXN0ID0gdGVzdEdyb3VwLnJlcXVlc3RlZENvbW1pdFNldHMoKTsKICAgICAgICAgY29u
c3QgcGxhdGZvcm0gPSB0aGlzLl90YXNrLnBsYXRmb3JtKCkgfHwgdGVzdEdyb3VwLnBsYXRmb3Jt
KCk7CiAgICAgICAgIHJldHVybiBUZXN0R3JvdXAuY3JlYXRlV2l0aEN1c3RvbUNvbmZpZ3VyYXRp
b24odGhpcy5fdGFzaywgcGxhdGZvcm0sIHRlc3RHcm91cC50ZXN0KCksIG5ld05hbWUsIHJlcGV0
aXRpb25Db3VudCwgY29tbWl0U2V0TGlzdCkKQEAgLTg0MSwyNCArODQxLDYgQEAgY2xhc3MgQW5h
bHlzaXNUYXNrUGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgIH0pOwogICAg
IH0KIAotICAgIF9jcmVhdGVSZXRyeU5hbWVGb3JUZXN0R3JvdXAobmFtZSkKLSAgICB7Ci0gICAg
ICAgIHZhciBuYW1lV2l0aE51bWJlck1hdGNoID0gbmFtZS5tYXRjaCgvKC4rPylccypcKFxzKihc
ZCspXHMqXClccyokLyk7Ci0gICAgICAgIHZhciBudW1iZXIgPSAxOwotICAgICAgICBpZiAobmFt
ZVdpdGhOdW1iZXJNYXRjaCkgewotICAgICAgICAgICAgbmFtZSA9IG5hbWVXaXRoTnVtYmVyTWF0
Y2hbMV07Ci0gICAgICAgICAgICBudW1iZXIgPSBwYXJzZUludChuYW1lV2l0aE51bWJlck1hdGNo
WzJdKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBuZXdOYW1lOwotICAgICAgICBkbyB7Ci0g
ICAgICAgICAgICBudW1iZXIrKzsKLSAgICAgICAgICAgIG5ld05hbWUgPSBgJHtuYW1lfSAoJHtu
dW1iZXJ9KWA7Ci0gICAgICAgIH0gd2hpbGUgKHRoaXMuX2hhc0R1cGxpY2F0ZVRlc3RHcm91cE5h
bWUobmV3TmFtZSkpOwotCi0gICAgICAgIHJldHVybiBuZXdOYW1lOwotICAgIH0KLQogICAgIF9o
YXNEdXBsaWNhdGVUZXN0R3JvdXBOYW1lKG5hbWUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFz
c2VydCh0aGlzLl90ZXN0R3JvdXBzKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy91bml0LXRlc3RzL2NvbW1pdC1zZXQtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvdW5pdC10ZXN0cy9jb21taXQtc2V0LXRlc3RzLmpzCmluZGV4IDExMWM2YTY1NDhmNTE4
OTJkZTFkMjdmZjEzMzE1M2FkY2E2NmUxMDUuLjRiZTdjYzY0ZmU0NTk5NGZkYzMzYmQ2OGZlNTE2
ZmE5ODI2ODc1OTcgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRl
c3RzL2NvbW1pdC1zZXQtdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Vu
aXQtdGVzdHMvY29tbWl0LXNldC10ZXN0cy5qcwpAQCAtMjksNiArMjksMTIgQEAgZnVuY3Rpb24g
Y3JlYXRlQW5vdGhlclJvb3QoKQogICAgICAgICBzaXplOiAxNjQ1MjExMSwgc2hhMjU2OiAnMDNl
ZWQ3YTg0OTRhYjg3OTRjNDRiN2Q0MzA4ZTU1NDQ4ZmM1NmY0ZDZjMTc1ODA5YmE5NjhmNzhmNjU2
ZGJiYid9KTsKIH0KIAorZnVuY3Rpb24gY3JlYXRlU2hhcmVkUm9vdCgpCit7CisgICAgcmV0dXJu
IFVwbG9hZGVkRmlsZS5lbnN1cmVTaW5nbGV0b24oNDU4LCB7J2NyZWF0ZWRBdCc6IG5ldyBEYXRl
KCcyMDE3LTA1LTAxVDIyOjAzOjI3WicpLCAnZmlsZW5hbWUnOiAncm9vdC5kYXQnLCAnZXh0ZW5z
aW9uJzogJy5kYXQnLCAnYXV0aG9yJzogJ3NvbWUgdXNlcicsCisgICAgICAgIHNpemU6IDE2NDUy
MTExLCBzaGEyNTY6ICcwM2VlZDdhODQ5NGFiODc5NGM0NGI3ZDQzMDhlNTU0NDhmYzU2ZjRhYWMx
NzU4MDliYTk2OGY3OGY2NTZkYmJiJ30pOworfQorCiBmdW5jdGlvbiBjdXN0b21Db21taXRTZXRX
aXRob3V0T3duZWRDb21taXQoKQogewogICAgIGNvbnN0IGN1c3RvbUNvbW1pdFNldCA9IG5ldyBD
dXN0b21Db21taXRTZXQ7CkBAIC0xMDQsNiArMTEwLDU2IEBAIGZ1bmN0aW9uIHdlYmtpdENvbW1p
dCgpCiAgICAgfSk7CiB9CiAKK2Z1bmN0aW9uIGFub3RoZXJXZWJLaXRDb21taXQoKQoreworICAg
IHJldHVybiBDb21taXRMb2cuZW5zdXJlU2luZ2xldG9uKDIwMTgsIHsKKyAgICAgICAgcmVwb3Np
dG9yeTogTW9ja01vZGVscy53ZWJraXQsCisgICAgICAgIHJldmlzaW9uOiAnd2Via2l0LWNvbW1p
dC0xJywKKyAgICAgICAgb3duc0NvbW1pdHM6IGZhbHNlLAorICAgICAgICB0aW1lOiAxNDU2OTMy
NzczMDAwCisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIGNvbW1pdFdpdGhTVk5SZXZpc2lvbigpCit7
CisgICAgcmV0dXJuIENvbW1pdExvZy5lbnN1cmVTaW5nbGV0b24oMjAxOSwgeworICAgICAgICBy
ZXBvc2l0b3J5OiBNb2NrTW9kZWxzLndlYmtpdCwKKyAgICAgICAgcmV2aXNpb246ICcxMjM0NScs
CisgICAgICAgIG93bnNDb21taXRzOiBmYWxzZSwKKyAgICAgICAgdGltZTogMTQ1NjkzMjc3MzAw
MAorICAgIH0pOworfQorCitmdW5jdGlvbiBhbm90aGVyQ29tbWl0V2l0aFNWTlJldmlzaW9uKCkK
K3sKKyAgICByZXR1cm4gQ29tbWl0TG9nLmVuc3VyZVNpbmdsZXRvbigyMDIwLCB7CisgICAgICAg
IHJlcG9zaXRvcnk6IE1vY2tNb2RlbHMud2Via2l0LAorICAgICAgICByZXZpc2lvbjogJzQ1Njc4
JywKKyAgICAgICAgb3duc0NvbW1pdHM6IGZhbHNlLAorICAgICAgICB0aW1lOiAxNDU2OTMyNzcz
MDAwCisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIGNvbW1pdFdpdGhHaXRSZXZpc2lvbigpCit7Cisg
ICAgcmV0dXJuIENvbW1pdExvZy5lbnN1cmVTaW5nbGV0b24oMjAyMSwgeworICAgICAgICByZXBv
c2l0b3J5OiBNb2NrTW9kZWxzLndlYmtpdCwKKyAgICAgICAgcmV2aXNpb246ICcxM2EwNTkwZDM0
ZjI2ZmRhMzk1M2M0MmZmODMzMTMyYTFhNmY2ZjVhJywKKyAgICAgICAgb3duc0NvbW1pdHM6IGZh
bHNlLAorICAgICAgICB0aW1lOiAxNDU2OTMyNzczMDAwCisgICAgfSk7Cit9CisKK2Z1bmN0aW9u
IGFub3RoZXJDb21taXRXaXRoR2l0UmV2aXNpb24oKQoreworICAgIHJldHVybiBDb21taXRMb2cu
ZW5zdXJlU2luZ2xldG9uKDIwMjIsIHsKKyAgICAgICAgcmVwb3NpdG9yeTogTW9ja01vZGVscy53
ZWJraXQsCisgICAgICAgIHJldmlzaW9uOiAnMmY4ZGQzMzIxZDRmNTFjMDRmNGUyMDE5NDI4Y2U5
ZmZlOTdmMWVmMScsCisgICAgICAgIG93bnNDb21taXRzOiBmYWxzZSwKKyAgICAgICAgdGltZTog
MTQ1NjkzMjc3MzAwMAorICAgIH0pOworfQorCiBkZXNjcmliZSgnQ29tbWl0U2V0JywgKCkgPT4g
ewogICAgIE1vY2tSZW1vdGVBUEkuaW5qZWN0KCk7CiAgICAgTW9ja01vZGVscy5pbmplY3QoKTsK
QEAgLTE1Niw2ICsyMTIsNjIgQEAgZGVzY3JpYmUoJ0NvbW1pdFNldCcsICgpID0+IHsKICAgICAg
ICAgfSk7CiAgICAgfQogCisgICAgZnVuY3Rpb24gY29tbWl0U2V0V2l0aFR3b1Jvb3RzKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBDb21taXRTZXQuZW5zdXJlU2luZ2xldG9uKDcsIHsKKyAgICAg
ICAgICAgIHJldmlzaW9uSXRlbXM6IFt7IGNvbW1pdDogd2Via2l0Q29tbWl0KCksIHJlcXVpcmVz
QnVpbGQ6IGZhbHNlIH1dLAorICAgICAgICAgICAgY3VzdG9tUm9vdHM6IFtjcmVhdGVSb290KCks
IGNyZWF0ZVNoYXJlZFJvb3QoKV0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
Y29tbWl0U2V0V2l0aEFub3RoZXJXZWJLaXRDb21taXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IENvbW1pdFNldC5lbnN1cmVTaW5nbGV0b24oOCwgeworICAgICAgICAgICAgcmV2aXNpb25JdGVt
czogW3sgY29tbWl0OiBhbm90aGVyV2ViS2l0Q29tbWl0KCksIHJlcXVpcmVzQnVpbGQ6IGZhbHNl
IH1dLAorICAgICAgICAgICAgY3VzdG9tUm9vdHM6IFtdCisgICAgICAgIH0pOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIGNvbW1pdFNldFdpdGhBbm90aGVyQ29tbWl0UGF0Y2hBbmRSb290KCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBDb21taXRTZXQuZW5zdXJlU2luZ2xldG9uKDksIHsKKyAgICAg
ICAgICAgIHJldmlzaW9uSXRlbXM6IFt7IGNvbW1pdDogYW5vdGhlcldlYktpdENvbW1pdCgpLCBy
ZXF1aXJlc0J1aWxkOiB0cnVlLCBwYXRjaDogY3JlYXRlUGF0Y2goKX1dLAorICAgICAgICAgICAg
Y3VzdG9tUm9vdHM6IFtjcmVhdGVSb290KCksIGNyZWF0ZVNoYXJlZFJvb3QoKV0KKyAgICAgICAg
fSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY29tbWl0U2V0V2l0aFNWTkNvbW1pdCgpCisgICAg
eworICAgICAgICByZXR1cm4gQ29tbWl0U2V0LmVuc3VyZVNpbmdsZXRvbigxMCwgeworICAgICAg
ICAgICAgcmV2aXNpb25JdGVtczogW3sgY29tbWl0OiBjb21taXRXaXRoU1ZOUmV2aXNpb24oKSwg
cmVxdWlyZXNCdWlsZDogZmFsc2UgfV0sCisgICAgICAgICAgICBjdXN0b21Sb290czogW10KKyAg
ICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYW5vdGhlckNvbW1pdFNldFdpdGhTVk5D
b21taXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIENvbW1pdFNldC5lbnN1cmVTaW5nbGV0b24o
MTEsIHsKKyAgICAgICAgICAgIHJldmlzaW9uSXRlbXM6IFt7IGNvbW1pdDogYW5vdGhlckNvbW1p
dFdpdGhTVk5SZXZpc2lvbigpLCByZXF1aXJlc0J1aWxkOiBmYWxzZSB9XSwKKyAgICAgICAgICAg
IGN1c3RvbVJvb3RzOiBbXQorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjb21t
aXRTZXRXaXRoR2l0Q29tbWl0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBDb21taXRTZXQuZW5z
dXJlU2luZ2xldG9uKDEyLCB7CisgICAgICAgICAgICByZXZpc2lvbkl0ZW1zOiBbeyBjb21taXQ6
IGNvbW1pdFdpdGhHaXRSZXZpc2lvbigpLCByZXF1aXJlc0J1aWxkOiBmYWxzZSB9XSwKKyAgICAg
ICAgICAgIGN1c3RvbVJvb3RzOiBbXQorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBhbm90aGVyQ29tbWl0U2V0V2l0aEdpdENvbW1pdCgpCisgICAgeworICAgICAgICByZXR1cm4g
Q29tbWl0U2V0LmVuc3VyZVNpbmdsZXRvbigxMywgeworICAgICAgICAgICAgcmV2aXNpb25JdGVt
czogW3sgY29tbWl0OiBhbm90aGVyQ29tbWl0V2l0aEdpdFJldmlzaW9uKCksIHJlcXVpcmVzQnVp
bGQ6IGZhbHNlIH1dLAorICAgICAgICAgICAgY3VzdG9tUm9vdHM6IFtdCisgICAgICAgIH0pOwor
ICAgIH0KKwogICAgIGZ1bmN0aW9uIG9uZU1lYXN1cmVtZW50Q29tbWl0U2V0KCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBNZWFzdXJlbWVudENvbW1pdFNldC5lbnN1cmVTaW5nbGV0b24oMSwgWwpA
QCAtMTk4LDcgKzMxMCwyOSBAQCBkZXNjcmliZSgnQ29tbWl0U2V0JywgKCkgPT4gewogICAgICAg
ICAgICAgYXNzZXJ0KG9uZUNvbW1pdFNldCgpLmVxdWFscyhvbmVNZWFzdXJlbWVudENvbW1pdFNl
dCgpKSk7CiAgICAgICAgICAgICBhc3NlcnQob25lTWVhc3VyZW1lbnRDb21taXRTZXQoKS5lcXVh
bHMob25lQ29tbWl0U2V0KCkpKTsKICAgICAgICAgfSk7Ci0gICAgfSkKKyAgICB9KTsKKworICAg
IGRlc2NyaWJlKCdkaWZmJywgICgpID0+IHsKKyAgICAgICAgaXQoJ3Nob3VsZCBkZXNjcmliZSBw
YXRjaCBkaWZmZXJlbmNlJywgKCkgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKENvbW1p
dFNldC5kaWZmKGNvbW1pdFNldFdpdGhQYXRjaCgpLCBjb21taXRTZXRXaXRoQW5vdGhlclBhdGNo
KCkpLCAnV2ViS2l0OiBQYXRjaChwYXRjaC5kYXQpIC0gUGF0Y2gocGF0Y2guZGF0ICgyKSknKTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBkZXNjcmliZSByb290IGRpZmZlcmVu
Y2UnLCAoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQ29tbWl0U2V0LmRpZmYoY29t
bWl0U2V0V2l0aFJvb3QoKSwgYW5vdGhlckNvbW1pdFNldFdpdGhSb290KCkpLCAnUm9vdHM6IHJv
b3QuZGF0IC0gcm9vdC5kYXQgKDIpJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQ29tbWl0
U2V0LmRpZmYoY29tbWl0U2V0V2l0aFJvb3QoKSwgY29tbWl0U2V0V2l0aFR3b1Jvb3RzKCkpLCAn
Um9vdHM6IG5vbmUgLSByb290LmRhdCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKENvbW1p
dFNldC5kaWZmKGNvbW1pdFNldFdpdGhUd29Sb290cygpLCBvbmVDb21taXRTZXQoKSksICdSb290
czogcm9vdC5kYXQsIHJvb3QuZGF0ICgyKSAtIG5vbmUnKTsKKyAgICAgICAgfSk7CisKKyAgICAg
ICAgaXQoJ3Nob3VsZCBkZXNjcmliZSBjb21taXQgZGlmZmVyZW5jZScsICgpID0+IHsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChDb21taXRTZXQuZGlmZihvbmVDb21taXRTZXQoKSwgY29tbWl0
U2V0V2l0aEFub3RoZXJXZWJLaXRDb21taXQoKSksICdXZWJLaXQ6IHdlYmtpdC1jb21taXQtMCAt
IHdlYmtpdC1jb21taXQtMScpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKENvbW1pdFNldC5k
aWZmKGNvbW1pdFNldFdpdGhTVk5Db21taXQoKSwgYW5vdGhlckNvbW1pdFNldFdpdGhTVk5Db21t
aXQoKSksICdXZWJLaXQ6IHIxMjM0NS1yNDU2NzgnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChDb21taXRTZXQuZGlmZihjb21taXRTZXRXaXRoR2l0Q29tbWl0KCksIGFub3RoZXJDb21taXRT
ZXRXaXRoR2l0Q29tbWl0KCkpLCAnV2ViS2l0OiAxM2EwNTkwZC4uMmY4ZGQzMzInKTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCBkZXNjcmliZSBjb21taXQgcm9vdCBhbmQgcGF0
Y2ggZGlmZmVyZW5jZScsICgpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChDb21taXRT
ZXQuZGlmZihvbmVDb21taXRTZXQoKSwgY29tbWl0U2V0V2l0aEFub3RoZXJDb21taXRQYXRjaEFu
ZFJvb3QoKSksICdXZWJLaXQ6IHdlYmtpdC1jb21taXQtMCB3aXRoIFBhdGNoKG5vbmUpIC0gd2Vi
a2l0LWNvbW1pdC0xIHdpdGggUGF0Y2gocGF0Y2guZGF0KSBSb290czogbm9uZSAtIHJvb3QuZGF0
LCByb290LmRhdCAoMiknKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9KTsKIAogZGVzY3JpYmUo
J0ludGVybWVkaWF0ZUNvbW1pdFNldCcsICgpID0+IHsK
</data>
<flag name="review"
          id="355821"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>