<?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>128619</bug_id>
          
          <creation_ts>2014-02-11 13:28:50 -0800</creation_ts>
          <short_desc>Web Inspector: DataGrid should support editing tables with arbitrary columns</short_desc>
          <delta_ts>2014-02-13 13:33:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>979574</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-11 13:28:50 -0800</bug_when>
    <thetext>The current editing and cell advance code has the columns for DOMStorageView hardcoded. We should be using column identifiers and</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979575</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-02-11 13:29:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/16040498&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979600</commentid>
    <comment_count>2</comment_count>
      <attachid>223900</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-11 14:04:33 -0800</bug_when>
    <thetext>Created attachment 223900
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980042</commentid>
    <comment_count>3</comment_count>
      <attachid>224015</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-12 15:18:36 -0800</bug_when>
    <thetext>Created attachment 224015
heavily revised patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980418</commentid>
    <comment_count>4</comment_count>
      <attachid>224015</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-13 13:33:05 -0800</bug_when>
    <thetext>Comment on attachment 224015
heavily revised patch

Clearing flags on attachment: 224015

Committed r164052: &lt;http://trac.webkit.org/changeset/164052&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980419</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-13 13:33:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223900</attachid>
            <date>2014-02-11 14:04:33 -0800</date>
            <delta_ts>2014-02-12 15:18:34 -0800</delta_ts>
            <desc>patch</desc>
            <filename>bug-128619-20140211140517.patch</filename>
            <type>text/plain</type>
            <size>26779</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzNzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA2
