<?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>87270</bug_id>
          
          <creation_ts>2012-05-23 09:27:14 -0700</creation_ts>
          <short_desc>Web Inspector: Limit DebuggerAgent.Location use to DebuggerModel only, introduce WebInspector.RawLocation to be used elsewhere.</short_desc>
          <delta_ts>2012-06-09 04:24:05 -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="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>631727</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-05-23 09:27:14 -0700</bug_when>
    <thetext>WebInspector.RawLocation will eventually become generic raw location independent from concrete domain (Styles, Debugger).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631735</commentid>
    <comment_count>1</comment_count>
      <attachid>143582</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-05-23 09:34:45 -0700</bug_when>
    <thetext>Created attachment 143582
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631844</commentid>
    <comment_count>2</comment_count>
      <attachid>143582</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-05-23 11:30:22 -0700</bug_when>
    <thetext>Comment on attachment 143582
Patch

Lets declare RawLocation as an empty interface instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633975</commentid>
    <comment_count>3</comment_count>
      <attachid>144079</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-05-25 09:04:41 -0700</bug_when>
    <thetext>Created attachment 144079
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642570</commentid>
    <comment_count>4</comment_count>
      <attachid>146055</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-06-06 10:07:37 -0700</bug_when>
    <thetext>Created attachment 146055
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645278</commentid>
    <comment_count>5</comment_count>
      <attachid>146055</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-06-09 03:47:32 -0700</bug_when>
    <thetext>Comment on attachment 146055
Patch

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

&gt; Source/WebCore/inspector/front-end/DebuggerModel.js:218
&gt; +        var rawLocation = /** @type {WebInspector.DebuggerModel.Location} */ location;

There is no need for this cast

&gt; Source/WebCore/inspector/front-end/UISourceCode.js:434
&gt; +WebInspector.RawLocation = function()

Could you remind me why this one does not have lineNumber, columnNumber members?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645287</commentid>
    <comment_count>6</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-06-09 04:15:00 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/inspector/front-end/UISourceCode.js:434
&gt; &gt; +WebInspector.RawLocation = function()
&gt; 
&gt; Could you remind me why this one does not have lineNumber, columnNumber members?

There is no way to add a field to compiler interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645289</commentid>
    <comment_count>7</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-06-09 04:24:05 -0700</bug_when>
    <thetext>Committed r119898: &lt;http://trac.webkit.org/changeset/119898&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143582</attachid>
            <date>2012-05-23 09:34:45 -0700</date>
            <delta_ts>2012-05-25 09:04:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87270-20120523203443.patch</filename>
            <type>text/plain</type>
            <size>38050</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWMyMGZhY2JhNTUxOTNh
