<?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>90888</bug_id>
          
          <creation_ts>2012-07-10 09:30:08 -0700</creation_ts>
          <short_desc>Web Inspector: Move revisions support to UISourceCode.</short_desc>
          <delta_ts>2012-07-11 06:55:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>90979</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>kadam</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>665809</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-07-10 09:30:08 -0700</bug_when>
    <thetext>UISourceCode is now representing editable file in inspector.
It does not always have an associated resource also.
Moving revisions support to UISourceCode seems natural.

Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665842</commentid>
    <comment_count>1</comment_count>
      <attachid>151477</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-07-10 10:06:37 -0700</bug_when>
    <thetext>Created attachment 151477
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666689</commentid>
    <comment_count>2</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-07-11 05:30:27 -0700</bug_when>
    <thetext>Committed r122327: &lt;http://trac.webkit.org/changeset/122327&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666723</commentid>
    <comment_count>3</comment_count>
    <who name="Ádám Kallai">kadam</who>
    <bug_when>2012-07-11 06:55:32 -0700</bug_when>
    <thetext>This test fails on Lion and Qt.

 * http/tests/inspector/network/network-request-revision-content.html
I created new bug report:
bug 90979</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151477</attachid>
            <date>2012-07-10 10:06:37 -0700</date>
            <delta_ts>2012-07-10 10:22:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90888-20120710210635.patch</filename>
            <type>text/plain</type>
            <size>46000</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDIzZDY4OTU1ZDk5MmQy
