<?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>69319</bug_id>
          
          <creation_ts>2011-10-03 22:38:35 -0700</creation_ts>
          <short_desc>Web Inspector: start adding UI components to the compilation process.</short_desc>
          <delta_ts>2011-10-04 04:36:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>477442</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-03 22:38:35 -0700</bug_when>
    <thetext>Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477443</commentid>
    <comment_count>1</comment_count>
      <attachid>109580</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-03 22:39:53 -0700</bug_when>
    <thetext>Created attachment 109580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477523</commentid>
    <comment_count>2</comment_count>
      <attachid>109603</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-04 03:51:19 -0700</bug_when>
    <thetext>Created attachment 109603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477539</commentid>
    <comment_count>3</comment_count>
      <attachid>109603</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-04 04:36:37 -0700</bug_when>
    <thetext>Comment on attachment 109603
Patch

Clearing flags on attachment: 109603

Committed r96584: &lt;http://trac.webkit.org/changeset/96584&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477540</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-04 04:36:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109580</attachid>
            <date>2011-10-03 22:39:53 -0700</date>
            <delta_ts>2011-10-04 03:51:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69319-20111004093950.patch</filename>
            <type>text/plain</type>
            <size>51947</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY1MzEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlZjgwNzZhYmM2ZTg1NjAz