NWJlMTgxYzlkMmYzNTYyYjZhNDdhNjg0Ny4uYTZiNDkwZTNlNmM2NTE2ODM2OTlmOGJkMzVlZmQw
ZWZlNTRhYzM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEyLTA1LTIzICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IExpbWl0IERlYnVnZ2VyQWdlbnQuTG9jYXRpb24gdXNlIHRvIERlYnVnZ2VyTW9kZWwgb25s
eSwgaW50cm9kdWNlIFdlYkluc3BlY3Rvci5SYXdMb2NhdGlvbiB0byBiZSB1c2VkIGVsc2V3aGVy
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3Mjcw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9k
dWNlZCBXZWJJbnNwZWN0b3IuUmF3TG9jYXRpb24sIGEgZ2VuZXJpYyByYXcgbG9jYXRpb24gaW5k
ZXBlbmRlbnQgZnJvbSBjb25jcmV0ZSBkb21haW4gKFN0eWxlcywgRGVidWdnZXIpLgorCisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUuX2JyZWFrcG9pbnRSZXNv
bHZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuQnJlYWtwb2lu
dC5wcm90b3R5cGUuX3NldEluRGVidWdnZXIuZGlkU2V0QnJlYWtwb2ludCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuQnJlYWtwb2ludC5wcm90b3R5cGUuX3NldElu
RGVidWdnZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29tcGlsZXJTY3JpcHRN
YXBwaW5nLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXBpbGVyU2NyaXB0TWFwcGluZy5w
cm90b3R5cGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvRGVidWdnZXJNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dl
ck1vZGVsLkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLmRl
YnVnZ2VyTG9jYXRpb25Gb3JSYXdMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVi
dWdnZXJNb2RlbC5yYXdMb2NhdGlvbkZvckRlYnVnZ2VyTG9jYXRpb24pOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlLmNvbnRpbnVlVG9Mb2NhdGlvbik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUuc2V0QnJlYWtwb2lu
dEJ5U2NyaXB0TG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwu
cHJvdG90eXBlLnNldEJyZWFrcG9pbnQuZGlkU2V0QnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUuc2V0QnJlYWtwb2ludCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUuc2V0QnJlYWtwb2ludEJ5U291
cmNlSWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlLl9i
cmVha3BvaW50UmVzb2x2ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwu
cHJvdG90eXBlLmNyZWF0ZVJhd0xvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1
Z2dlck1vZGVsLnByb3RvdHlwZS5jcmVhdGVSYXdMb2NhdGlvbkJ5VVJMKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZS5zZXRTZWxlY3RlZENhbGxGcmFtZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUuY3JlYXRlTGl2
ZUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlw
ZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdn
ZXJNb2RlbC5DYWxsRnJhbWUucHJvdG90eXBlLmdldCBsb2NhdGlvbik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRGVidWdnZXJNb2RlbC5DYWxsRnJhbWUucHJvdG90eXBlLmNyZWF0ZUxpdmVMb2Nh
dGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclJlc291cmNlQmlu
ZGluZy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2Uu
anM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9MaW5raWZpZXIuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTGlua2lmaWVyLnByb3RvdHlwZS5saW5raWZ5UmF3TG9jYXRpb24pOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0UG9wb3ZlckhlbHBlci5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3RQb3BvdmVySGVscGVyLnByb3RvdHlwZS5fc2hvd09i
amVjdFBvcG92ZXIuc2hvd09iamVjdFBvcG92ZXIuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5P
YmplY3RQb3BvdmVySGVscGVyLnByb3RvdHlwZS5fc2hvd09iamVjdFBvcG92ZXIpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VIZWxwZXIu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VIZWxw
ZXIucHJvdG90eXBlLl9wYXJzZWRTY3JpcHRTb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvUmF3U291cmNlQ29kZS5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlU2NyaXB0TWFwcGluZy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TY3JpcHQucHJvdG90eXBlLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBlLmNyZWF0ZUxpdmVMb2NhdGlvbik6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRTbmlwcGV0TW9kZWwuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU2NyaXB0U25pcHBldE1vZGVsLnByb3RvdHlwZS5fcmF3TG9jYXRpb25Ub1VJ
TG9jYXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU291cmNlTWFwcGluZy5q
czoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29kZS5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5SYXdMb2NhdGlvbik6CisKIDIwMTItMDUtMjMgIEFsaWNlIEJveGhh
bGwgIDxhYm94aGFsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQVg6IENvbnRlbnRlZGl0YWJs
ZSB0YWJsZXMgc2hvdWxkIGFsd2F5cyBiZSBleHBvc2VkIGFzIGRhdGEgdGFibGVzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2Vy
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdl
ci5qcwppbmRleCBjNDI1NzI3ZmRhMDk4OTE5YzVjYzU4Mjg1YzZhZWIyZDZhM2I5MWQ2Li44NjBh
N2RkYzZlYmRlOTIyMDE4N2Y3N2VlOTliNjY4Mzk4ZDdkOGM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMKQEAg
LTE3NCw3ICsxNzQsNyBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBl
ID0gewogICAgIF9icmVha3BvaW50UmVzb2x2ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAg
ICAgICAgdmFyIGJyZWFrcG9pbnRJZCA9IC8qKiBAdHlwZSB7RGVidWdnZXJBZ2VudC5CcmVha3Bv
aW50SWR9ICovIGV2ZW50LmRhdGEuYnJlYWtwb2ludElkOwotICAgICAgICB2YXIgbG9jYXRpb24g
PSAvKiogQHR5cGUge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259ICovIGV2ZW50LmRhdGEubG9jYXRp
b247CisgICAgICAgIHZhciBsb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJhd0xv
Y2F0aW9ufSAqLyBldmVudC5kYXRhLmxvY2F0aW9uOwogICAgICAgICB2YXIgYnJlYWtwb2ludCA9
IHRoaXMuX2JyZWFrcG9pbnRGb3JEZWJ1Z2dlcklkW2JyZWFrcG9pbnRJZF07CiAgICAgICAgIGlm
ICghYnJlYWtwb2ludCB8fCBicmVha3BvaW50Ll9pc1Byb3Zpc2lvbmFsKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMjcwLDcgKzI3MCw3IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdl
ci5CcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBh
cmFtIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufSBsb2NhdGlvbgorICAgICAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLlJhd0xvY2F0aW9ufSBsb2NhdGlvbgogICAgICAqLwogICAgIF9hZGRSZXNvbHZl
ZExvY2F0aW9uOiBmdW5jdGlvbihsb2NhdGlvbikKICAgICB7CkBAIC0yNzgsNyArMjc4LDcgQEAg
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewog
ICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259
IGxvY2F0aW9uCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmF3TG9jYXRpb259IGxvY2F0
aW9uCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbn0gdWlMb2NhdGlvbgog
ICAgICAqLwogICAgIF9sb2NhdGlvblVwZGF0ZWQ6IGZ1bmN0aW9uKGxvY2F0aW9uLCB1aUxvY2F0
aW9uKQpAQCAtMzYwLDcgKzM2MCw3IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5C
cmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgLyoqCiAgICAgICAgICAqIEB0aGlzIHtX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuQnJlYWtwb2ludH0KICAgICAgICAgICogQHBh
cmFtIHs/RGVidWdnZXJBZ2VudC5CcmVha3BvaW50SWR9IGJyZWFrcG9pbnRJZAotICAgICAgICAg
KiBAcGFyYW0ge0FycmF5LjxEZWJ1Z2dlckFnZW50LkxvY2F0aW9uPn0gbG9jYXRpb25zCisgICAg
ICAgICAqIEBwYXJhbSB7QXJyYXkuPFdlYkluc3BlY3Rvci5SYXdMb2NhdGlvbj59IGxvY2F0aW9u
cwogICAgICAgICAgKi8KICAgICAgICAgZnVuY3Rpb24gZGlkU2V0QnJlYWtwb2ludChicmVha3Bv
aW50SWQsIGxvY2F0aW9ucykKICAgICAgICAgewpAQCAtMzgwLDcgKzM4MCw3IEBAIFdlYkluc3Bl
Y3Rvci5CcmVha3BvaW50TWFuYWdlci5CcmVha3BvaW50LnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICAgICAgdGhpcy5fcmVzZXRMb2NhdGlvbnMoKTsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbG9jYXRpb25zLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHNjcmlw
dCA9IHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2VyLl9kZWJ1Z2dlck1vZGVsLnNjcmlwdEZvcklkKGxv
Y2F0aW9uc1tpXS5zY3JpcHRJZCk7CisgICAgICAgICAgICAgICAgdmFyIHNjcmlwdCA9IHRoaXMu
X2JyZWFrcG9pbnRNYW5hZ2VyLl9kZWJ1Z2dlck1vZGVsLnNjcmlwdEZvcklkKGxvY2F0aW9uc1tp
XS5zb3VyY2VJZCk7CiAgICAgICAgICAgICAgICAgdmFyIHVpTG9jYXRpb24gPSBzY3JpcHQucmF3
TG9jYXRpb25Ub1VJTG9jYXRpb24obG9jYXRpb25zW2ldLmxpbmVOdW1iZXIsIGxvY2F0aW9uc1tp
XS5jb2x1bW5OdW1iZXIpOwogICAgICAgICAgICAgICAgIGlmICh0aGlzLl9icmVha3BvaW50TWFu
YWdlci5maW5kQnJlYWtwb2ludCh1aUxvY2F0aW9uLnVpU291cmNlQ29kZSwgdWlMb2NhdGlvbi5s
aW5lTnVtYmVyKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiBjbGFzaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxlclNjcmlw
dE1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVy
U2NyaXB0TWFwcGluZy5qcwppbmRleCBmNmU5OGQwZGNiMzllNGU4YTFhNDM0NzkzMWExOGJiYzZj
MzIwOWNlLi4wMWNhZTgyZDViMWFiNDFiYWM3Mjk3ODIxNzBmNzU0YmJhMDg4MjA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVyU2NyaXB0TWFw
cGluZy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVy
U2NyaXB0TWFwcGluZy5qcwpAQCAtNDUsMTIgKzQ1LDEyIEBAIFdlYkluc3BlY3Rvci5Db21waWxl
clNjcmlwdE1hcHBpbmcgPSBmdW5jdGlvbigpCiAKIFdlYkluc3BlY3Rvci5Db21waWxlclNjcmlw
dE1hcHBpbmcucHJvdG90eXBlID0gewogICAgIC8qKgotICAgICAqIEBwYXJhbSB7RGVidWdnZXJB
Z2VudC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24KKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5S
YXdMb2NhdGlvbn0gcmF3TG9jYXRpb24KICAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVUlM
b2NhdGlvbn0KICAgICAgKi8KICAgICByYXdMb2NhdGlvblRvVUlMb2NhdGlvbjogZnVuY3Rpb24o
cmF3TG9jYXRpb24pCiAgICAgewotICAgICAgICB2YXIgc291cmNlTWFwID0gdGhpcy5fc291cmNl
TWFwRm9yU2NyaXB0SWRbcmF3TG9jYXRpb24uc2NyaXB0SWRdOworICAgICAgICB2YXIgc291cmNl
TWFwID0gdGhpcy5fc291cmNlTWFwRm9yU2NyaXB0SWRbcmF3TG9jYXRpb24uc291cmNlSWRdOwog
ICAgICAgICB2YXIgZW50cnkgPSBzb3VyY2VNYXAuZmluZEVudHJ5KHJhd0xvY2F0aW9uLmxpbmVO
dW1iZXIsIHJhd0xvY2F0aW9uLmNvbHVtbk51bWJlciB8fCAwKTsKICAgICAgICAgcmV0dXJuIG5l
dyBXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbih0aGlzLl91aVNvdXJjZUNvZGVCeVVSTFtlbnRyeVsy
XV0sIGVudHJ5WzNdLCBlbnRyeVs0XSk7CiAgICAgfSwKQEAgLTU5LDcgKzU5LDcgQEAgV2ViSW5z
cGVjdG9yLkNvbXBpbGVyU2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKICAgICAgKiBAcGFyYW0g
e251bWJlcn0gbGluZU51bWJlcgogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2x1bW5OdW1iZXIK
LSAgICAgKiBAcmV0dXJuIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufQorICAgICAqIEByZXR1cm4g
e1dlYkluc3BlY3Rvci5SYXdMb2NhdGlvbn0KICAgICAgKi8KICAgICB1aUxvY2F0aW9uVG9SYXdM
b2NhdGlvbjogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIp
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
ZWJ1Z2dlck1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1
Z2dlck1vZGVsLmpzCmluZGV4IGMwM2I4OWE3OWU5OWVhNjI0ZjgwZTVjNWY3YTI1MTRjODI5MjIw
NDAuLmRkNDBjODc2YWY5NDQ1YzhlNjM1ZDkwNDEyMzliY2VlZmJmYjAzNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJNb2RlbC5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMKQEAg
LTUwLDE3ICs1MCwzNSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbCA9IGZ1bmN0aW9uKCkK
IC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7RGVidWdnZXJBZ2VudC5Mb2NhdGlv
bn0KLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gc2NyaXB0CisgKiBAcGFyYW0ge3N0
cmluZ30gc2NyaXB0SWQKICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCi0gKiBAcGFyYW0g
e251bWJlcn0gY29sdW1uTnVtYmVyCisgKiBAcGFyYW0ge251bWJlcj19IGNvbHVtbk51bWJlcgog
ICovCi1XZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbiA9IGZ1bmN0aW9uKHNjcmlw
dCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQorV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwu
TG9jYXRpb24gPSBmdW5jdGlvbihzY3JpcHRJZCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQog
ewotICAgIHRoaXMuc2NyaXB0SWQgPSBzY3JpcHQuc2NyaXB0SWQ7CisgICAgdGhpcy5zY3JpcHRJ
ZCA9IHNjcmlwdElkOwogICAgIHRoaXMubGluZU51bWJlciA9IGxpbmVOdW1iZXI7CiAgICAgdGhp
cy5jb2x1bW5OdW1iZXIgPSBjb2x1bW5OdW1iZXI7CiB9CiAKKy8qKgorICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuUmF3TG9jYXRpb259IHJhd0xvY2F0aW9uCisgKiBAcmV0dXJuIHtEZWJ1Z2dlckFn
ZW50LkxvY2F0aW9ufQorICovCitXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5kZWJ1Z2dlckxv
Y2F0aW9uRm9yUmF3TG9jYXRpb24gPSBmdW5jdGlvbihyYXdMb2NhdGlvbikKK3sKKyAgICByZXR1
cm4gbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9uKHJhd0xvY2F0aW9uLnNv
dXJjZUlkLCByYXdMb2NhdGlvbi5saW5lTnVtYmVyLCByYXdMb2NhdGlvbi5jb2x1bW5OdW1iZXIp
OworfQorCisvKioKKyAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gZGVidWdnZXJM
b2NhdGlvbgorICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlJhd0xvY2F0aW9ufQorICovCitXZWJJ
bnNwZWN0b3IuRGVidWdnZXJNb2RlbC5yYXdMb2NhdGlvbkZvckRlYnVnZ2VyTG9jYXRpb24gPSBm
dW5jdGlvbihkZWJ1Z2dlckxvY2F0aW9uKQoreworICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9y
LlJhd0xvY2F0aW9uKGRlYnVnZ2VyTG9jYXRpb24uc2NyaXB0SWQsIGRlYnVnZ2VyTG9jYXRpb24u
bGluZU51bWJlciwgZGVidWdnZXJMb2NhdGlvbi5jb2x1bW5OdW1iZXIpOworfQorCiBXZWJJbnNw
ZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMgPSB7CiAgICAgRGVidWdnZXJXYXNFbmFibGVkOiAi
RGVidWdnZXJXYXNFbmFibGVkIiwKICAgICBEZWJ1Z2dlcldhc0Rpc2FibGVkOiAiRGVidWdnZXJX
YXNEaXNhYmxlZCIsCkBAIC0xMTgsMjEgKzEzNiwyMiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJN
b2RlbC5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7RGVi
dWdnZXJBZ2VudC5Mb2NhdGlvbn0gbG9jYXRpb24KKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5SYXdMb2NhdGlvbn0gcmF3TG9jYXRpb24KICAgICAgKi8KLSAgICBjb250aW51ZVRvTG9jYXRp
b246IGZ1bmN0aW9uKGxvY2F0aW9uKQorICAgIGNvbnRpbnVlVG9Mb2NhdGlvbjogZnVuY3Rpb24o
cmF3TG9jYXRpb24pCiAgICAgewotICAgICAgICBEZWJ1Z2dlckFnZW50LmNvbnRpbnVlVG9Mb2Nh
dGlvbihsb2NhdGlvbik7CisgICAgICAgIHZhciBkZWJ1Z2dlckxvY2F0aW9uID0gV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyTW9kZWwuZGVidWdnZXJMb2NhdGlvbkZvclJhd0xvY2F0aW9uKHJhd0xvY2F0
aW9uKTsKKyAgICAgICAgRGVidWdnZXJBZ2VudC5jb250aW51ZVRvTG9jYXRpb24oZGVidWdnZXJM
b2NhdGlvbik7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2Vu
dC5Mb2NhdGlvbn0gbG9jYXRpb24KKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SYXdMb2Nh
dGlvbn0gbG9jYXRpb24KICAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29uZGl0aW9uCi0gICAgICog
QHBhcmFtIHtmdW5jdGlvbig/RGVidWdnZXJBZ2VudC5CcmVha3BvaW50SWQsIEFycmF5LjxEZWJ1
Z2dlckFnZW50LkxvY2F0aW9uPik6dm9pZD19IGNhbGxiYWNrCisgICAgICogQHBhcmFtIHtmdW5j
dGlvbig/RGVidWdnZXJBZ2VudC5CcmVha3BvaW50SWQsIEFycmF5LjxXZWJJbnNwZWN0b3IuUmF3
TG9jYXRpb24+KTp2b2lkPX0gY2FsbGJhY2sKICAgICAgKi8KICAgICBzZXRCcmVha3BvaW50QnlT
Y3JpcHRMb2NhdGlvbjogZnVuY3Rpb24obG9jYXRpb24sIGNvbmRpdGlvbiwgY2FsbGJhY2spCiAg
ICAgewotICAgICAgICB2YXIgc2NyaXB0ID0gdGhpcy5zY3JpcHRGb3JJZChsb2NhdGlvbi5zY3Jp
cHRJZCk7CisgICAgICAgIHZhciBzY3JpcHQgPSB0aGlzLnNjcmlwdEZvcklkKGxvY2F0aW9uLnNv
dXJjZUlkKTsKICAgICAgICAgaWYgKHNjcmlwdC5zb3VyY2VVUkwpCiAgICAgICAgICAgICB0aGlz
LnNldEJyZWFrcG9pbnQoc2NyaXB0LnNvdXJjZVVSTCwgbG9jYXRpb24ubGluZU51bWJlciwgbG9j
YXRpb24uY29sdW1uTnVtYmVyLCBjb25kaXRpb24sIGNhbGxiYWNrKTsKICAgICAgICAgZWxzZQpA
QCAtMTQ0LDcgKzE2Myw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZSA9
IHsKICAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJlcgogICAgICAqIEBwYXJhbSB7bnVt
YmVyPX0gY29sdW1uTnVtYmVyCiAgICAgICogQHBhcmFtIHtzdHJpbmc9fSBjb25kaXRpb24KLSAg
ICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9EZWJ1Z2dlckFnZW50LkJyZWFrcG9pbnRJZCwgQXJyYXku
PERlYnVnZ2VyQWdlbnQuTG9jYXRpb24+KT19IGNhbGxiYWNrCisgICAgICogQHBhcmFtIHtmdW5j
dGlvbig/RGVidWdnZXJBZ2VudC5CcmVha3BvaW50SWQsIEFycmF5LjxXZWJJbnNwZWN0b3IuUmF3
TG9jYXRpb24+KT19IGNhbGxiYWNrCiAgICAgICovCiAgICAgc2V0QnJlYWtwb2ludDogZnVuY3Rp
b24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgY2FsbGJhY2spCiAg
ICAgewpAQCAtMTY2LDE5ICsxODUsMjEgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJv
dG90eXBlID0gewogICAgICAgICAgKi8KICAgICAgICAgZnVuY3Rpb24gZGlkU2V0QnJlYWtwb2lu
dChlcnJvciwgYnJlYWtwb2ludElkLCBsb2NhdGlvbnMpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGlmIChjYWxsYmFjaykKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvciA/IG51bGwgOiBi
cmVha3BvaW50SWQsIGxvY2F0aW9ucyk7CisgICAgICAgICAgICBpZiAoY2FsbGJhY2spIHsKKyAg
ICAgICAgICAgICAgICB2YXIgcmF3TG9jYXRpb25zID0gbG9jYXRpb25zID8gbG9jYXRpb25zLm1h
cChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5yYXdMb2NhdGlvbkZvckRlYnVnZ2VyTG9jYXRp
b24pIDogW107CisgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IgPyBudWxsIDogYnJlYWtw
b2ludElkLCByYXdMb2NhdGlvbnMpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IERlYnVnZ2VyQWdlbnQuc2V0QnJlYWtwb2ludEJ5VXJsKGxpbmVOdW1iZXIsIHVybCwgdW5kZWZp
bmVkLCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgZGlkU2V0QnJlYWtwb2ludC5iaW5kKHRoaXMp
KTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnVzZXJNZXRyaWNzLlNjcmlwdHNCcmVha3BvaW50U2V0
LnJlY29yZCgpOwogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge0RlYnVnZ2VyQWdl
bnQuTG9jYXRpb259IGxvY2F0aW9uCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmF3TG9j
YXRpb259IHJhd0xvY2F0aW9uCiAgICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbmRpdGlvbgotICAg
ICAqIEBwYXJhbSB7ZnVuY3Rpb24oP0RlYnVnZ2VyQWdlbnQuQnJlYWtwb2ludElkLCBBcnJheS48
RGVidWdnZXJBZ2VudC5Mb2NhdGlvbj4pPX0gY2FsbGJhY2sKKyAgICAgKiBAcGFyYW0ge2Z1bmN0
aW9uKD9EZWJ1Z2dlckFnZW50LkJyZWFrcG9pbnRJZCwgQXJyYXkuPFdlYkluc3BlY3Rvci5SYXdM
b2NhdGlvbj4pPX0gY2FsbGJhY2sKICAgICAgKi8KLSAgICBzZXRCcmVha3BvaW50QnlTb3VyY2VJ
ZDogZnVuY3Rpb24obG9jYXRpb24sIGNvbmRpdGlvbiwgY2FsbGJhY2spCisgICAgc2V0QnJlYWtw
b2ludEJ5U291cmNlSWQ6IGZ1bmN0aW9uKHJhd0xvY2F0aW9uLCBjb25kaXRpb24sIGNhbGxiYWNr
KQogICAgIHsKICAgICAgICAgLyoqCiAgICAgICAgICAqIEB0aGlzIHtXZWJJbnNwZWN0b3IuRGVi
dWdnZXJNb2RlbH0KQEAgLTE4OCwxMCArMjA5LDEzIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1v
ZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICovCiAgICAgICAgIGZ1bmN0aW9uIGRpZFNldEJy
ZWFrcG9pbnQoZXJyb3IsIGJyZWFrcG9pbnRJZCwgYWN0dWFsTG9jYXRpb24pCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGlmIChjYWxsYmFjaykKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJv
ciA/IG51bGwgOiBicmVha3BvaW50SWQsIFthY3R1YWxMb2NhdGlvbl0pOworICAgICAgICAgICAg
aWYgKGNhbGxiYWNrKSB7CisgICAgICAgICAgICAgICAgdmFyIHJhd0xvY2F0aW9uID0gV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyTW9kZWwucmF3TG9jYXRpb25Gb3JEZWJ1Z2dlckxvY2F0aW9uKGFjdHVh
bExvY2F0aW9uKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvciA/IG51bGwgOiBicmVh
a3BvaW50SWQsIFtyYXdMb2NhdGlvbl0pOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAg
ICAgIERlYnVnZ2VyQWdlbnQuc2V0QnJlYWtwb2ludChsb2NhdGlvbiwgY29uZGl0aW9uLCBkaWRT
ZXRCcmVha3BvaW50LmJpbmQodGhpcykpOworICAgICAgICB2YXIgZGVidWdnZXJMb2NhdGlvbiA9
IFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLmRlYnVnZ2VyTG9jYXRpb25Gb3JSYXdMb2NhdGlv
bihyYXdMb2NhdGlvbik7CisgICAgICAgIERlYnVnZ2VyQWdlbnQuc2V0QnJlYWtwb2ludChkZWJ1
Z2dlckxvY2F0aW9uLCBjb25kaXRpb24sIGRpZFNldEJyZWFrcG9pbnQuYmluZCh0aGlzKSk7CiAg
ICAgICAgIFdlYkluc3BlY3Rvci51c2VyTWV0cmljcy5TY3JpcHRzQnJlYWtwb2ludFNldC5yZWNv
cmQoKTsKICAgICB9LAogCkBAIC0yMTAsNyArMjM0LDggQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
TW9kZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9icmVha3BvaW50UmVzb2x2ZWQ6IGZ1
bmN0aW9uKGJyZWFrcG9pbnRJZCwgbG9jYXRpb24pCiAgICAgewotICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuQnJl
YWtwb2ludFJlc29sdmVkLCB7YnJlYWtwb2ludElkOiBicmVha3BvaW50SWQsIGxvY2F0aW9uOiBs
b2NhdGlvbn0pOworICAgICAgICB2YXIgcmF3TG9jYXRpb24gPSBXZWJJbnNwZWN0b3IuRGVidWdn
ZXJNb2RlbC5yYXdMb2NhdGlvbkZvckRlYnVnZ2VyTG9jYXRpb24obG9jYXRpb24pOworICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2Rl
bC5FdmVudHMuQnJlYWtwb2ludFJlc29sdmVkLCB7YnJlYWtwb2ludElkOiBicmVha3BvaW50SWQs
IGxvY2F0aW9uOiByYXdMb2NhdGlvbn0pOwogICAgIH0sCiAKICAgICBfZ2xvYmFsT2JqZWN0Q2xl
YXJlZDogZnVuY3Rpb24oKQpAQCAtMzY3LDIwICszOTIsMjAgQEAgV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTW9kZWwucHJvdG90eXBlID0gewogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlw
dH0gc2NyaXB0CiAgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKICAgICAgKiBAcGFy
YW0ge251bWJlcn0gY29sdW1uTnVtYmVyCi0gICAgICogQHJldHVybiB7RGVidWdnZXJBZ2VudC5M
b2NhdGlvbn0KKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUmF3TG9jYXRpb259CiAgICAg
ICovCiAgICAgY3JlYXRlUmF3TG9jYXRpb246IGZ1bmN0aW9uKHNjcmlwdCwgbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyKQogICAgIHsKICAgICAgICAgaWYgKHNjcmlwdC5zb3VyY2VVUkwpCiAgICAg
ICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVSYXdMb2NhdGlvbkJ5VVJMKHNjcmlwdC5zb3VyY2VV
UkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKLSAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNw
ZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbihzY3JpcHQsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcik7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJhd0xvY2F0aW9uKHNjcmlw
dC5zY3JpcHRJZCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKICAgICB9LAogCiAgICAgLyoq
CiAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZVVSTAogICAgICAqIEBwYXJhbSB7bnVtYmVy
fSBsaW5lTnVtYmVyCiAgICAgICogQHBhcmFtIHtudW1iZXJ9IGNvbHVtbk51bWJlcgotICAgICAq
IEByZXR1cm4ge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259CisgICAgICogQHJldHVybiB7V2ViSW5z
cGVjdG9yLlJhd0xvY2F0aW9ufQogICAgICAqLwogICAgIGNyZWF0ZVJhd0xvY2F0aW9uQnlVUkw6
IGZ1bmN0aW9uKHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsKQEAg
LTM5Nyw3ICs0MjIsNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICBjbG9zZXN0U2NyaXB0ID0gc2NyaXB0OwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGNsb3Nlc3RTY3JpcHQgPyBuZXcgV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb24oY2xvc2VzdFNjcmlwdCwgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyKSA6IG51bGw7CisgICAgICAgIHJldHVybiBjbG9zZXN0U2NyaXB0ID8gbmV3IFdl
Ykluc3BlY3Rvci5SYXdMb2NhdGlvbihjbG9zZXN0U2NyaXB0LnNjcmlwdElkLCBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIpIDogbnVsbDsKICAgICB9LAogCiAgICAgLyoqCkBAIC00MjcsNyArNDUy
LDcgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICB7
CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
RGVidWdnZXJNb2RlbC5FdmVudHMuRXhlY3V0aW9uTGluZUNoYW5nZWQsIHVpTG9jYXRpb24pOwog
ICAgICAgICB9Ci0gICAgICAgIHRoaXMuX2V4ZWN1dGlvbkxpbmVMaXZlTG9jYXRpb24gPSBjYWxs
RnJhbWUuc2NyaXB0LmNyZWF0ZUxpdmVMb2NhdGlvbihjYWxsRnJhbWUuX3BheWxvYWQubG9jYXRp
b24sIHVwZGF0ZUV4ZWN1dGlvbkxpbmUuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2V4ZWN1
dGlvbkxpbmVMaXZlTG9jYXRpb24gPSBjYWxsRnJhbWUuc2NyaXB0LmNyZWF0ZUxpdmVMb2NhdGlv
bihjYWxsRnJhbWUubG9jYXRpb24sIHVwZGF0ZUV4ZWN1dGlvbkxpbmUuYmluZCh0aGlzKSk7CiAg
ICAgfSwKIAogICAgIC8qKgpAQCAtNTE2LDIzICs1NDEsMjMgQEAgV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTW9kZWwucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0g
e0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259IGxvY2F0aW9uCisgICAgICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuUmF3TG9jYXRpb259IGxvY2F0aW9uCiAgICAgICogQHBhcmFtIHtmdW5jdGlvbihXZWJJ
bnNwZWN0b3IuVUlMb2NhdGlvbik6KGJvb2xlYW58dW5kZWZpbmVkKX0gdXBkYXRlRGVsZWdhdGUK
ICAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuU2NyaXB0LkxvY2F0aW9ufQogICAgICAqLwog
ICAgIGNyZWF0ZUxpdmVMb2NhdGlvbjogZnVuY3Rpb24obG9jYXRpb24sIHVwZGF0ZURlbGVnYXRl
KQogICAgIHsKLSAgICAgICAgdmFyIHNjcmlwdCA9IHRoaXMuX3NjcmlwdHNbbG9jYXRpb24uc2Ny
aXB0SWRdOworICAgICAgICB2YXIgc2NyaXB0ID0gdGhpcy5fc2NyaXB0c1tsb2NhdGlvbi5zb3Vy
Y2VJZF07CiAgICAgICAgIHJldHVybiBzY3JpcHQuY3JlYXRlTGl2ZUxvY2F0aW9uKGxvY2F0aW9u
LCB1cGRhdGVEZWxlZ2F0ZSk7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7RGVi
dWdnZXJBZ2VudC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24KKyAgICAgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5SYXdMb2NhdGlvbn0gcmF3TG9jYXRpb24KICAgICAgKiBAcmV0dXJuIHs/V2ViSW5zcGVj
dG9yLlVJTG9jYXRpb259CiAgICAgICovCiAgICAgcmF3TG9jYXRpb25Ub1VJTG9jYXRpb246IGZ1
bmN0aW9uKHJhd0xvY2F0aW9uKQogICAgIHsKLSAgICAgICAgdmFyIHNjcmlwdCA9IHRoaXMuX3Nj
cmlwdHNbcmF3TG9jYXRpb24uc2NyaXB0SWRdOworICAgICAgICB2YXIgc2NyaXB0ID0gdGhpcy5f
c2NyaXB0c1tyYXdMb2NhdGlvbi5zb3VyY2VJZF07CiAgICAgICAgIGlmICghc2NyaXB0KQogICAg
ICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIHJldHVybiBzY3JpcHQucmF3TG9jYXRpb25U
b1VJTG9jYXRpb24ocmF3TG9jYXRpb24ubGluZU51bWJlciwgcmF3TG9jYXRpb24uY29sdW1uTnVt
YmVyKTsKQEAgLTY2OCwxMSArNjkzLDEyIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkNh
bGxGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEByZXR1cm4g
e0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259CisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlJh
d0xvY2F0aW9ufQogICAgICAqLwogICAgIGdldCBsb2NhdGlvbigpCiAgICAgewotICAgICAgICBy
ZXR1cm4gdGhpcy5fcGF5bG9hZC5sb2NhdGlvbjsKKyAgICAgICAgdmFyIHJhd0xvY2F0aW9uID0g
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucmF3TG9jYXRpb25Gb3JEZWJ1Z2dlckxvY2F0aW9u
KHRoaXMuX3BheWxvYWQubG9jYXRpb24pOworICAgICAgICByZXR1cm4gcmF3TG9jYXRpb247CiAg
ICAgfSwKIAogICAgIC8qKgpAQCAtNzA4LDcgKzczNCw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dl
ck1vZGVsLkNhbGxGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgY3JlYXRlTGl2ZUxv
Y2F0aW9uOiBmdW5jdGlvbih1cGRhdGVEZWxlZ2F0ZSkKICAgICB7Ci0gICAgICAgIHZhciBsb2Nh
dGlvbiA9IHRoaXMuX3NjcmlwdC5jcmVhdGVMaXZlTG9jYXRpb24odGhpcy5fcGF5bG9hZC5sb2Nh
dGlvbiwgdXBkYXRlRGVsZWdhdGUpOworICAgICAgICB2YXIgbG9jYXRpb24gPSB0aGlzLl9zY3Jp
cHQuY3JlYXRlTGl2ZUxvY2F0aW9uKHRoaXMubG9jYXRpb24sIHVwZGF0ZURlbGVnYXRlKTsKICAg
ICAgICAgdGhpcy5fbG9jYXRpb25zLnB1c2gobG9jYXRpb24pOwogICAgICAgICByZXR1cm4gbG9j
YXRpb247CiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRGVidWdnZXJSZXNvdXJjZUJpbmRpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUmVzb3VyY2VCaW5kaW5nLmpzCmluZGV4IDRkNmY1NzExZTY5
NDE3ZjIyMDZmMTEwZDJmNDAzYzg0ZTFlYTQ1YjkuLjZjNmQzYWE4ODBiMTk5OTY4MGRmOTc5YjEy
Y2M3NTFmNmUzYjlhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRGVidWdnZXJSZXNvdXJjZUJpbmRpbmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclJlc291cmNlQmluZGluZy5qcwpAQCAtNDcsNyArNDcs
NyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJSZXNvdXJjZUJpbmRpbmcgPSBmdW5jdGlvbih1aVNv
dXJjZUNvZGVQcm92aWRlcikKIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclJlc291cmNlQmluZGluZy5z
ZXRTY3JpcHRTb3VyY2UgPSBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIG5ld1NvdXJjZSwgY2FsbGJh
Y2spCiB7CiAgICAgdmFyIHJhd0xvY2F0aW9uID0gdWlTb3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jh
d0xvY2F0aW9uKDAsIDApOwotICAgIHZhciBzY3JpcHQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJN
b2RlbC5zY3JpcHRGb3JJZChyYXdMb2NhdGlvbi5zY3JpcHRJZCk7CisgICAgdmFyIHNjcmlwdCA9
IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdEZvcklkKHJhd0xvY2F0aW9uLnNvdXJj
ZUlkKTsKIAogICAgIC8qKgogICAgICAqIEB0aGlzIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJSZXNv
dXJjZUJpbmRpbmd9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0phdmFTY3JpcHRTb3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0phdmFTY3JpcHRTb3VyY2UuanMKaW5kZXggZjI5NDNhYmY4MGViM2RiZjM3ZjAzMWI2N2Ew
M2I3ZGQyOTE4YTZiNC4uNWM2N2MzMTNjMmM3YjkxM2ZlYjJkYzgzM2E2NGFhNjM0YmRmMTlkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0
U291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNj
cmlwdFNvdXJjZS5qcwpAQCAtMTQyLDcgKzE0Miw3IEBAIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0
U291cmNlLnByb3RvdHlwZSA9IHsKICAgICAvKioKICAgICAgKiBAcGFyYW0ge251bWJlcn0gbGlu
ZU51bWJlcgogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2x1bW5OdW1iZXIKLSAgICAgKiBAcmV0
dXJuIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufQorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rv
ci5SYXdMb2NhdGlvbn0KICAgICAgKi8KICAgICB1aUxvY2F0aW9uVG9SYXdMb2NhdGlvbjogZnVu
Y3Rpb24obGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTGlua2lmaWVyLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9MaW5raWZpZXIuanMKaW5kZXggMzY1MjY2OTM5Y2YxYzY2
YzUwN2M3NzM5MTQxYjdkODVlNWExYWFhNy4uMTQ2NTE1MWY1ODg1NDc1N2MyNGFlMjk0Y2RhOTc4
ZjM3OTE2ZjliNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9MaW5raWZpZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9M
aW5raWZpZXIuanMKQEAgLTY5LDEyICs2OSwxMiBAQCBXZWJJbnNwZWN0b3IuTGlua2lmaWVyLnBy
b3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtEZWJ1Z2dlckFn
ZW50LkxvY2F0aW9ufSByYXdMb2NhdGlvbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJh
d0xvY2F0aW9ufSByYXdMb2NhdGlvbgogICAgICAqIEBwYXJhbSB7c3RyaW5nPX0gY2xhc3Nlcwog
ICAgICAqLwogICAgIGxpbmtpZnlSYXdMb2NhdGlvbjogZnVuY3Rpb24ocmF3TG9jYXRpb24sIGNs
YXNzZXMpCiAgICAgewotICAgICAgICB2YXIgc2NyaXB0ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
TW9kZWwuc2NyaXB0Rm9ySWQocmF3TG9jYXRpb24uc2NyaXB0SWQpOworICAgICAgICB2YXIgc2Ny
aXB0ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2NyaXB0Rm9ySWQocmF3TG9jYXRpb24u
c291cmNlSWQpOwogICAgICAgICBpZiAoIXNjcmlwdCkKICAgICAgICAgICAgIHJldHVybiBudWxs
OwogICAgICAgICB2YXIgYW5jaG9yID0gV2ViSW5zcGVjdG9yLmxpbmtpZnlVUkxBc05vZGUoIiIs
ICIiLCBjbGFzc2VzLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL09iamVjdFBvcG92ZXJIZWxwZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL09iamVjdFBvcG92ZXJIZWxwZXIuanMKaW5kZXggNjFlOGU2MTllZjQ3
YmVkYzg1ZTQ5MzY0MGJkNDA1NmViY2FmNmE3MS4uYjQ2ZGExNTgzYTc2OGNhNGYwMmY3OWI5OGI0
ZWI5NWQ5NjFkZjEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9PYmplY3RQb3BvdmVySGVscGVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvT2JqZWN0UG9wb3ZlckhlbHBlci5qcwpAQCAtOTAsNyArOTAsOCBAQCBXZWJJ
bnNwZWN0b3IuT2JqZWN0UG9wb3ZlckhlbHBlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBmdW5jdGlvbk5hbWUudGV4dENvbnRlbnQgPSByZXNwb25zZS5uYW1lIHx8IHJl
c3BvbnNlLmluZmVycmVkTmFtZSB8fCByZXNwb25zZS5kaXNwbGF5TmFtZSB8fCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIihhbm9ueW1vdXMgZnVuY3Rpb24pIik7CiAKICAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMuX2xpbmtpZmllciA9IG5ldyBXZWJJbnNwZWN0b3IuTGlua2lmaWVyKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGluayA9IHRoaXMuX2xpbmtpZmllci5saW5raWZ5
UmF3TG9jYXRpb24ocmVzcG9uc2UubG9jYXRpb24sICJmdW5jdGlvbi1sb2NhdGlvbi1saW5rIik7
CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmF3TG9jYXRpb24gPSBXZWJJbnNwZWN0b3Iu
RGVidWdnZXJNb2RlbC5yYXdMb2NhdGlvbkZvckRlYnVnZ2VyTG9jYXRpb24ocmVzcG9uc2UubG9j
YXRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxpbmsgPSB0aGlzLl9saW5raWZp
ZXIubGlua2lmeVJhd0xvY2F0aW9uKHJhd0xvY2F0aW9uLCAiZnVuY3Rpb24tbG9jYXRpb24tbGlu
ayIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmspCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGl0bGUuYXBwZW5kQ2hpbGQobGluayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VI
ZWxwZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1ByZXNlbnRhdGlv
bkNvbnNvbGVNZXNzYWdlSGVscGVyLmpzCmluZGV4IGZlNDgwZTIwZWZlNGVmNTc0NzRlMjExMWEw
ZjhlZWMwMTkwZWFhNWQuLjdmNDM0ZTZmMjFmOWRkMDEwMmU4YzM3YWRmNTgyNTc1ZmYxYWRhNzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJlc2VudGF0
aW9uQ29uc29sZU1lc3NhZ2VIZWxwZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9QcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZUhlbHBlci5qcwpAQCAtNjUsNyAr
NjUsNyBAQCBXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VIZWxwZXIucHJv
dG90eXBlID0gewogCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ29uc29s
ZU1lc3NhZ2V9IG1lc3NhZ2UKLSAgICAgKiBAcGFyYW0ge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259
IHJhd0xvY2F0aW9uCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmF3TG9jYXRpb259IHJh
d0xvY2F0aW9uCiAgICAgICovCiAgICAgX2FkZENvbnNvbGVNZXNzYWdlVG9TY3JpcHQ6IGZ1bmN0
aW9uKG1lc3NhZ2UsIHJhd0xvY2F0aW9uKQogICAgIHsKQEAgLTk3LDcgKzk3LDcgQEAgV2ViSW5z
cGVjdG9yLlByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlSGVscGVyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXNzYWdlcy5sZW5ndGg7IGkrKykgewogICAgICAg
ICAgICAgdmFyIG1lc3NhZ2UgPSBtZXNzYWdlc1tpXTsKICAgICAgICAgICAgIHZhciByYXdMb2Nh
dGlvbiA9IG1lc3NhZ2UubG9jYXRpb24oKTsKLSAgICAgICAgICAgIGlmIChzY3JpcHQuc2NyaXB0
SWQgPT09IHJhd0xvY2F0aW9uLnNjcmlwdElkKQorICAgICAgICAgICAgaWYgKHNjcmlwdC5zY3Jp
cHRJZCA9PT0gcmF3TG9jYXRpb24uc291cmNlSWQpCiAgICAgICAgICAgICAgICAgdGhpcy5fYWRk
Q29uc29sZU1lc3NhZ2VUb1NjcmlwdChtZXNzYWdlcywgcmF3TG9jYXRpb24pOwogICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgIHBlbmRpbmdNZXNzYWdlcy5wdXNoKG1lc3NhZ2UpOwpA
QCAtMTMwLDcgKzEzMCw3IEBAIFdlYkluc3BlY3Rvci5QcmVzZW50YXRpb25Db25zb2xlTWVzc2Fn
ZUhlbHBlci5wcm90b3R5cGUgPSB7CiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2V9IG1lc3NhZ2UKLSAqIEBwYXJhbSB7RGVidWdnZXJB
Z2VudC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJhd0xv
Y2F0aW9ufSByYXdMb2NhdGlvbgogICovCiBXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ29uc29s
ZU1lc3NhZ2UgPSBmdW5jdGlvbihtZXNzYWdlLCByYXdMb2NhdGlvbikKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmF3U291cmNlQ29kZS5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmF3U291cmNlQ29kZS5qcwppbmRleCA3
YmExZDZlZjJjMGVlNDJkMzhhY2Q5MzU4YTE3NGYwNzk5ODIwYmQ5Li4wOTRlOWU4ZTYxODY1ZmZm
NGIxYjdiMjQ0ZjdiMjJlY2MyMTI2NzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jhd1NvdXJjZUNvZGUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9SYXdTb3VyY2VDb2RlLmpzCkBAIC03Niw3ICs3Niw3IEBAIFdlYklu
c3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0g
ICAgICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufSByYXdMb2NhdGlvbgorICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJhd0xvY2F0aW9ufSByYXdMb2NhdGlvbgogICAgICAqIEBy
ZXR1cm4ge1dlYkluc3BlY3Rvci5VSUxvY2F0aW9ufQogICAgICAqLwogICAgIHJhd0xvY2F0aW9u
VG9VSUxvY2F0aW9uOiBmdW5jdGlvbihyYXdMb2NhdGlvbikKQEAgLTExNCw3ICsxMTQsNyBAQCBX
ZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUgPSB7CiAgICAgICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKICAgICAgKiBAcGFyYW0ge251
bWJlcn0gbGluZU51bWJlcgogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2x1bW5OdW1iZXIKLSAg
ICAgKiBAcmV0dXJuIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufQorICAgICAqIEByZXR1cm4ge1dl
Ykluc3BlY3Rvci5SYXdMb2NhdGlvbn0KICAgICAgKi8KICAgICB1aUxvY2F0aW9uVG9SYXdMb2Nh
dGlvbjogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZVNjcmlwdE1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlU2NyaXB0TWFwcGluZy5qcwppbmRleCA5NWRlYmFhZTNhNzBhODM0YWZlNGJiZGQ4
MDJlOWFkNmEzZmQyMjlmLi4yN2E1YTdmY2QwYjA0YzNkY2U2YWQyOWE2MjJhMTA2NjQzNDQ3NjQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNl
U2NyaXB0TWFwcGluZy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlU2NyaXB0TWFwcGluZy5qcwpAQCAtNDUsMTIgKzQ1LDEyIEBAIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcgPSBmdW5jdGlvbigpCiAKIFdlYkluc3BlY3Rvci5SZXNv
dXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlID0gewogICAgIC8qKgotICAgICAqIEBwYXJhbSB7
RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24KKyAgICAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5SYXdMb2NhdGlvbn0gcmF3TG9jYXRpb24KICAgICAgKiBAcmV0dXJuIHtXZWJJbnNw
ZWN0b3IuVUlMb2NhdGlvbn0KICAgICAgKi8KICAgICByYXdMb2NhdGlvblRvVUlMb2NhdGlvbjog
ZnVuY3Rpb24ocmF3TG9jYXRpb24pCiAgICAgewotICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9
IHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JTY3JpcHRJZFtyYXdMb2NhdGlvbi5zY3JpcHRJZF07Cisg
ICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gdGhpcy5fcmF3U291cmNlQ29kZUZvclNjcmlwdElk
W3Jhd0xvY2F0aW9uLnNvdXJjZUlkXTsKICAgICAgICAgcmV0dXJuIHJhd1NvdXJjZUNvZGUucmF3
TG9jYXRpb25Ub1VJTG9jYXRpb24ocmF3TG9jYXRpb24pOwogICAgIH0sCiAKQEAgLTU4LDcgKzU4
LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7CiAg
ICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKICAg
ICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJlcgogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBj
b2x1bW5OdW1iZXIKLSAgICAgKiBAcmV0dXJuIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufQorICAg
ICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5SYXdMb2NhdGlvbn0KICAgICAgKi8KICAgICB1aUxv
Y2F0aW9uVG9SYXdMb2NhdGlvbjogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TY3JpcHQuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NjcmlwdC5qcwppbmRleCA0MzcyMDA0M2MyMzYzNDY1MTZiMGMzMzcwMzM3NTU5YmQ5OTlkZjM5
Li4wNGE5Zjc2MDk2NmEwZGQ3MTgwODRlNmNjMmNmNjIyM2VhZmEzNzA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcwpAQCAtMTczLDcgKzE3Myw3IEBA
IFdlYkluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBlID0gewogICAgICAqLwogICAgIHJhd0xvY2F0
aW9uVG9VSUxvY2F0aW9uOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAg
ewotICAgICAgICB2YXIgdWlMb2NhdGlvbiA9IHRoaXMuX3NvdXJjZU1hcHBpbmcucmF3TG9jYXRp
b25Ub1VJTG9jYXRpb24obmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9uKHRo
aXMsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciB8fCAwKSk7CisgICAgICAgIHZhciB1aUxvY2F0
aW9uID0gdGhpcy5fc291cmNlTWFwcGluZy5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihuZXcgV2Vi
SW5zcGVjdG9yLlJhd0xvY2F0aW9uKHRoaXMuc2NyaXB0SWQsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciB8fCAwKSk7CiAgICAgICAgIHJldHVybiB1aUxvY2F0aW9uLnVpU291cmNlQ29kZS5vdmVy
cmlkZUxvY2F0aW9uKHVpTG9jYXRpb24pOwogICAgIH0sCiAKQEAgLTE4OCwxMyArMTg4LDEzIEBA
IFdlYkluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKLSAg
ICAgKiBAcGFyYW0ge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259IHJhd0xvY2F0aW9uCisgICAgICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuUmF3TG9jYXRpb259IHJhd0xvY2F0aW9uCiAgICAgICogQHBh
cmFtIHtmdW5jdGlvbihXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbik6KGJvb2xlYW58dW5kZWZpbmVk
KX0gdXBkYXRlRGVsZWdhdGUKICAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuU2NyaXB0Lkxv
Y2F0aW9ufQogICAgICAqLwogICAgIGNyZWF0ZUxpdmVMb2NhdGlvbjogZnVuY3Rpb24ocmF3TG9j
YXRpb24sIHVwZGF0ZURlbGVnYXRlKQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQocmF3
TG9jYXRpb24uc2NyaXB0SWQgPT09IHRoaXMuc2NyaXB0SWQpOworICAgICAgICBjb25zb2xlLmFz
c2VydChyYXdMb2NhdGlvbi5zb3VyY2VJZCA9PT0gdGhpcy5zY3JpcHRJZCk7CiAgICAgICAgIHZh
ciBsb2NhdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0LkxvY2F0aW9uKHRoaXMsIHJhd0xv
Y2F0aW9uLCB1cGRhdGVEZWxlZ2F0ZSk7CiAgICAgICAgIHRoaXMuX2xvY2F0aW9ucy5wdXNoKGxv
Y2F0aW9uKTsKICAgICAgICAgbG9jYXRpb24udXBkYXRlKCk7CkBAIC0yMDUsNyArMjA1LDcgQEAg
V2ViSW5zcGVjdG9yLlNjcmlwdC5wcm90b3R5cGUgPSB7CiAvKioKICAqIEBjb25zdHJ1Y3Rvcgog
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBzY3JpcHQKLSAqIEBwYXJhbSB7RGVidWdn
ZXJBZ2VudC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJh
d0xvY2F0aW9ufSByYXdMb2NhdGlvbgogICogQHBhcmFtIHtmdW5jdGlvbihXZWJJbnNwZWN0b3Iu
VUlMb2NhdGlvbik6KGJvb2xlYW58dW5kZWZpbmVkKX0gdXBkYXRlRGVsZWdhdGUKICAqLwogV2Vi
SW5zcGVjdG9yLlNjcmlwdC5Mb2NhdGlvbiA9IGZ1bmN0aW9uKHNjcmlwdCwgcmF3TG9jYXRpb24s
IHVwZGF0ZURlbGVnYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TY3JpcHRTbmlwcGV0TW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NjcmlwdFNuaXBwZXRNb2RlbC5qcwppbmRleCAwMDNlZjk0Y2JlN2ZiZTc5ZTEw
YjM0ODkxZTg5MTEwYTMzMzhlMmRjLi42MTMxNDk5NzQ5OWYwOWNkMjE5ODQ1YzFlYzI0YjkxMzhm
M2YzMzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Nj
cmlwdFNuaXBwZXRNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdFNuaXBwZXRNb2RlbC5qcwpAQCAtMTMzLDEyICsxMzMsMTIgQEAgV2ViSW5zcGVj
dG9yLlNjcmlwdFNuaXBwZXRNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgot
ICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24KKyAgICAg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SYXdMb2NhdGlvbn0gcmF3TG9jYXRpb24KICAgICAgKiBA
cmV0dXJuIHtXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbn0KICAgICAgKi8KICAgICBfcmF3TG9jYXRp
b25Ub1VJTG9jYXRpb246IGZ1bmN0aW9uKHJhd0xvY2F0aW9uKQogICAgIHsKLSAgICAgICAgdmFy
IHVpU291cmNlQ29kZSA9IHRoaXMuX3VpU291cmNlQ29kZUZvclNjcmlwdElkW3Jhd0xvY2F0aW9u
LnNjcmlwdElkXTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX3VpU291cmNlQ29k
ZUZvclNjcmlwdElkW3Jhd0xvY2F0aW9uLnNvdXJjZUlkXTsKICAgICAgICAgaWYgKHVpU291cmNl
Q29kZS5pc1NuaXBwZXQpIHsKICAgICAgICAgICAgIHZhciB1aUxpbmVOdW1iZXIgPSByYXdMb2Nh
dGlvbi5saW5lTnVtYmVyIC0gV2ViSW5zcGVjdG9yLlNjcmlwdFNuaXBwZXRNb2RlbC5ldmFsdWF0
ZWRTbmlwcGV0RXh0cmFMaW5lc0NvdW50OwogICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNw
ZWN0b3IuVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIHVpTGluZU51bWJlciwgcmF3TG9jYXRpb24u
Y29sdW1uTnVtYmVyIHx8IDApOwpAQCAtMTUxLDcgKzE1MSw3IEBAIFdlYkluc3BlY3Rvci5TY3Jp
cHRTbmlwcGV0TW9kZWwucHJvdG90eXBlID0gewogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCiAgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVO
dW1iZXIKICAgICAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1uTnVtYmVyCi0gICAgICogQHJldHVy
biB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0KKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3Iu
UmF3TG9jYXRpb259CiAgICAgICovCiAgICAgX3VpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5j
dGlvbih1aVNvdXJjZUNvZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICB7CkBAIC0z
NTAsNyArMzUwLDcgQEAgV2ViSW5zcGVjdG9yLlNuaXBwZXRTY3JpcHRNYXBwaW5nID0gZnVuY3Rp
b24oc2NyaXB0U25pcHBldE1vZGVsKQogCiBXZWJJbnNwZWN0b3IuU25pcHBldFNjcmlwdE1hcHBp
bmcucHJvdG90eXBlID0gewogICAgIC8qKgotICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5M
b2NhdGlvbn0gcmF3TG9jYXRpb24KKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SYXdMb2Nh
dGlvbn0gcmF3TG9jYXRpb24KICAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVUlMb2NhdGlv
bn0KICAgICAgKi8KICAgICByYXdMb2NhdGlvblRvVUlMb2NhdGlvbjogZnVuY3Rpb24ocmF3TG9j
YXRpb24pCkBAIC0zNjIsNyArMzYyLDcgQEAgV2ViSW5zcGVjdG9yLlNuaXBwZXRTY3JpcHRNYXBw
aW5nLnByb3RvdHlwZSA9IHsKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNv
ZGV9IHVpU291cmNlQ29kZQogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCiAgICAg
ICogQHBhcmFtIHtudW1iZXJ9IGNvbHVtbk51bWJlcgotICAgICAqIEByZXR1cm4ge0RlYnVnZ2Vy
QWdlbnQuTG9jYXRpb259CisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlJhd0xvY2F0aW9u
fQogICAgICAqLwogICAgIHVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5jdGlvbih1aVNvdXJj
ZUNvZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZU1hcHBpbmcuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZU1hcHBpbmcuanMKaW5kZXggNDMyYTc2
ZGI5MGIwZGI4NDQxMmNmZmMwNzliNWQ5NTAwMTdlNGY4My4uODg3OGYxMTM1OWNkZThjNjE3MmVj
YmZmMTg3ZDA2NWJhNDQxZmEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Tb3VyY2VNYXBwaW5nLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU291cmNlTWFwcGluZy5qcwpAQCAtMzcsNyArMzcsNyBAQCBXZWJJbnNwZWN0
b3IuU291cmNlTWFwcGluZyA9IGZ1bmN0aW9uKCkKIAogV2ViSW5zcGVjdG9yLlNvdXJjZU1hcHBp
bmcucHJvdG90eXBlID0gewogICAgIC8qKgotICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5M
b2NhdGlvbn0gcmF3TG9jYXRpb24KKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SYXdMb2Nh
dGlvbn0gcmF3TG9jYXRpb24KICAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVUlMb2NhdGlv
bn0KICAgICAgKi8KICAgICByYXdMb2NhdGlvblRvVUlMb2NhdGlvbjogZnVuY3Rpb24ocmF3TG9j
YXRpb24pIHsgfSwKQEAgLTQ2LDcgKzQ2LDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZU1hcHBpbmcu
cHJvdG90eXBlID0gewogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0g
dWlTb3VyY2VDb2RlCiAgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKICAgICAgKiBA
cGFyYW0ge251bWJlcn0gY29sdW1uTnVtYmVyCi0gICAgICogQHJldHVybiB7RGVidWdnZXJBZ2Vu
dC5Mb2NhdGlvbn0KKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUmF3TG9jYXRpb259CiAg
ICAgICovCiAgICAgdWlMb2NhdGlvblRvUmF3TG9jYXRpb246IGZ1bmN0aW9uKHVpU291cmNlQ29k
ZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKSB7IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2RlLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVNvdXJjZUNvZGUuanMKaW5kZXggOTJjYjlhZGI3MTg0
MWNmYWMzNjcwYTEwNGQzM2Q4OWUzNjkzMzcwMy4uMmNjOTZmYTk3YTVlNjBjNGQ4OWQ1NGQ5ZjM5
Nzg0NDYzNWVjMTVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9VSVNvdXJjZUNvZGUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9VSVNvdXJjZUNvZGUuanMKQEAgLTI4Nyw3ICsyODcsNyBAQCBXZWJJbnNwZWN0b3IuVUlT
b3VyY2VDb2RlLnByb3RvdHlwZSA9IHsKICAgICAvKioKICAgICAgKiBAcGFyYW0ge251bWJlcn0g
bGluZU51bWJlcgogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2x1bW5OdW1iZXIKLSAgICAgKiBA
cmV0dXJuIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufQorICAgICAqIEByZXR1cm4ge1dlYkluc3Bl
Y3Rvci5SYXdMb2NhdGlvbn0KICAgICAgKi8KICAgICB1aUxvY2F0aW9uVG9SYXdMb2NhdGlvbjog
ZnVuY3Rpb24obGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsKQEAgLTQyMCwxMCArNDIw
LDIzIEBAIFdlYkluc3BlY3Rvci5VSUxvY2F0aW9uID0gZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAKIFdlYkluc3BlY3Rvci5VSUxvY2F0aW9uLnByb3Rv
dHlwZSA9IHsKICAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9u
fQorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5SYXdMb2NhdGlvbn0KICAgICAgKi8KICAg
ICB1aUxvY2F0aW9uVG9SYXdMb2NhdGlvbjogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMudWlTb3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKHRoaXMubGluZU51
bWJlciwgdGhpcy5jb2x1bW5OdW1iZXIpOwogICAgIH0KIH0KKworLyoqCisgKiBAY29uc3RydWN0
b3IKKyAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2VJZAorICogQHBhcmFtIHtudW1iZXJ9IGxpbmVO
dW1iZXIKKyAqIEBwYXJhbSB7bnVtYmVyPX0gY29sdW1uTnVtYmVyCisgKi8KK1dlYkluc3BlY3Rv
ci5SYXdMb2NhdGlvbiA9IGZ1bmN0aW9uKHNvdXJjZUlkLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIpCit7CisgICAgdGhpcy5zb3VyY2VJZCA9IHNvdXJjZUlkOworICAgIHRoaXMubGluZU51bWJl
ciA9IGxpbmVOdW1iZXI7CisgICAgdGhpcy5jb2x1bW5OdW1iZXIgPSBjb2x1bW5OdW1iZXI7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggYjVlNTViY2E4YjllN2RmNzJjNzAxNzY2ZDY5NjA5ZWY4ZDAzOWJlZC4uOTIxNDRj
YTZiZWNjYjU4ZTNjNzcxYzkzOTVkMzcxMzE4Zjc2YzBiOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDEyLTA1LTIzICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IExpbWl0IERlYnVnZ2VyQWdlbnQuTG9jYXRpb24gdXNlIHRv
IERlYnVnZ2VyTW9kZWwgb25seSwgaW50cm9kdWNlIFdlYkluc3BlY3Rvci5SYXdMb2NhdGlvbiB0
byBiZSB1c2VkIGVsc2V3aGVyZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg3MjcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzOgorICAg
ICAgICAoaW5pdGlhbGl6ZV9EZWJ1Z2dlclRlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci9icmVha3BvaW50LW1hbmFnZXIuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdn
ZXIvcGF1c2UtaW4taW5saW5lLXNjcmlwdC5odG1sOgorCiAyMDEyLTA1LTIzICBNaWtoYWlsIFBv
emRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxd
W0RSVF0gV2ViYXJjaGl2ZXMgdGVzdHMgZ2FyZGVuaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcwppbmRleCA2ZDc0OTNmN2NhZTAxOTYz
Zjc2YTNhZTllNTY5YWRkNWM0ZTI3MDVhLi40YjZjZmFmYjlmYzIwNjlhZDIxMTkxZWU3YmM2YjEy
YzA3ODczYjUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyLXRlc3QuanMKQEAgLTI5OCw3ICsyOTgsNyBAQCBJbnNwZWN0b3JUZXN0Ll9sYXN0U2Ny
aXB0SWQgPSAwOwogCiBJbnNwZWN0b3JUZXN0LmNoZWNrUmF3TG9jYXRpb24gPSBmdW5jdGlvbihz
Y3JpcHQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbG9jYXRpb24pCiB7Ci0gICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnRFcXVhbHMoc2NyaXB0LnNjcmlwdElkLCBsb2NhdGlvbi5zY3JpcHRJZCk7
CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoc2NyaXB0LnNjcmlwdElkLCBsb2NhdGlv
bi5zb3VyY2VJZCk7CiAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMobGluZU51bWJlciwg
bG9jYXRpb24ubGluZU51bWJlcik7CiAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoY29s
dW1uTnVtYmVyLCBsb2NhdGlvbi5jb2x1bW5OdW1iZXIpOwogfTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LW1hbmFnZXIuaHRtbCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LW1hbmFnZXIuaHRtbAppbmRleCBh
NDMyNjRjZjhjMDYxZWMyNmQ1MWI3MTRlMzg2OTQ1MmI0NGI4NmM4Li4xNDM4MzAyMWZhNzNiMGM4
NmIxNjcxNThlYWQ3OWI1ZWIzNDhhZWNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvYnJlYWtwb2ludC1tYW5hZ2VyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtbWFuYWdlci5odG1sCkBAIC0xMSwyNCArMTEsMjQg
QEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgdmFyIGRlZmF1bHRNYXBwaW5nID0gewogICAgICAgICBy
YXdMb2NhdGlvblRvVUlMb2NhdGlvbjogZnVuY3Rpb24ocmF3TG9jYXRpb24pCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24odWlTb3VyY2VD
b2Rlc1tyYXdMb2NhdGlvbi5zY3JpcHRJZF0sIHJhd0xvY2F0aW9uLmxpbmVOdW1iZXIsIDApOwor
ICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbih1aVNvdXJjZUNv
ZGVzW3Jhd0xvY2F0aW9uLnNvdXJjZUlkXSwgcmF3TG9jYXRpb24ubGluZU51bWJlciwgMCk7CiAg
ICAgICAgIH0sCiAKICAgICAgICAgdWlMb2NhdGlvblRvUmF3TG9jYXRpb246IGZ1bmN0aW9uKHVp
U291cmNlQ29kZSwgbGluZU51bWJlcikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHsg
c2NyaXB0SWQ6IHVpU291cmNlQ29kZS51cmwsIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcjogMCB9OworICAgICAgICAgICAgcmV0dXJuIHsgc291cmNlSWQ6IHVpU291cmNlQ29k
ZS51cmwsIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjogMCB9OwogICAgICAg
ICB9CiAgICAgfTsKIAogICAgIHZhciBzaGlmdGluZ01hcHBpbmcgPSB7CiAgICAgICAgIHJhd0xv
Y2F0aW9uVG9VSUxvY2F0aW9uOiBmdW5jdGlvbihyYXdMb2NhdGlvbikKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbih1aVNvdXJjZUNvZGVz
W3Jhd0xvY2F0aW9uLnNjcmlwdElkXSwgcmF3TG9jYXRpb24ubGluZU51bWJlciArIDEwLCAwKTsK
KyAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24odWlTb3VyY2VD
b2Rlc1tyYXdMb2NhdGlvbi5zb3VyY2VJZF0sIHJhd0xvY2F0aW9uLmxpbmVOdW1iZXIgKyAxMCwg
MCk7CiAgICAgICAgIH0sCiAKICAgICAgICAgdWlMb2NhdGlvblRvUmF3TG9jYXRpb246IGZ1bmN0
aW9uKHVpU291cmNlQ29kZSwgbGluZU51bWJlcikKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIHsgc2NyaXB0SWQ6IHVpU291cmNlQ29kZS51cmwsIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIg
LSAxMCwgY29sdW1uTnVtYmVyOiAwIH07CisgICAgICAgICAgICByZXR1cm4geyBzb3VyY2VJZDog
dWlTb3VyY2VDb2RlLnVybCwgbGluZU51bWJlcjogbGluZU51bWJlciAtIDEwLCBjb2x1bW5OdW1i
ZXI6IDAgfTsKICAgICAgICAgfQogICAgIH07CiAKQEAgLTQ4LDE0ICs0OCwxNCBAQCBmdW5jdGlv
biB0ZXN0KCkKIAogICAgICAgICBzZXRCcmVha3BvaW50QnlTY3JpcHRMb2NhdGlvbjogZnVuY3Rp
b24obG9jYXRpb24sIGNvbmRpdGlvbiwgY2FsbGJhY2spCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHZhciBicmVha3BvaW50SWQgPSBsb2NhdGlvbi5zY3JpcHRJZCArICI6IiArIGxvY2F0aW9uLmxp
bmVOdW1iZXI7CisgICAgICAgICAgICB2YXIgYnJlYWtwb2ludElkID0gbG9jYXRpb24uc291cmNl
SWQgKyAiOiIgKyBsb2NhdGlvbi5saW5lTnVtYmVyOwogICAgICAgICAgICAgaWYgKHRoaXMuX2Jy
ZWFrcG9pbnRzW2JyZWFrcG9pbnRJZF0pIHsKICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxs
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IHRoaXMuX2JyZWFrcG9pbnRzW2JyZWFrcG9pbnRJZF0gPSB0cnVlOwotICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAgICBkZWJ1Z2dlck1vZGVsLnNldEJyZWFrcG9pbnQoIiAr
IFtsb2NhdGlvbi5zY3JpcHRJZCwgbG9jYXRpb24ubGluZU51bWJlciwgY29uZGl0aW9uXS5qb2lu
KCI6IikgKyAiKSIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAgICBk
ZWJ1Z2dlck1vZGVsLnNldEJyZWFrcG9pbnQoIiArIFtsb2NhdGlvbi5zb3VyY2VJZCwgbG9jYXRp
b24ubGluZU51bWJlciwgY29uZGl0aW9uXS5qb2luKCI6IikgKyAiKSIpOwogICAgICAgICAgICAg
aWYgKCFjYWxsYmFjaykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBpZiAo
bG9jYXRpb24ubGluZU51bWJlciA+PSAyMDAwKSB7CkBAIC02Myw3ICs2Myw3IEBAIGZ1bmN0aW9u
IHRlc3QoKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGlmIChsb2NhdGlvbi5saW5lTnVtYmVyID49IDEwMDApIHsKLSAgICAgICAgICAgICAgICB2
YXIgc2hpZnRlZExvY2F0aW9uID0ge3NjcmlwdElkOiBsb2NhdGlvbi5zY3JpcHRJZCwgbGluZU51
bWJlcjogbG9jYXRpb24ubGluZU51bWJlciArIDEwLCBjb2x1bW5OdW1iZXI6IGxvY2F0aW9uLmNv
bHVtbk51bWJlciB9OworICAgICAgICAgICAgICAgIHZhciBzaGlmdGVkTG9jYXRpb24gPSB7c291
cmNlSWQ6IGxvY2F0aW9uLnNvdXJjZUlkLCBsaW5lTnVtYmVyOiBsb2NhdGlvbi5saW5lTnVtYmVy
ICsgMTAsIGNvbHVtbk51bWJlcjogbG9jYXRpb24uY29sdW1uTnVtYmVyIH07CiAgICAgICAgICAg
ICAgICAgY2FsbGJhY2soYnJlYWtwb2ludElkLCBbc2hpZnRlZExvY2F0aW9uXSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtODIsNyArODIsNyBAQCBmdW5jdGlv
biB0ZXN0KCkKIAogICAgICAgICBjcmVhdGVMaXZlTG9jYXRpb246IGZ1bmN0aW9uKHJhd0xvY2F0
aW9uLCB1cGRhdGVEZWxlZ2F0ZSkKICAgICAgICAgewotICAgICAgICAgICAgIHJldHVybiB0aGlz
Ll9zY3JpcHRzW3Jhd0xvY2F0aW9uLnNjcmlwdElkXS5jcmVhdGVMaXZlTG9jYXRpb24ocmF3TG9j
YXRpb24sIHVwZGF0ZURlbGVnYXRlKTsKKyAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc2NyaXB0
c1tyYXdMb2NhdGlvbi5zb3VyY2VJZF0uY3JlYXRlTGl2ZUxvY2F0aW9uKHJhd0xvY2F0aW9uLCB1
cGRhdGVEZWxlZ2F0ZSk7CiAgICAgICAgIH0sCiAKICAgICAgICAgc2NyaXB0Rm9ySWQ6IGZ1bmN0
aW9uKHNjcmlwdElkKQpAQCAtMTI1LDExICsxMjUsMTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLlNjcmlwdC5wcm90b3R5cGUs
ICJjcmVhdGVMaXZlTG9jYXRpb24iLCBmdW5jdGlvbihyYXdMb2NhdGlvbikKICAgICB7Ci0gICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIgICAgTG9jYXRpb24gY3JlYXRlZDogIiArIHJh
d0xvY2F0aW9uLnNjcmlwdElkICsgIjoiICsgcmF3TG9jYXRpb24ubGluZU51bWJlcik7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIgICAgTG9jYXRpb24gY3JlYXRlZDogIiArIHJh
d0xvY2F0aW9uLnNvdXJjZUlkICsgIjoiICsgcmF3TG9jYXRpb24ubGluZU51bWJlcik7CiAgICAg
fSwgdHJ1ZSk7CiAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5TY3Jp
cHQuTG9jYXRpb24ucHJvdG90eXBlLCAiZGlzcG9zZSIsIGZ1bmN0aW9uKCkKICAgICB7Ci0gICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIgICAgTG9jYXRpb24gZGlzcG9zZWQ6ICIgKyB0
aGlzLl9yYXdMb2NhdGlvbi5zY3JpcHRJZCArICI6IiArIHRoaXMuX3Jhd0xvY2F0aW9uLmxpbmVO
dW1iZXIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiICAgIExvY2F0aW9uIGRp
c3Bvc2VkOiAiICsgdGhpcy5fcmF3TG9jYXRpb24uc291cmNlSWQgKyAiOiIgKyB0aGlzLl9yYXdM
b2NhdGlvbi5saW5lTnVtYmVyKTsKICAgICB9LCB0cnVlKTsKIAogICAgIGZ1bmN0aW9uIGFkZFVJ
U291cmNlQ29kZShicmVha3BvaW50TWFuYWdlciwgdXJsKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWluLWlubGluZS1zY3JpcHQuaHRtbCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1pbi1pbmxpbmUtc2NyaXB0Lmh0bWwKaW5k
ZXggZDEzZGMzMjZkYjI5NjZjMGY2NDE3ZTZhMzA1MjZmYWFhYzc1NzVmOS4uOTE3ODBhOGZhYjkw
YmZhZTk0MWJlODRjMDhlZTU2NThlMjEwNThkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWluLWlubGluZS1zY3JpcHQuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtaW4taW5saW5lLXNjcmlwdC5odG1sCkBAIC00
OSw3ICs0OSw3IEBAIHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICBmb3IgKHZhciBzY3Jp
cHRJZCBpbiBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRzKSB7CiAgICAgICAgICAg
ICB2YXIgc2NyaXB0ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2NyaXB0c1tzY3JpcHRJ
ZF07CiAgICAgICAgICAgICBpZiAoc2NyaXB0LnNvdXJjZVVSTCAmJiBzY3JpcHQuc291cmNlVVJM
LmluZGV4T2YodGVzdE5hbWUpICE9PSAtMSAmJiBzY3JpcHQubGluZU9mZnNldCA9PSA2KSB7Ci0g
ICAgICAgICAgICAgICAgdmFyIGxvY2F0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1v
ZGVsLkxvY2F0aW9uKHNjcmlwdCwgNiwgMCk7CisgICAgICAgICAgICAgICAgdmFyIGxvY2F0aW9u
ID0gbmV3IFdlYkluc3BlY3Rvci5SYXdMb2NhdGlvbihzY3JpcHQuc2NyaXB0SWQsIDYsIDApOwog
ICAgICAgICAgICAgICAgIHZhciB1aUxvY2F0aW9uID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9k
ZWwucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24obG9jYXRpb24pOwogICAgICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5zaG93VUlTb3VyY2VDb2RlKHVpTG9jYXRpb24udWlT
b3VyY2VDb2RlKTsKICAgICAgICAgICAgICAgICB2YXIgc291cmNlRnJhbWUgPSBXZWJJbnNwZWN0
b3IucGFuZWxzLnNjcmlwdHMudmlzaWJsZVZpZXc7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144079</attachid>
            <date>2012-05-25 09:04:41 -0700</date>
            <delta_ts>2012-06-06 10:07:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87270-20120525200439.patch</filename>
            <type>text/plain</type>
            <size>35013</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNkMjc0YmQyZWYxYTAx