NjY5N2QyMjc0OTFjOWRkOWQ1ZmEzZmQzOC4uNTAyNjFlZTIwMTMzNmVlN2JlMTJlODMwZGRkNDQ5
NmU5ZTZkNGNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY1IEBACiAyMDEyLTA3LTEwICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IE1vdmUgcmV2aXNpb25zIHN1cHBvcnQgdG8gVUlTb3VyY2VDb2RlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA4ODgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlZCByZXZpc2lvbnMgc3VwcG9y
dCB0byBVSVNvdXJjZUNvZGUuCisgICAgICAgIFJldmlzaW9uIG1hbmFnZW1lbnQgY29kZSBpcyBt
b3ZlZCB1bmNoYW5nZWQgd2hlcmUgcG9zc2libGUgYW5kIHNob3VsZCBiZSByZWZhY3RvcmVkIGxh
dGVyLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmcucHJvdG90
eXBlLl9pbm5lclN0eWxlU2hlZXRDaGFuZ2VkKTogcmV2aXNpb24gaXMgbm93IGFkZGVkIHRvIHVp
U291cmNlQ29kZSwgbm90IHJlc291cmNlLgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
RXh0ZW5zaW9uU2VydmVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZl
ci5wcm90b3R5cGUuX25vdGlmeVVJU291cmNlQ29kZUNvbnRlbnRDb21taXR0ZWQpOgorICAgICAg
ICBFeHRlbnNpb24gc2VydmVyIGlzIG5vdyBsaXN0ZW5pbmcgZm9yIFdvcmtzcGFjZS5VSVNvdXJj
ZUNvZGVDb250ZW50Q29tbWl0dGVkIGV2ZW50IGluc3RlYWQgb2YgUmVzb3VyY2VUcmVlTW9kZWwu
UmVzb3VyY2VDb250ZW50Q29tbWl0dGVkLgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
UmVzb3VyY2UuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVRyZWVN
b2RlbC5qczogUmVzb3VyY2VUcmVlTW9kZWwuUmVzb3VyY2VDb250ZW50Q29tbWl0dGVkIHJlbmFt
ZWQgdG8gV29ya3NwYWNlLlVJU291cmNlQ29kZUNvbnRlbnRDb21taXR0ZWQuCisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVzb3VyY2VTb3VyY2VGcmFtZSk6IFJlc291cmNlU291cmNlRnJhbWUgaXMgbm90IHVwZGF0
ZSB3aGVuIHJldmlzaW9ucyBhcmUgYWRkZWQgYW55bW9yZSBhcyByZXNvdXJjZSBjb25lbnRlbiBp
cyBjb25zaWRlcmVkIGltbXV0YWJsZSBub3cKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1JldmlzaW9uSGlzdG9yeVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmV2aXNpb25I
aXN0b3J5Vmlldy5wb3B1bGF0ZVJldmlzaW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmV2
aXNpb25IaXN0b3J5Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmV2aXNpb25IaXN0b3J5
Vmlldy5zaG93SGlzdG9yeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmV2aXNpb25IaXN0b3J5
Vmlldy5wcm90b3R5cGUuX2NyZWF0ZVVJU291cmNlQ29kZUl0ZW0pOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlJldmlzaW9uSGlzdG9yeVZpZXcucHJvdG90eXBlLl9yZXZpc2lvbkFkZGVkLmdldCBp
Zik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmV2aXNpb25IaXN0b3J5Vmlldy5wcm90b3R5cGUu
X3JldmlzaW9uQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJldmlzaW9uSGlzdG9yeVZp
ZXcucHJvdG90eXBlLl9yZXZlYWxVSVNvdXJjZUNvZGUuZ2V0IGlmKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5SZXZpc2lvbkhpc3RvcnlWaWV3LnByb3RvdHlwZS5fcmV2ZWFsVUlTb3VyY2VDb2Rl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXZpc2lvbkhpc3RvcnlWaWV3LnByb3RvdHlwZS5f
cmVzZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0U25pcHBldE1vZGVs
LmpzOiBTbmlwcGV0cyBhcmUgbm90IGxvYWRlZCBiZWZvcmUgUmVzb3VyY2VUcmVlTW9kZWwubWFp
bkZyYW1lIGlzIGF2YWlsYWJsZSBhbnltb3JlLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlw
dFNuaXBwZXRNb2RlbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0U25pcHBldE1vZGVs
LnByb3RvdHlwZS5fc2V0U2NyaXB0U25pcHBldENvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvVUlTb3VyY2VDb2RlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlVJU291
cmNlQ29kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlLnByb3RvdHlwZS5y
ZXF1ZXN0T3JpZ2luYWxDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNv
ZGUucHJvdG90eXBlLl9zZXRDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5VSVNvdXJj
ZUNvZGUucHJvdG90eXBlLmFkZFJldmlzaW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5VSVNv
dXJjZUNvZGUucHJvdG90eXBlLl9yZXN0b3JlUmV2aXNpb25IaXN0b3J5KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5VSVNvdXJjZUNvZGUucHJvdG90eXBlLl9jbGVhclJldmlzaW9uSGlzdG9yeSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlLnByb3RvdHlwZS5yZXZlcnRUb09y
aWdpbmFsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUucHJvdG90eXBlLnJl
dmVydEFuZENsZWFySGlzdG9yeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2Rl
LnByb3RvdHlwZS5yZXZlcnRBbmRDbGVhckhpc3RvcnkuY2xlYXJIaXN0b3J5KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUucHJvdG90eXBlLmNvbW1pdFdvcmtpbmdDb3B5KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUucHJvdG90eXBlLmNhbm9uaWNhbE1p
bWVUeXBlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXZpc2lvbik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUmV2aXNpb24uX3JldmlzaW9uSGlzdG9yeVJlZ2lzdHJ5KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5SZXZpc2lvbi5fZW5zdXJlU3RhbGVSZXZpc2lvbnNGaWxldGVyZWRPdXQucGVy
c2lzdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmV2aXNpb24uX2Vuc3VyZVN0YWxlUmV2aXNp
b25zRmlsZXRlcmVkT3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXZpc2lvbi5wcm90b3R5
cGUuZ2V0IHVpU291cmNlQ29kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmV2aXNpb24ucHJv
dG90eXBlLmdldCB0aW1lc3RhbXApOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJldmlzaW9uLnBy
b3RvdHlwZS5nZXQgY29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmV2aXNpb24ucHJv
dG90eXBlLnJldmVydFRvVGhpcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmV2aXNpb24ucHJv
dG90eXBlLmNvbnRlbnRVUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJldmlzaW9uLnByb3Rv
dHlwZS5jb250ZW50VHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmV2aXNpb24ucHJvdG90
eXBlLnJlcXVlc3RDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXZpc2lvbi5wcm90
b3R5cGUuc2VhcmNoSW5Db250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXZpc2lvbi5w
cm90b3R5cGUuX3BlcnNpc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvV29ya3Nw
YWNlLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOiBTY3Jp
cHRTbmlwcGV0TW9kZWwgaXMgbm93IGNyZWF0ZWQgYWZ0ZXIgUmVzb3VyY2VUcmVlTW9kZWwuCisK
KzIwMTItMDctMTAgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogUmVmYWN0b3IgcmVzb3VyY2UgcmV2aXNpb25zIGJlZm9yZSBt
b3ZpbmcgdG8gVUlTb3VyY2VDb2RlLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTA4NTUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCmluZGV4IDFiY2NhZGE3MGZjYzM2OTgxY2I0MmVj
MjFhMjcxNjQxMTNjZDUyOTQuLmFhZjc5MmExMmI5MjZlMzJhOTdmODVlM2IzZWNhZmJmNjhlMzU1
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5
bGVNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0
eWxlTW9kZWwuanMKQEAgLTEwNzksMTIgKzEwNzksMTMgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxl
TW9kZWxSZXNvdXJjZUJpbmRpbmcucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICAgICAgdmFyIHN0eWxlU2hlZXRVUkwgPSBoZWFkZXIub3JpZ2luID09PSAi
aW5zcGVjdG9yIiA/IHRoaXMuX3ZpYUluc3BlY3RvclJlc291cmNlVVJMKGhlYWRlci5zb3VyY2VV
UkwpIDogaGVhZGVyLnNvdXJjZVVSTDsKLSAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IGZyYW1l
LnJlc291cmNlRm9yVVJMKHN0eWxlU2hlZXRVUkwpOwotICAgICAgICAgICAgaWYgKCFyZXNvdXJj
ZSkKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IFdlYkluc3Bl
Y3Rvci53b3Jrc3BhY2UudWlTb3VyY2VDb2RlRm9yVVJMKHN0eWxlU2hlZXRVUkwpOworICAgICAg
ICAgICAgaWYgKCF1aVNvdXJjZUNvZGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgICAgICBpZiAocmVzb3VyY2UudHlwZSA9PT0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMu
U3R5bGVzaGVldCkKLSAgICAgICAgICAgICAgICByZXNvdXJjZS5hZGRSZXZpc2lvbihjb250ZW50
KTsKKyAgICAgICAgICAgIGlmICh1aVNvdXJjZUNvZGUuY29udGVudFR5cGUoKSA9PT0gV2ViSW5z
cGVjdG9yLnJlc291cmNlVHlwZXMuU3R5bGVzaGVldCkKKyAgICAgICAgICAgICAgICB1aVNvdXJj
ZUNvZGUuYWRkUmV2aXNpb24oY29udGVudCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIXRo
aXMuX3N0eWxlU2hlZXRJZFRvSGVhZGVyW3N0eWxlU2hlZXRJZF0pIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKaW5kZXgg
YjgzNWZiOWQzM2ExMGQyOTI0MWM2NzRhMGZhOTdhMzZjZDI5NmZjZi4uY2UwMTU3ZjlmZTViMzI4
MDM5NTA4ZTM5NDE4YjAwMmMyYmQxMWE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKQEAgLTU4Miw5ICs1ODIsOSBA
QCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
ICAgICB0aGlzLl9ub3RpZnlFbGVtZW50c1NlbGVjdGlvbkNoYW5nZWQpOwogICAgICAgICB9CiAg
ICAgICAgIHRoaXMuX3JlZ2lzdGVyQXV0b3N1YnNjcmlwdGlvbkhhbmRsZXIoV2ViSW5zcGVjdG9y
LmV4dGVuc2lvbkFQSS5FdmVudHMuUmVzb3VyY2VDb250ZW50Q29tbWl0dGVkLAotICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLAotICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuUmVzb3VyY2VDb250ZW50Q29tbWl0dGVk
LAotICAgICAgICAgICAgdGhpcy5fbm90aWZ5UmVzb3VyY2VDb250ZW50Q29tbWl0dGVkKTsKKyAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci53b3Jrc3BhY2UsCisgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuV29ya3NwYWNlLkV2ZW50cy5VSVNvdXJjZUNvZGVDb250ZW50Q29tbWl0dGVkLAorICAgICAg
ICAgICAgdGhpcy5fbm90aWZ5VUlTb3VyY2VDb2RlQ29udGVudENvbW1pdHRlZCk7CiAKICAgICAg
ICAgZnVuY3Rpb24gb25UaW1lbGluZVN1YnNjcmlwdGlvblN0YXJ0ZWQoKQogICAgICAgICB7CkBA
IC02MTgsMTEgKzYxOCwxMSBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5fcG9zdE5vdGlmaWNhdGlvbihXZWJJbnNwZWN0b3IuZXh0ZW5z
aW9uQVBJLkV2ZW50cy5SZXNvdXJjZUFkZGVkLCB0aGlzLl9tYWtlUmVzb3VyY2UodWlTb3VyY2VD
b2RlKSk7CiAgICAgfSwKIAotICAgIF9ub3RpZnlSZXNvdXJjZUNvbnRlbnRDb21taXR0ZWQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF9ub3RpZnlVSVNvdXJjZUNvZGVDb250ZW50Q29tbWl0dGVkOiBm
dW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IC8qKiBAdHlwZSB7
V2ViSW5zcGVjdG9yLlJlc291cmNlfSAqLyBldmVudC5kYXRhLnJlc291cmNlOwotICAgICAgICB2
YXIgY29udGVudFByb3ZpZGVyID0gcmVzb3VyY2UudWlTb3VyY2VDb2RlKCkgfHwgcmVzb3VyY2U7
Ci0gICAgICAgIHRoaXMuX3Bvc3ROb3RpZmljYXRpb24oV2ViSW5zcGVjdG9yLmV4dGVuc2lvbkFQ
SS5FdmVudHMuUmVzb3VyY2VDb250ZW50Q29tbWl0dGVkLCB0aGlzLl9tYWtlUmVzb3VyY2UoY29u
dGVudFByb3ZpZGVyKSwgZXZlbnQuZGF0YS5jb250ZW50KTsKKyAgICAgICAgdmFyIHVpU291cmNl
Q29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gZXZlbnQuZGF0
YS51aVNvdXJjZUNvZGU7CisgICAgICAgIHZhciBjb250ZW50ID0gLyoqIEB0eXBlIHtzdHJpbmd9
ICovIGV2ZW50LmRhdGEuY29udGVudDsKKyAgICAgICAgdGhpcy5fcG9zdE5vdGlmaWNhdGlvbihX
ZWJJbnNwZWN0b3IuZXh0ZW5zaW9uQVBJLkV2ZW50cy5SZXNvdXJjZUNvbnRlbnRDb21taXR0ZWQs
IHRoaXMuX21ha2VSZXNvdXJjZSh1aVNvdXJjZUNvZGUpLCBjb250ZW50KTsKICAgICB9LAogCiAg
ICAgX25vdGlmeVJlcXVlc3RGaW5pc2hlZDogZnVuY3Rpb24oZXZlbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcwppbmRleCA5YTVmOTE0Njg0YTBl
MmYyZDkwYmQ5MzQwY2YxZmNlMTA3NjdlYzQ5Li4zYzJjMDgxN2Y1NDIxNDZjN2UzYTRjODY5MDM0
NzFlMzllNDhiMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Jlc291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
UmVzb3VyY2UuanMKQEAgLTQ4LDcgKzQ4LDYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlID0gZnVu
Y3Rpb24ocmVxdWVzdCwgdXJsLCBkb2N1bWVudFVSTCwgZnJhbWVJZCwgbG9hZGVySWQsIHQKICAg
ICB0aGlzLl9sb2FkZXJJZCA9IGxvYWRlcklkOwogICAgIHRoaXMuX3R5cGUgPSB0eXBlIHx8IFdl
Ykluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLk90aGVyOwogICAgIHRoaXMuX21pbWVUeXBlID0gbWlt
ZVR5cGU7Ci0gICAgdGhpcy5oaXN0b3J5ID0gW107CiAgICAgdGhpcy5faXNIaWRkZW4gPSBpc0hp
ZGRlbjsKIAogICAgIC8qKiBAdHlwZSB7P3N0cmluZ30gKi8gdGhpcy5fY29udGVudDsKQEAgLTU2
LDEyICs1NSw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZSA9IGZ1bmN0aW9uKHJlcXVlc3QsIHVy
bCwgZG9jdW1lbnRVUkwsIGZyYW1lSWQsIGxvYWRlcklkLCB0CiAgICAgdGhpcy5fcGVuZGluZ0Nv
bnRlbnRDYWxsYmFja3MgPSBbXTsKICAgICBpZiAodGhpcy5fcmVxdWVzdCAmJiAhdGhpcy5fcmVx
dWVzdC5maW5pc2hlZCkKICAgICAgICAgdGhpcy5fcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5FdmVudHMuRmluaXNoZWRMb2FkaW5nLCB0aGlzLl9y
ZXF1ZXN0RmluaXNoZWQsIHRoaXMpOwotICAgIAotICAgIHRoaXMuX3Jlc3RvcmVSZXZpc2lvbkhp
c3RvcnkoKTsKIH0KIAogV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50cyA9IHsKLSAgICBSZXZp
c2lvbkFkZGVkOiAicmV2aXNpb24tYWRkZWQiLAogICAgIE1lc3NhZ2VBZGRlZDogIm1lc3NhZ2Ut
YWRkZWQiLAogICAgIE1lc3NhZ2VzQ2xlYXJlZDogIm1lc3NhZ2VzLWNsZWFyZWQiLAogfQpAQCAt
MjE1LDY1ICsyMTEsNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAg
IH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3Q29udGVudAotICAgICAq
IEBwYXJhbSB7ZnVuY3Rpb24oU3RyaW5nKT19IGNhbGxiYWNrCi0gICAgICovCi0gICAgX3NldENv
bnRlbnQ6IGZ1bmN0aW9uKG5ld0NvbnRlbnQsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgdmFy
IHVpU291cmNlQ29kZSA9IHRoaXMuX3VpU291cmNlQ29kZTsKLSAgICAgICAgaWYgKCF0aGlzLl91
aVNvdXJjZUNvZGUgfHwgIXRoaXMuX3VpU291cmNlQ29kZS5pc0VkaXRhYmxlKCkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuX3VpU291cmNlQ29kZS5zZXRXb3JraW5nQ29weShu
ZXdDb250ZW50KTsKLSAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlLmNvbW1pdFdvcmtpbmdDb3B5
KGNhbGxiYWNrKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IGNv
bnRlbnQKLSAgICAgKiBAcGFyYW0ge0RhdGU9fSB0aW1lc3RhbXAKLSAgICAgKiBAcGFyYW0ge2Jv
b2xlYW49fSByZXN0b3JpbmdIaXN0b3J5Ci0gICAgICovCi0gICAgYWRkUmV2aXNpb246IGZ1bmN0
aW9uKGNvbnRlbnQsIHRpbWVzdGFtcCwgcmVzdG9yaW5nSGlzdG9yeSkKLSAgICB7Ci0gICAgICAg
IGlmICh0aGlzLmhpc3RvcnkubGVuZ3RoKSB7Ci0gICAgICAgICAgICB2YXIgbGFzdFJldmlzaW9u
ID0gdGhpcy5oaXN0b3J5W3RoaXMuaGlzdG9yeS5sZW5ndGggLSAxXTsKLSAgICAgICAgICAgIGlm
IChsYXN0UmV2aXNpb24uX2NvbnRlbnQgPT09IGNvbnRlbnQpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgICAgIHZhciByZXZpc2lvbiA9IG5ldyBXZWJJbnNwZWN0b3Iu
UmV2aXNpb24odGhpcywgY29udGVudCwgdGltZXN0YW1wIHx8IG5ldyBEYXRlKCkpOwotICAgICAg
ICB0aGlzLmhpc3RvcnkucHVzaChyZXZpc2lvbik7Ci0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50cy5SZXZpc2lvbkFkZGVk
LCByZXZpc2lvbik7Ci0gICAgICAgIGlmICghcmVzdG9yaW5nSGlzdG9yeSkKLSAgICAgICAgICAg
IHJldmlzaW9uLl9wZXJzaXN0KCk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVN
b2RlbC5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1v
ZGVsLkV2ZW50VHlwZXMuUmVzb3VyY2VDb250ZW50Q29tbWl0dGVkLCB7IHJlc291cmNlOiB0aGlz
LCBjb250ZW50OiBjb250ZW50IH0pOwotICAgIH0sCi0KLSAgICBfcmVzdG9yZVJldmlzaW9uSGlz
dG9yeTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKCF3aW5kb3cubG9jYWxTdG9yYWdl
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIFdlYkluc3BlY3Rvci5SZXZpc2lvbi5f
ZW5zdXJlU3RhbGVSZXZpc2lvbnNGaWxldGVyZWRPdXQoKTsKLSAgICAgICAgdmFyIHJlZ2lzdHJ5
ID0gV2ViSW5zcGVjdG9yLlJldmlzaW9uLl9yZXZpc2lvbkhpc3RvcnlSZWdpc3RyeSgpOwotICAg
ICAgICB2YXIgaGlzdG9yeUl0ZW1zID0gcmVnaXN0cnlbdGhpcy51cmxdOwotICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaGlzdG9yeUl0ZW1zICYmIGkgPCBoaXN0b3J5SXRlbXMubGVuZ3RoOyArK2kp
Ci0gICAgICAgICAgICB0aGlzLmFkZFJldmlzaW9uKHdpbmRvdy5sb2NhbFN0b3JhZ2VbaGlzdG9y
eUl0ZW1zW2ldLmtleV0sIG5ldyBEYXRlKGhpc3RvcnlJdGVtc1tpXS50aW1lc3RhbXApLCB0cnVl
KTsKLSAgICB9LAotCi0gICAgX2NsZWFyUmV2aXNpb25IaXN0b3J5OiBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICBpZiAoIXdpbmRvdy5sb2NhbFN0b3JhZ2UpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgdmFyIHJlZ2lzdHJ5ID0gV2ViSW5zcGVjdG9yLlJldmlzaW9uLl9yZXZpc2lv
bkhpc3RvcnlSZWdpc3RyeSgpOwotICAgICAgICB2YXIgaGlzdG9yeUl0ZW1zID0gcmVnaXN0cnlb
dGhpcy51cmxdOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaGlzdG9yeUl0ZW1zICYmIGkgPCBo
aXN0b3J5SXRlbXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBkZWxldGUgd2luZG93LmxvY2Fs
U3RvcmFnZVtoaXN0b3J5SXRlbXNbaV0ua2V5XTsKLSAgICAgICAgZGVsZXRlIHJlZ2lzdHJ5W3Ro
aXMudXJsXTsKLSAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZVsicmV2aXNpb24taGlzdG9yeSJd
ID0gSlNPTi5zdHJpbmdpZnkocmVnaXN0cnkpOwotICAgIH0sCi0gICAKLSAgICAvKioKICAgICAg
KiBAcmV0dXJuIHs/c3RyaW5nfQogICAgICAqLwogICAgIGNvbnRlbnRVUkw6IGZ1bmN0aW9uKCkK
QEAgLTM5MSwzMiArMzI4LDYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgUGFnZUFnZW50LmdldFJlc291cmNlQ29udGVudCh0aGlzLmZyYW1lSWQsIHRoaXMu
dXJsLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICB9LAogCi0gICAgcmV2ZXJ0VG9PcmlnaW5h
bDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgZnVuY3Rpb24gcmV2ZXJ0KGNvbnRlbnQpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuX3NldENvbnRlbnQoY29udGVudCwgZnVuY3Rpb24o
KSB7fSk7Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5yZXF1ZXN0Q29udGVudChyZXZlcnQuYmlu
ZCh0aGlzKSk7Ci0gICAgfSwKLQotICAgIHJldmVydEFuZENsZWFySGlzdG9yeTogZnVuY3Rpb24o
Y2FsbGJhY2spCi0gICAgewotICAgICAgICBmdW5jdGlvbiByZXZlcnQoY29udGVudCkKLSAgICAg
ICAgewotICAgICAgICAgICAgdGhpcy5fc2V0Q29udGVudChjb250ZW50LCBjbGVhckhpc3Rvcnku
YmluZCh0aGlzKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBjbGVhckhpc3Rvcnko
KQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLl9jbGVhclJldmlzaW9uSGlzdG9yeSgpOwot
ICAgICAgICAgICAgdGhpcy5oaXN0b3J5ID0gW107Ci0gICAgICAgICAgICBjYWxsYmFjaygpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5yZXF1ZXN0Q29udGVudChyZXZlcnQuYmluZCh0aGlz
KSk7Ci0gICAgfSwKLQogICAgIC8qKgogICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgICov
CkBAIC00NDQsMTY5ICszNTUsMyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0g
ewogCiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3Bl
Y3Rvci5PYmplY3QucHJvdG90eXBlOwogCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQGltcGxl
bWVudHMge1dlYkluc3BlY3Rvci5Db250ZW50UHJvdmlkZXJ9Ci0gKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5SZXNvdXJjZX0gcmVzb3VyY2UKLSAqIEBwYXJhbSB7P3N0cmluZ3x1bmRlZmluZWR9IGNv
bnRlbnQKLSAqIEBwYXJhbSB7RGF0ZX0gdGltZXN0YW1wCi0gKi8KLVdlYkluc3BlY3Rvci5SZXZp
c2lvbiA9IGZ1bmN0aW9uKHJlc291cmNlLCBjb250ZW50LCB0aW1lc3RhbXApCi17Ci0gICAgdGhp
cy5fcmVzb3VyY2UgPSByZXNvdXJjZTsKLSAgICB0aGlzLl9jb250ZW50ID0gY29udGVudDsKLSAg
ICB0aGlzLl90aW1lc3RhbXAgPSB0aW1lc3RhbXA7Ci19Ci0KLVdlYkluc3BlY3Rvci5SZXZpc2lv
bi5fcmV2aXNpb25IaXN0b3J5UmVnaXN0cnkgPSBmdW5jdGlvbigpCi17Ci0gICAgaWYgKCFXZWJJ
bnNwZWN0b3IuUmV2aXNpb24uX3JldmlzaW9uSGlzdG9yeVJlZ2lzdHJ5T2JqZWN0KSB7Ci0gICAg
ICAgIGlmICh3aW5kb3cubG9jYWxTdG9yYWdlKSB7Ci0gICAgICAgICAgICB2YXIgcmV2aXNpb25I
aXN0b3J5ID0gd2luZG93LmxvY2FsU3RvcmFnZVsicmV2aXNpb24taGlzdG9yeSJdOwotICAgICAg
ICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuUmV2aXNpb24uX3Jldmlz
aW9uSGlzdG9yeVJlZ2lzdHJ5T2JqZWN0ID0gcmV2aXNpb25IaXN0b3J5ID8gSlNPTi5wYXJzZShy
ZXZpc2lvbkhpc3RvcnkpIDoge307Ci0gICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLlJldmlzaW9uLl9yZXZpc2lvbkhpc3RvcnlSZWdpc3RyeU9i
amVjdCA9IHt9OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5SZXZpc2lvbi5fcmV2aXNpb25IaXN0b3J5UmVnaXN0cnlPYmplY3QgPSB7fTsK
LSAgICB9Ci0gICAgcmV0dXJuIFdlYkluc3BlY3Rvci5SZXZpc2lvbi5fcmV2aXNpb25IaXN0b3J5
UmVnaXN0cnlPYmplY3Q7Ci19Ci0KLVdlYkluc3BlY3Rvci5SZXZpc2lvbi5fZW5zdXJlU3RhbGVS
ZXZpc2lvbnNGaWxldGVyZWRPdXQgPSBmdW5jdGlvbigpCi17Ci0gICAgaWYgKCF3aW5kb3cubG9j
YWxTdG9yYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoV2ViSW5zcGVjdG9yLlJldmlz
aW9uLl9zdGFsZVJldmlzaW9uc0ZpbHRlcmVkT3V0KQotICAgICAgICByZXR1cm47Ci0gICAgV2Vi
SW5zcGVjdG9yLlJldmlzaW9uLl9zdGFsZVJldmlzaW9uc0ZpbHRlcmVkT3V0ID0gdHJ1ZTsKLSAg
ICAKLSAgICB2YXIgcmVnaXN0cnkgPSBXZWJJbnNwZWN0b3IuUmV2aXNpb24uX3JldmlzaW9uSGlz
dG9yeVJlZ2lzdHJ5KCk7Ci0gICAgdmFyIGZpbHRlcmVkUmVnaXN0cnkgPSB7fTsKLSAgICBmb3Ig
KHZhciB1cmwgaW4gcmVnaXN0cnkpIHsKLSAgICAgICAgdmFyIGhpc3RvcnlJdGVtcyA9IHJlZ2lz
dHJ5W3VybF07Ci0gICAgICAgIHZhciBmaWx0ZXJlZEhpc3RvcnlJdGVtcyA9IFtdOwotICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaGlzdG9yeUl0ZW1zICYmIGkgPCBoaXN0b3J5SXRlbXMubGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgICAgIHZhciBoaXN0b3J5SXRlbSA9IGhpc3RvcnlJdGVtc1tpXTsK
LSAgICAgICAgICAgIGlmIChoaXN0b3J5SXRlbS5sb2FkZXJJZCA9PT0gV2ViSW5zcGVjdG9yLnJl
c291cmNlVHJlZU1vZGVsLm1haW5GcmFtZS5sb2FkZXJJZCkgewotICAgICAgICAgICAgICAgIGZp
bHRlcmVkSGlzdG9yeUl0ZW1zLnB1c2goaGlzdG9yeUl0ZW0pOwotICAgICAgICAgICAgICAgIGZp
bHRlcmVkUmVnaXN0cnlbdXJsXSA9IGZpbHRlcmVkSGlzdG9yeUl0ZW1zOwotICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgZGVsZXRlIHdpbmRvdy5sb2NhbFN0b3JhZ2VbaGlzdG9y
eUl0ZW0ua2V5XTsKLSAgICAgICAgfQotICAgIH0KLSAgICBXZWJJbnNwZWN0b3IuUmV2aXNpb24u
X3JldmlzaW9uSGlzdG9yeVJlZ2lzdHJ5T2JqZWN0ID0gZmlsdGVyZWRSZWdpc3RyeTsKLQotICAg
IGZ1bmN0aW9uIHBlcnNpc3QoKQotICAgIHsKLSAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZVsi
cmV2aXNpb24taGlzdG9yeSJdID0gSlNPTi5zdHJpbmdpZnkoZmlsdGVyZWRSZWdpc3RyeSk7Ci0g
ICAgfQotCi0gICAgLy8gU2NoZWR1bGUgYXN5bmMgc3RvcmFnZS4KLSAgICBzZXRUaW1lb3V0KHBl
cnNpc3QsIDApOwotfQotCi1XZWJJbnNwZWN0b3IuUmV2aXNpb24ucHJvdG90eXBlID0gewotICAg
IC8qKgotICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5SZXNvdXJjZX0KLSAgICAgKi8KLSAg
ICBnZXQgcmVzb3VyY2UoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlOwot
ICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtEYXRlfQotICAgICAqLwotICAgIGdl
dCB0aW1lc3RhbXAoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3RpbWVzdGFtcDsKLSAg
ICB9LAotCi0gICAgLyoqCi0gICAgICogQHJldHVybiB7P3N0cmluZ30KLSAgICAgKi8KLSAgICBn
ZXQgY29udGVudCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudCB8fCBudWxs
OwotICAgIH0sCi0KLSAgICByZXZlcnRUb1RoaXM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IGZ1bmN0aW9uIHJldmVydChjb250ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGhp
cy5fcmVzb3VyY2UuX2NvbnRlbnQgIT09IGNvbnRlbnQpCi0gICAgICAgICAgICAgICAgdGhpcy5f
cmVzb3VyY2UuX3NldENvbnRlbnQoY29udGVudCwgZnVuY3Rpb24oKSB7fSk7Ci0gICAgICAgIH0K
LSAgICAgICAgdGhpcy5yZXF1ZXN0Q29udGVudChyZXZlcnQuYmluZCh0aGlzKSk7Ci0gICAgfSwK
LQotICAgIC8qKgotICAgICAqIEByZXR1cm4gez9zdHJpbmd9Ci0gICAgICovCi0gICAgY29udGVu
dFVSTDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlLnVy
bDsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlJlc291
cmNlVHlwZX0KLSAgICAgKi8KLSAgICBjb250ZW50VHlwZTogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlLmNvbnRlbnRUeXBlKCk7Ci0gICAgfSwKLQotICAg
IC8qKgotICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP3N0cmluZywgYm9vbGVhbiwgc3RyaW5nKX0g
Y2FsbGJhY2sKLSAgICAgKi8KLSAgICByZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oY2FsbGJhY2sp
Ci0gICAgewotICAgICAgICBjYWxsYmFjayh0aGlzLl9jb250ZW50IHx8ICIiLCBmYWxzZSwgdGhp
cy5yZXNvdXJjZS5taW1lVHlwZSk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBxdWVyeQotICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2FzZVNlbnNpdGl2ZQotICAg
ICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNSZWdleAotICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJy
YXkuPFdlYkluc3BlY3Rvci5Db250ZW50UHJvdmlkZXIuU2VhcmNoTWF0Y2g+KX0gY2FsbGJhY2sK
LSAgICAgKi8KLSAgICBzZWFyY2hJbkNvbnRlbnQ6IGZ1bmN0aW9uKHF1ZXJ5LCBjYXNlU2Vuc2l0
aXZlLCBpc1JlZ2V4LCBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIGNhbGxiYWNrKFtdKTsKLSAg
ICB9LAotCi0gICAgX3BlcnNpc3Q6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICghd2lu
ZG93LmxvY2FsU3RvcmFnZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgdXJs
ID0gdGhpcy5jb250ZW50VVJMKCk7Ci0gICAgICAgIGlmICh1cmwuc3RhcnRzV2l0aCgiaW5zcGVj
dG9yOi8vIikpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIGxvYWRlcklkID0g
V2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLm1haW5GcmFtZS5sb2FkZXJJZDsKLSAgICAg
ICAgdmFyIHRpbWVzdGFtcCA9IHRoaXMudGltZXN0YW1wLmdldFRpbWUoKTsKLSAgICAgICAgdmFy
IGtleSA9ICJyZXZpc2lvbi1oaXN0b3J5fCIgKyB1cmwgKyAifCIgKyBsb2FkZXJJZCArICJ8IiAr
IHRpbWVzdGFtcDsKLQotICAgICAgICB2YXIgcmVnaXN0cnkgPSBXZWJJbnNwZWN0b3IuUmV2aXNp
b24uX3JldmlzaW9uSGlzdG9yeVJlZ2lzdHJ5KCk7Ci0KLSAgICAgICAgdmFyIGhpc3RvcnlJdGVt
cyA9IHJlZ2lzdHJ5W3VybF07Ci0gICAgICAgIGlmICghaGlzdG9yeUl0ZW1zKSB7Ci0gICAgICAg
ICAgICBoaXN0b3J5SXRlbXMgPSBbXTsKLSAgICAgICAgICAgIHJlZ2lzdHJ5W3VybF0gPSBoaXN0
b3J5SXRlbXM7Ci0gICAgICAgIH0KLSAgICAgICAgaGlzdG9yeUl0ZW1zLnB1c2goe3VybDogdXJs
LCBsb2FkZXJJZDogbG9hZGVySWQsIHRpbWVzdGFtcDogdGltZXN0YW1wLCBrZXk6IGtleX0pOwot
Ci0gICAgICAgIGZ1bmN0aW9uIHBlcnNpc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgICB3aW5k
b3cubG9jYWxTdG9yYWdlW2tleV0gPSB0aGlzLl9jb250ZW50OwotICAgICAgICAgICAgd2luZG93
LmxvY2FsU3RvcmFnZVsicmV2aXNpb24taGlzdG9yeSJdID0gSlNPTi5zdHJpbmdpZnkocmVnaXN0
cnkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gU2NoZWR1bGUgYXN5bmMgc3RvcmFnZS4KLSAg
ICAgICAgc2V0VGltZW91dChwZXJzaXN0LmJpbmQodGhpcyksIDApOwotICAgIH0KLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUcmVlTW9k
ZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1v
ZGVsLmpzCmluZGV4IDk2NTE1ODYxZmNiY2NiNDZmODU5NDIyNzUzODhjMTIxOTE4MDFkMDQuLmUw
ZGZiYWJiMWM4OGE5NzJiYzRjYzU0ZGZlZGVjY2E1MjllODM3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVRyZWVNb2RlbC5qcwpA
QCAtNjAsNyArNjAsNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBl
cyA9IHsKICAgICBGcmFtZURldGFjaGVkOiAiRnJhbWVEZXRhY2hlZCIsCiAgICAgTWFpbkZyYW1l
TmF2aWdhdGVkOiAiTWFpbkZyYW1lTmF2aWdhdGVkIiwKICAgICBSZXNvdXJjZUFkZGVkOiAiUmVz
b3VyY2VBZGRlZCIsCi0gICAgUmVzb3VyY2VDb250ZW50Q29tbWl0dGVkOiAicmVzb3VyY2UtY29u
dGVudC1jb21taXR0ZWQiLAogICAgIFdpbGxMb2FkQ2FjaGVkUmVzb3VyY2VzOiAiV2lsbExvYWRD
YWNoZWRSZXNvdXJjZXMiLAogICAgIENhY2hlZFJlc291cmNlc0xvYWRlZDogIkNhY2hlZFJlc291
cmNlc0xvYWRlZCIsCiAgICAgRE9NQ29udGVudExvYWRlZDogIkRPTUNvbnRlbnRMb2FkZWQiLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZp
ZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5q
cwppbmRleCAxYWNlZjdmMmU2OGQwZGJiMjY2YzNmMjIwMDM2ZjkxOGZiZjE5YmNhLi5jZTUwYjRi
NmM5MTYyNjdkM2M3ODZkZTM1ZjczMTllYzkwMzBlNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcwpAQCAtODQsNyArODQsNiBA
QCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTb3VyY2VGcmFtZSA9IGZ1bmN0aW9uKHJlc291cmNlKQog
ewogICAgIHRoaXMuX3Jlc291cmNlID0gcmVzb3VyY2U7CiAgICAgV2ViSW5zcGVjdG9yLlNvdXJj
ZUZyYW1lLmNhbGwodGhpcywgcmVzb3VyY2UpOwotICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50cy5SZXZpc2lvbkFkZGVkLCB0aGlz
Ll9jb250ZW50Q2hhbmdlZCwgdGhpcyk7CiB9CiAKIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNvdXJj
ZUZyYW1lLnByb3RvdHlwZSA9IHsKQEAgLTkzLDExICs5Miw2IEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZVNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291
cmNlOwogICAgIH0sCiAKLSAgICBfY29udGVudENoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQotICAg
IHsKLSAgICAgICAgdGhpcy5zZXRDb250ZW50KHRoaXMuX3Jlc291cmNlLmNvbnRlbnQsIGZhbHNl
LCB0aGlzLl9yZXNvdXJjZS5jYW5vbmljYWxNaW1lVHlwZSgpKTsKLSAgICB9LAotCiAgICAgcG9w
dWxhdGVUZXh0QXJlYUNvbnRleHRNZW51OiBmdW5jdGlvbihjb250ZXh0TWVudSwgbGluZU51bWJl
cikKICAgICB7CiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEFwcGxpY2FibGVJdGVtcyh0aGlz
Ll9yZXNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1JldmlzaW9uSGlzdG9yeVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1JldmlzaW9uSGlzdG9yeVZpZXcuanMKaW5kZXggZmFkMmNiMTQzNDhjYjljYmM1ZDll
YTcwZTY2ZTM0YTJjNDJmZTM4My4uMzlhZTYyOTkyZDRlZWJjNDJmNWM4ZmU3ZDMyNzg0NjdiZGRm
ZTJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXZp
c2lvbkhpc3RvcnlWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUmV2aXNpb25IaXN0b3J5Vmlldy5qcwpAQCAtMzksMTkgKzM5LDIyIEBAIFdlYkluc3BlY3Rv
ci5SZXZpc2lvbkhpc3RvcnlWaWV3ID0gZnVuY3Rpb24oKQogICAgIHRoaXMuZWxlbWVudC5hZGRT
dHlsZUNsYXNzKCJyZXZpc2lvbi1oaXN0b3J5LWRyYXdlciIpOwogICAgIHRoaXMuZWxlbWVudC5h
ZGRTdHlsZUNsYXNzKCJmaWxsIik7CiAgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoIm91
dGxpbmUtZGlzY2xvc3VyZSIpOwotICAgIHRoaXMuX3Jlc291cmNlSXRlbXMgPSBuZXcgTWFwKCk7
CisgICAgdGhpcy5fdWlTb3VyY2VDb2RlSXRlbXMgPSBuZXcgTWFwKCk7CiAKICAgICB2YXIgb2xF
bGVtZW50ID0gdGhpcy5lbGVtZW50LmNyZWF0ZUNoaWxkKCJvbCIpOwogICAgIHRoaXMuX3RyZWVP
dXRsaW5lID0gbmV3IFRyZWVPdXRsaW5lKG9sRWxlbWVudCk7CiAKLSAgICBmdW5jdGlvbiBwb3B1
bGF0ZVJldmlzaW9ucyhyZXNvdXJjZSkKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQorICAgICAqLworICAgIGZ1bmN0aW9uIHBv
cHVsYXRlUmV2aXNpb25zKHVpU291cmNlQ29kZSkKICAgICB7Ci0gICAgICAgIGlmIChyZXNvdXJj
ZS5oaXN0b3J5Lmxlbmd0aCkKLSAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVJlc291cmNlSXRlbShy
ZXNvdXJjZSk7CisgICAgICAgIGlmICh1aVNvdXJjZUNvZGUuaGlzdG9yeS5sZW5ndGgpCisgICAg
ICAgICAgICB0aGlzLl9jcmVhdGVVSVNvdXJjZUNvZGVJdGVtKHVpU291cmNlQ29kZSk7CiAgICAg
fQogCi0gICAgV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLmZvckFsbFJlc291cmNlcyhw
b3B1bGF0ZVJldmlzaW9ucy5iaW5kKHRoaXMpKTsKLSAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VU
cmVlTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwu
RXZlbnRUeXBlcy5SZXNvdXJjZUNvbnRlbnRDb21taXR0ZWQsIHRoaXMuX3JldmlzaW9uQWRkZWQs
IHRoaXMpOworICAgIFdlYkluc3BlY3Rvci53b3Jrc3BhY2UudWlTb3VyY2VDb2RlcygpLmZvckVh
Y2gocG9wdWxhdGVSZXZpc2lvbnMuYmluZCh0aGlzKSk7CisgICAgV2ViSW5zcGVjdG9yLndvcmtz
cGFjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UuRXZlbnRzLlVJU291
cmNlQ29kZUNvbnRlbnRDb21taXR0ZWQsIHRoaXMuX3JldmlzaW9uQWRkZWQsIHRoaXMpOwogCiAg
ICAgdGhpcy5fc3RhdHVzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsK
ICAgICB0aGlzLl9zdGF0dXNFbGVtZW50LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJMb2NhbCBtb2RpZmljYXRpb25zIik7CkBAIC02Nyw3ICs3MCw3IEBAIFdlYkluc3BlY3Rv
ci5SZXZpc2lvbkhpc3RvcnlWaWV3LnNob3dIaXN0b3J5ID0gZnVuY3Rpb24odWlTb3VyY2VDb2Rl
KQogICAgICAgICBXZWJJbnNwZWN0b3IuUmV2aXNpb25IaXN0b3J5Vmlldy5fdmlldyA9IG5ldyBX
ZWJJbnNwZWN0b3IuUmV2aXNpb25IaXN0b3J5VmlldygpOwogICAgIHZhciB2aWV3ID0gV2ViSW5z
cGVjdG9yLlJldmlzaW9uSGlzdG9yeVZpZXcuX3ZpZXc7CiAgICAgV2ViSW5zcGVjdG9yLnNob3dW
aWV3SW5EcmF3ZXIodmlldy5fc3RhdHVzRWxlbWVudCwgdmlldyk7Ci0gICAgdmlldy5fcmV2ZWFs
UmVzb3VyY2UodWlTb3VyY2VDb2RlLnJlc291cmNlKCkpOworICAgIHZpZXcuX3JldmVhbFVJU291
cmNlQ29kZSh1aVNvdXJjZUNvZGUpOwogfQogCiBXZWJJbnNwZWN0b3IuUmV2aXNpb25IaXN0b3J5
Vmlldy5yZXNldCA9IGZ1bmN0aW9uKCkKQEAgLTc4LDk0ICs4MSw5NCBAQCBXZWJJbnNwZWN0b3Iu
UmV2aXNpb25IaXN0b3J5Vmlldy5yZXNldCA9IGZ1bmN0aW9uKCkKIAogV2ViSW5zcGVjdG9yLlJl
dmlzaW9uSGlzdG9yeVZpZXcucHJvdG90eXBlID0gewogICAgIC8qKgotICAgICAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLlJlc291cmNlfSByZXNvdXJjZQorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCiAgICAgICovCi0gICAgX2NyZWF0ZVJlc291
cmNlSXRlbTogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgX2NyZWF0ZVVJU291cmNlQ29kZUl0ZW06
IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZUl0ZW0g
PSBuZXcgVHJlZUVsZW1lbnQocmVzb3VyY2UuZGlzcGxheU5hbWUsIG51bGwsIHRydWUpOwotICAg
ICAgICByZXNvdXJjZUl0ZW0uc2VsZWN0YWJsZSA9IGZhbHNlOworICAgICAgICB2YXIgdWlTb3Vy
Y2VDb2RlSXRlbSA9IG5ldyBUcmVlRWxlbWVudCh1aVNvdXJjZUNvZGUucGFyc2VkVVJMLmRpc3Bs
YXlOYW1lLCBudWxsLCB0cnVlKTsKKyAgICAgICAgdWlTb3VyY2VDb2RlSXRlbS5zZWxlY3RhYmxl
ID0gZmFsc2U7CiAKICAgICAgICAgLy8gSW5zZXJ0IGluIHNvcnRlZCBvcmRlcgogICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3RyZWVPdXRsaW5lLmNoaWxkcmVuLmxlbmd0aDsgKytp
KSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5fdHJlZU91dGxpbmUuY2hpbGRyZW5baV0udGl0bGUu
bG9jYWxlQ29tcGFyZShyZXNvdXJjZS5kaXNwbGF5TmFtZSkgPiAwKSB7Ci0gICAgICAgICAgICAg
ICAgdGhpcy5fdHJlZU91dGxpbmUuaW5zZXJ0Q2hpbGQocmVzb3VyY2VJdGVtLCBpKTsKKyAgICAg
ICAgICAgIGlmICh0aGlzLl90cmVlT3V0bGluZS5jaGlsZHJlbltpXS50aXRsZS5sb2NhbGVDb21w
YXJlKHVpU291cmNlQ29kZS5wYXJzZWRVUkwuZGlzcGxheU5hbWUpID4gMCkgeworICAgICAgICAg
ICAgICAgIHRoaXMuX3RyZWVPdXRsaW5lLmluc2VydENoaWxkKHVpU291cmNlQ29kZUl0ZW0sIGkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
ICAgIGlmIChpID09PSB0aGlzLl90cmVlT3V0bGluZS5jaGlsZHJlbi5sZW5ndGgpCi0gICAgICAg
ICAgICB0aGlzLl90cmVlT3V0bGluZS5hcHBlbmRDaGlsZChyZXNvdXJjZUl0ZW0pOworICAgICAg
ICAgICAgdGhpcy5fdHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQodWlTb3VyY2VDb2RlSXRlbSk7CiAK
LSAgICAgICAgdGhpcy5fcmVzb3VyY2VJdGVtcy5wdXQocmVzb3VyY2UsIHJlc291cmNlSXRlbSk7
CisgICAgICAgIHRoaXMuX3VpU291cmNlQ29kZUl0ZW1zLnB1dCh1aVNvdXJjZUNvZGUsIHVpU291
cmNlQ29kZUl0ZW0pOwogCi0gICAgICAgIHZhciByZXZpc2lvbkNvdW50ID0gcmVzb3VyY2UuaGlz
dG9yeS5sZW5ndGg7CisgICAgICAgIHZhciByZXZpc2lvbkNvdW50ID0gdWlTb3VyY2VDb2RlLmhp
c3RvcnkubGVuZ3RoOwogICAgICAgICBmb3IgKHZhciBpID0gcmV2aXNpb25Db3VudCAtIDE7IGkg
Pj0gMDsgLS1pKSB7Ci0gICAgICAgICAgICB2YXIgcmV2aXNpb24gPSByZXNvdXJjZS5oaXN0b3J5
W2ldOwotICAgICAgICAgICAgdmFyIGhpc3RvcnlJdGVtID0gbmV3IFdlYkluc3BlY3Rvci5SZXZp
c2lvbkhpc3RvcnlUcmVlRWxlbWVudChyZXZpc2lvbiwgcmVzb3VyY2UuaGlzdG9yeVtpIC0gMV0s
IGkgIT09IHJldmlzaW9uQ291bnQgLSAxKTsKLSAgICAgICAgICAgIHJlc291cmNlSXRlbS5hcHBl
bmRDaGlsZChoaXN0b3J5SXRlbSk7CisgICAgICAgICAgICB2YXIgcmV2aXNpb24gPSB1aVNvdXJj
ZUNvZGUuaGlzdG9yeVtpXTsKKyAgICAgICAgICAgIHZhciBoaXN0b3J5SXRlbSA9IG5ldyBXZWJJ
bnNwZWN0b3IuUmV2aXNpb25IaXN0b3J5VHJlZUVsZW1lbnQocmV2aXNpb24sIHVpU291cmNlQ29k
ZS5oaXN0b3J5W2kgLSAxXSwgaSAhPT0gcmV2aXNpb25Db3VudCAtIDEpOworICAgICAgICAgICAg
dWlTb3VyY2VDb2RlSXRlbS5hcHBlbmRDaGlsZChoaXN0b3J5SXRlbSk7CiAgICAgICAgIH0KIAog
ICAgICAgICB2YXIgbGlua0l0ZW0gPSBuZXcgVHJlZUVsZW1lbnQoIiIsIG51bGwsIGZhbHNlKTsK
ICAgICAgICAgbGlua0l0ZW0uc2VsZWN0YWJsZSA9IGZhbHNlOwotICAgICAgICByZXNvdXJjZUl0
ZW0uYXBwZW5kQ2hpbGQobGlua0l0ZW0pOworICAgICAgICB1aVNvdXJjZUNvZGVJdGVtLmFwcGVu
ZENoaWxkKGxpbmtJdGVtKTsKIAogICAgICAgICB2YXIgcmV2ZXJ0VG9PcmlnaW5hbCA9IGxpbmtJ
dGVtLmxpc3RJdGVtRWxlbWVudC5jcmVhdGVDaGlsZCgic3BhbiIsICJyZXZpc2lvbi1oaXN0b3J5
LWxpbmsgcmV2aXNpb24taGlzdG9yeS1saW5rLXJvdyIpOwogICAgICAgICByZXZlcnRUb09yaWdp
bmFsLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJhcHBseSBvcmlnaW5hbCBj
b250ZW50Iik7Ci0gICAgICAgIHJldmVydFRvT3JpZ2luYWwuYWRkRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCByZXNvdXJjZS5yZXZlcnRUb09yaWdpbmFsLmJpbmQocmVzb3VyY2UpKTsKKyAgICAgICAg
cmV2ZXJ0VG9PcmlnaW5hbC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHVpU291cmNlQ29kZS5y
ZXZlcnRUb09yaWdpbmFsLmJpbmQodWlTb3VyY2VDb2RlKSk7CiAKLSAgICAgICAgdmFyIGNsZWFy
SGlzdG9yeUVsZW1lbnQgPSByZXNvdXJjZUl0ZW0ubGlzdEl0ZW1FbGVtZW50LmNyZWF0ZUNoaWxk
KCJzcGFuIiwgInJldmlzaW9uLWhpc3RvcnktbGluayIpOworICAgICAgICB2YXIgY2xlYXJIaXN0
b3J5RWxlbWVudCA9IHVpU291cmNlQ29kZUl0ZW0ubGlzdEl0ZW1FbGVtZW50LmNyZWF0ZUNoaWxk
KCJzcGFuIiwgInJldmlzaW9uLWhpc3RvcnktbGluayIpOwogICAgICAgICBjbGVhckhpc3RvcnlF
bGVtZW50LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJyZXZlcnQiKTsKLSAg
ICAgICAgY2xlYXJIaXN0b3J5RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMu
X2NsZWFySGlzdG9yeS5iaW5kKHRoaXMsIHJlc291cmNlKSk7Ci0gICAgICAgIHJldHVybiByZXNv
dXJjZUl0ZW07CisgICAgICAgIGNsZWFySGlzdG9yeUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
Y2xpY2siLCB0aGlzLl9jbGVhckhpc3RvcnkuYmluZCh0aGlzLCB1aVNvdXJjZUNvZGUpKTsKKyAg
ICAgICAgcmV0dXJuIHVpU291cmNlQ29kZUl0ZW07CiAgICAgfSwKIAogICAgIC8qKgotICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlfSByZXNvdXJjZQorICAgICAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCiAgICAgICovCi0gICAgX2Ns
ZWFySGlzdG9yeTogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgX2NsZWFySGlzdG9yeTogZnVuY3Rp
b24odWlTb3VyY2VDb2RlKQogICAgIHsKLSAgICAgICAgcmVzb3VyY2UucmV2ZXJ0QW5kQ2xlYXJI
aXN0b3J5KGhpc3RvcnlDbGVhcmVkLmJpbmQodGhpcykpOworICAgICAgICB1aVNvdXJjZUNvZGUu
cmV2ZXJ0QW5kQ2xlYXJIaXN0b3J5KGhpc3RvcnlDbGVhcmVkLmJpbmQodGhpcykpOwogCiAgICAg
ICAgIGZ1bmN0aW9uIGhpc3RvcnlDbGVhcmVkKCkKICAgICAgICAgewotICAgICAgICAgICAgdmFy
IHJlc291cmNlSXRlbSA9IHRoaXMuX3Jlc291cmNlSXRlbXMuZ2V0KHJlc291cmNlKTsKLSAgICAg
ICAgICAgIHRoaXMuX3RyZWVPdXRsaW5lLnJlbW92ZUNoaWxkKHJlc291cmNlSXRlbSk7Ci0gICAg
ICAgICAgICB0aGlzLl9yZXNvdXJjZUl0ZW1zLnJlbW92ZShyZXNvdXJjZSk7CisgICAgICAgICAg
ICB2YXIgdWlTb3VyY2VDb2RlSXRlbSA9IHRoaXMuX3VpU291cmNlQ29kZUl0ZW1zLmdldCh1aVNv
dXJjZUNvZGUpOworICAgICAgICAgICAgdGhpcy5fdHJlZU91dGxpbmUucmVtb3ZlQ2hpbGQodWlT
b3VyY2VDb2RlSXRlbSk7CisgICAgICAgICAgICB0aGlzLl91aVNvdXJjZUNvZGVJdGVtcy5yZW1v
dmUodWlTb3VyY2VDb2RlKTsKICAgICAgICAgfQogCiAgICAgfSwKIAogICAgIF9yZXZpc2lvbkFk
ZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IC8qKiBA
dHlwZSB7V2ViSW5zcGVjdG9yLlJlc291cmNlfSAqLyBldmVudC5kYXRhLnJlc291cmNlOwotICAg
ICAgICB2YXIgcmVzb3VyY2VJdGVtID0gdGhpcy5fcmVzb3VyY2VJdGVtcy5nZXQocmVzb3VyY2Up
OwotICAgICAgICBpZiAoIXJlc291cmNlSXRlbSkgewotICAgICAgICAgICAgcmVzb3VyY2VJdGVt
ID0gdGhpcy5fY3JlYXRlUmVzb3VyY2VJdGVtKHJlc291cmNlKTsKKyAgICAgICAgdmFyIHVpU291
cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gZXZlbnQu
ZGF0YS51aVNvdXJjZUNvZGU7CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGVJdGVtID0gdGhpcy5f
dWlTb3VyY2VDb2RlSXRlbXMuZ2V0KHVpU291cmNlQ29kZSk7CisgICAgICAgIGlmICghdWlTb3Vy
Y2VDb2RlSXRlbSkgeworICAgICAgICAgICAgdWlTb3VyY2VDb2RlSXRlbSA9IHRoaXMuX2NyZWF0
ZVVJU291cmNlQ29kZUl0ZW0odWlTb3VyY2VDb2RlKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIHZhciBoaXN0b3J5TGVuZ3RoID0gcmVzb3VyY2UuaGlzdG9yeS5s
ZW5ndGg7Ci0gICAgICAgIHZhciBoaXN0b3J5SXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuUmV2aXNp
b25IaXN0b3J5VHJlZUVsZW1lbnQocmVzb3VyY2UuaGlzdG9yeVtoaXN0b3J5TGVuZ3RoIC0gMV0s
IHJlc291cmNlLmhpc3RvcnlbaGlzdG9yeUxlbmd0aCAtIDJdLCBmYWxzZSk7Ci0gICAgICAgIGlm
IChyZXNvdXJjZUl0ZW0uY2hpbGRyZW4ubGVuZ3RoKQotICAgICAgICAgICAgcmVzb3VyY2VJdGVt
LmNoaWxkcmVuWzBdLmFsbG93UmV2ZXJ0KCk7Ci0gICAgICAgIHJlc291cmNlSXRlbS5pbnNlcnRD
aGlsZChoaXN0b3J5SXRlbSwgMCk7CisgICAgICAgIHZhciBoaXN0b3J5TGVuZ3RoID0gdWlTb3Vy
Y2VDb2RlLmhpc3RvcnkubGVuZ3RoOworICAgICAgICB2YXIgaGlzdG9yeUl0ZW0gPSBuZXcgV2Vi
SW5zcGVjdG9yLlJldmlzaW9uSGlzdG9yeVRyZWVFbGVtZW50KHVpU291cmNlQ29kZS5oaXN0b3J5
W2hpc3RvcnlMZW5ndGggLSAxXSwgdWlTb3VyY2VDb2RlLmhpc3RvcnlbaGlzdG9yeUxlbmd0aCAt
IDJdLCBmYWxzZSk7CisgICAgICAgIGlmICh1aVNvdXJjZUNvZGVJdGVtLmNoaWxkcmVuLmxlbmd0
aCkKKyAgICAgICAgICAgIHVpU291cmNlQ29kZUl0ZW0uY2hpbGRyZW5bMF0uYWxsb3dSZXZlcnQo
KTsKKyAgICAgICAgdWlTb3VyY2VDb2RlSXRlbS5pbnNlcnRDaGlsZChoaXN0b3J5SXRlbSwgMCk7
CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNl
fSByZXNvdXJjZQorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlT
b3VyY2VDb2RlCiAgICAgICovCi0gICAgX3JldmVhbFJlc291cmNlOiBmdW5jdGlvbihyZXNvdXJj
ZSkKKyAgICBfcmV2ZWFsVUlTb3VyY2VDb2RlOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCiAgICAg
ewotICAgICAgICB2YXIgcmVzb3VyY2VJdGVtID0gdGhpcy5fcmVzb3VyY2VJdGVtcy5nZXQocmVz
b3VyY2UpOwotICAgICAgICBpZiAocmVzb3VyY2VJdGVtKSB7Ci0gICAgICAgICAgICByZXNvdXJj
ZUl0ZW0ucmV2ZWFsKCk7Ci0gICAgICAgICAgICByZXNvdXJjZUl0ZW0uZXhwYW5kKCk7CisgICAg
ICAgIHZhciB1aVNvdXJjZUNvZGVJdGVtID0gdGhpcy5fdWlTb3VyY2VDb2RlSXRlbXMuZ2V0KHVp
U291cmNlQ29kZSk7CisgICAgICAgIGlmICh1aVNvdXJjZUNvZGVJdGVtKSB7CisgICAgICAgICAg
ICB1aVNvdXJjZUNvZGVJdGVtLnJldmVhbCgpOworICAgICAgICAgICAgdWlTb3VyY2VDb2RlSXRl
bS5leHBhbmQoKTsKICAgICAgICAgfQogICAgIH0sCiAKICAgICBfcmVzZXQ6IGZ1bmN0aW9uKCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX3RyZWVPdXRsaW5lLnJlbW92ZUNoaWxkcmVuKCk7Ci0gICAg
ICAgIHRoaXMuX3Jlc291cmNlSXRlbXMuY2xlYXIoKTsKKyAgICAgICAgdGhpcy5fdWlTb3VyY2VD
b2RlSXRlbXMuY2xlYXIoKTsKICAgICB9CiB9CiAKQEAgLTIxMiw3ICsyMTUsNyBAQCBXZWJJbnNw
ZWN0b3IuUmV2aXNpb25IaXN0b3J5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBp
ZiAodGhpcy5fYmFzZVJldmlzaW9uKQogICAgICAgICAgICAgdGhpcy5fYmFzZVJldmlzaW9uLnJl
cXVlc3RDb250ZW50KHN0ZXAxLmJpbmQodGhpcykpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB0aGlzLl9yZXZpc2lvbi5yZXNvdXJjZS5yZXF1ZXN0Q29udGVudChzdGVwMS5iaW5kKHRoaXMp
KTsKKyAgICAgICAgICAgIHRoaXMuX3JldmlzaW9uLnVpU291cmNlQ29kZS5yZXF1ZXN0T3JpZ2lu
YWxDb250ZW50KHN0ZXAxLmJpbmQodGhpcykpOwogCiAgICAgICAgIGZ1bmN0aW9uIHN0ZXAxKGJh
c2VDb250ZW50KQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NjcmlwdFNuaXBwZXRNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2NyaXB0U25pcHBldE1vZGVsLmpzCmluZGV4IDlkNzEyZDBjN2ZjODM1
ZGE5NTJlMGVkYTE4NGEwYjhhZWE0N2Q2NWUuLjY0NjA0NDYyYzIyMTQxYzI3NzllMjU4MzI3OTJm
ZjM0NjllZmQzOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU2NyaXB0U25pcHBldE1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0U25pcHBldE1vZGVsLmpzCkBAIC00Miw3ICs0Miw3IEBAIFdlYkluc3Bl
Y3Rvci5TY3JpcHRTbmlwcGV0TW9kZWwgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5fbGFzdFNuaXBw
ZXRFdmFsdWF0aW9uSW5kZXhTZXR0aW5nID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNyZWF0ZVNl
dHRpbmcoImxhc3RTbmlwcGV0RXZhbHVhdGlvbkluZGV4IiwgMCk7CiAgICAgdGhpcy5fc25pcHBl
dFNjcmlwdE1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNuaXBwZXRTY3JpcHRNYXBwaW5nKHRo
aXMpOwogICAgIAotICAgIHRoaXMuX2xvYWRTbmlwcGV0cygpOworICAgIFdlYkluc3BlY3Rvci5y
ZXNvdXJjZVRyZWVNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRy
ZWVNb2RlbC5FdmVudFR5cGVzLkNhY2hlZFJlc291cmNlc0xvYWRlZCwgdGhpcy5fcmVzZXQsIHRo
aXMpOwogfQogCiBXZWJJbnNwZWN0b3IuU2NyaXB0U25pcHBldE1vZGVsLnNuaXBwZXRTb3VyY2VV
UkxQcmVmaXggPSAic25pcHBldHM6Ly8vIjsKQEAgLTEyOCw3ICsxMjgsNiBAQCBXZWJJbnNwZWN0
b3IuU2NyaXB0U25pcHBldE1vZGVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciBz
bmlwcGV0ID0gdGhpcy5fc25pcHBldFN0b3JhZ2Uuc25pcHBldEZvcklkKHNuaXBwZXRKYXZhU2Ny
aXB0U291cmNlLnNuaXBwZXRJZCk7CiAgICAgICAgIHNuaXBwZXQuY29udGVudCA9IG5ld0NvbnRl
bnQ7Ci0gICAgICAgIHNuaXBwZXRKYXZhU2NyaXB0U291cmNlLmNvbnRlbnRDaGFuZ2VkKG5ld0Nv
bnRlbnQsICJ0ZXh0L2phdmFzY3JpcHQiKTsKICAgICB9LAogCiAgICAgLyoqCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29kZS5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2RlLmpzCmluZGV4IDQ5
ZTVlMzEwYjA5NTA4ZTMzODAxNTNmNzdkZDMzZGM1YjJkN2UwOTkuLjljNWIzNjY4MWIzMjIzZmZh
MGY3N2QyZDUzMWQ5ODA2ZDM2ZjFiNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2RlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2RlLmpzCkBAIC01OCw4ICs1OCwxMSBAQCBXZWJJbnNw
ZWN0b3IuVUlTb3VyY2VDb2RlID0gZnVuY3Rpb24odXJsLCByZXNvdXJjZSwgY29udGVudFByb3Zp
ZGVyLCBzb3VyY2VNYXBwaQogICAgICAqLwogICAgIHRoaXMuX2NvbnNvbGVNZXNzYWdlcyA9IFtd
OwogICAgIAotICAgIGlmICh0aGlzLnJlc291cmNlKCkpCi0gICAgICAgIHRoaXMucmVzb3VyY2Uo
KS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudHMuUmV2aXNpb25B
ZGRlZCwgdGhpcy5fcmV2aXNpb25BZGRlZCwgdGhpcyk7CisgICAgLyoqCisgICAgICogQHR5cGUg
e0FycmF5LjxXZWJJbnNwZWN0b3IuUmV2aXNpb24+fQorICAgICAqLworICAgIHRoaXMuaGlzdG9y
eSA9IFtdOworICAgIHRoaXMuX3Jlc3RvcmVSZXZpc2lvbkhpc3RvcnkoKTsKIH0KIAogV2ViSW5z
cGVjdG9yLlVJU291cmNlQ29kZS5FdmVudHMgPSB7CkBAIC0xMzYsMTAgKzEzOSw5NiBAQCBXZWJJ
bnNwZWN0b3IuVUlTb3VyY2VDb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2Nv
bnRlbnRQcm92aWRlci5yZXF1ZXN0Q29udGVudCh0aGlzLmZpcmVDb250ZW50QXZhaWxhYmxlLmJp
bmQodGhpcykpOwogICAgIH0sCiAKLSAgICBfcmV2aXNpb25BZGRlZDogZnVuY3Rpb24oZXZlbnQp
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtmdW5jdGlvbig/c3RyaW5nLGJvb2xlYW4sc3RyaW5n
KX0gY2FsbGJhY2sKKyAgICAgKi8KKyAgICByZXF1ZXN0T3JpZ2luYWxDb250ZW50OiBmdW5jdGlv
bihjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIHZhciByZXZpc2lvbiA9IC8qKiBAdHlwZSB7V2Vi
SW5zcGVjdG9yLlJldmlzaW9ufSAqLyBldmVudC5kYXRhOwotICAgICAgICB0aGlzLmNvbnRlbnRD
aGFuZ2VkKHJldmlzaW9uLmNvbnRlbnQgfHwgIiIsIHRoaXMuX3Jlc291cmNlLmNhbm9uaWNhbE1p
bWVUeXBlKCkpOworICAgICAgICB0aGlzLl9jb250ZW50UHJvdmlkZXIucmVxdWVzdENvbnRlbnQo
Y2FsbGJhY2spOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3
Q29udGVudAorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP3N0cmluZyl9IGNhbGxiYWNrCisgICAg
ICovCisgICAgX3NldENvbnRlbnQ6IGZ1bmN0aW9uKG5ld0NvbnRlbnQsIGNhbGxiYWNrKQorICAg
IHsKKyAgICAgICAgaWYgKCF0aGlzLmlzRWRpdGFibGUoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgdGhpcy5zZXRXb3JraW5nQ29weShuZXdDb250ZW50KTsKKyAgICAgICAgdGhpcy5j
b21taXRXb3JraW5nQ29weShjYWxsYmFjayk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBjb250ZW50CisgICAgICogQHBhcmFtIHtEYXRlPX0gdGltZXN0YW1wCisg
ICAgICogQHBhcmFtIHtib29sZWFuPX0gcmVzdG9yaW5nSGlzdG9yeQorICAgICAqLworICAgIGFk
ZFJldmlzaW9uOiBmdW5jdGlvbihjb250ZW50LCB0aW1lc3RhbXAsIHJlc3RvcmluZ0hpc3Rvcnkp
CisgICAgeworICAgICAgICBpZiAodGhpcy5oaXN0b3J5Lmxlbmd0aCkgeworICAgICAgICAgICAg
dmFyIGxhc3RSZXZpc2lvbiA9IHRoaXMuaGlzdG9yeVt0aGlzLmhpc3RvcnkubGVuZ3RoIC0gMV07
CisgICAgICAgICAgICBpZiAobGFzdFJldmlzaW9uLl9jb250ZW50ID09PSBjb250ZW50KQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB2YXIgcmV2aXNpb24gPSBu
ZXcgV2ViSW5zcGVjdG9yLlJldmlzaW9uKHRoaXMsIGNvbnRlbnQsIHRpbWVzdGFtcCB8fCBuZXcg
RGF0ZSgpKTsKKyAgICAgICAgdGhpcy5oaXN0b3J5LnB1c2gocmV2aXNpb24pOworCisgICAgICAg
IHRoaXMuY29udGVudENoYW5nZWQocmV2aXNpb24uY29udGVudCB8fCAiIiwgdGhpcy5jYW5vbmlj
YWxNaW1lVHlwZSgpKTsKKyAgICAgICAgaWYgKCFyZXN0b3JpbmdIaXN0b3J5KQorICAgICAgICAg
ICAgcmV2aXNpb24uX3BlcnNpc3QoKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLndvcmtzcGFjZS5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLldvcmtzcGFjZS5FdmVudHMuVUlT
b3VyY2VDb2RlQ29udGVudENvbW1pdHRlZCwgeyB1aVNvdXJjZUNvZGU6IHRoaXMsIGNvbnRlbnQ6
IGNvbnRlbnQgfSk7CisgICAgfSwKKworICAgIF9yZXN0b3JlUmV2aXNpb25IaXN0b3J5OiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICBpZiAoIXdpbmRvdy5sb2NhbFN0b3JhZ2UpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLlJldmlzaW9uLl9lbnN1cmVTdGFs
ZVJldmlzaW9uc0ZpbGV0ZXJlZE91dCgpOworICAgICAgICB2YXIgcmVnaXN0cnkgPSBXZWJJbnNw
ZWN0b3IuUmV2aXNpb24uX3JldmlzaW9uSGlzdG9yeVJlZ2lzdHJ5KCk7CisgICAgICAgIHZhciBo
aXN0b3J5SXRlbXMgPSByZWdpc3RyeVt0aGlzLnVybF07CisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBoaXN0b3J5SXRlbXMgJiYgaSA8IGhpc3RvcnlJdGVtcy5sZW5ndGg7ICsraSkKKyAgICAgICAg
ICAgIHRoaXMuYWRkUmV2aXNpb24od2luZG93LmxvY2FsU3RvcmFnZVtoaXN0b3J5SXRlbXNbaV0u
a2V5XSwgbmV3IERhdGUoaGlzdG9yeUl0ZW1zW2ldLnRpbWVzdGFtcCksIHRydWUpOworICAgIH0s
CisKKyAgICBfY2xlYXJSZXZpc2lvbkhpc3Rvcnk6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IGlmICghd2luZG93LmxvY2FsU3RvcmFnZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICB2YXIgcmVnaXN0cnkgPSBXZWJJbnNwZWN0b3IuUmV2aXNpb24uX3JldmlzaW9uSGlzdG9yeVJl
Z2lzdHJ5KCk7CisgICAgICAgIHZhciBoaXN0b3J5SXRlbXMgPSByZWdpc3RyeVt0aGlzLnVybF07
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBoaXN0b3J5SXRlbXMgJiYgaSA8IGhpc3RvcnlJdGVt
cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGRlbGV0ZSB3aW5kb3cubG9jYWxTdG9yYWdlW2hp
c3RvcnlJdGVtc1tpXS5rZXldOworICAgICAgICBkZWxldGUgcmVnaXN0cnlbdGhpcy51cmxdOwor
ICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlWyJyZXZpc2lvbi1oaXN0b3J5Il0gPSBKU09OLnN0
cmluZ2lmeShyZWdpc3RyeSk7CisgICAgfSwKKyAgIAorICAgIHJldmVydFRvT3JpZ2luYWw6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIHJldmVydChjb250ZW50KQorICAgICAg
ICB7CisgICAgICAgICAgICB0aGlzLl9zZXRDb250ZW50KGNvbnRlbnQsIGZ1bmN0aW9uKCkge30p
OworICAgICAgICB9CisgICAgICAgIHRoaXMucmVxdWVzdE9yaWdpbmFsQ29udGVudChyZXZlcnQu
YmluZCh0aGlzKSk7CisgICAgfSwKKworICAgIHJldmVydEFuZENsZWFySGlzdG9yeTogZnVuY3Rp
b24oY2FsbGJhY2spCisgICAgeworICAgICAgICBmdW5jdGlvbiByZXZlcnQoY29udGVudCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdGhpcy5fc2V0Q29udGVudChjb250ZW50LCBjbGVhckhpc3Rv
cnkuYmluZCh0aGlzKSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjbGVhckhpc3Rv
cnkoKQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl9jbGVhclJldmlzaW9uSGlzdG9yeSgp
OworICAgICAgICAgICAgdGhpcy5oaXN0b3J5ID0gW107CisgICAgICAgICAgICBjYWxsYmFjaygp
OworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5yZXF1ZXN0T3JpZ2luYWxDb250ZW50KHJldmVy
dC5iaW5kKHRoaXMpKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0yMDgsOCArMjk3LDcgQEAgV2Vi
SW5zcGVjdG9yLlVJU291cmNlQ29kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBuZXdDb250
ZW50ID0gdGhpcy5fd29ya2luZ0NvcHk7CiAgICAgICAgIHRoaXMuX2NvbW1pdHRpbmdXb3JraW5n
Q29weSA9IHRydWU7CiAgICAgICAgIHRoaXMud29ya2luZ0NvcHlDb21taXR0ZWQoY2FsbGJhY2sp
OwotICAgICAgICBpZiAodGhpcy5yZXNvdXJjZSgpKQotICAgICAgICAgICAgdGhpcy5yZXNvdXJj
ZSgpLmFkZFJldmlzaW9uKG5ld0NvbnRlbnQpOworICAgICAgICB0aGlzLmFkZFJldmlzaW9uKG5l
d0NvbnRlbnQpOwogICAgICAgICBkZWxldGUgdGhpcy5fY29tbWl0dGluZ1dvcmtpbmdDb3B5Owog
ICAgICAgICB0aGlzLmNvbnRlbnRDaGFuZ2VkKG5ld0NvbnRlbnQsIHRoaXMuX21pbWVUeXBlKTsK
IApAQCAtMjQwLDYgKzMyOCwxNCBAQCBXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlLnByb3RvdHlw
ZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAq
LworICAgIGNhbm9uaWNhbE1pbWVUeXBlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5jb250ZW50VHlwZSgpLmNhbm9uaWNhbE1pbWVUeXBlKCkgfHwgdGhpcy5fbWltZVR5
cGU7CisgICAgfSwKKworICAgIC8qKgogICAgICAqIEByZXR1cm4gez9zdHJpbmd9CiAgICAgICov
CiAgICAgY29udGVudDogZnVuY3Rpb24oKQpAQCAtNDMzLDMgKzUyOSwxNzAgQEAgV2ViSW5zcGVj
dG9yLlVJTG9jYXRpb24ucHJvdG90eXBlID0gewogV2ViSW5zcGVjdG9yLlJhd0xvY2F0aW9uID0g
ZnVuY3Rpb24oKQogewogfQorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGltcGxlbWVudHMg
e1dlYkluc3BlY3Rvci5Db250ZW50UHJvdmlkZXJ9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5V
SVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQorICogQHBhcmFtIHs/c3RyaW5nfHVuZGVmaW5lZH0g
Y29udGVudAorICogQHBhcmFtIHtEYXRlfSB0aW1lc3RhbXAKKyAqLworV2ViSW5zcGVjdG9yLlJl
dmlzaW9uID0gZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBjb250ZW50LCB0aW1lc3RhbXApCit7Cisg
ICAgdGhpcy5fdWlTb3VyY2VDb2RlID0gdWlTb3VyY2VDb2RlOworICAgIHRoaXMuX2NvbnRlbnQg
PSBjb250ZW50OworICAgIHRoaXMuX3RpbWVzdGFtcCA9IHRpbWVzdGFtcDsKK30KKworV2ViSW5z
cGVjdG9yLlJldmlzaW9uLl9yZXZpc2lvbkhpc3RvcnlSZWdpc3RyeSA9IGZ1bmN0aW9uKCkKK3sK
KyAgICBpZiAoIVdlYkluc3BlY3Rvci5SZXZpc2lvbi5fcmV2aXNpb25IaXN0b3J5UmVnaXN0cnlP
YmplY3QpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sb2NhbFN0b3JhZ2UpIHsKKyAgICAgICAgICAg
IHZhciByZXZpc2lvbkhpc3RvcnkgPSB3aW5kb3cubG9jYWxTdG9yYWdlWyJyZXZpc2lvbi1oaXN0
b3J5Il07CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5S
ZXZpc2lvbi5fcmV2aXNpb25IaXN0b3J5UmVnaXN0cnlPYmplY3QgPSByZXZpc2lvbkhpc3Rvcnkg
PyBKU09OLnBhcnNlKHJldmlzaW9uSGlzdG9yeSkgOiB7fTsKKyAgICAgICAgICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuUmV2aXNpb24uX3JldmlzaW9uSGlz
dG9yeVJlZ2lzdHJ5T2JqZWN0ID0ge307CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlJldmlzaW9uLl9yZXZpc2lvbkhpc3RvcnlSZWdpc3Ry
eU9iamVjdCA9IHt9OworICAgIH0KKyAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlJldmlzaW9uLl9y
ZXZpc2lvbkhpc3RvcnlSZWdpc3RyeU9iamVjdDsKK30KKworV2ViSW5zcGVjdG9yLlJldmlzaW9u
Ll9lbnN1cmVTdGFsZVJldmlzaW9uc0ZpbGV0ZXJlZE91dCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBp
ZiAoIXdpbmRvdy5sb2NhbFN0b3JhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChXZWJJ
bnNwZWN0b3IuUmV2aXNpb24uX3N0YWxlUmV2aXNpb25zRmlsdGVyZWRPdXQpCisgICAgICAgIHJl
dHVybjsKKyAgICBXZWJJbnNwZWN0b3IuUmV2aXNpb24uX3N0YWxlUmV2aXNpb25zRmlsdGVyZWRP
dXQgPSB0cnVlOworICAgIAorICAgIHZhciByZWdpc3RyeSA9IFdlYkluc3BlY3Rvci5SZXZpc2lv
bi5fcmV2aXNpb25IaXN0b3J5UmVnaXN0cnkoKTsKKyAgICB2YXIgZmlsdGVyZWRSZWdpc3RyeSA9
IHt9OworICAgIGZvciAodmFyIHVybCBpbiByZWdpc3RyeSkgeworICAgICAgICB2YXIgaGlzdG9y
eUl0ZW1zID0gcmVnaXN0cnlbdXJsXTsKKyAgICAgICAgdmFyIGZpbHRlcmVkSGlzdG9yeUl0ZW1z
ID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBoaXN0b3J5SXRlbXMgJiYgaSA8IGhpc3Rv
cnlJdGVtcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGhpc3RvcnlJdGVtID0gaGlz
dG9yeUl0ZW1zW2ldOworICAgICAgICAgICAgaWYgKGhpc3RvcnlJdGVtLmxvYWRlcklkID09PSBX
ZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwubWFpbkZyYW1lLmxvYWRlcklkKSB7CisgICAg
ICAgICAgICAgICAgZmlsdGVyZWRIaXN0b3J5SXRlbXMucHVzaChoaXN0b3J5SXRlbSk7CisgICAg
ICAgICAgICAgICAgZmlsdGVyZWRSZWdpc3RyeVt1cmxdID0gZmlsdGVyZWRIaXN0b3J5SXRlbXM7
CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBkZWxldGUgd2luZG93LmxvY2Fs
U3RvcmFnZVtoaXN0b3J5SXRlbS5rZXldOworICAgICAgICB9CisgICAgfQorICAgIFdlYkluc3Bl
Y3Rvci5SZXZpc2lvbi5fcmV2aXNpb25IaXN0b3J5UmVnaXN0cnlPYmplY3QgPSBmaWx0ZXJlZFJl
Z2lzdHJ5OworCisgICAgZnVuY3Rpb24gcGVyc2lzdCgpCisgICAgeworICAgICAgICB3aW5kb3cu
bG9jYWxTdG9yYWdlWyJyZXZpc2lvbi1oaXN0b3J5Il0gPSBKU09OLnN0cmluZ2lmeShmaWx0ZXJl
ZFJlZ2lzdHJ5KTsKKyAgICB9CisKKyAgICAvLyBTY2hlZHVsZSBhc3luYyBzdG9yYWdlLgorICAg
IHNldFRpbWVvdXQocGVyc2lzdCwgMCk7Cit9CisKK1dlYkluc3BlY3Rvci5SZXZpc2lvbi5wcm90
b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZX0KKyAgICAgKi8KKyAgICBnZXQgdWlTb3VyY2VDb2RlKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLl91aVNvdXJjZUNvZGU7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1
cm4ge0RhdGV9CisgICAgICovCisgICAgZ2V0IHRpbWVzdGFtcCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fdGltZXN0YW1wOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJu
IHs/c3RyaW5nfQorICAgICAqLworICAgIGdldCBjb250ZW50KCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLl9jb250ZW50IHx8IG51bGw7CisgICAgfSwKKworICAgIHJldmVydFRvVGhpczog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gcmV2ZXJ0KGNvbnRlbnQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl91aVNvdXJjZUNvZGUuX2NvbnRlbnQgIT09IGNv
bnRlbnQpCisgICAgICAgICAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlLl9zZXRDb250ZW50KGNv
bnRlbnQsIGZ1bmN0aW9uKCkge30pOworICAgICAgICB9CisgICAgICAgIHRoaXMucmVxdWVzdENv
bnRlbnQocmV2ZXJ0LmJpbmQodGhpcykpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0
dXJuIHs/c3RyaW5nfQorICAgICAqLworICAgIGNvbnRlbnRVUkw6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl91aVNvdXJjZUNvZGUudXJsOworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUeXBlfQorICAgICAqLwor
ICAgIGNvbnRlbnRUeXBlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5f
dWlTb3VyY2VDb2RlLmNvbnRlbnRUeXBlKCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7ZnVuY3Rpb24oP3N0cmluZywgYm9vbGVhbiwgc3RyaW5nKX0gY2FsbGJhY2sKKyAgICAg
Ki8KKyAgICByZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgeworICAgICAg
ICBjYWxsYmFjayh0aGlzLl9jb250ZW50IHx8ICIiLCBmYWxzZSwgdGhpcy51aVNvdXJjZUNvZGUu
Y2Fub25pY2FsTWltZVR5cGUoKSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBxdWVyeQorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2FzZVNlbnNpdGl2ZQorICAg
ICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNSZWdleAorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJy
YXkuPFdlYkluc3BlY3Rvci5Db250ZW50UHJvdmlkZXIuU2VhcmNoTWF0Y2g+KX0gY2FsbGJhY2sK
KyAgICAgKi8KKyAgICBzZWFyY2hJbkNvbnRlbnQ6IGZ1bmN0aW9uKHF1ZXJ5LCBjYXNlU2Vuc2l0
aXZlLCBpc1JlZ2V4LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGNhbGxiYWNrKFtdKTsKKyAg
ICB9LAorCisgICAgX3BlcnNpc3Q6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghd2lu
ZG93LmxvY2FsU3RvcmFnZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgdXJs
ID0gdGhpcy5jb250ZW50VVJMKCk7CisgICAgICAgIGlmICh1cmwuc3RhcnRzV2l0aCgiaW5zcGVj
dG9yOi8vIikpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIGxvYWRlcklkID0g
V2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLm1haW5GcmFtZS5sb2FkZXJJZDsKKyAgICAg
ICAgdmFyIHRpbWVzdGFtcCA9IHRoaXMudGltZXN0YW1wLmdldFRpbWUoKTsKKyAgICAgICAgdmFy
IGtleSA9ICJyZXZpc2lvbi1oaXN0b3J5fCIgKyB1cmwgKyAifCIgKyBsb2FkZXJJZCArICJ8IiAr
IHRpbWVzdGFtcDsKKworICAgICAgICB2YXIgcmVnaXN0cnkgPSBXZWJJbnNwZWN0b3IuUmV2aXNp
b24uX3JldmlzaW9uSGlzdG9yeVJlZ2lzdHJ5KCk7CisKKyAgICAgICAgdmFyIGhpc3RvcnlJdGVt
cyA9IHJlZ2lzdHJ5W3VybF07CisgICAgICAgIGlmICghaGlzdG9yeUl0ZW1zKSB7CisgICAgICAg
ICAgICBoaXN0b3J5SXRlbXMgPSBbXTsKKyAgICAgICAgICAgIHJlZ2lzdHJ5W3VybF0gPSBoaXN0
b3J5SXRlbXM7CisgICAgICAgIH0KKyAgICAgICAgaGlzdG9yeUl0ZW1zLnB1c2goe3VybDogdXJs
LCBsb2FkZXJJZDogbG9hZGVySWQsIHRpbWVzdGFtcDogdGltZXN0YW1wLCBrZXk6IGtleX0pOwor
CisgICAgICAgIGZ1bmN0aW9uIHBlcnNpc3QoKQorICAgICAgICB7CisgICAgICAgICAgICB3aW5k
b3cubG9jYWxTdG9yYWdlW2tleV0gPSB0aGlzLl9jb250ZW50OworICAgICAgICAgICAgd2luZG93
LmxvY2FsU3RvcmFnZVsicmV2aXNpb24taGlzdG9yeSJdID0gSlNPTi5zdHJpbmdpZnkocmVnaXN0
cnkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gU2NoZWR1bGUgYXN5bmMgc3RvcmFnZS4KKyAg
ICAgICAgc2V0VGltZW91dChwZXJzaXN0LmJpbmQodGhpcyksIDApOworICAgIH0KK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV29ya3NwYWNlLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Xb3Jrc3BhY2UuanMKaW5kZXggM2Ri
ZGVkNmM4Zjk4MzlhYjBiMzI1NzNlZTZmZTU2MmM1YTU4YjVkZC4uMTA5ZGI3MWYwYmNmZTU0M2M0
OWQwMmE0YjVlZGE0Nzk5NmM1YzM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Xb3Jrc3BhY2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Xb3Jrc3BhY2UuanMKQEAgLTEzMyw2ICsxMzMsNyBAQCBXZWJJbnNwZWN0b3Iu
V29ya3NwYWNlID0gZnVuY3Rpb24oKQogfQogCiBXZWJJbnNwZWN0b3IuV29ya3NwYWNlLkV2ZW50
cyA9IHsKKyAgICBVSVNvdXJjZUNvZGVDb250ZW50Q29tbWl0dGVkOiAidWlTb3VyY2VDb2RlQ29u
dGVudENvbW1pdHRlZCIsCiAgICAgV29ya3NwYWNlUmVzZXQ6ICJXb3Jrc3BhY2VSZXNldCIKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpp
bmRleCA1OWJlMWYzZGQwNDVlY2UzYzZhMzExMzU1YThmOGI5MTg3ZTY5MmNmLi4xZTZhMDEyOTQ2
NzU5YjAzZGM4M2QxNDBjYWI5MGE0ZmFiNjE5MzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtNDUyLDcgKzQ1Miw2IEBAIFdlYklu
c3BlY3Rvci5fZG9Mb2FkZWREb25lV2l0aENhcGFiaWxpdGllcyA9IGZ1bmN0aW9uKCkKICAgICB0
aGlzLmNvbnNvbGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29uc29sZU1vZGVsLkV2
ZW50cy5SZXBlYXRDb3VudFVwZGF0ZWQsIHRoaXMuX3VwZGF0ZUVycm9yQW5kV2FybmluZ0NvdW50
cywgdGhpcyk7CiAKICAgICB0aGlzLmRlYnVnZ2VyTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyTW9kZWwoKTsKLSAgICB0aGlzLnNjcmlwdFNuaXBwZXRNb2RlbCA9IG5ldyBXZWJJbnNw
ZWN0b3IuU2NyaXB0U25pcHBldE1vZGVsKCk7CiAgICAgdGhpcy5icmVha3BvaW50TWFuYWdlciA9
IG5ldyBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIoV2ViSW5zcGVjdG9yLnNldHRpbmdz
LmJyZWFrcG9pbnRzLCB0aGlzLmRlYnVnZ2VyTW9kZWwpOwogCiAgICAgV2ViSW5zcGVjdG9yLkNT
U0NvbXBsZXRpb25zLnJlcXVlc3RDU1NOYW1lQ29tcGxldGlvbnMoKTsKQEAgLTQ2Niw2ICs0NjUs
OCBAQCBXZWJJbnNwZWN0b3IuX2RvTG9hZGVkRG9uZVdpdGhDYXBhYmlsaXRpZXMgPSBmdW5jdGlv
bigpCiAgICAgdGhpcy5kb21BZ2VudCA9IG5ldyBXZWJJbnNwZWN0b3IuRE9NQWdlbnQoKTsKICAg
ICB0aGlzLmphdmFTY3JpcHRDb250ZXh0TWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuSmF2YVNj
cmlwdENvbnRleHRNYW5hZ2VyKHRoaXMucmVzb3VyY2VUcmVlTW9kZWwsIHRoaXMuY29uc29sZVZp
ZXcpOwogCisgICAgdGhpcy5zY3JpcHRTbmlwcGV0TW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlNj
cmlwdFNuaXBwZXRNb2RlbCgpOworCiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3Rlckluc3Bl
Y3RvckRpc3BhdGNoZXIodGhpcyk7CiAKICAgICB0aGlzLmNzc01vZGVsID0gbmV3IFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZU1vZGVsKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGJjMWRjZGE3NmExYjljN2I5MzEwMDg1NDlm
MWIzZDA5YmQ5OWM5OS4uY2MzNGQxNmM4ODMxYzkyZjE1ZjAxNzRjNzcxMjViNWZlNWMwNmQwMCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA3LTEwICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2
aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1vdmUgcmV2aXNpb25z
IHN1cHBvcnQgdG8gVUlTb3VyY2VDb2RlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTA4ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1y
ZXF1ZXN0LXJldmlzaW9uLWNvbnRlbnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1yZXF1ZXN0LXJldmlzaW9uLWNvbnRlbnQuaHRt
bDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0LXNuaXBwZXQtbW9kZWwuaHRt
bDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1hZGQtbmV3LXJ1bGUuaHRtbDoK
KyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1oaXN0b3J5Lmh0bWw6CisKIDIwMTIt
MDctMTAgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJ
T04gKHIxMjIxNjgpOiBMYXlvdXQgVGVzdCBodHRwL3Rlc3RzL21pc2Mvc2NyaXB0LWRlZmVyLmh0
bWwgaXMgZmFpbGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9uZXR3b3JrLXJlcXVlc3QtcmV2aXNpb24tY29udGVudC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstcmVxdWVz
dC1yZXZpc2lvbi1jb250ZW50LWV4cGVjdGVkLnR4dAppbmRleCA1ZWJhNjZhNTFmMWM0MjE1YWYy
Zjc5YWZiNDBhODBiNDIxN2M1NGQ3Li4yYjgwN2M3NGM5ZDYyNGRiNmY5MWQxZTUwYjkxYjA5Zjkw
MDU1ZWFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL25ldHdvcmstcmVxdWVzdC1yZXZpc2lvbi1jb250ZW50LWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstcmVxdWVzdC1y
ZXZpc2lvbi1jb250ZW50LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKIENPTlNPTEUgTUVT
U0FHRTogbGluZSAxOiBEb25lLgotVGVzdHMgaG93IHJlc291cmNlIHJldmlzaW9uIHJlcXVlc3Rz
IGNvbnRlbnQgaWYgaXQgd2FzIG5vdCB5ZXQgbG9hZGVkIGZvciByZXNvdXJjZSBpdHNlbGYuCitU
ZXN0cyBob3cgcmV2aXNpb24gcmVxdWVzdHMgY29udGVudCBpZiBvcmlnaW5hbCBjb250ZW50IHdh
cyBub3QgbG9hZGVkIHlldC4KIAogQnVnIDYzNjMxCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5z
cGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3NjcmlwdC5qcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXJlcXVlc3QtcmV2aXNpb24t
Y29udGVudC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9u
ZXR3b3JrLXJlcXVlc3QtcmV2aXNpb24tY29udGVudC5odG1sCmluZGV4IDhlM2Q2MjdhMTVjNzA2
ZmNmZTkxMWQ0ZGU4YmJjMDRkZjQzM2IxOWUuLjBlNmVhODE4NDdjMzhjN2Q3OWQ3MGMwMDdkODQ3
ZmZjM2Y3YzYwYTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvbmV0d29yay1yZXF1ZXN0LXJldmlzaW9uLWNvbnRlbnQuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstcmVxdWVzdC1yZXZp
c2lvbi1jb250ZW50Lmh0bWwKQEAgLTE4LDE0ICsxOCwxNSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICBmdW5jdGlvbiBzdGVwMihtc2cpCiAgICAgewogICAgICAgICB2YXIgcmVxdWVzdCA9IFdlYklu
c3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXF1ZXN0c1tXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdv
cmsucmVxdWVzdHMubGVuZ3RoIC0gMV07CisgICAgICAgIHVpU291cmNlQ29kZSA9IFdlYkluc3Bl
Y3Rvci53b3Jrc3BhY2UudWlTb3VyY2VDb2RlRm9yVVJMKHJlcXVlc3QudXJsKTsKICAgICAgICAg
cmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VGb3JVUkwocmVxdWVzdC51cmwpOwotICAg
ICAgICByZXNvdXJjZS5hZGRSZXZpc2lvbigiIik7Ci0gICAgICAgIHJlc291cmNlLmhpc3Rvcnlb
MF0ucmVxdWVzdENvbnRlbnQoc3RlcDMpOworICAgICAgICB1aVNvdXJjZUNvZGUuYWRkUmV2aXNp
b24oIiIpOworICAgICAgICB1aVNvdXJjZUNvZGUuaGlzdG9yeVswXS5yZXF1ZXN0Q29udGVudChz
dGVwMyk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc3RlcDMoY29udGVudCkKICAgICB7Ci0gICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHJlc291cmNlLnVybCk7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KHVpU291cmNlQ29kZS51cmwpOwogICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdChjb250ZW50KTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRl
c3QoKTsKICAgICB9CkBAIC0zMyw3ICszNCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogPC9zY3JpcHQ+
CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08cD5UZXN0cyBob3cgcmVzb3Vy
Y2UgcmV2aXNpb24gcmVxdWVzdHMgY29udGVudCBpZiBpdCB3YXMgbm90IHlldCBsb2FkZWQgZm9y
IHJlc291cmNlIGl0c2VsZi48L3A+Cis8cD5UZXN0cyBob3cgcmV2aXNpb24gcmVxdWVzdHMgY29u
dGVudCBpZiBvcmlnaW5hbCBjb250ZW50IHdhcyBub3QgbG9hZGVkIHlldC48L3A+CiA8YSBocmVm
PSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM2MzEiPkJ1ZyA2MzYz
MTwvYT4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9zY3JpcHQtc25pcHBldC1tb2RlbC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3NjcmlwdC1zbmlwcGV0LW1vZGVsLmh0bWwKaW5kZXggNzY3ZWZiODcyNmVm
YTViZjgwNzFiNTVkZWMzY2ZiZjY0NTUyZDNkZi4uMDg3ODcyNTRiMjM5OTY2ZjMwMGRhNWEzYmY0
ZGEyMmJmNmM0YmY4NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L3NjcmlwdC1zbmlwcGV0LW1vZGVsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL3NjcmlwdC1zbmlwcGV0LW1vZGVsLmh0bWwKQEAgLTI2LDcgKzI2LDcgQEAgZnVuY3Rp
b24gdGVzdCgpCiAgICAgICAgICAgICB2YXIgY29udGVudCA9ICIiOwogICAgICAgICAgICAgY29u
dGVudCArPSAiLy8gVGhpcyBzbmlwcGV0IGRvZXMgbm90aGluZy5cbiI7CiAgICAgICAgICAgICBj
b250ZW50ICs9ICJ2YXIgaSA9IDIrMjtcbiI7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2Ny
aXB0U25pcHBldE1vZGVsLl9zZXRTY3JpcHRTbmlwcGV0Q29udGVudChzbmlwcGV0SmF2YVNjcmlw
dFNvdXJjZTEsIGNvbnRlbnQpOworICAgICAgICAgICAgc25pcHBldEphdmFTY3JpcHRTb3VyY2Ux
LnNldFdvcmtpbmdDb3B5KGNvbnRlbnQpOwogCiAgICAgICAgICAgICB2YXIgc25pcHBldEphdmFT
Y3JpcHRTb3VyY2UyID0gV2ViSW5zcGVjdG9yLnNjcmlwdFNuaXBwZXRNb2RlbC5jcmVhdGVTY3Jp
cHRTbmlwcGV0KCk7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2NyaXB0U25pcHBldE1vZGVs
LnJlbmFtZVNjcmlwdFNuaXBwZXQoc25pcHBldEphdmFTY3JpcHRTb3VyY2UyLCAiU25pcHBldDIi
KTsKQEAgLTM3LDcgKzM3LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBjb250ZW50
ICs9ICIgICAgdmFyICBpID0gMisyO1xuIjsKICAgICAgICAgICAgIGNvbnRlbnQgKz0gIn07XG4i
OwogICAgICAgICAgICAgY29udGVudCArPSAiZG9lc05vdGhpbmc7XG4iOwotICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLnNjcmlwdFNuaXBwZXRNb2RlbC5fc2V0U2NyaXB0U25pcHBldENvbnRlbnQo
c25pcHBldEphdmFTY3JpcHRTb3VyY2UyLCBjb250ZW50KTsKKyAgICAgICAgICAgIHNuaXBwZXRK
YXZhU2NyaXB0U291cmNlMi5zZXRXb3JraW5nQ29weShjb250ZW50KTsKIAogICAgICAgICAgICAg
ZnVuY3Rpb24gZXZhbHVhdGVTbmlwcGV0QW5kRHVtcEV2YWx1YXRpb25EZXRhaWxzKHNuaXBwZXRK
YXZhU2NyaXB0U291cmNlLCBjYWxsYmFjaykKICAgICAgICAgICAgIHsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWFkZC1uZXctcnVsZS5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRkLW5ldy1ydWxlLmh0bWwKaW5kZXgg
Zjg0ZGNlMzk1NWFjMTlhMzkwOTI2NjdjZWNlYmVmMDIzYTRhNmQ0Mi4uNTVmZWZkM2M0NTEzZTM4
ZjBlOTUxMWU1ZjQzZGRhMjBkYjkxMzkwZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3N0eWxlcy9zdHlsZXMtYWRkLW5ldy1ydWxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRkLW5ldy1ydWxlLmh0bWwKQEAgLTgsNyArOCw3IEBAIGZ1
bmN0aW9uIHRlc3QoKQogewogICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoImVsZW1lbnRzIik7
CiAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcygiaW5zcGVjdGVk
Iiwgc3RlcDEpOwotICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuUmVz
b3VyY2UucHJvdG90eXBlLCAiYWRkUmV2aXNpb24iLCByZXZpc2lvbkFkZGVkKTsKKyAgICBJbnNw
ZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZS5wcm90b3R5cGUs
ICJhZGRSZXZpc2lvbiIsIHJldmlzaW9uQWRkZWQpOwogCiAgICAgdmFyIHRyZWVFbGVtZW50Owog
ICAgIHZhciBoYXNSZXNvdXJjZUNoYW5nZWQ7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3Ivc3R5bGVzL3N0eWxlcy1oaXN0b3J5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
c3R5bGVzL3N0eWxlcy1oaXN0b3J5Lmh0bWwKaW5kZXggOWY5MzliY2UwNjFjMTkxYTAyN2RkZGE0
MDc5MjQ4ZDg0MzJiNGE2ZS4uMzg4ZjcxYjcyMWRlM2U1NjE3OTRhNjEyMmM1MDNlZjhjNmVkMzM5
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtaGlzdG9y
eS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWhpc3Rvcnku
aHRtbApAQCAtOTUsMTAgKzk1LDEwIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIHsKICAgICAgICAg
ZnVuY3Rpb24gcmVzdWx0KCkKICAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIkhpc3RvcnkgbGVuZ3RoOiAiICsgc3R5bGVTb3VyY2UucmVzb3VyY2UoKS5oaXN0
b3J5Lmxlbmd0aCk7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlU291cmNl
LnJlc291cmNlKCkuaGlzdG9yeS5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIkhpc3RvcnkgbGVuZ3RoOiAiICsgc3R5bGVTb3VyY2UuaGlzdG9yeS5s
ZW5ndGgpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZVNvdXJjZS5oaXN0
b3J5Lmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIkl0ZW0gIiArIGkgKyAiOiIpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KHN0eWxlU291cmNlLnJlc291cmNlKCkuaGlzdG9yeVtpXS5jb250ZW50KTsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChzdHlsZVNvdXJjZS5oaXN0b3J5W2ld
LmNvbnRlbnQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICB9
Cg==
</data>
<flag name="review"
          id="159939"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>