<?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>19156</bug_id>
          
          <creation_ts>2008-05-20 16:15:28 -0700</creation_ts>
          <short_desc>Inspector should support console.dirXML</short_desc>
          <delta_ts>2008-09-07 09:49:00 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>14354</blocked>
    
    <blocked>19871</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>keishi</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>81047</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-05-20 16:15:28 -0700</bug_when>
    <thetext>The Inspector should support console.dirXML for Firebug parity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81056</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-05-20 16:23:04 -0700</bug_when>
    <thetext>&lt;rdar://problem/5950860&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88628</commentid>
    <comment_count>2</comment_count>
      <attachid>22832</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2008-08-16 08:49:46 -0700</bug_when>
    <thetext>Created attachment 22832
proposed patch

Doesn&apos;t highlight so not very interactive, but working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88629</commentid>
    <comment_count>3</comment_count>
      <attachid>22833</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2008-08-16 08:52:07 -0700</bug_when>
    <thetext>Created attachment 22833
screenshot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88651</commentid>
    <comment_count>4</comment_count>
      <attachid>22832</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-08-16 21:22:41 -0700</bug_when>
    <thetext>Comment on attachment 22832
proposed patch

Too much coped code. We need to share this with the Element&apos;s DOM more. But the approach seems good!

I propose to factor out the TreeOutline code from ElementsPanel.js into a new file and make it a TreeOutline subclass, like ElementsTreeOutline or NodeTreeOutline. Then you might not need the ConsoleElementsInspector, since that class is very small I don&apos;t see the need,

Also Firebug shows the element that was passed , not just the children. So you need to show the body in your example.

For the record, I hate the &quot;dir&quot; names...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88718</commentid>
    <comment_count>5</comment_count>
      <attachid>22850</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2008-08-18 07:51:12 -0700</bug_when>
    <thetext>Created attachment 22850
proposed patch

I moved a lot of things around so I&apos;m not sure if it&apos;s working properly. As far as I can tell the Alt key is broken but other than that seems to be working. 

The ElementsTreeOutline in the console is selectable but the z-index of highlight is -1 so it&apos;s hidden. Is there a good way to disable select in a TreeOutline?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88719</commentid>
    <comment_count>6</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2008-08-18 07:54:57 -0700</bug_when>
    <thetext>Oh, and how do I add a js file to the build system?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88721</commentid>
    <comment_count>7</comment_count>
      <attachid>22851</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2008-08-18 08:10:09 -0700</bug_when>
    <thetext>Created attachment 22851
alt key fixed

Alt key works now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88722</commentid>
    <comment_count>8</comment_count>
      <attachid>22852</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2008-08-18 08:34:50 -0700</bug_when>
    <thetext>Created attachment 22852
patch

Fixed inspect element from context menu and search.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88737</commentid>
    <comment_count>9</comment_count>
      <attachid>22852</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-08-18 10:56:55 -0700</bug_when>
    <thetext>Comment on attachment 22852
patch

There are a few issues that are preventing this from landing.

The WebInspector.ElementsPanel constructor is indented 1 more space than it needs to be, causing massive changed lines. Undo this so real changes can be seen.

+     this.treeOutline._updateHoverHighlight = function() {
+         if (&quot;_updateHoverHighlightTimeout&quot; in this) {
+             clearTimeout(this._updateHoverHighlightTimeout);
+             delete this._updateHoverHighlightTimeout;
+         }
+
+         if (this._hoveredDOMNode &amp;&amp; this.panel.visible &amp;&amp; (this.panel._altKeyDown || this.panel.forceHoverHighlight))
+             InspectorController.highlightDOMNode(this._hoveredDOMNode);
+         else
+             InspectorController.hideDOMNodeHighlight();
+     },

Why do you need thsi when the same function is in ElementsTreeOutline? Also you are ending the function with a coma, not a semicolon.

+     this.treeOutline.element.addEventListener(&quot;mousemove&quot;, this._onmousemove.bind(this), false);
+     this.treeOutline.element.addEventListener(&quot;mouseout&quot;, this._onmouseout.bind(this), false);

These event listeners can be removed and all of the _onmousemove and _onmouseout functions should move to ElementsTreeOutline.

-        this.updateTreeSelection();
+        this.treeOutline.updateTreeSelection();

Rename this to updateSelection since the word tree is redundant now.

     reset: function()
     {
-        this.rootDOMNode = null;
-        this.focusedDOMNode = null;
-
         this.altKeyDown = false;
-        this.hoveredDOMNode = null;
         this.forceHoverHighlight = false;

You still need to set rootDOMNode, focusedDOMNode and hoveredDOMNode to null here.

     get forceHoverHighlight()
     set forceHoverHighlight()
     get altKeyDown()
     set altKeyDown()

These functions should move with set hoveredDOMNode. The more I think about the hovered node code, it should live in inspector.js seperate from the tree outline. That way code like the breadcrumbs and console messages can support hover and use the shared functions to update the hovered node.

So move _updateHoverHighlight, _updateHoverHighlightSoon, get/set hoveredDOMNode, get/set forceHoverHighlight, and get/set altKeyDown to WebInspector.prototype in inspector.js.

Move _getDocumentForNode, _parentNodeOrFrameElement and _isAncestorIncludingParentFrames to utilities.js, since they are move helper functions and not good class methods. Drop the underscore prefix too.

     _onmousemove: function(event)
     {
-        var element = this._treeElementFromEvent(event);
+        var element = this.treeOutline._treeElementFromEvent(event);
         if (!element)
             return;
 
         this.altKeyDown = event.altKey;
-        this.hoveredDOMNode = element.representedObject;
         this.forceHoverHighlight = element.selected;
     },
 
@@ -1091,332 +909,8 @@ WebInspector.ElementsPanel.prototype = {
         if (event.target !== this.treeListElement)
             return;
         this.altKeyDown = false;
-        this.hoveredDOMNode = null;
         this.forceHoverHighlight = false;
     }
 }

These event listener methods should move entirely to ElementsTreeOutline.

To add the file to the Windows project and Qt project see:

http://trac.webkit.org/changeset/33408#file1
http://trac.webkit.org/changeset/33408#file7

Also you need to add the file to inspector.html, see:

http://trac.webkit.org/changeset/33408#file8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88741</commentid>
    <comment_count>10</comment_count>
      <attachid>22852</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-08-18 11:26:15 -0700</bug_when>
    <thetext>Comment on attachment 22852
patch

Also one really important change to make!

+    updateTreeOutline: function()
+    {
+        this.removeChildrenRecursive();

This needs to be removeChildren(). removeChildrenRecursive() is doing more work than is needed here, and just removing the top level children is enough. This should be a good performance win!

I know it was removeChildrenRecursive in the original code, not sure why I did that!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90386</commentid>
    <comment_count>11</comment_count>
      <attachid>23223</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2008-09-06 20:33:49 -0700</bug_when>
    <thetext>Created attachment 23223
new patch

I think moving all hover related code to WebInspector turned out great. Made the code simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90406</commentid>
    <comment_count>12</comment_count>
      <attachid>23223</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-09-07 08:53:58 -0700</bug_when>
    <thetext>Comment on attachment 23223
new patch

This is ready to land! Nice job!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90408</commentid>
    <comment_count>13</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-09-07 09:49:00 -0700</bug_when>
    <thetext>Landed in r36255.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22832</attachid>
            <date>2008-08-16 08:49:46 -0700</date>
            <delta_ts>2008-08-18 07:51:12 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>patch17.txt</filename>
            <type>text/plain</type>
            <size>11028</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTgwMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDgtMDgtMTYgIEtlaXNoaSBIYXR0b3JpICA8Y2FzZXkuaGF0dG9y
aUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkcyBjb25zb2xlLmRpcnhtbCBzdXBwb3J0IHRvIHRoZSBJbnNwZWN0b3IuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE1NgorCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ29uc29sZTo6ZGlyeG1sKToKKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29uc29sZTo6ZGlyeG1sKTogQWRkcyBhIE5vZGVNZXNzYWdlTGV2ZWwgQ29u
c29sZU1lc3NhZ2UuCisgICAgICAgICogcGFnZS9Db25zb2xlLmg6CisgICAgICAgIChXZWJDb3Jl
OjopOiBBZGRlZCBOb2RlTWVzc2FnZUxldmVsLgorICAgICAgICAqIHBhZ2UvQ29uc29sZS5pZGw6
IEFkZGVkIGNvbnNvbGUuZGlyeG1sLgorICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL0NvbnNvbGUu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZUVsZW1lbnRzSW5zcGVjdG9yKTogQSBj
b250YWluZXIgZm9yIHRoZSBUcmVlT3V0bGluZS4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25z
b2xlRE9NTm9kZVRyZWVFbGVtZW50KTogQSBXZWJJbnNwZWN0b3IuRE9NTm9kZVRyZWVFbGVtZW50
IHdpdGhvdXQgcGFuZWwgcmVsYXRlZCBzdHVmZiAKKyAgICAgICAgYW5kIHRoZSBpbnRlcmFjdGl2
ZSBzdHVmZi4KKwogMjAwOC0wOC0xNSAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IEdlb2ZmIEdhcmVuLgpJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcAkocmV2aXNpb24gMzU4MDEpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4
LDEyIEBAIEpTVmFsdWUqIEpTQ29uc29sZTo6ZGlyKEV4ZWNTdGF0ZSogZXhlYywKICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIH0KIAorSlNWYWx1ZSogSlNDb25zb2xlOjpkaXJ4bWwoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmd1bWVudHMpCit7CisgICAgaW1wbCgpLT5kaXJ4
bWwoZXhlYywgYXJndW1lbnRzKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKwogSlNW
YWx1ZSogSlNDb25zb2xlOjphc3NlcnRDb25kaXRpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBB
cmdMaXN0JiBhcmd1bWVudHMpCiB7CiAgICAgQXJnTGlzdCBtZXNzYWdlUGFyYW1ldGVyczsKSW5k
ZXg6IFdlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
Q29uc29sZS5jcHAJKHJldmlzaW9uIDM1ODAxKQorKysgV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsNiArMjQ1LDIxIEBAIHZvaWQgQ29uc29sZTo6ZGlyKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QKICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmFk
ZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBPYmplY3RNZXNzYWdlTGV2ZWwsIGV4
ZWMsIGFyZ3MsIDAsIFN0cmluZygpKTsKIH0KIAordm9pZCBDb25zb2xlOjpkaXJ4bWwoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIGlmIChhcmdzLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47
CisKKyAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hZGRNZXNz
YWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgTm9kZU1lc3NhZ2VMZXZlbCwgZXhlYywgYXJn
cywgMCwgU3RyaW5nKCkpOworfQorCiB2b2lkIENvbnNvbGU6OmFzc2VydENvbmRpdGlvbihib29s
IGNvbmRpdGlvbiwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewogICAg
IGlmIChjb25kaXRpb24pCkluZGV4OiBXZWJDb3JlL3BhZ2UvQ29uc29sZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9Db25zb2xlLmgJKHJldmlzaW9uIDM1ODAxKQorKysgV2ViQ29yZS9w
YWdlL0NvbnNvbGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIFdhcm5pbmdNZXNzYWdlTGV2ZWwsCiAgICAgICAgIEVycm9yTWVz
c2FnZUxldmVsLAogICAgICAgICBPYmplY3RNZXNzYWdlTGV2ZWwsCisgICAgICAgIE5vZGVNZXNz
YWdlTGV2ZWwsCiAgICAgICAgIFN0YXJ0R3JvdXBNZXNzYWdlTGV2ZWwsCiAgICAgICAgIEVuZEdy
b3VwTWVzc2FnZUxldmVsCiAgICAgfTsKQEAgLTc4LDYgKzc5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2b2lkIGxvZyhLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6QXJnTGlz
dCYgYXJndW1lbnRzKTsKICAgICAgICAgdm9pZCB3YXJuKEtKUzo6RXhlY1N0YXRlKiwgY29uc3Qg
S0pTOjpBcmdMaXN0JiBhcmd1bWVudHMpOwogICAgICAgICB2b2lkIGRpcihLSlM6OkV4ZWNTdGF0
ZSosIGNvbnN0IEtKUzo6QXJnTGlzdCYgYXJndW1lbnRzKTsKKyAgICAgICAgdm9pZCBkaXJ4bWwo
S0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OkFyZ0xpc3QmIGFyZ3VtZW50cyk7CiAgICAgICAg
IHZvaWQgYXNzZXJ0Q29uZGl0aW9uKGJvb2wgY29uZGl0aW9uLCBLSlM6OkV4ZWNTdGF0ZSosIGNv
bnN0IEtKUzo6QXJnTGlzdCYgYXJndW1lbnRzKTsKICAgICAgICAgdm9pZCBwcm9maWxlKEtKUzo6
RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpBcmdMaXN0JiBhcmd1bWVudHMpOwogICAgICAgICB2b2lk
IHByb2ZpbGVFbmQoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OkFyZ0xpc3QmIGFyZ3VtZW50
cyk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvQ29uc29sZS5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL0NvbnNvbGUuaWRsCShyZXZpc2lvbiAzNTgwMSkKKysrIFdlYkNvcmUvcGFnZS9Db25z
b2xlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQCBtb2R1bGUgd2luZG93IHsK
ICAgICAgICAgW0N1c3RvbV0gdm9pZCBsb2coKTsKICAgICAgICAgW0N1c3RvbV0gdm9pZCB3YXJu
KCk7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgZGlyKCk7CisgICAgICAgIFtDdXN0b21dIHZvaWQg
ZGlyeG1sKCk7CiAgICAgICAgIFtDdXN0b20sIEltcGxlbWVudGF0aW9uRnVuY3Rpb249YXNzZXJ0
Q29uZGl0aW9uXSB2b2lkIGFzc2VydChpbiBib29sZWFuIGNvbmRpdGlvbik7CiAKICAgICAgICAg
W0N1c3RvbV0gdm9pZCBwcm9maWxlKGluIERPTVN0cmluZyB0aXRsZSk7CkluZGV4OiBXZWJDb3Jl
L3BhZ2UvaW5zcGVjdG9yL0NvbnNvbGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL2lu
c3BlY3Rvci9Db25zb2xlLmpzCShyZXZpc2lvbiAzNTgwMSkKKysrIFdlYkNvcmUvcGFnZS9pbnNw
ZWN0b3IvQ29uc29sZS5qcwkod29ya2luZyBjb3B5KQpAQCAtNTEyLDYgKzUxMiwxMyBAQCBXZWJJ
bnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UgPSBmdW5jdGlvbihzCiAgICAgICAgIHZhciBwcm9wZXJ0
aWVzU2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydGllc1NlY3Rpb24oYXJn
dW1lbnRzWzVdLCBudWxsLCBudWxsLCBudWxsLCB0cnVlKTsKICAgICAgICAgcHJvcGVydGllc1Nl
Y3Rpb24uZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJjb25zb2xlLW1lc3NhZ2UiKTsKICAgICAgICAg
dGhpcy5wcm9wZXJ0aWVzU2VjdGlvbiA9IHByb3BlcnRpZXNTZWN0aW9uOworICAgIH0gZWxzZSBp
ZiAodGhpcy5sZXZlbCA9PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZl
bC5Ob2RlKSB7CisgICAgICAgIHZhciBub2RlID0gYXJndW1lbnRzWzVdOworICAgICAgICBpZiAo
IShub2RlIGluc3RhbmNlb2YgSW5zcGVjdG9yQ29udHJvbGxlci5pbnNwZWN0ZWRXaW5kb3coKS5O
b2RlKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdmFyIGVsZW1lbnRzSW5zcGVjdG9y
ID0gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlRWxlbWVudHNJbnNwZWN0b3Iobm9kZSk7CisgICAg
ICAgIGVsZW1lbnRzSW5zcGVjdG9yLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygiY29uc29sZS1tZXNz
YWdlIik7CisgICAgICAgIHRoaXMuZWxlbWVudHNJbnNwZWN0b3IgPSBlbGVtZW50c0luc3BlY3Rv
cjsKICAgICB9CiAKICAgICBpZiAodXJsICYmIGxpbmUgPiAwICYmIHRoaXMuaXNFcnJvck9yV2Fy
bmluZygpKSB7CkBAIC01ODQsOCArNTkxLDEwIEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2Fn
ZS5wcm90b3R5cGUgPSAKIAogICAgIHRvTWVzc2FnZUVsZW1lbnQ6IGZ1bmN0aW9uKCkKICAgICB7
Ci0gICAgICAgIGlmICh0aGlzLmxldmVsID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2Uu
TWVzc2FnZUxldmVsLk9iamVjdCkKKyAgICAgICAgaWYgKHRoaXMucHJvcGVydGllc1NlY3Rpb24p
CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9wZXJ0aWVzU2VjdGlvbi5lbGVtZW50OworICAg
ICAgICBlbHNlIGlmICh0aGlzLmVsZW1lbnRzSW5zcGVjdG9yKQorICAgICAgICAgICAgcmV0dXJu
IHRoaXMuZWxlbWVudHNJbnNwZWN0b3IuZWxlbWVudDsKIAogICAgICAgICB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICBlbGVtZW50Lm1lc3NhZ2Ug
PSB0aGlzOwpAQCAtNzE1LDggKzcyNCw5IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5N
ZXNzYWdlTGV2ZWwKICAgICBXYXJuaW5nOiAyLAogICAgIEVycm9yOiAzLAogICAgIE9iamVjdDog
NCwKLSAgICBTdGFydEdyb3VwOiA1LAotICAgIEVuZEdyb3VwOiA2CisgICAgTm9kZTogNSwKKyAg
ICBTdGFydEdyb3VwOiA2LAorICAgIEVuZEdyb3VwOiA3CiB9CiAKIFdlYkluc3BlY3Rvci5Db25z
b2xlQ29tbWFuZCA9IGZ1bmN0aW9uKGNvbW1hbmQsIHJlc3VsdCwgZm9ybWF0dGVkUmVzdWx0RWxl
bWVudCwgbGV2ZWwpCkBAIC04MDcsMyArODE3LDExOSBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZUdy
b3VwLnByb3RvdHlwZSA9IHsKICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICB9
CiB9CisKK1dlYkluc3BlY3Rvci5Db25zb2xlRWxlbWVudHNJbnNwZWN0b3IgPSBmdW5jdGlvbihu
b2RlKSB7CisgICAgdGhpcy5yb290RE9NTm9kZSA9IG5vZGU7CisgICAgCisgICAgdmFyIGVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBlbGVtZW50LmNsYXNzTmFt
ZSA9ICJvdXRsaW5lLWRpc2Nsb3N1cmUiOworICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7Cisg
ICAgCisgICAgdGhpcy50cmVlTGlzdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJv
bCIpOworICAgIAorICAgIHRoaXMudHJlZU91dGxpbmUgPSBuZXcgVHJlZU91dGxpbmUodGhpcy50
cmVlTGlzdEVsZW1lbnQpOworICAgIAorICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy50cmVl
TGlzdEVsZW1lbnQpOworCisgICAgdGhpcy51cGRhdGVUcmVlT3V0bGluZSgpOworfQorCitXZWJJ
bnNwZWN0b3IuQ29uc29sZUVsZW1lbnRzSW5zcGVjdG9yLnByb3RvdHlwZSA9IHsKKyAgICB1cGRh
dGVUcmVlT3V0bGluZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy50cmVlT3V0bGlu
ZS5yZW1vdmVDaGlsZHJlblJlY3Vyc2l2ZSgpOworCisgICAgICAgIGlmICghdGhpcy5yb290RE9N
Tm9kZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBGSVhNRTogdGhpcyBjb3Vs
ZCB1c2UgZmluZFRyZWVFbGVtZW50IHRvIHJldXNlIGEgdHJlZSBlbGVtZW50IGlmIGl0IGFscmVh
ZHkgZXhpc3RzCisgICAgICAgIHZhciBub2RlID0gKFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3Bh
Y2UgPyBmaXJzdENoaWxkU2tpcHBpbmdXaGl0ZXNwYWNlLmNhbGwodGhpcy5yb290RE9NTm9kZSkg
OiB0aGlzLnJvb3RET01Ob2RlLmZpcnN0Q2hpbGQpOworICAgICAgICB3aGlsZSAobm9kZSkgewor
ICAgICAgICAgICAgdmFyIG5vZGVUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29s
ZURPTU5vZGVUcmVlRWxlbWVudChub2RlKTsKKyAgICAgICAgICAgIG5vZGVUcmVlRWxlbWVudC5v
bnNlbGVjdCA9IGZ1bmN0aW9uKCkge307CisgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLmFw
cGVuZENoaWxkKG5vZGVUcmVlRWxlbWVudCk7CisgICAgICAgICAgICBub2RlID0gUHJlZmVyZW5j
ZXMuaWdub3JlV2hpdGVzcGFjZSA/IG5leHRTaWJsaW5nU2tpcHBpbmdXaGl0ZXNwYWNlLmNhbGwo
bm9kZSkgOiBub2RlLm5leHRTaWJsaW5nOworICAgICAgICB9CisgICAgfSwKK30KKworV2ViSW5z
cGVjdG9yLkNvbnNvbGVET01Ob2RlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihub2RlKSB7CisgICAg
dmFyIG5vZGVUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuRE9NTm9kZVRyZWVFbGVtZW50
KG5vZGUpOworICAgIG5vZGVUcmVlRWxlbWVudC51cGRhdGVDaGlsZHJlbiA9IGZ1bmN0aW9uKGZ1
bGxSZWZyZXNoKSB7CisgICAgICAgIGlmIChmdWxsUmVmcmVzaCkKKyAgICAgICAgICAgIHRoaXMu
cmVtb3ZlQ2hpbGRyZW4oKTsKKworICAgICAgICB2YXIgdHJlZUVsZW1lbnQgPSB0aGlzOworICAg
ICAgICB2YXIgdHJlZUNoaWxkSW5kZXggPSAwOworCisgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUNo
aWxkcmVuT2ZOb2RlKG5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciB0cmVlT3V0bGlu
ZSA9IHRyZWVFbGVtZW50LnRyZWVPdXRsaW5lOworICAgICAgICAgICAgdmFyIGNoaWxkID0gKFBy
ZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UgPyBmaXJzdENoaWxkU2tpcHBpbmdXaGl0ZXNwYWNl
LmNhbGwobm9kZSkgOiBub2RlLmZpcnN0Q2hpbGQpOworICAgICAgICAgICAgd2hpbGUgKGNoaWxk
KSB7CisgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRUcmVlRWxlbWVudCA9IHRyZWVFbGVtZW50
LmNoaWxkcmVuW3RyZWVDaGlsZEluZGV4XTsKKyAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRU
cmVlRWxlbWVudCB8fCAhb2JqZWN0c0FyZVNhbWUoY3VycmVudFRyZWVFbGVtZW50LnJlcHJlc2Vu
dGVkT2JqZWN0LCBjaGlsZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRmluZCBhbnkgZXhp
c3RpbmcgZWxlbWVudCB0aGF0IGlzIGxhdGVyIGluIHRoZSBjaGlsZHJlbiBsaXN0LgorICAgICAg
ICAgICAgICAgICAgICB2YXIgZXhpc3RpbmdUcmVlRWxlbWVudCA9IG51bGw7CisgICAgICAgICAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAodHJlZUNoaWxkSW5kZXggKyAxKTsgaSA8IHRyZWVFbGVt
ZW50LmNoaWxkcmVuLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
b2JqZWN0c0FyZVNhbWUodHJlZUVsZW1lbnQuY2hpbGRyZW5baV0ucmVwcmVzZW50ZWRPYmplY3Qs
IGNoaWxkKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nVHJlZUVsZW1l
bnQgPSB0cmVlRWxlbWVudC5jaGlsZHJlbltpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ1RyZWVFbGVtZW50ICYmIGV4aXN0
aW5nVHJlZUVsZW1lbnQucGFyZW50ID09PSB0cmVlRWxlbWVudCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gSWYgYW4gZXhpc3RpbmcgZWxlbWVudCB3YXMgZm91bmQgYW5kIGl0IGhhcyB0
aGUgc2FtZSBwYXJlbnQsIGp1c3QgbW92ZSBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciB3YXNTZWxlY3RlZCA9IGV4aXN0aW5nVHJlZUVsZW1lbnQuc2VsZWN0ZWQ7CisgICAgICAgICAg
ICAgICAgICAgICAgICB0cmVlRWxlbWVudC5yZW1vdmVDaGlsZChleGlzdGluZ1RyZWVFbGVtZW50
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50Lmluc2VydENoaWxkKGV4aXN0
aW5nVHJlZUVsZW1lbnQsIHRyZWVDaGlsZEluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh3YXNTZWxlY3RlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ1Ry
ZWVFbGVtZW50LnNlbGVjdCgpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gTm8gZXhpc3RpbmcgZWxlbWVudCBmb3VuZCwgaW5zZXJ0IGEg
bmV3IGVsZW1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICB0cmVlRWxlbWVudC5pbnNlcnRD
aGlsZChuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVET01Ob2RlVHJlZUVsZW1lbnQoY2hpbGQpLCB0
cmVlQ2hpbGRJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBjaGlsZCA9IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2Ug
PyBuZXh0U2libGluZ1NraXBwaW5nV2hpdGVzcGFjZS5jYWxsKGNoaWxkKSA6IGNoaWxkLm5leHRT
aWJsaW5nOworICAgICAgICAgICAgICAgICsrdHJlZUNoaWxkSW5kZXg7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICAvLyBSZW1vdmUgYW55IHRyZWUgZWxlbWVudHMgdGhhdCBu
byBsb25nZXIgaGF2ZSB0aGlzIG5vZGUgKG9yIHRoaXMgbm9kZSdzIGNvbnRlbnREb2N1bWVudCkg
YXMgdGhlaXIgcGFyZW50LgorICAgICAgICBmb3IgKHZhciBpID0gKHRoaXMuY2hpbGRyZW4ubGVu
Z3RoIC0gMSk7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAgICBpZiAoImVsZW1lbnRDbG9zZVRh
ZyIgaW4gdGhpcy5jaGlsZHJlbltpXSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAgICAgdmFyIGN1cnJlbnRDaGlsZCA9IHRoaXMuY2hpbGRyZW5baV07CisgICAgICAgICAg
ICB2YXIgY3VycmVudE5vZGUgPSBjdXJyZW50Q2hpbGQucmVwcmVzZW50ZWRPYmplY3Q7CisgICAg
ICAgICAgICB2YXIgY3VycmVudFBhcmVudE5vZGUgPSBjdXJyZW50Tm9kZS5wYXJlbnROb2RlOwor
CisgICAgICAgICAgICBpZiAob2JqZWN0c0FyZVNhbWUoY3VycmVudFBhcmVudE5vZGUsIHRoaXMu
cmVwcmVzZW50ZWRPYmplY3QpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY29udGVudERvY3VtZW50ICYmIG9iamVjdHNB
cmVTYW1lKGN1cnJlbnRQYXJlbnROb2RlLCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmNvbnRlbnRE
b2N1bWVudCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHRoaXMu
cmVtb3ZlQ2hpbGRBdEluZGV4KGkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMucmVw
cmVzZW50ZWRPYmplY3QuY29udGVudERvY3VtZW50KQorICAgICAgICAgICAgdXBkYXRlQ2hpbGRy
ZW5PZk5vZGUodGhpcy5yZXByZXNlbnRlZE9iamVjdC5jb250ZW50RG9jdW1lbnQpOworICAgICAg
ICB1cGRhdGVDaGlsZHJlbk9mTm9kZSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKKworICAgICAg
ICB2YXIgbGFzdENoaWxkID0gdGhpcy5jaGlsZHJlblt0aGlzLmNoaWxkcmVuLmxlbmd0aCAtIDFd
OworICAgICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC5ub2RlVHlwZSA9PSBOb2RlLkVM
RU1FTlRfTk9ERSAmJiAoIWxhc3RDaGlsZCB8fCAhbGFzdENoaWxkLmVsZW1lbnRDbG9zZVRhZykp
IHsKKyAgICAgICAgICAgIHZhciB0aXRsZSA9ICI8c3BhbiBjbGFzcz1cIndlYmtpdC1odG1sLXRh
ZyBjbG9zZVwiPiZsdDsvIiArIHRoaXMucmVwcmVzZW50ZWRPYmplY3Qubm9kZU5hbWUudG9Mb3dl
ckNhc2UoKS5lc2NhcGVIVE1MKCkgKyAiJmd0Ozwvc3Bhbj4iOworICAgICAgICAgICAgdmFyIGl0
ZW0gPSBuZXcgVHJlZUVsZW1lbnQodGl0bGUsIG51bGwsIGZhbHNlKTsKKyAgICAgICAgICAgIGl0
ZW0uc2VsZWN0YWJsZSA9IGZhbHNlOworICAgICAgICAgICAgaXRlbS5lbGVtZW50Q2xvc2VUYWcg
PSB0cnVlOworICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChpdGVtKTsKKyAgICAgICAgfQor
ICAgIH07CisgICAgbm9kZVRyZWVFbGVtZW50Lm9uZXhwYW5kID0gZnVuY3Rpb24oKSB7fTsKKyAg
ICBub2RlVHJlZUVsZW1lbnQub25jb2xsYXBzZSA9IGZ1bmN0aW9uKCkge307CisgICAgbm9kZVRy
ZWVFbGVtZW50Lm9uc2VsZWN0ID0gZnVuY3Rpb24oKSB7fTsKKyAgICBub2RlVHJlZUVsZW1lbnQu
b25kYmxjbGljayA9IGZ1bmN0aW9uKCkge307CisgICAgbm9kZVRyZWVFbGVtZW50Ll9zdGFydEVk
aXRpbmcgPSBmdW5jdGlvbigpIHt9OworICAgIHJldHVybiBub2RlVHJlZUVsZW1lbnQ7Cit9Owpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>
<flag name="review"
          id="10146"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>22833</attachid>
            <date>2008-08-16 08:52:07 -0700</date>
            <delta_ts>2008-08-16 08:52:07 -0700</delta_ts>
            <desc>screenshot</desc>
            <filename>Picture 2.png</filename>
            <type>image/png</type>
            <size>173078</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">iVBORw0KGgoAAAANSUhEUgAABRwAAALQCAYAAADy77wwAAAB2mlDQ1BJQ0MgUHJvZmlsZQAAeJyd
kk1rE1EUhp87QRJQs6jTIsXFLEqpkEjIRMhKpimYRLsIzZR8uJpOYlLJTC+TSVRw4W9wIQjiQkG6
EVcScdWFghsXpaBB/Qe6slCQUsbFNWQhUfDAhee8cDjnvudALO9I2dMAzw+DjWLBqDeaRnxMgrOc
Y4ELjtuXq5XKOjPj6CMC4CDtSNn79mpw8PXG/tPR4tzPq8nN+dl1ACSDeqMJIgXoHcUWoG8ptgH9
dihDEF1Ad7tOC8Q9IBXYG2sgdoFkR/FrILml+D2QHLqdEMQYyPitbR+0BJBvtfsuaBbQbfVdD7Rd
oOB5Oy3QvgMrrgxCiOnAUr3RNNTIwx9w5QloD6Za4yW8KMD88VRbzoF+Gd48mmqHYwQgFhL9m2YW
AHF6BKceRtFhDeIX4eRTFB2PoujkOcQ+w96ROwiGv/0S4gP8K1d/VjnshxOaxcoXADLwbA9qwPX7
8NiC5RrMfYGKBbaFZpqTpzxUeyyW0na5mM2Z1VL6L8fyX+H1BpM+GnCm7W9WgUVg5ZZzrTJhipRI
Y1OmSJYcJlVKpFkHtVcA9zzElwDe1t790Sts3wkB1nbk3WC70w2NVSl77ZRR9t1LKSObyeT5Bah6
hzzPfqQwAAAACXBIWXMAAAsTAAALEwEAmpwYAAAgAElEQVR4nOzdd5hU5dn48e+ZvjPb2GV32aXD
0tuyVI00ASmGZof4EzUGu4kxRmOMKZZY3kQl5k1eGwbUoAiCAgYRpSgQ6SC9rLSF7b3PzPn9sc4w
O3tm5szuLEXvz3XNNWfOee5nnnN2mD3c+xQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQ
QgghhBBCCCGEEEIIIYQQQgghhBChKBe6AS3g+3hOQgghhBBCCCGEEOL7S73QDYikiz05d7G3Twgh
hBBCCCGEEEKIC+GiTVJeLAm95rbjYjkPIYQQQgghhBBCCCGao7mJxAueiLxQibpw3rc5bdQTqzbz
PSRe4iVe4iVe4iVe4iVe4iVe4iVe4iVe4iVe4sONb05iMJzY856APJ8JRz3vFakykYgRQgghhBBC
CCGEECLSmpIA1BMTqTLN1tKJuOYkEEPFShJRCCGEEEIIIYQQQnyfhUoQBjp+QZOPLZW0a2qyUGu/
3jYGKheoy6veei/GLrcSL/ESL/ESL/ESL/ESL/ESL/ESL/ESL/ESf/HH603qeeLDKa/3vZqatGyy
SCccg9WnN8nYlDpCHdNzXAghhBBCCCGEEEKIltSc5F84x5qSfIxY4jGSSbim9Fr0ZG+bmoxUAUMT
2uQbfzFmvyVe4iVe4iVe4iVe4iVe4iVe4iVe4iVe4iX++x2vN/kXqPej3qSiW+P9m9obUpdIJBzD
6XWopzejEuR4OL0h9RwPt5wQQgghhBBCCCGEEME0Z1h0sOPBXusZYq03YRnqWEjNTbQ1tWdisNd6
tsOpO9R+IYQQQgghhBBCCCHOB709C/WU07PdlNeh9ofUnCRcUxKAeo5p7Qs09Fpv3VpdV333NWXo
dTjdaSVe4iVe4iVe4iVe4iVe4iVe4iVe4iVe4iX+hxGvhhHvXzac4/7Hgh0Ppy49+4PSe8H0xik6
tgMd8/xADCHKBdv2/BCDvV8oTb0mvu8v8RIv8RIv8RIv8RIv8RIv8RIv8RIv8RIv8T+seL3JOf85
FcNJNHoSi1qJTa1nrfqD1a0l7KRjpBKOehKK/q8DPestE+x9PBc9WDtCuVg/vBIv8RIv8RIv8RIv
8RIv8RIv8RIv8RIv8RJ/acYHS/75vw50TE9yMVgZve8T6HVITbmgTU02hpto1JOIDLQvnPYKIYQQ
QgghhBBCCNGS9Cbx9CQR/fc1NfHYYknHcJNvepON4fZqDJZo9E8u6n0P/201QBn/Y4EEKyPxEi/x
Ei/xEi/xEi/xEi/xEi/xEi/xEi/xEq9VRg1wTA1QJlBssPJqgH3BnvW+d6DXAZn0FtRB8XvW2q/4
7dc6FmifVr1a76kSeB5Iz+tAH5Bgx3xdjB9eiZd4iZd4iZd4iZd4iZd4iZd4iZd4iZd4ib9w8WqQ
Mv7H3JzLX/nXpfqV8a/H89q/Tv99gdroX04JsL/JQl3YYGUVHdtw7uIpGs/Btj0nqRWv9X7+z3ra
HWwf6PvwBSPxEi/xEi/xEi/xEi/xEi/xEi/xEi/xEi/xP6x4raRdsH3+SUKtff77fZ/dQcoGi9N6
r0DtCfRaU1MTjnq3gyUJlSBlAiUgCeNZ77YeF9sHV+IlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIv
jfhASbtASUWtMv6JwkCJQ61ywZKXgZKLerYD0jukOtDFVjh3MYMlAAPt88Qb/MoZAsRq1eVfzjde
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
zJyZwzPPlDNsWAbJyVl88kn9ZZX5z38exh/+UE5WVofVdFt1uGjRBXbu7H7roNebGDcui08/7S67
ySSYMuU8+fk6p8us1wuamy8tFXF1VfP116NYtszf4rxXXuluW8OHZ/DCC5Xy8TNn2rnrriKGDEkn
MTGTL77oltle3dtLKynREx9/Tp75N3t2Dn/9azVRUWcJC0vn6acvvaWy11YHwssvV/PCCxGyIgLd
b3x+97twHnpoCAaDcNqzZl7OwdJfmWzds4KCTubOzeXhh0sIDU1nx44mm+3VGlFRrhw82MLf/lbT
6y83V6c4GxUUFBQUFP5NyMvLY8GCBfj7+5OUlGQxA+6LL74gNTUVX19f4uLiePzxxzGZupeurl+/
ntmzZxMQEMA111zDv/71L/l3tmyp2267jfj4eDmsldFoZNKkScybN8+mfJ2dnTzwwAMEBwcTHx9v
MXnElnwrVqygq6uLrKws4uPjWb58ucV3g8FAc3Mza9euJSoqirCwMFavXk1tbS0AxcXFxMfH8+ST
T5KcnExMTAylpaU8+uijvP322/L1f/7zn5Ofn8/27dupqKjg6quvJjQ0lKeffpqkpCTy8/N5/vnn
eeKJJ+TfHD9+nIkTJ+Lv788tt9zCk08+SXx8PFVVVWRmZhIfH8///u//smTJEvz9/fnZz35GTk4O
ixcvxt/fn3nz5lFfX99nHXR0dPSSdzBtwV59DURuR+mpZzui44NtHbmvNEdtkv7o1X3hiJ38m9+U
WthOQghmzMjhzBnbM+XefbeORYv8WbMmiE8+qZdn/ElkZXUwf34ewcFpXHddHocPtziUZqv+LlzQ
MW5clsU1Fi7M4+DBFru24M0359PUZGTFivwBLVvvywbu2YZs3eO+7NWeDKQe+ltWKX5jV1cXhYWF
nDhxgqNHj7Jz504++ugjNm3axI4dOzh9+jQ6na7nz+05GHumO7Kp82X35KvodkSqAQ3dsyBdAFfA
DXAHPAEvwBvwA/yBQCAYCAXCgWHACCAKiAVGA2OARGA8kAxMBqYDM4BrgLnAz4DrgCXAY8JBmpqa
hFqtFklJSaKrq0v4+/uL2bNni1deeUUAYu/eveK5554TgNi0aZOoqakR/v7+IiwsTPzud78TY8eO
FVqtVly4cEHk5eVJnl2xdOlSsW7dOuHq6ipCQ0NFS0uLoyL1YsqULPHyy5VCCCHy8jqESnVS3H57
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
LF0LwJNPPsm9996Lw+Hg85//PHPnzsVsNqMoCvX19XzrW9/C5/Px//7f/+PjH/84f/rTn/jOd75D
Q0MDp5xyCtu2baOqqoof/ehH3H///bz55pusXr0as9nM66+/znXXXcf//M//8NnPfpbm5mZWrFjB
gQMHOOGEEzj77LPZuXMnmzZtYsaMGVx//fVEIhF2796dtexTb5TUG0YnEomgJuLI+SVc9vM4vc0K
smXQjwSyKXlEAtkCJklDkkwZp8frb4r0ssqUXmNjIy+//DIbNmzg9ttvB6C1tZWtW7fyxBNPsH37
du69915uvfVWotEoDz/8MM888wxFRUW0trYSCoV47bXXiMfjPPXUUwwMDHDFFVewePFiysvLjSne
ehvt7OxEVZMbZoTDYf79739z99134/F42LlzJ3/605/43e9+R11dHcFgkPb2dh599FHWr1/P6tWr
+fKXv8zu3buZMWMGL7/8MtOnT+emm24iFotx6NAhQ99Iiyhnw2KxoKoqZ555JqtXryYvLw+TycTa
tWuN0XCqovDw449zoLGB4IvPQ2CA5178K8q8hbi8XnpbWlArKnC531t3T097+vTpXHbZZdx8881c
eOGFnH/++ciyTGdnZ0btmqbxr3/9i+9///ssWrSI5uZmuru7jTrt7u6mpaWFhx56iPr6eu644w5+
85vf8OUvf5mXX36Zn/zkJ5SUlNDZ2cmTTz7J+vXrOf300+nvT+56nCt6erqhKRJJ7oxutVpwu93E
4uqgTshzu7js6uuJx+Ps3dOIoqiEQ0E2vNWI02Fjem0Nh9o6mT11IrIpSiwWQx1mGnooFGLTpk08
9thjXHLJJYbuPXv28MgjjzAwMMBzzz1HNBo9rA0uWrSISy+9FJ/Px4033mgsKZGJV199lYqKCn72
s5/xy1/+kldeeYULLriAnTt30trayiOPPIIkSUOG+Gf7g5eOXv+KohCLRInF4iQSyeUQunv8fP6q
b+BxWVASKq0dPhbMr6KkyAWD8aX/uWtoaDA2lNLzkr6Isp4//Xx3dzcrVqwwXuBcddVVzJgxg3fe
eYebb76ZU089lVNPPZW3336bBQsWcN5553HgwAFOO+00vvjFL2IymTjjjDP45Cc/aaw9+tZbb3HH
HXfw7W9/mxtuuIH//Oc/nHPOORnDFBUV8dJLLzF9+nS+9rWvEY1GaWlpQdM07rvvPv7whz/gcDi4
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
zLLee5rDDx+l//7vZ3T66eP0iU+8Qzvv3EdS20i3115bo7feWq8bb5ytJUs26vnnl3fI5v2OsjRM
OlaP3XiuJhx3viYce576Dt08ynTCIdplwiF65ieXaf8Tv6RCcUv50m+nURr3wdM087ff0iHnf0cv
3nur9jnhs5m//ZUL5mjVmy9rXeMC/fMX12rD8kVqnNt286ZKv4f+/XvpM5+ZoD/+8U19+MNjNGnS
8PZlf/rTW9pvv2Ht1/g788y9dMwxD+nqq9uuNWf/PleubPsOs36f1133vF57bW3767PO2ru9zPN9
tyEaGzfqjDMe1de+9m69731t2wv5TRx44E468MDOo6V++MO5qq8v6tprD9K3v/2CpkwZqQMO2Ek/
/OFcjRrVr31EXKkU6+23mzRwYC8dccSuOuKIXXXllf/QoYfuoi9+cYYkafr0gzVqVD9J0mGHjWwf
LWjq169ON954iPr1q9NxxzXoxBP/LEmaPXulXnllte6++wj16lXo8DtJ+3dUzb8x33cbsk3X57lh
Q0mDB/fW9Okzdeqp79Duu/fX+vUt2rChNfU4Ks2lfUeS/7OWpM99bh/NnLlcZ575mB544D87jHqt
xNAxE7VqwRwtffFJ7XPc+Xrj6fu0csEcTZj66dRc2t/dtL8vUuf/xm1at0pS9f+Nc0n7jtKWhfxb
cdltUoNOu+9MLXhyvv5yxUPqPaC3Jn9pinbZv+uvKw0AAIBtqtL+LSkna9rR1apwzDpw37rd4qYw
jY2NmjlzZofCceVrK/TKA3PVu39vjZs6vr1slKRlLzVq5AG7qveAtlOZNixb32mbPpMuPFTP3vqU
Rh64qxY+OV/H3nxCZmbF67M0cp/JKtS1/Y+6DSuqv5voinkvaOe9D1Kvvm3va+PKpR2W9x08XL37
D5YkRYWiyuW2C+DvevBoDdhlgGzJyM8sY8cOlCTV1xd10EHZ10abO3eV9ttvmPr3b3vvy5Y1dVi+
0059NGhQ2/dQLEYqlTr+FKNIirdCrZ32eVb6maW99yiK2kfySOpUalx22QGaNm2MfvGLV/XBDz6g
G26YpKlTG9TUVNLQofXt5ZUknXbaOzpk835HWd5z9vUad/jH9dL9P9Rd5++n933uB9rzsI8aa7hH
ZR94yqW669P7aZ/jP6N5T/5OJ/34xU7r2ErNG9Vn4E7a7V1Hts8bf+y5kqr/7bqsW9faYZRa3751
amkpq7W17f1U+vu84IIJHW46MXTolhFovu82+1hbdPrpj+qss/bWhz88pn1+yG/CZfnyJt1884t6
5pkTNHRovdaubdGXv/ysHnroGK1YsUlr1rTo4ouf1rp1LVq4cJ0uvvhpfe5zE3XooSP03HNv6+23
m9SvX50uuWQ//fvfq3XffQt0/vnjU/e522791K9f23+2Zs9eqT33bPutzpmzSgcfPLz9dOhly7ac
Upz27yjr70sa33db6TZHj+6nO+98XX371umaa96tefPWadOmskaNSv99VppL+46iyP9ZS1KpFGvl
yk3q37+Xnn9+ucaPHxL0Hn2G7TFRC/5+v4q96rXn+07UE9+/UIVCXealELL+O9bG/felq/4b55L2
HWV9f5X+W5GkXQ8arb2OfaeeufVpvfLgy9p5wgiu8wgAANCzpBWM9vKQmzrnOmU6S7WFY8h537Zu
M8Kxvr5e06ZN0/HHH6/+/ft3WLbz+OE68denaemsxXrqu3/TEzc0a/J/TdHuh+2hUe/eTcvmLFXz
2mY1rdqoP132YPA72ftDE/TXrz2iBy7+fzrwzIPbr/2YZsT49+q5n12l1uaNWte4QM/85DIV66u7
Q+7wd75HK+a9oE0b1qp57Qo9devnskOS1i1eo2VzOp+iNeqg0epT3f/mdDrwwJ00d+4qrVvXolWr
NunKK/+RK7/77v01f/46jRs3SK2t5Q6naNaS6/NMCsFKP7O09z5wYJ2WLm1SHMeaP3+drrnm+faR
bk1NJa1Y0awJE4bo+usP1r77DtV99y3Q1KkN2mefth1GUaSDD24rE+3TPWupdVOTmla/rWF77qfD
LrpFO7/jXXrt0d90KBwHjtxTa956VUN2H69yqVWFYtufpf4776Zxh5+q+y87Snv+x0fVu99A327a
DRvbdh25qFDQLvu0jR5es/h1SV3z2506dbSmT/+XVqxo1rBh9br33jf0n/+5m/r0Cfsf9b7fp2/U
Ytp3m6alpaxzz31c73vfSH360x2LipDfxNKlGzVjRqOmTdtSVG7Y0KrevQsqFtv+pI8bN0j19W3H
/9Wvbjn1c9asFbrkkmf0618fLknatKmk6657Xj/+8WG68cbZamkpq6mprMGDt1zzdO7cVXr++eU6
9VR38blkyQb97/++qo9+dA9J0rvetZO+/e0XtHFjq956a4OmT5/Z/h2k/Tuq9u+LS8g2XZ/n1KkN
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
VkqSfvq3YXpzeaxSa1ktpZJKrSW1tMb6zpn+QjJ03wsXLpQkTZgwQRs3btQ111yjq666Si+88IK+
8pWv6PLLL28fzTh+/Hg98sgjWrhwoSZOnJi575D3DAAAAAAAgG3KVwRmjX7Myttyj34s5Fk5B19j
6jpA15vO07J2C6VSSYpitba2ts9rbS0pLpVULpdULpdVKpVVLrembCVcUpq2tLSoXC6rpaVF11xz
jfbbbz+99tprmj59evup5S0tLR0yAAAAAAAA2O75+rO0gjD3pQ4rETrCMXYcRJ5mM+288Zqfv3vu
uefWepOpvnNfLy1bHWnvhpIuPbG3Vq1qm//fH43U9nY7Fn2rkhWqMHLkSEnSiy++qClTpnQoHZOR
jtOnT9fll1+uF198sUMGAAAAAAAA27WsPs3Xv6WVjKlnIecROuQtdBSi7yDS8tvdaEbTN+4u6pWF
0thdSrry4707lImrVq1yPmph33331YABA/T000/rrbfekiTnSMevf/3rmjFjhgYMGKB99923JvsG
AAAAAADANhXSp5kDCEPuqVKzs5BrdZdq10FU24rmblDvv//+XOsvXrw47y46uP630itvxdpn91hX
f7Jve5l45W8GtDe55XKs1lJJpVKsUrmkltayvndeuar9SlKxWNTHP/5x3X777brhhht06aWXavTo
0R1Kx6985St6+eWXFUWRPvWpT6lYLHJDGAAAAAAAgJ7NN5rRnN9lZx5LtS8cTVnXawwZ+hn8pkNP
o7799ttDN5mpEMXae3Ss6ecM6DBysbW1pIIilRVL5VjlOG67hmNrrLhcfdkotd1R+rjjjtNrr72m
v/zlL7r00ks1adIkTZgwQZI0d+5cLViwQFEUafLkyZo6dWpVd88GAAAAAADAdsHXv/lGMNa8dKxV
4RgyFDP0Djl519lmvnneUEmdr8n4g8/Wp+ZqdVr16tWrdc4552j48OH6wx/+oBkzZuipp56S1HaD
mAEDBujkk0/WtGnTtG7dOtXVdWW/DAAAAAAAgG4mz+C/0HUyVdpA2TeRyXseeJyyXi5b+zRqk684
rFWhmKVYLKq5uVknnHCCjjvuOM2dO1cLFy6UJDU0NGjChAkqFotqampS7969t8oxAQAAAAAAoMuF
loe+EY5p/V3Vp1tnFY6uu1PLM8+1LO3gQy9umaqWBeL2pq6urn3UYq9evTRp0iQdeuihkqTW1la1
tLSoXC6rX79+XLsRAAAAAACg50jr38xrNYacXh1SPuaSVThWe0qzfQtuezo0DwezRCyVSiqVStvw
aAAAAAAAALAN2P2Zryj09Ww1798K2atk8rWoJt/p16F5AAAAAAAAAG1Cbsactn7e/i3X+rUoHF0t
qsk3ujHkWo8AAAAAAAAAOkrrz1z9m30Wcmg+ZH+ddOVti11vIHLMTz3g448/vsaHBQAAAAAAAPRY
rv5Nnte+crGqM5C7snB0Xb/RnO9a1sk3vvGNmh0QAAAAAAAAsL1LbhpsqLR/S8rFml7isFaFY9aB
+9bNHI7573//u6IDAgAAAAAAAHqotILRXh5yU+eqRzWaqi0cQ877tuUa4WjeiRkAAAAAAABAZhfn
6t/SbuqcJnc5V23h6Du40BvF+NrT9nkUjgAAAAAAAIDU2NioESNGJC99pVnW6MesvC336Meuuoaj
rzF1HWDqxSopHAEAAAAAALCja2xs1KxZs3TkkUcms3zXX0wrCO1TrbukeAstHGOF3cXGNy9t3Thl
vZjCEQAAAAAAADuypUuX6oUXXtDZZ5+tBQsWSI4OTZ3LRHO+eVp1Jf1dLqGFo2vopWueXSLa67o+
DNf89nkUjgAAAAAAANhRLV26VLNnz9ZZZ52lN954w1yUNooxllRWen9nT/vOTN7q13DMuuV2MjLS
blNDDpTCEQAAAAAAADusJUuW6MUXX9TZZ5+tN954w76Go4s9mrFsLCtrS1dXNtb3baditbyGo1ku
+kY0pt2h2jV0s0zhCAAAAAAAgB3N4sWL9dJLL+mcc87R/Pnz1djYqNmzZ+uDH/yg1LlHs4tGc74c
85NlIeVjbrUqHF3XeJTSC0Zz5GNZUsFYr/0DonAEAAAAAADAjmTJkiV66aWXdPbZZ2vevHlaunRp
+0jH+fPnm6vaxWNZYeWjT02KuEpvGlOWVDSWFax1XcxzvpNzyIvGMtc+uWkMAAAAAAAAdhhJ2XjO
Oed0KBuT15slxaLN7u/M0Ysh5aM94tF3P5ZUhYzlIeWhvZ7r4O3rN0bqeNq12b7mvdYjAAAAAAAA
sN1btGhRatm4dOnSZNW0Xq1srGMPAMwa+bhVRjjaO3eNRHTxnUNuLksb3tm+jBGOAAAAAAAA6Oka
Gxs1d+5cnX322Xr99dfV2NjYfhq1+XrzTWPsQXumSFLJscwsKe2BgSGCS7qsEY4hG+50oxfHfN+I
SHtUoz2ykbYRAAAAAAAAPZpZLs6bNy/19WZ2/+YrIF29m+Tu4dKUs1fZwnejlyhlOlJbUZk8F4z5
RWNewXqdTNcZr5PpXpvzvYz5RUnjb7vttv/J84YAAAAAAACAnuzCCy/8L0lz1TaSsdV4Lktq2fxc
2jwdb55O1omN5WXjUTKWuZ7tktI1Lan2haNZLJoFZNF4mK+TwrHOWqe9cHTkXGWmeSzJQ9Z0ZD3k
eDblGVLqQp48efLkyZMnT548efLkyZMnT37Hy7vO4LULO7PEK1sPc56rFEweduFoT5sPO2uXjCW5
j6miwjH0LtVpkg36vhzfEM3kgAueg4wl/XvzdpNi0iwazWLTLBqTotMsE81S1L5hjeu1ffxp7y3r
OpfkyZMnT548efLkyZMnT548efLkd5x8bC2z7/ps3rwlVseyzy76SupcPNrloLkt+5iUsk5yzPZy
ezu5FR3zIm35gFzTeR4F6znZll0QSp1HK5rzk3nmMdrTrnkJ+8NMnl0/BNeHynKWs5zlLGc5y1nO
cpaznOUsZznLWc5ylocsjz0PewShb71YW0Ye+rKugtI8Jdp1erQ5bR+nrGn7/eTia27zlIzJaEL7
NGpz2j6V2r6mo3lqtXmKtZ0pGPuzn12nVNtlp/mQ2j4w83VeSb5S5MmTJ0+ePHny5MmTJ0+ePHny
5HtW3i7oXAWfOcoxzynV5qnRyXRy7Ubz2XdKtf1caUFpF5UdVHtKte/DLmvL6MnktGl7OvmyfENA
y5uXm9PJc8HYlvksI5/sp6SOIyYja9r1ozHn+abN90qePHny5MmTJ0+ePHny5MmTJ0+evLlubCxL
ns1H2VjfHNFol392xp6WY765X9cx2NNpzPcSxP6g7PlRxsO+YYzvYY5WjNTxJjHJiMZIbXeptu9k
bY5yjKxn101rXPPM9yJjnvl+XT8mF9965MmTJ0+ePHny5MmTJ0+ePHny5MnH1nqx8TAH1ZnzzNGE
5jzzpi7Jsz1S0Tey0TUa0jVi0jXCMpa78LQfMp7b+T6gyHhOpl2nJtvFXiT3KdXJtH16tKtojNT5
lGr7rtSu7buuAZl2/LHxbBeQ9o/H9WMy875l5MmTJ0+ePHny5MmTJ0+ePHny5HesfGzNk9JPS06K
vZI1zz7V2ZznKhFbNq/baixrtebZ24nVsbx0HVfaw3yP7ewPyp4fWY9knqvYS0q7OuO1b5SjOWrR
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
b48wdJ1KnTzsgXmuQtGe75vOepj7cb2XYL4P07U8CniOPK+TefbNXgqOZfY6aXk5lvmO2zymrPdq
izPWSfthkidPnjx58uTJkydPnjx58uTJk99x8r5lST621o2N55DyMXY8sk6jTsvb8+z9u55T328l
p1SnfbjmF2N+iLKmY3W8WYy5zByVaD/Mc9ztdUrWMhnLTPYxyVon68djv0/XMvLkyZMnT548efLk
yZMnT548efI7Zj62niNjOmGPXLSfY8c6sWOZPV/Gcnsd17Q9L+39BKvmGo7JB2vu1P6gzbtRm+ua
08k65sN8o67y0d52sl6ybfMDjaz1XNP2j8R8b1k/PvLkyZMnT548efLkyZMnT548efLkXeub0+b6
Jlex6Jr23Vim5Jhvb8O1Tfs47WX2esGyCkfzAwv58M0Dsdf1faguZglp3p06mSfrOVLHazua+072
ad5Axr52Y5a8nwN58uTJkydPnjx58uTJkydPnjx58sl0wj5l2pw2z+yNrWWx9ZBn2vfw7dO1zMeV
d6p0hGPyoSUbj+T+IM110rZVsPKuazUmX4g9Xxmvk+eSsdz+gKKU11nIkydPnjx58uTJkydPnjx5
8uTJk0/L2uub5aKMZ981HO31Q6/HmLbM3I9v2pwXLOSDsdeJrGnX8sgzbc5zredbZj7bIxVDjsf1
2vyiI4X9UMx1KvmhkSdPnjx58uTJkydPnjx58uTJk+/ZefMygPa2ktexY5/mOq717WWy5icPe6Rk
2rbtaXnm+Y7XKesD8q0XOebb88xn3zzXa3ObBUfOt017eazO23O9F5+QHxB58uTJkydPnjx58uTJ
kydPnjx58iHruV77Sj1fMZi2zFcwZuWyjidX2ShVXzia02nFn28kYloRaba/Bc+6vmMwl/mKR9/7
sW0vP1zy5MmTJ0+ePHny5MmTJ0+ePHny2z6fVsi5lsXW/LTSz7VuLP9dr33ru7adNc/3upNaFo6+
6bRn37Rvnm87rlLRd8y+H1DoZ+HK5/lRkidPnjx58uTJkydPnjx58uTJk++5+Tgl71o3bdp8TrZp
z3Otl7bc9Rw67XrdSeiH7Fo3eYORtTyy1jGnfetEjmlfxlweq/Np165jtY/bzOf5DGzkyZMnT548
efLkyZMnT548efLkyWflQ5eHFoGxY76vTHTd/Tpkv+Z2I89yp2oKR3teWuHnKw3TysSCMe3adlbB
mFWQpvGtR548efLkyZMnT548efLkyZMnT558pfnYsV6csU7WvEqf0/bnWs83r5OQDy9rfXtelGN+
5Hidtm6e/fheAwAAAAAAANtSWulnvs5TRtrLsorL0P2kzXMqhq5oyCodXYWf64DSisGs5tVeFnte
J/PKjmXmvCxVfcjkyZMnT548efLkyZMnT548efLkd5h8bDxcnZTrIbm7KtfNYOx9hSy330fa+6r2
c6h49F+ekY6hy5Ji0h71mGdbsTqeip3F3lbsmJcHefLkyZMnT548efLkyZMnT548efLJeqH5rELQ
LiFdA/fMaV8RmWdZ2rxUtSwcXfPzvA6ZzrPtrPkAAAAAAADAtpBWRuZdL2S6ktdZ872qLeNCRjq6
5lVyWnZWPs/yvOsBAAAAAAAAeYQWdVnr5SkKQ0Yoho5izF00JmpRuOUZWVjpqMTQYjNtPgAAAAAA
ANAd5RldWOnIxDylYsVlo1TZTWNc0kq+SkdBZkn7QMxHnmy1+yZPnjx58uTJkydPnjx58uTJkydP
PitfTX+Vtd1K54UsC1KrwjGRt3j0zU/mxRnbDB1ymvUFVrp98uTJkydPnjx58uTJkydPnjyScZB0
AAAA5klEQVR58uRD1vH1U3kLQVvZMa9WZWVFuuL045BtVlJMhm4bAAAAAAAA6GkqLQtDC9GaKdRy
Y5uFjCZMW8dufOOMZeWU9UOPtxrkyZMnT548efLkyZMnT548efLkyVead/Vdrv4rbf20bYbst6a2
5ojBPPuq9LgYAQkAAAAAAIDtUaXFX55czctFl21Z0FW7b8pFAAAAAAAA9GTbemRmRbpjadcdjwkA
AAAAAADorrZJsejTE8q9nvAeAAAAAAAAgES3KhABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABQe/8/wd2O9819RZUAAAAASUVORK5CYII=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22850</attachid>
            <date>2008-08-18 07:51:12 -0700</date>
            <delta_ts>2008-08-18 08:10:09 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>patch23.txt</filename>
            <type>text/plain</type>
            <size>59912</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTgxNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDgtMDgtMTggIEtlaXNoaSBIYXR0b3JpICA8Y2FzZXkuaGF0dG9y
aUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkcyBjb25zb2xlLmRpcnhtbCBzdXBwb3J0IHRvIHRoZSBJbnNwZWN0b3IuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE1NgorCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ29uc29sZTo6ZGlyeG1sKToKKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29uc29sZTo6ZGlyeG1sKTogQWRkcyBhIE5vZGVNZXNzYWdlTGV2ZWwgQ29u
c29sZU1lc3NhZ2UuCisgICAgICAgICogcGFnZS9Db25zb2xlLmg6CisgICAgICAgIChXZWJDb3Jl
OjopOiBBZGRlZCBOb2RlTWVzc2FnZUxldmVsLgorICAgICAgICAqIHBhZ2UvQ29uc29sZS5pZGw6
IEFkZGVkIGNvbnNvbGUuZGlyeG1sLgorICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL0NvbnNvbGUu
anM6CisgICAgICAgICogcGFnZS9pbnNwZWN0b3IvRWxlbWVudHNQYW5lbC5qczogTW92ZWQgYSBn
ZW5lcmFsIG1ldGhvZHMgdG8gRWxlbWVudHNUcmVlT3V0bGluZS4gCisgICAgICAgICogcGFnZS9p
bnNwZWN0b3IvRWxlbWVudHNUcmVlT3V0bGluZS5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRWxlbWVudHNUcmVlT3V0bGluZSk6IEEgc3ViY2xhc3Mgb2YgVHJlZU91dGxpbmUgZm9y
IGRpc3BsYXlpbmcgYSBET00gbm9kZSB0cmVlLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1l
bnRzVHJlZUVsZW1lbnQpOiBBIHN1YmNsYXNzIG9mIFRyZWVFbGVtZW50IGZvciBFbGVtZW50c1Ry
ZWVPdXRsaW5lLgorICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL2luc3BlY3Rvci5jc3M6IEZpeGVk
IHRvIGJlIGFwcGxpZWQgdG8gYWxsIEVsZW1lbnRzVHJlZU91dGxpbmVzLgorCiAyMDA4LTA4LTE4
ICBEaXJrIFNjaHVsemUgIDx2YnM4NUBnbXguZGU+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBTZWlkZWwuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwCShy
ZXZpc2lvbiAzNTgxNykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsMTIgQEAgSlNWYWx1ZSogSlNDb25zb2xlOjpk
aXIoRXhlY1N0YXRlKiBleGVjLAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCitKU1Zh
bHVlKiBKU0NvbnNvbGU6OmRpcnhtbChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFy
Z3VtZW50cykKK3sKKyAgICBpbXBsKCktPmRpcnhtbChleGVjLCBhcmd1bWVudHMpOworICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworfQorCiBKU1ZhbHVlKiBKU0NvbnNvbGU6OmFzc2VydENvbmRp
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3VtZW50cykKIHsKICAgICBB
cmdMaXN0IG1lc3NhZ2VQYXJhbWV0ZXJzOwpJbmRleDogV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAkocmV2aXNpb24gMzU4MTcp
CisrKyBXZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw2ICsy
NDUsMjEgQEAgdm9pZCBDb25zb2xlOjpkaXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdAogICAgIHBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VT
b3VyY2UsIE9iamVjdE1lc3NhZ2VMZXZlbCwgZXhlYywgYXJncywgMCwgU3RyaW5nKCkpOwogfQog
Cit2b2lkIENvbnNvbGU6OmRpcnhtbChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFy
Z3MpCit7CisgICAgaWYgKGFyZ3MuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1l
LT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBwYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNl
LCBOb2RlTWVzc2FnZUxldmVsLCBleGVjLCBhcmdzLCAwLCBTdHJpbmcoKSk7Cit9CisKIHZvaWQg
Q29uc29sZTo6YXNzZXJ0Q29uZGl0aW9uKGJvb2wgY29uZGl0aW9uLCBFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgaWYgKGNvbmRpdGlvbikKSW5kZXg6IFdlYkNv
cmUvcGFnZS9Db25zb2xlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0NvbnNvbGUuaAko
cmV2aXNpb24gMzU4MTcpCisrKyBXZWJDb3JlL3BhZ2UvQ29uc29sZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MCw2ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV2FybmluZ01l
c3NhZ2VMZXZlbCwKICAgICAgICAgRXJyb3JNZXNzYWdlTGV2ZWwsCiAgICAgICAgIE9iamVjdE1l
c3NhZ2VMZXZlbCwKKyAgICAgICAgTm9kZU1lc3NhZ2VMZXZlbCwKICAgICAgICAgU3RhcnRHcm91
cE1lc3NhZ2VMZXZlbCwKICAgICAgICAgRW5kR3JvdXBNZXNzYWdlTGV2ZWwKICAgICB9OwpAQCAt
NzgsNiArNzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgbG9nKEtKUzo6
RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpBcmdMaXN0JiBhcmd1bWVudHMpOwogICAgICAgICB2b2lk
IHdhcm4oS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OkFyZ0xpc3QmIGFyZ3VtZW50cyk7CiAg
ICAgICAgIHZvaWQgZGlyKEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpBcmdMaXN0JiBhcmd1
bWVudHMpOworICAgICAgICB2b2lkIGRpcnhtbChLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6
QXJnTGlzdCYgYXJndW1lbnRzKTsKICAgICAgICAgdm9pZCBhc3NlcnRDb25kaXRpb24oYm9vbCBj
b25kaXRpb24sIEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpBcmdMaXN0JiBhcmd1bWVudHMp
OwogICAgICAgICB2b2lkIHByb2ZpbGUoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OkFyZ0xp
c3QmIGFyZ3VtZW50cyk7CiAgICAgICAgIHZvaWQgcHJvZmlsZUVuZChLSlM6OkV4ZWNTdGF0ZSos
IGNvbnN0IEtKUzo6QXJnTGlzdCYgYXJndW1lbnRzKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9Db25z
b2xlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ29uc29sZS5pZGwJKHJldmlzaW9u
IDM1ODE3KQorKysgV2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw2ICszNSw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBbQ3VzdG9tXSB2b2lkIGxvZygp
OwogICAgICAgICBbQ3VzdG9tXSB2b2lkIHdhcm4oKTsKICAgICAgICAgW0N1c3RvbV0gdm9pZCBk
aXIoKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBkaXJ4bWwoKTsKICAgICAgICAgW0N1c3RvbSwg
SW1wbGVtZW50YXRpb25GdW5jdGlvbj1hc3NlcnRDb25kaXRpb25dIHZvaWQgYXNzZXJ0KGluIGJv
b2xlYW4gY29uZGl0aW9uKTsKIAogICAgICAgICBbQ3VzdG9tXSB2b2lkIHByb2ZpbGUoaW4gRE9N
U3RyaW5nIHRpdGxlKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9pbnNwZWN0b3IvQ29uc29sZS5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL0NvbnNvbGUuanMJKHJldmlzaW9u
IDM1ODE3KQorKysgV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9Db25zb2xlLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0zNDcsNiArMzQ3LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGUucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZXM7IFwKICAgICAgICAgICAgICAgICB9
LCBcCiAgICAgICAgICAgICAgICAgZGlyOiBmdW5jdGlvbigpIHsgcmV0dXJuIGNvbnNvbGUuZGly
LmFwcGx5KGNvbnNvbGUsIGFyZ3VtZW50cykgfSwgXAorICAgICAgICAgICAgICAgIGRpcnhtbDog
ZnVuY3Rpb24oKSB7IHJldHVybiBjb25zb2xlLmRpcnhtbC5hcHBseShjb25zb2xlLCBhcmd1bWVu
dHMpIH0sIFwKICAgICAgICAgICAgICAgICBrZXlzOiBmdW5jdGlvbihvKSB7IHZhciBhID0gW107
IGZvciAoayBpbiBvKSBhLnB1c2goayk7IHJldHVybiBhOyB9LCBcCiAgICAgICAgICAgICAgICAg
dmFsdWVzOiBmdW5jdGlvbihvKSB7IHZhciBhID0gW107IGZvciAoayBpbiBvKSBhLnB1c2gob1tr
XSk7IHJldHVybiBhOyB9LCBcCiAgICAgICAgICAgICAgICAgcHJvZmlsZTogZnVuY3Rpb24oKSB7
IHJldHVybiBjb25zb2xlLnByb2ZpbGUuYXBwbHkoY29uc29sZSwgYXJndW1lbnRzKSB9LCBcCkBA
IC01MTksNiArNTIwLDEyIEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZSA9IGZ1bmN0aW9u
KHMKICAgICAgICAgdmFyIHByb3BlcnRpZXNTZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5PYmpl
Y3RQcm9wZXJ0aWVzU2VjdGlvbihhcmd1bWVudHNbNV0sIG51bGwsIG51bGwsIG51bGwsIHRydWUp
OwogICAgICAgICBwcm9wZXJ0aWVzU2VjdGlvbi5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoImNvbnNv
bGUtbWVzc2FnZSIpOwogICAgICAgICB0aGlzLnByb3BlcnRpZXNTZWN0aW9uID0gcHJvcGVydGll
c1NlY3Rpb247CisgICAgfSBlbHNlIGlmICh0aGlzLmxldmVsID09PSBXZWJJbnNwZWN0b3IuQ29u
c29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLk5vZGUpIHsKKyAgICAgICAgdmFyIG5vZGUgPSBhcmd1
bWVudHNbNV07CisgICAgICAgIGlmICghKG5vZGUgaW5zdGFuY2VvZiBJbnNwZWN0b3JDb250cm9s
bGVyLmluc3BlY3RlZFdpbmRvdygpLk5vZGUpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB0aGlzLmVsZW1lbnRzVHJlZU91dGxpbmUgPSBuZXcgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJl
ZU91dGxpbmUoKTsKKyAgICAgICAgdGhpcy5lbGVtZW50c1RyZWVPdXRsaW5lLnJvb3RET01Ob2Rl
ID0gbm9kZTsKICAgICB9CiAKICAgICBpZiAodXJsICYmIGxpbmUgPiAwICYmIHRoaXMuaXNFcnJv
ck9yV2FybmluZygpKSB7CkBAIC01OTEsNyArNTk4LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlLnByb3RvdHlwZSA9IAogCiAgICAgdG9NZXNzYWdlRWxlbWVudDogZnVuY3Rpb24oKQog
ICAgIHsKLSAgICAgICAgaWYgKHRoaXMubGV2ZWwgPT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVz
c2FnZS5NZXNzYWdlTGV2ZWwuT2JqZWN0KQorICAgICAgICBpZiAodGhpcy5wcm9wZXJ0aWVzU2Vj
dGlvbikKICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3BlcnRpZXNTZWN0aW9uLmVsZW1lbnQ7
CiAKICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
QEAgLTYzMyw2ICs2NDAsMTIgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlw
ZSA9IAogICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFzcygiY29uc29sZS1ncm91
cC10aXRsZS1sZXZlbCIpOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKHRoaXMuZWxlbWVudHNU
cmVlT3V0bGluZSkgeworICAgICAgICAgICAgZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJvdXRsaW5l
LWRpc2Nsb3N1cmUiKTsKKyAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVt
ZW50c1RyZWVPdXRsaW5lLmVsZW1lbnQpOworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Cisg
ICAgICAgIH0KKwogICAgICAgICB2YXIgbWVzc2FnZVRleHRFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICBtZXNzYWdlVGV4dEVsZW1lbnQuY2xhc3NOYW1l
ID0gImNvbnNvbGUtbWVzc2FnZS10ZXh0IjsKICAgICAgICAgbWVzc2FnZVRleHRFbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuZm9ybWF0dGVkTWVzc2FnZSk7CkBAIC03MjIsOCArNzM1LDkgQEAgV2Vi
SW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbAogICAgIFdhcm5pbmc6IDIsCiAg
ICAgRXJyb3I6IDMsCiAgICAgT2JqZWN0OiA0LAotICAgIFN0YXJ0R3JvdXA6IDUsCi0gICAgRW5k
R3JvdXA6IDYKKyAgICBOb2RlOiA1LAorICAgIFN0YXJ0R3JvdXA6IDYsCisgICAgRW5kR3JvdXA6
IDcKIH0KIAogV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kID0gZnVuY3Rpb24oY29tbWFuZCwg
cmVzdWx0LCBmb3JtYXR0ZWRSZXN1bHRFbGVtZW50LCBsZXZlbCkKSW5kZXg6IFdlYkNvcmUvcGFn
ZS9pbnNwZWN0b3IvRWxlbWVudHNQYW5lbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
aW5zcGVjdG9yL0VsZW1lbnRzUGFuZWwuanMJKHJldmlzaW9uIDM1ODE3KQorKysgV2ViQ29yZS9w
YWdlL2luc3BlY3Rvci9FbGVtZW50c1BhbmVsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2MyAr
MjYsNzAgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwg
PSBmdW5jdGlvbigpCi17Ci0gICAgV2ViSW5zcGVjdG9yLlBhbmVsLmNhbGwodGhpcyk7CisgV2Vi
SW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwgPSBmdW5jdGlvbigpCisgeworICAgICBXZWJJbnNwZWN0
b3IuUGFuZWwuY2FsbCh0aGlzKTsKKyAgICAgCisgICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNs
YXNzKCJlbGVtZW50cyIpOworICAgICAKKyAgICAgdGhpcy5jb250ZW50RWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmlkID0g
ImVsZW1lbnRzLWNvbnRlbnQiOworICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmNsYXNzTmFtZSA9
ICJvdXRsaW5lLWRpc2Nsb3N1cmUiOworICAgICAKKyAgICAgdGhpcy50cmVlT3V0bGluZSA9IG5l
dyBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlT3V0bGluZTsKKyAgICAgdGhpcy50cmVlT3V0bGlu
ZS5wYW5lbCA9IHRoaXM7CisgICAgIHRoaXMudHJlZU91dGxpbmUuaW5jbHVkZVJvb3RET01Ob2Rl
ID0gZmFsc2U7CisgICAgIHRoaXMudHJlZU91dGxpbmUub25Gb2N1c2VkTm9kZUNoYW5nZWQgPSBm
dW5jdGlvbihmb3JjZVVwZGF0ZSkgeworICAgICAgICAgdGhpcy5wYW5lbC51cGRhdGVCcmVhZGNy
dW1iKGZvcmNlVXBkYXRlKTsKKworICAgICAgICAgZm9yICh2YXIgcGFuZSBpbiB0aGlzLnBhbmVs
LnNpZGViYXJQYW5lcykKKyAgICAgICAgICAgIHRoaXMucGFuZWwuc2lkZWJhclBhbmVzW3BhbmVd
Lm5lZWRzVXBkYXRlID0gdHJ1ZTsKKworICAgICAgICAgdGhpcy5wYW5lbC51cGRhdGVTdHlsZXMo
dHJ1ZSk7CisgICAgICAgICB0aGlzLnBhbmVsLnVwZGF0ZU1ldHJpY3MoKTsKKyAgICAgICAgIHRo
aXMucGFuZWwudXBkYXRlUHJvcGVydGllcygpOworICAgICB9OworICAgICB0aGlzLnRyZWVPdXRs
aW5lLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5fb25tb3VzZW1v
dmUuYmluZCh0aGlzKSwgZmFsc2UpOworICAgICB0aGlzLnRyZWVPdXRsaW5lLmVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCB0aGlzLl9vbm1vdXNlb3V0LmJpbmQodGhpcyksIGZh
bHNlKTsKKyAgICAgCisgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy50
cmVlT3V0bGluZS5lbGVtZW50KTsKKyAgICAgCisgICAgIHRoaXMuY3J1bWJzRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICB0aGlzLmNydW1ic0VsZW1lbnQuY2xh
c3NOYW1lID0gImNydW1icyI7CisgICAgIAorICAgICB0aGlzLnNpZGViYXJQYW5lcyA9IHt9Owor
ICAgICB0aGlzLnNpZGViYXJQYW5lcy5zdHlsZXMgPSBuZXcgV2ViSW5zcGVjdG9yLlN0eWxlc1Np
ZGViYXJQYW5lKCk7CisgICAgIHRoaXMuc2lkZWJhclBhbmVzLm1ldHJpY3MgPSBuZXcgV2ViSW5z
cGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZSgpOworICAgICB0aGlzLnNpZGViYXJQYW5lcy5wcm9w
ZXJ0aWVzID0gbmV3IFdlYkluc3BlY3Rvci5Qcm9wZXJ0aWVzU2lkZWJhclBhbmUoKTsKKyAgICAg
CisgICAgIHRoaXMuc2lkZWJhclBhbmVzLnN0eWxlcy5vbmV4cGFuZCA9IHRoaXMudXBkYXRlU3R5
bGVzLmJpbmQodGhpcyk7CisgICAgIHRoaXMuc2lkZWJhclBhbmVzLm1ldHJpY3Mub25leHBhbmQg
PSB0aGlzLnVwZGF0ZU1ldHJpY3MuYmluZCh0aGlzKTsKKyAgICAgdGhpcy5zaWRlYmFyUGFuZXMu
cHJvcGVydGllcy5vbmV4cGFuZCA9IHRoaXMudXBkYXRlUHJvcGVydGllcy5iaW5kKHRoaXMpOwor
CisgICAgIHRoaXMuc2lkZWJhclBhbmVzLnN0eWxlcy5leHBhbmRlZCA9IHRydWU7CisKKyAgICAg
dGhpcy5zaWRlYmFyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAg
ICB0aGlzLnNpZGViYXJFbGVtZW50LmlkID0gImVsZW1lbnRzLXNpZGViYXIiOworCisgICAgIHRo
aXMuc2lkZWJhckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5zaWRlYmFyUGFuZXMuc3R5bGVzLmVs
ZW1lbnQpOworICAgICB0aGlzLnNpZGViYXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuc2lkZWJh
clBhbmVzLm1ldHJpY3MuZWxlbWVudCk7CisgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5zaWRlYmFyUGFuZXMucHJvcGVydGllcy5lbGVtZW50KTsKKworICAgICB0aGlz
LnNpZGViYXJSZXNpemVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Cisg
ICAgIHRoaXMuc2lkZWJhclJlc2l6ZUVsZW1lbnQuY2xhc3NOYW1lID0gInNpZGViYXItcmVzaXpl
ci12ZXJ0aWNhbCI7CisgICAgIHRoaXMuc2lkZWJhclJlc2l6ZUVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2Vkb3duIiwgdGhpcy5yaWdodFNpZGViYXJSZXNpemVyRHJhZ1N0YXJ0LmJpbmQo
dGhpcyksIGZhbHNlKTsKKworICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5jb250
ZW50RWxlbWVudCk7CisgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnNpZGViYXJF
bGVtZW50KTsKKyAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuc2lkZWJhclJlc2l6
ZUVsZW1lbnQpOworCisgICAgIHRoaXMuX211dGF0aW9uTW9uaXRvcmVkV2luZG93cyA9IFtdOwor
ICAgICB0aGlzLl9ub2RlSW5zZXJ0ZWRFdmVudExpc3RlbmVyID0gSW5zcGVjdG9yQ29udHJvbGxl
ci53cmFwQ2FsbGJhY2sodGhpcy5fbm9kZUluc2VydGVkLmJpbmQodGhpcykpOworICAgICB0aGlz
Ll9ub2RlUmVtb3ZlZEV2ZW50TGlzdGVuZXIgPSBJbnNwZWN0b3JDb250cm9sbGVyLndyYXBDYWxs
YmFjayh0aGlzLl9ub2RlUmVtb3ZlZC5iaW5kKHRoaXMpKTsKKyAgICAgdGhpcy5fY29udGVudExv
YWRlZEV2ZW50TGlzdGVuZXIgPSBJbnNwZWN0b3JDb250cm9sbGVyLndyYXBDYWxsYmFjayh0aGlz
Ll9jb250ZW50TG9hZGVkLmJpbmQodGhpcykpOwogCi0gICAgdGhpcy5lbGVtZW50LmFkZFN0eWxl
Q2xhc3MoImVsZW1lbnRzIik7Ci0KLSAgICB0aGlzLmNvbnRlbnRFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5jb250ZW50RWxlbWVudC5pZCA9ICJlbGVt
ZW50cy1jb250ZW50IjsKLSAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmNsYXNzTmFtZSA9ICJvdXRs
aW5lLWRpc2Nsb3N1cmUiOwotCi0gICAgdGhpcy50cmVlTGlzdEVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJvbCIpOwotICAgIHRoaXMudHJlZUxpc3RFbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX29ubW91c2Vkb3duLmJpbmQodGhpcyksIGZhbHNlKTsK
LSAgICB0aGlzLnRyZWVMaXN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsIHRo
aXMuX29uZGJsY2xpY2suYmluZCh0aGlzKSwgZmFsc2UpOwotICAgIHRoaXMudHJlZUxpc3RFbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX29ubW91c2Vtb3ZlLmJpbmQo
dGhpcyksIGZhbHNlKTsKLSAgICB0aGlzLnRyZWVMaXN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJtb3VzZW91dCIsIHRoaXMuX29ubW91c2VvdXQuYmluZCh0aGlzKSwgZmFsc2UpOwotCi0gICAg
dGhpcy50cmVlT3V0bGluZSA9IG5ldyBUcmVlT3V0bGluZSh0aGlzLnRyZWVMaXN0RWxlbWVudCk7
Ci0gICAgdGhpcy50cmVlT3V0bGluZS5wYW5lbCA9IHRoaXM7Ci0KLSAgICB0aGlzLmNvbnRlbnRF
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMudHJlZUxpc3RFbGVtZW50KTsKLQotICAgIHRoaXMuY3J1
bWJzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuY3J1
bWJzRWxlbWVudC5jbGFzc05hbWUgPSAiY3J1bWJzIjsKLQotICAgIHRoaXMuc2lkZWJhclBhbmVz
ID0ge307Ci0gICAgdGhpcy5zaWRlYmFyUGFuZXMuc3R5bGVzID0gbmV3IFdlYkluc3BlY3Rvci5T
dHlsZXNTaWRlYmFyUGFuZSgpOwotICAgIHRoaXMuc2lkZWJhclBhbmVzLm1ldHJpY3MgPSBuZXcg
V2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZSgpOwotICAgIHRoaXMuc2lkZWJhclBhbmVz
LnByb3BlcnRpZXMgPSBuZXcgV2ViSW5zcGVjdG9yLlByb3BlcnRpZXNTaWRlYmFyUGFuZSgpOwot
Ci0gICAgdGhpcy5zaWRlYmFyUGFuZXMuc3R5bGVzLm9uZXhwYW5kID0gdGhpcy51cGRhdGVTdHls
ZXMuYmluZCh0aGlzKTsKLSAgICB0aGlzLnNpZGViYXJQYW5lcy5tZXRyaWNzLm9uZXhwYW5kID0g
dGhpcy51cGRhdGVNZXRyaWNzLmJpbmQodGhpcyk7Ci0gICAgdGhpcy5zaWRlYmFyUGFuZXMucHJv
cGVydGllcy5vbmV4cGFuZCA9IHRoaXMudXBkYXRlUHJvcGVydGllcy5iaW5kKHRoaXMpOwotCi0g
ICAgdGhpcy5zaWRlYmFyUGFuZXMuc3R5bGVzLmV4cGFuZGVkID0gdHJ1ZTsKLQotICAgIHRoaXMu
c2lkZWJhckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlz
LnNpZGViYXJFbGVtZW50LmlkID0gImVsZW1lbnRzLXNpZGViYXIiOwotCi0gICAgdGhpcy5zaWRl
YmFyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnNpZGViYXJQYW5lcy5zdHlsZXMuZWxlbWVudCk7
Ci0gICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnNpZGViYXJQYW5lcy5t
ZXRyaWNzLmVsZW1lbnQpOwotICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5zaWRlYmFyUGFuZXMucHJvcGVydGllcy5lbGVtZW50KTsKLQotICAgIHRoaXMuc2lkZWJhclJl
c2l6ZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLnNp
ZGViYXJSZXNpemVFbGVtZW50LmNsYXNzTmFtZSA9ICJzaWRlYmFyLXJlc2l6ZXItdmVydGljYWwi
OwotICAgIHRoaXMuc2lkZWJhclJlc2l6ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vk
b3duIiwgdGhpcy5yaWdodFNpZGViYXJSZXNpemVyRHJhZ1N0YXJ0LmJpbmQodGhpcyksIGZhbHNl
KTsKLQotICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNvbnRlbnRFbGVtZW50KTsK
LSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5zaWRlYmFyRWxlbWVudCk7Ci0gICAg
dGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuc2lkZWJhclJlc2l6ZUVsZW1lbnQpOwotCi0g
ICAgdGhpcy5fbXV0YXRpb25Nb25pdG9yZWRXaW5kb3dzID0gW107Ci0gICAgdGhpcy5fbm9kZUlu
c2VydGVkRXZlbnRMaXN0ZW5lciA9IEluc3BlY3RvckNvbnRyb2xsZXIud3JhcENhbGxiYWNrKHRo
aXMuX25vZGVJbnNlcnRlZC5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLl9ub2RlUmVtb3ZlZEV2ZW50
TGlzdGVuZXIgPSBJbnNwZWN0b3JDb250cm9sbGVyLndyYXBDYWxsYmFjayh0aGlzLl9ub2RlUmVt
b3ZlZC5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLl9jb250ZW50TG9hZGVkRXZlbnRMaXN0ZW5lciA9
IEluc3BlY3RvckNvbnRyb2xsZXIud3JhcENhbGxiYWNrKHRoaXMuX2NvbnRlbnRMb2FkZWQuYmlu
ZCh0aGlzKSk7Ci0KLSAgICB0aGlzLnJlc2V0KCk7Ci19CisgICAgIHRoaXMucmVzZXQoKTsKKyB9
CiAKIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICB0b29sYmFy
SXRlbUNsYXNzOiAiZWxlbWVudHMiLApAQCAtMTA3LDcgKzExNCw3IEBAIFdlYkluc3BlY3Rvci5F
bGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlBhbmVsLnBy
b3RvdHlwZS5zaG93LmNhbGwodGhpcyk7CiAgICAgICAgIHRoaXMuc2lkZWJhclJlc2l6ZUVsZW1l
bnQuc3R5bGUucmlnaHQgPSAodGhpcy5zaWRlYmFyRWxlbWVudC5vZmZzZXRXaWR0aCAtIDMpICsg
InB4IjsKICAgICAgICAgdGhpcy51cGRhdGVCcmVhZGNydW1iKCk7Ci0gICAgICAgIHRoaXMudXBk
YXRlVHJlZVNlbGVjdGlvbigpOworICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnVwZGF0ZVRyZWVT
ZWxlY3Rpb24oKTsKICAgICAgICAgaWYgKHRoaXMucmVjZW50bHlNb2RpZmllZE5vZGVzLmxlbmd0
aCkKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU1vZGlmaWVkTm9kZXMoKTsKICAgICB9LApAQCAt
MTE2LDIzICsxMjMsMTkgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0g
ewogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZS5oaWRlLmNhbGwo
dGhpcyk7CiAgICAgICAgIHRoaXMuYWx0S2V5RG93biA9IGZhbHNlOwotICAgICAgICB0aGlzLmhv
dmVyZWRET01Ob2RlID0gbnVsbDsKKyAgICAgICAgdGhpcy50cmVlT3V0bGluZS5ob3ZlcmVkRE9N
Tm9kZSA9IG51bGw7CiAgICAgICAgIHRoaXMuZm9yY2VIb3ZlckhpZ2hsaWdodCA9IGZhbHNlOwog
ICAgIH0sCiAKICAgICByZXNpemU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMudXBk
YXRlVHJlZVNlbGVjdGlvbigpOworICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnVwZGF0ZVRyZWVT
ZWxlY3Rpb24oKTsKICAgICAgICAgdGhpcy51cGRhdGVCcmVhZGNydW1iU2l6ZXMoKTsKICAgICB9
LAogCiAgICAgcmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMucm9vdERPTU5v
ZGUgPSBudWxsOwotICAgICAgICB0aGlzLmZvY3VzZWRET01Ob2RlID0gbnVsbDsKLQogICAgICAg
ICB0aGlzLmFsdEtleURvd24gPSBmYWxzZTsKLSAgICAgICAgdGhpcy5ob3ZlcmVkRE9NTm9kZSA9
IG51bGw7CiAgICAgICAgIHRoaXMuZm9yY2VIb3ZlckhpZ2hsaWdodCA9IGZhbHNlOwogCiAgICAg
ICAgIHRoaXMucmVjZW50bHlNb2RpZmllZE5vZGVzID0gW107CkBAIC0xNjMsMTEgKzE2NiwxMSBA
QCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
cmVnaXN0ZXJNdXRhdGlvbkV2ZW50TGlzdGVuZXJzKGluc3BlY3RlZFdpbmRvdyk7CiAKICAgICAg
ICAgdmFyIGluc3BlY3RlZFJvb3REb2N1bWVudCA9IGluc3BlY3RlZFdpbmRvdy5kb2N1bWVudDsK
LSAgICAgICAgdGhpcy5yb290RE9NTm9kZSA9IGluc3BlY3RlZFJvb3REb2N1bWVudDsKKyAgICAg
ICAgdGhpcy50cmVlT3V0bGluZS5yb290RE9NTm9kZSA9IGluc3BlY3RlZFJvb3REb2N1bWVudDsK
IAogICAgICAgICB2YXIgY2FuaWRhdGVGb2N1c05vZGUgPSBpbnNwZWN0ZWRSb290RG9jdW1lbnQu
Ym9keSB8fCBpbnNwZWN0ZWRSb290RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwogICAgICAgICBp
ZiAoY2FuaWRhdGVGb2N1c05vZGUpIHsKLSAgICAgICAgICAgIHRoaXMuZm9jdXNlZERPTU5vZGUg
PSBjYW5pZGF0ZUZvY3VzTm9kZTsKKyAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuZm9jdXNl
ZERPTU5vZGUgPSBjYW5pZGF0ZUZvY3VzTm9kZTsKICAgICAgICAgICAgIGlmICh0aGlzLnRyZWVP
dXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQpCiAgICAgICAgICAgICAgICAgdGhpcy50cmVlT3V0
bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50LmV4cGFuZCgpOwogICAgICAgICB9CkBAIC0yMjYsNzEg
KzIyOSw2IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdGhpcy5fbXV0YXRpb25Nb25pdG9yZWRXaW5kb3dzID0gW107CiAgICAgfSwKIAotICAgIHVw
ZGF0ZVRyZWVTZWxlY3Rpb246IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy50
cmVlT3V0bGluZSB8fCAhdGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50KQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMudHJlZU91dGxpbmUu
c2VsZWN0ZWRUcmVlRWxlbWVudDsKLSAgICAgICAgZWxlbWVudC51cGRhdGVTZWxlY3Rpb24oKTsK
LSAgICB9LAotCi0gICAgZ2V0IHJvb3RET01Ob2RlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzLl9yb290RE9NTm9kZTsKLSAgICB9LAotCi0gICAgc2V0IHJvb3RET01Ob2RlKHgpCi0gICAg
ewotICAgICAgICBpZiAob2JqZWN0c0FyZVNhbWUodGhpcy5fcm9vdERPTU5vZGUsIHgpKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX3Jvb3RET01Ob2RlID0geDsKLQotICAg
ICAgICB0aGlzLnVwZGF0ZUJyZWFkY3J1bWIoKTsKLSAgICAgICAgdGhpcy51cGRhdGVUcmVlT3V0
bGluZSgpOwotICAgIH0sCi0KLSAgICBnZXQgZm9jdXNlZERPTU5vZGUoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX2ZvY3VzZWRET01Ob2RlOwotICAgIH0sCi0KLSAgICBzZXQgZm9jdXNl
ZERPTU5vZGUoeCkKLSAgICB7Ci0gICAgICAgIGlmIChvYmplY3RzQXJlU2FtZSh0aGlzLl9mb2N1
c2VkRE9NTm9kZSwgeCkpIHsKLSAgICAgICAgICAgIHZhciBub2RlSXRlbSA9IHRoaXMucmV2ZWFs
Tm9kZSh4KTsKLSAgICAgICAgICAgIGlmIChub2RlSXRlbSkKLSAgICAgICAgICAgICAgICBub2Rl
SXRlbS5zZWxlY3QoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IHRoaXMuX2ZvY3VzZWRET01Ob2RlID0geDsKLQotICAgICAgICB0aGlzLl9mb2N1c2VkTm9kZUNo
YW5nZWQoKTsKLQotICAgICAgICB2YXIgbm9kZUl0ZW0gPSB0aGlzLnJldmVhbE5vZGUoeCk7Ci0g
ICAgICAgIGlmIChub2RlSXRlbSkKLSAgICAgICAgICAgIG5vZGVJdGVtLnNlbGVjdCgpOwotICAg
IH0sCi0KLSAgICBnZXQgaG92ZXJlZERPTU5vZGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuX2hvdmVyZWRET01Ob2RlOwotICAgIH0sCi0KLSAgICBzZXQgaG92ZXJlZERPTU5vZGUoeCkK
LSAgICB7Ci0gICAgICAgIGlmIChvYmplY3RzQXJlU2FtZSh0aGlzLl9ob3ZlcmVkRE9NTm9kZSwg
eCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5faG92ZXJlZERPTU5vZGUg
PSB4OwotCi0gICAgICAgIGlmICh0aGlzLl9ob3ZlcmVkRE9NTm9kZSkKLSAgICAgICAgICAgIHRo
aXMuX3VwZGF0ZUhvdmVySGlnaGxpZ2h0U29vbigpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB0aGlzLl91cGRhdGVIb3ZlckhpZ2hsaWdodCgpOwotICAgIH0sCi0KICAgICBnZXQgZm9yY2VI
b3ZlckhpZ2hsaWdodCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZm9yY2VIb3Zlckhp
Z2hsaWdodDsKQEAgLTMwNCw5ICsyNDIsOSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2ZvcmNlSG92ZXJIaWdobGlnaHQgPSB4OwogCiAg
ICAgICAgIGlmICh0aGlzLl9mb3JjZUhvdmVySGlnaGxpZ2h0KQotICAgICAgICAgICAgdGhpcy5f
dXBkYXRlSG92ZXJIaWdobGlnaHRTb29uKCk7CisgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5l
Ll91cGRhdGVIb3ZlckhpZ2hsaWdodFNvb24oKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
dGhpcy5fdXBkYXRlSG92ZXJIaWdobGlnaHQoKTsKKyAgICAgICAgICAgIHRoaXMudHJlZU91dGxp
bmUuX3VwZGF0ZUhvdmVySGlnaGxpZ2h0KCk7CiAgICAgfSwKIAogICAgIGdldCBhbHRLZXlEb3du
KCkKQEAgLTMyMiw5ICsyNjAsOSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuX2FsdEtleURvd24gPSB4OwogCiAgICAgICAgIGlmICh0aGlz
Ll9hbHRLZXlEb3duKQotICAgICAgICAgICAgdGhpcy5fdXBkYXRlSG92ZXJIaWdobGlnaHRTb29u
KCk7CisgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLl91cGRhdGVIb3ZlckhpZ2hsaWdodFNv
b24oKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5fdXBkYXRlSG92ZXJIaWdobGln
aHQoKTsKKyAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuX3VwZGF0ZUhvdmVySGlnaGxpZ2h0
KCk7CiAgICAgfSwKIAogICAgIF9jb250ZW50TG9hZGVkOiBmdW5jdGlvbihldmVudCkKQEAgLTM3
OCw3ICszMTYsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICAgICAgdXBkYXRlZFBhcmVudFRyZWVFbGVtZW50cy5wdXNoKHBhcmVudE5vZGVJ
dGVtKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCF1cGRhdGVCcmVhZGNydW1i
cyAmJiAob2JqZWN0c0FyZVNhbWUodGhpcy5mb2N1c2VkRE9NTm9kZSwgcGFyZW50KSB8fCB0aGlz
Ll9pc0FuY2VzdG9ySW5jbHVkaW5nUGFyZW50RnJhbWVzKHRoaXMuZm9jdXNlZERPTU5vZGUsIHBh
cmVudCkpKQorICAgICAgICAgICAgaWYgKCF1cGRhdGVCcmVhZGNydW1icyAmJiAob2JqZWN0c0Fy
ZVNhbWUodGhpcy5mb2N1c2VkRE9NTm9kZSwgcGFyZW50KSB8fCB0aGlzLnRyZWVPdXRsaW5lLl9p
c0FuY2VzdG9ySW5jbHVkaW5nUGFyZW50RnJhbWVzKHRoaXMuZm9jdXNlZERPTU5vZGUsIHBhcmVu
dCkpKQogICAgICAgICAgICAgICAgIHVwZGF0ZUJyZWFkY3J1bWJzID0gdHJ1ZTsKICAgICAgICAg
fQogCkBAIC0zOTEsNjUgKzMyOSw2IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMudXBkYXRlQnJlYWRjcnVtYih0cnVlKTsKICAgICB9
LAogCi0gICAgX3VwZGF0ZUhvdmVySGlnaGxpZ2h0U29vbjogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgaWYgKCJfdXBkYXRlSG92ZXJIaWdobGlnaHRUaW1lb3V0IiBpbiB0aGlzKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLl91cGRhdGVIb3ZlckhpZ2hsaWdodFRpbWVvdXQg
PSBzZXRUaW1lb3V0KHRoaXMuX3VwZGF0ZUhvdmVySGlnaGxpZ2h0LmJpbmQodGhpcyksIDApOwot
ICAgIH0sCi0KLSAgICBfdXBkYXRlSG92ZXJIaWdobGlnaHQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIGlmICgiX3VwZGF0ZUhvdmVySGlnaGxpZ2h0VGltZW91dCIgaW4gdGhpcykgewotICAg
ICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZUhvdmVySGlnaGxpZ2h0VGltZW91dCk7
Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fdXBkYXRlSG92ZXJIaWdobGlnaHRUaW1lb3V0Owot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRoaXMuX2hvdmVyZWRET01Ob2RlICYmIHRoaXMudmlz
aWJsZSAmJiAodGhpcy5fYWx0S2V5RG93biB8fCB0aGlzLmZvcmNlSG92ZXJIaWdobGlnaHQpKQot
ICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5oaWdobGlnaHRET01Ob2RlKHRoaXMuX2hv
dmVyZWRET01Ob2RlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJv
bGxlci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwotICAgIH0sCi0KLSAgICBfZm9jdXNlZE5vZGVD
aGFuZ2VkOiBmdW5jdGlvbihmb3JjZVVwZGF0ZSkKLSAgICB7Ci0gICAgICAgIHRoaXMudXBkYXRl
QnJlYWRjcnVtYihmb3JjZVVwZGF0ZSk7Ci0KLSAgICAgICAgZm9yICh2YXIgcGFuZSBpbiB0aGlz
LnNpZGViYXJQYW5lcykKLSAgICAgICAgICAgIHRoaXMuc2lkZWJhclBhbmVzW3BhbmVdLm5lZWRz
VXBkYXRlID0gdHJ1ZTsKLQotICAgICAgICB0aGlzLnVwZGF0ZVN0eWxlcyh0cnVlKTsKLSAgICAg
ICAgdGhpcy51cGRhdGVNZXRyaWNzKCk7Ci0gICAgICAgIHRoaXMudXBkYXRlUHJvcGVydGllcygp
OwotICAgIH0sCi0KLSAgICByZXZlYWxOb2RlOiBmdW5jdGlvbihub2RlKQotICAgIHsKLSAgICAg
ICAgdmFyIG5vZGVJdGVtID0gdGhpcy50cmVlT3V0bGluZS5maW5kVHJlZUVsZW1lbnQobm9kZSwg
dGhpcy5faXNBbmNlc3RvckluY2x1ZGluZ1BhcmVudEZyYW1lcy5iaW5kKHRoaXMpLCB0aGlzLl9w
YXJlbnROb2RlT3JGcmFtZUVsZW1lbnQuYmluZCh0aGlzKSwgb2JqZWN0c0FyZVNhbWUpOwotICAg
ICAgICBpZiAoIW5vZGVJdGVtKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG5vZGVJ
dGVtLnJldmVhbCgpOwotICAgICAgICByZXR1cm4gbm9kZUl0ZW07Ci0gICAgfSwKLQotICAgIHVw
ZGF0ZVRyZWVPdXRsaW5lOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLnRyZWVPdXRs
aW5lLnJlbW92ZUNoaWxkcmVuUmVjdXJzaXZlKCk7Ci0KLSAgICAgICAgaWYgKCF0aGlzLnJvb3RE
T01Ob2RlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIC8vIEZJWE1FOiB0aGlzIGNv
dWxkIHVzZSBmaW5kVHJlZUVsZW1lbnQgdG8gcmV1c2UgYSB0cmVlIGVsZW1lbnQgaWYgaXQgYWxy
ZWFkeSBleGlzdHMKLSAgICAgICAgdmFyIG5vZGUgPSAoUHJlZmVyZW5jZXMuaWdub3JlV2hpdGVz
cGFjZSA/IGZpcnN0Q2hpbGRTa2lwcGluZ1doaXRlc3BhY2UuY2FsbCh0aGlzLnJvb3RET01Ob2Rl
KSA6IHRoaXMucm9vdERPTU5vZGUuZmlyc3RDaGlsZCk7Ci0gICAgICAgIHdoaWxlIChub2RlKSB7
Ci0gICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0
b3IuRE9NTm9kZVRyZWVFbGVtZW50KG5vZGUpKTsKLSAgICAgICAgICAgIG5vZGUgPSBQcmVmZXJl
bmNlcy5pZ25vcmVXaGl0ZXNwYWNlID8gbmV4dFNpYmxpbmdTa2lwcGluZ1doaXRlc3BhY2UuY2Fs
bChub2RlKSA6IG5vZGUubmV4dFNpYmxpbmc7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLnVw
ZGF0ZVRyZWVTZWxlY3Rpb24oKTsKLSAgICB9LAotCiAgICAgdXBkYXRlQnJlYWRjcnVtYjogZnVu
Y3Rpb24oZm9yY2VVcGRhdGUpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkKQEAg
LTQ2MSw3ICszNDAsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHZhciBmb3VuZFJvb3QgPSBmYWxzZTsKICAgICAgICAgdmFyIGNydW1iID0gY3J1
bWJzLmZpcnN0Q2hpbGQ7CiAgICAgICAgIHdoaWxlIChjcnVtYikgewotICAgICAgICAgICAgaWYg
KG9iamVjdHNBcmVTYW1lKGNydW1iLnJlcHJlc2VudGVkT2JqZWN0LCB0aGlzLnJvb3RET01Ob2Rl
KSkKKyAgICAgICAgICAgIGlmIChvYmplY3RzQXJlU2FtZShjcnVtYi5yZXByZXNlbnRlZE9iamVj
dCwgdGhpcy50cmVlT3V0bGluZS5yb290RE9NTm9kZSkpCiAgICAgICAgICAgICAgICAgZm91bmRS
b290ID0gdHJ1ZTsKIAogICAgICAgICAgICAgaWYgKGZvdW5kUm9vdCkKQEAgLTQ2OSw3ICszNDgs
NyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgY3J1bWIucmVtb3ZlU3R5bGVDbGFzcygiZGltbWVkIik7
CiAKLSAgICAgICAgICAgIGlmIChvYmplY3RzQXJlU2FtZShjcnVtYi5yZXByZXNlbnRlZE9iamVj
dCwgdGhpcy5mb2N1c2VkRE9NTm9kZSkpIHsKKyAgICAgICAgICAgIGlmIChvYmplY3RzQXJlU2Ft
ZShjcnVtYi5yZXByZXNlbnRlZE9iamVjdCwgdGhpcy50cmVlT3V0bGluZS5mb2N1c2VkRE9NTm9k
ZSkpIHsKICAgICAgICAgICAgICAgICBjcnVtYi5hZGRTdHlsZUNsYXNzKCJzZWxlY3RlZCIpOwog
ICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAg
LTUxMiw4ICszOTEsOCBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICAgICAgLy8gQ2xpY2tpbmcgYSBkaW1tZWQgY3J1bWIgb3IgZG91YmxlIGNs
aWNraW5nIChldmVudC5kZXRhaWwgPj0gMikKICAgICAgICAgICAgICAgICAvLyB3aWxsIGNoYW5n
ZSB0aGUgcm9vdCBub2RlIGluIGFkZGl0aW9uIHRvIHRoZSBmb2N1c2VkIG5vZGUuCiAgICAgICAg
ICAgICAgICAgaWYgKGV2ZW50LmRldGFpbCA+PSAyIHx8IGNydW1iLmhhc1N0eWxlQ2xhc3MoImRp
bW1lZCIpKQotICAgICAgICAgICAgICAgICAgICBwYW5lbC5yb290RE9NTm9kZSA9IGNydW1iLnJl
cHJlc2VudGVkT2JqZWN0LnBhcmVudE5vZGU7Ci0gICAgICAgICAgICAgICAgcGFuZWwuZm9jdXNl
ZERPTU5vZGUgPSBjcnVtYi5yZXByZXNlbnRlZE9iamVjdDsKKyAgICAgICAgICAgICAgICAgICAg
cGFuZWwudHJlZU91dGxpbmUucm9vdERPTU5vZGUgPSBjcnVtYi5yZXByZXNlbnRlZE9iamVjdC5w
YXJlbnROb2RlOworICAgICAgICAgICAgICAgIHBhbmVsLnRyZWVPdXRsaW5lLmZvY3VzZWRET01O
b2RlID0gY3J1bWIucmVwcmVzZW50ZWRPYmplY3Q7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5jdXJyZW50Rm9jdXNFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoIm1haW4tcGFuZWxzIik7CkBAIC01MjUsNyArNDA0LDcgQEAgV2ViSW5zcGVjdG9yLkVs
ZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgcGFuZWwubW91c2VPdmVyQ3J1
bWIgPSB0cnVlOwogCiAgICAgICAgICAgICBwYW5lbC5hbHRLZXlEb3duID0gZXZlbnQuYWx0S2V5
OwotICAgICAgICAgICAgcGFuZWwuaG92ZXJlZERPTU5vZGUgPSB0aGlzLnJlcHJlc2VudGVkT2Jq
ZWN0OworICAgICAgICAgICAgcGFuZWwudHJlZU91dGxpbmUuaG92ZXJlZERPTU5vZGUgPSB0aGlz
LnJlcHJlc2VudGVkT2JqZWN0OwogICAgICAgICAgICAgcGFuZWwuZm9yY2VIb3ZlckhpZ2hsaWdo
dCA9IHRoaXMuaGFzU3R5bGVDbGFzcygic2VsZWN0ZWQiKTsKIAogICAgICAgICAgICAgaWYgKCJt
b3VzZU91dFRpbWVvdXQiIGluIHBhbmVsKSB7CkBAIC01MzksNyArNDE4LDcgQEAgV2ViSW5zcGVj
dG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgICAgICBpZiAoZXZlbnQu
dGFyZ2V0ID09PSB0aGlzKSB7CiAgICAgICAgICAgICAgICAgcGFuZWwuYWx0S2V5RG93biA9IGZh
bHNlOwotICAgICAgICAgICAgICAgIHBhbmVsLmhvdmVyZWRET01Ob2RlID0gbnVsbDsKKyAgICAg
ICAgICAgICAgICBwYW5lbC50cmVlT3V0bGluZS5ob3ZlcmVkRE9NTm9kZSA9IG51bGw7CiAgICAg
ICAgICAgICAgICAgcGFuZWwuZm9yY2VIb3ZlckhpZ2hsaWdodCA9IGZhbHNlOwogICAgICAgICAg
ICAgfQogCkBAIC01NTcsMTEgKzQzNiwxMSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH07CiAKICAgICAgICAgZm91bmRSb290ID0gZmFsc2U7Ci0g
ICAgICAgIGZvciAodmFyIGN1cnJlbnQgPSB0aGlzLmZvY3VzZWRET01Ob2RlOyBjdXJyZW50OyBj
dXJyZW50ID0gdGhpcy5fcGFyZW50Tm9kZU9yRnJhbWVFbGVtZW50KGN1cnJlbnQpKSB7CisgICAg
ICAgIGZvciAodmFyIGN1cnJlbnQgPSB0aGlzLnRyZWVPdXRsaW5lLmZvY3VzZWRET01Ob2RlOyBj
dXJyZW50OyBjdXJyZW50ID0gdGhpcy50cmVlT3V0bGluZS5fcGFyZW50Tm9kZU9yRnJhbWVFbGVt
ZW50KGN1cnJlbnQpKSB7CiAgICAgICAgICAgICBpZiAoY3VycmVudC5ub2RlVHlwZSA9PT0gTm9k
ZS5ET0NVTUVOVF9OT0RFKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAg
ICBpZiAob2JqZWN0c0FyZVNhbWUoY3VycmVudCwgdGhpcy5yb290RE9NTm9kZSkpCisgICAgICAg
ICAgICBpZiAob2JqZWN0c0FyZVNhbWUoY3VycmVudCwgdGhpcy50cmVlT3V0bGluZS5yb290RE9N
Tm9kZSkpCiAgICAgICAgICAgICAgICAgZm91bmRSb290ID0gdHJ1ZTsKIAogICAgICAgICAgICAg
dmFyIGNydW1iID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwpAQCAtNjQ2LDcgKzUy
NSw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICAgICAgaWYgKGZvdW5kUm9vdCkKICAgICAgICAgICAgICAgICBjcnVtYi5hZGRTdHlsZUNsYXNz
KCJkaW1tZWQiKTsKLSAgICAgICAgICAgIGlmIChvYmplY3RzQXJlU2FtZShjdXJyZW50LCB0aGlz
LmZvY3VzZWRET01Ob2RlKSkKKyAgICAgICAgICAgIGlmIChvYmplY3RzQXJlU2FtZShjdXJyZW50
LCB0aGlzLnRyZWVPdXRsaW5lLmZvY3VzZWRET01Ob2RlKSkKICAgICAgICAgICAgICAgICBjcnVt
Yi5hZGRTdHlsZUNsYXNzKCJzZWxlY3RlZCIpOwogICAgICAgICAgICAgaWYgKCFjcnVtYnMuY2hp
bGROb2Rlcy5sZW5ndGgpCiAgICAgICAgICAgICAgICAgY3J1bWIuYWRkU3R5bGVDbGFzcygiZW5k
Iik7CkBAIC05MTYsNyArNzk1LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90
eXBlID0gewogICAgICAgICBpZiAoIXN0eWxlc1NpZGViYXJQYW5lLmV4cGFuZGVkIHx8ICFzdHls
ZXNTaWRlYmFyUGFuZS5uZWVkc1VwZGF0ZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBzdHlsZXNTaWRlYmFyUGFuZS51cGRhdGUodGhpcy5mb2N1c2VkRE9NTm9kZSwgbnVsbCwgZm9y
Y2VVcGRhdGUpOworICAgICAgICBzdHlsZXNTaWRlYmFyUGFuZS51cGRhdGUodGhpcy50cmVlT3V0
bGluZS5mb2N1c2VkRE9NTm9kZSwgbnVsbCwgZm9yY2VVcGRhdGUpOwogICAgICAgICBzdHlsZXNT
aWRlYmFyUGFuZS5uZWVkc1VwZGF0ZSA9IGZhbHNlOwogICAgIH0sCiAKQEAgLTkyNiw3ICs4MDUs
NyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlm
ICghbWV0cmljc1NpZGViYXJQYW5lLmV4cGFuZGVkIHx8ICFtZXRyaWNzU2lkZWJhclBhbmUubmVl
ZHNVcGRhdGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbWV0cmljc1NpZGViYXJQ
YW5lLnVwZGF0ZSh0aGlzLmZvY3VzZWRET01Ob2RlKTsKKyAgICAgICAgbWV0cmljc1NpZGViYXJQ
YW5lLnVwZGF0ZSh0aGlzLnRyZWVPdXRsaW5lLmZvY3VzZWRET01Ob2RlKTsKICAgICAgICAgbWV0
cmljc1NpZGViYXJQYW5lLm5lZWRzVXBkYXRlID0gZmFsc2U7CiAgICAgfSwKIApAQCAtOTM2LDcg
KzgxNSw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgaWYgKCFwcm9wZXJ0aWVzU2lkZWJhclBhbmUuZXhwYW5kZWQgfHwgIXByb3BlcnRpZXNTaWRl
YmFyUGFuZS5uZWVkc1VwZGF0ZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBwcm9w
ZXJ0aWVzU2lkZWJhclBhbmUudXBkYXRlKHRoaXMuZm9jdXNlZERPTU5vZGUpOworICAgICAgICBw
cm9wZXJ0aWVzU2lkZWJhclBhbmUudXBkYXRlKHRoaXMudHJlZU91dGxpbmUuZm9jdXNlZERPTU5v
ZGUpOwogICAgICAgICBwcm9wZXJ0aWVzU2lkZWJhclBhbmUubmVlZHNVcGRhdGUgPSBmYWxzZTsK
ICAgICB9LAogCkBAIC05NTksMTggKzgzOCwxOCBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghd2luZG93LmdldFNlbGVjdGlvbigpLmlzQ29s
bGFwc2VkKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHN3aXRjaCAodGhpcy5mb2N1
c2VkRE9NTm9kZS5ub2RlVHlwZSkgeworICAgICAgICBzd2l0Y2ggKHRoaXMudHJlZU91dGxpbmUu
Zm9jdXNlZERPTU5vZGUubm9kZVR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgTm9kZS5FTEVNRU5U
X05PREU6Ci0gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLmZvY3VzZWRET01Ob2RlLm91
dGVySFRNTDsKKyAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IHRoaXMudHJlZU91dGxpbmUuZm9j
dXNlZERPTU5vZGUub3V0ZXJIVE1MOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAg
ICAgICBjYXNlIE5vZGUuQ09NTUVOVF9OT0RFOgotICAgICAgICAgICAgICAgIHZhciBkYXRhID0g
IjwhLS0iICsgdGhpcy5mb2N1c2VkRE9NTm9kZS5ub2RlVmFsdWUgKyAiLS0+IjsKKyAgICAgICAg
ICAgICAgICB2YXIgZGF0YSA9ICI8IS0tIiArIHRoaXMudHJlZU91dGxpbmUuZm9jdXNlZERPTU5v
ZGUubm9kZVZhbHVlICsgIi0tPiI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBjYXNlIE5vZGUuVEVYVF9OT0RFOgotICAgICAgICAg
ICAgICAgIHZhciBkYXRhID0gdGhpcy5mb2N1c2VkRE9NTm9kZS5ub2RlVmFsdWU7CisgICAgICAg
ICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLnRyZWVPdXRsaW5lLmZvY3VzZWRET01Ob2RlLm5vZGVW
YWx1ZTsKICAgICAgICAgfQogCiAgICAgICAgIGV2ZW50LmNsaXBib2FyZERhdGEuY2xlYXJEYXRh
KCk7CkBAIC05OTksOTAgKzg3OCwxOCBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuc3R5bGUucmlnaHQgPSBuZXdX
aWR0aCArICJweCI7CiAgICAgICAgIHRoaXMuc2lkZWJhclJlc2l6ZUVsZW1lbnQuc3R5bGUucmln
aHQgPSAobmV3V2lkdGggLSAzKSArICJweCI7CiAKLSAgICAgICAgdGhpcy51cGRhdGVUcmVlU2Vs
ZWN0aW9uKCk7CisgICAgICAgIHRoaXMudHJlZU91dGxpbmUudXBkYXRlVHJlZVNlbGVjdGlvbigp
OwogCiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgfSwKIAotICAgIF9nZXRE
b2N1bWVudEZvck5vZGU6IGZ1bmN0aW9uKG5vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gbm9k
ZS5ub2RlVHlwZSA9PSBOb2RlLkRPQ1VNRU5UX05PREUgPyBub2RlIDogbm9kZS5vd25lckRvY3Vt
ZW50OwotICAgIH0sCi0KLSAgICBfcGFyZW50Tm9kZU9yRnJhbWVFbGVtZW50OiBmdW5jdGlvbihu
b2RlKQotICAgIHsKLSAgICAgICAgdmFyIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZTsKLSAgICAg
ICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAgIHJldHVybiBwYXJlbnQ7Ci0KLSAgICAgICAgdmFy
IGRvY3VtZW50ID0gdGhpcy5fZ2V0RG9jdW1lbnRGb3JOb2RlKG5vZGUpOwotICAgICAgICByZXR1
cm4gZG9jdW1lbnQuZGVmYXVsdFZpZXcuZnJhbWVFbGVtZW50OwotICAgIH0sCi0KLSAgICBfaXNB
bmNlc3RvckluY2x1ZGluZ1BhcmVudEZyYW1lczogZnVuY3Rpb24oYSwgYikKLSAgICB7Ci0gICAg
ICAgIGlmIChvYmplY3RzQXJlU2FtZShhLCBiKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgZm9yICh2YXIgbm9kZSA9IGI7IG5vZGU7IG5vZGUgPSB0aGlzLl9nZXREb2N1bWVu
dEZvck5vZGUobm9kZSkuZGVmYXVsdFZpZXcuZnJhbWVFbGVtZW50KQotICAgICAgICAgICAgaWYg
KG9iamVjdHNBcmVTYW1lKGEsIG5vZGUpIHx8IGlzQW5jZXN0b3JOb2RlLmNhbGwoYSwgbm9kZSkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9LAotCi0gICAgX3RyZWVFbGVtZW50RnJvbUV2ZW50OiBmdW5jdGlvbihldmVudCkKLSAgICB7
Ci0gICAgICAgIHZhciBvdXRsaW5lID0gdGhpcy50cmVlT3V0bGluZTsKLQotICAgICAgICB2YXIg
cm9vdCA9IHRoaXMudHJlZUxpc3RFbGVtZW50OwotCi0gICAgICAgIC8vIFdlIGNob29zZSB0aGlz
IFggY29vcmRpbmF0ZSBiYXNlZCBvbiB0aGUga25vd2xlZGdlIHRoYXQgb3VyIGxpc3QKLSAgICAg
ICAgLy8gaXRlbXMgZXh0ZW5kIG5lYXJseSB0byB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgb3V0ZXIg
PG9sPi4KLSAgICAgICAgdmFyIHggPSByb290LnRvdGFsT2Zmc2V0TGVmdCArIHJvb3Qub2Zmc2V0
V2lkdGggLSAyMDsKLQotICAgICAgICB2YXIgeSA9IGV2ZW50LnBhZ2VZOwotCi0gICAgICAgIC8v
IE91ciBsaXN0IGl0ZW1zIGhhdmUgMS1waXhlbCBjcmFja3MgYmV0d2VlbiB0aGVtIHZlcnRpY2Fs
bHkuIFdlIGF2b2lkCi0gICAgICAgIC8vIHRoZSBjcmFja3MgYnkgY2hlY2tpbmcgc2xpZ2h0bHkg
YWJvdmUgYW5kIHNsaWdodGx5IGJlbG93IHRoZSBtb3VzZQotICAgICAgICAvLyBhbmQgc2VlaW5n
IGlmIHdlIGhpdCB0aGUgc2FtZSBlbGVtZW50IGVhY2ggdGltZS4KLSAgICAgICAgdmFyIGVsZW1l
bnRVbmRlck1vdXNlID0gb3V0bGluZS50cmVlRWxlbWVudEZyb21Qb2ludCh4LCB5KTsKLSAgICAg
ICAgdmFyIGVsZW1lbnRBYm92ZU1vdXNlID0gb3V0bGluZS50cmVlRWxlbWVudEZyb21Qb2ludCh4
LCB5IC0gMik7Ci0gICAgICAgIHZhciBlbGVtZW50OwotICAgICAgICBpZiAoZWxlbWVudFVuZGVy
TW91c2UgPT09IGVsZW1lbnRBYm92ZU1vdXNlKQotICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1l
bnRVbmRlck1vdXNlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBlbGVtZW50ID0gb3V0bGlu
ZS50cmVlRWxlbWVudEZyb21Qb2ludCh4LCB5ICsgMik7Ci0KLSAgICAgICAgcmV0dXJuIGVsZW1l
bnQ7Ci0gICAgfSwKLQotICAgIF9vbmRibGNsaWNrOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0g
ICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5fdHJlZUVsZW1lbnRGcm9tRXZlbnQoZXZlbnQpOwot
Ci0gICAgICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC5vbmRibGNsaWNrKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIGVsZW1lbnQub25kYmxjbGljaygpOwotICAgIH0sCi0KLSAg
ICBfb25tb3VzZWRvd246IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFyIGVsZW1l
bnQgPSB0aGlzLl90cmVlRWxlbWVudEZyb21FdmVudChldmVudCk7Ci0KLSAgICAgICAgaWYgKCFl
bGVtZW50IHx8IGVsZW1lbnQuaXNFdmVudFdpdGhpbkRpc2Nsb3N1cmVUcmlhbmdsZShldmVudCkp
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZWxlbWVudC5zZWxlY3QoKTsKLSAgICB9
LAotCiAgICAgX29ubW91c2Vtb3ZlOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZh
ciBlbGVtZW50ID0gdGhpcy5fdHJlZUVsZW1lbnRGcm9tRXZlbnQoZXZlbnQpOworICAgICAgICB2
YXIgZWxlbWVudCA9IHRoaXMudHJlZU91dGxpbmUuX3RyZWVFbGVtZW50RnJvbUV2ZW50KGV2ZW50
KTsKICAgICAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IHRoaXMuYWx0S2V5RG93biA9IGV2ZW50LmFsdEtleTsKLSAgICAgICAgdGhpcy5ob3ZlcmVkRE9N
Tm9kZSA9IGVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3Q7CiAgICAgICAgIHRoaXMuZm9yY2VIb3Zl
ckhpZ2hsaWdodCA9IGVsZW1lbnQuc2VsZWN0ZWQ7CiAgICAgfSwKIApAQCAtMTA5MSwzMzIgKzg5
OCw4IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
aWYgKGV2ZW50LnRhcmdldCAhPT0gdGhpcy50cmVlTGlzdEVsZW1lbnQpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIHRoaXMuYWx0S2V5RG93biA9IGZhbHNlOwotICAgICAgICB0aGlzLmhv
dmVyZWRET01Ob2RlID0gbnVsbDsKICAgICAgICAgdGhpcy5mb3JjZUhvdmVySGlnaGxpZ2h0ID0g
ZmFsc2U7CiAgICAgfQogfQogCiBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUu
X19wcm90b19fID0gV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZTsKLQotV2ViSW5zcGVjdG9y
LkRPTU5vZGVUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKG5vZGUpCi17Ci0gICAgdmFyIGhhc0NoaWxk
cmVuID0gbm9kZS5jb250ZW50RG9jdW1lbnQgfHwgKFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3Bh
Y2UgPyAoZmlyc3RDaGlsZFNraXBwaW5nV2hpdGVzcGFjZS5jYWxsKG5vZGUpID8gdHJ1ZSA6IGZh
bHNlKSA6IG5vZGUuaGFzQ2hpbGROb2RlcygpKTsKLSAgICB2YXIgdGl0bGVJbmZvID0gbm9kZVRp
dGxlSW5mby5jYWxsKG5vZGUsIGhhc0NoaWxkcmVuLCBXZWJJbnNwZWN0b3IubGlua2lmeVVSTCk7
Ci0KLSAgICBpZiAodGl0bGVJbmZvLmhhc0NoaWxkcmVuKSAKLSAgICAgICAgdGhpcy53aGl0ZXNw
YWNlSWdub3JlZCA9IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2U7Ci0KLSAgICBUcmVlRWxl
bWVudC5jYWxsKHRoaXMsIHRpdGxlSW5mby50aXRsZSwgbm9kZSwgdGl0bGVJbmZvLmhhc0NoaWxk
cmVuKTsKLX0KLQotV2ViSW5zcGVjdG9yLkRPTU5vZGVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7
Ci0gICAgdXBkYXRlU2VsZWN0aW9uOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgbGlz
dEl0ZW1FbGVtZW50ID0gdGhpcy5saXN0SXRlbUVsZW1lbnQ7Ci0gICAgICAgIGlmICghbGlzdEl0
ZW1FbGVtZW50KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChkb2N1bWVudC5i
b2R5Lm9mZnNldFdpZHRoIDw9IDApIHsKLSAgICAgICAgICAgIC8vIFRoZSBzdHlsZXNoZWV0IGhh
c24ndCBsb2FkZWQgeWV0IG9yIHRoZSB3aW5kb3cgaXMgY2xvc2VkLAotICAgICAgICAgICAgLy8g
c28gd2UgY2FuJ3QgY2FsY3VsYXRlIHdoYXQgaXMgbmVlZC4gUmV0dXJuIGVhcmx5LgotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGlvbkVs
ZW1lbnQpIHsKLSAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25FbGVtZW50LmNs
YXNzTmFtZSA9ICJzZWxlY3Rpb24gc2VsZWN0ZWQiOwotICAgICAgICAgICAgbGlzdEl0ZW1FbGVt
ZW50Lmluc2VydEJlZm9yZSh0aGlzLnNlbGVjdGlvbkVsZW1lbnQsIGxpc3RJdGVtRWxlbWVudC5m
aXJzdENoaWxkKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuc2VsZWN0aW9uRWxlbWVudC5z
dHlsZS5oZWlnaHQgPSBsaXN0SXRlbUVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgInB4IjsKLSAgICB9
LAotCi0gICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMubGlzdEl0
ZW1FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMub25tb3VzZWRvd24u
YmluZCh0aGlzKSwgZmFsc2UpOwotCi0gICAgICAgIHRoaXMuX3ByZXZlbnRGb2xsb3dpbmdMaW5r
c09uRG91YmxlQ2xpY2soKTsKLSAgICB9LAotCi0gICAgX3ByZXZlbnRGb2xsb3dpbmdMaW5rc09u
RG91YmxlQ2xpY2s6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBsaW5rcyA9IHRoaXMu
bGlzdEl0ZW1FbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImxpID4gLndlYmtpdC1odG1sLXRhZyA+
IC53ZWJraXQtaHRtbC1hdHRyaWJ1dGUgPiAud2Via2l0LWh0bWwtZXh0ZXJuYWwtbGluaywgbGkg
PiAud2Via2l0LWh0bWwtdGFnID4gLndlYmtpdC1odG1sLWF0dHJpYnV0ZSA+IC53ZWJraXQtaHRt
bC1yZXNvdXJjZS1saW5rIik7Ci0gICAgICAgIGlmICghbGlua3MpCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5rcy5sZW5ndGg7ICsraSkKLSAg
ICAgICAgICAgIGxpbmtzW2ldLnByZXZlbnRGb2xsb3dPbkRvdWJsZUNsaWNrID0gdHJ1ZTsKLSAg
ICB9LAotCi0gICAgb25wb3B1bGF0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKHRo
aXMuY2hpbGRyZW4ubGVuZ3RoIHx8IHRoaXMud2hpdGVzcGFjZUlnbm9yZWQgIT09IFByZWZlcmVu
Y2VzLmlnbm9yZVdoaXRlc3BhY2UpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhp
cy53aGl0ZXNwYWNlSWdub3JlZCA9IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2U7Ci0KLSAg
ICAgICAgdGhpcy51cGRhdGVDaGlsZHJlbigpOwotICAgIH0sCi0KLSAgICB1cGRhdGVDaGlsZHJl
bjogZnVuY3Rpb24oZnVsbFJlZnJlc2gpCi0gICAgewotICAgICAgICBpZiAoZnVsbFJlZnJlc2gp
IHsKLSAgICAgICAgICAgIHZhciBzZWxlY3RlZFRyZWVFbGVtZW50ID0gdGhpcy50cmVlT3V0bGlu
ZS5zZWxlY3RlZFRyZWVFbGVtZW50OwotICAgICAgICAgICAgaWYgKHNlbGVjdGVkVHJlZUVsZW1l
bnQgJiYgc2VsZWN0ZWRUcmVlRWxlbWVudC5oYXNBbmNlc3Rvcih0aGlzKSkKLSAgICAgICAgICAg
ICAgICB0aGlzLnNlbGVjdCgpOwotICAgICAgICAgICAgdGhpcy5yZW1vdmVDaGlsZHJlbigpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gdGhpczsKLSAgICAgICAgdmFy
IHRyZWVDaGlsZEluZGV4ID0gMDsKLQotICAgICAgICBmdW5jdGlvbiB1cGRhdGVDaGlsZHJlbk9m
Tm9kZShub2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgdHJlZU91dGxpbmUgPSB0cmVl
RWxlbWVudC50cmVlT3V0bGluZTsKLSAgICAgICAgICAgIHZhciBjaGlsZCA9IChQcmVmZXJlbmNl
cy5pZ25vcmVXaGl0ZXNwYWNlID8gZmlyc3RDaGlsZFNraXBwaW5nV2hpdGVzcGFjZS5jYWxsKG5v
ZGUpIDogbm9kZS5maXJzdENoaWxkKTsKLSAgICAgICAgICAgIHdoaWxlIChjaGlsZCkgewotICAg
ICAgICAgICAgICAgIHZhciBjdXJyZW50VHJlZUVsZW1lbnQgPSB0cmVlRWxlbWVudC5jaGlsZHJl
blt0cmVlQ2hpbGRJbmRleF07Ci0gICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50VHJlZUVsZW1l
bnQgfHwgIW9iamVjdHNBcmVTYW1lKGN1cnJlbnRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVj
dCwgY2hpbGQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZpbmQgYW55IGV4aXN0aW5nIGVs
ZW1lbnQgdGhhdCBpcyBsYXRlciBpbiB0aGUgY2hpbGRyZW4gbGlzdC4KLSAgICAgICAgICAgICAg
ICAgICAgdmFyIGV4aXN0aW5nVHJlZUVsZW1lbnQgPSBudWxsOwotICAgICAgICAgICAgICAgICAg
ICBmb3IgKHZhciBpID0gKHRyZWVDaGlsZEluZGV4ICsgMSk7IGkgPCB0cmVlRWxlbWVudC5jaGls
ZHJlbi5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iamVjdHNB
cmVTYW1lKHRyZWVFbGVtZW50LmNoaWxkcmVuW2ldLnJlcHJlc2VudGVkT2JqZWN0LCBjaGlsZCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ1RyZWVFbGVtZW50ID0gdHJl
ZUVsZW1lbnQuY2hpbGRyZW5baV07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdUcmVlRWxlbWVudCAmJiBleGlzdGluZ1RyZWVF
bGVtZW50LnBhcmVudCA9PT0gdHJlZUVsZW1lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IC8vIElmIGFuIGV4aXN0aW5nIGVsZW1lbnQgd2FzIGZvdW5kIGFuZCBpdCBoYXMgdGhlIHNhbWUg
cGFyZW50LCBqdXN0IG1vdmUgaXQuCi0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgd2FzU2Vs
ZWN0ZWQgPSBleGlzdGluZ1RyZWVFbGVtZW50LnNlbGVjdGVkOwotICAgICAgICAgICAgICAgICAg
ICAgICAgdHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGQoZXhpc3RpbmdUcmVlRWxlbWVudCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB0cmVlRWxlbWVudC5pbnNlcnRDaGlsZChleGlzdGluZ1RyZWVF
bGVtZW50LCB0cmVlQ2hpbGRJbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2Fz
U2VsZWN0ZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdUcmVlRWxlbWVu
dC5zZWxlY3QoKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIE5vIGV4aXN0aW5nIGVsZW1lbnQgZm91bmQsIGluc2VydCBhIG5ldyBlbGVt
ZW50LgotICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQuaW5zZXJ0Q2hpbGQobmV3
IFdlYkluc3BlY3Rvci5ET01Ob2RlVHJlZUVsZW1lbnQoY2hpbGQpLCB0cmVlQ2hpbGRJbmRleCk7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICBjaGlsZCA9IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UgPyBuZXh0U2libGluZ1Nr
aXBwaW5nV2hpdGVzcGFjZS5jYWxsKGNoaWxkKSA6IGNoaWxkLm5leHRTaWJsaW5nOwotICAgICAg
ICAgICAgICAgICsrdHJlZUNoaWxkSW5kZXg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBSZW1vdmUgYW55IHRyZWUgZWxlbWVudHMgdGhhdCBubyBsb25nZXIgaGF2ZSB0
aGlzIG5vZGUgKG9yIHRoaXMgbm9kZSdzIGNvbnRlbnREb2N1bWVudCkgYXMgdGhlaXIgcGFyZW50
LgotICAgICAgICBmb3IgKHZhciBpID0gKHRoaXMuY2hpbGRyZW4ubGVuZ3RoIC0gMSk7IGkgPj0g
MDsgLS1pKSB7Ci0gICAgICAgICAgICBpZiAoImVsZW1lbnRDbG9zZVRhZyIgaW4gdGhpcy5jaGls
ZHJlbltpXSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgdmFyIGN1
cnJlbnRDaGlsZCA9IHRoaXMuY2hpbGRyZW5baV07Ci0gICAgICAgICAgICB2YXIgY3VycmVudE5v
ZGUgPSBjdXJyZW50Q2hpbGQucmVwcmVzZW50ZWRPYmplY3Q7Ci0gICAgICAgICAgICB2YXIgY3Vy
cmVudFBhcmVudE5vZGUgPSBjdXJyZW50Tm9kZS5wYXJlbnROb2RlOwotCi0gICAgICAgICAgICBp
ZiAob2JqZWN0c0FyZVNhbWUoY3VycmVudFBhcmVudE5vZGUsIHRoaXMucmVwcmVzZW50ZWRPYmpl
Y3QpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKHRoaXMucmVw
cmVzZW50ZWRPYmplY3QuY29udGVudERvY3VtZW50ICYmIG9iamVjdHNBcmVTYW1lKGN1cnJlbnRQ
YXJlbnROb2RlLCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmNvbnRlbnREb2N1bWVudCkpCi0gICAg
ICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIHZhciBzZWxlY3RlZFRyZWVFbGVt
ZW50ID0gdGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50OwotICAgICAgICAgICAg
aWYgKHNlbGVjdGVkVHJlZUVsZW1lbnQgJiYgKHNlbGVjdGVkVHJlZUVsZW1lbnQgPT09IGN1cnJl
bnRDaGlsZCB8fCBzZWxlY3RlZFRyZWVFbGVtZW50Lmhhc0FuY2VzdG9yKGN1cnJlbnRDaGlsZCkp
KQotICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCk7Ci0KLSAgICAgICAgICAgIHRoaXMucmVt
b3ZlQ2hpbGRBdEluZGV4KGkpOwotCi0gICAgICAgICAgICBpZiAoY3VycmVudE5vZGUuY29udGVu
dERvY3VtZW50KQotICAgICAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUucGFuZWwudW5yZWdp
c3Rlck11dGF0aW9uRXZlbnRMaXN0ZW5lcnMoY3VycmVudE5vZGUuY29udGVudERvY3VtZW50LmRl
ZmF1bHRWaWV3KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh0aGlzLnJlcHJlc2VudGVkT2Jq
ZWN0LmNvbnRlbnREb2N1bWVudCkKLSAgICAgICAgICAgIHVwZGF0ZUNoaWxkcmVuT2ZOb2RlKHRo
aXMucmVwcmVzZW50ZWRPYmplY3QuY29udGVudERvY3VtZW50KTsKLSAgICAgICAgdXBkYXRlQ2hp
bGRyZW5PZk5vZGUodGhpcy5yZXByZXNlbnRlZE9iamVjdCk7Ci0KLSAgICAgICAgdmFyIGxhc3RD
aGlsZCA9IHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXTsKLSAgICAgICAg
aWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3Qubm9kZVR5cGUgPT0gTm9kZS5FTEVNRU5UX05PREUg
JiYgKCFsYXN0Q2hpbGQgfHwgIWxhc3RDaGlsZC5lbGVtZW50Q2xvc2VUYWcpKSB7Ci0gICAgICAg
ICAgICB2YXIgdGl0bGUgPSAiPHNwYW4gY2xhc3M9XCJ3ZWJraXQtaHRtbC10YWcgY2xvc2VcIj4m
bHQ7LyIgKyB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkuZXNj
YXBlSFRNTCgpICsgIiZndDs8L3NwYW4+IjsKLSAgICAgICAgICAgIHZhciBpdGVtID0gbmV3IFRy
ZWVFbGVtZW50KHRpdGxlLCBudWxsLCBmYWxzZSk7Ci0gICAgICAgICAgICBpdGVtLnNlbGVjdGFi
bGUgPSBmYWxzZTsKLSAgICAgICAgICAgIGl0ZW0uZWxlbWVudENsb3NlVGFnID0gdHJ1ZTsKLSAg
ICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQoaXRlbSk7Ci0gICAgICAgIH0KLSAgICB9LAotCi0g
ICAgb25leHBhbmQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMudHJlZU91dGxpbmUu
cGFuZWwudXBkYXRlVHJlZVNlbGVjdGlvbigpOwotCi0gICAgICAgIGlmICh0aGlzLnJlcHJlc2Vu
dGVkT2JqZWN0LmNvbnRlbnREb2N1bWVudCkKLSAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUu
cGFuZWwucmVnaXN0ZXJNdXRhdGlvbkV2ZW50TGlzdGVuZXJzKHRoaXMucmVwcmVzZW50ZWRPYmpl
Y3QuY29udGVudERvY3VtZW50LmRlZmF1bHRWaWV3KTsKLSAgICB9LAotCi0gICAgb25jb2xsYXBz
ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy50cmVlT3V0bGluZS5wYW5lbC51cGRh
dGVUcmVlU2VsZWN0aW9uKCk7Ci0gICAgfSwKLQotICAgIG9ucmV2ZWFsOiBmdW5jdGlvbigpCi0g
ICAgewotICAgICAgICBpZiAodGhpcy5saXN0SXRlbUVsZW1lbnQpCi0gICAgICAgICAgICB0aGlz
Lmxpc3RJdGVtRWxlbWVudC5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKGZhbHNlKTsKLSAgICB9LAot
Ci0gICAgb25zZWxlY3Q6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMudHJlZU91dGxp
bmUucGFuZWwuZm9jdXNlZERPTU5vZGUgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0OwotICAgICAg
ICB0aGlzLnVwZGF0ZVNlbGVjdGlvbigpOwotICAgIH0sCi0KLSAgICBvbm1vdXNlZG93bjogZnVu
Y3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fZWRpdGluZykKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICAvLyBQcmV2ZW50IHNlbGVjdGluZyB0aGUgbmVhcmVzdCB3
b3JkIG9uIGRvdWJsZSBjbGljay4KLSAgICAgICAgaWYgKGV2ZW50LmRldGFpbCA+PSAyKQotICAg
ICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICB9LAotCi0gICAgb25kYmxjbGlj
azogZnVuY3Rpb24odHJlZUVsZW1lbnQsIGV2ZW50KQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMu
X2VkaXRpbmcpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHRoaXMuX3N0YXJ0
RWRpdGluZyhldmVudCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIHBhbmVs
ID0gdGhpcy50cmVlT3V0bGluZS5wYW5lbDsKLSAgICAgICAgcGFuZWwucm9vdERPTU5vZGUgPSB0
aGlzLnBhcmVudC5yZXByZXNlbnRlZE9iamVjdDsKLSAgICAgICAgcGFuZWwuZm9jdXNlZERPTU5v
ZGUgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0OwotCi0gICAgICAgIGlmICh0aGlzLmhhc0NoaWxk
cmVuICYmICF0aGlzLmV4cGFuZGVkKQotICAgICAgICAgICAgdGhpcy5leHBhbmQoKTsKLSAgICB9
LAotCi0gICAgX3N0YXJ0RWRpdGluZzogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICBp
ZiAodGhpcy50cmVlT3V0bGluZS5wYW5lbC5mb2N1c2VkRE9NTm9kZSAhPSB0aGlzLnJlcHJlc2Vu
dGVkT2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICh0aGlzLnJlcHJl
c2VudGVkT2JqZWN0Lm5vZGVUeXBlICE9IE5vZGUuRUxFTUVOVF9OT0RFICYmIHRoaXMucmVwcmVz
ZW50ZWRPYmplY3Qubm9kZVR5cGUgIT0gTm9kZS5URVhUX05PREUpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAgICAgdmFyIHRleHROb2RlID0gZXZlbnQudGFyZ2V0LmVuY2xvc2lu
Z05vZGVPclNlbGZXaXRoQ2xhc3MoIndlYmtpdC1odG1sLXRleHQtbm9kZSIpOwotICAgICAgICBp
ZiAodGV4dE5vZGUpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRFZGl0aW5nVGV4dE5v
ZGUodGV4dE5vZGUpOwotCi0gICAgICAgIHZhciBhdHRyaWJ1dGUgPSBldmVudC50YXJnZXQuZW5j
bG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygid2Via2l0LWh0bWwtYXR0cmlidXRlIik7Ci0gICAg
ICAgIGlmIChhdHRyaWJ1dGUpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRFZGl0aW5n
QXR0cmlidXRlKGF0dHJpYnV0ZSwgZXZlbnQpOwotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9LAotCi0gICAgX3N0YXJ0RWRpdGluZ0F0dHJpYnV0ZTogZnVuY3Rpb24oYXR0cmlidXRlLCBl
dmVudCkKLSAgICB7Ci0gICAgICAgIGlmIChXZWJJbnNwZWN0b3IuaXNCZWluZ0VkaXRlZChhdHRy
aWJ1dGUpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgdmFyIGF0dHJpYnV0
ZU5hbWVFbGVtZW50ID0gYXR0cmlidXRlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIndlYmtpdC1o
dG1sLWF0dHJpYnV0ZS1uYW1lIilbMF07Ci0gICAgICAgIGlmICghYXR0cmlidXRlTmFtZUVsZW1l
bnQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdmFyIGF0dHJpYnV0ZU5h
bWUgPSBhdHRyaWJ1dGVOYW1lRWxlbWVudC5pbm5lclRleHQ7Ci0KLSAgICAgICAgZnVuY3Rpb24g
cmVtb3ZlWmVyb1dpZHRoU3BhY2VSZWN1cnNpdmUobm9kZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7Ci0gICAgICAgICAgICAg
ICAgbm9kZS5ub2RlVmFsdWUgPSBub2RlLm5vZGVWYWx1ZS5yZXBsYWNlKC9cdTIwMEIvZywgIiIp
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
aWYgKG5vZGUubm9kZVR5cGUgIT09IE5vZGUuRUxFTUVOVF9OT0RFKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICAgICAgZm9yICh2YXIgY2hpbGQgPSBub2RlLmZpcnN0Q2hpbGQ7
IGNoaWxkOyBjaGlsZCA9IGNoaWxkLm5leHRTaWJsaW5nKQotICAgICAgICAgICAgICAgIHJlbW92
ZVplcm9XaWR0aFNwYWNlUmVjdXJzaXZlKGNoaWxkKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IFJlbW92ZSB6ZXJvLXdpZHRoIHNwYWNlcyB0aGF0IHdlcmUgYWRkZWQgYnkgbm9kZVRpdGxlSW5m
by4KLSAgICAgICAgcmVtb3ZlWmVyb1dpZHRoU3BhY2VSZWN1cnNpdmUoYXR0cmlidXRlKTsKLQot
ICAgICAgICB0aGlzLl9lZGl0aW5nID0gdHJ1ZTsKLQotICAgICAgICBXZWJJbnNwZWN0b3Iuc3Rh
cnRFZGl0aW5nKGF0dHJpYnV0ZSwgdGhpcy5fYXR0cmlidXRlRWRpdGluZ0NvbW1pdHRlZC5iaW5k
KHRoaXMpLCB0aGlzLl9lZGl0aW5nQ2FuY2VsbGVkLmJpbmQodGhpcyksIGF0dHJpYnV0ZU5hbWUp
OwotICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudChldmVudC50
YXJnZXQsIDAsIGV2ZW50LnRhcmdldCwgMSk7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fSwKLQotICAgIF9zdGFydEVkaXRpbmdUZXh0Tm9kZTogZnVuY3Rpb24odGV4dE5vZGUpCi0gICAg
ewotICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmlzQmVpbmdFZGl0ZWQodGV4dE5vZGUpKQotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgdGhpcy5fZWRpdGluZyA9IHRydWU7Ci0K
LSAgICAgICAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyh0ZXh0Tm9kZSwgdGhpcy5fdGV4dE5v
ZGVFZGl0aW5nQ29tbWl0dGVkLmJpbmQodGhpcyksIHRoaXMuX2VkaXRpbmdDYW5jZWxsZWQuYmlu
ZCh0aGlzKSk7Ci0gICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50
KHRleHROb2RlLCAwLCB0ZXh0Tm9kZSwgMSk7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fSwKLQotICAgIF9hdHRyaWJ1dGVFZGl0aW5nQ29tbWl0dGVkOiBmdW5jdGlvbihlbGVtZW50LCBu
ZXdUZXh0LCBvbGRUZXh0LCBhdHRyaWJ1dGVOYW1lKQotICAgIHsKLSAgICAgICAgZGVsZXRlIHRo
aXMuX2VkaXRpbmc7Ci0KLSAgICAgICAgdmFyIHBhcnNlQ29udGFpbmVyRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgcGFyc2VDb250YWluZXJFbGVtZW50
LmlubmVySFRNTCA9ICI8c3BhbiAiICsgbmV3VGV4dCArICI+PC9zcGFuPiI7Ci0gICAgICAgIHZh
ciBwYXJzZUVsZW1lbnQgPSBwYXJzZUNvbnRhaW5lckVsZW1lbnQuZmlyc3RDaGlsZDsKLSAgICAg
ICAgaWYgKCFwYXJzZUVsZW1lbnQgfHwgIXBhcnNlRWxlbWVudC5oYXNBdHRyaWJ1dGVzKCkpIHsK
LSAgICAgICAgICAgIGVkaXRpbmdDYW5jZWxsZWQoZWxlbWVudCwgY29udGV4dCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgZm91bmRPcmlnaW5hbEF0dHJp
YnV0ZSA9IGZhbHNlOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcnNlRWxlbWVudC5h
dHRyaWJ1dGVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgYXR0ciA9IHBhcnNlRWxl
bWVudC5hdHRyaWJ1dGVzW2ldOwotICAgICAgICAgICAgZm91bmRPcmlnaW5hbEF0dHJpYnV0ZSA9
IGZvdW5kT3JpZ2luYWxBdHRyaWJ1dGUgfHwgYXR0ci5uYW1lID09PSBhdHRyaWJ1dGVOYW1lOwot
ICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5pbnNwZWN0ZWRXaW5kb3coKS5FbGVtZW50
LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGUuY2FsbCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LCBhdHRy
Lm5hbWUsIGF0dHIudmFsdWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFmb3VuZE9yaWdp
bmFsQXR0cmlidXRlKQotICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5pbnNwZWN0ZWRX
aW5kb3coKS5FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGUuY2FsbCh0aGlzLnJlcHJl
c2VudGVkT2JqZWN0LCBhdHRyaWJ1dGVOYW1lKTsKLQotICAgICAgICB0aGlzLl91cGRhdGVUaXRs
ZSgpOwotICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnBhbmVsLl9mb2N1c2VkTm9kZUNoYW5nZWQo
dHJ1ZSk7Ci0gICAgfSwKLQotICAgIF90ZXh0Tm9kZUVkaXRpbmdDb21taXR0ZWQ6IGZ1bmN0aW9u
KGVsZW1lbnQsIG5ld1RleHQpCi0gICAgewotICAgICAgICBkZWxldGUgdGhpcy5fZWRpdGluZzsK
LQotICAgICAgICB2YXIgdGV4dE5vZGU7Ci0gICAgICAgIGlmICh0aGlzLnJlcHJlc2VudGVkT2Jq
ZWN0Lm5vZGVUeXBlID09IE5vZGUuRUxFTUVOVF9OT0RFKSB7Ci0gICAgICAgICAgICAvLyBXZSBv
bmx5IHNob3cgdGV4dCBub2RlcyBpbmxpbmUgaW4gZWxlbWVudHMgaWYgdGhlIGVsZW1lbnQgb25s
eQotICAgICAgICAgICAgLy8gaGFzIGEgc2luZ2xlIGNoaWxkLCBhbmQgdGhhdCBjaGlsZCBpcyBh
IHRleHQgbm9kZS4KLSAgICAgICAgICAgIHRleHROb2RlID0gdGhpcy5yZXByZXNlbnRlZE9iamVj
dC5maXJzdENoaWxkOwotICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3Qu
bm9kZVR5cGUgPT0gTm9kZS5URVhUX05PREUpCi0gICAgICAgICAgICB0ZXh0Tm9kZSA9IHRoaXMu
cmVwcmVzZW50ZWRPYmplY3Q7Ci0KLSAgICAgICAgdGV4dE5vZGUubm9kZVZhbHVlID0gbmV3VGV4
dDsKLSAgICAgICAgdGhpcy5fdXBkYXRlVGl0bGUoKTsKLSAgICB9LAotCi0gICAgX2VkaXRpbmdD
YW5jZWxsZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRleHQpCi0gICAgewotICAgICAgICBkZWxl
dGUgdGhpcy5fZWRpdGluZzsKLQotICAgICAgICB0aGlzLl91cGRhdGVUaXRsZSgpOwotICAgIH0s
Ci0KLSAgICBfdXBkYXRlVGl0bGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMudGl0
bGUgPSBub2RlVGl0bGVJbmZvLmNhbGwodGhpcy5yZXByZXNlbnRlZE9iamVjdCwgdGhpcy5oYXND
aGlsZHJlbiwgV2ViSW5zcGVjdG9yLmxpbmtpZnlVUkwpLnRpdGxlOwotICAgICAgICBkZWxldGUg
dGhpcy5zZWxlY3Rpb25FbGVtZW50OwotICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbigpOwot
ICAgICAgICB0aGlzLl9wcmV2ZW50Rm9sbG93aW5nTGlua3NPbkRvdWJsZUNsaWNrKCk7Ci0gICAg
fSwKLX0KLQotV2ViSW5zcGVjdG9yLkRPTU5vZGVUcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90
b19fID0gVHJlZUVsZW1lbnQucHJvdG90eXBlOwpJbmRleDogV2ViQ29yZS9wYWdlL2luc3BlY3Rv
ci9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9pbnNw
ZWN0b3IvRWxlbWVudHNUcmVlT3V0bGluZS5qcwkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFn
ZS9pbnNwZWN0b3IvRWxlbWVudHNUcmVlT3V0bGluZS5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1NDUgQEAKKworV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91dGxpbmUgPSBmdW5jdGlvbigp
IHsKKyAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOworICAg
IHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9vbm1vdXNl
ZG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImRibGNsaWNrIiwgdGhpcy5fb25kYmxjbGljay5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAg
dGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX29ubW91c2Vt
b3ZlLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigibW91c2VvdXQiLCB0aGlzLl9vbm1vdXNlb3V0LmJpbmQodGhpcyksIGZhbHNlKTsKKworICAg
IFRyZWVPdXRsaW5lLmNhbGwodGhpcywgdGhpcy5lbGVtZW50KTsKKyAgICAKKyAgICB0aGlzLmlu
Y2x1ZGVSb290RE9NTm9kZSA9IHRydWU7CisgICAgdGhpcy5yb290RE9NTm9kZSA9IG51bGw7Cisg
ICAgdGhpcy5mb2N1c2VkRE9NTm9kZSA9IG51bGw7CisKKyAgICB0aGlzLmhvdmVyZWRET01Ob2Rl
ID0gbnVsbDsKK30KKworV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91dGxpbmUucHJvdG90eXBl
ID0geworICAgIGdldCByb290RE9NTm9kZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5f
cm9vdERPTU5vZGU7CisgICAgfSwKKworICAgIHNldCByb290RE9NTm9kZSh4KQorICAgIHsKKyAg
ICAgICAgaWYgKG9iamVjdHNBcmVTYW1lKHRoaXMuX3Jvb3RET01Ob2RlLCB4KSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9yb290RE9NTm9kZSA9IHg7CisKKyAgICAgICAg
dGhpcy51cGRhdGVUcmVlT3V0bGluZSgpOworICAgIH0sCisKKyAgICBnZXQgZm9jdXNlZERPTU5v
ZGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2ZvY3VzZWRET01Ob2RlOworICAgIH0s
CisKKyAgICBzZXQgZm9jdXNlZERPTU5vZGUoeCkKKyAgICB7CisgICAgICAgIGlmIChvYmplY3Rz
QXJlU2FtZSh0aGlzLl9mb2N1c2VkRE9NTm9kZSwgeCkpIHsKKyAgICAgICAgICAgIHZhciBub2Rl
SXRlbSA9IHRoaXMucmV2ZWFsTm9kZSh4KTsKKyAgICAgICAgICAgIGlmIChub2RlSXRlbSkKKyAg
ICAgICAgICAgICAgICBub2RlSXRlbS5zZWxlY3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIHRoaXMuX2ZvY3VzZWRET01Ob2RlID0geDsKKworICAgICAgICB0
aGlzLm9uRm9jdXNlZE5vZGVDaGFuZ2VkKCk7CisKKyAgICAgICAgdmFyIG5vZGVJdGVtID0gdGhp
cy5yZXZlYWxOb2RlKHgpOworICAgICAgICBpZiAobm9kZUl0ZW0pCisgICAgICAgICAgICBub2Rl
SXRlbS5zZWxlY3QoKTsKKyAgICB9LAorCisgICAgZ2V0IGhvdmVyZWRET01Ob2RlKCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl9ob3ZlcmVkRE9NTm9kZTsKKyAgICB9LAorCisgICAgc2V0
IGhvdmVyZWRET01Ob2RlKHgpCisgICAgeworICAgICAgICBpZiAob2JqZWN0c0FyZVNhbWUodGhp
cy5faG92ZXJlZERPTU5vZGUsIHgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRo
aXMuX2hvdmVyZWRET01Ob2RlID0geDsKKworICAgICAgICB0aGlzLl91cGRhdGVIb3ZlckhpZ2hs
aWdodCgpOworICAgIH0sCisgICAgCisgICAgdXBkYXRlVHJlZU91dGxpbmU6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW5SZWN1cnNpdmUoKTsKKworICAgICAg
ICBpZiAoIXRoaXMucm9vdERPTU5vZGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
aWYgKHRoaXMuaW5jbHVkZVJvb3RET01Ob2RlKQorICAgICAgICAgICAgdGhpcy50cmVlT3V0bGlu
ZS5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQodGhpcy5y
b290RE9NTm9kZSkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiB0aGlz
IGNvdWxkIHVzZSBmaW5kVHJlZUVsZW1lbnQgdG8gcmV1c2UgYSB0cmVlIGVsZW1lbnQgaWYgaXQg
YWxyZWFkeSBleGlzdHMKKyAgICAgICAgICAgIHZhciBub2RlID0gKFByZWZlcmVuY2VzLmlnbm9y
ZVdoaXRlc3BhY2UgPyBmaXJzdENoaWxkU2tpcHBpbmdXaGl0ZXNwYWNlLmNhbGwodGhpcy5yb290
RE9NTm9kZSkgOiB0aGlzLnJvb3RET01Ob2RlLmZpcnN0Q2hpbGQpOworICAgICAgICAgICAgd2hp
bGUgKG5vZGUpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLmFwcGVuZENoaWxk
KG5ldyBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudChub2RlKSk7CisgICAgICAgICAg
ICAgICAgbm9kZSA9IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UgPyBuZXh0U2libGluZ1Nr
aXBwaW5nV2hpdGVzcGFjZS5jYWxsKG5vZGUpIDogbm9kZS5uZXh0U2libGluZzsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHRoaXMudXBkYXRlVHJlZVNlbGVjdGlvbigpOwor
ICAgIH0sCisKKyAgICB1cGRhdGVUcmVlU2VsZWN0aW9uOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQ7CisgICAgICAg
IGVsZW1lbnQudXBkYXRlU2VsZWN0aW9uKCk7CisgICAgfSwKKworICAgIG9uRm9jdXNlZE5vZGVD
aGFuZ2VkOiBmdW5jdGlvbigpIHt9LAorCisgICAgX3VwZGF0ZUhvdmVySGlnaGxpZ2h0U29vbjog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCJfdXBkYXRlSG92ZXJIaWdobGlnaHRUaW1l
b3V0IiBpbiB0aGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl91cGRhdGVI
b3ZlckhpZ2hsaWdodFRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuX3VwZGF0ZUhvdmVySGlnaGxp
Z2h0LmJpbmQodGhpcyksIDApOworICAgIH0sCisKKyAgICBfdXBkYXRlSG92ZXJIaWdobGlnaHQ6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICgiX3VwZGF0ZUhvdmVySGlnaGxpZ2h0VGlt
ZW91dCIgaW4gdGhpcykgeworICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZUhv
dmVySGlnaGxpZ2h0VGltZW91dCk7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fdXBkYXRlSG92
ZXJIaWdobGlnaHRUaW1lb3V0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuX2hvdmVy
ZWRET01Ob2RlKQorICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5oaWdobGlnaHRET01O
b2RlKHRoaXMuX2hvdmVyZWRET01Ob2RlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgSW5z
cGVjdG9yQ29udHJvbGxlci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOworICAgIH0sCisKKyAgICBy
ZXZlYWxOb2RlOiBmdW5jdGlvbihub2RlKQorICAgIHsKKyAgICAgICAgdmFyIG5vZGVJdGVtID0g
dGhpcy50cmVlT3V0bGluZS5maW5kVHJlZUVsZW1lbnQobm9kZSwgdGhpcy5faXNBbmNlc3Rvcklu
Y2x1ZGluZ1BhcmVudEZyYW1lcy5iaW5kKHRoaXMpLCB0aGlzLl9wYXJlbnROb2RlT3JGcmFtZUVs
ZW1lbnQuYmluZCh0aGlzKSwgb2JqZWN0c0FyZVNhbWUpOworICAgICAgICBpZiAoIW5vZGVJdGVt
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG5vZGVJdGVtLnJldmVhbCgpOworICAg
ICAgICByZXR1cm4gbm9kZUl0ZW07CisgICAgfSwKKworICAgIF9nZXREb2N1bWVudEZvck5vZGU6
IGZ1bmN0aW9uKG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gbm9kZS5ub2RlVHlwZSA9PSBO
b2RlLkRPQ1VNRU5UX05PREUgPyBub2RlIDogbm9kZS5vd25lckRvY3VtZW50OworICAgIH0sCisK
KyAgICBfcGFyZW50Tm9kZU9yRnJhbWVFbGVtZW50OiBmdW5jdGlvbihub2RlKQorICAgIHsKKyAg
ICAgICAgdmFyIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZTsKKyAgICAgICAgaWYgKHBhcmVudCkK
KyAgICAgICAgICAgIHJldHVybiBwYXJlbnQ7CisKKyAgICAgICAgdmFyIGRvY3VtZW50ID0gdGhp
cy5fZ2V0RG9jdW1lbnRGb3JOb2RlKG5vZGUpOworICAgICAgICByZXR1cm4gZG9jdW1lbnQuZGVm
YXVsdFZpZXcuZnJhbWVFbGVtZW50OworICAgIH0sCisKKyAgICBfaXNBbmNlc3RvckluY2x1ZGlu
Z1BhcmVudEZyYW1lczogZnVuY3Rpb24oYSwgYikKKyAgICB7CisgICAgICAgIGlmIChvYmplY3Rz
QXJlU2FtZShhLCBiKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZm9yICh2
YXIgbm9kZSA9IGI7IG5vZGU7IG5vZGUgPSB0aGlzLl9nZXREb2N1bWVudEZvck5vZGUobm9kZSku
ZGVmYXVsdFZpZXcuZnJhbWVFbGVtZW50KQorICAgICAgICAgICAgaWYgKG9iamVjdHNBcmVTYW1l
KGEsIG5vZGUpIHx8IGlzQW5jZXN0b3JOb2RlLmNhbGwoYSwgbm9kZSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9LAorCisgICAgX3Ry
ZWVFbGVtZW50RnJvbUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBv
dXRsaW5lID0gdGhpcy50cmVlT3V0bGluZTsKKworICAgICAgICB2YXIgcm9vdCA9IHRoaXMuZWxl
bWVudDsKKworICAgICAgICAvLyBXZSBjaG9vc2UgdGhpcyBYIGNvb3JkaW5hdGUgYmFzZWQgb24g
dGhlIGtub3dsZWRnZSB0aGF0IG91ciBsaXN0CisgICAgICAgIC8vIGl0ZW1zIGV4dGVuZCBuZWFy
bHkgdG8gdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIG91dGVyIDxvbD4uCisgICAgICAgIHZhciB4ID0g
cm9vdC50b3RhbE9mZnNldExlZnQgKyByb290Lm9mZnNldFdpZHRoIC0gMjA7CisKKyAgICAgICAg
dmFyIHkgPSBldmVudC5wYWdlWTsKKworICAgICAgICAvLyBPdXIgbGlzdCBpdGVtcyBoYXZlIDEt
cGl4ZWwgY3JhY2tzIGJldHdlZW4gdGhlbSB2ZXJ0aWNhbGx5LiBXZSBhdm9pZAorICAgICAgICAv
LyB0aGUgY3JhY2tzIGJ5IGNoZWNraW5nIHNsaWdodGx5IGFib3ZlIGFuZCBzbGlnaHRseSBiZWxv
dyB0aGUgbW91c2UKKyAgICAgICAgLy8gYW5kIHNlZWluZyBpZiB3ZSBoaXQgdGhlIHNhbWUgZWxl
bWVudCBlYWNoIHRpbWUuCisgICAgICAgIHZhciBlbGVtZW50VW5kZXJNb3VzZSA9IG91dGxpbmUu
dHJlZUVsZW1lbnRGcm9tUG9pbnQoeCwgeSk7CisgICAgICAgIHZhciBlbGVtZW50QWJvdmVNb3Vz
ZSA9IG91dGxpbmUudHJlZUVsZW1lbnRGcm9tUG9pbnQoeCwgeSAtIDIpOworICAgICAgICB2YXIg
ZWxlbWVudDsKKyAgICAgICAgaWYgKGVsZW1lbnRVbmRlck1vdXNlID09PSBlbGVtZW50QWJvdmVN
b3VzZSkKKyAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50VW5kZXJNb3VzZTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgZWxlbWVudCA9IG91dGxpbmUudHJlZUVsZW1lbnRGcm9tUG9pbnQo
eCwgeSArIDIpOworCisgICAgICAgIHJldHVybiBlbGVtZW50OworICAgIH0sCisKKyAgICBfb25k
YmxjbGljazogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgZWxlbWVudCA9IHRo
aXMuX3RyZWVFbGVtZW50RnJvbUV2ZW50KGV2ZW50KTsKKworICAgICAgICBpZiAoIWVsZW1lbnQg
fHwgIWVsZW1lbnQub25kYmxjbGljaykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBl
bGVtZW50Lm9uZGJsY2xpY2soZWxlbWVudCwgZXZlbnQpOworICAgIH0sCisKKyAgICBfb25tb3Vz
ZWRvd246IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlz
Ll90cmVlRWxlbWVudEZyb21FdmVudChldmVudCk7CisKKyAgICAgICAgaWYgKCFlbGVtZW50IHx8
IGVsZW1lbnQuaXNFdmVudFdpdGhpbkRpc2Nsb3N1cmVUcmlhbmdsZShldmVudCkpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgZWxlbWVudC5zZWxlY3QoKTsKKyAgICB9LAorCisgICAg
X29ubW91c2Vtb3ZlOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBlbGVtZW50
ID0gdGhpcy5fdHJlZUVsZW1lbnRGcm9tRXZlbnQoZXZlbnQpOworICAgICAgICBpZiAoIWVsZW1l
bnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5ob3ZlcmVkRE9NTm9kZSA9
IGVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3Q7CisgICAgfSwKKworICAgIF9vbm1vdXNlb3V0OiBm
dW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmIChldmVudC50YXJnZXQgIT09IHRoaXMu
ZWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5ob3ZlcmVkRE9NTm9k
ZSA9IG51bGw7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlT3V0bGluZS5w
cm90b3R5cGUuX19wcm90b19fID0gVHJlZU91dGxpbmUucHJvdG90eXBlOworCisKKworV2ViSW5z
cGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihub2RlKQoreworICAgIHZhciBo
YXNDaGlsZHJlbiA9IG5vZGUuY29udGVudERvY3VtZW50IHx8IChQcmVmZXJlbmNlcy5pZ25vcmVX
aGl0ZXNwYWNlID8gKGZpcnN0Q2hpbGRTa2lwcGluZ1doaXRlc3BhY2UuY2FsbChub2RlKSA/IHRy
dWUgOiBmYWxzZSkgOiBub2RlLmhhc0NoaWxkTm9kZXMoKSk7CisgICAgdmFyIHRpdGxlSW5mbyA9
IG5vZGVUaXRsZUluZm8uY2FsbChub2RlLCBoYXNDaGlsZHJlbiwgV2ViSW5zcGVjdG9yLmxpbmtp
ZnlVUkwpOworCisgICAgaWYgKHRpdGxlSW5mby5oYXNDaGlsZHJlbikgCisgICAgICAgIHRoaXMu
d2hpdGVzcGFjZUlnbm9yZWQgPSBQcmVmZXJlbmNlcy5pZ25vcmVXaGl0ZXNwYWNlOworCisgICAg
VHJlZUVsZW1lbnQuY2FsbCh0aGlzLCB0aXRsZUluZm8udGl0bGUsIG5vZGUsIHRpdGxlSW5mby5o
YXNDaGlsZHJlbik7Cit9CisKK1dlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3Rv
dHlwZSA9IHsKKyAgICB1cGRhdGVTZWxlY3Rpb246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHZhciBsaXN0SXRlbUVsZW1lbnQgPSB0aGlzLmxpc3RJdGVtRWxlbWVudDsKKyAgICAgICAgaWYg
KCFsaXN0SXRlbUVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKGRv
Y3VtZW50LmJvZHkub2Zmc2V0V2lkdGggPD0gMCkgeworICAgICAgICAgICAgLy8gVGhlIHN0eWxl
c2hlZXQgaGFzbid0IGxvYWRlZCB5ZXQgb3IgdGhlIHdpbmRvdyBpcyBjbG9zZWQsCisgICAgICAg
ICAgICAvLyBzbyB3ZSBjYW4ndCBjYWxjdWxhdGUgd2hhdCBpcyBuZWVkLiBSZXR1cm4gZWFybHku
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRoaXMuc2Vs
ZWN0aW9uRWxlbWVudCkgeworICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25FbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkVs
ZW1lbnQuY2xhc3NOYW1lID0gInNlbGVjdGlvbiBzZWxlY3RlZCI7CisgICAgICAgICAgICBsaXN0
SXRlbUVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMuc2VsZWN0aW9uRWxlbWVudCwgbGlzdEl0ZW1F
bGVtZW50LmZpcnN0Q2hpbGQpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5zZWxlY3Rpb25F
bGVtZW50LnN0eWxlLmhlaWdodCA9IGxpc3RJdGVtRWxlbWVudC5vZmZzZXRIZWlnaHQgKyAicHgi
OworICAgIH0sCisKKyAgICBvbmF0dGFjaDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhp
cy5saXN0SXRlbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5vbm1v
dXNlZG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7CisKKyAgICAgICAgdGhpcy5fcHJldmVudEZvbGxv
d2luZ0xpbmtzT25Eb3VibGVDbGljaygpOworICAgIH0sCisKKyAgICBfcHJldmVudEZvbGxvd2lu
Z0xpbmtzT25Eb3VibGVDbGljazogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGxpbmtz
ID0gdGhpcy5saXN0SXRlbUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgibGkgPiAud2Via2l0LWh0
bWwtdGFnID4gLndlYmtpdC1odG1sLWF0dHJpYnV0ZSA+IC53ZWJraXQtaHRtbC1leHRlcm5hbC1s
aW5rLCBsaSA+IC53ZWJraXQtaHRtbC10YWcgPiAud2Via2l0LWh0bWwtYXR0cmlidXRlID4gLndl
YmtpdC1odG1sLXJlc291cmNlLWxpbmsiKTsKKyAgICAgICAgaWYgKCFsaW5rcykKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmtzLmxlbmd0aDsg
KytpKQorICAgICAgICAgICAgbGlua3NbaV0ucHJldmVudEZvbGxvd09uRG91YmxlQ2xpY2sgPSB0
cnVlOworICAgIH0sCisKKyAgICBvbnBvcHVsYXRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggfHwgdGhpcy53aGl0ZXNwYWNlSWdub3JlZCAhPT0g
UHJlZmVyZW5jZXMuaWdub3JlV2hpdGVzcGFjZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICB0aGlzLndoaXRlc3BhY2VJZ25vcmVkID0gUHJlZmVyZW5jZXMuaWdub3JlV2hpdGVzcGFj
ZTsKKworICAgICAgICB0aGlzLnVwZGF0ZUNoaWxkcmVuKCk7CisgICAgfSwKKworICAgIHVwZGF0
ZUNoaWxkcmVuOiBmdW5jdGlvbihmdWxsUmVmcmVzaCkKKyAgICB7CisgICAgICAgIGlmIChmdWxs
UmVmcmVzaCkgeworICAgICAgICAgICAgdmFyIHNlbGVjdGVkVHJlZUVsZW1lbnQgPSB0aGlzLnRy
ZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQ7CisgICAgICAgICAgICBpZiAoc2VsZWN0ZWRU
cmVlRWxlbWVudCAmJiBzZWxlY3RlZFRyZWVFbGVtZW50Lmhhc0FuY2VzdG9yKHRoaXMpKQorICAg
ICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCk7CisgICAgICAgICAgICB0aGlzLnJlbW92ZUNoaWxk
cmVuKCk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgdHJlZUVsZW1lbnQgPSB0aGlzOworICAg
ICAgICB2YXIgdHJlZUNoaWxkSW5kZXggPSAwOworCisgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUNo
aWxkcmVuT2ZOb2RlKG5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciB0cmVlT3V0bGlu
ZSA9IHRyZWVFbGVtZW50LnRyZWVPdXRsaW5lOworICAgICAgICAgICAgdmFyIGNoaWxkID0gKFBy
ZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UgPyBmaXJzdENoaWxkU2tpcHBpbmdXaGl0ZXNwYWNl
LmNhbGwobm9kZSkgOiBub2RlLmZpcnN0Q2hpbGQpOworICAgICAgICAgICAgd2hpbGUgKGNoaWxk
KSB7CisgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRUcmVlRWxlbWVudCA9IHRyZWVFbGVtZW50
LmNoaWxkcmVuW3RyZWVDaGlsZEluZGV4XTsKKyAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRU
cmVlRWxlbWVudCB8fCAhb2JqZWN0c0FyZVNhbWUoY3VycmVudFRyZWVFbGVtZW50LnJlcHJlc2Vu
dGVkT2JqZWN0LCBjaGlsZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRmluZCBhbnkgZXhp
c3RpbmcgZWxlbWVudCB0aGF0IGlzIGxhdGVyIGluIHRoZSBjaGlsZHJlbiBsaXN0LgorICAgICAg
ICAgICAgICAgICAgICB2YXIgZXhpc3RpbmdUcmVlRWxlbWVudCA9IG51bGw7CisgICAgICAgICAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAodHJlZUNoaWxkSW5kZXggKyAxKTsgaSA8IHRyZWVFbGVt
ZW50LmNoaWxkcmVuLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
b2JqZWN0c0FyZVNhbWUodHJlZUVsZW1lbnQuY2hpbGRyZW5baV0ucmVwcmVzZW50ZWRPYmplY3Qs
IGNoaWxkKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nVHJlZUVsZW1l
bnQgPSB0cmVlRWxlbWVudC5jaGlsZHJlbltpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ1RyZWVFbGVtZW50ICYmIGV4aXN0
aW5nVHJlZUVsZW1lbnQucGFyZW50ID09PSB0cmVlRWxlbWVudCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gSWYgYW4gZXhpc3RpbmcgZWxlbWVudCB3YXMgZm91bmQgYW5kIGl0IGhhcyB0
aGUgc2FtZSBwYXJlbnQsIGp1c3QgbW92ZSBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciB3YXNTZWxlY3RlZCA9IGV4aXN0aW5nVHJlZUVsZW1lbnQuc2VsZWN0ZWQ7CisgICAgICAgICAg
ICAgICAgICAgICAgICB0cmVlRWxlbWVudC5yZW1vdmVDaGlsZChleGlzdGluZ1RyZWVFbGVtZW50
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50Lmluc2VydENoaWxkKGV4aXN0
aW5nVHJlZUVsZW1lbnQsIHRyZWVDaGlsZEluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh3YXNTZWxlY3RlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ1Ry
ZWVFbGVtZW50LnNlbGVjdCgpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gTm8gZXhpc3RpbmcgZWxlbWVudCBmb3VuZCwgaW5zZXJ0IGEg
bmV3IGVsZW1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICB0cmVlRWxlbWVudC5pbnNlcnRD
aGlsZChuZXcgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQoY2hpbGQpLCB0cmVlQ2hp
bGRJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBjaGlsZCA9IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UgPyBuZXh0
U2libGluZ1NraXBwaW5nV2hpdGVzcGFjZS5jYWxsKGNoaWxkKSA6IGNoaWxkLm5leHRTaWJsaW5n
OworICAgICAgICAgICAgICAgICsrdHJlZUNoaWxkSW5kZXg7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICAvLyBSZW1vdmUgYW55IHRyZWUgZWxlbWVudHMgdGhhdCBubyBsb25n
ZXIgaGF2ZSB0aGlzIG5vZGUgKG9yIHRoaXMgbm9kZSdzIGNvbnRlbnREb2N1bWVudCkgYXMgdGhl
aXIgcGFyZW50LgorICAgICAgICBmb3IgKHZhciBpID0gKHRoaXMuY2hpbGRyZW4ubGVuZ3RoIC0g
MSk7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAgICBpZiAoImVsZW1lbnRDbG9zZVRhZyIgaW4g
dGhpcy5jaGlsZHJlbltpXSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgdmFyIGN1cnJlbnRDaGlsZCA9IHRoaXMuY2hpbGRyZW5baV07CisgICAgICAgICAgICB2YXIg
Y3VycmVudE5vZGUgPSBjdXJyZW50Q2hpbGQucmVwcmVzZW50ZWRPYmplY3Q7CisgICAgICAgICAg
ICB2YXIgY3VycmVudFBhcmVudE5vZGUgPSBjdXJyZW50Tm9kZS5wYXJlbnROb2RlOworCisgICAg
ICAgICAgICBpZiAob2JqZWN0c0FyZVNhbWUoY3VycmVudFBhcmVudE5vZGUsIHRoaXMucmVwcmVz
ZW50ZWRPYmplY3QpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYg
KHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY29udGVudERvY3VtZW50ICYmIG9iamVjdHNBcmVTYW1l
KGN1cnJlbnRQYXJlbnROb2RlLCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmNvbnRlbnREb2N1bWVu
dCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHZhciBzZWxlY3Rl
ZFRyZWVFbGVtZW50ID0gdGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50OworICAg
ICAgICAgICAgaWYgKHNlbGVjdGVkVHJlZUVsZW1lbnQgJiYgKHNlbGVjdGVkVHJlZUVsZW1lbnQg
PT09IGN1cnJlbnRDaGlsZCB8fCBzZWxlY3RlZFRyZWVFbGVtZW50Lmhhc0FuY2VzdG9yKGN1cnJl
bnRDaGlsZCkpKQorICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCk7CisKKyAgICAgICAgICAg
IHRoaXMucmVtb3ZlQ2hpbGRBdEluZGV4KGkpOworCisgICAgICAgICAgICBpZiAodGhpcy50cmVl
T3V0bGluZS5wYW5lbCAmJiBjdXJyZW50Tm9kZS5jb250ZW50RG9jdW1lbnQpCisgICAgICAgICAg
ICAgICAgdGhpcy50cmVlT3V0bGluZS5wYW5lbC51bnJlZ2lzdGVyTXV0YXRpb25FdmVudExpc3Rl
bmVycyhjdXJyZW50Tm9kZS5jb250ZW50RG9jdW1lbnQuZGVmYXVsdFZpZXcpOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY29udGVudERvY3VtZW50KQor
ICAgICAgICAgICAgdXBkYXRlQ2hpbGRyZW5PZk5vZGUodGhpcy5yZXByZXNlbnRlZE9iamVjdC5j
b250ZW50RG9jdW1lbnQpOworICAgICAgICB1cGRhdGVDaGlsZHJlbk9mTm9kZSh0aGlzLnJlcHJl
c2VudGVkT2JqZWN0KTsKKworICAgICAgICB2YXIgbGFzdENoaWxkID0gdGhpcy5jaGlsZHJlblt0
aGlzLmNoaWxkcmVuLmxlbmd0aCAtIDFdOworICAgICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9i
amVjdC5ub2RlVHlwZSA9PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiAoIWxhc3RDaGlsZCB8fCAhbGFz
dENoaWxkLmVsZW1lbnRDbG9zZVRhZykpIHsKKyAgICAgICAgICAgIHZhciB0aXRsZSA9ICI8c3Bh
biBjbGFzcz1cIndlYmtpdC1odG1sLXRhZyBjbG9zZVwiPiZsdDsvIiArIHRoaXMucmVwcmVzZW50
ZWRPYmplY3Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKS5lc2NhcGVIVE1MKCkgKyAiJmd0Ozwvc3Bh
bj4iOworICAgICAgICAgICAgdmFyIGl0ZW0gPSBuZXcgVHJlZUVsZW1lbnQodGl0bGUsIG51bGws
IGZhbHNlKTsKKyAgICAgICAgICAgIGl0ZW0uc2VsZWN0YWJsZSA9IGZhbHNlOworICAgICAgICAg
ICAgaXRlbS5lbGVtZW50Q2xvc2VUYWcgPSB0cnVlOworICAgICAgICAgICAgdGhpcy5hcHBlbmRD
aGlsZChpdGVtKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBvbmV4cGFuZDogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgdGhpcy50cmVlT3V0bGluZS51cGRhdGVUcmVlU2VsZWN0aW9uKCk7
CisKKyAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUucGFuZWwgJiYgdGhpcy5yZXByZXNlbnRl
ZE9iamVjdC5jb250ZW50RG9jdW1lbnQpCisgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnBh
bmVsLnJlZ2lzdGVyTXV0YXRpb25FdmVudExpc3RlbmVycyh0aGlzLnJlcHJlc2VudGVkT2JqZWN0
LmNvbnRlbnREb2N1bWVudC5kZWZhdWx0Vmlldyk7CisgICAgfSwKKworICAgIG9uY29sbGFwc2U6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMudHJlZU91dGxpbmUudXBkYXRlVHJlZVNl
bGVjdGlvbigpOworICAgIH0sCisKKyAgICBvbnJldmVhbDogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgaWYgKHRoaXMubGlzdEl0ZW1FbGVtZW50KQorICAgICAgICAgICAgdGhpcy5saXN0SXRl
bUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChmYWxzZSk7CisgICAgfSwKKworICAgIG9u
c2VsZWN0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLmZvY3Vz
ZWRET01Ob2RlID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKKyAgICAgICAgdGhpcy51cGRhdGVT
ZWxlY3Rpb24oKTsKKyAgICB9LAorCisgICAgb25tb3VzZWRvd246IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2VkaXRpbmcpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgLy8gUHJldmVudCBzZWxlY3RpbmcgdGhlIG5lYXJlc3Qgd29yZCBvbiBkb3VibGUg
Y2xpY2suCisgICAgICAgIGlmIChldmVudC5kZXRhaWwgPj0gMikKKyAgICAgICAgICAgIGV2ZW50
LnByZXZlbnREZWZhdWx0KCk7CisgICAgfSwKKworICAgIG9uZGJsY2xpY2s6IGZ1bmN0aW9uKHRy
ZWVFbGVtZW50LCBldmVudCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9lZGl0aW5nKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0aGlzLl9zdGFydEVkaXRpbmcoZXZlbnQp
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMudHJlZU91dGxpbmUucm9vdERP
TU5vZGUgPSB0aGlzLnBhcmVudC5yZXByZXNlbnRlZE9iamVjdDsKKyAgICAgICAgdGhpcy50cmVl
T3V0bGluZS5mb2N1c2VkRE9NTm9kZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CisKKyAgICAg
ICAgaWYgKHRoaXMuaGFzQ2hpbGRyZW4gJiYgIXRoaXMuZXhwYW5kZWQpCisgICAgICAgICAgICB0
aGlzLmV4cGFuZCgpOworICAgIH0sCisKKyAgICBfc3RhcnRFZGl0aW5nOiBmdW5jdGlvbihldmVu
dCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lLmZvY3VzZWRET01Ob2RlICE9
IHRoaXMucmVwcmVzZW50ZWRPYmplY3QpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
aWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3Qubm9kZVR5cGUgIT0gTm9kZS5FTEVNRU5UX05PREUg
JiYgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5ub2RlVHlwZSAhPSBOb2RlLlRFWFRfTk9ERSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB2YXIgdGV4dE5vZGUgPSBldmVudC50
YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygid2Via2l0LWh0bWwtdGV4dC1ub2Rl
Iik7CisgICAgICAgIGlmICh0ZXh0Tm9kZSkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGFy
dEVkaXRpbmdUZXh0Tm9kZSh0ZXh0Tm9kZSk7CisKKyAgICAgICAgdmFyIGF0dHJpYnV0ZSA9IGV2
ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJ3ZWJraXQtaHRtbC1hdHRy
aWJ1dGUiKTsKKyAgICAgICAgaWYgKGF0dHJpYnV0ZSkKKyAgICAgICAgICAgIHJldHVybiB0aGlz
Ll9zdGFydEVkaXRpbmdBdHRyaWJ1dGUoYXR0cmlidXRlLCBldmVudCk7CisKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0sCisKKyAgICBfc3RhcnRFZGl0aW5nQXR0cmlidXRlOiBmdW5jdGlv
bihhdHRyaWJ1dGUsIGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5pc0Jl
aW5nRWRpdGVkKGF0dHJpYnV0ZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAg
ICB2YXIgYXR0cmlidXRlTmFtZUVsZW1lbnQgPSBhdHRyaWJ1dGUuZ2V0RWxlbWVudHNCeUNsYXNz
TmFtZSgid2Via2l0LWh0bWwtYXR0cmlidXRlLW5hbWUiKVswXTsKKyAgICAgICAgaWYgKCFhdHRy
aWJ1dGVOYW1lRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB2
YXIgYXR0cmlidXRlTmFtZSA9IGF0dHJpYnV0ZU5hbWVFbGVtZW50LmlubmVyVGV4dDsKKworICAg
ICAgICBmdW5jdGlvbiByZW1vdmVaZXJvV2lkdGhTcGFjZVJlY3Vyc2l2ZShub2RlKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHsK
KyAgICAgICAgICAgICAgICBub2RlLm5vZGVWYWx1ZSA9IG5vZGUubm9kZVZhbHVlLnJlcGxhY2Uo
L1x1MjAwQi9nLCAiIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSAhPT0gTm9kZS5FTEVNRU5UX05PREUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBmb3IgKHZhciBjaGlsZCA9IG5v
ZGUuZmlyc3RDaGlsZDsgY2hpbGQ7IGNoaWxkID0gY2hpbGQubmV4dFNpYmxpbmcpCisgICAgICAg
ICAgICAgICAgcmVtb3ZlWmVyb1dpZHRoU3BhY2VSZWN1cnNpdmUoY2hpbGQpOworICAgICAgICB9
CisKKyAgICAgICAgLy8gUmVtb3ZlIHplcm8td2lkdGggc3BhY2VzIHRoYXQgd2VyZSBhZGRlZCBi
eSBub2RlVGl0bGVJbmZvLgorICAgICAgICByZW1vdmVaZXJvV2lkdGhTcGFjZVJlY3Vyc2l2ZShh
dHRyaWJ1dGUpOworCisgICAgICAgIHRoaXMuX2VkaXRpbmcgPSB0cnVlOworCisgICAgICAgIFdl
Ykluc3BlY3Rvci5zdGFydEVkaXRpbmcoYXR0cmlidXRlLCB0aGlzLl9hdHRyaWJ1dGVFZGl0aW5n
Q29tbWl0dGVkLmJpbmQodGhpcyksIHRoaXMuX2VkaXRpbmdDYW5jZWxsZWQuYmluZCh0aGlzKSwg
YXR0cmlidXRlTmFtZSk7CisgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5k
RXh0ZW50KGV2ZW50LnRhcmdldCwgMCwgZXZlbnQudGFyZ2V0LCAxKTsKKworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgX3N0YXJ0RWRpdGluZ1RleHROb2RlOiBmdW5jdGlvbih0
ZXh0Tm9kZSkKKyAgICB7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuaXNCZWluZ0VkaXRlZCh0
ZXh0Tm9kZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICB0aGlzLl9lZGl0
aW5nID0gdHJ1ZTsKKworICAgICAgICBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nKHRleHROb2Rl
LCB0aGlzLl90ZXh0Tm9kZUVkaXRpbmdDb21taXR0ZWQuYmluZCh0aGlzKSwgdGhpcy5fZWRpdGlu
Z0NhbmNlbGxlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNl
dEJhc2VBbmRFeHRlbnQodGV4dE5vZGUsIDAsIHRleHROb2RlLCAxKTsKKworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgX2F0dHJpYnV0ZUVkaXRpbmdDb21taXR0ZWQ6IGZ1bmN0
aW9uKGVsZW1lbnQsIG5ld1RleHQsIG9sZFRleHQsIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAg
ICAgICBkZWxldGUgdGhpcy5fZWRpdGluZzsKKworICAgICAgICB2YXIgcGFyc2VDb250YWluZXJF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICBwYXJzZUNv
bnRhaW5lckVsZW1lbnQuaW5uZXJIVE1MID0gIjxzcGFuICIgKyBuZXdUZXh0ICsgIj48L3NwYW4+
IjsKKyAgICAgICAgdmFyIHBhcnNlRWxlbWVudCA9IHBhcnNlQ29udGFpbmVyRWxlbWVudC5maXJz
dENoaWxkOworICAgICAgICBpZiAoIXBhcnNlRWxlbWVudCB8fCAhcGFyc2VFbGVtZW50Lmhhc0F0
dHJpYnV0ZXMoKSkgeworICAgICAgICAgICAgZWRpdGluZ0NhbmNlbGxlZChlbGVtZW50LCBjb250
ZXh0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBmb3Vu
ZE9yaWdpbmFsQXR0cmlidXRlID0gZmFsc2U7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
cGFyc2VFbGVtZW50LmF0dHJpYnV0ZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBh
dHRyID0gcGFyc2VFbGVtZW50LmF0dHJpYnV0ZXNbaV07CisgICAgICAgICAgICBmb3VuZE9yaWdp
bmFsQXR0cmlidXRlID0gZm91bmRPcmlnaW5hbEF0dHJpYnV0ZSB8fCBhdHRyLm5hbWUgPT09IGF0
dHJpYnV0ZU5hbWU7CisgICAgICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLmluc3BlY3RlZFdp
bmRvdygpLkVsZW1lbnQucHJvdG90eXBlLnNldEF0dHJpYnV0ZS5jYWxsKHRoaXMucmVwcmVzZW50
ZWRPYmplY3QsIGF0dHIubmFtZSwgYXR0ci52YWx1ZSk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoIWZvdW5kT3JpZ2luYWxBdHRyaWJ1dGUpCisgICAgICAgICAgICBJbnNwZWN0b3JDb250cm9s
bGVyLmluc3BlY3RlZFdpbmRvdygpLkVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZS5j
YWxsKHRoaXMucmVwcmVzZW50ZWRPYmplY3QsIGF0dHJpYnV0ZU5hbWUpOworCisgICAgICAgIHRo
aXMuX3VwZGF0ZVRpdGxlKCk7CisgICAgICAgIHRoaXMudHJlZU91dGxpbmUub25Gb2N1c2VkTm9k
ZUNoYW5nZWQodHJ1ZSk7CisgICAgfSwKKworICAgIF90ZXh0Tm9kZUVkaXRpbmdDb21taXR0ZWQ6
IGZ1bmN0aW9uKGVsZW1lbnQsIG5ld1RleHQpCisgICAgeworICAgICAgICBkZWxldGUgdGhpcy5f
ZWRpdGluZzsKKworICAgICAgICB2YXIgdGV4dE5vZGU7CisgICAgICAgIGlmICh0aGlzLnJlcHJl
c2VudGVkT2JqZWN0Lm5vZGVUeXBlID09IE5vZGUuRUxFTUVOVF9OT0RFKSB7CisgICAgICAgICAg
ICAvLyBXZSBvbmx5IHNob3cgdGV4dCBub2RlcyBpbmxpbmUgaW4gZWxlbWVudHMgaWYgdGhlIGVs
ZW1lbnQgb25seQorICAgICAgICAgICAgLy8gaGFzIGEgc2luZ2xlIGNoaWxkLCBhbmQgdGhhdCBj
aGlsZCBpcyBhIHRleHQgbm9kZS4KKyAgICAgICAgICAgIHRleHROb2RlID0gdGhpcy5yZXByZXNl
bnRlZE9iamVjdC5maXJzdENoaWxkOworICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVwcmVzZW50
ZWRPYmplY3Qubm9kZVR5cGUgPT0gTm9kZS5URVhUX05PREUpCisgICAgICAgICAgICB0ZXh0Tm9k
ZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CisKKyAgICAgICAgdGV4dE5vZGUubm9kZVZhbHVl
ID0gbmV3VGV4dDsKKyAgICAgICAgdGhpcy5fdXBkYXRlVGl0bGUoKTsKKyAgICB9LAorCisgICAg
X2VkaXRpbmdDYW5jZWxsZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRleHQpCisgICAgeworICAg
ICAgICBkZWxldGUgdGhpcy5fZWRpdGluZzsKKworICAgICAgICB0aGlzLl91cGRhdGVUaXRsZSgp
OworICAgIH0sCisKKyAgICBfdXBkYXRlVGl0bGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHRoaXMudGl0bGUgPSBub2RlVGl0bGVJbmZvLmNhbGwodGhpcy5yZXByZXNlbnRlZE9iamVjdCwg
dGhpcy5oYXNDaGlsZHJlbiwgV2ViSW5zcGVjdG9yLmxpbmtpZnlVUkwpLnRpdGxlOworICAgICAg
ICBkZWxldGUgdGhpcy5zZWxlY3Rpb25FbGVtZW50OworICAgICAgICB0aGlzLnVwZGF0ZVNlbGVj
dGlvbigpOworICAgICAgICB0aGlzLl9wcmV2ZW50Rm9sbG93aW5nTGlua3NPbkRvdWJsZUNsaWNr
KCk7CisgICAgfSwKK30KKworV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFRyZWVFbGVtZW50LnByb3RvdHlwZTsKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCkluZGV4OiBXZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL2luc3BlY3Rvci5jc3MKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9pbnNwZWN0b3IuY3NzCShyZXZpc2lv
biAzNTgxNykKKysrIFdlYkNvcmUvcGFnZS9pbnNwZWN0b3IvaW5zcGVjdG9yLmNzcwkod29ya2lu
ZyBjb3B5KQpAQCAtOTM2LDcgKzkzNiw3IEBAIGJvZHkuY29uc29sZS12aXNpYmxlICNjb25zb2xl
IHsKICAgICB0ZXh0LWluZGVudDogLTEycHgKIH0KIAotLmVsZW1lbnRzLnBhbmVsIC5vdXRsaW5l
LWRpc2Nsb3N1cmUgbGkgLndlYmtpdC1odG1sLXRhZy5jbG9zZSB7Cisub3V0bGluZS1kaXNjbG9z
dXJlIGxpIC53ZWJraXQtaHRtbC10YWcuY2xvc2UgewogICAgIG1hcmdpbi1sZWZ0OiAtMTJweDsK
IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22851</attachid>
            <date>2008-08-18 08:10:09 -0700</date>
            <delta_ts>2008-08-18 08:34:50 -0700</delta_ts>
            <desc>alt key fixed</desc>
            <filename>patch23.txt</filename>
            <type>text/plain</type>
            <size>60437</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTgxNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDgtMDgtMTggIEtlaXNoaSBIYXR0b3JpICA8Y2FzZXkuaGF0dG9y
aUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkcyBjb25zb2xlLmRpcnhtbCBzdXBwb3J0IHRvIHRoZSBJbnNwZWN0b3IuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE1NgorCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ29uc29sZTo6ZGlyeG1sKToKKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29uc29sZTo6ZGlyeG1sKTogQWRkcyBhIE5vZGVNZXNzYWdlTGV2ZWwgQ29u
c29sZU1lc3NhZ2UuCisgICAgICAgICogcGFnZS9Db25zb2xlLmg6CisgICAgICAgIChXZWJDb3Jl
OjopOiBBZGRlZCBOb2RlTWVzc2FnZUxldmVsLgorICAgICAgICAqIHBhZ2UvQ29uc29sZS5pZGw6
IEFkZGVkIGNvbnNvbGUuZGlyeG1sLgorICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL0NvbnNvbGUu
anM6CisgICAgICAgICogcGFnZS9pbnNwZWN0b3IvRWxlbWVudHNQYW5lbC5qczogTW92ZWQgYSBn
ZW5lcmFsIG1ldGhvZHMgdG8gRWxlbWVudHNUcmVlT3V0bGluZS4gCisgICAgICAgICogcGFnZS9p
bnNwZWN0b3IvRWxlbWVudHNUcmVlT3V0bGluZS5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRWxlbWVudHNUcmVlT3V0bGluZSk6IEEgc3ViY2xhc3Mgb2YgVHJlZU91dGxpbmUgZm9y
IGRpc3BsYXlpbmcgYSBET00gbm9kZSB0cmVlLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1l
bnRzVHJlZUVsZW1lbnQpOiBBIHN1YmNsYXNzIG9mIFRyZWVFbGVtZW50IGZvciBFbGVtZW50c1Ry
ZWVPdXRsaW5lLgorICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL2luc3BlY3Rvci5jc3M6IEZpeGVk
IHRvIGJlIGFwcGxpZWQgdG8gYWxsIEVsZW1lbnRzVHJlZU91dGxpbmVzLgorCiAyMDA4LTA4LTE4
ICBEaXJrIFNjaHVsemUgIDx2YnM4NUBnbXguZGU+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBTZWlkZWwuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwCShy
ZXZpc2lvbiAzNTgxNykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsMTIgQEAgSlNWYWx1ZSogSlNDb25zb2xlOjpk
aXIoRXhlY1N0YXRlKiBleGVjLAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCitKU1Zh
bHVlKiBKU0NvbnNvbGU6OmRpcnhtbChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFy
Z3VtZW50cykKK3sKKyAgICBpbXBsKCktPmRpcnhtbChleGVjLCBhcmd1bWVudHMpOworICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworfQorCiBKU1ZhbHVlKiBKU0NvbnNvbGU6OmFzc2VydENvbmRp
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3VtZW50cykKIHsKICAgICBB
cmdMaXN0IG1lc3NhZ2VQYXJhbWV0ZXJzOwpJbmRleDogV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAkocmV2aXNpb24gMzU4MTcp
CisrKyBXZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw2ICsy
NDUsMjEgQEAgdm9pZCBDb25zb2xlOjpkaXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdAogICAgIHBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VT
b3VyY2UsIE9iamVjdE1lc3NhZ2VMZXZlbCwgZXhlYywgYXJncywgMCwgU3RyaW5nKCkpOwogfQog
Cit2b2lkIENvbnNvbGU6OmRpcnhtbChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFy
Z3MpCit7CisgICAgaWYgKGFyZ3MuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1l
LT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBwYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNl
LCBOb2RlTWVzc2FnZUxldmVsLCBleGVjLCBhcmdzLCAwLCBTdHJpbmcoKSk7Cit9CisKIHZvaWQg
Q29uc29sZTo6YXNzZXJ0Q29uZGl0aW9uKGJvb2wgY29uZGl0aW9uLCBFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgaWYgKGNvbmRpdGlvbikKSW5kZXg6IFdlYkNv
cmUvcGFnZS9Db25zb2xlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0NvbnNvbGUuaAko
cmV2aXNpb24gMzU4MTcpCisrKyBXZWJDb3JlL3BhZ2UvQ29uc29sZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MCw2ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV2FybmluZ01l
c3NhZ2VMZXZlbCwKICAgICAgICAgRXJyb3JNZXNzYWdlTGV2ZWwsCiAgICAgICAgIE9iamVjdE1l
c3NhZ2VMZXZlbCwKKyAgICAgICAgTm9kZU1lc3NhZ2VMZXZlbCwKICAgICAgICAgU3RhcnRHcm91
cE1lc3NhZ2VMZXZlbCwKICAgICAgICAgRW5kR3JvdXBNZXNzYWdlTGV2ZWwKICAgICB9OwpAQCAt
NzgsNiArNzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgbG9nKEtKUzo6
RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpBcmdMaXN0JiBhcmd1bWVudHMpOwogICAgICAgICB2b2lk
IHdhcm4oS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OkFyZ0xpc3QmIGFyZ3VtZW50cyk7CiAg
ICAgICAgIHZvaWQgZGlyKEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpBcmdMaXN0JiBhcmd1
bWVudHMpOworICAgICAgICB2b2lkIGRpcnhtbChLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6
QXJnTGlzdCYgYXJndW1lbnRzKTsKICAgICAgICAgdm9pZCBhc3NlcnRDb25kaXRpb24oYm9vbCBj
b25kaXRpb24sIEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpBcmdMaXN0JiBhcmd1bWVudHMp
OwogICAgICAgICB2b2lkIHByb2ZpbGUoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OkFyZ0xp
c3QmIGFyZ3VtZW50cyk7CiAgICAgICAgIHZvaWQgcHJvZmlsZUVuZChLSlM6OkV4ZWNTdGF0ZSos
IGNvbnN0IEtKUzo6QXJnTGlzdCYgYXJndW1lbnRzKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9Db25z
b2xlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ29uc29sZS5pZGwJKHJldmlzaW9u
IDM1ODE3KQorKysgV2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw2ICszNSw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBbQ3VzdG9tXSB2b2lkIGxvZygp
OwogICAgICAgICBbQ3VzdG9tXSB2b2lkIHdhcm4oKTsKICAgICAgICAgW0N1c3RvbV0gdm9pZCBk
aXIoKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBkaXJ4bWwoKTsKICAgICAgICAgW0N1c3RvbSwg
SW1wbGVtZW50YXRpb25GdW5jdGlvbj1hc3NlcnRDb25kaXRpb25dIHZvaWQgYXNzZXJ0KGluIGJv
b2xlYW4gY29uZGl0aW9uKTsKIAogICAgICAgICBbQ3VzdG9tXSB2b2lkIHByb2ZpbGUoaW4gRE9N
U3RyaW5nIHRpdGxlKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9pbnNwZWN0b3IvQ29uc29sZS5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL0NvbnNvbGUuanMJKHJldmlzaW9u
IDM1ODE3KQorKysgV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9Db25zb2xlLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0zNDcsNiArMzQ3LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGUucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZXM7IFwKICAgICAgICAgICAgICAgICB9
LCBcCiAgICAgICAgICAgICAgICAgZGlyOiBmdW5jdGlvbigpIHsgcmV0dXJuIGNvbnNvbGUuZGly
LmFwcGx5KGNvbnNvbGUsIGFyZ3VtZW50cykgfSwgXAorICAgICAgICAgICAgICAgIGRpcnhtbDog
ZnVuY3Rpb24oKSB7IHJldHVybiBjb25zb2xlLmRpcnhtbC5hcHBseShjb25zb2xlLCBhcmd1bWVu
dHMpIH0sIFwKICAgICAgICAgICAgICAgICBrZXlzOiBmdW5jdGlvbihvKSB7IHZhciBhID0gW107
IGZvciAoayBpbiBvKSBhLnB1c2goayk7IHJldHVybiBhOyB9LCBcCiAgICAgICAgICAgICAgICAg
dmFsdWVzOiBmdW5jdGlvbihvKSB7IHZhciBhID0gW107IGZvciAoayBpbiBvKSBhLnB1c2gob1tr
XSk7IHJldHVybiBhOyB9LCBcCiAgICAgICAgICAgICAgICAgcHJvZmlsZTogZnVuY3Rpb24oKSB7
IHJldHVybiBjb25zb2xlLnByb2ZpbGUuYXBwbHkoY29uc29sZSwgYXJndW1lbnRzKSB9LCBcCkBA
IC01MTksNiArNTIwLDEyIEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZSA9IGZ1bmN0aW9u
KHMKICAgICAgICAgdmFyIHByb3BlcnRpZXNTZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5PYmpl
Y3RQcm9wZXJ0aWVzU2VjdGlvbihhcmd1bWVudHNbNV0sIG51bGwsIG51bGwsIG51bGwsIHRydWUp
OwogICAgICAgICBwcm9wZXJ0aWVzU2VjdGlvbi5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoImNvbnNv
bGUtbWVzc2FnZSIpOwogICAgICAgICB0aGlzLnByb3BlcnRpZXNTZWN0aW9uID0gcHJvcGVydGll
c1NlY3Rpb247CisgICAgfSBlbHNlIGlmICh0aGlzLmxldmVsID09PSBXZWJJbnNwZWN0b3IuQ29u
c29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLk5vZGUpIHsKKyAgICAgICAgdmFyIG5vZGUgPSBhcmd1
bWVudHNbNV07CisgICAgICAgIGlmICghKG5vZGUgaW5zdGFuY2VvZiBJbnNwZWN0b3JDb250cm9s
bGVyLmluc3BlY3RlZFdpbmRvdygpLk5vZGUpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB0aGlzLmVsZW1lbnRzVHJlZU91dGxpbmUgPSBuZXcgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJl
ZU91dGxpbmUoKTsKKyAgICAgICAgdGhpcy5lbGVtZW50c1RyZWVPdXRsaW5lLnJvb3RET01Ob2Rl
ID0gbm9kZTsKICAgICB9CiAKICAgICBpZiAodXJsICYmIGxpbmUgPiAwICYmIHRoaXMuaXNFcnJv
ck9yV2FybmluZygpKSB7CkBAIC01OTEsNyArNTk4LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlLnByb3RvdHlwZSA9IAogCiAgICAgdG9NZXNzYWdlRWxlbWVudDogZnVuY3Rpb24oKQog
ICAgIHsKLSAgICAgICAgaWYgKHRoaXMubGV2ZWwgPT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVz
c2FnZS5NZXNzYWdlTGV2ZWwuT2JqZWN0KQorICAgICAgICBpZiAodGhpcy5wcm9wZXJ0aWVzU2Vj
dGlvbikKICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3BlcnRpZXNTZWN0aW9uLmVsZW1lbnQ7
CiAKICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
QEAgLTYzMyw2ICs2NDAsMTIgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlw
ZSA9IAogICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFzcygiY29uc29sZS1ncm91
cC10aXRsZS1sZXZlbCIpOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKHRoaXMuZWxlbWVudHNU
cmVlT3V0bGluZSkgeworICAgICAgICAgICAgZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJvdXRsaW5l
LWRpc2Nsb3N1cmUiKTsKKyAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVt
ZW50c1RyZWVPdXRsaW5lLmVsZW1lbnQpOworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Cisg
ICAgICAgIH0KKwogICAgICAgICB2YXIgbWVzc2FnZVRleHRFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICBtZXNzYWdlVGV4dEVsZW1lbnQuY2xhc3NOYW1l
ID0gImNvbnNvbGUtbWVzc2FnZS10ZXh0IjsKICAgICAgICAgbWVzc2FnZVRleHRFbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuZm9ybWF0dGVkTWVzc2FnZSk7CkBAIC03MjIsOCArNzM1LDkgQEAgV2Vi
SW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbAogICAgIFdhcm5pbmc6IDIsCiAg
ICAgRXJyb3I6IDMsCiAgICAgT2JqZWN0OiA0LAotICAgIFN0YXJ0R3JvdXA6IDUsCi0gICAgRW5k
R3JvdXA6IDYKKyAgICBOb2RlOiA1LAorICAgIFN0YXJ0R3JvdXA6IDYsCisgICAgRW5kR3JvdXA6
IDcKIH0KIAogV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kID0gZnVuY3Rpb24oY29tbWFuZCwg
cmVzdWx0LCBmb3JtYXR0ZWRSZXN1bHRFbGVtZW50LCBsZXZlbCkKSW5kZXg6IFdlYkNvcmUvcGFn
ZS9pbnNwZWN0b3IvRWxlbWVudHNQYW5lbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
aW5zcGVjdG9yL0VsZW1lbnRzUGFuZWwuanMJKHJldmlzaW9uIDM1ODE3KQorKysgV2ViQ29yZS9w
YWdlL2luc3BlY3Rvci9FbGVtZW50c1BhbmVsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2MyAr
MjYsODEgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwg
PSBmdW5jdGlvbigpCi17Ci0gICAgV2ViSW5zcGVjdG9yLlBhbmVsLmNhbGwodGhpcyk7CisgV2Vi
SW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwgPSBmdW5jdGlvbigpCisgeworICAgICBXZWJJbnNwZWN0
b3IuUGFuZWwuY2FsbCh0aGlzKTsKKyAgICAgCisgICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNs
YXNzKCJlbGVtZW50cyIpOworICAgICAKKyAgICAgdGhpcy5jb250ZW50RWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmlkID0g
ImVsZW1lbnRzLWNvbnRlbnQiOworICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmNsYXNzTmFtZSA9
ICJvdXRsaW5lLWRpc2Nsb3N1cmUiOworICAgICAKKyAgICAgdGhpcy50cmVlT3V0bGluZSA9IG5l
dyBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlT3V0bGluZTsKKyAgICAgdGhpcy50cmVlT3V0bGlu
ZS5wYW5lbCA9IHRoaXM7CisgICAgIHRoaXMudHJlZU91dGxpbmUuaW5jbHVkZVJvb3RET01Ob2Rl
ID0gZmFsc2U7CisgICAgIHRoaXMudHJlZU91dGxpbmUuX3VwZGF0ZUhvdmVySGlnaGxpZ2h0ID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgICBpZiAoIl91cGRhdGVIb3ZlckhpZ2hsaWdodFRpbWVvdXQi
IGluIHRoaXMpIHsKKyAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fdXBkYXRlSG92ZXJI
aWdobGlnaHRUaW1lb3V0KTsKKyAgICAgICAgICAgICBkZWxldGUgdGhpcy5fdXBkYXRlSG92ZXJI
aWdobGlnaHRUaW1lb3V0OworICAgICAgICAgfQorCisgICAgICAgICBpZiAodGhpcy5faG92ZXJl
ZERPTU5vZGUgJiYgdGhpcy5wYW5lbC52aXNpYmxlICYmICh0aGlzLnBhbmVsLl9hbHRLZXlEb3du
IHx8IHRoaXMucGFuZWwuZm9yY2VIb3ZlckhpZ2hsaWdodCkpCisgICAgICAgICAgICAgSW5zcGVj
dG9yQ29udHJvbGxlci5oaWdobGlnaHRET01Ob2RlKHRoaXMuX2hvdmVyZWRET01Ob2RlKTsKKyAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLmhpZGVET01Ob2Rl
SGlnaGxpZ2h0KCk7CisgICAgIH0sCisgICAgIHRoaXMudHJlZU91dGxpbmUub25Gb2N1c2VkTm9k
ZUNoYW5nZWQgPSBmdW5jdGlvbihmb3JjZVVwZGF0ZSkgeworICAgICAgICAgdGhpcy5wYW5lbC51
cGRhdGVCcmVhZGNydW1iKGZvcmNlVXBkYXRlKTsKKworICAgICAgICAgZm9yICh2YXIgcGFuZSBp
biB0aGlzLnBhbmVsLnNpZGViYXJQYW5lcykKKyAgICAgICAgICAgIHRoaXMucGFuZWwuc2lkZWJh
clBhbmVzW3BhbmVdLm5lZWRzVXBkYXRlID0gdHJ1ZTsKKworICAgICAgICAgdGhpcy5wYW5lbC51
cGRhdGVTdHlsZXModHJ1ZSk7CisgICAgICAgICB0aGlzLnBhbmVsLnVwZGF0ZU1ldHJpY3MoKTsK
KyAgICAgICAgIHRoaXMucGFuZWwudXBkYXRlUHJvcGVydGllcygpOworICAgICB9OworICAgICB0
aGlzLnRyZWVPdXRsaW5lLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhp
cy5fb25tb3VzZW1vdmUuYmluZCh0aGlzKSwgZmFsc2UpOworICAgICB0aGlzLnRyZWVPdXRsaW5l
LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCB0aGlzLl9vbm1vdXNlb3V0LmJp
bmQodGhpcyksIGZhbHNlKTsKKyAgICAgCisgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy50cmVlT3V0bGluZS5lbGVtZW50KTsKKyAgICAgCisgICAgIHRoaXMuY3J1bWJz
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICB0aGlzLmNydW1i
c0VsZW1lbnQuY2xhc3NOYW1lID0gImNydW1icyI7CisgICAgIAorICAgICB0aGlzLnNpZGViYXJQ
YW5lcyA9IHt9OworICAgICB0aGlzLnNpZGViYXJQYW5lcy5zdHlsZXMgPSBuZXcgV2ViSW5zcGVj
dG9yLlN0eWxlc1NpZGViYXJQYW5lKCk7CisgICAgIHRoaXMuc2lkZWJhclBhbmVzLm1ldHJpY3Mg
PSBuZXcgV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZSgpOworICAgICB0aGlzLnNpZGVi
YXJQYW5lcy5wcm9wZXJ0aWVzID0gbmV3IFdlYkluc3BlY3Rvci5Qcm9wZXJ0aWVzU2lkZWJhclBh
bmUoKTsKKyAgICAgCisgICAgIHRoaXMuc2lkZWJhclBhbmVzLnN0eWxlcy5vbmV4cGFuZCA9IHRo
aXMudXBkYXRlU3R5bGVzLmJpbmQodGhpcyk7CisgICAgIHRoaXMuc2lkZWJhclBhbmVzLm1ldHJp
Y3Mub25leHBhbmQgPSB0aGlzLnVwZGF0ZU1ldHJpY3MuYmluZCh0aGlzKTsKKyAgICAgdGhpcy5z
aWRlYmFyUGFuZXMucHJvcGVydGllcy5vbmV4cGFuZCA9IHRoaXMudXBkYXRlUHJvcGVydGllcy5i
aW5kKHRoaXMpOworCisgICAgIHRoaXMuc2lkZWJhclBhbmVzLnN0eWxlcy5leHBhbmRlZCA9IHRy
dWU7CisKKyAgICAgdGhpcy5zaWRlYmFyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworICAgICB0aGlzLnNpZGViYXJFbGVtZW50LmlkID0gImVsZW1lbnRzLXNpZGViYXIi
OworCisgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5zaWRlYmFyUGFu
ZXMuc3R5bGVzLmVsZW1lbnQpOworICAgICB0aGlzLnNpZGViYXJFbGVtZW50LmFwcGVuZENoaWxk
KHRoaXMuc2lkZWJhclBhbmVzLm1ldHJpY3MuZWxlbWVudCk7CisgICAgIHRoaXMuc2lkZWJhckVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5zaWRlYmFyUGFuZXMucHJvcGVydGllcy5lbGVtZW50KTsK
KworICAgICB0aGlzLnNpZGViYXJSZXNpemVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CisgICAgIHRoaXMuc2lkZWJhclJlc2l6ZUVsZW1lbnQuY2xhc3NOYW1lID0gInNp
ZGViYXItcmVzaXplci12ZXJ0aWNhbCI7CisgICAgIHRoaXMuc2lkZWJhclJlc2l6ZUVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5yaWdodFNpZGViYXJSZXNpemVyRHJh
Z1N0YXJ0LmJpbmQodGhpcyksIGZhbHNlKTsKKworICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5jb250ZW50RWxlbWVudCk7CisgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLnNpZGViYXJFbGVtZW50KTsKKyAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMu
c2lkZWJhclJlc2l6ZUVsZW1lbnQpOworCisgICAgIHRoaXMuX211dGF0aW9uTW9uaXRvcmVkV2lu
ZG93cyA9IFtdOworICAgICB0aGlzLl9ub2RlSW5zZXJ0ZWRFdmVudExpc3RlbmVyID0gSW5zcGVj
dG9yQ29udHJvbGxlci53cmFwQ2FsbGJhY2sodGhpcy5fbm9kZUluc2VydGVkLmJpbmQodGhpcykp
OworICAgICB0aGlzLl9ub2RlUmVtb3ZlZEV2ZW50TGlzdGVuZXIgPSBJbnNwZWN0b3JDb250cm9s
bGVyLndyYXBDYWxsYmFjayh0aGlzLl9ub2RlUmVtb3ZlZC5iaW5kKHRoaXMpKTsKKyAgICAgdGhp
cy5fY29udGVudExvYWRlZEV2ZW50TGlzdGVuZXIgPSBJbnNwZWN0b3JDb250cm9sbGVyLndyYXBD
YWxsYmFjayh0aGlzLl9jb250ZW50TG9hZGVkLmJpbmQodGhpcykpOwogCi0gICAgdGhpcy5lbGVt
ZW50LmFkZFN0eWxlQ2xhc3MoImVsZW1lbnRzIik7Ci0KLSAgICB0aGlzLmNvbnRlbnRFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5jb250ZW50RWxlbWVu
dC5pZCA9ICJlbGVtZW50cy1jb250ZW50IjsKLSAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmNsYXNz
TmFtZSA9ICJvdXRsaW5lLWRpc2Nsb3N1cmUiOwotCi0gICAgdGhpcy50cmVlTGlzdEVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOwotICAgIHRoaXMudHJlZUxpc3RFbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX29ubW91c2Vkb3duLmJpbmQodGhp
cyksIGZhbHNlKTsKLSAgICB0aGlzLnRyZWVMaXN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJk
YmxjbGljayIsIHRoaXMuX29uZGJsY2xpY2suYmluZCh0aGlzKSwgZmFsc2UpOwotICAgIHRoaXMu
dHJlZUxpc3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX29ubW91
c2Vtb3ZlLmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICB0aGlzLnRyZWVMaXN0RWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJtb3VzZW91dCIsIHRoaXMuX29ubW91c2VvdXQuYmluZCh0aGlzKSwgZmFs
c2UpOwotCi0gICAgdGhpcy50cmVlT3V0bGluZSA9IG5ldyBUcmVlT3V0bGluZSh0aGlzLnRyZWVM
aXN0RWxlbWVudCk7Ci0gICAgdGhpcy50cmVlT3V0bGluZS5wYW5lbCA9IHRoaXM7Ci0KLSAgICB0
aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMudHJlZUxpc3RFbGVtZW50KTsKLQot
ICAgIHRoaXMuY3J1bWJzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwot
ICAgIHRoaXMuY3J1bWJzRWxlbWVudC5jbGFzc05hbWUgPSAiY3J1bWJzIjsKLQotICAgIHRoaXMu
c2lkZWJhclBhbmVzID0ge307Ci0gICAgdGhpcy5zaWRlYmFyUGFuZXMuc3R5bGVzID0gbmV3IFdl
Ykluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZSgpOwotICAgIHRoaXMuc2lkZWJhclBhbmVzLm1l
dHJpY3MgPSBuZXcgV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZSgpOwotICAgIHRoaXMu
c2lkZWJhclBhbmVzLnByb3BlcnRpZXMgPSBuZXcgV2ViSW5zcGVjdG9yLlByb3BlcnRpZXNTaWRl
YmFyUGFuZSgpOwotCi0gICAgdGhpcy5zaWRlYmFyUGFuZXMuc3R5bGVzLm9uZXhwYW5kID0gdGhp
cy51cGRhdGVTdHlsZXMuYmluZCh0aGlzKTsKLSAgICB0aGlzLnNpZGViYXJQYW5lcy5tZXRyaWNz
Lm9uZXhwYW5kID0gdGhpcy51cGRhdGVNZXRyaWNzLmJpbmQodGhpcyk7Ci0gICAgdGhpcy5zaWRl
YmFyUGFuZXMucHJvcGVydGllcy5vbmV4cGFuZCA9IHRoaXMudXBkYXRlUHJvcGVydGllcy5iaW5k
KHRoaXMpOwotCi0gICAgdGhpcy5zaWRlYmFyUGFuZXMuc3R5bGVzLmV4cGFuZGVkID0gdHJ1ZTsK
LQotICAgIHRoaXMuc2lkZWJhckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKLSAgICB0aGlzLnNpZGViYXJFbGVtZW50LmlkID0gImVsZW1lbnRzLXNpZGViYXIiOwotCi0g
ICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnNpZGViYXJQYW5lcy5zdHls
ZXMuZWxlbWVudCk7Ci0gICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnNp
ZGViYXJQYW5lcy5tZXRyaWNzLmVsZW1lbnQpOwotICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5zaWRlYmFyUGFuZXMucHJvcGVydGllcy5lbGVtZW50KTsKLQotICAgIHRo
aXMuc2lkZWJhclJlc2l6ZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
LSAgICB0aGlzLnNpZGViYXJSZXNpemVFbGVtZW50LmNsYXNzTmFtZSA9ICJzaWRlYmFyLXJlc2l6
ZXItdmVydGljYWwiOwotICAgIHRoaXMuc2lkZWJhclJlc2l6ZUVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2Vkb3duIiwgdGhpcy5yaWdodFNpZGViYXJSZXNpemVyRHJhZ1N0YXJ0LmJpbmQo
dGhpcyksIGZhbHNlKTsKLQotICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNvbnRl
bnRFbGVtZW50KTsKLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5zaWRlYmFyRWxl
bWVudCk7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuc2lkZWJhclJlc2l6ZUVs
ZW1lbnQpOwotCi0gICAgdGhpcy5fbXV0YXRpb25Nb25pdG9yZWRXaW5kb3dzID0gW107Ci0gICAg
dGhpcy5fbm9kZUluc2VydGVkRXZlbnRMaXN0ZW5lciA9IEluc3BlY3RvckNvbnRyb2xsZXIud3Jh
cENhbGxiYWNrKHRoaXMuX25vZGVJbnNlcnRlZC5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLl9ub2Rl
UmVtb3ZlZEV2ZW50TGlzdGVuZXIgPSBJbnNwZWN0b3JDb250cm9sbGVyLndyYXBDYWxsYmFjayh0
aGlzLl9ub2RlUmVtb3ZlZC5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLl9jb250ZW50TG9hZGVkRXZl
bnRMaXN0ZW5lciA9IEluc3BlY3RvckNvbnRyb2xsZXIud3JhcENhbGxiYWNrKHRoaXMuX2NvbnRl
bnRMb2FkZWQuYmluZCh0aGlzKSk7Ci0KLSAgICB0aGlzLnJlc2V0KCk7Ci19CisgICAgIHRoaXMu
cmVzZXQoKTsKKyB9CiAKIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICB0b29sYmFySXRlbUNsYXNzOiAiZWxlbWVudHMiLApAQCAtMTA3LDcgKzEyNSw3IEBAIFdl
Ykluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVj
dG9yLlBhbmVsLnByb3RvdHlwZS5zaG93LmNhbGwodGhpcyk7CiAgICAgICAgIHRoaXMuc2lkZWJh
clJlc2l6ZUVsZW1lbnQuc3R5bGUucmlnaHQgPSAodGhpcy5zaWRlYmFyRWxlbWVudC5vZmZzZXRX
aWR0aCAtIDMpICsgInB4IjsKICAgICAgICAgdGhpcy51cGRhdGVCcmVhZGNydW1iKCk7Ci0gICAg
ICAgIHRoaXMudXBkYXRlVHJlZVNlbGVjdGlvbigpOworICAgICAgICB0aGlzLnRyZWVPdXRsaW5l
LnVwZGF0ZVRyZWVTZWxlY3Rpb24oKTsKICAgICAgICAgaWYgKHRoaXMucmVjZW50bHlNb2RpZmll
ZE5vZGVzLmxlbmd0aCkKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU1vZGlmaWVkTm9kZXMoKTsK
ICAgICB9LApAQCAtMTE2LDIzICsxMzQsMTkgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwu
cHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlw
ZS5oaWRlLmNhbGwodGhpcyk7CiAgICAgICAgIHRoaXMuYWx0S2V5RG93biA9IGZhbHNlOwotICAg
ICAgICB0aGlzLmhvdmVyZWRET01Ob2RlID0gbnVsbDsKKyAgICAgICAgdGhpcy50cmVlT3V0bGlu
ZS5ob3ZlcmVkRE9NTm9kZSA9IG51bGw7CiAgICAgICAgIHRoaXMuZm9yY2VIb3ZlckhpZ2hsaWdo
dCA9IGZhbHNlOwogICAgIH0sCiAKICAgICByZXNpemU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAg
ICAgIHRoaXMudXBkYXRlVHJlZVNlbGVjdGlvbigpOworICAgICAgICB0aGlzLnRyZWVPdXRsaW5l
LnVwZGF0ZVRyZWVTZWxlY3Rpb24oKTsKICAgICAgICAgdGhpcy51cGRhdGVCcmVhZGNydW1iU2l6
ZXMoKTsKICAgICB9LAogCiAgICAgcmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRo
aXMucm9vdERPTU5vZGUgPSBudWxsOwotICAgICAgICB0aGlzLmZvY3VzZWRET01Ob2RlID0gbnVs
bDsKLQogICAgICAgICB0aGlzLmFsdEtleURvd24gPSBmYWxzZTsKLSAgICAgICAgdGhpcy5ob3Zl
cmVkRE9NTm9kZSA9IG51bGw7CiAgICAgICAgIHRoaXMuZm9yY2VIb3ZlckhpZ2hsaWdodCA9IGZh
bHNlOwogCiAgICAgICAgIHRoaXMucmVjZW50bHlNb2RpZmllZE5vZGVzID0gW107CkBAIC0xNjMs
MTEgKzE3NywxMSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMucmVnaXN0ZXJNdXRhdGlvbkV2ZW50TGlzdGVuZXJzKGluc3BlY3RlZFdpbmRv
dyk7CiAKICAgICAgICAgdmFyIGluc3BlY3RlZFJvb3REb2N1bWVudCA9IGluc3BlY3RlZFdpbmRv
dy5kb2N1bWVudDsKLSAgICAgICAgdGhpcy5yb290RE9NTm9kZSA9IGluc3BlY3RlZFJvb3REb2N1
bWVudDsKKyAgICAgICAgdGhpcy50cmVlT3V0bGluZS5yb290RE9NTm9kZSA9IGluc3BlY3RlZFJv
b3REb2N1bWVudDsKIAogICAgICAgICB2YXIgY2FuaWRhdGVGb2N1c05vZGUgPSBpbnNwZWN0ZWRS
b290RG9jdW1lbnQuYm9keSB8fCBpbnNwZWN0ZWRSb290RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
OwogICAgICAgICBpZiAoY2FuaWRhdGVGb2N1c05vZGUpIHsKLSAgICAgICAgICAgIHRoaXMuZm9j
dXNlZERPTU5vZGUgPSBjYW5pZGF0ZUZvY3VzTm9kZTsKKyAgICAgICAgICAgIHRoaXMudHJlZU91
dGxpbmUuZm9jdXNlZERPTU5vZGUgPSBjYW5pZGF0ZUZvY3VzTm9kZTsKICAgICAgICAgICAgIGlm
ICh0aGlzLnRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQpCiAgICAgICAgICAgICAgICAg
dGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50LmV4cGFuZCgpOwogICAgICAgICB9
CkBAIC0yMjYsNzEgKzI0MCw2IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5fbXV0YXRpb25Nb25pdG9yZWRXaW5kb3dzID0gW107CiAgICAg
fSwKIAotICAgIHVwZGF0ZVRyZWVTZWxlY3Rpb246IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IGlmICghdGhpcy50cmVlT3V0bGluZSB8fCAhdGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVF
bGVtZW50KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMu
dHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudDsKLSAgICAgICAgZWxlbWVudC51cGRhdGVT
ZWxlY3Rpb24oKTsKLSAgICB9LAotCi0gICAgZ2V0IHJvb3RET01Ob2RlKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLl9yb290RE9NTm9kZTsKLSAgICB9LAotCi0gICAgc2V0IHJvb3RET01O
b2RlKHgpCi0gICAgewotICAgICAgICBpZiAob2JqZWN0c0FyZVNhbWUodGhpcy5fcm9vdERPTU5v
ZGUsIHgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX3Jvb3RET01Ob2Rl
ID0geDsKLQotICAgICAgICB0aGlzLnVwZGF0ZUJyZWFkY3J1bWIoKTsKLSAgICAgICAgdGhpcy51
cGRhdGVUcmVlT3V0bGluZSgpOwotICAgIH0sCi0KLSAgICBnZXQgZm9jdXNlZERPTU5vZGUoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2ZvY3VzZWRET01Ob2RlOwotICAgIH0sCi0KLSAg
ICBzZXQgZm9jdXNlZERPTU5vZGUoeCkKLSAgICB7Ci0gICAgICAgIGlmIChvYmplY3RzQXJlU2Ft
ZSh0aGlzLl9mb2N1c2VkRE9NTm9kZSwgeCkpIHsKLSAgICAgICAgICAgIHZhciBub2RlSXRlbSA9
IHRoaXMucmV2ZWFsTm9kZSh4KTsKLSAgICAgICAgICAgIGlmIChub2RlSXRlbSkKLSAgICAgICAg
ICAgICAgICBub2RlSXRlbS5zZWxlY3QoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIHRoaXMuX2ZvY3VzZWRET01Ob2RlID0geDsKLQotICAgICAgICB0aGlzLl9m
b2N1c2VkTm9kZUNoYW5nZWQoKTsKLQotICAgICAgICB2YXIgbm9kZUl0ZW0gPSB0aGlzLnJldmVh
bE5vZGUoeCk7Ci0gICAgICAgIGlmIChub2RlSXRlbSkKLSAgICAgICAgICAgIG5vZGVJdGVtLnNl
bGVjdCgpOwotICAgIH0sCi0KLSAgICBnZXQgaG92ZXJlZERPTU5vZGUoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX2hvdmVyZWRET01Ob2RlOwotICAgIH0sCi0KLSAgICBzZXQgaG92ZXJl
ZERPTU5vZGUoeCkKLSAgICB7Ci0gICAgICAgIGlmIChvYmplY3RzQXJlU2FtZSh0aGlzLl9ob3Zl
cmVkRE9NTm9kZSwgeCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5faG92
ZXJlZERPTU5vZGUgPSB4OwotCi0gICAgICAgIGlmICh0aGlzLl9ob3ZlcmVkRE9NTm9kZSkKLSAg
ICAgICAgICAgIHRoaXMuX3VwZGF0ZUhvdmVySGlnaGxpZ2h0U29vbigpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB0aGlzLl91cGRhdGVIb3ZlckhpZ2hsaWdodCgpOwotICAgIH0sCi0KICAg
ICBnZXQgZm9yY2VIb3ZlckhpZ2hsaWdodCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
Zm9yY2VIb3ZlckhpZ2hsaWdodDsKQEAgLTMwNCw5ICsyNTMsOSBAQCBXZWJJbnNwZWN0b3IuRWxl
bWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2ZvcmNlSG92ZXJIaWdobGln
aHQgPSB4OwogCiAgICAgICAgIGlmICh0aGlzLl9mb3JjZUhvdmVySGlnaGxpZ2h0KQotICAgICAg
ICAgICAgdGhpcy5fdXBkYXRlSG92ZXJIaWdobGlnaHRTb29uKCk7CisgICAgICAgICAgICB0aGlz
LnRyZWVPdXRsaW5lLl91cGRhdGVIb3ZlckhpZ2hsaWdodFNvb24oKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgdGhpcy5fdXBkYXRlSG92ZXJIaWdobGlnaHQoKTsKKyAgICAgICAgICAgIHRo
aXMudHJlZU91dGxpbmUuX3VwZGF0ZUhvdmVySGlnaGxpZ2h0KCk7CiAgICAgfSwKIAogICAgIGdl
dCBhbHRLZXlEb3duKCkKQEAgLTMyMiw5ICsyNzEsOSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQ
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2FsdEtleURvd24gPSB4OwogCiAgICAg
ICAgIGlmICh0aGlzLl9hbHRLZXlEb3duKQotICAgICAgICAgICAgdGhpcy5fdXBkYXRlSG92ZXJI
aWdobGlnaHRTb29uKCk7CisgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLl91cGRhdGVIb3Zl
ckhpZ2hsaWdodFNvb24oKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5fdXBkYXRl
SG92ZXJIaWdobGlnaHQoKTsKKyAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuX3VwZGF0ZUhv
dmVySGlnaGxpZ2h0KCk7CiAgICAgfSwKIAogICAgIF9jb250ZW50TG9hZGVkOiBmdW5jdGlvbihl
dmVudCkKQEAgLTM3OCw3ICszMjcsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgdXBkYXRlZFBhcmVudFRyZWVFbGVtZW50cy5wdXNo
KHBhcmVudE5vZGVJdGVtKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCF1cGRh
dGVCcmVhZGNydW1icyAmJiAob2JqZWN0c0FyZVNhbWUodGhpcy5mb2N1c2VkRE9NTm9kZSwgcGFy
ZW50KSB8fCB0aGlzLl9pc0FuY2VzdG9ySW5jbHVkaW5nUGFyZW50RnJhbWVzKHRoaXMuZm9jdXNl
ZERPTU5vZGUsIHBhcmVudCkpKQorICAgICAgICAgICAgaWYgKCF1cGRhdGVCcmVhZGNydW1icyAm
JiAob2JqZWN0c0FyZVNhbWUodGhpcy5mb2N1c2VkRE9NTm9kZSwgcGFyZW50KSB8fCB0aGlzLnRy
ZWVPdXRsaW5lLl9pc0FuY2VzdG9ySW5jbHVkaW5nUGFyZW50RnJhbWVzKHRoaXMuZm9jdXNlZERP
TU5vZGUsIHBhcmVudCkpKQogICAgICAgICAgICAgICAgIHVwZGF0ZUJyZWFkY3J1bWJzID0gdHJ1
ZTsKICAgICAgICAgfQogCkBAIC0zOTEsNjUgKzM0MCw2IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50
c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMudXBkYXRlQnJlYWRjcnVtYih0
cnVlKTsKICAgICB9LAogCi0gICAgX3VwZGF0ZUhvdmVySGlnaGxpZ2h0U29vbjogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgaWYgKCJfdXBkYXRlSG92ZXJIaWdobGlnaHRUaW1lb3V0IiBpbiB0
aGlzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLl91cGRhdGVIb3ZlckhpZ2hs
aWdodFRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuX3VwZGF0ZUhvdmVySGlnaGxpZ2h0LmJpbmQo
dGhpcyksIDApOwotICAgIH0sCi0KLSAgICBfdXBkYXRlSG92ZXJIaWdobGlnaHQ6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIGlmICgiX3VwZGF0ZUhvdmVySGlnaGxpZ2h0VGltZW91dCIgaW4g
dGhpcykgewotICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZUhvdmVySGlnaGxp
Z2h0VGltZW91dCk7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fdXBkYXRlSG92ZXJIaWdobGln
aHRUaW1lb3V0OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRoaXMuX2hvdmVyZWRET01Ob2Rl
ICYmIHRoaXMudmlzaWJsZSAmJiAodGhpcy5fYWx0S2V5RG93biB8fCB0aGlzLmZvcmNlSG92ZXJI
aWdobGlnaHQpKQotICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5oaWdobGlnaHRET01O
b2RlKHRoaXMuX2hvdmVyZWRET01Ob2RlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgSW5z
cGVjdG9yQ29udHJvbGxlci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwotICAgIH0sCi0KLSAgICBf
Zm9jdXNlZE5vZGVDaGFuZ2VkOiBmdW5jdGlvbihmb3JjZVVwZGF0ZSkKLSAgICB7Ci0gICAgICAg
IHRoaXMudXBkYXRlQnJlYWRjcnVtYihmb3JjZVVwZGF0ZSk7Ci0KLSAgICAgICAgZm9yICh2YXIg
cGFuZSBpbiB0aGlzLnNpZGViYXJQYW5lcykKLSAgICAgICAgICAgIHRoaXMuc2lkZWJhclBhbmVz
W3BhbmVdLm5lZWRzVXBkYXRlID0gdHJ1ZTsKLQotICAgICAgICB0aGlzLnVwZGF0ZVN0eWxlcyh0
cnVlKTsKLSAgICAgICAgdGhpcy51cGRhdGVNZXRyaWNzKCk7Ci0gICAgICAgIHRoaXMudXBkYXRl
UHJvcGVydGllcygpOwotICAgIH0sCi0KLSAgICByZXZlYWxOb2RlOiBmdW5jdGlvbihub2RlKQot
ICAgIHsKLSAgICAgICAgdmFyIG5vZGVJdGVtID0gdGhpcy50cmVlT3V0bGluZS5maW5kVHJlZUVs
ZW1lbnQobm9kZSwgdGhpcy5faXNBbmNlc3RvckluY2x1ZGluZ1BhcmVudEZyYW1lcy5iaW5kKHRo
aXMpLCB0aGlzLl9wYXJlbnROb2RlT3JGcmFtZUVsZW1lbnQuYmluZCh0aGlzKSwgb2JqZWN0c0Fy
ZVNhbWUpOwotICAgICAgICBpZiAoIW5vZGVJdGVtKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIG5vZGVJdGVtLnJldmVhbCgpOwotICAgICAgICByZXR1cm4gbm9kZUl0ZW07Ci0gICAg
fSwKLQotICAgIHVwZGF0ZVRyZWVPdXRsaW5lOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0
aGlzLnRyZWVPdXRsaW5lLnJlbW92ZUNoaWxkcmVuUmVjdXJzaXZlKCk7Ci0KLSAgICAgICAgaWYg
KCF0aGlzLnJvb3RET01Ob2RlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIC8vIEZJ
WE1FOiB0aGlzIGNvdWxkIHVzZSBmaW5kVHJlZUVsZW1lbnQgdG8gcmV1c2UgYSB0cmVlIGVsZW1l
bnQgaWYgaXQgYWxyZWFkeSBleGlzdHMKLSAgICAgICAgdmFyIG5vZGUgPSAoUHJlZmVyZW5jZXMu
aWdub3JlV2hpdGVzcGFjZSA/IGZpcnN0Q2hpbGRTa2lwcGluZ1doaXRlc3BhY2UuY2FsbCh0aGlz
LnJvb3RET01Ob2RlKSA6IHRoaXMucm9vdERPTU5vZGUuZmlyc3RDaGlsZCk7Ci0gICAgICAgIHdo
aWxlIChub2RlKSB7Ci0gICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLmFwcGVuZENoaWxkKG5l
dyBXZWJJbnNwZWN0b3IuRE9NTm9kZVRyZWVFbGVtZW50KG5vZGUpKTsKLSAgICAgICAgICAgIG5v
ZGUgPSBQcmVmZXJlbmNlcy5pZ25vcmVXaGl0ZXNwYWNlID8gbmV4dFNpYmxpbmdTa2lwcGluZ1do
aXRlc3BhY2UuY2FsbChub2RlKSA6IG5vZGUubmV4dFNpYmxpbmc7Ci0gICAgICAgIH0KLQotICAg
ICAgICB0aGlzLnVwZGF0ZVRyZWVTZWxlY3Rpb24oKTsKLSAgICB9LAotCiAgICAgdXBkYXRlQnJl
YWRjcnVtYjogZnVuY3Rpb24oZm9yY2VVcGRhdGUpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMu
dmlzaWJsZSkKQEAgLTQ2MSw3ICszNTEsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBmb3VuZFJvb3QgPSBmYWxzZTsKICAgICAgICAgdmFy
IGNydW1iID0gY3J1bWJzLmZpcnN0Q2hpbGQ7CiAgICAgICAgIHdoaWxlIChjcnVtYikgewotICAg
ICAgICAgICAgaWYgKG9iamVjdHNBcmVTYW1lKGNydW1iLnJlcHJlc2VudGVkT2JqZWN0LCB0aGlz
LnJvb3RET01Ob2RlKSkKKyAgICAgICAgICAgIGlmIChvYmplY3RzQXJlU2FtZShjcnVtYi5yZXBy
ZXNlbnRlZE9iamVjdCwgdGhpcy50cmVlT3V0bGluZS5yb290RE9NTm9kZSkpCiAgICAgICAgICAg
ICAgICAgZm91bmRSb290ID0gdHJ1ZTsKIAogICAgICAgICAgICAgaWYgKGZvdW5kUm9vdCkKQEAg
LTQ2OSw3ICszNTksNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY3J1bWIucmVtb3ZlU3R5bGVDbGFz
cygiZGltbWVkIik7CiAKLSAgICAgICAgICAgIGlmIChvYmplY3RzQXJlU2FtZShjcnVtYi5yZXBy
ZXNlbnRlZE9iamVjdCwgdGhpcy5mb2N1c2VkRE9NTm9kZSkpIHsKKyAgICAgICAgICAgIGlmIChv
YmplY3RzQXJlU2FtZShjcnVtYi5yZXByZXNlbnRlZE9iamVjdCwgdGhpcy50cmVlT3V0bGluZS5m
b2N1c2VkRE9NTm9kZSkpIHsKICAgICAgICAgICAgICAgICBjcnVtYi5hZGRTdHlsZUNsYXNzKCJz
ZWxlY3RlZCIpOwogICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOwogICAgICAgICAgICAg
fSBlbHNlIHsKQEAgLTUxMiw4ICs0MDIsOCBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgLy8gQ2xpY2tpbmcgYSBkaW1tZWQgY3J1bWIg
b3IgZG91YmxlIGNsaWNraW5nIChldmVudC5kZXRhaWwgPj0gMikKICAgICAgICAgICAgICAgICAv
LyB3aWxsIGNoYW5nZSB0aGUgcm9vdCBub2RlIGluIGFkZGl0aW9uIHRvIHRoZSBmb2N1c2VkIG5v
ZGUuCiAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRldGFpbCA+PSAyIHx8IGNydW1iLmhhc1N0
eWxlQ2xhc3MoImRpbW1lZCIpKQotICAgICAgICAgICAgICAgICAgICBwYW5lbC5yb290RE9NTm9k
ZSA9IGNydW1iLnJlcHJlc2VudGVkT2JqZWN0LnBhcmVudE5vZGU7Ci0gICAgICAgICAgICAgICAg
cGFuZWwuZm9jdXNlZERPTU5vZGUgPSBjcnVtYi5yZXByZXNlbnRlZE9iamVjdDsKKyAgICAgICAg
ICAgICAgICAgICAgcGFuZWwudHJlZU91dGxpbmUucm9vdERPTU5vZGUgPSBjcnVtYi5yZXByZXNl
bnRlZE9iamVjdC5wYXJlbnROb2RlOworICAgICAgICAgICAgICAgIHBhbmVsLnRyZWVPdXRsaW5l
LmZvY3VzZWRET01Ob2RlID0gY3J1bWIucmVwcmVzZW50ZWRPYmplY3Q7CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jdXJyZW50Rm9jdXNFbGVtZW50ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoIm1haW4tcGFuZWxzIik7CkBAIC01MjUsNyArNDE1LDcgQEAgV2Vi
SW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgcGFuZWwu
bW91c2VPdmVyQ3J1bWIgPSB0cnVlOwogCiAgICAgICAgICAgICBwYW5lbC5hbHRLZXlEb3duID0g
ZXZlbnQuYWx0S2V5OwotICAgICAgICAgICAgcGFuZWwuaG92ZXJlZERPTU5vZGUgPSB0aGlzLnJl
cHJlc2VudGVkT2JqZWN0OworICAgICAgICAgICAgcGFuZWwudHJlZU91dGxpbmUuaG92ZXJlZERP
TU5vZGUgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0OwogICAgICAgICAgICAgcGFuZWwuZm9yY2VI
b3ZlckhpZ2hsaWdodCA9IHRoaXMuaGFzU3R5bGVDbGFzcygic2VsZWN0ZWQiKTsKIAogICAgICAg
ICAgICAgaWYgKCJtb3VzZU91dFRpbWVvdXQiIGluIHBhbmVsKSB7CkBAIC01MzksNyArNDI5LDcg
QEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgICAg
ICBpZiAoZXZlbnQudGFyZ2V0ID09PSB0aGlzKSB7CiAgICAgICAgICAgICAgICAgcGFuZWwuYWx0
S2V5RG93biA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHBhbmVsLmhvdmVyZWRET01Ob2RlID0g
bnVsbDsKKyAgICAgICAgICAgICAgICBwYW5lbC50cmVlT3V0bGluZS5ob3ZlcmVkRE9NTm9kZSA9
IG51bGw7CiAgICAgICAgICAgICAgICAgcGFuZWwuZm9yY2VIb3ZlckhpZ2hsaWdodCA9IGZhbHNl
OwogICAgICAgICAgICAgfQogCkBAIC01NTcsMTEgKzQ0NywxMSBAQCBXZWJJbnNwZWN0b3IuRWxl
bWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH07CiAKICAgICAgICAgZm91bmRSb290
ID0gZmFsc2U7Ci0gICAgICAgIGZvciAodmFyIGN1cnJlbnQgPSB0aGlzLmZvY3VzZWRET01Ob2Rl
OyBjdXJyZW50OyBjdXJyZW50ID0gdGhpcy5fcGFyZW50Tm9kZU9yRnJhbWVFbGVtZW50KGN1cnJl
bnQpKSB7CisgICAgICAgIGZvciAodmFyIGN1cnJlbnQgPSB0aGlzLnRyZWVPdXRsaW5lLmZvY3Vz
ZWRET01Ob2RlOyBjdXJyZW50OyBjdXJyZW50ID0gdGhpcy50cmVlT3V0bGluZS5fcGFyZW50Tm9k
ZU9yRnJhbWVFbGVtZW50KGN1cnJlbnQpKSB7CiAgICAgICAgICAgICBpZiAoY3VycmVudC5ub2Rl
VHlwZSA9PT0gTm9kZS5ET0NVTUVOVF9OT0RFKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgICAgICBpZiAob2JqZWN0c0FyZVNhbWUoY3VycmVudCwgdGhpcy5yb290RE9NTm9k
ZSkpCisgICAgICAgICAgICBpZiAob2JqZWN0c0FyZVNhbWUoY3VycmVudCwgdGhpcy50cmVlT3V0
bGluZS5yb290RE9NTm9kZSkpCiAgICAgICAgICAgICAgICAgZm91bmRSb290ID0gdHJ1ZTsKIAog
ICAgICAgICAgICAgdmFyIGNydW1iID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwpA
QCAtNjQ2LDcgKzUzNiw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9
IHsKIAogICAgICAgICAgICAgaWYgKGZvdW5kUm9vdCkKICAgICAgICAgICAgICAgICBjcnVtYi5h
ZGRTdHlsZUNsYXNzKCJkaW1tZWQiKTsKLSAgICAgICAgICAgIGlmIChvYmplY3RzQXJlU2FtZShj
dXJyZW50LCB0aGlzLmZvY3VzZWRET01Ob2RlKSkKKyAgICAgICAgICAgIGlmIChvYmplY3RzQXJl
U2FtZShjdXJyZW50LCB0aGlzLnRyZWVPdXRsaW5lLmZvY3VzZWRET01Ob2RlKSkKICAgICAgICAg
ICAgICAgICBjcnVtYi5hZGRTdHlsZUNsYXNzKCJzZWxlY3RlZCIpOwogICAgICAgICAgICAgaWYg
KCFjcnVtYnMuY2hpbGROb2Rlcy5sZW5ndGgpCiAgICAgICAgICAgICAgICAgY3J1bWIuYWRkU3R5
bGVDbGFzcygiZW5kIik7CkBAIC05MTYsNyArODA2LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRz
UGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXN0eWxlc1NpZGViYXJQYW5lLmV4cGFu
ZGVkIHx8ICFzdHlsZXNTaWRlYmFyUGFuZS5uZWVkc1VwZGF0ZSkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBzdHlsZXNTaWRlYmFyUGFuZS51cGRhdGUodGhpcy5mb2N1c2VkRE9NTm9k
ZSwgbnVsbCwgZm9yY2VVcGRhdGUpOworICAgICAgICBzdHlsZXNTaWRlYmFyUGFuZS51cGRhdGUo
dGhpcy50cmVlT3V0bGluZS5mb2N1c2VkRE9NTm9kZSwgbnVsbCwgZm9yY2VVcGRhdGUpOwogICAg
ICAgICBzdHlsZXNTaWRlYmFyUGFuZS5uZWVkc1VwZGF0ZSA9IGZhbHNlOwogICAgIH0sCiAKQEAg
LTkyNiw3ICs4MTYsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIGlmICghbWV0cmljc1NpZGViYXJQYW5lLmV4cGFuZGVkIHx8ICFtZXRyaWNzU2lk
ZWJhclBhbmUubmVlZHNVcGRhdGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbWV0
cmljc1NpZGViYXJQYW5lLnVwZGF0ZSh0aGlzLmZvY3VzZWRET01Ob2RlKTsKKyAgICAgICAgbWV0
cmljc1NpZGViYXJQYW5lLnVwZGF0ZSh0aGlzLnRyZWVPdXRsaW5lLmZvY3VzZWRET01Ob2RlKTsK
ICAgICAgICAgbWV0cmljc1NpZGViYXJQYW5lLm5lZWRzVXBkYXRlID0gZmFsc2U7CiAgICAgfSwK
IApAQCAtOTM2LDcgKzgyNiw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgaWYgKCFwcm9wZXJ0aWVzU2lkZWJhclBhbmUuZXhwYW5kZWQgfHwgIXBy
b3BlcnRpZXNTaWRlYmFyUGFuZS5uZWVkc1VwZGF0ZSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBwcm9wZXJ0aWVzU2lkZWJhclBhbmUudXBkYXRlKHRoaXMuZm9jdXNlZERPTU5vZGUp
OworICAgICAgICBwcm9wZXJ0aWVzU2lkZWJhclBhbmUudXBkYXRlKHRoaXMudHJlZU91dGxpbmUu
Zm9jdXNlZERPTU5vZGUpOwogICAgICAgICBwcm9wZXJ0aWVzU2lkZWJhclBhbmUubmVlZHNVcGRh
dGUgPSBmYWxzZTsKICAgICB9LAogCkBAIC05NTksMTggKzg0OSwxOCBAQCBXZWJJbnNwZWN0b3Iu
RWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghd2luZG93LmdldFNlbGVj
dGlvbigpLmlzQ29sbGFwc2VkKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHN3aXRj
aCAodGhpcy5mb2N1c2VkRE9NTm9kZS5ub2RlVHlwZSkgeworICAgICAgICBzd2l0Y2ggKHRoaXMu
dHJlZU91dGxpbmUuZm9jdXNlZERPTU5vZGUubm9kZVR5cGUpIHsKICAgICAgICAgICAgIGNhc2Ug
Tm9kZS5FTEVNRU5UX05PREU6Ci0gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLmZvY3Vz
ZWRET01Ob2RlLm91dGVySFRNTDsKKyAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IHRoaXMudHJl
ZU91dGxpbmUuZm9jdXNlZERPTU5vZGUub3V0ZXJIVE1MOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogCiAgICAgICAgICAgICBjYXNlIE5vZGUuQ09NTUVOVF9OT0RFOgotICAgICAgICAgICAgICAg
IHZhciBkYXRhID0gIjwhLS0iICsgdGhpcy5mb2N1c2VkRE9NTm9kZS5ub2RlVmFsdWUgKyAiLS0+
IjsKKyAgICAgICAgICAgICAgICB2YXIgZGF0YSA9ICI8IS0tIiArIHRoaXMudHJlZU91dGxpbmUu
Zm9jdXNlZERPTU5vZGUubm9kZVZhbHVlICsgIi0tPiI7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBjYXNlIE5vZGUuVEVYVF9OT0RF
OgotICAgICAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy5mb2N1c2VkRE9NTm9kZS5ub2RlVmFs
dWU7CisgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLnRyZWVPdXRsaW5lLmZvY3VzZWRE
T01Ob2RlLm5vZGVWYWx1ZTsKICAgICAgICAgfQogCiAgICAgICAgIGV2ZW50LmNsaXBib2FyZERh
dGEuY2xlYXJEYXRhKCk7CkBAIC05OTksOTAgKzg4OSwxOCBAQCBXZWJJbnNwZWN0b3IuRWxlbWVu
dHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuc3R5bGUu
cmlnaHQgPSBuZXdXaWR0aCArICJweCI7CiAgICAgICAgIHRoaXMuc2lkZWJhclJlc2l6ZUVsZW1l
bnQuc3R5bGUucmlnaHQgPSAobmV3V2lkdGggLSAzKSArICJweCI7CiAKLSAgICAgICAgdGhpcy51
cGRhdGVUcmVlU2VsZWN0aW9uKCk7CisgICAgICAgIHRoaXMudHJlZU91dGxpbmUudXBkYXRlVHJl
ZVNlbGVjdGlvbigpOwogCiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgfSwK
IAotICAgIF9nZXREb2N1bWVudEZvck5vZGU6IGZ1bmN0aW9uKG5vZGUpCi0gICAgewotICAgICAg
ICByZXR1cm4gbm9kZS5ub2RlVHlwZSA9PSBOb2RlLkRPQ1VNRU5UX05PREUgPyBub2RlIDogbm9k
ZS5vd25lckRvY3VtZW50OwotICAgIH0sCi0KLSAgICBfcGFyZW50Tm9kZU9yRnJhbWVFbGVtZW50
OiBmdW5jdGlvbihub2RlKQotICAgIHsKLSAgICAgICAgdmFyIHBhcmVudCA9IG5vZGUucGFyZW50
Tm9kZTsKLSAgICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAgIHJldHVybiBwYXJlbnQ7Ci0K
LSAgICAgICAgdmFyIGRvY3VtZW50ID0gdGhpcy5fZ2V0RG9jdW1lbnRGb3JOb2RlKG5vZGUpOwot
ICAgICAgICByZXR1cm4gZG9jdW1lbnQuZGVmYXVsdFZpZXcuZnJhbWVFbGVtZW50OwotICAgIH0s
Ci0KLSAgICBfaXNBbmNlc3RvckluY2x1ZGluZ1BhcmVudEZyYW1lczogZnVuY3Rpb24oYSwgYikK
LSAgICB7Ci0gICAgICAgIGlmIChvYmplY3RzQXJlU2FtZShhLCBiKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgZm9yICh2YXIgbm9kZSA9IGI7IG5vZGU7IG5vZGUgPSB0aGlz
Ll9nZXREb2N1bWVudEZvck5vZGUobm9kZSkuZGVmYXVsdFZpZXcuZnJhbWVFbGVtZW50KQotICAg
ICAgICAgICAgaWYgKG9iamVjdHNBcmVTYW1lKGEsIG5vZGUpIHx8IGlzQW5jZXN0b3JOb2RlLmNh
bGwoYSwgbm9kZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9LAotCi0gICAgX3RyZWVFbGVtZW50RnJvbUV2ZW50OiBmdW5jdGlvbihl
dmVudCkKLSAgICB7Ci0gICAgICAgIHZhciBvdXRsaW5lID0gdGhpcy50cmVlT3V0bGluZTsKLQot
ICAgICAgICB2YXIgcm9vdCA9IHRoaXMudHJlZUxpc3RFbGVtZW50OwotCi0gICAgICAgIC8vIFdl
IGNob29zZSB0aGlzIFggY29vcmRpbmF0ZSBiYXNlZCBvbiB0aGUga25vd2xlZGdlIHRoYXQgb3Vy
IGxpc3QKLSAgICAgICAgLy8gaXRlbXMgZXh0ZW5kIG5lYXJseSB0byB0aGUgcmlnaHQgZWRnZSBv
ZiB0aGUgb3V0ZXIgPG9sPi4KLSAgICAgICAgdmFyIHggPSByb290LnRvdGFsT2Zmc2V0TGVmdCAr
IHJvb3Qub2Zmc2V0V2lkdGggLSAyMDsKLQotICAgICAgICB2YXIgeSA9IGV2ZW50LnBhZ2VZOwot
Ci0gICAgICAgIC8vIE91ciBsaXN0IGl0ZW1zIGhhdmUgMS1waXhlbCBjcmFja3MgYmV0d2VlbiB0
aGVtIHZlcnRpY2FsbHkuIFdlIGF2b2lkCi0gICAgICAgIC8vIHRoZSBjcmFja3MgYnkgY2hlY2tp
bmcgc2xpZ2h0bHkgYWJvdmUgYW5kIHNsaWdodGx5IGJlbG93IHRoZSBtb3VzZQotICAgICAgICAv
LyBhbmQgc2VlaW5nIGlmIHdlIGhpdCB0aGUgc2FtZSBlbGVtZW50IGVhY2ggdGltZS4KLSAgICAg
ICAgdmFyIGVsZW1lbnRVbmRlck1vdXNlID0gb3V0bGluZS50cmVlRWxlbWVudEZyb21Qb2ludCh4
LCB5KTsKLSAgICAgICAgdmFyIGVsZW1lbnRBYm92ZU1vdXNlID0gb3V0bGluZS50cmVlRWxlbWVu
dEZyb21Qb2ludCh4LCB5IC0gMik7Ci0gICAgICAgIHZhciBlbGVtZW50OwotICAgICAgICBpZiAo
ZWxlbWVudFVuZGVyTW91c2UgPT09IGVsZW1lbnRBYm92ZU1vdXNlKQotICAgICAgICAgICAgZWxl
bWVudCA9IGVsZW1lbnRVbmRlck1vdXNlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBlbGVt
ZW50ID0gb3V0bGluZS50cmVlRWxlbWVudEZyb21Qb2ludCh4LCB5ICsgMik7Ci0KLSAgICAgICAg
cmV0dXJuIGVsZW1lbnQ7Ci0gICAgfSwKLQotICAgIF9vbmRibGNsaWNrOiBmdW5jdGlvbihldmVu
dCkKLSAgICB7Ci0gICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5fdHJlZUVsZW1lbnRGcm9tRXZl
bnQoZXZlbnQpOwotCi0gICAgICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC5vbmRibGNsaWNr
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGVsZW1lbnQub25kYmxjbGljaygpOwot
ICAgIH0sCi0KLSAgICBfb25tb3VzZWRvd246IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAg
ICAgdmFyIGVsZW1lbnQgPSB0aGlzLl90cmVlRWxlbWVudEZyb21FdmVudChldmVudCk7Ci0KLSAg
ICAgICAgaWYgKCFlbGVtZW50IHx8IGVsZW1lbnQuaXNFdmVudFdpdGhpbkRpc2Nsb3N1cmVUcmlh
bmdsZShldmVudCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZWxlbWVudC5zZWxl
Y3QoKTsKLSAgICB9LAotCiAgICAgX29ubW91c2Vtb3ZlOiBmdW5jdGlvbihldmVudCkKICAgICB7
Ci0gICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5fdHJlZUVsZW1lbnRGcm9tRXZlbnQoZXZlbnQp
OworICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMudHJlZU91dGxpbmUuX3RyZWVFbGVtZW50RnJv
bUV2ZW50KGV2ZW50KTsKICAgICAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIHRoaXMuYWx0S2V5RG93biA9IGV2ZW50LmFsdEtleTsKLSAgICAgICAgdGhp
cy5ob3ZlcmVkRE9NTm9kZSA9IGVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3Q7CiAgICAgICAgIHRo
aXMuZm9yY2VIb3ZlckhpZ2hsaWdodCA9IGVsZW1lbnQuc2VsZWN0ZWQ7CiAgICAgfSwKIApAQCAt
MTA5MSwzMzIgKzkwOSw4IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gdGhpcy50cmVlTGlzdEVsZW1lbnQpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuYWx0S2V5RG93biA9IGZhbHNlOwotICAg
ICAgICB0aGlzLmhvdmVyZWRET01Ob2RlID0gbnVsbDsKICAgICAgICAgdGhpcy5mb3JjZUhvdmVy
SGlnaGxpZ2h0ID0gZmFsc2U7CiAgICAgfQogfQogCiBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5l
bC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZTsKLQot
V2ViSW5zcGVjdG9yLkRPTU5vZGVUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKG5vZGUpCi17Ci0gICAg
dmFyIGhhc0NoaWxkcmVuID0gbm9kZS5jb250ZW50RG9jdW1lbnQgfHwgKFByZWZlcmVuY2VzLmln
bm9yZVdoaXRlc3BhY2UgPyAoZmlyc3RDaGlsZFNraXBwaW5nV2hpdGVzcGFjZS5jYWxsKG5vZGUp
ID8gdHJ1ZSA6IGZhbHNlKSA6IG5vZGUuaGFzQ2hpbGROb2RlcygpKTsKLSAgICB2YXIgdGl0bGVJ
bmZvID0gbm9kZVRpdGxlSW5mby5jYWxsKG5vZGUsIGhhc0NoaWxkcmVuLCBXZWJJbnNwZWN0b3Iu
bGlua2lmeVVSTCk7Ci0KLSAgICBpZiAodGl0bGVJbmZvLmhhc0NoaWxkcmVuKSAKLSAgICAgICAg
dGhpcy53aGl0ZXNwYWNlSWdub3JlZCA9IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2U7Ci0K
LSAgICBUcmVlRWxlbWVudC5jYWxsKHRoaXMsIHRpdGxlSW5mby50aXRsZSwgbm9kZSwgdGl0bGVJ
bmZvLmhhc0NoaWxkcmVuKTsKLX0KLQotV2ViSW5zcGVjdG9yLkRPTU5vZGVUcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7Ci0gICAgdXBkYXRlU2VsZWN0aW9uOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICB2YXIgbGlzdEl0ZW1FbGVtZW50ID0gdGhpcy5saXN0SXRlbUVsZW1lbnQ7Ci0gICAgICAg
IGlmICghbGlzdEl0ZW1FbGVtZW50KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlm
IChkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoIDw9IDApIHsKLSAgICAgICAgICAgIC8vIFRoZSBz
dHlsZXNoZWV0IGhhc24ndCBsb2FkZWQgeWV0IG9yIHRoZSB3aW5kb3cgaXMgY2xvc2VkLAotICAg
ICAgICAgICAgLy8gc28gd2UgY2FuJ3QgY2FsY3VsYXRlIHdoYXQgaXMgbmVlZC4gUmV0dXJuIGVh
cmx5LgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF0aGlz
LnNlbGVjdGlvbkVsZW1lbnQpIHsKLSAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgdGhpcy5zZWxlY3Rp
b25FbGVtZW50LmNsYXNzTmFtZSA9ICJzZWxlY3Rpb24gc2VsZWN0ZWQiOwotICAgICAgICAgICAg
bGlzdEl0ZW1FbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLnNlbGVjdGlvbkVsZW1lbnQsIGxpc3RJ
dGVtRWxlbWVudC5maXJzdENoaWxkKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuc2VsZWN0
aW9uRWxlbWVudC5zdHlsZS5oZWlnaHQgPSBsaXN0SXRlbUVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsg
InB4IjsKLSAgICB9LAotCi0gICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IHRoaXMubGlzdEl0ZW1FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMu
b25tb3VzZWRvd24uYmluZCh0aGlzKSwgZmFsc2UpOwotCi0gICAgICAgIHRoaXMuX3ByZXZlbnRG
b2xsb3dpbmdMaW5rc09uRG91YmxlQ2xpY2soKTsKLSAgICB9LAotCi0gICAgX3ByZXZlbnRGb2xs
b3dpbmdMaW5rc09uRG91YmxlQ2xpY2s6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBs
aW5rcyA9IHRoaXMubGlzdEl0ZW1FbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImxpID4gLndlYmtp
dC1odG1sLXRhZyA+IC53ZWJraXQtaHRtbC1hdHRyaWJ1dGUgPiAud2Via2l0LWh0bWwtZXh0ZXJu
YWwtbGluaywgbGkgPiAud2Via2l0LWh0bWwtdGFnID4gLndlYmtpdC1odG1sLWF0dHJpYnV0ZSA+
IC53ZWJraXQtaHRtbC1yZXNvdXJjZS1saW5rIik7Ci0gICAgICAgIGlmICghbGlua3MpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5rcy5sZW5n
dGg7ICsraSkKLSAgICAgICAgICAgIGxpbmtzW2ldLnByZXZlbnRGb2xsb3dPbkRvdWJsZUNsaWNr
ID0gdHJ1ZTsKLSAgICB9LAotCi0gICAgb25wb3B1bGF0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoIHx8IHRoaXMud2hpdGVzcGFjZUlnbm9yZWQg
IT09IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgdGhpcy53aGl0ZXNwYWNlSWdub3JlZCA9IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRl
c3BhY2U7Ci0KLSAgICAgICAgdGhpcy51cGRhdGVDaGlsZHJlbigpOwotICAgIH0sCi0KLSAgICB1
cGRhdGVDaGlsZHJlbjogZnVuY3Rpb24oZnVsbFJlZnJlc2gpCi0gICAgewotICAgICAgICBpZiAo
ZnVsbFJlZnJlc2gpIHsKLSAgICAgICAgICAgIHZhciBzZWxlY3RlZFRyZWVFbGVtZW50ID0gdGhp
cy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50OwotICAgICAgICAgICAgaWYgKHNlbGVj
dGVkVHJlZUVsZW1lbnQgJiYgc2VsZWN0ZWRUcmVlRWxlbWVudC5oYXNBbmNlc3Rvcih0aGlzKSkK
LSAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCgpOwotICAgICAgICAgICAgdGhpcy5yZW1vdmVD
aGlsZHJlbigpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gdGhpczsK
LSAgICAgICAgdmFyIHRyZWVDaGlsZEluZGV4ID0gMDsKLQotICAgICAgICBmdW5jdGlvbiB1cGRh
dGVDaGlsZHJlbk9mTm9kZShub2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgdHJlZU91
dGxpbmUgPSB0cmVlRWxlbWVudC50cmVlT3V0bGluZTsKLSAgICAgICAgICAgIHZhciBjaGlsZCA9
IChQcmVmZXJlbmNlcy5pZ25vcmVXaGl0ZXNwYWNlID8gZmlyc3RDaGlsZFNraXBwaW5nV2hpdGVz
cGFjZS5jYWxsKG5vZGUpIDogbm9kZS5maXJzdENoaWxkKTsKLSAgICAgICAgICAgIHdoaWxlIChj
aGlsZCkgewotICAgICAgICAgICAgICAgIHZhciBjdXJyZW50VHJlZUVsZW1lbnQgPSB0cmVlRWxl
bWVudC5jaGlsZHJlblt0cmVlQ2hpbGRJbmRleF07Ci0gICAgICAgICAgICAgICAgaWYgKCFjdXJy
ZW50VHJlZUVsZW1lbnQgfHwgIW9iamVjdHNBcmVTYW1lKGN1cnJlbnRUcmVlRWxlbWVudC5yZXBy
ZXNlbnRlZE9iamVjdCwgY2hpbGQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZpbmQgYW55
IGV4aXN0aW5nIGVsZW1lbnQgdGhhdCBpcyBsYXRlciBpbiB0aGUgY2hpbGRyZW4gbGlzdC4KLSAg
ICAgICAgICAgICAgICAgICAgdmFyIGV4aXN0aW5nVHJlZUVsZW1lbnQgPSBudWxsOwotICAgICAg
ICAgICAgICAgICAgICBmb3IgKHZhciBpID0gKHRyZWVDaGlsZEluZGV4ICsgMSk7IGkgPCB0cmVl
RWxlbWVudC5jaGlsZHJlbi5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG9iamVjdHNBcmVTYW1lKHRyZWVFbGVtZW50LmNoaWxkcmVuW2ldLnJlcHJlc2VudGVkT2Jq
ZWN0LCBjaGlsZCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ1RyZWVF
bGVtZW50ID0gdHJlZUVsZW1lbnQuY2hpbGRyZW5baV07Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdUcmVlRWxlbWVudCAmJiBl
eGlzdGluZ1RyZWVFbGVtZW50LnBhcmVudCA9PT0gdHJlZUVsZW1lbnQpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIElmIGFuIGV4aXN0aW5nIGVsZW1lbnQgd2FzIGZvdW5kIGFuZCBpdCBo
YXMgdGhlIHNhbWUgcGFyZW50LCBqdXN0IG1vdmUgaXQuCi0gICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgd2FzU2VsZWN0ZWQgPSBleGlzdGluZ1RyZWVFbGVtZW50LnNlbGVjdGVkOwotICAgICAg
ICAgICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGQoZXhpc3RpbmdUcmVlRWxl
bWVudCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cmVlRWxlbWVudC5pbnNlcnRDaGlsZChl
eGlzdGluZ1RyZWVFbGVtZW50LCB0cmVlQ2hpbGRJbmRleCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAod2FzU2VsZWN0ZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3Rp
bmdUcmVlRWxlbWVudC5zZWxlY3QoKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIE5vIGV4aXN0aW5nIGVsZW1lbnQgZm91bmQsIGluc2Vy
dCBhIG5ldyBlbGVtZW50LgotICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQuaW5z
ZXJ0Q2hpbGQobmV3IFdlYkluc3BlY3Rvci5ET01Ob2RlVHJlZUVsZW1lbnQoY2hpbGQpLCB0cmVl
Q2hpbGRJbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICBjaGlsZCA9IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UgPyBu
ZXh0U2libGluZ1NraXBwaW5nV2hpdGVzcGFjZS5jYWxsKGNoaWxkKSA6IGNoaWxkLm5leHRTaWJs
aW5nOwotICAgICAgICAgICAgICAgICsrdHJlZUNoaWxkSW5kZXg7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLQotICAgICAgICAvLyBSZW1vdmUgYW55IHRyZWUgZWxlbWVudHMgdGhhdCBubyBs
b25nZXIgaGF2ZSB0aGlzIG5vZGUgKG9yIHRoaXMgbm9kZSdzIGNvbnRlbnREb2N1bWVudCkgYXMg
dGhlaXIgcGFyZW50LgotICAgICAgICBmb3IgKHZhciBpID0gKHRoaXMuY2hpbGRyZW4ubGVuZ3Ro
IC0gMSk7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgICAgICBpZiAoImVsZW1lbnRDbG9zZVRhZyIg
aW4gdGhpcy5jaGlsZHJlbltpXSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAg
ICAgICAgdmFyIGN1cnJlbnRDaGlsZCA9IHRoaXMuY2hpbGRyZW5baV07Ci0gICAgICAgICAgICB2
YXIgY3VycmVudE5vZGUgPSBjdXJyZW50Q2hpbGQucmVwcmVzZW50ZWRPYmplY3Q7Ci0gICAgICAg
ICAgICB2YXIgY3VycmVudFBhcmVudE5vZGUgPSBjdXJyZW50Tm9kZS5wYXJlbnROb2RlOwotCi0g
ICAgICAgICAgICBpZiAob2JqZWN0c0FyZVNhbWUoY3VycmVudFBhcmVudE5vZGUsIHRoaXMucmVw
cmVzZW50ZWRPYmplY3QpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
aWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY29udGVudERvY3VtZW50ICYmIG9iamVjdHNBcmVT
YW1lKGN1cnJlbnRQYXJlbnROb2RlLCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmNvbnRlbnREb2N1
bWVudCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIHZhciBzZWxl
Y3RlZFRyZWVFbGVtZW50ID0gdGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50Owot
ICAgICAgICAgICAgaWYgKHNlbGVjdGVkVHJlZUVsZW1lbnQgJiYgKHNlbGVjdGVkVHJlZUVsZW1l
bnQgPT09IGN1cnJlbnRDaGlsZCB8fCBzZWxlY3RlZFRyZWVFbGVtZW50Lmhhc0FuY2VzdG9yKGN1
cnJlbnRDaGlsZCkpKQotICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCk7Ci0KLSAgICAgICAg
ICAgIHRoaXMucmVtb3ZlQ2hpbGRBdEluZGV4KGkpOwotCi0gICAgICAgICAgICBpZiAoY3VycmVu
dE5vZGUuY29udGVudERvY3VtZW50KQotICAgICAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUu
cGFuZWwudW5yZWdpc3Rlck11dGF0aW9uRXZlbnRMaXN0ZW5lcnMoY3VycmVudE5vZGUuY29udGVu
dERvY3VtZW50LmRlZmF1bHRWaWV3KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh0aGlzLnJl
cHJlc2VudGVkT2JqZWN0LmNvbnRlbnREb2N1bWVudCkKLSAgICAgICAgICAgIHVwZGF0ZUNoaWxk
cmVuT2ZOb2RlKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY29udGVudERvY3VtZW50KTsKLSAgICAg
ICAgdXBkYXRlQ2hpbGRyZW5PZk5vZGUodGhpcy5yZXByZXNlbnRlZE9iamVjdCk7Ci0KLSAgICAg
ICAgdmFyIGxhc3RDaGlsZCA9IHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAx
XTsKLSAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3Qubm9kZVR5cGUgPT0gTm9kZS5F
TEVNRU5UX05PREUgJiYgKCFsYXN0Q2hpbGQgfHwgIWxhc3RDaGlsZC5lbGVtZW50Q2xvc2VUYWcp
KSB7Ci0gICAgICAgICAgICB2YXIgdGl0bGUgPSAiPHNwYW4gY2xhc3M9XCJ3ZWJraXQtaHRtbC10
YWcgY2xvc2VcIj4mbHQ7LyIgKyB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm5vZGVOYW1lLnRvTG93
ZXJDYXNlKCkuZXNjYXBlSFRNTCgpICsgIiZndDs8L3NwYW4+IjsKLSAgICAgICAgICAgIHZhciBp
dGVtID0gbmV3IFRyZWVFbGVtZW50KHRpdGxlLCBudWxsLCBmYWxzZSk7Ci0gICAgICAgICAgICBp
dGVtLnNlbGVjdGFibGUgPSBmYWxzZTsKLSAgICAgICAgICAgIGl0ZW0uZWxlbWVudENsb3NlVGFn
ID0gdHJ1ZTsKLSAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQoaXRlbSk7Ci0gICAgICAgIH0K
LSAgICB9LAotCi0gICAgb25leHBhbmQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMu
dHJlZU91dGxpbmUucGFuZWwudXBkYXRlVHJlZVNlbGVjdGlvbigpOwotCi0gICAgICAgIGlmICh0
aGlzLnJlcHJlc2VudGVkT2JqZWN0LmNvbnRlbnREb2N1bWVudCkKLSAgICAgICAgICAgIHRoaXMu
dHJlZU91dGxpbmUucGFuZWwucmVnaXN0ZXJNdXRhdGlvbkV2ZW50TGlzdGVuZXJzKHRoaXMucmVw
cmVzZW50ZWRPYmplY3QuY29udGVudERvY3VtZW50LmRlZmF1bHRWaWV3KTsKLSAgICB9LAotCi0g
ICAgb25jb2xsYXBzZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy50cmVlT3V0bGlu
ZS5wYW5lbC51cGRhdGVUcmVlU2VsZWN0aW9uKCk7Ci0gICAgfSwKLQotICAgIG9ucmV2ZWFsOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5saXN0SXRlbUVsZW1lbnQpCi0gICAg
ICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKGZhbHNl
KTsKLSAgICB9LAotCi0gICAgb25zZWxlY3Q6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRo
aXMudHJlZU91dGxpbmUucGFuZWwuZm9jdXNlZERPTU5vZGUgPSB0aGlzLnJlcHJlc2VudGVkT2Jq
ZWN0OwotICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbigpOwotICAgIH0sCi0KLSAgICBvbm1v
dXNlZG93bjogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fZWRpdGlu
ZykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBQcmV2ZW50IHNlbGVjdGluZyB0
aGUgbmVhcmVzdCB3b3JkIG9uIGRvdWJsZSBjbGljay4KLSAgICAgICAgaWYgKGV2ZW50LmRldGFp
bCA+PSAyKQotICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICB9LAotCi0g
ICAgb25kYmxjbGljazogZnVuY3Rpb24odHJlZUVsZW1lbnQsIGV2ZW50KQotICAgIHsKLSAgICAg
ICAgaWYgKHRoaXMuX2VkaXRpbmcpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYg
KHRoaXMuX3N0YXJ0RWRpdGluZyhldmVudCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgdmFyIHBhbmVsID0gdGhpcy50cmVlT3V0bGluZS5wYW5lbDsKLSAgICAgICAgcGFuZWwucm9v
dERPTU5vZGUgPSB0aGlzLnBhcmVudC5yZXByZXNlbnRlZE9iamVjdDsKLSAgICAgICAgcGFuZWwu
Zm9jdXNlZERPTU5vZGUgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0OwotCi0gICAgICAgIGlmICh0
aGlzLmhhc0NoaWxkcmVuICYmICF0aGlzLmV4cGFuZGVkKQotICAgICAgICAgICAgdGhpcy5leHBh
bmQoKTsKLSAgICB9LAotCi0gICAgX3N0YXJ0RWRpdGluZzogZnVuY3Rpb24oZXZlbnQpCi0gICAg
ewotICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZS5wYW5lbC5mb2N1c2VkRE9NTm9kZSAhPSB0
aGlzLnJlcHJlc2VudGVkT2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlm
ICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm5vZGVUeXBlICE9IE5vZGUuRUxFTUVOVF9OT0RFICYm
IHRoaXMucmVwcmVzZW50ZWRPYmplY3Qubm9kZVR5cGUgIT0gTm9kZS5URVhUX05PREUpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdmFyIHRleHROb2RlID0gZXZlbnQudGFy
Z2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoIndlYmtpdC1odG1sLXRleHQtbm9kZSIp
OwotICAgICAgICBpZiAodGV4dE5vZGUpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRF
ZGl0aW5nVGV4dE5vZGUodGV4dE5vZGUpOwotCi0gICAgICAgIHZhciBhdHRyaWJ1dGUgPSBldmVu
dC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygid2Via2l0LWh0bWwtYXR0cmli
dXRlIik7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGUpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5f
c3RhcnRFZGl0aW5nQXR0cmlidXRlKGF0dHJpYnV0ZSwgZXZlbnQpOwotCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9LAotCi0gICAgX3N0YXJ0RWRpdGluZ0F0dHJpYnV0ZTogZnVuY3Rpb24o
YXR0cmlidXRlLCBldmVudCkKLSAgICB7Ci0gICAgICAgIGlmIChXZWJJbnNwZWN0b3IuaXNCZWlu
Z0VkaXRlZChhdHRyaWJ1dGUpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAg
dmFyIGF0dHJpYnV0ZU5hbWVFbGVtZW50ID0gYXR0cmlidXRlLmdldEVsZW1lbnRzQnlDbGFzc05h
bWUoIndlYmtpdC1odG1sLWF0dHJpYnV0ZS1uYW1lIilbMF07Ci0gICAgICAgIGlmICghYXR0cmli
dXRlTmFtZUVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdmFy
IGF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGVOYW1lRWxlbWVudC5pbm5lclRleHQ7Ci0KLSAgICAg
ICAgZnVuY3Rpb24gcmVtb3ZlWmVyb1dpZHRoU3BhY2VSZWN1cnNpdmUobm9kZSkKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7Ci0g
ICAgICAgICAgICAgICAgbm9kZS5ub2RlVmFsdWUgPSBub2RlLm5vZGVWYWx1ZS5yZXBsYWNlKC9c
dTIwMEIvZywgIiIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgIT09IE5vZGUuRUxFTUVOVF9OT0RFKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgZm9yICh2YXIgY2hpbGQgPSBub2Rl
LmZpcnN0Q2hpbGQ7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLm5leHRTaWJsaW5nKQotICAgICAgICAg
ICAgICAgIHJlbW92ZVplcm9XaWR0aFNwYWNlUmVjdXJzaXZlKGNoaWxkKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIFJlbW92ZSB6ZXJvLXdpZHRoIHNwYWNlcyB0aGF0IHdlcmUgYWRkZWQgYnkg
bm9kZVRpdGxlSW5mby4KLSAgICAgICAgcmVtb3ZlWmVyb1dpZHRoU3BhY2VSZWN1cnNpdmUoYXR0
cmlidXRlKTsKLQotICAgICAgICB0aGlzLl9lZGl0aW5nID0gdHJ1ZTsKLQotICAgICAgICBXZWJJ
bnNwZWN0b3Iuc3RhcnRFZGl0aW5nKGF0dHJpYnV0ZSwgdGhpcy5fYXR0cmlidXRlRWRpdGluZ0Nv
bW1pdHRlZC5iaW5kKHRoaXMpLCB0aGlzLl9lZGl0aW5nQ2FuY2VsbGVkLmJpbmQodGhpcyksIGF0
dHJpYnV0ZU5hbWUpOwotICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4
dGVudChldmVudC50YXJnZXQsIDAsIGV2ZW50LnRhcmdldCwgMSk7Ci0KLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfSwKLQotICAgIF9zdGFydEVkaXRpbmdUZXh0Tm9kZTogZnVuY3Rpb24odGV4
dE5vZGUpCi0gICAgewotICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmlzQmVpbmdFZGl0ZWQodGV4
dE5vZGUpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgdGhpcy5fZWRpdGlu
ZyA9IHRydWU7Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyh0ZXh0Tm9kZSwg
dGhpcy5fdGV4dE5vZGVFZGl0aW5nQ29tbWl0dGVkLmJpbmQodGhpcyksIHRoaXMuX2VkaXRpbmdD
YW5jZWxsZWQuYmluZCh0aGlzKSk7Ci0gICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRC
YXNlQW5kRXh0ZW50KHRleHROb2RlLCAwLCB0ZXh0Tm9kZSwgMSk7Ci0KLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfSwKLQotICAgIF9hdHRyaWJ1dGVFZGl0aW5nQ29tbWl0dGVkOiBmdW5jdGlv
bihlbGVtZW50LCBuZXdUZXh0LCBvbGRUZXh0LCBhdHRyaWJ1dGVOYW1lKQotICAgIHsKLSAgICAg
ICAgZGVsZXRlIHRoaXMuX2VkaXRpbmc7Ci0KLSAgICAgICAgdmFyIHBhcnNlQ29udGFpbmVyRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgcGFyc2VDb250
YWluZXJFbGVtZW50LmlubmVySFRNTCA9ICI8c3BhbiAiICsgbmV3VGV4dCArICI+PC9zcGFuPiI7
Ci0gICAgICAgIHZhciBwYXJzZUVsZW1lbnQgPSBwYXJzZUNvbnRhaW5lckVsZW1lbnQuZmlyc3RD
aGlsZDsKLSAgICAgICAgaWYgKCFwYXJzZUVsZW1lbnQgfHwgIXBhcnNlRWxlbWVudC5oYXNBdHRy
aWJ1dGVzKCkpIHsKLSAgICAgICAgICAgIGVkaXRpbmdDYW5jZWxsZWQoZWxlbWVudCwgY29udGV4
dCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgZm91bmRP
cmlnaW5hbEF0dHJpYnV0ZSA9IGZhbHNlOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBh
cnNlRWxlbWVudC5hdHRyaWJ1dGVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgYXR0
ciA9IHBhcnNlRWxlbWVudC5hdHRyaWJ1dGVzW2ldOwotICAgICAgICAgICAgZm91bmRPcmlnaW5h
bEF0dHJpYnV0ZSA9IGZvdW5kT3JpZ2luYWxBdHRyaWJ1dGUgfHwgYXR0ci5uYW1lID09PSBhdHRy
aWJ1dGVOYW1lOwotICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5pbnNwZWN0ZWRXaW5k
b3coKS5FbGVtZW50LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGUuY2FsbCh0aGlzLnJlcHJlc2VudGVk
T2JqZWN0LCBhdHRyLm5hbWUsIGF0dHIudmFsdWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KCFmb3VuZE9yaWdpbmFsQXR0cmlidXRlKQotICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxl
ci5pbnNwZWN0ZWRXaW5kb3coKS5FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGUuY2Fs
bCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LCBhdHRyaWJ1dGVOYW1lKTsKLQotICAgICAgICB0aGlz
Ll91cGRhdGVUaXRsZSgpOwotICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnBhbmVsLl9mb2N1c2Vk
Tm9kZUNoYW5nZWQodHJ1ZSk7Ci0gICAgfSwKLQotICAgIF90ZXh0Tm9kZUVkaXRpbmdDb21taXR0
ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIG5ld1RleHQpCi0gICAgewotICAgICAgICBkZWxldGUgdGhp
cy5fZWRpdGluZzsKLQotICAgICAgICB2YXIgdGV4dE5vZGU7Ci0gICAgICAgIGlmICh0aGlzLnJl
cHJlc2VudGVkT2JqZWN0Lm5vZGVUeXBlID09IE5vZGUuRUxFTUVOVF9OT0RFKSB7Ci0gICAgICAg
ICAgICAvLyBXZSBvbmx5IHNob3cgdGV4dCBub2RlcyBpbmxpbmUgaW4gZWxlbWVudHMgaWYgdGhl
IGVsZW1lbnQgb25seQotICAgICAgICAgICAgLy8gaGFzIGEgc2luZ2xlIGNoaWxkLCBhbmQgdGhh
dCBjaGlsZCBpcyBhIHRleHQgbm9kZS4KLSAgICAgICAgICAgIHRleHROb2RlID0gdGhpcy5yZXBy
ZXNlbnRlZE9iamVjdC5maXJzdENoaWxkOwotICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVwcmVz
ZW50ZWRPYmplY3Qubm9kZVR5cGUgPT0gTm9kZS5URVhUX05PREUpCi0gICAgICAgICAgICB0ZXh0
Tm9kZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7Ci0KLSAgICAgICAgdGV4dE5vZGUubm9kZVZh
bHVlID0gbmV3VGV4dDsKLSAgICAgICAgdGhpcy5fdXBkYXRlVGl0bGUoKTsKLSAgICB9LAotCi0g
ICAgX2VkaXRpbmdDYW5jZWxsZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRleHQpCi0gICAgewot
ICAgICAgICBkZWxldGUgdGhpcy5fZWRpdGluZzsKLQotICAgICAgICB0aGlzLl91cGRhdGVUaXRs
ZSgpOwotICAgIH0sCi0KLSAgICBfdXBkYXRlVGl0bGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIHRoaXMudGl0bGUgPSBub2RlVGl0bGVJbmZvLmNhbGwodGhpcy5yZXByZXNlbnRlZE9iamVj
dCwgdGhpcy5oYXNDaGlsZHJlbiwgV2ViSW5zcGVjdG9yLmxpbmtpZnlVUkwpLnRpdGxlOwotICAg
ICAgICBkZWxldGUgdGhpcy5zZWxlY3Rpb25FbGVtZW50OwotICAgICAgICB0aGlzLnVwZGF0ZVNl
bGVjdGlvbigpOwotICAgICAgICB0aGlzLl9wcmV2ZW50Rm9sbG93aW5nTGlua3NPbkRvdWJsZUNs
aWNrKCk7Ci0gICAgfSwKLX0KLQotV2ViSW5zcGVjdG9yLkRPTU5vZGVUcmVlRWxlbWVudC5wcm90
b3R5cGUuX19wcm90b19fID0gVHJlZUVsZW1lbnQucHJvdG90eXBlOwpJbmRleDogV2ViQ29yZS9w
YWdlL2luc3BlY3Rvci9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9pbnNwZWN0b3IvRWxlbWVudHNUcmVlT3V0bGluZS5qcwkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvcGFnZS9pbnNwZWN0b3IvRWxlbWVudHNUcmVlT3V0bGluZS5qcwkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1NDUgQEAKKworV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91dGxpbmUg
PSBmdW5jdGlvbigpIHsKKyAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJvbCIpOworICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0
aGlzLl9vbm1vdXNlZG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgdGhpcy5lbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoImRibGNsaWNrIiwgdGhpcy5fb25kYmxjbGljay5iaW5kKHRoaXMpLCBm
YWxzZSk7CisgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRo
aXMuX29ubW91c2Vtb3ZlLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICB0aGlzLmVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCB0aGlzLl9vbm1vdXNlb3V0LmJpbmQodGhpcyksIGZh
bHNlKTsKKworICAgIFRyZWVPdXRsaW5lLmNhbGwodGhpcywgdGhpcy5lbGVtZW50KTsKKyAgICAK
KyAgICB0aGlzLmluY2x1ZGVSb290RE9NTm9kZSA9IHRydWU7CisgICAgdGhpcy5yb290RE9NTm9k
ZSA9IG51bGw7CisgICAgdGhpcy5mb2N1c2VkRE9NTm9kZSA9IG51bGw7CisKKyAgICB0aGlzLmhv
dmVyZWRET01Ob2RlID0gbnVsbDsKK30KKworV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91dGxp
bmUucHJvdG90eXBlID0geworICAgIGdldCByb290RE9NTm9kZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fcm9vdERPTU5vZGU7CisgICAgfSwKKworICAgIHNldCByb290RE9NTm9kZSh4
KQorICAgIHsKKyAgICAgICAgaWYgKG9iamVjdHNBcmVTYW1lKHRoaXMuX3Jvb3RET01Ob2RlLCB4
KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9yb290RE9NTm9kZSA9IHg7
CisKKyAgICAgICAgdGhpcy51cGRhdGVUcmVlT3V0bGluZSgpOworICAgIH0sCisKKyAgICBnZXQg
Zm9jdXNlZERPTU5vZGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2ZvY3VzZWRET01O
b2RlOworICAgIH0sCisKKyAgICBzZXQgZm9jdXNlZERPTU5vZGUoeCkKKyAgICB7CisgICAgICAg
IGlmIChvYmplY3RzQXJlU2FtZSh0aGlzLl9mb2N1c2VkRE9NTm9kZSwgeCkpIHsKKyAgICAgICAg
ICAgIHZhciBub2RlSXRlbSA9IHRoaXMucmV2ZWFsTm9kZSh4KTsKKyAgICAgICAgICAgIGlmIChu
b2RlSXRlbSkKKyAgICAgICAgICAgICAgICBub2RlSXRlbS5zZWxlY3QoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2ZvY3VzZWRET01Ob2RlID0geDsK
KworICAgICAgICB0aGlzLm9uRm9jdXNlZE5vZGVDaGFuZ2VkKCk7CisKKyAgICAgICAgdmFyIG5v
ZGVJdGVtID0gdGhpcy5yZXZlYWxOb2RlKHgpOworICAgICAgICBpZiAobm9kZUl0ZW0pCisgICAg
ICAgICAgICBub2RlSXRlbS5zZWxlY3QoKTsKKyAgICB9LAorCisgICAgZ2V0IGhvdmVyZWRET01O
b2RlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9ob3ZlcmVkRE9NTm9kZTsKKyAgICB9
LAorCisgICAgc2V0IGhvdmVyZWRET01Ob2RlKHgpCisgICAgeworICAgICAgICBpZiAob2JqZWN0
c0FyZVNhbWUodGhpcy5faG92ZXJlZERPTU5vZGUsIHgpKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIHRoaXMuX2hvdmVyZWRET01Ob2RlID0geDsKKworICAgICAgICB0aGlzLl91cGRh
dGVIb3ZlckhpZ2hsaWdodCgpOworICAgIH0sCisgICAgCisgICAgdXBkYXRlVHJlZU91dGxpbmU6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW5SZWN1cnNpdmUo
KTsKKworICAgICAgICBpZiAoIXRoaXMucm9vdERPTU5vZGUpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKHRoaXMuaW5jbHVkZVJvb3RET01Ob2RlKQorICAgICAgICAgICAgdGhp
cy50cmVlT3V0bGluZS5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVs
ZW1lbnQodGhpcy5yb290RE9NTm9kZSkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiB0aGlzIGNvdWxkIHVzZSBmaW5kVHJlZUVsZW1lbnQgdG8gcmV1c2UgYSB0cmVlIGVs
ZW1lbnQgaWYgaXQgYWxyZWFkeSBleGlzdHMKKyAgICAgICAgICAgIHZhciBub2RlID0gKFByZWZl
cmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UgPyBmaXJzdENoaWxkU2tpcHBpbmdXaGl0ZXNwYWNlLmNh
bGwodGhpcy5yb290RE9NTm9kZSkgOiB0aGlzLnJvb3RET01Ob2RlLmZpcnN0Q2hpbGQpOworICAg
ICAgICAgICAgd2hpbGUgKG5vZGUpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5l
LmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudChub2RlKSk7
CisgICAgICAgICAgICAgICAgbm9kZSA9IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UgPyBu
ZXh0U2libGluZ1NraXBwaW5nV2hpdGVzcGFjZS5jYWxsKG5vZGUpIDogbm9kZS5uZXh0U2libGlu
ZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHRoaXMudXBkYXRlVHJlZVNl
bGVjdGlvbigpOworICAgIH0sCisKKyAgICB1cGRhdGVUcmVlU2VsZWN0aW9uOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLnNlbGVjdGVkVHJlZUVsZW1l
bnQ7CisgICAgICAgIGVsZW1lbnQudXBkYXRlU2VsZWN0aW9uKCk7CisgICAgfSwKKworICAgIG9u
Rm9jdXNlZE5vZGVDaGFuZ2VkOiBmdW5jdGlvbigpIHt9LAorCisgICAgX3VwZGF0ZUhvdmVySGln
aGxpZ2h0U29vbjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCJfdXBkYXRlSG92ZXJI
aWdobGlnaHRUaW1lb3V0IiBpbiB0aGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0
aGlzLl91cGRhdGVIb3ZlckhpZ2hsaWdodFRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuX3VwZGF0
ZUhvdmVySGlnaGxpZ2h0LmJpbmQodGhpcyksIDApOworICAgIH0sCisKKyAgICBfdXBkYXRlSG92
ZXJIaWdobGlnaHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICgiX3VwZGF0ZUhvdmVy
SGlnaGxpZ2h0VGltZW91dCIgaW4gdGhpcykgeworICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRo
aXMuX3VwZGF0ZUhvdmVySGlnaGxpZ2h0VGltZW91dCk7CisgICAgICAgICAgICBkZWxldGUgdGhp
cy5fdXBkYXRlSG92ZXJIaWdobGlnaHRUaW1lb3V0OworICAgICAgICB9CisKKyAgICAgICAgaWYg
KHRoaXMuX2hvdmVyZWRET01Ob2RlKQorICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5o
aWdobGlnaHRET01Ob2RlKHRoaXMuX2hvdmVyZWRET01Ob2RlKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOworICAg
IH0sCisKKyAgICByZXZlYWxOb2RlOiBmdW5jdGlvbihub2RlKQorICAgIHsKKyAgICAgICAgdmFy
IG5vZGVJdGVtID0gdGhpcy50cmVlT3V0bGluZS5maW5kVHJlZUVsZW1lbnQobm9kZSwgdGhpcy5f
aXNBbmNlc3RvckluY2x1ZGluZ1BhcmVudEZyYW1lcy5iaW5kKHRoaXMpLCB0aGlzLl9wYXJlbnRO
b2RlT3JGcmFtZUVsZW1lbnQuYmluZCh0aGlzKSwgb2JqZWN0c0FyZVNhbWUpOworICAgICAgICBp
ZiAoIW5vZGVJdGVtKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG5vZGVJdGVtLnJl
dmVhbCgpOworICAgICAgICByZXR1cm4gbm9kZUl0ZW07CisgICAgfSwKKworICAgIF9nZXREb2N1
bWVudEZvck5vZGU6IGZ1bmN0aW9uKG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gbm9kZS5u
b2RlVHlwZSA9PSBOb2RlLkRPQ1VNRU5UX05PREUgPyBub2RlIDogbm9kZS5vd25lckRvY3VtZW50
OworICAgIH0sCisKKyAgICBfcGFyZW50Tm9kZU9yRnJhbWVFbGVtZW50OiBmdW5jdGlvbihub2Rl
KQorICAgIHsKKyAgICAgICAgdmFyIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZTsKKyAgICAgICAg
aWYgKHBhcmVudCkKKyAgICAgICAgICAgIHJldHVybiBwYXJlbnQ7CisKKyAgICAgICAgdmFyIGRv
Y3VtZW50ID0gdGhpcy5fZ2V0RG9jdW1lbnRGb3JOb2RlKG5vZGUpOworICAgICAgICByZXR1cm4g
ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZnJhbWVFbGVtZW50OworICAgIH0sCisKKyAgICBfaXNBbmNl
c3RvckluY2x1ZGluZ1BhcmVudEZyYW1lczogZnVuY3Rpb24oYSwgYikKKyAgICB7CisgICAgICAg
IGlmIChvYmplY3RzQXJlU2FtZShhLCBiKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgZm9yICh2YXIgbm9kZSA9IGI7IG5vZGU7IG5vZGUgPSB0aGlzLl9nZXREb2N1bWVudEZv
ck5vZGUobm9kZSkuZGVmYXVsdFZpZXcuZnJhbWVFbGVtZW50KQorICAgICAgICAgICAgaWYgKG9i
amVjdHNBcmVTYW1lKGEsIG5vZGUpIHx8IGlzQW5jZXN0b3JOb2RlLmNhbGwoYSwgbm9kZSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
LAorCisgICAgX3RyZWVFbGVtZW50RnJvbUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICB7Cisg
ICAgICAgIHZhciBvdXRsaW5lID0gdGhpcy50cmVlT3V0bGluZTsKKworICAgICAgICB2YXIgcm9v
dCA9IHRoaXMuZWxlbWVudDsKKworICAgICAgICAvLyBXZSBjaG9vc2UgdGhpcyBYIGNvb3JkaW5h
dGUgYmFzZWQgb24gdGhlIGtub3dsZWRnZSB0aGF0IG91ciBsaXN0CisgICAgICAgIC8vIGl0ZW1z
IGV4dGVuZCBuZWFybHkgdG8gdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIG91dGVyIDxvbD4uCisgICAg
ICAgIHZhciB4ID0gcm9vdC50b3RhbE9mZnNldExlZnQgKyByb290Lm9mZnNldFdpZHRoIC0gMjA7
CisKKyAgICAgICAgdmFyIHkgPSBldmVudC5wYWdlWTsKKworICAgICAgICAvLyBPdXIgbGlzdCBp
dGVtcyBoYXZlIDEtcGl4ZWwgY3JhY2tzIGJldHdlZW4gdGhlbSB2ZXJ0aWNhbGx5LiBXZSBhdm9p
ZAorICAgICAgICAvLyB0aGUgY3JhY2tzIGJ5IGNoZWNraW5nIHNsaWdodGx5IGFib3ZlIGFuZCBz
bGlnaHRseSBiZWxvdyB0aGUgbW91c2UKKyAgICAgICAgLy8gYW5kIHNlZWluZyBpZiB3ZSBoaXQg
dGhlIHNhbWUgZWxlbWVudCBlYWNoIHRpbWUuCisgICAgICAgIHZhciBlbGVtZW50VW5kZXJNb3Vz
ZSA9IG91dGxpbmUudHJlZUVsZW1lbnRGcm9tUG9pbnQoeCwgeSk7CisgICAgICAgIHZhciBlbGVt
ZW50QWJvdmVNb3VzZSA9IG91dGxpbmUudHJlZUVsZW1lbnRGcm9tUG9pbnQoeCwgeSAtIDIpOwor
ICAgICAgICB2YXIgZWxlbWVudDsKKyAgICAgICAgaWYgKGVsZW1lbnRVbmRlck1vdXNlID09PSBl
bGVtZW50QWJvdmVNb3VzZSkKKyAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50VW5kZXJNb3Vz
ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZWxlbWVudCA9IG91dGxpbmUudHJlZUVsZW1l
bnRGcm9tUG9pbnQoeCwgeSArIDIpOworCisgICAgICAgIHJldHVybiBlbGVtZW50OworICAgIH0s
CisKKyAgICBfb25kYmxjbGljazogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIg
ZWxlbWVudCA9IHRoaXMuX3RyZWVFbGVtZW50RnJvbUV2ZW50KGV2ZW50KTsKKworICAgICAgICBp
ZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQub25kYmxjbGljaykKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBlbGVtZW50Lm9uZGJsY2xpY2soZWxlbWVudCwgZXZlbnQpOworICAgIH0sCisK
KyAgICBfb25tb3VzZWRvd246IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGVs
ZW1lbnQgPSB0aGlzLl90cmVlRWxlbWVudEZyb21FdmVudChldmVudCk7CisKKyAgICAgICAgaWYg
KCFlbGVtZW50IHx8IGVsZW1lbnQuaXNFdmVudFdpdGhpbkRpc2Nsb3N1cmVUcmlhbmdsZShldmVu
dCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZWxlbWVudC5zZWxlY3QoKTsKKyAg
ICB9LAorCisgICAgX29ubW91c2Vtb3ZlOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAg
IHZhciBlbGVtZW50ID0gdGhpcy5fdHJlZUVsZW1lbnRGcm9tRXZlbnQoZXZlbnQpOworICAgICAg
ICBpZiAoIWVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5ob3Zl
cmVkRE9NTm9kZSA9IGVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3Q7CisgICAgfSwKKworICAgIF9v
bm1vdXNlb3V0OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmIChldmVudC50YXJn
ZXQgIT09IHRoaXMuZWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5o
b3ZlcmVkRE9NTm9kZSA9IG51bGw7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuRWxlbWVudHNU
cmVlT3V0bGluZS5wcm90b3R5cGUuX19wcm90b19fID0gVHJlZU91dGxpbmUucHJvdG90eXBlOwor
CisKKworV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihub2RlKQor
eworICAgIHZhciBoYXNDaGlsZHJlbiA9IG5vZGUuY29udGVudERvY3VtZW50IHx8IChQcmVmZXJl
bmNlcy5pZ25vcmVXaGl0ZXNwYWNlID8gKGZpcnN0Q2hpbGRTa2lwcGluZ1doaXRlc3BhY2UuY2Fs
bChub2RlKSA/IHRydWUgOiBmYWxzZSkgOiBub2RlLmhhc0NoaWxkTm9kZXMoKSk7CisgICAgdmFy
IHRpdGxlSW5mbyA9IG5vZGVUaXRsZUluZm8uY2FsbChub2RlLCBoYXNDaGlsZHJlbiwgV2ViSW5z
cGVjdG9yLmxpbmtpZnlVUkwpOworCisgICAgaWYgKHRpdGxlSW5mby5oYXNDaGlsZHJlbikgCisg
ICAgICAgIHRoaXMud2hpdGVzcGFjZUlnbm9yZWQgPSBQcmVmZXJlbmNlcy5pZ25vcmVXaGl0ZXNw
YWNlOworCisgICAgVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCB0aXRsZUluZm8udGl0bGUsIG5vZGUs
IHRpdGxlSW5mby5oYXNDaGlsZHJlbik7Cit9CisKK1dlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKKyAgICB1cGRhdGVTZWxlY3Rpb246IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHZhciBsaXN0SXRlbUVsZW1lbnQgPSB0aGlzLmxpc3RJdGVtRWxlbWVudDsK
KyAgICAgICAgaWYgKCFsaXN0SXRlbUVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgaWYgKGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGggPD0gMCkgeworICAgICAgICAgICAg
Ly8gVGhlIHN0eWxlc2hlZXQgaGFzbid0IGxvYWRlZCB5ZXQgb3IgdGhlIHdpbmRvdyBpcyBjbG9z
ZWQsCisgICAgICAgICAgICAvLyBzbyB3ZSBjYW4ndCBjYWxjdWxhdGUgd2hhdCBpcyBuZWVkLiBS
ZXR1cm4gZWFybHkuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoIXRoaXMuc2VsZWN0aW9uRWxlbWVudCkgeworICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25F
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgICAgICB0aGlz
LnNlbGVjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gInNlbGVjdGlvbiBzZWxlY3RlZCI7CisgICAg
ICAgICAgICBsaXN0SXRlbUVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMuc2VsZWN0aW9uRWxlbWVu
dCwgbGlzdEl0ZW1FbGVtZW50LmZpcnN0Q2hpbGQpOworICAgICAgICB9CisKKyAgICAgICAgdGhp
cy5zZWxlY3Rpb25FbGVtZW50LnN0eWxlLmhlaWdodCA9IGxpc3RJdGVtRWxlbWVudC5vZmZzZXRI
ZWlnaHQgKyAicHgiOworICAgIH0sCisKKyAgICBvbmF0dGFjaDogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3du
IiwgdGhpcy5vbm1vdXNlZG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7CisKKyAgICAgICAgdGhpcy5f
cHJldmVudEZvbGxvd2luZ0xpbmtzT25Eb3VibGVDbGljaygpOworICAgIH0sCisKKyAgICBfcHJl
dmVudEZvbGxvd2luZ0xpbmtzT25Eb3VibGVDbGljazogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgdmFyIGxpbmtzID0gdGhpcy5saXN0SXRlbUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgibGkg
PiAud2Via2l0LWh0bWwtdGFnID4gLndlYmtpdC1odG1sLWF0dHJpYnV0ZSA+IC53ZWJraXQtaHRt
bC1leHRlcm5hbC1saW5rLCBsaSA+IC53ZWJraXQtaHRtbC10YWcgPiAud2Via2l0LWh0bWwtYXR0
cmlidXRlID4gLndlYmtpdC1odG1sLXJlc291cmNlLWxpbmsiKTsKKyAgICAgICAgaWYgKCFsaW5r
cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxp
bmtzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgbGlua3NbaV0ucHJldmVudEZvbGxvd09uRG91
YmxlQ2xpY2sgPSB0cnVlOworICAgIH0sCisKKyAgICBvbnBvcHVsYXRlOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggfHwgdGhpcy53aGl0ZXNwYWNl
SWdub3JlZCAhPT0gUHJlZmVyZW5jZXMuaWdub3JlV2hpdGVzcGFjZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB0aGlzLndoaXRlc3BhY2VJZ25vcmVkID0gUHJlZmVyZW5jZXMuaWdu
b3JlV2hpdGVzcGFjZTsKKworICAgICAgICB0aGlzLnVwZGF0ZUNoaWxkcmVuKCk7CisgICAgfSwK
KworICAgIHVwZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbihmdWxsUmVmcmVzaCkKKyAgICB7CisgICAg
ICAgIGlmIChmdWxsUmVmcmVzaCkgeworICAgICAgICAgICAgdmFyIHNlbGVjdGVkVHJlZUVsZW1l
bnQgPSB0aGlzLnRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQ7CisgICAgICAgICAgICBp
ZiAoc2VsZWN0ZWRUcmVlRWxlbWVudCAmJiBzZWxlY3RlZFRyZWVFbGVtZW50Lmhhc0FuY2VzdG9y
KHRoaXMpKQorICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCk7CisgICAgICAgICAgICB0aGlz
LnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgdHJlZUVsZW1lbnQg
PSB0aGlzOworICAgICAgICB2YXIgdHJlZUNoaWxkSW5kZXggPSAwOworCisgICAgICAgIGZ1bmN0
aW9uIHVwZGF0ZUNoaWxkcmVuT2ZOb2RlKG5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciB0cmVlT3V0bGluZSA9IHRyZWVFbGVtZW50LnRyZWVPdXRsaW5lOworICAgICAgICAgICAgdmFy
IGNoaWxkID0gKFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UgPyBmaXJzdENoaWxkU2tpcHBp
bmdXaGl0ZXNwYWNlLmNhbGwobm9kZSkgOiBub2RlLmZpcnN0Q2hpbGQpOworICAgICAgICAgICAg
d2hpbGUgKGNoaWxkKSB7CisgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRUcmVlRWxlbWVudCA9
IHRyZWVFbGVtZW50LmNoaWxkcmVuW3RyZWVDaGlsZEluZGV4XTsKKyAgICAgICAgICAgICAgICBp
ZiAoIWN1cnJlbnRUcmVlRWxlbWVudCB8fCAhb2JqZWN0c0FyZVNhbWUoY3VycmVudFRyZWVFbGVt
ZW50LnJlcHJlc2VudGVkT2JqZWN0LCBjaGlsZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8g
RmluZCBhbnkgZXhpc3RpbmcgZWxlbWVudCB0aGF0IGlzIGxhdGVyIGluIHRoZSBjaGlsZHJlbiBs
aXN0LgorICAgICAgICAgICAgICAgICAgICB2YXIgZXhpc3RpbmdUcmVlRWxlbWVudCA9IG51bGw7
CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAodHJlZUNoaWxkSW5kZXggKyAxKTsg
aSA8IHRyZWVFbGVtZW50LmNoaWxkcmVuLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAob2JqZWN0c0FyZVNhbWUodHJlZUVsZW1lbnQuY2hpbGRyZW5baV0ucmVwcmVz
ZW50ZWRPYmplY3QsIGNoaWxkKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0
aW5nVHJlZUVsZW1lbnQgPSB0cmVlRWxlbWVudC5jaGlsZHJlbltpXTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ1RyZWVFbGVt
ZW50ICYmIGV4aXN0aW5nVHJlZUVsZW1lbnQucGFyZW50ID09PSB0cmVlRWxlbWVudCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gSWYgYW4gZXhpc3RpbmcgZWxlbWVudCB3YXMgZm91bmQg
YW5kIGl0IGhhcyB0aGUgc2FtZSBwYXJlbnQsIGp1c3QgbW92ZSBpdC4KKyAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciB3YXNTZWxlY3RlZCA9IGV4aXN0aW5nVHJlZUVsZW1lbnQuc2VsZWN0ZWQ7
CisgICAgICAgICAgICAgICAgICAgICAgICB0cmVlRWxlbWVudC5yZW1vdmVDaGlsZChleGlzdGlu
Z1RyZWVFbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50Lmluc2Vy
dENoaWxkKGV4aXN0aW5nVHJlZUVsZW1lbnQsIHRyZWVDaGlsZEluZGV4KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh3YXNTZWxlY3RlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleGlzdGluZ1RyZWVFbGVtZW50LnNlbGVjdCgpOworICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8gZXhpc3RpbmcgZWxlbWVudCBmb3Vu
ZCwgaW5zZXJ0IGEgbmV3IGVsZW1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICB0cmVlRWxl
bWVudC5pbnNlcnRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQoY2hp
bGQpLCB0cmVlQ2hpbGRJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBjaGlsZCA9IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRl
c3BhY2UgPyBuZXh0U2libGluZ1NraXBwaW5nV2hpdGVzcGFjZS5jYWxsKGNoaWxkKSA6IGNoaWxk
Lm5leHRTaWJsaW5nOworICAgICAgICAgICAgICAgICsrdHJlZUNoaWxkSW5kZXg7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBSZW1vdmUgYW55IHRyZWUgZWxlbWVudHMg
dGhhdCBubyBsb25nZXIgaGF2ZSB0aGlzIG5vZGUgKG9yIHRoaXMgbm9kZSdzIGNvbnRlbnREb2N1
bWVudCkgYXMgdGhlaXIgcGFyZW50LgorICAgICAgICBmb3IgKHZhciBpID0gKHRoaXMuY2hpbGRy
ZW4ubGVuZ3RoIC0gMSk7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAgICBpZiAoImVsZW1lbnRD
bG9zZVRhZyIgaW4gdGhpcy5jaGlsZHJlbltpXSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICAgICAgdmFyIGN1cnJlbnRDaGlsZCA9IHRoaXMuY2hpbGRyZW5baV07CisgICAg
ICAgICAgICB2YXIgY3VycmVudE5vZGUgPSBjdXJyZW50Q2hpbGQucmVwcmVzZW50ZWRPYmplY3Q7
CisgICAgICAgICAgICB2YXIgY3VycmVudFBhcmVudE5vZGUgPSBjdXJyZW50Tm9kZS5wYXJlbnRO
b2RlOworCisgICAgICAgICAgICBpZiAob2JqZWN0c0FyZVNhbWUoY3VycmVudFBhcmVudE5vZGUs
IHRoaXMucmVwcmVzZW50ZWRPYmplY3QpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY29udGVudERvY3VtZW50ICYmIG9i
amVjdHNBcmVTYW1lKGN1cnJlbnRQYXJlbnROb2RlLCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmNv
bnRlbnREb2N1bWVudCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAg
IHZhciBzZWxlY3RlZFRyZWVFbGVtZW50ID0gdGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVF
bGVtZW50OworICAgICAgICAgICAgaWYgKHNlbGVjdGVkVHJlZUVsZW1lbnQgJiYgKHNlbGVjdGVk
VHJlZUVsZW1lbnQgPT09IGN1cnJlbnRDaGlsZCB8fCBzZWxlY3RlZFRyZWVFbGVtZW50Lmhhc0Fu
Y2VzdG9yKGN1cnJlbnRDaGlsZCkpKQorICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCk7CisK
KyAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRBdEluZGV4KGkpOworCisgICAgICAgICAgICBp
ZiAodGhpcy50cmVlT3V0bGluZS5wYW5lbCAmJiBjdXJyZW50Tm9kZS5jb250ZW50RG9jdW1lbnQp
CisgICAgICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5wYW5lbC51bnJlZ2lzdGVyTXV0YXRp
b25FdmVudExpc3RlbmVycyhjdXJyZW50Tm9kZS5jb250ZW50RG9jdW1lbnQuZGVmYXVsdFZpZXcp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY29udGVu
dERvY3VtZW50KQorICAgICAgICAgICAgdXBkYXRlQ2hpbGRyZW5PZk5vZGUodGhpcy5yZXByZXNl
bnRlZE9iamVjdC5jb250ZW50RG9jdW1lbnQpOworICAgICAgICB1cGRhdGVDaGlsZHJlbk9mTm9k
ZSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKKworICAgICAgICB2YXIgbGFzdENoaWxkID0gdGhp
cy5jaGlsZHJlblt0aGlzLmNoaWxkcmVuLmxlbmd0aCAtIDFdOworICAgICAgICBpZiAodGhpcy5y
ZXByZXNlbnRlZE9iamVjdC5ub2RlVHlwZSA9PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiAoIWxhc3RD
aGlsZCB8fCAhbGFzdENoaWxkLmVsZW1lbnRDbG9zZVRhZykpIHsKKyAgICAgICAgICAgIHZhciB0
aXRsZSA9ICI8c3BhbiBjbGFzcz1cIndlYmtpdC1odG1sLXRhZyBjbG9zZVwiPiZsdDsvIiArIHRo
aXMucmVwcmVzZW50ZWRPYmplY3Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKS5lc2NhcGVIVE1MKCkg
KyAiJmd0Ozwvc3Bhbj4iOworICAgICAgICAgICAgdmFyIGl0ZW0gPSBuZXcgVHJlZUVsZW1lbnQo
dGl0bGUsIG51bGwsIGZhbHNlKTsKKyAgICAgICAgICAgIGl0ZW0uc2VsZWN0YWJsZSA9IGZhbHNl
OworICAgICAgICAgICAgaXRlbS5lbGVtZW50Q2xvc2VUYWcgPSB0cnVlOworICAgICAgICAgICAg
dGhpcy5hcHBlbmRDaGlsZChpdGVtKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBvbmV4cGFu
ZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy50cmVlT3V0bGluZS51cGRhdGVUcmVl
U2VsZWN0aW9uKCk7CisKKyAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUucGFuZWwgJiYgdGhp
cy5yZXByZXNlbnRlZE9iamVjdC5jb250ZW50RG9jdW1lbnQpCisgICAgICAgICAgICB0aGlzLnRy
ZWVPdXRsaW5lLnBhbmVsLnJlZ2lzdGVyTXV0YXRpb25FdmVudExpc3RlbmVycyh0aGlzLnJlcHJl
c2VudGVkT2JqZWN0LmNvbnRlbnREb2N1bWVudC5kZWZhdWx0Vmlldyk7CisgICAgfSwKKworICAg
IG9uY29sbGFwc2U6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMudHJlZU91dGxpbmUu
dXBkYXRlVHJlZVNlbGVjdGlvbigpOworICAgIH0sCisKKyAgICBvbnJldmVhbDogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMubGlzdEl0ZW1FbGVtZW50KQorICAgICAgICAgICAg
dGhpcy5saXN0SXRlbUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChmYWxzZSk7CisgICAg
fSwKKworICAgIG9uc2VsZWN0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLnRyZWVP
dXRsaW5lLmZvY3VzZWRET01Ob2RlID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKKyAgICAgICAg
dGhpcy51cGRhdGVTZWxlY3Rpb24oKTsKKyAgICB9LAorCisgICAgb25tb3VzZWRvd246IGZ1bmN0
aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2VkaXRpbmcpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgLy8gUHJldmVudCBzZWxlY3RpbmcgdGhlIG5lYXJlc3Qgd29y
ZCBvbiBkb3VibGUgY2xpY2suCisgICAgICAgIGlmIChldmVudC5kZXRhaWwgPj0gMikKKyAgICAg
ICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgfSwKKworICAgIG9uZGJsY2xpY2s6
IGZ1bmN0aW9uKHRyZWVFbGVtZW50LCBldmVudCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9l
ZGl0aW5nKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0aGlzLl9zdGFydEVk
aXRpbmcoZXZlbnQpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMudHJlZU91
dGxpbmUucm9vdERPTU5vZGUgPSB0aGlzLnBhcmVudC5yZXByZXNlbnRlZE9iamVjdDsKKyAgICAg
ICAgdGhpcy50cmVlT3V0bGluZS5mb2N1c2VkRE9NTm9kZSA9IHRoaXMucmVwcmVzZW50ZWRPYmpl
Y3Q7CisKKyAgICAgICAgaWYgKHRoaXMuaGFzQ2hpbGRyZW4gJiYgIXRoaXMuZXhwYW5kZWQpCisg
ICAgICAgICAgICB0aGlzLmV4cGFuZCgpOworICAgIH0sCisKKyAgICBfc3RhcnRFZGl0aW5nOiBm
dW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lLmZvY3Vz
ZWRET01Ob2RlICE9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3Qubm9kZVR5cGUgIT0gTm9kZS5F
TEVNRU5UX05PREUgJiYgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5ub2RlVHlwZSAhPSBOb2RlLlRF
WFRfTk9ERSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB2YXIgdGV4dE5v
ZGUgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygid2Via2l0LWh0
bWwtdGV4dC1ub2RlIik7CisgICAgICAgIGlmICh0ZXh0Tm9kZSkKKyAgICAgICAgICAgIHJldHVy
biB0aGlzLl9zdGFydEVkaXRpbmdUZXh0Tm9kZSh0ZXh0Tm9kZSk7CisKKyAgICAgICAgdmFyIGF0
dHJpYnV0ZSA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJ3ZWJr
aXQtaHRtbC1hdHRyaWJ1dGUiKTsKKyAgICAgICAgaWYgKGF0dHJpYnV0ZSkKKyAgICAgICAgICAg
IHJldHVybiB0aGlzLl9zdGFydEVkaXRpbmdBdHRyaWJ1dGUoYXR0cmlidXRlLCBldmVudCk7CisK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0sCisKKyAgICBfc3RhcnRFZGl0aW5nQXR0cmli
dXRlOiBmdW5jdGlvbihhdHRyaWJ1dGUsIGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKFdlYklu
c3BlY3Rvci5pc0JlaW5nRWRpdGVkKGF0dHJpYnV0ZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgICAgICB2YXIgYXR0cmlidXRlTmFtZUVsZW1lbnQgPSBhdHRyaWJ1dGUuZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZSgid2Via2l0LWh0bWwtYXR0cmlidXRlLW5hbWUiKVswXTsKKyAgICAg
ICAgaWYgKCFhdHRyaWJ1dGVOYW1lRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICB2YXIgYXR0cmlidXRlTmFtZSA9IGF0dHJpYnV0ZU5hbWVFbGVtZW50LmlubmVy
VGV4dDsKKworICAgICAgICBmdW5jdGlvbiByZW1vdmVaZXJvV2lkdGhTcGFjZVJlY3Vyc2l2ZShu
b2RlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5U
RVhUX05PREUpIHsKKyAgICAgICAgICAgICAgICBub2RlLm5vZGVWYWx1ZSA9IG5vZGUubm9kZVZh
bHVlLnJlcGxhY2UoL1x1MjAwQi9nLCAiIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSAhPT0gTm9kZS5FTEVN
RU5UX05PREUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBmb3IgKHZh
ciBjaGlsZCA9IG5vZGUuZmlyc3RDaGlsZDsgY2hpbGQ7IGNoaWxkID0gY2hpbGQubmV4dFNpYmxp
bmcpCisgICAgICAgICAgICAgICAgcmVtb3ZlWmVyb1dpZHRoU3BhY2VSZWN1cnNpdmUoY2hpbGQp
OworICAgICAgICB9CisKKyAgICAgICAgLy8gUmVtb3ZlIHplcm8td2lkdGggc3BhY2VzIHRoYXQg
d2VyZSBhZGRlZCBieSBub2RlVGl0bGVJbmZvLgorICAgICAgICByZW1vdmVaZXJvV2lkdGhTcGFj
ZVJlY3Vyc2l2ZShhdHRyaWJ1dGUpOworCisgICAgICAgIHRoaXMuX2VkaXRpbmcgPSB0cnVlOwor
CisgICAgICAgIFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcoYXR0cmlidXRlLCB0aGlzLl9hdHRy
aWJ1dGVFZGl0aW5nQ29tbWl0dGVkLmJpbmQodGhpcyksIHRoaXMuX2VkaXRpbmdDYW5jZWxsZWQu
YmluZCh0aGlzKSwgYXR0cmlidXRlTmFtZSk7CisgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5zZXRCYXNlQW5kRXh0ZW50KGV2ZW50LnRhcmdldCwgMCwgZXZlbnQudGFyZ2V0LCAxKTsKKwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgX3N0YXJ0RWRpdGluZ1RleHROb2Rl
OiBmdW5jdGlvbih0ZXh0Tm9kZSkKKyAgICB7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuaXNC
ZWluZ0VkaXRlZCh0ZXh0Tm9kZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAg
ICB0aGlzLl9lZGl0aW5nID0gdHJ1ZTsKKworICAgICAgICBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0
aW5nKHRleHROb2RlLCB0aGlzLl90ZXh0Tm9kZUVkaXRpbmdDb21taXR0ZWQuYmluZCh0aGlzKSwg
dGhpcy5fZWRpdGluZ0NhbmNlbGxlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQodGV4dE5vZGUsIDAsIHRleHROb2RlLCAxKTsKKwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgX2F0dHJpYnV0ZUVkaXRpbmdDb21t
aXR0ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIG5ld1RleHQsIG9sZFRleHQsIGF0dHJpYnV0ZU5hbWUp
CisgICAgeworICAgICAgICBkZWxldGUgdGhpcy5fZWRpdGluZzsKKworICAgICAgICB2YXIgcGFy
c2VDb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAg
ICAgICBwYXJzZUNvbnRhaW5lckVsZW1lbnQuaW5uZXJIVE1MID0gIjxzcGFuICIgKyBuZXdUZXh0
ICsgIj48L3NwYW4+IjsKKyAgICAgICAgdmFyIHBhcnNlRWxlbWVudCA9IHBhcnNlQ29udGFpbmVy
RWxlbWVudC5maXJzdENoaWxkOworICAgICAgICBpZiAoIXBhcnNlRWxlbWVudCB8fCAhcGFyc2VF
bGVtZW50Lmhhc0F0dHJpYnV0ZXMoKSkgeworICAgICAgICAgICAgZWRpdGluZ0NhbmNlbGxlZChl
bGVtZW50LCBjb250ZXh0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIHZhciBmb3VuZE9yaWdpbmFsQXR0cmlidXRlID0gZmFsc2U7CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgcGFyc2VFbGVtZW50LmF0dHJpYnV0ZXMubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgIHZhciBhdHRyID0gcGFyc2VFbGVtZW50LmF0dHJpYnV0ZXNbaV07CisgICAgICAgICAg
ICBmb3VuZE9yaWdpbmFsQXR0cmlidXRlID0gZm91bmRPcmlnaW5hbEF0dHJpYnV0ZSB8fCBhdHRy
Lm5hbWUgPT09IGF0dHJpYnV0ZU5hbWU7CisgICAgICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVy
Lmluc3BlY3RlZFdpbmRvdygpLkVsZW1lbnQucHJvdG90eXBlLnNldEF0dHJpYnV0ZS5jYWxsKHRo
aXMucmVwcmVzZW50ZWRPYmplY3QsIGF0dHIubmFtZSwgYXR0ci52YWx1ZSk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoIWZvdW5kT3JpZ2luYWxBdHRyaWJ1dGUpCisgICAgICAgICAgICBJbnNw
ZWN0b3JDb250cm9sbGVyLmluc3BlY3RlZFdpbmRvdygpLkVsZW1lbnQucHJvdG90eXBlLnJlbW92
ZUF0dHJpYnV0ZS5jYWxsKHRoaXMucmVwcmVzZW50ZWRPYmplY3QsIGF0dHJpYnV0ZU5hbWUpOwor
CisgICAgICAgIHRoaXMuX3VwZGF0ZVRpdGxlKCk7CisgICAgICAgIHRoaXMudHJlZU91dGxpbmUu
b25Gb2N1c2VkTm9kZUNoYW5nZWQodHJ1ZSk7CisgICAgfSwKKworICAgIF90ZXh0Tm9kZUVkaXRp
bmdDb21taXR0ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIG5ld1RleHQpCisgICAgeworICAgICAgICBk
ZWxldGUgdGhpcy5fZWRpdGluZzsKKworICAgICAgICB2YXIgdGV4dE5vZGU7CisgICAgICAgIGlm
ICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm5vZGVUeXBlID09IE5vZGUuRUxFTUVOVF9OT0RFKSB7
CisgICAgICAgICAgICAvLyBXZSBvbmx5IHNob3cgdGV4dCBub2RlcyBpbmxpbmUgaW4gZWxlbWVu
dHMgaWYgdGhlIGVsZW1lbnQgb25seQorICAgICAgICAgICAgLy8gaGFzIGEgc2luZ2xlIGNoaWxk
LCBhbmQgdGhhdCBjaGlsZCBpcyBhIHRleHQgbm9kZS4KKyAgICAgICAgICAgIHRleHROb2RlID0g
dGhpcy5yZXByZXNlbnRlZE9iamVjdC5maXJzdENoaWxkOworICAgICAgICB9IGVsc2UgaWYgKHRo
aXMucmVwcmVzZW50ZWRPYmplY3Qubm9kZVR5cGUgPT0gTm9kZS5URVhUX05PREUpCisgICAgICAg
ICAgICB0ZXh0Tm9kZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CisKKyAgICAgICAgdGV4dE5v
ZGUubm9kZVZhbHVlID0gbmV3VGV4dDsKKyAgICAgICAgdGhpcy5fdXBkYXRlVGl0bGUoKTsKKyAg
ICB9LAorCisgICAgX2VkaXRpbmdDYW5jZWxsZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRleHQp
CisgICAgeworICAgICAgICBkZWxldGUgdGhpcy5fZWRpdGluZzsKKworICAgICAgICB0aGlzLl91
cGRhdGVUaXRsZSgpOworICAgIH0sCisKKyAgICBfdXBkYXRlVGl0bGU6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHRoaXMudGl0bGUgPSBub2RlVGl0bGVJbmZvLmNhbGwodGhpcy5yZXByZXNl
bnRlZE9iamVjdCwgdGhpcy5oYXNDaGlsZHJlbiwgV2ViSW5zcGVjdG9yLmxpbmtpZnlVUkwpLnRp
dGxlOworICAgICAgICBkZWxldGUgdGhpcy5zZWxlY3Rpb25FbGVtZW50OworICAgICAgICB0aGlz
LnVwZGF0ZVNlbGVjdGlvbigpOworICAgICAgICB0aGlzLl9wcmV2ZW50Rm9sbG93aW5nTGlua3NP
bkRvdWJsZUNsaWNrKCk7CisgICAgfSwKK30KKworV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVs
ZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFRyZWVFbGVtZW50LnByb3RvdHlwZTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBXZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL2luc3Bl
Y3Rvci5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9pbnNwZWN0b3Iu
Y3NzCShyZXZpc2lvbiAzNTgxNykKKysrIFdlYkNvcmUvcGFnZS9pbnNwZWN0b3IvaW5zcGVjdG9y
LmNzcwkod29ya2luZyBjb3B5KQpAQCAtOTM2LDcgKzkzNiw3IEBAIGJvZHkuY29uc29sZS12aXNp
YmxlICNjb25zb2xlIHsKICAgICB0ZXh0LWluZGVudDogLTEycHgKIH0KIAotLmVsZW1lbnRzLnBh
bmVsIC5vdXRsaW5lLWRpc2Nsb3N1cmUgbGkgLndlYmtpdC1odG1sLXRhZy5jbG9zZSB7Cisub3V0
bGluZS1kaXNjbG9zdXJlIGxpIC53ZWJraXQtaHRtbC10YWcuY2xvc2UgewogICAgIG1hcmdpbi1s
ZWZ0OiAtMTJweDsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22852</attachid>
            <date>2008-08-18 08:34:50 -0700</date>
            <delta_ts>2008-09-06 20:33:49 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch23.txt</filename>
            <type>text/plain</type>
            <size>61362</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTgxNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDgtMDgtMTggIEtlaXNoaSBIYXR0b3JpICA8Y2FzZXkuaGF0dG9y
aUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkcyBjb25zb2xlLmRpcnhtbCBzdXBwb3J0IHRvIHRoZSBJbnNwZWN0b3IuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE1NgorCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ29uc29sZTo6ZGlyeG1sKToKKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29uc29sZTo6ZGlyeG1sKTogQWRkcyBhIE5vZGVNZXNzYWdlTGV2ZWwgQ29u
c29sZU1lc3NhZ2UuCisgICAgICAgICogcGFnZS9Db25zb2xlLmg6CisgICAgICAgIChXZWJDb3Jl
OjopOiBBZGRlZCBOb2RlTWVzc2FnZUxldmVsLgorICAgICAgICAqIHBhZ2UvQ29uc29sZS5pZGw6
IEFkZGVkIGNvbnNvbGUuZGlyeG1sLgorICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL0NvbnNvbGUu
anM6CisgICAgICAgICogcGFnZS9pbnNwZWN0b3IvRWxlbWVudHNQYW5lbC5qczogTW92ZWQgYSBn
ZW5lcmFsIG1ldGhvZHMgdG8gRWxlbWVudHNUcmVlT3V0bGluZS4gCisgICAgICAgICogcGFnZS9p
bnNwZWN0b3IvRWxlbWVudHNUcmVlT3V0bGluZS5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRWxlbWVudHNUcmVlT3V0bGluZSk6IEEgc3ViY2xhc3Mgb2YgVHJlZU91dGxpbmUgZm9y
IGRpc3BsYXlpbmcgYSBET00gbm9kZSB0cmVlLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1l
bnRzVHJlZUVsZW1lbnQpOiBBIHN1YmNsYXNzIG9mIFRyZWVFbGVtZW50IGZvciBFbGVtZW50c1Ry
ZWVPdXRsaW5lLgorICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL2luc3BlY3Rvci5jc3M6IEZpeGVk
IHRvIGJlIGFwcGxpZWQgdG8gYWxsIEVsZW1lbnRzVHJlZU91dGxpbmVzLgorCiAyMDA4LTA4LTE4
ICBEaXJrIFNjaHVsemUgIDx2YnM4NUBnbXguZGU+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBTZWlkZWwuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwCShy
ZXZpc2lvbiAzNTgxNykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsMTIgQEAgSlNWYWx1ZSogSlNDb25zb2xlOjpk
aXIoRXhlY1N0YXRlKiBleGVjLAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCitKU1Zh
bHVlKiBKU0NvbnNvbGU6OmRpcnhtbChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFy
Z3VtZW50cykKK3sKKyAgICBpbXBsKCktPmRpcnhtbChleGVjLCBhcmd1bWVudHMpOworICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworfQorCiBKU1ZhbHVlKiBKU0NvbnNvbGU6OmFzc2VydENvbmRp
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3VtZW50cykKIHsKICAgICBB
cmdMaXN0IG1lc3NhZ2VQYXJhbWV0ZXJzOwpJbmRleDogV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAkocmV2aXNpb24gMzU4MTcp
CisrKyBXZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw2ICsy
NDUsMjEgQEAgdm9pZCBDb25zb2xlOjpkaXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdAogICAgIHBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VT
b3VyY2UsIE9iamVjdE1lc3NhZ2VMZXZlbCwgZXhlYywgYXJncywgMCwgU3RyaW5nKCkpOwogfQog
Cit2b2lkIENvbnNvbGU6OmRpcnhtbChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFy
Z3MpCit7CisgICAgaWYgKGFyZ3MuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1l
LT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBwYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNl
LCBOb2RlTWVzc2FnZUxldmVsLCBleGVjLCBhcmdzLCAwLCBTdHJpbmcoKSk7Cit9CisKIHZvaWQg
Q29uc29sZTo6YXNzZXJ0Q29uZGl0aW9uKGJvb2wgY29uZGl0aW9uLCBFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgaWYgKGNvbmRpdGlvbikKSW5kZXg6IFdlYkNv
cmUvcGFnZS9Db25zb2xlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0NvbnNvbGUuaAko
cmV2aXNpb24gMzU4MTcpCisrKyBXZWJDb3JlL3BhZ2UvQ29uc29sZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MCw2ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV2FybmluZ01l
c3NhZ2VMZXZlbCwKICAgICAgICAgRXJyb3JNZXNzYWdlTGV2ZWwsCiAgICAgICAgIE9iamVjdE1l
c3NhZ2VMZXZlbCwKKyAgICAgICAgTm9kZU1lc3NhZ2VMZXZlbCwKICAgICAgICAgU3RhcnRHcm91
cE1lc3NhZ2VMZXZlbCwKICAgICAgICAgRW5kR3JvdXBNZXNzYWdlTGV2ZWwKICAgICB9OwpAQCAt
NzgsNiArNzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgbG9nKEtKUzo6
RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpBcmdMaXN0JiBhcmd1bWVudHMpOwogICAgICAgICB2b2lk
IHdhcm4oS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OkFyZ0xpc3QmIGFyZ3VtZW50cyk7CiAg
ICAgICAgIHZvaWQgZGlyKEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpBcmdMaXN0JiBhcmd1
bWVudHMpOworICAgICAgICB2b2lkIGRpcnhtbChLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6
QXJnTGlzdCYgYXJndW1lbnRzKTsKICAgICAgICAgdm9pZCBhc3NlcnRDb25kaXRpb24oYm9vbCBj
b25kaXRpb24sIEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpBcmdMaXN0JiBhcmd1bWVudHMp
OwogICAgICAgICB2b2lkIHByb2ZpbGUoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OkFyZ0xp
c3QmIGFyZ3VtZW50cyk7CiAgICAgICAgIHZvaWQgcHJvZmlsZUVuZChLSlM6OkV4ZWNTdGF0ZSos
IGNvbnN0IEtKUzo6QXJnTGlzdCYgYXJndW1lbnRzKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9Db25z
b2xlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ29uc29sZS5pZGwJKHJldmlzaW9u
IDM1ODE3KQorKysgV2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw2ICszNSw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBbQ3VzdG9tXSB2b2lkIGxvZygp
OwogICAgICAgICBbQ3VzdG9tXSB2b2lkIHdhcm4oKTsKICAgICAgICAgW0N1c3RvbV0gdm9pZCBk
aXIoKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBkaXJ4bWwoKTsKICAgICAgICAgW0N1c3RvbSwg
SW1wbGVtZW50YXRpb25GdW5jdGlvbj1hc3NlcnRDb25kaXRpb25dIHZvaWQgYXNzZXJ0KGluIGJv
b2xlYW4gY29uZGl0aW9uKTsKIAogICAgICAgICBbQ3VzdG9tXSB2b2lkIHByb2ZpbGUoaW4gRE9N
U3RyaW5nIHRpdGxlKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9pbnNwZWN0b3IvQ29uc29sZS5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL0NvbnNvbGUuanMJKHJldmlzaW9u
IDM1ODE3KQorKysgV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9Db25zb2xlLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0zNDcsNiArMzQ3LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGUucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZXM7IFwKICAgICAgICAgICAgICAgICB9
LCBcCiAgICAgICAgICAgICAgICAgZGlyOiBmdW5jdGlvbigpIHsgcmV0dXJuIGNvbnNvbGUuZGly
LmFwcGx5KGNvbnNvbGUsIGFyZ3VtZW50cykgfSwgXAorICAgICAgICAgICAgICAgIGRpcnhtbDog
ZnVuY3Rpb24oKSB7IHJldHVybiBjb25zb2xlLmRpcnhtbC5hcHBseShjb25zb2xlLCBhcmd1bWVu
dHMpIH0sIFwKICAgICAgICAgICAgICAgICBrZXlzOiBmdW5jdGlvbihvKSB7IHZhciBhID0gW107
IGZvciAoayBpbiBvKSBhLnB1c2goayk7IHJldHVybiBhOyB9LCBcCiAgICAgICAgICAgICAgICAg
dmFsdWVzOiBmdW5jdGlvbihvKSB7IHZhciBhID0gW107IGZvciAoayBpbiBvKSBhLnB1c2gob1tr
XSk7IHJldHVybiBhOyB9LCBcCiAgICAgICAgICAgICAgICAgcHJvZmlsZTogZnVuY3Rpb24oKSB7
IHJldHVybiBjb25zb2xlLnByb2ZpbGUuYXBwbHkoY29uc29sZSwgYXJndW1lbnRzKSB9LCBcCkBA
IC01MTksNiArNTIwLDEyIEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZSA9IGZ1bmN0aW9u
KHMKICAgICAgICAgdmFyIHByb3BlcnRpZXNTZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5PYmpl
Y3RQcm9wZXJ0aWVzU2VjdGlvbihhcmd1bWVudHNbNV0sIG51bGwsIG51bGwsIG51bGwsIHRydWUp
OwogICAgICAgICBwcm9wZXJ0aWVzU2VjdGlvbi5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoImNvbnNv
bGUtbWVzc2FnZSIpOwogICAgICAgICB0aGlzLnByb3BlcnRpZXNTZWN0aW9uID0gcHJvcGVydGll
c1NlY3Rpb247CisgICAgfSBlbHNlIGlmICh0aGlzLmxldmVsID09PSBXZWJJbnNwZWN0b3IuQ29u
c29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLk5vZGUpIHsKKyAgICAgICAgdmFyIG5vZGUgPSBhcmd1
bWVudHNbNV07CisgICAgICAgIGlmICghKG5vZGUgaW5zdGFuY2VvZiBJbnNwZWN0b3JDb250cm9s
bGVyLmluc3BlY3RlZFdpbmRvdygpLk5vZGUpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB0aGlzLmVsZW1lbnRzVHJlZU91dGxpbmUgPSBuZXcgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJl
ZU91dGxpbmUoKTsKKyAgICAgICAgdGhpcy5lbGVtZW50c1RyZWVPdXRsaW5lLnJvb3RET01Ob2Rl
ID0gbm9kZTsKICAgICB9CiAKICAgICBpZiAodXJsICYmIGxpbmUgPiAwICYmIHRoaXMuaXNFcnJv
ck9yV2FybmluZygpKSB7CkBAIC01OTEsNyArNTk4LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlLnByb3RvdHlwZSA9IAogCiAgICAgdG9NZXNzYWdlRWxlbWVudDogZnVuY3Rpb24oKQog
ICAgIHsKLSAgICAgICAgaWYgKHRoaXMubGV2ZWwgPT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVz
c2FnZS5NZXNzYWdlTGV2ZWwuT2JqZWN0KQorICAgICAgICBpZiAodGhpcy5wcm9wZXJ0aWVzU2Vj
dGlvbikKICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3BlcnRpZXNTZWN0aW9uLmVsZW1lbnQ7
CiAKICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
QEAgLTYzMyw2ICs2NDAsMTIgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlw
ZSA9IAogICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFzcygiY29uc29sZS1ncm91
cC10aXRsZS1sZXZlbCIpOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKHRoaXMuZWxlbWVudHNU
cmVlT3V0bGluZSkgeworICAgICAgICAgICAgZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJvdXRsaW5l
LWRpc2Nsb3N1cmUiKTsKKyAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVt
ZW50c1RyZWVPdXRsaW5lLmVsZW1lbnQpOworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Cisg
ICAgICAgIH0KKwogICAgICAgICB2YXIgbWVzc2FnZVRleHRFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICBtZXNzYWdlVGV4dEVsZW1lbnQuY2xhc3NOYW1l
ID0gImNvbnNvbGUtbWVzc2FnZS10ZXh0IjsKICAgICAgICAgbWVzc2FnZVRleHRFbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuZm9ybWF0dGVkTWVzc2FnZSk7CkBAIC03MjIsOCArNzM1LDkgQEAgV2Vi
SW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbAogICAgIFdhcm5pbmc6IDIsCiAg
ICAgRXJyb3I6IDMsCiAgICAgT2JqZWN0OiA0LAotICAgIFN0YXJ0R3JvdXA6IDUsCi0gICAgRW5k
R3JvdXA6IDYKKyAgICBOb2RlOiA1LAorICAgIFN0YXJ0R3JvdXA6IDYsCisgICAgRW5kR3JvdXA6
IDcKIH0KIAogV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kID0gZnVuY3Rpb24oY29tbWFuZCwg
cmVzdWx0LCBmb3JtYXR0ZWRSZXN1bHRFbGVtZW50LCBsZXZlbCkKSW5kZXg6IFdlYkNvcmUvcGFn
ZS9pbnNwZWN0b3IvRWxlbWVudHNQYW5lbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
aW5zcGVjdG9yL0VsZW1lbnRzUGFuZWwuanMJKHJldmlzaW9uIDM1ODE3KQorKysgV2ViQ29yZS9w
YWdlL2luc3BlY3Rvci9FbGVtZW50c1BhbmVsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2MyAr
MjYsODEgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwg
PSBmdW5jdGlvbigpCi17Ci0gICAgV2ViSW5zcGVjdG9yLlBhbmVsLmNhbGwodGhpcyk7CisgV2Vi
SW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwgPSBmdW5jdGlvbigpCisgeworICAgICBXZWJJbnNwZWN0
b3IuUGFuZWwuY2FsbCh0aGlzKTsKKyAgICAgCisgICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNs
YXNzKCJlbGVtZW50cyIpOworICAgICAKKyAgICAgdGhpcy5jb250ZW50RWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmlkID0g
ImVsZW1lbnRzLWNvbnRlbnQiOworICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmNsYXNzTmFtZSA9
ICJvdXRsaW5lLWRpc2Nsb3N1cmUiOworICAgICAKKyAgICAgdGhpcy50cmVlT3V0bGluZSA9IG5l
dyBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlT3V0bGluZTsKKyAgICAgdGhpcy50cmVlT3V0bGlu
ZS5wYW5lbCA9IHRoaXM7CisgICAgIHRoaXMudHJlZU91dGxpbmUuaW5jbHVkZVJvb3RET01Ob2Rl
ID0gZmFsc2U7CisgICAgIHRoaXMudHJlZU91dGxpbmUuX3VwZGF0ZUhvdmVySGlnaGxpZ2h0ID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgICBpZiAoIl91cGRhdGVIb3ZlckhpZ2hsaWdodFRpbWVvdXQi
IGluIHRoaXMpIHsKKyAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fdXBkYXRlSG92ZXJI
aWdobGlnaHRUaW1lb3V0KTsKKyAgICAgICAgICAgICBkZWxldGUgdGhpcy5fdXBkYXRlSG92ZXJI
aWdobGlnaHRUaW1lb3V0OworICAgICAgICAgfQorCisgICAgICAgICBpZiAodGhpcy5faG92ZXJl
ZERPTU5vZGUgJiYgdGhpcy5wYW5lbC52aXNpYmxlICYmICh0aGlzLnBhbmVsLl9hbHRLZXlEb3du
IHx8IHRoaXMucGFuZWwuZm9yY2VIb3ZlckhpZ2hsaWdodCkpCisgICAgICAgICAgICAgSW5zcGVj
dG9yQ29udHJvbGxlci5oaWdobGlnaHRET01Ob2RlKHRoaXMuX2hvdmVyZWRET01Ob2RlKTsKKyAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLmhpZGVET01Ob2Rl
SGlnaGxpZ2h0KCk7CisgICAgIH0sCisgICAgIHRoaXMudHJlZU91dGxpbmUub25Gb2N1c2VkTm9k
ZUNoYW5nZWQgPSBmdW5jdGlvbihmb3JjZVVwZGF0ZSkgeworICAgICAgICAgdGhpcy5wYW5lbC51
cGRhdGVCcmVhZGNydW1iKGZvcmNlVXBkYXRlKTsKKworICAgICAgICAgZm9yICh2YXIgcGFuZSBp
biB0aGlzLnBhbmVsLnNpZGViYXJQYW5lcykKKyAgICAgICAgICAgIHRoaXMucGFuZWwuc2lkZWJh
clBhbmVzW3BhbmVdLm5lZWRzVXBkYXRlID0gdHJ1ZTsKKworICAgICAgICAgdGhpcy5wYW5lbC51
cGRhdGVTdHlsZXModHJ1ZSk7CisgICAgICAgICB0aGlzLnBhbmVsLnVwZGF0ZU1ldHJpY3MoKTsK
KyAgICAgICAgIHRoaXMucGFuZWwudXBkYXRlUHJvcGVydGllcygpOworICAgICB9OworICAgICB0
aGlzLnRyZWVPdXRsaW5lLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhp
cy5fb25tb3VzZW1vdmUuYmluZCh0aGlzKSwgZmFsc2UpOworICAgICB0aGlzLnRyZWVPdXRsaW5l
LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCB0aGlzLl9vbm1vdXNlb3V0LmJp
bmQodGhpcyksIGZhbHNlKTsKKyAgICAgCisgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy50cmVlT3V0bGluZS5lbGVtZW50KTsKKyAgICAgCisgICAgIHRoaXMuY3J1bWJz
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICB0aGlzLmNydW1i
c0VsZW1lbnQuY2xhc3NOYW1lID0gImNydW1icyI7CisgICAgIAorICAgICB0aGlzLnNpZGViYXJQ
YW5lcyA9IHt9OworICAgICB0aGlzLnNpZGViYXJQYW5lcy5zdHlsZXMgPSBuZXcgV2ViSW5zcGVj
dG9yLlN0eWxlc1NpZGViYXJQYW5lKCk7CisgICAgIHRoaXMuc2lkZWJhclBhbmVzLm1ldHJpY3Mg
PSBuZXcgV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZSgpOworICAgICB0aGlzLnNpZGVi
YXJQYW5lcy5wcm9wZXJ0aWVzID0gbmV3IFdlYkluc3BlY3Rvci5Qcm9wZXJ0aWVzU2lkZWJhclBh
bmUoKTsKKyAgICAgCisgICAgIHRoaXMuc2lkZWJhclBhbmVzLnN0eWxlcy5vbmV4cGFuZCA9IHRo
aXMudXBkYXRlU3R5bGVzLmJpbmQodGhpcyk7CisgICAgIHRoaXMuc2lkZWJhclBhbmVzLm1ldHJp
Y3Mub25leHBhbmQgPSB0aGlzLnVwZGF0ZU1ldHJpY3MuYmluZCh0aGlzKTsKKyAgICAgdGhpcy5z
aWRlYmFyUGFuZXMucHJvcGVydGllcy5vbmV4cGFuZCA9IHRoaXMudXBkYXRlUHJvcGVydGllcy5i
aW5kKHRoaXMpOworCisgICAgIHRoaXMuc2lkZWJhclBhbmVzLnN0eWxlcy5leHBhbmRlZCA9IHRy
dWU7CisKKyAgICAgdGhpcy5zaWRlYmFyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworICAgICB0aGlzLnNpZGViYXJFbGVtZW50LmlkID0gImVsZW1lbnRzLXNpZGViYXIi
OworCisgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5zaWRlYmFyUGFu
ZXMuc3R5bGVzLmVsZW1lbnQpOworICAgICB0aGlzLnNpZGViYXJFbGVtZW50LmFwcGVuZENoaWxk
KHRoaXMuc2lkZWJhclBhbmVzLm1ldHJpY3MuZWxlbWVudCk7CisgICAgIHRoaXMuc2lkZWJhckVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5zaWRlYmFyUGFuZXMucHJvcGVydGllcy5lbGVtZW50KTsK
KworICAgICB0aGlzLnNpZGViYXJSZXNpemVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CisgICAgIHRoaXMuc2lkZWJhclJlc2l6ZUVsZW1lbnQuY2xhc3NOYW1lID0gInNp
ZGViYXItcmVzaXplci12ZXJ0aWNhbCI7CisgICAgIHRoaXMuc2lkZWJhclJlc2l6ZUVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5yaWdodFNpZGViYXJSZXNpemVyRHJh
Z1N0YXJ0LmJpbmQodGhpcyksIGZhbHNlKTsKKworICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5jb250ZW50RWxlbWVudCk7CisgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLnNpZGViYXJFbGVtZW50KTsKKyAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMu
c2lkZWJhclJlc2l6ZUVsZW1lbnQpOworCisgICAgIHRoaXMuX211dGF0aW9uTW9uaXRvcmVkV2lu
ZG93cyA9IFtdOworICAgICB0aGlzLl9ub2RlSW5zZXJ0ZWRFdmVudExpc3RlbmVyID0gSW5zcGVj
dG9yQ29udHJvbGxlci53cmFwQ2FsbGJhY2sodGhpcy5fbm9kZUluc2VydGVkLmJpbmQodGhpcykp
OworICAgICB0aGlzLl9ub2RlUmVtb3ZlZEV2ZW50TGlzdGVuZXIgPSBJbnNwZWN0b3JDb250cm9s
bGVyLndyYXBDYWxsYmFjayh0aGlzLl9ub2RlUmVtb3ZlZC5iaW5kKHRoaXMpKTsKKyAgICAgdGhp
cy5fY29udGVudExvYWRlZEV2ZW50TGlzdGVuZXIgPSBJbnNwZWN0b3JDb250cm9sbGVyLndyYXBD
YWxsYmFjayh0aGlzLl9jb250ZW50TG9hZGVkLmJpbmQodGhpcykpOwogCi0gICAgdGhpcy5lbGVt
ZW50LmFkZFN0eWxlQ2xhc3MoImVsZW1lbnRzIik7Ci0KLSAgICB0aGlzLmNvbnRlbnRFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5jb250ZW50RWxlbWVu
dC5pZCA9ICJlbGVtZW50cy1jb250ZW50IjsKLSAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmNsYXNz
TmFtZSA9ICJvdXRsaW5lLWRpc2Nsb3N1cmUiOwotCi0gICAgdGhpcy50cmVlTGlzdEVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOwotICAgIHRoaXMudHJlZUxpc3RFbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX29ubW91c2Vkb3duLmJpbmQodGhp
cyksIGZhbHNlKTsKLSAgICB0aGlzLnRyZWVMaXN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJk
YmxjbGljayIsIHRoaXMuX29uZGJsY2xpY2suYmluZCh0aGlzKSwgZmFsc2UpOwotICAgIHRoaXMu
dHJlZUxpc3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX29ubW91
c2Vtb3ZlLmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICB0aGlzLnRyZWVMaXN0RWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJtb3VzZW91dCIsIHRoaXMuX29ubW91c2VvdXQuYmluZCh0aGlzKSwgZmFs
c2UpOwotCi0gICAgdGhpcy50cmVlT3V0bGluZSA9IG5ldyBUcmVlT3V0bGluZSh0aGlzLnRyZWVM
aXN0RWxlbWVudCk7Ci0gICAgdGhpcy50cmVlT3V0bGluZS5wYW5lbCA9IHRoaXM7Ci0KLSAgICB0
aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMudHJlZUxpc3RFbGVtZW50KTsKLQot
ICAgIHRoaXMuY3J1bWJzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwot
ICAgIHRoaXMuY3J1bWJzRWxlbWVudC5jbGFzc05hbWUgPSAiY3J1bWJzIjsKLQotICAgIHRoaXMu
c2lkZWJhclBhbmVzID0ge307Ci0gICAgdGhpcy5zaWRlYmFyUGFuZXMuc3R5bGVzID0gbmV3IFdl
Ykluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZSgpOwotICAgIHRoaXMuc2lkZWJhclBhbmVzLm1l
dHJpY3MgPSBuZXcgV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZSgpOwotICAgIHRoaXMu
c2lkZWJhclBhbmVzLnByb3BlcnRpZXMgPSBuZXcgV2ViSW5zcGVjdG9yLlByb3BlcnRpZXNTaWRl
YmFyUGFuZSgpOwotCi0gICAgdGhpcy5zaWRlYmFyUGFuZXMuc3R5bGVzLm9uZXhwYW5kID0gdGhp
cy51cGRhdGVTdHlsZXMuYmluZCh0aGlzKTsKLSAgICB0aGlzLnNpZGViYXJQYW5lcy5tZXRyaWNz
Lm9uZXhwYW5kID0gdGhpcy51cGRhdGVNZXRyaWNzLmJpbmQodGhpcyk7Ci0gICAgdGhpcy5zaWRl
YmFyUGFuZXMucHJvcGVydGllcy5vbmV4cGFuZCA9IHRoaXMudXBkYXRlUHJvcGVydGllcy5iaW5k
KHRoaXMpOwotCi0gICAgdGhpcy5zaWRlYmFyUGFuZXMuc3R5bGVzLmV4cGFuZGVkID0gdHJ1ZTsK
LQotICAgIHRoaXMuc2lkZWJhckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKLSAgICB0aGlzLnNpZGViYXJFbGVtZW50LmlkID0gImVsZW1lbnRzLXNpZGViYXIiOwotCi0g
ICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnNpZGViYXJQYW5lcy5zdHls
ZXMuZWxlbWVudCk7Ci0gICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnNp
ZGViYXJQYW5lcy5tZXRyaWNzLmVsZW1lbnQpOwotICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5zaWRlYmFyUGFuZXMucHJvcGVydGllcy5lbGVtZW50KTsKLQotICAgIHRo
aXMuc2lkZWJhclJlc2l6ZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
LSAgICB0aGlzLnNpZGViYXJSZXNpemVFbGVtZW50LmNsYXNzTmFtZSA9ICJzaWRlYmFyLXJlc2l6
ZXItdmVydGljYWwiOwotICAgIHRoaXMuc2lkZWJhclJlc2l6ZUVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2Vkb3duIiwgdGhpcy5yaWdodFNpZGViYXJSZXNpemVyRHJhZ1N0YXJ0LmJpbmQo
dGhpcyksIGZhbHNlKTsKLQotICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNvbnRl
bnRFbGVtZW50KTsKLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5zaWRlYmFyRWxl
bWVudCk7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuc2lkZWJhclJlc2l6ZUVs
ZW1lbnQpOwotCi0gICAgdGhpcy5fbXV0YXRpb25Nb25pdG9yZWRXaW5kb3dzID0gW107Ci0gICAg
dGhpcy5fbm9kZUluc2VydGVkRXZlbnRMaXN0ZW5lciA9IEluc3BlY3RvckNvbnRyb2xsZXIud3Jh
cENhbGxiYWNrKHRoaXMuX25vZGVJbnNlcnRlZC5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLl9ub2Rl
UmVtb3ZlZEV2ZW50TGlzdGVuZXIgPSBJbnNwZWN0b3JDb250cm9sbGVyLndyYXBDYWxsYmFjayh0
aGlzLl9ub2RlUmVtb3ZlZC5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLl9jb250ZW50TG9hZGVkRXZl
bnRMaXN0ZW5lciA9IEluc3BlY3RvckNvbnRyb2xsZXIud3JhcENhbGxiYWNrKHRoaXMuX2NvbnRl
bnRMb2FkZWQuYmluZCh0aGlzKSk7Ci0KLSAgICB0aGlzLnJlc2V0KCk7Ci19CisgICAgIHRoaXMu
cmVzZXQoKTsKKyB9CiAKIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICB0b29sYmFySXRlbUNsYXNzOiAiZWxlbWVudHMiLApAQCAtMTA3LDcgKzEyNSw3IEBAIFdl
Ykluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVj
dG9yLlBhbmVsLnByb3RvdHlwZS5zaG93LmNhbGwodGhpcyk7CiAgICAgICAgIHRoaXMuc2lkZWJh
clJlc2l6ZUVsZW1lbnQuc3R5bGUucmlnaHQgPSAodGhpcy5zaWRlYmFyRWxlbWVudC5vZmZzZXRX
aWR0aCAtIDMpICsgInB4IjsKICAgICAgICAgdGhpcy51cGRhdGVCcmVhZGNydW1iKCk7Ci0gICAg
ICAgIHRoaXMudXBkYXRlVHJlZVNlbGVjdGlvbigpOworICAgICAgICB0aGlzLnRyZWVPdXRsaW5l
LnVwZGF0ZVRyZWVTZWxlY3Rpb24oKTsKICAgICAgICAgaWYgKHRoaXMucmVjZW50bHlNb2RpZmll
ZE5vZGVzLmxlbmd0aCkKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU1vZGlmaWVkTm9kZXMoKTsK
ICAgICB9LApAQCAtMTE2LDIzICsxMzQsMTkgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwu
cHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlw
ZS5oaWRlLmNhbGwodGhpcyk7CiAgICAgICAgIHRoaXMuYWx0S2V5RG93biA9IGZhbHNlOwotICAg
ICAgICB0aGlzLmhvdmVyZWRET01Ob2RlID0gbnVsbDsKKyAgICAgICAgdGhpcy50cmVlT3V0bGlu
ZS5ob3ZlcmVkRE9NTm9kZSA9IG51bGw7CiAgICAgICAgIHRoaXMuZm9yY2VIb3ZlckhpZ2hsaWdo
dCA9IGZhbHNlOwogICAgIH0sCiAKICAgICByZXNpemU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAg
ICAgIHRoaXMudXBkYXRlVHJlZVNlbGVjdGlvbigpOworICAgICAgICB0aGlzLnRyZWVPdXRsaW5l
LnVwZGF0ZVRyZWVTZWxlY3Rpb24oKTsKICAgICAgICAgdGhpcy51cGRhdGVCcmVhZGNydW1iU2l6
ZXMoKTsKICAgICB9LAogCiAgICAgcmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRo
aXMucm9vdERPTU5vZGUgPSBudWxsOwotICAgICAgICB0aGlzLmZvY3VzZWRET01Ob2RlID0gbnVs
bDsKLQogICAgICAgICB0aGlzLmFsdEtleURvd24gPSBmYWxzZTsKLSAgICAgICAgdGhpcy5ob3Zl
cmVkRE9NTm9kZSA9IG51bGw7CiAgICAgICAgIHRoaXMuZm9yY2VIb3ZlckhpZ2hsaWdodCA9IGZh
bHNlOwogCiAgICAgICAgIHRoaXMucmVjZW50bHlNb2RpZmllZE5vZGVzID0gW107CkBAIC0xNjMs
MTEgKzE3NywxMSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMucmVnaXN0ZXJNdXRhdGlvbkV2ZW50TGlzdGVuZXJzKGluc3BlY3RlZFdpbmRv
dyk7CiAKICAgICAgICAgdmFyIGluc3BlY3RlZFJvb3REb2N1bWVudCA9IGluc3BlY3RlZFdpbmRv
dy5kb2N1bWVudDsKLSAgICAgICAgdGhpcy5yb290RE9NTm9kZSA9IGluc3BlY3RlZFJvb3REb2N1
bWVudDsKKyAgICAgICAgdGhpcy50cmVlT3V0bGluZS5yb290RE9NTm9kZSA9IGluc3BlY3RlZFJv
b3REb2N1bWVudDsKIAogICAgICAgICB2YXIgY2FuaWRhdGVGb2N1c05vZGUgPSBpbnNwZWN0ZWRS
b290RG9jdW1lbnQuYm9keSB8fCBpbnNwZWN0ZWRSb290RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
OwogICAgICAgICBpZiAoY2FuaWRhdGVGb2N1c05vZGUpIHsKLSAgICAgICAgICAgIHRoaXMuZm9j
dXNlZERPTU5vZGUgPSBjYW5pZGF0ZUZvY3VzTm9kZTsKKyAgICAgICAgICAgIHRoaXMudHJlZU91
dGxpbmUuZm9jdXNlZERPTU5vZGUgPSBjYW5pZGF0ZUZvY3VzTm9kZTsKICAgICAgICAgICAgIGlm
ICh0aGlzLnRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQpCiAgICAgICAgICAgICAgICAg
dGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50LmV4cGFuZCgpOwogICAgICAgICB9
CkBAIC0yMjYsNzEgKzI0MCw2IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5fbXV0YXRpb25Nb25pdG9yZWRXaW5kb3dzID0gW107CiAgICAg
fSwKIAotICAgIHVwZGF0ZVRyZWVTZWxlY3Rpb246IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IGlmICghdGhpcy50cmVlT3V0bGluZSB8fCAhdGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVF
bGVtZW50KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMu
dHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudDsKLSAgICAgICAgZWxlbWVudC51cGRhdGVT
ZWxlY3Rpb24oKTsKLSAgICB9LAotCi0gICAgZ2V0IHJvb3RET01Ob2RlKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLl9yb290RE9NTm9kZTsKLSAgICB9LAotCi0gICAgc2V0IHJvb3RET01O
b2RlKHgpCi0gICAgewotICAgICAgICBpZiAob2JqZWN0c0FyZVNhbWUodGhpcy5fcm9vdERPTU5v
ZGUsIHgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX3Jvb3RET01Ob2Rl
ID0geDsKLQotICAgICAgICB0aGlzLnVwZGF0ZUJyZWFkY3J1bWIoKTsKLSAgICAgICAgdGhpcy51
cGRhdGVUcmVlT3V0bGluZSgpOwotICAgIH0sCi0KLSAgICBnZXQgZm9jdXNlZERPTU5vZGUoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2ZvY3VzZWRET01Ob2RlOwotICAgIH0sCi0KLSAg
ICBzZXQgZm9jdXNlZERPTU5vZGUoeCkKLSAgICB7Ci0gICAgICAgIGlmIChvYmplY3RzQXJlU2Ft
ZSh0aGlzLl9mb2N1c2VkRE9NTm9kZSwgeCkpIHsKLSAgICAgICAgICAgIHZhciBub2RlSXRlbSA9
IHRoaXMucmV2ZWFsTm9kZSh4KTsKLSAgICAgICAgICAgIGlmIChub2RlSXRlbSkKLSAgICAgICAg
ICAgICAgICBub2RlSXRlbS5zZWxlY3QoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIHRoaXMuX2ZvY3VzZWRET01Ob2RlID0geDsKLQotICAgICAgICB0aGlzLl9m
b2N1c2VkTm9kZUNoYW5nZWQoKTsKLQotICAgICAgICB2YXIgbm9kZUl0ZW0gPSB0aGlzLnJldmVh
bE5vZGUoeCk7Ci0gICAgICAgIGlmIChub2RlSXRlbSkKLSAgICAgICAgICAgIG5vZGVJdGVtLnNl
bGVjdCgpOwotICAgIH0sCi0KLSAgICBnZXQgaG92ZXJlZERPTU5vZGUoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX2hvdmVyZWRET01Ob2RlOwotICAgIH0sCi0KLSAgICBzZXQgaG92ZXJl
ZERPTU5vZGUoeCkKLSAgICB7Ci0gICAgICAgIGlmIChvYmplY3RzQXJlU2FtZSh0aGlzLl9ob3Zl
cmVkRE9NTm9kZSwgeCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5faG92
ZXJlZERPTU5vZGUgPSB4OwotCi0gICAgICAgIGlmICh0aGlzLl9ob3ZlcmVkRE9NTm9kZSkKLSAg
ICAgICAgICAgIHRoaXMuX3VwZGF0ZUhvdmVySGlnaGxpZ2h0U29vbigpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB0aGlzLl91cGRhdGVIb3ZlckhpZ2hsaWdodCgpOwotICAgIH0sCi0KICAg
ICBnZXQgZm9yY2VIb3ZlckhpZ2hsaWdodCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
Zm9yY2VIb3ZlckhpZ2hsaWdodDsKQEAgLTMwNCw5ICsyNTMsOSBAQCBXZWJJbnNwZWN0b3IuRWxl
bWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2ZvcmNlSG92ZXJIaWdobGln
aHQgPSB4OwogCiAgICAgICAgIGlmICh0aGlzLl9mb3JjZUhvdmVySGlnaGxpZ2h0KQotICAgICAg
ICAgICAgdGhpcy5fdXBkYXRlSG92ZXJIaWdobGlnaHRTb29uKCk7CisgICAgICAgICAgICB0aGlz
LnRyZWVPdXRsaW5lLl91cGRhdGVIb3ZlckhpZ2hsaWdodFNvb24oKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgdGhpcy5fdXBkYXRlSG92ZXJIaWdobGlnaHQoKTsKKyAgICAgICAgICAgIHRo
aXMudHJlZU91dGxpbmUuX3VwZGF0ZUhvdmVySGlnaGxpZ2h0KCk7CiAgICAgfSwKIAogICAgIGdl
dCBhbHRLZXlEb3duKCkKQEAgLTMyMiw5ICsyNzEsOSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQ
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2FsdEtleURvd24gPSB4OwogCiAgICAg
ICAgIGlmICh0aGlzLl9hbHRLZXlEb3duKQotICAgICAgICAgICAgdGhpcy5fdXBkYXRlSG92ZXJI
aWdobGlnaHRTb29uKCk7CisgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLl91cGRhdGVIb3Zl
ckhpZ2hsaWdodFNvb24oKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5fdXBkYXRl
SG92ZXJIaWdobGlnaHQoKTsKKyAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuX3VwZGF0ZUhv
dmVySGlnaGxpZ2h0KCk7CiAgICAgfSwKIAogICAgIF9jb250ZW50TG9hZGVkOiBmdW5jdGlvbihl
dmVudCkKQEAgLTM3OCw3ICszMjcsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgdXBkYXRlZFBhcmVudFRyZWVFbGVtZW50cy5wdXNo
KHBhcmVudE5vZGVJdGVtKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCF1cGRh
dGVCcmVhZGNydW1icyAmJiAob2JqZWN0c0FyZVNhbWUodGhpcy5mb2N1c2VkRE9NTm9kZSwgcGFy
ZW50KSB8fCB0aGlzLl9pc0FuY2VzdG9ySW5jbHVkaW5nUGFyZW50RnJhbWVzKHRoaXMuZm9jdXNl
ZERPTU5vZGUsIHBhcmVudCkpKQorICAgICAgICAgICAgaWYgKCF1cGRhdGVCcmVhZGNydW1icyAm
JiAob2JqZWN0c0FyZVNhbWUodGhpcy5mb2N1c2VkRE9NTm9kZSwgcGFyZW50KSB8fCB0aGlzLnRy
ZWVPdXRsaW5lLl9pc0FuY2VzdG9ySW5jbHVkaW5nUGFyZW50RnJhbWVzKHRoaXMuZm9jdXNlZERP
TU5vZGUsIHBhcmVudCkpKQogICAgICAgICAgICAgICAgIHVwZGF0ZUJyZWFkY3J1bWJzID0gdHJ1
ZTsKICAgICAgICAgfQogCkBAIC0zOTEsNjUgKzM0MCw2IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50
c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMudXBkYXRlQnJlYWRjcnVtYih0
cnVlKTsKICAgICB9LAogCi0gICAgX3VwZGF0ZUhvdmVySGlnaGxpZ2h0U29vbjogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgaWYgKCJfdXBkYXRlSG92ZXJIaWdobGlnaHRUaW1lb3V0IiBpbiB0
aGlzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLl91cGRhdGVIb3ZlckhpZ2hs
aWdodFRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuX3VwZGF0ZUhvdmVySGlnaGxpZ2h0LmJpbmQo
dGhpcyksIDApOwotICAgIH0sCi0KLSAgICBfdXBkYXRlSG92ZXJIaWdobGlnaHQ6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIGlmICgiX3VwZGF0ZUhvdmVySGlnaGxpZ2h0VGltZW91dCIgaW4g
dGhpcykgewotICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZUhvdmVySGlnaGxp
Z2h0VGltZW91dCk7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fdXBkYXRlSG92ZXJIaWdobGln
aHRUaW1lb3V0OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRoaXMuX2hvdmVyZWRET01Ob2Rl
ICYmIHRoaXMudmlzaWJsZSAmJiAodGhpcy5fYWx0S2V5RG93biB8fCB0aGlzLmZvcmNlSG92ZXJI
aWdobGlnaHQpKQotICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5oaWdobGlnaHRET01O
b2RlKHRoaXMuX2hvdmVyZWRET01Ob2RlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgSW5z
cGVjdG9yQ29udHJvbGxlci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwotICAgIH0sCi0KLSAgICBf
Zm9jdXNlZE5vZGVDaGFuZ2VkOiBmdW5jdGlvbihmb3JjZVVwZGF0ZSkKLSAgICB7Ci0gICAgICAg
IHRoaXMudXBkYXRlQnJlYWRjcnVtYihmb3JjZVVwZGF0ZSk7Ci0KLSAgICAgICAgZm9yICh2YXIg
cGFuZSBpbiB0aGlzLnNpZGViYXJQYW5lcykKLSAgICAgICAgICAgIHRoaXMuc2lkZWJhclBhbmVz
W3BhbmVdLm5lZWRzVXBkYXRlID0gdHJ1ZTsKLQotICAgICAgICB0aGlzLnVwZGF0ZVN0eWxlcyh0
cnVlKTsKLSAgICAgICAgdGhpcy51cGRhdGVNZXRyaWNzKCk7Ci0gICAgICAgIHRoaXMudXBkYXRl
UHJvcGVydGllcygpOwotICAgIH0sCi0KLSAgICByZXZlYWxOb2RlOiBmdW5jdGlvbihub2RlKQot
ICAgIHsKLSAgICAgICAgdmFyIG5vZGVJdGVtID0gdGhpcy50cmVlT3V0bGluZS5maW5kVHJlZUVs
ZW1lbnQobm9kZSwgdGhpcy5faXNBbmNlc3RvckluY2x1ZGluZ1BhcmVudEZyYW1lcy5iaW5kKHRo
aXMpLCB0aGlzLl9wYXJlbnROb2RlT3JGcmFtZUVsZW1lbnQuYmluZCh0aGlzKSwgb2JqZWN0c0Fy
ZVNhbWUpOwotICAgICAgICBpZiAoIW5vZGVJdGVtKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIG5vZGVJdGVtLnJldmVhbCgpOwotICAgICAgICByZXR1cm4gbm9kZUl0ZW07Ci0gICAg
fSwKLQotICAgIHVwZGF0ZVRyZWVPdXRsaW5lOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0
aGlzLnRyZWVPdXRsaW5lLnJlbW92ZUNoaWxkcmVuUmVjdXJzaXZlKCk7Ci0KLSAgICAgICAgaWYg
KCF0aGlzLnJvb3RET01Ob2RlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIC8vIEZJ
WE1FOiB0aGlzIGNvdWxkIHVzZSBmaW5kVHJlZUVsZW1lbnQgdG8gcmV1c2UgYSB0cmVlIGVsZW1l
bnQgaWYgaXQgYWxyZWFkeSBleGlzdHMKLSAgICAgICAgdmFyIG5vZGUgPSAoUHJlZmVyZW5jZXMu
aWdub3JlV2hpdGVzcGFjZSA/IGZpcnN0Q2hpbGRTa2lwcGluZ1doaXRlc3BhY2UuY2FsbCh0aGlz
LnJvb3RET01Ob2RlKSA6IHRoaXMucm9vdERPTU5vZGUuZmlyc3RDaGlsZCk7Ci0gICAgICAgIHdo
aWxlIChub2RlKSB7Ci0gICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLmFwcGVuZENoaWxkKG5l
dyBXZWJJbnNwZWN0b3IuRE9NTm9kZVRyZWVFbGVtZW50KG5vZGUpKTsKLSAgICAgICAgICAgIG5v
ZGUgPSBQcmVmZXJlbmNlcy5pZ25vcmVXaGl0ZXNwYWNlID8gbmV4dFNpYmxpbmdTa2lwcGluZ1do
aXRlc3BhY2UuY2FsbChub2RlKSA6IG5vZGUubmV4dFNpYmxpbmc7Ci0gICAgICAgIH0KLQotICAg
ICAgICB0aGlzLnVwZGF0ZVRyZWVTZWxlY3Rpb24oKTsKLSAgICB9LAotCiAgICAgdXBkYXRlQnJl
YWRjcnVtYjogZnVuY3Rpb24oZm9yY2VVcGRhdGUpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMu
dmlzaWJsZSkKQEAgLTQ2MSw3ICszNTEsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBmb3VuZFJvb3QgPSBmYWxzZTsKICAgICAgICAgdmFy
IGNydW1iID0gY3J1bWJzLmZpcnN0Q2hpbGQ7CiAgICAgICAgIHdoaWxlIChjcnVtYikgewotICAg
ICAgICAgICAgaWYgKG9iamVjdHNBcmVTYW1lKGNydW1iLnJlcHJlc2VudGVkT2JqZWN0LCB0aGlz
LnJvb3RET01Ob2RlKSkKKyAgICAgICAgICAgIGlmIChvYmplY3RzQXJlU2FtZShjcnVtYi5yZXBy
ZXNlbnRlZE9iamVjdCwgdGhpcy50cmVlT3V0bGluZS5yb290RE9NTm9kZSkpCiAgICAgICAgICAg
ICAgICAgZm91bmRSb290ID0gdHJ1ZTsKIAogICAgICAgICAgICAgaWYgKGZvdW5kUm9vdCkKQEAg
LTQ2OSw3ICszNTksNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY3J1bWIucmVtb3ZlU3R5bGVDbGFz
cygiZGltbWVkIik7CiAKLSAgICAgICAgICAgIGlmIChvYmplY3RzQXJlU2FtZShjcnVtYi5yZXBy
ZXNlbnRlZE9iamVjdCwgdGhpcy5mb2N1c2VkRE9NTm9kZSkpIHsKKyAgICAgICAgICAgIGlmIChv
YmplY3RzQXJlU2FtZShjcnVtYi5yZXByZXNlbnRlZE9iamVjdCwgdGhpcy50cmVlT3V0bGluZS5m
b2N1c2VkRE9NTm9kZSkpIHsKICAgICAgICAgICAgICAgICBjcnVtYi5hZGRTdHlsZUNsYXNzKCJz
ZWxlY3RlZCIpOwogICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOwogICAgICAgICAgICAg
fSBlbHNlIHsKQEAgLTUxMiw4ICs0MDIsOCBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgLy8gQ2xpY2tpbmcgYSBkaW1tZWQgY3J1bWIg
b3IgZG91YmxlIGNsaWNraW5nIChldmVudC5kZXRhaWwgPj0gMikKICAgICAgICAgICAgICAgICAv
LyB3aWxsIGNoYW5nZSB0aGUgcm9vdCBub2RlIGluIGFkZGl0aW9uIHRvIHRoZSBmb2N1c2VkIG5v
ZGUuCiAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRldGFpbCA+PSAyIHx8IGNydW1iLmhhc1N0
eWxlQ2xhc3MoImRpbW1lZCIpKQotICAgICAgICAgICAgICAgICAgICBwYW5lbC5yb290RE9NTm9k
ZSA9IGNydW1iLnJlcHJlc2VudGVkT2JqZWN0LnBhcmVudE5vZGU7Ci0gICAgICAgICAgICAgICAg
cGFuZWwuZm9jdXNlZERPTU5vZGUgPSBjcnVtYi5yZXByZXNlbnRlZE9iamVjdDsKKyAgICAgICAg
ICAgICAgICAgICAgcGFuZWwudHJlZU91dGxpbmUucm9vdERPTU5vZGUgPSBjcnVtYi5yZXByZXNl
bnRlZE9iamVjdC5wYXJlbnROb2RlOworICAgICAgICAgICAgICAgIHBhbmVsLnRyZWVPdXRsaW5l
LmZvY3VzZWRET01Ob2RlID0gY3J1bWIucmVwcmVzZW50ZWRPYmplY3Q7CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jdXJyZW50Rm9jdXNFbGVtZW50ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoIm1haW4tcGFuZWxzIik7CkBAIC01MjUsNyArNDE1LDcgQEAgV2Vi
SW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgcGFuZWwu
bW91c2VPdmVyQ3J1bWIgPSB0cnVlOwogCiAgICAgICAgICAgICBwYW5lbC5hbHRLZXlEb3duID0g
ZXZlbnQuYWx0S2V5OwotICAgICAgICAgICAgcGFuZWwuaG92ZXJlZERPTU5vZGUgPSB0aGlzLnJl
cHJlc2VudGVkT2JqZWN0OworICAgICAgICAgICAgcGFuZWwudHJlZU91dGxpbmUuaG92ZXJlZERP
TU5vZGUgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0OwogICAgICAgICAgICAgcGFuZWwuZm9yY2VI
b3ZlckhpZ2hsaWdodCA9IHRoaXMuaGFzU3R5bGVDbGFzcygic2VsZWN0ZWQiKTsKIAogICAgICAg
ICAgICAgaWYgKCJtb3VzZU91dFRpbWVvdXQiIGluIHBhbmVsKSB7CkBAIC01MzksNyArNDI5LDcg
QEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgICAg
ICBpZiAoZXZlbnQudGFyZ2V0ID09PSB0aGlzKSB7CiAgICAgICAgICAgICAgICAgcGFuZWwuYWx0
S2V5RG93biA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHBhbmVsLmhvdmVyZWRET01Ob2RlID0g
bnVsbDsKKyAgICAgICAgICAgICAgICBwYW5lbC50cmVlT3V0bGluZS5ob3ZlcmVkRE9NTm9kZSA9
IG51bGw7CiAgICAgICAgICAgICAgICAgcGFuZWwuZm9yY2VIb3ZlckhpZ2hsaWdodCA9IGZhbHNl
OwogICAgICAgICAgICAgfQogCkBAIC01NTcsMTEgKzQ0NywxMSBAQCBXZWJJbnNwZWN0b3IuRWxl
bWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH07CiAKICAgICAgICAgZm91bmRSb290
ID0gZmFsc2U7Ci0gICAgICAgIGZvciAodmFyIGN1cnJlbnQgPSB0aGlzLmZvY3VzZWRET01Ob2Rl
OyBjdXJyZW50OyBjdXJyZW50ID0gdGhpcy5fcGFyZW50Tm9kZU9yRnJhbWVFbGVtZW50KGN1cnJl
bnQpKSB7CisgICAgICAgIGZvciAodmFyIGN1cnJlbnQgPSB0aGlzLnRyZWVPdXRsaW5lLmZvY3Vz
ZWRET01Ob2RlOyBjdXJyZW50OyBjdXJyZW50ID0gdGhpcy50cmVlT3V0bGluZS5fcGFyZW50Tm9k
ZU9yRnJhbWVFbGVtZW50KGN1cnJlbnQpKSB7CiAgICAgICAgICAgICBpZiAoY3VycmVudC5ub2Rl
VHlwZSA9PT0gTm9kZS5ET0NVTUVOVF9OT0RFKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgICAgICBpZiAob2JqZWN0c0FyZVNhbWUoY3VycmVudCwgdGhpcy5yb290RE9NTm9k
ZSkpCisgICAgICAgICAgICBpZiAob2JqZWN0c0FyZVNhbWUoY3VycmVudCwgdGhpcy50cmVlT3V0
bGluZS5yb290RE9NTm9kZSkpCiAgICAgICAgICAgICAgICAgZm91bmRSb290ID0gdHJ1ZTsKIAog
ICAgICAgICAgICAgdmFyIGNydW1iID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwpA
QCAtNjQ2LDcgKzUzNiw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9
IHsKIAogICAgICAgICAgICAgaWYgKGZvdW5kUm9vdCkKICAgICAgICAgICAgICAgICBjcnVtYi5h
ZGRTdHlsZUNsYXNzKCJkaW1tZWQiKTsKLSAgICAgICAgICAgIGlmIChvYmplY3RzQXJlU2FtZShj
dXJyZW50LCB0aGlzLmZvY3VzZWRET01Ob2RlKSkKKyAgICAgICAgICAgIGlmIChvYmplY3RzQXJl
U2FtZShjdXJyZW50LCB0aGlzLnRyZWVPdXRsaW5lLmZvY3VzZWRET01Ob2RlKSkKICAgICAgICAg
ICAgICAgICBjcnVtYi5hZGRTdHlsZUNsYXNzKCJzZWxlY3RlZCIpOwogICAgICAgICAgICAgaWYg
KCFjcnVtYnMuY2hpbGROb2Rlcy5sZW5ndGgpCiAgICAgICAgICAgICAgICAgY3J1bWIuYWRkU3R5
bGVDbGFzcygiZW5kIik7CkBAIC05MTYsNyArODA2LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRz
UGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXN0eWxlc1NpZGViYXJQYW5lLmV4cGFu
ZGVkIHx8ICFzdHlsZXNTaWRlYmFyUGFuZS5uZWVkc1VwZGF0ZSkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBzdHlsZXNTaWRlYmFyUGFuZS51cGRhdGUodGhpcy5mb2N1c2VkRE9NTm9k
ZSwgbnVsbCwgZm9yY2VVcGRhdGUpOworICAgICAgICBzdHlsZXNTaWRlYmFyUGFuZS51cGRhdGUo
dGhpcy50cmVlT3V0bGluZS5mb2N1c2VkRE9NTm9kZSwgbnVsbCwgZm9yY2VVcGRhdGUpOwogICAg
ICAgICBzdHlsZXNTaWRlYmFyUGFuZS5uZWVkc1VwZGF0ZSA9IGZhbHNlOwogICAgIH0sCiAKQEAg
LTkyNiw3ICs4MTYsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIGlmICghbWV0cmljc1NpZGViYXJQYW5lLmV4cGFuZGVkIHx8ICFtZXRyaWNzU2lk
ZWJhclBhbmUubmVlZHNVcGRhdGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbWV0
cmljc1NpZGViYXJQYW5lLnVwZGF0ZSh0aGlzLmZvY3VzZWRET01Ob2RlKTsKKyAgICAgICAgbWV0
cmljc1NpZGViYXJQYW5lLnVwZGF0ZSh0aGlzLnRyZWVPdXRsaW5lLmZvY3VzZWRET01Ob2RlKTsK
ICAgICAgICAgbWV0cmljc1NpZGViYXJQYW5lLm5lZWRzVXBkYXRlID0gZmFsc2U7CiAgICAgfSwK
IApAQCAtOTM2LDcgKzgyNiw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgaWYgKCFwcm9wZXJ0aWVzU2lkZWJhclBhbmUuZXhwYW5kZWQgfHwgIXBy
b3BlcnRpZXNTaWRlYmFyUGFuZS5uZWVkc1VwZGF0ZSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBwcm9wZXJ0aWVzU2lkZWJhclBhbmUudXBkYXRlKHRoaXMuZm9jdXNlZERPTU5vZGUp
OworICAgICAgICBwcm9wZXJ0aWVzU2lkZWJhclBhbmUudXBkYXRlKHRoaXMudHJlZU91dGxpbmUu
Zm9jdXNlZERPTU5vZGUpOwogICAgICAgICBwcm9wZXJ0aWVzU2lkZWJhclBhbmUubmVlZHNVcGRh
dGUgPSBmYWxzZTsKICAgICB9LAogCkBAIC05NTksMTggKzg0OSwxOCBAQCBXZWJJbnNwZWN0b3Iu
RWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghd2luZG93LmdldFNlbGVj
dGlvbigpLmlzQ29sbGFwc2VkKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHN3aXRj
aCAodGhpcy5mb2N1c2VkRE9NTm9kZS5ub2RlVHlwZSkgeworICAgICAgICBzd2l0Y2ggKHRoaXMu
dHJlZU91dGxpbmUuZm9jdXNlZERPTU5vZGUubm9kZVR5cGUpIHsKICAgICAgICAgICAgIGNhc2Ug
Tm9kZS5FTEVNRU5UX05PREU6Ci0gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLmZvY3Vz
ZWRET01Ob2RlLm91dGVySFRNTDsKKyAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IHRoaXMudHJl
ZU91dGxpbmUuZm9jdXNlZERPTU5vZGUub3V0ZXJIVE1MOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogCiAgICAgICAgICAgICBjYXNlIE5vZGUuQ09NTUVOVF9OT0RFOgotICAgICAgICAgICAgICAg
IHZhciBkYXRhID0gIjwhLS0iICsgdGhpcy5mb2N1c2VkRE9NTm9kZS5ub2RlVmFsdWUgKyAiLS0+
IjsKKyAgICAgICAgICAgICAgICB2YXIgZGF0YSA9ICI8IS0tIiArIHRoaXMudHJlZU91dGxpbmUu
Zm9jdXNlZERPTU5vZGUubm9kZVZhbHVlICsgIi0tPiI7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBjYXNlIE5vZGUuVEVYVF9OT0RF
OgotICAgICAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy5mb2N1c2VkRE9NTm9kZS5ub2RlVmFs
dWU7CisgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLnRyZWVPdXRsaW5lLmZvY3VzZWRE
T01Ob2RlLm5vZGVWYWx1ZTsKICAgICAgICAgfQogCiAgICAgICAgIGV2ZW50LmNsaXBib2FyZERh
dGEuY2xlYXJEYXRhKCk7CkBAIC05OTksOTAgKzg4OSwxOCBAQCBXZWJJbnNwZWN0b3IuRWxlbWVu
dHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuc3R5bGUu
cmlnaHQgPSBuZXdXaWR0aCArICJweCI7CiAgICAgICAgIHRoaXMuc2lkZWJhclJlc2l6ZUVsZW1l
bnQuc3R5bGUucmlnaHQgPSAobmV3V2lkdGggLSAzKSArICJweCI7CiAKLSAgICAgICAgdGhpcy51
cGRhdGVUcmVlU2VsZWN0aW9uKCk7CisgICAgICAgIHRoaXMudHJlZU91dGxpbmUudXBkYXRlVHJl
ZVNlbGVjdGlvbigpOwogCiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgfSwK
IAotICAgIF9nZXREb2N1bWVudEZvck5vZGU6IGZ1bmN0aW9uKG5vZGUpCi0gICAgewotICAgICAg
ICByZXR1cm4gbm9kZS5ub2RlVHlwZSA9PSBOb2RlLkRPQ1VNRU5UX05PREUgPyBub2RlIDogbm9k
ZS5vd25lckRvY3VtZW50OwotICAgIH0sCi0KLSAgICBfcGFyZW50Tm9kZU9yRnJhbWVFbGVtZW50
OiBmdW5jdGlvbihub2RlKQotICAgIHsKLSAgICAgICAgdmFyIHBhcmVudCA9IG5vZGUucGFyZW50
Tm9kZTsKLSAgICAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgICAgIHJldHVybiBwYXJlbnQ7Ci0K
LSAgICAgICAgdmFyIGRvY3VtZW50ID0gdGhpcy5fZ2V0RG9jdW1lbnRGb3JOb2RlKG5vZGUpOwot
ICAgICAgICByZXR1cm4gZG9jdW1lbnQuZGVmYXVsdFZpZXcuZnJhbWVFbGVtZW50OwotICAgIH0s
Ci0KLSAgICBfaXNBbmNlc3RvckluY2x1ZGluZ1BhcmVudEZyYW1lczogZnVuY3Rpb24oYSwgYikK
LSAgICB7Ci0gICAgICAgIGlmIChvYmplY3RzQXJlU2FtZShhLCBiKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgZm9yICh2YXIgbm9kZSA9IGI7IG5vZGU7IG5vZGUgPSB0aGlz
Ll9nZXREb2N1bWVudEZvck5vZGUobm9kZSkuZGVmYXVsdFZpZXcuZnJhbWVFbGVtZW50KQotICAg
ICAgICAgICAgaWYgKG9iamVjdHNBcmVTYW1lKGEsIG5vZGUpIHx8IGlzQW5jZXN0b3JOb2RlLmNh
bGwoYSwgbm9kZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9LAotCi0gICAgX3RyZWVFbGVtZW50RnJvbUV2ZW50OiBmdW5jdGlvbihl
dmVudCkKLSAgICB7Ci0gICAgICAgIHZhciBvdXRsaW5lID0gdGhpcy50cmVlT3V0bGluZTsKLQot
ICAgICAgICB2YXIgcm9vdCA9IHRoaXMudHJlZUxpc3RFbGVtZW50OwotCi0gICAgICAgIC8vIFdl
IGNob29zZSB0aGlzIFggY29vcmRpbmF0ZSBiYXNlZCBvbiB0aGUga25vd2xlZGdlIHRoYXQgb3Vy
IGxpc3QKLSAgICAgICAgLy8gaXRlbXMgZXh0ZW5kIG5lYXJseSB0byB0aGUgcmlnaHQgZWRnZSBv
ZiB0aGUgb3V0ZXIgPG9sPi4KLSAgICAgICAgdmFyIHggPSByb290LnRvdGFsT2Zmc2V0TGVmdCAr
IHJvb3Qub2Zmc2V0V2lkdGggLSAyMDsKLQotICAgICAgICB2YXIgeSA9IGV2ZW50LnBhZ2VZOwot
Ci0gICAgICAgIC8vIE91ciBsaXN0IGl0ZW1zIGhhdmUgMS1waXhlbCBjcmFja3MgYmV0d2VlbiB0
aGVtIHZlcnRpY2FsbHkuIFdlIGF2b2lkCi0gICAgICAgIC8vIHRoZSBjcmFja3MgYnkgY2hlY2tp
bmcgc2xpZ2h0bHkgYWJvdmUgYW5kIHNsaWdodGx5IGJlbG93IHRoZSBtb3VzZQotICAgICAgICAv
LyBhbmQgc2VlaW5nIGlmIHdlIGhpdCB0aGUgc2FtZSBlbGVtZW50IGVhY2ggdGltZS4KLSAgICAg
ICAgdmFyIGVsZW1lbnRVbmRlck1vdXNlID0gb3V0bGluZS50cmVlRWxlbWVudEZyb21Qb2ludCh4
LCB5KTsKLSAgICAgICAgdmFyIGVsZW1lbnRBYm92ZU1vdXNlID0gb3V0bGluZS50cmVlRWxlbWVu
dEZyb21Qb2ludCh4LCB5IC0gMik7Ci0gICAgICAgIHZhciBlbGVtZW50OwotICAgICAgICBpZiAo
ZWxlbWVudFVuZGVyTW91c2UgPT09IGVsZW1lbnRBYm92ZU1vdXNlKQotICAgICAgICAgICAgZWxl
bWVudCA9IGVsZW1lbnRVbmRlck1vdXNlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBlbGVt
ZW50ID0gb3V0bGluZS50cmVlRWxlbWVudEZyb21Qb2ludCh4LCB5ICsgMik7Ci0KLSAgICAgICAg
cmV0dXJuIGVsZW1lbnQ7Ci0gICAgfSwKLQotICAgIF9vbmRibGNsaWNrOiBmdW5jdGlvbihldmVu
dCkKLSAgICB7Ci0gICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5fdHJlZUVsZW1lbnRGcm9tRXZl
bnQoZXZlbnQpOwotCi0gICAgICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC5vbmRibGNsaWNr
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGVsZW1lbnQub25kYmxjbGljaygpOwot
ICAgIH0sCi0KLSAgICBfb25tb3VzZWRvd246IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAg
ICAgdmFyIGVsZW1lbnQgPSB0aGlzLl90cmVlRWxlbWVudEZyb21FdmVudChldmVudCk7Ci0KLSAg
ICAgICAgaWYgKCFlbGVtZW50IHx8IGVsZW1lbnQuaXNFdmVudFdpdGhpbkRpc2Nsb3N1cmVUcmlh
bmdsZShldmVudCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZWxlbWVudC5zZWxl
Y3QoKTsKLSAgICB9LAotCiAgICAgX29ubW91c2Vtb3ZlOiBmdW5jdGlvbihldmVudCkKICAgICB7
Ci0gICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5fdHJlZUVsZW1lbnRGcm9tRXZlbnQoZXZlbnQp
OworICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMudHJlZU91dGxpbmUuX3RyZWVFbGVtZW50RnJv
bUV2ZW50KGV2ZW50KTsKICAgICAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIHRoaXMuYWx0S2V5RG93biA9IGV2ZW50LmFsdEtleTsKLSAgICAgICAgdGhp
cy5ob3ZlcmVkRE9NTm9kZSA9IGVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3Q7CiAgICAgICAgIHRo
aXMuZm9yY2VIb3ZlckhpZ2hsaWdodCA9IGVsZW1lbnQuc2VsZWN0ZWQ7CiAgICAgfSwKIApAQCAt
MTA5MSwzMzIgKzkwOSw4IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gdGhpcy50cmVlTGlzdEVsZW1lbnQpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuYWx0S2V5RG93biA9IGZhbHNlOwotICAg
ICAgICB0aGlzLmhvdmVyZWRET01Ob2RlID0gbnVsbDsKICAgICAgICAgdGhpcy5mb3JjZUhvdmVy
SGlnaGxpZ2h0ID0gZmFsc2U7CiAgICAgfQogfQogCiBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5l
bC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZTsKLQot
V2ViSW5zcGVjdG9yLkRPTU5vZGVUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKG5vZGUpCi17Ci0gICAg
dmFyIGhhc0NoaWxkcmVuID0gbm9kZS5jb250ZW50RG9jdW1lbnQgfHwgKFByZWZlcmVuY2VzLmln
bm9yZVdoaXRlc3BhY2UgPyAoZmlyc3RDaGlsZFNraXBwaW5nV2hpdGVzcGFjZS5jYWxsKG5vZGUp
ID8gdHJ1ZSA6IGZhbHNlKSA6IG5vZGUuaGFzQ2hpbGROb2RlcygpKTsKLSAgICB2YXIgdGl0bGVJ
bmZvID0gbm9kZVRpdGxlSW5mby5jYWxsKG5vZGUsIGhhc0NoaWxkcmVuLCBXZWJJbnNwZWN0b3Iu
bGlua2lmeVVSTCk7Ci0KLSAgICBpZiAodGl0bGVJbmZvLmhhc0NoaWxkcmVuKSAKLSAgICAgICAg
dGhpcy53aGl0ZXNwYWNlSWdub3JlZCA9IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2U7Ci0K
LSAgICBUcmVlRWxlbWVudC5jYWxsKHRoaXMsIHRpdGxlSW5mby50aXRsZSwgbm9kZSwgdGl0bGVJ
bmZvLmhhc0NoaWxkcmVuKTsKLX0KLQotV2ViSW5zcGVjdG9yLkRPTU5vZGVUcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7Ci0gICAgdXBkYXRlU2VsZWN0aW9uOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICB2YXIgbGlzdEl0ZW1FbGVtZW50ID0gdGhpcy5saXN0SXRlbUVsZW1lbnQ7Ci0gICAgICAg
IGlmICghbGlzdEl0ZW1FbGVtZW50KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlm
IChkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoIDw9IDApIHsKLSAgICAgICAgICAgIC8vIFRoZSBz
dHlsZXNoZWV0IGhhc24ndCBsb2FkZWQgeWV0IG9yIHRoZSB3aW5kb3cgaXMgY2xvc2VkLAotICAg
ICAgICAgICAgLy8gc28gd2UgY2FuJ3QgY2FsY3VsYXRlIHdoYXQgaXMgbmVlZC4gUmV0dXJuIGVh
cmx5LgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF0aGlz
LnNlbGVjdGlvbkVsZW1lbnQpIHsKLSAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgdGhpcy5zZWxlY3Rp
b25FbGVtZW50LmNsYXNzTmFtZSA9ICJzZWxlY3Rpb24gc2VsZWN0ZWQiOwotICAgICAgICAgICAg
bGlzdEl0ZW1FbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLnNlbGVjdGlvbkVsZW1lbnQsIGxpc3RJ
dGVtRWxlbWVudC5maXJzdENoaWxkKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuc2VsZWN0
aW9uRWxlbWVudC5zdHlsZS5oZWlnaHQgPSBsaXN0SXRlbUVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsg
InB4IjsKLSAgICB9LAotCi0gICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IHRoaXMubGlzdEl0ZW1FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMu
b25tb3VzZWRvd24uYmluZCh0aGlzKSwgZmFsc2UpOwotCi0gICAgICAgIHRoaXMuX3ByZXZlbnRG
b2xsb3dpbmdMaW5rc09uRG91YmxlQ2xpY2soKTsKLSAgICB9LAotCi0gICAgX3ByZXZlbnRGb2xs
b3dpbmdMaW5rc09uRG91YmxlQ2xpY2s6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBs
aW5rcyA9IHRoaXMubGlzdEl0ZW1FbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImxpID4gLndlYmtp
dC1odG1sLXRhZyA+IC53ZWJraXQtaHRtbC1hdHRyaWJ1dGUgPiAud2Via2l0LWh0bWwtZXh0ZXJu
YWwtbGluaywgbGkgPiAud2Via2l0LWh0bWwtdGFnID4gLndlYmtpdC1odG1sLWF0dHJpYnV0ZSA+
IC53ZWJraXQtaHRtbC1yZXNvdXJjZS1saW5rIik7Ci0gICAgICAgIGlmICghbGlua3MpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5rcy5sZW5n
dGg7ICsraSkKLSAgICAgICAgICAgIGxpbmtzW2ldLnByZXZlbnRGb2xsb3dPbkRvdWJsZUNsaWNr
ID0gdHJ1ZTsKLSAgICB9LAotCi0gICAgb25wb3B1bGF0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoIHx8IHRoaXMud2hpdGVzcGFjZUlnbm9yZWQg
IT09IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgdGhpcy53aGl0ZXNwYWNlSWdub3JlZCA9IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRl
c3BhY2U7Ci0KLSAgICAgICAgdGhpcy51cGRhdGVDaGlsZHJlbigpOwotICAgIH0sCi0KLSAgICB1
cGRhdGVDaGlsZHJlbjogZnVuY3Rpb24oZnVsbFJlZnJlc2gpCi0gICAgewotICAgICAgICBpZiAo
ZnVsbFJlZnJlc2gpIHsKLSAgICAgICAgICAgIHZhciBzZWxlY3RlZFRyZWVFbGVtZW50ID0gdGhp
cy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50OwotICAgICAgICAgICAgaWYgKHNlbGVj
dGVkVHJlZUVsZW1lbnQgJiYgc2VsZWN0ZWRUcmVlRWxlbWVudC5oYXNBbmNlc3Rvcih0aGlzKSkK
LSAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCgpOwotICAgICAgICAgICAgdGhpcy5yZW1vdmVD
aGlsZHJlbigpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gdGhpczsK
LSAgICAgICAgdmFyIHRyZWVDaGlsZEluZGV4ID0gMDsKLQotICAgICAgICBmdW5jdGlvbiB1cGRh
dGVDaGlsZHJlbk9mTm9kZShub2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgdHJlZU91
dGxpbmUgPSB0cmVlRWxlbWVudC50cmVlT3V0bGluZTsKLSAgICAgICAgICAgIHZhciBjaGlsZCA9
IChQcmVmZXJlbmNlcy5pZ25vcmVXaGl0ZXNwYWNlID8gZmlyc3RDaGlsZFNraXBwaW5nV2hpdGVz
cGFjZS5jYWxsKG5vZGUpIDogbm9kZS5maXJzdENoaWxkKTsKLSAgICAgICAgICAgIHdoaWxlIChj
aGlsZCkgewotICAgICAgICAgICAgICAgIHZhciBjdXJyZW50VHJlZUVsZW1lbnQgPSB0cmVlRWxl
bWVudC5jaGlsZHJlblt0cmVlQ2hpbGRJbmRleF07Ci0gICAgICAgICAgICAgICAgaWYgKCFjdXJy
ZW50VHJlZUVsZW1lbnQgfHwgIW9iamVjdHNBcmVTYW1lKGN1cnJlbnRUcmVlRWxlbWVudC5yZXBy
ZXNlbnRlZE9iamVjdCwgY2hpbGQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZpbmQgYW55
IGV4aXN0aW5nIGVsZW1lbnQgdGhhdCBpcyBsYXRlciBpbiB0aGUgY2hpbGRyZW4gbGlzdC4KLSAg
ICAgICAgICAgICAgICAgICAgdmFyIGV4aXN0aW5nVHJlZUVsZW1lbnQgPSBudWxsOwotICAgICAg
ICAgICAgICAgICAgICBmb3IgKHZhciBpID0gKHRyZWVDaGlsZEluZGV4ICsgMSk7IGkgPCB0cmVl
RWxlbWVudC5jaGlsZHJlbi5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG9iamVjdHNBcmVTYW1lKHRyZWVFbGVtZW50LmNoaWxkcmVuW2ldLnJlcHJlc2VudGVkT2Jq
ZWN0LCBjaGlsZCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ1RyZWVF
bGVtZW50ID0gdHJlZUVsZW1lbnQuY2hpbGRyZW5baV07Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdUcmVlRWxlbWVudCAmJiBl
eGlzdGluZ1RyZWVFbGVtZW50LnBhcmVudCA9PT0gdHJlZUVsZW1lbnQpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIElmIGFuIGV4aXN0aW5nIGVsZW1lbnQgd2FzIGZvdW5kIGFuZCBpdCBo
YXMgdGhlIHNhbWUgcGFyZW50LCBqdXN0IG1vdmUgaXQuCi0gICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgd2FzU2VsZWN0ZWQgPSBleGlzdGluZ1RyZWVFbGVtZW50LnNlbGVjdGVkOwotICAgICAg
ICAgICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGQoZXhpc3RpbmdUcmVlRWxl
bWVudCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cmVlRWxlbWVudC5pbnNlcnRDaGlsZChl
eGlzdGluZ1RyZWVFbGVtZW50LCB0cmVlQ2hpbGRJbmRleCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAod2FzU2VsZWN0ZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3Rp
bmdUcmVlRWxlbWVudC5zZWxlY3QoKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIE5vIGV4aXN0aW5nIGVsZW1lbnQgZm91bmQsIGluc2Vy
dCBhIG5ldyBlbGVtZW50LgotICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQuaW5z
ZXJ0Q2hpbGQobmV3IFdlYkluc3BlY3Rvci5ET01Ob2RlVHJlZUVsZW1lbnQoY2hpbGQpLCB0cmVl
Q2hpbGRJbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICBjaGlsZCA9IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UgPyBu
ZXh0U2libGluZ1NraXBwaW5nV2hpdGVzcGFjZS5jYWxsKGNoaWxkKSA6IGNoaWxkLm5leHRTaWJs
aW5nOwotICAgICAgICAgICAgICAgICsrdHJlZUNoaWxkSW5kZXg7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLQotICAgICAgICAvLyBSZW1vdmUgYW55IHRyZWUgZWxlbWVudHMgdGhhdCBubyBs
b25nZXIgaGF2ZSB0aGlzIG5vZGUgKG9yIHRoaXMgbm9kZSdzIGNvbnRlbnREb2N1bWVudCkgYXMg
dGhlaXIgcGFyZW50LgotICAgICAgICBmb3IgKHZhciBpID0gKHRoaXMuY2hpbGRyZW4ubGVuZ3Ro
IC0gMSk7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgICAgICBpZiAoImVsZW1lbnRDbG9zZVRhZyIg
aW4gdGhpcy5jaGlsZHJlbltpXSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAg
ICAgICAgdmFyIGN1cnJlbnRDaGlsZCA9IHRoaXMuY2hpbGRyZW5baV07Ci0gICAgICAgICAgICB2
YXIgY3VycmVudE5vZGUgPSBjdXJyZW50Q2hpbGQucmVwcmVzZW50ZWRPYmplY3Q7Ci0gICAgICAg
ICAgICB2YXIgY3VycmVudFBhcmVudE5vZGUgPSBjdXJyZW50Tm9kZS5wYXJlbnROb2RlOwotCi0g
ICAgICAgICAgICBpZiAob2JqZWN0c0FyZVNhbWUoY3VycmVudFBhcmVudE5vZGUsIHRoaXMucmVw
cmVzZW50ZWRPYmplY3QpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
aWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY29udGVudERvY3VtZW50ICYmIG9iamVjdHNBcmVT
YW1lKGN1cnJlbnRQYXJlbnROb2RlLCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmNvbnRlbnREb2N1
bWVudCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIHZhciBzZWxl
Y3RlZFRyZWVFbGVtZW50ID0gdGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50Owot
ICAgICAgICAgICAgaWYgKHNlbGVjdGVkVHJlZUVsZW1lbnQgJiYgKHNlbGVjdGVkVHJlZUVsZW1l
bnQgPT09IGN1cnJlbnRDaGlsZCB8fCBzZWxlY3RlZFRyZWVFbGVtZW50Lmhhc0FuY2VzdG9yKGN1
cnJlbnRDaGlsZCkpKQotICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCk7Ci0KLSAgICAgICAg
ICAgIHRoaXMucmVtb3ZlQ2hpbGRBdEluZGV4KGkpOwotCi0gICAgICAgICAgICBpZiAoY3VycmVu
dE5vZGUuY29udGVudERvY3VtZW50KQotICAgICAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUu
cGFuZWwudW5yZWdpc3Rlck11dGF0aW9uRXZlbnRMaXN0ZW5lcnMoY3VycmVudE5vZGUuY29udGVu
dERvY3VtZW50LmRlZmF1bHRWaWV3KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh0aGlzLnJl
cHJlc2VudGVkT2JqZWN0LmNvbnRlbnREb2N1bWVudCkKLSAgICAgICAgICAgIHVwZGF0ZUNoaWxk
cmVuT2ZOb2RlKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY29udGVudERvY3VtZW50KTsKLSAgICAg
ICAgdXBkYXRlQ2hpbGRyZW5PZk5vZGUodGhpcy5yZXByZXNlbnRlZE9iamVjdCk7Ci0KLSAgICAg
ICAgdmFyIGxhc3RDaGlsZCA9IHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAx
XTsKLSAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3Qubm9kZVR5cGUgPT0gTm9kZS5F
TEVNRU5UX05PREUgJiYgKCFsYXN0Q2hpbGQgfHwgIWxhc3RDaGlsZC5lbGVtZW50Q2xvc2VUYWcp
KSB7Ci0gICAgICAgICAgICB2YXIgdGl0bGUgPSAiPHNwYW4gY2xhc3M9XCJ3ZWJraXQtaHRtbC10
YWcgY2xvc2VcIj4mbHQ7LyIgKyB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm5vZGVOYW1lLnRvTG93
ZXJDYXNlKCkuZXNjYXBlSFRNTCgpICsgIiZndDs8L3NwYW4+IjsKLSAgICAgICAgICAgIHZhciBp
dGVtID0gbmV3IFRyZWVFbGVtZW50KHRpdGxlLCBudWxsLCBmYWxzZSk7Ci0gICAgICAgICAgICBp
dGVtLnNlbGVjdGFibGUgPSBmYWxzZTsKLSAgICAgICAgICAgIGl0ZW0uZWxlbWVudENsb3NlVGFn
ID0gdHJ1ZTsKLSAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQoaXRlbSk7Ci0gICAgICAgIH0K
LSAgICB9LAotCi0gICAgb25leHBhbmQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMu
dHJlZU91dGxpbmUucGFuZWwudXBkYXRlVHJlZVNlbGVjdGlvbigpOwotCi0gICAgICAgIGlmICh0
aGlzLnJlcHJlc2VudGVkT2JqZWN0LmNvbnRlbnREb2N1bWVudCkKLSAgICAgICAgICAgIHRoaXMu
dHJlZU91dGxpbmUucGFuZWwucmVnaXN0ZXJNdXRhdGlvbkV2ZW50TGlzdGVuZXJzKHRoaXMucmVw
cmVzZW50ZWRPYmplY3QuY29udGVudERvY3VtZW50LmRlZmF1bHRWaWV3KTsKLSAgICB9LAotCi0g
ICAgb25jb2xsYXBzZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy50cmVlT3V0bGlu
ZS5wYW5lbC51cGRhdGVUcmVlU2VsZWN0aW9uKCk7Ci0gICAgfSwKLQotICAgIG9ucmV2ZWFsOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5saXN0SXRlbUVsZW1lbnQpCi0gICAg
ICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKGZhbHNl
KTsKLSAgICB9LAotCi0gICAgb25zZWxlY3Q6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRo
aXMudHJlZU91dGxpbmUucGFuZWwuZm9jdXNlZERPTU5vZGUgPSB0aGlzLnJlcHJlc2VudGVkT2Jq
ZWN0OwotICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbigpOwotICAgIH0sCi0KLSAgICBvbm1v
dXNlZG93bjogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fZWRpdGlu
ZykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBQcmV2ZW50IHNlbGVjdGluZyB0
aGUgbmVhcmVzdCB3b3JkIG9uIGRvdWJsZSBjbGljay4KLSAgICAgICAgaWYgKGV2ZW50LmRldGFp
bCA+PSAyKQotICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICB9LAotCi0g
ICAgb25kYmxjbGljazogZnVuY3Rpb24odHJlZUVsZW1lbnQsIGV2ZW50KQotICAgIHsKLSAgICAg
ICAgaWYgKHRoaXMuX2VkaXRpbmcpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYg
KHRoaXMuX3N0YXJ0RWRpdGluZyhldmVudCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgdmFyIHBhbmVsID0gdGhpcy50cmVlT3V0bGluZS5wYW5lbDsKLSAgICAgICAgcGFuZWwucm9v
dERPTU5vZGUgPSB0aGlzLnBhcmVudC5yZXByZXNlbnRlZE9iamVjdDsKLSAgICAgICAgcGFuZWwu
Zm9jdXNlZERPTU5vZGUgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0OwotCi0gICAgICAgIGlmICh0
aGlzLmhhc0NoaWxkcmVuICYmICF0aGlzLmV4cGFuZGVkKQotICAgICAgICAgICAgdGhpcy5leHBh
bmQoKTsKLSAgICB9LAotCi0gICAgX3N0YXJ0RWRpdGluZzogZnVuY3Rpb24oZXZlbnQpCi0gICAg
ewotICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZS5wYW5lbC5mb2N1c2VkRE9NTm9kZSAhPSB0
aGlzLnJlcHJlc2VudGVkT2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlm
ICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm5vZGVUeXBlICE9IE5vZGUuRUxFTUVOVF9OT0RFICYm
IHRoaXMucmVwcmVzZW50ZWRPYmplY3Qubm9kZVR5cGUgIT0gTm9kZS5URVhUX05PREUpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdmFyIHRleHROb2RlID0gZXZlbnQudGFy
Z2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoIndlYmtpdC1odG1sLXRleHQtbm9kZSIp
OwotICAgICAgICBpZiAodGV4dE5vZGUpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRF
ZGl0aW5nVGV4dE5vZGUodGV4dE5vZGUpOwotCi0gICAgICAgIHZhciBhdHRyaWJ1dGUgPSBldmVu
dC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygid2Via2l0LWh0bWwtYXR0cmli
dXRlIik7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGUpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5f
c3RhcnRFZGl0aW5nQXR0cmlidXRlKGF0dHJpYnV0ZSwgZXZlbnQpOwotCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9LAotCi0gICAgX3N0YXJ0RWRpdGluZ0F0dHJpYnV0ZTogZnVuY3Rpb24o
YXR0cmlidXRlLCBldmVudCkKLSAgICB7Ci0gICAgICAgIGlmIChXZWJJbnNwZWN0b3IuaXNCZWlu
Z0VkaXRlZChhdHRyaWJ1dGUpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAg
dmFyIGF0dHJpYnV0ZU5hbWVFbGVtZW50ID0gYXR0cmlidXRlLmdldEVsZW1lbnRzQnlDbGFzc05h
bWUoIndlYmtpdC1odG1sLWF0dHJpYnV0ZS1uYW1lIilbMF07Ci0gICAgICAgIGlmICghYXR0cmli
dXRlTmFtZUVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdmFy
IGF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGVOYW1lRWxlbWVudC5pbm5lclRleHQ7Ci0KLSAgICAg
ICAgZnVuY3Rpb24gcmVtb3ZlWmVyb1dpZHRoU3BhY2VSZWN1cnNpdmUobm9kZSkKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7Ci0g
ICAgICAgICAgICAgICAgbm9kZS5ub2RlVmFsdWUgPSBub2RlLm5vZGVWYWx1ZS5yZXBsYWNlKC9c
dTIwMEIvZywgIiIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgIT09IE5vZGUuRUxFTUVOVF9OT0RFKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgZm9yICh2YXIgY2hpbGQgPSBub2Rl
LmZpcnN0Q2hpbGQ7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLm5leHRTaWJsaW5nKQotICAgICAgICAg
ICAgICAgIHJlbW92ZVplcm9XaWR0aFNwYWNlUmVjdXJzaXZlKGNoaWxkKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIFJlbW92ZSB6ZXJvLXdpZHRoIHNwYWNlcyB0aGF0IHdlcmUgYWRkZWQgYnkg
bm9kZVRpdGxlSW5mby4KLSAgICAgICAgcmVtb3ZlWmVyb1dpZHRoU3BhY2VSZWN1cnNpdmUoYXR0
cmlidXRlKTsKLQotICAgICAgICB0aGlzLl9lZGl0aW5nID0gdHJ1ZTsKLQotICAgICAgICBXZWJJ
bnNwZWN0b3Iuc3RhcnRFZGl0aW5nKGF0dHJpYnV0ZSwgdGhpcy5fYXR0cmlidXRlRWRpdGluZ0Nv
bW1pdHRlZC5iaW5kKHRoaXMpLCB0aGlzLl9lZGl0aW5nQ2FuY2VsbGVkLmJpbmQodGhpcyksIGF0
dHJpYnV0ZU5hbWUpOwotICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4
dGVudChldmVudC50YXJnZXQsIDAsIGV2ZW50LnRhcmdldCwgMSk7Ci0KLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfSwKLQotICAgIF9zdGFydEVkaXRpbmdUZXh0Tm9kZTogZnVuY3Rpb24odGV4
dE5vZGUpCi0gICAgewotICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmlzQmVpbmdFZGl0ZWQodGV4
dE5vZGUpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgdGhpcy5fZWRpdGlu
ZyA9IHRydWU7Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyh0ZXh0Tm9kZSwg
dGhpcy5fdGV4dE5vZGVFZGl0aW5nQ29tbWl0dGVkLmJpbmQodGhpcyksIHRoaXMuX2VkaXRpbmdD
YW5jZWxsZWQuYmluZCh0aGlzKSk7Ci0gICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRC
YXNlQW5kRXh0ZW50KHRleHROb2RlLCAwLCB0ZXh0Tm9kZSwgMSk7Ci0KLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfSwKLQotICAgIF9hdHRyaWJ1dGVFZGl0aW5nQ29tbWl0dGVkOiBmdW5jdGlv
bihlbGVtZW50LCBuZXdUZXh0LCBvbGRUZXh0LCBhdHRyaWJ1dGVOYW1lKQotICAgIHsKLSAgICAg
ICAgZGVsZXRlIHRoaXMuX2VkaXRpbmc7Ci0KLSAgICAgICAgdmFyIHBhcnNlQ29udGFpbmVyRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgcGFyc2VDb250
YWluZXJFbGVtZW50LmlubmVySFRNTCA9ICI8c3BhbiAiICsgbmV3VGV4dCArICI+PC9zcGFuPiI7
Ci0gICAgICAgIHZhciBwYXJzZUVsZW1lbnQgPSBwYXJzZUNvbnRhaW5lckVsZW1lbnQuZmlyc3RD
aGlsZDsKLSAgICAgICAgaWYgKCFwYXJzZUVsZW1lbnQgfHwgIXBhcnNlRWxlbWVudC5oYXNBdHRy
aWJ1dGVzKCkpIHsKLSAgICAgICAgICAgIGVkaXRpbmdDYW5jZWxsZWQoZWxlbWVudCwgY29udGV4
dCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgZm91bmRP
cmlnaW5hbEF0dHJpYnV0ZSA9IGZhbHNlOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBh
cnNlRWxlbWVudC5hdHRyaWJ1dGVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgYXR0
ciA9IHBhcnNlRWxlbWVudC5hdHRyaWJ1dGVzW2ldOwotICAgICAgICAgICAgZm91bmRPcmlnaW5h
bEF0dHJpYnV0ZSA9IGZvdW5kT3JpZ2luYWxBdHRyaWJ1dGUgfHwgYXR0ci5uYW1lID09PSBhdHRy
aWJ1dGVOYW1lOwotICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5pbnNwZWN0ZWRXaW5k
b3coKS5FbGVtZW50LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGUuY2FsbCh0aGlzLnJlcHJlc2VudGVk
T2JqZWN0LCBhdHRyLm5hbWUsIGF0dHIudmFsdWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KCFmb3VuZE9yaWdpbmFsQXR0cmlidXRlKQotICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxl
ci5pbnNwZWN0ZWRXaW5kb3coKS5FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGUuY2Fs
bCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LCBhdHRyaWJ1dGVOYW1lKTsKLQotICAgICAgICB0aGlz
Ll91cGRhdGVUaXRsZSgpOwotICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnBhbmVsLl9mb2N1c2Vk
Tm9kZUNoYW5nZWQodHJ1ZSk7Ci0gICAgfSwKLQotICAgIF90ZXh0Tm9kZUVkaXRpbmdDb21taXR0
ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIG5ld1RleHQpCi0gICAgewotICAgICAgICBkZWxldGUgdGhp
cy5fZWRpdGluZzsKLQotICAgICAgICB2YXIgdGV4dE5vZGU7Ci0gICAgICAgIGlmICh0aGlzLnJl
cHJlc2VudGVkT2JqZWN0Lm5vZGVUeXBlID09IE5vZGUuRUxFTUVOVF9OT0RFKSB7Ci0gICAgICAg
ICAgICAvLyBXZSBvbmx5IHNob3cgdGV4dCBub2RlcyBpbmxpbmUgaW4gZWxlbWVudHMgaWYgdGhl
IGVsZW1lbnQgb25seQotICAgICAgICAgICAgLy8gaGFzIGEgc2luZ2xlIGNoaWxkLCBhbmQgdGhh
dCBjaGlsZCBpcyBhIHRleHQgbm9kZS4KLSAgICAgICAgICAgIHRleHROb2RlID0gdGhpcy5yZXBy
ZXNlbnRlZE9iamVjdC5maXJzdENoaWxkOwotICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVwcmVz
ZW50ZWRPYmplY3Qubm9kZVR5cGUgPT0gTm9kZS5URVhUX05PREUpCi0gICAgICAgICAgICB0ZXh0
Tm9kZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7Ci0KLSAgICAgICAgdGV4dE5vZGUubm9kZVZh
bHVlID0gbmV3VGV4dDsKLSAgICAgICAgdGhpcy5fdXBkYXRlVGl0bGUoKTsKLSAgICB9LAotCi0g
ICAgX2VkaXRpbmdDYW5jZWxsZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRleHQpCi0gICAgewot
ICAgICAgICBkZWxldGUgdGhpcy5fZWRpdGluZzsKLQotICAgICAgICB0aGlzLl91cGRhdGVUaXRs
ZSgpOwotICAgIH0sCi0KLSAgICBfdXBkYXRlVGl0bGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIHRoaXMudGl0bGUgPSBub2RlVGl0bGVJbmZvLmNhbGwodGhpcy5yZXByZXNlbnRlZE9iamVj
dCwgdGhpcy5oYXNDaGlsZHJlbiwgV2ViSW5zcGVjdG9yLmxpbmtpZnlVUkwpLnRpdGxlOwotICAg
ICAgICBkZWxldGUgdGhpcy5zZWxlY3Rpb25FbGVtZW50OwotICAgICAgICB0aGlzLnVwZGF0ZVNl
bGVjdGlvbigpOwotICAgICAgICB0aGlzLl9wcmV2ZW50Rm9sbG93aW5nTGlua3NPbkRvdWJsZUNs
aWNrKCk7Ci0gICAgfSwKLX0KLQotV2ViSW5zcGVjdG9yLkRPTU5vZGVUcmVlRWxlbWVudC5wcm90
b3R5cGUuX19wcm90b19fID0gVHJlZUVsZW1lbnQucHJvdG90eXBlOwpJbmRleDogV2ViQ29yZS9w
YWdlL2luc3BlY3Rvci9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9pbnNwZWN0b3IvRWxlbWVudHNUcmVlT3V0bGluZS5qcwkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvcGFnZS9pbnNwZWN0b3IvRWxlbWVudHNUcmVlT3V0bGluZS5qcwkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1NDUgQEAKKworV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91dGxpbmUg
PSBmdW5jdGlvbigpIHsKKyAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJvbCIpOworICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0
aGlzLl9vbm1vdXNlZG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgdGhpcy5lbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoImRibGNsaWNrIiwgdGhpcy5fb25kYmxjbGljay5iaW5kKHRoaXMpLCBm
YWxzZSk7CisgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRo
aXMuX29ubW91c2Vtb3ZlLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICB0aGlzLmVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCB0aGlzLl9vbm1vdXNlb3V0LmJpbmQodGhpcyksIGZh
bHNlKTsKKworICAgIFRyZWVPdXRsaW5lLmNhbGwodGhpcywgdGhpcy5lbGVtZW50KTsKKyAgICAK
KyAgICB0aGlzLmluY2x1ZGVSb290RE9NTm9kZSA9IHRydWU7CisgICAgdGhpcy5yb290RE9NTm9k
ZSA9IG51bGw7CisgICAgdGhpcy5mb2N1c2VkRE9NTm9kZSA9IG51bGw7CisKKyAgICB0aGlzLmhv
dmVyZWRET01Ob2RlID0gbnVsbDsKK30KKworV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91dGxp
bmUucHJvdG90eXBlID0geworICAgIGdldCByb290RE9NTm9kZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fcm9vdERPTU5vZGU7CisgICAgfSwKKworICAgIHNldCByb290RE9NTm9kZSh4
KQorICAgIHsKKyAgICAgICAgaWYgKG9iamVjdHNBcmVTYW1lKHRoaXMuX3Jvb3RET01Ob2RlLCB4
KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9yb290RE9NTm9kZSA9IHg7
CisKKyAgICAgICAgdGhpcy51cGRhdGVUcmVlT3V0bGluZSgpOworICAgIH0sCisKKyAgICBnZXQg
Zm9jdXNlZERPTU5vZGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2ZvY3VzZWRET01O
b2RlOworICAgIH0sCisKKyAgICBzZXQgZm9jdXNlZERPTU5vZGUoeCkKKyAgICB7CisgICAgICAg
IGlmIChvYmplY3RzQXJlU2FtZSh0aGlzLl9mb2N1c2VkRE9NTm9kZSwgeCkpIHsKKyAgICAgICAg
ICAgIHZhciBub2RlSXRlbSA9IHRoaXMucmV2ZWFsTm9kZSh4KTsKKyAgICAgICAgICAgIGlmIChu
b2RlSXRlbSkKKyAgICAgICAgICAgICAgICBub2RlSXRlbS5zZWxlY3QoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2ZvY3VzZWRET01Ob2RlID0geDsK
KworICAgICAgICB0aGlzLm9uRm9jdXNlZE5vZGVDaGFuZ2VkKCk7CisKKyAgICAgICAgdmFyIG5v
ZGVJdGVtID0gdGhpcy5yZXZlYWxOb2RlKHgpOworICAgICAgICBpZiAobm9kZUl0ZW0pCisgICAg
ICAgICAgICBub2RlSXRlbS5zZWxlY3QoKTsKKyAgICB9LAorCisgICAgZ2V0IGhvdmVyZWRET01O
b2RlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9ob3ZlcmVkRE9NTm9kZTsKKyAgICB9
LAorCisgICAgc2V0IGhvdmVyZWRET01Ob2RlKHgpCisgICAgeworICAgICAgICBpZiAob2JqZWN0
c0FyZVNhbWUodGhpcy5faG92ZXJlZERPTU5vZGUsIHgpKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIHRoaXMuX2hvdmVyZWRET01Ob2RlID0geDsKKworICAgICAgICB0aGlzLl91cGRh
dGVIb3ZlckhpZ2hsaWdodCgpOworICAgIH0sCisgICAgCisgICAgdXBkYXRlVHJlZU91dGxpbmU6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW5SZWN1cnNpdmUo
KTsKKworICAgICAgICBpZiAoIXRoaXMucm9vdERPTU5vZGUpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKHRoaXMuaW5jbHVkZVJvb3RET01Ob2RlKQorICAgICAgICAgICAgdGhp
cy50cmVlT3V0bGluZS5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVs
ZW1lbnQodGhpcy5yb290RE9NTm9kZSkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiB0aGlzIGNvdWxkIHVzZSBmaW5kVHJlZUVsZW1lbnQgdG8gcmV1c2UgYSB0cmVlIGVs
ZW1lbnQgaWYgaXQgYWxyZWFkeSBleGlzdHMKKyAgICAgICAgICAgIHZhciBub2RlID0gKFByZWZl
cmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UgPyBmaXJzdENoaWxkU2tpcHBpbmdXaGl0ZXNwYWNlLmNh
bGwodGhpcy5yb290RE9NTm9kZSkgOiB0aGlzLnJvb3RET01Ob2RlLmZpcnN0Q2hpbGQpOworICAg
ICAgICAgICAgd2hpbGUgKG5vZGUpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5l
LmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudChub2RlKSk7
CisgICAgICAgICAgICAgICAgbm9kZSA9IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UgPyBu
ZXh0U2libGluZ1NraXBwaW5nV2hpdGVzcGFjZS5jYWxsKG5vZGUpIDogbm9kZS5uZXh0U2libGlu
ZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHRoaXMudXBkYXRlVHJlZVNl
bGVjdGlvbigpOworICAgIH0sCisKKyAgICB1cGRhdGVUcmVlU2VsZWN0aW9uOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLnNlbGVjdGVkVHJlZUVsZW1l
bnQ7CisgICAgICAgIGVsZW1lbnQudXBkYXRlU2VsZWN0aW9uKCk7CisgICAgfSwKKworICAgIG9u
Rm9jdXNlZE5vZGVDaGFuZ2VkOiBmdW5jdGlvbigpIHt9LAorCisgICAgX3VwZGF0ZUhvdmVySGln
aGxpZ2h0U29vbjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCJfdXBkYXRlSG92ZXJI
aWdobGlnaHRUaW1lb3V0IiBpbiB0aGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0
aGlzLl91cGRhdGVIb3ZlckhpZ2hsaWdodFRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuX3VwZGF0
ZUhvdmVySGlnaGxpZ2h0LmJpbmQodGhpcyksIDApOworICAgIH0sCisKKyAgICBfdXBkYXRlSG92
ZXJIaWdobGlnaHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICgiX3VwZGF0ZUhvdmVy
SGlnaGxpZ2h0VGltZW91dCIgaW4gdGhpcykgeworICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRo
aXMuX3VwZGF0ZUhvdmVySGlnaGxpZ2h0VGltZW91dCk7CisgICAgICAgICAgICBkZWxldGUgdGhp
cy5fdXBkYXRlSG92ZXJIaWdobGlnaHRUaW1lb3V0OworICAgICAgICB9CisKKyAgICAgICAgaWYg
KHRoaXMuX2hvdmVyZWRET01Ob2RlKQorICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5o
aWdobGlnaHRET01Ob2RlKHRoaXMuX2hvdmVyZWRET01Ob2RlKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOworICAg
IH0sCisKKyAgICByZXZlYWxOb2RlOiBmdW5jdGlvbihub2RlKQorICAgIHsKKyAgICAgICAgdmFy
IG5vZGVJdGVtID0gdGhpcy50cmVlT3V0bGluZS5maW5kVHJlZUVsZW1lbnQobm9kZSwgdGhpcy5f
aXNBbmNlc3RvckluY2x1ZGluZ1BhcmVudEZyYW1lcy5iaW5kKHRoaXMpLCB0aGlzLl9wYXJlbnRO
b2RlT3JGcmFtZUVsZW1lbnQuYmluZCh0aGlzKSwgb2JqZWN0c0FyZVNhbWUpOworICAgICAgICBp
ZiAoIW5vZGVJdGVtKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG5vZGVJdGVtLnJl
dmVhbCgpOworICAgICAgICByZXR1cm4gbm9kZUl0ZW07CisgICAgfSwKKworICAgIF9nZXREb2N1
bWVudEZvck5vZGU6IGZ1bmN0aW9uKG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gbm9kZS5u
b2RlVHlwZSA9PSBOb2RlLkRPQ1VNRU5UX05PREUgPyBub2RlIDogbm9kZS5vd25lckRvY3VtZW50
OworICAgIH0sCisKKyAgICBfcGFyZW50Tm9kZU9yRnJhbWVFbGVtZW50OiBmdW5jdGlvbihub2Rl
KQorICAgIHsKKyAgICAgICAgdmFyIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZTsKKyAgICAgICAg
aWYgKHBhcmVudCkKKyAgICAgICAgICAgIHJldHVybiBwYXJlbnQ7CisKKyAgICAgICAgdmFyIGRv
Y3VtZW50ID0gdGhpcy5fZ2V0RG9jdW1lbnRGb3JOb2RlKG5vZGUpOworICAgICAgICByZXR1cm4g
ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZnJhbWVFbGVtZW50OworICAgIH0sCisKKyAgICBfaXNBbmNl
c3RvckluY2x1ZGluZ1BhcmVudEZyYW1lczogZnVuY3Rpb24oYSwgYikKKyAgICB7CisgICAgICAg
IGlmIChvYmplY3RzQXJlU2FtZShhLCBiKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgZm9yICh2YXIgbm9kZSA9IGI7IG5vZGU7IG5vZGUgPSB0aGlzLl9nZXREb2N1bWVudEZv
ck5vZGUobm9kZSkuZGVmYXVsdFZpZXcuZnJhbWVFbGVtZW50KQorICAgICAgICAgICAgaWYgKG9i
amVjdHNBcmVTYW1lKGEsIG5vZGUpIHx8IGlzQW5jZXN0b3JOb2RlLmNhbGwoYSwgbm9kZSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
LAorCisgICAgX3RyZWVFbGVtZW50RnJvbUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICB7Cisg
ICAgICAgIHZhciBvdXRsaW5lID0gdGhpcy50cmVlT3V0bGluZTsKKworICAgICAgICB2YXIgcm9v
dCA9IHRoaXMuZWxlbWVudDsKKworICAgICAgICAvLyBXZSBjaG9vc2UgdGhpcyBYIGNvb3JkaW5h
dGUgYmFzZWQgb24gdGhlIGtub3dsZWRnZSB0aGF0IG91ciBsaXN0CisgICAgICAgIC8vIGl0ZW1z
IGV4dGVuZCBuZWFybHkgdG8gdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIG91dGVyIDxvbD4uCisgICAg
ICAgIHZhciB4ID0gcm9vdC50b3RhbE9mZnNldExlZnQgKyByb290Lm9mZnNldFdpZHRoIC0gMjA7
CisKKyAgICAgICAgdmFyIHkgPSBldmVudC5wYWdlWTsKKworICAgICAgICAvLyBPdXIgbGlzdCBp
dGVtcyBoYXZlIDEtcGl4ZWwgY3JhY2tzIGJldHdlZW4gdGhlbSB2ZXJ0aWNhbGx5LiBXZSBhdm9p
ZAorICAgICAgICAvLyB0aGUgY3JhY2tzIGJ5IGNoZWNraW5nIHNsaWdodGx5IGFib3ZlIGFuZCBz
bGlnaHRseSBiZWxvdyB0aGUgbW91c2UKKyAgICAgICAgLy8gYW5kIHNlZWluZyBpZiB3ZSBoaXQg
dGhlIHNhbWUgZWxlbWVudCBlYWNoIHRpbWUuCisgICAgICAgIHZhciBlbGVtZW50VW5kZXJNb3Vz
ZSA9IG91dGxpbmUudHJlZUVsZW1lbnRGcm9tUG9pbnQoeCwgeSk7CisgICAgICAgIHZhciBlbGVt
ZW50QWJvdmVNb3VzZSA9IG91dGxpbmUudHJlZUVsZW1lbnRGcm9tUG9pbnQoeCwgeSAtIDIpOwor
ICAgICAgICB2YXIgZWxlbWVudDsKKyAgICAgICAgaWYgKGVsZW1lbnRVbmRlck1vdXNlID09PSBl
bGVtZW50QWJvdmVNb3VzZSkKKyAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50VW5kZXJNb3Vz
ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZWxlbWVudCA9IG91dGxpbmUudHJlZUVsZW1l
bnRGcm9tUG9pbnQoeCwgeSArIDIpOworCisgICAgICAgIHJldHVybiBlbGVtZW50OworICAgIH0s
CisKKyAgICBfb25kYmxjbGljazogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIg
ZWxlbWVudCA9IHRoaXMuX3RyZWVFbGVtZW50RnJvbUV2ZW50KGV2ZW50KTsKKworICAgICAgICBp
ZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQub25kYmxjbGljaykKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBlbGVtZW50Lm9uZGJsY2xpY2soZWxlbWVudCwgZXZlbnQpOworICAgIH0sCisK
KyAgICBfb25tb3VzZWRvd246IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGVs
ZW1lbnQgPSB0aGlzLl90cmVlRWxlbWVudEZyb21FdmVudChldmVudCk7CisKKyAgICAgICAgaWYg
KCFlbGVtZW50IHx8IGVsZW1lbnQuaXNFdmVudFdpdGhpbkRpc2Nsb3N1cmVUcmlhbmdsZShldmVu
dCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZWxlbWVudC5zZWxlY3QoKTsKKyAg
ICB9LAorCisgICAgX29ubW91c2Vtb3ZlOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAg
IHZhciBlbGVtZW50ID0gdGhpcy5fdHJlZUVsZW1lbnRGcm9tRXZlbnQoZXZlbnQpOworICAgICAg
ICBpZiAoIWVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5ob3Zl
cmVkRE9NTm9kZSA9IGVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3Q7CisgICAgfSwKKworICAgIF9v
bm1vdXNlb3V0OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmIChldmVudC50YXJn
ZXQgIT09IHRoaXMuZWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5o
b3ZlcmVkRE9NTm9kZSA9IG51bGw7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuRWxlbWVudHNU
cmVlT3V0bGluZS5wcm90b3R5cGUuX19wcm90b19fID0gVHJlZU91dGxpbmUucHJvdG90eXBlOwor
CisKKworV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihub2RlKQor
eworICAgIHZhciBoYXNDaGlsZHJlbiA9IG5vZGUuY29udGVudERvY3VtZW50IHx8IChQcmVmZXJl
bmNlcy5pZ25vcmVXaGl0ZXNwYWNlID8gKGZpcnN0Q2hpbGRTa2lwcGluZ1doaXRlc3BhY2UuY2Fs
bChub2RlKSA/IHRydWUgOiBmYWxzZSkgOiBub2RlLmhhc0NoaWxkTm9kZXMoKSk7CisgICAgdmFy
IHRpdGxlSW5mbyA9IG5vZGVUaXRsZUluZm8uY2FsbChub2RlLCBoYXNDaGlsZHJlbiwgV2ViSW5z
cGVjdG9yLmxpbmtpZnlVUkwpOworCisgICAgaWYgKHRpdGxlSW5mby5oYXNDaGlsZHJlbikgCisg
ICAgICAgIHRoaXMud2hpdGVzcGFjZUlnbm9yZWQgPSBQcmVmZXJlbmNlcy5pZ25vcmVXaGl0ZXNw
YWNlOworCisgICAgVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCB0aXRsZUluZm8udGl0bGUsIG5vZGUs
IHRpdGxlSW5mby5oYXNDaGlsZHJlbik7Cit9CisKK1dlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKKyAgICB1cGRhdGVTZWxlY3Rpb246IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHZhciBsaXN0SXRlbUVsZW1lbnQgPSB0aGlzLmxpc3RJdGVtRWxlbWVudDsK
KyAgICAgICAgaWYgKCFsaXN0SXRlbUVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgaWYgKGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGggPD0gMCkgeworICAgICAgICAgICAg
Ly8gVGhlIHN0eWxlc2hlZXQgaGFzbid0IGxvYWRlZCB5ZXQgb3IgdGhlIHdpbmRvdyBpcyBjbG9z
ZWQsCisgICAgICAgICAgICAvLyBzbyB3ZSBjYW4ndCBjYWxjdWxhdGUgd2hhdCBpcyBuZWVkLiBS
ZXR1cm4gZWFybHkuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoIXRoaXMuc2VsZWN0aW9uRWxlbWVudCkgeworICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25F
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgICAgICB0aGlz
LnNlbGVjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gInNlbGVjdGlvbiBzZWxlY3RlZCI7CisgICAg
ICAgICAgICBsaXN0SXRlbUVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMuc2VsZWN0aW9uRWxlbWVu
dCwgbGlzdEl0ZW1FbGVtZW50LmZpcnN0Q2hpbGQpOworICAgICAgICB9CisKKyAgICAgICAgdGhp
cy5zZWxlY3Rpb25FbGVtZW50LnN0eWxlLmhlaWdodCA9IGxpc3RJdGVtRWxlbWVudC5vZmZzZXRI
ZWlnaHQgKyAicHgiOworICAgIH0sCisKKyAgICBvbmF0dGFjaDogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3du
IiwgdGhpcy5vbm1vdXNlZG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7CisKKyAgICAgICAgdGhpcy5f
cHJldmVudEZvbGxvd2luZ0xpbmtzT25Eb3VibGVDbGljaygpOworICAgIH0sCisKKyAgICBfcHJl
dmVudEZvbGxvd2luZ0xpbmtzT25Eb3VibGVDbGljazogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgdmFyIGxpbmtzID0gdGhpcy5saXN0SXRlbUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgibGkg
PiAud2Via2l0LWh0bWwtdGFnID4gLndlYmtpdC1odG1sLWF0dHJpYnV0ZSA+IC53ZWJraXQtaHRt
bC1leHRlcm5hbC1saW5rLCBsaSA+IC53ZWJraXQtaHRtbC10YWcgPiAud2Via2l0LWh0bWwtYXR0
cmlidXRlID4gLndlYmtpdC1odG1sLXJlc291cmNlLWxpbmsiKTsKKyAgICAgICAgaWYgKCFsaW5r
cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxp
bmtzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgbGlua3NbaV0ucHJldmVudEZvbGxvd09uRG91
YmxlQ2xpY2sgPSB0cnVlOworICAgIH0sCisKKyAgICBvbnBvcHVsYXRlOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggfHwgdGhpcy53aGl0ZXNwYWNl
SWdub3JlZCAhPT0gUHJlZmVyZW5jZXMuaWdub3JlV2hpdGVzcGFjZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB0aGlzLndoaXRlc3BhY2VJZ25vcmVkID0gUHJlZmVyZW5jZXMuaWdu
b3JlV2hpdGVzcGFjZTsKKworICAgICAgICB0aGlzLnVwZGF0ZUNoaWxkcmVuKCk7CisgICAgfSwK
KworICAgIHVwZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbihmdWxsUmVmcmVzaCkKKyAgICB7CisgICAg
ICAgIGlmIChmdWxsUmVmcmVzaCkgeworICAgICAgICAgICAgdmFyIHNlbGVjdGVkVHJlZUVsZW1l
bnQgPSB0aGlzLnRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQ7CisgICAgICAgICAgICBp
ZiAoc2VsZWN0ZWRUcmVlRWxlbWVudCAmJiBzZWxlY3RlZFRyZWVFbGVtZW50Lmhhc0FuY2VzdG9y
KHRoaXMpKQorICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCk7CisgICAgICAgICAgICB0aGlz
LnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgdHJlZUVsZW1lbnQg
PSB0aGlzOworICAgICAgICB2YXIgdHJlZUNoaWxkSW5kZXggPSAwOworCisgICAgICAgIGZ1bmN0
aW9uIHVwZGF0ZUNoaWxkcmVuT2ZOb2RlKG5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciB0cmVlT3V0bGluZSA9IHRyZWVFbGVtZW50LnRyZWVPdXRsaW5lOworICAgICAgICAgICAgdmFy
IGNoaWxkID0gKFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UgPyBmaXJzdENoaWxkU2tpcHBp
bmdXaGl0ZXNwYWNlLmNhbGwobm9kZSkgOiBub2RlLmZpcnN0Q2hpbGQpOworICAgICAgICAgICAg
d2hpbGUgKGNoaWxkKSB7CisgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRUcmVlRWxlbWVudCA9
IHRyZWVFbGVtZW50LmNoaWxkcmVuW3RyZWVDaGlsZEluZGV4XTsKKyAgICAgICAgICAgICAgICBp
ZiAoIWN1cnJlbnRUcmVlRWxlbWVudCB8fCAhb2JqZWN0c0FyZVNhbWUoY3VycmVudFRyZWVFbGVt
ZW50LnJlcHJlc2VudGVkT2JqZWN0LCBjaGlsZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8g
RmluZCBhbnkgZXhpc3RpbmcgZWxlbWVudCB0aGF0IGlzIGxhdGVyIGluIHRoZSBjaGlsZHJlbiBs
aXN0LgorICAgICAgICAgICAgICAgICAgICB2YXIgZXhpc3RpbmdUcmVlRWxlbWVudCA9IG51bGw7
CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAodHJlZUNoaWxkSW5kZXggKyAxKTsg
aSA8IHRyZWVFbGVtZW50LmNoaWxkcmVuLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAob2JqZWN0c0FyZVNhbWUodHJlZUVsZW1lbnQuY2hpbGRyZW5baV0ucmVwcmVz
ZW50ZWRPYmplY3QsIGNoaWxkKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0
aW5nVHJlZUVsZW1lbnQgPSB0cmVlRWxlbWVudC5jaGlsZHJlbltpXTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ1RyZWVFbGVt
ZW50ICYmIGV4aXN0aW5nVHJlZUVsZW1lbnQucGFyZW50ID09PSB0cmVlRWxlbWVudCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gSWYgYW4gZXhpc3RpbmcgZWxlbWVudCB3YXMgZm91bmQg
YW5kIGl0IGhhcyB0aGUgc2FtZSBwYXJlbnQsIGp1c3QgbW92ZSBpdC4KKyAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciB3YXNTZWxlY3RlZCA9IGV4aXN0aW5nVHJlZUVsZW1lbnQuc2VsZWN0ZWQ7
CisgICAgICAgICAgICAgICAgICAgICAgICB0cmVlRWxlbWVudC5yZW1vdmVDaGlsZChleGlzdGlu
Z1RyZWVFbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50Lmluc2Vy
dENoaWxkKGV4aXN0aW5nVHJlZUVsZW1lbnQsIHRyZWVDaGlsZEluZGV4KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh3YXNTZWxlY3RlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleGlzdGluZ1RyZWVFbGVtZW50LnNlbGVjdCgpOworICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8gZXhpc3RpbmcgZWxlbWVudCBmb3Vu
ZCwgaW5zZXJ0IGEgbmV3IGVsZW1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICB0cmVlRWxl
bWVudC5pbnNlcnRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQoY2hp
bGQpLCB0cmVlQ2hpbGRJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBjaGlsZCA9IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRl
c3BhY2UgPyBuZXh0U2libGluZ1NraXBwaW5nV2hpdGVzcGFjZS5jYWxsKGNoaWxkKSA6IGNoaWxk
Lm5leHRTaWJsaW5nOworICAgICAgICAgICAgICAgICsrdHJlZUNoaWxkSW5kZXg7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBSZW1vdmUgYW55IHRyZWUgZWxlbWVudHMg
dGhhdCBubyBsb25nZXIgaGF2ZSB0aGlzIG5vZGUgKG9yIHRoaXMgbm9kZSdzIGNvbnRlbnREb2N1
bWVudCkgYXMgdGhlaXIgcGFyZW50LgorICAgICAgICBmb3IgKHZhciBpID0gKHRoaXMuY2hpbGRy
ZW4ubGVuZ3RoIC0gMSk7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAgICBpZiAoImVsZW1lbnRD
bG9zZVRhZyIgaW4gdGhpcy5jaGlsZHJlbltpXSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICAgICAgdmFyIGN1cnJlbnRDaGlsZCA9IHRoaXMuY2hpbGRyZW5baV07CisgICAg
ICAgICAgICB2YXIgY3VycmVudE5vZGUgPSBjdXJyZW50Q2hpbGQucmVwcmVzZW50ZWRPYmplY3Q7
CisgICAgICAgICAgICB2YXIgY3VycmVudFBhcmVudE5vZGUgPSBjdXJyZW50Tm9kZS5wYXJlbnRO
b2RlOworCisgICAgICAgICAgICBpZiAob2JqZWN0c0FyZVNhbWUoY3VycmVudFBhcmVudE5vZGUs
IHRoaXMucmVwcmVzZW50ZWRPYmplY3QpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY29udGVudERvY3VtZW50ICYmIG9i
amVjdHNBcmVTYW1lKGN1cnJlbnRQYXJlbnROb2RlLCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmNv
bnRlbnREb2N1bWVudCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAg
IHZhciBzZWxlY3RlZFRyZWVFbGVtZW50ID0gdGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVF
bGVtZW50OworICAgICAgICAgICAgaWYgKHNlbGVjdGVkVHJlZUVsZW1lbnQgJiYgKHNlbGVjdGVk
VHJlZUVsZW1lbnQgPT09IGN1cnJlbnRDaGlsZCB8fCBzZWxlY3RlZFRyZWVFbGVtZW50Lmhhc0Fu
Y2VzdG9yKGN1cnJlbnRDaGlsZCkpKQorICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCk7CisK
KyAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRBdEluZGV4KGkpOworCisgICAgICAgICAgICBp
ZiAodGhpcy50cmVlT3V0bGluZS5wYW5lbCAmJiBjdXJyZW50Tm9kZS5jb250ZW50RG9jdW1lbnQp
CisgICAgICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5wYW5lbC51bnJlZ2lzdGVyTXV0YXRp
b25FdmVudExpc3RlbmVycyhjdXJyZW50Tm9kZS5jb250ZW50RG9jdW1lbnQuZGVmYXVsdFZpZXcp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY29udGVu
dERvY3VtZW50KQorICAgICAgICAgICAgdXBkYXRlQ2hpbGRyZW5PZk5vZGUodGhpcy5yZXByZXNl
bnRlZE9iamVjdC5jb250ZW50RG9jdW1lbnQpOworICAgICAgICB1cGRhdGVDaGlsZHJlbk9mTm9k
ZSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKKworICAgICAgICB2YXIgbGFzdENoaWxkID0gdGhp
cy5jaGlsZHJlblt0aGlzLmNoaWxkcmVuLmxlbmd0aCAtIDFdOworICAgICAgICBpZiAodGhpcy5y
ZXByZXNlbnRlZE9iamVjdC5ub2RlVHlwZSA9PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiAoIWxhc3RD
aGlsZCB8fCAhbGFzdENoaWxkLmVsZW1lbnRDbG9zZVRhZykpIHsKKyAgICAgICAgICAgIHZhciB0
aXRsZSA9ICI8c3BhbiBjbGFzcz1cIndlYmtpdC1odG1sLXRhZyBjbG9zZVwiPiZsdDsvIiArIHRo
aXMucmVwcmVzZW50ZWRPYmplY3Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKS5lc2NhcGVIVE1MKCkg
KyAiJmd0Ozwvc3Bhbj4iOworICAgICAgICAgICAgdmFyIGl0ZW0gPSBuZXcgVHJlZUVsZW1lbnQo
dGl0bGUsIG51bGwsIGZhbHNlKTsKKyAgICAgICAgICAgIGl0ZW0uc2VsZWN0YWJsZSA9IGZhbHNl
OworICAgICAgICAgICAgaXRlbS5lbGVtZW50Q2xvc2VUYWcgPSB0cnVlOworICAgICAgICAgICAg
dGhpcy5hcHBlbmRDaGlsZChpdGVtKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBvbmV4cGFu
ZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy50cmVlT3V0bGluZS51cGRhdGVUcmVl
U2VsZWN0aW9uKCk7CisKKyAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUucGFuZWwgJiYgdGhp
cy5yZXByZXNlbnRlZE9iamVjdC5jb250ZW50RG9jdW1lbnQpCisgICAgICAgICAgICB0aGlzLnRy
ZWVPdXRsaW5lLnBhbmVsLnJlZ2lzdGVyTXV0YXRpb25FdmVudExpc3RlbmVycyh0aGlzLnJlcHJl
c2VudGVkT2JqZWN0LmNvbnRlbnREb2N1bWVudC5kZWZhdWx0Vmlldyk7CisgICAgfSwKKworICAg
IG9uY29sbGFwc2U6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMudHJlZU91dGxpbmUu
dXBkYXRlVHJlZVNlbGVjdGlvbigpOworICAgIH0sCisKKyAgICBvbnJldmVhbDogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMubGlzdEl0ZW1FbGVtZW50KQorICAgICAgICAgICAg
dGhpcy5saXN0SXRlbUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChmYWxzZSk7CisgICAg
fSwKKworICAgIG9uc2VsZWN0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLnRyZWVP
dXRsaW5lLmZvY3VzZWRET01Ob2RlID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKKyAgICAgICAg
dGhpcy51cGRhdGVTZWxlY3Rpb24oKTsKKyAgICB9LAorCisgICAgb25tb3VzZWRvd246IGZ1bmN0
aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2VkaXRpbmcpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgLy8gUHJldmVudCBzZWxlY3RpbmcgdGhlIG5lYXJlc3Qgd29y
ZCBvbiBkb3VibGUgY2xpY2suCisgICAgICAgIGlmIChldmVudC5kZXRhaWwgPj0gMikKKyAgICAg
ICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgfSwKKworICAgIG9uZGJsY2xpY2s6
IGZ1bmN0aW9uKHRyZWVFbGVtZW50LCBldmVudCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9l
ZGl0aW5nKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0aGlzLl9zdGFydEVk
aXRpbmcoZXZlbnQpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMudHJlZU91
dGxpbmUucm9vdERPTU5vZGUgPSB0aGlzLnBhcmVudC5yZXByZXNlbnRlZE9iamVjdDsKKyAgICAg
ICAgdGhpcy50cmVlT3V0bGluZS5mb2N1c2VkRE9NTm9kZSA9IHRoaXMucmVwcmVzZW50ZWRPYmpl
Y3Q7CisKKyAgICAgICAgaWYgKHRoaXMuaGFzQ2hpbGRyZW4gJiYgIXRoaXMuZXhwYW5kZWQpCisg
ICAgICAgICAgICB0aGlzLmV4cGFuZCgpOworICAgIH0sCisKKyAgICBfc3RhcnRFZGl0aW5nOiBm
dW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lLmZvY3Vz
ZWRET01Ob2RlICE9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3Qubm9kZVR5cGUgIT0gTm9kZS5F
TEVNRU5UX05PREUgJiYgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5ub2RlVHlwZSAhPSBOb2RlLlRF
WFRfTk9ERSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB2YXIgdGV4dE5v
ZGUgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygid2Via2l0LWh0
bWwtdGV4dC1ub2RlIik7CisgICAgICAgIGlmICh0ZXh0Tm9kZSkKKyAgICAgICAgICAgIHJldHVy
biB0aGlzLl9zdGFydEVkaXRpbmdUZXh0Tm9kZSh0ZXh0Tm9kZSk7CisKKyAgICAgICAgdmFyIGF0
dHJpYnV0ZSA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJ3ZWJr
aXQtaHRtbC1hdHRyaWJ1dGUiKTsKKyAgICAgICAgaWYgKGF0dHJpYnV0ZSkKKyAgICAgICAgICAg
IHJldHVybiB0aGlzLl9zdGFydEVkaXRpbmdBdHRyaWJ1dGUoYXR0cmlidXRlLCBldmVudCk7CisK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0sCisKKyAgICBfc3RhcnRFZGl0aW5nQXR0cmli
dXRlOiBmdW5jdGlvbihhdHRyaWJ1dGUsIGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKFdlYklu
c3BlY3Rvci5pc0JlaW5nRWRpdGVkKGF0dHJpYnV0ZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgICAgICB2YXIgYXR0cmlidXRlTmFtZUVsZW1lbnQgPSBhdHRyaWJ1dGUuZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZSgid2Via2l0LWh0bWwtYXR0cmlidXRlLW5hbWUiKVswXTsKKyAgICAg
ICAgaWYgKCFhdHRyaWJ1dGVOYW1lRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICB2YXIgYXR0cmlidXRlTmFtZSA9IGF0dHJpYnV0ZU5hbWVFbGVtZW50LmlubmVy
VGV4dDsKKworICAgICAgICBmdW5jdGlvbiByZW1vdmVaZXJvV2lkdGhTcGFjZVJlY3Vyc2l2ZShu
b2RlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5U
RVhUX05PREUpIHsKKyAgICAgICAgICAgICAgICBub2RlLm5vZGVWYWx1ZSA9IG5vZGUubm9kZVZh
bHVlLnJlcGxhY2UoL1x1MjAwQi9nLCAiIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSAhPT0gTm9kZS5FTEVN
RU5UX05PREUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBmb3IgKHZh
ciBjaGlsZCA9IG5vZGUuZmlyc3RDaGlsZDsgY2hpbGQ7IGNoaWxkID0gY2hpbGQubmV4dFNpYmxp
bmcpCisgICAgICAgICAgICAgICAgcmVtb3ZlWmVyb1dpZHRoU3BhY2VSZWN1cnNpdmUoY2hpbGQp
OworICAgICAgICB9CisKKyAgICAgICAgLy8gUmVtb3ZlIHplcm8td2lkdGggc3BhY2VzIHRoYXQg
d2VyZSBhZGRlZCBieSBub2RlVGl0bGVJbmZvLgorICAgICAgICByZW1vdmVaZXJvV2lkdGhTcGFj
ZVJlY3Vyc2l2ZShhdHRyaWJ1dGUpOworCisgICAgICAgIHRoaXMuX2VkaXRpbmcgPSB0cnVlOwor
CisgICAgICAgIFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcoYXR0cmlidXRlLCB0aGlzLl9hdHRy
aWJ1dGVFZGl0aW5nQ29tbWl0dGVkLmJpbmQodGhpcyksIHRoaXMuX2VkaXRpbmdDYW5jZWxsZWQu
YmluZCh0aGlzKSwgYXR0cmlidXRlTmFtZSk7CisgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5zZXRCYXNlQW5kRXh0ZW50KGV2ZW50LnRhcmdldCwgMCwgZXZlbnQudGFyZ2V0LCAxKTsKKwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgX3N0YXJ0RWRpdGluZ1RleHROb2Rl
OiBmdW5jdGlvbih0ZXh0Tm9kZSkKKyAgICB7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuaXNC
ZWluZ0VkaXRlZCh0ZXh0Tm9kZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAg
ICB0aGlzLl9lZGl0aW5nID0gdHJ1ZTsKKworICAgICAgICBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0
aW5nKHRleHROb2RlLCB0aGlzLl90ZXh0Tm9kZUVkaXRpbmdDb21taXR0ZWQuYmluZCh0aGlzKSwg
dGhpcy5fZWRpdGluZ0NhbmNlbGxlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQodGV4dE5vZGUsIDAsIHRleHROb2RlLCAxKTsKKwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgX2F0dHJpYnV0ZUVkaXRpbmdDb21t
aXR0ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIG5ld1RleHQsIG9sZFRleHQsIGF0dHJpYnV0ZU5hbWUp
CisgICAgeworICAgICAgICBkZWxldGUgdGhpcy5fZWRpdGluZzsKKworICAgICAgICB2YXIgcGFy
c2VDb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAg
ICAgICBwYXJzZUNvbnRhaW5lckVsZW1lbnQuaW5uZXJIVE1MID0gIjxzcGFuICIgKyBuZXdUZXh0
ICsgIj48L3NwYW4+IjsKKyAgICAgICAgdmFyIHBhcnNlRWxlbWVudCA9IHBhcnNlQ29udGFpbmVy
RWxlbWVudC5maXJzdENoaWxkOworICAgICAgICBpZiAoIXBhcnNlRWxlbWVudCB8fCAhcGFyc2VF
bGVtZW50Lmhhc0F0dHJpYnV0ZXMoKSkgeworICAgICAgICAgICAgZWRpdGluZ0NhbmNlbGxlZChl
bGVtZW50LCBjb250ZXh0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIHZhciBmb3VuZE9yaWdpbmFsQXR0cmlidXRlID0gZmFsc2U7CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgcGFyc2VFbGVtZW50LmF0dHJpYnV0ZXMubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgIHZhciBhdHRyID0gcGFyc2VFbGVtZW50LmF0dHJpYnV0ZXNbaV07CisgICAgICAgICAg
ICBmb3VuZE9yaWdpbmFsQXR0cmlidXRlID0gZm91bmRPcmlnaW5hbEF0dHJpYnV0ZSB8fCBhdHRy
Lm5hbWUgPT09IGF0dHJpYnV0ZU5hbWU7CisgICAgICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVy
Lmluc3BlY3RlZFdpbmRvdygpLkVsZW1lbnQucHJvdG90eXBlLnNldEF0dHJpYnV0ZS5jYWxsKHRo
aXMucmVwcmVzZW50ZWRPYmplY3QsIGF0dHIubmFtZSwgYXR0ci52YWx1ZSk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoIWZvdW5kT3JpZ2luYWxBdHRyaWJ1dGUpCisgICAgICAgICAgICBJbnNw
ZWN0b3JDb250cm9sbGVyLmluc3BlY3RlZFdpbmRvdygpLkVsZW1lbnQucHJvdG90eXBlLnJlbW92
ZUF0dHJpYnV0ZS5jYWxsKHRoaXMucmVwcmVzZW50ZWRPYmplY3QsIGF0dHJpYnV0ZU5hbWUpOwor
CisgICAgICAgIHRoaXMuX3VwZGF0ZVRpdGxlKCk7CisgICAgICAgIHRoaXMudHJlZU91dGxpbmUu
b25Gb2N1c2VkTm9kZUNoYW5nZWQodHJ1ZSk7CisgICAgfSwKKworICAgIF90ZXh0Tm9kZUVkaXRp
bmdDb21taXR0ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIG5ld1RleHQpCisgICAgeworICAgICAgICBk
ZWxldGUgdGhpcy5fZWRpdGluZzsKKworICAgICAgICB2YXIgdGV4dE5vZGU7CisgICAgICAgIGlm
ICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm5vZGVUeXBlID09IE5vZGUuRUxFTUVOVF9OT0RFKSB7
CisgICAgICAgICAgICAvLyBXZSBvbmx5IHNob3cgdGV4dCBub2RlcyBpbmxpbmUgaW4gZWxlbWVu
dHMgaWYgdGhlIGVsZW1lbnQgb25seQorICAgICAgICAgICAgLy8gaGFzIGEgc2luZ2xlIGNoaWxk
LCBhbmQgdGhhdCBjaGlsZCBpcyBhIHRleHQgbm9kZS4KKyAgICAgICAgICAgIHRleHROb2RlID0g
dGhpcy5yZXByZXNlbnRlZE9iamVjdC5maXJzdENoaWxkOworICAgICAgICB9IGVsc2UgaWYgKHRo
aXMucmVwcmVzZW50ZWRPYmplY3Qubm9kZVR5cGUgPT0gTm9kZS5URVhUX05PREUpCisgICAgICAg
ICAgICB0ZXh0Tm9kZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CisKKyAgICAgICAgdGV4dE5v
ZGUubm9kZVZhbHVlID0gbmV3VGV4dDsKKyAgICAgICAgdGhpcy5fdXBkYXRlVGl0bGUoKTsKKyAg
ICB9LAorCisgICAgX2VkaXRpbmdDYW5jZWxsZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRleHQp
CisgICAgeworICAgICAgICBkZWxldGUgdGhpcy5fZWRpdGluZzsKKworICAgICAgICB0aGlzLl91
cGRhdGVUaXRsZSgpOworICAgIH0sCisKKyAgICBfdXBkYXRlVGl0bGU6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHRoaXMudGl0bGUgPSBub2RlVGl0bGVJbmZvLmNhbGwodGhpcy5yZXByZXNl
bnRlZE9iamVjdCwgdGhpcy5oYXNDaGlsZHJlbiwgV2ViSW5zcGVjdG9yLmxpbmtpZnlVUkwpLnRp
dGxlOworICAgICAgICBkZWxldGUgdGhpcy5zZWxlY3Rpb25FbGVtZW50OworICAgICAgICB0aGlz
LnVwZGF0ZVNlbGVjdGlvbigpOworICAgICAgICB0aGlzLl9wcmV2ZW50Rm9sbG93aW5nTGlua3NP
bkRvdWJsZUNsaWNrKCk7CisgICAgfSwKK30KKworV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVs
ZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFRyZWVFbGVtZW50LnByb3RvdHlwZTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBXZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL2luc3Bl
Y3Rvci5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9pbnNwZWN0b3Iu
Y3NzCShyZXZpc2lvbiAzNTgxNykKKysrIFdlYkNvcmUvcGFnZS9pbnNwZWN0b3IvaW5zcGVjdG9y
LmNzcwkod29ya2luZyBjb3B5KQpAQCAtOTM2LDcgKzkzNiw3IEBAIGJvZHkuY29uc29sZS12aXNp
YmxlICNjb25zb2xlIHsKICAgICB0ZXh0LWluZGVudDogLTEycHgKIH0KIAotLmVsZW1lbnRzLnBh
bmVsIC5vdXRsaW5lLWRpc2Nsb3N1cmUgbGkgLndlYmtpdC1odG1sLXRhZy5jbG9zZSB7Cisub3V0
bGluZS1kaXNjbG9zdXJlIGxpIC53ZWJraXQtaHRtbC10YWcuY2xvc2UgewogICAgIG1hcmdpbi1s
ZWZ0OiAtMTJweDsKIH0KIApJbmRleDogV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9pbnNwZWN0b3Iu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9pbnNwZWN0b3IuanMJKHJl
dmlzaW9uIDM1ODE3KQorKysgV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9pbnNwZWN0b3IuanMJKHdv
cmtpbmcgY29weSkKQEAgLTg5Nyw3ICs4OTcsNyBAQCBXZWJJbnNwZWN0b3IudXBkYXRlRm9jdXNl
ZE5vZGUgPSBmdW5jdGlvCiAgICAgICAgIHJldHVybjsKIAogICAgIHRoaXMuY3VycmVudFBhbmVs
ID0gdGhpcy5wYW5lbHMuZWxlbWVudHM7Ci0gICAgdGhpcy5wYW5lbHMuZWxlbWVudHMuZm9jdXNl
ZERPTU5vZGUgPSBub2RlOworICAgIHRoaXMucGFuZWxzLmVsZW1lbnRzLnRyZWVPdXRsaW5lLmZv
Y3VzZWRET01Ob2RlID0gbm9kZTsKIH0KIAogV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9yVVJM
ID0gZnVuY3Rpb24odXJsKQpAQCAtMTEzNyw3ICsxMTM3LDcgQEAgV2ViSW5zcGVjdG9yLnBlcmZv
cm1TZWFyY2ggPSBmdW5jdGlvbihldgogICAgICAgICB0aGlzLmN1cnJlbnRQYW5lbCA9IHRoaXMu
cGFuZWxzLmVsZW1lbnRzOwogICAgICAgICB0aGlzLmN1cnJlbnRGb2N1c0VsZW1lbnQgPSBvbGRG
b2N1c0VsZW1lbnQ7CiAKLSAgICAgICAgdGhpcy5wYW5lbHMuZWxlbWVudHMuZm9jdXNlZERPTU5v
ZGUgPSBlbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0Lm5vZGU7CisgICAgICAgIHRoaXMucGFuZWxz
LmVsZW1lbnRzLnRyZWVPdXRsaW5lLmZvY3VzZWRET01Ob2RlID0gZWxlbWVudC5yZXByZXNlbnRl
ZE9iamVjdC5ub2RlOwogICAgICAgICBlbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5zY3JvbGxJbnRv
Vmlld0lmTmVlZGVkKGZhbHNlKTsKICAgICB9CiAK
</data>
<flag name="review"
          id="10159"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23223</attachid>
            <date>2008-09-06 20:33:49 -0700</date>
            <delta_ts>2008-09-07 08:54:29 -0700</delta_ts>
            <desc>new patch</desc>
            <filename>patch30.txt</filename>
            <type>text/plain</type>
            <size>62972</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNjEzMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMDgtMDktMDYgIEtlaXNoaSBIYXR0b3JpICA8Y2FzZXkuaGF0dG9y
aUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkcyBjb25zb2xlLmRpcnhtbCBzdXBwb3J0IHRvIHRoZSBJbnNwZWN0b3IuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE1NgorCisgICAg
ICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IEFkZGVkIEVsZW1lbnRzVHJlZU91
dGxpbmUuanMuCisgICAgICAgICogYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcDogCisg
ICAgICAgIChXZWJDb3JlOjpKU0NvbnNvbGU6OmRpcnhtbCk6CisgICAgICAgICogcGFnZS9Db25z
b2xlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmRpcnhtbCk6IEFkZHMgYSBDb25z
b2xlTWVzc2FnZSB3aXRoIE5vZGVNZXNzYWdlTGV2ZWwuCisgICAgICAgICogcGFnZS9Db25zb2xl
Lmg6CisgICAgICAgIChXZWJDb3JlOjopOiBBZGRlZCBOb2RlTWVzc2FnZUxldmVsLgorICAgICAg
ICAqIHBhZ2UvQ29uc29sZS5pZGw6IEFkZGVkIGNvbnNvbGUuZGlyeG1sLgorICAgICAgICAqIHBh
Z2UvaW5zcGVjdG9yL0NvbnNvbGUuanM6IEEgTm9kZU1lc3NhZ2UgY3JlYXRlcyBhIEVsZW1lbnRz
VHJlZU91dGxpbmUuCisgICAgICAgICogcGFnZS9pbnNwZWN0b3IvRWxlbWVudHNQYW5lbC5qczog
TW9kaWZpZWQgdG8gdXNlIEVsZW1lbnRzVHJlZU91dGxpbmUuIFRoZSBFbGVtZW50c1RyZWVPdXRs
aW5lIAorICAgICAgICBpbiB0aGUgRWxlbWVudHNQYW5lbCBoYXMgaW5jbHVkZVJvb3RET01Ob2Rl
IGFuZCBzZWxlY3RFbmFibGVkIHNldCB0byB0cnVlLgorICAgICAgICAqIHBhZ2UvaW5zcGVjdG9y
L0VsZW1lbnRzVHJlZU91dGxpbmUuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVs
ZW1lbnRzVHJlZU91dGxpbmUpOiBBIHN1YmNsYXNzIG9mIFRyZWVPdXRsaW5lIGZvciBkaXNwbGF5
aW5nIGEgRE9NIG5vZGUgdHJlZS4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVF
bGVtZW50KTogQSBzdWJjbGFzcyBvZiBUcmVlRWxlbWVudCBmb3IgRWxlbWVudHNUcmVlT3V0bGlu
ZS4KKyAgICAgICAgKiBwYWdlL2luc3BlY3Rvci9XZWJLaXQucXJjOiBBZGRlZCBFbGVtZW50c1Ry
ZWVPdXRsaW5lLmpzLgorICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL2luc3BlY3Rvci5jc3M6IAor
ICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL2luc3BlY3Rvci5odG1sOiBBZGRlZCBFbGVtZW50c1Ry
ZWVPdXRsaW5lLmpzLgorICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL2luc3BlY3Rvci5qczogTW92
ZWQgaG92ZXIgcmVsYXRlZCBtZXRob2RzIHRvIFdlYkluc3BlY3Rvci4KKyAgICAgICAgKFdlYklu
c3BlY3Rvci5hbHRLZXlEb3duKTogCisgICAgICAgIChXZWJJbnNwZWN0b3IuZm9yY2VIb3Zlckhp
Z2hsaWdodCk6IAorICAgICAgICAoV2ViSW5zcGVjdG9yLmhvdmVyZWRET01Ob2RlKTogCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuX3VwZGF0ZUhvdmVySGlnaGxpZ2h0U29vbik6IAorICAgICAgICAo
V2ViSW5zcGVjdG9yLl91cGRhdGVIb3ZlckhpZ2hsaWdodCk6IAorICAgICAgICAoV2ViSW5zcGVj
dG9yLmRvY3VtZW50S2V5RG93bik6IFVwZGF0ZXMgV2ViSW5zcGVjdG9yLmFsdEtleURvd24KKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5kb2N1bWVudEtleVVwKTogVXBkYXRlcyBXZWJJbnNwZWN0b3Iu
YWx0S2V5RG93bgorICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL3V0aWxpdGllcy5qczogQWRkZWQg
Z2V0RG9jdW1lbnRGb3JOb2RlLCBwYXJlbnROb2RlT3JGcmFtZUVsZW1lbnQsIAorICAgICAgICBp
c0FuY2VzdG9ySW5jbHVkaW5nUGFyZW50RnJhbWVzLgorCiAyMDA4LTA5LTA2ICBBbnR0aSBLb2l2
aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnRpbmcgcjM1OTUzIHdoaWNo
IHdhcyBjYXVzaW5nIHByb2JsZW1zIG9uIFdpbmRvd3Mgd2hpY2ggcmVsaWVzIG9uCkluZGV4OiBX
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDM2MDU0KQorKysgV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjU4
Myw2ICsyNTgzLDEwIEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxwYWdlXGluc3BlY3RvclxFbGVtZW50c1RyZWVPdXRsaW5lLmpzIg0K
KwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHBhZ2VcaW5zcGVjdG9yXEZvbnRWaWV3LmpzIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcAkocmV2aXNpb24gMzYwNTQp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY4LDYgKzY4LDEyIEBAIEpTVmFsdWUqIEpTQ29uc29sZTo6ZGlyKEV4ZWNTdGF0ZSog
ZXhlYywKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAorSlNWYWx1ZSogSlNDb25zb2xl
OjpkaXJ4bWwoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmd1bWVudHMpCit7Cisg
ICAgaW1wbCgpLT5kaXJ4bWwoZXhlYywgYXJndW1lbnRzKTsKKyAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKK30KKwogSlNWYWx1ZSogSlNDb25zb2xlOjphc3NlcnRDb25kaXRpb24oRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmd1bWVudHMpCiB7CiAgICAgQXJnTGlzdCBtZXNzYWdl
UGFyYW1ldGVyczsKSW5kZXg6IFdlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAJKHJldmlzaW9uIDM2MDU0KQorKysgV2ViQ29yZS9w
YWdlL0NvbnNvbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjEsNiArMjYxLDIxIEBAIHZvaWQg
Q29uc29sZTo6ZGlyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QKICAgICBwYWdlLT5pbnNwZWN0b3JD
b250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBPYmplY3RN
ZXNzYWdlTGV2ZWwsIGV4ZWMsIGFyZ3MsIDAsIFN0cmluZygpKTsKIH0KIAordm9pZCBDb25zb2xl
OjpkaXJ4bWwoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIGlm
IChhcmdzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2ZyYW1lKQor
ICAgICAgICByZXR1cm47CisKKyAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAg
IGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgTm9kZU1lc3NhZ2VM
ZXZlbCwgZXhlYywgYXJncywgMCwgU3RyaW5nKCkpOworfQorCiB2b2lkIENvbnNvbGU6OmFzc2Vy
dENvbmRpdGlvbihib29sIGNvbmRpdGlvbiwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0
JiBhcmdzKQogewogICAgIGlmIChjb25kaXRpb24pCkluZGV4OiBXZWJDb3JlL3BhZ2UvQ29uc29s
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Db25zb2xlLmgJKHJldmlzaW9uIDM2MDU0
KQorKysgV2ViQ29yZS9wYWdlL0NvbnNvbGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdhcm5pbmdNZXNzYWdlTGV2ZWwsCiAg
ICAgICAgIEVycm9yTWVzc2FnZUxldmVsLAogICAgICAgICBPYmplY3RNZXNzYWdlTGV2ZWwsCisg
ICAgICAgIE5vZGVNZXNzYWdlTGV2ZWwsCiAgICAgICAgIFN0YXJ0R3JvdXBNZXNzYWdlTGV2ZWws
CiAgICAgICAgIEVuZEdyb3VwTWVzc2FnZUxldmVsCiAgICAgfTsKQEAgLTc5LDYgKzgwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGxvZyhLSlM6OkV4ZWNTdGF0ZSosIGNv
bnN0IEtKUzo6QXJnTGlzdCYpOwogICAgICAgICB2b2lkIHdhcm4oS0pTOjpFeGVjU3RhdGUqLCBj
b25zdCBLSlM6OkFyZ0xpc3QmKTsKICAgICAgICAgdm9pZCBkaXIoS0pTOjpFeGVjU3RhdGUqLCBj
b25zdCBLSlM6OkFyZ0xpc3QmKTsKKyAgICAgICAgdm9pZCBkaXJ4bWwoS0pTOjpFeGVjU3RhdGUq
LCBjb25zdCBLSlM6OkFyZ0xpc3QmIGFyZ3VtZW50cyk7CiAgICAgICAgIHZvaWQgYXNzZXJ0Q29u
ZGl0aW9uKGJvb2wgY29uZGl0aW9uLCBLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6QXJnTGlz
dCYpOwogICAgICAgICB2b2lkIGNvdW50KEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpBcmdM
aXN0Jik7CiAgICAgICAgIHZvaWQgcHJvZmlsZShLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6
QXJnTGlzdCYpOwpJbmRleDogV2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9Db25zb2xlLmlkbAkocmV2aXNpb24gMzYwNTQpCisrKyBXZWJDb3JlL3Bh
Z2UvQ29uc29sZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAgbW9kdWxlIHdp
bmRvdyB7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgbG9nKCk7CiAgICAgICAgIFtDdXN0b21dIHZv
aWQgd2FybigpOwogICAgICAgICBbQ3VzdG9tXSB2b2lkIGRpcigpOworICAgICAgICBbQ3VzdG9t
XSB2b2lkIGRpcnhtbCgpOwogICAgICAgICBbQ3VzdG9tLCBJbXBsZW1lbnRhdGlvbkZ1bmN0aW9u
PWFzc2VydENvbmRpdGlvbl0gdm9pZCBhc3NlcnQoaW4gYm9vbGVhbiBjb25kaXRpb24pOwogICAg
ICAgICBbQ3VzdG9tXSB2b2lkIGNvdW50KCk7CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9pbnNwZWN0
b3IvQ29uc29sZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL0NvbnNv
bGUuanMJKHJldmlzaW9uIDM2MDU0KQorKysgV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9Db25zb2xl
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zNDgsNiArMzQ4LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNv
bGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZXM7IFwKICAg
ICAgICAgICAgICAgICB9LCBcCiAgICAgICAgICAgICAgICAgZGlyOiBmdW5jdGlvbigpIHsgcmV0
dXJuIGNvbnNvbGUuZGlyLmFwcGx5KGNvbnNvbGUsIGFyZ3VtZW50cykgfSwgXAorICAgICAgICAg
ICAgICAgIGRpcnhtbDogZnVuY3Rpb24oKSB7IHJldHVybiBjb25zb2xlLmRpcnhtbC5hcHBseShj
b25zb2xlLCBhcmd1bWVudHMpIH0sIFwKICAgICAgICAgICAgICAgICBrZXlzOiBmdW5jdGlvbihv
KSB7IHZhciBhID0gW107IGZvciAoayBpbiBvKSBhLnB1c2goayk7IHJldHVybiBhOyB9LCBcCiAg
ICAgICAgICAgICAgICAgdmFsdWVzOiBmdW5jdGlvbihvKSB7IHZhciBhID0gW107IGZvciAoayBp
biBvKSBhLnB1c2gob1trXSk7IHJldHVybiBhOyB9LCBcCiAgICAgICAgICAgICAgICAgcHJvZmls
ZTogZnVuY3Rpb24oKSB7IHJldHVybiBjb25zb2xlLnByb2ZpbGUuYXBwbHkoY29uc29sZSwgYXJn
dW1lbnRzKSB9LCBcCkBAIC01MjMsNiArNTI0LDEyIEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVz
c2FnZSA9IGZ1bmN0aW9uKHMKICAgICAgICAgdmFyIHByb3BlcnRpZXNTZWN0aW9uID0gbmV3IFdl
Ykluc3BlY3Rvci5PYmplY3RQcm9wZXJ0aWVzU2VjdGlvbihhcmd1bWVudHNbNV0sIG51bGwsIG51
bGwsIG51bGwsIHRydWUpOwogICAgICAgICBwcm9wZXJ0aWVzU2VjdGlvbi5lbGVtZW50LmFkZFN0
eWxlQ2xhc3MoImNvbnNvbGUtbWVzc2FnZSIpOwogICAgICAgICB0aGlzLnByb3BlcnRpZXNTZWN0
aW9uID0gcHJvcGVydGllc1NlY3Rpb247CisgICAgfSBlbHNlIGlmICh0aGlzLmxldmVsID09PSBX
ZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLk5vZGUpIHsKKyAgICAgICAg
dmFyIG5vZGUgPSBhcmd1bWVudHNbNV07CisgICAgICAgIGlmICghKG5vZGUgaW5zdGFuY2VvZiBJ
bnNwZWN0b3JDb250cm9sbGVyLmluc3BlY3RlZFdpbmRvdygpLk5vZGUpKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB0aGlzLmVsZW1lbnRzVHJlZU91dGxpbmUgPSBuZXcgV2ViSW5zcGVj
dG9yLkVsZW1lbnRzVHJlZU91dGxpbmUoKTsKKyAgICAgICAgdGhpcy5lbGVtZW50c1RyZWVPdXRs
aW5lLnJvb3RET01Ob2RlID0gbm9kZTsKICAgICB9CiAKICAgICBpZiAodXJsICYmIGxpbmUgPiAw
ICYmIHRoaXMuaXNFcnJvck9yV2FybmluZygpKSB7CkBAIC01OTUsNyArNjAyLDcgQEAgV2ViSW5z
cGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9IAogCiAgICAgdG9NZXNzYWdlRWxlbWVu
dDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMubGV2ZWwgPT09IFdlYkluc3Bl
Y3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuT2JqZWN0KQorICAgICAgICBpZiAodGhp
cy5wcm9wZXJ0aWVzU2VjdGlvbikKICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3BlcnRpZXNT
ZWN0aW9uLmVsZW1lbnQ7CiAKICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKQEAgLTYzNyw2ICs2NDQsMTIgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlLnByb3RvdHlwZSA9IAogICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFz
cygiY29uc29sZS1ncm91cC10aXRsZS1sZXZlbCIpOwogICAgICAgICB9CiAKKyAgICAgICAgaWYg
KHRoaXMuZWxlbWVudHNUcmVlT3V0bGluZSkgeworICAgICAgICAgICAgZWxlbWVudC5hZGRTdHls
ZUNsYXNzKCJvdXRsaW5lLWRpc2Nsb3N1cmUiKTsKKyAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5lbGVtZW50c1RyZWVPdXRsaW5lLmVsZW1lbnQpOworICAgICAgICAgICAgcmV0
dXJuIGVsZW1lbnQ7CisgICAgICAgIH0KKwogICAgICAgICB2YXIgbWVzc2FnZVRleHRFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICBtZXNzYWdlVGV4dEVs
ZW1lbnQuY2xhc3NOYW1lID0gImNvbnNvbGUtbWVzc2FnZS10ZXh0IjsKICAgICAgICAgbWVzc2Fn
ZVRleHRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZm9ybWF0dGVkTWVzc2FnZSk7CkBAIC03MjYs
OCArNzM5LDkgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbAogICAg
IFdhcm5pbmc6IDIsCiAgICAgRXJyb3I6IDMsCiAgICAgT2JqZWN0OiA0LAotICAgIFN0YXJ0R3Jv
dXA6IDUsCi0gICAgRW5kR3JvdXA6IDYKKyAgICBOb2RlOiA1LAorICAgIFN0YXJ0R3JvdXA6IDYs
CisgICAgRW5kR3JvdXA6IDcKIH0KIAogV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kID0gZnVu
Y3Rpb24oY29tbWFuZCwgcmVzdWx0LCBmb3JtYXR0ZWRSZXN1bHRFbGVtZW50LCBsZXZlbCkKSW5k
ZXg6IFdlYkNvcmUvcGFnZS9pbnNwZWN0b3IvRWxlbWVudHNQYW5lbC5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL0VsZW1lbnRzUGFuZWwuanMJKHJldmlzaW9uIDM2MDU0
KQorKysgV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9FbGVtZW50c1BhbmVsLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiwxNiArMzYsMjIgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwgPSBmdW5j
dGlvbigpCiAgICAgdGhpcy5jb250ZW50RWxlbWVudC5pZCA9ICJlbGVtZW50cy1jb250ZW50IjsK
ICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmNsYXNzTmFtZSA9ICJvdXRsaW5lLWRpc2Nsb3N1cmUi
OwogCi0gICAgdGhpcy50cmVlTGlzdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJv
bCIpOwotICAgIHRoaXMudHJlZUxpc3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93
biIsIHRoaXMuX29ubW91c2Vkb3duLmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICB0aGlzLnRyZWVM
aXN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsIHRoaXMuX29uZGJsY2xpY2su
YmluZCh0aGlzKSwgZmFsc2UpOwotICAgIHRoaXMudHJlZUxpc3RFbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX29ubW91c2Vtb3ZlLmJpbmQodGhpcyksIGZhbHNlKTsK
LSAgICB0aGlzLnRyZWVMaXN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsIHRo
aXMuX29ubW91c2VvdXQuYmluZCh0aGlzKSwgZmFsc2UpOwotCi0gICAgdGhpcy50cmVlT3V0bGlu
ZSA9IG5ldyBUcmVlT3V0bGluZSh0aGlzLnRyZWVMaXN0RWxlbWVudCk7CisgICAgdGhpcy50cmVl
T3V0bGluZSA9IG5ldyBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlT3V0bGluZSgpOwogICAgIHRo
aXMudHJlZU91dGxpbmUucGFuZWwgPSB0aGlzOworICAgIHRoaXMudHJlZU91dGxpbmUuaW5jbHVk
ZVJvb3RET01Ob2RlID0gZmFsc2U7CisgICAgdGhpcy50cmVlT3V0bGluZS5zZWxlY3RFbmFibGVk
ID0gdHJ1ZTsKKyAgICB0aGlzLnRyZWVPdXRsaW5lLm9uRm9jdXNlZE5vZGVDaGFuZ2VkID0gZnVu
Y3Rpb24oZm9yY2VVcGRhdGUpIHsKKyAgICAgICAgdGhpcy5wYW5lbC51cGRhdGVCcmVhZGNydW1i
KGZvcmNlVXBkYXRlKTsKKyAgICAKKyAgICAgICAgZm9yICh2YXIgcGFuZSBpbiB0aGlzLnBhbmVs
LnNpZGViYXJQYW5lcykKKyAgICAgICAgICAgdGhpcy5wYW5lbC5zaWRlYmFyUGFuZXNbcGFuZV0u
bmVlZHNVcGRhdGUgPSB0cnVlOworICAgIAorICAgICAgICB0aGlzLnBhbmVsLnVwZGF0ZVN0eWxl
cyh0cnVlKTsKKyAgICAgICAgdGhpcy5wYW5lbC51cGRhdGVNZXRyaWNzKCk7CisgICAgICAgIHRo
aXMucGFuZWwudXBkYXRlUHJvcGVydGllcygpOworICAgIH07CiAKLSAgICB0aGlzLmNvbnRlbnRF
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMudHJlZUxpc3RFbGVtZW50KTsKKyAgICB0aGlzLmNvbnRl
bnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMudHJlZU91dGxpbmUuZWxlbWVudCk7CiAKICAgICB0
aGlzLmNydW1ic0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0
aGlzLmNydW1ic0VsZW1lbnQuY2xhc3NOYW1lID0gImNydW1icyI7CkBAIC0xMTEsNyArMTE3LDcg
QEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBXZWJJ
bnNwZWN0b3IuUGFuZWwucHJvdG90eXBlLnNob3cuY2FsbCh0aGlzKTsKICAgICAgICAgdGhpcy5z
aWRlYmFyUmVzaXplRWxlbWVudC5zdHlsZS5yaWdodCA9ICh0aGlzLnNpZGViYXJFbGVtZW50Lm9m
ZnNldFdpZHRoIC0gMykgKyAicHgiOwogICAgICAgICB0aGlzLnVwZGF0ZUJyZWFkY3J1bWIoKTsK
LSAgICAgICAgdGhpcy51cGRhdGVUcmVlU2VsZWN0aW9uKCk7CisgICAgICAgIHRoaXMudHJlZU91
dGxpbmUudXBkYXRlU2VsZWN0aW9uKCk7CiAgICAgICAgIGlmICh0aGlzLnJlY2VudGx5TW9kaWZp
ZWROb2Rlcy5sZW5ndGgpCiAgICAgICAgICAgICB0aGlzLl91cGRhdGVNb2RpZmllZE5vZGVzKCk7
CiAgICAgfSwKQEAgLTExOSwyNSArMTI1LDIzIEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVs
LnByb3RvdHlwZSA9IHsKICAgICBoaWRlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBXZWJJ
bnNwZWN0b3IuUGFuZWwucHJvdG90eXBlLmhpZGUuY2FsbCh0aGlzKTsKLSAgICAgICAgdGhpcy5h
bHRLZXlEb3duID0gZmFsc2U7Ci0gICAgICAgIHRoaXMuaG92ZXJlZERPTU5vZGUgPSBudWxsOwot
ICAgICAgICB0aGlzLmZvcmNlSG92ZXJIaWdobGlnaHQgPSBmYWxzZTsKKyAgICAgICAgV2ViSW5z
cGVjdG9yLmhvdmVyZWRET01Ob2RlID0gbnVsbDsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmZvcmNl
SG92ZXJIaWdobGlnaHQgPSBmYWxzZTsKICAgICB9LAogCiAgICAgcmVzaXplOiBmdW5jdGlvbigp
CiAgICAgewotICAgICAgICB0aGlzLnVwZGF0ZVRyZWVTZWxlY3Rpb24oKTsKKyAgICAgICAgdGhp
cy50cmVlT3V0bGluZS51cGRhdGVTZWxlY3Rpb24oKTsKICAgICAgICAgdGhpcy51cGRhdGVCcmVh
ZGNydW1iU2l6ZXMoKTsKICAgICB9LAogCiAgICAgcmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0g
ICAgICAgIHRoaXMucm9vdERPTU5vZGUgPSBudWxsOwotICAgICAgICB0aGlzLmZvY3VzZWRET01O
b2RlID0gbnVsbDsKKyAgICAgICAgdGhpcy50cmVlT3V0bGluZS5yb290RE9NTm9kZSA9IG51bGw7
CisgICAgICAgIHRoaXMudHJlZU91dGxpbmUuZm9jdXNlZERPTU5vZGUgPSBudWxsOwogCi0gICAg
ICAgIHRoaXMuYWx0S2V5RG93biA9IGZhbHNlOwotICAgICAgICB0aGlzLmhvdmVyZWRET01Ob2Rl
ID0gbnVsbDsKLSAgICAgICAgdGhpcy5mb3JjZUhvdmVySGlnaGxpZ2h0ID0gZmFsc2U7CisgICAg
ICAgIFdlYkluc3BlY3Rvci5ob3ZlcmVkRE9NTm9kZSA9IG51bGw7CisgICAgICAgIFdlYkluc3Bl
Y3Rvci5mb3JjZUhvdmVySGlnaGxpZ2h0ID0gZmFsc2U7CiAKICAgICAgICAgdGhpcy5yZWNlbnRs
eU1vZGlmaWVkTm9kZXMgPSBbXTsKICAgICAgICAgdGhpcy51bnJlZ2lzdGVyQWxsTXV0YXRpb25F
dmVudExpc3RlbmVycygpOwpAQCAtMTY3LDExICsxNzEsMTEgQEAgV2ViSW5zcGVjdG9yLkVsZW1l
bnRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnJlZ2lzdGVyTXV0YXRpb25FdmVu
dExpc3RlbmVycyhpbnNwZWN0ZWRXaW5kb3cpOwogCiAgICAgICAgIHZhciBpbnNwZWN0ZWRSb290
RG9jdW1lbnQgPSBpbnNwZWN0ZWRXaW5kb3cuZG9jdW1lbnQ7Ci0gICAgICAgIHRoaXMucm9vdERP
TU5vZGUgPSBpbnNwZWN0ZWRSb290RG9jdW1lbnQ7CisgICAgICAgIHRoaXMudHJlZU91dGxpbmUu
cm9vdERPTU5vZGUgPSBpbnNwZWN0ZWRSb290RG9jdW1lbnQ7CiAKICAgICAgICAgdmFyIGNhbmlk
YXRlRm9jdXNOb2RlID0gaW5zcGVjdGVkUm9vdERvY3VtZW50LmJvZHkgfHwgaW5zcGVjdGVkUm9v
dERvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKICAgICAgICAgaWYgKGNhbmlkYXRlRm9jdXNOb2Rl
KSB7Ci0gICAgICAgICAgICB0aGlzLmZvY3VzZWRET01Ob2RlID0gY2FuaWRhdGVGb2N1c05vZGU7
CisgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLmZvY3VzZWRET01Ob2RlID0gY2FuaWRhdGVG
b2N1c05vZGU7CiAgICAgICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVF
bGVtZW50KQogICAgICAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxl
bWVudC5leHBhbmQoKTsKICAgICAgICAgfQpAQCAtMjMwLDEwNyArMjM0LDYgQEAgV2ViSW5zcGVj
dG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9tdXRhdGlvbk1v
bml0b3JlZFdpbmRvd3MgPSBbXTsKICAgICB9LAogCi0gICAgdXBkYXRlVHJlZVNlbGVjdGlvbjog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLnRyZWVPdXRsaW5lIHx8ICF0aGlz
LnRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50
OwotICAgICAgICBlbGVtZW50LnVwZGF0ZVNlbGVjdGlvbigpOwotICAgIH0sCi0KLSAgICBnZXQg
cm9vdERPTU5vZGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3RET01Ob2RlOwot
ICAgIH0sCi0KLSAgICBzZXQgcm9vdERPTU5vZGUoeCkKLSAgICB7Ci0gICAgICAgIGlmIChvYmpl
Y3RzQXJlU2FtZSh0aGlzLl9yb290RE9NTm9kZSwgeCkpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgdGhpcy5fcm9vdERPTU5vZGUgPSB4OwotCi0gICAgICAgIHRoaXMudXBkYXRlQnJl
YWRjcnVtYigpOwotICAgICAgICB0aGlzLnVwZGF0ZVRyZWVPdXRsaW5lKCk7Ci0gICAgfSwKLQot
ICAgIGdldCBmb2N1c2VkRE9NTm9kZSgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZm9j
dXNlZERPTU5vZGU7Ci0gICAgfSwKLQotICAgIHNldCBmb2N1c2VkRE9NTm9kZSh4KQotICAgIHsK
LSAgICAgICAgaWYgKG9iamVjdHNBcmVTYW1lKHRoaXMuX2ZvY3VzZWRET01Ob2RlLCB4KSkgewot
ICAgICAgICAgICAgdmFyIG5vZGVJdGVtID0gdGhpcy5yZXZlYWxOb2RlKHgpOwotICAgICAgICAg
ICAgaWYgKG5vZGVJdGVtKQotICAgICAgICAgICAgICAgIG5vZGVJdGVtLnNlbGVjdCgpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fZm9jdXNlZERPTU5v
ZGUgPSB4OwotCi0gICAgICAgIHRoaXMuX2ZvY3VzZWROb2RlQ2hhbmdlZCgpOwotCi0gICAgICAg
IHZhciBub2RlSXRlbSA9IHRoaXMucmV2ZWFsTm9kZSh4KTsKLSAgICAgICAgaWYgKG5vZGVJdGVt
KQotICAgICAgICAgICAgbm9kZUl0ZW0uc2VsZWN0KCk7Ci0gICAgfSwKLQotICAgIGdldCBob3Zl
cmVkRE9NTm9kZSgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5faG92ZXJlZERPTU5vZGU7
Ci0gICAgfSwKLQotICAgIHNldCBob3ZlcmVkRE9NTm9kZSh4KQotICAgIHsKLSAgICAgICAgaWYg
KG9iamVjdHNBcmVTYW1lKHRoaXMuX2hvdmVyZWRET01Ob2RlLCB4KSkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICB0aGlzLl9ob3ZlcmVkRE9NTm9kZSA9IHg7Ci0KLSAgICAgICAgaWYg
KHRoaXMuX2hvdmVyZWRET01Ob2RlKQotICAgICAgICAgICAgdGhpcy5fdXBkYXRlSG92ZXJIaWdo
bGlnaHRTb29uKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUhvdmVy
SGlnaGxpZ2h0KCk7Ci0gICAgfSwKLQotICAgIGdldCBmb3JjZUhvdmVySGlnaGxpZ2h0KCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9mb3JjZUhvdmVySGlnaGxpZ2h0OwotICAgIH0sCi0K
LSAgICBzZXQgZm9yY2VIb3ZlckhpZ2hsaWdodCh4KQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMu
X2ZvcmNlSG92ZXJIaWdobGlnaHQgPT09IHgpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgdGhpcy5fZm9yY2VIb3ZlckhpZ2hsaWdodCA9IHg7Ci0KLSAgICAgICAgaWYgKHRoaXMuX2Zv
cmNlSG92ZXJIaWdobGlnaHQpCi0gICAgICAgICAgICB0aGlzLl91cGRhdGVIb3ZlckhpZ2hsaWdo
dFNvb24oKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5fdXBkYXRlSG92ZXJIaWdo
bGlnaHQoKTsKLSAgICB9LAotCi0gICAgZ2V0IGFsdEtleURvd24oKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX2FsdEtleURvd247Ci0gICAgfSwKLQotICAgIHNldCBhbHRLZXlEb3duKHgp
Ci0gICAgewotICAgICAgICBpZiAodGhpcy5fYWx0S2V5RG93biA9PT0geCkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICB0aGlzLl9hbHRLZXlEb3duID0geDsKLQotICAgICAgICBpZiAo
dGhpcy5fYWx0S2V5RG93bikKLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUhvdmVySGlnaGxpZ2h0
U29vbigpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLl91cGRhdGVIb3ZlckhpZ2hs
aWdodCgpOwotICAgIH0sCi0KICAgICBfY29udGVudExvYWRlZDogZnVuY3Rpb24oZXZlbnQpCiAg
ICAgewogICAgICAgICB0aGlzLnJlY2VudGx5TW9kaWZpZWROb2Rlcy5wdXNoKHtub2RlOiBldmVu
dC50YXJnZXQsIHBhcmVudDogZXZlbnQudGFyZ2V0LmRlZmF1bHRWaWV3LmZyYW1lRWxlbWVudCwg
cmVwbGFjZWQ6IHRydWV9KTsKQEAgLTM4Miw3ICsyODUsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVu
dHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgdXBkYXRlZFBhcmVudFRyZWVF
bGVtZW50cy5wdXNoKHBhcmVudE5vZGVJdGVtKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgaWYgKCF1cGRhdGVCcmVhZGNydW1icyAmJiAob2JqZWN0c0FyZVNhbWUodGhpcy5mb2N1c2Vk
RE9NTm9kZSwgcGFyZW50KSB8fCB0aGlzLl9pc0FuY2VzdG9ySW5jbHVkaW5nUGFyZW50RnJhbWVz
KHRoaXMuZm9jdXNlZERPTU5vZGUsIHBhcmVudCkpKQorICAgICAgICAgICAgaWYgKCF1cGRhdGVC
cmVhZGNydW1icyAmJiAob2JqZWN0c0FyZVNhbWUodGhpcy5mb2N1c2VkRE9NTm9kZSwgcGFyZW50
KSB8fCBpc0FuY2VzdG9ySW5jbHVkaW5nUGFyZW50RnJhbWVzKHRoaXMuZm9jdXNlZERPTU5vZGUs
IHBhcmVudCkpKQogICAgICAgICAgICAgICAgIHVwZGF0ZUJyZWFkY3J1bWJzID0gdHJ1ZTsKICAg
ICAgICAgfQogCkBAIC0zOTUsMjYgKzI5OCw2IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVs
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMudXBkYXRlQnJlYWRjcnVtYih0cnVlKTsK
ICAgICB9LAogCi0gICAgX3VwZGF0ZUhvdmVySGlnaGxpZ2h0U29vbjogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgaWYgKCJfdXBkYXRlSG92ZXJIaWdobGlnaHRUaW1lb3V0IiBpbiB0aGlzKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLl91cGRhdGVIb3ZlckhpZ2hsaWdodFRp
bWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuX3VwZGF0ZUhvdmVySGlnaGxpZ2h0LmJpbmQodGhpcyks
IDApOwotICAgIH0sCi0KLSAgICBfdXBkYXRlSG92ZXJIaWdobGlnaHQ6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIGlmICgiX3VwZGF0ZUhvdmVySGlnaGxpZ2h0VGltZW91dCIgaW4gdGhpcykg
ewotICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZUhvdmVySGlnaGxpZ2h0VGlt
ZW91dCk7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fdXBkYXRlSG92ZXJIaWdobGlnaHRUaW1l
b3V0OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRoaXMuX2hvdmVyZWRET01Ob2RlICYmIHRo
aXMudmlzaWJsZSAmJiAodGhpcy5fYWx0S2V5RG93biB8fCB0aGlzLmZvcmNlSG92ZXJIaWdobGln
aHQpKQotICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5oaWdobGlnaHRET01Ob2RlKHRo
aXMuX2hvdmVyZWRET01Ob2RlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgSW5zcGVjdG9y
Q29udHJvbGxlci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwotICAgIH0sCi0KICAgICBfc3R5bGVz
UGFuZUVkaXRlZDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMu
bWV0cmljcy5uZWVkc1VwZGF0ZSA9IHRydWU7CkBAIC00MjcsNDUgKzMxMCw2IEBAIFdlYkluc3Bl
Y3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy51cGRhdGVTdHls
ZXModHJ1ZSk7CiAgICAgfSwKIAotICAgIF9mb2N1c2VkTm9kZUNoYW5nZWQ6IGZ1bmN0aW9uKGZv
cmNlVXBkYXRlKQotICAgIHsKLSAgICAgICAgdGhpcy51cGRhdGVCcmVhZGNydW1iKGZvcmNlVXBk
YXRlKTsKLQotICAgICAgICBmb3IgKHZhciBwYW5lIGluIHRoaXMuc2lkZWJhclBhbmVzKQotICAg
ICAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXNbcGFuZV0ubmVlZHNVcGRhdGUgPSB0cnVlOwotCi0g
ICAgICAgIHRoaXMudXBkYXRlU3R5bGVzKHRydWUpOwotICAgICAgICB0aGlzLnVwZGF0ZU1ldHJp
Y3MoKTsKLSAgICAgICAgdGhpcy51cGRhdGVQcm9wZXJ0aWVzKCk7Ci0gICAgfSwKLQotICAgIHJl
dmVhbE5vZGU6IGZ1bmN0aW9uKG5vZGUpCi0gICAgewotICAgICAgICB2YXIgbm9kZUl0ZW0gPSB0
aGlzLnRyZWVPdXRsaW5lLmZpbmRUcmVlRWxlbWVudChub2RlLCB0aGlzLl9pc0FuY2VzdG9ySW5j
bHVkaW5nUGFyZW50RnJhbWVzLmJpbmQodGhpcyksIHRoaXMuX3BhcmVudE5vZGVPckZyYW1lRWxl
bWVudC5iaW5kKHRoaXMpLCBvYmplY3RzQXJlU2FtZSk7Ci0gICAgICAgIGlmICghbm9kZUl0ZW0p
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbm9kZUl0ZW0ucmV2ZWFsKCk7Ci0gICAg
ICAgIHJldHVybiBub2RlSXRlbTsKLSAgICB9LAotCi0gICAgdXBkYXRlVHJlZU91dGxpbmU6IGZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMudHJlZU91dGxpbmUucmVtb3ZlQ2hpbGRyZW5S
ZWN1cnNpdmUoKTsKLQotICAgICAgICBpZiAoIXRoaXMucm9vdERPTU5vZGUpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgLy8gRklYTUU6IHRoaXMgY291bGQgdXNlIGZpbmRUcmVlRWxl
bWVudCB0byByZXVzZSBhIHRyZWUgZWxlbWVudCBpZiBpdCBhbHJlYWR5IGV4aXN0cwotICAgICAg
ICB2YXIgbm9kZSA9IChQcmVmZXJlbmNlcy5pZ25vcmVXaGl0ZXNwYWNlID8gZmlyc3RDaGlsZFNr
aXBwaW5nV2hpdGVzcGFjZS5jYWxsKHRoaXMucm9vdERPTU5vZGUpIDogdGhpcy5yb290RE9NTm9k
ZS5maXJzdENoaWxkKTsKLSAgICAgICAgd2hpbGUgKG5vZGUpIHsKLSAgICAgICAgICAgIHRoaXMu
dHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5ET01Ob2RlVHJlZUVsZW1l
bnQobm9kZSkpOwotICAgICAgICAgICAgbm9kZSA9IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3Bh
Y2UgPyBuZXh0U2libGluZ1NraXBwaW5nV2hpdGVzcGFjZS5jYWxsKG5vZGUpIDogbm9kZS5uZXh0
U2libGluZzsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMudXBkYXRlVHJlZVNlbGVjdGlvbigp
OwotICAgIH0sCi0KICAgICB1cGRhdGVCcmVhZGNydW1iOiBmdW5jdGlvbihmb3JjZVVwZGF0ZSkK
ICAgICB7CiAgICAgICAgIGlmICghdGhpcy52aXNpYmxlKQpAQCAtNDc3LDcgKzMyMSw3IEBAIFdl
Ykluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGZvdW5k
Um9vdCA9IGZhbHNlOwogICAgICAgICB2YXIgY3J1bWIgPSBjcnVtYnMuZmlyc3RDaGlsZDsKICAg
ICAgICAgd2hpbGUgKGNydW1iKSB7Ci0gICAgICAgICAgICBpZiAob2JqZWN0c0FyZVNhbWUoY3J1
bWIucmVwcmVzZW50ZWRPYmplY3QsIHRoaXMucm9vdERPTU5vZGUpKQorICAgICAgICAgICAgaWYg
KG9iamVjdHNBcmVTYW1lKGNydW1iLnJlcHJlc2VudGVkT2JqZWN0LCB0aGlzLnRyZWVPdXRsaW5l
LnJvb3RET01Ob2RlKSkKICAgICAgICAgICAgICAgICBmb3VuZFJvb3QgPSB0cnVlOwogCiAgICAg
ICAgICAgICBpZiAoZm91bmRSb290KQpAQCAtNDg1LDcgKzMyOSw3IEBAIFdlYkluc3BlY3Rvci5F
bGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBjcnVtYi5yZW1vdmVTdHlsZUNsYXNzKCJkaW1tZWQiKTsKIAotICAgICAgICAgICAgaWYg
KG9iamVjdHNBcmVTYW1lKGNydW1iLnJlcHJlc2VudGVkT2JqZWN0LCB0aGlzLmZvY3VzZWRET01O
b2RlKSkgeworICAgICAgICAgICAgaWYgKG9iamVjdHNBcmVTYW1lKGNydW1iLnJlcHJlc2VudGVk
T2JqZWN0LCB0aGlzLnRyZWVPdXRsaW5lLmZvY3VzZWRET01Ob2RlKSkgewogICAgICAgICAgICAg
ICAgIGNydW1iLmFkZFN0eWxlQ2xhc3MoInNlbGVjdGVkIik7CiAgICAgICAgICAgICAgICAgaGFu
ZGxlZCA9IHRydWU7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNTI4LDggKzM3Miw4IEBAIFdl
Ykluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICAv
LyBDbGlja2luZyBhIGRpbW1lZCBjcnVtYiBvciBkb3VibGUgY2xpY2tpbmcgKGV2ZW50LmRldGFp
bCA+PSAyKQogICAgICAgICAgICAgICAgIC8vIHdpbGwgY2hhbmdlIHRoZSByb290IG5vZGUgaW4g
YWRkaXRpb24gdG8gdGhlIGZvY3VzZWQgbm9kZS4KICAgICAgICAgICAgICAgICBpZiAoZXZlbnQu
ZGV0YWlsID49IDIgfHwgY3J1bWIuaGFzU3R5bGVDbGFzcygiZGltbWVkIikpCi0gICAgICAgICAg
ICAgICAgICAgIHBhbmVsLnJvb3RET01Ob2RlID0gY3J1bWIucmVwcmVzZW50ZWRPYmplY3QucGFy
ZW50Tm9kZTsKLSAgICAgICAgICAgICAgICBwYW5lbC5mb2N1c2VkRE9NTm9kZSA9IGNydW1iLnJl
cHJlc2VudGVkT2JqZWN0OworICAgICAgICAgICAgICAgICAgICBwYW5lbC50cmVlT3V0bGluZS5y
b290RE9NTm9kZSA9IGNydW1iLnJlcHJlc2VudGVkT2JqZWN0LnBhcmVudE5vZGU7CisgICAgICAg
ICAgICAgICAgcGFuZWwudHJlZU91dGxpbmUuZm9jdXNlZERPTU5vZGUgPSBjcnVtYi5yZXByZXNl
bnRlZE9iamVjdDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmN1
cnJlbnRGb2N1c0VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFpbi1wYW5lbHMi
KTsKQEAgLTU0MCw5ICszODQsOCBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHZhciBtb3VzZU92ZXJDcnVtYkZ1bmN0aW9uID0gZnVuY3Rpb24oZXZl
bnQpIHsKICAgICAgICAgICAgIHBhbmVsLm1vdXNlT3ZlckNydW1iID0gdHJ1ZTsKIAotICAgICAg
ICAgICAgcGFuZWwuYWx0S2V5RG93biA9IGV2ZW50LmFsdEtleTsKLSAgICAgICAgICAgIHBhbmVs
LmhvdmVyZWRET01Ob2RlID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKLSAgICAgICAgICAgIHBh
bmVsLmZvcmNlSG92ZXJIaWdobGlnaHQgPSB0aGlzLmhhc1N0eWxlQ2xhc3MoInNlbGVjdGVkIik7
CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuaG92ZXJlZERPTU5vZGUgPSB0aGlzLnJlcHJlc2Vu
dGVkT2JqZWN0OworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZvcmNlSG92ZXJIaWdobGlnaHQg
PSB0aGlzLmhhc1N0eWxlQ2xhc3MoInNlbGVjdGVkIik7CiAKICAgICAgICAgICAgIGlmICgibW91
c2VPdXRUaW1lb3V0IiBpbiBwYW5lbCkgewogICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChw
YW5lbC5tb3VzZU91dFRpbWVvdXQpOwpAQCAtNTU0LDkgKzM5Nyw4IEBAIFdlYkluc3BlY3Rvci5F
bGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGRlbGV0ZSBwYW5lbC5tb3Vz
ZU92ZXJDcnVtYjsKIAogICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gdGhpcykgewot
ICAgICAgICAgICAgICAgIHBhbmVsLmFsdEtleURvd24gPSBmYWxzZTsKLSAgICAgICAgICAgICAg
ICBwYW5lbC5ob3ZlcmVkRE9NTm9kZSA9IG51bGw7Ci0gICAgICAgICAgICAgICAgcGFuZWwuZm9y
Y2VIb3ZlckhpZ2hsaWdodCA9IGZhbHNlOworICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5o
b3ZlcmVkRE9NTm9kZSA9IG51bGw7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZvcmNl
SG92ZXJIaWdobGlnaHQgPSBmYWxzZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KCJtb3VzZU91dFRpbWVvdXQiIGluIHBhbmVsKSB7CkBAIC01NzMsMTEgKzQxNSwxMSBAQCBXZWJJ
bnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH07CiAKICAgICAg
ICAgZm91bmRSb290ID0gZmFsc2U7Ci0gICAgICAgIGZvciAodmFyIGN1cnJlbnQgPSB0aGlzLmZv
Y3VzZWRET01Ob2RlOyBjdXJyZW50OyBjdXJyZW50ID0gdGhpcy5fcGFyZW50Tm9kZU9yRnJhbWVF
bGVtZW50KGN1cnJlbnQpKSB7CisgICAgICAgIGZvciAodmFyIGN1cnJlbnQgPSB0aGlzLnRyZWVP
dXRsaW5lLmZvY3VzZWRET01Ob2RlOyBjdXJyZW50OyBjdXJyZW50ID0gcGFyZW50Tm9kZU9yRnJh
bWVFbGVtZW50KGN1cnJlbnQpKSB7CiAgICAgICAgICAgICBpZiAoY3VycmVudC5ub2RlVHlwZSA9
PT0gTm9kZS5ET0NVTUVOVF9OT0RFKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgICAgICBpZiAob2JqZWN0c0FyZVNhbWUoY3VycmVudCwgdGhpcy5yb290RE9NTm9kZSkpCisg
ICAgICAgICAgICBpZiAob2JqZWN0c0FyZVNhbWUoY3VycmVudCwgdGhpcy50cmVlT3V0bGluZS5y
b290RE9NTm9kZSkpCiAgICAgICAgICAgICAgICAgZm91bmRSb290ID0gdHJ1ZTsKIAogICAgICAg
ICAgICAgdmFyIGNydW1iID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwpAQCAtNjYy
LDcgKzUwNCw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKIAog
ICAgICAgICAgICAgaWYgKGZvdW5kUm9vdCkKICAgICAgICAgICAgICAgICBjcnVtYi5hZGRTdHls
ZUNsYXNzKCJkaW1tZWQiKTsKLSAgICAgICAgICAgIGlmIChvYmplY3RzQXJlU2FtZShjdXJyZW50
LCB0aGlzLmZvY3VzZWRET01Ob2RlKSkKKyAgICAgICAgICAgIGlmIChvYmplY3RzQXJlU2FtZShj
dXJyZW50LCB0aGlzLnRyZWVPdXRsaW5lLmZvY3VzZWRET01Ob2RlKSkKICAgICAgICAgICAgICAg
ICBjcnVtYi5hZGRTdHlsZUNsYXNzKCJzZWxlY3RlZCIpOwogICAgICAgICAgICAgaWYgKCFjcnVt
YnMuY2hpbGROb2Rlcy5sZW5ndGgpCiAgICAgICAgICAgICAgICAgY3J1bWIuYWRkU3R5bGVDbGFz
cygiZW5kIik7CkBAIC05MzIsNyArNzc0LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXN0eWxlc1NpZGViYXJQYW5lLmV4cGFuZGVkIHx8
ICFzdHlsZXNTaWRlYmFyUGFuZS5uZWVkc1VwZGF0ZSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBzdHlsZXNTaWRlYmFyUGFuZS51cGRhdGUodGhpcy5mb2N1c2VkRE9NTm9kZSwgbnVs
bCwgZm9yY2VVcGRhdGUpOworICAgICAgICBzdHlsZXNTaWRlYmFyUGFuZS51cGRhdGUodGhpcy50
cmVlT3V0bGluZS5mb2N1c2VkRE9NTm9kZSwgbnVsbCwgZm9yY2VVcGRhdGUpOwogICAgICAgICBz
dHlsZXNTaWRlYmFyUGFuZS5uZWVkc1VwZGF0ZSA9IGZhbHNlOwogICAgIH0sCiAKQEAgLTk0Miw3
ICs3ODQsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIGlmICghbWV0cmljc1NpZGViYXJQYW5lLmV4cGFuZGVkIHx8ICFtZXRyaWNzU2lkZWJhclBh
bmUubmVlZHNVcGRhdGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbWV0cmljc1Np
ZGViYXJQYW5lLnVwZGF0ZSh0aGlzLmZvY3VzZWRET01Ob2RlKTsKKyAgICAgICAgbWV0cmljc1Np
ZGViYXJQYW5lLnVwZGF0ZSh0aGlzLnRyZWVPdXRsaW5lLmZvY3VzZWRET01Ob2RlKTsKICAgICAg
ICAgbWV0cmljc1NpZGViYXJQYW5lLm5lZWRzVXBkYXRlID0gZmFsc2U7CiAgICAgfSwKIApAQCAt
OTUyLDQxICs3OTQsMzMgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICBpZiAoIXByb3BlcnRpZXNTaWRlYmFyUGFuZS5leHBhbmRlZCB8fCAhcHJvcGVy
dGllc1NpZGViYXJQYW5lLm5lZWRzVXBkYXRlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIHByb3BlcnRpZXNTaWRlYmFyUGFuZS51cGRhdGUodGhpcy5mb2N1c2VkRE9NTm9kZSk7Cisg
ICAgICAgIHByb3BlcnRpZXNTaWRlYmFyUGFuZS51cGRhdGUodGhpcy50cmVlT3V0bGluZS5mb2N1
c2VkRE9NTm9kZSk7CiAgICAgICAgIHByb3BlcnRpZXNTaWRlYmFyUGFuZS5uZWVkc1VwZGF0ZSA9
IGZhbHNlOwogICAgIH0sCiAKICAgICBoYW5kbGVLZXlFdmVudDogZnVuY3Rpb24oZXZlbnQpCiAg
ICAgewotICAgICAgICBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIkFsdCIpCi0gICAgICAg
ICAgICB0aGlzLmFsdEtleURvd24gPSB0cnVlOwogICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLmhh
bmRsZUtleUV2ZW50KGV2ZW50KTsKICAgICB9LAogCi0gICAgaGFuZGxlS2V5VXBFdmVudDogZnVu
Y3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0g
IkFsdCIpCi0gICAgICAgICAgICB0aGlzLmFsdEtleURvd24gPSBmYWxzZTsKLSAgICB9LAotCiAg
ICAgaGFuZGxlQ29weUV2ZW50OiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIC8vIERv
bid0IHByZXZlbnQgdGhlIG5vcm1hbCBjb3B5IGlmIHRoZSB1c2VyIGhhcyBhIHNlbGVjdGlvbi4K
ICAgICAgICAgaWYgKCF3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuaXNDb2xsYXBzZWQpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgc3dpdGNoICh0aGlzLmZvY3VzZWRET01Ob2RlLm5vZGVU
eXBlKSB7CisgICAgICAgIHN3aXRjaCAodGhpcy50cmVlT3V0bGluZS5mb2N1c2VkRE9NTm9kZS5u
b2RlVHlwZSkgewogICAgICAgICAgICAgY2FzZSBOb2RlLkVMRU1FTlRfTk9ERToKLSAgICAgICAg
ICAgICAgICB2YXIgZGF0YSA9IHRoaXMuZm9jdXNlZERPTU5vZGUub3V0ZXJIVE1MOworICAgICAg
ICAgICAgICAgIHZhciBkYXRhID0gdGhpcy50cmVlT3V0bGluZS5mb2N1c2VkRE9NTm9kZS5vdXRl
ckhUTUw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgTm9kZS5D
T01NRU5UX05PREU6Ci0gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSAiPCEtLSIgKyB0aGlzLmZv
Y3VzZWRET01Ob2RlLm5vZGVWYWx1ZSArICItLT4iOworICAgICAgICAgICAgICAgIHZhciBkYXRh
ID0gIjwhLS0iICsgdGhpcy50cmVlT3V0bGluZS5mb2N1c2VkRE9NTm9kZS5ub2RlVmFsdWUgKyAi
LS0+IjsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIGNhc2UgTm9kZS5URVhUX05PREU6Ci0gICAgICAgICAgICAgICAgdmFyIGRhdGEg
PSB0aGlzLmZvY3VzZWRET01Ob2RlLm5vZGVWYWx1ZTsKKyAgICAgICAgICAgICAgICB2YXIgZGF0
YSA9IHRoaXMudHJlZU91dGxpbmUuZm9jdXNlZERPTU5vZGUubm9kZVZhbHVlOwogICAgICAgICB9
CiAKICAgICAgICAgZXZlbnQuY2xpcGJvYXJkRGF0YS5jbGVhckRhdGEoKTsKQEAgLTEwMTUsNDI0
ICs4NDksMTEgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LnN0eWxlLnJpZ2h0ID0gbmV3V2lkdGggKyAicHgiOwog
ICAgICAgICB0aGlzLnNpZGViYXJSZXNpemVFbGVtZW50LnN0eWxlLnJpZ2h0ID0gKG5ld1dpZHRo
IC0gMykgKyAicHgiOwogCi0gICAgICAgIHRoaXMudXBkYXRlVHJlZVNlbGVjdGlvbigpOworICAg
ICAgICB0aGlzLnRyZWVPdXRsaW5lLnVwZGF0ZVNlbGVjdGlvbigpOwogCiAgICAgICAgIGV2ZW50
LnByZXZlbnREZWZhdWx0KCk7Ci0gICAgfSwKLQotICAgIF9nZXREb2N1bWVudEZvck5vZGU6IGZ1
bmN0aW9uKG5vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gbm9kZS5ub2RlVHlwZSA9PSBOb2Rl
LkRPQ1VNRU5UX05PREUgPyBub2RlIDogbm9kZS5vd25lckRvY3VtZW50OwotICAgIH0sCi0KLSAg
ICBfcGFyZW50Tm9kZU9yRnJhbWVFbGVtZW50OiBmdW5jdGlvbihub2RlKQotICAgIHsKLSAgICAg
ICAgdmFyIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZTsKLSAgICAgICAgaWYgKHBhcmVudCkKLSAg
ICAgICAgICAgIHJldHVybiBwYXJlbnQ7Ci0KLSAgICAgICAgdmFyIGRvY3VtZW50ID0gdGhpcy5f
Z2V0RG9jdW1lbnRGb3JOb2RlKG5vZGUpOwotICAgICAgICByZXR1cm4gZG9jdW1lbnQuZGVmYXVs
dFZpZXcuZnJhbWVFbGVtZW50OwotICAgIH0sCi0KLSAgICBfaXNBbmNlc3RvckluY2x1ZGluZ1Bh
cmVudEZyYW1lczogZnVuY3Rpb24oYSwgYikKLSAgICB7Ci0gICAgICAgIGlmIChvYmplY3RzQXJl
U2FtZShhLCBiKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZm9yICh2YXIg
bm9kZSA9IGI7IG5vZGU7IG5vZGUgPSB0aGlzLl9nZXREb2N1bWVudEZvck5vZGUobm9kZSkuZGVm
YXVsdFZpZXcuZnJhbWVFbGVtZW50KQotICAgICAgICAgICAgaWYgKG9iamVjdHNBcmVTYW1lKGEs
IG5vZGUpIHx8IGlzQW5jZXN0b3JOb2RlLmNhbGwoYSwgbm9kZSkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAotCi0gICAgX3RyZWVF
bGVtZW50RnJvbUV2ZW50OiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHZhciBvdXRs
aW5lID0gdGhpcy50cmVlT3V0bGluZTsKLQotICAgICAgICB2YXIgcm9vdCA9IHRoaXMudHJlZUxp
c3RFbGVtZW50OwotCi0gICAgICAgIC8vIFdlIGNob29zZSB0aGlzIFggY29vcmRpbmF0ZSBiYXNl
ZCBvbiB0aGUga25vd2xlZGdlIHRoYXQgb3VyIGxpc3QKLSAgICAgICAgLy8gaXRlbXMgZXh0ZW5k
IG5lYXJseSB0byB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgb3V0ZXIgPG9sPi4KLSAgICAgICAgdmFy
IHggPSByb290LnRvdGFsT2Zmc2V0TGVmdCArIHJvb3Qub2Zmc2V0V2lkdGggLSAyMDsKLQotICAg
ICAgICB2YXIgeSA9IGV2ZW50LnBhZ2VZOwotCi0gICAgICAgIC8vIE91ciBsaXN0IGl0ZW1zIGhh
dmUgMS1waXhlbCBjcmFja3MgYmV0d2VlbiB0aGVtIHZlcnRpY2FsbHkuIFdlIGF2b2lkCi0gICAg
ICAgIC8vIHRoZSBjcmFja3MgYnkgY2hlY2tpbmcgc2xpZ2h0bHkgYWJvdmUgYW5kIHNsaWdodGx5
IGJlbG93IHRoZSBtb3VzZQotICAgICAgICAvLyBhbmQgc2VlaW5nIGlmIHdlIGhpdCB0aGUgc2Ft
ZSBlbGVtZW50IGVhY2ggdGltZS4KLSAgICAgICAgdmFyIGVsZW1lbnRVbmRlck1vdXNlID0gb3V0
bGluZS50cmVlRWxlbWVudEZyb21Qb2ludCh4LCB5KTsKLSAgICAgICAgdmFyIGVsZW1lbnRBYm92
ZU1vdXNlID0gb3V0bGluZS50cmVlRWxlbWVudEZyb21Qb2ludCh4LCB5IC0gMik7Ci0gICAgICAg
IHZhciBlbGVtZW50OwotICAgICAgICBpZiAoZWxlbWVudFVuZGVyTW91c2UgPT09IGVsZW1lbnRB
Ym92ZU1vdXNlKQotICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnRVbmRlck1vdXNlOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBlbGVtZW50ID0gb3V0bGluZS50cmVlRWxlbWVudEZyb21Q
b2ludCh4LCB5ICsgMik7Ci0KLSAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0gICAgfSwKLQotICAg
IF9vbmRibGNsaWNrOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHZhciBlbGVtZW50
ID0gdGhpcy5fdHJlZUVsZW1lbnRGcm9tRXZlbnQoZXZlbnQpOwotCi0gICAgICAgIGlmICghZWxl
bWVudCB8fCAhZWxlbWVudC5vbmRibGNsaWNrKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIGVsZW1lbnQub25kYmxjbGljaygpOwotICAgIH0sCi0KLSAgICBfb25tb3VzZWRvd246IGZ1
bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLl90cmVlRWxl
bWVudEZyb21FdmVudChldmVudCk7Ci0KLSAgICAgICAgaWYgKCFlbGVtZW50IHx8IGVsZW1lbnQu
aXNFdmVudFdpdGhpbkRpc2Nsb3N1cmVUcmlhbmdsZShldmVudCkpCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgZWxlbWVudC5zZWxlY3QoKTsKLSAgICB9LAotCi0gICAgX29ubW91c2Vt
b3ZlOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5f
dHJlZUVsZW1lbnRGcm9tRXZlbnQoZXZlbnQpOwotICAgICAgICBpZiAoIWVsZW1lbnQpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5hbHRLZXlEb3duID0gZXZlbnQuYWx0S2V5
OwotICAgICAgICB0aGlzLmhvdmVyZWRET01Ob2RlID0gZWxlbWVudC5yZXByZXNlbnRlZE9iamVj
dDsKLSAgICAgICAgdGhpcy5mb3JjZUhvdmVySGlnaGxpZ2h0ID0gZWxlbWVudC5zZWxlY3RlZDsK
LSAgICB9LAotCi0gICAgX29ubW91c2VvdXQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAg
ICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gdGhpcy50cmVlTGlzdEVsZW1lbnQpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIHRoaXMuYWx0S2V5RG93biA9IGZhbHNlOwotICAgICAgICB0aGlz
LmhvdmVyZWRET01Ob2RlID0gbnVsbDsKLSAgICAgICAgdGhpcy5mb3JjZUhvdmVySGlnaGxpZ2h0
ID0gZmFsc2U7CiAgICAgfQogfQogCiBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZTsKIAotV2ViSW5zcGVj
dG9yLkRPTU5vZGVUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKG5vZGUpCi17Ci0gICAgdmFyIGhhc0No
aWxkcmVuID0gbm9kZS5jb250ZW50RG9jdW1lbnQgfHwgKFByZWZlcmVuY2VzLmlnbm9yZVdoaXRl
c3BhY2UgPyAoZmlyc3RDaGlsZFNraXBwaW5nV2hpdGVzcGFjZS5jYWxsKG5vZGUpID8gdHJ1ZSA6
IGZhbHNlKSA6IG5vZGUuaGFzQ2hpbGROb2RlcygpKTsKLSAgICB2YXIgdGl0bGVJbmZvID0gbm9k
ZVRpdGxlSW5mby5jYWxsKG5vZGUsIGhhc0NoaWxkcmVuLCBXZWJJbnNwZWN0b3IubGlua2lmeVVS
TCk7Ci0KLSAgICBpZiAodGl0bGVJbmZvLmhhc0NoaWxkcmVuKSAKLSAgICAgICAgdGhpcy53aGl0
ZXNwYWNlSWdub3JlZCA9IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2U7Ci0KLSAgICBUcmVl
RWxlbWVudC5jYWxsKHRoaXMsIHRpdGxlSW5mby50aXRsZSwgbm9kZSwgdGl0bGVJbmZvLmhhc0No
aWxkcmVuKTsKLX0KLQotV2ViSW5zcGVjdG9yLkRPTU5vZGVUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7Ci0gICAgdXBkYXRlU2VsZWN0aW9uOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIg
bGlzdEl0ZW1FbGVtZW50ID0gdGhpcy5saXN0SXRlbUVsZW1lbnQ7Ci0gICAgICAgIGlmICghbGlz
dEl0ZW1FbGVtZW50KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChkb2N1bWVu
dC5ib2R5Lm9mZnNldFdpZHRoIDw9IDApIHsKLSAgICAgICAgICAgIC8vIFRoZSBzdHlsZXNoZWV0
IGhhc24ndCBsb2FkZWQgeWV0IG9yIHRoZSB3aW5kb3cgaXMgY2xvc2VkLAotICAgICAgICAgICAg
Ly8gc28gd2UgY2FuJ3QgY2FsY3VsYXRlIHdoYXQgaXMgbmVlZC4gUmV0dXJuIGVhcmx5LgotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGlv
bkVsZW1lbnQpIHsKLSAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25FbGVtZW50
LmNsYXNzTmFtZSA9ICJzZWxlY3Rpb24gc2VsZWN0ZWQiOwotICAgICAgICAgICAgbGlzdEl0ZW1F
bGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLnNlbGVjdGlvbkVsZW1lbnQsIGxpc3RJdGVtRWxlbWVu
dC5maXJzdENoaWxkKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuc2VsZWN0aW9uRWxlbWVu
dC5zdHlsZS5oZWlnaHQgPSBsaXN0SXRlbUVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgInB4IjsKLSAg
ICB9LAotCi0gICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMubGlz
dEl0ZW1FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMub25tb3VzZWRv
d24uYmluZCh0aGlzKSwgZmFsc2UpOwotCi0gICAgICAgIHRoaXMuX3ByZXZlbnRGb2xsb3dpbmdM
aW5rc09uRG91YmxlQ2xpY2soKTsKLSAgICB9LAotCi0gICAgX3ByZXZlbnRGb2xsb3dpbmdMaW5r
c09uRG91YmxlQ2xpY2s6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBsaW5rcyA9IHRo
aXMubGlzdEl0ZW1FbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImxpID4gLndlYmtpdC1odG1sLXRh
ZyA+IC53ZWJraXQtaHRtbC1hdHRyaWJ1dGUgPiAud2Via2l0LWh0bWwtZXh0ZXJuYWwtbGluaywg
bGkgPiAud2Via2l0LWh0bWwtdGFnID4gLndlYmtpdC1odG1sLWF0dHJpYnV0ZSA+IC53ZWJraXQt
aHRtbC1yZXNvdXJjZS1saW5rIik7Ci0gICAgICAgIGlmICghbGlua3MpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5rcy5sZW5ndGg7ICsraSkK
LSAgICAgICAgICAgIGxpbmtzW2ldLnByZXZlbnRGb2xsb3dPbkRvdWJsZUNsaWNrID0gdHJ1ZTsK
LSAgICB9LAotCi0gICAgb25wb3B1bGF0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYg
KHRoaXMuY2hpbGRyZW4ubGVuZ3RoIHx8IHRoaXMud2hpdGVzcGFjZUlnbm9yZWQgIT09IFByZWZl
cmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
dGhpcy53aGl0ZXNwYWNlSWdub3JlZCA9IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2U7Ci0K
LSAgICAgICAgdGhpcy51cGRhdGVDaGlsZHJlbigpOwotICAgIH0sCi0KLSAgICB1cGRhdGVDaGls
ZHJlbjogZnVuY3Rpb24oZnVsbFJlZnJlc2gpCi0gICAgewotICAgICAgICBpZiAoZnVsbFJlZnJl
c2gpIHsKLSAgICAgICAgICAgIHZhciBzZWxlY3RlZFRyZWVFbGVtZW50ID0gdGhpcy50cmVlT3V0
bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50OwotICAgICAgICAgICAgaWYgKHNlbGVjdGVkVHJlZUVs
ZW1lbnQgJiYgc2VsZWN0ZWRUcmVlRWxlbWVudC5oYXNBbmNlc3Rvcih0aGlzKSkKLSAgICAgICAg
ICAgICAgICB0aGlzLnNlbGVjdCgpOwotICAgICAgICAgICAgdGhpcy5yZW1vdmVDaGlsZHJlbigp
OwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gdGhpczsKLSAgICAgICAg
dmFyIHRyZWVDaGlsZEluZGV4ID0gMDsKLQotICAgICAgICBmdW5jdGlvbiB1cGRhdGVDaGlsZHJl
bk9mTm9kZShub2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgdHJlZU91dGxpbmUgPSB0
cmVlRWxlbWVudC50cmVlT3V0bGluZTsKLSAgICAgICAgICAgIHZhciBjaGlsZCA9IChQcmVmZXJl
bmNlcy5pZ25vcmVXaGl0ZXNwYWNlID8gZmlyc3RDaGlsZFNraXBwaW5nV2hpdGVzcGFjZS5jYWxs
KG5vZGUpIDogbm9kZS5maXJzdENoaWxkKTsKLSAgICAgICAgICAgIHdoaWxlIChjaGlsZCkgewot
ICAgICAgICAgICAgICAgIHZhciBjdXJyZW50VHJlZUVsZW1lbnQgPSB0cmVlRWxlbWVudC5jaGls
ZHJlblt0cmVlQ2hpbGRJbmRleF07Ci0gICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50VHJlZUVs
ZW1lbnQgfHwgIW9iamVjdHNBcmVTYW1lKGN1cnJlbnRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9i
amVjdCwgY2hpbGQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZpbmQgYW55IGV4aXN0aW5n
IGVsZW1lbnQgdGhhdCBpcyBsYXRlciBpbiB0aGUgY2hpbGRyZW4gbGlzdC4KLSAgICAgICAgICAg
ICAgICAgICAgdmFyIGV4aXN0aW5nVHJlZUVsZW1lbnQgPSBudWxsOwotICAgICAgICAgICAgICAg
ICAgICBmb3IgKHZhciBpID0gKHRyZWVDaGlsZEluZGV4ICsgMSk7IGkgPCB0cmVlRWxlbWVudC5j
aGlsZHJlbi5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iamVj
dHNBcmVTYW1lKHRyZWVFbGVtZW50LmNoaWxkcmVuW2ldLnJlcHJlc2VudGVkT2JqZWN0LCBjaGls
ZCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ1RyZWVFbGVtZW50ID0g
dHJlZUVsZW1lbnQuY2hpbGRyZW5baV07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdUcmVlRWxlbWVudCAmJiBleGlzdGluZ1Ry
ZWVFbGVtZW50LnBhcmVudCA9PT0gdHJlZUVsZW1lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIElmIGFuIGV4aXN0aW5nIGVsZW1lbnQgd2FzIGZvdW5kIGFuZCBpdCBoYXMgdGhlIHNh
bWUgcGFyZW50LCBqdXN0IG1vdmUgaXQuCi0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgd2Fz
U2VsZWN0ZWQgPSBleGlzdGluZ1RyZWVFbGVtZW50LnNlbGVjdGVkOwotICAgICAgICAgICAgICAg
ICAgICAgICAgdHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGQoZXhpc3RpbmdUcmVlRWxlbWVudCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB0cmVlRWxlbWVudC5pbnNlcnRDaGlsZChleGlzdGluZ1Ry
ZWVFbGVtZW50LCB0cmVlQ2hpbGRJbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
d2FzU2VsZWN0ZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdUcmVlRWxl
bWVudC5zZWxlY3QoKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIE5vIGV4aXN0aW5nIGVsZW1lbnQgZm91bmQsIGluc2VydCBhIG5ldyBl
bGVtZW50LgotICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQuaW5zZXJ0Q2hpbGQo
bmV3IFdlYkluc3BlY3Rvci5ET01Ob2RlVHJlZUVsZW1lbnQoY2hpbGQpLCB0cmVlQ2hpbGRJbmRl
eCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICBjaGlsZCA9IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UgPyBuZXh0U2libGlu
Z1NraXBwaW5nV2hpdGVzcGFjZS5jYWxsKGNoaWxkKSA6IGNoaWxkLm5leHRTaWJsaW5nOwotICAg
ICAgICAgICAgICAgICsrdHJlZUNoaWxkSW5kZXg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICAvLyBSZW1vdmUgYW55IHRyZWUgZWxlbWVudHMgdGhhdCBubyBsb25nZXIgaGF2
ZSB0aGlzIG5vZGUgKG9yIHRoaXMgbm9kZSdzIGNvbnRlbnREb2N1bWVudCkgYXMgdGhlaXIgcGFy
ZW50LgotICAgICAgICBmb3IgKHZhciBpID0gKHRoaXMuY2hpbGRyZW4ubGVuZ3RoIC0gMSk7IGkg
Pj0gMDsgLS1pKSB7Ci0gICAgICAgICAgICBpZiAoImVsZW1lbnRDbG9zZVRhZyIgaW4gdGhpcy5j
aGlsZHJlbltpXSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgdmFy
IGN1cnJlbnRDaGlsZCA9IHRoaXMuY2hpbGRyZW5baV07Ci0gICAgICAgICAgICB2YXIgY3VycmVu
dE5vZGUgPSBjdXJyZW50Q2hpbGQucmVwcmVzZW50ZWRPYmplY3Q7Ci0gICAgICAgICAgICB2YXIg
Y3VycmVudFBhcmVudE5vZGUgPSBjdXJyZW50Tm9kZS5wYXJlbnROb2RlOwotCi0gICAgICAgICAg
ICBpZiAob2JqZWN0c0FyZVNhbWUoY3VycmVudFBhcmVudE5vZGUsIHRoaXMucmVwcmVzZW50ZWRP
YmplY3QpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKHRoaXMu
cmVwcmVzZW50ZWRPYmplY3QuY29udGVudERvY3VtZW50ICYmIG9iamVjdHNBcmVTYW1lKGN1cnJl
bnRQYXJlbnROb2RlLCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmNvbnRlbnREb2N1bWVudCkpCi0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIHZhciBzZWxlY3RlZFRyZWVF
bGVtZW50ID0gdGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50OwotICAgICAgICAg
ICAgaWYgKHNlbGVjdGVkVHJlZUVsZW1lbnQgJiYgKHNlbGVjdGVkVHJlZUVsZW1lbnQgPT09IGN1
cnJlbnRDaGlsZCB8fCBzZWxlY3RlZFRyZWVFbGVtZW50Lmhhc0FuY2VzdG9yKGN1cnJlbnRDaGls
ZCkpKQotICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCk7Ci0KLSAgICAgICAgICAgIHRoaXMu
cmVtb3ZlQ2hpbGRBdEluZGV4KGkpOwotCi0gICAgICAgICAgICBpZiAoY3VycmVudE5vZGUuY29u
dGVudERvY3VtZW50KQotICAgICAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUucGFuZWwudW5y
ZWdpc3Rlck11dGF0aW9uRXZlbnRMaXN0ZW5lcnMoY3VycmVudE5vZGUuY29udGVudERvY3VtZW50
LmRlZmF1bHRWaWV3KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh0aGlzLnJlcHJlc2VudGVk
T2JqZWN0LmNvbnRlbnREb2N1bWVudCkKLSAgICAgICAgICAgIHVwZGF0ZUNoaWxkcmVuT2ZOb2Rl
KHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY29udGVudERvY3VtZW50KTsKLSAgICAgICAgdXBkYXRl
Q2hpbGRyZW5PZk5vZGUodGhpcy5yZXByZXNlbnRlZE9iamVjdCk7Ci0KLSAgICAgICAgdmFyIGxh
c3RDaGlsZCA9IHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXTsKLSAgICAg
ICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3Qubm9kZVR5cGUgPT0gTm9kZS5FTEVNRU5UX05P
REUgJiYgKCFsYXN0Q2hpbGQgfHwgIWxhc3RDaGlsZC5lbGVtZW50Q2xvc2VUYWcpKSB7Ci0gICAg
ICAgICAgICB2YXIgdGl0bGUgPSAiPHNwYW4gY2xhc3M9XCJ3ZWJraXQtaHRtbC10YWcgY2xvc2Vc
Ij4mbHQ7LyIgKyB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCku
ZXNjYXBlSFRNTCgpICsgIiZndDs8L3NwYW4+IjsKLSAgICAgICAgICAgIHZhciBpdGVtID0gbmV3
IFRyZWVFbGVtZW50KHRpdGxlLCBudWxsLCBmYWxzZSk7Ci0gICAgICAgICAgICBpdGVtLnNlbGVj
dGFibGUgPSBmYWxzZTsKLSAgICAgICAgICAgIGl0ZW0uZWxlbWVudENsb3NlVGFnID0gdHJ1ZTsK
LSAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQoaXRlbSk7Ci0gICAgICAgIH0KLSAgICB9LAot
Ci0gICAgb25leHBhbmQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMudHJlZU91dGxp
bmUucGFuZWwudXBkYXRlVHJlZVNlbGVjdGlvbigpOwotCi0gICAgICAgIGlmICh0aGlzLnJlcHJl
c2VudGVkT2JqZWN0LmNvbnRlbnREb2N1bWVudCkKLSAgICAgICAgICAgIHRoaXMudHJlZU91dGxp
bmUucGFuZWwucmVnaXN0ZXJNdXRhdGlvbkV2ZW50TGlzdGVuZXJzKHRoaXMucmVwcmVzZW50ZWRP
YmplY3QuY29udGVudERvY3VtZW50LmRlZmF1bHRWaWV3KTsKLSAgICB9LAotCi0gICAgb25jb2xs
YXBzZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy50cmVlT3V0bGluZS5wYW5lbC51
cGRhdGVUcmVlU2VsZWN0aW9uKCk7Ci0gICAgfSwKLQotICAgIG9ucmV2ZWFsOiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICBpZiAodGhpcy5saXN0SXRlbUVsZW1lbnQpCi0gICAgICAgICAgICB0
aGlzLmxpc3RJdGVtRWxlbWVudC5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKGZhbHNlKTsKLSAgICB9
LAotCi0gICAgb25zZWxlY3Q6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMudHJlZU91
dGxpbmUucGFuZWwuZm9jdXNlZERPTU5vZGUgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0OwotICAg
ICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbigpOwotICAgIH0sCi0KLSAgICBvbm1vdXNlZG93bjog
ZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fZWRpdGluZykKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBQcmV2ZW50IHNlbGVjdGluZyB0aGUgbmVhcmVz
dCB3b3JkIG9uIGRvdWJsZSBjbGljay4KLSAgICAgICAgaWYgKGV2ZW50LmRldGFpbCA+PSAyKQot
ICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICB9LAotCi0gICAgb25kYmxj
bGljazogZnVuY3Rpb24odHJlZUVsZW1lbnQsIGV2ZW50KQotICAgIHsKLSAgICAgICAgaWYgKHRo
aXMuX2VkaXRpbmcpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHRoaXMuX3N0
YXJ0RWRpdGluZyhldmVudCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIHBh
bmVsID0gdGhpcy50cmVlT3V0bGluZS5wYW5lbDsKLSAgICAgICAgcGFuZWwucm9vdERPTU5vZGUg
PSB0aGlzLnBhcmVudC5yZXByZXNlbnRlZE9iamVjdDsKLSAgICAgICAgcGFuZWwuZm9jdXNlZERP
TU5vZGUgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0OwotCi0gICAgICAgIGlmICh0aGlzLmhhc0No
aWxkcmVuICYmICF0aGlzLmV4cGFuZGVkKQotICAgICAgICAgICAgdGhpcy5leHBhbmQoKTsKLSAg
ICB9LAotCi0gICAgX3N0YXJ0RWRpdGluZzogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAg
ICBpZiAodGhpcy50cmVlT3V0bGluZS5wYW5lbC5mb2N1c2VkRE9NTm9kZSAhPSB0aGlzLnJlcHJl
c2VudGVkT2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICh0aGlzLnJl
cHJlc2VudGVkT2JqZWN0Lm5vZGVUeXBlICE9IE5vZGUuRUxFTUVOVF9OT0RFICYmIHRoaXMucmVw
cmVzZW50ZWRPYmplY3Qubm9kZVR5cGUgIT0gTm9kZS5URVhUX05PREUpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdmFyIHRleHROb2RlID0gZXZlbnQudGFyZ2V0LmVuY2xv
c2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoIndlYmtpdC1odG1sLXRleHQtbm9kZSIpOwotICAgICAg
ICBpZiAodGV4dE5vZGUpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRFZGl0aW5nVGV4
dE5vZGUodGV4dE5vZGUpOwotCi0gICAgICAgIHZhciBhdHRyaWJ1dGUgPSBldmVudC50YXJnZXQu
ZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygid2Via2l0LWh0bWwtYXR0cmlidXRlIik7Ci0g
ICAgICAgIGlmIChhdHRyaWJ1dGUpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRFZGl0
aW5nQXR0cmlidXRlKGF0dHJpYnV0ZSwgZXZlbnQpOwotCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9LAotCi0gICAgX3N0YXJ0RWRpdGluZ0F0dHJpYnV0ZTogZnVuY3Rpb24oYXR0cmlidXRl
LCBldmVudCkKLSAgICB7Ci0gICAgICAgIGlmIChXZWJJbnNwZWN0b3IuaXNCZWluZ0VkaXRlZChh
dHRyaWJ1dGUpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgdmFyIGF0dHJp
YnV0ZU5hbWVFbGVtZW50ID0gYXR0cmlidXRlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIndlYmtp
dC1odG1sLWF0dHJpYnV0ZS1uYW1lIilbMF07Ci0gICAgICAgIGlmICghYXR0cmlidXRlTmFtZUVs
ZW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdmFyIGF0dHJpYnV0
ZU5hbWUgPSBhdHRyaWJ1dGVOYW1lRWxlbWVudC5pbm5lclRleHQ7Ci0KLSAgICAgICAgZnVuY3Rp
b24gcmVtb3ZlWmVyb1dpZHRoU3BhY2VSZWN1cnNpdmUobm9kZSkKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7Ci0gICAgICAgICAg
ICAgICAgbm9kZS5ub2RlVmFsdWUgPSBub2RlLm5vZGVWYWx1ZS5yZXBsYWNlKC9cdTIwMEIvZywg
IiIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgaWYgKG5vZGUubm9kZVR5cGUgIT09IE5vZGUuRUxFTUVOVF9OT0RFKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICAgICAgZm9yICh2YXIgY2hpbGQgPSBub2RlLmZpcnN0Q2hp
bGQ7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLm5leHRTaWJsaW5nKQotICAgICAgICAgICAgICAgIHJl
bW92ZVplcm9XaWR0aFNwYWNlUmVjdXJzaXZlKGNoaWxkKTsKLSAgICAgICAgfQotCi0gICAgICAg
IC8vIFJlbW92ZSB6ZXJvLXdpZHRoIHNwYWNlcyB0aGF0IHdlcmUgYWRkZWQgYnkgbm9kZVRpdGxl
SW5mby4KLSAgICAgICAgcmVtb3ZlWmVyb1dpZHRoU3BhY2VSZWN1cnNpdmUoYXR0cmlidXRlKTsK
LQotICAgICAgICB0aGlzLl9lZGl0aW5nID0gdHJ1ZTsKLQotICAgICAgICBXZWJJbnNwZWN0b3Iu
c3RhcnRFZGl0aW5nKGF0dHJpYnV0ZSwgdGhpcy5fYXR0cmlidXRlRWRpdGluZ0NvbW1pdHRlZC5i
aW5kKHRoaXMpLCB0aGlzLl9lZGl0aW5nQ2FuY2VsbGVkLmJpbmQodGhpcyksIGF0dHJpYnV0ZU5h
bWUpOwotICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudChldmVu
dC50YXJnZXQsIDAsIGV2ZW50LnRhcmdldCwgMSk7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfSwKLQotICAgIF9zdGFydEVkaXRpbmdUZXh0Tm9kZTogZnVuY3Rpb24odGV4dE5vZGUpCi0g
ICAgewotICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmlzQmVpbmdFZGl0ZWQodGV4dE5vZGUpKQot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgdGhpcy5fZWRpdGluZyA9IHRydWU7
Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyh0ZXh0Tm9kZSwgdGhpcy5fdGV4
dE5vZGVFZGl0aW5nQ29tbWl0dGVkLmJpbmQodGhpcyksIHRoaXMuX2VkaXRpbmdDYW5jZWxsZWQu
YmluZCh0aGlzKSk7Ci0gICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0
ZW50KHRleHROb2RlLCAwLCB0ZXh0Tm9kZSwgMSk7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfSwKLQotICAgIF9hdHRyaWJ1dGVFZGl0aW5nQ29tbWl0dGVkOiBmdW5jdGlvbihlbGVtZW50
LCBuZXdUZXh0LCBvbGRUZXh0LCBhdHRyaWJ1dGVOYW1lKQotICAgIHsKLSAgICAgICAgZGVsZXRl
IHRoaXMuX2VkaXRpbmc7Ci0KLSAgICAgICAgdmFyIHBhcnNlQ29udGFpbmVyRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgcGFyc2VDb250YWluZXJFbGVt
ZW50LmlubmVySFRNTCA9ICI8c3BhbiAiICsgbmV3VGV4dCArICI+PC9zcGFuPiI7Ci0gICAgICAg
IHZhciBwYXJzZUVsZW1lbnQgPSBwYXJzZUNvbnRhaW5lckVsZW1lbnQuZmlyc3RDaGlsZDsKLSAg
ICAgICAgaWYgKCFwYXJzZUVsZW1lbnQpIHsKLSAgICAgICAgICAgIHRoaXMuX2VkaXRpbmdDYW5j
ZWxsZWQoZWxlbWVudCwgYXR0cmlidXRlTmFtZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICB2YXIgZm91bmRPcmlnaW5hbEF0dHJpYnV0ZSA9IGZhbHNlOwotICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcnNlRWxlbWVudC5hdHRyaWJ1dGVzLmxlbmd0aDsg
KytpKSB7Ci0gICAgICAgICAgICB2YXIgYXR0ciA9IHBhcnNlRWxlbWVudC5hdHRyaWJ1dGVzW2ld
OwotICAgICAgICAgICAgZm91bmRPcmlnaW5hbEF0dHJpYnV0ZSA9IGZvdW5kT3JpZ2luYWxBdHRy
aWJ1dGUgfHwgYXR0ci5uYW1lID09PSBhdHRyaWJ1dGVOYW1lOwotICAgICAgICAgICAgSW5zcGVj
dG9yQ29udHJvbGxlci5pbnNwZWN0ZWRXaW5kb3coKS5FbGVtZW50LnByb3RvdHlwZS5zZXRBdHRy
aWJ1dGUuY2FsbCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LCBhdHRyLm5hbWUsIGF0dHIudmFsdWUp
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFmb3VuZE9yaWdpbmFsQXR0cmlidXRlKQotICAg
ICAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5pbnNwZWN0ZWRXaW5kb3coKS5FbGVtZW50LnBy
b3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGUuY2FsbCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LCBhdHRy
aWJ1dGVOYW1lKTsKLQotICAgICAgICB0aGlzLl91cGRhdGVUaXRsZSgpOwotICAgICAgICB0aGlz
LnRyZWVPdXRsaW5lLnBhbmVsLl9mb2N1c2VkTm9kZUNoYW5nZWQodHJ1ZSk7Ci0gICAgfSwKLQot
ICAgIF90ZXh0Tm9kZUVkaXRpbmdDb21taXR0ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIG5ld1RleHQp
Ci0gICAgewotICAgICAgICBkZWxldGUgdGhpcy5fZWRpdGluZzsKLQotICAgICAgICB2YXIgdGV4
dE5vZGU7Ci0gICAgICAgIGlmICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm5vZGVUeXBlID09IE5v
ZGUuRUxFTUVOVF9OT0RFKSB7Ci0gICAgICAgICAgICAvLyBXZSBvbmx5IHNob3cgdGV4dCBub2Rl
cyBpbmxpbmUgaW4gZWxlbWVudHMgaWYgdGhlIGVsZW1lbnQgb25seQotICAgICAgICAgICAgLy8g
aGFzIGEgc2luZ2xlIGNoaWxkLCBhbmQgdGhhdCBjaGlsZCBpcyBhIHRleHQgbm9kZS4KLSAgICAg
ICAgICAgIHRleHROb2RlID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5maXJzdENoaWxkOwotICAg
ICAgICB9IGVsc2UgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3Qubm9kZVR5cGUgPT0gTm9kZS5U
RVhUX05PREUpCi0gICAgICAgICAgICB0ZXh0Tm9kZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7
Ci0KLSAgICAgICAgdGV4dE5vZGUubm9kZVZhbHVlID0gbmV3VGV4dDsKLSAgICAgICAgdGhpcy5f
dXBkYXRlVGl0bGUoKTsKLSAgICB9LAotCi0gICAgX2VkaXRpbmdDYW5jZWxsZWQ6IGZ1bmN0aW9u
KGVsZW1lbnQsIGNvbnRleHQpCi0gICAgewotICAgICAgICBkZWxldGUgdGhpcy5fZWRpdGluZzsK
LQotICAgICAgICB0aGlzLl91cGRhdGVUaXRsZSgpOwotICAgIH0sCi0KLSAgICBfdXBkYXRlVGl0
bGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMudGl0bGUgPSBub2RlVGl0bGVJbmZv
LmNhbGwodGhpcy5yZXByZXNlbnRlZE9iamVjdCwgdGhpcy5oYXNDaGlsZHJlbiwgV2ViSW5zcGVj
dG9yLmxpbmtpZnlVUkwpLnRpdGxlOwotICAgICAgICBkZWxldGUgdGhpcy5zZWxlY3Rpb25FbGVt
ZW50OwotICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbigpOwotICAgICAgICB0aGlzLl9wcmV2
ZW50Rm9sbG93aW5nTGlua3NPbkRvdWJsZUNsaWNrKCk7Ci0gICAgfSwKLX0KLQotV2ViSW5zcGVj
dG9yLkRPTU5vZGVUcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gVHJlZUVsZW1lbnQu
cHJvdG90eXBlOwpJbmRleDogV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9FbGVtZW50c1RyZWVPdXRs
aW5lLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9pbnNwZWN0b3IvRWxlbWVudHNUcmVl
T3V0bGluZS5qcwkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9pbnNwZWN0b3IvRWxlbWVu
dHNUcmVlT3V0bGluZS5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OTYgQEAKKworV2ViSW5z
cGVjdG9yLkVsZW1lbnRzVHJlZU91dGxpbmUgPSBmdW5jdGlvbigpIHsKKyAgICB0aGlzLmVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOworICAgIHRoaXMuZWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9vbm1vdXNlZG93bi5iaW5kKHRoaXMpLCBm
YWxzZSk7CisgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRibGNsaWNrIiwgdGhp
cy5fb25kYmxjbGljay5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgdGhpcy5lbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX29ubW91c2Vtb3ZlLmJpbmQodGhpcyksIGZh
bHNlKTsKKyAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCB0aGlz
Ll9vbm1vdXNlb3V0LmJpbmQodGhpcyksIGZhbHNlKTsKKworICAgIFRyZWVPdXRsaW5lLmNhbGwo
dGhpcywgdGhpcy5lbGVtZW50KTsKKyAgICAKKyAgICB0aGlzLmluY2x1ZGVSb290RE9NTm9kZSA9
IHRydWU7CisgICAgdGhpcy5zZWxlY3RFbmFibGVkID0gZmFsc2U7CisgICAgdGhpcy5yb290RE9N
Tm9kZSA9IG51bGw7CisgICAgdGhpcy5mb2N1c2VkRE9NTm9kZSA9IG51bGw7Cit9CisKK1dlYklu
c3BlY3Rvci5FbGVtZW50c1RyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKKyAgICBnZXQgcm9vdERP
TU5vZGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3RET01Ob2RlOworICAgIH0s
CisKKyAgICBzZXQgcm9vdERPTU5vZGUoeCkKKyAgICB7CisgICAgICAgIGlmIChvYmplY3RzQXJl
U2FtZSh0aGlzLl9yb290RE9NTm9kZSwgeCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgdGhpcy5fcm9vdERPTU5vZGUgPSB4OworCisgICAgICAgIHRoaXMudXBkYXRlKCk7CisgICAg
fSwKKworICAgIGdldCBmb2N1c2VkRE9NTm9kZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy5fZm9jdXNlZERPTU5vZGU7CisgICAgfSwKKworICAgIHNldCBmb2N1c2VkRE9NTm9kZSh4KQor
ICAgIHsKKyAgICAgICAgaWYgKG9iamVjdHNBcmVTYW1lKHRoaXMuX2ZvY3VzZWRET01Ob2RlLCB4
KSkgeworICAgICAgICAgICAgdmFyIG5vZGVJdGVtID0gdGhpcy5yZXZlYWxOb2RlKHgpOworICAg
ICAgICAgICAgaWYgKG5vZGVJdGVtKQorICAgICAgICAgICAgICAgIG5vZGVJdGVtLnNlbGVjdCgp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fZm9jdXNl
ZERPTU5vZGUgPSB4OworCisgICAgICAgIHRoaXMub25Gb2N1c2VkTm9kZUNoYW5nZWQoKTsKKwor
ICAgICAgICB2YXIgbm9kZUl0ZW0gPSB0aGlzLnJldmVhbE5vZGUoeCk7CisgICAgICAgIGlmIChu
b2RlSXRlbSkKKyAgICAgICAgICAgIG5vZGVJdGVtLnNlbGVjdCgpOworICAgIH0sCisgICAgCisg
ICAgdXBkYXRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVu
KCk7CisKKyAgICAgICAgaWYgKCF0aGlzLnJvb3RET01Ob2RlKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHZhciB0cmVlRWxlbWVudDsKKyAgICAgICAgaWYgKHRoaXMuaW5jbHVkZVJv
b3RET01Ob2RlKSB7CisgICAgICAgICAgICB0cmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3Iu
RWxlbWVudHNUcmVlRWxlbWVudCh0aGlzLnJvb3RET01Ob2RlKTsKKyAgICAgICAgICAgIHRyZWVF
bGVtZW50LnNlbGVjdGFibGUgPSB0aGlzLnNlbGVjdEVuYWJsZWQ7CisgICAgICAgICAgICB0aGlz
LnRyZWVPdXRsaW5lLmFwcGVuZENoaWxkKHRyZWVFbGVtZW50KTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIC8vIEZJWE1FOiB0aGlzIGNvdWxkIHVzZSBmaW5kVHJlZUVsZW1lbnQgdG8g
cmV1c2UgYSB0cmVlIGVsZW1lbnQgaWYgaXQgYWxyZWFkeSBleGlzdHMKKyAgICAgICAgICAgIHZh
ciBub2RlID0gKFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UgPyBmaXJzdENoaWxkU2tpcHBp
bmdXaGl0ZXNwYWNlLmNhbGwodGhpcy5yb290RE9NTm9kZSkgOiB0aGlzLnJvb3RET01Ob2RlLmZp
cnN0Q2hpbGQpOworICAgICAgICAgICAgd2hpbGUgKG5vZGUpIHsKKyAgICAgICAgICAgICAgICB0
cmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudChub2RlKTsK
KyAgICAgICAgICAgICAgICB0cmVlRWxlbWVudC5zZWxlY3RhYmxlID0gdGhpcy5zZWxlY3RFbmFi
bGVkOworICAgICAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQodHJlZUVs
ZW1lbnQpOworICAgICAgICAgICAgICAgIG5vZGUgPSBQcmVmZXJlbmNlcy5pZ25vcmVXaGl0ZXNw
YWNlID8gbmV4dFNpYmxpbmdTa2lwcGluZ1doaXRlc3BhY2UuY2FsbChub2RlKSA6IG5vZGUubmV4
dFNpYmxpbmc7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB0aGlzLnVwZGF0
ZVNlbGVjdGlvbigpOworICAgIH0sCisKKyAgICB1cGRhdGVTZWxlY3Rpb246IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50KQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVu
dDsKKyAgICAgICAgZWxlbWVudC51cGRhdGVTZWxlY3Rpb24oKTsKKyAgICB9LAorCisgICAgb25G
b2N1c2VkTm9kZUNoYW5nZWQ6IGZ1bmN0aW9uKGZvcmNlVXBkYXRlKSB7fSwKKworICAgIHJldmVh
bE5vZGU6IGZ1bmN0aW9uKG5vZGUpCisgICAgeworICAgICAgICB2YXIgbm9kZUl0ZW0gPSB0aGlz
LnRyZWVPdXRsaW5lLmZpbmRUcmVlRWxlbWVudChub2RlLCBpc0FuY2VzdG9ySW5jbHVkaW5nUGFy
ZW50RnJhbWVzLmJpbmQodGhpcyksIHBhcmVudE5vZGVPckZyYW1lRWxlbWVudC5iaW5kKHRoaXMp
LCBvYmplY3RzQXJlU2FtZSk7CisgICAgICAgIGlmICghbm9kZUl0ZW0pCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgbm9kZUl0ZW0ucmV2ZWFsKCk7CisgICAgICAgIHJldHVybiBub2Rl
SXRlbTsKKyAgICB9LAorCisgICAgX3RyZWVFbGVtZW50RnJvbUV2ZW50OiBmdW5jdGlvbihldmVu
dCkKKyAgICB7CisgICAgICAgIHZhciBvdXRsaW5lID0gdGhpcy50cmVlT3V0bGluZTsKKworICAg
ICAgICB2YXIgcm9vdCA9IHRoaXMuZWxlbWVudDsKKworICAgICAgICAvLyBXZSBjaG9vc2UgdGhp
cyBYIGNvb3JkaW5hdGUgYmFzZWQgb24gdGhlIGtub3dsZWRnZSB0aGF0IG91ciBsaXN0CisgICAg
ICAgIC8vIGl0ZW1zIGV4dGVuZCBuZWFybHkgdG8gdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIG91dGVy
IDxvbD4uCisgICAgICAgIHZhciB4ID0gcm9vdC50b3RhbE9mZnNldExlZnQgKyByb290Lm9mZnNl
dFdpZHRoIC0gMjA7CisKKyAgICAgICAgdmFyIHkgPSBldmVudC5wYWdlWTsKKworICAgICAgICAv
LyBPdXIgbGlzdCBpdGVtcyBoYXZlIDEtcGl4ZWwgY3JhY2tzIGJldHdlZW4gdGhlbSB2ZXJ0aWNh
bGx5LiBXZSBhdm9pZAorICAgICAgICAvLyB0aGUgY3JhY2tzIGJ5IGNoZWNraW5nIHNsaWdodGx5
IGFib3ZlIGFuZCBzbGlnaHRseSBiZWxvdyB0aGUgbW91c2UKKyAgICAgICAgLy8gYW5kIHNlZWlu
ZyBpZiB3ZSBoaXQgdGhlIHNhbWUgZWxlbWVudCBlYWNoIHRpbWUuCisgICAgICAgIHZhciBlbGVt
ZW50VW5kZXJNb3VzZSA9IG91dGxpbmUudHJlZUVsZW1lbnRGcm9tUG9pbnQoeCwgeSk7CisgICAg
ICAgIHZhciBlbGVtZW50QWJvdmVNb3VzZSA9IG91dGxpbmUudHJlZUVsZW1lbnRGcm9tUG9pbnQo
eCwgeSAtIDIpOworICAgICAgICB2YXIgZWxlbWVudDsKKyAgICAgICAgaWYgKGVsZW1lbnRVbmRl
ck1vdXNlID09PSBlbGVtZW50QWJvdmVNb3VzZSkKKyAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVt
ZW50VW5kZXJNb3VzZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZWxlbWVudCA9IG91dGxp
bmUudHJlZUVsZW1lbnRGcm9tUG9pbnQoeCwgeSArIDIpOworCisgICAgICAgIHJldHVybiBlbGVt
ZW50OworICAgIH0sCisKKyAgICBfb25kYmxjbGljazogZnVuY3Rpb24oZXZlbnQpCisgICAgewor
ICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMuX3RyZWVFbGVtZW50RnJvbUV2ZW50KGV2ZW50KTsK
KworICAgICAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQub25kYmxjbGljaykKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBlbGVtZW50Lm9uZGJsY2xpY2soZWxlbWVudCwgZXZlbnQp
OworICAgIH0sCisKKyAgICBfb25tb3VzZWRvd246IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAg
ICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLl90cmVlRWxlbWVudEZyb21FdmVudChldmVudCk7CisK
KyAgICAgICAgaWYgKCFlbGVtZW50IHx8IGVsZW1lbnQuaXNFdmVudFdpdGhpbkRpc2Nsb3N1cmVU
cmlhbmdsZShldmVudCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZWxlbWVudC5z
ZWxlY3QoKTsKKyAgICB9LAorCisgICAgX29ubW91c2Vtb3ZlOiBmdW5jdGlvbihldmVudCkKKyAg
ICB7CisgICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5fdHJlZUVsZW1lbnRGcm9tRXZlbnQoZXZl
bnQpOworICAgICAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLmhvdmVyZWRET01Ob2RlID0gZWxlbWVudC5yZXByZXNlbnRlZE9iamVj
dDsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmZvcmNlSG92ZXJIaWdobGlnaHQgPSBlbGVtZW50LnNl
bGVjdGVkOworICAgIH0sCisKKyAgICBfb25tb3VzZW91dDogZnVuY3Rpb24oZXZlbnQpCisgICAg
eworICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSB0aGlzLmVsZW1lbnQpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLmhvdmVyZWRET01Ob2RlID0gbnVsbDsK
KyAgICAgICAgV2ViSW5zcGVjdG9yLmZvcmNlSG92ZXJIaWdobGlnaHQgPSBmYWxzZTsKKyAgICB9
Cit9CisKK1dlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVPdXRsaW5lLnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBUcmVlT3V0bGluZS5wcm90b3R5cGU7CisKKworCitXZWJJbnNwZWN0b3IuRWxlbWVudHNU
cmVlRWxlbWVudCA9IGZ1bmN0aW9uKG5vZGUpCit7CisgICAgdmFyIGhhc0NoaWxkcmVuID0gbm9k
ZS5jb250ZW50RG9jdW1lbnQgfHwgKFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UgPyAoZmly
c3RDaGlsZFNraXBwaW5nV2hpdGVzcGFjZS5jYWxsKG5vZGUpID8gdHJ1ZSA6IGZhbHNlKSA6IG5v
ZGUuaGFzQ2hpbGROb2RlcygpKTsKKyAgICB2YXIgdGl0bGVJbmZvID0gbm9kZVRpdGxlSW5mby5j
YWxsKG5vZGUsIGhhc0NoaWxkcmVuLCBXZWJJbnNwZWN0b3IubGlua2lmeVVSTCk7CisKKyAgICBp
ZiAodGl0bGVJbmZvLmhhc0NoaWxkcmVuKSAKKyAgICAgICAgdGhpcy53aGl0ZXNwYWNlSWdub3Jl
ZCA9IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2U7CisKKyAgICBUcmVlRWxlbWVudC5jYWxs
KHRoaXMsIHRpdGxlSW5mby50aXRsZSwgbm9kZSwgdGl0bGVJbmZvLmhhc0NoaWxkcmVuKTsKK30K
KworV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0geworICAgIHVw
ZGF0ZVNlbGVjdGlvbjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGxpc3RJdGVtRWxl
bWVudCA9IHRoaXMubGlzdEl0ZW1FbGVtZW50OworICAgICAgICBpZiAoIWxpc3RJdGVtRWxlbWVu
dCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoZG9jdW1lbnQuYm9keS5vZmZz
ZXRXaWR0aCA8PSAwKSB7CisgICAgICAgICAgICAvLyBUaGUgc3R5bGVzaGVldCBoYXNuJ3QgbG9h
ZGVkIHlldCBvciB0aGUgd2luZG93IGlzIGNsb3NlZCwKKyAgICAgICAgICAgIC8vIHNvIHdlIGNh
bid0IGNhbGN1bGF0ZSB3aGF0IGlzIG5lZWQuIFJldHVybiBlYXJseS4KKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhpcy5zZWxlY3Rpb25FbGVtZW50KSB7
CisgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKKyAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uRWxlbWVudC5jbGFzc05hbWUg
PSAic2VsZWN0aW9uIHNlbGVjdGVkIjsKKyAgICAgICAgICAgIGxpc3RJdGVtRWxlbWVudC5pbnNl
cnRCZWZvcmUodGhpcy5zZWxlY3Rpb25FbGVtZW50LCBsaXN0SXRlbUVsZW1lbnQuZmlyc3RDaGls
ZCk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLnNlbGVjdGlvbkVsZW1lbnQuc3R5bGUuaGVp
Z2h0ID0gbGlzdEl0ZW1FbGVtZW50Lm9mZnNldEhlaWdodCArICJweCI7CisgICAgfSwKKworICAg
IG9uYXR0YWNoOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLm9ubW91c2Vkb3duLmJpbmQodGhp
cyksIGZhbHNlKTsKKworICAgICAgICB0aGlzLl9wcmV2ZW50Rm9sbG93aW5nTGlua3NPbkRvdWJs
ZUNsaWNrKCk7CisgICAgfSwKKworICAgIF9wcmV2ZW50Rm9sbG93aW5nTGlua3NPbkRvdWJsZUNs
aWNrOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgbGlua3MgPSB0aGlzLmxpc3RJdGVt
RWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCJsaSA+IC53ZWJraXQtaHRtbC10YWcgPiAud2Via2l0
LWh0bWwtYXR0cmlidXRlID4gLndlYmtpdC1odG1sLWV4dGVybmFsLWxpbmssIGxpID4gLndlYmtp
dC1odG1sLXRhZyA+IC53ZWJraXQtaHRtbC1hdHRyaWJ1dGUgPiAud2Via2l0LWh0bWwtcmVzb3Vy
Y2UtbGluayIpOworICAgICAgICBpZiAoIWxpbmtzKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlua3MubGVuZ3RoOyArK2kpCisgICAgICAgICAg
ICBsaW5rc1tpXS5wcmV2ZW50Rm9sbG93T25Eb3VibGVDbGljayA9IHRydWU7CisgICAgfSwKKwor
ICAgIG9ucG9wdWxhdGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLmNoaWxk
cmVuLmxlbmd0aCB8fCB0aGlzLndoaXRlc3BhY2VJZ25vcmVkICE9PSBQcmVmZXJlbmNlcy5pZ25v
cmVXaGl0ZXNwYWNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMud2hpdGVz
cGFjZUlnbm9yZWQgPSBQcmVmZXJlbmNlcy5pZ25vcmVXaGl0ZXNwYWNlOworCisgICAgICAgIHRo
aXMudXBkYXRlQ2hpbGRyZW4oKTsKKyAgICB9LAorCisgICAgdXBkYXRlQ2hpbGRyZW46IGZ1bmN0
aW9uKGZ1bGxSZWZyZXNoKQorICAgIHsKKyAgICAgICAgaWYgKGZ1bGxSZWZyZXNoKSB7CisgICAg
ICAgICAgICB2YXIgc2VsZWN0ZWRUcmVlRWxlbWVudCA9IHRoaXMudHJlZU91dGxpbmUuc2VsZWN0
ZWRUcmVlRWxlbWVudDsKKyAgICAgICAgICAgIGlmIChzZWxlY3RlZFRyZWVFbGVtZW50ICYmIHNl
bGVjdGVkVHJlZUVsZW1lbnQuaGFzQW5jZXN0b3IodGhpcykpCisgICAgICAgICAgICAgICAgdGhp
cy5zZWxlY3QoKTsKKyAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAg
fQorCisgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IHRoaXM7CisgICAgICAgIHZhciB0cmVlQ2hp
bGRJbmRleCA9IDA7CisKKyAgICAgICAgZnVuY3Rpb24gdXBkYXRlQ2hpbGRyZW5PZk5vZGUobm9k
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHRyZWVPdXRsaW5lID0gdHJlZUVsZW1lbnQu
dHJlZU91dGxpbmU7CisgICAgICAgICAgICB2YXIgY2hpbGQgPSAoUHJlZmVyZW5jZXMuaWdub3Jl
V2hpdGVzcGFjZSA/IGZpcnN0Q2hpbGRTa2lwcGluZ1doaXRlc3BhY2UuY2FsbChub2RlKSA6IG5v
ZGUuZmlyc3RDaGlsZCk7CisgICAgICAgICAgICB3aGlsZSAoY2hpbGQpIHsKKyAgICAgICAgICAg
ICAgICB2YXIgY3VycmVudFRyZWVFbGVtZW50ID0gdHJlZUVsZW1lbnQuY2hpbGRyZW5bdHJlZUNo
aWxkSW5kZXhdOworICAgICAgICAgICAgICAgIGlmICghY3VycmVudFRyZWVFbGVtZW50IHx8ICFv
YmplY3RzQXJlU2FtZShjdXJyZW50VHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QsIGNoaWxk
KSkgeworICAgICAgICAgICAgICAgICAgICAvLyBGaW5kIGFueSBleGlzdGluZyBlbGVtZW50IHRo
YXQgaXMgbGF0ZXIgaW4gdGhlIGNoaWxkcmVuIGxpc3QuCisgICAgICAgICAgICAgICAgICAgIHZh
ciBleGlzdGluZ1RyZWVFbGVtZW50ID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2
YXIgaSA9ICh0cmVlQ2hpbGRJbmRleCArIDEpOyBpIDwgdHJlZUVsZW1lbnQuY2hpbGRyZW4ubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmplY3RzQXJlU2FtZSh0
cmVlRWxlbWVudC5jaGlsZHJlbltpXS5yZXByZXNlbnRlZE9iamVjdCwgY2hpbGQpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdUcmVlRWxlbWVudCA9IHRyZWVFbGVtZW50
LmNoaWxkcmVuW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGV4aXN0aW5nVHJlZUVsZW1lbnQgJiYgZXhpc3RpbmdUcmVlRWxlbWVudC5w
YXJlbnQgPT09IHRyZWVFbGVtZW50KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBh
biBleGlzdGluZyBlbGVtZW50IHdhcyBmb3VuZCBhbmQgaXQgaGFzIHRoZSBzYW1lIHBhcmVudCwg
anVzdCBtb3ZlIGl0LgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHdhc1NlbGVjdGVkID0g
ZXhpc3RpbmdUcmVlRWxlbWVudC5zZWxlY3RlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRy
ZWVFbGVtZW50LnJlbW92ZUNoaWxkKGV4aXN0aW5nVHJlZUVsZW1lbnQpOworICAgICAgICAgICAg
ICAgICAgICAgICAgdHJlZUVsZW1lbnQuaW5zZXJ0Q2hpbGQoZXhpc3RpbmdUcmVlRWxlbWVudCwg
dHJlZUNoaWxkSW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhc1NlbGVjdGVk
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nVHJlZUVsZW1lbnQuc2VsZWN0
KCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBObyBleGlzdGluZyBlbGVtZW50IGZvdW5kLCBpbnNlcnQgYSBuZXcgZWxlbWVudC4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBuZXdFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5F
bGVtZW50c1RyZWVFbGVtZW50KGNoaWxkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Vs
ZW1lbnQuc2VsZWN0YWJsZSA9IHRyZWVPdXRsaW5lLnNlbGVjdEVuYWJsZWQ7CisgICAgICAgICAg
ICAgICAgICAgICAgICB0cmVlRWxlbWVudC5pbnNlcnRDaGlsZChuZXdFbGVtZW50LCB0cmVlQ2hp
bGRJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBjaGlsZCA9IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UgPyBuZXh0
U2libGluZ1NraXBwaW5nV2hpdGVzcGFjZS5jYWxsKGNoaWxkKSA6IGNoaWxkLm5leHRTaWJsaW5n
OworICAgICAgICAgICAgICAgICsrdHJlZUNoaWxkSW5kZXg7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICAvLyBSZW1vdmUgYW55IHRyZWUgZWxlbWVudHMgdGhhdCBubyBsb25n
ZXIgaGF2ZSB0aGlzIG5vZGUgKG9yIHRoaXMgbm9kZSdzIGNvbnRlbnREb2N1bWVudCkgYXMgdGhl
aXIgcGFyZW50LgorICAgICAgICBmb3IgKHZhciBpID0gKHRoaXMuY2hpbGRyZW4ubGVuZ3RoIC0g
MSk7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAgICBpZiAoImVsZW1lbnRDbG9zZVRhZyIgaW4g
dGhpcy5jaGlsZHJlbltpXSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgdmFyIGN1cnJlbnRDaGlsZCA9IHRoaXMuY2hpbGRyZW5baV07CisgICAgICAgICAgICB2YXIg
Y3VycmVudE5vZGUgPSBjdXJyZW50Q2hpbGQucmVwcmVzZW50ZWRPYmplY3Q7CisgICAgICAgICAg
ICB2YXIgY3VycmVudFBhcmVudE5vZGUgPSBjdXJyZW50Tm9kZS5wYXJlbnROb2RlOworCisgICAg
ICAgICAgICBpZiAob2JqZWN0c0FyZVNhbWUoY3VycmVudFBhcmVudE5vZGUsIHRoaXMucmVwcmVz
ZW50ZWRPYmplY3QpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYg
KHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY29udGVudERvY3VtZW50ICYmIG9iamVjdHNBcmVTYW1l
KGN1cnJlbnRQYXJlbnROb2RlLCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmNvbnRlbnREb2N1bWVu
dCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHZhciBzZWxlY3Rl
ZFRyZWVFbGVtZW50ID0gdGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50OworICAg
ICAgICAgICAgaWYgKHNlbGVjdGVkVHJlZUVsZW1lbnQgJiYgKHNlbGVjdGVkVHJlZUVsZW1lbnQg
PT09IGN1cnJlbnRDaGlsZCB8fCBzZWxlY3RlZFRyZWVFbGVtZW50Lmhhc0FuY2VzdG9yKGN1cnJl
bnRDaGlsZCkpKQorICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCk7CisKKyAgICAgICAgICAg
IHRoaXMucmVtb3ZlQ2hpbGRBdEluZGV4KGkpOworCisgICAgICAgICAgICBpZiAodGhpcy50cmVl
T3V0bGluZS5wYW5lbCAmJiBjdXJyZW50Tm9kZS5jb250ZW50RG9jdW1lbnQpCisgICAgICAgICAg
ICAgICAgdGhpcy50cmVlT3V0bGluZS5wYW5lbC51bnJlZ2lzdGVyTXV0YXRpb25FdmVudExpc3Rl
bmVycyhjdXJyZW50Tm9kZS5jb250ZW50RG9jdW1lbnQuZGVmYXVsdFZpZXcpOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY29udGVudERvY3VtZW50KQor
ICAgICAgICAgICAgdXBkYXRlQ2hpbGRyZW5PZk5vZGUodGhpcy5yZXByZXNlbnRlZE9iamVjdC5j
b250ZW50RG9jdW1lbnQpOworICAgICAgICB1cGRhdGVDaGlsZHJlbk9mTm9kZSh0aGlzLnJlcHJl
c2VudGVkT2JqZWN0KTsKKworICAgICAgICB2YXIgbGFzdENoaWxkID0gdGhpcy5jaGlsZHJlblt0
aGlzLmNoaWxkcmVuLmxlbmd0aCAtIDFdOworICAgICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9i
amVjdC5ub2RlVHlwZSA9PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiAoIWxhc3RDaGlsZCB8fCAhbGFz
dENoaWxkLmVsZW1lbnRDbG9zZVRhZykpIHsKKyAgICAgICAgICAgIHZhciB0aXRsZSA9ICI8c3Bh
biBjbGFzcz1cIndlYmtpdC1odG1sLXRhZyBjbG9zZVwiPiZsdDsvIiArIHRoaXMucmVwcmVzZW50
ZWRPYmplY3Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKS5lc2NhcGVIVE1MKCkgKyAiJmd0Ozwvc3Bh
bj4iOworICAgICAgICAgICAgdmFyIGl0ZW0gPSBuZXcgVHJlZUVsZW1lbnQodGl0bGUsIG51bGws
IGZhbHNlKTsKKyAgICAgICAgICAgIGl0ZW0uc2VsZWN0YWJsZSA9IGZhbHNlOworICAgICAgICAg
ICAgaXRlbS5lbGVtZW50Q2xvc2VUYWcgPSB0cnVlOworICAgICAgICAgICAgdGhpcy5hcHBlbmRD
aGlsZChpdGVtKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBvbmV4cGFuZDogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgdGhpcy50cmVlT3V0bGluZS51cGRhdGVTZWxlY3Rpb24oKTsKKwor
ICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZS5wYW5lbCAmJiB0aGlzLnJlcHJlc2VudGVkT2Jq
ZWN0LmNvbnRlbnREb2N1bWVudCkKKyAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUucGFuZWwu
cmVnaXN0ZXJNdXRhdGlvbkV2ZW50TGlzdGVuZXJzKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY29u
dGVudERvY3VtZW50LmRlZmF1bHRWaWV3KTsKKyAgICB9LAorCisgICAgb25jb2xsYXBzZTogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy50cmVlT3V0bGluZS51cGRhdGVTZWxlY3Rpb24o
KTsKKyAgICB9LAorCisgICAgb25yZXZlYWw6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlm
ICh0aGlzLmxpc3RJdGVtRWxlbWVudCkKKyAgICAgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50
LnNjcm9sbEludG9WaWV3SWZOZWVkZWQoZmFsc2UpOworICAgIH0sCisKKyAgICBvbnNlbGVjdDog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy50cmVlT3V0bGluZS5mb2N1c2VkRE9NTm9k
ZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CisgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0aW9u
KCk7CisgICAgfSwKKworICAgIG9ubW91c2Vkb3duOiBmdW5jdGlvbihldmVudCkKKyAgICB7Cisg
ICAgICAgIGlmICh0aGlzLl9lZGl0aW5nKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IC8vIFByZXZlbnQgc2VsZWN0aW5nIHRoZSBuZWFyZXN0IHdvcmQgb24gZG91YmxlIGNsaWNrLgor
ICAgICAgICBpZiAoZXZlbnQuZGV0YWlsID49IDIpCisgICAgICAgICAgICBldmVudC5wcmV2ZW50
RGVmYXVsdCgpOworICAgIH0sCisKKyAgICBvbmRibGNsaWNrOiBmdW5jdGlvbih0cmVlRWxlbWVu
dCwgZXZlbnQpCisgICAgeworICAgICAgICBpZiAodGhpcy5fZWRpdGluZykKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBpZiAodGhpcy5fc3RhcnRFZGl0aW5nKGV2ZW50KSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZS5wYW5lbCkgewor
ICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5yb290RE9NTm9kZSA9IHRoaXMucGFyZW50LnJl
cHJlc2VudGVkT2JqZWN0OworICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5mb2N1c2VkRE9N
Tm9kZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
dGhpcy5oYXNDaGlsZHJlbiAmJiAhdGhpcy5leHBhbmRlZCkKKyAgICAgICAgICAgIHRoaXMuZXhw
YW5kKCk7CisgICAgfSwKKworICAgIF9zdGFydEVkaXRpbmc6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IHsKKyAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUuZm9jdXNlZERPTU5vZGUgIT0gdGhpcy5y
ZXByZXNlbnRlZE9iamVjdCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodGhp
cy5yZXByZXNlbnRlZE9iamVjdC5ub2RlVHlwZSAhPSBOb2RlLkVMRU1FTlRfTk9ERSAmJiB0aGlz
LnJlcHJlc2VudGVkT2JqZWN0Lm5vZGVUeXBlICE9IE5vZGUuVEVYVF9OT0RFKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHZhciB0ZXh0Tm9kZSA9IGV2ZW50LnRhcmdldC5l
bmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJ3ZWJraXQtaHRtbC10ZXh0LW5vZGUiKTsKKyAg
ICAgICAgaWYgKHRleHROb2RlKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0RWRpdGlu
Z1RleHROb2RlKHRleHROb2RlKTsKKworICAgICAgICB2YXIgYXR0cmlidXRlID0gZXZlbnQudGFy
Z2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoIndlYmtpdC1odG1sLWF0dHJpYnV0ZSIp
OworICAgICAgICBpZiAoYXR0cmlidXRlKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0
RWRpdGluZ0F0dHJpYnV0ZShhdHRyaWJ1dGUsIGV2ZW50KTsKKworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfSwKKworICAgIF9zdGFydEVkaXRpbmdBdHRyaWJ1dGU6IGZ1bmN0aW9uKGF0dHJp
YnV0ZSwgZXZlbnQpCisgICAgeworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmlzQmVpbmdFZGl0
ZWQoYXR0cmlidXRlKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIHZhciBh
dHRyaWJ1dGVOYW1lRWxlbWVudCA9IGF0dHJpYnV0ZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJ3
ZWJraXQtaHRtbC1hdHRyaWJ1dGUtbmFtZSIpWzBdOworICAgICAgICBpZiAoIWF0dHJpYnV0ZU5h
bWVFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHZhciBhdHRy
aWJ1dGVOYW1lID0gYXR0cmlidXRlTmFtZUVsZW1lbnQuaW5uZXJUZXh0OworCisgICAgICAgIGZ1
bmN0aW9uIHJlbW92ZVplcm9XaWR0aFNwYWNlUmVjdXJzaXZlKG5vZGUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkgeworICAgICAg
ICAgICAgICAgIG5vZGUubm9kZVZhbHVlID0gbm9kZS5ub2RlVmFsdWUucmVwbGFjZSgvXHUyMDBC
L2csICIiKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmIChub2RlLm5vZGVUeXBlICE9PSBOb2RlLkVMRU1FTlRfTk9ERSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGZvciAodmFyIGNoaWxkID0gbm9kZS5maXJz
dENoaWxkOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC5uZXh0U2libGluZykKKyAgICAgICAgICAgICAg
ICByZW1vdmVaZXJvV2lkdGhTcGFjZVJlY3Vyc2l2ZShjaGlsZCk7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBSZW1vdmUgemVyby13aWR0aCBzcGFjZXMgdGhhdCB3ZXJlIGFkZGVkIGJ5IG5vZGVU
aXRsZUluZm8uCisgICAgICAgIHJlbW92ZVplcm9XaWR0aFNwYWNlUmVjdXJzaXZlKGF0dHJpYnV0
ZSk7CisKKyAgICAgICAgdGhpcy5fZWRpdGluZyA9IHRydWU7CisKKyAgICAgICAgV2ViSW5zcGVj
dG9yLnN0YXJ0RWRpdGluZyhhdHRyaWJ1dGUsIHRoaXMuX2F0dHJpYnV0ZUVkaXRpbmdDb21taXR0
ZWQuYmluZCh0aGlzKSwgdGhpcy5fZWRpdGluZ0NhbmNlbGxlZC5iaW5kKHRoaXMpLCBhdHRyaWJ1
dGVOYW1lKTsKKyAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQo
ZXZlbnQudGFyZ2V0LCAwLCBldmVudC50YXJnZXQsIDEpOworCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0sCisKKyAgICBfc3RhcnRFZGl0aW5nVGV4dE5vZGU6IGZ1bmN0aW9uKHRleHROb2Rl
KQorICAgIHsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5pc0JlaW5nRWRpdGVkKHRleHROb2Rl
KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIHRoaXMuX2VkaXRpbmcgPSB0
cnVlOworCisgICAgICAgIFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcodGV4dE5vZGUsIHRoaXMu
X3RleHROb2RlRWRpdGluZ0NvbW1pdHRlZC5iaW5kKHRoaXMpLCB0aGlzLl9lZGl0aW5nQ2FuY2Vs
bGVkLmJpbmQodGhpcykpOworICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFu
ZEV4dGVudCh0ZXh0Tm9kZSwgMCwgdGV4dE5vZGUsIDEpOworCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0sCisKKyAgICBfYXR0cmlidXRlRWRpdGluZ0NvbW1pdHRlZDogZnVuY3Rpb24oZWxl
bWVudCwgbmV3VGV4dCwgb2xkVGV4dCwgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIGRl
bGV0ZSB0aGlzLl9lZGl0aW5nOworCisgICAgICAgIHZhciBwYXJzZUNvbnRhaW5lckVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIHBhcnNlQ29udGFpbmVy
RWxlbWVudC5pbm5lckhUTUwgPSAiPHNwYW4gIiArIG5ld1RleHQgKyAiPjwvc3Bhbj4iOworICAg
ICAgICB2YXIgcGFyc2VFbGVtZW50ID0gcGFyc2VDb250YWluZXJFbGVtZW50LmZpcnN0Q2hpbGQ7
CisgICAgICAgIGlmICghcGFyc2VFbGVtZW50IHx8ICFwYXJzZUVsZW1lbnQuaGFzQXR0cmlidXRl
cygpKSB7CisgICAgICAgICAgICBlZGl0aW5nQ2FuY2VsbGVkKGVsZW1lbnQsIGNvbnRleHQpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGZvdW5kT3JpZ2lu
YWxBdHRyaWJ1dGUgPSBmYWxzZTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJzZUVs
ZW1lbnQuYXR0cmlidXRlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGF0dHIgPSBw
YXJzZUVsZW1lbnQuYXR0cmlidXRlc1tpXTsKKyAgICAgICAgICAgIGZvdW5kT3JpZ2luYWxBdHRy
aWJ1dGUgPSBmb3VuZE9yaWdpbmFsQXR0cmlidXRlIHx8IGF0dHIubmFtZSA9PT0gYXR0cmlidXRl
TmFtZTsKKyAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuaW5zcGVjdGVkV2luZG93KCku
RWxlbWVudC5wcm90b3R5cGUuc2V0QXR0cmlidXRlLmNhbGwodGhpcy5yZXByZXNlbnRlZE9iamVj
dCwgYXR0ci5uYW1lLCBhdHRyLnZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZm91
bmRPcmlnaW5hbEF0dHJpYnV0ZSkKKyAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuaW5z
cGVjdGVkV2luZG93KCkuRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlLmNhbGwodGhp
cy5yZXByZXNlbnRlZE9iamVjdCwgYXR0cmlidXRlTmFtZSk7CisKKyAgICAgICAgdGhpcy5fdXBk
YXRlVGl0bGUoKTsKKyAgICAgICAgdGhpcy50cmVlT3V0bGluZS5vbkZvY3VzZWROb2RlQ2hhbmdl
ZCh0cnVlKTsKKyAgICB9LAorCisgICAgX3RleHROb2RlRWRpdGluZ0NvbW1pdHRlZDogZnVuY3Rp
b24oZWxlbWVudCwgbmV3VGV4dCkKKyAgICB7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9lZGl0aW5n
OworCisgICAgICAgIHZhciB0ZXh0Tm9kZTsKKyAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRP
YmplY3Qubm9kZVR5cGUgPT0gTm9kZS5FTEVNRU5UX05PREUpIHsKKyAgICAgICAgICAgIC8vIFdl
IG9ubHkgc2hvdyB0ZXh0IG5vZGVzIGlubGluZSBpbiBlbGVtZW50cyBpZiB0aGUgZWxlbWVudCBv
bmx5CisgICAgICAgICAgICAvLyBoYXMgYSBzaW5nbGUgY2hpbGQsIGFuZCB0aGF0IGNoaWxkIGlz
IGEgdGV4dCBub2RlLgorICAgICAgICAgICAgdGV4dE5vZGUgPSB0aGlzLnJlcHJlc2VudGVkT2Jq
ZWN0LmZpcnN0Q2hpbGQ7CisgICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVj
dC5ub2RlVHlwZSA9PSBOb2RlLlRFWFRfTk9ERSkKKyAgICAgICAgICAgIHRleHROb2RlID0gdGhp
cy5yZXByZXNlbnRlZE9iamVjdDsKKworICAgICAgICB0ZXh0Tm9kZS5ub2RlVmFsdWUgPSBuZXdU
ZXh0OworICAgICAgICB0aGlzLl91cGRhdGVUaXRsZSgpOworICAgIH0sCisKKyAgICBfZWRpdGlu
Z0NhbmNlbGxlZDogZnVuY3Rpb24oZWxlbWVudCwgY29udGV4dCkKKyAgICB7CisgICAgICAgIGRl
bGV0ZSB0aGlzLl9lZGl0aW5nOworCisgICAgICAgIHRoaXMuX3VwZGF0ZVRpdGxlKCk7CisgICAg
fSwKKworICAgIF91cGRhdGVUaXRsZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy50
aXRsZSA9IG5vZGVUaXRsZUluZm8uY2FsbCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LCB0aGlzLmhh
c0NoaWxkcmVuLCBXZWJJbnNwZWN0b3IubGlua2lmeVVSTCkudGl0bGU7CisgICAgICAgIGRlbGV0
ZSB0aGlzLnNlbGVjdGlvbkVsZW1lbnQ7CisgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uKCk7
CisgICAgICAgIHRoaXMuX3ByZXZlbnRGb2xsb3dpbmdMaW5rc09uRG91YmxlQ2xpY2soKTsKKyAg
ICB9LAorfQorCitXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuX19w
cm90b19fID0gVHJlZUVsZW1lbnQucHJvdG90eXBlOwpJbmRleDogV2ViQ29yZS9wYWdlL2luc3Bl
Y3Rvci9XZWJLaXQucXJjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9pbnNwZWN0b3IvV2Vi
S2l0LnFyYwkocmV2aXNpb24gMzYwNTQpCisrKyBXZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL1dlYktp
dC5xcmMJKHdvcmtpbmcgY29weSkKQEAgLTEwLDYgKzEwLDcgQEAKICAgICA8ZmlsZT5EYXRhYmFz
ZVRhYmxlVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5EYXRhR3JpZC5qczwvZmlsZT4KICAgICA8
ZmlsZT5FbGVtZW50c1BhbmVsLmpzPC9maWxlPgorICAgIDxmaWxlPkVsZW1lbnRzVHJlZU91dGxp
bmUuanM8L2ZpbGU+CiAgICAgPGZpbGU+Rm9udFZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+SW1h
Z2VWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPmluc3BlY3Rvci5jc3M8L2ZpbGU+CkluZGV4OiBX
ZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL2luc3BlY3Rvci5jc3MKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL2luc3BlY3Rvci9pbnNwZWN0b3IuY3NzCShyZXZpc2lvbiAzNjA1NCkKKysrIFdlYkNv
cmUvcGFnZS9pbnNwZWN0b3IvaW5zcGVjdG9yLmNzcwkod29ya2luZyBjb3B5KQpAQCAtOTM2LDcg
KzkzNiw3IEBAIGJvZHkuY29uc29sZS12aXNpYmxlICNjb25zb2xlIHsKICAgICB0ZXh0LWluZGVu
dDogLTEycHgKIH0KIAotLmVsZW1lbnRzLnBhbmVsIC5vdXRsaW5lLWRpc2Nsb3N1cmUgbGkgLndl
YmtpdC1odG1sLXRhZy5jbG9zZSB7Cisub3V0bGluZS1kaXNjbG9zdXJlIGxpIC53ZWJraXQtaHRt
bC10YWcuY2xvc2UgewogICAgIG1hcmdpbi1sZWZ0OiAtMTJweDsKIH0KIApJbmRleDogV2ViQ29y
ZS9wYWdlL2luc3BlY3Rvci9pbnNwZWN0b3IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvaW5zcGVjdG9yL2luc3BlY3Rvci5odG1sCShyZXZpc2lvbiAzNjA1NCkKKysrIFdlYkNvcmUv
cGFnZS9pbnNwZWN0b3IvaW5zcGVjdG9yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1
LDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQTwogICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNjcmlwdC5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQnJlYWtwb2ludC5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU2lkZWJhclBhbmUu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkVs
ZW1lbnRzVHJlZU91dGxpbmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IlNpZGViYXJUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUHJvcGVydGllc1NlY3Rpb24uanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ik9iamVjdFBy
b3BlcnRpZXNTZWN0aW9uLmpzIj48L3NjcmlwdD4KSW5kZXg6IFdlYkNvcmUvcGFnZS9pbnNwZWN0
b3IvaW5zcGVjdG9yLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9pbnNwZWN0b3IvaW5z
cGVjdG9yLmpzCShyZXZpc2lvbiAzNjA1NCkKKysrIFdlYkNvcmUvcGFnZS9pbnNwZWN0b3IvaW5z
cGVjdG9yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw5IEBAIHZhciBXZWJJbnNwZWN0
b3IgPSB7CiAgICAgcmVzb3VyY2VVUkxNYXA6IHt9LAogICAgIHNlYXJjaFJlc3VsdHNIZWlnaHQ6
IDEwMCwKICAgICBtaXNzaW5nTG9jYWxpemVkU3RyaW5nczoge30sCisgICAgX2FsdEtleURvd246
IGZhbHNlLAorICAgIF9mb3JjZUhvdmVySGlnaGxpZ2h0OiBmYWxzZSwKKyAgICBfaG92ZXJlZERP
TU5vZGU6IG51bGwsCiAKICAgICBnZXQgcHJldmlvdXNGb2N1c0VsZW1lbnQoKQogICAgIHsKQEAg
LTI1NSw3ICsyNTgsODEgQEAgdmFyIFdlYkluc3BlY3RvciA9IHsKICAgICAgICAgICAgIGVycm9y
V2FybmluZ0VsZW1lbnQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVkIHdhcm5pbmdz
IiwgdGhpcy53YXJuaW5ncyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGVycm9yV2Fybmlu
Z0VsZW1lbnQudGl0bGUgPSBudWxsOwotICAgIH0KKyAgICB9LAorCisgICAgZ2V0IGFsdEtleURv
d24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2FsdEtleURvd247CisgICAgfSwKKwor
ICAgIHNldCBhbHRLZXlEb3duKHgpCisgICAgeworICAgICAgICBpZiAodGhpcy5fYWx0S2V5RG93
biA9PT0geCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9hbHRLZXlEb3du
ID0geDsKKworICAgICAgICBpZiAodGhpcy5fYWx0S2V5RG93bikKKyAgICAgICAgICAgIHRoaXMu
X3VwZGF0ZUhvdmVySGlnaGxpZ2h0U29vbigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0
aGlzLl91cGRhdGVIb3ZlckhpZ2hsaWdodCgpOworICAgIH0sCisKKyAgICBnZXQgZm9yY2VIb3Zl
ckhpZ2hsaWdodCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZm9yY2VIb3ZlckhpZ2hs
aWdodDsKKyAgICB9LAorCisgICAgc2V0IGZvcmNlSG92ZXJIaWdobGlnaHQoeCkKKyAgICB7Cisg
ICAgICAgIGlmICh0aGlzLl9mb3JjZUhvdmVySGlnaGxpZ2h0ID09PSB4KQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHRoaXMuX2ZvcmNlSG92ZXJIaWdobGlnaHQgPSB4OworCisgICAg
ICAgIGlmICh0aGlzLl9mb3JjZUhvdmVySGlnaGxpZ2h0KQorICAgICAgICAgICAgdGhpcy5fdXBk
YXRlSG92ZXJIaWdobGlnaHRTb29uKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMu
X3VwZGF0ZUhvdmVySGlnaGxpZ2h0KCk7CisgICAgfSwKKworICAgIGdldCBob3ZlcmVkRE9NTm9k
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5faG92ZXJlZERPTU5vZGU7CisgICAgfSwK
KworICAgIHNldCBob3ZlcmVkRE9NTm9kZSh4KQorICAgIHsKKyAgICAgICAgaWYgKG9iamVjdHNB
cmVTYW1lKHRoaXMuX2hvdmVyZWRET01Ob2RlLCB4KSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICB0aGlzLl9ob3ZlcmVkRE9NTm9kZSA9IHg7CisKKyAgICAgICAgaWYgKHRoaXMuX2hv
dmVyZWRET01Ob2RlKQorICAgICAgICAgICAgdGhpcy5fdXBkYXRlSG92ZXJIaWdobGlnaHRTb29u
KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUhvdmVySGlnaGxpZ2h0
KCk7CisgICAgfSwKKyAgICAKKyAgICBfdXBkYXRlSG92ZXJIaWdobGlnaHRTb29uOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICBpZiAoIl91cGRhdGVIb3ZlckhpZ2hsaWdodFRpbWVvdXQiIGlu
IHRoaXMpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX3VwZGF0ZUhvdmVySGln
aGxpZ2h0VGltZW91dCA9IHNldFRpbWVvdXQodGhpcy5fdXBkYXRlSG92ZXJIaWdobGlnaHQuYmlu
ZCh0aGlzKSwgMCk7CisgICAgfSwKKyAgICAKKyAgICBfdXBkYXRlSG92ZXJIaWdobGlnaHQ6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICgiX3VwZGF0ZUhvdmVySGlnaGxpZ2h0VGltZW91
dCIgaW4gdGhpcykgeworICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZUhvdmVy
SGlnaGxpZ2h0VGltZW91dCk7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fdXBkYXRlSG92ZXJI
aWdobGlnaHRUaW1lb3V0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuX2hvdmVyZWRE
T01Ob2RlICYmICh0aGlzLl9hbHRLZXlEb3duIHx8IHRoaXMuZm9yY2VIb3ZlckhpZ2hsaWdodCkp
CisgICAgICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLmhpZ2hsaWdodERPTU5vZGUodGhpcy5f
aG92ZXJlZERPTU5vZGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBJbnNwZWN0b3JDb250
cm9sbGVyLmhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7CisgICAgfSwKIH0KIAogV2ViSW5zcGVjdG9y
LmxvYWRlZCA9IGZ1bmN0aW9uKCkKQEAgLTQ3OCwxMiArNTU1LDE4IEBAIFdlYkluc3BlY3Rvci5k
b2N1bWVudEtleURvd24gPSBmdW5jdGlvbigKICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJl
dmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlICJBbHQiOgorICAgICAgICAgICAgICAgIHRoaXMuYWx0S2V5RG93
biA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgfQogICAgIH0KIH0KIAog
V2ViSW5zcGVjdG9yLmRvY3VtZW50S2V5VXAgPSBmdW5jdGlvbihldmVudCkKIHsKKyAgICBpZiAo
IWV2ZW50LmhhbmRsZWQgJiYgZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIkFsdCIpCisgICAgICAg
IHRoaXMuYWx0S2V5RG93biA9IGZhbHNlOworCiAgICAgaWYgKCF0aGlzLmN1cnJlbnRGb2N1c0Vs
ZW1lbnQgfHwgIXRoaXMuY3VycmVudEZvY3VzRWxlbWVudC5oYW5kbGVLZXlVcEV2ZW50KQogICAg
ICAgICByZXR1cm47CiAgICAgdGhpcy5jdXJyZW50Rm9jdXNFbGVtZW50LmhhbmRsZUtleVVwRXZl
bnQoZXZlbnQpOwpAQCAtODk4LDcgKzk4MSw3IEBAIFdlYkluc3BlY3Rvci51cGRhdGVGb2N1c2Vk
Tm9kZSA9IGZ1bmN0aW8KICAgICAgICAgcmV0dXJuOwogCiAgICAgdGhpcy5jdXJyZW50UGFuZWwg
PSB0aGlzLnBhbmVscy5lbGVtZW50czsKLSAgICB0aGlzLnBhbmVscy5lbGVtZW50cy5mb2N1c2Vk
RE9NTm9kZSA9IG5vZGU7CisgICAgdGhpcy5wYW5lbHMuZWxlbWVudHMudHJlZU91dGxpbmUuZm9j
dXNlZERPTU5vZGUgPSBub2RlOwogfQogCiBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwg
PSBmdW5jdGlvbih1cmwpCkBAIC0xMTM5LDcgKzEyMjIsNyBAQCBXZWJJbnNwZWN0b3IucGVyZm9y
bVNlYXJjaCA9IGZ1bmN0aW9uKGV2CiAgICAgICAgIHRoaXMuY3VycmVudFBhbmVsID0gdGhpcy5w
YW5lbHMuZWxlbWVudHM7CiAgICAgICAgIHRoaXMuY3VycmVudEZvY3VzRWxlbWVudCA9IG9sZEZv
Y3VzRWxlbWVudDsKIAotICAgICAgICB0aGlzLnBhbmVscy5lbGVtZW50cy5mb2N1c2VkRE9NTm9k
ZSA9IGVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3Qubm9kZTsKKyAgICAgICAgdGhpcy5wYW5lbHMu
ZWxlbWVudHMudHJlZU91dGxpbmUuZm9jdXNlZERPTU5vZGUgPSBlbGVtZW50LnJlcHJlc2VudGVk
T2JqZWN0Lm5vZGU7CiAgICAgICAgIGVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LnNjcm9sbEludG9W
aWV3SWZOZWVkZWQoZmFsc2UpOwogICAgIH0KIApJbmRleDogV2ViQ29yZS9wYWdlL2luc3BlY3Rv
ci91dGlsaXRpZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL2luc3BlY3Rvci91dGls
aXRpZXMuanMJKHJldmlzaW9uIDM2MDU0KQorKysgV2ViQ29yZS9wYWdlL2luc3BlY3Rvci91dGls
aXRpZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTg0MSw2ICs4NDEsMjcgQEAgZnVuY3Rpb24gbm9k
ZVRpdGxlSW5mbyhoYXNDaGlsZHJlbiwgbGluawogICAgIHJldHVybiBpbmZvOwogfQogCitmdW5j
dGlvbiBnZXREb2N1bWVudEZvck5vZGUobm9kZSkgeworICAgIHJldHVybiBub2RlLm5vZGVUeXBl
ID09IE5vZGUuRE9DVU1FTlRfTk9ERSA/IG5vZGUgOiBub2RlLm93bmVyRG9jdW1lbnQ7Cit9CisK
K2Z1bmN0aW9uIHBhcmVudE5vZGVPckZyYW1lRWxlbWVudChub2RlKSB7CisgICAgdmFyIHBhcmVu
dCA9IG5vZGUucGFyZW50Tm9kZTsKKyAgICBpZiAocGFyZW50KQorICAgICAgICByZXR1cm4gcGFy
ZW50OworCisgICAgcmV0dXJuIGdldERvY3VtZW50Rm9yTm9kZShub2RlKS5kZWZhdWx0Vmlldy5m
cmFtZUVsZW1lbnQ7Cit9CisKK2Z1bmN0aW9uIGlzQW5jZXN0b3JJbmNsdWRpbmdQYXJlbnRGcmFt
ZXMoYSwgYikgeworICAgIGlmIChvYmplY3RzQXJlU2FtZShhLCBiKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGZvciAodmFyIG5vZGUgPSBiOyBub2RlOyBub2RlID0gZ2V0RG9jdW1lbnRG
b3JOb2RlKG5vZGUpLmRlZmF1bHRWaWV3LmZyYW1lRWxlbWVudCkKKyAgICAgICAgaWYgKG9iamVj
dHNBcmVTYW1lKGEsIG5vZGUpIHx8IGlzQW5jZXN0b3JOb2RlLmNhbGwoYSwgbm9kZSkpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIE51bWJlci5zZWNv
bmRzVG9TdHJpbmcgPSBmdW5jdGlvbihzZWNvbmRzLCBmb3JtYXR0ZXJGdW5jdGlvbiwgaGlnaGVy
UmVzb2x1dGlvbikKIHsKICAgICBpZiAoIWZvcm1hdHRlckZ1bmN0aW9uKQo=
</data>
<flag name="review"
          id="10343"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>