YWE2NTQyNDM0MGIyNjBiZDI1NWQ2NWRhMS4uOTg1ODdiNGJjYjA0NTMxOGRlMWMwYjQzYTAyNGEz
NDAzMmExM2I4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTA1LTI1ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IExpbWl0IERlYnVnZ2VyQWdlbnQuTG9jYXRpb24gdXNlIHRvIERlYnVnZ2VyTW9kZWwgb25s
eSwgaW50cm9kdWNlIFdlYkluc3BlY3Rvci5SYXdMb2NhdGlvbiB0byBiZSB1c2VkIGVsc2V3aGVy
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3Mjcw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9k
dWNlZCBXZWJJbnNwZWN0b3IuUmF3TG9jYXRpb24gaW50ZXJmYWNlLCBhIGdlbmVyaWMgcmF3IGxv
Y2F0aW9uIGluZGVwZW5kZW50IGZyb20gY29uY3JldGUgZG9tYWluIChTdHlsZXMsIERlYnVnZ2Vy
KS4KKyAgICAgICAgTWFkZSBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbiBpbXBs
ZW1lbnQgaXQgYW5kIHN3aXRjaGVkIGFsbCBkZWJ1Z2dlciByZWxhdGVkIG1ldGhvZHMgdG8gaXQu
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZS5fYnJlYWtw
b2ludFJlc29sdmVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVyU2Ny
aXB0TWFwcGluZy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db21waWxlclNjcmlwdE1hcHBp
bmcucHJvdG90eXBlLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVi
dWdnZXJNb2RlbC5Mb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2Rl
bC5wcm90b3R5cGUuY29udGludWVUb0xvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlck1vZGVsLnByb3RvdHlwZS5zZXRCcmVha3BvaW50QnlTY3JpcHRMb2NhdGlvbik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUuc2V0QnJlYWtwb2lu
dC5kaWRTZXRCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVs
LnByb3RvdHlwZS5zZXRCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dl
ck1vZGVsLnByb3RvdHlwZS5zZXRCcmVha3BvaW50QnlTb3VyY2VJZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUuX2JyZWFrcG9pbnRSZXNvbHZlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUuY3JlYXRlUmF3TG9j
YXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlLmNy
ZWF0ZVJhd0xvY2F0aW9uQnlVUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9k
ZWwucHJvdG90eXBlLnNldFNlbGVjdGVkQ2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZS5jcmVhdGVMaXZlTG9jYXRpb24pOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuQ2FsbEZyYW1lLnByb3RvdHlwZS5nZXQgbG9jYXRp
b24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuQ2FsbEZyYW1lLnByb3Rv
dHlwZS5jcmVhdGVMaXZlTG9jYXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
RGVidWdnZXJSZXNvdXJjZUJpbmRpbmcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdn
ZXJSZXNvdXJjZUJpbmRpbmcuc2V0U2NyaXB0U291cmNlLmRpZEVkaXRTY3JpcHRTb3VyY2UpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUmVzb3VyY2VCaW5kaW5nLnNldFNjcmlwdFNv
dXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJSZXNvdXJjZUJpbmRpbmcucHJv
dG90eXBlLnNldENvbnRlbnQuZ2V0IGlmKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dl
clJlc291cmNlQmluZGluZy5wcm90b3R5cGUuc2V0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRGVidWdnZXJSZXNvdXJjZUJpbmRpbmcucHJvdG90eXBlLl9zZXRDb250ZW50V2l0aElu
aXRpYWxDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRT
b3VyY2UuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZS5wcm90b3R5
cGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvTGlua2lmaWVyLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0UG9w
b3ZlckhlbHBlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3RQb3BvdmVySGVscGVy
LnByb3RvdHlwZS5fc2hvd09iamVjdFBvcG92ZXIuc2hvd09iamVjdFBvcG92ZXIuKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5PYmplY3RQb3BvdmVySGVscGVyLnByb3RvdHlwZS5fc2hvd09iamVj
dFBvcG92ZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJlc2VudGF0aW9uQ29u
c29sZU1lc3NhZ2VIZWxwZXIuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SYXdT
b3VyY2VDb2RlLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VTY3Jp
cHRNYXBwaW5nLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGlu
Zy5wcm90b3R5cGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24pOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdC5wcm90
b3R5cGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvU2NyaXB0U25pcHBldE1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNuaXBw
ZXRTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbik6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VNYXBwaW5nLmpzOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2RlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlJhd0xvY2F0aW9uKToKKwogMjAxMi0wNS0yNSAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHB1dCBwYWludCBhbmQgY29tcG9z
aXRpbmcgdGltZWxpbmUgZXZlbnRzIGluIGEgbmV3IGNhdGVnb3J5IG9mIHRoZWlyIG93bgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFu
YWdlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1h
bmFnZXIuanMKaW5kZXggYzQyNTcyN2ZkYTA5ODkxOWM1Y2M1ODI4NWM2YWViMmQ2YTNiOTFkNi4u
OTAwZTc5OTk1NWY1OTRlZWM5YjhjZTNlZmM0NjlhYTE2YjI3OGYwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpz
CkBAIC0xNzQsNyArMTc0LDcgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3Rv
dHlwZSA9IHsKICAgICBfYnJlYWtwb2ludFJlc29sdmVkOiBmdW5jdGlvbihldmVudCkKICAgICB7
CiAgICAgICAgIHZhciBicmVha3BvaW50SWQgPSAvKiogQHR5cGUge0RlYnVnZ2VyQWdlbnQuQnJl
YWtwb2ludElkfSAqLyBldmVudC5kYXRhLmJyZWFrcG9pbnRJZDsKLSAgICAgICAgdmFyIGxvY2F0
aW9uID0gLyoqIEB0eXBlIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufSAqLyBldmVudC5kYXRhLmxv
Y2F0aW9uOworICAgICAgICB2YXIgbG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5E
ZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSAqLyBldmVudC5kYXRhLmxvY2F0aW9uOwogICAgICAgICB2
YXIgYnJlYWtwb2ludCA9IHRoaXMuX2JyZWFrcG9pbnRGb3JEZWJ1Z2dlcklkW2JyZWFrcG9pbnRJ
ZF07CiAgICAgICAgIGlmICghYnJlYWtwb2ludCB8fCBicmVha3BvaW50Ll9pc1Byb3Zpc2lvbmFs
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjcwLDcgKzI3MCw3IEBAIFdlYkluc3BlY3Rvci5C
cmVha3BvaW50TWFuYWdlci5CcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAg
LyoqCi0gICAgICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufSBsb2NhdGlvbgorICAg
ICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259IGxvY2F0aW9u
CiAgICAgICovCiAgICAgX2FkZFJlc29sdmVkTG9jYXRpb246IGZ1bmN0aW9uKGxvY2F0aW9uKQog
ICAgIHsKQEAgLTI3OCw3ICsyNzgsNyBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIu
QnJlYWtwb2ludC5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJh
bSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gbG9jYXRpb24KKyAgICAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSBsb2NhdGlvbgogICAgICAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLlVJTG9jYXRpb259IHVpTG9jYXRpb24KICAgICAgKi8KICAgICBfbG9jYXRp
b25VcGRhdGVkOiBmdW5jdGlvbihsb2NhdGlvbiwgdWlMb2NhdGlvbikKQEAgLTM1NiwxMSArMzU2
LDEyIEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5CcmVha3BvaW50LnByb3RvdHlw
ZSA9IHsKICAgICBfc2V0SW5EZWJ1Z2dlcjogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFy
IHJhd0xvY2F0aW9uID0gdGhpcy5fcHJpbWFyeVVJTG9jYXRpb24udWlMb2NhdGlvblRvUmF3TG9j
YXRpb24oKTsKLSAgICAgICAgdGhpcy5fYnJlYWtwb2ludE1hbmFnZXIuX2RlYnVnZ2VyTW9kZWwu
c2V0QnJlYWtwb2ludEJ5U2NyaXB0TG9jYXRpb24ocmF3TG9jYXRpb24sIHRoaXMuX2NvbmRpdGlv
biwgZGlkU2V0QnJlYWtwb2ludC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdmFyIGRlYnVnZ2VyTW9k
ZWxMb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRp
b259ICovIHJhd0xvY2F0aW9uOworICAgICAgICB0aGlzLl9icmVha3BvaW50TWFuYWdlci5fZGVi
dWdnZXJNb2RlbC5zZXRCcmVha3BvaW50QnlTY3JpcHRMb2NhdGlvbihkZWJ1Z2dlck1vZGVsTG9j
YXRpb24sIHRoaXMuX2NvbmRpdGlvbiwgZGlkU2V0QnJlYWtwb2ludC5iaW5kKHRoaXMpKTsKICAg
ICAgICAgLyoqCiAgICAgICAgICAqIEB0aGlzIHtXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFn
ZXIuQnJlYWtwb2ludH0KICAgICAgICAgICogQHBhcmFtIHs/RGVidWdnZXJBZ2VudC5CcmVha3Bv
aW50SWR9IGJyZWFrcG9pbnRJZAotICAgICAgICAgKiBAcGFyYW0ge0FycmF5LjxEZWJ1Z2dlckFn
ZW50LkxvY2F0aW9uPn0gbG9jYXRpb25zCisgICAgICAgICAqIEBwYXJhbSB7QXJyYXkuPFdlYklu
c3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9uPn0gbG9jYXRpb25zCiAgICAgICAgICAqLwog
ICAgICAgICBmdW5jdGlvbiBkaWRTZXRCcmVha3BvaW50KGJyZWFrcG9pbnRJZCwgbG9jYXRpb25z
KQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvQ29tcGlsZXJTY3JpcHRNYXBwaW5nLmpzCmluZGV4IGY2ZTk4ZDBkY2IzOWU0ZThh
MWE0MzQ3OTMxYTE4YmJjNmMzMjA5Y2UuLmQyYzkxNzYxNDVlMGM4ZWJiNTg0ZjBlYjE0YWI5OTQ1
OTU5Njc2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q29tcGlsZXJTY3JpcHRNYXBwaW5nLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvQ29tcGlsZXJTY3JpcHRNYXBwaW5nLmpzCkBAIC00NSwxMyArNDUsMTQgQEAgV2Vi
SW5zcGVjdG9yLkNvbXBpbGVyU2NyaXB0TWFwcGluZyA9IGZ1bmN0aW9uKCkKIAogV2ViSW5zcGVj
dG9yLkNvbXBpbGVyU2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgLyoqCi0gICAgICog
QHBhcmFtIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufSByYXdMb2NhdGlvbgorICAgICAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLlJhd0xvY2F0aW9ufSByYXdMb2NhdGlvbgogICAgICAqIEByZXR1cm4g
e1dlYkluc3BlY3Rvci5VSUxvY2F0aW9ufQogICAgICAqLwogICAgIHJhd0xvY2F0aW9uVG9VSUxv
Y2F0aW9uOiBmdW5jdGlvbihyYXdMb2NhdGlvbikKICAgICB7Ci0gICAgICAgIHZhciBzb3VyY2VN
YXAgPSB0aGlzLl9zb3VyY2VNYXBGb3JTY3JpcHRJZFtyYXdMb2NhdGlvbi5zY3JpcHRJZF07Ci0g
ICAgICAgIHZhciBlbnRyeSA9IHNvdXJjZU1hcC5maW5kRW50cnkocmF3TG9jYXRpb24ubGluZU51
bWJlciwgcmF3TG9jYXRpb24uY29sdW1uTnVtYmVyIHx8IDApOworICAgICAgICB2YXIgZGVidWdn
ZXJNb2RlbExvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5M
b2NhdGlvbn0gKi8gcmF3TG9jYXRpb247CisgICAgICAgIHZhciBzb3VyY2VNYXAgPSB0aGlzLl9z
b3VyY2VNYXBGb3JTY3JpcHRJZFtkZWJ1Z2dlck1vZGVsTG9jYXRpb24uc2NyaXB0SWRdOworICAg
ICAgICB2YXIgZW50cnkgPSBzb3VyY2VNYXAuZmluZEVudHJ5KGRlYnVnZ2VyTW9kZWxMb2NhdGlv
bi5saW5lTnVtYmVyLCBkZWJ1Z2dlck1vZGVsTG9jYXRpb24uY29sdW1uTnVtYmVyIHx8IDApOwog
ICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5VSUxvY2F0aW9uKHRoaXMuX3VpU291cmNl
Q29kZUJ5VVJMW2VudHJ5WzJdXSwgZW50cnlbM10sIGVudHJ5WzRdKTsKICAgICB9LAogCkBAIC01
OSw3ICs2MCw3IEBAIFdlYkluc3BlY3Rvci5Db21waWxlclNjcmlwdE1hcHBpbmcucHJvdG90eXBl
ID0gewogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VD
b2RlCiAgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKICAgICAgKiBAcGFyYW0ge251
bWJlcn0gY29sdW1uTnVtYmVyCi0gICAgICogQHJldHVybiB7RGVidWdnZXJBZ2VudC5Mb2NhdGlv
bn0KKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbn0K
ICAgICAgKi8KICAgICB1aUxvY2F0aW9uVG9SYXdMb2NhdGlvbjogZnVuY3Rpb24odWlTb3VyY2VD
b2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzCmluZGV4IGMwM2I4OWE3
OWU5OWVhNjI0ZjgwZTVjNWY3YTI1MTRjODI5MjIwNDAuLmFlM2VkNTdmZDRlYTAxZDVhMTY3ZDQz
MTBhZTA4NDIzZGJlOTMzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRGVidWdnZXJNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMKQEAgLTQ5LDE0ICs0OSwxNSBAQCBXZWJJbnNwZWN0
b3IuRGVidWdnZXJNb2RlbCA9IGZ1bmN0aW9uKCkKIAogLyoqCiAgKiBAY29uc3RydWN0b3IKKyAq
IEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuUmF3TG9jYXRpb259CiAgKiBAZXh0ZW5kcyB7RGVi
dWdnZXJBZ2VudC5Mb2NhdGlvbn0KLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gc2Ny
aXB0CisgKiBAcGFyYW0ge3N0cmluZ30gc2NyaXB0SWQKICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5l
TnVtYmVyCiAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1uTnVtYmVyCiAgKi8KLVdlYkluc3BlY3Rv
ci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9uID0gZnVuY3Rpb24oc2NyaXB0LCBsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIpCitXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbiA9IGZ1bmN0
aW9uKHNjcmlwdElkLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiB7Ci0gICAgdGhpcy5zY3Jp
cHRJZCA9IHNjcmlwdC5zY3JpcHRJZDsKKyAgICB0aGlzLnNjcmlwdElkID0gc2NyaXB0SWQ7CiAg
ICAgdGhpcy5saW5lTnVtYmVyID0gbGluZU51bWJlcjsKICAgICB0aGlzLmNvbHVtbk51bWJlciA9
IGNvbHVtbk51bWJlcjsKIH0KQEAgLTExOCwyNSArMTE5LDI1IEBAIFdlYkluc3BlY3Rvci5EZWJ1
Z2dlck1vZGVsLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFt
IHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufSBsb2NhdGlvbgorICAgICAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259IHJhd0xvY2F0aW9uCiAgICAgICovCi0gICAg
Y29udGludWVUb0xvY2F0aW9uOiBmdW5jdGlvbihsb2NhdGlvbikKKyAgICBjb250aW51ZVRvTG9j
YXRpb246IGZ1bmN0aW9uKHJhd0xvY2F0aW9uKQogICAgIHsKLSAgICAgICAgRGVidWdnZXJBZ2Vu
dC5jb250aW51ZVRvTG9jYXRpb24obG9jYXRpb24pOworICAgICAgICBEZWJ1Z2dlckFnZW50LmNv
bnRpbnVlVG9Mb2NhdGlvbihyYXdMb2NhdGlvbik7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAq
IEBwYXJhbSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gbG9jYXRpb24KKyAgICAgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSByYXdMb2NhdGlvbgogICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBjb25kaXRpb24KLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9EZWJ1
Z2dlckFnZW50LkJyZWFrcG9pbnRJZCwgQXJyYXkuPERlYnVnZ2VyQWdlbnQuTG9jYXRpb24+KTp2
b2lkPX0gY2FsbGJhY2sKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9EZWJ1Z2dlckFnZW50LkJy
ZWFrcG9pbnRJZCwgQXJyYXkuPFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9uPik6
dm9pZD19IGNhbGxiYWNrCiAgICAgICovCi0gICAgc2V0QnJlYWtwb2ludEJ5U2NyaXB0TG9jYXRp
b246IGZ1bmN0aW9uKGxvY2F0aW9uLCBjb25kaXRpb24sIGNhbGxiYWNrKQorICAgIHNldEJyZWFr
cG9pbnRCeVNjcmlwdExvY2F0aW9uOiBmdW5jdGlvbihyYXdMb2NhdGlvbiwgY29uZGl0aW9uLCBj
YWxsYmFjaykKICAgICB7Ci0gICAgICAgIHZhciBzY3JpcHQgPSB0aGlzLnNjcmlwdEZvcklkKGxv
Y2F0aW9uLnNjcmlwdElkKTsKKyAgICAgICAgdmFyIHNjcmlwdCA9IHRoaXMuc2NyaXB0Rm9ySWQo
cmF3TG9jYXRpb24uc2NyaXB0SWQpOwogICAgICAgICBpZiAoc2NyaXB0LnNvdXJjZVVSTCkKLSAg
ICAgICAgICAgIHRoaXMuc2V0QnJlYWtwb2ludChzY3JpcHQuc291cmNlVVJMLCBsb2NhdGlvbi5s
aW5lTnVtYmVyLCBsb2NhdGlvbi5jb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgY2FsbGJhY2spOwor
ICAgICAgICAgICAgdGhpcy5zZXRCcmVha3BvaW50KHNjcmlwdC5zb3VyY2VVUkwsIHJhd0xvY2F0
aW9uLmxpbmVOdW1iZXIsIHJhd0xvY2F0aW9uLmNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBjYWxs
YmFjayk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuc2V0QnJlYWtwb2ludEJ5U291
cmNlSWQobG9jYXRpb24sIGNvbmRpdGlvbiwgY2FsbGJhY2spOworICAgICAgICAgICAgdGhpcy5z
ZXRCcmVha3BvaW50QnlTb3VyY2VJZChyYXdMb2NhdGlvbiwgY29uZGl0aW9uLCBjYWxsYmFjayk7
CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTQ0LDcgKzE0NSw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1
Z2dlck1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJl
cgogICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gY29sdW1uTnVtYmVyCiAgICAgICogQHBhcmFtIHtz
dHJpbmc9fSBjb25kaXRpb24KLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9EZWJ1Z2dlckFnZW50
LkJyZWFrcG9pbnRJZCwgQXJyYXkuPERlYnVnZ2VyQWdlbnQuTG9jYXRpb24+KT19IGNhbGxiYWNr
CisgICAgICogQHBhcmFtIHtmdW5jdGlvbig/RGVidWdnZXJBZ2VudC5CcmVha3BvaW50SWQsIEFy
cmF5LjxXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbj4pPX0gY2FsbGJhY2sKICAg
ICAgKi8KICAgICBzZXRCcmVha3BvaW50OiBmdW5jdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgY29uZGl0aW9uLCBjYWxsYmFjaykKICAgICB7CkBAIC0xNjYsMTkgKzE2NywyMSBA
QCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAqLwog
ICAgICAgICBmdW5jdGlvbiBkaWRTZXRCcmVha3BvaW50KGVycm9yLCBicmVha3BvaW50SWQsIGxv
Y2F0aW9ucykKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQotICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKGVycm9yID8gbnVsbCA6IGJyZWFrcG9pbnRJZCwgbG9jYXRpb25zKTsK
KyAgICAgICAgICAgIGlmIChjYWxsYmFjaykgeworICAgICAgICAgICAgICAgIHZhciByYXdMb2Nh
dGlvbnMgPSAvKiogQHR5cGUge0FycmF5LjxXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2Nh
dGlvbj59ICovIGxvY2F0aW9uczsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvciA/IG51
bGwgOiBicmVha3BvaW50SWQsIHJhd0xvY2F0aW9ucyk7CisgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICAgICAgRGVidWdnZXJBZ2VudC5zZXRCcmVha3BvaW50QnlVcmwobGluZU51bWJlciwg
dXJsLCB1bmRlZmluZWQsIGNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBkaWRTZXRCcmVha3BvaW50
LmJpbmQodGhpcykpOwogICAgICAgICBXZWJJbnNwZWN0b3IudXNlck1ldHJpY3MuU2NyaXB0c0Jy
ZWFrcG9pbnRTZXQucmVjb3JkKCk7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7
RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gbG9jYXRpb24KKyAgICAgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSByYXdMb2NhdGlvbgogICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBjb25kaXRpb24KLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9EZWJ1Z2dlckFnZW50
LkJyZWFrcG9pbnRJZCwgQXJyYXkuPERlYnVnZ2VyQWdlbnQuTG9jYXRpb24+KT19IGNhbGxiYWNr
CisgICAgICogQHBhcmFtIHtmdW5jdGlvbig/RGVidWdnZXJBZ2VudC5CcmVha3BvaW50SWQsIEFy
cmF5LjxXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbj4pPX0gY2FsbGJhY2sKICAg
ICAgKi8KLSAgICBzZXRCcmVha3BvaW50QnlTb3VyY2VJZDogZnVuY3Rpb24obG9jYXRpb24sIGNv
bmRpdGlvbiwgY2FsbGJhY2spCisgICAgc2V0QnJlYWtwb2ludEJ5U291cmNlSWQ6IGZ1bmN0aW9u
KHJhd0xvY2F0aW9uLCBjb25kaXRpb24sIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgLyoqCiAg
ICAgICAgICAqIEB0aGlzIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbH0KQEAgLTE4OCwxMCAr
MTkxLDEyIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICovCiAgICAgICAgIGZ1bmN0aW9uIGRpZFNldEJyZWFrcG9pbnQoZXJyb3IsIGJyZWFrcG9p
bnRJZCwgYWN0dWFsTG9jYXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChjYWxsYmFj
aykKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvciA/IG51bGwgOiBicmVha3BvaW50SWQs
IFthY3R1YWxMb2NhdGlvbl0pOworICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7CisgICAgICAg
ICAgICAgICAgdmFyIHJhd0xvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRGVidWdn
ZXJNb2RlbC5Mb2NhdGlvbn0gKi8gYWN0dWFsTG9jYXRpb247CisgICAgICAgICAgICAgICAgY2Fs
bGJhY2soZXJyb3IgPyBudWxsIDogYnJlYWtwb2ludElkLCBbcmF3TG9jYXRpb25dKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBEZWJ1Z2dlckFnZW50LnNldEJyZWFrcG9pbnQo
bG9jYXRpb24sIGNvbmRpdGlvbiwgZGlkU2V0QnJlYWtwb2ludC5iaW5kKHRoaXMpKTsKKyAgICAg
ICAgRGVidWdnZXJBZ2VudC5zZXRCcmVha3BvaW50KHJhd0xvY2F0aW9uLCBjb25kaXRpb24sIGRp
ZFNldEJyZWFrcG9pbnQuYmluZCh0aGlzKSk7CiAgICAgICAgIFdlYkluc3BlY3Rvci51c2VyTWV0
cmljcy5TY3JpcHRzQnJlYWtwb2ludFNldC5yZWNvcmQoKTsKICAgICB9LAogCkBAIC0yMTAsNyAr
MjE1LDggQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlID0gewogICAgICAq
LwogICAgIF9icmVha3BvaW50UmVzb2x2ZWQ6IGZ1bmN0aW9uKGJyZWFrcG9pbnRJZCwgbG9jYXRp
b24pCiAgICAgewotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuQnJlYWtwb2ludFJlc29sdmVkLCB7YnJlYWtwb2lu
dElkOiBicmVha3BvaW50SWQsIGxvY2F0aW9uOiBsb2NhdGlvbn0pOworICAgICAgICB2YXIgcmF3
TG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9u
fSAqLyBsb2NhdGlvbjsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkJyZWFrcG9pbnRSZXNvbHZlZCwge2JyZWFr
cG9pbnRJZDogYnJlYWtwb2ludElkLCBsb2NhdGlvbjogcmF3TG9jYXRpb259KTsKICAgICB9LAog
CiAgICAgX2dsb2JhbE9iamVjdENsZWFyZWQ6IGZ1bmN0aW9uKCkKQEAgLTM2NywyMCArMzczLDIw
IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5TY3JpcHR9IHNjcmlwdAogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBs
aW5lTnVtYmVyCiAgICAgICogQHBhcmFtIHtudW1iZXJ9IGNvbHVtbk51bWJlcgotICAgICAqIEBy
ZXR1cm4ge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259CisgICAgICogQHJldHVybiB7V2ViSW5zcGVj
dG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259CiAgICAgICovCiAgICAgY3JlYXRlUmF3TG9jYXRp
b246IGZ1bmN0aW9uKHNjcmlwdCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsKICAg
ICAgICAgaWYgKHNjcmlwdC5zb3VyY2VVUkwpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVh
dGVSYXdMb2NhdGlvbkJ5VVJMKHNjcmlwdC5zb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcikKLSAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2Nh
dGlvbihzY3JpcHQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CisgICAgICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb24oc2NyaXB0LnNjcmlwdElkLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogICAgIH0sCiAKICAgICAvKioKICAgICAgKiBAcGFy
YW0ge3N0cmluZ30gc291cmNlVVJMCiAgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIK
ICAgICAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1uTnVtYmVyCi0gICAgICogQHJldHVybiB7RGVi
dWdnZXJBZ2VudC5Mb2NhdGlvbn0KKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuRGVidWdn
ZXJNb2RlbC5Mb2NhdGlvbn0KICAgICAgKi8KICAgICBjcmVhdGVSYXdMb2NhdGlvbkJ5VVJMOiBm
dW5jdGlvbihzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICB7CkBAIC0z
OTcsNyArNDAzLDcgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgY2xvc2VzdFNjcmlwdCA9IHNjcmlwdDsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBjbG9zZXN0U2NyaXB0ID8gbmV3IFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9uKGNsb3Nlc3RTY3JpcHQsIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcikgOiBudWxsOworICAgICAgICByZXR1cm4gY2xvc2VzdFNjcmlwdCA/IG5ldyBXZWJJ
bnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbihjbG9zZXN0U2NyaXB0LnNjcmlwdElkLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpIDogbnVsbDsKICAgICB9LAogCiAgICAgLyoqCkBAIC00
MjcsNyArNDMzLDcgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlID0gewog
ICAgICAgICB7CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuRXhlY3V0aW9uTGluZUNoYW5nZWQsIHVpTG9j
YXRpb24pOwogICAgICAgICB9Ci0gICAgICAgIHRoaXMuX2V4ZWN1dGlvbkxpbmVMaXZlTG9jYXRp
b24gPSBjYWxsRnJhbWUuc2NyaXB0LmNyZWF0ZUxpdmVMb2NhdGlvbihjYWxsRnJhbWUuX3BheWxv
YWQubG9jYXRpb24sIHVwZGF0ZUV4ZWN1dGlvbkxpbmUuYmluZCh0aGlzKSk7CisgICAgICAgIHRo
aXMuX2V4ZWN1dGlvbkxpbmVMaXZlTG9jYXRpb24gPSBjYWxsRnJhbWUuc2NyaXB0LmNyZWF0ZUxp
dmVMb2NhdGlvbihjYWxsRnJhbWUubG9jYXRpb24sIHVwZGF0ZUV4ZWN1dGlvbkxpbmUuYmluZCh0
aGlzKSk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtNTE2LDE4ICs1MjIsMTggQEAgV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAg
KiBAcGFyYW0ge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259IGxvY2F0aW9uCisgICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24KICAgICAg
KiBAcGFyYW0ge2Z1bmN0aW9uKFdlYkluc3BlY3Rvci5VSUxvY2F0aW9uKTooYm9vbGVhbnx1bmRl
ZmluZWQpfSB1cGRhdGVEZWxlZ2F0ZQogICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5TY3Jp
cHQuTG9jYXRpb259CiAgICAgICovCi0gICAgY3JlYXRlTGl2ZUxvY2F0aW9uOiBmdW5jdGlvbihs
b2NhdGlvbiwgdXBkYXRlRGVsZWdhdGUpCisgICAgY3JlYXRlTGl2ZUxvY2F0aW9uOiBmdW5jdGlv
bihyYXdMb2NhdGlvbiwgdXBkYXRlRGVsZWdhdGUpCiAgICAgewotICAgICAgICB2YXIgc2NyaXB0
ID0gdGhpcy5fc2NyaXB0c1tsb2NhdGlvbi5zY3JpcHRJZF07Ci0gICAgICAgIHJldHVybiBzY3Jp
cHQuY3JlYXRlTGl2ZUxvY2F0aW9uKGxvY2F0aW9uLCB1cGRhdGVEZWxlZ2F0ZSk7CisgICAgICAg
IHZhciBzY3JpcHQgPSB0aGlzLl9zY3JpcHRzW3Jhd0xvY2F0aW9uLnNjcmlwdElkXTsKKyAgICAg
ICAgcmV0dXJuIHNjcmlwdC5jcmVhdGVMaXZlTG9jYXRpb24ocmF3TG9jYXRpb24sIHVwZGF0ZURl
bGVnYXRlKTsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50
LkxvY2F0aW9ufSByYXdMb2NhdGlvbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTW9kZWwuTG9jYXRpb259IHJhd0xvY2F0aW9uCiAgICAgICogQHJldHVybiB7P1dlYkluc3Bl
Y3Rvci5VSUxvY2F0aW9ufQogICAgICAqLwogICAgIHJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uOiBm
dW5jdGlvbihyYXdMb2NhdGlvbikKQEAgLTY2OCwxMSArNjc0LDEyIEBAIFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlck1vZGVsLkNhbGxGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgot
ICAgICAqIEByZXR1cm4ge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259CisgICAgICogQHJldHVybiB7
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259CiAgICAgICovCiAgICAgZ2V0IGxv
Y2F0aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9wYXlsb2FkLmxvY2F0aW9uOwor
ICAgICAgICB2YXIgcmF3TG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5EZWJ1Z2dl
ck1vZGVsLkxvY2F0aW9ufSAqLyB0aGlzLl9wYXlsb2FkLmxvY2F0aW9uOworICAgICAgICByZXR1
cm4gcmF3TG9jYXRpb247CiAgICAgfSwKIAogICAgIC8qKgpAQCAtNzA4LDcgKzcxNSw3IEBAIFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkNhbGxGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICov
CiAgICAgY3JlYXRlTGl2ZUxvY2F0aW9uOiBmdW5jdGlvbih1cGRhdGVEZWxlZ2F0ZSkKICAgICB7
Ci0gICAgICAgIHZhciBsb2NhdGlvbiA9IHRoaXMuX3NjcmlwdC5jcmVhdGVMaXZlTG9jYXRpb24o
dGhpcy5fcGF5bG9hZC5sb2NhdGlvbiwgdXBkYXRlRGVsZWdhdGUpOworICAgICAgICB2YXIgbG9j
YXRpb24gPSB0aGlzLl9zY3JpcHQuY3JlYXRlTGl2ZUxvY2F0aW9uKHRoaXMubG9jYXRpb24sIHVw
ZGF0ZURlbGVnYXRlKTsKICAgICAgICAgdGhpcy5fbG9jYXRpb25zLnB1c2gobG9jYXRpb24pOwog
ICAgICAgICByZXR1cm4gbG9jYXRpb247CiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJSZXNvdXJjZUJpbmRpbmcuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUmVzb3VyY2VCaW5kaW5nLmpz
CmluZGV4IDRkNmY1NzExZTY5NDE3ZjIyMDZmMTEwZDJmNDAzYzg0ZTFlYTQ1YjkuLjVhMTAyMGU2
NGZhNWQ0YmU2NDBlMTc2ZGJiZjcxMjY4ZWZjMzc2ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJSZXNvdXJjZUJpbmRpbmcuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclJlc291cmNlQmluZGlu
Zy5qcwpAQCAtNDAsMTMgKzQwLDEzIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclJlc291cmNlQmlu
ZGluZyA9IGZ1bmN0aW9uKHVpU291cmNlQ29kZVByb3ZpZGVyKQogfQogCiAvKioKLSAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCisgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlfSBqYXZhU2NyaXB0U291cmNlCiAgKiBAcGFyYW0g
e3N0cmluZ30gbmV3U291cmNlCiAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9Qcm90b2NvbC5FcnJvcil9
IGNhbGxiYWNrCiAgKi8KLVdlYkluc3BlY3Rvci5EZWJ1Z2dlclJlc291cmNlQmluZGluZy5zZXRT
Y3JpcHRTb3VyY2UgPSBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIG5ld1NvdXJjZSwgY2FsbGJhY2sp
CitXZWJJbnNwZWN0b3IuRGVidWdnZXJSZXNvdXJjZUJpbmRpbmcuc2V0U2NyaXB0U291cmNlID0g
ZnVuY3Rpb24oamF2YVNjcmlwdFNvdXJjZSwgbmV3U291cmNlLCBjYWxsYmFjaykKIHsKLSAgICB2
YXIgcmF3TG9jYXRpb24gPSB1aVNvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24oMCwg
MCk7CisgICAgdmFyIHJhd0xvY2F0aW9uID0gamF2YVNjcmlwdFNvdXJjZS51aUxvY2F0aW9uVG9S
YXdMb2NhdGlvbigwLCAwKTsKICAgICB2YXIgc2NyaXB0ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
TW9kZWwuc2NyaXB0Rm9ySWQocmF3TG9jYXRpb24uc2NyaXB0SWQpOwogCiAgICAgLyoqCkBAIC02
MCw3ICs2MCw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclJlc291cmNlQmluZGluZy5zZXRTY3Jp
cHRTb3VyY2UgPSBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIG5lCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgcmVzb3VyY2UgPSB1aVNvdXJjZUNvZGUucmVzb3Vy
Y2UoKTsKKyAgICAgICAgdmFyIHJlc291cmNlID0gamF2YVNjcmlwdFNvdXJjZS5yZXNvdXJjZSgp
OwogICAgICAgICBpZiAocmVzb3VyY2UpCiAgICAgICAgICAgICByZXNvdXJjZS5hZGRSZXZpc2lv
bihuZXdTb3VyY2UpOwogCkBAIC05MSwyNCArOTEsMjQgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
UmVzb3VyY2VCaW5kaW5nLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCFtYWpvckNoYW5nZSkK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gV2ViSW5z
cGVjdG9yLkphdmFTY3JpcHRTb3VyY2UuamF2YVNjcmlwdFNvdXJjZUZvclJlc291cmNlLmdldChy
ZXNvdXJjZSk7Ci0gICAgICAgIGlmICghdWlTb3VyY2VDb2RlKSB7CisgICAgICAgIHZhciBqYXZh
U2NyaXB0U291cmNlID0gV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2UuamF2YVNjcmlwdFNv
dXJjZUZvclJlc291cmNlLmdldChyZXNvdXJjZSk7CisgICAgICAgIGlmICghamF2YVNjcmlwdFNv
dXJjZSkgewogICAgICAgICAgICAgdXNlckNhbGxiYWNrKCJSZXNvdXJjZSBpcyBub3QgZWRpdGFi
bGUiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHJlc291cmNl
LnJlcXVlc3RDb250ZW50KHRoaXMuX3NldENvbnRlbnRXaXRoSW5pdGlhbENvbnRlbnQuYmluZCh0
aGlzLCB1aVNvdXJjZUNvZGUsIGNvbnRlbnQsIHVzZXJDYWxsYmFjaykpOworICAgICAgICByZXNv
dXJjZS5yZXF1ZXN0Q29udGVudCh0aGlzLl9zZXRDb250ZW50V2l0aEluaXRpYWxDb250ZW50LmJp
bmQodGhpcywgamF2YVNjcmlwdFNvdXJjZSwgY29udGVudCwgdXNlckNhbGxiYWNrKSk7CiAgICAg
fSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0g
dWlTb3VyY2VDb2RlCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJj
ZX0gamF2YVNjcmlwdFNvdXJjZQogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50CiAgICAg
ICogQHBhcmFtIHtmdW5jdGlvbig/c3RyaW5nKX0gdXNlckNhbGxiYWNrCiAgICAgICogQHBhcmFt
IHs/c3RyaW5nfSBvbGRDb250ZW50CiAgICAgICogQHBhcmFtIHtib29sZWFufSBvbGRDb250ZW50
RW5jb2RlZAogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtaW1lVHlwZQogICAgICAqLwotICAgIF9z
ZXRDb250ZW50V2l0aEluaXRpYWxDb250ZW50OiBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIGNvbnRl
bnQsIHVzZXJDYWxsYmFjaywgb2xkQ29udGVudCwgb2xkQ29udGVudEVuY29kZWQsIG1pbWVUeXBl
KQorICAgIF9zZXRDb250ZW50V2l0aEluaXRpYWxDb250ZW50OiBmdW5jdGlvbihqYXZhU2NyaXB0
U291cmNlLCBjb250ZW50LCB1c2VyQ2FsbGJhY2ssIG9sZENvbnRlbnQsIG9sZENvbnRlbnRFbmNv
ZGVkLCBtaW1lVHlwZSkKICAgICB7CiAgICAgICAgIC8qKgogICAgICAgICAgKiBAdGhpcyB7V2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyUmVzb3VyY2VCaW5kaW5nfQpAQCAtMTE5LDcgKzExOSw3IEBAIFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlclJlc291cmNlQmluZGluZy5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICBpZiAodXNlckNhbGxiYWNrKQogICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhlcnJv
cik7CiAgICAgICAgIH0KLSAgICAgICAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUmVzb3VyY2VCaW5k
aW5nLnNldFNjcmlwdFNvdXJjZSh1aVNvdXJjZUNvZGUsIGNvbnRlbnQsIGNhbGxiYWNrLmJpbmQo
dGhpcykpOworICAgICAgICBXZWJJbnNwZWN0b3IuRGVidWdnZXJSZXNvdXJjZUJpbmRpbmcuc2V0
U2NyaXB0U291cmNlKGphdmFTY3JpcHRTb3VyY2UsIGNvbnRlbnQsIGNhbGxiYWNrLmJpbmQodGhp
cykpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9KYXZhU2NyaXB0U291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9KYXZhU2NyaXB0U291cmNlLmpzCmluZGV4IDg5Zjc4M2E5NjJhZjMzOWEwODk1Yjhi
ODIwZTEyYjMzN2Q4OGUwMTIuLjFhNGQ4NTE1MTQwYTZhMDA4ZDkyOGJhOWQxYTE5NGRjYzBkOWYz
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNj
cmlwdFNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ph
dmFTY3JpcHRTb3VyY2UuanMKQEAgLTE0MiwxMiArMTQyLDE0IEBAIFdlYkluc3BlY3Rvci5KYXZh
U2NyaXB0U291cmNlLnByb3RvdHlwZSA9IHsKICAgICAvKioKICAgICAgKiBAcGFyYW0ge251bWJl
cn0gbGluZU51bWJlcgogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2x1bW5OdW1iZXIKLSAgICAg
KiBAcmV0dXJuIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufQorICAgICAqIEByZXR1cm4ge1dlYklu
c3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufQogICAgICAqLwogICAgIHVpTG9jYXRpb25U
b1Jhd0xvY2F0aW9uOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewog
ICAgICAgICB2YXIgbG9jYXRpb24gPSB0aGlzLl9mb3JtYXR0ZXJNYXBwaW5nLmZvcm1hdHRlZFRv
T3JpZ2luYWwobGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKLSAgICAgICAgcmV0dXJuIFdlYklu
c3BlY3Rvci5VSVNvdXJjZUNvZGUucHJvdG90eXBlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uLmNh
bGwodGhpcywgbG9jYXRpb25bMF0sIGxvY2F0aW9uWzFdKTsKKyAgICAgICAgdmFyIHJhd0xvY2F0
aW9uID0gV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZS5wcm90b3R5cGUudWlMb2NhdGlvblRvUmF3
TG9jYXRpb24uY2FsbCh0aGlzLCBsb2NhdGlvblswXSwgbG9jYXRpb25bMV0pOworICAgICAgICB2
YXIgZGVidWdnZXJNb2RlbExvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRGVidWdn
ZXJNb2RlbC5Mb2NhdGlvbn0gKi8gcmF3TG9jYXRpb247CisgICAgICAgIHJldHVybiBkZWJ1Z2dl
ck1vZGVsTG9jYXRpb247CiAgICAgfSwKIAogICAgIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9MaW5raWZpZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0xpbmtpZmllci5qcwppbmRleCAzNjUyNjY5MzljZjFjNjZjNTA3
Yzc3MzkxNDFiN2Q4NWU1YTFhYWE3Li5mYWIxOGJhZTFkN2ZlZDY5NDEwOWE3MDMyZTVjZWJlMjNi
OWYyZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0xp
bmtpZmllci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0xpbmtp
Zmllci5qcwpAQCAtNjksNyArNjksNyBAQCBXZWJJbnNwZWN0b3IuTGlua2lmaWVyLnByb3RvdHlw
ZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50Lkxv
Y2F0aW9ufSByYXdMb2NhdGlvbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
TW9kZWwuTG9jYXRpb259IHJhd0xvY2F0aW9uCiAgICAgICogQHBhcmFtIHtzdHJpbmc9fSBjbGFz
c2VzCiAgICAgICovCiAgICAgbGlua2lmeVJhd0xvY2F0aW9uOiBmdW5jdGlvbihyYXdMb2NhdGlv
biwgY2xhc3NlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvT2JqZWN0UG9wb3ZlckhlbHBlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvT2JqZWN0UG9wb3ZlckhlbHBlci5qcwppbmRleCA2MWU4ZTYxOWVmNDdiZWRjODVlNDkz
NjQwYmQ0MDU2ZWJjYWY2YTcxLi5jNGY0MjVlNjhmMDUyODkwY2I3Yzc5M2Q2ZmFmZDNiMzBlY2Vi
YmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL09iamVj
dFBvcG92ZXJIZWxwZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9PYmplY3RQb3BvdmVySGVscGVyLmpzCkBAIC05MCw3ICs5MCw4IEBAIFdlYkluc3BlY3Rvci5P
YmplY3RQb3BvdmVySGVscGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9uTmFtZS50ZXh0Q29udGVudCA9IHJlc3BvbnNlLm5hbWUgfHwgcmVzcG9uc2UuaW5m
ZXJyZWROYW1lIHx8IHJlc3BvbnNlLmRpc3BsYXlOYW1lIHx8IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiKGFub255bW91cyBmdW5jdGlvbikiKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy5fbGlua2lmaWVyID0gbmV3IFdlYkluc3BlY3Rvci5MaW5raWZpZXIoKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBsaW5rID0gdGhpcy5fbGlua2lmaWVyLmxpbmtpZnlSYXdMb2NhdGlv
bihyZXNwb25zZS5sb2NhdGlvbiwgImZ1bmN0aW9uLWxvY2F0aW9uLWxpbmsiKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciByYXdMb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9y
LkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259ICovIHJlc3BvbnNlLmxvY2F0aW9uOworICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIGxpbmsgPSB0aGlzLl9saW5raWZpZXIubGlua2lmeVJhd0xvY2F0
aW9uKHJhd0xvY2F0aW9uLCAiZnVuY3Rpb24tbG9jYXRpb24tbGluayIpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGxpbmspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUu
YXBwZW5kQ2hpbGQobGluayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VIZWxwZXIuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1ByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlSGVs
cGVyLmpzCmluZGV4IGZlNDgwZTIwZWZlNGVmNTc0NzRlMjExMWEwZjhlZWMwMTkwZWFhNWQuLmEx
NTRkYzRiYTdjZDI2MWEzZjJhNTM3MTQzYzNkZTA0MDc1MGQ5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VI
ZWxwZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9QcmVzZW50
YXRpb25Db25zb2xlTWVzc2FnZUhlbHBlci5qcwpAQCAtNjUsNyArNjUsNyBAQCBXZWJJbnNwZWN0
b3IuUHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VIZWxwZXIucHJvdG90eXBlID0gewogCiAgICAg
LyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2V9IG1lc3NhZ2UK
LSAgICAgKiBAcGFyYW0ge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259IHJhd0xvY2F0aW9uCisgICAg
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbn0gcmF3TG9jYXRp
b24KICAgICAgKi8KICAgICBfYWRkQ29uc29sZU1lc3NhZ2VUb1NjcmlwdDogZnVuY3Rpb24obWVz
c2FnZSwgcmF3TG9jYXRpb24pCiAgICAgewpAQCAtMTMwLDcgKzEzMCw3IEBAIFdlYkluc3BlY3Rv
ci5QcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZUhlbHBlci5wcm90b3R5cGUgPSB7CiAvKioKICAq
IEBjb25zdHJ1Y3RvcgogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2V9IG1l
c3NhZ2UKLSAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24KKyAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259IHJhd0xvY2F0aW9u
CiAgKi8KIFdlYkluc3BlY3Rvci5QcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZSA9IGZ1bmN0aW9u
KG1lc3NhZ2UsIHJhd0xvY2F0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9SYXdTb3VyY2VDb2RlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9SYXdTb3VyY2VDb2RlLmpzCmluZGV4IDdiYTFkNmVmMmMwZWU0MmQzOGFj
ZDkzNThhMTc0ZjA3OTk4MjBiZDkuLjdlMWI0NGNkYWE1YmUwOWYzMGNhMGM1YjhhYzljMWFhMmZi
MTA0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmF3
U291cmNlQ29kZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jh
d1NvdXJjZUNvZGUuanMKQEAgLTc2LDcgKzc2LDcgQEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNv
ZGUucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge0RlYnVn
Z2VyQWdlbnQuTG9jYXRpb259IHJhd0xvY2F0aW9uCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24KICAgICAgKiBAcmV0dXJuIHtX
ZWJJbnNwZWN0b3IuVUlMb2NhdGlvbn0KICAgICAgKi8KICAgICByYXdMb2NhdGlvblRvVUlMb2Nh
dGlvbjogZnVuY3Rpb24ocmF3TG9jYXRpb24pCkBAIC0xMTQsNyArMTE0LDcgQEAgV2ViSW5zcGVj
dG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBlID0gewogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCiAgICAgICogQHBhcmFtIHtudW1iZXJ9IGxp
bmVOdW1iZXIKICAgICAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1uTnVtYmVyCi0gICAgICogQHJl
dHVybiB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0KKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0
b3IuUmF3TG9jYXRpb259CiAgICAgICovCiAgICAgdWlMb2NhdGlvblRvUmF3TG9jYXRpb246IGZ1
bmN0aW9uKHVpU291cmNlQ29kZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VTY3Jp
cHRNYXBwaW5nLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZVNjcmlwdE1hcHBpbmcuanMKaW5kZXggOTVkZWJhYWUzYTcwYTgzNGFmZTRiYmRkODAyZTlhZDZh
M2ZkMjI5Zi4uYzk3ZWIwMWIxODQxM2JmZWY1YWRkNWNlYmYwZmNmMjhjM2M4Nzk0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1h
cHBpbmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZVNjcmlwdE1hcHBpbmcuanMKQEAgLTQ1LDIwICs0NSwyMSBAQCBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VTY3JpcHRNYXBwaW5nID0gZnVuY3Rpb24oKQogCiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3Jp
cHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge0RlYnVnZ2Vy
QWdlbnQuTG9jYXRpb259IHJhd0xvY2F0aW9uCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
UmF3TG9jYXRpb259IHJhd0xvY2F0aW9uCiAgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlVJ
TG9jYXRpb259CiAgICAgICovCiAgICAgcmF3TG9jYXRpb25Ub1VJTG9jYXRpb246IGZ1bmN0aW9u
KHJhd0xvY2F0aW9uKQogICAgIHsKLSAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSB0aGlzLl9y
YXdTb3VyY2VDb2RlRm9yU2NyaXB0SWRbcmF3TG9jYXRpb24uc2NyaXB0SWRdOwotICAgICAgICBy
ZXR1cm4gcmF3U291cmNlQ29kZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihyYXdMb2NhdGlvbik7
CisgICAgICAgIHZhciBkZWJ1Z2dlck1vZGVsTG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3Bl
Y3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSAqLyByYXdMb2NhdGlvbjsKKyAgICAgICAgdmFy
IHJhd1NvdXJjZUNvZGUgPSB0aGlzLl9yYXdTb3VyY2VDb2RlRm9yU2NyaXB0SWRbZGVidWdnZXJN
b2RlbExvY2F0aW9uLnNjcmlwdElkXTsKKyAgICAgICAgcmV0dXJuIHJhd1NvdXJjZUNvZGUucmF3
TG9jYXRpb25Ub1VJTG9jYXRpb24oZGVidWdnZXJNb2RlbExvY2F0aW9uKTsKICAgICB9LAogCiAg
ICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJj
ZUNvZGUKICAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJlcgogICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBjb2x1bW5OdW1iZXIKLSAgICAgKiBAcmV0dXJuIHtEZWJ1Z2dlckFnZW50LkxvY2F0
aW9ufQorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9u
fQogICAgICAqLwogICAgIHVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5jdGlvbih1aVNvdXJj
ZUNvZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzCmluZGV4IDQzNzIwMDQzYzIzNjM0NjUxNmIw
YzMzNzAzMzc1NTliZDk5OWRmMzkuLmM5ZmNkM2EyM2VmYmEyNzBkMjkzMzU2MTUwZjM2ODFlZDQw
ZGQwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2Ny
aXB0LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0Lmpz
CkBAIC0xNzMsNyArMTczLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdC5wcm90b3R5cGUgPSB7CiAg
ICAgICovCiAgICAgcmF3TG9jYXRpb25Ub1VJTG9jYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcikKICAgICB7Ci0gICAgICAgIHZhciB1aUxvY2F0aW9uID0gdGhpcy5fc291
cmNlTWFwcGluZy5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihuZXcgV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTW9kZWwuTG9jYXRpb24odGhpcywgbGluZU51bWJlciwgY29sdW1uTnVtYmVyIHx8IDApKTsK
KyAgICAgICAgdmFyIHVpTG9jYXRpb24gPSB0aGlzLl9zb3VyY2VNYXBwaW5nLnJhd0xvY2F0aW9u
VG9VSUxvY2F0aW9uKG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbih0aGlz
LnNjcmlwdElkLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIgfHwgMCkpOwogICAgICAgICByZXR1
cm4gdWlMb2NhdGlvbi51aVNvdXJjZUNvZGUub3ZlcnJpZGVMb2NhdGlvbih1aUxvY2F0aW9uKTsK
ICAgICB9LAogCkBAIC0xODgsNyArMTg4LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdC5wcm90b3R5
cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5M
b2NhdGlvbn0gcmF3TG9jYXRpb24KKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5EZWJ1Z2dl
ck1vZGVsLkxvY2F0aW9ufSByYXdMb2NhdGlvbgogICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oV2Vi
SW5zcGVjdG9yLlVJTG9jYXRpb24pOihib29sZWFufHVuZGVmaW5lZCl9IHVwZGF0ZURlbGVnYXRl
CiAgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlNjcmlwdC5Mb2NhdGlvbn0KICAgICAgKi8K
QEAgLTIwNSw3ICsyMDUsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZSA9IHsKIC8q
KgogICogQGNvbnN0cnVjdG9yCiAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TY3JpcHR9IHNjcmlw
dAotICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufSByYXdMb2NhdGlvbgorICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24KICAq
IEBwYXJhbSB7ZnVuY3Rpb24oV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24pOihib29sZWFufHVuZGVm
aW5lZCl9IHVwZGF0ZURlbGVnYXRlCiAgKi8KIFdlYkluc3BlY3Rvci5TY3JpcHQuTG9jYXRpb24g
PSBmdW5jdGlvbihzY3JpcHQsIHJhd0xvY2F0aW9uLCB1cGRhdGVEZWxlZ2F0ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0U25pcHBldE1vZGVs
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRTbmlwcGV0TW9k
ZWwuanMKaW5kZXggMDAzZWY5NGNiZTdmYmU3OWUxMGIzNDg5MWU4OTExMGEzMzM4ZTJkYy4uOTU5
MzA4OWNkMTI4ZjQzYTBlZDU2ZTFkYWFmZDM5YzQyMWIxYWZhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRTbmlwcGV0TW9kZWwuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRTbmlwcGV0TW9kZWwuanMK
QEAgLTEzMyw3ICsxMzMsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0U25pcHBldE1vZGVsLnByb3Rv
dHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50
LkxvY2F0aW9ufSByYXdMb2NhdGlvbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTW9kZWwuTG9jYXRpb259IHJhd0xvY2F0aW9uCiAgICAgICogQHJldHVybiB7V2ViSW5zcGVj
dG9yLlVJTG9jYXRpb259CiAgICAgICovCiAgICAgX3Jhd0xvY2F0aW9uVG9VSUxvY2F0aW9uOiBm
dW5jdGlvbihyYXdMb2NhdGlvbikKQEAgLTE1MSw3ICsxNTEsNyBAQCBXZWJJbnNwZWN0b3IuU2Ny
aXB0U25pcHBldE1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5l
TnVtYmVyCiAgICAgICogQHBhcmFtIHtudW1iZXJ9IGNvbHVtbk51bWJlcgotICAgICAqIEByZXR1
cm4ge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259CisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9y
LkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259CiAgICAgICovCiAgICAgX3VpTG9jYXRpb25Ub1Jhd0xv
Y2F0aW9uOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikK
ICAgICB7CkBAIC0zNTAsMTkgKzM1MCwyMCBAQCBXZWJJbnNwZWN0b3IuU25pcHBldFNjcmlwdE1h
cHBpbmcgPSBmdW5jdGlvbihzY3JpcHRTbmlwcGV0TW9kZWwpCiAKIFdlYkluc3BlY3Rvci5Tbmlw
cGV0U2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtE
ZWJ1Z2dlckFnZW50LkxvY2F0aW9ufSByYXdMb2NhdGlvbgorICAgICAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLlJhd0xvY2F0aW9ufSByYXdMb2NhdGlvbgogICAgICAqIEByZXR1cm4ge1dlYkluc3Bl
Y3Rvci5VSUxvY2F0aW9ufQogICAgICAqLwogICAgIHJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uOiBm
dW5jdGlvbihyYXdMb2NhdGlvbikKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9zY3JpcHRT
bmlwcGV0TW9kZWwuX3Jhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKHJhd0xvY2F0aW9uKTsKKyAgICAg
ICAgdmFyIGRlYnVnZ2VyTW9kZWxMb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRl
YnVnZ2VyTW9kZWwuTG9jYXRpb259ICovIHJhd0xvY2F0aW9uOworICAgICAgICByZXR1cm4gdGhp
cy5fc2NyaXB0U25pcHBldE1vZGVsLl9yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihkZWJ1Z2dlck1v
ZGVsTG9jYXRpb24pOwogICAgIH0sCiAKICAgICAvKioKICAgICAgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBs
aW5lTnVtYmVyCiAgICAgICogQHBhcmFtIHtudW1iZXJ9IGNvbHVtbk51bWJlcgotICAgICAqIEBy
ZXR1cm4ge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259CisgICAgICogQHJldHVybiB7V2ViSW5zcGVj
dG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259CiAgICAgICovCiAgICAgdWlMb2NhdGlvblRvUmF3
TG9jYXRpb246IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U291cmNlTWFwcGluZy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291
cmNlTWFwcGluZy5qcwppbmRleCA0MzJhNzZkYjkwYjBkYjg0NDEyY2ZmYzA3OWI1ZDk1MDAxN2U0
ZjgzLi44ODc4ZjExMzU5Y2RlOGM2MTcyZWNiZmYxODdkMDY1YmE0NDFmYTNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZU1hcHBpbmcuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VNYXBwaW5nLmpzCkBA
IC0zNyw3ICszNyw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBwaW5nID0gZnVuY3Rpb24oKQog
CiBXZWJJbnNwZWN0b3IuU291cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgLyoqCi0gICAg
ICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufSByYXdMb2NhdGlvbgorICAgICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLlJhd0xvY2F0aW9ufSByYXdMb2NhdGlvbgogICAgICAqIEByZXR1
cm4ge1dlYkluc3BlY3Rvci5VSUxvY2F0aW9ufQogICAgICAqLwogICAgIHJhd0xvY2F0aW9uVG9V
SUxvY2F0aW9uOiBmdW5jdGlvbihyYXdMb2NhdGlvbikgeyB9LApAQCAtNDYsNyArNDYsNyBAQCBX
ZWJJbnNwZWN0b3IuU291cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKICAgICAgKiBAcGFyYW0ge251
bWJlcn0gbGluZU51bWJlcgogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2x1bW5OdW1iZXIKLSAg
ICAgKiBAcmV0dXJuIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufQorICAgICAqIEByZXR1cm4ge1dl
Ykluc3BlY3Rvci5SYXdMb2NhdGlvbn0KICAgICAgKi8KICAgICB1aUxvY2F0aW9uVG9SYXdMb2Nh
dGlvbjogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpIHsg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVNv
dXJjZUNvZGUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNl
Q29kZS5qcwppbmRleCA5MmNiOWFkYjcxODQxY2ZhYzM2NzBhMTA0ZDMzZDg5ZTM2OTMzNzAzLi41
NmMxZTMxMzdkNDIwYTg5MDY1MDgzNDE0OGI1OGZkMTQzZjM0NWVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29kZS5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29kZS5qcwpAQCAtMjg3LDcg
KzI4Nyw3IEBAIFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUucHJvdG90eXBlID0gewogICAgIC8q
KgogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCiAgICAgICogQHBhcmFtIHtudW1i
ZXJ9IGNvbHVtbk51bWJlcgotICAgICAqIEByZXR1cm4ge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259
CisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlJhd0xvY2F0aW9ufQogICAgICAqLwogICAg
IHVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIpCiAgICAgewpAQCAtNDIwLDEwICs0MjAsMTcgQEAgV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24g
PSBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKIAogV2Vi
SW5zcGVjdG9yLlVJTG9jYXRpb24ucHJvdG90eXBlID0gewogICAgIC8qKgotICAgICAqIEByZXR1
cm4ge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259CisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9y
LlJhd0xvY2F0aW9ufQogICAgICAqLwogICAgIHVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5j
dGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy51aVNvdXJjZUNvZGUudWlMb2NhdGlv
blRvUmF3TG9jYXRpb24odGhpcy5saW5lTnVtYmVyLCB0aGlzLmNvbHVtbk51bWJlcik7CiAgICAg
fQogfQorCisvKioKKyAqIEBpbnRlcmZhY2UKKyAqLworV2ViSW5zcGVjdG9yLlJhd0xvY2F0aW9u
ID0gZnVuY3Rpb24oKQoreworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNhYzRiNTVmMWJmMWEwZWJlZDFmYjFlMjk4NGU1
Njg2NWNiODA5YTUuLjI1ZDgwODcxYzNmOTI3MGNhZWM5MDM3ZTgxMDUxOWU2NmE2MDliOWYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNS0yNSAgVnNldm9sb2QgVmxhc292ICA8dnNldmlr
QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBMaW1pdCBEZWJ1Z2dlckFn
ZW50LkxvY2F0aW9uIHVzZSB0byBEZWJ1Z2dlck1vZGVsIG9ubHksIGludHJvZHVjZSBXZWJJbnNw
ZWN0b3IuUmF3TG9jYXRpb24gdG8gYmUgdXNlZCBlbHNld2hlcmUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzI3MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFr
cG9pbnQtbWFuYWdlci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1p
bi1pbmxpbmUtc2NyaXB0Lmh0bWw6CisKIDIwMTItMDUtMjUgIFphbiBEb2JlcnNlayAgPHphbmRv
YmVyc2VrQGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEdUSyBnYXJkZW5pbmcgYWZ0
ZXIgcjExODE2NiwgcjExODI5MSBhbmQgcjExODQ0Mi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LW1hbmFnZXIuaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LW1hbmFnZXIuaHRtbAppbmRleCBhNDMyNjRj
ZjhjMDYxZWMyNmQ1MWI3MTRlMzg2OTQ1MmI0NGI4NmM4Li4wYjVlYjZhZTFmNmMxOTA2Zjg1MzJk
YzlkZWJmNDJmODQ1ZGM0MTVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvYnJlYWtwb2ludC1tYW5hZ2VyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL2JyZWFrcG9pbnQtbWFuYWdlci5odG1sCkBAIC0xNiw3ICsxNiw3IEBAIGZ1bmN0
aW9uIHRlc3QoKQogCiAgICAgICAgIHVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5jdGlvbih1
aVNvdXJjZUNvZGUsIGxpbmVOdW1iZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB7
IHNjcmlwdElkOiB1aVNvdXJjZUNvZGUudXJsLCBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXI6IDAgfTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTW9kZWwuTG9jYXRpb24odWlTb3VyY2VDb2RlLnVybCwgbGluZU51bWJlciwgMCk7CiAgICAg
ICAgIH0KICAgICB9OwogCkBAIC0yOCw3ICsyOCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAg
ICAgIHVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIGxpbmVO
dW1iZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB7IHNjcmlwdElkOiB1aVNvdXJj
ZUNvZGUudXJsLCBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyIC0gMTAsIGNvbHVtbk51bWJlcjogMCB9
OworICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2Nh
dGlvbih1aVNvdXJjZUNvZGUudXJsLCBsaW5lTnVtYmVyIC0gMTAsIDApOwogICAgICAgICB9CiAg
ICAgfTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNl
LWluLWlubGluZS1zY3JpcHQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9w
YXVzZS1pbi1pbmxpbmUtc2NyaXB0Lmh0bWwKaW5kZXggZDEzZGMzMjZkYjI5NjZjMGY2NDE3ZTZh
MzA1MjZmYWFhYzc1NzVmOS4uMzg5NDZhNTc0OTQ5MGUwZTlmNjQwYTJmN2Q4MzViYzMyOGYwYmFh
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWluLWlu
bGluZS1zY3JpcHQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1
c2UtaW4taW5saW5lLXNjcmlwdC5odG1sCkBAIC00OSw3ICs0OSw3IEBAIHZhciB0ZXN0ID0gZnVu
Y3Rpb24oKQogICAgICAgICBmb3IgKHZhciBzY3JpcHRJZCBpbiBXZWJJbnNwZWN0b3IuZGVidWdn
ZXJNb2RlbC5zY3JpcHRzKSB7CiAgICAgICAgICAgICB2YXIgc2NyaXB0ID0gV2ViSW5zcGVjdG9y
LmRlYnVnZ2VyTW9kZWwuc2NyaXB0c1tzY3JpcHRJZF07CiAgICAgICAgICAgICBpZiAoc2NyaXB0
LnNvdXJjZVVSTCAmJiBzY3JpcHQuc291cmNlVVJMLmluZGV4T2YodGVzdE5hbWUpICE9PSAtMSAm
JiBzY3JpcHQubGluZU9mZnNldCA9PSA2KSB7Ci0gICAgICAgICAgICAgICAgdmFyIGxvY2F0aW9u
ID0gbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9uKHNjcmlwdCwgNiwgMCk7
CisgICAgICAgICAgICAgICAgdmFyIGxvY2F0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dl
ck1vZGVsLkxvY2F0aW9uKHNjcmlwdC5zY3JpcHRJZCwgNiwgMCk7CiAgICAgICAgICAgICAgICAg
dmFyIHVpTG9jYXRpb24gPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5yYXdMb2NhdGlvblRv
VUlMb2NhdGlvbihsb2NhdGlvbik7CiAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVs
cy5zY3JpcHRzLnNob3dVSVNvdXJjZUNvZGUodWlMb2NhdGlvbi51aVNvdXJjZUNvZGUpOwogICAg
ICAgICAgICAgICAgIHZhciBzb3VyY2VGcmFtZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0
cy52aXNpYmxlVmlldzsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146055</attachid>
            <date>2012-06-06 10:07:37 -0700</date>
            <delta_ts>2012-06-09 03:47:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87270-20120606210736.patch</filename>
            <type>text/plain</type>
            <size>35010</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDEwNjBhODg5MjViODIy
