<?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>28740</bug_id>
          
          <creation_ts>2009-08-26 08:15:29 -0700</creation_ts>
          <short_desc>Factor out summary bar from Resources panel to reuse it in Heap profile view</short_desc>
          <delta_ts>2009-08-27 09:35:46 -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="Mikhail Naganov">mnaganov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>pfeldman</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>142856</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2009-08-26 08:15:29 -0700</bug_when>
    <thetext>The iTunes-like summary bar is currently private in Resources panel. As we want to reuse it in Heap profile view, it needs to be factored out as a separate component.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142857</commentid>
    <comment_count>1</comment_count>
      <attachid>38614</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2009-08-26 08:20:57 -0700</bug_when>
    <thetext>Created attachment 38614
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143120</commentid>
    <comment_count>2</comment_count>
      <attachid>38614</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-08-27 08:38:32 -0700</bug_when>
    <thetext>Comment on attachment 38614
Proposed patch

&gt; +        return this.calculator_;
&gt; +        this.calculator_ = x;

Our coding style uses prefix underscores for private members/functions.

Looks good otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143124</commentid>
    <comment_count>3</comment_count>
      <attachid>38672</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2009-08-27 08:54:29 -0700</bug_when>
    <thetext>Created attachment 38672
Comment addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143128</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-08-27 09:10:28 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/WebCore.gypi
	M	WebCore/WebCore.vcproj/WebCore.vcproj
	M	WebCore/inspector/front-end/ResourcesPanel.js
	M	WebCore/inspector/front-end/WebKit.qrc
	M	WebCore/inspector/front-end/inspector.css
	M	WebCore/inspector/front-end/inspector.html
Committed r47822</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143134</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-08-27 09:35:46 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	A	WebCore/inspector/front-end/SummaryBar.js
Committed r47823</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38614</attachid>
            <date>2009-08-26 08:20:57 -0700</date>
            <delta_ts>2009-08-27 08:54:29 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>factor-out-summary-bar-patch</filename>
            <type>text/plain</type>
            <size>33118</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjI2MThkOS4uZGE2MjA2ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAwOS0wOC0yNiAgTWlraGFpbCBOYWdh
