<?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>110960</bug_id>
          
          <creation_ts>2013-02-27 02:06:20 -0800</creation_ts>
          <short_desc>Web Inspector: [Protocol] Turn SecurityOrigin into an object containing &quot;domainSetInDOM&quot;</short_desc>
          <delta_ts>2013-03-03 23:44:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>111165</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>dglazkov</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rego+ews</cc>
    
    <cc>timothy</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>842858</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2013-02-27 02:06:20 -0800</bug_when>
    <thetext>A document.setDomain() invocation modifies the associated SecurityOrigin, so equals() no longer works against a SecurityOrigin that has been created from the same string but without the domain set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842866</commentid>
    <comment_count>1</comment_count>
      <attachid>190474</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2013-02-27 02:22:22 -0800</bug_when>
    <thetext>Created attachment 190474
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843871</commentid>
    <comment_count>2</comment_count>
      <attachid>190474</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-02-28 01:32:40 -0800</bug_when>
    <thetext>Comment on attachment 190474
Patch

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

&gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:641
&gt; +    if (!frame)

It is odd that frame nullity check is only present here, not in requestDatabaseNames and requestData.
Looks like findFrameWithSecurityOrigin call actually belongs to assertDocument method that should not set any value to errorString as discussed offline.

&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:981
&gt; +    if (errorString)

I would remove this: it is pretty clear that the frame was not found from the return value and we have decided that we don&apos;t need this kind of messages on front-end anyway.
Let&apos;s keep &quot;Invalid security origin&quot; message only.

&gt; Source/WebCore/inspector/InspectorPageAgent.h:164
&gt; +    void securityOriginChanged(Frame*, SecurityOrigin*);

I don&apos;t see neither calls nor implementation of this method. Did you mean to put it into another patch?

&gt; Source/WebCore/inspector/front-end/ResourceTreeModel.js:669
&gt; +    var object = JSON.parse(id);

I think ResourceTreeModel should assign ids to security origin and keep track of them providing securityOriginForId and securityOriginForUrlAndDomainSetInDOM getters instead of using JSON.parse/stringify methods.

&gt; Source/WebCore/inspector/front-end/ResourceTreeModel.js:677
&gt; +    get id()

please use functions instead of getters and setters.

&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:1888
&gt; +    if (origin.url === &quot;file://&quot;)

You should extract this logic, put it into SecurityOrigin object and reuse for file systems and IndexedDB</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844075</commentid>
    <comment_count>3</comment_count>
      <attachid>190727</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2013-02-28 07:51:39 -0800</bug_when>
    <thetext>Created attachment 190727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844082</commentid>
    <comment_count>4</comment_count>
      <attachid>190727</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-28 08:01:07 -0800</bug_when>
    <thetext>Comment on attachment 190727
Patch

Attachment 190727 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/16782410</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844085</commentid>
    <comment_count>5</comment_count>
      <attachid>190727</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-28 08:02:40 -0800</bug_when>
    <thetext>Comment on attachment 190727
Patch

Attachment 190727 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/16768770</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844090</commentid>
    <comment_count>6</comment_count>
      <attachid>190731</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2013-02-28 08:11:57 -0800</bug_when>
    <thetext>Created attachment 190731
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844217</commentid>
    <comment_count>7</comment_count>
      <attachid>190731</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-28 10:44:29 -0800</bug_when>
    <thetext>Comment on attachment 190731
Patch

Attachment 190731 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/16795251

New failing tests:
inspector/extensions/extensions-eval-content-script.html
inspector/extensions/extensions-audits-content-script.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844302</commentid>
    <comment_count>8</comment_count>
      <attachid>190731</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-28 11:46:33 -0800</bug_when>
    <thetext>Comment on attachment 190731
Patch

Attachment 190731 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/16792090

New failing tests:
inspector/extensions/extensions-eval-content-script.html
inspector/extensions/extensions-audits-content-script.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845035</commentid>
    <comment_count>9</comment_count>
      <attachid>190926</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2013-03-01 03:50:15 -0800</bug_when>
    <thetext>Created attachment 190926
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845038</commentid>
    <comment_count>10</comment_count>
      <attachid>190926</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-03-01 04:00:08 -0800</bug_when>
    <thetext>Comment on attachment 190926
Patch

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

&gt; Source/WebCore/inspector/front-end/ResourceTreeModel.js:392
&gt; +WebInspector.ResourceTreeModel.SecurityOriginTracker = function(model)

Let&apos;s extract SecurityOriginTracker related rafactoring from this patch.

&gt; Source/WebCore/inspector/front-end/ResourceTreeModel.js:469
&gt; +        return origin || null;

securityOrigin is never null at this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845056</commentid>
    <comment_count>11</comment_count>
      <attachid>190932</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2013-03-01 04:27:58 -0800</bug_when>
    <thetext>Created attachment 190932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845072</commentid>
    <comment_count>12</comment_count>
      <attachid>190932</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-03-01 04:50:04 -0800</bug_when>
    <thetext>Comment on attachment 190932
Patch

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

&gt; Source/WebCore/inspector/InspectorFileSystemAgent.cpp:644
&gt; +    ScriptExecutionContext* scriptExecutionContext = assertScriptExecutionContextForOrigin(error, securityOrigin.get());

Looks like all assertScriptExecutionContextForOrigin calls should be replaced with findFrameForOrigin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845101</commentid>
    <comment_count>13</comment_count>
      <attachid>190932</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-03-01 05:37:28 -0800</bug_when>
    <thetext>Comment on attachment 190932
Patch

As discussed let&apos;s extract SecurityOriginTracker in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845178</commentid>
    <comment_count>14</comment_count>
      <attachid>190932</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2013-03-01 07:52:19 -0800</bug_when>
    <thetext>Comment on attachment 190932
Patch

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

&gt; Source/WebCore/inspector/Inspector.json:123
&gt; +                    { &quot;name&quot;: &quot;securityOrigin&quot;, &quot;$ref&quot;: &quot;SecurityOrigin&quot;, &quot;description&quot;: &quot;Frame document&apos;s security origin.&quot; },

domainSetInDOM which you add to SecurityOrigin may change at arbitrary moment, right? Should it really be a property we keep in ResourceTreeModel? Other frame properties do not update unless navigation happens, and we do not seem to introduce a notification that will let front-end keep domainSetInDOM up to date. So this field is basically going to have value that does not necessarily match the reality in back-end.

&gt; Source/WebCore/inspector/front-end/ExtensionAuditCategory.js:34
&gt; + * @param {WebInspector.SecurityOrigin} extensionOrigin

I don&apos;t think that&apos;s right.

&gt; Source/WebCore/inspector/front-end/ExtensionServer.js:698
&gt; +    /**
&gt; +     * @param {Event} event
&gt; +     */

This patch is already quite big, could you please extract the &quot;add missing annotations&quot; part as a separate patch?

&gt; Source/WebCore/inspector/front-end/ResourceTreeModel.js:202
&gt; +        return this._securityOriginsById[id] || null;

why is &quot;|| null&quot; necessary?

&gt; Source/WebCore/inspector/front-end/ResourceTreeModel.js:218
&gt; +        return Object.keys(this._securityOriginFrameCount).map(converter.bind(this));

why not Object.values(this._securityOriginsById)?

&gt; Source/WebCore/inspector/front-end/RuntimeModel.js:417
&gt; +     * @param {WebInspector.SecurityOrigin} securityOrigin

This function used to use securityOrigin to identify the isolated world within the frame, and string was good for that. Now you pass the object that isn&apos;t really good for identification, as one of its field may change. We still only use securityOrigin.url() for actual matching, which is good -- but why not just pass that string directly as a function argument. The same applies for other location where securityOrigin is used for identification, rather than for access control.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845182</commentid>
    <comment_count>15</comment_count>
      <attachid>190932</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2013-03-01 08:01:39 -0800</bug_when>
    <thetext>Comment on attachment 190932
Patch

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

&gt;&gt; Source/WebCore/inspector/Inspector.json:123
&gt;&gt; +                    { &quot;name&quot;: &quot;securityOrigin&quot;, &quot;$ref&quot;: &quot;SecurityOrigin&quot;, &quot;description&quot;: &quot;Frame document&apos;s security origin.&quot; },
&gt; 
&gt; domainSetInDOM which you add to SecurityOrigin may change at arbitrary moment, right? Should it really be a property we keep in ResourceTreeModel? Other frame properties do not update unless navigation happens, and we do not seem to introduce a notification that will let front-end keep domainSetInDOM up to date. So this field is basically going to have value that does not necessarily match the reality in back-end.

Please see https://bugs.webkit.org/show_bug.cgi?id=110855. I&apos;ve got a patch pending all these SecurityOrigin changes.

&gt;&gt; Source/WebCore/inspector/front-end/ExtensionAuditCategory.js:34
&gt;&gt; + * @param {WebInspector.SecurityOrigin} extensionOrigin
&gt; 
&gt; I don&apos;t think that&apos;s right.

Sorry, it didn&apos;t get caught by the compiler :( Will revert in the master patch.

&gt;&gt; Source/WebCore/inspector/front-end/ExtensionServer.js:698
&gt;&gt; +     */
&gt; 
&gt; This patch is already quite big, could you please extract the &quot;add missing annotations&quot; part as a separate patch?

All this was reverted.

&gt;&gt; Source/WebCore/inspector/front-end/ResourceTreeModel.js:202
&gt;&gt; +        return this._securityOriginsById[id] || null;
&gt; 
&gt; why is &quot;|| null&quot; necessary?

In order to stay consistent with the JsDoc (otherwise we&apos;d have to write {...|undefined}).

&gt;&gt; Source/WebCore/inspector/front-end/ResourceTreeModel.js:218
&gt;&gt; +        return Object.keys(this._securityOriginFrameCount).map(converter.bind(this));
&gt; 
&gt; why not Object.values(this._securityOriginsById)?

Good point.

&gt;&gt; Source/WebCore/inspector/front-end/RuntimeModel.js:417
&gt;&gt; +     * @param {WebInspector.SecurityOrigin} securityOrigin
&gt; 
&gt; This function used to use securityOrigin to identify the isolated world within the frame, and string was good for that. Now you pass the object that isn&apos;t really good for identification, as one of its field may change. We still only use securityOrigin.url() for actual matching, which is good -- but why not just pass that string directly as a function argument. The same applies for other location where securityOrigin is used for identification, rather than for access control.

You are right, this was reverted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846174</commentid>
    <comment_count>16</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2013-03-03 23:44:01 -0800</bug_when>
    <thetext>For the goals of storage-related tasks in Web Inspector, string-based comparison of SecurityOrigins works fine, since the domainSetInDOM field is disregarded for storage.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190474</attachid>
            <date>2013-02-27 02:22:22 -0800</date>
            <delta_ts>2013-02-28 07:51:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110960-20130227141835.patch</filename>
            <type>text/plain</type>
            <size>61833</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGFhOGFhZTUwN2U0MzE2
OTk5YWRhODAwY2FiOTJmZTI2MzI0MTg2NC4uYzM0MzQzZjk2MzI0ODk1YzE0ZmUwODkzYjg4Zjdi
MDBjYTA2NGUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDEzLTAyLTI3ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW1Byb3RvY29sXSBUdXJuIFNlY3VyaXR5T3JpZ2luIGludG8gYW4gb2JqZWN0IGNvbnRh
aW5pbmcgImRvbWFpblNldEluRE9NIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTEwOTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlIHJlbGF0ZWQgY29kZSBoYXMgYmVlbiBjaGFuZ2VkIHRvIGhhbmRs
ZSBTZWN1cml0eU9yaWdpbiBhcyBhbiBJbnNwZWN0b3JPYmplY3QgcmF0aGVyIHRoYW4gYSBTdHJp
bmcuCisgICAgICAgIFdoZXJlIGFwcGxpY2FibGUsIHRoZSBVSSBjb2RlIGhhcyBiZWVuIGNoYW5n
ZWQgdG8gdXNlIHNlY3VyaXR5T3JpZ2luLnVybCBhcyBpdHMgdmlzdWFsIHJlcHJlc2VudGF0aW9u
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOiBJbnRyb2R1Y2UgUGFnZS5TZWN1cml0eU9yaWdp
bi4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcDogRm9s
bG93IHRoZSBwcm90b2NvbCBjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQ6OnN0b3JhZ2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQ6OmZpbmRTdG9yYWdlQXJlYSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudC5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0RmlsZVN5c3RlbVJvb3QpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2VOYW1lcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGFiYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUGFnZUFnZW50OjppbnNwZWN0b3JPYmplY3RUb1NlY3VyaXR5T3JpZ2luKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2VjdXJpdHlPcmlnaW5Ub0luc3Bl
Y3Rvck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmZpbmRG
cmFtZVdpdGhTZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdl
QWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2Uu
anM6IERpdHRvLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2Uuc3RvcmFnZUlkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlTW9kZWwucHJvdG90eXBlLl9zZWN1cml0
eU9yaWdpbkFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlTW9kZWwucHJv
dG90eXBlLl9zZWN1cml0eU9yaWdpblJlbW92ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzOiBEaXR0by4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLl9yZXNldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZS5fc2VjdXJpdHlPcmlnaW5BZGRlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZS5fc2VjdXJpdHlPcmlnaW5S
ZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBl
Ll9hZGRPcmlnaW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90
b3R5cGUuX3JlbW92ZU9yaWdpbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1v
ZGVsLnByb3RvdHlwZS5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLl9maWxlU3lzdGVtUm9vdFJlY2VpdmVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLl9yZW1vdmVG
aWxlU3lzdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5
c3RlbS5wcm90b3R5cGUuZ2V0IG5hbWUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
SW5kZXhlZERCTW9kZWwuanM6IERpdHRvLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWRE
Qk1vZGVsLnByb3RvdHlwZS5fcmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWRE
Qk1vZGVsLnByb3RvdHlwZS5yZWZyZXNoRGF0YWJhc2VOYW1lcyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlLl9zZWN1cml0eU9yaWdpbkFkZGVkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUuX3NlY3VyaXR5T3Jp
Z2luUmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90
eXBlLl9hZGRPcmlnaW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnBy
b3RvdHlwZS5fcmVtb3ZlT3JpZ2luKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJN
b2RlbC5wcm90b3R5cGUuX3VwZGF0ZU9yaWdpbkRhdGFiYXNlTmFtZXMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZS5fbG9hZERhdGFiYXNlTmFtZXMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZS5fbG9hZERhdGFi
YXNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUuKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUuX3JlcXVlc3RE
YXRhKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5EYXRhYmFzZUlkLnBy
b3RvdHlwZS5lcXVhbHMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VU
cmVlTW9kZWwuanM6IERpdHRvLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1v
ZGVsLnByb3RvdHlwZS5fYWRkU2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZS5fcmVtb3ZlU2VjdXJpdHlPcmlnaW4pOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZS5zZWN1cml0eU9y
aWdpbnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lLnByb3RvdHlw
ZS5fbmF2aWdhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2luLmZyb21J
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4ucHJvdG90eXBlLmdldCBp
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4ucHJvdG90eXBlLmdldCB1
cmwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2luLnByb3RvdHlwZS5nZXQg
ZG9tYWluU2V0SW5ET00pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2luLnBy
b3RvdHlwZS5lcXVhbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4ucHJv
dG90eXBlLnRvUHJvdG9jb2wpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3Vy
Y2VzUGFuZWwuanM6IERpdHRvLgorICAgICAgICAoV2ViSW5zcGVjdG9yLklEQkRhdGFiYXNlVHJl
ZUVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLklEQkRhdGFiYXNlVHJlZUVsZW1lbnQu
cHJvdG90eXBlLmdldCBpdGVtVVJMKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JREJPYmplY3RT
dG9yZVRyZWVFbGVtZW50LnByb3RvdHlwZS5nZXQgaXRlbVVSTCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSURCSW5kZXhUcmVlRWxlbWVudC5wcm90b3R5cGUuZ2V0IGl0ZW1VUkwpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VUcmVlRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRE9NU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZS5nZXQgaXRlbVVSTCk6CisKIDIw
MTMtMDItMjYgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtWOF0gUmVtb3ZlIEV2ZW50OjpkYXRhVHJhbnNmZXJBdHRyR2V0dGVyQ3VzdG9tKCkgYW5kIEV2
ZW50Ojp2YWx1ZUF0dHJTZXR0ZXJDdXN0b20oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5qc29uCmluZGV4IDNlZDMxMTc0YzNkMGE2MTkwNmI2MWU2NDg5MGRmYTVhNDU0MTg3NWEu
LjBlNTc3NzRjNzZkZGVjYWUxNTc4MzY1MGU0ZjNlMTI5ZjQ4YWExMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTEwMiw2ICsxMDIsMTUgQEAKICAgICAgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVzb3VyY2UgdHlwZSBhcyBpdCB3YXMgcGVyY2VpdmVk
IGJ5IHRoZSByZW5kZXJpbmcgZW5naW5lLiIKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgImlkIjogIlNlY3VyaXR5T3JpZ2luIiwKKyAgICAgICAgICAgICAg
ICAidHlwZSI6ICJvYmplY3QiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEZXNj
cmlwdG9yIG9mIHRoZSBTZWN1cml0eU9yaWdpbiBvYmplY3QuIiwKKyAgICAgICAgICAgICAgICAi
cHJvcGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlw
ZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiQXNzb2NpYXRlZCBTZWN1cml0eU9yaWdpbiBV
UkwuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRvbWFpblNldEluRE9NIiwg
InR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlNlY3Vy
aXR5T3JpZ2luIGRvbWFpbiwgaWYgb25lIGhhcyBiZWVuIHNldCBpbiBET00uIiB9CisgICAgICAg
ICAgICAgICAgXQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAiaWQiOiAiRnJhbWUiLAogICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkluZm9ybWF0aW9uIGFib3V0IHRoZSBGcmFtZSBv
biB0aGUgcGFnZS4iLApAQCAtMTExLDcgKzEyMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAibG9hZGVySWQiLCAiJHJlZiI6ICJOZXR3b3JrLkxvYWRlcklkIiwgImRlc2NyaXB0
aW9uIjogIklkZW50aWZpZXIgb2YgdGhlIGxvYWRlciBhc3NvY2lhdGVkIHdpdGggdGhpcyBmcmFt
ZS4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZSIsICJ0eXBlIjogInN0
cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJGcmFtZSdzIG5hbWUgYXMg
c3BlY2lmaWVkIGluIHRoZSB0YWcuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InVybCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJGcmFtZSBkb2N1bWVudCdz
IFVSTC4iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2VjdXJpdHlPcmlnaW4i
LCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiRnJhbWUgZG9jdW1lbnQncyBzZWN1
cml0eSBvcmlnaW4uIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNlY3VyaXR5
T3JpZ2luIiwgIiRyZWYiOiAiU2VjdXJpdHlPcmlnaW4iLCAiZGVzY3JpcHRpb24iOiAiRnJhbWUg
ZG9jdW1lbnQncyBzZWN1cml0eSBvcmlnaW4uIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogIm1pbWVUeXBlIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkZyYW1l
IGRvY3VtZW50J3MgbWltZVR5cGUgYXMgZGV0ZXJtaW5lZCBieSB0aGUgYnJvd3Nlci4iIH0KICAg
ICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlCkBAIC01OTEs
NyArNjAwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ2YWx1ZSIsICJ0eXBl
IjogImFueSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJSZW1vdGUgb2JqZWN0
IHZhbHVlIChpbiBjYXNlIG9mIHByaW1pdGl2ZSB2YWx1ZXMgb3IgSlNPTiB2YWx1ZXMgaWYgaXQg
d2FzIHJlcXVlc3RlZCkuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRlc2Ny
aXB0aW9uIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9u
IjogIlN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0LiIgfSwKICAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJvYmplY3RJZCIsICIkcmVmIjogIlJlbW90ZU9iamVjdElkIiwg
Im9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBvYmplY3QgaWRlbnRpZmll
ciAoZm9yIG5vbi1wcmltaXRpdmUgdmFsdWVzKS4iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAicHJldmlldyIsICIkcmVmIjogIk9iamVjdFByZXZpZXciLCAib3B0aW9uYWwiOiB0
cnVlLCAiZGVzY3JpcHRpb24iOiAiUHJldmlldyBjb250YWluc2luZyBhYmJyZXZpYXRlZCBwcm9w
ZXJ0eSB2YWx1ZXMuIiwgImhpZGRlbiI6IHRydWUgfQorICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInByZXZpZXciLCAiJHJlZiI6ICJPYmplY3RQcmV2aWV3IiwgIm9wdGlvbmFsIjogdHJ1
ZSwgImRlc2NyaXB0aW9uIjogIlByZXZpZXcgY29udGFpbmluZyBhYmJyZXZpYXRlZCBwcm9wZXJ0
eSB2YWx1ZXMuIiwgImhpZGRlbiI6IHRydWUgfQogICAgICAgICAgICAgICAgIF0KICAgICAgICAg
ICAgIH0sCiAgICAgICAgICAgICB7CkBAIC0xMzcyLDcgKzEzODEsNyBAQAogICAgICAgICAgICAg
ICAgICJuYW1lIjogInJlcXVlc3REYXRhYmFzZU5hbWVzIiwKICAgICAgICAgICAgICAgICAiYXN5
bmMiOiB0cnVlLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInNlY3VyaXR5T3JpZ2luIiwgInR5cGUiOiAic3RyaW5nIiwgImRl
c2NyaXB0aW9uIjogIlNlY3VyaXR5IG9yaWdpbi4iIH0KKyAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJzZWN1cml0eU9yaWdpbiIsICIkcmVmIjogIlBhZ2UuU2VjdXJpdHlPcmlnaW4iLCAi
ZGVzY3JpcHRpb24iOiAiU2VjdXJpdHkgb3JpZ2luLiIgfQogICAgICAgICAgICAgICAgIF0sCiAg
ICAgICAgICAgICAgICAgInJldHVybnMiOiBbCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiZGF0YWJhc2VOYW1lcyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAidHlwZSI6ICJz
dHJpbmciIH0sICJkZXNjcmlwdGlvbiI6ICJEYXRhYmFzZSBuYW1lcyBmb3Igb3JpZ2luLiIgfQpA
QCAtMTM4Myw3ICsxMzkyLDcgQEAKICAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXF1ZXN0RGF0
YWJhc2UiLAogICAgICAgICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAgICAgICAg
InBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2VjdXJpdHlP
cmlnaW4iLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiU2VjdXJpdHkgb3JpZ2lu
LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzZWN1cml0eU9yaWdpbiIsICIk
cmVmIjogIlBhZ2UuU2VjdXJpdHlPcmlnaW4iLCAiZGVzY3JpcHRpb24iOiAiU2VjdXJpdHkgb3Jp
Z2luLiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkYXRhYmFzZU5hbWUiLCAi
dHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiRGF0YWJhc2UgbmFtZS4iIH0KICAgICAg
ICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJyZXR1cm5zIjogWwpAQCAtMTM5NSw3ICsx
NDA0LDcgQEAKICAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXF1ZXN0RGF0YSIsCiAgICAgICAg
ICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsK
LSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzZWN1cml0eU9yaWdpbiIsICJ0eXBlIjog
InN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJTZWN1cml0eSBvcmlnaW4uIiB9LAorICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInNlY3VyaXR5T3JpZ2luIiwgIiRyZWYiOiAiUGFnZS5TZWN1
cml0eU9yaWdpbiIsICJkZXNjcmlwdGlvbiI6ICJTZWN1cml0eSBvcmlnaW4uIiB9LAogICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImRhdGFiYXNlTmFtZSIsICJ0eXBlIjogInN0cmluZyIs
ICJkZXNjcmlwdGlvbiI6ICJEYXRhYmFzZSBuYW1lLiIgfSwKICAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJvYmplY3RTdG9yZU5hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRp
b24iOiAiT2JqZWN0IHN0b3JlIG5hbWUuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImluZGV4TmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJJbmRleCBu
YW1lLCBlbXB0eSBzdHJpbmcgZm9yIG9iamVjdCBzdG9yZSBkYXRhIHJlcXVlc3RzLiIgfSwKQEAg
LTE0MjIsNyArMTQzMSw3IEBACiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRPTSBT
dG9yYWdlIGlkZW50aWZpZXIuIiwKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZSwKICAg
ICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJzZWN1cml0eU9yaWdpbiIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJT
ZWN1cml0eSBvcmlnaW4gZm9yIHRoZSBzdG9yYWdlLiIgfSwKKyAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJzZWN1cml0eU9yaWdpbiIsICIkcmVmIjogIlBhZ2UuU2VjdXJpdHlPcmlnaW4i
LCAiZGVzY3JpcHRpb24iOiAiU2VjdXJpdHkgb3JpZ2luIGZvciB0aGUgc3RvcmFnZS4iIH0sCiAg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNMb2NhbFN0b3JhZ2UiLCAidHlwZSI6ICJi
b29sZWFuIiwgImRlc2NyaXB0aW9uIjogIldoZXRoZXIgdGhlIHN0b3JhZ2UgaXMgbG9jYWwgc3Rv
cmFnZSAobm90IHNlc3Npb24gc3RvcmFnZSkuIiB9CiAgICAgICAgICAgICAgICAgXQogICAgICAg
ICAgICAgfSwKQEAgLTE2MjgsNyArMTYzNyw3IEBACiAgICAgICAgICAgICAgICAgIm5hbWUiOiAi
cmVxdWVzdEZpbGVTeXN0ZW1Sb290IiwKICAgICAgICAgICAgICAgICAiYXN5bmMiOiB0cnVlLAog
ICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogIm9yaWdpbiIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJTZWN1cml0
eSBvcmlnaW4gb2YgcmVxdWVzdGluZyBGaWxlU3lzdGVtLiBPbmUgb2YgZnJhbWVzIGluIGN1cnJl
bnQgcGFnZSBuZWVkcyB0byBoYXZlIHRoaXMgc2VjdXJpdHkgb3JpZ2luLiIgfSwKKyAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJvcmlnaW4iLCAiJHJlZiI6ICJQYWdlLlNlY3VyaXR5T3Jp
Z2luIiwgImRlc2NyaXB0aW9uIjogIlNlY3VyaXR5IG9yaWdpbiBvZiByZXF1ZXN0aW5nIEZpbGVT
eXN0ZW0uIE9uZSBvZiBmcmFtZXMgaW4gY3VycmVudCBwYWdlIG5lZWRzIHRvIGhhdmUgdGhpcyBz
ZWN1cml0eSBvcmlnaW4uIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInR5cGUi
LCAidHlwZSI6ICJzdHJpbmciLCAiZW51bSI6IFsidGVtcG9yYXJ5IiwgInBlcnNpc3RlbnQiXSwg
ImRlc2NyaXB0aW9uIjogIkZpbGVTeXN0ZW0gdHlwZSBvZiByZXF1ZXN0aW5nIEZpbGVTeXN0ZW0u
IiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dC5jcHAKaW5kZXggYjNlMGUxNmNlZTI4MjBjYzYwNzgxMzM0YjBmZjkwOTg3YWU4MGFkNi4uNTBl
MjcwZjUyZmMzMTkwODlhMDUyODEyMjQzNjFiYTQwMmUyYzRhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKQEAgLTE5
Myw3ICsxOTMsNyBAQCBTdHJpbmcgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpzdG9yYWdlSWQo
U3RvcmFnZSogc3RvcmFnZSkKIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTVN0b3JhZ2U6OlN0
b3JhZ2VJZD4gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpzdG9yYWdlSWQoU2VjdXJpdHlPcmln
aW4qIHNlY3VyaXR5T3JpZ2luLCBib29sIGlzTG9jYWxTdG9yYWdlKQogewogICAgIHJldHVybiBU
eXBlQnVpbGRlcjo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkOjpjcmVhdGUoKQotICAgICAgICAuc2V0
U2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4tPnRvUmF3U3RyaW5nKCkpCisgICAgICAgIC5z
ZXRTZWN1cml0eU9yaWdpbihJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlY3VyaXR5T3JpZ2luVG9JbnNw
ZWN0b3JPYmplY3Qoc2VjdXJpdHlPcmlnaW4pKQogICAgICAgICAuc2V0SXNMb2NhbFN0b3JhZ2Uo
aXNMb2NhbFN0b3JhZ2UpLnJlbGVhc2UoKTsKIH0KIApAQCAtMjE2LDkgKzIxNiw5IEBAIHZvaWQg
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChjb25z
dCBTdHJpbmcmIGtleSwgY29uCiAKIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudDo6ZmluZFN0b3JhZ2VBcmVhKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwgRnJhbWUqJiB0YXJnZXRG
cmFtZSkKIHsKLSAgICBTdHJpbmcgc2VjdXJpdHlPcmlnaW47CiAgICAgYm9vbCBpc0xvY2FsU3Rv
cmFnZSA9IGZhbHNlOwotICAgIGJvb2wgc3VjY2VzcyA9IHN0b3JhZ2VJZC0+Z2V0U3RyaW5nKCJz
ZWN1cml0eU9yaWdpbiIsICZzZWN1cml0eU9yaWdpbik7CisgICAgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gc2VjdXJpdHlPcmlnaW5PYmplY3QgPSBzdG9yYWdlSWQtPmdldE9iamVjdCgic2VjdXJp
dHlPcmlnaW4iKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBzZWN1cml0eU9yaWdpbk9iamVjdCA/IHRy
dWUgOiBmYWxzZTsKICAgICBpZiAoc3VjY2VzcykKICAgICAgICAgc3VjY2VzcyA9IHN0b3JhZ2VJ
ZC0+Z2V0Qm9vbGVhbigiaXNMb2NhbFN0b3JhZ2UiLCAmaXNMb2NhbFN0b3JhZ2UpOwogICAgIGlm
ICghc3VjY2VzcykgewpAQCAtMjI3LDEyICsyMjcsOSBAQCBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVh
PiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmZpbmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyog
ZQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2VB
Z2VudC0+ZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKLSAgICBp
ZiAoIWZyYW1lKSB7Ci0gICAgICAgIGlmIChlcnJvclN0cmluZykKLSAgICAgICAgICAgICplcnJv
clN0cmluZyA9ICJGcmFtZSBub3QgZm91bmQgZm9yIHRoZSBnaXZlbiBzZWN1cml0eSBvcmlnaW4i
OworICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZUFnZW50LT5maW5kRnJhbWVXaXRoU2VjdXJpdHlP
cmlnaW4oZXJyb3JTdHJpbmcsIHNlY3VyaXR5T3JpZ2luT2JqZWN0LmdldCgpKTsKKyAgICBpZiAo
IWZyYW1lKQogICAgICAgICByZXR1cm4gMDsKLSAgICB9CiAgICAgdGFyZ2V0RnJhbWUgPSBmcmFt
ZTsKIAogICAgIFBhZ2UqIHBhZ2UgPSBtX3BhZ2VBZ2VudC0+cGFnZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAppbmRl
eCAyYjBkNjQ0MzE5Zjk0ZGIxMWYzNzE2YjMyODcxOWU4ZjdkNDEyNjBlLi43MDE5MjRmNmVhYzA2
MGEwYTgwZGViM2ZiNzNlNjk5YTQwNjJhYjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcApAQCAtNjMwLDEyICs2MzAs
MTIgQEAgdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcq
KQogICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oRmlsZVN5c3RlbUFnZW50U3RhdGU6OmZpbGVTeXN0
ZW1BZ2VudEVuYWJsZWQsIG1fZW5hYmxlZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRmlsZVN5c3Rl
bUFnZW50OjpyZXF1ZXN0RmlsZVN5c3RlbVJvb3QoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBT
dHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPFJlcXVlc3RGaWxl
U3lzdGVtUm9vdENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCit2b2lkIEluc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudDo6cmVxdWVzdEZpbGVTeXN0ZW1Sb290KEVycm9yU3RyaW5nKiBlcnJvciwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIG9yaWdpbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQ
YXNzUmVmUHRyPFJlcXVlc3RGaWxlU3lzdGVtUm9vdENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2sp
CiB7CiAgICAgaWYgKCFhc3NlcnRFbmFibGVkKGVycm9yKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGFzc2Vy
dFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGb3JPcmlnaW4oZXJyb3IsIFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVGcm9tU3RyaW5nKG9yaWdpbikuZ2V0KCkpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBhc3NlcnRTY3JpcHRFeGVjdXRpb25Db250ZXh0
Rm9yT3JpZ2luKGVycm9yLCBJbnNwZWN0b3JQYWdlQWdlbnQ6Omluc3BlY3Rvck9iamVjdFRvU2Vj
dXJpdHlPcmlnaW4ob3JpZ2luLmdldCgpKS5nZXQoKSk7CiAgICAgaWYgKCFzY3JpcHRFeGVjdXRp
b25Db250ZXh0KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaAppbmRleCBiZWIyYzk5NTczNzdhMTI5
ZjczN2JjNTBjOWEyZjAzMGUzMjNkZGI5Li43MDU1MmI0YWE2ODU4ZDkwZjI3ZjI5MTljYjBmNTg3
ZGVkYmQ5MWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudC5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRp
c2FibGUoRXJyb3JTdHJpbmcqKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
RmlsZVN5c3RlbVJvb3QoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiB0eXBlU3RyaW5nLCBQYXNzUmVmUHRyPFJlcXVlc3RGaWxlU3lzdGVtUm9vdENhbGxi
YWNrPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGaWxlU3lzdGVtUm9vdChF
cnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBvcmlnaW4sIGNvbnN0
IFN0cmluZyYgdHlwZVN0cmluZywgUGFzc1JlZlB0cjxSZXF1ZXN0RmlsZVN5c3RlbVJvb3RDYWxs
YmFjaz4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGlyZWN0b3J5Q29udGVu
dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPFJlcXVlc3REaXJl
Y3RvcnlDb250ZW50Q2FsbGJhY2s+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dE1ldGFkYXRhKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8UmVx
dWVzdE1ldGFkYXRhQ2FsbGJhY2s+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dEZpbGVDb250ZW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgcmVhZEFz
VGV4dCwgY29uc3QgaW50KiBzdGFydCwgY29uc3QgaW50KiBlbmQsIGNvbnN0IFN0cmluZyogY2hh
cnNldCwgUGFzc1JlZlB0cjxSZXF1ZXN0RmlsZUNvbnRlbnRDYWxsYmFjaz4pIE9WRVJSSURFOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dC5jcHAKaW5kZXggNTdjNjcyMWIxMmFhNWFiMzkzZTk3N2Q2MzU5ZGI4ZTg2NTQ5ZWU4Yi4uODFi
NzQzNjY5YWQ3ZjFlOGE4ZDQzOTY4MTgxYzA5NDZhNGJhNWIzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC05Miw5
ICs5Miw5IEBAIG5hbWVzcGFjZSB7CiBjbGFzcyBHZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2sgOiBw
dWJsaWMgRXZlbnRMaXN0ZW5lciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR2V0RGF0YWJh
c2VOYW1lc0NhbGxiYWNrKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZXREYXRh
YmFzZU5hbWVzQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZU5hbWVz
Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaywgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbikK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2s+IGNyZWF0ZShQ
YXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2V0RGF0YWJhc2VOYW1lc0NhbGxi
YWNrKHJlcXVlc3RDYWxsYmFjaywgc2VjdXJpdHlPcmlnaW4pKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBHZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2socmVxdWVzdENhbGxiYWNrKSk7CiAg
ICAgfQogCiAgICAgdmlydHVhbCB+R2V0RGF0YWJhc2VOYW1lc0NhbGxiYWNrKCkgeyB9CkBAIC0x
MzMsMTIgKzEzMywxMCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIEdldERhdGFi
YXNlTmFtZXNDYWxsYmFjayhQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s+
IHJlcXVlc3RDYWxsYmFjaywgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbikKKyAgICBHZXRE
YXRhYmFzZU5hbWVzQ2FsbGJhY2soUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxi
YWNrPiByZXF1ZXN0Q2FsbGJhY2spCiAgICAgICAgIDogRXZlbnRMaXN0ZW5lcihFdmVudExpc3Rl
bmVyOjpDUFBFdmVudExpc3RlbmVyVHlwZSkKLSAgICAgICAgLCBtX3JlcXVlc3RDYWxsYmFjayhy
ZXF1ZXN0Q2FsbGJhY2spCi0gICAgICAgICwgbV9zZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdp
bikgeyB9CisgICAgICAgICwgbV9yZXF1ZXN0Q2FsbGJhY2socmVxdWVzdENhbGxiYWNrKSB7IH0K
ICAgICBSZWZQdHI8UmVxdWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjaz4gbV9yZXF1ZXN0Q2FsbGJh
Y2s7Ci0gICAgU3RyaW5nIG1fc2VjdXJpdHlPcmlnaW47CiB9OwogCiBjbGFzcyBFeGVjdXRhYmxl
V2l0aERhdGFiYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8RXhlY3V0YWJsZVdpdGhEYXRhYmFzZT4g
ewpAQCAtNjExLDkgKzYwOSw5IEBAIHN0YXRpYyBJREJGYWN0b3J5KiBhc3NlcnRJREJGYWN0b3J5
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgRG9jdW1lbnQqIGRvY3VtZW50CiAgICAgcmV0dXJu
IGlkYkZhY3Rvcnk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3RE
YXRhYmFzZU5hbWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzZWN1
cml0eU9yaWdpbiwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNrPiByZXF1
ZXN0Q2FsbGJhY2spCit2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJh
c2VOYW1lcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiBzZWN1cml0eU9yaWdpbiwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VOYW1lc0Nh
bGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlQWdl
bnQtPmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbik7CisgICAgRnJh
bWUqIGZyYW1lID0gbV9wYWdlQWdlbnQtPmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbihlcnJv
clN0cmluZywgc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IGFzc2VydERvY3VtZW50KGVycm9yU3RyaW5nLCBmcmFtZSk7CiAgICAgaWYgKCFkb2N1bWVudCkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNjM0LDEyICs2MzIsMTQgQEAgdm9pZCBJbnNwZWN0b3JJbmRl
eGVkREJBZ2VudDo6cmVxdWVzdERhdGFiYXNlTmFtZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBjb24KICAgICAgICAgcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IG9i
dGFpbiBkYXRhYmFzZSBuYW1lcy4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZGJS
ZXF1ZXN0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQsIEdldERh
dGFiYXNlTmFtZXNDYWxsYmFjazo6Y3JlYXRlKHJlcXVlc3RDYWxsYmFjaywgZG9jdW1lbnQtPnNl
Y3VyaXR5T3JpZ2luKCktPnRvUmF3U3RyaW5nKCkpLCBmYWxzZSk7CisgICAgaWRiUmVxdWVzdC0+
YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50LCBHZXREYXRhYmFzZU5h
bWVzQ2FsbGJhY2s6OmNyZWF0ZShyZXF1ZXN0Q2FsbGJhY2spLCBmYWxzZSk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhYmFzZShFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VOYW1lLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZUNhbGxiYWNrPiByZXF1ZXN0Q2Fs
bGJhY2spCit2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2UoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc2Vj
dXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBQYXNzUmVmUHRyPFJlcXVl
c3REYXRhYmFzZUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCiB7Ci0gICAgRnJhbWUqIGZyYW1l
ID0gbV9wYWdlQWdlbnQtPmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdp
bik7CisgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlQWdlbnQtPmZpbmRGcmFtZVdpdGhTZWN1cml0
eU9yaWdpbihlcnJvclN0cmluZywgc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOworICAgIGlmICghZnJh
bWUpCisgICAgICAgIHJldHVybjsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBhc3NlcnREb2N1
bWVudChlcnJvclN0cmluZywgZnJhbWUpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJl
dHVybjsKQEAgLTY1OCw5ICs2NTgsOSBAQCB2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50Ojpy
ZXF1ZXN0RGF0YWJhc2UoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdAogICAgIGRh
dGFiYXNlTG9hZGVyLT5zdGFydChpZGJGYWN0b3J5LCBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4o
KSwgZGF0YWJhc2VOYW1lKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVx
dWVzdERhdGEoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5
T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBvYmplY3RT
dG9yZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBpbnQgc2tpcENvdW50LCBpbnQgcGFn
ZVNpemUsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBrZXlSYW5nZSwgUGFzc1JlZlB0
cjxSZXF1ZXN0RGF0YUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCit2b2lkIEluc3BlY3Rvcklu
ZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBjb25zdCBTdHJpbmcm
IGluZGV4TmFtZSwgaW50IHNraXBDb3VudCwgaW50IHBhZ2VTaXplLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0Pioga2V5UmFuZ2UsIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFDYWxsYmFjaz4g
cmVxdWVzdENhbGxiYWNrKQogewotICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZUFnZW50LT5maW5k
RnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pOworICAgIEZyYW1lKiBmcmFt
ZSA9IG1fcGFnZUFnZW50LT5maW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4oZXJyb3JTdHJpbmcs
IHNlY3VyaXR5T3JpZ2luLmdldCgpKTsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBhc3NlcnRE
b2N1bWVudChlcnJvclN0cmluZywgZnJhbWUpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmgKaW5kZXggNjlhMDk2MWFiMWIxZmE4ZDUyMTkwZDU3ZjQyOGYyNTUwN2Q2ZmNj
ZS4uOWYyOWZlNDIyMTYyN2FhOGQ2ZjBiN2Y0Y2RiYWFiYTU2ZTdkMjcxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKQEAgLTU4
LDkgKzU4LDkgQEAgcHVibGljOgogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCiAg
ICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNhYmxlKEVycm9yU3RyaW5nKik7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3REYXRhYmFzZU5h
bWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgUGFzc1JlZlB0
cjxSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNrPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVl
c3REYXRhYmFzZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZUNhbGxi
YWNrPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3REYXRhKEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0
IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgaW50IHNr
aXBDb3VudCwgaW50IHBhZ2VTaXplLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Pioga2V5
UmFuZ2UsIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFDYWxsYmFjaz4pOworICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0RGF0YWJhc2VOYW1lcyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+JiBzZWN1cml0eU9yaWdpbiwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VOYW1l
c0NhbGxiYWNrPik7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3REYXRhYmFzZShFcnJvclN0cmlu
ZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzZWN1cml0eU9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZU5hbWUsIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2s+
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGEoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VOYW1lLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBpbmRl
eE5hbWUsIGludCBza2lwQ291bnQsIGludCBwYWdlU2l6ZSwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4qIGtleVJhbmdlLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhQ2FsbGJhY2s+KTsKIAog
cHJpdmF0ZToKICAgICBJbnNwZWN0b3JJbmRleGVkREJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgSW5zcGVjdG9yQ29tcG9zaXRlU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNw
ZWN0b3JQYWdlQWdlbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKaW5kZXggNjk5Y2M5ODdhNTQyNzAyZWRhOGI5MzY3YzMzOWFmNTY5MDdh
ZDRlZC4uZGY1OTE1ZmRlMjI0NjAyZmE2MmFkNWJlYzg1ZjBkYWZlODU2NjE2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEwMiw2
ICsxMDIsMzUgQEAgc3RhdGljIGNvbnN0IGNoYXIgdG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWRb
XSA9ICJ0b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCI7CiBzdGF0aWMgY29uc3QgY2hhciBwYWdl
QWdlbnRFbXVsYXRlZE1lZGlhW10gPSAicGFnZUFnZW50RW11bGF0ZWRNZWRpYSI7CiB9CiAKK1Bh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IEluc3BlY3RvclBhZ2VBZ2VudDo6aW5zcGVjdG9yT2Jq
ZWN0VG9TZWN1cml0eU9yaWdpbihJbnNwZWN0b3JPYmplY3QqIG9iamVjdCkKK3sKKyAgICBTdHJp
bmcgdXJsOworICAgIGlmICghb2JqZWN0LT5nZXRTdHJpbmcoInVybCIsICZ1cmwpKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIFN0cmluZyBkb21haW5TZXRJbkRPTTsKKyAgICBSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+IHZhbHVlID0gb2JqZWN0LT5nZXQoImRvbWFpblNldEluRE9NIik7CisgICAg
aWYgKHZhbHVlKSB7CisgICAgICAgIGlmICghdmFsdWUtPmFzU3RyaW5nKCZkb21haW5TZXRJbkRP
TSkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IHJlc3VsdCA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHVybCk7Cisg
ICAgaWYgKCFkb21haW5TZXRJbkRPTS5pc051bGwoKSkKKyAgICAgICAgcmVzdWx0LT5zZXREb21h
aW5Gcm9tRE9NKGRvbWFpblNldEluRE9NKTsKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsK
K30KKworUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6U2VjdXJpdHlPcmlnaW4+IEluc3Bl
Y3RvclBhZ2VBZ2VudDo6c2VjdXJpdHlPcmlnaW5Ub0luc3BlY3Rvck9iamVjdChTZWN1cml0eU9y
aWdpbiogb3JpZ2luKQoreworCisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpTZWN1cml0
eU9yaWdpbj4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OlBhZ2U6OlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUoKQorICAgICAgICAuc2V0VXJsKG9yaWdpbi0+dG9SYXdTdHJpbmcoKSk7CisgICAgaWYgKG9y
aWdpbi0+ZG9tYWluV2FzU2V0SW5ET00oKSkKKyAgICAgICAgcmVzdWx0LT5zZXREb21haW5TZXRJ
bkRPTShvcmlnaW4tPmRvbWFpbigpKTsKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKK30K
Kwogc3RhdGljIGJvb2wgZGVjb2RlQnVmZmVyKGNvbnN0IGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQg
c2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBTdHJpbmcqIHJlc3VsdCkKIHsK
ICAgICBpZiAoYnVmZmVyKSB7CkBAIC05MzAsMTkgKzk1OSwyNyBAQCBTdHJpbmcgSW5zcGVjdG9y
UGFnZUFnZW50Ojpsb2FkZXJJZChEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgIHJldHVybiBp
ZGVudGlmaWVyOwogfQogCi1GcmFtZSogSW5zcGVjdG9yUGFnZUFnZW50OjpmaW5kRnJhbWVXaXRo
U2VjdXJpdHlPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5SYXdTdHJpbmcpCitGcmFtZSogSW5z
cGVjdG9yUGFnZUFnZW50OjpmaW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4oRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBJbnNwZWN0b3JPYmplY3QqIHNlY3VyaXR5T3JpZ2luT2JqZWN0KQogewot
ICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW5QdHIgPSBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW5SYXdTdHJpbmcpOwotICAgIFNlY3VyaXR5T3Jp
Z2luKiBzZWN1cml0eU9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luUHRyLmdldCgpOworICAgIFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBpbnNwZWN0b3JPYmplY3RUb1NlY3Vy
aXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luT2JqZWN0KTsKKyAgICBpZiAoIXNlY3VyaXR5T3JpZ2lu
KSB7CisgICAgICAgIGlmIChlcnJvclN0cmluZykKKyAgICAgICAgICAgICplcnJvclN0cmluZyA9
ICJJbnZhbGlkIHNlY3VyaXR5IG9yaWdpbiI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwog
ICAgIGJvb2wgaXNMb2NhbCA9IHNlY3VyaXR5T3JpZ2luLT5pc0xvY2FsKCk7CiAgICAgZm9yIChG
cmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+
dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IGRvY3VtZW50T3JpZ2luID0gZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CiAg
ICAgICAgIC8vIEVtdWxhdGUgdGhlICFlbmZvcmNlRmlsZVBhdGhTZXBhcmF0aW9uIGZvciBzZWN1
cml0eSBvcmlnaW5zLgogICAgICAgICBpZiAoaXNMb2NhbCAmJiBkb2N1bWVudE9yaWdpbi0+aXNM
b2NhbCgpKQogICAgICAgICAgICAgcmV0dXJuIGZyYW1lOwotICAgICAgICBpZiAoZG9jdW1lbnRP
cmlnaW4tPmVxdWFsKHNlY3VyaXR5T3JpZ2luKSkKKyAgICAgICAgaWYgKGRvY3VtZW50T3JpZ2lu
LT5lcXVhbChzZWN1cml0eU9yaWdpbi5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gZnJhbWU7
CiAgICAgfQorCisgICAgaWYgKGVycm9yU3RyaW5nKQorICAgICAgICAqZXJyb3JTdHJpbmcgPSAi
RnJhbWUgbm90IGZvdW5kIGZvciB0aGUgZ2l2ZW4gc2VjdXJpdHkgb3JpZ2luIjsKICAgICByZXR1
cm4gMDsKIH0KIApAQCAtMTA3OCw3ICsxMTE1LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
UGFnZTo6RnJhbWU+IEluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JGcmFtZShGcmEK
ICAgICAgICAgLnNldExvYWRlcklkKGxvYWRlcklkKGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRM
b2FkZXIoKSkpCiAgICAgICAgIC5zZXRVcmwoZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmlu
ZygpKQogICAgICAgICAuc2V0TWltZVR5cGUoZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRl
cigpLT5yZXNwb25zZU1JTUVUeXBlKCkpCi0gICAgICAgIC5zZXRTZWN1cml0eU9yaWdpbihmcmFt
ZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9SYXdTdHJpbmcoKSk7CisgICAgICAg
IC5zZXRTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpblRvSW5zcGVjdG9yT2JqZWN0KGZyYW1l
LT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSk7CiAgICAgaWYgKGZyYW1lLT50cmVlKCkt
PnBhcmVudCgpKQogICAgICAgICBmcmFtZU9iamVjdC0+c2V0UGFyZW50SWQoZnJhbWVJZChmcmFt
ZS0+dHJlZSgpLT5wYXJlbnQoKSkpOwogICAgIGlmIChmcmFtZS0+b3duZXJFbGVtZW50KCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCBk
OTYwMzAzN2MwZjg0YmMzMmY1NGFhODQyODg0MzgxMDA2NDJlNzVmLi5lMzk1MjNjYzU0MTAwMTEz
YWVjZGE5ZjkzOWI3OGQxN2FlNTRmZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC04MCw2ICs4MCw3IEBAIHB1YmxpYzoKICAgICAgICAg
T3RoZXJSZXNvdXJjZQogICAgIH07CiAKKwogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3Rv
clBhZ2VBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBQYWdlKiwgSW5zcGVjdG9y
QWdlbnQqLCBJbnNwZWN0b3JDb21wb3NpdGVTdGF0ZSosIEluamVjdGVkU2NyaXB0TWFuYWdlcios
IEluc3BlY3RvckNsaWVudCosIEluc3BlY3Rvck92ZXJsYXkqKTsKIAogICAgIHN0YXRpYyBib29s
IGNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNvdXJjZSosIFN0cmluZyogcmVzdWx0LCBi
b29sKiBiYXNlNjRFbmNvZGVkKTsKQEAgLTkyLDYgKzkzLDkgQEAgcHVibGljOgogICAgIHN0YXRp
YyBSZXNvdXJjZVR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlKGNvbnN0IENhY2hlZFJlc291cmNlJik7
CiAgICAgc3RhdGljIFR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVudW0gY2FjaGVk
UmVzb3VyY2VUeXBlSnNvbihjb25zdCBDYWNoZWRSZXNvdXJjZSYpOwogCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGluc3BlY3Rvck9iamVjdFRvU2VjdXJpdHlPcmlnaW4o
SW5zcGVjdG9yT2JqZWN0Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlBh
Z2U6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpblRvSW5zcGVjdG9yT2JqZWN0KFNlY3Vy
aXR5T3JpZ2luKik7CisKICAgICAvLyBQYWdlIEFQSSBmb3IgSW5zcGVjdG9yRnJvbnRlbmQKICAg
ICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIGRp
c2FibGUoRXJyb3JTdHJpbmcqKTsKQEAgLTE1Nyw2ICsxNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWRTY3JvbGwoKTsKICAgICB2b2lkIGRpZFJlY2FsY3VsYXRlU3R5bGUoKTsKICAgICB2b2lk
IHNjcmlwdHNFbmFibGVkKGJvb2wgaXNFbmFibGVkKTsKKyAgICB2b2lkIHNlY3VyaXR5T3JpZ2lu
Q2hhbmdlZChGcmFtZSosIFNlY3VyaXR5T3JpZ2luKik7CiAKICAgICAvLyBJbnNwZWN0b3IgQ29u
dHJvbGxlciBBUEkKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRl
bmQqKTsKQEAgLTE3Myw3ICsxNzgsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGZyYW1lSWQoRnJh
bWUqKTsKICAgICBib29sIGhhc0lkRm9yRnJhbWUoRnJhbWUqKSBjb25zdDsKICAgICBTdHJpbmcg
bG9hZGVySWQoRG9jdW1lbnRMb2FkZXIqKTsKLSAgICBGcmFtZSogZmluZEZyYW1lV2l0aFNlY3Vy
aXR5T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luUmF3U3RyaW5nKTsKKyAgICBGcmFtZSogZmlu
ZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKEVycm9yU3RyaW5nKiwgSW5zcGVjdG9yT2JqZWN0Kik7
CiAgICAgRnJhbWUqIGFzc2VydEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFt
ZUlkKTsKICAgICBTdHJpbmcgc2NyaXB0UHJlcHJvY2Vzc29yKCkgeyByZXR1cm4gbV9zY3JpcHRQ
cmVwcm9jZXNzb3I7IH0KICAgICBzdGF0aWMgRG9jdW1lbnRMb2FkZXIqIGFzc2VydERvY3VtZW50
TG9hZGVyKEVycm9yU3RyaW5nKiwgRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZS5qcwppbmRleCBiMjA5ZjcyNmMwOTM0ZGRjNDZiZTI2
OWMyZmViODEwNjFhNDFhZTM2Li45ODkxYmZiMDA4YmNlODAwNDAxNjlkNmFlNjkyNzQxZWMxMzdl
OTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0
b3JhZ2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9y
YWdlLmpzCkBAIC0yOSw3ICsyOSw3IEBACiAKIC8qKgogICogQGNvbnN0cnVjdG9yCi0gKiBAcGFy
YW0ge3N0cmluZ30gc2VjdXJpdHlPcmlnaW4KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNlY3Vy
aXR5T3JpZ2lufSBzZWN1cml0eU9yaWdpbgogICogQHBhcmFtIHtib29sZWFufSBpc0xvY2FsU3Rv
cmFnZQogICovCiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZSA9IGZ1bmN0aW9uKHNlY3VyaXR5T3Jp
Z2luLCBpc0xvY2FsU3RvcmFnZSkKQEAgLTM5LDEzICszOSwxMyBAQCBXZWJJbnNwZWN0b3IuRE9N
U3RvcmFnZSA9IGZ1bmN0aW9uKHNlY3VyaXR5T3JpZ2luLCBpc0xvY2FsU3RvcmFnZSkKIH0KIAog
LyoqCi0gKiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlPcmlnaW4KKyAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLlNlY3VyaXR5T3JpZ2lufSBzZWN1cml0eU9yaWdpbgogICogQHBhcmFtIHtib29sZWFu
fSBpc0xvY2FsU3RvcmFnZQogICogQHJldHVybiB7RE9NU3RvcmFnZUFnZW50LlN0b3JhZ2VJZH0K
ICAqLwogV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2Uuc3RvcmFnZUlkID0gZnVuY3Rpb24oc2VjdXJp
dHlPcmlnaW4sIGlzTG9jYWxTdG9yYWdlKQogewotICAgIHJldHVybiB7IHNlY3VyaXR5T3JpZ2lu
OiBzZWN1cml0eU9yaWdpbiwgaXNMb2NhbFN0b3JhZ2U6IGlzTG9jYWxTdG9yYWdlIH07CisgICAg
cmV0dXJuIHsgc2VjdXJpdHlPcmlnaW46IHNlY3VyaXR5T3JpZ2luLnRvUHJvdG9jb2woKSwgaXNM
b2NhbFN0b3JhZ2U6IGlzTG9jYWxTdG9yYWdlIH07CiB9CiAKIFdlYkluc3BlY3Rvci5ET01TdG9y
YWdlLnByb3RvdHlwZSA9IHsKQEAgLTU2LDcgKzU2LDcgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3Jh
Z2UucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2Uu
c3RvcmFnZUlkKHRoaXMuX3NlY3VyaXR5T3JpZ2luLCB0aGlzLl9pc0xvY2FsU3RvcmFnZSk7CiAg
ICAgfSwKIAotICAgIC8qKiBAcmV0dXJuIHtzdHJpbmd9ICovCisgICAgLyoqIEByZXR1cm4ge1dl
Ykluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gKi8KICAgICBnZXQgc2VjdXJpdHlPcmlnaW4oKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NlY3VyaXR5T3JpZ2luOwpAQCAtMTI1LDcgKzEy
NSw3IEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlTW9kZWwucHJvdG90eXBlID0gewogICAgICAq
LwogICAgIF9zZWN1cml0eU9yaWdpbkFkZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAg
ICAgIHZhciBzZWN1cml0eU9yaWdpbiA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoZXZlbnQuZGF0
YSk7CisgICAgICAgIHZhciBzZWN1cml0eU9yaWdpbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9y
LlNlY3VyaXR5T3JpZ2lufSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIHZhciBsb2NhbFN0b3Jh
Z2VLZXkgPSB0aGlzLl9zdG9yYWdlS2V5KHNlY3VyaXR5T3JpZ2luLCB0cnVlKTsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQoIXRoaXMuX3N0b3JhZ2VzW2xvY2FsU3RvcmFnZUtleV0pOwogICAgICAg
ICB2YXIgbG9jYWxTdG9yYWdlID0gbmV3IFdlYkluc3BlY3Rvci5ET01TdG9yYWdlKHNlY3VyaXR5
T3JpZ2luLCB0cnVlKTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFn
ZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfc2VjdXJpdHlPcmlnaW5SZW1vdmVk
OiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBzZWN1cml0eU9yaWdpbiA9IC8q
KiBAdHlwZSB7c3RyaW5nfSAqLyAoZXZlbnQuZGF0YSk7CisgICAgICAgIHZhciBzZWN1cml0eU9y
aWdpbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSAqLyAoZXZlbnQu
ZGF0YSk7CiAgICAgICAgIHZhciBsb2NhbFN0b3JhZ2VLZXkgPSB0aGlzLl9zdG9yYWdlS2V5KHNl
Y3VyaXR5T3JpZ2luLCB0cnVlKTsKICAgICAgICAgdmFyIGxvY2FsU3RvcmFnZSA9IHRoaXMuX3N0
b3JhZ2VzW2xvY2FsU3RvcmFnZUtleV07CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGxvY2FsU3Rv
cmFnZSk7CkBAIC0xNTksNyArMTU5LDcgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5w
cm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBz
ZWN1cml0eU9yaWdpbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lu
fSBzZWN1cml0eU9yaWdpbgogICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNMb2NhbFN0b3JhZ2UK
ICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCmluZGV4IDE0YzEzNzJj
ZDQyYjdjNTU4YWVhYjJhMzFlMTUzYTg1NDdiMjY5YjguLjJkOGU2MWNiMDBkMzE5ZDNlNWVhMzVh
NGIzZDhhMTM0N2MyZGVhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCkBAIC00OSw4ICs0OSw4IEBAIFdlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtTW9kZWwgPSBmdW5jdGlvbigpCiBXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICBfcmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAg
ICAgIGZvciAodmFyIHNlY3VyaXR5T3JpZ2luIGluIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2lu
KQotICAgICAgICAgICAgdGhpcy5fcmVtb3ZlT3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKKyAgICAg
ICAgZm9yICh2YXIgc2VjdXJpdHlPcmlnaW5JZCBpbiB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdp
bikKKyAgICAgICAgICAgIHRoaXMuX3JlbW92ZU9yaWdpbihXZWJJbnNwZWN0b3IuU2VjdXJpdHlP
cmlnaW4uZnJvbUlkKHNlY3VyaXR5T3JpZ2luSWQpKTsKICAgICAgICAgdmFyIHNlY3VyaXR5T3Jp
Z2lucyA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5zZWN1cml0eU9yaWdpbnMoKTsK
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWN1cml0eU9yaWdpbnMubGVuZ3RoOyArK2kp
CiAgICAgICAgICAgICB0aGlzLl9hZGRPcmlnaW4oc2VjdXJpdHlPcmlnaW5zW2ldKTsKQEAgLTYx
LDcgKzYxLDcgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUgPSB7CiAg
ICAgICovCiAgICAgX3NlY3VyaXR5T3JpZ2luQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsK
LSAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChldmVu
dC5kYXRhKTsKKyAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gLyoqIEB0eXBlIHtXZWJJbnNw
ZWN0b3IuU2VjdXJpdHlPcmlnaW59ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5fYWRk
T3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKICAgICB9LAogCkBAIC03MCwzNyArNzAsMzkgQEAgV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3Nl
Y3VyaXR5T3JpZ2luUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIg
c2VjdXJpdHlPcmlnaW4gPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKGV2ZW50LmRhdGEpOworICAg
ICAgICB2YXIgc2VjdXJpdHlPcmlnaW4gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5TZWN1cml0
eU9yaWdpbn0gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICB0aGlzLl9yZW1vdmVPcmlnaW4oc2Vj
dXJpdHlPcmlnaW4pOwogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30g
c2VjdXJpdHlPcmlnaW4KKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdp
bn0gc2VjdXJpdHlPcmlnaW4KICAgICAgKi8KICAgICBfYWRkT3JpZ2luOiBmdW5jdGlvbihzZWN1
cml0eU9yaWdpbikKICAgICB7Ci0gICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW3Nl
Y3VyaXR5T3JpZ2luXSA9IHt9OworICAgICAgICB2YXIgc2VjdXJpdHlPcmlnaW5JZCA9IHNlY3Vy
aXR5T3JpZ2luLmlkOworICAgICAgICB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltzZWN1cml0
eU9yaWdpbklkXSA9IHt9OwogCiAgICAgICAgIHZhciB0eXBlcyA9IFsicGVyc2lzdGVudCIsICJ0
ZW1wb3JhcnkiXTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7ICsr
aSkKLSAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RGaWxlU3lzdGVtUm9vdChzZWN1cml0eU9yaWdp
biwgdHlwZXNbaV0sIHRoaXMuX2ZpbGVTeXN0ZW1Sb290UmVjZWl2ZWQuYmluZCh0aGlzLCBzZWN1
cml0eU9yaWdpbiwgdHlwZXNbaV0sIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW3NlY3VyaXR5
T3JpZ2luXSkpOworICAgICAgICAgICAgdGhpcy5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KHNlY3Vy
aXR5T3JpZ2luLCB0eXBlc1tpXSwgdGhpcy5fZmlsZVN5c3RlbVJvb3RSZWNlaXZlZC5iaW5kKHRo
aXMsIHNlY3VyaXR5T3JpZ2luLCB0eXBlc1tpXSwgdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5b
c2VjdXJpdHlPcmlnaW5JZF0pKTsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtz
dHJpbmd9IHNlY3VyaXR5T3JpZ2luCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJp
dHlPcmlnaW59IHNlY3VyaXR5T3JpZ2luCiAgICAgICovCiAgICAgX3JlbW92ZU9yaWdpbjogZnVu
Y3Rpb24oc2VjdXJpdHlPcmlnaW4pCiAgICAgewotICAgICAgICBmb3IgKHZhciB0eXBlIGluIHRo
aXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW3NlY3VyaXR5T3JpZ2luXSkgewotICAgICAgICAgICAg
dmFyIGZpbGVTeXN0ZW0gPSB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltzZWN1cml0eU9yaWdp
bl1bdHlwZV07Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5b
c2VjdXJpdHlPcmlnaW5dW3R5cGVdOworICAgICAgICB2YXIgc2VjdXJpdHlPcmlnaW5JZCA9IHNl
Y3VyaXR5T3JpZ2luLmlkOworICAgICAgICBmb3IgKHZhciB0eXBlIGluIHRoaXMuX2ZpbGVTeXN0
ZW1zRm9yT3JpZ2luW3NlY3VyaXR5T3JpZ2luSWRdKSB7CisgICAgICAgICAgICB2YXIgZmlsZVN5
c3RlbSA9IHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW3NlY3VyaXR5T3JpZ2luSWRdW3R5cGVd
OworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW3NlY3VyaXR5
T3JpZ2luSWRdW3R5cGVdOwogICAgICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbVJlbW92ZWQoZmls
ZVN5c3RlbSk7CiAgICAgICAgIH0KLSAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVTeXN0ZW1zRm9y
T3JpZ2luW3NlY3VyaXR5T3JpZ2luXTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVTeXN0ZW1z
Rm9yT3JpZ2luW3NlY3VyaXR5T3JpZ2luSWRdOyAgCiAgICAgfSwKIAogICAgIC8qKgotICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBvcmlnaW4KKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZWN1
cml0eU9yaWdpbn0gb3JpZ2luCiAgICAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUKICAgICAgKiBA
cGFyYW0ge2Z1bmN0aW9uKG51bWJlciwgRmlsZVN5c3RlbUFnZW50LkVudHJ5PSl9IGNhbGxiYWNr
CiAgICAgICovCkBAIC0xMjEsNyArMTIzLDcgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2Rl
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjYWxsYmFjayhlcnJvckNvZGUsIGJhY2tlbmRS
b290RW50cnkpOwogICAgICAgICB9CiAKLSAgICAgICAgRmlsZVN5c3RlbUFnZW50LnJlcXVlc3RG
aWxlU3lzdGVtUm9vdChvcmlnaW4sIHR5cGUsIGlubmVyQ2FsbGJhY2suYmluZCh0aGlzKSk7Cisg
ICAgICAgIEZpbGVTeXN0ZW1BZ2VudC5yZXF1ZXN0RmlsZVN5c3RlbVJvb3Qob3JpZ2luLnRvUHJv
dG9jb2woKSwgdHlwZSwgaW5uZXJDYWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICB9LAogCiAgICAg
LyoqCkBAIC0xNDYsNyArMTQ4LDcgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90
b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcmln
aW4KKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gb3JpZ2luCiAg
ICAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUKICAgICAgKiBAcGFyYW0ge09iamVjdC48V2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtPn0gc3RvcmUKICAgICAgKiBAcGFyYW0g
e251bWJlcn0gZXJyb3JDb2RlCkBAIC0xNTQsNyArMTU2LDcgQEAgV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2ZpbGVTeXN0ZW1Sb290UmVj
ZWl2ZWQ6IGZ1bmN0aW9uKG9yaWdpbiwgdHlwZSwgc3RvcmUsIGVycm9yQ29kZSwgYmFja2VuZFJv
b3RFbnRyeSkKICAgICB7Ci0gICAgICAgIGlmICghZXJyb3JDb2RlICYmIGJhY2tlbmRSb290RW50
cnkgJiYgdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luXSA9PT0gc3RvcmUpIHsKKyAg
ICAgICAgaWYgKCFlcnJvckNvZGUgJiYgYmFja2VuZFJvb3RFbnRyeSAmJiB0aGlzLl9maWxlU3lz
dGVtc0Zvck9yaWdpbltvcmlnaW4uaWRdID09PSBzdG9yZSkgewogICAgICAgICAgICAgdmFyIGZp
bGVTeXN0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtKHRo
aXMsIG9yaWdpbiwgdHlwZSwgYmFja2VuZFJvb3RFbnRyeSk7CiAgICAgICAgICAgICBzdG9yZVt0
eXBlXSA9IGZpbGVTeXN0ZW07CiAgICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVtQWRkZWQoZmls
ZVN5c3RlbSk7CkBAIC0zMzUsMTQgKzMzNywxNCBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1v
ZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfcmVtb3ZlRmlsZVN5c3RlbTogZnVuY3Rp
b24oZmlsZVN5c3RlbSkKICAgICB7Ci0gICAgICAgIHZhciBvcmlnaW4gPSBmaWxlU3lzdGVtLm9y
aWdpbjsKKyAgICAgICAgdmFyIG9yaWdpbklkID0gZmlsZVN5c3RlbS5vcmlnaW4uaWQ7CiAgICAg
ICAgIHZhciB0eXBlID0gZmlsZVN5c3RlbS50eXBlOwotICAgICAgICBpZiAodGhpcy5fZmlsZVN5
c3RlbXNGb3JPcmlnaW5bb3JpZ2luXSAmJiB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmln
aW5dW3R5cGVdKSB7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmln
aW5bb3JpZ2luXVt0eXBlXTsKKyAgICAgICAgaWYgKHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2lu
W29yaWdpbklkXSAmJiB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5JZF1bdHlwZV0p
IHsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5J
ZF1bdHlwZV07CiAgICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVtUmVtb3ZlZChmaWxlU3lzdGVt
KTsKIAotICAgICAgICAgICAgaWYgKE9iamVjdC5pc0VtcHR5KHRoaXMuX2ZpbGVTeXN0ZW1zRm9y
T3JpZ2luW29yaWdpbl0pKQotICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9maWxlU3lzdGVt
c0Zvck9yaWdpbltvcmlnaW5dOworICAgICAgICAgICAgaWYgKE9iamVjdC5pc0VtcHR5KHRoaXMu
X2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbklkXSkpCisgICAgICAgICAgICAgICAgZGVsZXRl
IHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbklkXTsKICAgICAgICAgfQogICAgIH0s
CiAKQEAgLTM1OCw3ICszNjAsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkV2ZW50
VHlwZXMgPSB7CiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbU1vZGVsfSBmaWxlU3lzdGVtTW9kZWwKLSAqIEBwYXJhbSB7c3RyaW5nfSBvcmln
aW4KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSBvcmlnaW4KICAqIEBw
YXJhbSB7c3RyaW5nfSB0eXBlCiAgKiBAcGFyYW0ge0ZpbGVTeXN0ZW1BZ2VudC5FbnRyeX0gYmFj
a2VuZFJvb3RFbnRyeQogICovCkBAIC0zNzYsNyArMzc4LDcgQEAgV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1Nb2RlbC5GaWxlU3lzdGVtLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBnZXQgbmFt
ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gImZpbGVzeXN0ZW06IiArIHRoaXMub3JpZ2luICsg
Ii8iICsgdGhpcy50eXBlOworICAgICAgICByZXR1cm4gImZpbGVzeXN0ZW06IiArIHRoaXMub3Jp
Z2luLnVybCArICIvIiArIHRoaXMudHlwZTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCTW9kZWwuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQk1vZGVsLmpzCmluZGV4IGE1MjU3
YTI0YmNiYzM4ZGI0OGY0NzI2MjliZjMwYjEzYjEwOTZhYzQuLmZmNmNmNTMyOGNhNGFjZWNiMGIw
NjE4MTkxOTE3ODZiYjlhYzg2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvSW5kZXhlZERCTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9JbmRleGVkREJNb2RlbC5qcwpAQCAtMTQxLDggKzE0MSw4IEBAIFdlYklu
c3BlY3Rvci5JbmRleGVkREJNb2RlbC5FdmVudFR5cGVzID0gewogV2ViSW5zcGVjdG9yLkluZGV4
ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICBfcmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0g
ICAgICAgIGZvciAodmFyIHNlY3VyaXR5T3JpZ2luIGluIHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNl
Y3VyaXR5T3JpZ2luKQotICAgICAgICAgICAgdGhpcy5fcmVtb3ZlT3JpZ2luKHNlY3VyaXR5T3Jp
Z2luKTsKKyAgICAgICAgZm9yICh2YXIgc2VjdXJpdHlPcmlnaW5JZCBpbiB0aGlzLl9kYXRhYmFz
ZU5hbWVzQnlTZWN1cml0eU9yaWdpbikKKyAgICAgICAgICAgIHRoaXMuX3JlbW92ZU9yaWdpbihX
ZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4uZnJvbUlkKHNlY3VyaXR5T3JpZ2luSWQpKTsKICAg
ICAgICAgdmFyIHNlY3VyaXR5T3JpZ2lucyA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2Rl
bC5zZWN1cml0eU9yaWdpbnMoKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWN1cml0
eU9yaWdpbnMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICB0aGlzLl9hZGRPcmlnaW4oc2VjdXJp
dHlPcmlnaW5zW2ldKTsKQEAgLTE1MCw4ICsxNTAsOCBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERC
TW9kZWwucHJvdG90eXBlID0gewogCiAgICAgcmVmcmVzaERhdGFiYXNlTmFtZXM6IGZ1bmN0aW9u
KCkKICAgICB7Ci0gICAgICAgIGZvciAodmFyIHNlY3VyaXR5T3JpZ2luIGluIHRoaXMuX2RhdGFi
YXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luKQotICAgICAgICAgICAgdGhpcy5fbG9hZERhdGFiYXNl
TmFtZXMoc2VjdXJpdHlPcmlnaW4pOworICAgICAgICBmb3IgKHZhciBzZWN1cml0eU9yaWdpbklk
IGluIHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luKQorICAgICAgICAgICAgdGhp
cy5fbG9hZERhdGFiYXNlTmFtZXMoV2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2luLmZyb21JZChz
ZWN1cml0eU9yaWdpbklkKSk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTY3LDcgKzE2Nyw3IEBA
IFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAg
X3NlY3VyaXR5T3JpZ2luQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFy
IHNlY3VyaXR5T3JpZ2luID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChldmVudC5kYXRhKTsKKyAg
ICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuU2VjdXJp
dHlPcmlnaW59ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5fYWRkT3JpZ2luKHNlY3Vy
aXR5T3JpZ2luKTsKICAgICB9LAogCkBAIC0xNzYsMzMgKzE3NiwzNSBAQCBXZWJJbnNwZWN0b3Iu
SW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9zZWN1cml0eU9yaWdp
blJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHNlY3VyaXR5T3Jp
Z2luID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChldmVudC5kYXRhKTsKKyAgICAgICAgdmFyIHNl
Y3VyaXR5T3JpZ2luID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59ICov
IChldmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5fcmVtb3ZlT3JpZ2luKHNlY3VyaXR5T3JpZ2lu
KTsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3Jp
Z2luCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5
T3JpZ2luCiAgICAgICovCiAgICAgX2FkZE9yaWdpbjogZnVuY3Rpb24oc2VjdXJpdHlPcmlnaW4p
CiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2Vj
dXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5dKTsKLSAgICAgICAgdGhpcy5fZGF0YWJhc2VOYW1l
c0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5dID0gW107CisgICAgICAgIHZhciBzZWN1
cml0eU9yaWdpbklkID0gc2VjdXJpdHlPcmlnaW4uaWQ7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KCF0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9yaWdpbklkXSk7
CisgICAgICAgIHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3Jp
Z2luSWRdID0gW107CiAgICAgICAgIHRoaXMuX2xvYWREYXRhYmFzZU5hbWVzKHNlY3VyaXR5T3Jp
Z2luKTsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5
T3JpZ2luCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IHNlY3Vy
aXR5T3JpZ2luCiAgICAgICovCiAgICAgX3JlbW92ZU9yaWdpbjogZnVuY3Rpb24oc2VjdXJpdHlP
cmlnaW4pCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9kYXRhYmFzZU5hbWVz
QnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9yaWdpbl0pOwotICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2lu
XS5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMuX2RhdGFiYXNlUmVtb3ZlZChzZWN1cml0
eU9yaWdpbiwgdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmln
aW5dW2ldKTsKLSAgICAgICAgZGVsZXRlIHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3Jp
Z2luW3NlY3VyaXR5T3JpZ2luXTsKKyAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luSWQgPSBzZWN1
cml0eU9yaWdpbi5pZDsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZGF0YWJhc2VOYW1l
c0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5JZF0pOworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3Jp
Z2luSWRdLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5fZGF0YWJhc2VSZW1vdmVkKHNl
Y3VyaXR5T3JpZ2luLCB0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0
eU9yaWdpbklkXVtpXSk7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1
cml0eU9yaWdpbltzZWN1cml0eU9yaWdpbklkXTsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICog
QHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuU2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5T3JpZ2luCiAgICAgICogQHBhcmFtIHtBcnJheS48
c3RyaW5nPn0gZGF0YWJhc2VOYW1lcwogICAgICAqLwogICAgIF91cGRhdGVPcmlnaW5EYXRhYmFz
ZU5hbWVzOiBmdW5jdGlvbihzZWN1cml0eU9yaWdpbiwgZGF0YWJhc2VOYW1lcykKQEAgLTIxMSwx
MCArMjEzLDExIEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YWJhc2VOYW1lcy5sZW5ndGg7ICsraSkKICAg
ICAgICAgICAgIG5ld0RhdGFiYXNlTmFtZXNbZGF0YWJhc2VOYW1lc1tpXV0gPSB0cnVlOwogICAg
ICAgICB2YXIgb2xkRGF0YWJhc2VOYW1lcyA9IHt9OwotICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luXS5s
ZW5ndGg7ICsraSkKLSAgICAgICAgICAgIG9sZERhdGFiYXNlTmFtZXNbdGhpcy5fZGF0YWJhc2VO
YW1lc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5dW2ldXSA9IHRydWU7CisgICAgICAg
IHZhciBzZWN1cml0eU9yaWdpbklkID0gc2VjdXJpdHlPcmlnaW4uaWQ7CisgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJp
dHlPcmlnaW5JZF0ubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBvbGREYXRhYmFzZU5hbWVzW3Ro
aXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luSWRdW2ldXSA9
IHRydWU7CiAKLSAgICAgICAgdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bc2Vj
dXJpdHlPcmlnaW5dID0gZGF0YWJhc2VOYW1lczsKKyAgICAgICAgdGhpcy5fZGF0YWJhc2VOYW1l
c0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5JZF0gPSBkYXRhYmFzZU5hbWVzOwogCiAg
ICAgICAgIGZvciAodmFyIGRhdGFiYXNlTmFtZSBpbiBvbGREYXRhYmFzZU5hbWVzKSB7CiAgICAg
ICAgICAgICBpZiAoIW5ld0RhdGFiYXNlTmFtZXNbZGF0YWJhc2VOYW1lXSkKQEAgLTIyNyw3ICsy
MzAsNyBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAgIH0s
CiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlPcmlnaW4KKyAgICAg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gc2VjdXJpdHlPcmlnaW4KICAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YWJhc2VOYW1lCiAgICAgICovCiAgICAgX2RhdGFiYXNl
QWRkZWQ6IGZ1bmN0aW9uKHNlY3VyaXR5T3JpZ2luLCBkYXRhYmFzZU5hbWUpCkBAIC0yMzcsNyAr
MjQwLDcgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICB9
LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCisgICAg
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5T3JpZ2luCiAg
ICAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGFiYXNlTmFtZQogICAgICAqLwogICAgIF9kYXRhYmFz
ZVJlbW92ZWQ6IGZ1bmN0aW9uKHNlY3VyaXR5T3JpZ2luLCBkYXRhYmFzZU5hbWUpCkBAIC0yNDcs
NyArMjUwLDcgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsKICAg
ICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCisg
ICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5T3JpZ2lu
CiAgICAgICovCiAgICAgX2xvYWREYXRhYmFzZU5hbWVzOiBmdW5jdGlvbihzZWN1cml0eU9yaWdp
bikKICAgICB7CkBAIC0yNjIsMTIgKzI2NSwxMiBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9k
ZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgaWYgKCF0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltz
ZWN1cml0eU9yaWdpbl0pCisgICAgICAgICAgICBpZiAoIXRoaXMuX2RhdGFiYXNlTmFtZXNCeVNl
Y3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luLmlkXSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB0aGlzLl91cGRhdGVPcmlnaW5EYXRhYmFzZU5hbWVzKHNlY3VyaXR5T3Jp
Z2luLCBkYXRhYmFzZU5hbWVzKTsKICAgICAgICAgfQogCi0gICAgICAgIEluZGV4ZWREQkFnZW50
LnJlcXVlc3REYXRhYmFzZU5hbWVzKHNlY3VyaXR5T3JpZ2luLCBjYWxsYmFjay5iaW5kKHRoaXMp
KTsKKyAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNlTmFtZXMoc2VjdXJpdHlP
cmlnaW4udG9Qcm90b2NvbCgpLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICB9LAogCiAgICAg
LyoqCkBAIC0yODYsNyArMjg5LDcgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIGlmICghdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bZGF0YWJhc2VJ
ZC5zZWN1cml0eU9yaWdpbl0pCisgICAgICAgICAgICBpZiAoIXRoaXMuX2RhdGFiYXNlTmFtZXNC
eVNlY3VyaXR5T3JpZ2luW2RhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW4uaWRdKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIHZhciBkYXRhYmFzZU1vZGVsID0gbmV3IFdlYklu
c3BlY3Rvci5JbmRleGVkREJNb2RlbC5EYXRhYmFzZShkYXRhYmFzZUlkLCBkYXRhYmFzZVdpdGhP
YmplY3RTdG9yZXMudmVyc2lvbiwgZGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzLmludFZlcnNpb24p
OwogICAgICAgICAgICAgdGhpcy5fZGF0YWJhc2VzLnB1dChkYXRhYmFzZUlkLCBkYXRhYmFzZU1v
ZGVsKTsgCkBAIC0zMDYsNyArMzA5LDcgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5FdmVudFR5cGVzLkRhdGFiYXNlTG9hZGVkLCBkYXRh
YmFzZU1vZGVsKTsKICAgICAgICAgfQogCi0gICAgICAgIEluZGV4ZWREQkFnZW50LnJlcXVlc3RE
YXRhYmFzZShkYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luLCBkYXRhYmFzZUlkLm5hbWUsIGNhbGxi
YWNrLmJpbmQodGhpcykpOworICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJhc2Uo
ZGF0YWJhc2VJZC5zZWN1cml0eU9yaWdpbi50b1Byb3RvY29sKCksIGRhdGFiYXNlSWQubmFtZSwg
Y2FsbGJhY2suYmluZCh0aGlzKSk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMzYwLDcgKzM2Myw3
IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBp
ZiAoIXRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW2RhdGFiYXNlSWQuc2VjdXJp
dHlPcmlnaW5dKQorICAgICAgICAgICAgaWYgKCF0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0
eU9yaWdpbltkYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luLmlkXSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB2YXIgZW50cmllcyA9IFtdOwogICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBkYXRhRW50cmllcy5sZW5ndGg7ICsraSkgewpAQCAtMzczLDcgKzM3Niw3
IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0K
IAogICAgICAgICB2YXIga2V5UmFuZ2UgPSBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwua2V5
UmFuZ2VGcm9tSURCS2V5UmFuZ2UoaWRiS2V5UmFuZ2UpOwotICAgICAgICBJbmRleGVkREJBZ2Vu
dC5yZXF1ZXN0RGF0YShkYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luLCBkYXRhYmFzZU5hbWUsIG9i
amVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBza2lwQ291bnQsIHBhZ2VTaXplLCBrZXlSYW5nZSA/
IGtleVJhbmdlIDogdW5kZWZpbmVkLCBpbm5lckNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAg
ICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YShkYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luLnRv
UHJvdG9jb2woKSwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5hbWUsIGluZGV4TmFtZSwgc2tp
cENvdW50LCBwYWdlU2l6ZSwga2V5UmFuZ2UgPyBrZXlSYW5nZSA6IHVuZGVmaW5lZCwgaW5uZXJD
YWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICB9LAogCiAgICAgX19wcm90b19fOiBXZWJJbnNwZWN0
b3IuT2JqZWN0LnByb3RvdHlwZQpAQCAtMzk0LDcgKzM5Nyw3IEBAIFdlYkluc3BlY3Rvci5JbmRl
eGVkREJNb2RlbC5FbnRyeSA9IGZ1bmN0aW9uKGtleSwgcHJpbWFyeUtleSwgdmFsdWUpCiAKIC8q
KgogICogQGNvbnN0cnVjdG9yCi0gKiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlPcmlnaW4KKyAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSBzZWN1cml0eU9yaWdpbgogICog
QHBhcmFtIHtzdHJpbmd9IG5hbWUKICAqLwogV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLkRh
dGFiYXNlSWQgPSBmdW5jdGlvbihzZWN1cml0eU9yaWdpbiwgbmFtZSkKQEAgLTQwOSw3ICs0MTIs
NyBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuRGF0YWJhc2VJZC5wcm90b3R5cGUgPSB7
CiAgICAgICovCiAgICAgZXF1YWxzOiBmdW5jdGlvbihkYXRhYmFzZUlkKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMubmFtZSA9PT0gZGF0YWJhc2VJZC5uYW1lICYmIHRoaXMuc2VjdXJpdHlP
cmlnaW4gPT09IGRhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW47CisgICAgICAgIHJldHVybiB0aGlz
Lm5hbWUgPT09IGRhdGFiYXNlSWQubmFtZSAmJiB0aGlzLnNlY3VyaXR5T3JpZ2luLmlkID09PSBk
YXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luLmlkOwogICAgIH0sCiB9CiAvKioKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpz
CmluZGV4IGYyNmM3OTE4ZjY1N2RlYWU1NDE0ZDY5ODkyZGRjODZiZmQxMWZkMGMuLjE2MjNjOTY0
OGI0MjNiMGMwODljOTFiYTk2ZDA2MmZhNjAwM2U0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVRyZWVNb2RlbC5qcwpAQCAtMTIw
LDM4ICsxMjAsNDggQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZSA9
IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3Jp
Z2luCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5
T3JpZ2luCiAgICAgICovCiAgICAgX2FkZFNlY3VyaXR5T3JpZ2luOiBmdW5jdGlvbihzZWN1cml0
eU9yaWdpbikKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNv
dW50W3NlY3VyaXR5T3JpZ2luXSkgewotICAgICAgICAgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW5G
cmFtZUNvdW50W3NlY3VyaXR5T3JpZ2luXSA9IDE7CisgICAgICAgIHZhciBzZWN1cml0eU9yaWdp
bklkID0gc2VjdXJpdHlPcmlnaW4uaWQ7CisgICAgICAgIGlmICghdGhpcy5fc2VjdXJpdHlPcmln
aW5GcmFtZUNvdW50W3NlY3VyaXR5T3JpZ2luSWRdKSB7CisgICAgICAgICAgICB0aGlzLl9zZWN1
cml0eU9yaWdpbkZyYW1lQ291bnRbc2VjdXJpdHlPcmlnaW5JZF0gPSAxOwogICAgICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1v
ZGVsLkV2ZW50VHlwZXMuU2VjdXJpdHlPcmlnaW5BZGRlZCwgc2VjdXJpdHlPcmlnaW4pOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3NlY3VyaXR5T3JpZ2lu
RnJhbWVDb3VudFtzZWN1cml0eU9yaWdpbl0gKz0gMTsKKyAgICAgICAgdGhpcy5fc2VjdXJpdHlP
cmlnaW5GcmFtZUNvdW50W3NlY3VyaXR5T3JpZ2luSWRdICs9IDE7CiAgICAgfSwKIAogICAgIC8q
KgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWN1cml0eU9yaWdpbgorICAgICAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSBzZWN1cml0eU9yaWdpbgogICAgICAqLwogICAg
IF9yZW1vdmVTZWN1cml0eU9yaWdpbjogZnVuY3Rpb24oc2VjdXJpdHlPcmlnaW4pCiAgICAgewot
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9zZWN1cml0eU9yaWdpbkZyYW1lQ291bnRbc2Vj
dXJpdHlPcmlnaW5dKTsKLSAgICAgICAgaWYgKHRoaXMuX3NlY3VyaXR5T3JpZ2luRnJhbWVDb3Vu
dFtzZWN1cml0eU9yaWdpbl0gPT09IDEpIHsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9zZWN1
cml0eU9yaWdpbkZyYW1lQ291bnRbc2VjdXJpdHlPcmlnaW5dOworICAgICAgICB2YXIgc2VjdXJp
dHlPcmlnaW5JZCA9IHNlY3VyaXR5T3JpZ2luLmlkOworICAgICAgICBjb25zb2xlLmFzc2VydCh0
aGlzLl9zZWN1cml0eU9yaWdpbkZyYW1lQ291bnRbc2VjdXJpdHlPcmlnaW5JZF0pOworICAgICAg
ICBpZiAodGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50W3NlY3VyaXR5T3JpZ2luSWRdID09
PSAxKSB7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50
W3NlY3VyaXR5T3JpZ2luSWRdOwogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuU2VjdXJpdHlP
cmlnaW5SZW1vdmVkLCBzZWN1cml0eU9yaWdpbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KLSAgICAgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50W3NlY3VyaXR5T3Jp
Z2luXSAtPSAxOworICAgICAgICB0aGlzLl9zZWN1cml0eU9yaWdpbkZyYW1lQ291bnRbc2VjdXJp
dHlPcmlnaW5JZF0gLT0gMTsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHJldHVybiB7QXJy
YXkuPHN0cmluZz59CisgICAgICogQHJldHVybiB7QXJyYXkuPFdlYkluc3BlY3Rvci5TZWN1cml0
eU9yaWdpbj59CiAgICAgICovCiAgICAgc2VjdXJpdHlPcmlnaW5zOiBmdW5jdGlvbigpCiAgICAg
ewotICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNv
dW50KTsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBpZAorICAgICAg
ICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59CisgICAgICAgICAqLwor
ICAgICAgICBmdW5jdGlvbiBjb252ZXJ0ZXIoaWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4uZnJvbUlkKGlkKTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50
KS5tYXAoY29udmVydGVyKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC00MzEsNyArNDQxLDcgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lID0gZnVuY3Rpb24obW9kZWwsIHBhcmVudEZy
YW1lLCBwYXlsb2FkKQogICAgIHRoaXMuX2xvYWRlcklkID0gcGF5bG9hZC5sb2FkZXJJZDsKICAg
ICB0aGlzLl9uYW1lID0gcGF5bG9hZC5uYW1lOwogICAgIHRoaXMuX3VybCA9IHBheWxvYWQudXJs
OwotICAgIHRoaXMuX3NlY3VyaXR5T3JpZ2luID0gcGF5bG9hZC5zZWN1cml0eU9yaWdpbjsKKyAg
ICB0aGlzLl9zZWN1cml0eU9yaWdpbiA9IG5ldyBXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4o
cGF5bG9hZC5zZWN1cml0eU9yaWdpbik7CiAgICAgdGhpcy5fbWltZVR5cGUgPSBwYXlsb2FkLm1p
bWVUeXBlOwogCiAgICAgLyoqCkBAIC00NzQsNyArNDg0LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291
cmNlVHJlZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHJl
dHVybiB7c3RyaW5nfQorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdp
bn0KICAgICAgKi8KICAgICBnZXQgc2VjdXJpdHlPcmlnaW4oKQogICAgIHsKQEAgLTUyMSw3ICs1
MzEsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWUucHJvdG90eXBlID0gewogICAg
ICAgICB0aGlzLl9sb2FkZXJJZCA9IGZyYW1lUGF5bG9hZC5sb2FkZXJJZDsKICAgICAgICAgdGhp
cy5fbmFtZSA9IGZyYW1lUGF5bG9hZC5uYW1lOwogICAgICAgICB0aGlzLl91cmwgPSBmcmFtZVBh
eWxvYWQudXJsOwotICAgICAgICB0aGlzLl9zZWN1cml0eU9yaWdpbiA9IGZyYW1lUGF5bG9hZC5z
ZWN1cml0eU9yaWdpbjsKKyAgICAgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW4gPSBuZXcgV2ViSW5z
cGVjdG9yLlNlY3VyaXR5T3JpZ2luKGZyYW1lUGF5bG9hZC5zZWN1cml0eU9yaWdpbik7CiAgICAg
ICAgIHRoaXMuX21pbWVUeXBlID0gZnJhbWVQYXlsb2FkLm1pbWVUeXBlOwogCiAgICAgICAgIHZh
ciBtYWluUmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZXNNYXBbdGhpcy5fdXJsXTsKQEAgLTY0Miw2
ICs2NTIsNjkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lLnByb3RvdHlwZSA9IHsK
IAogLyoqCiAgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7UGFnZUFnZW50LlNlY3VyaXR5T3Jp
Z2lufSBzZWN1cml0eU9yaWdpbk9iamVjdAorICovCitXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmln
aW4gPSBmdW5jdGlvbihzZWN1cml0eU9yaWdpbk9iamVjdCkKK3sKKyAgICB0aGlzLl91cmwgPSBz
ZWN1cml0eU9yaWdpbk9iamVjdC51cmw7CisgICAgdGhpcy5fZG9tYWluU2V0SW5ET00gPSBzZWN1
cml0eU9yaWdpbk9iamVjdC5kb21haW5TZXRJbkRPTTsKK30KKworLyoqCisgKiBAcGFyYW0ge3N0
cmluZ30gaWQKKyAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0KKyAqLwor
V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2luLmZyb21JZCA9IGZ1bmN0aW9uKGlkKQoreworICAg
IHZhciBvYmplY3QgPSBKU09OLnBhcnNlKGlkKTsKKyAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rv
ci5TZWN1cml0eU9yaWdpbih7IHVybDogb2JqZWN0Ll91cmwsIGRvbWFpblNldEluRE9NOiBvYmpl
Y3QuX2RvbWFpblNldEluRE9NIH0pOworfQorCitXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4u
cHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8K
KyAgICBnZXQgaWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMp
OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisg
ICAgZ2V0IHVybCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fdXJsOworICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHs/c3RyaW5nfQorICAgICAqLworICAgIGdldCBkb21h
aW5TZXRJbkRPTSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZG9tYWluU2V0SW5ET00g
fHwgbnVsbDsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
U2VjdXJpdHlPcmlnaW59IG90aGVyCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8K
KyAgICBlcXVhbDogZnVuY3Rpb24ob3RoZXIpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5f
dXJsID09PSBvdGhlci5fdXJsICYmIHRoaXMuX2RvbWFpblNldEluRE9NID09IG90aGVyLl9kb21h
aW5TZXRJbkRPTTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7UGFnZUFnZW50
LlNlY3VyaXR5T3JpZ2lufQorICAgICAqLworICAgIHRvUHJvdG9jb2w6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB7IHVybDogdGhpcy5fdXJsLCBkb21haW5TZXRJbkRPTTogdGhp
cy5fZG9tYWluU2V0SW5ET00gfTsKKyAgICB9Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCiAg
KiBAaW1wbGVtZW50cyB7UGFnZUFnZW50LkRpc3BhdGNoZXJ9CiAgKi8KIFdlYkluc3BlY3Rvci5Q
YWdlRGlzcGF0Y2hlciA9IGZ1bmN0aW9uKHJlc291cmNlVHJlZU1vZGVsKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXgg
ODgwNjI2OWNjODlkMmMxNTViYWYzYWNlNmFhMDQ0MmJmODA0OGM2OC4uYTc0ZDhiYTA4ZDgxZWM2
YTBlOTYzNGJhNWYyNmRiN2YzZTM4Nzk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC0xNjEwLDcgKzE2MTAsNyBA
QCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAg
Ki8KIFdlYkluc3BlY3Rvci5JREJEYXRhYmFzZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oc3RvcmFn
ZVBhbmVsLCBtb2RlbCwgZGF0YWJhc2VJZCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuQmFzZVN0b3Jh
Z2VUcmVlRWxlbWVudC5jYWxsKHRoaXMsIHN0b3JhZ2VQYW5lbCwgbnVsbCwgZGF0YWJhc2VJZC5u
YW1lICsgIiAtICIgKyBkYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luLCBbImluZGV4ZWQtZGItc3Rv
cmFnZS10cmVlLWl0ZW0iXSk7CisgICAgV2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1l
bnQuY2FsbCh0aGlzLCBzdG9yYWdlUGFuZWwsIG51bGwsIGRhdGFiYXNlSWQubmFtZSArICIgLSAi
ICsgZGF0YWJhc2VJZC5zZWN1cml0eU9yaWdpbi51cmwsIFsiaW5kZXhlZC1kYi1zdG9yYWdlLXRy
ZWUtaXRlbSJdKTsKICAgICB0aGlzLl9tb2RlbCA9IG1vZGVsOwogICAgIHRoaXMuX2RhdGFiYXNl
SWQgPSBkYXRhYmFzZUlkOwogICAgIHRoaXMuX2lkYk9iamVjdFN0b3JlVHJlZUVsZW1lbnRzID0g
e307CkBAIC0xNjE5LDcgKzE2MTksNyBAQCBXZWJJbnNwZWN0b3IuSURCRGF0YWJhc2VUcmVlRWxl
bWVudCA9IGZ1bmN0aW9uKHN0b3JhZ2VQYW5lbCwgbW9kZWwsIGRhdGFiYXNlSWQpCiBXZWJJbnNw
ZWN0b3IuSURCRGF0YWJhc2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IGl0ZW1V
UkwoKQogICAgIHsKLSAgICAgICAgcmV0dXJuICJpbmRleGVkREI6Ly8iICsgdGhpcy5fZGF0YWJh
c2VJZC5zZWN1cml0eU9yaWdpbiArICIvIiArIHRoaXMuX2RhdGFiYXNlSWQubmFtZTsKKyAgICAg
ICAgcmV0dXJuICJpbmRleGVkREI6Ly8iICsgdGhpcy5fZGF0YWJhc2VJZC5zZWN1cml0eU9yaWdp
bi51cmwgKyAiLyIgKyB0aGlzLl9kYXRhYmFzZUlkLm5hbWU7CiAgICAgfSwKIAogICAgIG9uYXR0
YWNoOiBmdW5jdGlvbigpCkBAIC0xNzI2LDcgKzE3MjYsNyBAQCBXZWJJbnNwZWN0b3IuSURCT2Jq
ZWN0U3RvcmVUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHN0b3JhZ2VQYW5lbCwgbW9kZWwsIGRhdGFi
YXNlSQogV2ViSW5zcGVjdG9yLklEQk9iamVjdFN0b3JlVHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewogICAgIGdldCBpdGVtVVJMKCkKICAgICB7Ci0gICAgICAgIHJldHVybiAiaW5kZXhlZERCOi8v
IiArIHRoaXMuX2RhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW4gKyAiLyIgKyB0aGlzLl9kYXRhYmFz
ZUlkLm5hbWUgKyAiLyIgKyB0aGlzLl9vYmplY3RTdG9yZS5uYW1lOworICAgICAgICByZXR1cm4g
ImluZGV4ZWREQjovLyIgKyB0aGlzLl9kYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luLnVybCArICIv
IiArIHRoaXMuX2RhdGFiYXNlSWQubmFtZSArICIvIiArIHRoaXMuX29iamVjdFN0b3JlLm5hbWU7
CiAgICAgfSwKIAogICAgLyoqCkBAIC0xODMxLDcgKzE4MzEsNyBAQCBXZWJJbnNwZWN0b3IuSURC
SW5kZXhUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHN0b3JhZ2VQYW5lbCwgbW9kZWwsIGRhdGFiYXNl
SWQsIG9iagogV2ViSW5zcGVjdG9yLklEQkluZGV4VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewog
ICAgIGdldCBpdGVtVVJMKCkKICAgICB7Ci0gICAgICAgIHJldHVybiAiaW5kZXhlZERCOi8vIiAr
IHRoaXMuX2RhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW4gKyAiLyIgKyB0aGlzLl9kYXRhYmFzZUlk
Lm5hbWUgKyAiLyIgKyB0aGlzLl9vYmplY3RTdG9yZS5uYW1lICsgIi8iICsgdGhpcy5faW5kZXgu
bmFtZTsKKyAgICAgICAgcmV0dXJuICJpbmRleGVkREI6Ly8iICsgdGhpcy5fZGF0YWJhc2VJZC5z
ZWN1cml0eU9yaWdpbi51cmwgKyAiLyIgKyB0aGlzLl9kYXRhYmFzZUlkLm5hbWUgKyAiLyIgKyB0
aGlzLl9vYmplY3RTdG9yZS5uYW1lICsgIi8iICsgdGhpcy5faW5kZXgubmFtZTsKICAgICB9LAog
CiAgICAgLyoqCkBAIC0xODgzLDE0ICsxODgzLDIzIEBAIFdlYkluc3BlY3Rvci5JREJJbmRleFRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAqLwogV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VUcmVl
RWxlbWVudCA9IGZ1bmN0aW9uKHN0b3JhZ2VQYW5lbCwgZG9tU3RvcmFnZSwgY2xhc3NOYW1lKQog
ewotICAgIFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LmNhbGwodGhpcywgc3Rv
cmFnZVBhbmVsLCBudWxsLCBkb21TdG9yYWdlLnNlY3VyaXR5T3JpZ2luID8gZG9tU3RvcmFnZS5z
ZWN1cml0eU9yaWdpbiA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9jYWwgRmlsZXMiKSwgWyJk
b21zdG9yYWdlLXN0b3JhZ2UtdHJlZS1pdGVtIiwgY2xhc3NOYW1lXSk7CisgICAgdmFyIG9yaWdp
biA9IGRvbVN0b3JhZ2Uuc2VjdXJpdHlPcmlnaW47CisgICAgdmFyIHRpdGxlOworICAgIGlmIChv
cmlnaW4udXJsID09PSAiZmlsZTovLyIpCisgICAgICAgIHRpdGxlID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJMb2NhbCBGaWxlcyIpOworICAgIGVsc2UgeworICAgICAgICB2YXIgZG9tYWluID0g
b3JpZ2luLmRvbWFpblNldEluRE9NOworICAgICAgICB2YXIgc3VmZml4ID0gZG9tYWluID8gU3Ry
aW5nLnNwcmludGYoIiAoJXMpIiwgZG9tYWluKSA6ICIiOworICAgICAgICB0aXRsZSA9IG9yaWdp
bi51cmwgKyBzdWZmaXg7IAorICAgIH0gCisgICAgV2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJl
ZUVsZW1lbnQuY2FsbCh0aGlzLCBzdG9yYWdlUGFuZWwsIG51bGwsIHRpdGxlLCBbImRvbXN0b3Jh
Z2Utc3RvcmFnZS10cmVlLWl0ZW0iLCBjbGFzc05hbWVdKTsKICAgICB0aGlzLl9kb21TdG9yYWdl
ID0gZG9tU3RvcmFnZTsKIH0KIAogV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VUcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7CiAgICAgZ2V0IGl0ZW1VUkwoKQogICAgIHsKLSAgICAgICAgcmV0dXJuICJz
dG9yYWdlOi8vIiArIHRoaXMuX2RvbVN0b3JhZ2Uuc2VjdXJpdHlPcmlnaW4gKyAiLyIgKyAodGhp
cy5fZG9tU3RvcmFnZS5pc0xvY2FsU3RvcmFnZSA/ICJsb2NhbCIgOiAic2Vzc2lvbiIpOworICAg
ICAgICByZXR1cm4gInN0b3JhZ2U6Ly8iICsgdGhpcy5fZG9tU3RvcmFnZS5zZWN1cml0eU9yaWdp
bi51cmwgKyAiLyIgKyAodGhpcy5fZG9tU3RvcmFnZS5pc0xvY2FsU3RvcmFnZSA/ICJsb2NhbCIg
OiAic2Vzc2lvbiIpOwogICAgIH0sCiAKICAgICBvbnNlbGVjdDogZnVuY3Rpb24oc2VsZWN0ZWRC
eVVzZXIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggMzg0ZTZlNTBiMjRhMDVlMDY0MDA5ZjRiMjMxYjYwOTVkY2Y3YjcyMC4u
NTMzZDk3MDcyMWE1YjYzZjZmYWVkOGRjMTk3NzliOTA3OTg5MDU1ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIwIEBACisyMDEzLTAyLTI3ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogW1Byb3RvY29sXSBUdXJuIFNlY3VyaXR5T3Jp
Z2luIGludG8gYW4gb2JqZWN0IGNvbnRhaW5pbmcgImRvbWFpblNldEluRE9NIgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwOTYwCisKKyAgICAgICAg
Rm9sbG93IHRoZSBBUEkgYW5kIG1ldGhvZCBzaWduYXR1cmUgY2hhbmdlcy4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yLWVuYWJsZWQvZG9tLXN0b3JhZ2Utb3Blbi5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGVsZXRlLWVudHJ5Lmh0bWw6CisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGVzeXN0ZW0tcm9vdC5odG1sOgor
ICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1kYXRhLmh0
bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLW5h
bWVzLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFi
YXNlLXN0cnVjdHVyZS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291
cmNlLXRyZWUvcmVzb3VyY2UtdHJlZS1ldmVudHMuaHRtbDoKKwogMjAxMy0wMi0yNiAgQWRhbSBC
YXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2RvbS1zdG9yYWdl
LW9wZW4uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvZG9t
LXN0b3JhZ2Utb3Blbi5odG1sCmluZGV4IDEzMDIwMDcyNGU1YWFhZTQ0ZmEyNjI3NjI3MDE3OGFk
MjRmNmI2ZDAuLjgzM2U2ZmRlYjk1NTEyZjJjZWM0MmVkMDUyMjE1OTUxZGQ0NTI4MmIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvZG9tLXN0b3Jh
Z2Utb3Blbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJs
ZWQvZG9tLXN0b3JhZ2Utb3Blbi5odG1sCkBAIC0yMiw3ICsyMiw3IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgIHsKICAgICAgICAgdmFyIHN0b3JhZ2VzID0gV2ViSW5zcGVjdG9yLmRvbVN0b3JhZ2VN
b2RlbC5zdG9yYWdlcygpOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0b3JhZ2VzLmxl
bmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiU2VjdXJp
dHlPcmlnaW46ICIgKyBzdG9yYWdlc1tpXS5zZWN1cml0eU9yaWdpbik7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiU2VjdXJpdHlPcmlnaW46ICIgKyBzdG9yYWdlc1tpXS5z
ZWN1cml0eU9yaWdpbi51cmwpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IklzTG9jYWxTdG9yYWdlOiAiICsgc3RvcmFnZXNbaV0uaXNMb2NhbFN0b3JhZ2UpOwogICAgICAg
ICB9CiAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RlbGV0ZS1lbnRyeS5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9kZWxldGUt
ZW50cnkuaHRtbAppbmRleCBhZDhiNDM2MDg1ZmM1NDI2MjFiNjg4MzVlZTFlMjY2ZmM1YjE5YzE4
Li4wMzhmZDU3NDU0YTA2ZmFmNTkwZjAzYmY0MWU3MWM2MjQxNGJmMjhmIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RlbGV0ZS1lbnRyeS5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGVs
ZXRlLWVudHJ5Lmh0bWwKQEAgLTYzLDcgKzYzLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAg
IGZ1bmN0aW9uKGVycm9yQ29kZSkKICAgICAgICAgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoImVycm9yQ29kZTogIiArIGVycm9yQ29kZSk7Ci0gICAgICAgICAgICBmaWxl
U3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlU3lzdGVtUm9vdCgiaHR0cDovLzEyNy4wLjAuMTo4MDAw
IiwgInRlbXBvcmFyeSIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICAgICAgZmlsZVN5c3Rl
bU1vZGVsLl9yZXF1ZXN0RmlsZVN5c3RlbVJvb3QobmV3IFdlYkluc3BlY3Rvci5TZWN1cml0eU9y
aWdpbih7IHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIgfSksICJ0ZW1wb3JhcnkiLCB0ZXN0
U3RlcC5zaGlmdCgpKTsKICAgICAgICAgfSwKIAogICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUs
IGJhY2tlbmRSb290RW50cnkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5c3RlbS1yb290Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5c3RlbS1y
b290Lmh0bWwKaW5kZXggOGY1Y2VmYTkxZGQ4MTUxYzc3Mzc3MDAzZmQ5ZTQ3OWI0MzZlYjk3My4u
MjcxZWRjNjY3MTc5Mjg2YTg2Y2U5NjlkZjgyNWUyZDFhMWYwY2MzYSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGVzeXN0
ZW0tcm9vdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVz
eXN0ZW0vcmVxdWVzdC1maWxlc3lzdGVtLXJvb3QuaHRtbApAQCAtMTAsNiArMTAsMTEgQEAgZnVu
Y3Rpb24gdGVzdCgpCiB7CiAgICAgdmFyIGZpbGVTeXN0ZW1Nb2RlbCA9IG5ldyBXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbU1vZGVsOwogCisgICAgZnVuY3Rpb24gY3JlYXRlU2VjdXJpdHlPcmlnaW4o
dXJsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmln
aW4oeyB1cmw6IHVybH0pOworICAgIH0KKwogICAgIHZhciB0ZXN0U3RlcCA9IFsKICAgICAgICAg
ZnVuY3Rpb24oKQogICAgICAgICB7CkBAIC0yMCwxOSArMjUsMTkgQEAgZnVuY3Rpb24gdGVzdCgp
CiAKICAgICAgICAgZnVuY3Rpb24oKQogICAgICAgICB7Ci0gICAgICAgICAgICBmaWxlU3lzdGVt
TW9kZWwuX3JlcXVlc3RGaWxlU3lzdGVtUm9vdCgiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiwgInRl
bXBvcmFyeSIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVs
Ll9yZXF1ZXN0RmlsZVN5c3RlbVJvb3QoY3JlYXRlU2VjdXJpdHlPcmlnaW4oImh0dHA6Ly8xMjcu
MC4wLjE6ODAwMCIpLCAidGVtcG9yYXJ5IiwgdGVzdFN0ZXAuc2hpZnQoKSk7CiAgICAgICAgIH0s
CiAKICAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5KQogICAgICAg
ICB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlU3lzdGVtUm9vdFJlcXVlc3RS
ZXN1bHQoZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5KTsKLSAgICAgICAgICAgIGZpbGVTeXN0
ZW1Nb2RlbC5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KCJodHRwOi8vMTI3LjAuMC4xOjgwMDAiLCAi
Zml6emJ1enoiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2Rl
bC5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KGNyZWF0ZVNlY3VyaXR5T3JpZ2luKCJodHRwOi8vMTI3
LjAuMC4xOjgwMDAiKSwgImZpenpidXp6IiwgdGVzdFN0ZXAuc2hpZnQoKSk7CiAgICAgICAgIH0s
CiAKICAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5KQogICAgICAg
ICB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlU3lzdGVtUm9vdFJlcXVlc3RS
ZXN1bHQoZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5KTsKLSAgICAgICAgICAgIGZpbGVTeXN0
ZW1Nb2RlbC5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KCJodHRwOi8vZXhhbXBsZS5jb20iLCAidGVt
cG9yYXJ5IiwgdGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwu
X3JlcXVlc3RGaWxlU3lzdGVtUm9vdChjcmVhdGVTZWN1cml0eU9yaWdpbigiaHR0cDovL2V4YW1w
bGUuY29tIiksICJ0ZW1wb3JhcnkiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKICAgICAgICAgfSwKIAog
ICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGJhY2tlbmRSb290RW50cnkpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0
YS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFi
YXNlLWRhdGEuaHRtbAppbmRleCAxMzYzZjJlOTQzYTFlMzQ2YTA5ZmZhNTI3NzNjNmRkZjRhMzY1
ZDNkLi4wNDRlZDFmN2ExYzMyMWIyMzU5NDY1MzJiZmY3N2QyMzVkZDFjN2YyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0
YS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9k
YXRhYmFzZS1kYXRhLmh0bWwKQEAgLTgsNyArOCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIHZh
ciBJREJLZXlSYW5nZSA9IHdpbmRvdy5JREJLZXlSYW5nZSB8fCB3aW5kb3cud2Via2l0SURCS2V5
UmFuZ2U7CiAgICAgdmFyIGluZGV4ZWREQk1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5JbmRleGVk
REJNb2RlbCgpOwogICAgIHZhciBtYWluRnJhbWVJZCA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVRy
ZWVNb2RlbC5tYWluRnJhbWUuaWQ7Ci0gICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gImh0dHA6Ly8x
MjcuMC4wLjE6ODAwMCI7CisgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gbmV3IFdlYkluc3BlY3Rv
ci5TZWN1cml0eU9yaWdpbih7IHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIgfSk7CiAgICAg
dmFyIGRhdGFiYXNlTmFtZSA9ICJ0ZXN0RGF0YWJhc2UiOwogICAgIHZhciBvYmplY3RTdG9yZU5h
bWUgPSAidGVzdE9iamVjdFN0b3JlIjsKICAgICB2YXIgaW5kZXhOYW1lID0gInRlc3RJbmRleE5h
bWUiOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhl
ZGRiL2RhdGFiYXNlLW5hbWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbmRleGVkZGIvZGF0YWJhc2UtbmFtZXMuaHRtbAppbmRleCAwMTQzZjczODQyZWJlYWU5ODFk
ZDBjMjc5ODBiMTFjZTNhNDdlYWRkLi4zMzI4NDUzMTFiMjcwOWYyODczOGVkMTkxZDE2NmUxMjYz
ODQwZmQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRl
eGVkZGIvZGF0YWJhc2UtbmFtZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtbmFtZXMuaHRtbApAQCAtMTMsNyArMTMsNyBAQCBm
dW5jdGlvbiB0ZXN0KCkKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkR1bXBpbmcg
ZGF0YWJhc2UgbmFtZXM6Iik7CiAgICAgICAgIHZhciBzZWN1cml0eU9yaWdpbnMgPSBXZWJJbnNw
ZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuc2VjdXJpdHlPcmlnaW5zKCk7CiAgICAgICAgIHZhciBz
ZWN1cml0eU9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luc1swXTsKLSAgICAgICAgdmFyIG5hbWVzID0g
aW5kZXhlZERCTW9kZWwuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3Jp
Z2luXTsKKyAgICAgICAgdmFyIG5hbWVzID0gaW5kZXhlZERCTW9kZWwuX2RhdGFiYXNlTmFtZXNC
eVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luLmlkXTsKICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBuYW1lcy5sZW5ndGg7ICsraSkKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCIgICAgIiArIG5hbWVzW2ldKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5k
ZXhlZGRiL2RhdGFiYXNlLXN0cnVjdHVyZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLXN0cnVjdHVyZS5odG1sCmluZGV4IGQ4MjNiZWZm
NGQ2NmIyMzY2YTI2OWFmZDhkNTcyZTM2NTY0Y2NjMmUuLmQyNzI1M2FmNmFkMDYyNGNlYWVhYWIy
YzllY2FhNGRkMzE4NDYwNjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1zdHJ1Y3R1cmUuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2Utc3RydWN0dXJlLmh0bWwK
QEAgLTgsNyArOCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIHZhciBpbmRleGVkREJNb2RlbCA9
IG5ldyBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwoKTsKICAgICB2YXIgbWFpbkZyYW1lSWQg
PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwubWFpbkZyYW1lLmlkOwogICAgIHZhciBk
YXRhYmFzZU5hbWUgPSAidGVzdERhdGFiYXNlMSI7Ci0gICAgdmFyIHNlY3VyaXR5T3JpZ2luID0g
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gbmV3IFdl
Ykluc3BlY3Rvci5TZWN1cml0eU9yaWdpbih7IHVybDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIg
fSk7CiAgICAgdmFyIGRhdGFiYXNlSWQgPSBuZXcgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVs
LkRhdGFiYXNlSWQoc2VjdXJpdHlPcmlnaW4sIGRhdGFiYXNlTmFtZSk7CiAKICAgICBmdW5jdGlv
biBkdW1wRGF0YWJhc2UoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvcmVzb3VyY2UtdHJlZS9yZXNvdXJjZS10cmVlLWV2ZW50cy5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtdHJlZS9yZXNvdXJjZS10cmVlLWV2ZW50
cy5odG1sCmluZGV4IGVlMWVjOWQ3NWI1ZGQ3NWZjYzYwNzNmZjE0Mzk4ZDdmMDg5NzhkYmYuLmIx
N2Q3ZmNjYWI5NTMwZDI3YzA5YjlhYTRjZjkxZjViZTdmMWQ3MjMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXRyZWUvcmVzb3VyY2UtdHJlZS1l
dmVudHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJj
ZS10cmVlL3Jlc291cmNlLXRyZWUtZXZlbnRzLmh0bWwKQEAgLTMwLDcgKzMwLDcgQEAgZnVuY3Rp
b24gdGVzdCgpCiAgICAgICAgICAgICBjYXNlICJTZWN1cml0eU9yaWdpbkFkZGVkIjoKICAgICAg
ICAgICAgIGNhc2UgIlNlY3VyaXR5T3JpZ2luUmVtb3ZlZCI6CiAgICAgICAgICAgICAgICAgdmFy
IHNlY3VyaXR5T3JpZ2luID0gZXZlbnQuZGF0YTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiICAgICIgKyBldmVudE5hbWUgKyAiIDogIiArIHNlY3VyaXR5T3JpZ2lu
KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiICAgICIgKyBldmVu
dE5hbWUgKyAiIDogIiArIHNlY3VyaXR5T3JpZ2luLnVybCk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgfQpAQCAtNTksNyArNTksNyBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZnJhbWVQYXlsb2FkLmxvYWRlcklkID0gImxvYWRl
ci0iICsgaWQ7CiAgICAgICAgIGZyYW1lUGF5bG9hZC5uYW1lID0gImZyYW1lLSIgKyBpZDsKICAg
ICAgICAgZnJhbWVQYXlsb2FkLnVybCA9ICJodHRwOi8vZnJhbWUvIiArIChuYW1lIHx8IGlkKSAr
ICIuaHRtbCI7Ci0gICAgICAgIGZyYW1lUGF5bG9hZC5zZWN1cml0eU9yaWdpbiA9IGZyYW1lUGF5
bG9hZC51cmw7CisgICAgICAgIGZyYW1lUGF5bG9hZC5zZWN1cml0eU9yaWdpbiA9IHsgdXJsOiBm
cmFtZVBheWxvYWQudXJsIH07CiAgICAgICAgIGZyYW1lUGF5bG9hZC5taW1lVHlwZSA9ICJ0ZXh0
L2h0bWwiOwogICAgICAgICByZXR1cm4gZnJhbWVQYXlsb2FkOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190727</attachid>
            <date>2013-02-28 07:51:39 -0800</date>
            <delta_ts>2013-02-28 08:11:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110960-20130228194751.patch</filename>
            <type>text/plain</type>
            <size>75608</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0Mjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjkxNmYyZWE0MjlhMjFi
NzU1OTRkMjIzOWE3MGEzOTZlMjM2ZmQ1Ny4uNjQ0MTFlMDQxMWQ2ZTA4OGUyZjY0MTc2ZTBkZjI0
Zjg0ZmU2OWI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDEzLTAyLTI4ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW1Byb3RvY29sXSBUdXJuIFNlY3VyaXR5T3JpZ2luIGludG8gYW4gb2JqZWN0IGNvbnRh
aW5pbmcgImRvbWFpblNldEluRE9NIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTEwOTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlIHJlbGF0ZWQgYmFja2VuZCBjb2RlIGhhcyBiZWVuIGNoYW5nZWQg
dG8gaGFuZGxlIFNlY3VyaXR5T3JpZ2luIGFzIGFuIEluc3BlY3Rvck9iamVjdCByYXRoZXIgdGhh
biBhIFN0cmluZy4KKyAgICAgICAgV2hlcmUgYXBwbGljYWJsZSwgdGhlIFVJIGNvZGUgaGFzIGJl
ZW4gY2hhbmdlZCB0byB1c2Ugc2VjdXJpdHlPcmlnaW4udWlUaXRsZSgpIGFzIGl0cyB2aXN1YWwg
cmVwcmVzZW50YXRpb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246IEludHJvZHVjZSBQYWdl
LlNlY3VyaXR5T3JpZ2luLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuY3BwOiBGb2xsb3cgdGhlIHByb3RvY29sIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFnZUlkKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZmluZFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcDogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RGaWxlU3lzdGVtUm9vdCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhYmFzZU5hbWVz
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0
YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVl
c3REYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Omluc3BlY3Rvck9iamVjdFRvU2VjdXJp
dHlPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZWN1cml0
eU9yaWdpblRvSW5zcGVjdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6ZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JGcmFtZSk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvRE9NU3RvcmFnZS5qczogRGl0dG8uCisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFn
ZS5zdG9yYWdlSWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5wcm90
b3R5cGUuX3NlY3VyaXR5T3JpZ2luQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0
b3JhZ2VNb2RlbC5wcm90b3R5cGUuX3NlY3VyaXR5T3JpZ2luUmVtb3ZlZCk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanM6IERpdHRvLgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuZXZhbHVhdGUpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzOiBEaXR0by4KKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLl9yZXNldCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZS5fc2VjdXJpdHlPcmln
aW5BZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlw
ZS5fc2VjdXJpdHlPcmlnaW5SZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtTW9kZWwucHJvdG90eXBlLl9hZGRPcmlnaW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUuX3JlbW92ZU9yaWdpbik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZS5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLl9maWxlU3lz
dGVtUm9vdFJlY2VpdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwu
cHJvdG90eXBlLl9yZW1vdmVGaWxlU3lzdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtTW9kZWwuRmlsZVN5c3RlbS5wcm90b3R5cGUuZ2V0IG5hbWUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCTW9kZWwuanM6IERpdHRvLgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZS5fcmVzZXQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZS5yZWZyZXNoRGF0YWJhc2VOYW1lcyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlLl9zZWN1cml0
eU9yaWdpbkFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90
b3R5cGUuX3NlY3VyaXR5T3JpZ2luUmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5k
ZXhlZERCTW9kZWwucHJvdG90eXBlLl9hZGRPcmlnaW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZS5fcmVtb3ZlT3JpZ2luKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUuX3VwZGF0ZU9yaWdpbkRhdGFiYXNlTmFt
ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZS5fbG9h
ZERhdGFiYXNlTmFtZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnBy
b3RvdHlwZS5fbG9hZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJN
b2RlbC5wcm90b3R5cGUuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5w
cm90b3R5cGUuX3JlcXVlc3REYXRhKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJN
b2RlbC5EYXRhYmFzZUlkLnByb3RvdHlwZS5lcXVhbHMpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwuanM6IERpdHRvLgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJlc291cmNlVHJlZU1vZGVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRy
ZWVNb2RlbC5wcm90b3R5cGUuX2FkZEZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNv
dXJjZVRyZWVNb2RlbC5wcm90b3R5cGUuc2VjdXJpdHlPcmlnaW5Gb3JJZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLnNlY3VyaXR5T3JpZ2lucyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLl9oYW5k
bGVNYWluRnJhbWVEZXRhY2hlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVl
TW9kZWwucHJvdG90eXBlLl9mcmFtZU5hdmlnYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLl9mcmFtZURldGFjaGVkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5TZWN1cml0eU9yaWdpblRyYWNrZXIpOiBGYWN0
b3JlZCBvdXQgU2VjdXJpdHlPcmlnaW4gdHJhY2tpbmcuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VUcmVlTW9kZWwuU2VjdXJpdHlPcmlnaW5UcmFja2VyLnByb3RvdHlwZS5fYWRkU2Vj
dXJpdHlPcmlnaW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLlNl
Y3VyaXR5T3JpZ2luVHJhY2tlci5wcm90b3R5cGUuX3JlbW92ZVNlY3VyaXR5T3JpZ2luKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5TZWN1cml0eU9yaWdpblRyYWNr
ZXIucHJvdG90eXBlLl91bmJpbmRTZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVzb3VyY2VUcmVlTW9kZWwuU2VjdXJpdHlPcmlnaW5UcmFja2VyLnByb3RvdHlwZS5fYmlu
ZFNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2Rl
bC5TZWN1cml0eU9yaWdpblRyYWNrZXIucHJvdG90eXBlLl9kZXRhY2hNYWluRnJhbWUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLlNlY3VyaXR5T3JpZ2luVHJhY2tl
ci5wcm90b3R5cGUuX3NlY3VyaXR5T3JpZ2luRm9ySWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlJlc291cmNlVHJlZU1vZGVsLlNlY3VyaXR5T3JpZ2luVHJhY2tlci5wcm90b3R5cGUuX3NlY3Vy
aXR5T3JpZ2lucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lLnByb3RvdHlwZS5fbmF2aWdh
dGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2luKTogVGhlIGZyb250LWVu
ZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgUGFnZS5TZWN1cml0eU9yaWdpbiB0eXBlLgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2luLnByb3RvdHlwZS5pZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4ucHJvdG90eXBlLnVybCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4ucHJvdG90eXBlLmRvbWFpblNldEluRE9NKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbi5wcm90b3R5cGUuZXF1YWwpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2luLnByb3RvdHlwZS51aVRpdGxlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbi5wcm90b3R5cGUudG9Qcm90b2NvbCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczogRm9sbG93IHRo
ZSBwcm90b2NvbCBjaGFuZ2UuCisgICAgICAgIChXZWJJbnNwZWN0b3IuSURCRGF0YWJhc2VUcmVl
RWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSURCRGF0YWJhc2VUcmVlRWxlbWVudC5w
cm90b3R5cGUuZ2V0IGl0ZW1VUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLklEQk9iamVjdFN0
b3JlVHJlZUVsZW1lbnQucHJvdG90eXBlLmdldCBpdGVtVVJMKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5JREJJbmRleFRyZWVFbGVtZW50LnByb3RvdHlwZS5nZXQgaXRlbVVSTCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZVRyZWVFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlLmdldCBpdGVtVVJMKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvUnVudGltZU1vZGVsLmpzOiBEaXR0by4KKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5GcmFtZUV4ZWN1dGlvbkNvbnRleHRMaXN0LnByb3RvdHlwZS5jb250ZXh0QnlTZWN1cml0
eU9yaWdpbik6CisKIDIwMTMtMDItMjggIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgd29uJ3QgY29tcGlsZSBhZnRl
ciByMTQ0MjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Lmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggM2Vk
MzExNzRjM2QwYTYxOTA2YjYxZTY0ODkwZGZhNWE0NTQxODc1YS4uMGU1Nzc3NGM3NmRkZWNhZTE1
NzgzNjUwZTRmM2UxMjlmNDhhYTEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbgpAQCAtMTAyLDYgKzEwMiwxNSBAQAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJSZXNvdXJjZSB0eXBlIGFzIGl0IHdhcyBwZXJjZWl2ZWQgYnkgdGhlIHJlbmRlcmluZyBl
bmdpbmUuIgogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAi
aWQiOiAiU2VjdXJpdHlPcmlnaW4iLAorICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIs
CisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRlc2NyaXB0b3Igb2YgdGhlIFNlY3Vy
aXR5T3JpZ2luIG9iamVjdC4iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInVybCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNj
cmlwdGlvbiI6ICJBc3NvY2lhdGVkIFNlY3VyaXR5T3JpZ2luIFVSTC4iIH0sCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiZG9tYWluU2V0SW5ET00iLCAidHlwZSI6ICJzdHJpbmciLCAi
b3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiU2VjdXJpdHlPcmlnaW4gZG9tYWluLCBp
ZiBvbmUgaGFzIGJlZW4gc2V0IGluIERPTS4iIH0KKyAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJpZCI6ICJGcmFtZSIsCiAg
ICAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiSW5mb3JtYXRpb24gYWJvdXQgdGhlIEZyYW1lIG9uIHRoZSBwYWdlLiIsCkBAIC0x
MTEsNyArMTIwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJsb2FkZXJJZCIs
ICIkcmVmIjogIk5ldHdvcmsuTG9hZGVySWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBv
ZiB0aGUgbG9hZGVyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZyYW1lLiIgfSwKICAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJuYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIkZyYW1lJ3MgbmFtZSBhcyBzcGVjaWZpZWQgaW4gdGhlIHRh
Zy4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3Ry
aW5nIiwgImRlc2NyaXB0aW9uIjogIkZyYW1lIGRvY3VtZW50J3MgVVJMLiIgfSwKLSAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJzZWN1cml0eU9yaWdpbiIsICJ0eXBlIjogInN0cmluZyIs
ICJkZXNjcmlwdGlvbiI6ICJGcmFtZSBkb2N1bWVudCdzIHNlY3VyaXR5IG9yaWdpbi4iIH0sCisg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2VjdXJpdHlPcmlnaW4iLCAiJHJlZiI6ICJT
ZWN1cml0eU9yaWdpbiIsICJkZXNjcmlwdGlvbiI6ICJGcmFtZSBkb2N1bWVudCdzIHNlY3VyaXR5
IG9yaWdpbi4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWltZVR5cGUiLCAi
dHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiRnJhbWUgZG9jdW1lbnQncyBtaW1lVHlw
ZSBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBicm93c2VyLiIgfQogICAgICAgICAgICAgICAgIF0sCiAg
ICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKQEAgLTU5MSw3ICs2MDAsNyBAQAogICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInZhbHVlIiwgInR5cGUiOiAiYW55IiwgIm9wdGlvbmFs
IjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlJlbW90ZSBvYmplY3QgdmFsdWUgKGluIGNhc2Ugb2Yg
cHJpbWl0aXZlIHZhbHVlcyBvciBKU09OIHZhbHVlcyBpZiBpdCB3YXMgcmVxdWVzdGVkKS4iIH0s
CiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGVzY3JpcHRpb24iLCAidHlwZSI6ICJz
dHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiU3RyaW5nIHJlcHJlc2Vu
dGF0aW9uIG9mIHRoZSBvYmplY3QuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
Im9iamVjdElkIiwgIiRyZWYiOiAiUmVtb3RlT2JqZWN0SWQiLCAib3B0aW9uYWwiOiB0cnVlLCAi
ZGVzY3JpcHRpb24iOiAiVW5pcXVlIG9iamVjdCBpZGVudGlmaWVyIChmb3Igbm9uLXByaW1pdGl2
ZSB2YWx1ZXMpLiIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwcmV2aWV3Iiwg
IiRyZWYiOiAiT2JqZWN0UHJldmlldyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJQcmV2aWV3IGNvbnRhaW5zaW5nIGFiYnJldmlhdGVkIHByb3BlcnR5IHZhbHVlcy4iLCAiaGlk
ZGVuIjogdHJ1ZSB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJldmlldyIsICIk
cmVmIjogIk9iamVjdFByZXZpZXciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAi
UHJldmlldyBjb250YWluaW5nIGFiYnJldmlhdGVkIHByb3BlcnR5IHZhbHVlcy4iLCAiaGlkZGVu
IjogdHJ1ZSB9CiAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfSwKICAgICAgICAgICAg
IHsKQEAgLTEzNzIsNyArMTM4MSw3IEBACiAgICAgICAgICAgICAgICAgIm5hbWUiOiAicmVxdWVz
dERhdGFiYXNlTmFtZXMiLAogICAgICAgICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAg
ICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
c2VjdXJpdHlPcmlnaW4iLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiU2VjdXJp
dHkgb3JpZ2luLiIgfQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNlY3VyaXR5T3Jp
Z2luIiwgIiRyZWYiOiAiUGFnZS5TZWN1cml0eU9yaWdpbiIsICJkZXNjcmlwdGlvbiI6ICJTZWN1
cml0eSBvcmlnaW4uIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAicmV0
dXJucyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkYXRhYmFzZU5hbWVzIiwg
InR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwgImRlc2NyaXB0
aW9uIjogIkRhdGFiYXNlIG5hbWVzIGZvciBvcmlnaW4uIiB9CkBAIC0xMzgzLDcgKzEzOTIsNyBA
QAogICAgICAgICAgICAgICAgICJuYW1lIjogInJlcXVlc3REYXRhYmFzZSIsCiAgICAgICAgICAg
ICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzZWN1cml0eU9yaWdpbiIsICJ0eXBlIjogInN0
cmluZyIsICJkZXNjcmlwdGlvbiI6ICJTZWN1cml0eSBvcmlnaW4uIiB9LAorICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInNlY3VyaXR5T3JpZ2luIiwgIiRyZWYiOiAiUGFnZS5TZWN1cml0
eU9yaWdpbiIsICJkZXNjcmlwdGlvbiI6ICJTZWN1cml0eSBvcmlnaW4uIiB9LAogICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImRhdGFiYXNlTmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJk
ZXNjcmlwdGlvbiI6ICJEYXRhYmFzZSBuYW1lLiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAg
ICAgICAgICAgICAgInJldHVybnMiOiBbCkBAIC0xMzk1LDcgKzE0MDQsNyBAQAogICAgICAgICAg
ICAgICAgICJuYW1lIjogInJlcXVlc3REYXRhIiwKICAgICAgICAgICAgICAgICAiYXN5bmMiOiB0
cnVlLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInNlY3VyaXR5T3JpZ2luIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0
aW9uIjogIlNlY3VyaXR5IG9yaWdpbi4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAic2VjdXJpdHlPcmlnaW4iLCAiJHJlZiI6ICJQYWdlLlNlY3VyaXR5T3JpZ2luIiwgImRlc2Ny
aXB0aW9uIjogIlNlY3VyaXR5IG9yaWdpbi4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiZGF0YWJhc2VOYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkRh
dGFiYXNlIG5hbWUuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm9iamVjdFN0
b3JlTmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJPYmplY3Qgc3RvcmUg
bmFtZS4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaW5kZXhOYW1lIiwgInR5
cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkluZGV4IG5hbWUsIGVtcHR5IHN0cmluZyBm
b3Igb2JqZWN0IHN0b3JlIGRhdGEgcmVxdWVzdHMuIiB9LApAQCAtMTQyMiw3ICsxNDMxLDcgQEAK
ICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRE9NIFN0b3JhZ2UgaWRlbnRpZmllci4i
LAogICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlLAogICAgICAgICAgICAgICAgICJwcm9w
ZXJ0aWVzIjogWwotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNlY3VyaXR5T3JpZ2lu
IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlNlY3VyaXR5IG9yaWdpbiBmb3Ig
dGhlIHN0b3JhZ2UuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNlY3VyaXR5
T3JpZ2luIiwgIiRyZWYiOiAiUGFnZS5TZWN1cml0eU9yaWdpbiIsICJkZXNjcmlwdGlvbiI6ICJT
ZWN1cml0eSBvcmlnaW4gZm9yIHRoZSBzdG9yYWdlLiIgfSwKICAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJpc0xvY2FsU3RvcmFnZSIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRp
b24iOiAiV2hldGhlciB0aGUgc3RvcmFnZSBpcyBsb2NhbCBzdG9yYWdlIChub3Qgc2Vzc2lvbiBz
dG9yYWdlKS4iIH0KICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICB9LApAQCAtMTYyOCw3
ICsxNjM3LDcgQEAKICAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXF1ZXN0RmlsZVN5c3RlbVJv
b3QiLAogICAgICAgICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAgICAgICAgInBh
cmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib3JpZ2luIiwgInR5
cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlNlY3VyaXR5IG9yaWdpbiBvZiByZXF1ZXN0
aW5nIEZpbGVTeXN0ZW0uIE9uZSBvZiBmcmFtZXMgaW4gY3VycmVudCBwYWdlIG5lZWRzIHRvIGhh
dmUgdGhpcyBzZWN1cml0eSBvcmlnaW4uIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogIm9yaWdpbiIsICIkcmVmIjogIlBhZ2UuU2VjdXJpdHlPcmlnaW4iLCAiZGVzY3JpcHRpb24i
OiAiU2VjdXJpdHkgb3JpZ2luIG9mIHJlcXVlc3RpbmcgRmlsZVN5c3RlbS4gT25lIG9mIGZyYW1l
cyBpbiBjdXJyZW50IHBhZ2UgbmVlZHMgdG8gaGF2ZSB0aGlzIHNlY3VyaXR5IG9yaWdpbi4iIH0s
CiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidHlwZSIsICJ0eXBlIjogInN0cmluZyIs
ICJlbnVtIjogWyJ0ZW1wb3JhcnkiLCAicGVyc2lzdGVudCJdLCAiZGVzY3JpcHRpb24iOiAiRmls
ZVN5c3RlbSB0eXBlIG9mIHJlcXVlc3RpbmcgRmlsZVN5c3RlbS4iIH0KICAgICAgICAgICAgICAg
ICBdLAogICAgICAgICAgICAgICAgICJyZXR1cm5zIjogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAppbmRleCBiM2UwZTE2
Y2VlMjgyMGNjNjA3ODEzMzRiMGZmOTA5ODdhZTgwYWQ2Li4zNWVmZjAxODA4YzZkOTE5YjZlY2I5
ODhkMGU1ZjRiN2JmMzIwNzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIFN0cmlu
ZyBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2VJZChTdG9yYWdlKiBzdG9yYWdlKQog
UGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2VJZChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4s
IGJvb2wgaXNMb2NhbFN0b3JhZ2UpCiB7CiAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpET01TdG9y
YWdlOjpTdG9yYWdlSWQ6OmNyZWF0ZSgpCi0gICAgICAgIC5zZXRTZWN1cml0eU9yaWdpbihzZWN1
cml0eU9yaWdpbi0+dG9SYXdTdHJpbmcoKSkKKyAgICAgICAgLnNldFNlY3VyaXR5T3JpZ2luKElu
c3BlY3RvclBhZ2VBZ2VudDo6c2VjdXJpdHlPcmlnaW5Ub0luc3BlY3Rvck9iamVjdChzZWN1cml0
eU9yaWdpbikpCiAgICAgICAgIC5zZXRJc0xvY2FsU3RvcmFnZShpc0xvY2FsU3RvcmFnZSkucmVs
ZWFzZSgpOwogfQogCkBAIC0yMTYsOSArMjE2LDkgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQ6OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5LCBjb24K
IAogUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpmaW5k
U3RvcmFnZUFyZWEoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiYgc3RvcmFnZUlkLCBGcmFtZSomIHRhcmdldEZyYW1lKQogewotICAgIFN0cmlu
ZyBzZWN1cml0eU9yaWdpbjsKICAgICBib29sIGlzTG9jYWxTdG9yYWdlID0gZmFsc2U7Ci0gICAg
Ym9vbCBzdWNjZXNzID0gc3RvcmFnZUlkLT5nZXRTdHJpbmcoInNlY3VyaXR5T3JpZ2luIiwgJnNl
Y3VyaXR5T3JpZ2luKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBzZWN1cml0eU9yaWdp
bk9iamVjdCA9IHN0b3JhZ2VJZC0+Z2V0T2JqZWN0KCJzZWN1cml0eU9yaWdpbiIpOworICAgIGJv
b2wgc3VjY2VzcyA9IHNlY3VyaXR5T3JpZ2luT2JqZWN0ID8gdHJ1ZSA6IGZhbHNlOwogICAgIGlm
IChzdWNjZXNzKQogICAgICAgICBzdWNjZXNzID0gc3RvcmFnZUlkLT5nZXRCb29sZWFuKCJpc0xv
Y2FsU3RvcmFnZSIsICZpc0xvY2FsU3RvcmFnZSk7CiAgICAgaWYgKCFzdWNjZXNzKSB7CkBAIC0y
MjcsMTAgKzIyNywxMCBAQCBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQ6OmZpbmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyogZQogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAKLSAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2VBZ2VudC0+ZmluZEZyYW1lV2l0
aFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKKyAgICBGcmFtZSogZnJhbWUgPSBtX3Bh
Z2VBZ2VudC0+ZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKGVycm9yU3RyaW5nLCBzZWN1cml0
eU9yaWdpbk9iamVjdC5nZXQoKSk7CiAgICAgaWYgKCFmcmFtZSkgewotICAgICAgICBpZiAoZXJy
b3JTdHJpbmcpCi0gICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSAiRnJhbWUgbm90IGZvdW5kIGZv
ciB0aGUgZ2l2ZW4gc2VjdXJpdHkgb3JpZ2luIjsKKyAgICAgICAgaWYgKGVycm9yU3RyaW5nICYm
IGVycm9yU3RyaW5nLT5pc0VtcHR5KCkpCisgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJGcmFt
ZSBub3QgZm91bmQgZm9yIHRoZSBnaXZlbiBzZWN1cml0eSBvcmlnaW4iOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAgICAgdGFyZ2V0RnJhbWUgPSBmcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKaW5kZXggMmIw
ZDY0NDMxOWY5NGRiMTFmMzcxNmIzMjg3MTllOGY3ZDQxMjYwZS4uMTM2YzFhOGI1NDY2YzBlYjgz
ZWVkYTM4ZWJhOTA2OWFkOGZhMTUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKQEAgLTYzMCwxMiArNjMwLDE3IEBA
IHZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKICAg
ICBtX3N0YXRlLT5zZXRCb29sZWFuKEZpbGVTeXN0ZW1BZ2VudFN0YXRlOjpmaWxlU3lzdGVtQWdl
bnRFbmFibGVkLCBtX2VuYWJsZWQpOwogfQogCi12b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dDo6cmVxdWVzdEZpbGVTeXN0ZW1Sb290KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5n
JiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxSZXF1ZXN0RmlsZVN5c3Rl
bVJvb3RDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQordm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQ6OnJlcXVlc3RGaWxlU3lzdGVtUm9vdChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBvcmlnaW5PYmplY3QsIGNvbnN0IFN0cmluZyYgdHlwZSwg
UGFzc1JlZlB0cjxSZXF1ZXN0RmlsZVN5c3RlbVJvb3RDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNr
KQogewogICAgIGlmICghYXNzZXJ0RW5hYmxlZChlcnJvcikpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBhc3Nl
cnRTY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3JpZ2luKGVycm9yLCBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4pLmdldCgpKTsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IHNlY3VyaXR5T3JpZ2luID0gSW5zcGVjdG9yUGFnZUFnZW50OjppbnNwZWN0b3JPYmplY3RU
b1NlY3VyaXR5T3JpZ2luKG9yaWdpbk9iamVjdC5nZXQoKSk7CisgICAgaWYgKCFzZWN1cml0eU9y
aWdpbikgeworICAgICAgICAqZXJyb3IgPSAiSW52YWxpZCBzZWN1cml0eSBvcmlnaW4iOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQgPSBhc3NlcnRTY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3JpZ2luKGVy
cm9yLCBzZWN1cml0eU9yaWdpbi5nZXQoKSk7CiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250
ZXh0KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaAppbmRleCBiZWIyYzk5NTczNzdhMTI5ZjczN2Jj
NTBjOWEyZjAzMGUzMjNkZGI5Li43MDU1MmI0YWE2ODU4ZDkwZjI3ZjI5MTljYjBmNTg3ZGVkYmQ5
MWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudC5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZW5hYmxlKEVycm9yU3RyaW5nKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUo
RXJyb3JTdHJpbmcqKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RmlsZVN5
c3RlbVJvb3QoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiB0eXBlU3RyaW5nLCBQYXNzUmVmUHRyPFJlcXVlc3RGaWxlU3lzdGVtUm9vdENhbGxiYWNrPikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGaWxlU3lzdGVtUm9vdChFcnJvclN0
cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgdHlwZVN0cmluZywgUGFzc1JlZlB0cjxSZXF1ZXN0RmlsZVN5c3RlbVJvb3RDYWxsYmFjaz4p
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGlyZWN0b3J5Q29udGVudChFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPFJlcXVlc3REaXJlY3RvcnlD
b250ZW50Q2FsbGJhY2s+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdE1ldGFk
YXRhKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8UmVxdWVzdE1l
dGFkYXRhQ2FsbGJhY2s+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEZpbGVD
b250ZW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgcmVhZEFzVGV4dCwg
Y29uc3QgaW50KiBzdGFydCwgY29uc3QgaW50KiBlbmQsIGNvbnN0IFN0cmluZyogY2hhcnNldCwg
UGFzc1JlZlB0cjxSZXF1ZXN0RmlsZUNvbnRlbnRDYWxsYmFjaz4pIE9WRVJSSURFOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAK
aW5kZXggNTdjNjcyMWIxMmFhNWFiMzkzZTk3N2Q2MzU5ZGI4ZTg2NTQ5ZWU4Yi4uNzM5Yzk4MWQx
YTRhNmQwOGJiMTYxNDI3NzEyZDcwZDA1ZWE3ZmQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC05Miw5ICs5Miw5
IEBAIG5hbWVzcGFjZSB7CiBjbGFzcyBHZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2sgOiBwdWJsaWMg
RXZlbnRMaXN0ZW5lciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR2V0RGF0YWJhc2VOYW1l
c0NhbGxiYWNrKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZXREYXRhYmFzZU5h
bWVzQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJh
Y2s+IHJlcXVlc3RDYWxsYmFjaywgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbikKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxHZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVm
UHRyPFJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2V0RGF0YWJhc2VOYW1lc0NhbGxiYWNrKHJl
cXVlc3RDYWxsYmFjaywgc2VjdXJpdHlPcmlnaW4pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBHZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2socmVxdWVzdENhbGxiYWNrKSk7CiAgICAgfQog
CiAgICAgdmlydHVhbCB+R2V0RGF0YWJhc2VOYW1lc0NhbGxiYWNrKCkgeyB9CkBAIC0xMzMsMTIg
KzEzMywxMCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIEdldERhdGFiYXNlTmFt
ZXNDYWxsYmFjayhQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s+IHJlcXVl
c3RDYWxsYmFjaywgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbikKKyAgICBHZXREYXRhYmFz
ZU5hbWVzQ2FsbGJhY2soUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNrPiBy
ZXF1ZXN0Q2FsbGJhY2spCiAgICAgICAgIDogRXZlbnRMaXN0ZW5lcihFdmVudExpc3RlbmVyOjpD
UFBFdmVudExpc3RlbmVyVHlwZSkKLSAgICAgICAgLCBtX3JlcXVlc3RDYWxsYmFjayhyZXF1ZXN0
Q2FsbGJhY2spCi0gICAgICAgICwgbV9zZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikgeyB9
CisgICAgICAgICwgbV9yZXF1ZXN0Q2FsbGJhY2socmVxdWVzdENhbGxiYWNrKSB7IH0KICAgICBS
ZWZQdHI8UmVxdWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7Ci0g
ICAgU3RyaW5nIG1fc2VjdXJpdHlPcmlnaW47CiB9OwogCiBjbGFzcyBFeGVjdXRhYmxlV2l0aERh
dGFiYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8RXhlY3V0YWJsZVdpdGhEYXRhYmFzZT4gewpAQCAt
NjExLDkgKzYwOSw5IEBAIHN0YXRpYyBJREJGYWN0b3J5KiBhc3NlcnRJREJGYWN0b3J5KEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgRG9jdW1lbnQqIGRvY3VtZW50CiAgICAgcmV0dXJuIGlkYkZh
Y3Rvcnk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhYmFz
ZU5hbWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9y
aWdpbiwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNrPiByZXF1ZXN0Q2Fs
bGJhY2spCit2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2VOYW1l
cyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiBzZWN1cml0eU9yaWdpbiwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNr
PiByZXF1ZXN0Q2FsbGJhY2spCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlQWdlbnQtPmZp
bmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbik7CisgICAgRnJhbWUqIGZy
YW1lID0gbV9wYWdlQWdlbnQtPmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbihlcnJvclN0cmlu
Zywgc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGFzc2Vy
dERvY3VtZW50KGVycm9yU3RyaW5nLCBmcmFtZSk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNjM0LDEyICs2MzIsMTIgQEAgdm9pZCBJbnNwZWN0b3JJbmRleGVkREJB
Z2VudDo6cmVxdWVzdERhdGFiYXNlTmFtZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb24K
ICAgICAgICAgcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IG9idGFpbiBk
YXRhYmFzZSBuYW1lcy4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZGJSZXF1ZXN0
LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQsIEdldERhdGFiYXNl
TmFtZXNDYWxsYmFjazo6Y3JlYXRlKHJlcXVlc3RDYWxsYmFjaywgZG9jdW1lbnQtPnNlY3VyaXR5
T3JpZ2luKCktPnRvUmF3U3RyaW5nKCkpLCBmYWxzZSk7CisgICAgaWRiUmVxdWVzdC0+YWRkRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50LCBHZXREYXRhYmFzZU5hbWVzQ2Fs
bGJhY2s6OmNyZWF0ZShyZXF1ZXN0Q2FsbGJhY2spLCBmYWxzZSk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhYmFzZShFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VO
YW1lLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2sp
Cit2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2UoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc2VjdXJpdHlP
cmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRh
YmFzZUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gbV9w
YWdlQWdlbnQtPmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbik7Cisg
ICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlQWdlbnQtPmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdp
bihlcnJvclN0cmluZywgc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwogICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IGFzc2VydERvY3VtZW50KGVycm9yU3RyaW5nLCBmcmFtZSk7CiAgICAgaWYgKCFkb2N1
bWVudCkKICAgICAgICAgcmV0dXJuOwpAQCAtNjU4LDkgKzY1Niw5IEBAIHZvaWQgSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhYmFzZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGNvbnN0IFN0CiAgICAgZGF0YWJhc2VMb2FkZXItPnN0YXJ0KGlkYkZhY3RvcnksIGRvY3VtZW50
LT5zZWN1cml0eU9yaWdpbigpLCBkYXRhYmFzZU5hbWUpOwogfQogCi12b2lkIEluc3BlY3Rvcklu
ZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25z
dCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIGludCBz
a2lwQ291bnQsIGludCBwYWdlU2l6ZSwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGtl
eVJhbmdlLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykK
K3ZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHNlY3VyaXR5T3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5h
bWUsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBpbnQgc2tpcENvdW50LCBpbnQgcGFnZVNpemUs
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxSZXF1
ZXN0RGF0YUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0g
bV9wYWdlQWdlbnQtPmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbik7
CisgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlQWdlbnQtPmZpbmRGcmFtZVdpdGhTZWN1cml0eU9y
aWdpbihlcnJvclN0cmluZywgc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwogICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IGFzc2VydERvY3VtZW50KGVycm9yU3RyaW5nLCBmcmFtZSk7CiAgICAgaWYgKCFk
b2N1bWVudCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAppbmRleCA2OWEwOTYxYWIxYjFmYThkNTIxOTBk
NTdmNDI4ZjI1NTA3ZDZmY2NlLi45ZjI5ZmU0MjIxNjI3YWE4ZDZmMGI3ZjRjZGJhYWJhNTZlN2Qy
NzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuaApAQCAtNTgsOSArNTgsOSBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIGZyb20g
dGhlIGZyb250LWVuZC4KICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVxdWVzdERhdGFiYXNlTmFtZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5
T3JpZ2luLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s+KTsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGFiYXNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBz
ZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIFBhc3NSZWZQdHI8UmVx
dWVzdERhdGFiYXNlQ2FsbGJhY2s+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGEoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYg
aW5kZXhOYW1lLCBpbnQgc2tpcENvdW50LCBpbnQgcGFnZVNpemUsIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+KiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YUNhbGxiYWNrPik7
CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3REYXRhYmFzZU5hbWVzKEVycm9yU3RyaW5nKiwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHNlY3VyaXR5T3JpZ2luLCBQYXNzUmVmUHRyPFJl
cXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERh
dGFiYXNlKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHNlY3Vy
aXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgUGFzc1JlZlB0cjxSZXF1ZXN0
RGF0YWJhc2VDYWxsYmFjaz4pOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YShFcnJvclN0
cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzZWN1cml0eU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBj
b25zdCBTdHJpbmcmIGluZGV4TmFtZSwgaW50IHNraXBDb3VudCwgaW50IHBhZ2VTaXplLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Pioga2V5UmFuZ2UsIFBhc3NSZWZQdHI8UmVxdWVzdERh
dGFDYWxsYmFjaz4pOwogCiBwcml2YXRlOgogICAgIEluc3BlY3RvckluZGV4ZWREQkFnZW50KElu
c3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JDb21wb3NpdGVTdGF0ZSosIEluamVjdGVkU2Ny
aXB0TWFuYWdlciosIEluc3BlY3RvclBhZ2VBZ2VudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCA2OTljYzk4N2E1NDI3MDJlZGE4
YjkzNjdjMzM5YWY1NjkwN2FkNGVkLi40MDgwOWQ0ZTViODJhMWUwZGQ2MjZlNGU3ODU5ZDE1YjA1
Y2ZlODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcApAQCAtMTAyLDYgKzEwMiwzNSBAQCBzdGF0aWMgY29uc3QgY2hhciB0b3VjaEV2ZW50
RW11bGF0aW9uRW5hYmxlZFtdID0gInRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkIjsKIHN0YXRp
YyBjb25zdCBjaGFyIHBhZ2VBZ2VudEVtdWxhdGVkTWVkaWFbXSA9ICJwYWdlQWdlbnRFbXVsYXRl
ZE1lZGlhIjsKIH0KIAorUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gSW5zcGVjdG9yUGFnZUFn
ZW50OjppbnNwZWN0b3JPYmplY3RUb1NlY3VyaXR5T3JpZ2luKEluc3BlY3Rvck9iamVjdCogb2Jq
ZWN0KQoreworICAgIFN0cmluZyB1cmw7CisgICAgaWYgKCFvYmplY3QtPmdldFN0cmluZygidXJs
IiwgJnVybCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgU3RyaW5nIGRvbWFpblNldEluRE9N
OworICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUgPSBvYmplY3QtPmdldCgiZG9tYWlu
U2V0SW5ET00iKTsKKyAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgaWYgKCF2YWx1ZS0+YXNTdHJp
bmcoJmRvbWFpblNldEluRE9NKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAg
IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVzdWx0ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZy
b21TdHJpbmcodXJsKTsKKyAgICBpZiAoIWRvbWFpblNldEluRE9NLmlzTnVsbCgpKQorICAgICAg
ICByZXN1bHQtPnNldERvbWFpbkZyb21ET00oZG9tYWluU2V0SW5ET00pOworICAgIHJldHVybiBy
ZXN1bHQucmVsZWFzZSgpOworfQorCitQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpTZWN1
cml0eU9yaWdpbj4gSW5zcGVjdG9yUGFnZUFnZW50OjpzZWN1cml0eU9yaWdpblRvSW5zcGVjdG9y
T2JqZWN0KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7CisKKyAgICBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OlBhZ2U6OlNlY3VyaXR5T3JpZ2luPiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6UGFnZTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZSgpCisgICAgICAgIC5zZXRVcmwob3JpZ2luLT50b1Jhd1N0cmlu
ZygpKTsKKyAgICBpZiAob3JpZ2luLT5kb21haW5XYXNTZXRJbkRPTSgpKQorICAgICAgICByZXN1
bHQtPnNldERvbWFpblNldEluRE9NKG9yaWdpbi0+ZG9tYWluKCkpOworICAgIHJldHVybiByZXN1
bHQucmVsZWFzZSgpOworfQorCiBzdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29uc3QgY2hhciog
YnVmZmVyLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIFN0
cmluZyogcmVzdWx0KQogewogICAgIGlmIChidWZmZXIpIHsKQEAgLTkzMCwxOSArOTU5LDI1IEBA
IFN0cmluZyBJbnNwZWN0b3JQYWdlQWdlbnQ6OmxvYWRlcklkKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIpCiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKLUZyYW1lKiBJbnNwZWN0b3JQYWdlQWdl
bnQ6OmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpblJhd1N0
cmluZykKK0ZyYW1lKiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmZpbmRGcmFtZVdpdGhTZWN1cml0eU9y
aWdpbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIEluc3BlY3Rvck9iamVjdCogc2VjdXJpdHlP
cmlnaW5PYmplY3QpCiB7Ci0gICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdp
blB0ciA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpblJhd1N0cmluZyk7
Ci0gICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luID0gc2VjdXJpdHlPcmlnaW5QdHIu
Z2V0KCk7CisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IGluc3Bl
Y3Rvck9iamVjdFRvU2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW5PYmplY3QpOworICAgIGlm
ICghc2VjdXJpdHlPcmlnaW4pIHsKKyAgICAgICAgaWYgKGVycm9yU3RyaW5nKQorICAgICAgICAg
ICAgKmVycm9yU3RyaW5nID0gIkludmFsaWQgc2VjdXJpdHkgb3JpZ2luIjsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorCiAgICAgYm9vbCBpc0xvY2FsID0gc2VjdXJpdHlPcmlnaW4tPmlzTG9j
YWwoKTsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4gZG9jdW1lbnRPcmlnaW4gPSBmcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKTsKICAgICAgICAgLy8gRW11bGF0ZSB0aGUgIWVuZm9yY2VGaWxlUGF0aFNl
cGFyYXRpb24gZm9yIHNlY3VyaXR5IG9yaWdpbnMuCiAgICAgICAgIGlmIChpc0xvY2FsICYmIGRv
Y3VtZW50T3JpZ2luLT5pc0xvY2FsKCkpCiAgICAgICAgICAgICByZXR1cm4gZnJhbWU7Ci0gICAg
ICAgIGlmIChkb2N1bWVudE9yaWdpbi0+ZXF1YWwoc2VjdXJpdHlPcmlnaW4pKQorICAgICAgICBp
ZiAoZG9jdW1lbnRPcmlnaW4tPmVxdWFsKHNlY3VyaXR5T3JpZ2luLmdldCgpKSkKICAgICAgICAg
ICAgIHJldHVybiBmcmFtZTsKICAgICB9CisKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTA3OCw3
ICsxMTEzLDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IEluc3BlY3Rv
clBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JGcmFtZShGcmEKICAgICAgICAgLnNldExvYWRlcklk
KGxvYWRlcklkKGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSkpCiAgICAgICAgIC5z
ZXRVcmwoZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKQogICAgICAgICAuc2V0TWlt
ZVR5cGUoZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZU1JTUVUeXBl
KCkpCi0gICAgICAgIC5zZXRTZWN1cml0eU9yaWdpbihmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+dG9SYXdTdHJpbmcoKSk7CisgICAgICAgIC5zZXRTZWN1cml0eU9yaWdpbihz
ZWN1cml0eU9yaWdpblRvSW5zcGVjdG9yT2JqZWN0KGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpKSk7CiAgICAgaWYgKGZyYW1lLT50cmVlKCktPnBhcmVudCgpKQogICAgICAgICBm
cmFtZU9iamVjdC0+c2V0UGFyZW50SWQoZnJhbWVJZChmcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkp
OwogICAgIGlmIChmcmFtZS0+b3duZXJFbGVtZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCBkOTYwMzAzN2MwZjg0YmMzMmY1NGFh
ODQyODg0MzgxMDA2NDJlNzVmLi45YWEwNzYwNjY4OTM3ODdmNmM1Zjk1ZWEwMDllZjRjYzIzNWQx
ZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5o
CkBAIC05Miw2ICs5Miw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVzb3VyY2VUeXBlIGNhY2hl
ZFJlc291cmNlVHlwZShjb25zdCBDYWNoZWRSZXNvdXJjZSYpOwogICAgIHN0YXRpYyBUeXBlQnVp
bGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpFbnVtIGNhY2hlZFJlc291cmNlVHlwZUpzb24oY29u
c3QgQ2FjaGVkUmVzb3VyY2UmKTsKIAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBpbnNwZWN0b3JPYmplY3RUb1NlY3VyaXR5T3JpZ2luKEluc3BlY3Rvck9iamVjdCopOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpTZWN1cml0eU9yaWdpbj4g
c2VjdXJpdHlPcmlnaW5Ub0luc3BlY3Rvck9iamVjdChTZWN1cml0eU9yaWdpbiopOworCiAgICAg
Ly8gUGFnZSBBUEkgZm9yIEluc3BlY3RvckZyb250ZW5kCiAgICAgdmlydHVhbCB2b2lkIGVuYWJs
ZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7
CkBAIC0xNzMsNyArMTc2LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBmcmFtZUlkKEZyYW1lKik7
CiAgICAgYm9vbCBoYXNJZEZvckZyYW1lKEZyYW1lKikgY29uc3Q7CiAgICAgU3RyaW5nIGxvYWRl
cklkKERvY3VtZW50TG9hZGVyKik7Ci0gICAgRnJhbWUqIGZpbmRGcmFtZVdpdGhTZWN1cml0eU9y
aWdpbihjb25zdCBTdHJpbmcmIG9yaWdpblJhd1N0cmluZyk7CisgICAgRnJhbWUqIGZpbmRGcmFt
ZVdpdGhTZWN1cml0eU9yaWdpbihFcnJvclN0cmluZyosIEluc3BlY3Rvck9iamVjdCopOwogICAg
IEZyYW1lKiBhc3NlcnRGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCk7
CiAgICAgU3RyaW5nIHNjcmlwdFByZXByb2Nlc3NvcigpIHsgcmV0dXJuIG1fc2NyaXB0UHJlcHJv
Y2Vzc29yOyB9CiAgICAgc3RhdGljIERvY3VtZW50TG9hZGVyKiBhc3NlcnREb2N1bWVudExvYWRl
cihFcnJvclN0cmluZyosIEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanMKaW5kZXggYjIwOWY3MjZjMDkzNGRkYzQ2YmUyNjljMmZl
YjgxMDYxYTQxYWUzNi4uMmVjODQyNmQ3Y2ZiMjllOGNmZTAyYTBmYzY1OTAxZjNhNmIzZTc0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdl
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZS5q
cwpAQCAtMjksNyArMjksNyBAQAogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgotICogQHBhcmFtIHtz
dHJpbmd9IHNlY3VyaXR5T3JpZ2luCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9y
aWdpbn0gc2VjdXJpdHlPcmlnaW4KICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNMb2NhbFN0b3JhZ2UK
ICAqLwogV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UgPSBmdW5jdGlvbihzZWN1cml0eU9yaWdpbiwg
aXNMb2NhbFN0b3JhZ2UpCkBAIC0zOSwyNCArMzksMjQgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3Jh
Z2UgPSBmdW5jdGlvbihzZWN1cml0eU9yaWdpbiwgaXNMb2NhbFN0b3JhZ2UpCiB9CiAKIC8qKgot
ICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5TZWN1cml0eU9yaWdpbn0gc2VjdXJpdHlPcmlnaW4KICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNM
b2NhbFN0b3JhZ2UKICAqIEByZXR1cm4ge0RPTVN0b3JhZ2VBZ2VudC5TdG9yYWdlSWR9CiAgKi8K
IFdlYkluc3BlY3Rvci5ET01TdG9yYWdlLnN0b3JhZ2VJZCA9IGZ1bmN0aW9uKHNlY3VyaXR5T3Jp
Z2luLCBpc0xvY2FsU3RvcmFnZSkKIHsKLSAgICByZXR1cm4geyBzZWN1cml0eU9yaWdpbjogc2Vj
dXJpdHlPcmlnaW4sIGlzTG9jYWxTdG9yYWdlOiBpc0xvY2FsU3RvcmFnZSB9OworICAgIHJldHVy
biB7IHNlY3VyaXR5T3JpZ2luOiBzZWN1cml0eU9yaWdpbi50b1Byb3RvY29sKCksIGlzTG9jYWxT
dG9yYWdlOiBpc0xvY2FsU3RvcmFnZSB9OwogfQogCiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZS5w
cm90b3R5cGUgPSB7CiAKICAgICAvKiogQHJldHVybiB7RE9NU3RvcmFnZUFnZW50LlN0b3JhZ2VJ
ZH0gKi8KLSAgICBnZXQgaWQoKQorICAgIGlkOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBy
ZXR1cm4gV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2Uuc3RvcmFnZUlkKHRoaXMuX3NlY3VyaXR5T3Jp
Z2luLCB0aGlzLl9pc0xvY2FsU3RvcmFnZSk7CiAgICAgfSwKIAotICAgIC8qKiBAcmV0dXJuIHtz
dHJpbmd9ICovCisgICAgLyoqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0g
Ki8KICAgICBnZXQgc2VjdXJpdHlPcmlnaW4oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3NlY3VyaXR5T3JpZ2luOwpAQCAtNzMsNyArNzMsNyBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFn
ZS5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgZ2V0SXRlbXM6IGZ1bmN0aW9uKGNhbGxiYWNr
KQogICAgIHsKLSAgICAgICAgRE9NU3RvcmFnZUFnZW50LmdldERPTVN0b3JhZ2VJdGVtcyh0aGlz
LmlkLCBjYWxsYmFjayk7CisgICAgICAgIERPTVN0b3JhZ2VBZ2VudC5nZXRET01TdG9yYWdlSXRl
bXModGhpcy5pZCgpLCBjYWxsYmFjayk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtODMsNyArODMs
NyBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZS5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAg
c2V0SXRlbTogZnVuY3Rpb24oa2V5LCB2YWx1ZSwgY2FsbGJhY2spCiAgICAgewotICAgICAgICBE
T01TdG9yYWdlQWdlbnQuc2V0RE9NU3RvcmFnZUl0ZW0odGhpcy5pZCwga2V5LCB2YWx1ZSwgY2Fs
bGJhY2spOworICAgICAgICBET01TdG9yYWdlQWdlbnQuc2V0RE9NU3RvcmFnZUl0ZW0odGhpcy5p
ZCgpLCBrZXksIHZhbHVlLCBjYWxsYmFjayk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtOTIsNyAr
OTIsNyBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZS5wcm90b3R5cGUgPSB7CiAgICAgICovCiAg
ICAgcmVtb3ZlSXRlbTogZnVuY3Rpb24oa2V5LCBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIERP
TVN0b3JhZ2VBZ2VudC5yZW1vdmVET01TdG9yYWdlSXRlbSh0aGlzLmlkLCBrZXksIGNhbGxiYWNr
KTsKKyAgICAgICAgRE9NU3RvcmFnZUFnZW50LnJlbW92ZURPTVN0b3JhZ2VJdGVtKHRoaXMuaWQo
KSwga2V5LCBjYWxsYmFjayk7CiAgICAgfQogfQogCkBAIC0xMjUsNyArMTI1LDcgQEAgV2ViSW5z
cGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3NlY3Vy
aXR5T3JpZ2luQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHNlY3Vy
aXR5T3JpZ2luID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChldmVudC5kYXRhKTsKKyAgICAgICAg
dmFyIHNlY3VyaXR5T3JpZ2luID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmln
aW59ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdmFyIGxvY2FsU3RvcmFnZUtleSA9IHRoaXMu
X3N0b3JhZ2VLZXkoc2VjdXJpdHlPcmlnaW4sIHRydWUpOwogICAgICAgICBjb25zb2xlLmFzc2Vy
dCghdGhpcy5fc3RvcmFnZXNbbG9jYWxTdG9yYWdlS2V5XSk7CiAgICAgICAgIHZhciBsb2NhbFN0
b3JhZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2Uoc2VjdXJpdHlPcmlnaW4sIHRydWUp
OwpAQCAtMTQ0LDcgKzE0NCw3IEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlTW9kZWwucHJvdG90
eXBlID0gewogICAgICAqLwogICAgIF9zZWN1cml0eU9yaWdpblJlbW92ZWQ6IGZ1bmN0aW9uKGV2
ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gLyoqIEB0eXBlIHtzdHJp
bmd9ICovIChldmVudC5kYXRhKTsKKyAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gLyoqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59ICovIChldmVudC5kYXRhKTsKICAgICAg
ICAgdmFyIGxvY2FsU3RvcmFnZUtleSA9IHRoaXMuX3N0b3JhZ2VLZXkoc2VjdXJpdHlPcmlnaW4s
IHRydWUpOwogICAgICAgICB2YXIgbG9jYWxTdG9yYWdlID0gdGhpcy5fc3RvcmFnZXNbbG9jYWxT
dG9yYWdlS2V5XTsKICAgICAgICAgY29uc29sZS5hc3NlcnQobG9jYWxTdG9yYWdlKTsKQEAgLTE1
OSwxMyArMTU5LDEzIEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlTW9kZWwucHJvdG90eXBlID0g
ewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlPcmln
aW4KKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gc2VjdXJpdHlP
cmlnaW4KICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzTG9jYWxTdG9yYWdlCiAgICAgICogQHJl
dHVybiB7c3RyaW5nfQogICAgICAqLwogICAgIF9zdG9yYWdlS2V5OiBmdW5jdGlvbihzZWN1cml0
eU9yaWdpbiwgaXNMb2NhbFN0b3JhZ2UpCiAgICAgewotICAgICAgICByZXR1cm4gSlNPTi5zdHJp
bmdpZnkoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2Uuc3RvcmFnZUlkKHNlY3VyaXR5T3JpZ2luLCBp
c0xvY2FsU3RvcmFnZSkpOworICAgICAgICByZXR1cm4gc2VjdXJpdHlPcmlnaW4uaWQoKSArICIv
IiArIGlzTG9jYWxTdG9yYWdlOwogICAgIH0sCiAKICAgICAvKioKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKaW5kZXggZmQz
MDdmYTk1ZmM5Y2ZjMzQ1Y2U3NGEzMWMwYzliNzNhYTlmZjQzYi4uNGZkYTMxMjYwZTk5OWY4ZDdk
OWNmYTI3Nzc1MmMzNmFhZjIzNWE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKQEAgLTc3NCw3ICs3NzQsNyBAQCBX
ZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKICAgICAgKiBAcGFyYW0g
e2Jvb2xlYW59IGV4cG9zZUNvbW1hbmRMaW5lQVBJCiAgICAgICogQHBhcmFtIHtib29sZWFufSBy
ZXR1cm5CeVZhbHVlCiAgICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMKLSAgICAgKiBAcGFy
YW0ge3N0cmluZ30gc2VjdXJpdHlPcmlnaW4KKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5T
ZWN1cml0eU9yaWdpbn0gc2VjdXJpdHlPcmlnaW4KICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9z
dHJpbmcsID9SdW50aW1lQWdlbnQuUmVtb3RlT2JqZWN0LCBib29sZWFuPSl9IGNhbGxiYWNrCiAg
ICAgICovCiAgICAgZXZhbHVhdGU6IGZ1bmN0aW9uKGV4cHJlc3Npb24sIGV4cG9zZUNvbW1hbmRM
aW5lQVBJLCByZXR1cm5CeVZhbHVlLCBvcHRpb25zLCBzZWN1cml0eU9yaWdpbiwgY2FsbGJhY2sp
IApAQCAtNzg2LDcgKzc4Niw3IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90
eXBlID0gewogICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0dXMuRV9GQUlMRUQoIm1h
aW4gZnJhbWUgbm90IGF2YWlsYWJsZSB5ZXQiKTsKICAgICAgICAgICAgIHZhciBjb250ZXh0ID0g
V2ViSW5zcGVjdG9yLnJ1bnRpbWVNb2RlbC5jb250ZXh0QnlGcmFtZUFuZFNlY3VyaXR5T3JpZ2lu
KG1haW5GcmFtZSwgc2VjdXJpdHlPcmlnaW4pOwogICAgICAgICAgICAgaWYgKCFjb250ZXh0KQot
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0dXMuRV9OT1RGT1VORChzZWN1cml0eU9y
aWdpbik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1cy5FX05PVEZPVU5EKHNl
Y3VyaXR5T3JpZ2luLnVpVGl0bGUoKSk7CiAgICAgICAgICAgICBjb250ZXh0SWQgPSBjb250ZXh0
LmlkOwogICAgICAgICB9CiAgICAgICAgIFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZShleHByZXNzaW9u
LCAiZXh0ZW5zaW9uIiwgZXhwb3NlQ29tbWFuZExpbmVBUEksIHRydWUsIGNvbnRleHRJZCwgcmV0
dXJuQnlWYWx1ZSwgZmFsc2UsIGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTW9kZWwuanMKaW5kZXggMTRjMTM3MmNkNDJi
N2M1NThhZWFiMmEzMWUxNTNhODU0N2IyNjliOC4uN2EzMzYwMDUyNDYyMjFmMzBmNGNmMWIyNmQ5
YzY5MWI4NGNlOTgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9GaWxlU3lzdGVtTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9GaWxlU3lzdGVtTW9kZWwuanMKQEAgLTQ5LDggKzQ5LDggQEAgV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1Nb2RlbCA9IGZ1bmN0aW9uKCkKIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9k
ZWwucHJvdG90eXBlID0gewogICAgIF9yZXNldDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAg
Zm9yICh2YXIgc2VjdXJpdHlPcmlnaW4gaW4gdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW4pCi0g
ICAgICAgICAgICB0aGlzLl9yZW1vdmVPcmlnaW4oc2VjdXJpdHlPcmlnaW4pOworICAgICAgICBm
b3IgKHZhciBzZWN1cml0eU9yaWdpbklkIGluIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luKQor
ICAgICAgICAgICAgdGhpcy5fcmVtb3ZlT3JpZ2luKFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVN
b2RlbC5zZWN1cml0eU9yaWdpbkZvcklkKHNlY3VyaXR5T3JpZ2luSWQpKTsKICAgICAgICAgdmFy
IHNlY3VyaXR5T3JpZ2lucyA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5zZWN1cml0
eU9yaWdpbnMoKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWN1cml0eU9yaWdpbnMu
bGVuZ3RoOyArK2kpCiAgICAgICAgICAgICB0aGlzLl9hZGRPcmlnaW4oc2VjdXJpdHlPcmlnaW5z
W2ldKTsKQEAgLTYxLDcgKzYxLDcgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90
b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3NlY3VyaXR5T3JpZ2luQWRkZWQ6IGZ1bmN0aW9uKGV2
ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gLyoqIEB0eXBlIHtzdHJp
bmd9ICovIChldmVudC5kYXRhKTsKKyAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gLyoqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59ICovIChldmVudC5kYXRhKTsKICAgICAg
ICAgdGhpcy5fYWRkT3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKICAgICB9LAogCkBAIC03MCwzNyAr
NzAsMzkgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAg
ICovCiAgICAgX3NlY3VyaXR5T3JpZ2luUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewot
ICAgICAgICB2YXIgc2VjdXJpdHlPcmlnaW4gPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKGV2ZW50
LmRhdGEpOworICAgICAgICB2YXIgc2VjdXJpdHlPcmlnaW4gPSAvKiogQHR5cGUge1dlYkluc3Bl
Y3Rvci5TZWN1cml0eU9yaWdpbn0gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICB0aGlzLl9yZW1v
dmVPcmlnaW4oc2VjdXJpdHlPcmlnaW4pOwogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFy
YW0ge3N0cmluZ30gc2VjdXJpdHlPcmlnaW4KKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5T
ZWN1cml0eU9yaWdpbn0gc2VjdXJpdHlPcmlnaW4KICAgICAgKi8KICAgICBfYWRkT3JpZ2luOiBm
dW5jdGlvbihzZWN1cml0eU9yaWdpbikKICAgICB7Ci0gICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1z
Rm9yT3JpZ2luW3NlY3VyaXR5T3JpZ2luXSA9IHt9OworICAgICAgICB2YXIgc2VjdXJpdHlPcmln
aW5JZCA9IHNlY3VyaXR5T3JpZ2luLmlkKCk7CisgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1zRm9y
T3JpZ2luW3NlY3VyaXR5T3JpZ2luSWRdID0ge307CiAKICAgICAgICAgdmFyIHR5cGVzID0gWyJw
ZXJzaXN0ZW50IiwgInRlbXBvcmFyeSJdOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5
cGVzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgdGhpcy5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290
KHNlY3VyaXR5T3JpZ2luLCB0eXBlc1tpXSwgdGhpcy5fZmlsZVN5c3RlbVJvb3RSZWNlaXZlZC5i
aW5kKHRoaXMsIHNlY3VyaXR5T3JpZ2luLCB0eXBlc1tpXSwgdGhpcy5fZmlsZVN5c3RlbXNGb3JP
cmlnaW5bc2VjdXJpdHlPcmlnaW5dKSk7CisgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0RmlsZVN5
c3RlbVJvb3Qoc2VjdXJpdHlPcmlnaW4sIHR5cGVzW2ldLCB0aGlzLl9maWxlU3lzdGVtUm9vdFJl
Y2VpdmVkLmJpbmQodGhpcywgc2VjdXJpdHlPcmlnaW4sIHR5cGVzW2ldLCB0aGlzLl9maWxlU3lz
dGVtc0Zvck9yaWdpbltzZWN1cml0eU9yaWdpbklkXSkpOwogICAgIH0sCiAKICAgICAvKioKLSAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlPcmlnaW4KKyAgICAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gc2VjdXJpdHlPcmlnaW4KICAgICAgKi8KICAgICBfcmVt
b3ZlT3JpZ2luOiBmdW5jdGlvbihzZWN1cml0eU9yaWdpbikKICAgICB7Ci0gICAgICAgIGZvciAo
dmFyIHR5cGUgaW4gdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bc2VjdXJpdHlPcmlnaW5dKSB7
Ci0gICAgICAgICAgICB2YXIgZmlsZVN5c3RlbSA9IHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2lu
W3NlY3VyaXR5T3JpZ2luXVt0eXBlXTsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9maWxlU3lz
dGVtc0Zvck9yaWdpbltzZWN1cml0eU9yaWdpbl1bdHlwZV07CisgICAgICAgIHZhciBzZWN1cml0
eU9yaWdpbklkID0gc2VjdXJpdHlPcmlnaW4uaWQoKTsKKyAgICAgICAgZm9yICh2YXIgdHlwZSBp
biB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltzZWN1cml0eU9yaWdpbklkXSkgeworICAgICAg
ICAgICAgdmFyIGZpbGVTeXN0ZW0gPSB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltzZWN1cml0
eU9yaWdpbklkXVt0eXBlXTsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9maWxlU3lzdGVtc0Zv
ck9yaWdpbltzZWN1cml0eU9yaWdpbklkXVt0eXBlXTsKICAgICAgICAgICAgIHRoaXMuX2ZpbGVT
eXN0ZW1SZW1vdmVkKGZpbGVTeXN0ZW0pOwogICAgICAgICB9Ci0gICAgICAgIGRlbGV0ZSB0aGlz
Ll9maWxlU3lzdGVtc0Zvck9yaWdpbltzZWN1cml0eU9yaWdpbl07CisgICAgICAgIGRlbGV0ZSB0
aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltzZWN1cml0eU9yaWdpbklkXTsgIAogICAgIH0sCiAK
ICAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3JpZ2luCisgICAgICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IG9yaWdpbgogICAgICAqIEBwYXJhbSB7c3RyaW5n
fSB0eXBlCiAgICAgICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXIsIEZpbGVTeXN0ZW1BZ2VudC5F
bnRyeT0pfSBjYWxsYmFjawogICAgICAqLwpAQCAtMTIxLDcgKzEyMyw3IEBAIFdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgY2FsbGJhY2soZXJy
b3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5KTsKICAgICAgICAgfQogCi0gICAgICAgIEZpbGVTeXN0
ZW1BZ2VudC5yZXF1ZXN0RmlsZVN5c3RlbVJvb3Qob3JpZ2luLCB0eXBlLCBpbm5lckNhbGxiYWNr
LmJpbmQodGhpcykpOworICAgICAgICBGaWxlU3lzdGVtQWdlbnQucmVxdWVzdEZpbGVTeXN0ZW1S
b290KG9yaWdpbi50b1Byb3RvY29sKCksIHR5cGUsIGlubmVyQ2FsbGJhY2suYmluZCh0aGlzKSk7
CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTQ2LDcgKzE0OCw3IEBAIFdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtTW9kZWwucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFy
YW0ge3N0cmluZ30gb3JpZ2luCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlP
cmlnaW59IG9yaWdpbgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlCiAgICAgICogQHBhcmFt
IHtPYmplY3QuPFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbT59IHN0b3Jl
CiAgICAgICogQHBhcmFtIHtudW1iZXJ9IGVycm9yQ29kZQpAQCAtMTU0LDcgKzE1Niw3IEBAIFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9m
aWxlU3lzdGVtUm9vdFJlY2VpdmVkOiBmdW5jdGlvbihvcmlnaW4sIHR5cGUsIHN0b3JlLCBlcnJv
ckNvZGUsIGJhY2tlbmRSb290RW50cnkpCiAgICAgewotICAgICAgICBpZiAoIWVycm9yQ29kZSAm
JiBiYWNrZW5kUm9vdEVudHJ5ICYmIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbl0g
PT09IHN0b3JlKSB7CisgICAgICAgIGlmICghZXJyb3JDb2RlICYmIGJhY2tlbmRSb290RW50cnkg
JiYgdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luLmlkKCldID09PSBzdG9yZSkgewog
ICAgICAgICAgICAgdmFyIGZpbGVTeXN0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1N
b2RlbC5GaWxlU3lzdGVtKHRoaXMsIG9yaWdpbiwgdHlwZSwgYmFja2VuZFJvb3RFbnRyeSk7CiAg
ICAgICAgICAgICBzdG9yZVt0eXBlXSA9IGZpbGVTeXN0ZW07CiAgICAgICAgICAgICB0aGlzLl9m
aWxlU3lzdGVtQWRkZWQoZmlsZVN5c3RlbSk7CkBAIC0zMzUsMTQgKzMzNywxNCBAQCBXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfcmVtb3Zl
RmlsZVN5c3RlbTogZnVuY3Rpb24oZmlsZVN5c3RlbSkKICAgICB7Ci0gICAgICAgIHZhciBvcmln
aW4gPSBmaWxlU3lzdGVtLm9yaWdpbjsKKyAgICAgICAgdmFyIG9yaWdpbklkID0gZmlsZVN5c3Rl
bS5vcmlnaW4uaWQoKTsKICAgICAgICAgdmFyIHR5cGUgPSBmaWxlU3lzdGVtLnR5cGU7Ci0gICAg
ICAgIGlmICh0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5dICYmIHRoaXMuX2ZpbGVT
eXN0ZW1zRm9yT3JpZ2luW29yaWdpbl1bdHlwZV0pIHsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlz
Ll9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5dW3R5cGVdOworICAgICAgICBpZiAodGhpcy5f
ZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luSWRdICYmIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3Jp
Z2luW29yaWdpbklkXVt0eXBlXSkgeworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVTeXN0
ZW1zRm9yT3JpZ2luW29yaWdpbklkXVt0eXBlXTsKICAgICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0
ZW1SZW1vdmVkKGZpbGVTeXN0ZW0pOwogCi0gICAgICAgICAgICBpZiAoT2JqZWN0LmlzRW1wdHko
dGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luXSkpCi0gICAgICAgICAgICAgICAgZGVs
ZXRlIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbl07CisgICAgICAgICAgICBpZiAo
T2JqZWN0LmlzRW1wdHkodGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luSWRdKSkKKyAg
ICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luSWRd
OwogICAgICAgICB9CiAgICAgfSwKIApAQCAtMzU4LDcgKzM2MCw3IEBAIFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtTW9kZWwuRXZlbnRUeXBlcyA9IHsKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWx9IGZpbGVTeXN0ZW1Nb2RlbAotICog
QHBhcmFtIHtzdHJpbmd9IG9yaWdpbgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlP
cmlnaW59IG9yaWdpbgogICogQHBhcmFtIHtzdHJpbmd9IHR5cGUKICAqIEBwYXJhbSB7RmlsZVN5
c3RlbUFnZW50LkVudHJ5fSBiYWNrZW5kUm9vdEVudHJ5CiAgKi8KQEAgLTM3Niw3ICszNzgsNyBA
QCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW0ucHJvdG90eXBlID0gewog
ICAgICAqLwogICAgIGdldCBuYW1lKCkKICAgICB7Ci0gICAgICAgIHJldHVybiAiZmlsZXN5c3Rl
bToiICsgdGhpcy5vcmlnaW4gKyAiLyIgKyB0aGlzLnR5cGU7CisgICAgICAgIHJldHVybiAiZmls
ZXN5c3RlbToiICsgdGhpcy5vcmlnaW4udXJsKCkgKyAiLyIgKyB0aGlzLnR5cGU7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4
ZWREQk1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVk
REJNb2RlbC5qcwppbmRleCBhNTI1N2EyNGJjYmMzOGRiNDhmNDcyNjI5YmYzMGIxM2IxMDk2YWM0
Li43ODhkYzYxODZlNjVhOTdlZmY5NWNhOTQxYWUwMjIwM2FiZmExY2RjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQk1vZGVsLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCTW9kZWwuanMKQEAg
LTE0MSw4ICsxNDEsOCBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuRXZlbnRUeXBlcyA9
IHsKIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgX3Jlc2V0
OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBmb3IgKHZhciBzZWN1cml0eU9yaWdpbiBpbiB0
aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbikKLSAgICAgICAgICAgIHRoaXMuX3Jl
bW92ZU9yaWdpbihzZWN1cml0eU9yaWdpbik7CisgICAgICAgIGZvciAodmFyIHNlY3VyaXR5T3Jp
Z2luSWQgaW4gdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW4pCisgICAgICAgICAg
ICB0aGlzLl9yZW1vdmVPcmlnaW4oV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLnNlY3Vy
aXR5T3JpZ2luRm9ySWQoc2VjdXJpdHlPcmlnaW5JZCkpOwogICAgICAgICB2YXIgc2VjdXJpdHlP
cmlnaW5zID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLnNlY3VyaXR5T3JpZ2lucygp
OwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlY3VyaXR5T3JpZ2lucy5sZW5ndGg7ICsr
aSkKICAgICAgICAgICAgIHRoaXMuX2FkZE9yaWdpbihzZWN1cml0eU9yaWdpbnNbaV0pOwpAQCAt
MTUwLDggKzE1MCw4IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUgPSB7
CiAKICAgICByZWZyZXNoRGF0YWJhc2VOYW1lczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAg
Zm9yICh2YXIgc2VjdXJpdHlPcmlnaW4gaW4gdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlP
cmlnaW4pCi0gICAgICAgICAgICB0aGlzLl9sb2FkRGF0YWJhc2VOYW1lcyhzZWN1cml0eU9yaWdp
bik7CisgICAgICAgIGZvciAodmFyIHNlY3VyaXR5T3JpZ2luSWQgaW4gdGhpcy5fZGF0YWJhc2VO
YW1lc0J5U2VjdXJpdHlPcmlnaW4pCisgICAgICAgICAgICB0aGlzLl9sb2FkRGF0YWJhc2VOYW1l
cyhXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuc2VjdXJpdHlPcmlnaW5Gb3JJZChzZWN1
cml0eU9yaWdpbklkKSk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTY3LDcgKzE2Nyw3IEBAIFdl
Ykluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3Nl
Y3VyaXR5T3JpZ2luQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHNl
Y3VyaXR5T3JpZ2luID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChldmVudC5kYXRhKTsKKyAgICAg
ICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlP
cmlnaW59ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5fYWRkT3JpZ2luKHNlY3VyaXR5
T3JpZ2luKTsKICAgICB9LAogCkBAIC0xNzYsMzMgKzE3NiwzNSBAQCBXZWJJbnNwZWN0b3IuSW5k
ZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9zZWN1cml0eU9yaWdpblJl
bW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2lu
ID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChldmVudC5kYXRhKTsKKyAgICAgICAgdmFyIHNlY3Vy
aXR5T3JpZ2luID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59ICovIChl
dmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5fcmVtb3ZlT3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsK
ICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2lu
CisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5T3Jp
Z2luCiAgICAgICovCiAgICAgX2FkZE9yaWdpbjogZnVuY3Rpb24oc2VjdXJpdHlPcmlnaW4pCiAg
ICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJp
dHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5dKTsKLSAgICAgICAgdGhpcy5fZGF0YWJhc2VOYW1lc0J5
U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5dID0gW107CisgICAgICAgIHZhciBzZWN1cml0
eU9yaWdpbklkID0gc2VjdXJpdHlPcmlnaW4uaWQoKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
IXRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luSWRdKTsK
KyAgICAgICAgdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmln
aW5JZF0gPSBbXTsKICAgICAgICAgdGhpcy5fbG9hZERhdGFiYXNlTmFtZXMoc2VjdXJpdHlPcmln
aW4pOwogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlP
cmlnaW4KKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gc2VjdXJp
dHlPcmlnaW4KICAgICAgKi8KICAgICBfcmVtb3ZlT3JpZ2luOiBmdW5jdGlvbihzZWN1cml0eU9y
aWdpbikKICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2RhdGFiYXNlTmFtZXNC
eVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luXSk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5d
Lmxlbmd0aDsgKytpKQotICAgICAgICAgICAgdGhpcy5fZGF0YWJhc2VSZW1vdmVkKHNlY3VyaXR5
T3JpZ2luLCB0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9yaWdp
bl1baV0pOwotICAgICAgICBkZWxldGUgdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmln
aW5bc2VjdXJpdHlPcmlnaW5dOworICAgICAgICB2YXIgc2VjdXJpdHlPcmlnaW5JZCA9IHNlY3Vy
aXR5T3JpZ2luLmlkKCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2RhdGFiYXNlTmFt
ZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luSWRdKTsKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCB0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9y
aWdpbklkXS5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX2RhdGFiYXNlUmVtb3ZlZChz
ZWN1cml0eU9yaWdpbiwgdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJp
dHlPcmlnaW5JZF1baV0pOworICAgICAgICBkZWxldGUgdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2Vj
dXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5JZF07CiAgICAgfSwKIAogICAgIC8qKgotICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBzZWN1cml0eU9yaWdpbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLlNlY3VyaXR5T3JpZ2lufSBzZWN1cml0eU9yaWdpbgogICAgICAqIEBwYXJhbSB7QXJyYXku
PHN0cmluZz59IGRhdGFiYXNlTmFtZXMKICAgICAgKi8KICAgICBfdXBkYXRlT3JpZ2luRGF0YWJh
c2VOYW1lczogZnVuY3Rpb24oc2VjdXJpdHlPcmlnaW4sIGRhdGFiYXNlTmFtZXMpCkBAIC0yMTEs
MTAgKzIxMywxMSBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewog
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGFiYXNlTmFtZXMubGVuZ3RoOyArK2kpCiAg
ICAgICAgICAgICBuZXdEYXRhYmFzZU5hbWVzW2RhdGFiYXNlTmFtZXNbaV1dID0gdHJ1ZTsKICAg
ICAgICAgdmFyIG9sZERhdGFiYXNlTmFtZXMgPSB7fTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9yaWdpbl0u
bGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBvbGREYXRhYmFzZU5hbWVzW3RoaXMuX2RhdGFiYXNl
TmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luXVtpXV0gPSB0cnVlOworICAgICAg
ICB2YXIgc2VjdXJpdHlPcmlnaW5JZCA9IHNlY3VyaXR5T3JpZ2luLmlkKCk7CisgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bc2Vj
dXJpdHlPcmlnaW5JZF0ubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBvbGREYXRhYmFzZU5hbWVz
W3RoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luSWRdW2ld
XSA9IHRydWU7CiAKLSAgICAgICAgdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5b
c2VjdXJpdHlPcmlnaW5dID0gZGF0YWJhc2VOYW1lczsKKyAgICAgICAgdGhpcy5fZGF0YWJhc2VO
YW1lc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5JZF0gPSBkYXRhYmFzZU5hbWVzOwog
CiAgICAgICAgIGZvciAodmFyIGRhdGFiYXNlTmFtZSBpbiBvbGREYXRhYmFzZU5hbWVzKSB7CiAg
ICAgICAgICAgICBpZiAoIW5ld0RhdGFiYXNlTmFtZXNbZGF0YWJhc2VOYW1lXSkKQEAgLTIyNyw3
ICsyMzAsNyBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAg
IH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlPcmlnaW4KKyAg
ICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gc2VjdXJpdHlPcmlnaW4K
ICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YWJhc2VOYW1lCiAgICAgICovCiAgICAgX2RhdGFi
YXNlQWRkZWQ6IGZ1bmN0aW9uKHNlY3VyaXR5T3JpZ2luLCBkYXRhYmFzZU5hbWUpCkBAIC0yMzcs
NyArMjQwLDcgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsKICAg
ICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCisg
ICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5T3JpZ2lu
CiAgICAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGFiYXNlTmFtZQogICAgICAqLwogICAgIF9kYXRh
YmFzZVJlbW92ZWQ6IGZ1bmN0aW9uKHNlY3VyaXR5T3JpZ2luLCBkYXRhYmFzZU5hbWUpCkBAIC0y
NDcsNyArMjUwLDcgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsK
ICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2lu
CisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5T3Jp
Z2luCiAgICAgICovCiAgICAgX2xvYWREYXRhYmFzZU5hbWVzOiBmdW5jdGlvbihzZWN1cml0eU9y
aWdpbikKICAgICB7CkBAIC0yNjIsMTIgKzI2NSwxMiBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERC
TW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgaWYgKCF0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdp
bltzZWN1cml0eU9yaWdpbl0pCisgICAgICAgICAgICBpZiAoIXRoaXMuX2RhdGFiYXNlTmFtZXNC
eVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luLmlkKCldKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU9yaWdpbkRhdGFiYXNlTmFtZXMoc2VjdXJp
dHlPcmlnaW4sIGRhdGFiYXNlTmFtZXMpOwogICAgICAgICB9CiAKLSAgICAgICAgSW5kZXhlZERC
QWdlbnQucmVxdWVzdERhdGFiYXNlTmFtZXMoc2VjdXJpdHlPcmlnaW4sIGNhbGxiYWNrLmJpbmQo
dGhpcykpOworICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJhc2VOYW1lcyhzZWN1
cml0eU9yaWdpbi50b1Byb3RvY29sKCksIGNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0sCiAK
ICAgICAvKioKQEAgLTI4Niw3ICsyODksNyBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgaWYgKCF0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltkYXRh
YmFzZUlkLnNlY3VyaXR5T3JpZ2luXSkKKyAgICAgICAgICAgIGlmICghdGhpcy5fZGF0YWJhc2VO
YW1lc0J5U2VjdXJpdHlPcmlnaW5bZGF0YWJhc2VJZC5zZWN1cml0eU9yaWdpbi5pZCgpXSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB2YXIgZGF0YWJhc2VNb2RlbCA9IG5l
dyBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuRGF0YWJhc2UoZGF0YWJhc2VJZCwgZGF0YWJh
c2VXaXRoT2JqZWN0U3RvcmVzLnZlcnNpb24sIGRhdGFiYXNlV2l0aE9iamVjdFN0b3Jlcy5pbnRW
ZXJzaW9uKTsKICAgICAgICAgICAgIHRoaXMuX2RhdGFiYXNlcy5wdXQoZGF0YWJhc2VJZCwgZGF0
YWJhc2VNb2RlbCk7IApAQCAtMzA2LDcgKzMwOSw3IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJN
b2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuRXZlbnRUeXBlcy5EYXRhYmFzZUxvYWRl
ZCwgZGF0YWJhc2VNb2RlbCk7CiAgICAgICAgIH0KIAotICAgICAgICBJbmRleGVkREJBZ2VudC5y
ZXF1ZXN0RGF0YWJhc2UoZGF0YWJhc2VJZC5zZWN1cml0eU9yaWdpbiwgZGF0YWJhc2VJZC5uYW1l
LCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERh
dGFiYXNlKGRhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW4udG9Qcm90b2NvbCgpLCBkYXRhYmFzZUlk
Lm5hbWUsIGNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTM2MCw3
ICszNjMsNyBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAg
ICAgICAgaWYgKCF0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltkYXRhYmFzZUlk
LnNlY3VyaXR5T3JpZ2luXSkKKyAgICAgICAgICAgIGlmICghdGhpcy5fZGF0YWJhc2VOYW1lc0J5
U2VjdXJpdHlPcmlnaW5bZGF0YWJhc2VJZC5zZWN1cml0eU9yaWdpbi5pZCgpXSkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB2YXIgZW50cmllcyA9IFtdOwogICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhRW50cmllcy5sZW5ndGg7ICsraSkgewpAQCAtMzcz
LDcgKzM3Niw3IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIH0KIAogICAgICAgICB2YXIga2V5UmFuZ2UgPSBXZWJJbnNwZWN0b3IuSW5kZXhlZERC
TW9kZWwua2V5UmFuZ2VGcm9tSURCS2V5UmFuZ2UoaWRiS2V5UmFuZ2UpOwotICAgICAgICBJbmRl
eGVkREJBZ2VudC5yZXF1ZXN0RGF0YShkYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luLCBkYXRhYmFz
ZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBza2lwQ291bnQsIHBhZ2VTaXplLCBr
ZXlSYW5nZSA/IGtleVJhbmdlIDogdW5kZWZpbmVkLCBpbm5lckNhbGxiYWNrLmJpbmQodGhpcykp
OworICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YShkYXRhYmFzZUlkLnNlY3VyaXR5
T3JpZ2luLnRvUHJvdG9jb2woKSwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5hbWUsIGluZGV4
TmFtZSwgc2tpcENvdW50LCBwYWdlU2l6ZSwga2V5UmFuZ2UgPyBrZXlSYW5nZSA6IHVuZGVmaW5l
ZCwgaW5uZXJDYWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICB9LAogCiAgICAgX19wcm90b19fOiBX
ZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZQpAQCAtMzk0LDcgKzM5Nyw3IEBAIFdlYkluc3Bl
Y3Rvci5JbmRleGVkREJNb2RlbC5FbnRyeSA9IGZ1bmN0aW9uKGtleSwgcHJpbWFyeUtleSwgdmFs
dWUpCiAKIC8qKgogICogQGNvbnN0cnVjdG9yCi0gKiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlP
cmlnaW4KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSBzZWN1cml0eU9y
aWdpbgogICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKICAqLwogV2ViSW5zcGVjdG9yLkluZGV4ZWRE
Qk1vZGVsLkRhdGFiYXNlSWQgPSBmdW5jdGlvbihzZWN1cml0eU9yaWdpbiwgbmFtZSkKQEAgLTQw
OSw3ICs0MTIsNyBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuRGF0YWJhc2VJZC5wcm90
b3R5cGUgPSB7CiAgICAgICovCiAgICAgZXF1YWxzOiBmdW5jdGlvbihkYXRhYmFzZUlkKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMubmFtZSA9PT0gZGF0YWJhc2VJZC5uYW1lICYmIHRoaXMu
c2VjdXJpdHlPcmlnaW4gPT09IGRhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW47CisgICAgICAgIHJl
dHVybiB0aGlzLm5hbWUgPT09IGRhdGFiYXNlSWQubmFtZSAmJiB0aGlzLnNlY3VyaXR5T3JpZ2lu
LmlkKCkgPT09IGRhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW4uaWQoKTsKICAgICB9LAogfQogLyoq
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWRE
QlZpZXdzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJW
aWV3cy5qcwppbmRleCAwN2FjOTE5NTYzMGM3NmY0NjBlNDI2MDlmMjBhMjQwZDdhMGZiMjI3Li5l
ZTYwZTJmYzQwMDcxN2QwMGJhNWI0OTg4ZDZiYmMxOTE1N2Q2YWQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQlZpZXdzLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCVmlld3MuanMKQEAgLTgw
LDcgKzgwLDcgQEAgV2ViSW5zcGVjdG9yLklEQkRhdGFiYXNlVmlldy5wcm90b3R5cGUgPSB7CiAK
ICAgICBfcmVmcmVzaERhdGFiYXNlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9z
ZWN1cml0eU9yaWdpblRyZWVFbGVtZW50LnRpdGxlID0gdGhpcy5fZm9ybWF0SGVhZGVyKFdlYklu
c3BlY3Rvci5VSVN0cmluZygiU2VjdXJpdHkgb3JpZ2luIiksIHRoaXMuX2RhdGFiYXNlLmRhdGFi
YXNlSWQuc2VjdXJpdHlPcmlnaW4pOworICAgICAgICB0aGlzLl9zZWN1cml0eU9yaWdpblRyZWVF
bGVtZW50LnRpdGxlID0gdGhpcy5fZm9ybWF0SGVhZGVyKFdlYkluc3BlY3Rvci5VSVN0cmluZygi
U2VjdXJpdHkgb3JpZ2luIiksIHRoaXMuX2RhdGFiYXNlLmRhdGFiYXNlSWQuc2VjdXJpdHlPcmln
aW4udWlUaXRsZSgpKTsKICAgICAgICAgdGhpcy5fbmFtZVRyZWVFbGVtZW50LnRpdGxlID0gdGhp
cy5fZm9ybWF0SGVhZGVyKFdlYkluc3BlY3Rvci5VSVN0cmluZygiTmFtZSIpLCB0aGlzLl9kYXRh
YmFzZS5kYXRhYmFzZUlkLm5hbWUpOwogICAgICAgICB0aGlzLl9zdHJpbmdWZXJzaW9uVHJlZUVs
ZW1lbnQudGl0bGUgPSB0aGlzLl9mb3JtYXRIZWFkZXIoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJT
dHJpbmcgVmVyc2lvbiIpLCB0aGlzLl9kYXRhYmFzZS52ZXJzaW9uKTsKICAgICAgICAgdGhpcy5f
aW50VmVyc2lvblRyZWVFbGVtZW50LnRpdGxlID0gdGhpcy5fZm9ybWF0SGVhZGVyKFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiSW50ZWdlciBWZXJzaW9uIiksIHRoaXMuX2RhdGFiYXNlLmludFZlcnNp
b24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZVRyZWVNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VUcmVlTW9kZWwuanMKaW5kZXggZjI2Yzc5MThmNjU3ZGVhZTU0MTRkNjk4OTJkZGM4NmJm
ZDExZmQwYy4uYjdkMGFkYmMxM2RmN2FhNTdkYzU5MThjMWZjMzJiMWUxYTI1NmVlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVRyZWVNb2Rl
bC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJl
ZU1vZGVsLmpzCkBAIC00OSw4ICs0OSw4IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2Rl
bCA9IGZ1bmN0aW9uKG5ldHdvcmtNYW5hZ2VyKQogCiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdp
c3RlclBhZ2VEaXNwYXRjaGVyKG5ldyBXZWJJbnNwZWN0b3IuUGFnZURpc3BhdGNoZXIodGhpcykp
OwogCisgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW5UcmFja2VyID0gbmV3IFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVRyZWVNb2RlbC5TZWN1cml0eU9yaWdpblRyYWNrZXIodGhpcyk7CiAgICAgdGhpcy5f
cGVuZGluZ0NvbnNvbGVNZXNzYWdlcyA9IHt9OwotICAgIHRoaXMuX3NlY3VyaXR5T3JpZ2luRnJh
bWVDb3VudCA9IHt9OwogfQogCiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRU
eXBlcyA9IHsKQEAgLTExNCw2MiArMTE0LDMxIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVN
b2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLm1haW5GcmFtZSA9IGZyYW1lOwog
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5GcmFtZUFkZGVkLCBmcmFtZSk7CiAgICAgICAgIGlmICgh
YWJvdXRUb05hdmlnYXRlKQotICAgICAgICAgICAgdGhpcy5fYWRkU2VjdXJpdHlPcmlnaW4oZnJh
bWUuc2VjdXJpdHlPcmlnaW4pOworICAgICAgICAgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW5UcmFj
a2VyLl9hZGRTZWN1cml0eU9yaWdpbihmcmFtZS5zZWN1cml0eU9yaWdpbik7CiAgICAgICAgIGlm
IChmcmFtZS5pc01haW5GcmFtZSgpKQogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuTWFpbkZy
YW1lQ3JlYXRlZE9yTmF2aWdhdGVkLCBmcmFtZSk7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBzZWN1cml0eU9yaWdpbgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBp
ZAorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0KICAgICAgKi8K
LSAgICBfYWRkU2VjdXJpdHlPcmlnaW46IGZ1bmN0aW9uKHNlY3VyaXR5T3JpZ2luKQorICAgIHNl
Y3VyaXR5T3JpZ2luRm9ySWQ6IGZ1bmN0aW9uKGlkKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlz
Ll9zZWN1cml0eU9yaWdpbkZyYW1lQ291bnRbc2VjdXJpdHlPcmlnaW5dKSB7Ci0gICAgICAgICAg
ICB0aGlzLl9zZWN1cml0eU9yaWdpbkZyYW1lQ291bnRbc2VjdXJpdHlPcmlnaW5dID0gMTsKLSAg
ICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5SZXNv
dXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLlNlY3VyaXR5T3JpZ2luQWRkZWQsIHNlY3VyaXR5T3Jp
Z2luKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICB0aGlzLl9zZWN1
cml0eU9yaWdpbkZyYW1lQ291bnRbc2VjdXJpdHlPcmlnaW5dICs9IDE7CisgICAgICAgIHJldHVy
biB0aGlzLl9zZWN1cml0eU9yaWdpblRyYWNrZXIuX3NlY3VyaXR5T3JpZ2luRm9ySWQoaWQpOwog
ICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlPcmlnaW4K
LSAgICAgKi8KLSAgICBfcmVtb3ZlU2VjdXJpdHlPcmlnaW46IGZ1bmN0aW9uKHNlY3VyaXR5T3Jp
Z2luKQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fc2VjdXJpdHlPcmlnaW5G
cmFtZUNvdW50W3NlY3VyaXR5T3JpZ2luXSk7Ci0gICAgICAgIGlmICh0aGlzLl9zZWN1cml0eU9y
aWdpbkZyYW1lQ291bnRbc2VjdXJpdHlPcmlnaW5dID09PSAxKSB7Ci0gICAgICAgICAgICBkZWxl
dGUgdGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50W3NlY3VyaXR5T3JpZ2luXTsKLSAgICAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVRyZWVNb2RlbC5FdmVudFR5cGVzLlNlY3VyaXR5T3JpZ2luUmVtb3ZlZCwgc2VjdXJpdHlPcmln
aW4pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3NlY3Vy
aXR5T3JpZ2luRnJhbWVDb3VudFtzZWN1cml0eU9yaWdpbl0gLT0gMTsKLSAgICB9LAotCi0gICAg
LyoqCi0gICAgICogQHJldHVybiB7QXJyYXkuPHN0cmluZz59CisgICAgICogQHJldHVybiB7QXJy
YXkuPFdlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbj59CiAgICAgICovCiAgICAgc2VjdXJpdHlP
cmlnaW5zOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModGhp
cy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50KTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NlY3Vy
aXR5T3JpZ2luVHJhY2tlci5fc2VjdXJpdHlPcmlnaW5zKCk7CiAgICAgfSwKIAotICAgIC8qKgot
ICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lfSBtYWluRnJhbWUK
LSAgICAgKi8KLSAgICBfaGFuZGxlTWFpbkZyYW1lRGV0YWNoZWQ6IGZ1bmN0aW9uKG1haW5GcmFt
ZSkKKyAgICBfaGFuZGxlTWFpbkZyYW1lRGV0YWNoZWQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAg
ICAgIC8qKgotICAgICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFt
ZX0gZnJhbWUKLSAgICAgICAgICovCi0gICAgICAgIGZ1bmN0aW9uIHJlbW92ZU9yaWdpbkZvckZy
YW1lKGZyYW1lKQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZy
YW1lLmNoaWxkRnJhbWVzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIHJlbW92ZU9yaWdp
bkZvckZyYW1lLmNhbGwodGhpcywgZnJhbWUuY2hpbGRGcmFtZXNbaV0pOwotICAgICAgICAgICAg
aWYgKCFmcmFtZS5pc01haW5GcmFtZSgpKQotICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZVNl
Y3VyaXR5T3JpZ2luKGZyYW1lLnNlY3VyaXR5T3JpZ2luKTsKLSAgICAgICAgfQotICAgICAgICBy
ZW1vdmVPcmlnaW5Gb3JGcmFtZS5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVN
b2RlbC5tYWluRnJhbWUpOworICAgICAgICB0aGlzLl9zZWN1cml0eU9yaWdpblRyYWNrZXIuX2Rl
dGFjaE1haW5GcmFtZSh0aGlzLm1haW5GcmFtZSk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTg0
LDcgKzE1Myw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHZhciBhZGRlZE9yaWdpbjsKICAgICAgICAgaWYgKGZyYW1lKSB7CiAgICAgICAg
ICAgICAvLyBOYXZpZ2F0aW9uIHdpdGhpbiBleGlzdGluZyBmcmFtZS4KLSAgICAgICAgICAgIHRo
aXMuX3JlbW92ZVNlY3VyaXR5T3JpZ2luKGZyYW1lLnNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAg
ICAgIHRoaXMuX3NlY3VyaXR5T3JpZ2luVHJhY2tlci5fcmVtb3ZlU2VjdXJpdHlPcmlnaW4oZnJh
bWUuc2VjdXJpdHlPcmlnaW4pOwogICAgICAgICAgICAgZnJhbWUuX25hdmlnYXRlKGZyYW1lUGF5
bG9hZCk7CiAgICAgICAgICAgICBhZGRlZE9yaWdpbiA9IGZyYW1lLnNlY3VyaXR5T3JpZ2luOwog
ICAgICAgICB9IGVsc2UgewpAQCAtMTkyLDcgKzE2MSw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVRyZWVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgcGFyZW50RnJhbWUgPSB0
aGlzLl9mcmFtZXNbZnJhbWVQYXlsb2FkLnBhcmVudElkXTsKICAgICAgICAgICAgIGZyYW1lID0g
bmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFtZSh0aGlzLCBwYXJlbnRGcmFtZSwgZnJh
bWVQYXlsb2FkKTsKICAgICAgICAgICAgIGlmIChmcmFtZS5pc01haW5GcmFtZSgpICYmIHRoaXMu
bWFpbkZyYW1lKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlTWFpbkZyYW1lRGV0YWNo
ZWQodGhpcy5tYWluRnJhbWUpOworICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZU1haW5GcmFt
ZURldGFjaGVkKCk7CiAgICAgICAgICAgICAgICAgLy8gRGVmaW5pdGVseSBhIG5hdmlnYXRpb24g
dG8gdGhlIG5ldyBiYWNrZW5kIHByb2Nlc3MuCiAgICAgICAgICAgICAgICAgdGhpcy5fZnJhbWVE
ZXRhY2hlZCh0aGlzLm1haW5GcmFtZS5pZCk7CiAgICAgICAgICAgICB9CkBAIC0yMDksNyArMTc4
LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVRyZWVNb2RlbC5FdmVudFR5cGVzLk1haW5GcmFtZUNyZWF0ZWRPck5hdmlnYXRlZCwgZnJhbWUp
OwogICAgICAgICB9CiAgICAgICAgIGlmIChhZGRlZE9yaWdpbikKLSAgICAgICAgICAgIHRoaXMu
X2FkZFNlY3VyaXR5T3JpZ2luKGFkZGVkT3JpZ2luKTsKKyAgICAgICAgICAgIHRoaXMuX3NlY3Vy
aXR5T3JpZ2luVHJhY2tlci5fYWRkU2VjdXJpdHlPcmlnaW4oYWRkZWRPcmlnaW4pOwogCiAgICAg
ICAgIC8vIEZpbGwgZnJhbWUgd2l0aCByZXRhaW5lZCByZXNvdXJjZXMgKHRoZSBvbmVzIGxvYWRl
ZCB1c2luZyBuZXcgbG9hZGVyKS4KICAgICAgICAgdmFyIHJlc291cmNlcyA9IGZyYW1lLnJlc291
cmNlcygpOwpAQCAtMjMzLDcgKzIwMiw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2Rl
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghZnJhbWUpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgdGhpcy5fcmVtb3ZlU2VjdXJpdHlPcmlnaW4oZnJhbWUuc2VjdXJpdHlPcmln
aW4pOworICAgICAgICB0aGlzLl9zZWN1cml0eU9yaWdpblRyYWNrZXIuX3JlbW92ZVNlY3VyaXR5
T3JpZ2luKGZyYW1lLnNlY3VyaXR5T3JpZ2luKTsKICAgICAgICAgaWYgKGZyYW1lLnBhcmVudEZy
YW1lKQogICAgICAgICAgICAgZnJhbWUucGFyZW50RnJhbWUuX3JlbW92ZUNoaWxkRnJhbWUoZnJh
bWUpOwogICAgICAgICBlbHNlCkBAIC00MTksNiArMzg4LDEzMSBAQCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VUcmVlTW9kZWwucHJvdG90eXBlID0gewogLyoqCiAgKiBAY29uc3RydWN0b3IKICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsfSBtb2RlbAorICovCitXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuU2VjdXJpdHlPcmlnaW5UcmFja2VyID0gZnVuY3Rpb24o
bW9kZWwpCit7CisgICAgdGhpcy5fbW9kZWwgPSBtb2RlbDsKKyAgICB0aGlzLl9zZWN1cml0eU9y
aWdpbkZyYW1lQ291bnQgPSB7fTsKKyAgICB0aGlzLl9zZWN1cml0eU9yaWdpbnNCeUlkID0ge307
CisgICAgdGhpcy5fdXJsVG9ET01Eb21haW5zID0ge307CisgICAgdGhpcy5fbGFzdE9yaWdpbklk
ID0gMDsKK30KKworV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLlNlY3VyaXR5T3JpZ2lu
VHJhY2tlci5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuU2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5T3JpZ2luCisgICAgICovCisgICAgX2FkZFNlY3Vy
aXR5T3JpZ2luOiBmdW5jdGlvbihzZWN1cml0eU9yaWdpbikKKyAgICB7CisgICAgICAgIHZhciBz
ZWN1cml0eU9yaWdpbklkID0gc2VjdXJpdHlPcmlnaW4uaWQoKTsKKyAgICAgICAgaWYgKCF0aGlz
Ll9zZWN1cml0eU9yaWdpbkZyYW1lQ291bnRbc2VjdXJpdHlPcmlnaW5JZF0pIHsKKyAgICAgICAg
ICAgIHRoaXMuX3NlY3VyaXR5T3JpZ2luRnJhbWVDb3VudFtzZWN1cml0eU9yaWdpbklkXSA9IDE7
CisgICAgICAgICAgICB0aGlzLl9tb2RlbC5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuU2VjdXJpdHlPcmlnaW5BZGRlZCwg
c2VjdXJpdHlPcmlnaW4pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IHRoaXMuX3NlY3VyaXR5T3JpZ2luRnJhbWVDb3VudFtzZWN1cml0eU9yaWdpbklkXSArPSAxOwor
ICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9y
aWdpbn0gc2VjdXJpdHlPcmlnaW4KKyAgICAgKi8KKyAgICBfcmVtb3ZlU2VjdXJpdHlPcmlnaW46
IGZ1bmN0aW9uKHNlY3VyaXR5T3JpZ2luKQorICAgIHsKKyAgICAgICAgdmFyIHNlY3VyaXR5T3Jp
Z2luSWQgPSBzZWN1cml0eU9yaWdpbi5pZCgpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlz
Ll9zZWN1cml0eU9yaWdpbkZyYW1lQ291bnRbc2VjdXJpdHlPcmlnaW5JZF0pOworICAgICAgICBp
ZiAodGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50W3NlY3VyaXR5T3JpZ2luSWRdID09PSAx
KSB7CisgICAgICAgICAgICB0aGlzLl91bmJpbmRTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdp
bik7CisgICAgICAgICAgICB0aGlzLl9tb2RlbC5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuU2VjdXJpdHlPcmlnaW5SZW1v
dmVkLCBzZWN1cml0eU9yaWdpbik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50W3NlY3VyaXR5T3JpZ2luSWRdIC09
IDE7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNlY3Vy
aXR5T3JpZ2lufSBzZWN1cml0eU9yaWdpbgorICAgICAqLworICAgIF91bmJpbmRTZWN1cml0eU9y
aWdpbjogZnVuY3Rpb24oc2VjdXJpdHlPcmlnaW4pCisgICAgeworICAgICAgICB2YXIgc2VjdXJp
dHlPcmlnaW5JZCA9IHNlY3VyaXR5T3JpZ2luLmlkKCk7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9z
ZWN1cml0eU9yaWdpbkZyYW1lQ291bnRbc2VjdXJpdHlPcmlnaW5JZF07CisgICAgICAgIGRlbGV0
ZSB0aGlzLl9zZWN1cml0eU9yaWdpbnNCeUlkW3NlY3VyaXR5T3JpZ2luSWRdOworCisgICAgICAg
IHZhciB1cmwgPSBzZWN1cml0eU9yaWdpbi51cmwoKTsKKyAgICAgICAgdmFyIGRvbWFpbk1hcCA9
IHRoaXMuX3VybFRvRE9NRG9tYWluc1t1cmxdOworICAgICAgICBjb25zb2xlLmFzc2VydChkb21h
aW5NYXApOworICAgICAgICB2YXIgZG9tYWluID0gc2VjdXJpdHlPcmlnaW4uZG9tYWluU2V0SW5E
T00oKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZG9tYWluTWFwW2RvbWFpbl0pOworICAgICAg
ICBkZWxldGUgZG9tYWluTWFwW2RvbWFpbl07CisgICAgICAgIGlmICghT2JqZWN0LmtleXMoZG9t
YWluTWFwKS5sZW5ndGgpCisgICAgICAgICAgICBkZWxldGUgdGhpcy5fdXJsVG9ET01Eb21haW5z
W3VybF07CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7UGFnZUFnZW50LlNlY3Vy
aXR5T3JpZ2lufSBwYXlsb2FkCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5
T3JpZ2lufQorICAgICAqLworICAgIF9iaW5kU2VjdXJpdHlPcmlnaW46IGZ1bmN0aW9uKHBheWxv
YWQpCisgICAgeworICAgICAgICB2YXIgdXJsID0gcGF5bG9hZC51cmw7CisgICAgICAgIHZhciBk
b21haW4gPSBwYXlsb2FkLmRvbWFpblNldEluRE9NIHx8ICIiOworICAgICAgICB2YXIgZG9tYWlu
TWFwID0gdGhpcy5fdXJsVG9ET01Eb21haW5zW3VybF07CisgICAgICAgIGlmICghZG9tYWluTWFw
KSB7CisgICAgICAgICAgICBkb21haW5NYXAgPSB7fTsKKyAgICAgICAgICAgIHRoaXMuX3VybFRv
RE9NRG9tYWluc1t1cmxdID0gZG9tYWluTWFwOworICAgICAgICB9CisgICAgICAgIHZhciBvcmln
aW4gPSBkb21haW5NYXBbZG9tYWluXTsKKyAgICAgICAgaWYgKCFvcmlnaW4pIHsKKyAgICAgICAg
ICAgIG9yaWdpbiA9IG5ldyBXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4odXJsLCBkb21haW4s
IFN0cmluZygrK3RoaXMuX2xhc3RPcmlnaW5JZCkpOworICAgICAgICAgICAgZG9tYWluTWFwW2Rv
bWFpbl0gPSBvcmlnaW47CisgICAgICAgICAgICB0aGlzLl9zZWN1cml0eU9yaWdpbnNCeUlkW29y
aWdpbi5pZCgpXSA9IG9yaWdpbjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gb3JpZ2luIHx8
IG51bGw7CisgICAgfSwKKworICAgIF9kZXRhY2hNYWluRnJhbWU6IGZ1bmN0aW9uKG1haW5GcmFt
ZSkKKyAgICB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5S
ZXNvdXJjZVRyZWVGcmFtZX0gZnJhbWUKKyAgICAgICAgICovCisgICAgICAgIGZ1bmN0aW9uIHJl
bW92ZU9yaWdpbkZvckZyYW1lKGZyYW1lKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGZyYW1lLmNoaWxkRnJhbWVzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAg
ICAgIHJlbW92ZU9yaWdpbkZvckZyYW1lLmNhbGwodGhpcywgZnJhbWUuY2hpbGRGcmFtZXNbaV0p
OworICAgICAgICAgICAgaWYgKCFmcmFtZS5pc01haW5GcmFtZSgpKQorICAgICAgICAgICAgICAg
IHRoaXMuX3JlbW92ZVNlY3VyaXR5T3JpZ2luKGZyYW1lLnNlY3VyaXR5T3JpZ2luKTsKKyAgICAg
ICAgfQorICAgICAgICByZW1vdmVPcmlnaW5Gb3JGcmFtZS5jYWxsKHRoaXMsIG1haW5GcmFtZSk7
CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBpZAorICAgICAqIEBy
ZXR1cm4ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0KKyAgICAgKi8KKyAgICBfc2VjdXJp
dHlPcmlnaW5Gb3JJZDogZnVuY3Rpb24oaWQpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5f
c2VjdXJpdHlPcmlnaW5zQnlJZFtpZF0gfHwgbnVsbDsKKyAgICB9LAorCisgICAgLyoqCisgICAg
ICogQHJldHVybiB7QXJyYXkuPFdlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbj59CisgICAgICov
CisgICAgX3NlY3VyaXR5T3JpZ2luczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgLyoqCisg
ICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBpZAorICAgICAgICAgKiBAcmV0dXJuIHtXZWJJbnNw
ZWN0b3IuU2VjdXJpdHlPcmlnaW59CisgICAgICAgICAqLworICAgICAgICBmdW5jdGlvbiBjb252
ZXJ0ZXIoaWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9zZWN1cml0eU9y
aWdpbnNCeUlkW2lkXTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModGhp
cy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50KS5tYXAoY29udmVydGVyLmJpbmQodGhpcykpOwor
ICAgIH0KK30KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlJlc291cmNlVHJlZU1vZGVsfSBtb2RlbAogICogQHBhcmFtIHs/V2ViSW5zcGVjdG9yLlJlc291
cmNlVHJlZUZyYW1lfSBwYXJlbnRGcmFtZQogICogQHBhcmFtIHtQYWdlQWdlbnQuRnJhbWV9IHBh
eWxvYWQKICAqLwpAQCAtNDMxLDcgKzUyNSw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVG
cmFtZSA9IGZ1bmN0aW9uKG1vZGVsLCBwYXJlbnRGcmFtZSwgcGF5bG9hZCkKICAgICB0aGlzLl9s
b2FkZXJJZCA9IHBheWxvYWQubG9hZGVySWQ7CiAgICAgdGhpcy5fbmFtZSA9IHBheWxvYWQubmFt
ZTsKICAgICB0aGlzLl91cmwgPSBwYXlsb2FkLnVybDsKLSAgICB0aGlzLl9zZWN1cml0eU9yaWdp
biA9IHBheWxvYWQuc2VjdXJpdHlPcmlnaW47CisgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW4gPSBt
b2RlbC5fc2VjdXJpdHlPcmlnaW5UcmFja2VyLl9iaW5kU2VjdXJpdHlPcmlnaW4ocGF5bG9hZC5z
ZWN1cml0eU9yaWdpbik7CiAgICAgdGhpcy5fbWltZVR5cGUgPSBwYXlsb2FkLm1pbWVUeXBlOwog
CiAgICAgLyoqCkBAIC00NzQsNyArNTY4LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZy
YW1lLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHJldHVybiB7c3Ry
aW5nfQorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0KICAgICAg
Ki8KICAgICBnZXQgc2VjdXJpdHlPcmlnaW4oKQogICAgIHsKQEAgLTUyMSw3ICs2MTUsNyBAQCBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
Ll9sb2FkZXJJZCA9IGZyYW1lUGF5bG9hZC5sb2FkZXJJZDsKICAgICAgICAgdGhpcy5fbmFtZSA9
IGZyYW1lUGF5bG9hZC5uYW1lOwogICAgICAgICB0aGlzLl91cmwgPSBmcmFtZVBheWxvYWQudXJs
OwotICAgICAgICB0aGlzLl9zZWN1cml0eU9yaWdpbiA9IGZyYW1lUGF5bG9hZC5zZWN1cml0eU9y
aWdpbjsKKyAgICAgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW4gPSB0aGlzLl9tb2RlbC5fc2VjdXJp
dHlPcmlnaW5UcmFja2VyLl9iaW5kU2VjdXJpdHlPcmlnaW4oZnJhbWVQYXlsb2FkLnNlY3VyaXR5
T3JpZ2luKTsKICAgICAgICAgdGhpcy5fbWltZVR5cGUgPSBmcmFtZVBheWxvYWQubWltZVR5cGU7
CiAKICAgICAgICAgdmFyIG1haW5SZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlc01hcFt0aGlzLl91
cmxdOwpAQCAtNjQyLDYgKzczNiw3NSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWUu
cHJvdG90eXBlID0gewogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtzdHJpbmd9
IHVybAorICogQHBhcmFtIHtzdHJpbmd8dW5kZWZpbmVkfSBkb21haW5TZXRJbkRPTQorICogQHBh
cmFtIHtzdHJpbmd9IGlkCisgKi8KK1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbiA9IGZ1bmN0
aW9uKHVybCwgZG9tYWluU2V0SW5ET00sIGlkKQoreworICAgIHRoaXMuX3VybCA9IHVybDsKKyAg
ICB0aGlzLl9kb21haW5TZXRJbkRPTSA9IGRvbWFpblNldEluRE9NOworICAgIHRoaXMuX2lkID0g
aWQ7Cit9CisKK1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbi5wcm90b3R5cGUgPSB7CisgICAg
LyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGlkOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5faWQ7CisgICAgfSwKKworICAgIC8qKgorICAg
ICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICB1cmw6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl91cmw7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBy
ZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBkb21haW5TZXRJbkRPTTogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2RvbWFpblNldEluRE9NIHx8ICIiOworICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0g
b3RoZXIKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGVxdWFsOiBmdW5j
dGlvbihvdGhlcikKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl91cmwgPT09IG90aGVyLl91
cmwgJiYgdGhpcy5fZG9tYWluU2V0SW5ET00gPT0gb3RoZXIuX2RvbWFpblNldEluRE9NOworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgdWlU
aXRsZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgIGlmICh0aGlzLnVybCgpID09PSAiZmlsZTov
LyIpCisgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9jYWwgRmlsZXMi
KTsKKworICAgICAgdmFyIGRvbWFpbiA9IHRoaXMuZG9tYWluU2V0SW5ET00oKTsKKyAgICAgIHZh
ciBzdWZmaXggPSBkb21haW4gPyBTdHJpbmcuc3ByaW50ZigiICglcykiLCBkb21haW4pIDogIiI7
CisgICAgICByZXR1cm4gdGhpcy51cmwoKSArIHN1ZmZpeDsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHJldHVybiB7UGFnZUFnZW50LlNlY3VyaXR5T3JpZ2lufQorICAgICAqLworICAgIHRv
UHJvdG9jb2w6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB7IHVybDogdGhpcy5f
dXJsLCBkb21haW5TZXRJbkRPTTogdGhpcy5fZG9tYWluU2V0SW5ET00gfHwgdW5kZWZpbmVkIH07
CisgICAgfQorfQorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgogICogQGltcGxlbWVudHMge1BhZ2VB
Z2VudC5EaXNwYXRjaGVyfQogICovCiBXZWJJbnNwZWN0b3IuUGFnZURpc3BhdGNoZXIgPSBmdW5j
dGlvbihyZXNvdXJjZVRyZWVNb2RlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCmluZGV4IDg4MDYyNjljYzg5ZDJjMTU1YmFm
M2FjZTZhYTA0NDJiZjgwNDhjNjguLjllOTc0NTMzOWIxMmViMTUwOGU1MTQ5ZGNlZDg2YmY5YzY4
YTAxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZXNQYW5lbC5qcwpAQCAtMTYxMCw3ICsxNjEwLDcgQEAgV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1MaXN0VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICovCiBXZWJJbnNwZWN0b3IuSURC
RGF0YWJhc2VUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHN0b3JhZ2VQYW5lbCwgbW9kZWwsIGRhdGFi
YXNlSWQpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQuY2FsbCh0
aGlzLCBzdG9yYWdlUGFuZWwsIG51bGwsIGRhdGFiYXNlSWQubmFtZSArICIgLSAiICsgZGF0YWJh
c2VJZC5zZWN1cml0eU9yaWdpbiwgWyJpbmRleGVkLWRiLXN0b3JhZ2UtdHJlZS1pdGVtIl0pOwor
ICAgIFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LmNhbGwodGhpcywgc3RvcmFn
ZVBhbmVsLCBudWxsLCBkYXRhYmFzZUlkLm5hbWUgKyAiIC0gIiArIGRhdGFiYXNlSWQuc2VjdXJp
dHlPcmlnaW4udWlUaXRsZSgpLCBbImluZGV4ZWQtZGItc3RvcmFnZS10cmVlLWl0ZW0iXSk7CiAg
ICAgdGhpcy5fbW9kZWwgPSBtb2RlbDsKICAgICB0aGlzLl9kYXRhYmFzZUlkID0gZGF0YWJhc2VJ
ZDsKICAgICB0aGlzLl9pZGJPYmplY3RTdG9yZVRyZWVFbGVtZW50cyA9IHt9OwpAQCAtMTYxOSw3
ICsxNjE5LDggQEAgV2ViSW5zcGVjdG9yLklEQkRhdGFiYXNlVHJlZUVsZW1lbnQgPSBmdW5jdGlv
bihzdG9yYWdlUGFuZWwsIG1vZGVsLCBkYXRhYmFzZUlkKQogV2ViSW5zcGVjdG9yLklEQkRhdGFi
YXNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIGdldCBpdGVtVVJMKCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiAiaW5kZXhlZERCOi8vIiArIHRoaXMuX2RhdGFiYXNlSWQuc2VjdXJpdHlP
cmlnaW4gKyAiLyIgKyB0aGlzLl9kYXRhYmFzZUlkLm5hbWU7CisgICAgICAgIHZhciBvcmlnaW4g
PSB0aGlzLl9kYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luOworICAgICAgICByZXR1cm4gImluZGV4
ZWREQjovLyIgKyBvcmlnaW4udXJsKCkgKyAiLywiICsgb3JpZ2luLmRvbWFpblNldEluRE9NKCkg
KyAiLyIgKyB0aGlzLl9kYXRhYmFzZUlkLm5hbWU7CiAgICAgfSwKIAogICAgIG9uYXR0YWNoOiBm
dW5jdGlvbigpCkBAIC0xNzI2LDcgKzE3MjcsNyBAQCBXZWJJbnNwZWN0b3IuSURCT2JqZWN0U3Rv
cmVUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHN0b3JhZ2VQYW5lbCwgbW9kZWwsIGRhdGFiYXNlSQog
V2ViSW5zcGVjdG9yLklEQk9iamVjdFN0b3JlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAg
IGdldCBpdGVtVVJMKCkKICAgICB7Ci0gICAgICAgIHJldHVybiAiaW5kZXhlZERCOi8vIiArIHRo
aXMuX2RhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW4gKyAiLyIgKyB0aGlzLl9kYXRhYmFzZUlkLm5h
bWUgKyAiLyIgKyB0aGlzLl9vYmplY3RTdG9yZS5uYW1lOworICAgICAgICByZXR1cm4gImluZGV4
ZWREQjovLyIgKyB0aGlzLl9kYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luLnVybCgpICsgIi8iICsg
dGhpcy5fZGF0YWJhc2VJZC5uYW1lICsgIi8iICsgdGhpcy5fb2JqZWN0U3RvcmUubmFtZTsKICAg
ICB9LAogCiAgICAvKioKQEAgLTE4MzEsNyArMTgzMiw3IEBAIFdlYkluc3BlY3Rvci5JREJJbmRl
eFRyZWVFbGVtZW50ID0gZnVuY3Rpb24oc3RvcmFnZVBhbmVsLCBtb2RlbCwgZGF0YWJhc2VJZCwg
b2JqCiBXZWJJbnNwZWN0b3IuSURCSW5kZXhUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAg
Z2V0IGl0ZW1VUkwoKQogICAgIHsKLSAgICAgICAgcmV0dXJuICJpbmRleGVkREI6Ly8iICsgdGhp
cy5fZGF0YWJhc2VJZC5zZWN1cml0eU9yaWdpbiArICIvIiArIHRoaXMuX2RhdGFiYXNlSWQubmFt
ZSArICIvIiArIHRoaXMuX29iamVjdFN0b3JlLm5hbWUgKyAiLyIgKyB0aGlzLl9pbmRleC5uYW1l
OworICAgICAgICByZXR1cm4gImluZGV4ZWREQjovLyIgKyB0aGlzLl9kYXRhYmFzZUlkLnNlY3Vy
aXR5T3JpZ2luLnVybCgpICsgIi8iICsgdGhpcy5fZGF0YWJhc2VJZC5uYW1lICsgIi8iICsgdGhp
cy5fb2JqZWN0U3RvcmUubmFtZSArICIvIiArIHRoaXMuX2luZGV4Lm5hbWU7CiAgICAgfSwKIAog
ICAgIC8qKgpAQCAtMTg4MywxNCArMTg4NCwxNSBAQCBXZWJJbnNwZWN0b3IuSURCSW5kZXhUcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7CiAgKi8KIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVs
ZW1lbnQgPSBmdW5jdGlvbihzdG9yYWdlUGFuZWwsIGRvbVN0b3JhZ2UsIGNsYXNzTmFtZSkKIHsK
LSAgICBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5jYWxsKHRoaXMsIHN0b3Jh
Z2VQYW5lbCwgbnVsbCwgZG9tU3RvcmFnZS5zZWN1cml0eU9yaWdpbiA/IGRvbVN0b3JhZ2Uuc2Vj
dXJpdHlPcmlnaW4gOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvY2FsIEZpbGVzIiksIFsiZG9t
c3RvcmFnZS1zdG9yYWdlLXRyZWUtaXRlbSIsIGNsYXNzTmFtZV0pOworICAgIFdlYkluc3BlY3Rv
ci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LmNhbGwodGhpcywgc3RvcmFnZVBhbmVsLCBudWxsLCBk
b21TdG9yYWdlLnNlY3VyaXR5T3JpZ2luLnVpVGl0bGUoKSwgWyJkb21zdG9yYWdlLXN0b3JhZ2Ut
dHJlZS1pdGVtIiwgY2xhc3NOYW1lXSk7CiAgICAgdGhpcy5fZG9tU3RvcmFnZSA9IGRvbVN0b3Jh
Z2U7CiB9CiAKIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewogICAgIGdldCBpdGVtVVJMKCkKICAgICB7Ci0gICAgICAgIHJldHVybiAic3RvcmFnZTovLyIg
KyB0aGlzLl9kb21TdG9yYWdlLnNlY3VyaXR5T3JpZ2luICsgIi8iICsgKHRoaXMuX2RvbVN0b3Jh
Z2UuaXNMb2NhbFN0b3JhZ2UgPyAibG9jYWwiIDogInNlc3Npb24iKTsKKyAgICAgICAgdmFyIG9y
aWdpbiA9IHRoaXMuX2RvbVN0b3JhZ2Uuc2VjdXJpdHlPcmlnaW47CisgICAgICAgIHJldHVybiAi
c3RvcmFnZTovLyIgKyBvcmlnaW4udXJsKCkgKyAiLywiICsgb3JpZ2luLmRvbWFpblNldEluRE9N
KCkgKyAiLyIgKyAodGhpcy5fZG9tU3RvcmFnZS5pc0xvY2FsU3RvcmFnZSA/ICJsb2NhbCIgOiAi
c2Vzc2lvbiIpOwogICAgIH0sCiAKICAgICBvbnNlbGVjdDogZnVuY3Rpb24oc2VsZWN0ZWRCeVVz
ZXIpCkBAIC0yMDIwLDcgKzIwMjIsNyBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZy
YW1lVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICovCiBXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oc3RvcmFnZVBhbmVsLCBmaWxlU3lzdGVtKQogewotICAg
IHZhciBkaXNwbGF5TmFtZSA9IGZpbGVTeXN0ZW0udHlwZSArICIgLSAiICsgZmlsZVN5c3RlbS5v
cmlnaW47CisgICAgdmFyIGRpc3BsYXlOYW1lID0gZmlsZVN5c3RlbS50eXBlICsgIiAtICIgKyBm
aWxlU3lzdGVtLm9yaWdpbi51aVRpdGxlKCk7CiAgICAgV2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdl
VHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBzdG9yYWdlUGFuZWwsIG51bGwsIGRpc3BsYXlOYW1lLCBb
ImZpbGUtc3lzdGVtLXN0b3JhZ2UtdHJlZS1pdGVtIl0pOwogICAgIHRoaXMuX2ZpbGVTeXN0ZW0g
PSBmaWxlU3lzdGVtOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9SdW50aW1lTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1J1bnRpbWVNb2RlbC5qcwppbmRleCBiZWY5MTc3NDhkOTkyMTg3NDA5ZWUzYTUyZTExZDJk
NTQzZDQ2NWRkLi41NDgyNjQ0NTMzYjE3NzVkOWQ2Y2I2MmZjZTRkZDI3YzIzYzEyZWEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1J1bnRpbWVNb2RlbC5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1J1bnRpbWVNb2RlbC5q
cwpAQCAtNzQsNyArNzQsNyBAQCBXZWJJbnNwZWN0b3IuUnVudGltZU1vZGVsLnByb3RvdHlwZSA9
IHsKIAogICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZy
YW1lfSBmcmFtZQotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWN1cml0eU9yaWdpbgorICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSBzZWN1cml0eU9yaWdpbgogICAg
ICAqLwogICAgIGNvbnRleHRCeUZyYW1lQW5kU2VjdXJpdHlPcmlnaW46IGZ1bmN0aW9uKGZyYW1l
LCBzZWN1cml0eU9yaWdpbikKICAgICB7CkBAIC00MTQsMTMgKzQxNCwxNSBAQCBXZWJJbnNwZWN0
b3IuRnJhbWVFeGVjdXRpb25Db250ZXh0TGlzdC5wcm90b3R5cGUgPQogICAgIH0sCiAKICAgICAv
KioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlPcmlnaW4KKyAgICAgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gc2VjdXJpdHlPcmlnaW4KICAgICAgKi8KICAg
ICBjb250ZXh0QnlTZWN1cml0eU9yaWdpbjogZnVuY3Rpb24oc2VjdXJpdHlPcmlnaW4pCiAgICAg
ewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2V4ZWN1dGlvbkNvbnRleHRzLmxl
bmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMuX2V4ZWN1dGlvbkNv
bnRleHRzW2ldOwotICAgICAgICAgICAgaWYgKCFjb250ZXh0LmlzTWFpbldvcmxkQ29udGV4dCAm
JiBjb250ZXh0Lm5hbWUgPT09IHNlY3VyaXR5T3JpZ2luKQorICAgICAgICAgICAgLy8gRklYTUU6
IGNvbnRleHQubmFtZSBzaG91bGQgYmVjb21lIGNvbnRleHQuc2VjdXJpdHlPcmlnaW4gaW4gdGhl
IHByb3RvY29sLCBzbyB0aGF0CisgICAgICAgICAgICAvLyB0aGUgZG9tYWluU2V0SW5ET00gZmll
bGQgc2hhbGwgcGFydGljaXBhdGUgaW4gdGhlIG9yaWdpbiBtYXRjaGluZy4KKyAgICAgICAgICAg
IGlmICghY29udGV4dC5pc01haW5Xb3JsZENvbnRleHQgJiYgY29udGV4dC5uYW1lID09PSBzZWN1
cml0eU9yaWdpbi51cmwoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dDsgCiAgICAg
ICAgIH0KICAgICB9LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDUxNzkyYmU5ZTg3M2ExZjNmNzMxOThhNjY3NzhlNDMwNzdk
NjBlNzYuLmY4NDk1MjJjMGI3YTllMzcwMDNlYTMxZGQ2YWJjYTU3Y2M3ZDc2NTIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMCBAQAorMjAxMy0wMi0yOCAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtQcm90b2NvbF0gVHVybiBTZWN1
cml0eU9yaWdpbiBpbnRvIGFuIG9iamVjdCBjb250YWluaW5nICJkb21haW5TZXRJbkRPTSIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDk2MAorCisg
ICAgICAgIEZvbGxvdyB0aGUgQVBJIGFuZCBtZXRob2Qgc2lnbmF0dXJlIGNoYW5nZXMuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2luc3BlY3Rvci1lbmFibGVkL2RvbS1zdG9yYWdlLW9wZW4uaHRtbDoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RlbGV0ZS1lbnRyeS5odG1sOgorICAgICAgICAq
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlc3lzdGVtLXJvb3Qu
aHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2Ut
ZGF0YS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRh
YmFzZS1uYW1lcy5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRk
Yi9kYXRhYmFzZS1zdHJ1Y3R1cmUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9yZXNvdXJjZS10cmVlL3Jlc291cmNlLXRyZWUtZXZlbnRzLmh0bWw6CisKIDIwMTMtMDItMjgg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGEgZmFpbGlu
ZyB0ZXN0IGV4cGVjdGF0aW9uIHRvIG5hdmlnYXRpb24tc2hvdWxkLWFib3J0Lmh0bWwgb24gTWFj
IFdlYktpdDEuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1l
bmFibGVkL2RvbS1zdG9yYWdlLW9wZW4uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yLWVuYWJsZWQvZG9tLXN0b3JhZ2Utb3Blbi5odG1sCmluZGV4IDEzMDIwMDcyNGU1YWFh
ZTQ0ZmEyNjI3NjI3MDE3OGFkMjRmNmI2ZDAuLjM1YWM2ODNlOWIwZTNiNzEyN2U1YzViZDVkMWUz
MTEwMWQ0MjQxOWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
LWVuYWJsZWQvZG9tLXN0b3JhZ2Utb3Blbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yLWVuYWJsZWQvZG9tLXN0b3JhZ2Utb3Blbi5odG1sCkBAIC0yMiw3ICsyMiw3
IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIHsKICAgICAgICAgdmFyIHN0b3JhZ2VzID0gV2ViSW5z
cGVjdG9yLmRvbVN0b3JhZ2VNb2RlbC5zdG9yYWdlcygpOwogICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHN0b3JhZ2VzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiU2VjdXJpdHlPcmlnaW46ICIgKyBzdG9yYWdlc1tpXS5zZWN1cml0eU9yaWdp
bik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiU2VjdXJpdHlPcmlnaW46
ICIgKyBzdG9yYWdlc1tpXS5zZWN1cml0eU9yaWdpbi51aVRpdGxlKCkpOwogICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIklzTG9jYWxTdG9yYWdlOiAiICsgc3RvcmFnZXNbaV0u
aXNMb2NhbFN0b3JhZ2UpOwogICAgICAgICB9CiAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxl
dGVUZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtL2RlbGV0ZS1lbnRyeS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZmlsZXN5c3RlbS9kZWxldGUtZW50cnkuaHRtbAppbmRleCBhZDhiNDM2MDg1ZmM1NDI2
MjFiNjg4MzVlZTFlMjY2ZmM1YjE5YzE4Li5lNGVlNWIxZWNmZmYwYmQzMzQzNDIxOTAyYjBjYTdl
OTlmMjBhODU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtL2RlbGV0ZS1lbnRyeS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGVsZXRlLWVudHJ5Lmh0bWwKQEAgLTYzLDcgKzYzLDcgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSkKICAgICAgICAgewog
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImVycm9yQ29kZTogIiArIGVycm9y
Q29kZSk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlU3lzdGVtUm9v
dCgiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiwgInRlbXBvcmFyeSIsIHRlc3RTdGVwLnNoaWZ0KCkp
OworICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RmlsZVN5c3RlbVJvb3QobmV3
IFdlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbigiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiwgdW5k
ZWZpbmVkLCAiMSIpLCAidGVtcG9yYXJ5IiwgdGVzdFN0ZXAuc2hpZnQoKSk7CiAgICAgICAgIH0s
CiAKICAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5KQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0
LWZpbGVzeXN0ZW0tcm9vdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
ZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGVzeXN0ZW0tcm9vdC5odG1sCmluZGV4IDhmNWNlZmE5MWRk
ODE1MWM3NzM3NzAwM2ZkOWU0NzliNDM2ZWI5NzMuLmNmMDY0NDQyZmM1ZWFkZTM3OTg1YTU0YTlj
MTk2YWM2OWYyMzY3ZjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlc3lzdGVtLXJvb3QuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5c3RlbS1y
b290Lmh0bWwKQEAgLTksNiArOSwxMiBAQCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01D
b250ZW50TG9hZGVkIiwgcnVuVGVzdCk7CiBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICB2YXIgZmls
ZVN5c3RlbU1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWw7CisgICAgdmFy
IGxhc3RPcmlnaW5JZCA9IDA7CisKKyAgICBmdW5jdGlvbiBjcmVhdGVTZWN1cml0eU9yaWdpbih1
cmwpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdp
bih1cmwsIHVuZGVmaW5lZCwgU3RyaW5nICgrK2xhc3RPcmlnaW5JZCkpOworICAgIH0KIAogICAg
IHZhciB0ZXN0U3RlcCA9IFsKICAgICAgICAgZnVuY3Rpb24oKQpAQCAtMjAsMTkgKzI2LDE5IEBA
IGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgIGZ1bmN0aW9uKCkKICAgICAgICAgewotICAgICAg
ICAgICAgZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RmlsZVN5c3RlbVJvb3QoImh0dHA6Ly8xMjcu
MC4wLjE6ODAwMCIsICJ0ZW1wb3JhcnkiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgICAg
IGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KGNyZWF0ZVNlY3VyaXR5T3Jp
Z2luKCJodHRwOi8vMTI3LjAuMC4xOjgwMDAiKSwgInRlbXBvcmFyeSIsIHRlc3RTdGVwLnNoaWZ0
KCkpOwogICAgICAgICB9LAogCiAgICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgYmFja2VuZFJv
b3RFbnRyeSkKICAgICAgICAgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wRmlsZVN5
c3RlbVJvb3RSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSk7Ci0gICAg
ICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlU3lzdGVtUm9vdCgiaHR0cDovLzEy
Ny4wLjAuMTo4MDAwIiwgImZpenpidXp6IiwgdGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgICAg
ICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlU3lzdGVtUm9vdChjcmVhdGVTZWN1cml0eU9y
aWdpbigiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiksICJmaXp6YnV6eiIsIHRlc3RTdGVwLnNoaWZ0
KCkpOwogICAgICAgICB9LAogCiAgICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgYmFja2VuZFJv
b3RFbnRyeSkKICAgICAgICAgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wRmlsZVN5
c3RlbVJvb3RSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSk7Ci0gICAg
ICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlU3lzdGVtUm9vdCgiaHR0cDovL2V4
YW1wbGUuY29tIiwgInRlbXBvcmFyeSIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICAgICAg
ZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RmlsZVN5c3RlbVJvb3QoY3JlYXRlU2VjdXJpdHlPcmln
aW4oImh0dHA6Ly9leGFtcGxlLmNvbSIpLCAidGVtcG9yYXJ5IiwgdGVzdFN0ZXAuc2hpZnQoKSk7
CiAgICAgICAgIH0sCiAKICAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVu
dHJ5KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhl
ZGRiL2RhdGFiYXNlLWRhdGEuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2luZGV4ZWRkYi9kYXRhYmFzZS1kYXRhLmh0bWwKaW5kZXggMTM2M2YyZTk0M2ExZTM0NmEwOWZm
YTUyNzczYzZkZGY0YTM2NWQzZC4uMGM3MzVkYjk1OGZmZDA5ZGFjYTQ3YTE4ODg2MmI4YzVhMDUx
MmUxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhl
ZGRiL2RhdGFiYXNlLWRhdGEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS5odG1sCkBAIC04LDcgKzgsNyBAQCBmdW5jdGlv
biB0ZXN0KCkKICAgICB2YXIgSURCS2V5UmFuZ2UgPSB3aW5kb3cuSURCS2V5UmFuZ2UgfHwgd2lu
ZG93LndlYmtpdElEQktleVJhbmdlOwogICAgIHZhciBpbmRleGVkREJNb2RlbCA9IG5ldyBXZWJJ
bnNwZWN0b3IuSW5kZXhlZERCTW9kZWwoKTsKICAgICB2YXIgbWFpbkZyYW1lSWQgPSBXZWJJbnNw
ZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwubWFpbkZyYW1lLmlkOwotICAgIHZhciBzZWN1cml0eU9y
aWdpbiA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOworICAgIHZhciBzZWN1cml0eU9yaWdpbiA9
IG5ldyBXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4oImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIs
IHVuZGVmaW5lZCwgIjEiKTsKICAgICB2YXIgZGF0YWJhc2VOYW1lID0gInRlc3REYXRhYmFzZSI7
CiAgICAgdmFyIG9iamVjdFN0b3JlTmFtZSA9ICJ0ZXN0T2JqZWN0U3RvcmUiOwogICAgIHZhciBp
bmRleE5hbWUgPSAidGVzdEluZGV4TmFtZSI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtbmFtZXMuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1uYW1lcy5odG1sCmlu
ZGV4IDAxNDNmNzM4NDJlYmVhZTk4MWRkMGMyNzk4MGIxMWNlM2E0N2VhZGQuLmQ4MjU5ZTkyNGEy
ZTBkZWNhZmZkYTFmMjUzYzRjMzg3MWFlYTZhNjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1uYW1lcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1uYW1lcy5o
dG1sCkBAIC0xMyw3ICsxMyw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiRHVtcGluZyBkYXRhYmFzZSBuYW1lczoiKTsKICAgICAgICAgdmFyIHNl
Y3VyaXR5T3JpZ2lucyA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5zZWN1cml0eU9y
aWdpbnMoKTsKICAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gc2VjdXJpdHlPcmlnaW5zWzBd
OwotICAgICAgICB2YXIgbmFtZXMgPSBpbmRleGVkREJNb2RlbC5fZGF0YWJhc2VOYW1lc0J5U2Vj
dXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5dOworICAgICAgICB2YXIgbmFtZXMgPSBpbmRleGVk
REJNb2RlbC5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW4uaWQo
KV07CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyArK2kpCiAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiICAgICIgKyBuYW1lc1tpXSk7CiAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1zdHJ1Y3R1cmUuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1zdHJ1
Y3R1cmUuaHRtbAppbmRleCBkODIzYmVmZjRkNjZiMjM2NmEyNjlhZmQ4ZDU3MmUzNjU2NGNjYzJl
Li5hNzhiOTE2MjNjZWVlZmUxNTE1OGFmM2RkYTY1ZDRiMTMxOWMxNTNhIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2Utc3RydWN0
dXJlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRi
L2RhdGFiYXNlLXN0cnVjdHVyZS5odG1sCkBAIC04LDcgKzgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkK
ICAgICB2YXIgaW5kZXhlZERCTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVs
KCk7CiAgICAgdmFyIG1haW5GcmFtZUlkID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVs
Lm1haW5GcmFtZS5pZDsKICAgICB2YXIgZGF0YWJhc2VOYW1lID0gInRlc3REYXRhYmFzZTEiOwot
ICAgIHZhciBzZWN1cml0eU9yaWdpbiA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOworICAgIHZh
ciBzZWN1cml0eU9yaWdpbiA9IG5ldyBXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4oImh0dHA6
Ly8xMjcuMC4wLjE6ODAwMCIsIHVuZGVmaW5lZCwgIjEiKTsKICAgICB2YXIgZGF0YWJhc2VJZCA9
IG5ldyBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuRGF0YWJhc2VJZChzZWN1cml0eU9yaWdp
biwgZGF0YWJhc2VOYW1lKTsKIAogICAgIGZ1bmN0aW9uIGR1bXBEYXRhYmFzZSgpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS10cmVlL3Jlc291
cmNlLXRyZWUtZXZlbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9y
ZXNvdXJjZS10cmVlL3Jlc291cmNlLXRyZWUtZXZlbnRzLmh0bWwKaW5kZXggZWUxZWM5ZDc1YjVk
ZDc1ZmNjNjA3M2ZmMTQzOThkN2YwODk3OGRiZi4uNjhhOTRjMTZmZTM1NzM2ZTUxOTVhYmI2ZmIz
ZmIzMzQzNzY2MWRlZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvcmVzb3VyY2UtdHJlZS9yZXNvdXJjZS10cmVlLWV2ZW50cy5odG1sCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXRyZWUvcmVzb3VyY2UtdHJlZS1ldmVu
dHMuaHRtbApAQCAtMzAsNyArMzAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIGNh
c2UgIlNlY3VyaXR5T3JpZ2luQWRkZWQiOgogICAgICAgICAgICAgY2FzZSAiU2VjdXJpdHlPcmln
aW5SZW1vdmVkIjoKICAgICAgICAgICAgICAgICB2YXIgc2VjdXJpdHlPcmlnaW4gPSBldmVudC5k
YXRhOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIgICAgIiArIGV2
ZW50TmFtZSArICIgOiAiICsgc2VjdXJpdHlPcmlnaW4pOworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCIgICAgIiArIGV2ZW50TmFtZSArICIgOiAiICsgc2VjdXJpdHlP
cmlnaW4udWlUaXRsZSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICB9CkBAIC01OSw3ICs1OSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQog
ICAgICAgICBmcmFtZVBheWxvYWQubG9hZGVySWQgPSAibG9hZGVyLSIgKyBpZDsKICAgICAgICAg
ZnJhbWVQYXlsb2FkLm5hbWUgPSAiZnJhbWUtIiArIGlkOwogICAgICAgICBmcmFtZVBheWxvYWQu
dXJsID0gImh0dHA6Ly9mcmFtZS8iICsgKG5hbWUgfHwgaWQpICsgIi5odG1sIjsKLSAgICAgICAg
ZnJhbWVQYXlsb2FkLnNlY3VyaXR5T3JpZ2luID0gZnJhbWVQYXlsb2FkLnVybDsKKyAgICAgICAg
ZnJhbWVQYXlsb2FkLnNlY3VyaXR5T3JpZ2luID0geyB1cmw6IGZyYW1lUGF5bG9hZC51cmwgfTsK
ICAgICAgICAgZnJhbWVQYXlsb2FkLm1pbWVUeXBlID0gInRleHQvaHRtbCI7CiAgICAgICAgIHJl
dHVybiBmcmFtZVBheWxvYWQ7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190731</attachid>
            <date>2013-02-28 08:11:57 -0800</date>
            <delta_ts>2013-03-01 03:50:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110960-20130228200809.patch</filename>
            <type>text/plain</type>
            <size>75504</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0Mjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjkxNmYyZWE0MjlhMjFi
NzU1OTRkMjIzOWE3MGEzOTZlMjM2ZmQ1Ny4uNjQ0MTFlMDQxMWQ2ZTA4OGUyZjY0MTc2ZTBkZjI0
Zjg0ZmU2OWI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDEzLTAyLTI4ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW1Byb3RvY29sXSBUdXJuIFNlY3VyaXR5T3JpZ2luIGludG8gYW4gb2JqZWN0IGNvbnRh
aW5pbmcgImRvbWFpblNldEluRE9NIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTEwOTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlIHJlbGF0ZWQgYmFja2VuZCBjb2RlIGhhcyBiZWVuIGNoYW5nZWQg
dG8gaGFuZGxlIFNlY3VyaXR5T3JpZ2luIGFzIGFuIEluc3BlY3Rvck9iamVjdCByYXRoZXIgdGhh
biBhIFN0cmluZy4KKyAgICAgICAgV2hlcmUgYXBwbGljYWJsZSwgdGhlIFVJIGNvZGUgaGFzIGJl
ZW4gY2hhbmdlZCB0byB1c2Ugc2VjdXJpdHlPcmlnaW4udWlUaXRsZSgpIGFzIGl0cyB2aXN1YWwg
cmVwcmVzZW50YXRpb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246IEludHJvZHVjZSBQYWdl
LlNlY3VyaXR5T3JpZ2luLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuY3BwOiBGb2xsb3cgdGhlIHByb3RvY29sIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFnZUlkKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZmluZFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcDogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RGaWxlU3lzdGVtUm9vdCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhYmFzZU5hbWVz
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0
YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVl
c3REYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Omluc3BlY3Rvck9iamVjdFRvU2VjdXJp
dHlPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZWN1cml0
eU9yaWdpblRvSW5zcGVjdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6ZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JGcmFtZSk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvRE9NU3RvcmFnZS5qczogRGl0dG8uCisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFn
ZS5zdG9yYWdlSWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5wcm90
b3R5cGUuX3NlY3VyaXR5T3JpZ2luQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0
b3JhZ2VNb2RlbC5wcm90b3R5cGUuX3NlY3VyaXR5T3JpZ2luUmVtb3ZlZCk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanM6IERpdHRvLgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuZXZhbHVhdGUpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzOiBEaXR0by4KKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLl9yZXNldCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZS5fc2VjdXJpdHlPcmln
aW5BZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlw
ZS5fc2VjdXJpdHlPcmlnaW5SZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtTW9kZWwucHJvdG90eXBlLl9hZGRPcmlnaW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUuX3JlbW92ZU9yaWdpbik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZS5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLl9maWxlU3lz
dGVtUm9vdFJlY2VpdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwu
cHJvdG90eXBlLl9yZW1vdmVGaWxlU3lzdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtTW9kZWwuRmlsZVN5c3RlbS5wcm90b3R5cGUuZ2V0IG5hbWUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCTW9kZWwuanM6IERpdHRvLgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZS5fcmVzZXQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZS5yZWZyZXNoRGF0YWJhc2VOYW1lcyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlLl9zZWN1cml0
eU9yaWdpbkFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90
b3R5cGUuX3NlY3VyaXR5T3JpZ2luUmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5k
ZXhlZERCTW9kZWwucHJvdG90eXBlLl9hZGRPcmlnaW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZS5fcmVtb3ZlT3JpZ2luKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUuX3VwZGF0ZU9yaWdpbkRhdGFiYXNlTmFt
ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZS5fbG9h
ZERhdGFiYXNlTmFtZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnBy
b3RvdHlwZS5fbG9hZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJN
b2RlbC5wcm90b3R5cGUuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5w
cm90b3R5cGUuX3JlcXVlc3REYXRhKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJN
b2RlbC5EYXRhYmFzZUlkLnByb3RvdHlwZS5lcXVhbHMpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwuanM6IERpdHRvLgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJlc291cmNlVHJlZU1vZGVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRy
ZWVNb2RlbC5wcm90b3R5cGUuX2FkZEZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNv
dXJjZVRyZWVNb2RlbC5wcm90b3R5cGUuc2VjdXJpdHlPcmlnaW5Gb3JJZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLnNlY3VyaXR5T3JpZ2lucyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLl9oYW5k
bGVNYWluRnJhbWVEZXRhY2hlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVl
TW9kZWwucHJvdG90eXBlLl9mcmFtZU5hdmlnYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLl9mcmFtZURldGFjaGVkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5TZWN1cml0eU9yaWdpblRyYWNrZXIpOiBGYWN0
b3JlZCBvdXQgU2VjdXJpdHlPcmlnaW4gdHJhY2tpbmcuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VUcmVlTW9kZWwuU2VjdXJpdHlPcmlnaW5UcmFja2VyLnByb3RvdHlwZS5fYWRkU2Vj
dXJpdHlPcmlnaW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLlNl
Y3VyaXR5T3JpZ2luVHJhY2tlci5wcm90b3R5cGUuX3JlbW92ZVNlY3VyaXR5T3JpZ2luKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5TZWN1cml0eU9yaWdpblRyYWNr
ZXIucHJvdG90eXBlLl91bmJpbmRTZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVzb3VyY2VUcmVlTW9kZWwuU2VjdXJpdHlPcmlnaW5UcmFja2VyLnByb3RvdHlwZS5fYmlu
ZFNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2Rl
bC5TZWN1cml0eU9yaWdpblRyYWNrZXIucHJvdG90eXBlLl9kZXRhY2hNYWluRnJhbWUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLlNlY3VyaXR5T3JpZ2luVHJhY2tl
ci5wcm90b3R5cGUuX3NlY3VyaXR5T3JpZ2luRm9ySWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlJlc291cmNlVHJlZU1vZGVsLlNlY3VyaXR5T3JpZ2luVHJhY2tlci5wcm90b3R5cGUuX3NlY3Vy
aXR5T3JpZ2lucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lLnByb3RvdHlwZS5fbmF2aWdh
dGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2luKTogVGhlIGZyb250LWVu
ZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgUGFnZS5TZWN1cml0eU9yaWdpbiB0eXBlLgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2luLnByb3RvdHlwZS5pZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4ucHJvdG90eXBlLnVybCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4ucHJvdG90eXBlLmRvbWFpblNldEluRE9NKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbi5wcm90b3R5cGUuZXF1YWwpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2luLnByb3RvdHlwZS51aVRpdGxlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbi5wcm90b3R5cGUudG9Qcm90b2NvbCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczogRm9sbG93IHRo
ZSBwcm90b2NvbCBjaGFuZ2UuCisgICAgICAgIChXZWJJbnNwZWN0b3IuSURCRGF0YWJhc2VUcmVl
RWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSURCRGF0YWJhc2VUcmVlRWxlbWVudC5w
cm90b3R5cGUuZ2V0IGl0ZW1VUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLklEQk9iamVjdFN0
b3JlVHJlZUVsZW1lbnQucHJvdG90eXBlLmdldCBpdGVtVVJMKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5JREJJbmRleFRyZWVFbGVtZW50LnByb3RvdHlwZS5nZXQgaXRlbVVSTCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZVRyZWVFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlLmdldCBpdGVtVVJMKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvUnVudGltZU1vZGVsLmpzOiBEaXR0by4KKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5GcmFtZUV4ZWN1dGlvbkNvbnRleHRMaXN0LnByb3RvdHlwZS5jb250ZXh0QnlTZWN1cml0
eU9yaWdpbik6CisKIDIwMTMtMDItMjggIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgd29uJ3QgY29tcGlsZSBhZnRl
ciByMTQ0MjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Lmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggM2Vk
MzExNzRjM2QwYTYxOTA2YjYxZTY0ODkwZGZhNWE0NTQxODc1YS4uMGU1Nzc3NGM3NmRkZWNhZTE1
NzgzNjUwZTRmM2UxMjlmNDhhYTEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbgpAQCAtMTAyLDYgKzEwMiwxNSBAQAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJSZXNvdXJjZSB0eXBlIGFzIGl0IHdhcyBwZXJjZWl2ZWQgYnkgdGhlIHJlbmRlcmluZyBl
bmdpbmUuIgogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAi
aWQiOiAiU2VjdXJpdHlPcmlnaW4iLAorICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIs
CisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRlc2NyaXB0b3Igb2YgdGhlIFNlY3Vy
aXR5T3JpZ2luIG9iamVjdC4iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInVybCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNj
cmlwdGlvbiI6ICJBc3NvY2lhdGVkIFNlY3VyaXR5T3JpZ2luIFVSTC4iIH0sCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiZG9tYWluU2V0SW5ET00iLCAidHlwZSI6ICJzdHJpbmciLCAi
b3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiU2VjdXJpdHlPcmlnaW4gZG9tYWluLCBp
ZiBvbmUgaGFzIGJlZW4gc2V0IGluIERPTS4iIH0KKyAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJpZCI6ICJGcmFtZSIsCiAg
ICAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiSW5mb3JtYXRpb24gYWJvdXQgdGhlIEZyYW1lIG9uIHRoZSBwYWdlLiIsCkBAIC0x
MTEsNyArMTIwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJsb2FkZXJJZCIs
ICIkcmVmIjogIk5ldHdvcmsuTG9hZGVySWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBv
ZiB0aGUgbG9hZGVyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZyYW1lLiIgfSwKICAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJuYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIkZyYW1lJ3MgbmFtZSBhcyBzcGVjaWZpZWQgaW4gdGhlIHRh
Zy4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3Ry
aW5nIiwgImRlc2NyaXB0aW9uIjogIkZyYW1lIGRvY3VtZW50J3MgVVJMLiIgfSwKLSAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJzZWN1cml0eU9yaWdpbiIsICJ0eXBlIjogInN0cmluZyIs
ICJkZXNjcmlwdGlvbiI6ICJGcmFtZSBkb2N1bWVudCdzIHNlY3VyaXR5IG9yaWdpbi4iIH0sCisg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2VjdXJpdHlPcmlnaW4iLCAiJHJlZiI6ICJT
ZWN1cml0eU9yaWdpbiIsICJkZXNjcmlwdGlvbiI6ICJGcmFtZSBkb2N1bWVudCdzIHNlY3VyaXR5
IG9yaWdpbi4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWltZVR5cGUiLCAi
dHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiRnJhbWUgZG9jdW1lbnQncyBtaW1lVHlw
ZSBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBicm93c2VyLiIgfQogICAgICAgICAgICAgICAgIF0sCiAg
ICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKQEAgLTU5MSw3ICs2MDAsNyBAQAogICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInZhbHVlIiwgInR5cGUiOiAiYW55IiwgIm9wdGlvbmFs
IjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlJlbW90ZSBvYmplY3QgdmFsdWUgKGluIGNhc2Ugb2Yg
cHJpbWl0aXZlIHZhbHVlcyBvciBKU09OIHZhbHVlcyBpZiBpdCB3YXMgcmVxdWVzdGVkKS4iIH0s
CiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGVzY3JpcHRpb24iLCAidHlwZSI6ICJz
dHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiU3RyaW5nIHJlcHJlc2Vu
dGF0aW9uIG9mIHRoZSBvYmplY3QuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
Im9iamVjdElkIiwgIiRyZWYiOiAiUmVtb3RlT2JqZWN0SWQiLCAib3B0aW9uYWwiOiB0cnVlLCAi
ZGVzY3JpcHRpb24iOiAiVW5pcXVlIG9iamVjdCBpZGVudGlmaWVyIChmb3Igbm9uLXByaW1pdGl2
ZSB2YWx1ZXMpLiIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwcmV2aWV3Iiwg
IiRyZWYiOiAiT2JqZWN0UHJldmlldyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJQcmV2aWV3IGNvbnRhaW5zaW5nIGFiYnJldmlhdGVkIHByb3BlcnR5IHZhbHVlcy4iLCAiaGlk
ZGVuIjogdHJ1ZSB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJldmlldyIsICIk
cmVmIjogIk9iamVjdFByZXZpZXciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAi
UHJldmlldyBjb250YWluaW5nIGFiYnJldmlhdGVkIHByb3BlcnR5IHZhbHVlcy4iLCAiaGlkZGVu
IjogdHJ1ZSB9CiAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfSwKICAgICAgICAgICAg
IHsKQEAgLTEzNzIsNyArMTM4MSw3IEBACiAgICAgICAgICAgICAgICAgIm5hbWUiOiAicmVxdWVz
dERhdGFiYXNlTmFtZXMiLAogICAgICAgICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAg
ICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
c2VjdXJpdHlPcmlnaW4iLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiU2VjdXJp
dHkgb3JpZ2luLiIgfQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNlY3VyaXR5T3Jp
Z2luIiwgIiRyZWYiOiAiUGFnZS5TZWN1cml0eU9yaWdpbiIsICJkZXNjcmlwdGlvbiI6ICJTZWN1
cml0eSBvcmlnaW4uIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAicmV0
dXJucyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkYXRhYmFzZU5hbWVzIiwg
InR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwgImRlc2NyaXB0
aW9uIjogIkRhdGFiYXNlIG5hbWVzIGZvciBvcmlnaW4uIiB9CkBAIC0xMzgzLDcgKzEzOTIsNyBA
QAogICAgICAgICAgICAgICAgICJuYW1lIjogInJlcXVlc3REYXRhYmFzZSIsCiAgICAgICAgICAg
ICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzZWN1cml0eU9yaWdpbiIsICJ0eXBlIjogInN0
cmluZyIsICJkZXNjcmlwdGlvbiI6ICJTZWN1cml0eSBvcmlnaW4uIiB9LAorICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInNlY3VyaXR5T3JpZ2luIiwgIiRyZWYiOiAiUGFnZS5TZWN1cml0
eU9yaWdpbiIsICJkZXNjcmlwdGlvbiI6ICJTZWN1cml0eSBvcmlnaW4uIiB9LAogICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImRhdGFiYXNlTmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJk
ZXNjcmlwdGlvbiI6ICJEYXRhYmFzZSBuYW1lLiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAg
ICAgICAgICAgICAgInJldHVybnMiOiBbCkBAIC0xMzk1LDcgKzE0MDQsNyBAQAogICAgICAgICAg
ICAgICAgICJuYW1lIjogInJlcXVlc3REYXRhIiwKICAgICAgICAgICAgICAgICAiYXN5bmMiOiB0
cnVlLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInNlY3VyaXR5T3JpZ2luIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0
aW9uIjogIlNlY3VyaXR5IG9yaWdpbi4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAic2VjdXJpdHlPcmlnaW4iLCAiJHJlZiI6ICJQYWdlLlNlY3VyaXR5T3JpZ2luIiwgImRlc2Ny
aXB0aW9uIjogIlNlY3VyaXR5IG9yaWdpbi4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiZGF0YWJhc2VOYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkRh
dGFiYXNlIG5hbWUuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm9iamVjdFN0
b3JlTmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJPYmplY3Qgc3RvcmUg
bmFtZS4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaW5kZXhOYW1lIiwgInR5
cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkluZGV4IG5hbWUsIGVtcHR5IHN0cmluZyBm
b3Igb2JqZWN0IHN0b3JlIGRhdGEgcmVxdWVzdHMuIiB9LApAQCAtMTQyMiw3ICsxNDMxLDcgQEAK
ICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRE9NIFN0b3JhZ2UgaWRlbnRpZmllci4i
LAogICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlLAogICAgICAgICAgICAgICAgICJwcm9w
ZXJ0aWVzIjogWwotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNlY3VyaXR5T3JpZ2lu
IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlNlY3VyaXR5IG9yaWdpbiBmb3Ig
dGhlIHN0b3JhZ2UuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNlY3VyaXR5
T3JpZ2luIiwgIiRyZWYiOiAiUGFnZS5TZWN1cml0eU9yaWdpbiIsICJkZXNjcmlwdGlvbiI6ICJT
ZWN1cml0eSBvcmlnaW4gZm9yIHRoZSBzdG9yYWdlLiIgfSwKICAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJpc0xvY2FsU3RvcmFnZSIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRp
b24iOiAiV2hldGhlciB0aGUgc3RvcmFnZSBpcyBsb2NhbCBzdG9yYWdlIChub3Qgc2Vzc2lvbiBz
dG9yYWdlKS4iIH0KICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICB9LApAQCAtMTYyOCw3
ICsxNjM3LDcgQEAKICAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXF1ZXN0RmlsZVN5c3RlbVJv
b3QiLAogICAgICAgICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAgICAgICAgInBh
cmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib3JpZ2luIiwgInR5
cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlNlY3VyaXR5IG9yaWdpbiBvZiByZXF1ZXN0
aW5nIEZpbGVTeXN0ZW0uIE9uZSBvZiBmcmFtZXMgaW4gY3VycmVudCBwYWdlIG5lZWRzIHRvIGhh
dmUgdGhpcyBzZWN1cml0eSBvcmlnaW4uIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogIm9yaWdpbiIsICIkcmVmIjogIlBhZ2UuU2VjdXJpdHlPcmlnaW4iLCAiZGVzY3JpcHRpb24i
OiAiU2VjdXJpdHkgb3JpZ2luIG9mIHJlcXVlc3RpbmcgRmlsZVN5c3RlbS4gT25lIG9mIGZyYW1l
cyBpbiBjdXJyZW50IHBhZ2UgbmVlZHMgdG8gaGF2ZSB0aGlzIHNlY3VyaXR5IG9yaWdpbi4iIH0s
CiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidHlwZSIsICJ0eXBlIjogInN0cmluZyIs
ICJlbnVtIjogWyJ0ZW1wb3JhcnkiLCAicGVyc2lzdGVudCJdLCAiZGVzY3JpcHRpb24iOiAiRmls
ZVN5c3RlbSB0eXBlIG9mIHJlcXVlc3RpbmcgRmlsZVN5c3RlbS4iIH0KICAgICAgICAgICAgICAg
ICBdLAogICAgICAgICAgICAgICAgICJyZXR1cm5zIjogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAppbmRleCBiM2UwZTE2
Y2VlMjgyMGNjNjA3ODEzMzRiMGZmOTA5ODdhZTgwYWQ2Li43YmFjY2FiZTY2NGNlYmNmNDExZWI1
ODZiODliMzljNTAyNzQ0YWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIFN0cmlu
ZyBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2VJZChTdG9yYWdlKiBzdG9yYWdlKQog
UGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2VJZChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4s
IGJvb2wgaXNMb2NhbFN0b3JhZ2UpCiB7CiAgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpET01TdG9y
YWdlOjpTdG9yYWdlSWQ6OmNyZWF0ZSgpCi0gICAgICAgIC5zZXRTZWN1cml0eU9yaWdpbihzZWN1
cml0eU9yaWdpbi0+dG9SYXdTdHJpbmcoKSkKKyAgICAgICAgLnNldFNlY3VyaXR5T3JpZ2luKElu
c3BlY3RvclBhZ2VBZ2VudDo6c2VjdXJpdHlPcmlnaW5Ub0luc3BlY3Rvck9iamVjdChzZWN1cml0
eU9yaWdpbikpCiAgICAgICAgIC5zZXRJc0xvY2FsU3RvcmFnZShpc0xvY2FsU3RvcmFnZSkucmVs
ZWFzZSgpOwogfQogCkBAIC0yMTYsOSArMjE2LDkgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQ6OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5LCBjb24K
IAogUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpmaW5k
U3RvcmFnZUFyZWEoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiYgc3RvcmFnZUlkLCBGcmFtZSomIHRhcmdldEZyYW1lKQogewotICAgIFN0cmlu
ZyBzZWN1cml0eU9yaWdpbjsKICAgICBib29sIGlzTG9jYWxTdG9yYWdlID0gZmFsc2U7Ci0gICAg
Ym9vbCBzdWNjZXNzID0gc3RvcmFnZUlkLT5nZXRTdHJpbmcoInNlY3VyaXR5T3JpZ2luIiwgJnNl
Y3VyaXR5T3JpZ2luKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBzZWN1cml0eU9yaWdp
bk9iamVjdCA9IHN0b3JhZ2VJZC0+Z2V0T2JqZWN0KCJzZWN1cml0eU9yaWdpbiIpOworICAgIGJv
b2wgc3VjY2VzcyA9IHNlY3VyaXR5T3JpZ2luT2JqZWN0ID8gdHJ1ZSA6IGZhbHNlOwogICAgIGlm
IChzdWNjZXNzKQogICAgICAgICBzdWNjZXNzID0gc3RvcmFnZUlkLT5nZXRCb29sZWFuKCJpc0xv
Y2FsU3RvcmFnZSIsICZpc0xvY2FsU3RvcmFnZSk7CiAgICAgaWYgKCFzdWNjZXNzKSB7CkBAIC0y
MjcsOSArMjI3LDkgQEAgUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4gSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50OjpmaW5kU3RvcmFnZUFyZWEoRXJyb3JTdHJpbmcqIGUKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogCi0gICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlQWdlbnQtPmZpbmRGcmFtZVdpdGhT
ZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbik7CisgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdl
QWdlbnQtPmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbihlcnJvclN0cmluZywgc2VjdXJpdHlP
cmlnaW5PYmplY3QuZ2V0KCkpOwogICAgIGlmICghZnJhbWUpIHsKLSAgICAgICAgaWYgKGVycm9y
U3RyaW5nKQorICAgICAgICBpZiAoZXJyb3JTdHJpbmcgJiYgZXJyb3JTdHJpbmctPmlzRW1wdHko
KSkKICAgICAgICAgICAgICplcnJvclN0cmluZyA9ICJGcmFtZSBub3QgZm91bmQgZm9yIHRoZSBn
aXZlbiBzZWN1cml0eSBvcmlnaW4iOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3Bw
CmluZGV4IDJiMGQ2NDQzMTlmOTRkYjExZjM3MTZiMzI4NzE5ZThmN2Q0MTI2MGUuLjEzNmMxYThi
NTQ2NmMwZWI4M2VlZGEzOGViYTkwNjlhZDhmYTE1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCkBAIC02MzAsMTIg
KzYzMCwxNyBAQCB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6ZGlzYWJsZShFcnJvclN0
cmluZyopCiAgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihGaWxlU3lzdGVtQWdlbnRTdGF0ZTo6Zmls
ZVN5c3RlbUFnZW50RW5hYmxlZCwgbV9lbmFibGVkKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQ6OnJlcXVlc3RGaWxlU3lzdGVtUm9vdChFcnJvclN0cmluZyogZXJyb3IsIGNv
bnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8UmVxdWVz
dEZpbGVTeXN0ZW1Sb290Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKK3ZvaWQgSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0RmlsZVN5c3RlbVJvb3QoRXJyb3JTdHJpbmcqIGVycm9y
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgb3JpZ2luT2JqZWN0LCBjb25zdCBTdHJp
bmcmIHR5cGUsIFBhc3NSZWZQdHI8UmVxdWVzdEZpbGVTeXN0ZW1Sb290Q2FsbGJhY2s+IHJlcXVl
c3RDYWxsYmFjaykKIHsKICAgICBpZiAoIWFzc2VydEVuYWJsZWQoZXJyb3IpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0ID0gYXNzZXJ0U2NyaXB0RXhlY3V0aW9uQ29udGV4dEZvck9yaWdpbihlcnJvciwgU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luKS5nZXQoKSk7CisgICAgUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEluc3BlY3RvclBhZ2VBZ2VudDo6aW5zcGVj
dG9yT2JqZWN0VG9TZWN1cml0eU9yaWdpbihvcmlnaW5PYmplY3QuZ2V0KCkpOworICAgIGlmICgh
c2VjdXJpdHlPcmlnaW4pIHsKKyAgICAgICAgKmVycm9yID0gIkludmFsaWQgc2VjdXJpdHkgb3Jp
Z2luIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gYXNzZXJ0U2NyaXB0RXhlY3V0aW9uQ29udGV4dEZv
ck9yaWdpbihlcnJvciwgc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwogICAgIGlmICghc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgKaW5kZXggYmViMmM5OTU3Mzc3
YTEyOWY3MzdiYzUwYzlhMmYwMzBlMzIzZGRiOS4uNzA1NTJiNGFhNjg1OGQ5MGYyN2YyOTE5Y2Iw
ZjU4N2RlZGJkOTFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGaWxlU3lzdGVtQWdlbnQuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNhYmxlKEVycm9yU3RyaW5nKikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdEZpbGVTeXN0ZW1Sb290KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNv
bnN0IFN0cmluZyYgdHlwZVN0cmluZywgUGFzc1JlZlB0cjxSZXF1ZXN0RmlsZVN5c3RlbVJvb3RD
YWxsYmFjaz4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RmlsZVN5c3RlbVJv
b3QoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgb3JpZ2luLCBj
b25zdCBTdHJpbmcmIHR5cGVTdHJpbmcsIFBhc3NSZWZQdHI8UmVxdWVzdEZpbGVTeXN0ZW1Sb290
Q2FsbGJhY2s+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERpcmVjdG9yeUNv
bnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCwgUGFzc1JlZlB0cjxSZXF1ZXN0
RGlyZWN0b3J5Q29udGVudENhbGxiYWNrPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RNZXRhZGF0YShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVmUHRy
PFJlcXVlc3RNZXRhZGF0YUNhbGxiYWNrPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RGaWxlQ29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsLCBib29sIHJl
YWRBc1RleHQsIGNvbnN0IGludCogc3RhcnQsIGNvbnN0IGludCogZW5kLCBjb25zdCBTdHJpbmcq
IGNoYXJzZXQsIFBhc3NSZWZQdHI8UmVxdWVzdEZpbGVDb250ZW50Q2FsbGJhY2s+KSBPVkVSUklE
RTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQuY3BwCmluZGV4IDU3YzY3MjFiMTJhYTVhYjM5M2U5NzdkNjM1OWRiOGU4NjU0OWVlOGIu
LjczOWM5ODFkMWE0YTZkMDhiYjE2MTQyNzcxMmQ3MGQwNWVhN2ZkMWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAt
OTIsOSArOTIsOSBAQCBuYW1lc3BhY2UgewogY2xhc3MgR2V0RGF0YWJhc2VOYW1lc0NhbGxiYWNr
IDogcHVibGljIEV2ZW50TGlzdGVuZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdldERh
dGFiYXNlTmFtZXNDYWxsYmFjayk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8R2V0
RGF0YWJhc2VOYW1lc0NhbGxiYWNrPiBjcmVhdGUoUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VO
YW1lc0NhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmln
aW4pCisgICAgc3RhdGljIFBhc3NSZWZQdHI8R2V0RGF0YWJhc2VOYW1lc0NhbGxiYWNrPiBjcmVh
dGUoUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNrPiByZXF1ZXN0Q2FsbGJh
Y2spCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdldERhdGFiYXNlTmFtZXND
YWxsYmFjayhyZXF1ZXN0Q2FsbGJhY2ssIHNlY3VyaXR5T3JpZ2luKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgR2V0RGF0YWJhc2VOYW1lc0NhbGxiYWNrKHJlcXVlc3RDYWxsYmFjaykp
OwogICAgIH0KIAogICAgIHZpcnR1YWwgfkdldERhdGFiYXNlTmFtZXNDYWxsYmFjaygpIHsgfQpA
QCAtMTMzLDEyICsxMzMsMTAgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBHZXRE
YXRhYmFzZU5hbWVzQ2FsbGJhY2soUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxi
YWNrPiByZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4pCisgICAg
R2V0RGF0YWJhc2VOYW1lc0NhbGxiYWNrKFBhc3NSZWZQdHI8UmVxdWVzdERhdGFiYXNlTmFtZXND
YWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQogICAgICAgICA6IEV2ZW50TGlzdGVuZXIoRXZlbnRM
aXN0ZW5lcjo6Q1BQRXZlbnRMaXN0ZW5lclR5cGUpCi0gICAgICAgICwgbV9yZXF1ZXN0Q2FsbGJh
Y2socmVxdWVzdENhbGxiYWNrKQotICAgICAgICAsIG1fc2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlP
cmlnaW4pIHsgfQorICAgICAgICAsIG1fcmVxdWVzdENhbGxiYWNrKHJlcXVlc3RDYWxsYmFjaykg
eyB9CiAgICAgUmVmUHRyPFJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s+IG1fcmVxdWVzdENh
bGxiYWNrOwotICAgIFN0cmluZyBtX3NlY3VyaXR5T3JpZ2luOwogfTsKIAogY2xhc3MgRXhlY3V0
YWJsZVdpdGhEYXRhYmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPEV4ZWN1dGFibGVXaXRoRGF0YWJh
c2U+IHsKQEAgLTYxMSw5ICs2MDksOSBAQCBzdGF0aWMgSURCRmFjdG9yeSogYXNzZXJ0SURCRmFj
dG9yeShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIERvY3VtZW50KiBkb2N1bWVudAogICAgIHJl
dHVybiBpZGJGYWN0b3J5OwogfQogCi12b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1
ZXN0RGF0YWJhc2VOYW1lcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
c2VjdXJpdHlPcmlnaW4sIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjaz4g
cmVxdWVzdENhbGxiYWNrKQordm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERh
dGFiYXNlTmFtZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiYgc2VjdXJpdHlPcmlnaW4sIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFiYXNlTmFt
ZXNDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQogewotICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFn
ZUFnZW50LT5maW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pOworICAg
IEZyYW1lKiBmcmFtZSA9IG1fcGFnZUFnZW50LT5maW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4o
ZXJyb3JTdHJpbmcsIHNlY3VyaXR5T3JpZ2luLmdldCgpKTsKICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBhc3NlcnREb2N1bWVudChlcnJvclN0cmluZywgZnJhbWUpOwogICAgIGlmICghZG9jdW1l
bnQpCiAgICAgICAgIHJldHVybjsKQEAgLTYzNCwxMiArNjMyLDEyIEBAIHZvaWQgSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhYmFzZU5hbWVzKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgY29uCiAgICAgICAgIHJlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5v
dCBvYnRhaW4gZGF0YWJhc2UgbmFtZXMuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
aWRiUmVxdWVzdC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50LCBH
ZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2s6OmNyZWF0ZShyZXF1ZXN0Q2FsbGJhY2ssIGRvY3VtZW50
LT5zZWN1cml0eU9yaWdpbigpLT50b1Jhd1N0cmluZygpKSwgZmFsc2UpOworICAgIGlkYlJlcXVl
c3QtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVudCwgR2V0RGF0YWJh
c2VOYW1lc0NhbGxiYWNrOjpjcmVhdGUocmVxdWVzdENhbGxiYWNrKSwgZmFsc2UpOwogfQogCi12
b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2UoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlTmFtZSwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VDYWxsYmFjaz4gcmVxdWVz
dENhbGxiYWNrKQordm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGFiYXNl
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4m
IHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgUGFzc1JlZlB0cjxS
ZXF1ZXN0RGF0YWJhc2VDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQogewotICAgIEZyYW1lKiBm
cmFtZSA9IG1fcGFnZUFnZW50LT5maW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlP
cmlnaW4pOworICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZUFnZW50LT5maW5kRnJhbWVXaXRoU2Vj
dXJpdHlPcmlnaW4oZXJyb3JTdHJpbmcsIHNlY3VyaXR5T3JpZ2luLmdldCgpKTsKICAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSBhc3NlcnREb2N1bWVudChlcnJvclN0cmluZywgZnJhbWUpOwogICAg
IGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKQEAgLTY1OCw5ICs2NTYsOSBAQCB2b2lk
IEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2UoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBTdAogICAgIGRhdGFiYXNlTG9hZGVyLT5zdGFydChpZGJGYWN0b3J5
LCBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwgZGF0YWJhc2VOYW1lKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGEoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNl
TmFtZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5kZXhO
YW1lLCBpbnQgc2tpcENvdW50LCBpbnQgcGFnZVNpemUsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+KiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YUNhbGxiYWNrPiByZXF1ZXN0
Q2FsbGJhY2spCit2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YShFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzZWN1
cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0U3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgaW50IHNraXBDb3VudCwgaW50
IHBhZ2VTaXplLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Pioga2V5UmFuZ2UsIFBhc3NS
ZWZQdHI8UmVxdWVzdERhdGFDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQogewotICAgIEZyYW1l
KiBmcmFtZSA9IG1fcGFnZUFnZW50LT5maW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4oc2VjdXJp
dHlPcmlnaW4pOworICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZUFnZW50LT5maW5kRnJhbWVXaXRo
U2VjdXJpdHlPcmlnaW4oZXJyb3JTdHJpbmcsIHNlY3VyaXR5T3JpZ2luLmdldCgpKTsKICAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBhc3NlcnREb2N1bWVudChlcnJvclN0cmluZywgZnJhbWUpOwog
ICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKaW5kZXggNjlhMDk2MWFiMWIx
ZmE4ZDUyMTkwZDU3ZjQyOGYyNTUwN2Q2ZmNjZS4uOWYyOWZlNDIyMTYyN2FhOGQ2ZjBiN2Y0Y2Ri
YWFiYTU2ZTdkMjcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckluZGV4ZWREQkFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckluZGV4ZWREQkFnZW50LmgKQEAgLTU4LDkgKzU4LDkgQEAgcHVibGljOgogICAgIC8vIENh
bGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0
cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7Ci0gICAgdmly
dHVhbCB2b2lkIHJlcXVlc3REYXRhYmFzZU5hbWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBzZWN1cml0eU9yaWdpbiwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNr
Pik7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3REYXRhYmFzZShFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBQYXNz
UmVmUHRyPFJlcXVlc3REYXRhYmFzZUNhbGxiYWNrPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVl
c3REYXRhKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBjb25z
dCBTdHJpbmcmIGluZGV4TmFtZSwgaW50IHNraXBDb3VudCwgaW50IHBhZ2VTaXplLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0Pioga2V5UmFuZ2UsIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFD
YWxsYmFjaz4pOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YWJhc2VOYW1lcyhFcnJvclN0
cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzZWN1cml0eU9yaWdpbiwgUGFz
c1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNrPik7CisgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3REYXRhYmFzZShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+JiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIFBhc3NSZWZQ
dHI8UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2s+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERh
dGEoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc2VjdXJpdHlP
cmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0
b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIGludCBza2lwQ291bnQsIGludCBwYWdl
U2l6ZSwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGtleVJhbmdlLCBQYXNzUmVmUHRy
PFJlcXVlc3REYXRhQ2FsbGJhY2s+KTsKIAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JJbmRleGVk
REJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yQ29tcG9zaXRlU3RhdGUqLCBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggNjk5Y2M5ODdh
NTQyNzAyZWRhOGI5MzY3YzMzOWFmNTY5MDdhZDRlZC4uNDA4MDlkNGU1YjgyYTFlMGRkNjI2ZTRl
Nzg1OWQxNWIwNWNmZTg0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEwMiw2ICsxMDIsMzUgQEAgc3RhdGljIGNvbnN0IGNoYXIg
dG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWRbXSA9ICJ0b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxl
ZCI7CiBzdGF0aWMgY29uc3QgY2hhciBwYWdlQWdlbnRFbXVsYXRlZE1lZGlhW10gPSAicGFnZUFn
ZW50RW11bGF0ZWRNZWRpYSI7CiB9CiAKK1Bhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IEluc3Bl
Y3RvclBhZ2VBZ2VudDo6aW5zcGVjdG9yT2JqZWN0VG9TZWN1cml0eU9yaWdpbihJbnNwZWN0b3JP
YmplY3QqIG9iamVjdCkKK3sKKyAgICBTdHJpbmcgdXJsOworICAgIGlmICghb2JqZWN0LT5nZXRT
dHJpbmcoInVybCIsICZ1cmwpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFN0cmluZyBkb21h
aW5TZXRJbkRPTTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlID0gb2JqZWN0LT5n
ZXQoImRvbWFpblNldEluRE9NIik7CisgICAgaWYgKHZhbHVlKSB7CisgICAgICAgIGlmICghdmFs
dWUtPmFzU3RyaW5nKCZkb21haW5TZXRJbkRPTSkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlc3VsdCA9IFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tU3RyaW5nKHVybCk7CisgICAgaWYgKCFkb21haW5TZXRJbkRPTS5pc051bGwo
KSkKKyAgICAgICAgcmVzdWx0LT5zZXREb21haW5Gcm9tRE9NKGRvbWFpblNldEluRE9NKTsKKyAg
ICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
UGFnZTo6U2VjdXJpdHlPcmlnaW4+IEluc3BlY3RvclBhZ2VBZ2VudDo6c2VjdXJpdHlPcmlnaW5U
b0luc3BlY3Rvck9iamVjdChTZWN1cml0eU9yaWdpbiogb3JpZ2luKQoreworCisgICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWN1cml0eU9yaWdpbj4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6
OlBhZ2U6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoKQorICAgICAgICAuc2V0VXJsKG9yaWdpbi0+
dG9SYXdTdHJpbmcoKSk7CisgICAgaWYgKG9yaWdpbi0+ZG9tYWluV2FzU2V0SW5ET00oKSkKKyAg
ICAgICAgcmVzdWx0LT5zZXREb21haW5TZXRJbkRPTShvcmlnaW4tPmRvbWFpbigpKTsKKyAgICBy
ZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKK30KKwogc3RhdGljIGJvb2wgZGVjb2RlQnVmZmVyKGNv
bnN0IGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rp
bmdOYW1lLCBTdHJpbmcqIHJlc3VsdCkKIHsKICAgICBpZiAoYnVmZmVyKSB7CkBAIC05MzAsMTkg
Kzk1OSwyNSBAQCBTdHJpbmcgSW5zcGVjdG9yUGFnZUFnZW50Ojpsb2FkZXJJZChEb2N1bWVudExv
YWRlciogbG9hZGVyKQogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCi1GcmFtZSogSW5zcGVj
dG9yUGFnZUFnZW50OjpmaW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4oY29uc3QgU3RyaW5nJiBv
cmlnaW5SYXdTdHJpbmcpCitGcmFtZSogSW5zcGVjdG9yUGFnZUFnZW50OjpmaW5kRnJhbWVXaXRo
U2VjdXJpdHlPcmlnaW4oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBJbnNwZWN0b3JPYmplY3Qq
IHNlY3VyaXR5T3JpZ2luT2JqZWN0KQogewotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2Vj
dXJpdHlPcmlnaW5QdHIgPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW5S
YXdTdHJpbmcpOwotICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiA9IHNlY3VyaXR5
T3JpZ2luUHRyLmdldCgpOworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmln
aW4gPSBpbnNwZWN0b3JPYmplY3RUb1NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luT2JqZWN0
KTsKKyAgICBpZiAoIXNlY3VyaXR5T3JpZ2luKSB7CisgICAgICAgIGlmIChlcnJvclN0cmluZykK
KyAgICAgICAgICAgICplcnJvclN0cmluZyA9ICJJbnZhbGlkIHNlY3VyaXR5IG9yaWdpbiI7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIGJvb2wgaXNMb2NhbCA9IHNlY3VyaXR5T3Jp
Z2luLT5pc0xvY2FsKCk7CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFt
ZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgewogICAg
ICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGRvY3VtZW50T3JpZ2luID0gZnJhbWUtPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CiAgICAgICAgIC8vIEVtdWxhdGUgdGhlICFlbmZvcmNl
RmlsZVBhdGhTZXBhcmF0aW9uIGZvciBzZWN1cml0eSBvcmlnaW5zLgogICAgICAgICBpZiAoaXNM
b2NhbCAmJiBkb2N1bWVudE9yaWdpbi0+aXNMb2NhbCgpKQogICAgICAgICAgICAgcmV0dXJuIGZy
YW1lOwotICAgICAgICBpZiAoZG9jdW1lbnRPcmlnaW4tPmVxdWFsKHNlY3VyaXR5T3JpZ2luKSkK
KyAgICAgICAgaWYgKGRvY3VtZW50T3JpZ2luLT5lcXVhbChzZWN1cml0eU9yaWdpbi5nZXQoKSkp
CiAgICAgICAgICAgICByZXR1cm4gZnJhbWU7CiAgICAgfQorCiAgICAgcmV0dXJuIDA7CiB9CiAK
QEAgLTEwNzgsNyArMTExMyw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1l
PiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWUoRnJhCiAgICAgICAgIC5z
ZXRMb2FkZXJJZChsb2FkZXJJZChmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkpKQog
ICAgICAgICAuc2V0VXJsKGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSkKICAgICAg
ICAgLnNldE1pbWVUeXBlKGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9u
c2VNSU1FVHlwZSgpKQotICAgICAgICAuc2V0U2VjdXJpdHlPcmlnaW4oZnJhbWUtPmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvUmF3U3RyaW5nKCkpOworICAgICAgICAuc2V0U2VjdXJp
dHlPcmlnaW4oc2VjdXJpdHlPcmlnaW5Ub0luc3BlY3Rvck9iamVjdChmcmFtZS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKSkpOwogICAgIGlmIChmcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkK
ICAgICAgICAgZnJhbWVPYmplY3QtPnNldFBhcmVudElkKGZyYW1lSWQoZnJhbWUtPnRyZWUoKS0+
cGFyZW50KCkpKTsKICAgICBpZiAoZnJhbWUtPm93bmVyRWxlbWVudCgpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggZDk2MDMwMzdjMGY4
NGJjMzJmNTRhYTg0Mjg4NDM4MTAwNjQyZTc1Zi4uOWFhMDc2MDY2ODkzNzg3ZjZjNWY5NWVhMDA5
ZWY0Y2MyMzVkMWVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQ
YWdlQWdlbnQuaApAQCAtOTIsNiArOTIsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlc291cmNl
VHlwZSBjYWNoZWRSZXNvdXJjZVR5cGUoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKTsKICAgICBzdGF0
aWMgVHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6RW51bSBjYWNoZWRSZXNvdXJjZVR5
cGVKc29uKGNvbnN0IENhY2hlZFJlc291cmNlJik7CiAKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gaW5zcGVjdG9yT2JqZWN0VG9TZWN1cml0eU9yaWdpbihJbnNwZWN0b3JP
YmplY3QqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6U2VjdXJp
dHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luVG9JbnNwZWN0b3JPYmplY3QoU2VjdXJpdHlPcmlnaW4q
KTsKKwogICAgIC8vIFBhZ2UgQVBJIGZvciBJbnNwZWN0b3JGcm9udGVuZAogICAgIHZpcnR1YWwg
dm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJv
clN0cmluZyopOwpAQCAtMTczLDcgKzE3Niw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZnJhbWVJ
ZChGcmFtZSopOwogICAgIGJvb2wgaGFzSWRGb3JGcmFtZShGcmFtZSopIGNvbnN0OwogICAgIFN0
cmluZyBsb2FkZXJJZChEb2N1bWVudExvYWRlciopOwotICAgIEZyYW1lKiBmaW5kRnJhbWVXaXRo
U2VjdXJpdHlPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5SYXdTdHJpbmcpOworICAgIEZyYW1l
KiBmaW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4oRXJyb3JTdHJpbmcqLCBJbnNwZWN0b3JPYmpl
Y3QqKTsKICAgICBGcmFtZSogYXNzZXJ0RnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IGZyYW1lSWQpOwogICAgIFN0cmluZyBzY3JpcHRQcmVwcm9jZXNzb3IoKSB7IHJldHVybiBtX3Nj
cmlwdFByZXByb2Nlc3NvcjsgfQogICAgIHN0YXRpYyBEb2N1bWVudExvYWRlciogYXNzZXJ0RG9j
dW1lbnRMb2FkZXIoRXJyb3JTdHJpbmcqLCBGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlLmpzCmluZGV4IGIyMDlmNzI2YzA5MzRkZGM0
NmJlMjY5YzJmZWI4MTA2MWE0MWFlMzYuLjJlYzg0MjZkN2NmYjI5ZThjZmUwMmEwZmM2NTkwMWYz
YTZiM2U3NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RE9NU3RvcmFnZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RP
TVN0b3JhZ2UuanMKQEAgLTI5LDcgKzI5LDcgQEAKIAogLyoqCiAgKiBAY29uc3RydWN0b3IKLSAq
IEBwYXJhbSB7c3RyaW5nfSBzZWN1cml0eU9yaWdpbgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
U2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5T3JpZ2luCiAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzTG9j
YWxTdG9yYWdlCiAgKi8KIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlID0gZnVuY3Rpb24oc2VjdXJp
dHlPcmlnaW4sIGlzTG9jYWxTdG9yYWdlKQpAQCAtMzksMjQgKzM5LDI0IEBAIFdlYkluc3BlY3Rv
ci5ET01TdG9yYWdlID0gZnVuY3Rpb24oc2VjdXJpdHlPcmlnaW4sIGlzTG9jYWxTdG9yYWdlKQog
fQogCiAvKioKLSAqIEBwYXJhbSB7c3RyaW5nfSBzZWN1cml0eU9yaWdpbgorICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5T3JpZ2luCiAgKiBAcGFyYW0ge2Jv
b2xlYW59IGlzTG9jYWxTdG9yYWdlCiAgKiBAcmV0dXJuIHtET01TdG9yYWdlQWdlbnQuU3RvcmFn
ZUlkfQogICovCiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZS5zdG9yYWdlSWQgPSBmdW5jdGlvbihz
ZWN1cml0eU9yaWdpbiwgaXNMb2NhbFN0b3JhZ2UpCiB7Ci0gICAgcmV0dXJuIHsgc2VjdXJpdHlP
cmlnaW46IHNlY3VyaXR5T3JpZ2luLCBpc0xvY2FsU3RvcmFnZTogaXNMb2NhbFN0b3JhZ2UgfTsK
KyAgICByZXR1cm4geyBzZWN1cml0eU9yaWdpbjogc2VjdXJpdHlPcmlnaW4udG9Qcm90b2NvbCgp
LCBpc0xvY2FsU3RvcmFnZTogaXNMb2NhbFN0b3JhZ2UgfTsKIH0KIAogV2ViSW5zcGVjdG9yLkRP
TVN0b3JhZ2UucHJvdG90eXBlID0gewogCiAgICAgLyoqIEByZXR1cm4ge0RPTVN0b3JhZ2VBZ2Vu
dC5TdG9yYWdlSWR9ICovCi0gICAgZ2V0IGlkKCkKKyAgICBpZDogZnVuY3Rpb24oKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlLnN0b3JhZ2VJZCh0aGlzLl9z
ZWN1cml0eU9yaWdpbiwgdGhpcy5faXNMb2NhbFN0b3JhZ2UpOwogICAgIH0sCiAKLSAgICAvKiog
QHJldHVybiB7c3RyaW5nfSAqLworICAgIC8qKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuU2VjdXJp
dHlPcmlnaW59ICovCiAgICAgZ2V0IHNlY3VyaXR5T3JpZ2luKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9zZWN1cml0eU9yaWdpbjsKQEAgLTczLDcgKzczLDcgQEAgV2ViSW5zcGVjdG9y
LkRPTVN0b3JhZ2UucHJvdG90eXBlID0gewogICAgICAqLwogICAgIGdldEl0ZW1zOiBmdW5jdGlv
bihjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIERPTVN0b3JhZ2VBZ2VudC5nZXRET01TdG9yYWdl
SXRlbXModGhpcy5pZCwgY2FsbGJhY2spOworICAgICAgICBET01TdG9yYWdlQWdlbnQuZ2V0RE9N
U3RvcmFnZUl0ZW1zKHRoaXMuaWQoKSwgY2FsbGJhY2spOwogICAgIH0sCiAKICAgICAvKioKQEAg
LTgzLDcgKzgzLDcgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UucHJvdG90eXBlID0gewogICAg
ICAqLwogICAgIHNldEl0ZW06IGZ1bmN0aW9uKGtleSwgdmFsdWUsIGNhbGxiYWNrKQogICAgIHsK
LSAgICAgICAgRE9NU3RvcmFnZUFnZW50LnNldERPTVN0b3JhZ2VJdGVtKHRoaXMuaWQsIGtleSwg
dmFsdWUsIGNhbGxiYWNrKTsKKyAgICAgICAgRE9NU3RvcmFnZUFnZW50LnNldERPTVN0b3JhZ2VJ
dGVtKHRoaXMuaWQoKSwga2V5LCB2YWx1ZSwgY2FsbGJhY2spOwogICAgIH0sCiAKICAgICAvKioK
QEAgLTkyLDcgKzkyLDcgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UucHJvdG90eXBlID0gewog
ICAgICAqLwogICAgIHJlbW92ZUl0ZW06IGZ1bmN0aW9uKGtleSwgY2FsbGJhY2spCiAgICAgewot
ICAgICAgICBET01TdG9yYWdlQWdlbnQucmVtb3ZlRE9NU3RvcmFnZUl0ZW0odGhpcy5pZCwga2V5
LCBjYWxsYmFjayk7CisgICAgICAgIERPTVN0b3JhZ2VBZ2VudC5yZW1vdmVET01TdG9yYWdlSXRl
bSh0aGlzLmlkKCksIGtleSwgY2FsbGJhY2spOwogICAgIH0KIH0KIApAQCAtMTI1LDcgKzEyNSw3
IEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlTW9kZWwucHJvdG90eXBlID0gewogICAgICAqLwog
ICAgIF9zZWN1cml0eU9yaWdpbkFkZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAg
IHZhciBzZWN1cml0eU9yaWdpbiA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoZXZlbnQuZGF0YSk7
CisgICAgICAgIHZhciBzZWN1cml0eU9yaWdpbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNl
Y3VyaXR5T3JpZ2lufSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIHZhciBsb2NhbFN0b3JhZ2VL
ZXkgPSB0aGlzLl9zdG9yYWdlS2V5KHNlY3VyaXR5T3JpZ2luLCB0cnVlKTsKICAgICAgICAgY29u
c29sZS5hc3NlcnQoIXRoaXMuX3N0b3JhZ2VzW2xvY2FsU3RvcmFnZUtleV0pOwogICAgICAgICB2
YXIgbG9jYWxTdG9yYWdlID0gbmV3IFdlYkluc3BlY3Rvci5ET01TdG9yYWdlKHNlY3VyaXR5T3Jp
Z2luLCB0cnVlKTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU1v
ZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfc2VjdXJpdHlPcmlnaW5SZW1vdmVkOiBm
dW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBzZWN1cml0eU9yaWdpbiA9IC8qKiBA
dHlwZSB7c3RyaW5nfSAqLyAoZXZlbnQuZGF0YSk7CisgICAgICAgIHZhciBzZWN1cml0eU9yaWdp
biA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSAqLyAoZXZlbnQuZGF0
YSk7CiAgICAgICAgIHZhciBsb2NhbFN0b3JhZ2VLZXkgPSB0aGlzLl9zdG9yYWdlS2V5KHNlY3Vy
aXR5T3JpZ2luLCB0cnVlKTsKICAgICAgICAgdmFyIGxvY2FsU3RvcmFnZSA9IHRoaXMuX3N0b3Jh
Z2VzW2xvY2FsU3RvcmFnZUtleV07CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGxvY2FsU3RvcmFn
ZSk7CkBAIC0xNTksMTMgKzE1OSwxMyBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU1vZGVsLnBy
b3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHNl
Y3VyaXR5T3JpZ2luCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59
IHNlY3VyaXR5T3JpZ2luCiAgICAgICogQHBhcmFtIHtib29sZWFufSBpc0xvY2FsU3RvcmFnZQog
ICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAgKi8KICAgICBfc3RvcmFnZUtleTogZnVuY3Rp
b24oc2VjdXJpdHlPcmlnaW4sIGlzTG9jYWxTdG9yYWdlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IEpTT04uc3RyaW5naWZ5KFdlYkluc3BlY3Rvci5ET01TdG9yYWdlLnN0b3JhZ2VJZChzZWN1cml0
eU9yaWdpbiwgaXNMb2NhbFN0b3JhZ2UpKTsKKyAgICAgICAgcmV0dXJuIHNlY3VyaXR5T3JpZ2lu
LmlkKCkgKyAiLyIgKyBpc0xvY2FsU3RvcmFnZTsKICAgICB9LAogCiAgICAgLyoqCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpz
CmluZGV4IGZkMzA3ZmE5NWZjOWNmYzM0NWNlNzRhMzFjMGM5YjczYWE5ZmY0M2IuLjRmZGEzMTI2
MGU5OTlmOGQ3ZDljZmEyNzc3NTJjMzZhYWYyMzVhNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCkBAIC03NzQsNyAr
Nzc0LDcgQEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUgPSB7CiAgICAg
ICogQHBhcmFtIHtib29sZWFufSBleHBvc2VDb21tYW5kTGluZUFQSQogICAgICAqIEBwYXJhbSB7
Ym9vbGVhbn0gcmV0dXJuQnlWYWx1ZQogICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zCi0g
ICAgICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCisgICAgICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5T3JpZ2luCiAgICAgICogQHBhcmFtIHtm
dW5jdGlvbig/c3RyaW5nLCA/UnVudGltZUFnZW50LlJlbW90ZU9iamVjdCwgYm9vbGVhbj0pfSBj
YWxsYmFjawogICAgICAqLwogICAgIGV2YWx1YXRlOiBmdW5jdGlvbihleHByZXNzaW9uLCBleHBv
c2VDb21tYW5kTGluZUFQSSwgcmV0dXJuQnlWYWx1ZSwgb3B0aW9ucywgc2VjdXJpdHlPcmlnaW4s
IGNhbGxiYWNrKSAKQEAgLTc4Niw3ICs3ODYsNyBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2Vy
dmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLkVf
RkFJTEVEKCJtYWluIGZyYW1lIG5vdCBhdmFpbGFibGUgeWV0Iik7CiAgICAgICAgICAgICB2YXIg
Y29udGV4dCA9IFdlYkluc3BlY3Rvci5ydW50aW1lTW9kZWwuY29udGV4dEJ5RnJhbWVBbmRTZWN1
cml0eU9yaWdpbihtYWluRnJhbWUsIHNlY3VyaXR5T3JpZ2luKTsKICAgICAgICAgICAgIGlmICgh
Y29udGV4dCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLkVfTk9URk9VTkQo
c2VjdXJpdHlPcmlnaW4pOworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0dXMuRV9O
T1RGT1VORChzZWN1cml0eU9yaWdpbi51aVRpdGxlKCkpOwogICAgICAgICAgICAgY29udGV4dElk
ID0gY29udGV4dC5pZDsKICAgICAgICAgfQogICAgICAgICBSdW50aW1lQWdlbnQuZXZhbHVhdGUo
ZXhwcmVzc2lvbiwgImV4dGVuc2lvbiIsIGV4cG9zZUNvbW1hbmRMaW5lQVBJLCB0cnVlLCBjb250
ZXh0SWQsIHJldHVybkJ5VmFsdWUsIGZhbHNlLCBjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCmluZGV4IDE0
YzEzNzJjZDQyYjdjNTU4YWVhYjJhMzFlMTUzYTg1NDdiMjY5YjguLjdhMzM2MDA1MjQ2MjIxZjMw
ZjRjZjFiMjZkOWM2OTFiODRjZTk4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCkBAIC00OSw4ICs0OSw4IEBAIFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwgPSBmdW5jdGlvbigpCiBXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICBfcmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7
Ci0gICAgICAgIGZvciAodmFyIHNlY3VyaXR5T3JpZ2luIGluIHRoaXMuX2ZpbGVTeXN0ZW1zRm9y
T3JpZ2luKQotICAgICAgICAgICAgdGhpcy5fcmVtb3ZlT3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsK
KyAgICAgICAgZm9yICh2YXIgc2VjdXJpdHlPcmlnaW5JZCBpbiB0aGlzLl9maWxlU3lzdGVtc0Zv
ck9yaWdpbikKKyAgICAgICAgICAgIHRoaXMuX3JlbW92ZU9yaWdpbihXZWJJbnNwZWN0b3IucmVz
b3VyY2VUcmVlTW9kZWwuc2VjdXJpdHlPcmlnaW5Gb3JJZChzZWN1cml0eU9yaWdpbklkKSk7CiAg
ICAgICAgIHZhciBzZWN1cml0eU9yaWdpbnMgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9k
ZWwuc2VjdXJpdHlPcmlnaW5zKCk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VjdXJp
dHlPcmlnaW5zLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgdGhpcy5fYWRkT3JpZ2luKHNlY3Vy
aXR5T3JpZ2luc1tpXSk7CkBAIC02MSw3ICs2MSw3IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TW9kZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9zZWN1cml0eU9yaWdpbkFkZGVkOiBm
dW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBzZWN1cml0eU9yaWdpbiA9IC8qKiBA
dHlwZSB7c3RyaW5nfSAqLyAoZXZlbnQuZGF0YSk7CisgICAgICAgIHZhciBzZWN1cml0eU9yaWdp
biA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSAqLyAoZXZlbnQuZGF0
YSk7CiAgICAgICAgIHRoaXMuX2FkZE9yaWdpbihzZWN1cml0eU9yaWdpbik7CiAgICAgfSwKIApA
QCAtNzAsMzcgKzcwLDM5IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBl
ID0gewogICAgICAqLwogICAgIF9zZWN1cml0eU9yaWdpblJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50
KQogICAgIHsKLSAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gLyoqIEB0eXBlIHtzdHJpbmd9
ICovIChldmVudC5kYXRhKTsKKyAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gLyoqIEB0eXBl
IHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59ICovIChldmVudC5kYXRhKTsKICAgICAgICAg
dGhpcy5fcmVtb3ZlT3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKICAgICB9LAogCiAgICAgLyoqCi0g
ICAgICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCisgICAgICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5T3JpZ2luCiAgICAgICovCiAgICAgX2Fk
ZE9yaWdpbjogZnVuY3Rpb24oc2VjdXJpdHlPcmlnaW4pCiAgICAgewotICAgICAgICB0aGlzLl9m
aWxlU3lzdGVtc0Zvck9yaWdpbltzZWN1cml0eU9yaWdpbl0gPSB7fTsKKyAgICAgICAgdmFyIHNl
Y3VyaXR5T3JpZ2luSWQgPSBzZWN1cml0eU9yaWdpbi5pZCgpOworICAgICAgICB0aGlzLl9maWxl
U3lzdGVtc0Zvck9yaWdpbltzZWN1cml0eU9yaWdpbklkXSA9IHt9OwogCiAgICAgICAgIHZhciB0
eXBlcyA9IFsicGVyc2lzdGVudCIsICJ0ZW1wb3JhcnkiXTsKICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0eXBlcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RGaWxl
U3lzdGVtUm9vdChzZWN1cml0eU9yaWdpbiwgdHlwZXNbaV0sIHRoaXMuX2ZpbGVTeXN0ZW1Sb290
UmVjZWl2ZWQuYmluZCh0aGlzLCBzZWN1cml0eU9yaWdpbiwgdHlwZXNbaV0sIHRoaXMuX2ZpbGVT
eXN0ZW1zRm9yT3JpZ2luW3NlY3VyaXR5T3JpZ2luXSkpOworICAgICAgICAgICAgdGhpcy5fcmVx
dWVzdEZpbGVTeXN0ZW1Sb290KHNlY3VyaXR5T3JpZ2luLCB0eXBlc1tpXSwgdGhpcy5fZmlsZVN5
c3RlbVJvb3RSZWNlaXZlZC5iaW5kKHRoaXMsIHNlY3VyaXR5T3JpZ2luLCB0eXBlc1tpXSwgdGhp
cy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bc2VjdXJpdHlPcmlnaW5JZF0pKTsKICAgICB9LAogCiAg
ICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCisgICAgICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5T3JpZ2luCiAgICAgICov
CiAgICAgX3JlbW92ZU9yaWdpbjogZnVuY3Rpb24oc2VjdXJpdHlPcmlnaW4pCiAgICAgewotICAg
ICAgICBmb3IgKHZhciB0eXBlIGluIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW3NlY3VyaXR5
T3JpZ2luXSkgewotICAgICAgICAgICAgdmFyIGZpbGVTeXN0ZW0gPSB0aGlzLl9maWxlU3lzdGVt
c0Zvck9yaWdpbltzZWN1cml0eU9yaWdpbl1bdHlwZV07Ci0gICAgICAgICAgICBkZWxldGUgdGhp
cy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bc2VjdXJpdHlPcmlnaW5dW3R5cGVdOworICAgICAgICB2
YXIgc2VjdXJpdHlPcmlnaW5JZCA9IHNlY3VyaXR5T3JpZ2luLmlkKCk7CisgICAgICAgIGZvciAo
dmFyIHR5cGUgaW4gdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bc2VjdXJpdHlPcmlnaW5JZF0p
IHsKKyAgICAgICAgICAgIHZhciBmaWxlU3lzdGVtID0gdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmln
aW5bc2VjdXJpdHlPcmlnaW5JZF1bdHlwZV07CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fZmls
ZVN5c3RlbXNGb3JPcmlnaW5bc2VjdXJpdHlPcmlnaW5JZF1bdHlwZV07CiAgICAgICAgICAgICB0
aGlzLl9maWxlU3lzdGVtUmVtb3ZlZChmaWxlU3lzdGVtKTsKICAgICAgICAgfQotICAgICAgICBk
ZWxldGUgdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bc2VjdXJpdHlPcmlnaW5dOworICAgICAg
ICBkZWxldGUgdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bc2VjdXJpdHlPcmlnaW5JZF07ICAK
ICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbgorICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSBvcmlnaW4KICAgICAgKiBAcGFy
YW0ge3N0cmluZ30gdHlwZQogICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obnVtYmVyLCBGaWxlU3lz
dGVtQWdlbnQuRW50cnk9KX0gY2FsbGJhY2sKICAgICAgKi8KQEAgLTEyMSw3ICsxMjMsNyBAQCBX
ZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNh
bGxiYWNrKGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBGaWxlU3lzdGVtQWdlbnQucmVxdWVzdEZpbGVTeXN0ZW1Sb290KG9yaWdpbiwgdHlwZSwgaW5u
ZXJDYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgRmlsZVN5c3RlbUFnZW50LnJlcXVlc3RG
aWxlU3lzdGVtUm9vdChvcmlnaW4udG9Qcm90b2NvbCgpLCB0eXBlLCBpbm5lckNhbGxiYWNrLmJp
bmQodGhpcykpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTE0Niw3ICsxNDgsNyBAQCBXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0g
ICAgICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlNlY3VyaXR5T3JpZ2lufSBvcmlnaW4KICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZQogICAg
ICAqIEBwYXJhbSB7T2JqZWN0LjxXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0
ZW0+fSBzdG9yZQogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlcnJvckNvZGUKQEAgLTE1NCw3ICsx
NTYsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAg
Ki8KICAgICBfZmlsZVN5c3RlbVJvb3RSZWNlaXZlZDogZnVuY3Rpb24ob3JpZ2luLCB0eXBlLCBz
dG9yZSwgZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5KQogICAgIHsKLSAgICAgICAgaWYgKCFl
cnJvckNvZGUgJiYgYmFja2VuZFJvb3RFbnRyeSAmJiB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdp
bltvcmlnaW5dID09PSBzdG9yZSkgeworICAgICAgICBpZiAoIWVycm9yQ29kZSAmJiBiYWNrZW5k
Um9vdEVudHJ5ICYmIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbi5pZCgpXSA9PT0g
c3RvcmUpIHsKICAgICAgICAgICAgIHZhciBmaWxlU3lzdGVtID0gbmV3IFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbSh0aGlzLCBvcmlnaW4sIHR5cGUsIGJhY2tlbmRSb290
RW50cnkpOwogICAgICAgICAgICAgc3RvcmVbdHlwZV0gPSBmaWxlU3lzdGVtOwogICAgICAgICAg
ICAgdGhpcy5fZmlsZVN5c3RlbUFkZGVkKGZpbGVTeXN0ZW0pOwpAQCAtMzM1LDE0ICszMzcsMTQg
QEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAg
ICAgX3JlbW92ZUZpbGVTeXN0ZW06IGZ1bmN0aW9uKGZpbGVTeXN0ZW0pCiAgICAgewotICAgICAg
ICB2YXIgb3JpZ2luID0gZmlsZVN5c3RlbS5vcmlnaW47CisgICAgICAgIHZhciBvcmlnaW5JZCA9
IGZpbGVTeXN0ZW0ub3JpZ2luLmlkKCk7CiAgICAgICAgIHZhciB0eXBlID0gZmlsZVN5c3RlbS50
eXBlOwotICAgICAgICBpZiAodGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luXSAmJiB0
aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5dW3R5cGVdKSB7Ci0gICAgICAgICAgICBk
ZWxldGUgdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luXVt0eXBlXTsKKyAgICAgICAg
aWYgKHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbklkXSAmJiB0aGlzLl9maWxlU3lz
dGVtc0Zvck9yaWdpbltvcmlnaW5JZF1bdHlwZV0pIHsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlz
Ll9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5JZF1bdHlwZV07CiAgICAgICAgICAgICB0aGlz
Ll9maWxlU3lzdGVtUmVtb3ZlZChmaWxlU3lzdGVtKTsKIAotICAgICAgICAgICAgaWYgKE9iamVj
dC5pc0VtcHR5KHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbl0pKQotICAgICAgICAg
ICAgICAgIGRlbGV0ZSB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5dOworICAgICAg
ICAgICAgaWYgKE9iamVjdC5pc0VtcHR5KHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdp
bklkXSkpCisgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2lu
W29yaWdpbklkXTsKICAgICAgICAgfQogICAgIH0sCiAKQEAgLTM1OCw3ICszNjAsNyBAQCBXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkV2ZW50VHlwZXMgPSB7CiAvKioKICAqIEBjb25zdHJ1
Y3RvcgogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsfSBmaWxlU3lzdGVt
TW9kZWwKLSAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW4KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlNlY3VyaXR5T3JpZ2lufSBvcmlnaW4KICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlCiAgKiBAcGFy
YW0ge0ZpbGVTeXN0ZW1BZ2VudC5FbnRyeX0gYmFja2VuZFJvb3RFbnRyeQogICovCkBAIC0zNzYs
NyArMzc4LDcgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtLnByb3Rv
dHlwZSA9IHsKICAgICAgKi8KICAgICBnZXQgbmFtZSgpCiAgICAgewotICAgICAgICByZXR1cm4g
ImZpbGVzeXN0ZW06IiArIHRoaXMub3JpZ2luICsgIi8iICsgdGhpcy50eXBlOworICAgICAgICBy
ZXR1cm4gImZpbGVzeXN0ZW06IiArIHRoaXMub3JpZ2luLnVybCgpICsgIi8iICsgdGhpcy50eXBl
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9JbmRleGVkREJNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvSW5kZXhlZERCTW9kZWwuanMKaW5kZXggYTUyNTdhMjRiY2JjMzhkYjQ4ZjQ3MjYyOWJmMzBi
MTNiMTA5NmFjNC4uNzg4ZGM2MTg2ZTY1YTk3ZWZmOTVjYTk0MWFlMDIyMDNhYmZhMWNkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJNb2Rl
bC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQk1v
ZGVsLmpzCkBAIC0xNDEsOCArMTQxLDggQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLkV2
ZW50VHlwZXMgPSB7CiBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewog
ICAgIF9yZXNldDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgZm9yICh2YXIgc2VjdXJpdHlP
cmlnaW4gaW4gdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW4pCi0gICAgICAgICAg
ICB0aGlzLl9yZW1vdmVPcmlnaW4oc2VjdXJpdHlPcmlnaW4pOworICAgICAgICBmb3IgKHZhciBz
ZWN1cml0eU9yaWdpbklkIGluIHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luKQor
ICAgICAgICAgICAgdGhpcy5fcmVtb3ZlT3JpZ2luKFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVN
b2RlbC5zZWN1cml0eU9yaWdpbkZvcklkKHNlY3VyaXR5T3JpZ2luSWQpKTsKICAgICAgICAgdmFy
IHNlY3VyaXR5T3JpZ2lucyA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5zZWN1cml0
eU9yaWdpbnMoKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWN1cml0eU9yaWdpbnMu
bGVuZ3RoOyArK2kpCiAgICAgICAgICAgICB0aGlzLl9hZGRPcmlnaW4oc2VjdXJpdHlPcmlnaW5z
W2ldKTsKQEAgLTE1MCw4ICsxNTAsOCBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJv
dG90eXBlID0gewogCiAgICAgcmVmcmVzaERhdGFiYXNlTmFtZXM6IGZ1bmN0aW9uKCkKICAgICB7
Ci0gICAgICAgIGZvciAodmFyIHNlY3VyaXR5T3JpZ2luIGluIHRoaXMuX2RhdGFiYXNlTmFtZXNC
eVNlY3VyaXR5T3JpZ2luKQotICAgICAgICAgICAgdGhpcy5fbG9hZERhdGFiYXNlTmFtZXMoc2Vj
dXJpdHlPcmlnaW4pOworICAgICAgICBmb3IgKHZhciBzZWN1cml0eU9yaWdpbklkIGluIHRoaXMu
X2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luKQorICAgICAgICAgICAgdGhpcy5fbG9hZERh
dGFiYXNlTmFtZXMoV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLnNlY3VyaXR5T3JpZ2lu
Rm9ySWQoc2VjdXJpdHlPcmlnaW5JZCkpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTE2Nyw3ICsx
NjcsNyBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAgICAq
LwogICAgIF9zZWN1cml0eU9yaWdpbkFkZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAg
ICAgIHZhciBzZWN1cml0eU9yaWdpbiA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoZXZlbnQuZGF0
YSk7CisgICAgICAgIHZhciBzZWN1cml0eU9yaWdpbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9y
LlNlY3VyaXR5T3JpZ2lufSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIHRoaXMuX2FkZE9yaWdp
bihzZWN1cml0eU9yaWdpbik7CiAgICAgfSwKIApAQCAtMTc2LDMzICsxNzYsMzUgQEAgV2ViSW5z
cGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfc2VjdXJp
dHlPcmlnaW5SZW1vdmVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBzZWN1
cml0eU9yaWdpbiA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoZXZlbnQuZGF0YSk7CisgICAgICAg
IHZhciBzZWN1cml0eU9yaWdpbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3Jp
Z2lufSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIHRoaXMuX3JlbW92ZU9yaWdpbihzZWN1cml0
eU9yaWdpbik7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWN1
cml0eU9yaWdpbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSBz
ZWN1cml0eU9yaWdpbgogICAgICAqLwogICAgIF9hZGRPcmlnaW46IGZ1bmN0aW9uKHNlY3VyaXR5
T3JpZ2luKQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2RhdGFiYXNlTmFt
ZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luXSk7Ci0gICAgICAgIHRoaXMuX2RhdGFi
YXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luXSA9IFtdOworICAgICAgICB2
YXIgc2VjdXJpdHlPcmlnaW5JZCA9IHNlY3VyaXR5T3JpZ2luLmlkKCk7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KCF0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9y
aWdpbklkXSk7CisgICAgICAgIHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3Nl
Y3VyaXR5T3JpZ2luSWRdID0gW107CiAgICAgICAgIHRoaXMuX2xvYWREYXRhYmFzZU5hbWVzKHNl
Y3VyaXR5T3JpZ2luKTsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9
IHNlY3VyaXR5T3JpZ2luCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmln
aW59IHNlY3VyaXR5T3JpZ2luCiAgICAgICovCiAgICAgX3JlbW92ZU9yaWdpbjogZnVuY3Rpb24o
c2VjdXJpdHlPcmlnaW4pCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9kYXRh
YmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9yaWdpbl0pOwotICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3Vy
aXR5T3JpZ2luXS5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMuX2RhdGFiYXNlUmVtb3Zl
ZChzZWN1cml0eU9yaWdpbiwgdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bc2Vj
dXJpdHlPcmlnaW5dW2ldKTsKLSAgICAgICAgZGVsZXRlIHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNl
Y3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luXTsKKyAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2lu
SWQgPSBzZWN1cml0eU9yaWdpbi5pZCgpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9k
YXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9yaWdpbklkXSk7CisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5b
c2VjdXJpdHlPcmlnaW5JZF0ubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0aGlzLl9kYXRhYmFz
ZVJlbW92ZWQoc2VjdXJpdHlPcmlnaW4sIHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3Jp
Z2luW3NlY3VyaXR5T3JpZ2luSWRdW2ldKTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2RhdGFiYXNl
TmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luSWRdOwogICAgIH0sCiAKICAgICAv
KioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlPcmlnaW4KKyAgICAgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gc2VjdXJpdHlPcmlnaW4KICAgICAgKiBAcGFy
YW0ge0FycmF5LjxzdHJpbmc+fSBkYXRhYmFzZU5hbWVzCiAgICAgICovCiAgICAgX3VwZGF0ZU9y
aWdpbkRhdGFiYXNlTmFtZXM6IGZ1bmN0aW9uKHNlY3VyaXR5T3JpZ2luLCBkYXRhYmFzZU5hbWVz
KQpAQCAtMjExLDEwICsyMTMsMTEgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhYmFzZU5hbWVzLmxlbmd0
aDsgKytpKQogICAgICAgICAgICAgbmV3RGF0YWJhc2VOYW1lc1tkYXRhYmFzZU5hbWVzW2ldXSA9
IHRydWU7CiAgICAgICAgIHZhciBvbGREYXRhYmFzZU5hbWVzID0ge307Ci0gICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJp
dHlPcmlnaW5dLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgb2xkRGF0YWJhc2VOYW1lc1t0aGlz
Ll9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9yaWdpbl1baV1dID0gdHJ1
ZTsKKyAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luSWQgPSBzZWN1cml0eU9yaWdpbi5pZCgpOwor
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5
T3JpZ2luW3NlY3VyaXR5T3JpZ2luSWRdLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgb2xkRGF0
YWJhc2VOYW1lc1t0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9y
aWdpbklkXVtpXV0gPSB0cnVlOwogCi0gICAgICAgIHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3Vy
aXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luXSA9IGRhdGFiYXNlTmFtZXM7CisgICAgICAgIHRoaXMu
X2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luSWRdID0gZGF0YWJh
c2VOYW1lczsKIAogICAgICAgICBmb3IgKHZhciBkYXRhYmFzZU5hbWUgaW4gb2xkRGF0YWJhc2VO
YW1lcykgewogICAgICAgICAgICAgaWYgKCFuZXdEYXRhYmFzZU5hbWVzW2RhdGFiYXNlTmFtZV0p
CkBAIC0yMjcsNyArMjMwLDcgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlw
ZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5
T3JpZ2luCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IHNlY3Vy
aXR5T3JpZ2luCiAgICAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGFiYXNlTmFtZQogICAgICAqLwog
ICAgIF9kYXRhYmFzZUFkZGVkOiBmdW5jdGlvbihzZWN1cml0eU9yaWdpbiwgZGF0YWJhc2VOYW1l
KQpAQCAtMjM3LDcgKzI0MCw3IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5
cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWN1cml0
eU9yaWdpbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSBzZWN1
cml0eU9yaWdpbgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhYmFzZU5hbWUKICAgICAgKi8K
ICAgICBfZGF0YWJhc2VSZW1vdmVkOiBmdW5jdGlvbihzZWN1cml0eU9yaWdpbiwgZGF0YWJhc2VO
YW1lKQpAQCAtMjQ3LDcgKzI1MCw3IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90
b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWN1
cml0eU9yaWdpbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSBz
ZWN1cml0eU9yaWdpbgogICAgICAqLwogICAgIF9sb2FkRGF0YWJhc2VOYW1lczogZnVuY3Rpb24o
c2VjdXJpdHlPcmlnaW4pCiAgICAgewpAQCAtMjYyLDEyICsyNjUsMTIgQEAgV2ViSW5zcGVjdG9y
LkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICghdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2Vj
dXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5dKQorICAgICAgICAgICAgaWYgKCF0aGlzLl9kYXRh
YmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9yaWdpbi5pZCgpXSkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB0aGlzLl91cGRhdGVPcmlnaW5EYXRhYmFzZU5h
bWVzKHNlY3VyaXR5T3JpZ2luLCBkYXRhYmFzZU5hbWVzKTsKICAgICAgICAgfQogCi0gICAgICAg
IEluZGV4ZWREQkFnZW50LnJlcXVlc3REYXRhYmFzZU5hbWVzKHNlY3VyaXR5T3JpZ2luLCBjYWxs
YmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNl
TmFtZXMoc2VjdXJpdHlPcmlnaW4udG9Qcm90b2NvbCgpLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsK
ICAgICB9LAogCiAgICAgLyoqCkBAIC0yODYsNyArMjg5LDcgQEAgV2ViSW5zcGVjdG9yLkluZGV4
ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIGlmICghdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlP
cmlnaW5bZGF0YWJhc2VJZC5zZWN1cml0eU9yaWdpbl0pCisgICAgICAgICAgICBpZiAoIXRoaXMu
X2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW2RhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW4u
aWQoKV0pCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgdmFyIGRhdGFiYXNl
TW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLkRhdGFiYXNlKGRhdGFiYXNl
SWQsIGRhdGFiYXNlV2l0aE9iamVjdFN0b3Jlcy52ZXJzaW9uLCBkYXRhYmFzZVdpdGhPYmplY3RT
dG9yZXMuaW50VmVyc2lvbik7CiAgICAgICAgICAgICB0aGlzLl9kYXRhYmFzZXMucHV0KGRhdGFi
YXNlSWQsIGRhdGFiYXNlTW9kZWwpOyAKQEAgLTMwNiw3ICszMDksNyBAQCBXZWJJbnNwZWN0b3Iu
SW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLkV2ZW50VHlwZXMuRGF0
YWJhc2VMb2FkZWQsIGRhdGFiYXNlTW9kZWwpOwogICAgICAgICB9CiAKLSAgICAgICAgSW5kZXhl
ZERCQWdlbnQucmVxdWVzdERhdGFiYXNlKGRhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW4sIGRhdGFi
YXNlSWQubmFtZSwgY2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAgICAgIEluZGV4ZWREQkFnZW50
LnJlcXVlc3REYXRhYmFzZShkYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luLnRvUHJvdG9jb2woKSwg
ZGF0YWJhc2VJZC5uYW1lLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICB9LAogCiAgICAgLyoq
CkBAIC0zNjAsNyArMzYzLDcgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIGlmICghdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5b
ZGF0YWJhc2VJZC5zZWN1cml0eU9yaWdpbl0pCisgICAgICAgICAgICBpZiAoIXRoaXMuX2RhdGFi
YXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW2RhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW4uaWQoKV0p
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgdmFyIGVudHJpZXMgPSBbXTsK
ICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YUVudHJpZXMubGVuZ3RoOyArK2kp
IHsKQEAgLTM3Myw3ICszNzYsNyBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90
eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdmFyIGtleVJhbmdlID0gV2ViSW5zcGVjdG9y
LkluZGV4ZWREQk1vZGVsLmtleVJhbmdlRnJvbUlEQktleVJhbmdlKGlkYktleVJhbmdlKTsKLSAg
ICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGEoZGF0YWJhc2VJZC5zZWN1cml0eU9yaWdp
biwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5hbWUsIGluZGV4TmFtZSwgc2tpcENvdW50LCBw
YWdlU2l6ZSwga2V5UmFuZ2UgPyBrZXlSYW5nZSA6IHVuZGVmaW5lZCwgaW5uZXJDYWxsYmFjay5i
aW5kKHRoaXMpKTsKKyAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGEoZGF0YWJhc2VJ
ZC5zZWN1cml0eU9yaWdpbi50b1Byb3RvY29sKCksIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVO
YW1lLCBpbmRleE5hbWUsIHNraXBDb3VudCwgcGFnZVNpemUsIGtleVJhbmdlID8ga2V5UmFuZ2Ug
OiB1bmRlZmluZWQsIGlubmVyQ2FsbGJhY2suYmluZCh0aGlzKSk7CiAgICAgfSwKIAogICAgIF9f
cHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUKQEAgLTM5NCw3ICszOTcsNyBA
QCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuRW50cnkgPSBmdW5jdGlvbihrZXksIHByaW1h
cnlLZXksIHZhbHVlKQogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgotICogQHBhcmFtIHtzdHJpbmd9
IHNlY3VyaXR5T3JpZ2luCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0g
c2VjdXJpdHlPcmlnaW4KICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCiAgKi8KIFdlYkluc3BlY3Rv
ci5JbmRleGVkREJNb2RlbC5EYXRhYmFzZUlkID0gZnVuY3Rpb24oc2VjdXJpdHlPcmlnaW4sIG5h
bWUpCkBAIC00MDksNyArNDEyLDcgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLkRhdGFi
YXNlSWQucHJvdG90eXBlID0gewogICAgICAqLwogICAgIGVxdWFsczogZnVuY3Rpb24oZGF0YWJh
c2VJZCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLm5hbWUgPT09IGRhdGFiYXNlSWQubmFt
ZSAmJiB0aGlzLnNlY3VyaXR5T3JpZ2luID09PSBkYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luOwor
ICAgICAgICByZXR1cm4gdGhpcy5uYW1lID09PSBkYXRhYmFzZUlkLm5hbWUgJiYgdGhpcy5zZWN1
cml0eU9yaWdpbi5pZCgpID09PSBkYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luLmlkKCk7CiAgICAg
fSwKIH0KIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9JbmRleGVkREJWaWV3cy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
SW5kZXhlZERCVmlld3MuanMKaW5kZXggMDdhYzkxOTU2MzBjNzZmNDYwZTQyNjA5ZjIwYTI0MGQ3
YTBmYjIyNy4uZWU2MGUyZmM0MDA3MTdkMDBiYTViNDk4OGQ2YmJjMTkxNTdkNmFkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJWaWV3cy5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQlZpZXdz
LmpzCkBAIC04MCw3ICs4MCw3IEBAIFdlYkluc3BlY3Rvci5JREJEYXRhYmFzZVZpZXcucHJvdG90
eXBlID0gewogCiAgICAgX3JlZnJlc2hEYXRhYmFzZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAg
ICAgdGhpcy5fc2VjdXJpdHlPcmlnaW5UcmVlRWxlbWVudC50aXRsZSA9IHRoaXMuX2Zvcm1hdEhl
YWRlcihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlY3VyaXR5IG9yaWdpbiIpLCB0aGlzLl9kYXRh
YmFzZS5kYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAgdGhpcy5fc2VjdXJpdHlP
cmlnaW5UcmVlRWxlbWVudC50aXRsZSA9IHRoaXMuX2Zvcm1hdEhlYWRlcihXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlNlY3VyaXR5IG9yaWdpbiIpLCB0aGlzLl9kYXRhYmFzZS5kYXRhYmFzZUlkLnNl
Y3VyaXR5T3JpZ2luLnVpVGl0bGUoKSk7CiAgICAgICAgIHRoaXMuX25hbWVUcmVlRWxlbWVudC50
aXRsZSA9IHRoaXMuX2Zvcm1hdEhlYWRlcihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5hbWUiKSwg
dGhpcy5fZGF0YWJhc2UuZGF0YWJhc2VJZC5uYW1lKTsKICAgICAgICAgdGhpcy5fc3RyaW5nVmVy
c2lvblRyZWVFbGVtZW50LnRpdGxlID0gdGhpcy5fZm9ybWF0SGVhZGVyKFdlYkluc3BlY3Rvci5V
SVN0cmluZygiU3RyaW5nIFZlcnNpb24iKSwgdGhpcy5fZGF0YWJhc2UudmVyc2lvbik7CiAgICAg
ICAgIHRoaXMuX2ludFZlcnNpb25UcmVlRWxlbWVudC50aXRsZSA9IHRoaXMuX2Zvcm1hdEhlYWRl
cihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkludGVnZXIgVmVyc2lvbiIpLCB0aGlzLl9kYXRhYmFz
ZS5pbnRWZXJzaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzCmluZGV4IGYyNmM3OTE4ZjY1N2RlYWU1NDE0ZDY5
ODkyZGRjODZiZmQxMWZkMGMuLmI3ZDBhZGJjMTNkZjdhYTU3ZGM1OTE4YzFmYzMyYjFlMWEyNTZl
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3Vy
Y2VUcmVlTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZVRyZWVNb2RlbC5qcwpAQCAtNDksOCArNDksOCBAQCBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VUcmVlTW9kZWwgPSBmdW5jdGlvbihuZXR3b3JrTWFuYWdlcikKIAogICAgIEluc3BlY3RvckJh
Y2tlbmQucmVnaXN0ZXJQYWdlRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLlBhZ2VEaXNwYXRj
aGVyKHRoaXMpKTsKIAorICAgIHRoaXMuX3NlY3VyaXR5T3JpZ2luVHJhY2tlciA9IG5ldyBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuU2VjdXJpdHlPcmlnaW5UcmFja2VyKHRoaXMpOwog
ICAgIHRoaXMuX3BlbmRpbmdDb25zb2xlTWVzc2FnZXMgPSB7fTsKLSAgICB0aGlzLl9zZWN1cml0
eU9yaWdpbkZyYW1lQ291bnQgPSB7fTsKIH0KIAogV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1v
ZGVsLkV2ZW50VHlwZXMgPSB7CkBAIC0xMTQsNjIgKzExNCwzMSBAQCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VUcmVlTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5tYWluRnJhbWUg
PSBmcmFtZTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuRnJhbWVBZGRlZCwgZnJhbWUpOwogICAg
ICAgICBpZiAoIWFib3V0VG9OYXZpZ2F0ZSkKLSAgICAgICAgICAgIHRoaXMuX2FkZFNlY3VyaXR5
T3JpZ2luKGZyYW1lLnNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAgICAgIHRoaXMuX3NlY3VyaXR5
T3JpZ2luVHJhY2tlci5fYWRkU2VjdXJpdHlPcmlnaW4oZnJhbWUuc2VjdXJpdHlPcmlnaW4pOwog
ICAgICAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkKICAgICAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5
cGVzLk1haW5GcmFtZUNyZWF0ZWRPck5hdmlnYXRlZCwgZnJhbWUpOwogICAgIH0sCiAKICAgICAv
KioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlPcmlnaW4KKyAgICAgKiBAcGFyYW0g
e3N0cmluZ30gaWQKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59
CiAgICAgICovCi0gICAgX2FkZFNlY3VyaXR5T3JpZ2luOiBmdW5jdGlvbihzZWN1cml0eU9yaWdp
bikKKyAgICBzZWN1cml0eU9yaWdpbkZvcklkOiBmdW5jdGlvbihpZCkKICAgICB7Ci0gICAgICAg
IGlmICghdGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50W3NlY3VyaXR5T3JpZ2luXSkgewot
ICAgICAgICAgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50W3NlY3VyaXR5T3JpZ2lu
XSA9IDE7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5TZWN1cml0eU9yaWdpbkFkZGVkLCBz
ZWN1cml0eU9yaWdpbik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAg
dGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50W3NlY3VyaXR5T3JpZ2luXSArPSAxOworICAg
ICAgICByZXR1cm4gdGhpcy5fc2VjdXJpdHlPcmlnaW5UcmFja2VyLl9zZWN1cml0eU9yaWdpbkZv
cklkKGlkKTsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlY3Vy
aXR5T3JpZ2luCi0gICAgICovCi0gICAgX3JlbW92ZVNlY3VyaXR5T3JpZ2luOiBmdW5jdGlvbihz
ZWN1cml0eU9yaWdpbikKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3NlY3Vy
aXR5T3JpZ2luRnJhbWVDb3VudFtzZWN1cml0eU9yaWdpbl0pOwotICAgICAgICBpZiAodGhpcy5f
c2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50W3NlY3VyaXR5T3JpZ2luXSA9PT0gMSkgewotICAgICAg
ICAgICAgZGVsZXRlIHRoaXMuX3NlY3VyaXR5T3JpZ2luRnJhbWVDb3VudFtzZWN1cml0eU9yaWdp
bl07Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5TZWN1cml0eU9yaWdpblJlbW92ZWQsIHNl
Y3VyaXR5T3JpZ2luKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICB0
aGlzLl9zZWN1cml0eU9yaWdpbkZyYW1lQ291bnRbc2VjdXJpdHlPcmlnaW5dIC09IDE7Ci0gICAg
fSwKLQotICAgIC8qKgotICAgICAqIEByZXR1cm4ge0FycmF5LjxzdHJpbmc+fQorICAgICAqIEBy
ZXR1cm4ge0FycmF5LjxXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4+fQogICAgICAqLwogICAg
IHNlY3VyaXR5T3JpZ2luczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIE9iamVj
dC5rZXlzKHRoaXMuX3NlY3VyaXR5T3JpZ2luRnJhbWVDb3VudCk7CisgICAgICAgIHJldHVybiB0
aGlzLl9zZWN1cml0eU9yaWdpblRyYWNrZXIuX3NlY3VyaXR5T3JpZ2lucygpOwogICAgIH0sCiAK
LSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFtZX0g
bWFpbkZyYW1lCi0gICAgICovCi0gICAgX2hhbmRsZU1haW5GcmFtZURldGFjaGVkOiBmdW5jdGlv
bihtYWluRnJhbWUpCisgICAgX2hhbmRsZU1haW5GcmFtZURldGFjaGVkOiBmdW5jdGlvbigpCiAg
ICAgewotICAgICAgICAvKioKLSAgICAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VUcmVlRnJhbWV9IGZyYW1lCi0gICAgICAgICAqLwotICAgICAgICBmdW5jdGlvbiByZW1vdmVP
cmlnaW5Gb3JGcmFtZShmcmFtZSkKLSAgICAgICAgewotICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBmcmFtZS5jaGlsZEZyYW1lcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICBy
ZW1vdmVPcmlnaW5Gb3JGcmFtZS5jYWxsKHRoaXMsIGZyYW1lLmNoaWxkRnJhbWVzW2ldKTsKLSAg
ICAgICAgICAgIGlmICghZnJhbWUuaXNNYWluRnJhbWUoKSkKLSAgICAgICAgICAgICAgICB0aGlz
Ll9yZW1vdmVTZWN1cml0eU9yaWdpbihmcmFtZS5zZWN1cml0eU9yaWdpbik7Ci0gICAgICAgIH0K
LSAgICAgICAgcmVtb3ZlT3JpZ2luRm9yRnJhbWUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IucmVz
b3VyY2VUcmVlTW9kZWwubWFpbkZyYW1lKTsKKyAgICAgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW5U
cmFja2VyLl9kZXRhY2hNYWluRnJhbWUodGhpcy5tYWluRnJhbWUpOwogICAgIH0sCiAKICAgICAv
KioKQEAgLTE4NCw3ICsxNTMsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJv
dG90eXBlID0gewogICAgICAgICB2YXIgYWRkZWRPcmlnaW47CiAgICAgICAgIGlmIChmcmFtZSkg
ewogICAgICAgICAgICAgLy8gTmF2aWdhdGlvbiB3aXRoaW4gZXhpc3RpbmcgZnJhbWUuCi0gICAg
ICAgICAgICB0aGlzLl9yZW1vdmVTZWN1cml0eU9yaWdpbihmcmFtZS5zZWN1cml0eU9yaWdpbik7
CisgICAgICAgICAgICB0aGlzLl9zZWN1cml0eU9yaWdpblRyYWNrZXIuX3JlbW92ZVNlY3VyaXR5
T3JpZ2luKGZyYW1lLnNlY3VyaXR5T3JpZ2luKTsKICAgICAgICAgICAgIGZyYW1lLl9uYXZpZ2F0
ZShmcmFtZVBheWxvYWQpOwogICAgICAgICAgICAgYWRkZWRPcmlnaW4gPSBmcmFtZS5zZWN1cml0
eU9yaWdpbjsKICAgICAgICAgfSBlbHNlIHsKQEAgLTE5Miw3ICsxNjEsNyBAQCBXZWJJbnNwZWN0
b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIHBhcmVu
dEZyYW1lID0gdGhpcy5fZnJhbWVzW2ZyYW1lUGF5bG9hZC5wYXJlbnRJZF07CiAgICAgICAgICAg
ICBmcmFtZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWUodGhpcywgcGFyZW50
RnJhbWUsIGZyYW1lUGF5bG9hZCk7CiAgICAgICAgICAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUo
KSAmJiB0aGlzLm1haW5GcmFtZSkgewotICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZU1haW5G
cmFtZURldGFjaGVkKHRoaXMubWFpbkZyYW1lKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9oYW5k
bGVNYWluRnJhbWVEZXRhY2hlZCgpOwogICAgICAgICAgICAgICAgIC8vIERlZmluaXRlbHkgYSBu
YXZpZ2F0aW9uIHRvIHRoZSBuZXcgYmFja2VuZCBwcm9jZXNzLgogICAgICAgICAgICAgICAgIHRo
aXMuX2ZyYW1lRGV0YWNoZWQodGhpcy5tYWluRnJhbWUuaWQpOwogICAgICAgICAgICAgfQpAQCAt
MjA5LDcgKzE3OCw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5NYWluRnJhbWVDcmVhdGVkT3JOYXZpZ2F0
ZWQsIGZyYW1lKTsKICAgICAgICAgfQogICAgICAgICBpZiAoYWRkZWRPcmlnaW4pCi0gICAgICAg
ICAgICB0aGlzLl9hZGRTZWN1cml0eU9yaWdpbihhZGRlZE9yaWdpbik7CisgICAgICAgICAgICB0
aGlzLl9zZWN1cml0eU9yaWdpblRyYWNrZXIuX2FkZFNlY3VyaXR5T3JpZ2luKGFkZGVkT3JpZ2lu
KTsKIAogICAgICAgICAvLyBGaWxsIGZyYW1lIHdpdGggcmV0YWluZWQgcmVzb3VyY2VzICh0aGUg
b25lcyBsb2FkZWQgdXNpbmcgbmV3IGxvYWRlcikuCiAgICAgICAgIHZhciByZXNvdXJjZXMgPSBm
cmFtZS5yZXNvdXJjZXMoKTsKQEAgLTIzMyw3ICsyMDIsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VUcmVlTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIWZyYW1lKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX3JlbW92ZVNlY3VyaXR5T3JpZ2luKGZyYW1lLnNl
Y3VyaXR5T3JpZ2luKTsKKyAgICAgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW5UcmFja2VyLl9yZW1v
dmVTZWN1cml0eU9yaWdpbihmcmFtZS5zZWN1cml0eU9yaWdpbik7CiAgICAgICAgIGlmIChmcmFt
ZS5wYXJlbnRGcmFtZSkKICAgICAgICAgICAgIGZyYW1lLnBhcmVudEZyYW1lLl9yZW1vdmVDaGls
ZEZyYW1lKGZyYW1lKTsKICAgICAgICAgZWxzZQpAQCAtNDE5LDYgKzM4OCwxMzEgQEAgV2ViSW5z
cGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZSA9IHsKIC8qKgogICogQGNvbnN0cnVj
dG9yCiAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbH0gbW9kZWwKKyAq
LworV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLlNlY3VyaXR5T3JpZ2luVHJhY2tlciA9
IGZ1bmN0aW9uKG1vZGVsKQoreworICAgIHRoaXMuX21vZGVsID0gbW9kZWw7CisgICAgdGhpcy5f
c2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50ID0ge307CisgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW5z
QnlJZCA9IHt9OworICAgIHRoaXMuX3VybFRvRE9NRG9tYWlucyA9IHt9OworICAgIHRoaXMuX2xh
c3RPcmlnaW5JZCA9IDA7Cit9CisKK1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5TZWN1
cml0eU9yaWdpblRyYWNrZXIucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSBzZWN1cml0eU9yaWdpbgorICAgICAqLworICAg
IF9hZGRTZWN1cml0eU9yaWdpbjogZnVuY3Rpb24oc2VjdXJpdHlPcmlnaW4pCisgICAgeworICAg
ICAgICB2YXIgc2VjdXJpdHlPcmlnaW5JZCA9IHNlY3VyaXR5T3JpZ2luLmlkKCk7CisgICAgICAg
IGlmICghdGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50W3NlY3VyaXR5T3JpZ2luSWRdKSB7
CisgICAgICAgICAgICB0aGlzLl9zZWN1cml0eU9yaWdpbkZyYW1lQ291bnRbc2VjdXJpdHlPcmln
aW5JZF0gPSAxOworICAgICAgICAgICAgdGhpcy5fbW9kZWwuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLlNlY3VyaXR5T3Jp
Z2luQWRkZWQsIHNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICB0aGlzLl9zZWN1cml0eU9yaWdpbkZyYW1lQ291bnRbc2VjdXJpdHlPcmlnaW5J
ZF0gKz0gMTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
U2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5T3JpZ2luCisgICAgICovCisgICAgX3JlbW92ZVNlY3Vy
aXR5T3JpZ2luOiBmdW5jdGlvbihzZWN1cml0eU9yaWdpbikKKyAgICB7CisgICAgICAgIHZhciBz
ZWN1cml0eU9yaWdpbklkID0gc2VjdXJpdHlPcmlnaW4uaWQoKTsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQodGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50W3NlY3VyaXR5T3JpZ2luSWRdKTsK
KyAgICAgICAgaWYgKHRoaXMuX3NlY3VyaXR5T3JpZ2luRnJhbWVDb3VudFtzZWN1cml0eU9yaWdp
bklkXSA9PT0gMSkgeworICAgICAgICAgICAgdGhpcy5fdW5iaW5kU2VjdXJpdHlPcmlnaW4oc2Vj
dXJpdHlPcmlnaW4pOworICAgICAgICAgICAgdGhpcy5fbW9kZWwuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLlNlY3VyaXR5
T3JpZ2luUmVtb3ZlZCwgc2VjdXJpdHlPcmlnaW4pOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIHRoaXMuX3NlY3VyaXR5T3JpZ2luRnJhbWVDb3VudFtzZWN1cml0eU9y
aWdpbklkXSAtPSAxOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5TZWN1cml0eU9yaWdpbn0gc2VjdXJpdHlPcmlnaW4KKyAgICAgKi8KKyAgICBfdW5iaW5k
U2VjdXJpdHlPcmlnaW46IGZ1bmN0aW9uKHNlY3VyaXR5T3JpZ2luKQorICAgIHsKKyAgICAgICAg
dmFyIHNlY3VyaXR5T3JpZ2luSWQgPSBzZWN1cml0eU9yaWdpbi5pZCgpOworICAgICAgICBkZWxl
dGUgdGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50W3NlY3VyaXR5T3JpZ2luSWRdOworICAg
ICAgICBkZWxldGUgdGhpcy5fc2VjdXJpdHlPcmlnaW5zQnlJZFtzZWN1cml0eU9yaWdpbklkXTsK
KworICAgICAgICB2YXIgdXJsID0gc2VjdXJpdHlPcmlnaW4udXJsKCk7CisgICAgICAgIHZhciBk
b21haW5NYXAgPSB0aGlzLl91cmxUb0RPTURvbWFpbnNbdXJsXTsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoZG9tYWluTWFwKTsKKyAgICAgICAgdmFyIGRvbWFpbiA9IHNlY3VyaXR5T3JpZ2luLmRv
bWFpblNldEluRE9NKCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbWFpbk1hcFtkb21haW5d
KTsKKyAgICAgICAgZGVsZXRlIGRvbWFpbk1hcFtkb21haW5dOworICAgICAgICBpZiAoIU9iamVj
dC5rZXlzKGRvbWFpbk1hcCkubGVuZ3RoKQorICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3VybFRv
RE9NRG9tYWluc1t1cmxdOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1BhZ2VB
Z2VudC5TZWN1cml0eU9yaWdpbn0gcGF5bG9hZAorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rv
ci5TZWN1cml0eU9yaWdpbn0KKyAgICAgKi8KKyAgICBfYmluZFNlY3VyaXR5T3JpZ2luOiBmdW5j
dGlvbihwYXlsb2FkKQorICAgIHsKKyAgICAgICAgdmFyIHVybCA9IHBheWxvYWQudXJsOworICAg
ICAgICB2YXIgZG9tYWluID0gcGF5bG9hZC5kb21haW5TZXRJbkRPTSB8fCAiIjsKKyAgICAgICAg
dmFyIGRvbWFpbk1hcCA9IHRoaXMuX3VybFRvRE9NRG9tYWluc1t1cmxdOworICAgICAgICBpZiAo
IWRvbWFpbk1hcCkgeworICAgICAgICAgICAgZG9tYWluTWFwID0ge307CisgICAgICAgICAgICB0
aGlzLl91cmxUb0RPTURvbWFpbnNbdXJsXSA9IGRvbWFpbk1hcDsKKyAgICAgICAgfQorICAgICAg
ICB2YXIgb3JpZ2luID0gZG9tYWluTWFwW2RvbWFpbl07CisgICAgICAgIGlmICghb3JpZ2luKSB7
CisgICAgICAgICAgICBvcmlnaW4gPSBuZXcgV2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2luKHVy
bCwgZG9tYWluLCBTdHJpbmcoKyt0aGlzLl9sYXN0T3JpZ2luSWQpKTsKKyAgICAgICAgICAgIGRv
bWFpbk1hcFtkb21haW5dID0gb3JpZ2luOworICAgICAgICAgICAgdGhpcy5fc2VjdXJpdHlPcmln
aW5zQnlJZFtvcmlnaW4uaWQoKV0gPSBvcmlnaW47CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IG9yaWdpbiB8fCBudWxsOworICAgIH0sCisKKyAgICBfZGV0YWNoTWFpbkZyYW1lOiBmdW5jdGlv
bihtYWluRnJhbWUpCisgICAgeworICAgICAgICAvKioKKyAgICAgICAgICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9IGZyYW1lCisgICAgICAgICAqLworICAgICAgICBm
dW5jdGlvbiByZW1vdmVPcmlnaW5Gb3JGcmFtZShmcmFtZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmcmFtZS5jaGlsZEZyYW1lcy5sZW5ndGg7ICsraSkKKyAg
ICAgICAgICAgICAgICByZW1vdmVPcmlnaW5Gb3JGcmFtZS5jYWxsKHRoaXMsIGZyYW1lLmNoaWxk
RnJhbWVzW2ldKTsKKyAgICAgICAgICAgIGlmICghZnJhbWUuaXNNYWluRnJhbWUoKSkKKyAgICAg
ICAgICAgICAgICB0aGlzLl9yZW1vdmVTZWN1cml0eU9yaWdpbihmcmFtZS5zZWN1cml0eU9yaWdp
bik7CisgICAgICAgIH0KKyAgICAgICAgcmVtb3ZlT3JpZ2luRm9yRnJhbWUuY2FsbCh0aGlzLCBt
YWluRnJhbWUpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gaWQK
KyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59CisgICAgICovCisg
ICAgX3NlY3VyaXR5T3JpZ2luRm9ySWQ6IGZ1bmN0aW9uKGlkKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX3NlY3VyaXR5T3JpZ2luc0J5SWRbaWRdIHx8IG51bGw7CisgICAgfSwKKworICAg
IC8qKgorICAgICAqIEByZXR1cm4ge0FycmF5LjxXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4+
fQorICAgICAqLworICAgIF9zZWN1cml0eU9yaWdpbnM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gaWQKKyAgICAgICAgICogQHJldHVy
biB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufQorICAgICAgICAgKi8KKyAgICAgICAgZnVu
Y3Rpb24gY29udmVydGVyKGlkKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5f
c2VjdXJpdHlPcmlnaW5zQnlJZFtpZF07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIE9iamVj
dC5rZXlzKHRoaXMuX3NlY3VyaXR5T3JpZ2luRnJhbWVDb3VudCkubWFwKGNvbnZlcnRlci5iaW5k
KHRoaXMpKTsKKyAgICB9Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbH0gbW9kZWwKICAqIEBwYXJhbSB7P1dlYkluc3Bl
Y3Rvci5SZXNvdXJjZVRyZWVGcmFtZX0gcGFyZW50RnJhbWUKICAqIEBwYXJhbSB7UGFnZUFnZW50
LkZyYW1lfSBwYXlsb2FkCiAgKi8KQEAgLTQzMSw3ICs1MjUsNyBAQCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VUcmVlRnJhbWUgPSBmdW5jdGlvbihtb2RlbCwgcGFyZW50RnJhbWUsIHBheWxvYWQpCiAg
ICAgdGhpcy5fbG9hZGVySWQgPSBwYXlsb2FkLmxvYWRlcklkOwogICAgIHRoaXMuX25hbWUgPSBw
YXlsb2FkLm5hbWU7CiAgICAgdGhpcy5fdXJsID0gcGF5bG9hZC51cmw7Ci0gICAgdGhpcy5fc2Vj
dXJpdHlPcmlnaW4gPSBwYXlsb2FkLnNlY3VyaXR5T3JpZ2luOworICAgIHRoaXMuX3NlY3VyaXR5
T3JpZ2luID0gbW9kZWwuX3NlY3VyaXR5T3JpZ2luVHJhY2tlci5fYmluZFNlY3VyaXR5T3JpZ2lu
KHBheWxvYWQuc2VjdXJpdHlPcmlnaW4pOwogICAgIHRoaXMuX21pbWVUeXBlID0gcGF5bG9hZC5t
aW1lVHlwZTsKIAogICAgIC8qKgpAQCAtNDc0LDcgKzU2OCw3IEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZVRyZWVGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBy
ZXR1cm4ge3N0cmluZ30KKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmln
aW59CiAgICAgICovCiAgICAgZ2V0IHNlY3VyaXR5T3JpZ2luKCkKICAgICB7CkBAIC01MjEsNyAr
NjE1LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fbG9hZGVySWQgPSBmcmFtZVBheWxvYWQubG9hZGVySWQ7CiAgICAgICAgIHRo
aXMuX25hbWUgPSBmcmFtZVBheWxvYWQubmFtZTsKICAgICAgICAgdGhpcy5fdXJsID0gZnJhbWVQ
YXlsb2FkLnVybDsKLSAgICAgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW4gPSBmcmFtZVBheWxvYWQu
c2VjdXJpdHlPcmlnaW47CisgICAgICAgIHRoaXMuX3NlY3VyaXR5T3JpZ2luID0gdGhpcy5fbW9k
ZWwuX3NlY3VyaXR5T3JpZ2luVHJhY2tlci5fYmluZFNlY3VyaXR5T3JpZ2luKGZyYW1lUGF5bG9h
ZC5zZWN1cml0eU9yaWdpbik7CiAgICAgICAgIHRoaXMuX21pbWVUeXBlID0gZnJhbWVQYXlsb2Fk
Lm1pbWVUeXBlOwogCiAgICAgICAgIHZhciBtYWluUmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZXNN
YXBbdGhpcy5fdXJsXTsKQEAgLTY0Miw2ICs3MzYsNzUgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNl
VHJlZUZyYW1lLnByb3RvdHlwZSA9IHsKIAogLyoqCiAgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJh
bSB7c3RyaW5nfSB1cmwKKyAqIEBwYXJhbSB7c3RyaW5nfHVuZGVmaW5lZH0gZG9tYWluU2V0SW5E
T00KKyAqIEBwYXJhbSB7c3RyaW5nfSBpZAorICovCitXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmln
aW4gPSBmdW5jdGlvbih1cmwsIGRvbWFpblNldEluRE9NLCBpZCkKK3sKKyAgICB0aGlzLl91cmwg
PSB1cmw7CisgICAgdGhpcy5fZG9tYWluU2V0SW5ET00gPSBkb21haW5TZXRJbkRPTTsKKyAgICB0
aGlzLl9pZCA9IGlkOworfQorCitXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4ucHJvdG90eXBl
ID0geworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBpZDog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2lkOworICAgIH0sCisKKyAg
ICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgdXJsOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fdXJsOworICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgZG9tYWluU2V0SW5ET006IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9kb21haW5TZXRJbkRPTSB8fCAi
IjsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJp
dHlPcmlnaW59IG90aGVyCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBl
cXVhbDogZnVuY3Rpb24ob3RoZXIpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fdXJsID09
PSBvdGhlci5fdXJsICYmIHRoaXMuX2RvbWFpblNldEluRE9NID09IG90aGVyLl9kb21haW5TZXRJ
bkRPTTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAq
LworICAgIHVpVGl0bGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICBpZiAodGhpcy51cmwoKSA9
PT0gImZpbGU6Ly8iKQorICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxv
Y2FsIEZpbGVzIik7CisKKyAgICAgIHZhciBkb21haW4gPSB0aGlzLmRvbWFpblNldEluRE9NKCk7
CisgICAgICB2YXIgc3VmZml4ID0gZG9tYWluID8gU3RyaW5nLnNwcmludGYoIiAoJXMpIiwgZG9t
YWluKSA6ICIiOworICAgICAgcmV0dXJuIHRoaXMudXJsKCkgKyBzdWZmaXg7CisgICAgfSwKKwor
ICAgIC8qKgorICAgICAqIEByZXR1cm4ge1BhZ2VBZ2VudC5TZWN1cml0eU9yaWdpbn0KKyAgICAg
Ki8KKyAgICB0b1Byb3RvY29sOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4geyB1
cmw6IHRoaXMuX3VybCwgZG9tYWluU2V0SW5ET006IHRoaXMuX2RvbWFpblNldEluRE9NIHx8IHVu
ZGVmaW5lZCB9OworICAgIH0KK30KKworLyoqCisgKiBAY29uc3RydWN0b3IKICAqIEBpbXBsZW1l
bnRzIHtQYWdlQWdlbnQuRGlzcGF0Y2hlcn0KICAqLwogV2ViSW5zcGVjdG9yLlBhZ2VEaXNwYXRj
aGVyID0gZnVuY3Rpb24ocmVzb3VyY2VUcmVlTW9kZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwppbmRleCA4ODA2MjY5Y2M4
OWQyYzE1NWJhZjNhY2U2YWEwNDQyYmY4MDQ4YzY4Li45ZTk3NDUzMzliMTJlYjE1MDhlNTE0OWRj
ZWQ4NmJmOWM2OGEwMWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKQEAgLTE2MTAsNyArMTYxMCw3IEBAIFdlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAqLwogV2ViSW5z
cGVjdG9yLklEQkRhdGFiYXNlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihzdG9yYWdlUGFuZWwsIG1v
ZGVsLCBkYXRhYmFzZUlkKQogewotICAgIFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVt
ZW50LmNhbGwodGhpcywgc3RvcmFnZVBhbmVsLCBudWxsLCBkYXRhYmFzZUlkLm5hbWUgKyAiIC0g
IiArIGRhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW4sIFsiaW5kZXhlZC1kYi1zdG9yYWdlLXRyZWUt
aXRlbSJdKTsKKyAgICBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5jYWxsKHRo
aXMsIHN0b3JhZ2VQYW5lbCwgbnVsbCwgZGF0YWJhc2VJZC5uYW1lICsgIiAtICIgKyBkYXRhYmFz
ZUlkLnNlY3VyaXR5T3JpZ2luLnVpVGl0bGUoKSwgWyJpbmRleGVkLWRiLXN0b3JhZ2UtdHJlZS1p
dGVtIl0pOwogICAgIHRoaXMuX21vZGVsID0gbW9kZWw7CiAgICAgdGhpcy5fZGF0YWJhc2VJZCA9
IGRhdGFiYXNlSWQ7CiAgICAgdGhpcy5faWRiT2JqZWN0U3RvcmVUcmVlRWxlbWVudHMgPSB7fTsK
QEAgLTE2MTksNyArMTYxOSw4IEBAIFdlYkluc3BlY3Rvci5JREJEYXRhYmFzZVRyZWVFbGVtZW50
ID0gZnVuY3Rpb24oc3RvcmFnZVBhbmVsLCBtb2RlbCwgZGF0YWJhc2VJZCkKIFdlYkluc3BlY3Rv
ci5JREJEYXRhYmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICBnZXQgaXRlbVVSTCgp
CiAgICAgewotICAgICAgICByZXR1cm4gImluZGV4ZWREQjovLyIgKyB0aGlzLl9kYXRhYmFzZUlk
LnNlY3VyaXR5T3JpZ2luICsgIi8iICsgdGhpcy5fZGF0YWJhc2VJZC5uYW1lOworICAgICAgICB2
YXIgb3JpZ2luID0gdGhpcy5fZGF0YWJhc2VJZC5zZWN1cml0eU9yaWdpbjsKKyAgICAgICAgcmV0
dXJuICJpbmRleGVkREI6Ly8iICsgb3JpZ2luLnVybCgpICsgIi8sIiArIG9yaWdpbi5kb21haW5T
ZXRJbkRPTSgpICsgIi8iICsgdGhpcy5fZGF0YWJhc2VJZC5uYW1lOwogICAgIH0sCiAKICAgICBv
bmF0dGFjaDogZnVuY3Rpb24oKQpAQCAtMTcyNiw3ICsxNzI3LDcgQEAgV2ViSW5zcGVjdG9yLklE
Qk9iamVjdFN0b3JlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihzdG9yYWdlUGFuZWwsIG1vZGVsLCBk
YXRhYmFzZUkKIFdlYkluc3BlY3Rvci5JREJPYmplY3RTdG9yZVRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICBnZXQgaXRlbVVSTCgpCiAgICAgewotICAgICAgICByZXR1cm4gImluZGV4ZWRE
QjovLyIgKyB0aGlzLl9kYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luICsgIi8iICsgdGhpcy5fZGF0
YWJhc2VJZC5uYW1lICsgIi8iICsgdGhpcy5fb2JqZWN0U3RvcmUubmFtZTsKKyAgICAgICAgcmV0
dXJuICJpbmRleGVkREI6Ly8iICsgdGhpcy5fZGF0YWJhc2VJZC5zZWN1cml0eU9yaWdpbi51cmwo
KSArICIvIiArIHRoaXMuX2RhdGFiYXNlSWQubmFtZSArICIvIiArIHRoaXMuX29iamVjdFN0b3Jl
Lm5hbWU7CiAgICAgfSwKIAogICAgLyoqCkBAIC0xODMxLDcgKzE4MzIsNyBAQCBXZWJJbnNwZWN0
b3IuSURCSW5kZXhUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHN0b3JhZ2VQYW5lbCwgbW9kZWwsIGRh
dGFiYXNlSWQsIG9iagogV2ViSW5zcGVjdG9yLklEQkluZGV4VHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgIGdldCBpdGVtVVJMKCkKICAgICB7Ci0gICAgICAgIHJldHVybiAiaW5kZXhlZERC
Oi8vIiArIHRoaXMuX2RhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW4gKyAiLyIgKyB0aGlzLl9kYXRh
YmFzZUlkLm5hbWUgKyAiLyIgKyB0aGlzLl9vYmplY3RTdG9yZS5uYW1lICsgIi8iICsgdGhpcy5f
aW5kZXgubmFtZTsKKyAgICAgICAgcmV0dXJuICJpbmRleGVkREI6Ly8iICsgdGhpcy5fZGF0YWJh
c2VJZC5zZWN1cml0eU9yaWdpbi51cmwoKSArICIvIiArIHRoaXMuX2RhdGFiYXNlSWQubmFtZSAr
ICIvIiArIHRoaXMuX29iamVjdFN0b3JlLm5hbWUgKyAiLyIgKyB0aGlzLl9pbmRleC5uYW1lOwog
ICAgIH0sCiAKICAgICAvKioKQEAgLTE4ODMsMTQgKzE4ODQsMTUgQEAgV2ViSW5zcGVjdG9yLklE
QkluZGV4VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICovCiBXZWJJbnNwZWN0b3IuRE9NU3Rv
cmFnZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oc3RvcmFnZVBhbmVsLCBkb21TdG9yYWdlLCBjbGFz
c05hbWUpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQuY2FsbCh0
aGlzLCBzdG9yYWdlUGFuZWwsIG51bGwsIGRvbVN0b3JhZ2Uuc2VjdXJpdHlPcmlnaW4gPyBkb21T
dG9yYWdlLnNlY3VyaXR5T3JpZ2luIDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMb2NhbCBGaWxl
cyIpLCBbImRvbXN0b3JhZ2Utc3RvcmFnZS10cmVlLWl0ZW0iLCBjbGFzc05hbWVdKTsKKyAgICBX
ZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5jYWxsKHRoaXMsIHN0b3JhZ2VQYW5l
bCwgbnVsbCwgZG9tU3RvcmFnZS5zZWN1cml0eU9yaWdpbi51aVRpdGxlKCksIFsiZG9tc3RvcmFn
ZS1zdG9yYWdlLXRyZWUtaXRlbSIsIGNsYXNzTmFtZV0pOwogICAgIHRoaXMuX2RvbVN0b3JhZ2Ug
PSBkb21TdG9yYWdlOwogfQogCiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZVRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKICAgICBnZXQgaXRlbVVSTCgpCiAgICAgewotICAgICAgICByZXR1cm4gInN0
b3JhZ2U6Ly8iICsgdGhpcy5fZG9tU3RvcmFnZS5zZWN1cml0eU9yaWdpbiArICIvIiArICh0aGlz
Ll9kb21TdG9yYWdlLmlzTG9jYWxTdG9yYWdlID8gImxvY2FsIiA6ICJzZXNzaW9uIik7CisgICAg
ICAgIHZhciBvcmlnaW4gPSB0aGlzLl9kb21TdG9yYWdlLnNlY3VyaXR5T3JpZ2luOworICAgICAg
ICByZXR1cm4gInN0b3JhZ2U6Ly8iICsgb3JpZ2luLnVybCgpICsgIi8sIiArIG9yaWdpbi5kb21h
aW5TZXRJbkRPTSgpICsgIi8iICsgKHRoaXMuX2RvbVN0b3JhZ2UuaXNMb2NhbFN0b3JhZ2UgPyAi
bG9jYWwiIDogInNlc3Npb24iKTsKICAgICB9LAogCiAgICAgb25zZWxlY3Q6IGZ1bmN0aW9uKHNl
bGVjdGVkQnlVc2VyKQpAQCAtMjAyMCw3ICsyMDIyLDcgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0
aW9uQ2FjaGVGcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAqLwogV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1UcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHN0b3JhZ2VQYW5lbCwgZmlsZVN5c3Rl
bSkKIHsKLSAgICB2YXIgZGlzcGxheU5hbWUgPSBmaWxlU3lzdGVtLnR5cGUgKyAiIC0gIiArIGZp
bGVTeXN0ZW0ub3JpZ2luOworICAgIHZhciBkaXNwbGF5TmFtZSA9IGZpbGVTeXN0ZW0udHlwZSAr
ICIgLSAiICsgZmlsZVN5c3RlbS5vcmlnaW4udWlUaXRsZSgpOwogICAgIFdlYkluc3BlY3Rvci5C
YXNlU3RvcmFnZVRyZWVFbGVtZW50LmNhbGwodGhpcywgc3RvcmFnZVBhbmVsLCBudWxsLCBkaXNw
bGF5TmFtZSwgWyJmaWxlLXN5c3RlbS1zdG9yYWdlLXRyZWUtaXRlbSJdKTsKICAgICB0aGlzLl9m
aWxlU3lzdGVtID0gZmlsZVN5c3RlbTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUnVudGltZU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9SdW50aW1lTW9kZWwuanMKaW5kZXggYmVmOTE3NzQ4ZDk5MjE4NzQwOWVl
M2E1MmUxMWQyZDU0M2Q0NjVkZC4uNTQ4MjY0NDUzM2IxNzc1ZDlkNmNiNjJmY2U0ZGQyN2MyM2Mx
MmVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SdW50
aW1lTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SdW50
aW1lTW9kZWwuanMKQEAgLTc0LDcgKzc0LDcgQEAgV2ViSW5zcGVjdG9yLlJ1bnRpbWVNb2RlbC5w
cm90b3R5cGUgPSB7CiAKICAgICAvKioKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNv
dXJjZVRyZWVGcmFtZX0gZnJhbWUKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlPcmln
aW4KKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gc2VjdXJpdHlP
cmlnaW4KICAgICAgKi8KICAgICBjb250ZXh0QnlGcmFtZUFuZFNlY3VyaXR5T3JpZ2luOiBmdW5j
dGlvbihmcmFtZSwgc2VjdXJpdHlPcmlnaW4pCiAgICAgewpAQCAtNDE0LDEzICs0MTQsMTUgQEAg
V2ViSW5zcGVjdG9yLkZyYW1lRXhlY3V0aW9uQ29udGV4dExpc3QucHJvdG90eXBlID0KICAgICB9
LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCisgICAg
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5T3JpZ2luCiAg
ICAgICovCiAgICAgY29udGV4dEJ5U2VjdXJpdHlPcmlnaW46IGZ1bmN0aW9uKHNlY3VyaXR5T3Jp
Z2luKQogICAgIHsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9leGVjdXRpb25D
b250ZXh0cy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLl9l
eGVjdXRpb25Db250ZXh0c1tpXTsKLSAgICAgICAgICAgIGlmICghY29udGV4dC5pc01haW5Xb3Js
ZENvbnRleHQgJiYgY29udGV4dC5uYW1lID09PSBzZWN1cml0eU9yaWdpbikKKyAgICAgICAgICAg
IC8vIEZJWE1FOiBjb250ZXh0Lm5hbWUgc2hvdWxkIGJlY29tZSBjb250ZXh0LnNlY3VyaXR5T3Jp
Z2luIGluIHRoZSBwcm90b2NvbCwgc28gdGhhdAorICAgICAgICAgICAgLy8gdGhlIGRvbWFpblNl
dEluRE9NIGZpZWxkIHNoYWxsIHBhcnRpY2lwYXRlIGluIHRoZSBvcmlnaW4gbWF0Y2hpbmcuCisg
ICAgICAgICAgICBpZiAoIWNvbnRleHQuaXNNYWluV29ybGRDb250ZXh0ICYmIGNvbnRleHQubmFt
ZSA9PT0gc2VjdXJpdHlPcmlnaW4udXJsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRl
eHQ7IAogICAgICAgICB9CiAgICAgfSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1MTc5MmJlOWU4NzNhMWYzZjczMTk4YTY2
Nzc4ZTQzMDc3ZDYwZTc2Li5mODQ5NTIyYzBiN2E5ZTM3MDAzZWEzMWRkNmFiY2E1N2NjN2Q3NjUy
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTMtMDItMjggIEFsZXhhbmRlciBQYXZsb3YgIDxh
cGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbUHJvdG9jb2xd
IFR1cm4gU2VjdXJpdHlPcmlnaW4gaW50byBhbiBvYmplY3QgY29udGFpbmluZyAiZG9tYWluU2V0
SW5ET00iCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTA5NjAKKworICAgICAgICBGb2xsb3cgdGhlIEFQSSBhbmQgbWV0aG9kIHNpZ25hdHVyZSBjaGFu
Z2VzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9kb20tc3RvcmFnZS1vcGVuLmh0bWw6CisgICAg
ICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9kZWxldGUtZW50cnkuaHRtbDoK
KyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5
c3RlbS1yb290Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRi
L2RhdGFiYXNlLWRhdGEuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRl
eGVkZGIvZGF0YWJhc2UtbmFtZXMuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbmRleGVkZGIvZGF0YWJhc2Utc3RydWN0dXJlLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0
cy9pbnNwZWN0b3IvcmVzb3VyY2UtdHJlZS9yZXNvdXJjZS10cmVlLWV2ZW50cy5odG1sOgorCiAy
MDEzLTAyLTI4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFk
ZCBhIGZhaWxpbmcgdGVzdCBleHBlY3RhdGlvbiB0byBuYXZpZ2F0aW9uLXNob3VsZC1hYm9ydC5o
dG1sIG9uIE1hYyBXZWJLaXQxLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3ItZW5hYmxlZC9kb20tc3RvcmFnZS1vcGVuLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2RvbS1zdG9yYWdlLW9wZW4uaHRtbAppbmRleCAxMzAy
MDA3MjRlNWFhYWU0NGZhMjYyNzYyNzAxNzhhZDI0ZjZiNmQwLi4zNWFjNjgzZTliMGUzYjcxMjdl
NWM1YmQ1ZDFlMzExMDFkNDI0MTljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci1lbmFibGVkL2RvbS1zdG9yYWdlLW9wZW4uaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2RvbS1zdG9yYWdlLW9wZW4uaHRtbApAQCAt
MjIsNyArMjIsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICB7CiAgICAgICAgIHZhciBzdG9yYWdl
cyA9IFdlYkluc3BlY3Rvci5kb21TdG9yYWdlTW9kZWwuc3RvcmFnZXMoKTsKICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBzdG9yYWdlcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNlY3VyaXR5T3JpZ2luOiAiICsgc3RvcmFnZXNbaV0uc2Vj
dXJpdHlPcmlnaW4pOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNlY3Vy
aXR5T3JpZ2luOiAiICsgc3RvcmFnZXNbaV0uc2VjdXJpdHlPcmlnaW4udWlUaXRsZSgpKTsKICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJJc0xvY2FsU3RvcmFnZTogIiArIHN0
b3JhZ2VzW2ldLmlzTG9jYWxTdG9yYWdlKTsKICAgICAgICAgfQogICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNvbXBsZXRlVGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZmlsZXN5c3RlbS9kZWxldGUtZW50cnkuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGVsZXRlLWVudHJ5Lmh0bWwKaW5kZXggYWQ4YjQz
NjA4NWZjNTQyNjIxYjY4ODM1ZWUxZTI2NmZjNWIxOWMxOC4uZTRlZTViMWVjZmZmMGJkMzM0MzQy
MTkwMmIwY2E3ZTk5ZjIwYTg1NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZmlsZXN5c3RlbS9kZWxldGUtZW50cnkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RlbGV0ZS1lbnRyeS5odG1sCkBAIC02Myw3
ICs2Myw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJlcnJvckNvZGU6
ICIgKyBlcnJvckNvZGUpOwotICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0Rmls
ZVN5c3RlbVJvb3QoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIsICJ0ZW1wb3JhcnkiLCB0ZXN0U3Rl
cC5zaGlmdCgpKTsKKyAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVTeXN0
ZW1Sb290KG5ldyBXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4oImh0dHA6Ly8xMjcuMC4wLjE6
ODAwMCIsIHVuZGVmaW5lZCwgIjEiKSwgInRlbXBvcmFyeSIsIHRlc3RTdGVwLnNoaWZ0KCkpOwog
ICAgICAgICB9LAogCiAgICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRy
eSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0
ZW0vcmVxdWVzdC1maWxlc3lzdGVtLXJvb3QuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlc3lzdGVtLXJvb3QuaHRtbAppbmRleCA4
ZjVjZWZhOTFkZDgxNTFjNzczNzcwMDNmZDllNDc5YjQzNmViOTczLi5jZjA2NDQ0MmZjNWVhZGUz
Nzk4NWE1NGE5YzE5NmFjNjlmMjM2N2YyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5c3RlbS1yb290Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZp
bGVzeXN0ZW0tcm9vdC5odG1sCkBAIC05LDYgKzksMTIgQEAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHJ1blRlc3QpOwogZnVuY3Rpb24gdGVzdCgpCiB7CiAg
ICAgdmFyIGZpbGVTeXN0ZW1Nb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVs
OworICAgIHZhciBsYXN0T3JpZ2luSWQgPSAwOworCisgICAgZnVuY3Rpb24gY3JlYXRlU2VjdXJp
dHlPcmlnaW4odXJsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuU2Vj
dXJpdHlPcmlnaW4odXJsLCB1bmRlZmluZWQsIFN0cmluZyAoKytsYXN0T3JpZ2luSWQpKTsKKyAg
ICB9CiAKICAgICB2YXIgdGVzdFN0ZXAgPSBbCiAgICAgICAgIGZ1bmN0aW9uKCkKQEAgLTIwLDE5
ICsyNiwxOSBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICBmdW5jdGlvbigpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KCJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAiLCAidGVtcG9yYXJ5IiwgdGVzdFN0ZXAuc2hpZnQoKSk7Cisg
ICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlU3lzdGVtUm9vdChjcmVhdGVT
ZWN1cml0eU9yaWdpbigiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiksICJ0ZW1wb3JhcnkiLCB0ZXN0
U3RlcC5zaGlmdCgpKTsKICAgICAgICAgfSwKIAogICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUs
IGJhY2tlbmRSb290RW50cnkpCiAgICAgICAgIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZHVtcEZpbGVTeXN0ZW1Sb290UmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIGJhY2tlbmRSb290RW50
cnkpOwotICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RmlsZVN5c3RlbVJvb3Qo
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIsICJmaXp6YnV6eiIsIHRlc3RTdGVwLnNoaWZ0KCkpOwor
ICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RmlsZVN5c3RlbVJvb3QoY3JlYXRl
U2VjdXJpdHlPcmlnaW4oImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIpLCAiZml6emJ1enoiLCB0ZXN0
U3RlcC5zaGlmdCgpKTsKICAgICAgICAgfSwKIAogICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUs
IGJhY2tlbmRSb290RW50cnkpCiAgICAgICAgIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZHVtcEZpbGVTeXN0ZW1Sb290UmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIGJhY2tlbmRSb290RW50
cnkpOwotICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RmlsZVN5c3RlbVJvb3Qo
Imh0dHA6Ly9leGFtcGxlLmNvbSIsICJ0ZW1wb3JhcnkiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAg
ICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KGNyZWF0ZVNl
Y3VyaXR5T3JpZ2luKCJodHRwOi8vZXhhbXBsZS5jb20iKSwgInRlbXBvcmFyeSIsIHRlc3RTdGVw
LnNoaWZ0KCkpOwogICAgICAgICB9LAogCiAgICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgYmFj
a2VuZFJvb3RFbnRyeSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1kYXRhLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS5odG1sCmluZGV4IDEzNjNmMmU5NDNh
MWUzNDZhMDlmZmE1Mjc3M2M2ZGRmNGEzNjVkM2QuLjBjNzM1ZGI5NThmZmQwOWRhY2E0N2ExODg4
NjJiOGM1YTA1MTJlMTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1kYXRhLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLWRhdGEuaHRtbApAQCAtOCw3ICs4LDcg
QEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgdmFyIElEQktleVJhbmdlID0gd2luZG93LklEQktleVJh
bmdlIHx8IHdpbmRvdy53ZWJraXRJREJLZXlSYW5nZTsKICAgICB2YXIgaW5kZXhlZERCTW9kZWwg
PSBuZXcgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsKCk7CiAgICAgdmFyIG1haW5GcmFtZUlk
ID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLm1haW5GcmFtZS5pZDsKLSAgICB2YXIg
c2VjdXJpdHlPcmlnaW4gPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAgICB2YXIgc2VjdXJp
dHlPcmlnaW4gPSBuZXcgV2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2luKCJodHRwOi8vMTI3LjAu
MC4xOjgwMDAiLCB1bmRlZmluZWQsICIxIik7CiAgICAgdmFyIGRhdGFiYXNlTmFtZSA9ICJ0ZXN0
RGF0YWJhc2UiOwogICAgIHZhciBvYmplY3RTdG9yZU5hbWUgPSAidGVzdE9iamVjdFN0b3JlIjsK
ICAgICB2YXIgaW5kZXhOYW1lID0gInRlc3RJbmRleE5hbWUiOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLW5hbWVzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtbmFt
ZXMuaHRtbAppbmRleCAwMTQzZjczODQyZWJlYWU5ODFkZDBjMjc5ODBiMTFjZTNhNDdlYWRkLi5k
ODI1OWU5MjRhMmUwZGVjYWZmZGExZjI1M2M0YzM4NzFhZWE2YTYzIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtbmFtZXMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJh
c2UtbmFtZXMuaHRtbApAQCAtMTMsNyArMTMsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkR1bXBpbmcgZGF0YWJhc2UgbmFtZXM6Iik7CiAgICAg
ICAgIHZhciBzZWN1cml0eU9yaWdpbnMgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwu
c2VjdXJpdHlPcmlnaW5zKCk7CiAgICAgICAgIHZhciBzZWN1cml0eU9yaWdpbiA9IHNlY3VyaXR5
T3JpZ2luc1swXTsKLSAgICAgICAgdmFyIG5hbWVzID0gaW5kZXhlZERCTW9kZWwuX2RhdGFiYXNl
TmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luXTsKKyAgICAgICAgdmFyIG5hbWVz
ID0gaW5kZXhlZERCTW9kZWwuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5
T3JpZ2luLmlkKCldOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsg
KytpKQogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAgICAiICsgbmFtZXNb
aV0pOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2Utc3RydWN0
dXJlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0
YWJhc2Utc3RydWN0dXJlLmh0bWwKaW5kZXggZDgyM2JlZmY0ZDY2YjIzNjZhMjY5YWZkOGQ1NzJl
MzY1NjRjY2MyZS4uYTc4YjkxNjIzY2VlZWZlMTUxNThhZjNkZGE2NWQ0YjEzMTljMTUzYSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFi
YXNlLXN0cnVjdHVyZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2luZGV4ZWRkYi9kYXRhYmFzZS1zdHJ1Y3R1cmUuaHRtbApAQCAtOCw3ICs4LDcgQEAgZnVuY3Rp
b24gdGVzdCgpCiAgICAgdmFyIGluZGV4ZWREQk1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5JbmRl
eGVkREJNb2RlbCgpOwogICAgIHZhciBtYWluRnJhbWVJZCA9IFdlYkluc3BlY3Rvci5yZXNvdXJj
ZVRyZWVNb2RlbC5tYWluRnJhbWUuaWQ7CiAgICAgdmFyIGRhdGFiYXNlTmFtZSA9ICJ0ZXN0RGF0
YWJhc2UxIjsKLSAgICB2YXIgc2VjdXJpdHlPcmlnaW4gPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAw
IjsKKyAgICB2YXIgc2VjdXJpdHlPcmlnaW4gPSBuZXcgV2ViSW5zcGVjdG9yLlNlY3VyaXR5T3Jp
Z2luKCJodHRwOi8vMTI3LjAuMC4xOjgwMDAiLCB1bmRlZmluZWQsICIxIik7CiAgICAgdmFyIGRh
dGFiYXNlSWQgPSBuZXcgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLkRhdGFiYXNlSWQoc2Vj
dXJpdHlPcmlnaW4sIGRhdGFiYXNlTmFtZSk7CiAKICAgICBmdW5jdGlvbiBkdW1wRGF0YWJhc2Uo
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2Ut
dHJlZS9yZXNvdXJjZS10cmVlLWV2ZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvcmVzb3VyY2UtdHJlZS9yZXNvdXJjZS10cmVlLWV2ZW50cy5odG1sCmluZGV4IGVl
MWVjOWQ3NWI1ZGQ3NWZjYzYwNzNmZjE0Mzk4ZDdmMDg5NzhkYmYuLjY4YTk0YzE2ZmUzNTczNmU1
MTk1YWJiNmZiM2ZiMzM0Mzc2NjFkZWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3Jlc291cmNlLXRyZWUvcmVzb3VyY2UtdHJlZS1ldmVudHMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS10cmVlL3Jlc291cmNl
LXRyZWUtZXZlbnRzLmh0bWwKQEAgLTMwLDcgKzMwLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAg
ICAgICAgICBjYXNlICJTZWN1cml0eU9yaWdpbkFkZGVkIjoKICAgICAgICAgICAgIGNhc2UgIlNl
Y3VyaXR5T3JpZ2luUmVtb3ZlZCI6CiAgICAgICAgICAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2lu
ID0gZXZlbnQuZGF0YTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
ICAgICIgKyBldmVudE5hbWUgKyAiIDogIiArIHNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiICAgICIgKyBldmVudE5hbWUgKyAiIDogIiAr
IHNlY3VyaXR5T3JpZ2luLnVpVGl0bGUoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgfQpAQCAtNTksNyArNTksNyBAQCBmdW5jdGlv
biB0ZXN0KCkKICAgICAgICAgZnJhbWVQYXlsb2FkLmxvYWRlcklkID0gImxvYWRlci0iICsgaWQ7
CiAgICAgICAgIGZyYW1lUGF5bG9hZC5uYW1lID0gImZyYW1lLSIgKyBpZDsKICAgICAgICAgZnJh
bWVQYXlsb2FkLnVybCA9ICJodHRwOi8vZnJhbWUvIiArIChuYW1lIHx8IGlkKSArICIuaHRtbCI7
Ci0gICAgICAgIGZyYW1lUGF5bG9hZC5zZWN1cml0eU9yaWdpbiA9IGZyYW1lUGF5bG9hZC51cmw7
CisgICAgICAgIGZyYW1lUGF5bG9hZC5zZWN1cml0eU9yaWdpbiA9IHsgdXJsOiBmcmFtZVBheWxv
YWQudXJsIH07CiAgICAgICAgIGZyYW1lUGF5bG9hZC5taW1lVHlwZSA9ICJ0ZXh0L2h0bWwiOwog
ICAgICAgICByZXR1cm4gZnJhbWVQYXlsb2FkOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190926</attachid>
            <date>2013-03-01 03:50:15 -0800</date>
            <delta_ts>2013-03-01 04:27:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110960-20130301154626.patch</filename>
            <type>text/plain</type>
            <size>77554</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTIzYWM0NTU4ZTI1YzIz
MzE2NjM1ZjJmOTZlNWNmMDgyZTlkNGVjZi4uYTMxMTkxNjEwOTJmZjhiNTE0M2Y5YmY2MDJmNWIy
MTkxOWY5NDFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxMy0wMy0wMSAgQWxl
eGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFtQcm90b2NvbF0gVHVybiBTZWN1cml0eU9yaWdpbiBpbnRvIGFuIG9iamVjdCBjb250
YWluaW5nICJkb21haW5TZXRJbkRPTSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMDk2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoZSByZWxhdGVkIGJhY2tlbmQgY29kZSBoYXMgYmVlbiBjaGFuZ2Vk
IHRvIGhhbmRsZSBTZWN1cml0eU9yaWdpbiBhcyBhbiBJbnNwZWN0b3JPYmplY3QgcmF0aGVyIHRo
YW4gYSBTdHJpbmcuCisgICAgICAgIFdoZXJlIGFwcGxpY2FibGUsIHRoZSBVSSBjb2RlIGhhcyBi
ZWVuIGNoYW5nZWQgdG8gdXNlIHNlY3VyaXR5T3JpZ2luLnVpVGl0bGUoKSBhcyBpdHMgdmlzdWFs
IHJlcHJlc2VudGF0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hh
bmdlLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOiBJbnRyb2R1Y2UgUGFn
ZS5TZWN1cml0eU9yaWdpbi4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcDogRm9sbG93IHRoZSBwcm90b2NvbCBjaGFuZ2UuCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2VJZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmZpbmRTdG9yYWdlQXJlYSk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHA6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0RmlsZVN5c3RlbVJvb3Qp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2VOYW1l
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERh
dGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1
ZXN0RGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjppbnNwZWN0b3JPYmplY3RUb1NlY3Vy
aXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2VjdXJp
dHlPcmlnaW5Ub0luc3BlY3Rvck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL0RPTVN0b3JhZ2UuanM6IERpdHRvLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3Jh
Z2Uuc3RvcmFnZUlkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlLnByb3RvdHlw
ZS5pZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZS5wcm90b3R5cGUuZ2V0SXRl
bXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UucHJvdG90eXBlLnNldEl0ZW0p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UucHJvdG90eXBlLnJlbW92ZUl0ZW0p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5wcm90b3R5cGUuX3NlY3Vy
aXR5T3JpZ2luQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5w
cm90b3R5cGUuX3NlY3VyaXR5T3JpZ2luUmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NU3RvcmFnZU1vZGVsLnByb3RvdHlwZS5fc3RvcmFnZUtleSk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9FeHRlbnNpb25BdWRpdENhdGVnb3J5LmpzOiBEaXR0by4KKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qczogRGl0dG8uCisgICAgICAg
IChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fb25tZXNzYWdlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLmV2YWx1YXRlKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qczogRGl0dG8u
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZS5fcmVzZXQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUuX3NlY3Vy
aXR5T3JpZ2luQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5w
cm90b3R5cGUuX3NlY3VyaXR5T3JpZ2luUmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZS5fYWRkT3JpZ2luKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLl9yZW1vdmVPcmlnaW4pOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUuX3JlcXVlc3RGaWxlU3lzdGVt
Um9vdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZS5f
ZmlsZVN5c3RlbVJvb3RSZWNlaXZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bU1vZGVsLnByb3RvdHlwZS5fcmVtb3ZlRmlsZVN5c3RlbSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW0ucHJvdG90eXBlLmdldCBuYW1lKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQk1vZGVsLmpzOiBEaXR0by4KKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUuX3Jlc2V0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUucmVmcmVzaERhdGFiYXNl
TmFtZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZS5f
c2VjdXJpdHlPcmlnaW5BZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9k
ZWwucHJvdG90eXBlLl9zZWN1cml0eU9yaWdpblJlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZS5fYWRkT3JpZ2luKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUuX3JlbW92ZU9yaWdpbik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlLl91cGRhdGVPcmlnaW5EYXRh
YmFzZU5hbWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5
cGUuX2xvYWREYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJN
b2RlbC5wcm90b3R5cGUuX2xvYWREYXRhYmFzZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5k
ZXhlZERCTW9kZWwucHJvdG90eXBlLik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERC
TW9kZWwucHJvdG90eXBlLl9yZXF1ZXN0RGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5k
ZXhlZERCTW9kZWwuRGF0YWJhc2VJZC5wcm90b3R5cGUuZXF1YWxzKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQlZpZXdzLmpzOiBEaXR0by4KKyAgICAgICAgKFdlYklu
c3BlY3Rvci5JREJEYXRhYmFzZVZpZXcucHJvdG90eXBlLl9yZWZyZXNoRGF0YWJhc2UpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwuanM6IERpdHRvLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUuX2FkZEZyYW1lKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUuc2VjdXJpdHlPcmlnaW5G
b3JJZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBl
LnNlY3VyaXR5T3JpZ2lucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9k
ZWwucHJvdG90eXBlLl9oYW5kbGVNYWluRnJhbWVEZXRhY2hlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLl9mcmFtZU5hdmlnYXRlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLl9mcmFtZURldGFj
aGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5TZWN1cml0eU9y
aWdpblRyYWNrZXIpOiBGYWN0b3JlZCBvdXQgU2VjdXJpdHlPcmlnaW4gdHJhY2tpbmcuCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuU2VjdXJpdHlPcmlnaW5UcmFja2Vy
LnByb3RvdHlwZS5fYWRkU2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
c291cmNlVHJlZU1vZGVsLlNlY3VyaXR5T3JpZ2luVHJhY2tlci5wcm90b3R5cGUuX3JlbW92ZVNl
Y3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5T
ZWN1cml0eU9yaWdpblRyYWNrZXIucHJvdG90eXBlLl91bmJpbmRTZWN1cml0eU9yaWdpbik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuU2VjdXJpdHlPcmlnaW5UcmFj
a2VyLnByb3RvdHlwZS5fYmluZFNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVRyZWVNb2RlbC5TZWN1cml0eU9yaWdpblRyYWNrZXIucHJvdG90eXBlLl9kZXRh
Y2hNYWluRnJhbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLlNl
Y3VyaXR5T3JpZ2luVHJhY2tlci5wcm90b3R5cGUuX3NlY3VyaXR5T3JpZ2luRm9ySWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLlNlY3VyaXR5T3JpZ2luVHJhY2tl
ci5wcm90b3R5cGUuX3NlY3VyaXR5T3JpZ2lucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2VUcmVlRnJhbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1l
LnByb3RvdHlwZS5fbmF2aWdhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNlY3VyaXR5T3Jp
Z2luKTogVGhlIGZyb250LWVuZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgUGFnZS5TZWN1cml0eU9y
aWdpbiB0eXBlLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2luLnByb3RvdHlw
ZS5pZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4ucHJvdG90eXBlLnVy
bCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4ucHJvdG90eXBlLmRvbWFp
blNldEluRE9NKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbi5wcm90b3R5
cGUuZXF1YWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2luLnByb3RvdHlw
ZS51aVRpdGxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbi5wcm90b3R5
cGUudG9Qcm90b2NvbCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQ
YW5lbC5qczogRm9sbG93IHRoZSBwcm90b2NvbCBjaGFuZ2UuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuSURCRGF0YWJhc2VUcmVlRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSURCRGF0
YWJhc2VUcmVlRWxlbWVudC5wcm90b3R5cGUuZ2V0IGl0ZW1VUkwpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLklEQk9iamVjdFN0b3JlVHJlZUVsZW1lbnQucHJvdG90eXBlLmdldCBpdGVtVVJMKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5JREJJbmRleFRyZWVFbGVtZW50LnByb3RvdHlwZS5nZXQg
aXRlbVVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZVRyZWVFbGVtZW50KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlLmdl
dCBpdGVtVVJMKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUnVudGltZU1vZGVsLmpzOiBEaXR0by4K
KyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZUV4ZWN1dGlvbkNvbnRleHRMaXN0LnByb3RvdHlw
ZS5jb250ZXh0QnlTZWN1cml0eU9yaWdpbik6CisKIDIwMTMtMDItMjggIEFsZXhhbmRlciBQYXZs
b3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBTZWxl
Y3RvcidzIHJhdyBzdGFydCBwb3NpdGlvbiBpbiBpdHMgbGluZSBpcyBjb25zaWRlcmVkIHRvIGJl
IDAgd2hlbiBjb21wdXRpbmcgVUlMb2NhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5qc29uCmluZGV4IDMzN2Y5ZWVhMzdjMGNkNDdkZmQ4MDIzMWJjZTVmZWEzN2MxNzVhZDQu
LjEzMDkyYjQ3YjlkYjE0Njc0ZjcxNzkyYjc5ZWZlZmQ2YjQxNDZhNzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTEwMiw2ICsxMDIsMTUgQEAKICAgICAgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVzb3VyY2UgdHlwZSBhcyBpdCB3YXMgcGVyY2VpdmVk
IGJ5IHRoZSByZW5kZXJpbmcgZW5naW5lLiIKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgImlkIjogIlNlY3VyaXR5T3JpZ2luIiwKKyAgICAgICAgICAgICAg
ICAidHlwZSI6ICJvYmplY3QiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEZXNj
cmlwdG9yIG9mIHRoZSBTZWN1cml0eU9yaWdpbiBvYmplY3QuIiwKKyAgICAgICAgICAgICAgICAi
cHJvcGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlw
ZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiQXNzb2NpYXRlZCBTZWN1cml0eU9yaWdpbiBV
UkwuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRvbWFpblNldEluRE9NIiwg
InR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlNlY3Vy
aXR5T3JpZ2luIGRvbWFpbiwgaWYgb25lIGhhcyBiZWVuIHNldCBpbiBET00uIiB9CisgICAgICAg
ICAgICAgICAgXQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAiaWQiOiAiRnJhbWUiLAogICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkluZm9ybWF0aW9uIGFib3V0IHRoZSBGcmFtZSBv
biB0aGUgcGFnZS4iLApAQCAtMTExLDcgKzEyMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAibG9hZGVySWQiLCAiJHJlZiI6ICJOZXR3b3JrLkxvYWRlcklkIiwgImRlc2NyaXB0
aW9uIjogIklkZW50aWZpZXIgb2YgdGhlIGxvYWRlciBhc3NvY2lhdGVkIHdpdGggdGhpcyBmcmFt
ZS4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZSIsICJ0eXBlIjogInN0
cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJGcmFtZSdzIG5hbWUgYXMg
c3BlY2lmaWVkIGluIHRoZSB0YWcuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InVybCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJGcmFtZSBkb2N1bWVudCdz
IFVSTC4iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2VjdXJpdHlPcmlnaW4i
LCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiRnJhbWUgZG9jdW1lbnQncyBzZWN1
cml0eSBvcmlnaW4uIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNlY3VyaXR5
T3JpZ2luIiwgIiRyZWYiOiAiU2VjdXJpdHlPcmlnaW4iLCAiZGVzY3JpcHRpb24iOiAiRnJhbWUg
ZG9jdW1lbnQncyBzZWN1cml0eSBvcmlnaW4uIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogIm1pbWVUeXBlIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkZyYW1l
IGRvY3VtZW50J3MgbWltZVR5cGUgYXMgZGV0ZXJtaW5lZCBieSB0aGUgYnJvd3Nlci4iIH0KICAg
ICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlCkBAIC01OTEs
NyArNjAwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ2YWx1ZSIsICJ0eXBl
IjogImFueSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJSZW1vdGUgb2JqZWN0
IHZhbHVlIChpbiBjYXNlIG9mIHByaW1pdGl2ZSB2YWx1ZXMgb3IgSlNPTiB2YWx1ZXMgaWYgaXQg
d2FzIHJlcXVlc3RlZCkuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRlc2Ny
aXB0aW9uIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9u
IjogIlN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0LiIgfSwKICAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJvYmplY3RJZCIsICIkcmVmIjogIlJlbW90ZU9iamVjdElkIiwg
Im9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBvYmplY3QgaWRlbnRpZmll
ciAoZm9yIG5vbi1wcmltaXRpdmUgdmFsdWVzKS4iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAicHJldmlldyIsICIkcmVmIjogIk9iamVjdFByZXZpZXciLCAib3B0aW9uYWwiOiB0
cnVlLCAiZGVzY3JpcHRpb24iOiAiUHJldmlldyBjb250YWluc2luZyBhYmJyZXZpYXRlZCBwcm9w
ZXJ0eSB2YWx1ZXMuIiwgImhpZGRlbiI6IHRydWUgfQorICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInByZXZpZXciLCAiJHJlZiI6ICJPYmplY3RQcmV2aWV3IiwgIm9wdGlvbmFsIjogdHJ1
ZSwgImRlc2NyaXB0aW9uIjogIlByZXZpZXcgY29udGFpbmluZyBhYmJyZXZpYXRlZCBwcm9wZXJ0
eSB2YWx1ZXMuIiwgImhpZGRlbiI6IHRydWUgfQogICAgICAgICAgICAgICAgIF0KICAgICAgICAg
ICAgIH0sCiAgICAgICAgICAgICB7CkBAIC0xMzcyLDcgKzEzODEsNyBAQAogICAgICAgICAgICAg
ICAgICJuYW1lIjogInJlcXVlc3REYXRhYmFzZU5hbWVzIiwKICAgICAgICAgICAgICAgICAiYXN5
bmMiOiB0cnVlLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInNlY3VyaXR5T3JpZ2luIiwgInR5cGUiOiAic3RyaW5nIiwgImRl
c2NyaXB0aW9uIjogIlNlY3VyaXR5IG9yaWdpbi4iIH0KKyAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJzZWN1cml0eU9yaWdpbiIsICIkcmVmIjogIlBhZ2UuU2VjdXJpdHlPcmlnaW4iLCAi
ZGVzY3JpcHRpb24iOiAiU2VjdXJpdHkgb3JpZ2luLiIgfQogICAgICAgICAgICAgICAgIF0sCiAg
ICAgICAgICAgICAgICAgInJldHVybnMiOiBbCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiZGF0YWJhc2VOYW1lcyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAidHlwZSI6ICJz
dHJpbmciIH0sICJkZXNjcmlwdGlvbiI6ICJEYXRhYmFzZSBuYW1lcyBmb3Igb3JpZ2luLiIgfQpA
QCAtMTM4Myw3ICsxMzkyLDcgQEAKICAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXF1ZXN0RGF0
YWJhc2UiLAogICAgICAgICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAgICAgICAg
InBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2VjdXJpdHlP
cmlnaW4iLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiU2VjdXJpdHkgb3JpZ2lu
LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzZWN1cml0eU9yaWdpbiIsICIk
cmVmIjogIlBhZ2UuU2VjdXJpdHlPcmlnaW4iLCAiZGVzY3JpcHRpb24iOiAiU2VjdXJpdHkgb3Jp
Z2luLiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkYXRhYmFzZU5hbWUiLCAi
dHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiRGF0YWJhc2UgbmFtZS4iIH0KICAgICAg
ICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJyZXR1cm5zIjogWwpAQCAtMTM5NSw3ICsx
NDA0LDcgQEAKICAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXF1ZXN0RGF0YSIsCiAgICAgICAg
ICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsK
LSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzZWN1cml0eU9yaWdpbiIsICJ0eXBlIjog
InN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJTZWN1cml0eSBvcmlnaW4uIiB9LAorICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInNlY3VyaXR5T3JpZ2luIiwgIiRyZWYiOiAiUGFnZS5TZWN1
cml0eU9yaWdpbiIsICJkZXNjcmlwdGlvbiI6ICJTZWN1cml0eSBvcmlnaW4uIiB9LAogICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImRhdGFiYXNlTmFtZSIsICJ0eXBlIjogInN0cmluZyIs
ICJkZXNjcmlwdGlvbiI6ICJEYXRhYmFzZSBuYW1lLiIgfSwKICAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJvYmplY3RTdG9yZU5hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRp
b24iOiAiT2JqZWN0IHN0b3JlIG5hbWUuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImluZGV4TmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJJbmRleCBu
YW1lLCBlbXB0eSBzdHJpbmcgZm9yIG9iamVjdCBzdG9yZSBkYXRhIHJlcXVlc3RzLiIgfSwKQEAg
LTE0MjIsNyArMTQzMSw3IEBACiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRPTSBT
dG9yYWdlIGlkZW50aWZpZXIuIiwKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZSwKICAg
ICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJzZWN1cml0eU9yaWdpbiIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJT
ZWN1cml0eSBvcmlnaW4gZm9yIHRoZSBzdG9yYWdlLiIgfSwKKyAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJzZWN1cml0eU9yaWdpbiIsICIkcmVmIjogIlBhZ2UuU2VjdXJpdHlPcmlnaW4i
LCAiZGVzY3JpcHRpb24iOiAiU2VjdXJpdHkgb3JpZ2luIGZvciB0aGUgc3RvcmFnZS4iIH0sCiAg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNMb2NhbFN0b3JhZ2UiLCAidHlwZSI6ICJi
b29sZWFuIiwgImRlc2NyaXB0aW9uIjogIldoZXRoZXIgdGhlIHN0b3JhZ2UgaXMgbG9jYWwgc3Rv
cmFnZSAobm90IHNlc3Npb24gc3RvcmFnZSkuIiB9CiAgICAgICAgICAgICAgICAgXQogICAgICAg
ICAgICAgfSwKQEAgLTE2MjgsNyArMTYzNyw3IEBACiAgICAgICAgICAgICAgICAgIm5hbWUiOiAi
cmVxdWVzdEZpbGVTeXN0ZW1Sb290IiwKICAgICAgICAgICAgICAgICAiYXN5bmMiOiB0cnVlLAog
ICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogIm9yaWdpbiIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJTZWN1cml0
eSBvcmlnaW4gb2YgcmVxdWVzdGluZyBGaWxlU3lzdGVtLiBPbmUgb2YgZnJhbWVzIGluIGN1cnJl
bnQgcGFnZSBuZWVkcyB0byBoYXZlIHRoaXMgc2VjdXJpdHkgb3JpZ2luLiIgfSwKKyAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJvcmlnaW4iLCAiJHJlZiI6ICJQYWdlLlNlY3VyaXR5T3Jp
Z2luIiwgImRlc2NyaXB0aW9uIjogIlNlY3VyaXR5IG9yaWdpbiBvZiByZXF1ZXN0aW5nIEZpbGVT
eXN0ZW0uIE9uZSBvZiBmcmFtZXMgaW4gY3VycmVudCBwYWdlIG5lZWRzIHRvIGhhdmUgdGhpcyBz
ZWN1cml0eSBvcmlnaW4uIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInR5cGUi
LCAidHlwZSI6ICJzdHJpbmciLCAiZW51bSI6IFsidGVtcG9yYXJ5IiwgInBlcnNpc3RlbnQiXSwg
ImRlc2NyaXB0aW9uIjogIkZpbGVTeXN0ZW0gdHlwZSBvZiByZXF1ZXN0aW5nIEZpbGVTeXN0ZW0u
IiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dC5jcHAKaW5kZXggYjNlMGUxNmNlZTI4MjBjYzYwNzgxMzM0YjBmZjkwOTg3YWU4MGFkNi4uN2Jh
Y2NhYmU2NjRjZWJjZjQxMWViNTg2Yjg5YjM5YzUwMjc0NGFlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKQEAgLTE5
Myw3ICsxOTMsNyBAQCBTdHJpbmcgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpzdG9yYWdlSWQo
U3RvcmFnZSogc3RvcmFnZSkKIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTVN0b3JhZ2U6OlN0
b3JhZ2VJZD4gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpzdG9yYWdlSWQoU2VjdXJpdHlPcmln
aW4qIHNlY3VyaXR5T3JpZ2luLCBib29sIGlzTG9jYWxTdG9yYWdlKQogewogICAgIHJldHVybiBU
eXBlQnVpbGRlcjo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkOjpjcmVhdGUoKQotICAgICAgICAuc2V0
U2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4tPnRvUmF3U3RyaW5nKCkpCisgICAgICAgIC5z
ZXRTZWN1cml0eU9yaWdpbihJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlY3VyaXR5T3JpZ2luVG9JbnNw
ZWN0b3JPYmplY3Qoc2VjdXJpdHlPcmlnaW4pKQogICAgICAgICAuc2V0SXNMb2NhbFN0b3JhZ2Uo
aXNMb2NhbFN0b3JhZ2UpLnJlbGVhc2UoKTsKIH0KIApAQCAtMjE2LDkgKzIxNiw5IEBAIHZvaWQg
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChjb25z
dCBTdHJpbmcmIGtleSwgY29uCiAKIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudDo6ZmluZFN0b3JhZ2VBcmVhKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwgRnJhbWUqJiB0YXJnZXRG
cmFtZSkKIHsKLSAgICBTdHJpbmcgc2VjdXJpdHlPcmlnaW47CiAgICAgYm9vbCBpc0xvY2FsU3Rv
cmFnZSA9IGZhbHNlOwotICAgIGJvb2wgc3VjY2VzcyA9IHN0b3JhZ2VJZC0+Z2V0U3RyaW5nKCJz
ZWN1cml0eU9yaWdpbiIsICZzZWN1cml0eU9yaWdpbik7CisgICAgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gc2VjdXJpdHlPcmlnaW5PYmplY3QgPSBzdG9yYWdlSWQtPmdldE9iamVjdCgic2VjdXJp
dHlPcmlnaW4iKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBzZWN1cml0eU9yaWdpbk9iamVjdCA/IHRy
dWUgOiBmYWxzZTsKICAgICBpZiAoc3VjY2VzcykKICAgICAgICAgc3VjY2VzcyA9IHN0b3JhZ2VJ
ZC0+Z2V0Qm9vbGVhbigiaXNMb2NhbFN0b3JhZ2UiLCAmaXNMb2NhbFN0b3JhZ2UpOwogICAgIGlm
ICghc3VjY2VzcykgewpAQCAtMjI3LDkgKzIyNyw5IEBAIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+
IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZmluZFN0b3JhZ2VBcmVhKEVycm9yU3RyaW5nKiBl
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZUFn
ZW50LT5maW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pOworICAgIEZy
YW1lKiBmcmFtZSA9IG1fcGFnZUFnZW50LT5maW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4oZXJy
b3JTdHJpbmcsIHNlY3VyaXR5T3JpZ2luT2JqZWN0LmdldCgpKTsKICAgICBpZiAoIWZyYW1lKSB7
Ci0gICAgICAgIGlmIChlcnJvclN0cmluZykKKyAgICAgICAgaWYgKGVycm9yU3RyaW5nICYmIGVy
cm9yU3RyaW5nLT5pc0VtcHR5KCkpCiAgICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSAiRnJhbWUg
bm90IGZvdW5kIGZvciB0aGUgZ2l2ZW4gc2VjdXJpdHkgb3JpZ2luIjsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50LmNwcAppbmRleCA5YjgwNzdkZjFjNjg0MWU5MmFmODEwZDcxYzNiMzJi
YTYxMWZjYzNiLi5jNjZjYTY4NTYxN2Q3YzYzODQzODI0ZWNjMDJkZmM4M2E4MDRhZDVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50LmNwcApAQCAtNjMxLDEyICs2MzEsMTcgQEAgdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oRmlsZVN5
c3RlbUFnZW50U3RhdGU6OmZpbGVTeXN0ZW1BZ2VudEVuYWJsZWQsIG1fZW5hYmxlZCk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0RmlsZVN5c3RlbVJvb3QoRXJy
b3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiB0eXBl
LCBQYXNzUmVmUHRyPFJlcXVlc3RGaWxlU3lzdGVtUm9vdENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJh
Y2spCit2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVxdWVzdEZpbGVTeXN0ZW1Sb290
KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIG9yaWdp
bk9iamVjdCwgY29uc3QgU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPFJlcXVlc3RGaWxlU3lzdGVt
Um9vdENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCiB7CiAgICAgaWYgKCFhc3NlcnRFbmFibGVk
KGVycm9yKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGFzc2VydFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGb3JP
cmlnaW4oZXJyb3IsIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpbikuZ2V0
KCkpOworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBJbnNwZWN0
b3JQYWdlQWdlbnQ6Omluc3BlY3Rvck9iamVjdFRvU2VjdXJpdHlPcmlnaW4ob3JpZ2luT2JqZWN0
LmdldCgpKTsKKyAgICBpZiAoIXNlY3VyaXR5T3JpZ2luKSB7CisgICAgICAgICplcnJvciA9ICJJ
bnZhbGlkIHNlY3VyaXR5IG9yaWdpbiI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGFzc2VydFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRGb3JPcmlnaW4oZXJyb3IsIHNlY3VyaXR5T3JpZ2luLmdldCgpKTsK
ICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5o
CmluZGV4IGJlYjJjOTk1NzM3N2ExMjlmNzM3YmM1MGM5YTJmMDMwZTMyM2RkYjkuLjcwNTUyYjRh
YTY4NThkOTBmMjdmMjkxOWNiMGY1ODdkZWRiZDkxYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgKQEAgLTUzLDcgKzUzLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopIE9WRVJSSURFOwogCi0g
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGaWxlU3lzdGVtUm9vdChFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcsIFBhc3NSZWZQdHI8UmVx
dWVzdEZpbGVTeXN0ZW1Sb290Q2FsbGJhY2s+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVxdWVzdEZpbGVTeXN0ZW1Sb290KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mIG9yaWdpbiwgY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nLCBQYXNzUmVmUHRyPFJl
cXVlc3RGaWxlU3lzdGVtUm9vdENhbGxiYWNrPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3REaXJlY3RvcnlDb250ZW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmws
IFBhc3NSZWZQdHI8UmVxdWVzdERpcmVjdG9yeUNvbnRlbnRDYWxsYmFjaz4pIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0TWV0YWRhdGEoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIHVybCwgUGFzc1JlZlB0cjxSZXF1ZXN0TWV0YWRhdGFDYWxsYmFjaz4pIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RmlsZUNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIHVybCwgYm9vbCByZWFkQXNUZXh0LCBjb25zdCBpbnQqIHN0YXJ0LCBjb25zdCBpbnQq
IGVuZCwgY29uc3QgU3RyaW5nKiBjaGFyc2V0LCBQYXNzUmVmUHRyPFJlcXVlc3RGaWxlQ29udGVu
dENhbGxiYWNrPikgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCA1N2M2NzIxYjEyYWE1YWIzOTNlOTc3
ZDYzNTlkYjhlODY1NDllZThiLi43MzljOTgxZDFhNGE2ZDA4YmIxNjE0Mjc3MTJkNzBkMDVlYTdm
ZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5jcHAKQEAgLTkyLDkgKzkyLDkgQEAgbmFtZXNwYWNlIHsKIGNsYXNzIEdldERh
dGFiYXNlTmFtZXNDYWxsYmFjayA6IHB1YmxpYyBFdmVudExpc3RlbmVyIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShHZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2spOwogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEdldERhdGFiYXNlTmFtZXNDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQ
dHI8UmVxdWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrLCBjb25zdCBT
dHJpbmcmIHNlY3VyaXR5T3JpZ2luKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdldERhdGFiYXNl
TmFtZXNDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8UmVxdWVzdERhdGFiYXNlTmFtZXNDYWxs
YmFjaz4gcmVxdWVzdENhbGxiYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBHZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2socmVxdWVzdENhbGxiYWNrLCBzZWN1cml0eU9yaWdp
bikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdldERhdGFiYXNlTmFtZXNDYWxsYmFj
ayhyZXF1ZXN0Q2FsbGJhY2spKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5HZXREYXRhYmFzZU5h
bWVzQ2FsbGJhY2soKSB7IH0KQEAgLTEzMywxMiArMTMzLDEwIEBAIHB1YmxpYzoKICAgICB9CiAK
IHByaXZhdGU6Ci0gICAgR2V0RGF0YWJhc2VOYW1lc0NhbGxiYWNrKFBhc3NSZWZQdHI8UmVxdWVz
dERhdGFiYXNlTmFtZXNDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrLCBjb25zdCBTdHJpbmcmIHNl
Y3VyaXR5T3JpZ2luKQorICAgIEdldERhdGFiYXNlTmFtZXNDYWxsYmFjayhQYXNzUmVmUHRyPFJl
cXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKICAgICAgICAgOiBF
dmVudExpc3RlbmVyKEV2ZW50TGlzdGVuZXI6OkNQUEV2ZW50TGlzdGVuZXJUeXBlKQotICAgICAg
ICAsIG1fcmVxdWVzdENhbGxiYWNrKHJlcXVlc3RDYWxsYmFjaykKLSAgICAgICAgLCBtX3NlY3Vy
aXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKSB7IH0KKyAgICAgICAgLCBtX3JlcXVlc3RDYWxsYmFj
ayhyZXF1ZXN0Q2FsbGJhY2spIHsgfQogICAgIFJlZlB0cjxSZXF1ZXN0RGF0YWJhc2VOYW1lc0Nh
bGxiYWNrPiBtX3JlcXVlc3RDYWxsYmFjazsKLSAgICBTdHJpbmcgbV9zZWN1cml0eU9yaWdpbjsK
IH07CiAKIGNsYXNzIEV4ZWN1dGFibGVXaXRoRGF0YWJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxF
eGVjdXRhYmxlV2l0aERhdGFiYXNlPiB7CkBAIC02MTEsOSArNjA5LDkgQEAgc3RhdGljIElEQkZh
Y3RvcnkqIGFzc2VydElEQkZhY3RvcnkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBEb2N1bWVu
dCogZG9jdW1lbnQKICAgICByZXR1cm4gaWRiRmFjdG9yeTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJ
bmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGFiYXNlTmFtZXMoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRh
YmFzZU5hbWVzQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKK3ZvaWQgSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQ6OnJlcXVlc3REYXRhYmFzZU5hbWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHNlY3VyaXR5T3JpZ2luLCBQYXNzUmVmUHRy
PFJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKIHsKLSAgICBG
cmFtZSogZnJhbWUgPSBtX3BhZ2VBZ2VudC0+ZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKHNl
Y3VyaXR5T3JpZ2luKTsKKyAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2VBZ2VudC0+ZmluZEZyYW1l
V2l0aFNlY3VyaXR5T3JpZ2luKGVycm9yU3RyaW5nLCBzZWN1cml0eU9yaWdpbi5nZXQoKSk7CiAg
ICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gYXNzZXJ0RG9jdW1lbnQoZXJyb3JTdHJpbmcsIGZyYW1l
KTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm47CkBAIC02MzQsMTIgKzYzMiwx
MiBAQCB2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2VOYW1lcyhF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbgogICAgICAgICByZXF1ZXN0Q2FsbGJhY2stPnNl
bmRGYWlsdXJlKCJDb3VsZCBub3Qgb2J0YWluIGRhdGFiYXNlIG5hbWVzLiIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIGlkYlJlcXVlc3QtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLnN1Y2Nlc3NFdmVudCwgR2V0RGF0YWJhc2VOYW1lc0NhbGxiYWNrOjpjcmVhdGUocmVxdWVz
dENhbGxiYWNrLCBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9SYXdTdHJpbmcoKSksIGZh
bHNlKTsKKyAgICBpZGJSZXF1ZXN0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zdWNj
ZXNzRXZlbnQsIEdldERhdGFiYXNlTmFtZXNDYWxsYmFjazo6Y3JlYXRlKHJlcXVlc3RDYWxsYmFj
ayksIGZhbHNlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERh
dGFiYXNlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9y
aWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFi
YXNlQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKK3ZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQ6OnJlcXVlc3REYXRhYmFzZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+JiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZU5hbWUsIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFj
aykKIHsKLSAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2VBZ2VudC0+ZmluZEZyYW1lV2l0aFNlY3Vy
aXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKKyAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2VBZ2Vu
dC0+ZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKGVycm9yU3RyaW5nLCBzZWN1cml0eU9yaWdp
bi5nZXQoKSk7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gYXNzZXJ0RG9jdW1lbnQoZXJyb3JT
dHJpbmcsIGZyYW1lKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm47CkBAIC02
NTgsOSArNjU2LDkgQEAgdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGFi
YXNlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3QKICAgICBkYXRhYmFzZUxvYWRl
ci0+c3RhcnQoaWRiRmFjdG9yeSwgZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIGRhdGFiYXNl
TmFtZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBj
b25zdCBTdHJpbmcmIGluZGV4TmFtZSwgaW50IHNraXBDb3VudCwgaW50IHBhZ2VTaXplLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Pioga2V5UmFuZ2UsIFBhc3NSZWZQdHI8UmVxdWVzdERh
dGFDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQordm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dDo6cmVxdWVzdERhdGEoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1l
LCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUs
IGludCBza2lwQ291bnQsIGludCBwYWdlU2l6ZSwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4qIGtleVJhbmdlLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhQ2FsbGJhY2s+IHJlcXVlc3RDYWxs
YmFjaykKIHsKLSAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2VBZ2VudC0+ZmluZEZyYW1lV2l0aFNl
Y3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKKyAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2VB
Z2VudC0+ZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKGVycm9yU3RyaW5nLCBzZWN1cml0eU9y
aWdpbi5nZXQoKSk7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gYXNzZXJ0RG9jdW1lbnQoZXJy
b3JTdHJpbmcsIGZyYW1lKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5o
CmluZGV4IDY5YTA5NjFhYjFiMWZhOGQ1MjE5MGQ1N2Y0MjhmMjU1MDdkNmZjY2UuLjlmMjlmZTQy
MjE2MjdhYThkNmYwYjdmNGNkYmFhYmE1NmU3ZDI3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCkBAIC01OCw5ICs1OCw5IEBA
IHB1YmxpYzoKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgogICAgIHZpcnR1YWwg
dm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJv
clN0cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YWJhc2VOYW1lcyhFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIFBhc3NSZWZQdHI8UmVxdWVzdERh
dGFiYXNlTmFtZXNDYWxsYmFjaz4pOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YWJhc2Uo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlTmFtZSwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VDYWxsYmFjaz4pOwotICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2Vj
dXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIG9i
amVjdFN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIGludCBza2lwQ291bnQsIGlu
dCBwYWdlU2l6ZSwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGtleVJhbmdlLCBQYXNz
UmVmUHRyPFJlcXVlc3REYXRhQ2FsbGJhY2s+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERh
dGFiYXNlTmFtZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYg
c2VjdXJpdHlPcmlnaW4sIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjaz4p
OworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YWJhc2UoRXJyb3JTdHJpbmcqLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VOYW1lLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZUNhbGxiYWNrPik7CisgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3REYXRhKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29u
c3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBpbnQg
c2tpcENvdW50LCBpbnQgcGFnZVNpemUsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBr
ZXlSYW5nZSwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YUNhbGxiYWNrPik7CiAKIHByaXZhdGU6CiAg
ICAgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3Rv
ckNvbXBvc2l0ZVN0YXRlKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSW5zcGVjdG9yUGFnZUFn
ZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCmluZGV4IGYyMzRiYmU5Mjg5ZmY3YTEyMjk5MWQwODI3ODk4YTQxNDFiNjYwYTIuLmFjNGU0
NWFmNjZiMTY0YTM5OWU1YmQwZGQ1MzQ4MmQxNjAyMzYwMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0xMDMsNiArMTAzLDM1IEBA
IHN0YXRpYyBjb25zdCBjaGFyIHRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkW10gPSAidG91Y2hF
dmVudEVtdWxhdGlvbkVuYWJsZWQiOwogc3RhdGljIGNvbnN0IGNoYXIgcGFnZUFnZW50RW11bGF0
ZWRNZWRpYVtdID0gInBhZ2VBZ2VudEVtdWxhdGVkTWVkaWEiOwogfQogCitQYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBJbnNwZWN0b3JQYWdlQWdlbnQ6Omluc3BlY3Rvck9iamVjdFRvU2VjdXJp
dHlPcmlnaW4oSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QpCit7CisgICAgU3RyaW5nIHVybDsKKyAg
ICBpZiAoIW9iamVjdC0+Z2V0U3RyaW5nKCJ1cmwiLCAmdXJsKSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBTdHJpbmcgZG9tYWluU2V0SW5ET007CisgICAgUmVmUHRyPEluc3BlY3RvclZhbHVl
PiB2YWx1ZSA9IG9iamVjdC0+Z2V0KCJkb21haW5TZXRJbkRPTSIpOworICAgIGlmICh2YWx1ZSkg
eworICAgICAgICBpZiAoIXZhbHVlLT5hc1N0cmluZygmZG9tYWluU2V0SW5ET00pKQorICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiByZXN1
bHQgPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh1cmwpOworICAgIGlmICghZG9t
YWluU2V0SW5ET00uaXNOdWxsKCkpCisgICAgICAgIHJlc3VsdC0+c2V0RG9tYWluRnJvbURPTShk
b21haW5TZXRJbkRPTSk7CisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7Cit9CisKK1Bhc3NS
ZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlY3VyaXR5T3JpZ2luPiBJbnNwZWN0b3JQYWdlQWdl
bnQ6OnNlY3VyaXR5T3JpZ2luVG9JbnNwZWN0b3JPYmplY3QoU2VjdXJpdHlPcmlnaW4qIG9yaWdp
bikKK3sKKworICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6U2VjdXJpdHlPcmlnaW4+IHJl
c3VsdCA9IFR5cGVCdWlsZGVyOjpQYWdlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKCkKKyAgICAg
ICAgLnNldFVybChvcmlnaW4tPnRvUmF3U3RyaW5nKCkpOworICAgIGlmIChvcmlnaW4tPmRvbWFp
bldhc1NldEluRE9NKCkpCisgICAgICAgIHJlc3VsdC0+c2V0RG9tYWluU2V0SW5ET00ob3JpZ2lu
LT5kb21haW4oKSk7CisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7Cit9CisKIHN0YXRpYyBi
b29sIGRlY29kZUJ1ZmZlcihjb25zdCBjaGFyKiBidWZmZXIsIHVuc2lnbmVkIHNpemUsIGNvbnN0
IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgU3RyaW5nKiByZXN1bHQpCiB7CiAgICAgaWYgKGJ1
ZmZlcikgewpAQCAtOTMxLDE5ICs5NjAsMjUgQEAgU3RyaW5nIEluc3BlY3RvclBhZ2VBZ2VudDo6
bG9hZGVySWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICByZXR1cm4gaWRlbnRpZmllcjsK
IH0KIAotRnJhbWUqIEluc3BlY3RvclBhZ2VBZ2VudDo6ZmluZEZyYW1lV2l0aFNlY3VyaXR5T3Jp
Z2luKGNvbnN0IFN0cmluZyYgb3JpZ2luUmF3U3RyaW5nKQorRnJhbWUqIEluc3BlY3RvclBhZ2VB
Z2VudDo6ZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgSW5zcGVjdG9yT2JqZWN0KiBzZWN1cml0eU9yaWdpbk9iamVjdCkKIHsKLSAgICBSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luUHRyID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZUZyb21TdHJpbmcob3JpZ2luUmF3U3RyaW5nKTsKLSAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJp
dHlPcmlnaW4gPSBzZWN1cml0eU9yaWdpblB0ci5nZXQoKTsKKyAgICBSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gaW5zcGVjdG9yT2JqZWN0VG9TZWN1cml0eU9yaWdpbihz
ZWN1cml0eU9yaWdpbk9iamVjdCk7CisgICAgaWYgKCFzZWN1cml0eU9yaWdpbikgeworICAgICAg
ICBpZiAoZXJyb3JTdHJpbmcpCisgICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW52YWxpZCBz
ZWN1cml0eSBvcmlnaW4iOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBib29sIGlz
TG9jYWwgPSBzZWN1cml0eU9yaWdpbi0+aXNMb2NhbCgpOwogICAgIGZvciAoRnJhbWUqIGZyYW1l
ID0gbV9wYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJh
dmVyc2VOZXh0KCkpIHsKICAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBkb2N1bWVudE9y
aWdpbiA9IGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwogICAgICAgICAvLyBF
bXVsYXRlIHRoZSAhZW5mb3JjZUZpbGVQYXRoU2VwYXJhdGlvbiBmb3Igc2VjdXJpdHkgb3JpZ2lu
cy4KICAgICAgICAgaWYgKGlzTG9jYWwgJiYgZG9jdW1lbnRPcmlnaW4tPmlzTG9jYWwoKSkKICAg
ICAgICAgICAgIHJldHVybiBmcmFtZTsKLSAgICAgICAgaWYgKGRvY3VtZW50T3JpZ2luLT5lcXVh
bChzZWN1cml0eU9yaWdpbikpCisgICAgICAgIGlmIChkb2N1bWVudE9yaWdpbi0+ZXF1YWwoc2Vj
dXJpdHlPcmlnaW4uZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJuIGZyYW1lOwogICAgIH0KKwog
ICAgIHJldHVybiAwOwogfQogCkBAIC0xMDc5LDcgKzExMTQsNyBAQCBQYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpQYWdlOjpGcmFtZT4gSW5zcGVjdG9yUGFnZUFnZW50OjpidWlsZE9iamVjdEZvckZy
YW1lKEZyYQogICAgICAgICAuc2V0TG9hZGVySWQobG9hZGVySWQoZnJhbWUtPmxvYWRlcigpLT5k
b2N1bWVudExvYWRlcigpKSkKICAgICAgICAgLnNldFVybChmcmFtZS0+ZG9jdW1lbnQoKS0+dXJs
KCkuc3RyaW5nKCkpCiAgICAgICAgIC5zZXRNaW1lVHlwZShmcmFtZS0+bG9hZGVyKCktPmRvY3Vt
ZW50TG9hZGVyKCktPnJlc3BvbnNlTUlNRVR5cGUoKSkKLSAgICAgICAgLnNldFNlY3VyaXR5T3Jp
Z2luKGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1Jhd1N0cmluZygpKTsK
KyAgICAgICAgLnNldFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luVG9JbnNwZWN0b3JPYmpl
Y3QoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKTsKICAgICBpZiAoZnJhbWUt
PnRyZWUoKS0+cGFyZW50KCkpCiAgICAgICAgIGZyYW1lT2JqZWN0LT5zZXRQYXJlbnRJZChmcmFt
ZUlkKGZyYW1lLT50cmVlKCktPnBhcmVudCgpKSk7CiAgICAgaWYgKGZyYW1lLT5vd25lckVsZW1l
bnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBh
Z2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5o
CmluZGV4IGQ5NjAzMDM3YzBmODRiYzMyZjU0YWE4NDI4ODQzODEwMDY0MmU3NWYuLjlhYTA3NjA2
Njg5Mzc4N2Y2YzVmOTVlYTAwOWVmNGNjMjM1ZDFlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTkyLDYgKzkyLDkgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBSZXNvdXJjZVR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlKGNvbnN0IENhY2hlZFJl
c291cmNlJik7CiAgICAgc3RhdGljIFR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVu
dW0gY2FjaGVkUmVzb3VyY2VUeXBlSnNvbihjb25zdCBDYWNoZWRSZXNvdXJjZSYpOwogCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGluc3BlY3Rvck9iamVjdFRvU2VjdXJp
dHlPcmlnaW4oSW5zcGVjdG9yT2JqZWN0Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1
aWxkZXI6OlBhZ2U6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpblRvSW5zcGVjdG9yT2Jq
ZWN0KFNlY3VyaXR5T3JpZ2luKik7CisKICAgICAvLyBQYWdlIEFQSSBmb3IgSW5zcGVjdG9yRnJv
bnRlbmQKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVh
bCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKQEAgLTE3Myw3ICsxNzYsNyBAQCBwdWJsaWM6
CiAgICAgU3RyaW5nIGZyYW1lSWQoRnJhbWUqKTsKICAgICBib29sIGhhc0lkRm9yRnJhbWUoRnJh
bWUqKSBjb25zdDsKICAgICBTdHJpbmcgbG9hZGVySWQoRG9jdW1lbnRMb2FkZXIqKTsKLSAgICBG
cmFtZSogZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luUmF3
U3RyaW5nKTsKKyAgICBGcmFtZSogZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKEVycm9yU3Ry
aW5nKiwgSW5zcGVjdG9yT2JqZWN0Kik7CiAgICAgRnJhbWUqIGFzc2VydEZyYW1lKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkKTsKICAgICBTdHJpbmcgc2NyaXB0UHJlcHJvY2Vz
c29yKCkgeyByZXR1cm4gbV9zY3JpcHRQcmVwcm9jZXNzb3I7IH0KICAgICBzdGF0aWMgRG9jdW1l
bnRMb2FkZXIqIGFzc2VydERvY3VtZW50TG9hZGVyKEVycm9yU3RyaW5nKiwgRnJhbWUqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZS5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZS5qcwppbmRl
eCBiMjA5ZjcyNmMwOTM0ZGRjNDZiZTI2OWMyZmViODEwNjFhNDFhZTM2Li4yZWM4NDI2ZDdjZmIy
OWU4Y2ZlMDJhMGZjNjU5MDFmM2E2YjNlNzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlLmpzCkBAIC0yOSw3ICsyOSw3IEBACiAKIC8qKgog
ICogQGNvbnN0cnVjdG9yCi0gKiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlPcmlnaW4KKyAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSBzZWN1cml0eU9yaWdpbgogICogQHBh
cmFtIHtib29sZWFufSBpc0xvY2FsU3RvcmFnZQogICovCiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFn
ZSA9IGZ1bmN0aW9uKHNlY3VyaXR5T3JpZ2luLCBpc0xvY2FsU3RvcmFnZSkKQEAgLTM5LDI0ICsz
OSwyNCBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZSA9IGZ1bmN0aW9uKHNlY3VyaXR5T3JpZ2lu
LCBpc0xvY2FsU3RvcmFnZSkKIH0KIAogLyoqCi0gKiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlP
cmlnaW4KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSBzZWN1cml0eU9y
aWdpbgogICogQHBhcmFtIHtib29sZWFufSBpc0xvY2FsU3RvcmFnZQogICogQHJldHVybiB7RE9N
U3RvcmFnZUFnZW50LlN0b3JhZ2VJZH0KICAqLwogV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2Uuc3Rv
cmFnZUlkID0gZnVuY3Rpb24oc2VjdXJpdHlPcmlnaW4sIGlzTG9jYWxTdG9yYWdlKQogewotICAg
IHJldHVybiB7IHNlY3VyaXR5T3JpZ2luOiBzZWN1cml0eU9yaWdpbiwgaXNMb2NhbFN0b3JhZ2U6
IGlzTG9jYWxTdG9yYWdlIH07CisgICAgcmV0dXJuIHsgc2VjdXJpdHlPcmlnaW46IHNlY3VyaXR5
T3JpZ2luLnRvUHJvdG9jb2woKSwgaXNMb2NhbFN0b3JhZ2U6IGlzTG9jYWxTdG9yYWdlIH07CiB9
CiAKIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlLnByb3RvdHlwZSA9IHsKIAogICAgIC8qKiBAcmV0
dXJuIHtET01TdG9yYWdlQWdlbnQuU3RvcmFnZUlkfSAqLwotICAgIGdldCBpZCgpCisgICAgaWQ6
IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFn
ZS5zdG9yYWdlSWQodGhpcy5fc2VjdXJpdHlPcmlnaW4sIHRoaXMuX2lzTG9jYWxTdG9yYWdlKTsK
ICAgICB9LAogCi0gICAgLyoqIEByZXR1cm4ge3N0cmluZ30gKi8KKyAgICAvKiogQHJldHVybiB7
V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSAqLwogICAgIGdldCBzZWN1cml0eU9yaWdpbigp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2VjdXJpdHlPcmlnaW47CkBAIC03Myw3ICs3
Myw3IEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAg
ICBnZXRJdGVtczogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewotICAgICAgICBET01TdG9yYWdl
QWdlbnQuZ2V0RE9NU3RvcmFnZUl0ZW1zKHRoaXMuaWQsIGNhbGxiYWNrKTsKKyAgICAgICAgRE9N
U3RvcmFnZUFnZW50LmdldERPTVN0b3JhZ2VJdGVtcyh0aGlzLmlkKCksIGNhbGxiYWNrKTsKICAg
ICB9LAogCiAgICAgLyoqCkBAIC04Myw3ICs4Myw3IEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdl
LnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBzZXRJdGVtOiBmdW5jdGlvbihrZXksIHZhbHVl
LCBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIERPTVN0b3JhZ2VBZ2VudC5zZXRET01TdG9yYWdl
SXRlbSh0aGlzLmlkLCBrZXksIHZhbHVlLCBjYWxsYmFjayk7CisgICAgICAgIERPTVN0b3JhZ2VB
Z2VudC5zZXRET01TdG9yYWdlSXRlbSh0aGlzLmlkKCksIGtleSwgdmFsdWUsIGNhbGxiYWNrKTsK
ICAgICB9LAogCiAgICAgLyoqCkBAIC05Miw3ICs5Miw3IEBAIFdlYkluc3BlY3Rvci5ET01TdG9y
YWdlLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICByZW1vdmVJdGVtOiBmdW5jdGlvbihrZXks
IGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgRE9NU3RvcmFnZUFnZW50LnJlbW92ZURPTVN0b3Jh
Z2VJdGVtKHRoaXMuaWQsIGtleSwgY2FsbGJhY2spOworICAgICAgICBET01TdG9yYWdlQWdlbnQu
cmVtb3ZlRE9NU3RvcmFnZUl0ZW0odGhpcy5pZCgpLCBrZXksIGNhbGxiYWNrKTsKICAgICB9CiB9
CiAKQEAgLTEyNSw3ICsxMjUsNyBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU1vZGVsLnByb3Rv
dHlwZSA9IHsKICAgICAgKi8KICAgICBfc2VjdXJpdHlPcmlnaW5BZGRlZDogZnVuY3Rpb24oZXZl
bnQpCiAgICAgewotICAgICAgICB2YXIgc2VjdXJpdHlPcmlnaW4gPSAvKiogQHR5cGUge3N0cmlu
Z30gKi8gKGV2ZW50LmRhdGEpOworICAgICAgICB2YXIgc2VjdXJpdHlPcmlnaW4gPSAvKiogQHR5
cGUge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gKi8gKGV2ZW50LmRhdGEpOwogICAgICAg
ICB2YXIgbG9jYWxTdG9yYWdlS2V5ID0gdGhpcy5fc3RvcmFnZUtleShzZWN1cml0eU9yaWdpbiwg
dHJ1ZSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9zdG9yYWdlc1tsb2NhbFN0b3Jh
Z2VLZXldKTsKICAgICAgICAgdmFyIGxvY2FsU3RvcmFnZSA9IG5ldyBXZWJJbnNwZWN0b3IuRE9N
U3RvcmFnZShzZWN1cml0eU9yaWdpbiwgdHJ1ZSk7CkBAIC0xNDQsNyArMTQ0LDcgQEAgV2ViSW5z
cGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3NlY3Vy
aXR5T3JpZ2luUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgc2Vj
dXJpdHlPcmlnaW4gPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKGV2ZW50LmRhdGEpOworICAgICAg
ICB2YXIgc2VjdXJpdHlPcmlnaW4gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5TZWN1cml0eU9y
aWdpbn0gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICB2YXIgbG9jYWxTdG9yYWdlS2V5ID0gdGhp
cy5fc3RvcmFnZUtleShzZWN1cml0eU9yaWdpbiwgdHJ1ZSk7CiAgICAgICAgIHZhciBsb2NhbFN0
b3JhZ2UgPSB0aGlzLl9zdG9yYWdlc1tsb2NhbFN0b3JhZ2VLZXldOwogICAgICAgICBjb25zb2xl
LmFzc2VydChsb2NhbFN0b3JhZ2UpOwpAQCAtMTU5LDEzICsxNTksMTMgQEAgV2ViSW5zcGVjdG9y
LkRPTVN0b3JhZ2VNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBzZWN1cml0eU9yaWdpbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLlNlY3VyaXR5T3JpZ2lufSBzZWN1cml0eU9yaWdpbgogICAgICAqIEBwYXJhbSB7Ym9vbGVh
bn0gaXNMb2NhbFN0b3JhZ2UKICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgICovCiAgICAg
X3N0b3JhZ2VLZXk6IGZ1bmN0aW9uKHNlY3VyaXR5T3JpZ2luLCBpc0xvY2FsU3RvcmFnZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShXZWJJbnNwZWN0b3IuRE9NU3RvcmFn
ZS5zdG9yYWdlSWQoc2VjdXJpdHlPcmlnaW4sIGlzTG9jYWxTdG9yYWdlKSk7CisgICAgICAgIHJl
dHVybiBzZWN1cml0eU9yaWdpbi5pZCgpICsgIi8iICsgaXNMb2NhbFN0b3JhZ2U7CiAgICAgfSwK
IAogICAgIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9FeHRlbnNpb25BdWRpdENhdGVnb3J5LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9FeHRlbnNpb25BdWRpdENhdGVnb3J5LmpzCmluZGV4IDRjNjkyYzc3MzQ1YWVmNTU3
OTEzMTE4NmY1ODY2OWQ4MjQ3YzhlMzQuLmIxMjE5MDYwOTEzZjQxNWFjZWM4NzA4NDhjYjA4YzJi
ZDEzZDAyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0V4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnkuanMKQEAgLTMxLDcgKzMxLDcgQEAKIC8q
KgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkF1ZGl0Q2F0ZWdv
cnl9Ci0gKiBAcGFyYW0ge3N0cmluZ30gZXh0ZW5zaW9uT3JpZ2luCisgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gZXh0ZW5zaW9uT3JpZ2luCiAgKiBAcGFyYW0ge3N0cmlu
Z30gaWQKICAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwbGF5TmFtZQogICogQHBhcmFtIHtudW1iZXI9
fSBydWxlQ291bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRXh0ZW5zaW9uU2VydmVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9FeHRlbnNpb25TZXJ2ZXIuanMKaW5kZXggZmQzMDdmYTk1ZmM5Y2ZjMzQ1Y2U3NGEzMWMwYzli
NzNhYTlmZjQzYi4uMzBjYzU1NjRiYTQ1YTNhZjg0NzAxODcxMTZjM2ZkOGNiMWU3NGZmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2
ZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25T
ZXJ2ZXIuanMKQEAgLTY5MywxMiArNjkzLDE5IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2
ZXIucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9LAogCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQKKyAgICAgKi8KICAgICBfb25XaW5kb3dNZXNz
YWdlOiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIGlmIChldmVudC5kYXRhID09PSAi
cmVnaXN0ZXJFeHRlbnNpb24iKQogICAgICAgICAgICAgdGhpcy5fcmVnaXN0ZXJFeHRlbnNpb24o
ZXZlbnQub3JpZ2luLCBldmVudC5wb3J0c1swXSk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBvcmlnaW4KKyAgICAgKiBAcGFyYW0ge01lc3NhZ2VQb3J0fSBwb3J0
CisgICAgICovCiAgICAgX3JlZ2lzdGVyRXh0ZW5zaW9uOiBmdW5jdGlvbihvcmlnaW4sIHBvcnQp
CiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3JlZ2lzdGVyZWRFeHRlbnNpb25zLmhhc093blBy
b3BlcnR5KG9yaWdpbikpIHsKQEAgLTcxMSw5ICs3MTgsMTIgQEAgV2ViSW5zcGVjdG9yLkV4dGVu
c2lvblNlcnZlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHBvcnQuc3RhcnQoKTsKICAgICB9LAog
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQKKyAgICAgKi8KICAgICBfb25t
ZXNzYWdlOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBtZXNzYWdlID0gZXZl
bnQuZGF0YTsKKyAgICAgICAgdmFyIG1lc3NhZ2UgPSAvKipAdHlwZSB7T2JqZWN0fSovIChldmVu
dC5kYXRhKTsKICAgICAgICAgdmFyIHJlc3VsdDsKIAogICAgICAgICBpZiAobWVzc2FnZS5jb21t
YW5kIGluIHRoaXMuX2hhbmRsZXJzKQpAQCAtNzI1LDYgKzczNSw5IEBAIFdlYkluc3BlY3Rvci5F
eHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZGlzcGF0Y2hD
YWxsYmFjayhtZXNzYWdlLnJlcXVlc3RJZCwgZXZlbnQudGFyZ2V0LCByZXN1bHQpOwogICAgIH0s
CiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29tbWFuZAorICAgICAqLwogICAg
IF9yZWdpc3RlckhhbmRsZXI6IGZ1bmN0aW9uKGNvbW1hbmQsIGNhbGxiYWNrKQogICAgIHsKICAg
ICAgICAgdGhpcy5faGFuZGxlcnNbY29tbWFuZF0gPSBjYWxsYmFjazsKQEAgLTc4NCw3ICs3OTcs
OCBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHZhciBtYWluRnJhbWUgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwubWFpbkZy
YW1lOwogICAgICAgICAgICAgaWYgKCFtYWluRnJhbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXMuX3N0YXR1cy5FX0ZBSUxFRCgibWFpbiBmcmFtZSBub3QgYXZhaWxhYmxlIHlldCIpOwot
ICAgICAgICAgICAgdmFyIGNvbnRleHQgPSBXZWJJbnNwZWN0b3IucnVudGltZU1vZGVsLmNvbnRl
eHRCeUZyYW1lQW5kU2VjdXJpdHlPcmlnaW4obWFpbkZyYW1lLCBzZWN1cml0eU9yaWdpbik7Cisg
ICAgICAgICAgICB2YXIgb3JpZ2luT2JqZWN0ID0gbmV3IFdlYkluc3BlY3Rvci5TZWN1cml0eU9y
aWdpbihzZWN1cml0eU9yaWdpbiwgdW5kZWZpbmVkLCBzZWN1cml0eU9yaWdpbik7CisgICAgICAg
ICAgICB2YXIgY29udGV4dCA9IFdlYkluc3BlY3Rvci5ydW50aW1lTW9kZWwuY29udGV4dEJ5RnJh
bWVBbmRTZWN1cml0eU9yaWdpbihtYWluRnJhbWUsIG9yaWdpbk9iamVjdCk7CiAgICAgICAgICAg
ICBpZiAoIWNvbnRleHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1cy5FX05P
VEZPVU5EKHNlY3VyaXR5T3JpZ2luKTsKICAgICAgICAgICAgIGNvbnRleHRJZCA9IGNvbnRleHQu
aWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVT
eXN0ZW1Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5
c3RlbU1vZGVsLmpzCmluZGV4IDE0YzEzNzJjZDQyYjdjNTU4YWVhYjJhMzFlMTUzYTg1NDdiMjY5
YjguLjdhMzM2MDA1MjQ2MjIxZjMwZjRjZjFiMjZkOWM2OTFiODRjZTk4MDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpz
CkBAIC00OSw4ICs0OSw4IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwgPSBmdW5jdGlv
bigpCiBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICBfcmVz
ZXQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGZvciAodmFyIHNlY3VyaXR5T3JpZ2luIGlu
IHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luKQotICAgICAgICAgICAgdGhpcy5fcmVtb3ZlT3Jp
Z2luKHNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAgZm9yICh2YXIgc2VjdXJpdHlPcmlnaW5JZCBp
biB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbikKKyAgICAgICAgICAgIHRoaXMuX3JlbW92ZU9y
aWdpbihXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuc2VjdXJpdHlPcmlnaW5Gb3JJZChz
ZWN1cml0eU9yaWdpbklkKSk7CiAgICAgICAgIHZhciBzZWN1cml0eU9yaWdpbnMgPSBXZWJJbnNw
ZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuc2VjdXJpdHlPcmlnaW5zKCk7CiAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgc2VjdXJpdHlPcmlnaW5zLmxlbmd0aDsgKytpKQogICAgICAgICAgICAg
dGhpcy5fYWRkT3JpZ2luKHNlY3VyaXR5T3JpZ2luc1tpXSk7CkBAIC02MSw3ICs2MSw3IEBAIFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9z
ZWN1cml0eU9yaWdpbkFkZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBz
ZWN1cml0eU9yaWdpbiA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoZXZlbnQuZGF0YSk7CisgICAg
ICAgIHZhciBzZWN1cml0eU9yaWdpbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5
T3JpZ2lufSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIHRoaXMuX2FkZE9yaWdpbihzZWN1cml0
eU9yaWdpbik7CiAgICAgfSwKIApAQCAtNzAsMzcgKzcwLDM5IEBAIFdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtTW9kZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9zZWN1cml0eU9yaWdpblJl
bW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2lu
ID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChldmVudC5kYXRhKTsKKyAgICAgICAgdmFyIHNlY3Vy
aXR5T3JpZ2luID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59ICovIChl
dmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5fcmVtb3ZlT3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsK
ICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2lu
CisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5T3Jp
Z2luCiAgICAgICovCiAgICAgX2FkZE9yaWdpbjogZnVuY3Rpb24oc2VjdXJpdHlPcmlnaW4pCiAg
ICAgewotICAgICAgICB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltzZWN1cml0eU9yaWdpbl0g
PSB7fTsKKyAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luSWQgPSBzZWN1cml0eU9yaWdpbi5pZCgp
OworICAgICAgICB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltzZWN1cml0eU9yaWdpbklkXSA9
IHt9OwogCiAgICAgICAgIHZhciB0eXBlcyA9IFsicGVyc2lzdGVudCIsICJ0ZW1wb3JhcnkiXTsK
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7ICsraSkKLSAgICAgICAg
ICAgIHRoaXMuX3JlcXVlc3RGaWxlU3lzdGVtUm9vdChzZWN1cml0eU9yaWdpbiwgdHlwZXNbaV0s
IHRoaXMuX2ZpbGVTeXN0ZW1Sb290UmVjZWl2ZWQuYmluZCh0aGlzLCBzZWN1cml0eU9yaWdpbiwg
dHlwZXNbaV0sIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW3NlY3VyaXR5T3JpZ2luXSkpOwor
ICAgICAgICAgICAgdGhpcy5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KHNlY3VyaXR5T3JpZ2luLCB0
eXBlc1tpXSwgdGhpcy5fZmlsZVN5c3RlbVJvb3RSZWNlaXZlZC5iaW5kKHRoaXMsIHNlY3VyaXR5
T3JpZ2luLCB0eXBlc1tpXSwgdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bc2VjdXJpdHlPcmln
aW5JZF0pKTsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlY3Vy
aXR5T3JpZ2luCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IHNl
Y3VyaXR5T3JpZ2luCiAgICAgICovCiAgICAgX3JlbW92ZU9yaWdpbjogZnVuY3Rpb24oc2VjdXJp
dHlPcmlnaW4pCiAgICAgewotICAgICAgICBmb3IgKHZhciB0eXBlIGluIHRoaXMuX2ZpbGVTeXN0
ZW1zRm9yT3JpZ2luW3NlY3VyaXR5T3JpZ2luXSkgewotICAgICAgICAgICAgdmFyIGZpbGVTeXN0
ZW0gPSB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltzZWN1cml0eU9yaWdpbl1bdHlwZV07Ci0g
ICAgICAgICAgICBkZWxldGUgdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bc2VjdXJpdHlPcmln
aW5dW3R5cGVdOworICAgICAgICB2YXIgc2VjdXJpdHlPcmlnaW5JZCA9IHNlY3VyaXR5T3JpZ2lu
LmlkKCk7CisgICAgICAgIGZvciAodmFyIHR5cGUgaW4gdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmln
aW5bc2VjdXJpdHlPcmlnaW5JZF0pIHsKKyAgICAgICAgICAgIHZhciBmaWxlU3lzdGVtID0gdGhp
cy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bc2VjdXJpdHlPcmlnaW5JZF1bdHlwZV07CisgICAgICAg
ICAgICBkZWxldGUgdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bc2VjdXJpdHlPcmlnaW5JZF1b
dHlwZV07CiAgICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVtUmVtb3ZlZChmaWxlU3lzdGVtKTsK
ICAgICAgICAgfQotICAgICAgICBkZWxldGUgdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bc2Vj
dXJpdHlPcmlnaW5dOworICAgICAgICBkZWxldGUgdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5b
c2VjdXJpdHlPcmlnaW5JZF07ICAKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtz
dHJpbmd9IG9yaWdpbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lu
fSBvcmlnaW4KICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZQogICAgICAqIEBwYXJhbSB7ZnVu
Y3Rpb24obnVtYmVyLCBGaWxlU3lzdGVtQWdlbnQuRW50cnk9KX0gY2FsbGJhY2sKICAgICAgKi8K
QEAgLTEyMSw3ICsxMjMsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSk7
CiAgICAgICAgIH0KIAotICAgICAgICBGaWxlU3lzdGVtQWdlbnQucmVxdWVzdEZpbGVTeXN0ZW1S
b290KG9yaWdpbiwgdHlwZSwgaW5uZXJDYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgRmls
ZVN5c3RlbUFnZW50LnJlcXVlc3RGaWxlU3lzdGVtUm9vdChvcmlnaW4udG9Qcm90b2NvbCgpLCB0
eXBlLCBpbm5lckNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTE0
Niw3ICsxNDgsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZSA9IHsK
ICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbgorICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSBvcmlnaW4KICAgICAgKiBAcGFy
YW0ge3N0cmluZ30gdHlwZQogICAgICAqIEBwYXJhbSB7T2JqZWN0LjxXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW0+fSBzdG9yZQogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBl
cnJvckNvZGUKQEAgLTE1NCw3ICsxNTYsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVs
LnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfZmlsZVN5c3RlbVJvb3RSZWNlaXZlZDogZnVu
Y3Rpb24ob3JpZ2luLCB0eXBlLCBzdG9yZSwgZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5KQog
ICAgIHsKLSAgICAgICAgaWYgKCFlcnJvckNvZGUgJiYgYmFja2VuZFJvb3RFbnRyeSAmJiB0aGlz
Ll9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5dID09PSBzdG9yZSkgeworICAgICAgICBpZiAo
IWVycm9yQ29kZSAmJiBiYWNrZW5kUm9vdEVudHJ5ICYmIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3Jp
Z2luW29yaWdpbi5pZCgpXSA9PT0gc3RvcmUpIHsKICAgICAgICAgICAgIHZhciBmaWxlU3lzdGVt
ID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbSh0aGlzLCBvcmln
aW4sIHR5cGUsIGJhY2tlbmRSb290RW50cnkpOwogICAgICAgICAgICAgc3RvcmVbdHlwZV0gPSBm
aWxlU3lzdGVtOwogICAgICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbUFkZGVkKGZpbGVTeXN0ZW0p
OwpAQCAtMzM1LDE0ICszMzcsMTQgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90
b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3JlbW92ZUZpbGVTeXN0ZW06IGZ1bmN0aW9uKGZpbGVT
eXN0ZW0pCiAgICAgewotICAgICAgICB2YXIgb3JpZ2luID0gZmlsZVN5c3RlbS5vcmlnaW47Cisg
ICAgICAgIHZhciBvcmlnaW5JZCA9IGZpbGVTeXN0ZW0ub3JpZ2luLmlkKCk7CiAgICAgICAgIHZh
ciB0eXBlID0gZmlsZVN5c3RlbS50eXBlOwotICAgICAgICBpZiAodGhpcy5fZmlsZVN5c3RlbXNG
b3JPcmlnaW5bb3JpZ2luXSAmJiB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5dW3R5
cGVdKSB7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3Jp
Z2luXVt0eXBlXTsKKyAgICAgICAgaWYgKHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdp
bklkXSAmJiB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5JZF1bdHlwZV0pIHsKKyAg
ICAgICAgICAgIGRlbGV0ZSB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5JZF1bdHlw
ZV07CiAgICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVtUmVtb3ZlZChmaWxlU3lzdGVtKTsKIAot
ICAgICAgICAgICAgaWYgKE9iamVjdC5pc0VtcHR5KHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2lu
W29yaWdpbl0pKQotICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9maWxlU3lzdGVtc0Zvck9y
aWdpbltvcmlnaW5dOworICAgICAgICAgICAgaWYgKE9iamVjdC5pc0VtcHR5KHRoaXMuX2ZpbGVT
eXN0ZW1zRm9yT3JpZ2luW29yaWdpbklkXSkpCisgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMu
X2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbklkXTsKICAgICAgICAgfQogICAgIH0sCiAKQEAg
LTM1OCw3ICszNjAsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkV2ZW50VHlwZXMg
PSB7CiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbU1vZGVsfSBmaWxlU3lzdGVtTW9kZWwKLSAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW4KKyAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSBvcmlnaW4KICAqIEBwYXJhbSB7
c3RyaW5nfSB0eXBlCiAgKiBAcGFyYW0ge0ZpbGVTeXN0ZW1BZ2VudC5FbnRyeX0gYmFja2VuZFJv
b3RFbnRyeQogICovCkBAIC0zNzYsNyArMzc4LDcgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1N
b2RlbC5GaWxlU3lzdGVtLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBnZXQgbmFtZSgpCiAg
ICAgewotICAgICAgICByZXR1cm4gImZpbGVzeXN0ZW06IiArIHRoaXMub3JpZ2luICsgIi8iICsg
dGhpcy50eXBlOworICAgICAgICByZXR1cm4gImZpbGVzeXN0ZW06IiArIHRoaXMub3JpZ2luLnVy
bCgpICsgIi8iICsgdGhpcy50eXBlOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJNb2RlbC5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCTW9kZWwuanMKaW5kZXggYTUyNTdhMjRi
Y2JjMzhkYjQ4ZjQ3MjYyOWJmMzBiMTNiMTA5NmFjNC4uNzg4ZGM2MTg2ZTY1YTk3ZWZmOTVjYTk0
MWFlMDIyMDNhYmZhMWNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9JbmRleGVkREJNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0luZGV4ZWREQk1vZGVsLmpzCkBAIC0xNDEsOCArMTQxLDggQEAgV2ViSW5zcGVj
dG9yLkluZGV4ZWREQk1vZGVsLkV2ZW50VHlwZXMgPSB7CiBXZWJJbnNwZWN0b3IuSW5kZXhlZERC
TW9kZWwucHJvdG90eXBlID0gewogICAgIF9yZXNldDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAg
ICAgZm9yICh2YXIgc2VjdXJpdHlPcmlnaW4gaW4gdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJp
dHlPcmlnaW4pCi0gICAgICAgICAgICB0aGlzLl9yZW1vdmVPcmlnaW4oc2VjdXJpdHlPcmlnaW4p
OworICAgICAgICBmb3IgKHZhciBzZWN1cml0eU9yaWdpbklkIGluIHRoaXMuX2RhdGFiYXNlTmFt
ZXNCeVNlY3VyaXR5T3JpZ2luKQorICAgICAgICAgICAgdGhpcy5fcmVtb3ZlT3JpZ2luKFdlYklu
c3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5zZWN1cml0eU9yaWdpbkZvcklkKHNlY3VyaXR5T3Jp
Z2luSWQpKTsKICAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2lucyA9IFdlYkluc3BlY3Rvci5yZXNv
dXJjZVRyZWVNb2RlbC5zZWN1cml0eU9yaWdpbnMoKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBzZWN1cml0eU9yaWdpbnMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICB0aGlzLl9hZGRP
cmlnaW4oc2VjdXJpdHlPcmlnaW5zW2ldKTsKQEAgLTE1MCw4ICsxNTAsOCBAQCBXZWJJbnNwZWN0
b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogCiAgICAgcmVmcmVzaERhdGFiYXNlTmFt
ZXM6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGZvciAodmFyIHNlY3VyaXR5T3JpZ2luIGlu
IHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luKQotICAgICAgICAgICAgdGhpcy5f
bG9hZERhdGFiYXNlTmFtZXMoc2VjdXJpdHlPcmlnaW4pOworICAgICAgICBmb3IgKHZhciBzZWN1
cml0eU9yaWdpbklkIGluIHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luKQorICAg
ICAgICAgICAgdGhpcy5fbG9hZERhdGFiYXNlTmFtZXMoV2ViSW5zcGVjdG9yLnJlc291cmNlVHJl
ZU1vZGVsLnNlY3VyaXR5T3JpZ2luRm9ySWQoc2VjdXJpdHlPcmlnaW5JZCkpOwogICAgIH0sCiAK
ICAgICAvKioKQEAgLTE2Nyw3ICsxNjcsNyBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwu
cHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9zZWN1cml0eU9yaWdpbkFkZGVkOiBmdW5jdGlv
bihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBzZWN1cml0eU9yaWdpbiA9IC8qKiBAdHlwZSB7
c3RyaW5nfSAqLyAoZXZlbnQuZGF0YSk7CisgICAgICAgIHZhciBzZWN1cml0eU9yaWdpbiA9IC8q
KiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSAqLyAoZXZlbnQuZGF0YSk7CiAg
ICAgICAgIHRoaXMuX2FkZE9yaWdpbihzZWN1cml0eU9yaWdpbik7CiAgICAgfSwKIApAQCAtMTc2
LDMzICsxNzYsMzUgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsK
ICAgICAgKi8KICAgICBfc2VjdXJpdHlPcmlnaW5SZW1vdmVkOiBmdW5jdGlvbihldmVudCkKICAg
ICB7Ci0gICAgICAgIHZhciBzZWN1cml0eU9yaWdpbiA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAo
ZXZlbnQuZGF0YSk7CisgICAgICAgIHZhciBzZWN1cml0eU9yaWdpbiA9IC8qKiBAdHlwZSB7V2Vi
SW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIHRoaXMu
X3JlbW92ZU9yaWdpbihzZWN1cml0eU9yaWdpbik7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBzZWN1cml0eU9yaWdpbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLlNlY3VyaXR5T3JpZ2lufSBzZWN1cml0eU9yaWdpbgogICAgICAqLwogICAgIF9hZGRPcmln
aW46IGZ1bmN0aW9uKHNlY3VyaXR5T3JpZ2luKQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3Nl
cnQoIXRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luXSk7
Ci0gICAgICAgIHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3Jp
Z2luXSA9IFtdOworICAgICAgICB2YXIgc2VjdXJpdHlPcmlnaW5JZCA9IHNlY3VyaXR5T3JpZ2lu
LmlkKCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1
cml0eU9yaWdpbltzZWN1cml0eU9yaWdpbklkXSk7CisgICAgICAgIHRoaXMuX2RhdGFiYXNlTmFt
ZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luSWRdID0gW107CiAgICAgICAgIHRoaXMu
X2xvYWREYXRhYmFzZU5hbWVzKHNlY3VyaXR5T3JpZ2luKTsKICAgICB9LAogCiAgICAgLyoqCi0g
ICAgICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCisgICAgICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5T3JpZ2luCiAgICAgICovCiAgICAgX3Jl
bW92ZU9yaWdpbjogZnVuY3Rpb24oc2VjdXJpdHlPcmlnaW4pCiAgICAgewotICAgICAgICBjb25z
b2xlLmFzc2VydCh0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9y
aWdpbl0pOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2RhdGFiYXNlTmFtZXNC
eVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luXS5sZW5ndGg7ICsraSkKLSAgICAgICAgICAg
IHRoaXMuX2RhdGFiYXNlUmVtb3ZlZChzZWN1cml0eU9yaWdpbiwgdGhpcy5fZGF0YWJhc2VOYW1l
c0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5dW2ldKTsKLSAgICAgICAgZGVsZXRlIHRo
aXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luXTsKKyAgICAg
ICAgdmFyIHNlY3VyaXR5T3JpZ2luSWQgPSBzZWN1cml0eU9yaWdpbi5pZCgpOworICAgICAgICBj
b25zb2xlLmFzc2VydCh0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0
eU9yaWdpbklkXSk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fZGF0YWJhc2VO
YW1lc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5JZF0ubGVuZ3RoOyArK2kpCisgICAg
ICAgICAgICB0aGlzLl9kYXRhYmFzZVJlbW92ZWQoc2VjdXJpdHlPcmlnaW4sIHRoaXMuX2RhdGFi
YXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luSWRdW2ldKTsKKyAgICAgICAg
ZGVsZXRlIHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2lu
SWRdOwogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlP
cmlnaW4KKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gc2VjdXJp
dHlPcmlnaW4KICAgICAgKiBAcGFyYW0ge0FycmF5LjxzdHJpbmc+fSBkYXRhYmFzZU5hbWVzCiAg
ICAgICovCiAgICAgX3VwZGF0ZU9yaWdpbkRhdGFiYXNlTmFtZXM6IGZ1bmN0aW9uKHNlY3VyaXR5
T3JpZ2luLCBkYXRhYmFzZU5hbWVzKQpAQCAtMjExLDEwICsyMTMsMTEgQEAgV2ViSW5zcGVjdG9y
LkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBkYXRhYmFzZU5hbWVzLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgbmV3RGF0YWJhc2VOYW1l
c1tkYXRhYmFzZU5hbWVzW2ldXSA9IHRydWU7CiAgICAgICAgIHZhciBvbGREYXRhYmFzZU5hbWVz
ID0ge307Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fZGF0YWJhc2VOYW1lc0J5
U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5dLmxlbmd0aDsgKytpKQotICAgICAgICAgICAg
b2xkRGF0YWJhc2VOYW1lc1t0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltzZWN1
cml0eU9yaWdpbl1baV1dID0gdHJ1ZTsKKyAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luSWQgPSBz
ZWN1cml0eU9yaWdpbi5pZCgpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2Rh
dGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luSWRdLmxlbmd0aDsgKytp
KQorICAgICAgICAgICAgb2xkRGF0YWJhc2VOYW1lc1t0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1
cml0eU9yaWdpbltzZWN1cml0eU9yaWdpbklkXVtpXV0gPSB0cnVlOwogCi0gICAgICAgIHRoaXMu
X2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luXSA9IGRhdGFiYXNl
TmFtZXM7CisgICAgICAgIHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3Vy
aXR5T3JpZ2luSWRdID0gZGF0YWJhc2VOYW1lczsKIAogICAgICAgICBmb3IgKHZhciBkYXRhYmFz
ZU5hbWUgaW4gb2xkRGF0YWJhc2VOYW1lcykgewogICAgICAgICAgICAgaWYgKCFuZXdEYXRhYmFz
ZU5hbWVzW2RhdGFiYXNlTmFtZV0pCkBAIC0yMjcsNyArMjMwLDcgQEAgV2ViSW5zcGVjdG9yLklu
ZGV4ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBh
cmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
U2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5T3JpZ2luCiAgICAgICogQHBhcmFtIHtzdHJpbmd9IGRh
dGFiYXNlTmFtZQogICAgICAqLwogICAgIF9kYXRhYmFzZUFkZGVkOiBmdW5jdGlvbihzZWN1cml0
eU9yaWdpbiwgZGF0YWJhc2VOYW1lKQpAQCAtMjM3LDcgKzI0MCw3IEBAIFdlYkluc3BlY3Rvci5J
bmRleGVkREJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBzZWN1cml0eU9yaWdpbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlNlY3VyaXR5T3JpZ2lufSBzZWN1cml0eU9yaWdpbgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBk
YXRhYmFzZU5hbWUKICAgICAgKi8KICAgICBfZGF0YWJhc2VSZW1vdmVkOiBmdW5jdGlvbihzZWN1
cml0eU9yaWdpbiwgZGF0YWJhc2VOYW1lKQpAQCAtMjQ3LDcgKzI1MCw3IEBAIFdlYkluc3BlY3Rv
ci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBzZWN1cml0eU9yaWdpbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLlNlY3VyaXR5T3JpZ2lufSBzZWN1cml0eU9yaWdpbgogICAgICAqLwogICAgIF9sb2FkRGF0
YWJhc2VOYW1lczogZnVuY3Rpb24oc2VjdXJpdHlPcmlnaW4pCiAgICAgewpAQCAtMjYyLDEyICsy
NjUsMTIgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICghdGhp
cy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5dKQorICAgICAg
ICAgICAgaWYgKCF0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9y
aWdpbi5pZCgpXSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB0aGlzLl91
cGRhdGVPcmlnaW5EYXRhYmFzZU5hbWVzKHNlY3VyaXR5T3JpZ2luLCBkYXRhYmFzZU5hbWVzKTsK
ICAgICAgICAgfQogCi0gICAgICAgIEluZGV4ZWREQkFnZW50LnJlcXVlc3REYXRhYmFzZU5hbWVz
KHNlY3VyaXR5T3JpZ2luLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgSW5kZXhlZERC
QWdlbnQucmVxdWVzdERhdGFiYXNlTmFtZXMoc2VjdXJpdHlPcmlnaW4udG9Qcm90b2NvbCgpLCBj
YWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0yODYsNyArMjg5LDcg
QEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICghdGhpcy5fZGF0
YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bZGF0YWJhc2VJZC5zZWN1cml0eU9yaWdpbl0pCisg
ICAgICAgICAgICBpZiAoIXRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW2RhdGFi
YXNlSWQuc2VjdXJpdHlPcmlnaW4uaWQoKV0pCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgdmFyIGRhdGFiYXNlTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1v
ZGVsLkRhdGFiYXNlKGRhdGFiYXNlSWQsIGRhdGFiYXNlV2l0aE9iamVjdFN0b3Jlcy52ZXJzaW9u
LCBkYXRhYmFzZVdpdGhPYmplY3RTdG9yZXMuaW50VmVyc2lvbik7CiAgICAgICAgICAgICB0aGlz
Ll9kYXRhYmFzZXMucHV0KGRhdGFiYXNlSWQsIGRhdGFiYXNlTW9kZWwpOyAKQEAgLTMwNiw3ICsz
MDksNyBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkluZGV4ZWRE
Qk1vZGVsLkV2ZW50VHlwZXMuRGF0YWJhc2VMb2FkZWQsIGRhdGFiYXNlTW9kZWwpOwogICAgICAg
ICB9CiAKLSAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNlKGRhdGFiYXNlSWQu
c2VjdXJpdHlPcmlnaW4sIGRhdGFiYXNlSWQubmFtZSwgY2FsbGJhY2suYmluZCh0aGlzKSk7Cisg
ICAgICAgIEluZGV4ZWREQkFnZW50LnJlcXVlc3REYXRhYmFzZShkYXRhYmFzZUlkLnNlY3VyaXR5
T3JpZ2luLnRvUHJvdG9jb2woKSwgZGF0YWJhc2VJZC5uYW1lLCBjYWxsYmFjay5iaW5kKHRoaXMp
KTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0zNjAsNyArMzYzLDcgQEAgV2ViSW5zcGVjdG9yLklu
ZGV4ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICghdGhpcy5fZGF0YWJhc2VO
YW1lc0J5U2VjdXJpdHlPcmlnaW5bZGF0YWJhc2VJZC5zZWN1cml0eU9yaWdpbl0pCisgICAgICAg
ICAgICBpZiAoIXRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW2RhdGFiYXNlSWQu
c2VjdXJpdHlPcmlnaW4uaWQoKV0pCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgdmFyIGVudHJpZXMgPSBbXTsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0
YUVudHJpZXMubGVuZ3RoOyArK2kpIHsKQEAgLTM3Myw3ICszNzYsNyBAQCBXZWJJbnNwZWN0b3Iu
SW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdmFyIGtl
eVJhbmdlID0gV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLmtleVJhbmdlRnJvbUlEQktleVJh
bmdlKGlkYktleVJhbmdlKTsKLSAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGEoZGF0
YWJhc2VJZC5zZWN1cml0eU9yaWdpbiwgZGF0YWJhc2VOYW1lLCBvYmplY3RTdG9yZU5hbWUsIGlu
ZGV4TmFtZSwgc2tpcENvdW50LCBwYWdlU2l6ZSwga2V5UmFuZ2UgPyBrZXlSYW5nZSA6IHVuZGVm
aW5lZCwgaW5uZXJDYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgSW5kZXhlZERCQWdlbnQu
cmVxdWVzdERhdGEoZGF0YWJhc2VJZC5zZWN1cml0eU9yaWdpbi50b1Byb3RvY29sKCksIGRhdGFi
YXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCBpbmRleE5hbWUsIHNraXBDb3VudCwgcGFnZVNpemUs
IGtleVJhbmdlID8ga2V5UmFuZ2UgOiB1bmRlZmluZWQsIGlubmVyQ2FsbGJhY2suYmluZCh0aGlz
KSk7CiAgICAgfSwKIAogICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5
cGUKQEAgLTM5NCw3ICszOTcsNyBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuRW50cnkg
PSBmdW5jdGlvbihrZXksIHByaW1hcnlLZXksIHZhbHVlKQogCiAvKioKICAqIEBjb25zdHJ1Y3Rv
cgotICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCisgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5TZWN1cml0eU9yaWdpbn0gc2VjdXJpdHlPcmlnaW4KICAqIEBwYXJhbSB7c3RyaW5nfSBu
YW1lCiAgKi8KIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5EYXRhYmFzZUlkID0gZnVuY3Rp
b24oc2VjdXJpdHlPcmlnaW4sIG5hbWUpCkBAIC00MDksNyArNDEyLDcgQEAgV2ViSW5zcGVjdG9y
LkluZGV4ZWREQk1vZGVsLkRhdGFiYXNlSWQucHJvdG90eXBlID0gewogICAgICAqLwogICAgIGVx
dWFsczogZnVuY3Rpb24oZGF0YWJhc2VJZCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLm5h
bWUgPT09IGRhdGFiYXNlSWQubmFtZSAmJiB0aGlzLnNlY3VyaXR5T3JpZ2luID09PSBkYXRhYmFz
ZUlkLnNlY3VyaXR5T3JpZ2luOworICAgICAgICByZXR1cm4gdGhpcy5uYW1lID09PSBkYXRhYmFz
ZUlkLm5hbWUgJiYgdGhpcy5zZWN1cml0eU9yaWdpbi5pZCgpID09PSBkYXRhYmFzZUlkLnNlY3Vy
aXR5T3JpZ2luLmlkKCk7CiAgICAgfSwKIH0KIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJWaWV3cy5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCVmlld3MuanMKaW5kZXggMDdhYzkxOTU2MzBj
NzZmNDYwZTQyNjA5ZjIwYTI0MGQ3YTBmYjIyNy4uZWU2MGUyZmM0MDA3MTdkMDBiYTViNDk4OGQ2
YmJjMTkxNTdkNmFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9JbmRleGVkREJWaWV3cy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0luZGV4ZWREQlZpZXdzLmpzCkBAIC04MCw3ICs4MCw3IEBAIFdlYkluc3BlY3Rvci5J
REJEYXRhYmFzZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgX3JlZnJlc2hEYXRhYmFzZTogZnVu
Y3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW5UcmVlRWxlbWVudC50
aXRsZSA9IHRoaXMuX2Zvcm1hdEhlYWRlcihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlY3VyaXR5
IG9yaWdpbiIpLCB0aGlzLl9kYXRhYmFzZS5kYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luKTsKKyAg
ICAgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW5UcmVlRWxlbWVudC50aXRsZSA9IHRoaXMuX2Zvcm1h
dEhlYWRlcihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlY3VyaXR5IG9yaWdpbiIpLCB0aGlzLl9k
YXRhYmFzZS5kYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luLnVpVGl0bGUoKSk7CiAgICAgICAgIHRo
aXMuX25hbWVUcmVlRWxlbWVudC50aXRsZSA9IHRoaXMuX2Zvcm1hdEhlYWRlcihXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIk5hbWUiKSwgdGhpcy5fZGF0YWJhc2UuZGF0YWJhc2VJZC5uYW1lKTsKICAg
ICAgICAgdGhpcy5fc3RyaW5nVmVyc2lvblRyZWVFbGVtZW50LnRpdGxlID0gdGhpcy5fZm9ybWF0
SGVhZGVyKFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RyaW5nIFZlcnNpb24iKSwgdGhpcy5fZGF0
YWJhc2UudmVyc2lvbik7CiAgICAgICAgIHRoaXMuX2ludFZlcnNpb25UcmVlRWxlbWVudC50aXRs
ZSA9IHRoaXMuX2Zvcm1hdEhlYWRlcihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkludGVnZXIgVmVy
c2lvbiIpLCB0aGlzLl9kYXRhYmFzZS5pbnRWZXJzaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzCmluZGV4IGYy
NmM3OTE4ZjY1N2RlYWU1NDE0ZDY5ODkyZGRjODZiZmQxMWZkMGMuLmI3ZDBhZGJjMTNkZjdhYTU3
ZGM1OTE4YzFmYzMyYjFlMWEyNTZlZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVRyZWVNb2RlbC5qcwpAQCAtNDksOCArNDksOCBA
QCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwgPSBmdW5jdGlvbihuZXR3b3JrTWFuYWdl
cikKIAogICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJQYWdlRGlzcGF0Y2hlcihuZXcgV2Vi
SW5zcGVjdG9yLlBhZ2VEaXNwYXRjaGVyKHRoaXMpKTsKIAorICAgIHRoaXMuX3NlY3VyaXR5T3Jp
Z2luVHJhY2tlciA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuU2VjdXJpdHlP
cmlnaW5UcmFja2VyKHRoaXMpOwogICAgIHRoaXMuX3BlbmRpbmdDb25zb2xlTWVzc2FnZXMgPSB7
fTsKLSAgICB0aGlzLl9zZWN1cml0eU9yaWdpbkZyYW1lQ291bnQgPSB7fTsKIH0KIAogV2ViSW5z
cGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMgPSB7CkBAIC0xMTQsNjIgKzExNCwz
MSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgdGhpcy5tYWluRnJhbWUgPSBmcmFtZTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuRnJh
bWVBZGRlZCwgZnJhbWUpOwogICAgICAgICBpZiAoIWFib3V0VG9OYXZpZ2F0ZSkKLSAgICAgICAg
ICAgIHRoaXMuX2FkZFNlY3VyaXR5T3JpZ2luKGZyYW1lLnNlY3VyaXR5T3JpZ2luKTsKKyAgICAg
ICAgICAgIHRoaXMuX3NlY3VyaXR5T3JpZ2luVHJhY2tlci5fYWRkU2VjdXJpdHlPcmlnaW4oZnJh
bWUuc2VjdXJpdHlPcmlnaW4pOwogICAgICAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkKICAg
ICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5SZXNv
dXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLk1haW5GcmFtZUNyZWF0ZWRPck5hdmlnYXRlZCwgZnJh
bWUpOwogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlP
cmlnaW4KKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gaWQKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNw
ZWN0b3IuU2VjdXJpdHlPcmlnaW59CiAgICAgICovCi0gICAgX2FkZFNlY3VyaXR5T3JpZ2luOiBm
dW5jdGlvbihzZWN1cml0eU9yaWdpbikKKyAgICBzZWN1cml0eU9yaWdpbkZvcklkOiBmdW5jdGlv
bihpZCkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50
W3NlY3VyaXR5T3JpZ2luXSkgewotICAgICAgICAgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFt
ZUNvdW50W3NlY3VyaXR5T3JpZ2luXSA9IDE7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5T
ZWN1cml0eU9yaWdpbkFkZGVkLCBzZWN1cml0eU9yaWdpbik7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50W3NlY3Vy
aXR5T3JpZ2luXSArPSAxOworICAgICAgICByZXR1cm4gdGhpcy5fc2VjdXJpdHlPcmlnaW5UcmFj
a2VyLl9zZWN1cml0eU9yaWdpbkZvcklkKGlkKTsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICog
QHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCi0gICAgICovCi0gICAgX3JlbW92ZVNlY3Vy
aXR5T3JpZ2luOiBmdW5jdGlvbihzZWN1cml0eU9yaWdpbikKLSAgICB7Ci0gICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRoaXMuX3NlY3VyaXR5T3JpZ2luRnJhbWVDb3VudFtzZWN1cml0eU9yaWdpbl0p
OwotICAgICAgICBpZiAodGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50W3NlY3VyaXR5T3Jp
Z2luXSA9PT0gMSkgewotICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3NlY3VyaXR5T3JpZ2luRnJh
bWVDb3VudFtzZWN1cml0eU9yaWdpbl07Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5TZWN1
cml0eU9yaWdpblJlbW92ZWQsIHNlY3VyaXR5T3JpZ2luKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICB0aGlzLl9zZWN1cml0eU9yaWdpbkZyYW1lQ291bnRbc2VjdXJp
dHlPcmlnaW5dIC09IDE7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEByZXR1cm4ge0FycmF5
LjxzdHJpbmc+fQorICAgICAqIEByZXR1cm4ge0FycmF5LjxXZWJJbnNwZWN0b3IuU2VjdXJpdHlP
cmlnaW4+fQogICAgICAqLwogICAgIHNlY3VyaXR5T3JpZ2luczogZnVuY3Rpb24oKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX3NlY3VyaXR5T3JpZ2luRnJhbWVDb3Vu
dCk7CisgICAgICAgIHJldHVybiB0aGlzLl9zZWN1cml0eU9yaWdpblRyYWNrZXIuX3NlY3VyaXR5
T3JpZ2lucygpOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5SZXNvdXJjZVRyZWVGcmFtZX0gbWFpbkZyYW1lCi0gICAgICovCi0gICAgX2hhbmRsZU1haW5G
cmFtZURldGFjaGVkOiBmdW5jdGlvbihtYWluRnJhbWUpCisgICAgX2hhbmRsZU1haW5GcmFtZURl
dGFjaGVkOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICAvKioKLSAgICAgICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9IGZyYW1lCi0gICAgICAgICAqLwotICAg
ICAgICBmdW5jdGlvbiByZW1vdmVPcmlnaW5Gb3JGcmFtZShmcmFtZSkKLSAgICAgICAgewotICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmcmFtZS5jaGlsZEZyYW1lcy5sZW5ndGg7ICsr
aSkKLSAgICAgICAgICAgICAgICByZW1vdmVPcmlnaW5Gb3JGcmFtZS5jYWxsKHRoaXMsIGZyYW1l
LmNoaWxkRnJhbWVzW2ldKTsKLSAgICAgICAgICAgIGlmICghZnJhbWUuaXNNYWluRnJhbWUoKSkK
LSAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVTZWN1cml0eU9yaWdpbihmcmFtZS5zZWN1cml0
eU9yaWdpbik7Ci0gICAgICAgIH0KLSAgICAgICAgcmVtb3ZlT3JpZ2luRm9yRnJhbWUuY2FsbCh0
aGlzLCBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwubWFpbkZyYW1lKTsKKyAgICAgICAg
dGhpcy5fc2VjdXJpdHlPcmlnaW5UcmFja2VyLl9kZXRhY2hNYWluRnJhbWUodGhpcy5tYWluRnJh
bWUpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTE4NCw3ICsxNTMsNyBAQCBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICB2YXIgYWRkZWRPcmlnaW47
CiAgICAgICAgIGlmIChmcmFtZSkgewogICAgICAgICAgICAgLy8gTmF2aWdhdGlvbiB3aXRoaW4g
ZXhpc3RpbmcgZnJhbWUuCi0gICAgICAgICAgICB0aGlzLl9yZW1vdmVTZWN1cml0eU9yaWdpbihm
cmFtZS5zZWN1cml0eU9yaWdpbik7CisgICAgICAgICAgICB0aGlzLl9zZWN1cml0eU9yaWdpblRy
YWNrZXIuX3JlbW92ZVNlY3VyaXR5T3JpZ2luKGZyYW1lLnNlY3VyaXR5T3JpZ2luKTsKICAgICAg
ICAgICAgIGZyYW1lLl9uYXZpZ2F0ZShmcmFtZVBheWxvYWQpOwogICAgICAgICAgICAgYWRkZWRP
cmlnaW4gPSBmcmFtZS5zZWN1cml0eU9yaWdpbjsKICAgICAgICAgfSBlbHNlIHsKQEAgLTE5Miw3
ICsxNjEsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgdmFyIHBhcmVudEZyYW1lID0gdGhpcy5fZnJhbWVzW2ZyYW1lUGF5bG9hZC5w
YXJlbnRJZF07CiAgICAgICAgICAgICBmcmFtZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VU
cmVlRnJhbWUodGhpcywgcGFyZW50RnJhbWUsIGZyYW1lUGF5bG9hZCk7CiAgICAgICAgICAgICBp
ZiAoZnJhbWUuaXNNYWluRnJhbWUoKSAmJiB0aGlzLm1haW5GcmFtZSkgewotICAgICAgICAgICAg
ICAgIHRoaXMuX2hhbmRsZU1haW5GcmFtZURldGFjaGVkKHRoaXMubWFpbkZyYW1lKTsKKyAgICAg
ICAgICAgICAgICB0aGlzLl9oYW5kbGVNYWluRnJhbWVEZXRhY2hlZCgpOwogICAgICAgICAgICAg
ICAgIC8vIERlZmluaXRlbHkgYSBuYXZpZ2F0aW9uIHRvIHRoZSBuZXcgYmFja2VuZCBwcm9jZXNz
LgogICAgICAgICAgICAgICAgIHRoaXMuX2ZyYW1lRGV0YWNoZWQodGhpcy5tYWluRnJhbWUuaWQp
OwogICAgICAgICAgICAgfQpAQCAtMjA5LDcgKzE3OCw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVRyZWVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5NYWlu
RnJhbWVDcmVhdGVkT3JOYXZpZ2F0ZWQsIGZyYW1lKTsKICAgICAgICAgfQogICAgICAgICBpZiAo
YWRkZWRPcmlnaW4pCi0gICAgICAgICAgICB0aGlzLl9hZGRTZWN1cml0eU9yaWdpbihhZGRlZE9y
aWdpbik7CisgICAgICAgICAgICB0aGlzLl9zZWN1cml0eU9yaWdpblRyYWNrZXIuX2FkZFNlY3Vy
aXR5T3JpZ2luKGFkZGVkT3JpZ2luKTsKIAogICAgICAgICAvLyBGaWxsIGZyYW1lIHdpdGggcmV0
YWluZWQgcmVzb3VyY2VzICh0aGUgb25lcyBsb2FkZWQgdXNpbmcgbmV3IGxvYWRlcikuCiAgICAg
ICAgIHZhciByZXNvdXJjZXMgPSBmcmFtZS5yZXNvdXJjZXMoKTsKQEAgLTIzMyw3ICsyMDIsNyBA
QCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICBp
ZiAoIWZyYW1lKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX3JlbW92ZVNl
Y3VyaXR5T3JpZ2luKGZyYW1lLnNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAgdGhpcy5fc2VjdXJp
dHlPcmlnaW5UcmFja2VyLl9yZW1vdmVTZWN1cml0eU9yaWdpbihmcmFtZS5zZWN1cml0eU9yaWdp
bik7CiAgICAgICAgIGlmIChmcmFtZS5wYXJlbnRGcmFtZSkKICAgICAgICAgICAgIGZyYW1lLnBh
cmVudEZyYW1lLl9yZW1vdmVDaGlsZEZyYW1lKGZyYW1lKTsKICAgICAgICAgZWxzZQpAQCAtNDE5
LDYgKzM4OCwxMzEgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZSA9
IHsKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNvdXJj
ZVRyZWVNb2RlbH0gbW9kZWwKKyAqLworV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLlNl
Y3VyaXR5T3JpZ2luVHJhY2tlciA9IGZ1bmN0aW9uKG1vZGVsKQoreworICAgIHRoaXMuX21vZGVs
ID0gbW9kZWw7CisgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50ID0ge307CisgICAg
dGhpcy5fc2VjdXJpdHlPcmlnaW5zQnlJZCA9IHt9OworICAgIHRoaXMuX3VybFRvRE9NRG9tYWlu
cyA9IHt9OworICAgIHRoaXMuX2xhc3RPcmlnaW5JZCA9IDA7Cit9CisKK1dlYkluc3BlY3Rvci5S
ZXNvdXJjZVRyZWVNb2RlbC5TZWN1cml0eU9yaWdpblRyYWNrZXIucHJvdG90eXBlID0geworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSBzZWN1cml0
eU9yaWdpbgorICAgICAqLworICAgIF9hZGRTZWN1cml0eU9yaWdpbjogZnVuY3Rpb24oc2VjdXJp
dHlPcmlnaW4pCisgICAgeworICAgICAgICB2YXIgc2VjdXJpdHlPcmlnaW5JZCA9IHNlY3VyaXR5
T3JpZ2luLmlkKCk7CisgICAgICAgIGlmICghdGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50
W3NlY3VyaXR5T3JpZ2luSWRdKSB7CisgICAgICAgICAgICB0aGlzLl9zZWN1cml0eU9yaWdpbkZy
YW1lQ291bnRbc2VjdXJpdHlPcmlnaW5JZF0gPSAxOworICAgICAgICAgICAgdGhpcy5fbW9kZWwu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5F
dmVudFR5cGVzLlNlY3VyaXR5T3JpZ2luQWRkZWQsIHNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9zZWN1cml0eU9yaWdpbkZyYW1l
Q291bnRbc2VjdXJpdHlPcmlnaW5JZF0gKz0gMTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5T3JpZ2luCisgICAg
ICovCisgICAgX3JlbW92ZVNlY3VyaXR5T3JpZ2luOiBmdW5jdGlvbihzZWN1cml0eU9yaWdpbikK
KyAgICB7CisgICAgICAgIHZhciBzZWN1cml0eU9yaWdpbklkID0gc2VjdXJpdHlPcmlnaW4uaWQo
KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50
W3NlY3VyaXR5T3JpZ2luSWRdKTsKKyAgICAgICAgaWYgKHRoaXMuX3NlY3VyaXR5T3JpZ2luRnJh
bWVDb3VudFtzZWN1cml0eU9yaWdpbklkXSA9PT0gMSkgeworICAgICAgICAgICAgdGhpcy5fdW5i
aW5kU2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pOworICAgICAgICAgICAgdGhpcy5fbW9k
ZWwuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2Rl
bC5FdmVudFR5cGVzLlNlY3VyaXR5T3JpZ2luUmVtb3ZlZCwgc2VjdXJpdHlPcmlnaW4pOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHRoaXMuX3NlY3VyaXR5T3JpZ2lu
RnJhbWVDb3VudFtzZWN1cml0eU9yaWdpbklkXSAtPSAxOworICAgIH0sCisKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gc2VjdXJpdHlPcmlnaW4K
KyAgICAgKi8KKyAgICBfdW5iaW5kU2VjdXJpdHlPcmlnaW46IGZ1bmN0aW9uKHNlY3VyaXR5T3Jp
Z2luKQorICAgIHsKKyAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luSWQgPSBzZWN1cml0eU9yaWdp
bi5pZCgpOworICAgICAgICBkZWxldGUgdGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50W3Nl
Y3VyaXR5T3JpZ2luSWRdOworICAgICAgICBkZWxldGUgdGhpcy5fc2VjdXJpdHlPcmlnaW5zQnlJ
ZFtzZWN1cml0eU9yaWdpbklkXTsKKworICAgICAgICB2YXIgdXJsID0gc2VjdXJpdHlPcmlnaW4u
dXJsKCk7CisgICAgICAgIHZhciBkb21haW5NYXAgPSB0aGlzLl91cmxUb0RPTURvbWFpbnNbdXJs
XTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZG9tYWluTWFwKTsKKyAgICAgICAgdmFyIGRvbWFp
biA9IHNlY3VyaXR5T3JpZ2luLmRvbWFpblNldEluRE9NKCk7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGRvbWFpbk1hcFtkb21haW5dKTsKKyAgICAgICAgZGVsZXRlIGRvbWFpbk1hcFtkb21haW5d
OworICAgICAgICBpZiAoIU9iamVjdC5rZXlzKGRvbWFpbk1hcCkubGVuZ3RoKQorICAgICAgICAg
ICAgZGVsZXRlIHRoaXMuX3VybFRvRE9NRG9tYWluc1t1cmxdOworICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge1BhZ2VBZ2VudC5TZWN1cml0eU9yaWdpbn0gcGF5bG9hZAorICAgICAq
IEByZXR1cm4ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0KKyAgICAgKi8KKyAgICBfYmlu
ZFNlY3VyaXR5T3JpZ2luOiBmdW5jdGlvbihwYXlsb2FkKQorICAgIHsKKyAgICAgICAgdmFyIHVy
bCA9IHBheWxvYWQudXJsOworICAgICAgICB2YXIgZG9tYWluID0gcGF5bG9hZC5kb21haW5TZXRJ
bkRPTSB8fCAiIjsKKyAgICAgICAgdmFyIGRvbWFpbk1hcCA9IHRoaXMuX3VybFRvRE9NRG9tYWlu
c1t1cmxdOworICAgICAgICBpZiAoIWRvbWFpbk1hcCkgeworICAgICAgICAgICAgZG9tYWluTWFw
ID0ge307CisgICAgICAgICAgICB0aGlzLl91cmxUb0RPTURvbWFpbnNbdXJsXSA9IGRvbWFpbk1h
cDsKKyAgICAgICAgfQorICAgICAgICB2YXIgb3JpZ2luID0gZG9tYWluTWFwW2RvbWFpbl07Cisg
ICAgICAgIGlmICghb3JpZ2luKSB7CisgICAgICAgICAgICBvcmlnaW4gPSBuZXcgV2ViSW5zcGVj
dG9yLlNlY3VyaXR5T3JpZ2luKHVybCwgZG9tYWluLCBTdHJpbmcoKyt0aGlzLl9sYXN0T3JpZ2lu
SWQpKTsKKyAgICAgICAgICAgIGRvbWFpbk1hcFtkb21haW5dID0gb3JpZ2luOworICAgICAgICAg
ICAgdGhpcy5fc2VjdXJpdHlPcmlnaW5zQnlJZFtvcmlnaW4uaWQoKV0gPSBvcmlnaW47CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIG9yaWdpbiB8fCBudWxsOworICAgIH0sCisKKyAgICBfZGV0
YWNoTWFpbkZyYW1lOiBmdW5jdGlvbihtYWluRnJhbWUpCisgICAgeworICAgICAgICAvKioKKyAg
ICAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9IGZyYW1lCisg
ICAgICAgICAqLworICAgICAgICBmdW5jdGlvbiByZW1vdmVPcmlnaW5Gb3JGcmFtZShmcmFtZSkK
KyAgICAgICAgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmcmFtZS5jaGlsZEZy
YW1lcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICByZW1vdmVPcmlnaW5Gb3JGcmFtZS5j
YWxsKHRoaXMsIGZyYW1lLmNoaWxkRnJhbWVzW2ldKTsKKyAgICAgICAgICAgIGlmICghZnJhbWUu
aXNNYWluRnJhbWUoKSkKKyAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVTZWN1cml0eU9yaWdp
bihmcmFtZS5zZWN1cml0eU9yaWdpbik7CisgICAgICAgIH0KKyAgICAgICAgcmVtb3ZlT3JpZ2lu
Rm9yRnJhbWUuY2FsbCh0aGlzLCBtYWluRnJhbWUpOworICAgIH0sCisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge3N0cmluZ30gaWQKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuU2VjdXJp
dHlPcmlnaW59CisgICAgICovCisgICAgX3NlY3VyaXR5T3JpZ2luRm9ySWQ6IGZ1bmN0aW9uKGlk
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NlY3VyaXR5T3JpZ2luc0J5SWRbaWRdIHx8
IG51bGw7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge0FycmF5LjxXZWJJbnNw
ZWN0b3IuU2VjdXJpdHlPcmlnaW4+fQorICAgICAqLworICAgIF9zZWN1cml0eU9yaWdpbnM6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30g
aWQKKyAgICAgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufQorICAg
ICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24gY29udmVydGVyKGlkKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gdGhpcy5fc2VjdXJpdHlPcmlnaW5zQnlJZFtpZF07CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX3NlY3VyaXR5T3JpZ2luRnJhbWVDb3Vu
dCkubWFwKGNvbnZlcnRlci5iaW5kKHRoaXMpKTsKKyAgICB9Cit9CisKKy8qKgorICogQGNvbnN0
cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbH0gbW9kZWwK
ICAqIEBwYXJhbSB7P1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFtZX0gcGFyZW50RnJhbWUK
ICAqIEBwYXJhbSB7UGFnZUFnZW50LkZyYW1lfSBwYXlsb2FkCiAgKi8KQEAgLTQzMSw3ICs1MjUs
NyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWUgPSBmdW5jdGlvbihtb2RlbCwgcGFy
ZW50RnJhbWUsIHBheWxvYWQpCiAgICAgdGhpcy5fbG9hZGVySWQgPSBwYXlsb2FkLmxvYWRlcklk
OwogICAgIHRoaXMuX25hbWUgPSBwYXlsb2FkLm5hbWU7CiAgICAgdGhpcy5fdXJsID0gcGF5bG9h
ZC51cmw7Ci0gICAgdGhpcy5fc2VjdXJpdHlPcmlnaW4gPSBwYXlsb2FkLnNlY3VyaXR5T3JpZ2lu
OworICAgIHRoaXMuX3NlY3VyaXR5T3JpZ2luID0gbW9kZWwuX3NlY3VyaXR5T3JpZ2luVHJhY2tl
ci5fYmluZFNlY3VyaXR5T3JpZ2luKHBheWxvYWQuc2VjdXJpdHlPcmlnaW4pOwogICAgIHRoaXMu
X21pbWVUeXBlID0gcGF5bG9hZC5taW1lVHlwZTsKIAogICAgIC8qKgpAQCAtNDc0LDcgKzU2OCw3
IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgfSwK
IAogICAgIC8qKgotICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKiBAcmV0dXJuIHtXZWJJ
bnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59CiAgICAgICovCiAgICAgZ2V0IHNlY3VyaXR5T3JpZ2lu
KCkKICAgICB7CkBAIC01MjEsNyArNjE1LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZy
YW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fbG9hZGVySWQgPSBmcmFtZVBheWxvYWQu
bG9hZGVySWQ7CiAgICAgICAgIHRoaXMuX25hbWUgPSBmcmFtZVBheWxvYWQubmFtZTsKICAgICAg
ICAgdGhpcy5fdXJsID0gZnJhbWVQYXlsb2FkLnVybDsKLSAgICAgICAgdGhpcy5fc2VjdXJpdHlP
cmlnaW4gPSBmcmFtZVBheWxvYWQuc2VjdXJpdHlPcmlnaW47CisgICAgICAgIHRoaXMuX3NlY3Vy
aXR5T3JpZ2luID0gdGhpcy5fbW9kZWwuX3NlY3VyaXR5T3JpZ2luVHJhY2tlci5fYmluZFNlY3Vy
aXR5T3JpZ2luKGZyYW1lUGF5bG9hZC5zZWN1cml0eU9yaWdpbik7CiAgICAgICAgIHRoaXMuX21p
bWVUeXBlID0gZnJhbWVQYXlsb2FkLm1pbWVUeXBlOwogCiAgICAgICAgIHZhciBtYWluUmVzb3Vy
Y2UgPSB0aGlzLl9yZXNvdXJjZXNNYXBbdGhpcy5fdXJsXTsKQEAgLTY0Miw2ICs3MzYsNzUgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lLnByb3RvdHlwZSA9IHsKIAogLyoqCiAgKiBA
Y29uc3RydWN0b3IKKyAqIEBwYXJhbSB7c3RyaW5nfSB1cmwKKyAqIEBwYXJhbSB7c3RyaW5nfHVu
ZGVmaW5lZH0gZG9tYWluU2V0SW5ET00KKyAqIEBwYXJhbSB7c3RyaW5nfSBpZAorICovCitXZWJJ
bnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4gPSBmdW5jdGlvbih1cmwsIGRvbWFpblNldEluRE9NLCBp
ZCkKK3sKKyAgICB0aGlzLl91cmwgPSB1cmw7CisgICAgdGhpcy5fZG9tYWluU2V0SW5ET00gPSBk
b21haW5TZXRJbkRPTTsKKyAgICB0aGlzLl9pZCA9IGlkOworfQorCitXZWJJbnNwZWN0b3IuU2Vj
dXJpdHlPcmlnaW4ucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmlu
Z30KKyAgICAgKi8KKyAgICBpZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX2lkOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAg
ICovCisgICAgdXJsOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fdXJs
OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisg
ICAgZG9tYWluU2V0SW5ET006IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9kb21haW5TZXRJbkRPTSB8fCAiIjsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IG90aGVyCisgICAgICogQHJldHVybiB7Ym9v
bGVhbn0KKyAgICAgKi8KKyAgICBlcXVhbDogZnVuY3Rpb24ob3RoZXIpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5fdXJsID09PSBvdGhlci5fdXJsICYmIHRoaXMuX2RvbWFpblNldEluRE9N
ID09IG90aGVyLl9kb21haW5TZXRJbkRPTTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJl
dHVybiB7c3RyaW5nfQorICAgICAqLworICAgIHVpVGl0bGU6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICBpZiAodGhpcy51cmwoKSA9PT0gImZpbGU6Ly8iKQorICAgICAgICAgIHJldHVybiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkxvY2FsIEZpbGVzIik7CisKKyAgICAgIHZhciBkb21haW4gPSB0
aGlzLmRvbWFpblNldEluRE9NKCk7CisgICAgICB2YXIgc3VmZml4ID0gZG9tYWluID8gU3RyaW5n
LnNwcmludGYoIiAoJXMpIiwgZG9tYWluKSA6ICIiOworICAgICAgcmV0dXJuIHRoaXMudXJsKCkg
KyBzdWZmaXg7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge1BhZ2VBZ2VudC5T
ZWN1cml0eU9yaWdpbn0KKyAgICAgKi8KKyAgICB0b1Byb3RvY29sOiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICByZXR1cm4geyB1cmw6IHRoaXMuX3VybCwgZG9tYWluU2V0SW5ET006IHRoaXMu
X2RvbWFpblNldEluRE9NIHx8IHVuZGVmaW5lZCB9OworICAgIH0KK30KKworLyoqCisgKiBAY29u
c3RydWN0b3IKICAqIEBpbXBsZW1lbnRzIHtQYWdlQWdlbnQuRGlzcGF0Y2hlcn0KICAqLwogV2Vi
SW5zcGVjdG9yLlBhZ2VEaXNwYXRjaGVyID0gZnVuY3Rpb24ocmVzb3VyY2VUcmVlTW9kZWwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1Bh
bmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5l
bC5qcwppbmRleCA4ODA2MjY5Y2M4OWQyYzE1NWJhZjNhY2U2YWEwNDQyYmY4MDQ4YzY4Li45ZTk3
NDUzMzliMTJlYjE1MDhlNTE0OWRjZWQ4NmJmOWM2OGEwMWUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKQEAgLTE2MTAs
NyArMTYxMCw3IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LnByb3Rv
dHlwZSA9IHsKICAqLwogV2ViSW5zcGVjdG9yLklEQkRhdGFiYXNlVHJlZUVsZW1lbnQgPSBmdW5j
dGlvbihzdG9yYWdlUGFuZWwsIG1vZGVsLCBkYXRhYmFzZUlkKQogewotICAgIFdlYkluc3BlY3Rv
ci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LmNhbGwodGhpcywgc3RvcmFnZVBhbmVsLCBudWxsLCBk
YXRhYmFzZUlkLm5hbWUgKyAiIC0gIiArIGRhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW4sIFsiaW5k
ZXhlZC1kYi1zdG9yYWdlLXRyZWUtaXRlbSJdKTsKKyAgICBXZWJJbnNwZWN0b3IuQmFzZVN0b3Jh
Z2VUcmVlRWxlbWVudC5jYWxsKHRoaXMsIHN0b3JhZ2VQYW5lbCwgbnVsbCwgZGF0YWJhc2VJZC5u
YW1lICsgIiAtICIgKyBkYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luLnVpVGl0bGUoKSwgWyJpbmRl
eGVkLWRiLXN0b3JhZ2UtdHJlZS1pdGVtIl0pOwogICAgIHRoaXMuX21vZGVsID0gbW9kZWw7CiAg
ICAgdGhpcy5fZGF0YWJhc2VJZCA9IGRhdGFiYXNlSWQ7CiAgICAgdGhpcy5faWRiT2JqZWN0U3Rv
cmVUcmVlRWxlbWVudHMgPSB7fTsKQEAgLTE2MTksNyArMTYxOSw4IEBAIFdlYkluc3BlY3Rvci5J
REJEYXRhYmFzZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oc3RvcmFnZVBhbmVsLCBtb2RlbCwgZGF0
YWJhc2VJZCkKIFdlYkluc3BlY3Rvci5JREJEYXRhYmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9
IHsKICAgICBnZXQgaXRlbVVSTCgpCiAgICAgewotICAgICAgICByZXR1cm4gImluZGV4ZWREQjov
LyIgKyB0aGlzLl9kYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luICsgIi8iICsgdGhpcy5fZGF0YWJh
c2VJZC5uYW1lOworICAgICAgICB2YXIgb3JpZ2luID0gdGhpcy5fZGF0YWJhc2VJZC5zZWN1cml0
eU9yaWdpbjsKKyAgICAgICAgcmV0dXJuICJpbmRleGVkREI6Ly8iICsgb3JpZ2luLnVybCgpICsg
Ii8sIiArIG9yaWdpbi5kb21haW5TZXRJbkRPTSgpICsgIi8iICsgdGhpcy5fZGF0YWJhc2VJZC5u
YW1lOwogICAgIH0sCiAKICAgICBvbmF0dGFjaDogZnVuY3Rpb24oKQpAQCAtMTcyNiw3ICsxNzI3
LDcgQEAgV2ViSW5zcGVjdG9yLklEQk9iamVjdFN0b3JlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihz
dG9yYWdlUGFuZWwsIG1vZGVsLCBkYXRhYmFzZUkKIFdlYkluc3BlY3Rvci5JREJPYmplY3RTdG9y
ZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICBnZXQgaXRlbVVSTCgpCiAgICAgewotICAg
ICAgICByZXR1cm4gImluZGV4ZWREQjovLyIgKyB0aGlzLl9kYXRhYmFzZUlkLnNlY3VyaXR5T3Jp
Z2luICsgIi8iICsgdGhpcy5fZGF0YWJhc2VJZC5uYW1lICsgIi8iICsgdGhpcy5fb2JqZWN0U3Rv
cmUubmFtZTsKKyAgICAgICAgcmV0dXJuICJpbmRleGVkREI6Ly8iICsgdGhpcy5fZGF0YWJhc2VJ
ZC5zZWN1cml0eU9yaWdpbi51cmwoKSArICIvIiArIHRoaXMuX2RhdGFiYXNlSWQubmFtZSArICIv
IiArIHRoaXMuX29iamVjdFN0b3JlLm5hbWU7CiAgICAgfSwKIAogICAgLyoqCkBAIC0xODMxLDcg
KzE4MzIsNyBAQCBXZWJJbnNwZWN0b3IuSURCSW5kZXhUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHN0
b3JhZ2VQYW5lbCwgbW9kZWwsIGRhdGFiYXNlSWQsIG9iagogV2ViSW5zcGVjdG9yLklEQkluZGV4
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIGdldCBpdGVtVVJMKCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiAiaW5kZXhlZERCOi8vIiArIHRoaXMuX2RhdGFiYXNlSWQuc2VjdXJpdHlPcmln
aW4gKyAiLyIgKyB0aGlzLl9kYXRhYmFzZUlkLm5hbWUgKyAiLyIgKyB0aGlzLl9vYmplY3RTdG9y
ZS5uYW1lICsgIi8iICsgdGhpcy5faW5kZXgubmFtZTsKKyAgICAgICAgcmV0dXJuICJpbmRleGVk
REI6Ly8iICsgdGhpcy5fZGF0YWJhc2VJZC5zZWN1cml0eU9yaWdpbi51cmwoKSArICIvIiArIHRo
aXMuX2RhdGFiYXNlSWQubmFtZSArICIvIiArIHRoaXMuX29iamVjdFN0b3JlLm5hbWUgKyAiLyIg
KyB0aGlzLl9pbmRleC5uYW1lOwogICAgIH0sCiAKICAgICAvKioKQEAgLTE4ODMsMTQgKzE4ODQs
MTUgQEAgV2ViSW5zcGVjdG9yLklEQkluZGV4VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICov
CiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oc3RvcmFnZVBh
bmVsLCBkb21TdG9yYWdlLCBjbGFzc05hbWUpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLkJhc2VTdG9y
YWdlVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBzdG9yYWdlUGFuZWwsIG51bGwsIGRvbVN0b3JhZ2Uu
c2VjdXJpdHlPcmlnaW4gPyBkb21TdG9yYWdlLnNlY3VyaXR5T3JpZ2luIDogV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJMb2NhbCBGaWxlcyIpLCBbImRvbXN0b3JhZ2Utc3RvcmFnZS10cmVlLWl0ZW0i
LCBjbGFzc05hbWVdKTsKKyAgICBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5j
YWxsKHRoaXMsIHN0b3JhZ2VQYW5lbCwgbnVsbCwgZG9tU3RvcmFnZS5zZWN1cml0eU9yaWdpbi51
aVRpdGxlKCksIFsiZG9tc3RvcmFnZS1zdG9yYWdlLXRyZWUtaXRlbSIsIGNsYXNzTmFtZV0pOwog
ICAgIHRoaXMuX2RvbVN0b3JhZ2UgPSBkb21TdG9yYWdlOwogfQogCiBXZWJJbnNwZWN0b3IuRE9N
U3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICBnZXQgaXRlbVVSTCgpCiAgICAg
ewotICAgICAgICByZXR1cm4gInN0b3JhZ2U6Ly8iICsgdGhpcy5fZG9tU3RvcmFnZS5zZWN1cml0
eU9yaWdpbiArICIvIiArICh0aGlzLl9kb21TdG9yYWdlLmlzTG9jYWxTdG9yYWdlID8gImxvY2Fs
IiA6ICJzZXNzaW9uIik7CisgICAgICAgIHZhciBvcmlnaW4gPSB0aGlzLl9kb21TdG9yYWdlLnNl
Y3VyaXR5T3JpZ2luOworICAgICAgICByZXR1cm4gInN0b3JhZ2U6Ly8iICsgb3JpZ2luLnVybCgp
ICsgIi8sIiArIG9yaWdpbi5kb21haW5TZXRJbkRPTSgpICsgIi8iICsgKHRoaXMuX2RvbVN0b3Jh
Z2UuaXNMb2NhbFN0b3JhZ2UgPyAibG9jYWwiIDogInNlc3Npb24iKTsKICAgICB9LAogCiAgICAg
b25zZWxlY3Q6IGZ1bmN0aW9uKHNlbGVjdGVkQnlVc2VyKQpAQCAtMjAyMCw3ICsyMDIyLDcgQEAg
V2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9
IHsKICAqLwogV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1UcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHN0
b3JhZ2VQYW5lbCwgZmlsZVN5c3RlbSkKIHsKLSAgICB2YXIgZGlzcGxheU5hbWUgPSBmaWxlU3lz
dGVtLnR5cGUgKyAiIC0gIiArIGZpbGVTeXN0ZW0ub3JpZ2luOworICAgIHZhciBkaXNwbGF5TmFt
ZSA9IGZpbGVTeXN0ZW0udHlwZSArICIgLSAiICsgZmlsZVN5c3RlbS5vcmlnaW4udWlUaXRsZSgp
OwogICAgIFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LmNhbGwodGhpcywgc3Rv
cmFnZVBhbmVsLCBudWxsLCBkaXNwbGF5TmFtZSwgWyJmaWxlLXN5c3RlbS1zdG9yYWdlLXRyZWUt
aXRlbSJdKTsKICAgICB0aGlzLl9maWxlU3lzdGVtID0gZmlsZVN5c3RlbTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUnVudGltZU1vZGVsLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SdW50aW1lTW9kZWwuanMKaW5kZXgg
YmVmOTE3NzQ4ZDk5MjE4NzQwOWVlM2E1MmUxMWQyZDU0M2Q0NjVkZC4uNTQ4MjY0NDUzM2IxNzc1
ZDlkNmNiNjJmY2U0ZGQyN2MyM2MxMmVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9SdW50aW1lTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9SdW50aW1lTW9kZWwuanMKQEAgLTc0LDcgKzc0LDcgQEAgV2ViSW5z
cGVjdG9yLlJ1bnRpbWVNb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICAvKioKICAgICAgKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFtZX0gZnJhbWUKLSAgICAgKiBAcGFyYW0g
e3N0cmluZ30gc2VjdXJpdHlPcmlnaW4KKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZWN1
cml0eU9yaWdpbn0gc2VjdXJpdHlPcmlnaW4KICAgICAgKi8KICAgICBjb250ZXh0QnlGcmFtZUFu
ZFNlY3VyaXR5T3JpZ2luOiBmdW5jdGlvbihmcmFtZSwgc2VjdXJpdHlPcmlnaW4pCiAgICAgewpA
QCAtNDE0LDEzICs0MTQsMTUgQEAgV2ViSW5zcGVjdG9yLkZyYW1lRXhlY3V0aW9uQ29udGV4dExp
c3QucHJvdG90eXBlID0KICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9
IHNlY3VyaXR5T3JpZ2luCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmln
aW59IHNlY3VyaXR5T3JpZ2luCiAgICAgICovCiAgICAgY29udGV4dEJ5U2VjdXJpdHlPcmlnaW46
IGZ1bmN0aW9uKHNlY3VyaXR5T3JpZ2luKQogICAgIHsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB0aGlzLl9leGVjdXRpb25Db250ZXh0cy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAg
dmFyIGNvbnRleHQgPSB0aGlzLl9leGVjdXRpb25Db250ZXh0c1tpXTsKLSAgICAgICAgICAgIGlm
ICghY29udGV4dC5pc01haW5Xb3JsZENvbnRleHQgJiYgY29udGV4dC5uYW1lID09PSBzZWN1cml0
eU9yaWdpbikKKyAgICAgICAgICAgIC8vIEZJWE1FOiBjb250ZXh0Lm5hbWUgc2hvdWxkIGJlY29t
ZSBjb250ZXh0LnNlY3VyaXR5T3JpZ2luIGluIHRoZSBwcm90b2NvbCwgc28gdGhhdAorICAgICAg
ICAgICAgLy8gdGhlIGRvbWFpblNldEluRE9NIGZpZWxkIHNoYWxsIHBhcnRpY2lwYXRlIGluIHRo
ZSBvcmlnaW4gbWF0Y2hpbmcuCisgICAgICAgICAgICBpZiAoIWNvbnRleHQuaXNNYWluV29ybGRD
b250ZXh0ICYmIGNvbnRleHQubmFtZSA9PT0gc2VjdXJpdHlPcmlnaW4udXJsKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNvbnRleHQ7IAogICAgICAgICB9CiAgICAgfSwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5ODU1
MmE2MjY5NTVmOTU4NDBjZGM5ZDVjODU5YTg5NWM3ZWZiZDM4Li43ZDdhMGI0ZjU5MTAyZTc3OGMz
MmY3YTE5ZmM0ODMzNjdhZDI2NTRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTMtMDMtMDEg
IEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBbUHJvdG9jb2xdIFR1cm4gU2VjdXJpdHlPcmlnaW4gaW50byBhbiBvYmplY3Qg
Y29udGFpbmluZyAiZG9tYWluU2V0SW5ET00iCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA5NjAKKworICAgICAgICBGb2xsb3cgdGhlIEFQSSBhbmQg
bWV0aG9kIHNpZ25hdHVyZSBjaGFuZ2VzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9kb20tc3Rv
cmFnZS1vcGVuLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3Rl
bS9kZWxldGUtZW50cnkuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxl
c3lzdGVtL3JlcXVlc3QtZmlsZXN5c3RlbS1yb290Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0
cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLWRhdGEuaHRtbDoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtbmFtZXMuaHRtbDoKKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2Utc3RydWN0dXJlLmh0bWw6
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtdHJlZS9yZXNvdXJjZS10
cmVlLWV2ZW50cy5odG1sOgorCiAyMDEzLTAyLTI4ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxv
dkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogU2VsZWN0b3IncyByYXcg
c3RhcnQgcG9zaXRpb24gaW4gaXRzIGxpbmUgaXMgY29uc2lkZXJlZCB0byBiZSAwIHdoZW4gY29t
cHV0aW5nIFVJTG9jYXRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yLWVuYWJsZWQvZG9tLXN0b3JhZ2Utb3Blbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9kb20tc3RvcmFnZS1vcGVuLmh0bWwKaW5kZXggMTMwMjAw
NzI0ZTVhYWFlNDRmYTI2Mjc2MjcwMTc4YWQyNGY2YjZkMC4uMzVhYzY4M2U5YjBlM2I3MTI3ZTVj
NWJkNWQxZTMxMTAxZDQyNDE5YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3ItZW5hYmxlZC9kb20tc3RvcmFnZS1vcGVuLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9kb20tc3RvcmFnZS1vcGVuLmh0bWwKQEAgLTIy
LDcgKzIyLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgewogICAgICAgICB2YXIgc3RvcmFnZXMg
PSBXZWJJbnNwZWN0b3IuZG9tU3RvcmFnZU1vZGVsLnN0b3JhZ2VzKCk7CiAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgc3RvcmFnZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJTZWN1cml0eU9yaWdpbjogIiArIHN0b3JhZ2VzW2ldLnNlY3Vy
aXR5T3JpZ2luKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTZWN1cml0
eU9yaWdpbjogIiArIHN0b3JhZ2VzW2ldLnNlY3VyaXR5T3JpZ2luLnVpVGl0bGUoKSk7CiAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiSXNMb2NhbFN0b3JhZ2U6ICIgKyBzdG9y
YWdlc1tpXS5pc0xvY2FsU3RvcmFnZSk7CiAgICAgICAgIH0KICAgICAgICAgSW5zcGVjdG9yVGVz
dC5jb21wbGV0ZVRlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2ZpbGVzeXN0ZW0vZGVsZXRlLWVudHJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RlbGV0ZS1lbnRyeS5odG1sCmluZGV4IGFkOGI0MzYw
ODVmYzU0MjYyMWI2ODgzNWVlMWUyNjZmYzViMTljMTguLmU0ZWU1YjFlY2ZmZjBiZDMzNDM0MjE5
MDJiMGNhN2U5OWYyMGE4NTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2ZpbGVzeXN0ZW0vZGVsZXRlLWVudHJ5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9kZWxldGUtZW50cnkuaHRtbApAQCAtNjMsNyAr
NjMsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlKQogICAg
ICAgICB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZXJyb3JDb2RlOiAi
ICsgZXJyb3JDb2RlKTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVT
eXN0ZW1Sb290KCJodHRwOi8vMTI3LjAuMC4xOjgwMDAiLCAidGVtcG9yYXJ5IiwgdGVzdFN0ZXAu
c2hpZnQoKSk7CisgICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlU3lzdGVt
Um9vdChuZXcgV2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2luKCJodHRwOi8vMTI3LjAuMC4xOjgw
MDAiLCB1bmRlZmluZWQsICIxIiksICJ0ZW1wb3JhcnkiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKICAg
ICAgICAgfSwKIAogICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGJhY2tlbmRSb290RW50cnkp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVt
L3JlcXVlc3QtZmlsZXN5c3RlbS1yb290Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5c3RlbS1yb290Lmh0bWwKaW5kZXggOGY1
Y2VmYTkxZGQ4MTUxYzc3Mzc3MDAzZmQ5ZTQ3OWI0MzZlYjk3My4uY2YwNjQ0NDJmYzVlYWRlMzc5
ODVhNTRhOWMxOTZhYzY5ZjIzNjdmMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGVzeXN0ZW0tcm9vdC5odG1sCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxl
c3lzdGVtLXJvb3QuaHRtbApAQCAtOSw2ICs5LDEyIEBAIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBydW5UZXN0KTsKIGZ1bmN0aW9uIHRlc3QoKQogewogICAg
IHZhciBmaWxlU3lzdGVtTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbDsK
KyAgICB2YXIgbGFzdE9yaWdpbklkID0gMDsKKworICAgIGZ1bmN0aW9uIGNyZWF0ZVNlY3VyaXR5
T3JpZ2luKHVybCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlNlY3Vy
aXR5T3JpZ2luKHVybCwgdW5kZWZpbmVkLCBTdHJpbmcgKCsrbGFzdE9yaWdpbklkKSk7CisgICAg
fQogCiAgICAgdmFyIHRlc3RTdGVwID0gWwogICAgICAgICBmdW5jdGlvbigpCkBAIC0yMCwxOSAr
MjYsMTkgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgZnVuY3Rpb24oKQogICAgICAgICB7
Ci0gICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlU3lzdGVtUm9vdCgiaHR0
cDovLzEyNy4wLjAuMTo4MDAwIiwgInRlbXBvcmFyeSIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAg
ICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RmlsZVN5c3RlbVJvb3QoY3JlYXRlU2Vj
dXJpdHlPcmlnaW4oImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIpLCAidGVtcG9yYXJ5IiwgdGVzdFN0
ZXAuc2hpZnQoKSk7CiAgICAgICAgIH0sCiAKICAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBi
YWNrZW5kUm9vdEVudHJ5KQogICAgICAgICB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1
bXBGaWxlU3lzdGVtUm9vdFJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5
KTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KCJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAiLCAiZml6emJ1enoiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAg
ICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KGNyZWF0ZVNl
Y3VyaXR5T3JpZ2luKCJodHRwOi8vMTI3LjAuMC4xOjgwMDAiKSwgImZpenpidXp6IiwgdGVzdFN0
ZXAuc2hpZnQoKSk7CiAgICAgICAgIH0sCiAKICAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBi
YWNrZW5kUm9vdEVudHJ5KQogICAgICAgICB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1
bXBGaWxlU3lzdGVtUm9vdFJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5
KTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KCJo
dHRwOi8vZXhhbXBsZS5jb20iLCAidGVtcG9yYXJ5IiwgdGVzdFN0ZXAuc2hpZnQoKSk7CisgICAg
ICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlU3lzdGVtUm9vdChjcmVhdGVTZWN1
cml0eU9yaWdpbigiaHR0cDovL2V4YW1wbGUuY29tIiksICJ0ZW1wb3JhcnkiLCB0ZXN0U3RlcC5z
aGlmdCgpKTsKICAgICAgICAgfSwKIAogICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGJhY2tl
bmRSb290RW50cnkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLWRhdGEuaHRtbAppbmRleCAxMzYzZjJlOTQzYTFl
MzQ2YTA5ZmZhNTI3NzNjNmRkZjRhMzY1ZDNkLi4wYzczNWRiOTU4ZmZkMDlkYWNhNDdhMTg4ODYy
YjhjNWEwNTEyZTE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1kYXRhLmh0bWwKQEAgLTgsNyArOCw3IEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgIHZhciBJREJLZXlSYW5nZSA9IHdpbmRvdy5JREJLZXlSYW5n
ZSB8fCB3aW5kb3cud2Via2l0SURCS2V5UmFuZ2U7CiAgICAgdmFyIGluZGV4ZWREQk1vZGVsID0g
bmV3IFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbCgpOwogICAgIHZhciBtYWluRnJhbWVJZCA9
IFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5tYWluRnJhbWUuaWQ7Ci0gICAgdmFyIHNl
Y3VyaXR5T3JpZ2luID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgdmFyIHNlY3VyaXR5
T3JpZ2luID0gbmV3IFdlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbigiaHR0cDovLzEyNy4wLjAu
MTo4MDAwIiwgdW5kZWZpbmVkLCAiMSIpOwogICAgIHZhciBkYXRhYmFzZU5hbWUgPSAidGVzdERh
dGFiYXNlIjsKICAgICB2YXIgb2JqZWN0U3RvcmVOYW1lID0gInRlc3RPYmplY3RTdG9yZSI7CiAg
ICAgdmFyIGluZGV4TmFtZSA9ICJ0ZXN0SW5kZXhOYW1lIjsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1uYW1lcy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLW5hbWVz
Lmh0bWwKaW5kZXggMDE0M2Y3Mzg0MmViZWFlOTgxZGQwYzI3OTgwYjExY2UzYTQ3ZWFkZC4uZDgy
NTllOTI0YTJlMGRlY2FmZmRhMWYyNTNjNGMzODcxYWVhNmE2MyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLW5hbWVzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNl
LW5hbWVzLmh0bWwKQEAgLTEzLDcgKzEzLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCJEdW1waW5nIGRhdGFiYXNlIG5hbWVzOiIpOwogICAgICAg
ICB2YXIgc2VjdXJpdHlPcmlnaW5zID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLnNl
Y3VyaXR5T3JpZ2lucygpOwogICAgICAgICB2YXIgc2VjdXJpdHlPcmlnaW4gPSBzZWN1cml0eU9y
aWdpbnNbMF07Ci0gICAgICAgIHZhciBuYW1lcyA9IGluZGV4ZWREQk1vZGVsLl9kYXRhYmFzZU5h
bWVzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9yaWdpbl07CisgICAgICAgIHZhciBuYW1lcyA9
IGluZGV4ZWREQk1vZGVsLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9y
aWdpbi5pZCgpXTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7ICsr
aSkKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIgICAgIiArIG5hbWVzW2ld
KTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLXN0cnVjdHVy
ZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFi
YXNlLXN0cnVjdHVyZS5odG1sCmluZGV4IGQ4MjNiZWZmNGQ2NmIyMzY2YTI2OWFmZDhkNTcyZTM2
NTY0Y2NjMmUuLmE3OGI5MTYyM2NlZWVmZTE1MTU4YWYzZGRhNjVkNGIxMzE5YzE1M2EgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFz
ZS1zdHJ1Y3R1cmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9p
bmRleGVkZGIvZGF0YWJhc2Utc3RydWN0dXJlLmh0bWwKQEAgLTgsNyArOCw3IEBAIGZ1bmN0aW9u
IHRlc3QoKQogICAgIHZhciBpbmRleGVkREJNb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuSW5kZXhl
ZERCTW9kZWwoKTsKICAgICB2YXIgbWFpbkZyYW1lSWQgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VU
cmVlTW9kZWwubWFpbkZyYW1lLmlkOwogICAgIHZhciBkYXRhYmFzZU5hbWUgPSAidGVzdERhdGFi
YXNlMSI7Ci0gICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7
CisgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gbmV3IFdlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdp
bigiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiwgdW5kZWZpbmVkLCAiMSIpOwogICAgIHZhciBkYXRh
YmFzZUlkID0gbmV3IFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5EYXRhYmFzZUlkKHNlY3Vy
aXR5T3JpZ2luLCBkYXRhYmFzZU5hbWUpOwogCiAgICAgZnVuY3Rpb24gZHVtcERhdGFiYXNlKCkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXRy
ZWUvcmVzb3VyY2UtdHJlZS1ldmVudHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3Jlc291cmNlLXRyZWUvcmVzb3VyY2UtdHJlZS1ldmVudHMuaHRtbAppbmRleCBlZTFl
YzlkNzViNWRkNzVmY2M2MDczZmYxNDM5OGQ3ZjA4OTc4ZGJmLi42OGE5NGMxNmZlMzU3MzZlNTE5
NWFiYjZmYjNmYjMzNDM3NjYxZGVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZS10cmVlL3Jlc291cmNlLXRyZWUtZXZlbnRzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtdHJlZS9yZXNvdXJjZS10
cmVlLWV2ZW50cy5odG1sCkBAIC0zMCw3ICszMCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICAgICAgY2FzZSAiU2VjdXJpdHlPcmlnaW5BZGRlZCI6CiAgICAgICAgICAgICBjYXNlICJTZWN1
cml0eU9yaWdpblJlbW92ZWQiOgogICAgICAgICAgICAgICAgIHZhciBzZWN1cml0eU9yaWdpbiA9
IGV2ZW50LmRhdGE7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAg
ICAiICsgZXZlbnROYW1lICsgIiA6ICIgKyBzZWN1cml0eU9yaWdpbik7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAgICAiICsgZXZlbnROYW1lICsgIiA6ICIgKyBz
ZWN1cml0eU9yaWdpbi51aVRpdGxlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIH0KQEAgLTU5LDcgKzU5LDcgQEAgZnVuY3Rpb24g
dGVzdCgpCiAgICAgICAgIGZyYW1lUGF5bG9hZC5sb2FkZXJJZCA9ICJsb2FkZXItIiArIGlkOwog
ICAgICAgICBmcmFtZVBheWxvYWQubmFtZSA9ICJmcmFtZS0iICsgaWQ7CiAgICAgICAgIGZyYW1l
UGF5bG9hZC51cmwgPSAiaHR0cDovL2ZyYW1lLyIgKyAobmFtZSB8fCBpZCkgKyAiLmh0bWwiOwot
ICAgICAgICBmcmFtZVBheWxvYWQuc2VjdXJpdHlPcmlnaW4gPSBmcmFtZVBheWxvYWQudXJsOwor
ICAgICAgICBmcmFtZVBheWxvYWQuc2VjdXJpdHlPcmlnaW4gPSB7IHVybDogZnJhbWVQYXlsb2Fk
LnVybCB9OwogICAgICAgICBmcmFtZVBheWxvYWQubWltZVR5cGUgPSAidGV4dC9odG1sIjsKICAg
ICAgICAgcmV0dXJuIGZyYW1lUGF5bG9hZDsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190932</attachid>
            <date>2013-03-01 04:27:58 -0800</date>
            <delta_ts>2013-03-01 08:01:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110960-20130301162409.patch</filename>
            <type>text/plain</type>
            <size>72986</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE5OTBiMzRmMDNjN2Nm
ZDVjNjAxYmE3YjhkMWI3YmYxMzMxNjgwMy4uMGQwMjdjZDcxYWY2NzllNGM5NjI2MGQ5OTNhNTIx
M2EzZmUxNzgwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxMy0wMy0wMSAgQWxl
eGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFtQcm90b2NvbF0gVHVybiBTZWN1cml0eU9yaWdpbiBpbnRvIGFuIG9iamVjdCBjb250
YWluaW5nICJkb21haW5TZXRJbkRPTSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMDk2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoZSByZWxhdGVkIGJhY2tlbmQgY29kZSBoYXMgYmVlbiBjaGFuZ2Vk
IHRvIGhhbmRsZSBTZWN1cml0eU9yaWdpbiBhcyBhbiBJbnNwZWN0b3JPYmplY3QgcmF0aGVyIHRo
YW4gYSBTdHJpbmcuCisgICAgICAgIFdoZXJlIGFwcGxpY2FibGUsIHRoZSBVSSBjb2RlIGhhcyBi
ZWVuIGNoYW5nZWQgdG8gdXNlIHNlY3VyaXR5T3JpZ2luLnVpVGl0bGUoKSBhcyBpdHMgdmlzdWFs
IHJlcHJlc2VudGF0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hh
bmdlLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOiBJbnRyb2R1Y2UgUGFn
ZS5TZWN1cml0eU9yaWdpbi4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcDogRm9sbG93IHRoZSBwcm90b2NvbCBjaGFuZ2UuCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2VJZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmZpbmRTdG9yYWdlQXJlYSk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHA6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0RmlsZVN5c3RlbVJvb3Qp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2VOYW1l
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERh
dGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1
ZXN0RGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjppbnNwZWN0b3JPYmplY3RUb1NlY3Vy
aXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2VjdXJp
dHlPcmlnaW5Ub0luc3BlY3Rvck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL0RPTVN0b3JhZ2UuanM6IERpdHRvLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3Jh
Z2Uuc3RvcmFnZUlkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlLnByb3RvdHlw
ZS5pZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZS5wcm90b3R5cGUuZ2V0SXRl
bXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UucHJvdG90eXBlLnNldEl0ZW0p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UucHJvdG90eXBlLnJlbW92ZUl0ZW0p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5wcm90b3R5cGUuX3NlY3Vy
aXR5T3JpZ2luQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5w
cm90b3R5cGUuX3NlY3VyaXR5T3JpZ2luUmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NU3RvcmFnZU1vZGVsLnByb3RvdHlwZS5fc3RvcmFnZUtleSk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9FeHRlbnNpb25BdWRpdENhdGVnb3J5LmpzOiBEaXR0by4KKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qczogRGl0dG8uCisgICAgICAg
IChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fb25tZXNzYWdlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLmV2YWx1YXRlKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qczogRGl0dG8u
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZS5fcmVzZXQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUuX3NlY3Vy
aXR5T3JpZ2luQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5w
cm90b3R5cGUuX3NlY3VyaXR5T3JpZ2luUmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZS5fYWRkT3JpZ2luKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLl9yZW1vdmVPcmlnaW4pOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUuX3JlcXVlc3RGaWxlU3lzdGVt
Um9vdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZS5f
ZmlsZVN5c3RlbVJvb3RSZWNlaXZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bU1vZGVsLnByb3RvdHlwZS5fcmVtb3ZlRmlsZVN5c3RlbSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW0ucHJvdG90eXBlLmdldCBuYW1lKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQk1vZGVsLmpzOiBEaXR0by4KKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUuX3Jlc2V0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUucmVmcmVzaERhdGFiYXNl
TmFtZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZS5f
c2VjdXJpdHlPcmlnaW5BZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9k
ZWwucHJvdG90eXBlLl9zZWN1cml0eU9yaWdpblJlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZS5fYWRkT3JpZ2luKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUuX3JlbW92ZU9yaWdpbik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlLl91cGRhdGVPcmlnaW5EYXRh
YmFzZU5hbWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5
cGUuX2xvYWREYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJN
b2RlbC5wcm90b3R5cGUuX2xvYWREYXRhYmFzZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5k
ZXhlZERCTW9kZWwucHJvdG90eXBlLik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERC
TW9kZWwucHJvdG90eXBlLl9yZXF1ZXN0RGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5k
ZXhlZERCTW9kZWwuRGF0YWJhc2VJZC5wcm90b3R5cGUuZXF1YWxzKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQlZpZXdzLmpzOiBEaXR0by4KKyAgICAgICAgKFdlYklu
c3BlY3Rvci5JREJEYXRhYmFzZVZpZXcucHJvdG90eXBlLl9yZWZyZXNoRGF0YWJhc2UpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwuanM6IERpdHRvLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUuX2FkZFNlY3VyaXR5T3JpZ2luKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUuX3JlbW92
ZVNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2Rl
bC5wcm90b3R5cGUuX2JpbmRTZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLl91bmJpbmRTZWN1cml0eU9yaWdpbik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLnNlY3VyaXR5T3Jp
Z2luRm9ySWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3Rv
dHlwZS5zZWN1cml0eU9yaWdpbnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJl
ZU1vZGVsLnByb3RvdHlwZS5faGFuZGxlTWFpbkZyYW1lRGV0YWNoZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZS5fZnJhbWVOYXZpZ2F0ZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFtZS5wcm90b3R5cGUuX25hdmlnYXRlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbik6IFRoZSBmcm9udC1lbmQgcmVwcmVzZW50YXRp
b24gb2YgdGhlIFBhZ2UuU2VjdXJpdHlPcmlnaW4gdHlwZS4KKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TZWN1cml0eU9yaWdpbi5wcm90b3R5cGUuaWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNl
Y3VyaXR5T3JpZ2luLnByb3RvdHlwZS51cmwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNlY3Vy
aXR5T3JpZ2luLnByb3RvdHlwZS5kb21haW5TZXRJbkRPTSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2VjdXJpdHlPcmlnaW4ucHJvdG90eXBlLmVxdWFsKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TZWN1cml0eU9yaWdpbi5wcm90b3R5cGUudWlUaXRsZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2VjdXJpdHlPcmlnaW4ucHJvdG90eXBlLnRvUHJvdG9jb2wpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanM6IEZvbGxvdyB0aGUgcHJvdG9jb2wgY2hh
bmdlLgorICAgICAgICAoV2ViSW5zcGVjdG9yLklEQkRhdGFiYXNlVHJlZUVsZW1lbnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLklEQkRhdGFiYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlLmdldCBp
dGVtVVJMKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JREJPYmplY3RTdG9yZVRyZWVFbGVtZW50
LnByb3RvdHlwZS5nZXQgaXRlbVVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSURCSW5kZXhU
cmVlRWxlbWVudC5wcm90b3R5cGUuZ2V0IGl0ZW1VUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRPTVN0b3JhZ2VUcmVlRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFn
ZVRyZWVFbGVtZW50LnByb3RvdHlwZS5nZXQgaXRlbVVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1J1bnRpbWVNb2RlbC5qczogRGl0dG8uCisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVFeGVj
dXRpb25Db250ZXh0TGlzdC5wcm90b3R5cGUuY29udGV4dEJ5U2VjdXJpdHlPcmlnaW4pOgorCiAy
MDEzLTAzLTAxICBFdWdlbmUgS2x5dWNobmlrb3YgIDxldXN0YXNAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFtEYXRhR3JpZF0gQ29sdW1ucyBhcmUgbWlzYWxpZ25lZCBh
ZnRlciByb3dzIGJlaW5nIHJlZnJlc2hlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbgppbmRleCAzMzdmOWVlYTM3YzBjZDQ3ZGZkODAyMzFiY2U1ZmVhMzdjMTc1YWQ0Li4x
MzA5MmI0N2I5ZGIxNDY3NGY3MTc5MmI3OWVmZWZkNmI0MTQ2YTcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0xMDIsNiArMTAyLDE1IEBACiAgICAgICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogIlJlc291cmNlIHR5cGUgYXMgaXQgd2FzIHBlcmNlaXZlZCBi
eSB0aGUgcmVuZGVyaW5nIGVuZ2luZS4iCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICJpZCI6ICJTZWN1cml0eU9yaWdpbiIsCisgICAgICAgICAgICAgICAg
InR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGVzY3Jp
cHRvciBvZiB0aGUgU2VjdXJpdHlPcmlnaW4gb2JqZWN0LiIsCisgICAgICAgICAgICAgICAgInBy
b3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUi
OiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkFzc29jaWF0ZWQgU2VjdXJpdHlPcmlnaW4gVVJM
LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkb21haW5TZXRJbkRPTSIsICJ0
eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJTZWN1cml0
eU9yaWdpbiBkb21haW4sIGlmIG9uZSBoYXMgYmVlbiBzZXQgaW4gRE9NLiIgfQorICAgICAgICAg
ICAgICAgIF0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
ImlkIjogIkZyYW1lIiwKICAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJJbmZvcm1hdGlvbiBhYm91dCB0aGUgRnJhbWUgb24g
dGhlIHBhZ2UuIiwKQEAgLTExMSw3ICsxMjAsNyBAQAogICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImxvYWRlcklkIiwgIiRyZWYiOiAiTmV0d29yay5Mb2FkZXJJZCIsICJkZXNjcmlwdGlv
biI6ICJJZGVudGlmaWVyIG9mIHRoZSBsb2FkZXIgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZnJhbWUu
IiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWUiLCAidHlwZSI6ICJzdHJp
bmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiRnJhbWUncyBuYW1lIGFzIHNw
ZWNpZmllZCBpbiB0aGUgdGFnLiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1
cmwiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiRnJhbWUgZG9jdW1lbnQncyBV
UkwuIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNlY3VyaXR5T3JpZ2luIiwg
InR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkZyYW1lIGRvY3VtZW50J3Mgc2VjdXJp
dHkgb3JpZ2luLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzZWN1cml0eU9y
aWdpbiIsICIkcmVmIjogIlNlY3VyaXR5T3JpZ2luIiwgImRlc2NyaXB0aW9uIjogIkZyYW1lIGRv
Y3VtZW50J3Mgc2VjdXJpdHkgb3JpZ2luLiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJtaW1lVHlwZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJGcmFtZSBk
b2N1bWVudCdzIG1pbWVUeXBlIGFzIGRldGVybWluZWQgYnkgdGhlIGJyb3dzZXIuIiB9CiAgICAg
ICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQpAQCAtNTkxLDcg
KzYwMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidmFsdWUiLCAidHlwZSI6
ICJhbnkiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiUmVtb3RlIG9iamVjdCB2
YWx1ZSAoaW4gY2FzZSBvZiBwcmltaXRpdmUgdmFsdWVzIG9yIEpTT04gdmFsdWVzIGlmIGl0IHdh
cyByZXF1ZXN0ZWQpLiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkZXNjcmlw
dGlvbiIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdC4iIH0sCiAgICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAib2JqZWN0SWQiLCAiJHJlZiI6ICJSZW1vdGVPYmplY3RJZCIsICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgb2JqZWN0IGlkZW50aWZpZXIg
KGZvciBub24tcHJpbWl0aXZlIHZhbHVlcykuIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInByZXZpZXciLCAiJHJlZiI6ICJPYmplY3RQcmV2aWV3IiwgIm9wdGlvbmFsIjogdHJ1
ZSwgImRlc2NyaXB0aW9uIjogIlByZXZpZXcgY29udGFpbnNpbmcgYWJicmV2aWF0ZWQgcHJvcGVy
dHkgdmFsdWVzLiIsICJoaWRkZW4iOiB0cnVlIH0KKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJwcmV2aWV3IiwgIiRyZWYiOiAiT2JqZWN0UHJldmlldyIsICJvcHRpb25hbCI6IHRydWUs
ICJkZXNjcmlwdGlvbiI6ICJQcmV2aWV3IGNvbnRhaW5pbmcgYWJicmV2aWF0ZWQgcHJvcGVydHkg
dmFsdWVzLiIsICJoaWRkZW4iOiB0cnVlIH0KICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAg
ICB9LAogICAgICAgICAgICAgewpAQCAtMTM3Miw3ICsxMzgxLDcgQEAKICAgICAgICAgICAgICAg
ICAibmFtZSI6ICJyZXF1ZXN0RGF0YWJhc2VOYW1lcyIsCiAgICAgICAgICAgICAgICAgImFzeW5j
IjogdHJ1ZSwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJzZWN1cml0eU9yaWdpbiIsICJ0eXBlIjogInN0cmluZyIsICJkZXNj
cmlwdGlvbiI6ICJTZWN1cml0eSBvcmlnaW4uIiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAic2VjdXJpdHlPcmlnaW4iLCAiJHJlZiI6ICJQYWdlLlNlY3VyaXR5T3JpZ2luIiwgImRl
c2NyaXB0aW9uIjogIlNlY3VyaXR5IG9yaWdpbi4iIH0KICAgICAgICAgICAgICAgICBdLAogICAg
ICAgICAgICAgICAgICJyZXR1cm5zIjogWwogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImRhdGFiYXNlTmFtZXMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgInR5cGUiOiAic3Ry
aW5nIiB9LCAiZGVzY3JpcHRpb24iOiAiRGF0YWJhc2UgbmFtZXMgZm9yIG9yaWdpbi4iIH0KQEAg
LTEzODMsNyArMTM5Miw3IEBACiAgICAgICAgICAgICAgICAgIm5hbWUiOiAicmVxdWVzdERhdGFi
YXNlIiwKICAgICAgICAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgICAgICAgICJw
YXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNlY3VyaXR5T3Jp
Z2luIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlNlY3VyaXR5IG9yaWdpbi4i
IH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2VjdXJpdHlPcmlnaW4iLCAiJHJl
ZiI6ICJQYWdlLlNlY3VyaXR5T3JpZ2luIiwgImRlc2NyaXB0aW9uIjogIlNlY3VyaXR5IG9yaWdp
bi4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YWJhc2VOYW1lIiwgInR5
cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkRhdGFiYXNlIG5hbWUuIiB9CiAgICAgICAg
ICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKQEAgLTEzOTUsNyArMTQw
NCw3IEBACiAgICAgICAgICAgICAgICAgIm5hbWUiOiAicmVxdWVzdERhdGEiLAogICAgICAgICAg
ICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0g
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2VjdXJpdHlPcmlnaW4iLCAidHlwZSI6ICJz
dHJpbmciLCAiZGVzY3JpcHRpb24iOiAiU2VjdXJpdHkgb3JpZ2luLiIgfSwKKyAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJzZWN1cml0eU9yaWdpbiIsICIkcmVmIjogIlBhZ2UuU2VjdXJp
dHlPcmlnaW4iLCAiZGVzY3JpcHRpb24iOiAiU2VjdXJpdHkgb3JpZ2luLiIgfSwKICAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJkYXRhYmFzZU5hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAi
ZGVzY3JpcHRpb24iOiAiRGF0YWJhc2UgbmFtZS4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAib2JqZWN0U3RvcmVOYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9u
IjogIk9iamVjdCBzdG9yZSBuYW1lLiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJpbmRleE5hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiSW5kZXggbmFt
ZSwgZW1wdHkgc3RyaW5nIGZvciBvYmplY3Qgc3RvcmUgZGF0YSByZXF1ZXN0cy4iIH0sCkBAIC0x
NDIyLDcgKzE0MzEsNyBAQAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJET00gU3Rv
cmFnZSBpZGVudGlmaWVyLiIsCiAgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUsCiAgICAg
ICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAic2VjdXJpdHlPcmlnaW4iLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiU2Vj
dXJpdHkgb3JpZ2luIGZvciB0aGUgc3RvcmFnZS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAic2VjdXJpdHlPcmlnaW4iLCAiJHJlZiI6ICJQYWdlLlNlY3VyaXR5T3JpZ2luIiwg
ImRlc2NyaXB0aW9uIjogIlNlY3VyaXR5IG9yaWdpbiBmb3IgdGhlIHN0b3JhZ2UuIiB9LAogICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzTG9jYWxTdG9yYWdlIiwgInR5cGUiOiAiYm9v
bGVhbiIsICJkZXNjcmlwdGlvbiI6ICJXaGV0aGVyIHRoZSBzdG9yYWdlIGlzIGxvY2FsIHN0b3Jh
Z2UgKG5vdCBzZXNzaW9uIHN0b3JhZ2UpLiIgfQogICAgICAgICAgICAgICAgIF0KICAgICAgICAg
ICAgIH0sCkBAIC0xNjI4LDcgKzE2MzcsNyBAQAogICAgICAgICAgICAgICAgICJuYW1lIjogInJl
cXVlc3RGaWxlU3lzdGVtUm9vdCIsCiAgICAgICAgICAgICAgICAgImFzeW5jIjogdHJ1ZSwKICAg
ICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJvcmlnaW4iLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiU2VjdXJpdHkg
b3JpZ2luIG9mIHJlcXVlc3RpbmcgRmlsZVN5c3RlbS4gT25lIG9mIGZyYW1lcyBpbiBjdXJyZW50
IHBhZ2UgbmVlZHMgdG8gaGF2ZSB0aGlzIHNlY3VyaXR5IG9yaWdpbi4iIH0sCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAib3JpZ2luIiwgIiRyZWYiOiAiUGFnZS5TZWN1cml0eU9yaWdp
biIsICJkZXNjcmlwdGlvbiI6ICJTZWN1cml0eSBvcmlnaW4gb2YgcmVxdWVzdGluZyBGaWxlU3lz
dGVtLiBPbmUgb2YgZnJhbWVzIGluIGN1cnJlbnQgcGFnZSBuZWVkcyB0byBoYXZlIHRoaXMgc2Vj
dXJpdHkgb3JpZ2luLiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0eXBlIiwg
InR5cGUiOiAic3RyaW5nIiwgImVudW0iOiBbInRlbXBvcmFyeSIsICJwZXJzaXN0ZW50Il0sICJk
ZXNjcmlwdGlvbiI6ICJGaWxlU3lzdGVtIHR5cGUgb2YgcmVxdWVzdGluZyBGaWxlU3lzdGVtLiIg
fQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQu
Y3BwCmluZGV4IGIzZTBlMTZjZWUyODIwY2M2MDc4MTMzNGIwZmY5MDk4N2FlODBhZDYuLjdiYWNj
YWJlNjY0Y2ViY2Y0MTFlYjU4NmI4OWIzOWM1MDI3NDRhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCkBAIC0xOTMs
NyArMTkzLDcgQEAgU3RyaW5nIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFnZUlkKFN0
b3JhZ2UqIHN0b3JhZ2UpCiBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET01TdG9yYWdlOjpTdG9y
YWdlSWQ+IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFnZUlkKFNlY3VyaXR5T3JpZ2lu
KiBzZWN1cml0eU9yaWdpbiwgYm9vbCBpc0xvY2FsU3RvcmFnZSkKIHsKICAgICByZXR1cm4gVHlw
ZUJ1aWxkZXI6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZDo6Y3JlYXRlKCkKLSAgICAgICAgLnNldFNl
Y3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luLT50b1Jhd1N0cmluZygpKQorICAgICAgICAuc2V0
U2VjdXJpdHlPcmlnaW4oSW5zcGVjdG9yUGFnZUFnZW50OjpzZWN1cml0eU9yaWdpblRvSW5zcGVj
dG9yT2JqZWN0KHNlY3VyaXR5T3JpZ2luKSkKICAgICAgICAgLnNldElzTG9jYWxTdG9yYWdlKGlz
TG9jYWxTdG9yYWdlKS5yZWxlYXNlKCk7CiB9CiAKQEAgLTIxNiw5ICsyMTYsOSBAQCB2b2lkIElu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQoY29uc3Qg
U3RyaW5nJiBrZXksIGNvbgogCiBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQ6OmZpbmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIEZyYW1lKiYgdGFyZ2V0RnJh
bWUpCiB7Ci0gICAgU3RyaW5nIHNlY3VyaXR5T3JpZ2luOwogICAgIGJvb2wgaXNMb2NhbFN0b3Jh
Z2UgPSBmYWxzZTsKLSAgICBib29sIHN1Y2Nlc3MgPSBzdG9yYWdlSWQtPmdldFN0cmluZygic2Vj
dXJpdHlPcmlnaW4iLCAmc2VjdXJpdHlPcmlnaW4pOworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IHNlY3VyaXR5T3JpZ2luT2JqZWN0ID0gc3RvcmFnZUlkLT5nZXRPYmplY3QoInNlY3VyaXR5
T3JpZ2luIik7CisgICAgYm9vbCBzdWNjZXNzID0gc2VjdXJpdHlPcmlnaW5PYmplY3QgPyB0cnVl
IDogZmFsc2U7CiAgICAgaWYgKHN1Y2Nlc3MpCiAgICAgICAgIHN1Y2Nlc3MgPSBzdG9yYWdlSWQt
PmdldEJvb2xlYW4oImlzTG9jYWxTdG9yYWdlIiwgJmlzTG9jYWxTdG9yYWdlKTsKICAgICBpZiAo
IXN1Y2Nlc3MpIHsKQEAgLTIyNyw5ICsyMjcsOSBAQCBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmZpbmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyogZQog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2VBZ2Vu
dC0+ZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKKyAgICBGcmFt
ZSogZnJhbWUgPSBtX3BhZ2VBZ2VudC0+ZmluZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKGVycm9y
U3RyaW5nLCBzZWN1cml0eU9yaWdpbk9iamVjdC5nZXQoKSk7CiAgICAgaWYgKCFmcmFtZSkgewot
ICAgICAgICBpZiAoZXJyb3JTdHJpbmcpCisgICAgICAgIGlmIChlcnJvclN0cmluZyAmJiBlcnJv
clN0cmluZy0+aXNFbXB0eSgpKQogICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIkZyYW1lIG5v
dCBmb3VuZCBmb3IgdGhlIGdpdmVuIHNlY3VyaXR5IG9yaWdpbiI7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZp
bGVTeXN0ZW1BZ2VudC5jcHAKaW5kZXggOWI4MDc3ZGYxYzY4NDFlOTJhZjgxMGQ3MWMzYjMyYmE2
MTFmY2MzYi4uYzY2Y2E2ODU2MTdkN2M2Mzg0MzgyNGVjYzAyZGZjODNhODA0YWQ1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dC5jcHAKQEAgLTYzMSwxMiArNjMxLDE3IEBAIHZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKICAgICBtX3N0YXRlLT5zZXRCb29sZWFuKEZpbGVTeXN0
ZW1BZ2VudFN0YXRlOjpmaWxlU3lzdGVtQWdlbnRFbmFibGVkLCBtX2VuYWJsZWQpOwogfQogCi12
b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVxdWVzdEZpbGVTeXN0ZW1Sb290KEVycm9y
U3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgdHlwZSwg
UGFzc1JlZlB0cjxSZXF1ZXN0RmlsZVN5c3RlbVJvb3RDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNr
KQordm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RGaWxlU3lzdGVtUm9vdChF
cnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBvcmlnaW5P
YmplY3QsIGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxSZXF1ZXN0RmlsZVN5c3RlbVJv
b3RDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQogewogICAgIGlmICghYXNzZXJ0RW5hYmxlZChl
cnJvcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBhc3NlcnRTY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3Jp
Z2luKGVycm9yLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4pLmdldCgp
KTsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gSW5zcGVjdG9y
UGFnZUFnZW50OjppbnNwZWN0b3JPYmplY3RUb1NlY3VyaXR5T3JpZ2luKG9yaWdpbk9iamVjdC5n
ZXQoKSk7CisgICAgaWYgKCFzZWN1cml0eU9yaWdpbikgeworICAgICAgICAqZXJyb3IgPSAiSW52
YWxpZCBzZWN1cml0eSBvcmlnaW4iOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBhc3NlcnRTY3JpcHRF
eGVjdXRpb25Db250ZXh0Rm9yT3JpZ2luKGVycm9yLCBzZWN1cml0eU9yaWdpbi5nZXQoKSk7CiAg
ICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaApp
bmRleCBiZWIyYzk5NTczNzdhMTI5ZjczN2JjNTBjOWEyZjAzMGUzMjNkZGI5Li43MDU1MmI0YWE2
ODU4ZDkwZjI3ZjI5MTljYjBmNTg3ZGVkYmQ5MWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oCkBAIC01Myw3ICs1Myw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKSBPVkVSUklERTsKIAotICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0RmlsZVN5c3RlbVJvb3QoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nLCBQYXNzUmVmUHRyPFJlcXVl
c3RGaWxlU3lzdGVtUm9vdENhbGxiYWNrPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RGaWxlU3lzdGVtUm9vdChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZywgUGFzc1JlZlB0cjxSZXF1
ZXN0RmlsZVN5c3RlbVJvb3RDYWxsYmFjaz4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0RGlyZWN0b3J5Q29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsLCBQ
YXNzUmVmUHRyPFJlcXVlc3REaXJlY3RvcnlDb250ZW50Q2FsbGJhY2s+KSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdE1ldGFkYXRhKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiB1cmwsIFBhc3NSZWZQdHI8UmVxdWVzdE1ldGFkYXRhQ2FsbGJhY2s+KSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEZpbGVDb250ZW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiB1cmwsIGJvb2wgcmVhZEFzVGV4dCwgY29uc3QgaW50KiBzdGFydCwgY29uc3QgaW50KiBl
bmQsIGNvbnN0IFN0cmluZyogY2hhcnNldCwgUGFzc1JlZlB0cjxSZXF1ZXN0RmlsZUNvbnRlbnRD
YWxsYmFjaz4pIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggNTdjNjcyMWIxMmFhNWFiMzkzZTk3N2Q2
MzU5ZGI4ZTg2NTQ5ZWU4Yi4uNzM5Yzk4MWQxYTRhNmQwOGJiMTYxNDI3NzEyZDcwZDA1ZWE3ZmQx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWRE
QkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuY3BwCkBAIC05Miw5ICs5Miw5IEBAIG5hbWVzcGFjZSB7CiBjbGFzcyBHZXREYXRh
YmFzZU5hbWVzQ2FsbGJhY2sgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoR2V0RGF0YWJhc2VOYW1lc0NhbGxiYWNrKTsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxHZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRy
PFJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaywgY29uc3QgU3Ry
aW5nJiBzZWN1cml0eU9yaWdpbikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZXREYXRhYmFzZU5h
bWVzQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJh
Y2s+IHJlcXVlc3RDYWxsYmFjaykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
R2V0RGF0YWJhc2VOYW1lc0NhbGxiYWNrKHJlcXVlc3RDYWxsYmFjaywgc2VjdXJpdHlPcmlnaW4p
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2so
cmVxdWVzdENhbGxiYWNrKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+R2V0RGF0YWJhc2VOYW1l
c0NhbGxiYWNrKCkgeyB9CkBAIC0xMzMsMTIgKzEzMywxMCBAQCBwdWJsaWM6CiAgICAgfQogCiBw
cml2YXRlOgotICAgIEdldERhdGFiYXNlTmFtZXNDYWxsYmFjayhQYXNzUmVmUHRyPFJlcXVlc3RE
YXRhYmFzZU5hbWVzQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaywgY29uc3QgU3RyaW5nJiBzZWN1
cml0eU9yaWdpbikKKyAgICBHZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2soUGFzc1JlZlB0cjxSZXF1
ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCiAgICAgICAgIDogRXZl
bnRMaXN0ZW5lcihFdmVudExpc3RlbmVyOjpDUFBFdmVudExpc3RlbmVyVHlwZSkKLSAgICAgICAg
LCBtX3JlcXVlc3RDYWxsYmFjayhyZXF1ZXN0Q2FsbGJhY2spCi0gICAgICAgICwgbV9zZWN1cml0
eU9yaWdpbihzZWN1cml0eU9yaWdpbikgeyB9CisgICAgICAgICwgbV9yZXF1ZXN0Q2FsbGJhY2so
cmVxdWVzdENhbGxiYWNrKSB7IH0KICAgICBSZWZQdHI8UmVxdWVzdERhdGFiYXNlTmFtZXNDYWxs
YmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7Ci0gICAgU3RyaW5nIG1fc2VjdXJpdHlPcmlnaW47CiB9
OwogCiBjbGFzcyBFeGVjdXRhYmxlV2l0aERhdGFiYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8RXhl
Y3V0YWJsZVdpdGhEYXRhYmFzZT4gewpAQCAtNjExLDkgKzYwOSw5IEBAIHN0YXRpYyBJREJGYWN0
b3J5KiBhc3NlcnRJREJGYWN0b3J5KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgRG9jdW1lbnQq
IGRvY3VtZW50CiAgICAgcmV0dXJuIGlkYkZhY3Rvcnk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhYmFzZU5hbWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJh
c2VOYW1lc0NhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCit2b2lkIEluc3BlY3RvckluZGV4ZWRE
QkFnZW50OjpyZXF1ZXN0RGF0YWJhc2VOYW1lcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzZWN1cml0eU9yaWdpbiwgUGFzc1JlZlB0cjxS
ZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCiB7Ci0gICAgRnJh
bWUqIGZyYW1lID0gbV9wYWdlQWdlbnQtPmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbihzZWN1
cml0eU9yaWdpbik7CisgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlQWdlbnQtPmZpbmRGcmFtZVdp
dGhTZWN1cml0eU9yaWdpbihlcnJvclN0cmluZywgc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwogICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IGFzc2VydERvY3VtZW50KGVycm9yU3RyaW5nLCBmcmFtZSk7
CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwpAQCAtNjM0LDEyICs2MzIsMTIg
QEAgdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGFiYXNlTmFtZXMoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb24KICAgICAgICAgcmVxdWVzdENhbGxiYWNrLT5zZW5k
RmFpbHVyZSgiQ291bGQgbm90IG9idGFpbiBkYXRhYmFzZSBuYW1lcy4iKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBpZGJSZXF1ZXN0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5zdWNjZXNzRXZlbnQsIEdldERhdGFiYXNlTmFtZXNDYWxsYmFjazo6Y3JlYXRlKHJlcXVlc3RD
YWxsYmFjaywgZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPnRvUmF3U3RyaW5nKCkpLCBmYWxz
ZSk7CisgICAgaWRiUmVxdWVzdC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc3VjY2Vz
c0V2ZW50LCBHZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2s6OmNyZWF0ZShyZXF1ZXN0Q2FsbGJhY2sp
LCBmYWxzZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRh
YmFzZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmln
aW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFz
ZUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCit2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50
OjpyZXF1ZXN0RGF0YWJhc2UoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VO
YW1lLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2sp
CiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlQWdlbnQtPmZpbmRGcmFtZVdpdGhTZWN1cml0
eU9yaWdpbihzZWN1cml0eU9yaWdpbik7CisgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlQWdlbnQt
PmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbihlcnJvclN0cmluZywgc2VjdXJpdHlPcmlnaW4u
Z2V0KCkpOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGFzc2VydERvY3VtZW50KGVycm9yU3Ry
aW5nLCBmcmFtZSk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwpAQCAtNjU4
LDkgKzY1Niw5IEBAIHZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhYmFz
ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0CiAgICAgZGF0YWJhc2VMb2FkZXIt
PnN0YXJ0KGlkYkZhY3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBkYXRhYmFzZU5h
bWUpOwogfQogCi12b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YShFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgY29u
c3QgU3RyaW5nJiBpbmRleE5hbWUsIGludCBza2lwQ291bnQsIGludCBwYWdlU2l6ZSwgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGtleVJhbmdlLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRh
Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKK3ZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6
OnJlcXVlc3REYXRhKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4mIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwg
Y29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBp
bnQgc2tpcENvdW50LCBpbnQgcGFnZVNpemUsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
KiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJh
Y2spCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlQWdlbnQtPmZpbmRGcmFtZVdpdGhTZWN1
cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbik7CisgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlQWdl
bnQtPmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbihlcnJvclN0cmluZywgc2VjdXJpdHlPcmln
aW4uZ2V0KCkpOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGFzc2VydERvY3VtZW50KGVycm9y
U3RyaW5nLCBmcmFtZSk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaApp
bmRleCA2OWEwOTYxYWIxYjFmYThkNTIxOTBkNTdmNDI4ZjI1NTA3ZDZmY2NlLi45ZjI5ZmU0MjIx
NjI3YWE4ZDZmMGI3ZjRjZGJhYWJhNTZlN2QyNzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaApAQCAtNTgsOSArNTgsOSBAQCBw
dWJsaWM6CiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4KICAgICB2aXJ0dWFsIHZv
aWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JT
dHJpbmcqKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGFiYXNlTmFtZXMoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRh
YmFzZU5hbWVzQ2FsbGJhY2s+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGFiYXNlKEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZU5hbWUsIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2s+KTsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGEoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlY3Vy
aXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBvYmpl
Y3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBpbnQgc2tpcENvdW50LCBpbnQg
cGFnZVNpemUsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBrZXlSYW5nZSwgUGFzc1Jl
ZlB0cjxSZXF1ZXN0RGF0YUNhbGxiYWNrPik7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3REYXRh
YmFzZU5hbWVzKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHNl
Y3VyaXR5T3JpZ2luLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s+KTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGFiYXNlKEVycm9yU3RyaW5nKiwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFi
YXNlTmFtZSwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VDYWxsYmFjaz4pOworICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0RGF0YShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0
IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgaW50IHNr
aXBDb3VudCwgaW50IHBhZ2VTaXplLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Pioga2V5
UmFuZ2UsIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFDYWxsYmFjaz4pOwogCiBwcml2YXRlOgogICAg
IEluc3BlY3RvckluZGV4ZWREQkFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JD
b21wb3NpdGVTdGF0ZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciosIEluc3BlY3RvclBhZ2VBZ2Vu
dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cAppbmRleCBmMjM0YmJlOTI4OWZmN2ExMjI5OTFkMDgyNzg5OGE0MTQxYjY2MGEyLi5hYzRlNDVh
ZjY2YjE2NGEzOTllNWJkMGRkNTM0ODJkMTYwMjM2MDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAzLDYgKzEwMywzNSBAQCBz
dGF0aWMgY29uc3QgY2hhciB0b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZFtdID0gInRvdWNoRXZl
bnRFbXVsYXRpb25FbmFibGVkIjsKIHN0YXRpYyBjb25zdCBjaGFyIHBhZ2VBZ2VudEVtdWxhdGVk
TWVkaWFbXSA9ICJwYWdlQWdlbnRFbXVsYXRlZE1lZGlhIjsKIH0KIAorUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4gSW5zcGVjdG9yUGFnZUFnZW50OjppbnNwZWN0b3JPYmplY3RUb1NlY3VyaXR5
T3JpZ2luKEluc3BlY3Rvck9iamVjdCogb2JqZWN0KQoreworICAgIFN0cmluZyB1cmw7CisgICAg
aWYgKCFvYmplY3QtPmdldFN0cmluZygidXJsIiwgJnVybCkpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgU3RyaW5nIGRvbWFpblNldEluRE9NOworICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4g
dmFsdWUgPSBvYmplY3QtPmdldCgiZG9tYWluU2V0SW5ET00iKTsKKyAgICBpZiAodmFsdWUpIHsK
KyAgICAgICAgaWYgKCF2YWx1ZS0+YXNTdHJpbmcoJmRvbWFpblNldEluRE9NKSkKKyAgICAgICAg
ICAgIHJldHVybiAwOworICAgIH0KKworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVzdWx0
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodXJsKTsKKyAgICBpZiAoIWRvbWFp
blNldEluRE9NLmlzTnVsbCgpKQorICAgICAgICByZXN1bHQtPnNldERvbWFpbkZyb21ET00oZG9t
YWluU2V0SW5ET00pOworICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworfQorCitQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpTZWN1cml0eU9yaWdpbj4gSW5zcGVjdG9yUGFnZUFnZW50
OjpzZWN1cml0eU9yaWdpblRvSW5zcGVjdG9yT2JqZWN0KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4p
Cit7CisKKyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlY3VyaXR5T3JpZ2luPiByZXN1
bHQgPSBUeXBlQnVpbGRlcjo6UGFnZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSgpCisgICAgICAg
IC5zZXRVcmwob3JpZ2luLT50b1Jhd1N0cmluZygpKTsKKyAgICBpZiAob3JpZ2luLT5kb21haW5X
YXNTZXRJbkRPTSgpKQorICAgICAgICByZXN1bHQtPnNldERvbWFpblNldEluRE9NKG9yaWdpbi0+
ZG9tYWluKCkpOworICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworfQorCiBzdGF0aWMgYm9v
bCBkZWNvZGVCdWZmZXIoY29uc3QgY2hhciogYnVmZmVyLCB1bnNpZ25lZCBzaXplLCBjb25zdCBT
dHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIFN0cmluZyogcmVzdWx0KQogewogICAgIGlmIChidWZm
ZXIpIHsKQEAgLTkzMSwxOSArOTYwLDI1IEBAIFN0cmluZyBJbnNwZWN0b3JQYWdlQWdlbnQ6Omxv
YWRlcklkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9
CiAKLUZyYW1lKiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdp
bihjb25zdCBTdHJpbmcmIG9yaWdpblJhd1N0cmluZykKK0ZyYW1lKiBJbnNwZWN0b3JQYWdlQWdl
bnQ6OmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IEluc3BlY3Rvck9iamVjdCogc2VjdXJpdHlPcmlnaW5PYmplY3QpCiB7Ci0gICAgUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpblB0ciA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVG
cm9tU3RyaW5nKG9yaWdpblJhd1N0cmluZyk7Ci0gICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5
T3JpZ2luID0gc2VjdXJpdHlPcmlnaW5QdHIuZ2V0KCk7CisgICAgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBzZWN1cml0eU9yaWdpbiA9IGluc3BlY3Rvck9iamVjdFRvU2VjdXJpdHlPcmlnaW4oc2Vj
dXJpdHlPcmlnaW5PYmplY3QpOworICAgIGlmICghc2VjdXJpdHlPcmlnaW4pIHsKKyAgICAgICAg
aWYgKGVycm9yU3RyaW5nKQorICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIkludmFsaWQgc2Vj
dXJpdHkgb3JpZ2luIjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgYm9vbCBpc0xv
Y2FsID0gc2VjdXJpdHlPcmlnaW4tPmlzTG9jYWwoKTsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9
IG1fcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZl
cnNlTmV4dCgpKSB7CiAgICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gZG9jdW1lbnRPcmln
aW4gPSBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKICAgICAgICAgLy8gRW11
bGF0ZSB0aGUgIWVuZm9yY2VGaWxlUGF0aFNlcGFyYXRpb24gZm9yIHNlY3VyaXR5IG9yaWdpbnMu
CiAgICAgICAgIGlmIChpc0xvY2FsICYmIGRvY3VtZW50T3JpZ2luLT5pc0xvY2FsKCkpCiAgICAg
ICAgICAgICByZXR1cm4gZnJhbWU7Ci0gICAgICAgIGlmIChkb2N1bWVudE9yaWdpbi0+ZXF1YWwo
c2VjdXJpdHlPcmlnaW4pKQorICAgICAgICBpZiAoZG9jdW1lbnRPcmlnaW4tPmVxdWFsKHNlY3Vy
aXR5T3JpZ2luLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiBmcmFtZTsKICAgICB9CisKICAg
ICByZXR1cm4gMDsKIH0KIApAQCAtMTA3OSw3ICsxMTE0LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6UGFnZTo6RnJhbWU+IEluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JGcmFt
ZShGcmEKICAgICAgICAgLnNldExvYWRlcklkKGxvYWRlcklkKGZyYW1lLT5sb2FkZXIoKS0+ZG9j
dW1lbnRMb2FkZXIoKSkpCiAgICAgICAgIC5zZXRVcmwoZnJhbWUtPmRvY3VtZW50KCktPnVybCgp
LnN0cmluZygpKQogICAgICAgICAuc2V0TWltZVR5cGUoZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVu
dExvYWRlcigpLT5yZXNwb25zZU1JTUVUeXBlKCkpCi0gICAgICAgIC5zZXRTZWN1cml0eU9yaWdp
bihmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9SYXdTdHJpbmcoKSk7Cisg
ICAgICAgIC5zZXRTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpblRvSW5zcGVjdG9yT2JqZWN0
KGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSk7CiAgICAgaWYgKGZyYW1lLT50
cmVlKCktPnBhcmVudCgpKQogICAgICAgICBmcmFtZU9iamVjdC0+c2V0UGFyZW50SWQoZnJhbWVJ
ZChmcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkpOwogICAgIGlmIChmcmFtZS0+b3duZXJFbGVtZW50
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdl
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApp
bmRleCBkOTYwMzAzN2MwZjg0YmMzMmY1NGFhODQyODg0MzgxMDA2NDJlNzVmLi45YWEwNzYwNjY4
OTM3ODdmNmM1Zjk1ZWEwMDllZjRjYzIzNWQxZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC05Miw2ICs5Miw5IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVzb3VyY2VUeXBlIGNhY2hlZFJlc291cmNlVHlwZShjb25zdCBDYWNoZWRSZXNv
dXJjZSYpOwogICAgIHN0YXRpYyBUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpFbnVt
IGNhY2hlZFJlc291cmNlVHlwZUpzb24oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKTsKIAorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBpbnNwZWN0b3JPYmplY3RUb1NlY3VyaXR5
T3JpZ2luKEluc3BlY3Rvck9iamVjdCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpQYWdlOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW5Ub0luc3BlY3Rvck9iamVj
dChTZWN1cml0eU9yaWdpbiopOworCiAgICAgLy8gUGFnZSBBUEkgZm9yIEluc3BlY3RvckZyb250
ZW5kCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CkBAIC0xNzMsNyArMTc2LDcgQEAgcHVibGljOgog
ICAgIFN0cmluZyBmcmFtZUlkKEZyYW1lKik7CiAgICAgYm9vbCBoYXNJZEZvckZyYW1lKEZyYW1l
KikgY29uc3Q7CiAgICAgU3RyaW5nIGxvYWRlcklkKERvY3VtZW50TG9hZGVyKik7Ci0gICAgRnJh
bWUqIGZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpblJhd1N0
cmluZyk7CisgICAgRnJhbWUqIGZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbihFcnJvclN0cmlu
ZyosIEluc3BlY3Rvck9iamVjdCopOwogICAgIEZyYW1lKiBhc3NlcnRGcmFtZShFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCk7CiAgICAgU3RyaW5nIHNjcmlwdFByZXByb2Nlc3Nv
cigpIHsgcmV0dXJuIG1fc2NyaXB0UHJlcHJvY2Vzc29yOyB9CiAgICAgc3RhdGljIERvY3VtZW50
TG9hZGVyKiBhc3NlcnREb2N1bWVudExvYWRlcihFcnJvclN0cmluZyosIEZyYW1lKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanMKaW5kZXgg
YjIwOWY3MjZjMDkzNGRkYzQ2YmUyNjljMmZlYjgxMDYxYTQxYWUzNi4uMmVjODQyNmQ3Y2ZiMjll
OGNmZTAyYTBmYzY1OTAxZjNhNmIzZTc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZS5qcwpAQCAtMjksNyArMjksNyBAQAogCiAvKioKICAq
IEBjb25zdHJ1Y3RvcgotICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCisgKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gc2VjdXJpdHlPcmlnaW4KICAqIEBwYXJh
bSB7Ym9vbGVhbn0gaXNMb2NhbFN0b3JhZ2UKICAqLwogV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2Ug
PSBmdW5jdGlvbihzZWN1cml0eU9yaWdpbiwgaXNMb2NhbFN0b3JhZ2UpCkBAIC0zOSwyNCArMzks
MjQgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UgPSBmdW5jdGlvbihzZWN1cml0eU9yaWdpbiwg
aXNMb2NhbFN0b3JhZ2UpCiB9CiAKIC8qKgotICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3Jp
Z2luCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gc2VjdXJpdHlPcmln
aW4KICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNMb2NhbFN0b3JhZ2UKICAqIEByZXR1cm4ge0RPTVN0
b3JhZ2VBZ2VudC5TdG9yYWdlSWR9CiAgKi8KIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlLnN0b3Jh
Z2VJZCA9IGZ1bmN0aW9uKHNlY3VyaXR5T3JpZ2luLCBpc0xvY2FsU3RvcmFnZSkKIHsKLSAgICBy
ZXR1cm4geyBzZWN1cml0eU9yaWdpbjogc2VjdXJpdHlPcmlnaW4sIGlzTG9jYWxTdG9yYWdlOiBp
c0xvY2FsU3RvcmFnZSB9OworICAgIHJldHVybiB7IHNlY3VyaXR5T3JpZ2luOiBzZWN1cml0eU9y
aWdpbi50b1Byb3RvY29sKCksIGlzTG9jYWxTdG9yYWdlOiBpc0xvY2FsU3RvcmFnZSB9OwogfQog
CiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZS5wcm90b3R5cGUgPSB7CiAKICAgICAvKiogQHJldHVy
biB7RE9NU3RvcmFnZUFnZW50LlN0b3JhZ2VJZH0gKi8KLSAgICBnZXQgaWQoKQorICAgIGlkOiBm
dW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2Uu
c3RvcmFnZUlkKHRoaXMuX3NlY3VyaXR5T3JpZ2luLCB0aGlzLl9pc0xvY2FsU3RvcmFnZSk7CiAg
ICAgfSwKIAotICAgIC8qKiBAcmV0dXJuIHtzdHJpbmd9ICovCisgICAgLyoqIEByZXR1cm4ge1dl
Ykluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gKi8KICAgICBnZXQgc2VjdXJpdHlPcmlnaW4oKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NlY3VyaXR5T3JpZ2luOwpAQCAtNzMsNyArNzMs
NyBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZS5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAg
Z2V0SXRlbXM6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgRE9NU3RvcmFnZUFn
ZW50LmdldERPTVN0b3JhZ2VJdGVtcyh0aGlzLmlkLCBjYWxsYmFjayk7CisgICAgICAgIERPTVN0
b3JhZ2VBZ2VudC5nZXRET01TdG9yYWdlSXRlbXModGhpcy5pZCgpLCBjYWxsYmFjayk7CiAgICAg
fSwKIAogICAgIC8qKgpAQCAtODMsNyArODMsNyBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZS5w
cm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgc2V0SXRlbTogZnVuY3Rpb24oa2V5LCB2YWx1ZSwg
Y2FsbGJhY2spCiAgICAgewotICAgICAgICBET01TdG9yYWdlQWdlbnQuc2V0RE9NU3RvcmFnZUl0
ZW0odGhpcy5pZCwga2V5LCB2YWx1ZSwgY2FsbGJhY2spOworICAgICAgICBET01TdG9yYWdlQWdl
bnQuc2V0RE9NU3RvcmFnZUl0ZW0odGhpcy5pZCgpLCBrZXksIHZhbHVlLCBjYWxsYmFjayk7CiAg
ICAgfSwKIAogICAgIC8qKgpAQCAtOTIsNyArOTIsNyBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFn
ZS5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgcmVtb3ZlSXRlbTogZnVuY3Rpb24oa2V5LCBj
YWxsYmFjaykKICAgICB7Ci0gICAgICAgIERPTVN0b3JhZ2VBZ2VudC5yZW1vdmVET01TdG9yYWdl
SXRlbSh0aGlzLmlkLCBrZXksIGNhbGxiYWNrKTsKKyAgICAgICAgRE9NU3RvcmFnZUFnZW50LnJl
bW92ZURPTVN0b3JhZ2VJdGVtKHRoaXMuaWQoKSwga2V5LCBjYWxsYmFjayk7CiAgICAgfQogfQog
CkBAIC0xMjUsNyArMTI1LDcgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5wcm90b3R5
cGUgPSB7CiAgICAgICovCiAgICAgX3NlY3VyaXR5T3JpZ2luQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50
KQogICAgIHsKLSAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gLyoqIEB0eXBlIHtzdHJpbmd9
ICovIChldmVudC5kYXRhKTsKKyAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gLyoqIEB0eXBl
IHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59ICovIChldmVudC5kYXRhKTsKICAgICAgICAg
dmFyIGxvY2FsU3RvcmFnZUtleSA9IHRoaXMuX3N0b3JhZ2VLZXkoc2VjdXJpdHlPcmlnaW4sIHRy
dWUpOwogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fc3RvcmFnZXNbbG9jYWxTdG9yYWdl
S2V5XSk7CiAgICAgICAgIHZhciBsb2NhbFN0b3JhZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTVN0
b3JhZ2Uoc2VjdXJpdHlPcmlnaW4sIHRydWUpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIFdlYkluc3Bl
Y3Rvci5ET01TdG9yYWdlTW9kZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9zZWN1cml0
eU9yaWdpblJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHNlY3Vy
aXR5T3JpZ2luID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChldmVudC5kYXRhKTsKKyAgICAgICAg
dmFyIHNlY3VyaXR5T3JpZ2luID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmln
aW59ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdmFyIGxvY2FsU3RvcmFnZUtleSA9IHRoaXMu
X3N0b3JhZ2VLZXkoc2VjdXJpdHlPcmlnaW4sIHRydWUpOwogICAgICAgICB2YXIgbG9jYWxTdG9y
YWdlID0gdGhpcy5fc3RvcmFnZXNbbG9jYWxTdG9yYWdlS2V5XTsKICAgICAgICAgY29uc29sZS5h
c3NlcnQobG9jYWxTdG9yYWdlKTsKQEAgLTE1OSwxMyArMTU5LDEzIEBAIFdlYkluc3BlY3Rvci5E
T01TdG9yYWdlTW9kZWwucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBA
cGFyYW0ge3N0cmluZ30gc2VjdXJpdHlPcmlnaW4KKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5TZWN1cml0eU9yaWdpbn0gc2VjdXJpdHlPcmlnaW4KICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59
IGlzTG9jYWxTdG9yYWdlCiAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAqLwogICAgIF9z
dG9yYWdlS2V5OiBmdW5jdGlvbihzZWN1cml0eU9yaWdpbiwgaXNMb2NhbFN0b3JhZ2UpCiAgICAg
ewotICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2Uu
c3RvcmFnZUlkKHNlY3VyaXR5T3JpZ2luLCBpc0xvY2FsU3RvcmFnZSkpOworICAgICAgICByZXR1
cm4gc2VjdXJpdHlPcmlnaW4uaWQoKSArICIvIiArIGlzTG9jYWxTdG9yYWdlOwogICAgIH0sCiAK
ICAgICAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5qcwppbmRleCA0YzY5MmM3NzM0NWFlZjU1Nzkx
MzExODZmNTg2NjlkODI0N2M4ZTM0Li5iMTIxOTA2MDkxM2Y0MTVhY2VjODcwODQ4Y2IwOGMyYmQx
M2QwMmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4
dGVuc2lvbkF1ZGl0Q2F0ZWdvcnkuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9FeHRlbnNpb25BdWRpdENhdGVnb3J5LmpzCkBAIC0zMSw3ICszMSw3IEBACiAvKioK
ICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5BdWRpdENhdGVnb3J5
fQotICogQHBhcmFtIHtzdHJpbmd9IGV4dGVuc2lvbk9yaWdpbgorICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuU2VjdXJpdHlPcmlnaW59IGV4dGVuc2lvbk9yaWdpbgogICogQHBhcmFtIHtzdHJpbmd9
IGlkCiAgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGxheU5hbWUKICAqIEBwYXJhbSB7bnVtYmVyPX0g
cnVsZUNvdW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0V4dGVuc2lvblNlcnZlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RXh0ZW5zaW9uU2VydmVyLmpzCmluZGV4IGZkMzA3ZmE5NWZjOWNmYzM0NWNlNzRhMzFjMGM5Yjcz
YWE5ZmY0M2IuLjMwY2M1NTY0YmE0NWEzYWY4NDcwMTg3MTE2YzNmZDhjYjFlNzRmZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVy
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2Vy
dmVyLmpzCkBAIC02OTMsMTIgKzY5MywxOSBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVy
LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSwKIAorICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50CisgICAgICovCiAgICAgX29uV2luZG93TWVzc2Fn
ZTogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQuZGF0YSA9PT0gInJl
Z2lzdGVyRXh0ZW5zaW9uIikKICAgICAgICAgICAgIHRoaXMuX3JlZ2lzdGVyRXh0ZW5zaW9uKGV2
ZW50Lm9yaWdpbiwgZXZlbnQucG9ydHNbMF0pOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge3N0cmluZ30gb3JpZ2luCisgICAgICogQHBhcmFtIHtNZXNzYWdlUG9ydH0gcG9ydAor
ICAgICAqLwogICAgIF9yZWdpc3RlckV4dGVuc2lvbjogZnVuY3Rpb24ob3JpZ2luLCBwb3J0KQog
ICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9yZWdpc3RlcmVkRXh0ZW5zaW9ucy5oYXNPd25Qcm9w
ZXJ0eShvcmlnaW4pKSB7CkBAIC03MTEsOSArNzE4LDEyIEBAIFdlYkluc3BlY3Rvci5FeHRlbnNp
b25TZXJ2ZXIucHJvdG90eXBlID0gewogICAgICAgICBwb3J0LnN0YXJ0KCk7CiAgICAgfSwKIAor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50CisgICAgICovCiAgICAgX29ubWVz
c2FnZTogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgbWVzc2FnZSA9IGV2ZW50
LmRhdGE7CisgICAgICAgIHZhciBtZXNzYWdlID0gLyoqQHR5cGUge09iamVjdH0qLyAoZXZlbnQu
ZGF0YSk7CiAgICAgICAgIHZhciByZXN1bHQ7CiAKICAgICAgICAgaWYgKG1lc3NhZ2UuY29tbWFu
ZCBpbiB0aGlzLl9oYW5kbGVycykKQEAgLTcyNSw2ICs3MzUsOSBAQCBXZWJJbnNwZWN0b3IuRXh0
ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoQ2Fs
bGJhY2sobWVzc2FnZS5yZXF1ZXN0SWQsIGV2ZW50LnRhcmdldCwgcmVzdWx0KTsKICAgICB9LAog
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbW1hbmQKKyAgICAgKi8KICAgICBf
cmVnaXN0ZXJIYW5kbGVyOiBmdW5jdGlvbihjb21tYW5kLCBjYWxsYmFjaykKICAgICB7CiAgICAg
ICAgIHRoaXMuX2hhbmRsZXJzW2NvbW1hbmRdID0gY2FsbGJhY2s7CkBAIC03ODQsNyArNzk3LDgg
QEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICB2YXIgbWFpbkZyYW1lID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLm1haW5GcmFt
ZTsKICAgICAgICAgICAgIGlmICghbWFpbkZyYW1lKQogICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzLl9zdGF0dXMuRV9GQUlMRUQoIm1haW4gZnJhbWUgbm90IGF2YWlsYWJsZSB5ZXQiKTsKLSAg
ICAgICAgICAgIHZhciBjb250ZXh0ID0gV2ViSW5zcGVjdG9yLnJ1bnRpbWVNb2RlbC5jb250ZXh0
QnlGcmFtZUFuZFNlY3VyaXR5T3JpZ2luKG1haW5GcmFtZSwgc2VjdXJpdHlPcmlnaW4pOworICAg
ICAgICAgICAgdmFyIG9yaWdpbk9iamVjdCA9IG5ldyBXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmln
aW4oc2VjdXJpdHlPcmlnaW4sIHVuZGVmaW5lZCwgc2VjdXJpdHlPcmlnaW4pOworICAgICAgICAg
ICAgdmFyIGNvbnRleHQgPSBXZWJJbnNwZWN0b3IucnVudGltZU1vZGVsLmNvbnRleHRCeUZyYW1l
QW5kU2VjdXJpdHlPcmlnaW4obWFpbkZyYW1lLCBvcmlnaW5PYmplY3QpOwogICAgICAgICAgICAg
aWYgKCFjb250ZXh0KQogICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0dXMuRV9OT1RG
T1VORChzZWN1cml0eU9yaWdpbik7CiAgICAgICAgICAgICBjb250ZXh0SWQgPSBjb250ZXh0Lmlk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lz
dGVtTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0
ZW1Nb2RlbC5qcwppbmRleCAxNGMxMzcyY2Q0MmI3YzU1OGFlYWIyYTMxZTE1M2E4NTQ3YjI2OWI4
Li5mMDJiNDU1Yzc2ZDlkMTVhOWEzNzE3MjRiMjc3ZDExOWNjYTU5MDEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcwpA
QCAtNDksOCArNDksOCBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsID0gZnVuY3Rpb24o
KQogV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgX3Jlc2V0
OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBmb3IgKHZhciBzZWN1cml0eU9yaWdpbiBpbiB0
aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbikKLSAgICAgICAgICAgIHRoaXMuX3JlbW92ZU9yaWdp
bihzZWN1cml0eU9yaWdpbik7CisgICAgICAgIGZvciAodmFyIHNlY3VyaXR5T3JpZ2luSWQgaW4g
dGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW4pCisgICAgICAgICAgICB0aGlzLl9yZW1vdmVPcmln
aW4oV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLnNlY3VyaXR5T3JpZ2luRm9ySWQoc2Vj
dXJpdHlPcmlnaW5JZCkpOwogICAgICAgICB2YXIgc2VjdXJpdHlPcmlnaW5zID0gV2ViSW5zcGVj
dG9yLnJlc291cmNlVHJlZU1vZGVsLnNlY3VyaXR5T3JpZ2lucygpOwogICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHNlY3VyaXR5T3JpZ2lucy5sZW5ndGg7ICsraSkKICAgICAgICAgICAgIHRo
aXMuX2FkZE9yaWdpbihzZWN1cml0eU9yaWdpbnNbaV0pOwpAQCAtNjEsNyArNjEsNyBAQCBXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfc2Vj
dXJpdHlPcmlnaW5BZGRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgc2Vj
dXJpdHlPcmlnaW4gPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKGV2ZW50LmRhdGEpOworICAgICAg
ICB2YXIgc2VjdXJpdHlPcmlnaW4gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5TZWN1cml0eU9y
aWdpbn0gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICB0aGlzLl9hZGRPcmlnaW4oc2VjdXJpdHlP
cmlnaW4pOwogICAgIH0sCiAKQEAgLTcwLDM3ICs3MCwzOSBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfc2VjdXJpdHlPcmlnaW5SZW1v
dmVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBzZWN1cml0eU9yaWdpbiA9
IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoZXZlbnQuZGF0YSk7CisgICAgICAgIHZhciBzZWN1cml0
eU9yaWdpbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSAqLyAoZXZl
bnQuZGF0YSk7CiAgICAgICAgIHRoaXMuX3JlbW92ZU9yaWdpbihzZWN1cml0eU9yaWdpbik7CiAg
ICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWN1cml0eU9yaWdpbgor
ICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSBzZWN1cml0eU9yaWdp
bgogICAgICAqLwogICAgIF9hZGRPcmlnaW46IGZ1bmN0aW9uKHNlY3VyaXR5T3JpZ2luKQogICAg
IHsKLSAgICAgICAgdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bc2VjdXJpdHlPcmlnaW5dID0g
e307CisgICAgICAgIHZhciBzZWN1cml0eU9yaWdpbklkID0gc2VjdXJpdHlPcmlnaW4uaWQoKTsK
KyAgICAgICAgdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bc2VjdXJpdHlPcmlnaW5JZF0gPSB7
fTsKIAogICAgICAgICB2YXIgdHlwZXMgPSBbInBlcnNpc3RlbnQiLCAidGVtcG9yYXJ5Il07CiAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAg
ICB0aGlzLl9yZXF1ZXN0RmlsZVN5c3RlbVJvb3Qoc2VjdXJpdHlPcmlnaW4sIHR5cGVzW2ldLCB0
aGlzLl9maWxlU3lzdGVtUm9vdFJlY2VpdmVkLmJpbmQodGhpcywgc2VjdXJpdHlPcmlnaW4sIHR5
cGVzW2ldLCB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltzZWN1cml0eU9yaWdpbl0pKTsKKyAg
ICAgICAgICAgIHRoaXMuX3JlcXVlc3RGaWxlU3lzdGVtUm9vdChzZWN1cml0eU9yaWdpbiwgdHlw
ZXNbaV0sIHRoaXMuX2ZpbGVTeXN0ZW1Sb290UmVjZWl2ZWQuYmluZCh0aGlzLCBzZWN1cml0eU9y
aWdpbiwgdHlwZXNbaV0sIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW3NlY3VyaXR5T3JpZ2lu
SWRdKSk7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWN1cml0
eU9yaWdpbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSBzZWN1
cml0eU9yaWdpbgogICAgICAqLwogICAgIF9yZW1vdmVPcmlnaW46IGZ1bmN0aW9uKHNlY3VyaXR5
T3JpZ2luKQogICAgIHsKLSAgICAgICAgZm9yICh2YXIgdHlwZSBpbiB0aGlzLl9maWxlU3lzdGVt
c0Zvck9yaWdpbltzZWN1cml0eU9yaWdpbl0pIHsKLSAgICAgICAgICAgIHZhciBmaWxlU3lzdGVt
ID0gdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bc2VjdXJpdHlPcmlnaW5dW3R5cGVdOwotICAg
ICAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW3NlY3VyaXR5T3JpZ2lu
XVt0eXBlXTsKKyAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luSWQgPSBzZWN1cml0eU9yaWdpbi5p
ZCgpOworICAgICAgICBmb3IgKHZhciB0eXBlIGluIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2lu
W3NlY3VyaXR5T3JpZ2luSWRdKSB7CisgICAgICAgICAgICB2YXIgZmlsZVN5c3RlbSA9IHRoaXMu
X2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW3NlY3VyaXR5T3JpZ2luSWRdW3R5cGVdOworICAgICAgICAg
ICAgZGVsZXRlIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW3NlY3VyaXR5T3JpZ2luSWRdW3R5
cGVdOwogICAgICAgICAgICAgdGhpcy5fZmlsZVN5c3RlbVJlbW92ZWQoZmlsZVN5c3RlbSk7CiAg
ICAgICAgIH0KLSAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW3NlY3Vy
aXR5T3JpZ2luXTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW3Nl
Y3VyaXR5T3JpZ2luSWRdOwogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gb3JpZ2luCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IG9y
aWdpbgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlCiAgICAgICogQHBhcmFtIHtmdW5jdGlv
bihudW1iZXIsIEZpbGVTeXN0ZW1BZ2VudC5FbnRyeT0pfSBjYWxsYmFjawogICAgICAqLwpAQCAt
MTIxLDcgKzEyMyw3IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgY2FsbGJhY2soZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5KTsKICAg
ICAgICAgfQogCi0gICAgICAgIEZpbGVTeXN0ZW1BZ2VudC5yZXF1ZXN0RmlsZVN5c3RlbVJvb3Qo
b3JpZ2luLCB0eXBlLCBpbm5lckNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICBGaWxlU3lz
dGVtQWdlbnQucmVxdWVzdEZpbGVTeXN0ZW1Sb290KG9yaWdpbi50b1Byb3RvY29sKCksIHR5cGUs
IGlubmVyQ2FsbGJhY2suYmluZCh0aGlzKSk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTQ2LDcg
KzE0OCw3IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlID0gewogICAg
IH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3JpZ2luCisgICAgICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IG9yaWdpbgogICAgICAqIEBwYXJhbSB7
c3RyaW5nfSB0eXBlCiAgICAgICogQHBhcmFtIHtPYmplY3QuPFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtTW9kZWwuRmlsZVN5c3RlbT59IHN0b3JlCiAgICAgICogQHBhcmFtIHtudW1iZXJ9IGVycm9y
Q29kZQpAQCAtMTU0LDcgKzE1Niw3IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJv
dG90eXBlID0gewogICAgICAqLwogICAgIF9maWxlU3lzdGVtUm9vdFJlY2VpdmVkOiBmdW5jdGlv
bihvcmlnaW4sIHR5cGUsIHN0b3JlLCBlcnJvckNvZGUsIGJhY2tlbmRSb290RW50cnkpCiAgICAg
ewotICAgICAgICBpZiAoIWVycm9yQ29kZSAmJiBiYWNrZW5kUm9vdEVudHJ5ICYmIHRoaXMuX2Zp
bGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbl0gPT09IHN0b3JlKSB7CisgICAgICAgIGlmICghZXJy
b3JDb2RlICYmIGJhY2tlbmRSb290RW50cnkgJiYgdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5b
b3JpZ2luLmlkKCldID09PSBzdG9yZSkgewogICAgICAgICAgICAgdmFyIGZpbGVTeXN0ZW0gPSBu
ZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtKHRoaXMsIG9yaWdpbiwg
dHlwZSwgYmFja2VuZFJvb3RFbnRyeSk7CiAgICAgICAgICAgICBzdG9yZVt0eXBlXSA9IGZpbGVT
eXN0ZW07CiAgICAgICAgICAgICB0aGlzLl9maWxlU3lzdGVtQWRkZWQoZmlsZVN5c3RlbSk7CkBA
IC0zMzUsMTQgKzMzNywxNCBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlw
ZSA9IHsKICAgICAgKi8KICAgICBfcmVtb3ZlRmlsZVN5c3RlbTogZnVuY3Rpb24oZmlsZVN5c3Rl
bSkKICAgICB7Ci0gICAgICAgIHZhciBvcmlnaW4gPSBmaWxlU3lzdGVtLm9yaWdpbjsKKyAgICAg
ICAgdmFyIG9yaWdpbklkID0gZmlsZVN5c3RlbS5vcmlnaW4uaWQoKTsKICAgICAgICAgdmFyIHR5
cGUgPSBmaWxlU3lzdGVtLnR5cGU7Ci0gICAgICAgIGlmICh0aGlzLl9maWxlU3lzdGVtc0Zvck9y
aWdpbltvcmlnaW5dICYmIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbl1bdHlwZV0p
IHsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5d
W3R5cGVdOworICAgICAgICBpZiAodGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luSWRd
ICYmIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbklkXVt0eXBlXSkgeworICAgICAg
ICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2luW29yaWdpbklkXVt0eXBlXTsK
ICAgICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW1SZW1vdmVkKGZpbGVTeXN0ZW0pOwogCi0gICAg
ICAgICAgICBpZiAoT2JqZWN0LmlzRW1wdHkodGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3Jp
Z2luXSkpCi0gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVTeXN0ZW1zRm9yT3JpZ2lu
W29yaWdpbl07CisgICAgICAgICAgICBpZiAoT2JqZWN0LmlzRW1wdHkodGhpcy5fZmlsZVN5c3Rl
bXNGb3JPcmlnaW5bb3JpZ2luSWRdKSkKKyAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fZmls
ZVN5c3RlbXNGb3JPcmlnaW5bb3JpZ2luSWRdOwogICAgICAgICB9CiAgICAgfSwKIApAQCAtMzU4
LDcgKzM2MCw3IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRXZlbnRUeXBlcyA9IHsK
IC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TW9kZWx9IGZpbGVTeXN0ZW1Nb2RlbAotICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbgorICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IG9yaWdpbgogICogQHBhcmFtIHtzdHJp
bmd9IHR5cGUKICAqIEBwYXJhbSB7RmlsZVN5c3RlbUFnZW50LkVudHJ5fSBiYWNrZW5kUm9vdEVu
dHJ5CiAgKi8KQEAgLTM3Niw3ICszNzgsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVs
LkZpbGVTeXN0ZW0ucHJvdG90eXBlID0gewogICAgICAqLwogICAgIGdldCBuYW1lKCkKICAgICB7
Ci0gICAgICAgIHJldHVybiAiZmlsZXN5c3RlbToiICsgdGhpcy5vcmlnaW4gKyAiLyIgKyB0aGlz
LnR5cGU7CisgICAgICAgIHJldHVybiAiZmlsZXN5c3RlbToiICsgdGhpcy5vcmlnaW4udXJsKCkg
KyAiLyIgKyB0aGlzLnR5cGU7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQk1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJNb2RlbC5qcwppbmRleCBhNTI1N2EyNGJjYmMz
OGRiNDhmNDcyNjI5YmYzMGIxM2IxMDk2YWM0Li43ODhkYzYxODZlNjVhOTdlZmY5NWNhOTQxYWUw
MjIwM2FiZmExY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0luZGV4ZWREQk1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvSW5kZXhlZERCTW9kZWwuanMKQEAgLTE0MSw4ICsxNDEsOCBAQCBXZWJJbnNwZWN0b3Iu
SW5kZXhlZERCTW9kZWwuRXZlbnRUeXBlcyA9IHsKIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2Rl
bC5wcm90b3R5cGUgPSB7CiAgICAgX3Jlc2V0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBm
b3IgKHZhciBzZWN1cml0eU9yaWdpbiBpbiB0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9y
aWdpbikKLSAgICAgICAgICAgIHRoaXMuX3JlbW92ZU9yaWdpbihzZWN1cml0eU9yaWdpbik7Cisg
ICAgICAgIGZvciAodmFyIHNlY3VyaXR5T3JpZ2luSWQgaW4gdGhpcy5fZGF0YWJhc2VOYW1lc0J5
U2VjdXJpdHlPcmlnaW4pCisgICAgICAgICAgICB0aGlzLl9yZW1vdmVPcmlnaW4oV2ViSW5zcGVj
dG9yLnJlc291cmNlVHJlZU1vZGVsLnNlY3VyaXR5T3JpZ2luRm9ySWQoc2VjdXJpdHlPcmlnaW5J
ZCkpOwogICAgICAgICB2YXIgc2VjdXJpdHlPcmlnaW5zID0gV2ViSW5zcGVjdG9yLnJlc291cmNl
VHJlZU1vZGVsLnNlY3VyaXR5T3JpZ2lucygpOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHNlY3VyaXR5T3JpZ2lucy5sZW5ndGg7ICsraSkKICAgICAgICAgICAgIHRoaXMuX2FkZE9yaWdp
bihzZWN1cml0eU9yaWdpbnNbaV0pOwpAQCAtMTUwLDggKzE1MCw4IEBAIFdlYkluc3BlY3Rvci5J
bmRleGVkREJNb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICByZWZyZXNoRGF0YWJhc2VOYW1lczog
ZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgZm9yICh2YXIgc2VjdXJpdHlPcmlnaW4gaW4gdGhp
cy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW4pCi0gICAgICAgICAgICB0aGlzLl9sb2Fk
RGF0YWJhc2VOYW1lcyhzZWN1cml0eU9yaWdpbik7CisgICAgICAgIGZvciAodmFyIHNlY3VyaXR5
T3JpZ2luSWQgaW4gdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW4pCisgICAgICAg
ICAgICB0aGlzLl9sb2FkRGF0YWJhc2VOYW1lcyhXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9k
ZWwuc2VjdXJpdHlPcmlnaW5Gb3JJZChzZWN1cml0eU9yaWdpbklkKSk7CiAgICAgfSwKIAogICAg
IC8qKgpAQCAtMTY3LDcgKzE2Nyw3IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90
b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3NlY3VyaXR5T3JpZ2luQWRkZWQ6IGZ1bmN0aW9uKGV2
ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gLyoqIEB0eXBlIHtzdHJp
bmd9ICovIChldmVudC5kYXRhKTsKKyAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gLyoqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59ICovIChldmVudC5kYXRhKTsKICAgICAg
ICAgdGhpcy5fYWRkT3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKICAgICB9LAogCkBAIC0xNzYsMzMg
KzE3NiwzNSBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAg
ICAqLwogICAgIF9zZWN1cml0eU9yaWdpblJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsK
LSAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChldmVu
dC5kYXRhKTsKKyAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gLyoqIEB0eXBlIHtXZWJJbnNw
ZWN0b3IuU2VjdXJpdHlPcmlnaW59ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5fcmVt
b3ZlT3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBh
cmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
U2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5T3JpZ2luCiAgICAgICovCiAgICAgX2FkZE9yaWdpbjog
ZnVuY3Rpb24oc2VjdXJpdHlPcmlnaW4pCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCgh
dGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5dKTsKLSAg
ICAgICAgdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5d
ID0gW107CisgICAgICAgIHZhciBzZWN1cml0eU9yaWdpbklkID0gc2VjdXJpdHlPcmlnaW4uaWQo
KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5
T3JpZ2luW3NlY3VyaXR5T3JpZ2luSWRdKTsKKyAgICAgICAgdGhpcy5fZGF0YWJhc2VOYW1lc0J5
U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5JZF0gPSBbXTsKICAgICAgICAgdGhpcy5fbG9h
ZERhdGFiYXNlTmFtZXMoc2VjdXJpdHlPcmlnaW4pOwogICAgIH0sCiAKICAgICAvKioKLSAgICAg
KiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlPcmlnaW4KKyAgICAgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5TZWN1cml0eU9yaWdpbn0gc2VjdXJpdHlPcmlnaW4KICAgICAgKi8KICAgICBfcmVtb3Zl
T3JpZ2luOiBmdW5jdGlvbihzZWN1cml0eU9yaWdpbikKICAgICB7Ci0gICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2lu
XSk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2Vj
dXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5dLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgdGhp
cy5fZGF0YWJhc2VSZW1vdmVkKHNlY3VyaXR5T3JpZ2luLCB0aGlzLl9kYXRhYmFzZU5hbWVzQnlT
ZWN1cml0eU9yaWdpbltzZWN1cml0eU9yaWdpbl1baV0pOwotICAgICAgICBkZWxldGUgdGhpcy5f
ZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5dOworICAgICAgICB2
YXIgc2VjdXJpdHlPcmlnaW5JZCA9IHNlY3VyaXR5T3JpZ2luLmlkKCk7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3Jp
Z2luSWRdKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9kYXRhYmFzZU5hbWVz
QnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9yaWdpbklkXS5sZW5ndGg7ICsraSkKKyAgICAgICAg
ICAgIHRoaXMuX2RhdGFiYXNlUmVtb3ZlZChzZWN1cml0eU9yaWdpbiwgdGhpcy5fZGF0YWJhc2VO
YW1lc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5JZF1baV0pOworICAgICAgICBkZWxl
dGUgdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5JZF07
CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWN1cml0eU9yaWdp
bgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufSBzZWN1cml0eU9y
aWdpbgogICAgICAqIEBwYXJhbSB7QXJyYXkuPHN0cmluZz59IGRhdGFiYXNlTmFtZXMKICAgICAg
Ki8KICAgICBfdXBkYXRlT3JpZ2luRGF0YWJhc2VOYW1lczogZnVuY3Rpb24oc2VjdXJpdHlPcmln
aW4sIGRhdGFiYXNlTmFtZXMpCkBAIC0yMTEsMTAgKzIxMywxMSBAQCBXZWJJbnNwZWN0b3IuSW5k
ZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRh
dGFiYXNlTmFtZXMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBuZXdEYXRhYmFzZU5hbWVzW2Rh
dGFiYXNlTmFtZXNbaV1dID0gdHJ1ZTsKICAgICAgICAgdmFyIG9sZERhdGFiYXNlTmFtZXMgPSB7
fTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1
cml0eU9yaWdpbltzZWN1cml0eU9yaWdpbl0ubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBvbGRE
YXRhYmFzZU5hbWVzW3RoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5
T3JpZ2luXVtpXV0gPSB0cnVlOworICAgICAgICB2YXIgc2VjdXJpdHlPcmlnaW5JZCA9IHNlY3Vy
aXR5T3JpZ2luLmlkKCk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fZGF0YWJh
c2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5JZF0ubGVuZ3RoOyArK2kpCisg
ICAgICAgICAgICBvbGREYXRhYmFzZU5hbWVzW3RoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5
T3JpZ2luW3NlY3VyaXR5T3JpZ2luSWRdW2ldXSA9IHRydWU7CiAKLSAgICAgICAgdGhpcy5fZGF0
YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5dID0gZGF0YWJhc2VOYW1l
czsKKyAgICAgICAgdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlP
cmlnaW5JZF0gPSBkYXRhYmFzZU5hbWVzOwogCiAgICAgICAgIGZvciAodmFyIGRhdGFiYXNlTmFt
ZSBpbiBvbGREYXRhYmFzZU5hbWVzKSB7CiAgICAgICAgICAgICBpZiAoIW5ld0RhdGFiYXNlTmFt
ZXNbZGF0YWJhc2VOYW1lXSkKQEAgLTIyNyw3ICsyMzAsNyBAQCBXZWJJbnNwZWN0b3IuSW5kZXhl
ZERCTW9kZWwucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0g
e3N0cmluZ30gc2VjdXJpdHlPcmlnaW4KKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZWN1
cml0eU9yaWdpbn0gc2VjdXJpdHlPcmlnaW4KICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YWJh
c2VOYW1lCiAgICAgICovCiAgICAgX2RhdGFiYXNlQWRkZWQ6IGZ1bmN0aW9uKHNlY3VyaXR5T3Jp
Z2luLCBkYXRhYmFzZU5hbWUpCkBAIC0yMzcsNyArMjQwLDcgQEAgV2ViSW5zcGVjdG9yLkluZGV4
ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFt
IHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2Vj
dXJpdHlPcmlnaW59IHNlY3VyaXR5T3JpZ2luCiAgICAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGFi
YXNlTmFtZQogICAgICAqLwogICAgIF9kYXRhYmFzZVJlbW92ZWQ6IGZ1bmN0aW9uKHNlY3VyaXR5
T3JpZ2luLCBkYXRhYmFzZU5hbWUpCkBAIC0yNDcsNyArMjUwLDcgQEAgV2ViSW5zcGVjdG9yLklu
ZGV4ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBh
cmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
U2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5T3JpZ2luCiAgICAgICovCiAgICAgX2xvYWREYXRhYmFz
ZU5hbWVzOiBmdW5jdGlvbihzZWN1cml0eU9yaWdpbikKICAgICB7CkBAIC0yNjIsMTIgKzI2NSwx
MiBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCF0aGlzLl9k
YXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9yaWdpbl0pCisgICAgICAgICAg
ICBpZiAoIXRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2lu
LmlkKCldKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIHRoaXMuX3VwZGF0
ZU9yaWdpbkRhdGFiYXNlTmFtZXMoc2VjdXJpdHlPcmlnaW4sIGRhdGFiYXNlTmFtZXMpOwogICAg
ICAgICB9CiAKLSAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNlTmFtZXMoc2Vj
dXJpdHlPcmlnaW4sIGNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICBJbmRleGVkREJBZ2Vu
dC5yZXF1ZXN0RGF0YWJhc2VOYW1lcyhzZWN1cml0eU9yaWdpbi50b1Byb3RvY29sKCksIGNhbGxi
YWNrLmJpbmQodGhpcykpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTI4Niw3ICsyODksNyBAQCBX
ZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCF0aGlzLl9kYXRhYmFz
ZU5hbWVzQnlTZWN1cml0eU9yaWdpbltkYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luXSkKKyAgICAg
ICAgICAgIGlmICghdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bZGF0YWJhc2VJ
ZC5zZWN1cml0eU9yaWdpbi5pZCgpXSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB2YXIgZGF0YWJhc2VNb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwu
RGF0YWJhc2UoZGF0YWJhc2VJZCwgZGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzLnZlcnNpb24sIGRh
dGFiYXNlV2l0aE9iamVjdFN0b3Jlcy5pbnRWZXJzaW9uKTsKICAgICAgICAgICAgIHRoaXMuX2Rh
dGFiYXNlcy5wdXQoZGF0YWJhc2VJZCwgZGF0YWJhc2VNb2RlbCk7IApAQCAtMzA2LDcgKzMwOSw3
IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9k
ZWwuRXZlbnRUeXBlcy5EYXRhYmFzZUxvYWRlZCwgZGF0YWJhc2VNb2RlbCk7CiAgICAgICAgIH0K
IAotICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJhc2UoZGF0YWJhc2VJZC5zZWN1
cml0eU9yaWdpbiwgZGF0YWJhc2VJZC5uYW1lLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAg
ICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNlKGRhdGFiYXNlSWQuc2VjdXJpdHlPcmln
aW4udG9Qcm90b2NvbCgpLCBkYXRhYmFzZUlkLm5hbWUsIGNhbGxiYWNrLmJpbmQodGhpcykpOwog
ICAgIH0sCiAKICAgICAvKioKQEAgLTM2MCw3ICszNjMsNyBAQCBXZWJJbnNwZWN0b3IuSW5kZXhl
ZERCTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKCF0aGlzLl9kYXRhYmFzZU5hbWVz
QnlTZWN1cml0eU9yaWdpbltkYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luXSkKKyAgICAgICAgICAg
IGlmICghdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bZGF0YWJhc2VJZC5zZWN1
cml0eU9yaWdpbi5pZCgpXSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB2
YXIgZW50cmllcyA9IFtdOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhRW50
cmllcy5sZW5ndGg7ICsraSkgewpAQCAtMzczLDcgKzM3Niw3IEBAIFdlYkluc3BlY3Rvci5JbmRl
eGVkREJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB2YXIga2V5UmFu
Z2UgPSBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwua2V5UmFuZ2VGcm9tSURCS2V5UmFuZ2Uo
aWRiS2V5UmFuZ2UpOwotICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YShkYXRhYmFz
ZUlkLnNlY3VyaXR5T3JpZ2luLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgaW5kZXhO
YW1lLCBza2lwQ291bnQsIHBhZ2VTaXplLCBrZXlSYW5nZSA/IGtleVJhbmdlIDogdW5kZWZpbmVk
LCBpbm5lckNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1
ZXN0RGF0YShkYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luLnRvUHJvdG9jb2woKSwgZGF0YWJhc2VO
YW1lLCBvYmplY3RTdG9yZU5hbWUsIGluZGV4TmFtZSwgc2tpcENvdW50LCBwYWdlU2l6ZSwga2V5
UmFuZ2UgPyBrZXlSYW5nZSA6IHVuZGVmaW5lZCwgaW5uZXJDYWxsYmFjay5iaW5kKHRoaXMpKTsK
ICAgICB9LAogCiAgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZQpA
QCAtMzk0LDcgKzM5Nyw3IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5FbnRyeSA9IGZ1
bmN0aW9uKGtleSwgcHJpbWFyeUtleSwgdmFsdWUpCiAKIC8qKgogICogQGNvbnN0cnVjdG9yCi0g
KiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlPcmlnaW4KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlNlY3VyaXR5T3JpZ2lufSBzZWN1cml0eU9yaWdpbgogICogQHBhcmFtIHtzdHJpbmd9IG5hbWUK
ICAqLwogV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLkRhdGFiYXNlSWQgPSBmdW5jdGlvbihz
ZWN1cml0eU9yaWdpbiwgbmFtZSkKQEAgLTQwOSw3ICs0MTIsNyBAQCBXZWJJbnNwZWN0b3IuSW5k
ZXhlZERCTW9kZWwuRGF0YWJhc2VJZC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgZXF1YWxz
OiBmdW5jdGlvbihkYXRhYmFzZUlkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMubmFtZSA9
PT0gZGF0YWJhc2VJZC5uYW1lICYmIHRoaXMuc2VjdXJpdHlPcmlnaW4gPT09IGRhdGFiYXNlSWQu
c2VjdXJpdHlPcmlnaW47CisgICAgICAgIHJldHVybiB0aGlzLm5hbWUgPT09IGRhdGFiYXNlSWQu
bmFtZSAmJiB0aGlzLnNlY3VyaXR5T3JpZ2luLmlkKCkgPT09IGRhdGFiYXNlSWQuc2VjdXJpdHlP
cmlnaW4uaWQoKTsKICAgICB9LAogfQogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQlZpZXdzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJWaWV3cy5qcwppbmRleCAwN2FjOTE5NTYzMGM3NmY0
NjBlNDI2MDlmMjBhMjQwZDdhMGZiMjI3Li5lZTYwZTJmYzQwMDcxN2QwMGJhNWI0OTg4ZDZiYmMx
OTE1N2Q2YWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0luZGV4ZWREQlZpZXdzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvSW5kZXhlZERCVmlld3MuanMKQEAgLTgwLDcgKzgwLDcgQEAgV2ViSW5zcGVjdG9yLklEQkRh
dGFiYXNlVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICBfcmVmcmVzaERhdGFiYXNlOiBmdW5jdGlv
bigpCiAgICAgewotICAgICAgICB0aGlzLl9zZWN1cml0eU9yaWdpblRyZWVFbGVtZW50LnRpdGxl
ID0gdGhpcy5fZm9ybWF0SGVhZGVyKFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VjdXJpdHkgb3Jp
Z2luIiksIHRoaXMuX2RhdGFiYXNlLmRhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW4pOworICAgICAg
ICB0aGlzLl9zZWN1cml0eU9yaWdpblRyZWVFbGVtZW50LnRpdGxlID0gdGhpcy5fZm9ybWF0SGVh
ZGVyKFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VjdXJpdHkgb3JpZ2luIiksIHRoaXMuX2RhdGFi
YXNlLmRhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW4udWlUaXRsZSgpKTsKICAgICAgICAgdGhpcy5f
bmFtZVRyZWVFbGVtZW50LnRpdGxlID0gdGhpcy5fZm9ybWF0SGVhZGVyKFdlYkluc3BlY3Rvci5V
SVN0cmluZygiTmFtZSIpLCB0aGlzLl9kYXRhYmFzZS5kYXRhYmFzZUlkLm5hbWUpOwogICAgICAg
ICB0aGlzLl9zdHJpbmdWZXJzaW9uVHJlZUVsZW1lbnQudGl0bGUgPSB0aGlzLl9mb3JtYXRIZWFk
ZXIoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHJpbmcgVmVyc2lvbiIpLCB0aGlzLl9kYXRhYmFz
ZS52ZXJzaW9uKTsKICAgICAgICAgdGhpcy5faW50VmVyc2lvblRyZWVFbGVtZW50LnRpdGxlID0g
dGhpcy5fZm9ybWF0SGVhZGVyKFdlYkluc3BlY3Rvci5VSVN0cmluZygiSW50ZWdlciBWZXJzaW9u
IiksIHRoaXMuX2RhdGFiYXNlLmludFZlcnNpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVRyZWVNb2RlbC5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwuanMKaW5kZXggZjI2Yzc5
MThmNjU3ZGVhZTU0MTRkNjk4OTJkZGM4NmJmZDExZmQwYy4uZjdiNGRmYTYzYjY2ODBlNTYwY2Y1
MTJmOGUwNWZkZTBjMmMzYmIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZVRyZWVNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzCkBAIC01MCw3ICs1MCwxMSBAQCBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwgPSBmdW5jdGlvbihuZXR3b3JrTWFuYWdlcikK
ICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyUGFnZURpc3BhdGNoZXIobmV3IFdlYkluc3Bl
Y3Rvci5QYWdlRGlzcGF0Y2hlcih0aGlzKSk7CiAKICAgICB0aGlzLl9wZW5kaW5nQ29uc29sZU1l
c3NhZ2VzID0ge307CisKICAgICB0aGlzLl9zZWN1cml0eU9yaWdpbkZyYW1lQ291bnQgPSB7fTsK
KyAgICB0aGlzLl9zZWN1cml0eU9yaWdpbnNCeUlkID0ge307CisgICAgdGhpcy5fdXJsVG9ET01E
b21haW5zID0ge307CisgICAgdGhpcy5fbGFzdE9yaWdpbklkID0gMDsKIH0KIAogV2ViSW5zcGVj
dG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMgPSB7CkBAIC0xMjAsNDQgKzEyNCwxMDEg
QEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICB9LAog
CiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCisgICAgICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5T3JpZ2luCiAgICAg
ICovCiAgICAgX2FkZFNlY3VyaXR5T3JpZ2luOiBmdW5jdGlvbihzZWN1cml0eU9yaWdpbikKICAg
ICB7Ci0gICAgICAgIGlmICghdGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50W3NlY3VyaXR5
T3JpZ2luXSkgewotICAgICAgICAgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50W3Nl
Y3VyaXR5T3JpZ2luXSA9IDE7CisgICAgICAgIHZhciBzZWN1cml0eU9yaWdpbklkID0gc2VjdXJp
dHlPcmlnaW4uaWQoKTsKKyAgICAgICAgaWYgKCF0aGlzLl9zZWN1cml0eU9yaWdpbkZyYW1lQ291
bnRbc2VjdXJpdHlPcmlnaW5JZF0pIHsKKyAgICAgICAgICAgIHRoaXMuX3NlY3VyaXR5T3JpZ2lu
RnJhbWVDb3VudFtzZWN1cml0eU9yaWdpbklkXSA9IDE7CiAgICAgICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRU
eXBlcy5TZWN1cml0eU9yaWdpbkFkZGVkLCBzZWN1cml0eU9yaWdpbik7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50
W3NlY3VyaXR5T3JpZ2luXSArPSAxOworICAgICAgICB0aGlzLl9zZWN1cml0eU9yaWdpbkZyYW1l
Q291bnRbc2VjdXJpdHlPcmlnaW5JZF0gKz0gMTsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICog
QHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuU2VjdXJpdHlPcmlnaW59IHNlY3VyaXR5T3JpZ2luCiAgICAgICovCiAgICAgX3JlbW92ZVNl
Y3VyaXR5T3JpZ2luOiBmdW5jdGlvbihzZWN1cml0eU9yaWdpbikKICAgICB7Ci0gICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRoaXMuX3NlY3VyaXR5T3JpZ2luRnJhbWVDb3VudFtzZWN1cml0eU9yaWdp
bl0pOwotICAgICAgICBpZiAodGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50W3NlY3VyaXR5
T3JpZ2luXSA9PT0gMSkgewotICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3NlY3VyaXR5T3JpZ2lu
RnJhbWVDb3VudFtzZWN1cml0eU9yaWdpbl07CisgICAgICAgIHZhciBzZWN1cml0eU9yaWdpbklk
ID0gc2VjdXJpdHlPcmlnaW4uaWQoKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fc2Vj
dXJpdHlPcmlnaW5GcmFtZUNvdW50W3NlY3VyaXR5T3JpZ2luSWRdKTsKKyAgICAgICAgaWYgKHRo
aXMuX3NlY3VyaXR5T3JpZ2luRnJhbWVDb3VudFtzZWN1cml0eU9yaWdpbklkXSA9PT0gMSkgewor
ICAgICAgICAgICAgdGhpcy5fdW5iaW5kU2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pOwog
ICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJl
c291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuU2VjdXJpdHlPcmlnaW5SZW1vdmVkLCBzZWN1cml0
eU9yaWdpbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5f
c2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50W3NlY3VyaXR5T3JpZ2luXSAtPSAxOworICAgICAgICB0
aGlzLl9zZWN1cml0eU9yaWdpbkZyYW1lQ291bnRbc2VjdXJpdHlPcmlnaW5JZF0gLT0gMTsKICAg
ICB9LAogCiAgICAgLyoqCi0gICAgICogQHJldHVybiB7QXJyYXkuPHN0cmluZz59CisgICAgICog
QHBhcmFtIHtQYWdlQWdlbnQuU2VjdXJpdHlPcmlnaW59IHBheWxvYWQKKyAgICAgKiBAcmV0dXJu
IHtXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW59CiAgICAgICovCi0gICAgc2VjdXJpdHlPcmln
aW5zOiBmdW5jdGlvbigpCisgICAgX2JpbmRTZWN1cml0eU9yaWdpbjogZnVuY3Rpb24ocGF5bG9h
ZCkKKyAgICB7CisgICAgICAgIHZhciB1cmwgPSBwYXlsb2FkLnVybDsKKyAgICAgICAgdmFyIGRv
bWFpbiA9IHBheWxvYWQuZG9tYWluU2V0SW5ET00gfHwgIiI7CisgICAgICAgIHZhciBkb21haW5N
YXAgPSB0aGlzLl91cmxUb0RPTURvbWFpbnNbdXJsXTsKKyAgICAgICAgaWYgKCFkb21haW5NYXAp
IHsKKyAgICAgICAgICAgIGRvbWFpbk1hcCA9IHt9OworICAgICAgICAgICAgdGhpcy5fdXJsVG9E
T01Eb21haW5zW3VybF0gPSBkb21haW5NYXA7CisgICAgICAgIH0KKyAgICAgICAgdmFyIG9yaWdp
biA9IGRvbWFpbk1hcFtkb21haW5dOworICAgICAgICBpZiAoIW9yaWdpbikgeworICAgICAgICAg
ICAgb3JpZ2luID0gbmV3IFdlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbih1cmwsIGRvbWFpbiwg
U3RyaW5nKCsrdGhpcy5fbGFzdE9yaWdpbklkKSk7CisgICAgICAgICAgICBkb21haW5NYXBbZG9t
YWluXSA9IG9yaWdpbjsKKyAgICAgICAgICAgIHRoaXMuX3NlY3VyaXR5T3JpZ2luc0J5SWRbb3Jp
Z2luLmlkKCldID0gb3JpZ2luOworICAgICAgICB9CisgICAgICAgIHJldHVybiBvcmlnaW47Cisg
ICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3Jp
Z2lufSBzZWN1cml0eU9yaWdpbgorICAgICAqLworICAgIF91bmJpbmRTZWN1cml0eU9yaWdpbjog
ZnVuY3Rpb24oc2VjdXJpdHlPcmlnaW4pCiAgICAgewotICAgICAgICByZXR1cm4gT2JqZWN0Lmtl
eXModGhpcy5fc2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50KTsKKyAgICAgICAgdmFyIHNlY3VyaXR5
T3JpZ2luSWQgPSBzZWN1cml0eU9yaWdpbi5pZCgpOworICAgICAgICBkZWxldGUgdGhpcy5fc2Vj
dXJpdHlPcmlnaW5GcmFtZUNvdW50W3NlY3VyaXR5T3JpZ2luSWRdOworICAgICAgICBkZWxldGUg
dGhpcy5fc2VjdXJpdHlPcmlnaW5zQnlJZFtzZWN1cml0eU9yaWdpbklkXTsKKworICAgICAgICB2
YXIgdXJsID0gc2VjdXJpdHlPcmlnaW4udXJsKCk7CisgICAgICAgIHZhciBkb21haW5NYXAgPSB0
aGlzLl91cmxUb0RPTURvbWFpbnNbdXJsXTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZG9tYWlu
TWFwKTsKKyAgICAgICAgdmFyIGRvbWFpbiA9IHNlY3VyaXR5T3JpZ2luLmRvbWFpblNldEluRE9N
KCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbWFpbk1hcFtkb21haW5dKTsKKyAgICAgICAg
ZGVsZXRlIGRvbWFpbk1hcFtkb21haW5dOworICAgICAgICBpZiAoIU9iamVjdC5rZXlzKGRvbWFp
bk1hcCkubGVuZ3RoKQorICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3VybFRvRE9NRG9tYWluc1t1
cmxdOwogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNv
dXJjZVRyZWVGcmFtZX0gbWFpbkZyYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGlkCisgICAg
ICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufQogICAgICAqLwotICAgIF9o
YW5kbGVNYWluRnJhbWVEZXRhY2hlZDogZnVuY3Rpb24obWFpbkZyYW1lKQorICAgIHNlY3VyaXR5
T3JpZ2luRm9ySWQ6IGZ1bmN0aW9uKGlkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Nl
Y3VyaXR5T3JpZ2luc0J5SWRbaWRdIHx8IG51bGw7CisgICAgfSwKKworICAgIC8qKgorICAgICAq
IEByZXR1cm4ge0FycmF5LjxXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4+fQorICAgICAqLwor
ICAgIHNlY3VyaXR5T3JpZ2luczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgLyoqCisgICAg
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBpZAorICAgICAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0
b3IuU2VjdXJpdHlPcmlnaW59CisgICAgICAgICAqLworICAgICAgICBmdW5jdGlvbiBjb252ZXJ0
ZXIoaWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9zZWN1cml0eU9yaWdp
bnNCeUlkW2lkXTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5f
c2VjdXJpdHlPcmlnaW5GcmFtZUNvdW50KS5tYXAoY29udmVydGVyLmJpbmQodGhpcykpOworICAg
IH0sCisKKyAgICBfaGFuZGxlTWFpbkZyYW1lRGV0YWNoZWQ6IGZ1bmN0aW9uKCkKICAgICB7CiAg
ICAgICAgIC8qKgogICAgICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVG
cmFtZX0gZnJhbWUKQEAgLTE2OSw3ICsyMzAsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVl
TW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKCFmcmFtZS5pc01haW5GcmFtZSgp
KQogICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZVNlY3VyaXR5T3JpZ2luKGZyYW1lLnNlY3Vy
aXR5T3JpZ2luKTsKICAgICAgICAgfQotICAgICAgICByZW1vdmVPcmlnaW5Gb3JGcmFtZS5jYWxs
KHRoaXMsIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5tYWluRnJhbWUpOworICAgICAg
ICByZW1vdmVPcmlnaW5Gb3JGcmFtZS5jYWxsKHRoaXMsIHRoaXMubWFpbkZyYW1lKTsKICAgICB9
LAogCiAgICAgLyoqCkBAIC0xOTIsNyArMjUzLDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJl
ZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciBwYXJlbnRGcmFtZSA9IHRoaXMu
X2ZyYW1lc1tmcmFtZVBheWxvYWQucGFyZW50SWRdOwogICAgICAgICAgICAgZnJhbWUgPSBuZXcg
V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lKHRoaXMsIHBhcmVudEZyYW1lLCBmcmFtZVBh
eWxvYWQpOwogICAgICAgICAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgdGhpcy5tYWlu
RnJhbWUpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVNYWluRnJhbWVEZXRhY2hlZCh0
aGlzLm1haW5GcmFtZSk7CisgICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlTWFpbkZyYW1lRGV0
YWNoZWQoKTsKICAgICAgICAgICAgICAgICAvLyBEZWZpbml0ZWx5IGEgbmF2aWdhdGlvbiB0byB0
aGUgbmV3IGJhY2tlbmQgcHJvY2Vzcy4KICAgICAgICAgICAgICAgICB0aGlzLl9mcmFtZURldGFj
aGVkKHRoaXMubWFpbkZyYW1lLmlkKTsKICAgICAgICAgICAgIH0KQEAgLTQzMSw3ICs0OTIsNyBA
QCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWUgPSBmdW5jdGlvbihtb2RlbCwgcGFyZW50
RnJhbWUsIHBheWxvYWQpCiAgICAgdGhpcy5fbG9hZGVySWQgPSBwYXlsb2FkLmxvYWRlcklkOwog
ICAgIHRoaXMuX25hbWUgPSBwYXlsb2FkLm5hbWU7CiAgICAgdGhpcy5fdXJsID0gcGF5bG9hZC51
cmw7Ci0gICAgdGhpcy5fc2VjdXJpdHlPcmlnaW4gPSBwYXlsb2FkLnNlY3VyaXR5T3JpZ2luOwor
ICAgIHRoaXMuX3NlY3VyaXR5T3JpZ2luID0gbW9kZWwuX2JpbmRTZWN1cml0eU9yaWdpbihwYXls
b2FkLnNlY3VyaXR5T3JpZ2luKTsKICAgICB0aGlzLl9taW1lVHlwZSA9IHBheWxvYWQubWltZVR5
cGU7CiAKICAgICAvKioKQEAgLTQ3NCw3ICs1MzUsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VU
cmVlRnJhbWUucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcmV0dXJu
IHtzdHJpbmd9CisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlNlY3VyaXR5T3JpZ2lufQog
ICAgICAqLwogICAgIGdldCBzZWN1cml0eU9yaWdpbigpCiAgICAgewpAQCAtNTIxLDcgKzU4Miw3
IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHRoaXMuX2xvYWRlcklkID0gZnJhbWVQYXlsb2FkLmxvYWRlcklkOwogICAgICAgICB0aGlzLl9u
YW1lID0gZnJhbWVQYXlsb2FkLm5hbWU7CiAgICAgICAgIHRoaXMuX3VybCA9IGZyYW1lUGF5bG9h
ZC51cmw7Ci0gICAgICAgIHRoaXMuX3NlY3VyaXR5T3JpZ2luID0gZnJhbWVQYXlsb2FkLnNlY3Vy
aXR5T3JpZ2luOworICAgICAgICB0aGlzLl9zZWN1cml0eU9yaWdpbiA9IHRoaXMuX21vZGVsLl9i
aW5kU2VjdXJpdHlPcmlnaW4oZnJhbWVQYXlsb2FkLnNlY3VyaXR5T3JpZ2luKTsKICAgICAgICAg
dGhpcy5fbWltZVR5cGUgPSBmcmFtZVBheWxvYWQubWltZVR5cGU7CiAKICAgICAgICAgdmFyIG1h
aW5SZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlc01hcFt0aGlzLl91cmxdOwpAQCAtNjQyLDYgKzcw
Myw3NSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWUucHJvdG90eXBlID0gewogCiAv
KioKICAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtzdHJpbmd9IHVybAorICogQHBhcmFtIHtz
dHJpbmd8dW5kZWZpbmVkfSBkb21haW5TZXRJbkRPTQorICogQHBhcmFtIHtzdHJpbmd9IGlkCisg
Ki8KK1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbiA9IGZ1bmN0aW9uKHVybCwgZG9tYWluU2V0
SW5ET00sIGlkKQoreworICAgIHRoaXMuX3VybCA9IHVybDsKKyAgICB0aGlzLl9kb21haW5TZXRJ
bkRPTSA9IGRvbWFpblNldEluRE9NOworICAgIHRoaXMuX2lkID0gaWQ7Cit9CisKK1dlYkluc3Bl
Y3Rvci5TZWN1cml0eU9yaWdpbi5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHJldHVy
biB7c3RyaW5nfQorICAgICAqLworICAgIGlkOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5faWQ7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmlu
Z30KKyAgICAgKi8KKyAgICB1cmw6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl91cmw7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAg
ICAgKi8KKyAgICBkb21haW5TZXRJbkRPTTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2RvbWFpblNldEluRE9NIHx8ICIiOworICAgIH0sCisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbn0gb3RoZXIKKyAgICAgKiBAcmV0
dXJuIHtib29sZWFufQorICAgICAqLworICAgIGVxdWFsOiBmdW5jdGlvbihvdGhlcikKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl91cmwgPT09IG90aGVyLl91cmwgJiYgdGhpcy5fZG9tYWlu
U2V0SW5ET00gPT0gb3RoZXIuX2RvbWFpblNldEluRE9NOworICAgIH0sCisKKyAgICAvKioKKyAg
ICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgdWlUaXRsZTogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgIGlmICh0aGlzLnVybCgpID09PSAiZmlsZTovLyIpCisgICAgICAgICAgcmV0
dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9jYWwgRmlsZXMiKTsKKworICAgICAgdmFyIGRv
bWFpbiA9IHRoaXMuZG9tYWluU2V0SW5ET00oKTsKKyAgICAgIHZhciBzdWZmaXggPSBkb21haW4g
PyBTdHJpbmcuc3ByaW50ZigiICglcykiLCBkb21haW4pIDogIiI7CisgICAgICByZXR1cm4gdGhp
cy51cmwoKSArIHN1ZmZpeDsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7UGFn
ZUFnZW50LlNlY3VyaXR5T3JpZ2lufQorICAgICAqLworICAgIHRvUHJvdG9jb2w6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB7IHVybDogdGhpcy5fdXJsLCBkb21haW5TZXRJbkRP
TTogdGhpcy5fZG9tYWluU2V0SW5ET00gfHwgdW5kZWZpbmVkIH07CisgICAgfQorfQorCisvKioK
KyAqIEBjb25zdHJ1Y3RvcgogICogQGltcGxlbWVudHMge1BhZ2VBZ2VudC5EaXNwYXRjaGVyfQog
ICovCiBXZWJJbnNwZWN0b3IuUGFnZURpc3BhdGNoZXIgPSBmdW5jdGlvbihyZXNvdXJjZVRyZWVN
b2RlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlc1BhbmVsLmpzCmluZGV4IDg4MDYyNjljYzg5ZDJjMTU1YmFmM2FjZTZhYTA0NDJiZjgwNDhj
NjguLjllOTc0NTMzOWIxMmViMTUwOGU1MTQ5ZGNlZDg2YmY5YzY4YTAxZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwpA
QCAtMTYxMCw3ICsxNjEwLDcgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1l
bnQucHJvdG90eXBlID0gewogICovCiBXZWJJbnNwZWN0b3IuSURCRGF0YWJhc2VUcmVlRWxlbWVu
dCA9IGZ1bmN0aW9uKHN0b3JhZ2VQYW5lbCwgbW9kZWwsIGRhdGFiYXNlSWQpCiB7Ci0gICAgV2Vi
SW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBzdG9yYWdlUGFuZWws
IG51bGwsIGRhdGFiYXNlSWQubmFtZSArICIgLSAiICsgZGF0YWJhc2VJZC5zZWN1cml0eU9yaWdp
biwgWyJpbmRleGVkLWRiLXN0b3JhZ2UtdHJlZS1pdGVtIl0pOworICAgIFdlYkluc3BlY3Rvci5C
YXNlU3RvcmFnZVRyZWVFbGVtZW50LmNhbGwodGhpcywgc3RvcmFnZVBhbmVsLCBudWxsLCBkYXRh
YmFzZUlkLm5hbWUgKyAiIC0gIiArIGRhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW4udWlUaXRsZSgp
LCBbImluZGV4ZWQtZGItc3RvcmFnZS10cmVlLWl0ZW0iXSk7CiAgICAgdGhpcy5fbW9kZWwgPSBt
b2RlbDsKICAgICB0aGlzLl9kYXRhYmFzZUlkID0gZGF0YWJhc2VJZDsKICAgICB0aGlzLl9pZGJP
YmplY3RTdG9yZVRyZWVFbGVtZW50cyA9IHt9OwpAQCAtMTYxOSw3ICsxNjE5LDggQEAgV2ViSW5z
cGVjdG9yLklEQkRhdGFiYXNlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihzdG9yYWdlUGFuZWwsIG1v
ZGVsLCBkYXRhYmFzZUlkKQogV2ViSW5zcGVjdG9yLklEQkRhdGFiYXNlVHJlZUVsZW1lbnQucHJv
dG90eXBlID0gewogICAgIGdldCBpdGVtVVJMKCkKICAgICB7Ci0gICAgICAgIHJldHVybiAiaW5k
ZXhlZERCOi8vIiArIHRoaXMuX2RhdGFiYXNlSWQuc2VjdXJpdHlPcmlnaW4gKyAiLyIgKyB0aGlz
Ll9kYXRhYmFzZUlkLm5hbWU7CisgICAgICAgIHZhciBvcmlnaW4gPSB0aGlzLl9kYXRhYmFzZUlk
LnNlY3VyaXR5T3JpZ2luOworICAgICAgICByZXR1cm4gImluZGV4ZWREQjovLyIgKyBvcmlnaW4u
dXJsKCkgKyAiLywiICsgb3JpZ2luLmRvbWFpblNldEluRE9NKCkgKyAiLyIgKyB0aGlzLl9kYXRh
YmFzZUlkLm5hbWU7CiAgICAgfSwKIAogICAgIG9uYXR0YWNoOiBmdW5jdGlvbigpCkBAIC0xNzI2
LDcgKzE3MjcsNyBAQCBXZWJJbnNwZWN0b3IuSURCT2JqZWN0U3RvcmVUcmVlRWxlbWVudCA9IGZ1
bmN0aW9uKHN0b3JhZ2VQYW5lbCwgbW9kZWwsIGRhdGFiYXNlSQogV2ViSW5zcGVjdG9yLklEQk9i
amVjdFN0b3JlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIGdldCBpdGVtVVJMKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiAiaW5kZXhlZERCOi8vIiArIHRoaXMuX2RhdGFiYXNlSWQuc2Vj
dXJpdHlPcmlnaW4gKyAiLyIgKyB0aGlzLl9kYXRhYmFzZUlkLm5hbWUgKyAiLyIgKyB0aGlzLl9v
YmplY3RTdG9yZS5uYW1lOworICAgICAgICByZXR1cm4gImluZGV4ZWREQjovLyIgKyB0aGlzLl9k
YXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luLnVybCgpICsgIi8iICsgdGhpcy5fZGF0YWJhc2VJZC5u
YW1lICsgIi8iICsgdGhpcy5fb2JqZWN0U3RvcmUubmFtZTsKICAgICB9LAogCiAgICAvKioKQEAg
LTE4MzEsNyArMTgzMiw3IEBAIFdlYkluc3BlY3Rvci5JREJJbmRleFRyZWVFbGVtZW50ID0gZnVu
Y3Rpb24oc3RvcmFnZVBhbmVsLCBtb2RlbCwgZGF0YWJhc2VJZCwgb2JqCiBXZWJJbnNwZWN0b3Iu
SURCSW5kZXhUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IGl0ZW1VUkwoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuICJpbmRleGVkREI6Ly8iICsgdGhpcy5fZGF0YWJhc2VJZC5zZWN1
cml0eU9yaWdpbiArICIvIiArIHRoaXMuX2RhdGFiYXNlSWQubmFtZSArICIvIiArIHRoaXMuX29i
amVjdFN0b3JlLm5hbWUgKyAiLyIgKyB0aGlzLl9pbmRleC5uYW1lOworICAgICAgICByZXR1cm4g
ImluZGV4ZWREQjovLyIgKyB0aGlzLl9kYXRhYmFzZUlkLnNlY3VyaXR5T3JpZ2luLnVybCgpICsg
Ii8iICsgdGhpcy5fZGF0YWJhc2VJZC5uYW1lICsgIi8iICsgdGhpcy5fb2JqZWN0U3RvcmUubmFt
ZSArICIvIiArIHRoaXMuX2luZGV4Lm5hbWU7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTg4Mywx
NCArMTg4NCwxNSBAQCBXZWJJbnNwZWN0b3IuSURCSW5kZXhUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7CiAgKi8KIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihz
dG9yYWdlUGFuZWwsIGRvbVN0b3JhZ2UsIGNsYXNzTmFtZSkKIHsKLSAgICBXZWJJbnNwZWN0b3Iu
QmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5jYWxsKHRoaXMsIHN0b3JhZ2VQYW5lbCwgbnVsbCwgZG9t
U3RvcmFnZS5zZWN1cml0eU9yaWdpbiA/IGRvbVN0b3JhZ2Uuc2VjdXJpdHlPcmlnaW4gOiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkxvY2FsIEZpbGVzIiksIFsiZG9tc3RvcmFnZS1zdG9yYWdlLXRy
ZWUtaXRlbSIsIGNsYXNzTmFtZV0pOworICAgIFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVF
bGVtZW50LmNhbGwodGhpcywgc3RvcmFnZVBhbmVsLCBudWxsLCBkb21TdG9yYWdlLnNlY3VyaXR5
T3JpZ2luLnVpVGl0bGUoKSwgWyJkb21zdG9yYWdlLXN0b3JhZ2UtdHJlZS1pdGVtIiwgY2xhc3NO
YW1lXSk7CiAgICAgdGhpcy5fZG9tU3RvcmFnZSA9IGRvbVN0b3JhZ2U7CiB9CiAKIFdlYkluc3Bl
Y3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIGdldCBpdGVtVVJM
KCkKICAgICB7Ci0gICAgICAgIHJldHVybiAic3RvcmFnZTovLyIgKyB0aGlzLl9kb21TdG9yYWdl
LnNlY3VyaXR5T3JpZ2luICsgIi8iICsgKHRoaXMuX2RvbVN0b3JhZ2UuaXNMb2NhbFN0b3JhZ2Ug
PyAibG9jYWwiIDogInNlc3Npb24iKTsKKyAgICAgICAgdmFyIG9yaWdpbiA9IHRoaXMuX2RvbVN0
b3JhZ2Uuc2VjdXJpdHlPcmlnaW47CisgICAgICAgIHJldHVybiAic3RvcmFnZTovLyIgKyBvcmln
aW4udXJsKCkgKyAiLywiICsgb3JpZ2luLmRvbWFpblNldEluRE9NKCkgKyAiLyIgKyAodGhpcy5f
ZG9tU3RvcmFnZS5pc0xvY2FsU3RvcmFnZSA/ICJsb2NhbCIgOiAic2Vzc2lvbiIpOwogICAgIH0s
CiAKICAgICBvbnNlbGVjdDogZnVuY3Rpb24oc2VsZWN0ZWRCeVVzZXIpCkBAIC0yMDIwLDcgKzIw
MjIsNyBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lVHJlZUVsZW1lbnQucHJv
dG90eXBlID0gewogICovCiBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50ID0gZnVu
Y3Rpb24oc3RvcmFnZVBhbmVsLCBmaWxlU3lzdGVtKQogewotICAgIHZhciBkaXNwbGF5TmFtZSA9
IGZpbGVTeXN0ZW0udHlwZSArICIgLSAiICsgZmlsZVN5c3RlbS5vcmlnaW47CisgICAgdmFyIGRp
c3BsYXlOYW1lID0gZmlsZVN5c3RlbS50eXBlICsgIiAtICIgKyBmaWxlU3lzdGVtLm9yaWdpbi51
aVRpdGxlKCk7CiAgICAgV2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQuY2FsbCh0
aGlzLCBzdG9yYWdlUGFuZWwsIG51bGwsIGRpc3BsYXlOYW1lLCBbImZpbGUtc3lzdGVtLXN0b3Jh
Z2UtdHJlZS1pdGVtIl0pOwogICAgIHRoaXMuX2ZpbGVTeXN0ZW0gPSBmaWxlU3lzdGVtOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SdW50aW1lTW9k
ZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1J1bnRpbWVNb2RlbC5q
cwppbmRleCBiZWY5MTc3NDhkOTkyMTg3NDA5ZWUzYTUyZTExZDJkNTQzZDQ2NWRkLi41NDgyNjQ0
NTMzYjE3NzVkOWQ2Y2I2MmZjZTRkZDI3YzIzYzEyZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1J1bnRpbWVNb2RlbC5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1J1bnRpbWVNb2RlbC5qcwpAQCAtNzQsNyArNzQsNyBA
QCBXZWJJbnNwZWN0b3IuUnVudGltZU1vZGVsLnByb3RvdHlwZSA9IHsKIAogICAgIC8qKgogICAg
ICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lfSBmcmFtZQotICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBzZWN1cml0eU9yaWdpbgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLlNlY3VyaXR5T3JpZ2lufSBzZWN1cml0eU9yaWdpbgogICAgICAqLwogICAgIGNvbnRleHRC
eUZyYW1lQW5kU2VjdXJpdHlPcmlnaW46IGZ1bmN0aW9uKGZyYW1lLCBzZWN1cml0eU9yaWdpbikK
ICAgICB7CkBAIC00MTQsMTMgKzQxNCwxNSBAQCBXZWJJbnNwZWN0b3IuRnJhbWVFeGVjdXRpb25D
b250ZXh0TGlzdC5wcm90b3R5cGUgPQogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0g
e3N0cmluZ30gc2VjdXJpdHlPcmlnaW4KKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZWN1
cml0eU9yaWdpbn0gc2VjdXJpdHlPcmlnaW4KICAgICAgKi8KICAgICBjb250ZXh0QnlTZWN1cml0
eU9yaWdpbjogZnVuY3Rpb24oc2VjdXJpdHlPcmlnaW4pCiAgICAgewogICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHRoaXMuX2V4ZWN1dGlvbkNvbnRleHRzLmxlbmd0aDsgKytpKSB7CiAgICAg
ICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMuX2V4ZWN1dGlvbkNvbnRleHRzW2ldOwotICAgICAg
ICAgICAgaWYgKCFjb250ZXh0LmlzTWFpbldvcmxkQ29udGV4dCAmJiBjb250ZXh0Lm5hbWUgPT09
IHNlY3VyaXR5T3JpZ2luKQorICAgICAgICAgICAgLy8gRklYTUU6IGNvbnRleHQubmFtZSBzaG91
bGQgYmVjb21lIGNvbnRleHQuc2VjdXJpdHlPcmlnaW4gaW4gdGhlIHByb3RvY29sLCBzbyB0aGF0
CisgICAgICAgICAgICAvLyB0aGUgZG9tYWluU2V0SW5ET00gZmllbGQgc2hhbGwgcGFydGljaXBh
dGUgaW4gdGhlIG9yaWdpbiBtYXRjaGluZy4KKyAgICAgICAgICAgIGlmICghY29udGV4dC5pc01h
aW5Xb3JsZENvbnRleHQgJiYgY29udGV4dC5uYW1lID09PSBzZWN1cml0eU9yaWdpbi51cmwoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dDsgCiAgICAgICAgIH0KICAgICB9LApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDRiMWQwYzc0MTc4YjM4ODc0MWU0ZWJlMDRlMDZhMzVlYTgwNzgyMjYuLmRmMTEwZjhiZmU5
ZTEyODg4YWFiMzc5OTkyYzM1OGY0MzExNTY5M2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAx
My0wMy0wMSAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFtQcm90b2NvbF0gVHVybiBTZWN1cml0eU9yaWdpbiBpbnRvIGFu
IG9iamVjdCBjb250YWluaW5nICJkb21haW5TZXRJbkRPTSIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDk2MAorCisgICAgICAgIEZvbGxvdyB0aGUg
QVBJIGFuZCBtZXRob2Qgc2lnbmF0dXJlIGNoYW5nZXMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVk
L2RvbS1zdG9yYWdlLW9wZW4uaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtL2RlbGV0ZS1lbnRyeS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlc3lzdGVtLXJvb3QuaHRtbDoKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS5odG1sOgorICAgICAg
ICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1uYW1lcy5odG1sOgor
ICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1zdHJ1Y3R1
cmUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS10cmVlL3Jl
c291cmNlLXRyZWUtZXZlbnRzLmh0bWw6CisKIDIwMTMtMDMtMDEgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRmxha3kgdGVzdDogaHR0cC90ZXN0cy9p
bnNwZWN0b3IvcmVzb3VyY2UtdHJlZS9yZXNvdXJjZS1yZXF1ZXN0LWNvbnRlbnQtd2hpbGUtbG9h
ZGluZy5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1l
bmFibGVkL2RvbS1zdG9yYWdlLW9wZW4uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yLWVuYWJsZWQvZG9tLXN0b3JhZ2Utb3Blbi5odG1sCmluZGV4IDEzMDIwMDcyNGU1YWFh
ZTQ0ZmEyNjI3NjI3MDE3OGFkMjRmNmI2ZDAuLjM1YWM2ODNlOWIwZTNiNzEyN2U1YzViZDVkMWUz
MTEwMWQ0MjQxOWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
LWVuYWJsZWQvZG9tLXN0b3JhZ2Utb3Blbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yLWVuYWJsZWQvZG9tLXN0b3JhZ2Utb3Blbi5odG1sCkBAIC0yMiw3ICsyMiw3
IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIHsKICAgICAgICAgdmFyIHN0b3JhZ2VzID0gV2ViSW5z
cGVjdG9yLmRvbVN0b3JhZ2VNb2RlbC5zdG9yYWdlcygpOwogICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHN0b3JhZ2VzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiU2VjdXJpdHlPcmlnaW46ICIgKyBzdG9yYWdlc1tpXS5zZWN1cml0eU9yaWdp
bik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiU2VjdXJpdHlPcmlnaW46
ICIgKyBzdG9yYWdlc1tpXS5zZWN1cml0eU9yaWdpbi51aVRpdGxlKCkpOwogICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIklzTG9jYWxTdG9yYWdlOiAiICsgc3RvcmFnZXNbaV0u
aXNMb2NhbFN0b3JhZ2UpOwogICAgICAgICB9CiAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxl
dGVUZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtL2RlbGV0ZS1lbnRyeS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZmlsZXN5c3RlbS9kZWxldGUtZW50cnkuaHRtbAppbmRleCBhZDhiNDM2MDg1ZmM1NDI2
MjFiNjg4MzVlZTFlMjY2ZmM1YjE5YzE4Li5lNGVlNWIxZWNmZmYwYmQzMzQzNDIxOTAyYjBjYTdl
OTlmMjBhODU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtL2RlbGV0ZS1lbnRyeS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGVsZXRlLWVudHJ5Lmh0bWwKQEAgLTYzLDcgKzYzLDcgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSkKICAgICAgICAgewog
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImVycm9yQ29kZTogIiArIGVycm9y
Q29kZSk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlU3lzdGVtUm9v
dCgiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiwgInRlbXBvcmFyeSIsIHRlc3RTdGVwLnNoaWZ0KCkp
OworICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RmlsZVN5c3RlbVJvb3QobmV3
IFdlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdpbigiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiwgdW5k
ZWZpbmVkLCAiMSIpLCAidGVtcG9yYXJ5IiwgdGVzdFN0ZXAuc2hpZnQoKSk7CiAgICAgICAgIH0s
CiAKICAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5KQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0
LWZpbGVzeXN0ZW0tcm9vdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
ZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGVzeXN0ZW0tcm9vdC5odG1sCmluZGV4IDhmNWNlZmE5MWRk
ODE1MWM3NzM3NzAwM2ZkOWU0NzliNDM2ZWI5NzMuLmNmMDY0NDQyZmM1ZWFkZTM3OTg1YTU0YTlj
MTk2YWM2OWYyMzY3ZjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlc3lzdGVtLXJvb3QuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5c3RlbS1y
b290Lmh0bWwKQEAgLTksNiArOSwxMiBAQCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01D
b250ZW50TG9hZGVkIiwgcnVuVGVzdCk7CiBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICB2YXIgZmls
ZVN5c3RlbU1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWw7CisgICAgdmFy
IGxhc3RPcmlnaW5JZCA9IDA7CisKKyAgICBmdW5jdGlvbiBjcmVhdGVTZWN1cml0eU9yaWdpbih1
cmwpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5TZWN1cml0eU9yaWdp
bih1cmwsIHVuZGVmaW5lZCwgU3RyaW5nICgrK2xhc3RPcmlnaW5JZCkpOworICAgIH0KIAogICAg
IHZhciB0ZXN0U3RlcCA9IFsKICAgICAgICAgZnVuY3Rpb24oKQpAQCAtMjAsMTkgKzI2LDE5IEBA
IGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgIGZ1bmN0aW9uKCkKICAgICAgICAgewotICAgICAg
ICAgICAgZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RmlsZVN5c3RlbVJvb3QoImh0dHA6Ly8xMjcu
MC4wLjE6ODAwMCIsICJ0ZW1wb3JhcnkiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgICAg
IGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KGNyZWF0ZVNlY3VyaXR5T3Jp
Z2luKCJodHRwOi8vMTI3LjAuMC4xOjgwMDAiKSwgInRlbXBvcmFyeSIsIHRlc3RTdGVwLnNoaWZ0
KCkpOwogICAgICAgICB9LAogCiAgICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgYmFja2VuZFJv
b3RFbnRyeSkKICAgICAgICAgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wRmlsZVN5
c3RlbVJvb3RSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSk7Ci0gICAg
ICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlU3lzdGVtUm9vdCgiaHR0cDovLzEy
Ny4wLjAuMTo4MDAwIiwgImZpenpidXp6IiwgdGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgICAg
ICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlU3lzdGVtUm9vdChjcmVhdGVTZWN1cml0eU9y
aWdpbigiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiksICJmaXp6YnV6eiIsIHRlc3RTdGVwLnNoaWZ0
KCkpOwogICAgICAgICB9LAogCiAgICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgYmFja2VuZFJv
b3RFbnRyeSkKICAgICAgICAgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wRmlsZVN5
c3RlbVJvb3RSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSk7Ci0gICAg
ICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlU3lzdGVtUm9vdCgiaHR0cDovL2V4
YW1wbGUuY29tIiwgInRlbXBvcmFyeSIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICAgICAg
ZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RmlsZVN5c3RlbVJvb3QoY3JlYXRlU2VjdXJpdHlPcmln
aW4oImh0dHA6Ly9leGFtcGxlLmNvbSIpLCAidGVtcG9yYXJ5IiwgdGVzdFN0ZXAuc2hpZnQoKSk7
CiAgICAgICAgIH0sCiAKICAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVu
dHJ5KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhl
ZGRiL2RhdGFiYXNlLWRhdGEuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2luZGV4ZWRkYi9kYXRhYmFzZS1kYXRhLmh0bWwKaW5kZXggMTM2M2YyZTk0M2ExZTM0NmEwOWZm
YTUyNzczYzZkZGY0YTM2NWQzZC4uMGM3MzVkYjk1OGZmZDA5ZGFjYTQ3YTE4ODg2MmI4YzVhMDUx
MmUxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhl
ZGRiL2RhdGFiYXNlLWRhdGEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS5odG1sCkBAIC04LDcgKzgsNyBAQCBmdW5jdGlv
biB0ZXN0KCkKICAgICB2YXIgSURCS2V5UmFuZ2UgPSB3aW5kb3cuSURCS2V5UmFuZ2UgfHwgd2lu
ZG93LndlYmtpdElEQktleVJhbmdlOwogICAgIHZhciBpbmRleGVkREJNb2RlbCA9IG5ldyBXZWJJ
bnNwZWN0b3IuSW5kZXhlZERCTW9kZWwoKTsKICAgICB2YXIgbWFpbkZyYW1lSWQgPSBXZWJJbnNw
ZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwubWFpbkZyYW1lLmlkOwotICAgIHZhciBzZWN1cml0eU9y
aWdpbiA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOworICAgIHZhciBzZWN1cml0eU9yaWdpbiA9
IG5ldyBXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4oImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIs
IHVuZGVmaW5lZCwgIjEiKTsKICAgICB2YXIgZGF0YWJhc2VOYW1lID0gInRlc3REYXRhYmFzZSI7
CiAgICAgdmFyIG9iamVjdFN0b3JlTmFtZSA9ICJ0ZXN0T2JqZWN0U3RvcmUiOwogICAgIHZhciBp
bmRleE5hbWUgPSAidGVzdEluZGV4TmFtZSI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtbmFtZXMuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1uYW1lcy5odG1sCmlu
ZGV4IDAxNDNmNzM4NDJlYmVhZTk4MWRkMGMyNzk4MGIxMWNlM2E0N2VhZGQuLmQ4MjU5ZTkyNGEy
ZTBkZWNhZmZkYTFmMjUzYzRjMzg3MWFlYTZhNjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1uYW1lcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1uYW1lcy5o
dG1sCkBAIC0xMyw3ICsxMyw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiRHVtcGluZyBkYXRhYmFzZSBuYW1lczoiKTsKICAgICAgICAgdmFyIHNl
Y3VyaXR5T3JpZ2lucyA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5zZWN1cml0eU9y
aWdpbnMoKTsKICAgICAgICAgdmFyIHNlY3VyaXR5T3JpZ2luID0gc2VjdXJpdHlPcmlnaW5zWzBd
OwotICAgICAgICB2YXIgbmFtZXMgPSBpbmRleGVkREJNb2RlbC5fZGF0YWJhc2VOYW1lc0J5U2Vj
dXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5dOworICAgICAgICB2YXIgbmFtZXMgPSBpbmRleGVk
REJNb2RlbC5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW4uaWQo
KV07CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyArK2kpCiAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiICAgICIgKyBuYW1lc1tpXSk7CiAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1zdHJ1Y3R1cmUuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1zdHJ1
Y3R1cmUuaHRtbAppbmRleCBkODIzYmVmZjRkNjZiMjM2NmEyNjlhZmQ4ZDU3MmUzNjU2NGNjYzJl
Li5hNzhiOTE2MjNjZWVlZmUxNTE1OGFmM2RkYTY1ZDRiMTMxOWMxNTNhIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2Utc3RydWN0
dXJlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRi
L2RhdGFiYXNlLXN0cnVjdHVyZS5odG1sCkBAIC04LDcgKzgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkK
ICAgICB2YXIgaW5kZXhlZERCTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVs
KCk7CiAgICAgdmFyIG1haW5GcmFtZUlkID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVs
Lm1haW5GcmFtZS5pZDsKICAgICB2YXIgZGF0YWJhc2VOYW1lID0gInRlc3REYXRhYmFzZTEiOwot
ICAgIHZhciBzZWN1cml0eU9yaWdpbiA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOworICAgIHZh
ciBzZWN1cml0eU9yaWdpbiA9IG5ldyBXZWJJbnNwZWN0b3IuU2VjdXJpdHlPcmlnaW4oImh0dHA6
Ly8xMjcuMC4wLjE6ODAwMCIsIHVuZGVmaW5lZCwgIjEiKTsKICAgICB2YXIgZGF0YWJhc2VJZCA9
IG5ldyBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuRGF0YWJhc2VJZChzZWN1cml0eU9yaWdp
biwgZGF0YWJhc2VOYW1lKTsKIAogICAgIGZ1bmN0aW9uIGR1bXBEYXRhYmFzZSgpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS10cmVlL3Jlc291
cmNlLXRyZWUtZXZlbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9y
ZXNvdXJjZS10cmVlL3Jlc291cmNlLXRyZWUtZXZlbnRzLmh0bWwKaW5kZXggZWUxZWM5ZDc1YjVk
ZDc1ZmNjNjA3M2ZmMTQzOThkN2YwODk3OGRiZi4uNjhhOTRjMTZmZTM1NzM2ZTUxOTVhYmI2ZmIz
ZmIzMzQzNzY2MWRlZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvcmVzb3VyY2UtdHJlZS9yZXNvdXJjZS10cmVlLWV2ZW50cy5odG1sCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXRyZWUvcmVzb3VyY2UtdHJlZS1ldmVu
dHMuaHRtbApAQCAtMzAsNyArMzAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIGNh
c2UgIlNlY3VyaXR5T3JpZ2luQWRkZWQiOgogICAgICAgICAgICAgY2FzZSAiU2VjdXJpdHlPcmln
aW5SZW1vdmVkIjoKICAgICAgICAgICAgICAgICB2YXIgc2VjdXJpdHlPcmlnaW4gPSBldmVudC5k
YXRhOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIgICAgIiArIGV2
ZW50TmFtZSArICIgOiAiICsgc2VjdXJpdHlPcmlnaW4pOworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCIgICAgIiArIGV2ZW50TmFtZSArICIgOiAiICsgc2VjdXJpdHlP
cmlnaW4udWlUaXRsZSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICB9CkBAIC01OSw3ICs1OSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQog
ICAgICAgICBmcmFtZVBheWxvYWQubG9hZGVySWQgPSAibG9hZGVyLSIgKyBpZDsKICAgICAgICAg
ZnJhbWVQYXlsb2FkLm5hbWUgPSAiZnJhbWUtIiArIGlkOwogICAgICAgICBmcmFtZVBheWxvYWQu
dXJsID0gImh0dHA6Ly9mcmFtZS8iICsgKG5hbWUgfHwgaWQpICsgIi5odG1sIjsKLSAgICAgICAg
ZnJhbWVQYXlsb2FkLnNlY3VyaXR5T3JpZ2luID0gZnJhbWVQYXlsb2FkLnVybDsKKyAgICAgICAg
ZnJhbWVQYXlsb2FkLnNlY3VyaXR5T3JpZ2luID0geyB1cmw6IGZyYW1lUGF5bG9hZC51cmwgfTsK
ICAgICAgICAgZnJhbWVQYXlsb2FkLm1pbWVUeXBlID0gInRleHQvaHRtbCI7CiAgICAgICAgIHJl
dHVybiBmcmFtZVBheWxvYWQ7CiAgICAgfQo=
</data>
<flag name="review"
          id="211765"
          type_id="1"
          status="-"
          setter="vsevik"
    />
          </attachment>
      

    </bug>

</bugzilla>