MWViODFiYjZmYjgwNjZlZjM5YzhiNmFkMS4uNjdjMTYxMWQ5MmJkYzJhNThmMGZlZDhmOTA4MmZj
NTE2NWE1NTVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTA1LTI1ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IExpbWl0IERlYnVnZ2VyQWdlbnQuTG9jYXRpb24gdXNlIHRvIERlYnVnZ2VyTW9kZWwgb25s
eSwgaW50cm9kdWNlIFdlYkluc3BlY3Rvci5SYXdMb2NhdGlvbiB0byBiZSB1c2VkIGVsc2V3aGVy
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3Mjcw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9k
dWNlZCBXZWJJbnNwZWN0b3IuUmF3TG9jYXRpb24gaW50ZXJmYWNlLCBhIGdlbmVyaWMgcmF3IGxv
Y2F0aW9uIGluZGVwZW5kZW50IGZyb20gY29uY3JldGUgZG9tYWluIChTdHlsZXMsIERlYnVnZ2Vy
KS4KKyAgICAgICAgTWFkZSBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbiBpbXBs
ZW1lbnQgaXQgYW5kIHN3aXRjaGVkIGFsbCBkZWJ1Z2dlciByZWxhdGVkIG1ldGhvZHMgdG8gaXQu
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZS5fYnJlYWtw
b2ludFJlc29sdmVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVyU2Ny
aXB0TWFwcGluZy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db21waWxlclNjcmlwdE1hcHBp
bmcucHJvdG90eXBlLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVi
dWdnZXJNb2RlbC5Mb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2Rl
bC5wcm90b3R5cGUuY29udGludWVUb0xvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlck1vZGVsLnByb3RvdHlwZS5zZXRCcmVha3BvaW50QnlTY3JpcHRMb2NhdGlvbik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUuc2V0QnJlYWtwb2lu
dC5kaWRTZXRCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVs
LnByb3RvdHlwZS5zZXRCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dl
ck1vZGVsLnByb3RvdHlwZS5zZXRCcmVha3BvaW50QnlTb3VyY2VJZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUuX2JyZWFrcG9pbnRSZXNvbHZlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUuY3JlYXRlUmF3TG9j
YXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlLmNy
ZWF0ZVJhd0xvY2F0aW9uQnlVUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9k
ZWwucHJvdG90eXBlLnNldFNlbGVjdGVkQ2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZS5jcmVhdGVMaXZlTG9jYXRpb24pOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuQ2FsbEZyYW1lLnByb3RvdHlwZS5nZXQgbG9jYXRp
b24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuQ2FsbEZyYW1lLnByb3Rv
dHlwZS5jcmVhdGVMaXZlTG9jYXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
RGVidWdnZXJSZXNvdXJjZUJpbmRpbmcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdn
ZXJSZXNvdXJjZUJpbmRpbmcuc2V0U2NyaXB0U291cmNlLmRpZEVkaXRTY3JpcHRTb3VyY2UpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUmVzb3VyY2VCaW5kaW5nLnNldFNjcmlwdFNv
dXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJSZXNvdXJjZUJpbmRpbmcucHJv
dG90eXBlLnNldENvbnRlbnQuZ2V0IGlmKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dl
clJlc291cmNlQmluZGluZy5wcm90b3R5cGUuc2V0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRGVidWdnZXJSZXNvdXJjZUJpbmRpbmcucHJvdG90eXBlLl9zZXRDb250ZW50V2l0aElu
aXRpYWxDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRT
b3VyY2UuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZS5wcm90b3R5
cGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvTGlua2lmaWVyLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0UG9w
b3ZlckhlbHBlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3RQb3BvdmVySGVscGVy
LnByb3RvdHlwZS5fc2hvd09iamVjdFBvcG92ZXIuc2hvd09iamVjdFBvcG92ZXIuKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5PYmplY3RQb3BvdmVySGVscGVyLnByb3RvdHlwZS5fc2hvd09iamVj
dFBvcG92ZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJlc2VudGF0aW9uQ29u
c29sZU1lc3NhZ2VIZWxwZXIuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SYXdT
b3VyY2VDb2RlLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VTY3Jp
cHRNYXBwaW5nLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGlu
Zy5wcm90b3R5cGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24pOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdC5wcm90
b3R5cGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvU2NyaXB0U25pcHBldE1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNuaXBw
ZXRTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbik6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VNYXBwaW5nLmpzOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2RlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlJhd0xvY2F0aW9uKToKKwogMjAxMi0wNi0wNiAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJh
aXhAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZGlyZWN0aW9uIG9uIHRh
YmxlIHJvdyBncm91cCB3aXRoIGNvbGxhcHNpbmcgYm9yZGVycwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMKaW5kZXgg
NTQyMzBhZjQ0OTk4NTk2MjVlY2Q0YzRkOWM3ZWIxY2IzZjQ4ODhhNC4uZjFiZjkzNWNjNmQ0MmI0
NWQ0MzZlZjViYmYzMzk2MmYxYjI1NGIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzCkBAIC0xODYsNyArMTg2
LDcgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICBf
YnJlYWtwb2ludFJlc29sdmVkOiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZhciBi
cmVha3BvaW50SWQgPSAvKiogQHR5cGUge0RlYnVnZ2VyQWdlbnQuQnJlYWtwb2ludElkfSAqLyBl
dmVudC5kYXRhLmJyZWFrcG9pbnRJZDsKLSAgICAgICAgdmFyIGxvY2F0aW9uID0gLyoqIEB0eXBl
IHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufSAqLyBldmVudC5kYXRhLmxvY2F0aW9uOworICAgICAg
ICB2YXIgbG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxv
Y2F0aW9ufSAqLyBldmVudC5kYXRhLmxvY2F0aW9uOwogICAgICAgICB2YXIgYnJlYWtwb2ludCA9
IHRoaXMuX2JyZWFrcG9pbnRGb3JEZWJ1Z2dlcklkW2JyZWFrcG9pbnRJZF07CiAgICAgICAgIGlm
ICghYnJlYWtwb2ludCB8fCBicmVha3BvaW50Ll9pc1Byb3Zpc2lvbmFsKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMjgyLDcgKzI4Miw3IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdl
ci5CcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBh
cmFtIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufSBsb2NhdGlvbgorICAgICAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259IGxvY2F0aW9uCiAgICAgICovCiAgICAg
X2FkZFJlc29sdmVkTG9jYXRpb246IGZ1bmN0aW9uKGxvY2F0aW9uKQogICAgIHsKQEAgLTI5MCw3
ICsyOTAsNyBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuQnJlYWtwb2ludC5wcm90
b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2Vu
dC5Mb2NhdGlvbn0gbG9jYXRpb24KKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5EZWJ1Z2dl
ck1vZGVsLkxvY2F0aW9ufSBsb2NhdGlvbgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJ
TG9jYXRpb259IHVpTG9jYXRpb24KICAgICAgKi8KICAgICBfbG9jYXRpb25VcGRhdGVkOiBmdW5j
dGlvbihsb2NhdGlvbiwgdWlMb2NhdGlvbikKQEAgLTM2OCwxMSArMzY4LDEyIEBAIFdlYkluc3Bl
Y3Rvci5CcmVha3BvaW50TWFuYWdlci5CcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICBfc2V0
SW5EZWJ1Z2dlcjogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIHJhd0xvY2F0aW9uID0g
dGhpcy5fcHJpbWFyeVVJTG9jYXRpb24udWlMb2NhdGlvblRvUmF3TG9jYXRpb24oKTsKLSAgICAg
ICAgdGhpcy5fYnJlYWtwb2ludE1hbmFnZXIuX2RlYnVnZ2VyTW9kZWwuc2V0QnJlYWtwb2ludEJ5
U2NyaXB0TG9jYXRpb24ocmF3TG9jYXRpb24sIHRoaXMuX2NvbmRpdGlvbiwgZGlkU2V0QnJlYWtw
b2ludC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdmFyIGRlYnVnZ2VyTW9kZWxMb2NhdGlvbiA9IC8q
KiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259ICovIHJhd0xvY2F0
aW9uOworICAgICAgICB0aGlzLl9icmVha3BvaW50TWFuYWdlci5fZGVidWdnZXJNb2RlbC5zZXRC
cmVha3BvaW50QnlTY3JpcHRMb2NhdGlvbihkZWJ1Z2dlck1vZGVsTG9jYXRpb24sIHRoaXMuX2Nv
bmRpdGlvbiwgZGlkU2V0QnJlYWtwb2ludC5iaW5kKHRoaXMpKTsKICAgICAgICAgLyoqCiAgICAg
ICAgICAqIEB0aGlzIHtXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuQnJlYWtwb2ludH0K
ICAgICAgICAgICogQHBhcmFtIHs/RGVidWdnZXJBZ2VudC5CcmVha3BvaW50SWR9IGJyZWFrcG9p
bnRJZAotICAgICAgICAgKiBAcGFyYW0ge0FycmF5LjxEZWJ1Z2dlckFnZW50LkxvY2F0aW9uPn0g
bG9jYXRpb25zCisgICAgICAgICAqIEBwYXJhbSB7QXJyYXkuPFdlYkluc3BlY3Rvci5EZWJ1Z2dl
ck1vZGVsLkxvY2F0aW9uPn0gbG9jYXRpb25zCiAgICAgICAgICAqLwogICAgICAgICBmdW5jdGlv
biBkaWRTZXRCcmVha3BvaW50KGJyZWFrcG9pbnRJZCwgbG9jYXRpb25zKQogICAgICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVyU2Ny
aXB0TWFwcGluZy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29tcGls
ZXJTY3JpcHRNYXBwaW5nLmpzCmluZGV4IGY2ZTk4ZDBkY2IzOWU0ZThhMWE0MzQ3OTMxYTE4YmJj
NmMzMjA5Y2UuLmQyYzkxNzYxNDVlMGM4ZWJiNTg0ZjBlYjE0YWI5OTQ1OTU5Njc2ZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29tcGlsZXJTY3JpcHRN
YXBwaW5nLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29tcGls
ZXJTY3JpcHRNYXBwaW5nLmpzCkBAIC00NSwxMyArNDUsMTQgQEAgV2ViSW5zcGVjdG9yLkNvbXBp
bGVyU2NyaXB0TWFwcGluZyA9IGZ1bmN0aW9uKCkKIAogV2ViSW5zcGVjdG9yLkNvbXBpbGVyU2Ny
aXB0TWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtEZWJ1Z2dl
ckFnZW50LkxvY2F0aW9ufSByYXdMb2NhdGlvbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlJhd0xvY2F0aW9ufSByYXdMb2NhdGlvbgogICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5V
SUxvY2F0aW9ufQogICAgICAqLwogICAgIHJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uOiBmdW5jdGlv
bihyYXdMb2NhdGlvbikKICAgICB7Ci0gICAgICAgIHZhciBzb3VyY2VNYXAgPSB0aGlzLl9zb3Vy
Y2VNYXBGb3JTY3JpcHRJZFtyYXdMb2NhdGlvbi5zY3JpcHRJZF07Ci0gICAgICAgIHZhciBlbnRy
eSA9IHNvdXJjZU1hcC5maW5kRW50cnkocmF3TG9jYXRpb24ubGluZU51bWJlciwgcmF3TG9jYXRp
b24uY29sdW1uTnVtYmVyIHx8IDApOworICAgICAgICB2YXIgZGVidWdnZXJNb2RlbExvY2F0aW9u
ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbn0gKi8gcmF3
TG9jYXRpb247CisgICAgICAgIHZhciBzb3VyY2VNYXAgPSB0aGlzLl9zb3VyY2VNYXBGb3JTY3Jp
cHRJZFtkZWJ1Z2dlck1vZGVsTG9jYXRpb24uc2NyaXB0SWRdOworICAgICAgICB2YXIgZW50cnkg
PSBzb3VyY2VNYXAuZmluZEVudHJ5KGRlYnVnZ2VyTW9kZWxMb2NhdGlvbi5saW5lTnVtYmVyLCBk
ZWJ1Z2dlck1vZGVsTG9jYXRpb24uY29sdW1uTnVtYmVyIHx8IDApOwogICAgICAgICByZXR1cm4g
bmV3IFdlYkluc3BlY3Rvci5VSUxvY2F0aW9uKHRoaXMuX3VpU291cmNlQ29kZUJ5VVJMW2VudHJ5
WzJdXSwgZW50cnlbM10sIGVudHJ5WzRdKTsKICAgICB9LAogCkBAIC01OSw3ICs2MCw3IEBAIFdl
Ykluc3BlY3Rvci5Db21waWxlclNjcmlwdE1hcHBpbmcucHJvdG90eXBlID0gewogICAgICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCiAgICAgICogQHBh
cmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKICAgICAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1uTnVt
YmVyCi0gICAgICogQHJldHVybiB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0KKyAgICAgKiBAcmV0
dXJuIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbn0KICAgICAgKi8KICAgICB1
aUxvY2F0aW9uVG9SYXdMb2NhdGlvbjogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzCmluZGV4IGMwM2I4OWE3OWU5OWVhNjI0ZjgwZTVj
NWY3YTI1MTRjODI5MjIwNDAuLmFlM2VkNTdmZDRlYTAxZDVhMTY3ZDQzMTBhZTA4NDIzZGJlOTMz
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdn
ZXJNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVn
Z2VyTW9kZWwuanMKQEAgLTQ5LDE0ICs0OSwxNSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2Rl
bCA9IGZ1bmN0aW9uKCkKIAogLyoqCiAgKiBAY29uc3RydWN0b3IKKyAqIEBpbXBsZW1lbnRzIHtX
ZWJJbnNwZWN0b3IuUmF3TG9jYXRpb259CiAgKiBAZXh0ZW5kcyB7RGVidWdnZXJBZ2VudC5Mb2Nh
dGlvbn0KLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gc2NyaXB0CisgKiBAcGFyYW0g
e3N0cmluZ30gc2NyaXB0SWQKICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCiAgKiBAcGFy
YW0ge251bWJlcn0gY29sdW1uTnVtYmVyCiAgKi8KLVdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVs
LkxvY2F0aW9uID0gZnVuY3Rpb24oc2NyaXB0LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCitX
ZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbiA9IGZ1bmN0aW9uKHNjcmlwdElkLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiB7Ci0gICAgdGhpcy5zY3JpcHRJZCA9IHNjcmlwdC5z
Y3JpcHRJZDsKKyAgICB0aGlzLnNjcmlwdElkID0gc2NyaXB0SWQ7CiAgICAgdGhpcy5saW5lTnVt
YmVyID0gbGluZU51bWJlcjsKICAgICB0aGlzLmNvbHVtbk51bWJlciA9IGNvbHVtbk51bWJlcjsK
IH0KQEAgLTExOCwyNSArMTE5LDI1IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3Rv
dHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50
LkxvY2F0aW9ufSBsb2NhdGlvbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
TW9kZWwuTG9jYXRpb259IHJhd0xvY2F0aW9uCiAgICAgICovCi0gICAgY29udGludWVUb0xvY2F0
aW9uOiBmdW5jdGlvbihsb2NhdGlvbikKKyAgICBjb250aW51ZVRvTG9jYXRpb246IGZ1bmN0aW9u
KHJhd0xvY2F0aW9uKQogICAgIHsKLSAgICAgICAgRGVidWdnZXJBZ2VudC5jb250aW51ZVRvTG9j
YXRpb24obG9jYXRpb24pOworICAgICAgICBEZWJ1Z2dlckFnZW50LmNvbnRpbnVlVG9Mb2NhdGlv
bihyYXdMb2NhdGlvbik7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7RGVidWdn
ZXJBZ2VudC5Mb2NhdGlvbn0gbG9jYXRpb24KKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5E
ZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSByYXdMb2NhdGlvbgogICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBjb25kaXRpb24KLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9EZWJ1Z2dlckFnZW50LkJyZWFr
cG9pbnRJZCwgQXJyYXkuPERlYnVnZ2VyQWdlbnQuTG9jYXRpb24+KTp2b2lkPX0gY2FsbGJhY2sK
KyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9EZWJ1Z2dlckFnZW50LkJyZWFrcG9pbnRJZCwgQXJy
YXkuPFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9uPik6dm9pZD19IGNhbGxiYWNr
CiAgICAgICovCi0gICAgc2V0QnJlYWtwb2ludEJ5U2NyaXB0TG9jYXRpb246IGZ1bmN0aW9uKGxv
Y2F0aW9uLCBjb25kaXRpb24sIGNhbGxiYWNrKQorICAgIHNldEJyZWFrcG9pbnRCeVNjcmlwdExv
Y2F0aW9uOiBmdW5jdGlvbihyYXdMb2NhdGlvbiwgY29uZGl0aW9uLCBjYWxsYmFjaykKICAgICB7
Ci0gICAgICAgIHZhciBzY3JpcHQgPSB0aGlzLnNjcmlwdEZvcklkKGxvY2F0aW9uLnNjcmlwdElk
KTsKKyAgICAgICAgdmFyIHNjcmlwdCA9IHRoaXMuc2NyaXB0Rm9ySWQocmF3TG9jYXRpb24uc2Ny
aXB0SWQpOwogICAgICAgICBpZiAoc2NyaXB0LnNvdXJjZVVSTCkKLSAgICAgICAgICAgIHRoaXMu
c2V0QnJlYWtwb2ludChzY3JpcHQuc291cmNlVVJMLCBsb2NhdGlvbi5saW5lTnVtYmVyLCBsb2Nh
dGlvbi5jb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgY2FsbGJhY2spOworICAgICAgICAgICAgdGhp
cy5zZXRCcmVha3BvaW50KHNjcmlwdC5zb3VyY2VVUkwsIHJhd0xvY2F0aW9uLmxpbmVOdW1iZXIs
IHJhd0xvY2F0aW9uLmNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBjYWxsYmFjayk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHRoaXMuc2V0QnJlYWtwb2ludEJ5U291cmNlSWQobG9jYXRpb24s
IGNvbmRpdGlvbiwgY2FsbGJhY2spOworICAgICAgICAgICAgdGhpcy5zZXRCcmVha3BvaW50QnlT
b3VyY2VJZChyYXdMb2NhdGlvbiwgY29uZGl0aW9uLCBjYWxsYmFjayk7CiAgICAgfSwKIAogICAg
IC8qKgpAQCAtMTQ0LDcgKzE0NSw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3Rv
dHlwZSA9IHsKICAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJlcgogICAgICAqIEBwYXJh
bSB7bnVtYmVyPX0gY29sdW1uTnVtYmVyCiAgICAgICogQHBhcmFtIHtzdHJpbmc9fSBjb25kaXRp
b24KLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9EZWJ1Z2dlckFnZW50LkJyZWFrcG9pbnRJZCwg
QXJyYXkuPERlYnVnZ2VyQWdlbnQuTG9jYXRpb24+KT19IGNhbGxiYWNrCisgICAgICogQHBhcmFt
IHtmdW5jdGlvbig/RGVidWdnZXJBZ2VudC5CcmVha3BvaW50SWQsIEFycmF5LjxXZWJJbnNwZWN0
b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbj4pPX0gY2FsbGJhY2sKICAgICAgKi8KICAgICBzZXRC
cmVha3BvaW50OiBmdW5jdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgY29uZGl0
aW9uLCBjYWxsYmFjaykKICAgICB7CkBAIC0xNjYsMTkgKzE2NywyMSBAQCBXZWJJbnNwZWN0b3Iu
RGVidWdnZXJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAqLwogICAgICAgICBmdW5jdGlv
biBkaWRTZXRCcmVha3BvaW50KGVycm9yLCBicmVha3BvaW50SWQsIGxvY2F0aW9ucykKICAgICAg
ICAgewotICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQotICAgICAgICAgICAgICAgIGNhbGxiYWNr
KGVycm9yID8gbnVsbCA6IGJyZWFrcG9pbnRJZCwgbG9jYXRpb25zKTsKKyAgICAgICAgICAgIGlm
IChjYWxsYmFjaykgeworICAgICAgICAgICAgICAgIHZhciByYXdMb2NhdGlvbnMgPSAvKiogQHR5
cGUge0FycmF5LjxXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbj59ICovIGxvY2F0
aW9uczsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvciA/IG51bGwgOiBicmVha3BvaW50
SWQsIHJhd0xvY2F0aW9ucyk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgRGVi
dWdnZXJBZ2VudC5zZXRCcmVha3BvaW50QnlVcmwobGluZU51bWJlciwgdXJsLCB1bmRlZmluZWQs
IGNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBkaWRTZXRCcmVha3BvaW50LmJpbmQodGhpcykpOwog
ICAgICAgICBXZWJJbnNwZWN0b3IudXNlck1ldHJpY3MuU2NyaXB0c0JyZWFrcG9pbnRTZXQucmVj
b3JkKCk7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5M
b2NhdGlvbn0gbG9jYXRpb24KKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1v
ZGVsLkxvY2F0aW9ufSByYXdMb2NhdGlvbgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjb25kaXRp
b24KLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9EZWJ1Z2dlckFnZW50LkJyZWFrcG9pbnRJZCwg
QXJyYXkuPERlYnVnZ2VyQWdlbnQuTG9jYXRpb24+KT19IGNhbGxiYWNrCisgICAgICogQHBhcmFt
IHtmdW5jdGlvbig/RGVidWdnZXJBZ2VudC5CcmVha3BvaW50SWQsIEFycmF5LjxXZWJJbnNwZWN0
b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbj4pPX0gY2FsbGJhY2sKICAgICAgKi8KLSAgICBzZXRC
cmVha3BvaW50QnlTb3VyY2VJZDogZnVuY3Rpb24obG9jYXRpb24sIGNvbmRpdGlvbiwgY2FsbGJh
Y2spCisgICAgc2V0QnJlYWtwb2ludEJ5U291cmNlSWQ6IGZ1bmN0aW9uKHJhd0xvY2F0aW9uLCBj
b25kaXRpb24sIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgLyoqCiAgICAgICAgICAqIEB0aGlz
IHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbH0KQEAgLTE4OCwxMCArMTkxLDEyIEBAIFdlYklu
c3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICovCiAgICAgICAg
IGZ1bmN0aW9uIGRpZFNldEJyZWFrcG9pbnQoZXJyb3IsIGJyZWFrcG9pbnRJZCwgYWN0dWFsTG9j
YXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChjYWxsYmFjaykKLSAgICAgICAgICAg
ICAgICBjYWxsYmFjayhlcnJvciA/IG51bGwgOiBicmVha3BvaW50SWQsIFthY3R1YWxMb2NhdGlv
bl0pOworICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7CisgICAgICAgICAgICAgICAgdmFyIHJh
d0xvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlv
bn0gKi8gYWN0dWFsTG9jYXRpb247CisgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IgPyBu
dWxsIDogYnJlYWtwb2ludElkLCBbcmF3TG9jYXRpb25dKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQotICAgICAgICBEZWJ1Z2dlckFnZW50LnNldEJyZWFrcG9pbnQobG9jYXRpb24sIGNvbmRp
dGlvbiwgZGlkU2V0QnJlYWtwb2ludC5iaW5kKHRoaXMpKTsKKyAgICAgICAgRGVidWdnZXJBZ2Vu
dC5zZXRCcmVha3BvaW50KHJhd0xvY2F0aW9uLCBjb25kaXRpb24sIGRpZFNldEJyZWFrcG9pbnQu
YmluZCh0aGlzKSk7CiAgICAgICAgIFdlYkluc3BlY3Rvci51c2VyTWV0cmljcy5TY3JpcHRzQnJl
YWtwb2ludFNldC5yZWNvcmQoKTsKICAgICB9LAogCkBAIC0yMTAsNyArMjE1LDggQEAgV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9icmVha3Bv
aW50UmVzb2x2ZWQ6IGZ1bmN0aW9uKGJyZWFrcG9pbnRJZCwgbG9jYXRpb24pCiAgICAgewotICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJN
b2RlbC5FdmVudHMuQnJlYWtwb2ludFJlc29sdmVkLCB7YnJlYWtwb2ludElkOiBicmVha3BvaW50
SWQsIGxvY2F0aW9uOiBsb2NhdGlvbn0pOworICAgICAgICB2YXIgcmF3TG9jYXRpb24gPSAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSAqLyBsb2NhdGlvbjsK
KyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTW9kZWwuRXZlbnRzLkJyZWFrcG9pbnRSZXNvbHZlZCwge2JyZWFrcG9pbnRJZDogYnJlYWtw
b2ludElkLCBsb2NhdGlvbjogcmF3TG9jYXRpb259KTsKICAgICB9LAogCiAgICAgX2dsb2JhbE9i
amVjdENsZWFyZWQ6IGZ1bmN0aW9uKCkKQEAgLTM2NywyMCArMzczLDIwIEBAIFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5TY3JpcHR9IHNjcmlwdAogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCiAgICAg
ICogQHBhcmFtIHtudW1iZXJ9IGNvbHVtbk51bWJlcgotICAgICAqIEByZXR1cm4ge0RlYnVnZ2Vy
QWdlbnQuTG9jYXRpb259CisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9k
ZWwuTG9jYXRpb259CiAgICAgICovCiAgICAgY3JlYXRlUmF3TG9jYXRpb246IGZ1bmN0aW9uKHNj
cmlwdCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsKICAgICAgICAgaWYgKHNjcmlw
dC5zb3VyY2VVUkwpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVSYXdMb2NhdGlvbkJ5
VVJMKHNjcmlwdC5zb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKLSAgICAgICAg
cmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbihzY3JpcHQsIGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyTW9kZWwuTG9jYXRpb24oc2NyaXB0LnNjcmlwdElkLCBsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIpOwogICAgIH0sCiAKICAgICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291
cmNlVVJMCiAgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKICAgICAgKiBAcGFyYW0g
e251bWJlcn0gY29sdW1uTnVtYmVyCi0gICAgICogQHJldHVybiB7RGVidWdnZXJBZ2VudC5Mb2Nh
dGlvbn0KKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlv
bn0KICAgICAgKi8KICAgICBjcmVhdGVSYXdMb2NhdGlvbkJ5VVJMOiBmdW5jdGlvbihzb3VyY2VV
UkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICB7CkBAIC0zOTcsNyArNDAzLDcgQEAg
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgY2xv
c2VzdFNjcmlwdCA9IHNjcmlwdDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiBjbG9zZXN0U2NyaXB0ID8gbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVs
LkxvY2F0aW9uKGNsb3Nlc3RTY3JpcHQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikgOiBudWxs
OworICAgICAgICByZXR1cm4gY2xvc2VzdFNjcmlwdCA/IG5ldyBXZWJJbnNwZWN0b3IuRGVidWdn
ZXJNb2RlbC5Mb2NhdGlvbihjbG9zZXN0U2NyaXB0LnNjcmlwdElkLCBsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIpIDogbnVsbDsKICAgICB9LAogCiAgICAgLyoqCkBAIC00MjcsNyArNDMzLDcgQEAg
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICB7CiAgICAg
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdn
ZXJNb2RlbC5FdmVudHMuRXhlY3V0aW9uTGluZUNoYW5nZWQsIHVpTG9jYXRpb24pOwogICAgICAg
ICB9Ci0gICAgICAgIHRoaXMuX2V4ZWN1dGlvbkxpbmVMaXZlTG9jYXRpb24gPSBjYWxsRnJhbWUu
c2NyaXB0LmNyZWF0ZUxpdmVMb2NhdGlvbihjYWxsRnJhbWUuX3BheWxvYWQubG9jYXRpb24sIHVw
ZGF0ZUV4ZWN1dGlvbkxpbmUuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2V4ZWN1dGlvbkxp
bmVMaXZlTG9jYXRpb24gPSBjYWxsRnJhbWUuc2NyaXB0LmNyZWF0ZUxpdmVMb2NhdGlvbihjYWxs
RnJhbWUubG9jYXRpb24sIHVwZGF0ZUV4ZWN1dGlvbkxpbmUuYmluZCh0aGlzKSk7CiAgICAgfSwK
IAogICAgIC8qKgpAQCAtNTE2LDE4ICs1MjIsMTggQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9k
ZWwucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge0RlYnVn
Z2VyQWdlbnQuTG9jYXRpb259IGxvY2F0aW9uCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
RGVidWdnZXJNb2RlbC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24KICAgICAgKiBAcGFyYW0ge2Z1bmN0
aW9uKFdlYkluc3BlY3Rvci5VSUxvY2F0aW9uKTooYm9vbGVhbnx1bmRlZmluZWQpfSB1cGRhdGVE
ZWxlZ2F0ZQogICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5TY3JpcHQuTG9jYXRpb259CiAg
ICAgICovCi0gICAgY3JlYXRlTGl2ZUxvY2F0aW9uOiBmdW5jdGlvbihsb2NhdGlvbiwgdXBkYXRl
RGVsZWdhdGUpCisgICAgY3JlYXRlTGl2ZUxvY2F0aW9uOiBmdW5jdGlvbihyYXdMb2NhdGlvbiwg
dXBkYXRlRGVsZWdhdGUpCiAgICAgewotICAgICAgICB2YXIgc2NyaXB0ID0gdGhpcy5fc2NyaXB0
c1tsb2NhdGlvbi5zY3JpcHRJZF07Ci0gICAgICAgIHJldHVybiBzY3JpcHQuY3JlYXRlTGl2ZUxv
Y2F0aW9uKGxvY2F0aW9uLCB1cGRhdGVEZWxlZ2F0ZSk7CisgICAgICAgIHZhciBzY3JpcHQgPSB0
aGlzLl9zY3JpcHRzW3Jhd0xvY2F0aW9uLnNjcmlwdElkXTsKKyAgICAgICAgcmV0dXJuIHNjcmlw
dC5jcmVhdGVMaXZlTG9jYXRpb24ocmF3TG9jYXRpb24sIHVwZGF0ZURlbGVnYXRlKTsKICAgICB9
LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufSByYXdM
b2NhdGlvbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRp
b259IHJhd0xvY2F0aW9uCiAgICAgICogQHJldHVybiB7P1dlYkluc3BlY3Rvci5VSUxvY2F0aW9u
fQogICAgICAqLwogICAgIHJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uOiBmdW5jdGlvbihyYXdMb2Nh
dGlvbikKQEAgLTY2OCwxMSArNjc0LDEyIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkNh
bGxGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEByZXR1cm4g
e0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259CisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLkRl
YnVnZ2VyTW9kZWwuTG9jYXRpb259CiAgICAgICovCiAgICAgZ2V0IGxvY2F0aW9uKCkKICAgICB7
Ci0gICAgICAgIHJldHVybiB0aGlzLl9wYXlsb2FkLmxvY2F0aW9uOworICAgICAgICB2YXIgcmF3
TG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9u
fSAqLyB0aGlzLl9wYXlsb2FkLmxvY2F0aW9uOworICAgICAgICByZXR1cm4gcmF3TG9jYXRpb247
CiAgICAgfSwKIAogICAgIC8qKgpAQCAtNzA4LDcgKzcxNSw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1
Z2dlck1vZGVsLkNhbGxGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgY3JlYXRlTGl2
ZUxvY2F0aW9uOiBmdW5jdGlvbih1cGRhdGVEZWxlZ2F0ZSkKICAgICB7Ci0gICAgICAgIHZhciBs
b2NhdGlvbiA9IHRoaXMuX3NjcmlwdC5jcmVhdGVMaXZlTG9jYXRpb24odGhpcy5fcGF5bG9hZC5s
b2NhdGlvbiwgdXBkYXRlRGVsZWdhdGUpOworICAgICAgICB2YXIgbG9jYXRpb24gPSB0aGlzLl9z
Y3JpcHQuY3JlYXRlTGl2ZUxvY2F0aW9uKHRoaXMubG9jYXRpb24sIHVwZGF0ZURlbGVnYXRlKTsK
ICAgICAgICAgdGhpcy5fbG9jYXRpb25zLnB1c2gobG9jYXRpb24pOwogICAgICAgICByZXR1cm4g
bG9jYXRpb247CiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRGVidWdnZXJSZXNvdXJjZUJpbmRpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUmVzb3VyY2VCaW5kaW5nLmpzCmluZGV4IDRkNmY1NzEx
ZTY5NDE3ZjIyMDZmMTEwZDJmNDAzYzg0ZTFlYTQ1YjkuLjVhMTAyMGU2NGZhNWQ0YmU2NDBlMTc2
ZGJiZjcxMjY4ZWZjMzc2ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRGVidWdnZXJSZXNvdXJjZUJpbmRpbmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclJlc291cmNlQmluZGluZy5qcwpAQCAtNDAsMTMg
KzQwLDEzIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclJlc291cmNlQmluZGluZyA9IGZ1bmN0aW9u
KHVpU291cmNlQ29kZVByb3ZpZGVyKQogfQogCiAvKioKLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5KYXZh
U2NyaXB0U291cmNlfSBqYXZhU2NyaXB0U291cmNlCiAgKiBAcGFyYW0ge3N0cmluZ30gbmV3U291
cmNlCiAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9Qcm90b2NvbC5FcnJvcil9IGNhbGxiYWNrCiAgKi8K
LVdlYkluc3BlY3Rvci5EZWJ1Z2dlclJlc291cmNlQmluZGluZy5zZXRTY3JpcHRTb3VyY2UgPSBm
dW5jdGlvbih1aVNvdXJjZUNvZGUsIG5ld1NvdXJjZSwgY2FsbGJhY2spCitXZWJJbnNwZWN0b3Iu
RGVidWdnZXJSZXNvdXJjZUJpbmRpbmcuc2V0U2NyaXB0U291cmNlID0gZnVuY3Rpb24oamF2YVNj
cmlwdFNvdXJjZSwgbmV3U291cmNlLCBjYWxsYmFjaykKIHsKLSAgICB2YXIgcmF3TG9jYXRpb24g
PSB1aVNvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24oMCwgMCk7CisgICAgdmFyIHJh
d0xvY2F0aW9uID0gamF2YVNjcmlwdFNvdXJjZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbigwLCAw
KTsKICAgICB2YXIgc2NyaXB0ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2NyaXB0Rm9y
SWQocmF3TG9jYXRpb24uc2NyaXB0SWQpOwogCiAgICAgLyoqCkBAIC02MCw3ICs2MCw3IEBAIFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlclJlc291cmNlQmluZGluZy5zZXRTY3JpcHRTb3VyY2UgPSBmdW5j
dGlvbih1aVNvdXJjZUNvZGUsIG5lCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICB2YXIgcmVzb3VyY2UgPSB1aVNvdXJjZUNvZGUucmVzb3VyY2UoKTsKKyAgICAgICAg
dmFyIHJlc291cmNlID0gamF2YVNjcmlwdFNvdXJjZS5yZXNvdXJjZSgpOwogICAgICAgICBpZiAo
cmVzb3VyY2UpCiAgICAgICAgICAgICByZXNvdXJjZS5hZGRSZXZpc2lvbihuZXdTb3VyY2UpOwog
CkBAIC05MSwyNCArOTEsMjQgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUmVzb3VyY2VCaW5kaW5n
LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCFtYWpvckNoYW5nZSkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gV2ViSW5zcGVjdG9yLkphdmFTY3Jp
cHRTb3VyY2UuamF2YVNjcmlwdFNvdXJjZUZvclJlc291cmNlLmdldChyZXNvdXJjZSk7Ci0gICAg
ICAgIGlmICghdWlTb3VyY2VDb2RlKSB7CisgICAgICAgIHZhciBqYXZhU2NyaXB0U291cmNlID0g
V2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2UuamF2YVNjcmlwdFNvdXJjZUZvclJlc291cmNl
LmdldChyZXNvdXJjZSk7CisgICAgICAgIGlmICghamF2YVNjcmlwdFNvdXJjZSkgewogICAgICAg
ICAgICAgdXNlckNhbGxiYWNrKCJSZXNvdXJjZSBpcyBub3QgZWRpdGFibGUiKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHJlc291cmNlLnJlcXVlc3RDb250ZW50
KHRoaXMuX3NldENvbnRlbnRXaXRoSW5pdGlhbENvbnRlbnQuYmluZCh0aGlzLCB1aVNvdXJjZUNv
ZGUsIGNvbnRlbnQsIHVzZXJDYWxsYmFjaykpOworICAgICAgICByZXNvdXJjZS5yZXF1ZXN0Q29u
dGVudCh0aGlzLl9zZXRDb250ZW50V2l0aEluaXRpYWxDb250ZW50LmJpbmQodGhpcywgamF2YVNj
cmlwdFNvdXJjZSwgY29udGVudCwgdXNlckNhbGxiYWNrKSk7CiAgICAgfSwKIAogICAgIC8qKgot
ICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCisg
ICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZX0gamF2YVNjcmlwdFNv
dXJjZQogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50CiAgICAgICogQHBhcmFtIHtmdW5j
dGlvbig/c3RyaW5nKX0gdXNlckNhbGxiYWNrCiAgICAgICogQHBhcmFtIHs/c3RyaW5nfSBvbGRD
b250ZW50CiAgICAgICogQHBhcmFtIHtib29sZWFufSBvbGRDb250ZW50RW5jb2RlZAogICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBtaW1lVHlwZQogICAgICAqLwotICAgIF9zZXRDb250ZW50V2l0aElu
aXRpYWxDb250ZW50OiBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIGNvbnRlbnQsIHVzZXJDYWxsYmFj
aywgb2xkQ29udGVudCwgb2xkQ29udGVudEVuY29kZWQsIG1pbWVUeXBlKQorICAgIF9zZXRDb250
ZW50V2l0aEluaXRpYWxDb250ZW50OiBmdW5jdGlvbihqYXZhU2NyaXB0U291cmNlLCBjb250ZW50
LCB1c2VyQ2FsbGJhY2ssIG9sZENvbnRlbnQsIG9sZENvbnRlbnRFbmNvZGVkLCBtaW1lVHlwZSkK
ICAgICB7CiAgICAgICAgIC8qKgogICAgICAgICAgKiBAdGhpcyB7V2ViSW5zcGVjdG9yLkRlYnVn
Z2VyUmVzb3VyY2VCaW5kaW5nfQpAQCAtMTE5LDcgKzExOSw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1
Z2dlclJlc291cmNlQmluZGluZy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAodXNlckNh
bGxiYWNrKQogICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhlcnJvcik7CiAgICAgICAgIH0K
LSAgICAgICAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUmVzb3VyY2VCaW5kaW5nLnNldFNjcmlwdFNv
dXJjZSh1aVNvdXJjZUNvZGUsIGNvbnRlbnQsIGNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAg
ICBXZWJJbnNwZWN0b3IuRGVidWdnZXJSZXNvdXJjZUJpbmRpbmcuc2V0U2NyaXB0U291cmNlKGph
dmFTY3JpcHRTb3VyY2UsIGNvbnRlbnQsIGNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2Ny
aXB0U291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2Ny
aXB0U291cmNlLmpzCmluZGV4IDg5Zjc4M2E5NjJhZjMzOWEwODk1YjhiODIwZTEyYjMzN2Q4OGUw
MTIuLjFhNGQ4NTE1MTQwYTZhMDA4ZDkyOGJhOWQxYTE5NGRjYzBkOWYzNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdFNvdXJjZS5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2Uu
anMKQEAgLTE0MiwxMiArMTQyLDE0IEBAIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlLnBy
b3RvdHlwZSA9IHsKICAgICAvKioKICAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJlcgog
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2x1bW5OdW1iZXIKLSAgICAgKiBAcmV0dXJuIHtEZWJ1
Z2dlckFnZW50LkxvY2F0aW9ufQorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5EZWJ1Z2dl
ck1vZGVsLkxvY2F0aW9ufQogICAgICAqLwogICAgIHVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBm
dW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAgICAgICB2YXIgbG9j
YXRpb24gPSB0aGlzLl9mb3JtYXR0ZXJNYXBwaW5nLmZvcm1hdHRlZFRvT3JpZ2luYWwobGluZU51
bWJlciwgY29sdW1uTnVtYmVyKTsKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVNvdXJj
ZUNvZGUucHJvdG90eXBlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uLmNhbGwodGhpcywgbG9jYXRp
b25bMF0sIGxvY2F0aW9uWzFdKTsKKyAgICAgICAgdmFyIHJhd0xvY2F0aW9uID0gV2ViSW5zcGVj
dG9yLlVJU291cmNlQ29kZS5wcm90b3R5cGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24uY2FsbCh0
aGlzLCBsb2NhdGlvblswXSwgbG9jYXRpb25bMV0pOworICAgICAgICB2YXIgZGVidWdnZXJNb2Rl
bExvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlv
bn0gKi8gcmF3TG9jYXRpb247CisgICAgICAgIHJldHVybiBkZWJ1Z2dlck1vZGVsTG9jYXRpb247
CiAgICAgfSwKIAogICAgIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9MaW5raWZpZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0xpbmtpZmllci5qcwppbmRleCAzNjUyNjY5MzljZjFjNjZjNTA3Yzc3MzkxNDFiN2Q4NWU1
YTFhYWE3Li5mYWIxOGJhZTFkN2ZlZDY5NDEwOWE3MDMyZTVjZWJlMjNiOWYyZTBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0xpbmtpZmllci5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0xpbmtpZmllci5qcwpAQCAtNjks
NyArNjksNyBAQCBXZWJJbnNwZWN0b3IuTGlua2lmaWVyLnByb3RvdHlwZSA9IHsKICAgICB9LAog
CiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufSByYXdMb2Nh
dGlvbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259
IHJhd0xvY2F0aW9uCiAgICAgICogQHBhcmFtIHtzdHJpbmc9fSBjbGFzc2VzCiAgICAgICovCiAg
ICAgbGlua2lmeVJhd0xvY2F0aW9uOiBmdW5jdGlvbihyYXdMb2NhdGlvbiwgY2xhc3NlcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0UG9wb3Zl
ckhlbHBlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0UG9w
b3ZlckhlbHBlci5qcwppbmRleCA2MWU4ZTYxOWVmNDdiZWRjODVlNDkzNjQwYmQ0MDU2ZWJjYWY2
YTcxLi5jNGY0MjVlNjhmMDUyODkwY2I3Yzc5M2Q2ZmFmZDNiMzBlY2ViYmMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL09iamVjdFBvcG92ZXJIZWxwZXIu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3RQb3BvdmVy
SGVscGVyLmpzCkBAIC05MCw3ICs5MCw4IEBAIFdlYkluc3BlY3Rvci5PYmplY3RQb3BvdmVySGVs
cGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uTmFtZS50
ZXh0Q29udGVudCA9IHJlc3BvbnNlLm5hbWUgfHwgcmVzcG9uc2UuaW5mZXJyZWROYW1lIHx8IHJl
c3BvbnNlLmRpc3BsYXlOYW1lIHx8IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKGFub255bW91cyBm
dW5jdGlvbikiKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGlua2lmaWVyID0g
bmV3IFdlYkluc3BlY3Rvci5MaW5raWZpZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciBsaW5rID0gdGhpcy5fbGlua2lmaWVyLmxpbmtpZnlSYXdMb2NhdGlvbihyZXNwb25zZS5sb2Nh
dGlvbiwgImZ1bmN0aW9uLWxvY2F0aW9uLWxpbmsiKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHZhciByYXdMb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwu
TG9jYXRpb259ICovIHJlc3BvbnNlLmxvY2F0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIGxpbmsgPSB0aGlzLl9saW5raWZpZXIubGlua2lmeVJhd0xvY2F0aW9uKHJhd0xvY2F0aW9u
LCAiZnVuY3Rpb24tbG9jYXRpb24tbGluayIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGxpbmspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUuYXBwZW5kQ2hpbGQobGlu
ayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJl
c2VudGF0aW9uQ29uc29sZU1lc3NhZ2VIZWxwZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1ByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlSGVscGVyLmpzCmluZGV4IGZl
NDgwZTIwZWZlNGVmNTc0NzRlMjExMWEwZjhlZWMwMTkwZWFhNWQuLmExNTRkYzRiYTdjZDI2MWEz
ZjJhNTM3MTQzYzNkZTA0MDc1MGQ5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VIZWxwZXIuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9QcmVzZW50YXRpb25Db25zb2xlTWVz
c2FnZUhlbHBlci5qcwpAQCAtNjUsNyArNjUsNyBAQCBXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9u
Q29uc29sZU1lc3NhZ2VIZWxwZXIucHJvdG90eXBlID0gewogCiAgICAgLyoqCiAgICAgICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2V9IG1lc3NhZ2UKLSAgICAgKiBAcGFyYW0g
e0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259IHJhd0xvY2F0aW9uCisgICAgICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24KICAgICAgKi8KICAg
ICBfYWRkQ29uc29sZU1lc3NhZ2VUb1NjcmlwdDogZnVuY3Rpb24obWVzc2FnZSwgcmF3TG9jYXRp
b24pCiAgICAgewpAQCAtMTMwLDcgKzEzMCw3IEBAIFdlYkluc3BlY3Rvci5QcmVzZW50YXRpb25D
b25zb2xlTWVzc2FnZUhlbHBlci5wcm90b3R5cGUgPSB7CiAvKioKICAqIEBjb25zdHJ1Y3Rvcgog
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2V9IG1lc3NhZ2UKLSAqIEBwYXJh
bSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24KKyAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259IHJhd0xvY2F0aW9uCiAgKi8KIFdlYkluc3Bl
Y3Rvci5QcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZSA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHJhd0xv
Y2F0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9SYXdTb3VyY2VDb2RlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
YXdTb3VyY2VDb2RlLmpzCmluZGV4IDdiYTFkNmVmMmMwZWU0MmQzOGFjZDkzNThhMTc0ZjA3OTk4
MjBiZDkuLjdlMWI0NGNkYWE1YmUwOWYzMGNhMGM1YjhhYzljMWFhMmZiMTA0NjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmF3U291cmNlQ29kZS5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jhd1NvdXJjZUNvZGUuanMK
QEAgLTc2LDcgKzc2LDcgQEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBlID0g
ewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge0RlYnVnZ2VyQWdlbnQuTG9jYXRp
b259IHJhd0xvY2F0aW9uCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2Rl
bC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24KICAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVUlM
b2NhdGlvbn0KICAgICAgKi8KICAgICByYXdMb2NhdGlvblRvVUlMb2NhdGlvbjogZnVuY3Rpb24o
cmF3TG9jYXRpb24pCkBAIC0xMTQsNyArMTE0LDcgQEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNv
ZGUucHJvdG90eXBlID0gewogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29k
ZX0gdWlTb3VyY2VDb2RlCiAgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKICAgICAg
KiBAcGFyYW0ge251bWJlcn0gY29sdW1uTnVtYmVyCi0gICAgICogQHJldHVybiB7RGVidWdnZXJB
Z2VudC5Mb2NhdGlvbn0KKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUmF3TG9jYXRpb259
CiAgICAgICovCiAgICAgdWlMb2NhdGlvblRvUmF3TG9jYXRpb246IGZ1bmN0aW9uKHVpU291cmNl
Q29kZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VTY3JpcHRNYXBwaW5nLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1hcHBpbmcu
anMKaW5kZXggOTVkZWJhYWUzYTcwYTgzNGFmZTRiYmRkODAyZTlhZDZhM2ZkMjI5Zi4uYzk3ZWIw
MWIxODQxM2JmZWY1YWRkNWNlYmYwZmNmMjhjM2M4Nzk0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1hcHBpbmcuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1hcHBpbmcu
anMKQEAgLTQ1LDIwICs0NSwyMSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5n
ID0gZnVuY3Rpb24oKQogCiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3Rv
dHlwZSA9IHsKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259
IHJhd0xvY2F0aW9uCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmF3TG9jYXRpb259IHJh
d0xvY2F0aW9uCiAgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlVJTG9jYXRpb259CiAgICAg
ICovCiAgICAgcmF3TG9jYXRpb25Ub1VJTG9jYXRpb246IGZ1bmN0aW9uKHJhd0xvY2F0aW9uKQog
ICAgIHsKLSAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSB0aGlzLl9yYXdTb3VyY2VDb2RlRm9y
U2NyaXB0SWRbcmF3TG9jYXRpb24uc2NyaXB0SWRdOwotICAgICAgICByZXR1cm4gcmF3U291cmNl
Q29kZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihyYXdMb2NhdGlvbik7CisgICAgICAgIHZhciBk
ZWJ1Z2dlck1vZGVsTG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1v
ZGVsLkxvY2F0aW9ufSAqLyByYXdMb2NhdGlvbjsKKyAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUg
PSB0aGlzLl9yYXdTb3VyY2VDb2RlRm9yU2NyaXB0SWRbZGVidWdnZXJNb2RlbExvY2F0aW9uLnNj
cmlwdElkXTsKKyAgICAgICAgcmV0dXJuIHJhd1NvdXJjZUNvZGUucmF3TG9jYXRpb25Ub1VJTG9j
YXRpb24oZGVidWdnZXJNb2RlbExvY2F0aW9uKTsKICAgICB9LAogCiAgICAgLyoqCiAgICAgICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKICAgICAgKiBA
cGFyYW0ge251bWJlcn0gbGluZU51bWJlcgogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2x1bW5O
dW1iZXIKLSAgICAgKiBAcmV0dXJuIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufQorICAgICAqIEBy
ZXR1cm4ge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufQogICAgICAqLwogICAg
IHVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2NyaXB0LmpzCmluZGV4IDQzNzIwMDQzYzIzNjM0NjUxNmIwYzMzNzAzMzc1NTliZDk5
OWRmMzkuLmM5ZmNkM2EyM2VmYmEyNzBkMjkzMzU2MTUwZjM2ODFlZDQwZGQwNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzCkBAIC0xNzMsNyArMTcz
LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgcmF3
TG9jYXRpb25Ub1VJTG9jYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikK
ICAgICB7Ci0gICAgICAgIHZhciB1aUxvY2F0aW9uID0gdGhpcy5fc291cmNlTWFwcGluZy5yYXdM
b2NhdGlvblRvVUlMb2NhdGlvbihuZXcgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRp
b24odGhpcywgbGluZU51bWJlciwgY29sdW1uTnVtYmVyIHx8IDApKTsKKyAgICAgICAgdmFyIHVp
TG9jYXRpb24gPSB0aGlzLl9zb3VyY2VNYXBwaW5nLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKG5l
dyBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbih0aGlzLnNjcmlwdElkLCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIgfHwgMCkpOwogICAgICAgICByZXR1cm4gdWlMb2NhdGlvbi51
aVNvdXJjZUNvZGUub3ZlcnJpZGVMb2NhdGlvbih1aUxvY2F0aW9uKTsKICAgICB9LAogCkBAIC0x
ODgsNyArMTg4LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgfSwK
IAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gcmF3TG9j
YXRpb24KKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9u
fSByYXdMb2NhdGlvbgogICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oV2ViSW5zcGVjdG9yLlVJTG9j
YXRpb24pOihib29sZWFufHVuZGVmaW5lZCl9IHVwZGF0ZURlbGVnYXRlCiAgICAgICogQHJldHVy
biB7V2ViSW5zcGVjdG9yLlNjcmlwdC5Mb2NhdGlvbn0KICAgICAgKi8KQEAgLTIwNSw3ICsyMDUs
NyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZSA9IHsKIC8qKgogICogQGNvbnN0cnVj
dG9yCiAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TY3JpcHR9IHNjcmlwdAotICogQHBhcmFtIHtE
ZWJ1Z2dlckFnZW50LkxvY2F0aW9ufSByYXdMb2NhdGlvbgorICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24KICAqIEBwYXJhbSB7ZnVuY3Rp
b24oV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24pOihib29sZWFufHVuZGVmaW5lZCl9IHVwZGF0ZURl
bGVnYXRlCiAgKi8KIFdlYkluc3BlY3Rvci5TY3JpcHQuTG9jYXRpb24gPSBmdW5jdGlvbihzY3Jp
cHQsIHJhd0xvY2F0aW9uLCB1cGRhdGVEZWxlZ2F0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0U25pcHBldE1vZGVsLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRTbmlwcGV0TW9kZWwuanMKaW5kZXggMDAz
ZWY5NGNiZTdmYmU3OWUxMGIzNDg5MWU4OTExMGEzMzM4ZTJkYy4uOTU5MzA4OWNkMTI4ZjQzYTBl
ZDU2ZTFkYWFmZDM5YzQyMWIxYWZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHRTbmlwcGV0TW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRTbmlwcGV0TW9kZWwuanMKQEAgLTEzMyw3ICsxMzMs
NyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0U25pcHBldE1vZGVsLnByb3RvdHlwZSA9IHsKICAgICB9
LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufSByYXdM
b2NhdGlvbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRp
b259IHJhd0xvY2F0aW9uCiAgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlVJTG9jYXRpb259
CiAgICAgICovCiAgICAgX3Jhd0xvY2F0aW9uVG9VSUxvY2F0aW9uOiBmdW5jdGlvbihyYXdMb2Nh
dGlvbikKQEAgLTE1MSw3ICsxNTEsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0U25pcHBldE1vZGVs
LnByb3RvdHlwZSA9IHsKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9
IHVpU291cmNlQ29kZQogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCiAgICAgICog
QHBhcmFtIHtudW1iZXJ9IGNvbHVtbk51bWJlcgotICAgICAqIEByZXR1cm4ge0RlYnVnZ2VyQWdl
bnQuTG9jYXRpb259CisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwu
TG9jYXRpb259CiAgICAgICovCiAgICAgX3VpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5jdGlv
bih1aVNvdXJjZUNvZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICB7CkBAIC0zNTAs
MTkgKzM1MCwyMCBAQCBXZWJJbnNwZWN0b3IuU25pcHBldFNjcmlwdE1hcHBpbmcgPSBmdW5jdGlv
bihzY3JpcHRTbmlwcGV0TW9kZWwpCiAKIFdlYkluc3BlY3Rvci5TbmlwcGV0U2NyaXB0TWFwcGlu
Zy5wcm90b3R5cGUgPSB7CiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50Lkxv
Y2F0aW9ufSByYXdMb2NhdGlvbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJhd0xvY2F0
aW9ufSByYXdMb2NhdGlvbgogICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5VSUxvY2F0aW9u
fQogICAgICAqLwogICAgIHJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uOiBmdW5jdGlvbihyYXdMb2Nh
dGlvbikKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9zY3JpcHRTbmlwcGV0TW9kZWwuX3Jh
d0xvY2F0aW9uVG9VSUxvY2F0aW9uKHJhd0xvY2F0aW9uKTsKKyAgICAgICAgdmFyIGRlYnVnZ2Vy
TW9kZWxMb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9j
YXRpb259ICovIHJhd0xvY2F0aW9uOworICAgICAgICByZXR1cm4gdGhpcy5fc2NyaXB0U25pcHBl
dE1vZGVsLl9yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihkZWJ1Z2dlck1vZGVsTG9jYXRpb24pOwog
ICAgIH0sCiAKICAgICAvKioKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNv
ZGV9IHVpU291cmNlQ29kZQogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCiAgICAg
ICogQHBhcmFtIHtudW1iZXJ9IGNvbHVtbk51bWJlcgotICAgICAqIEByZXR1cm4ge0RlYnVnZ2Vy
QWdlbnQuTG9jYXRpb259CisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9k
ZWwuTG9jYXRpb259CiAgICAgICovCiAgICAgdWlMb2NhdGlvblRvUmF3TG9jYXRpb246IGZ1bmN0
aW9uKHVpU291cmNlQ29kZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlTWFwcGluZy5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlTWFwcGluZy5qcwpp
bmRleCA0MzJhNzZkYjkwYjBkYjg0NDEyY2ZmYzA3OWI1ZDk1MDAxN2U0ZjgzLi44ODc4ZjExMzU5
Y2RlOGM2MTcyZWNiZmYxODdkMDY1YmE0NDFmYTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZU1hcHBpbmcuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VNYXBwaW5nLmpzCkBAIC0zNyw3ICszNyw3IEBA
IFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBwaW5nID0gZnVuY3Rpb24oKQogCiBXZWJJbnNwZWN0b3Iu
U291cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtEZWJ1
Z2dlckFnZW50LkxvY2F0aW9ufSByYXdMb2NhdGlvbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLlJhd0xvY2F0aW9ufSByYXdMb2NhdGlvbgogICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rv
ci5VSUxvY2F0aW9ufQogICAgICAqLwogICAgIHJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uOiBmdW5j
dGlvbihyYXdMb2NhdGlvbikgeyB9LApAQCAtNDYsNyArNDYsNyBAQCBXZWJJbnNwZWN0b3IuU291
cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlT
b3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKICAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJl
cgogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2x1bW5OdW1iZXIKLSAgICAgKiBAcmV0dXJuIHtE
ZWJ1Z2dlckFnZW50LkxvY2F0aW9ufQorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5SYXdM
b2NhdGlvbn0KICAgICAgKi8KICAgICB1aUxvY2F0aW9uVG9SYXdMb2NhdGlvbjogZnVuY3Rpb24o
dWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpIHsgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVNvdXJjZUNvZGUuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29kZS5qcwppbmRleCA5
MmNiOWFkYjcxODQxY2ZhYzM2NzBhMTA0ZDMzZDg5ZTM2OTMzNzAzLi41NmMxZTMxMzdkNDIwYTg5
MDY1MDgzNDE0OGI1OGZkMTQzZjM0NWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29kZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29kZS5qcwpAQCAtMjg3LDcgKzI4Nyw3IEBAIFdlYklu
c3BlY3Rvci5VSVNvdXJjZUNvZGUucHJvdG90eXBlID0gewogICAgIC8qKgogICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBsaW5lTnVtYmVyCiAgICAgICogQHBhcmFtIHtudW1iZXJ9IGNvbHVtbk51bWJl
cgotICAgICAqIEByZXR1cm4ge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259CisgICAgICogQHJldHVy
biB7V2ViSW5zcGVjdG9yLlJhd0xvY2F0aW9ufQogICAgICAqLwogICAgIHVpTG9jYXRpb25Ub1Jh
d0xvY2F0aW9uOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewpAQCAt
NDIwLDEwICs0MjAsMTcgQEAgV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24gPSBmdW5jdGlvbih1aVNv
dXJjZUNvZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKIAogV2ViSW5zcGVjdG9yLlVJTG9j
YXRpb24ucHJvdG90eXBlID0gewogICAgIC8qKgotICAgICAqIEByZXR1cm4ge0RlYnVnZ2VyQWdl
bnQuTG9jYXRpb259CisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlJhd0xvY2F0aW9ufQog
ICAgICAqLwogICAgIHVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5jdGlvbigpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy51aVNvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24o
dGhpcy5saW5lTnVtYmVyLCB0aGlzLmNvbHVtbk51bWJlcik7CiAgICAgfQogfQorCisvKioKKyAq
IEBpbnRlcmZhY2UKKyAqLworV2ViSW5zcGVjdG9yLlJhd0xvY2F0aW9uID0gZnVuY3Rpb24oKQor
eworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGYxOGU5YTIyYTE4NjA3ZWUzYTgyZTc4YzdiYzJjZDZlN2NjNTdkYjkuLjE4
MGQ3OTI0NDdhNzJkYjg3MTYxYzNlYjZlMGU5NWRjZjI0ZDJhMTEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxMi0wNS0yNSAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBMaW1pdCBEZWJ1Z2dlckFnZW50LkxvY2F0aW9uIHVz
ZSB0byBEZWJ1Z2dlck1vZGVsIG9ubHksIGludHJvZHVjZSBXZWJJbnNwZWN0b3IuUmF3TG9jYXRp
b24gdG8gYmUgdXNlZCBlbHNld2hlcmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NzI3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtbWFuYWdlci5o
dG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1pbi1pbmxpbmUtc2NyaXB0
Lmh0bWw6CisKIDIwMTItMDYtMDYgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtp
dC5vcmc+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGRpcmVjdGlvbiBvbiB0YWJsZSByb3cg
Z3JvdXAgd2l0aCBjb2xsYXBzaW5nIGJvcmRlcnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LW1hbmFnZXIuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LW1hbmFnZXIuaHRtbAppbmRleCBhNDMyNjRjZjhj
MDYxZWMyNmQ1MWI3MTRlMzg2OTQ1MmI0NGI4NmM4Li4wYjVlYjZhZTFmNmMxOTA2Zjg1MzJkYzlk
ZWJmNDJmODQ1ZGM0MTVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvYnJlYWtwb2ludC1tYW5hZ2VyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL2JyZWFrcG9pbnQtbWFuYWdlci5odG1sCkBAIC0xNiw3ICsxNiw3IEBAIGZ1bmN0aW9u
IHRlc3QoKQogCiAgICAgICAgIHVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5jdGlvbih1aVNv
dXJjZUNvZGUsIGxpbmVOdW1iZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB7IHNj
cmlwdElkOiB1aVNvdXJjZUNvZGUudXJsLCBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXI6IDAgfTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
TW9kZWwuTG9jYXRpb24odWlTb3VyY2VDb2RlLnVybCwgbGluZU51bWJlciwgMCk7CiAgICAgICAg
IH0KICAgICB9OwogCkBAIC0yOCw3ICsyOCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAg
IHVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIGxpbmVOdW1i
ZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB7IHNjcmlwdElkOiB1aVNvdXJjZUNv
ZGUudXJsLCBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyIC0gMTAsIGNvbHVtbk51bWJlcjogMCB9Owor
ICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlv
bih1aVNvdXJjZUNvZGUudXJsLCBsaW5lTnVtYmVyIC0gMTAsIDApOwogICAgICAgICB9CiAgICAg
fTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWlu
LWlubGluZS1zY3JpcHQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVz
ZS1pbi1pbmxpbmUtc2NyaXB0Lmh0bWwKaW5kZXggZDEzZGMzMjZkYjI5NjZjMGY2NDE3ZTZhMzA1
MjZmYWFhYzc1NzVmOS4uMzg5NDZhNTc0OTQ5MGUwZTlmNjQwYTJmN2Q4MzViYzMyOGYwYmFhNyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLWluLWlubGlu
ZS1zY3JpcHQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2Ut
aW4taW5saW5lLXNjcmlwdC5odG1sCkBAIC00OSw3ICs0OSw3IEBAIHZhciB0ZXN0ID0gZnVuY3Rp
b24oKQogICAgICAgICBmb3IgKHZhciBzY3JpcHRJZCBpbiBXZWJJbnNwZWN0b3IuZGVidWdnZXJN
b2RlbC5zY3JpcHRzKSB7CiAgICAgICAgICAgICB2YXIgc2NyaXB0ID0gV2ViSW5zcGVjdG9yLmRl
YnVnZ2VyTW9kZWwuc2NyaXB0c1tzY3JpcHRJZF07CiAgICAgICAgICAgICBpZiAoc2NyaXB0LnNv
dXJjZVVSTCAmJiBzY3JpcHQuc291cmNlVVJMLmluZGV4T2YodGVzdE5hbWUpICE9PSAtMSAmJiBz
Y3JpcHQubGluZU9mZnNldCA9PSA2KSB7Ci0gICAgICAgICAgICAgICAgdmFyIGxvY2F0aW9uID0g
bmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9uKHNjcmlwdCwgNiwgMCk7Cisg
ICAgICAgICAgICAgICAgdmFyIGxvY2F0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1v
ZGVsLkxvY2F0aW9uKHNjcmlwdC5zY3JpcHRJZCwgNiwgMCk7CiAgICAgICAgICAgICAgICAgdmFy
IHVpTG9jYXRpb24gPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5yYXdMb2NhdGlvblRvVUlM
b2NhdGlvbihsb2NhdGlvbik7CiAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5z
Y3JpcHRzLnNob3dVSVNvdXJjZUNvZGUodWlMb2NhdGlvbi51aVNvdXJjZUNvZGUpOwogICAgICAg
ICAgICAgICAgIHZhciBzb3VyY2VGcmFtZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy52
aXNpYmxlVmlldzsK
</data>
<flag name="review"
          id="153287"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>