bm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEZhY3RvciBvdXQgRmFjdG9yIG91dCBzdW1tYXJ5IGJhciBm
cm9tIFJlc291cmNlcyBwYW5lbC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mjg3NDAKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAg
KiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
c1BhbmVsLnByb3RvdHlwZS5yZXNldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2Vz
UGFuZWwucHJvdG90eXBlLl91cGRhdGVTdW1tYXJ5R3JhcGgpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5fdXBkYXRlRGl2aWRlcnNMYWJlbEJhclBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuX2No
YW5nZVNvcnRpbmdGdW5jdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TdW1t
YXJ5QmFyLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdW1tYXJ5QmFyKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TdW1tYXJ5QmFyLnByb3RvdHlwZS5nZXQgY2FsY3VsYXRvcik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3VtbWFyeUJhci5wcm90b3R5cGUuc2V0IGNhbGN1bGF0
b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN1bW1hcnlCYXIucHJvdG90eXBlLnJlc2V0KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TdW1tYXJ5QmFyLnByb3RvdHlwZS51cGRhdGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlN1bW1hcnlCYXIucHJvdG90eXBlLl9kcmF3U3dhdGNoLmRyYXdT
d2F0Y2hTcXVhcmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN1bW1hcnlCYXIucHJvdG90eXBl
Ll9kcmF3U3dhdGNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdW1tYXJ5QmFyLnByb3RvdHlw
ZS5fZHJhd1N1bW1hcnlHcmFwaC52YXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN1bW1hcnlC
YXIucHJvdG90eXBlLl9kcmF3U3VtbWFyeUdyYXBoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
dW1tYXJ5QmFyLnByb3RvdHlwZS5fZHJhd1N1bW1hcnlHcmFwaC5kcmF3UGlsbCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU3VtbWFyeUJhci5wcm90b3R5cGUuX2ZhZGVPdXRSZWN0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TdW1tYXJ5QmFyLnByb3RvdHlwZS5fbWFrZUxlZ2VuZEVsZW1lbnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3M6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKwogMjAwOS0wOC0yNiAgVmluY2VudCBVbnR6IDx2dW50
ekBnbm9tZS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA0Yjhl
MzlmLi40NDE0NzI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzQ5Myw2ICszNDkzLDcgQEAKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL1N0YXR1c0JhckJ1dHRvbi5qcycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9TdG9yYWdlUGFuZWwuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvU3VtbWFyeUJhci5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9UZXh0UHJvbXB0LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1RvcERv
d25Qcm9maWxlRGF0YUdyaWRUcmVlLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL3RyZWVvdXRsaW5lLmpzJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmlu
ZGV4IDQzMzNlYjMuLjZmNzg2Y2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agpAQCAtMzEzNTUsNiArMzEzNTUsMTAgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxG
aWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcU3VtbWFyeUJh
ci5qcyINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFRleHRQcm9tcHQuanMiDQogCQkJCQk+DQogCQkJ
CTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3Vy
Y2VzUGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwu
anMKaW5kZXggNDBlN2RkNC4uMDcxNzRiNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwpAQCAtNjAsOSArNjAsOSBAQCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VzUGFuZWwgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5jb250YWluZXJDb250ZW50RWxlbWVu
dC5pZCA9ICJyZXNvdXJjZXMtY29udGFpbmVyLWNvbnRlbnQiOwogICAgIHRoaXMuY29udGFpbmVy
RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNvbnRhaW5lckNvbnRlbnRFbGVtZW50KTsKIAotICAg
IHRoaXMuc3VtbWFyeUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAg
ICB0aGlzLnN1bW1hcnlFbGVtZW50LmlkID0gInJlc291cmNlcy1zdW1tYXJ5IjsKLSAgICB0aGlz
LmNvbnRhaW5lckNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuc3VtbWFyeUVsZW1lbnQp
OworICAgIHRoaXMuc3VtbWFyeUJhciA9IG5ldyBXZWJJbnNwZWN0b3IuU3VtbWFyeUJhcih0aGlz
LmNhdGVnb3J5Q29sb3JzLCB0aGlzLmNhdGVnb3J5T3JkZXIpOworICAgIHRoaXMuc3VtbWFyeUJh
ci5lbGVtZW50LmlkID0gInJlc291cmNlcy1zdW1tYXJ5IjsKKyAgICB0aGlzLmNvbnRhaW5lckNv
bnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuc3VtbWFyeUJhci5lbGVtZW50KTsKIAogICAg
IHRoaXMucmVzb3VyY2VzR3JhcGhzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOwogICAgIHRoaXMucmVzb3VyY2VzR3JhcGhzRWxlbWVudC5pZCA9ICJyZXNvdXJjZXMtZ3Jh
cGhzIjsKQEAgLTc2LDE2ICs3Niw2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbCA9IGZ1
bmN0aW9uKCkKICAgICB0aGlzLmRpdmlkZXJzTGFiZWxCYXJFbGVtZW50LmlkID0gInJlc291cmNl
cy1kaXZpZGVycy1sYWJlbC1iYXIiOwogICAgIHRoaXMuY29udGFpbmVyQ29udGVudEVsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5kaXZpZGVyc0xhYmVsQmFyRWxlbWVudCk7CiAKLSAgICB0aGlzLnN1
bW1hcnlHcmFwaEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKLSAg
ICB0aGlzLnN1bW1hcnlHcmFwaEVsZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsICI0NTAiKTsK
LSAgICB0aGlzLnN1bW1hcnlHcmFwaEVsZW1lbnQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCAiMzgi
KTsKLSAgICB0aGlzLnN1bW1hcnlHcmFwaEVsZW1lbnQuaWQgPSAicmVzb3VyY2VzLXN1bW1hcnkt
Z3JhcGgiOwotICAgIHRoaXMuc3VtbWFyeUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5zdW1tYXJ5
R3JhcGhFbGVtZW50KTsKLQotICAgIHRoaXMubGVnZW5kRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMubGVnZW5kRWxlbWVudC5pZCA9ICJyZXNvdXJjZXMt
Z3JhcGgtbGVnZW5kIjsKLSAgICB0aGlzLnN1bW1hcnlFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMu
bGVnZW5kRWxlbWVudCk7Ci0KICAgICB0aGlzLnNpZGViYXJUcmVlRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoIm9sIik7CiAgICAgdGhpcy5zaWRlYmFyVHJlZUVsZW1lbnQuY2xhc3NO
YW1lID0gInNpZGViYXItdHJlZSI7CiAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLnNpZGViYXJUcmVlRWxlbWVudCk7CkBAIC0xNzYsNiArMTY2LDggQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlc1BhbmVsID0gZnVuY3Rpb24oKQogV2ViSW5zcGVjdG9yLlJlc291cmNlc1Bh
bmVsLnByb3RvdHlwZSA9IHsKICAgICB0b29sYmFySXRlbUNsYXNzOiAicmVzb3VyY2VzIiwKIAor
ICAgIGNhdGVnb3J5Q29sb3JzOiB7ZG9jdW1lbnRzOiB7cjogNDcsIGc6IDEwMiwgYjogMjM2fSwg
c3R5bGVzaGVldHM6IHtyOiAxNTcsIGc6IDIzMSwgYjogMTE5fSwgaW1hZ2VzOiB7cjogMTY0LCBn
OiA2MCwgYjogMjU1fSwgc2NyaXB0czoge3I6IDI1NSwgZzogMTIxLCBiOiAwfSwgeGhyOiB7cjog
MjMxLCBnOiAyMzEsIGI6IDEwfSwgZm9udHM6IHtyOiAyNTUsIGc6IDgyLCBiOiA2Mn0sIG90aGVy
OiB7cjogMTg2LCBnOiAxODYsIGI6IDE4Nn19LAorCiAgICAgY2F0ZWdvcnlPcmRlcjogWyJkb2N1
bWVudHMiLCAic3R5bGVzaGVldHMiLCAiaW1hZ2VzIiwgInNjcmlwdHMiLCAieGhyIiwgImZvbnRz
IiwgIm90aGVyIl0sCiAKICAgICBmaWx0ZXI6IGZ1bmN0aW9uIChjYXRlZ29yeSkgewpAQCAtNDU2
LDEyICs0NDgsMTAgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdGhpcy5yZXNvdXJjZXNUcmVlRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAg
ICAgICB0aGlzLnZpZXdzQ29udGFpbmVyRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAg
ICB0aGlzLnJlc291cmNlc0dyYXBoc0VsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAg
dGhpcy5sZWdlbmRFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgIHRoaXMuc3VtbWFy
eUJhci5yZXNldCgpOwogCiAgICAgICAgIHRoaXMuX3VwZGF0ZUdyYXBoRGl2aWRlcnNJZk5lZWRl
ZCh0cnVlKTsKIAotICAgICAgICB0aGlzLl9kcmF3U3VtbWFyeUdyYXBoKCk7IC8vIGRyYXdzIGFu
IGVtcHR5IGdyYXBoCi0KICAgICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIucmVzb3VyY2VU
cmFja2luZ0VuYWJsZWQoKSkgewogICAgICAgICAgICAgdGhpcy5lbmFibGVUb2dnbGVCdXR0b24u
dGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc291cmNlIHRyYWNraW5nIGVuYWJsZWQu
IENsaWNrIHRvIGRpc2FibGUuIik7CiAgICAgICAgICAgICB0aGlzLmVuYWJsZVRvZ2dsZUJ1dHRv
bi50b2dnbGVkID0gdHJ1ZTsKQEAgLTY2Miw0MCArNjUyLDYgQEAgV2ViSW5zcGVjdG9yLlJlc291
cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5zaWRlYmFyVHJlZS5oYW5kbGVL
ZXlFdmVudChldmVudCk7CiAgICAgfSwKIAotICAgIF9tYWtlTGVnZW5kRWxlbWVudDogZnVuY3Rp
b24obGFiZWwsIHZhbHVlLCBjb2xvcikKLSAgICB7Ci0gICAgICAgIHZhciBsZWdlbmRFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKTsKLSAgICAgICAgbGVnZW5kRWxlbWVu
dC5jbGFzc05hbWUgPSAicmVzb3VyY2VzLWdyYXBoLWxlZ2VuZC1pdGVtIjsKLQotICAgICAgICBp
ZiAoY29sb3IpIHsKLSAgICAgICAgICAgIHZhciBzd2F0Y2ggPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJjYW52YXMiKTsKLSAgICAgICAgICAgIHN3YXRjaC5jbGFzc05hbWUgPSAicmVzb3VyY2Vz
LWdyYXBoLWxlZ2VuZC1zd2F0Y2giOwotICAgICAgICAgICAgc3dhdGNoLnNldEF0dHJpYnV0ZSgi
d2lkdGgiLCAiMTMiKTsKLSAgICAgICAgICAgIHN3YXRjaC5zZXRBdHRyaWJ1dGUoImhlaWdodCIs
ICIyNCIpOwotCi0gICAgICAgICAgICBsZWdlbmRFbGVtZW50LmFwcGVuZENoaWxkKHN3YXRjaCk7
Ci0KLSAgICAgICAgICAgIHRoaXMuX2RyYXdTd2F0Y2goc3dhdGNoLCBjb2xvcik7Ci0gICAgICAg
IH0KLQotICAgICAgICB2YXIgbGFiZWxFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7Ci0gICAgICAgIGxhYmVsRWxlbWVudC5jbGFzc05hbWUgPSAicmVzb3VyY2VzLWdyYXBo
LWxlZ2VuZC1sYWJlbCI7Ci0gICAgICAgIGxlZ2VuZEVsZW1lbnQuYXBwZW5kQ2hpbGQobGFiZWxF
bGVtZW50KTsKLQotICAgICAgICB2YXIgaGVhZGVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwotICAgICAgICB2YXIgaGVhZGVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBoZWFkZXJFbGVtZW50LmNsYXNzTmFtZSA9ICJyZXNv
dXJjZXMtZ3JhcGgtbGVnZW5kLWhlYWRlciI7Ci0gICAgICAgIGhlYWRlckVsZW1lbnQudGV4dENv
bnRlbnQgPSBsYWJlbDsKLSAgICAgICAgbGFiZWxFbGVtZW50LmFwcGVuZENoaWxkKGhlYWRlckVs
ZW1lbnQpOwotCi0gICAgICAgIHZhciB2YWx1ZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKLSAgICAgICAgdmFsdWVFbGVtZW50LmNsYXNzTmFtZSA9ICJyZXNvdXJjZXMt
Z3JhcGgtbGVnZW5kLXZhbHVlIjsKLSAgICAgICAgdmFsdWVFbGVtZW50LnRleHRDb250ZW50ID0g
dmFsdWU7Ci0gICAgICAgIGxhYmVsRWxlbWVudC5hcHBlbmRDaGlsZCh2YWx1ZUVsZW1lbnQpOwot
Ci0gICAgICAgIHJldHVybiBsZWdlbmRFbGVtZW50OwotICAgIH0sCi0KICAgICBfc29ydFJlc291
cmNlc0lmTmVlZGVkOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgc29ydGVkRWxlbWVu
dHMgPSBbXS5jb25jYXQodGhpcy5yZXNvdXJjZXNUcmVlRWxlbWVudC5jaGlsZHJlbik7CkBAIC03
NjAsMjgxICs3MTYsMTUgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgfQogICAgIH0sCiAKLSAgICBfZmFkZU91dFJlY3Q6IGZ1bmN0aW9uKGN0eCwg
eCwgeSwgdywgaCwgYTEsIGEyKQotICAgIHsKLSAgICAgICAgY3R4LnNhdmUoKTsKLQotICAgICAg
ICB2YXIgZ3JhZGllbnQgPSBjdHguY3JlYXRlTGluZWFyR3JhZGllbnQoeCwgeSwgeCwgeSArIGgp
OwotICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMC4wLCAicmdiYSgwLCAwLCAwLCAiICsg
KDEuMCAtIGExKSArICIpIik7Ci0gICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgwLjgsICJy
Z2JhKDAsIDAsIDAsICIgKyAoMS4wIC0gYTIpICsgIikiKTsKLSAgICAgICAgZ3JhZGllbnQuYWRk
Q29sb3JTdG9wKDEuMCwgInJnYmEoMCwgMCwgMCwgMS4wKSIpOwotCi0gICAgICAgIGN0eC5nbG9i
YWxDb21wb3NpdGVPcGVyYXRpb24gPSAiZGVzdGluYXRpb24tb3V0IjsKLQotICAgICAgICBjdHgu
ZmlsbFN0eWxlID0gZ3JhZGllbnQ7Ci0gICAgICAgIGN0eC5maWxsUmVjdCh4LCB5LCB3LCBoKTsK
LQotICAgICAgICBjdHgucmVzdG9yZSgpOwotICAgIH0sCi0KLSAgICBfZHJhd1N3YXRjaDogZnVu
Y3Rpb24oY2FudmFzLCBjb2xvcikKLSAgICB7Ci0gICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0
Q29udGV4dCgiMmQiKTsKLQotICAgICAgICBmdW5jdGlvbiBkcmF3U3dhdGNoU3F1YXJlKCkgewot
ICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IGNvbG9yOwotICAgICAgICAgICAgY3R4LmZpbGxS
ZWN0KDAsIDAsIDEzLCAxMyk7Ci0KLSAgICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVh
dGVMaW5lYXJHcmFkaWVudCgwLCAwLCAxMywgMTMpOwotICAgICAgICAgICAgZ3JhZGllbnQuYWRk
Q29sb3JTdG9wKDAuMCwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSIpOwotICAgICAgICAgICAg
Z3JhZGllbnQuYWRkQ29sb3JTdG9wKDEuMCwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOwot
Ci0gICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gZ3JhZGllbnQ7Ci0gICAgICAgICAgICBjdHgu
ZmlsbFJlY3QoMCwgMCwgMTMsIDEzKTsKLQotICAgICAgICAgICAgZ3JhZGllbnQgPSBjdHguY3Jl
YXRlTGluZWFyR3JhZGllbnQoMTMsIDEzLCAwLCAwKTsKLSAgICAgICAgICAgIGdyYWRpZW50LmFk
ZENvbG9yU3RvcCgwLjAsICJyZ2JhKDAsIDAsIDAsIDAuMikiKTsKLSAgICAgICAgICAgIGdyYWRp
ZW50LmFkZENvbG9yU3RvcCgxLjAsICJyZ2JhKDAsIDAsIDAsIDAuMCkiKTsKLQotICAgICAgICAg
ICAgY3R4LmZpbGxTdHlsZSA9IGdyYWRpZW50OwotICAgICAgICAgICAgY3R4LmZpbGxSZWN0KDAs
IDAsIDEzLCAxMyk7Ci0KLSAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9ICJyZ2JhKDAsIDAs
IDAsIDAuNikiOwotICAgICAgICAgICAgY3R4LnN0cm9rZVJlY3QoMC41LCAwLjUsIDEyLCAxMik7
Ci0gICAgICAgIH0KLQotICAgICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIDEzLCAyNCk7Ci0KLSAg
ICAgICAgZHJhd1N3YXRjaFNxdWFyZSgpOwotCi0gICAgICAgIGN0eC5zYXZlKCk7Ci0KLSAgICAg
ICAgY3R4LnRyYW5zbGF0ZSgwLCAyNSk7Ci0gICAgICAgIGN0eC5zY2FsZSgxLCAtMSk7Ci0KLSAg
ICAgICAgZHJhd1N3YXRjaFNxdWFyZSgpOwotCi0gICAgICAgIGN0eC5yZXN0b3JlKCk7Ci0KLSAg
ICAgICAgdGhpcy5fZmFkZU91dFJlY3QoY3R4LCAwLCAxMywgMTMsIDEzLCAwLjUsIDAuMCk7Ci0g
ICAgfSwKLQotICAgIF9kcmF3U3VtbWFyeUdyYXBoOiBmdW5jdGlvbihzZWdtZW50cykKLSAgICB7
Ci0gICAgICAgIGlmICghdGhpcy5zdW1tYXJ5R3JhcGhFbGVtZW50KQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIGlmICghc2VnbWVudHMgfHwgIXNlZ21lbnRzLmxlbmd0aCkgewotICAg
ICAgICAgICAgc2VnbWVudHMgPSBbe2NvbG9yOiAid2hpdGUiLCB2YWx1ZTogMX1dOwotICAgICAg
ICAgICAgdGhpcy5fc2hvd2luZ0VtcHR5U3VtbWFyeUdyYXBoID0gdHJ1ZTsKLSAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICBkZWxldGUgdGhpcy5fc2hvd2luZ0VtcHR5U3VtbWFyeUdyYXBoOwot
Ci0gICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgdG90YWwgb2YgYWxsIHNlZ21lbnRzLgotICAgICAg
ICB2YXIgdG90YWwgPSAwOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlZ21lbnRzLmxl
bmd0aDsgKytpKQotICAgICAgICAgICAgdG90YWwgKz0gc2VnbWVudHNbaV0udmFsdWU7Ci0KLSAg
ICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBwZXJjZW50YWdlIG9mIGVhY2ggc2VnbWVudCwgcm91bmRl
ZCB0byB0aGUgbmVhcmVzdCBwZXJjZW50LgotICAgICAgICB2YXIgcGVyY2VudHMgPSBzZWdtZW50
cy5tYXAoZnVuY3Rpb24ocykgeyByZXR1cm4gTWF0aC5tYXgoTWF0aC5yb3VuZCgxMDAgKiBzLnZh
bHVlIC8gdG90YWwpLCAxKSB9KTsKLQotICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHRvdGFsIHBl
cmNlbnRhZ2UuCi0gICAgICAgIHZhciBwZXJjZW50VG90YWwgPSAwOwotICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHBlcmNlbnRzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgcGVyY2VudFRv
dGFsICs9IHBlcmNlbnRzW2ldOwotCi0gICAgICAgIC8vIE1ha2Ugc3VyZSBvdXIgcGVyY2VudGFn
ZSB0b3RhbCBpcyBub3QgZ3JlYXRlci10aGFuIDEwMCwgaXQgY2FuIGJlIGdyZWF0ZXIKLSAgICAg
ICAgLy8gaWYgd2Ugcm91bmRlZCB1cCBmb3IgYSBmZXcgc2VnbWVudHMuCi0gICAgICAgIHdoaWxl
IChwZXJjZW50VG90YWwgPiAxMDApIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
cGVyY2VudHMubGVuZ3RoICYmIHBlcmNlbnRUb3RhbCA+IDEwMDsgKytpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHBlcmNlbnRzW2ldID4gMSkgewotICAgICAgICAgICAgICAgICAgICAtLXBlcmNl
bnRzW2ldOwotICAgICAgICAgICAgICAgICAgICAtLXBlcmNlbnRUb3RhbDsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBNYWtlIHN1cmUg
b3VyIHBlcmNlbnRhZ2UgdG90YWwgaXMgbm90IGxlc3MtdGhhbiAxMDAsIGl0IGNhbiBiZSBsZXNz
Ci0gICAgICAgIC8vIGlmIHdlIHJvdW5kZWQgZG93biBmb3IgYSBmZXcgc2VnbWVudHMuCi0gICAg
ICAgIHdoaWxlIChwZXJjZW50VG90YWwgPCAxMDApIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgcGVyY2VudHMubGVuZ3RoICYmIHBlcmNlbnRUb3RhbCA8IDEwMDsgKytpKSB7Ci0g
ICAgICAgICAgICAgICAgKytwZXJjZW50c1tpXTsKLSAgICAgICAgICAgICAgICArK3BlcmNlbnRU
b3RhbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHZhciBjdHggPSB0aGlz
LnN1bW1hcnlHcmFwaEVsZW1lbnQuZ2V0Q29udGV4dCgiMmQiKTsKLQotICAgICAgICB2YXIgeCA9
IDA7Ci0gICAgICAgIHZhciB5ID0gMDsKLSAgICAgICAgdmFyIHcgPSA0NTA7Ci0gICAgICAgIHZh
ciBoID0gMTk7Ci0gICAgICAgIHZhciByID0gKGggLyAyKTsKLQotICAgICAgICBmdW5jdGlvbiBk
cmF3UGlsbFNoYWRvdygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIFRoaXMgZHJhd3MgYSBs
aW5lIHdpdGggYSBzaGFkb3cgdGhhdCBpcyBvZmZzZXQgYXdheSBmcm9tIHRoZSBsaW5lLiBUaGUg
bGluZSBpcyBzdHJva2VkCi0gICAgICAgICAgICAvLyB0d2ljZSB3aXRoIGRpZmZlcmVudCBYIHNo
YWRvdyBvZmZzZXRzIHRvIGdpdmUgbW9yZSBmZWF0aGVyZWQgZWRnZXMuIExhdGVyIHdlIGVyYXNl
IHRoZQotICAgICAgICAgICAgLy8gbGluZSB3aXRoIGRlc3RpbmF0aW9uLW91dCAxMDAlIHRyYW5z
cGFyZW50IGJsYWNrLCBsZWF2aW5nIG9ubHkgdGhlIHNoYWRvdy4gVGhpcyBvbmx5Ci0gICAgICAg
ICAgICAvLyB3b3JrcyBpZiBub3RoaW5nIGhhcyBiZWVuIGRyYXduIGludG8gdGhlIGNhbnZhcyB5
ZXQuCi0KLSAgICAgICAgICAgIGN0eC5iZWdpblBhdGgoKTsKLSAgICAgICAgICAgIGN0eC5tb3Zl
VG8oeCArIDQsIHkgKyBoIC0gMyAtIDAuNSk7Ci0gICAgICAgICAgICBjdHgubGluZVRvKHggKyB3
IC0gNCwgeSArIGggLSAzIC0gMC41KTsKLSAgICAgICAgICAgIGN0eC5jbG9zZVBhdGgoKTsKLQot
ICAgICAgICAgICAgY3R4LnNhdmUoKTsKLQotICAgICAgICAgICAgY3R4LnNoYWRvd0JsdXIgPSAy
OwotICAgICAgICAgICAgY3R4LnNoYWRvd0NvbG9yID0gInJnYmEoMCwgMCwgMCwgMC41KSI7Ci0g
ICAgICAgICAgICBjdHguc2hhZG93T2Zmc2V0WCA9IDM7Ci0gICAgICAgICAgICBjdHguc2hhZG93
T2Zmc2V0WSA9IDU7Ci0KLSAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9ICJ3aGl0ZSI7Ci0g
ICAgICAgICAgICBjdHgubGluZVdpZHRoID0gMTsKLQotICAgICAgICAgICAgY3R4LnN0cm9rZSgp
OwotCi0gICAgICAgICAgICBjdHguc2hhZG93T2Zmc2V0WCA9IC0zOwotCi0gICAgICAgICAgICBj
dHguc3Ryb2tlKCk7Ci0KLSAgICAgICAgICAgIGN0eC5yZXN0b3JlKCk7Ci0KLSAgICAgICAgICAg
IGN0eC5zYXZlKCk7Ci0KLSAgICAgICAgICAgIGN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24g
PSAiZGVzdGluYXRpb24tb3V0IjsKLSAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9ICJyZ2Jh
KDAsIDAsIDAsIDEpIjsKLSAgICAgICAgICAgIGN0eC5saW5lV2lkdGggPSAxOwotCi0gICAgICAg
ICAgICBjdHguc3Ryb2tlKCk7Ci0KLSAgICAgICAgICAgIGN0eC5yZXN0b3JlKCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBmdW5jdGlvbiBkcmF3UGlsbCgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IC8vIE1ha2UgYSByb3VuZGVkIHJlY3QgcGF0aC4KLSAgICAgICAgICAgIGN0eC5iZWdpblBhdGgo
KTsKLSAgICAgICAgICAgIGN0eC5tb3ZlVG8oeCwgeSArIHIpOwotICAgICAgICAgICAgY3R4Lmxp
bmVUbyh4LCB5ICsgaCAtIHIpOwotICAgICAgICAgICAgY3R4LnF1YWRyYXRpY0N1cnZlVG8oeCwg
eSArIGgsIHggKyByLCB5ICsgaCk7Ci0gICAgICAgICAgICBjdHgubGluZVRvKHggKyB3IC0gciwg
eSArIGgpOwotICAgICAgICAgICAgY3R4LnF1YWRyYXRpY0N1cnZlVG8oeCArIHcsIHkgKyBoLCB4
ICsgdywgeSArIGggLSByKTsKLSAgICAgICAgICAgIGN0eC5saW5lVG8oeCArIHcsIHkgKyByKTsK
LSAgICAgICAgICAgIGN0eC5xdWFkcmF0aWNDdXJ2ZVRvKHggKyB3LCB5LCB4ICsgdyAtIHIsIHkp
OwotICAgICAgICAgICAgY3R4LmxpbmVUbyh4ICsgciwgeSk7Ci0gICAgICAgICAgICBjdHgucXVh
ZHJhdGljQ3VydmVUbyh4LCB5LCB4LCB5ICsgcik7Ci0gICAgICAgICAgICBjdHguY2xvc2VQYXRo
KCk7Ci0KLSAgICAgICAgICAgIC8vIENsaXAgdG8gdGhlIHJvdW5kZWQgcmVjdCBwYXRoLgotICAg
ICAgICAgICAgY3R4LnNhdmUoKTsKLSAgICAgICAgICAgIGN0eC5jbGlwKCk7Ci0KLSAgICAgICAg
ICAgIC8vIEZpbGwgdGhlIHNlZ21lbnRzIHdpdGggdGhlIGFzc29jaWF0ZWQgY29sb3IuCi0gICAg
ICAgICAgICB2YXIgcHJldmlvdXNTZWdtZW50c1dpZHRoID0gMDsKLSAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgc2VnbWVudHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICB2
YXIgc2VnbWVudFdpZHRoID0gTWF0aC5yb3VuZCh3ICogcGVyY2VudHNbaV0gLyAxMDApOwotICAg
ICAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBzZWdtZW50c1tpXS5jb2xvcjsKLSAgICAgICAg
ICAgICAgICBjdHguZmlsbFJlY3QoeCArIHByZXZpb3VzU2VnbWVudHNXaWR0aCwgeSwgc2VnbWVu
dFdpZHRoLCBoKTsKLSAgICAgICAgICAgICAgICBwcmV2aW91c1NlZ21lbnRzV2lkdGggKz0gc2Vn
bWVudFdpZHRoOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBEcmF3IHRoZSBzZWdt
ZW50IGRpdmlkZXIgbGluZXMuCi0gICAgICAgICAgICBjdHgubGluZVdpZHRoID0gMTsKLSAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgMjA7ICsraSkgewotICAgICAgICAgICAgICAgIGN0
eC5iZWdpblBhdGgoKTsKLSAgICAgICAgICAgICAgICBjdHgubW92ZVRvKHggKyAoaSAqIE1hdGgu
cm91bmQodyAvIDIwKSkgKyAwLjUsIHkpOwotICAgICAgICAgICAgICAgIGN0eC5saW5lVG8oeCAr
IChpICogTWF0aC5yb3VuZCh3IC8gMjApKSArIDAuNSwgeSArIGgpOwotICAgICAgICAgICAgICAg
IGN0eC5jbG9zZVBhdGgoKTsKLQotICAgICAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9ICJy
Z2JhKDAsIDAsIDAsIDAuMikiOwotICAgICAgICAgICAgICAgIGN0eC5zdHJva2UoKTsKLQotICAg
ICAgICAgICAgICAgIGN0eC5iZWdpblBhdGgoKTsKLSAgICAgICAgICAgICAgICBjdHgubW92ZVRv
KHggKyAoaSAqIE1hdGgucm91bmQodyAvIDIwKSkgKyAxLjUsIHkpOwotICAgICAgICAgICAgICAg
IGN0eC5saW5lVG8oeCArIChpICogTWF0aC5yb3VuZCh3IC8gMjApKSArIDEuNSwgeSArIGgpOwot
ICAgICAgICAgICAgICAgIGN0eC5jbG9zZVBhdGgoKTsKLQotICAgICAgICAgICAgICAgIGN0eC5z
dHJva2VTdHlsZSA9ICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMikiOwotICAgICAgICAgICAgICAg
IGN0eC5zdHJva2UoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gRHJhdyB0aGUg
cGlsbCBzaGFkaW5nLgotICAgICAgICAgICAgdmFyIGxpZ2h0R3JhZGllbnQgPSBjdHguY3JlYXRl
TGluZWFyR3JhZGllbnQoeCwgeSwgeCwgeSArIChoIC8gMS41KSk7Ci0gICAgICAgICAgICBsaWdo
dEdyYWRpZW50LmFkZENvbG9yU3RvcCgwLjAsICJyZ2JhKDIyMCwgMjIwLCAyMjAsIDAuNikiKTsK
LSAgICAgICAgICAgIGxpZ2h0R3JhZGllbnQuYWRkQ29sb3JTdG9wKDAuNCwgInJnYmEoMjIwLCAy
MjAsIDIyMCwgMC4yKSIpOwotICAgICAgICAgICAgbGlnaHRHcmFkaWVudC5hZGRDb2xvclN0b3Ao
MS4wLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjApIik7Ci0KLSAgICAgICAgICAgIHZhciBkYXJr
R3JhZGllbnQgPSBjdHguY3JlYXRlTGluZWFyR3JhZGllbnQoeCwgeSArIChoIC8gMyksIHgsIHkg
KyBoKTsKLSAgICAgICAgICAgIGRhcmtHcmFkaWVudC5hZGRDb2xvclN0b3AoMC4wLCAicmdiYSgw
LCAwLCAwLCAwLjApIik7Ci0gICAgICAgICAgICBkYXJrR3JhZGllbnQuYWRkQ29sb3JTdG9wKDAu
OCwgInJnYmEoMCwgMCwgMCwgMC4yKSIpOwotICAgICAgICAgICAgZGFya0dyYWRpZW50LmFkZENv
bG9yU3RvcCgxLjAsICJyZ2JhKDAsIDAsIDAsIDAuNSkiKTsKLQotICAgICAgICAgICAgY3R4LmZp
bGxTdHlsZSA9IGRhcmtHcmFkaWVudDsKLSAgICAgICAgICAgIGN0eC5maWxsUmVjdCh4LCB5LCB3
LCBoKTsKLQotICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IGxpZ2h0R3JhZGllbnQ7Ci0gICAg
ICAgICAgICBjdHguZmlsbFJlY3QoeCwgeSwgdywgaCk7Ci0KLSAgICAgICAgICAgIGN0eC5yZXN0
b3JlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjdHguY2xlYXJSZWN0KHgsIHksIHcsIChoICog
MikpOwotCi0gICAgICAgIGRyYXdQaWxsU2hhZG93KCk7Ci0gICAgICAgIGRyYXdQaWxsKCk7Ci0K
LSAgICAgICAgY3R4LnNhdmUoKTsKLQotICAgICAgICBjdHgudHJhbnNsYXRlKDAsIChoICogMikg
KyAxKTsKLSAgICAgICAgY3R4LnNjYWxlKDEsIC0xKTsKLQotICAgICAgICBkcmF3UGlsbCgpOwot
Ci0gICAgICAgIGN0eC5yZXN0b3JlKCk7Ci0KLSAgICAgICAgdGhpcy5fZmFkZU91dFJlY3QoY3R4
LCB4LCB5ICsgaCArIDEsIHcsIGgsIDAuNSwgMC4wKTsKLSAgICB9LAotCiAgICAgX3VwZGF0ZVN1
bW1hcnlHcmFwaDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIGdyYXBoSW5mbyA9IHRo
aXMuY2FsY3VsYXRvci5jb21wdXRlU3VtbWFyeVZhbHVlcyh0aGlzLl9yZXNvdXJjZXMpOwotCi0g
ICAgICAgIHZhciBjYXRlZ29yeUNvbG9ycyA9IHtkb2N1bWVudHM6IHtyOiA0NywgZzogMTAyLCBi
OiAyMzZ9LCBzdHlsZXNoZWV0czoge3I6IDE1NywgZzogMjMxLCBiOiAxMTl9LCBpbWFnZXM6IHty
OiAxNjQsIGc6IDYwLCBiOiAyNTV9LCBzY3JpcHRzOiB7cjogMjU1LCBnOiAxMjEsIGI6IDB9LCB4
aHI6IHtyOiAyMzEsIGc6IDIzMSwgYjogMTB9LCBmb250czoge3I6IDI1NSwgZzogODIsIGI6IDYy
fSwgb3RoZXI6IHtyOiAxODYsIGc6IDE4NiwgYjogMTg2fX07Ci0gICAgICAgIHZhciBmaWxsU2Vn
bWVudHMgPSBbXTsKLQotICAgICAgICB0aGlzLmxlZ2VuZEVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4o
KTsKLQotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2F0ZWdvcnlPcmRlci5sZW5n
dGg7ICsraSkgewotICAgICAgICAgICAgdmFyIGNhdGVnb3J5ID0gdGhpcy5jYXRlZ29yeU9yZGVy
W2ldOwotICAgICAgICAgICAgdmFyIHNpemUgPSBncmFwaEluZm8uY2F0ZWdvcnlWYWx1ZXNbY2F0
ZWdvcnldOwotICAgICAgICAgICAgaWYgKCFzaXplKQotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgICAgICB2YXIgY29sb3IgPSBjYXRlZ29yeUNvbG9yc1tjYXRlZ29yeV07Ci0g
ICAgICAgICAgICB2YXIgY29sb3JTdHJpbmcgPSAicmdiKCIgKyBjb2xvci5yICsgIiwgIiArIGNv
bG9yLmcgKyAiLCAiICsgY29sb3IuYiArICIpIjsKLQotICAgICAgICAgICAgdmFyIGZpbGxTZWdt
ZW50ID0ge2NvbG9yOiBjb2xvclN0cmluZywgdmFsdWU6IHNpemV9OwotICAgICAgICAgICAgZmls
bFNlZ21lbnRzLnB1c2goZmlsbFNlZ21lbnQpOwotCi0gICAgICAgICAgICB2YXIgbGVnZW5kTGFi
ZWwgPSB0aGlzLl9tYWtlTGVnZW5kRWxlbWVudChXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29y
aWVzW2NhdGVnb3J5XS50aXRsZSwgdGhpcy5jYWxjdWxhdG9yLmZvcm1hdFZhbHVlKHNpemUpLCBj
b2xvclN0cmluZyk7Ci0gICAgICAgICAgICB0aGlzLmxlZ2VuZEVsZW1lbnQuYXBwZW5kQ2hpbGQo
bGVnZW5kTGFiZWwpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGdyYXBoSW5mby50b3RhbCkg
ewotICAgICAgICAgICAgdmFyIHRvdGFsTGVnZW5kTGFiZWwgPSB0aGlzLl9tYWtlTGVnZW5kRWxl
bWVudChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRvdGFsIiksIHRoaXMuY2FsY3VsYXRvci5mb3Jt
YXRWYWx1ZShncmFwaEluZm8udG90YWwpKTsKLSAgICAgICAgICAgIHRvdGFsTGVnZW5kTGFiZWwu
YWRkU3R5bGVDbGFzcygidG90YWwiKTsKLSAgICAgICAgICAgIHRoaXMubGVnZW5kRWxlbWVudC5h
cHBlbmRDaGlsZCh0b3RhbExlZ2VuZExhYmVsKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMu
X2RyYXdTdW1tYXJ5R3JhcGgoZmlsbFNlZ21lbnRzKTsKKyAgICAgICAgdGhpcy5zdW1tYXJ5QmFy
LnVwZGF0ZSh0aGlzLl9yZXNvdXJjZXMpOwogICAgIH0sCiAKICAgICBfdXBkYXRlRGl2aWRlcnNM
YWJlbEJhclBvc2l0aW9uOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgc2Nyb2xsVG9w
ID0gdGhpcy5jb250YWluZXJFbGVtZW50LnNjcm9sbFRvcDsKLSAgICAgICAgdmFyIGRpdmlkZXJz
VG9wID0gKHNjcm9sbFRvcCA8IHRoaXMuc3VtbWFyeUVsZW1lbnQub2Zmc2V0SGVpZ2h0ID8gdGhp
cy5zdW1tYXJ5RWxlbWVudC5vZmZzZXRIZWlnaHQgOiBzY3JvbGxUb3ApOworICAgICAgICB2YXIg
ZGl2aWRlcnNUb3AgPSAoc2Nyb2xsVG9wIDwgdGhpcy5zdW1tYXJ5QmFyLmVsZW1lbnQub2Zmc2V0
SGVpZ2h0ID8gdGhpcy5zdW1tYXJ5QmFyLmVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogc2Nyb2xsVG9w
KTsKICAgICAgICAgdGhpcy5kaXZpZGVyc0VsZW1lbnQuc3R5bGUudG9wID0gc2Nyb2xsVG9wICsg
InB4IjsKICAgICAgICAgdGhpcy5kaXZpZGVyc0xhYmVsQmFyRWxlbWVudC5zdHlsZS50b3AgPSBk
aXZpZGVyc1RvcCArICJweCI7CiAgICAgfSwKQEAgLTEwOTMsNyArNzgzLDcgQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciBzZWxl
Y3RlZE9wdGlvbiA9IHRoaXMuc29ydGluZ1NlbGVjdEVsZW1lbnRbdGhpcy5zb3J0aW5nU2VsZWN0
RWxlbWVudC5zZWxlY3RlZEluZGV4XTsKICAgICAgICAgdGhpcy5zb3J0aW5nRnVuY3Rpb24gPSBz
ZWxlY3RlZE9wdGlvbi5zb3J0aW5nRnVuY3Rpb247Ci0gICAgICAgIHRoaXMuY2FsY3VsYXRvciA9
IHNlbGVjdGVkT3B0aW9uLmNhbGN1bGF0b3I7CisgICAgICAgIHRoaXMuY2FsY3VsYXRvciA9IHRo
aXMuc3VtbWFyeUJhci5jYWxjdWxhdG9yID0gc2VsZWN0ZWRPcHRpb24uY2FsY3VsYXRvcjsKICAg
ICB9LAogCiAgICAgX2NyZWF0ZVJlc291cmNlVmlldzogZnVuY3Rpb24ocmVzb3VyY2UpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3VtbWFyeUJhci5qcyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdW1tYXJ5QmFyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmU3OGNlNTkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU3VtbWFyeUJhci5qcwpAQCAtMCwwICsxLDM2NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFudGhvbnkgUmljYXVkIDxyaWtAd2Via2l0Lm9y
Zz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCitXZWJJbnNwZWN0b3IuU3VtbWFyeUJhciA9IGZ1bmN0aW9uKGNhdGVnb3J5Q29sb3JzLCBj
YXRlZ29yeU9yZGVyKQoreworICAgIHRoaXMuY2F0ZWdvcnlDb2xvcnMgPSBjYXRlZ29yeUNvbG9y
czsKKyAgICB0aGlzLmNhdGVnb3J5T3JkZXIgPSBjYXRlZ29yeU9yZGVyOworCisgICAgdGhpcy5l
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgdGhpcy5lbGVtZW50
LmNsYXNzTmFtZSA9ICJzdW1tYXJ5LWJhciI7CisKKyAgICB0aGlzLmdyYXBoRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgIHRoaXMuZ3JhcGhFbGVtZW50LnNl
dEF0dHJpYnV0ZSgid2lkdGgiLCAiNDUwIik7CisgICAgdGhpcy5ncmFwaEVsZW1lbnQuc2V0QXR0
cmlidXRlKCJoZWlnaHQiLCAiMzgiKTsKKyAgICB0aGlzLmdyYXBoRWxlbWVudC5jbGFzc05hbWUg
PSAic3VtbWFyeS1ncmFwaCI7CisgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZ3Jh
cGhFbGVtZW50KTsKKworICAgIHRoaXMubGVnZW5kRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworICAgIHRoaXMubGVnZW5kRWxlbWVudC5jbGFzc05hbWUgPSAic3VtbWFy
eS1ncmFwaC1sZWdlbmQiOworICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmxlZ2Vu
ZEVsZW1lbnQpOworfQorCitXZWJJbnNwZWN0b3IuU3VtbWFyeUJhci5wcm90b3R5cGUgPSB7CisK
KyAgICBnZXQgY2FsY3VsYXRvcigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRvcl87
CisgICAgfSwKKworICAgIHNldCBjYWxjdWxhdG9yKHgpIHsKKyAgICAgICAgdGhpcy5jYWxjdWxh
dG9yXyA9IHg7CisgICAgfSwKKworICAgIHJlc2V0OiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICB0aGlzLmxlZ2VuZEVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAgdGhpcy5fZHJh
d1N1bW1hcnlHcmFwaCgpOworICAgIH0sCisKKyAgICB1cGRhdGU6IGZ1bmN0aW9uKGRhdGEpCisg
ICAgeworICAgICAgICB2YXIgZ3JhcGhJbmZvID0gdGhpcy5jYWxjdWxhdG9yLmNvbXB1dGVTdW1t
YXJ5VmFsdWVzKGRhdGEpOworCisgICAgICAgIHZhciBmaWxsU2VnbWVudHMgPSBbXTsKKworICAg
ICAgICB0aGlzLmxlZ2VuZEVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKworICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHRoaXMuY2F0ZWdvcnlPcmRlci5sZW5ndGg7ICsraSkgeworICAgICAg
ICAgICAgdmFyIGNhdGVnb3J5ID0gdGhpcy5jYXRlZ29yeU9yZGVyW2ldOworICAgICAgICAgICAg
dmFyIHNpemUgPSBncmFwaEluZm8uY2F0ZWdvcnlWYWx1ZXNbY2F0ZWdvcnldOworICAgICAgICAg
ICAgaWYgKCFzaXplKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICB2
YXIgY29sb3IgPSB0aGlzLmNhdGVnb3J5Q29sb3JzW2NhdGVnb3J5XTsKKyAgICAgICAgICAgIHZh
ciBjb2xvclN0cmluZyA9ICJyZ2IoIiArIGNvbG9yLnIgKyAiLCAiICsgY29sb3IuZyArICIsICIg
KyBjb2xvci5iICsgIikiOworCisgICAgICAgICAgICB2YXIgZmlsbFNlZ21lbnQgPSB7Y29sb3I6
IGNvbG9yU3RyaW5nLCB2YWx1ZTogc2l6ZX07CisgICAgICAgICAgICBmaWxsU2VnbWVudHMucHVz
aChmaWxsU2VnbWVudCk7CisKKyAgICAgICAgICAgIHZhciBsZWdlbmRMYWJlbCA9IHRoaXMuX21h
a2VMZWdlbmRFbGVtZW50KFdlYkluc3BlY3Rvci5yZXNvdXJjZUNhdGVnb3JpZXNbY2F0ZWdvcnld
LnRpdGxlLCB0aGlzLmNhbGN1bGF0b3IuZm9ybWF0VmFsdWUoc2l6ZSksIGNvbG9yU3RyaW5nKTsK
KyAgICAgICAgICAgIHRoaXMubGVnZW5kRWxlbWVudC5hcHBlbmRDaGlsZChsZWdlbmRMYWJlbCk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoZ3JhcGhJbmZvLnRvdGFsKSB7CisgICAgICAgICAg
ICB2YXIgdG90YWxMZWdlbmRMYWJlbCA9IHRoaXMuX21ha2VMZWdlbmRFbGVtZW50KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiVG90YWwiKSwgdGhpcy5jYWxjdWxhdG9yLmZvcm1hdFZhbHVlKGdyYXBo
SW5mby50b3RhbCkpOworICAgICAgICAgICAgdG90YWxMZWdlbmRMYWJlbC5hZGRTdHlsZUNsYXNz
KCJ0b3RhbCIpOworICAgICAgICAgICAgdGhpcy5sZWdlbmRFbGVtZW50LmFwcGVuZENoaWxkKHRv
dGFsTGVnZW5kTGFiZWwpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fZHJhd1N1bW1hcnlH
cmFwaChmaWxsU2VnbWVudHMpOworICAgIH0sCisKKyAgICBfZHJhd1N3YXRjaDogZnVuY3Rpb24o
Y2FudmFzLCBjb2xvcikKKyAgICB7CisgICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4
dCgiMmQiKTsKKworICAgICAgICBmdW5jdGlvbiBkcmF3U3dhdGNoU3F1YXJlKCkgeworICAgICAg
ICAgICAgY3R4LmZpbGxTdHlsZSA9IGNvbG9yOworICAgICAgICAgICAgY3R4LmZpbGxSZWN0KDAs
IDAsIDEzLCAxMyk7CisKKyAgICAgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVMaW5l
YXJHcmFkaWVudCgwLCAwLCAxMywgMTMpOworICAgICAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JT
dG9wKDAuMCwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSIpOworICAgICAgICAgICAgZ3JhZGll
bnQuYWRkQ29sb3JTdG9wKDEuMCwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworCisgICAg
ICAgICAgICBjdHguZmlsbFN0eWxlID0gZ3JhZGllbnQ7CisgICAgICAgICAgICBjdHguZmlsbFJl
Y3QoMCwgMCwgMTMsIDEzKTsKKworICAgICAgICAgICAgZ3JhZGllbnQgPSBjdHguY3JlYXRlTGlu
ZWFyR3JhZGllbnQoMTMsIDEzLCAwLCAwKTsKKyAgICAgICAgICAgIGdyYWRpZW50LmFkZENvbG9y
U3RvcCgwLjAsICJyZ2JhKDAsIDAsIDAsIDAuMikiKTsKKyAgICAgICAgICAgIGdyYWRpZW50LmFk
ZENvbG9yU3RvcCgxLjAsICJyZ2JhKDAsIDAsIDAsIDAuMCkiKTsKKworICAgICAgICAgICAgY3R4
LmZpbGxTdHlsZSA9IGdyYWRpZW50OworICAgICAgICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIDEz
LCAxMyk7CisKKyAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9ICJyZ2JhKDAsIDAsIDAsIDAu
NikiOworICAgICAgICAgICAgY3R4LnN0cm9rZVJlY3QoMC41LCAwLjUsIDEyLCAxMik7CisgICAg
ICAgIH0KKworICAgICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIDEzLCAyNCk7CisKKyAgICAgICAg
ZHJhd1N3YXRjaFNxdWFyZSgpOworCisgICAgICAgIGN0eC5zYXZlKCk7CisKKyAgICAgICAgY3R4
LnRyYW5zbGF0ZSgwLCAyNSk7CisgICAgICAgIGN0eC5zY2FsZSgxLCAtMSk7CisKKyAgICAgICAg
ZHJhd1N3YXRjaFNxdWFyZSgpOworCisgICAgICAgIGN0eC5yZXN0b3JlKCk7CisKKyAgICAgICAg
dGhpcy5fZmFkZU91dFJlY3QoY3R4LCAwLCAxMywgMTMsIDEzLCAwLjUsIDAuMCk7CisgICAgfSwK
KworICAgIF9kcmF3U3VtbWFyeUdyYXBoOiBmdW5jdGlvbihzZWdtZW50cykKKyAgICB7CisgICAg
ICAgIGlmICghc2VnbWVudHMgfHwgIXNlZ21lbnRzLmxlbmd0aCkgeworICAgICAgICAgICAgc2Vn
bWVudHMgPSBbe2NvbG9yOiAid2hpdGUiLCB2YWx1ZTogMX1dOworICAgICAgICAgICAgdGhpcy5f
c2hvd2luZ0VtcHR5U3VtbWFyeUdyYXBoID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBkZWxldGUgdGhpcy5fc2hvd2luZ0VtcHR5U3VtbWFyeUdyYXBoOworCisgICAgICAgIC8v
IENhbGN1bGF0ZSB0aGUgdG90YWwgb2YgYWxsIHNlZ21lbnRzLgorICAgICAgICB2YXIgdG90YWwg
PSAwOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlZ21lbnRzLmxlbmd0aDsgKytpKQor
ICAgICAgICAgICAgdG90YWwgKz0gc2VnbWVudHNbaV0udmFsdWU7CisKKyAgICAgICAgLy8gQ2Fs
Y3VsYXRlIHRoZSBwZXJjZW50YWdlIG9mIGVhY2ggc2VnbWVudCwgcm91bmRlZCB0byB0aGUgbmVh
cmVzdCBwZXJjZW50LgorICAgICAgICB2YXIgcGVyY2VudHMgPSBzZWdtZW50cy5tYXAoZnVuY3Rp
b24ocykgeyByZXR1cm4gTWF0aC5tYXgoTWF0aC5yb3VuZCgxMDAgKiBzLnZhbHVlIC8gdG90YWwp
LCAxKSB9KTsKKworICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHRvdGFsIHBlcmNlbnRhZ2UuCisg
ICAgICAgIHZhciBwZXJjZW50VG90YWwgPSAwOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHBlcmNlbnRzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgcGVyY2VudFRvdGFsICs9IHBlcmNl
bnRzW2ldOworCisgICAgICAgIC8vIE1ha2Ugc3VyZSBvdXIgcGVyY2VudGFnZSB0b3RhbCBpcyBu
b3QgZ3JlYXRlci10aGFuIDEwMCwgaXQgY2FuIGJlIGdyZWF0ZXIKKyAgICAgICAgLy8gaWYgd2Ug
cm91bmRlZCB1cCBmb3IgYSBmZXcgc2VnbWVudHMuCisgICAgICAgIHdoaWxlIChwZXJjZW50VG90
YWwgPiAxMDApIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGVyY2VudHMubGVu
Z3RoICYmIHBlcmNlbnRUb3RhbCA+IDEwMDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKHBl
cmNlbnRzW2ldID4gMSkgeworICAgICAgICAgICAgICAgICAgICAtLXBlcmNlbnRzW2ldOworICAg
ICAgICAgICAgICAgICAgICAtLXBlcmNlbnRUb3RhbDsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBNYWtlIHN1cmUgb3VyIHBlcmNlbnRh
Z2UgdG90YWwgaXMgbm90IGxlc3MtdGhhbiAxMDAsIGl0IGNhbiBiZSBsZXNzCisgICAgICAgIC8v
IGlmIHdlIHJvdW5kZWQgZG93biBmb3IgYSBmZXcgc2VnbWVudHMuCisgICAgICAgIHdoaWxlIChw
ZXJjZW50VG90YWwgPCAxMDApIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGVy
Y2VudHMubGVuZ3RoICYmIHBlcmNlbnRUb3RhbCA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICAg
ICAgKytwZXJjZW50c1tpXTsKKyAgICAgICAgICAgICAgICArK3BlcmNlbnRUb3RhbDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHZhciBjdHggPSB0aGlzLmdyYXBoRWxlbWVu
dC5nZXRDb250ZXh0KCIyZCIpOworCisgICAgICAgIHZhciB4ID0gMDsKKyAgICAgICAgdmFyIHkg
PSAwOworICAgICAgICB2YXIgdyA9IDQ1MDsKKyAgICAgICAgdmFyIGggPSAxOTsKKyAgICAgICAg
dmFyIHIgPSAoaCAvIDIpOworCisgICAgICAgIGZ1bmN0aW9uIGRyYXdQaWxsU2hhZG93KCkKKyAg
ICAgICAgeworICAgICAgICAgICAgLy8gVGhpcyBkcmF3cyBhIGxpbmUgd2l0aCBhIHNoYWRvdyB0
aGF0IGlzIG9mZnNldCBhd2F5IGZyb20gdGhlIGxpbmUuIFRoZSBsaW5lIGlzIHN0cm9rZWQKKyAg
ICAgICAgICAgIC8vIHR3aWNlIHdpdGggZGlmZmVyZW50IFggc2hhZG93IG9mZnNldHMgdG8gZ2l2
ZSBtb3JlIGZlYXRoZXJlZCBlZGdlcy4gTGF0ZXIgd2UgZXJhc2UgdGhlCisgICAgICAgICAgICAv
LyBsaW5lIHdpdGggZGVzdGluYXRpb24tb3V0IDEwMCUgdHJhbnNwYXJlbnQgYmxhY2ssIGxlYXZp
bmcgb25seSB0aGUgc2hhZG93LiBUaGlzIG9ubHkKKyAgICAgICAgICAgIC8vIHdvcmtzIGlmIG5v
dGhpbmcgaGFzIGJlZW4gZHJhd24gaW50byB0aGUgY2FudmFzIHlldC4KKworICAgICAgICAgICAg
Y3R4LmJlZ2luUGF0aCgpOworICAgICAgICAgICAgY3R4Lm1vdmVUbyh4ICsgNCwgeSArIGggLSAz
IC0gMC41KTsKKyAgICAgICAgICAgIGN0eC5saW5lVG8oeCArIHcgLSA0LCB5ICsgaCAtIDMgLSAw
LjUpOworICAgICAgICAgICAgY3R4LmNsb3NlUGF0aCgpOworCisgICAgICAgICAgICBjdHguc2F2
ZSgpOworCisgICAgICAgICAgICBjdHguc2hhZG93Qmx1ciA9IDI7CisgICAgICAgICAgICBjdHgu
c2hhZG93Q29sb3IgPSAicmdiYSgwLCAwLCAwLCAwLjUpIjsKKyAgICAgICAgICAgIGN0eC5zaGFk
b3dPZmZzZXRYID0gMzsKKyAgICAgICAgICAgIGN0eC5zaGFkb3dPZmZzZXRZID0gNTsKKworICAg
ICAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gIndoaXRlIjsKKyAgICAgICAgICAgIGN0eC5saW5l
V2lkdGggPSAxOworCisgICAgICAgICAgICBjdHguc3Ryb2tlKCk7CisKKyAgICAgICAgICAgIGN0
eC5zaGFkb3dPZmZzZXRYID0gLTM7CisKKyAgICAgICAgICAgIGN0eC5zdHJva2UoKTsKKworICAg
ICAgICAgICAgY3R4LnJlc3RvcmUoKTsKKworICAgICAgICAgICAgY3R4LnNhdmUoKTsKKworICAg
ICAgICAgICAgY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICJkZXN0aW5hdGlvbi1vdXQi
OworICAgICAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gInJnYmEoMCwgMCwgMCwgMSkiOworICAg
ICAgICAgICAgY3R4LmxpbmVXaWR0aCA9IDE7CisKKyAgICAgICAgICAgIGN0eC5zdHJva2UoKTsK
KworICAgICAgICAgICAgY3R4LnJlc3RvcmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGRyYXdQaWxsKCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gTWFrZSBhIHJvdW5kZWQg
cmVjdCBwYXRoLgorICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOworICAgICAgICAgICAgY3R4
Lm1vdmVUbyh4LCB5ICsgcik7CisgICAgICAgICAgICBjdHgubGluZVRvKHgsIHkgKyBoIC0gcik7
CisgICAgICAgICAgICBjdHgucXVhZHJhdGljQ3VydmVUbyh4LCB5ICsgaCwgeCArIHIsIHkgKyBo
KTsKKyAgICAgICAgICAgIGN0eC5saW5lVG8oeCArIHcgLSByLCB5ICsgaCk7CisgICAgICAgICAg
ICBjdHgucXVhZHJhdGljQ3VydmVUbyh4ICsgdywgeSArIGgsIHggKyB3LCB5ICsgaCAtIHIpOwor
ICAgICAgICAgICAgY3R4LmxpbmVUbyh4ICsgdywgeSArIHIpOworICAgICAgICAgICAgY3R4LnF1
YWRyYXRpY0N1cnZlVG8oeCArIHcsIHksIHggKyB3IC0gciwgeSk7CisgICAgICAgICAgICBjdHgu
bGluZVRvKHggKyByLCB5KTsKKyAgICAgICAgICAgIGN0eC5xdWFkcmF0aWNDdXJ2ZVRvKHgsIHks
IHgsIHkgKyByKTsKKyAgICAgICAgICAgIGN0eC5jbG9zZVBhdGgoKTsKKworICAgICAgICAgICAg
Ly8gQ2xpcCB0byB0aGUgcm91bmRlZCByZWN0IHBhdGguCisgICAgICAgICAgICBjdHguc2F2ZSgp
OworICAgICAgICAgICAgY3R4LmNsaXAoKTsKKworICAgICAgICAgICAgLy8gRmlsbCB0aGUgc2Vn
bWVudHMgd2l0aCB0aGUgYXNzb2NpYXRlZCBjb2xvci4KKyAgICAgICAgICAgIHZhciBwcmV2aW91
c1NlZ21lbnRzV2lkdGggPSAwOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWdt
ZW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIHZhciBzZWdtZW50V2lkdGggPSBN
YXRoLnJvdW5kKHcgKiBwZXJjZW50c1tpXSAvIDEwMCk7CisgICAgICAgICAgICAgICAgY3R4LmZp
bGxTdHlsZSA9IHNlZ21lbnRzW2ldLmNvbG9yOworICAgICAgICAgICAgICAgIGN0eC5maWxsUmVj
dCh4ICsgcHJldmlvdXNTZWdtZW50c1dpZHRoLCB5LCBzZWdtZW50V2lkdGgsIGgpOworICAgICAg
ICAgICAgICAgIHByZXZpb3VzU2VnbWVudHNXaWR0aCArPSBzZWdtZW50V2lkdGg7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIERyYXcgdGhlIHNlZ21lbnQgZGl2aWRlciBsaW5lcy4K
KyAgICAgICAgICAgIGN0eC5saW5lV2lkdGggPSAxOworICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDE7IGkgPCAyMDsgKytpKSB7CisgICAgICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOworICAg
ICAgICAgICAgICAgIGN0eC5tb3ZlVG8oeCArIChpICogTWF0aC5yb3VuZCh3IC8gMjApKSArIDAu
NSwgeSk7CisgICAgICAgICAgICAgICAgY3R4LmxpbmVUbyh4ICsgKGkgKiBNYXRoLnJvdW5kKHcg
LyAyMCkpICsgMC41LCB5ICsgaCk7CisgICAgICAgICAgICAgICAgY3R4LmNsb3NlUGF0aCgpOwor
CisgICAgICAgICAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gInJnYmEoMCwgMCwgMCwgMC4yKSI7
CisgICAgICAgICAgICAgICAgY3R4LnN0cm9rZSgpOworCisgICAgICAgICAgICAgICAgY3R4LmJl
Z2luUGF0aCgpOworICAgICAgICAgICAgICAgIGN0eC5tb3ZlVG8oeCArIChpICogTWF0aC5yb3Vu
ZCh3IC8gMjApKSArIDEuNSwgeSk7CisgICAgICAgICAgICAgICAgY3R4LmxpbmVUbyh4ICsgKGkg
KiBNYXRoLnJvdW5kKHcgLyAyMCkpICsgMS41LCB5ICsgaCk7CisgICAgICAgICAgICAgICAgY3R4
LmNsb3NlUGF0aCgpOworCisgICAgICAgICAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gInJnYmEo
MjU1LCAyNTUsIDI1NSwgMC4yKSI7CisgICAgICAgICAgICAgICAgY3R4LnN0cm9rZSgpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBEcmF3IHRoZSBwaWxsIHNoYWRpbmcuCisgICAg
ICAgICAgICB2YXIgbGlnaHRHcmFkaWVudCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCh4LCB5
LCB4LCB5ICsgKGggLyAxLjUpKTsKKyAgICAgICAgICAgIGxpZ2h0R3JhZGllbnQuYWRkQ29sb3JT
dG9wKDAuMCwgInJnYmEoMjIwLCAyMjAsIDIyMCwgMC42KSIpOworICAgICAgICAgICAgbGlnaHRH
cmFkaWVudC5hZGRDb2xvclN0b3AoMC40LCAicmdiYSgyMjAsIDIyMCwgMjIwLCAwLjIpIik7Cisg
ICAgICAgICAgICBsaWdodEdyYWRpZW50LmFkZENvbG9yU3RvcCgxLjAsICJyZ2JhKDI1NSwgMjU1
LCAyNTUsIDAuMCkiKTsKKworICAgICAgICAgICAgdmFyIGRhcmtHcmFkaWVudCA9IGN0eC5jcmVh
dGVMaW5lYXJHcmFkaWVudCh4LCB5ICsgKGggLyAzKSwgeCwgeSArIGgpOworICAgICAgICAgICAg
ZGFya0dyYWRpZW50LmFkZENvbG9yU3RvcCgwLjAsICJyZ2JhKDAsIDAsIDAsIDAuMCkiKTsKKyAg
ICAgICAgICAgIGRhcmtHcmFkaWVudC5hZGRDb2xvclN0b3AoMC44LCAicmdiYSgwLCAwLCAwLCAw
LjIpIik7CisgICAgICAgICAgICBkYXJrR3JhZGllbnQuYWRkQ29sb3JTdG9wKDEuMCwgInJnYmEo
MCwgMCwgMCwgMC41KSIpOworCisgICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gZGFya0dyYWRp
ZW50OworICAgICAgICAgICAgY3R4LmZpbGxSZWN0KHgsIHksIHcsIGgpOworCisgICAgICAgICAg
ICBjdHguZmlsbFN0eWxlID0gbGlnaHRHcmFkaWVudDsKKyAgICAgICAgICAgIGN0eC5maWxsUmVj
dCh4LCB5LCB3LCBoKTsKKworICAgICAgICAgICAgY3R4LnJlc3RvcmUoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGN0eC5jbGVhclJlY3QoeCwgeSwgdywgKGggKiAyKSk7CisKKyAgICAgICAgZHJh
d1BpbGxTaGFkb3coKTsKKyAgICAgICAgZHJhd1BpbGwoKTsKKworICAgICAgICBjdHguc2F2ZSgp
OworCisgICAgICAgIGN0eC50cmFuc2xhdGUoMCwgKGggKiAyKSArIDEpOworICAgICAgICBjdHgu
c2NhbGUoMSwgLTEpOworCisgICAgICAgIGRyYXdQaWxsKCk7CisKKyAgICAgICAgY3R4LnJlc3Rv
cmUoKTsKKworICAgICAgICB0aGlzLl9mYWRlT3V0UmVjdChjdHgsIHgsIHkgKyBoICsgMSwgdywg
aCwgMC41LCAwLjApOworICAgIH0sCisKKyAgICBfZmFkZU91dFJlY3Q6IGZ1bmN0aW9uKGN0eCwg
eCwgeSwgdywgaCwgYTEsIGEyKQorICAgIHsKKyAgICAgICAgY3R4LnNhdmUoKTsKKworICAgICAg
ICB2YXIgZ3JhZGllbnQgPSBjdHguY3JlYXRlTGluZWFyR3JhZGllbnQoeCwgeSwgeCwgeSArIGgp
OworICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMC4wLCAicmdiYSgwLCAwLCAwLCAiICsg
KDEuMCAtIGExKSArICIpIik7CisgICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgwLjgsICJy
Z2JhKDAsIDAsIDAsICIgKyAoMS4wIC0gYTIpICsgIikiKTsKKyAgICAgICAgZ3JhZGllbnQuYWRk
Q29sb3JTdG9wKDEuMCwgInJnYmEoMCwgMCwgMCwgMS4wKSIpOworCisgICAgICAgIGN0eC5nbG9i
YWxDb21wb3NpdGVPcGVyYXRpb24gPSAiZGVzdGluYXRpb24tb3V0IjsKKworICAgICAgICBjdHgu
ZmlsbFN0eWxlID0gZ3JhZGllbnQ7CisgICAgICAgIGN0eC5maWxsUmVjdCh4LCB5LCB3LCBoKTsK
KworICAgICAgICBjdHgucmVzdG9yZSgpOworICAgIH0sCisKKyAgICBfbWFrZUxlZ2VuZEVsZW1l
bnQ6IGZ1bmN0aW9uKGxhYmVsLCB2YWx1ZSwgY29sb3IpCisgICAgeworICAgICAgICB2YXIgbGVn
ZW5kRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CisgICAgICAgIGxl
Z2VuZEVsZW1lbnQuY2xhc3NOYW1lID0gInN1bW1hcnktZ3JhcGgtbGVnZW5kLWl0ZW0iOworCisg
ICAgICAgIGlmIChjb2xvcikgeworICAgICAgICAgICAgdmFyIHN3YXRjaCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgICAgICAgICAgc3dhdGNoLmNsYXNzTmFtZSA9ICJz
dW1tYXJ5LWdyYXBoLWxlZ2VuZC1zd2F0Y2giOworICAgICAgICAgICAgc3dhdGNoLnNldEF0dHJp
YnV0ZSgid2lkdGgiLCAiMTMiKTsKKyAgICAgICAgICAgIHN3YXRjaC5zZXRBdHRyaWJ1dGUoImhl
aWdodCIsICIyNCIpOworCisgICAgICAgICAgICBsZWdlbmRFbGVtZW50LmFwcGVuZENoaWxkKHN3
YXRjaCk7CisKKyAgICAgICAgICAgIHRoaXMuX2RyYXdTd2F0Y2goc3dhdGNoLCBjb2xvcik7Cisg
ICAgICAgIH0KKworICAgICAgICB2YXIgbGFiZWxFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CisgICAgICAgIGxhYmVsRWxlbWVudC5jbGFzc05hbWUgPSAic3VtbWFyeS1n
cmFwaC1sZWdlbmQtbGFiZWwiOworICAgICAgICBsZWdlbmRFbGVtZW50LmFwcGVuZENoaWxkKGxh
YmVsRWxlbWVudCk7CisKKyAgICAgICAgdmFyIGhlYWRlckVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgaGVhZGVyRWxlbWVudC5jbGFzc05hbWUgPSAic3Vt
bWFyeS1ncmFwaC1sZWdlbmQtaGVhZGVyIjsKKyAgICAgICAgaGVhZGVyRWxlbWVudC50ZXh0Q29u
dGVudCA9IGxhYmVsOworICAgICAgICBsYWJlbEVsZW1lbnQuYXBwZW5kQ2hpbGQoaGVhZGVyRWxl
bWVudCk7CisKKyAgICAgICAgdmFyIHZhbHVlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOworICAgICAgICB2YWx1ZUVsZW1lbnQuY2xhc3NOYW1lID0gInN1bW1hcnktZ3Jh
cGgtbGVnZW5kLXZhbHVlIjsKKyAgICAgICAgdmFsdWVFbGVtZW50LnRleHRDb250ZW50ID0gdmFs
dWU7CisgICAgICAgIGxhYmVsRWxlbWVudC5hcHBlbmRDaGlsZCh2YWx1ZUVsZW1lbnQpOworCisg
ICAgICAgIHJldHVybiBsZWdlbmRFbGVtZW50OworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLlN1
bW1hcnlCYXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90
eXBlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCBmNGE0ODgxLi5l
MTViMzgyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFy
YworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtNTMsNiAr
NTMsNyBAQAogICAgIDxmaWxlPlN0YXR1c0JhckJ1dHRvbi5qczwvZmlsZT4KICAgICA8ZmlsZT5T
dG9yYWdlUGFuZWwuanM8L2ZpbGU+CiAgICAgPGZpbGU+U3R5bGVzU2lkZWJhclBhbmUuanM8L2Zp
bGU+CisgICAgPGZpbGU+U3VtbWFyeUJhci5qczwvZmlsZT4KICAgICA8ZmlsZT5UZXh0UHJvbXB0
LmpzPC9maWxlPgogICAgIDxmaWxlPlRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlLmpzPC9maWxl
PgogICAgIDxmaWxlPnRyZWVvdXRsaW5lLmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmNzcwppbmRleCA1ZWZkNTQ5Li5hM2M0ZmZhIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcworKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwpAQCAtMjMzMiwzNiArMjMzMiwzNiBAQCBi
dXR0b24uZW5hYmxlLXRvZ2dsZS1zdGF0dXMtYmFyLWl0ZW0udG9nZ2xlZC1vbiAuZ2x5cGggewog
ICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nOwogfQogCi0jcmVzb3VyY2VzLWdy
YXBoLWxlZ2VuZCB7Cisuc3VtbWFyeS1ncmFwaC1sZWdlbmQgewogICAgIG1hcmdpbi10b3A6IC0x
MHB4OwogICAgIHBhZGRpbmctbGVmdDogMTVweDsKIH0KIAotLnJlc291cmNlcy1ncmFwaC1sZWdl
bmQtaXRlbSB7Cisuc3VtbWFyeS1ncmFwaC1sZWdlbmQtaXRlbSB7CiAgICAgZGlzcGxheTogaW5s
aW5lLWJsb2NrOwogICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgIG1hcmdpbi1yaWdodDogMTVw
eDsKICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogfQogCi0ucmVzb3VyY2VzLWdyYXBoLWxlZ2Vu
ZC1pdGVtLnRvdGFsIHsKKy5zdW1tYXJ5LWdyYXBoLWxlZ2VuZC1pdGVtLnRvdGFsIHsKICAgICBt
YXJnaW4tbGVmdDogMTBweDsKIH0KIAotLnJlc291cmNlcy1ncmFwaC1sZWdlbmQtbGFiZWwgewor
LnN1bW1hcnktZ3JhcGgtbGVnZW5kLWxhYmVsIHsKICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CiAgICAgdGV4dC1hbGlnbjogbGVmdDsKIH0KIAotLnJlc291cmNlcy1ncmFwaC1sZWdlbmQtaGVh
ZGVyIHsKKy5zdW1tYXJ5LWdyYXBoLWxlZ2VuZC1oZWFkZXIgewogICAgIGZvbnQtc2l6ZTogMTJw
eDsKIH0KIAotLnJlc291cmNlcy1ncmFwaC1sZWdlbmQtdmFsdWUgeworLnN1bW1hcnktZ3JhcGgt
bGVnZW5kLXZhbHVlIHsKICAgICBmb250LXNpemU6IDEwcHg7CiB9CiAKLS5yZXNvdXJjZXMtZ3Jh
cGgtbGVnZW5kLXN3YXRjaCB7Cisuc3VtbWFyeS1ncmFwaC1sZWdlbmQtc3dhdGNoIHsKICAgICB2
ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgIG1hcmdpbi10b3A6IDFweDsKICAgICBtYXJnaW4tcmln
aHQ6IDNweDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuaHRtbCBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRl
eCBjN2VhYjJiLi40YTUzNmQxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmh0bWwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3Bl
Y3Rvci5odG1sCkBAIC02OCw2ICs2OCw3IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iUGFuZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlBhbmVsRW5hYmxlclZpZXcuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlN0YXR1c0JhckJ1dHRvbi5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU3Vt
bWFyeUJhci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iRWxlbWVudHNQYW5lbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iUmVzb3VyY2VzUGFuZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNjcmlwdHNQYW5lbC5qcyI+PC9zY3JpcHQ+
Cg==
</data>
<flag name="review"
          id="19616"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38672</attachid>
            <date>2009-08-27 08:54:29 -0700</date>
            <delta_ts>2009-08-27 09:00:31 -0700</delta_ts>
            <desc>Comment addressed.</desc>
            <filename>factor-out-summary-bar-patch</filename>
            <type>text/plain</type>
            <size>33135</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWE1NDAwYi4uZjRmZTQ0ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAwOS0wOC0yNyAgTWlraGFpbCBOYWdh