ZmM3NjhlM2E0MWVhMGI4MWE0YjNiZWM1Li4xOTY4OGNlYmM4ZDUwNmI0MWRjNWIwNDgyZGQ0Yzcz
NDRhOWEwNWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzggQEAKKzIwMTEtMTAtMDMgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogc3RhcnQgYWRkaW5nIFVJIGNvbXBvbmVudHMgdG8gdGhlIGNvbXBpbGF0aW9uIHByb2Nlc3Mu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTMxOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAg
ICAqIGluc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RyYXdlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EcmF3ZXIucHJvdG90
eXBlLnNob3cuYW5pbWF0aW9uRmluaXNoZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRyYXdl
ci5wcm90b3R5cGUuc2hvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRHJhd2VyLnByb3RvdHlw
ZS5yZXNpemUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5zdGF0dXNC
YXJSZXNpemVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0VtcHR5Vmlldy5qczoK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdv
cmtQYW5lbC5wcm90b3R5cGUuX3JlZ2lzdGVyU2hvcnRjdXRzKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlLl9zaG93R29Ub0xpbmVEaWFsb2cpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UGFuZWwucHJvdG90eXBlLnNlYXJjaENhbmNlbGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Q
YW5lbC5wcm90b3R5cGUucGVyZm9ybVNlYXJjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUGFu
ZWwucHJvdG90eXBlLmp1bXBUb05leHRTZWFyY2hSZXN1bHQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlBhbmVsLnByb3RvdHlwZS5qdW1wVG9QcmV2aW91c1NlYXJjaFJlc3VsdCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlLnNldCBnZXQgdG9vbGJhckl0ZW1MYWJlbCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlLmdldCBzdGF0dXNCYXJJdGVt
cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlLnVwZGF0ZU1haW5WaWV3
V2lkdGgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZS5zdGF0dXNCYXJS
ZXNpemVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUuaGFuZGxlU2hv
cnRjdXQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS5fc2VhcmNoYWJs
ZVZpZXdzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS5w
ZXJmb3JtU2VhcmNoLnVwZGF0ZU1hdGNoZXNDb3VudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UHJvZmlsZXNQYW5lbC5wcm90b3R5cGUucGVyZm9ybVNlYXJjaC51cGRhdGVNYXRjaGVzQ291bnRT
b29uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS5wZXJm
b3JtU2VhcmNoLmZpbmlzaGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2Zp
bGVzUGFuZWwucHJvdG90eXBlLnBlcmZvcm1TZWFyY2gucHJvY2Vzc0NodW5rKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS5wZXJmb3JtU2VhcmNoKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS5qdW1wVG9OZXh0U2Vh
cmNoUmVzdWx0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlw
ZS5qdW1wVG9QcmV2aW91c1NlYXJjaFJlc3VsdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJv
ZmlsZXNQYW5lbC5wcm90b3R5cGUuc2VhcmNoQ2FuY2VsZWQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvUHJvcGVydGllc1NlY3Rpb24uanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJj
ZXNQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBl
Ll9yZWdpc3RlclNob3J0Y3V0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFu
ZWwucHJvdG90eXBlLl9zaG93R29Ub0xpbmVEaWFsb2cpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQ
YW5lbC5wcm90b3R5cGUuX3JlZ2lzdGVyU2hvcnRjdXRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9zaG93R29Ub0xpbmVEaWFsb2cpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX2NyZWF0ZVNpZGViYXJCdXR0b25B
bmRSZWdpc3RlclNob3J0Y3V0cyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZWFy
Y2hDb250cm9sbGVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNlYXJjaENvbnRyb2xsZXIu
cHJvdG90eXBlLl9vbktleURvd24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2Vj
dGlvbi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TZWN0aW9uLnByb3RvdHlwZS5zZXQgcG9w
dWxhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TZWN0aW9uLnByb3RvdHlwZS5vbnBvcHVs
YXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TZWN0aW9uLnByb3RvdHlwZS5leHBhbmQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2lkZWJhclBhbmUuanM6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9Ub29sYmFyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRv
b2xiYXIuY3JlYXRlUGFuZWxUb29sYmFySXRlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9v
bGJhckRyb3Bkb3duLnByb3RvdHlwZS5zaG93KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1VJVXRpbHMuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLmVsZW1lbnREcmFn
U3RhcnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmVsZW1lbnREcmFnRW5kKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5hbmltYXRlU3R5bGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmFuaW1h
dGVTdHlsZS5mb3JjZUNvbXBsZXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5hbmltYXRlU3R5
bGUuY2FuY2VsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLmV4dGVuc2lvblNlcnZlci5ub3RpZnlQYW5lbFNob3duKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5leHRlbnNpb25TZXJ2ZXIubm90aWZ5UGFuZWxIaWRkZW4pOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLmN1cnJlbnRQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iuc2V0Q3VycmVu
dFBhbmVsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorCiAyMDExLTEwLTAz
ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBhZGQgRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCBhbmQgQ29uc29sZVZpZXcgdG8g
Y29tcGlsYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZmEzZjkxMjNkYzc5ZTEzNDYzZmNlZjA1
NzZlMGUwODRkMWI5MzE2Mi4uNzlkOWIxZTgwMzE3YTE5ZjIzZWE1NjMxN2U3NGRiMWZmMWJmYjNh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjMzNCw2ICs2MzM0LDcgQEAKICAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL1RvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlLmpzJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL3RyZWVvdXRsaW5lLmpzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29kZS5qcycsCisgICAgICAgICAgICAnaW5z
cGVjdG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL1VzZXJNZXRyaWNzLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5k
L3V0aWxpdGllcy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9WaWV3Lmpz
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXgg
ZmU5ZmJmNWVkMjAyZGZhYWEyY2E4ODA5ZGExNGMzZTRkMmRkYzExZC4uMDMyN2QwMGNhYTQ4NzI3
ZTFmYTBlZDY3NDMzOGIxMmU0ZDNjYjk0YiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTY5NjQxLDYgKzY5NjQxLDEwIEBACiAJCQkJCT4KIAkJ
CQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJv
bnQtZW5kXFVJVXRpbHMuanMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFVzZXJNZXRyaWNzLmpzIgogCQkJ
CQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Nv
bXBpbGUtZnJvbnQtZW5kLnNoIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJv
bnQtZW5kLnNoCmluZGV4IGFmYmVlZGNlYmYxNDhmMTdlMzczMmYzZjlhMTA1MzI2MzZkZjU5ODEu
LmFkMzY2OGNhMGRiOGI2NTBmY2U5ZTM0MDc3ZDExNTk2N2FkNmRmYmUgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQuc2gKQEAgLTQ0LDcgKzQ0LDcgQEAg
amF2YSAtamFyIH4vY2xvc3VyZS9jb21waWxlci5qYXIgLS1jb21waWxhdGlvbl9sZXZlbCBTSU1Q
TEVfT1BUSU1JWkFUSU9OUyAtLXdhcm4KICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL09iamVjdC5qcyBcCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcyBcCiAgICAgICAgIC0tanMgU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Vc2VyTWV0cmljcy5qcyBcCi0gICAgLS1tb2R1bGUg
anNtb2R1bGVfc2RrOjE2OmpzbW9kdWxlX2NvbW1vbixqc21vZHVsZV9ob3N0IFwKKyAgICAtLW1v
ZHVsZSBqc21vZHVsZV9zZGs6MTY6anNtb2R1bGVfY29tbW9uIFwKICAgICAgICAgLS1qcyBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVNb2RlbC5qcyBcCiAgICAgICAg
IC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZW50UHJvdmlkZXJz
LmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nv
b2tpZVBhcnNlci5qcyBcCkBAIC02MSwyMCArNjEsMzAgQEAgamF2YSAtamFyIH4vY2xvc3VyZS9j
b21waWxlci5qYXIgLS1jb21waWxhdGlvbl9sZXZlbCBTSU1QTEVfT1BUSU1JWkFUSU9OUyAtLXdh
cm4KICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlLmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L05ldHdvcmtNYW5hZ2VyLmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1VJU291cmNlQ29kZS5qcyBcCi0gICAgLS1tb2R1bGUganNtb2R1bGVfbWlz
YzoxNjpqc21vZHVsZV9zZGsgXAorICAgIC0tbW9kdWxlIGpzbW9kdWxlX3VpOjIxOmpzbW9kdWxl
X2NvbW1vbiBcCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9DaGVja2JveC5qcyBcCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Db250ZXh0TWVudS5qcyBcCi0gICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Db25zb2xlTWVzc2FnZS5qcyBcCi0gICAgICAgIC0tanMgU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcyBcCisgICAgICAgIC0t
anMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EcmF3ZXIuanMgXAorICAgICAg
ICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRW1wdHlWaWV3LmpzIFwK
ICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlbHBTY3Jl
ZW4uanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
S2V5Ym9hcmRTaG9ydGN1dC5qcyBcCi0gICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0Q29udGV4dE1hbmFnZXIuanMgXAotICAgICAgICAtLWpz
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVmlldy5qcyBcCisgICAgICAgIC0t
anMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9QYW5lbC5qcyBcCiAgICAgICAg
IC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9QbGFjYXJkLmpzIFwKICAg
ICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BvcG92ZXIuanMg
XAotICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU29mdENv
bnRleHRNZW51LmpzIFwKKyAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Byb3BlcnRpZXNTZWN0aW9uLmpzIFwKKyAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NlYXJjaENvbnRyb2xsZXIuanMgXAorICAgICAgICAtLWpz
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2VjdGlvbi5qcyBcCisgICAgICAg
IC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TaWRlYmFyUGFuZS5qcyBc
CiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TaG9ydGN1
dHNTY3JlZW4uanMgXAorICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU29mdENvbnRleHRNZW51LmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1N0YXR1c0JhckJ1dHRvbi5qcyBcCiAgICAgICAgIC0tanMgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UYWJiZWRQYW5lLmpzIFwKICAgICAgICAg
LS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9tcHQuanMgXAor
ICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVG9vbGJhci5q
cyBcCisgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVV0
aWxzLmpzIFwKKyAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1ZpZXcuanMgXAorICAgIC0tbW9kdWxlIGpzbW9kdWxlX2luc3BlY3Rvcjo0OmpzbW9kdWxlX3Nk
ayxqc21vZHVsZV91aSBcCisgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Db25zb2xlTWVzc2FnZS5qcyBcCisgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcyBcCisgICAgICAgIC0tanMgU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0Q29udGV4dE1hbmFnZXIuanMg
XAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxp
bmVNYW5hZ2VyLmpzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0RyYXdlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRHJhd2Vy
LmpzCmluZGV4IDc4YjAxNjllMWRiNzc2YTRkYWY0ZjYxN2ZlMjQ1NzExNWNmMmZlMDMuLjM4YmYz
MzAxY2U2NjU0ODZiYzc2YmEyZDkwOGJhM2MxM2FhZWMyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRHJhd2VyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRHJhd2VyLmpzCkBAIC0yNyw2ICsyNyw5IEBACiAgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8KIFdlYkluc3BlY3Rvci5EcmF3
ZXIgPSBmdW5jdGlvbigpCiB7CiAgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImRyYXdlciIpOwpAQCAtMTAwLDggKzEwMyw3IEBAIFdlYkluc3BlY3Rvci5EcmF3ZXIu
cHJvdG90eXBlID0gewogCiAgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGlvbkZpbmlzaGVkKCkKICAg
ICAgICAgewotICAgICAgICAgICAgaWYgKCJ1cGRhdGVTdGF0dXNCYXJJdGVtcyIgaW4gV2ViSW5z
cGVjdG9yLmN1cnJlbnRQYW5lbCgpKQotICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jdXJy
ZW50UGFuZWwoKS51cGRhdGVTdGF0dXNCYXJJdGVtcygpOworICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLmN1cnJlbnRQYW5lbCgpLnN0YXR1c0JhclJlc2l6ZWQoKTsKICAgICAgICAgICAgIGlmICh0
aGlzLl92aWV3ICYmIHRoaXMuX3ZpZXcuYWZ0ZXJTaG93KQogICAgICAgICAgICAgICAgIHRoaXMu
X3ZpZXcuYWZ0ZXJTaG93KCk7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fY3VycmVudEFuaW1h
dGlvbjsKQEAgLTEzMSw4ICsxMzMsNyBAQCBXZWJJbnNwZWN0b3IuRHJhd2VyLnByb3RvdHlwZSA9
IHsKICAgICAgICAgLy8gbGlrZSBFbGVtZW50cyBpbiB0aGVpciB1cGRhdGVTdGF0dXNCYXJJdGVt
cyBjYWxsIHdpbGwgc2l6ZSB0aGluZ3MgdG8gZml0IHRoZSBmaW5hbCBsb2NhdGlvbi4KICAgICAg
ICAgdGhpcy5fbWFpblN0YXR1c0Jhci5zdHlsZS5zZXRQcm9wZXJ0eSgicGFkZGluZy1sZWZ0Iiwg
KGFuY2hvcmVkSXRlbXMub2Zmc2V0V2lkdGggLSAxKSArICJweCIpOwogICAgICAgICBkb2N1bWVu
dC5ib2R5LnJlbW92ZVN0eWxlQ2xhc3MoImRyYXdlci12aXNpYmxlIik7Ci0gICAgICAgIGlmICgi
dXBkYXRlU3RhdHVzQmFySXRlbXMiIGluIFdlYkluc3BlY3Rvci5jdXJyZW50UGFuZWwoKSkKLSAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5jdXJyZW50UGFuZWwoKS51cGRhdGVTdGF0dXNCYXJJdGVt
cygpOworICAgICAgICBXZWJJbnNwZWN0b3IuY3VycmVudFBhbmVsKCkuc3RhdHVzQmFyUmVzaXpl
ZCgpOwogICAgICAgICBkb2N1bWVudC5ib2R5LmFkZFN0eWxlQ2xhc3MoImRyYXdlci12aXNpYmxl
Iik7CiAKICAgICAgICAgdmFyIGFuaW1hdGlvbnMgPSBbCkBAIC0xNzgsNyArMTc5LDcgQEAgV2Vi
SW5zcGVjdG9yLkRyYXdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgdGhpcy5fdmlldy5zdG9yZVNjcm9sbFBvc2l0aW9ucygpOwotICAgICAgICB2YXIgaGVp
Z2h0ID0gdGhpcy5fY29uc3RyYWluSGVpZ2h0KHBhcnNlSW50KHRoaXMuZWxlbWVudC5zdHlsZS5o
ZWlnaHQpKTsKKyAgICAgICAgdmFyIGhlaWdodCA9IHRoaXMuX2NvbnN0cmFpbkhlaWdodChwYXJz
ZUludCh0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0LCAxMCkpOwogICAgICAgICB0aGlzLl9tYWlu
RWxlbWVudC5zdHlsZS5ib3R0b20gPSBoZWlnaHQgKyAicHgiOwogICAgICAgICB0aGlzLmVsZW1l
bnQuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgInB4IjsKICAgICAgICAgdGhpcy5fdmlldy5kb1Jl
c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9F
bGVtZW50c1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVt
ZW50c1BhbmVsLmpzCmluZGV4IGJlOTIxOGQ5ZTM2MGY2ZjFjZmE2MjI5OWFjYWIyMDdlZDIzZmI4
MDMuLjM0OGI2MTFmNDZjMDdlYTkyNGM4MDUyZDM4ZTg4OThhYTA2YTMzYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKQEAg
LTE0MCw3ICsxNDAsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHJldHVybiB0aGlzLnRyZWVPdXRsaW5lLmVsZW1lbnQ7CiAgICAgfSwKIAotICAg
IHVwZGF0ZVN0YXR1c0Jhckl0ZW1zOiBmdW5jdGlvbigpCisgICAgc3RhdHVzQmFyUmVzaXplZDog
ZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy51cGRhdGVCcmVhZGNydW1iU2l6ZXMoKTsK
ICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9F
bXB0eVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VtcHR5Vmll
dy5qcwppbmRleCBiMDhlMDY4ZTQxZjQwOWIwODVhZjFkMzJmMGFmYWMyZWJmNjVkY2FhLi40MTkw
NGFjYzc2OWYwZDVmMWQzMjc3M2U0MjhiZDY0OGI5MGQyYmRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VtcHR5Vmlldy5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VtcHR5Vmlldy5qcwpAQCAtMjgsNiArMjgsMTAgQEAK
ICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRz
IHtXZWJJbnNwZWN0b3IuVmlld30KKyAqLwogV2ViSW5zcGVjdG9yLkVtcHR5VmlldyA9IGZ1bmN0
aW9uKHRleHQpCiB7CiAgICAgV2ViSW5zcGVjdG9yLlZpZXcuY2FsbCh0aGlzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKaW5kZXgg
NWJiYjU5YjQ5MjI3YzljOGUwOWE2YTBlMmE4YTQzODNkOThhZTkzMS4uYzI3NzAxMWQxNWJjYTM2
MzNkMGM3M2E1ZjE5NTBjMjNiYWJkMTE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKQEAgLTEzMDAsNyArMTMwMCw3IEBAIFdl
Ykluc3BlY3Rvci5OZXR3b3JrUGFuZWwgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5fY2xvc2VCdXR0
b25FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fdG9nZ2xlR3JpZE1vZGUu
YmluZCh0aGlzKSwgZmFsc2UpOwogICAgIHRoaXMuX3ZpZXdzQ29udGFpbmVyRWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9jbG9zZUJ1dHRvbkVsZW1lbnQpOwogCi0gICAgdGhpcy5yZWdpc3RlclNo
b3J0Y3V0cygpOworICAgIHRoaXMuX3JlZ2lzdGVyU2hvcnRjdXRzKCk7CiB9CiAKIFdlYkluc3Bl
Y3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlID0gewpAQCAtMTMxOSw2ICsxMzE5LDIwIEBAIFdl
Ykluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhp
cy5fbmV0d29ya0xvZ1ZpZXcuZWxlbWVudHNUb1Jlc3RvcmVTY3JvbGxQb3NpdGlvbnNGb3IoKTsK
ICAgICB9LAogCisgICAgX3JlZ2lzdGVyU2hvcnRjdXRzOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICB0aGlzLl9zaG9ydGN1dHMgPSB7fTsKKyAgICAgICAgdmFyIGdvVG9MaW5lU2hvcnRjdXQg
PSBXZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFsb2cuY3JlYXRlU2hvcnRjdXQoKTsKKyAgICAgICAg
dGhpcy5fc2hvcnRjdXRzW2dvVG9MaW5lU2hvcnRjdXQua2V5XSA9IHRoaXMuX3Nob3dHb1RvTGlu
ZURpYWxvZy5iaW5kKHRoaXMpOworICAgIH0sCisKKyAgICBfc2hvd0dvVG9MaW5lRGlhbG9nOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICAgdmFyIHZpZXcgPSB0aGlzLnZpc2libGVWaWV3Owor
ICAgICAgICAgaWYgKHRoaXMudmlzaWJsZVZpZXcpCisgICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LkdvVG9MaW5lRGlhbG9nLnNob3codGhpcy52aXNpYmxlVmlldyk7CisgICAgfSwKKwogICAgIC8v
IEZJWE1FOiBvbmx5IHVzZWQgYnkgdGhlIGxheW91dCB0ZXN0cywgc2hvdWxkIG5vdCBiZSBleHBv
c2VkLgogICAgIF9yZXNldDogZnVuY3Rpb24oKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1BhbmVsLmpzCmluZGV4IDBjYzVkMTdkMGVjMDM4N2FiYjFlZjExYzBm
NmE1NDA2ZGQxMWVlZWYuLjUzM2QyZmM1ZTlhN2Q2NzRlYmZlYWYxZmMwMmEwMmE2YTI4ZjExNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUGFuZWwuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9QYW5lbC5qcwpAQCAtMjYs
NiArMjYsMTAgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAq
IEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuVmlld30KKyAqLwogV2ViSW5zcGVjdG9yLlBhbmVsID0g
ZnVuY3Rpb24obmFtZSkKIHsKICAgICBXZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOwpAQCAt
MTA4LDE3MSArMTEyLDIxIEBAIFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUgPSB7CiAKICAg
ICBzZWFyY2hDYW5jZWxlZDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3Nl
YXJjaFJlc3VsdHMpIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2Vh
cmNoUmVzdWx0cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIHZhciB2aWV3ID0gdGhp
cy5fc2VhcmNoUmVzdWx0c1tpXTsKLSAgICAgICAgICAgICAgICBpZiAodmlldy5zZWFyY2hDYW5j
ZWxlZCkKLSAgICAgICAgICAgICAgICAgICAgdmlldy5zZWFyY2hDYW5jZWxlZCgpOwotICAgICAg
ICAgICAgICAgIGRlbGV0ZSB2aWV3LmN1cnJlbnRRdWVyeTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotCiAgICAgICAgIFdlYkluc3BlY3Rvci5zZWFyY2hDb250cm9sbGVyLnVwZGF0ZVNlYXJj
aE1hdGNoZXNDb3VudCgwLCB0aGlzKTsKLQotICAgICAgICBpZiAodGhpcy5fY3VycmVudFNlYXJj
aENodW5rSW50ZXJ2YWxJZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICBjbGVhckludGVydmFsKHRo
aXMuX2N1cnJlbnRTZWFyY2hDaHVua0ludGVydmFsSWRlbnRpZmllcik7Ci0gICAgICAgICAgICBk
ZWxldGUgdGhpcy5fY3VycmVudFNlYXJjaENodW5rSW50ZXJ2YWxJZGVudGlmaWVyOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdGhpcy5fdG90YWxTZWFyY2hNYXRjaGVzID0gMDsKLSAgICAgICAgdGhp
cy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0gMDsKLSAgICAgICAgdGhpcy5fc2VhcmNoUmVz
dWx0cyA9IFtdOwogICAgIH0sCiAKICAgICBwZXJmb3JtU2VhcmNoOiBmdW5jdGlvbihxdWVyeSkK
ICAgICB7CiAgICAgICAgIC8vIENhbGwgc2VhcmNoQ2FuY2VsZWQgc2luY2UgaXQgd2lsbCByZXNl
dCBldmVyeXRoaW5nIHdlIG5lZWQgYmVmb3JlIGRvaW5nIGEgbmV3IHNlYXJjaC4KLSAgICAgICAg
dGhpcy5zZWFyY2hDYW5jZWxlZCh0cnVlKTsKLQotICAgICAgICB2YXIgc2VhcmNoYWJsZVZpZXdz
ID0gdGhpcy5zZWFyY2hhYmxlVmlld3M7Ci0gICAgICAgIGlmICghc2VhcmNoYWJsZVZpZXdzIHx8
ICFzZWFyY2hhYmxlVmlld3MubGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IHZhciBwYXJlbnRFbGVtZW50ID0gdGhpcy52aWV3c0NvbnRhaW5lckVsZW1lbnQ7Ci0gICAgICAg
IHZhciB2aXNpYmxlVmlldyA9IHRoaXMudmlzaWJsZVZpZXc7Ci0gICAgICAgIHZhciBzb3J0RnVj
dGlvbiA9IHRoaXMuc2VhcmNoUmVzdWx0c1NvcnRGdW5jdGlvbjsKLQotICAgICAgICB2YXIgbWF0
Y2hlc0NvdW50VXBkYXRlVGltZW91dCA9IG51bGw7Ci0KLSAgICAgICAgZnVuY3Rpb24gdXBkYXRl
TWF0Y2hlc0NvdW50KCkKLSAgICAgICAgewotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNlYXJj
aENvbnRyb2xsZXIudXBkYXRlU2VhcmNoTWF0Y2hlc0NvdW50KHRoaXMuX3RvdGFsU2VhcmNoTWF0
Y2hlcywgdGhpcyk7Ci0gICAgICAgICAgICBtYXRjaGVzQ291bnRVcGRhdGVUaW1lb3V0ID0gbnVs
bDsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZU1hdGNoZXNDb3VudFNvb24o
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobWF0Y2hlc0NvdW50VXBkYXRlVGltZW91dCkK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIG1hdGNo
ZXMgY291bnQgZXZlcnkgaGFsZi1zZWNvbmQgc28gaXQgZG9lc24ndCBmZWVsIHR3aXRjaHkuCi0g
ICAgICAgICAgICBtYXRjaGVzQ291bnRVcGRhdGVUaW1lb3V0ID0gc2V0VGltZW91dCh1cGRhdGVN
YXRjaGVzQ291bnQuYmluZCh0aGlzKSwgNTAwKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0
aW9uIGZpbmlzaGVkQ2FsbGJhY2sodmlldywgc2VhcmNoTWF0Y2hlcykKLSAgICAgICAgewotICAg
ICAgICAgICAgaWYgKCFzZWFyY2hNYXRjaGVzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICAgICAgdGhpcy5fdG90YWxTZWFyY2hNYXRjaGVzICs9IHNlYXJjaE1hdGNoZXM7Ci0g
ICAgICAgICAgICB0aGlzLl9zZWFyY2hSZXN1bHRzLnB1c2godmlldyk7Ci0KLSAgICAgICAgICAg
IGlmIChzb3J0RnVjdGlvbikKLSAgICAgICAgICAgICAgICB0aGlzLl9zZWFyY2hSZXN1bHRzLnNv
cnQoc29ydEZ1Y3Rpb24pOwotCi0gICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hNYXRjaEZvdW5k
KQotICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWF0Y2hGb3VuZCh2aWV3LCBzZWFyY2hNYXRj
aGVzKTsKLQotICAgICAgICAgICAgdXBkYXRlTWF0Y2hlc0NvdW50U29vbi5jYWxsKHRoaXMpOwot
Ci0gICAgICAgICAgICBpZiAodmlldyA9PT0gdmlzaWJsZVZpZXcpCi0gICAgICAgICAgICAgICAg
dmlldy5qdW1wVG9GaXJzdFNlYXJjaFJlc3VsdCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFy
IGkgPSAwOwotICAgICAgICB2YXIgcGFuZWwgPSB0aGlzOwotICAgICAgICB2YXIgYm91bmRGaW5p
c2hlZENhbGxiYWNrID0gZmluaXNoZWRDYWxsYmFjay5iaW5kKHRoaXMpOwotICAgICAgICB2YXIg
Y2h1bmtJbnRlcnZhbElkZW50aWZpZXIgPSBudWxsOwotCi0gICAgICAgIC8vIFNwbGl0IHVwIHRo
ZSB3b3JrIGludG8gY2h1bmtzIHNvIHdlIGRvbid0IGJsb2NrIHRoZQotICAgICAgICAvLyBVSSB0
aHJlYWQgd2hpbGUgcHJvY2Vzc2luZy4KLQotICAgICAgICBmdW5jdGlvbiBwcm9jZXNzQ2h1bmso
KQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgdmlldyA9IHNlYXJjaGFibGVWaWV3c1tpXTsK
LQotICAgICAgICAgICAgaWYgKCsraSA+PSBzZWFyY2hhYmxlVmlld3MubGVuZ3RoKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKHBhbmVsLl9jdXJyZW50U2VhcmNoQ2h1bmtJbnRlcnZhbElkZW50aWZp
ZXIgPT09IGNodW5rSW50ZXJ2YWxJZGVudGlmaWVyKQotICAgICAgICAgICAgICAgICAgICBkZWxl
dGUgcGFuZWwuX2N1cnJlbnRTZWFyY2hDaHVua0ludGVydmFsSWRlbnRpZmllcjsKLSAgICAgICAg
ICAgICAgICBjbGVhckludGVydmFsKGNodW5rSW50ZXJ2YWxJZGVudGlmaWVyKTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgaWYgKCF2aWV3KQotICAgICAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICAgICAgdmlldy5jdXJyZW50UXVlcnkgPSBxdWVyeTsKLSAgICAgICAgICAgIHZp
ZXcucGVyZm9ybVNlYXJjaChxdWVyeSwgYm91bmRGaW5pc2hlZENhbGxiYWNrKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHByb2Nlc3NDaHVuaygpOwotCi0gICAgICAgIGNodW5rSW50ZXJ2YWxJZGVu
dGlmaWVyID0gc2V0SW50ZXJ2YWwocHJvY2Vzc0NodW5rLCAyNSk7Ci0gICAgICAgIHRoaXMuX2N1
cnJlbnRTZWFyY2hDaHVua0ludGVydmFsSWRlbnRpZmllciA9IGNodW5rSW50ZXJ2YWxJZGVudGlm
aWVyOworICAgICAgICB0aGlzLnNlYXJjaENhbmNlbGVkKCk7CiAgICAgfSwKIAogICAgIGp1bXBU
b05leHRTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5z
aG93VmlldyB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cyB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cy5s
ZW5ndGgpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIHNob3dGaXJzdFJlc3Vs
dCA9IGZhbHNlOwotCi0gICAgICAgIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IHRo
aXMuX3NlYXJjaFJlc3VsdHMuaW5kZXhPZih0aGlzLnZpc2libGVWaWV3KTsKLSAgICAgICAgaWYg
KHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9PT0gLTEpIHsKLSAgICAgICAgICAgIHRo
aXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IDA7Ci0gICAgICAgICAgICBzaG93Rmlyc3RS
ZXN1bHQgPSB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGN1cnJlbnRWaWV3ID0gdGhp
cy5fc2VhcmNoUmVzdWx0c1t0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXhdOwotCi0gICAg
ICAgIGlmIChjdXJyZW50Vmlldy5zaG93aW5nTGFzdFNlYXJjaFJlc3VsdCgpKSB7Ci0gICAgICAg
ICAgICBpZiAoKyt0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPj0gdGhpcy5fc2VhcmNo
UmVzdWx0cy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3Vs
dEluZGV4ID0gMDsKLSAgICAgICAgICAgIGN1cnJlbnRWaWV3ID0gdGhpcy5fc2VhcmNoUmVzdWx0
c1t0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXhdOwotICAgICAgICAgICAgc2hvd0ZpcnN0
UmVzdWx0ID0gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjdXJyZW50VmlldyAhPT0g
dGhpcy52aXNpYmxlVmlldykgewotICAgICAgICAgICAgdGhpcy5zaG93VmlldyhjdXJyZW50Vmll
dyk7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2VhcmNoQ29udHJvbGxlci5mb2N1c1NlYXJj
aEZpZWxkKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoc2hvd0ZpcnN0UmVzdWx0KQotICAg
ICAgICAgICAgY3VycmVudFZpZXcuanVtcFRvRmlyc3RTZWFyY2hSZXN1bHQoKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgY3VycmVudFZpZXcuanVtcFRvTmV4dFNlYXJjaFJlc3VsdCgpOwog
ICAgIH0sCiAKICAgICBqdW1wVG9QcmV2aW91c1NlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQogICAg
IHsKLSAgICAgICAgaWYgKCF0aGlzLnNob3dWaWV3IHx8ICF0aGlzLl9zZWFyY2hSZXN1bHRzIHx8
ICF0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICB2YXIgc2hvd0xhc3RSZXN1bHQgPSBmYWxzZTsKLQotICAgICAgICB0aGlzLl9jdXJyZW50
U2VhcmNoUmVzdWx0SW5kZXggPSB0aGlzLl9zZWFyY2hSZXN1bHRzLmluZGV4T2YodGhpcy52aXNp
YmxlVmlldyk7Ci0gICAgICAgIGlmICh0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPT09
IC0xKSB7Ci0gICAgICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSAwOwot
ICAgICAgICAgICAgc2hvd0xhc3RSZXN1bHQgPSB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAg
dmFyIGN1cnJlbnRWaWV3ID0gdGhpcy5fc2VhcmNoUmVzdWx0c1t0aGlzLl9jdXJyZW50U2VhcmNo
UmVzdWx0SW5kZXhdOwotCi0gICAgICAgIGlmIChjdXJyZW50Vmlldy5zaG93aW5nRmlyc3RTZWFy
Y2hSZXN1bHQoKSkgewotICAgICAgICAgICAgaWYgKC0tdGhpcy5fY3VycmVudFNlYXJjaFJlc3Vs
dEluZGV4IDwgMCkKLSAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5k
ZXggPSAodGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGggLSAxKTsKLSAgICAgICAgICAgIGN1cnJl
bnRWaWV3ID0gdGhpcy5fc2VhcmNoUmVzdWx0c1t0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5k
ZXhdOwotICAgICAgICAgICAgc2hvd0xhc3RSZXN1bHQgPSB0cnVlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKGN1cnJlbnRWaWV3ICE9PSB0aGlzLnZpc2libGVWaWV3KSB7Ci0gICAgICAgICAg
ICB0aGlzLnNob3dWaWV3KGN1cnJlbnRWaWV3KTsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5z
ZWFyY2hDb250cm9sbGVyLmZvY3VzU2VhcmNoRmllbGQoKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmIChzaG93TGFzdFJlc3VsdCkKLSAgICAgICAgICAgIGN1cnJlbnRWaWV3Lmp1bXBUb0xhc3RT
ZWFyY2hSZXN1bHQoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY3VycmVudFZpZXcuanVt
cFRvUHJldmlvdXNTZWFyY2hSZXN1bHQoKTsKICAgICB9LAogCiAgICAgY3JlYXRlU2lkZWJhcjog
ZnVuY3Rpb24ocGFyZW50RWxlbWVudCwgcmVzaXplclBhcmVudEVsZW1lbnQpCkBAIC0zNzcsOSAr
MjMxLDIyIEBAIFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIFdlYklu
c3BlY3Rvci5zZXR0aW5nc1t0aGlzLl9zaWRlYmFyV2lkdGhTZXR0aW5nTmFtZSgpXS5zZXQodGhp
cy5zaWRlYmFyRWxlbWVudC5vZmZzZXRXaWR0aCk7CiAgICAgfSwKIAorICAgIC8vIFNob3VsZCBi
ZSBpbXBsZW1lbnRlZCBieSBhbmNlc3RvcnMuCisKKyAgICBnZXQgdG9vbGJhckl0ZW1MYWJlbCgp
CisgICAgeworICAgIH0sCisKKyAgICBnZXQgc3RhdHVzQmFySXRlbXMoKQorICAgIHsKKyAgICB9
LAorCiAgICAgdXBkYXRlTWFpblZpZXdXaWR0aDogZnVuY3Rpb24od2lkdGgpCiAgICAgewotICAg
ICAgICAvLyBTaG91bGQgYmUgaW1wbGVtZW50ZWQgYnkgYW5jZXN0b3JzLgorICAgIH0sCisKKyAg
ICBzdGF0dXNCYXJSZXNpemVkOiBmdW5jdGlvbigpCisgICAgewogICAgIH0sCiAKICAgICBjYW5T
aG93QW5jaG9yTG9jYXRpb246IGZ1bmN0aW9uKGFuY2hvcikKQEAgLTQwNSwyNiArMjcyLDYgQEAg
V2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGhhbmRsZXIoZXZl
bnQpOwogICAgICAgICAgICAgZXZlbnQuaGFuZGxlZCA9IHRydWU7CiAgICAgICAgIH0KLSAgICB9
LAotCi0gICAgcmVnaXN0ZXJTaG9ydGN1dHM6IGZ1bmN0aW9uKHNob3J0Y3V0cykKLSAgICB7Ci0g
ICAgICAgIHRoaXMuX3Nob3J0Y3V0cyA9IHNob3J0Y3V0cyB8fCB7fTsKLSAgICAgICAgdmFyIGdv
VG9MaW5lU2hvcnRjdXQgPSBXZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFsb2cuY3JlYXRlU2hvcnRj
dXQoKTsKLSAgICAgICAgdGhpcy5fc2hvcnRjdXRzW2dvVG9MaW5lU2hvcnRjdXQua2V5XSA9IHRo
aXMuX3Nob3dHb1RvTGluZURpYWxvZy5iaW5kKHRoaXMpOwotICAgIH0sCi0KLSAgICByZWdpc3Rl
clNob3J0Y3V0OiBmdW5jdGlvbihrZXksIGhhbmRsZXIpCi0gICAgewotICAgICAgICB0aGlzLl9z
aG9ydGN1dHNba2V5XSA9IGhhbmRsZXI7Ci0gICAgfSwKLQotICAgIF9zaG93R29Ub0xpbmVEaWFs
b2c6IGZ1bmN0aW9uKGUpCi0gICAgewotICAgICAgICAgdmFyIHZpZXcgPSB0aGlzLnZpc2libGVW
aWV3OwotICAgICAgICAgV2ViSW5zcGVjdG9yLkdvVG9MaW5lRGlhbG9nLnNob3codmlldyk7Ci0g
ICAgICAgICBpZiAodmlldykKLSAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFs
b2cuc2hvdyh2aWV3KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcwppbmRleCAxMmJhMGVkMzFlOTQ4N2ViZWRl
NzNlNmJhNzgxMDJlZDg2N2JiYzY2Li5hNzg0NTg2YTMxM2U5MGNmYzg0NjM3ZjM0ZDk3MDI1YTA0
MDEzYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1By
b2ZpbGVzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Q
cm9maWxlc1BhbmVsLmpzCkBAIC01MzgsNyArNTM4LDcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVz
UGFuZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGl0bGU7CiAgICAgfSwKIAotICAg
IGdldCBzZWFyY2hhYmxlVmlld3MoKQorICAgIF9zZWFyY2hhYmxlVmlld3M6IGZ1bmN0aW9uKCkK
ICAgICB7CiAgICAgICAgIHZhciB2aWV3cyA9IFtdOwogCkBAIC01NTgsNiArNTU4LDE1MiBAQCBX
ZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB2
aWV3czsKICAgICB9LAogCisgICAgcGVyZm9ybVNlYXJjaDogZnVuY3Rpb24ocXVlcnkpCisgICAg
eworICAgICAgICAvLyBDYWxsIHNlYXJjaENhbmNlbGVkIHNpbmNlIGl0IHdpbGwgcmVzZXQgZXZl
cnl0aGluZyB3ZSBuZWVkIGJlZm9yZSBkb2luZyBhIG5ldyBzZWFyY2guCisgICAgICAgIHRoaXMu
c2VhcmNoQ2FuY2VsZWQoKTsKKworICAgICAgICB2YXIgc2VhcmNoYWJsZVZpZXdzID0gdGhpcy5f
c2VhcmNoYWJsZVZpZXdzKCk7CisgICAgICAgIGlmICghc2VhcmNoYWJsZVZpZXdzIHx8ICFzZWFy
Y2hhYmxlVmlld3MubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBw
YXJlbnRFbGVtZW50ID0gdGhpcy52aWV3c0NvbnRhaW5lckVsZW1lbnQ7CisgICAgICAgIHZhciB2
aXNpYmxlVmlldyA9IHRoaXMudmlzaWJsZVZpZXc7CisgICAgICAgIHZhciBzb3J0RnVjdGlvbiA9
IHRoaXMuc2VhcmNoUmVzdWx0c1NvcnRGdW5jdGlvbjsKKworICAgICAgICB2YXIgbWF0Y2hlc0Nv
dW50VXBkYXRlVGltZW91dCA9IG51bGw7CisKKyAgICAgICAgZnVuY3Rpb24gdXBkYXRlTWF0Y2hl
c0NvdW50KCkKKyAgICAgICAgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNlYXJjaENvbnRy
b2xsZXIudXBkYXRlU2VhcmNoTWF0Y2hlc0NvdW50KHRoaXMuX3RvdGFsU2VhcmNoTWF0Y2hlcywg
dGhpcyk7CisgICAgICAgICAgICBtYXRjaGVzQ291bnRVcGRhdGVUaW1lb3V0ID0gbnVsbDsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZU1hdGNoZXNDb3VudFNvb24oKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAobWF0Y2hlc0NvdW50VXBkYXRlVGltZW91dCkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIG1hdGNoZXMgY291
bnQgZXZlcnkgaGFsZi1zZWNvbmQgc28gaXQgZG9lc24ndCBmZWVsIHR3aXRjaHkuCisgICAgICAg
ICAgICBtYXRjaGVzQ291bnRVcGRhdGVUaW1lb3V0ID0gc2V0VGltZW91dCh1cGRhdGVNYXRjaGVz
Q291bnQuYmluZCh0aGlzKSwgNTAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGZp
bmlzaGVkQ2FsbGJhY2sodmlldywgc2VhcmNoTWF0Y2hlcykKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKCFzZWFyY2hNYXRjaGVzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAgICAgdGhpcy5fdG90YWxTZWFyY2hNYXRjaGVzICs9IHNlYXJjaE1hdGNoZXM7CisgICAgICAg
ICAgICB0aGlzLl9zZWFyY2hSZXN1bHRzLnB1c2godmlldyk7CisKKyAgICAgICAgICAgIGlmIChz
b3J0RnVjdGlvbikKKyAgICAgICAgICAgICAgICB0aGlzLl9zZWFyY2hSZXN1bHRzLnNvcnQoc29y
dEZ1Y3Rpb24pOworCisgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hNYXRjaEZvdW5kKQorICAg
ICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWF0Y2hGb3VuZCh2aWV3LCBzZWFyY2hNYXRjaGVzKTsK
KworICAgICAgICAgICAgdXBkYXRlTWF0Y2hlc0NvdW50U29vbi5jYWxsKHRoaXMpOworCisgICAg
ICAgICAgICBpZiAodmlldyA9PT0gdmlzaWJsZVZpZXcpCisgICAgICAgICAgICAgICAgdmlldy5q
dW1wVG9GaXJzdFNlYXJjaFJlc3VsdCgpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGkgPSAw
OworICAgICAgICB2YXIgcGFuZWwgPSB0aGlzOworICAgICAgICB2YXIgYm91bmRGaW5pc2hlZENh
bGxiYWNrID0gZmluaXNoZWRDYWxsYmFjay5iaW5kKHRoaXMpOworICAgICAgICB2YXIgY2h1bmtJ
bnRlcnZhbElkZW50aWZpZXIgPSBudWxsOworCisgICAgICAgIC8vIFNwbGl0IHVwIHRoZSB3b3Jr
IGludG8gY2h1bmtzIHNvIHdlIGRvbid0IGJsb2NrIHRoZQorICAgICAgICAvLyBVSSB0aHJlYWQg
d2hpbGUgcHJvY2Vzc2luZy4KKworICAgICAgICBmdW5jdGlvbiBwcm9jZXNzQ2h1bmsoKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgdmlldyA9IHNlYXJjaGFibGVWaWV3c1tpXTsKKworICAg
ICAgICAgICAgaWYgKCsraSA+PSBzZWFyY2hhYmxlVmlld3MubGVuZ3RoKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHBhbmVsLl9jdXJyZW50U2VhcmNoQ2h1bmtJbnRlcnZhbElkZW50aWZpZXIgPT09
IGNodW5rSW50ZXJ2YWxJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgICAgICBkZWxldGUgcGFu
ZWwuX2N1cnJlbnRTZWFyY2hDaHVua0ludGVydmFsSWRlbnRpZmllcjsKKyAgICAgICAgICAgICAg
ICBjbGVhckludGVydmFsKGNodW5rSW50ZXJ2YWxJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKCF2aWV3KQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICAgICAgdmlldy5jdXJyZW50UXVlcnkgPSBxdWVyeTsKKyAgICAgICAgICAgIHZpZXcucGVy
Zm9ybVNlYXJjaChxdWVyeSwgYm91bmRGaW5pc2hlZENhbGxiYWNrKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHByb2Nlc3NDaHVuaygpOworCisgICAgICAgIGNodW5rSW50ZXJ2YWxJZGVudGlmaWVy
ID0gc2V0SW50ZXJ2YWwocHJvY2Vzc0NodW5rLCAyNSk7CisgICAgICAgIHRoaXMuX2N1cnJlbnRT
ZWFyY2hDaHVua0ludGVydmFsSWRlbnRpZmllciA9IGNodW5rSW50ZXJ2YWxJZGVudGlmaWVyOwor
ICAgIH0sCisKKyAgICBqdW1wVG9OZXh0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICBpZiAoIXRoaXMuc2hvd1ZpZXcgfHwgIXRoaXMuX3NlYXJjaFJlc3VsdHMgfHwgIXRo
aXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IHZhciBzaG93Rmlyc3RSZXN1bHQgPSBmYWxzZTsKKworICAgICAgICB0aGlzLl9jdXJyZW50U2Vh
cmNoUmVzdWx0SW5kZXggPSB0aGlzLl9zZWFyY2hSZXN1bHRzLmluZGV4T2YodGhpcy52aXNpYmxl
Vmlldyk7CisgICAgICAgIGlmICh0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPT09IC0x
KSB7CisgICAgICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSAwOworICAg
ICAgICAgICAgc2hvd0ZpcnN0UmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZh
ciBjdXJyZW50VmlldyA9IHRoaXMuX3NlYXJjaFJlc3VsdHNbdGhpcy5fY3VycmVudFNlYXJjaFJl
c3VsdEluZGV4XTsKKworICAgICAgICBpZiAoY3VycmVudFZpZXcuc2hvd2luZ0xhc3RTZWFyY2hS
ZXN1bHQoKSkgeworICAgICAgICAgICAgaWYgKCsrdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdElu
ZGV4ID49IHRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoKQorICAgICAgICAgICAgICAgIHRoaXMu
X2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IDA7CisgICAgICAgICAgICBjdXJyZW50VmlldyA9
IHRoaXMuX3NlYXJjaFJlc3VsdHNbdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4XTsKKyAg
ICAgICAgICAgIHNob3dGaXJzdFJlc3VsdCA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoY3VycmVudFZpZXcgIT09IHRoaXMudmlzaWJsZVZpZXcpIHsKKyAgICAgICAgICAgIHRoaXMu
c2hvd1ZpZXcoY3VycmVudFZpZXcpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNlYXJjaENv
bnRyb2xsZXIuZm9jdXNTZWFyY2hGaWVsZCgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNo
b3dGaXJzdFJlc3VsdCkKKyAgICAgICAgICAgIGN1cnJlbnRWaWV3Lmp1bXBUb0ZpcnN0U2VhcmNo
UmVzdWx0KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGN1cnJlbnRWaWV3Lmp1bXBUb05l
eHRTZWFyY2hSZXN1bHQoKTsKKyAgICB9LAorCisgICAganVtcFRvUHJldmlvdXNTZWFyY2hSZXN1
bHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5zaG93VmlldyB8fCAhdGhp
cy5fc2VhcmNoUmVzdWx0cyB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHNob3dMYXN0UmVzdWx0ID0gZmFsc2U7CisKKyAg
ICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0gdGhpcy5fc2VhcmNoUmVzdWx0
cy5pbmRleE9mKHRoaXMudmlzaWJsZVZpZXcpOworICAgICAgICBpZiAodGhpcy5fY3VycmVudFNl
YXJjaFJlc3VsdEluZGV4ID09PSAtMSkgeworICAgICAgICAgICAgdGhpcy5fY3VycmVudFNlYXJj
aFJlc3VsdEluZGV4ID0gMDsKKyAgICAgICAgICAgIHNob3dMYXN0UmVzdWx0ID0gdHJ1ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIHZhciBjdXJyZW50VmlldyA9IHRoaXMuX3NlYXJjaFJlc3VsdHNb
dGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4XTsKKworICAgICAgICBpZiAoY3VycmVudFZp
ZXcuc2hvd2luZ0ZpcnN0U2VhcmNoUmVzdWx0KCkpIHsKKyAgICAgICAgICAgIGlmICgtLXRoaXMu
X2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA8IDApCisgICAgICAgICAgICAgICAgdGhpcy5fY3Vy
cmVudFNlYXJjaFJlc3VsdEluZGV4ID0gKHRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoIC0gMSk7
CisgICAgICAgICAgICBjdXJyZW50VmlldyA9IHRoaXMuX3NlYXJjaFJlc3VsdHNbdGhpcy5fY3Vy
cmVudFNlYXJjaFJlc3VsdEluZGV4XTsKKyAgICAgICAgICAgIHNob3dMYXN0UmVzdWx0ID0gdHJ1
ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjdXJyZW50VmlldyAhPT0gdGhpcy52aXNpYmxl
VmlldykgeworICAgICAgICAgICAgdGhpcy5zaG93VmlldyhjdXJyZW50Vmlldyk7CisgICAgICAg
ICAgICBXZWJJbnNwZWN0b3Iuc2VhcmNoQ29udHJvbGxlci5mb2N1c1NlYXJjaEZpZWxkKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoc2hvd0xhc3RSZXN1bHQpCisgICAgICAgICAgICBjdXJy
ZW50Vmlldy5qdW1wVG9MYXN0U2VhcmNoUmVzdWx0KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGN1cnJlbnRWaWV3Lmp1bXBUb1ByZXZpb3VzU2VhcmNoUmVzdWx0KCk7CisgICAgfSwKKwog
ICAgIHNlYXJjaE1hdGNoRm91bmQ6IGZ1bmN0aW9uKHZpZXcsIG1hdGNoZXMpCiAgICAgewogICAg
ICAgICB2aWV3LnByb2ZpbGUuX3Byb2ZpbGVzVHJlZUVsZW1lbnQuc2VhcmNoTWF0Y2hlcyA9IG1h
dGNoZXM7CkBAIC01NjUsOCArNzExLDI2IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnBy
b3RvdHlwZSA9IHsKIAogICAgIHNlYXJjaENhbmNlbGVkOiBmdW5jdGlvbihzdGFydGluZ05ld1Nl
YXJjaCkKICAgICB7CisgICAgICAgIGlmICh0aGlzLl9zZWFyY2hSZXN1bHRzKSB7CisgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgICAgICAgICB2YXIgdmlldyA9IHRoaXMuX3NlYXJjaFJlc3VsdHNbaV07Cisg
ICAgICAgICAgICAgICAgaWYgKHZpZXcuc2VhcmNoQ2FuY2VsZWQpCisgICAgICAgICAgICAgICAg
ICAgIHZpZXcuc2VhcmNoQ2FuY2VsZWQoKTsKKyAgICAgICAgICAgICAgICBkZWxldGUgdmlldy5j
dXJyZW50UXVlcnk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICBXZWJJbnNw
ZWN0b3IuUGFuZWwucHJvdG90eXBlLnNlYXJjaENhbmNlbGVkLmNhbGwodGhpcywgc3RhcnRpbmdO
ZXdTZWFyY2gpOwogCisgICAgICAgIGlmICh0aGlzLl9jdXJyZW50U2VhcmNoQ2h1bmtJbnRlcnZh
bElkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fY3VycmVudFNl
YXJjaENodW5rSW50ZXJ2YWxJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9j
dXJyZW50U2VhcmNoQ2h1bmtJbnRlcnZhbElkZW50aWZpZXI7CisgICAgICAgIH0KKworICAgICAg
ICB0aGlzLl90b3RhbFNlYXJjaE1hdGNoZXMgPSAwOworICAgICAgICB0aGlzLl9jdXJyZW50U2Vh
cmNoUmVzdWx0SW5kZXggPSAwOworICAgICAgICB0aGlzLl9zZWFyY2hSZXN1bHRzID0gW107CisK
ICAgICAgICAgaWYgKCF0aGlzLl9wcm9maWxlcykKICAgICAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9wZXJ0aWVzU2Vj
dGlvbi5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvcGVydGllc1Nl
Y3Rpb24uanMKaW5kZXggODhjYjFhMmRiMTBkZjU1OTUwZWQyZGI0MTkxYTUwOGVmZjNmM2IzZC4u
ZDdhYzBiY2I2YzE4ZWIzMmRiY2JmYjA1YTBhNzYxYTg2MDViNjdjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9wZXJ0aWVzU2VjdGlvbi5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb3BlcnRpZXNTZWN0aW9uLmpz
CkBAIC0yNyw2ICsyNywxMCBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisvKioKKyAqIEBjb25zdHJ1
Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5TZWN0aW9ufQorICovCiBXZWJJbnNwZWN0
b3IuUHJvcGVydGllc1NlY3Rpb24gPSBmdW5jdGlvbih0aXRsZSwgc3VidGl0bGUpCiB7CiAgICAg
V2ViSW5zcGVjdG9yLlNlY3Rpb24uY2FsbCh0aGlzLCB0aXRsZSwgc3VidGl0bGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMK
aW5kZXggMmE4OGMxZWIzNzNmNzg1MzhiNzkwNWQwY2UzNzVlMzI2NWJiMDJhNy4uZjk0ODI1YmNj
ZjdiODU1ZDZkYzYwNmYwNDdiZjhiOWJiNmZhYmRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC03NSw3ICs3NSw3
IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbCA9IGZ1bmN0aW9uKGRhdGFiYXNlKQogICAg
IHRoaXMuc2lkZWJhckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5f
b25tb3VzZW1vdmUuYmluZCh0aGlzKSwgZmFsc2UpOwogICAgIHRoaXMuc2lkZWJhckVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCB0aGlzLl9vbm1vdXNlb3V0LmJpbmQodGhpcyks
IGZhbHNlKTsKIAotICAgIHRoaXMucmVnaXN0ZXJTaG9ydGN1dHMoKTsKKyAgICB0aGlzLl9yZWdp
c3RlclNob3J0Y3V0cygpOwogCiAgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMu
T25Mb2FkLCB0aGlzLl9vbkxvYWRFdmVudEZpcmVkLCB0aGlzKTsKIH0KQEAgLTEwMyw2ICsxMDMs
MjAgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5fcG9wdWxhdGVSZXNvdXJjZVRyZWUoKTsKICAgICB9LAogCisgICAgX3JlZ2lzdGVyU2hv
cnRjdXRzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9zaG9ydGN1dHMgPSB7fTsK
KyAgICAgICAgdmFyIGdvVG9MaW5lU2hvcnRjdXQgPSBXZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFs
b2cuY3JlYXRlU2hvcnRjdXQoKTsKKyAgICAgICAgdGhpcy5fc2hvcnRjdXRzW2dvVG9MaW5lU2hv
cnRjdXQua2V5XSA9IHRoaXMuX3Nob3dHb1RvTGluZURpYWxvZy5iaW5kKHRoaXMpOworICAgIH0s
CisKKyAgICBfc2hvd0dvVG9MaW5lRGlhbG9nOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICAg
dmFyIHZpZXcgPSB0aGlzLnZpc2libGVWaWV3OworICAgICAgICAgaWYgKHRoaXMudmlzaWJsZVZp
ZXcpCisgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkdvVG9MaW5lRGlhbG9nLnNob3codGhpcy52
aXNpYmxlVmlldyk7CisgICAgfSwKKwogICAgIF9vbkxvYWRFdmVudEZpcmVkOiBmdW5jdGlvbigp
CiAgICAgewogICAgICAgICB0aGlzLl9pbml0RGVmYXVsdFNlbGVjdGlvbigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwppbmRleCA2
MTE1NTkzM2JkMWZkZGJiMGY0OGNkYmIzNjE2YjYyYzY3M2ZmMDVjLi41OTZiYjZhNmJiNWVlNGMw
OGI0ZGU0ZDAxOTIxNWZhMzQzOWJkZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwpAQCAtMzIsNyArMzIsNyBAQCBXZWJJbnNw
ZWN0b3IuU2NyaXB0c1BhbmVsID0gZnVuY3Rpb24ocHJlc2VudGF0aW9uTW9kZWwpCiAKICAgICB0
aGlzLl9wcmVzZW50YXRpb25Nb2RlbCA9IHByZXNlbnRhdGlvbk1vZGVsOwogCi0gICAgdGhpcy5y
ZWdpc3RlclNob3J0Y3V0cygpOworICAgIHRoaXMuX3JlZ2lzdGVyU2hvcnRjdXRzKCk7CiAKICAg
ICB0aGlzLnRvcFN0YXR1c0JhciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAg
IHRoaXMudG9wU3RhdHVzQmFyLmNsYXNzTmFtZSA9ICJzdGF0dXMtYmFyIjsKQEAgLTIyNyw2ICsy
MjcsMjAgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHJldHVybiB0aGlzLnRvZ2dsZUJyZWFrcG9pbnRzQnV0dG9uLnRvZ2dsZWQ7CiAgICAgfSwKIAor
ICAgIF9yZWdpc3RlclNob3J0Y3V0czogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5f
c2hvcnRjdXRzID0ge307CisgICAgICAgIHZhciBnb1RvTGluZVNob3J0Y3V0ID0gV2ViSW5zcGVj
dG9yLkdvVG9MaW5lRGlhbG9nLmNyZWF0ZVNob3J0Y3V0KCk7CisgICAgICAgIHRoaXMuX3Nob3J0
Y3V0c1tnb1RvTGluZVNob3J0Y3V0LmtleV0gPSB0aGlzLl9zaG93R29Ub0xpbmVEaWFsb2cuYmlu
ZCh0aGlzKTsKKyAgICB9LAorCisgICAgX3Nob3dHb1RvTGluZURpYWxvZzogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgIHZhciB2aWV3ID0gdGhpcy52aXNpYmxlVmlldzsKKyAgICAgICAgIGlm
ICh0aGlzLnZpc2libGVWaWV3KQorICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5Hb1RvTGluZURp
YWxvZy5zaG93KHRoaXMudmlzaWJsZVZpZXcpOworICAgIH0sCisKICAgICBfdWlTb3VyY2VDb2Rl
QWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9
IGV2ZW50LmRhdGE7CkBAIC0xMDYzLDcgKzEwNzcsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgc2hvcnRjdXROYW1lcyA9IFtdOwogICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNob3J0Y3V0cy5sZW5ndGg7ICsraSkgewotICAgICAg
ICAgICAgdGhpcy5yZWdpc3RlclNob3J0Y3V0KHNob3J0Y3V0c1tpXS5rZXksIGhhbmRsZXIpOwor
ICAgICAgICAgICAgdGhpcy5fc2hvcnRjdXRzW3Nob3J0Y3V0c1tpXS5rZXldID0gaGFuZGxlcjsK
ICAgICAgICAgICAgIHNob3J0Y3V0TmFtZXMucHVzaChzaG9ydGN1dHNbaV0ubmFtZSk7CiAgICAg
ICAgIH0KICAgICAgICAgdmFyIHNlY3Rpb24gPSBXZWJJbnNwZWN0b3Iuc2hvcnRjdXRzU2NyZWVu
LnNlY3Rpb24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTY3JpcHRzIFBhbmVsIikpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZWFyY2hDb250cm9sbGVy
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZWFyY2hDb250cm9sbGVy
LmpzCmluZGV4IDBlODVkYTg3ZmQ2ODU3MGQ0ZTkwNThiZmM2ODI4MjljMjBlOTQ3MjEuLmExODIy
ZWU5MjMyOTA4Nzg5OTI1MjMzODljN2U0YWU2MzFkNTdjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2VhcmNoQ29udHJvbGxlci5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NlYXJjaENvbnRyb2xsZXIuanMKQEAgLTI5
LDYgKzI5LDkgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAq
LwogV2ViSW5zcGVjdG9yLlNlYXJjaENvbnRyb2xsZXIgPSBmdW5jdGlvbigpCiB7CiAgICAgdGhp
cy5lbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlYXJjaCIpOwpAQCAtMTMwLDcg
KzEzMyw3IEBAIFdlYkluc3BlY3Rvci5TZWFyY2hDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgaWYgKCF0aGlzLl9jdXJyZW50UXVlcnkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgcGFuZWwgPSBXZWJJbnNwZWN0b3IuY3VycmVudFBhbmVsKCk7CisgICAgICAgIHZhciBw
YW5lbCA9IFdlYkluc3BlY3Rvci5jdXJyZW50UGFuZWwoKTsKICAgICAgICAgaWYgKHBhbmVsLnBl
cmZvcm1TZWFyY2gpIHsKICAgICAgICAgICAgIGZ1bmN0aW9uIHBlcmZvcm1QYW5lbFNlYXJjaCgp
CiAgICAgICAgICAgICB7CkBAIC0xNDgsNiArMTUxLDEwIEBAIFdlYkluc3BlY3Rvci5TZWFyY2hD
b250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0gez9udW1iZXI9fSBtYXRjaGVzCisgICAgICogQHBhcmFtIHtudW1iZXI9fSBj
dXJyZW50TWF0Y2hJbmRleAorICAgICAqLwogICAgIF91cGRhdGVTZWFyY2hNYXRjaGVzQ291bnRB
bmRDdXJyZW50TWF0Y2hJbmRleDogZnVuY3Rpb24obWF0Y2hlcywgY3VycmVudE1hdGNoSW5kZXgp
CiAgICAgewogICAgICAgICBpZiAobWF0Y2hlcyA9PSBudWxsKSB7CkBAIC0xOTMsMTIgKzIwMCwx
MiBAQCBXZWJJbnNwZWN0b3IuU2VhcmNoQ29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICAvLyBJZiBmb2N1cyBiZWxvbmdzIGhlcmUgYW5kIHRleHQgaXMgZW1wdHkgLSBub3RoaW5n
IHRvIGRvLCByZXR1cm4gdW5oYW5kbGVkLgogICAgICAgICAgICAgLy8gV2hlbiBzZWFyY2ggd2Fz
IHNlbGVjdGVkIG1hbnVhbGx5IGFuZCBpcyBjdXJyZW50bHkgYmxhbmssIHdlJ2QgbGlrZSBFc2Mg
c3RheSB1bmhhbmRsZWQKICAgICAgICAgICAgIC8vIGFuZCBoaXQgY29uc29sZSBkcmF3ZXIgaGFu
ZGxlci4KLSAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQudmFsdWUgPT09ICIiICYmIHRoaXMu
Y3VycmVudEZvY3VzRWxlbWVudCA9PT0gdGhpcy5wcmV2aW91c0ZvY3VzRWxlbWVudCkKKyAgICAg
ICAgICAgIGlmIChldmVudC50YXJnZXQudmFsdWUgPT09ICIiICYmIFdlYkluc3BlY3Rvci5jdXJy
ZW50Rm9jdXNFbGVtZW50ID09PSBXZWJJbnNwZWN0b3IucHJldmlvdXNGb2N1c0VsZW1lbnQpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQo
KTsKICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogCi0gICAgICAgICAgICB0
aGlzLmNhbmNlbFNlYXJjaChldmVudCk7CisgICAgICAgICAgICB0aGlzLmNhbmNlbFNlYXJjaCgp
OwogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmN1cnJlbnRGb2N1c0VsZW1lbnQgPSBXZWJJbnNw
ZWN0b3IucHJldmlvdXNGb2N1c0VsZW1lbnQ7CiAgICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9y
LmN1cnJlbnRGb2N1c0VsZW1lbnQgPT09IGV2ZW50LnRhcmdldCkKICAgICAgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IuY3VycmVudEZvY3VzRWxlbWVudC5jdXJyZW50Rm9jdXNFbGVtZW50LnNlbGVj
dCgpOwpAQCAtMjI3LDYgKzIzNCwxMSBAQCBXZWJJbnNwZWN0b3IuU2VhcmNoQ29udHJvbGxlci5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3BlcmZvcm1TZWFyY2goZXZlbnQudGFyZ2V0LnZh
bHVlLCBmb3JjZVNlYXJjaCwgZXZlbnQuc2hpZnRLZXksIGZhbHNlKTsKICAgICB9LAogCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtib29sZWFuPX0gZm9yY2VTZWFyY2gKKyAgICAgKiBAcGFyYW0g
e2Jvb2xlYW49fSBpc0JhY2t3YXJkU2VhcmNoCisgICAgICogQHBhcmFtIHtib29sZWFuPX0gcmVw
ZWF0U2VhcmNoCisgICAgICovCiAgICAgX3BlcmZvcm1TZWFyY2g6IGZ1bmN0aW9uKHF1ZXJ5LCBm
b3JjZVNlYXJjaCwgaXNCYWNrd2FyZFNlYXJjaCwgcmVwZWF0U2VhcmNoKQogICAgIHsKICAgICAg
ICAgdmFyIGlzU2hvcnRTZWFyY2ggPSAocXVlcnkubGVuZ3RoIDwgMyk7CkBAIC0yODUsMyArMjk3
LDggQEAgV2ViSW5zcGVjdG9yLlNlYXJjaENvbnRyb2xsZXIucHJvdG90eXBlID0gewogICAgICAg
ICBjdXJyZW50UGFuZWwucGVyZm9ybVNlYXJjaChxdWVyeSk7CiAgICAgfQogfQorCisvKioKKyAq
IEB0eXBlIHs/V2ViSW5zcGVjdG9yLlNlYXJjaENvbnRyb2xsZXJ9CisgKi8KK1dlYkluc3BlY3Rv
ci5zZWFyY2hDb250cm9sbGVyID0gbnVsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU2VjdGlvbi5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2VjdGlvbi5qcwppbmRleCAzNmE0NDIwMmRjMTU0NjdkNjVhYWMzMzA1NjlkZDY0
Y2Q2YjE1MjFhLi44NTViN2MxZWRlMzM0OTM3YjY5MWQwMmY1MDdiOTMyMGI5ZTc4MDYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NlY3Rpb24uanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZWN0aW9uLmpzCkBAIC0yNyw2
ICsyNyw5IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8K
IFdlYkluc3BlY3Rvci5TZWN0aW9uID0gZnVuY3Rpb24odGl0bGUsIHN1YnRpdGxlKQogewogICAg
IHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwpAQCAtMTE4LDEy
ICsxMjEsMTcgQEAgV2ViSW5zcGVjdG9yLlNlY3Rpb24ucHJvdG90eXBlID0gewogICAgIHNldCBw
b3B1bGF0ZWQoeCkKICAgICB7CiAgICAgICAgIHRoaXMuX3BvcHVsYXRlZCA9IHg7Ci0gICAgICAg
IGlmICgheCAmJiB0aGlzLm9ucG9wdWxhdGUgJiYgdGhpcy5fZXhwYW5kZWQpIHsKLSAgICAgICAg
ICAgIHRoaXMub25wb3B1bGF0ZSh0aGlzKTsKKyAgICAgICAgaWYgKCF4ICYmIHRoaXMuX2V4cGFu
ZGVkKSB7CisgICAgICAgICAgICB0aGlzLm9ucG9wdWxhdGUoKTsKICAgICAgICAgICAgIHRoaXMu
X3BvcHVsYXRlZCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9LAogCisgICAgb25wb3B1bGF0ZTog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgLy8gT3ZlcnJpZGVuIGJ5IHN1YmNsYXNzZXMuCisg
ICAgfSwKKwogICAgIGdldCBmaXJzdFNpYmxpbmcoKQogICAgIHsKICAgICAgICAgdmFyIHBhcmVu
dCA9IHRoaXMuZWxlbWVudC5wYXJlbnRFbGVtZW50OwpAQCAtMTgzLDggKzE5MSw4IEBAIFdlYklu
c3BlY3Rvci5TZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZXhwYW5kZWQgPSB0
cnVlOwogICAgICAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygiZXhwYW5kZWQiKTsKIAot
ICAgICAgICBpZiAoIXRoaXMuX3BvcHVsYXRlZCAmJiB0aGlzLm9ucG9wdWxhdGUpIHsKLSAgICAg
ICAgICAgIHRoaXMub25wb3B1bGF0ZSh0aGlzKTsKKyAgICAgICAgaWYgKCF0aGlzLl9wb3B1bGF0
ZWQpIHsKKyAgICAgICAgICAgIHRoaXMub25wb3B1bGF0ZSgpOwogICAgICAgICAgICAgdGhpcy5f
cG9wdWxhdGVkID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NpZGViYXJQYW5lLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TaWRlYmFyUGFuZS5qcwppbmRleCBlYmM2MmRiZmMzMjAw
ZmY0MjE5MGRiMWE1ZGRiMTI2ZmE4YWI3NDhiLi5iN2ZhNzQ3ZGQzZDliODQ4MjEzZTFmMWNhZmJj
NGU0NWU4MDI1ZjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NpZGViYXJQYW5lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU2lkZWJhclBhbmUuanMKQEAgLTI2LDYgKzI2LDEwIEBACiAgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
Ky8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk9iamVjdH0K
KyAqLwogV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lID0gZnVuY3Rpb24odGl0bGUpCiB7CiAgICAg
dGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rvb2xiYXIuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rvb2xiYXIuanMKaW5kZXggOGViNTEwYWNlYjYz
ZGQxZTdiYjJhNzQxODdkYzQwYTg1Zjc5YzRlYS4uMDA3NmQwZDRjZDY2MTdjMmExOTU3ZGIwZjAy
NzZhOGUwMDNhNjE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Ub29sYmFyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
VG9vbGJhci5qcwpAQCAtMjksNiArMjksOSBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisvKioKKyAq
IEBjb25zdHJ1Y3RvcgorICovCiBXZWJJbnNwZWN0b3IuVG9vbGJhciA9IGZ1bmN0aW9uKCkKIHsK
ICAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9vbGJhciIpOwpA
QCAtMTQyLDcgKzE0NSw3IEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5fZHJvcGRvd25CdXR0b24uYWRkU3R5bGVDbGFz
cygiaGlkZGVuIik7CiAgICAgfQotfTsKK30KIAogV2ViSW5zcGVjdG9yLlRvb2xiYXIuY3JlYXRl
UGFuZWxUb29sYmFySXRlbSA9IGZ1bmN0aW9uKHBhbmVsKQogewpAQCAtMTU1LDcgKzE1OCw3IEBA
IFdlYkluc3BlY3Rvci5Ub29sYmFyLmNyZWF0ZVBhbmVsVG9vbGJhckl0ZW0gPSBmdW5jdGlvbihw
YW5lbCkKICAgICAgICAgV2ViSW5zcGVjdG9yLnRvb2xiYXIuX3VwZGF0ZURyb3Bkb3duQnV0dG9u
QW5kSGlkZURyb3Bkb3duKCk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5zZXRDdXJyZW50UGFuZWwo
cGFuZWwpOwogICAgIH0KLSAgICB0b29sYmFySXRlbS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IG9uVG9vbGJhckl0ZW1DbGlja2VkKTsKKyAgICB0b29sYmFySXRlbS5hZGRFdmVudExpc3RlbmVy
KCJjbGljayIsIG9uVG9vbGJhckl0ZW1DbGlja2VkLCBmYWxzZSk7CiAKICAgICB2YXIgaWNvbkVs
ZW1lbnQgPSB0b29sYmFySXRlbS5jcmVhdGVDaGlsZCgiZGl2IiwgInRvb2xiYXItaWNvbiIpOwog
CkBAIC0xNjgsNiArMTcxLDkgQEAgV2ViSW5zcGVjdG9yLlRvb2xiYXIuY3JlYXRlUGFuZWxUb29s
YmFySXRlbSA9IGZ1bmN0aW9uKHBhbmVsKQogICAgIHJldHVybiB0b29sYmFySXRlbTsKIH0KIAor
LyoqCisgKiBAY29uc3RydWN0b3IKKyAqLwogV2ViSW5zcGVjdG9yLlRvb2xiYXJEcm9wZG93biA9
IGZ1bmN0aW9uKCkKIHsKICAgICB0aGlzLl90b29sYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRvb2xiYXIiKTsKQEAgLTE5Myw3ICsxOTksNiBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhckRy
b3Bkb3duLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmxlZnQgPSB0
aGlzLl9hcnJvdy50b3RhbE9mZnNldExlZnQoKSArICJweCI7CiAgICAgICAgIHRoaXMuX2NvbnRl
bnRFbGVtZW50LnN0eWxlLm1heEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCAtIHRvcCAtIDIw
ICsgInB4IjsKICAgICAgICAgdGhpcy5fdG9vbGJhci5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQp
OwotICAgICAgICBXZWJJbnNwZWN0b3IuY3VycmVudEZvY3VzRWxlbWVudCA9IHRoaXMuY29udGVu
dEVsZW1lbnQ7CiAgICAgfSwKIAogICAgIGhpZGU6IGZ1bmN0aW9uKCkKQEAgLTIyNyw0ICsyMzIs
OSBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3duLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgIHRoaXMuaGlkZSgpOwogICAgIH0KLX07
Cit9CisKKy8qKgorICogQHR5cGUgez9XZWJJbnNwZWN0b3IuVG9vbGJhcn0KKyAqLworV2ViSW5z
cGVjdG9yLnRvb2xiYXIgPSBudWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9VSVV0aWxzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0OWE1NDJmYjFkZGIyNTA4NGRhYjI1YmVjNDg3
YWUwOTM1YmIyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1VJVXRpbHMuanMKQEAgLTAsMCArMSwxNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNyBNYXR0IExpbGVrIChwZXd0ZXJtb29zZUBnbWFpbC5jb20pLgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEpvc2VwaCBQZWNvcmFybworICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5lbGVtZW50
RHJhZ1N0YXJ0ID0gZnVuY3Rpb24oZWxlbWVudCwgZGl2aWRlckRyYWcsIGVsZW1lbnREcmFnRW5k
LCBldmVudCwgY3Vyc29yKQoreworICAgIGlmIChXZWJJbnNwZWN0b3IuX2VsZW1lbnREcmFnZ2lu
Z0V2ZW50TGlzdGVuZXIgfHwgV2ViSW5zcGVjdG9yLl9lbGVtZW50RW5kRHJhZ2dpbmdFdmVudExp
c3RlbmVyKQorICAgICAgICBXZWJJbnNwZWN0b3IuZWxlbWVudERyYWdFbmQoZXZlbnQpOworCisg
ICAgV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ2dpbmdFdmVudExpc3RlbmVyID0gZGl2aWRlckRy
YWc7CisgICAgV2ViSW5zcGVjdG9yLl9lbGVtZW50RW5kRHJhZ2dpbmdFdmVudExpc3RlbmVyID0g
ZWxlbWVudERyYWdFbmQ7CisKKyAgICB2YXIgdGFyZ2V0RG9jdW1lbnQgPSBldmVudC50YXJnZXQu
b3duZXJEb2N1bWVudDsKKyAgICB0YXJnZXREb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3Vz
ZW1vdmUiLCBkaXZpZGVyRHJhZywgdHJ1ZSk7CisgICAgdGFyZ2V0RG9jdW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigibW91c2V1cCIsIGVsZW1lbnREcmFnRW5kLCB0cnVlKTsKKworICAgIHRhcmdldERv
Y3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gY3Vyc29yOworCisgICAgZXZlbnQucHJldmVudERl
ZmF1bHQoKTsKK30KKworV2ViSW5zcGVjdG9yLmVsZW1lbnREcmFnRW5kID0gZnVuY3Rpb24oZXZl
bnQpCit7CisgICAgdmFyIHRhcmdldERvY3VtZW50ID0gZXZlbnQudGFyZ2V0Lm93bmVyRG9jdW1l
bnQ7CisgICAgdGFyZ2V0RG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwg
V2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ2dpbmdFdmVudExpc3RlbmVyLCB0cnVlKTsKKyAgICB0
YXJnZXREb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgV2ViSW5zcGVjdG9y
Ll9lbGVtZW50RW5kRHJhZ2dpbmdFdmVudExpc3RlbmVyLCB0cnVlKTsKKworICAgIHRhcmdldERv
Y3VtZW50LmJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoImN1cnNvciIpOworCisgICAgZGVsZXRl
IFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdnaW5nRXZlbnRMaXN0ZW5lcjsKKyAgICBkZWxldGUg
V2ViSW5zcGVjdG9yLl9lbGVtZW50RW5kRHJhZ2dpbmdFdmVudExpc3RlbmVyOworCisgICAgZXZl
bnQucHJldmVudERlZmF1bHQoKTsKK30KKworV2ViSW5zcGVjdG9yLmFuaW1hdGVTdHlsZSA9IGZ1
bmN0aW9uKGFuaW1hdGlvbnMsIGR1cmF0aW9uLCBjYWxsYmFjaykKK3sKKyAgICB2YXIgaW50ZXJ2
YWw7CisgICAgdmFyIGNvbXBsZXRlID0gMDsKKyAgICB2YXIgaGFzQ29tcGxldGVkID0gZmFsc2U7
CisKKyAgICBjb25zdCBpbnRlcnZhbER1cmF0aW9uID0gKDEwMDAgLyAzMCk7IC8vIDMwIGZyYW1l
cyBwZXIgc2Vjb25kLgorICAgIGNvbnN0IGFuaW1hdGlvbnNMZW5ndGggPSBhbmltYXRpb25zLmxl
bmd0aDsKKyAgICBjb25zdCBwcm9wZXJ0eVVuaXQgPSB7b3BhY2l0eTogIiJ9OworICAgIGNvbnN0
IGRlZmF1bHRVbml0ID0gInB4IjsKKworICAgIGZ1bmN0aW9uIGN1YmljSW5PdXQodCwgYiwgYywg
ZCkKKyAgICB7CisgICAgICAgIGlmICgodC89ZC8yKSA8IDEpIHJldHVybiBjLzIqdCp0KnQgKyBi
OworICAgICAgICByZXR1cm4gYy8yKigodC09MikqdCp0ICsgMikgKyBiOworICAgIH0KKworICAg
IC8vIFByZS1wcm9jZXNzIGFuaW1hdGlvbnMuCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbmlt
YXRpb25zTGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIGFuaW1hdGlvbiA9IGFuaW1hdGlvbnNb
aV07CisgICAgICAgIHZhciBlbGVtZW50ID0gbnVsbCwgc3RhcnQgPSBudWxsLCBlbmQgPSBudWxs
LCBrZXkgPSBudWxsOworICAgICAgICBmb3IgKGtleSBpbiBhbmltYXRpb24pIHsKKyAgICAgICAg
ICAgIGlmIChrZXkgPT09ICJlbGVtZW50IikKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gYW5p
bWF0aW9uW2tleV07CisgICAgICAgICAgICBlbHNlIGlmIChrZXkgPT09ICJzdGFydCIpCisgICAg
ICAgICAgICAgICAgc3RhcnQgPSBhbmltYXRpb25ba2V5XTsKKyAgICAgICAgICAgIGVsc2UgaWYg
KGtleSA9PT0gImVuZCIpCisgICAgICAgICAgICAgICAgZW5kID0gYW5pbWF0aW9uW2tleV07Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIWVsZW1lbnQgfHwgIWVuZCkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIGlmICghc3RhcnQpIHsKKyAgICAgICAgICAgIHZhciBjb21wdXRl
ZFN0eWxlID0gZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5
bGUoZWxlbWVudCk7CisgICAgICAgICAgICBzdGFydCA9IHt9OworICAgICAgICAgICAgZm9yIChr
ZXkgaW4gZW5kKQorICAgICAgICAgICAgICAgIHN0YXJ0W2tleV0gPSBwYXJzZUludChjb21wdXRl
ZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoa2V5KSwgMTApOworICAgICAgICAgICAgYW5pbWF0aW9u
LnN0YXJ0ID0gc3RhcnQ7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZm9yIChrZXkgaW4g
c3RhcnQpCisgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShrZXksIHN0
YXJ0W2tleV0gKyAoa2V5IGluIHByb3BlcnR5VW5pdCA/IHByb3BlcnR5VW5pdFtrZXldIDogZGVm
YXVsdFVuaXQpKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhbmltYXRlTG9vcCgpCisgICAgewor
ICAgICAgICBpZiAoaGFzQ29tcGxldGVkKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAK
KyAgICAgICAgLy8gQWR2YW5jZSBmb3J3YXJkLgorICAgICAgICBjb21wbGV0ZSArPSBpbnRlcnZh
bER1cmF0aW9uOworICAgICAgICB2YXIgbmV4dCA9IGNvbXBsZXRlICsgaW50ZXJ2YWxEdXJhdGlv
bjsKKworICAgICAgICAvLyBNYWtlIHN0eWxlIGNoYW5nZXMuCisgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgYW5pbWF0aW9uc0xlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgYW5pbWF0
aW9uID0gYW5pbWF0aW9uc1tpXTsKKyAgICAgICAgICAgIHZhciBlbGVtZW50ID0gYW5pbWF0aW9u
LmVsZW1lbnQ7CisgICAgICAgICAgICB2YXIgc3RhcnQgPSBhbmltYXRpb24uc3RhcnQ7CisgICAg
ICAgICAgICB2YXIgZW5kID0gYW5pbWF0aW9uLmVuZDsKKyAgICAgICAgICAgIGlmICghZWxlbWVu
dCB8fCAhZW5kKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICB2YXIg
c3R5bGUgPSBlbGVtZW50LnN0eWxlOworICAgICAgICAgICAgZm9yIChrZXkgaW4gZW5kKSB7Cisg
ICAgICAgICAgICAgICAgdmFyIGVuZFZhbHVlID0gZW5kW2tleV07CisgICAgICAgICAgICAgICAg
aWYgKG5leHQgPCBkdXJhdGlvbikgeworICAgICAgICAgICAgICAgICAgICB2YXIgc3RhcnRWYWx1
ZSA9IHN0YXJ0W2tleV07CisgICAgICAgICAgICAgICAgICAgIHZhciBuZXdWYWx1ZSA9IGN1Ymlj
SW5PdXQoY29tcGxldGUsIHN0YXJ0VmFsdWUsIGVuZFZhbHVlIC0gc3RhcnRWYWx1ZSwgZHVyYXRp
b24pOworICAgICAgICAgICAgICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eShrZXksIG5ld1ZhbHVl
ICsgKGtleSBpbiBwcm9wZXJ0eVVuaXQgPyBwcm9wZXJ0eVVuaXRba2V5XSA6IGRlZmF1bHRVbml0
KSk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHN0eWxlLnNl
dFByb3BlcnR5KGtleSwgZW5kVmFsdWUgKyAoa2V5IGluIHByb3BlcnR5VW5pdCA/IHByb3BlcnR5
VW5pdFtrZXldIDogZGVmYXVsdFVuaXQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIC8vIEVuZCBjb25kaXRpb24uCisgICAgICAgIGlmIChjb21wbGV0ZSA+PSBkdXJhdGlv
bikgeworICAgICAgICAgICAgaGFzQ29tcGxldGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGNsZWFy
SW50ZXJ2YWwoaW50ZXJ2YWwpOworICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBmb3Jj
ZUNvbXBsZXRlKCkKKyAgICB7CisgICAgICAgIGlmIChoYXNDb21wbGV0ZWQpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgY29tcGxldGUgPSBkdXJhdGlvbjsKKyAgICAgICAgYW5pbWF0
ZUxvb3AoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjYW5jZWwoKQorICAgIHsKKyAgICAgICAg
aGFzQ29tcGxldGVkID0gdHJ1ZTsKKyAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7Cisg
ICAgfQorCisgICAgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChhbmltYXRlTG9vcCwgaW50ZXJ2YWxE
dXJhdGlvbik7CisgICAgcmV0dXJuIHsKKyAgICAgICAgY2FuY2VsOiBjYW5jZWwsCisgICAgICAg
IGZvcmNlQ29tcGxldGU6IGZvcmNlQ29tcGxldGUKKyAgICB9OworfQorCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggNTJhYzkzNDI0M2IwYTlm
YjViNDIwMWQ3M2Q3MWY2NjhhYmQyNDZjNC4uZDViZjllYmNmZGYwZjNiNWUxM2NkM2JiMDEyNTdk
NWFiMjRiODY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9XZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2Vi
S2l0LnFyYwpAQCAtMTM1LDYgKzEzNSw3IEBACiAgICAgPGZpbGU+VG9wRG93blByb2ZpbGVEYXRh
R3JpZFRyZWUuanM8L2ZpbGU+CiAgICAgPGZpbGU+dHJlZW91dGxpbmUuanM8L2ZpbGU+CiAgICAg
PGZpbGU+VUlTb3VyY2VDb2RlLmpzPC9maWxlPgorICAgIDxmaWxlPlVJVXRpbHMuanM8L2ZpbGU+
CiAgICAgPGZpbGU+VXNlck1ldHJpY3MuanM8L2ZpbGU+CiAgICAgPGZpbGU+dXRpbGl0aWVzLmpz
PC9maWxlPgogICAgIDxmaWxlPlZpZXcuanM8L2ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanMKaW5kZXggZWZkMGZlM2Q4ZTMyNGFjMmYzN2VlYmI4
MTk0NjJjZTExNzE4MmE1ZS4uZjlhYWU4YjQ4MzlkYTBlZDdjZmU3ZWIyMzIzMWJjZDYxZjM5ZTc5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5z
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qcwpA
QCAtNzYsNiArNzYsOCBAQCBBcnJheS5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24ob2JqKSB7
fQogCiBXZWJJbnNwZWN0b3IuZXh0ZW5zaW9uU2VydmVyID0ge30KIFdlYkluc3BlY3Rvci5leHRl
bnNpb25TZXJ2ZXIubm90aWZ5UmVzb3VyY2VDb250ZW50Q29tbWl0dGVkID0gZnVuY3Rpb24ocmVz
b3VyY2UsIGNvbnRlbnQpIHt9CitXZWJJbnNwZWN0b3IuZXh0ZW5zaW9uU2VydmVyLm5vdGlmeVBh
bmVsU2hvd24gPSBmdW5jdGlvbihwYW5lbCkge30KK1dlYkluc3BlY3Rvci5leHRlbnNpb25TZXJ2
ZXIubm90aWZ5UGFuZWxIaWRkZW4gPSBmdW5jdGlvbihwYW5lbCkge30KIAogLyoqCiAgKiBAcGFy
YW0ge3N0cmluZ30gdXJsCkBAIC0xNDYsMyArMTQ4LDI4IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRz
UGFuZWwgPSBmdW5jdGlvbigpCiAgKiBAdHlwZSB7P1dlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWx9
CiAgKi8KIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cyA9IG51bGw7CisKKy8qKgorICogQHJl
dHVybiB7V2ViSW5zcGVjdG9yLlBhbmVsfSAKKyAqLworV2ViSW5zcGVjdG9yLmN1cnJlbnRQYW5l
bCA9IGZ1bmN0aW9uKCkge30KKworLyoqCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5QYW5lbH0g
cGFuZWwKKyAqLworV2ViSW5zcGVjdG9yLnNldEN1cnJlbnRQYW5lbCA9IGZ1bmN0aW9uKHBhbmVs
KSB7fQorCisvKioKKyAqIEB0eXBlIHs/RWxlbWVudH0KKyAqLworV2ViSW5zcGVjdG9yLmN1cnJl
bnRGb2N1c0VsZW1lbnQgPSBudWxsOworCisvKioKKyAqIEB0eXBlIHs/RWxlbWVudH0KKyAqLwor
V2ViSW5zcGVjdG9yLnByZXZpb3VzRm9jdXNFbGVtZW50ID0gbnVsbDsKKworLyoqCisgKiBAdHlw
ZSB7c3RyaW5nfQorICovCitXZWJJbnNwZWN0b3IucGxhdGZvcm1GbGF2b3IgPSAiIjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4
IDg1YjE3YWFjZTFjOTc2ZmNiMTM2ZGM4MzYxYWZkM2E2MTRlYWRlZmEuLmViNjhhYjM1M2MxNDVk
MDU5ZmM1OGMyN2M3Njk0Y2VhZGYxY2I4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAtNDMsNiArNDMsNyBAQCBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InV0aWxpdGllcy5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQmluYXJ5
U2VhcmNoLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJ0cmVlb3V0bGluZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIHNyYz0iVUlVdGlscy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iaW5zcGVjdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJJbnNwZWN0b3JCYWNrZW5kU3R1Yi5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSW5zcGVjdG9y
RnJvbnRlbmRIb3N0U3R1Yi5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IDhjMjcxZTgxYjUyN2VmNTQ0OTZlYjU0
NTEwYzZkNDdhYjFmZDI3OGQuLjM1MWM1MmQ5ZjZiMGQxYjM1ODYyYTkyZTg2ZDI4Yzc4OGQxNmRl
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmpzCkBAIC04ODksMTQyICs4ODksNiBAQCBXZWJJbnNwZWN0b3IuY29udGV4dE1lbnVFdmVudEZp
cmVkID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiB9
CiAKLVdlYkluc3BlY3Rvci5hbmltYXRlU3R5bGUgPSBmdW5jdGlvbihhbmltYXRpb25zLCBkdXJh
dGlvbiwgY2FsbGJhY2spCi17Ci0gICAgdmFyIGludGVydmFsOwotICAgIHZhciBjb21wbGV0ZSA9
IDA7Ci0gICAgdmFyIGhhc0NvbXBsZXRlZCA9IGZhbHNlOwotCi0gICAgY29uc3QgaW50ZXJ2YWxE
dXJhdGlvbiA9ICgxMDAwIC8gMzApOyAvLyAzMCBmcmFtZXMgcGVyIHNlY29uZC4KLSAgICBjb25z
dCBhbmltYXRpb25zTGVuZ3RoID0gYW5pbWF0aW9ucy5sZW5ndGg7Ci0gICAgY29uc3QgcHJvcGVy
dHlVbml0ID0ge29wYWNpdHk6ICIifTsKLSAgICBjb25zdCBkZWZhdWx0VW5pdCA9ICJweCI7Ci0K
LSAgICBmdW5jdGlvbiBjdWJpY0luT3V0KHQsIGIsIGMsIGQpCi0gICAgewotICAgICAgICBpZiAo
KHQvPWQvMikgPCAxKSByZXR1cm4gYy8yKnQqdCp0ICsgYjsKLSAgICAgICAgcmV0dXJuIGMvMioo
KHQtPTIpKnQqdCArIDIpICsgYjsKLSAgICB9Ci0KLSAgICAvLyBQcmUtcHJvY2VzcyBhbmltYXRp
b25zLgotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYW5pbWF0aW9uc0xlbmd0aDsgKytpKSB7Ci0g
ICAgICAgIHZhciBhbmltYXRpb24gPSBhbmltYXRpb25zW2ldOwotICAgICAgICB2YXIgZWxlbWVu
dCA9IG51bGwsIHN0YXJ0ID0gbnVsbCwgZW5kID0gbnVsbCwga2V5ID0gbnVsbDsKLSAgICAgICAg
Zm9yIChrZXkgaW4gYW5pbWF0aW9uKSB7Ci0gICAgICAgICAgICBpZiAoa2V5ID09PSAiZWxlbWVu
dCIpCi0gICAgICAgICAgICAgICAgZWxlbWVudCA9IGFuaW1hdGlvbltrZXldOwotICAgICAgICAg
ICAgZWxzZSBpZiAoa2V5ID09PSAic3RhcnQiKQotICAgICAgICAgICAgICAgIHN0YXJ0ID0gYW5p
bWF0aW9uW2tleV07Ci0gICAgICAgICAgICBlbHNlIGlmIChrZXkgPT09ICJlbmQiKQotICAgICAg
ICAgICAgICAgIGVuZCA9IGFuaW1hdGlvbltrZXldOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KCFlbGVtZW50IHx8ICFlbmQpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAo
IXN0YXJ0KSB7Ci0gICAgICAgICAgICB2YXIgY29tcHV0ZWRTdHlsZSA9IGVsZW1lbnQub3duZXJE
b2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpOwotICAgICAgICAg
ICAgc3RhcnQgPSB7fTsKLSAgICAgICAgICAgIGZvciAoa2V5IGluIGVuZCkKLSAgICAgICAgICAg
ICAgICBzdGFydFtrZXldID0gcGFyc2VJbnQoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KGtleSkpOwotICAgICAgICAgICAgYW5pbWF0aW9uLnN0YXJ0ID0gc3RhcnQ7Ci0gICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgZm9yIChrZXkgaW4gc3RhcnQpCi0gICAgICAgICAgICAgICAgZWxl
bWVudC5zdHlsZS5zZXRQcm9wZXJ0eShrZXksIHN0YXJ0W2tleV0gKyAoa2V5IGluIHByb3BlcnR5
VW5pdCA/IHByb3BlcnR5VW5pdFtrZXldIDogZGVmYXVsdFVuaXQpKTsKLSAgICB9Ci0KLSAgICBm
dW5jdGlvbiBhbmltYXRlTG9vcCgpCi0gICAgewotICAgICAgICBpZiAoaGFzQ29tcGxldGVkKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgLy8gQWR2YW5jZSBmb3J3YXJk
LgotICAgICAgICBjb21wbGV0ZSArPSBpbnRlcnZhbER1cmF0aW9uOwotICAgICAgICB2YXIgbmV4
dCA9IGNvbXBsZXRlICsgaW50ZXJ2YWxEdXJhdGlvbjsKLQotICAgICAgICAvLyBNYWtlIHN0eWxl
IGNoYW5nZXMuCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYW5pbWF0aW9uc0xlbmd0aDsg
KytpKSB7Ci0gICAgICAgICAgICB2YXIgYW5pbWF0aW9uID0gYW5pbWF0aW9uc1tpXTsKLSAgICAg
ICAgICAgIHZhciBlbGVtZW50ID0gYW5pbWF0aW9uLmVsZW1lbnQ7Ci0gICAgICAgICAgICB2YXIg
c3RhcnQgPSBhbmltYXRpb24uc3RhcnQ7Ci0gICAgICAgICAgICB2YXIgZW5kID0gYW5pbWF0aW9u
LmVuZDsKLSAgICAgICAgICAgIGlmICghZWxlbWVudCB8fCAhZW5kKQotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgICAgICB2YXIgc3R5bGUgPSBlbGVtZW50LnN0eWxlOwotICAg
ICAgICAgICAgZm9yIChrZXkgaW4gZW5kKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGVuZFZhbHVl
ID0gZW5kW2tleV07Ci0gICAgICAgICAgICAgICAgaWYgKG5leHQgPCBkdXJhdGlvbikgewotICAg
ICAgICAgICAgICAgICAgICB2YXIgc3RhcnRWYWx1ZSA9IHN0YXJ0W2tleV07Ci0gICAgICAgICAg
ICAgICAgICAgIHZhciBuZXdWYWx1ZSA9IGN1YmljSW5PdXQoY29tcGxldGUsIHN0YXJ0VmFsdWUs
IGVuZFZhbHVlIC0gc3RhcnRWYWx1ZSwgZHVyYXRpb24pOwotICAgICAgICAgICAgICAgICAgICBz
dHlsZS5zZXRQcm9wZXJ0eShrZXksIG5ld1ZhbHVlICsgKGtleSBpbiBwcm9wZXJ0eVVuaXQgPyBw
cm9wZXJ0eVVuaXRba2V5XSA6IGRlZmF1bHRVbml0KSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIHN0eWxlLnNldFByb3BlcnR5KGtleSwgZW5kVmFsdWUgKyAo
a2V5IGluIHByb3BlcnR5VW5pdCA/IHByb3BlcnR5VW5pdFtrZXldIDogZGVmYXVsdFVuaXQpKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIEVuZCBjb25kaXRpb24uCi0g
ICAgICAgIGlmIChjb21wbGV0ZSA+PSBkdXJhdGlvbikgewotICAgICAgICAgICAgaGFzQ29tcGxl
dGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOwotICAgICAg
ICAgICAgaWYgKGNhbGxiYWNrKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmb3JjZUNvbXBsZXRlKCkKLSAgICB7Ci0gICAgICAg
IGlmIChoYXNDb21wbGV0ZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgY29tcGxl
dGUgPSBkdXJhdGlvbjsKLSAgICAgICAgYW5pbWF0ZUxvb3AoKTsKLSAgICB9Ci0KLSAgICBmdW5j
dGlvbiBjYW5jZWwoKQotICAgIHsKLSAgICAgICAgaGFzQ29tcGxldGVkID0gdHJ1ZTsKLSAgICAg
ICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7Ci0gICAgfQotCi0gICAgaW50ZXJ2YWwgPSBzZXRJ
bnRlcnZhbChhbmltYXRlTG9vcCwgaW50ZXJ2YWxEdXJhdGlvbik7Ci0gICAgcmV0dXJuIHsKLSAg
ICAgICAgY2FuY2VsOiBjYW5jZWwsCi0gICAgICAgIGZvcmNlQ29tcGxldGU6IGZvcmNlQ29tcGxl
dGUKLSAgICB9OwotfQotCi1XZWJJbnNwZWN0b3IuZWxlbWVudERyYWdTdGFydCA9IGZ1bmN0aW9u
KGVsZW1lbnQsIGRpdmlkZXJEcmFnLCBlbGVtZW50RHJhZ0VuZCwgZXZlbnQsIGN1cnNvcikKLXsK
LSAgICBpZiAodGhpcy5fZWxlbWVudERyYWdnaW5nRXZlbnRMaXN0ZW5lciB8fCB0aGlzLl9lbGVt
ZW50RW5kRHJhZ2dpbmdFdmVudExpc3RlbmVyKQotICAgICAgICB0aGlzLmVsZW1lbnREcmFnRW5k
KGV2ZW50KTsKLQotICAgIHRoaXMuX2VsZW1lbnREcmFnZ2luZ0V2ZW50TGlzdGVuZXIgPSBkaXZp
ZGVyRHJhZzsKLSAgICB0aGlzLl9lbGVtZW50RW5kRHJhZ2dpbmdFdmVudExpc3RlbmVyID0gZWxl
bWVudERyYWdFbmQ7Ci0KLSAgICB2YXIgdGFyZ2V0RG9jdW1lbnQgPSBldmVudC50YXJnZXQub3du
ZXJEb2N1bWVudDsKLSAgICB0YXJnZXREb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1v
dmUiLCBkaXZpZGVyRHJhZywgdHJ1ZSk7Ci0gICAgdGFyZ2V0RG9jdW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2V1cCIsIGVsZW1lbnREcmFnRW5kLCB0cnVlKTsKLQotICAgIHRhcmdldERvY3Vt
ZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gY3Vyc29yOwotCi0gICAgZXZlbnQucHJldmVudERlZmF1
bHQoKTsKLX0KLQotV2ViSW5zcGVjdG9yLmVsZW1lbnREcmFnRW5kID0gZnVuY3Rpb24oZXZlbnQp
Ci17Ci0gICAgdmFyIHRhcmdldERvY3VtZW50ID0gZXZlbnQudGFyZ2V0Lm93bmVyRG9jdW1lbnQ7
Ci0gICAgdGFyZ2V0RG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhp
cy5fZWxlbWVudERyYWdnaW5nRXZlbnRMaXN0ZW5lciwgdHJ1ZSk7Ci0gICAgdGFyZ2V0RG9jdW1l
bnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIHRoaXMuX2VsZW1lbnRFbmREcmFnZ2lu
Z0V2ZW50TGlzdGVuZXIsIHRydWUpOwotCi0gICAgdGFyZ2V0RG9jdW1lbnQuYm9keS5zdHlsZS5y
ZW1vdmVQcm9wZXJ0eSgiY3Vyc29yIik7Ci0KLSAgICBkZWxldGUgdGhpcy5fZWxlbWVudERyYWdn
aW5nRXZlbnRMaXN0ZW5lcjsKLSAgICBkZWxldGUgdGhpcy5fZWxlbWVudEVuZERyYWdnaW5nRXZl
bnRMaXN0ZW5lcjsKLQotICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci19Ci0KIFdlYkluc3Bl
Y3Rvci50b2dnbGVTZWFyY2hpbmdGb3JOb2RlID0gZnVuY3Rpb24oKQogewogICAgIGlmICh0aGlz
LnBhbmVscy5lbGVtZW50cykgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109603</attachid>
            <date>2011-10-04 03:51:19 -0700</date>
            <delta_ts>2011-10-04 04:36:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69319-20111004145117.patch</filename>
            <type>text/plain</type>
            <size>32552</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY1ODIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzZjljN2QwYWViYzM5Yzkw
