<?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>50390</bug_id>
          
          <creation_ts>2010-12-02 08:21:57 -0800</creation_ts>
          <short_desc>Web Inspector: Console records for failed XHRs should contain call stack and request method</short_desc>
          <delta_ts>2011-09-19 10:26:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>50551</dependson>
    
    <dependson>50672</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>316161</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-02 08:21:57 -0800</bug_when>
    <thetext>More detailes should be provided for failed XHRs including call stack of the code initiated the request and HTTP request method. The error message should be linked with the request entry in the Network panel and the script source in the Scripts panel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316172</commentid>
    <comment_count>1</comment_count>
      <attachid>75380</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-02 08:43:00 -0800</bug_when>
    <thetext>Created attachment 75380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316187</commentid>
    <comment_count>2</comment_count>
      <attachid>75380</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-12-02 09:12:29 -0800</bug_when>
    <thetext>Comment on attachment 75380
Patch

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

Just a quick once over this looks good to me. Although I think removing the &quot;groupLevel&quot; could have been in a separate patch to make this cleaner. For that this could use a second pair of eyes.

&gt; WebCore/bindings/js/ScriptCallStackFactory.cpp:57
&gt; +PassRefPtr&lt;ScriptCallStack&gt; createScriptCallStack(size_t maxStackSize)
&gt; +{
&gt; +/*
&gt; +    return 0;
&gt; +    */
&gt; +    ExecState* exec = JSMainThreadExecState::currentState();

I think you can remove the comment. The implementation looks good to me.

&gt; WebCore/inspector/InspectorResourceAgent.cpp:292
&gt; +    RequestInfo info = {createScriptCallStack(ScriptCallStack::maxCallStackSizeToCapture), String()};

I don&apos;t know if this is WebKit style to create a struct like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316267</commentid>
    <comment_count>3</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-12-02 11:20:32 -0800</bug_when>
    <thetext>Concur on separating the grouplevel and other unrelated console-y stuff to a separate patch.

Looks like &quot;failed XHR&quot; == (http status code &gt;= 400).  Good starting place I guess.  XHR can also fail catastrophically as well, right (throw an exception?).  I guess that case is covered by &quot;stop on exceptions&quot;.

But wondering also about other resource-y APIs.  Cases for WebSocket, Web DB, et al APIs which might also be able to make use of this?  Things that go into &quot;error&quot; states, but don&apos;t actually throw exceptions.  

Just something to think about for the future ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316394</commentid>
    <comment_count>4</comment_count>
      <attachid>75380</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-12-02 13:26:44 -0800</bug_when>
    <thetext>Comment on attachment 75380
Patch

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

&gt; WebCore/bindings/js/ScriptCallStackFactory.cpp:55
&gt; +    return 0;

Please remove.

&gt; WebCore/inspector/InspectorResourceAgent.cpp:293
&gt; +    m_requestIdToRequestInfo.set(identifier, info);

I think there is the same code in Timeline. Should it re-use this code?

&gt; WebCore/inspector/InspectorResourceAgent.cpp:302
&gt; +    it-&gt;second.httpMethod = request.httpMethod();

FYI: redirect will result in several calls to willSendRequest with same id. With potentially different http methods. You end up with the resulting one which is not necessarily what you want.

&gt; WebCore/inspector/InspectorResourceAgent.cpp:344
&gt; +    m_requestIdToRequestInfo.remove(identifier);

Don&apos;t forget to make this call in didFailLoading too.

&gt; WebCore/inspector/front-end/inspector.js:-1424
&gt; -        payload.groupLevel,

Should you remove groupLevel from the native code as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316807</commentid>
    <comment_count>5</comment_count>
      <attachid>75380</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-03 06:50:12 -0800</bug_when>
    <thetext>Comment on attachment 75380
Patch

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

&gt;&gt; WebCore/inspector/InspectorResourceAgent.cpp:292
&gt;&gt; +    RequestInfo info = {createScriptCallStack(ScriptCallStack::maxCallStackSizeToCapture), String()};
&gt; 
&gt; I don&apos;t know if this is WebKit style to create a struct like this.

It doesn&apos;t prohibited by the style guide and I can see several places in WebCore where such initializers are used so I believe it&apos;s OK to use.

&gt;&gt; WebCore/inspector/InspectorResourceAgent.cpp:293
&gt;&gt; +    m_requestIdToRequestInfo.set(identifier, info);
&gt; 
&gt; I think there is the same code in Timeline. Should it re-use this code?

I can&apos;t find such mapping in Timeline on the backend side, could you explain which code you suggest reuse?

With our current separation into independent components for timeline, resource tracking etc. which are supposed to work even when other components are disabled, we already send some data several times if different component need them. If we&apos;d like to avoid that we should design a generic solution.

&gt;&gt; WebCore/inspector/InspectorResourceAgent.cpp:302
&gt;&gt; +    it-&gt;second.httpMethod = request.httpMethod();
&gt; 
&gt; FYI: redirect will result in several calls to willSendRequest with same id. With potentially different http methods. You end up with the resulting one which is not necessarily what you want.

I think we should capture HTTP method and URL during the first invocation of willSendRequest for given identifier.

&gt;&gt; WebCore/inspector/front-end/inspector.js:-1424
&gt;&gt; -        payload.groupLevel,
&gt; 
&gt; Should you remove groupLevel from the native code as well?

This patch removed it from InspectorController and ConsoleMessage, did I miss anything else?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316808</commentid>
    <comment_count>6</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-03 06:53:20 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Looks like &quot;failed XHR&quot; == (http status code &gt;= 400).  Good starting place I guess.  XHR can also fail catastrophically as well, right (throw an exception?).  I guess that case is covered by &quot;stop on exceptions&quot;.
&gt; 
&gt; But wondering also about other resource-y APIs.  Cases for WebSocket, Web DB, et al APIs which might also be able to make use of this?  Things that go into &quot;error&quot; states, but don&apos;t actually throw exceptions.  
&gt; 
&gt; Just something to think about for the future ...

Yeah, there is some room for improvement in error reporting. I was also thinking about highlighting broken links in html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316910</commentid>
    <comment_count>7</comment_count>
      <attachid>75380</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-03 11:12:22 -0800</bug_when>
    <thetext>Comment on attachment 75380
Patch

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

&gt;&gt; WebCore/bindings/js/ScriptCallStackFactory.cpp:57
&gt;&gt; +    ExecState* exec = JSMainThreadExecState::currentState();
&gt; 
&gt; I think you can remove the comment. The implementation looks good to me.

I&apos;d like to remove the commented piece but this code doesn&apos;t capture current stack trace, exec will always point at the bottom call frame of the current call stack and I don&apos;t know another way to get current JS call stack in JSC. I&apos;m removing this code and leaving this method always returning 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316912</commentid>
    <comment_count>8</comment_count>
      <attachid>75515</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-03 11:12:51 -0800</bug_when>
    <thetext>Created attachment 75515
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318100</commentid>
    <comment_count>9</comment_count>
      <attachid>75515</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-12-07 02:11:39 -0800</bug_when>
    <thetext>Comment on attachment 75515
Patch

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

A bunch of nits, no real suggestions. Switch in Switch worries me a lot.

&gt; WebCore/inspector/InspectorController.cpp:866
&gt; +        addConsoleMessage(new ConsoleMessage(OtherMessageSource, LogMessageType, ErrorMessageLevel, info.httpMethod, response.url().string(), response.httpStatusCode(), response.httpStatusText(), info.callStack));

Nit: this should probably be new message type.

&gt; WebCore/inspector/front-end/ConsoleView.js:260
&gt; +            var msgCopy = new WebInspector.ConsoleMessage(msg.source, msg.type, msg.level, msg.line, msg.url, count - prevRepeatCount, msg._messageText, msg._parameters, msg._stackTrace, msg._httpMethod, msg._httpStatusCode);

Should this be a ConsoleMessage ancestor?

&gt; WebCore/inspector/front-end/ConsoleView.js:692
&gt; +                    case WebInspector.ConsoleMessage.MessageType.Assert:

switch by type in switch by type clearly tells us that there is something wrong with the abstraction. We should either create hierarchy of messages (like ConsoleMessageWithStackInfo), or rely upon message types more extensively and introduce new ones.

&gt; WebCore/inspector/front-end/ConsoleView.js:704
&gt; +                        hideStackTrace = true;

I think there should be an explicit way of telling which messages have stack traces.

&gt; WebCore/inspector/front-end/inspector.js:1428
&gt; +        payload.httpMethod,

This will look quite strange in the protocol. It sounds like we should distinguish console messages from error messages. It sounds more like an error message bound to resource load rather than generic console message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318752</commentid>
    <comment_count>10</comment_count>
      <attachid>75897</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-08 06:40:32 -0800</bug_when>
    <thetext>Created attachment 75897
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318753</commentid>
    <comment_count>11</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-08 06:44:02 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 75515 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=75515&amp;action=review
&gt; 
&gt; A bunch of nits, no real suggestions. Switch in Switch worries me a lot.
&gt; 
&gt; &gt; WebCore/inspector/InspectorController.cpp:866
&gt; &gt; +        addConsoleMessage(new ConsoleMessage(OtherMessageSource, LogMessageType, ErrorMessageLevel, info.httpMethod, response.url().string(), response.httpStatusCode(), response.httpStatusText(), info.callStack));
&gt; 
&gt; Nit: this should probably be new message type.
&gt; 
Done. Added new message type for network errors.

&gt; &gt; WebCore/inspector/front-end/ConsoleView.js:260
&gt; &gt; +            var msgCopy = new WebInspector.ConsoleMessage(msg.source, msg.type, msg.level, msg.line, msg.url, count - prevRepeatCount, msg._messageText, msg._parameters, msg._stackTrace, msg._httpMethod, msg._httpStatusCode);
&gt; 
&gt; Should this be a ConsoleMessage ancestor?
&gt;
Why? The clone just differs in repeat count.


&gt; &gt; WebCore/inspector/front-end/ConsoleView.js:692
&gt; &gt; +                    case WebInspector.ConsoleMessage.MessageType.Assert:
&gt; 
&gt; switch by type in switch by type clearly tells us that there is something wrong with the abstraction. We should either create hierarchy of messages (like ConsoleMessageWithStackInfo), or rely upon message types more extensively and introduce new ones.
&gt; 
&gt; &gt; WebCore/inspector/front-end/ConsoleView.js:704
&gt; &gt; +                        hideStackTrace = true;
&gt; 
&gt; I think there should be an explicit way of telling which messages have stack traces.
&gt; 
Done.


&gt; &gt; WebCore/inspector/front-end/inspector.js:1428
&gt; &gt; +        payload.httpMethod,
&gt; 
&gt; This will look quite strange in the protocol. It sounds like we should distinguish console messages from error messages. It sounds more like an error message bound to resource load rather than generic console message.

Only network error messages will have this data in the protocol.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318754</commentid>
    <comment_count>12</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-08 06:47:52 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Concur on separating the grouplevel and other unrelated console-y stuff to a separate patch.
&gt; 
Fixed this separately(https://bugs.webkit.org/show_bug.cgi?id=50672)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318760</commentid>
    <comment_count>13</comment_count>
      <attachid>75897</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-12-08 07:03:49 -0800</bug_when>
    <thetext>Comment on attachment 75897
Patch

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

&gt; WebCore/inspector/front-end/inspector.js:1390
&gt; +        payload.httpMethod,

I still don&apos;t understand how you document these from the protocol standpoint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319340</commentid>
    <comment_count>14</comment_count>
      <attachid>76027</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-09 02:15:09 -0800</bug_when>
    <thetext>Created attachment 76027
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319342</commentid>
    <comment_count>15</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-09 02:17:25 -0800</bug_when>
    <thetext>Changed implementation as it was agreed offline: ConsoleMessage now has request identifier which is used to lookup additional request details including call stack in the network panel. If there are no data for the request in the network panel we fall back to the default message formatting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319410</commentid>
    <comment_count>16</comment_count>
      <attachid>76027</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-12-09 05:18:33 -0800</bug_when>
    <thetext>Comment on attachment 76027
Patch

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

&gt; WebCore/inspector/front-end/ConsoleView.js:668
&gt; +                    stackTrace = resource.stackTrace;

In case of redirects, stackTrace will only be on the first item of the redirect chain. Get it from there or copy stack trace upon redirect resource clone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319420</commentid>
    <comment_count>17</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-09 05:36:28 -0800</bug_when>
    <thetext>Committed r73607: &lt;http://trac.webkit.org/changeset/73607&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319422</commentid>
    <comment_count>18</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-09 05:37:13 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 76027 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=76027&amp;action=review
&gt; 
&gt; &gt; WebCore/inspector/front-end/ConsoleView.js:668
&gt; &gt; +                    stackTrace = resource.stackTrace;
&gt; 
&gt; In case of redirects, stackTrace will only be on the first item of the redirect chain. Get it from there or copy stack trace upon redirect resource clone.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469490</commentid>
    <comment_count>19</comment_count>
      <attachid>76027</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-09-19 10:26:18 -0700</bug_when>
    <thetext>Comment on attachment 76027
Patch

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

&gt; WebCore/inspector/front-end/ConsoleView.js:716
&gt; +        if (this._stackTrace) {

You use &quot;this._stackTrace&quot;, but you should use &quot;stackTrace&quot; here.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75380</attachid>
            <date>2010-12-02 08:43:00 -0800</date>
            <delta_ts>2010-12-03 11:12:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50390-20101202194256.patch</filename>
            <type>text/plain</type>
            <size>51483</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4ZTI2NWZkYjUwZGUxZjBiNTJjMzZkYzIwMjE1NTFmMTZmMWEwZDg5Li42ZTc2MGZj
Njg5M2U1NGZkYzNhZWQyYTY3NTQ4N2RhNDhlNmI3MDlmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMTItMDIgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogQ29uc29sZSByZWNvcmRzIGZvciBmYWlsZWQgWEhScyBzaG91bGQgY29udGFpbiBjYWxsIHN0
YWNrIGFuZCByZXF1ZXN0IG1ldGhvZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTAzOTAKKworICAgICAgICBUaGUgZXhwZWN0YXRpb25zIG5lZWRlZCB1
cGRhdGUgZWl0aGVyIGR1ZSB0byBsb2cgZm9ybWF0IGNoYW5nZXMgb3IgZHVlIHRvIHJlbW92YWwg
b2Ygc29tZSB1bnVzZWQgc3R5bGUgY2xhc3Nlcy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5z
cGVjdG9yLWVuYWJsZWQvY29uc29sZS1sb2ctYmVmb3JlLWZyYW1lLW5hdmlnYXRpb24tZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtcmVzb3VyY2Ut
ZXJyb3JzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9jb25z
b2xlLXhoci1sb2dnaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29s
ZS10ZXN0cy1leHBlY3RlZC50eHQ6CisKIDIwMTAtMTItMDEgIERhbmllbCBCYXRlcyAgPGRiYXRl
c0ByaW0uY29tPgogCiAgICAgICAgIFJlbW92ZSBmaWxlIExheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9Ta2lwcGVkLnJlaiB3aGljaCB3YXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yLWVuYWJsZWQvY29uc29sZS1sb2ctYmVmb3JlLWZyYW1lLW5hdmlnYXRpb24t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9j
b25zb2xlLWxvZy1iZWZvcmUtZnJhbWUtbmF2aWdhdGlvbi1leHBlY3RlZC50eHQKaW5kZXggZDA1
MDVlOGQ1NmEzZTkwYzA0MzU1NjM3NmFlMWFlMjIxM2VjYWVhZS4uMzFlNzg0MDYxYTk4ZmY1M2Zk
YWI2OTFiNmRmYzdhMzY4YzEyZjk1NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3ItZW5hYmxlZC9jb25zb2xlLWxvZy1iZWZvcmUtZnJhbWUtbmF2aWdhdGlvbi1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxl
ZC9jb25zb2xlLWxvZy1iZWZvcmUtZnJhbWUtbmF2aWdhdGlvbi1leHBlY3RlZC50eHQKQEAgLTQs
NyArNCw3IEBAIFRlc3RzIHRoYXQgV2ViIEluc3BlY3RvciB3b24ndCBjcmFzaCBpZiB0aGVyZSBh
cmUgbWVzc2FnZXMgd3JpdHRlbiB0byBjb25zb2xlIGZyCiAKIFJlY2VpdmVkIGNvbnNvbGUgbWVz
c2FnZXM6CiBNZXNzYWdlWzBdOgotVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9y
LWVuYWJsZWQvcmVzb3VyY2VzL2NvbnNvbGUtbG9nLWZyYW1lLWJlZm9yZS1uYXZpZ2F0aW9uLmh0
bWwKLU1lc3NhZ2U6IENvbnNvbGUgbWVzc2FnZSAoQykgJWQgd2l0aCBlbGVtZW50CitVUkw6IAor
TWVzc2FnZTogcmVzb3VyY2VzL2NvbnNvbGUtbG9nLWZyYW1lLWJlZm9yZS1uYXZpZ2F0aW9uLmh0
bWw6NUNvbnNvbGUgbWVzc2FnZSAoQykgJWQgd2l0aCBlbGVtZW50CiBURVNUIENPTVBMRVRFLgog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXJl
c291cmNlLWVycm9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9jb25zb2xlLXJlc291cmNlLWVycm9ycy1leHBlY3RlZC50eHQKaW5kZXggNTgwYWRlYTUx
NzZkNjQ2YjdlMzRkNzAzNDRiMTJhZGQ4MDI4NGQxMy4uY2FmMmUxN2VhNjk4ZWE4YjYwZmJmZmY5
NjgwZGJjNmY3NWQ0YjMxOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvY29uc29sZS1yZXNvdXJjZS1lcnJvcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtcmVzb3VyY2UtZXJyb3JzLWV4cGVjdGVk
LnR4dApAQCAtMSw3ICsxLDcgQEAKICBUZXN0cyB0aGF0IGVycm9ycyB0byBsb2FkIGEgcmVzb3Vy
Y2UgY2F1c2UgZXJyb3IgbWVzc2FnZXMgdG8gYmUgbG9nZ2VkIHRvIGNvbnNvbGUuCiAKLW1pc3Np
bmcuY3NzRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2U6IHRoZSBzZXJ2ZXIgcmVzcG9uZGVkIHdpdGgg
YSBzdGF0dXMgb2YgNDA0IChOb3QgRm91bmQpIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLW90aGVy
LXNvdXJjZSBjb25zb2xlLWVycm9yLWxldmVsCi1ub24tZXhpc3RlbnQtaWZyYW1lLmh0bWxGYWls
ZWQgdG8gbG9hZCByZXNvdXJjZTogdGhlIHNlcnZlciByZXNwb25kZWQgd2l0aCBhIHN0YXR1cyBv
ZiA0MDQgKE5vdCBGb3VuZCkgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtb3RoZXItc291cmNlIGNv
bnNvbGUtZXJyb3ItbGV2ZWwKLW5vbi1leGlzdGVudC1zY3JpcHQuanNGYWlsZWQgdG8gbG9hZCBy
ZXNvdXJjZTogdGhlIHNlcnZlciByZXNwb25kZWQgd2l0aCBhIHN0YXR1cyBvZiA0MDQgKE5vdCBG
b3VuZCkgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtb3RoZXItc291cmNlIGNvbnNvbGUtZXJyb3It
bGV2ZWwKLW5vbi1leGlzdGVudC14aHJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZTogdGhlIHNlcnZl
ciByZXNwb25kZWQgd2l0aCBhIHN0YXR1cyBvZiA0MDQgKE5vdCBGb3VuZCkgY29uc29sZS1tZXNz
YWdlIGNvbnNvbGUtb3RoZXItc291cmNlIGNvbnNvbGUtZXJyb3ItbGV2ZWwKK0dFVCBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25vbi1leGlzdGVudC1pZnJhbWUuaHRtbCA0MDQgKE5v
dCBGb3VuZCkgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtZXJyb3ItbGV2ZWwKK0dFVCBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25vbi1leGlzdGVudC1zY3JpcHQuanMgNDA0IChOb3Qg
Rm91bmQpIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWVycm9yLWxldmVsCitHRVQgaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2luc3BlY3Rvci9ub24tZXhpc3RlbnQteGhyIDQwNCAoTm90IEZvdW5kKSBj
b25zb2xlLW1lc3NhZ2UgY29uc29sZS1lcnJvci1sZXZlbAoraHR0cDovLzEyNy4wLjAuMTo4MDAw
L2luc3BlY3Rvci9taXNzaW5nLmNzcyA0MDQgKE5vdCBGb3VuZCkgY29uc29sZS1tZXNzYWdlIGNv
bnNvbGUtZXJyb3ItbGV2ZWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvY29uc29sZS14aHItbG9nZ2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXhoci1sb2dnaW5nLWV4cGVjdGVkLnR4dAppbmRl
eCBkNzAyZmNkNGM4Y2YyMWQ1MTBlZTQ1OGQ0NmEwOTE5MmFiNjg1MjdjLi5lMDdhNzIwOWMzZTg2
OGFiYzZjYWRiNTIxOGMxNzBhY2FiMTAyZTMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXhoci1sb2dnaW5nLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXhoci1sb2dnaW5nLWV4cGVj
dGVkLnR4dApAQCAtMTIsMTMgKzEyLDEzIEBAIGNvbnNvbGUteGhyLWxvZ2dpbmcuaHRtbDoxMWVu
YWJsZWQKIGNvbnNvbGUteGhyLWxvZ2dpbmcuaHRtbDo0MHNlbmRpbmcgYSBHRVQgcmVxdWVzdCB0
byByZXNvdXJjZXMveGhyLWV4aXN0cy5odG1sCiBYSFIgZmluaXNoZWQgbG9hZGluZzogImh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2VzL3hoci1leGlzdHMuaHRtbCIuCiBj
b25zb2xlLXhoci1sb2dnaW5nLmh0bWw6NDBzZW5kaW5nIGEgR0VUIHJlcXVlc3QgdG8gcmVzb3Vy
Y2VzL3hoci1kb2VzLW5vdC1leGlzdC5odG1sCi14aHItZG9lcy1ub3QtZXhpc3QuaHRtbEZhaWxl
ZCB0byBsb2FkIHJlc291cmNlOiB0aGUgc2VydmVyIHJlc3BvbmRlZCB3aXRoIGEgc3RhdHVzIG9m
IDQwNCAoTm90IEZvdW5kKQorR0VUIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvcmVz
b3VyY2VzL3hoci1kb2VzLW5vdC1leGlzdC5odG1sIDQwNCAoTm90IEZvdW5kKQogWEhSIGZpbmlz
aGVkIGxvYWRpbmc6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy94
aHItZG9lcy1ub3QtZXhpc3QuaHRtbCIuCiBjb25zb2xlLXhoci1sb2dnaW5nLmh0bWw6NDBzZW5k
aW5nIGEgUE9TVCByZXF1ZXN0IHRvIHJlc291cmNlcy9wb3N0LXRhcmdldC5jZ2kKIFhIUiBmaW5p
c2hlZCBsb2FkaW5nOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMv
cG9zdC10YXJnZXQuY2dpIi4KIGNvbnNvbGUteGhyLWxvZ2dpbmcuaHRtbDoyMWRpc2FibGVkCiBj
b25zb2xlLXhoci1sb2dnaW5nLmh0bWw6NDBzZW5kaW5nIGEgR0VUIHJlcXVlc3QgdG8gcmVzb3Vy
Y2VzL3hoci1leGlzdHMuaHRtbAogY29uc29sZS14aHItbG9nZ2luZy5odG1sOjQwc2VuZGluZyBh
IEdFVCByZXF1ZXN0IHRvIHJlc291cmNlcy94aHItZG9lcy1ub3QtZXhpc3QuaHRtbAoteGhyLWRv
ZXMtbm90LWV4aXN0Lmh0bWxGYWlsZWQgdG8gbG9hZCByZXNvdXJjZTogdGhlIHNlcnZlciByZXNw
b25kZWQgd2l0aCBhIHN0YXR1cyBvZiA0MDQgKE5vdCBGb3VuZCkKK0dFVCBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy94aHItZG9lcy1ub3QtZXhpc3QuaHRtbCA0MDQg
KE5vdCBGb3VuZCkKIGNvbnNvbGUteGhyLWxvZ2dpbmcuaHRtbDo0MHNlbmRpbmcgYSBQT1NUIHJl
cXVlc3QgdG8gcmVzb3VyY2VzL3Bvc3QtdGFyZ2V0LmNnaQogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvY29uc29sZS10ZXN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvY29uc29sZS10ZXN0cy1leHBlY3RlZC50eHQKaW5kZXggZDJmMDg3ZDE2MzVkNzFi
NTc4MmMxMjhlYzM2NDRiZGU4ZjZkMGFjZi4uZmE2ZWJmNDhkNWRiNjMzNjlmOTY1Zjk0ZjZkMzE4
YmExZmI3NWZkYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtdGVz
dHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3Rz
LWV4cGVjdGVkLnR4dApAQCAtMjEsMjYgKzIxLDI2IEBAIENPTlNPTEUgTUVTU0FHRTogbGluZSAz
MDogMSwyLDMKIENPTlNPTEUgTUVTU0FHRTogbGluZSAzMTogL3JlZ2V4cC4qLwogVGVzdHMgdGhh
dCBjb25zb2xlIGxvZ2dpbmcgZHVtcHMgcHJvcGVyIG1lc3NhZ2VzLgogCi1jb25zb2xlLXRlc3Rz
Lmh0bWw6OWxvZyBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1qcy1zb3VyY2UgY29uc29sZS1sb2ct
bGV2ZWwKLWNvbnNvbGUtdGVzdHMuaHRtbDoxMGRlYnVnIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xl
LWpzLXNvdXJjZSBjb25zb2xlLWxvZy1sZXZlbAotY29uc29sZS10ZXN0cy5odG1sOjExaW5mbyBj
b25zb2xlLW1lc3NhZ2UgY29uc29sZS1qcy1zb3VyY2UgY29uc29sZS1sb2ctbGV2ZWwKLWNvbnNv
bGUtdGVzdHMuaHRtbDoxMndhcm4gY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNv
bnNvbGUtd2FybmluZy1sZXZlbAotY29uc29sZS10ZXN0cy5odG1sOjEzZXJyb3IgY29uc29sZS1t
ZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUtZXJyb3ItbGV2ZWwKLTVjb25zb2xlLXRl
c3RzLmh0bWw6MTVyZXBlYXRlZCBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1qcy1zb3VyY2UgY29u
c29sZS1sb2ctbGV2ZWwgcmVwZWF0ZWQtbWVzc2FnZQotY29uc29sZS10ZXN0cy5odG1sOjE3Y291
bnQ6IDEgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVs
Ci1jb25zb2xlLXRlc3RzLmh0bWw6MTdjb3VudDogMiBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1q
cy1zb3VyY2UgY29uc29sZS1sb2ctbGV2ZWwKLWNvbnNvbGUtdGVzdHMuaHRtbDoxOGdyb3VwIGNv
bnNvbGUtbWVzc2FnZSBjb25zb2xlLWpzLXNvdXJjZSBjb25zb2xlLWxvZy1sZXZlbCBjb25zb2xl
LWdyb3VwLXRpdGxlCi0gY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUt
bG9nLWxldmVsCi1jb25zb2xlLXRlc3RzLmh0bWw6MjAxIDIgMyBjb25zb2xlLW1lc3NhZ2UgY29u
c29sZS1qcy1zb3VyY2UgY29uc29sZS1sb2ctbGV2ZWwKLWNvbnNvbGUtdGVzdHMuaHRtbDoyMWdy
b3VwQ29sbGFwc2VkIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWpzLXNvdXJjZSBjb25zb2xlLWxv
Zy1sZXZlbCBjb25zb2xlLWdyb3VwLXRpdGxlCi1jb25zb2xlLXRlc3RzLmh0bWw6MjJPYmplY3Qg
Y29uc29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVsCi1jb25z
b2xlLXRlc3RzLmh0bWw6MjM0MiBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1qcy1zb3VyY2UgY29u
c29sZS1sb2ctbGV2ZWwKLWNvbnNvbGUtdGVzdHMuaHRtbDoyNHRydWUgY29uc29sZS1tZXNzYWdl
IGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVsCi1jb25zb2xlLXRlc3RzLmh0bWw6
MjVudWxsIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWpzLXNvdXJjZSBjb25zb2xlLWxvZy1sZXZl
bAotY29uc29sZS10ZXN0cy5odG1sOjI2dW5kZWZpbmVkIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xl
LWpzLXNvdXJjZSBjb25zb2xlLWxvZy1sZXZlbAotY29uc29sZS10ZXN0cy5odG1sOjI3RG9jdW1l
bnQgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVsCi1j
b25zb2xlLXRlc3RzLmh0bWw6MjhmdW5jdGlvbiAoKSB7IH0gY29uc29sZS1tZXNzYWdlIGNvbnNv
bGUtanMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVsCi1jb25zb2xlLXRlc3RzLmh0bWw6MjlmdW5j
dGlvbiBmKCkgeyB9IGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWpzLXNvdXJjZSBjb25zb2xlLWxv
Zy1sZXZlbAotY29uc29sZS10ZXN0cy5odG1sOjMwWzEsIDIsIDNdIGNvbnNvbGUtbWVzc2FnZSBj
b25zb2xlLWpzLXNvdXJjZSBjb25zb2xlLWxvZy1sZXZlbAotY29uc29sZS10ZXN0cy5odG1sOjMx
L3JlZ2V4cC4qLyBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1qcy1zb3VyY2UgY29uc29sZS1sb2ct
bGV2ZWwKK2NvbnNvbGUtdGVzdHMuaHRtbDo5bG9nIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWxv
Zy1sZXZlbAorY29uc29sZS10ZXN0cy5odG1sOjEwZGVidWcgY29uc29sZS1tZXNzYWdlIGNvbnNv
bGUtbG9nLWxldmVsCitjb25zb2xlLXRlc3RzLmh0bWw6MTFpbmZvIGNvbnNvbGUtbWVzc2FnZSBj
b25zb2xlLWxvZy1sZXZlbAorY29uc29sZS10ZXN0cy5odG1sOjEyd2FybiBjb25zb2xlLW1lc3Nh
Z2UgY29uc29sZS13YXJuaW5nLWxldmVsCitjb25zb2xlLXRlc3RzLmh0bWw6MTNlcnJvciBjb25z
b2xlLW1lc3NhZ2UgY29uc29sZS1lcnJvci1sZXZlbAorNWNvbnNvbGUtdGVzdHMuaHRtbDoxNXJl
cGVhdGVkIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWxvZy1sZXZlbCByZXBlYXRlZC1tZXNzYWdl
Citjb25zb2xlLXRlc3RzLmh0bWw6MTdjb3VudDogMSBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1s
b2ctbGV2ZWwKK2NvbnNvbGUtdGVzdHMuaHRtbDoxN2NvdW50OiAyIGNvbnNvbGUtbWVzc2FnZSBj
b25zb2xlLWxvZy1sZXZlbAorY29uc29sZS10ZXN0cy5odG1sOjE4Z3JvdXAgY29uc29sZS1tZXNz
YWdlIGNvbnNvbGUtbG9nLWxldmVsIGNvbnNvbGUtZ3JvdXAtdGl0bGUKKyBjb25zb2xlLW1lc3Nh
Z2UgY29uc29sZS1sb2ctbGV2ZWwKK2NvbnNvbGUtdGVzdHMuaHRtbDoyMDEgMiAzIGNvbnNvbGUt
bWVzc2FnZSBjb25zb2xlLWxvZy1sZXZlbAorY29uc29sZS10ZXN0cy5odG1sOjIxZ3JvdXBDb2xs
YXBzZWQgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtbG9nLWxldmVsIGNvbnNvbGUtZ3JvdXAtdGl0
bGUKK2NvbnNvbGUtdGVzdHMuaHRtbDoyMk9iamVjdCBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1s
b2ctbGV2ZWwKK2NvbnNvbGUtdGVzdHMuaHRtbDoyMzQyIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xl
LWxvZy1sZXZlbAorY29uc29sZS10ZXN0cy5odG1sOjI0dHJ1ZSBjb25zb2xlLW1lc3NhZ2UgY29u
c29sZS1sb2ctbGV2ZWwKK2NvbnNvbGUtdGVzdHMuaHRtbDoyNW51bGwgY29uc29sZS1tZXNzYWdl
IGNvbnNvbGUtbG9nLWxldmVsCitjb25zb2xlLXRlc3RzLmh0bWw6MjZ1bmRlZmluZWQgY29uc29s
ZS1tZXNzYWdlIGNvbnNvbGUtbG9nLWxldmVsCitjb25zb2xlLXRlc3RzLmh0bWw6MjdEb2N1bWVu
dCBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1sb2ctbGV2ZWwKK2NvbnNvbGUtdGVzdHMuaHRtbDoy
OGZ1bmN0aW9uICgpIHsgfSBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1sb2ctbGV2ZWwKK2NvbnNv
bGUtdGVzdHMuaHRtbDoyOWZ1bmN0aW9uIGYoKSB7IH0gY29uc29sZS1tZXNzYWdlIGNvbnNvbGUt
bG9nLWxldmVsCitjb25zb2xlLXRlc3RzLmh0bWw6MzBbMSwgMiwgM10gY29uc29sZS1tZXNzYWdl
IGNvbnNvbGUtbG9nLWxldmVsCitjb25zb2xlLXRlc3RzLmh0bWw6MzEvcmVnZXhwLiovIGNvbnNv
bGUtbWVzc2FnZSBjb25zb2xlLWxvZy1sZXZlbAogCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDliZGRkZTU5ODkzNDE0MjBjNTQ2YjY5M2Rk
MGE2ZTVjZTMxYzEwMzkuLjI1NjlmY2EwZWJhOTJiMjVjYzJiODY2ZDEzM2NhMzkzZGVlMWY1MmMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjkgQEAKKzIwMTAtMTItMDIgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2ViIEluc3BlY3RvcjogQ29uc29sZSByZWNvcmRzIGZvciBmYWlsZWQgWEhScyBzaG91bGQg
Y29udGFpbiBjYWxsIHN0YWNrIGFuZCByZXF1ZXN0IG1ldGhvZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAzOTAKKworICAgICAgICBXaGVuIGluc3Bl
Y3RvciBmcm9udC1lbmQgaXMgb3BlbiB3ZSBjYXB0dXJlIGNhbGwgc3RhY2sgYW5kIEhUVFAgcmVx
dWVzdCBtZXRob2QgdG8gbGF0ZXIgcGFzcyBpdAorICAgICAgICBpbnRvIENvbnNvbGVNZXNzYWdl
IGNvbnN0cnVjdG9yIHNob3VsZCB0aGUgcmVxdWVzdCBmYWlsLiBUbyBzYXZlIHJlc291cmNlcyB3
ZSBkb24ndCBkbyB0aGlzCisgICAgICAgIHdoZW4gZnJvbnQtZW5kIGlzIGNsb3NlZC4KKworICAg
ICAgICAqIEVuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZVNjcmlwdENhbGxTdGFjayk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0
YWNrRmFjdG9yeS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3Rv
cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
c29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVN
ZXNzYWdlOjphZGRUb0Zyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdl
Ojppc0VxdWFsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xlYXJDb25zb2xlTWVzc2FnZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c3RhcnRHcm91cCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbmRHcm91cCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6IHJlbW92ZWQgbV9ncm91cExldmVs
IHNpbmNlIHdlIGRvbid0IG5lZWQgaXQsIGFsbCB0aGUgbmVzdGluZyBpcyBjb21wdXRlZCBvbgor
ICAgICAgICB0aGUgZnJvbnQtZW5kIHNpZGUgYW5kIGhhdmluZyBTdGFydC9FbmRHcm91cCBtZXNz
YWdlcyBpcyBlbm91Z2guCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6aWRlbnRp
ZmllckZvckluaXRpYWxSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291
cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6cmVxdWVzdEluZm9Gb3JSZXF1ZXN0SWQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9Db25zb2xlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xl
Vmlldy5jcmVhdGVGaWx0ZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xl
Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLmZpbHRl
cik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLmFmdGVyU2hv
dyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLmFkZE1lc3Nh
Z2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS51cGRhdGVN
ZXNzYWdlUmVwZWF0Q291bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnBy
b3RvdHlwZS5jbGVhck1lc3NhZ2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlTWVz
c2FnZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuY3JlYXRlVGV4dE1l
c3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZS5f
Zm9ybWF0TWVzc2FnZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJv
dG90eXBlLnRvTWVzc2FnZUVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlLnByb3RvdHlwZS5fcG9wdWxhdGVTdGFja1RyYWNlVHJlZUVsZW1lbnQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZS5fdXBkYXRlUmVwZWF0Q291
bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZS50b1N0
cmluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlLmlz
RXF1YWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlR3JvdXApOiBncm91cCBsZXZlbCBjb3VudGVycyB3
ZXJlIHJlbW92ZWQgZnJvbSB0aGUgZnJvbnQtZW5kIGFzIHdlbGwKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
LnByb3RvdHlwZS5fY2hlY2tXYXJuaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1NvdXJjZUZyYW1lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3Rv
dHlwZS5fYWRkTWVzc2FnZVRvU291cmNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5hZGRDb25zb2xlTWVzc2FnZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IubG9nLmxvZ01lc3NhZ2UpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLmxvZyk6CisKIDIwMTAtMTItMDEgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxl
LmNvbT4KIAogICAgICAgICBCdWlsZCBmaXg6IEFkZGVkIGEgZm9yd2FyZGluZyBoZWFkZXIuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1dl
YkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDJmODA0Y2RhNWM3
ZGM1YzIzZTVkNTUyYWIzNTg0NDk3ODFkZWI2M2MuLmZhMTUzM2YzMTc3Zjk2N2QzNDM5NWFkMzNi
NGM3Y2I0MWVhODE2MmYgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMzIKb2NtY2FIa05M
X3g8XyUyPm9KdElfMzw/YWszPHtIRDY7dmsraVIpfkJwaXI/NjBJUSUxSk9CVXkKCmRlbHRhIDI0
CmdjbWNhSWtOTCh0PF8lMj5qMCUkKjc0Iz1CXjMmT1RPUUM4VjBEejRPTmROITwKCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIGIvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAppbmRleCA5YTY0ZmZj
Y2I1ZDZhYmI3NmIwMDk4NzgzMmM5MTI0NzQ4MGVlN2FjLi41MGE0NmIxMDZjY2IzOWY2MzMyYWZi
M2NlMTVhYmEyNjQ1NmUyNWUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENhbGxTdGFja0ZhY3RvcnkuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2Fs
bFN0YWNrRmFjdG9yeS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJTY3JpcHRDYWxs
U3RhY2tGYWN0b3J5LmgiCiAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJK
U01haW5UaHJlYWRFeGVjU3RhdGUuaCIKICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKICNp
bmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIK
QEAgLTQ4LDYgKzQ5LDE3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFj
ayhzaXplX3QgbWF4U3RhY2tTaXplKQoreworLyoKKyAgICByZXR1cm4gMDsKKyAgICAqLworICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCk7
CisgICAgaWYgKCFleGVjKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gY3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrKGV4ZWMsIG1heFN0YWNrU2l6ZSk7Cit9CisKIFBhc3NSZWZQdHI8U2NyaXB0
Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHNp
emVfdCBtYXhTdGFja1NpemUpCiB7CiAgICAgVmVjdG9yPFNjcmlwdENhbGxGcmFtZT4gZnJhbWVz
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5
LmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaAppbmRleCA5
ZmJmYzc4MDZlMTk2NzliYTA2ZTMwODE4Y2JhNmMyNjE4NTA4OTgzLi42NzQ4M2QxNjE0ZTBhOGMx
NDg5NzM0Zjc3MWE4ODJmM2I0ZTViYmEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENhbGxTdGFja0ZhY3RvcnkuaApAQCAtNDIsNiArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBTY3JpcHRBcmd1bWVudHM7CiBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CiAKK1Bhc3NS
ZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxsU3RhY2soc2l6ZV90IG1heFN0
YWNrU2l6ZSk7CiBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0
YWNrKEpTQzo6RXhlY1N0YXRlKiwgc2l6ZV90IG1heFN0YWNrU2l6ZSk7CiBQYXNzUmVmUHRyPFNj
cmlwdEFyZ3VtZW50cz4gY3JlYXRlU2NyaXB0QXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlKiwgdW5z
aWduZWQgc2tpcEFyZ3VtZW50Q291bnQpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5LmNwcAppbmRleCA1ZDRlMTQ2MzA1MjU5ZGZjNjE0OTk5N2ZjZDU4
ZGQ1ZjFhZDdiN2M5Li4wNDc2ZjY0YjRlMmUzZDBlNzJhMDQ1YmU1MDJmZjFlODAzMDViYzUzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3Bw
CisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKQEAg
LTkwLDYgKzkwLDggQEAgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENh
bGxTdGFjayh2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQKIAogUGFzc1JlZlB0cjxTY3Jp
cHRDYWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhzaXplX3QgbWF4U3RhY2tTaXplKQog
eworICAgIGlmICghdjg6OkNvbnRleHQ6OkluQ29udGV4dCgpKQorICAgICAgICByZXR1cm4gMDsK
ICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBj
b250ZXh0ID0gdjg6OkNvbnRleHQ6OkdldEN1cnJlbnQoKTsKICAgICAvLyBUT0RPKHl1cnlzKTog
cmVtb3ZlPwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3Bw
IGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCmluZGV4IGYxNTM0ZGYwODEx
ZjkyMWQ3MDM1NWZiNjIxMDA4MzFkYWQzODE1NzcuLmIyN2Q1NmFiYzViM2Y0YjM5MDM3ZWFjNzE4
Nzc3MTc2ZGQ5YmQxMWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNz
YWdlLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKQEAgLTQz
LDM2ICs0Myw0NCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNvbnNvbGVNZXNzYWdlOjpD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHMsIE1lc3NhZ2VUeXBlIHQsIE1lc3NhZ2VMZXZl
bCBsLCBjb25zdCBTdHJpbmcmIG0sIHVuc2lnbmVkIGxpLCBjb25zdCBTdHJpbmcmIHUsIHVuc2ln
bmVkIGcpCitDb25zb2xlTWVzc2FnZTo6Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzLCBN
ZXNzYWdlVHlwZSB0LCBNZXNzYWdlTGV2ZWwgbCwgY29uc3QgU3RyaW5nJiBtLCB1bnNpZ25lZCBs
aSwgY29uc3QgU3RyaW5nJiB1KQogICAgIDogbV9zb3VyY2UocykKICAgICAsIG1fdHlwZSh0KQog
ICAgICwgbV9sZXZlbChsKQogICAgICwgbV9tZXNzYWdlKG0pCiAgICAgLCBtX2xpbmUobGkpCiAg
ICAgLCBtX3VybCh1KQotICAgICwgbV9ncm91cExldmVsKGcpCiAgICAgLCBtX3JlcGVhdENvdW50
KDEpCisgICAgLCBtX2h0dHBTdGF0dXNDb2RlKDApCiB7CiB9CiAKLUNvbnNvbGVNZXNzYWdlOjpD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHMsIE1lc3NhZ2VUeXBlIHQsIE1lc3NhZ2VMZXZl
bCBsLCBjb25zdCBTdHJpbmcmIG0sIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVu
dHMsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2ssIHVuc2lnbmVkIGcpCitD
b25zb2xlTWVzc2FnZTo6Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzLCBNZXNzYWdlVHlw
ZSB0LCBNZXNzYWdlTGV2ZWwgbCwgY29uc3QgU3RyaW5nJiBtLCBQYXNzUmVmUHRyPFNjcmlwdEFy
Z3VtZW50cz4gYXJndW1lbnRzLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNr
KQogICAgIDogbV9zb3VyY2UocykKICAgICAsIG1fdHlwZSh0KQogICAgICwgbV9sZXZlbChsKQog
ICAgICwgbV9tZXNzYWdlKG0pCiAgICAgLCBtX2FyZ3VtZW50cyhhcmd1bWVudHMpCiAgICAgLCBt
X2NhbGxTdGFjayhjYWxsU3RhY2spCi0gICAgLCBtX2dyb3VwTGV2ZWwoZykKKyAgICAsIG1fbGlu
ZSgwKQorICAgICwgbV91cmwoKQogICAgICwgbV9yZXBlYXRDb3VudCgxKQorICAgICwgbV9odHRw
U3RhdHVzQ29kZSgwKQogewotICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFzdENhbGxlciA9
IG1fY2FsbFN0YWNrLT5hdCgwKTsKLSAgICBtX2xpbmUgPSBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIo
KTsKLSAgICBtX3VybCA9IGxhc3RDYWxsZXIuc291cmNlVVJMKCk7Ci0KK30KIAotICAgIGJvb2wg
c3RvcmVUcmFjZSA9ICh0ID09IFRyYWNlTWVzc2FnZVR5cGUgfHwgdCA9PSBVbmNhdWdodEV4Y2Vw
dGlvbk1lc3NhZ2VUeXBlIHx8IHQgPT0gQXNzZXJ0TWVzc2FnZVR5cGUpOwotICAgIGlmICghc3Rv
cmVUcmFjZSkKLSAgICAgICAgbV9jYWxsU3RhY2suY2xlYXIoKTsKK0NvbnNvbGVNZXNzYWdlOjpD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHMsIE1lc3NhZ2VUeXBlIHQsIE1lc3NhZ2VMZXZl
bCBsLCBjb25zdCBTdHJpbmcmIGh0dHBNZXRob2QsIGNvbnN0IFN0cmluZyYgcmVzcG9uc2VVcmws
IGludCBodHRwU3RhdHVzQ29kZSwgY29uc3QgU3RyaW5nJiBodHRwU3RhdHVzVGV4dCwgUGFzc1Jl
ZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKKyAgICA6IG1fc291cmNlKHMpCisgICAg
LCBtX3R5cGUodCkKKyAgICAsIG1fbGV2ZWwobCkKKyAgICAsIG1fbWVzc2FnZShodHRwU3RhdHVz
VGV4dCkKKyAgICAsIG1fY2FsbFN0YWNrKGNhbGxTdGFjaykKKyAgICAsIG1fbGluZSgwKQorICAg
ICwgbV91cmwocmVzcG9uc2VVcmwpCisgICAgLCBtX3JlcGVhdENvdW50KDEpCisgICAgLCBtX2h0
dHBNZXRob2QoaHR0cE1ldGhvZCkKKyAgICAsIG1faHR0cFN0YXR1c0NvZGUoaHR0cFN0YXR1c0Nv
ZGUpCit7CiB9CiAKIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoSW5zcGVjdG9y
RnJvbnRlbmQqIGZyb250ZW5kLCBJbmplY3RlZFNjcmlwdEhvc3QqIGluamVjdGVkU2NyaXB0SG9z
dCkKQEAgLTgzLDkgKzkxLDEyIEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQo
SW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kLCBJbmplY3RlZFNjcmlwdEhvCiAgICAganNvbk9i
ai0+c2V0TnVtYmVyKCJsZXZlbCIsIHN0YXRpY19jYXN0PGludD4obV9sZXZlbCkpOwogICAgIGpz
b25PYmotPnNldE51bWJlcigibGluZSIsIHN0YXRpY19jYXN0PGludD4obV9saW5lKSk7CiAgICAg
anNvbk9iai0+c2V0U3RyaW5nKCJ1cmwiLCBtX3VybCk7Ci0gICAganNvbk9iai0+c2V0TnVtYmVy
KCJncm91cExldmVsIiwgc3RhdGljX2Nhc3Q8aW50PihtX2dyb3VwTGV2ZWwpKTsKICAgICBqc29u
T2JqLT5zZXROdW1iZXIoInJlcGVhdENvdW50Iiwgc3RhdGljX2Nhc3Q8aW50PihtX3JlcGVhdENv
dW50KSk7CiAgICAganNvbk9iai0+c2V0U3RyaW5nKCJtZXNzYWdlIiwgbV9tZXNzYWdlKTsKKyAg
ICBpZiAobV9odHRwU3RhdHVzQ29kZSkgeworICAgICAgICBqc29uT2JqLT5zZXROdW1iZXIoImh0
dHBTdGF0dXNDb2RlIiwgbV9odHRwU3RhdHVzQ29kZSk7CisgICAgICAgIGpzb25PYmotPnNldFN0
cmluZygiaHR0cE1ldGhvZCIsIG1faHR0cE1ldGhvZCk7CisgICAgfQogICAgIGlmIChtX2FyZ3Vt
ZW50cyAmJiBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpKSB7CiAgICAgICAgIEluamVjdGVk
U2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRIb3N0LT5pbmplY3RlZFNjcmlw
dEZvcihtX2FyZ3VtZW50cy0+Z2xvYmFsU3RhdGUoKSk7CiAgICAgICAgIGlmICghaW5qZWN0ZWRT
Y3JpcHQuaGFzTm9WYWx1ZSgpKSB7CkBAIC0xMzAsOCArMTQxLDcgQEAgYm9vbCBDb25zb2xlTWVz
c2FnZTo6aXNFcXVhbChDb25zb2xlTWVzc2FnZSogbXNnKSBjb25zdAogICAgICAgICAmJiBtc2ct
Pm1fbGV2ZWwgPT0gbV9sZXZlbAogICAgICAgICAmJiBtc2ctPm1fbWVzc2FnZSA9PSBtX21lc3Nh
Z2UKICAgICAgICAgJiYgbXNnLT5tX2xpbmUgPT0gbV9saW5lCi0gICAgICAgICYmIG1zZy0+bV91
cmwgPT0gbV91cmwKLSAgICAgICAgJiYgbXNnLT5tX2dyb3VwTGV2ZWwgPT0gbV9ncm91cExldmVs
OworICAgICAgICAmJiBtc2ctPm1fdXJsID09IG1fdXJsOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oIGIv
V2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAppbmRleCAzNTFjNTg0ZDRkMWQ4OTk1
Mzc2NTRmZjA0ZTBjN2NhMTIyNWE4NjRlLi43OTBkMmQxY2UxYmIwOTI4MzgyZmE3ZmQ0ZDRiN2Y0
ZjUwNmJkZDMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5o
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKQEAgLTQ4LDggKzQ4LDkg
QEAgY2xhc3MgU2NyaXB0VmFsdWU7CiAKIGNsYXNzIENvbnNvbGVNZXNzYWdlIDogcHVibGljIE5v
bmNvcHlhYmxlIHsKIHB1YmxpYzoKLSAgICBDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBN
ZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG0sIHVuc2lnbmVkIGxpLCBj
b25zdCBTdHJpbmcmIHUsIHVuc2lnbmVkIGcpOwotICAgIENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbSwgUGFzc1Jl
ZlB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4sIHVuc2ln
bmVkIGcpOworICAgIENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBN
ZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbSwgdW5zaWduZWQgbGksIGNvbnN0IFN0cmluZyYg
dSk7CisgICAgQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3Nh
Z2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4sIFBh
c3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPik7CisgICAgQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9k
LCBjb25zdCBTdHJpbmcmIHJlc3BvbnNlVXJsLCBpbnQgaHR0cFN0YXR1c0NvZGUsIGNvbnN0IFN0
cmluZyYgaHR0cFN0YXR1c1RleHQsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPik7CiAKICAg
ICB2b2lkIGFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqLCBJbmplY3RlZFNjcmlwdEhv
c3QqKTsKICAgICB2b2lkIHVwZGF0ZVJlcGVhdENvdW50SW5Db25zb2xlKEluc3BlY3RvckZyb250
ZW5kKiBmcm9udGVuZCk7CkBAIC02OCw4ICs2OSw5IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNj
cmlwdENhbGxTdGFjaz4gbV9jYWxsU3RhY2s7CiAgICAgdW5zaWduZWQgbV9saW5lOwogICAgIFN0
cmluZyBtX3VybDsKLSAgICB1bnNpZ25lZCBtX2dyb3VwTGV2ZWw7CiAgICAgdW5zaWduZWQgbV9y
ZXBlYXRDb3VudDsKKyAgICBTdHJpbmcgbV9odHRwTWV0aG9kOworICAgIGludCBtX2h0dHBTdGF0
dXNDb2RlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBlZDMxOWYzOWRjZjlmYzViODgxNDhmY2I3MGIy
NjA2MDBlYWU4ZTZmLi5iODFkZjhiOTVhYWQ3NDljYzg1N2Y5NjNlYjM5MTY3MzFmOTg3Njc2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMTQ3LDcgKzE0
Nyw2IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSogcGFn
ZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2Nzc1N0b3JlKG5ldyBJbnNwZWN0
b3JDU1NTdG9yZSh0aGlzKSkKICAgICAsIG1fbWFpblJlc291cmNlSWRlbnRpZmllcigwKQogICAg
ICwgbV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCgwKQotICAgICwgbV9ncm91cExldmVsKDAp
CiAgICAgLCBtX3ByZXZpb3VzTWVzc2FnZSgwKQogICAgICwgbV9zZXR0aW5nc0xvYWRlZChmYWxz
ZSkKICAgICAsIG1faW5zcGVjdG9yQmFja2VuZChJbnNwZWN0b3JCYWNrZW5kOjpjcmVhdGUodGhp
cykpCkBAIC0zMzUsNyArMzM0LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRNZXNz
YWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZQogICAgIGlmICgh
ZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhZGRDb25zb2xlTWVzc2FnZShuZXcg
Q29uc29sZU1lc3NhZ2Uoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgYXJndW1lbnRzLCBj
YWxsU3RhY2ssIG1fZ3JvdXBMZXZlbCkpOworICAgIGFkZENvbnNvbGVNZXNzYWdlKG5ldyBDb25z
b2xlTWVzc2FnZShzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBhcmd1bWVudHMsIGNhbGxT
dGFjaykpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZE1lc3NhZ2VUb0NvbnNv
bGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBs
ZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZUlEKQpAQCAtMzQzLDcgKzM0Miw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5
cGUKICAgICBpZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYWRkQ29uc29s
ZU1lc3NhZ2UobmV3IENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2Us
IGxpbmVOdW1iZXIsIHNvdXJjZUlELCBtX2dyb3VwTGV2ZWwpKTsKKyAgICBhZGRDb25zb2xlTWVz
c2FnZShuZXcgQ29uc29sZU1lc3NhZ2Uoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGlu
ZU51bWJlciwgc291cmNlSUQpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRD
b25zb2xlTWVzc2FnZShQYXNzT3duUHRyPENvbnNvbGVNZXNzYWdlPiBjb25zb2xlTWVzc2FnZSkK
QEAgLTM3Myw3ICszNzIsNiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNsZWFyQ29uc29s
ZU1lc3NhZ2VzKCkKICAgICBtX2NvbnNvbGVNZXNzYWdlcy5jbGVhcigpOwogICAgIG1fZXhwaXJl
ZENvbnNvbGVNZXNzYWdlQ291bnQgPSAwOwogICAgIG1fcHJldmlvdXNNZXNzYWdlID0gMDsKLSAg
ICBtX2dyb3VwTGV2ZWwgPSAwOwogICAgIG1faW5qZWN0ZWRTY3JpcHRIb3N0LT5yZWxlYXNlV3Jh
cHBlck9iamVjdEdyb3VwKDAgLyogcmVsZWFzZSB0aGUgZ3JvdXAgaW4gYWxsIHNjcmlwdHMgKi8s
ICJjb25zb2xlIik7CiAgICAgaWYgKG1fZG9tQWdlbnQpCiAgICAgICAgIG1fZG9tQWdlbnQtPnJl
bGVhc2VEYW5nbGluZ05vZGVzKCk7CkBAIC0zODMsMTkgKzM4MSwxMiBAQCB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmNsZWFyQ29uc29sZU1lc3NhZ2VzKCkKIAogdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpzdGFydEdyb3VwKFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMs
IFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2ssIGJvb2wgY29sbGFwc2VkKQog
ewotICAgICsrbV9ncm91cExldmVsOwotCi0gICAgYWRkQ29uc29sZU1lc3NhZ2UobmV3IENvbnNv
bGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgY29sbGFwc2VkID8gU3RhcnRHcm91cENvbGxhcHNl
ZE1lc3NhZ2VUeXBlIDogU3RhcnRHcm91cE1lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsICIi
LCBhcmd1bWVudHMsIGNhbGxTdGFjaywgbV9ncm91cExldmVsKSk7CisgICAgYWRkQ29uc29sZU1l
c3NhZ2UobmV3IENvbnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgY29sbGFwc2VkID8gU3Rh
cnRHcm91cENvbGxhcHNlZE1lc3NhZ2VUeXBlIDogU3RhcnRHcm91cE1lc3NhZ2VUeXBlLCBMb2dN
ZXNzYWdlTGV2ZWwsICIiLCBhcmd1bWVudHMsIGNhbGxTdGFjaykpOwogfQogCiB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmVuZEdyb3VwKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCB1bnNpZ25lZCBs
aW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKLSAgICBpZiAoIW1fZ3JvdXBM
ZXZlbCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLS1tX2dyb3VwTGV2ZWw7Ci0KLSAgICBhZGRD
b25zb2xlTWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBFbmRHcm91cE1lc3NhZ2VU
eXBlLCBMb2dNZXNzYWdlTGV2ZWwsIFN0cmluZygpLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwsIG1f
Z3JvdXBMZXZlbCkpOworICAgIGFkZENvbnNvbGVNZXNzYWdlKG5ldyBDb25zb2xlTWVzc2FnZShz
b3VyY2UsIEVuZEdyb3VwTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgU3RyaW5nKCksIGxp
bmVOdW1iZXIsIHNvdXJjZVVSTCkpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Om1h
cmtUaW1lbGluZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCkBAIC04NzIsOCArODYzLDEwIEBAIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgRG9jdW1lbnRMCiAgICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+ZGlkUmVjZWl2
ZVJlc3BvbnNlKGlkZW50aWZpZXIsIGxvYWRlciwgcmVzcG9uc2UpOwogCiAgICAgaWYgKHJlc3Bv
bnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwKSB7Ci0gICAgICAgIFN0cmluZyBtZXNzYWdlID0g
bWFrZVN0cmluZygiRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2U6IHRoZSBzZXJ2ZXIgcmVzcG9uZGVk
IHdpdGggYSBzdGF0dXMgb2YgIiwgU3RyaW5nOjpudW1iZXIocmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKSksICIgKCIsIHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCksICcpJyk7Ci0gICAgICAgIGFk
ZE1lc3NhZ2VUb0NvbnNvbGUoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJy
b3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDAsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpKTsKKyAg
ICAgICAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6UmVxdWVzdEluZm8gaW5mbzsKKyAgICAgICAg
aWYgKG1fcmVzb3VyY2VBZ2VudCkKKyAgICAgICAgICAgIGluZm8gPSBtX3Jlc291cmNlQWdlbnQt
PnJlcXVlc3RJbmZvRm9yUmVxdWVzdElkKGlkZW50aWZpZXIpOworICAgICAgICBhZGRDb25zb2xl
TWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdl
VHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGluZm8uaHR0cE1ldGhvZCwgcmVzcG9uc2UudXJsKCku
c3RyaW5nKCksIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlc3BvbnNlLmh0dHBTdGF0dXNU
ZXh0KCksIGluZm8uY2FsbFN0YWNrKSk7CiAgICAgfQogfQogCkBAIC05MDcsOSArOTAwLDkgQEAg
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmMKICAgICAgICAgbV90aW1lbGluZUFnZW50LT5kaWRGaW5p
c2hMb2FkaW5nUmVzb3VyY2UoaWRlbnRpZmllciwgdHJ1ZSwgMCk7CiAKICAgICBTdHJpbmcgbWVz
c2FnZSA9ICJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZSI7Ci0gICAgICAgIGlmICghZXJyb3IubG9j
YWxpemVkRGVzY3JpcHRpb24oKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtZXNzYWdlICs9ICI6
ICIgKyBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpOwotICAgICAgICBhZGRNZXNzYWdlVG9D
b25zb2xlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxl
dmVsLCBtZXNzYWdlLCAwLCBlcnJvci5mYWlsaW5nVVJMKCkpOworICAgIGlmICghZXJyb3IubG9j
YWxpemVkRGVzY3JpcHRpb24oKS5pc0VtcHR5KCkpCisgICAgICAgIG1lc3NhZ2UgKz0gIjogIiAr
IGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCk7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZShP
dGhlck1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVz
c2FnZSwgMCwgZXJyb3IuZmFpbGluZ1VSTCgpKTsKIAogICAgIGlmIChtX3Jlc291cmNlQWdlbnQp
CiAgICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+ZGlkRmFpbExvYWRpbmcoaWRlbnRpZmllciwgZXJy
b3IpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDViNDA3ZTAw
NzExMzAxNWNmOGUyNWJmY2VmODI5YjMyNzdjYjZmZGMuLmFjODFmN2MwYWNjMTRmNDlkMTI3NzRm
YjZlNTRlN2Y5ZDU4OTM2NzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmgKQEAgLTM3Miw3ICszNzIsNiBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgU3RyaW5nIG1fc2hv
d0FmdGVyVmlzaWJsZTsKICAgICBSZWZQdHI8Tm9kZT4gbV9oaWdobGlnaHRlZE5vZGU7Ci0gICAg
dW5zaWduZWQgbV9ncm91cExldmVsOwogICAgIENvbnNvbGVNZXNzYWdlKiBtX3ByZXZpb3VzTWVz
c2FnZTsKICAgICBib29sIG1fc2V0dGluZ3NMb2FkZWQ7CiAgICAgUmVmUHRyPEluc3BlY3RvckJh
Y2tlbmQ+IG1faW5zcGVjdG9yQmFja2VuZDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggOWRhYjI0YTEzODU1NTY4YzRjMThiMjNjNmU1ZWM1ZDU4
NTI2OTc3NS4uMTU3MDA2YjNkZGJkMDZmZjM2NDkzNWVmOTI0ZDQ1Y2Q2OGQ3Nzk4ZCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTUyLDYgKzUy
LDggQEAKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlNjcmlwdENh
bGxTdGFjay5oIgorI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIKICNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJX
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmgiCkBAIC0yODYsMTEgKzI4OCwxOCBAQCB2b2lkIElu
c3BlY3RvclJlc291cmNlQWdlbnQ6OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGxvYWRlck9i
amVjdCA9IGJ1aWxkT2JqZWN0Rm9yRG9jdW1lbnRMb2FkZXIobG9hZGVyKTsKICAgICBtX2Zyb250
ZW5kLT5pZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QoaWRlbnRpZmllciwgdXJsLnN0cmluZygp
LCBsb2FkZXJPYmplY3QpOworCisgICAgUmVxdWVzdEluZm8gaW5mbyA9IHtjcmVhdGVTY3JpcHRD
YWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlKSwgU3Ry
aW5nKCl9OworICAgIG1fcmVxdWVzdElkVG9SZXF1ZXN0SW5mby5zZXQoaWRlbnRpZmllciwgaW5m
byk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIG1fZnJvbnRlbmQtPndp
bGxTZW5kUmVxdWVzdChpZGVudGlmaWVyLCBjdXJyZW50VGltZSgpLCBidWlsZE9iamVjdEZvclJl
c291cmNlUmVxdWVzdChyZXF1ZXN0KSwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJl
ZGlyZWN0UmVzcG9uc2UpKTsKKworICAgIFJlcXVlc3RJZFRvUmVxdWVzdEluZm86Oml0ZXJhdG9y
IGl0ID0gbV9yZXF1ZXN0SWRUb1JlcXVlc3RJbmZvLmZpbmQoaWRlbnRpZmllcik7CisgICAgQVNT
RVJUKGl0ICE9IG1fcmVxdWVzdElkVG9SZXF1ZXN0SW5mby5lbmQoKSk7CisgICAgaXQtPnNlY29u
ZC5odHRwTWV0aG9kID0gcmVxdWVzdC5odHRwTWV0aG9kKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6bWFya1Jlc291cmNlQXNDYWNoZWQodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyKQpAQCAtMzMyLDYgKzM0MSw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlk
RmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmCiAgICAgICAg
IGZpbmlzaFRpbWUgPSBjdXJyZW50VGltZSgpOwogCiAgICAgbV9mcm9udGVuZC0+ZGlkRmluaXNo
TG9hZGluZyhpZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKKyAgICBtX3JlcXVlc3RJZFRvUmVxdWVz
dEluZm8ucmVtb3ZlKGlkZW50aWZpZXIpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OmRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCkBAIC0zODQsNiArMzk0LDggQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckZyYW1lVHJlZShGcmFtZSogZnJhbWUsIGJvb2wg
ZHUKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ29tbWl0TG9hZChEb2N1bWVudExv
YWRlciogbG9hZGVyKQogewogICAgIG1fZnJvbnRlbmQtPmRpZENvbW1pdExvYWRGb3JGcmFtZShi
dWlsZE9iamVjdEZvckZyYW1lKGxvYWRlci0+ZnJhbWUoKSksIGJ1aWxkT2JqZWN0Rm9yRG9jdW1l
bnRMb2FkZXIobG9hZGVyKSk7CisgICAgaWYgKGxvYWRlci0+ZnJhbWUoKSA9PSBtX3BhZ2UtPm1h
aW5GcmFtZSgpKQorICAgICAgICBtX3JlcXVlc3RJZFRvUmVxdWVzdEluZm8uY2xlYXIoKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpmcmFtZURldGFjaGVkRnJvbVBhcmVudChG
cmFtZSogZnJhbWUpCkBAIC00NTEsNiArNDYzLDExIEBAIEZyYW1lKiBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpmcmFtZUZvcklkKHVuc2lnbmVkIGxvbmcgZnJhbWVJZCkKICAgICByZXR1cm4gMDsK
IH0KIAorSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6UmVxdWVzdEluZm8gSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6cmVxdWVzdEluZm9Gb3JSZXF1ZXN0SWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KSBjb25zdAoreworICAgIHJldHVybiBtX3JlcXVlc3RJZFRvUmVxdWVzdEluZm8uZ2V0KGlkZW50
aWZpZXIpOworfQorCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmNhY2hlZFJlc291cmNl
cyhSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb2JqZWN0KQogewogICAgICpvYmplY3QgPSBidWls
ZE9iamVjdEZvckZyYW1lVHJlZShtX3BhZ2UtPm1haW5GcmFtZSgpLCB0cnVlKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCAxZTc3ZDU4Yzg1MzViZDdl
YTY2MzhkNjY0NjRkMzZkNjlmODVlNTE1Li5iYzcyNGY1NWU3MzlkYTlhYTY0MDJiYmZlZDQ2ZmIz
MmEzYTgzNjhhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5o
CkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNTYsNiArNTcsNyBAQCBjbGFzcyBQYWdlOwogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CitjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKICNp
ZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCkBAIC05OCw3ICsxMDAsMTMgQEAgcHVibGljOgogCiAgICAg
RnJhbWUqIGZyYW1lRm9ySWQodW5zaWduZWQgbG9uZyk7CiAKLSAgICAvLyBDYWxsZWQgZnJvbSBm
cm9udGVuZCAKKyAgICBzdHJ1Y3QgUmVxdWVzdEluZm8geworICAgICAgICBSZWZQdHI8U2NyaXB0
Q2FsbFN0YWNrPiBjYWxsU3RhY2s7CisgICAgICAgIFN0cmluZyBodHRwTWV0aG9kOworICAgIH07
CisgICAgUmVxdWVzdEluZm8gcmVxdWVzdEluZm9Gb3JSZXF1ZXN0SWQodW5zaWduZWQgbG9uZykg
Y29uc3Q7CisKKyAgICAvLyBDYWxsZWQgZnJvbSBmcm9udGVuZAogICAgIHZvaWQgY2FjaGVkUmVz
b3VyY2VzKFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+Kik7CiAgICAgdm9pZCByZXNvdXJjZUNvbnRl
bnQodW5zaWduZWQgbG9uZyBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBiYXNlNjRF
bmNvZGUsIFN0cmluZyogY29udGVudCk7CiAKQEAgLTEwNyw2ICsxMTUsOCBAQCBwcml2YXRlOgog
CiAgICAgUGFnZSogbV9wYWdlOwogICAgIEluc3BlY3RvckZyb250ZW5kKiBtX2Zyb250ZW5kOwor
ICAgIHR5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBSZXF1ZXN0SW5mbz4gUmVxdWVzdElk
VG9SZXF1ZXN0SW5mbzsKKyAgICBSZXF1ZXN0SWRUb1JlcXVlc3RJbmZvIG1fcmVxdWVzdElkVG9S
ZXF1ZXN0SW5mbzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwppbmRleCA3MzdiODRmYWQ3Yjg2NTQ1OTc2ODU3
ZWYyNDNiM2Q2NDQ4NWFjYTQyLi4xMDAyZTZhYTM0YWZhYjE5Y2RmOWVjN2E3NzA1ZDgyMzVjNTJl
OWZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcu
anMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCkBAIC01
MCw5ICs1MCw4IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldyA9IGZ1bmN0aW9uKGRyYXdlcikK
ICAgICB0aGlzLnByb21wdCA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dFByb21wdCh0aGlzLnByb21w
dEVsZW1lbnQsIHRoaXMuY29tcGxldGlvbnMuYmluZCh0aGlzKSwgRXhwcmVzc2lvblN0b3BDaGFy
YWN0ZXJzICsgIi4iKTsKICAgICB0aGlzLnByb21wdC5oaXN0b3J5ID0gV2ViSW5zcGVjdG9yLnNl
dHRpbmdzLmNvbnNvbGVIaXN0b3J5OwogCi0gICAgdGhpcy50b3BHcm91cCA9IG5ldyBXZWJJbnNw
ZWN0b3IuQ29uc29sZUdyb3VwKG51bGwsIDApOworICAgIHRoaXMudG9wR3JvdXAgPSBuZXcgV2Vi
SW5zcGVjdG9yLkNvbnNvbGVHcm91cChudWxsKTsKICAgICB0aGlzLm1lc3NhZ2VzRWxlbWVudC5p
bnNlcnRCZWZvcmUodGhpcy50b3BHcm91cC5lbGVtZW50LCB0aGlzLnByb21wdEVsZW1lbnQpOwot
ICAgIHRoaXMuZ3JvdXBMZXZlbCA9IDA7CiAgICAgdGhpcy5jdXJyZW50R3JvdXAgPSB0aGlzLnRv
cEdyb3VwOwogCiAgICAgdGhpcy50b2dnbGVDb25zb2xlQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNvbnNvbGUtc3RhdHVzLWJhci1pdGVtIik7CkBAIC03Miw3ICs3MSw3IEBAIFdl
Ykluc3BlY3Rvci5Db25zb2xlVmlldyA9IGZ1bmN0aW9uKGRyYXdlcikKICAgICBmdW5jdGlvbiBj
cmVhdGVGaWx0ZXJFbGVtZW50KGNhdGVnb3J5KSB7CiAgICAgICAgIHZhciBjYXRlZ29yeUVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOwogICAgICAgICBjYXRlZ29yeUVsZW1l
bnQuY2F0ZWdvcnkgPSBjYXRlZ29yeTsKLSAgICAgICAgY2F0ZWdvcnlFbGVtZW50LmFkZFN0eWxl
Q2xhc3MoY2F0ZWdvcnlFbGVtZW50LmNhdGVnb3J5KTsgICAgICAgICAgICAKKyAgICAgICAgY2F0
ZWdvcnlFbGVtZW50LmFkZFN0eWxlQ2xhc3MoY2F0ZWdvcnlFbGVtZW50LmNhdGVnb3J5KTsKICAg
ICAgICAgY2F0ZWdvcnlFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdXBkYXRlRmls
dGVySGFuZGxlciwgZmFsc2UpOwogCiAgICAgICAgIHZhciBsYWJlbCA9IGNhdGVnb3J5LnRvU3Ry
aW5nKCk7CkBAIC04MSw3ICs4MCw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldyA9IGZ1bmN0
aW9uKGRyYXdlcikKICAgICAgICAgdGhpcy5maWx0ZXJCYXJFbGVtZW50LmFwcGVuZENoaWxkKGNh
dGVnb3J5RWxlbWVudCk7CiAgICAgICAgIHJldHVybiBjYXRlZ29yeUVsZW1lbnQ7CiAgICAgfQot
ICAgIAorCiAgICAgdGhpcy5hbGxFbGVtZW50ID0gY3JlYXRlRmlsdGVyRWxlbWVudC5jYWxsKHRo
aXMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWxsIikpOwogICAgIGNyZWF0ZURpdmlkZXJFbGVt
ZW50LmNhbGwodGhpcyk7CiAgICAgdGhpcy5lcnJvckVsZW1lbnQgPSBjcmVhdGVGaWx0ZXJFbGVt
ZW50LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFcnJvcnMiKSk7CkBAIC05Miw3
ICs5MSw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldyA9IGZ1bmN0aW9uKGRyYXdlcikKICAg
ICB0aGlzLl9yZWdpc3RlclNob3J0Y3V0cygpOwogCiAgICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9oYW5kbGVDb250ZXh0TWVudUV2
ZW50LmJpbmQodGhpcyksIHRydWUpOwotICAgIAorCiAgICAgdGhpcy5fY3VzdG9tRm9ybWF0dGVy
cyA9IHsKICAgICAgICAgIm9iamVjdCI6IHRoaXMuX2Zvcm1hdG9iamVjdCwKICAgICAgICAgImFy
cmF5IjogIHRoaXMuX2Zvcm1hdGFycmF5LApAQCAtMTEzLDcgKzExMiw3IEBAIFdlYkluc3BlY3Rv
ci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5maWx0ZXIoZS50YXJn
ZXQsIHNlbGVjdE11bHRpcGxlKTsKICAgICB9LAotICAgIAorCiAgICAgZmlsdGVyOiBmdW5jdGlv
bih0YXJnZXQsIHNlbGVjdE11bHRpcGxlKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gdW5zZWxl
Y3RBbGwoKQpAQCAtMTIyLDEzICsxMjEsMTMgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuZXJyb3JFbGVtZW50LnJlbW92ZVN0eWxlQ2xh
c3MoInNlbGVjdGVkIik7CiAgICAgICAgICAgICB0aGlzLndhcm5pbmdFbGVtZW50LnJlbW92ZVN0
eWxlQ2xhc3MoInNlbGVjdGVkIik7CiAgICAgICAgICAgICB0aGlzLmxvZ0VsZW1lbnQucmVtb3Zl
U3R5bGVDbGFzcygic2VsZWN0ZWQiKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICB0aGlz
Lm1lc3NhZ2VzRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJmaWx0ZXItYWxsIik7CiAgICAgICAg
ICAgICB0aGlzLm1lc3NhZ2VzRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJmaWx0ZXItZXJyb3Jz
Iik7CiAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJm
aWx0ZXItd2FybmluZ3MiKTsKICAgICAgICAgICAgIHRoaXMubWVzc2FnZXNFbGVtZW50LnJlbW92
ZVN0eWxlQ2xhc3MoImZpbHRlci1sb2dzIik7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAg
ICAgdmFyIHRhcmdldEZpbHRlckNsYXNzID0gImZpbHRlci0iICsgdGFyZ2V0LmNhdGVnb3J5LnRv
TG93ZXJDYXNlKCk7CiAKICAgICAgICAgaWYgKHRhcmdldC5jYXRlZ29yeSA9PSAiQWxsIikgewpA
QCAtMTQ1LDE4ICsxNDQsMTggQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNz
KCJmaWx0ZXItYWxsIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCisKICAg
ICAgICAgaWYgKCFzZWxlY3RNdWx0aXBsZSkgewogICAgICAgICAgICAgLy8gSWYgbXVsdGlwbGUg
c2VsZWN0aW9uIGlzIG9mZiwgd2Ugd2FudCB0byB1bnNlbGVjdCBldmVyeXRoaW5nIGVsc2UKICAg
ICAgICAgICAgIC8vIGFuZCBqdXN0IHNlbGVjdCBvdXJzZWx2ZXMuCiAgICAgICAgICAgICB1bnNl
bGVjdEFsbC5jYWxsKHRoaXMpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIHRhcmdldC5h
ZGRTdHlsZUNsYXNzKCJzZWxlY3RlZCIpOwogICAgICAgICAgICAgdGhpcy5tZXNzYWdlc0VsZW1l
bnQuYWRkU3R5bGVDbGFzcyh0YXJnZXRGaWx0ZXJDbGFzcyk7Ci0gICAgICAgICAgICAKKwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGlmICh0YXJn
ZXQuaGFzU3R5bGVDbGFzcygic2VsZWN0ZWQiKSkgewogICAgICAgICAgICAgLy8gSWYgc2VsZWN0
TXVsdGlwbGUgaXMgdHVybmVkIG9uLCBhbmQgd2Ugd2VyZSBzZWxlY3RlZCwgd2UganVzdAogICAg
ICAgICAgICAgLy8gd2FudCB0byB1bnNlbGVjdCBvdXJzZWx2ZXMuCkBAIC0xNjksNyArMTY4LDcg
QEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRo
aXMubWVzc2FnZXNFbGVtZW50LmFkZFN0eWxlQ2xhc3ModGFyZ2V0RmlsdGVyQ2xhc3MpOwogICAg
ICAgICB9CiAgICAgfSwKLSAgICAKKwogICAgIF90b2dnbGVDb25zb2xlQnV0dG9uQ2xpY2tlZDog
ZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5kcmF3ZXIudmlzaWJsZVZpZXcgPSB0aGlz
OwpAQCAtMTkyLDcgKzE5MSw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUg
PSB7CiAKICAgICBhZnRlclNob3c6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIFdlYkluc3Bl
Y3Rvci5jdXJyZW50Rm9jdXNFbGVtZW50ID0gdGhpcy5wcm9tcHRFbGVtZW50OyAgCisgICAgICAg
IFdlYkluc3BlY3Rvci5jdXJyZW50Rm9jdXNFbGVtZW50ID0gdGhpcy5wcm9tcHRFbGVtZW50Owog
ICAgIH0sCiAKICAgICBoaWRlOiBmdW5jdGlvbigpCkBAIC0yMzAsMTcgKzIyOSwxMiBAQCBXZWJJ
bnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLm1lc3NhZ2Vz
LnB1c2gobXNnKTsKIAogICAgICAgICBpZiAobXNnLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db25z
b2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5FbmRHcm91cCkgewotICAgICAgICAgICAgaWYgKHRoaXMu
Z3JvdXBMZXZlbCA8IDEpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICB0
aGlzLmdyb3VwTGV2ZWwtLTsKLQotICAgICAgICAgICAgdGhpcy5jdXJyZW50R3JvdXAgPSB0aGlz
LmN1cnJlbnRHcm91cC5wYXJlbnRHcm91cDsKKyAgICAgICAgICAgIHZhciBwYXJlbnRHcm91cCA9
IHRoaXMuY3VycmVudEdyb3VwLnBhcmVudEdyb3VwCisgICAgICAgICAgICBpZiAocGFyZW50R3Jv
dXApCisgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50R3JvdXAgPSBwYXJlbnRHcm91cDsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChtc2cudHlwZSA9PT0gV2ViSW5zcGVjdG9y
LkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlN0YXJ0R3JvdXAgfHwgbXNnLnR5cGUgPT09IFdl
Ykluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5TdGFydEdyb3VwQ29sbGFwc2Vk
KSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncm91cExldmVsKys7Ci0KLSAgICAgICAgICAgICAg
ICB2YXIgZ3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cCh0aGlzLmN1cnJlbnRH
cm91cCwgdGhpcy5ncm91cExldmVsKTsKKyAgICAgICAgICAgICAgICB2YXIgZ3JvdXAgPSBuZXcg
V2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cCh0aGlzLmN1cnJlbnRHcm91cCk7CiAgICAgICAgICAg
ICAgICAgdGhpcy5jdXJyZW50R3JvdXAubWVzc2FnZXNFbGVtZW50LmFwcGVuZENoaWxkKGdyb3Vw
LmVsZW1lbnQpOwogICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEdyb3VwID0gZ3JvdXA7CiAg
ICAgICAgICAgICB9CkBAIC0yNTUsNyArMjQ5LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3
LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciBtc2cgPSB0aGlzLnByZXZpb3VzTWVz
c2FnZTsKICAgICAgICAgdmFyIHByZXZSZXBlYXRDb3VudCA9IG1zZy50b3RhbFJlcGVhdENvdW50
OwotICAgICAgICAKKwogICAgICAgICBpZiAoIXRoaXMuY29tbWFuZFNpbmNlUHJldmlvdXNNZXNz
YWdlKSB7CiAgICAgICAgICAgICBtc2cucmVwZWF0RGVsdGEgPSBjb3VudCAtIHByZXZSZXBlYXRD
b3VudDsKICAgICAgICAgICAgIG1zZy5yZXBlYXRDb3VudCA9IG1zZy5yZXBlYXRDb3VudCArIG1z
Zy5yZXBlYXREZWx0YTsKQEAgLTI2Myw3ICsyNTcsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgbXNnLl91cGRhdGVSZXBlYXRDb3VudCgpOwog
ICAgICAgICAgICAgdGhpcy5faW5jcmVtZW50RXJyb3JXYXJuaW5nQ291bnQobXNnKTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHZhciBtc2dDb3B5ID0gbmV3IFdlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZShtc2cuc291cmNlLCBtc2cudHlwZSwgbXNnLmxldmVsLCBtc2cubGluZSwg
bXNnLnVybCwgbXNnLmdyb3VwTGV2ZWwsIGNvdW50IC0gcHJldlJlcGVhdENvdW50LCBtc2cuX21l
c3NhZ2VUZXh0LCBtc2cuX3BhcmFtZXRlcnMsIG1zZy5fc3RhY2tUcmFjZSk7CisgICAgICAgICAg
ICB2YXIgbXNnQ29weSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UobXNnLnNvdXJj
ZSwgbXNnLnR5cGUsIG1zZy5sZXZlbCwgbXNnLmxpbmUsIG1zZy51cmwsIGNvdW50IC0gcHJldlJl
cGVhdENvdW50LCBtc2cuX21lc3NhZ2VUZXh0LCBtc2cuX3BhcmFtZXRlcnMsIG1zZy5fc3RhY2tU
cmFjZSwgbXNnLl9odHRwTWV0aG9kLCBtc2cuX2h0dHBTdGF0dXNDb2RlKTsKICAgICAgICAgICAg
IG1zZ0NvcHkudG90YWxSZXBlYXRDb3VudCA9IGNvdW50OwogICAgICAgICAgICAgbXNnQ29weS5f
Zm9ybWF0TWVzc2FnZSgpOwogICAgICAgICAgICAgdGhpcy5hZGRNZXNzYWdlKG1zZ0NvcHkpOwpA
QCAtMjkzLDcgKzI4Nyw2IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgdGhpcy5tZXNzYWdlcyA9IFtdOwogCi0gICAgICAgIHRoaXMuZ3JvdXBMZXZl
bCA9IDA7CiAgICAgICAgIHRoaXMuY3VycmVudEdyb3VwID0gdGhpcy50b3BHcm91cDsKICAgICAg
ICAgdGhpcy50b3BHcm91cC5tZXNzYWdlc0VsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKIApAQCAt
NjM0LDcwICs2MjcsMTE0IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7
CiAKIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLlZpZXcucHJvdG90eXBlOwogCi1XZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UgPSBm
dW5jdGlvbihzb3VyY2UsIHR5cGUsIGxldmVsLCBsaW5lLCB1cmwsIGdyb3VwTGV2ZWwsIHJlcGVh
dENvdW50LCBtZXNzYWdlLCBwYXJhbWV0ZXJzLCBzdGFja1RyYWNlKQorV2ViSW5zcGVjdG9yLkNv
bnNvbGVNZXNzYWdlID0gZnVuY3Rpb24oc291cmNlLCB0eXBlLCBsZXZlbCwgbGluZSwgdXJsLCBy
ZXBlYXRDb3VudCwgbWVzc2FnZSwgcGFyYW1ldGVycywgc3RhY2tUcmFjZSwgaHR0cE1ldGhvZCwg
aHR0cFN0YXR1c0NvZGUpCiB7CiAgICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7CiAgICAgdGhpcy50
eXBlID0gdHlwZTsKICAgICB0aGlzLmxldmVsID0gbGV2ZWw7CiAgICAgdGhpcy5saW5lID0gbGlu
ZTsKICAgICB0aGlzLnVybCA9IHVybDsKLSAgICB0aGlzLmdyb3VwTGV2ZWwgPSBncm91cExldmVs
OwogICAgIHRoaXMucmVwZWF0Q291bnQgPSByZXBlYXRDb3VudDsKICAgICB0aGlzLnJlcGVhdERl
bHRhID0gcmVwZWF0Q291bnQ7CiAgICAgdGhpcy50b3RhbFJlcGVhdENvdW50ID0gcmVwZWF0Q291
bnQ7CiAgICAgdGhpcy5fbWVzc2FnZVRleHQgPSBtZXNzYWdlOwogICAgIHRoaXMuX3BhcmFtZXRl
cnMgPSBwYXJhbWV0ZXJzOwogICAgIHRoaXMuX3N0YWNrVHJhY2UgPSBzdGFja1RyYWNlOworICAg
IHRoaXMuX2h0dHBNZXRob2QgPSBodHRwTWV0aG9kOworICAgIHRoaXMuX2h0dHBTdGF0dXNDb2Rl
ID0gaHR0cFN0YXR1c0NvZGU7CiAgICAgdGhpcy5fZm9ybWF0TWVzc2FnZSgpOwogfQogCiBXZWJJ
bnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuY3JlYXRlVGV4dE1lc3NhZ2UgPSBmdW5jdGlvbih0ZXh0
LCBsZXZlbCkKIHsKICAgICBsZXZlbCA9IGxldmVsIHx8IFdlYkluc3BlY3Rvci5Db25zb2xlTWVz
c2FnZS5NZXNzYWdlTGV2ZWwuTG9nOwotICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvbnNv
bGVNZXNzYWdlKFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLkpTLCBX
ZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuTG9nLCBsZXZlbCwgMCwgbnVs
bCwgbnVsbCwgMSwgbnVsbCwgW3RleHRdLCBudWxsKTsKKyAgICByZXR1cm4gbmV3IFdlYkluc3Bl
Y3Rvci5Db25zb2xlTWVzc2FnZShXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNv
dXJjZS5KUywgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkxvZywgbGV2
ZWwsIDAsIG51bGwsIDEsIG51bGwsIFt0ZXh0XSwgbnVsbCk7CiB9CiAKIFdlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZS5wcm90b3R5cGUgPSB7CiAgICAgX2Zvcm1hdE1lc3NhZ2U6IGZ1bmN0aW9u
KCkKICAgICB7CisgICAgICAgIGlmICh0aGlzLl9zdGFja1RyYWNlKSB7CisgICAgICAgICAgICB2
YXIgdG9wQ2FsbEZyYW1lID0gdGhpcy5fc3RhY2tUcmFjZVswXTsKKyAgICAgICAgICAgIHZhciBt
ZXNzYWdlVXJsID0gdG9wQ2FsbEZyYW1lLnNvdXJjZVVSTDsKKyAgICAgICAgICAgIHZhciBtZXNz
YWdlTGluZSA9IHRvcENhbGxGcmFtZS5saW5lTnVtYmVyOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgdmFyIG1lc3NhZ2VVcmwgPSB0aGlzLnVybDsKKyAgICAgICAgICAgIHZhciBtZXNz
YWdlTGluZSA9IHRoaXMubGluZTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBoaWRlU3RhY2tU
cmFjZSA9IGZhbHNlOworICAgICAgICB2YXIgbWVzc2FnZVRleHQ7CiAgICAgICAgIHN3aXRjaCAo
dGhpcy50eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2Fn
ZS5NZXNzYWdlVHlwZS5Bc3NlcnQ6CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25z
b2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5UcmFjZToKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlVuY2F1Z2h0RXhjZXB0aW9uOgotICAgICAg
ICAgICAgICAgIHZhciBvbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7Ci0gICAgICAg
ICAgICAgICAgb2wuY2xhc3NOYW1lID0gIm91dGxpbmUtZGlzY2xvc3VyZSI7Ci0gICAgICAgICAg
ICAgICAgdmFyIHRyZWVPdXRsaW5lID0gbmV3IFRyZWVPdXRsaW5lKG9sKTsKLSAgICAgICAgICAg
ICAgICB2YXIgbWVzc2FnZVRleHQ7Ci0gICAgICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0g
V2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkFzc2VydCkKLSAgICAgICAg
ICAgICAgICAgICAgbWVzc2FnZVRleHQgPSB0aGlzLl9mb3JtYXQodGhpcy5fcGFyYW1ldGVycyk7
Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29u
c29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuVHJhY2UpCi0gICAgICAgICAgICAgICAgICAgIG1lc3Nh
Z2VUZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoImNvbnNvbGUudHJhY2UoKSIpOwotICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVRleHQgPSBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSh0aGlzLl9tZXNzYWdlVGV4dCk7Ci0KLSAgICAgICAgICAgICAg
ICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAg
ICAgICAgIHRoaXMuX2FkZE1lc3NhZ2VIZWFkZXIoY29udGVudCwgbWVzc2FnZVRleHQpOwotICAg
ICAgICAgICAgICAgIHZhciByb290ID0gbmV3IFRyZWVFbGVtZW50KGNvbnRlbnQsIG51bGwsIHRy
dWUpOwotICAgICAgICAgICAgICAgIGNvbnRlbnQudHJlZUVsZW1lbnRGb3JUZXN0ID0gcm9vdDsK
LSAgICAgICAgICAgICAgICB0cmVlT3V0bGluZS5hcHBlbmRDaGlsZChyb290KTsKLSAgICAgICAg
ICAgICAgICBpZiAodGhpcy50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVz
c2FnZVR5cGUuVHJhY2UpCi0gICAgICAgICAgICAgICAgICAgIHJvb3QuZXhwYW5kKCk7Ci0KLSAg
ICAgICAgICAgICAgICB0aGlzLl9wb3B1bGF0ZVN0YWNrVHJhY2VUcmVlRWxlbWVudChyb290KTsK
LSAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZE1lc3NhZ2UgPSBvbDsKKyAgICAgICAgICAg
ICAgICBtZXNzYWdlVGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJjb25zb2xlLnRyYWNl
KCkiKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLk9iamVjdDoKLSAgICAgICAgICAgICAgICB2
YXIgb2JqID0gdGhpcy5fcGFyYW1ldGVycyA/IHRoaXMuX3BhcmFtZXRlcnNbMF0gOiB1bmRlZmlu
ZWQ7Ci0gICAgICAgICAgICAgICAgdGhpcy5mb3JtYXR0ZWRNZXNzYWdlID0gdGhpcy5fZm9ybWF0
KFsiJU8iLCBvYmpdKTsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNz
YWdlLk1lc3NhZ2VUeXBlLlVuY2F1Z2h0RXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIG1lc3Nh
Z2VUZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGhpcy5fbWVzc2FnZVRleHQpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29s
ZU1lc3NhZ2UuTWVzc2FnZVR5cGUuTG9nOgorICAgICAgICAgICAgICAgIGlmICh0aGlzLl9odHRw
U3RhdHVzQ29kZSkgeworICAgICAgICAgICAgICAgICAgICBtZXNzYWdlVGV4dCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2h0
dHBNZXRob2QpCisgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlVGV4dC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0aGlzLl9odHRwTWV0aG9kICsgIiAiKSk7CisgICAg
ICAgICAgICAgICAgICAgIG1lc3NhZ2VUZXh0LmFwcGVuZENoaWxkKFdlYkluc3BlY3Rvci5saW5r
aWZ5VVJMQXNOb2RlKHRoaXMudXJsKSk7CisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VUZXh0
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIgIiArIHRoaXMuX2h0dHBTdGF0
dXNDb2RlICsgIiAoIiArIHRoaXMuX21lc3NhZ2VUZXh0ICsgIikiKSk7CisgICAgICAgICAgICAg
ICAgICAgIGlmICghdGhpcy5fc3RhY2tUcmFjZSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gdGhpcy51cmwgaXMgdGhlIHVybCBvZiByZXF1ZXN0ZWQgcmVzb3VyY2UsIG5vdCB0aGUgY29k
ZSB3aGljaCBpc3N1ZWQgdGhlIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBh
dm9pZCB1c2luZyBpdCBhcyBtZXNzYWdlVXJsCisgICAgICAgICAgICAgICAgICAgICAgICBtZXNz
YWdlVXJsID0gdW5kZWZpbmVkOworICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZUxpbmUg
PSAwOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAg
dmFyIGFyZ3MgPSB0aGlzLl9wYXJhbWV0ZXJzIHx8IFt0aGlzLl9tZXNzYWdlVGV4dF07Ci0gICAg
ICAgICAgICAgICAgdGhpcy5mb3JtYXR0ZWRNZXNzYWdlID0gdGhpcy5fZm9ybWF0KGFyZ3MpOwor
ICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkFzc2VydDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBhcmdzID0gW1dlYkluc3BlY3Rvci5VSVN0cmluZygi
QXNzZXJ0aW9uIGZhaWxlZDoiKV07CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5f
cGFyYW1ldGVycykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzID0gYXJncy5jb25j
YXQodGhpcy5fcGFyYW1ldGVycyk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2Fn
ZVR5cGUuT2JqZWN0OgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9iaiA9IHRoaXMuX3Bh
cmFtZXRlcnMgPyB0aGlzLl9wYXJhbWV0ZXJzWzBdIDogdW5kZWZpbmVkOworICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIGFyZ3MgPSBbIiVPIiwgb2JqXTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGhpZGVTdGFja1RyYWNlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIGFyZ3MgPSB0aGlzLl9wYXJhbWV0ZXJzIHx8IFt0aGlzLl9tZXNzYWdlVGV4dF07CisgICAg
ICAgICAgICAgICAgICAgICAgICBoaWRlU3RhY2tUcmFjZSA9IHRydWU7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIG1lc3NhZ2VUZXh0ID0gdGhpcy5fZm9ybWF0KGFyZ3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgdGhpcy5fZm9ybWF0
dGVkTWVzc2FnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgdGhp
cy5fZm9ybWF0dGVkTWVzc2FnZS5jbGFzc05hbWUgPSAiY29uc29sZS1tZXNzYWdlLXRleHQgc291
cmNlLWNvZGUiOworCisgICAgICAgIGlmIChtZXNzYWdlVXJsICYmIG1lc3NhZ2VVcmwgIT09ICJ1
bmRlZmluZWQiKSB7CisgICAgICAgICAgICB2YXIgdXJsRWxlbWVudCA9IFdlYkluc3BlY3Rvci5s
aW5raWZ5UmVzb3VyY2VBc05vZGUobWVzc2FnZVVybCwgInNjcmlwdHMiLCBtZXNzYWdlTGluZSwg
ImNvbnNvbGUtbWVzc2FnZS11cmwiKTsKKyAgICAgICAgICAgIHRoaXMuX2Zvcm1hdHRlZE1lc3Nh
Z2UuYXBwZW5kQ2hpbGQodXJsRWxlbWVudCk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9m
b3JtYXR0ZWRNZXNzYWdlLmFwcGVuZENoaWxkKG1lc3NhZ2VUZXh0KTsKKworICAgICAgICBpZiAo
dGhpcy5fc3RhY2tUcmFjZSAmJiAhaGlkZVN0YWNrVHJhY2UpIHsKKyAgICAgICAgICAgIHZhciBv
bCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7CisgICAgICAgICAgICBvbC5jbGFzc05h
bWUgPSAib3V0bGluZS1kaXNjbG9zdXJlIjsKKyAgICAgICAgICAgIHZhciB0cmVlT3V0bGluZSA9
IG5ldyBUcmVlT3V0bGluZShvbCk7CisKKyAgICAgICAgICAgIHZhciBjb250ZW50ID0gdGhpcy5f
Zm9ybWF0dGVkTWVzc2FnZTsKKyAgICAgICAgICAgIHZhciByb290ID0gbmV3IFRyZWVFbGVtZW50
KGNvbnRlbnQsIG51bGwsIHRydWUpOworICAgICAgICAgICAgY29udGVudC50cmVlRWxlbWVudEZv
clRlc3QgPSByb290OworICAgICAgICAgICAgdHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQocm9vdCk7
CisgICAgICAgICAgICBpZiAodGhpcy50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2UuTWVzc2FnZVR5cGUuVHJhY2UpCisgICAgICAgICAgICAgICAgcm9vdC5leHBhbmQoKTsKKwor
ICAgICAgICAgICAgdGhpcy5fcG9wdWxhdGVTdGFja1RyYWNlVHJlZUVsZW1lbnQocm9vdCk7Cisg
ICAgICAgICAgICB0aGlzLl9mb3JtYXR0ZWRNZXNzYWdlID0gb2w7CisgICAgICAgIH0KKwogICAg
ICAgICAvLyBUaGlzIGlzIHVzZWQgZm9yIGlubGluZSBtZXNzYWdlIGJ1YmJsZXMgaW4gU291cmNl
RnJhbWVzLCBvciBvdGhlciBwbGFpbi10ZXh0IHJlcHJlc2VudGF0aW9ucy4KLSAgICAgICAgdGhp
cy5tZXNzYWdlID0gdGhpcy5mb3JtYXR0ZWRNZXNzYWdlLnRleHRDb250ZW50OworICAgICAgICB0
aGlzLm1lc3NhZ2UgPSB0aGlzLl9mb3JtYXR0ZWRNZXNzYWdlLnRleHRDb250ZW50OwogICAgIH0s
CiAKICAgICBpc0Vycm9yT3JXYXJuaW5nOiBmdW5jdGlvbigpCkBAIC03OTAsMjcgKzgyNyw2IEBA
IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhp
cy5fZWxlbWVudCA9IGVsZW1lbnQ7CiAKLSAgICAgICAgc3dpdGNoICh0aGlzLnNvdXJjZSkgewot
ICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJj
ZS5IVE1MOgotICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFzcygiY29uc29sZS1o
dG1sLXNvdXJjZSIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBX
ZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5XTUw6Ci0gICAgICAgICAg
ICAgICAgZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJjb25zb2xlLXdtbC1zb3VyY2UiKTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlLk1lc3NhZ2VTb3VyY2UuWE1MOgotICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkU3R5
bGVDbGFzcygiY29uc29sZS14bWwtc291cmNlIik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNl
LkpTOgotICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFzcygiY29uc29sZS1qcy1z
b3VyY2UiKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5z
cGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuQ1NTOgotICAgICAgICAgICAgICAg
IGVsZW1lbnQuYWRkU3R5bGVDbGFzcygiY29uc29sZS1jc3Mtc291cmNlIik7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2Fn
ZS5NZXNzYWdlU291cmNlLk90aGVyOgotICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkU3R5bGVD
bGFzcygiY29uc29sZS1vdGhlci1zb3VyY2UiKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotCiAgICAgICAgIHN3aXRjaCAodGhpcy5sZXZlbCkgewogICAgICAgICAgICAgY2Fz
ZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLlRpcDoKICAgICAgICAg
ICAgICAgICBlbGVtZW50LmFkZFN0eWxlQ2xhc3MoImNvbnNvbGUtdGlwLWxldmVsIik7CkBAIC04
MzgsMTIgKzg1NCw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh0
aGlzLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5UcmFj
ZSB8fAotICAgICAgICAgICAgdGhpcy50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2UuTWVzc2FnZVR5cGUuQXNzZXJ0IHx8Ci0gICAgICAgICAgICB0aGlzLnR5cGUgPT09IFdlYklu
c3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5VbmNhdWdodEV4Y2VwdGlvbikKLSAg
ICAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5mb3JtYXR0ZWRNZXNzYWdlKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5fYWRkTWVzc2FnZUhlYWRlcihlbGVtZW50LCB0
aGlzLmZvcm1hdHRlZE1lc3NhZ2UpOworICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKHRoaXMu
X2Zvcm1hdHRlZE1lc3NhZ2UpOwogCiAgICAgICAgIGlmICh0aGlzLnJlcGVhdENvdW50ID4gMSkK
ICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVJlcGVhdENvdW50KCk7CkBAIC04NjMsNyArODc0LDcg
QEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IG1lc3NhZ2VUZXh0RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShm
dW5jdGlvbk5hbWUpKTsKICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQobWVzc2FnZVRl
eHRFbGVtZW50KTsKIAotICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQgPSBXZWJJbnNwZWN0b3Iu
bGlua2lmeVJlc291cmNlQXNOb2RlKGZyYW1lLnNvdXJjZVVSTCwgInNjcmlwdHMiLCBmcmFtZS5s
aW5lTnVtYmVyLCAiY29uc29sZS1tZXNzYWdlLXVybCIpOyAKKyAgICAgICAgICAgIHZhciB1cmxF
bGVtZW50ID0gV2ViSW5zcGVjdG9yLmxpbmtpZnlSZXNvdXJjZUFzTm9kZShmcmFtZS5zb3VyY2VV
UkwsICJzY3JpcHRzIiwgZnJhbWUubGluZU51bWJlciwgImNvbnNvbGUtbWVzc2FnZS11cmwiKTsK
ICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQodXJsRWxlbWVudCk7CiAKICAgICAgICAg
ICAgIHZhciB0cmVlRWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudChjb250ZW50KTsKQEAgLTg3MSwy
NiArODgyLDExIEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIH0KICAgICB9LAogCi0gICAgX2FkZE1lc3NhZ2VIZWFkZXI6IGZ1bmN0aW9uKHBhcmVu
dEVsZW1lbnQsIGZvcm1hdHRlZE1lc3NhZ2UpCi0gICAgewotICAgICAgICBpZiAodGhpcy51cmwg
JiYgdGhpcy51cmwgIT09ICJ1bmRlZmluZWQiKSB7Ci0gICAgICAgICAgICB2YXIgdXJsRWxlbWVu
dCA9IFdlYkluc3BlY3Rvci5saW5raWZ5UmVzb3VyY2VBc05vZGUodGhpcy51cmwsICJzY3JpcHRz
IiwgdGhpcy5saW5lLCAiY29uc29sZS1tZXNzYWdlLXVybCIpOyAKLSAgICAgICAgICAgIHBhcmVu
dEVsZW1lbnQuYXBwZW5kQ2hpbGQodXJsRWxlbWVudCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2
YXIgbWVzc2FnZVRleHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwot
ICAgICAgICBtZXNzYWdlVGV4dEVsZW1lbnQuY2xhc3NOYW1lID0gImNvbnNvbGUtbWVzc2FnZS10
ZXh0IHNvdXJjZS1jb2RlIjsKLSAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gV2ViSW5zcGVjdG9y
LkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkFzc2VydCkKLSAgICAgICAgICAgIG1lc3NhZ2VU
ZXh0RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkFzc2VydGlvbiBmYWlsZWQ6ICIpKSk7Ci0gICAgICAgIG1lc3NhZ2VUZXh0
RWxlbWVudC5hcHBlbmRDaGlsZChmb3JtYXR0ZWRNZXNzYWdlKTsKLSAgICAgICAgcGFyZW50RWxl
bWVudC5hcHBlbmRDaGlsZChtZXNzYWdlVGV4dEVsZW1lbnQpOwotICAgIH0sCi0KICAgICBfdXBk
YXRlUmVwZWF0Q291bnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICBpZiAoIXRoaXMucmVwZWF0Q291
bnRFbGVtZW50KSB7CiAgICAgICAgICAgICB0aGlzLnJlcGVhdENvdW50RWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgICAgIHRoaXMucmVwZWF0Q291bnRF
bGVtZW50LmNsYXNzTmFtZSA9ICJidWJibGUiOwotICAgIAorCiAgICAgICAgICAgICB0aGlzLl9l
bGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLnJlcGVhdENvdW50RWxlbWVudCwgdGhpcy5fZWxlbWVu
dC5maXJzdENoaWxkKTsKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkU3R5bGVDbGFzcygi
cmVwZWF0ZWQtbWVzc2FnZSIpOwogICAgICAgICB9CkBAIC05NDcsNyArOTQzLDcgQEAgV2ViSW5z
cGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB0eXBl
U3RyaW5nID0gIlJlc3VsdCI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAg
ICAgICAgCisKICAgICAgICAgdmFyIGxldmVsU3RyaW5nOwogICAgICAgICBzd2l0Y2ggKHRoaXMu
bGV2ZWwpIHsKICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1l
c3NhZ2VMZXZlbC5UaXA6CkBAIC05NjcsMjIgKzk2MywyMCBAQCBXZWJJbnNwZWN0b3IuQ29uc29s
ZU1lc3NhZ2UucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKLSAgICAgICAgcmV0dXJuIHNvdXJjZVN0cmluZyArICIgIiArIHR5cGVTdHJpbmcgKyAiICIg
KyBsZXZlbFN0cmluZyArICI6ICIgKyB0aGlzLmZvcm1hdHRlZE1lc3NhZ2UudGV4dENvbnRlbnQg
KyAiXG4iICsgdGhpcy51cmwgKyAiIGxpbmUgIiArIHRoaXMubGluZTsKKyAgICAgICAgcmV0dXJu
IHNvdXJjZVN0cmluZyArICIgIiArIHR5cGVTdHJpbmcgKyAiICIgKyBsZXZlbFN0cmluZyArICI6
ICIgKyB0aGlzLl9mb3JtYXR0ZWRNZXNzYWdlLnRleHRDb250ZW50ICsgIlxuIiArIHRoaXMudXJs
ICsgIiBsaW5lICIgKyB0aGlzLmxpbmU7CiAgICAgfSwKIAotICAgIGlzRXF1YWw6IGZ1bmN0aW9u
KG1zZywgZGlzcmVndWFyZEdyb3VwKQorICAgIGlzRXF1YWw6IGZ1bmN0aW9uKG1zZykKICAgICB7
CiAgICAgICAgIGlmICghbXNnKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAg
IHZhciByZXQgPSAodGhpcy5zb3VyY2UgPT0gbXNnLnNvdXJjZSkKKyAgICAgICAgcmV0dXJuICh0
aGlzLnNvdXJjZSA9PSBtc2cuc291cmNlKQogICAgICAgICAgICAgJiYgKHRoaXMudHlwZSA9PSBt
c2cudHlwZSkKICAgICAgICAgICAgICYmICh0aGlzLmxldmVsID09IG1zZy5sZXZlbCkKICAgICAg
ICAgICAgICYmICh0aGlzLmxpbmUgPT0gbXNnLmxpbmUpCiAgICAgICAgICAgICAmJiAodGhpcy51
cmwgPT0gbXNnLnVybCkKICAgICAgICAgICAgICYmICh0aGlzLm1lc3NhZ2UgPT0gbXNnLm1lc3Nh
Z2UpOwotCi0gICAgICAgIHJldHVybiAoZGlzcmVndWFyZEdyb3VwID8gcmV0IDogKHJldCAmJiAo
dGhpcy5ncm91cExldmVsID09IG1zZy5ncm91cExldmVsKSkpOwogICAgIH0KIH0KIApAQCAtMTA0
MSw3ICsxMDM1LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0ID0gZnVuY3Rp
b24ocmVzdWx0LCBvcmlnaW5hdGluZ0NvbW1hbmQpCiB7CiAgICAgdmFyIGxldmVsID0gKHJlc3Vs
dC5pc0Vycm9yKCkgPyBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkVy
cm9yIDogV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5Mb2cpOwogICAg
IHRoaXMub3JpZ2luYXRpbmdDb21tYW5kID0gb3JpZ2luYXRpbmdDb21tYW5kOwotICAgIFdlYklu
c3BlY3Rvci5Db25zb2xlTWVzc2FnZS5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5Db25zb2xlTWVz
c2FnZS5NZXNzYWdlU291cmNlLkpTLCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2Fn
ZVR5cGUuUmVzdWx0LCBsZXZlbCwgLTEsIG51bGwsIG51bGwsIDEsIG51bGwsIFtyZXN1bHRdKTsK
KyAgICBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3Iu
Q29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5KUywgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNz
YWdlLk1lc3NhZ2VUeXBlLlJlc3VsdCwgbGV2ZWwsIC0xLCBudWxsLCAxLCBudWxsLCBbcmVzdWx0
XSk7CiB9CiAKIFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJlc3VsdC5wcm90b3R5cGUgPSB7
CkBAIC0xMDU1LDEwICsxMDQ5LDkgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0
LnByb3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0LnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlOwog
Ci1XZWJJbnNwZWN0b3IuQ29uc29sZUdyb3VwID0gZnVuY3Rpb24ocGFyZW50R3JvdXAsIGxldmVs
KQorV2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cCA9IGZ1bmN0aW9uKHBhcmVudEdyb3VwKQogewog
ICAgIHRoaXMucGFyZW50R3JvdXAgPSBwYXJlbnRHcm91cDsKLSAgICB0aGlzLmxldmVsID0gbGV2
ZWw7CiAKICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwog
ICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gImNvbnNvbGUtZ3JvdXAiOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Jlc291cmNlLmpzCmluZGV4IGFlZmRkNmM2MjEyNWY1M2VhZDkxZTMzMmRkOTAw
MWRiNDg1ZjI3ZDIuLmQwM2E2ODRmNzcwYTA2Y2JiNzUxN2I0YjU5YTViOTI1OTc5NWNjYjQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcworKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKQEAgLTYwOCw3ICs2MDgsNiBA
QCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5XYXJuaW5nLAog
ICAgICAgICAgICAgICAgICAgICAgICAgLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlz
LnVybCwKLSAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAxLAogICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nLnNwcmludGYoV2ViSW5zcGVj
dG9yLldhcm5pbmdzLkluY29ycmVjdE1JTUVUeXBlLm1lc3NhZ2UsIFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5UeXBlLnRvVUlTdHJpbmcodGhpcy50eXBlKSwgdGhpcy5taW1lVHlwZSksCiAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxsLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NvdXJjZUZyYW1lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJj
ZUZyYW1lLmpzCmluZGV4IDhlMDc3Y2QyOWU4ODUxMGY2Yjc1NTJhMTI0YjczZWM2NDZmMTVmMDgu
LjkyMDg4MWZmMTE3OGU5ZDMxMzVkOThmNTcyMDczMTY0MjQ5MDBiZTkgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcworKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMKQEAgLTM5NSw3ICszOTUsNyBAQCBXZWJJ
bnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCByb3dNZXNzYWdlcy5sZW5ndGg7ICsraSkgewotICAgICAgICAg
ICAgaWYgKHJvd01lc3NhZ2VzW2ldLmlzRXF1YWwobXNnLCB0cnVlKSkgeworICAgICAgICAgICAg
aWYgKHJvd01lc3NhZ2VzW2ldLmlzRXF1YWwobXNnKSkgewogICAgICAgICAgICAgICAgIHRoaXMu
X2luY3JlbWVudE1lc3NhZ2VSZXBlYXRDb3VudChyb3dNZXNzYWdlc1tpXSwgbXNnLnJlcGVhdERl
bHRhKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCA1MTE0NWNmZTBkMzNhMTU2N2E5ZjZj
NzI2N2E0YjIxZjk3YWFkMzllLi41YmFiMzFjMGZlNmQzN2RjYzJjN2MzMzUyNjBlODBjNDcxMGU2
NTRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpz
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTE0MjEs
MTEgKzE0MjEsMTIgQEAgV2ViSW5zcGVjdG9yLmFkZENvbnNvbGVNZXNzYWdlID0gZnVuY3Rpb24o
cGF5bG9hZCkKICAgICAgICAgcGF5bG9hZC5sZXZlbCwKICAgICAgICAgcGF5bG9hZC5saW5lLAog
ICAgICAgICBwYXlsb2FkLnVybCwKLSAgICAgICAgcGF5bG9hZC5ncm91cExldmVsLAogICAgICAg
ICBwYXlsb2FkLnJlcGVhdENvdW50LAogICAgICAgICBwYXlsb2FkLm1lc3NhZ2UsCiAgICAgICAg
IHBheWxvYWQucGFyYW1ldGVycywKLSAgICAgICAgcGF5bG9hZC5zdGFja1RyYWNlKTsKKyAgICAg
ICAgcGF5bG9hZC5zdGFja1RyYWNlLAorICAgICAgICBwYXlsb2FkLmh0dHBNZXRob2QsCisgICAg
ICAgIHBheWxvYWQuaHR0cFN0YXR1c0NvZGUpOwogICAgIHRoaXMuY29uc29sZS5hZGRNZXNzYWdl
KGNvbnNvbGVNZXNzYWdlKTsKIH0KIApAQCAtMTQ5MSw3ICsxNDkyLDYgQEAgV2ViSW5zcGVjdG9y
LmxvZyA9IGZ1bmN0aW9uKG1lc3NhZ2UsIG1lc3NhZ2VMZXZlbCkKICAgICAgICAgICAgIG1lc3Nh
Z2VMZXZlbCB8fCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkRlYnVn
LAogICAgICAgICAgICAgLTEsCiAgICAgICAgICAgICBudWxsLAotICAgICAgICAgICAgbnVsbCwK
ICAgICAgICAgICAgIHJlcGVhdENvdW50LAogICAgICAgICAgICAgbnVsbCwKICAgICAgICAgICAg
IFttZXNzYWdlXSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75515</attachid>
            <date>2010-12-03 11:12:51 -0800</date>
            <delta_ts>2010-12-08 06:40:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50390-20101203221248.patch</filename>
            <type>text/plain</type>
            <size>51103</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwZDY1OTFlYjM4YmRlMjQ1Zjg2N2NmM2NiMzI0MWRjNTViMzI0YmFmLi40MDkwZjhh
MzRkZTVkNWQzNzBiOTMzZWVhMWFiMmVjOWIzYTU1NmIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMTItMDIgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogQ29uc29sZSByZWNvcmRzIGZvciBmYWlsZWQgWEhScyBzaG91bGQgY29udGFpbiBjYWxsIHN0
YWNrIGFuZCByZXF1ZXN0IG1ldGhvZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTAzOTAKKworICAgICAgICBUaGUgZXhwZWN0YXRpb25zIG5lZWRlZCB1
cGRhdGUgZWl0aGVyIGR1ZSB0byBsb2cgZm9ybWF0IGNoYW5nZXMgb3IgZHVlIHRvIHJlbW92YWwg
b2Ygc29tZSB1bnVzZWQgc3R5bGUgY2xhc3Nlcy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5z
cGVjdG9yLWVuYWJsZWQvY29uc29sZS1sb2ctYmVmb3JlLWZyYW1lLW5hdmlnYXRpb24tZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtcmVzb3VyY2Ut
ZXJyb3JzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9jb25z
b2xlLXhoci1sb2dnaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29s
ZS10ZXN0cy1leHBlY3RlZC50eHQ6CisKIDIwMTAtMTItMDMgIERpbWl0cmkgR2xhemtvdiAgPGRn
bGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvY29u
c29sZS1sb2ctYmVmb3JlLWZyYW1lLW5hdmlnYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9jb25zb2xlLWxvZy1iZWZvcmUtZnJhbWUt
bmF2aWdhdGlvbi1leHBlY3RlZC50eHQKaW5kZXggZDA1MDVlOGQ1NmEzZTkwYzA0MzU1NjM3NmFl
MWFlMjIxM2VjYWVhZS4uMzFlNzg0MDYxYTk4ZmY1M2ZkYWI2OTFiNmRmYzdhMzY4YzEyZjk1NCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9jb25z
b2xlLWxvZy1iZWZvcmUtZnJhbWUtbmF2aWdhdGlvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9jb25zb2xlLWxvZy1iZWZvcmUtZnJh
bWUtbmF2aWdhdGlvbi1leHBlY3RlZC50eHQKQEAgLTQsNyArNCw3IEBAIFRlc3RzIHRoYXQgV2Vi
IEluc3BlY3RvciB3b24ndCBjcmFzaCBpZiB0aGVyZSBhcmUgbWVzc2FnZXMgd3JpdHRlbiB0byBj
b25zb2xlIGZyCiAKIFJlY2VpdmVkIGNvbnNvbGUgbWVzc2FnZXM6CiBNZXNzYWdlWzBdOgotVVJM
OiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yLWVuYWJsZWQvcmVzb3VyY2VzL2NvbnNv
bGUtbG9nLWZyYW1lLWJlZm9yZS1uYXZpZ2F0aW9uLmh0bWwKLU1lc3NhZ2U6IENvbnNvbGUgbWVz
c2FnZSAoQykgJWQgd2l0aCBlbGVtZW50CitVUkw6IAorTWVzc2FnZTogcmVzb3VyY2VzL2NvbnNv
bGUtbG9nLWZyYW1lLWJlZm9yZS1uYXZpZ2F0aW9uLmh0bWw6NUNvbnNvbGUgbWVzc2FnZSAoQykg
JWQgd2l0aCBlbGVtZW50CiBURVNUIENPTVBMRVRFLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXJlc291cmNlLWVycm9ycy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXJlc291cmNlLWVy
cm9ycy1leHBlY3RlZC50eHQKaW5kZXggNTgwYWRlYTUxNzZkNjQ2YjdlMzRkNzAzNDRiMTJhZGQ4
MDI4NGQxMy4uY2FmMmUxN2VhNjk4ZWE4YjYwZmJmZmY5NjgwZGJjNmY3NWQ0YjMxOSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS1yZXNvdXJjZS1l
cnJvcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2NvbnNvbGUtcmVzb3VyY2UtZXJyb3JzLWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDcgQEAKICBU
ZXN0cyB0aGF0IGVycm9ycyB0byBsb2FkIGEgcmVzb3VyY2UgY2F1c2UgZXJyb3IgbWVzc2FnZXMg
dG8gYmUgbG9nZ2VkIHRvIGNvbnNvbGUuCiAKLW1pc3NpbmcuY3NzRmFpbGVkIHRvIGxvYWQgcmVz
b3VyY2U6IHRoZSBzZXJ2ZXIgcmVzcG9uZGVkIHdpdGggYSBzdGF0dXMgb2YgNDA0IChOb3QgRm91
bmQpIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLW90aGVyLXNvdXJjZSBjb25zb2xlLWVycm9yLWxl
dmVsCi1ub24tZXhpc3RlbnQtaWZyYW1lLmh0bWxGYWlsZWQgdG8gbG9hZCByZXNvdXJjZTogdGhl
IHNlcnZlciByZXNwb25kZWQgd2l0aCBhIHN0YXR1cyBvZiA0MDQgKE5vdCBGb3VuZCkgY29uc29s
ZS1tZXNzYWdlIGNvbnNvbGUtb3RoZXItc291cmNlIGNvbnNvbGUtZXJyb3ItbGV2ZWwKLW5vbi1l
eGlzdGVudC1zY3JpcHQuanNGYWlsZWQgdG8gbG9hZCByZXNvdXJjZTogdGhlIHNlcnZlciByZXNw
b25kZWQgd2l0aCBhIHN0YXR1cyBvZiA0MDQgKE5vdCBGb3VuZCkgY29uc29sZS1tZXNzYWdlIGNv
bnNvbGUtb3RoZXItc291cmNlIGNvbnNvbGUtZXJyb3ItbGV2ZWwKLW5vbi1leGlzdGVudC14aHJG
YWlsZWQgdG8gbG9hZCByZXNvdXJjZTogdGhlIHNlcnZlciByZXNwb25kZWQgd2l0aCBhIHN0YXR1
cyBvZiA0MDQgKE5vdCBGb3VuZCkgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtb3RoZXItc291cmNl
IGNvbnNvbGUtZXJyb3ItbGV2ZWwKK0dFVCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9y
L25vbi1leGlzdGVudC1pZnJhbWUuaHRtbCA0MDQgKE5vdCBGb3VuZCkgY29uc29sZS1tZXNzYWdl
IGNvbnNvbGUtZXJyb3ItbGV2ZWwKK0dFVCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9y
L25vbi1leGlzdGVudC1zY3JpcHQuanMgNDA0IChOb3QgRm91bmQpIGNvbnNvbGUtbWVzc2FnZSBj
b25zb2xlLWVycm9yLWxldmVsCitHRVQgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9u
b24tZXhpc3RlbnQteGhyIDQwNCAoTm90IEZvdW5kKSBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1l
cnJvci1sZXZlbAoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9taXNzaW5nLmNzcyA0
MDQgKE5vdCBGb3VuZCkgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtZXJyb3ItbGV2ZWwKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS14aHItbG9n
Z2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25z
b2xlLXhoci1sb2dnaW5nLWV4cGVjdGVkLnR4dAppbmRleCBkNzAyZmNkNGM4Y2YyMWQ1MTBlZTQ1
OGQ0NmEwOTE5MmFiNjg1MjdjLi5lMDdhNzIwOWMzZTg2OGFiYzZjYWRiNTIxOGMxNzBhY2FiMTAy
ZTMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xl
LXhoci1sb2dnaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9jb25zb2xlLXhoci1sb2dnaW5nLWV4cGVjdGVkLnR4dApAQCAtMTIsMTMgKzEyLDEz
IEBAIGNvbnNvbGUteGhyLWxvZ2dpbmcuaHRtbDoxMWVuYWJsZWQKIGNvbnNvbGUteGhyLWxvZ2dp
bmcuaHRtbDo0MHNlbmRpbmcgYSBHRVQgcmVxdWVzdCB0byByZXNvdXJjZXMveGhyLWV4aXN0cy5o
dG1sCiBYSFIgZmluaXNoZWQgbG9hZGluZzogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0
b3IvcmVzb3VyY2VzL3hoci1leGlzdHMuaHRtbCIuCiBjb25zb2xlLXhoci1sb2dnaW5nLmh0bWw6
NDBzZW5kaW5nIGEgR0VUIHJlcXVlc3QgdG8gcmVzb3VyY2VzL3hoci1kb2VzLW5vdC1leGlzdC5o
dG1sCi14aHItZG9lcy1ub3QtZXhpc3QuaHRtbEZhaWxlZCB0byBsb2FkIHJlc291cmNlOiB0aGUg
c2VydmVyIHJlc3BvbmRlZCB3aXRoIGEgc3RhdHVzIG9mIDQwNCAoTm90IEZvdW5kKQorR0VUIGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2VzL3hoci1kb2VzLW5vdC1leGlz
dC5odG1sIDQwNCAoTm90IEZvdW5kKQogWEhSIGZpbmlzaGVkIGxvYWRpbmc6ICJodHRwOi8vMTI3
LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy94aHItZG9lcy1ub3QtZXhpc3QuaHRtbCIu
CiBjb25zb2xlLXhoci1sb2dnaW5nLmh0bWw6NDBzZW5kaW5nIGEgUE9TVCByZXF1ZXN0IHRvIHJl
c291cmNlcy9wb3N0LXRhcmdldC5jZ2kKIFhIUiBmaW5pc2hlZCBsb2FkaW5nOiAiaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMvcG9zdC10YXJnZXQuY2dpIi4KIGNvbnNv
bGUteGhyLWxvZ2dpbmcuaHRtbDoyMWRpc2FibGVkCiBjb25zb2xlLXhoci1sb2dnaW5nLmh0bWw6
NDBzZW5kaW5nIGEgR0VUIHJlcXVlc3QgdG8gcmVzb3VyY2VzL3hoci1leGlzdHMuaHRtbAogY29u
c29sZS14aHItbG9nZ2luZy5odG1sOjQwc2VuZGluZyBhIEdFVCByZXF1ZXN0IHRvIHJlc291cmNl
cy94aHItZG9lcy1ub3QtZXhpc3QuaHRtbAoteGhyLWRvZXMtbm90LWV4aXN0Lmh0bWxGYWlsZWQg
dG8gbG9hZCByZXNvdXJjZTogdGhlIHNlcnZlciByZXNwb25kZWQgd2l0aCBhIHN0YXR1cyBvZiA0
MDQgKE5vdCBGb3VuZCkKK0dFVCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3Jlc291
cmNlcy94aHItZG9lcy1ub3QtZXhpc3QuaHRtbCA0MDQgKE5vdCBGb3VuZCkKIGNvbnNvbGUteGhy
LWxvZ2dpbmcuaHRtbDo0MHNlbmRpbmcgYSBQT1NUIHJlcXVlc3QgdG8gcmVzb3VyY2VzL3Bvc3Qt
dGFyZ2V0LmNnaQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS10
ZXN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS10ZXN0cy1l
eHBlY3RlZC50eHQKaW5kZXggZDJmMDg3ZDE2MzVkNzFiNTc4MmMxMjhlYzM2NDRiZGU4ZjZkMGFj
Zi4uZmE2ZWJmNDhkNWRiNjMzNjlmOTY1Zjk0ZjZkMzE4YmExZmI3NWZkYyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtdGVzdHMtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3RzLWV4cGVjdGVkLnR4dApAQCAtMjEsMjYg
KzIxLDI2IEBAIENPTlNPTEUgTUVTU0FHRTogbGluZSAzMDogMSwyLDMKIENPTlNPTEUgTUVTU0FH
RTogbGluZSAzMTogL3JlZ2V4cC4qLwogVGVzdHMgdGhhdCBjb25zb2xlIGxvZ2dpbmcgZHVtcHMg
cHJvcGVyIG1lc3NhZ2VzLgogCi1jb25zb2xlLXRlc3RzLmh0bWw6OWxvZyBjb25zb2xlLW1lc3Nh
Z2UgY29uc29sZS1qcy1zb3VyY2UgY29uc29sZS1sb2ctbGV2ZWwKLWNvbnNvbGUtdGVzdHMuaHRt
bDoxMGRlYnVnIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWpzLXNvdXJjZSBjb25zb2xlLWxvZy1s
ZXZlbAotY29uc29sZS10ZXN0cy5odG1sOjExaW5mbyBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1q
cy1zb3VyY2UgY29uc29sZS1sb2ctbGV2ZWwKLWNvbnNvbGUtdGVzdHMuaHRtbDoxMndhcm4gY29u
c29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUtd2FybmluZy1sZXZlbAotY29u
c29sZS10ZXN0cy5odG1sOjEzZXJyb3IgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291cmNl
IGNvbnNvbGUtZXJyb3ItbGV2ZWwKLTVjb25zb2xlLXRlc3RzLmh0bWw6MTVyZXBlYXRlZCBjb25z
b2xlLW1lc3NhZ2UgY29uc29sZS1qcy1zb3VyY2UgY29uc29sZS1sb2ctbGV2ZWwgcmVwZWF0ZWQt
bWVzc2FnZQotY29uc29sZS10ZXN0cy5odG1sOjE3Y291bnQ6IDEgY29uc29sZS1tZXNzYWdlIGNv
bnNvbGUtanMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVsCi1jb25zb2xlLXRlc3RzLmh0bWw6MTdj
b3VudDogMiBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1qcy1zb3VyY2UgY29uc29sZS1sb2ctbGV2
ZWwKLWNvbnNvbGUtdGVzdHMuaHRtbDoxOGdyb3VwIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWpz
LXNvdXJjZSBjb25zb2xlLWxvZy1sZXZlbCBjb25zb2xlLWdyb3VwLXRpdGxlCi0gY29uc29sZS1t
ZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVsCi1jb25zb2xlLXRlc3Rz
Lmh0bWw6MjAxIDIgMyBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1qcy1zb3VyY2UgY29uc29sZS1s
b2ctbGV2ZWwKLWNvbnNvbGUtdGVzdHMuaHRtbDoyMWdyb3VwQ29sbGFwc2VkIGNvbnNvbGUtbWVz
c2FnZSBjb25zb2xlLWpzLXNvdXJjZSBjb25zb2xlLWxvZy1sZXZlbCBjb25zb2xlLWdyb3VwLXRp
dGxlCi1jb25zb2xlLXRlc3RzLmh0bWw6MjJPYmplY3QgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUt
anMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVsCi1jb25zb2xlLXRlc3RzLmh0bWw6MjM0MiBjb25z
b2xlLW1lc3NhZ2UgY29uc29sZS1qcy1zb3VyY2UgY29uc29sZS1sb2ctbGV2ZWwKLWNvbnNvbGUt
dGVzdHMuaHRtbDoyNHRydWUgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNvbnNv
bGUtbG9nLWxldmVsCi1jb25zb2xlLXRlc3RzLmh0bWw6MjVudWxsIGNvbnNvbGUtbWVzc2FnZSBj
b25zb2xlLWpzLXNvdXJjZSBjb25zb2xlLWxvZy1sZXZlbAotY29uc29sZS10ZXN0cy5odG1sOjI2
dW5kZWZpbmVkIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWpzLXNvdXJjZSBjb25zb2xlLWxvZy1s
ZXZlbAotY29uc29sZS10ZXN0cy5odG1sOjI3RG9jdW1lbnQgY29uc29sZS1tZXNzYWdlIGNvbnNv
bGUtanMtc291cmNlIGNvbnNvbGUtbG9nLWxldmVsCi1jb25zb2xlLXRlc3RzLmh0bWw6MjhmdW5j
dGlvbiAoKSB7IH0gY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtanMtc291cmNlIGNvbnNvbGUtbG9n
LWxldmVsCi1jb25zb2xlLXRlc3RzLmh0bWw6MjlmdW5jdGlvbiBmKCkgeyB9IGNvbnNvbGUtbWVz
c2FnZSBjb25zb2xlLWpzLXNvdXJjZSBjb25zb2xlLWxvZy1sZXZlbAotY29uc29sZS10ZXN0cy5o
dG1sOjMwWzEsIDIsIDNdIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWpzLXNvdXJjZSBjb25zb2xl
LWxvZy1sZXZlbAotY29uc29sZS10ZXN0cy5odG1sOjMxL3JlZ2V4cC4qLyBjb25zb2xlLW1lc3Nh
Z2UgY29uc29sZS1qcy1zb3VyY2UgY29uc29sZS1sb2ctbGV2ZWwKK2NvbnNvbGUtdGVzdHMuaHRt
bDo5bG9nIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWxvZy1sZXZlbAorY29uc29sZS10ZXN0cy5o
dG1sOjEwZGVidWcgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtbG9nLWxldmVsCitjb25zb2xlLXRl
c3RzLmh0bWw6MTFpbmZvIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWxvZy1sZXZlbAorY29uc29s
ZS10ZXN0cy5odG1sOjEyd2FybiBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS13YXJuaW5nLWxldmVs
Citjb25zb2xlLXRlc3RzLmh0bWw6MTNlcnJvciBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1lcnJv
ci1sZXZlbAorNWNvbnNvbGUtdGVzdHMuaHRtbDoxNXJlcGVhdGVkIGNvbnNvbGUtbWVzc2FnZSBj
b25zb2xlLWxvZy1sZXZlbCByZXBlYXRlZC1tZXNzYWdlCitjb25zb2xlLXRlc3RzLmh0bWw6MTdj
b3VudDogMSBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1sb2ctbGV2ZWwKK2NvbnNvbGUtdGVzdHMu
aHRtbDoxN2NvdW50OiAyIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWxvZy1sZXZlbAorY29uc29s
ZS10ZXN0cy5odG1sOjE4Z3JvdXAgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtbG9nLWxldmVsIGNv
bnNvbGUtZ3JvdXAtdGl0bGUKKyBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1sb2ctbGV2ZWwKK2Nv
bnNvbGUtdGVzdHMuaHRtbDoyMDEgMiAzIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWxvZy1sZXZl
bAorY29uc29sZS10ZXN0cy5odG1sOjIxZ3JvdXBDb2xsYXBzZWQgY29uc29sZS1tZXNzYWdlIGNv
bnNvbGUtbG9nLWxldmVsIGNvbnNvbGUtZ3JvdXAtdGl0bGUKK2NvbnNvbGUtdGVzdHMuaHRtbDoy
Mk9iamVjdCBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1sb2ctbGV2ZWwKK2NvbnNvbGUtdGVzdHMu
aHRtbDoyMzQyIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWxvZy1sZXZlbAorY29uc29sZS10ZXN0
cy5odG1sOjI0dHJ1ZSBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1sb2ctbGV2ZWwKK2NvbnNvbGUt
dGVzdHMuaHRtbDoyNW51bGwgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtbG9nLWxldmVsCitjb25z
b2xlLXRlc3RzLmh0bWw6MjZ1bmRlZmluZWQgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtbG9nLWxl
dmVsCitjb25zb2xlLXRlc3RzLmh0bWw6MjdEb2N1bWVudCBjb25zb2xlLW1lc3NhZ2UgY29uc29s
ZS1sb2ctbGV2ZWwKK2NvbnNvbGUtdGVzdHMuaHRtbDoyOGZ1bmN0aW9uICgpIHsgfSBjb25zb2xl
LW1lc3NhZ2UgY29uc29sZS1sb2ctbGV2ZWwKK2NvbnNvbGUtdGVzdHMuaHRtbDoyOWZ1bmN0aW9u
IGYoKSB7IH0gY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtbG9nLWxldmVsCitjb25zb2xlLXRlc3Rz
Lmh0bWw6MzBbMSwgMiwgM10gY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtbG9nLWxldmVsCitjb25z
b2xlLXRlc3RzLmh0bWw6MzEvcmVnZXhwLiovIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWxvZy1s
ZXZlbAogCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDc5YWFmYzA2ODVkMzI1MGIzZmZlMTA3MDA4YjVmMjY4ZTUwY2M2ZWYuLjkxODVjMDg3
NjE5ODRjMWRjMDFlMmNjNGJlMWY5YjdmOTE4OWU0NWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkgQEAKKzIwMTAtMTIt
MDIgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ29uc29s
ZSByZWNvcmRzIGZvciBmYWlsZWQgWEhScyBzaG91bGQgY29udGFpbiBjYWxsIHN0YWNrIGFuZCBy
ZXF1ZXN0IG1ldGhvZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTAzOTAKKworICAgICAgICBXaGVuIGluc3BlY3RvciBmcm9udC1lbmQgaXMgb3BlbiB3
ZSBjYXB0dXJlIGNhbGwgc3RhY2sgYW5kIEhUVFAgcmVxdWVzdCBtZXRob2QgdG8gbGF0ZXIgcGFz
cyBpdAorICAgICAgICBpbnRvIENvbnNvbGVNZXNzYWdlIGNvbnN0cnVjdG9yIHNob3VsZCB0aGUg
cmVxdWVzdCBmYWlsLiBUbyBzYXZlIHJlc291cmNlcyB3ZSBkb24ndCBkbyB0aGlzCisgICAgICAg
IHdoZW4gZnJvbnQtZW5kIGlzIGNsb3NlZC4KKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovbG9j
YWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tG
YWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1l
c3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdlOjppc0VxdWFsKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJ
bnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6Y2xlYXJDb25zb2xlTWVzc2FnZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6c3RhcnRHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
b250cm9sbGVyOjplbmRHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9s
bGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmg6IHJlbW92ZWQgbV9ncm91cExldmVsIHNpbmNlIHdlIGRvbid0IG5lZWQgaXQs
IGFsbCB0aGUgbmVzdGluZyBpcyBjb21wdXRlZCBvbgorICAgICAgICB0aGUgZnJvbnQtZW5kIHNp
ZGUgYW5kIGhhdmluZyBTdGFydC9FbmRHcm91cCBtZXNzYWdlcyBpcyBlbm91Z2guCisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENv
bW1pdExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6cmVx
dWVzdEluZm9Gb3JSZXF1ZXN0SWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5jcmVhdGVGaWx0ZXJFbGVtZW50
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLmZpbHRlcik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLmFmdGVyU2hvdyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLmFkZE1lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS51cGRhdGVNZXNzYWdlUmVwZWF0Q291bnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5jbGVhck1lc3NhZ2VzKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2UuY3JlYXRlVGV4dE1lc3NhZ2UpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZS5fZm9ybWF0TWVzc2FnZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlLnRvTWVzc2FnZUVsZW1lbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZS5fcG9wdWxh
dGVTdGFja1RyYWNlVHJlZUVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlLnByb3RvdHlwZS5fdXBkYXRlUmVwZWF0Q291bnQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlLmlzRXF1YWwpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25z
b2xlR3JvdXApOiBncm91cCBsZXZlbCBjb3VudGVycyB3ZXJlIHJlbW92ZWQgZnJvbSB0aGUgZnJv
bnQtZW5kIGFzIHdlbGwKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5fY2hlY2tXYXJuaW5n
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5fYWRkTWVzc2FnZVRvU291cmNl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5hZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
bG9nLmxvZ01lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxvZyk6CisKIDIwMTAtMTIt
MDMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvRW5nbGlzaC5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0
cmluZ3MuanMKaW5kZXggMmY4MDRjZGE1YzdkYzVjMjNlNWQ1NTJhYjM1ODQ0OTc4MWRlYjYzYy4u
ZmExNTMzZjMxNzdmOTY3ZDM0Mzk1YWQzM2I0YzdjYjQxZWE4MTYyZiAxMDA2NDQKR0lUIGJpbmFy
eSBwYXRjaApkZWx0YSAzMgpvY21jYUhrTkxfeDxfJTI+b0p0SV8zPD9hazM8e0hENjt2aytpUil+
QnBpcj82MElRJTFKT0JVeQoKZGVsdGEgMjQKZ2NtY2FJa05MKHQ8XyUyPmowJSQqNzQjPUJeMyZP
VE9RQzhWMER6NE9OZE4hPAoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFj
a0ZhY3RvcnkuY3BwCmluZGV4IDlhNjRmZmNjYjVkNmFiYjc2YjAwOTg3ODMyYzkxMjQ3NDgwZWU3
YWMuLjBjZGJkODY2OTUzM2VmNmRjMWMwOTA5NzA0NGY2ZTI1Y2RmNTVkYmUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcApAQCAtNDgsNiArNDgs
MTEgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitQYXNz
UmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKHNpemVfdCkKK3sK
KyAgICByZXR1cm4gMDsKK30KKwogUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZVNj
cmlwdENhbGxTdGFjayhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IG1heFN0YWNrU2l6ZSkK
IHsKICAgICBWZWN0b3I8U2NyaXB0Q2FsbEZyYW1lPiBmcmFtZXM7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oCmluZGV4IDlmYmZjNzgwNmUxOTY3OWJhMDZl
MzA4MThjYmE2YzI2MTg1MDg5ODMuLjY3NDgzZDE2MTRlMGE4YzE0ODk3MzRmNzcxYTg4MmYzYjRl
NWJiYTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFj
dG9yeS5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5o
CkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNjcmlwdEFyZ3Vt
ZW50czsKIGNsYXNzIFNjcmlwdENhbGxTdGFjazsKIAorUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3Rh
Y2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhzaXplX3QgbWF4U3RhY2tTaXplKTsKIFBhc3NSZWZQ
dHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNDOjpFeGVjU3RhdGUq
LCBzaXplX3QgbWF4U3RhY2tTaXplKTsKIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBjcmVh
dGVTY3JpcHRBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBza2lwQXJndW1lbnRD
b3VudCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNr
RmFjdG9yeS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3Rvcnku
Y3BwCmluZGV4IDVkNGUxNDYzMDUyNTlkZmM2MTQ5OTk3ZmNkNThkZDVmMWFkN2I3YzkuLjA0NzZm
NjRiNGUyZTNkMGU3MmEwNDViZTUwMmZmMWU4MDMwNWJjNTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcApAQCAtOTAsNiArOTAsOCBAQCBQYXNz
UmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKHY4OjpMb2NhbDx2
ODo6Q29udGV4dD4gY29udGV4dAogCiBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRl
U2NyaXB0Q2FsbFN0YWNrKHNpemVfdCBtYXhTdGFja1NpemUpCiB7CisgICAgaWYgKCF2ODo6Q29u
dGV4dDo6SW5Db250ZXh0KCkpCisgICAgICAgIHJldHVybiAwOwogICAgIHY4OjpIYW5kbGVTY29w
ZSBzY29wZTsKICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4
dDo6R2V0Q3VycmVudCgpOwogICAgIC8vIFRPRE8oeXVyeXMpOiByZW1vdmU/CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rv
ci9Db25zb2xlTWVzc2FnZS5jcHAKaW5kZXggZjE1MzRkZjA4MTFmOTIxZDcwMzU1ZmI2MjEwMDgz
MWRhZDM4MTU3Ny4uYjI3ZDU2YWJjNWIzZjRiMzkwMzdlYWM3MTg3NzcxNzZkZDliZDExYSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApAQCAtNDMsMzYgKzQzLDQ0IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotQ29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2UgcywgTWVzc2FnZVR5cGUgdCwgTWVzc2FnZUxldmVsIGwsIGNvbnN0IFN0cmluZyYg
bSwgdW5zaWduZWQgbGksIGNvbnN0IFN0cmluZyYgdSwgdW5zaWduZWQgZykKK0NvbnNvbGVNZXNz
YWdlOjpDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHMsIE1lc3NhZ2VUeXBlIHQsIE1lc3Nh
Z2VMZXZlbCBsLCBjb25zdCBTdHJpbmcmIG0sIHVuc2lnbmVkIGxpLCBjb25zdCBTdHJpbmcmIHUp
CiAgICAgOiBtX3NvdXJjZShzKQogICAgICwgbV90eXBlKHQpCiAgICAgLCBtX2xldmVsKGwpCiAg
ICAgLCBtX21lc3NhZ2UobSkKICAgICAsIG1fbGluZShsaSkKICAgICAsIG1fdXJsKHUpCi0gICAg
LCBtX2dyb3VwTGV2ZWwoZykKICAgICAsIG1fcmVwZWF0Q291bnQoMSkKKyAgICAsIG1faHR0cFN0
YXR1c0NvZGUoMCkKIHsKIH0KIAotQ29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2UgcywgTWVzc2FnZVR5cGUgdCwgTWVzc2FnZUxldmVsIGwsIGNvbnN0IFN0cmluZyYg
bSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgUGFzc1JlZlB0cjxTY3Jp
cHRDYWxsU3RhY2s+IGNhbGxTdGFjaywgdW5zaWduZWQgZykKK0NvbnNvbGVNZXNzYWdlOjpDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHMsIE1lc3NhZ2VUeXBlIHQsIE1lc3NhZ2VMZXZlbCBs
LCBjb25zdCBTdHJpbmcmIG0sIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMs
IFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiAgICAgOiBtX3NvdXJjZShz
KQogICAgICwgbV90eXBlKHQpCiAgICAgLCBtX2xldmVsKGwpCiAgICAgLCBtX21lc3NhZ2UobSkK
ICAgICAsIG1fYXJndW1lbnRzKGFyZ3VtZW50cykKICAgICAsIG1fY2FsbFN0YWNrKGNhbGxTdGFj
aykKLSAgICAsIG1fZ3JvdXBMZXZlbChnKQorICAgICwgbV9saW5lKDApCisgICAgLCBtX3VybCgp
CiAgICAgLCBtX3JlcGVhdENvdW50KDEpCisgICAgLCBtX2h0dHBTdGF0dXNDb2RlKDApCiB7Ci0g
ICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBsYXN0Q2FsbGVyID0gbV9jYWxsU3RhY2stPmF0KDAp
OwotICAgIG1fbGluZSA9IGxhc3RDYWxsZXIubGluZU51bWJlcigpOwotICAgIG1fdXJsID0gbGFz
dENhbGxlci5zb3VyY2VVUkwoKTsKLQorfQogCi0gICAgYm9vbCBzdG9yZVRyYWNlID0gKHQgPT0g
VHJhY2VNZXNzYWdlVHlwZSB8fCB0ID09IFVuY2F1Z2h0RXhjZXB0aW9uTWVzc2FnZVR5cGUgfHwg
dCA9PSBBc3NlcnRNZXNzYWdlVHlwZSk7Ci0gICAgaWYgKCFzdG9yZVRyYWNlKQotICAgICAgICBt
X2NhbGxTdGFjay5jbGVhcigpOworQ29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2UgcywgTWVzc2FnZVR5cGUgdCwgTWVzc2FnZUxldmVsIGwsIGNvbnN0IFN0cmluZyYg
aHR0cE1ldGhvZCwgY29uc3QgU3RyaW5nJiByZXNwb25zZVVybCwgaW50IGh0dHBTdGF0dXNDb2Rl
LCBjb25zdCBTdHJpbmcmIGh0dHBTdGF0dXNUZXh0LCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFj
az4gY2FsbFN0YWNrKQorICAgIDogbV9zb3VyY2UocykKKyAgICAsIG1fdHlwZSh0KQorICAgICwg
bV9sZXZlbChsKQorICAgICwgbV9tZXNzYWdlKGh0dHBTdGF0dXNUZXh0KQorICAgICwgbV9jYWxs
U3RhY2soY2FsbFN0YWNrKQorICAgICwgbV9saW5lKDApCisgICAgLCBtX3VybChyZXNwb25zZVVy
bCkKKyAgICAsIG1fcmVwZWF0Q291bnQoMSkKKyAgICAsIG1faHR0cE1ldGhvZChodHRwTWV0aG9k
KQorICAgICwgbV9odHRwU3RhdHVzQ29kZShodHRwU3RhdHVzQ29kZSkKK3sKIH0KIAogdm9pZCBD
b25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQs
IEluamVjdGVkU2NyaXB0SG9zdCogaW5qZWN0ZWRTY3JpcHRIb3N0KQpAQCAtODMsOSArOTEsMTIg
QEAgdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCog
ZnJvbnRlbmQsIEluamVjdGVkU2NyaXB0SG8KICAgICBqc29uT2JqLT5zZXROdW1iZXIoImxldmVs
Iiwgc3RhdGljX2Nhc3Q8aW50PihtX2xldmVsKSk7CiAgICAganNvbk9iai0+c2V0TnVtYmVyKCJs
aW5lIiwgc3RhdGljX2Nhc3Q8aW50PihtX2xpbmUpKTsKICAgICBqc29uT2JqLT5zZXRTdHJpbmco
InVybCIsIG1fdXJsKTsKLSAgICBqc29uT2JqLT5zZXROdW1iZXIoImdyb3VwTGV2ZWwiLCBzdGF0
aWNfY2FzdDxpbnQ+KG1fZ3JvdXBMZXZlbCkpOwogICAgIGpzb25PYmotPnNldE51bWJlcigicmVw
ZWF0Q291bnQiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fcmVwZWF0Q291bnQpKTsKICAgICBqc29uT2Jq
LT5zZXRTdHJpbmcoIm1lc3NhZ2UiLCBtX21lc3NhZ2UpOworICAgIGlmIChtX2h0dHBTdGF0dXND
b2RlKSB7CisgICAgICAgIGpzb25PYmotPnNldE51bWJlcigiaHR0cFN0YXR1c0NvZGUiLCBtX2h0
dHBTdGF0dXNDb2RlKTsKKyAgICAgICAganNvbk9iai0+c2V0U3RyaW5nKCJodHRwTWV0aG9kIiwg
bV9odHRwTWV0aG9kKTsKKyAgICB9CiAgICAgaWYgKG1fYXJndW1lbnRzICYmIG1fYXJndW1lbnRz
LT5hcmd1bWVudENvdW50KCkpIHsKICAgICAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3Jp
cHQgPSBpbmplY3RlZFNjcmlwdEhvc3QtPmluamVjdGVkU2NyaXB0Rm9yKG1fYXJndW1lbnRzLT5n
bG9iYWxTdGF0ZSgpKTsKICAgICAgICAgaWYgKCFpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkp
IHsKQEAgLTEzMCw4ICsxNDEsNyBAQCBib29sIENvbnNvbGVNZXNzYWdlOjppc0VxdWFsKENvbnNv
bGVNZXNzYWdlKiBtc2cpIGNvbnN0CiAgICAgICAgICYmIG1zZy0+bV9sZXZlbCA9PSBtX2xldmVs
CiAgICAgICAgICYmIG1zZy0+bV9tZXNzYWdlID09IG1fbWVzc2FnZQogICAgICAgICAmJiBtc2ct
Pm1fbGluZSA9PSBtX2xpbmUKLSAgICAgICAgJiYgbXNnLT5tX3VybCA9PSBtX3VybAotICAgICAg
ICAmJiBtc2ctPm1fZ3JvdXBMZXZlbCA9PSBtX2dyb3VwTGV2ZWw7CisgICAgICAgICYmIG1zZy0+
bV91cmwgPT0gbV91cmw7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmggYi9XZWJDb3JlL2luc3BlY3Rvci9D
b25zb2xlTWVzc2FnZS5oCmluZGV4IDM1MWM1ODRkNGQxZDg5OTUzNzY1NGZmMDRlMGM3Y2ExMjI1
YTg2NGUuLjc5MGQyZDFjZTFiYjA5MjgzODJmYTdmZDRkNGI3ZjRmNTA2YmRkMzMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29uc29sZU1lc3NhZ2UuaApAQCAtNDgsOCArNDgsOSBAQCBjbGFzcyBTY3JpcHRWYWx1
ZTsKIAogY2xhc3MgQ29uc29sZU1lc3NhZ2UgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGlj
OgotICAgIENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdl
TGV2ZWwsIGNvbnN0IFN0cmluZyYgbSwgdW5zaWduZWQgbGksIGNvbnN0IFN0cmluZyYgdSwgdW5z
aWduZWQgZyk7Ci0gICAgQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUs
IE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50
cz4sIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiwgdW5zaWduZWQgZyk7CisgICAgQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3Qg
U3RyaW5nJiBtLCB1bnNpZ25lZCBsaSwgY29uc3QgU3RyaW5nJiB1KTsKKyAgICBDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJp
bmcmIG0sIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc1JlZlB0cjxTY3JpcHRDYWxs
U3RhY2s+KTsKKyAgICBDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwg
TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIGh0dHBNZXRob2QsIGNvbnN0IFN0cmluZyYgcmVz
cG9uc2VVcmwsIGludCBodHRwU3RhdHVzQ29kZSwgY29uc3QgU3RyaW5nJiBodHRwU3RhdHVzVGV4
dCwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKIAogICAgIHZvaWQgYWRkVG9Gcm9udGVu
ZChJbnNwZWN0b3JGcm9udGVuZCosIEluamVjdGVkU2NyaXB0SG9zdCopOwogICAgIHZvaWQgdXBk
YXRlUmVwZWF0Q291bnRJbkNvbnNvbGUoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKTsKQEAg
LTY4LDggKzY5LDkgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBtX2Nh
bGxTdGFjazsKICAgICB1bnNpZ25lZCBtX2xpbmU7CiAgICAgU3RyaW5nIG1fdXJsOwotICAgIHVu
c2lnbmVkIG1fZ3JvdXBMZXZlbDsKICAgICB1bnNpZ25lZCBtX3JlcGVhdENvdW50OworICAgIFN0
cmluZyBtX2h0dHBNZXRob2Q7CisgICAgaW50IG1faHR0cFN0YXR1c0NvZGU7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCmluZGV4IDliNDViYmU2ZjBiODVmYzY3OTU4ZDkzMDJmZmI1YzViNTdhM2JhOGQuLjM2ZDYy
OWFlYTAzNjkwNDFiZTY3OTY1YzczNjdjM2MxNjU4MmM4MWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0xNDUsNyArMTQ1LDYgQEAgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQq
IGNsaWVudCkKICAgICAsIG1fY3NzQWdlbnQobmV3IEluc3BlY3RvckNTU0FnZW50KCkpCiAgICAg
LCBtX21haW5SZXNvdXJjZUlkZW50aWZpZXIoMCkKICAgICAsIG1fZXhwaXJlZENvbnNvbGVNZXNz
YWdlQ291bnQoMCkKLSAgICAsIG1fZ3JvdXBMZXZlbCgwKQogICAgICwgbV9wcmV2aW91c01lc3Nh
Z2UoMCkKICAgICAsIG1fc2V0dGluZ3NMb2FkZWQoZmFsc2UpCiAgICAgLCBtX2luc3BlY3RvckJh
Y2tlbmQoSW5zcGVjdG9yQmFja2VuZDo6Y3JlYXRlKHRoaXMpKQpAQCAtMzMzLDcgKzMzMiw3IEBA
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291
cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUKICAgICBpZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYWRkQ29uc29sZU1lc3NhZ2UobmV3IENvbnNvbGVNZXNzYWdlKHNvdXJjZSwg
dHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGFyZ3VtZW50cywgY2FsbFN0YWNrLCBtX2dyb3VwTGV2ZWwp
KTsKKyAgICBhZGRDb25zb2xlTWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2Uoc291cmNlLCB0eXBl
LCBsZXZlbCwgbWVzc2FnZSwgYXJndW1lbnRzLCBjYWxsU3RhY2spKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Ugc291cmNl
LCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCkKQEAgLTM0
MSw3ICszNDAsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZE1lc3NhZ2VUb0NvbnNv
bGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlCiAgICAgaWYgKCFlbmFibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGFkZENvbnNvbGVNZXNzYWdlKG5ldyBDb25zb2xlTWVz
c2FnZShzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VJRCwg
bV9ncm91cExldmVsKSk7CisgICAgYWRkQ29uc29sZU1lc3NhZ2UobmV3IENvbnNvbGVNZXNzYWdl
KHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZUlEKSk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkQ29uc29sZU1lc3NhZ2UoUGFzc093blB0
cjxDb25zb2xlTWVzc2FnZT4gY29uc29sZU1lc3NhZ2UpCkBAIC0zNzEsNyArMzcwLDYgQEAgdm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjbGVhckNvbnNvbGVNZXNzYWdlcygpCiAgICAgbV9jb25z
b2xlTWVzc2FnZXMuY2xlYXIoKTsKICAgICBtX2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50ID0g
MDsKICAgICBtX3ByZXZpb3VzTWVzc2FnZSA9IDA7Ci0gICAgbV9ncm91cExldmVsID0gMDsKICAg
ICBtX2luamVjdGVkU2NyaXB0SG9zdC0+cmVsZWFzZVdyYXBwZXJPYmplY3RHcm91cCgwIC8qIHJl
bGVhc2UgdGhlIGdyb3VwIGluIGFsbCBzY3JpcHRzICovLCAiY29uc29sZSIpOwogICAgIGlmICht
X2RvbUFnZW50KQogICAgICAgICBtX2RvbUFnZW50LT5yZWxlYXNlRGFuZ2xpbmdOb2RlcygpOwpA
QCAtMzgxLDE5ICszNzksMTIgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjbGVhckNvbnNv
bGVNZXNzYWdlcygpCiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c3RhcnRHcm91cChQYXNz
UmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxT
dGFjaz4gY2FsbFN0YWNrLCBib29sIGNvbGxhcHNlZCkKIHsKLSAgICArK21fZ3JvdXBMZXZlbDsK
LQotICAgIGFkZENvbnNvbGVNZXNzYWdlKG5ldyBDb25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3Vy
Y2UsIGNvbGxhcHNlZCA/IFN0YXJ0R3JvdXBDb2xsYXBzZWRNZXNzYWdlVHlwZSA6IFN0YXJ0R3Jv
dXBNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCAiIiwgYXJndW1lbnRzLCBjYWxsU3RhY2ss
IG1fZ3JvdXBMZXZlbCkpOworICAgIGFkZENvbnNvbGVNZXNzYWdlKG5ldyBDb25zb2xlTWVzc2Fn
ZShKU01lc3NhZ2VTb3VyY2UsIGNvbGxhcHNlZCA/IFN0YXJ0R3JvdXBDb2xsYXBzZWRNZXNzYWdl
VHlwZSA6IFN0YXJ0R3JvdXBNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCAiIiwgYXJndW1l
bnRzLCBjYWxsU3RhY2spKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjplbmRHcm91
cChNZXNzYWdlU291cmNlIHNvdXJjZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwpCiB7Ci0gICAgaWYgKCFtX2dyb3VwTGV2ZWwpCi0gICAgICAgIHJldHVybjsK
LQotICAgIC0tbV9ncm91cExldmVsOwotCi0gICAgYWRkQ29uc29sZU1lc3NhZ2UobmV3IENvbnNv
bGVNZXNzYWdlKHNvdXJjZSwgRW5kR3JvdXBNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBT
dHJpbmcoKSwgbGluZU51bWJlciwgc291cmNlVVJMLCBtX2dyb3VwTGV2ZWwpKTsKKyAgICBhZGRD
b25zb2xlTWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBFbmRHcm91cE1lc3NhZ2VU
eXBlLCBMb2dNZXNzYWdlTGV2ZWwsIFN0cmluZygpLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjptYXJrVGltZWxpbmUoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQpAQCAtODY5LDggKzg2MCwxMCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TAog
ICAgICAgICBtX3Jlc291cmNlQWdlbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCBs
b2FkZXIsIHJlc3BvbnNlKTsKIAogICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID49
IDQwMCkgewotICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIkZhaWxlZCB0byBs
b2FkIHJlc291cmNlOiB0aGUgc2VydmVyIHJlc3BvbmRlZCB3aXRoIGEgc3RhdHVzIG9mICIsIFN0
cmluZzo6bnVtYmVyKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpLCAiICgiLCByZXNwb25zZS5o
dHRwU3RhdHVzVGV4dCgpLCAnKScpOwotICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKE90aGVy
TWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdl
LCAwLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSk7CisgICAgICAgIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OlJlcXVlc3RJbmZvIGluZm87CisgICAgICAgIGlmIChtX3Jlc291cmNlQWdlbnQpCisg
ICAgICAgICAgICBpbmZvID0gbV9yZXNvdXJjZUFnZW50LT5yZXF1ZXN0SW5mb0ZvclJlcXVlc3RJ
ZChpZGVudGlmaWVyKTsKKyAgICAgICAgYWRkQ29uc29sZU1lc3NhZ2UobmV3IENvbnNvbGVNZXNz
YWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVs
LCBpbmZvLmh0dHBNZXRob2QsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCByZXNwb25zZS5odHRw
U3RhdHVzQ29kZSgpLCByZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpLCBpbmZvLmNhbGxTdGFjaykp
OwogICAgIH0KIH0KIApAQCAtOTA0LDkgKzg5Nyw5IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
CiAgICAgICAgIG1fdGltZWxpbmVBZ2VudC0+ZGlkRmluaXNoTG9hZGluZ1Jlc291cmNlKGlkZW50
aWZpZXIsIHRydWUsIDApOwogCiAgICAgU3RyaW5nIG1lc3NhZ2UgPSAiRmFpbGVkIHRvIGxvYWQg
cmVzb3VyY2UiOwotICAgICAgICBpZiAoIWVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkuaXNF
bXB0eSgpKQotICAgICAgICAgICAgbWVzc2FnZSArPSAiOiAiICsgZXJyb3IubG9jYWxpemVkRGVz
Y3JpcHRpb24oKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShPdGhlck1lc3NhZ2VTb3Vy
Y2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMCwgZXJyb3Iu
ZmFpbGluZ1VSTCgpKTsKKyAgICBpZiAoIWVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkuaXNF
bXB0eSgpKQorICAgICAgICBtZXNzYWdlICs9ICI6ICIgKyBlcnJvci5sb2NhbGl6ZWREZXNjcmlw
dGlvbigpOworICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoT3RoZXJNZXNzYWdlU291cmNlLCBMb2dN
ZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDAsIGVycm9yLmZhaWxpbmdV
UkwoKSk7CiAKICAgICBpZiAobV9yZXNvdXJjZUFnZW50KQogICAgICAgICBtX3Jlc291cmNlQWdl
bnQtPmRpZEZhaWxMb2FkaW5nKGlkZW50aWZpZXIsIGVycm9yKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBlNTdjMDg5MmEwODY0Y2U0M2ZjNzBhMDY2OWYzZmUz
MGVhYTAzMTM2Li4wODY1YTNhMDE2ZWVmYzU3MzBiNWJkNjY2MGIzMTM5MGY2MDY5YzVhIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0zNzAsNyArMzcwLDYgQEAg
cHJpdmF0ZToKICNlbmRpZgogICAgIFN0cmluZyBtX3Nob3dBZnRlclZpc2libGU7CiAgICAgUmVm
UHRyPE5vZGU+IG1faGlnaGxpZ2h0ZWROb2RlOwotICAgIHVuc2lnbmVkIG1fZ3JvdXBMZXZlbDsK
ICAgICBDb25zb2xlTWVzc2FnZSogbV9wcmV2aW91c01lc3NhZ2U7CiAgICAgYm9vbCBtX3NldHRp
bmdzTG9hZGVkOwogICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kPiBtX2luc3BlY3RvckJhY2tl
bmQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4
IDlkYWIyNGExMzg1NTU2OGM0YzE4YjIzYzZlNWVjNWQ1ODUyNjk3NzUuLmVkODc4ODIxMjI1MGI1
MTRjMTEzYzc1YzhlMDNjZjBjYzZhNjJlMzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC01Miw2ICs1Miw4IEBACiAjaW5jbHVkZSAiUmVzb3Vy
Y2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKKyNpbmNsdWRlICJT
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVz
dC5oIgpAQCAtMjkxLDYgKzI5MywxMiBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Omlk
ZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZQogdm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgbV9mcm9udGVuZC0+d2lsbFNlbmRSZXF1ZXN0KGlk
ZW50aWZpZXIsIGN1cnJlbnRUaW1lKCksIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KHJl
cXVlc3QpLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVkaXJlY3RSZXNwb25zZSkp
OworCisgICAgLy8gRG8gbm90IG1vZGlmeSBvcmlnaW5hbCBpbmZvIGluIGNhc2Ugb2YgcmVkaXJl
Y3QuCisgICAgaWYgKG1fcmVxdWVzdElkVG9SZXF1ZXN0SW5mby5jb250YWlucyhpZGVudGlmaWVy
KSkKKyAgICAgICAgcmV0dXJuOworICAgIFJlcXVlc3RJbmZvIGluZm8gPSB7Y3JlYXRlU2NyaXB0
Q2FsbFN0YWNrKFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSksIHJl
cXVlc3QuaHR0cE1ldGhvZCgpfTsKKyAgICBtX3JlcXVlc3RJZFRvUmVxdWVzdEluZm8uc2V0KGlk
ZW50aWZpZXIsIGluZm8pOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Om1hcmtS
ZXNvdXJjZUFzQ2FjaGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKQEAgLTMzMiwxMSArMzQw
LDEzIEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmluaXNoTG9hZGluZyh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmCiAgICAgICAgIGZpbmlzaFRpbWUgPSBjdXJy
ZW50VGltZSgpOwogCiAgICAgbV9mcm9udGVuZC0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVy
LCBmaW5pc2hUaW1lKTsKKyAgICBtX3JlcXVlc3RJZFRvUmVxdWVzdEluZm8ucmVtb3ZlKGlkZW50
aWZpZXIpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZhaWxMb2FkaW5n
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7
CiAgICAgbV9mcm9udGVuZC0+ZGlkRmFpbExvYWRpbmcoaWRlbnRpZmllciwgY3VycmVudFRpbWUo
KSwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7CisgICAgbV9yZXF1ZXN0SWRUb1JlcXVl
c3RJbmZvLnJlbW92ZShpZGVudGlmaWVyKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgY29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQpAQCAtMzg0LDYgKzM5NCw4IEBAIHN0
YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JGcmFtZVRyZWUo
RnJhbWUqIGZyYW1lLCBib29sIGR1CiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENv
bW1pdExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKICAgICBtX2Zyb250ZW5kLT5kaWRD
b21taXRMb2FkRm9yRnJhbWUoYnVpbGRPYmplY3RGb3JGcmFtZShsb2FkZXItPmZyYW1lKCkpLCBi
dWlsZE9iamVjdEZvckRvY3VtZW50TG9hZGVyKGxvYWRlcikpOworICAgIGlmIChsb2FkZXItPmZy
YW1lKCkgPT0gbV9wYWdlLT5tYWluRnJhbWUoKSkKKyAgICAgICAgbV9yZXF1ZXN0SWRUb1JlcXVl
c3RJbmZvLmNsZWFyKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZnJhbWVE
ZXRhY2hlZEZyb21QYXJlbnQoRnJhbWUqIGZyYW1lKQpAQCAtNDUxLDYgKzQ2MywxMSBAQCBGcmFt
ZSogSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZnJhbWVGb3JJZCh1bnNpZ25lZCBsb25nIGZyYW1l
SWQpCiAgICAgcmV0dXJuIDA7CiB9CiAKK0luc3BlY3RvclJlc291cmNlQWdlbnQ6OlJlcXVlc3RJ
bmZvIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnJlcXVlc3RJbmZvRm9yUmVxdWVzdElkKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXF1ZXN0SWRUb1Jl
cXVlc3RJbmZvLmdldChpZGVudGlmaWVyKTsKK30KKwogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpjYWNoZWRSZXNvdXJjZXMoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG9iamVjdCkKIHsK
ICAgICAqb2JqZWN0ID0gYnVpbGRPYmplY3RGb3JGcmFtZVRyZWUobV9wYWdlLT5tYWluRnJhbWUo
KSwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKaW5k
ZXggMWU3N2Q1OGM4NTM1YmQ3ZWE2NjM4ZDY2NDY0ZDM2ZDY5Zjg1ZTUxNS4uYmM3MjRmNTVlNzM5
ZGE5YWE2NDAyYmJmZWQ0NmZiMzJhM2E4MzY4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuaApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKIAorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTU2LDYgKzU3LDcgQEAg
Y2xhc3MgUGFnZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwogY2xhc3Mg
U2hhcmVkQnVmZmVyOwogCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQpAQCAtOTgsNyArMTAwLDEz
IEBAIHB1YmxpYzoKIAogICAgIEZyYW1lKiBmcmFtZUZvcklkKHVuc2lnbmVkIGxvbmcpOwogCi0g
ICAgLy8gQ2FsbGVkIGZyb20gZnJvbnRlbmQgCisgICAgc3RydWN0IFJlcXVlc3RJbmZvIHsKKyAg
ICAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrOworICAgICAgICBTdHJpbmcg
aHR0cE1ldGhvZDsKKyAgICB9OworICAgIFJlcXVlc3RJbmZvIHJlcXVlc3RJbmZvRm9yUmVxdWVz
dElkKHVuc2lnbmVkIGxvbmcpIGNvbnN0OworCisgICAgLy8gQ2FsbGVkIGZyb20gZnJvbnRlbmQK
ICAgICB2b2lkIGNhY2hlZFJlc291cmNlcyhSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiopOwogICAg
IHZvaWQgcmVzb3VyY2VDb250ZW50KHVuc2lnbmVkIGxvbmcgZnJhbWVJRCwgY29uc3QgU3RyaW5n
JiB1cmwsIGJvb2wgYmFzZTY0RW5jb2RlLCBTdHJpbmcqIGNvbnRlbnQpOwogCkBAIC0xMDcsNiAr
MTE1LDggQEAgcHJpdmF0ZToKIAogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBJbnNwZWN0b3JGcm9u
dGVuZCogbV9mcm9udGVuZDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgUmVx
dWVzdEluZm8+IFJlcXVlc3RJZFRvUmVxdWVzdEluZm87CisgICAgUmVxdWVzdElkVG9SZXF1ZXN0
SW5mbyBtX3JlcXVlc3RJZFRvUmVxdWVzdEluZm87CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcu
anMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKaW5kZXggNzM3
Yjg0ZmFkN2I4NjU0NTk3Njg1N2VmMjQzYjNkNjQ0ODVhY2E0Mi4uMTAwMmU2YWEzNGFmYWIxOWNk
ZjllYzdhNzcwNWQ4MjM1YzUyZTlmZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0NvbnNvbGVWaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
b25zb2xlVmlldy5qcwpAQCAtNTAsOSArNTAsOCBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcg
PSBmdW5jdGlvbihkcmF3ZXIpCiAgICAgdGhpcy5wcm9tcHQgPSBuZXcgV2ViSW5zcGVjdG9yLlRl
eHRQcm9tcHQodGhpcy5wcm9tcHRFbGVtZW50LCB0aGlzLmNvbXBsZXRpb25zLmJpbmQodGhpcyks
IEV4cHJlc3Npb25TdG9wQ2hhcmFjdGVycyArICIuIik7CiAgICAgdGhpcy5wcm9tcHQuaGlzdG9y
eSA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jb25zb2xlSGlzdG9yeTsKIAotICAgIHRoaXMudG9w
R3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cChudWxsLCAwKTsKKyAgICB0aGlz
LnRvcEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlR3JvdXAobnVsbCk7CiAgICAgdGhp
cy5tZXNzYWdlc0VsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMudG9wR3JvdXAuZWxlbWVudCwgdGhp
cy5wcm9tcHRFbGVtZW50KTsKLSAgICB0aGlzLmdyb3VwTGV2ZWwgPSAwOwogICAgIHRoaXMuY3Vy
cmVudEdyb3VwID0gdGhpcy50b3BHcm91cDsKIAogICAgIHRoaXMudG9nZ2xlQ29uc29sZUJ1dHRv
biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlLXN0YXR1cy1iYXItaXRlbSIpOwpA
QCAtNzIsNyArNzEsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcgPSBmdW5jdGlvbihkcmF3
ZXIpCiAgICAgZnVuY3Rpb24gY3JlYXRlRmlsdGVyRWxlbWVudChjYXRlZ29yeSkgewogICAgICAg
ICB2YXIgY2F0ZWdvcnlFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKICAg
ICAgICAgY2F0ZWdvcnlFbGVtZW50LmNhdGVnb3J5ID0gY2F0ZWdvcnk7Ci0gICAgICAgIGNhdGVn
b3J5RWxlbWVudC5hZGRTdHlsZUNsYXNzKGNhdGVnb3J5RWxlbWVudC5jYXRlZ29yeSk7ICAgICAg
ICAgICAgCisgICAgICAgIGNhdGVnb3J5RWxlbWVudC5hZGRTdHlsZUNsYXNzKGNhdGVnb3J5RWxl
bWVudC5jYXRlZ29yeSk7CiAgICAgICAgIGNhdGVnb3J5RWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJjbGljayIsIHVwZGF0ZUZpbHRlckhhbmRsZXIsIGZhbHNlKTsKIAogICAgICAgICB2YXIgbGFi
ZWwgPSBjYXRlZ29yeS50b1N0cmluZygpOwpAQCAtODEsNyArODAsNyBAQCBXZWJJbnNwZWN0b3Iu
Q29uc29sZVZpZXcgPSBmdW5jdGlvbihkcmF3ZXIpCiAgICAgICAgIHRoaXMuZmlsdGVyQmFyRWxl
bWVudC5hcHBlbmRDaGlsZChjYXRlZ29yeUVsZW1lbnQpOwogICAgICAgICByZXR1cm4gY2F0ZWdv
cnlFbGVtZW50OwogICAgIH0KLSAgICAKKwogICAgIHRoaXMuYWxsRWxlbWVudCA9IGNyZWF0ZUZp
bHRlckVsZW1lbnQuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFsbCIpKTsKICAg
ICBjcmVhdGVEaXZpZGVyRWxlbWVudC5jYWxsKHRoaXMpOwogICAgIHRoaXMuZXJyb3JFbGVtZW50
ID0gY3JlYXRlRmlsdGVyRWxlbWVudC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
RXJyb3JzIikpOwpAQCAtOTIsNyArOTEsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcgPSBm
dW5jdGlvbihkcmF3ZXIpCiAgICAgdGhpcy5fcmVnaXN0ZXJTaG9ydGN1dHMoKTsKIAogICAgIHRo
aXMubWVzc2FnZXNFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5f
aGFuZGxlQ29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMpLCB0cnVlKTsKLSAgICAKKwogICAgIHRo
aXMuX2N1c3RvbUZvcm1hdHRlcnMgPSB7CiAgICAgICAgICJvYmplY3QiOiB0aGlzLl9mb3JtYXRv
YmplY3QsCiAgICAgICAgICJhcnJheSI6ICB0aGlzLl9mb3JtYXRhcnJheSwKQEAgLTExMyw3ICsx
MTIsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAg
IHRoaXMuZmlsdGVyKGUudGFyZ2V0LCBzZWxlY3RNdWx0aXBsZSk7CiAgICAgfSwKLSAgICAKKwog
ICAgIGZpbHRlcjogZnVuY3Rpb24odGFyZ2V0LCBzZWxlY3RNdWx0aXBsZSkKICAgICB7CiAgICAg
ICAgIGZ1bmN0aW9uIHVuc2VsZWN0QWxsKCkKQEAgLTEyMiwxMyArMTIxLDEzIEBAIFdlYkluc3Bl
Y3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmVycm9yRWxl
bWVudC5yZW1vdmVTdHlsZUNsYXNzKCJzZWxlY3RlZCIpOwogICAgICAgICAgICAgdGhpcy53YXJu
aW5nRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJzZWxlY3RlZCIpOwogICAgICAgICAgICAgdGhp
cy5sb2dFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoInNlbGVjdGVkIik7Ci0gICAgICAgICAgICAK
KwogICAgICAgICAgICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiZmls
dGVyLWFsbCIpOwogICAgICAgICAgICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQucmVtb3ZlU3R5bGVD
bGFzcygiZmlsdGVyLWVycm9ycyIpOwogICAgICAgICAgICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQu
cmVtb3ZlU3R5bGVDbGFzcygiZmlsdGVyLXdhcm5pbmdzIik7CiAgICAgICAgICAgICB0aGlzLm1l
c3NhZ2VzRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJmaWx0ZXItbG9ncyIpOwogICAgICAgICB9
Ci0gICAgICAgIAorCiAgICAgICAgIHZhciB0YXJnZXRGaWx0ZXJDbGFzcyA9ICJmaWx0ZXItIiAr
IHRhcmdldC5jYXRlZ29yeS50b0xvd2VyQ2FzZSgpOwogCiAgICAgICAgIGlmICh0YXJnZXQuY2F0
ZWdvcnkgPT0gIkFsbCIpIHsKQEAgLTE0NSwxOCArMTQ0LDE4IEBAIFdlYkluc3BlY3Rvci5Db25z
b2xlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlc0VsZW1l
bnQucmVtb3ZlU3R5bGVDbGFzcygiZmlsdGVyLWFsbCIpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghc2VsZWN0TXVsdGlwbGUpIHsKICAgICAgICAg
ICAgIC8vIElmIG11bHRpcGxlIHNlbGVjdGlvbiBpcyBvZmYsIHdlIHdhbnQgdG8gdW5zZWxlY3Qg
ZXZlcnl0aGluZyBlbHNlCiAgICAgICAgICAgICAvLyBhbmQganVzdCBzZWxlY3Qgb3Vyc2VsdmVz
LgogICAgICAgICAgICAgdW5zZWxlY3RBbGwuY2FsbCh0aGlzKTsKLSAgICAgICAgICAgIAorCiAg
ICAgICAgICAgICB0YXJnZXQuYWRkU3R5bGVDbGFzcygic2VsZWN0ZWQiKTsKICAgICAgICAgICAg
IHRoaXMubWVzc2FnZXNFbGVtZW50LmFkZFN0eWxlQ2xhc3ModGFyZ2V0RmlsdGVyQ2xhc3MpOwot
ICAgICAgICAgICAgCisKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICAK
KwogICAgICAgICBpZiAodGFyZ2V0Lmhhc1N0eWxlQ2xhc3MoInNlbGVjdGVkIikpIHsKICAgICAg
ICAgICAgIC8vIElmIHNlbGVjdE11bHRpcGxlIGlzIHR1cm5lZCBvbiwgYW5kIHdlIHdlcmUgc2Vs
ZWN0ZWQsIHdlIGp1c3QKICAgICAgICAgICAgIC8vIHdhbnQgdG8gdW5zZWxlY3Qgb3Vyc2VsdmVz
LgpAQCAtMTY5LDcgKzE2OCw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzRWxlbWVudC5hZGRTdHlsZUNsYXNzKHRhcmdl
dEZpbHRlckNsYXNzKTsKICAgICAgICAgfQogICAgIH0sCi0gICAgCisKICAgICBfdG9nZ2xlQ29u
c29sZUJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuZHJhd2Vy
LnZpc2libGVWaWV3ID0gdGhpczsKQEAgLTE5Miw3ICsxOTEsNyBAQCBXZWJJbnNwZWN0b3IuQ29u
c29sZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgYWZ0ZXJTaG93OiBmdW5jdGlvbigpCiAgICAg
ewotICAgICAgICBXZWJJbnNwZWN0b3IuY3VycmVudEZvY3VzRWxlbWVudCA9IHRoaXMucHJvbXB0
RWxlbWVudDsgIAorICAgICAgICBXZWJJbnNwZWN0b3IuY3VycmVudEZvY3VzRWxlbWVudCA9IHRo
aXMucHJvbXB0RWxlbWVudDsKICAgICB9LAogCiAgICAgaGlkZTogZnVuY3Rpb24oKQpAQCAtMjMw
LDE3ICsyMjksMTIgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5tZXNzYWdlcy5wdXNoKG1zZyk7CiAKICAgICAgICAgaWYgKG1zZy50eXBlID09
PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuRW5kR3JvdXApIHsKLSAg
ICAgICAgICAgIGlmICh0aGlzLmdyb3VwTGV2ZWwgPCAxKQotICAgICAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICAgICAgdGhpcy5ncm91cExldmVsLS07Ci0KLSAgICAgICAgICAgIHRoaXMu
Y3VycmVudEdyb3VwID0gdGhpcy5jdXJyZW50R3JvdXAucGFyZW50R3JvdXA7CisgICAgICAgICAg
ICB2YXIgcGFyZW50R3JvdXAgPSB0aGlzLmN1cnJlbnRHcm91cC5wYXJlbnRHcm91cAorICAgICAg
ICAgICAgaWYgKHBhcmVudEdyb3VwKQorICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEdyb3Vw
ID0gcGFyZW50R3JvdXA7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAobXNnLnR5
cGUgPT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5TdGFydEdyb3Vw
IHx8IG1zZy50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUu
U3RhcnRHcm91cENvbGxhcHNlZCkgewotICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBMZXZlbCsr
OwotCi0gICAgICAgICAgICAgICAgdmFyIGdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xl
R3JvdXAodGhpcy5jdXJyZW50R3JvdXAsIHRoaXMuZ3JvdXBMZXZlbCk7CisgICAgICAgICAgICAg
ICAgdmFyIGdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlR3JvdXAodGhpcy5jdXJyZW50
R3JvdXApOwogICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEdyb3VwLm1lc3NhZ2VzRWxlbWVu
dC5hcHBlbmRDaGlsZChncm91cC5lbGVtZW50KTsKICAgICAgICAgICAgICAgICB0aGlzLmN1cnJl
bnRHcm91cCA9IGdyb3VwOwogICAgICAgICAgICAgfQpAQCAtMjU1LDcgKzI0OSw3IEBAIFdlYklu
c3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2YXIgbXNn
ID0gdGhpcy5wcmV2aW91c01lc3NhZ2U7CiAgICAgICAgIHZhciBwcmV2UmVwZWF0Q291bnQgPSBt
c2cudG90YWxSZXBlYXRDb3VudDsKLSAgICAgICAgCisKICAgICAgICAgaWYgKCF0aGlzLmNvbW1h
bmRTaW5jZVByZXZpb3VzTWVzc2FnZSkgewogICAgICAgICAgICAgbXNnLnJlcGVhdERlbHRhID0g
Y291bnQgLSBwcmV2UmVwZWF0Q291bnQ7CiAgICAgICAgICAgICBtc2cucmVwZWF0Q291bnQgPSBt
c2cucmVwZWF0Q291bnQgKyBtc2cucmVwZWF0RGVsdGE7CkBAIC0yNjMsNyArMjU3LDcgQEAgV2Vi
SW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIG1zZy5fdXBk
YXRlUmVwZWF0Q291bnQoKTsKICAgICAgICAgICAgIHRoaXMuX2luY3JlbWVudEVycm9yV2Fybmlu
Z0NvdW50KG1zZyk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB2YXIgbXNnQ29weSA9
IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UobXNnLnNvdXJjZSwgbXNnLnR5cGUsIG1z
Zy5sZXZlbCwgbXNnLmxpbmUsIG1zZy51cmwsIG1zZy5ncm91cExldmVsLCBjb3VudCAtIHByZXZS
ZXBlYXRDb3VudCwgbXNnLl9tZXNzYWdlVGV4dCwgbXNnLl9wYXJhbWV0ZXJzLCBtc2cuX3N0YWNr
VHJhY2UpOworICAgICAgICAgICAgdmFyIG1zZ0NvcHkgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnNv
bGVNZXNzYWdlKG1zZy5zb3VyY2UsIG1zZy50eXBlLCBtc2cubGV2ZWwsIG1zZy5saW5lLCBtc2cu
dXJsLCBjb3VudCAtIHByZXZSZXBlYXRDb3VudCwgbXNnLl9tZXNzYWdlVGV4dCwgbXNnLl9wYXJh
bWV0ZXJzLCBtc2cuX3N0YWNrVHJhY2UsIG1zZy5faHR0cE1ldGhvZCwgbXNnLl9odHRwU3RhdHVz
Q29kZSk7CiAgICAgICAgICAgICBtc2dDb3B5LnRvdGFsUmVwZWF0Q291bnQgPSBjb3VudDsKICAg
ICAgICAgICAgIG1zZ0NvcHkuX2Zvcm1hdE1lc3NhZ2UoKTsKICAgICAgICAgICAgIHRoaXMuYWRk
TWVzc2FnZShtc2dDb3B5KTsKQEAgLTI5Myw3ICsyODcsNiBAQCBXZWJJbnNwZWN0b3IuQ29uc29s
ZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMubWVzc2FnZXMgPSBbXTsKIAotICAg
ICAgICB0aGlzLmdyb3VwTGV2ZWwgPSAwOwogICAgICAgICB0aGlzLmN1cnJlbnRHcm91cCA9IHRo
aXMudG9wR3JvdXA7CiAgICAgICAgIHRoaXMudG9wR3JvdXAubWVzc2FnZXNFbGVtZW50LnJlbW92
ZUNoaWxkcmVuKCk7CiAKQEAgLTYzNCw3MCArNjI3LDExNCBAQCBXZWJJbnNwZWN0b3IuQ29uc29s
ZVZpZXcucHJvdG90eXBlID0gewogCiBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBl
Ll9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZTsKIAotV2ViSW5zcGVjdG9y
LkNvbnNvbGVNZXNzYWdlID0gZnVuY3Rpb24oc291cmNlLCB0eXBlLCBsZXZlbCwgbGluZSwgdXJs
LCBncm91cExldmVsLCByZXBlYXRDb3VudCwgbWVzc2FnZSwgcGFyYW1ldGVycywgc3RhY2tUcmFj
ZSkKK1dlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZSA9IGZ1bmN0aW9uKHNvdXJjZSwgdHlwZSwg
bGV2ZWwsIGxpbmUsIHVybCwgcmVwZWF0Q291bnQsIG1lc3NhZ2UsIHBhcmFtZXRlcnMsIHN0YWNr
VHJhY2UsIGh0dHBNZXRob2QsIGh0dHBTdGF0dXNDb2RlKQogewogICAgIHRoaXMuc291cmNlID0g
c291cmNlOwogICAgIHRoaXMudHlwZSA9IHR5cGU7CiAgICAgdGhpcy5sZXZlbCA9IGxldmVsOwog
ICAgIHRoaXMubGluZSA9IGxpbmU7CiAgICAgdGhpcy51cmwgPSB1cmw7Ci0gICAgdGhpcy5ncm91
cExldmVsID0gZ3JvdXBMZXZlbDsKICAgICB0aGlzLnJlcGVhdENvdW50ID0gcmVwZWF0Q291bnQ7
CiAgICAgdGhpcy5yZXBlYXREZWx0YSA9IHJlcGVhdENvdW50OwogICAgIHRoaXMudG90YWxSZXBl
YXRDb3VudCA9IHJlcGVhdENvdW50OwogICAgIHRoaXMuX21lc3NhZ2VUZXh0ID0gbWVzc2FnZTsK
ICAgICB0aGlzLl9wYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKICAgICB0aGlzLl9zdGFja1RyYWNl
ID0gc3RhY2tUcmFjZTsKKyAgICB0aGlzLl9odHRwTWV0aG9kID0gaHR0cE1ldGhvZDsKKyAgICB0
aGlzLl9odHRwU3RhdHVzQ29kZSA9IGh0dHBTdGF0dXNDb2RlOwogICAgIHRoaXMuX2Zvcm1hdE1l
c3NhZ2UoKTsKIH0KIAogV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLmNyZWF0ZVRleHRNZXNz
YWdlID0gZnVuY3Rpb24odGV4dCwgbGV2ZWwpCiB7CiAgICAgbGV2ZWwgPSBsZXZlbCB8fCBXZWJJ
bnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkxvZzsKLSAgICByZXR1cm4gbmV3
IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZShXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2Uu
TWVzc2FnZVNvdXJjZS5KUywgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBl
LkxvZywgbGV2ZWwsIDAsIG51bGwsIG51bGwsIDEsIG51bGwsIFt0ZXh0XSwgbnVsbCk7CisgICAg
cmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UoV2ViSW5zcGVjdG9yLkNvbnNv
bGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuSlMsIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5N
ZXNzYWdlVHlwZS5Mb2csIGxldmVsLCAwLCBudWxsLCAxLCBudWxsLCBbdGV4dF0sIG51bGwpOwog
fQogCiBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlID0gewogICAgIF9mb3Jt
YXRNZXNzYWdlOiBmdW5jdGlvbigpCiAgICAgeworICAgICAgICBpZiAodGhpcy5fc3RhY2tUcmFj
ZSkgeworICAgICAgICAgICAgdmFyIHRvcENhbGxGcmFtZSA9IHRoaXMuX3N0YWNrVHJhY2VbMF07
CisgICAgICAgICAgICB2YXIgbWVzc2FnZVVybCA9IHRvcENhbGxGcmFtZS5zb3VyY2VVUkw7Cisg
ICAgICAgICAgICB2YXIgbWVzc2FnZUxpbmUgPSB0b3BDYWxsRnJhbWUubGluZU51bWJlcjsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhciBtZXNzYWdlVXJsID0gdGhpcy51cmw7Cisg
ICAgICAgICAgICB2YXIgbWVzc2FnZUxpbmUgPSB0aGlzLmxpbmU7CisgICAgICAgIH0KKworICAg
ICAgICB2YXIgaGlkZVN0YWNrVHJhY2UgPSBmYWxzZTsKKyAgICAgICAgdmFyIG1lc3NhZ2VUZXh0
OwogICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkgewotICAgICAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuQXNzZXJ0OgogICAgICAgICAgICAgY2Fz
ZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuVHJhY2U6Ci0gICAgICAg
ICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5VbmNhdWdo
dEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICB2YXIgb2wgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJvbCIpOwotICAgICAgICAgICAgICAgIG9sLmNsYXNzTmFtZSA9ICJvdXRsaW5lLWRpc2Ns
b3N1cmUiOwotICAgICAgICAgICAgICAgIHZhciB0cmVlT3V0bGluZSA9IG5ldyBUcmVlT3V0bGlu
ZShvbCk7Ci0gICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VUZXh0OwotICAgICAgICAgICAgICAg
IGlmICh0aGlzLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlw
ZS5Bc3NlcnQpCi0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VUZXh0ID0gdGhpcy5fZm9ybWF0
KHRoaXMuX3BhcmFtZXRlcnMpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlRyYWNlKQotICAgICAg
ICAgICAgICAgICAgICBtZXNzYWdlVGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJjb25z
b2xlLnRyYWNlKCkiKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IG1lc3NhZ2VUZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGhpcy5fbWVzc2FnZVRleHQp
OwotCi0gICAgICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKLSAgICAgICAgICAgICAgICB0aGlzLl9hZGRNZXNzYWdlSGVhZGVyKGNvbnRlbnQs
IG1lc3NhZ2VUZXh0KTsKLSAgICAgICAgICAgICAgICB2YXIgcm9vdCA9IG5ldyBUcmVlRWxlbWVu
dChjb250ZW50LCBudWxsLCB0cnVlKTsKLSAgICAgICAgICAgICAgICBjb250ZW50LnRyZWVFbGVt
ZW50Rm9yVGVzdCA9IHJvb3Q7Ci0gICAgICAgICAgICAgICAgdHJlZU91dGxpbmUuYXBwZW5kQ2hp
bGQocm9vdCk7Ci0gICAgICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gV2ViSW5zcGVjdG9y
LkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlRyYWNlKQotICAgICAgICAgICAgICAgICAgICBy
b290LmV4cGFuZCgpOwotCi0gICAgICAgICAgICAgICAgdGhpcy5fcG9wdWxhdGVTdGFja1RyYWNl
VHJlZUVsZW1lbnQocm9vdCk7Ci0gICAgICAgICAgICAgICAgdGhpcy5mb3JtYXR0ZWRNZXNzYWdl
ID0gb2w7CisgICAgICAgICAgICAgICAgbWVzc2FnZVRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgiY29uc29sZS50cmFjZSgpIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5PYmplY3Q6
Ci0gICAgICAgICAgICAgICAgdmFyIG9iaiA9IHRoaXMuX3BhcmFtZXRlcnMgPyB0aGlzLl9wYXJh
bWV0ZXJzWzBdIDogdW5kZWZpbmVkOwotICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVkTWVz
c2FnZSA9IHRoaXMuX2Zvcm1hdChbIiVPIiwgb2JqXSk7CisgICAgICAgICAgICBjYXNlIFdlYklu
c3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5VbmNhdWdodEV4Y2VwdGlvbjoKKyAg
ICAgICAgICAgICAgICBtZXNzYWdlVGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMu
X21lc3NhZ2VUZXh0KTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
V2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkxvZzoKKyAgICAgICAgICAg
ICAgICBpZiAodGhpcy5faHR0cFN0YXR1c0NvZGUpIHsKKyAgICAgICAgICAgICAgICAgICAgbWVz
c2FnZVRleHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICAg
ICAgICAgIGlmICh0aGlzLl9odHRwTWV0aG9kKQorICAgICAgICAgICAgICAgICAgICAgICAgbWVz
c2FnZVRleHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGhpcy5faHR0cE1l
dGhvZCArICIgIikpOworICAgICAgICAgICAgICAgICAgICBtZXNzYWdlVGV4dC5hcHBlbmRDaGls
ZChXZWJJbnNwZWN0b3IubGlua2lmeVVSTEFzTm9kZSh0aGlzLnVybCkpOworICAgICAgICAgICAg
ICAgICAgICBtZXNzYWdlVGV4dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgi
ICIgKyB0aGlzLl9odHRwU3RhdHVzQ29kZSArICIgKCIgKyB0aGlzLl9tZXNzYWdlVGV4dCArICIp
IikpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3N0YWNrVHJhY2UpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHRoaXMudXJsIGlzIHRoZSB1cmwgb2YgcmVxdWVzdGVkIHJl
c291cmNlLCBub3QgdGhlIGNvZGUgd2hpY2ggaXNzdWVkIHRoZSByZXF1ZXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gYXZvaWQgdXNpbmcgaXQgYXMgbWVzc2FnZVVybAorICAgICAgICAg
ICAgICAgICAgICAgICAgbWVzc2FnZVVybCA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1lc3NhZ2VMaW5lID0gMDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIHZhciBhcmdzID0gdGhpcy5fcGFyYW1ldGVycyB8fCBbdGhpcy5f
bWVzc2FnZVRleHRdOwotICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVkTWVzc2FnZSA9IHRo
aXMuX2Zvcm1hdChhcmdzKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkgewor
ICAgICAgICAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNz
YWdlVHlwZS5Bc3NlcnQ6CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXJncyA9IFtXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkFzc2VydGlvbiBmYWlsZWQ6IildOworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHRoaXMuX3BhcmFtZXRlcnMpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXJncyA9IGFyZ3MuY29uY2F0KHRoaXMuX3BhcmFtZXRlcnMpOworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNv
bnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLk9iamVjdDoKKyAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBvYmogPSB0aGlzLl9wYXJhbWV0ZXJzID8gdGhpcy5fcGFyYW1ldGVyc1swXSA6IHVuZGVm
aW5lZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhcmdzID0gWyIlTyIsIG9ial07Cisg
ICAgICAgICAgICAgICAgICAgICAgICBoaWRlU3RhY2tUcmFjZSA9IHRydWU7CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBhcmdzID0gdGhpcy5fcGFyYW1ldGVycyB8fCBbdGhpcy5f
bWVzc2FnZVRleHRdOworICAgICAgICAgICAgICAgICAgICAgICAgaGlkZVN0YWNrVHJhY2UgPSB0
cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtZXNzYWdlVGV4dCA9IHRo
aXMuX2Zvcm1hdChhcmdzKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisg
ICAgICAgIHRoaXMuX2Zvcm1hdHRlZE1lc3NhZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
cGFuIik7CisgICAgICAgIHRoaXMuX2Zvcm1hdHRlZE1lc3NhZ2UuY2xhc3NOYW1lID0gImNvbnNv
bGUtbWVzc2FnZS10ZXh0IHNvdXJjZS1jb2RlIjsKKworICAgICAgICBpZiAobWVzc2FnZVVybCAm
JiBtZXNzYWdlVXJsICE9PSAidW5kZWZpbmVkIikgeworICAgICAgICAgICAgdmFyIHVybEVsZW1l
bnQgPSBXZWJJbnNwZWN0b3IubGlua2lmeVJlc291cmNlQXNOb2RlKG1lc3NhZ2VVcmwsICJzY3Jp
cHRzIiwgbWVzc2FnZUxpbmUsICJjb25zb2xlLW1lc3NhZ2UtdXJsIik7CisgICAgICAgICAgICB0
aGlzLl9mb3JtYXR0ZWRNZXNzYWdlLmFwcGVuZENoaWxkKHVybEVsZW1lbnQpOworICAgICAgICB9
CisKKyAgICAgICAgdGhpcy5fZm9ybWF0dGVkTWVzc2FnZS5hcHBlbmRDaGlsZChtZXNzYWdlVGV4
dCk7CisKKyAgICAgICAgaWYgKHRoaXMuX3N0YWNrVHJhY2UgJiYgIWhpZGVTdGFja1RyYWNlKSB7
CisgICAgICAgICAgICB2YXIgb2wgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOworICAg
ICAgICAgICAgb2wuY2xhc3NOYW1lID0gIm91dGxpbmUtZGlzY2xvc3VyZSI7CisgICAgICAgICAg
ICB2YXIgdHJlZU91dGxpbmUgPSBuZXcgVHJlZU91dGxpbmUob2wpOworCisgICAgICAgICAgICB2
YXIgY29udGVudCA9IHRoaXMuX2Zvcm1hdHRlZE1lc3NhZ2U7CisgICAgICAgICAgICB2YXIgcm9v
dCA9IG5ldyBUcmVlRWxlbWVudChjb250ZW50LCBudWxsLCB0cnVlKTsKKyAgICAgICAgICAgIGNv
bnRlbnQudHJlZUVsZW1lbnRGb3JUZXN0ID0gcm9vdDsKKyAgICAgICAgICAgIHRyZWVPdXRsaW5l
LmFwcGVuZENoaWxkKHJvb3QpOworICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gV2ViSW5z
cGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlRyYWNlKQorICAgICAgICAgICAgICAg
IHJvb3QuZXhwYW5kKCk7CisKKyAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRlU3RhY2tUcmFjZVRy
ZWVFbGVtZW50KHJvb3QpOworICAgICAgICAgICAgdGhpcy5fZm9ybWF0dGVkTWVzc2FnZSA9IG9s
OworICAgICAgICB9CisKICAgICAgICAgLy8gVGhpcyBpcyB1c2VkIGZvciBpbmxpbmUgbWVzc2Fn
ZSBidWJibGVzIGluIFNvdXJjZUZyYW1lcywgb3Igb3RoZXIgcGxhaW4tdGV4dCByZXByZXNlbnRh
dGlvbnMuCi0gICAgICAgIHRoaXMubWVzc2FnZSA9IHRoaXMuZm9ybWF0dGVkTWVzc2FnZS50ZXh0
Q29udGVudDsKKyAgICAgICAgdGhpcy5tZXNzYWdlID0gdGhpcy5fZm9ybWF0dGVkTWVzc2FnZS50
ZXh0Q29udGVudDsKICAgICB9LAogCiAgICAgaXNFcnJvck9yV2FybmluZzogZnVuY3Rpb24oKQpA
QCAtNzkwLDI3ICs4MjcsNiBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBl
ID0gewogCiAgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50OwogCi0gICAgICAgIHN3aXRj
aCAodGhpcy5zb3VyY2UpIHsKLSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlLk1lc3NhZ2VTb3VyY2UuSFRNTDoKLSAgICAgICAgICAgICAgICBlbGVtZW50LmFkZFN0
eWxlQ2xhc3MoImNvbnNvbGUtaHRtbC1zb3VyY2UiKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3Vy
Y2UuV01MOgotICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFzcygiY29uc29sZS13
bWwtc291cmNlIik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFdl
Ykluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLlhNTDoKLSAgICAgICAgICAg
ICAgICBlbGVtZW50LmFkZFN0eWxlQ2xhc3MoImNvbnNvbGUteG1sLXNvdXJjZSIpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1l
c3NhZ2UuTWVzc2FnZVNvdXJjZS5KUzoKLSAgICAgICAgICAgICAgICBlbGVtZW50LmFkZFN0eWxl
Q2xhc3MoImNvbnNvbGUtanMtc291cmNlIik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLkNT
UzoKLSAgICAgICAgICAgICAgICBlbGVtZW50LmFkZFN0eWxlQ2xhc3MoImNvbnNvbGUtY3NzLXNv
dXJjZSIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5PdGhlcjoKLSAgICAgICAgICAgICAg
ICBlbGVtZW50LmFkZFN0eWxlQ2xhc3MoImNvbnNvbGUtb3RoZXItc291cmNlIik7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQogICAgICAgICBzd2l0Y2ggKHRoaXMubGV2ZWwp
IHsKICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VM
ZXZlbC5UaXA6CiAgICAgICAgICAgICAgICAgZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJjb25zb2xl
LXRpcC1sZXZlbCIpOwpAQCAtODM4LDEyICs4NTQsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZU1l
c3NhZ2UucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAodGhpcy50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2UuTWVzc2FnZVR5cGUuVHJhY2UgfHwKLSAgICAgICAgICAgIHRoaXMudHlwZSA9PT0gV2ViSW5z
cGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkFzc2VydCB8fAotICAgICAgICAgICAg
dGhpcy50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuVW5j
YXVnaHRFeGNlcHRpb24pCi0gICAgICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZm9y
bWF0dGVkTWVzc2FnZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuX2FkZE1lc3Nh
Z2VIZWFkZXIoZWxlbWVudCwgdGhpcy5mb3JtYXR0ZWRNZXNzYWdlKTsKKyAgICAgICAgZWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9mb3JtYXR0ZWRNZXNzYWdlKTsKIAogICAgICAgICBpZiAodGhp
cy5yZXBlYXRDb3VudCA+IDEpCiAgICAgICAgICAgICB0aGlzLl91cGRhdGVSZXBlYXRDb3VudCgp
OwpAQCAtODYzLDcgKzg3NCw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICBtZXNzYWdlVGV4dEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoZnVuY3Rpb25OYW1lKSk7CiAgICAgICAgICAgICBjb250ZW50LmFw
cGVuZENoaWxkKG1lc3NhZ2VUZXh0RWxlbWVudCk7CiAKLSAgICAgICAgICAgIHZhciB1cmxFbGVt
ZW50ID0gV2ViSW5zcGVjdG9yLmxpbmtpZnlSZXNvdXJjZUFzTm9kZShmcmFtZS5zb3VyY2VVUkws
ICJzY3JpcHRzIiwgZnJhbWUubGluZU51bWJlciwgImNvbnNvbGUtbWVzc2FnZS11cmwiKTsgCisg
ICAgICAgICAgICB2YXIgdXJsRWxlbWVudCA9IFdlYkluc3BlY3Rvci5saW5raWZ5UmVzb3VyY2VB
c05vZGUoZnJhbWUuc291cmNlVVJMLCAic2NyaXB0cyIsIGZyYW1lLmxpbmVOdW1iZXIsICJjb25z
b2xlLW1lc3NhZ2UtdXJsIik7CiAgICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKHVybEVs
ZW1lbnQpOwogCiAgICAgICAgICAgICB2YXIgdHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQo
Y29udGVudCk7CkBAIC04NzEsMjYgKzg4MiwxMSBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2UucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAotICAgIF9hZGRNZXNzYWdlSGVh
ZGVyOiBmdW5jdGlvbihwYXJlbnRFbGVtZW50LCBmb3JtYXR0ZWRNZXNzYWdlKQotICAgIHsKLSAg
ICAgICAgaWYgKHRoaXMudXJsICYmIHRoaXMudXJsICE9PSAidW5kZWZpbmVkIikgewotICAgICAg
ICAgICAgdmFyIHVybEVsZW1lbnQgPSBXZWJJbnNwZWN0b3IubGlua2lmeVJlc291cmNlQXNOb2Rl
KHRoaXMudXJsLCAic2NyaXB0cyIsIHRoaXMubGluZSwgImNvbnNvbGUtbWVzc2FnZS11cmwiKTsg
Ci0gICAgICAgICAgICBwYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKHVybEVsZW1lbnQpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdmFyIG1lc3NhZ2VUZXh0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgbWVzc2FnZVRleHRFbGVtZW50LmNsYXNzTmFtZSA9
ICJjb25zb2xlLW1lc3NhZ2UtdGV4dCBzb3VyY2UtY29kZSI7Ci0gICAgICAgIGlmICh0aGlzLnR5
cGUgPT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5Bc3NlcnQpCi0g
ICAgICAgICAgICBtZXNzYWdlVGV4dEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBc3NlcnRpb24gZmFpbGVkOiAiKSkpOwot
ICAgICAgICBtZXNzYWdlVGV4dEVsZW1lbnQuYXBwZW5kQ2hpbGQoZm9ybWF0dGVkTWVzc2FnZSk7
Ci0gICAgICAgIHBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQobWVzc2FnZVRleHRFbGVtZW50KTsK
LSAgICB9LAotCiAgICAgX3VwZGF0ZVJlcGVhdENvdW50OiBmdW5jdGlvbigpIHsKICAgICAgICAg
aWYgKCF0aGlzLnJlcGVhdENvdW50RWxlbWVudCkgewogICAgICAgICAgICAgdGhpcy5yZXBlYXRD
b3VudEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgICAg
ICB0aGlzLnJlcGVhdENvdW50RWxlbWVudC5jbGFzc05hbWUgPSAiYnViYmxlIjsKLSAgICAKKwog
ICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5yZXBlYXRDb3VudEVs
ZW1lbnQsIHRoaXMuX2VsZW1lbnQuZmlyc3RDaGlsZCk7CiAgICAgICAgICAgICB0aGlzLl9lbGVt
ZW50LmFkZFN0eWxlQ2xhc3MoInJlcGVhdGVkLW1lc3NhZ2UiKTsKICAgICAgICAgfQpAQCAtOTQ3
LDcgKzk0Myw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICAgICAgdHlwZVN0cmluZyA9ICJSZXN1bHQiOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHZhciBsZXZlbFN0cmluZzsKICAg
ICAgICAgc3dpdGNoICh0aGlzLmxldmVsKSB7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rv
ci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuVGlwOgpAQCAtOTY3LDIyICs5NjMsMjAgQEAg
V2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBzb3VyY2VTdHJpbmcgKyAiICIg
KyB0eXBlU3RyaW5nICsgIiAiICsgbGV2ZWxTdHJpbmcgKyAiOiAiICsgdGhpcy5mb3JtYXR0ZWRN
ZXNzYWdlLnRleHRDb250ZW50ICsgIlxuIiArIHRoaXMudXJsICsgIiBsaW5lICIgKyB0aGlzLmxp
bmU7CisgICAgICAgIHJldHVybiBzb3VyY2VTdHJpbmcgKyAiICIgKyB0eXBlU3RyaW5nICsgIiAi
ICsgbGV2ZWxTdHJpbmcgKyAiOiAiICsgdGhpcy5fZm9ybWF0dGVkTWVzc2FnZS50ZXh0Q29udGVu
dCArICJcbiIgKyB0aGlzLnVybCArICIgbGluZSAiICsgdGhpcy5saW5lOwogICAgIH0sCiAKLSAg
ICBpc0VxdWFsOiBmdW5jdGlvbihtc2csIGRpc3JlZ3VhcmRHcm91cCkKKyAgICBpc0VxdWFsOiBm
dW5jdGlvbihtc2cpCiAgICAgewogICAgICAgICBpZiAoIW1zZykKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgICAgICB2YXIgcmV0ID0gKHRoaXMuc291cmNlID09IG1zZy5zb3VyY2Up
CisgICAgICAgIHJldHVybiAodGhpcy5zb3VyY2UgPT0gbXNnLnNvdXJjZSkKICAgICAgICAgICAg
ICYmICh0aGlzLnR5cGUgPT0gbXNnLnR5cGUpCiAgICAgICAgICAgICAmJiAodGhpcy5sZXZlbCA9
PSBtc2cubGV2ZWwpCiAgICAgICAgICAgICAmJiAodGhpcy5saW5lID09IG1zZy5saW5lKQogICAg
ICAgICAgICAgJiYgKHRoaXMudXJsID09IG1zZy51cmwpCiAgICAgICAgICAgICAmJiAodGhpcy5t
ZXNzYWdlID09IG1zZy5tZXNzYWdlKTsKLQotICAgICAgICByZXR1cm4gKGRpc3JlZ3VhcmRHcm91
cCA/IHJldCA6IChyZXQgJiYgKHRoaXMuZ3JvdXBMZXZlbCA9PSBtc2cuZ3JvdXBMZXZlbCkpKTsK
ICAgICB9CiB9CiAKQEAgLTEwNDEsNyArMTAzNSw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlQ29t
bWFuZFJlc3VsdCA9IGZ1bmN0aW9uKHJlc3VsdCwgb3JpZ2luYXRpbmdDb21tYW5kKQogewogICAg
IHZhciBsZXZlbCA9IChyZXN1bHQuaXNFcnJvcigpID8gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNz
YWdlLk1lc3NhZ2VMZXZlbC5FcnJvciA6IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNz
YWdlTGV2ZWwuTG9nKTsKICAgICB0aGlzLm9yaWdpbmF0aW5nQ29tbWFuZCA9IG9yaWdpbmF0aW5n
Q29tbWFuZDsKLSAgICBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuY2FsbCh0aGlzLCBXZWJJ
bnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5KUywgV2ViSW5zcGVjdG9yLkNv
bnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlJlc3VsdCwgbGV2ZWwsIC0xLCBudWxsLCBudWxsLCAx
LCBudWxsLCBbcmVzdWx0XSk7CisgICAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLmNhbGwo
dGhpcywgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuSlMsIFdlYklu
c3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5SZXN1bHQsIGxldmVsLCAtMSwgbnVs
bCwgMSwgbnVsbCwgW3Jlc3VsdF0pOwogfQogCiBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRS
ZXN1bHQucHJvdG90eXBlID0gewpAQCAtMTA1NSwxMCArMTA0OSw5IEBAIFdlYkluc3BlY3Rvci5D
b25zb2xlQ29tbWFuZFJlc3VsdC5wcm90b3R5cGUgPSB7CiAKIFdlYkluc3BlY3Rvci5Db25zb2xl
Q29tbWFuZFJlc3VsdC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlLnByb3RvdHlwZTsKIAotV2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cCA9IGZ1bmN0aW9u
KHBhcmVudEdyb3VwLCBsZXZlbCkKK1dlYkluc3BlY3Rvci5Db25zb2xlR3JvdXAgPSBmdW5jdGlv
bihwYXJlbnRHcm91cCkKIHsKICAgICB0aGlzLnBhcmVudEdyb3VwID0gcGFyZW50R3JvdXA7Ci0g
ICAgdGhpcy5sZXZlbCA9IGxldmVsOwogCiAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKICAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICJjb25zb2xlLWdyb3Vw
IjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcwppbmRleCBhZWZkZDZjNjIx
MjVmNTNlYWQ5MWUzMzJkZDkwMDFkYjQ4NWYyN2QyLi5kMDNhNjg0Zjc3MGEwNmNiYjc1MTdiNGI1
OWE1YjkyNTk3OTVjY2I0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
UmVzb3VyY2UuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpz
CkBAIC02MDgsNyArNjA4LDYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNz
YWdlTGV2ZWwuV2FybmluZywKICAgICAgICAgICAgICAgICAgICAgICAgIC0xLAogICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpcy51cmwsCi0gICAgICAgICAgICAgICAgICAgICAgICBudWxsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmlu
Zy5zcHJpbnRmKFdlYkluc3BlY3Rvci5XYXJuaW5ncy5JbmNvcnJlY3RNSU1FVHlwZS5tZXNzYWdl
LCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS50b1VJU3RyaW5nKHRoaXMudHlwZSksIHRoaXMu
bWltZVR5cGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwppbmRleCA4ZTA3N2NkMjllODg1MTBmNmI3NTUy
YTEyNGI3M2VjNjQ2ZjE1ZjA4Li45MjA4ODFmZjExNzhlOWQzMTM1ZDk4ZjU3MjA3MzE2NDI0OTAw
YmU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUu
anMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCkBAIC0z
OTUsNyArMzk1LDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm93TWVzc2FnZXMubGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgICAgIGlmIChyb3dNZXNzYWdlc1tpXS5pc0VxdWFsKG1zZywgdHJ1
ZSkpIHsKKyAgICAgICAgICAgIGlmIChyb3dNZXNzYWdlc1tpXS5pc0VxdWFsKG1zZykpIHsKICAg
ICAgICAgICAgICAgICB0aGlzLl9pbmNyZW1lbnRNZXNzYWdlUmVwZWF0Q291bnQocm93TWVzc2Fn
ZXNbaV0sIG1zZy5yZXBlYXREZWx0YSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggNTEx
NDVjZmUwZDMzYTE1NjdhOWY2YzcyNjdhNGIyMWY5N2FhZDM5ZS4uNWJhYjMxYzBmZTZkMzdkY2My
YzdjMzM1MjYwZTgwYzQ3MTBlNjU0YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmpzCkBAIC0xNDIxLDExICsxNDIxLDEyIEBAIFdlYkluc3BlY3Rvci5hZGRDb25zb2xl
TWVzc2FnZSA9IGZ1bmN0aW9uKHBheWxvYWQpCiAgICAgICAgIHBheWxvYWQubGV2ZWwsCiAgICAg
ICAgIHBheWxvYWQubGluZSwKICAgICAgICAgcGF5bG9hZC51cmwsCi0gICAgICAgIHBheWxvYWQu
Z3JvdXBMZXZlbCwKICAgICAgICAgcGF5bG9hZC5yZXBlYXRDb3VudCwKICAgICAgICAgcGF5bG9h
ZC5tZXNzYWdlLAogICAgICAgICBwYXlsb2FkLnBhcmFtZXRlcnMsCi0gICAgICAgIHBheWxvYWQu
c3RhY2tUcmFjZSk7CisgICAgICAgIHBheWxvYWQuc3RhY2tUcmFjZSwKKyAgICAgICAgcGF5bG9h
ZC5odHRwTWV0aG9kLAorICAgICAgICBwYXlsb2FkLmh0dHBTdGF0dXNDb2RlKTsKICAgICB0aGlz
LmNvbnNvbGUuYWRkTWVzc2FnZShjb25zb2xlTWVzc2FnZSk7CiB9CiAKQEAgLTE0OTEsNyArMTQ5
Miw2IEBAIFdlYkluc3BlY3Rvci5sb2cgPSBmdW5jdGlvbihtZXNzYWdlLCBtZXNzYWdlTGV2ZWwp
CiAgICAgICAgICAgICBtZXNzYWdlTGV2ZWwgfHwgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdl
Lk1lc3NhZ2VMZXZlbC5EZWJ1ZywKICAgICAgICAgICAgIC0xLAogICAgICAgICAgICAgbnVsbCwK
LSAgICAgICAgICAgIG51bGwsCiAgICAgICAgICAgICByZXBlYXRDb3VudCwKICAgICAgICAgICAg
IG51bGwsCiAgICAgICAgICAgICBbbWVzc2FnZV0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75897</attachid>
            <date>2010-12-08 06:40:32 -0800</date>
            <delta_ts>2010-12-09 02:15:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50390-20101208174029.patch</filename>
            <type>text/plain</type>
            <size>33713</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyZjUxZmJlNTA4MGRmNTJkNWYyNDQ5MDUyYWNhNjg5ZTgxZDQyYzY5Li4yNThjZjYy
NmZhZTM5OTY4ZjViYTAwNmMxNzE2MzBmNmQ2MzA1MDVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMTItMDIgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogQ29uc29sZSByZWNvcmRzIGZvciBmYWlsZWQgWEhScyBzaG91bGQgY29udGFpbiBjYWxsIHN0
YWNrIGFuZCByZXF1ZXN0IG1ldGhvZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTAzOTAKKworICAgICAgICBUaGUgZXhwZWN0YXRpb25zIG5lZWRlZCB1
cGRhdGUgZWl0aGVyIGR1ZSB0byBsb2cgZm9ybWF0IGNoYW5nZXMgb3IgZHVlIHRvIHJlbW92YWwg
b2Ygc29tZSB1bnVzZWQgc3R5bGUgY2xhc3Nlcy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5z
cGVjdG9yLWVuYWJsZWQvY29uc29sZS1sb2ctYmVmb3JlLWZyYW1lLW5hdmlnYXRpb24tZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtcmVzb3VyY2Ut
ZXJyb3JzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9jb25z
b2xlLXhoci1sb2dnaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29s
ZS10ZXN0cy1leHBlY3RlZC50eHQ6CisKIDIwMTAtMTItMDggIFl1cnkgU2VtaWtoYXRza3kgIDx5
dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gVXBkYXRlIHRlc3QgZXhw
ZWN0YXRpb25zIGFmdGVyIHI3MzUwNC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yLWVuYWJsZWQvY29uc29sZS1sb2ctYmVmb3JlLWZyYW1lLW5hdmlnYXRpb24t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9j
b25zb2xlLWxvZy1iZWZvcmUtZnJhbWUtbmF2aWdhdGlvbi1leHBlY3RlZC50eHQKaW5kZXggZDA1
MDVlOGQ1NmEzZTkwYzA0MzU1NjM3NmFlMWFlMjIxM2VjYWVhZS4uMzFlNzg0MDYxYTk4ZmY1M2Zk
YWI2OTFiNmRmYzdhMzY4YzEyZjk1NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3ItZW5hYmxlZC9jb25zb2xlLWxvZy1iZWZvcmUtZnJhbWUtbmF2aWdhdGlvbi1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxl
ZC9jb25zb2xlLWxvZy1iZWZvcmUtZnJhbWUtbmF2aWdhdGlvbi1leHBlY3RlZC50eHQKQEAgLTQs
NyArNCw3IEBAIFRlc3RzIHRoYXQgV2ViIEluc3BlY3RvciB3b24ndCBjcmFzaCBpZiB0aGVyZSBh
cmUgbWVzc2FnZXMgd3JpdHRlbiB0byBjb25zb2xlIGZyCiAKIFJlY2VpdmVkIGNvbnNvbGUgbWVz
c2FnZXM6CiBNZXNzYWdlWzBdOgotVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9y
LWVuYWJsZWQvcmVzb3VyY2VzL2NvbnNvbGUtbG9nLWZyYW1lLWJlZm9yZS1uYXZpZ2F0aW9uLmh0
bWwKLU1lc3NhZ2U6IENvbnNvbGUgbWVzc2FnZSAoQykgJWQgd2l0aCBlbGVtZW50CitVUkw6IAor
TWVzc2FnZTogcmVzb3VyY2VzL2NvbnNvbGUtbG9nLWZyYW1lLWJlZm9yZS1uYXZpZ2F0aW9uLmh0
bWw6NUNvbnNvbGUgbWVzc2FnZSAoQykgJWQgd2l0aCBlbGVtZW50CiBURVNUIENPTVBMRVRFLgog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXJl
c291cmNlLWVycm9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9jb25zb2xlLXJlc291cmNlLWVycm9ycy1leHBlY3RlZC50eHQKaW5kZXggNjRkMDE0YWQy
ZjYzZWNiZDMxMTQ0NWJhOTFmNDU2M2U4Y2NlOGU3Zi4uYmYwNGMzMzViNmVlMjlkMzRiYWQyNjlj
ZTQ4ZjkyODhlMjRmYTk0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvY29uc29sZS1yZXNvdXJjZS1lcnJvcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtcmVzb3VyY2UtZXJyb3JzLWV4cGVjdGVk
LnR4dApAQCAtMSw4ICsxLDggQEAKICBUZXN0cyB0aGF0IGVycm9ycyB0byBsb2FkIGEgcmVzb3Vy
Y2UgY2F1c2UgZXJyb3IgbWVzc2FnZXMgdG8gYmUgbG9nZ2VkIHRvIGNvbnNvbGUuCiAKIFBhZ2Ug
cmVsb2FkZWQuCi1taXNzaW5nLmNzc0ZhaWxlZCB0byBsb2FkIHJlc291cmNlOiB0aGUgc2VydmVy
IHJlc3BvbmRlZCB3aXRoIGEgc3RhdHVzIG9mIDQwNCAoTm90IEZvdW5kKSBjb25zb2xlLW1lc3Nh
Z2UgY29uc29sZS1lcnJvci1sZXZlbAotbm9uLWV4aXN0ZW50LWlmcmFtZS5odG1sRmFpbGVkIHRv
IGxvYWQgcmVzb3VyY2U6IHRoZSBzZXJ2ZXIgcmVzcG9uZGVkIHdpdGggYSBzdGF0dXMgb2YgNDA0
IChOb3QgRm91bmQpIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWVycm9yLWxldmVsCi1ub24tZXhp
c3RlbnQtc2NyaXB0LmpzRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2U6IHRoZSBzZXJ2ZXIgcmVzcG9u
ZGVkIHdpdGggYSBzdGF0dXMgb2YgNDA0IChOb3QgRm91bmQpIGNvbnNvbGUtbWVzc2FnZSBjb25z
b2xlLWVycm9yLWxldmVsCi1ub24tZXhpc3RlbnQteGhyRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2U6
IHRoZSBzZXJ2ZXIgcmVzcG9uZGVkIHdpdGggYSBzdGF0dXMgb2YgNDA0IChOb3QgRm91bmQpIGNv
bnNvbGUtbWVzc2FnZSBjb25zb2xlLWVycm9yLWxldmVsCitHRVQgaHR0cDovLzEyNy4wLjAuMTo4
MDAwL2luc3BlY3Rvci9taXNzaW5nLmNzcyA0MDQgKE5vdCBGb3VuZCkgY29uc29sZS1tZXNzYWdl
IGNvbnNvbGUtZXJyb3ItbGV2ZWwKK0dFVCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9y
L25vbi1leGlzdGVudC1pZnJhbWUuaHRtbCA0MDQgKE5vdCBGb3VuZCkgY29uc29sZS1tZXNzYWdl
IGNvbnNvbGUtZXJyb3ItbGV2ZWwKK0dFVCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9y
L25vbi1leGlzdGVudC1zY3JpcHQuanMgNDA0IChOb3QgRm91bmQpIGNvbnNvbGUtbWVzc2FnZSBj
b25zb2xlLWVycm9yLWxldmVsCitHRVQgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9u
b24tZXhpc3RlbnQteGhyIDQwNCAoTm90IEZvdW5kKSBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1l
cnJvci1sZXZlbAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9jb25zb2xlLXhoci1sb2dnaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2NvbnNvbGUteGhyLWxvZ2dpbmctZXhwZWN0ZWQudHh0CmluZGV4IGQ3MDJm
Y2Q0YzhjZjIxZDUxMGVlNDU4ZDQ2YTA5MTkyYWI2ODUyN2MuLmUwN2E3MjA5YzNlODY4YWJjNmNh
ZGI1MjE4YzE3MGFjYWIxMDJlMzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2NvbnNvbGUteGhyLWxvZ2dpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUteGhyLWxvZ2dpbmctZXhwZWN0ZWQudHh0
CkBAIC0xMiwxMyArMTIsMTMgQEAgY29uc29sZS14aHItbG9nZ2luZy5odG1sOjExZW5hYmxlZAog
Y29uc29sZS14aHItbG9nZ2luZy5odG1sOjQwc2VuZGluZyBhIEdFVCByZXF1ZXN0IHRvIHJlc291
cmNlcy94aHItZXhpc3RzLmh0bWwKIFhIUiBmaW5pc2hlZCBsb2FkaW5nOiAiaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMveGhyLWV4aXN0cy5odG1sIi4KIGNvbnNvbGUt
eGhyLWxvZ2dpbmcuaHRtbDo0MHNlbmRpbmcgYSBHRVQgcmVxdWVzdCB0byByZXNvdXJjZXMveGhy
LWRvZXMtbm90LWV4aXN0Lmh0bWwKLXhoci1kb2VzLW5vdC1leGlzdC5odG1sRmFpbGVkIHRvIGxv
YWQgcmVzb3VyY2U6IHRoZSBzZXJ2ZXIgcmVzcG9uZGVkIHdpdGggYSBzdGF0dXMgb2YgNDA0IChO
b3QgRm91bmQpCitHRVQgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMv
eGhyLWRvZXMtbm90LWV4aXN0Lmh0bWwgNDA0IChOb3QgRm91bmQpCiBYSFIgZmluaXNoZWQgbG9h
ZGluZzogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2VzL3hoci1kb2Vz
LW5vdC1leGlzdC5odG1sIi4KIGNvbnNvbGUteGhyLWxvZ2dpbmcuaHRtbDo0MHNlbmRpbmcgYSBQ
T1NUIHJlcXVlc3QgdG8gcmVzb3VyY2VzL3Bvc3QtdGFyZ2V0LmNnaQogWEhSIGZpbmlzaGVkIGxv
YWRpbmc6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy9wb3N0LXRh
cmdldC5jZ2kiLgogY29uc29sZS14aHItbG9nZ2luZy5odG1sOjIxZGlzYWJsZWQKIGNvbnNvbGUt
eGhyLWxvZ2dpbmcuaHRtbDo0MHNlbmRpbmcgYSBHRVQgcmVxdWVzdCB0byByZXNvdXJjZXMveGhy
LWV4aXN0cy5odG1sCiBjb25zb2xlLXhoci1sb2dnaW5nLmh0bWw6NDBzZW5kaW5nIGEgR0VUIHJl
cXVlc3QgdG8gcmVzb3VyY2VzL3hoci1kb2VzLW5vdC1leGlzdC5odG1sCi14aHItZG9lcy1ub3Qt
ZXhpc3QuaHRtbEZhaWxlZCB0byBsb2FkIHJlc291cmNlOiB0aGUgc2VydmVyIHJlc3BvbmRlZCB3
aXRoIGEgc3RhdHVzIG9mIDQwNCAoTm90IEZvdW5kKQorR0VUIGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9pbnNwZWN0b3IvcmVzb3VyY2VzL3hoci1kb2VzLW5vdC1leGlzdC5odG1sIDQwNCAoTm90IEZv
dW5kKQogY29uc29sZS14aHItbG9nZ2luZy5odG1sOjQwc2VuZGluZyBhIFBPU1QgcmVxdWVzdCB0
byByZXNvdXJjZXMvcG9zdC10YXJnZXQuY2dpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtcmVzb3VyY2UtZXJy
b3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2NvbnNvbGUtcmVzb3VyY2UtZXJyb3JzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zOTk2NTNmZWU4YWNjNmY0ZGNmNmJlOTFhMDUwMGE5MjQ2MTQyY2ZkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvY29uc29sZS1yZXNvdXJjZS1lcnJvcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAor
IFRlc3RzIHRoYXQgZXJyb3JzIHRvIGxvYWQgYSByZXNvdXJjZSBjYXVzZSBlcnJvciBtZXNzYWdl
cyB0byBiZSBsb2dnZWQgdG8gY29uc29sZS4KKworUGFnZSByZWxvYWRlZC4KK0dFVCBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL21pc3NpbmcuY3NzIDQwNCAoTm90IEZvdW5kKSBjb25z
b2xlLW1lc3NhZ2UgY29uc29sZS1lcnJvci1sZXZlbAorR0VUIGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9pbnNwZWN0b3Ivbm9uLWV4aXN0ZW50LWlmcmFtZS5odG1sIDQwNCAoTm90IEZvdW5kKSBjb25z
b2xlLW1lc3NhZ2UgY29uc29sZS1lcnJvci1sZXZlbAorR0VUIGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9pbnNwZWN0b3Ivbm9uLWV4aXN0ZW50LXNjcmlwdC5qcyA0MDQgKE5vdCBGb3VuZCkgY29uc29s
ZS1tZXNzYWdlIGNvbnNvbGUtZXJyb3ItbGV2ZWwKK2NvbnNvbGUtcmVzb3VyY2UtZXJyb3JzLmh0
bWw6MTNHRVQgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9ub24tZXhpc3RlbnQteGhy
IDQwNCAoTm90IEZvdW5kKShhbm9ueW1vdXMgZnVuY3Rpb24pY29uc29sZS1yZXNvdXJjZS1lcnJv
cnMuaHRtbDoxMyBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1lcnJvci1sZXZlbApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29u
c29sZS14aHItbG9nZ2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXhoci1sb2dnaW5nLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41MDkxODNkNDRhMDAzODQyMjBkZmNmOGI4MDhjODJhOGU4YWRlZDRkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0
cy9pbnNwZWN0b3IvY29uc29sZS14aHItbG9nZ2luZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwy
MyBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDExOiBlbmFibGVkCitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgNDA6IHNlbmRpbmcgYSAlcyByZXF1ZXN0IHRvICVzCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgNDA6IHNlbmRpbmcgYSAlcyByZXF1ZXN0IHRvICVzCitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
NDA6IHNlbmRpbmcgYSAlcyByZXF1ZXN0IHRvICVzCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjE6
IGRpc2FibGVkCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNDA6IHNlbmRpbmcgYSAlcyByZXF1ZXN0
IHRvICVzCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNDA6IHNlbmRpbmcgYSAlcyByZXF1ZXN0IHRv
ICVzCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNDA6IHNlbmRpbmcgYSAlcyByZXF1ZXN0IHRvICVz
CitUZXN0cyB0aGF0IFhNTEh0dHBSZXF1ZXN0IExvZ2dpbmcgd29ya3Mgd2hlbiBFbmFibGVkIGFu
ZCBkb2Vzbid0IHNob3cgbG9ncyB3aGVuIERpc2FibGVkLgorCitjb25zb2xlLXhoci1sb2dnaW5n
Lmh0bWw6MTFlbmFibGVkCitjb25zb2xlLXhoci1sb2dnaW5nLmh0bWw6NDBzZW5kaW5nIGEgR0VU
IHJlcXVlc3QgdG8gcmVzb3VyY2VzL3hoci1leGlzdHMuaHRtbAorWEhSIGZpbmlzaGVkIGxvYWRp
bmc6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy94aHItZXhpc3Rz
Lmh0bWwiLgorY29uc29sZS14aHItbG9nZ2luZy5odG1sOjQwc2VuZGluZyBhIEdFVCByZXF1ZXN0
IHRvIHJlc291cmNlcy94aHItZG9lcy1ub3QtZXhpc3QuaHRtbAorY29uc29sZS14aHItbG9nZ2lu
Zy5odG1sOjQzR0VUIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2VzL3ho
ci1kb2VzLW5vdC1leGlzdC5odG1sIDQwNCAoTm90IEZvdW5kKQorWEhSIGZpbmlzaGVkIGxvYWRp
bmc6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy94aHItZG9lcy1u
b3QtZXhpc3QuaHRtbCIuCitjb25zb2xlLXhoci1sb2dnaW5nLmh0bWw6NDBzZW5kaW5nIGEgUE9T
VCByZXF1ZXN0IHRvIHJlc291cmNlcy9wb3N0LXRhcmdldC5jZ2kKK1hIUiBmaW5pc2hlZCBsb2Fk
aW5nOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMvcG9zdC10YXJn
ZXQuY2dpIi4KK2NvbnNvbGUteGhyLWxvZ2dpbmcuaHRtbDoyMWRpc2FibGVkCitjb25zb2xlLXho
ci1sb2dnaW5nLmh0bWw6NDBzZW5kaW5nIGEgR0VUIHJlcXVlc3QgdG8gcmVzb3VyY2VzL3hoci1l
eGlzdHMuaHRtbAorY29uc29sZS14aHItbG9nZ2luZy5odG1sOjQwc2VuZGluZyBhIEdFVCByZXF1
ZXN0IHRvIHJlc291cmNlcy94aHItZG9lcy1ub3QtZXhpc3QuaHRtbAorY29uc29sZS14aHItbG9n
Z2luZy5odG1sOjQzR0VUIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2Vz
L3hoci1kb2VzLW5vdC1leGlzdC5odG1sIDQwNCAoTm90IEZvdW5kKQorY29uc29sZS14aHItbG9n
Z2luZy5odG1sOjQwc2VuZGluZyBhIFBPU1QgcmVxdWVzdCB0byByZXNvdXJjZXMvcG9zdC10YXJn
ZXQuY2dpCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDY5YTEwNjJhNDFlYjAxOWMxNTlmYjQxYWRlMDg1OWIyMmM4ZjFmOGIuLmI0N2RkNWE3
YjY1OGU0NjA2NWY4Y2Y3Y2E5ZmY5ZmY5YTcwMGNkZDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkgQEAKKzIwMTAtMTIt
MDIgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ29uc29s
ZSByZWNvcmRzIGZvciBmYWlsZWQgWEhScyBzaG91bGQgY29udGFpbiBjYWxsIHN0YWNrIGFuZCBy
ZXF1ZXN0IG1ldGhvZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTAzOTAKKworICAgICAgICBXaGVuIGluc3BlY3RvciBmcm9udC1lbmQgaXMgb3BlbiB3
ZSBjYXB0dXJlIGNhbGwgc3RhY2sgYW5kIEhUVFAgcmVxdWVzdCBtZXRob2QgdG8gbGF0ZXIgcGFz
cyBpdAorICAgICAgICBpbnRvIENvbnNvbGVNZXNzYWdlIGNvbnN0cnVjdG9yIHNob3VsZCB0aGUg
cmVxdWVzdCBmYWlsLiBUbyBzYXZlIHJlc291cmNlcyB3ZSBkb24ndCBkbyB0aGlzCisgICAgICAg
IHdoZW4gZnJvbnQtZW5kIGlzIGNsb3NlZC4KKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovbG9j
YWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tG
YWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1l
c3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdlOjppc0VxdWFsKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJ
bnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6Y2xlYXJDb25zb2xlTWVzc2FnZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6c3RhcnRHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
b250cm9sbGVyOjplbmRHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9s
bGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmg6IHJlbW92ZWQgbV9ncm91cExldmVsIHNpbmNlIHdlIGRvbid0IG5lZWQgaXQs
IGFsbCB0aGUgbmVzdGluZyBpcyBjb21wdXRlZCBvbgorICAgICAgICB0aGUgZnJvbnQtZW5kIHNp
ZGUgYW5kIGhhdmluZyBTdGFydC9FbmRHcm91cCBtZXNzYWdlcyBpcyBlbm91Z2guCisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENv
bW1pdExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6cmVx
dWVzdEluZm9Gb3JSZXF1ZXN0SWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5jcmVhdGVGaWx0ZXJFbGVtZW50
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLmZpbHRlcik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLmFmdGVyU2hvdyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLmFkZE1lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS51cGRhdGVNZXNzYWdlUmVwZWF0Q291bnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5jbGVhck1lc3NhZ2VzKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2UuY3JlYXRlVGV4dE1lc3NhZ2UpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZS5fZm9ybWF0TWVzc2FnZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlLnRvTWVzc2FnZUVsZW1lbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZS5fcG9wdWxh
dGVTdGFja1RyYWNlVHJlZUVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlLnByb3RvdHlwZS5fdXBkYXRlUmVwZWF0Q291bnQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlLmlzRXF1YWwpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25z
b2xlR3JvdXApOiBncm91cCBsZXZlbCBjb3VudGVycyB3ZXJlIHJlbW92ZWQgZnJvbSB0aGUgZnJv
bnQtZW5kIGFzIHdlbGwKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5fY2hlY2tXYXJuaW5n
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5fYWRkTWVzc2FnZVRvU291cmNl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5hZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
bG9nLmxvZ01lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxvZyk6CisKIDIwMTAtMTIt
MDggIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0Nv
bnNvbGVNZXNzYWdlLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApp
bmRleCA1ODEyYWE0NmRhMzI3MDJmYzYyY2M5NjAzYjU4MGUyNWRiOTRmMmEzLi4zM2QzMDFhMGJi
Y2U5MGFjMWQxZDllYzk0ZmI2NWVjOWRmNzEyOWE5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1l
c3NhZ2UuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCisj
aW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIK
QEAgLTUxLDYgKzUyLDcgQEAgQ29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2UgcywgTWVzc2FnZVR5cGUgdCwgTWVzc2FnZUxldmVsIGwsIGMKICAgICAsIG1fbGluZShs
aSkKICAgICAsIG1fdXJsKHUpCiAgICAgLCBtX3JlcGVhdENvdW50KDEpCisgICAgLCBtX2h0dHBT
dGF0dXNDb2RlKDApCiB7CiB9CiAKQEAgLTYxLDE2ICs2MywyNSBAQCBDb25zb2xlTWVzc2FnZTo6
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzLCBNZXNzYWdlVHlwZSB0LCBNZXNzYWdlTGV2
ZWwgbCwgYwogICAgICwgbV9tZXNzYWdlKG0pCiAgICAgLCBtX2FyZ3VtZW50cyhhcmd1bWVudHMp
CiAgICAgLCBtX2NhbGxTdGFjayhjYWxsU3RhY2spCisgICAgLCBtX2xpbmUoMCkKKyAgICAsIG1f
dXJsKCkKICAgICAsIG1fcmVwZWF0Q291bnQoMSkKKyAgICAsIG1faHR0cFN0YXR1c0NvZGUoMCkK
IHsKLSAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGxhc3RDYWxsZXIgPSBtX2NhbGxTdGFjay0+
YXQoMCk7Ci0gICAgbV9saW5lID0gbGFzdENhbGxlci5saW5lTnVtYmVyKCk7Ci0gICAgbV91cmwg
PSBsYXN0Q2FsbGVyLnNvdXJjZVVSTCgpOwotCit9CiAKLSAgICBib29sIHN0b3JlVHJhY2UgPSAo
dCA9PSBUcmFjZU1lc3NhZ2VUeXBlIHx8IHQgPT0gVW5jYXVnaHRFeGNlcHRpb25NZXNzYWdlVHlw
ZSB8fCB0ID09IEFzc2VydE1lc3NhZ2VUeXBlKTsKLSAgICBpZiAoIXN0b3JlVHJhY2UpCi0gICAg
ICAgIG1fY2FsbFN0YWNrLmNsZWFyKCk7CitDb25zb2xlTWVzc2FnZTo6Q29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZSBzLCBNZXNzYWdlVHlwZSB0LCBNZXNzYWdlTGV2ZWwgbCwgY29uc3QgU3Ry
aW5nJiBodHRwTWV0aG9kLCBjb25zdCBTdHJpbmcmIHJlc3BvbnNlVXJsLCBpbnQgaHR0cFN0YXR1
c0NvZGUsIGNvbnN0IFN0cmluZyYgaHR0cFN0YXR1c1RleHQsIFBhc3NSZWZQdHI8U2NyaXB0Q2Fs
bFN0YWNrPiBjYWxsU3RhY2spCisgICAgOiBtX3NvdXJjZShzKQorICAgICwgbV90eXBlKHQpCisg
ICAgLCBtX2xldmVsKGwpCisgICAgLCBtX21lc3NhZ2UoaHR0cFN0YXR1c1RleHQpCisgICAgLCBt
X2NhbGxTdGFjayhjYWxsU3RhY2spCisgICAgLCBtX2xpbmUoMCkKKyAgICAsIG1fdXJsKHJlc3Bv
bnNlVXJsKQorICAgICwgbV9yZXBlYXRDb3VudCgxKQorICAgICwgbV9odHRwTWV0aG9kKGh0dHBN
ZXRob2QpCisgICAgLCBtX2h0dHBTdGF0dXNDb2RlKGh0dHBTdGF0dXNDb2RlKQorewogfQogCiB2
b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9u
dGVuZCwgSW5qZWN0ZWRTY3JpcHRIb3N0KiBpbmplY3RlZFNjcmlwdEhvc3QpCkBAIC04Myw2ICs5
NCwxMCBAQCB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKEluc3BlY3RvckZyb250
ZW5kKiBmcm9udGVuZCwgSW5qZWN0ZWRTY3JpcHRIbwogICAgIGpzb25PYmotPnNldFN0cmluZygi
dXJsIiwgbV91cmwpOwogICAgIGpzb25PYmotPnNldE51bWJlcigicmVwZWF0Q291bnQiLCBzdGF0
aWNfY2FzdDxpbnQ+KG1fcmVwZWF0Q291bnQpKTsKICAgICBqc29uT2JqLT5zZXRTdHJpbmcoIm1l
c3NhZ2UiLCBtX21lc3NhZ2UpOworICAgIGlmIChtX3R5cGUgPT0gTmV0d29ya0Vycm9yTWVzc2Fn
ZVR5cGUpIHsKKyAgICAgICAganNvbk9iai0+c2V0TnVtYmVyKCJodHRwU3RhdHVzQ29kZSIsIG1f
aHR0cFN0YXR1c0NvZGUpOworICAgICAgICBqc29uT2JqLT5zZXRTdHJpbmcoImh0dHBNZXRob2Qi
LCBtX2h0dHBNZXRob2QpOworICAgIH0KICAgICBpZiAobV9hcmd1bWVudHMgJiYgbV9hcmd1bWVu
dHMtPmFyZ3VtZW50Q291bnQoKSkgewogICAgICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNj
cmlwdCA9IGluamVjdGVkU2NyaXB0SG9zdC0+aW5qZWN0ZWRTY3JpcHRGb3IobV9hcmd1bWVudHMt
Pmdsb2JhbFN0YXRlKCkpOwogICAgICAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUo
KSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKaW5kZXggYTZkOWExODYwZjcyZTE1ZjMw
ZjVjZTg5ZGYzNWJjNTRjNTFiYzIyNS4uNzkwZDJkMWNlMWJiMDkyODM4MmZhN2ZkNGQ0YjdmNGY1
MDZiZGQzMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCkBAIC01MCw2ICs1MCw3IEBA
IGNsYXNzIENvbnNvbGVNZXNzYWdlIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKICAg
ICBDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVs
LCBjb25zdCBTdHJpbmcmIG0sIHVuc2lnbmVkIGxpLCBjb25zdCBTdHJpbmcmIHUpOwogICAgIENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNv
bnN0IFN0cmluZyYgbSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzUmVmUHRyPFNj
cmlwdENhbGxTdGFjaz4pOworICAgIENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3Nh
Z2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgaHR0cE1ldGhvZCwgY29uc3QgU3Ry
aW5nJiByZXNwb25zZVVybCwgaW50IGh0dHBTdGF0dXNDb2RlLCBjb25zdCBTdHJpbmcmIGh0dHBT
dGF0dXNUZXh0LCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4pOwogCiAgICAgdm9pZCBhZGRU
b0Zyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiwgSW5qZWN0ZWRTY3JpcHRIb3N0Kik7CiAgICAg
dm9pZCB1cGRhdGVSZXBlYXRDb3VudEluQ29uc29sZShJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRl
bmQpOwpAQCAtNjksNiArNzAsOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbGluZTsKICAg
ICBTdHJpbmcgbV91cmw7CiAgICAgdW5zaWduZWQgbV9yZXBlYXRDb3VudDsKKyAgICBTdHJpbmcg
bV9odHRwTWV0aG9kOworICAgIGludCBtX2h0dHBTdGF0dXNDb2RlOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApp
bmRleCA2ZWFmODllYjk2OTMzYmJmNWZjYWJmNjA0Njg3ODQyYjkzOWM1YzE2Li4yM2IyMDEwNzU1
ZjRlNmFmNWJhYjY4YmQwMWQ3MzY3MDc1ZjA3YjA2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcApAQCAtODYwLDggKzg2MCwxMCBAQCB2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERv
Y3VtZW50TAogICAgICAgICBtX3Jlc291cmNlQWdlbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVu
dGlmaWVyLCBsb2FkZXIsIHJlc3BvbnNlKTsKIAogICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpID49IDQwMCkgewotICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIkZh
aWxlZCB0byBsb2FkIHJlc291cmNlOiB0aGUgc2VydmVyIHJlc3BvbmRlZCB3aXRoIGEgc3RhdHVz
IG9mICIsIFN0cmluZzo6bnVtYmVyKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpLCAiICgiLCBy
ZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpLCAnKScpOwotICAgICAgICBhZGRNZXNzYWdlVG9Db25z
b2xlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVs
LCBtZXNzYWdlLCAwLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSk7CisgICAgICAgIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OlJlcXVlc3RJbmZvIGluZm87CisgICAgICAgIGlmIChtX3Jlc291cmNl
QWdlbnQpCisgICAgICAgICAgICBpbmZvID0gbV9yZXNvdXJjZUFnZW50LT5yZXF1ZXN0SW5mb0Zv
clJlcXVlc3RJZChpZGVudGlmaWVyKTsKKyAgICAgICAgYWRkQ29uc29sZU1lc3NhZ2UobmV3IENv
bnNvbGVNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTmV0d29ya0Vycm9yTWVzc2FnZVR5cGUs
IEVycm9yTWVzc2FnZUxldmVsLCBpbmZvLmh0dHBNZXRob2QsIHJlc3BvbnNlLnVybCgpLnN0cmlu
ZygpLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCByZXNwb25zZS5odHRwU3RhdHVzVGV4dCgp
LCBpbmZvLmNhbGxTdGFjaykpOwogICAgIH0KIH0KIApAQCAtODk1LDkgKzg5Nyw5IEBAIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjCiAgICAgICAgIG1fdGltZWxpbmVBZ2VudC0+ZGlkRmluaXNoTG9h
ZGluZ1Jlc291cmNlKGlkZW50aWZpZXIsIHRydWUsIDApOwogCiAgICAgU3RyaW5nIG1lc3NhZ2Ug
PSAiRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2UiOwotICAgICAgICBpZiAoIWVycm9yLmxvY2FsaXpl
ZERlc2NyaXB0aW9uKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWVzc2FnZSArPSAiOiAiICsg
ZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29s
ZShPdGhlck1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwg
bWVzc2FnZSwgMCwgZXJyb3IuZmFpbGluZ1VSTCgpKTsKKyAgICBpZiAoIWVycm9yLmxvY2FsaXpl
ZERlc2NyaXB0aW9uKCkuaXNFbXB0eSgpKQorICAgICAgICBtZXNzYWdlICs9ICI6ICIgKyBlcnJv
ci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpOworICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoT3RoZXJN
ZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2Us
IDAsIGVycm9yLmZhaWxpbmdVUkwoKSk7CiAKICAgICBpZiAobV9yZXNvdXJjZUFnZW50KQogICAg
ICAgICBtX3Jlc291cmNlQWdlbnQtPmRpZEZhaWxMb2FkaW5nKGlkZW50aWZpZXIsIGVycm9yKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3Bw
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggOWRh
YjI0YTEzODU1NTY4YzRjMThiMjNjNmU1ZWM1ZDU4NTI2OTc3NS4uY2E5NzkyYzRmZjdlNjgzNWFj
ZmJlNzc5NGNkOGVlODcxNmU2MmE2MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHAKQEAgLTUyLDYgKzUyLDggQEAKICNpbmNsdWRlICJSZXNvdXJjZUVy
cm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXNwb25zZS5oIgorI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgorI2luY2x1ZGUgIlNjcmlw
dENhbGxTdGFja0ZhY3RvcnkuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRl
ICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0Lmgi
CkBAIC0yOTEsNiArMjkzLDEyIEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6aWRlbnRp
ZmllckZvckluaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllCiB2b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVk
aXJlY3RSZXNwb25zZSkKIHsKICAgICBtX2Zyb250ZW5kLT53aWxsU2VuZFJlcXVlc3QoaWRlbnRp
ZmllciwgY3VycmVudFRpbWUoKSwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QocmVxdWVz
dCksIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZWRpcmVjdFJlc3BvbnNlKSk7CisK
KyAgICAvLyBEbyBub3QgbW9kaWZ5IG9yaWdpbmFsIGluZm8gaW4gY2FzZSBvZiByZWRpcmVjdC4K
KyAgICBpZiAobV9yZXF1ZXN0SWRUb1JlcXVlc3RJbmZvLmNvbnRhaW5zKGlkZW50aWZpZXIpKQor
ICAgICAgICByZXR1cm47CisgICAgUmVxdWVzdEluZm8gaW5mbyA9IHtjcmVhdGVTY3JpcHRDYWxs
U3RhY2soU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlLCBmYWxzZSks
IHJlcXVlc3QuaHR0cE1ldGhvZCgpfTsKKyAgICBtX3JlcXVlc3RJZFRvUmVxdWVzdEluZm8uc2V0
KGlkZW50aWZpZXIsIGluZm8pOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Om1h
cmtSZXNvdXJjZUFzQ2FjaGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKQEAgLTMzMiwxMSAr
MzQwLDEzIEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmluaXNoTG9hZGluZyh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmCiAgICAgICAgIGZpbmlzaFRpbWUgPSBj
dXJyZW50VGltZSgpOwogCiAgICAgbV9mcm9udGVuZC0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlm
aWVyLCBmaW5pc2hUaW1lKTsKKyAgICBtX3JlcXVlc3RJZFRvUmVxdWVzdEluZm8ucmVtb3ZlKGlk
ZW50aWZpZXIpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZhaWxMb2Fk
aW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
CiB7CiAgICAgbV9mcm9udGVuZC0+ZGlkRmFpbExvYWRpbmcoaWRlbnRpZmllciwgY3VycmVudFRp
bWUoKSwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7CisgICAgbV9yZXF1ZXN0SWRUb1Jl
cXVlc3RJbmZvLnJlbW92ZShpZGVudGlmaWVyKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlciwgY29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQpAQCAtMzg0LDYgKzM5NCw4IEBA
IHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JGcmFtZVRy
ZWUoRnJhbWUqIGZyYW1lLCBib29sIGR1CiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRp
ZENvbW1pdExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKICAgICBtX2Zyb250ZW5kLT5k
aWRDb21taXRMb2FkRm9yRnJhbWUoYnVpbGRPYmplY3RGb3JGcmFtZShsb2FkZXItPmZyYW1lKCkp
LCBidWlsZE9iamVjdEZvckRvY3VtZW50TG9hZGVyKGxvYWRlcikpOworICAgIGlmIChsb2FkZXIt
PmZyYW1lKCkgPT0gbV9wYWdlLT5tYWluRnJhbWUoKSkKKyAgICAgICAgbV9yZXF1ZXN0SWRUb1Jl
cXVlc3RJbmZvLmNsZWFyKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZnJh
bWVEZXRhY2hlZEZyb21QYXJlbnQoRnJhbWUqIGZyYW1lKQpAQCAtNDUxLDYgKzQ2MywxMSBAQCBG
cmFtZSogSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZnJhbWVGb3JJZCh1bnNpZ25lZCBsb25nIGZy
YW1lSWQpCiAgICAgcmV0dXJuIDA7CiB9CiAKK0luc3BlY3RvclJlc291cmNlQWdlbnQ6OlJlcXVl
c3RJbmZvIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnJlcXVlc3RJbmZvRm9yUmVxdWVzdElkKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXF1ZXN0SWRU
b1JlcXVlc3RJbmZvLmdldChpZGVudGlmaWVyKTsKK30KKwogdm9pZCBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpjYWNoZWRSZXNvdXJjZXMoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG9iamVjdCkK
IHsKICAgICAqb2JqZWN0ID0gYnVpbGRPYmplY3RGb3JGcmFtZVRyZWUobV9wYWdlLT5tYWluRnJh
bWUoKSwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgK
aW5kZXggMWU3N2Q1OGM4NTM1YmQ3ZWE2NjM4ZDY2NDY0ZDM2ZDY5Zjg1ZTUxNS4uYmM3MjRmNTVl
NzM5ZGE5YWE2NDAyYmJmZWQ0NmZiMzJhM2E4MzY4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKIAorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTU2LDYgKzU3LDcg
QEAgY2xhc3MgUGFnZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwogY2xh
c3MgU2hhcmVkQnVmZmVyOwogCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQpAQCAtOTgsNyArMTAw
LDEzIEBAIHB1YmxpYzoKIAogICAgIEZyYW1lKiBmcmFtZUZvcklkKHVuc2lnbmVkIGxvbmcpOwog
Ci0gICAgLy8gQ2FsbGVkIGZyb20gZnJvbnRlbmQgCisgICAgc3RydWN0IFJlcXVlc3RJbmZvIHsK
KyAgICAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrOworICAgICAgICBTdHJp
bmcgaHR0cE1ldGhvZDsKKyAgICB9OworICAgIFJlcXVlc3RJbmZvIHJlcXVlc3RJbmZvRm9yUmVx
dWVzdElkKHVuc2lnbmVkIGxvbmcpIGNvbnN0OworCisgICAgLy8gQ2FsbGVkIGZyb20gZnJvbnRl
bmQKICAgICB2b2lkIGNhY2hlZFJlc291cmNlcyhSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiopOwog
ICAgIHZvaWQgcmVzb3VyY2VDb250ZW50KHVuc2lnbmVkIGxvbmcgZnJhbWVJRCwgY29uc3QgU3Ry
aW5nJiB1cmwsIGJvb2wgYmFzZTY0RW5jb2RlLCBTdHJpbmcqIGNvbnRlbnQpOwogCkBAIC0xMDcs
NiArMTE1LDggQEAgcHJpdmF0ZToKIAogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBJbnNwZWN0b3JG
cm9udGVuZCogbV9mcm9udGVuZDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQgbG9uZywg
UmVxdWVzdEluZm8+IFJlcXVlc3RJZFRvUmVxdWVzdEluZm87CisgICAgUmVxdWVzdElkVG9SZXF1
ZXN0SW5mbyBtX3JlcXVlc3RJZFRvUmVxdWVzdEluZm87CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZp
ZXcuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKaW5kZXgg
MDljZTc5Mzg4MThlMThiZDgxMjhiZjIxNGI5OGM4MDg3OTMyMmI2ZC4uYzU4NGJkZWNhMjkxMmNi
NTJlNDE0ZjNjMGFmYjUwNjczZDgyOTc3MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Db25zb2xlVmlldy5qcwpAQCAtMjU3LDcgKzI1Nyw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xl
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBtc2cuX3VwZGF0ZVJlcGVhdENvdW50KCk7
CiAgICAgICAgICAgICB0aGlzLl9pbmNyZW1lbnRFcnJvcldhcm5pbmdDb3VudChtc2cpOwogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgdmFyIG1zZ0NvcHkgPSBuZXcgV2ViSW5zcGVjdG9y
LkNvbnNvbGVNZXNzYWdlKG1zZy5zb3VyY2UsIG1zZy50eXBlLCBtc2cubGV2ZWwsIG1zZy5saW5l
LCBtc2cudXJsLCBjb3VudCAtIHByZXZSZXBlYXRDb3VudCwgbXNnLl9tZXNzYWdlVGV4dCwgbXNn
Ll9wYXJhbWV0ZXJzLCBtc2cuX3N0YWNrVHJhY2UpOworICAgICAgICAgICAgdmFyIG1zZ0NvcHkg
PSBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlKG1zZy5zb3VyY2UsIG1zZy50eXBlLCBt
c2cubGV2ZWwsIG1zZy5saW5lLCBtc2cudXJsLCBjb3VudCAtIHByZXZSZXBlYXRDb3VudCwgbXNn
Ll9tZXNzYWdlVGV4dCwgbXNnLl9wYXJhbWV0ZXJzLCBtc2cuX3N0YWNrVHJhY2UsIG1zZy5faHR0
cE1ldGhvZCwgbXNnLl9odHRwU3RhdHVzQ29kZSk7CiAgICAgICAgICAgICBtc2dDb3B5LnRvdGFs
UmVwZWF0Q291bnQgPSBjb3VudDsKICAgICAgICAgICAgIG1zZ0NvcHkuX2Zvcm1hdE1lc3NhZ2Uo
KTsKICAgICAgICAgICAgIHRoaXMuYWRkTWVzc2FnZShtc2dDb3B5KTsKQEAgLTYyNyw3ICs2Mjcs
NyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogCiBXZWJJbnNwZWN0
b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5WaWV3LnBy
b3RvdHlwZTsKIAotV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlID0gZnVuY3Rpb24oc291cmNl
LCB0eXBlLCBsZXZlbCwgbGluZSwgdXJsLCByZXBlYXRDb3VudCwgbWVzc2FnZSwgcGFyYW1ldGVy
cywgc3RhY2tUcmFjZSkKK1dlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZSA9IGZ1bmN0aW9uKHNv
dXJjZSwgdHlwZSwgbGV2ZWwsIGxpbmUsIHVybCwgcmVwZWF0Q291bnQsIG1lc3NhZ2UsIHBhcmFt
ZXRlcnMsIHN0YWNrVHJhY2UsIGh0dHBNZXRob2QsIGh0dHBTdGF0dXNDb2RlKQogewogICAgIHRo
aXMuc291cmNlID0gc291cmNlOwogICAgIHRoaXMudHlwZSA9IHR5cGU7CkBAIC02NDAsNiArNjQw
LDggQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlID0gZnVuY3Rpb24oc291cmNlLCB0eXBl
LCBsZXZlbCwgbGluZSwgdXJsLCByZXBlYXRDb3UKICAgICB0aGlzLl9tZXNzYWdlVGV4dCA9IG1l
c3NhZ2U7CiAgICAgdGhpcy5fcGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7CiAgICAgdGhpcy5fc3Rh
Y2tUcmFjZSA9IHN0YWNrVHJhY2U7CisgICAgdGhpcy5faHR0cE1ldGhvZCA9IGh0dHBNZXRob2Q7
CisgICAgdGhpcy5faHR0cFN0YXR1c0NvZGUgPSBodHRwU3RhdHVzQ29kZTsKICAgICB0aGlzLl9m
b3JtYXRNZXNzYWdlKCk7CiB9CiAKQEAgLTY1Miw0NCArNjU0LDg4IEBAIFdlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZS5jcmVhdGVUZXh0TWVzc2FnZSA9IGZ1bmN0aW9uKHRleHQsIGxldmVsKQog
V2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9IHsKICAgICBfZm9ybWF0TWVz
c2FnZTogZnVuY3Rpb24oKQogICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3N0YWNrVHJhY2UpIHsK
KyAgICAgICAgICAgIHZhciB0b3BDYWxsRnJhbWUgPSB0aGlzLl9zdGFja1RyYWNlWzBdOworICAg
ICAgICAgICAgdmFyIG1lc3NhZ2VVcmwgPSB0b3BDYWxsRnJhbWUuc291cmNlVVJMOworICAgICAg
ICAgICAgdmFyIG1lc3NhZ2VMaW5lID0gdG9wQ2FsbEZyYW1lLmxpbmVOdW1iZXI7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICB2YXIgbWVzc2FnZVVybCA9IHRoaXMudXJsOworICAgICAg
ICAgICAgdmFyIG1lc3NhZ2VMaW5lID0gdGhpcy5saW5lOworICAgICAgICB9CisKKyAgICAgICAg
dmFyIG1lc3NhZ2VUZXh0OwogICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkgewotICAgICAgICAg
ICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuQXNzZXJ0Ogog
ICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUu
VHJhY2U6CisgICAgICAgICAgICAgICAgbWVzc2FnZVRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgiY29uc29sZS50cmFjZSgpIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5VbmNhdWdo
dEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICB2YXIgb2wgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJvbCIpOwotICAgICAgICAgICAgICAgIG9sLmNsYXNzTmFtZSA9ICJvdXRsaW5lLWRpc2Ns
b3N1cmUiOwotICAgICAgICAgICAgICAgIHZhciB0cmVlT3V0bGluZSA9IG5ldyBUcmVlT3V0bGlu
ZShvbCk7Ci0gICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VUZXh0OwotICAgICAgICAgICAgICAg
IGlmICh0aGlzLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlw
ZS5Bc3NlcnQpCi0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VUZXh0ID0gdGhpcy5fZm9ybWF0
KHRoaXMuX3BhcmFtZXRlcnMpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlRyYWNlKQotICAgICAg
ICAgICAgICAgICAgICBtZXNzYWdlVGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJjb25z
b2xlLnRyYWNlKCkiKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IG1lc3NhZ2VUZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGhpcy5fbWVzc2FnZVRleHQp
OwotCi0gICAgICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKLSAgICAgICAgICAgICAgICB0aGlzLl9hZGRNZXNzYWdlSGVhZGVyKGNvbnRlbnQs
IG1lc3NhZ2VUZXh0KTsKLSAgICAgICAgICAgICAgICB2YXIgcm9vdCA9IG5ldyBUcmVlRWxlbWVu
dChjb250ZW50LCBudWxsLCB0cnVlKTsKLSAgICAgICAgICAgICAgICBjb250ZW50LnRyZWVFbGVt
ZW50Rm9yVGVzdCA9IHJvb3Q7Ci0gICAgICAgICAgICAgICAgdHJlZU91dGxpbmUuYXBwZW5kQ2hp
bGQocm9vdCk7Ci0gICAgICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gV2ViSW5zcGVjdG9y
LkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlRyYWNlKQotICAgICAgICAgICAgICAgICAgICBy
b290LmV4cGFuZCgpOwotCi0gICAgICAgICAgICAgICAgdGhpcy5fcG9wdWxhdGVTdGFja1RyYWNl
VHJlZUVsZW1lbnQocm9vdCk7Ci0gICAgICAgICAgICAgICAgdGhpcy5mb3JtYXR0ZWRNZXNzYWdl
ID0gb2w7CisgICAgICAgICAgICAgICAgbWVzc2FnZVRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSh0aGlzLl9tZXNzYWdlVGV4dCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5OZXR3b3Jr
RXJyb3I6CisgICAgICAgICAgICAgICAgbWVzc2FnZVRleHQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJzcGFuIik7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2h0dHBNZXRob2QpCisgICAg
ICAgICAgICAgICAgICAgIG1lc3NhZ2VUZXh0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKHRoaXMuX2h0dHBNZXRob2QgKyAiICIpKTsKKyAgICAgICAgICAgICAgICBtZXNzYWdl
VGV4dC5hcHBlbmRDaGlsZChXZWJJbnNwZWN0b3IubGlua2lmeVVSTEFzTm9kZSh0aGlzLnVybCkp
OworICAgICAgICAgICAgICAgIG1lc3NhZ2VUZXh0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKCIgIiArIHRoaXMuX2h0dHBTdGF0dXNDb2RlICsgIiAoIiArIHRoaXMuX21lc3Nh
Z2VUZXh0ICsgIikiKSk7CisgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9zdGFja1RyYWNlKSB7
CisgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMudXJsIGlzIHRoZSB1cmwgb2YgcmVxdWVzdGVk
IHJlc291cmNlLCBub3QgdGhlIGNvZGUgd2hpY2ggaXNzdWVkIHRoZSByZXF1ZXN0LAorICAgICAg
ICAgICAgICAgICAgICAvLyBhdm9pZCB1c2luZyBpdCBhcyBtZXNzYWdlVXJsCisgICAgICAgICAg
ICAgICAgICAgIG1lc3NhZ2VVcmwgPSB1bmRlZmluZWQ7CisgICAgICAgICAgICAgICAgICAgIG1l
c3NhZ2VMaW5lID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlw
ZS5Bc3NlcnQ6CisgICAgICAgICAgICAgICAgdmFyIGFyZ3MgPSBbV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJBc3NlcnRpb24gZmFpbGVkOiIpXTsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGFy
YW1ldGVycykKKyAgICAgICAgICAgICAgICAgICAgYXJncyA9IGFyZ3MuY29uY2F0KHRoaXMuX3Bh
cmFtZXRlcnMpOworICAgICAgICAgICAgICAgIG1lc3NhZ2VUZXh0ID0gdGhpcy5fZm9ybWF0KGFy
Z3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0
b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuT2JqZWN0OgogICAgICAgICAgICAgICAgIHZh
ciBvYmogPSB0aGlzLl9wYXJhbWV0ZXJzID8gdGhpcy5fcGFyYW1ldGVyc1swXSA6IHVuZGVmaW5l
ZDsKLSAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZE1lc3NhZ2UgPSB0aGlzLl9mb3JtYXQo
WyIlTyIsIG9ial0pOworICAgICAgICAgICAgICAgIHZhciBhcmdzID0gWyIlTyIsIG9ial07Cisg
ICAgICAgICAgICAgICAgbWVzc2FnZVRleHQgPSB0aGlzLl9mb3JtYXQoYXJncyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIHZh
ciBhcmdzID0gdGhpcy5fcGFyYW1ldGVycyB8fCBbdGhpcy5fbWVzc2FnZVRleHRdOwotICAgICAg
ICAgICAgICAgIHRoaXMuZm9ybWF0dGVkTWVzc2FnZSA9IHRoaXMuX2Zvcm1hdChhcmdzKTsKKyAg
ICAgICAgICAgICAgICBtZXNzYWdlVGV4dCA9IHRoaXMuX2Zvcm1hdChhcmdzKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIHRoaXMuX2Zvcm1hdHRlZE1lc3Nh
Z2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIHRoaXMuX2Zvcm1h
dHRlZE1lc3NhZ2UuY2xhc3NOYW1lID0gImNvbnNvbGUtbWVzc2FnZS10ZXh0IHNvdXJjZS1jb2Rl
IjsKKworICAgICAgICBpZiAobWVzc2FnZVVybCAmJiBtZXNzYWdlVXJsICE9PSAidW5kZWZpbmVk
IikgeworICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQgPSBXZWJJbnNwZWN0b3IubGlua2lmeVJl
c291cmNlQXNOb2RlKG1lc3NhZ2VVcmwsICJzY3JpcHRzIiwgbWVzc2FnZUxpbmUsICJjb25zb2xl
LW1lc3NhZ2UtdXJsIik7CisgICAgICAgICAgICB0aGlzLl9mb3JtYXR0ZWRNZXNzYWdlLmFwcGVu
ZENoaWxkKHVybEVsZW1lbnQpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fZm9ybWF0dGVk
TWVzc2FnZS5hcHBlbmRDaGlsZChtZXNzYWdlVGV4dCk7CisKKyAgICAgICAgaWYgKHRoaXMuX3N0
YWNrVHJhY2UpIHsKKyAgICAgICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7CisgICAgICAgICAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuVHJhY2U6
CisgICAgICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2Fn
ZVR5cGUuVW5jYXVnaHRFeGNlcHRpb246CisgICAgICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0
b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuTmV0d29ya0Vycm9yOgorICAgICAgICAgICAg
ICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkFzc2VydDog
eworICAgICAgICAgICAgICAgICAgICB2YXIgb2wgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJv
bCIpOworICAgICAgICAgICAgICAgICAgICBvbC5jbGFzc05hbWUgPSAib3V0bGluZS1kaXNjbG9z
dXJlIjsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHRyZWVPdXRsaW5lID0gbmV3IFRyZWVPdXRs
aW5lKG9sKTsKKworICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudCA9IHRoaXMuX2Zvcm1h
dHRlZE1lc3NhZ2U7CisgICAgICAgICAgICAgICAgICAgIHZhciByb290ID0gbmV3IFRyZWVFbGVt
ZW50KGNvbnRlbnQsIG51bGwsIHRydWUpOworICAgICAgICAgICAgICAgICAgICBjb250ZW50LnRy
ZWVFbGVtZW50Rm9yVGVzdCA9IHJvb3Q7CisgICAgICAgICAgICAgICAgICAgIHRyZWVPdXRsaW5l
LmFwcGVuZENoaWxkKHJvb3QpOworICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50eXBlID09
PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuVHJhY2UpCisgICAgICAg
ICAgICAgICAgICAgICAgICByb290LmV4cGFuZCgpOworCisgICAgICAgICAgICAgICAgICAgIHRo
aXMuX3BvcHVsYXRlU3RhY2tUcmFjZVRyZWVFbGVtZW50KHJvb3QpOworICAgICAgICAgICAgICAg
ICAgICB0aGlzLl9mb3JtYXR0ZWRNZXNzYWdlID0gb2w7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgLy8gVGhpcyBpcyB1c2VkIGZvciBpbmxp
bmUgbWVzc2FnZSBidWJibGVzIGluIFNvdXJjZUZyYW1lcywgb3Igb3RoZXIgcGxhaW4tdGV4dCBy
ZXByZXNlbnRhdGlvbnMuCi0gICAgICAgIHRoaXMubWVzc2FnZSA9IHRoaXMuZm9ybWF0dGVkTWVz
c2FnZS50ZXh0Q29udGVudDsKKyAgICAgICAgdGhpcy5tZXNzYWdlID0gdGhpcy5fZm9ybWF0dGVk
TWVzc2FnZS50ZXh0Q29udGVudDsKICAgICB9LAogCiAgICAgaXNFcnJvck9yV2FybmluZzogZnVu
Y3Rpb24oKQpAQCAtODA5LDEyICs4NTUsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2Uu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgICAgIH0KIAot
ICAgICAgICBpZiAodGhpcy50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVz
c2FnZVR5cGUuVHJhY2UgfHwKLSAgICAgICAgICAgIHRoaXMudHlwZSA9PT0gV2ViSW5zcGVjdG9y
LkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkFzc2VydCB8fAotICAgICAgICAgICAgdGhpcy50
eXBlID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuVW5jYXVnaHRF
eGNlcHRpb24pCi0gICAgICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZm9ybWF0dGVk
TWVzc2FnZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuX2FkZE1lc3NhZ2VIZWFk
ZXIoZWxlbWVudCwgdGhpcy5mb3JtYXR0ZWRNZXNzYWdlKTsKKyAgICAgICAgZWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9mb3JtYXR0ZWRNZXNzYWdlKTsKIAogICAgICAgICBpZiAodGhpcy5yZXBl
YXRDb3VudCA+IDEpCiAgICAgICAgICAgICB0aGlzLl91cGRhdGVSZXBlYXRDb3VudCgpOwpAQCAt
ODQyLDIxICs4ODMsNiBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlID0g
ewogICAgICAgICB9CiAgICAgfSwKIAotICAgIF9hZGRNZXNzYWdlSGVhZGVyOiBmdW5jdGlvbihw
YXJlbnRFbGVtZW50LCBmb3JtYXR0ZWRNZXNzYWdlKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMu
dXJsICYmIHRoaXMudXJsICE9PSAidW5kZWZpbmVkIikgewotICAgICAgICAgICAgdmFyIHVybEVs
ZW1lbnQgPSBXZWJJbnNwZWN0b3IubGlua2lmeVJlc291cmNlQXNOb2RlKHRoaXMudXJsLCAic2Ny
aXB0cyIsIHRoaXMubGluZSwgImNvbnNvbGUtbWVzc2FnZS11cmwiKTsKLSAgICAgICAgICAgIHBh
cmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodXJsRWxlbWVudCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICB2YXIgbWVzc2FnZVRleHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIp
OwotICAgICAgICBtZXNzYWdlVGV4dEVsZW1lbnQuY2xhc3NOYW1lID0gImNvbnNvbGUtbWVzc2Fn
ZS10ZXh0IHNvdXJjZS1jb2RlIjsKLSAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkFzc2VydCkKLSAgICAgICAgICAgIG1lc3Nh
Z2VUZXh0RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkFzc2VydGlvbiBmYWlsZWQ6ICIpKSk7Ci0gICAgICAgIG1lc3NhZ2VU
ZXh0RWxlbWVudC5hcHBlbmRDaGlsZChmb3JtYXR0ZWRNZXNzYWdlKTsKLSAgICAgICAgcGFyZW50
RWxlbWVudC5hcHBlbmRDaGlsZChtZXNzYWdlVGV4dEVsZW1lbnQpOwotICAgIH0sCi0KICAgICBf
dXBkYXRlUmVwZWF0Q291bnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICBpZiAoIXRoaXMucmVwZWF0
Q291bnRFbGVtZW50KSB7CiAgICAgICAgICAgICB0aGlzLnJlcGVhdENvdW50RWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKQEAgLTg5Niw2ICs5MjIsNyBAQCBXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlID0gewogICAgICAgICBzd2l0Y2ggKHRoaXMu
dHlwZSkgewogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVz
c2FnZVR5cGUuTG9nOgogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2UuTWVzc2FnZVR5cGUuVW5jYXVnaHRFeGNlcHRpb246CisgICAgICAgICAgICBjYXNlIFdlYklu
c3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5OZXR3b3JrRXJyb3I6CiAgICAgICAg
ICAgICAgICAgdHlwZVN0cmluZyA9ICJMb2ciOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuT2Jq
ZWN0OgpAQCAtOTM4LDIwICs5NjUsMzYgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAg
IHJldHVybiBzb3VyY2VTdHJpbmcgKyAiICIgKyB0eXBlU3RyaW5nICsgIiAiICsgbGV2ZWxTdHJp
bmcgKyAiOiAiICsgdGhpcy5mb3JtYXR0ZWRNZXNzYWdlLnRleHRDb250ZW50ICsgIlxuIiArIHRo
aXMudXJsICsgIiBsaW5lICIgKyB0aGlzLmxpbmU7CisgICAgICAgIHJldHVybiBzb3VyY2VTdHJp
bmcgKyAiICIgKyB0eXBlU3RyaW5nICsgIiAiICsgbGV2ZWxTdHJpbmcgKyAiOiAiICsgdGhpcy5f
Zm9ybWF0dGVkTWVzc2FnZS50ZXh0Q29udGVudCArICJcbiIgKyB0aGlzLnVybCArICIgbGluZSAi
ICsgdGhpcy5saW5lOwogICAgIH0sCiAKLSAgICBpc0VxdWFsOiBmdW5jdGlvbihtc2csIGRpc3Jl
Z3VhcmRHcm91cCkKKyAgICBpc0VxdWFsOiBmdW5jdGlvbihtc2cpCiAgICAgewogICAgICAgICBp
ZiAoIW1zZykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgICAgICBpZiAodGhpcy5f
c3RhY2tUcmFjZSkgeworICAgICAgICAgICAgaWYgKCFtc2cuX3N0YWNrVHJhY2UpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdmFyIGwgPSB0aGlzLl9zdGFja1Ry
YWNlOworICAgICAgICAgICAgdmFyIHIgPSBtc2cuX3N0YWNrVHJhY2U7CisgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGwubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAo
bFtpXS5zY3JpcHROYW1lICE9PSByW2ldLnNjcmlwdE5hbWUgfHwKKyAgICAgICAgICAgICAgICAg
ICAgbFtpXS5mdW5jdGlvbk5hbWUgIT09IHJbaV0uZnVuY3Rpb25OYW1lIHx8CisgICAgICAgICAg
ICAgICAgICAgIGxbaV0ubGluZU51bWJlciAhPT0gcltpXS5saW5lTnVtYmVyIHx8CisgICAgICAg
ICAgICAgICAgICAgIGxbaV0uY29sdW1uICE9PSByW2ldLmNvbHVtbikKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAg
cmV0dXJuICh0aGlzLnNvdXJjZSA9PT0gbXNnLnNvdXJjZSkKICAgICAgICAgICAgICYmICh0aGlz
LnR5cGUgPT09IG1zZy50eXBlKQogICAgICAgICAgICAgJiYgKHRoaXMubGV2ZWwgPT09IG1zZy5s
ZXZlbCkKICAgICAgICAgICAgICYmICh0aGlzLmxpbmUgPT09IG1zZy5saW5lKQogICAgICAgICAg
ICAgJiYgKHRoaXMudXJsID09PSBtc2cudXJsKQotICAgICAgICAgICAgJiYgKHRoaXMubWVzc2Fn
ZSA9PT0gbXNnLm1lc3NhZ2UpOworICAgICAgICAgICAgJiYgKHRoaXMubWVzc2FnZSA9PT0gbXNn
Lm1lc3NhZ2UpCisgICAgICAgICAgICAmJiAodGhpcy5faHR0cE1ldGhvZCA9PT0gbXNnLl9odHRw
TWV0aG9kKQorICAgICAgICAgICAgJiYgKHRoaXMuX2h0dHBTdGF0dXNDb2RlID09PSBtc2cuX2h0
dHBTdGF0dXNDb2RlKTsKICAgICB9CiB9CiAKQEAgLTk3NCw3ICsxMDE3LDggQEAgV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlID0gewogICAgIEVuZEdyb3VwOiA1LAogICAg
IEFzc2VydDogNiwKICAgICBVbmNhdWdodEV4Y2VwdGlvbjogNywKLSAgICBSZXN1bHQ6IDgKKyAg
ICBOZXR3b3JrRXJyb3I6OCwKKyAgICBSZXN1bHQ6IDkKIH0KIAogV2ViSW5zcGVjdG9yLkNvbnNv
bGVNZXNzYWdlLk1lc3NhZ2VMZXZlbCA9IHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmpzCmluZGV4IDAwODAxMGQ5Y2Y5MWY5ZTczN2JkZjFmMjI1NWQyMWU2ZDVkNWUzZGYu
LjVkYjFlY2ZjMzZmYzBlN2Y1NGJmYzFkZWE3OTQ2MmU0YjA1MGQxZWIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtMTM4Niw3ICsxMzg2LDkgQEAgV2ViSW5z
cGVjdG9yLmFkZENvbnNvbGVNZXNzYWdlID0gZnVuY3Rpb24ocGF5bG9hZCkKICAgICAgICAgcGF5
bG9hZC5yZXBlYXRDb3VudCwKICAgICAgICAgcGF5bG9hZC5tZXNzYWdlLAogICAgICAgICBwYXls
b2FkLnBhcmFtZXRlcnMsCi0gICAgICAgIHBheWxvYWQuc3RhY2tUcmFjZSk7CisgICAgICAgIHBh
eWxvYWQuc3RhY2tUcmFjZSwKKyAgICAgICAgcGF5bG9hZC5odHRwTWV0aG9kLAorICAgICAgICBw
YXlsb2FkLmh0dHBTdGF0dXNDb2RlKTsKICAgICB0aGlzLmNvbnNvbGUuYWRkTWVzc2FnZShjb25z
b2xlTWVzc2FnZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9Db25zb2xlLmggYi9X
ZWJDb3JlL3BhZ2UvQ29uc29sZS5oCmluZGV4IDE5ZjFhNTc1MzA2MmI5ZDFjMmM1YTAyZjdiZTI2
NzAxOTI2ZTk0NmYuLmRkNjkyYTJmN2MwMTI1ZDYzMWNmMTIxM2JlNzVjNGQ1Y2I4NWYwODEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9Db25zb2xlLmgKKysrIGIvV2ViQ29yZS9wYWdlL0NvbnNv
bGUuaApAQCAtNjgsNyArNjgsOCBAQCBlbnVtIE1lc3NhZ2VUeXBlIHsKICAgICBTdGFydEdyb3Vw
Q29sbGFwc2VkTWVzc2FnZVR5cGUsCiAgICAgRW5kR3JvdXBNZXNzYWdlVHlwZSwKICAgICBBc3Nl
cnRNZXNzYWdlVHlwZSwKLSAgICBVbmNhdWdodEV4Y2VwdGlvbk1lc3NhZ2VUeXBlCisgICAgVW5j
YXVnaHRFeGNlcHRpb25NZXNzYWdlVHlwZSwKKyAgICBOZXR3b3JrRXJyb3JNZXNzYWdlVHlwZQog
fTsKIAogZW51bSBNZXNzYWdlTGV2ZWwgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76027</attachid>
            <date>2010-12-09 02:15:09 -0800</date>
            <delta_ts>2011-09-19 10:26:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50390-20101209131506.patch</filename>
            <type>text/plain</type>
            <size>31842</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyZjUxZmJlNTA4MGRmNTJkNWYyNDQ5MDUyYWNhNjg5ZTgxZDQyYzY5Li4zOWYxZjg1
ZmY4ZTliMWRiOGMwZTY2NDkwMmMwYWNjNDNiZTVkN2UyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTAtMTItMDkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogQ29uc29sZSByZWNvcmRzIGZvciBmYWlsZWQgWEhScyBzaG91bGQgY29udGFpbiBjYWxsIHN0
YWNrIGFuZCByZXF1ZXN0IG1ldGhvZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTAzOTAKKworICAgICAgICBUaGUgZXhwZWN0YXRpb25zIG5lZWRlZCB1
cGRhdGUgdWUgdG8gbG9nIGZvcm1hdCBjaGFuZ2VzLgorCisgICAgICAgICogaHR0cC90ZXN0cy9p
bnNwZWN0b3ItZW5hYmxlZC9jb25zb2xlLWxvZy1iZWZvcmUtZnJhbWUtbmF2aWdhdGlvbi1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS1yZXNvdXJj
ZS1lcnJvcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2Nv
bnNvbGUteGhyLWxvZ2dpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtcmVzb3VyY2UtZXJyb3JzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvY29uc29sZS14aHItbG9nZ2luZy1leHBlY3RlZC50eHQ6IENvcGllZCBmcm9tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUteGhyLWxvZ2dpbmctZXhwZWN0ZWQu
dHh0LgorCiAyMDEwLTEyLTA4ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSB0ZXN0IGV4cGVjdGF0aW9ucyBhZnRlciBy
NzM1MDQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFi
bGVkL2NvbnNvbGUtbG9nLWJlZm9yZS1mcmFtZS1uYXZpZ2F0aW9uLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvY29uc29sZS1sb2ctYmVmb3Jl
LWZyYW1lLW5hdmlnYXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IGQwNTA1ZThkNTZhM2U5MGMwNDM1
NTYzNzZhZTFhZTIyMTNlY2FlYWUuLjMxZTc4NDA2MWE5OGZmNTNmZGFiNjkxYjZkZmM3YTM2OGMx
MmY5NTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJs
ZWQvY29uc29sZS1sb2ctYmVmb3JlLWZyYW1lLW5hdmlnYXRpb24tZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvY29uc29sZS1sb2ctYmVm
b3JlLWZyYW1lLW5hdmlnYXRpb24tZXhwZWN0ZWQudHh0CkBAIC00LDcgKzQsNyBAQCBUZXN0cyB0
aGF0IFdlYiBJbnNwZWN0b3Igd29uJ3QgY3Jhc2ggaWYgdGhlcmUgYXJlIG1lc3NhZ2VzIHdyaXR0
ZW4gdG8gY29uc29sZSBmcgogCiBSZWNlaXZlZCBjb25zb2xlIG1lc3NhZ2VzOgogTWVzc2FnZVsw
XToKLVVSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci1lbmFibGVkL3Jlc291cmNl
cy9jb25zb2xlLWxvZy1mcmFtZS1iZWZvcmUtbmF2aWdhdGlvbi5odG1sCi1NZXNzYWdlOiBDb25z
b2xlIG1lc3NhZ2UgKEMpICVkIHdpdGggZWxlbWVudAorVVJMOiAKK01lc3NhZ2U6IHJlc291cmNl
cy9jb25zb2xlLWxvZy1mcmFtZS1iZWZvcmUtbmF2aWdhdGlvbi5odG1sOjVDb25zb2xlIG1lc3Nh
Z2UgKEMpICVkIHdpdGggZWxlbWVudAogVEVTVCBDT01QTEVURS4KIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS1yZXNvdXJjZS1lcnJvcnMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS1yZXNv
dXJjZS1lcnJvcnMtZXhwZWN0ZWQudHh0CmluZGV4IDY0ZDAxNGFkMmY2M2VjYmQzMTE0NDViYTkx
ZjQ1NjNlOGNjZThlN2YuLjYzMjliYzUyNTkwYjVmZTc5OTJlYzQxZjY2ZDYzZjI1YzZhMTI2MTUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtcmVz
b3VyY2UtZXJyb3JzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9jb25zb2xlLXJlc291cmNlLWVycm9ycy1leHBlY3RlZC50eHQKQEAgLTEsOCArMSw4
IEBACiAgVGVzdHMgdGhhdCBlcnJvcnMgdG8gbG9hZCBhIHJlc291cmNlIGNhdXNlIGVycm9yIG1l
c3NhZ2VzIHRvIGJlIGxvZ2dlZCB0byBjb25zb2xlLgogCiBQYWdlIHJlbG9hZGVkLgotbWlzc2lu
Zy5jc3NGYWlsZWQgdG8gbG9hZCByZXNvdXJjZTogdGhlIHNlcnZlciByZXNwb25kZWQgd2l0aCBh
IHN0YXR1cyBvZiA0MDQgKE5vdCBGb3VuZCkgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtZXJyb3It
bGV2ZWwKLW5vbi1leGlzdGVudC1pZnJhbWUuaHRtbEZhaWxlZCB0byBsb2FkIHJlc291cmNlOiB0
aGUgc2VydmVyIHJlc3BvbmRlZCB3aXRoIGEgc3RhdHVzIG9mIDQwNCAoTm90IEZvdW5kKSBjb25z
b2xlLW1lc3NhZ2UgY29uc29sZS1lcnJvci1sZXZlbAotbm9uLWV4aXN0ZW50LXNjcmlwdC5qc0Zh
aWxlZCB0byBsb2FkIHJlc291cmNlOiB0aGUgc2VydmVyIHJlc3BvbmRlZCB3aXRoIGEgc3RhdHVz
IG9mIDQwNCAoTm90IEZvdW5kKSBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1lcnJvci1sZXZlbAot
bm9uLWV4aXN0ZW50LXhockZhaWxlZCB0byBsb2FkIHJlc291cmNlOiB0aGUgc2VydmVyIHJlc3Bv
bmRlZCB3aXRoIGEgc3RhdHVzIG9mIDQwNCAoTm90IEZvdW5kKSBjb25zb2xlLW1lc3NhZ2UgY29u
c29sZS1lcnJvci1sZXZlbAorbWlzc2luZy5jc3NHRVQgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2lu
c3BlY3Rvci9taXNzaW5nLmNzcyA0MDQgKE5vdCBGb3VuZCkgY29uc29sZS1tZXNzYWdlIGNvbnNv
bGUtZXJyb3ItbGV2ZWwKK25vbi1leGlzdGVudC1pZnJhbWUuaHRtbEdFVCBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvaW5zcGVjdG9yL25vbi1leGlzdGVudC1pZnJhbWUuaHRtbCA0MDQgKE5vdCBGb3Vu
ZCkgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtZXJyb3ItbGV2ZWwKK25vbi1leGlzdGVudC1zY3Jp
cHQuanNHRVQgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9ub24tZXhpc3RlbnQtc2Ny
aXB0LmpzIDQwNCAoTm90IEZvdW5kKSBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1lcnJvci1sZXZl
bAorbm9uLWV4aXN0ZW50LXhockdFVCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25v
bi1leGlzdGVudC14aHIgNDA0IChOb3QgRm91bmQpIGNvbnNvbGUtbWVzc2FnZSBjb25zb2xlLWVy
cm9yLWxldmVsCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2NvbnNvbGUteGhyLWxvZ2dpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvY29uc29sZS14aHItbG9nZ2luZy1leHBlY3RlZC50eHQKaW5kZXggZDcwMmZj
ZDRjOGNmMjFkNTEwZWU0NThkNDZhMDkxOTJhYjY4NTI3Yy4uZGUzNzFlODUwN2RjMjQ1ZTQ2ZjY4
OTA2MTM5ZmRhZTQwZjljYjA0ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvY29uc29sZS14aHItbG9nZ2luZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS14aHItbG9nZ2luZy1leHBlY3RlZC50eHQK
QEAgLTEyLDEzICsxMiwxMyBAQCBjb25zb2xlLXhoci1sb2dnaW5nLmh0bWw6MTFlbmFibGVkCiBj
b25zb2xlLXhoci1sb2dnaW5nLmh0bWw6NDBzZW5kaW5nIGEgR0VUIHJlcXVlc3QgdG8gcmVzb3Vy
Y2VzL3hoci1leGlzdHMuaHRtbAogWEhSIGZpbmlzaGVkIGxvYWRpbmc6ICJodHRwOi8vMTI3LjAu
MC4xOjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy94aHItZXhpc3RzLmh0bWwiLgogY29uc29sZS14
aHItbG9nZ2luZy5odG1sOjQwc2VuZGluZyBhIEdFVCByZXF1ZXN0IHRvIHJlc291cmNlcy94aHIt
ZG9lcy1ub3QtZXhpc3QuaHRtbAoteGhyLWRvZXMtbm90LWV4aXN0Lmh0bWxGYWlsZWQgdG8gbG9h
ZCByZXNvdXJjZTogdGhlIHNlcnZlciByZXNwb25kZWQgd2l0aCBhIHN0YXR1cyBvZiA0MDQgKE5v
dCBGb3VuZCkKK3hoci1kb2VzLW5vdC1leGlzdC5odG1sR0VUIGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9pbnNwZWN0b3IvcmVzb3VyY2VzL3hoci1kb2VzLW5vdC1leGlzdC5odG1sIDQwNCAoTm90IEZv
dW5kKQogWEhSIGZpbmlzaGVkIGxvYWRpbmc6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVj
dG9yL3Jlc291cmNlcy94aHItZG9lcy1ub3QtZXhpc3QuaHRtbCIuCiBjb25zb2xlLXhoci1sb2dn
aW5nLmh0bWw6NDBzZW5kaW5nIGEgUE9TVCByZXF1ZXN0IHRvIHJlc291cmNlcy9wb3N0LXRhcmdl
dC5jZ2kKIFhIUiBmaW5pc2hlZCBsb2FkaW5nOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3Bl
Y3Rvci9yZXNvdXJjZXMvcG9zdC10YXJnZXQuY2dpIi4KIGNvbnNvbGUteGhyLWxvZ2dpbmcuaHRt
bDoyMWRpc2FibGVkCiBjb25zb2xlLXhoci1sb2dnaW5nLmh0bWw6NDBzZW5kaW5nIGEgR0VUIHJl
cXVlc3QgdG8gcmVzb3VyY2VzL3hoci1leGlzdHMuaHRtbAogY29uc29sZS14aHItbG9nZ2luZy5o
dG1sOjQwc2VuZGluZyBhIEdFVCByZXF1ZXN0IHRvIHJlc291cmNlcy94aHItZG9lcy1ub3QtZXhp
c3QuaHRtbAoteGhyLWRvZXMtbm90LWV4aXN0Lmh0bWxGYWlsZWQgdG8gbG9hZCByZXNvdXJjZTog
dGhlIHNlcnZlciByZXNwb25kZWQgd2l0aCBhIHN0YXR1cyBvZiA0MDQgKE5vdCBGb3VuZCkKK3ho
ci1kb2VzLW5vdC1leGlzdC5odG1sR0VUIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3Iv
cmVzb3VyY2VzL3hoci1kb2VzLW5vdC1leGlzdC5odG1sIDQwNCAoTm90IEZvdW5kKQogY29uc29s
ZS14aHItbG9nZ2luZy5odG1sOjQwc2VuZGluZyBhIFBPU1QgcmVxdWVzdCB0byByZXNvdXJjZXMv
cG9zdC10YXJnZXQuY2dpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtcmVzb3VyY2UtZXJyb3JzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2NvbnNvbGUtcmVzb3VyY2UtZXJyb3JzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1
NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTVmNGRm
MmQyZjkwZTZjMzc3NGM5ODEzYzYxZjBiMmE5YWQ0ZDY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS1y
ZXNvdXJjZS1lcnJvcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorIFRlc3RzIHRoYXQg
ZXJyb3JzIHRvIGxvYWQgYSByZXNvdXJjZSBjYXVzZSBlcnJvciBtZXNzYWdlcyB0byBiZSBsb2dn
ZWQgdG8gY29uc29sZS4KKworUGFnZSByZWxvYWRlZC4KK2NvbnNvbGUtcmVzb3VyY2UtZXJyb3Jz
Lmh0bWw6MTFHRVQgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9ub24tZXhpc3RlbnQt
eGhyIDQwNCAoTm90IEZvdW5kKSBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1lcnJvci1sZXZlbAor
bWlzc2luZy5jc3NHRVQgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9taXNzaW5nLmNz
cyA0MDQgKE5vdCBGb3VuZCkgY29uc29sZS1tZXNzYWdlIGNvbnNvbGUtZXJyb3ItbGV2ZWwKK25v
bi1leGlzdGVudC1pZnJhbWUuaHRtbEdFVCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9y
L25vbi1leGlzdGVudC1pZnJhbWUuaHRtbCA0MDQgKE5vdCBGb3VuZCkgY29uc29sZS1tZXNzYWdl
IGNvbnNvbGUtZXJyb3ItbGV2ZWwKK25vbi1leGlzdGVudC1zY3JpcHQuanNHRVQgaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2luc3BlY3Rvci9ub24tZXhpc3RlbnQtc2NyaXB0LmpzIDQwNCAoTm90IEZv
dW5kKSBjb25zb2xlLW1lc3NhZ2UgY29uc29sZS1lcnJvci1sZXZlbApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS14
aHItbG9nZ2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXhoci1sb2dnaW5nLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41MDkxODNkNDRhMDAzODQyMjBkZmNmOGI4MDhjODJhOGU4YWRlZDRkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvY29uc29sZS14aHItbG9nZ2luZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMyBAQAor
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDExOiBlbmFibGVkCitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
NDA6IHNlbmRpbmcgYSAlcyByZXF1ZXN0IHRvICVzCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNDA6
IHNlbmRpbmcgYSAlcyByZXF1ZXN0IHRvICVzCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNDA6IHNl
bmRpbmcgYSAlcyByZXF1ZXN0IHRvICVzCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjE6IGRpc2Fi
bGVkCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNDA6IHNlbmRpbmcgYSAlcyByZXF1ZXN0IHRvICVz
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNDA6IHNlbmRpbmcgYSAlcyByZXF1ZXN0IHRvICVzCitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgNDA6IHNlbmRpbmcgYSAlcyByZXF1ZXN0IHRvICVzCitUZXN0
cyB0aGF0IFhNTEh0dHBSZXF1ZXN0IExvZ2dpbmcgd29ya3Mgd2hlbiBFbmFibGVkIGFuZCBkb2Vz
bid0IHNob3cgbG9ncyB3aGVuIERpc2FibGVkLgorCitjb25zb2xlLXhoci1sb2dnaW5nLmh0bWw6
MTFlbmFibGVkCitjb25zb2xlLXhoci1sb2dnaW5nLmh0bWw6NDBzZW5kaW5nIGEgR0VUIHJlcXVl
c3QgdG8gcmVzb3VyY2VzL3hoci1leGlzdHMuaHRtbAorWEhSIGZpbmlzaGVkIGxvYWRpbmc6ICJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy94aHItZXhpc3RzLmh0bWwi
LgorY29uc29sZS14aHItbG9nZ2luZy5odG1sOjQwc2VuZGluZyBhIEdFVCByZXF1ZXN0IHRvIHJl
c291cmNlcy94aHItZG9lcy1ub3QtZXhpc3QuaHRtbAorY29uc29sZS14aHItbG9nZ2luZy5odG1s
OjQzR0VUIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2VzL3hoci1kb2Vz
LW5vdC1leGlzdC5odG1sIDQwNCAoTm90IEZvdW5kKQorWEhSIGZpbmlzaGVkIGxvYWRpbmc6ICJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy94aHItZG9lcy1ub3QtZXhp
c3QuaHRtbCIuCitjb25zb2xlLXhoci1sb2dnaW5nLmh0bWw6NDBzZW5kaW5nIGEgUE9TVCByZXF1
ZXN0IHRvIHJlc291cmNlcy9wb3N0LXRhcmdldC5jZ2kKK1hIUiBmaW5pc2hlZCBsb2FkaW5nOiAi
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMvcG9zdC10YXJnZXQuY2dp
Ii4KK2NvbnNvbGUteGhyLWxvZ2dpbmcuaHRtbDoyMWRpc2FibGVkCitjb25zb2xlLXhoci1sb2dn
aW5nLmh0bWw6NDBzZW5kaW5nIGEgR0VUIHJlcXVlc3QgdG8gcmVzb3VyY2VzL3hoci1leGlzdHMu
aHRtbAorY29uc29sZS14aHItbG9nZ2luZy5odG1sOjQwc2VuZGluZyBhIEdFVCByZXF1ZXN0IHRv
IHJlc291cmNlcy94aHItZG9lcy1ub3QtZXhpc3QuaHRtbAorY29uc29sZS14aHItbG9nZ2luZy5o
dG1sOjQzR0VUIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2VzL3hoci1k
b2VzLW5vdC1leGlzdC5odG1sIDQwNCAoTm90IEZvdW5kKQorY29uc29sZS14aHItbG9nZ2luZy5o
dG1sOjQwc2VuZGluZyBhIFBPU1QgcmVxdWVzdCB0byByZXNvdXJjZXMvcG9zdC10YXJnZXQuY2dp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDY5YTEwNjJhNDFlYjAxOWMxNTlmYjQxYWRlMDg1OWIyMmM4ZjFmOGIuLmZlNDBiM2Q0NDM4Mjg1
YmZjZjc5NWZmMjJlNGM1MjE1OTk5NGU2NjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTAtMTItMDkgIFl1
cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ29uc29sZSByZWNv
cmRzIGZvciBmYWlsZWQgWEhScyBzaG91bGQgY29udGFpbiBjYWxsIHN0YWNrIGFuZCByZXF1ZXN0
IG1ldGhvZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTAzOTAKKworICAgICAgICBXaGVuIGluc3BlY3RvciBmcm9udC1lbmQgaXMgb3BlbiB3ZSBjYXB0
dXJlIGNhbGwgc3RhY2sgYXQgdGhlIHBsYWNlIHdoZXJlIHJlcXVlc3QgaXMgc2VudCBhbmQKKyAg
ICAgICAgcGFzcyB0aGUgc3RhY2sgYWxvbmcgd2l0aCBvdGhlciByZXF1ZXN0IGRhdGEuIFRoZXJl
IGlzIGEgbmV3IHR5cGUgb2YgY29uc29sZSBtZXNzYWdlcyB3aGljaAorICAgICAgICBpcyBOZXR3
b3JrRXJyb3JNZXNzYWdlVHlwZSwgYWxsIG1lc3NhZ2VzIG9mIHRoYXQgdHlwZSB3aWxsIGhhdmUg
cmVxdWVzdElkIGZpZWxkIGluaXRpYWxpemVkCisgICAgICAgIHdpdGggdGhlIGNvcnJlc3BvbmRp
bmcgbmV0d29yayByZXF1ZXN0IGlkZW50aWZpZXIgc28gdGhhdCBsYXRlciBvbiB3aGVuIHdlIG5l
ZWQgdG8gZGlzcGxheQorICAgICAgICB0aGF0IG1lc3NhZ2UgaW4gdGhlIGZyb250LWVuZCB3ZSBj
b3VsZCBwdWxsIHJlcXVlc3QgZGF0YSBmcm9tIHRoZSBOZXR3b3JrIHBhbmVsIHVzaW5nCisgICAg
ICAgIHRoaXMgaWRlbnRpZmllci4gSWYgdGhlcmUgYXJlIG5vIGRhdGEgZm9yIGdpdmVuIHJlcXVl
c3RJZCBtZXNzYWdlIGZvcm1hdHRpbmcgZmFsbHMgYmFjayB0bworICAgICAgICB0aGUgb2xkIGlt
cGxlbWVudGF0aW9uIHdoaWNoIGxhY2tzIHN1Y2ggdGhpbmdzIGFzIGNhbGwgc3RhY2ssIHJlcXVl
c3QgbWV0aG9kIGFuZCBleGFjdAorICAgICAgICBzb3VyY2UgbG9jYXRpb24uCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29s
ZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNz
YWdlOjphZGRUb0Zyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdlOjpp
c0VxdWFsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yLmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6Omlk
ZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9Db25zb2xlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90
b3R5cGUudXBkYXRlTWVzc2FnZVJlcGVhdENvdW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJv
dG90eXBlLl9mb3JtYXRNZXNzYWdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlTWVz
c2FnZS5wcm90b3R5cGUudG9NZXNzYWdlRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29uc29sZU1lc3NhZ2UucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUuaXNFcXVhbCk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZU1hbmFnZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2VNYW5hZ2VyLnByb3RvdHlwZS5pZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLmFkZENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuaDoKKwog
MjAxMC0xMi0wOCAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3Nh
Z2UuY3BwCmluZGV4IDU4MTJhYTQ2ZGEzMjcwMmZjNjJjYzk2MDNiNTgwZTI1ZGI5NGYyYTMuLmIy
MmE2ZWZhMTBjYWZiYjEzYTU0MTkyYzQ4NTY5MmM2N2RlNmZmOGEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9D
b25zb2xlTWVzc2FnZS5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAwOCBNYXR0IExpbGVrIDx3ZWJraXRAbWF0dGxpbGVrLmNvbT4KLSAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA5LCAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCiAKKyNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQu
aCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JG
cm9udGVuZC5oIgpAQCAtNTEsNiArNTIsNyBAQCBDb25zb2xlTWVzc2FnZTo6Q29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZSBzLCBNZXNzYWdlVHlwZSB0LCBNZXNzYWdlTGV2ZWwgbCwgYwogICAg
ICwgbV9saW5lKGxpKQogICAgICwgbV91cmwodSkKICAgICAsIG1fcmVwZWF0Q291bnQoMSkKKyAg
ICAsIG1fcmVxdWVzdElkKDApCiB7CiB9CiAKQEAgLTYxLDE2ICs2MywyMyBAQCBDb25zb2xlTWVz
c2FnZTo6Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzLCBNZXNzYWdlVHlwZSB0LCBNZXNz
YWdlTGV2ZWwgbCwgYwogICAgICwgbV9tZXNzYWdlKG0pCiAgICAgLCBtX2FyZ3VtZW50cyhhcmd1
bWVudHMpCiAgICAgLCBtX2NhbGxTdGFjayhjYWxsU3RhY2spCisgICAgLCBtX2xpbmUoMCkKKyAg
ICAsIG1fdXJsKCkKICAgICAsIG1fcmVwZWF0Q291bnQoMSkKKyAgICAsIG1fcmVxdWVzdElkKDAp
CiB7Ci0gICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBsYXN0Q2FsbGVyID0gbV9jYWxsU3RhY2st
PmF0KDApOwotICAgIG1fbGluZSA9IGxhc3RDYWxsZXIubGluZU51bWJlcigpOwotICAgIG1fdXJs
ID0gbGFzdENhbGxlci5zb3VyY2VVUkwoKTsKLQorfQogCi0gICAgYm9vbCBzdG9yZVRyYWNlID0g
KHQgPT0gVHJhY2VNZXNzYWdlVHlwZSB8fCB0ID09IFVuY2F1Z2h0RXhjZXB0aW9uTWVzc2FnZVR5
cGUgfHwgdCA9PSBBc3NlcnRNZXNzYWdlVHlwZSk7Ci0gICAgaWYgKCFzdG9yZVRyYWNlKQotICAg
ICAgICBtX2NhbGxTdGFjay5jbGVhcigpOworQ29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2UgcywgTWVzc2FnZVR5cGUgdCwgTWVzc2FnZUxldmVsIGwsIGNvbnN0IFN0
cmluZyYgbSwgY29uc3QgU3RyaW5nJiByZXNwb25zZVVybCwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyKQorICAgIDogbV9zb3VyY2UocykKKyAgICAsIG1fdHlwZSh0KQorICAgICwgbV9sZXZlbChs
KQorICAgICwgbV9tZXNzYWdlKG0pCisgICAgLCBtX2xpbmUoMCkKKyAgICAsIG1fdXJsKHJlc3Bv
bnNlVXJsKQorICAgICwgbV9yZXBlYXRDb3VudCgxKQorICAgICwgbV9yZXF1ZXN0SWQoaWRlbnRp
ZmllcikKK3sKIH0KIAogdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChJbnNwZWN0
b3JGcm9udGVuZCogZnJvbnRlbmQsIEluamVjdGVkU2NyaXB0SG9zdCogaW5qZWN0ZWRTY3JpcHRI
b3N0KQpAQCAtODMsNiArOTIsOCBAQCB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5k
KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCwgSW5qZWN0ZWRTY3JpcHRIbwogICAgIGpzb25P
YmotPnNldFN0cmluZygidXJsIiwgbV91cmwpOwogICAgIGpzb25PYmotPnNldE51bWJlcigicmVw
ZWF0Q291bnQiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fcmVwZWF0Q291bnQpKTsKICAgICBqc29uT2Jq
LT5zZXRTdHJpbmcoIm1lc3NhZ2UiLCBtX21lc3NhZ2UpOworICAgIGlmIChtX3R5cGUgPT0gTmV0
d29ya0Vycm9yTWVzc2FnZVR5cGUpIAorICAgICAgICBqc29uT2JqLT5zZXROdW1iZXIoInJlcXVl
c3RJZCIsIG1fcmVxdWVzdElkKTsKICAgICBpZiAobV9hcmd1bWVudHMgJiYgbV9hcmd1bWVudHMt
PmFyZ3VtZW50Q291bnQoKSkgewogICAgICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dCA9IGluamVjdGVkU2NyaXB0SG9zdC0+aW5qZWN0ZWRTY3JpcHRGb3IobV9hcmd1bWVudHMtPmds
b2JhbFN0YXRlKCkpOwogICAgICAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkg
ewpAQCAtMTI3LDcgKzEzOCw4IEBAIGJvb2wgQ29uc29sZU1lc3NhZ2U6OmlzRXF1YWwoQ29uc29s
ZU1lc3NhZ2UqIG1zZykgY29uc3QKICAgICAgICAgJiYgbXNnLT5tX2xldmVsID09IG1fbGV2ZWwK
ICAgICAgICAgJiYgbXNnLT5tX21lc3NhZ2UgPT0gbV9tZXNzYWdlCiAgICAgICAgICYmIG1zZy0+
bV9saW5lID09IG1fbGluZQotICAgICAgICAmJiBtc2ctPm1fdXJsID09IG1fdXJsOworICAgICAg
ICAmJiBtc2ctPm1fdXJsID09IG1fdXJsCisgICAgICAgICYmIG1zZy0+bV9yZXF1ZXN0SWQgPT0g
bV9yZXF1ZXN0SWQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmggYi9XZWJDb3JlL2luc3BlY3Rvci9Db25z
b2xlTWVzc2FnZS5oCmluZGV4IGE2ZDlhMTg2MGY3MmUxNWYzMGY1Y2U4OWRmMzViYzU0YzUxYmMy
MjUuLjA2YTE3ZDRjNTc0OTlkYjY5ODhiZmIzNTM5OGNmNzVhMDU0YmNkMTggMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvQ29uc29sZU1lc3NhZ2UuaApAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBDb25zb2xlTWVzc2Fn
ZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtLCB1
bnNpZ25lZCBsaSwgY29uc3QgU3RyaW5nJiB1KTsKICAgICBDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG0sIFBhc3NS
ZWZQdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+KTsKKyAg
ICBDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVs
LCBjb25zdCBTdHJpbmcmIG0sIGNvbnN0IFN0cmluZyYgcmVzcG9uc2VVcmwsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllcik7CiAKICAgICB2b2lkIGFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRl
bmQqLCBJbmplY3RlZFNjcmlwdEhvc3QqKTsKICAgICB2b2lkIHVwZGF0ZVJlcGVhdENvdW50SW5D
b25zb2xlKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCk7CkBAIC02OSw2ICs3MCw3IEBAIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgbV9saW5lOwogICAgIFN0cmluZyBtX3VybDsKICAgICB1bnNp
Z25lZCBtX3JlcGVhdENvdW50OworICAgIHVuc2lnbmVkIGludCBtX3JlcXVlc3RJZDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvci5pZGwgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCmluZGV4IDY3YTVj
ZGVlMWFiNTE3NWE0MmIxMDIyOTNiZTc5YmM1M2I3YzUzMDMuLmNiMTE2YzlmZDY0YzU2MTViZmY1
NWRjODcyNDM1MjljOGNjYTRlZGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5pZGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbApAQCAtMTA3LDcg
KzEwNyw3IEBAIG1vZHVsZSBjb3JlIHsKIAogICAgICAgICBbZG9tYWluPVJlc291cmNlc10gdm9p
ZCBjYWNoZWRSZXNvdXJjZXMob3V0IE9iamVjdCByZXNvdXJjZXMpOwogICAgICAgICBbZG9tYWlu
PVJlc291cmNlc10gdm9pZCByZXNvdXJjZUNvbnRlbnQoaW4gdW5zaWduZWQgbG9uZyBmcmFtZUlk
LCBpbiBTdHJpbmcgdXJsLCBpbiBib29sZWFuIGJhc2U2NEVuY29kZSwgb3V0IFN0cmluZyBjb250
ZW50KTsKLSAgICAgICAgW25vdGlmeV0gdm9pZCBpZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3Qo
b3V0IGxvbmcgaWRlbnRpZmllciwgb3V0IFN0cmluZyB1cmwsIG91dCBPYmplY3QgbG9hZGVyKTsK
KyAgICAgICAgW25vdGlmeV0gdm9pZCBpZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3Qob3V0IGxv
bmcgaWRlbnRpZmllciwgb3V0IFN0cmluZyB1cmwsIG91dCBPYmplY3QgbG9hZGVyLCBvdXQgVmFs
dWUgY2FsbFN0YWNrKTsKICAgICAgICAgW25vdGlmeV0gdm9pZCB3aWxsU2VuZFJlcXVlc3Qob3V0
IGxvbmcgaWRlbnRpZmllciwgb3V0IGRvdWJsZSB0aW1lLCBvdXQgT2JqZWN0IHJlcXVlc3QsIG91
dCBPYmplY3QgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgICAgIFtub3RpZnldIHZvaWQgbWFya1Jl
c291cmNlQXNDYWNoZWQob3V0IGxvbmcgaWRlbnRpZmllcik7CiAgICAgICAgIFtub3RpZnldIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGlt
ZSwgb3V0IFN0cmluZyByZXNvdXJjZVR5cGUsIG91dCBPYmplY3QgcmVzcG9uc2UpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA2ZWFmODllYjk2OTMzYmJm
NWZjYWJmNjA0Njg3ODQyYjkzOWM1YzE2Li5mMGNkOGNmNjk5NzU5ZmZkYWU5ZjY0MWQ4MDI1OTY4
YTgzNzhhZmJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApA
QCAtODYxLDcgKzg2MSw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMCiAKICAgICBpZiAocmVz
cG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApIHsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2Ug
PSBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZTogdGhlIHNlcnZlciByZXNwb25k
ZWQgd2l0aCBhIHN0YXR1cyBvZiAiLCBTdHJpbmc6Om51bWJlcihyZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpKSwgIiAoIiwgcmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSwgJyknKTsKLSAgICAgICAg
YWRkTWVzc2FnZVRvQ29uc29sZShPdGhlck1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBF
cnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMCwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCkpOwor
ICAgICAgICBhZGRDb25zb2xlTWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2UoT3RoZXJNZXNzYWdl
U291cmNlLCBOZXR3b3JrRXJyb3JNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3Nh
Z2UsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBpZGVudGlmaWVyKSk7CiAgICAgfQogfQogCkBA
IC04OTcsNyArODk3LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRGYWlsTG9hZGlu
Zyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmMKICAgICBTdHJpbmcgbWVz
c2FnZSA9ICJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZSI7CiAgICAgICAgIGlmICghZXJyb3IubG9j
YWxpemVkRGVzY3JpcHRpb24oKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBtZXNzYWdlICs9ICI6
ICIgKyBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpOwotICAgICAgICBhZGRNZXNzYWdlVG9D
b25zb2xlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxl
dmVsLCBtZXNzYWdlLCAwLCBlcnJvci5mYWlsaW5nVVJMKCkpOworICAgICAgICBhZGRDb25zb2xl
TWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBOZXR3b3JrRXJy
b3JNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGVycm9yLmZhaWxpbmdV
UkwoKSwgaWRlbnRpZmllcikpOwogCiAgICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKICAgICAgICAg
bV9yZXNvdXJjZUFnZW50LT5kaWRGYWlsTG9hZGluZyhpZGVudGlmaWVyLCBlcnJvcik7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IDlkYWIyNGEx
Mzg1NTU2OGM0YzE4YjIzYzZlNWVjNWQ1ODUyNjk3NzUuLjNlZDE0ZjczM2ZkOWE3Nzg3ZjQ0NDky
YzhlMTM5OTA5ZmE2NTdhMWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwCkBAIC01Miw2ICs1Miw4IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5o
IgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9u
c2UuaCIKKyNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKKyNpbmNsdWRlICJTY3JpcHRDYWxs
U3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4
dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIgpAQCAt
Mjg1LDcgKzI4NywxMyBAQCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp+SW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudCgpCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmlkZW50aWZpZXJGb3JJbml0
aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmIHVybCwgRG9j
dW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBsb2Fk
ZXJPYmplY3QgPSBidWlsZE9iamVjdEZvckRvY3VtZW50TG9hZGVyKGxvYWRlcik7Ci0gICAgbV9m
cm9udGVuZC0+aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KGlkZW50aWZpZXIsIHVybC5zdHJp
bmcoKSwgbG9hZGVyT2JqZWN0KTsKKyAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3Rh
Y2sgPSBjcmVhdGVTY3JpcHRDYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tT
aXplVG9DYXB0dXJlLCB0cnVlKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGNhbGxTdGFj
a1ZhbHVlOworICAgIGlmIChjYWxsU3RhY2spCisgICAgICAgIGNhbGxTdGFja1ZhbHVlID0gY2Fs
bFN0YWNrLT5idWlsZEluc3BlY3Rvck9iamVjdCgpOworICAgIGVsc2UKKyAgICAgICAgY2FsbFN0
YWNrVmFsdWUgPSBJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpOworICAgIG1fZnJvbnRlbmQtPmlkZW50
aWZpZXJGb3JJbml0aWFsUmVxdWVzdChpZGVudGlmaWVyLCB1cmwuc3RyaW5nKCksIGxvYWRlck9i
amVjdCwgY2FsbFN0YWNrVmFsdWUpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwppbmRleCAwOWNlNzkzODgx
OGUxOGJkODEyOGJmMjE0Yjk4YzgwODc5MzIyYjZkLi5mMGRmMDEwYmRiNTQwMmIwN2U0YzAzYzU3
MWM3NWFiOTRjZTdmMTUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q29uc29sZVZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVW
aWV3LmpzCkBAIC0yNTcsNyArMjU3LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIG1zZy5fdXBkYXRlUmVwZWF0Q291bnQoKTsKICAgICAgICAg
ICAgIHRoaXMuX2luY3JlbWVudEVycm9yV2FybmluZ0NvdW50KG1zZyk7CiAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICB2YXIgbXNnQ29weSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZU1l
c3NhZ2UobXNnLnNvdXJjZSwgbXNnLnR5cGUsIG1zZy5sZXZlbCwgbXNnLmxpbmUsIG1zZy51cmws
IGNvdW50IC0gcHJldlJlcGVhdENvdW50LCBtc2cuX21lc3NhZ2VUZXh0LCBtc2cuX3BhcmFtZXRl
cnMsIG1zZy5fc3RhY2tUcmFjZSk7CisgICAgICAgICAgICB2YXIgbXNnQ29weSA9IG5ldyBXZWJJ
bnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UobXNnLnNvdXJjZSwgbXNnLnR5cGUsIG1zZy5sZXZlbCwg
bXNnLmxpbmUsIG1zZy51cmwsIGNvdW50IC0gcHJldlJlcGVhdENvdW50LCBtc2cuX21lc3NhZ2VU
ZXh0LCBtc2cuX3BhcmFtZXRlcnMsIG1zZy5fc3RhY2tUcmFjZSwgbXNnLl9yZXF1ZXN0SWQpOwog
ICAgICAgICAgICAgbXNnQ29weS50b3RhbFJlcGVhdENvdW50ID0gY291bnQ7CiAgICAgICAgICAg
ICBtc2dDb3B5Ll9mb3JtYXRNZXNzYWdlKCk7CiAgICAgICAgICAgICB0aGlzLmFkZE1lc3NhZ2Uo
bXNnQ29weSk7CkBAIC02MjcsNyArNjI3LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnBy
b3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGU7CiAKLVdlYkluc3BlY3Rvci5Db25zb2xl
TWVzc2FnZSA9IGZ1bmN0aW9uKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIGxpbmUsIHVybCwgcmVwZWF0
Q291bnQsIG1lc3NhZ2UsIHBhcmFtZXRlcnMsIHN0YWNrVHJhY2UpCitXZWJJbnNwZWN0b3IuQ29u
c29sZU1lc3NhZ2UgPSBmdW5jdGlvbihzb3VyY2UsIHR5cGUsIGxldmVsLCBsaW5lLCB1cmwsIHJl
cGVhdENvdW50LCBtZXNzYWdlLCBwYXJhbWV0ZXJzLCBzdGFja1RyYWNlLCByZXF1ZXN0SWQpCiB7
CiAgICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7CiAgICAgdGhpcy50eXBlID0gdHlwZTsKQEAgLTY0
MCw2ICs2NDAsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UgPSBmdW5jdGlvbihzb3Vy
Y2UsIHR5cGUsIGxldmVsLCBsaW5lLCB1cmwsIHJlcGVhdENvdQogICAgIHRoaXMuX21lc3NhZ2VU
ZXh0ID0gbWVzc2FnZTsKICAgICB0aGlzLl9wYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKICAgICB0
aGlzLl9zdGFja1RyYWNlID0gc3RhY2tUcmFjZTsKKyAgICB0aGlzLl9yZXF1ZXN0SWQgPSByZXF1
ZXN0SWQ7CiAgICAgdGhpcy5fZm9ybWF0TWVzc2FnZSgpOwogfQogCkBAIC02NTIsNDQgKzY1Myw5
MSBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuY3JlYXRlVGV4dE1lc3NhZ2UgPSBmdW5j
dGlvbih0ZXh0LCBsZXZlbCkKIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUg
PSB7CiAgICAgX2Zvcm1hdE1lc3NhZ2U6IGZ1bmN0aW9uKCkKICAgICB7CisgICAgICAgIHZhciBz
dGFja1RyYWNlID0gdGhpcy5fc3RhY2tUcmFjZTsKKyAgICAgICAgdmFyIG1lc3NhZ2VUZXh0Owog
ICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkgewotICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0
b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuQXNzZXJ0OgogICAgICAgICAgICAgY2FzZSBX
ZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuVHJhY2U6CisgICAgICAgICAg
ICAgICAgbWVzc2FnZVRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiY29uc29sZS50cmFj
ZSgpIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5VbmNhdWdodEV4Y2VwdGlvbjoKLSAgICAg
ICAgICAgICAgICB2YXIgb2wgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOwotICAgICAg
ICAgICAgICAgIG9sLmNsYXNzTmFtZSA9ICJvdXRsaW5lLWRpc2Nsb3N1cmUiOwotICAgICAgICAg
ICAgICAgIHZhciB0cmVlT3V0bGluZSA9IG5ldyBUcmVlT3V0bGluZShvbCk7Ci0gICAgICAgICAg
ICAgICAgdmFyIG1lc3NhZ2VUZXh0OwotICAgICAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09
IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5Bc3NlcnQpCi0gICAgICAg
ICAgICAgICAgICAgIG1lc3NhZ2VUZXh0ID0gdGhpcy5fZm9ybWF0KHRoaXMuX3BhcmFtZXRlcnMp
OwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNv
bnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlRyYWNlKQotICAgICAgICAgICAgICAgICAgICBtZXNz
YWdlVGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJjb25zb2xlLnRyYWNlKCkiKTsKLSAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VUZXh0ID0gZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUodGhpcy5fbWVzc2FnZVRleHQpOwotCi0gICAgICAgICAgICAg
ICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAg
ICAgICAgICB0aGlzLl9hZGRNZXNzYWdlSGVhZGVyKGNvbnRlbnQsIG1lc3NhZ2VUZXh0KTsKLSAg
ICAgICAgICAgICAgICB2YXIgcm9vdCA9IG5ldyBUcmVlRWxlbWVudChjb250ZW50LCBudWxsLCB0
cnVlKTsKLSAgICAgICAgICAgICAgICBjb250ZW50LnRyZWVFbGVtZW50Rm9yVGVzdCA9IHJvb3Q7
Ci0gICAgICAgICAgICAgICAgdHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQocm9vdCk7Ci0gICAgICAg
ICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1l
c3NhZ2VUeXBlLlRyYWNlKQotICAgICAgICAgICAgICAgICAgICByb290LmV4cGFuZCgpOwotCi0g
ICAgICAgICAgICAgICAgdGhpcy5fcG9wdWxhdGVTdGFja1RyYWNlVHJlZUVsZW1lbnQocm9vdCk7
Ci0gICAgICAgICAgICAgICAgdGhpcy5mb3JtYXR0ZWRNZXNzYWdlID0gb2w7CisgICAgICAgICAg
ICAgICAgbWVzc2FnZVRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0aGlzLl9tZXNzYWdl
VGV4dCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5OZXR3b3JrRXJyb3I6CisgICAgICAgICAg
ICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fcmVxdWVzdElkICYmIFdlYkluc3BlY3Rvci5wYW5l
bHMubmV0d29yay5yZXNvdXJjZXNbdGhpcy5fcmVxdWVzdElkXTsKKyAgICAgICAgICAgICAgICBp
ZiAocmVzb3VyY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhY2tUcmFjZSA9IHJlc291cmNl
LnN0YWNrVHJhY2U7CisKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVRleHQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VUZXh0
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHJlc291cmNlLnJlcXVlc3RNZXRo
b2QgKyAiICIpKTsKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVRleHQuYXBwZW5kQ2hpbGQo
V2ViSW5zcGVjdG9yLmxpbmtpZnlVUkxBc05vZGUocmVzb3VyY2UudXJsKSk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChyZXNvdXJjZS5mYWlsZWQpCisgICAgICAgICAgICAgICAgICAgICAgICBt
ZXNzYWdlVGV4dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiICIgKyByZXNv
dXJjZS5sb2NhbGl6ZWRGYWlsRGVzY3JpcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVRleHQuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoIiAiICsgcmVzb3VyY2Uuc3RhdHVzQ29kZSArICIgKCIgKyByZXNv
dXJjZS5zdGF0dXNUZXh0ICsgIikiKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIG1lc3NhZ2VUZXh0ID0gdGhpcy5fZm9ybWF0KFt0aGlzLl9tZXNzYWdlVGV4
dF0pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0
b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuQXNzZXJ0OgorICAgICAgICAgICAgICAgIHZh
ciBhcmdzID0gW1dlYkluc3BlY3Rvci5VSVN0cmluZygiQXNzZXJ0aW9uIGZhaWxlZDoiKV07Cisg
ICAgICAgICAgICAgICAgaWYgKHRoaXMuX3BhcmFtZXRlcnMpCisgICAgICAgICAgICAgICAgICAg
IGFyZ3MgPSBhcmdzLmNvbmNhdCh0aGlzLl9wYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgICAgICBt
ZXNzYWdlVGV4dCA9IHRoaXMuX2Zvcm1hdChhcmdzKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBl
Lk9iamVjdDoKICAgICAgICAgICAgICAgICB2YXIgb2JqID0gdGhpcy5fcGFyYW1ldGVycyA/IHRo
aXMuX3BhcmFtZXRlcnNbMF0gOiB1bmRlZmluZWQ7Ci0gICAgICAgICAgICAgICAgdGhpcy5mb3Jt
YXR0ZWRNZXNzYWdlID0gdGhpcy5fZm9ybWF0KFsiJU8iLCBvYmpdKTsKKyAgICAgICAgICAgICAg
ICB2YXIgYXJncyA9IFsiJU8iLCBvYmpdOworICAgICAgICAgICAgICAgIG1lc3NhZ2VUZXh0ID0g
dGhpcy5fZm9ybWF0KGFyZ3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgICAgICB2YXIgYXJncyA9IHRoaXMuX3BhcmFtZXRlcnMgfHwg
W3RoaXMuX21lc3NhZ2VUZXh0XTsKLSAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZE1lc3Nh
Z2UgPSB0aGlzLl9mb3JtYXQoYXJncyk7CisgICAgICAgICAgICAgICAgbWVzc2FnZVRleHQgPSB0
aGlzLl9mb3JtYXQoYXJncyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAor
ICAgICAgICB0aGlzLl9mb3JtYXR0ZWRNZXNzYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
c3BhbiIpOworICAgICAgICB0aGlzLl9mb3JtYXR0ZWRNZXNzYWdlLmNsYXNzTmFtZSA9ICJjb25z
b2xlLW1lc3NhZ2UtdGV4dCBzb3VyY2UtY29kZSI7CisKKyAgICAgICAgaWYgKHN0YWNrVHJhY2Ug
JiYgc3RhY2tUcmFjZS5sZW5ndGgpIHsKKyAgICAgICAgICAgIHZhciB0b3BDYWxsRnJhbWUgPSBz
dGFja1RyYWNlWzBdOworICAgICAgICAgICAgdmFyIHNvdXJjZU5hbWUgPSB0b3BDYWxsRnJhbWUu
c2NyaXB0TmFtZTsKKyAgICAgICAgICAgIHZhciBzb3VyY2VMaW5lID0gdG9wQ2FsbEZyYW1lLmxp
bmVOdW1iZXI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2YXIgc291cmNlTmFtZSA9
IHRoaXMudXJsOworICAgICAgICAgICAgdmFyIHNvdXJjZUxpbmUgPSB0aGlzLmxpbmU7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoc291cmNlTmFtZSAmJiBzb3VyY2VOYW1lICE9PSAidW5kZWZp
bmVkIikgeworICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQgPSBXZWJJbnNwZWN0b3IubGlua2lm
eVJlc291cmNlQXNOb2RlKHNvdXJjZU5hbWUsICJzY3JpcHRzIiwgc291cmNlTGluZSwgImNvbnNv
bGUtbWVzc2FnZS11cmwiKTsKKyAgICAgICAgICAgIHRoaXMuX2Zvcm1hdHRlZE1lc3NhZ2UuYXBw
ZW5kQ2hpbGQodXJsRWxlbWVudCk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9mb3JtYXR0
ZWRNZXNzYWdlLmFwcGVuZENoaWxkKG1lc3NhZ2VUZXh0KTsKKworICAgICAgICBpZiAodGhpcy5f
c3RhY2tUcmFjZSkgeworICAgICAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHsKKyAgICAgICAg
ICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5UcmFj
ZToKKyAgICAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNz
YWdlVHlwZS5VbmNhdWdodEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5OZXR3b3JrRXJyb3I6CisgICAgICAgICAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuQXNzZXJ0
OiB7CisgICAgICAgICAgICAgICAgICAgIHZhciBvbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
Im9sIik7CisgICAgICAgICAgICAgICAgICAgIG9sLmNsYXNzTmFtZSA9ICJvdXRsaW5lLWRpc2Ns
b3N1cmUiOworICAgICAgICAgICAgICAgICAgICB2YXIgdHJlZU91dGxpbmUgPSBuZXcgVHJlZU91
dGxpbmUob2wpOworCisgICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50ID0gdGhpcy5fZm9y
bWF0dGVkTWVzc2FnZTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHJvb3QgPSBuZXcgVHJlZUVs
ZW1lbnQoY29udGVudCwgbnVsbCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQu
dHJlZUVsZW1lbnRGb3JUZXN0ID0gcm9vdDsKKyAgICAgICAgICAgICAgICAgICAgdHJlZU91dGxp
bmUuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnR5cGUg
PT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5UcmFjZSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJvb3QuZXhwYW5kKCk7CisKKyAgICAgICAgICAgICAgICAgICAg
dGhpcy5fcG9wdWxhdGVTdGFja1RyYWNlVHJlZUVsZW1lbnQocm9vdCk7CisgICAgICAgICAgICAg
ICAgICAgIHRoaXMuX2Zvcm1hdHRlZE1lc3NhZ2UgPSBvbDsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICAvLyBUaGlzIGlzIHVzZWQgZm9yIGlu
bGluZSBtZXNzYWdlIGJ1YmJsZXMgaW4gU291cmNlRnJhbWVzLCBvciBvdGhlciBwbGFpbi10ZXh0
IHJlcHJlc2VudGF0aW9ucy4KLSAgICAgICAgdGhpcy5tZXNzYWdlID0gdGhpcy5mb3JtYXR0ZWRN
ZXNzYWdlLnRleHRDb250ZW50OworICAgICAgICB0aGlzLm1lc3NhZ2UgPSB0aGlzLl9mb3JtYXR0
ZWRNZXNzYWdlLnRleHRDb250ZW50OwogICAgIH0sCiAKICAgICBpc0Vycm9yT3JXYXJuaW5nOiBm
dW5jdGlvbigpCkBAIC04MDksMTIgKzg1Nyw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2Fn
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgfQog
Ci0gICAgICAgIGlmICh0aGlzLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5N
ZXNzYWdlVHlwZS5UcmFjZSB8fAotICAgICAgICAgICAgdGhpcy50eXBlID09PSBXZWJJbnNwZWN0
b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuQXNzZXJ0IHx8Ci0gICAgICAgICAgICB0aGlz
LnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5VbmNhdWdo
dEV4Y2VwdGlvbikKLSAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5mb3JtYXR0
ZWRNZXNzYWdlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5fYWRkTWVzc2FnZUhl
YWRlcihlbGVtZW50LCB0aGlzLmZvcm1hdHRlZE1lc3NhZ2UpOworICAgICAgICBlbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX2Zvcm1hdHRlZE1lc3NhZ2UpOwogCiAgICAgICAgIGlmICh0aGlzLnJl
cGVhdENvdW50ID4gMSkKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVJlcGVhdENvdW50KCk7CkBA
IC04NDIsMjEgKzg4NSw2IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgX2FkZE1lc3NhZ2VIZWFkZXI6IGZ1bmN0aW9u
KHBhcmVudEVsZW1lbnQsIGZvcm1hdHRlZE1lc3NhZ2UpCi0gICAgewotICAgICAgICBpZiAodGhp
cy51cmwgJiYgdGhpcy51cmwgIT09ICJ1bmRlZmluZWQiKSB7Ci0gICAgICAgICAgICB2YXIgdXJs
RWxlbWVudCA9IFdlYkluc3BlY3Rvci5saW5raWZ5UmVzb3VyY2VBc05vZGUodGhpcy51cmwsICJz
Y3JpcHRzIiwgdGhpcy5saW5lLCAiY29uc29sZS1tZXNzYWdlLXVybCIpOwotICAgICAgICAgICAg
cGFyZW50RWxlbWVudC5hcHBlbmRDaGlsZCh1cmxFbGVtZW50KTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHZhciBtZXNzYWdlVGV4dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFu
Iik7Ci0gICAgICAgIG1lc3NhZ2VUZXh0RWxlbWVudC5jbGFzc05hbWUgPSAiY29uc29sZS1tZXNz
YWdlLXRleHQgc291cmNlLWNvZGUiOwotICAgICAgICBpZiAodGhpcy50eXBlID09PSBXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuQXNzZXJ0KQotICAgICAgICAgICAgbWVz
c2FnZVRleHRFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQXNzZXJ0aW9uIGZhaWxlZDogIikpKTsKLSAgICAgICAgbWVzc2Fn
ZVRleHRFbGVtZW50LmFwcGVuZENoaWxkKGZvcm1hdHRlZE1lc3NhZ2UpOwotICAgICAgICBwYXJl
bnRFbGVtZW50LmFwcGVuZENoaWxkKG1lc3NhZ2VUZXh0RWxlbWVudCk7Ci0gICAgfSwKLQogICAg
IF91cGRhdGVSZXBlYXRDb3VudDogZnVuY3Rpb24oKSB7CiAgICAgICAgIGlmICghdGhpcy5yZXBl
YXRDb3VudEVsZW1lbnQpIHsKICAgICAgICAgICAgIHRoaXMucmVwZWF0Q291bnRFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwpAQCAtODk2LDYgKzkyNCw3IEBAIFdlYklu
c3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHN3aXRjaCAodGhp
cy50eXBlKSB7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5N
ZXNzYWdlVHlwZS5Mb2c6CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVz
c2FnZS5NZXNzYWdlVHlwZS5VbmNhdWdodEV4Y2VwdGlvbjoKKyAgICAgICAgICAgIGNhc2UgV2Vi
SW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLk5ldHdvcmtFcnJvcjoKICAgICAg
ICAgICAgICAgICB0eXBlU3RyaW5nID0gIkxvZyI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5P
YmplY3Q6CkBAIC05MzgsMjAgKzk2NywzNSBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2Uu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAg
ICAgcmV0dXJuIHNvdXJjZVN0cmluZyArICIgIiArIHR5cGVTdHJpbmcgKyAiICIgKyBsZXZlbFN0
cmluZyArICI6ICIgKyB0aGlzLmZvcm1hdHRlZE1lc3NhZ2UudGV4dENvbnRlbnQgKyAiXG4iICsg
dGhpcy51cmwgKyAiIGxpbmUgIiArIHRoaXMubGluZTsKKyAgICAgICAgcmV0dXJuIHNvdXJjZVN0
cmluZyArICIgIiArIHR5cGVTdHJpbmcgKyAiICIgKyBsZXZlbFN0cmluZyArICI6ICIgKyB0aGlz
Ll9mb3JtYXR0ZWRNZXNzYWdlLnRleHRDb250ZW50ICsgIlxuIiArIHRoaXMudXJsICsgIiBsaW5l
ICIgKyB0aGlzLmxpbmU7CiAgICAgfSwKIAotICAgIGlzRXF1YWw6IGZ1bmN0aW9uKG1zZywgZGlz
cmVndWFyZEdyb3VwKQorICAgIGlzRXF1YWw6IGZ1bmN0aW9uKG1zZykKICAgICB7CiAgICAgICAg
IGlmICghbXNnKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgICAgIGlmICh0aGlz
Ll9zdGFja1RyYWNlKSB7CisgICAgICAgICAgICBpZiAoIW1zZy5fc3RhY2tUcmFjZSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB2YXIgbCA9IHRoaXMuX3N0YWNr
VHJhY2U7CisgICAgICAgICAgICB2YXIgciA9IG1zZy5fc3RhY2tUcmFjZTsKKyAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbC5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIGlm
IChsW2ldLnNjcmlwdE5hbWUgIT09IHJbaV0uc2NyaXB0TmFtZSB8fAorICAgICAgICAgICAgICAg
ICAgICBsW2ldLmZ1bmN0aW9uTmFtZSAhPT0gcltpXS5mdW5jdGlvbk5hbWUgfHwKKyAgICAgICAg
ICAgICAgICAgICAgbFtpXS5saW5lTnVtYmVyICE9PSByW2ldLmxpbmVOdW1iZXIgfHwKKyAgICAg
ICAgICAgICAgICAgICAgbFtpXS5jb2x1bW4gIT09IHJbaV0uY29sdW1uKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAg
ICByZXR1cm4gKHRoaXMuc291cmNlID09PSBtc2cuc291cmNlKQogICAgICAgICAgICAgJiYgKHRo
aXMudHlwZSA9PT0gbXNnLnR5cGUpCiAgICAgICAgICAgICAmJiAodGhpcy5sZXZlbCA9PT0gbXNn
LmxldmVsKQogICAgICAgICAgICAgJiYgKHRoaXMubGluZSA9PT0gbXNnLmxpbmUpCiAgICAgICAg
ICAgICAmJiAodGhpcy51cmwgPT09IG1zZy51cmwpCi0gICAgICAgICAgICAmJiAodGhpcy5tZXNz
YWdlID09PSBtc2cubWVzc2FnZSk7CisgICAgICAgICAgICAmJiAodGhpcy5tZXNzYWdlID09PSBt
c2cubWVzc2FnZSkKKyAgICAgICAgICAgICYmICh0aGlzLl9yZXF1ZXN0SWQgPT09IG1zZy5fcmVx
dWVzdElkKTsKICAgICB9CiB9CiAKQEAgLTk3NCw3ICsxMDE4LDggQEAgV2ViSW5zcGVjdG9yLkNv
bnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlID0gewogICAgIEVuZEdyb3VwOiA1LAogICAgIEFzc2Vy
dDogNiwKICAgICBVbmNhdWdodEV4Y2VwdGlvbjogNywKLSAgICBSZXN1bHQ6IDgKKyAgICBOZXR3
b3JrRXJyb3I6OCwKKyAgICBSZXN1bHQ6IDkKIH0KIAogV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNz
YWdlLk1lc3NhZ2VMZXZlbCA9IHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZU1hbmFnZXIuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VNYW5hZ2VyLmpzCmluZGV4IDA1NmJlOGNjODgwOTIxMGMyNGE1NWM5Mzg0YzA5YTNmNDhk
NmE2ZWYuLjUxZjY1OTE3ZDc3NjBlODdiZDdkMDZiNTg0YzViYmYxZjUwNDFkNWIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZU1hbmFnZXIuanMKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlTWFuYWdlci5qcwpAQCAtNjAsOSAr
NjAsMTAgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICBXZWJJbnNwZWN0b3JbYXJndW1lbnRzW2ldXSA9IHRoaXNbYXJndW1lbnRzW2ldXS5i
aW5kKHRoaXMpOwogICAgIH0sCiAKLSAgICBpZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3Q6IGZ1
bmN0aW9uKGlkZW50aWZpZXIsIHVybCwgbG9hZGVyKQorICAgIGlkZW50aWZpZXJGb3JJbml0aWFs
UmVxdWVzdDogZnVuY3Rpb24oaWRlbnRpZmllciwgdXJsLCBsb2FkZXIsIGNhbGxTdGFjaykKICAg
ICB7CiAgICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX2NyZWF0ZVJlc291cmNlKGlkZW50aWZp
ZXIsIHVybCwgbG9hZGVyKTsKKyAgICAgICAgcmVzb3VyY2Uuc3RhY2tUcmFjZSA9IGNhbGxTdGFj
azsKIAogICAgICAgICAvLyBJdCBpcyBpbXBvcnRhbnQgdG8gYmluZCByZXNvdXJjZSB1cmwgZWFy
bHkgKGJlZm9yZSBzY3JpcHRzIGNvbXBpbGUpLgogICAgICAgICB0aGlzLl9iaW5kUmVzb3VyY2VV
UkwocmVzb3VyY2UpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5k
ZXggMDA4MDEwZDljZjkxZjllNzM3YmRmMWYyMjU1ZDIxZTZkNWQ1ZTNkZi4uOTgyZjQ1MWI2YjE4
NzBiMGNmOGFjMzQxYzI5NGFhMGZiOTU1NWFlMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmpzCkBAIC0xMzg2LDcgKzEzODYsOCBAQCBXZWJJbnNwZWN0b3IuYWRkQ29u
c29sZU1lc3NhZ2UgPSBmdW5jdGlvbihwYXlsb2FkKQogICAgICAgICBwYXlsb2FkLnJlcGVhdENv
dW50LAogICAgICAgICBwYXlsb2FkLm1lc3NhZ2UsCiAgICAgICAgIHBheWxvYWQucGFyYW1ldGVy
cywKLSAgICAgICAgcGF5bG9hZC5zdGFja1RyYWNlKTsKKyAgICAgICAgcGF5bG9hZC5zdGFja1Ry
YWNlLAorICAgICAgICBwYXlsb2FkLnJlcXVlc3RJZCk7CiAgICAgdGhpcy5jb25zb2xlLmFkZE1l
c3NhZ2UoY29uc29sZU1lc3NhZ2UpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ29u
c29sZS5oIGIvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaAppbmRleCAxOWYxYTU3NTMwNjJiOWQxYzJj
NWEwMmY3YmUyNjcwMTkyNmU5NDZmLi5kZDY5MmEyZjdjMDEyNWQ2MzFjZjEyMTNiZTc1YzRkNWNi
ODVmMDgxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5oCisrKyBiL1dlYkNvcmUv
cGFnZS9Db25zb2xlLmgKQEAgLTY4LDcgKzY4LDggQEAgZW51bSBNZXNzYWdlVHlwZSB7CiAgICAg
U3RhcnRHcm91cENvbGxhcHNlZE1lc3NhZ2VUeXBlLAogICAgIEVuZEdyb3VwTWVzc2FnZVR5cGUs
CiAgICAgQXNzZXJ0TWVzc2FnZVR5cGUsCi0gICAgVW5jYXVnaHRFeGNlcHRpb25NZXNzYWdlVHlw
ZQorICAgIFVuY2F1Z2h0RXhjZXB0aW9uTWVzc2FnZVR5cGUsCisgICAgTmV0d29ya0Vycm9yTWVz
c2FnZVR5cGUKIH07CiAKIGVudW0gTWVzc2FnZUxldmVsIHsK
</data>
<flag name="review"
          id="66897"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>