bm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90
aHkgSGF0Y2hlci4KKworICAgICAgICBGYWN0b3Igb3V0IEZhY3RvciBvdXQgc3VtbWFyeSBiYXIg
ZnJvbSBSZXNvdXJjZXMgcGFuZWwuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI4NzQwCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJj
ZXNQYW5lbC5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
c1BhbmVsLnByb3RvdHlwZS5fdXBkYXRlU3VtbWFyeUdyYXBoKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuX3VwZGF0ZURpdmlkZXJzTGFiZWxCYXJQb3Np
dGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLl9j
aGFuZ2VTb3J0aW5nRnVuY3Rpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3Vt
bWFyeUJhci5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuU3VtbWFyeUJhcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU3VtbWFyeUJhci5wcm90b3R5cGUuZ2V0IGNhbGN1bGF0b3Ip
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN1bW1hcnlCYXIucHJvdG90eXBlLnNldCBjYWxjdWxh
dG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdW1tYXJ5QmFyLnByb3RvdHlwZS5yZXNldCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3VtbWFyeUJhci5wcm90b3R5cGUudXBkYXRlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TdW1tYXJ5QmFyLnByb3RvdHlwZS5fZHJhd1N3YXRjaC5kcmF3
U3dhdGNoU3F1YXJlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdW1tYXJ5QmFyLnByb3RvdHlw
ZS5fZHJhd1N3YXRjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3VtbWFyeUJhci5wcm90b3R5
cGUuX2RyYXdTdW1tYXJ5R3JhcGgudmFyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdW1tYXJ5
QmFyLnByb3RvdHlwZS5fZHJhd1N1bW1hcnlHcmFwaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U3VtbWFyeUJhci5wcm90b3R5cGUuX2RyYXdTdW1tYXJ5R3JhcGguZHJhd1BpbGwpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlN1bW1hcnlCYXIucHJvdG90eXBlLl9mYWRlT3V0UmVjdCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU3VtbWFyeUJhci5wcm90b3R5cGUuX21ha2VMZWdlbmRFbGVtZW50
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmh0bWw6CisKIDIwMDktMDgtMjYgIE1pa2hhaWwgTmFnYW5vdiAg
PG1uYWdhbm92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhh
dGNoZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IDRiOGUzOWYuLjQ0MTQ3MjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNDkzLDYgKzM0OTMsNyBAQAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvU3RhdHVzQmFyQnV0dG9uLmpzJywKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1N0b3JhZ2VQYW5lbC5qcycsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcycsCisgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TdW1tYXJ5QmFyLmpzJywKICAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9tcHQuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvVG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUuanMnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvdHJlZW91dGxpbmUuanMnLApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKaW5kZXggNDMzM2ViMy4uNmY3ODZjZSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zMTM1NSw2ICszMTM1NSwxMCBAQAogCQkJCQk+DQogCQkJ
CTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZy
b250LWVuZFxTdW1tYXJ5QmFyLmpzIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxl
DQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcVGV4dFByb21wdC5q
cyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZXNQYW5lbC5qcwppbmRleCA0MGU3ZGQ0Li4wNzE3NGI0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC02MCw5ICs2MCw5IEBA
IFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLmNvbnRh
aW5lckNvbnRlbnRFbGVtZW50LmlkID0gInJlc291cmNlcy1jb250YWluZXItY29udGVudCI7CiAg
ICAgdGhpcy5jb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuY29udGFpbmVyQ29udGVu
dEVsZW1lbnQpOwogCi0gICAgdGhpcy5zdW1tYXJ5RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwotICAgIHRoaXMuc3VtbWFyeUVsZW1lbnQuaWQgPSAicmVzb3VyY2VzLXN1
bW1hcnkiOwotICAgIHRoaXMuY29udGFpbmVyQ29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5zdW1tYXJ5RWxlbWVudCk7CisgICAgdGhpcy5zdW1tYXJ5QmFyID0gbmV3IFdlYkluc3BlY3Rv
ci5TdW1tYXJ5QmFyKHRoaXMuY2F0ZWdvcnlDb2xvcnMsIHRoaXMuY2F0ZWdvcnlPcmRlcik7Cisg
ICAgdGhpcy5zdW1tYXJ5QmFyLmVsZW1lbnQuaWQgPSAicmVzb3VyY2VzLXN1bW1hcnkiOworICAg
IHRoaXMuY29udGFpbmVyQ29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5zdW1tYXJ5QmFy
LmVsZW1lbnQpOwogCiAgICAgdGhpcy5yZXNvdXJjZXNHcmFwaHNFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5yZXNvdXJjZXNHcmFwaHNFbGVtZW50Lmlk
ID0gInJlc291cmNlcy1ncmFwaHMiOwpAQCAtNzYsMTYgKzc2LDYgQEAgV2ViSW5zcGVjdG9yLlJl
c291cmNlc1BhbmVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMuZGl2aWRlcnNMYWJlbEJhckVsZW1l
bnQuaWQgPSAicmVzb3VyY2VzLWRpdmlkZXJzLWxhYmVsLWJhciI7CiAgICAgdGhpcy5jb250YWlu
ZXJDb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmRpdmlkZXJzTGFiZWxCYXJFbGVtZW50
KTsKIAotICAgIHRoaXMuc3VtbWFyeUdyYXBoRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImNhbnZhcyIpOwotICAgIHRoaXMuc3VtbWFyeUdyYXBoRWxlbWVudC5zZXRBdHRyaWJ1dGUo
IndpZHRoIiwgIjQ1MCIpOwotICAgIHRoaXMuc3VtbWFyeUdyYXBoRWxlbWVudC5zZXRBdHRyaWJ1
dGUoImhlaWdodCIsICIzOCIpOwotICAgIHRoaXMuc3VtbWFyeUdyYXBoRWxlbWVudC5pZCA9ICJy
ZXNvdXJjZXMtc3VtbWFyeS1ncmFwaCI7Ci0gICAgdGhpcy5zdW1tYXJ5RWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLnN1bW1hcnlHcmFwaEVsZW1lbnQpOwotCi0gICAgdGhpcy5sZWdlbmRFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5sZWdlbmRFbGVtZW50
LmlkID0gInJlc291cmNlcy1ncmFwaC1sZWdlbmQiOwotICAgIHRoaXMuc3VtbWFyeUVsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5sZWdlbmRFbGVtZW50KTsKLQogICAgIHRoaXMuc2lkZWJhclRyZWVF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKICAgICB0aGlzLnNpZGViYXJU
cmVlRWxlbWVudC5jbGFzc05hbWUgPSAic2lkZWJhci10cmVlIjsKICAgICB0aGlzLnNpZGViYXJF
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuc2lkZWJhclRyZWVFbGVtZW50KTsKQEAgLTE3Niw2ICsx
NjYsOCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwgPSBmdW5jdGlvbigpCiBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogICAgIHRvb2xiYXJJdGVtQ2xhc3M6
ICJyZXNvdXJjZXMiLAogCisgICAgY2F0ZWdvcnlDb2xvcnM6IHtkb2N1bWVudHM6IHtyOiA0Nywg
ZzogMTAyLCBiOiAyMzZ9LCBzdHlsZXNoZWV0czoge3I6IDE1NywgZzogMjMxLCBiOiAxMTl9LCBp
bWFnZXM6IHtyOiAxNjQsIGc6IDYwLCBiOiAyNTV9LCBzY3JpcHRzOiB7cjogMjU1LCBnOiAxMjEs
IGI6IDB9LCB4aHI6IHtyOiAyMzEsIGc6IDIzMSwgYjogMTB9LCBmb250czoge3I6IDI1NSwgZzog
ODIsIGI6IDYyfSwgb3RoZXI6IHtyOiAxODYsIGc6IDE4NiwgYjogMTg2fX0sCisKICAgICBjYXRl
Z29yeU9yZGVyOiBbImRvY3VtZW50cyIsICJzdHlsZXNoZWV0cyIsICJpbWFnZXMiLCAic2NyaXB0
cyIsICJ4aHIiLCAiZm9udHMiLCAib3RoZXIiXSwKIAogICAgIGZpbHRlcjogZnVuY3Rpb24gKGNh
dGVnb3J5KSB7CkBAIC00NTYsMTIgKzQ0OCwxMCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnJlc291cmNlc1RyZWVFbGVtZW50LnJlbW92
ZUNoaWxkcmVuKCk7CiAgICAgICAgIHRoaXMudmlld3NDb250YWluZXJFbGVtZW50LnJlbW92ZUNo
aWxkcmVuKCk7CiAgICAgICAgIHRoaXMucmVzb3VyY2VzR3JhcGhzRWxlbWVudC5yZW1vdmVDaGls
ZHJlbigpOwotICAgICAgICB0aGlzLmxlZ2VuZEVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKyAg
ICAgICAgdGhpcy5zdW1tYXJ5QmFyLnJlc2V0KCk7CiAKICAgICAgICAgdGhpcy5fdXBkYXRlR3Jh
cGhEaXZpZGVyc0lmTmVlZGVkKHRydWUpOwogCi0gICAgICAgIHRoaXMuX2RyYXdTdW1tYXJ5R3Jh
cGgoKTsgLy8gZHJhd3MgYW4gZW1wdHkgZ3JhcGgKLQogICAgICAgICBpZiAoSW5zcGVjdG9yQ29u
dHJvbGxlci5yZXNvdXJjZVRyYWNraW5nRW5hYmxlZCgpKSB7CiAgICAgICAgICAgICB0aGlzLmVu
YWJsZVRvZ2dsZUJ1dHRvbi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzb3VyY2Ug
dHJhY2tpbmcgZW5hYmxlZC4gQ2xpY2sgdG8gZGlzYWJsZS4iKTsKICAgICAgICAgICAgIHRoaXMu
ZW5hYmxlVG9nZ2xlQnV0dG9uLnRvZ2dsZWQgPSB0cnVlOwpAQCAtNjYyLDQwICs2NTIsNiBAQCBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnNp
ZGViYXJUcmVlLmhhbmRsZUtleUV2ZW50KGV2ZW50KTsKICAgICB9LAogCi0gICAgX21ha2VMZWdl
bmRFbGVtZW50OiBmdW5jdGlvbihsYWJlbCwgdmFsdWUsIGNvbG9yKQotICAgIHsKLSAgICAgICAg
dmFyIGxlZ2VuZEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpOwotICAg
ICAgICBsZWdlbmRFbGVtZW50LmNsYXNzTmFtZSA9ICJyZXNvdXJjZXMtZ3JhcGgtbGVnZW5kLWl0
ZW0iOwotCi0gICAgICAgIGlmIChjb2xvcikgewotICAgICAgICAgICAgdmFyIHN3YXRjaCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwotICAgICAgICAgICAgc3dhdGNoLmNsYXNz
TmFtZSA9ICJyZXNvdXJjZXMtZ3JhcGgtbGVnZW5kLXN3YXRjaCI7Ci0gICAgICAgICAgICBzd2F0
Y2guc2V0QXR0cmlidXRlKCJ3aWR0aCIsICIxMyIpOwotICAgICAgICAgICAgc3dhdGNoLnNldEF0
dHJpYnV0ZSgiaGVpZ2h0IiwgIjI0Iik7Ci0KLSAgICAgICAgICAgIGxlZ2VuZEVsZW1lbnQuYXBw
ZW5kQ2hpbGQoc3dhdGNoKTsKLQotICAgICAgICAgICAgdGhpcy5fZHJhd1N3YXRjaChzd2F0Y2gs
IGNvbG9yKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBsYWJlbEVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgbGFiZWxFbGVtZW50LmNsYXNzTmFtZSA9
ICJyZXNvdXJjZXMtZ3JhcGgtbGVnZW5kLWxhYmVsIjsKLSAgICAgICAgbGVnZW5kRWxlbWVudC5h
cHBlbmRDaGlsZChsYWJlbEVsZW1lbnQpOwotCi0gICAgICAgIHZhciBoZWFkZXJFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHZhciBoZWFkZXJFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIGhlYWRlckVsZW1lbnQu
Y2xhc3NOYW1lID0gInJlc291cmNlcy1ncmFwaC1sZWdlbmQtaGVhZGVyIjsKLSAgICAgICAgaGVh
ZGVyRWxlbWVudC50ZXh0Q29udGVudCA9IGxhYmVsOwotICAgICAgICBsYWJlbEVsZW1lbnQuYXBw
ZW5kQ2hpbGQoaGVhZGVyRWxlbWVudCk7Ci0KLSAgICAgICAgdmFyIHZhbHVlRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB2YWx1ZUVsZW1lbnQuY2xhc3NO
YW1lID0gInJlc291cmNlcy1ncmFwaC1sZWdlbmQtdmFsdWUiOwotICAgICAgICB2YWx1ZUVsZW1l
bnQudGV4dENvbnRlbnQgPSB2YWx1ZTsKLSAgICAgICAgbGFiZWxFbGVtZW50LmFwcGVuZENoaWxk
KHZhbHVlRWxlbWVudCk7Ci0KLSAgICAgICAgcmV0dXJuIGxlZ2VuZEVsZW1lbnQ7Ci0gICAgfSwK
LQogICAgIF9zb3J0UmVzb3VyY2VzSWZOZWVkZWQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAg
IHZhciBzb3J0ZWRFbGVtZW50cyA9IFtdLmNvbmNhdCh0aGlzLnJlc291cmNlc1RyZWVFbGVtZW50
LmNoaWxkcmVuKTsKQEAgLTc2MCwyODEgKzcxNiwxNSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2Vz
UGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAotICAgIF9mYWRlT3V0UmVj
dDogZnVuY3Rpb24oY3R4LCB4LCB5LCB3LCBoLCBhMSwgYTIpCi0gICAgewotICAgICAgICBjdHgu
c2F2ZSgpOwotCi0gICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVu
dCh4LCB5LCB4LCB5ICsgaCk7Ci0gICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgwLjAsICJy
Z2JhKDAsIDAsIDAsICIgKyAoMS4wIC0gYTEpICsgIikiKTsKLSAgICAgICAgZ3JhZGllbnQuYWRk
Q29sb3JTdG9wKDAuOCwgInJnYmEoMCwgMCwgMCwgIiArICgxLjAgLSBhMikgKyAiKSIpOwotICAg
ICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMS4wLCAicmdiYSgwLCAwLCAwLCAxLjApIik7Ci0K
LSAgICAgICAgY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICJkZXN0aW5hdGlvbi1vdXQi
OwotCi0gICAgICAgIGN0eC5maWxsU3R5bGUgPSBncmFkaWVudDsKLSAgICAgICAgY3R4LmZpbGxS
ZWN0KHgsIHksIHcsIGgpOwotCi0gICAgICAgIGN0eC5yZXN0b3JlKCk7Ci0gICAgfSwKLQotICAg
IF9kcmF3U3dhdGNoOiBmdW5jdGlvbihjYW52YXMsIGNvbG9yKQotICAgIHsKLSAgICAgICAgdmFy
IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOwotCi0gICAgICAgIGZ1bmN0aW9uIGRyYXdT
d2F0Y2hTcXVhcmUoKSB7Ci0gICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gY29sb3I7Ci0gICAg
ICAgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTMsIDEzKTsKLQotICAgICAgICAgICAgdmFyIGdy
YWRpZW50ID0gY3R4LmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsIDAsIDEzLCAxMyk7Ci0gICAgICAg
ICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMC4wLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIp
Iik7Ci0gICAgICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMS4wLCAicmdiYSgyNTUsIDI1
NSwgMjU1LCAwLjApIik7Ci0KLSAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBncmFkaWVudDsK
LSAgICAgICAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxMywgMTMpOwotCi0gICAgICAgICAgICBn
cmFkaWVudCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgxMywgMTMsIDAsIDApOwotICAgICAg
ICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDAuMCwgInJnYmEoMCwgMCwgMCwgMC4yKSIpOwot
ICAgICAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDEuMCwgInJnYmEoMCwgMCwgMCwgMC4w
KSIpOwotCi0gICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gZ3JhZGllbnQ7Ci0gICAgICAgICAg
ICBjdHguZmlsbFJlY3QoMCwgMCwgMTMsIDEzKTsKLQotICAgICAgICAgICAgY3R4LnN0cm9rZVN0
eWxlID0gInJnYmEoMCwgMCwgMCwgMC42KSI7Ci0gICAgICAgICAgICBjdHguc3Ryb2tlUmVjdCgw
LjUsIDAuNSwgMTIsIDEyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGN0eC5jbGVhclJlY3QoMCwg
MCwgMTMsIDI0KTsKLQotICAgICAgICBkcmF3U3dhdGNoU3F1YXJlKCk7Ci0KLSAgICAgICAgY3R4
LnNhdmUoKTsKLQotICAgICAgICBjdHgudHJhbnNsYXRlKDAsIDI1KTsKLSAgICAgICAgY3R4LnNj
YWxlKDEsIC0xKTsKLQotICAgICAgICBkcmF3U3dhdGNoU3F1YXJlKCk7Ci0KLSAgICAgICAgY3R4
LnJlc3RvcmUoKTsKLQotICAgICAgICB0aGlzLl9mYWRlT3V0UmVjdChjdHgsIDAsIDEzLCAxMywg
MTMsIDAuNSwgMC4wKTsKLSAgICB9LAotCi0gICAgX2RyYXdTdW1tYXJ5R3JhcGg6IGZ1bmN0aW9u
KHNlZ21lbnRzKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLnN1bW1hcnlHcmFwaEVsZW1lbnQp
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKCFzZWdtZW50cyB8fCAhc2VnbWVu
dHMubGVuZ3RoKSB7Ci0gICAgICAgICAgICBzZWdtZW50cyA9IFt7Y29sb3I6ICJ3aGl0ZSIsIHZh
bHVlOiAxfV07Ci0gICAgICAgICAgICB0aGlzLl9zaG93aW5nRW1wdHlTdW1tYXJ5R3JhcGggPSB0
cnVlOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9zaG93aW5nRW1w
dHlTdW1tYXJ5R3JhcGg7Ci0KLSAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSB0b3RhbCBvZiBhbGwg
c2VnbWVudHMuCi0gICAgICAgIHZhciB0b3RhbCA9IDA7Ci0gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgc2VnbWVudHMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0b3RhbCArPSBzZWdtZW50
c1tpXS52YWx1ZTsKLQotICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHBlcmNlbnRhZ2Ugb2YgZWFj
aCBzZWdtZW50LCByb3VuZGVkIHRvIHRoZSBuZWFyZXN0IHBlcmNlbnQuCi0gICAgICAgIHZhciBw
ZXJjZW50cyA9IHNlZ21lbnRzLm1hcChmdW5jdGlvbihzKSB7IHJldHVybiBNYXRoLm1heChNYXRo
LnJvdW5kKDEwMCAqIHMudmFsdWUgLyB0b3RhbCksIDEpIH0pOwotCi0gICAgICAgIC8vIENhbGN1
bGF0ZSB0aGUgdG90YWwgcGVyY2VudGFnZS4KLSAgICAgICAgdmFyIHBlcmNlbnRUb3RhbCA9IDA7
Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGVyY2VudHMubGVuZ3RoOyArK2kpCi0gICAg
ICAgICAgICBwZXJjZW50VG90YWwgKz0gcGVyY2VudHNbaV07Ci0KLSAgICAgICAgLy8gTWFrZSBz
dXJlIG91ciBwZXJjZW50YWdlIHRvdGFsIGlzIG5vdCBncmVhdGVyLXRoYW4gMTAwLCBpdCBjYW4g
YmUgZ3JlYXRlcgotICAgICAgICAvLyBpZiB3ZSByb3VuZGVkIHVwIGZvciBhIGZldyBzZWdtZW50
cy4KLSAgICAgICAgd2hpbGUgKHBlcmNlbnRUb3RhbCA+IDEwMCkgewotICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBwZXJjZW50cy5sZW5ndGggJiYgcGVyY2VudFRvdGFsID4gMTAwOyAr
K2kpIHsKLSAgICAgICAgICAgICAgICBpZiAocGVyY2VudHNbaV0gPiAxKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIC0tcGVyY2VudHNbaV07Ci0gICAgICAgICAgICAgICAgICAgIC0tcGVyY2VudFRv
dGFsOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAg
ICAgIC8vIE1ha2Ugc3VyZSBvdXIgcGVyY2VudGFnZSB0b3RhbCBpcyBub3QgbGVzcy10aGFuIDEw
MCwgaXQgY2FuIGJlIGxlc3MKLSAgICAgICAgLy8gaWYgd2Ugcm91bmRlZCBkb3duIGZvciBhIGZl
dyBzZWdtZW50cy4KLSAgICAgICAgd2hpbGUgKHBlcmNlbnRUb3RhbCA8IDEwMCkgewotICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwZXJjZW50cy5sZW5ndGggJiYgcGVyY2VudFRvdGFs
IDwgMTAwOyArK2kpIHsKLSAgICAgICAgICAgICAgICArK3BlcmNlbnRzW2ldOwotICAgICAgICAg
ICAgICAgICsrcGVyY2VudFRvdGFsOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAg
ICAgdmFyIGN0eCA9IHRoaXMuc3VtbWFyeUdyYXBoRWxlbWVudC5nZXRDb250ZXh0KCIyZCIpOwot
Ci0gICAgICAgIHZhciB4ID0gMDsKLSAgICAgICAgdmFyIHkgPSAwOwotICAgICAgICB2YXIgdyA9
IDQ1MDsKLSAgICAgICAgdmFyIGggPSAxOTsKLSAgICAgICAgdmFyIHIgPSAoaCAvIDIpOwotCi0g
ICAgICAgIGZ1bmN0aW9uIGRyYXdQaWxsU2hhZG93KCkKLSAgICAgICAgewotICAgICAgICAgICAg
Ly8gVGhpcyBkcmF3cyBhIGxpbmUgd2l0aCBhIHNoYWRvdyB0aGF0IGlzIG9mZnNldCBhd2F5IGZy
b20gdGhlIGxpbmUuIFRoZSBsaW5lIGlzIHN0cm9rZWQKLSAgICAgICAgICAgIC8vIHR3aWNlIHdp
dGggZGlmZmVyZW50IFggc2hhZG93IG9mZnNldHMgdG8gZ2l2ZSBtb3JlIGZlYXRoZXJlZCBlZGdl
cy4gTGF0ZXIgd2UgZXJhc2UgdGhlCi0gICAgICAgICAgICAvLyBsaW5lIHdpdGggZGVzdGluYXRp
b24tb3V0IDEwMCUgdHJhbnNwYXJlbnQgYmxhY2ssIGxlYXZpbmcgb25seSB0aGUgc2hhZG93LiBU
aGlzIG9ubHkKLSAgICAgICAgICAgIC8vIHdvcmtzIGlmIG5vdGhpbmcgaGFzIGJlZW4gZHJhd24g
aW50byB0aGUgY2FudmFzIHlldC4KLQotICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwotICAg
ICAgICAgICAgY3R4Lm1vdmVUbyh4ICsgNCwgeSArIGggLSAzIC0gMC41KTsKLSAgICAgICAgICAg
IGN0eC5saW5lVG8oeCArIHcgLSA0LCB5ICsgaCAtIDMgLSAwLjUpOwotICAgICAgICAgICAgY3R4
LmNsb3NlUGF0aCgpOwotCi0gICAgICAgICAgICBjdHguc2F2ZSgpOwotCi0gICAgICAgICAgICBj
dHguc2hhZG93Qmx1ciA9IDI7Ci0gICAgICAgICAgICBjdHguc2hhZG93Q29sb3IgPSAicmdiYSgw
LCAwLCAwLCAwLjUpIjsKLSAgICAgICAgICAgIGN0eC5zaGFkb3dPZmZzZXRYID0gMzsKLSAgICAg
ICAgICAgIGN0eC5zaGFkb3dPZmZzZXRZID0gNTsKLQotICAgICAgICAgICAgY3R4LnN0cm9rZVN0
eWxlID0gIndoaXRlIjsKLSAgICAgICAgICAgIGN0eC5saW5lV2lkdGggPSAxOwotCi0gICAgICAg
ICAgICBjdHguc3Ryb2tlKCk7Ci0KLSAgICAgICAgICAgIGN0eC5zaGFkb3dPZmZzZXRYID0gLTM7
Ci0KLSAgICAgICAgICAgIGN0eC5zdHJva2UoKTsKLQotICAgICAgICAgICAgY3R4LnJlc3RvcmUo
KTsKLQotICAgICAgICAgICAgY3R4LnNhdmUoKTsKLQotICAgICAgICAgICAgY3R4Lmdsb2JhbENv
bXBvc2l0ZU9wZXJhdGlvbiA9ICJkZXN0aW5hdGlvbi1vdXQiOwotICAgICAgICAgICAgY3R4LnN0
cm9rZVN0eWxlID0gInJnYmEoMCwgMCwgMCwgMSkiOwotICAgICAgICAgICAgY3R4LmxpbmVXaWR0
aCA9IDE7Ci0KLSAgICAgICAgICAgIGN0eC5zdHJva2UoKTsKLQotICAgICAgICAgICAgY3R4LnJl
c3RvcmUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGRyYXdQaWxsKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgLy8gTWFrZSBhIHJvdW5kZWQgcmVjdCBwYXRoLgotICAgICAgICAg
ICAgY3R4LmJlZ2luUGF0aCgpOwotICAgICAgICAgICAgY3R4Lm1vdmVUbyh4LCB5ICsgcik7Ci0g
ICAgICAgICAgICBjdHgubGluZVRvKHgsIHkgKyBoIC0gcik7Ci0gICAgICAgICAgICBjdHgucXVh
ZHJhdGljQ3VydmVUbyh4LCB5ICsgaCwgeCArIHIsIHkgKyBoKTsKLSAgICAgICAgICAgIGN0eC5s
aW5lVG8oeCArIHcgLSByLCB5ICsgaCk7Ci0gICAgICAgICAgICBjdHgucXVhZHJhdGljQ3VydmVU
byh4ICsgdywgeSArIGgsIHggKyB3LCB5ICsgaCAtIHIpOwotICAgICAgICAgICAgY3R4LmxpbmVU
byh4ICsgdywgeSArIHIpOwotICAgICAgICAgICAgY3R4LnF1YWRyYXRpY0N1cnZlVG8oeCArIHcs
IHksIHggKyB3IC0gciwgeSk7Ci0gICAgICAgICAgICBjdHgubGluZVRvKHggKyByLCB5KTsKLSAg
ICAgICAgICAgIGN0eC5xdWFkcmF0aWNDdXJ2ZVRvKHgsIHksIHgsIHkgKyByKTsKLSAgICAgICAg
ICAgIGN0eC5jbG9zZVBhdGgoKTsKLQotICAgICAgICAgICAgLy8gQ2xpcCB0byB0aGUgcm91bmRl
ZCByZWN0IHBhdGguCi0gICAgICAgICAgICBjdHguc2F2ZSgpOwotICAgICAgICAgICAgY3R4LmNs
aXAoKTsKLQotICAgICAgICAgICAgLy8gRmlsbCB0aGUgc2VnbWVudHMgd2l0aCB0aGUgYXNzb2Np
YXRlZCBjb2xvci4KLSAgICAgICAgICAgIHZhciBwcmV2aW91c1NlZ21lbnRzV2lkdGggPSAwOwot
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWdtZW50cy5sZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgICAgIHZhciBzZWdtZW50V2lkdGggPSBNYXRoLnJvdW5kKHcgKiBwZXJjZW50
c1tpXSAvIDEwMCk7Ci0gICAgICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IHNlZ21lbnRzW2ld
LmNvbG9yOwotICAgICAgICAgICAgICAgIGN0eC5maWxsUmVjdCh4ICsgcHJldmlvdXNTZWdtZW50
c1dpZHRoLCB5LCBzZWdtZW50V2lkdGgsIGgpOwotICAgICAgICAgICAgICAgIHByZXZpb3VzU2Vn
bWVudHNXaWR0aCArPSBzZWdtZW50V2lkdGg7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IC8vIERyYXcgdGhlIHNlZ21lbnQgZGl2aWRlciBsaW5lcy4KLSAgICAgICAgICAgIGN0eC5saW5l
V2lkdGggPSAxOwotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCAyMDsgKytpKSB7Ci0g
ICAgICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwotICAgICAgICAgICAgICAgIGN0eC5tb3Zl
VG8oeCArIChpICogTWF0aC5yb3VuZCh3IC8gMjApKSArIDAuNSwgeSk7Ci0gICAgICAgICAgICAg
ICAgY3R4LmxpbmVUbyh4ICsgKGkgKiBNYXRoLnJvdW5kKHcgLyAyMCkpICsgMC41LCB5ICsgaCk7
Ci0gICAgICAgICAgICAgICAgY3R4LmNsb3NlUGF0aCgpOwotCi0gICAgICAgICAgICAgICAgY3R4
LnN0cm9rZVN0eWxlID0gInJnYmEoMCwgMCwgMCwgMC4yKSI7Ci0gICAgICAgICAgICAgICAgY3R4
LnN0cm9rZSgpOwotCi0gICAgICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwotICAgICAgICAg
ICAgICAgIGN0eC5tb3ZlVG8oeCArIChpICogTWF0aC5yb3VuZCh3IC8gMjApKSArIDEuNSwgeSk7
Ci0gICAgICAgICAgICAgICAgY3R4LmxpbmVUbyh4ICsgKGkgKiBNYXRoLnJvdW5kKHcgLyAyMCkp
ICsgMS41LCB5ICsgaCk7Ci0gICAgICAgICAgICAgICAgY3R4LmNsb3NlUGF0aCgpOwotCi0gICAg
ICAgICAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSI7
Ci0gICAgICAgICAgICAgICAgY3R4LnN0cm9rZSgpOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAvLyBEcmF3IHRoZSBwaWxsIHNoYWRpbmcuCi0gICAgICAgICAgICB2YXIgbGlnaHRHcmFk
aWVudCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCh4LCB5LCB4LCB5ICsgKGggLyAxLjUpKTsK
LSAgICAgICAgICAgIGxpZ2h0R3JhZGllbnQuYWRkQ29sb3JTdG9wKDAuMCwgInJnYmEoMjIwLCAy
MjAsIDIyMCwgMC42KSIpOwotICAgICAgICAgICAgbGlnaHRHcmFkaWVudC5hZGRDb2xvclN0b3Ao
MC40LCAicmdiYSgyMjAsIDIyMCwgMjIwLCAwLjIpIik7Ci0gICAgICAgICAgICBsaWdodEdyYWRp
ZW50LmFkZENvbG9yU3RvcCgxLjAsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCkiKTsKLQotICAg
ICAgICAgICAgdmFyIGRhcmtHcmFkaWVudCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCh4LCB5
ICsgKGggLyAzKSwgeCwgeSArIGgpOwotICAgICAgICAgICAgZGFya0dyYWRpZW50LmFkZENvbG9y
U3RvcCgwLjAsICJyZ2JhKDAsIDAsIDAsIDAuMCkiKTsKLSAgICAgICAgICAgIGRhcmtHcmFkaWVu
dC5hZGRDb2xvclN0b3AoMC44LCAicmdiYSgwLCAwLCAwLCAwLjIpIik7Ci0gICAgICAgICAgICBk
YXJrR3JhZGllbnQuYWRkQ29sb3JTdG9wKDEuMCwgInJnYmEoMCwgMCwgMCwgMC41KSIpOwotCi0g
ICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gZGFya0dyYWRpZW50OwotICAgICAgICAgICAgY3R4
LmZpbGxSZWN0KHgsIHksIHcsIGgpOwotCi0gICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gbGln
aHRHcmFkaWVudDsKLSAgICAgICAgICAgIGN0eC5maWxsUmVjdCh4LCB5LCB3LCBoKTsKLQotICAg
ICAgICAgICAgY3R4LnJlc3RvcmUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGN0eC5jbGVhclJl
Y3QoeCwgeSwgdywgKGggKiAyKSk7Ci0KLSAgICAgICAgZHJhd1BpbGxTaGFkb3coKTsKLSAgICAg
ICAgZHJhd1BpbGwoKTsKLQotICAgICAgICBjdHguc2F2ZSgpOwotCi0gICAgICAgIGN0eC50cmFu
c2xhdGUoMCwgKGggKiAyKSArIDEpOwotICAgICAgICBjdHguc2NhbGUoMSwgLTEpOwotCi0gICAg
ICAgIGRyYXdQaWxsKCk7Ci0KLSAgICAgICAgY3R4LnJlc3RvcmUoKTsKLQotICAgICAgICB0aGlz
Ll9mYWRlT3V0UmVjdChjdHgsIHgsIHkgKyBoICsgMSwgdywgaCwgMC41LCAwLjApOwotICAgIH0s
Ci0KICAgICBfdXBkYXRlU3VtbWFyeUdyYXBoOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2
YXIgZ3JhcGhJbmZvID0gdGhpcy5jYWxjdWxhdG9yLmNvbXB1dGVTdW1tYXJ5VmFsdWVzKHRoaXMu
X3Jlc291cmNlcyk7Ci0KLSAgICAgICAgdmFyIGNhdGVnb3J5Q29sb3JzID0ge2RvY3VtZW50czog
e3I6IDQ3LCBnOiAxMDIsIGI6IDIzNn0sIHN0eWxlc2hlZXRzOiB7cjogMTU3LCBnOiAyMzEsIGI6
IDExOX0sIGltYWdlczoge3I6IDE2NCwgZzogNjAsIGI6IDI1NX0sIHNjcmlwdHM6IHtyOiAyNTUs
IGc6IDEyMSwgYjogMH0sIHhocjoge3I6IDIzMSwgZzogMjMxLCBiOiAxMH0sIGZvbnRzOiB7cjog
MjU1LCBnOiA4MiwgYjogNjJ9LCBvdGhlcjoge3I6IDE4NiwgZzogMTg2LCBiOiAxODZ9fTsKLSAg
ICAgICAgdmFyIGZpbGxTZWdtZW50cyA9IFtdOwotCi0gICAgICAgIHRoaXMubGVnZW5kRWxlbWVu
dC5yZW1vdmVDaGlsZHJlbigpOwotCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5j
YXRlZ29yeU9yZGVyLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgY2F0ZWdvcnkgPSB0
aGlzLmNhdGVnb3J5T3JkZXJbaV07Ci0gICAgICAgICAgICB2YXIgc2l6ZSA9IGdyYXBoSW5mby5j
YXRlZ29yeVZhbHVlc1tjYXRlZ29yeV07Ci0gICAgICAgICAgICBpZiAoIXNpemUpCi0gICAgICAg
ICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIHZhciBjb2xvciA9IGNhdGVnb3J5Q29s
b3JzW2NhdGVnb3J5XTsKLSAgICAgICAgICAgIHZhciBjb2xvclN0cmluZyA9ICJyZ2IoIiArIGNv
bG9yLnIgKyAiLCAiICsgY29sb3IuZyArICIsICIgKyBjb2xvci5iICsgIikiOwotCi0gICAgICAg
ICAgICB2YXIgZmlsbFNlZ21lbnQgPSB7Y29sb3I6IGNvbG9yU3RyaW5nLCB2YWx1ZTogc2l6ZX07
Ci0gICAgICAgICAgICBmaWxsU2VnbWVudHMucHVzaChmaWxsU2VnbWVudCk7Ci0KLSAgICAgICAg
ICAgIHZhciBsZWdlbmRMYWJlbCA9IHRoaXMuX21ha2VMZWdlbmRFbGVtZW50KFdlYkluc3BlY3Rv
ci5yZXNvdXJjZUNhdGVnb3JpZXNbY2F0ZWdvcnldLnRpdGxlLCB0aGlzLmNhbGN1bGF0b3IuZm9y
bWF0VmFsdWUoc2l6ZSksIGNvbG9yU3RyaW5nKTsKLSAgICAgICAgICAgIHRoaXMubGVnZW5kRWxl
bWVudC5hcHBlbmRDaGlsZChsZWdlbmRMYWJlbCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
Z3JhcGhJbmZvLnRvdGFsKSB7Ci0gICAgICAgICAgICB2YXIgdG90YWxMZWdlbmRMYWJlbCA9IHRo
aXMuX21ha2VMZWdlbmRFbGVtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiVG90YWwiKSwgdGhp
cy5jYWxjdWxhdG9yLmZvcm1hdFZhbHVlKGdyYXBoSW5mby50b3RhbCkpOwotICAgICAgICAgICAg
dG90YWxMZWdlbmRMYWJlbC5hZGRTdHlsZUNsYXNzKCJ0b3RhbCIpOwotICAgICAgICAgICAgdGhp
cy5sZWdlbmRFbGVtZW50LmFwcGVuZENoaWxkKHRvdGFsTGVnZW5kTGFiZWwpOwotICAgICAgICB9
Ci0KLSAgICAgICAgdGhpcy5fZHJhd1N1bW1hcnlHcmFwaChmaWxsU2VnbWVudHMpOworICAgICAg
ICB0aGlzLnN1bW1hcnlCYXIudXBkYXRlKHRoaXMuX3Jlc291cmNlcyk7CiAgICAgfSwKIAogICAg
IF91cGRhdGVEaXZpZGVyc0xhYmVsQmFyUG9zaXRpb246IGZ1bmN0aW9uKCkKICAgICB7CiAgICAg
ICAgIHZhciBzY3JvbGxUb3AgPSB0aGlzLmNvbnRhaW5lckVsZW1lbnQuc2Nyb2xsVG9wOwotICAg
ICAgICB2YXIgZGl2aWRlcnNUb3AgPSAoc2Nyb2xsVG9wIDwgdGhpcy5zdW1tYXJ5RWxlbWVudC5v
ZmZzZXRIZWlnaHQgPyB0aGlzLnN1bW1hcnlFbGVtZW50Lm9mZnNldEhlaWdodCA6IHNjcm9sbFRv
cCk7CisgICAgICAgIHZhciBkaXZpZGVyc1RvcCA9IChzY3JvbGxUb3AgPCB0aGlzLnN1bW1hcnlC
YXIuZWxlbWVudC5vZmZzZXRIZWlnaHQgPyB0aGlzLnN1bW1hcnlCYXIuZWxlbWVudC5vZmZzZXRI
ZWlnaHQgOiBzY3JvbGxUb3ApOwogICAgICAgICB0aGlzLmRpdmlkZXJzRWxlbWVudC5zdHlsZS50
b3AgPSBzY3JvbGxUb3AgKyAicHgiOwogICAgICAgICB0aGlzLmRpdmlkZXJzTGFiZWxCYXJFbGVt
ZW50LnN0eWxlLnRvcCA9IGRpdmlkZXJzVG9wICsgInB4IjsKICAgICB9LApAQCAtMTA5Myw3ICs3
ODMsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogICAgIHsK
ICAgICAgICAgdmFyIHNlbGVjdGVkT3B0aW9uID0gdGhpcy5zb3J0aW5nU2VsZWN0RWxlbWVudFt0
aGlzLnNvcnRpbmdTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXhdOwogICAgICAgICB0aGlzLnNv
cnRpbmdGdW5jdGlvbiA9IHNlbGVjdGVkT3B0aW9uLnNvcnRpbmdGdW5jdGlvbjsKLSAgICAgICAg
dGhpcy5jYWxjdWxhdG9yID0gc2VsZWN0ZWRPcHRpb24uY2FsY3VsYXRvcjsKKyAgICAgICAgdGhp
cy5jYWxjdWxhdG9yID0gdGhpcy5zdW1tYXJ5QmFyLmNhbGN1bGF0b3IgPSBzZWxlY3RlZE9wdGlv
bi5jYWxjdWxhdG9yOwogICAgIH0sCiAKICAgICBfY3JlYXRlUmVzb3VyY2VWaWV3OiBmdW5jdGlv
bihyZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdW1t
YXJ5QmFyLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N1bW1hcnlCYXIuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTMyOGNlYQotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdW1tYXJ5QmFyLmpzCkBAIC0wLDAgKzEs
MzY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgQW50aG9ueSBSaWNh
dWQgPHJpa0B3ZWJraXQub3JnPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5TdW1tYXJ5QmFyID0gZnVuY3Rpb24o
Y2F0ZWdvcnlDb2xvcnMsIGNhdGVnb3J5T3JkZXIpCit7CisgICAgdGhpcy5jYXRlZ29yeUNvbG9y
cyA9IGNhdGVnb3J5Q29sb3JzOworICAgIHRoaXMuY2F0ZWdvcnlPcmRlciA9IGNhdGVnb3J5T3Jk
ZXI7CisKKyAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gInN1bW1hcnktYmFyIjsKKworICAgIHRoaXMu
Z3JhcGhFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgdGhp
cy5ncmFwaEVsZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsICI0NTAiKTsKKyAgICB0aGlzLmdy
YXBoRWxlbWVudC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsICIzOCIpOworICAgIHRoaXMuZ3JhcGhF
bGVtZW50LmNsYXNzTmFtZSA9ICJzdW1tYXJ5LWdyYXBoIjsKKyAgICB0aGlzLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5ncmFwaEVsZW1lbnQpOworCisgICAgdGhpcy5sZWdlbmRFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgdGhpcy5sZWdlbmRFbGVtZW50LmNs
YXNzTmFtZSA9ICJzdW1tYXJ5LWdyYXBoLWxlZ2VuZCI7CisgICAgdGhpcy5lbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMubGVnZW5kRWxlbWVudCk7Cit9CisKK1dlYkluc3BlY3Rvci5TdW1tYXJ5QmFy
LnByb3RvdHlwZSA9IHsKKworICAgIGdldCBjYWxjdWxhdG9yKCkgeworICAgICAgICByZXR1cm4g
dGhpcy5fY2FsY3VsYXRvcjsKKyAgICB9LAorCisgICAgc2V0IGNhbGN1bGF0b3IoeCkgeworICAg
ICAgICB0aGlzLl9jYWxjdWxhdG9yID0geDsKKyAgICB9LAorCisgICAgcmVzZXQ6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHRoaXMubGVnZW5kRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwor
ICAgICAgICB0aGlzLl9kcmF3U3VtbWFyeUdyYXBoKCk7CisgICAgfSwKKworICAgIHVwZGF0ZTog
ZnVuY3Rpb24oZGF0YSkKKyAgICB7CisgICAgICAgIHZhciBncmFwaEluZm8gPSB0aGlzLmNhbGN1
bGF0b3IuY29tcHV0ZVN1bW1hcnlWYWx1ZXMoZGF0YSk7CisKKyAgICAgICAgdmFyIGZpbGxTZWdt
ZW50cyA9IFtdOworCisgICAgICAgIHRoaXMubGVnZW5kRWxlbWVudC5yZW1vdmVDaGlsZHJlbigp
OworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jYXRlZ29yeU9yZGVyLmxlbmd0
aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgY2F0ZWdvcnkgPSB0aGlzLmNhdGVnb3J5T3JkZXJb
aV07CisgICAgICAgICAgICB2YXIgc2l6ZSA9IGdyYXBoSW5mby5jYXRlZ29yeVZhbHVlc1tjYXRl
Z29yeV07CisgICAgICAgICAgICBpZiAoIXNpemUpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgIHZhciBjb2xvciA9IHRoaXMuY2F0ZWdvcnlDb2xvcnNbY2F0ZWdvcnld
OworICAgICAgICAgICAgdmFyIGNvbG9yU3RyaW5nID0gInJnYigiICsgY29sb3IuciArICIsICIg
KyBjb2xvci5nICsgIiwgIiArIGNvbG9yLmIgKyAiKSI7CisKKyAgICAgICAgICAgIHZhciBmaWxs
U2VnbWVudCA9IHtjb2xvcjogY29sb3JTdHJpbmcsIHZhbHVlOiBzaXplfTsKKyAgICAgICAgICAg
IGZpbGxTZWdtZW50cy5wdXNoKGZpbGxTZWdtZW50KTsKKworICAgICAgICAgICAgdmFyIGxlZ2Vu
ZExhYmVsID0gdGhpcy5fbWFrZUxlZ2VuZEVsZW1lbnQoV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0
ZWdvcmllc1tjYXRlZ29yeV0udGl0bGUsIHRoaXMuY2FsY3VsYXRvci5mb3JtYXRWYWx1ZShzaXpl
KSwgY29sb3JTdHJpbmcpOworICAgICAgICAgICAgdGhpcy5sZWdlbmRFbGVtZW50LmFwcGVuZENo
aWxkKGxlZ2VuZExhYmVsKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChncmFwaEluZm8udG90
YWwpIHsKKyAgICAgICAgICAgIHZhciB0b3RhbExlZ2VuZExhYmVsID0gdGhpcy5fbWFrZUxlZ2Vu
ZEVsZW1lbnQoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUb3RhbCIpLCB0aGlzLmNhbGN1bGF0b3Iu
Zm9ybWF0VmFsdWUoZ3JhcGhJbmZvLnRvdGFsKSk7CisgICAgICAgICAgICB0b3RhbExlZ2VuZExh
YmVsLmFkZFN0eWxlQ2xhc3MoInRvdGFsIik7CisgICAgICAgICAgICB0aGlzLmxlZ2VuZEVsZW1l
bnQuYXBwZW5kQ2hpbGQodG90YWxMZWdlbmRMYWJlbCk7CisgICAgICAgIH0KKworICAgICAgICB0
aGlzLl9kcmF3U3VtbWFyeUdyYXBoKGZpbGxTZWdtZW50cyk7CisgICAgfSwKKworICAgIF9kcmF3
U3dhdGNoOiBmdW5jdGlvbihjYW52YXMsIGNvbG9yKQorICAgIHsKKyAgICAgICAgdmFyIGN0eCA9
IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworCisgICAgICAgIGZ1bmN0aW9uIGRyYXdTd2F0Y2hT
cXVhcmUoKSB7CisgICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gY29sb3I7CisgICAgICAgICAg
ICBjdHguZmlsbFJlY3QoMCwgMCwgMTMsIDEzKTsKKworICAgICAgICAgICAgdmFyIGdyYWRpZW50
ID0gY3R4LmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsIDAsIDEzLCAxMyk7CisgICAgICAgICAgICBn
cmFkaWVudC5hZGRDb2xvclN0b3AoMC4wLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpIik7Cisg
ICAgICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMS4wLCAicmdiYSgyNTUsIDI1NSwgMjU1
LCAwLjApIik7CisKKyAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBncmFkaWVudDsKKyAgICAg
ICAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxMywgMTMpOworCisgICAgICAgICAgICBncmFkaWVu
dCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgxMywgMTMsIDAsIDApOworICAgICAgICAgICAg
Z3JhZGllbnQuYWRkQ29sb3JTdG9wKDAuMCwgInJnYmEoMCwgMCwgMCwgMC4yKSIpOworICAgICAg
ICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDEuMCwgInJnYmEoMCwgMCwgMCwgMC4wKSIpOwor
CisgICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gZ3JhZGllbnQ7CisgICAgICAgICAgICBjdHgu
ZmlsbFJlY3QoMCwgMCwgMTMsIDEzKTsKKworICAgICAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0g
InJnYmEoMCwgMCwgMCwgMC42KSI7CisgICAgICAgICAgICBjdHguc3Ryb2tlUmVjdCgwLjUsIDAu
NSwgMTIsIDEyKTsKKyAgICAgICAgfQorCisgICAgICAgIGN0eC5jbGVhclJlY3QoMCwgMCwgMTMs
IDI0KTsKKworICAgICAgICBkcmF3U3dhdGNoU3F1YXJlKCk7CisKKyAgICAgICAgY3R4LnNhdmUo
KTsKKworICAgICAgICBjdHgudHJhbnNsYXRlKDAsIDI1KTsKKyAgICAgICAgY3R4LnNjYWxlKDEs
IC0xKTsKKworICAgICAgICBkcmF3U3dhdGNoU3F1YXJlKCk7CisKKyAgICAgICAgY3R4LnJlc3Rv
cmUoKTsKKworICAgICAgICB0aGlzLl9mYWRlT3V0UmVjdChjdHgsIDAsIDEzLCAxMywgMTMsIDAu
NSwgMC4wKTsKKyAgICB9LAorCisgICAgX2RyYXdTdW1tYXJ5R3JhcGg6IGZ1bmN0aW9uKHNlZ21l
bnRzKQorICAgIHsKKyAgICAgICAgaWYgKCFzZWdtZW50cyB8fCAhc2VnbWVudHMubGVuZ3RoKSB7
CisgICAgICAgICAgICBzZWdtZW50cyA9IFt7Y29sb3I6ICJ3aGl0ZSIsIHZhbHVlOiAxfV07Cisg
ICAgICAgICAgICB0aGlzLl9zaG93aW5nRW1wdHlTdW1tYXJ5R3JhcGggPSB0cnVlOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9zaG93aW5nRW1wdHlTdW1tYXJ5R3Jh
cGg7CisKKyAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSB0b3RhbCBvZiBhbGwgc2VnbWVudHMuCisg
ICAgICAgIHZhciB0b3RhbCA9IDA7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VnbWVu
dHMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0b3RhbCArPSBzZWdtZW50c1tpXS52YWx1ZTsK
KworICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHBlcmNlbnRhZ2Ugb2YgZWFjaCBzZWdtZW50LCBy
b3VuZGVkIHRvIHRoZSBuZWFyZXN0IHBlcmNlbnQuCisgICAgICAgIHZhciBwZXJjZW50cyA9IHNl
Z21lbnRzLm1hcChmdW5jdGlvbihzKSB7IHJldHVybiBNYXRoLm1heChNYXRoLnJvdW5kKDEwMCAq
IHMudmFsdWUgLyB0b3RhbCksIDEpIH0pOworCisgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgdG90
YWwgcGVyY2VudGFnZS4KKyAgICAgICAgdmFyIHBlcmNlbnRUb3RhbCA9IDA7CisgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgcGVyY2VudHMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBwZXJj
ZW50VG90YWwgKz0gcGVyY2VudHNbaV07CisKKyAgICAgICAgLy8gTWFrZSBzdXJlIG91ciBwZXJj
ZW50YWdlIHRvdGFsIGlzIG5vdCBncmVhdGVyLXRoYW4gMTAwLCBpdCBjYW4gYmUgZ3JlYXRlcgor
ICAgICAgICAvLyBpZiB3ZSByb3VuZGVkIHVwIGZvciBhIGZldyBzZWdtZW50cy4KKyAgICAgICAg
d2hpbGUgKHBlcmNlbnRUb3RhbCA+IDEwMCkgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBwZXJjZW50cy5sZW5ndGggJiYgcGVyY2VudFRvdGFsID4gMTAwOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICBpZiAocGVyY2VudHNbaV0gPiAxKSB7CisgICAgICAgICAgICAgICAgICAgIC0t
cGVyY2VudHNbaV07CisgICAgICAgICAgICAgICAgICAgIC0tcGVyY2VudFRvdGFsOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIE1ha2Ug
c3VyZSBvdXIgcGVyY2VudGFnZSB0b3RhbCBpcyBub3QgbGVzcy10aGFuIDEwMCwgaXQgY2FuIGJl
IGxlc3MKKyAgICAgICAgLy8gaWYgd2Ugcm91bmRlZCBkb3duIGZvciBhIGZldyBzZWdtZW50cy4K
KyAgICAgICAgd2hpbGUgKHBlcmNlbnRUb3RhbCA8IDEwMCkgeworICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBwZXJjZW50cy5sZW5ndGggJiYgcGVyY2VudFRvdGFsIDwgMTAwOyArK2kp
IHsKKyAgICAgICAgICAgICAgICArK3BlcmNlbnRzW2ldOworICAgICAgICAgICAgICAgICsrcGVy
Y2VudFRvdGFsOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdmFyIGN0eCA9
IHRoaXMuZ3JhcGhFbGVtZW50LmdldENvbnRleHQoIjJkIik7CisKKyAgICAgICAgdmFyIHggPSAw
OworICAgICAgICB2YXIgeSA9IDA7CisgICAgICAgIHZhciB3ID0gNDUwOworICAgICAgICB2YXIg
aCA9IDE5OworICAgICAgICB2YXIgciA9IChoIC8gMik7CisKKyAgICAgICAgZnVuY3Rpb24gZHJh
d1BpbGxTaGFkb3coKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBUaGlzIGRyYXdzIGEgbGlu
ZSB3aXRoIGEgc2hhZG93IHRoYXQgaXMgb2Zmc2V0IGF3YXkgZnJvbSB0aGUgbGluZS4gVGhlIGxp
bmUgaXMgc3Ryb2tlZAorICAgICAgICAgICAgLy8gdHdpY2Ugd2l0aCBkaWZmZXJlbnQgWCBzaGFk
b3cgb2Zmc2V0cyB0byBnaXZlIG1vcmUgZmVhdGhlcmVkIGVkZ2VzLiBMYXRlciB3ZSBlcmFzZSB0
aGUKKyAgICAgICAgICAgIC8vIGxpbmUgd2l0aCBkZXN0aW5hdGlvbi1vdXQgMTAwJSB0cmFuc3Bh
cmVudCBibGFjaywgbGVhdmluZyBvbmx5IHRoZSBzaGFkb3cuIFRoaXMgb25seQorICAgICAgICAg
ICAgLy8gd29ya3MgaWYgbm90aGluZyBoYXMgYmVlbiBkcmF3biBpbnRvIHRoZSBjYW52YXMgeWV0
LgorCisgICAgICAgICAgICBjdHguYmVnaW5QYXRoKCk7CisgICAgICAgICAgICBjdHgubW92ZVRv
KHggKyA0LCB5ICsgaCAtIDMgLSAwLjUpOworICAgICAgICAgICAgY3R4LmxpbmVUbyh4ICsgdyAt
IDQsIHkgKyBoIC0gMyAtIDAuNSk7CisgICAgICAgICAgICBjdHguY2xvc2VQYXRoKCk7CisKKyAg
ICAgICAgICAgIGN0eC5zYXZlKCk7CisKKyAgICAgICAgICAgIGN0eC5zaGFkb3dCbHVyID0gMjsK
KyAgICAgICAgICAgIGN0eC5zaGFkb3dDb2xvciA9ICJyZ2JhKDAsIDAsIDAsIDAuNSkiOworICAg
ICAgICAgICAgY3R4LnNoYWRvd09mZnNldFggPSAzOworICAgICAgICAgICAgY3R4LnNoYWRvd09m
ZnNldFkgPSA1OworCisgICAgICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSAid2hpdGUiOworICAg
ICAgICAgICAgY3R4LmxpbmVXaWR0aCA9IDE7CisKKyAgICAgICAgICAgIGN0eC5zdHJva2UoKTsK
KworICAgICAgICAgICAgY3R4LnNoYWRvd09mZnNldFggPSAtMzsKKworICAgICAgICAgICAgY3R4
LnN0cm9rZSgpOworCisgICAgICAgICAgICBjdHgucmVzdG9yZSgpOworCisgICAgICAgICAgICBj
dHguc2F2ZSgpOworCisgICAgICAgICAgICBjdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0g
ImRlc3RpbmF0aW9uLW91dCI7CisgICAgICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSAicmdiYSgw
LCAwLCAwLCAxKSI7CisgICAgICAgICAgICBjdHgubGluZVdpZHRoID0gMTsKKworICAgICAgICAg
ICAgY3R4LnN0cm9rZSgpOworCisgICAgICAgICAgICBjdHgucmVzdG9yZSgpOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gZHJhd1BpbGwoKQorICAgICAgICB7CisgICAgICAgICAgICAv
LyBNYWtlIGEgcm91bmRlZCByZWN0IHBhdGguCisgICAgICAgICAgICBjdHguYmVnaW5QYXRoKCk7
CisgICAgICAgICAgICBjdHgubW92ZVRvKHgsIHkgKyByKTsKKyAgICAgICAgICAgIGN0eC5saW5l
VG8oeCwgeSArIGggLSByKTsKKyAgICAgICAgICAgIGN0eC5xdWFkcmF0aWNDdXJ2ZVRvKHgsIHkg
KyBoLCB4ICsgciwgeSArIGgpOworICAgICAgICAgICAgY3R4LmxpbmVUbyh4ICsgdyAtIHIsIHkg
KyBoKTsKKyAgICAgICAgICAgIGN0eC5xdWFkcmF0aWNDdXJ2ZVRvKHggKyB3LCB5ICsgaCwgeCAr
IHcsIHkgKyBoIC0gcik7CisgICAgICAgICAgICBjdHgubGluZVRvKHggKyB3LCB5ICsgcik7Cisg
ICAgICAgICAgICBjdHgucXVhZHJhdGljQ3VydmVUbyh4ICsgdywgeSwgeCArIHcgLSByLCB5KTsK
KyAgICAgICAgICAgIGN0eC5saW5lVG8oeCArIHIsIHkpOworICAgICAgICAgICAgY3R4LnF1YWRy
YXRpY0N1cnZlVG8oeCwgeSwgeCwgeSArIHIpOworICAgICAgICAgICAgY3R4LmNsb3NlUGF0aCgp
OworCisgICAgICAgICAgICAvLyBDbGlwIHRvIHRoZSByb3VuZGVkIHJlY3QgcGF0aC4KKyAgICAg
ICAgICAgIGN0eC5zYXZlKCk7CisgICAgICAgICAgICBjdHguY2xpcCgpOworCisgICAgICAgICAg
ICAvLyBGaWxsIHRoZSBzZWdtZW50cyB3aXRoIHRoZSBhc3NvY2lhdGVkIGNvbG9yLgorICAgICAg
ICAgICAgdmFyIHByZXZpb3VzU2VnbWVudHNXaWR0aCA9IDA7CisgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHNlZ21lbnRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFy
IHNlZ21lbnRXaWR0aCA9IE1hdGgucm91bmQodyAqIHBlcmNlbnRzW2ldIC8gMTAwKTsKKyAgICAg
ICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gc2VnbWVudHNbaV0uY29sb3I7CisgICAgICAgICAg
ICAgICAgY3R4LmZpbGxSZWN0KHggKyBwcmV2aW91c1NlZ21lbnRzV2lkdGgsIHksIHNlZ21lbnRX
aWR0aCwgaCk7CisgICAgICAgICAgICAgICAgcHJldmlvdXNTZWdtZW50c1dpZHRoICs9IHNlZ21l
bnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRHJhdyB0aGUgc2VnbWVu
dCBkaXZpZGVyIGxpbmVzLgorICAgICAgICAgICAgY3R4LmxpbmVXaWR0aCA9IDE7CisgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMTsgaSA8IDIwOyArK2kpIHsKKyAgICAgICAgICAgICAgICBjdHgu
YmVnaW5QYXRoKCk7CisgICAgICAgICAgICAgICAgY3R4Lm1vdmVUbyh4ICsgKGkgKiBNYXRoLnJv
dW5kKHcgLyAyMCkpICsgMC41LCB5KTsKKyAgICAgICAgICAgICAgICBjdHgubGluZVRvKHggKyAo
aSAqIE1hdGgucm91bmQodyAvIDIwKSkgKyAwLjUsIHkgKyBoKTsKKyAgICAgICAgICAgICAgICBj
dHguY2xvc2VQYXRoKCk7CisKKyAgICAgICAgICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSAicmdi
YSgwLCAwLCAwLCAwLjIpIjsKKyAgICAgICAgICAgICAgICBjdHguc3Ryb2tlKCk7CisKKyAgICAg
ICAgICAgICAgICBjdHguYmVnaW5QYXRoKCk7CisgICAgICAgICAgICAgICAgY3R4Lm1vdmVUbyh4
ICsgKGkgKiBNYXRoLnJvdW5kKHcgLyAyMCkpICsgMS41LCB5KTsKKyAgICAgICAgICAgICAgICBj
dHgubGluZVRvKHggKyAoaSAqIE1hdGgucm91bmQodyAvIDIwKSkgKyAxLjUsIHkgKyBoKTsKKyAg
ICAgICAgICAgICAgICBjdHguY2xvc2VQYXRoKCk7CisKKyAgICAgICAgICAgICAgICBjdHguc3Ry
b2tlU3R5bGUgPSAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpIjsKKyAgICAgICAgICAgICAgICBj
dHguc3Ryb2tlKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIERyYXcgdGhlIHBp
bGwgc2hhZGluZy4KKyAgICAgICAgICAgIHZhciBsaWdodEdyYWRpZW50ID0gY3R4LmNyZWF0ZUxp
bmVhckdyYWRpZW50KHgsIHksIHgsIHkgKyAoaCAvIDEuNSkpOworICAgICAgICAgICAgbGlnaHRH
cmFkaWVudC5hZGRDb2xvclN0b3AoMC4wLCAicmdiYSgyMjAsIDIyMCwgMjIwLCAwLjYpIik7Cisg
ICAgICAgICAgICBsaWdodEdyYWRpZW50LmFkZENvbG9yU3RvcCgwLjQsICJyZ2JhKDIyMCwgMjIw
LCAyMjAsIDAuMikiKTsKKyAgICAgICAgICAgIGxpZ2h0R3JhZGllbnQuYWRkQ29sb3JTdG9wKDEu
MCwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworCisgICAgICAgICAgICB2YXIgZGFya0dy
YWRpZW50ID0gY3R4LmNyZWF0ZUxpbmVhckdyYWRpZW50KHgsIHkgKyAoaCAvIDMpLCB4LCB5ICsg
aCk7CisgICAgICAgICAgICBkYXJrR3JhZGllbnQuYWRkQ29sb3JTdG9wKDAuMCwgInJnYmEoMCwg
MCwgMCwgMC4wKSIpOworICAgICAgICAgICAgZGFya0dyYWRpZW50LmFkZENvbG9yU3RvcCgwLjgs
ICJyZ2JhKDAsIDAsIDAsIDAuMikiKTsKKyAgICAgICAgICAgIGRhcmtHcmFkaWVudC5hZGRDb2xv
clN0b3AoMS4wLCAicmdiYSgwLCAwLCAwLCAwLjUpIik7CisKKyAgICAgICAgICAgIGN0eC5maWxs
U3R5bGUgPSBkYXJrR3JhZGllbnQ7CisgICAgICAgICAgICBjdHguZmlsbFJlY3QoeCwgeSwgdywg
aCk7CisKKyAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBsaWdodEdyYWRpZW50OworICAgICAg
ICAgICAgY3R4LmZpbGxSZWN0KHgsIHksIHcsIGgpOworCisgICAgICAgICAgICBjdHgucmVzdG9y
ZSgpOworICAgICAgICB9CisKKyAgICAgICAgY3R4LmNsZWFyUmVjdCh4LCB5LCB3LCAoaCAqIDIp
KTsKKworICAgICAgICBkcmF3UGlsbFNoYWRvdygpOworICAgICAgICBkcmF3UGlsbCgpOworCisg
ICAgICAgIGN0eC5zYXZlKCk7CisKKyAgICAgICAgY3R4LnRyYW5zbGF0ZSgwLCAoaCAqIDIpICsg
MSk7CisgICAgICAgIGN0eC5zY2FsZSgxLCAtMSk7CisKKyAgICAgICAgZHJhd1BpbGwoKTsKKwor
ICAgICAgICBjdHgucmVzdG9yZSgpOworCisgICAgICAgIHRoaXMuX2ZhZGVPdXRSZWN0KGN0eCwg
eCwgeSArIGggKyAxLCB3LCBoLCAwLjUsIDAuMCk7CisgICAgfSwKKworICAgIF9mYWRlT3V0UmVj
dDogZnVuY3Rpb24oY3R4LCB4LCB5LCB3LCBoLCBhMSwgYTIpCisgICAgeworICAgICAgICBjdHgu
c2F2ZSgpOworCisgICAgICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVu
dCh4LCB5LCB4LCB5ICsgaCk7CisgICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgwLjAsICJy
Z2JhKDAsIDAsIDAsICIgKyAoMS4wIC0gYTEpICsgIikiKTsKKyAgICAgICAgZ3JhZGllbnQuYWRk
Q29sb3JTdG9wKDAuOCwgInJnYmEoMCwgMCwgMCwgIiArICgxLjAgLSBhMikgKyAiKSIpOworICAg
ICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMS4wLCAicmdiYSgwLCAwLCAwLCAxLjApIik7CisK
KyAgICAgICAgY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICJkZXN0aW5hdGlvbi1vdXQi
OworCisgICAgICAgIGN0eC5maWxsU3R5bGUgPSBncmFkaWVudDsKKyAgICAgICAgY3R4LmZpbGxS
ZWN0KHgsIHksIHcsIGgpOworCisgICAgICAgIGN0eC5yZXN0b3JlKCk7CisgICAgfSwKKworICAg
IF9tYWtlTGVnZW5kRWxlbWVudDogZnVuY3Rpb24obGFiZWwsIHZhbHVlLCBjb2xvcikKKyAgICB7
CisgICAgICAgIHZhciBsZWdlbmRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFi
ZWwiKTsKKyAgICAgICAgbGVnZW5kRWxlbWVudC5jbGFzc05hbWUgPSAic3VtbWFyeS1ncmFwaC1s
ZWdlbmQtaXRlbSI7CisKKyAgICAgICAgaWYgKGNvbG9yKSB7CisgICAgICAgICAgICB2YXIgc3dh
dGNoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgICAgICAgICBzd2F0
Y2guY2xhc3NOYW1lID0gInN1bW1hcnktZ3JhcGgtbGVnZW5kLXN3YXRjaCI7CisgICAgICAgICAg
ICBzd2F0Y2guc2V0QXR0cmlidXRlKCJ3aWR0aCIsICIxMyIpOworICAgICAgICAgICAgc3dhdGNo
LnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwgIjI0Iik7CisKKyAgICAgICAgICAgIGxlZ2VuZEVsZW1l
bnQuYXBwZW5kQ2hpbGQoc3dhdGNoKTsKKworICAgICAgICAgICAgdGhpcy5fZHJhd1N3YXRjaChz
d2F0Y2gsIGNvbG9yKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBsYWJlbEVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgbGFiZWxFbGVtZW50LmNsYXNz
TmFtZSA9ICJzdW1tYXJ5LWdyYXBoLWxlZ2VuZC1sYWJlbCI7CisgICAgICAgIGxlZ2VuZEVsZW1l
bnQuYXBwZW5kQ2hpbGQobGFiZWxFbGVtZW50KTsKKworICAgICAgICB2YXIgaGVhZGVyRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBoZWFkZXJFbGVtZW50
LmNsYXNzTmFtZSA9ICJzdW1tYXJ5LWdyYXBoLWxlZ2VuZC1oZWFkZXIiOworICAgICAgICBoZWFk
ZXJFbGVtZW50LnRleHRDb250ZW50ID0gbGFiZWw7CisgICAgICAgIGxhYmVsRWxlbWVudC5hcHBl
bmRDaGlsZChoZWFkZXJFbGVtZW50KTsKKworICAgICAgICB2YXIgdmFsdWVFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHZhbHVlRWxlbWVudC5jbGFzc05h
bWUgPSAic3VtbWFyeS1ncmFwaC1sZWdlbmQtdmFsdWUiOworICAgICAgICB2YWx1ZUVsZW1lbnQu
dGV4dENvbnRlbnQgPSB2YWx1ZTsKKyAgICAgICAgbGFiZWxFbGVtZW50LmFwcGVuZENoaWxkKHZh
bHVlRWxlbWVudCk7CisKKyAgICAgICAgcmV0dXJuIGxlZ2VuZEVsZW1lbnQ7CisgICAgfQorfQor
CitXZWJJbnNwZWN0b3IuU3VtbWFyeUJhci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVj
dG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvV2ViS2l0LnFyYyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJj
CmluZGV4IGY0YTQ4ODEuLmUxNWIzODIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9XZWJLaXQucXJjCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJL
aXQucXJjCkBAIC01Myw2ICs1Myw3IEBACiAgICAgPGZpbGU+U3RhdHVzQmFyQnV0dG9uLmpzPC9m
aWxlPgogICAgIDxmaWxlPlN0b3JhZ2VQYW5lbC5qczwvZmlsZT4KICAgICA8ZmlsZT5TdHlsZXNT
aWRlYmFyUGFuZS5qczwvZmlsZT4KKyAgICA8ZmlsZT5TdW1tYXJ5QmFyLmpzPC9maWxlPgogICAg
IDxmaWxlPlRleHRQcm9tcHQuanM8L2ZpbGU+CiAgICAgPGZpbGU+VG9wRG93blByb2ZpbGVEYXRh
R3JpZFRyZWUuanM8L2ZpbGU+CiAgICAgPGZpbGU+dHJlZW91dGxpbmUuanM8L2ZpbGU+CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCmluZGV4IGNjMzc5YWYuLjA5YjAy
Y2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3Nz
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCkBAIC0yMzMy
LDM2ICsyMzMyLDM2IEBAIGJ1dHRvbi5lbmFibGUtdG9nZ2xlLXN0YXR1cy1iYXItaXRlbS50b2dn
bGVkLW9uIC5nbHlwaCB7CiAgICAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmc7CiB9
CiAKLSNyZXNvdXJjZXMtZ3JhcGgtbGVnZW5kIHsKKy5zdW1tYXJ5LWdyYXBoLWxlZ2VuZCB7CiAg
ICAgbWFyZ2luLXRvcDogLTEwcHg7CiAgICAgcGFkZGluZy1sZWZ0OiAxNXB4OwogfQogCi0ucmVz
b3VyY2VzLWdyYXBoLWxlZ2VuZC1pdGVtIHsKKy5zdW1tYXJ5LWdyYXBoLWxlZ2VuZC1pdGVtIHsK
ICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAg
bWFyZ2luLXJpZ2h0OiAxNXB4OwogICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiB9CiAKLS5yZXNv
dXJjZXMtZ3JhcGgtbGVnZW5kLWl0ZW0udG90YWwgeworLnN1bW1hcnktZ3JhcGgtbGVnZW5kLWl0
ZW0udG90YWwgewogICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogfQogCi0ucmVzb3VyY2VzLWdyYXBo
LWxlZ2VuZC1sYWJlbCB7Cisuc3VtbWFyeS1ncmFwaC1sZWdlbmQtbGFiZWwgewogICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogfQogCi0ucmVzb3VyY2Vz
LWdyYXBoLWxlZ2VuZC1oZWFkZXIgeworLnN1bW1hcnktZ3JhcGgtbGVnZW5kLWhlYWRlciB7CiAg
ICAgZm9udC1zaXplOiAxMnB4OwogfQogCi0ucmVzb3VyY2VzLWdyYXBoLWxlZ2VuZC12YWx1ZSB7
Cisuc3VtbWFyeS1ncmFwaC1sZWdlbmQtdmFsdWUgewogICAgIGZvbnQtc2l6ZTogMTBweDsKIH0K
IAotLnJlc291cmNlcy1ncmFwaC1sZWdlbmQtc3dhdGNoIHsKKy5zdW1tYXJ5LWdyYXBoLWxlZ2Vu
ZC1zd2F0Y2ggewogICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICAgbWFyZ2luLXRvcDogMXB4
OwogICAgIG1hcmdpbi1yaWdodDogM3B4OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5odG1sCmluZGV4IGM3ZWFiMmIuLjRhNTM2ZDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKQEAgLTY4LDYgKzY4LDcgQEAgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJQYW5lbC5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUGFuZWxFbmFibGVyVmll
dy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
U3RhdHVzQmFyQnV0dG9uLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJTdW1tYXJ5QmFyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJFbGVtZW50c1BhbmVsLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJSZXNvdXJjZXNQYW5lbC5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU2NyaXB0c1Bh
bmVsLmpzIj48L3NjcmlwdD4K
</data>
<flag name="review"
          id="19672"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>