NjczOTU2ZDBlNGE2YWQ5OWZhNGU5MWY3Li4wY2JlYjk4YzZiNDBjYjAwNjRiYjA2ZjMyNTY1MGJk
MzhkOGUwNzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTEtMTAtMDQgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IHN0YXJ0IGFkZGluZyBVSSBjb21wb25lbnRzIHRvIHRoZSBjb21waWxhdGlvbiBwcm9jZXNzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkzMTkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBpbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQuc2g6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9EcmF3ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRHJhd2VyLnByb3RvdHlw
ZS5zaG93LmFuaW1hdGlvbkZpbmlzaGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EcmF3ZXIu
cHJvdG90eXBlLnNob3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRyYXdlci5wcm90b3R5cGUu
cmVzaXplKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuc3RhdHVzQmFy
UmVzaXplZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbXB0eVZpZXcuanM6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9QYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5QYW5lbC5wcm90b3R5cGUuc2V0IGdldCB0b29sYmFySXRlbUxhYmVsKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUuZ2V0IHN0YXR1c0Jhckl0ZW1zKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUudXBkYXRlTWFpblZpZXdXaWR0aCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlLnN0YXR1c0JhclJlc2l6ZWQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvcGVydGllc1NlY3Rpb24uanM6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZWFyY2hDb250cm9sbGVyLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNlYXJjaENvbnRyb2xsZXIucHJvdG90eXBlLl9vbktleURvd24pOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2VjdGlvbi5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TZWN0aW9uLnByb3RvdHlwZS5zZXQgcG9wdWxhdGVkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TZWN0aW9uLnByb3RvdHlwZS5vbnBvcHVsYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TZWN0aW9uLnByb3RvdHlwZS5leHBhbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvU2lkZWJhclBhbmUuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Ub29sYmFy
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIuY3JlYXRlUGFuZWxUb29sYmFySXRl
bSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3duLnByb3RvdHlwZS5zaG93
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1VJVXRpbHMuanM6IEFkZGVkLgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLmVsZW1lbnREcmFnU3RhcnQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLmVsZW1lbnREcmFnRW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5hbmltYXRlU3R5bGUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLmFuaW1hdGVTdHlsZS5mb3JjZUNvbXBsZXRlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5hbmltYXRlU3R5bGUuY2FuY2VsKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9leHRlcm5zLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmV4dGVuc2lvblNlcnZlci5ub3Rp
ZnlQYW5lbFNob3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5leHRlbnNpb25TZXJ2ZXIubm90
aWZ5UGFuZWxIaWRkZW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmN1cnJlbnRQYW5lbCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3Iuc2V0Q3VycmVudFBhbmVsKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmpzOgorCiAyMDExLTEwLTA0ICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hp
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEltcGxlbWVudCBmb250IHNoYXBp
bmcgd2l0aCBmb250LWZlYXR1cmUtc2V0dGluZ3Mgb24gV2luZG93cwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IGZhM2Y5MTIzZGM3OWUxMzQ2M2ZjZWYwNTc2ZTBlMDg0ZDFiOTMxNjIuLjc5ZDliMWU4MDMx
N2ExOWYyM2VhNTYzMTdlNzRkYjFmZjFiZmIzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTYzMzQs
NiArNjMzNCw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Ub3BEb3duUHJv
ZmlsZURhdGFHcmlkVHJlZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC90
cmVlb3V0bGluZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9VSVNvdXJj
ZUNvZGUuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvVUlVdGlscy5qcycs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Vc2VyTWV0cmljcy5qcycsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvVmlldy5qcycsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGZlOWZiZjVlZDIwMmRmYWFhMmNhODgwOWRhMTRj
M2U0ZDJkZGMxMWQuLjAzMjdkMDBjYWE0ODcyN2UxZmEwZWQ2NzQzMzhiMTJlNGQzY2I5NGIgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC02OTY0
MSw2ICs2OTY0MSwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJl
bGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxVSVV0aWxzLmpzIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZy
b250LWVuZFxVc2VyTWV0cmljcy5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaAppbmRleCBhZmJlZWRjZWJmMTQ4
ZjE3ZTM3MzJmM2Y5YTEwNTMyNjM2ZGY1OTgxLi5hZDM2NjhjYTBkYjhiNjUwZmNlOWUzNDA3N2Qx
MTU5NjdhZDZkZmJlIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGls
ZS1mcm9udC1lbmQuc2gKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJv
bnQtZW5kLnNoCkBAIC00NCw3ICs0NCw3IEBAIGphdmEgLWphciB+L2Nsb3N1cmUvY29tcGlsZXIu
amFyIC0tY29tcGlsYXRpb25fbGV2ZWwgU0lNUExFX09QVElNSVpBVElPTlMgLS13YXJuCiAgICAg
ICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3QuanMgXAog
ICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3Mu
anMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVXNl
ck1ldHJpY3MuanMgXAotICAgIC0tbW9kdWxlIGpzbW9kdWxlX3NkazoxNjpqc21vZHVsZV9jb21t
b24sanNtb2R1bGVfaG9zdCBcCisgICAgLS1tb2R1bGUganNtb2R1bGVfc2RrOjE2OmpzbW9kdWxl
X2NvbW1vbiBcCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Db25zb2xlTW9kZWwuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQ29udGVudFByb3ZpZGVycy5qcyBcCiAgICAgICAgIC0tanMgU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db29raWVQYXJzZXIuanMgXApAQCAtNjEsMjAgKzYx
LDMwIEBAIGphdmEgLWphciB+L2Nsb3N1cmUvY29tcGlsZXIuamFyIC0tY29tcGlsYXRpb25fbGV2
ZWwgU0lNUExFX09QVElNSVpBVElPTlMgLS13YXJuCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcyBcCiAgICAgICAgIC0tanMgU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qcyBcCiAgICAgICAg
IC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVNvdXJjZUNvZGUuanMg
XAotICAgIC0tbW9kdWxlIGpzbW9kdWxlX21pc2M6MTY6anNtb2R1bGVfc2RrIFwKKyAgICAtLW1v
ZHVsZSBqc21vZHVsZV91aToyMTpqc21vZHVsZV9jb21tb24gXAogICAgICAgICAtLWpzIFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2hlY2tib3guanMgXAogICAgICAgICAtLWpz
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29udGV4dE1lbnUuanMgXAotICAg
ICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZU1lc3Nh
Z2UuanMgXAotICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q29uc29sZVZpZXcuanMgXAorICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRHJhd2VyLmpzIFwKKyAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0VtcHR5Vmlldy5qcyBcCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9IZWxwU2NyZWVuLmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0tleWJvYXJkU2hvcnRjdXQuanMgXAotICAgICAg
ICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdENvbnRl
eHRNYW5hZ2VyLmpzIFwKLSAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1ZpZXcuanMgXAorICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUGFuZWwuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUGxhY2FyZC5qcyBcCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Qb3BvdmVyLmpzIFwKLSAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvZnRDb250ZXh0TWVudS5qcyBcCisgICAgICAgIC0tanMg
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9wZXJ0aWVzU2VjdGlvbi5qcyBc
CisgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZWFyY2hD
b250cm9sbGVyLmpzIFwKKyAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NlY3Rpb24uanMgXAorICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2lkZWJhclBhbmUuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU2hvcnRjdXRzU2NyZWVuLmpzIFwKKyAgICAgICAgLS1qcyBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvZnRDb250ZXh0TWVudS5qcyBcCiAg
ICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdGF0dXNCYXJC
dXR0b24uanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvVGFiYmVkUGFuZS5qcyBcCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9UZXh0UHJvbXB0LmpzIFwKKyAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Rvb2xiYXIuanMgXAorICAgICAgICAtLWpzIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlVdGlscy5qcyBcCisgICAgICAgIC0tanMgU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9WaWV3LmpzIFwKKyAgICAtLW1vZHVsZSBqc21v
ZHVsZV9pbnNwZWN0b3I6NDpqc21vZHVsZV9zZGssanNtb2R1bGVfdWkgXAorICAgICAgICAtLWpz
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZU1lc3NhZ2UuanMgXAor
ICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZp
ZXcuanMgXAorICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
SmF2YVNjcmlwdENvbnRleHRNYW5hZ2VyLmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lTWFuYWdlci5qcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EcmF3ZXIuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RyYXdlci5qcwppbmRleCA3OGIwMTY5ZTFkYjc3NmE0ZGFm
NGY2MTdmZTI0NTcxMTVjZjJmZTAzLi4zOGJmMzMwMWNlNjY1NDg2YmM3NmJhMmQ5MDhiYTNjMTNh
YWVjMjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Ry
YXdlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RyYXdlci5q
cwpAQCAtMjcsNiArMjcsOSBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisvKioKKyAqIEBjb25zdHJ1
Y3RvcgorICovCiBXZWJJbnNwZWN0b3IuRHJhd2VyID0gZnVuY3Rpb24oKQogewogICAgIHRoaXMu
ZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcmF3ZXIiKTsKQEAgLTEwMCw4ICsx
MDMsNyBAQCBXZWJJbnNwZWN0b3IuRHJhd2VyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBmdW5j
dGlvbiBhbmltYXRpb25GaW5pc2hlZCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICgidXBk
YXRlU3RhdHVzQmFySXRlbXMiIGluIFdlYkluc3BlY3Rvci5jdXJyZW50UGFuZWwoKSkKLSAgICAg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3VycmVudFBhbmVsKCkudXBkYXRlU3RhdHVzQmFySXRl
bXMoKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jdXJyZW50UGFuZWwoKS5zdGF0dXNCYXJS
ZXNpemVkKCk7CiAgICAgICAgICAgICBpZiAodGhpcy5fdmlldyAmJiB0aGlzLl92aWV3LmFmdGVy
U2hvdykKICAgICAgICAgICAgICAgICB0aGlzLl92aWV3LmFmdGVyU2hvdygpOwogICAgICAgICAg
ICAgZGVsZXRlIHRoaXMuX2N1cnJlbnRBbmltYXRpb247CkBAIC0xMzEsOCArMTMzLDcgQEAgV2Vi
SW5zcGVjdG9yLkRyYXdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIGxpa2UgRWxlbWVudHMg
aW4gdGhlaXIgdXBkYXRlU3RhdHVzQmFySXRlbXMgY2FsbCB3aWxsIHNpemUgdGhpbmdzIHRvIGZp
dCB0aGUgZmluYWwgbG9jYXRpb24uCiAgICAgICAgIHRoaXMuX21haW5TdGF0dXNCYXIuc3R5bGUu
c2V0UHJvcGVydHkoInBhZGRpbmctbGVmdCIsIChhbmNob3JlZEl0ZW1zLm9mZnNldFdpZHRoIC0g
MSkgKyAicHgiKTsKICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVTdHlsZUNsYXNzKCJkcmF3
ZXItdmlzaWJsZSIpOwotICAgICAgICBpZiAoInVwZGF0ZVN0YXR1c0Jhckl0ZW1zIiBpbiBXZWJJ
bnNwZWN0b3IuY3VycmVudFBhbmVsKCkpCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3VycmVu
dFBhbmVsKCkudXBkYXRlU3RhdHVzQmFySXRlbXMoKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmN1
cnJlbnRQYW5lbCgpLnN0YXR1c0JhclJlc2l6ZWQoKTsKICAgICAgICAgZG9jdW1lbnQuYm9keS5h
ZGRTdHlsZUNsYXNzKCJkcmF3ZXItdmlzaWJsZSIpOwogCiAgICAgICAgIHZhciBhbmltYXRpb25z
ID0gWwpAQCAtMTc4LDcgKzE3OSw3IEBAIFdlYkluc3BlY3Rvci5EcmF3ZXIucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3ZpZXcuc3RvcmVTY3JvbGxQ
b3NpdGlvbnMoKTsKLSAgICAgICAgdmFyIGhlaWdodCA9IHRoaXMuX2NvbnN0cmFpbkhlaWdodChw
YXJzZUludCh0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0KSk7CisgICAgICAgIHZhciBoZWlnaHQg
PSB0aGlzLl9jb25zdHJhaW5IZWlnaHQocGFyc2VJbnQodGhpcy5lbGVtZW50LnN0eWxlLmhlaWdo
dCwgMTApKTsKICAgICAgICAgdGhpcy5fbWFpbkVsZW1lbnQuc3R5bGUuYm90dG9tID0gaGVpZ2h0
ICsgInB4IjsKICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodCA9IGhlaWdodCArICJw
eCI7CiAgICAgICAgIHRoaXMuX3ZpZXcuZG9SZXNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwppbmRleCBiZTkyMThkOWUz
NjBmNmYxY2ZhNjIyOTlhY2FiMjA3ZWQyM2ZiODAzLi4zNDhiNjExZjQ2YzA3ZWE5MjRjODA1MmQz
OGU4ODk4YWEwNmEzM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9FbGVtZW50c1BhbmVsLmpzCkBAIC0xNDAsNyArMTQwLDcgQEAgV2ViSW5zcGVjdG9y
LkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy50cmVlT3V0
bGluZS5lbGVtZW50OwogICAgIH0sCiAKLSAgICB1cGRhdGVTdGF0dXNCYXJJdGVtczogZnVuY3Rp
b24oKQorICAgIHN0YXR1c0JhclJlc2l6ZWQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRo
aXMudXBkYXRlQnJlYWRjcnVtYlNpemVzKCk7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRW1wdHlWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9FbXB0eVZpZXcuanMKaW5kZXggYjA4ZTA2OGU0MWY0MDliMDg1
YWYxZDMyZjBhZmFjMmViZjY1ZGNhYS4uNDE5MDRhY2M3NjlmMGQ1ZjFkMzI3NzNlNDI4YmQ2NDhi
OTBkMmJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9F
bXB0eVZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbXB0
eVZpZXcuanMKQEAgLTI4LDYgKzI4LDEwIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKy8qKgor
ICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlZpZXd9CisgKi8KIFdl
Ykluc3BlY3Rvci5FbXB0eVZpZXcgPSBmdW5jdGlvbih0ZXh0KQogewogICAgIFdlYkluc3BlY3Rv
ci5WaWV3LmNhbGwodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Q
YW5lbC5qcwppbmRleCA2ZWVlZGU1NjA5OTA2YTk3ZDg2Yzc4Y2Y0MmQ5YjRhYTVhZmQzNDFmLi44
M2I0ODc3ZGI3MGNlMGFhZjc4ZDIzYzlmY2U3ZjEyZmU2NzQ0YjBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUGFuZWwuanMKQEAgLTI2LDYgKzI2LDEwIEBACiAgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKKy8qKgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5WaWV3fQorICog
QGNvbnN0cnVjdG9yCisgKi8KIFdlYkluc3BlY3Rvci5QYW5lbCA9IGZ1bmN0aW9uKG5hbWUpCiB7
CiAgICAgV2ViSW5zcGVjdG9yLlZpZXcuY2FsbCh0aGlzKTsKQEAgLTIyNyw5ICsyMzEsMjIgQEAg
V2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnNl
dHRpbmdzW3RoaXMuX3NpZGViYXJXaWR0aFNldHRpbmdOYW1lKCldLnNldCh0aGlzLnNpZGViYXJF
bGVtZW50Lm9mZnNldFdpZHRoKTsKICAgICB9LAogCisgICAgLy8gU2hvdWxkIGJlIGltcGxlbWVu
dGVkIGJ5IGFuY2VzdG9ycy4KKworICAgIGdldCB0b29sYmFySXRlbUxhYmVsKCkKKyAgICB7Cisg
ICAgfSwKKworICAgIGdldCBzdGF0dXNCYXJJdGVtcygpCisgICAgeworICAgIH0sCisKICAgICB1
cGRhdGVNYWluVmlld1dpZHRoOiBmdW5jdGlvbih3aWR0aCkKICAgICB7Ci0gICAgICAgIC8vIFNo
b3VsZCBiZSBpbXBsZW1lbnRlZCBieSBhbmNlc3RvcnMuCisgICAgfSwKKworICAgIHN0YXR1c0Jh
clJlc2l6ZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CiAgICAgfSwKIAogICAgIGNhblNob3dBbmNob3JM
b2NhdGlvbjogZnVuY3Rpb24oYW5jaG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Qcm9wZXJ0aWVzU2VjdGlvbi5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUHJvcGVydGllc1NlY3Rpb24uanMKaW5kZXggODhjYjFhMmRiMTBk
ZjU1OTUwZWQyZGI0MTkxYTUwOGVmZjNmM2IzZC4uZDdhYzBiY2I2YzE4ZWIzMmRiY2JmYjA1YTBh
NzYxYTg2MDViNjdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Qcm9wZXJ0aWVzU2VjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Byb3BlcnRpZXNTZWN0aW9uLmpzCkBAIC0yNyw2ICsyNywxMCBAQAogICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3Bl
Y3Rvci5TZWN0aW9ufQorICovCiBXZWJJbnNwZWN0b3IuUHJvcGVydGllc1NlY3Rpb24gPSBmdW5j
dGlvbih0aXRsZSwgc3VidGl0bGUpCiB7CiAgICAgV2ViSW5zcGVjdG9yLlNlY3Rpb24uY2FsbCh0
aGlzLCB0aXRsZSwgc3VidGl0bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TZWFyY2hDb250cm9sbGVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TZWFyY2hDb250cm9sbGVyLmpzCmluZGV4IDBlODVkYTg3ZmQ2ODU3MGQ0
ZTkwNThiZmM2ODI4MjljMjBlOTQ3MjEuLmExODIyZWU5MjMyOTA4Nzg5OTI1MjMzODljN2U0YWU2
MzFkNTdjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U2VhcmNoQ29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NlYXJjaENvbnRyb2xsZXIuanMKQEAgLTI5LDYgKzI5LDkgQEAKICAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAqLwogV2ViSW5zcGVjdG9yLlNlYXJjaENvbnRy
b2xsZXIgPSBmdW5jdGlvbigpCiB7CiAgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInNlYXJjaCIpOwpAQCAtMTMwLDcgKzEzMyw3IEBAIFdlYkluc3BlY3Rvci5TZWFy
Y2hDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCF0aGlzLl9jdXJyZW50UXVl
cnkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgcGFuZWwgPSBXZWJJbnNwZWN0b3Iu
Y3VycmVudFBhbmVsKCk7CisgICAgICAgIHZhciBwYW5lbCA9IFdlYkluc3BlY3Rvci5jdXJyZW50
UGFuZWwoKTsKICAgICAgICAgaWYgKHBhbmVsLnBlcmZvcm1TZWFyY2gpIHsKICAgICAgICAgICAg
IGZ1bmN0aW9uIHBlcmZvcm1QYW5lbFNlYXJjaCgpCiAgICAgICAgICAgICB7CkBAIC0xNDgsNiAr
MTUxLDEwIEBAIFdlYkluc3BlY3Rvci5TZWFyY2hDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gez9udW1iZXI9fSBtYXRj
aGVzCisgICAgICogQHBhcmFtIHtudW1iZXI9fSBjdXJyZW50TWF0Y2hJbmRleAorICAgICAqLwog
ICAgIF91cGRhdGVTZWFyY2hNYXRjaGVzQ291bnRBbmRDdXJyZW50TWF0Y2hJbmRleDogZnVuY3Rp
b24obWF0Y2hlcywgY3VycmVudE1hdGNoSW5kZXgpCiAgICAgewogICAgICAgICBpZiAobWF0Y2hl
cyA9PSBudWxsKSB7CkBAIC0xOTMsMTIgKzIwMCwxMiBAQCBXZWJJbnNwZWN0b3IuU2VhcmNoQ29u
dHJvbGxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAvLyBJZiBmb2N1cyBiZWxvbmdzIGhl
cmUgYW5kIHRleHQgaXMgZW1wdHkgLSBub3RoaW5nIHRvIGRvLCByZXR1cm4gdW5oYW5kbGVkLgog
ICAgICAgICAgICAgLy8gV2hlbiBzZWFyY2ggd2FzIHNlbGVjdGVkIG1hbnVhbGx5IGFuZCBpcyBj
dXJyZW50bHkgYmxhbmssIHdlJ2QgbGlrZSBFc2Mgc3RheSB1bmhhbmRsZWQKICAgICAgICAgICAg
IC8vIGFuZCBoaXQgY29uc29sZSBkcmF3ZXIgaGFuZGxlci4KLSAgICAgICAgICAgIGlmIChldmVu
dC50YXJnZXQudmFsdWUgPT09ICIiICYmIHRoaXMuY3VycmVudEZvY3VzRWxlbWVudCA9PT0gdGhp
cy5wcmV2aW91c0ZvY3VzRWxlbWVudCkKKyAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQudmFs
dWUgPT09ICIiICYmIFdlYkluc3BlY3Rvci5jdXJyZW50Rm9jdXNFbGVtZW50ID09PSBXZWJJbnNw
ZWN0b3IucHJldmlvdXNGb2N1c0VsZW1lbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgIGV2ZW50LnN0b3BQ
cm9wYWdhdGlvbigpOwogCi0gICAgICAgICAgICB0aGlzLmNhbmNlbFNlYXJjaChldmVudCk7Cisg
ICAgICAgICAgICB0aGlzLmNhbmNlbFNlYXJjaCgpOwogICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LmN1cnJlbnRGb2N1c0VsZW1lbnQgPSBXZWJJbnNwZWN0b3IucHJldmlvdXNGb2N1c0VsZW1lbnQ7
CiAgICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmN1cnJlbnRGb2N1c0VsZW1lbnQgPT09IGV2
ZW50LnRhcmdldCkKICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3VycmVudEZvY3VzRWxl
bWVudC5jdXJyZW50Rm9jdXNFbGVtZW50LnNlbGVjdCgpOwpAQCAtMjI3LDYgKzIzNCwxMSBAQCBX
ZWJJbnNwZWN0b3IuU2VhcmNoQ29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
X3BlcmZvcm1TZWFyY2goZXZlbnQudGFyZ2V0LnZhbHVlLCBmb3JjZVNlYXJjaCwgZXZlbnQuc2hp
ZnRLZXksIGZhbHNlKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtib29sZWFu
PX0gZm9yY2VTZWFyY2gKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBpc0JhY2t3YXJkU2VhcmNo
CisgICAgICogQHBhcmFtIHtib29sZWFuPX0gcmVwZWF0U2VhcmNoCisgICAgICovCiAgICAgX3Bl
cmZvcm1TZWFyY2g6IGZ1bmN0aW9uKHF1ZXJ5LCBmb3JjZVNlYXJjaCwgaXNCYWNrd2FyZFNlYXJj
aCwgcmVwZWF0U2VhcmNoKQogICAgIHsKICAgICAgICAgdmFyIGlzU2hvcnRTZWFyY2ggPSAocXVl
cnkubGVuZ3RoIDwgMyk7CkBAIC0yODUsMyArMjk3LDggQEAgV2ViSW5zcGVjdG9yLlNlYXJjaENv
bnRyb2xsZXIucHJvdG90eXBlID0gewogICAgICAgICBjdXJyZW50UGFuZWwucGVyZm9ybVNlYXJj
aChxdWVyeSk7CiAgICAgfQogfQorCisvKioKKyAqIEB0eXBlIHs/V2ViSW5zcGVjdG9yLlNlYXJj
aENvbnRyb2xsZXJ9CisgKi8KK1dlYkluc3BlY3Rvci5zZWFyY2hDb250cm9sbGVyID0gbnVsbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2VjdGlvbi5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2VjdGlvbi5qcwppbmRleCAz
NmE0NDIwMmRjMTU0NjdkNjVhYWMzMzA1NjlkZDY0Y2Q2YjE1MjFhLi44NTViN2MxZWRlMzM0OTM3
YjY5MWQwMmY1MDdiOTMyMGI5ZTc4MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1NlY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TZWN0aW9uLmpzCkBAIC0yNyw2ICsyNyw5IEBACiAgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8KIFdlYkluc3BlY3Rvci5TZWN0aW9uID0gZnVu
Y3Rpb24odGl0bGUsIHN1YnRpdGxlKQogewogICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwpAQCAtMTE4LDEyICsxMjEsMTcgQEAgV2ViSW5zcGVjdG9yLlNl
Y3Rpb24ucHJvdG90eXBlID0gewogICAgIHNldCBwb3B1bGF0ZWQoeCkKICAgICB7CiAgICAgICAg
IHRoaXMuX3BvcHVsYXRlZCA9IHg7Ci0gICAgICAgIGlmICgheCAmJiB0aGlzLm9ucG9wdWxhdGUg
JiYgdGhpcy5fZXhwYW5kZWQpIHsKLSAgICAgICAgICAgIHRoaXMub25wb3B1bGF0ZSh0aGlzKTsK
KyAgICAgICAgaWYgKCF4ICYmIHRoaXMuX2V4cGFuZGVkKSB7CisgICAgICAgICAgICB0aGlzLm9u
cG9wdWxhdGUoKTsKICAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRlZCA9IHRydWU7CiAgICAgICAg
IH0KICAgICB9LAogCisgICAgb25wb3B1bGF0ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
Ly8gT3ZlcnJpZGVuIGJ5IHN1YmNsYXNzZXMuCisgICAgfSwKKwogICAgIGdldCBmaXJzdFNpYmxp
bmcoKQogICAgIHsKICAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMuZWxlbWVudC5wYXJlbnRFbGVt
ZW50OwpAQCAtMTgzLDggKzE5MSw4IEBAIFdlYkluc3BlY3Rvci5TZWN0aW9uLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5fZXhwYW5kZWQgPSB0cnVlOwogICAgICAgICB0aGlzLmVsZW1lbnQu
YWRkU3R5bGVDbGFzcygiZXhwYW5kZWQiKTsKIAotICAgICAgICBpZiAoIXRoaXMuX3BvcHVsYXRl
ZCAmJiB0aGlzLm9ucG9wdWxhdGUpIHsKLSAgICAgICAgICAgIHRoaXMub25wb3B1bGF0ZSh0aGlz
KTsKKyAgICAgICAgaWYgKCF0aGlzLl9wb3B1bGF0ZWQpIHsKKyAgICAgICAgICAgIHRoaXMub25w
b3B1bGF0ZSgpOwogICAgICAgICAgICAgdGhpcy5fcG9wdWxhdGVkID0gdHJ1ZTsKICAgICAgICAg
fQogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NpZGViYXJQYW5lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TaWRl
YmFyUGFuZS5qcwppbmRleCBlYmM2MmRiZmMzMjAwZmY0MjE5MGRiMWE1ZGRiMTI2ZmE4YWI3NDhi
Li5iN2ZhNzQ3ZGQzZDliODQ4MjEzZTFmMWNhZmJjNGU0NWU4MDI1ZjE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NpZGViYXJQYW5lLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2lkZWJhclBhbmUuanMKQEAgLTI2LDYg
KzI2LDEwIEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBA
ZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk9iamVjdH0KKyAqLwogV2ViSW5zcGVjdG9yLlNpZGViYXJQ
YW5lID0gZnVuY3Rpb24odGl0bGUpCiB7CiAgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Rvb2xiYXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Rvb2xiYXIuanMKaW5kZXggOGViNTEwYWNlYjYzZGQxZTdiYjJhNzQxODdkYzQwYTg1Zjc5YzRl
YS4uMDA3NmQwZDRjZDY2MTdjMmExOTU3ZGIwZjAyNzZhOGUwMDNhNjE1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Ub29sYmFyLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVG9vbGJhci5qcwpAQCAtMjksNiArMjksOSBA
QAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCiBXZWJJbnNw
ZWN0b3IuVG9vbGJhciA9IGZ1bmN0aW9uKCkKIHsKICAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidG9vbGJhciIpOwpAQCAtMTQyLDcgKzE0NSw3IEBAIFdlYkluc3Bl
Y3Rvci5Ub29sYmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhp
cy5fZHJvcGRvd25CdXR0b24uYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7CiAgICAgfQotfTsKK30K
IAogV2ViSW5zcGVjdG9yLlRvb2xiYXIuY3JlYXRlUGFuZWxUb29sYmFySXRlbSA9IGZ1bmN0aW9u
KHBhbmVsKQogewpAQCAtMTU1LDcgKzE1OCw3IEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyLmNyZWF0
ZVBhbmVsVG9vbGJhckl0ZW0gPSBmdW5jdGlvbihwYW5lbCkKICAgICAgICAgV2ViSW5zcGVjdG9y
LnRvb2xiYXIuX3VwZGF0ZURyb3Bkb3duQnV0dG9uQW5kSGlkZURyb3Bkb3duKCk7CiAgICAgICAg
IFdlYkluc3BlY3Rvci5zZXRDdXJyZW50UGFuZWwocGFuZWwpOwogICAgIH0KLSAgICB0b29sYmFy
SXRlbS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIG9uVG9vbGJhckl0ZW1DbGlja2VkKTsKKyAg
ICB0b29sYmFySXRlbS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIG9uVG9vbGJhckl0ZW1DbGlj
a2VkLCBmYWxzZSk7CiAKICAgICB2YXIgaWNvbkVsZW1lbnQgPSB0b29sYmFySXRlbS5jcmVhdGVD
aGlsZCgiZGl2IiwgInRvb2xiYXItaWNvbiIpOwogCkBAIC0xNjgsNiArMTcxLDkgQEAgV2ViSW5z
cGVjdG9yLlRvb2xiYXIuY3JlYXRlUGFuZWxUb29sYmFySXRlbSA9IGZ1bmN0aW9uKHBhbmVsKQog
ICAgIHJldHVybiB0b29sYmFySXRlbTsKIH0KIAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAqLwog
V2ViSW5zcGVjdG9yLlRvb2xiYXJEcm9wZG93biA9IGZ1bmN0aW9uKCkKIHsKICAgICB0aGlzLl90
b29sYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvb2xiYXIiKTsKQEAgLTE5Myw3ICsx
OTksNiBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3duLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdGhpcy5lbGVtZW50LnN0eWxlLmxlZnQgPSB0aGlzLl9hcnJvdy50b3RhbE9mZnNldExlZnQo
KSArICJweCI7CiAgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50LnN0eWxlLm1heEhlaWdodCA9
IHdpbmRvdy5pbm5lckhlaWdodCAtIHRvcCAtIDIwICsgInB4IjsKICAgICAgICAgdGhpcy5fdG9v
bGJhci5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpOwotICAgICAgICBXZWJJbnNwZWN0b3IuY3Vy
cmVudEZvY3VzRWxlbWVudCA9IHRoaXMuY29udGVudEVsZW1lbnQ7CiAgICAgfSwKIAogICAgIGhp
ZGU6IGZ1bmN0aW9uKCkKQEAgLTIyNyw0ICsyMzIsOSBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhckRy
b3Bkb3duLnByb3RvdHlwZSA9IHsKICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAg
ICAgICAgIHRoaXMuaGlkZSgpOwogICAgIH0KLX07Cit9CisKKy8qKgorICogQHR5cGUgez9XZWJJ
bnNwZWN0b3IuVG9vbGJhcn0KKyAqLworV2ViSW5zcGVjdG9yLnRvb2xiYXIgPSBudWxsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmM0OWE1NDJmYjFkZGIyNTA4NGRhYjI1YmVjNDg3YWUwOTM1YmIyOWUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJVXRpbHMuanMKQEAgLTAs
MCArMSwxNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBNYXR0IExp
bGVrIChwZXd0ZXJtb29zZUBnbWFpbC5jb20pLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEpvc2Vw
aCBQZWNvcmFybworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK1dlYkluc3BlY3Rvci5lbGVtZW50RHJhZ1N0YXJ0ID0gZnVuY3Rpb24oZWxlbWVu
dCwgZGl2aWRlckRyYWcsIGVsZW1lbnREcmFnRW5kLCBldmVudCwgY3Vyc29yKQoreworICAgIGlm
IChXZWJJbnNwZWN0b3IuX2VsZW1lbnREcmFnZ2luZ0V2ZW50TGlzdGVuZXIgfHwgV2ViSW5zcGVj
dG9yLl9lbGVtZW50RW5kRHJhZ2dpbmdFdmVudExpc3RlbmVyKQorICAgICAgICBXZWJJbnNwZWN0
b3IuZWxlbWVudERyYWdFbmQoZXZlbnQpOworCisgICAgV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJh
Z2dpbmdFdmVudExpc3RlbmVyID0gZGl2aWRlckRyYWc7CisgICAgV2ViSW5zcGVjdG9yLl9lbGVt
ZW50RW5kRHJhZ2dpbmdFdmVudExpc3RlbmVyID0gZWxlbWVudERyYWdFbmQ7CisKKyAgICB2YXIg
dGFyZ2V0RG9jdW1lbnQgPSBldmVudC50YXJnZXQub3duZXJEb2N1bWVudDsKKyAgICB0YXJnZXRE
b2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCBkaXZpZGVyRHJhZywgdHJ1ZSk7
CisgICAgdGFyZ2V0RG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIGVsZW1lbnRE
cmFnRW5kLCB0cnVlKTsKKworICAgIHRhcmdldERvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0g
Y3Vyc29yOworCisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK30KKworV2ViSW5zcGVjdG9y
LmVsZW1lbnREcmFnRW5kID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgdmFyIHRhcmdldERvY3Vt
ZW50ID0gZXZlbnQudGFyZ2V0Lm93bmVyRG9jdW1lbnQ7CisgICAgdGFyZ2V0RG9jdW1lbnQucmVt
b3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ2dp
bmdFdmVudExpc3RlbmVyLCB0cnVlKTsKKyAgICB0YXJnZXREb2N1bWVudC5yZW1vdmVFdmVudExp
c3RlbmVyKCJtb3VzZXVwIiwgV2ViSW5zcGVjdG9yLl9lbGVtZW50RW5kRHJhZ2dpbmdFdmVudExp
c3RlbmVyLCB0cnVlKTsKKworICAgIHRhcmdldERvY3VtZW50LmJvZHkuc3R5bGUucmVtb3ZlUHJv
cGVydHkoImN1cnNvciIpOworCisgICAgZGVsZXRlIFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdn
aW5nRXZlbnRMaXN0ZW5lcjsKKyAgICBkZWxldGUgV2ViSW5zcGVjdG9yLl9lbGVtZW50RW5kRHJh
Z2dpbmdFdmVudExpc3RlbmVyOworCisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK30KKwor
V2ViSW5zcGVjdG9yLmFuaW1hdGVTdHlsZSA9IGZ1bmN0aW9uKGFuaW1hdGlvbnMsIGR1cmF0aW9u
LCBjYWxsYmFjaykKK3sKKyAgICB2YXIgaW50ZXJ2YWw7CisgICAgdmFyIGNvbXBsZXRlID0gMDsK
KyAgICB2YXIgaGFzQ29tcGxldGVkID0gZmFsc2U7CisKKyAgICBjb25zdCBpbnRlcnZhbER1cmF0
aW9uID0gKDEwMDAgLyAzMCk7IC8vIDMwIGZyYW1lcyBwZXIgc2Vjb25kLgorICAgIGNvbnN0IGFu
aW1hdGlvbnNMZW5ndGggPSBhbmltYXRpb25zLmxlbmd0aDsKKyAgICBjb25zdCBwcm9wZXJ0eVVu
aXQgPSB7b3BhY2l0eTogIiJ9OworICAgIGNvbnN0IGRlZmF1bHRVbml0ID0gInB4IjsKKworICAg
IGZ1bmN0aW9uIGN1YmljSW5PdXQodCwgYiwgYywgZCkKKyAgICB7CisgICAgICAgIGlmICgodC89
ZC8yKSA8IDEpIHJldHVybiBjLzIqdCp0KnQgKyBiOworICAgICAgICByZXR1cm4gYy8yKigodC09
MikqdCp0ICsgMikgKyBiOworICAgIH0KKworICAgIC8vIFByZS1wcm9jZXNzIGFuaW1hdGlvbnMu
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbmltYXRpb25zTGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgdmFyIGFuaW1hdGlvbiA9IGFuaW1hdGlvbnNbaV07CisgICAgICAgIHZhciBlbGVtZW50ID0g
bnVsbCwgc3RhcnQgPSBudWxsLCBlbmQgPSBudWxsLCBrZXkgPSBudWxsOworICAgICAgICBmb3Ig
KGtleSBpbiBhbmltYXRpb24pIHsKKyAgICAgICAgICAgIGlmIChrZXkgPT09ICJlbGVtZW50IikK
KyAgICAgICAgICAgICAgICBlbGVtZW50ID0gYW5pbWF0aW9uW2tleV07CisgICAgICAgICAgICBl
bHNlIGlmIChrZXkgPT09ICJzdGFydCIpCisgICAgICAgICAgICAgICAgc3RhcnQgPSBhbmltYXRp
b25ba2V5XTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGtleSA9PT0gImVuZCIpCisgICAgICAgICAg
ICAgICAgZW5kID0gYW5pbWF0aW9uW2tleV07CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWVs
ZW1lbnQgfHwgIWVuZCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICghc3Rh
cnQpIHsKKyAgICAgICAgICAgIHZhciBjb21wdXRlZFN0eWxlID0gZWxlbWVudC5vd25lckRvY3Vt
ZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7CisgICAgICAgICAgICBz
dGFydCA9IHt9OworICAgICAgICAgICAgZm9yIChrZXkgaW4gZW5kKQorICAgICAgICAgICAgICAg
IHN0YXJ0W2tleV0gPSBwYXJzZUludChjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoa2V5
KSwgMTApOworICAgICAgICAgICAgYW5pbWF0aW9uLnN0YXJ0ID0gc3RhcnQ7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgZm9yIChrZXkgaW4gc3RhcnQpCisgICAgICAgICAgICAgICAgZWxl
bWVudC5zdHlsZS5zZXRQcm9wZXJ0eShrZXksIHN0YXJ0W2tleV0gKyAoa2V5IGluIHByb3BlcnR5
VW5pdCA/IHByb3BlcnR5VW5pdFtrZXldIDogZGVmYXVsdFVuaXQpKTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBhbmltYXRlTG9vcCgpCisgICAgeworICAgICAgICBpZiAoaGFzQ29tcGxldGVkKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgLy8gQWR2YW5jZSBmb3J3YXJk
LgorICAgICAgICBjb21wbGV0ZSArPSBpbnRlcnZhbER1cmF0aW9uOworICAgICAgICB2YXIgbmV4
dCA9IGNvbXBsZXRlICsgaW50ZXJ2YWxEdXJhdGlvbjsKKworICAgICAgICAvLyBNYWtlIHN0eWxl
IGNoYW5nZXMuCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYW5pbWF0aW9uc0xlbmd0aDsg
KytpKSB7CisgICAgICAgICAgICB2YXIgYW5pbWF0aW9uID0gYW5pbWF0aW9uc1tpXTsKKyAgICAg
ICAgICAgIHZhciBlbGVtZW50ID0gYW5pbWF0aW9uLmVsZW1lbnQ7CisgICAgICAgICAgICB2YXIg
c3RhcnQgPSBhbmltYXRpb24uc3RhcnQ7CisgICAgICAgICAgICB2YXIgZW5kID0gYW5pbWF0aW9u
LmVuZDsKKyAgICAgICAgICAgIGlmICghZWxlbWVudCB8fCAhZW5kKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgICAgICB2YXIgc3R5bGUgPSBlbGVtZW50LnN0eWxlOworICAg
ICAgICAgICAgZm9yIChrZXkgaW4gZW5kKSB7CisgICAgICAgICAgICAgICAgdmFyIGVuZFZhbHVl
ID0gZW5kW2tleV07CisgICAgICAgICAgICAgICAgaWYgKG5leHQgPCBkdXJhdGlvbikgeworICAg
ICAgICAgICAgICAgICAgICB2YXIgc3RhcnRWYWx1ZSA9IHN0YXJ0W2tleV07CisgICAgICAgICAg
ICAgICAgICAgIHZhciBuZXdWYWx1ZSA9IGN1YmljSW5PdXQoY29tcGxldGUsIHN0YXJ0VmFsdWUs
IGVuZFZhbHVlIC0gc3RhcnRWYWx1ZSwgZHVyYXRpb24pOworICAgICAgICAgICAgICAgICAgICBz
dHlsZS5zZXRQcm9wZXJ0eShrZXksIG5ld1ZhbHVlICsgKGtleSBpbiBwcm9wZXJ0eVVuaXQgPyBw
cm9wZXJ0eVVuaXRba2V5XSA6IGRlZmF1bHRVbml0KSk7CisgICAgICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgICAgIHN0eWxlLnNldFByb3BlcnR5KGtleSwgZW5kVmFsdWUgKyAo
a2V5IGluIHByb3BlcnR5VW5pdCA/IHByb3BlcnR5VW5pdFtrZXldIDogZGVmYXVsdFVuaXQpKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIEVuZCBjb25kaXRpb24uCisg
ICAgICAgIGlmIChjb21wbGV0ZSA+PSBkdXJhdGlvbikgeworICAgICAgICAgICAgaGFzQ29tcGxl
dGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOworICAgICAg
ICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBmb3JjZUNvbXBsZXRlKCkKKyAgICB7CisgICAgICAg
IGlmIChoYXNDb21wbGV0ZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY29tcGxl
dGUgPSBkdXJhdGlvbjsKKyAgICAgICAgYW5pbWF0ZUxvb3AoKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBjYW5jZWwoKQorICAgIHsKKyAgICAgICAgaGFzQ29tcGxldGVkID0gdHJ1ZTsKKyAgICAg
ICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7CisgICAgfQorCisgICAgaW50ZXJ2YWwgPSBzZXRJ
bnRlcnZhbChhbmltYXRlTG9vcCwgaW50ZXJ2YWxEdXJhdGlvbik7CisgICAgcmV0dXJuIHsKKyAg
ICAgICAgY2FuY2VsOiBjYW5jZWwsCisgICAgICAgIGZvcmNlQ29tcGxldGU6IGZvcmNlQ29tcGxl
dGUKKyAgICB9OworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dl
YktpdC5xcmMKaW5kZXggNTJhYzkzNDI0M2IwYTlmYjViNDIwMWQ3M2Q3MWY2NjhhYmQyNDZjNC4u
ZDViZjllYmNmZGYwZjNiNWUxM2NkM2JiMDEyNTdkNWFiMjRiODY4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtMTM1LDYgKzEzNSw3IEBA
CiAgICAgPGZpbGU+VG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUuanM8L2ZpbGU+CiAgICAgPGZp
bGU+dHJlZW91dGxpbmUuanM8L2ZpbGU+CiAgICAgPGZpbGU+VUlTb3VyY2VDb2RlLmpzPC9maWxl
PgorICAgIDxmaWxlPlVJVXRpbHMuanM8L2ZpbGU+CiAgICAgPGZpbGU+VXNlck1ldHJpY3MuanM8
L2ZpbGU+CiAgICAgPGZpbGU+dXRpbGl0aWVzLmpzPC9maWxlPgogICAgIDxmaWxlPlZpZXcuanM8
L2ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2V4
dGVybnMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanMK
aW5kZXggZWZkMGZlM2Q4ZTMyNGFjMmYzN2VlYmI4MTk0NjJjZTExNzE4MmE1ZS4uZjlhYWU4YjQ4
MzlkYTBlZDdjZmU3ZWIyMzIzMWJjZDYxZjM5ZTc5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qcwpAQCAtNzYsNiArNzYsOCBAQCBBcnJheS5wcm90
b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24ob2JqKSB7fQogCiBXZWJJbnNwZWN0b3IuZXh0ZW5zaW9u
U2VydmVyID0ge30KIFdlYkluc3BlY3Rvci5leHRlbnNpb25TZXJ2ZXIubm90aWZ5UmVzb3VyY2VD
b250ZW50Q29tbWl0dGVkID0gZnVuY3Rpb24ocmVzb3VyY2UsIGNvbnRlbnQpIHt9CitXZWJJbnNw
ZWN0b3IuZXh0ZW5zaW9uU2VydmVyLm5vdGlmeVBhbmVsU2hvd24gPSBmdW5jdGlvbihwYW5lbCkg
e30KK1dlYkluc3BlY3Rvci5leHRlbnNpb25TZXJ2ZXIubm90aWZ5UGFuZWxIaWRkZW4gPSBmdW5j
dGlvbihwYW5lbCkge30KIAogLyoqCiAgKiBAcGFyYW0ge3N0cmluZ30gdXJsCkBAIC0xNDYsMyAr
MTQ4LDI4IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwgPSBmdW5jdGlvbigpCiAgKiBAdHlw
ZSB7P1dlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWx9CiAgKi8KIFdlYkluc3BlY3Rvci5wYW5lbHMu
c2NyaXB0cyA9IG51bGw7CisKKy8qKgorICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlBhbmVsfSAK
KyAqLworV2ViSW5zcGVjdG9yLmN1cnJlbnRQYW5lbCA9IGZ1bmN0aW9uKCkge30KKworLyoqCisg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5QYW5lbH0gcGFuZWwKKyAqLworV2ViSW5zcGVjdG9yLnNl
dEN1cnJlbnRQYW5lbCA9IGZ1bmN0aW9uKHBhbmVsKSB7fQorCisvKioKKyAqIEB0eXBlIHs/RWxl
bWVudH0KKyAqLworV2ViSW5zcGVjdG9yLmN1cnJlbnRGb2N1c0VsZW1lbnQgPSBudWxsOworCisv
KioKKyAqIEB0eXBlIHs/RWxlbWVudH0KKyAqLworV2ViSW5zcGVjdG9yLnByZXZpb3VzRm9jdXNF
bGVtZW50ID0gbnVsbDsKKworLyoqCisgKiBAdHlwZSB7c3RyaW5nfQorICovCitXZWJJbnNwZWN0
b3IucGxhdGZvcm1GbGF2b3IgPSAiIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4IDg1YjE3YWFjZTFjOTc2ZmNiMTM2ZGM4MzYx
YWZkM2E2MTRlYWRlZmEuLmI1MGExYjMxNTFhYzYzMDJiMDE1YWEyYTBmMTg4YmUxNDFiYmVjYTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
Lmh0bWwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
aHRtbApAQCAtNDQsNiArNDQsNyBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IkJpbmFyeVNlYXJjaC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0idHJlZW91dGxpbmUuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imluc3BlY3Rvci5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iVUlVdGlscy5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSW5zcGVj
dG9yQmFja2VuZFN0dWIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9Ikluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkV4dGVuc2lvblJlZ2lzdHJ5U3R1
Yi5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmpzCmluZGV4IDhjMjcxZTgxYjUyN2VmNTQ0OTZlYjU0NTEwYzZkNDdhYjFmZDI3
OGQuLjM1MWM1MmQ5ZjZiMGQxYjM1ODYyYTkyZTg2ZDI4Yzc4OGQxNmRlNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC04ODksMTQy
ICs4ODksNiBAQCBXZWJJbnNwZWN0b3IuY29udGV4dE1lbnVFdmVudEZpcmVkID0gZnVuY3Rpb24o
ZXZlbnQpCiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiB9CiAKLVdlYkluc3BlY3Rv
ci5hbmltYXRlU3R5bGUgPSBmdW5jdGlvbihhbmltYXRpb25zLCBkdXJhdGlvbiwgY2FsbGJhY2sp
Ci17Ci0gICAgdmFyIGludGVydmFsOwotICAgIHZhciBjb21wbGV0ZSA9IDA7Ci0gICAgdmFyIGhh
c0NvbXBsZXRlZCA9IGZhbHNlOwotCi0gICAgY29uc3QgaW50ZXJ2YWxEdXJhdGlvbiA9ICgxMDAw
IC8gMzApOyAvLyAzMCBmcmFtZXMgcGVyIHNlY29uZC4KLSAgICBjb25zdCBhbmltYXRpb25zTGVu
Z3RoID0gYW5pbWF0aW9ucy5sZW5ndGg7Ci0gICAgY29uc3QgcHJvcGVydHlVbml0ID0ge29wYWNp
dHk6ICIifTsKLSAgICBjb25zdCBkZWZhdWx0VW5pdCA9ICJweCI7Ci0KLSAgICBmdW5jdGlvbiBj
dWJpY0luT3V0KHQsIGIsIGMsIGQpCi0gICAgewotICAgICAgICBpZiAoKHQvPWQvMikgPCAxKSBy
ZXR1cm4gYy8yKnQqdCp0ICsgYjsKLSAgICAgICAgcmV0dXJuIGMvMiooKHQtPTIpKnQqdCArIDIp
ICsgYjsKLSAgICB9Ci0KLSAgICAvLyBQcmUtcHJvY2VzcyBhbmltYXRpb25zLgotICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgYW5pbWF0aW9uc0xlbmd0aDsgKytpKSB7Ci0gICAgICAgIHZhciBhbmlt
YXRpb24gPSBhbmltYXRpb25zW2ldOwotICAgICAgICB2YXIgZWxlbWVudCA9IG51bGwsIHN0YXJ0
ID0gbnVsbCwgZW5kID0gbnVsbCwga2V5ID0gbnVsbDsKLSAgICAgICAgZm9yIChrZXkgaW4gYW5p
bWF0aW9uKSB7Ci0gICAgICAgICAgICBpZiAoa2V5ID09PSAiZWxlbWVudCIpCi0gICAgICAgICAg
ICAgICAgZWxlbWVudCA9IGFuaW1hdGlvbltrZXldOwotICAgICAgICAgICAgZWxzZSBpZiAoa2V5
ID09PSAic3RhcnQiKQotICAgICAgICAgICAgICAgIHN0YXJ0ID0gYW5pbWF0aW9uW2tleV07Ci0g
ICAgICAgICAgICBlbHNlIGlmIChrZXkgPT09ICJlbmQiKQotICAgICAgICAgICAgICAgIGVuZCA9
IGFuaW1hdGlvbltrZXldOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFlbGVtZW50IHx8ICFl
bmQpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoIXN0YXJ0KSB7Ci0gICAg
ICAgICAgICB2YXIgY29tcHV0ZWRTdHlsZSA9IGVsZW1lbnQub3duZXJEb2N1bWVudC5kZWZhdWx0
Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpOwotICAgICAgICAgICAgc3RhcnQgPSB7fTsK
LSAgICAgICAgICAgIGZvciAoa2V5IGluIGVuZCkKLSAgICAgICAgICAgICAgICBzdGFydFtrZXld
ID0gcGFyc2VJbnQoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGtleSkpOwotICAgICAg
ICAgICAgYW5pbWF0aW9uLnN0YXJ0ID0gc3RhcnQ7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgZm9yIChrZXkgaW4gc3RhcnQpCi0gICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5zZXRQ
cm9wZXJ0eShrZXksIHN0YXJ0W2tleV0gKyAoa2V5IGluIHByb3BlcnR5VW5pdCA/IHByb3BlcnR5
VW5pdFtrZXldIDogZGVmYXVsdFVuaXQpKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBhbmltYXRl
TG9vcCgpCi0gICAgewotICAgICAgICBpZiAoaGFzQ29tcGxldGVkKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAKLSAgICAgICAgLy8gQWR2YW5jZSBmb3J3YXJkLgotICAgICAgICBjb21w
bGV0ZSArPSBpbnRlcnZhbER1cmF0aW9uOwotICAgICAgICB2YXIgbmV4dCA9IGNvbXBsZXRlICsg
aW50ZXJ2YWxEdXJhdGlvbjsKLQotICAgICAgICAvLyBNYWtlIHN0eWxlIGNoYW5nZXMuCi0gICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYW5pbWF0aW9uc0xlbmd0aDsgKytpKSB7Ci0gICAgICAg
ICAgICB2YXIgYW5pbWF0aW9uID0gYW5pbWF0aW9uc1tpXTsKLSAgICAgICAgICAgIHZhciBlbGVt
ZW50ID0gYW5pbWF0aW9uLmVsZW1lbnQ7Ci0gICAgICAgICAgICB2YXIgc3RhcnQgPSBhbmltYXRp
b24uc3RhcnQ7Ci0gICAgICAgICAgICB2YXIgZW5kID0gYW5pbWF0aW9uLmVuZDsKLSAgICAgICAg
ICAgIGlmICghZWxlbWVudCB8fCAhZW5kKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0g
ICAgICAgICAgICB2YXIgc3R5bGUgPSBlbGVtZW50LnN0eWxlOwotICAgICAgICAgICAgZm9yIChr
ZXkgaW4gZW5kKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGVuZFZhbHVlID0gZW5kW2tleV07Ci0g
ICAgICAgICAgICAgICAgaWYgKG5leHQgPCBkdXJhdGlvbikgewotICAgICAgICAgICAgICAgICAg
ICB2YXIgc3RhcnRWYWx1ZSA9IHN0YXJ0W2tleV07Ci0gICAgICAgICAgICAgICAgICAgIHZhciBu
ZXdWYWx1ZSA9IGN1YmljSW5PdXQoY29tcGxldGUsIHN0YXJ0VmFsdWUsIGVuZFZhbHVlIC0gc3Rh
cnRWYWx1ZSwgZHVyYXRpb24pOwotICAgICAgICAgICAgICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0
eShrZXksIG5ld1ZhbHVlICsgKGtleSBpbiBwcm9wZXJ0eVVuaXQgPyBwcm9wZXJ0eVVuaXRba2V5
XSA6IGRlZmF1bHRVbml0KSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIHN0eWxlLnNldFByb3BlcnR5KGtleSwgZW5kVmFsdWUgKyAoa2V5IGluIHByb3BlcnR5
VW5pdCA/IHByb3BlcnR5VW5pdFtrZXldIDogZGVmYXVsdFVuaXQpKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotCi0gICAgICAgIC8vIEVuZCBjb25kaXRpb24uCi0gICAgICAgIGlmIChjb21w
bGV0ZSA+PSBkdXJhdGlvbikgewotICAgICAgICAgICAgaGFzQ29tcGxldGVkID0gdHJ1ZTsKLSAg
ICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOwotICAgICAgICAgICAgaWYgKGNhbGxi
YWNrKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBmdW5jdGlvbiBmb3JjZUNvbXBsZXRlKCkKLSAgICB7Ci0gICAgICAgIGlmIChoYXNDb21wbGV0
ZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgY29tcGxldGUgPSBkdXJhdGlvbjsK
LSAgICAgICAgYW5pbWF0ZUxvb3AoKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBjYW5jZWwoKQot
ICAgIHsKLSAgICAgICAgaGFzQ29tcGxldGVkID0gdHJ1ZTsKLSAgICAgICAgY2xlYXJJbnRlcnZh
bChpbnRlcnZhbCk7Ci0gICAgfQotCi0gICAgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChhbmltYXRl
TG9vcCwgaW50ZXJ2YWxEdXJhdGlvbik7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgY2FuY2VsOiBj
YW5jZWwsCi0gICAgICAgIGZvcmNlQ29tcGxldGU6IGZvcmNlQ29tcGxldGUKLSAgICB9OwotfQot
Ci1XZWJJbnNwZWN0b3IuZWxlbWVudERyYWdTdGFydCA9IGZ1bmN0aW9uKGVsZW1lbnQsIGRpdmlk
ZXJEcmFnLCBlbGVtZW50RHJhZ0VuZCwgZXZlbnQsIGN1cnNvcikKLXsKLSAgICBpZiAodGhpcy5f
ZWxlbWVudERyYWdnaW5nRXZlbnRMaXN0ZW5lciB8fCB0aGlzLl9lbGVtZW50RW5kRHJhZ2dpbmdF
dmVudExpc3RlbmVyKQotICAgICAgICB0aGlzLmVsZW1lbnREcmFnRW5kKGV2ZW50KTsKLQotICAg
IHRoaXMuX2VsZW1lbnREcmFnZ2luZ0V2ZW50TGlzdGVuZXIgPSBkaXZpZGVyRHJhZzsKLSAgICB0
aGlzLl9lbGVtZW50RW5kRHJhZ2dpbmdFdmVudExpc3RlbmVyID0gZWxlbWVudERyYWdFbmQ7Ci0K
LSAgICB2YXIgdGFyZ2V0RG9jdW1lbnQgPSBldmVudC50YXJnZXQub3duZXJEb2N1bWVudDsKLSAg
ICB0YXJnZXREb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCBkaXZpZGVyRHJh
ZywgdHJ1ZSk7Ci0gICAgdGFyZ2V0RG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIs
IGVsZW1lbnREcmFnRW5kLCB0cnVlKTsKLQotICAgIHRhcmdldERvY3VtZW50LmJvZHkuc3R5bGUu
Y3Vyc29yID0gY3Vyc29yOwotCi0gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLX0KLQotV2Vi
SW5zcGVjdG9yLmVsZW1lbnREcmFnRW5kID0gZnVuY3Rpb24oZXZlbnQpCi17Ci0gICAgdmFyIHRh
cmdldERvY3VtZW50ID0gZXZlbnQudGFyZ2V0Lm93bmVyRG9jdW1lbnQ7Ci0gICAgdGFyZ2V0RG9j
dW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5fZWxlbWVudERyYWdn
aW5nRXZlbnRMaXN0ZW5lciwgdHJ1ZSk7Ci0gICAgdGFyZ2V0RG9jdW1lbnQucmVtb3ZlRXZlbnRM
aXN0ZW5lcigibW91c2V1cCIsIHRoaXMuX2VsZW1lbnRFbmREcmFnZ2luZ0V2ZW50TGlzdGVuZXIs
IHRydWUpOwotCi0gICAgdGFyZ2V0RG9jdW1lbnQuYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgi
Y3Vyc29yIik7Ci0KLSAgICBkZWxldGUgdGhpcy5fZWxlbWVudERyYWdnaW5nRXZlbnRMaXN0ZW5l
cjsKLSAgICBkZWxldGUgdGhpcy5fZWxlbWVudEVuZERyYWdnaW5nRXZlbnRMaXN0ZW5lcjsKLQot
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci19Ci0KIFdlYkluc3BlY3Rvci50b2dnbGVTZWFy
Y2hpbmdGb3JOb2RlID0gZnVuY3Rpb24oKQogewogICAgIGlmICh0aGlzLnBhbmVscy5lbGVtZW50
cykgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>