ZmMwM2U0OTc0ODlmOTQxYzgzOTM5Yjk5YWJmMjRiYzMzN2Y4MmQ5Li43OWNjM2NhMzY5NDliNDg2
ZjgzNmQ1Yjc3MmMxNjhhZmFiMzZiODA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NiBAQAorMjAxNC0wMi0xMiAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBEYXRhR3JpZCBzaG91bGQgc3VwcG9ydCBlZGl0aW5nIHRh
YmxlcyB3aXRoIGFyYml0cmFyeSBjb2x1bW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg2MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGUgZGF0YSBncmlkIGVkaXRpbmcgY29kZSBzaG91bGQgd29y
ayB3aXRoIGFueSBjb2x1bW5zLCBidXQgd2FzIHByZXZpb3VzbHkKKyAgICAgICAgaGFyZGNvZGVk
IHdpdGggdGhlIGNvbHVtbiBpZGVudGlmaWVycyB1c2VkIGJ5IERPTVN0b3JhZ2VWaWV3LiBUaGlz
IHBhdGNoCisgICAgICAgIG1ha2VzIHRoZSBlZGl0aW5nIGNvZGUgd29yayB3aXRoIGFueSBjb2x1
bW4gaWRlbnRpZmllcnMuIEl0IGFsc28gZml4ZXMgc29tZQorICAgICAgICBidWdzIGluIHByZXZp
b3VzL25leHQgbmF2aWdhdGlvbiBkdXJpbmcgZGF0YSBlbnRyeS4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvRE9NU3RvcmFnZUNvbnRlbnRWaWV3LmpzOiBEb24ndCBibG93IGF3YXkgdGhlIGVu
dGlyZSB0YWJsZQorICAgICAgICB3aGVuZXZlciB0aGUgYmFja2VuZCBub3RpZmllcyB1cyBvZiBh
biB1cGRhdGUgdG8gdGhlIHN0b3JhZ2Ugb2JqZWN0LiBUaGlzCisgICAgICAgIGNhdXNlZCB0aGUg
ZWRpdGluZyBzdGF0ZSB0byBiZSBkZXN0cm95ZWQgd2hlbiB2YWx1ZXMgd2VyZSBlbnRlcmVkIGlu
dGVyYWN0aXZlbHkuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZp
ZXcucHJvdG90eXBlLnJlc2V0KTogSW5saW5lIHRoZSBjYWxsYmFjaworICAgICAgICBwYXNzZWQg
dG8gRE9NU3RvcmFnZU9iamVjdC5nZXRFbnRyaWVzKCkuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5pdGVtc0NsZWFyZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUuaXRlbUFkZGVkKTog
UmVxdWVzdCBhIHNvcnQKKyAgICAgICAgb2YgdGhlIHRhYmxlIHJvd3MgYWZ0ZXIgYmFja2VuZCB0
ZWxscyB1cyBhYm91dCBpdGVtIGFkZGl0aW9ucyBvciB1cGRhdGVzLgorCisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5pdGVtVXBkYXRlZCk6IFJl
cXVlc3QgYSBzb3J0CisgICAgICAgIG9mIHRoZSB0YWJsZSByb3dzIGFmdGVyIGJhY2tlbmQgdGVs
bHMgdXMgYWJvdXQgaXRlbSBhZGRpdGlvbnMgb3IgdXBkYXRlcy4KKworICAgICAgICAoV2ViSW5z
cGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUuX3NvcnREYXRhR3JpZCk6IFVz
ZSBEYXRhR3JpZCdzCisgICAgICAgIGJ1aWx0LWluIHNvcnRpbmcgZnVuY3Rpb24uCisKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlLl9kZWxldGVD
YWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRlbnRWaWV3LnBy
b3RvdHlwZS5fZWRpdGluZ0NhbGxiYWNrKTogRG9uJ3QgZm9yY2UKKyAgICAgICAgcmVjcmVhdGlv
biBvZiB0aGUgZW50aXJlIHRhYmxlIHdoZW5ldmVyIGVkaXRpbmcgZmluaXNoZXMuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL0RhdGFHcmlkLmpzOgorICAgICAgICAoLnNvcnREYXRhR3JpZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQuY3JlYXRlU29ydGFibGVEYXRhR3JpZCk6
IFVzZSB0aGUgYnVpbHQtaW4gRGF0YUdyaWQKKyAgICAgICAgc29ydE5vZGVzKCkgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLl9zdGFydEVk
aXRpbmdOb2RlQXRDb2x1bW5JbmRleCk6IFJlbmFtZWQKKyAgICAgICAgZnJvbSBfc3RhcnRFZGl0
aW5nQ29sdW1uT2ZEYXRhR3JpZE5vZGUuIEl0J3MgZWFzaWVyIHRvIHVuZGVyc3RhbmQgdGhlIG5h
dmlnYXRpb24KKyAgICAgICAgY29kZSB3aGVuIHByZXNlbnRlZCBpbiB0ZXJtcyBvZiBhZGp1c3Rp
bmcgY29sdW1uIGluZGV4ZXMgcmF0aGVyIHRoYW4gaWRlbnRpZmllcnMuCisKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuX3N0YXJ0RWRpdGluZyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLmRldGVybWluZU5leHRDZWxsKTogQWRkZWQu
IERlY2lkZXMgd2hpY2gKKyAgICAgICAgY29sdW1uIGFuZCByb3cgdG8gZWRpdCBuZXh0LCB3aGV0
aGVyIGEgbmV3IHBsYWNlaG9sZGVyIHJvdyBpcyBuZWVkZWQsIGFuZAorICAgICAgICB3aGV0aGVy
IHRoZSB0YWJsZSBjYW4gYmUgc29ydGVkIGJlZm9yZSB0aGUgbmV4dCBjZWxsIGVkaXQgYmVnaW5z
LgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLm1vdmVUb05leHRD
ZWxsKTogQWRkZWQuIFdyYXBwZXIgbWV0aG9kIGZvcgorICAgICAgICB0aGUgYWJvdmUgd2hpY2gg
aGFuZGxlcyBzb3J0aW5nIGFuZCBiZWdpbm5pbmcgdGhlIG5leHQgY2VsbCBlZGl0LgorCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLl9lZGl0aW5nQ29tbWl0dGVkKTog
VXNlIGJldHRlciBoZWxwZXIgbWV0aG9kcy4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZC5wcm90b3R5cGUuX2VkaXRpbmdDYW5jZWxsZWQpOiBBZGQgYW4gYXNzZXJ0LgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5nZXQgc29ydENvbHVtbklkZW50aWZpZXIp
OiBTaG9ydGVuLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5hZGRQ
bGFjZWhvbGRlck5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlw
ZS5yZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBl
Lik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLnNvcnROb2Rlcyk6
IFJlbW92ZSB1bmVjZXNzYXJ5IGNvcHlpbmcKKyAgICAgICAgb2YgYWxsIG5vZGVzIGludG8gYSBz
ZXBhcmF0ZSBhcnJheS4gRGVmZXIgc29ydGluZyBpZiB0aGUgdXNlciBpcyBpbiB0aGUKKyAgICAg
ICAgbWlkZGxlIG9mIGVkaXRpbmcgYSBjZWxsLiBNYWtlIHBsYWNlaG9sZGVyIG5vZGVzIGFsd2F5
cyBzb3J0IHRvIHRoZSBib3R0b20KKyAgICAgICAgcmVnYXJkbGVzcyBvZiB0aGUgc29ydCBjb2x1
bW4gaWRlbnRpZmllciBhbmQgc29ydCBkaXJlY3Rpb24uCisKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLl9hdHRhY2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlBsYWNlaG9sZGVyRGF0YUdyaWROb2RlKTogUmVuYW1lZCBmcm9tIENyZWF0aW9uRGF0YUdyaWRO
b2RlLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBsYWNlaG9sZGVyRGF0YUdyaWROb2RlLnByb3Rv
dHlwZS5tYWtlTm9ybWFsKToKKwogMjAxNC0wMi0xMSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBET01TdG9yYWdlVmlldyBzaG91bGQgbGlz
dGVuIGZvciBldmVudHMgZnJvbSBET01TdG9yYWdlT2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9ET01TdG9yYWdlQ29udGVudFZpZXcuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9ET01TdG9yYWdlQ29udGVudFZpZXcu
anMKaW5kZXggZjk1NWQ2OGVhMmY1YjVkN2IzYTBhYjVkODgzYTg0NzU1NGU5NzMwOS4uNDRjMTMw
NzEyOTYwODQ0YTNhZmFhNjU5MzFmOWEyN2MwM2M4MmViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRE9NU3RvcmFnZUNvbnRlbnRWaWV3LmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RPTVN0b3JhZ2VDb250ZW50Vmll
dy5qcwpAQCAtNDgsNyArNDgsMzUgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmll
dy5wcm90b3R5cGUgPSB7CiAKICAgICByZXNldDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAg
dGhpcy5yZXByZXNlbnRlZE9iamVjdC5nZXRFbnRyaWVzKHRoaXMuX3Nob3dET01TdG9yYWdlRW50
cmllcy5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5nZXRFbnRy
aWVzKGZ1bmN0aW9uKGVycm9yLCBlbnRyaWVzKSB7CisgICAgICAgICAgICBpZiAoZXJyb3IpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAoIXRoaXMuX2RhdGFHcmlk
KSB7CisgICAgICAgICAgICAgICAgdmFyIGNvbHVtbnMgPSB7fTsKKyAgICAgICAgICAgICAgICBj
b2x1bW5zWzBdID0ge3RpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIktleSIpLCBzb3J0YWJs
ZTogdHJ1ZX07CisgICAgICAgICAgICAgICAgY29sdW1uc1sxXSA9IHt0aXRsZTogV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJWYWx1ZSIpLCBzb3J0YWJsZTogdHJ1ZX07CisKKyAgICAgICAgICAgICAg
ICB0aGlzLl9kYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQoY29sdW1ucywgdGhp
cy5fZWRpdGluZ0NhbGxiYWNrLmJpbmQodGhpcyksIHRoaXMuX2RlbGV0ZUNhbGxiYWNrLmJpbmQo
dGhpcykpOworICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50LlNvcnRDaGFuZ2VkLCB0aGlzLl9zb3J0RGF0YUdy
aWQsIHRoaXMpOworCisgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2RhdGFHcmlkLmVsZW1lbnQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb25z
b2xlLmFzc2VydCh0aGlzLl9kYXRhR3JpZCk7CisKKyAgICAgICAgICAgIHZhciBub2RlcyA9IFtd
OworICAgICAgICAgICAgZm9yICh2YXIgZW50cnkgb2YgZW50cmllcykgeworICAgICAgICAgICAg
ICAgIHZhciBkYXRhID0geyIwIjogZW50cnlbMF0sICIxIjogZW50cnlbMV19OworICAgICAgICAg
ICAgICAgIHZhciBub2RlID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUoZGF0YSwgZmFs
c2UpOworICAgICAgICAgICAgICAgIG5vZGUuc2VsZWN0YWJsZSA9IHRydWU7CisgICAgICAgICAg
ICAgICAgdGhpcy5fZGF0YUdyaWQuYXBwZW5kQ2hpbGQobm9kZSk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHRoaXMuX3NvcnREYXRhR3JpZCgpOworICAgICAgICAgICAgdGhpcy5fZGF0
YUdyaWQuYWRkUGxhY2Vob2xkZXJOb2RlKCk7CisgICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC51
cGRhdGVMYXlvdXQoKTsKKyAgICAgICAgfS5iaW5kKHRoaXMpKTsKICAgICB9LAogCiAgICAgc2F2
ZVRvQ29va2llOiBmdW5jdGlvbihjb29raWUpCkBAIC02MSw3ICs4OSw3IEBAIFdlYkluc3BlY3Rv
ci5ET01TdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgIGl0ZW1zQ2xlYXJlZDog
ZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9kYXRhR3JpZC5yZW1vdmVDaGls
ZHJlbigpOwotICAgICAgICB0aGlzLl9kYXRhR3JpZC5hZGRDcmVhdGlvbk5vZGUoZmFsc2UpOwor
ICAgICAgICB0aGlzLl9kYXRhR3JpZC5hZGRQbGFjZWhvbGRlck5vZGUoKTsKICAgICB9LAogCiAg
ICAgaXRlbVJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQpAQCAtODgsMTAgKzExNiw4IEBAIFdlYklu
c3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBkYXRh
WzFdID0gdmFsdWU7CiAKICAgICAgICAgdmFyIGNoaWxkTm9kZSA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWROb2RlKGRhdGEsIGZhbHNlKTsKLQogICAgICAgICB0aGlzLl9kYXRhR3JpZC5pbnNl
cnRDaGlsZChjaGlsZE5vZGUsIHRoaXMuX2RhdGFHcmlkLmNoaWxkcmVuLmxlbmd0aCAtIDEpOwot
ICAgICAgICBpZiAodGhpcy5fZGF0YUdyaWQuc29ydE9yZGVyKQotICAgICAgICAgICAgdGhpcy5f
c29ydERhdGFHcmlkKCk7CisgICAgICAgIHRoaXMuX3NvcnREYXRhR3JpZCgpOwogICAgIH0sCiAK
ICAgICBpdGVtVXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCkBAIC0xMTMsNiArMTM5LDcgQEAgV2Vi
SW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICAgICAgY2hpbGROb2RlLnJlZnJlc2goKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAg
ICAgICB0aGlzLl9zb3J0RGF0YUdyaWQoKTsKICAgICB9LAogCiAgICAgdXBkYXRlTGF5b3V0OiBm
dW5jdGlvbigpCkBAIC0xMzAsNzAgKzE1NywxMiBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNv
bnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9zaG93RE9N
U3RvcmFnZUVudHJpZXM6IGZ1bmN0aW9uKGVycm9yLCBlbnRyaWVzKQotICAgIHsKLSAgICAgICAg
aWYgKGVycm9yKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX3VwZGF0ZURh
dGFHcmlkRm9yRE9NU3RvcmFnZUVudHJpZXMoZW50cmllcyk7Ci0KLSAgICAgICAgdGhpcy5fZGF0
YUdyaWQudXBkYXRlTGF5b3V0KCk7Ci0gICAgfSwKLQotICAgIF91cGRhdGVEYXRhR3JpZEZvckRP
TVN0b3JhZ2VFbnRyaWVzOiBmdW5jdGlvbihlbnRyaWVzKQotICAgIHsKLSAgICAgICAgaWYgKCF0
aGlzLl9kYXRhR3JpZCkgewotICAgICAgICAgICAgdmFyIGNvbHVtbnMgPSB7fTsKLSAgICAgICAg
ICAgIGNvbHVtbnNbMF0gPSB7dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiS2V5IiksIHNv
cnRhYmxlOiB0cnVlfTsKLSAgICAgICAgICAgIGNvbHVtbnNbMV0gPSB7dGl0bGU6IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiVmFsdWUiKSwgc29ydGFibGU6IHRydWV9OwotCi0gICAgICAgICAgICB0
aGlzLl9kYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQoY29sdW1ucywgdGhpcy5f
ZWRpdGluZ0NhbGxiYWNrLmJpbmQodGhpcyksIHRoaXMuX2RlbGV0ZUNhbGxiYWNrLmJpbmQodGhp
cykpOwotICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuRGF0YUdyaWQuRXZlbnQuU29ydENoYW5nZWQsIHRoaXMuX3NvcnREYXRhR3JpZCwgdGhp
cyk7Ci0KLSAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kYXRhR3Jp
ZC5lbGVtZW50KTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2Rh
dGFHcmlkKTsKLQotICAgICAgICB2YXIgbm9kZXMgPSBbXTsKLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgZGF0YSA9IHt9
OwotCi0gICAgICAgICAgICB2YXIga2V5ID0gZW50cmllc1tpXVswXTsKLSAgICAgICAgICAgIHZh
ciB2YWx1ZSA9IGVudHJpZXNbaV1bMV07Ci0KLSAgICAgICAgICAgIGRhdGFbMF0gPSBrZXk7Ci0g
ICAgICAgICAgICBkYXRhWzFdID0gdmFsdWU7Ci0KLSAgICAgICAgICAgIHZhciBub2RlID0gbmV3
IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUoZGF0YSwgZmFsc2UpOwotICAgICAgICAgICAgbm9k
ZS5zZWxlY3RhYmxlID0gdHJ1ZTsKLQotICAgICAgICAgICAgbm9kZXMucHVzaChub2RlKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmICh0aGlzLl9kYXRhR3JpZC5jcmVhdGlvbk5vZGUpCi0gICAg
ICAgICAgICB0aGlzLl9kYXRhR3JpZC5yZW1vdmVDaGlsZCh0aGlzLl9kYXRhR3JpZC5jcmVhdGlv
bk5vZGUpOwotCi0gICAgICAgIHRoaXMuX2luc2VydE5vZGVzSW50b0RhdGFHcmlkV2l0aFNvcnQo
bm9kZXMpOwotCi0gICAgICAgIGlmIChub2Rlcy5sZW5ndGggPiAwKQotICAgICAgICAgICAgbm9k
ZXNbMF0uc2VsZWN0ZWQgPSB0cnVlOwotICAgIH0sCi0KICAgICBfc29ydERhdGFHcmlkOiBmdW5j
dGlvbigpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fZGF0YUdyaWQuY3JlYXRpb25Ob2RlKQot
ICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQucmVtb3ZlQ2hpbGQodGhpcy5fZGF0YUdyaWQuY3Jl
YXRpb25Ob2RlKTsKLQotICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9kYXRhR3JpZC5jaGlsZHJl
bi5zbGljZSgpOwotICAgICAgICB0aGlzLl9pbnNlcnROb2Rlc0ludG9EYXRhR3JpZFdpdGhTb3J0
KG5vZGVzKTsKLSAgICB9LAotCi0gICAgX2luc2VydE5vZGVzSW50b0RhdGFHcmlkV2l0aFNvcnQ6
IGZ1bmN0aW9uKG5vZGVzKQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2Rh
dGFHcmlkLmNyZWF0aW9uTm9kZSk7CisgICAgICAgIGlmICghdGhpcy5fZGF0YUdyaWQuc29ydE9y
ZGVyKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBzb3J0Q29sdW1uSWRlbnRp
ZmllciA9IHRoaXMuX2RhdGFHcmlkLnNvcnRDb2x1bW5JZGVudGlmaWVyOworICAgICAgICB2YXIg
c29ydENvbHVtbklkZW50aWZpZXIgPSB0aGlzLl9kYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmll
ciB8fCAiMCI7CiAgICAgICAgIHZhciBzb3J0QXNjZW5kaW5nID0gdGhpcy5fZGF0YUdyaWQuc29y
dE9yZGVyID09PSAiYXNjZW5kaW5nIjsKIAogICAgICAgICBmdW5jdGlvbiBjb21wYXJhdG9yKGEs
IGIpCkBAIC0yMDIsMjQgKzE3MSwxNiBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRlbnRW
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBzb3J0QXNjZW5kaW5nID8gLXJl
c3VsdCA6IHJlc3VsdDsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChzb3J0Q29sdW1uSWRlbnRp
ZmllcikKLSAgICAgICAgICAgIG5vZGVzLnNvcnQoY29tcGFyYXRvcik7Ci0KLSAgICAgICAgdGhp
cy5fZGF0YUdyaWQucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBub2Rlcy5sZW5ndGg7IGkrKykKLSAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLmFwcGVuZENo
aWxkKG5vZGVzW2ldKTsKLSAgICAgICAgdGhpcy5fZGF0YUdyaWQuYWRkQ3JlYXRpb25Ob2RlKGZh
bHNlKTsKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQuc29ydE5vZGVzKGNvbXBhcmF0b3IsIHRoaXMu
X2RhdGFHcmlkLnNvcnRPcmRlcik7CiAgICAgfSwKIAogICAgIF9kZWxldGVDYWxsYmFjazogZnVu
Y3Rpb24obm9kZSkKICAgICB7Ci0gICAgICAgIGlmICghbm9kZSB8fCBub2RlLmlzQ3JlYXRpb25O
b2RlKQorICAgICAgICBpZiAoIW5vZGUgfHwgbm9kZS5pc1BsYWNlaG9sZGVyTm9kZSkKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdCkKICAg
ICAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZlSXRlbShub2RlLmRhdGFbMF0p
OwotCi0gICAgICAgIHRoaXMudXBkYXRlKCk7CiAgICAgfSwKIAogICAgIF9lZGl0aW5nQ2FsbGJh
Y2s6IGZ1bmN0aW9uKGVkaXRpbmdOb2RlLCBjb2x1bW5JZGVudGlmaWVyLCBvbGRUZXh0LCBuZXdU
ZXh0KQpAQCAtMjMyLDcgKzE5Myw2IEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgZG9tU3RvcmFnZS5zZXRJdGVtKG5ld1RleHQs
IGVkaXRpbmdOb2RlLmRhdGFbMV0pOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGRvbVN0
b3JhZ2Uuc2V0SXRlbShlZGl0aW5nTm9kZS5kYXRhWzBdLCBuZXdUZXh0KTsKLQotICAgICAgICB0
aGlzLnVwZGF0ZSgpOworICAgICAgICAvLyBUaGUgdGFibGUgd2lsbCBiZSByZS1zb3J0ZWQgd2hl
biB0aGUgYmFja2VuZCBmaXJlcyB0aGUgaXRlbVVwZGF0ZWQgZXZlbnQuCiAgICAgfQogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RhdGFHcmlkLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGF0YUdyaWQuanMKaW5kZXgg
MWZlY2JiNTJlNjc1OTYxYWUzZTRlMmUwNjM5YTk0M2Q4MTE1NDlhMi4uNzU5ZGFkOTI1Njg1YjI2
MjliMmE1ZDQ5ZmViYWU1ZWFhOTM0ODE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvRGF0YUdyaWQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvRGF0YUdyaWQuanMKQEAgLTExOSw3ICsxMTksNyBAQCBXZWJJbnNwZWN0
b3IuRGF0YUdyaWQuY3JlYXRlU29ydGFibGVEYXRhR3JpZCA9IGZ1bmN0aW9uKGNvbHVtbk5hbWVz
LCB2YWx1ZXMpCiAgICAgICAgIGNvbHVtbnNEYXRhW2NvbHVtbk5hbWVdID0gY29sdW1uOwogICAg
IH0KIAotICAgIHZhciBub2RlcyA9IFtdOworICAgIHZhciBkYXRhR3JpZCA9IG5ldyBXZWJJbnNw
ZWN0b3IuRGF0YUdyaWQoY29sdW1uc0RhdGEpOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFs
dWVzLmxlbmd0aCAvIG51bUNvbHVtbnM7ICsraSkgewogICAgICAgICB2YXIgZGF0YSA9IHt9Owog
ICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNvbHVtbk5hbWVzLmxlbmd0aDsgKytqKQpAQCAt
MTI3LDIzICsxMjcsMTUgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLmNyZWF0ZVNvcnRhYmxlRGF0
YUdyaWQgPSBmdW5jdGlvbihjb2x1bW5OYW1lcywgdmFsdWVzKQogCiAgICAgICAgIHZhciBub2Rl
ID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUoZGF0YSwgZmFsc2UpOwogICAgICAgICBu
b2RlLnNlbGVjdGFibGUgPSBmYWxzZTsKLSAgICAgICAgbm9kZXMucHVzaChub2RlKTsKLSAgICB9
Ci0KLSAgICB2YXIgZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkKGNvbHVtbnNE
YXRhKTsKLSAgICBmb3IgKHZhciBub2RlIG9mIG5vZGVzKQogICAgICAgICBkYXRhR3JpZC5hcHBl
bmRDaGlsZChub2RlKTsKLQotICAgIGRhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkRhdGFHcmlkLkV2ZW50LlNvcnRDaGFuZ2VkLCBzb3J0RGF0YUdyaWQsIHRoaXMpOworICAg
IH0KIAogICAgIGZ1bmN0aW9uIHNvcnREYXRhR3JpZCgpCiAgICAgewotICAgICAgICB2YXIgbm9k
ZXMgPSBkYXRhR3JpZC5jaGlsZHJlbi5zbGljZSgpOwogICAgICAgICB2YXIgc29ydENvbHVtbklk
ZW50aWZpZXIgPSBkYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmllcjsKLSAgICAgICAgdmFyIHNv
cnREaXJlY3Rpb24gPSBkYXRhR3JpZC5zb3J0T3JkZXIgPT09ICJhc2NlbmRpbmciID8gMSA6IC0x
OwotICAgICAgICB2YXIgY29sdW1uSXNOdW1lcmljID0gdHJ1ZTsKKyAgICAgICAgdmFyIHNvcnRB
c2NlbmRpbmcgPSBkYXRhR3JpZC5zb3J0T3JkZXIgPT09ICJhc2NlbmRpbmciID8gMSA6IC0xOwog
Ci0gICAgICAgIGZvciAodmFyIG5vZGUgb2Ygbm9kZXMpIHsKKyAgICAgICAgZm9yICh2YXIgbm9k
ZSBvZiBkYXRhR3JpZC5jaGlsZHJlbikgewogICAgICAgICAgICAgaWYgKGlzTmFOKE51bWJlcihu
b2RlLmRhdGFbc29ydENvbHVtbklkZW50aWZpZXJdIHx8ICIiKSkpCiAgICAgICAgICAgICAgICAg
Y29sdW1uSXNOdW1lcmljID0gZmFsc2U7CiAgICAgICAgIH0KQEAgLTE2NSwxMSArMTU3LDEwIEBA
IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5jcmVhdGVTb3J0YWJsZURhdGFHcmlkID0gZnVuY3Rpb24o
Y29sdW1uTmFtZXMsIHZhbHVlcykKICAgICAgICAgICAgIHJldHVybiBzb3J0RGlyZWN0aW9uICog
Y29tcGFyaXNvbjsKICAgICAgICAgfQogCi0gICAgICAgIG5vZGVzLnNvcnQoY29tcGFyYXRvcik7
Ci0gICAgICAgIGRhdGFHcmlkLnJlbW92ZUNoaWxkcmVuKCk7Ci0gICAgICAgIGZvciAodmFyIG5v
ZGUgb2Ygbm9kZXMpCi0gICAgICAgICAgICBkYXRhR3JpZC5hcHBlbmRDaGlsZChub2RlKTsKKyAg
ICAgICAgZGF0YUdyaWQuc29ydE5vZGVzKGNvbXBhcmF0b3IsIHNvcnRBc2NlbmRpbmcpOwogICAg
IH0KKworICAgIGRhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRhdGFHcmlk
LkV2ZW50LlNvcnRDaGFuZ2VkLCBzb3J0RGF0YUdyaWQsIHRoaXMpOwogICAgIHJldHVybiBkYXRh
R3JpZDsKIH0KIApAQCAtMTkyLDEzICsxODMsMTMgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fc3RhcnRFZGl0aW5nKGV2ZW50LnRhcmdldCk7CiAg
ICAgfSwKIAotICAgIF9zdGFydEVkaXRpbmdDb2x1bW5PZkRhdGFHcmlkTm9kZTogZnVuY3Rpb24o
bm9kZSwgY29sdW1uKQorICAgIF9zdGFydEVkaXRpbmdOb2RlQXRDb2x1bW5JbmRleDogZnVuY3Rp
b24obm9kZSwgY29sdW1uSW5kZXgpCiAgICAgewogICAgICAgICB0aGlzLl9lZGl0aW5nID0gdHJ1
ZTsKICAgICAgICAgdGhpcy5fZWRpdGluZ05vZGUgPSBub2RlOwogICAgICAgICB0aGlzLl9lZGl0
aW5nTm9kZS5zZWxlY3QoKTsKIAotICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMuX2VkaXRpbmdO
b2RlLl9lbGVtZW50LmNoaWxkcmVuW2NvbHVtbl07CisgICAgICAgIHZhciBlbGVtZW50ID0gdGhp
cy5fZWRpdGluZ05vZGUuX2VsZW1lbnQuY2hpbGRyZW5bY29sdW1uSW5kZXhdOwogICAgICAgICBX
ZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nKGVsZW1lbnQsIHRoaXMuX3N0YXJ0RWRpdGluZ0NvbmZp
ZyhlbGVtZW50KSk7CiAgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0
ZW50KGVsZW1lbnQsIDAsIGVsZW1lbnQsIDEpOwogICAgIH0sCkBAIC0yMTEsMTQgKzIwMiwxNCBA
QCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2Vk
aXRpbmdOb2RlID0gdGhpcy5kYXRhR3JpZE5vZGVGcm9tTm9kZSh0YXJnZXQpOwogICAgICAgICBp
ZiAoIXRoaXMuX2VkaXRpbmdOb2RlKSB7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuY3JlYXRpb25O
b2RlKQorICAgICAgICAgICAgaWYgKCF0aGlzLnBsYWNlaG9sZGVyTm9kZSkKICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB0aGlzLl9lZGl0aW5nTm9kZSA9IHRoaXMuY3JlYXRp
b25Ob2RlOworICAgICAgICAgICAgdGhpcy5fZWRpdGluZ05vZGUgPSB0aGlzLnBsYWNlaG9sZGVy
Tm9kZTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEZvcmNlIGVkaXRpbmcgdGhlIDFzdCBjb2x1
bW4gd2hlbiBlZGl0aW5nIHRoZSBjcmVhdGlvbiBub2RlCi0gICAgICAgIGlmICh0aGlzLl9lZGl0
aW5nTm9kZS5pc0NyZWF0aW9uTm9kZSkKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGFydEVk
aXRpbmdDb2x1bW5PZkRhdGFHcmlkTm9kZSh0aGlzLl9lZGl0aW5nTm9kZSwgMCk7CisgICAgICAg
IC8vIEZvcmNlIGVkaXRpbmcgdGhlIDFzdCBjb2x1bW4gd2hlbiBlZGl0aW5nIHRoZSBwbGFjZWhv
bGRlciBub2RlCisgICAgICAgIGlmICh0aGlzLl9lZGl0aW5nTm9kZS5pc1BsYWNlaG9sZGVyTm9k
ZSkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGFydEVkaXRpbmdOb2RlQXRDb2x1bW5JbmRl
eCh0aGlzLl9lZGl0aW5nTm9kZSwgMCk7CiAKICAgICAgICAgdGhpcy5fZWRpdGluZyA9IHRydWU7
CiAgICAgICAgIFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcoZWxlbWVudCwgdGhpcy5fc3RhcnRF
ZGl0aW5nQ29uZmlnKGVsZW1lbnQpKTsKQEAgLTIzMyw3NyArMjI0LDc2IEBAIFdlYkluc3BlY3Rv
ci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAKICAgICBfZWRpdGluZ0NvbW1pdHRlZDogZnVuY3Rp
b24oZWxlbWVudCwgbmV3VGV4dCwgb2xkVGV4dCwgY29udGV4dCwgbW92ZURpcmVjdGlvbikKICAg
ICB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIG1vcmUgY29sdW1uIGlkZW50aWZpZXJzIGhl
cmUgdGhyb3VnaG91dCB0aGlzIGZ1bmN0aW9uLgotICAgICAgICAvLyBOb3QgbmVlZGVkIHlldCBz
aW5jZSBvbmx5IGVkaXRhYmxlIERhdGFHcmlkIGlzIERPTSBTdG9yYWdlLCB3aGljaCBpcyBLZXkg
LSBWYWx1ZS4KLQogICAgICAgICB2YXIgY29sdW1uSWRlbnRpZmllciA9IGVsZW1lbnQuX19jb2x1
bW5JZGVudGlmaWVyOworICAgICAgICB2YXIgY29sdW1uSW5kZXggPSB0aGlzLm9yZGVyZWRDb2x1
bW5zLmluZGV4T2YoY29sdW1uSWRlbnRpZmllcik7CiAKICAgICAgICAgdmFyIHRleHRCZWZvcmVF
ZGl0aW5nID0gdGhpcy5fZWRpdGluZ05vZGUuZGF0YVtjb2x1bW5JZGVudGlmaWVyXSB8fCAiIjsK
ICAgICAgICAgdmFyIGN1cnJlbnRFZGl0aW5nTm9kZSA9IHRoaXMuX2VkaXRpbmdOb2RlOwogCi0g
ICAgICAgIGZ1bmN0aW9uIG1vdmVUb05leHRJZk5lZWRlZCh3YXNDaGFuZ2UpIHsKLSAgICAgICAg
ICAgIGlmICghbW92ZURpcmVjdGlvbikKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KKyAgICAg
ICAgLy8gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCB0aGUgbmV4dCBub2RlIGFuZCBjb2x1bW4gaW5k
ZXggdG8gZWRpdCwgYW5kIHdoZXRoZXIgaXQKKyAgICAgICAgLy8gaXMgYW4gYXBwcm9wcmlhdGUg
dGltZSB0byByZS1zb3J0IHRoZSB0YWJsZSByb3dzLiBXaGVuIGVkaXRpbmcsIHdlIHdhbnQgdG8K
KyAgICAgICAgLy8gcG9zdHBvbmUgc29ydGluZyB1bnRpbCB3ZSBzd2l0Y2ggcm93cyBvciB3cmFw
IGFyb3VuZCBhIHJvdy4KKyAgICAgICAgZnVuY3Rpb24gZGV0ZXJtaW5lTmV4dENlbGwodmFsdWVE
aWRDaGFuZ2UpIHsKICAgICAgICAgICAgIGlmIChtb3ZlRGlyZWN0aW9uID09PSAiZm9yd2FyZCIp
IHsKLSAgICAgICAgICAgICAgICBpZiAoY3VycmVudEVkaXRpbmdOb2RlLmlzQ3JlYXRpb25Ob2Rl
ICYmIGNvbHVtbklkZW50aWZpZXIgPT09ICIwIiAmJiAhd2FzQ2hhbmdlKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBpZiAoY29sdW1uSWRlbnRpZmllciA9
PT0gIjAiKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRFZGl0aW5nQ29s
dW1uT2ZEYXRhR3JpZE5vZGUoY3VycmVudEVkaXRpbmdOb2RlLCAiMSIpOworICAgICAgICAgICAg
ICAgIGlmIChjb2x1bW5JbmRleCA8IHRoaXMub3JkZXJlZENvbHVtbnMubGVuZ3RoIC0gMSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHtzaG91bGRTb3J0OiBmYWxzZSwgZWRpdGluZ05vZGU6
IGN1cnJlbnRFZGl0aW5nTm9kZSwgY29sdW1uSW5kZXg6IGNvbHVtbkluZGV4ICsgMX07CiAKKyAg
ICAgICAgICAgICAgICAvLyBDb250aW51ZSBieSBlZGl0aW5nIHRoZSBmaXJzdCBjb2x1bW4gb2Yg
dGhlIG5leHQgcm93IGlmIGl0IGV4aXN0cy4KICAgICAgICAgICAgICAgICB2YXIgbmV4dERhdGFH
cmlkTm9kZSA9IGN1cnJlbnRFZGl0aW5nTm9kZS50cmF2ZXJzZU5leHROb2RlKHRydWUsIG51bGws
IHRydWUpOwogICAgICAgICAgICAgICAgIGlmIChuZXh0RGF0YUdyaWROb2RlKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRFZGl0aW5nQ29sdW1uT2ZEYXRhR3JpZE5vZGUo
bmV4dERhdGFHcmlkTm9kZSwgIjAiKTsKLSAgICAgICAgICAgICAgICBpZiAoY3VycmVudEVkaXRp
bmdOb2RlLmlzQ3JlYXRpb25Ob2RlICYmIHdhc0NoYW5nZSkgewotICAgICAgICAgICAgICAgICAg
ICB0aGlzLmFkZENyZWF0aW9uTm9kZShmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzLl9zdGFydEVkaXRpbmdDb2x1bW5PZkRhdGFHcmlkTm9kZSh0aGlzLmNyZWF0aW9uTm9k
ZSwgIjAiKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4ge3Nob3VsZFNvcnQ6IHRydWUsIGVkaXRpbmdOb2RlOiBu
ZXh0RGF0YUdyaWROb2RlLCBjb2x1bW5JbmRleDogMH07CisKKyAgICAgICAgICAgICAgICAvLyBD
cmVhdGUgYSBuZXcgcGxhY2Vob2xkZXIgcm93IGlmIHdlIGFkdmFuY2UgYmV5b25kIHRoZSBwbGFj
ZWhvbGRlciByb3cncworICAgICAgICAgICAgICAgIC8vIGxhc3QgY29sdW1uIGFuZCBmaWxsZWQg
aXQgaW47IG90aGVyd2lzZSwgd3JhcCBiYWNrIGFyb3VuZC4KKyAgICAgICAgICAgICAgICBpZiAo
dmFsdWVEaWRDaGFuZ2UpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkUGxhY2Vob2xkZXJO
b2RlKCk7CisKKyAgICAgICAgICAgICAgICByZXR1cm4ge3Nob3VsZFNvcnQ6IHRydWUsIGVkaXRp
bmdOb2RlOiB0aGlzLnBsYWNlaG9sZGVyTm9kZSwgY29sdW1uSW5kZXg6IDB9OwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAobW92ZURpcmVjdGlvbiA9PT0gImJhY2t3YXJkIikgewot
ICAgICAgICAgICAgICAgIGlmIChjb2x1bW5JZGVudGlmaWVyID09PSAiMSIpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzLl9zdGFydEVkaXRpbmdDb2x1bW5PZkRhdGFHcmlkTm9kZShj
dXJyZW50RWRpdGluZ05vZGUsICIwIik7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBuZXh0RGF0
YUdyaWROb2RlID0gY3VycmVudEVkaXRpbmdOb2RlLnRyYXZlcnNlUHJldmlvdXNOb2RlKHRydWUs
IG51bGwsIHRydWUpOworICAgICAgICAgICAgICAgIGlmIChjb2x1bW5JbmRleCA+IDApCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB7c2hvdWxkU29ydDogZmFsc2UsIGVkaXRpbmdOb2RlOiBj
dXJyZW50RWRpdGluZ05vZGUsIGNvbHVtbkluZGV4OiBjb2x1bW5JbmRleCAtIDF9OwogCi0gICAg
ICAgICAgICAgICAgaWYgKG5leHREYXRhR3JpZE5vZGUpCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0aGlzLl9zdGFydEVkaXRpbmdDb2x1bW5PZkRhdGFHcmlkTm9kZShuZXh0RGF0YUdyaWRO
b2RlLCAiMSIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB2YXIg
cHJldmlvdXNEYXRhR3JpZE5vZGUgPSBjdXJyZW50RWRpdGluZ05vZGUudHJhdmVyc2VQcmV2aW91
c05vZGUodHJ1ZSwgbnVsbCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHtzaG91bGRT
b3J0OiB0cnVlLCBlZGl0aW5nTm9kZTogcHJldmlvdXNEYXRhR3JpZE5vZGUgfHwgY3VycmVudEVk
aXRpbmdOb2RlLCBjb2x1bW5JbmRleDogdGhpcy5vcmRlcmVkQ29sdW1ucy5sZW5ndGggLSAxfTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgfQogCi0gICAgICAgIGlmICh0ZXh0QmVmb3JlRWRpdGlu
ZyA9PSBuZXdUZXh0KSB7Ci0gICAgICAgICAgICB0aGlzLl9lZGl0aW5nQ2FuY2VsbGVkKGVsZW1l
bnQpOwotICAgICAgICAgICAgbW92ZVRvTmV4dElmTmVlZGVkLmNhbGwodGhpcywgZmFsc2UpOwot
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZmFsc2UsICJV
bmtub3duIGVkaXRpbmcgbW92ZSBkaXJlY3Rpb246ICIsIG1vdmVEaXJlY3Rpb24pOwogICAgICAg
ICB9CiAKLSAgICAgICAgLy8gVXBkYXRlIHRoZSB0ZXh0IGluIHRoZSBkYXRhZ3JpZCB0aGF0IHdl
IHR5cGVkCi0gICAgICAgIHRoaXMuX2VkaXRpbmdOb2RlLmRhdGFbY29sdW1uSWRlbnRpZmllcl0g
PSBuZXdUZXh0OworICAgICAgICBmdW5jdGlvbiBtb3ZlVG9OZXh0Q2VsbCh2YWx1ZURpZENoYW5n
ZSkgeworICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGRldGVybWluZU5leHRDZWxsLmNhbGwodGhp
cywgdmFsdWVEaWRDaGFuZ2UpOworICAgICAgICAgICAgaWYgKHJlc3VsdC5zaG91bGRTb3J0ICYm
IHRoaXMuX3NvcnRBZnRlckVkaXRpbmdDYWxsYmFjaykgeworICAgICAgICAgICAgICAgIHRoaXMu
X3NvcnRBZnRlckVkaXRpbmdDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlz
Ll9zb3J0QWZ0ZXJFZGl0aW5nQ2FsbGJhY2s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0
aGlzLl9zdGFydEVkaXRpbmdOb2RlQXRDb2x1bW5JbmRleChyZXN1bHQuZWRpdGluZ05vZGUsIHJl
c3VsdC5jb2x1bW5JbmRleCk7CisgICAgICAgIH0KIAotICAgICAgICAvLyBNYWtlIHRoZSBjYWxs
YmFjayAtIGV4cGVjdHMgYW4gZWRpdGluZyBub2RlICh0YWJsZSByb3cpLCB0aGUgY29sdW1uIG51
bWJlciB0aGF0IGlzIGJlaW5nIGVkaXRlZCwKLSAgICAgICAgLy8gdGhlIHRleHQgdGhhdCB1c2Vk
IHRvIGJlIHRoZXJlLCBhbmQgdGhlIG5ldyB0ZXh0LgotICAgICAgICB0aGlzLl9lZGl0Q2FsbGJh
Y2sodGhpcy5fZWRpdGluZ05vZGUsIGNvbHVtbklkZW50aWZpZXIsIHRleHRCZWZvcmVFZGl0aW5n
LCBuZXdUZXh0KTsKKyAgICAgICAgdGhpcy5fZWRpdGluZ0NhbmNlbGxlZChlbGVtZW50KTsKIAot
ICAgICAgICBpZiAodGhpcy5fZWRpdGluZ05vZGUuaXNDcmVhdGlvbk5vZGUpCi0gICAgICAgICAg
ICB0aGlzLmFkZENyZWF0aW9uTm9kZShmYWxzZSk7CisgICAgICAgIHZhciB0ZXh0RGlkQ2hhbmdl
ID0gdGV4dEJlZm9yZUVkaXRpbmcudHJpbSgpICE9PSBuZXdUZXh0LnRyaW0oKTsKKyAgICAgICAg
aWYgKHRleHREaWRDaGFuZ2UpIHsKKyAgICAgICAgICAgIC8vIFVwZGF0ZSB0YWJsZSdzIGRhdGEg
bW9kZWwsIGFuZCBkZWxlZ2F0ZSB0byB0aGUgY2FsbGJhY2sgdG8gdXBkYXRlIG90aGVyIG1vZGVs
cy4KKyAgICAgICAgICAgIGN1cnJlbnRFZGl0aW5nTm9kZS5kYXRhW2NvbHVtbklkZW50aWZpZXJd
ID0gbmV3VGV4dDsKKyAgICAgICAgICAgIHRoaXMuX2VkaXRDYWxsYmFjayhjdXJyZW50RWRpdGlu
Z05vZGUsIGNvbHVtbklkZW50aWZpZXIsIHRleHRCZWZvcmVFZGl0aW5nLCBuZXdUZXh0KTsKKyAg
ICAgICAgfQogCi0gICAgICAgIHRoaXMuX2VkaXRpbmdDYW5jZWxsZWQoZWxlbWVudCk7Ci0gICAg
ICAgIG1vdmVUb05leHRJZk5lZWRlZC5jYWxsKHRoaXMsIHRydWUpOworICAgICAgICBpZiAobW92
ZURpcmVjdGlvbikKKyAgICAgICAgICAgIG1vdmVUb05leHRDZWxsLmNhbGwodGhpcywgdGV4dERp
ZENoYW5nZSk7CiAgICAgfSwKIAogICAgIF9lZGl0aW5nQ2FuY2VsbGVkOiBmdW5jdGlvbihlbGVt
ZW50KQogICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZWRpdGluZ05vZGUuZWxl
bWVudCA9PT0gZWxlbWVudC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aE5vZGVOYW1lKCJ0ciIpKTsK
ICAgICAgICAgZGVsZXRlIHRoaXMuX2VkaXRpbmc7CiAgICAgICAgIHRoaXMuX2VkaXRpbmdOb2Rl
ID0gbnVsbDsKICAgICB9LAogCiAgICAgZ2V0IHNvcnRDb2x1bW5JZGVudGlmaWVyKCkKICAgICB7
Ci0gICAgICAgIGlmICghdGhpcy5fc29ydENvbHVtbkNlbGwpCi0gICAgICAgICAgICByZXR1cm4g
bnVsbDsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3NvcnRDb2x1bW5DZWxsLmNvbHVtbklkZW50aWZp
ZXI7CisgICAgICAgIHJldHVybiB0aGlzLl9zb3J0Q29sdW1uQ2VsbCA/IHRoaXMuX3NvcnRDb2x1
bW5DZWxsLmNvbHVtbklkZW50aWZpZXIgOiBudWxsOwogICAgIH0sCiAKICAgICBnZXQgc29ydE9y
ZGVyKCkKQEAgLTY2OCwxNiArNjU4LDE2IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICBwcmV2aW91c1Jlc2l6ZXJFbGVtZW50LnJpZ2h0TmVpZ2hib3Jp
bmdDb2x1bW5JRCA9IHRoaXMub3JkZXJlZENvbHVtbnMubGVuZ3RoIC0gMTsKICAgICB9LAogCi0g
ICAgYWRkQ3JlYXRpb25Ob2RlOiBmdW5jdGlvbihoYXNDaGlsZHJlbikKKyAgICBhZGRQbGFjZWhv
bGRlck5vZGU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLmNyZWF0aW9uTm9k
ZSkKLSAgICAgICAgICAgIHRoaXMuY3JlYXRpb25Ob2RlLm1ha2VOb3JtYWwoKTsKKyAgICAgICAg
aWYgKHRoaXMucGxhY2Vob2xkZXJOb2RlKQorICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlck5v
ZGUubWFrZU5vcm1hbCgpOwogCiAgICAgICAgIHZhciBlbXB0eURhdGEgPSB7fTsKICAgICAgICAg
Zm9yICh2YXIgaWRlbnRpZmllciBvZiB0aGlzLmNvbHVtbnMua2V5cygpKQogICAgICAgICAgICAg
ZW1wdHlEYXRhW2lkZW50aWZpZXJdID0gJyc7Ci0gICAgICAgIHRoaXMuY3JlYXRpb25Ob2RlID0g
bmV3IFdlYkluc3BlY3Rvci5DcmVhdGlvbkRhdGFHcmlkTm9kZShlbXB0eURhdGEsIGhhc0NoaWxk
cmVuKTsKLSAgICAgICAgdGhpcy5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0aW9uTm9kZSk7CisgICAg
ICAgIHRoaXMucGxhY2Vob2xkZXJOb2RlID0gbmV3IFdlYkluc3BlY3Rvci5QbGFjZWhvbGRlckRh
dGFHcmlkTm9kZShlbXB0eURhdGEsIGZhbHNlKTsKKyAgICAgICAgdGhpcy5hcHBlbmRDaGlsZCh0
aGlzLnBsYWNlaG9sZGVyTm9kZSk7CiAgICAgfSwKIAogICAgIGFwcGVuZENoaWxkOiBmdW5jdGlv
bihjaGlsZCkKQEAgLTc0Niw4ICs3MzYsOCBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90
eXBlID0gewogICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggPD0gMCkKICAgICAgICAg
ICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSBmYWxzZTsKIAotICAgICAgICBpZiAodGhpcy5jcmVhdGlv
bk5vZGUgPT09IGNoaWxkKQotICAgICAgICAgICAgZGVsZXRlIHRoaXMuY3JlYXRpb25Ob2RlOwor
ICAgICAgICBpZiAodGhpcy5wbGFjZWhvbGRlck5vZGUgPT09IGNoaWxkKQorICAgICAgICAgICAg
ZGVsZXRlIHRoaXMucGxhY2Vob2xkZXJOb2RlOwogICAgIH0sCiAKICAgICByZW1vdmVDaGlsZHJl
bjogZnVuY3Rpb24oKQpAQCAtNzk1LDQ1ICs3ODUsNDcgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlk
LnByb3RvdHlwZSA9IHsKIAogICAgIHNvcnROb2RlczogZnVuY3Rpb24oY29tcGFyYXRvciwgcmV2
ZXJzZU1vZGUpCiAgICAgewotICAgICAgICBmdW5jdGlvbiBjb21wYXJhdG9yV3JhcHBlcihhLCBi
KQorICAgICAgICBmdW5jdGlvbiBjb21wYXJhdG9yV3JhcHBlcihhUm93LCBiUm93KQogICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAoYS5fZGF0YUdyaWROb2RlLl9kYXRhLnN1bW1hcnlSb3cpCisg
ICAgICAgICAgICB2YXIgcmV2ZXJzZUZhY3RvciA9IHJldmVyc2VNb2RlID8gLTEgOiAxOworICAg
ICAgICAgICAgdmFyIGFOb2RlID0gYVJvdy5fZGF0YUdyaWROb2RlOworICAgICAgICAgICAgdmFy
IGJOb2RlID0gYlJvdy5fZGF0YUdyaWROb2RlOworICAgICAgICAgICAgaWYgKGFOb2RlLl9kYXRh
LnN1bW1hcnlSb3cgfHwgYU5vZGUuaXNQbGFjZWhvbGRlck5vZGUpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIDE7Ci0gICAgICAgICAgICBpZiAoYi5fZGF0YUdyaWROb2RlLl9kYXRhLnN1bW1hcnlS
b3cpCisgICAgICAgICAgICBpZiAoYk5vZGUuX2RhdGEuc3VtbWFyeVJvdyB8fCBiTm9kZS5pc1Bs
YWNlaG9sZGVyTm9kZSkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAKLSAgICAgICAgICAg
IHZhciBhRGF0YUdyaWROb2RlID0gYS5fZGF0YUdyaWROb2RlOwotICAgICAgICAgICAgdmFyIGJE
YXRhR3JpZE5vZGUgPSBiLl9kYXRhR3JpZE5vZGU7Ci0gICAgICAgICAgICByZXR1cm4gcmV2ZXJz
ZU1vZGUgPyBjb21wYXJhdG9yKGJEYXRhR3JpZE5vZGUsIGFEYXRhR3JpZE5vZGUpIDogY29tcGFy
YXRvcihhRGF0YUdyaWROb2RlLCBiRGF0YUdyaWROb2RlKTsKKyAgICAgICAgICAgIHJldHVybiBy
ZXZlcnNlRmFjdG9yICogY29tcGFyYXRvcihhTm9kZSwgYk5vZGUpOwogICAgICAgICB9CiAKLSAg
ICAgICAgdmFyIHRib2R5ID0gdGhpcy5kYXRhVGFibGVCb2R5RWxlbWVudDsKLSAgICAgICAgdmFy
IHRib2R5UGFyZW50ID0gdGJvZHkucGFyZW50RWxlbWVudDsKLSAgICAgICAgdGJvZHlQYXJlbnQu
cmVtb3ZlQ2hpbGQodGJvZHkpOworICAgICAgICBpZiAodGhpcy5fZWRpdGluZykgeworICAgICAg
ICAgICAgdGhpcy5fc29ydEFmdGVyRWRpdGluZ0NhbGxiYWNrID0gdGhpcy5zb3J0Tm9kZXMuYmlu
ZCh0aGlzLCBjb21wYXJhdG9yLCByZXZlcnNlTW9kZSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KIAorICAgICAgICB2YXIgdGJvZHkgPSB0aGlzLmRhdGFUYWJsZUJvZHlFbGVtZW50
OwogICAgICAgICB2YXIgY2hpbGROb2RlcyA9IHRib2R5LmNoaWxkTm9kZXM7Ci0gICAgICAgIHZh
ciBmaWxsZXJSb3cgPSBjaGlsZE5vZGVzLmxhc3RWYWx1ZTsKKyAgICAgICAgdmFyIGZpbGxlclJv
d0VsZW1lbnQgPSB0Ym9keS5sYXN0Q2hpbGQ7CiAKLSAgICAgICAgdmFyIHNvcnRlZFJvd3MgPSBB
cnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjaGlsZE5vZGVzLCAwLCBjaGlsZE5vZGVzLmxlbmd0
aCAtIDEpOwotICAgICAgICBzb3J0ZWRSb3dzLnNvcnQoY29tcGFyYXRvcldyYXBwZXIpOwotICAg
ICAgICB2YXIgc29ydGVkUm93c0xlbmd0aCA9IHNvcnRlZFJvd3MubGVuZ3RoOworICAgICAgICB2
YXIgc29ydGVkUm93RWxlbWVudHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjaGlsZE5v
ZGVzLCAwLCBjaGlsZE5vZGVzLmxlbmd0aCAtIDEpOworICAgICAgICBzb3J0ZWRSb3dFbGVtZW50
cy5zb3J0KGNvbXBhcmF0b3JXcmFwcGVyKTsKIAogICAgICAgICB0Ym9keS5yZW1vdmVDaGlsZHJl
bigpOworCiAgICAgICAgIHZhciBwcmV2aW91c1NpYmxpbmdOb2RlID0gbnVsbDsKLSAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBzb3J0ZWRSb3dzTGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAg
IHZhciByb3cgPSBzb3J0ZWRSb3dzW2ldOwotICAgICAgICAgICAgdmFyIG5vZGUgPSByb3cuX2Rh
dGFHcmlkTm9kZTsKKyAgICAgICAgZm9yICh2YXIgcm93RWxlbWVudCBvZiBzb3J0ZWRSb3dFbGVt
ZW50cykgeworICAgICAgICAgICAgdmFyIG5vZGUgPSByb3dFbGVtZW50Ll9kYXRhR3JpZE5vZGU7
CiAgICAgICAgICAgICBub2RlLnByZXZpb3VzU2libGluZyA9IHByZXZpb3VzU2libGluZ05vZGU7
CiAgICAgICAgICAgICBpZiAocHJldmlvdXNTaWJsaW5nTm9kZSkKICAgICAgICAgICAgICAgICBw
cmV2aW91c1NpYmxpbmdOb2RlLm5leHRTaWJsaW5nID0gbm9kZTsKLSAgICAgICAgICAgIHRib2R5
LmFwcGVuZENoaWxkKHJvdyk7CisgICAgICAgICAgICB0Ym9keS5hcHBlbmRDaGlsZChyb3dFbGVt
ZW50KTsKICAgICAgICAgICAgIHByZXZpb3VzU2libGluZ05vZGUgPSBub2RlOwogICAgICAgICB9
CisKICAgICAgICAgaWYgKHByZXZpb3VzU2libGluZ05vZGUpCiAgICAgICAgICAgICBwcmV2aW91
c1NpYmxpbmdOb2RlLm5leHRTaWJsaW5nID0gbnVsbDsKIAotICAgICAgICB0Ym9keS5hcHBlbmRD
aGlsZChmaWxsZXJSb3cpOwotICAgICAgICB0Ym9keVBhcmVudC5hcHBlbmRDaGlsZCh0Ym9keSk7
CisgICAgICAgIHRib2R5LmFwcGVuZENoaWxkKGZpbGxlclJvd0VsZW1lbnQpOyAvLyBXZSBleHBl
Y3QgdG8gZmluZCBhIGZpbGxlciByb3cgd2hlbiBhdHRhY2hpbmcgbm9kZXMuCiAgICAgfSwKIAog
ICAgIF9rZXlEb3duOiBmdW5jdGlvbihldmVudCkKQEAgLTExMTMsMjMgKzExMDUsMjMgQEAgV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGNvbnRleHRNZW51
ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7CiAKICAgICAgICAgdmFyIGdy
aWROb2RlID0gdGhpcy5kYXRhR3JpZE5vZGVGcm9tTm9kZShldmVudC50YXJnZXQpOwotICAgICAg
ICBpZiAodGhpcy5kYXRhR3JpZC5fcmVmcmVzaENhbGxiYWNrICYmICghZ3JpZE5vZGUgfHwgZ3Jp
ZE5vZGUgIT09IHRoaXMuY3JlYXRpb25Ob2RlKSkKKyAgICAgICAgaWYgKHRoaXMuZGF0YUdyaWQu
X3JlZnJlc2hDYWxsYmFjayAmJiAoIWdyaWROb2RlIHx8IGdyaWROb2RlICE9PSB0aGlzLnBsYWNl
aG9sZGVyTm9kZSkpCiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiUmVmcmVzaCIpLCB0aGlzLl9yZWZyZXNoQ2FsbGJhY2suYmluZCh0aGlz
KSk7CiAKICAgICAgICAgaWYgKGdyaWROb2RlICYmIGdyaWROb2RlLnNlbGVjdGFibGUgJiYgIWdy
aWROb2RlLmlzRXZlbnRXaXRoaW5EaXNjbG9zdXJlVHJpYW5nbGUoZXZlbnQpKSB7CiAgICAgICAg
ICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29weSBS
b3ciKSwgdGhpcy5fY29weVJvdy5iaW5kKHRoaXMsIGV2ZW50LnRhcmdldCkpOwogCiAgICAgICAg
ICAgICBpZiAodGhpcy5kYXRhR3JpZC5fZWRpdENhbGxiYWNrKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKGdyaWROb2RlID09PSB0aGlzLmNyZWF0aW9uTm9kZSkKKyAgICAgICAgICAgICAgICBpZiAo
Z3JpZE5vZGUgPT09IHRoaXMucGxhY2Vob2xkZXJOb2RlKQogICAgICAgICAgICAgICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWRkIE5ldyIpLCB0
aGlzLl9zdGFydEVkaXRpbmcuYmluZCh0aGlzLCBldmVudC50YXJnZXQpKTsKICAgICAgICAgICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBldmVudC50YXJn
ZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhOb2RlTmFtZSgidGQiKTsKICAgICAgICAgICAgICAg
ICAgICAgdmFyIGNvbHVtbklkZW50aWZpZXIgPSBlbGVtZW50Ll9fY29sdW1uSWRlbnRpZmllcjsK
LSAgICAgICAgICAgICAgICAgICAgdmFyIGNvbHVtblRpdGxlID0gdGhpcy5kYXRhR3JpZC5jb2x1
bW5zW2NvbHVtbklkZW50aWZpZXJdLnRpdGxlOworICAgICAgICAgICAgICAgICAgICB2YXIgY29s
dW1uVGl0bGUgPSB0aGlzLmRhdGFHcmlkLmNvbHVtbnMuZ2V0KGNvbHVtbklkZW50aWZpZXIpLnRp
dGxlOwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiRWRpdCDigJwlc+KAnSIpLmZvcm1hdChjb2x1bW5UaXRsZSksIHRoaXMu
X3N0YXJ0RWRpdGluZy5iaW5kKHRoaXMsIGV2ZW50LnRhcmdldCkpOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh0aGlzLmRhdGFHcmlkLl9kZWxldGVD
YWxsYmFjayAmJiBncmlkTm9kZSAhPT0gdGhpcy5jcmVhdGlvbk5vZGUpCisgICAgICAgICAgICBp
ZiAodGhpcy5kYXRhR3JpZC5fZGVsZXRlQ2FsbGJhY2sgJiYgZ3JpZE5vZGUgIT09IHRoaXMucGxh
Y2Vob2xkZXJOb2RlKQogICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJEZWxldGUiKSwgdGhpcy5fZGVsZXRlQ2FsbGJhY2suYmluZCh0
aGlzLCBncmlkTm9kZSkpOwogICAgICAgICB9CiAKQEAgLTE4MTgsNiArMTgxMCw3IEBAIFdlYklu
c3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIElmIHRoZXJl
IGlzIG5vIG5leHQgZ3JpZCBub2RlLCB0aGVuIGFwcGVuZCBiZWZvcmUgdGhlIGxhc3QgY2hpbGQg
c2luY2UgdGhlIGxhc3QgY2hpbGQgaXMgdGhlIGZpbGxlciByb3cuCiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRoaXMuZGF0YUdyaWQuZGF0YVRhYmxlQm9keUVsZW1lbnQubGFzdENoaWxkLmNsYXNz
TGlzdC5jb250YWlucygiZmlsbGVyIikpOworCiAgICAgICAgIGlmICghbmV4dEVsZW1lbnQpCiAg
ICAgICAgICAgICBuZXh0RWxlbWVudCA9IHRoaXMuZGF0YUdyaWQuZGF0YVRhYmxlQm9keUVsZW1l
bnQubGFzdENoaWxkOwogCkBAIC0xODY5LDIyICsxODYyLDE5IEBAIFdlYkluc3BlY3Rvci5EYXRh
R3JpZE5vZGUucHJvdG90eXBlID0gewogCiBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKIAotLyoqCi0g
KiBAY29uc3RydWN0b3IKLSAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlfQot
ICovCi1XZWJJbnNwZWN0b3IuQ3JlYXRpb25EYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihkYXRhLCBo
YXNDaGlsZHJlbikKKy8vIFVzZWQgdG8gY3JlYXRlIGEgbmV3IHRhYmxlIHJvdyB3aGVuIGVudGVy
aW5nIG5ldyBkYXRhIGJ5IGVkaXRpbmcgY2VsbHMuCitXZWJJbnNwZWN0b3IuUGxhY2Vob2xkZXJE
YXRhR3JpZE5vZGUgPSBmdW5jdGlvbihkYXRhKQogewotICAgIFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZE5vZGUuY2FsbCh0aGlzLCBkYXRhLCBoYXNDaGlsZHJlbik7Ci0gICAgdGhpcy5pc0NyZWF0aW9u
Tm9kZSA9IHRydWU7CisgICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5jYWxsKHRoaXMsIGRh
dGEsIGZhbHNlKTsKKyAgICB0aGlzLmlzUGxhY2Vob2xkZXJOb2RlID0gdHJ1ZTsKIH0KIAotV2Vi
SW5zcGVjdG9yLkNyZWF0aW9uRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKK1dlYkluc3BlY3Rv
ci5QbGFjZWhvbGRlckRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgbWFrZU5vcm1hbDog
ZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgZGVsZXRlIHRoaXMuaXNDcmVhdGlvbk5vZGU7Cisg
ICAgICAgIGRlbGV0ZSB0aGlzLmlzUGxhY2Vob2xkZXJOb2RlOwogICAgICAgICBkZWxldGUgdGhp
cy5tYWtlTm9ybWFsOwogICAgIH0KIH0KIAotV2ViSW5zcGVjdG9yLkNyZWF0aW9uRGF0YUdyaWRO
b2RlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3Rv
dHlwZTsKK1dlYkluc3BlY3Rvci5QbGFjZWhvbGRlckRhdGFHcmlkTm9kZS5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224015</attachid>
            <date>2014-02-12 15:18:36 -0800</date>
            <delta_ts>2014-02-13 13:33:05 -0800</delta_ts>
            <desc>heavily revised patch</desc>
            <filename>bug-128619-20140212151923.patch</filename>
            <type>text/plain</type>
            <size>37440</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzOTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAw
NzI0Y2IwMmUwYTMwM2Q0NmY3NGZkZmJlYTJjZjFlZjcxY2NlNzNhLi42MzFhZDBiOTBhMGYyMjE5
YzZjY2Q3MDg0YzM1ZTJmOTZkMzY1ZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4OSBAQAorMjAxNC0wMi0xMiAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBEYXRhR3JpZCBzaG91bGQgc3VwcG9ydCBlZGl0aW5nIHRh
YmxlcyB3aXRoIGFyYml0cmFyeSBjb2x1bW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg2MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGUgZGF0YSBncmlkIGVkaXRpbmcgY29kZSBzaG91bGQgd29y
ayB3aXRoIGFueSBjb2x1bW5zLCBidXQgd2FzIHByZXZpb3VzbHkKKyAgICAgICAgaGFyZGNvZGVk
IHdpdGggdGhlIGNvbHVtbiBpZGVudGlmaWVycyB1c2VkIGJ5IERPTVN0b3JhZ2VWaWV3LiBUaGlz
IHBhdGNoCisgICAgICAgIG1ha2VzIHRoZSBlZGl0aW5nIGNvZGUgd29yayB3aXRoIGFueSBjb2x1
bW4gaWRlbnRpZmllcnMuIEl0IGFsc28gZml4ZXMgc29tZQorICAgICAgICBidWdzIGluIHByZXZp
b3VzL25leHQgbmF2aWdhdGlvbiBkdXJpbmcgZGF0YSBlbnRyeS4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvRE9NU3RvcmFnZUNvbnRlbnRWaWV3LmNzczogSGlnaGxpZ2h0IG1pc3Npbmcga2V5
cyBhbmQgdmFsdWVzLgorICAgICAgICAoLmNvbnRlbnQtdmlldy5kb20tc3RvcmFnZSA+IC5kYXRh
LWdyaWQgdHIubWlzc2luZy12YWx1ZSB0ZC52YWx1ZS1jb2x1bW4pOgorICAgICAgICAoLmNvbnRl
bnQtdmlldy5kb20tc3RvcmFnZSA+IC5kYXRhLWdyaWQ6Zm9jdXMgdHIuc2VsZWN0ZWQubWlzc2lu
Zy12YWx1ZSB0ZC52YWx1ZS1jb2x1bW4pOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9ET01T
dG9yYWdlQ29udGVudFZpZXcuanM6IERvbid0IGJsb3cgYXdheSB0aGUgZW50aXJlIHRhYmxlCisg
ICAgICAgIHdoZW5ldmVyIHRoZSBiYWNrZW5kIG5vdGlmaWVzIHVzIG9mIGFuIHVwZGF0ZSB0byB0
aGUgc3RvcmFnZSBvYmplY3QuIFRoaXMKKyAgICAgICAgY2F1c2VkIHRoZSBlZGl0aW5nIHN0YXRl
IHRvIGJlIGRlc3Ryb3llZCB3aGVuIHZhbHVlcyB3ZXJlIGVudGVyZWQgaW50ZXJhY3RpdmVseS4K
KworICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUu
cmVzZXQpOiBJbmxpbmUgdGhlIGNhbGxiYWNrCisgICAgICAgIHBhc3NlZCB0byBET01TdG9yYWdl
T2JqZWN0LmdldEVudHJpZXMoKS4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29u
dGVudFZpZXcucHJvdG90eXBlLml0ZW1zQ2xlYXJlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5pdGVtQWRkZWQpOiBSZXF1ZXN0IGEgc29y
dAorICAgICAgICBvZiB0aGUgdGFibGUgcm93cyBhZnRlciBiYWNrZW5kIHRlbGxzIHVzIGFib3V0
IGl0ZW0gYWRkaXRpb25zIG9yIHVwZGF0ZXMuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01T
dG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlLml0ZW1VcGRhdGVkKTogUmVxdWVzdCBhIHNvcnQK
KyAgICAgICAgb2YgdGhlIHRhYmxlIHJvd3MgYWZ0ZXIgYmFja2VuZCB0ZWxscyB1cyBhYm91dCBp
dGVtIGFkZGl0aW9ucyBvciB1cGRhdGVzLgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3Rv
cmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fc29ydERhdGFHcmlkKTogVXNlIERhdGFHcmlkJ3MK
KyAgICAgICAgYnVpbHQtaW4gc29ydGluZyBmdW5jdGlvbi4KKworICAgICAgICAoV2ViSW5zcGVj
dG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUuX2RlbGV0ZUNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlLl9lZGl0
aW5nQ2FsbGJhY2spOiBEb24ndCBmb3JjZQorICAgICAgICByZWNyZWF0aW9uIG9mIHRoZSBlbnRp
cmUgdGFibGUgd2hlbmV2ZXIgZWRpdGluZyBmaW5pc2hlcy4gUGVyZm9ybSBtb3N0CisgICAgICAg
IG9mIHRoZSBlcnJvciBjaGVja2luZyBhbmQgZWRpdGluZyBsb2dpYyBoZXJlLCBpbmNsdWRpbmcg
d2hlbiB0byBpbnNlcnQgYQorICAgICAgICBuZXcgcGxhY2Vob2xkZXIgcm93LCBhbmQgd2hlbiB0
byBjb21taXQgdGhlIGVudGVyZWQgdmFsdWVzIHRvIERPTSBzdG9yYWdlLgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9ET01TdG9yYWdlT2JqZWN0LmpzOiBLZWVwIHRyYWNrIG9mIHRoZSBET00g
c3RvcmFnZSBlbnRyaWVzCisgICAgICAgIGluIHRoZSBtb2RlbCBzbyB3ZSBjYW4gZGV0ZWN0IGR1
cGxpY2F0ZSBlbnRyaWVzLiBSZW1vdmUgdW51c2VkIGBpZGAgYXJndW1lbnRzLgorCisgICAgICAg
IChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NU3RvcmFnZU9iamVjdC5wcm90b3R5cGUuZ2V0IGVudHJpZXMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QucHJvdG90eXBlLml0ZW1zQ2xlYXJlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5wcm90b3R5cGUuaXRlbVJlbW92ZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QucHJvdG90eXBlLnNldCB0aGlz
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LnByb3RvdHlwZS5pdGVt
QWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QucHJvdG90eXBl
LnNldCB2YXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QucHJvdG90
eXBlLml0ZW1VcGRhdGVkKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRGF0YUdyaWQuanM6
CisgICAgICAgICguc29ydERhdGFHcmlkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZC5jcmVhdGVTb3J0YWJsZURhdGFHcmlkKTogVXNlIHRoZSBidWlsdC1pbiBEYXRhR3JpZAorICAg
ICAgICBzb3J0Tm9kZXMoKSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
YXRhR3JpZC5wcm90b3R5cGUuX3N0YXJ0RWRpdGluZ05vZGVBdENvbHVtbkluZGV4KTogUmVuYW1l
ZAorICAgICAgICBmcm9tIF9zdGFydEVkaXRpbmdDb2x1bW5PZkRhdGFHcmlkTm9kZS4gSXQncyBl
YXNpZXIgdG8gdW5kZXJzdGFuZCB0aGUgbmF2aWdhdGlvbgorICAgICAgICBjb2RlIHdoZW4gcHJl
c2VudGVkIGluIHRlcm1zIG9mIGFkanVzdGluZyBjb2x1bW4gaW5kZXhlcyByYXRoZXIgdGhhbiBp
ZGVudGlmaWVycy4KKworICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5f
c3RhcnRFZGl0aW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUu
ZGV0ZXJtaW5lTmV4dENlbGwpOiBBZGRlZC4gRGVjaWRlcyB3aGljaAorICAgICAgICBjb2x1bW4g
YW5kIHJvdyB0byBlZGl0IG5leHQgYW5kIHdoZXRoZXIgdGhlIHRhYmxlIGNhbiBiZSBzb3J0ZWQg
YmVmb3JlIHRoZQorICAgICAgICBuZXh0IGNlbGwgZWRpdCBiZWdpbnMuCisKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUubW92ZVRvTmV4dENlbGwpOiBBZGRlZC4gV3Jh
cHBlciBtZXRob2QgZm9yCisgICAgICAgIHRoZSBhYm92ZSB3aGljaCBoYW5kbGVzIHNvcnRpbmcg
YW5kIGJlZ2lubmluZyB0aGUgbmV4dCBjZWxsIGVkaXQuCisKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EYXRhR3JpZC5wcm90b3R5cGUuX2VkaXRpbmdDb21taXR0ZWQpOiBVc2UgYmV0dGVyIGhlbHBl
ciBtZXRob2RzLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5fZWRp
dGluZ0NhbmNlbGxlZCk6IEFkZCBhbiBhc3NlcnQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0
YUdyaWQucHJvdG90eXBlLmdldCBzb3J0Q29sdW1uSWRlbnRpZmllcik6IFNob3J0ZW4uCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLmFkZFBsYWNlaG9sZGVyTm9kZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLnJlbW92ZUNoaWxkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuc29ydE5vZGVzKTogUmVtb3ZlIHVuZWNlc3Nh
cnkgY29weWluZworICAgICAgICBvZiBhbGwgbm9kZXMgaW50byBhIHNlcGFyYXRlIGFycmF5LiBE
ZWZlciBzb3J0aW5nIGlmIHRoZSB1c2VyIGlzIGluIHRoZQorICAgICAgICBtaWRkbGUgb2YgZWRp
dGluZyBhIGNlbGwuIE1ha2UgcGxhY2Vob2xkZXIgbm9kZXMgYWx3YXlzIHNvcnQgdG8gdGhlIGJv
dHRvbQorICAgICAgICByZWdhcmRsZXNzIG9mIHRoZSBzb3J0IGNvbHVtbiBpZGVudGlmaWVyIGFu
ZCBzb3J0IGRpcmVjdGlvbi4KKworICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5w
cm90b3R5cGUuX2F0dGFjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUGxhY2Vob2xkZXJEYXRh
R3JpZE5vZGUpOiBSZW5hbWVkIGZyb20gQ3JlYXRpb25EYXRhR3JpZE5vZGUuCisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUGxhY2Vob2xkZXJEYXRhR3JpZE5vZGUucHJvdG90eXBlLm1ha2VOb3JtYWwp
OgorCisgICAgICAgICogVXNlckludGVyZmFjZS9TdG9yYWdlTWFuYWdlci5qczogRG9uJ3QgcGFz
cyB1bnVzZWQgaWQgYXJndW1lbnQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFn
ZXIucHJvdG90eXBlLml0ZW1SZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdG9yYWdl
TWFuYWdlci5wcm90b3R5cGUuaXRlbUFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdG9y
YWdlTWFuYWdlci5wcm90b3R5cGUuaXRlbVVwZGF0ZWQpOgorCiAyMDE0LTAyLTExICBCcmlhbiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IERPTVN0b3Jh
Z2VWaWV3IHNob3VsZCBsaXN0ZW4gZm9yIGV2ZW50cyBmcm9tIERPTVN0b3JhZ2VPYmplY3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RPTVN0b3JhZ2VD
b250ZW50Vmlldy5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9ET01T
dG9yYWdlQ29udGVudFZpZXcuY3NzCmluZGV4IDIzNGRlYzY1ZGQwNzM0MDYzOWUyZWViYWZiNTAx
YTMwYzUyNDE5ZTUuLjE2NTk1MTE1ZDE1YjQ2MGRiYmNlOTM2YTJkNGE5NTQ5ZDAxZWViMDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RPTVN0b3JhZ2VD
b250ZW50Vmlldy5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
RE9NU3RvcmFnZUNvbnRlbnRWaWV3LmNzcwpAQCAtMzIsMyArMzIsMTUgQEAKICAgICBvdXRsaW5l
OiBub25lOwogICAgIGJvcmRlcjogbm9uZTsKIH0KKworLmNvbnRlbnQtdmlldy5kb20tc3RvcmFn
ZSA+IC5kYXRhLWdyaWQgdHIuZHVwbGljYXRlLWtleSB0ZC5rZXktY29sdW1uLAorLmNvbnRlbnQt
dmlldy5kb20tc3RvcmFnZSA+IC5kYXRhLWdyaWQgdHIubWlzc2luZy1rZXkgdGQua2V5LWNvbHVt
biwKKy5jb250ZW50LXZpZXcuZG9tLXN0b3JhZ2UgPiAuZGF0YS1ncmlkIHRyLm1pc3NpbmctdmFs
dWUgdGQudmFsdWUtY29sdW1uIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVlOworfQorCisu
Y29udGVudC12aWV3LmRvbS1zdG9yYWdlID4gLmRhdGEtZ3JpZDpmb2N1cyB0ci5zZWxlY3RlZC5k
dXBsaWNhdGUta2V5IHRkLmtleS1jb2x1bW4sCisuY29udGVudC12aWV3LmRvbS1zdG9yYWdlID4g
LmRhdGEtZ3JpZDpmb2N1cyB0ci5zZWxlY3RlZC5taXNzaW5nLWtleSB0ZC5rZXktY29sdW1uLAor
LmNvbnRlbnQtdmlldy5kb20tc3RvcmFnZSA+IC5kYXRhLWdyaWQ6Zm9jdXMgdHIuc2VsZWN0ZWQu
bWlzc2luZy12YWx1ZSB0ZC52YWx1ZS1jb2x1bW4geworICAgIGJhY2tncm91bmQtY29sb3I6ICNk
YWE7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9E
T01TdG9yYWdlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9ET01TdG9yYWdlQ29udGVudFZpZXcuanMKaW5kZXggNTU1ZTdjYjk1NTE5MmQxMjg4ZTM3
MDEzYWQ4YzRhODJjNGViZWJkZi4uNTQ0NTE3YzI3ZTE2NWJhYjg2OTI3MGIwZjczYTFmOTg3YjAz
MzE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRE9N
U3RvcmFnZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0RPTVN0b3JhZ2VDb250ZW50Vmlldy5qcwpAQCAtMzksNiArMzksMTAgQEAgV2ViSW5z
cGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50VmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0
KQogfTsKIAogV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFt
ZSA9ICJkb20tc3RvcmFnZSI7CitXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRlbnRWaWV3LkR1
cGxpY2F0ZUtleVN0eWxlQ2xhc3NOYW1lID0gImR1cGxpY2F0ZS1rZXkiOworV2ViSW5zcGVjdG9y
LkRPTVN0b3JhZ2VDb250ZW50Vmlldy5NaXNzaW5nS2V5U3R5bGVDbGFzc05hbWUgPSAibWlzc2lu
Zy1rZXkiOworV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5NaXNzaW5nVmFsdWVT
dHlsZUNsYXNzTmFtZSA9ICJtaXNzaW5nLXZhbHVlIjsKKwogCiBXZWJJbnNwZWN0b3IuRE9NU3Rv
cmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLkRPTVN0b3JhZ2VDb250ZW50VmlldywKQEAgLTQ4LDcgKzUyLDM3IEBAIFdlYkluc3BlY3Rv
ci5ET01TdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogCiAgICAgcmVzZXQ6IGZ1bmN0
aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuZ2V0RW50cmllcyh0
aGlzLl9zaG93RE9NU3RvcmFnZUVudHJpZXMuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMucmVw
cmVzZW50ZWRPYmplY3QuZ2V0RW50cmllcyhmdW5jdGlvbihlcnJvciwgZW50cmllcykgeworICAg
ICAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgaWYgKCF0aGlzLl9kYXRhR3JpZCkgeworICAgICAgICAgICAgICAgIHZhciBjb2x1bW5zID0g
e307CisgICAgICAgICAgICAgICAgY29sdW1ucy5rZXkgPSB7dGl0bGU6IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiS2V5IiksIHNvcnRhYmxlOiB0cnVlfTsKKyAgICAgICAgICAgICAgICBjb2x1bW5z
LnZhbHVlID0ge3RpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlZhbHVlIiksIHNvcnRhYmxl
OiB0cnVlfTsKKworICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkID0gbmV3IFdlYkluc3Bl
Y3Rvci5EYXRhR3JpZChjb2x1bW5zLCB0aGlzLl9lZGl0aW5nQ2FsbGJhY2suYmluZCh0aGlzKSwg
dGhpcy5fZGVsZXRlQ2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAgICAgICAgICAgICAgdGhpcy5f
ZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZlbnQuU29y
dENoYW5nZWQsIHRoaXMuX3NvcnREYXRhR3JpZCwgdGhpcyk7CisKKyAgICAgICAgICAgICAgICB0
aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2RhdGFHcmlkKTsKKwor
ICAgICAgICAgICAgdmFyIG5vZGVzID0gW107CisgICAgICAgICAgICBmb3IgKHZhciBlbnRyeSBv
ZiBlbnRyaWVzKSB7CisgICAgICAgICAgICAgICAgaWYgKCFlbnRyeVswXSB8fCAhZW50cnlbMV0p
CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIHZhciBkYXRh
ID0ge2tleTogZW50cnlbMF0sIHZhbHVlOiBlbnRyeVsxXX07CisgICAgICAgICAgICAgICAgdmFy
IG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZShkYXRhLCBmYWxzZSk7CisgICAg
ICAgICAgICAgICAgbm9kZS5zZWxlY3RhYmxlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0aGlz
Ll9kYXRhR3JpZC5hcHBlbmRDaGlsZChub2RlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdGhpcy5fc29ydERhdGFHcmlkKCk7CisgICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC5hZGRQ
bGFjZWhvbGRlck5vZGUoKTsKKyAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnVwZGF0ZUxheW91
dCgpOworICAgICAgICB9LmJpbmQodGhpcykpOwogICAgIH0sCiAKICAgICBzYXZlVG9Db29raWU6
IGZ1bmN0aW9uKGNvb2tpZSkKQEAgLTYxLDEzICs5NSwxMyBAQCBXZWJJbnNwZWN0b3IuRE9NU3Rv
cmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICBpdGVtc0NsZWFyZWQ6IGZ1bmN0aW9u
KGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fZGF0YUdyaWQucmVtb3ZlQ2hpbGRyZW4oKTsK
LSAgICAgICAgdGhpcy5fZGF0YUdyaWQuYWRkQ3JlYXRpb25Ob2RlKGZhbHNlKTsKKyAgICAgICAg
dGhpcy5fZGF0YUdyaWQuYWRkUGxhY2Vob2xkZXJOb2RlKCk7CiAgICAgfSwKIAogICAgIGl0ZW1S
ZW1vdmVkOiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIG5vZGUgb2Yg
dGhpcy5fZGF0YUdyaWQuY2hpbGRyZW4pIHsKLSAgICAgICAgICAgIGlmIChub2RlLmRhdGFbMF0g
PT09IGV2ZW50LmRhdGEua2V5KQorICAgICAgICAgICAgaWYgKG5vZGUuZGF0YS5rZXkgPT09IGV2
ZW50LmRhdGEua2V5KQogICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhR3JpZC5yZW1v
dmVDaGlsZChub2RlKTsKICAgICAgICAgfQogICAgIH0sCkBAIC03OSwxOSArMTEzLDEzIEBAIFdl
Ykluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAg
IC8vIEVuZm9yY2Uga2V5IHVuaXF1ZW5lc3MuCiAgICAgICAgIGZvciAodmFyIG5vZGUgb2YgdGhp
cy5fZGF0YUdyaWQuY2hpbGRyZW4pIHsKLSAgICAgICAgICAgIGlmIChub2RlLmRhdGFbMF0gPT09
IGtleSkKKyAgICAgICAgICAgIGlmIChub2RlLmRhdGEua2V5ID09PSBrZXkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIGRhdGEgPSB7fTsKLSAgICAg
ICAgZGF0YVswXSA9IGtleTsKLSAgICAgICAgZGF0YVsxXSA9IHZhbHVlOwotCi0gICAgICAgIHZh
ciBjaGlsZE5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZShkYXRhLCBmYWxzZSk7
Ci0KLSAgICAgICAgdGhpcy5fZGF0YUdyaWQuaW5zZXJ0Q2hpbGQoY2hpbGROb2RlLCB0aGlzLl9k
YXRhR3JpZC5jaGlsZHJlbi5sZW5ndGggLSAxKTsKLSAgICAgICAgaWYgKHRoaXMuX2RhdGFHcmlk
LnNvcnRPcmRlcikKLSAgICAgICAgICAgIHRoaXMuX3NvcnREYXRhR3JpZCgpOworICAgICAgICB2
YXIgZGF0YSA9IHtrZXk6IGtleSwgdmFsdWU6IHZhbHVlfTsKKyAgICAgICAgdGhpcy5fZGF0YUdy
aWQuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUoZGF0YSwgZmFsc2Up
KTsKKyAgICAgICAgdGhpcy5fc29ydERhdGFHcmlkKCk7CiAgICAgfSwKIAogICAgIGl0ZW1VcGRh
dGVkOiBmdW5jdGlvbihldmVudCkKQEAgLTEwMSw3ICsxMjksNyBAQCBXZWJJbnNwZWN0b3IuRE9N
U3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIga2V5Rm91bmQg
PSBmYWxzZTsKICAgICAgICAgZm9yICh2YXIgY2hpbGROb2RlIG9mIHRoaXMuX2RhdGFHcmlkLmNo
aWxkcmVuKSB7Ci0gICAgICAgICAgICBpZiAoY2hpbGROb2RlLmRhdGFbMF0gPT09IGtleSkgewor
ICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5kYXRhLmtleSA9PT0ga2V5KSB7CiAgICAgICAgICAg
ICAgICAgLy8gUmVtb3ZlIGFueSByb3dzIHRoYXQgYXJlIG5vdyBkdXBsaWNhdGVzLgogICAgICAg
ICAgICAgICAgIGlmIChrZXlGb3VuZCkgewogICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRh
R3JpZC5yZW1vdmVDaGlsZChjaGlsZE5vZGUpOwpAQCAtMTA5LDEwICsxMzcsMTEgQEAgV2ViSW5z
cGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAga2V5Rm91bmQgPSB0cnVlOwotICAgICAgICAgICAgICAg
IGNoaWxkTm9kZS5kYXRhWzFdID0gdmFsdWU7CisgICAgICAgICAgICAgICAgY2hpbGROb2RlLmRh
dGEudmFsdWUgPSB2YWx1ZTsKICAgICAgICAgICAgICAgICBjaGlsZE5vZGUucmVmcmVzaCgpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIHRoaXMuX3NvcnREYXRhR3JpZCgpOwog
ICAgIH0sCiAKICAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKQEAgLTEzMCwxMDkgKzE1OSw4
NCBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKIAog
ICAgIC8vIFByaXZhdGUKIAotICAgIF9zaG93RE9NU3RvcmFnZUVudHJpZXM6IGZ1bmN0aW9uKGVy
cm9yLCBlbnRyaWVzKQorICAgIF9zb3J0RGF0YUdyaWQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAg
ICAgIGlmIChlcnJvcikKKyAgICAgICAgaWYgKCF0aGlzLl9kYXRhR3JpZC5zb3J0T3JkZXIpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5fdXBkYXRlRGF0YUdyaWRGb3JET01T
dG9yYWdlRW50cmllcyhlbnRyaWVzKTsKLQotICAgICAgICB0aGlzLl9kYXRhR3JpZC51cGRhdGVM
YXlvdXQoKTsKLSAgICB9LAotCi0gICAgX3VwZGF0ZURhdGFHcmlkRm9yRE9NU3RvcmFnZUVudHJp
ZXM6IGZ1bmN0aW9uKGVudHJpZXMpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX2RhdGFHcmlk
KSB7Ci0gICAgICAgICAgICB2YXIgY29sdW1ucyA9IHt9OwotICAgICAgICAgICAgY29sdW1uc1sw
XSA9IHt0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJLZXkiKSwgc29ydGFibGU6IHRydWV9
OwotICAgICAgICAgICAgY29sdW1uc1sxXSA9IHt0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJWYWx1ZSIpLCBzb3J0YWJsZTogdHJ1ZX07Ci0KLSAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlk
ID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZChjb2x1bW5zLCB0aGlzLl9lZGl0aW5nQ2FsbGJh
Y2suYmluZCh0aGlzKSwgdGhpcy5fZGVsZXRlQ2FsbGJhY2suYmluZCh0aGlzKSk7Ci0gICAgICAg
ICAgICB0aGlzLl9kYXRhR3JpZC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZC5FdmVudC5Tb3J0Q2hhbmdlZCwgdGhpcy5fc29ydERhdGFHcmlkLCB0aGlzKTsKLQotICAgICAg
ICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZGF0YUdyaWQpOwotCi0g
ICAgICAgIHZhciBub2RlcyA9IFtdOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJp
ZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBkYXRhID0ge307Ci0KLSAgICAgICAg
ICAgIHZhciBrZXkgPSBlbnRyaWVzW2ldWzBdOwotICAgICAgICAgICAgdmFyIHZhbHVlID0gZW50
cmllc1tpXVsxXTsKKyAgICAgICAgdmFyIHNvcnRDb2x1bW5JZGVudGlmaWVyID0gdGhpcy5fZGF0
YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXIgfHwgImtleSI7CiAKLSAgICAgICAgICAgIGRhdGFb
MF0gPSBrZXk7Ci0gICAgICAgICAgICBkYXRhWzFdID0gdmFsdWU7Ci0KLSAgICAgICAgICAgIHZh
ciBub2RlID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUoZGF0YSwgZmFsc2UpOwotICAg
ICAgICAgICAgbm9kZS5zZWxlY3RhYmxlID0gdHJ1ZTsKLQotICAgICAgICAgICAgbm9kZXMucHVz
aChub2RlKTsKKyAgICAgICAgZnVuY3Rpb24gY29tcGFyYXRvcihhLCBiKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gYi5kYXRhW3NvcnRDb2x1bW5JZGVudGlmaWVyXS5sb2NhbGVDb21w
YXJlKGEuZGF0YVtzb3J0Q29sdW1uSWRlbnRpZmllcl0pOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKHRoaXMuX2RhdGFHcmlkLmNyZWF0aW9uTm9kZSkKLSAgICAgICAgICAgIHRoaXMuX2RhdGFH
cmlkLnJlbW92ZUNoaWxkKHRoaXMuX2RhdGFHcmlkLmNyZWF0aW9uTm9kZSk7Ci0KLSAgICAgICAg
dGhpcy5faW5zZXJ0Tm9kZXNJbnRvRGF0YUdyaWRXaXRoU29ydChub2Rlcyk7Ci0KLSAgICAgICAg
aWYgKG5vZGVzLmxlbmd0aCA+IDApCi0gICAgICAgICAgICBub2Rlc1swXS5zZWxlY3RlZCA9IHRy
dWU7CisgICAgICAgIHRoaXMuX2RhdGFHcmlkLnNvcnROb2Rlcyhjb21wYXJhdG9yLCB0aGlzLl9k
YXRhR3JpZC5zb3J0T3JkZXIpOwogICAgIH0sCiAKLSAgICBfc29ydERhdGFHcmlkOiBmdW5jdGlv
bigpCisgICAgX2RlbGV0ZUNhbGxiYWNrOiBmdW5jdGlvbihub2RlKQogICAgIHsKLSAgICAgICAg
aWYgKHRoaXMuX2RhdGFHcmlkLmNyZWF0aW9uTm9kZSkKLSAgICAgICAgICAgIHRoaXMuX2RhdGFH
cmlkLnJlbW92ZUNoaWxkKHRoaXMuX2RhdGFHcmlkLmNyZWF0aW9uTm9kZSk7CisgICAgICAgIGlm
ICghbm9kZSB8fCBub2RlLmlzUGxhY2Vob2xkZXJOb2RlKQorICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIHZhciBub2RlcyA9IHRoaXMuX2RhdGFHcmlkLmNoaWxkcmVuLnNsaWNlKCk7Ci0g
ICAgICAgIHRoaXMuX2luc2VydE5vZGVzSW50b0RhdGFHcmlkV2l0aFNvcnQobm9kZXMpOworICAg
ICAgICB0aGlzLl9kYXRhR3JpZC5yZW1vdmVDaGlsZChub2RlKTsKKyAgICAgICAgdGhpcy5yZXBy
ZXNlbnRlZE9iamVjdC5yZW1vdmVJdGVtKG5vZGUuZGF0YVsia2V5Il0pOwogICAgIH0sCiAKLSAg
ICBfaW5zZXJ0Tm9kZXNJbnRvRGF0YUdyaWRXaXRoU29ydDogZnVuY3Rpb24obm9kZXMpCisgICAg
X2VkaXRpbmdDYWxsYmFjazogZnVuY3Rpb24oZWRpdGluZ05vZGUsIGNvbHVtbklkZW50aWZpZXIs
IG9sZFRleHQsIG5ld1RleHQsIG1vdmVEaXJlY3Rpb24pCiAgICAgewotICAgICAgICBjb25zb2xl
LmFzc2VydCghdGhpcy5fZGF0YUdyaWQuY3JlYXRpb25Ob2RlKTsKLQotICAgICAgICB2YXIgc29y
dENvbHVtbklkZW50aWZpZXIgPSB0aGlzLl9kYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmllcjsK
LSAgICAgICAgdmFyIHNvcnRBc2NlbmRpbmcgPSB0aGlzLl9kYXRhR3JpZC5zb3J0T3JkZXIgPT09
ICJhc2NlbmRpbmciOwotCi0gICAgICAgIGZ1bmN0aW9uIGNvbXBhcmF0b3IoYSwgYikKLSAgICAg
ICAgewotICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGIuZGF0YVtzb3J0Q29sdW1uSWRlbnRpZmll
cl0ubG9jYWxlQ29tcGFyZShhLmRhdGFbc29ydENvbHVtbklkZW50aWZpZXJdKTsKLSAgICAgICAg
ICAgIHJldHVybiBzb3J0QXNjZW5kaW5nID8gLXJlc3VsdCA6IHJlc3VsdDsKKyAgICAgICAgdmFy
IGtleSA9IGVkaXRpbmdOb2RlLmRhdGFbImtleSJdLnRyaW0oKTsKKyAgICAgICAgdmFyIHZhbHVl
ID0gZWRpdGluZ05vZGUuZGF0YVsidmFsdWUiXS50cmltKCk7CisgICAgICAgIHZhciBwcmV2aW91
c1ZhbHVlID0gb2xkVGV4dC50cmltKCk7CisgICAgICAgIHZhciBlbnRlcmVkVmFsdWUgPSBuZXdU
ZXh0LnRyaW0oKTsKKyAgICAgICAgdmFyIGNvbHVtbkluZGV4ID0gdGhpcy5fZGF0YUdyaWQub3Jk
ZXJlZENvbHVtbnMuaW5kZXhPZihjb2x1bW5JZGVudGlmaWVyKTsKKyAgICAgICAgdmFyIG1heU1v
dmVUb05leHRSb3cgPSBtb3ZlRGlyZWN0aW9uID09PSAiZm9yd2FyZCIgJiYgY29sdW1uSW5kZXgg
PT0gdGhpcy5fZGF0YUdyaWQub3JkZXJlZENvbHVtbnMubGVuZ3RoIC0gMTsKKyAgICAgICAgdmFy
IG1heU1vdmVUb1ByZXZpb3VzUm93ID0gbW92ZURpcmVjdGlvbiA9PT0gImJhY2t3YXJkIiAmJiBj
b2x1bW5JbmRleCA9PSAwOworICAgICAgICB2YXIgd2lsbE1vdmVSb3cgPSBtYXlNb3ZlVG9OZXh0
Um93IHx8IG1heU1vdmVUb1ByZXZpb3VzUm93OworICAgICAgICB2YXIgc2hvdWxkQ29tbWl0Um93
ID0gd2lsbE1vdmVSb3cgJiYga2V5Lmxlbmd0aCAmJiB2YWx1ZS5sZW5ndGg7CisKKyAgICAgICAg
Ly8gUmVtb3ZlIHRoZSByb3cgaWYgaXRzIHZhbHVlcyBhcmUgbmV3bHkgY2xlYXJlZCwgYW5kIGl0
J3Mgbm90IGEgcGxhY2Vob2xkZXIuCisgICAgICAgIGlmICgha2V5Lmxlbmd0aCAmJiAhdmFsdWUu
bGVuZ3RoICYmIHdpbGxNb3ZlUm93KSB7CisgICAgICAgICAgICBpZiAocHJldmlvdXNWYWx1ZS5s
ZW5ndGggJiYgIWVkaXRpbmdOb2RlLmlzUGxhY2Vob2xkZXJOb2RlKQorICAgICAgICAgICAgICAg
IHRoaXMuX2RhdGFHcmlkLnJlbW92ZUNoaWxkKGVkaXRpbmdOb2RlKTsKKyAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChzb3J0Q29sdW1uSWRlbnRpZmllcikKLSAg
ICAgICAgICAgIG5vZGVzLnNvcnQoY29tcGFyYXRvcik7CisgICAgICAgIC8vIElmIHRoZSBrZXkg
ZmllbGQgd2FzIGRlbGV0ZWQsIHJlc3RvcmUgaXQgd2hlbiBjb21taXR0aW5nIHRoZSByb3cuCisg
ICAgICAgIGlmIChrZXkgPT09IGVudGVyZWRWYWx1ZSAmJiAha2V5Lmxlbmd0aCkgeworICAgICAg
ICAgICAgaWYgKHdpbGxNb3ZlUm93ICYmICFlZGl0aW5nTm9kZS5pc1BsYWNlaG9sZGVyTm9kZSkg
eworICAgICAgICAgICAgICAgIGVkaXRpbmdOb2RlLmRhdGEua2V5ID0gcHJldmlvdXNWYWx1ZTsK
KyAgICAgICAgICAgICAgICBlZGl0aW5nTm9kZS5yZWZyZXNoKCk7CisgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICBlZGl0aW5nTm9kZS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2Vi
SW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5NaXNzaW5nS2V5U3R5bGVDbGFzc05hbWUp
OworICAgICAgICB9IGVsc2UgaWYgKGtleS5sZW5ndGgpIHsKKyAgICAgICAgICAgIGVkaXRpbmdO
b2RlLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRl
bnRWaWV3Lk1pc3NpbmdLZXlTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICBlZGl0aW5nTm9k
ZS5fX3ByZXZpb3VzS2V5VmFsdWUgPSBwcmV2aW91c1ZhbHVlOworICAgICAgICB9CiAKLSAgICAg
ICAgdGhpcy5fZGF0YUdyaWQucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykKLSAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLmFw
cGVuZENoaWxkKG5vZGVzW2ldKTsKLSAgICAgICAgdGhpcy5fZGF0YUdyaWQuYWRkQ3JlYXRpb25O
b2RlKGZhbHNlKTsKLSAgICB9LAorICAgICAgICBpZiAodmFsdWUgPT09IGVudGVyZWRWYWx1ZSAm
JiAhdmFsdWUubGVuZ3RoKQorICAgICAgICAgICAgZWRpdGluZ05vZGUuZWxlbWVudC5jbGFzc0xp
c3QuYWRkKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcuTWlzc2luZ1ZhbHVlU3R5
bGVDbGFzc05hbWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlZGl0aW5nTm9kZS5lbGVt
ZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5N
aXNzaW5nVmFsdWVTdHlsZUNsYXNzTmFtZSk7CiAKLSAgICBfZGVsZXRlQ2FsbGJhY2s6IGZ1bmN0
aW9uKG5vZGUpCi0gICAgewotICAgICAgICBpZiAoIW5vZGUgfHwgbm9kZS5pc0NyZWF0aW9uTm9k
ZSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGVkaXRpbmdOb2RlLmlzUGxhY2Vo
b2xkZXJOb2RlICYmIHByZXZpb3VzVmFsdWUgIT09IGVudGVyZWRWYWx1ZSkKKyAgICAgICAgICAg
IHRoaXMuX2RhdGFHcmlkLmFkZFBsYWNlaG9sZGVyTm9kZSgpOwogCi0gICAgICAgIGlmICh0aGlz
LnJlcHJlc2VudGVkT2JqZWN0KQotICAgICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5y
ZW1vdmVJdGVtKG5vZGUuZGF0YVswXSk7CisgICAgICAgIGlmICghc2hvdWxkQ29tbWl0Um93KQor
ICAgICAgICAgICAgcmV0dXJuOyAvLyBPbmUgb2YgdGhlIGlucHV0cyBpcyBtaXNzaW5nLCBvciB3
ZSBhcmVuJ3QgbW92aW5nIGJldHdlZW4gcm93cy4KIAotICAgICAgICB0aGlzLnJlc2V0KCk7Ci0g
ICAgfSwKLQotICAgIF9lZGl0aW5nQ2FsbGJhY2s6IGZ1bmN0aW9uKGVkaXRpbmdOb2RlLCBjb2x1
bW5JZGVudGlmaWVyLCBvbGRUZXh0LCBuZXdUZXh0KQotICAgIHsKICAgICAgICAgdmFyIGRvbVN0
b3JhZ2UgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0OwotICAgICAgICBpZiAoY29sdW1uSWRlbnRp
ZmllciA9PT0gIjAiKSB7Ci0gICAgICAgICAgICBpZiAob2xkVGV4dCkKLSAgICAgICAgICAgICAg
ICBkb21TdG9yYWdlLnJlbW92ZUl0ZW0ob2xkVGV4dCk7CisgICAgICAgIGlmIChkb21TdG9yYWdl
LmVudHJpZXMuaGFzKGtleSkpIHsKKyAgICAgICAgICAgIGVkaXRpbmdOb2RlLmVsZW1lbnQuY2xh
c3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRlbnRWaWV3LkR1cGxpY2F0ZUtl
eVN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGVkaXRpbmdOb2RlLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuRE9N
U3RvcmFnZUNvbnRlbnRWaWV3LkR1cGxpY2F0ZUtleVN5bGVDbGFzc05hbWUpOwogCi0gICAgICAg
ICAgICBkb21TdG9yYWdlLnNldEl0ZW0obmV3VGV4dCwgZWRpdGluZ05vZGUuZGF0YVsxXSk7Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgZG9tU3RvcmFnZS5zZXRJdGVtKGVkaXRpbmdOb2Rl
LmRhdGFbMF0sIG5ld1RleHQpOworICAgICAgICBpZiAoZWRpdGluZ05vZGUuX19wcmV2aW91c0tl
eVZhbHVlICE9IGtleSkKKyAgICAgICAgICAgIGRvbVN0b3JhZ2UucmVtb3ZlSXRlbShlZGl0aW5n
Tm9kZS5fX3ByZXZpb3VzS2V5VmFsdWUpOwogCi0gICAgICAgIHRoaXMucmVzZXQoKTsKKyAgICAg
ICAgZG9tU3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUpOworICAgICAgICAvLyBUaGUgdGFibGUg
d2lsbCBiZSByZS1zb3J0ZWQgd2hlbiB0aGUgYmFja2VuZCBmaXJlcyB0aGUgaXRlbVVwZGF0ZWQg
ZXZlbnQuCiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0RPTVN0b3JhZ2VPYmplY3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9ET01TdG9yYWdlT2JqZWN0LmpzCmluZGV4IGViNjU1ZGUwMmU5YWE3N2VkYjc3
NmNjMWEzZmM5ZWM3MzgyYTc3YzguLjgyODI5YTc3YmVlMTRhZWQ1YzFkMjMwNzQ4OWRhNTIxNzIx
NzA2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RP
TVN0b3JhZ2VPYmplY3QuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvRE9NU3RvcmFnZU9iamVjdC5qcwpAQCAtMjgsNiArMjgsNyBAQCBXZWJJbnNwZWN0b3IuRE9N
U3RvcmFnZU9iamVjdCA9IGZ1bmN0aW9uKGlkLCBob3N0LCBpc0xvY2FsU3RvcmFnZSkKICAgICB0
aGlzLl9pZCA9IGlkOwogICAgIHRoaXMuX2hvc3QgPSBob3N0OwogICAgIHRoaXMuX2lzTG9jYWxT
dG9yYWdlID0gaXNMb2NhbFN0b3JhZ2U7CisgICAgdGhpcy5fZW50cmllcyA9IG5ldyBNYXA7CiB9
OwogCiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5UeXBlSWRlbnRpZmllciA9ICJkb20t
c3RvcmFnZSI7CkBAIC01NSw2ICs1NiwxMSBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVj
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9ob3N0OwogICAgIH0sCiAKKyAg
ICBnZXQgZW50cmllcygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZW50cmllczsKKyAg
ICB9LAorCiAgICAgc2F2ZUlkZW50aXR5VG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKICAgICB7
CiAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5Ib3N0Q29va2ll
S2V5XSA9IHRoaXMuaG9zdDsKQEAgLTg1LDI0ICs5MSwyOCBAQCBXZWJJbnNwZWN0b3IuRE9NU3Rv
cmFnZU9iamVjdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIERPTVN0b3JhZ2VBZ2VudC5zZXRET01T
dG9yYWdlSXRlbSh0aGlzLl9pZCwga2V5LCB2YWx1ZSk7CiAgICAgfSwKIAotICAgIGl0ZW1zQ2xl
YXJlZDogZnVuY3Rpb24oaWQpCisgICAgaXRlbXNDbGVhcmVkOiBmdW5jdGlvbigpCiAgICAgewot
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRE9NU3Rv
cmFnZU9iamVjdC5FdmVudC5JdGVtc0NsZWFyZWQsIHtpZDogaWR9KTsKKyAgICAgICAgdGhpcy5f
ZW50cmllcy5jbGVhcigpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5FdmVudC5JdGVtc0NsZWFyZWQpOwogICAgIH0s
CiAKLSAgICBpdGVtUmVtb3ZlZDogZnVuY3Rpb24oaWQsIGtleSkKKyAgICBpdGVtUmVtb3ZlZDog
ZnVuY3Rpb24oa2V5KQogICAgIHsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QuRXZlbnQuSXRlbVJlbW92ZWQsIHtpZDog
aWQsIGtleToga2V5fSk7CisgICAgICAgIHRoaXMuX2VudHJpZXMuZGVsZXRlKGtleSk7CisgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5ET01TdG9yYWdl
T2JqZWN0LkV2ZW50Lkl0ZW1SZW1vdmVkLCB7a2V5OiBrZXl9KTsKICAgICB9LAogCi0gICAgaXRl
bUFkZGVkOiBmdW5jdGlvbihpZCwga2V5LCB2YWx1ZSkKKyAgICBpdGVtQWRkZWQ6IGZ1bmN0aW9u
KGtleSwgdmFsdWUpCiAgICAgewotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5FdmVudC5JdGVtQWRkZWQsIHtpZDogaWQs
IGtleToga2V5LCB2YWx1ZTogdmFsdWV9KTsKKyAgICAgICAgdGhpcy5fZW50cmllcy5zZXQoa2V5
LCB2YWx1ZSk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5ET01TdG9yYWdlT2JqZWN0LkV2ZW50Lkl0ZW1BZGRlZCwge2tleToga2V5LCB2YWx1ZTog
dmFsdWV9KTsKICAgICB9LAogCi0gICAgaXRlbVVwZGF0ZWQ6IGZ1bmN0aW9uKGlkLCBrZXksIG9s
ZFZhbHVlLCB2YWx1ZSkKKyAgICBpdGVtVXBkYXRlZDogZnVuY3Rpb24oa2V5LCBvbGRWYWx1ZSwg
dmFsdWUpCiAgICAgewotICAgICAgICB2YXIgZGF0YSA9IHtpZDogaWQsIGtleToga2V5LCBvbGRW
YWx1ZTogb2xkVmFsdWUsIHZhbHVlOiB2YWx1ZX07CisgICAgICAgIHRoaXMuX2VudHJpZXMuc2V0
KGtleSwgdmFsdWUpOworICAgICAgICB2YXIgZGF0YSA9IHtrZXk6IGtleSwgb2xkVmFsdWU6IG9s
ZFZhbHVlLCB2YWx1ZTogdmFsdWV9OwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5FdmVudC5JdGVtVXBkYXRlZCwgZGF0
YSk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0RhdGFHcmlkLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
RGF0YUdyaWQuanMKaW5kZXggMWZlY2JiNTJlNjc1OTYxYWUzZTRlMmUwNjM5YTk0M2Q4MTE1NDlh
Mi4uODI3OGMyM2NmM2NmNThhZjc3NjZhYjMxNWZkMWY4YzE0MTU4NTgzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGF0YUdyaWQuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGF0YUdyaWQuanMKQEAgLTExOSw3ICsx
MTksNyBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuY3JlYXRlU29ydGFibGVEYXRhR3JpZCA9IGZ1
bmN0aW9uKGNvbHVtbk5hbWVzLCB2YWx1ZXMpCiAgICAgICAgIGNvbHVtbnNEYXRhW2NvbHVtbk5h
bWVdID0gY29sdW1uOwogICAgIH0KIAotICAgIHZhciBub2RlcyA9IFtdOworICAgIHZhciBkYXRh
R3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQoY29sdW1uc0RhdGEpOwogICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aCAvIG51bUNvbHVtbnM7ICsraSkgewogICAgICAg
ICB2YXIgZGF0YSA9IHt9OwogICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNvbHVtbk5hbWVz
Lmxlbmd0aDsgKytqKQpAQCAtMTI3LDIzICsxMjcsMTUgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlk
LmNyZWF0ZVNvcnRhYmxlRGF0YUdyaWQgPSBmdW5jdGlvbihjb2x1bW5OYW1lcywgdmFsdWVzKQog
CiAgICAgICAgIHZhciBub2RlID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUoZGF0YSwg
ZmFsc2UpOwogICAgICAgICBub2RlLnNlbGVjdGFibGUgPSBmYWxzZTsKLSAgICAgICAgbm9kZXMu
cHVzaChub2RlKTsKLSAgICB9Ci0KLSAgICB2YXIgZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9y
LkRhdGFHcmlkKGNvbHVtbnNEYXRhKTsKLSAgICBmb3IgKHZhciBub2RlIG9mIG5vZGVzKQogICAg
ICAgICBkYXRhR3JpZC5hcHBlbmRDaGlsZChub2RlKTsKLQotICAgIGRhdGFHcmlkLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50LlNvcnRDaGFuZ2VkLCBzb3J0RGF0
YUdyaWQsIHRoaXMpOworICAgIH0KIAogICAgIGZ1bmN0aW9uIHNvcnREYXRhR3JpZCgpCiAgICAg
ewotICAgICAgICB2YXIgbm9kZXMgPSBkYXRhR3JpZC5jaGlsZHJlbi5zbGljZSgpOwogICAgICAg
ICB2YXIgc29ydENvbHVtbklkZW50aWZpZXIgPSBkYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmll
cjsKLSAgICAgICAgdmFyIHNvcnREaXJlY3Rpb24gPSBkYXRhR3JpZC5zb3J0T3JkZXIgPT09ICJh
c2NlbmRpbmciID8gMSA6IC0xOwotICAgICAgICB2YXIgY29sdW1uSXNOdW1lcmljID0gdHJ1ZTsK
KyAgICAgICAgdmFyIHNvcnRBc2NlbmRpbmcgPSBkYXRhR3JpZC5zb3J0T3JkZXIgPT09ICJhc2Nl
bmRpbmciID8gMSA6IC0xOwogCi0gICAgICAgIGZvciAodmFyIG5vZGUgb2Ygbm9kZXMpIHsKKyAg
ICAgICAgZm9yICh2YXIgbm9kZSBvZiBkYXRhR3JpZC5jaGlsZHJlbikgewogICAgICAgICAgICAg
aWYgKGlzTmFOKE51bWJlcihub2RlLmRhdGFbc29ydENvbHVtbklkZW50aWZpZXJdIHx8ICIiKSkp
CiAgICAgICAgICAgICAgICAgY29sdW1uSXNOdW1lcmljID0gZmFsc2U7CiAgICAgICAgIH0KQEAg
LTE2NSwxMSArMTU3LDEwIEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5jcmVhdGVTb3J0YWJsZURh
dGFHcmlkID0gZnVuY3Rpb24oY29sdW1uTmFtZXMsIHZhbHVlcykKICAgICAgICAgICAgIHJldHVy
biBzb3J0RGlyZWN0aW9uICogY29tcGFyaXNvbjsKICAgICAgICAgfQogCi0gICAgICAgIG5vZGVz
LnNvcnQoY29tcGFyYXRvcik7Ci0gICAgICAgIGRhdGFHcmlkLnJlbW92ZUNoaWxkcmVuKCk7Ci0g
ICAgICAgIGZvciAodmFyIG5vZGUgb2Ygbm9kZXMpCi0gICAgICAgICAgICBkYXRhR3JpZC5hcHBl
bmRDaGlsZChub2RlKTsKKyAgICAgICAgZGF0YUdyaWQuc29ydE5vZGVzKGNvbXBhcmF0b3IpOwog
ICAgIH0KKworICAgIGRhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRhdGFH
cmlkLkV2ZW50LlNvcnRDaGFuZ2VkLCBzb3J0RGF0YUdyaWQsIHRoaXMpOwogICAgIHJldHVybiBk
YXRhR3JpZDsKIH0KIApAQCAtMTkyLDEzICsxODMsMTUgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlk
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fc3RhcnRFZGl0aW5nKGV2ZW50LnRhcmdldCk7
CiAgICAgfSwKIAotICAgIF9zdGFydEVkaXRpbmdDb2x1bW5PZkRhdGFHcmlkTm9kZTogZnVuY3Rp
b24obm9kZSwgY29sdW1uKQorICAgIF9zdGFydEVkaXRpbmdOb2RlQXRDb2x1bW5JbmRleDogZnVu
Y3Rpb24obm9kZSwgY29sdW1uSW5kZXgpCiAgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChu
b2RlLCAiSW52YWxpZCBhcmd1bWVudDogbXVzdCBwcm92aWRlIERhdGFHcmlkTm9kZSB0byBlZGl0
LiIpOworCiAgICAgICAgIHRoaXMuX2VkaXRpbmcgPSB0cnVlOwogICAgICAgICB0aGlzLl9lZGl0
aW5nTm9kZSA9IG5vZGU7CiAgICAgICAgIHRoaXMuX2VkaXRpbmdOb2RlLnNlbGVjdCgpOwogCi0g
ICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5fZWRpdGluZ05vZGUuX2VsZW1lbnQuY2hpbGRyZW5b
Y29sdW1uXTsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLl9lZGl0aW5nTm9kZS5fZWxlbWVu
dC5jaGlsZHJlbltjb2x1bW5JbmRleF07CiAgICAgICAgIFdlYkluc3BlY3Rvci5zdGFydEVkaXRp
bmcoZWxlbWVudCwgdGhpcy5fc3RhcnRFZGl0aW5nQ29uZmlnKGVsZW1lbnQpKTsKICAgICAgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQoZWxlbWVudCwgMCwgZWxlbWVu
dCwgMSk7CiAgICAgfSwKQEAgLTIxMSwxNCArMjA0LDE0IEBAIFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fZWRpdGluZ05vZGUgPSB0aGlzLmRhdGFH
cmlkTm9kZUZyb21Ob2RlKHRhcmdldCk7CiAgICAgICAgIGlmICghdGhpcy5fZWRpdGluZ05vZGUp
IHsKLSAgICAgICAgICAgIGlmICghdGhpcy5jcmVhdGlvbk5vZGUpCisgICAgICAgICAgICBpZiAo
IXRoaXMucGxhY2Vob2xkZXJOb2RlKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIHRoaXMuX2VkaXRpbmdOb2RlID0gdGhpcy5jcmVhdGlvbk5vZGU7CisgICAgICAgICAgICB0
aGlzLl9lZGl0aW5nTm9kZSA9IHRoaXMucGxhY2Vob2xkZXJOb2RlOwogICAgICAgICB9CiAKLSAg
ICAgICAgLy8gRm9yY2UgZWRpdGluZyB0aGUgMXN0IGNvbHVtbiB3aGVuIGVkaXRpbmcgdGhlIGNy
ZWF0aW9uIG5vZGUKLSAgICAgICAgaWYgKHRoaXMuX2VkaXRpbmdOb2RlLmlzQ3JlYXRpb25Ob2Rl
KQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0RWRpdGluZ0NvbHVtbk9mRGF0YUdyaWRO
b2RlKHRoaXMuX2VkaXRpbmdOb2RlLCAwKTsKKyAgICAgICAgLy8gRm9yY2UgZWRpdGluZyB0aGUg
MXN0IGNvbHVtbiB3aGVuIGVkaXRpbmcgdGhlIHBsYWNlaG9sZGVyIG5vZGUKKyAgICAgICAgaWYg
KHRoaXMuX2VkaXRpbmdOb2RlLmlzUGxhY2Vob2xkZXJOb2RlKQorICAgICAgICAgICAgcmV0dXJu
IHRoaXMuX3N0YXJ0RWRpdGluZ05vZGVBdENvbHVtbkluZGV4KHRoaXMuX2VkaXRpbmdOb2RlLCAw
KTsKIAogICAgICAgICB0aGlzLl9lZGl0aW5nID0gdHJ1ZTsKICAgICAgICAgV2ViSW5zcGVjdG9y
LnN0YXJ0RWRpdGluZyhlbGVtZW50LCB0aGlzLl9zdGFydEVkaXRpbmdDb25maWcoZWxlbWVudCkp
OwpAQCAtMjMzLDc3ICsyMjYsNjYgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9
IHsKIAogICAgIF9lZGl0aW5nQ29tbWl0dGVkOiBmdW5jdGlvbihlbGVtZW50LCBuZXdUZXh0LCBv
bGRUZXh0LCBjb250ZXh0LCBtb3ZlRGlyZWN0aW9uKQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6
IFdlIG5lZWQgbW9yZSBjb2x1bW4gaWRlbnRpZmllcnMgaGVyZSB0aHJvdWdob3V0IHRoaXMgZnVu
Y3Rpb24uCi0gICAgICAgIC8vIE5vdCBuZWVkZWQgeWV0IHNpbmNlIG9ubHkgZWRpdGFibGUgRGF0
YUdyaWQgaXMgRE9NIFN0b3JhZ2UsIHdoaWNoIGlzIEtleSAtIFZhbHVlLgotCiAgICAgICAgIHZh
ciBjb2x1bW5JZGVudGlmaWVyID0gZWxlbWVudC5fX2NvbHVtbklkZW50aWZpZXI7CisgICAgICAg
IHZhciBjb2x1bW5JbmRleCA9IHRoaXMub3JkZXJlZENvbHVtbnMuaW5kZXhPZihjb2x1bW5JZGVu
dGlmaWVyKTsKIAogICAgICAgICB2YXIgdGV4dEJlZm9yZUVkaXRpbmcgPSB0aGlzLl9lZGl0aW5n
Tm9kZS5kYXRhW2NvbHVtbklkZW50aWZpZXJdIHx8ICIiOwogICAgICAgICB2YXIgY3VycmVudEVk
aXRpbmdOb2RlID0gdGhpcy5fZWRpdGluZ05vZGU7CiAKLSAgICAgICAgZnVuY3Rpb24gbW92ZVRv
TmV4dElmTmVlZGVkKHdhc0NoYW5nZSkgewotICAgICAgICAgICAgaWYgKCFtb3ZlRGlyZWN0aW9u
KQotICAgICAgICAgICAgICAgIHJldHVybjsKLQorICAgICAgICAvLyBSZXR1cm5zIGFuIG9iamVj
dCB3aXRoIHRoZSBuZXh0IG5vZGUgYW5kIGNvbHVtbiBpbmRleCB0byBlZGl0LCBhbmQgd2hldGhl
ciBpdAorICAgICAgICAvLyBpcyBhbiBhcHByb3ByaWF0ZSB0aW1lIHRvIHJlLXNvcnQgdGhlIHRh
YmxlIHJvd3MuIFdoZW4gZWRpdGluZywgd2Ugd2FudCB0bworICAgICAgICAvLyBwb3N0cG9uZSBz
b3J0aW5nIHVudGlsIHdlIHN3aXRjaCByb3dzIG9yIHdyYXAgYXJvdW5kIGEgcm93LgorICAgICAg
ICBmdW5jdGlvbiBkZXRlcm1pbmVOZXh0Q2VsbCh2YWx1ZURpZENoYW5nZSkgewogICAgICAgICAg
ICAgaWYgKG1vdmVEaXJlY3Rpb24gPT09ICJmb3J3YXJkIikgewotICAgICAgICAgICAgICAgIGlm
IChjdXJyZW50RWRpdGluZ05vZGUuaXNDcmVhdGlvbk5vZGUgJiYgY29sdW1uSWRlbnRpZmllciA9
PT0gIjAiICYmICF3YXNDaGFuZ2UpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICAgICAgICAgIGlmIChjb2x1bW5JZGVudGlmaWVyID09PSAiMCIpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0aGlzLl9zdGFydEVkaXRpbmdDb2x1bW5PZkRhdGFHcmlkTm9kZShjdXJy
ZW50RWRpdGluZ05vZGUsICIxIik7CisgICAgICAgICAgICAgICAgaWYgKGNvbHVtbkluZGV4IDwg
dGhpcy5vcmRlcmVkQ29sdW1ucy5sZW5ndGggLSAxKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4ge3Nob3VsZFNvcnQ6IGZhbHNlLCBlZGl0aW5nTm9kZTogY3VycmVudEVkaXRpbmdOb2RlLCBj
b2x1bW5JbmRleDogY29sdW1uSW5kZXggKyAxfTsKIAorICAgICAgICAgICAgICAgIC8vIENvbnRp
bnVlIGJ5IGVkaXRpbmcgdGhlIGZpcnN0IGNvbHVtbiBvZiB0aGUgbmV4dCByb3cgaWYgaXQgZXhp
c3RzLgogICAgICAgICAgICAgICAgIHZhciBuZXh0RGF0YUdyaWROb2RlID0gY3VycmVudEVkaXRp
bmdOb2RlLnRyYXZlcnNlTmV4dE5vZGUodHJ1ZSwgbnVsbCwgdHJ1ZSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKG5leHREYXRhR3JpZE5vZGUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlz
Ll9zdGFydEVkaXRpbmdDb2x1bW5PZkRhdGFHcmlkTm9kZShuZXh0RGF0YUdyaWROb2RlLCAiMCIp
OwotICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RWRpdGluZ05vZGUuaXNDcmVhdGlvbk5vZGUg
JiYgd2FzQ2hhbmdlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkQ3JlYXRpb25Ob2Rl
KGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0RWRpdGluZ0Nv
bHVtbk9mRGF0YUdyaWROb2RlKHRoaXMuY3JlYXRpb25Ob2RlLCAiMCIpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgcmV0dXJuIHtz
aG91bGRTb3J0OiB0cnVlLCBlZGl0aW5nTm9kZTogbmV4dERhdGFHcmlkTm9kZSB8fCBjdXJyZW50
RWRpdGluZ05vZGUsIGNvbHVtbkluZGV4OiAwfTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgaWYgKG1vdmVEaXJlY3Rpb24gPT09ICJiYWNrd2FyZCIpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoY29sdW1uSWRlbnRpZmllciA9PT0gIjEiKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dGhpcy5fc3RhcnRFZGl0aW5nQ29sdW1uT2ZEYXRhR3JpZE5vZGUoY3VycmVudEVkaXRpbmdOb2Rl
LCAiMCIpOwotICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dERhdGFHcmlkTm9kZSA9IGN1cnJl
bnRFZGl0aW5nTm9kZS50cmF2ZXJzZVByZXZpb3VzTm9kZSh0cnVlLCBudWxsLCB0cnVlKTsKKyAg
ICAgICAgICAgICAgICBpZiAoY29sdW1uSW5kZXggPiAwKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4ge3Nob3VsZFNvcnQ6IGZhbHNlLCBlZGl0aW5nTm9kZTogY3VycmVudEVkaXRpbmdOb2Rl
LCBjb2x1bW5JbmRleDogY29sdW1uSW5kZXggLSAxfTsKIAotICAgICAgICAgICAgICAgIGlmIChu
ZXh0RGF0YUdyaWROb2RlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRF
ZGl0aW5nQ29sdW1uT2ZEYXRhR3JpZE5vZGUobmV4dERhdGFHcmlkTm9kZSwgIjEiKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgdmFyIHByZXZpb3VzRGF0YUdyaWRO
b2RlID0gY3VycmVudEVkaXRpbmdOb2RlLnRyYXZlcnNlUHJldmlvdXNOb2RlKHRydWUsIG51bGws
IHRydWUpOworICAgICAgICAgICAgICAgIHJldHVybiB7c2hvdWxkU29ydDogdHJ1ZSwgZWRpdGlu
Z05vZGU6IHByZXZpb3VzRGF0YUdyaWROb2RlIHx8IGN1cnJlbnRFZGl0aW5nTm9kZSwgY29sdW1u
SW5kZXg6IHRoaXMub3JkZXJlZENvbHVtbnMubGVuZ3RoIC0gMX07CiAgICAgICAgICAgICB9Ci0g
ICAgICAgIH0KIAotICAgICAgICBpZiAodGV4dEJlZm9yZUVkaXRpbmcgPT0gbmV3VGV4dCkgewot
ICAgICAgICAgICAgdGhpcy5fZWRpdGluZ0NhbmNlbGxlZChlbGVtZW50KTsKLSAgICAgICAgICAg
IG1vdmVUb05leHRJZk5lZWRlZC5jYWxsKHRoaXMsIGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIC8vIElmIHdlIGFyZSBub3QgbW92aW5nIGluIGFueSBkaXJlY3Rpb24s
IHRoZW4gc29ydCBidXQgZG9uJ3QgbW92ZS4KKyAgICAgICAgICAgIHJldHVybiB7c2hvdWxkU29y
dDogdHJ1ZSwgZWRpdGluZ05vZGU6IGN1cnJlbnRFZGl0aW5nTm9kZSwgY29sdW1uSW5kZXg6IGNv
bHVtbkluZGV4fTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFVwZGF0ZSB0aGUgdGV4dCBpbiB0
aGUgZGF0YWdyaWQgdGhhdCB3ZSB0eXBlZAotICAgICAgICB0aGlzLl9lZGl0aW5nTm9kZS5kYXRh
W2NvbHVtbklkZW50aWZpZXJdID0gbmV3VGV4dDsKKyAgICAgICAgZnVuY3Rpb24gbW92ZVRvTmV4
dENlbGwodmFsdWVEaWRDaGFuZ2UpIHsKKyAgICAgICAgICAgIHZhciBtb3ZlQ29tbWFuZCA9IGRl
dGVybWluZU5leHRDZWxsLmNhbGwodGhpcywgdmFsdWVEaWRDaGFuZ2UpOworICAgICAgICAgICAg
aWYgKG1vdmVDb21tYW5kLnNob3VsZFNvcnQgJiYgdGhpcy5fc29ydEFmdGVyRWRpdGluZ0NhbGxi
YWNrKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fc29ydEFmdGVyRWRpdGluZ0NhbGxiYWNrKCk7
CisgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3NvcnRBZnRlckVkaXRpbmdDYWxsYmFjazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuX3N0YXJ0RWRpdGluZ05vZGVBdENvbHVt
bkluZGV4KG1vdmVDb21tYW5kLmVkaXRpbmdOb2RlLCBtb3ZlQ29tbWFuZC5jb2x1bW5JbmRleCk7
CisgICAgICAgIH0KIAotICAgICAgICAvLyBNYWtlIHRoZSBjYWxsYmFjayAtIGV4cGVjdHMgYW4g
ZWRpdGluZyBub2RlICh0YWJsZSByb3cpLCB0aGUgY29sdW1uIG51bWJlciB0aGF0IGlzIGJlaW5n
IGVkaXRlZCwKLSAgICAgICAgLy8gdGhlIHRleHQgdGhhdCB1c2VkIHRvIGJlIHRoZXJlLCBhbmQg
dGhlIG5ldyB0ZXh0LgotICAgICAgICB0aGlzLl9lZGl0Q2FsbGJhY2sodGhpcy5fZWRpdGluZ05v
ZGUsIGNvbHVtbklkZW50aWZpZXIsIHRleHRCZWZvcmVFZGl0aW5nLCBuZXdUZXh0KTsKKyAgICAg
ICAgdGhpcy5fZWRpdGluZ0NhbmNlbGxlZChlbGVtZW50KTsKIAotICAgICAgICBpZiAodGhpcy5f
ZWRpdGluZ05vZGUuaXNDcmVhdGlvbk5vZGUpCi0gICAgICAgICAgICB0aGlzLmFkZENyZWF0aW9u
Tm9kZShmYWxzZSk7CisgICAgICAgIC8vIFVwZGF0ZSB0YWJsZSdzIGRhdGEgbW9kZWwsIGFuZCBk
ZWxlZ2F0ZSB0byB0aGUgY2FsbGJhY2sgdG8gdXBkYXRlIG90aGVyIG1vZGVscy4KKyAgICAgICAg
Y3VycmVudEVkaXRpbmdOb2RlLmRhdGFbY29sdW1uSWRlbnRpZmllcl0gPSBuZXdUZXh0LnRyaW0o
KTsKKyAgICAgICAgdGhpcy5fZWRpdENhbGxiYWNrKGN1cnJlbnRFZGl0aW5nTm9kZSwgY29sdW1u
SWRlbnRpZmllciwgdGV4dEJlZm9yZUVkaXRpbmcsIG5ld1RleHQsIG1vdmVEaXJlY3Rpb24pOwog
Ci0gICAgICAgIHRoaXMuX2VkaXRpbmdDYW5jZWxsZWQoZWxlbWVudCk7Ci0gICAgICAgIG1vdmVU
b05leHRJZk5lZWRlZC5jYWxsKHRoaXMsIHRydWUpOworICAgICAgICB2YXIgdGV4dERpZENoYW5n
ZSA9IHRleHRCZWZvcmVFZGl0aW5nLnRyaW0oKSAhPT0gbmV3VGV4dC50cmltKCk7CisgICAgICAg
IG1vdmVUb05leHRDZWxsLmNhbGwodGhpcywgdGV4dERpZENoYW5nZSk7CiAgICAgfSwKIAogICAg
IF9lZGl0aW5nQ2FuY2VsbGVkOiBmdW5jdGlvbihlbGVtZW50KQogICAgIHsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQodGhpcy5fZWRpdGluZ05vZGUuZWxlbWVudCA9PT0gZWxlbWVudC5lbmNsb3Np
bmdOb2RlT3JTZWxmV2l0aE5vZGVOYW1lKCJ0ciIpKTsKICAgICAgICAgZGVsZXRlIHRoaXMuX2Vk
aXRpbmc7CiAgICAgICAgIHRoaXMuX2VkaXRpbmdOb2RlID0gbnVsbDsKICAgICB9LAogCiAgICAg
Z2V0IHNvcnRDb2x1bW5JZGVudGlmaWVyKCkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fc29y
dENvbHVtbkNlbGwpCi0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgcmV0dXJuIHRo
aXMuX3NvcnRDb2x1bW5DZWxsLmNvbHVtbklkZW50aWZpZXI7CisgICAgICAgIHJldHVybiB0aGlz
Ll9zb3J0Q29sdW1uQ2VsbCA/IHRoaXMuX3NvcnRDb2x1bW5DZWxsLmNvbHVtbklkZW50aWZpZXIg
OiBudWxsOwogICAgIH0sCiAKICAgICBnZXQgc29ydE9yZGVyKCkKQEAgLTY2OCwxNiArNjUwLDE2
IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBwcmV2
aW91c1Jlc2l6ZXJFbGVtZW50LnJpZ2h0TmVpZ2hib3JpbmdDb2x1bW5JRCA9IHRoaXMub3JkZXJl
ZENvbHVtbnMubGVuZ3RoIC0gMTsKICAgICB9LAogCi0gICAgYWRkQ3JlYXRpb25Ob2RlOiBmdW5j
dGlvbihoYXNDaGlsZHJlbikKKyAgICBhZGRQbGFjZWhvbGRlck5vZGU6IGZ1bmN0aW9uKCkKICAg
ICB7Ci0gICAgICAgIGlmICh0aGlzLmNyZWF0aW9uTm9kZSkKLSAgICAgICAgICAgIHRoaXMuY3Jl
YXRpb25Ob2RlLm1ha2VOb3JtYWwoKTsKKyAgICAgICAgaWYgKHRoaXMucGxhY2Vob2xkZXJOb2Rl
KQorICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlck5vZGUubWFrZU5vcm1hbCgpOwogCiAgICAg
ICAgIHZhciBlbXB0eURhdGEgPSB7fTsKICAgICAgICAgZm9yICh2YXIgaWRlbnRpZmllciBvZiB0
aGlzLmNvbHVtbnMua2V5cygpKQogICAgICAgICAgICAgZW1wdHlEYXRhW2lkZW50aWZpZXJdID0g
Jyc7Ci0gICAgICAgIHRoaXMuY3JlYXRpb25Ob2RlID0gbmV3IFdlYkluc3BlY3Rvci5DcmVhdGlv
bkRhdGFHcmlkTm9kZShlbXB0eURhdGEsIGhhc0NoaWxkcmVuKTsKLSAgICAgICAgdGhpcy5hcHBl
bmRDaGlsZCh0aGlzLmNyZWF0aW9uTm9kZSk7CisgICAgICAgIHRoaXMucGxhY2Vob2xkZXJOb2Rl
ID0gbmV3IFdlYkluc3BlY3Rvci5QbGFjZWhvbGRlckRhdGFHcmlkTm9kZShlbXB0eURhdGEpOwor
ICAgICAgICB0aGlzLmFwcGVuZENoaWxkKHRoaXMucGxhY2Vob2xkZXJOb2RlKTsKICAgICB9LAog
CiAgICAgYXBwZW5kQ2hpbGQ6IGZ1bmN0aW9uKGNoaWxkKQpAQCAtNzQ2LDggKzcyOCw3IEBAIFdl
Ykluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLmNoaWxk
cmVuLmxlbmd0aCA8PSAwKQogICAgICAgICAgICAgdGhpcy5oYXNDaGlsZHJlbiA9IGZhbHNlOwog
Ci0gICAgICAgIGlmICh0aGlzLmNyZWF0aW9uTm9kZSA9PT0gY2hpbGQpCi0gICAgICAgICAgICBk
ZWxldGUgdGhpcy5jcmVhdGlvbk5vZGU7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFjaGlsZC5p
c1BsYWNlaG9sZGVyTm9kZSwgIlNob3VsZG4ndCBkZWxldGUgdGhlIHBsYWNlaG9sZGVyIG5vZGUu
IikKICAgICB9LAogCiAgICAgcmVtb3ZlQ2hpbGRyZW46IGZ1bmN0aW9uKCkKQEAgLTc5Myw0NyAr
Nzc0LDQ5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuY2hpbGRyZW4gPSBbXTsKICAgICB9LAogCi0gICAgc29ydE5vZGVzOiBmdW5jdGlvbihjb21w
YXJhdG9yLCByZXZlcnNlTW9kZSkKKyAgICBzb3J0Tm9kZXM6IGZ1bmN0aW9uKGNvbXBhcmF0b3Ip
CiAgICAgewotICAgICAgICBmdW5jdGlvbiBjb21wYXJhdG9yV3JhcHBlcihhLCBiKQorICAgICAg
ICBmdW5jdGlvbiBjb21wYXJhdG9yV3JhcHBlcihhUm93LCBiUm93KQogICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoYS5fZGF0YUdyaWROb2RlLl9kYXRhLnN1bW1hcnlSb3cpCisgICAgICAgICAg
ICB2YXIgcmV2ZXJzZUZhY3RvciA9IHRoaXMuc29ydE9yZGVyICE9PSAiYXNjZWRpbmciID8gLTEg
OiAxOworICAgICAgICAgICAgdmFyIGFOb2RlID0gYVJvdy5fZGF0YUdyaWROb2RlOworICAgICAg
ICAgICAgdmFyIGJOb2RlID0gYlJvdy5fZGF0YUdyaWROb2RlOworICAgICAgICAgICAgaWYgKGFO
b2RlLl9kYXRhLnN1bW1hcnlSb3cgfHwgYU5vZGUuaXNQbGFjZWhvbGRlck5vZGUpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBpZiAoYi5fZGF0YUdyaWROb2RlLl9kYXRh
LnN1bW1hcnlSb3cpCisgICAgICAgICAgICBpZiAoYk5vZGUuX2RhdGEuc3VtbWFyeVJvdyB8fCBi
Tm9kZS5pc1BsYWNlaG9sZGVyTm9kZSkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAKLSAg
ICAgICAgICAgIHZhciBhRGF0YUdyaWROb2RlID0gYS5fZGF0YUdyaWROb2RlOwotICAgICAgICAg
ICAgdmFyIGJEYXRhR3JpZE5vZGUgPSBiLl9kYXRhR3JpZE5vZGU7Ci0gICAgICAgICAgICByZXR1
cm4gcmV2ZXJzZU1vZGUgPyBjb21wYXJhdG9yKGJEYXRhR3JpZE5vZGUsIGFEYXRhR3JpZE5vZGUp
IDogY29tcGFyYXRvcihhRGF0YUdyaWROb2RlLCBiRGF0YUdyaWROb2RlKTsKKyAgICAgICAgICAg
IHJldHVybiByZXZlcnNlRmFjdG9yICogY29tcGFyYXRvcihhTm9kZSwgYk5vZGUpOwogICAgICAg
ICB9CiAKLSAgICAgICAgdmFyIHRib2R5ID0gdGhpcy5kYXRhVGFibGVCb2R5RWxlbWVudDsKLSAg
ICAgICAgdmFyIHRib2R5UGFyZW50ID0gdGJvZHkucGFyZW50RWxlbWVudDsKLSAgICAgICAgdGJv
ZHlQYXJlbnQucmVtb3ZlQ2hpbGQodGJvZHkpOworICAgICAgICBpZiAodGhpcy5fZWRpdGluZykg
eworICAgICAgICAgICAgdGhpcy5fc29ydEFmdGVyRWRpdGluZ0NhbGxiYWNrID0gdGhpcy5zb3J0
Tm9kZXMuYmluZCh0aGlzLCBjb21wYXJhdG9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQogCisgICAgICAgIHZhciB0Ym9keSA9IHRoaXMuZGF0YVRhYmxlQm9keUVsZW1lbnQ7CiAg
ICAgICAgIHZhciBjaGlsZE5vZGVzID0gdGJvZHkuY2hpbGROb2RlczsKLSAgICAgICAgdmFyIGZp
bGxlclJvdyA9IGNoaWxkTm9kZXMubGFzdFZhbHVlOworICAgICAgICB2YXIgZmlsbGVyUm93RWxl
bWVudCA9IHRib2R5Lmxhc3RDaGlsZDsKIAotICAgICAgICB2YXIgc29ydGVkUm93cyA9IEFycmF5
LnByb3RvdHlwZS5zbGljZS5jYWxsKGNoaWxkTm9kZXMsIDAsIGNoaWxkTm9kZXMubGVuZ3RoIC0g
MSk7Ci0gICAgICAgIHNvcnRlZFJvd3Muc29ydChjb21wYXJhdG9yV3JhcHBlcik7Ci0gICAgICAg
IHZhciBzb3J0ZWRSb3dzTGVuZ3RoID0gc29ydGVkUm93cy5sZW5ndGg7CisgICAgICAgIHZhciBz
b3J0ZWRSb3dFbGVtZW50cyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGNoaWxkTm9kZXMs
IDAsIGNoaWxkTm9kZXMubGVuZ3RoIC0gMSk7CisgICAgICAgIHNvcnRlZFJvd0VsZW1lbnRzLnNv
cnQoY29tcGFyYXRvcldyYXBwZXIpOwogCiAgICAgICAgIHRib2R5LnJlbW92ZUNoaWxkcmVuKCk7
CisKICAgICAgICAgdmFyIHByZXZpb3VzU2libGluZ05vZGUgPSBudWxsOwotICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHNvcnRlZFJvd3NMZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFy
IHJvdyA9IHNvcnRlZFJvd3NbaV07Ci0gICAgICAgICAgICB2YXIgbm9kZSA9IHJvdy5fZGF0YUdy
aWROb2RlOworICAgICAgICBmb3IgKHZhciByb3dFbGVtZW50IG9mIHNvcnRlZFJvd0VsZW1lbnRz
KSB7CisgICAgICAgICAgICB2YXIgbm9kZSA9IHJvd0VsZW1lbnQuX2RhdGFHcmlkTm9kZTsKICAg
ICAgICAgICAgIG5vZGUucHJldmlvdXNTaWJsaW5nID0gcHJldmlvdXNTaWJsaW5nTm9kZTsKICAg
ICAgICAgICAgIGlmIChwcmV2aW91c1NpYmxpbmdOb2RlKQogICAgICAgICAgICAgICAgIHByZXZp
b3VzU2libGluZ05vZGUubmV4dFNpYmxpbmcgPSBub2RlOwotICAgICAgICAgICAgdGJvZHkuYXBw
ZW5kQ2hpbGQocm93KTsKKyAgICAgICAgICAgIHRib2R5LmFwcGVuZENoaWxkKHJvd0VsZW1lbnQp
OwogICAgICAgICAgICAgcHJldmlvdXNTaWJsaW5nTm9kZSA9IG5vZGU7CiAgICAgICAgIH0KKwog
ICAgICAgICBpZiAocHJldmlvdXNTaWJsaW5nTm9kZSkKICAgICAgICAgICAgIHByZXZpb3VzU2li
bGluZ05vZGUubmV4dFNpYmxpbmcgPSBudWxsOwogCi0gICAgICAgIHRib2R5LmFwcGVuZENoaWxk
KGZpbGxlclJvdyk7Ci0gICAgICAgIHRib2R5UGFyZW50LmFwcGVuZENoaWxkKHRib2R5KTsKKyAg
ICAgICAgdGJvZHkuYXBwZW5kQ2hpbGQoZmlsbGVyUm93RWxlbWVudCk7IC8vIFdlIGV4cGVjdCB0
byBmaW5kIGEgZmlsbGVyIHJvdyB3aGVuIGF0dGFjaGluZyBub2Rlcy4KICAgICB9LAogCiAgICAg
X2tleURvd246IGZ1bmN0aW9uKGV2ZW50KQpAQCAtMTExMywyMyArMTA5NiwyMyBAQCBXZWJJbnNw
ZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBu
ZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KGV2ZW50KTsKIAogICAgICAgICB2YXIgZ3JpZE5v
ZGUgPSB0aGlzLmRhdGFHcmlkTm9kZUZyb21Ob2RlKGV2ZW50LnRhcmdldCk7Ci0gICAgICAgIGlm
ICh0aGlzLmRhdGFHcmlkLl9yZWZyZXNoQ2FsbGJhY2sgJiYgKCFncmlkTm9kZSB8fCBncmlkTm9k
ZSAhPT0gdGhpcy5jcmVhdGlvbk5vZGUpKQorICAgICAgICBpZiAodGhpcy5kYXRhR3JpZC5fcmVm
cmVzaENhbGxiYWNrICYmICghZ3JpZE5vZGUgfHwgZ3JpZE5vZGUgIT09IHRoaXMucGxhY2Vob2xk
ZXJOb2RlKSkKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJSZWZyZXNoIiksIHRoaXMuX3JlZnJlc2hDYWxsYmFjay5iaW5kKHRoaXMpKTsK
IAogICAgICAgICBpZiAoZ3JpZE5vZGUgJiYgZ3JpZE5vZGUuc2VsZWN0YWJsZSAmJiAhZ3JpZE5v
ZGUuaXNFdmVudFdpdGhpbkRpc2Nsb3N1cmVUcmlhbmdsZShldmVudCkpIHsKICAgICAgICAgICAg
IGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb3B5IFJvdyIp
LCB0aGlzLl9jb3B5Um93LmJpbmQodGhpcywgZXZlbnQudGFyZ2V0KSk7CiAKICAgICAgICAgICAg
IGlmICh0aGlzLmRhdGFHcmlkLl9lZGl0Q2FsbGJhY2spIHsKLSAgICAgICAgICAgICAgICBpZiAo
Z3JpZE5vZGUgPT09IHRoaXMuY3JlYXRpb25Ob2RlKQorICAgICAgICAgICAgICAgIGlmIChncmlk
Tm9kZSA9PT0gdGhpcy5wbGFjZWhvbGRlck5vZGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBZGQgTmV3IiksIHRoaXMu
X3N0YXJ0RWRpdGluZy5iaW5kKHRoaXMsIGV2ZW50LnRhcmdldCkpOwogICAgICAgICAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbWVudCA9IGV2ZW50LnRhcmdldC5l
bmNsb3NpbmdOb2RlT3JTZWxmV2l0aE5vZGVOYW1lKCJ0ZCIpOwogICAgICAgICAgICAgICAgICAg
ICB2YXIgY29sdW1uSWRlbnRpZmllciA9IGVsZW1lbnQuX19jb2x1bW5JZGVudGlmaWVyOwotICAg
ICAgICAgICAgICAgICAgICB2YXIgY29sdW1uVGl0bGUgPSB0aGlzLmRhdGFHcmlkLmNvbHVtbnNb
Y29sdW1uSWRlbnRpZmllcl0udGl0bGU7CisgICAgICAgICAgICAgICAgICAgIHZhciBjb2x1bW5U
aXRsZSA9IHRoaXMuZGF0YUdyaWQuY29sdW1ucy5nZXQoY29sdW1uSWRlbnRpZmllcikuZ2V0KCd0
aXRsZScpOwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYklu
c3BlY3Rvci5VSVN0cmluZygiRWRpdCDigJwlc+KAnSIpLmZvcm1hdChjb2x1bW5UaXRsZSksIHRo
aXMuX3N0YXJ0RWRpdGluZy5iaW5kKHRoaXMsIGV2ZW50LnRhcmdldCkpOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh0aGlzLmRhdGFHcmlkLl9kZWxl
dGVDYWxsYmFjayAmJiBncmlkTm9kZSAhPT0gdGhpcy5jcmVhdGlvbk5vZGUpCisgICAgICAgICAg
ICBpZiAodGhpcy5kYXRhR3JpZC5fZGVsZXRlQ2FsbGJhY2sgJiYgZ3JpZE5vZGUgIT09IHRoaXMu
cGxhY2Vob2xkZXJOb2RlKQogICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0o
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWxldGUiKSwgdGhpcy5fZGVsZXRlQ2FsbGJhY2suYmlu
ZCh0aGlzLCBncmlkTm9kZSkpOwogICAgICAgICB9CiAKQEAgLTE4MTgsNiArMTgwMSw3IEBAIFdl
Ykluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIElmIHRo
ZXJlIGlzIG5vIG5leHQgZ3JpZCBub2RlLCB0aGVuIGFwcGVuZCBiZWZvcmUgdGhlIGxhc3QgY2hp
bGQgc2luY2UgdGhlIGxhc3QgY2hpbGQgaXMgdGhlIGZpbGxlciByb3cuCiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRoaXMuZGF0YUdyaWQuZGF0YVRhYmxlQm9keUVsZW1lbnQubGFzdENoaWxkLmNs
YXNzTGlzdC5jb250YWlucygiZmlsbGVyIikpOworCiAgICAgICAgIGlmICghbmV4dEVsZW1lbnQp
CiAgICAgICAgICAgICBuZXh0RWxlbWVudCA9IHRoaXMuZGF0YUdyaWQuZGF0YVRhYmxlQm9keUVs
ZW1lbnQubGFzdENoaWxkOwogCkBAIC0xODY5LDIyICsxODUzLDIwIEBAIFdlYkluc3BlY3Rvci5E
YXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKIAotLyoq
Ci0gKiBAY29uc3RydWN0b3IKLSAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2Rl
fQotICovCi1XZWJJbnNwZWN0b3IuQ3JlYXRpb25EYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihkYXRh
LCBoYXNDaGlsZHJlbikKKy8vIFVzZWQgdG8gY3JlYXRlIGEgbmV3IHRhYmxlIHJvdyB3aGVuIGVu
dGVyaW5nIG5ldyBkYXRhIGJ5IGVkaXRpbmcgY2VsbHMuCitXZWJJbnNwZWN0b3IuUGxhY2Vob2xk
ZXJEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihkYXRhKQogewotICAgIFdlYkluc3BlY3Rvci5EYXRh
R3JpZE5vZGUuY2FsbCh0aGlzLCBkYXRhLCBoYXNDaGlsZHJlbik7Ci0gICAgdGhpcy5pc0NyZWF0
aW9uTm9kZSA9IHRydWU7CisgICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5jYWxsKHRoaXMs
IGRhdGEsIGZhbHNlKTsKKyAgICB0aGlzLmlzUGxhY2Vob2xkZXJOb2RlID0gdHJ1ZTsKIH0KIAot
V2ViSW5zcGVjdG9yLkNyZWF0aW9uRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKK1dlYkluc3Bl
Y3Rvci5QbGFjZWhvbGRlckRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CisgICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5QbGFjZWhvbGRlckRhdGFHcmlkTm9kZSwKKyAgICBfX3Byb3RvX186
IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLAorCiAgICAgbWFrZU5vcm1hbDog
ZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgZGVsZXRlIHRoaXMuaXNDcmVhdGlvbk5vZGU7Cisg
ICAgICAgIGRlbGV0ZSB0aGlzLmlzUGxhY2Vob2xkZXJOb2RlOwogICAgICAgICBkZWxldGUgdGhp
cy5tYWtlTm9ybWFsOwogICAgIH0KIH0KLQotV2ViSW5zcGVjdG9yLkNyZWF0aW9uRGF0YUdyaWRO
b2RlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3Rv
dHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1N0
b3JhZ2VNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvU3Rv
cmFnZU1hbmFnZXIuanMKaW5kZXggNjMyY2UzMTc5NGI0YjM3NTlhMWMyZDA2OGNkNDhlMDczMmVh
NzdlOS4uYjdjZTAzNmQ4ZWFkYjQyMTE1ZmQ5OTA5NDFhYzJlOTRhOWVhOTk1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvU3RvcmFnZU1hbmFnZXIuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvU3RvcmFnZU1hbmFnZXIu
anMKQEAgLTk0LDE3ICs5NCwxNyBAQCBXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIucHJvdG90
eXBlID0gewogCiAgICAgaXRlbVJlbW92ZWQ6IGZ1bmN0aW9uKHN0b3JhZ2VJZCwga2V5KQogICAg
IHsKLSAgICAgICAgdGhpcy5fZG9tU3RvcmFnZUZvcklkZW50aWZpZXIoc3RvcmFnZUlkKS5pdGVt
UmVtb3ZlZChzdG9yYWdlSWQsIGtleSk7CisgICAgICAgIHRoaXMuX2RvbVN0b3JhZ2VGb3JJZGVu
dGlmaWVyKHN0b3JhZ2VJZCkuaXRlbVJlbW92ZWQoa2V5KTsKICAgICB9LAogCiAgICAgaXRlbUFk
ZGVkOiBmdW5jdGlvbihzdG9yYWdlSWQsIGtleSwgdmFsdWUpCiAgICAgewotICAgICAgICB0aGlz
Ll9kb21TdG9yYWdlRm9ySWRlbnRpZmllcihzdG9yYWdlSWQpLml0ZW1BZGRlZChzdG9yYWdlSWQs
IGtleSwgdmFsdWUpOworICAgICAgICB0aGlzLl9kb21TdG9yYWdlRm9ySWRlbnRpZmllcihzdG9y
YWdlSWQpLml0ZW1BZGRlZChrZXksIHZhbHVlKTsKICAgICB9LAogCiAgICAgaXRlbVVwZGF0ZWQ6
IGZ1bmN0aW9uKHN0b3JhZ2VJZCwga2V5LCBvbGRWYWx1ZSwgdmFsdWUpCiAgICAgewotICAgICAg
ICB0aGlzLl9kb21TdG9yYWdlRm9ySWRlbnRpZmllcihzdG9yYWdlSWQpLml0ZW1VcGRhdGVkKHN0
b3JhZ2VJZCwga2V5LCBvbGRWYWx1ZSwgdmFsdWUpOworICAgICAgICB0aGlzLl9kb21TdG9yYWdl
Rm9ySWRlbnRpZmllcihzdG9yYWdlSWQpLml0ZW1VcGRhdGVkKGtleSwgb2xkVmFsdWUsIHZhbHVl
KTsKICAgICB9LAogCiAgICAgaW5zcGVjdERhdGFiYXNlOiBmdW5jdGlvbihpZCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>