<?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>215794</bug_id>
          
          <creation_ts>2020-08-24 21:42:33 -0700</creation_ts>
          <short_desc>Web Inspector: allow special JavaScript breakpoints to be configured</short_desc>
          <delta_ts>2020-09-03 10:53:25 -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</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>215362</dependson>
    
    <dependson>215363</dependson>
    
    <dependson>215747</dependson>
          <blocked>215793</blocked>
    
    <blocked>215795</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>bburg</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1682572</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-24 21:42:33 -0700</bug_when>
    <thetext>This would allow developers to do things like:
 - ignore the first N pauses
 - evaluate JavaScript inside every microtask without pausing
 - evaluate JavaScript whenever an exception is thrown without pausing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683930</commentid>
    <comment_count>1</comment_count>
      <attachid>407543</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-29 12:40:41 -0700</bug_when>
    <thetext>Created attachment 407543
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684380</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-31 21:43:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/68119056&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684884</commentid>
    <comment_count>3</comment_count>
      <attachid>407543</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-09-02 11:16:08 -0700</bug_when>
    <thetext>Comment on attachment 407543
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:41
&gt; +        This is needed when the JavaScript being paused in is native code, such as when pausing for

Nit: grammaro

&gt; Source/JavaScriptCore/ChangeLog:72
&gt; +        * debugger/Breakpoint.h:

I think this should move up to near other debugger/*.h changes.

&gt; Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp:219
&gt; +JSValue DebuggerCallFrame::evaluateWithScopeExtension(const String&amp; script, JSObject* scopeExtensionObject, NakedPtr&lt;Exception&gt;&amp; exception, ClimbToValidFrame climbToValidFrame)

Its weird that there are no uses of ClimbToValidFrame::No.

If this behavior is new, I think it should be covered by a test. Feel free to split that from the main patch, it doesn&apos;t seem essential to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684887</commentid>
    <comment_count>4</comment_count>
      <attachid>407543</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-09-02 11:26:17 -0700</bug_when>
    <thetext>Comment on attachment 407543
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:41
&gt; +        This is needed when the JavaScript being paused in is native code, such as when pausing for

Nit: grammaro

&gt; Source/JavaScriptCore/ChangeLog:72
&gt; +        * debugger/Breakpoint.h:

I think this should move up to near other debugger/*.h changes.

&gt; Source/JavaScriptCore/debugger/Debugger.cpp:-692
&gt; -{

Hooray!

&gt; Source/JavaScriptCore/debugger/Debugger.h:40
&gt;  

I&apos;m on the fence about whether this is better or worse than an RAII object that uses scopes explicitly.

&gt; Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp:274
&gt; +    m_pauseOnAssertionsBreakpoint = nullptr;

Nice.

&gt; Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp:905
&gt; +    if (stateString == &quot;all&quot;) {

Kind of weird to not use an enum here.

&gt; Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp:918
&gt; +    m_debugger.setPauseOnAllExceptionsBreakpoint(WTFMove(allExceptionsBreakpoint));

This is intentionally clearing breakpoints not sent in the payload, right?

&gt; Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp:965
&gt; +        OVERRIDE_PAUSE_ON_EXCEPTIONS_BREAKPOINTS(m_debugger, nullptr);

So much clearer what this is doing now.

&gt; Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js:1014
&gt; +localizedStrings[&quot;Reset Breakpoint&quot;] = &quot;Reset Breakpoint&quot;;

Nit: please add more context (specifically, &apos;Reset&apos; could act like a verb or an adjective)

&gt; Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js:130
&gt; +            await new Promise((resolve, reject) =&gt; queueMicrotask(resolve));

Maybe this async flush should happen as part of registerInitializationPromise. It seems silly to do this at every caller where we might need to access controllers/managers.

&gt; Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js:1291
&gt; +            target.DebuggerAgent[command].invoke(commandArguments);

Nice.

&gt; Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js:-1167
&gt; -            if (!breakpoint.disabled &amp;&amp; !this.breakpointsDisabledTemporarily)

Did you retain the behavior that setting a breakpoint will enable breakpoints if disabled?

&gt; Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js:-1205
&gt; -                target.DebuggerAgent.setPauseOnMicrotasks(!breakpoint.disabled);

ooOOoo. So much nicer.

&gt; Source/WebInspectorUI/UserInterface/Models/JavaScriptBreakpoint.js:28
&gt; +    constructor(sourceCodeLocation, {contentIdentifier, resolved, disabled, condition, actions, ignoreCount, autoContinue} = {})

I can&apos;t find any uses of this additional option. Can this be reverted?

&gt; Source/WebInspectorUI/UserInterface/Models/JavaScriptBreakpoint.js:159
&gt; +            // COMPATIBILITY (iOS 14): Debugger.setPauseOnDebuggerStatements did not have an &quot;options&quot; parameter yet.

What is this for? I can&apos;t expand the context because patch does not apply to ToT.

&gt; Source/WebInspectorUI/UserInterface/Views/BreakpointPopover.js:90
&gt; +            contextMenu.appendItem(WI.UIString(&quot;Reset Breakpoint&quot;), () =&gt; {

Ditto above comment about localizing this.

&gt; Source/WebInspectorUI/UserInterface/Views/SourcesNavigationSidebarPanel.js:1957
&gt;          let treeElement = event.data.element;

I don&apos;t think this is used any more.

&gt; Source/WebInspectorUI/UserInterface/Views/SourcesNavigationSidebarPanel.js:1963
&gt; +        if (selectedTreeElement.representedObject !== WI.debuggerManager.assertionFailuresBreakpoint &amp;&amp; selectedTreeElement.representedObject.removable)

What is this line for?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684905</commentid>
    <comment_count>5</comment_count>
      <attachid>407543</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-09-02 11:49:03 -0700</bug_when>
    <thetext>Comment on attachment 407543
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:72
&gt;&gt;&gt; +        * debugger/Breakpoint.h:
&gt;&gt; 
&gt;&gt; I think this should move up to near other debugger/*.h changes.
&gt; 
&gt; I think this should move up to near other debugger/*.h changes.

I moved it down because it was basically a non-functional change, but I see your point.

&gt;&gt; Source/JavaScriptCore/debugger/Debugger.h:40
&gt;&gt;  
&gt; 
&gt; I&apos;m on the fence about whether this is better or worse than an RAII object that uses scopes explicitly.

🤦‍♂️ yeah a RAII scope object would be better I&apos;ll do that

&gt;&gt; Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp:219
&gt;&gt; +JSValue DebuggerCallFrame::evaluateWithScopeExtension(const String&amp; script, JSObject* scopeExtensionObject, NakedPtr&lt;Exception&gt;&amp; exception, ClimbToValidFrame climbToValidFrame)
&gt; 
&gt; Its weird that there are no uses of ClimbToValidFrame::No.
&gt; 
&gt; If this behavior is new, I think it should be covered by a test. Feel free to split that from the main patch, it doesn&apos;t seem essential to me.

`climbToValidFrame` is defaulted to `No` in the header so that we don&apos;t have to update all the other callers.

I am tempted to entirely remove `ClimbToValidFrame` though because I think the only other caller is from `Inspector::JavaScriptCallFrame`, which is called from `InjectedScriptSource.js` which is already in JavaScript, so it shouldn&apos;t ever need to climb to a valid frame.

This is covered by the tests added in this patch.  Evaluating breakpoint condition/actions does not work without this for any special breakpoint that uses `Debugger::breakProgram` (which is why I added this).

&gt;&gt; Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp:905
&gt;&gt; +    if (stateString == &quot;all&quot;) {
&gt; 
&gt; Kind of weird to not use an enum here.

AFAICT we don&apos;t generate `parseEnumValueFromString` for this because it&apos;s inlined into the command parameter in the JSON

&gt;&gt; Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp:918
&gt;&gt; +    m_debugger.setPauseOnAllExceptionsBreakpoint(WTFMove(allExceptionsBreakpoint));
&gt; 
&gt; This is intentionally clearing breakpoints not sent in the payload, right?

only one (or neither) of &quot;All Exceptions&quot; and &quot;Uncaught Exceptions&quot; can be active at a time

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js:130
&gt;&gt; +            await new Promise((resolve, reject) =&gt; queueMicrotask(resolve));
&gt; 
&gt; Maybe this async flush should happen as part of registerInitializationPromise. It seems silly to do this at every caller where we might need to access controllers/managers.

All other call sites are doing work with something that is inherently asynchronous (e.g. `WI.ObjectStore.prototype.getAll`.  This case is the special one in that we have a co-dependency between `WI.debuggerManager` and the special `WI.JavaScriptBreakpoint`s (which are loaded/initialized synchronously).  I&apos;d rather leave the decision to delay or not up to the callers.

&gt; Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js:1247
&gt; +            if (!specificTarget)
&gt; +                this._debuggerStatementsBreakpointSetting.value = this._debuggerStatementsBreakpoint.toJSON();

NOTE: I could make this much nicer by just having a `let setting` and doing this after the `switch`

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js:-1167
&gt;&gt; -            if (!breakpoint.disabled &amp;&amp; !this.breakpointsDisabledTemporarily)
&gt; 
&gt; Did you retain the behavior that setting a breakpoint will enable breakpoints if disabled?

Ah I&apos;d moved this to `WI.DebuggerManager.prototype.addBreakpoint` but it should also happen for `WI.Breakpoint.Event.DisabledStateDidChange`.  I&apos;ll move it into `_updateSpecialBreakpoint`.  Good catch!

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/JavaScriptBreakpoint.js:28
&gt;&gt; +    constructor(sourceCodeLocation, {contentIdentifier, resolved, disabled, condition, actions, ignoreCount, autoContinue} = {})
&gt; 
&gt; I can&apos;t find any uses of this additional option. Can this be reverted?

I think we should use this inside `WI.DebuggerManager.prototype._createSpecialBreakpoint` so that we can avoid dispatching `WI.JavaScriptBreakpoint.Event.ResolvedStateDidChange`.

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/JavaScriptBreakpoint.js:159
&gt;&gt; +            // COMPATIBILITY (iOS 14): Debugger.setPauseOnDebuggerStatements did not have an &quot;options&quot; parameter yet.
&gt; 
&gt; What is this for? I can&apos;t expand the context because patch does not apply to ToT.

this is for `WI.JavaScriptBreakpoint.prototype.get editable`, which basically controls whether the &quot;Edit Breakpoint&quot; contextmenu item is shown :)

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SourcesNavigationSidebarPanel.js:1957
&gt;&gt;          let treeElement = event.data.element;
&gt; 
&gt; I don&apos;t think this is used any more.

Nice catch!

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SourcesNavigationSidebarPanel.js:1963
&gt;&gt; +        if (selectedTreeElement.representedObject !== WI.debuggerManager.assertionFailuresBreakpoint &amp;&amp; selectedTreeElement.representedObject.removable)
&gt; 
&gt; What is this line for?

I dunno actually 🤔  I just adjusted the code that was already here.  Let me investigate as to whether this is actually needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685100</commentid>
    <comment_count>6</comment_count>
      <attachid>407846</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-09-02 18:31:29 -0700</bug_when>
    <thetext>Created attachment 407846
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685101</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-09-02 18:32:06 -0700</bug_when>
    <thetext>This patch modifies the inspector protocol. Please ensure that any frontend changes appropriately use feature checks for new protocol features.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685197</commentid>
    <comment_count>8</comment_count>
      <attachid>407873</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-09-02 23:45:26 -0700</bug_when>
    <thetext>Created attachment 407873
Patch

typo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685290</commentid>
    <comment_count>9</comment_count>
      <attachid>407873</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-09-03 09:32:52 -0700</bug_when>
    <thetext>Comment on attachment 407873
Patch

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

r=me

&gt; Source/JavaScriptCore/debugger/Debugger.h:75
&gt; +    class TemporarilyDisableExceptionBreakpoints {

Nit: can&apos;t this be defined entirely in the .cpp file? Is it used outside this class?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685331</commentid>
    <comment_count>10</comment_count>
      <attachid>407873</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-09-03 10:35:40 -0700</bug_when>
    <thetext>Comment on attachment 407873
Patch

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

&gt;&gt; Source/JavaScriptCore/debugger/Debugger.h:75
&gt;&gt; +    class TemporarilyDisableExceptionBreakpoints {
&gt; 
&gt; Nit: can&apos;t this be defined entirely in the .cpp file? Is it used outside this class?

in fact, it is _only_ used outside of this class 😅</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685343</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-03 10:53:24 -0700</bug_when>
    <thetext>Committed r266534: &lt;https://trac.webkit.org/changeset/266534&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407873.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407543</attachid>
            <date>2020-08-29 12:40:41 -0700</date>
            <delta_ts>2020-09-02 18:31:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>215794.diff</filename>
            <type>text/plain</type>
            <size>127219</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiODFjYjk1NzkxOC4uZDBjM2U5YWJhM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAor
MjAyMC0wOC0yOCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogYWxsb3cgc3BlY2lhbCBKYXZhU2NyaXB0IGJyZWFrcG9pbnRzIHRvIGJl
IGNvbmZpZ3VyZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNTc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlcy9icmVha3BvaW50LW9wdGlvbnMtdXRp
bGl0aWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIu
SW5zcGVjdG9yVGVzdC5CcmVha3BvaW50T3B0aW9ucy5hZGRUZXN0Q2FzZXMpOgorICAgICAgICAo
VGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplci5JbnNwZWN0b3JUZXN0LkJyZWFrcG9pbnRPcHRp
b25zLmFkZFRlc3RDYXNlcy5yZW1vdmVCcmVha3BvaW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZGVidWdnZXIvYnJlYWstb24tZXhjZXB0aW9uLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Rl
YnVnZ2VyL2JyZWFrLW9uLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVj
dG9yL2RlYnVnZ2VyL2JyZWFrLW9uLXVuY2F1Z2h0LWV4Y2VwdGlvbi5odG1sOgorICAgICAgICAq
IGluc3BlY3Rvci9kZWJ1Z2dlci9icmVhay1vbi11bmNhdWdodC1leGNlcHRpb24tZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVzZU9uQXNzZXJ0aW9ucy5o
dG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVzZU9uQXNzZXJ0aW9ucy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NldFBhdXNlT25EZWJ1
Z2dlclN0YXRlbWVudHMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2V0UGF1
c2VPbkRlYnVnZ2VyU3RhdGVtZW50cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9y
L2RlYnVnZ2VyL3NldFBhdXNlT25NaWNyb3Rhc2tzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9y
L2RlYnVnZ2VyL3NldFBhdXNlT25NaWNyb3Rhc2tzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgQWRk
IHRlc3RzIGZvciBnbG9iYWwgSmF2YVNjcmlwdCBicmVha3BvaW50IGNvbmZpZ3VyYXRpb24gb3B0
aW9ucy4KKwogMjAyMC0wOC0yNCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogYWxsb3cgZXZlbnQgYnJlYWtwb2ludHMgdG8gYmUgY29u
ZmlndXJlZCB3aGVuIHRoZXkncmUgYWRkZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9icmVhay1vbi1leGNlcHRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrLW9uLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQKaW5k
ZXggYzM3MmYyYWUwZDQuLjVmMWUzMWI5OWZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvYnJlYWstb24tZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWstb24tZXhjZXB0aW9uLWV4cGVjdGVkLnR4
dApAQCAtMTEsNiArMTEsMTAgQEAgQ09OU09MRSBNRVNTQUdFOiB0ZXN0Q2F0Y2gKIENPTlNPTEUg
TUVTU0FHRTogdGhyb3dpbmcgVGVzdEVycm9yCiBDT05TT0xFIE1FU1NBR0U6IGNhdGNoIFRlc3RF
cnJvcgogQ09OU09MRSBNRVNTQUdFOiBET05FCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQg
QUNUSU9OIExPRyAxCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAyCitD
T05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAzCitDT05TT0xFIE1FU1NBR0U6
IEJSRUFLUE9JTlQgQUNUSU9OIExPRyA0CiBDaGVja2luZyBwYXVzZSBsb2NhdGlvbnMgd2hlbiBw
YXVzaW5nIG9uIGFsbCBleGNlcHRpb25zLgogCiAKQEAgLTM0LDMgKzM4LDkxIEBAIFVuY2F1Z2h0
IGV4Y2VwdGlvbiBpbiB0ZXN0IHBhZ2U6IFRlc3RFcnJvciBbYnJlYWstb24tZXhjZXB0aW9uLXRl
c3RzLmpzOjhdCiBQQVNTOiBTaG91bGQgcGF1c2UgZm9yIGV4Y2VwdGlvbi4KIFBBVVNFIEFUIGRv
VGhyb3c6ODoyMgogCistLSBSdW5uaW5nIHRlc3QgY2FzZTogQnJlYWtPbkFueUV4Y2VwdGlvbi5P
cHRpb25zLkNvbmRpdGlvbgorCitTZXR0aW5nIGNvbmRpdGlvbiB0byAnZmFsc2UnLi4uCisKK1Ry
aWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dl
cmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitTZXR0aW5nIGNv
bmRpdGlvbiB0byAndHJ1ZScuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBT
aG91bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBh
dXNlLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogQnJlYWtPbkFueUV4Y2VwdGlvbi5PcHRpb25z
Lklnbm9yZUNvdW50CisKK1NldHRpbmcgaWdub3JlQ291bnQgdG8gJzInLi4uCisKK1RyaWdnZXJp
bmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBi
cmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFr
cG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
CitQQVNTOiBTaG91bGQgcGF1c2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBCcmVha09uQW55
RXhjZXB0aW9uLk9wdGlvbnMuQWN0aW9uLkxvZworCitBZGRpbmcgbG9nIGFjdGlvbi4uLgorCitU
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQg
YWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKwor
VHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50
IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCitF
bmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFT
UzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBh
dXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
CitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBu
b3QgcGF1c2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBCcmVha09uQW55RXhjZXB0aW9uLk9w
dGlvbnMuQWN0aW9ucy5FdmFsdWF0ZQorCitBZGRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1Ry
aWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBh
Y3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4u
CisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtw
b2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0
aW9uLi4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91
bGQgbm90IHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5n
IGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgor
UEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL2JyZWFrLW9uLWV4Y2VwdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL2JyZWFrLW9uLWV4Y2VwdGlvbi5odG1sCmluZGV4IDVhNTllNWI4NWNiLi4w
NzZmNTcxMGRjZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2Jy
ZWFrLW9uLWV4Y2VwdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9icmVhay1vbi1leGNlcHRpb24uaHRtbApAQCAtMyw5ICszLDE4IEBACiA8aGVhZD4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRl
c3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9icmVhay1vbi1leGNlcHRp
b24tdGVzdHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9icmVha3BvaW50
LW9wdGlvbnMtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiBUZXN0UGFnZS5hbGxv
d1VuY2F1Z2h0RXhjZXB0aW9ucyA9IHRydWU7CiAKK2Z1bmN0aW9uIHRyaWdnZXJFeGNlcHRpb24o
KSB7CisgICAgdHJ5IHsKKyAgICAgICAgdGhyb3cgIlRlc3RFcnJvciI7CisgICAgfSBjYXRjaCB7
IH0KKworICAgIFRlc3RQYWdlLmRpc3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJUZXN0UGFnZS1leGNl
cHRpb24iKTsKK30KKwogZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LmFsbEV4Y2VwdGlvbnNCcmVha3BvaW50LmRpc2FibGVkID0gZmFsc2U7CkBAIC01Niw2ICs2NSwx
OSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZXhwcmVzc2lvbjogYHNldFRpbWVvdXQoKCkg
PT4geyB0ZXN0Q2F0Y2goKTsgfSlgLAogICAgIH0pOwogCisgICAgSW5zcGVjdG9yVGVzdC5CcmVh
a3BvaW50T3B0aW9ucy5hZGRUZXN0Q2FzZXMoc3VpdGUsIHsKKyAgICAgICAgY3JlYXRlQnJlYWtw
b2ludCgpIHsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxFeGNlcHRpb25zQnJl
YWtwb2ludC5kaXNhYmxlZCA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIFdJLmRlYnVnZ2Vy
TWFuYWdlci5hbGxFeGNlcHRpb25zQnJlYWtwb2ludDsKKyAgICAgICAgfSwKKyAgICAgICAgdHJp
Z2dlckJyZWFrcG9pbnQoKSB7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHRyaWdnZXJFeGNlcHRp
b24oKWApLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXdhaXRFdmVudCgiVGVzdFBh
Z2UtZXhjZXB0aW9uIiksCisgICAgICAgICAgICBdKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKwog
ICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogfQogPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWstb24tdW5jYXVnaHQtZXhj
ZXB0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVh
ay1vbi11bmNhdWdodC1leGNlcHRpb24tZXhwZWN0ZWQudHh0CmluZGV4IGFiNjU2YzRmYTVkLi42
M2EzYTI0MWI2NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2Jy
ZWFrLW9uLXVuY2F1Z2h0LWV4Y2VwdGlvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrLW9uLXVuY2F1Z2h0LWV4Y2VwdGlvbi1leHBlY3RlZC50
eHQKQEAgLTExLDYgKzExLDEwIEBAIENPTlNPTEUgTUVTU0FHRTogdGVzdENhdGNoCiBDT05TT0xF
IE1FU1NBR0U6IHRocm93aW5nIFRlc3RFcnJvcgogQ09OU09MRSBNRVNTQUdFOiBjYXRjaCBUZXN0
RXJyb3IKIENPTlNPTEUgTUVTU0FHRTogRE9ORQorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5U
IEFDVElPTiBMT0cgMQorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMgor
Q09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMworQ09OU09MRSBNRVNTQUdF
OiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgNAogQ2hlY2tpbmcgcGF1c2UgbG9jYXRpb25zIHdoZW4g
cGF1c2luZyBvbiB1bmNhdWdodCBleGNlcHRpb25zLgogCiAKQEAgLTMzLDMgKzM3LDkxIEBAIFVu
Y2F1Z2h0IGV4Y2VwdGlvbiBpbiB0ZXN0IHBhZ2U6IFRlc3RFcnJvciBbYnJlYWstb24tZXhjZXB0
aW9uLXRlc3RzLmpzOjhdCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogQnJlYWtPblVuY2F1Z2h0RXhj
ZXB0aW9uLkNhdWdodEV4Y2VwdGlvbgogUEFTUzogU2hvdWxkIG5vdCBwYXVzZSwgZXhjZXB0aW9u
IHdhcyBjYXVnaHQuCiAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBCcmVha09uVW5jYXVnaHRFeGNl
cHRpb24uT3B0aW9ucy5Db25kaXRpb24KKworU2V0dGluZyBjb25kaXRpb24gdG8gJ2ZhbHNlJy4u
LgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisK
K1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworU2V0
dGluZyBjb25kaXRpb24gdG8gJ3RydWUnLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgor
UEFTUzogU2hvdWxkIHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNo
b3VsZCBwYXVzZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEJyZWFrT25VbmNhdWdodEV4Y2Vw
dGlvbi5PcHRpb25zLklnbm9yZUNvdW50CisKK1NldHRpbmcgaWdub3JlQ291bnQgdG8gJzInLi4u
CisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKwor
VHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmln
Z2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBi
cmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBCcmVha09uVW5jYXVnaHRFeGNlcHRpb24uT3B0aW9ucy5BY3Rpb24uTG9nCisKK0FkZGluZyBs
b2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4
ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcg
bG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBl
eGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5n
IGxvZyBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29udGludWUuLi4KKworVHJpZ2dlcmluZyBi
cmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BB
U1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2Vy
aW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9u
LgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEJyZWFr
T25VbmNhdWdodEV4Y2VwdGlvbi5PcHRpb25zLkFjdGlvbnMuRXZhbHVhdGUKKworQWRkaW5nIGV2
YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3Vs
ZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0
aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6
IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgor
CitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLgor
CitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9p
bnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBh
Y3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0
ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVhay1vbi11bmNhdWdodC1leGNl
cHRpb24uaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVhay1vbi11bmNh
dWdodC1leGNlcHRpb24uaHRtbAppbmRleCBjNjY1MjU2N2ZiMi4uNTZkNWMwMjU5ZDggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVhay1vbi11bmNhdWdodC1l
eGNlcHRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWst
b24tdW5jYXVnaHQtZXhjZXB0aW9uLmh0bWwKQEAgLTMsOSArMywxOCBAQAogPGhlYWQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10
ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYnJlYWstb24tZXhjZXB0
aW9uLXRlc3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYnJlYWtwb2lu
dC1vcHRpb25zLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogVGVzdFBhZ2UuYWxs
b3dVbmNhdWdodEV4Y2VwdGlvbnMgPSB0cnVlOwogCitmdW5jdGlvbiB0cmlnZ2VyRXhjZXB0aW9u
KCkgeworICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHsKKyAgICAgICAgVGVzdFBhZ2UuZGlzcGF0
Y2hFdmVudFRvRnJvbnRlbmQoIlRlc3RQYWdlLWV4Y2VwdGlvbiIpOworICAgIH0pOworCisgICAg
dGhyb3cgIlRlc3RFcnJvciI7Cit9CisKIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIFdJLmRlYnVn
Z2VyTWFuYWdlci51bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50LmRpc2FibGVkID0gZmFsc2U7
CkBAIC03Myw2ICs4MiwxOSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgfQogICAgIH0pOwog
CisgICAgSW5zcGVjdG9yVGVzdC5CcmVha3BvaW50T3B0aW9ucy5hZGRUZXN0Q2FzZXMoc3VpdGUs
IHsKKyAgICAgICAgY3JlYXRlQnJlYWtwb2ludCgpIHsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2Vy
TWFuYWdlci51bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50LmRpc2FibGVkID0gZmFsc2U7Cisg
ICAgICAgICAgICByZXR1cm4gV0kuZGVidWdnZXJNYW5hZ2VyLnVuY2F1Z2h0RXhjZXB0aW9uc0Jy
ZWFrcG9pbnQ7CisgICAgICAgIH0sCisgICAgICAgIHRyaWdnZXJCcmVha3BvaW50KCkgeworICAg
ICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV2YWx1YXRlSW5QYWdlKGBxdWV1ZU1pY3JvdGFzayh0cmlnZ2VyRXhjZXB0aW9uKWApLAor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXdhaXRFdmVudCgiVGVzdFBhZ2UtZXhjZXB0
aW9uIiksCisgICAgICAgICAgICBdKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKwogICAgIHN1aXRl
LnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogfQogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVzb3VyY2VzL2JyZWFrcG9pbnQtb3B0aW9ucy11
dGlsaXRpZXMuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVzb3VyY2VzL2Jy
ZWFrcG9pbnQtb3B0aW9ucy11dGlsaXRpZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLjQxM2ZlZDExYWU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlcy9icmVha3BvaW50LW9wdGlvbnMtdXRpbGl0aWVz
LmpzCkBAIC0wLDAgKzEsMjA0IEBACitUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyKCgpID0+
IHsKKyAgICBJbnNwZWN0b3JUZXN0LkJyZWFrcG9pbnRPcHRpb25zID0ge307CisKKyAgICBJbnNw
ZWN0b3JUZXN0LkJyZWFrcG9pbnRPcHRpb25zLmFkZFRlc3RDYXNlcyA9IGZ1bmN0aW9uKHN1aXRl
LCB7Y3JlYXRlQnJlYWtwb2ludCwgdHJpZ2dlckJyZWFrcG9pbnR9KSB7CisgICAgICAgIGZ1bmN0
aW9uIHJlbW92ZUJyZWFrcG9pbnQoYnJlYWtwb2ludCkgeworICAgICAgICAgICAgaWYgKGJyZWFr
cG9pbnQucmVtb3ZhYmxlKQorICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQucmVtb3ZlKCk7Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBicmVha3BvaW50LmRpc2FibGVkID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVha3BvaW50LnJlc2V0KCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgICAgICBu
YW1lOiBzdWl0ZS5uYW1lICsgIi5PcHRpb25zLkNvbmRpdGlvbiIsCisgICAgICAgICAgICBkZXNj
cmlwdGlvbjogIkNoZWNrIHRoYXQgdGhlIGRlYnVnZ2VyIHdpbGwgbm90IHBhdXNlIHVubGVzcyB0
aGUgYnJlYWtwb2ludCBoYXMgYSB0cnV0aHkgYnJlYWtwb2ludCBjb25kaXRpb24uIiwKKyAgICAg
ICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAgICAgbGV0IHBhdXNlQ291bnQgPSAw
OworCisgICAgICAgICAgICAgICAgbGV0IHBhdXNlZExpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2
ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgICsrcGF1c2VDb3VudDsKKyAgICAgICAgICAg
ICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOworICAgICAgICAgICAgICAgIH0p
OworCisgICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBhd2FpdCBjcmVhdGVCcmVha3Bv
aW50KCk7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJTZXR0aW5nIGNvbmRpdGlvbiB0byAnZmFs
c2UnLi4uIik7CisgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5jb25kaXRpb24gPSAiZmFsc2Ui
OworCisgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gNDsgKytpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChpID09PSAzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coIlNldHRpbmcgY29uZGl0aW9uIHRvICd0cnVlJy4uLiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWtwb2ludC5jb25kaXRpb24gPSAidHJ1ZSI7CisgICAgICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUo
KTsKKworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBi
cmVha3BvaW50Li4uIik7CisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRyaWdnZXJCcmVha3Bv
aW50KCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPD0gMikKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgMCwgIlNob3Vs
ZCBub3QgcGF1c2UuIik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgaSAtIDIsICJT
aG91bGQgcGF1c2UuIik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmVt
b3ZlQnJlYWtwb2ludChicmVha3BvaW50KTsKKworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2Vy
TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVz
ZWQsIHBhdXNlZExpc3RlbmVyKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0pOworCisgICAg
ICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWU6IHN1aXRlLm5hbWUgKyAi
Lk9wdGlvbnMuSWdub3JlQ291bnQiLAorICAgICAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0
aGF0IHRoZSBkZWJ1Z2dlciB3aWxsIG5vdCBwYXVzZSB1bmxlc3MgdGhlIGJyZWFrcG9pbnQgaXMg
aGl0IGF0IGxlYXN0IGFzIG1hbnkgdGltZXMgYXMgaXQncyBgaWdub3JlQ291bnRgLiIsCisgICAg
ICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgICAgIGxldCBwYXVzZUNvdW50ID0g
MDsKKworICAgICAgICAgICAgICAgIGxldCBwYXVzZWRMaXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChl
dmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICArK3BhdXNlQ291bnQ7CisgICAgICAgICAg
ICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAgICAgICB9
KTsKKworICAgICAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gYXdhaXQgY3JlYXRlQnJlYWtw
b2ludCgpOworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiU2V0dGluZyBpZ25vcmVDb3VudCB0byAn
MicuLi4iKTsKKyAgICAgICAgICAgICAgICBicmVha3BvaW50Lmlnbm9yZUNvdW50ID0gMjsKKwor
ICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9NDsgKytpKSB7CisgICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgYXdhaXQgdHJpZ2dlckJyZWFrcG9pbnQoKTsKKworICAgICAgICAgICAgICAg
ICAgICBpZiAoaSA8PSAyKQorICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFcXVhbChwYXVzZUNvdW50LCAwLCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFcXVhbChwYXVzZUNvdW50LCBpIC0gMiwgIlNob3VsZCBwYXVzZS4iKTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZW1vdmVCcmVha3BvaW50KGJyZWFrcG9pbnQp
OworCisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgcGF1c2VkTGlzdGVuZXIpOworICAg
ICAgICAgICAgfSwKKyAgICAgICAgfSk7CisKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2Uoewor
ICAgICAgICAgICAgbmFtZTogc3VpdGUubmFtZSArICIuT3B0aW9ucy5BY3Rpb24uTG9nIiwKKyAg
ICAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBsb2cgYnJlYWtwb2ludCBhY3Rpb25z
IGV4ZWN1dGUgd2hlbiB0aGUgYnJlYWtwb2ludCBpcyBoaXQuIiwKKyAgICAgICAgICAgIGFzeW5j
IHRlc3QoKSB7CisgICAgICAgICAgICAgICAgbGV0IHBhdXNlQ291bnQgPSAwOworCisgICAgICAg
ICAgICAgICAgbGV0IHBhdXNlZExpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7Cisg
ICAgICAgICAgICAgICAgICAgICsrcGF1c2VDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgV0ku
ZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBhd2FpdCBjcmVhdGVCcmVha3BvaW50KCk7CisKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKCJBZGRpbmcgbG9nIGFjdGlvbi4uLiIpOworICAgICAgICAgICAg
ICAgIGxldCBhY3Rpb24gPSBuZXcgV0kuQnJlYWtwb2ludEFjdGlvbihXSS5CcmVha3BvaW50QWN0
aW9uLlR5cGUuTG9nLCB7ZGF0YTogIkJSRUFLUE9JTlQgQUNUSU9OIExPRyAxIn0pOworICAgICAg
ICAgICAgICAgIGJyZWFrcG9pbnQuYWRkQWN0aW9uKGFjdGlvbik7CisKKyAgICAgICAgICAgICAg
ICBmb3IgKGxldCBpID0gMTsgaSA8PSA0OyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGkgPiAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUo
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkVkaXRpbmcg
bG9nIGFjdGlvbi4uLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmRhdGEgPSBg
QlJFQUtQT0lOVCBBQ1RJT04gTE9HICR7aX1gOworCisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoaSA9PT0gMykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWtwb2ludC5hdXRvQ29udGludWUgPSB0cnVlOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2Vz
ID0gW107CisKKyAgICAgICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2VBZGRlZExpc3RlbmVyID0g
V0kuY29uc29sZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVu
dC5NZXNzYWdlQWRkZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgbWVz
c2FnZXMucHVzaChldmVudC5kYXRhLm1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVh
a3BvaW50Li4uIik7CisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRyaWdnZXJCcmVha3BvaW50
KCk7CisKKyAgICAgICAgICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIucmVtb3ZlRXZlbnRM
aXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIG1lc3NhZ2VBZGRl
ZExpc3RlbmVyKTsKKworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRo
YXQobWVzc2FnZXMuc29tZSgobWVzc2FnZSkgPT4gbWVzc2FnZS5tZXNzYWdlVGV4dCA9PT0gYWN0
aW9uLmRhdGEpLCAiU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uIik7CisKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGkgPD0gMikKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgaSwgIlNob3VsZCBwYXVzZS4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCAyLCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZW1vdmVCcmVha3BvaW50KGJyZWFr
cG9pbnQpOworCisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50
TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgcGF1c2VkTGlzdGVuZXIp
OworICAgICAgICAgICAgfSwKKyAgICAgICAgfSk7CisKKyAgICAgICAgc3VpdGUuYWRkVGVzdENh
c2UoeworICAgICAgICAgICAgbmFtZTogc3VpdGUubmFtZSArICIuT3B0aW9ucy5BY3Rpb25zLkV2
YWx1YXRlIiwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBldmFsdWF0ZSBi
cmVha3BvaW50IGFjdGlvbnMgZXhlY3V0ZSB3aGVuIHRoZSBicmVha3BvaW50IGlzIGhpdC4iLAor
ICAgICAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgICAgICBsZXQgcGF1c2VDb3Vu
dCA9IDA7CisKKyAgICAgICAgICAgICAgICBsZXQgcGF1c2VkTGlzdGVuZXIgPSBXSS5kZWJ1Z2dl
ck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2Vk
LCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgKytwYXVzZUNvdW50OworICAgICAg
ICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7CisgICAgICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IGNyZWF0ZUJy
ZWFrcG9pbnQoKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOwor
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkFkZGluZyBldmFsdWF0ZSBhY3Rp
b24uLi4iKTsKKyAgICAgICAgICAgICAgICBsZXQgYWN0aW9uID0gbmV3IFdJLkJyZWFrcG9pbnRB
Y3Rpb24oV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkV2YWx1YXRlLCB7ZGF0YTogIndpbmRvdy5C
UkVBS1BPSU5UX0FDVElPTl9FVkFMVUFURSA9IDE7In0pOworICAgICAgICAgICAgICAgIGJyZWFr
cG9pbnQuYWRkQWN0aW9uKGFjdGlvbik7CisKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0g
MTsgaSA8PSA0OyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPiAxKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkVkaXRpbmcgZXZhbHVhdGUgYWN0aW9u
Li4uIik7CisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24uZGF0YSA9IGB3aW5kb3cuQlJF
QUtQT0lOVF9BQ1RJT05fRVZBTFVBVEUgPSAke2l9O2A7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChpID09PSAzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coIkVuYWJsaW5nIGF1dG8tY29udGludWUuLi4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVha3BvaW50LmF1dG9Db250aW51ZSA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7CisgICAgICAgICAgICAgICAg
ICAgIGF3YWl0IHRyaWdnZXJCcmVha3BvaW50KCk7CisKKyAgICAgICAgICAgICAgICAgICAgbGV0
IGJyZWFrcG9pbnRBY3Rpb25FdmFsdWF0ZVJlc3VsdCA9IGF3YWl0IEluc3BlY3RvclRlc3QuZXZh
bHVhdGVJblBhZ2UoYHdpbmRvdy5CUkVBS1BPSU5UX0FDVElPTl9FVkFMVUFURWApOworICAgICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGJyZWFrcG9pbnRBY3Rpb25F
dmFsdWF0ZVJlc3VsdCwgaSwgIlNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLiIpOwor
CisgICAgICAgICAgICAgICAgICAgIGlmIChpIDw9IDIpCisgICAgICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlQ291bnQsIGksICJTaG91bGQgcGF1c2Uu
Iik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgMiwgIlNob3VsZCBub3QgcGF1c2Uu
Iik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmVtb3ZlQnJlYWtwb2lu
dChicmVha3BvaW50KTsKKworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1v
dmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHBhdXNlZExp
c3RlbmVyKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0pOworICAgIH07Cit9KTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVzZU9uQXNzZXJ0aW9u
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2V0UGF1c2VP
bkFzc2VydGlvbnMtZXhwZWN0ZWQudHh0CmluZGV4IDk0ZjI5NTMzYzg3Li5kYjYzMzE1MTFjYyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NldFBhdXNlT25Bc3Nl
cnRpb25zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
c2V0UGF1c2VPbkFzc2VydGlvbnMtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsMjUgQEAKIENPTlNP
TEUgTUVTU0FHRTogRmFpbGluZyBhc3NlcnRpb24KIENPTlNPTEUgTUVTU0FHRTogRmFpbGluZyBh
c3NlcnRpb24KK0NPTlNPTEUgTUVTU0FHRTogRmFpbGluZyBhc3NlcnRpb24KK0NPTlNPTEUgTUVT
U0FHRTogRmFpbGluZyBhc3NlcnRpb24KK0NPTlNPTEUgTUVTU0FHRTogRmFpbGluZyBhc3NlcnRp
b24KK0NPTlNPTEUgTUVTU0FHRTogRmFpbGluZyBhc3NlcnRpb24KK0NPTlNPTEUgTUVTU0FHRTog
RmFpbGluZyBhc3NlcnRpb24KK0NPTlNPTEUgTUVTU0FHRTogRmFpbGluZyBhc3NlcnRpb24KK0NP
TlNPTEUgTUVTU0FHRTogRmFpbGluZyBhc3NlcnRpb24KK0NPTlNPTEUgTUVTU0FHRTogRmFpbGlu
ZyBhc3NlcnRpb24KK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDEKK0NP
TlNPTEUgTUVTU0FHRTogRmFpbGluZyBhc3NlcnRpb24KK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQ
T0lOVCBBQ1RJT04gTE9HIDIKK0NPTlNPTEUgTUVTU0FHRTogRmFpbGluZyBhc3NlcnRpb24KK0NP
TlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDMKK0NPTlNPTEUgTUVTU0FHRTog
RmFpbGluZyBhc3NlcnRpb24KK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9H
IDQKK0NPTlNPTEUgTUVTU0FHRTogRmFpbGluZyBhc3NlcnRpb24KK0NPTlNPTEUgTUVTU0FHRTog
RmFpbGluZyBhc3NlcnRpb24KK0NPTlNPTEUgTUVTU0FHRTogRmFpbGluZyBhc3NlcnRpb24KK0NP
TlNPTEUgTUVTU0FHRTogRmFpbGluZyBhc3NlcnRpb24KK0NPTlNPTEUgTUVTU0FHRTogRmFpbGlu
ZyBhc3NlcnRpb24KIERlYnVnZ2VyLnNldFBhdXNlT25Bc3NlcnRpb25zCiAKIApAQCAtMTAsMyAr
MzAsOTEgQEAgUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBE
ZWJ1Z2dlci5zZXRQYXVzZU9uQXNzZXJ0aW9ucy5FbmFibGVkCiBQQVNTOiBTaG91bGQgcGF1c2Vk
LgogCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc2V0UGF1c2VPbkFzc2VydGlvbnMu
T3B0aW9ucy5Db25kaXRpb24KKworU2V0dGluZyBjb25kaXRpb24gdG8gJ2ZhbHNlJy4uLgorCitU
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworU2V0dGluZyBj
b25kaXRpb24gdG8gJ3RydWUnLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzog
U2hvdWxkIHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBw
YXVzZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlT25Bc3NlcnRp
b25zLk9wdGlvbnMuSWdub3JlQ291bnQKKworU2V0dGluZyBpZ25vcmVDb3VudCB0byAnMicuLi4K
KworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitU
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitUcmlnZ2VyaW5nIGJy
ZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6
IERlYnVnZ2VyLnNldFBhdXNlT25Bc3NlcnRpb25zLk9wdGlvbnMuQWN0aW9uLkxvZworCitBZGRp
bmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3Vs
ZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0
aW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91
bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRp
dGluZyBsb2cgYWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJp
bmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24u
CitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFj
dGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBE
ZWJ1Z2dlci5zZXRQYXVzZU9uQXNzZXJ0aW9ucy5PcHRpb25zLkFjdGlvbnMuRXZhbHVhdGUKKwor
QWRkaW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BB
U1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNl
LgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQu
Li4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxk
IHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorRW5hYmxpbmcgYXV0by1jb250
aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRl
IGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworRWRpdGluZyBl
dmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91
bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVzZU9uQXNz
ZXJ0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NldFBhdXNlT25B
c3NlcnRpb25zLmh0bWwKaW5kZXggMjMxNjJkNTQyMWUuLjc2NDc3OTY5NGQwIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2V0UGF1c2VPbkFzc2VydGlvbnMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2V0UGF1c2VPbkFzc2VydGlv
bnMuaHRtbApAQCAtMiwxMCArMiwxMyBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIu
Li8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9icmVha3BvaW50LW9wdGlvbnMtdXRpbGl0
aWVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiBmdW5jdGlvbiB0cmlnZ2VyQXNzZXJ0aW9ucygp
IHsKICAgICBjb25zb2xlLmFzc2VydCh0cnVlLCAiUGFzc2luZyBhc3NlcnRpb24iKTsKICAgICBj
b25zb2xlLmFzc2VydChmYWxzZSwgIkZhaWxpbmcgYXNzZXJ0aW9uIik7CisKKyAgICBUZXN0UGFn
ZS5kaXNwYXRjaEV2ZW50VG9Gcm9udGVuZCgiVGVzdFBhZ2UtYXNzZXJ0aW9ucyIpOwogfQogCiBm
dW5jdGlvbiB0ZXN0KCkKQEAgLTE5LDcgKzIyLDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAg
IG5hbWU6ICJEZWJ1Z2dlci5zZXRQYXVzZU9uQXNzZXJ0aW9ucy5EaXNhYmxlZCIsCiAgICAgICAg
IGRlc2NyaXB0aW9uOiAiRG8gbm90IHBhdXNlIG9uIGFzc2VydGlvbnMgd2hlbiBkaXNhYmxlZC4i
LAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICAgICAgV0kuZGVidWdn
ZXJNYW5hZ2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludC5kaXNhYmxlZCA9IHRydWU7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0
aW9uRmFpbHVyZXNCcmVha3BvaW50LCAiU2hvdWxkIGFscmVhZHkgaGF2ZSBhc3NlcnRpb24gZmFp
bHVyZXMgYnJlYWtwb2ludC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KFdJ
LmRlYnVnZ2VyTWFuYWdlci5hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQuZGlzYWJsZWQsICJB
c3NlcnRpb24gZmFpbHVyZXMgYnJlYWtwb2ludCBzaG91bGQgYmUgZGlzYWJsZWQuIik7CiAKICAg
ICAgICAgICAgIGxldCBsaXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5zaW5nbGVGaXJlRXZl
bnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsK
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZhaWwoIlNob3VsZCBub3QgaGF2ZSBwYXVz
ZWQuIik7CkBAIC0yOSw2ICszMywxMCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoInRyaWdnZXJBc3NlcnRpb25zKCkiLCAoKSA9PiB7
CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJTaG91bGQgbm90IHBhdXNlLiIp
OwogICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVy
KFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIGxpc3RlbmVyKTsKKworICAgICAgICAg
ICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQucmVt
b3ZlKCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoIVdJLmRlYnVnZ2Vy
TWFuYWdlci5hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQsICJTaG91bGQgaGF2ZSBkZXN0cm95
ZWQgYXNzZXJ0aW9uIGZhaWx1cmVzIGJyZWFrcG9pbnQuIik7CisKICAgICAgICAgICAgICAgICBy
ZXNvbHZlKCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQpAQCAtMzgsNyArNDYsOSBAQCBm
dW5jdGlvbiB0ZXN0KCkKICAgICAgICAgbmFtZTogIkRlYnVnZ2VyLnNldFBhdXNlT25Bc3NlcnRp
b25zLkVuYWJsZWQiLAogICAgICAgICBkZXNjcmlwdGlvbjogIlBhdXNlIG9uIGFzc2VydGlvbnMg
d2hlbiBlbmFibGVkLiIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAg
ICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50LmRpc2Fi
bGVkID0gZmFsc2U7CisgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuY3JlYXRlQXNzZXJ0
aW9uRmFpbHVyZXNCcmVha3BvaW50KCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dChXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50LCAiU2hvdWxk
IGhhdmUgY3JlYXRlZCBhc3NlcnRpb24gZmFpbHVyZXMgYnJlYWtwb2ludC4iKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCFXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFp
bHVyZXNCcmVha3BvaW50LmRpc2FibGVkLCAiQXNzZXJ0aW9uIGZhaWx1cmVzIGJyZWFrcG9pbnQg
c2hvdWxkIGJlIGVuYWJsZWQuIik7CiAKICAgICAgICAgICAgIGxldCBkaWRQYXVzZSA9IGZhbHNl
OwogICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLnNpbmdsZUZp
cmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkg
PT4gewpAQCAtNTAsMTEgKzYwLDI4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgidHJpZ2dlckFzc2VydGlvbnMoKSIsICgpID0+IHsK
ICAgICAgICAgICAgICAgICBpZiAoIWRpZFBhdXNlKQogICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmZhaWwoIlNob3VsZCBoYXZlIHBhdXNlZC4iKTsKKworICAgICAgICAgICAgICAg
IFdJLmRlYnVnZ2VyTWFuYWdlci5hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQucmVtb3ZlKCk7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoIVdJLmRlYnVnZ2VyTWFuYWdl
ci5hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQsICJTaG91bGQgaGF2ZSBkZXN0cm95ZWQgYXNz
ZXJ0aW9uIGZhaWx1cmVzIGJyZWFrcG9pbnQuIik7CisKICAgICAgICAgICAgICAgICByZXNvbHZl
KCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0pOwogCisgICAgSW5zcGVjdG9y
VGVzdC5CcmVha3BvaW50T3B0aW9ucy5hZGRUZXN0Q2FzZXMoc3VpdGUsIHsKKyAgICAgICAgY3Jl
YXRlQnJlYWtwb2ludCgpIHsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5jcmVhdGVB
c3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQoKTsKKyAgICAgICAgICAgIHJldHVybiBXSS5kZWJ1
Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50OworICAgICAgICB9LAorICAg
ICAgICB0cmlnZ2VyQnJlYWtwb2ludCgpIHsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFs
bChbCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJUZXN0UGFnZS1h
c3NlcnRpb25zIiksCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFn
ZShgdHJpZ2dlckFzc2VydGlvbnMoKWApLAorICAgICAgICAgICAgXSk7CisgICAgICAgIH0sCisg
ICAgfSk7CisKICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKIH0KIDwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NldFBhdXNlT25E
ZWJ1Z2dlclN0YXRlbWVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL3NldFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHMtZXhwZWN0ZWQudHh0CmluZGV4IDgw
NjY5NTQ4MjY0Li42YzFhMjkyYTM4ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL3NldFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHMtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVzZU9uRGVidWdnZXJTdGF0ZW1l
bnRzLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDcgQEAKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQ
T0lOVCBBQ1RJT04gTE9HIDEKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9H
IDIKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDMKK0NPTlNPTEUgTUVT
U0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDQKIFRlc3RzIGZvciBEZWJ1Z2dlci5zZXRQYXVz
ZU9uRGVidWdnZXJTdGF0ZW1lbnRzIGNvbW1hbmQuCiAKIApAQCAtOCwzICsxMiw5MSBAQCBQQVNT
OiBTaG91bGQgbm90IHBhdXNlLgogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBh
dXNlT25EZWJ1Z2dlclN0YXRlbWVudHMuRW5hYmxlZAogUEFTUzogU2hvdWxkIHBhdXNlZC4KIAor
LS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVu
dHMuT3B0aW9ucy5Db25kaXRpb24KKworU2V0dGluZyBjb25kaXRpb24gdG8gJ2ZhbHNlJy4uLgor
CitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1Ry
aWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworU2V0dGlu
ZyBjb25kaXRpb24gdG8gJ3RydWUnLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFT
UzogU2hvdWxkIHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3Vs
ZCBwYXVzZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlT25EZWJ1
Z2dlclN0YXRlbWVudHMuT3B0aW9ucy5JZ25vcmVDb3VudAorCitTZXR0aW5nIGlnbm9yZUNvdW50
IHRvICcyJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3Qg
cGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVz
ZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK1Ry
aWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogRGVidWdnZXIuc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cy5PcHRpb25z
LkFjdGlvbi5Mb2cKKworQWRkaW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3Bv
aW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNo
b3VsZCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtw
b2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBT
aG91bGQgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorRW5hYmxpbmcgYXV0by1jb250
aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRl
IGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworRWRpdGluZyBs
b2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4
ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCistLSBS
dW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cy5P
cHRpb25zLkFjdGlvbnMuRXZhbHVhdGUKKworQWRkaW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitU
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQg
YWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4u
LgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFr
cG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFj
dGlvbi4uLgorRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9p
bnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hv
dWxkIG5vdCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmlu
ZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4K
K1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9zZXRQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cy5odG1s
CmluZGV4IGQ4OGMwOTA5OWRhLi5jYTExMmExYWMwMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL3NldFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVt
ZW50cy5odG1sCkBAIC0yLDkgKzIsMTIgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYnJlYWtwb2ludC1vcHRpb25zLXV0aWxp
dGllcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogZnVuY3Rpb24gdHJpZ2dlckRlYnVnZ2VyU3Rh
dGVtZW50KCkgewogICAgIGRlYnVnZ2VyOworCisgICAgVGVzdFBhZ2UuZGlzcGF0Y2hFdmVudFRv
RnJvbnRlbmQoIlRlc3RQYWdlLWRlYnVnZ2VyLXN0YXRlbWVudCIpOwogfQogCiBmdW5jdGlvbiB0
ZXN0KCkKQEAgLTUxLDYgKzU0LDE5IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB9CiAgICAg
fSk7CiAKKyAgICBJbnNwZWN0b3JUZXN0LkJyZWFrcG9pbnRPcHRpb25zLmFkZFRlc3RDYXNlcyhz
dWl0ZSwgeworICAgICAgICBjcmVhdGVCcmVha3BvaW50KCkgeworICAgICAgICAgICAgV0kuZGVi
dWdnZXJNYW5hZ2VyLmRlYnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9pbnQuZGlzYWJsZWQgPSBmYWxz
ZTsKKyAgICAgICAgICAgIHJldHVybiBXSS5kZWJ1Z2dlck1hbmFnZXIuZGVidWdnZXJTdGF0ZW1l
bnRzQnJlYWtwb2ludDsKKyAgICAgICAgfSwKKyAgICAgICAgdHJpZ2dlckJyZWFrcG9pbnQoKSB7
CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHRyaWdnZXJEZWJ1Z2dlclN0YXRlbWVudCgpYCksCisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJUZXN0UGFnZS1kZWJ1Z2dl
ci1zdGF0ZW1lbnQiKSwKKyAgICAgICAgICAgIF0pOworICAgICAgICB9LAorICAgIH0pOworCiAg
ICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CiB9CiA8L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVzZU9uTWljcm90YXNrcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2V0UGF1c2VPbk1p
Y3JvdGFza3MtZXhwZWN0ZWQudHh0CmluZGV4IDFkOTBjZWQzMDYyLi42ZTBmYTNlYzFiOSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NldFBhdXNlT25NaWNyb3Rh
c2tzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2V0
UGF1c2VPbk1pY3JvdGFza3MtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsNyBAQAorQ09OU09MRSBN
RVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMQorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BP
SU5UIEFDVElPTiBMT0cgMgorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cg
MworQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgNAogVGVzdHMgZm9yIERl
YnVnZ2VyLnNldFBhdXNlT25NaWNyb3Rhc2tzIGNvbW1hbmQuCiAKIApAQCAtMjAsMyArMjQsOTEg
QEAgUEFTUzogU2hvdWxkIG5vdCBoYXZlIHBhdXNlZC4KIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBE
ZWJ1Z2dlci5zZXRQYXVzZU9uTWljcm90YXNrcy5FbmFibGVkLlByb21pc2UucmVqZWN0CiBQQVNT
OiBTaG91bGQgaGF2ZSBwYXVzZWQuCiAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5z
ZXRQYXVzZU9uTWljcm90YXNrcy5PcHRpb25zLkNvbmRpdGlvbgorCitTZXR0aW5nIGNvbmRpdGlv
biB0byAnZmFsc2UnLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxk
IG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90
IHBhdXNlLgorCitTZXR0aW5nIGNvbmRpdGlvbiB0byAndHJ1ZScuLi4KKworVHJpZ2dlcmluZyBi
cmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdn
ZXIuc2V0UGF1c2VPbk1pY3JvdGFza3MuT3B0aW9ucy5JZ25vcmVDb3VudAorCitTZXR0aW5nIGln
bm9yZUNvdW50IHRvICcyJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNo
b3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxk
IG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1
c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCist
LSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc2V0UGF1c2VPbk1pY3JvdGFza3MuT3B0aW9u
cy5BY3Rpb24uTG9nCisKK0FkZGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtw
b2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBT
aG91bGQgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFr
cG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzog
U2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29u
dGludWUuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0
ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcg
bG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBl
eGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworLS0g
UnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlT25NaWNyb3Rhc2tzLk9wdGlvbnMu
QWN0aW9ucy5FdmFsdWF0ZQorCitBZGRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJp
bmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24u
CitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1Ry
aWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBh
Y3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4u
CitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgor
UEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90
IHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFr
cG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzog
U2hvdWxkIG5vdCBwYXVzZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL3NldFBhdXNlT25NaWNyb3Rhc2tzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvc2V0UGF1c2VPbk1pY3JvdGFza3MuaHRtbAppbmRleCBiNWRhMTg0M2ZmYy4uYjM3
ZmI1NmRiOTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRQ
YXVzZU9uTWljcm90YXNrcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9zZXRQYXVzZU9uTWljcm90YXNrcy5odG1sCkBAIC0yLDcgKzIsMTQgQEAKIDxodG1sPgogPGhl
YWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2lu
c3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYnJlYWtw
b2ludC1vcHRpb25zLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgorZnVuY3Rpb24g
dHJpZ2dlck1pY3JvdGFzaygpIHsKKyAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7CisgICAgICAg
IFRlc3RQYWdlLmRpc3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJUZXN0UGFnZS1taWNyb3Rhc2siKTsK
KyAgICB9KTsKK30KKwogZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgbGV0IHN1aXRlID0gSW5zcGVj
dG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJEZWJ1Z2dlci5zZXRQYXVzZU9uTWljcm90YXNrcyIp
OwpAQCAtMjcsNyArMzQsOSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIG5hbWU6ICJE
ZWJ1Z2dlci5zZXRQYXVzZU9uTWljcm90YXNrcy5EaXNhYmxlZC4iICsgbmFtZSwKICAgICAgICAg
ICAgIGRlc2NyaXB0aW9uOiAiRG8gbm90IHBhdXNlIG9uIG1pY3JvdGFza3Mgd2hlbiBkaXNhYmxl
ZC4iLAogICAgICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgICAg
ICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsTWljcm90YXNrc0JyZWFrcG9pbnQuZGlzYWJsZWQgPSB0
cnVlOworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5jcmVhdGVBbGxNaWNyb3Rh
c2tzQnJlYWtwb2ludCh7ZGlzYWJsZWQ6IHRydWV9KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydChXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsTWljcm90YXNrc0JyZWFrcG9pbnQs
ICJTaG91bGQgaGF2ZSBjcmVhdGVkIGFsbCBtaWNyb3Rhc2tzIGJyZWFrcG9pbnQuIik7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoV0kuZGVidWdnZXJNYW5hZ2VyLmFsbE1p
Y3JvdGFza3NCcmVha3BvaW50LmRpc2FibGVkLCAiQWxsIG1pY3JvdGFza3MgYnJlYWtwb2ludCBz
aG91bGQgYmUgZGlzYWJsZWQuIik7CiAKICAgICAgICAgICAgICAgICBsZXQgZGlkUGF1c2UgPSBm
YWxzZTsKICAgICAgICAgICAgICAgICBsZXQgbGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIu
c2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwg
KGV2ZW50KSA9PiB7CkBAIC0zOCw2ICs0Nyw5IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoZXhwcmVzc2lvbiwgKCkgPT4gewog
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoIWRpZFBhdXNlLCAi
U2hvdWxkIG5vdCBoYXZlIHBhdXNlZC4iKTsKICAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdn
ZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBh
dXNlZCwgbGlzdGVuZXIpOworCisgICAgICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdl
ci5hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludC5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnQoIVdJLmRlYnVnZ2VyTWFuYWdlci5hbGxNaWNyb3Rhc2tzQnJl
YWtwb2ludCwgIlNob3VsZCBoYXZlIGRlc3Ryb3llZCBhbGwgbWljcm90YXNrcyBicmVha3BvaW50
LiIpOwogICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICB9CkBAIC00Nyw3ICs1OSw5IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICAgICAgbmFtZTogIkRlYnVnZ2VyLnNldFBhdXNlT25NaWNyb3Rhc2tzLkVuYWJsZWQuIiArIG5h
bWUsCiAgICAgICAgICAgICBkZXNjcmlwdGlvbjogIkRvIG5vdCBwYXVzZSBvbiBtaWNyb3Rhc2tz
IHdoZW4gZGlzYWJsZWQuIiwKICAgICAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0g
ICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFsbE1pY3JvdGFza3NCcmVha3BvaW50
LmRpc2FibGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmNy
ZWF0ZUFsbE1pY3JvdGFza3NCcmVha3BvaW50KCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnQoV0kuZGVidWdnZXJNYW5hZ2VyLmFsbE1pY3JvdGFza3NCcmVha3BvaW50LCAi
U2hvdWxkIGhhdmUgY3JlYXRlZCBhbGwgbWljcm90YXNrcyBicmVha3BvaW50LiIpOworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCFXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsTWlj
cm90YXNrc0JyZWFrcG9pbnQuZGlzYWJsZWQsICJBbGwgbWljcm90YXNrcyBicmVha3BvaW50IHNo
b3VsZCBiZSBlbmFibGVkLiIpOwogCiAgICAgICAgICAgICAgICAgbGV0IGRpZFBhdXNlID0gZmFs
c2U7CiAgICAgICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLnNp
bmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChl
dmVudCkgPT4gewpAQCAtNTgsMTIgKzcyLDI4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoZXhwcmVzc2lvbiwgKCkgPT4gewog
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZGlkUGF1c2UsICJT
aG91bGQgaGF2ZSBwYXVzZWQuIik7CiAgICAgICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFu
YWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQs
IGxpc3RlbmVyKTsKKworICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWxs
TWljcm90YXNrc0JyZWFrcG9pbnQucmVtb3ZlKCk7CisgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0KCFXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsTWljcm90YXNrc0JyZWFrcG9p
bnQsICJTaG91bGQgaGF2ZSBkZXN0cm95ZWQgYWxsIG1pY3JvdGFza3MgYnJlYWtwb2ludC4iKTsK
ICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgfQogICAgICAgICB9KTsKICAgICB9CiAKKyAgICBJbnNwZWN0b3JUZXN0LkJyZWFr
cG9pbnRPcHRpb25zLmFkZFRlc3RDYXNlcyhzdWl0ZSwgeworICAgICAgICBjcmVhdGVCcmVha3Bv
aW50KCkgeworICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmNyZWF0ZUFsbE1pY3JvdGFz
a3NCcmVha3BvaW50KCk7CisgICAgICAgICAgICByZXR1cm4gV0kuZGVidWdnZXJNYW5hZ2VyLmFs
bE1pY3JvdGFza3NCcmVha3BvaW50OworICAgICAgICB9LAorICAgICAgICB0cmlnZ2VyQnJlYWtw
b2ludCgpIHsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJUZXN0UGFnZS1taWNyb3Rhc2siKSwKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0cmlnZ2VyTWljcm90YXNr
KClgKSwKKyAgICAgICAgICAgIF0pOworICAgICAgICB9LAorICAgIH0pOworCiAgICAgc3VpdGUu
cnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CiB9CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCmluZGV4IDMyM2I2NmUwYjUwLi4xNDNiNDc1ZDQzMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMjAtMDgtMjggIERldmluIFJvdXNzbyAgPGRyb3Vzc29A
YXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFsbG93IHNwZWNpYWwgSmF2YVNj
cmlwdCBicmVha3BvaW50cyB0byBiZSBjb25maWd1cmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU3OTQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm90b2NvbC9EZWJ1Z2dlci5q
c29uOgorICAgICAgICBBZGQgYW4gYG9wdGlvbnNgIHBhcmFtYXRlciB0byB0aGUgZm9sbG93aW5n
IGNvbW1hbmRzIGZvciBjb25maWd1cmluZyB0aGUgcmVsYXRlZCBicmVha3BvaW50OgorICAgICAg
ICAgLSBgRGVidWdnZXIuc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50c2AKKyAgICAgICAgIC0g
YERlYnVnZ2VyLnNldFBhdXNlT25FeGNlcHRpb25zYAorICAgICAgICAgLSBgRGVidWdnZXIuc2V0
UGF1c2VPbkFzc2VydGlvbnNgCisgICAgICAgICAtIGBEZWJ1Z2dlci5zZXRQYXVzZU9uTWljcm90
YXNrc2AKKworICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmg6CisgICAgICAgIChKU0M6OkRl
YnVnZ2VyOjpuZWVkc0V4Y2VwdGlvbkNhbGxiYWNrcyBjb25zdCk6CisgICAgICAgIChKU0M6OkRl
YnVnZ2VyOjpwYXVzZU9uQWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQgY29uc3QpOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6RGVidWdnZXI6OnNldFBhdXNlT25BbGxFeGNlcHRpb25zQnJlYWtwb2ludCk6
IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cGF1c2VPblVuY2F1Z2h0RXhjZXB0aW9u
c0JyZWFrcG9pbnQgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnNldFBh
dXNlT25VbmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50KTogQWRkZWQuCisgICAgICAgIChKU0M6
OkRlYnVnZ2VyOjpzZXRQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludCk6IEFkZGVk
LgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpzZXRQYXVzZU9uRGVidWdnZXJTdGF0
ZW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5jcHA6CisgICAg
ICAgIChKU0M6OkRlYnVnZ2VyOjpEZWJ1Z2dlcik6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpl
dmFsdWF0ZUJyZWFrcG9pbnRDb25kaXRpb24pOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6ZXZh
bHVhdGVCcmVha3BvaW50QWN0aW9ucyk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpicmVha1By
b2dyYW0pOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6ZXhjZXB0aW9uKToKKyAgICAgICAgKEpT
Qzo6RGVidWdnZXI6OmRpZFJlYWNoRGVidWdnZXJTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpE
ZWJ1Z2dlcjo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIEFk
ZCBgSlNDOjpCcmVha3BvaW50YCBtZW1iZXIgdmFyaWFibGVzIGZvciB0aGUgRGVidWdnZXIgU3Rh
dGVtZW50cyBhbmQgRXhjZXB0aW9ucworICAgICAgICBicmVha3BvaW50cy4gU3BsaXQgdGhlIEV4
Y2VwdGlvbnMgYnJlYWtwb2ludCBpbnRvIHR3byBgSlNDOjpCcmVha3BvaW50YCBub3cgdGhhdAor
ICAgICAgICBBbGwgRXhjZXB0aW9ucyBhbmQgVW5jYXVnaHQgRXhjZXB0aW9ucyBjYW4gYmUgaW5k
ZXBlbmRlbnRseSBjb25maWd1cmVkICh0aGUgQWxsCisgICAgICAgIEV4Y2VwdGlvbnMgYnJlYWtw
b2ludCBzdGlsbCB0YWtlcyBwcmVjZWRlbmNlKS4KKworICAgICAgICAqIGRlYnVnZ2VyL0RlYnVn
Z2VyQ2FsbEZyYW1lLmg6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3Bw
OgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRl
bnNpb24pOgorICAgICAgICBJZiB0aGVyZSBpcyBubyBgQ2FsbEZyYW1lYCwgY2xpbWIgdGhlIGJh
Y2t0cmFjZSB1bnRpbCB0aGUgZmlyc3QgdmFsaWQgYENhbGxGcmFtZWAgaXMgcmVhY2hlZC4KKyAg
ICAgICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGUgSmF2YVNjcmlwdCBiZWluZyBwYXVzZWQgaW4g
aXMgbmF0aXZlIGNvZGUsIHN1Y2ggYXMgd2hlbiBwYXVzaW5nIGZvcgorICAgICAgICBhc3NlcnRp
b25zL2V4Y2VwdGlvbnMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpkaXNhYmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
aGFuZGxlQ29uc29sZUFzc2VydCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OnNldFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHMpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVzZU9uRXhjZXB0aW9ucyk6CisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25Bc3NlcnRp
b25zKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0UGF1
c2VPbk1pY3JvdGFza3MpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c2NyaXB0RXhlY3V0aW9uQmxvY2tlZEJ5Q1NQKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6d2lsbFJ1bk1pY3JvdGFzayk6CisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFJ1bk1pY3JvdGFzayk6
CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrUHJvZ3Jh
bSk6CisgICAgICAgIEFkZCBgSlNDOjpCcmVha3BvaW50YCBtZW1iZXIgdmFyaWFibGVzIGZvciB0
aGUgQXNzZXJ0aW9uIEZhaWx1cmVzIGFuZCBBbGwgTWljcm90YXNrcworICAgICAgICBicmVha3Bv
aW50cy4gUGFzcyB0aGVtIHRvIHRoZSBgSlNDOjpEZWJ1Z2dlcmAgd2hlbiB0aGV5IGFyZSBoaXQu
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBdWRpdEFnZW50OjpydW4pOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0ZSk6CisgICAgICAgIChJbnNw
ZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24pOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByZXZpZXcpOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByb3BlcnRpZXMpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldERpc3BsYXlhYmxlUHJvcGVy
dGllcyk6CisgICAgICAgIChJbnNwZWN0b3I6OnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUpOiBE
ZWxldGVkLgorICAgICAgICBVc2UgdGhlIG5ldyBtYWNyb3MgZm9yIHNhdmluZywgb3ZlcnJpZGlu
ZywgYW5kIHJlc3RvcmluZyB0aGUgZXhjZXB0aW9ucyBicmVha3BvaW50cyBub3cgdGhhdAorICAg
ICAgICB0aGV5J3ZlIGJlZW4gc2VwYXJhdGVkIGludG8gdHdvIGBKU0M6OkJyZWFrcG9pbnRgIGlu
c3RlYWQgb2YgYSBzaW5nbGUgYGVudW1gLgorCisgICAgICAgICogZGVidWdnZXIvQnJlYWtwb2lu
dC5oOgorCiAyMDIwLTA4LTI3ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNv
bT4KIAogICAgICAgICBfX3Byb3RvX18gaW4gb2JqZWN0IGxpdGVyYWwgc2hvdWxkIHBlcmZvcm0g
W1tTZXRQcm90b3R5cGVPZl1dIGRpcmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvQnJlYWtwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0JyZWFrcG9pbnQuaAppbmRleCAxZmFmYjMwM2NmOC4uZDFlZjZjYWQ4MzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9CcmVha3BvaW50LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0JyZWFrcG9pbnQuaApAQCAtNTksNyArNTksNyBA
QCBwdWJsaWM6CiAKICAgICB1c2luZyBBY3Rpb25zVmVjdG9yID0gVmVjdG9yPEFjdGlvbj47CiAK
LSAgICBzdGF0aWMgUmVmPEJyZWFrcG9pbnQ+IGNyZWF0ZShCcmVha3BvaW50SUQsIGNvbnN0IFN0
cmluZyYgY29uZGl0aW9uID0gbnVsbFN0cmluZygpLCBBY3Rpb25zVmVjdG9yJiYgPSB7IH0sIGJv
b2wgYXV0b0NvbnRpbnVlID0gZmFsc2UsIHNpemVfdCBpZ25vcmVDb3VudCA9IDApOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QnJlYWtwb2ludD4gY3JlYXRlKEJyZWFrcG9pbnRJ
RCwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24gPSBudWxsU3RyaW5nKCksIEFjdGlvbnNWZWN0b3Im
JiA9IHsgfSwgYm9vbCBhdXRvQ29udGludWUgPSBmYWxzZSwgc2l6ZV90IGlnbm9yZUNvdW50ID0g
MCk7CiAKICAgICBCcmVha3BvaW50SUQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCmluZGV4IGM0YmZhMWE3
NzEzLi5lZjMyMTlmMmFhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXIuY3BwCkBAIC04NCw3ICs4NCw2IEBAIERlYnVnZ2VyOjpQcm9maWxpbmdDbGllbnQ6On5Q
cm9maWxpbmdDbGllbnQoKQogCiBEZWJ1Z2dlcjo6RGVidWdnZXIoVk0mIHZtKQogICAgIDogbV92
bSh2bSkKLSAgICAsIG1fcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShEb250UGF1c2VPbkV4Y2VwdGlv
bnMpCiAgICAgLCBtX3BhdXNlQXROZXh0T3Bwb3J0dW5pdHkoZmFsc2UpCiAgICAgLCBtX3Bhc3RG
aXJzdEV4cHJlc3Npb25JblN0YXRlbWVudChmYWxzZSkKICAgICAsIG1faXNQYXVzZWQoZmFsc2Up
CkBAIC01ODMsNyArNTgyLDcgQEAgYm9vbCBEZWJ1Z2dlcjo6ZXZhbHVhdGVCcmVha3BvaW50Q29u
ZGl0aW9uKEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQsIEpTR2xvYmFsT2JqZWMKICAgICBOYWtlZFB0
cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKICAgICBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJD
YWxsRnJhbWUgPSBjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKTsKICAgICBKU09iamVjdCogc2Nv
cGVFeHRlbnNpb25PYmplY3QgPSBudWxscHRyOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gZGVidWdn
ZXJDYWxsRnJhbWUuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oY29uZGl0aW9uLCBzY29wZUV4
dGVuc2lvbk9iamVjdCwgZXhjZXB0aW9uKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGRlYnVnZ2Vy
Q2FsbEZyYW1lLmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGNvbmRpdGlvbiwgc2NvcGVFeHRl
bnNpb25PYmplY3QsIGV4Y2VwdGlvbiwgRGVidWdnZXJDYWxsRnJhbWU6OkNsaW1iVG9WYWxpZEZy
YW1lOjpZZXMpOwogCiAgICAgLy8gV2UgY2FuIGxvc2UgdGhlIGRlYnVnZ2VyIHdoaWxlIGV4ZWN1
dGluZyBKYXZhU2NyaXB0LgogICAgIGlmICghbV9jdXJyZW50Q2FsbEZyYW1lKQpAQCAtNjE3LDcg
KzYxNiw3IEBAIHZvaWQgRGVidWdnZXI6OmV2YWx1YXRlQnJlYWtwb2ludEFjdGlvbnMoQnJlYWtw
b2ludCYgYnJlYWtwb2ludCwgSlNHbG9iYWxPYmplY3QqCiAgICAgICAgIGNhc2UgQnJlYWtwb2lu
dDo6QWN0aW9uOjpUeXBlOjpFdmFsdWF0ZTogewogICAgICAgICAgICAgTmFrZWRQdHI8RXhjZXB0
aW9uPiBleGNlcHRpb247CiAgICAgICAgICAgICBKU09iamVjdCogc2NvcGVFeHRlbnNpb25PYmpl
Y3QgPSBudWxscHRyOwotICAgICAgICAgICAgZGVidWdnZXJDYWxsRnJhbWUuZXZhbHVhdGVXaXRo
U2NvcGVFeHRlbnNpb24oYWN0aW9uLmRhdGEsIHNjb3BlRXh0ZW5zaW9uT2JqZWN0LCBleGNlcHRp
b24pOworICAgICAgICAgICAgZGVidWdnZXJDYWxsRnJhbWUuZXZhbHVhdGVXaXRoU2NvcGVFeHRl
bnNpb24oYWN0aW9uLmRhdGEsIHNjb3BlRXh0ZW5zaW9uT2JqZWN0LCBleGNlcHRpb24sIERlYnVn
Z2VyQ2FsbEZyYW1lOjpDbGltYlRvVmFsaWRGcmFtZTo6WWVzKTsKICAgICAgICAgICAgIGlmIChl
eGNlcHRpb24pCiAgICAgICAgICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKGRlYnVnZ2VyQ2FsbEZy
YW1lLmdsb2JhbE9iamVjdCgpLCBleGNlcHRpb24pOwogICAgICAgICAgICAgYnJlYWs7CkBAIC02
MzIsNyArNjMxLDcgQEAgdm9pZCBEZWJ1Z2dlcjo6ZXZhbHVhdGVCcmVha3BvaW50QWN0aW9ucyhC
cmVha3BvaW50JiBicmVha3BvaW50LCBKU0dsb2JhbE9iamVjdCoKICAgICAgICAgY2FzZSBCcmVh
a3BvaW50OjpBY3Rpb246OlR5cGU6OlByb2JlOiB7CiAgICAgICAgICAgICBOYWtlZFB0cjxFeGNl
cHRpb24+IGV4Y2VwdGlvbjsKICAgICAgICAgICAgIEpTT2JqZWN0KiBzY29wZUV4dGVuc2lvbk9i
amVjdCA9IG51bGxwdHI7Ci0gICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGRlYnVnZ2VyQ2Fs
bEZyYW1lLmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGFjdGlvbi5kYXRhLCBzY29wZUV4dGVu
c2lvbk9iamVjdCwgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gZGVi
dWdnZXJDYWxsRnJhbWUuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oYWN0aW9uLmRhdGEsIHNj
b3BlRXh0ZW5zaW9uT2JqZWN0LCBleGNlcHRpb24sIERlYnVnZ2VyQ2FsbEZyYW1lOjpDbGltYlRv
VmFsaWRGcmFtZTo6WWVzKTsKICAgICAgICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGRlYnVn
Z2VyR2xvYmFsT2JqZWN0ID0gZGVidWdnZXJDYWxsRnJhbWUuZ2xvYmFsT2JqZWN0KCk7CiAgICAg
ICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihk
ZWJ1Z2dlckdsb2JhbE9iamVjdCwgZXhjZXB0aW9uKTsKQEAgLTY4OCwxMSArNjg3LDYgQEAgdm9p
ZCBEZWJ1Z2dlcjo6c2V0QnJlYWtwb2ludHNBY3RpdmF0ZWQoYm9vbCBhY3RpdmF0ZWQpCiAgICAg
cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKTsKIH0KIAotdm9pZCBEZWJ1Z2dlcjo6c2V0UGF1c2VP
bkV4Y2VwdGlvbnNTdGF0ZShQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHBhdXNlKQotewotICAgIG1f
cGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHBhdXNlOwotfQotCiB2b2lkIERlYnVnZ2VyOjpzY2hl
ZHVsZVBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoKQogewogICAgIG1fcGF1c2VBdE5leHRPcHBvcnR1
bml0eSA9IHRydWU7CkBAIC03MjQsNyArNzE4LDcgQEAgYm9vbCBEZWJ1Z2dlcjo6Y2FuY2VsUGF1
c2VGb3JTcGVjaWFsQnJlYWtwb2ludChCcmVha3BvaW50JiBicmVha3BvaW50KQogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIERlYnVnZ2VyOjpicmVha1Byb2dyYW0oKQordm9pZCBEZWJ1Z2dl
cjo6YnJlYWtQcm9ncmFtKFJlZlB0cjxCcmVha3BvaW50PiYmIHNwZWNpYWxCcmVha3BvaW50KQog
ewogICAgIGlmIChtX2lzUGF1c2VkKQogICAgICAgICByZXR1cm47CkBAIC03MzIsNyArNzI2LDEy
IEBAIHZvaWQgRGVidWdnZXI6OmJyZWFrUHJvZ3JhbSgpCiAgICAgaWYgKCFtX3ZtLnRvcENhbGxG
cmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYXVzZUF0TmV4dE9wcG9ydHVuaXR5ID0g
dHJ1ZTsKKyAgICBpZiAoc3BlY2lhbEJyZWFrcG9pbnQpIHsKKyAgICAgICAgQVNTRVJUKCFtX3Nw
ZWNpYWxCcmVha3BvaW50KTsKKyAgICAgICAgbV9zcGVjaWFsQnJlYWtwb2ludCA9IFdURk1vdmUo
c3BlY2lhbEJyZWFrcG9pbnQpOworICAgIH0gZWxzZQorICAgICAgICBtX3BhdXNlQXROZXh0T3Bw
b3J0dW5pdHkgPSB0cnVlOworCiAgICAgc2V0U3RlcHBpbmdNb2RlKFN0ZXBwaW5nTW9kZUVuYWJs
ZWQpOwogICAgIG1fY3VycmVudENhbGxGcmFtZSA9IG1fdm0udG9wQ2FsbEZyYW1lOwogICAgIHBh
dXNlSWZOZWVkZWQobV9jdXJyZW50Q2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KG1fdm0p
KTsKQEAgLTk4MCw4ICs5NzksOCBAQCB2b2lkIERlYnVnZ2VyOjpleGNlcHRpb24oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVgogICAgIH0KIAog
ICAgIFBhdXNlUmVhc29uRGVjbGFyYXRpb24gcmVhc29uKCp0aGlzLCBQYXVzZWRGb3JFeGNlcHRp
b24pOwotICAgIGlmIChtX3BhdXNlT25FeGNlcHRpb25zU3RhdGUgPT0gUGF1c2VPbkFsbEV4Y2Vw
dGlvbnMgfHwgKG1fcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9PSBQYXVzZU9uVW5jYXVnaHRFeGNl
cHRpb25zICYmICFoYXNDYXRjaEhhbmRsZXIpKSB7Ci0gICAgICAgIG1fcGF1c2VBdE5leHRPcHBv
cnR1bml0eSA9IHRydWU7CisgICAgaWYgKG1fcGF1c2VPbkFsbEV4Y2VwdGlvbnNCcmVha3BvaW50
IHx8IChtX3BhdXNlT25VbmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50ICYmICFoYXNDYXRjaEhh
bmRsZXIpKSB7CisgICAgICAgIG1fc3BlY2lhbEJyZWFrcG9pbnQgPSBtX3BhdXNlT25BbGxFeGNl
cHRpb25zQnJlYWtwb2ludCA/IG1fcGF1c2VPbkFsbEV4Y2VwdGlvbnNCcmVha3BvaW50LmNvcHlS
ZWYoKSA6IG1fcGF1c2VPblVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQuY29weVJlZigpOwog
ICAgICAgICBzZXRTdGVwcGluZ01vZGUoU3RlcHBpbmdNb2RlRW5hYmxlZCk7CiAgICAgfQogCkBA
IC0xMTMyLDExICsxMTMxLDExIEBAIHZvaWQgRGVidWdnZXI6OmRpZFJlYWNoRGVidWdnZXJTdGF0
ZW1lbnQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKG1faXNQYXVzZWQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmICghbV9wYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzKQorICAgIGlm
ICghbV9wYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgUGF1c2VSZWFzb25EZWNsYXJhdGlvbiByZWFzb24oKnRoaXMsIFBhdXNlZEZvckRl
YnVnZ2VyU3RhdGVtZW50KTsKLSAgICBtX3BhdXNlQXROZXh0T3Bwb3J0dW5pdHkgPSB0cnVlOwor
ICAgIG1fc3BlY2lhbEJyZWFrcG9pbnQgPSBtX3BhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHNCcmVh
a3BvaW50LmNvcHlSZWYoKTsKICAgICBzZXRTdGVwcGluZ01vZGUoU3RlcHBpbmdNb2RlRW5hYmxl
ZCk7CiAgICAgdXBkYXRlQ2FsbEZyYW1lKGxleGljYWxHbG9iYWxPYmplY3RGb3JDYWxsRnJhbWUo
bV92bSwgY2FsbEZyYW1lKSwgY2FsbEZyYW1lLCBBdHRlbXB0UGF1c2UpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAppbmRleCBjYzk1ZTdjNjRiOS4uMjliMzEw
OGRjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCkBAIC0z
OCw2ICszOCwxOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIGNsYXNzIFNvdXJjZVByb3ZpZGVy
OwogY2xhc3MgVk07CiAKKyNkZWZpbmUgU0FWRV9QQVVTRV9PTl9FWENFUFRJT05TX0JSRUFLUE9J
TlRTKGRlYnVnZ2VyKSBcCisgICAgYXV0byBwYXVzZU9uQWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQg
PSBkZWJ1Z2dlci5wYXVzZU9uQWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQoKTsgXAorICAgIGF1dG8g
cGF1c2VPblVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBkZWJ1Z2dlci5wYXVzZU9uVW5j
YXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludCgpOyBcCisKKyNkZWZpbmUgT1ZFUlJJREVfUEFVU0Vf
T05fRVhDRVBUSU9OU19CUkVBS1BPSU5UUyhkZWJ1Z2dlciwgdmFsdWUpIFwKKyAgICBkZWJ1Z2dl
ci5zZXRQYXVzZU9uQWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQodmFsdWUpOyBcCisgICAgZGVidWdn
ZXIuc2V0UGF1c2VPblVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQodmFsdWUpOyBcCisKKyNk
ZWZpbmUgUkVTVE9SRV9QQVVTRV9PTl9FWENFUFRJT05TX0JSRUFLUE9JTlRTKGRlYnVnZ2VyKSBc
CisgICAgZGVidWdnZXIuc2V0UGF1c2VPbkFsbEV4Y2VwdGlvbnNCcmVha3BvaW50KFdURk1vdmUo
cGF1c2VPbkFsbEV4Y2VwdGlvbnNCcmVha3BvaW50KSk7IFwKKyAgICBkZWJ1Z2dlci5zZXRQYXVz
ZU9uVW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludChXVEZNb3ZlKHBhdXNlT25VbmNhdWdodEV4
Y2VwdGlvbnNCcmVha3BvaW50KSk7IFwKKwogY2xhc3MgRGVidWdnZXIgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNDYsNyArNTgsNyBAQCBwdWJsaWM6CiAKICAg
ICBWTSYgdm0oKSB7IHJldHVybiBtX3ZtOyB9CiAKLSAgICBib29sIG5lZWRzRXhjZXB0aW9uQ2Fs
bGJhY2tzKCkgY29uc3QgeyByZXR1cm4gbV9icmVha3BvaW50c0FjdGl2YXRlZCAmJiBtX3BhdXNl
T25FeGNlcHRpb25zU3RhdGUgIT0gRG9udFBhdXNlT25FeGNlcHRpb25zOyB9CisgICAgYm9vbCBu
ZWVkc0V4Y2VwdGlvbkNhbGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fYnJlYWtwb2ludHNBY3Rp
dmF0ZWQgJiYgKG1fcGF1c2VPbkFsbEV4Y2VwdGlvbnNCcmVha3BvaW50IHx8IG1fcGF1c2VPblVu
Y2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQpOyB9CiAgICAgYm9vbCBpc0ludGVyYWN0aXZlbHlE
ZWJ1Z2dpbmcoKSBjb25zdCB7IHJldHVybiBtX2JyZWFrcG9pbnRzQWN0aXZhdGVkOyB9CiAKICAg
ICBlbnVtIFJlYXNvbkZvckRldGFjaCB7CkBAIC03MCwxNSArODIsMTMgQEAgcHVibGljOgogICAg
IGJvb2wgZXZhbHVhdGVCcmVha3BvaW50Q29uZGl0aW9uKEJyZWFrcG9pbnQmLCBKU0dsb2JhbE9i
amVjdCopOwogICAgIHZvaWQgZXZhbHVhdGVCcmVha3BvaW50QWN0aW9ucyhCcmVha3BvaW50Jiwg
SlNHbG9iYWxPYmplY3QqKTsKIAotICAgIGVudW0gUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSB7Ci0g
ICAgICAgIERvbnRQYXVzZU9uRXhjZXB0aW9ucywKLSAgICAgICAgUGF1c2VPbkFsbEV4Y2VwdGlv
bnMsCi0gICAgICAgIFBhdXNlT25VbmNhdWdodEV4Y2VwdGlvbnMKLSAgICB9OwotICAgIFBhdXNl
T25FeGNlcHRpb25zU3RhdGUgcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZTsgfQotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKKyAgICBj
b25zdCBSZWZQdHI8QnJlYWtwb2ludD4mIHBhdXNlT25BbGxFeGNlcHRpb25zQnJlYWtwb2ludCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGF1c2VPbkFsbEV4Y2VwdGlvbnNCcmVha3BvaW50OyB9CisgICAg
dm9pZCBzZXRQYXVzZU9uQWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQoUmVmUHRyPEJyZWFrcG9pbnQ+
JiYgYnJlYWtwb2ludCkgeyBtX3BhdXNlT25BbGxFeGNlcHRpb25zQnJlYWtwb2ludCA9IFdURk1v
dmUoYnJlYWtwb2ludCk7IH0KIAotICAgIHZvaWQgc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50
cyhib29sIGVuYWJsZWQpIHsgbV9wYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzID0gZW5hYmxlZDsg
fQorICAgIGNvbnN0IFJlZlB0cjxCcmVha3BvaW50PiYgcGF1c2VPblVuY2F1Z2h0RXhjZXB0aW9u
c0JyZWFrcG9pbnQoKSBjb25zdCB7IHJldHVybiBtX3BhdXNlT25VbmNhdWdodEV4Y2VwdGlvbnNC
cmVha3BvaW50OyB9CisgICAgdm9pZCBzZXRQYXVzZU9uVW5jYXVnaHRFeGNlcHRpb25zQnJlYWtw
b2ludChSZWZQdHI8QnJlYWtwb2ludD4mJiBicmVha3BvaW50KSB7IG1fcGF1c2VPblVuY2F1Z2h0
RXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBXVEZNb3ZlKGJyZWFrcG9pbnQpOyB9CisKKyAgICB2b2lk
IHNldFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50KFJlZlB0cjxCcmVha3BvaW50
PiYmIGJyZWFrcG9pbnQpIHsgbV9wYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludCA9
IFdURk1vdmUoYnJlYWtwb2ludCk7IH0KIAogICAgIGVudW0gUmVhc29uRm9yUGF1c2UgewogICAg
ICAgICBOb3RQYXVzZWQsCkBAIC05OCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5j
ZWxQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KCk7CiAgICAgYm9vbCBzY2hlZHVsZVBhdXNlRm9yU3Bl
Y2lhbEJyZWFrcG9pbnQoQnJlYWtwb2ludCYpOwogICAgIGJvb2wgY2FuY2VsUGF1c2VGb3JTcGVj
aWFsQnJlYWtwb2ludChCcmVha3BvaW50Jik7Ci0gICAgdm9pZCBicmVha1Byb2dyYW0oKTsKKyAg
ICB2b2lkIGJyZWFrUHJvZ3JhbShSZWZQdHI8QnJlYWtwb2ludD4mJiBzcGVjaWFsQnJlYWtwb2lu
dCA9IG51bGxwdHIpOwogICAgIHZvaWQgY29udGludWVQcm9ncmFtKCk7CiAgICAgdm9pZCBzdGVw
TmV4dEV4cHJlc3Npb24oKTsKICAgICB2b2lkIHN0ZXBJbnRvU3RhdGVtZW50KCk7CkBAIC0yODEs
OCArMjkxLDYgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFNvdXJjZUlELCBEZWJ1Z2dlclBhcnNl
RGF0YSwgV1RGOjpJbnRIYXNoPFNvdXJjZUlEPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFz
aFRyYWl0czxTb3VyY2VJRD4+IG1fcGFyc2VEYXRhTWFwOwogICAgIEhhc2hNYXA8U291cmNlSUQs
IEJsYWNrYm94VHlwZSwgV1RGOjpJbnRIYXNoPFNvdXJjZUlEPiwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czxTb3VyY2VJRD4+IG1fYmxhY2tib3hlZFNjcmlwdHM7CiAKLSAgICBQ
YXVzZU9uRXhjZXB0aW9uc1N0YXRlIG1fcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZTsKLSAgICBib29s
IG1fcGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cyA6IDE7CiAgICAgYm9vbCBtX3BhdXNlQXROZXh0
T3Bwb3J0dW5pdHkgOiAxOwogICAgIGJvb2wgbV9wYXVzZU9uU3RlcE5leHQgOiAxOwogICAgIGJv
b2wgbV9wYXVzZU9uU3RlcE91dCA6IDE7CkBAIC0zMDcsNiArMzE1LDEwIEBAIHByaXZhdGU6CiAg
ICAgUmVmUHRyPEJyZWFrcG9pbnQ+IG1fc3BlY2lhbEJyZWFrcG9pbnQ7CiAgICAgQnJlYWtwb2lu
dElEIG1fcGF1c2luZ0JyZWFrcG9pbnRJRDsKIAorICAgIFJlZlB0cjxCcmVha3BvaW50PiBtX3Bh
dXNlT25BbGxFeGNlcHRpb25zQnJlYWtwb2ludDsKKyAgICBSZWZQdHI8QnJlYWtwb2ludD4gbV9w
YXVzZU9uVW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludDsKKyAgICBSZWZQdHI8QnJlYWtwb2lu
dD4gbV9wYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludDsKKwogICAgIHVuc2lnbmVk
IG1fbmV4dFByb2JlU2FtcGxlSWQgeyAxIH07CiAgICAgdW5zaWduZWQgbV9jdXJyZW50UHJvYmVC
YXRjaElkIHsgMCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAppbmRleCBjNzQ3Zjk5M2E3MS4uZGZjOTJmZWUwYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFt
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZy
YW1lLmNwcApAQCAtMjE2LDI0ICsyMTYsMzUgQEAgSlNWYWx1ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6
dGhpc1ZhbHVlKFZNJiB2bSkgY29uc3QKIH0KIAogLy8gRXZhbHVhdGUgc29tZSBKYXZhU2NyaXB0
IGNvZGUgaW4gdGhlIHNjb3BlIG9mIHRoaXMgZnJhbWUuCi1KU1ZhbHVlIERlYnVnZ2VyQ2FsbEZy
YW1lOjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHNjcmlwdCwgSlNP
YmplY3QqIHNjb3BlRXh0ZW5zaW9uT2JqZWN0LCBOYWtlZFB0cjxFeGNlcHRpb24+JiBleGNlcHRp
b24pCitKU1ZhbHVlIERlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lv
bihjb25zdCBTdHJpbmcmIHNjcmlwdCwgSlNPYmplY3QqIHNjb3BlRXh0ZW5zaW9uT2JqZWN0LCBO
YWtlZFB0cjxFeGNlcHRpb24+JiBleGNlcHRpb24sIENsaW1iVG9WYWxpZEZyYW1lIGNsaW1iVG9W
YWxpZEZyYW1lKQogewotICAgIEFTU0VSVChpc1ZhbGlkKCkpOwotICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gbV92YWxpZE1hY2hpbmVGcmFtZTsKLSAgICBpZiAoIWNhbGxGcmFtZSkKKyAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IG51bGxwdHI7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBudWxscHRyOworCisgICAgYXV0byogZGVidWdnZXJDYWxsRnJhbWUgPSB0aGlzOworICAgIHdo
aWxlIChkZWJ1Z2dlckNhbGxGcmFtZSkgeworICAgICAgICBBU1NFUlQoZGVidWdnZXJDYWxsRnJh
bWUtPmlzVmFsaWQoKSk7CisKKyAgICAgICAgY2FsbEZyYW1lID0gZGVidWdnZXJDYWxsRnJhbWUt
Pm1fdmFsaWRNYWNoaW5lRnJhbWU7CisgICAgICAgIGlmIChjYWxsRnJhbWUpIHsKKyAgICAgICAg
ICAgIGlmIChkZWJ1Z2dlckNhbGxGcmFtZS0+aXNUYWlsRGVsZXRlZCgpKQorICAgICAgICAgICAg
ICAgIGNvZGVCbG9jayA9IGRlYnVnZ2VyQ2FsbEZyYW1lLT5tX3NoYWRvd0NoaWNrZW5GcmFtZS5j
b2RlQmxvY2s7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY29kZUJsb2NrID0g
Y2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgoY2FsbEZy
YW1lICYmIGNvZGVCbG9jaykgfHwgY2xpbWJUb1ZhbGlkRnJhbWUgIT0gQ2xpbWJUb1ZhbGlkRnJh
bWU6OlllcykKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlYnVnZ2VyQ2FsbEZyYW1l
ID0gZGVidWdnZXJDYWxsRnJhbWUtPm1fY2FsbGVyLmdldCgpOworICAgIH0KKworICAgIGlmICgh
Y2FsbEZyYW1lIHx8ICFjb2RlQmxvY2spCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
CiAgICAgVk0mIHZtID0gY2FsbEZyYW1lLT5kZXByZWNhdGVkVk0oKTsKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayh2bSk7CiAgICAgYXV0byBjYXRjaFNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2
bSk7Ci0KLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG51bGxwdHI7Ci0gICAgaWYgKGlzVGFp
bERlbGV0ZWQoKSkKLSAgICAgICAgY29kZUJsb2NrID0gbV9zaGFkb3dDaGlja2VuRnJhbWUuY29k
ZUJsb2NrOwotICAgIGVsc2UKLSAgICAgICAgY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKTsKLSAgICBpZiAoIWNvZGVCbG9jaykKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAgICAgCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCk7CiAgICAgRGVidWdnZXJFdmFsRW5hYmxlciBldmFsRW5hYmxlcihnbG9iYWxP
YmplY3QsIERlYnVnZ2VyRXZhbEVuYWJsZXI6Ok1vZGU6OkV2YWxPbkdsb2JhbE9iamVjdEF0RGVi
dWdnZXJFbnRyeSk7CkBAIC0yNjMsOCArMjc0LDcgQEAgSlNWYWx1ZSBEZWJ1Z2dlckNhbGxGcmFt
ZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBzY3JpcHQsIEpTT2IK
ICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRHbG9iYWxTY29wZUV4dGVuc2lvbihKU1dpdGhTY29w
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGlnbm9yZWRQcmV2aW91c1Njb3BlLCBzY29wZUV4
dGVuc2lvbk9iamVjdCkpOwogICAgIH0KIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gdGhpcy0+
dGhpc1ZhbHVlKHZtKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHZtLmludGVycHJldGVyLT5leGVj
dXRlKGV2YWwsIGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBzY29wZSgpLT5qc1Njb3BlKCkpOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdm0uaW50ZXJwcmV0ZXItPmV4ZWN1dGUoZXZhbCwgZ2xvYmFs
T2JqZWN0LCBkZWJ1Z2dlckNhbGxGcmFtZS0+dGhpc1ZhbHVlKHZtKSwgZGVidWdnZXJDYWxsRnJh
bWUtPnNjb3BlKCktPmpzU2NvcGUoKSk7CiAgICAgaWYgKFVOTElLRUxZKGNhdGNoU2NvcGUuZXhj
ZXB0aW9uKCkpKSB7CiAgICAgICAgIGV4Y2VwdGlvbiA9IGNhdGNoU2NvcGUuZXhjZXB0aW9uKCk7
CiAgICAgICAgIGNhdGNoU2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgKaW5kZXggYWM2ZWNkMzQ1
MTguLjRkYmVlMzhiNTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJDYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJDYWxsRnJhbWUuaApAQCAtNjEsNyArNjEsOSBAQCBwdWJsaWM6CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIGZ1bmN0aW9uTmFtZSgpIGNvbnN0OwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIFR5cGUgdHlwZSgpIGNvbnN0OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFs
dWUgdGhpc1ZhbHVlKFZNJikgY29uc3Q7Ci0gICAgSlNWYWx1ZSBldmFsdWF0ZVdpdGhTY29wZUV4
dGVuc2lvbihjb25zdCBTdHJpbmcmLCBKU09iamVjdCogc2NvcGVFeHRlbnNpb25PYmplY3QsIE5h
a2VkUHRyPEV4Y2VwdGlvbj4mKTsKKworICAgIGVudW0gY2xhc3MgQ2xpbWJUb1ZhbGlkRnJhbWUg
eyBZZXMsIE5vIH07CisgICAgSlNWYWx1ZSBldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihjb25z
dCBTdHJpbmcmLCBKU09iamVjdCogc2NvcGVFeHRlbnNpb25PYmplY3QsIE5ha2VkUHRyPEV4Y2Vw
dGlvbj4mLCBDbGltYlRvVmFsaWRGcmFtZSA9IENsaW1iVG9WYWxpZEZyYW1lOjpObyk7CiAKICAg
ICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiAhIW1fdmFsaWRNYWNoaW5lRnJhbWUgfHwg
aXNUYWlsRGVsZXRlZCgpOyB9CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbnZhbGlkYXRl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCmluZGV4IGM0MmM0ZjkzNGRmLi4xMGYzNGJh
ZDM5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAKQEAgLTEwNSwxNSArMTA1LDE1IEBA
IHZvaWQgSW5zcGVjdG9yQXVkaXRBZ2VudDo6cnVuKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiB0ZXN0LCBjb25zCiAKICAgICBPcHRpb25hbDxpbnQ+IHNhdmVkUmVzdWx0
SW5kZXg7CiAKLSAgICBhdXRvIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IG1fZGVi
dWdnZXIucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpOworICAgIFNBVkVfUEFVU0VfT05fRVhDRVBU
SU9OU19CUkVBS1BPSU5UUyhtX2RlYnVnZ2VyKTsKIAotICAgIG1fZGVidWdnZXIuc2V0UGF1c2VP
bkV4Y2VwdGlvbnNTdGF0ZShEZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zKTsKKyAgICBP
VkVSUklERV9QQVVTRV9PTl9FWENFUFRJT05TX0JSRUFLUE9JTlRTKG1fZGVidWdnZXIsIG51bGxw
dHIpOwogICAgIG11dGVDb25zb2xlKCk7CiAKICAgICBpbmplY3RlZFNjcmlwdC5leGVjdXRlKGVy
cm9yU3RyaW5nLCBmdW5jdGlvblN0cmluZy50b1N0cmluZygpLCBXVEZNb3ZlKG9wdGlvbnMpLCBy
ZXN1bHQsIHdhc1Rocm93biwgc2F2ZWRSZXN1bHRJbmRleCk7CiAKICAgICB1bm11dGVDb25zb2xl
KCk7Ci0gICAgbV9kZWJ1Z2dlci5zZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKHByZXZpb3VzUGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSk7CisgICAgUkVTVE9SRV9QQVVTRV9PTl9FWENFUFRJT05TX0JS
RUFLUE9JTlRTKG1fZGVidWdnZXIpOwogfQogCiB2b2lkIEluc3BlY3RvckF1ZGl0QWdlbnQ6OnRl
YXJkb3duKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5jcHAKaW5kZXggYzM4NjVmNjZjMDcuLjgwMDcxYzc0YjNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMjcxLDggKzI3MSw4IEBAIHZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6ZGlzYWJsZShib29sIGlzQmVpbmdEZXN0cm95ZWQpCiAKICAgICBjbGVhckFz
eW5jU3RhY2tUcmFjZURhdGEoKTsKIAotICAgIG1fcGF1c2VPbkFzc2VydGlvbkZhaWx1cmVzID0g
ZmFsc2U7Ci0gICAgbV9wYXVzZU9uTWljcm90YXNrcyA9IGZhbHNlOworICAgIG1fcGF1c2VPbkFz
c2VydGlvbnNCcmVha3BvaW50ID0gbnVsbHB0cjsKKyAgICBtX3BhdXNlT25NaWNyb3Rhc2tzQnJl
YWtwb2ludCA9IG51bGxwdHI7CiAKICAgICBtX2VuYWJsZWQgPSBmYWxzZTsKIH0KQEAgLTM5NCw4
ICszOTQsMTAgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpoYW5kbGVDb25zb2xlQXNz
ZXJ0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBpZiAoIWJyZWFrcG9pbnRzQWN0aXZlKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3BhdXNlT25Bc3NlcnRpb25GYWlsdXJlcykK
LSAgICAgICAgYnJlYWtQcm9ncmFtKERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246
OkFzc2VydCwgYnVpbGRBc3NlcnRQYXVzZVJlYXNvbihtZXNzYWdlKSk7CisgICAgaWYgKCFtX3Bh
dXNlT25Bc3NlcnRpb25zQnJlYWtwb2ludCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYnJlYWtQ
cm9ncmFtKERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkFzc2VydCwgYnVpbGRB
c3NlcnRQYXVzZVJlYXNvbihtZXNzYWdlKSwgbV9wYXVzZU9uQXNzZXJ0aW9uc0JyZWFrcG9pbnQu
Y29weVJlZigpKTsKIH0KIAogSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6QXN5bmNDYWxsSWRlbnRp
ZmllciBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojphc3luY0NhbGxJZGVudGlmaWVyKEFzeW5jQ2Fs
bFR5cGUgYXN5bmNDYWxsVHlwZSwgaW50IGNhbGxiYWNrSWQpCkBAIC04ODEsMzggKzg4Myw2OCBA
QCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZEJlY29tZUlkbGUoKQogICAgIH0KIH0K
IAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVzZU9uRGVidWdnZXJTdGF0ZW1l
bnRzKEVycm9yU3RyaW5nJiwgYm9vbCBlbmFibGVkKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpzZXRQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgYm9vbCBlbmFibGVkLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnNQYXlsb2FkKQogewot
ICAgIG1fZGVidWdnZXIuc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cyhlbmFibGVkKTsKLX0K
LQotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVzZU9uRXhjZXB0aW9ucyhFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3RyaW5nUGF1c2VTdGF0ZSkKLXsK
LSAgICBKU0M6OkRlYnVnZ2VyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHBhdXNlU3RhdGU7Ci0g
ICAgaWYgKHN0cmluZ1BhdXNlU3RhdGUgPT0gIm5vbmUiKQotICAgICAgICBwYXVzZVN0YXRlID0g
SlNDOjpEZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zOwotICAgIGVsc2UgaWYgKHN0cmlu
Z1BhdXNlU3RhdGUgPT0gImFsbCIpCi0gICAgICAgIHBhdXNlU3RhdGUgPSBKU0M6OkRlYnVnZ2Vy
OjpQYXVzZU9uQWxsRXhjZXB0aW9uczsKLSAgICBlbHNlIGlmIChzdHJpbmdQYXVzZVN0YXRlID09
ICJ1bmNhdWdodCIpCi0gICAgICAgIHBhdXNlU3RhdGUgPSBKU0M6OkRlYnVnZ2VyOjpQYXVzZU9u
VW5jYXVnaHRFeGNlcHRpb25zOwotICAgIGVsc2UgewotICAgICAgICBlcnJvclN0cmluZyA9IG1h
a2VTdHJpbmcoIlVua25vd24gc3RhdGU6ICJfcywgc3RyaW5nUGF1c2VTdGF0ZSk7CisgICAgaWYg
KCFlbmFibGVkKSB7CisgICAgICAgIG1fZGVidWdnZXIuc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVt
ZW50c0JyZWFrcG9pbnQobnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBt
X2RlYnVnZ2VyLnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoc3RhdGljX2Nhc3Q8SlNDOjpEZWJ1
Z2dlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZT4ocGF1c2VTdGF0ZSkpOwotICAgIGlmIChtX2Rl
YnVnZ2VyLnBhdXNlT25FeGNlcHRpb25zU3RhdGUoKSAhPSBwYXVzZVN0YXRlKQotICAgICAgICBl
cnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvci4gQ291bGQgbm90IGNoYW5nZSBwYXVzZSBvbiBl
eGNlcHRpb25zIHN0YXRlIl9zOworICAgIGF1dG8gYnJlYWtwb2ludCA9IGRlYnVnZ2VyQnJlYWtw
b2ludEZyb21QYXlsb2FkKGVycm9yU3RyaW5nLCBvcHRpb25zUGF5bG9hZCk7CisgICAgaWYgKCFi
cmVha3BvaW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RlYnVnZ2VyLnNldFBhdXNlT25E
ZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50KFdURk1vdmUoYnJlYWtwb2ludCkpOwogfQogCi12
b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25Bc3NlcnRpb25zKEVycm9yU3Ry
aW5nJiwgYm9vbCBlbmFibGVkKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVz
ZU9uRXhjZXB0aW9ucyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3Rh
dGVTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9uc1BheWxvYWQpCiB7Ci0gICAgbV9w
YXVzZU9uQXNzZXJ0aW9uRmFpbHVyZXMgPSBlbmFibGVkOworICAgIFJlZlB0cjxKU0M6OkJyZWFr
cG9pbnQ+IGFsbEV4Y2VwdGlvbnNCcmVha3BvaW50OworICAgIFJlZlB0cjxKU0M6OkJyZWFrcG9p
bnQ+IHVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQ7CisKKyAgICBpZiAoc3RhdGVTdHJpbmcg
PT0gImFsbCIpIHsKKyAgICAgICAgYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBkZWJ1Z2dlckJy
ZWFrcG9pbnRGcm9tUGF5bG9hZChlcnJvclN0cmluZywgb3B0aW9uc1BheWxvYWQpOworICAgICAg
ICBpZiAoIWFsbEV4Y2VwdGlvbnNCcmVha3BvaW50KQorICAgICAgICAgICAgcmV0dXJuOworICAg
IH0gZWxzZSBpZiAoc3RhdGVTdHJpbmcgPT0gInVuY2F1Z2h0IikgeworICAgICAgICB1bmNhdWdo
dEV4Y2VwdGlvbnNCcmVha3BvaW50ID0gZGVidWdnZXJCcmVha3BvaW50RnJvbVBheWxvYWQoZXJy
b3JTdHJpbmcsIG9wdGlvbnNQYXlsb2FkKTsKKyAgICAgICAgaWYgKCF1bmNhdWdodEV4Y2VwdGlv
bnNCcmVha3BvaW50KQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0gZWxzZSBpZiAoc3RhdGVT
dHJpbmcgIT0gIm5vbmUiKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5r
bm93biBzdGF0ZTogIl9zLCBzdGF0ZVN0cmluZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtX2RlYnVnZ2VyLnNldFBhdXNlT25BbGxFeGNlcHRpb25zQnJlYWtwb2ludChXVEZNb3Zl
KGFsbEV4Y2VwdGlvbnNCcmVha3BvaW50KSk7CisgICAgbV9kZWJ1Z2dlci5zZXRQYXVzZU9uVW5j
YXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludChXVEZNb3ZlKHVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFr
cG9pbnQpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVzZU9uTWlj
cm90YXNrcyhFcnJvclN0cmluZyYsIGJvb2wgZW5hYmxlZCkKK3ZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6c2V0UGF1c2VPbkFzc2VydGlvbnMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBi
b29sIGVuYWJsZWQsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9uc1BheWxvYWQpCiB7Ci0gICAg
bV9wYXVzZU9uTWljcm90YXNrcyA9IGVuYWJsZWQ7CisgICAgaWYgKCFlbmFibGVkKSB7CisgICAg
ICAgIG1fcGF1c2VPbkFzc2VydGlvbnNCcmVha3BvaW50ID0gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGF1dG8gYnJlYWtwb2ludCA9IGRlYnVnZ2VyQnJlYWtwb2ludEZy
b21QYXlsb2FkKGVycm9yU3RyaW5nLCBvcHRpb25zUGF5bG9hZCk7CisgICAgaWYgKCFicmVha3Bv
aW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BhdXNlT25Bc3NlcnRpb25zQnJlYWtwb2lu
dCA9IFdURk1vdmUoYnJlYWtwb2ludCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6c2V0UGF1c2VPbk1pY3JvdGFza3MoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBib29sIGVu
YWJsZWQsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9uc1BheWxvYWQpCit7CisgICAgaWYgKCFl
bmFibGVkKSB7CisgICAgICAgIG1fcGF1c2VPbk1pY3JvdGFza3NCcmVha3BvaW50ID0gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gYnJlYWtwb2ludCA9IGRlYnVn
Z2VyQnJlYWtwb2ludEZyb21QYXlsb2FkKGVycm9yU3RyaW5nLCBvcHRpb25zUGF5bG9hZCk7Cisg
ICAgaWYgKCFicmVha3BvaW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BhdXNlT25NaWNy
b3Rhc2tzQnJlYWtwb2ludCA9IFdURk1vdmUoYnJlYWtwb2ludCk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lv
biwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogaW5jbHVkZUNvbW1hbmRM
aW5lQVBJLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUs
IGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywg
Y29uc3QgYm9vbCogc2F2ZVJlc3VsdCwgY29uc3QgYm9vbCogLyogZW11bGF0ZVVzZXJHZXN0dXJl
ICovLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgT3B0
aW9uYWw8Ym9vbD4mIHdhc1Rocm93biwgT3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCkK
QEAgLTkyNiwxMSArOTU4LDExIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVh
dGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBhdXRvIHBhdXNlU3RhdGUgPSBtX2RlYnVnZ2VyLnBhdXNlT25F
eGNlcHRpb25zU3RhdGUoKTsKKyAgICBTQVZFX1BBVVNFX09OX0VYQ0VQVElPTlNfQlJFQUtQT0lO
VFMobV9kZWJ1Z2dlcik7CisKICAgICBib29sIHBhdXNlQW5kTXV0ZSA9IGRvTm90UGF1c2VPbkV4
Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSAmJiAqZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVD
b25zb2xlOwogICAgIGlmIChwYXVzZUFuZE11dGUpIHsKLSAgICAgICAgaWYgKHBhdXNlU3RhdGUg
IT0gSlNDOjpEZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zKQotICAgICAgICAgICAgbV9k
ZWJ1Z2dlci5zZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKEpTQzo6RGVidWdnZXI6OkRvbnRQYXVz
ZU9uRXhjZXB0aW9ucyk7CisgICAgICAgIE9WRVJSSURFX1BBVVNFX09OX0VYQ0VQVElPTlNfQlJF
QUtQT0lOVFMobV9kZWJ1Z2dlciwgbnVsbHB0cik7CiAgICAgICAgIG11dGVDb25zb2xlKCk7CiAg
ICAgfQogCkBAIC05NDAsNyArOTcyLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpl
dmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QKIAogICAg
IGlmIChwYXVzZUFuZE11dGUpIHsKICAgICAgICAgdW5tdXRlQ29uc29sZSgpOwotICAgICAgICBt
X2RlYnVnZ2VyLnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUocGF1c2VTdGF0ZSk7CisgICAgICAg
IFJFU1RPUkVfUEFVU0VfT05fRVhDRVBUSU9OU19CUkVBS1BPSU5UUyhtX2RlYnVnZ2VyKTsKICAg
ICB9CiB9CiAKQEAgLTk5MSw3ICsxMDIzLDcgQEAgYm9vbCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpzaG91bGRCbGFja2JveFVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKIAogdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpzY3JpcHRFeGVjdXRpb25CbG9ja2VkQnlDU1AoY29uc3QgU3Ry
aW5nJiBkaXJlY3RpdmVUZXh0KQogewotICAgIGlmIChtX2RlYnVnZ2VyLnBhdXNlT25FeGNlcHRp
b25zU3RhdGUoKSAhPSBKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpCisgICAg
aWYgKG1fZGVidWdnZXIubmVlZHNFeGNlcHRpb25DYWxsYmFja3MoKSkKICAgICAgICAgYnJlYWtQ
cm9ncmFtKERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkNTUFZpb2xhdGlvbiwg
YnVpbGRDU1BWaW9sYXRpb25QYXVzZVJlYXNvbihkaXJlY3RpdmVUZXh0KSk7CiB9CiAKQEAgLTEw
NzgsOCArMTExMCwxMCBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OndpbGxSdW5NaWNy
b3Rhc2soKQogICAgIGlmICghYnJlYWtwb2ludHNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKG1fcGF1c2VPbk1pY3JvdGFza3MpCi0gICAgICAgIHNjaGVkdWxlUGF1c2VBdE5l
eHRPcHBvcnR1bml0eShEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpNaWNyb3Rh
c2spOworICAgIGlmICghbV9wYXVzZU9uTWljcm90YXNrc0JyZWFrcG9pbnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIHNjaGVkdWxlUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludCgqbV9wYXVzZU9u
TWljcm90YXNrc0JyZWFrcG9pbnQsIERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246
Ok1pY3JvdGFzayk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUnVuTWlj
cm90YXNrKCkKQEAgLTEwODcsOCArMTEyMSwxMCBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmRpZFJ1bk1pY3JvdGFzaygpCiAgICAgaWYgKCFicmVha3BvaW50c0FjdGl2ZSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAobV9wYXVzZU9uTWljcm90YXNrcykKLSAgICAgICAgY2Fu
Y2VsUGF1c2VBdE5leHRPcHBvcnR1bml0eSgpOworICAgIGlmICghbV9wYXVzZU9uTWljcm90YXNr
c0JyZWFrcG9pbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGNhbmNlbFBhdXNlRm9yU3BlY2lh
bEJyZWFrcG9pbnQoKm1fcGF1c2VPbk1pY3JvdGFza3NCcmVha3BvaW50KTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBKU0M6
OkpTVmFsdWUgZXhjZXB0aW9uT3JDYXVnaHRWYWx1ZSkKQEAgLTEyMjQsMTEgKzEyNjAsMTEgQEAg
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDb250aW51ZSgpCiAgICAgICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyLT5yZXN1bWVkKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6YnJlYWtQcm9ncmFtKERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb24gcmVh
c29uLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGRhdGEpCit2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmJyZWFrUHJvZ3JhbShEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIHJl
YXNvbiwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBkYXRhLCBSZWZQdHI8SlNDOjpCcmVha3BvaW50
PiYmIHNwZWNpYWxCcmVha3BvaW50KQogewogICAgIHVwZGF0ZVBhdXNlUmVhc29uQW5kRGF0YShy
ZWFzb24sIFdURk1vdmUoZGF0YSkpOwogCi0gICAgbV9kZWJ1Z2dlci5icmVha1Byb2dyYW0oKTsK
KyAgICBtX2RlYnVnZ2VyLmJyZWFrUHJvZ3JhbShXVEZNb3ZlKHNwZWNpYWxCcmVha3BvaW50KSk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJJbnNwZWN0b3JCcmVha3Bv
aW50U3RhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IDg4Y2JiYWZlZGFj
Li4zMGZmOWYzYzI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtODQsMTAg
Kzg0LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNlYXJjaEluQ29udGVudChFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wq
IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBSZWZQ
dHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+Jikg
ZmluYWw7CiAgICAgdm9pZCBnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIHNjcmlwdElELCBTdHJpbmcqIHNjcmlwdFNvdXJjZSkgZmluYWw7CiAgICAgdm9pZCBnZXRG
dW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJl
ZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mKSBmaW5hbDsKLSAgICB2
b2lkIHNldFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHMoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJs
ZWQpIGZpbmFsOwotICAgIHZvaWQgc2V0UGF1c2VPbkV4Y2VwdGlvbnMoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIHBhdXNlU3RhdGUpIGZpbmFsOwotICAgIHZvaWQgc2V0UGF1c2VPbkFzc2Vy
dGlvbnMoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJsZWQpIGZpbmFsOwotICAgIHZvaWQgc2V0UGF1
c2VPbk1pY3JvdGFza3MoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJsZWQpIGZpbmFsOworICAgIHZv
aWQgc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cyhFcnJvclN0cmluZyYsIGJvb2wgZW5hYmxl
ZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zKSBmaW5hbDsKKyAgICB2b2lkIHNldFBhdXNl
T25FeGNlcHRpb25zKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXVzZVN0YXRlLCBjb25z
dCBKU09OOjpPYmplY3QqIG9wdGlvbnMpIGZpbmFsOworICAgIHZvaWQgc2V0UGF1c2VPbkFzc2Vy
dGlvbnMoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJsZWQsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0
aW9ucykgZmluYWw7CisgICAgdm9pZCBzZXRQYXVzZU9uTWljcm90YXNrcyhFcnJvclN0cmluZyYs
IGJvb2wgZW5hYmxlZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zKSBmaW5hbDsKICAgICB2
b2lkIHNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzKEVycm9yU3RyaW5nJiwgYm9vbCBzaG91bGRQ
YXVzZSkgZmluYWw7CiAgICAgdm9pZCBldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25z
dCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBpbmNsdWRlQ29tbWFuZExpbmVBUEks
IGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3Qg
Ym9vbCogcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBjb25zdCBi
b29sKiBzYXZlUmVzdWx0LCBjb25zdCBib29sKiBlbXVsYXRlVXNlckdlc3R1cmUsIFJlZlB0cjxQ
cm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBPcHRpb25hbDxib29sPiYg
d2FzVGhyb3duLCBPcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldFNob3VsZEJsYWNrYm94VVJMKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1
cmwsIGJvb2wgc2hvdWxkQmxhY2tib3gsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0
IGJvb2wqIGlzUmVnZXgpIGZpbmFsOwpAQCAtMTI4LDcgKzEyOCw3IEBAIHB1YmxpYzoKICAgICBi
b29sIHNjaGVkdWxlUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludChKU0M6OkJyZWFrcG9pbnQmLCBE
ZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYm
IGRhdGEgPSBudWxscHRyKTsKICAgICBib29sIGNhbmNlbFBhdXNlRm9yU3BlY2lhbEJyZWFrcG9p
bnQoSlNDOjpCcmVha3BvaW50Jik7CiAKLSAgICB2b2lkIGJyZWFrUHJvZ3JhbShEZWJ1Z2dlckZy
b250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGRhdGEpOwor
ICAgIHZvaWQgYnJlYWtQcm9ncmFtKERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb24s
IFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgZGF0YSA9IG51bGxwdHIsIFJlZlB0cjxKU0M6OkJyZWFr
cG9pbnQ+JiYgc3BlY2lhbEJyZWFrcG9pbnQgPSBudWxscHRyKTsKICAgICB2b2lkIHNjcmlwdEV4
ZWN1dGlvbkJsb2NrZWRCeUNTUChjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQpOwogCiAgICAg
Y2xhc3MgTGlzdGVuZXIgewpAQCAtMjY2LDEwICsyNjYsMTEgQEAgcHJpdmF0ZToKICAgICBPcHRp
b25hbDxBc3luY0NhbGxJZGVudGlmaWVyPiBtX2N1cnJlbnRBc3luY0NhbGxJZGVudGlmaWVyOwog
ICAgIGludCBtX2FzeW5jU3RhY2tUcmFjZURlcHRoIHsgMCB9OwogCisgICAgUmVmUHRyPEpTQzo6
QnJlYWtwb2ludD4gbV9wYXVzZU9uQXNzZXJ0aW9uc0JyZWFrcG9pbnQ7CisgICAgUmVmUHRyPEpT
Qzo6QnJlYWtwb2ludD4gbV9wYXVzZU9uTWljcm90YXNrc0JyZWFrcG9pbnQ7CisKICAgICBib29s
IG1fZW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2VuYWJsZVBhdXNlV2hlbklkbGUgeyBm
YWxzZSB9OwotICAgIGJvb2wgbV9wYXVzZU9uQXNzZXJ0aW9uRmFpbHVyZXMgeyBmYWxzZSB9Owot
ICAgIGJvb2wgbV9wYXVzZU9uTWljcm90YXNrcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3BhdXNl
Rm9ySW50ZXJuYWxTY3JpcHRzIHsgZmFsc2UgfTsKICAgICBib29sIG1famF2YVNjcmlwdFBhdXNl
U2NoZWR1bGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fZGlkUGF1c2VTdG9wd2F0Y2ggeyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggMTkwYjU2NmRhMTcuLmZj
NmI1MjEyOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTczLDE0ICs3
Myw2IEBAIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6fkluc3BlY3RvclJ1bnRpbWVBZ2VudCgpCiB7
CiB9CiAKLXN0YXRpYyBKU0M6OkRlYnVnZ2VyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHNldFBh
dXNlT25FeGNlcHRpb25zU3RhdGUoSlNDOjpEZWJ1Z2dlciYgZGVidWdnZXIsIEpTQzo6RGVidWdn
ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUgbmV3U3RhdGUpCi17Ci0gICAgYXV0byBwcmVzZW50
U3RhdGUgPSBkZWJ1Z2dlci5wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKCk7Ci0gICAgaWYgKHByZXNl
bnRTdGF0ZSAhPSBuZXdTdGF0ZSkKLSAgICAgICAgZGVidWdnZXIuc2V0UGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZShuZXdTdGF0ZSk7Ci0gICAgcmV0dXJuIHByZXNlbnRTdGF0ZTsKLX0KLQogc3RhdGlj
IFJlZjxQcm90b2NvbDo6UnVudGltZTo6RXJyb3JSYW5nZT4gYnVpbGRFcnJvclJhbmdlT2JqZWN0
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgdG9rZW5Mb2NhdGlvbikKIHsKICAgICByZXR1cm4gUHJv
dG9jb2w6OlJ1bnRpbWU6OkVycm9yUmFuZ2U6OmNyZWF0ZSgpCkBAIC0xMjMsMTcgKzExNSwxOCBA
QCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4cAogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1Zh
bHVlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcHJldmlvdXNQYXVzZU9uRXhjZXB0
aW9uc1N0YXRlID0gSlNDOjpEZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zOwotICAgIGlm
IChhc0Jvb2woZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlKSkKLSAgICAgICAg
cHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZShtX2RlYnVnZ2VyLCBKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpOwotICAg
IGlmIChhc0Jvb2woZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlKSkKKyAgICBT
QVZFX1BBVVNFX09OX0VYQ0VQVElPTlNfQlJFQUtQT0lOVFMobV9kZWJ1Z2dlcik7CisKKyAgICBp
ZiAoYXNCb29sKGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSkpIHsKKyAgICAg
ICAgT1ZFUlJJREVfUEFVU0VfT05fRVhDRVBUSU9OU19CUkVBS1BPSU5UUyhtX2RlYnVnZ2VyLCBu
dWxscHRyKTsKICAgICAgICAgbXV0ZUNvbnNvbGUoKTsKKyAgICB9CiAKICAgICBpbmplY3RlZFNj
cmlwdC5ldmFsdWF0ZShlcnJvclN0cmluZywgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAgPyAqb2Jq
ZWN0R3JvdXAgOiBTdHJpbmcoKSwgYXNCb29sKGluY2x1ZGVDb21tYW5kTGluZUFQSSksIGFzQm9v
bChyZXR1cm5CeVZhbHVlKSwgYXNCb29sKGdlbmVyYXRlUHJldmlldyksIGFzQm9vbChzYXZlUmVz
dWx0KSwgcmVzdWx0LCB3YXNUaHJvd24sIHNhdmVkUmVzdWx0SW5kZXgpOwogCiAgICAgaWYgKGFz
Qm9vbChkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUpKSB7CiAgICAgICAgIHVu
bXV0ZUNvbnNvbGUoKTsKLSAgICAgICAgc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX2RlYnVn
Z2VyLCBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUpOworICAgICAgICBSRVNUT1JFX1BB
VVNFX09OX0VYQ0VQVElPTlNfQlJFQUtQT0lOVFMobV9kZWJ1Z2dlcik7CiAgICAgfQogfQogCkBA
IC0xNjUsMTcgKzE1OCwxOCBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0
aW9uT24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbgogICAgIGlmIChvcHRp
b25hbEFyZ3VtZW50cykKICAgICAgICAgYXJndW1lbnRzID0gb3B0aW9uYWxBcmd1bWVudHMtPnRv
SlNPTlN0cmluZygpOwogCi0gICAgYXV0byBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUg
PSBKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnM7Ci0gICAgaWYgKGFzQm9vbChk
b05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUpKQotICAgICAgICBwcmV2aW91c1Bh
dXNlT25FeGNlcHRpb25zU3RhdGUgPSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1fZGVidWdn
ZXIsIEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7Ci0gICAgaWYgKGFzQm9v
bChkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUpKQorICAgIFNBVkVfUEFVU0Vf
T05fRVhDRVBUSU9OU19CUkVBS1BPSU5UUyhtX2RlYnVnZ2VyKTsKKworICAgIGlmIChhc0Jvb2wo
ZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlKSkgeworICAgICAgICBPVkVSUklE
RV9QQVVTRV9PTl9FWENFUFRJT05TX0JSRUFLUE9JTlRTKG1fZGVidWdnZXIsIG51bGxwdHIpOwog
ICAgICAgICBtdXRlQ29uc29sZSgpOworICAgIH0KIAogICAgIGluamVjdGVkU2NyaXB0LmNhbGxG
dW5jdGlvbk9uKGVycm9yU3RyaW5nLCBvYmplY3RJZCwgZXhwcmVzc2lvbiwgYXJndW1lbnRzLCBh
c0Jvb2wocmV0dXJuQnlWYWx1ZSksIGFzQm9vbChnZW5lcmF0ZVByZXZpZXcpLCByZXN1bHQsIHdh
c1Rocm93bik7CiAKICAgICBpZiAoYXNCb29sKGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRl
Q29uc29sZSkpIHsKICAgICAgICAgdW5tdXRlQ29uc29sZSgpOwotICAgICAgICBzZXRQYXVzZU9u
RXhjZXB0aW9uc1N0YXRlKG1fZGVidWdnZXIsIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZSk7CisgICAgICAgIFJFU1RPUkVfUEFVU0VfT05fRVhDRVBUSU9OU19CUkVBS1BPSU5UUyhtX2Rl
YnVnZ2VyKTsKICAgICB9CiB9CiAKQEAgLTE4NywxMyArMTgxLDE1IEBAIHZvaWQgSW5zcGVjdG9y
UnVudGltZUFnZW50OjpnZXRQcmV2aWV3KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHByZXZpb3VzUGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9kZWJ1Z2dl
ciwgSlNDOjpEZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zKTsKKyAgICBTQVZFX1BBVVNF
X09OX0VYQ0VQVElPTlNfQlJFQUtQT0lOVFMobV9kZWJ1Z2dlcik7CisKKyAgICBPVkVSUklERV9Q
QVVTRV9PTl9FWENFUFRJT05TX0JSRUFLUE9JTlRTKG1fZGVidWdnZXIsIG51bGxwdHIpOwogICAg
IG11dGVDb25zb2xlKCk7CiAKICAgICBpbmplY3RlZFNjcmlwdC5nZXRQcmV2aWV3KGVycm9yU3Ry
aW5nLCBvYmplY3RJZCwgcHJldmlldyk7CiAKICAgICB1bm11dGVDb25zb2xlKCk7Ci0gICAgc2V0
UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX2RlYnVnZ2VyLCBwcmV2aW91c1BhdXNlT25FeGNlcHRp
b25zU3RhdGUpOworICAgIFJFU1RPUkVfUEFVU0VfT05fRVhDRVBUSU9OU19CUkVBS1BPSU5UUyht
X2RlYnVnZ2VyKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByb3BlcnRp
ZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25z
dCBib29sKiBvd25Qcm9wZXJ0aWVzLCBjb25zdCBpbnQqIGZldGNoU3RhcnQsIGNvbnN0IGludCog
ZmV0Y2hDb3VudCwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6QXJy
YXlPZjxQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHByb3BlcnRpZXMs
IFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5
RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpCkBAIC0yMTYsNyArMjEyLDkgQEAgdm9p
ZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8g
cHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZShtX2RlYnVnZ2VyLCBKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpOworICAg
IFNBVkVfUEFVU0VfT05fRVhDRVBUSU9OU19CUkVBS1BPSU5UUyhtX2RlYnVnZ2VyKTsKKworICAg
IE9WRVJSSURFX1BBVVNFX09OX0VYQ0VQVElPTlNfQlJFQUtQT0lOVFMobV9kZWJ1Z2dlciwgbnVs
bHB0cik7CiAgICAgbXV0ZUNvbnNvbGUoKTsKIAogICAgIGluamVjdGVkU2NyaXB0LmdldFByb3Bl
cnRpZXMoZXJyb3JTdHJpbmcsIG9iamVjdElkLCBhc0Jvb2wob3duUHJvcGVydGllcyksIHN0YXJ0
LCBjb3VudCwgYXNCb29sKGdlbmVyYXRlUHJldmlldyksIHByb3BlcnRpZXMpOwpAQCAtMjI2LDcg
KzIyNCw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcm9wZXJ0aWVzKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nCiAgICAgICAgIGluamVjdGVkU2NyaXB0
LmdldEludGVybmFsUHJvcGVydGllcyhlcnJvclN0cmluZywgb2JqZWN0SWQsIGFzQm9vbChnZW5l
cmF0ZVByZXZpZXcpLCBpbnRlcm5hbFByb3BlcnRpZXMpOwogCiAgICAgdW5tdXRlQ29uc29sZSgp
OwotICAgIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9kZWJ1Z2dlciwgcHJldmlvdXNQYXVz
ZU9uRXhjZXB0aW9uc1N0YXRlKTsKKyAgICBSRVNUT1JFX1BBVVNFX09OX0VYQ0VQVElPTlNfQlJF
QUtQT0lOVFMobV9kZWJ1Z2dlcik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50Ojpn
ZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIG9iamVjdElkLCBjb25zdCBpbnQqIGZldGNoU3RhcnQsIGNvbnN0IGludCogZmV0Y2hD
b3VudCwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQ
cm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHByb3BlcnRpZXMsIFJlZlB0
cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3Jp
cHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpCkBAIC0yNDksNyArMjQ3LDkgQEAgdm9pZCBJbnNw
ZWN0b3JSdW50aW1lQWdlbnQ6OmdldERpc3BsYXlhYmxlUHJvcGVydGllcyhFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcHJldmlv
dXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX2Rl
YnVnZ2VyLCBKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpOworICAgIFNBVkVf
UEFVU0VfT05fRVhDRVBUSU9OU19CUkVBS1BPSU5UUyhtX2RlYnVnZ2VyKTsKKworICAgIE9WRVJS
SURFX1BBVVNFX09OX0VYQ0VQVElPTlNfQlJFQUtQT0lOVFMobV9kZWJ1Z2dlciwgbnVsbHB0cik7
CiAgICAgbXV0ZUNvbnNvbGUoKTsKIAogICAgIGluamVjdGVkU2NyaXB0LmdldERpc3BsYXlhYmxl
UHJvcGVydGllcyhlcnJvclN0cmluZywgb2JqZWN0SWQsIHN0YXJ0LCBjb3VudCwgYXNCb29sKGdl
bmVyYXRlUHJldmlldyksIHByb3BlcnRpZXMpOwpAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQgSW5z
cGVjdG9yUnVudGltZUFnZW50OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjCiAgICAgICAgIGluamVjdGVkU2NyaXB0LmdldEludGVybmFsUHJvcGVy
dGllcyhlcnJvclN0cmluZywgb2JqZWN0SWQsIGFzQm9vbChnZW5lcmF0ZVByZXZpZXcpLCBpbnRl
cm5hbFByb3BlcnRpZXMpOwogCiAgICAgdW5tdXRlQ29uc29sZSgpOwotICAgIHNldFBhdXNlT25F
eGNlcHRpb25zU3RhdGUobV9kZWJ1Z2dlciwgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRl
KTsKKyAgICBSRVNUT1JFX1BBVVNFX09OX0VYQ0VQVElPTlNfQlJFQUtQT0lOVFMobV9kZWJ1Z2dl
cik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRDb2xsZWN0aW9uRW50cmll
cyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0
IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGludCogZmV0Y2hTdGFydCwgY29uc3QgaW50KiBm
ZXRjaENvdW50LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6Q29sbGVj
dGlvbkVudHJ5Pj4mIGVudHJpZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3Byb3RvY29sL0RlYnVnZ2VyLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3Byb3RvY29sL0RlYnVnZ2VyLmpzb24KaW5kZXggN2U4ZjQ1OTZiYTEuLjljNDJl
MzA2OTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3Rv
Y29sL0RlYnVnZ2VyLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9w
cm90b2NvbC9EZWJ1Z2dlci5qc29uCkBAIC0yNTcsMjggKzI1NywzMiBAQAogICAgICAgICAgICAg
Im5hbWUiOiAic2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cyIsCiAgICAgICAgICAgICAiZGVz
Y3JpcHRpb24iOiAiQ29udHJvbCB3aGV0aGVyIHRoZSBkZWJ1Z2dlciBwYXVzZXMgZXhlY3V0aW9u
IGJlZm9yZSBgZGVidWdnZXJgIHN0YXRlbWVudHMuIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZW5hYmxlZCIsICJ0eXBlIjogImJvb2xl
YW4iIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVuYWJsZWQiLCAidHlwZSI6ICJib29s
ZWFuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib3B0aW9ucyIsICIkcmVmIjogIkJy
ZWFrcG9pbnRPcHRpb25zIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIk9wdGlv
bnMgdG8gYXBwbHkgdG8gdGhpcyBicmVha3BvaW50IHRvIG1vZGlmeSBpdHMgYmVoYXZpb3IuIiB9
CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1l
IjogInNldFBhdXNlT25FeGNlcHRpb25zIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJE
ZWZpbmVzIHBhdXNlIG9uIGV4Y2VwdGlvbnMgc3RhdGUuIENhbiBiZSBzZXQgdG8gc3RvcCBvbiBh
bGwgZXhjZXB0aW9ucywgdW5jYXVnaHQgZXhjZXB0aW9ucyBvciBubyBleGNlcHRpb25zLiBJbml0
aWFsIHBhdXNlIG9uIGV4Y2VwdGlvbnMgc3RhdGUgaXMgPGNvZGU+bm9uZTwvY29kZT4uIiwKICAg
ICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3Rh
dGUiLCAidHlwZSI6ICJzdHJpbmciLCAiZW51bSI6IFsibm9uZSIsICJ1bmNhdWdodCIsICJhbGwi
XSwgImRlc2NyaXB0aW9uIjogIlBhdXNlIG9uIGV4Y2VwdGlvbnMgbW9kZS4iIH0KKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInN0YXRlIiwgInR5cGUiOiAic3RyaW5nIiwgImVudW0iOiBbIm5v
bmUiLCAidW5jYXVnaHQiLCAiYWxsIl0sICJkZXNjcmlwdGlvbiI6ICJQYXVzZSBvbiBleGNlcHRp
b25zIG1vZGUuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib3B0aW9ucyIsICIkcmVm
IjogIkJyZWFrcG9pbnRPcHRpb25zIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjog
Ik9wdGlvbnMgdG8gYXBwbHkgdG8gdGhpcyBicmVha3BvaW50IHRvIG1vZGlmeSBpdHMgYmVoYXZp
b3IuIiB9CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAg
ICJuYW1lIjogInNldFBhdXNlT25Bc3NlcnRpb25zIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJTZXQgcGF1c2Ugb24gYXNzZXJ0aW9ucyBzdGF0ZS4gQXNzZXJ0aW9ucyBhcmUgY29uc29s
ZS5hc3NlcnQgYXNzZXJ0aW9ucy4iLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJlbmFibGVkIiwgInR5cGUiOiAiYm9vbGVhbiIgfQorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiZW5hYmxlZCIsICJ0eXBlIjogImJvb2xlYW4iIH0sCisg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJvcHRpb25zIiwgIiRyZWYiOiAiQnJlYWtwb2ludE9w
dGlvbnMiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiT3B0aW9ucyB0byBhcHBs
eSB0byB0aGlzIGJyZWFrcG9pbnQgdG8gbW9kaWZ5IGl0cyBiZWhhdmlvci4iIH0KICAgICAgICAg
ICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAic2V0UGF1
c2VPbk1pY3JvdGFza3MiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlBhdXNlIHdoZW4g
cnVubmluZyB0aGUgbmV4dCBKYXZhU2NyaXB0IG1pY3JvdGFzay4iLAogICAgICAgICAgICAgInBh
cmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmFibGVkIiwgInR5cGUi
OiAiYm9vbGVhbiIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZW5hYmxlZCIsICJ0eXBl
IjogImJvb2xlYW4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJvcHRpb25zIiwgIiRy
ZWYiOiAiQnJlYWtwb2ludE9wdGlvbnMiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiT3B0aW9ucyB0byBhcHBseSB0byB0aGlzIGJyZWFrcG9pbnQgdG8gbW9kaWZ5IGl0cyBiZWhh
dmlvci4iIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9DaGFuZ2VMb2cKaW5kZXggNTkwYTUxODUzODkuLjMwMGY4ZmEzNmJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NSBAQAorMjAyMC0wOC0yOCAgRGV2aW4gUm91c3NvICA8
ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYWxsb3cgc3BlY2lh
bCBKYXZhU2NyaXB0IGJyZWFrcG9pbnRzIHRvIGJlIGNvbmZpZ3VyZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTc5NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMv
QnJlYWtwb2ludC5qczoKKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLnJlc2V0KTog
QWRkZWQuCisgICAgICAgIFByb3ZpZGUgYSB3YXkgdG8gY29uc2lzdGVudGx5IGNsZWFyIHRoZSBj
dXJyZW50IGNvbmZpZ3VyYXRpb24uCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9K
YXZhU2NyaXB0QnJlYWtwb2ludC5qczoKKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50
LnN1cHBvcnRzTWljcm90YXNrcyk6IEFkZGVkLgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFr
cG9pbnQuc3VwcG9ydHNEZWJ1Z2dlclN0YXRlbWVudHMpOiBBZGRlZC4KKyAgICAgICAgKFdJLkph
dmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlwZS50b0pTT04pOgorICAgICAgICAoV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBlZGl0YWJsZSk6CisgICAgICAgIChXSS5KYXZh
U2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUuX2lzU3BlY2lhbCk6CisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlTG9jYXRpb24uanM6CisgICAgICAgIChXSS5Tb3Vy
Y2VDb2RlTG9jYXRpb24uZ2V0IHNwZWNpYWxCcmVha3BvaW50TG9jYXRpb24pOiBBZGRlZC4KKyAg
ICAgICAgQWRkIGEgaGVscGVyIGZvciB0aGUgc3BlY2lhbCBgbnVsbDpJbmZpbml0eTpJbmZpbml0
eWAgYnJlYWtwb2ludCBsb2NhdGlvbiBmb3IgY29uc2lzdGVuY3kuCisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5qczoKKyAgICAgICAgKFdJLkRl
YnVnZ2VyTWFuYWdlcik6CisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmFz
eW5jIGluaXRpYWxpemVUYXJnZXQpOgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3Rv
dHlwZS5jcmVhdGVBc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAg
KFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuY3JlYXRlQWxsTWljcm90YXNrc0JyZWFrcG9p
bnQpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuc2V0IGJy
ZWFrcG9pbnRzRW5hYmxlZCk6CisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBl
LmFkZEJyZWFrcG9pbnQpOgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5y
ZW1vdmVCcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUu
X3NldFBhdXNlT25FeGNlcHRpb25zKTogQWRkZWQuCisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFn
ZXIucHJvdG90eXBlLl9jcmVhdGVTcGVjaWFsQnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAgICAo
V0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fdXBkYXRlU3BlY2lhbEJyZWFrcG9pbnQpOiBB
ZGRlZC4KKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX2JyZWFrcG9pbnRE
aXNhYmxlZFN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90
b3R5cGUuX2JyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5RGlkQ2hhbmdlKToKKyAgICAgICAgKFdJ
LkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3VwZGF0ZUJyZWFrT25FeGNlcHRpb25zU3RhdGUp
OiBEZWxldGVkLgorICAgICAgICBNYWludGFpbiBhIGBXSS5TZXR0aW5nYCBmb3IgdGhlIGNvbmZp
Z3VyYXRpb24gb2YgZWFjaCBzcGVjaWFsIGBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludGAuCisgICAg
ICAgIEhhdmUgYSBjb21tb24gcGF0aCBmb3IgdXBkYXRpbmcgYWxsIHNwZWNpYWwgYFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50YCB0byBhdm9pZCBkdXBsaWNhdGVkCisgICAgICAgIGNvZGUuCisgICAg
ICAgIEFkZCBtZXRob2RzIGZvciBjcmVhdGluZyB0aGUgQXNzZXJ0aW9uIEZhaWx1cmVzIGFuZCBB
bGwgTWljcm90YXNrcyBgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRgCisgICAgICAgIHNpbmNlIHRo
ZXkgY2FuIGJlIHJlbW92ZWQgKGluIGFkZGl0aW9uIHRvIGJlaW5nIGRpc2FibGVkKSBhbmQgcmUt
YWRkZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRQb3BvdmVy
LmpzOgorICAgICAgICAoV0kuQnJlYWtwb2ludFBvcG92ZXIuYXBwZW5kQ29udGV4dE1lbnVJdGVt
cyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50VHJlZUVsZW1lbnQu
anM6CisgICAgICAgIChXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uZGVsZXRl
KToKKyAgICAgICAgSWYgdGhlIGBXSS5CcmVha3BvaW50YCBpcyBub3QgcmVtb3ZhYmxlLCBtYWtl
IHN1cmUgdG8gYHJlc2V0YCBpdCBpbiBhZGRpdGlvbiB0byBkaXNhYmxpbmcKKyAgICAgICAgaXQg
c28gdGhhdCBubyBjb25maWd1cmF0aW9uIHBlcnNpc3RzIGlmIHRoZSBgV0kuQnJlYWtwb2ludGAg
aXMgbGF0ZXIgZW5hYmxlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU291cmNl
c05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanM6CisgICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlv
blNpZGViYXJQYW5lbCk6CisgICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5l
bC5wcm90b3R5cGUuX2hhbmRsZUJyZWFrcG9pbnRUcmVlT3V0bGluZUVsZW1lbnRSZW1vdmVkKTog
QWRkZWQuCisgICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5
cGUuX2hhbmRsZUJyZWFrcG9pbnRFbGVtZW50QWRkZWRPclJlbW92ZWQpOiBEZWxldGVkLgorICAg
ICAgICBFbGltaW5hdGUgdGhlIG5lZWQgdG8gbGlzdGVuIGZvciB3aGVuIGJyZWFrcG9pbnRzIGFy
ZSBhZGRlZCB0byB0aGUgYFdJLlRyZWVPdXRsaW5lYCwgd2hpY2gKKyAgICAgICAgd2FzIHByZXZp
b3VzbHkgdXNlZCB0byB1cGRhdGUgdGhlIGBXSS5TZXR0aW5nYCBmb3Igd2hldGhlciBzcGVjaWFs
IGBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludGAKKyAgICAgICAgYXJlIHZpc2libGUuCisgICAgICAg
IERvbid0IGFzc3VtZSB0aGF0IGEgYFdJLkJyZWFrcG9pbnRgIGV4aXN0cyBmb3IgZWFjaCBzcGVj
aWFsIGBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludGAuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L0Jhc2UvU2V0dGluZy5qczoKKyAgICAgICAgKFdJLlNldHRpbmcpOgorICAgICAgICAoV0kuU2V0
dGluZy5taWdyYXRlVmFsdWUpOgorICAgICAgICAoV0kuU2V0dGluZy5yZXNldCk6CisgICAgICAg
IChXSS5TZXR0aW5nLnByb3RvdHlwZS5nZXQgdmFsdWUpOgorICAgICAgICAoV0kuU2V0dGluZy5w
cm90b3R5cGUuc2F2ZSk6CisgICAgICAgIChXSS5TZXR0aW5nLl9sb2NhbFN0b3JhZ2VLZXlQcmVm
aXgpOiBBZGRlZC4KKyAgICAgICAgKFdJLlNldHRpbmcuX2xvY2FsU3RvcmFnZUtleSk6IERlbGV0
ZWQuCisgICAgICAgIEVhZ2VybHkgY29tcHV0ZSB0aGUga2V5IHByZWZpeCBhcyBpdCBzaG91bGRu
J3QgY2hhbmdlIHRocm91Z2ggdGhlIGxpZmV0aW1lIG9mIFdlYiBJbnNwZWN0b3IKKyAgICAgICAg
YW5kIGlzIHVzZWQgZWFybHkgb24gdG9vLgorICAgICAgICBBZGQgYSBzdGF0aWMgbWVtYmVyIGBp
c0ZpcnN0TGF1bmNoYCB3aGljaCBjYW4gYmUgdXNlZCBieSBvdGhlciBgV0kuU2V0dGluZ2AgdG8g
YWRqdXN0IHRoZWlyCisgICAgICAgIHZhbHVlIHdoZW4gV2ViIEluc3BlY3RvciBpcyBpbiBhIGNs
ZWFuIHN0YXRlIChlLmcuIHNob3cgdGhlIEFzc2VydGlvbiBGYWlsdXJlcyBicmVha3BvaW50IGJ5
CisgICAgICAgIGRlZmF1bHQsIGJ1dCBvbmx5IGZvciB0aGUgZmlyc3QgbGF1bmNoKS4gVGhpcyBp
cyBuZWVkZWQgYmVjYXVzZSBgV0kuU2V0dGluZ2AgY2xlYXJzIHRoZSBrZXkKKyAgICAgICAgZnJv
bSBgbG9jYWxTdG9yYWdlYCBpZiB0aGUgY3VycmVudCBgdmFsdWVgIG1hdGNoZXMgdGhlIGBfZGVm
YXVsdFZhbHVlYC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2JlU2V0Lmpz
OgorICAgICAgICAoV0kuUHJvYmVTZXQpOgorICAgICAgICAoV0kuUHJvYmVTZXQucHJvdG90eXBl
LndpbGxSZW1vdmUpOgorICAgICAgICAoV0kuUHJvYmVTZXQucHJvdG90eXBlLl9zYW1wbGVDb2xs
ZWN0ZWQpOgorICAgICAgICAoV0kuUHJvYmVTZXQucHJvdG90eXBlLl9icmVha3BvaW50UmVzb2x2
ZWRTdGF0ZURpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIERyaXZlLWJ5OiByZW1vdmUgYW4g
dW51c2VkIGV2ZW50LgorCisgICAgICAgICogTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6
ZWRTdHJpbmdzLmpzOgorCiAyMDIwLTA4LTI0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhbGxvdyBldmVudCBicmVha3BvaW50cyB0
byBiZSBjb25maWd1cmVkIHdoZW4gdGhleSdyZSBhZGRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0
cmluZ3MuanMKaW5kZXggODFmNzdiMmJmMjcuLjk0MDhhYmVlMDQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdz
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xv
Y2FsaXplZFN0cmluZ3MuanMKQEAgLTEwMTEsNiArMTAxMSw3IEBAIGxvY2FsaXplZFN0cmluZ3Nb
IlJlcXVlc3QgRGF0YSJdID0gIlJlcXVlc3QgRGF0YSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJSZXF1
ZXN0IEhlYWRlcnMiXSA9ICJSZXF1ZXN0IEhlYWRlcnMiOwogbG9jYWxpemVkU3RyaW5nc1siUmVx
dWVzdGluZzogJXMiXSA9ICJSZXF1ZXN0aW5nOiAlcyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJSZXF1
aXJlZCJdID0gIlJlcXVpcmVkIjsKK2xvY2FsaXplZFN0cmluZ3NbIlJlc2V0IEJyZWFrcG9pbnQi
XSA9ICJSZXNldCBCcmVha3BvaW50IjsKIGxvY2FsaXplZFN0cmluZ3NbIlJlc291cmNlIl0gPSAi
UmVzb3VyY2UiOwogbG9jYWxpemVkU3RyaW5nc1siUmVzb3VyY2UgU2l6ZSJdID0gIlJlc291cmNl
IFNpemUiOwogbG9jYWxpemVkU3RyaW5nc1siUmVzb3VyY2UgVHlwZSJdID0gIlJlc291cmNlIFR5
cGUiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFz
ZS9TZXR0aW5nLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9T
ZXR0aW5nLmpzCmluZGV4IGVkNWFiMDA5NmIyLi40ZjY1ZjlhNWM0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcwpAQCAtMzcs
NyArMzcsNiBAQCBXSS5TZXR0aW5nID0gY2xhc3MgU2V0dGluZyBleHRlbmRzIFdJLk9iamVjdAog
CiAgICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOwogCi0gICAgICAgIHRoaXMuX2xvY2FsU3RvcmFn
ZUtleSA9IFdJLlNldHRpbmcuX2xvY2FsU3RvcmFnZUtleSh0aGlzLl9uYW1lKTsKICAgICAgICAg
dGhpcy5fZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlOwogICAgIH0KIApAQCAtNDUsMjIgKzQ0
LDI1IEBAIFdJLlNldHRpbmcgPSBjbGFzcyBTZXR0aW5nIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAg
ICBzdGF0aWMgbWlncmF0ZVZhbHVlKGtleSkKICAgICB7Ci0gICAgICAgIGxldCBsb2NhbFN0b3Jh
Z2VLZXkgPSBXSS5TZXR0aW5nLl9sb2NhbFN0b3JhZ2VLZXkoa2V5KTsKKyAgICAgICAgbGV0IGxv
Y2FsU3RvcmFnZUtleSA9IFdJLlNldHRpbmcuX2xvY2FsU3RvcmFnZUtleVByZWZpeCArIGtleTsK
IAogICAgICAgICBsZXQgdmFsdWUgPSB1bmRlZmluZWQ7Ci0gICAgICAgIGlmICghd2luZG93Lklu
c3BlY3RvclRlc3QgJiYgd2luZG93LmxvY2FsU3RvcmFnZSAmJiBsb2NhbFN0b3JhZ2VLZXkgaW4g
d2luZG93LmxvY2FsU3RvcmFnZSkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAg
ICB2YWx1ZSA9IEpTT04ucGFyc2Uod2luZG93LmxvY2FsU3RvcmFnZVtsb2NhbFN0b3JhZ2VLZXld
KTsKLSAgICAgICAgICAgIH0gY2F0Y2ggeyB9CisgICAgICAgIGlmICghd2luZG93Lkluc3BlY3Rv
clRlc3QgJiYgd2luZG93LmxvY2FsU3RvcmFnZSkgeworICAgICAgICAgICAgbGV0IGl0ZW0gPSB3
aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlS2V5KTsKKyAgICAgICAgICAg
IGlmIChpdGVtICE9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
ICAgICAgICAgdmFsdWUgPSBKU09OLnBhcnNlKGl0ZW0pOworICAgICAgICAgICAgICAgIH0gY2F0
Y2ggeyB9CiAKLSAgICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShsb2Nh
bFN0b3JhZ2VLZXkpOworICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3Zl
SXRlbShsb2NhbFN0b3JhZ2VLZXkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IHJldHVybiB2YWx1ZTsKICAgICB9CiAKICAgICBzdGF0aWMgcmVzZXQoKQogICAgIHsKLSAgICAg
ICAgbGV0IHByZWZpeCA9IFNldHRpbmcuX2xvY2FsU3RvcmFnZUtleSgiIik7CisgICAgICAgIGxl
dCBwcmVmaXggPSBXSS5TZXR0aW5nLl9sb2NhbFN0b3JhZ2VLZXlQcmVmaXg7CiAKICAgICAgICAg
bGV0IGtleXNUb1JlbW92ZSA9IFtdOwogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdpbmRv
dy5sb2NhbFN0b3JhZ2UubGVuZ3RoOyArK2kpIHsKQEAgLTczLDEzICs3NSw2IEBAIFdJLlNldHRp
bmcgPSBjbGFzcyBTZXR0aW5nIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB3aW5kb3cu
bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTsKICAgICB9CiAKLSAgICBzdGF0aWMgX2xvY2Fs
U3RvcmFnZUtleShuYW1lKQotICAgIHsKLSAgICAgICAgbGV0IGluc3BlY3Rpb25MZXZlbCA9IElu
c3BlY3RvckZyb250ZW5kSG9zdCA/IEluc3BlY3RvckZyb250ZW5kSG9zdC5pbnNwZWN0aW9uTGV2
ZWwgOiAxOwotICAgICAgICBsZXQgbGV2ZWxTdHJpbmcgPSBpbnNwZWN0aW9uTGV2ZWwgPiAxID8g
Ii0iICsgaW5zcGVjdGlvbkxldmVsIDogIiI7Ci0gICAgICAgIHJldHVybiBgY29tLmFwcGxlLldl
Ykluc3BlY3RvciR7bGV2ZWxTdHJpbmd9LiR7bmFtZX1gOwotICAgIH0KLQogICAgIC8vIFB1Ymxp
YwogCiAgICAgZ2V0IG5hbWUoKSB7IHJldHVybiB0aGlzLl9uYW1lOyB9CkBAIC05MywxMSArODgs
MTUgQEAgV0kuU2V0dGluZyA9IGNsYXNzIFNldHRpbmcgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAg
ICAgLy8gTWFrZSBhIGNvcHkgb2YgdGhlIGRlZmF1bHQgdmFsdWUgc28gY2hhbmdlcyB0byBvYmpl
Y3QgdmFsdWVzIGRvbid0IG1vZGlmeSB0aGUgZGVmYXVsdCB2YWx1ZS4KICAgICAgICAgdGhpcy5f
dmFsdWUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuX2RlZmF1bHRWYWx1ZSkpOwog
Ci0gICAgICAgIGlmICghd2luZG93Lkluc3BlY3RvclRlc3QgJiYgd2luZG93LmxvY2FsU3RvcmFn
ZSAmJiB0aGlzLl9sb2NhbFN0b3JhZ2VLZXkgaW4gd2luZG93LmxvY2FsU3RvcmFnZSkgewotICAg
ICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IEpTT04ucGFyc2Uo
d2luZG93LmxvY2FsU3RvcmFnZVt0aGlzLl9sb2NhbFN0b3JhZ2VLZXldKTsKLSAgICAgICAgICAg
IH0gY2F0Y2ggewotICAgICAgICAgICAgICAgIGRlbGV0ZSB3aW5kb3cubG9jYWxTdG9yYWdlW3Ro
aXMuX2xvY2FsU3RvcmFnZUtleV07CisgICAgICAgIGlmICghd2luZG93Lkluc3BlY3RvclRlc3Qg
JiYgd2luZG93LmxvY2FsU3RvcmFnZSkgeworICAgICAgICAgICAgbGV0IGtleSA9IFdJLlNldHRp
bmcuX2xvY2FsU3RvcmFnZUtleVByZWZpeCArIHRoaXMuX25hbWU7CisgICAgICAgICAgICBsZXQg
aXRlbSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpOworICAgICAgICAgICAgaWYg
KGl0ZW0gIT09IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAg
ICAgICB0aGlzLl92YWx1ZSA9IEpTT04ucGFyc2UoaXRlbSk7CisgICAgICAgICAgICAgICAgfSBj
YXRjaCB7CisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRl
bShrZXkpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBA
IC0xMTcsMTEgKzExNiwxMiBAQCBXSS5TZXR0aW5nID0gY2xhc3MgU2V0dGluZyBleHRlbmRzIFdJ
Lk9iamVjdAogICAgIHNhdmUoKQogICAgIHsKICAgICAgICAgaWYgKCF3aW5kb3cuSW5zcGVjdG9y
VGVzdCAmJiB3aW5kb3cubG9jYWxTdG9yYWdlKSB7CisgICAgICAgICAgICBsZXQga2V5ID0gV0ku
U2V0dGluZy5fbG9jYWxTdG9yYWdlS2V5UHJlZml4ICsgdGhpcy5fbmFtZTsKICAgICAgICAgICAg
IHRyeSB7CiAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5zaGFsbG93RXF1YWwodGhpcy5fdmFs
dWUsIHRoaXMuX2RlZmF1bHRWYWx1ZSkpCi0gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB3aW5k
b3cubG9jYWxTdG9yYWdlW3RoaXMuX2xvY2FsU3RvcmFnZUtleV07CisgICAgICAgICAgICAgICAg
ICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpOwogICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZVt0aGlzLl9sb2Nh
bFN0b3JhZ2VLZXldID0gSlNPTi5zdHJpbmdpZnkodGhpcy5fdmFsdWUpOworICAgICAgICAgICAg
ICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBKU09OLnN0cmluZ2lmeSh0
aGlzLl92YWx1ZSkpOwogICAgICAgICAgICAgfSBjYXRjaCB7CiAgICAgICAgICAgICAgICAgY29u
c29sZS5lcnJvcigiRXJyb3Igc2F2aW5nIHNldHRpbmcgd2l0aCBuYW1lOiAiICsgdGhpcy5fbmFt
ZSk7CiAgICAgICAgICAgICB9CkBAIC0xMzcsNiArMTM3LDE0IEBAIFdJLlNldHRpbmcgPSBjbGFz
cyBTZXR0aW5nIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgfQogfTsKIAorV0kuU2V0dGluZy5fbG9j
YWxTdG9yYWdlS2V5UHJlZml4ID0gKGZ1bmN0aW9uKCkgeworICAgIGxldCBpbnNwZWN0aW9uTGV2
ZWwgPSBJbnNwZWN0b3JGcm9udGVuZEhvc3QgPyBJbnNwZWN0b3JGcm9udGVuZEhvc3QuaW5zcGVj
dGlvbkxldmVsIDogMTsKKyAgICBsZXQgbGV2ZWxTdHJpbmcgPSBpbnNwZWN0aW9uTGV2ZWwgPiAx
ID8gIi0iICsgaW5zcGVjdGlvbkxldmVsIDogIiI7CisgICAgcmV0dXJuIGBjb20uYXBwbGUuV2Vi
SW5zcGVjdG9yJHtsZXZlbFN0cmluZ30uYDsKK30pKCk7CisKK1dJLlNldHRpbmcuaXNGaXJzdExh
dW5jaCA9IHdpbmRvdy5JbnNwZWN0b3JUZXN0IHx8ICh3aW5kb3cubG9jYWxTdG9yYWdlICYmIE9i
amVjdC5rZXlzKHdpbmRvdy5sb2NhbFN0b3JhZ2UpLmV2ZXJ5KChrZXkpID0+ICFrZXkuc3RhcnRz
V2l0aChXSS5TZXR0aW5nLl9sb2NhbFN0b3JhZ2VLZXlQcmVmaXgpKSk7CisKIFdJLlNldHRpbmcu
RXZlbnQgPSB7CiAgICAgQ2hhbmdlZDogInNldHRpbmctY2hhbmdlZCIKIH07CkBAIC0xOTcsOSAr
MjA1LDcgQEAgV0kuc2V0dGluZ3MgPSB7CiAgICAgc2VhcmNoUmVndWxhckV4cHJlc3Npb246IG5l
dyBXSS5TZXR0aW5nKCJzZWFyY2gtcmVndWxhci1leHByZXNzaW9uIiwgZmFsc2UpLAogICAgIHNl
bGVjdGVkTmV0d29ya0RldGFpbENvbnRlbnRWaWV3SWRlbnRpZmllcjogbmV3IFdJLlNldHRpbmco
Im5ldHdvcmstZGV0YWlsLWNvbnRlbnQtdmlldy1pZGVudGlmaWVyIiwgInByZXZpZXciKSwKICAg
ICBzb3VyY2VNYXBzRW5hYmxlZDogbmV3IFdJLlNldHRpbmcoInNvdXJjZS1tYXBzLWVuYWJsZWQi
LCB0cnVlKSwKLSAgICBzaG93QWxsTWljcm90YXNrc0JyZWFrcG9pbnQ6IG5ldyBXSS5TZXR0aW5n
KCJzaG93LWFsbC1taWNyb3Rhc2tzLWJyZWFrcG9pbnQiLCBmYWxzZSksCiAgICAgc2hvd0FsbFJl
cXVlc3RzQnJlYWtwb2ludDogbmV3IFdJLlNldHRpbmcoInNob3ctYWxsLXJlcXVlc3RzLWJyZWFr
cG9pbnQiLCBmYWxzZSksCi0gICAgc2hvd0Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludDogbmV3
IFdJLlNldHRpbmcoInNob3ctYXNzZXJ0aW9uLWZhaWx1cmVzLWJyZWFrcG9pbnQiLCB0cnVlKSwK
ICAgICBzaG93Q2FudmFzUGF0aDogbmV3IFdJLlNldHRpbmcoInNob3ctY2FudmFzLXBhdGgiLCBm
YWxzZSksCiAgICAgc2hvd0ltYWdlR3JpZDogbmV3IFdJLlNldHRpbmcoInNob3ctaW1hZ2UtZ3Jp
ZCIsIHRydWUpLAogICAgIHNob3dJbnZpc2libGVDaGFyYWN0ZXJzOiBuZXcgV0kuU2V0dGluZygi
c2hvdy1pbnZpc2libGUtY2hhcmFjdGVycyIsICEhV0kuU2V0dGluZy5taWdyYXRlVmFsdWUoInNo
b3ctaW52YWxpZC1jaGFyYWN0ZXJzIikpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGVidWdnZXJNYW5hZ2VyLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGVidWdnZXJNYW5hZ2Vy
LmpzCmluZGV4IDdmNGZkNGMwZDgzLi43NmFlM2IwZDdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGVidWdnZXJNYW5hZ2VyLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Rl
YnVnZ2VyTWFuYWdlci5qcwpAQCAtNTMsNDYgKzUzLDI4IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9
IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9i
cmVha3BvaW50c0VuYWJsZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImJyZWFrcG9pbnRzLWVu
YWJsZWQiLCB0cnVlKTsKICAgICAgICAgdGhpcy5fYXN5bmNTdGFja1RyYWNlRGVwdGhTZXR0aW5n
ID0gbmV3IFdJLlNldHRpbmcoImFzeW5jLXN0YWNrLXRyYWNlLWRlcHRoIiwgMjAwKTsKIAotICAg
ICAgICBjb25zdCBzcGVjaWFsQnJlYWtwb2ludExvY2F0aW9uID0gbmV3IFdJLlNvdXJjZUNvZGVM
b2NhdGlvbihudWxsLCBJbmZpbml0eSwgSW5maW5pdHkpOworICAgICAgICB0aGlzLl9kZWJ1Z2dl
clN0YXRlbWVudHNCcmVha3BvaW50U2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKCJkZWJ1Z2dlci1z
dGF0ZW1lbnRzLWJyZWFrcG9pbnQiLCB7fSk7CisgICAgICAgIHRoaXMuX2RlYnVnZ2VyU3RhdGVt
ZW50c0JyZWFrcG9pbnQgPSBudWxsOwogCi0gICAgICAgIHRoaXMuX2RlYnVnZ2VyU3RhdGVtZW50
c0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKCJicmVhay1vbi1kZWJ1
Z2dlci1zdGF0ZW1lbnRzIiwgdHJ1ZSk7Ci0gICAgICAgIHRoaXMuX2RlYnVnZ2VyU3RhdGVtZW50
c0JyZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQoc3BlY2lhbEJyZWFrcG9p
bnRMb2NhdGlvbiwgewotICAgICAgICAgICAgZGlzYWJsZWQ6ICF0aGlzLl9kZWJ1Z2dlclN0YXRl
bWVudHNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUsCi0gICAgICAgIH0pOwotICAgICAg
ICB0aGlzLl9kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50LnJlc29sdmVkID0gdHJ1ZTsKKyAg
ICAgICAgdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnRTZXR0aW5nID0gbmV3IFdJLlNldHRp
bmcoImFsbC1leGNlcHRpb25zLWJyZWFrcG9pbnQiLCB7ZGlzYWJsZWQ6IHRydWV9KTsKKyAgICAg
ICAgdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBudWxsOwogCi0gICAgICAgIHRoaXMu
X2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZygi
YnJlYWstb24tYWxsLWV4Y2VwdGlvbnMiLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2FsbEV4Y2Vw
dGlvbnNCcmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KHNwZWNpYWxCcmVh
a3BvaW50TG9jYXRpb24sIHsKLSAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5fYWxsRXhjZXB0
aW9uc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwKLSAgICAgICAgfSk7Ci0gICAgICAg
IHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50LnJlc29sdmVkID0gdHJ1ZTsKKyAgICAgICAg
dGhpcy5fdW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludFNldHRpbmcgPSBuZXcgV0kuU2V0dGlu
ZygidW5jYXVnaHQtZXhjZXB0aW9ucy1icmVha3BvaW50Iiwge2Rpc2FibGVkOiB0cnVlfSk7Cisg
ICAgICAgIHRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBudWxsOwogCi0gICAg
ICAgIHRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZyA9IG5l
dyBXSS5TZXR0aW5nKCJicmVhay1vbi11bmNhdWdodC1leGNlcHRpb25zIiwgZmFsc2UpOwotICAg
ICAgICB0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3Jp
cHRCcmVha3BvaW50KHNwZWNpYWxCcmVha3BvaW50TG9jYXRpb24sIHsKLSAgICAgICAgICAgIGRp
c2FibGVkOiAhdGhpcy5fdW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5n
LnZhbHVlLAotICAgICAgICB9KTsKLSAgICAgICAgdGhpcy5fdW5jYXVnaHRFeGNlcHRpb25zQnJl
YWtwb2ludC5yZXNvbHZlZCA9IHRydWU7CisgICAgICAgIHRoaXMuX2Fzc2VydGlvbkZhaWx1cmVz
QnJlYWtwb2ludFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZygiYXNzZXJ0aW9uLWZhaWx1cmVzLWJy
ZWFrcG9pbnQiLCBudWxsKTsKKyAgICAgICAgaWYgKFdJLlNldHRpbmcuaXNGaXJzdExhdW5jaCkK
KyAgICAgICAgICAgIHRoaXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludFNldHRpbmcudmFs
dWUgPSB7ZGlzYWJsZWQ6IHRydWV9OworICAgICAgICB0aGlzLl9hc3NlcnRpb25GYWlsdXJlc0Jy
ZWFrcG9pbnQgPSBudWxsOwogCi0gICAgICAgIHRoaXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtw
b2ludEVuYWJsZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImJyZWFrLW9uLWFzc2VydGlvbi1m
YWlsdXJlcyIsIGZhbHNlKTsKLSAgICAgICAgdGhpcy5fYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3Bv
aW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KHNwZWNpYWxCcmVha3BvaW50TG9jYXRp
b24sIHsKLSAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5fYXNzZXJ0aW9uRmFpbHVyZXNCcmVh
a3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUsCi0gICAgICAgIH0pOwotICAgICAgICB0aGlzLl9h
c3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQucmVzb2x2ZWQgPSB0cnVlOwotCi0gICAgICAgIHRo
aXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50RW5hYmxlZFNldHRpbmcgPSBuZXcgV0kuU2V0dGlu
ZygiYnJlYWstb24tYWxsLW1pY3JvdGFza3MiLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2FsbE1p
Y3JvdGFza3NCcmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KHNwZWNpYWxC
cmVha3BvaW50TG9jYXRpb24sIHsKLSAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5fYWxsTWlj
cm90YXNrc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwKLSAgICAgICAgfSk7Ci0gICAg
ICAgIHRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50LnJlc29sdmVkID0gdHJ1ZTsKKyAgICAg
ICAgdGhpcy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmco
ImFsbC1taWNyb3Rhc2tzLWJyZWFrcG9pbnQiLCBudWxsKTsKKyAgICAgICAgdGhpcy5fYWxsTWlj
cm90YXNrc0JyZWFrcG9pbnQgPSBudWxsOwogCiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzID0g
W107CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRDb250ZW50SWRlbnRpZmllck1hcCA9IG5ldyBN
dWx0aW1hcDsKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludFNjcmlwdElkZW50aWZpZXJNYXAgPSBu
ZXcgTXVsdGltYXA7CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRJZE1hcCA9IG5ldyBNYXA7CiAK
LSAgICAgICAgdGhpcy5fYnJlYWtPbkV4Y2VwdGlvbnNTdGF0ZSA9ICJub25lIjsKLSAgICAgICAg
dGhpcy5fdXBkYXRlQnJlYWtPbkV4Y2VwdGlvbnNTdGF0ZSgpOwotCiAgICAgICAgIHRoaXMuX25l
eHRCcmVha3BvaW50QWN0aW9uSWRlbnRpZmllciA9IDE7CiAKICAgICAgICAgdGhpcy5fYmxhY2ti
b3hlZFVSTHNTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImRlYnVnZ2VyLWJsYWNrYm94ZWQtdXJs
cyIsIFtdKTsKQEAgLTE0Miw2ICsxMjQsNTggQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3Mg
RGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cyA9IGZhbHNlOwogICAgICAgICB9KSgpKTsK
KworICAgICAgICBXSS5UYXJnZXQucmVnaXN0ZXJJbml0aWFsaXphdGlvblByb21pc2UoKGFzeW5j
ICgpID0+IHsKKyAgICAgICAgICAgIC8vIFdhaXQgb25lIG1pY3JvdGFzayBzbyB0aGF0IGBXSS5k
ZWJ1Z2dlck1hbmFnZXJgIGNhbiBiZSBpbml0aWFsaXplZC4KKyAgICAgICAgICAgIGF3YWl0IG5l
dyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHF1ZXVlTWljcm90YXNrKHJlc29sdmUpKTsK
KworICAgICAgICAgICAgbGV0IGxvYWRTcGVjaWFsQnJlYWtwb2ludCA9IChzZXR0aW5nLCBlbmFi
bGVkU2V0dGluZ3NLZXksIHNob3duU2V0dGluZ3NLZXkpID0+IHsKKyAgICAgICAgICAgICAgICBp
ZiAoc2hvd25TZXR0aW5nc0tleSAmJiAhV0kuU2V0dGluZy5taWdyYXRlVmFsdWUoc2hvd25TZXR0
aW5nc0tleSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgICAg
ICAgICAgbGV0IHNlcmlhbGl6ZWRCcmVha3BvaW50ID0gc2V0dGluZy52YWx1ZTsKKworICAgICAg
ICAgICAgICAgIGlmIChXSS5TZXR0aW5nLm1pZ3JhdGVWYWx1ZShlbmFibGVkU2V0dGluZ3NLZXkp
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghc2VyaWFsaXplZEJyZWFrcG9pbnQpCisgICAg
ICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVkQnJlYWtwb2ludCA9IHNldHRpbmcudmFsdWUg
PSB7fTsKKyAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZEJyZWFrcG9pbnQuZGlzYWJsZWQg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgc2V0dGluZy5zYXZlKCk7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCFzZXJpYWxpemVkQnJlYWtwb2ludCkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgICAgICAgICByZXR1cm4g
dGhpcy5fY3JlYXRlU3BlY2lhbEJyZWFrcG9pbnQoc2VyaWFsaXplZEJyZWFrcG9pbnQpOworICAg
ICAgICAgICAgfTsKKworICAgICAgICAgICAgdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMgPSB0
cnVlOworCisgICAgICAgICAgICBpZiAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuc3VwcG9ydHNE
ZWJ1Z2dlclN0YXRlbWVudHMoKSkgeworICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnZ2VyU3Rh
dGVtZW50c0JyZWFrcG9pbnQgPSBsb2FkU3BlY2lhbEJyZWFrcG9pbnQodGhpcy5fZGVidWdnZXJT
dGF0ZW1lbnRzQnJlYWtwb2ludFNldHRpbmcsICJicmVhay1vbi1kZWJ1Z2dlci1zdGF0ZW1lbnRz
Iik7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2RlYnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9p
bnQpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkQnJlYWtwb2ludCh0aGlzLl9kZWJ1Z2dl
clN0YXRlbWVudHNCcmVha3BvaW50KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhp
cy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBsb2FkU3BlY2lhbEJyZWFrcG9pbnQodGhpcy5f
YWxsRXhjZXB0aW9uc0JyZWFrcG9pbnRTZXR0aW5nLCAiYnJlYWstb24tYWxsLWV4Y2VwdGlvbnMi
KTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9hbGxFeGNlcHRpb25zQnJlYWtwb2ludCkKKyAgICAg
ICAgICAgICAgICB0aGlzLmFkZEJyZWFrcG9pbnQodGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9p
bnQpOworCisgICAgICAgICAgICB0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50ID0g
bG9hZFNwZWNpYWxCcmVha3BvaW50KHRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnRT
ZXR0aW5nLCAiYnJlYWstb24tdW5jYXVnaHQtZXhjZXB0aW9ucyIpOworICAgICAgICAgICAgaWYg
KHRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQpCisgICAgICAgICAgICAgICAgdGhp
cy5hZGRCcmVha3BvaW50KHRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQpOworCisg
ICAgICAgICAgICB0aGlzLl9hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQgPSBsb2FkU3BlY2lh
bEJyZWFrcG9pbnQodGhpcy5fYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50U2V0dGluZywgImJy
ZWFrLW9uLWFzc2VydGlvbi1mYWlsdXJlcyIsICJzaG93LWFzc2VydGlvbi1mYWlsdXJlcy1icmVh
a3BvaW50Iik7CisgICAgICAgICAgICBpZiAodGhpcy5fYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3Bv
aW50KQorICAgICAgICAgICAgICAgIHRoaXMuYWRkQnJlYWtwb2ludCh0aGlzLl9hc3NlcnRpb25G
YWlsdXJlc0JyZWFrcG9pbnQpOworCisgICAgICAgICAgICBpZiAoV0kuSmF2YVNjcmlwdEJyZWFr
cG9pbnQuc3VwcG9ydHNNaWNyb3Rhc2tzKCkpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9hbGxN
aWNyb3Rhc2tzQnJlYWtwb2ludCA9IGxvYWRTcGVjaWFsQnJlYWtwb2ludCh0aGlzLl9hbGxNaWNy
b3Rhc2tzQnJlYWtwb2ludFNldHRpbmcsICJicmVhay1vbi1hbGwtbWljcm90YXNrcyIsICJzaG93
LWFsbC1taWNyb3Rhc2tzLWJyZWFrcG9pbnQiKTsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5f
YWxsTWljcm90YXNrc0JyZWFrcG9pbnQpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkQnJl
YWtwb2ludCh0aGlzLl9hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzID0gZmFsc2U7CisgICAgICAg
IH0pKCkpOwogICAgIH0KIAogICAgIC8vIFRhcmdldApAQCAtMTU0LDE2ICsxODgsMTYgQEAgV0ku
RGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0
CiAgICAgICAgIHRhcmdldC5EZWJ1Z2dlckFnZW50LmVuYWJsZSgpOwogICAgICAgICB0YXJnZXQu
RGVidWdnZXJBZ2VudC5zZXRCcmVha3BvaW50c0FjdGl2ZSh0aGlzLl9icmVha3BvaW50c0VuYWJs
ZWRTZXR0aW5nLnZhbHVlKTsKIAotICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMuMSk6
IERlYnVnZ2VyLnNldFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHMgZGlkIG5vdCBleGlzdCB5ZXQu
Ci0gICAgICAgIGlmICh0YXJnZXQuaGFzQ29tbWFuZCgiRGVidWdnZXIuc2V0UGF1c2VPbkRlYnVn
Z2VyU3RhdGVtZW50cyIpKQotICAgICAgICAgICAgdGFyZ2V0LkRlYnVnZ2VyQWdlbnQuc2V0UGF1
c2VPbkRlYnVnZ2VyU3RhdGVtZW50cyghdGhpcy5fZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2lu
dC5kaXNhYmxlZCk7CisgICAgICAgIGlmICh0aGlzLl9kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3Bv
aW50KQorICAgICAgICAgICAgdGhpcy5fdXBkYXRlU3BlY2lhbEJyZWFrcG9pbnQodGhpcy5fZGVi
dWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludCwgdGFyZ2V0KTsKIAotICAgICAgICB0YXJnZXQuRGVi
dWdnZXJBZ2VudC5zZXRQYXVzZU9uRXhjZXB0aW9ucyh0aGlzLl9icmVha09uRXhjZXB0aW9uc1N0
YXRlKTsKLSAgICAgICAgdGFyZ2V0LkRlYnVnZ2VyQWdlbnQuc2V0UGF1c2VPbkFzc2VydGlvbnMo
IXRoaXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludC5kaXNhYmxlZCk7CisgICAgICAgIHRo
aXMuX3NldFBhdXNlT25FeGNlcHRpb25zKHRhcmdldCk7CiAKLSAgICAgICAgLy8gQ09NUEFUSUJJ
TElUWSAoaU9TIDEzKTogRGVidWdnZXJBZ2VudC5zZXRQYXVzZU9uTWljcm90YXNrcyBkaWQgbm90
IGV4aXN0IHlldC4KLSAgICAgICAgaWYgKHRhcmdldC5oYXNDb21tYW5kKCJEZWJ1Z2dlci5zZXRQ
YXVzZU9uTWljcm90YXNrcyIpKQotICAgICAgICAgICAgdGFyZ2V0LkRlYnVnZ2VyQWdlbnQuc2V0
UGF1c2VPbk1pY3JvdGFza3MoIXRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50LmRpc2FibGVk
KTsKKyAgICAgICAgaWYgKHRoaXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludCkKKyAgICAg
ICAgICAgIHRoaXMuX3VwZGF0ZVNwZWNpYWxCcmVha3BvaW50KHRoaXMuX2Fzc2VydGlvbkZhaWx1
cmVzQnJlYWtwb2ludCwgdGFyZ2V0KTsKKworICAgICAgICBpZiAodGhpcy5fYWxsTWljcm90YXNr
c0JyZWFrcG9pbnQpCisgICAgICAgICAgICB0aGlzLl91cGRhdGVTcGVjaWFsQnJlYWtwb2ludCh0
aGlzLl9hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludCwgdGFyZ2V0KTsKIAogICAgICAgICB0YXJnZXQu
RGVidWdnZXJBZ2VudC5zZXRBc3luY1N0YWNrVHJhY2VEZXB0aCh0aGlzLl9hc3luY1N0YWNrVHJh
Y2VEZXB0aFNldHRpbmcudmFsdWUpOwogCkBAIC0zMDEsNiArMzM1LDIyIEBAIFdJLkRlYnVnZ2Vy
TWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgIGdl
dCBhbGxNaWNyb3Rhc2tzQnJlYWtwb2ludCgpIHsgcmV0dXJuIHRoaXMuX2FsbE1pY3JvdGFza3NC
cmVha3BvaW50OyB9CiAgICAgZ2V0IGJyZWFrcG9pbnRzKCkgeyByZXR1cm4gdGhpcy5fYnJlYWtw
b2ludHM7IH0KIAorICAgIGNyZWF0ZUFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludChvcHRpb25z
ID0ge30pCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fYXNzZXJ0aW9uRmFp
bHVyZXNCcmVha3BvaW50KTsKKworICAgICAgICB0aGlzLl9hc3NlcnRpb25GYWlsdXJlc0JyZWFr
cG9pbnQgPSB0aGlzLl9jcmVhdGVTcGVjaWFsQnJlYWtwb2ludChvcHRpb25zKTsKKyAgICAgICAg
dGhpcy5hZGRCcmVha3BvaW50KHRoaXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludCk7Cisg
ICAgfQorCisgICAgY3JlYXRlQWxsTWljcm90YXNrc0JyZWFrcG9pbnQob3B0aW9ucyA9IHt9KQor
ICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3Bv
aW50KTsKKworICAgICAgICB0aGlzLl9hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludCA9IHRoaXMuX2Ny
ZWF0ZVNwZWNpYWxCcmVha3BvaW50KG9wdGlvbnMpOworICAgICAgICB0aGlzLmFkZEJyZWFrcG9p
bnQodGhpcy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnQpOworICAgIH0KKwogICAgIGJyZWFrcG9p
bnRGb3JJZGVudGlmaWVyKGlkKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2JyZWFrcG9p
bnRJZE1hcC5nZXQoaWQpIHx8IG51bGw7CkBAIC0zNTgsMTEgKzQwOCw5IEBAIFdJLkRlYnVnZ2Vy
TWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAg
ICAgIHRoaXMuX2JyZWFrcG9pbnRzRW5hYmxlZFNldHRpbmcudmFsdWUgPSBlbmFibGVkOwogCi0g
ICAgICAgIHRoaXMuX3VwZGF0ZUJyZWFrT25FeGNlcHRpb25zU3RhdGUoKTsKLQogICAgICAgICBm
b3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykgewogICAgICAgICAgICAgdGFyZ2V0LkRlYnVn
Z2VyQWdlbnQuc2V0QnJlYWtwb2ludHNBY3RpdmUoZW5hYmxlZCk7Ci0gICAgICAgICAgICB0YXJn
ZXQuRGVidWdnZXJBZ2VudC5zZXRQYXVzZU9uRXhjZXB0aW9ucyh0aGlzLl9icmVha09uRXhjZXB0
aW9uc1N0YXRlKTsKKyAgICAgICAgICAgIHRoaXMuX3NldFBhdXNlT25FeGNlcHRpb25zKHRhcmdl
dCk7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
SS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludHNFbmFibGVkRGlkQ2hhbmdlKTsKQEAg
LTY0MCwyOSArNjg4LDMxIEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFu
YWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgYWRkQnJlYWtwb2ludChicmVha3BvaW50KQog
ICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkph
dmFTY3JpcHRCcmVha3BvaW50KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBp
bnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LCBicmVha3BvaW50KTsKICAgICAgICAg
aWYgKCFicmVha3BvaW50KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChicmVh
a3BvaW50LnNwZWNpYWwpIHsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50QWRkZWQsIHticmVha3BvaW50
fSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAoIWJyZWFrcG9pbnQuZGlz
YWJsZWQgJiYgIXRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzICYmICF0aGlzLmJyZWFrcG9pbnRz
RGlzYWJsZWRUZW1wb3JhcmlseSkKKyAgICAgICAgICAgICAgICB0aGlzLmJyZWFrcG9pbnRzRW5h
YmxlZCA9IHRydWU7CisKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVNwZWNpYWxCcmVha3BvaW50
KGJyZWFrcG9pbnQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGJyZWFrcG9p
bnQuY29udGVudElkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludENv
bnRlbnRJZGVudGlmaWVyTWFwLmFkZChicmVha3BvaW50LmNvbnRlbnRJZGVudGlmaWVyLCBicmVh
a3BvaW50KTsKKworICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQuc2NyaXB0SWRlbnRpZmllcikK
KyAgICAgICAgICAgICAgICB0aGlzLl9icmVha3BvaW50U2NyaXB0SWRlbnRpZmllck1hcC5hZGQo
YnJlYWtwb2ludC5zY3JpcHRJZGVudGlmaWVyLCBicmVha3BvaW50KTsKKworICAgICAgICAgICAg
dGhpcy5fYnJlYWtwb2ludHMucHVzaChicmVha3BvaW50KTsKKworICAgICAgICAgICAgaWYgKCFi
cmVha3BvaW50LmRpc2FibGVkKQorICAgICAgICAgICAgICAgIHRoaXMuX3NldEJyZWFrcG9pbnQo
YnJlYWtwb2ludCk7CisKKyAgICAgICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2lu
dHMpCisgICAgICAgICAgICAgICAgV0kub2JqZWN0U3RvcmVzLmJyZWFrcG9pbnRzLnB1dE9iamVj
dChicmVha3BvaW50KTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChicmVha3BvaW50LmNvbnRl
bnRJZGVudGlmaWVyKQotICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludENvbnRlbnRJZGVudGlm
aWVyTWFwLmFkZChicmVha3BvaW50LmNvbnRlbnRJZGVudGlmaWVyLCBicmVha3BvaW50KTsKLQot
ICAgICAgICBpZiAoYnJlYWtwb2ludC5zY3JpcHRJZGVudGlmaWVyKQotICAgICAgICAgICAgdGhp
cy5fYnJlYWtwb2ludFNjcmlwdElkZW50aWZpZXJNYXAuYWRkKGJyZWFrcG9pbnQuc2NyaXB0SWRl
bnRpZmllciwgYnJlYWtwb2ludCk7Ci0KLSAgICAgICAgdGhpcy5fYnJlYWtwb2ludHMucHVzaChi
cmVha3BvaW50KTsKLQotICAgICAgICBpZiAoIWJyZWFrcG9pbnQuZGlzYWJsZWQpCi0gICAgICAg
ICAgICB0aGlzLl9zZXRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotCi0gICAgICAgIGlmICghdGhp
cy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpCi0gICAgICAgICAgICBXSS5vYmplY3RTdG9yZXMuYnJl
YWtwb2ludHMucHV0T2JqZWN0KGJyZWFrcG9pbnQpOwotCiAgICAgICAgIHRoaXMuYWRkUHJvYmVz
Rm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludEFkZGVkLCB7YnJl
YWtwb2ludH0pOwpAQCAtNjcwLDM2ICs3MjAsNDYgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xh
c3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICByZW1vdmVCcmVha3Bv
aW50KGJyZWFrcG9pbnQpCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50
IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQpOworICAgICAgICBjb25zb2xlLmFz
c2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQsIGJyZWFr
cG9pbnQpOwogICAgICAgICBpZiAoIWJyZWFrcG9pbnQpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludC5yZW1vdmFibGUpOworICAgICAgICBj
b25zb2xlLmFzc2VydChicmVha3BvaW50LnJlbW92YWJsZSwgYnJlYWtwb2ludCk7CiAgICAgICAg
IGlmICghYnJlYWtwb2ludC5yZW1vdmFibGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgaWYgKGJyZWFrcG9pbnQuc3BlY2lhbCkgewotICAgICAgICAgICAgYnJlYWtwb2ludC5kaXNh
YmxlZCA9IHRydWU7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
SS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludFJlbW92ZWQsIHticmVha3BvaW50fSk7
Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGxldCBzcGVjaWFsID0gYnJlYWtwb2ludC5z
cGVjaWFsOworCisgICAgICAgIGlmICghc3BlY2lhbCkgeworICAgICAgICAgICAgdGhpcy5fYnJl
YWtwb2ludHMucmVtb3ZlKGJyZWFrcG9pbnQpOworCisgICAgICAgICAgICBpZiAoYnJlYWtwb2lu
dC5pZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZUJyZWFrcG9pbnQoYnJl
YWtwb2ludCk7CisKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50LmNvbnRlbnRJZGVudGlmaWVy
KQorICAgICAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRDb250ZW50SWRlbnRpZmllck1hcC5k
ZWxldGUoYnJlYWtwb2ludC5jb250ZW50SWRlbnRpZmllciwgYnJlYWtwb2ludCk7CisKKyAgICAg
ICAgICAgIGlmIChicmVha3BvaW50LnNjcmlwdElkZW50aWZpZXIpCisgICAgICAgICAgICAgICAg
dGhpcy5fYnJlYWtwb2ludFNjcmlwdElkZW50aWZpZXJNYXAuZGVsZXRlKGJyZWFrcG9pbnQuc2Ny
aXB0SWRlbnRpZmllciwgYnJlYWtwb2ludCk7CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9i
cmVha3BvaW50cy5yZW1vdmUoYnJlYWtwb2ludCk7Ci0KLSAgICAgICAgaWYgKGJyZWFrcG9pbnQu
aWRlbnRpZmllcikKLSAgICAgICAgICAgIHRoaXMuX3JlbW92ZUJyZWFrcG9pbnQoYnJlYWtwb2lu
dCk7Ci0KLSAgICAgICAgaWYgKGJyZWFrcG9pbnQuY29udGVudElkZW50aWZpZXIpCi0gICAgICAg
ICAgICB0aGlzLl9icmVha3BvaW50Q29udGVudElkZW50aWZpZXJNYXAuZGVsZXRlKGJyZWFrcG9p
bnQuY29udGVudElkZW50aWZpZXIsIGJyZWFrcG9pbnQpOwotCi0gICAgICAgIGlmIChicmVha3Bv
aW50LnNjcmlwdElkZW50aWZpZXIpCi0gICAgICAgICAgICB0aGlzLl9icmVha3BvaW50U2NyaXB0
SWRlbnRpZmllck1hcC5kZWxldGUoYnJlYWtwb2ludC5zY3JpcHRJZGVudGlmaWVyLCBicmVha3Bv
aW50KTsKLQogICAgICAgICAvLyBEaXNhYmxlIHRoZSBicmVha3BvaW50IGZpcnN0LCBzbyByZW1v
dmluZyBhY3Rpb25zIGRvZXNuJ3QgcmUtYWRkIHRoZSBicmVha3BvaW50LgogICAgICAgICBicmVh
a3BvaW50LmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICAgYnJlYWtwb2ludC5jbGVhckFjdGlvbnMo
KTsKIAotICAgICAgICBpZiAoIXRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzKQorICAgICAgICBp
ZiAoc3BlY2lhbCkgeworICAgICAgICAgICAgc3dpdGNoIChicmVha3BvaW50KSB7CisgICAgICAg
ICAgICBjYXNlIHRoaXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludDoKKyAgICAgICAgICAg
ICAgICB0aGlzLl9hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnRTZXR0aW5nLnJlc2V0KCk7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50ID0gbnVsbDsK
KyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSB0aGlzLl9hbGxNaWNy
b3Rhc2tzQnJlYWtwb2ludDoKKyAgICAgICAgICAgICAgICB0aGlzLl9hbGxNaWNyb3Rhc2tzQnJl
YWtwb2ludFNldHRpbmcucmVzZXQoKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9hbGxNaWNyb3Rh
c2tzQnJlYWtwb2ludCA9IG51bGw7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzKQogICAg
ICAgICAgICAgV0kub2JqZWN0U3RvcmVzLmJyZWFrcG9pbnRzLmRlbGV0ZU9iamVjdChicmVha3Bv
aW50KTsKIAogICAgICAgICB0aGlzLnJlbW92ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2lu
dCk7CkBAIC0xMTM5LDYgKzExOTksOTggQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVi
dWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBf
c2V0UGF1c2VPbkV4Y2VwdGlvbnModGFyZ2V0KQorICAgIHsKKyAgICAgICAgbGV0IGNvbW1hbmRB
cmd1bWVudHMgPSB7CisgICAgICAgICAgICBzdGF0ZTogIm5vbmUiLAorICAgICAgICB9OworCisg
ICAgICAgIGlmICh0aGlzLl9icmVha3BvaW50c0VuYWJsZWRTZXR0aW5nLnZhbHVlKSB7CisgICAg
ICAgICAgICBpZiAodGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQgJiYgIXRoaXMuX2FsbEV4
Y2VwdGlvbnNCcmVha3BvaW50LmRpc2FibGVkKSB7CisgICAgICAgICAgICAgICAgY29tbWFuZEFy
Z3VtZW50cy5zdGF0ZSA9ICJhbGwiOworICAgICAgICAgICAgICAgIGNvbW1hbmRBcmd1bWVudHMu
b3B0aW9ucyA9IHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50Lm9wdGlvbnNUb1Byb3RvY29s
KCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFr
cG9pbnQgJiYgIXRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQuZGlzYWJsZWQpIHsK
KyAgICAgICAgICAgICAgICBjb21tYW5kQXJndW1lbnRzLnN0YXRlID0gInVuY2F1Z2h0IjsKKyAg
ICAgICAgICAgICAgICBjb21tYW5kQXJndW1lbnRzLm9wdGlvbnMgPSB0aGlzLl91bmNhdWdodEV4
Y2VwdGlvbnNCcmVha3BvaW50Lm9wdGlvbnNUb1Byb3RvY29sKCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIE1hcmsgdGhlIHVuY2F1Z2h0IGJyZWFrcG9pbnQgYXMgdW5yZXNvbHZl
ZCBpZiAiYWxsIiBhcyBpdCBpbmNsdWRlcyAidW5jYXVnaHQiLgorICAgICAgICAgICAgLy8gVGhh
dCB3YXkgaXQgaXMgY2xlYXIgaW4gdGhlIHVzZXIgaW50ZXJmYWNlIHRoYXQgdGhlIGJyZWFrcG9p
bnQgaXMgaWdub3JlZC4KKyAgICAgICAgICAgIGlmICh0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNC
cmVha3BvaW50KQorICAgICAgICAgICAgICAgIHRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFr
cG9pbnQucmVzb2x2ZWQgPSBjb21tYW5kQXJndW1lbnRzLnN0YXRlICE9PSAiYWxsIjsKKyAgICAg
ICAgfQorCisgICAgICAgIHRhcmdldC5EZWJ1Z2dlckFnZW50LnNldFBhdXNlT25FeGNlcHRpb25z
Lmludm9rZShjb21tYW5kQXJndW1lbnRzKTsKKyAgICB9CisKKyAgICBfY3JlYXRlU3BlY2lhbEJy
ZWFrcG9pbnQoc2VyaWFsaXplZEJyZWFrcG9pbnQgPSB7fSkKKyAgICB7CisgICAgICAgIGxldCBs
b2NhdGlvbiA9IFdJLlNvdXJjZUNvZGVMb2NhdGlvbi5zcGVjaWFsQnJlYWtwb2ludExvY2F0aW9u
OworICAgICAgICBzZXJpYWxpemVkQnJlYWtwb2ludC5saW5lTnVtYmVyID0gbG9jYXRpb24ubGlu
ZU51bWJlcjsKKyAgICAgICAgc2VyaWFsaXplZEJyZWFrcG9pbnQuY29sdW1uTnVtYmVyID0gbG9j
YXRpb24uY29sdW1uTnVtYmVyOworCisgICAgICAgIGxldCBicmVha3BvaW50ID0gV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnQuZnJvbUpTT04oc2VyaWFsaXplZEJyZWFrcG9pbnQpOworICAgICAgICBi
cmVha3BvaW50LnJlc29sdmVkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGJyZWFrcG9pbnQ7Cisg
ICAgfQorCisgICAgX3VwZGF0ZVNwZWNpYWxCcmVha3BvaW50KGJyZWFrcG9pbnQsIHNwZWNpZmlj
VGFyZ2V0KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludC5zcGVjaWFs
LCBicmVha3BvaW50KTsKKworICAgICAgICBsZXQgdGFyZ2V0cyA9IHNwZWNpZmljVGFyZ2V0ID8g
W3NwZWNpZmljVGFyZ2V0XSA6IFdJLnRhcmdldHM7CisKKyAgICAgICAgbGV0IGNvbW1hbmQ7Cisg
ICAgICAgIHN3aXRjaCAoYnJlYWtwb2ludCkgeworICAgICAgICBjYXNlIHRoaXMuX2RlYnVnZ2Vy
U3RhdGVtZW50c0JyZWFrcG9pbnQ6CisgICAgICAgICAgICBpZiAoIXNwZWNpZmljVGFyZ2V0KQor
ICAgICAgICAgICAgICAgIHRoaXMuX2RlYnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9pbnRTZXR0aW5n
LnZhbHVlID0gdGhpcy5fZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludC50b0pTT04oKTsKKwor
ICAgICAgICAgICAgY29tbWFuZCA9ICJzZXRQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzIjsKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFr
cG9pbnQ6CisgICAgICAgICAgICBpZiAoIXNwZWNpZmljVGFyZ2V0KQorICAgICAgICAgICAgICAg
IHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50U2V0dGluZy52YWx1ZSA9IHRoaXMuX2FsbEV4
Y2VwdGlvbnNCcmVha3BvaW50LnRvSlNPTigpOworCisgICAgICAgICAgICBmb3IgKGxldCB0YXJn
ZXQgb2YgdGFyZ2V0cykKKyAgICAgICAgICAgICAgICB0aGlzLl9zZXRQYXVzZU9uRXhjZXB0aW9u
cyh0YXJnZXQpOworICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNhc2UgdGhpcy5fdW5j
YXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludDoKKyAgICAgICAgICAgIGlmICghc3BlY2lmaWNUYXJn
ZXQpCisgICAgICAgICAgICAgICAgdGhpcy5fdW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludFNl
dHRpbmcudmFsdWUgPSB0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50LnRvSlNPTigp
OworCisgICAgICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgdGFyZ2V0cykKKyAgICAgICAgICAg
ICAgICB0aGlzLl9zZXRQYXVzZU9uRXhjZXB0aW9ucyh0YXJnZXQpOworICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGNhc2UgdGhpcy5fYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50Ogor
ICAgICAgICAgICAgaWYgKCFzcGVjaWZpY1RhcmdldCkKKyAgICAgICAgICAgICAgICB0aGlzLl9h
c3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnRTZXR0aW5nLnZhbHVlID0gdGhpcy5fYXNzZXJ0aW9u
RmFpbHVyZXNCcmVha3BvaW50LnRvSlNPTigpOworCisgICAgICAgICAgICBjb21tYW5kID0gInNl
dFBhdXNlT25Bc3NlcnRpb25zIjsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
dGhpcy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnQ6CisgICAgICAgICAgICBpZiAoIXNwZWNpZmlj
VGFyZ2V0KQorICAgICAgICAgICAgICAgIHRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50U2V0
dGluZy52YWx1ZSA9IHRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50LnRvSlNPTigpOworCisg
ICAgICAgICAgICBjb21tYW5kID0gInNldFBhdXNlT25NaWNyb3Rhc2tzIjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbW1hbmQpOworCisg
ICAgICAgIGxldCBjb21tYW5kQXJndW1lbnRzID0geworICAgICAgICAgICAgZW5hYmxlZDogIWJy
ZWFrcG9pbnQuZGlzYWJsZWQsCisgICAgICAgIH07CisgICAgICAgIGlmICghYnJlYWtwb2ludC5k
aXNhYmxlZCkKKyAgICAgICAgICAgIGNvbW1hbmRBcmd1bWVudHMub3B0aW9ucyA9IGJyZWFrcG9p
bnQub3B0aW9uc1RvUHJvdG9jb2woKTsKKworICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgdGFy
Z2V0cykKKyAgICAgICAgICAgIHRhcmdldC5EZWJ1Z2dlckFnZW50W2NvbW1hbmRdLmludm9rZShj
b21tYW5kQXJndW1lbnRzKTsKKyAgICB9CisKICAgICBfYnJlYWtwb2ludERpc3BsYXlMb2NhdGlv
bkRpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9pZ25vcmVCcmVha3Bv
aW50RGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlRXZlbnQpCkBAIC0xMTYyLDQ3ICsxMzE0LDkgQEAg
V0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgX2JyZWFrcG9pbnREaXNhYmxlZFN0YXRlRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsK
ICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7Ci0gICAgICAgIHN3aXRjaCAo
YnJlYWtwb2ludCkgewotICAgICAgICBjYXNlIHRoaXMuX2RlYnVnZ2VyU3RhdGVtZW50c0JyZWFr
cG9pbnQ6Ci0gICAgICAgICAgICBpZiAoIWJyZWFrcG9pbnQuZGlzYWJsZWQgJiYgIXRoaXMuYnJl
YWtwb2ludHNEaXNhYmxlZFRlbXBvcmFyaWx5KQotICAgICAgICAgICAgICAgIHRoaXMuYnJlYWtw
b2ludHNFbmFibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIHRoaXMuX2RlYnVnZ2VyU3RhdGVtZW50
c0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSA9ICFicmVha3BvaW50LmRpc2FibGVkOwot
ICAgICAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpCi0gICAgICAgICAgICAg
ICAgdGFyZ2V0LkRlYnVnZ2VyQWdlbnQuc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cyghYnJl
YWtwb2ludC5kaXNhYmxlZCk7Ci0gICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgY2FzZSB0
aGlzLl9hbGxFeGNlcHRpb25zQnJlYWtwb2ludDoKLSAgICAgICAgICAgIGlmICghYnJlYWtwb2lu
dC5kaXNhYmxlZCAmJiAhdGhpcy5icmVha3BvaW50c0Rpc2FibGVkVGVtcG9yYXJpbHkpCi0gICAg
ICAgICAgICAgICAgdGhpcy5icmVha3BvaW50c0VuYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAg
dGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSA9ICFicmVh
a3BvaW50LmRpc2FibGVkOwotICAgICAgICAgICAgdGhpcy5fdXBkYXRlQnJlYWtPbkV4Y2VwdGlv
bnNTdGF0ZSgpOwotICAgICAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpCi0g
ICAgICAgICAgICAgICAgdGFyZ2V0LkRlYnVnZ2VyQWdlbnQuc2V0UGF1c2VPbkV4Y2VwdGlvbnMo
dGhpcy5fYnJlYWtPbkV4Y2VwdGlvbnNTdGF0ZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgY2FzZSB0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50OgotICAgICAgICAg
ICAgaWYgKCFicmVha3BvaW50LmRpc2FibGVkICYmICF0aGlzLmJyZWFrcG9pbnRzRGlzYWJsZWRU
ZW1wb3JhcmlseSkKLSAgICAgICAgICAgICAgICB0aGlzLmJyZWFrcG9pbnRzRW5hYmxlZCA9IHRy
dWU7Ci0gICAgICAgICAgICB0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50RW5hYmxl
ZFNldHRpbmcudmFsdWUgPSAhYnJlYWtwb2ludC5kaXNhYmxlZDsKLSAgICAgICAgICAgIHRoaXMu
X3VwZGF0ZUJyZWFrT25FeGNlcHRpb25zU3RhdGUoKTsKLSAgICAgICAgICAgIGZvciAobGV0IHRh
cmdldCBvZiBXSS50YXJnZXRzKQotICAgICAgICAgICAgICAgIHRhcmdldC5EZWJ1Z2dlckFnZW50
LnNldFBhdXNlT25FeGNlcHRpb25zKHRoaXMuX2JyZWFrT25FeGNlcHRpb25zU3RhdGUpOwotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGNhc2UgdGhpcy5fYXNzZXJ0aW9uRmFpbHVyZXNC
cmVha3BvaW50OgotICAgICAgICAgICAgaWYgKCFicmVha3BvaW50LmRpc2FibGVkICYmICF0aGlz
LmJyZWFrcG9pbnRzRGlzYWJsZWRUZW1wb3JhcmlseSkKLSAgICAgICAgICAgICAgICB0aGlzLmJy
ZWFrcG9pbnRzRW5hYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICB0aGlzLl9hc3NlcnRpb25GYWls
dXJlc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSA9ICFicmVha3BvaW50LmRpc2FibGVk
OwotICAgICAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpCi0gICAgICAgICAg
ICAgICAgdGFyZ2V0LkRlYnVnZ2VyQWdlbnQuc2V0UGF1c2VPbkFzc2VydGlvbnMoIWJyZWFrcG9p
bnQuZGlzYWJsZWQpOwotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGNhc2UgdGhpcy5f
YWxsTWljcm90YXNrc0JyZWFrcG9pbnQ6Ci0gICAgICAgICAgICBpZiAoIWJyZWFrcG9pbnQuZGlz
YWJsZWQgJiYgIXRoaXMuYnJlYWtwb2ludHNEaXNhYmxlZFRlbXBvcmFyaWx5KQotICAgICAgICAg
ICAgICAgIHRoaXMuYnJlYWtwb2ludHNFbmFibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIHRoaXMu
X2FsbE1pY3JvdGFza3NCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUgPSAhYnJlYWtwb2lu
dC5kaXNhYmxlZDsKLSAgICAgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKQot
ICAgICAgICAgICAgICAgIHRhcmdldC5EZWJ1Z2dlckFnZW50LnNldFBhdXNlT25NaWNyb3Rhc2tz
KCFicmVha3BvaW50LmRpc2FibGVkKTsKKyAgICAgICAgaWYgKGJyZWFrcG9pbnQuc3BlY2lhbCkg
eworICAgICAgICAgICAgdGhpcy5fdXBkYXRlU3BlY2lhbEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTIxOSw2ICsxMzMzLDExIEBA
IFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9i
amVjdAogICAgIHsKICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7CiAKKyAg
ICAgICAgaWYgKGJyZWFrcG9pbnQuc3BlY2lhbCkgeworICAgICAgICAgICAgdGhpcy5fdXBkYXRl
U3BlY2lhbEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKwogICAgICAgICBpZiAoIXRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzKQogICAgICAg
ICAgICAgV0kub2JqZWN0U3RvcmVzLmJyZWFrcG9pbnRzLnB1dE9iamVjdChicmVha3BvaW50KTsK
IApAQCAtMTM2NCwzMyArMTQ4Myw2IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVn
Z2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkFjdGl2ZUNhbGxGcmFtZURp
ZENoYW5nZSk7CiAgICAgfQogCi0gICAgX3VwZGF0ZUJyZWFrT25FeGNlcHRpb25zU3RhdGUoKQot
ICAgIHsKLSAgICAgICAgbGV0IHN0YXRlID0gIm5vbmUiOwotCi0gICAgICAgIGlmICh0aGlzLl9i
cmVha3BvaW50c0VuYWJsZWRTZXR0aW5nLnZhbHVlKSB7Ci0gICAgICAgICAgICBpZiAoIXRoaXMu
X2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50LmRpc2FibGVkKQotICAgICAgICAgICAgICAgIHN0YXRl
ID0gImFsbCI7Ci0gICAgICAgICAgICBlbHNlIGlmICghdGhpcy5fdW5jYXVnaHRFeGNlcHRpb25z
QnJlYWtwb2ludC5kaXNhYmxlZCkKLSAgICAgICAgICAgICAgICBzdGF0ZSA9ICJ1bmNhdWdodCI7
Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl9icmVha09uRXhjZXB0aW9uc1N0YXRlID0gc3Rh
dGU7Ci0KLSAgICAgICAgc3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNlICJhbGwiOgotICAg
ICAgICAgICAgLy8gTWFyayB0aGUgdW5jYXVnaHQgYnJlYWtwb2ludCBhcyB1bnJlc29sdmVkIHNp
bmNlICJhbGwiIGluY2x1ZGVzICJ1bmNhdWdodCIuCi0gICAgICAgICAgICAvLyBUaGF0IHdheSBp
dCBpcyBjbGVhciBpbiB0aGUgdXNlciBpbnRlcmZhY2UgdGhhdCB0aGUgYnJlYWtwb2ludCBpcyBp
Z25vcmVkLgotICAgICAgICAgICAgdGhpcy5fdW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludC5y
ZXNvbHZlZCA9IGZhbHNlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgInVuY2F1
Z2h0IjoKLSAgICAgICAgY2FzZSAibm9uZSI6Ci0gICAgICAgICAgICAvLyBNYXJrIHRoZSB1bmNh
dWdodCBicmVha3BvaW50IGFzIHJlc29sdmVkIGFnYWluLgotICAgICAgICAgICAgdGhpcy5fdW5j
YXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludC5yZXNvbHZlZCA9IHRydWU7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgIH0KLQogICAgIF9hc3NvY2lhdGVCcmVha3BvaW50c1dpdGhT
b3VyY2VDb2RlKGJyZWFrcG9pbnRzLCBzb3VyY2VDb2RlKQogICAgIHsKICAgICAgICAgdGhpcy5f
aWdub3JlQnJlYWtwb2ludERpc3BsYXlMb2NhdGlvbkRpZENoYW5nZUV2ZW50ID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9CcmVh
a3BvaW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0Jy
ZWFrcG9pbnQuanMKaW5kZXggZjU2ZmE0MDFhZTguLjFhZWY3NDc4OWNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQnJlYWtwb2ludC5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQnJlYWtwb2lu
dC5qcwpAQCAtMjY5LDYgKzI2OSwxNiBAQCBXSS5CcmVha3BvaW50ID0gY2xhc3MgQnJlYWtwb2lu
dCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXSS5CcmVha3BvaW50LkV2ZW50LkFjdGlvbnNEaWRDaGFuZ2UpOwogICAgIH0KIAorICAgIHJl
c2V0KCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMp
OworCisgICAgICAgIHRoaXMuY29uZGl0aW9uID0gIiI7CisgICAgICAgIHRoaXMuaWdub3JlQ291
bnQgPSAwOworICAgICAgICB0aGlzLmF1dG9Db250aW51ZSA9IGZhbHNlOworICAgICAgICB0aGlz
LmNsZWFyQWN0aW9ucygpOworICAgIH0KKwogICAgIHJlbW92ZSgpCiAgICAgewogICAgICAgICBj
b25zb2xlLmFzc2VydCh0aGlzLnJlbW92YWJsZSwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSmF2YVNjcmlwdEJyZWFrcG9pbnQu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSmF2YVNjcmlw
dEJyZWFrcG9pbnQuanMKaW5kZXggNjVmM2E3MTM5YWUuLjQ5MmYzNDVlNzMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSmF2YVNjcmlwdEJy
ZWFrcG9pbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0phdmFTY3JpcHRCcmVha3BvaW50LmpzCkBAIC0yNSwxMCArMjUsMTEgQEAKIAogV0kuSmF2
YVNjcmlwdEJyZWFrcG9pbnQgPSBjbGFzcyBKYXZhU2NyaXB0QnJlYWtwb2ludCBleHRlbmRzIFdJ
LkJyZWFrcG9pbnQKIHsKLSAgICBjb25zdHJ1Y3Rvcihzb3VyY2VDb2RlTG9jYXRpb24sIHtjb250
ZW50SWRlbnRpZmllciwgZGlzYWJsZWQsIGNvbmRpdGlvbiwgYWN0aW9ucywgaWdub3JlQ291bnQs
IGF1dG9Db250aW51ZX0gPSB7fSkKKyAgICBjb25zdHJ1Y3Rvcihzb3VyY2VDb2RlTG9jYXRpb24s
IHtjb250ZW50SWRlbnRpZmllciwgcmVzb2x2ZWQsIGRpc2FibGVkLCBjb25kaXRpb24sIGFjdGlv
bnMsIGlnbm9yZUNvdW50LCBhdXRvQ29udGludWV9ID0ge30pCiAgICAgewotICAgICAgICBjb25z
b2xlLmFzc2VydChzb3VyY2VDb2RlTG9jYXRpb24gaW5zdGFuY2VvZiBXSS5Tb3VyY2VDb2RlTG9j
YXRpb24pOwotICAgICAgICBjb25zb2xlLmFzc2VydCghY29udGVudElkZW50aWZpZXIgfHwgdHlw
ZW9mIGNvbnRlbnRJZGVudGlmaWVyID09PSAic3RyaW5nIik7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHNvdXJjZUNvZGVMb2NhdGlvbiBpbnN0YW5jZW9mIFdJLlNvdXJjZUNvZGVMb2NhdGlvbiwg
c291cmNlQ29kZUxvY2F0aW9uKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIWNvbnRlbnRJZGVu
dGlmaWVyIHx8IHR5cGVvZiBjb250ZW50SWRlbnRpZmllciA9PT0gInN0cmluZyIsIGNvbnRlbnRJ
ZGVudGlmaWVyKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocmVzb2x2ZWQgPT09IHVuZGVmaW5l
ZCB8fCB0eXBlb2YgcmVzb2x2ZWQgPT09ICJib29sZWFuIiwgcmVzb2x2ZWQpOwogCiAgICAgICAg
IHN1cGVyKHtkaXNhYmxlZCwgY29uZGl0aW9uLCBhY3Rpb25zLCBpZ25vcmVDb3VudCwgYXV0b0Nv
bnRpbnVlfSk7CiAKQEAgLTQ1LDEyICs0NiwyNiBAQCBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCA9
IGNsYXNzIEphdmFTY3JpcHRCcmVha3BvaW50IGV4dGVuZHMgV0kuQnJlYWtwb2ludAogCiAgICAg
ICAgIHRoaXMuX3NjcmlwdElkZW50aWZpZXIgPSBzb3VyY2VDb2RlIGluc3RhbmNlb2YgV0kuU2Ny
aXB0ID8gc291cmNlQ29kZS5pZCA6IG51bGw7CiAgICAgICAgIHRoaXMuX3RhcmdldCA9IHNvdXJj
ZUNvZGUgaW5zdGFuY2VvZiBXSS5TY3JpcHQgPyBzb3VyY2VDb2RlLnRhcmdldCA6IG51bGw7Ci0g
ICAgICAgIHRoaXMuX3Jlc29sdmVkID0gZmFsc2U7CisgICAgICAgIHRoaXMuX3Jlc29sdmVkID0g
cmVzb2x2ZWQ7CiAKICAgICAgICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmFkZEV2ZW50TGlz
dGVuZXIoV0kuU291cmNlQ29kZUxvY2F0aW9uLkV2ZW50LkxvY2F0aW9uQ2hhbmdlZCwgdGhpcy5f
c291cmNlQ29kZUxvY2F0aW9uTG9jYXRpb25DaGFuZ2VkLCB0aGlzKTsKICAgICAgICAgdGhpcy5f
c291cmNlQ29kZUxvY2F0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuU291cmNlQ29kZUxvY2F0aW9u
LkV2ZW50LkRpc3BsYXlMb2NhdGlvbkNoYW5nZWQsIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbkRp
c3BsYXlMb2NhdGlvbkNoYW5nZWQsIHRoaXMpOwogICAgIH0KIAorICAgIC8vIFN0YXRpYworCisg
ICAgc3RhdGljIHN1cHBvcnRzTWljcm90YXNrcyhwYXJhbWV0ZXIpCisgICAgeworICAgICAgICAv
LyBDT01QQVRJQklMSVRZIChpT1MgMTMpOiBEZWJ1Z2dlci5zZXRQYXVzZU9uTWljcm90YXNrcyBk
aWQgbm90IGV4aXN0IHlldC4KKyAgICAgICAgcmV0dXJuIEluc3BlY3RvckJhY2tlbmQuaGFzQ29t
bWFuZCgiRGVidWdnZXIuc2V0UGF1c2VPbk1pY3JvdGFza3MiLCBwYXJhbWV0ZXIpOworICAgIH0K
KworICAgIHN0YXRpYyBzdXBwb3J0c0RlYnVnZ2VyU3RhdGVtZW50cyhwYXJhbWV0ZXIpCisgICAg
eworICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMuMSk6IERlYnVnZ2VyLnNldFBhdXNl
T25EZWJ1Z2dlclN0YXRlbWVudHMgZGlkIG5vdCBleGlzdCB5ZXQuCisgICAgICAgIHJldHVybiBJ
bnNwZWN0b3JCYWNrZW5kLmhhc0NvbW1hbmQoIkRlYnVnZ2VyLnNldFBhdXNlT25EZWJ1Z2dlclN0
YXRlbWVudHMiLCBwYXJhbWV0ZXIpOworICAgIH0KKwogICAgIC8vIEltcG9ydCAvIEV4cG9ydAog
CiAgICAgc3RhdGljIGZyb21KU09OKGpzb24pCkBAIC03MSw5ICs4NiwxMiBAQCBXSS5KYXZhU2Ny
aXB0QnJlYWtwb2ludCA9IGNsYXNzIEphdmFTY3JpcHRCcmVha3BvaW50IGV4dGVuZHMgV0kuQnJl
YWtwb2ludAogICAgIHsKICAgICAgICAgLy8gVGhlIGlkLCBzY3JpcHRJZGVudGlmaWVyLCB0YXJn
ZXQsIGFuZCByZXNvbHZlZCBzdGF0ZSBhcmUgdGllZCB0byB0aGUgY3VycmVudCBzZXNzaW9uLCBz
byBkb24ndCBpbmNsdWRlIHRoZW0gZm9yIHNlcmlhbGl6YXRpb24uCiAgICAgICAgIGxldCBqc29u
ID0gc3VwZXIudG9KU09OKGtleSk7Ci0gICAgICAgIGpzb24uY29udGVudElkZW50aWZpZXIgPSB0
aGlzLl9jb250ZW50SWRlbnRpZmllcjsKLSAgICAgICAganNvbi5saW5lTnVtYmVyID0gdGhpcy5f
c291cmNlQ29kZUxvY2F0aW9uLmxpbmVOdW1iZXI7Ci0gICAgICAgIGpzb24uY29sdW1uTnVtYmVy
ID0gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51bWJlcjsKKyAgICAgICAgaWYgKHRo
aXMuX2NvbnRlbnRJZGVudGlmaWVyKQorICAgICAgICAgICAganNvbi5jb250ZW50SWRlbnRpZmll
ciA9IHRoaXMuX2NvbnRlbnRJZGVudGlmaWVyOworICAgICAgICBpZiAoaXNGaW5pdGUodGhpcy5f
c291cmNlQ29kZUxvY2F0aW9uLmxpbmVOdW1iZXIpKQorICAgICAgICAgICAganNvbi5saW5lTnVt
YmVyID0gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmxpbmVOdW1iZXI7CisgICAgICAgIGlmIChp
c0Zpbml0ZSh0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uY29sdW1uTnVtYmVyKSkKKyAgICAgICAg
ICAgIGpzb24uY29sdW1uTnVtYmVyID0gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51
bWJlcjsKICAgICAgICAgaWYgKGtleSA9PT0gV0kuT2JqZWN0U3RvcmUudG9KU09OU3ltYm9sKQog
ICAgICAgICAgICAganNvbltXSS5vYmplY3RTdG9yZXMuYnJlYWtwb2ludHMua2V5UGF0aF0gPSB0
aGlzLl9jb250ZW50SWRlbnRpZmllciArICI6IiArIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5s
aW5lTnVtYmVyICsgIjoiICsgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51bWJlcjsK
ICAgICAgICAgcmV0dXJuIGpzb247CkBAIC0xMzgsMTEgKzE1NiwyMSBAQCBXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludCA9IGNsYXNzIEphdmFTY3JpcHRCcmVha3BvaW50IGV4dGVuZHMgV0kuQnJlYWtw
b2ludAogICAgIHsKICAgICAgICAgc3dpdGNoICh0aGlzKSB7CiAgICAgICAgIGNhc2UgV0kuZGVi
dWdnZXJNYW5hZ2VyLmRlYnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9pbnQ6CisgICAgICAgICAgICAv
LyBDT01QQVRJQklMSVRZIChpT1MgMTQpOiBEZWJ1Z2dlci5zZXRQYXVzZU9uRGVidWdnZXJTdGF0
ZW1lbnRzIGRpZCBub3QgaGF2ZSBhbiAib3B0aW9ucyIgcGFyYW1ldGVyIHlldC4KKyAgICAgICAg
ICAgIHJldHVybiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5zdXBwb3J0c0RlYnVnZ2VyU3RhdGVt
ZW50cygib3B0aW9ucyIpOworCiAgICAgICAgIGNhc2UgV0kuZGVidWdnZXJNYW5hZ2VyLmFsbEV4
Y2VwdGlvbnNCcmVha3BvaW50OgogICAgICAgICBjYXNlIFdJLmRlYnVnZ2VyTWFuYWdlci51bmNh
dWdodEV4Y2VwdGlvbnNCcmVha3BvaW50OgorICAgICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAo
aU9TIDE0KTogRGVidWdnZXIuc2V0UGF1c2VPbkV4Y2VwdGlvbnMgZGlkIG5vdCBoYXZlIGFuICJv
cHRpb25zIiBwYXJhbWV0ZXIgeWV0LgorICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckJhY2tl
bmQuaGFzQ29tbWFuZCgiRGVidWdnZXIuc2V0UGF1c2VPbkV4Y2VwdGlvbnMiLCAib3B0aW9ucyIp
OworCiAgICAgICAgIGNhc2UgV0kuZGVidWdnZXJNYW5hZ2VyLmFzc2VydGlvbkZhaWx1cmVzQnJl
YWtwb2ludDoKKyAgICAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxNCk6IERlYnVnZ2Vy
LnNldFBhdXNlT25Bc3NlcnRpb25zIGRpZCBub3QgaGF2ZSBhbiAib3B0aW9ucyIgcGFyYW1ldGVy
IHlldC4KKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JCYWNrZW5kLmhhc0NvbW1hbmQoIkRl
YnVnZ2VyLnNldFBhdXNlT25Bc3NlcnRpb25zIiwgIm9wdGlvbnMiKTsKKwogICAgICAgICBjYXNl
IFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludDoKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxNCk6IERl
YnVnZ2VyLnNldFBhdXNlT25NaWNyb3Rhc2tzIGRpZCBub3QgaGF2ZSBhbiAib3B0aW9ucyIgcGFy
YW1ldGVyIHlldC4KKyAgICAgICAgICAgIHJldHVybiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5z
dXBwb3J0c01pY3JvdGFza3MoIm9wdGlvbnMiKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtMTkzLDcgKzIyMSw3IEBAIFdJLkphdmFTY3JpcHRCcmVha3BvaW50ID0gY2xh
c3MgSmF2YVNjcmlwdEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5CcmVha3BvaW50CiAKICAgICBfaXNT
cGVjaWFsKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24u
aXNFcXVhbChuZXcgV0kuU291cmNlQ29kZUxvY2F0aW9uKG51bGwsIEluZmluaXR5LCBJbmZpbml0
eSkpOworICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmlzRXF1YWwoV0ku
U291cmNlQ29kZUxvY2F0aW9uLnNwZWNpYWxCcmVha3BvaW50TG9jYXRpb24pOwogICAgIH0KIAog
ICAgIF9zb3VyY2VDb2RlTG9jYXRpb25Mb2NhdGlvbkNoYW5nZWQoZXZlbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmVTZXQuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmVTZXQuanMK
aW5kZXggMmU2ZTRlOWNhOTAuLmI3ZThiMWM0NTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmVTZXQuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2JlU2V0LmpzCkBAIC00Miw3ICs0
Miw2IEBAIFdJLlByb2JlU2V0ID0gY2xhc3MgUHJvYmVTZXQgZXh0ZW5kcyBXSS5PYmplY3QKIAog
ICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNv
dXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlQ2hhbmdlZCwgdGhpcyk7CiAgICAgICAg
IFdJLlByb2JlLmFkZEV2ZW50TGlzdGVuZXIoV0kuUHJvYmUuRXZlbnQuU2FtcGxlQWRkZWQsIHRo
aXMuX3NhbXBsZUNvbGxlY3RlZCwgdGhpcyk7Ci0gICAgICAgIFdJLkphdmFTY3JpcHRCcmVha3Bv
aW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2
ZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludFJlc29sdmVkU3RhdGVEaWRDaGFuZ2Us
IHRoaXMpOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwpAQCAtMTAxLDcgKzEwMCw2IEBAIFdJLlBy
b2JlU2V0ID0gY2xhc3MgUHJvYmVTZXQgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICBXSS5G
cmFtZS5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENo
YW5nZSwgdGhpcy5fbWFpblJlc291cmNlQ2hhbmdlZCwgdGhpcyk7CiAgICAgICAgIFdJLlByb2Jl
LnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuUHJvYmUuRXZlbnQuU2FtcGxlQWRkZWQsIHRoaXMuX3Nh
bXBsZUNvbGxlY3RlZCwgdGhpcyk7Ci0gICAgICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnJl
bW92ZUV2ZW50TGlzdGVuZXIoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRT
dGF0ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludFJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRo
aXMpOwogICAgIH0KIAogICAgIC8vIFByaXZhdGUKQEAgLTEzMiwxNyArMTMwLDExIEBAIFdJLlBy
b2JlU2V0ID0gY2xhc3MgUHJvYmVTZXQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5k
YXRhVGFibGUuYWRkU2FtcGxlRm9yUHJvYmUocHJvYmUsIHNhbXBsZSk7CiAgICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlByb2JlU2V0LkV2ZW50LlNhbXBsZUFkZGVkLCB7
cHJvYmUsIHNhbXBsZX0pOwogICAgIH0KLQotICAgIF9icmVha3BvaW50UmVzb2x2ZWRTdGF0ZURp
ZENoYW5nZShldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdJLlByb2JlU2V0LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UpOwotICAgIH0KIH07
CiAKIFdJLlByb2JlU2V0LkV2ZW50ID0gewogICAgIFByb2JlQWRkZWQ6ICJwcm9iZS1zZXQtcHJv
YmUtYWRkZWQiLAogICAgIFByb2JlUmVtb3ZlZDogInByb2JlLXNldC1wcm9iZS1yZW1vdmVkIiwK
LSAgICBSZXNvbHZlZFN0YXRlRGlkQ2hhbmdlOiAicHJvYmUtc2V0LXJlc29sdmVkLXN0YXRlLWRp
ZC1jaGFuZ2UiLAogICAgIFNhbXBsZUFkZGVkOiAicHJvYmUtc2V0LXNhbXBsZS1hZGRlZCIsCiAg
ICAgU2FtcGxlc0NsZWFyZWQ6ICJwcm9iZS1zZXQtc2FtcGxlcy1jbGVhcmVkIiwKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNl
Q29kZUxvY2F0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL1NvdXJjZUNvZGVMb2NhdGlvbi5qcwppbmRleCA0MDU4NTBlMTEwYi4uYzFkODgyYmI2Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9T
b3VyY2VDb2RlTG9jYXRpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL1NvdXJjZUNvZGVMb2NhdGlvbi5qcwpAQCAtNDcsNiArNDcsMTMgQEAgV0ku
U291cmNlQ29kZUxvY2F0aW9uID0gY2xhc3MgU291cmNlQ29kZUxvY2F0aW9uIGV4dGVuZHMgV0ku
T2JqZWN0CiAgICAgICAgIHRoaXMuX3Jlc2V0TWFwcGVkTG9jYXRpb24oKTsKICAgICB9CiAKKyAg
ICAvLyBTdGF0aWMKKworICAgIHN0YXRpYyBnZXQgc3BlY2lhbEJyZWFrcG9pbnRMb2NhdGlvbigp
CisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdJLlNvdXJjZUNvZGVMb2NhdGlvbihudWxsLCBJ
bmZpbml0eSwgSW5maW5pdHkpOworICAgIH0KKwogICAgIC8vIFB1YmxpYwogCiAgICAgaXNFcXVh
bChvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0JyZWFrcG9pbnRQb3BvdmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFBvcG92ZXIuanMKaW5kZXggOTllMzQ0OWRkNGUuLjAy
N2Q3MjhhMDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9CcmVha3BvaW50UG9wb3Zlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50UG9wb3Zlci5qcwpAQCAtODYsNiArODYsMTAg
QEAgV0kuQnJlYWtwb2ludFBvcG92ZXIgPSBjbGFzcyBCcmVha3BvaW50UG9wb3ZlciBleHRlbmRz
IFdJLlBvcG92ZXIKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJp
bmcoIkRlbGV0ZSBCcmVha3BvaW50IiksICgpID0+IHsKICAgICAgICAgICAgICAgICBicmVha3Bv
aW50LnJlbW92ZSgpOwogICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJSZXNldCBCcmVha3BvaW50
IiksICgpID0+IHsKKyAgICAgICAgICAgICAgICBicmVha3BvaW50LnJlc2V0KCk7CisgICAgICAg
ICAgICB9KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChicmVha3BvaW50IGluc3RhbmNlb2Yg
V0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQgJiYgYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24u
aGFzTWFwcGVkTG9jYXRpb24oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50Lmpz
CmluZGV4IDUzZmFiMjMxNjhjLi42MjUyNWUzYjRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRU
cmVlRWxlbWVudC5qcwpAQCAtODQsOCArODQsMTAgQEAgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50
ID0gY2xhc3MgQnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhbFRyZWVFbGUK
IAogICAgICAgICBpZiAodGhpcy5fYnJlYWtwb2ludC5kaXNhYmxlZCkKICAgICAgICAgICAgIElu
c3BlY3RvckZyb250ZW5kSG9zdC5iZWVwKCk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICB0aGlzLl9icmVha3BvaW50LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAg
ICAgIHRoaXMuX2JyZWFrcG9pbnQucmVzZXQoKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZXNOYXZpZ2F0aW9uU2lkZWJh
clBhbmVsLmpzCmluZGV4IDM2Y2YyMDFjZWNmLi44ZmM0ZDE0MzAzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc05hdmlnYXRpb25T
aWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKQEAgLTE2Myw4ICsxNjMsNyBA
QCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0
aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogCiAgICAgICAgIC8vIFByZXZlbnQgdGhlIGJyZWFr
cG9pbnRzIGxpc3QgZnJvbSBiZWluZyB1c2VkIGFzIHRoZSBzb3VyY2Ugb2Ygc2VsZWN0aW9uIHJl
c3RvcmF0aW9uIChlLmcuIG9uIHJlbG9hZCBvciBuYXZpZ2F0aW9uKS4KICAgICAgICAgdGhpcy5f
YnJlYWtwb2ludHNUcmVlT3V0bGluZSA9IHRoaXMuY3JlYXRlQ29udGVudFRyZWVPdXRsaW5lKHtp
Z25vcmVDb29raWVSZXN0b3JhdGlvbjogdHJ1ZX0pOwotICAgICAgICB0aGlzLl9icmVha3BvaW50
c1RyZWVPdXRsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV0kuVHJlZU91dGxpbmUuRXZlbnQuRWxlbWVu
dEFkZGVkLCB0aGlzLl9oYW5kbGVCcmVha3BvaW50RWxlbWVudEFkZGVkT3JSZW1vdmVkLCB0aGlz
KTsKLSAgICAgICAgdGhpcy5fYnJlYWtwb2ludHNUcmVlT3V0bGluZS5hZGRFdmVudExpc3RlbmVy
KFdJLlRyZWVPdXRsaW5lLkV2ZW50LkVsZW1lbnRSZW1vdmVkLCB0aGlzLl9oYW5kbGVCcmVha3Bv
aW50RWxlbWVudEFkZGVkT3JSZW1vdmVkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fYnJlYWtwb2lu
dHNUcmVlT3V0bGluZS5hZGRFdmVudExpc3RlbmVyKFdJLlRyZWVPdXRsaW5lLkV2ZW50LkVsZW1l
bnRSZW1vdmVkLCB0aGlzLl9oYW5kbGVCcmVha3BvaW50VHJlZU91dGxpbmVFbGVtZW50UmVtb3Zl
ZCwgdGhpcyk7CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzVHJlZU91dGxpbmUuYWRkRXZlbnRM
aXN0ZW5lcihXSS5UcmVlT3V0bGluZS5FdmVudC5TZWxlY3Rpb25EaWRDaGFuZ2UsIHRoaXMuX2hh
bmRsZVRyZWVTZWxlY3Rpb25EaWRDaGFuZ2UsIHRoaXMpOwogICAgICAgICB0aGlzLl9icmVha3Bv
aW50c1RyZWVPdXRsaW5lLm9uZGVsZXRlID0gKHNlbGVjdGVkVHJlZUVsZW1lbnQpID0+IHsKICAg
ICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNlbGVjdGVkVHJlZUVsZW1lbnQuc2VsZWN0ZWQpOwpA
QCAtMzU1LDE5ICszNTQsMjAgQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBj
bGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAgICAg
IH0sIHRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEz
LjEpOiBEZWJ1Z2dlci5zZXRQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzIGRpZCBub3QgZXhpc3Qg
eWV0LgotICAgICAgICBpZiAoSW5zcGVjdG9yQmFja2VuZC5oYXNDb21tYW5kKCJEZWJ1Z2dlci5z
ZXRQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzIikpCi0gICAgICAgICAgICBXSS5kZWJ1Z2dlck1h
bmFnZXIuYWRkQnJlYWtwb2ludChXSS5kZWJ1Z2dlck1hbmFnZXIuZGVidWdnZXJTdGF0ZW1lbnRz
QnJlYWtwb2ludCk7CisgICAgICAgIGlmIChXSS5kZWJ1Z2dlck1hbmFnZXIuZGVidWdnZXJTdGF0
ZW1lbnRzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIHRoaXMuX2FkZEJyZWFrcG9pbnQoV0kuZGVi
dWdnZXJNYW5hZ2VyLmRlYnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9pbnQpOwogCi0gICAgICAgIFdJ
LmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxFeGNl
cHRpb25zQnJlYWtwb2ludCk7Ci0gICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3Bv
aW50KFdJLmRlYnVnZ2VyTWFuYWdlci51bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50KTsKKyAg
ICAgICAgaWYgKFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxFeGNlcHRpb25zQnJlYWtwb2ludCkKKyAg
ICAgICAgICAgIHRoaXMuX2FkZEJyZWFrcG9pbnQoV0kuZGVidWdnZXJNYW5hZ2VyLmFsbEV4Y2Vw
dGlvbnNCcmVha3BvaW50KTsKIAotICAgICAgICBpZiAoV0kuc2V0dGluZ3Muc2hvd0Fzc2VydGlv
bkZhaWx1cmVzQnJlYWtwb2ludC52YWx1ZSkKLSAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdl
ci5hZGRCcmVha3BvaW50KFdJLmRlYnVnZ2VyTWFuYWdlci5hc3NlcnRpb25GYWlsdXJlc0JyZWFr
cG9pbnQpOworICAgICAgICBpZiAoV0kuZGVidWdnZXJNYW5hZ2VyLnVuY2F1Z2h0RXhjZXB0aW9u
c0JyZWFrcG9pbnQpCisgICAgICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50KFdJLmRlYnVnZ2Vy
TWFuYWdlci51bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50KTsKIAotICAgICAgICAvLyBDT01Q
QVRJQklMSVRZIChpT1MgMTMpOiBEZWJ1Z2dlci5zZXRQYXVzZU9uTWljcm90YXNrcyBkaWQgbm90
IGV4aXN0IHlldC4KLSAgICAgICAgaWYgKEluc3BlY3RvckJhY2tlbmQuaGFzQ29tbWFuZCgiRGVi
dWdnZXIuc2V0UGF1c2VPbk1pY3JvdGFza3MiKSAmJiBXSS5zZXR0aW5ncy5zaG93QWxsTWljcm90
YXNrc0JyZWFrcG9pbnQudmFsdWUpCi0gICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRk
QnJlYWtwb2ludChXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsTWljcm90YXNrc0JyZWFrcG9pbnQpOwor
ICAgICAgICBpZiAoV0kuZGVidWdnZXJNYW5hZ2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2lu
dCkKKyAgICAgICAgICAgIHRoaXMuX2FkZEJyZWFrcG9pbnQoV0kuZGVidWdnZXJNYW5hZ2VyLmFz
c2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludCk7CisKKyAgICAgICAgaWYgKFdJLmRlYnVnZ2VyTWFu
YWdlci5hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIHRoaXMuX2FkZEJyZWFr
cG9pbnQoV0kuZGVidWdnZXJNYW5hZ2VyLmFsbE1pY3JvdGFza3NCcmVha3BvaW50KTsKIAogICAg
ICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykKICAgICAgICAgICAgIHRoaXMuX2Fk
ZFRhcmdldCh0YXJnZXQpOwpAQCAtMTk1Miw3MiArMTk1Miw0NyBAQCBXSS5Tb3VyY2VzTmF2aWdh
dGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4
dGVuZHMgVwogICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtub3duIHRyZWUgZWxlbWVudCIsIHRy
ZWVFbGVtZW50KTsKICAgICB9CiAKLSAgICBfaGFuZGxlQnJlYWtwb2ludEVsZW1lbnRBZGRlZE9y
UmVtb3ZlZChldmVudCkKKyAgICBfaGFuZGxlQnJlYWtwb2ludFRyZWVPdXRsaW5lRWxlbWVudFJl
bW92ZWQoZXZlbnQpCiAgICAgewogICAgICAgICBsZXQgdHJlZUVsZW1lbnQgPSBldmVudC5kYXRh
LmVsZW1lbnQ7CiAKLSAgICAgICAgbGV0IHNldHRpbmcgPSBudWxsOwotICAgICAgICBzd2l0Y2gg
KHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0KSB7Ci0gICAgICAgIGNhc2UgV0kuZGVidWdn
ZXJNYW5hZ2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludDoKLSAgICAgICAgICAgIHNldHRp
bmcgPSBXSS5zZXR0aW5ncy5zaG93QXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50OwotICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGxldCBzZWxlY3RlZFRyZWVFbGVtZW50ID0gdGhpcy5fYnJl
YWtwb2ludHNUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50OworICAgICAgICBpZiAoIXNl
bGVjdGVkVHJlZUVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgY2FzZSBX
SS5kZWJ1Z2dlck1hbmFnZXIuYWxsTWljcm90YXNrc0JyZWFrcG9pbnQ6Ci0gICAgICAgICAgICBz
ZXR0aW5nID0gV0kuc2V0dGluZ3Muc2hvd0FsbE1pY3JvdGFza3NCcmVha3BvaW50OwotICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGlmIChzZWxlY3RlZFRyZWVFbGVtZW50LnJlcHJlc2VudGVk
T2JqZWN0ICE9PSBXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50
ICYmIHNlbGVjdGVkVHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZhYmxlKQorICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGNhc2UgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFs
bFJlcXVlc3RzQnJlYWtwb2ludDoKLSAgICAgICAgICAgIHNldHRpbmcgPSBXSS5zZXR0aW5ncy5z
aG93QWxsUmVxdWVzdHNCcmVha3BvaW50OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
KyAgICAgICAgY29uc3Qgc2tpcFVucmV2ZWFsZWQgPSB0cnVlOworICAgICAgICBjb25zdCBzdGF5
V2l0aGluID0gbnVsbDsKKyAgICAgICAgY29uc3QgZG9udFBvcHVsYXRlID0gdHJ1ZTsKKyAgICAg
ICAgbGV0IHRyZWVFbGVtZW50VG9TZWxlY3QgPSBzZWxlY3RlZFRyZWVFbGVtZW50LnRyYXZlcnNl
TmV4dFRyZWVFbGVtZW50KHNraXBVbnJldmVhbGVkLCBzdGF5V2l0aGluLCBkb250UG9wdWxhdGUp
OworICAgICAgICBpZiAoIXRyZWVFbGVtZW50VG9TZWxlY3QpCisgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgaWYgKHNldHRpbmcpCi0gICAgICAgICAgICBzZXR0aW5nLnZhbHVlID0gISF0
cmVlRWxlbWVudC5wYXJlbnQ7Ci0KLSAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IFdJLlRyZWVP
dXRsaW5lLkV2ZW50LkVsZW1lbnRSZW1vdmVkKSB7Ci0gICAgICAgICAgICBsZXQgc2VsZWN0ZWRU
cmVlRWxlbWVudCA9IHRoaXMuX2JyZWFrcG9pbnRzVHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxl
bWVudDsKLSAgICAgICAgICAgIGlmIChzZWxlY3RlZFRyZWVFbGVtZW50KSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHNlbGVjdGVkVHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QgPT09IFdJLmRl
YnVnZ2VyTWFuYWdlci5hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQgfHwgIXNlbGVjdGVkVHJl
ZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZhYmxlKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHNraXBVbnJldmVhbGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgY29u
c3QgZG9udFBvcHVsYXRlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgbGV0IHRyZWVFbGVt
ZW50VG9TZWxlY3QgPSBzZWxlY3RlZFRyZWVFbGVtZW50LnRyYXZlcnNlTmV4dFRyZWVFbGVtZW50
KHNraXBVbnJldmVhbGVkLCBkb250UG9wdWxhdGUpOwotICAgICAgICAgICAgICAgICAgICBpZiAo
dHJlZUVsZW1lbnRUb1NlbGVjdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb21p
dEZvY3VzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkQnlV
c2VyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50VG9TZWxlY3Qu
c2VsZWN0KG9taXRGb2N1cywgc2VsZWN0ZWRCeVVzZXIpOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIGNv
bnN0IG9taXRGb2N1cyA9IHRydWU7CisgICAgICAgIGNvbnN0IHNlbGVjdGVkQnlVc2VyID0gdHJ1
ZTsKKyAgICAgICAgdHJlZUVsZW1lbnRUb1NlbGVjdC5zZWxlY3Qob21pdEZvY3VzLCBzZWxlY3Rl
ZEJ5VXNlcik7CiAgICAgfQogCiAgICAgX3BvcHVsYXRlQ3JlYXRlQnJlYWtwb2ludENvbnRleHRN
ZW51KGNvbnRleHRNZW51KQogICAgIHsKLSAgICAgICAgbGV0IGFzc2VydGlvbkZhaWx1cmVzQnJl
YWtwb2ludFNob3duID0gV0kuc2V0dGluZ3Muc2hvd0Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2lu
dC52YWx1ZTsKLQogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRDaGVja2JveEl0ZW0oV0kucmVw
ZWF0ZWRVSVN0cmluZy5hc3NlcnRpb25GYWlsdXJlcygpLCAoKSA9PiB7Ci0gICAgICAgICAgICBp
ZiAoYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50U2hvd24pCi0gICAgICAgICAgICAgICAgV0ku
ZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnQoV0kuZGVidWdnZXJNYW5hZ2VyLmFzc2Vy
dGlvbkZhaWx1cmVzQnJlYWtwb2ludCk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50LmRpc2Fi
bGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFr
cG9pbnQoV0kuZGVidWdnZXJNYW5hZ2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0sIGFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludFNob3du
KTsKKyAgICAgICAgICAgIGlmIChXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFpbHVyZXNC
cmVha3BvaW50KQorICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hc3NlcnRpb25G
YWlsdXJlc0JyZWFrcG9pbnQucmVtb3ZlKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmNyZWF0ZUFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2lu
dCgpOworICAgICAgICB9LCBXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFpbHVyZXNCcmVh
a3BvaW50KTsKIAogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKIAotICAg
ICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMpOiBEZWJ1Z2dlci5zZXRQYXVzZU9uTWljcm90
YXNrcyBkaWQgbm90IGV4aXN0IHlldC4KLSAgICAgICAgaWYgKEluc3BlY3RvckJhY2tlbmQuaGFz
Q29tbWFuZCgiRGVidWdnZXIuc2V0UGF1c2VPbk1pY3JvdGFza3MiKSkgewotICAgICAgICAgICAg
bGV0IGFsbE1pY3JvdGFza3NCcmVha3BvaW50U2hvd24gPSBXSS5zZXR0aW5ncy5zaG93QWxsTWlj
cm90YXNrc0JyZWFrcG9pbnQudmFsdWU7Ci0KKyAgICAgICAgaWYgKFdJLkphdmFTY3JpcHRCcmVh
a3BvaW50LnN1cHBvcnRzTWljcm90YXNrcygpKSB7CiAgICAgICAgICAgICBjb250ZXh0TWVudS5h
cHBlbmRDaGVja2JveEl0ZW0oV0kucmVwZWF0ZWRVSVN0cmluZy5hbGxNaWNyb3Rhc2tzKCksICgp
ID0+IHsKLSAgICAgICAgICAgICAgICBpZiAoYWxsTWljcm90YXNrc0JyZWFrcG9pbnRTaG93bikK
LSAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnQo
V0kuZGVidWdnZXJNYW5hZ2VyLmFsbE1pY3JvdGFza3NCcmVha3BvaW50KTsKLSAgICAgICAgICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFsbE1p
Y3JvdGFza3NCcmVha3BvaW50LmRpc2FibGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAg
IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxN
aWNyb3Rhc2tzQnJlYWtwb2ludCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwg
YWxsTWljcm90YXNrc0JyZWFrcG9pbnRTaG93bik7CisgICAgICAgICAgICAgICAgaWYgKFdJLmRl
YnVnZ2VyTWFuYWdlci5hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludCkKKyAgICAgICAgICAgICAgICAg
ICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFsbE1pY3JvdGFza3NCcmVha3BvaW50LnJlbW92ZSgpOwor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5h
Z2VyLmNyZWF0ZUFsbE1pY3JvdGFza3NCcmVha3BvaW50KCk7CisgICAgICAgICAgICB9LCBXSS5k
ZWJ1Z2dlck1hbmFnZXIuYWxsTWljcm90YXNrc0JyZWFrcG9pbnQpOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5zdXBwb3J0c0V2ZW50QnJlYWtwb2ludHMo
KSB8fCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNFdmVudExpc3RlbmVyQnJlYWtwb2lu
dHMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDkwZjIyZjEyOWMyLi5hODNl
ZmFjZWQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDIwLTA4LTI4ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBhbGxvdyBzcGVjaWFsIEphdmFTY3JpcHQgYnJlYWtwb2ludHMgdG8gYmUg
Y29uZmlndXJlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE1Nzk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tOgorICAgICAgICAoV2ViU2NyaXB0RGVi
dWdnZXI6OldlYlNjcmlwdERlYnVnZ2VyKToKKwogMjAyMC0wOC0yOCAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGFsbW9zdCBhbGwgdGhlIHJlbWFpbmlu
ZyB1c2VzIG9mIGxpdmUgcmFuZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQppbmRleCBiZDliMTE4NGM4NC4uYjg0YzczNzAx
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0
RGVidWdnZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3Jp
cHREZWJ1Z2dlci5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiV2ViRnJhbWVJbnRlcm5h
bC5oIgogI2ltcG9ydCAiV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV2ViVmll
d0ludGVybmFsLmgiCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9CcmVha3BvaW50Lmg+CiAjaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9EZWJ1Z2dlckNhbGxGcmFtZS5oPgogI2ltcG9ydCA8SmF2YVNj
cmlwdENvcmUvSlNHbG9iYWxPYmplY3QuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1NvdXJj
ZVByb3ZpZGVyLmg+CkBAIC02NSw3ICs2Niw3IEBAIFdlYlNjcmlwdERlYnVnZ2VyOjpXZWJTY3Jp
cHREZWJ1Z2dlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgLCBtX2Nh
bGxpbmdEZWxlZ2F0ZShmYWxzZSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdC0+
dm0oKSwgZ2xvYmFsT2JqZWN0KQogewotICAgIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoUGF1
c2VPbkFsbEV4Y2VwdGlvbnMpOworICAgIHNldFBhdXNlT25BbGxFeGNlcHRpb25zQnJlYWtwb2lu
dChKU0M6OkJyZWFrcG9pbnQ6OmNyZWF0ZShKU0M6Om5vQnJlYWtwb2ludElEKSk7CiAgICAgZGVh
Y3RpdmF0ZUJyZWFrcG9pbnRzKCk7CiAgICAgYXR0YWNoKGdsb2JhbE9iamVjdCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407846</attachid>
            <date>2020-09-02 18:31:29 -0700</date>
            <delta_ts>2020-09-02 23:45:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215794-20200902183129.patch</filename>
            <type>text/plain</type>
            <size>129990</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGVjODEwZTgwZTg3MTJhZGE4OTEyMTJmODMyZGYw
Y2ZjMjQ1MmY4MzMuLjQ3YTE3NjZhMzNkYjlkMWFiNjgwNTFjMThhMzg3NDIxYjBmMTg0OTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDIwLTA5LTAyICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBh
bGxvdyBzcGVjaWFsIEphdmFTY3JpcHQgYnJlYWtwb2ludHMgdG8gYmUgY29uZmlndXJlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1Nzk0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cHJvdG9jb2wvRGVidWdnZXIuanNvbjoKKyAgICAgICAgQWRkIGFuIGBvcHRpb25zYCBwYXJhbWF0
ZXIgdG8gdGhlIGZvbGxvd2luZyBjb21tYW5kcyBmb3IgY29uZmlndXJpbmcgdGhlIHJlbGF0ZWQg
YnJlYWtwb2ludDoKKyAgICAgICAgIC0gYERlYnVnZ2VyLnNldFBhdXNlT25EZWJ1Z2dlclN0YXRl
bWVudHNgCisgICAgICAgICAtIGBEZWJ1Z2dlci5zZXRQYXVzZU9uRXhjZXB0aW9uc2AKKyAgICAg
ICAgIC0gYERlYnVnZ2VyLnNldFBhdXNlT25Bc3NlcnRpb25zYAorICAgICAgICAgLSBgRGVidWdn
ZXIuc2V0UGF1c2VPbk1pY3JvdGFza3NgCisKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5o
OgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6bmVlZHNFeGNlcHRpb25DYWxsYmFja3MgY29uc3Qp
OgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cGF1c2VPbkFsbEV4Y2VwdGlvbnNCcmVha3BvaW50
IGNvbnN0KTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpzZXRQYXVzZU9uQWxsRXhj
ZXB0aW9uc0JyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnBhdXNl
T25VbmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50IGNvbnN0KTogQWRkZWQuCisgICAgICAgIChK
U0M6OkRlYnVnZ2VyOjpzZXRQYXVzZU9uVW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludCk6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6c2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50
c0JyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnBhdXNlT25FeGNl
cHRpb25zU3RhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6c2V0
UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cyk6IERlbGV0ZWQuCisgICAgICAgICogZGVidWdnZXIv
RGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6VGVtcG9yYXJpbHlEaXNhYmxl
RXhjZXB0aW9uQnJlYWtwb2ludHM6OlRlbXBvcmFyaWx5RGlzYWJsZUV4Y2VwdGlvbkJyZWFrcG9p
bnRzKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpUZW1wb3JhcmlseURpc2FibGVF
eGNlcHRpb25CcmVha3BvaW50czo6flRlbXBvcmFyaWx5RGlzYWJsZUV4Y2VwdGlvbkJyZWFrcG9p
bnRzKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpUZW1wb3JhcmlseURpc2FibGVF
eGNlcHRpb25CcmVha3BvaW50czo6cmVwbGFjZSk6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWJ1
Z2dlcjo6VGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHM6OnJlc3RvcmUpOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OkRlYnVnZ2VyKToKKyAgICAgICAgKEpTQzo6
RGVidWdnZXI6OmJyZWFrUHJvZ3JhbSk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpleGNlcHRp
b24pOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6ZGlkUmVhY2hEZWJ1Z2dlclN0YXRlbWVudCk6
CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKTogRGVs
ZXRlZC4KKyAgICAgICAgQWRkIGBKU0M6OkJyZWFrcG9pbnRgIG1lbWJlciB2YXJpYWJsZXMgZm9y
IHRoZSBEZWJ1Z2dlciBTdGF0ZW1lbnRzIGFuZCBFeGNlcHRpb25zCisgICAgICAgIGJyZWFrcG9p
bnRzLiBTcGxpdCB0aGUgRXhjZXB0aW9ucyBicmVha3BvaW50IGludG8gdHdvIGBKU0M6OkJyZWFr
cG9pbnRgIG5vdyB0aGF0CisgICAgICAgIEFsbCBFeGNlcHRpb25zIGFuZCBVbmNhdWdodCBFeGNl
cHRpb25zIGNhbiBiZSBpbmRlcGVuZGVudGx5IGNvbmZpZ3VyZWQgKHRoZSBBbGwKKyAgICAgICAg
RXhjZXB0aW9ucyBicmVha3BvaW50IHN0aWxsIHRha2VzIHByZWNlZGVuY2UpLgorCisgICAgICAg
ICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaDoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1
Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjpldmFs
dWF0ZVdpdGhTY29wZUV4dGVuc2lvbik6CisgICAgICAgIElmIHRoZXJlIGlzIG5vIGBDYWxsRnJh
bWVgLCBjbGltYiB0aGUgYmFja3RyYWNlIHVudGlsIHRoZSBmaXJzdCB2YWxpZCBgQ2FsbEZyYW1l
YCBpcyByZWFjaGVkLgorICAgICAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHBhdXNpbmcgaW4gbmF0
aXZlIGNvZGUsIHN1Y2ggYXMgZm9yIGFzc2VydGlvbnMvZXhjZXB0aW9ucy4KKworICAgICAgICAq
IGRlYnVnZ2VyL0JyZWFrcG9pbnQuaDoKKyAgICAgICAgRXhwb3J0IGBKU0M6OkJyZWFrcG9pbnQ6
OmNyZWF0ZWAgc28gdGhhdCBvdGhlciBwYXJ0cyBvZiBXZWJLaXQgY2FuIGNyZWF0ZSBicmVha3Bv
aW50cy4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUp
OgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpoYW5kbGVDb25z
b2xlQXNzZXJ0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
c2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25FeGNlcHRpb25zKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0UGF1c2VPbkFzc2VydGlvbnMpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVzZU9uTWljcm90
YXNrcyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmV2YWx1
YXRlT25DYWxsRnJhbWUpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpzY3JpcHRFeGVjdXRpb25CbG9ja2VkQnlDU1ApOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojp3aWxsUnVuTWljcm90YXNrKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUnVuTWljcm90YXNrKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtQcm9ncmFtKToKKyAgICAg
ICAgQWRkIGBKU0M6OkJyZWFrcG9pbnRgIG1lbWJlciB2YXJpYWJsZXMgZm9yIHRoZSBBc3NlcnRp
b24gRmFpbHVyZXMgYW5kIEFsbCBNaWNyb3Rhc2tzCisgICAgICAgIGJyZWFrcG9pbnRzLiBQYXNz
IHRoZW0gdG8gdGhlIGBKU0M6OkRlYnVnZ2VyYCB3aGVuIHRoZXkgYXJlIGhpdC4KKworICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHA6CisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvckF1ZGl0QWdlbnQ6OnJ1bik6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yUnVudGltZUFnZW50OjpjYWxsRnVuY3Rpb25Pbik6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJldmlldyk6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAgIChJbnNwZWN0
b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk6IERlbGV0ZWQuCisg
ICAgICAgIFVzZSBgVGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHNgIHRvIHNh
dmUsIG92ZXJyaWRlLCBhbmQgcmVzdG9yZSB0aGUgZXhjZXB0aW9ucworICAgICAgICBicmVha3Bv
aW50cyBub3cgdGhhdCB0aGV5J3ZlIGJlZW4gc2VwYXJhdGVkIGludG8gdHdvIGBKU0M6OkJyZWFr
cG9pbnRgIGluc3RlYWQgb2YgYW4gYGVudW1gLgorCiAyMDIwLTA5LTAxICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgU2tpcCBmYXN0L2Nzcy1jdXN0b20tcGFp
bnQvb3V0LW9mLW1lbW9yeS13aGlsZS1hZGRpbmctd29ya2xldC1tb2R1bGUuaHRtbCBpZiBHaWdh
Y2FnZSBpcyBub3QgZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggYzk2N2I3ZTk2
NTkyOTZjYzEyZWJlMTJhMTYxMDJhNmI2OGY5OWVlNi4uMzE5MzJjZDBjMjY3Y2Y0ZjhjMGMwYjQy
MDdhM2FiZjdmYzJhNmIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODYg
QEAKKzIwMjAtMDktMDIgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IGFsbG93IHNwZWNpYWwgSmF2YVNjcmlwdCBicmVha3BvaW50cyB0
byBiZSBjb25maWd1cmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTU3OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnQuanM6CisgICAgICAgIChX
SS5CcmVha3BvaW50LnByb3RvdHlwZS5yZXNldCk6IEFkZGVkLgorICAgICAgICBQcm92aWRlIGEg
d2F5IHRvIGNvbnNpc3RlbnRseSBjbGVhciB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvSmF2YVNjcmlwdEJyZWFrcG9pbnQuanM6Cisg
ICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5zdXBwb3J0c01pY3JvdGFza3MpOiBBZGRl
ZC4KKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnN1cHBvcnRzRGVidWdnZXJTdGF0
ZW1lbnRzKTogQWRkZWQuCisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5mcm9tSlNP
Tik6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUudG9KU09OKToK
KyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlwZS5nZXQgZWRpdGFibGUp
OgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLl9pc1NwZWNpYWwp
OgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlQ29kZUxvY2F0aW9uLmpz
OgorICAgICAgICAoV0kuU291cmNlQ29kZUxvY2F0aW9uLmdldCBzcGVjaWFsQnJlYWtwb2ludExv
Y2F0aW9uKTogQWRkZWQuCisgICAgICAgIEFkZCBhIGhlbHBlciBmb3IgdGhlIHNwZWNpYWwgYG51
bGw6SW5maW5pdHk6SW5maW5pdHlgIGJyZWFrcG9pbnQgbG9jYXRpb24gZm9yIGNvbnNpc3RlbmN5
LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dlck1hbmFnZXIu
anM6CisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIpOgorICAgICAgICAoV0kuRGVidWdnZXJN
YW5hZ2VyLnByb3RvdHlwZS5hc3luYyBpbml0aWFsaXplVGFyZ2V0KToKKyAgICAgICAgKFdJLkRl
YnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuY3JlYXRlQXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50
KTogQWRkZWQuCisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmNyZWF0ZUFs
bE1pY3JvdGFza3NCcmVha3BvaW50KTogQWRkZWQuCisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFn
ZXIucHJvdG90eXBlLnNldCBicmVha3BvaW50c0VuYWJsZWQpOgorICAgICAgICAoV0kuRGVidWdn
ZXJNYW5hZ2VyLnByb3RvdHlwZS5hZGRCcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRlYnVnZ2Vy
TWFuYWdlci5wcm90b3R5cGUucmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAgIChXSS5EZWJ1Z2dl
ck1hbmFnZXIucHJvdG90eXBlLl9zZXRQYXVzZU9uRXhjZXB0aW9ucyk6IEFkZGVkLgorICAgICAg
ICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fY3JlYXRlU3BlY2lhbEJyZWFrcG9pbnQp
OiBBZGRlZC4KKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3VwZGF0ZVNw
ZWNpYWxCcmVha3BvaW50KTogQWRkZWQuCisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJv
dG90eXBlLl9icmVha3BvaW50RGlzYWJsZWRTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXSS5E
ZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9icmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eURpZENo
YW5nZSk6CisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl91cGRhdGVCcmVh
a09uRXhjZXB0aW9uc1N0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgTWFpbnRhaW4gYSBgV0kuU2V0
dGluZ2AgZm9yIHRoZSBjb25maWd1cmF0aW9uIG9mIGVhY2ggc3BlY2lhbCBgV0kuSmF2YVNjcmlw
dEJyZWFrcG9pbnRgLgorICAgICAgICBIYXZlIGEgY29tbW9uIHBhdGggZm9yIHVwZGF0aW5nIGFs
bCBzcGVjaWFsIGBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludGAgdG8gYXZvaWQgZHVwbGljYXRlZAor
ICAgICAgICBjb2RlLgorICAgICAgICBBZGQgbWV0aG9kcyBmb3IgY3JlYXRpbmcgdGhlIEFzc2Vy
dGlvbiBGYWlsdXJlcyBhbmQgQWxsIE1pY3JvdGFza3MgYFdJLkphdmFTY3JpcHRCcmVha3BvaW50
YAorICAgICAgICBzaW5jZSB0aGV5IGNhbiBiZSByZW1vdmVkIChpbiBhZGRpdGlvbiB0byBiZWlu
ZyBkaXNhYmxlZCkgYW5kIHJlLWFkZGVkLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9CcmVha3BvaW50UG9wb3Zlci5qczoKKyAgICAgICAgKFdJLkJyZWFrcG9pbnRQb3BvdmVyLmFw
cGVuZENvbnRleHRNZW51SXRlbXMpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQnJl
YWtwb2ludFRyZWVFbGVtZW50LmpzOgorICAgICAgICAoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50
LnByb3RvdHlwZS5vbmRlbGV0ZSk6CisgICAgICAgIElmIHRoZSBgV0kuQnJlYWtwb2ludGAgaXMg
bm90IHJlbW92YWJsZSwgbWFrZSBzdXJlIHRvIGByZXNldGAgaXQgaW4gYWRkaXRpb24gdG8gZGlz
YWJsaW5nCisgICAgICAgIGl0IHNvIHRoYXQgbm8gY29uZmlndXJhdGlvbiBwZXJzaXN0cyBpZiB0
aGUgYFdJLkJyZWFrcG9pbnRgIGlzIGxhdGVyIGVuYWJsZWQuCisKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL1NvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAo
V0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwpOgorICAgICAgICAoV0kuU291cmNlc05h
dmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl9oYW5kbGVCcmVha3BvaW50VHJlZU91dGxp
bmVFbGVtZW50UmVtb3ZlZCk6IEFkZGVkLgorICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25T
aWRlYmFyUGFuZWwucHJvdG90eXBlLl9oYW5kbGVCcmVha3BvaW50RWxlbWVudEFkZGVkT3JSZW1v
dmVkKTogRGVsZXRlZC4KKyAgICAgICAgRWxpbWluYXRlIHRoZSBuZWVkIHRvIGxpc3RlbiBmb3Ig
d2hlbiBicmVha3BvaW50cyBhcmUgYWRkZWQgdG8gdGhlIGBXSS5UcmVlT3V0bGluZWAsIHdoaWNo
CisgICAgICAgIHdhcyBwcmV2aW91c2x5IHVzZWQgdG8gdXBkYXRlIHRoZSBgV0kuU2V0dGluZ2Ag
Zm9yIHdoZXRoZXIgc3BlY2lhbCBgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRgCisgICAgICAgIGFy
ZSB2aXNpYmxlLgorICAgICAgICBEb24ndCBhc3N1bWUgdGhhdCBhIGBXSS5CcmVha3BvaW50YCBl
eGlzdHMgZm9yIGVhY2ggc3BlY2lhbCBgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRgLgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanM6CisgICAgICAgIChXSS5TZXR0aW5n
KToKKyAgICAgICAgKFdJLlNldHRpbmcubWlncmF0ZVZhbHVlKToKKyAgICAgICAgKFdJLlNldHRp
bmcucmVzZXQpOgorICAgICAgICAoV0kuU2V0dGluZy5wcm90b3R5cGUuZ2V0IHZhbHVlKToKKyAg
ICAgICAgKFdJLlNldHRpbmcucHJvdG90eXBlLnNhdmUpOgorICAgICAgICAoV0kuU2V0dGluZy5f
bG9jYWxTdG9yYWdlS2V5UHJlZml4KTogQWRkZWQuCisgICAgICAgIChXSS5TZXR0aW5nLl9sb2Nh
bFN0b3JhZ2VLZXkpOiBEZWxldGVkLgorICAgICAgICBFYWdlcmx5IGNvbXB1dGUgdGhlIGtleSBw
cmVmaXggYXMgaXQgc2hvdWxkbid0IGNoYW5nZSB0aHJvdWdoIHRoZSBsaWZldGltZSBvZiBXZWIg
SW5zcGVjdG9yCisgICAgICAgIGFuZCBpcyB1c2VkIGVhcmx5IG9uIHRvby4KKyAgICAgICAgQWRk
IGEgc3RhdGljIG1lbWJlciBgaXNGaXJzdExhdW5jaGAgd2hpY2ggY2FuIGJlIHVzZWQgYnkgb3Ro
ZXIgYFdJLlNldHRpbmdgIHRvIGFkanVzdCB0aGVpcgorICAgICAgICB2YWx1ZSB3aGVuIFdlYiBJ
bnNwZWN0b3IgaXMgaW4gYSBjbGVhbiBzdGF0ZSAoZS5nLiBzaG93IHRoZSBBc3NlcnRpb24gRmFp
bHVyZXMgYnJlYWtwb2ludCBieQorICAgICAgICBkZWZhdWx0LCBidXQgb25seSBmb3IgdGhlIGZp
cnN0IGxhdW5jaCkuIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgYFdJLlNldHRpbmdgIGNsZWFycyB0
aGUga2V5CisgICAgICAgIGZyb20gYGxvY2FsU3RvcmFnZWAgaWYgdGhlIGN1cnJlbnQgYHZhbHVl
YCBtYXRjaGVzIHRoZSBgX2RlZmF1bHRWYWx1ZWAuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L01vZGVscy9Qcm9iZVNldC5qczoKKyAgICAgICAgKFdJLlByb2JlU2V0KToKKyAgICAgICAgKFdJ
LlByb2JlU2V0LnByb3RvdHlwZS53aWxsUmVtb3ZlKToKKyAgICAgICAgKFdJLlByb2JlU2V0LnBy
b3RvdHlwZS5fc2FtcGxlQ29sbGVjdGVkKToKKyAgICAgICAgKFdJLlByb2JlU2V0LnByb3RvdHlw
ZS5fYnJlYWtwb2ludFJlc29sdmVkU3RhdGVEaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICBE
cml2ZS1ieTogcmVtb3ZlIGFuIHVudXNlZCBldmVudC4KKworICAgICAgICAqIExvY2FsaXphdGlv
bnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczoKKwogMjAyMC0wOS0wMiAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWxsb3cg
ZXZlbnQgYnJlYWtwb2ludHMgdG8gYmUgY29uZmlndXJlZCB3aGVuIHRoZXkncmUgYWRkZWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBjZDU1ZDJkYTBhZWE2YjNhYWU0MGUzZjUzNzg4
NTYzOTllOWE1NjNlLi45ZWFlZjE4OWVlMDQzNzMwMzYxYmRkNTUyYmIxMTI0MmYwMDA3YTgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDktMDIg
IERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGFsbG93IHNwZWNpYWwgSmF2YVNjcmlwdCBicmVha3BvaW50cyB0byBiZSBjb25maWd1cmVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU3OTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZp
ZXcvV2ViU2NyaXB0RGVidWdnZXIubW06CisgICAgICAgIChXZWJTY3JpcHREZWJ1Z2dlcjo6V2Vi
U2NyaXB0RGVidWdnZXIpOgorCiAyMDIwLTA4LTMxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxl
LmNvbT4KIAogICAgICAgICBNYW55IHNldHRpbmdzIGluIFJ1bnRpbWVFbmFibGVkU2V0dGluZ3Mg
c2hvdWxkIGF1dG9nZW5lcmF0ZWQgU2V0dGluZ3M6IFBhcnQgMQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0JyZWFrcG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9CcmVha3BvaW50LmgKaW5kZXggMWZhZmIzMDNjZjhkMmU0ZDg4MzAyNDAz
MmQ5ZTFhZmMwY2Y2NzAwNC4uZDFlZjZjYWQ4MzI3NWZiNTZjYjNiY2RmMTZlMjM4YWJmYzE4YjNl
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0JyZWFrcG9pbnQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvQnJlYWtwb2ludC5oCkBAIC01
OSw3ICs1OSw3IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIEFjdGlvbnNWZWN0b3IgPSBWZWN0b3I8
QWN0aW9uPjsKIAotICAgIHN0YXRpYyBSZWY8QnJlYWtwb2ludD4gY3JlYXRlKEJyZWFrcG9pbnRJ
RCwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24gPSBudWxsU3RyaW5nKCksIEFjdGlvbnNWZWN0b3Im
JiA9IHsgfSwgYm9vbCBhdXRvQ29udGludWUgPSBmYWxzZSwgc2l6ZV90IGlnbm9yZUNvdW50ID0g
MCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxCcmVha3BvaW50PiBjcmVhdGUo
QnJlYWtwb2ludElELCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiA9IG51bGxTdHJpbmcoKSwgQWN0
aW9uc1ZlY3RvciYmID0geyB9LCBib29sIGF1dG9Db250aW51ZSA9IGZhbHNlLCBzaXplX3QgaWdu
b3JlQ291bnQgPSAwKTsKIAogICAgIEJyZWFrcG9pbnRJRCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKaW5k
ZXggYzRiZmExYTc3MTM0NjQ3YWQwYzMxZTc1MTY4NzM5YTM5MDdhNzlmNS4uOWM3YmM5ZTVhOWE3
NzllNjhhMThhNTQ3ODlkMzg5ZDMxYzQxOWNmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXIuY3BwCkBAIC03Nyw2ICs3NywzNCBAQCBwcml2YXRlOgogICAgIERl
YnVnZ2VyJiBtX2RlYnVnZ2VyOwogfTsKIAorRGVidWdnZXI6OlRlbXBvcmFyaWx5RGlzYWJsZUV4
Y2VwdGlvbkJyZWFrcG9pbnRzOjpUZW1wb3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50
cyhEZWJ1Z2dlciYgZGVidWdnZXIpCisgICAgOiBtX2RlYnVnZ2VyKGRlYnVnZ2VyKQoreworfQor
CitEZWJ1Z2dlcjo6VGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHM6On5UZW1w
b3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50cygpCit7CisgICAgcmVzdG9yZSgpOwor
fQorCit2b2lkIERlYnVnZ2VyOjpUZW1wb3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50
czo6cmVwbGFjZSgpCit7CisgICAgaWYgKG1fZGVidWdnZXIubV9wYXVzZU9uQWxsRXhjZXB0aW9u
c0JyZWFrcG9pbnQpCisgICAgICAgIG1fcGF1c2VPbkFsbEV4Y2VwdGlvbnNCcmVha3BvaW50ID0g
V1RGTW92ZShtX2RlYnVnZ2VyLm1fcGF1c2VPbkFsbEV4Y2VwdGlvbnNCcmVha3BvaW50KTsKKwor
ICAgIGlmIChtX2RlYnVnZ2VyLm1fcGF1c2VPblVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQp
CisgICAgICAgIG1fcGF1c2VPblVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBXVEZNb3Zl
KG1fZGVidWdnZXIubV9wYXVzZU9uVW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludCk7Cit9CisK
K3ZvaWQgRGVidWdnZXI6OlRlbXBvcmFyaWx5RGlzYWJsZUV4Y2VwdGlvbkJyZWFrcG9pbnRzOjpy
ZXN0b3JlKCkKK3sKKyAgICBpZiAobV9wYXVzZU9uQWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQpCisg
ICAgICAgIG1fZGVidWdnZXIubV9wYXVzZU9uQWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBXVEZN
b3ZlKG1fcGF1c2VPbkFsbEV4Y2VwdGlvbnNCcmVha3BvaW50KTsKKworICAgIGlmIChtX3BhdXNl
T25VbmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50KQorICAgICAgICBtX2RlYnVnZ2VyLm1fcGF1
c2VPblVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBXVEZNb3ZlKG1fcGF1c2VPblVuY2F1
Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQpOworfQorCiAKIERlYnVnZ2VyOjpQcm9maWxpbmdDbGll
bnQ6On5Qcm9maWxpbmdDbGllbnQoKQogewpAQCAtODQsNyArMTEyLDYgQEAgRGVidWdnZXI6OlBy
b2ZpbGluZ0NsaWVudDo6flByb2ZpbGluZ0NsaWVudCgpCiAKIERlYnVnZ2VyOjpEZWJ1Z2dlcihW
TSYgdm0pCiAgICAgOiBtX3ZtKHZtKQotICAgICwgbV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKERv
bnRQYXVzZU9uRXhjZXB0aW9ucykKICAgICAsIG1fcGF1c2VBdE5leHRPcHBvcnR1bml0eShmYWxz
ZSkKICAgICAsIG1fcGFzdEZpcnN0RXhwcmVzc2lvbkluU3RhdGVtZW50KGZhbHNlKQogICAgICwg
bV9pc1BhdXNlZChmYWxzZSkKQEAgLTY4OCwxMSArNzE1LDYgQEAgdm9pZCBEZWJ1Z2dlcjo6c2V0
QnJlYWtwb2ludHNBY3RpdmF0ZWQoYm9vbCBhY3RpdmF0ZWQpCiAgICAgcmVjb21waWxlQWxsSlNG
dW5jdGlvbnMoKTsKIH0KIAotdm9pZCBEZWJ1Z2dlcjo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZShQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHBhdXNlKQotewotICAgIG1fcGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZSA9IHBhdXNlOwotfQotCiB2b2lkIERlYnVnZ2VyOjpzY2hlZHVsZVBhdXNlQXROZXh0
T3Bwb3J0dW5pdHkoKQogewogICAgIG1fcGF1c2VBdE5leHRPcHBvcnR1bml0eSA9IHRydWU7CkBA
IC03MjQsNyArNzQ2LDcgQEAgYm9vbCBEZWJ1Z2dlcjo6Y2FuY2VsUGF1c2VGb3JTcGVjaWFsQnJl
YWtwb2ludChCcmVha3BvaW50JiBicmVha3BvaW50KQogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIERlYnVnZ2VyOjpicmVha1Byb2dyYW0oKQordm9pZCBEZWJ1Z2dlcjo6YnJlYWtQcm9ncmFt
KFJlZlB0cjxCcmVha3BvaW50PiYmIHNwZWNpYWxCcmVha3BvaW50KQogewogICAgIGlmIChtX2lz
UGF1c2VkKQogICAgICAgICByZXR1cm47CkBAIC03MzIsNyArNzU0LDEyIEBAIHZvaWQgRGVidWdn
ZXI6OmJyZWFrUHJvZ3JhbSgpCiAgICAgaWYgKCFtX3ZtLnRvcENhbGxGcmFtZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9wYXVzZUF0TmV4dE9wcG9ydHVuaXR5ID0gdHJ1ZTsKKyAgICBpZiAo
c3BlY2lhbEJyZWFrcG9pbnQpIHsKKyAgICAgICAgQVNTRVJUKCFtX3NwZWNpYWxCcmVha3BvaW50
KTsKKyAgICAgICAgbV9zcGVjaWFsQnJlYWtwb2ludCA9IFdURk1vdmUoc3BlY2lhbEJyZWFrcG9p
bnQpOworICAgIH0gZWxzZQorICAgICAgICBtX3BhdXNlQXROZXh0T3Bwb3J0dW5pdHkgPSB0cnVl
OworCiAgICAgc2V0U3RlcHBpbmdNb2RlKFN0ZXBwaW5nTW9kZUVuYWJsZWQpOwogICAgIG1fY3Vy
cmVudENhbGxGcmFtZSA9IG1fdm0udG9wQ2FsbEZyYW1lOwogICAgIHBhdXNlSWZOZWVkZWQobV9j
dXJyZW50Q2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KG1fdm0pKTsKQEAgLTk4MCw4ICsx
MDA3LDggQEAgdm9pZCBEZWJ1Z2dlcjo6ZXhjZXB0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1YKICAgICB9CiAKICAgICBQYXVzZVJlYXNv
bkRlY2xhcmF0aW9uIHJlYXNvbigqdGhpcywgUGF1c2VkRm9yRXhjZXB0aW9uKTsKLSAgICBpZiAo
bV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlID09IFBhdXNlT25BbGxFeGNlcHRpb25zIHx8IChtX3Bh
dXNlT25FeGNlcHRpb25zU3RhdGUgPT0gUGF1c2VPblVuY2F1Z2h0RXhjZXB0aW9ucyAmJiAhaGFz
Q2F0Y2hIYW5kbGVyKSkgewotICAgICAgICBtX3BhdXNlQXROZXh0T3Bwb3J0dW5pdHkgPSB0cnVl
OworICAgIGlmIChtX3BhdXNlT25BbGxFeGNlcHRpb25zQnJlYWtwb2ludCB8fCAobV9wYXVzZU9u
VW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludCAmJiAhaGFzQ2F0Y2hIYW5kbGVyKSkgeworICAg
ICAgICBtX3NwZWNpYWxCcmVha3BvaW50ID0gbV9wYXVzZU9uQWxsRXhjZXB0aW9uc0JyZWFrcG9p
bnQgPyBtX3BhdXNlT25BbGxFeGNlcHRpb25zQnJlYWtwb2ludC5jb3B5UmVmKCkgOiBtX3BhdXNl
T25VbmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50LmNvcHlSZWYoKTsKICAgICAgICAgc2V0U3Rl
cHBpbmdNb2RlKFN0ZXBwaW5nTW9kZUVuYWJsZWQpOwogICAgIH0KIApAQCAtMTEzMiwxMSArMTE1
OSwxMSBAQCB2b2lkIERlYnVnZ2VyOjpkaWRSZWFjaERlYnVnZ2VyU3RhdGVtZW50KENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogICAgIGlmIChtX2lzUGF1c2VkKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoIW1fcGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cykKKyAgICBpZiAoIW1fcGF1c2VPbkRl
YnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9pbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIFBhdXNl
UmVhc29uRGVjbGFyYXRpb24gcmVhc29uKCp0aGlzLCBQYXVzZWRGb3JEZWJ1Z2dlclN0YXRlbWVu
dCk7Ci0gICAgbV9wYXVzZUF0TmV4dE9wcG9ydHVuaXR5ID0gdHJ1ZTsKKyAgICBtX3NwZWNpYWxC
cmVha3BvaW50ID0gbV9wYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludC5jb3B5UmVm
KCk7CiAgICAgc2V0U3RlcHBpbmdNb2RlKFN0ZXBwaW5nTW9kZUVuYWJsZWQpOwogICAgIHVwZGF0
ZUNhbGxGcmFtZShsZXhpY2FsR2xvYmFsT2JqZWN0Rm9yQ2FsbEZyYW1lKG1fdm0sIGNhbGxGcmFt
ZSksIGNhbGxGcmFtZSwgQXR0ZW1wdFBhdXNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyLmgKaW5kZXggY2M5NWU3YzY0YjkwNTJkOTM3MzEyMTE1Nzg5NjJmMWMx
YmM2YTg2My4uN2VhZWQ4MTY2NTUzNmQ3MzllNjg5NWU4NjY3N2VjMWI1NzQ4NWQxZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAg
cHVibGljOgogCiAgICAgVk0mIHZtKCkgeyByZXR1cm4gbV92bTsgfQogCi0gICAgYm9vbCBuZWVk
c0V4Y2VwdGlvbkNhbGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fYnJlYWtwb2ludHNBY3RpdmF0
ZWQgJiYgbV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlICE9IERvbnRQYXVzZU9uRXhjZXB0aW9uczsg
fQorICAgIGJvb2wgbmVlZHNFeGNlcHRpb25DYWxsYmFja3MoKSBjb25zdCB7IHJldHVybiBtX2Jy
ZWFrcG9pbnRzQWN0aXZhdGVkICYmIChtX3BhdXNlT25BbGxFeGNlcHRpb25zQnJlYWtwb2ludCB8
fCBtX3BhdXNlT25VbmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50KTsgfQogICAgIGJvb2wgaXNJ
bnRlcmFjdGl2ZWx5RGVidWdnaW5nKCkgY29uc3QgeyByZXR1cm4gbV9icmVha3BvaW50c0FjdGl2
YXRlZDsgfQogCiAgICAgZW51bSBSZWFzb25Gb3JEZXRhY2ggewpAQCAtNzAsMTUgKzcwLDIzIEBA
IHB1YmxpYzoKICAgICBib29sIGV2YWx1YXRlQnJlYWtwb2ludENvbmRpdGlvbihCcmVha3BvaW50
JiwgSlNHbG9iYWxPYmplY3QqKTsKICAgICB2b2lkIGV2YWx1YXRlQnJlYWtwb2ludEFjdGlvbnMo
QnJlYWtwb2ludCYsIEpTR2xvYmFsT2JqZWN0Kik7CiAKLSAgICBlbnVtIFBhdXNlT25FeGNlcHRp
b25zU3RhdGUgewotICAgICAgICBEb250UGF1c2VPbkV4Y2VwdGlvbnMsCi0gICAgICAgIFBhdXNl
T25BbGxFeGNlcHRpb25zLAotICAgICAgICBQYXVzZU9uVW5jYXVnaHRFeGNlcHRpb25zCi0gICAg
fTsKLSAgICBQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHBhdXNlT25FeGNlcHRpb25zU3RhdGUoKSBj
b25zdCB7IHJldHVybiBtX3BhdXNlT25FeGNlcHRpb25zU3RhdGU7IH0KLSAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoUGF1c2VPbkV4Y2VwdGlvbnNT
dGF0ZSk7CisgICAgdm9pZCBzZXRQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludChS
ZWZQdHI8QnJlYWtwb2ludD4mJiBicmVha3BvaW50KSB7IG1fcGF1c2VPbkRlYnVnZ2VyU3RhdGVt
ZW50c0JyZWFrcG9pbnQgPSBXVEZNb3ZlKGJyZWFrcG9pbnQpOyB9CiAKLSAgICB2b2lkIHNldFBh
dXNlT25EZWJ1Z2dlclN0YXRlbWVudHMoYm9vbCBlbmFibGVkKSB7IG1fcGF1c2VPbkRlYnVnZ2Vy
U3RhdGVtZW50cyA9IGVuYWJsZWQ7IH0KKyAgICBjbGFzcyBUZW1wb3JhcmlseURpc2FibGVFeGNl
cHRpb25CcmVha3BvaW50cyB7CisgICAgcHVibGljOgorICAgICAgICBUZW1wb3JhcmlseURpc2Fi
bGVFeGNlcHRpb25CcmVha3BvaW50cyhEZWJ1Z2dlciYpOworICAgICAgICB+VGVtcG9yYXJpbHlE
aXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHMoKTsKKworICAgICAgICB2b2lkIHJlcGxhY2UoKTsK
KyAgICAgICAgdm9pZCByZXN0b3JlKCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBEZWJ1Z2dl
ciYgbV9kZWJ1Z2dlcjsKKyAgICAgICAgUmVmUHRyPEJyZWFrcG9pbnQ+IG1fcGF1c2VPbkFsbEV4
Y2VwdGlvbnNCcmVha3BvaW50OworICAgICAgICBSZWZQdHI8QnJlYWtwb2ludD4gbV9wYXVzZU9u
VW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludDsKKyAgICB9OworICAgIHZvaWQgc2V0UGF1c2VP
bkFsbEV4Y2VwdGlvbnNCcmVha3BvaW50KFJlZlB0cjxCcmVha3BvaW50PiYmIGJyZWFrcG9pbnQp
IHsgbV9wYXVzZU9uQWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBXVEZNb3ZlKGJyZWFrcG9pbnQp
OyB9CisgICAgdm9pZCBzZXRQYXVzZU9uVW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludChSZWZQ
dHI8QnJlYWtwb2ludD4mJiBicmVha3BvaW50KSB7IG1fcGF1c2VPblVuY2F1Z2h0RXhjZXB0aW9u
c0JyZWFrcG9pbnQgPSBXVEZNb3ZlKGJyZWFrcG9pbnQpOyB9CiAKICAgICBlbnVtIFJlYXNvbkZv
clBhdXNlIHsKICAgICAgICAgTm90UGF1c2VkLApAQCAtOTgsNyArMTA2LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgY2FuY2VsUGF1c2VBdE5leHRPcHBvcnR1bml0eSgpOwogICAgIGJvb2wgc2NoZWR1
bGVQYXVzZUZvclNwZWNpYWxCcmVha3BvaW50KEJyZWFrcG9pbnQmKTsKICAgICBib29sIGNhbmNl
bFBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoQnJlYWtwb2ludCYpOwotICAgIHZvaWQgYnJlYWtQ
cm9ncmFtKCk7CisgICAgdm9pZCBicmVha1Byb2dyYW0oUmVmUHRyPEJyZWFrcG9pbnQ+JiYgc3Bl
Y2lhbEJyZWFrcG9pbnQgPSBudWxscHRyKTsKICAgICB2b2lkIGNvbnRpbnVlUHJvZ3JhbSgpOwog
ICAgIHZvaWQgc3RlcE5leHRFeHByZXNzaW9uKCk7CiAgICAgdm9pZCBzdGVwSW50b1N0YXRlbWVu
dCgpOwpAQCAtMjgxLDggKzI4OSw2IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTb3VyY2VJRCwg
RGVidWdnZXJQYXJzZURhdGEsIFdURjo6SW50SGFzaDxTb3VyY2VJRD4sIFdURjo6VW5zaWduZWRX
aXRoWmVyb0tleUhhc2hUcmFpdHM8U291cmNlSUQ+PiBtX3BhcnNlRGF0YU1hcDsKICAgICBIYXNo
TWFwPFNvdXJjZUlELCBCbGFja2JveFR5cGUsIFdURjo6SW50SGFzaDxTb3VyY2VJRD4sIFdURjo6
VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8U291cmNlSUQ+PiBtX2JsYWNrYm94ZWRTY3Jp
cHRzOwogCi0gICAgUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBtX3BhdXNlT25FeGNlcHRpb25zU3Rh
dGU7Ci0gICAgYm9vbCBtX3BhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHMgOiAxOwogICAgIGJvb2wg
bV9wYXVzZUF0TmV4dE9wcG9ydHVuaXR5IDogMTsKICAgICBib29sIG1fcGF1c2VPblN0ZXBOZXh0
IDogMTsKICAgICBib29sIG1fcGF1c2VPblN0ZXBPdXQgOiAxOwpAQCAtMzA3LDYgKzMxMywxMCBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxCcmVha3BvaW50PiBtX3NwZWNpYWxCcmVha3BvaW50Owog
ICAgIEJyZWFrcG9pbnRJRCBtX3BhdXNpbmdCcmVha3BvaW50SUQ7CiAKKyAgICBSZWZQdHI8QnJl
YWtwb2ludD4gbV9wYXVzZU9uQWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQ7CisgICAgUmVmUHRyPEJy
ZWFrcG9pbnQ+IG1fcGF1c2VPblVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQ7CisgICAgUmVm
UHRyPEJyZWFrcG9pbnQ+IG1fcGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9pbnQ7CisK
ICAgICB1bnNpZ25lZCBtX25leHRQcm9iZVNhbXBsZUlkIHsgMSB9OwogICAgIHVuc2lnbmVkIG1f
Y3VycmVudFByb2JlQmF0Y2hJZCB7IDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKaW5kZXggYzc0N2Y5OTNhNzFhOTAy
MmE0Yjk4YjdhY2Q0ZGMxMDIwNDVjMjAyNi4uNWYyOWFkNzYzNTE2MzdkYTFhNGM4OGZlYWNkZTc5
NGIxOTg3ODVhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJDYWxsRnJhbWUuY3BwCkBAIC0yMTgsMjIgKzIxOCwzMyBAQCBKU1ZhbHVlIERlYnVn
Z2VyQ2FsbEZyYW1lOjp0aGlzVmFsdWUoVk0mIHZtKSBjb25zdAogLy8gRXZhbHVhdGUgc29tZSBK
YXZhU2NyaXB0IGNvZGUgaW4gdGhlIHNjb3BlIG9mIHRoaXMgZnJhbWUuCiBKU1ZhbHVlIERlYnVn
Z2VyQ2FsbEZyYW1lOjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHNj
cmlwdCwgSlNPYmplY3QqIHNjb3BlRXh0ZW5zaW9uT2JqZWN0LCBOYWtlZFB0cjxFeGNlcHRpb24+
JiBleGNlcHRpb24pCiB7Ci0gICAgQVNTRVJUKGlzVmFsaWQoKSk7Ci0gICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBtX3ZhbGlkTWFjaGluZUZyYW1lOwotICAgIGlmICghY2FsbEZyYW1lKQorICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gbnVsbHB0cjsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IG51bGxwdHI7CisKKyAgICBhdXRvKiBkZWJ1Z2dlckNhbGxGcmFtZSA9IHRoaXM7CisgICAg
d2hpbGUgKGRlYnVnZ2VyQ2FsbEZyYW1lKSB7CisgICAgICAgIEFTU0VSVChkZWJ1Z2dlckNhbGxG
cmFtZS0+aXNWYWxpZCgpKTsKKworICAgICAgICBjYWxsRnJhbWUgPSBkZWJ1Z2dlckNhbGxGcmFt
ZS0+bV92YWxpZE1hY2hpbmVGcmFtZTsKKyAgICAgICAgaWYgKGNhbGxGcmFtZSkgeworICAgICAg
ICAgICAgaWYgKGRlYnVnZ2VyQ2FsbEZyYW1lLT5pc1RhaWxEZWxldGVkKCkpCisgICAgICAgICAg
ICAgICAgY29kZUJsb2NrID0gZGVidWdnZXJDYWxsRnJhbWUtPm1fc2hhZG93Q2hpY2tlbkZyYW1l
LmNvZGVCbG9jazsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb2RlQmxvY2sg
PSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNhbGxG
cmFtZSAmJiBjb2RlQmxvY2spCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWJ1Z2dl
ckNhbGxGcmFtZSA9IGRlYnVnZ2VyQ2FsbEZyYW1lLT5tX2NhbGxlci5nZXQoKTsKKyAgICB9CisK
KyAgICBpZiAoIWNhbGxGcmFtZSB8fCAhY29kZUJsb2NrKQogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKIAogICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+ZGVwcmVjYXRlZFZNKCk7CiAgICAg
SlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gY2F0Y2hTY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOwotCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBudWxscHRyOwotICAg
IGlmIChpc1RhaWxEZWxldGVkKCkpCi0gICAgICAgIGNvZGVCbG9jayA9IG1fc2hhZG93Q2hpY2tl
bkZyYW1lLmNvZGVCbG9jazsKLSAgICBlbHNlCi0gICAgICAgIGNvZGVCbG9jayA9IGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCk7Ci0gICAgaWYgKCFjb2RlQmxvY2spCi0gICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogICAgIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpOwogICAgIERlYnVnZ2VyRXZhbEVuYWJsZXIgZXZhbEVuYWJs
ZXIoZ2xvYmFsT2JqZWN0LCBEZWJ1Z2dlckV2YWxFbmFibGVyOjpNb2RlOjpFdmFsT25HbG9iYWxP
YmplY3RBdERlYnVnZ2VyRW50cnkpOwpAQCAtMjYzLDggKzI3NCw3IEBAIEpTVmFsdWUgRGVidWdn
ZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBKU09iCiAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0R2xvYmFsU2NvcGVFeHRlbnNpb24o
SlNXaXRoU2NvcGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBpZ25vcmVkUHJldmlvdXNTY29w
ZSwgc2NvcGVFeHRlbnNpb25PYmplY3QpKTsKICAgICB9CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHRoaXMtPnRoaXNWYWx1ZSh2bSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB2bS5pbnRlcnBy
ZXRlci0+ZXhlY3V0ZShldmFsLCBnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgc2NvcGUoKS0+anNT
Y29wZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHZtLmludGVycHJldGVyLT5leGVjdXRlKGV2
YWwsIGdsb2JhbE9iamVjdCwgZGVidWdnZXJDYWxsRnJhbWUtPnRoaXNWYWx1ZSh2bSksIGRlYnVn
Z2VyQ2FsbEZyYW1lLT5zY29wZSgpLT5qc1Njb3BlKCkpOwogICAgIGlmIChVTkxJS0VMWShjYXRj
aFNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICBleGNlcHRpb24gPSBjYXRjaFNjb3BlLmV4
Y2VwdGlvbigpOwogICAgICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCmluZGV4
IGFjNmVjZDM0NTE4NGUzZTQxZGM4YTgxODU3YzY2MDcyYTkyZTFkYzcuLjllYzc5ZmNlOThiNDUy
ZDlkN2JkZDgzMWU5N2Q2ODAwYjNhZDBjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCkBAIC02MSw2ICs2MSw3IEBAIHB1Ymxp
YzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgZnVuY3Rpb25OYW1lKCkgY29uc3Q7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgVHlwZSB0eXBlKCkgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgSlNWYWx1ZSB0aGlzVmFsdWUoVk0mKSBjb25zdDsKKwogICAgIEpTVmFsdWUgZXZhbHVh
dGVXaXRoU2NvcGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiwgSlNPYmplY3QqIHNjb3BlRXh0ZW5z
aW9uT2JqZWN0LCBOYWtlZFB0cjxFeGNlcHRpb24+Jik7CiAKICAgICBib29sIGlzVmFsaWQoKSBj
b25zdCB7IHJldHVybiAhIW1fdmFsaWRNYWNoaW5lRnJhbWUgfHwgaXNUYWlsRGVsZXRlZCgpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCmluZGV4IGM0MmM0ZjkzNGRmMWJmNjY3ZDRiYTAw
OGYwOTZjNTU4ZDhjYTc2NGYuLjAwYjFlY2MxYWY0ODA3MGVmZWRjNzY2YTNiYTZmZjViNmY0YmE3
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckF1ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCkBAIC0xMDUsMTUgKzEwNSwxNCBAQCB2
b2lkIEluc3BlY3RvckF1ZGl0QWdlbnQ6OnJ1bihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgdGVzdCwgY29ucwogCiAgICAgT3B0aW9uYWw8aW50PiBzYXZlZFJlc3VsdElu
ZGV4OwogCi0gICAgYXV0byBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBtX2RlYnVn
Z2VyLnBhdXNlT25FeGNlcHRpb25zU3RhdGUoKTsKKyAgICBKU0M6OkRlYnVnZ2VyOjpUZW1wb3Jh
cmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50cyB0ZW1wb3JhcmlseURpc2FibGVFeGNlcHRp
b25CcmVha3BvaW50cyhtX2RlYnVnZ2VyKTsKKyAgICB0ZW1wb3JhcmlseURpc2FibGVFeGNlcHRp
b25CcmVha3BvaW50cy5yZXBsYWNlKCk7CiAKLSAgICBtX2RlYnVnZ2VyLnNldFBhdXNlT25FeGNl
cHRpb25zU3RhdGUoRGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7CiAgICAgbXV0ZUNv
bnNvbGUoKTsKIAogICAgIGluamVjdGVkU2NyaXB0LmV4ZWN1dGUoZXJyb3JTdHJpbmcsIGZ1bmN0
aW9uU3RyaW5nLnRvU3RyaW5nKCksIFdURk1vdmUob3B0aW9ucyksIHJlc3VsdCwgd2FzVGhyb3du
LCBzYXZlZFJlc3VsdEluZGV4KTsKIAogICAgIHVubXV0ZUNvbnNvbGUoKTsKLSAgICBtX2RlYnVn
Z2VyLnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUocHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0
YXRlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JBdWRpdEFnZW50Ojp0ZWFyZG93bihFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGMz
ODY1ZjY2YzA3MGI4MDAyYjcwNTA4YzUzMjk5YzdkMWExYTQ1ODAuLjEzZmMyYzUzYjVhYzQ2NWU2
ZTNkNjZhYmUwNTVjMGVlNmQ0ZGMwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwCkBAIC0yNzEsOCArMjcxLDggQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaXNh
YmxlKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkKIAogICAgIGNsZWFyQXN5bmNTdGFja1RyYWNlRGF0
YSgpOwogCi0gICAgbV9wYXVzZU9uQXNzZXJ0aW9uRmFpbHVyZXMgPSBmYWxzZTsKLSAgICBtX3Bh
dXNlT25NaWNyb3Rhc2tzID0gZmFsc2U7CisgICAgbV9wYXVzZU9uQXNzZXJ0aW9uc0JyZWFrcG9p
bnQgPSBudWxscHRyOworICAgIG1fcGF1c2VPbk1pY3JvdGFza3NCcmVha3BvaW50ID0gbnVsbHB0
cjsKIAogICAgIG1fZW5hYmxlZCA9IGZhbHNlOwogfQpAQCAtMzk0LDggKzM5NCwxMCBAQCB2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmhhbmRsZUNvbnNvbGVBc3NlcnQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQogICAgIGlmICghYnJlYWtwb2ludHNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKG1fcGF1c2VPbkFzc2VydGlvbkZhaWx1cmVzKQotICAgICAgICBicmVha1By
b2dyYW0oRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6QXNzZXJ0LCBidWlsZEFz
c2VydFBhdXNlUmVhc29uKG1lc3NhZ2UpKTsKKyAgICBpZiAoIW1fcGF1c2VPbkFzc2VydGlvbnNC
cmVha3BvaW50KQorICAgICAgICByZXR1cm47CisKKyAgICBicmVha1Byb2dyYW0oRGVidWdnZXJG
cm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6QXNzZXJ0LCBidWlsZEFzc2VydFBhdXNlUmVhc29u
KG1lc3NhZ2UpLCBtX3BhdXNlT25Bc3NlcnRpb25zQnJlYWtwb2ludC5jb3B5UmVmKCkpOwogfQog
CiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpBc3luY0NhbGxJZGVudGlmaWVyIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmFzeW5jQ2FsbElkZW50aWZpZXIoQXN5bmNDYWxsVHlwZSBhc3luY0NhbGxU
eXBlLCBpbnQgY2FsbGJhY2tJZCkKQEAgLTg4MSwzOCArODgzLDY4IEBAIHZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6ZGlkQmVjb21lSWRsZSgpCiAgICAgfQogfQogCi12b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHMoRXJyb3JTdHJpbmcm
LCBib29sIGVuYWJsZWQpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25E
ZWJ1Z2dlclN0YXRlbWVudHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBib29sIGVuYWJsZWQs
IGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9uc1BheWxvYWQpCiB7Ci0gICAgbV9kZWJ1Z2dlci5z
ZXRQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzKGVuYWJsZWQpOwotfQotCi12b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25FeGNlcHRpb25zKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nJiBzdHJpbmdQYXVzZVN0YXRlKQotewotICAgIEpTQzo6RGVidWdn
ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUgcGF1c2VTdGF0ZTsKLSAgICBpZiAoc3RyaW5nUGF1
c2VTdGF0ZSA9PSAibm9uZSIpCi0gICAgICAgIHBhdXNlU3RhdGUgPSBKU0M6OkRlYnVnZ2VyOjpE
b250UGF1c2VPbkV4Y2VwdGlvbnM7Ci0gICAgZWxzZSBpZiAoc3RyaW5nUGF1c2VTdGF0ZSA9PSAi
YWxsIikKLSAgICAgICAgcGF1c2VTdGF0ZSA9IEpTQzo6RGVidWdnZXI6OlBhdXNlT25BbGxFeGNl
cHRpb25zOwotICAgIGVsc2UgaWYgKHN0cmluZ1BhdXNlU3RhdGUgPT0gInVuY2F1Z2h0IikKLSAg
ICAgICAgcGF1c2VTdGF0ZSA9IEpTQzo6RGVidWdnZXI6OlBhdXNlT25VbmNhdWdodEV4Y2VwdGlv
bnM7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93
biBzdGF0ZTogIl9zLCBzdHJpbmdQYXVzZVN0YXRlKTsKKyAgICBpZiAoIWVuYWJsZWQpIHsKKyAg
ICAgICAgbV9kZWJ1Z2dlci5zZXRQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludChu
dWxscHRyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZGVidWdnZXIuc2V0UGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZShzdGF0aWNfY2FzdDxKU0M6OkRlYnVnZ2VyOjpQYXVzZU9uRXhj
ZXB0aW9uc1N0YXRlPihwYXVzZVN0YXRlKSk7Ci0gICAgaWYgKG1fZGVidWdnZXIucGF1c2VPbkV4
Y2VwdGlvbnNTdGF0ZSgpICE9IHBhdXNlU3RhdGUpCi0gICAgICAgIGVycm9yU3RyaW5nID0gIklu
dGVybmFsIGVycm9yLiBDb3VsZCBub3QgY2hhbmdlIHBhdXNlIG9uIGV4Y2VwdGlvbnMgc3RhdGUi
X3M7CisgICAgYXV0byBicmVha3BvaW50ID0gZGVidWdnZXJCcmVha3BvaW50RnJvbVBheWxvYWQo
ZXJyb3JTdHJpbmcsIG9wdGlvbnNQYXlsb2FkKTsKKyAgICBpZiAoIWJyZWFrcG9pbnQpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fZGVidWdnZXIuc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50
c0JyZWFrcG9pbnQoV1RGTW92ZShicmVha3BvaW50KSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2V0UGF1c2VPbkFzc2VydGlvbnMoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJs
ZWQpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25FeGNlcHRpb25zKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzdGF0ZVN0cmluZywgY29uc3Qg
SlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5bG9hZCkKIHsKLSAgICBtX3BhdXNlT25Bc3NlcnRpb25G
YWlsdXJlcyA9IGVuYWJsZWQ7CisgICAgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gYWxsRXhjZXB0
aW9uc0JyZWFrcG9pbnQ7CisgICAgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gdW5jYXVnaHRFeGNl
cHRpb25zQnJlYWtwb2ludDsKKworICAgIGlmIChzdGF0ZVN0cmluZyA9PSAiYWxsIikgeworICAg
ICAgICBhbGxFeGNlcHRpb25zQnJlYWtwb2ludCA9IGRlYnVnZ2VyQnJlYWtwb2ludEZyb21QYXls
b2FkKGVycm9yU3RyaW5nLCBvcHRpb25zUGF5bG9hZCk7CisgICAgICAgIGlmICghYWxsRXhjZXB0
aW9uc0JyZWFrcG9pbnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgfSBlbHNlIGlmIChzdGF0
ZVN0cmluZyA9PSAidW5jYXVnaHQiKSB7CisgICAgICAgIHVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFr
cG9pbnQgPSBkZWJ1Z2dlckJyZWFrcG9pbnRGcm9tUGF5bG9hZChlcnJvclN0cmluZywgb3B0aW9u
c1BheWxvYWQpOworICAgICAgICBpZiAoIXVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgfSBlbHNlIGlmIChzdGF0ZVN0cmluZyAhPSAibm9uZSIp
IHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIHN0YXRlOiAiX3Ms
IHN0YXRlU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZGVidWdnZXIu
c2V0UGF1c2VPbkFsbEV4Y2VwdGlvbnNCcmVha3BvaW50KFdURk1vdmUoYWxsRXhjZXB0aW9uc0Jy
ZWFrcG9pbnQpKTsKKyAgICBtX2RlYnVnZ2VyLnNldFBhdXNlT25VbmNhdWdodEV4Y2VwdGlvbnNC
cmVha3BvaW50KFdURk1vdmUodW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludCkpOwogfQogCi12
b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25NaWNyb3Rhc2tzKEVycm9yU3Ry
aW5nJiwgYm9vbCBlbmFibGVkKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVz
ZU9uQXNzZXJ0aW9ucyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGJvb2wgZW5hYmxlZCwgY29u
c3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5bG9hZCkKIHsKLSAgICBtX3BhdXNlT25NaWNyb3Rh
c2tzID0gZW5hYmxlZDsKKyAgICBpZiAoIWVuYWJsZWQpIHsKKyAgICAgICAgbV9wYXVzZU9uQXNz
ZXJ0aW9uc0JyZWFrcG9pbnQgPSBudWxscHRyOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgYXV0byBicmVha3BvaW50ID0gZGVidWdnZXJCcmVha3BvaW50RnJvbVBheWxvYWQoZXJyb3JT
dHJpbmcsIG9wdGlvbnNQYXlsb2FkKTsKKyAgICBpZiAoIWJyZWFrcG9pbnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fcGF1c2VPbkFzc2VydGlvbnNCcmVha3BvaW50ID0gV1RGTW92ZShicmVh
a3BvaW50KTsKK30KKwordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVzZU9uTWlj
cm90YXNrcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGJvb2wgZW5hYmxlZCwgY29uc3QgSlNP
Tjo6T2JqZWN0KiBvcHRpb25zUGF5bG9hZCkKK3sKKyAgICBpZiAoIWVuYWJsZWQpIHsKKyAgICAg
ICAgbV9wYXVzZU9uTWljcm90YXNrc0JyZWFrcG9pbnQgPSBudWxscHRyOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYXV0byBicmVha3BvaW50ID0gZGVidWdnZXJCcmVha3BvaW50RnJv
bVBheWxvYWQoZXJyb3JTdHJpbmcsIG9wdGlvbnNQYXlsb2FkKTsKKyAgICBpZiAoIWJyZWFrcG9p
bnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGF1c2VPbk1pY3JvdGFza3NCcmVha3BvaW50
ID0gV1RGTW92ZShicmVha3BvaW50KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcq
IG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJv
b2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogcmV0
dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBjb25zdCBib29sKiBzYXZl
UmVzdWx0LCBjb25zdCBib29sKiAvKiBlbXVsYXRlVXNlckdlc3R1cmUgKi8sIFJlZlB0cjxQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBPcHRpb25hbDxib29sPiYgd2Fz
VGhyb3duLCBPcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KQpAQCAtOTI2LDExICs5NTgs
MTEgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGF1dG8gcGF1c2VTdGF0ZSA9IG1fZGVidWdnZXIucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgp
OworICAgIEpTQzo6RGVidWdnZXI6OlRlbXBvcmFyaWx5RGlzYWJsZUV4Y2VwdGlvbkJyZWFrcG9p
bnRzIHRlbXBvcmFyaWx5RGlzYWJsZUV4Y2VwdGlvbkJyZWFrcG9pbnRzKG1fZGVidWdnZXIpOwor
CiAgICAgYm9vbCBwYXVzZUFuZE11dGUgPSBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNv
bnNvbGUgJiYgKmRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZTsKICAgICBpZiAo
cGF1c2VBbmRNdXRlKSB7Ci0gICAgICAgIGlmIChwYXVzZVN0YXRlICE9IEpTQzo6RGVidWdnZXI6
OkRvbnRQYXVzZU9uRXhjZXB0aW9ucykKLSAgICAgICAgICAgIG1fZGVidWdnZXIuc2V0UGF1c2VP
bkV4Y2VwdGlvbnNTdGF0ZShKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpOwor
ICAgICAgICB0ZW1wb3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50cy5yZXBsYWNlKCk7
CiAgICAgICAgIG11dGVDb25zb2xlKCk7CiAgICAgfQogCkBAIC05MzgsMTAgKzk3MCw4IEBAIHZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAgICAgIG9iamVjdEdyb3VwID8gKm9iamVjdEdyb3Vw
IDogZW1wdHlTdHJpbmcoKSwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJICYmICppbmNsdWRlQ29tbWFu
ZExpbmVBUEksIHJldHVybkJ5VmFsdWUgJiYgKnJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmll
dyAmJiAqZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0ICYmICpzYXZlUmVzdWx0LAogICAgICAg
ICByZXN1bHQsIHdhc1Rocm93biwgc2F2ZWRSZXN1bHRJbmRleCk7CiAKLSAgICBpZiAocGF1c2VB
bmRNdXRlKSB7CisgICAgaWYgKHBhdXNlQW5kTXV0ZSkKICAgICAgICAgdW5tdXRlQ29uc29sZSgp
OwotICAgICAgICBtX2RlYnVnZ2VyLnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUocGF1c2VTdGF0
ZSk7Ci0gICAgfQogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFNob3VsZEJs
YWNrYm94VVJMKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGJv
b2wgc2hvdWxkQmxhY2tib3gsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29u
c3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4KQpAQCAtOTkxLDcgKzEwMjEsNyBAQCBib29sIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnNob3VsZEJsYWNrYm94VVJMKGNvbnN0IFN0cmluZyYgdXJsKSBj
b25zdAogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjcmlwdEV4ZWN1dGlvbkJsb2Nr
ZWRCeUNTUChjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQpCiB7Ci0gICAgaWYgKG1fZGVidWdn
ZXIucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpICE9IEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9u
RXhjZXB0aW9ucykKKyAgICBpZiAobV9kZWJ1Z2dlci5uZWVkc0V4Y2VwdGlvbkNhbGxiYWNrcygp
KQogICAgICAgICBicmVha1Byb2dyYW0oRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNv
bjo6Q1NQVmlvbGF0aW9uLCBidWlsZENTUFZpb2xhdGlvblBhdXNlUmVhc29uKGRpcmVjdGl2ZVRl
eHQpKTsKIH0KIApAQCAtMTA3OCw4ICsxMTA4LDEwIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6d2lsbFJ1bk1pY3JvdGFzaygpCiAgICAgaWYgKCFicmVha3BvaW50c0FjdGl2ZSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9wYXVzZU9uTWljcm90YXNrcykKLSAgICAgICAg
c2NoZWR1bGVQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVy
OjpSZWFzb246Ok1pY3JvdGFzayk7CisgICAgaWYgKCFtX3BhdXNlT25NaWNyb3Rhc2tzQnJlYWtw
b2ludCkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2NoZWR1bGVQYXVzZUZvclNwZWNpYWxCcmVh
a3BvaW50KCptX3BhdXNlT25NaWNyb3Rhc2tzQnJlYWtwb2ludCwgRGVidWdnZXJGcm9udGVuZERp
c3BhdGNoZXI6OlJlYXNvbjo6TWljcm90YXNrKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpkaWRSdW5NaWNyb3Rhc2soKQpAQCAtMTA4Nyw4ICsxMTE5LDEwIEBAIHZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUnVuTWljcm90YXNrKCkKICAgICBpZiAoIWJyZWFrcG9p
bnRzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3BhdXNlT25NaWNyb3Rh
c2tzKQotICAgICAgICBjYW5jZWxQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KCk7CisgICAgaWYgKCFt
X3BhdXNlT25NaWNyb3Rhc2tzQnJlYWtwb2ludCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY2Fu
Y2VsUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludCgqbV9wYXVzZU9uTWljcm90YXNrc0JyZWFrcG9p
bnQpOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdn
ZXJDYWxsRnJhbWUsIEpTQzo6SlNWYWx1ZSBleGNlcHRpb25PckNhdWdodFZhbHVlKQpAQCAtMTIy
NCwxMSArMTI1OCwxMSBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENvbnRpbnVl
KCkKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3VtZWQoKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha1Byb2dyYW0oRGVidWdnZXJGcm9udGVuZERpc3Bh
dGNoZXI6OlJlYXNvbiByZWFzb24sIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgZGF0YSkKK3ZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtQcm9ncmFtKERlYnVnZ2VyRnJvbnRlbmREaXNw
YXRjaGVyOjpSZWFzb24gcmVhc29uLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGRhdGEsIFJlZlB0
cjxKU0M6OkJyZWFrcG9pbnQ+JiYgc3BlY2lhbEJyZWFrcG9pbnQpCiB7CiAgICAgdXBkYXRlUGF1
c2VSZWFzb25BbmREYXRhKHJlYXNvbiwgV1RGTW92ZShkYXRhKSk7CiAKLSAgICBtX2RlYnVnZ2Vy
LmJyZWFrUHJvZ3JhbSgpOworICAgIG1fZGVidWdnZXIuYnJlYWtQcm9ncmFtKFdURk1vdmUoc3Bl
Y2lhbEJyZWFrcG9pbnQpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVh
ckluc3BlY3RvckJyZWFrcG9pbnRTdGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgK
aW5kZXggODhjYmJhZmVkYWMxZGNjZWJlMjAxMTBkNjc1Y2NmZGE2NGNiNzZkZS4uMzBmZjlmM2My
NmQxYWUwNDY2YTcxYTViZjYzNjYxODI5NTRmYTJkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaApAQCAtODQsMTAgKzg0LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNlYXJjaEluQ29u
dGVudChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIGNvbnN0IFN0cmluZyYg
cXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0
aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6R2VuZXJpY1R5cGVz
OjpTZWFyY2hNYXRjaD4+JikgZmluYWw7CiAgICAgdm9pZCBnZXRTY3JpcHRTb3VyY2UoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCBTdHJpbmcqIHNjcmlwdFNvdXJjZSkgZmlu
YWw7CiAgICAgdm9pZCBnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWls
cz4mKSBmaW5hbDsKLSAgICB2b2lkIHNldFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHMoRXJyb3JT
dHJpbmcmLCBib29sIGVuYWJsZWQpIGZpbmFsOwotICAgIHZvaWQgc2V0UGF1c2VPbkV4Y2VwdGlv
bnMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhdXNlU3RhdGUpIGZpbmFsOwotICAgIHZv
aWQgc2V0UGF1c2VPbkFzc2VydGlvbnMoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJsZWQpIGZpbmFs
OwotICAgIHZvaWQgc2V0UGF1c2VPbk1pY3JvdGFza3MoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJs
ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cyhFcnJvclN0
cmluZyYsIGJvb2wgZW5hYmxlZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zKSBmaW5hbDsK
KyAgICB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBwYXVzZVN0YXRlLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnMpIGZpbmFsOworICAgIHZv
aWQgc2V0UGF1c2VPbkFzc2VydGlvbnMoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJsZWQsIGNvbnN0
IEpTT046Ok9iamVjdCogb3B0aW9ucykgZmluYWw7CisgICAgdm9pZCBzZXRQYXVzZU9uTWljcm90
YXNrcyhFcnJvclN0cmluZyYsIGJvb2wgZW5hYmxlZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRp
b25zKSBmaW5hbDsKICAgICB2b2lkIHNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzKEVycm9yU3Ry
aW5nJiwgYm9vbCBzaG91bGRQYXVzZSkgZmluYWw7CiAgICAgdm9pZCBldmFsdWF0ZU9uQ2FsbEZy
YW1lKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBpbmNs
dWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRN
dXRlQ29uc29sZSwgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJh
dGVQcmV2aWV3LCBjb25zdCBib29sKiBzYXZlUmVzdWx0LCBjb25zdCBib29sKiBlbXVsYXRlVXNl
ckdlc3R1cmUsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0
LCBPcHRpb25hbDxib29sPiYgd2FzVGhyb3duLCBPcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdElu
ZGV4KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFNob3VsZEJsYWNrYm94VVJMKEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgc2hvdWxkQmxhY2tib3gsIGNvbnN0IGJvb2wqIGNh
c2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgpIGZpbmFsOwpAQCAtMTI4LDcgKzEyOCw3
IEBAIHB1YmxpYzoKICAgICBib29sIHNjaGVkdWxlUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludChK
U0M6OkJyZWFrcG9pbnQmLCBEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uLCBSZWZQ
dHI8SlNPTjo6T2JqZWN0PiYmIGRhdGEgPSBudWxscHRyKTsKICAgICBib29sIGNhbmNlbFBhdXNl
Rm9yU3BlY2lhbEJyZWFrcG9pbnQoSlNDOjpCcmVha3BvaW50Jik7CiAKLSAgICB2b2lkIGJyZWFr
UHJvZ3JhbShEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uLCBSZWZQdHI8SlNPTjo6
T2JqZWN0PiYmIGRhdGEpOworICAgIHZvaWQgYnJlYWtQcm9ncmFtKERlYnVnZ2VyRnJvbnRlbmRE
aXNwYXRjaGVyOjpSZWFzb24sIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgZGF0YSA9IG51bGxwdHIs
IFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+JiYgc3BlY2lhbEJyZWFrcG9pbnQgPSBudWxscHRyKTsK
ICAgICB2b2lkIHNjcmlwdEV4ZWN1dGlvbkJsb2NrZWRCeUNTUChjb25zdCBTdHJpbmcmIGRpcmVj
dGl2ZVRleHQpOwogCiAgICAgY2xhc3MgTGlzdGVuZXIgewpAQCAtMjY2LDEwICsyNjYsMTEgQEAg
cHJpdmF0ZToKICAgICBPcHRpb25hbDxBc3luY0NhbGxJZGVudGlmaWVyPiBtX2N1cnJlbnRBc3lu
Y0NhbGxJZGVudGlmaWVyOwogICAgIGludCBtX2FzeW5jU3RhY2tUcmFjZURlcHRoIHsgMCB9Owog
CisgICAgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gbV9wYXVzZU9uQXNzZXJ0aW9uc0JyZWFrcG9p
bnQ7CisgICAgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gbV9wYXVzZU9uTWljcm90YXNrc0JyZWFr
cG9pbnQ7CisKICAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2VuYWJs
ZVBhdXNlV2hlbklkbGUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9wYXVzZU9uQXNzZXJ0aW9uRmFp
bHVyZXMgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9wYXVzZU9uTWljcm90YXNrcyB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX3BhdXNlRm9ySW50ZXJuYWxTY3JpcHRzIHsgZmFsc2UgfTsKICAgICBib29s
IG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fZGlkUGF1
c2VTdG9wd2F0Y2ggeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKaW5k
ZXggMTkwYjU2NmRhMTcxZTgyOTQ3ZDg4MGY3ZmNlZDRiMWJmMTY2NzE4Ny4uOWFiMWFmNzRkNDMz
NjM3MWY2NDkyOWJmNjA2NWE0MmNlMWI5OWY4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdl
bnQuY3BwCkBAIC03MywxNCArNzMsNiBAQCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6On5JbnNwZWN0
b3JSdW50aW1lQWdlbnQoKQogewogfQogCi1zdGF0aWMgSlNDOjpEZWJ1Z2dlcjo6UGF1c2VPbkV4
Y2VwdGlvbnNTdGF0ZSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKEpTQzo6RGVidWdnZXImIGRl
YnVnZ2VyLCBKU0M6OkRlYnVnZ2VyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIG5ld1N0YXRlKQot
ewotICAgIGF1dG8gcHJlc2VudFN0YXRlID0gZGVidWdnZXIucGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZSgpOwotICAgIGlmIChwcmVzZW50U3RhdGUgIT0gbmV3U3RhdGUpCi0gICAgICAgIGRlYnVnZ2Vy
LnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobmV3U3RhdGUpOwotICAgIHJldHVybiBwcmVzZW50
U3RhdGU7Ci19Ci0KIHN0YXRpYyBSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+IGJ1
aWxkRXJyb3JSYW5nZU9iamVjdChjb25zdCBKU1Rva2VuTG9jYXRpb24mIHRva2VuTG9jYXRpb24p
CiB7CiAgICAgcmV0dXJuIFByb3RvY29sOjpSdW50aW1lOjpFcnJvclJhbmdlOjpjcmVhdGUoKQpA
QCAtMTIzLDE4ICsxMTUsMTggQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRl
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHAKICAgICBpZiAoaW5q
ZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHBy
ZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9u
RXhjZXB0aW9uczsKLSAgICBpZiAoYXNCb29sKGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRl
Q29uc29sZSkpCi0gICAgICAgIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNldFBh
dXNlT25FeGNlcHRpb25zU3RhdGUobV9kZWJ1Z2dlciwgSlNDOjpEZWJ1Z2dlcjo6RG9udFBhdXNl
T25FeGNlcHRpb25zKTsKLSAgICBpZiAoYXNCb29sKGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRN
dXRlQ29uc29sZSkpCisgICAgSlNDOjpEZWJ1Z2dlcjo6VGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0
aW9uQnJlYWtwb2ludHMgdGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHMobV9k
ZWJ1Z2dlcik7CisKKyAgICBib29sIHBhdXNlQW5kTXV0ZSA9IGFzQm9vbChkb05vdFBhdXNlT25F
eGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUpOworICAgIGlmIChwYXVzZUFuZE11dGUpIHsKKyAgICAg
ICAgdGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHMucmVwbGFjZSgpOwogICAg
ICAgICBtdXRlQ29uc29sZSgpOworICAgIH0KIAogICAgIGluamVjdGVkU2NyaXB0LmV2YWx1YXRl
KGVycm9yU3RyaW5nLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCA/ICpvYmplY3RHcm91cCA6IFN0
cmluZygpLCBhc0Jvb2woaW5jbHVkZUNvbW1hbmRMaW5lQVBJKSwgYXNCb29sKHJldHVybkJ5VmFs
dWUpLCBhc0Jvb2woZ2VuZXJhdGVQcmV2aWV3KSwgYXNCb29sKHNhdmVSZXN1bHQpLCByZXN1bHQs
IHdhc1Rocm93biwgc2F2ZWRSZXN1bHRJbmRleCk7CiAKLSAgICBpZiAoYXNCb29sKGRvTm90UGF1
c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSkpIHsKKyAgICBpZiAocGF1c2VBbmRNdXRlKQog
ICAgICAgICB1bm11dGVDb25zb2xlKCk7Ci0gICAgICAgIHNldFBhdXNlT25FeGNlcHRpb25zU3Rh
dGUobV9kZWJ1Z2dlciwgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKLSAgICB9CiB9
CiAKIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50Ojphd2FpdFByb21pc2UoY29uc3QgU3RyaW5n
JiBwcm9taXNlT2JqZWN0SWQsIGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wq
IGdlbmVyYXRlUHJldmlldywgY29uc3QgYm9vbCogc2F2ZVJlc3VsdCwgUmVmPEF3YWl0UHJvbWlz
ZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQpAQCAtMTY1LDE4ICsxNTcsMTggQEAgdm9pZCBJbnNwZWN0
b3JSdW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW4KICAgICBpZiAob3B0aW9uYWxBcmd1bWVudHMpCiAgICAgICAgIGFyZ3VtZW50
cyA9IG9wdGlvbmFsQXJndW1lbnRzLT50b0pTT05TdHJpbmcoKTsKIAotICAgIGF1dG8gcHJldmlv
dXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gSlNDOjpEZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNl
cHRpb25zOwotICAgIGlmIChhc0Jvb2woZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25z
b2xlKSkKLSAgICAgICAgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VP
bkV4Y2VwdGlvbnNTdGF0ZShtX2RlYnVnZ2VyLCBKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VPbkV4
Y2VwdGlvbnMpOwotICAgIGlmIChhc0Jvb2woZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVD
b25zb2xlKSkKKyAgICBKU0M6OkRlYnVnZ2VyOjpUZW1wb3JhcmlseURpc2FibGVFeGNlcHRpb25C
cmVha3BvaW50cyB0ZW1wb3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50cyhtX2RlYnVn
Z2VyKTsKKworICAgIGJvb2wgcGF1c2VBbmRNdXRlID0gYXNCb29sKGRvTm90UGF1c2VPbkV4Y2Vw
dGlvbnNBbmRNdXRlQ29uc29sZSk7CisgICAgaWYgKHBhdXNlQW5kTXV0ZSkgeworICAgICAgICB0
ZW1wb3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50cy5yZXBsYWNlKCk7CiAgICAgICAg
IG11dGVDb25zb2xlKCk7CisgICAgfQogCiAgICAgaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9u
T24oZXJyb3JTdHJpbmcsIG9iamVjdElkLCBleHByZXNzaW9uLCBhcmd1bWVudHMsIGFzQm9vbChy
ZXR1cm5CeVZhbHVlKSwgYXNCb29sKGdlbmVyYXRlUHJldmlldyksIHJlc3VsdCwgd2FzVGhyb3du
KTsKIAotICAgIGlmIChhc0Jvb2woZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xl
KSkgeworICAgIGlmIChwYXVzZUFuZE11dGUpCiAgICAgICAgIHVubXV0ZUNvbnNvbGUoKTsKLSAg
ICAgICAgc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX2RlYnVnZ2VyLCBwcmV2aW91c1BhdXNl
T25FeGNlcHRpb25zU3RhdGUpOwotICAgIH0KIH0KIAogdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdl
bnQ6OmdldFByZXZpZXcoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9i
amVjdElkLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+JiBwcmV2aWV3
KQpAQCAtMTg3LDEzICsxNzksMTQgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFBy
ZXZpZXcoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG8KICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRl
ID0gc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX2RlYnVnZ2VyLCBKU0M6OkRlYnVnZ2VyOjpE
b250UGF1c2VPbkV4Y2VwdGlvbnMpOworICAgIEpTQzo6RGVidWdnZXI6OlRlbXBvcmFyaWx5RGlz
YWJsZUV4Y2VwdGlvbkJyZWFrcG9pbnRzIHRlbXBvcmFyaWx5RGlzYWJsZUV4Y2VwdGlvbkJyZWFr
cG9pbnRzKG1fZGVidWdnZXIpOworICAgIHRlbXBvcmFyaWx5RGlzYWJsZUV4Y2VwdGlvbkJyZWFr
cG9pbnRzLnJlcGxhY2UoKTsKKwogICAgIG11dGVDb25zb2xlKCk7CiAKICAgICBpbmplY3RlZFNj
cmlwdC5nZXRQcmV2aWV3KGVycm9yU3RyaW5nLCBvYmplY3RJZCwgcHJldmlldyk7CiAKICAgICB1
bm11dGVDb25zb2xlKCk7Ci0gICAgc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX2RlYnVnZ2Vy
LCBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUpOwogfQogCiB2b2lkIEluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIG93blByb3BlcnRpZXMsIGNvbnN0IGludCog
ZmV0Y2hTdGFydCwgY29uc3QgaW50KiBmZXRjaENvdW50LCBjb25zdCBib29sKiBnZW5lcmF0ZVBy
ZXZpZXcsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURl
c2NyaXB0b3I+PiYgcHJvcGVydGllcywgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1
bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcykK
QEAgLTIxNiw3ICsyMDksOSBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVy
dGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgYXV0byBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBz
ZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1fZGVidWdnZXIsIEpTQzo6RGVidWdnZXI6OkRvbnRQ
YXVzZU9uRXhjZXB0aW9ucyk7CisgICAgSlNDOjpEZWJ1Z2dlcjo6VGVtcG9yYXJpbHlEaXNhYmxl
RXhjZXB0aW9uQnJlYWtwb2ludHMgdGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2lu
dHMobV9kZWJ1Z2dlcik7CisgICAgdGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2lu
dHMucmVwbGFjZSgpOworCiAgICAgbXV0ZUNvbnNvbGUoKTsKIAogICAgIGluamVjdGVkU2NyaXB0
LmdldFByb3BlcnRpZXMoZXJyb3JTdHJpbmcsIG9iamVjdElkLCBhc0Jvb2wob3duUHJvcGVydGll
cyksIHN0YXJ0LCBjb3VudCwgYXNCb29sKGdlbmVyYXRlUHJldmlldyksIHByb3BlcnRpZXMpOwpA
QCAtMjI2LDcgKzIyMSw2IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcm9wZXJ0
aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nCiAgICAgICAgIGluamVj
dGVkU2NyaXB0LmdldEludGVybmFsUHJvcGVydGllcyhlcnJvclN0cmluZywgb2JqZWN0SWQsIGFz
Qm9vbChnZW5lcmF0ZVByZXZpZXcpLCBpbnRlcm5hbFByb3BlcnRpZXMpOwogCiAgICAgdW5tdXRl
Q29uc29sZSgpOwotICAgIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9kZWJ1Z2dlciwgcHJl
dmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSdW50aW1l
QWdlbnQ6OmdldERpc3BsYXlhYmxlUHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGludCogZmV0Y2hTdGFydCwgY29uc3QgaW50
KiBmZXRjaENvdW50LCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxKU09OOjpB
cnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcHJvcGVydGll
cywgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVy
dHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcykKQEAgLTI0OSw3ICsyNDMsOSBAQCB2
b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0
byBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0
YXRlKG1fZGVidWdnZXIsIEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7Cisg
ICAgSlNDOjpEZWJ1Z2dlcjo6VGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHMg
dGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHMobV9kZWJ1Z2dlcik7CisgICAg
dGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHMucmVwbGFjZSgpOworCiAgICAg
bXV0ZUNvbnNvbGUoKTsKIAogICAgIGluamVjdGVkU2NyaXB0LmdldERpc3BsYXlhYmxlUHJvcGVy
dGllcyhlcnJvclN0cmluZywgb2JqZWN0SWQsIHN0YXJ0LCBjb3VudCwgYXNCb29sKGdlbmVyYXRl
UHJldmlldyksIHByb3BlcnRpZXMpOwpAQCAtMjU5LDcgKzI1NSw2IEBAIHZvaWQgSW5zcGVjdG9y
UnVudGltZUFnZW50OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjCiAgICAgICAgIGluamVjdGVkU2NyaXB0LmdldEludGVybmFsUHJvcGVydGllcyhl
cnJvclN0cmluZywgb2JqZWN0SWQsIGFzQm9vbChnZW5lcmF0ZVByZXZpZXcpLCBpbnRlcm5hbFBy
b3BlcnRpZXMpOwogCiAgICAgdW5tdXRlQ29uc29sZSgpOwotICAgIHNldFBhdXNlT25FeGNlcHRp
b25zU3RhdGUobV9kZWJ1Z2dlciwgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldENvbGxlY3Rpb25FbnRyaWVzKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5n
KiBvYmplY3RHcm91cCwgY29uc3QgaW50KiBmZXRjaFN0YXJ0LCBjb25zdCBpbnQqIGZldGNoQ291
bnQsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpDb2xsZWN0aW9uRW50
cnk+PiYgZW50cmllcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcHJvdG9jb2wvRGVidWdnZXIuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcHJvdG9jb2wvRGVidWdnZXIuanNvbgppbmRleCA3ZThmNDU5NmJhMWIyZWZlZmZmNmJmMzA5
N2ZkODYxZTFkNmQzMTM0Li45YzQyZTMwNjk2NmU0ZDNhOTRhN2E0Y2Y5YzZkODdlZGU3MzExNDQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0Rl
YnVnZ2VyLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2Nv
bC9EZWJ1Z2dlci5qc29uCkBAIC0yNTcsMjggKzI1NywzMiBAQAogICAgICAgICAgICAgIm5hbWUi
OiAic2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cyIsCiAgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiQ29udHJvbCB3aGV0aGVyIHRoZSBkZWJ1Z2dlciBwYXVzZXMgZXhlY3V0aW9uIGJlZm9y
ZSBgZGVidWdnZXJgIHN0YXRlbWVudHMuIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwot
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZW5hYmxlZCIsICJ0eXBlIjogImJvb2xlYW4iIH0K
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVuYWJsZWQiLCAidHlwZSI6ICJib29sZWFuIiB9
LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib3B0aW9ucyIsICIkcmVmIjogIkJyZWFrcG9p
bnRPcHRpb25zIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIk9wdGlvbnMgdG8g
YXBwbHkgdG8gdGhpcyBicmVha3BvaW50IHRvIG1vZGlmeSBpdHMgYmVoYXZpb3IuIiB9CiAgICAg
ICAgICAgICBdCiAgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogInNl
dFBhdXNlT25FeGNlcHRpb25zIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEZWZpbmVz
IHBhdXNlIG9uIGV4Y2VwdGlvbnMgc3RhdGUuIENhbiBiZSBzZXQgdG8gc3RvcCBvbiBhbGwgZXhj
ZXB0aW9ucywgdW5jYXVnaHQgZXhjZXB0aW9ucyBvciBubyBleGNlcHRpb25zLiBJbml0aWFsIHBh
dXNlIG9uIGV4Y2VwdGlvbnMgc3RhdGUgaXMgPGNvZGU+bm9uZTwvY29kZT4uIiwKICAgICAgICAg
ICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhdGUiLCAi
dHlwZSI6ICJzdHJpbmciLCAiZW51bSI6IFsibm9uZSIsICJ1bmNhdWdodCIsICJhbGwiXSwgImRl
c2NyaXB0aW9uIjogIlBhdXNlIG9uIGV4Y2VwdGlvbnMgbW9kZS4iIH0KKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInN0YXRlIiwgInR5cGUiOiAic3RyaW5nIiwgImVudW0iOiBbIm5vbmUiLCAi
dW5jYXVnaHQiLCAiYWxsIl0sICJkZXNjcmlwdGlvbiI6ICJQYXVzZSBvbiBleGNlcHRpb25zIG1v
ZGUuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib3B0aW9ucyIsICIkcmVmIjogIkJy
ZWFrcG9pbnRPcHRpb25zIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIk9wdGlv
bnMgdG8gYXBwbHkgdG8gdGhpcyBicmVha3BvaW50IHRvIG1vZGlmeSBpdHMgYmVoYXZpb3IuIiB9
CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1l
IjogInNldFBhdXNlT25Bc3NlcnRpb25zIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJT
ZXQgcGF1c2Ugb24gYXNzZXJ0aW9ucyBzdGF0ZS4gQXNzZXJ0aW9ucyBhcmUgY29uc29sZS5hc3Nl
cnQgYXNzZXJ0aW9ucy4iLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJlbmFibGVkIiwgInR5cGUiOiAiYm9vbGVhbiIgfQorICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiZW5hYmxlZCIsICJ0eXBlIjogImJvb2xlYW4iIH0sCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJvcHRpb25zIiwgIiRyZWYiOiAiQnJlYWtwb2ludE9wdGlvbnMi
LCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiT3B0aW9ucyB0byBhcHBseSB0byB0
aGlzIGJyZWFrcG9pbnQgdG8gbW9kaWZ5IGl0cyBiZWhhdmlvci4iIH0KICAgICAgICAgICAgIF0K
ICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAic2V0UGF1c2VPbk1p
Y3JvdGFza3MiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlBhdXNlIHdoZW4gcnVubmlu
ZyB0aGUgbmV4dCBKYXZhU2NyaXB0IG1pY3JvdGFzay4iLAogICAgICAgICAgICAgInBhcmFtZXRl
cnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmFibGVkIiwgInR5cGUiOiAiYm9v
bGVhbiIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZW5hYmxlZCIsICJ0eXBlIjogImJv
b2xlYW4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJvcHRpb25zIiwgIiRyZWYiOiAi
QnJlYWtwb2ludE9wdGlvbnMiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiT3B0
aW9ucyB0byBhcHBseSB0byB0aGlzIGJyZWFrcG9pbnQgdG8gbW9kaWZ5IGl0cyBiZWhhdmlvci4i
IH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5n
cy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2Fs
aXplZFN0cmluZ3MuanMKaW5kZXggMGU5NTJlYzNjNzUyOWUwZjg3YTY5ODkxNTljOWE2MGU0MTdj
ZGRlMC4uNmZjZjM1N2IxMTViYzNkZDllOGFiYjA1NzM2ZTVkNGRkZWIzNmZkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVk
U3RyaW5ncy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5s
cHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCkBAIC0xMDM4LDYgKzEwMzgsOCBAQCBsb2NhbGl6ZWRT
dHJpbmdzWyJSZXF1ZXN0IERhdGEiXSA9ICJSZXF1ZXN0IERhdGEiOwogbG9jYWxpemVkU3RyaW5n
c1siUmVxdWVzdCBIZWFkZXJzIl0gPSAiUmVxdWVzdCBIZWFkZXJzIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIlJlcXVlc3Rpbmc6ICVzIl0gPSAiUmVxdWVzdGluZzogJXMiOwogbG9jYWxpemVkU3RyaW5n
c1siUmVxdWlyZWQiXSA9ICJSZXF1aXJlZCI7CisvKiBDb250ZXh0IG1lbnUgYWN0aW9uIGZvciBy
ZXNldHRpbmcgdGhlIGJyZWFrcG9pbnQgdG8gaXRzIGluaXRpYWwgY29uZmlndXJhdGlvbi4gKi8K
K2xvY2FsaXplZFN0cmluZ3NbIlJlc2V0IEJyZWFrcG9pbnQgQCBCcmVha3BvaW50IENvbnRleHQg
TWVudSJdID0gIlJlc2V0IEJyZWFrcG9pbnQiOwogbG9jYWxpemVkU3RyaW5nc1siUmVzb3VyY2Ui
XSA9ICJSZXNvdXJjZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJSZXNvdXJjZSBTaXplIl0gPSAiUmVz
b3VyY2UgU2l6ZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJSZXNvdXJjZSBUeXBlIl0gPSAiUmVzb3Vy
Y2UgVHlwZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9CYXNlL1NldHRpbmcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
YXNlL1NldHRpbmcuanMKaW5kZXggZWQ1YWIwMDk2YjJkMTA2Njc4ZmE5OTgyODUyZWM5OGI2ZjMy
MTU4ZC4uNTNlNGU5MTQ1NGZjZDUyZGNiMjI5OTc3MjNiMzViY2YwMjhhM2ZhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcwpA
QCAtMzcsNyArMzcsNiBAQCBXSS5TZXR0aW5nID0gY2xhc3MgU2V0dGluZyBleHRlbmRzIFdJLk9i
amVjdAogCiAgICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOwogCi0gICAgICAgIHRoaXMuX2xvY2Fs
U3RvcmFnZUtleSA9IFdJLlNldHRpbmcuX2xvY2FsU3RvcmFnZUtleSh0aGlzLl9uYW1lKTsKICAg
ICAgICAgdGhpcy5fZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlOwogICAgIH0KIApAQCAtNDUs
MjIgKzQ0LDI1IEBAIFdJLlNldHRpbmcgPSBjbGFzcyBTZXR0aW5nIGV4dGVuZHMgV0kuT2JqZWN0
CiAKICAgICBzdGF0aWMgbWlncmF0ZVZhbHVlKGtleSkKICAgICB7Ci0gICAgICAgIGxldCBsb2Nh
bFN0b3JhZ2VLZXkgPSBXSS5TZXR0aW5nLl9sb2NhbFN0b3JhZ2VLZXkoa2V5KTsKKyAgICAgICAg
bGV0IGxvY2FsU3RvcmFnZUtleSA9IFdJLlNldHRpbmcuX2xvY2FsU3RvcmFnZUtleVByZWZpeCAr
IGtleTsKIAogICAgICAgICBsZXQgdmFsdWUgPSB1bmRlZmluZWQ7Ci0gICAgICAgIGlmICghd2lu
ZG93Lkluc3BlY3RvclRlc3QgJiYgd2luZG93LmxvY2FsU3RvcmFnZSAmJiBsb2NhbFN0b3JhZ2VL
ZXkgaW4gd2luZG93LmxvY2FsU3RvcmFnZSkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAg
ICAgICAgICB2YWx1ZSA9IEpTT04ucGFyc2Uod2luZG93LmxvY2FsU3RvcmFnZVtsb2NhbFN0b3Jh
Z2VLZXldKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggeyB9CisgICAgICAgIGlmICghd2luZG93Lklu
c3BlY3RvclRlc3QgJiYgd2luZG93LmxvY2FsU3RvcmFnZSkgeworICAgICAgICAgICAgbGV0IGl0
ZW0gPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlS2V5KTsKKyAgICAg
ICAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgICAgICAgICAgdmFsdWUgPSBKU09OLnBhcnNlKGl0ZW0pOworICAgICAgICAgICAgICAg
IH0gY2F0Y2ggeyB9CiAKLSAgICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRl
bShsb2NhbFN0b3JhZ2VLZXkpOworICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uu
cmVtb3ZlSXRlbShsb2NhbFN0b3JhZ2VLZXkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAKICAgICBzdGF0aWMgcmVzZXQoKQogICAgIHsK
LSAgICAgICAgbGV0IHByZWZpeCA9IFNldHRpbmcuX2xvY2FsU3RvcmFnZUtleSgiIik7CisgICAg
ICAgIGxldCBwcmVmaXggPSBXSS5TZXR0aW5nLl9sb2NhbFN0b3JhZ2VLZXlQcmVmaXg7CiAKICAg
ICAgICAgbGV0IGtleXNUb1JlbW92ZSA9IFtdOwogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IHdpbmRvdy5sb2NhbFN0b3JhZ2UubGVuZ3RoOyArK2kpIHsKQEAgLTczLDEzICs3NSw2IEBAIFdJ
LlNldHRpbmcgPSBjbGFzcyBTZXR0aW5nIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB3
aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTsKICAgICB9CiAKLSAgICBzdGF0aWMg
X2xvY2FsU3RvcmFnZUtleShuYW1lKQotICAgIHsKLSAgICAgICAgbGV0IGluc3BlY3Rpb25MZXZl
bCA9IEluc3BlY3RvckZyb250ZW5kSG9zdCA/IEluc3BlY3RvckZyb250ZW5kSG9zdC5pbnNwZWN0
aW9uTGV2ZWwgOiAxOwotICAgICAgICBsZXQgbGV2ZWxTdHJpbmcgPSBpbnNwZWN0aW9uTGV2ZWwg
PiAxID8gIi0iICsgaW5zcGVjdGlvbkxldmVsIDogIiI7Ci0gICAgICAgIHJldHVybiBgY29tLmFw
cGxlLldlYkluc3BlY3RvciR7bGV2ZWxTdHJpbmd9LiR7bmFtZX1gOwotICAgIH0KLQogICAgIC8v
IFB1YmxpYwogCiAgICAgZ2V0IG5hbWUoKSB7IHJldHVybiB0aGlzLl9uYW1lOyB9CkBAIC05Mywx
MSArODgsMTUgQEAgV0kuU2V0dGluZyA9IGNsYXNzIFNldHRpbmcgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICAgICAgLy8gTWFrZSBhIGNvcHkgb2YgdGhlIGRlZmF1bHQgdmFsdWUgc28gY2hhbmdlcyB0
byBvYmplY3QgdmFsdWVzIGRvbid0IG1vZGlmeSB0aGUgZGVmYXVsdCB2YWx1ZS4KICAgICAgICAg
dGhpcy5fdmFsdWUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuX2RlZmF1bHRWYWx1
ZSkpOwogCi0gICAgICAgIGlmICghd2luZG93Lkluc3BlY3RvclRlc3QgJiYgd2luZG93LmxvY2Fs
U3RvcmFnZSAmJiB0aGlzLl9sb2NhbFN0b3JhZ2VLZXkgaW4gd2luZG93LmxvY2FsU3RvcmFnZSkg
ewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IEpTT04u
cGFyc2Uod2luZG93LmxvY2FsU3RvcmFnZVt0aGlzLl9sb2NhbFN0b3JhZ2VLZXldKTsKLSAgICAg
ICAgICAgIH0gY2F0Y2ggewotICAgICAgICAgICAgICAgIGRlbGV0ZSB3aW5kb3cubG9jYWxTdG9y
YWdlW3RoaXMuX2xvY2FsU3RvcmFnZUtleV07CisgICAgICAgIGlmICghd2luZG93Lkluc3BlY3Rv
clRlc3QgJiYgd2luZG93LmxvY2FsU3RvcmFnZSkgeworICAgICAgICAgICAgbGV0IGtleSA9IFdJ
LlNldHRpbmcuX2xvY2FsU3RvcmFnZUtleVByZWZpeCArIHRoaXMuX25hbWU7CisgICAgICAgICAg
ICBsZXQgaXRlbSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpOworICAgICAgICAg
ICAgaWYgKGl0ZW0gIT09IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAg
ICAgICAgICAgICB0aGlzLl92YWx1ZSA9IEpTT04ucGFyc2UoaXRlbSk7CisgICAgICAgICAgICAg
ICAgfSBjYXRjaCB7CisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVt
b3ZlSXRlbShrZXkpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCkBAIC0xMTcsMTEgKzExNiwxMiBAQCBXSS5TZXR0aW5nID0gY2xhc3MgU2V0dGluZyBleHRl
bmRzIFdJLk9iamVjdAogICAgIHNhdmUoKQogICAgIHsKICAgICAgICAgaWYgKCF3aW5kb3cuSW5z
cGVjdG9yVGVzdCAmJiB3aW5kb3cubG9jYWxTdG9yYWdlKSB7CisgICAgICAgICAgICBsZXQga2V5
ID0gV0kuU2V0dGluZy5fbG9jYWxTdG9yYWdlS2V5UHJlZml4ICsgdGhpcy5fbmFtZTsKICAgICAg
ICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5zaGFsbG93RXF1YWwodGhp
cy5fdmFsdWUsIHRoaXMuX2RlZmF1bHRWYWx1ZSkpCi0gICAgICAgICAgICAgICAgICAgIGRlbGV0
ZSB3aW5kb3cubG9jYWxTdG9yYWdlW3RoaXMuX2xvY2FsU3RvcmFnZUtleV07CisgICAgICAgICAg
ICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpOwogICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZVt0aGlz
Ll9sb2NhbFN0b3JhZ2VLZXldID0gSlNPTi5zdHJpbmdpZnkodGhpcy5fdmFsdWUpOworICAgICAg
ICAgICAgICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBKU09OLnN0cmlu
Z2lmeSh0aGlzLl92YWx1ZSkpOwogICAgICAgICAgICAgfSBjYXRjaCB7CiAgICAgICAgICAgICAg
ICAgY29uc29sZS5lcnJvcigiRXJyb3Igc2F2aW5nIHNldHRpbmcgd2l0aCBuYW1lOiAiICsgdGhp
cy5fbmFtZSk7CiAgICAgICAgICAgICB9CkBAIC0xMzcsNiArMTM3LDE0IEBAIFdJLlNldHRpbmcg
PSBjbGFzcyBTZXR0aW5nIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgfQogfTsKIAorV0kuU2V0dGlu
Zy5fbG9jYWxTdG9yYWdlS2V5UHJlZml4ID0gKGZ1bmN0aW9uKCkgeworICAgIGxldCBpbnNwZWN0
aW9uTGV2ZWwgPSBJbnNwZWN0b3JGcm9udGVuZEhvc3QgPyBJbnNwZWN0b3JGcm9udGVuZEhvc3Qu
aW5zcGVjdGlvbkxldmVsIDogMTsKKyAgICBsZXQgbGV2ZWxTdHJpbmcgPSBpbnNwZWN0aW9uTGV2
ZWwgPiAxID8gIi0iICsgaW5zcGVjdGlvbkxldmVsIDogIiI7CisgICAgcmV0dXJuIGBjb20uYXBw
bGUuV2ViSW5zcGVjdG9yJHtsZXZlbFN0cmluZ30uYDsKK30pKCk7CisKK1dJLlNldHRpbmcuaXNG
aXJzdExhdW5jaCA9ICEhd2luZG93Lkluc3BlY3RvclRlc3QgfHwgKHdpbmRvdy5sb2NhbFN0b3Jh
Z2UgJiYgT2JqZWN0LmtleXMod2luZG93LmxvY2FsU3RvcmFnZSkuZXZlcnkoKGtleSkgPT4gIWtl
eS5zdGFydHNXaXRoKFdJLlNldHRpbmcuX2xvY2FsU3RvcmFnZUtleVByZWZpeCkpKTsKKwogV0ku
U2V0dGluZy5FdmVudCA9IHsKICAgICBDaGFuZ2VkOiAic2V0dGluZy1jaGFuZ2VkIgogfTsKQEAg
LTE5Nyw5ICsyMDUsNyBAQCBXSS5zZXR0aW5ncyA9IHsKICAgICBzZWFyY2hSZWd1bGFyRXhwcmVz
c2lvbjogbmV3IFdJLlNldHRpbmcoInNlYXJjaC1yZWd1bGFyLWV4cHJlc3Npb24iLCBmYWxzZSks
CiAgICAgc2VsZWN0ZWROZXR3b3JrRGV0YWlsQ29udGVudFZpZXdJZGVudGlmaWVyOiBuZXcgV0ku
U2V0dGluZygibmV0d29yay1kZXRhaWwtY29udGVudC12aWV3LWlkZW50aWZpZXIiLCAicHJldmll
dyIpLAogICAgIHNvdXJjZU1hcHNFbmFibGVkOiBuZXcgV0kuU2V0dGluZygic291cmNlLW1hcHMt
ZW5hYmxlZCIsIHRydWUpLAotICAgIHNob3dBbGxNaWNyb3Rhc2tzQnJlYWtwb2ludDogbmV3IFdJ
LlNldHRpbmcoInNob3ctYWxsLW1pY3JvdGFza3MtYnJlYWtwb2ludCIsIGZhbHNlKSwKICAgICBz
aG93QWxsUmVxdWVzdHNCcmVha3BvaW50OiBuZXcgV0kuU2V0dGluZygic2hvdy1hbGwtcmVxdWVz
dHMtYnJlYWtwb2ludCIsIGZhbHNlKSwKLSAgICBzaG93QXNzZXJ0aW9uRmFpbHVyZXNCcmVha3Bv
aW50OiBuZXcgV0kuU2V0dGluZygic2hvdy1hc3NlcnRpb24tZmFpbHVyZXMtYnJlYWtwb2ludCIs
IHRydWUpLAogICAgIHNob3dDYW52YXNQYXRoOiBuZXcgV0kuU2V0dGluZygic2hvdy1jYW52YXMt
cGF0aCIsIGZhbHNlKSwKICAgICBzaG93SW1hZ2VHcmlkOiBuZXcgV0kuU2V0dGluZygic2hvdy1p
bWFnZS1ncmlkIiwgdHJ1ZSksCiAgICAgc2hvd0ludmlzaWJsZUNoYXJhY3RlcnM6IG5ldyBXSS5T
ZXR0aW5nKCJzaG93LWludmlzaWJsZS1jaGFyYWN0ZXJzIiwgISFXSS5TZXR0aW5nLm1pZ3JhdGVW
YWx1ZSgic2hvdy1pbnZhbGlkLWNoYXJhY3RlcnMiKSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dlck1hbmFnZXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dl
ck1hbmFnZXIuanMKaW5kZXggN2Y0ZmQ0YzBkODMxZGRkZGY4M2E3NzIwMjFhMDMwZTY3OTRlNDY1
Mi4uMDdjZDJiMzZjZjZiYjY5MTU5OGVkMmU2YWY3MjgwNTg5MjdhZDY3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGVidWdnZXJN
YW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5qcwpAQCAtNTMsNDYgKzUzLDI4IEBAIFdJLkRlYnVnZ2Vy
TWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICB0aGlzLl9icmVha3BvaW50c0VuYWJsZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImJyZWFr
cG9pbnRzLWVuYWJsZWQiLCB0cnVlKTsKICAgICAgICAgdGhpcy5fYXN5bmNTdGFja1RyYWNlRGVw
dGhTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImFzeW5jLXN0YWNrLXRyYWNlLWRlcHRoIiwgMjAw
KTsKIAotICAgICAgICBjb25zdCBzcGVjaWFsQnJlYWtwb2ludExvY2F0aW9uID0gbmV3IFdJLlNv
dXJjZUNvZGVMb2NhdGlvbihudWxsLCBJbmZpbml0eSwgSW5maW5pdHkpOworICAgICAgICB0aGlz
Ll9kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50U2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKCJk
ZWJ1Z2dlci1zdGF0ZW1lbnRzLWJyZWFrcG9pbnQiLCB7fSk7CisgICAgICAgIHRoaXMuX2RlYnVn
Z2VyU3RhdGVtZW50c0JyZWFrcG9pbnQgPSBudWxsOwogCi0gICAgICAgIHRoaXMuX2RlYnVnZ2Vy
U3RhdGVtZW50c0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKCJicmVh
ay1vbi1kZWJ1Z2dlci1zdGF0ZW1lbnRzIiwgdHJ1ZSk7Ci0gICAgICAgIHRoaXMuX2RlYnVnZ2Vy
U3RhdGVtZW50c0JyZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQoc3BlY2lh
bEJyZWFrcG9pbnRMb2NhdGlvbiwgewotICAgICAgICAgICAgZGlzYWJsZWQ6ICF0aGlzLl9kZWJ1
Z2dlclN0YXRlbWVudHNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUsCi0gICAgICAgIH0p
OwotICAgICAgICB0aGlzLl9kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50LnJlc29sdmVkID0g
dHJ1ZTsKKyAgICAgICAgdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnRTZXR0aW5nID0gbmV3
IFdJLlNldHRpbmcoImFsbC1leGNlcHRpb25zLWJyZWFrcG9pbnQiLCB7ZGlzYWJsZWQ6IHRydWV9
KTsKKyAgICAgICAgdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBudWxsOwogCi0gICAg
ICAgIHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcgPSBuZXcgV0ku
U2V0dGluZygiYnJlYWstb24tYWxsLWV4Y2VwdGlvbnMiLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMu
X2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KHNw
ZWNpYWxCcmVha3BvaW50TG9jYXRpb24sIHsKLSAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5f
YWxsRXhjZXB0aW9uc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwKLSAgICAgICAgfSk7
Ci0gICAgICAgIHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50LnJlc29sdmVkID0gdHJ1ZTsK
KyAgICAgICAgdGhpcy5fdW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludFNldHRpbmcgPSBuZXcg
V0kuU2V0dGluZygidW5jYXVnaHQtZXhjZXB0aW9ucy1icmVha3BvaW50Iiwge2Rpc2FibGVkOiB0
cnVlfSk7CisgICAgICAgIHRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBudWxs
OwogCi0gICAgICAgIHRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnRFbmFibGVkU2V0
dGluZyA9IG5ldyBXSS5TZXR0aW5nKCJicmVhay1vbi11bmNhdWdodC1leGNlcHRpb25zIiwgZmFs
c2UpOwotICAgICAgICB0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50ID0gbmV3IFdJ
LkphdmFTY3JpcHRCcmVha3BvaW50KHNwZWNpYWxCcmVha3BvaW50TG9jYXRpb24sIHsKLSAgICAg
ICAgICAgIGRpc2FibGVkOiAhdGhpcy5fdW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludEVuYWJs
ZWRTZXR0aW5nLnZhbHVlLAotICAgICAgICB9KTsKLSAgICAgICAgdGhpcy5fdW5jYXVnaHRFeGNl
cHRpb25zQnJlYWtwb2ludC5yZXNvbHZlZCA9IHRydWU7CisgICAgICAgIHRoaXMuX2Fzc2VydGlv
bkZhaWx1cmVzQnJlYWtwb2ludFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZygiYXNzZXJ0aW9uLWZh
aWx1cmVzLWJyZWFrcG9pbnQiLCBudWxsKTsKKyAgICAgICAgaWYgKFdJLlNldHRpbmcuaXNGaXJz
dExhdW5jaCkKKyAgICAgICAgICAgIHRoaXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludFNl
dHRpbmcudmFsdWUgPSB7ZGlzYWJsZWQ6IHRydWV9OworICAgICAgICB0aGlzLl9hc3NlcnRpb25G
YWlsdXJlc0JyZWFrcG9pbnQgPSBudWxsOwogCi0gICAgICAgIHRoaXMuX2Fzc2VydGlvbkZhaWx1
cmVzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImJyZWFrLW9uLWFz
c2VydGlvbi1mYWlsdXJlcyIsIGZhbHNlKTsKLSAgICAgICAgdGhpcy5fYXNzZXJ0aW9uRmFpbHVy
ZXNCcmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KHNwZWNpYWxCcmVha3Bv
aW50TG9jYXRpb24sIHsKLSAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5fYXNzZXJ0aW9uRmFp
bHVyZXNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUsCi0gICAgICAgIH0pOwotICAgICAg
ICB0aGlzLl9hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQucmVzb2x2ZWQgPSB0cnVlOwotCi0g
ICAgICAgIHRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50RW5hYmxlZFNldHRpbmcgPSBuZXcg
V0kuU2V0dGluZygiYnJlYWstb24tYWxsLW1pY3JvdGFza3MiLCBmYWxzZSk7Ci0gICAgICAgIHRo
aXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50
KHNwZWNpYWxCcmVha3BvaW50TG9jYXRpb24sIHsKLSAgICAgICAgICAgIGRpc2FibGVkOiAhdGhp
cy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwKLSAgICAgICAg
fSk7Ci0gICAgICAgIHRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50LnJlc29sdmVkID0gdHJ1
ZTsKKyAgICAgICAgdGhpcy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnRTZXR0aW5nID0gbmV3IFdJ
LlNldHRpbmcoImFsbC1taWNyb3Rhc2tzLWJyZWFrcG9pbnQiLCBudWxsKTsKKyAgICAgICAgdGhp
cy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnQgPSBudWxsOwogCiAgICAgICAgIHRoaXMuX2JyZWFr
cG9pbnRzID0gW107CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRDb250ZW50SWRlbnRpZmllck1h
cCA9IG5ldyBNdWx0aW1hcDsKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludFNjcmlwdElkZW50aWZp
ZXJNYXAgPSBuZXcgTXVsdGltYXA7CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRJZE1hcCA9IG5l
dyBNYXA7CiAKLSAgICAgICAgdGhpcy5fYnJlYWtPbkV4Y2VwdGlvbnNTdGF0ZSA9ICJub25lIjsK
LSAgICAgICAgdGhpcy5fdXBkYXRlQnJlYWtPbkV4Y2VwdGlvbnNTdGF0ZSgpOwotCiAgICAgICAg
IHRoaXMuX25leHRCcmVha3BvaW50QWN0aW9uSWRlbnRpZmllciA9IDE7CiAKICAgICAgICAgdGhp
cy5fYmxhY2tib3hlZFVSTHNTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImRlYnVnZ2VyLWJsYWNr
Ym94ZWQtdXJscyIsIFtdKTsKQEAgLTE0Miw2ICsxMjQsNjAgQEAgV0kuRGVidWdnZXJNYW5hZ2Vy
ID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cyA9IGZhbHNlOwogICAgICAg
ICB9KSgpKTsKKworICAgICAgICBXSS5UYXJnZXQucmVnaXN0ZXJJbml0aWFsaXphdGlvblByb21p
c2UoKGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIC8vIFdhaXQgb25lIG1pY3JvdGFzayBzbyB0
aGF0IGBXSS5kZWJ1Z2dlck1hbmFnZXJgIGNhbiBiZSBpbml0aWFsaXplZC4KKyAgICAgICAgICAg
IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHF1ZXVlTWljcm90YXNrKHJl
c29sdmUpKTsKKworICAgICAgICAgICAgbGV0IGxvYWRTcGVjaWFsQnJlYWtwb2ludCA9IChzZXR0
aW5nLCBlbmFibGVkU2V0dGluZ3NLZXksIHNob3duU2V0dGluZ3NLZXkpID0+IHsKKyAgICAgICAg
ICAgICAgICBsZXQgc2VyaWFsaXplZEJyZWFrcG9pbnQgPSBzZXR0aW5nLnZhbHVlOworCisgICAg
ICAgICAgICAgICAgaWYgKCFzZXJpYWxpemVkQnJlYWtwb2ludCAmJiAoIXNob3duU2V0dGluZ3NL
ZXkgfHwgV0kuU2V0dGluZy5taWdyYXRlVmFsdWUoc2hvd25TZXR0aW5nc0tleSkpKSB7CisgICAg
ICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWRCcmVha3BvaW50ID0gc2V0dGluZy52YWx1ZSA9IHt9
OworICAgICAgICAgICAgICAgICAgICBzZXR0aW5nLnNhdmUoKTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBpZiAoV0kuU2V0dGluZy5taWdyYXRlVmFsdWUoZW5hYmxlZFNl
dHRpbmdzS2V5KSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXNlcmlhbGl6ZWRCcmVha3Bv
aW50KQorICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZEJyZWFrcG9pbnQgPSBzZXR0
aW5nLnZhbHVlID0ge307CisgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWRCcmVha3BvaW50
LmRpc2FibGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHNldHRpbmcuc2F2ZSgpOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICghc2VyaWFsaXplZEJyZWFr
cG9pbnQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVNwZWNpYWxCcmVha3BvaW50KHNlcmlhbGl6ZWRCcmVha3Bv
aW50KTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIHRoaXMuX3Jlc3RvcmluZ0JyZWFr
cG9pbnRzID0gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50
LnN1cHBvcnRzRGVidWdnZXJTdGF0ZW1lbnRzKCkpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9k
ZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50ID0gbG9hZFNwZWNpYWxCcmVha3BvaW50KHRoaXMu
X2RlYnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9pbnRTZXR0aW5nLCAiYnJlYWstb24tZGVidWdnZXIt
c3RhdGVtZW50cyIpOworICAgICAgICAgICAgICAgIGlmICh0aGlzLl9kZWJ1Z2dlclN0YXRlbWVu
dHNCcmVha3BvaW50KQorICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEJyZWFrcG9pbnQodGhp
cy5fZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50ID0gbG9hZFNwZWNpYWxCcmVha3Bv
aW50KHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50U2V0dGluZywgImJyZWFrLW9uLWFsbC1l
eGNlcHRpb25zIik7CisgICAgICAgICAgICBpZiAodGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9p
bnQpCisgICAgICAgICAgICAgICAgdGhpcy5hZGRCcmVha3BvaW50KHRoaXMuX2FsbEV4Y2VwdGlv
bnNCcmVha3BvaW50KTsKKworICAgICAgICAgICAgdGhpcy5fdW5jYXVnaHRFeGNlcHRpb25zQnJl
YWtwb2ludCA9IGxvYWRTcGVjaWFsQnJlYWtwb2ludCh0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNC
cmVha3BvaW50U2V0dGluZywgImJyZWFrLW9uLXVuY2F1Z2h0LWV4Y2VwdGlvbnMiKTsKKyAgICAg
ICAgICAgIGlmICh0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50KQorICAgICAgICAg
ICAgICAgIHRoaXMuYWRkQnJlYWtwb2ludCh0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3Bv
aW50KTsKKworICAgICAgICAgICAgdGhpcy5fYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50ID0g
bG9hZFNwZWNpYWxCcmVha3BvaW50KHRoaXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludFNl
dHRpbmcsICJicmVhay1vbi1hc3NlcnRpb24tZmFpbHVyZXMiLCAic2hvdy1hc3NlcnRpb24tZmFp
bHVyZXMtYnJlYWtwb2ludCIpOworICAgICAgICAgICAgaWYgKHRoaXMuX2Fzc2VydGlvbkZhaWx1
cmVzQnJlYWtwb2ludCkKKyAgICAgICAgICAgICAgICB0aGlzLmFkZEJyZWFrcG9pbnQodGhpcy5f
YXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50KTsKKworICAgICAgICAgICAgaWYgKFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50LnN1cHBvcnRzTWljcm90YXNrcygpKSB7CisgICAgICAgICAgICAgICAg
dGhpcy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnQgPSBsb2FkU3BlY2lhbEJyZWFrcG9pbnQodGhp
cy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnRTZXR0aW5nLCAiYnJlYWstb24tYWxsLW1pY3JvdGFz
a3MiLCAic2hvdy1hbGwtbWljcm90YXNrcy1icmVha3BvaW50Iik7CisgICAgICAgICAgICAgICAg
aWYgKHRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50KQorICAgICAgICAgICAgICAgICAgICB0
aGlzLmFkZEJyZWFrcG9pbnQodGhpcy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnQpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cyA9IGZhbHNl
OworICAgICAgICB9KSgpKTsKICAgICB9CiAKICAgICAvLyBUYXJnZXQKQEAgLTE1NCwxNiArMTkw
LDE2IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRz
IFdJLk9iamVjdAogICAgICAgICB0YXJnZXQuRGVidWdnZXJBZ2VudC5lbmFibGUoKTsKICAgICAg
ICAgdGFyZ2V0LkRlYnVnZ2VyQWdlbnQuc2V0QnJlYWtwb2ludHNBY3RpdmUodGhpcy5fYnJlYWtw
b2ludHNFbmFibGVkU2V0dGluZy52YWx1ZSk7CiAKLSAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAo
aU9TIDEzLjEpOiBEZWJ1Z2dlci5zZXRQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzIGRpZCBub3Qg
ZXhpc3QgeWV0LgotICAgICAgICBpZiAodGFyZ2V0Lmhhc0NvbW1hbmQoIkRlYnVnZ2VyLnNldFBh
dXNlT25EZWJ1Z2dlclN0YXRlbWVudHMiKSkKLSAgICAgICAgICAgIHRhcmdldC5EZWJ1Z2dlckFn
ZW50LnNldFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHMoIXRoaXMuX2RlYnVnZ2VyU3RhdGVtZW50
c0JyZWFrcG9pbnQuZGlzYWJsZWQpOworICAgICAgICBpZiAodGhpcy5fZGVidWdnZXJTdGF0ZW1l
bnRzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVNwZWNpYWxCcmVha3BvaW50
KHRoaXMuX2RlYnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9pbnQsIHRhcmdldCk7CiAKLSAgICAgICAg
dGFyZ2V0LkRlYnVnZ2VyQWdlbnQuc2V0UGF1c2VPbkV4Y2VwdGlvbnModGhpcy5fYnJlYWtPbkV4
Y2VwdGlvbnNTdGF0ZSk7Ci0gICAgICAgIHRhcmdldC5EZWJ1Z2dlckFnZW50LnNldFBhdXNlT25B
c3NlcnRpb25zKCF0aGlzLl9hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQuZGlzYWJsZWQpOwor
ICAgICAgICB0aGlzLl9zZXRQYXVzZU9uRXhjZXB0aW9ucyh0YXJnZXQpOwogCi0gICAgICAgIC8v
IENPTVBBVElCSUxJVFkgKGlPUyAxMyk6IERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VPbk1pY3JvdGFz
a3MgZGlkIG5vdCBleGlzdCB5ZXQuCi0gICAgICAgIGlmICh0YXJnZXQuaGFzQ29tbWFuZCgiRGVi
dWdnZXIuc2V0UGF1c2VPbk1pY3JvdGFza3MiKSkKLSAgICAgICAgICAgIHRhcmdldC5EZWJ1Z2dl
ckFnZW50LnNldFBhdXNlT25NaWNyb3Rhc2tzKCF0aGlzLl9hbGxNaWNyb3Rhc2tzQnJlYWtwb2lu
dC5kaXNhYmxlZCk7CisgICAgICAgIGlmICh0aGlzLl9hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9p
bnQpCisgICAgICAgICAgICB0aGlzLl91cGRhdGVTcGVjaWFsQnJlYWtwb2ludCh0aGlzLl9hc3Nl
cnRpb25GYWlsdXJlc0JyZWFrcG9pbnQsIHRhcmdldCk7CisKKyAgICAgICAgaWYgKHRoaXMuX2Fs
bE1pY3JvdGFza3NCcmVha3BvaW50KQorICAgICAgICAgICAgdGhpcy5fdXBkYXRlU3BlY2lhbEJy
ZWFrcG9pbnQodGhpcy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnQsIHRhcmdldCk7CiAKICAgICAg
ICAgdGFyZ2V0LkRlYnVnZ2VyQWdlbnQuc2V0QXN5bmNTdGFja1RyYWNlRGVwdGgodGhpcy5fYXN5
bmNTdGFja1RyYWNlRGVwdGhTZXR0aW5nLnZhbHVlKTsKIApAQCAtMzAxLDYgKzMzNywyMiBAQCBX
SS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmpl
Y3QKICAgICBnZXQgYWxsTWljcm90YXNrc0JyZWFrcG9pbnQoKSB7IHJldHVybiB0aGlzLl9hbGxN
aWNyb3Rhc2tzQnJlYWtwb2ludDsgfQogICAgIGdldCBicmVha3BvaW50cygpIHsgcmV0dXJuIHRo
aXMuX2JyZWFrcG9pbnRzOyB9CiAKKyAgICBjcmVhdGVBc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9p
bnQob3B0aW9ucyA9IHt9KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2Fz
c2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludCk7CisKKyAgICAgICAgdGhpcy5fYXNzZXJ0aW9uRmFp
bHVyZXNCcmVha3BvaW50ID0gdGhpcy5fY3JlYXRlU3BlY2lhbEJyZWFrcG9pbnQob3B0aW9ucyk7
CisgICAgICAgIHRoaXMuYWRkQnJlYWtwb2ludCh0aGlzLl9hc3NlcnRpb25GYWlsdXJlc0JyZWFr
cG9pbnQpOworICAgIH0KKworICAgIGNyZWF0ZUFsbE1pY3JvdGFza3NCcmVha3BvaW50KG9wdGlv
bnMgPSB7fSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9hbGxNaWNyb3Rh
c2tzQnJlYWtwb2ludCk7CisKKyAgICAgICAgdGhpcy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnQg
PSB0aGlzLl9jcmVhdGVTcGVjaWFsQnJlYWtwb2ludChvcHRpb25zKTsKKyAgICAgICAgdGhpcy5h
ZGRCcmVha3BvaW50KHRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50KTsKKyAgICB9CisKICAg
ICBicmVha3BvaW50Rm9ySWRlbnRpZmllcihpZCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9icmVha3BvaW50SWRNYXAuZ2V0KGlkKSB8fCBudWxsOwpAQCAtMzU4LDExICs0MTAsOSBAQCBX
SS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmpl
Y3QKIAogICAgICAgICB0aGlzLl9icmVha3BvaW50c0VuYWJsZWRTZXR0aW5nLnZhbHVlID0gZW5h
YmxlZDsKIAotICAgICAgICB0aGlzLl91cGRhdGVCcmVha09uRXhjZXB0aW9uc1N0YXRlKCk7Ci0K
ICAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpIHsKICAgICAgICAgICAgIHRh
cmdldC5EZWJ1Z2dlckFnZW50LnNldEJyZWFrcG9pbnRzQWN0aXZlKGVuYWJsZWQpOwotICAgICAg
ICAgICAgdGFyZ2V0LkRlYnVnZ2VyQWdlbnQuc2V0UGF1c2VPbkV4Y2VwdGlvbnModGhpcy5fYnJl
YWtPbkV4Y2VwdGlvbnNTdGF0ZSk7CisgICAgICAgICAgICB0aGlzLl9zZXRQYXVzZU9uRXhjZXB0
aW9ucyh0YXJnZXQpOwogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRzRW5hYmxlZERpZENo
YW5nZSk7CkBAIC02NDAsMjkgKzY5MCwyOCBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBE
ZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIGFkZEJyZWFrcG9pbnQoYnJl
YWtwb2ludCkKICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFu
Y2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJy
ZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCwgYnJlYWtwb2ludCk7
CiAgICAgICAgIGlmICghYnJlYWtwb2ludCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBpZiAoYnJlYWtwb2ludC5zcGVjaWFsKSB7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludEFkZGVkLCB7
YnJlYWtwb2ludH0pOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoYnJlYWtwb2lu
dC5zcGVjaWFsKQorICAgICAgICAgICAgdGhpcy5fdXBkYXRlU3BlY2lhbEJyZWFrcG9pbnQoYnJl
YWtwb2ludCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQuY29u
dGVudElkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludENvbnRlbnRJ
ZGVudGlmaWVyTWFwLmFkZChicmVha3BvaW50LmNvbnRlbnRJZGVudGlmaWVyLCBicmVha3BvaW50
KTsKKworICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQuc2NyaXB0SWRlbnRpZmllcikKKyAgICAg
ICAgICAgICAgICB0aGlzLl9icmVha3BvaW50U2NyaXB0SWRlbnRpZmllck1hcC5hZGQoYnJlYWtw
b2ludC5zY3JpcHRJZGVudGlmaWVyLCBicmVha3BvaW50KTsKKworICAgICAgICAgICAgdGhpcy5f
YnJlYWtwb2ludHMucHVzaChicmVha3BvaW50KTsKKworICAgICAgICAgICAgaWYgKCFicmVha3Bv
aW50LmRpc2FibGVkKQorICAgICAgICAgICAgICAgIHRoaXMuX3NldEJyZWFrcG9pbnQoYnJlYWtw
b2ludCk7CisKKyAgICAgICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpCisg
ICAgICAgICAgICAgICAgV0kub2JqZWN0U3RvcmVzLmJyZWFrcG9pbnRzLnB1dE9iamVjdChicmVh
a3BvaW50KTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChicmVha3BvaW50LmNvbnRlbnRJZGVu
dGlmaWVyKQotICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludENvbnRlbnRJZGVudGlmaWVyTWFw
LmFkZChicmVha3BvaW50LmNvbnRlbnRJZGVudGlmaWVyLCBicmVha3BvaW50KTsKLQotICAgICAg
ICBpZiAoYnJlYWtwb2ludC5zY3JpcHRJZGVudGlmaWVyKQotICAgICAgICAgICAgdGhpcy5fYnJl
YWtwb2ludFNjcmlwdElkZW50aWZpZXJNYXAuYWRkKGJyZWFrcG9pbnQuc2NyaXB0SWRlbnRpZmll
ciwgYnJlYWtwb2ludCk7Ci0KLSAgICAgICAgdGhpcy5fYnJlYWtwb2ludHMucHVzaChicmVha3Bv
aW50KTsKLQotICAgICAgICBpZiAoIWJyZWFrcG9pbnQuZGlzYWJsZWQpCi0gICAgICAgICAgICB0
aGlzLl9zZXRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotCi0gICAgICAgIGlmICghdGhpcy5fcmVz
dG9yaW5nQnJlYWtwb2ludHMpCi0gICAgICAgICAgICBXSS5vYmplY3RTdG9yZXMuYnJlYWtwb2lu
dHMucHV0T2JqZWN0KGJyZWFrcG9pbnQpOwotCiAgICAgICAgIHRoaXMuYWRkUHJvYmVzRm9yQnJl
YWtwb2ludChicmVha3BvaW50KTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludEFkZGVkLCB7YnJlYWtwb2lu
dH0pOwpAQCAtNjcwLDM2ICs3MTksNDYgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVi
dWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICByZW1vdmVCcmVha3BvaW50KGJy
ZWFrcG9pbnQpCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3Rh
bmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQpOworICAgICAgICBjb25zb2xlLmFzc2VydChi
cmVha3BvaW50IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQsIGJyZWFrcG9pbnQp
OwogICAgICAgICBpZiAoIWJyZWFrcG9pbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludC5yZW1vdmFibGUpOworICAgICAgICBjb25zb2xl
LmFzc2VydChicmVha3BvaW50LnJlbW92YWJsZSwgYnJlYWtwb2ludCk7CiAgICAgICAgIGlmICgh
YnJlYWtwb2ludC5yZW1vdmFibGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYg
KGJyZWFrcG9pbnQuc3BlY2lhbCkgewotICAgICAgICAgICAgYnJlYWtwb2ludC5kaXNhYmxlZCA9
IHRydWU7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5EZWJ1
Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludFJlbW92ZWQsIHticmVha3BvaW50fSk7Ci0gICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIGxldCBzcGVjaWFsID0gYnJlYWtwb2ludC5zcGVjaWFs
OworCisgICAgICAgIGlmICghc3BlY2lhbCkgeworICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2lu
dHMucmVtb3ZlKGJyZWFrcG9pbnQpOworCisgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5pZGVu
dGlmaWVyKQorICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZUJyZWFrcG9pbnQoYnJlYWtwb2lu
dCk7CisKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50LmNvbnRlbnRJZGVudGlmaWVyKQorICAg
ICAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRDb250ZW50SWRlbnRpZmllck1hcC5kZWxldGUo
YnJlYWtwb2ludC5jb250ZW50SWRlbnRpZmllciwgYnJlYWtwb2ludCk7CisKKyAgICAgICAgICAg
IGlmIChicmVha3BvaW50LnNjcmlwdElkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgdGhpcy5f
YnJlYWtwb2ludFNjcmlwdElkZW50aWZpZXJNYXAuZGVsZXRlKGJyZWFrcG9pbnQuc2NyaXB0SWRl
bnRpZmllciwgYnJlYWtwb2ludCk7CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9icmVha3Bv
aW50cy5yZW1vdmUoYnJlYWtwb2ludCk7Ci0KLSAgICAgICAgaWYgKGJyZWFrcG9pbnQuaWRlbnRp
ZmllcikKLSAgICAgICAgICAgIHRoaXMuX3JlbW92ZUJyZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0K
LSAgICAgICAgaWYgKGJyZWFrcG9pbnQuY29udGVudElkZW50aWZpZXIpCi0gICAgICAgICAgICB0
aGlzLl9icmVha3BvaW50Q29udGVudElkZW50aWZpZXJNYXAuZGVsZXRlKGJyZWFrcG9pbnQuY29u
dGVudElkZW50aWZpZXIsIGJyZWFrcG9pbnQpOwotCi0gICAgICAgIGlmIChicmVha3BvaW50LnNj
cmlwdElkZW50aWZpZXIpCi0gICAgICAgICAgICB0aGlzLl9icmVha3BvaW50U2NyaXB0SWRlbnRp
Zmllck1hcC5kZWxldGUoYnJlYWtwb2ludC5zY3JpcHRJZGVudGlmaWVyLCBicmVha3BvaW50KTsK
LQogICAgICAgICAvLyBEaXNhYmxlIHRoZSBicmVha3BvaW50IGZpcnN0LCBzbyByZW1vdmluZyBh
Y3Rpb25zIGRvZXNuJ3QgcmUtYWRkIHRoZSBicmVha3BvaW50LgogICAgICAgICBicmVha3BvaW50
LmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICAgYnJlYWtwb2ludC5jbGVhckFjdGlvbnMoKTsKIAot
ICAgICAgICBpZiAoIXRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzKQorICAgICAgICBpZiAoc3Bl
Y2lhbCkgeworICAgICAgICAgICAgc3dpdGNoIChicmVha3BvaW50KSB7CisgICAgICAgICAgICBj
YXNlIHRoaXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludDoKKyAgICAgICAgICAgICAgICB0
aGlzLl9hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnRTZXR0aW5nLnJlc2V0KCk7CisgICAgICAg
ICAgICAgICAgdGhpcy5fYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50ID0gbnVsbDsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSB0aGlzLl9hbGxNaWNyb3Rhc2tz
QnJlYWtwb2ludDoKKyAgICAgICAgICAgICAgICB0aGlzLl9hbGxNaWNyb3Rhc2tzQnJlYWtwb2lu
dFNldHRpbmcucmVzZXQoKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9hbGxNaWNyb3Rhc2tzQnJl
YWtwb2ludCA9IG51bGw7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzKQogICAgICAgICAg
ICAgV0kub2JqZWN0U3RvcmVzLmJyZWFrcG9pbnRzLmRlbGV0ZU9iamVjdChicmVha3BvaW50KTsK
IAogICAgICAgICB0aGlzLnJlbW92ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CkBA
IC0xMTM5LDYgKzExOTgsOTcgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJN
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBfc2V0UGF1
c2VPbkV4Y2VwdGlvbnModGFyZ2V0KQorICAgIHsKKyAgICAgICAgbGV0IGNvbW1hbmRBcmd1bWVu
dHMgPSB7CisgICAgICAgICAgICBzdGF0ZTogIm5vbmUiLAorICAgICAgICB9OworCisgICAgICAg
IGlmICh0aGlzLl9icmVha3BvaW50c0VuYWJsZWRTZXR0aW5nLnZhbHVlKSB7CisgICAgICAgICAg
ICBpZiAodGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQgJiYgIXRoaXMuX2FsbEV4Y2VwdGlv
bnNCcmVha3BvaW50LmRpc2FibGVkKSB7CisgICAgICAgICAgICAgICAgY29tbWFuZEFyZ3VtZW50
cy5zdGF0ZSA9ICJhbGwiOworICAgICAgICAgICAgICAgIGNvbW1hbmRBcmd1bWVudHMub3B0aW9u
cyA9IHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50Lm9wdGlvbnNUb1Byb3RvY29sKCk7Cisg
ICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQg
JiYgIXRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQuZGlzYWJsZWQpIHsKKyAgICAg
ICAgICAgICAgICBjb21tYW5kQXJndW1lbnRzLnN0YXRlID0gInVuY2F1Z2h0IjsKKyAgICAgICAg
ICAgICAgICBjb21tYW5kQXJndW1lbnRzLm9wdGlvbnMgPSB0aGlzLl91bmNhdWdodEV4Y2VwdGlv
bnNCcmVha3BvaW50Lm9wdGlvbnNUb1Byb3RvY29sKCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIE1hcmsgdGhlIHVuY2F1Z2h0IGJyZWFrcG9pbnQgYXMgdW5yZXNvbHZlZCBpZiAi
YWxsIiBhcyBpdCBpbmNsdWRlcyAidW5jYXVnaHQiLgorICAgICAgICAgICAgLy8gVGhhdCB3YXkg
aXQgaXMgY2xlYXIgaW4gdGhlIHVzZXIgaW50ZXJmYWNlIHRoYXQgdGhlIGJyZWFrcG9pbnQgaXMg
aWdub3JlZC4KKyAgICAgICAgICAgIGlmICh0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3Bv
aW50KQorICAgICAgICAgICAgICAgIHRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQu
cmVzb2x2ZWQgPSBjb21tYW5kQXJndW1lbnRzLnN0YXRlICE9PSAiYWxsIjsKKyAgICAgICAgfQor
CisgICAgICAgIHRhcmdldC5EZWJ1Z2dlckFnZW50LnNldFBhdXNlT25FeGNlcHRpb25zLmludm9r
ZShjb21tYW5kQXJndW1lbnRzKTsKKyAgICB9CisKKyAgICBfY3JlYXRlU3BlY2lhbEJyZWFrcG9p
bnQoc2VyaWFsaXplZEJyZWFrcG9pbnQgPSB7fSkKKyAgICB7CisgICAgICAgIGxldCBsb2NhdGlv
biA9IFdJLlNvdXJjZUNvZGVMb2NhdGlvbi5zcGVjaWFsQnJlYWtwb2ludExvY2F0aW9uOworICAg
ICAgICBzZXJpYWxpemVkQnJlYWtwb2ludC5saW5lTnVtYmVyID0gbG9jYXRpb24ubGluZU51bWJl
cjsKKyAgICAgICAgc2VyaWFsaXplZEJyZWFrcG9pbnQuY29sdW1uTnVtYmVyID0gbG9jYXRpb24u
Y29sdW1uTnVtYmVyOworCisgICAgICAgIHNlcmlhbGl6ZWRCcmVha3BvaW50LnJlc29sdmVkID0g
dHJ1ZTsKKworICAgICAgICByZXR1cm4gV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuZnJvbUpTT04o
c2VyaWFsaXplZEJyZWFrcG9pbnQpOworICAgIH0KKworICAgIF91cGRhdGVTcGVjaWFsQnJlYWtw
b2ludChicmVha3BvaW50LCBzcGVjaWZpY1RhcmdldCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGJyZWFrcG9pbnQuc3BlY2lhbCwgYnJlYWtwb2ludCk7CisKKyAgICAgICAgaWYgKCFi
cmVha3BvaW50LmRpc2FibGVkICYmICF0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cyAmJiAhdGhp
cy5icmVha3BvaW50c0Rpc2FibGVkVGVtcG9yYXJpbHkpCisgICAgICAgICAgICB0aGlzLmJyZWFr
cG9pbnRzRW5hYmxlZCA9IHRydWU7CisKKyAgICAgICAgbGV0IHRhcmdldHMgPSBzcGVjaWZpY1Rh
cmdldCA/IFtzcGVjaWZpY1RhcmdldF0gOiBXSS50YXJnZXRzOworCisgICAgICAgIGxldCBzZXR0
aW5nID0gbnVsbDsKKyAgICAgICAgbGV0IGNvbW1hbmQgPSBudWxsOworICAgICAgICBzd2l0Y2gg
KGJyZWFrcG9pbnQpIHsKKyAgICAgICAgY2FzZSB0aGlzLl9kZWJ1Z2dlclN0YXRlbWVudHNCcmVh
a3BvaW50OgorICAgICAgICAgICAgc2V0dGluZyA9IHRoaXMuX2RlYnVnZ2VyU3RhdGVtZW50c0Jy
ZWFrcG9pbnRTZXR0aW5nOworICAgICAgICAgICAgY29tbWFuZCA9ICJzZXRQYXVzZU9uRGVidWdn
ZXJTdGF0ZW1lbnRzIjsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgdGhpcy5f
YWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQ6CisgICAgICAgICAgICBzZXR0aW5nID0gdGhpcy5fYWxs
RXhjZXB0aW9uc0JyZWFrcG9pbnRTZXR0aW5nOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSB0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50OgorICAgICAgICAgICAg
c2V0dGluZyA9IHRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnRTZXR0aW5nOworICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSB0aGlzLl9hc3NlcnRpb25GYWlsdXJlc0Jy
ZWFrcG9pbnQ6CisgICAgICAgICAgICBzZXR0aW5nID0gdGhpcy5fYXNzZXJ0aW9uRmFpbHVyZXNC
cmVha3BvaW50U2V0dGluZzsKKyAgICAgICAgICAgIGNvbW1hbmQgPSAic2V0UGF1c2VPbkFzc2Vy
dGlvbnMiOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSB0aGlzLl9hbGxNaWNy
b3Rhc2tzQnJlYWtwb2ludDoKKyAgICAgICAgICAgIHNldHRpbmcgPSB0aGlzLl9hbGxNaWNyb3Rh
c2tzQnJlYWtwb2ludFNldHRpbmc7CisgICAgICAgICAgICBjb21tYW5kID0gInNldFBhdXNlT25N
aWNyb3Rhc2tzIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHNldHRpbmcpOworCisgICAgICAgIGlmICghc3BlY2lmaWNUYXJnZXQpCisgICAg
ICAgICAgICBzZXR0aW5nLnZhbHVlID0gYnJlYWtwb2ludC50b0pTT04oKTsKKworICAgICAgICBp
ZiAoY29tbWFuZCkgeworICAgICAgICAgICAgbGV0IGNvbW1hbmRBcmd1bWVudHMgPSB7CisgICAg
ICAgICAgICAgICAgZW5hYmxlZDogIWJyZWFrcG9pbnQuZGlzYWJsZWQsCisgICAgICAgICAgICB9
OworICAgICAgICAgICAgaWYgKCFicmVha3BvaW50LmRpc2FibGVkKQorICAgICAgICAgICAgICAg
IGNvbW1hbmRBcmd1bWVudHMub3B0aW9ucyA9IGJyZWFrcG9pbnQub3B0aW9uc1RvUHJvdG9jb2wo
KTsKKworICAgICAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIHRhcmdldHMpCisgICAgICAgICAg
ICAgICAgdGFyZ2V0LkRlYnVnZ2VyQWdlbnRbY29tbWFuZF0uaW52b2tlKGNvbW1hbmRBcmd1bWVu
dHMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtw
b2ludCA9PT0gdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQgfHwgYnJlYWtwb2ludCA9PT0g
dGhpcy5fdW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludCwgYnJlYWtwb2ludCk7CisgICAgICAg
ICAgICBmb3IgKGxldCB0YXJnZXQgb2YgdGFyZ2V0cykKKyAgICAgICAgICAgICAgICB0aGlzLl9z
ZXRQYXVzZU9uRXhjZXB0aW9ucyh0YXJnZXQpOworICAgICAgICB9CisgICAgfQorCiAgICAgX2Jy
ZWFrcG9pbnREaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICBp
ZiAodGhpcy5faWdub3JlQnJlYWtwb2ludERpc3BsYXlMb2NhdGlvbkRpZENoYW5nZUV2ZW50KQpA
QCAtMTE2Miw0NyArMTMxMiw5IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2Vy
TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgIF9icmVha3BvaW50RGlzYWJsZWRTdGF0ZURp
ZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIGxldCBicmVha3BvaW50ID0gZXZlbnQudGFy
Z2V0OwotICAgICAgICBzd2l0Y2ggKGJyZWFrcG9pbnQpIHsKLSAgICAgICAgY2FzZSB0aGlzLl9k
ZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50OgotICAgICAgICAgICAgaWYgKCFicmVha3BvaW50
LmRpc2FibGVkICYmICF0aGlzLmJyZWFrcG9pbnRzRGlzYWJsZWRUZW1wb3JhcmlseSkKLSAgICAg
ICAgICAgICAgICB0aGlzLmJyZWFrcG9pbnRzRW5hYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICB0
aGlzLl9kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUgPSAh
YnJlYWtwb2ludC5kaXNhYmxlZDsKLSAgICAgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50
YXJnZXRzKQotICAgICAgICAgICAgICAgIHRhcmdldC5EZWJ1Z2dlckFnZW50LnNldFBhdXNlT25E
ZWJ1Z2dlclN0YXRlbWVudHMoIWJyZWFrcG9pbnQuZGlzYWJsZWQpOwotICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIGNhc2UgdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQ6Ci0gICAg
ICAgICAgICBpZiAoIWJyZWFrcG9pbnQuZGlzYWJsZWQgJiYgIXRoaXMuYnJlYWtwb2ludHNEaXNh
YmxlZFRlbXBvcmFyaWx5KQotICAgICAgICAgICAgICAgIHRoaXMuYnJlYWtwb2ludHNFbmFibGVk
ID0gdHJ1ZTsKLSAgICAgICAgICAgIHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50RW5hYmxl
ZFNldHRpbmcudmFsdWUgPSAhYnJlYWtwb2ludC5kaXNhYmxlZDsKLSAgICAgICAgICAgIHRoaXMu
X3VwZGF0ZUJyZWFrT25FeGNlcHRpb25zU3RhdGUoKTsKLSAgICAgICAgICAgIGZvciAobGV0IHRh
cmdldCBvZiBXSS50YXJnZXRzKQotICAgICAgICAgICAgICAgIHRhcmdldC5EZWJ1Z2dlckFnZW50
LnNldFBhdXNlT25FeGNlcHRpb25zKHRoaXMuX2JyZWFrT25FeGNlcHRpb25zU3RhdGUpOwotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGNhc2UgdGhpcy5fdW5jYXVnaHRFeGNlcHRpb25z
QnJlYWtwb2ludDoKLSAgICAgICAgICAgIGlmICghYnJlYWtwb2ludC5kaXNhYmxlZCAmJiAhdGhp
cy5icmVha3BvaW50c0Rpc2FibGVkVGVtcG9yYXJpbHkpCi0gICAgICAgICAgICAgICAgdGhpcy5i
cmVha3BvaW50c0VuYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgdGhpcy5fdW5jYXVnaHRFeGNl
cHRpb25zQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nLnZhbHVlID0gIWJyZWFrcG9pbnQuZGlzYWJs
ZWQ7Ci0gICAgICAgICAgICB0aGlzLl91cGRhdGVCcmVha09uRXhjZXB0aW9uc1N0YXRlKCk7Ci0g
ICAgICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykKLSAgICAgICAgICAgICAg
ICB0YXJnZXQuRGVidWdnZXJBZ2VudC5zZXRQYXVzZU9uRXhjZXB0aW9ucyh0aGlzLl9icmVha09u
RXhjZXB0aW9uc1N0YXRlKTsKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBjYXNlIHRo
aXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludDoKLSAgICAgICAgICAgIGlmICghYnJlYWtw
b2ludC5kaXNhYmxlZCAmJiAhdGhpcy5icmVha3BvaW50c0Rpc2FibGVkVGVtcG9yYXJpbHkpCi0g
ICAgICAgICAgICAgICAgdGhpcy5icmVha3BvaW50c0VuYWJsZWQgPSB0cnVlOwotICAgICAgICAg
ICAgdGhpcy5fYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUg
PSAhYnJlYWtwb2ludC5kaXNhYmxlZDsKLSAgICAgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBX
SS50YXJnZXRzKQotICAgICAgICAgICAgICAgIHRhcmdldC5EZWJ1Z2dlckFnZW50LnNldFBhdXNl
T25Bc3NlcnRpb25zKCFicmVha3BvaW50LmRpc2FibGVkKTsKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICBjYXNlIHRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50OgotICAgICAgICAg
ICAgaWYgKCFicmVha3BvaW50LmRpc2FibGVkICYmICF0aGlzLmJyZWFrcG9pbnRzRGlzYWJsZWRU
ZW1wb3JhcmlseSkKLSAgICAgICAgICAgICAgICB0aGlzLmJyZWFrcG9pbnRzRW5hYmxlZCA9IHRy
dWU7Ci0gICAgICAgICAgICB0aGlzLl9hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludEVuYWJsZWRTZXR0
aW5nLnZhbHVlID0gIWJyZWFrcG9pbnQuZGlzYWJsZWQ7Ci0gICAgICAgICAgICBmb3IgKGxldCB0
YXJnZXQgb2YgV0kudGFyZ2V0cykKLSAgICAgICAgICAgICAgICB0YXJnZXQuRGVidWdnZXJBZ2Vu
dC5zZXRQYXVzZU9uTWljcm90YXNrcyghYnJlYWtwb2ludC5kaXNhYmxlZCk7CisgICAgICAgIGlm
IChicmVha3BvaW50LnNwZWNpYWwpIHsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVNwZWNpYWxC
cmVha3BvaW50KGJyZWFrcG9pbnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
QEAgLTEyMTksNiArMTMzMSwxMyBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dl
ck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICB7CiAgICAgICAgIGxldCBicmVha3BvaW50
ID0gZXZlbnQudGFyZ2V0OwogCisgICAgICAgIGlmIChicmVha3BvaW50LnNwZWNpYWwpIHsKKyAg
ICAgICAgICAgIHRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzID0gdHJ1ZTsKKyAgICAgICAgICAg
IHRoaXMuX3VwZGF0ZVNwZWNpYWxCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICAgICAg
dGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCiAgICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpCiAg
ICAgICAgICAgICBXSS5vYmplY3RTdG9yZXMuYnJlYWtwb2ludHMucHV0T2JqZWN0KGJyZWFrcG9p
bnQpOwogCkBAIC0xMzY0LDMzICsxNDgzLDYgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3Mg
RGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQWN0aXZlQ2FsbEZy
YW1lRGlkQ2hhbmdlKTsKICAgICB9CiAKLSAgICBfdXBkYXRlQnJlYWtPbkV4Y2VwdGlvbnNTdGF0
ZSgpCi0gICAgewotICAgICAgICBsZXQgc3RhdGUgPSAibm9uZSI7Ci0KLSAgICAgICAgaWYgKHRo
aXMuX2JyZWFrcG9pbnRzRW5hYmxlZFNldHRpbmcudmFsdWUpIHsKLSAgICAgICAgICAgIGlmICgh
dGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQuZGlzYWJsZWQpCi0gICAgICAgICAgICAgICAg
c3RhdGUgPSAiYWxsIjsKLSAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLl91bmNhdWdodEV4Y2Vw
dGlvbnNCcmVha3BvaW50LmRpc2FibGVkKQotICAgICAgICAgICAgICAgIHN0YXRlID0gInVuY2F1
Z2h0IjsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX2JyZWFrT25FeGNlcHRpb25zU3RhdGUg
PSBzdGF0ZTsKLQotICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7Ci0gICAgICAgIGNhc2UgImFsbCI6
Ci0gICAgICAgICAgICAvLyBNYXJrIHRoZSB1bmNhdWdodCBicmVha3BvaW50IGFzIHVucmVzb2x2
ZWQgc2luY2UgImFsbCIgaW5jbHVkZXMgInVuY2F1Z2h0Ii4KLSAgICAgICAgICAgIC8vIFRoYXQg
d2F5IGl0IGlzIGNsZWFyIGluIHRoZSB1c2VyIGludGVyZmFjZSB0aGF0IHRoZSBicmVha3BvaW50
IGlzIGlnbm9yZWQuCi0gICAgICAgICAgICB0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3Bv
aW50LnJlc29sdmVkID0gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAi
dW5jYXVnaHQiOgotICAgICAgICBjYXNlICJub25lIjoKLSAgICAgICAgICAgIC8vIE1hcmsgdGhl
IHVuY2F1Z2h0IGJyZWFrcG9pbnQgYXMgcmVzb2x2ZWQgYWdhaW4uCi0gICAgICAgICAgICB0aGlz
Ll91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50LnJlc29sdmVkID0gdHJ1ZTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgX2Fzc29jaWF0ZUJyZWFrcG9pbnRz
V2l0aFNvdXJjZUNvZGUoYnJlYWtwb2ludHMsIHNvdXJjZUNvZGUpCiAgICAgewogICAgICAgICB0
aGlzLl9pZ25vcmVCcmVha3BvaW50RGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlRXZlbnQgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0JyZWFrcG9pbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvQnJlYWtwb2ludC5qcwppbmRleCBmNTZmYTQwMWFlODAwNDdiNWZjNjJiN2E3OTc0ZTQyYjky
MjdlZTM2Li4xYWVmNzQ3ODljY2RjOWIzM2M1ZDhjN2JhYmE3ZjZiMGJlOGViZDJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQnJlYWtwb2lu
dC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQnJl
YWtwb2ludC5qcwpAQCAtMjY5LDYgKzI2OSwxNiBAQCBXSS5CcmVha3BvaW50ID0gY2xhc3MgQnJl
YWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXSS5CcmVha3BvaW50LkV2ZW50LkFjdGlvbnNEaWRDaGFuZ2UpOwogICAgIH0KIAor
ICAgIHJlc2V0KCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUs
IHRoaXMpOworCisgICAgICAgIHRoaXMuY29uZGl0aW9uID0gIiI7CisgICAgICAgIHRoaXMuaWdu
b3JlQ291bnQgPSAwOworICAgICAgICB0aGlzLmF1dG9Db250aW51ZSA9IGZhbHNlOworICAgICAg
ICB0aGlzLmNsZWFyQWN0aW9ucygpOworICAgIH0KKwogICAgIHJlbW92ZSgpCiAgICAgewogICAg
ICAgICBjb25zb2xlLmFzc2VydCh0aGlzLnJlbW92YWJsZSwgdGhpcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSmF2YVNjcmlwdEJyZWFr
cG9pbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSmF2
YVNjcmlwdEJyZWFrcG9pbnQuanMKaW5kZXggNTliNDkzMDk1MmMzZTA5OTAxOGFmNGI3NWUwZjY1
YWI0ZWIwMmZjMC4uYjE2ZDBmYWM2MjdmZGE0OGE4ZTcwMThiYWMxMjA4Y2YzNmY4MzY5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0phdmFT
Y3JpcHRCcmVha3BvaW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9KYXZhU2NyaXB0QnJlYWtwb2ludC5qcwpAQCAtMjUsMTAgKzI1LDExIEBACiAK
IFdJLkphdmFTY3JpcHRCcmVha3BvaW50ID0gY2xhc3MgSmF2YVNjcmlwdEJyZWFrcG9pbnQgZXh0
ZW5kcyBXSS5CcmVha3BvaW50CiB7Ci0gICAgY29uc3RydWN0b3Ioc291cmNlQ29kZUxvY2F0aW9u
LCB7Y29udGVudElkZW50aWZpZXIsIGRpc2FibGVkLCBjb25kaXRpb24sIGFjdGlvbnMsIGlnbm9y
ZUNvdW50LCBhdXRvQ29udGludWV9ID0ge30pCisgICAgY29uc3RydWN0b3Ioc291cmNlQ29kZUxv
Y2F0aW9uLCB7Y29udGVudElkZW50aWZpZXIsIHJlc29sdmVkLCBkaXNhYmxlZCwgY29uZGl0aW9u
LCBhY3Rpb25zLCBpZ25vcmVDb3VudCwgYXV0b0NvbnRpbnVlfSA9IHt9KQogICAgIHsKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQoc291cmNlQ29kZUxvY2F0aW9uIGluc3RhbmNlb2YgV0kuU291cmNl
Q29kZUxvY2F0aW9uKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIWNvbnRlbnRJZGVudGlmaWVy
IHx8IHR5cGVvZiBjb250ZW50SWRlbnRpZmllciA9PT0gInN0cmluZyIpOworICAgICAgICBjb25z
b2xlLmFzc2VydChzb3VyY2VDb2RlTG9jYXRpb24gaW5zdGFuY2VvZiBXSS5Tb3VyY2VDb2RlTG9j
YXRpb24sIHNvdXJjZUNvZGVMb2NhdGlvbik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFjb250
ZW50SWRlbnRpZmllciB8fCB0eXBlb2YgY29udGVudElkZW50aWZpZXIgPT09ICJzdHJpbmciLCBj
b250ZW50SWRlbnRpZmllcik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc29sdmVkID09PSB1
bmRlZmluZWQgfHwgdHlwZW9mIHJlc29sdmVkID09PSAiYm9vbGVhbiIsIHJlc29sdmVkKTsKIAog
ICAgICAgICBzdXBlcih7ZGlzYWJsZWQsIGNvbmRpdGlvbiwgYWN0aW9ucywgaWdub3JlQ291bnQs
IGF1dG9Db250aW51ZX0pOwogCkBAIC00NSwxMiArNDYsMjYgQEAgV0kuSmF2YVNjcmlwdEJyZWFr
cG9pbnQgPSBjbGFzcyBKYXZhU2NyaXB0QnJlYWtwb2ludCBleHRlbmRzIFdJLkJyZWFrcG9pbnQK
IAogICAgICAgICB0aGlzLl9zY3JpcHRJZGVudGlmaWVyID0gc291cmNlQ29kZSBpbnN0YW5jZW9m
IFdJLlNjcmlwdCA/IHNvdXJjZUNvZGUuaWQgOiBudWxsOwogICAgICAgICB0aGlzLl90YXJnZXQg
PSBzb3VyY2VDb2RlIGluc3RhbmNlb2YgV0kuU2NyaXB0ID8gc291cmNlQ29kZS50YXJnZXQgOiBu
dWxsOwotICAgICAgICB0aGlzLl9yZXNvbHZlZCA9IGZhbHNlOworICAgICAgICB0aGlzLl9yZXNv
bHZlZCA9ICEhcmVzb2x2ZWQ7CiAKICAgICAgICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuU291cmNlQ29kZUxvY2F0aW9uLkV2ZW50LkxvY2F0aW9uQ2hhbmdl
ZCwgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uTG9jYXRpb25DaGFuZ2VkLCB0aGlzKTsKICAgICAg
ICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuU291cmNlQ29k
ZUxvY2F0aW9uLkV2ZW50LkRpc3BsYXlMb2NhdGlvbkNoYW5nZWQsIHRoaXMuX3NvdXJjZUNvZGVM
b2NhdGlvbkRpc3BsYXlMb2NhdGlvbkNoYW5nZWQsIHRoaXMpOwogICAgIH0KIAorICAgIC8vIFN0
YXRpYworCisgICAgc3RhdGljIHN1cHBvcnRzTWljcm90YXNrcyhwYXJhbWV0ZXIpCisgICAgewor
ICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMpOiBEZWJ1Z2dlci5zZXRQYXVzZU9uTWlj
cm90YXNrcyBkaWQgbm90IGV4aXN0IHlldC4KKyAgICAgICAgcmV0dXJuIEluc3BlY3RvckJhY2tl
bmQuaGFzQ29tbWFuZCgiRGVidWdnZXIuc2V0UGF1c2VPbk1pY3JvdGFza3MiLCBwYXJhbWV0ZXIp
OworICAgIH0KKworICAgIHN0YXRpYyBzdXBwb3J0c0RlYnVnZ2VyU3RhdGVtZW50cyhwYXJhbWV0
ZXIpCisgICAgeworICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMuMSk6IERlYnVnZ2Vy
LnNldFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHMgZGlkIG5vdCBleGlzdCB5ZXQuCisgICAgICAg
IHJldHVybiBJbnNwZWN0b3JCYWNrZW5kLmhhc0NvbW1hbmQoIkRlYnVnZ2VyLnNldFBhdXNlT25E
ZWJ1Z2dlclN0YXRlbWVudHMiLCBwYXJhbWV0ZXIpOworICAgIH0KKwogICAgIC8vIEltcG9ydCAv
IEV4cG9ydAogCiAgICAgc3RhdGljIGZyb21KU09OKGpzb24pCkBAIC01OSw2ICs3NCw3IEBAIFdJ
LkphdmFTY3JpcHRCcmVha3BvaW50ID0gY2xhc3MgSmF2YVNjcmlwdEJyZWFrcG9pbnQgZXh0ZW5k
cyBXSS5CcmVha3BvaW50CiAgICAgICAgIHJldHVybiBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9p
bnQobmV3IFdJLlNvdXJjZUNvZGVMb2NhdGlvbihzb3VyY2VDb2RlLCBqc29uLmxpbmVOdW1iZXIg
fHwgMCwganNvbi5jb2x1bW5OdW1iZXIgfHwgMCksIHsKICAgICAgICAgICAgIC8vIFRoZSAndXJs
JyBmYWxsYmFjayBpcyBmb3IgdHJhbnNpdGlvbmluZyBmcm9tIG9sZGVyIGZyb250ZW5kcyBhbmQg
c2hvdWxkIGJlIHJlbW92ZWQuCiAgICAgICAgICAgICBjb250ZW50SWRlbnRpZmllcjoganNvbi5j
b250ZW50SWRlbnRpZmllciB8fCBqc29uLnVybCwKKyAgICAgICAgICAgIHJlc29sdmVkOiBqc29u
LnJlc29sdmVkLAogICAgICAgICAgICAgZGlzYWJsZWQ6IGpzb24uZGlzYWJsZWQsCiAgICAgICAg
ICAgICBjb25kaXRpb246IGpzb24uY29uZGl0aW9uLAogICAgICAgICAgICAgYWN0aW9uczoganNv
bi5hY3Rpb25zPy5tYXAoKGFjdGlvbkpTT04pID0+IFdJLkJyZWFrcG9pbnRBY3Rpb24uZnJvbUpT
T04oYWN0aW9uSlNPTikpIHx8IFtdLApAQCAtNzEsOSArODcsMTIgQEAgV0kuSmF2YVNjcmlwdEJy
ZWFrcG9pbnQgPSBjbGFzcyBKYXZhU2NyaXB0QnJlYWtwb2ludCBleHRlbmRzIFdJLkJyZWFrcG9p
bnQKICAgICB7CiAgICAgICAgIC8vIFRoZSBpZCwgc2NyaXB0SWRlbnRpZmllciwgdGFyZ2V0LCBh
bmQgcmVzb2x2ZWQgc3RhdGUgYXJlIHRpZWQgdG8gdGhlIGN1cnJlbnQgc2Vzc2lvbiwgc28gZG9u
J3QgaW5jbHVkZSB0aGVtIGZvciBzZXJpYWxpemF0aW9uLgogICAgICAgICBsZXQganNvbiA9IHN1
cGVyLnRvSlNPTihrZXkpOwotICAgICAgICBqc29uLmNvbnRlbnRJZGVudGlmaWVyID0gdGhpcy5f
Y29udGVudElkZW50aWZpZXI7Ci0gICAgICAgIGpzb24ubGluZU51bWJlciA9IHRoaXMuX3NvdXJj
ZUNvZGVMb2NhdGlvbi5saW5lTnVtYmVyOwotICAgICAgICBqc29uLmNvbHVtbk51bWJlciA9IHRo
aXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5OdW1iZXI7CisgICAgICAgIGlmICh0aGlzLl9j
b250ZW50SWRlbnRpZmllcikKKyAgICAgICAgICAgIGpzb24uY29udGVudElkZW50aWZpZXIgPSB0
aGlzLl9jb250ZW50SWRlbnRpZmllcjsKKyAgICAgICAgaWYgKGlzRmluaXRlKHRoaXMuX3NvdXJj
ZUNvZGVMb2NhdGlvbi5saW5lTnVtYmVyKSkKKyAgICAgICAgICAgIGpzb24ubGluZU51bWJlciA9
IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5saW5lTnVtYmVyOworICAgICAgICBpZiAoaXNGaW5p
dGUodGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51bWJlcikpCisgICAgICAgICAgICBq
c29uLmNvbHVtbk51bWJlciA9IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5OdW1iZXI7
CiAgICAgICAgIGlmIChrZXkgPT09IFdJLk9iamVjdFN0b3JlLnRvSlNPTlN5bWJvbCkKICAgICAg
ICAgICAgIGpzb25bV0kub2JqZWN0U3RvcmVzLmJyZWFrcG9pbnRzLmtleVBhdGhdID0gdGhpcy5f
Y29udGVudElkZW50aWZpZXIgKyAiOiIgKyB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24ubGluZU51
bWJlciArICI6IiArIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5OdW1iZXI7CiAgICAg
ICAgIHJldHVybiBqc29uOwpAQCAtMTM4LDExICsxNTcsMjEgQEAgV0kuSmF2YVNjcmlwdEJyZWFr
cG9pbnQgPSBjbGFzcyBKYXZhU2NyaXB0QnJlYWtwb2ludCBleHRlbmRzIFdJLkJyZWFrcG9pbnQK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAodGhpcykgewogICAgICAgICBjYXNlIFdJLmRlYnVnZ2Vy
TWFuYWdlci5kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50OgorICAgICAgICAgICAgLy8gQ09N
UEFUSUJJTElUWSAoaU9TIDE0KTogRGVidWdnZXIuc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50
cyBkaWQgbm90IGhhdmUgYW4gIm9wdGlvbnMiIHBhcmFtZXRlciB5ZXQuCisgICAgICAgICAgICBy
ZXR1cm4gV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuc3VwcG9ydHNEZWJ1Z2dlclN0YXRlbWVudHMo
Im9wdGlvbnMiKTsKKwogICAgICAgICBjYXNlIFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxFeGNlcHRp
b25zQnJlYWtwb2ludDoKICAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIudW5jYXVnaHRF
eGNlcHRpb25zQnJlYWtwb2ludDoKKyAgICAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAx
NCk6IERlYnVnZ2VyLnNldFBhdXNlT25FeGNlcHRpb25zIGRpZCBub3QgaGF2ZSBhbiAib3B0aW9u
cyIgcGFyYW1ldGVyIHlldC4KKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JCYWNrZW5kLmhh
c0NvbW1hbmQoIkRlYnVnZ2VyLnNldFBhdXNlT25FeGNlcHRpb25zIiwgIm9wdGlvbnMiKTsKKwog
ICAgICAgICBjYXNlIFdJLmRlYnVnZ2VyTWFuYWdlci5hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9p
bnQ6CisgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTQpOiBEZWJ1Z2dlci5zZXRQ
YXVzZU9uQXNzZXJ0aW9ucyBkaWQgbm90IGhhdmUgYW4gIm9wdGlvbnMiIHBhcmFtZXRlciB5ZXQu
CisgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yQmFja2VuZC5oYXNDb21tYW5kKCJEZWJ1Z2dl
ci5zZXRQYXVzZU9uQXNzZXJ0aW9ucyIsICJvcHRpb25zIik7CisKICAgICAgICAgY2FzZSBXSS5k
ZWJ1Z2dlck1hbmFnZXIuYWxsTWljcm90YXNrc0JyZWFrcG9pbnQ6Ci0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTQpOiBEZWJ1Z2dl
ci5zZXRQYXVzZU9uTWljcm90YXNrcyBkaWQgbm90IGhhdmUgYW4gIm9wdGlvbnMiIHBhcmFtZXRl
ciB5ZXQuCisgICAgICAgICAgICByZXR1cm4gV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuc3VwcG9y
dHNNaWNyb3Rhc2tzKCJvcHRpb25zIik7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTE5Myw3ICsyMjIsNyBAQCBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCA9IGNsYXNzIEph
dmFTY3JpcHRCcmVha3BvaW50IGV4dGVuZHMgV0kuQnJlYWtwb2ludAogCiAgICAgX2lzU3BlY2lh
bCgpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmlzRXF1
YWwobmV3IFdJLlNvdXJjZUNvZGVMb2NhdGlvbihudWxsLCBJbmZpbml0eSwgSW5maW5pdHkpKTsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5pc0VxdWFsKFdJLlNvdXJj
ZUNvZGVMb2NhdGlvbi5zcGVjaWFsQnJlYWtwb2ludExvY2F0aW9uKTsKICAgICB9CiAKICAgICBf
c291cmNlQ29kZUxvY2F0aW9uTG9jYXRpb25DaGFuZ2VkKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2JlU2V0LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2JlU2V0LmpzCmluZGV4
IDJlNmU0ZTljYTkwZDQwYTZlZDA2ZjMyNWExNmJjMjM3MjY3NTA2YzguLmI3ZThiMWM0NTk1OTZl
ZDZhY2E0NThkNDVlMmU1NmM4MGNmZGE0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9iZVNldC5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmVTZXQuanMKQEAgLTQyLDcgKzQyLDYg
QEAgV0kuUHJvYmVTZXQgPSBjbGFzcyBQcm9iZVNldCBleHRlbmRzIFdJLk9iamVjdAogCiAgICAg
ICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNl
RGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VDaGFuZ2VkLCB0aGlzKTsKICAgICAgICAgV0ku
UHJvYmUuYWRkRXZlbnRMaXN0ZW5lcihXSS5Qcm9iZS5FdmVudC5TYW1wbGVBZGRlZCwgdGhpcy5f
c2FtcGxlQ29sbGVjdGVkLCB0aGlzKTsKLSAgICAgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQu
YWRkRXZlbnRMaXN0ZW5lcihXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0
YXRlRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50UmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhp
cyk7CiAgICAgfQogCiAgICAgLy8gUHVibGljCkBAIC0xMDEsNyArMTAwLDYgQEAgV0kuUHJvYmVT
ZXQgPSBjbGFzcyBQcm9iZVNldCBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgIFdJLkZyYW1l
LnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdl
LCB0aGlzLl9tYWluUmVzb3VyY2VDaGFuZ2VkLCB0aGlzKTsKICAgICAgICAgV0kuUHJvYmUucmVt
b3ZlRXZlbnRMaXN0ZW5lcihXSS5Qcm9iZS5FdmVudC5TYW1wbGVBZGRlZCwgdGhpcy5fc2FtcGxl
Q29sbGVjdGVkLCB0aGlzKTsKLSAgICAgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucmVtb3Zl
RXZlbnRMaXN0ZW5lcihXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRl
RGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50UmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcyk7
CiAgICAgfQogCiAgICAgLy8gUHJpdmF0ZQpAQCAtMTMyLDE3ICsxMzAsMTEgQEAgV0kuUHJvYmVT
ZXQgPSBjbGFzcyBQcm9iZVNldCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLmRhdGFU
YWJsZS5hZGRTYW1wbGVGb3JQcm9iZShwcm9iZSwgc2FtcGxlKTsKICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuUHJvYmVTZXQuRXZlbnQuU2FtcGxlQWRkZWQsIHtwcm9i
ZSwgc2FtcGxlfSk7CiAgICAgfQotCi0gICAgX2JyZWFrcG9pbnRSZXNvbHZlZFN0YXRlRGlkQ2hh
bmdlKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V0kuUHJvYmVTZXQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSk7Ci0gICAgfQogfTsKIAog
V0kuUHJvYmVTZXQuRXZlbnQgPSB7CiAgICAgUHJvYmVBZGRlZDogInByb2JlLXNldC1wcm9iZS1h
ZGRlZCIsCiAgICAgUHJvYmVSZW1vdmVkOiAicHJvYmUtc2V0LXByb2JlLXJlbW92ZWQiLAotICAg
IFJlc29sdmVkU3RhdGVEaWRDaGFuZ2U6ICJwcm9iZS1zZXQtcmVzb2x2ZWQtc3RhdGUtZGlkLWNo
YW5nZSIsCiAgICAgU2FtcGxlQWRkZWQ6ICJwcm9iZS1zZXQtc2FtcGxlLWFkZGVkIiwKICAgICBT
YW1wbGVzQ2xlYXJlZDogInByb2JlLXNldC1zYW1wbGVzLWNsZWFyZWQiLAogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2Rl
TG9jYXRpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
U291cmNlQ29kZUxvY2F0aW9uLmpzCmluZGV4IDQwNTg1MGUxMTBiNzQ5MmEyZWM5MDIzNzNhNGI0
NWRlYmY1YWYyNmEuLmMxZDg4MmJiNmM4ZTZmMTVkNzc4ZjQ0YTYwZWNkNGFlZjJmMzE3MTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3Vy
Y2VDb2RlTG9jYXRpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1NvdXJjZUNvZGVMb2NhdGlvbi5qcwpAQCAtNDcsNiArNDcsMTMgQEAgV0kuU291
cmNlQ29kZUxvY2F0aW9uID0gY2xhc3MgU291cmNlQ29kZUxvY2F0aW9uIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgIHRoaXMuX3Jlc2V0TWFwcGVkTG9jYXRpb24oKTsKICAgICB9CiAKKyAgICAv
LyBTdGF0aWMKKworICAgIHN0YXRpYyBnZXQgc3BlY2lhbEJyZWFrcG9pbnRMb2NhdGlvbigpCisg
ICAgeworICAgICAgICByZXR1cm4gbmV3IFdJLlNvdXJjZUNvZGVMb2NhdGlvbihudWxsLCBJbmZp
bml0eSwgSW5maW5pdHkpOworICAgIH0KKwogICAgIC8vIFB1YmxpYwogCiAgICAgaXNFcXVhbChv
dGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0JyZWFrcG9pbnRQb3BvdmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQnJlYWtwb2ludFBvcG92ZXIuanMKaW5kZXggMjgyMjQxZTNjMDc5Mzc5YjFl
ZTgyNDJjOWU5ZTM3Y2U5MjkzN2E5ZC4uYmVkZjRmNjNjMDdlMzhmZjg1ZTNiYjgzNDZmMDEwMzNh
Njg2OWQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQnJlYWtwb2ludFBvcG92ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFBvcG92ZXIuanMKQEAgLTg2LDYgKzg2LDEwIEBA
IFdJLkJyZWFrcG9pbnRQb3BvdmVyID0gY2xhc3MgQnJlYWtwb2ludFBvcG92ZXIgZXh0ZW5kcyBX
SS5Qb3BvdmVyCiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5n
KCJEZWxldGUgQnJlYWtwb2ludCIpLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAgYnJlYWtwb2lu
dC5yZW1vdmUoKTsKICAgICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiUmVzZXQgQnJlYWtwb2ludCIs
ICJSZXNldCBCcmVha3BvaW50IEAgQnJlYWtwb2ludCBDb250ZXh0IE1lbnUiLCAiQ29udGV4dCBt
ZW51IGFjdGlvbiBmb3IgcmVzZXR0aW5nIHRoZSBicmVha3BvaW50IHRvIGl0cyBpbml0aWFsIGNv
bmZpZ3VyYXRpb24uIiksICgpID0+IHsKKyAgICAgICAgICAgICAgICBicmVha3BvaW50LnJlc2V0
KCk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChicmVha3BvaW50
IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQgJiYgYnJlYWtwb2ludC5zb3VyY2VD
b2RlTG9jYXRpb24uaGFzTWFwcGVkTG9jYXRpb24oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFRy
ZWVFbGVtZW50LmpzCmluZGV4IDUzZmFiMjMxNjhjMjJhZWU1NWI0OTI4YWJiZmZmNmYwMTg4OTFl
YWMuLjYyNTI1ZTNiNGUwODY0ZTE3YWQzMzg5M2Y1ZDE1NzM1MmI2OGFkMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVl
RWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9CcmVha3BvaW50VHJlZUVsZW1lbnQuanMKQEAgLTg0LDggKzg0LDEwIEBAIFdJLkJyZWFrcG9p
bnRUcmVlRWxlbWVudCA9IGNsYXNzIEJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRzIFdJLkdl
bmVyYWxUcmVlRWxlCiAKICAgICAgICAgaWYgKHRoaXMuX2JyZWFrcG9pbnQuZGlzYWJsZWQpCiAg
ICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuYmVlcCgpOwotICAgICAgICBlbHNlCisg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludC5kaXNhYmxlZCA9IHRy
dWU7CisgICAgICAgICAgICB0aGlzLl9icmVha3BvaW50LnJlc2V0KCk7CisgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VzTmF2
aWdhdGlvblNpZGViYXJQYW5lbC5qcwppbmRleCAzNmNmMjAxY2VjZmQyYjEyNmEwY2QyNjQ1MTE3
ODRiMjNjMzQzYzI5Li5iNzhmYmIxOGVjOWQ3YzdlYzlmYzMyZWNkYjNmMDBhN2Q2Y2UwMDc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3Vy
Y2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcwpAQCAt
MTYzLDEzICsxNjMsMTIgQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFz
cyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKIAogICAgICAgICAvLyBQ
cmV2ZW50IHRoZSBicmVha3BvaW50cyBsaXN0IGZyb20gYmVpbmcgdXNlZCBhcyB0aGUgc291cmNl
IG9mIHNlbGVjdGlvbiByZXN0b3JhdGlvbiAoZS5nLiBvbiByZWxvYWQgb3IgbmF2aWdhdGlvbiku
CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzVHJlZU91dGxpbmUgPSB0aGlzLmNyZWF0ZUNvbnRl
bnRUcmVlT3V0bGluZSh7aWdub3JlQ29va2llUmVzdG9yYXRpb246IHRydWV9KTsKLSAgICAgICAg
dGhpcy5fYnJlYWtwb2ludHNUcmVlT3V0bGluZS5hZGRFdmVudExpc3RlbmVyKFdJLlRyZWVPdXRs
aW5lLkV2ZW50LkVsZW1lbnRBZGRlZCwgdGhpcy5faGFuZGxlQnJlYWtwb2ludEVsZW1lbnRBZGRl
ZE9yUmVtb3ZlZCwgdGhpcyk7Ci0gICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzVHJlZU91dGxpbmUu
YWRkRXZlbnRMaXN0ZW5lcihXSS5UcmVlT3V0bGluZS5FdmVudC5FbGVtZW50UmVtb3ZlZCwgdGhp
cy5faGFuZGxlQnJlYWtwb2ludEVsZW1lbnRBZGRlZE9yUmVtb3ZlZCwgdGhpcyk7CisgICAgICAg
IHRoaXMuX2JyZWFrcG9pbnRzVHJlZU91dGxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXSS5UcmVlT3V0
bGluZS5FdmVudC5FbGVtZW50UmVtb3ZlZCwgdGhpcy5faGFuZGxlQnJlYWtwb2ludFRyZWVPdXRs
aW5lRWxlbWVudFJlbW92ZWQsIHRoaXMpOwogICAgICAgICB0aGlzLl9icmVha3BvaW50c1RyZWVP
dXRsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV0kuVHJlZU91dGxpbmUuRXZlbnQuU2VsZWN0aW9uRGlk
Q2hhbmdlLCB0aGlzLl9oYW5kbGVUcmVlU2VsZWN0aW9uRGlkQ2hhbmdlLCB0aGlzKTsKICAgICAg
ICAgdGhpcy5fYnJlYWtwb2ludHNUcmVlT3V0bGluZS5vbmRlbGV0ZSA9IChzZWxlY3RlZFRyZWVF
bGVtZW50KSA9PiB7CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChzZWxlY3RlZFRyZWVFbGVt
ZW50LnNlbGVjdGVkKTsKIAotICAgICAgICAgICAgaWYgKCFzZWxlY3RlZFRyZWVFbGVtZW50LnJl
cHJlc2VudGVkT2JqZWN0LnJlbW92YWJsZSkgeworICAgICAgICAgICAgaWYgKHNlbGVjdGVkVHJl
ZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50ICYmICFz
ZWxlY3RlZFRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0LnJlbW92YWJsZSkgewogICAgICAg
ICAgICAgICAgIGxldCB0cmVlRWxlbWVudFRvU2VsZWN0ID0gc2VsZWN0ZWRUcmVlRWxlbWVudC5u
ZXh0U2VsZWN0YWJsZVNpYmxpbmc7CiAgICAgICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50VG9T
ZWxlY3QpIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb21pdEZvY3VzID0gdHJ1ZTsKQEAg
LTM1NSwxOSArMzU0LDIwIEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xh
c3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgICAgICB9
LCB0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMy4x
KTogRGVidWdnZXIuc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cyBkaWQgbm90IGV4aXN0IHll
dC4KLSAgICAgICAgaWYgKEluc3BlY3RvckJhY2tlbmQuaGFzQ29tbWFuZCgiRGVidWdnZXIuc2V0
UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cyIpKQotICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5h
Z2VyLmFkZEJyZWFrcG9pbnQoV0kuZGVidWdnZXJNYW5hZ2VyLmRlYnVnZ2VyU3RhdGVtZW50c0Jy
ZWFrcG9pbnQpOworICAgICAgICBpZiAoV0kuZGVidWdnZXJNYW5hZ2VyLmRlYnVnZ2VyU3RhdGVt
ZW50c0JyZWFrcG9pbnQpCisgICAgICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50KFdJLmRlYnVn
Z2VyTWFuYWdlci5kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50KTsKIAotICAgICAgICBXSS5k
ZWJ1Z2dlck1hbmFnZXIuYWRkQnJlYWtwb2ludChXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsRXhjZXB0
aW9uc0JyZWFrcG9pbnQpOwotICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkQnJlYWtwb2lu
dChXSS5kZWJ1Z2dlck1hbmFnZXIudW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludCk7CisgICAg
ICAgIGlmIChXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQpCisgICAg
ICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50KFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxFeGNlcHRp
b25zQnJlYWtwb2ludCk7CiAKLSAgICAgICAgaWYgKFdJLnNldHRpbmdzLnNob3dBc3NlcnRpb25G
YWlsdXJlc0JyZWFrcG9pbnQudmFsdWUpCi0gICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIu
YWRkQnJlYWtwb2ludChXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3Bv
aW50KTsKKyAgICAgICAgaWYgKFdJLmRlYnVnZ2VyTWFuYWdlci51bmNhdWdodEV4Y2VwdGlvbnNC
cmVha3BvaW50KQorICAgICAgICAgICAgdGhpcy5fYWRkQnJlYWtwb2ludChXSS5kZWJ1Z2dlck1h
bmFnZXIudW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludCk7CiAKLSAgICAgICAgLy8gQ09NUEFU
SUJJTElUWSAoaU9TIDEzKTogRGVidWdnZXIuc2V0UGF1c2VPbk1pY3JvdGFza3MgZGlkIG5vdCBl
eGlzdCB5ZXQuCi0gICAgICAgIGlmIChJbnNwZWN0b3JCYWNrZW5kLmhhc0NvbW1hbmQoIkRlYnVn
Z2VyLnNldFBhdXNlT25NaWNyb3Rhc2tzIikgJiYgV0kuc2V0dGluZ3Muc2hvd0FsbE1pY3JvdGFz
a3NCcmVha3BvaW50LnZhbHVlKQotICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJy
ZWFrcG9pbnQoV0kuZGVidWdnZXJNYW5hZ2VyLmFsbE1pY3JvdGFza3NCcmVha3BvaW50KTsKKyAg
ICAgICAgaWYgKFdJLmRlYnVnZ2VyTWFuYWdlci5hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQp
CisgICAgICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50KFdJLmRlYnVnZ2VyTWFuYWdlci5hc3Nl
cnRpb25GYWlsdXJlc0JyZWFrcG9pbnQpOworCisgICAgICAgIGlmIChXSS5kZWJ1Z2dlck1hbmFn
ZXIuYWxsTWljcm90YXNrc0JyZWFrcG9pbnQpCisgICAgICAgICAgICB0aGlzLl9hZGRCcmVha3Bv
aW50KFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludCk7CiAKICAgICAg
ICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpCiAgICAgICAgICAgICB0aGlzLl9hZGRU
YXJnZXQodGFyZ2V0KTsKQEAgLTE5NTIsNzIgKzE5NTIsNDQgQEAgV0kuU291cmNlc05hdmlnYXRp
b25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRl
bmRzIFcKICAgICAgICAgY29uc29sZS5lcnJvcigiVW5rbm93biB0cmVlIGVsZW1lbnQiLCB0cmVl
RWxlbWVudCk7CiAgICAgfQogCi0gICAgX2hhbmRsZUJyZWFrcG9pbnRFbGVtZW50QWRkZWRPclJl
bW92ZWQoZXZlbnQpCisgICAgX2hhbmRsZUJyZWFrcG9pbnRUcmVlT3V0bGluZUVsZW1lbnRSZW1v
dmVkKGV2ZW50KQogICAgIHsKLSAgICAgICAgbGV0IHRyZWVFbGVtZW50ID0gZXZlbnQuZGF0YS5l
bGVtZW50OworICAgICAgICBsZXQgc2VsZWN0ZWRUcmVlRWxlbWVudCA9IHRoaXMuX2JyZWFrcG9p
bnRzVHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudDsKKyAgICAgICAgaWYgKCFzZWxlY3Rl
ZFRyZWVFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGxldCBzZXR0aW5n
ID0gbnVsbDsKLSAgICAgICAgc3dpdGNoICh0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCkg
ewotICAgICAgICBjYXNlIFdJLmRlYnVnZ2VyTWFuYWdlci5hc3NlcnRpb25GYWlsdXJlc0JyZWFr
cG9pbnQ6Ci0gICAgICAgICAgICBzZXR0aW5nID0gV0kuc2V0dGluZ3Muc2hvd0Fzc2VydGlvbkZh
aWx1cmVzQnJlYWtwb2ludDsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV0ku
ZGVidWdnZXJNYW5hZ2VyLmFsbE1pY3JvdGFza3NCcmVha3BvaW50OgotICAgICAgICAgICAgc2V0
dGluZyA9IFdJLnNldHRpbmdzLnNob3dBbGxNaWNyb3Rhc2tzQnJlYWtwb2ludDsKLSAgICAgICAg
ICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFJlcXVl
c3RzQnJlYWtwb2ludDoKLSAgICAgICAgICAgIHNldHRpbmcgPSBXSS5zZXR0aW5ncy5zaG93QWxs
UmVxdWVzdHNCcmVha3BvaW50OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoc2V0dGluZykKLSAgICAgICAgICAgIHNldHRpbmcudmFsdWUgPSAhIXRyZWVFbGVt
ZW50LnBhcmVudDsKLQotICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gV0kuVHJlZU91dGxpbmUu
RXZlbnQuRWxlbWVudFJlbW92ZWQpIHsKLSAgICAgICAgICAgIGxldCBzZWxlY3RlZFRyZWVFbGVt
ZW50ID0gdGhpcy5fYnJlYWtwb2ludHNUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50Owot
ICAgICAgICAgICAgaWYgKHNlbGVjdGVkVHJlZUVsZW1lbnQpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoc2VsZWN0ZWRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCA9PT0gV0kuZGVidWdnZXJN
YW5hZ2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludCB8fCAhc2VsZWN0ZWRUcmVlRWxlbWVu
dC5yZXByZXNlbnRlZE9iamVjdC5yZW1vdmFibGUpIHsKLSAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc2tpcFVucmV2ZWFsZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBjb25zdCBkb250
UG9wdWxhdGUgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBsZXQgdHJlZUVsZW1lbnRUb1Nl
bGVjdCA9IHNlbGVjdGVkVHJlZUVsZW1lbnQudHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQoc2tpcFVu
cmV2ZWFsZWQsIGRvbnRQb3B1bGF0ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0cmVlRWxl
bWVudFRvU2VsZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvbWl0Rm9jdXMg
PSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRCeVVzZXIgPSB0
cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUVsZW1lbnRUb1NlbGVjdC5zZWxlY3Qo
b21pdEZvY3VzLCBzZWxlY3RlZEJ5VXNlcik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB9CisgICAgICAgIC8vIFNlbGVjdCB0aGUgbmV4dCByZW1vdmFibGUgYnJlYWtw
b2ludCBpbnN0ZWFkIG9mIGEgbm9uLXJlbW92YWJsZSBicmVha3BvaW50LgorICAgICAgICBpZiAo
c2VsZWN0ZWRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkJyZWFr
cG9pbnQgJiYgIXNlbGVjdGVkVHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZhYmxl
KSB7CisgICAgICAgICAgICBjb25zdCBza2lwVW5yZXZlYWxlZCA9IHRydWU7CisgICAgICAgICAg
ICBjb25zdCBzdGF5V2l0aGluID0gbnVsbDsKKyAgICAgICAgICAgIGNvbnN0IGRvbnRQb3B1bGF0
ZSA9IHRydWU7CisgICAgICAgICAgICBsZXQgdHJlZUVsZW1lbnRUb1NlbGVjdCA9IHNlbGVjdGVk
VHJlZUVsZW1lbnQudHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQoc2tpcFVucmV2ZWFsZWQsIHN0YXlX
aXRoaW4sIGRvbnRQb3B1bGF0ZSk7CisgICAgICAgICAgICBpZiAodHJlZUVsZW1lbnRUb1NlbGVj
dCkgeworICAgICAgICAgICAgICAgIGNvbnN0IG9taXRGb2N1cyA9IHRydWU7CisgICAgICAgICAg
ICAgICAgY29uc3Qgc2VsZWN0ZWRCeVVzZXIgPSB0cnVlOworICAgICAgICAgICAgICAgIHRyZWVF
bGVtZW50VG9TZWxlY3Quc2VsZWN0KG9taXRGb2N1cywgc2VsZWN0ZWRCeVVzZXIpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQogCiAgICAgX3BvcHVsYXRlQ3JlYXRlQnJlYWtwb2lu
dENvbnRleHRNZW51KGNvbnRleHRNZW51KQogICAgIHsKLSAgICAgICAgbGV0IGFzc2VydGlvbkZh
aWx1cmVzQnJlYWtwb2ludFNob3duID0gV0kuc2V0dGluZ3Muc2hvd0Fzc2VydGlvbkZhaWx1cmVz
QnJlYWtwb2ludC52YWx1ZTsKLQogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRDaGVja2JveEl0
ZW0oV0kucmVwZWF0ZWRVSVN0cmluZy5hc3NlcnRpb25GYWlsdXJlcygpLCAoKSA9PiB7Ci0gICAg
ICAgICAgICBpZiAoYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50U2hvd24pCi0gICAgICAgICAg
ICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnQoV0kuZGVidWdnZXJNYW5h
Z2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludCk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3Bv
aW50LmRpc2FibGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LmFkZEJyZWFrcG9pbnQoV0kuZGVidWdnZXJNYW5hZ2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtw
b2ludCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sIGFzc2VydGlvbkZhaWx1cmVzQnJlYWtw
b2ludFNob3duKTsKKyAgICAgICAgICAgIGlmIChXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9u
RmFpbHVyZXNCcmVha3BvaW50KQorICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5h
c3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQucmVtb3ZlKCk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmNyZWF0ZUFzc2VydGlvbkZhaWx1cmVz
QnJlYWtwb2ludCgpOworICAgICAgICB9LCBXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFp
bHVyZXNCcmVha3BvaW50KTsKIAogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3Io
KTsKIAotICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMpOiBEZWJ1Z2dlci5zZXRQYXVz
ZU9uTWljcm90YXNrcyBkaWQgbm90IGV4aXN0IHlldC4KLSAgICAgICAgaWYgKEluc3BlY3RvckJh
Y2tlbmQuaGFzQ29tbWFuZCgiRGVidWdnZXIuc2V0UGF1c2VPbk1pY3JvdGFza3MiKSkgewotICAg
ICAgICAgICAgbGV0IGFsbE1pY3JvdGFza3NCcmVha3BvaW50U2hvd24gPSBXSS5zZXR0aW5ncy5z
aG93QWxsTWljcm90YXNrc0JyZWFrcG9pbnQudmFsdWU7Ci0KKyAgICAgICAgaWYgKFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50LnN1cHBvcnRzTWljcm90YXNrcygpKSB7CiAgICAgICAgICAgICBjb250
ZXh0TWVudS5hcHBlbmRDaGVja2JveEl0ZW0oV0kucmVwZWF0ZWRVSVN0cmluZy5hbGxNaWNyb3Rh
c2tzKCksICgpID0+IHsKLSAgICAgICAgICAgICAgICBpZiAoYWxsTWljcm90YXNrc0JyZWFrcG9p
bnRTaG93bikKLSAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUJy
ZWFrcG9pbnQoV0kuZGVidWdnZXJNYW5hZ2VyLmFsbE1pY3JvdGFza3NCcmVha3BvaW50KTsKLSAg
ICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5h
Z2VyLmFsbE1pY3JvdGFza3NCcmVha3BvaW50LmRpc2FibGVkID0gZmFsc2U7Ci0gICAgICAgICAg
ICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KFdJLmRlYnVnZ2VyTWFu
YWdlci5hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfSwgYWxsTWljcm90YXNrc0JyZWFrcG9pbnRTaG93bik7CisgICAgICAgICAgICAgICAg
aWYgKFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludCkKKyAgICAgICAg
ICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFsbE1pY3JvdGFza3NCcmVha3BvaW50LnJl
bW92ZSgpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgV0kuZGVi
dWdnZXJNYW5hZ2VyLmNyZWF0ZUFsbE1pY3JvdGFza3NCcmVha3BvaW50KCk7CisgICAgICAgICAg
ICB9LCBXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsTWljcm90YXNrc0JyZWFrcG9pbnQpOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5zdXBwb3J0c0V2ZW50QnJl
YWtwb2ludHMoKSB8fCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNFdmVudExpc3RlbmVy
QnJlYWtwb2ludHMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KaW5kZXggYmQ5YjExODRjODQ1NGI0NzNlNDM3NGMyMjhi
NGJkNjdhOWEzZjk3ZS4uYjg0YzczNzAxOWVjZTM0ZTE5MGMyY2U3NzNiZjdhMWQ5ZDU4NmRmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1
Z2dlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERl
YnVnZ2VyLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJXZWJGcmFtZUludGVybmFsLmgi
CiAjaW1wb3J0ICJXZWJTY3JpcHREZWJ1Z0RlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJWaWV3SW50
ZXJuYWwuaCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0JyZWFrcG9pbnQuaD4KICNpbXBvcnQg
PEphdmFTY3JpcHRDb3JlL0RlYnVnZ2VyQ2FsbEZyYW1lLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9KU0dsb2JhbE9iamVjdC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvU291cmNlUHJv
dmlkZXIuaD4KQEAgLTY1LDcgKzY2LDcgQEAgV2ViU2NyaXB0RGVidWdnZXI6OldlYlNjcmlwdERl
YnVnZ2VyKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAsIG1fY2FsbGlu
Z0RlbGVnYXRlKGZhbHNlKQogICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LT52bSgp
LCBnbG9iYWxPYmplY3QpCiB7Ci0gICAgc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShQYXVzZU9u
QWxsRXhjZXB0aW9ucyk7CisgICAgc2V0UGF1c2VPbkFsbEV4Y2VwdGlvbnNCcmVha3BvaW50KEpT
Qzo6QnJlYWtwb2ludDo6Y3JlYXRlKEpTQzo6bm9CcmVha3BvaW50SUQpKTsKICAgICBkZWFjdGl2
YXRlQnJlYWtwb2ludHMoKTsKICAgICBhdHRhY2goZ2xvYmFsT2JqZWN0KTsKIH0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBi
NTg5MmQ3ZGQzNjY1YWY5ZjZiMDk0MWI2MTdlMjA1M2VjYWY1ZGIwLi4zNWZmYzQ5YjA1NTlhYjM4
ZTA2ODc4OWNhNTJlMzI3YTIyY2FkMmU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDkt
MDIgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IGFsbG93IHNwZWNpYWwgSmF2YVNjcmlwdCBicmVha3BvaW50cyB0byBiZSBjb25maWd1
cmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU3
OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGlu
c3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZXMvYnJlYWtwb2ludC1vcHRpb25zLXV0aWxpdGllcy5q
czogQWRkZWQuCisgICAgICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyLkluc3BlY3Rv
clRlc3QuQnJlYWtwb2ludE9wdGlvbnMuYWRkVGVzdENhc2VzKToKKyAgICAgICAgKFRlc3RQYWdl
LnJlZ2lzdGVySW5pdGlhbGl6ZXIuSW5zcGVjdG9yVGVzdC5CcmVha3BvaW50T3B0aW9ucy5hZGRU
ZXN0Q2FzZXMucmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2Vy
L2JyZWFrLW9uLWV4Y2VwdGlvbi5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9i
cmVhay1vbi1leGNlcHRpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci9icmVhay1vbi11bmNhdWdodC1leGNlcHRpb24uaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvZGVidWdnZXIvYnJlYWstb24tdW5jYXVnaHQtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2V0UGF1c2VPbkFzc2VydGlvbnMuaHRtbDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2V0UGF1c2VPbkFzc2VydGlvbnMtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVzZU9uRGVidWdnZXJTdGF0
ZW1lbnRzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NldFBhdXNlT25EZWJ1
Z2dlclN0YXRlbWVudHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dl
ci9zZXRQYXVzZU9uTWljcm90YXNrcy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dl
ci9zZXRQYXVzZU9uTWljcm90YXNrcy1leHBlY3RlZC50eHQ6CisgICAgICAgIEFkZCB0ZXN0cyBm
b3IgZ2xvYmFsIEphdmFTY3JpcHQgYnJlYWtwb2ludCBjb25maWd1cmF0aW9uIG9wdGlvbnMuCisK
IDIwMjAtMDktMDIgIEthcmwgUmFja2xlciAgPHJhY2tsZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IHJkYXI6Ly82NzI4MTMxMCAoWyBSb3NldHRhIExheW91dCBUZXN0cyBdIFJFR1JFU1NJT04gKHIy
NjU2MzkpOiBbIEJpZyBTdXIgXSAxIGNhbnZhcyBsYXlvdXQgdGVzdCBpcyBhIGNvbnN0YW50IGZh
aWx1cmUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWst
b24tZXhjZXB0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9icmVhay1vbi1leGNlcHRpb24tZXhwZWN0ZWQudHh0CmluZGV4IGMzNzJmMmFlMGQ0NWVhOThk
ZjJlMDJmM2U0NDY4ZGU0OWJmMzU5ZTYuLjVmMWUzMWI5OWZhNzBlZWQ0NjUzNmZkYjQyNDA2NTYy
ZDUwNThjMDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVh
ay1vbi1leGNlcHRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9icmVhay1vbi1leGNlcHRpb24tZXhwZWN0ZWQudHh0CkBAIC0xMSw2ICsxMSwxMCBA
QCBDT05TT0xFIE1FU1NBR0U6IHRlc3RDYXRjaAogQ09OU09MRSBNRVNTQUdFOiB0aHJvd2luZyBU
ZXN0RXJyb3IKIENPTlNPTEUgTUVTU0FHRTogY2F0Y2ggVGVzdEVycm9yCiBDT05TT0xFIE1FU1NB
R0U6IERPTkUKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDEKK0NPTlNP
TEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDIKK0NPTlNPTEUgTUVTU0FHRTogQlJF
QUtQT0lOVCBBQ1RJT04gTE9HIDMKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04g
TE9HIDQKIENoZWNraW5nIHBhdXNlIGxvY2F0aW9ucyB3aGVuIHBhdXNpbmcgb24gYWxsIGV4Y2Vw
dGlvbnMuCiAKIApAQCAtMzQsMyArMzgsOTEgQEAgVW5jYXVnaHQgZXhjZXB0aW9uIGluIHRlc3Qg
cGFnZTogVGVzdEVycm9yIFticmVhay1vbi1leGNlcHRpb24tdGVzdHMuanM6OF0KIFBBU1M6IFNo
b3VsZCBwYXVzZSBmb3IgZXhjZXB0aW9uLgogUEFVU0UgQVQgZG9UaHJvdzo4OjIyCiAKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBCcmVha09uQW55RXhjZXB0aW9uLk9wdGlvbnMuQ29uZGl0aW9uCisK
K1NldHRpbmcgY29uZGl0aW9uIHRvICdmYWxzZScuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50
Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4K
K1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICd0cnVlJy4u
LgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBCcmVha09uQW55RXhjZXB0aW9uLk9wdGlvbnMuSWdub3JlQ291bnQKKworU2V0
dGluZyBpZ25vcmVDb3VudCB0byAnMicuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQ
QVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6
IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hv
dWxkIHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVz
ZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEJyZWFrT25BbnlFeGNlcHRpb24uT3B0aW9ucy5B
Y3Rpb24uTG9nCisKK0FkZGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91
bGQgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9p
bnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hv
dWxkIHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29udGlu
dWUuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBi
cmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcgbG9n
IGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVj
dXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworLS0gUnVu
bmluZyB0ZXN0IGNhc2U6IEJyZWFrT25BbnlFeGNlcHRpb24uT3B0aW9ucy5BY3Rpb25zLkV2YWx1
YXRlCisKK0FkZGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50
Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3Vs
ZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVh
a3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6
IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1
dG8tY29udGludWUuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQg
ZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0Vk
aXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFT
UzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBh
dXNlLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWst
b24tZXhjZXB0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWst
b24tZXhjZXB0aW9uLmh0bWwKaW5kZXggNWE1OWU1Yjg1Y2JiNzY4MzYxZTgzM2I0NmUyNjZkYTVm
MzY5YTcxNS4uMDc2ZjU3MTBkY2Q3MDI2ZjQ4MzcxZjgyMTNlMTk3NDBjZmYzNzZhNiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrLW9uLWV4Y2VwdGlvbi5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVhay1vbi1leGNlcHRp
b24uaHRtbApAQCAtMyw5ICszLDE4IEBACiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9odHRw
L3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9InJlc291cmNlcy9icmVhay1vbi1leGNlcHRpb24tdGVzdHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9icmVha3BvaW50LW9wdGlvbnMtdXRpbGl0aWVz
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiBUZXN0UGFnZS5hbGxvd1VuY2F1Z2h0RXhjZXB0aW9u
cyA9IHRydWU7CiAKK2Z1bmN0aW9uIHRyaWdnZXJFeGNlcHRpb24oKSB7CisgICAgdHJ5IHsKKyAg
ICAgICAgdGhyb3cgIlRlc3RFcnJvciI7CisgICAgfSBjYXRjaCB7IH0KKworICAgIFRlc3RQYWdl
LmRpc3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJUZXN0UGFnZS1leGNlcHRpb24iKTsKK30KKwogZnVu
Y3Rpb24gdGVzdCgpCiB7CiAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFsbEV4Y2VwdGlvbnNCcmVh
a3BvaW50LmRpc2FibGVkID0gZmFsc2U7CkBAIC01Niw2ICs2NSwxOSBAQCBmdW5jdGlvbiB0ZXN0
KCkKICAgICAgICAgZXhwcmVzc2lvbjogYHNldFRpbWVvdXQoKCkgPT4geyB0ZXN0Q2F0Y2goKTsg
fSlgLAogICAgIH0pOwogCisgICAgSW5zcGVjdG9yVGVzdC5CcmVha3BvaW50T3B0aW9ucy5hZGRU
ZXN0Q2FzZXMoc3VpdGUsIHsKKyAgICAgICAgY3JlYXRlQnJlYWtwb2ludCgpIHsKKyAgICAgICAg
ICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxFeGNlcHRpb25zQnJlYWtwb2ludC5kaXNhYmxlZCA9
IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxFeGNlcHRp
b25zQnJlYWtwb2ludDsKKyAgICAgICAgfSwKKyAgICAgICAgdHJpZ2dlckJyZWFrcG9pbnQoKSB7
CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHRyaWdnZXJFeGNlcHRpb24oKWApLAorICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXdhaXRFdmVudCgiVGVzdFBhZ2UtZXhjZXB0aW9uIiksCisg
ICAgICAgICAgICBdKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKwogICAgIHN1aXRlLnJ1blRlc3RD
YXNlc0FuZEZpbmlzaCgpOwogfQogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvYnJlYWstb24tdW5jYXVnaHQtZXhjZXB0aW9uLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVhay1vbi11bmNhdWdodC1leGNl
cHRpb24tZXhwZWN0ZWQudHh0CmluZGV4IGFiNjU2YzRmYTVkZWVkMDNiY2NlMDU5MTNkNTNkYjVl
YjE5NmYwMzkuLjYzYTNhMjQxYjY0NTk4NTdjY2I3NjAyOGNlODYxNjhkMmZkNGU2YzUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVhay1vbi11bmNhdWdodC1l
eGNlcHRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9icmVhay1vbi11bmNhdWdodC1leGNlcHRpb24tZXhwZWN0ZWQudHh0CkBAIC0xMSw2ICsxMSwx
MCBAQCBDT05TT0xFIE1FU1NBR0U6IHRlc3RDYXRjaAogQ09OU09MRSBNRVNTQUdFOiB0aHJvd2lu
ZyBUZXN0RXJyb3IKIENPTlNPTEUgTUVTU0FHRTogY2F0Y2ggVGVzdEVycm9yCiBDT05TT0xFIE1F
U1NBR0U6IERPTkUKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDEKK0NP
TlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDIKK0NPTlNPTEUgTUVTU0FHRTog
QlJFQUtQT0lOVCBBQ1RJT04gTE9HIDMKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJ
T04gTE9HIDQKIENoZWNraW5nIHBhdXNlIGxvY2F0aW9ucyB3aGVuIHBhdXNpbmcgb24gdW5jYXVn
aHQgZXhjZXB0aW9ucy4KIAogCkBAIC0zMywzICszNyw5MSBAQCBVbmNhdWdodCBleGNlcHRpb24g
aW4gdGVzdCBwYWdlOiBUZXN0RXJyb3IgW2JyZWFrLW9uLWV4Y2VwdGlvbi10ZXN0cy5qczo4XQog
LS0gUnVubmluZyB0ZXN0IGNhc2U6IEJyZWFrT25VbmNhdWdodEV4Y2VwdGlvbi5DYXVnaHRFeGNl
cHRpb24KIFBBU1M6IFNob3VsZCBub3QgcGF1c2UsIGV4Y2VwdGlvbiB3YXMgY2F1Z2h0LgogCist
LSBSdW5uaW5nIHRlc3QgY2FzZTogQnJlYWtPblVuY2F1Z2h0RXhjZXB0aW9uLk9wdGlvbnMuQ29u
ZGl0aW9uCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICdmYWxzZScuLi4KKworVHJpZ2dlcmluZyBi
cmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFr
cG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1NldHRpbmcgY29uZGl0aW9uIHRv
ICd0cnVlJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVz
ZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBCcmVha09uVW5jYXVnaHRFeGNlcHRpb24uT3B0aW9ucy5JZ25v
cmVDb3VudAorCitTZXR0aW5nIGlnbm9yZUNvdW50IHRvICcyJy4uLgorCitUcmlnZ2VyaW5nIGJy
ZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtw
b2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50
Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFT
UzogU2hvdWxkIHBhdXNlLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogQnJlYWtPblVuY2F1Z2h0
RXhjZXB0aW9uLk9wdGlvbnMuQWN0aW9uLkxvZworCitBZGRpbmcgbG9nIGFjdGlvbi4uLgorCitU
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQg
YWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKwor
VHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50
IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCitF
bmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFT
UzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBh
dXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
CitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBu
b3QgcGF1c2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBCcmVha09uVW5jYXVnaHRFeGNlcHRp
b24uT3B0aW9ucy5BY3Rpb25zLkV2YWx1YXRlCisKK0FkZGluZyBldmFsdWF0ZSBhY3Rpb24uLi4K
KworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3Bv
aW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rp
b24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBi
cmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0
ZSBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29udGludWUuLi4KKworVHJpZ2dlcmluZyBicmVh
a3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6
IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rp
b24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvYnJlYWstb24tdW5jYXVnaHQtZXhjZXB0aW9uLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWstb24tdW5jYXVnaHQtZXhjZXB0aW9uLmh0
bWwKaW5kZXggYzY2NTI1NjdmYjI1MDA4NDA4MjVhOGNmNGY3NzA4N2Y2MmU5MTU3Ny4uNTZkNWMw
MjU5ZDgwMjVlMDdlMzVmODFkYzAzNWE1NWUyNWVmNmY2YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrLW9uLXVuY2F1Z2h0LWV4Y2VwdGlvbi5odG1sCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVhay1vbi11bmNhdWdodC1leGNl
cHRpb24uaHRtbApAQCAtMyw5ICszLDE4IEBACiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9icmVhay1vbi1leGNlcHRpb24tdGVzdHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9icmVha3BvaW50LW9wdGlvbnMtdXRpbGl0
aWVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiBUZXN0UGFnZS5hbGxvd1VuY2F1Z2h0RXhjZXB0
aW9ucyA9IHRydWU7CiAKK2Z1bmN0aW9uIHRyaWdnZXJFeGNlcHRpb24oKSB7CisgICAgcXVldWVN
aWNyb3Rhc2soKCkgPT4geworICAgICAgICBUZXN0UGFnZS5kaXNwYXRjaEV2ZW50VG9Gcm9udGVu
ZCgiVGVzdFBhZ2UtZXhjZXB0aW9uIik7CisgICAgfSk7CisKKyAgICB0aHJvdyAiVGVzdEVycm9y
IjsKK30KKwogZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnVuY2F1
Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQuZGlzYWJsZWQgPSBmYWxzZTsKQEAgLTczLDYgKzgyLDE5
IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB9CiAgICAgfSk7CiAKKyAgICBJbnNwZWN0b3JU
ZXN0LkJyZWFrcG9pbnRPcHRpb25zLmFkZFRlc3RDYXNlcyhzdWl0ZSwgeworICAgICAgICBjcmVh
dGVCcmVha3BvaW50KCkgeworICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnVuY2F1Z2h0
RXhjZXB0aW9uc0JyZWFrcG9pbnQuZGlzYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVy
biBXSS5kZWJ1Z2dlck1hbmFnZXIudW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludDsKKyAgICAg
ICAgfSwKKyAgICAgICAgdHJpZ2dlckJyZWFrcG9pbnQoKSB7CisgICAgICAgICAgICByZXR1cm4g
UHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBh
Z2UoYHF1ZXVlTWljcm90YXNrKHRyaWdnZXJFeGNlcHRpb24pYCksCisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJUZXN0UGFnZS1leGNlcHRpb24iKSwKKyAgICAgICAg
ICAgIF0pOworICAgICAgICB9LAorICAgIH0pOworCiAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5k
RmluaXNoKCk7CiB9CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9yZXNvdXJjZXMvYnJlYWtwb2ludC1vcHRpb25zLXV0aWxpdGllcy5qcyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZXMvYnJlYWtwb2ludC1vcHRpb25z
LXV0aWxpdGllcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MTNmZWQxMWFlNmFlZGI0YmE3ZjJhZjBjNzNlMzFh
YjVhMGUzNjc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3Jlc291cmNlcy9icmVha3BvaW50LW9wdGlvbnMtdXRpbGl0aWVzLmpzCkBAIC0wLDAgKzEs
MjA0IEBACitUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyKCgpID0+IHsKKyAgICBJbnNwZWN0
b3JUZXN0LkJyZWFrcG9pbnRPcHRpb25zID0ge307CisKKyAgICBJbnNwZWN0b3JUZXN0LkJyZWFr
cG9pbnRPcHRpb25zLmFkZFRlc3RDYXNlcyA9IGZ1bmN0aW9uKHN1aXRlLCB7Y3JlYXRlQnJlYWtw
b2ludCwgdHJpZ2dlckJyZWFrcG9pbnR9KSB7CisgICAgICAgIGZ1bmN0aW9uIHJlbW92ZUJyZWFr
cG9pbnQoYnJlYWtwb2ludCkgeworICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQucmVtb3ZhYmxl
KQorICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQucmVtb3ZlKCk7CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICBicmVha3BvaW50LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBicmVha3BvaW50LnJlc2V0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgICAgICBuYW1lOiBzdWl0ZS5uYW1l
ICsgIi5PcHRpb25zLkNvbmRpdGlvbiIsCisgICAgICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNr
IHRoYXQgdGhlIGRlYnVnZ2VyIHdpbGwgbm90IHBhdXNlIHVubGVzcyB0aGUgYnJlYWtwb2ludCBo
YXMgYSB0cnV0aHkgYnJlYWtwb2ludCBjb25kaXRpb24uIiwKKyAgICAgICAgICAgIGFzeW5jIHRl
c3QoKSB7CisgICAgICAgICAgICAgICAgbGV0IHBhdXNlQ291bnQgPSAwOworCisgICAgICAgICAg
ICAgICAgbGV0IHBhdXNlZExpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAg
ICAgICAgICAgICAgICAgICsrcGF1c2VDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgV0kuZGVi
dWdnZXJNYW5hZ2VyLnJlc3VtZSgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICAgICAgbGV0IGJyZWFrcG9pbnQgPSBhd2FpdCBjcmVhdGVCcmVha3BvaW50KCk7CisKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJTZXR0aW5nIGNvbmRpdGlvbiB0byAnZmFsc2UnLi4uIik7CisgICAg
ICAgICAgICAgICAgYnJlYWtwb2ludC5jb25kaXRpb24gPSAiZmFsc2UiOworCisgICAgICAgICAg
ICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gNDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChpID09PSAzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5l
d2xpbmUoKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlNl
dHRpbmcgY29uZGl0aW9uIHRvICd0cnVlJy4uLiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWtwb2ludC5jb25kaXRpb24gPSAidHJ1ZSI7CisgICAgICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7
CisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRyaWdnZXJCcmVha3BvaW50KCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGkgPD0gMikKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgMCwgIlNob3VsZCBub3QgcGF1c2UuIik7
CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgaSAtIDIsICJTaG91bGQgcGF1c2UuIik7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmVtb3ZlQnJlYWtwb2ludChi
cmVha3BvaW50KTsKKworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVF
dmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHBhdXNlZExpc3Rl
bmVyKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0pOworCisgICAgICAgIHN1aXRlLmFkZFRl
c3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWU6IHN1aXRlLm5hbWUgKyAiLk9wdGlvbnMuSWdub3Jl
Q291bnQiLAorICAgICAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IHRoZSBkZWJ1Z2dl
ciB3aWxsIG5vdCBwYXVzZSB1bmxlc3MgdGhlIGJyZWFrcG9pbnQgaXMgaGl0IGF0IGxlYXN0IGFz
IG1hbnkgdGltZXMgYXMgaXQncyBgaWdub3JlQ291bnRgLiIsCisgICAgICAgICAgICBhc3luYyB0
ZXN0KCkgeworICAgICAgICAgICAgICAgIGxldCBwYXVzZUNvdW50ID0gMDsKKworICAgICAgICAg
ICAgICAgIGxldCBwYXVzZWRMaXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4geworICAg
ICAgICAgICAgICAgICAgICArK3BhdXNlQ291bnQ7CisgICAgICAgICAgICAgICAgICAgIFdJLmRl
YnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAg
ICAgICAgIGxldCBicmVha3BvaW50ID0gYXdhaXQgY3JlYXRlQnJlYWtwb2ludCgpOworCisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZygiU2V0dGluZyBpZ25vcmVDb3VudCB0byAnMicuLi4iKTsKKyAgICAg
ICAgICAgICAgICBicmVha3BvaW50Lmlnbm9yZUNvdW50ID0gMjsKKworICAgICAgICAgICAgICAg
IGZvciAobGV0IGkgPSAxOyBpIDw9NDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAgICAgICAgICAgICAgICAgICAgYXdh
aXQgdHJpZ2dlckJyZWFrcG9pbnQoKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoaSA8PSAy
KQorICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVz
ZUNvdW50LCAwLCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVz
ZUNvdW50LCBpIC0gMiwgIlNob3VsZCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICByZW1vdmVCcmVha3BvaW50KGJyZWFrcG9pbnQpOworCisgICAgICAgICAg
ICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LlBhdXNlZCwgcGF1c2VkTGlzdGVuZXIpOworICAgICAgICAgICAgfSwKKyAg
ICAgICAgfSk7CisKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFt
ZTogc3VpdGUubmFtZSArICIuT3B0aW9ucy5BY3Rpb24uTG9nIiwKKyAgICAgICAgICAgIGRlc2Ny
aXB0aW9uOiAiQ2hlY2sgdGhhdCBsb2cgYnJlYWtwb2ludCBhY3Rpb25zIGV4ZWN1dGUgd2hlbiB0
aGUgYnJlYWtwb2ludCBpcyBoaXQuIiwKKyAgICAgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAg
ICAgICAgICAgICAgbGV0IHBhdXNlQ291bnQgPSAwOworCisgICAgICAgICAgICAgICAgbGV0IHBh
dXNlZExpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVi
dWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAg
ICAgICsrcGF1c2VDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LnJlc3VtZSgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgbGV0IGJy
ZWFrcG9pbnQgPSBhd2FpdCBjcmVhdGVCcmVha3BvaW50KCk7CisKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJBZGRpbmcgbG9nIGFjdGlvbi4uLiIpOworICAgICAgICAgICAgICAgIGxldCBhY3Rpb24g
PSBuZXcgV0kuQnJlYWtwb2ludEFjdGlvbihXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUuTG9nLCB7
ZGF0YTogIkJSRUFLUE9JTlQgQUNUSU9OIExPRyAxIn0pOworICAgICAgICAgICAgICAgIGJyZWFr
cG9pbnQuYWRkQWN0aW9uKGFjdGlvbik7CisKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0g
MTsgaSA8PSA0OyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPiAxKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkVkaXRpbmcgbG9nIGFjdGlvbi4uLiIp
OworICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmRhdGEgPSBgQlJFQUtQT0lOVCBBQ1RJ
T04gTE9HICR7aX1gOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMykgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJFbmFibGluZyBh
dXRvLWNvbnRpbnVlLi4uIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2lu
dC5hdXRvQ29udGludWUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXds
aW5lKCk7CisKKyAgICAgICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2VzID0gW107CisKKyAgICAg
ICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2VBZGRlZExpc3RlbmVyID0gV0kuY29uc29sZU1hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQs
IChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXMucHVzaChldmVu
dC5kYXRhLm1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7Cisg
ICAgICAgICAgICAgICAgICAgIGF3YWl0IHRyaWdnZXJCcmVha3BvaW50KCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Db25z
b2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIG1lc3NhZ2VBZGRlZExpc3RlbmVyKTsKKwor
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQobWVzc2FnZXMuc29t
ZSgobWVzc2FnZSkgPT4gbWVzc2FnZS5tZXNzYWdlVGV4dCA9PT0gYWN0aW9uLmRhdGEpLCAiU2hv
dWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uIik7CisKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGkgPD0gMikKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwocGF1c2VDb3VudCwgaSwgIlNob3VsZCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChwYXVzZUNvdW50LCAyLCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICByZW1vdmVCcmVha3BvaW50KGJyZWFrcG9pbnQpOworCisgICAg
ICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVi
dWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgcGF1c2VkTGlzdGVuZXIpOworICAgICAgICAgICAg
fSwKKyAgICAgICAgfSk7CisKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAg
ICAgbmFtZTogc3VpdGUubmFtZSArICIuT3B0aW9ucy5BY3Rpb25zLkV2YWx1YXRlIiwKKyAgICAg
ICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBldmFsdWF0ZSBicmVha3BvaW50IGFjdGlv
bnMgZXhlY3V0ZSB3aGVuIHRoZSBicmVha3BvaW50IGlzIGhpdC4iLAorICAgICAgICAgICAgYXN5
bmMgdGVzdCgpIHsKKyAgICAgICAgICAgICAgICBsZXQgcGF1c2VDb3VudCA9IDA7CisKKyAgICAg
ICAgICAgICAgICBsZXQgcGF1c2VkTGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsK
KyAgICAgICAgICAgICAgICAgICAgKytwYXVzZUNvdW50OworICAgICAgICAgICAgICAgICAgICBX
SS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IGNyZWF0ZUJyZWFrcG9pbnQoKTsKKwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIkFkZGluZyBldmFsdWF0ZSBhY3Rpb24uLi4iKTsKKyAgICAg
ICAgICAgICAgICBsZXQgYWN0aW9uID0gbmV3IFdJLkJyZWFrcG9pbnRBY3Rpb24oV0kuQnJlYWtw
b2ludEFjdGlvbi5UeXBlLkV2YWx1YXRlLCB7ZGF0YTogIndpbmRvdy5CUkVBS1BPSU5UX0FDVElP
Tl9FVkFMVUFURSA9IDE7In0pOworICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuYWRkQWN0aW9u
KGFjdGlvbik7CisKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA0OyArK2kp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPiAxKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coIkVkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhY3Rpb24uZGF0YSA9IGB3aW5kb3cuQlJFQUtQT0lOVF9BQ1RJT05f
RVZBTFVBVEUgPSAke2l9O2A7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09PSAz
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkVuYWJs
aW5nIGF1dG8tY29udGludWUuLi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
a3BvaW50LmF1dG9Db250aW51ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uIik7CisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRyaWdn
ZXJCcmVha3BvaW50KCk7CisKKyAgICAgICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnRBY3Rp
b25FdmFsdWF0ZVJlc3VsdCA9IGF3YWl0IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHdp
bmRvdy5CUkVBS1BPSU5UX0FDVElPTl9FVkFMVUFURWApOworICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGJyZWFrcG9pbnRBY3Rpb25FdmFsdWF0ZVJlc3VsdCwg
aSwgIlNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLiIpOworCisgICAgICAgICAgICAg
ICAgICAgIGlmIChpIDw9IDIpCisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdEVxdWFsKHBhdXNlQ291bnQsIGksICJTaG91bGQgcGF1c2UuIik7CisgICAgICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwocGF1c2VDb3VudCwgMiwgIlNob3VsZCBub3QgcGF1c2UuIik7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgcmVtb3ZlQnJlYWtwb2ludChicmVha3BvaW50KTsK
KworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVy
KFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHBhdXNlZExpc3RlbmVyKTsKKyAgICAg
ICAgICAgIH0sCisgICAgICAgIH0pOworICAgIH07Cit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVzZU9uQXNzZXJ0aW9ucy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2V0UGF1c2VPbkFzc2VydGlvbnMtZXhw
ZWN0ZWQudHh0CmluZGV4IDk0ZjI5NTMzYzg3Yjg4NmYxYzEwYmEyMzg0ZDU4YzY3YzNhOTc0NzQu
LmRiNjMzMTUxMWNjNzJhMzllMDBhN2ZhNTU3MTVhMmJiMDhkZWI0MzYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVzZU9uQXNzZXJ0aW9ucy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NldFBhdXNlT25Bc3Nl
cnRpb25zLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDI1IEBACiBDT05TT0xFIE1FU1NBR0U6IEZh
aWxpbmcgYXNzZXJ0aW9uCiBDT05TT0xFIE1FU1NBR0U6IEZhaWxpbmcgYXNzZXJ0aW9uCitDT05T
T0xFIE1FU1NBR0U6IEZhaWxpbmcgYXNzZXJ0aW9uCitDT05TT0xFIE1FU1NBR0U6IEZhaWxpbmcg
YXNzZXJ0aW9uCitDT05TT0xFIE1FU1NBR0U6IEZhaWxpbmcgYXNzZXJ0aW9uCitDT05TT0xFIE1F
U1NBR0U6IEZhaWxpbmcgYXNzZXJ0aW9uCitDT05TT0xFIE1FU1NBR0U6IEZhaWxpbmcgYXNzZXJ0
aW9uCitDT05TT0xFIE1FU1NBR0U6IEZhaWxpbmcgYXNzZXJ0aW9uCitDT05TT0xFIE1FU1NBR0U6
IEZhaWxpbmcgYXNzZXJ0aW9uCitDT05TT0xFIE1FU1NBR0U6IEZhaWxpbmcgYXNzZXJ0aW9uCitD
T05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAxCitDT05TT0xFIE1FU1NBR0U6
IEZhaWxpbmcgYXNzZXJ0aW9uCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExP
RyAyCitDT05TT0xFIE1FU1NBR0U6IEZhaWxpbmcgYXNzZXJ0aW9uCitDT05TT0xFIE1FU1NBR0U6
IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAzCitDT05TT0xFIE1FU1NBR0U6IEZhaWxpbmcgYXNzZXJ0
aW9uCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyA0CitDT05TT0xFIE1F
U1NBR0U6IEZhaWxpbmcgYXNzZXJ0aW9uCitDT05TT0xFIE1FU1NBR0U6IEZhaWxpbmcgYXNzZXJ0
aW9uCitDT05TT0xFIE1FU1NBR0U6IEZhaWxpbmcgYXNzZXJ0aW9uCitDT05TT0xFIE1FU1NBR0U6
IEZhaWxpbmcgYXNzZXJ0aW9uCitDT05TT0xFIE1FU1NBR0U6IEZhaWxpbmcgYXNzZXJ0aW9uCiBE
ZWJ1Z2dlci5zZXRQYXVzZU9uQXNzZXJ0aW9ucwogCiAKQEAgLTEwLDMgKzMwLDkxIEBAIFBBU1M6
IFNob3VsZCBub3QgcGF1c2UuCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc2V0UGF1
c2VPbkFzc2VydGlvbnMuRW5hYmxlZAogUEFTUzogU2hvdWxkIHBhdXNlZC4KIAorLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlT25Bc3NlcnRpb25zLk9wdGlvbnMuQ29uZGl0
aW9uCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICdmYWxzZScuLi4KKworVHJpZ2dlcmluZyBicmVh
a3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9p
bnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICd0
cnVlJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4K
KworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5zZXRQYXVzZU9uQXNzZXJ0aW9ucy5PcHRpb25zLkln
bm9yZUNvdW50CisKK1NldHRpbmcgaWdub3JlQ291bnQgdG8gJzInLi4uCisKK1RyaWdnZXJpbmcg
YnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVh
a3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9p
bnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQ
QVNTOiBTaG91bGQgcGF1c2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5zZXRQ
YXVzZU9uQXNzZXJ0aW9ucy5PcHRpb25zLkFjdGlvbi5Mb2cKKworQWRkaW5nIGxvZyBhY3Rpb24u
Li4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVh
a3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9u
Li4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJl
YWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlv
bi4uLgorRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQu
Li4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxk
IG5vdCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtw
b2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBT
aG91bGQgbm90IHBhdXNlLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc2V0UGF1
c2VPbkFzc2VydGlvbnMuT3B0aW9ucy5BY3Rpb25zLkV2YWx1YXRlCisKK0FkZGluZyBldmFsdWF0
ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhl
Y3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBl
dmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91
bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRp
dGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29udGludWUuLi4KKworVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFj
dGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9u
Li4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJl
YWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2V0UGF1c2VPbkFzc2VydGlvbnMuaHRtbCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVzZU9uQXNzZXJ0aW9ucy5odG1s
CmluZGV4IDIzMTYyZDU0MjFlOTMyMzRiYTdlMGM4MGViNWZmOGY2M2I4MDBlMjIuLjc2NDc3OTY5
NGQwZDdmZGU3MzQ2OGZjNGU3YTAwZWQ1YTZlMjdjMDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVzZU9uQXNzZXJ0aW9ucy5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVzZU9uQXNzZXJ0aW9ucy5odG1sCkBAIC0y
LDEwICsyLDEzIEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2JyZWFrcG9pbnQtb3B0aW9ucy11dGlsaXRpZXMuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdD4KIGZ1bmN0aW9uIHRyaWdnZXJBc3NlcnRpb25zKCkgewogICAgIGNvbnNv
bGUuYXNzZXJ0KHRydWUsICJQYXNzaW5nIGFzc2VydGlvbiIpOwogICAgIGNvbnNvbGUuYXNzZXJ0
KGZhbHNlLCAiRmFpbGluZyBhc3NlcnRpb24iKTsKKworICAgIFRlc3RQYWdlLmRpc3BhdGNoRXZl
bnRUb0Zyb250ZW5kKCJUZXN0UGFnZS1hc3NlcnRpb25zIik7CiB9CiAKIGZ1bmN0aW9uIHRlc3Qo
KQpAQCAtMTksNyArMjIsOCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgbmFtZTogIkRlYnVn
Z2VyLnNldFBhdXNlT25Bc3NlcnRpb25zLkRpc2FibGVkIiwKICAgICAgICAgZGVzY3JpcHRpb246
ICJEbyBub3QgcGF1c2Ugb24gYXNzZXJ0aW9ucyB3aGVuIGRpc2FibGVkLiIsCiAgICAgICAgIHRl
c3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYXNz
ZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0KFdJLmRlYnVnZ2VyTWFuYWdlci5hc3NlcnRpb25GYWlsdXJlc0Jy
ZWFrcG9pbnQsICJTaG91bGQgYWxyZWFkeSBoYXZlIGFzc2VydGlvbiBmYWlsdXJlcyBicmVha3Bv
aW50LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoV0kuZGVidWdnZXJNYW5h
Z2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludC5kaXNhYmxlZCwgIkFzc2VydGlvbiBmYWls
dXJlcyBicmVha3BvaW50IHNob3VsZCBiZSBkaXNhYmxlZC4iKTsKIAogICAgICAgICAgICAgbGV0
IGxpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJ
LkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4gewogICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZmFpbCgiU2hvdWxkIG5vdCBoYXZlIHBhdXNlZC4iKTsKQEAgLTI5
LDYgKzMzLDEwIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
dmFsdWF0ZUluUGFnZSgidHJpZ2dlckFzc2VydGlvbnMoKSIsICgpID0+IHsKICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIlNob3VsZCBub3QgcGF1c2UuIik7CiAgICAgICAgICAg
ICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LlBhdXNlZCwgbGlzdGVuZXIpOworCisgICAgICAgICAgICAgICAgV0kuZGVi
dWdnZXJNYW5hZ2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludC5yZW1vdmUoKTsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydCghV0kuZGVidWdnZXJNYW5hZ2VyLmFzc2Vy
dGlvbkZhaWx1cmVzQnJlYWtwb2ludCwgIlNob3VsZCBoYXZlIGRlc3Ryb3llZCBhc3NlcnRpb24g
ZmFpbHVyZXMgYnJlYWtwb2ludC4iKTsKKwogICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9CkBAIC0zOCw3ICs0Niw5IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICBuYW1lOiAiRGVidWdnZXIuc2V0UGF1c2VPbkFzc2VydGlvbnMuRW5hYmxlZCIs
CiAgICAgICAgIGRlc2NyaXB0aW9uOiAiUGF1c2Ugb24gYXNzZXJ0aW9ucyB3aGVuIGVuYWJsZWQu
IiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIFdJLmRlYnVn
Z2VyTWFuYWdlci5hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQuZGlzYWJsZWQgPSBmYWxzZTsK
KyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5jcmVhdGVBc3NlcnRpb25GYWlsdXJlc0Jy
ZWFrcG9pbnQoKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KFdJLmRlYnVnZ2Vy
TWFuYWdlci5hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQsICJTaG91bGQgaGF2ZSBjcmVhdGVk
IGFzc2VydGlvbiBmYWlsdXJlcyBicmVha3BvaW50LiIpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnQoIVdJLmRlYnVnZ2VyTWFuYWdlci5hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9p
bnQuZGlzYWJsZWQsICJBc3NlcnRpb24gZmFpbHVyZXMgYnJlYWtwb2ludCBzaG91bGQgYmUgZW5h
YmxlZC4iKTsKIAogICAgICAgICAgICAgbGV0IGRpZFBhdXNlID0gZmFsc2U7CiAgICAgICAgICAg
ICBsZXQgbGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVu
ZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CkBAIC01MCwx
MSArNjAsMjggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKCJ0cmlnZ2VyQXNzZXJ0aW9ucygpIiwgKCkgPT4gewogICAgICAgICAgICAg
ICAgIGlmICghZGlkUGF1c2UpCiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZmFp
bCgiU2hvdWxkIGhhdmUgcGF1c2VkLiIpOworCisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJN
YW5hZ2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludC5yZW1vdmUoKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydCghV0kuZGVidWdnZXJNYW5hZ2VyLmFzc2VydGlvbkZh
aWx1cmVzQnJlYWtwb2ludCwgIlNob3VsZCBoYXZlIGRlc3Ryb3llZCBhc3NlcnRpb24gZmFpbHVy
ZXMgYnJlYWtwb2ludC4iKTsKKwogICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICB9CiAgICAgfSk7CiAKKyAgICBJbnNwZWN0b3JUZXN0LkJyZWFrcG9p
bnRPcHRpb25zLmFkZFRlc3RDYXNlcyhzdWl0ZSwgeworICAgICAgICBjcmVhdGVCcmVha3BvaW50
KCkgeworICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmNyZWF0ZUFzc2VydGlvbkZhaWx1
cmVzQnJlYWtwb2ludCgpOworICAgICAgICAgICAgcmV0dXJuIFdJLmRlYnVnZ2VyTWFuYWdlci5h
c3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQ7CisgICAgICAgIH0sCisgICAgICAgIHRyaWdnZXJC
cmVha3BvaW50KCkgeworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoIlRlc3RQYWdlLWFzc2VydGlvbnMiKSwK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0cmlnZ2VyQXNz
ZXJ0aW9ucygpYCksCisgICAgICAgICAgICBdKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKwogICAg
IHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogfQogPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVt
ZW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2V0UGF1
c2VPbkRlYnVnZ2VyU3RhdGVtZW50cy1leHBlY3RlZC50eHQKaW5kZXggODA2Njk1NDgyNjQwMzBj
NTJmZGVlOWRiN2ZjMzVkNzAzMGFjM2Q1Zi4uNmMxYTI5MmEzOGZhNzZmM2RmM2Q4ZDg1MWY1MmQ4
YWM0NTVmMjUyYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Nl
dFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzLWV4cGVjdGVk
LnR4dApAQCAtMSwzICsxLDcgQEAKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04g
TE9HIDEKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDIKK0NPTlNPTEUg
TUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDMKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQ
T0lOVCBBQ1RJT04gTE9HIDQKIFRlc3RzIGZvciBEZWJ1Z2dlci5zZXRQYXVzZU9uRGVidWdnZXJT
dGF0ZW1lbnRzIGNvbW1hbmQuCiAKIApAQCAtOCwzICsxMiw5MSBAQCBQQVNTOiBTaG91bGQgbm90
IHBhdXNlLgogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlT25EZWJ1Z2dl
clN0YXRlbWVudHMuRW5hYmxlZAogUEFTUzogU2hvdWxkIHBhdXNlZC4KIAorLS0gUnVubmluZyB0
ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHMuT3B0aW9ucy5D
b25kaXRpb24KKworU2V0dGluZyBjb25kaXRpb24gdG8gJ2ZhbHNlJy4uLgorCitUcmlnZ2VyaW5n
IGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworU2V0dGluZyBjb25kaXRpb24g
dG8gJ3RydWUnLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBh
dXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKwor
LS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVu
dHMuT3B0aW9ucy5JZ25vcmVDb3VudAorCitTZXR0aW5nIGlnbm9yZUNvdW50IHRvICcyJy4uLgor
CitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1Ry
aWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dl
cmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
RGVidWdnZXIuc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cy5PcHRpb25zLkFjdGlvbi5Mb2cK
KworQWRkaW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNT
OiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4K
KworRWRpdGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFT
UzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2Uu
CisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLgorCitU
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQg
YWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4u
CisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtw
b2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogRGVidWdnZXIuc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cy5PcHRpb25zLkFjdGlv
bnMuRXZhbHVhdGUKKworQWRkaW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJy
ZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFT
UzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2Vy
aW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9u
LgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorRW5h
YmxpbmcgYXV0by1jb250aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6
IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVz
ZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50
Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3Vs
ZCBub3QgcGF1c2UuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9zZXRQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cy5odG1sCmluZGV4IGQ4OGMw
OTA5OWRhNDQ4YWVhZDI5YzlkMDNhMzMzMTAyYzJlYzFhNGEuLmNhMTEyYTFhYzAwZGEyN2E5ZTJj
ZDg5ZTM4MWM3MDUxZTEyMTQ4NGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9zZXRQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NldFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHMuaHRtbApA
QCAtMiw5ICsyLDEyIEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JyZWFrcG9pbnQtb3B0aW9ucy11dGlsaXRpZXMuanMiPjwv
c2NyaXB0PgogPHNjcmlwdD4KIGZ1bmN0aW9uIHRyaWdnZXJEZWJ1Z2dlclN0YXRlbWVudCgpIHsK
ICAgICBkZWJ1Z2dlcjsKKworICAgIFRlc3RQYWdlLmRpc3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJU
ZXN0UGFnZS1kZWJ1Z2dlci1zdGF0ZW1lbnQiKTsKIH0KIAogZnVuY3Rpb24gdGVzdCgpCkBAIC01
MSw2ICs1NCwxOSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgfQogICAgIH0pOwogCisgICAg
SW5zcGVjdG9yVGVzdC5CcmVha3BvaW50T3B0aW9ucy5hZGRUZXN0Q2FzZXMoc3VpdGUsIHsKKyAg
ICAgICAgY3JlYXRlQnJlYWtwb2ludCgpIHsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdl
ci5kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50LmRpc2FibGVkID0gZmFsc2U7CisgICAgICAg
ICAgICByZXR1cm4gV0kuZGVidWdnZXJNYW5hZ2VyLmRlYnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9p
bnQ7CisgICAgICAgIH0sCisgICAgICAgIHRyaWdnZXJCcmVha3BvaW50KCkgeworICAgICAgICAg
ICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKGB0cmlnZ2VyRGVidWdnZXJTdGF0ZW1lbnQoKWApLAorICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXdhaXRFdmVudCgiVGVzdFBhZ2UtZGVidWdnZXItc3RhdGVtZW50
IiksCisgICAgICAgICAgICBdKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKwogICAgIHN1aXRlLnJ1
blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogfQogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2V0UGF1c2VPbk1pY3JvdGFza3MtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NldFBhdXNlT25NaWNyb3Rhc2tzLWV4
cGVjdGVkLnR4dAppbmRleCAxZDkwY2VkMzA2MjgwY2Y5ZjRjZWEyNWNmZWM5ZjBhNDNlMjc1YjQx
Li42ZTBmYTNlYzFiOTUzZWMwMzJmOWQ4MmYzMmQwYzliYThmYTIxN2Y4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2V0UGF1c2VPbk1pY3JvdGFza3MtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVzZU9uTWlj
cm90YXNrcy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw3IEBACitDT05TT0xFIE1FU1NBR0U6IEJS
RUFLUE9JTlQgQUNUSU9OIExPRyAxCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9O
IExPRyAyCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAzCitDT05TT0xF
IE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyA0CiBUZXN0cyBmb3IgRGVidWdnZXIuc2V0
UGF1c2VPbk1pY3JvdGFza3MgY29tbWFuZC4KIAogCkBAIC0yMCwzICsyNCw5MSBAQCBQQVNTOiBT
aG91bGQgbm90IGhhdmUgcGF1c2VkLgogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNl
dFBhdXNlT25NaWNyb3Rhc2tzLkVuYWJsZWQuUHJvbWlzZS5yZWplY3QKIFBBU1M6IFNob3VsZCBo
YXZlIHBhdXNlZC4KIAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlT25N
aWNyb3Rhc2tzLk9wdGlvbnMuQ29uZGl0aW9uCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICdmYWxz
ZScuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNl
LgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisK
K1NldHRpbmcgY29uZGl0aW9uIHRvICd0cnVlJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQu
Li4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNT
OiBTaG91bGQgcGF1c2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5zZXRQYXVz
ZU9uTWljcm90YXNrcy5PcHRpb25zLklnbm9yZUNvdW50CisKK1NldHRpbmcgaWdub3JlQ291bnQg
dG8gJzInLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBw
YXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNl
LgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBEZWJ1Z2dlci5zZXRQYXVzZU9uTWljcm90YXNrcy5PcHRpb25zLkFjdGlvbi5M
b2cKKworQWRkaW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQ
QVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVz
ZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgor
UEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1
c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLgor
CitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9p
bnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9u
Li4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJl
YWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogRGVidWdnZXIuc2V0UGF1c2VPbk1pY3JvdGFza3MuT3B0aW9ucy5BY3Rpb25zLkV2
YWx1YXRlCisKK0FkZGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3Bv
aW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNo
b3VsZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBi
cmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BB
U1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KK0VuYWJsaW5n
IGF1dG8tY29udGludWUuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91
bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisK
K0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgor
UEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90
IHBhdXNlLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2V0
UGF1c2VPbk1pY3JvdGFza3MuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9z
ZXRQYXVzZU9uTWljcm90YXNrcy5odG1sCmluZGV4IGI1ZGExODQzZmZjOWU3ODM3YjY3MWNjZTll
ZjQ1ZmMzODkwM2NmYzIuLmIzN2ZiNTZkYjk2MzBjNTk4YzlhMjY2MWUzNTQ5OTkwMWUwNzU2Y2Ug
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVzZU9uTWlj
cm90YXNrcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVz
ZU9uTWljcm90YXNrcy5odG1sCkBAIC0yLDcgKzIsMTQgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYnJlYWtwb2ludC1vcHRp
b25zLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgorZnVuY3Rpb24gdHJpZ2dlck1p
Y3JvdGFzaygpIHsKKyAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7CisgICAgICAgIFRlc3RQYWdl
LmRpc3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJUZXN0UGFnZS1taWNyb3Rhc2siKTsKKyAgICB9KTsK
K30KKwogZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5j
cmVhdGVBc3luY1N1aXRlKCJEZWJ1Z2dlci5zZXRQYXVzZU9uTWljcm90YXNrcyIpOwpAQCAtMjcs
NyArMzQsOSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIG5hbWU6ICJEZWJ1Z2dlci5z
ZXRQYXVzZU9uTWljcm90YXNrcy5EaXNhYmxlZC4iICsgbmFtZSwKICAgICAgICAgICAgIGRlc2Ny
aXB0aW9uOiAiRG8gbm90IHBhdXNlIG9uIG1pY3JvdGFza3Mgd2hlbiBkaXNhYmxlZC4iLAogICAg
ICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgICAgICBXSS5kZWJ1
Z2dlck1hbmFnZXIuYWxsTWljcm90YXNrc0JyZWFrcG9pbnQuZGlzYWJsZWQgPSB0cnVlOworICAg
ICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5jcmVhdGVBbGxNaWNyb3Rhc2tzQnJlYWtw
b2ludCh7ZGlzYWJsZWQ6IHRydWV9KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydChXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsTWljcm90YXNrc0JyZWFrcG9pbnQsICJTaG91bGQg
aGF2ZSBjcmVhdGVkIGFsbCBtaWNyb3Rhc2tzIGJyZWFrcG9pbnQuIik7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoV0kuZGVidWdnZXJNYW5hZ2VyLmFsbE1pY3JvdGFza3NC
cmVha3BvaW50LmRpc2FibGVkLCAiQWxsIG1pY3JvdGFza3MgYnJlYWtwb2ludCBzaG91bGQgYmUg
ZGlzYWJsZWQuIik7CiAKICAgICAgICAgICAgICAgICBsZXQgZGlkUGF1c2UgPSBmYWxzZTsKICAg
ICAgICAgICAgICAgICBsZXQgbGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmly
ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9
PiB7CkBAIC0zOCw2ICs0Nyw5IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoZXhwcmVzc2lvbiwgKCkgPT4gewogICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoIWRpZFBhdXNlLCAiU2hvdWxkIG5v
dCBoYXZlIHBhdXNlZC4iKTsKICAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgbGlz
dGVuZXIpOworCisgICAgICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxNaWNy
b3Rhc2tzQnJlYWtwb2ludC5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnQoIVdJLmRlYnVnZ2VyTWFuYWdlci5hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludCwg
IlNob3VsZCBoYXZlIGRlc3Ryb3llZCBhbGwgbWljcm90YXNrcyBicmVha3BvaW50LiIpOwogICAg
ICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICB9CkBAIC00Nyw3ICs1OSw5IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgbmFt
ZTogIkRlYnVnZ2VyLnNldFBhdXNlT25NaWNyb3Rhc2tzLkVuYWJsZWQuIiArIG5hbWUsCiAgICAg
ICAgICAgICBkZXNjcmlwdGlvbjogIkRvIG5vdCBwYXVzZSBvbiBtaWNyb3Rhc2tzIHdoZW4gZGlz
YWJsZWQuIiwKICAgICAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAg
ICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFsbE1pY3JvdGFza3NCcmVha3BvaW50LmRpc2FibGVk
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmNyZWF0ZUFsbE1p
Y3JvdGFza3NCcmVha3BvaW50KCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnQoV0kuZGVidWdnZXJNYW5hZ2VyLmFsbE1pY3JvdGFza3NCcmVha3BvaW50LCAiU2hvdWxkIGhh
dmUgY3JlYXRlZCBhbGwgbWljcm90YXNrcyBicmVha3BvaW50LiIpOworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0KCFXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsTWljcm90YXNrc0Jy
ZWFrcG9pbnQuZGlzYWJsZWQsICJBbGwgbWljcm90YXNrcyBicmVha3BvaW50IHNob3VsZCBiZSBl
bmFibGVkLiIpOwogCiAgICAgICAgICAgICAgICAgbGV0IGRpZFBhdXNlID0gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLnNpbmdsZUZpcmVF
dmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4g
ewpAQCAtNTgsMTIgKzcyLDI4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoZXhwcmVzc2lvbiwgKCkgPT4gewogICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZGlkUGF1c2UsICJTaG91bGQgaGF2
ZSBwYXVzZWQuIik7CiAgICAgICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1v
dmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIGxpc3RlbmVy
KTsKKworICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsTWljcm90YXNr
c0JyZWFrcG9pbnQucmVtb3ZlKCk7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0KCFXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsTWljcm90YXNrc0JyZWFrcG9pbnQsICJTaG91
bGQgaGF2ZSBkZXN0cm95ZWQgYWxsIG1pY3JvdGFza3MgYnJlYWtwb2ludC4iKTsKICAgICAgICAg
ICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAg
fQogICAgICAgICB9KTsKICAgICB9CiAKKyAgICBJbnNwZWN0b3JUZXN0LkJyZWFrcG9pbnRPcHRp
b25zLmFkZFRlc3RDYXNlcyhzdWl0ZSwgeworICAgICAgICBjcmVhdGVCcmVha3BvaW50KCkgewor
ICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmNyZWF0ZUFsbE1pY3JvdGFza3NCcmVha3Bv
aW50KCk7CisgICAgICAgICAgICByZXR1cm4gV0kuZGVidWdnZXJNYW5hZ2VyLmFsbE1pY3JvdGFz
a3NCcmVha3BvaW50OworICAgICAgICB9LAorICAgICAgICB0cmlnZ2VyQnJlYWtwb2ludCgpIHsK
KyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hd2FpdEV2ZW50KCJUZXN0UGFnZS1taWNyb3Rhc2siKSwKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0cmlnZ2VyTWljcm90YXNrKClgKSwKKyAg
ICAgICAgICAgIF0pOworICAgICAgICB9LAorICAgIH0pOworCiAgICAgc3VpdGUucnVuVGVzdENh
c2VzQW5kRmluaXNoKCk7CiB9CiA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407873</attachid>
            <date>2020-09-02 23:45:26 -0700</date>
            <delta_ts>2020-09-03 10:53:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215794.patch</filename>
            <type>text/plain</type>
            <size>129990</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGVjODEwZTgwZTg3MTJhZGE4OTEyMTJmODMyZGYw
Y2ZjMjQ1MmY4MzMuLjQ3YTE3NjZhMzNkYjlkMWFiNjgwNTFjMThhMzg3NDIxYjBmMTg0OTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDIwLTA5LTAyICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBh
bGxvdyBzcGVjaWFsIEphdmFTY3JpcHQgYnJlYWtwb2ludHMgdG8gYmUgY29uZmlndXJlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1Nzk0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cHJvdG9jb2wvRGVidWdnZXIuanNvbjoKKyAgICAgICAgQWRkIGFuIGBvcHRpb25zYCBwYXJhbWV0
ZXIgdG8gdGhlIGZvbGxvd2luZyBjb21tYW5kcyBmb3IgY29uZmlndXJpbmcgdGhlIHJlbGF0ZWQg
YnJlYWtwb2ludDoKKyAgICAgICAgIC0gYERlYnVnZ2VyLnNldFBhdXNlT25EZWJ1Z2dlclN0YXRl
bWVudHNgCisgICAgICAgICAtIGBEZWJ1Z2dlci5zZXRQYXVzZU9uRXhjZXB0aW9uc2AKKyAgICAg
ICAgIC0gYERlYnVnZ2VyLnNldFBhdXNlT25Bc3NlcnRpb25zYAorICAgICAgICAgLSBgRGVidWdn
ZXIuc2V0UGF1c2VPbk1pY3JvdGFza3NgCisKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5o
OgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6bmVlZHNFeGNlcHRpb25DYWxsYmFja3MgY29uc3Qp
OgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cGF1c2VPbkFsbEV4Y2VwdGlvbnNCcmVha3BvaW50
IGNvbnN0KTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpzZXRQYXVzZU9uQWxsRXhj
ZXB0aW9uc0JyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnBhdXNl
T25VbmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50IGNvbnN0KTogQWRkZWQuCisgICAgICAgIChK
U0M6OkRlYnVnZ2VyOjpzZXRQYXVzZU9uVW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludCk6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6c2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50
c0JyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnBhdXNlT25FeGNl
cHRpb25zU3RhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6c2V0
UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cyk6IERlbGV0ZWQuCisgICAgICAgICogZGVidWdnZXIv
RGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6VGVtcG9yYXJpbHlEaXNhYmxl
RXhjZXB0aW9uQnJlYWtwb2ludHM6OlRlbXBvcmFyaWx5RGlzYWJsZUV4Y2VwdGlvbkJyZWFrcG9p
bnRzKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpUZW1wb3JhcmlseURpc2FibGVF
eGNlcHRpb25CcmVha3BvaW50czo6flRlbXBvcmFyaWx5RGlzYWJsZUV4Y2VwdGlvbkJyZWFrcG9p
bnRzKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpUZW1wb3JhcmlseURpc2FibGVF
eGNlcHRpb25CcmVha3BvaW50czo6cmVwbGFjZSk6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWJ1
Z2dlcjo6VGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHM6OnJlc3RvcmUpOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OkRlYnVnZ2VyKToKKyAgICAgICAgKEpTQzo6
RGVidWdnZXI6OmJyZWFrUHJvZ3JhbSk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpleGNlcHRp
b24pOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6ZGlkUmVhY2hEZWJ1Z2dlclN0YXRlbWVudCk6
CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKTogRGVs
ZXRlZC4KKyAgICAgICAgQWRkIGBKU0M6OkJyZWFrcG9pbnRgIG1lbWJlciB2YXJpYWJsZXMgZm9y
IHRoZSBEZWJ1Z2dlciBTdGF0ZW1lbnRzIGFuZCBFeGNlcHRpb25zCisgICAgICAgIGJyZWFrcG9p
bnRzLiBTcGxpdCB0aGUgRXhjZXB0aW9ucyBicmVha3BvaW50IGludG8gdHdvIGBKU0M6OkJyZWFr
cG9pbnRgIG5vdyB0aGF0CisgICAgICAgIEFsbCBFeGNlcHRpb25zIGFuZCBVbmNhdWdodCBFeGNl
cHRpb25zIGNhbiBiZSBpbmRlcGVuZGVudGx5IGNvbmZpZ3VyZWQgKHRoZSBBbGwKKyAgICAgICAg
RXhjZXB0aW9ucyBicmVha3BvaW50IHN0aWxsIHRha2VzIHByZWNlZGVuY2UpLgorCisgICAgICAg
ICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaDoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1
Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjpldmFs
dWF0ZVdpdGhTY29wZUV4dGVuc2lvbik6CisgICAgICAgIElmIHRoZXJlIGlzIG5vIGBDYWxsRnJh
bWVgLCBjbGltYiB0aGUgYmFja3RyYWNlIHVudGlsIHRoZSBmaXJzdCB2YWxpZCBgQ2FsbEZyYW1l
YCBpcyByZWFjaGVkLgorICAgICAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHBhdXNpbmcgaW4gbmF0
aXZlIGNvZGUsIHN1Y2ggYXMgZm9yIGFzc2VydGlvbnMvZXhjZXB0aW9ucy4KKworICAgICAgICAq
IGRlYnVnZ2VyL0JyZWFrcG9pbnQuaDoKKyAgICAgICAgRXhwb3J0IGBKU0M6OkJyZWFrcG9pbnQ6
OmNyZWF0ZWAgc28gdGhhdCBvdGhlciBwYXJ0cyBvZiBXZWJLaXQgY2FuIGNyZWF0ZSBicmVha3Bv
aW50cy4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUp
OgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpoYW5kbGVDb25z
b2xlQXNzZXJ0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
c2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25FeGNlcHRpb25zKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0UGF1c2VPbkFzc2VydGlvbnMpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVzZU9uTWljcm90
YXNrcyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmV2YWx1
YXRlT25DYWxsRnJhbWUpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpzY3JpcHRFeGVjdXRpb25CbG9ja2VkQnlDU1ApOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojp3aWxsUnVuTWljcm90YXNrKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUnVuTWljcm90YXNrKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtQcm9ncmFtKToKKyAgICAg
ICAgQWRkIGBKU0M6OkJyZWFrcG9pbnRgIG1lbWJlciB2YXJpYWJsZXMgZm9yIHRoZSBBc3NlcnRp
b24gRmFpbHVyZXMgYW5kIEFsbCBNaWNyb3Rhc2tzCisgICAgICAgIGJyZWFrcG9pbnRzLiBQYXNz
IHRoZW0gdG8gdGhlIGBKU0M6OkRlYnVnZ2VyYCB3aGVuIHRoZXkgYXJlIGhpdC4KKworICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHA6CisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvckF1ZGl0QWdlbnQ6OnJ1bik6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yUnVudGltZUFnZW50OjpjYWxsRnVuY3Rpb25Pbik6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJldmlldyk6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAgIChJbnNwZWN0
b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk6IERlbGV0ZWQuCisg
ICAgICAgIFVzZSBgVGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHNgIHRvIHNh
dmUsIG92ZXJyaWRlLCBhbmQgcmVzdG9yZSB0aGUgZXhjZXB0aW9ucworICAgICAgICBicmVha3Bv
aW50cyBub3cgdGhhdCB0aGV5J3ZlIGJlZW4gc2VwYXJhdGVkIGludG8gdHdvIGBKU0M6OkJyZWFr
cG9pbnRgIGluc3RlYWQgb2YgYW4gYGVudW1gLgorCiAyMDIwLTA5LTAxICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgU2tpcCBmYXN0L2Nzcy1jdXN0b20tcGFp
bnQvb3V0LW9mLW1lbW9yeS13aGlsZS1hZGRpbmctd29ya2xldC1tb2R1bGUuaHRtbCBpZiBHaWdh
Y2FnZSBpcyBub3QgZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggYzk2N2I3ZTk2
NTkyOTZjYzEyZWJlMTJhMTYxMDJhNmI2OGY5OWVlNi4uMzE5MzJjZDBjMjY3Y2Y0ZjhjMGMwYjQy
MDdhM2FiZjdmYzJhNmIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODYg
QEAKKzIwMjAtMDktMDIgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IGFsbG93IHNwZWNpYWwgSmF2YVNjcmlwdCBicmVha3BvaW50cyB0
byBiZSBjb25maWd1cmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTU3OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnQuanM6CisgICAgICAgIChX
SS5CcmVha3BvaW50LnByb3RvdHlwZS5yZXNldCk6IEFkZGVkLgorICAgICAgICBQcm92aWRlIGEg
d2F5IHRvIGNvbnNpc3RlbnRseSBjbGVhciB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvSmF2YVNjcmlwdEJyZWFrcG9pbnQuanM6Cisg
ICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5zdXBwb3J0c01pY3JvdGFza3MpOiBBZGRl
ZC4KKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnN1cHBvcnRzRGVidWdnZXJTdGF0
ZW1lbnRzKTogQWRkZWQuCisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5mcm9tSlNP
Tik6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUudG9KU09OKToK
KyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlwZS5nZXQgZWRpdGFibGUp
OgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLl9pc1NwZWNpYWwp
OgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlQ29kZUxvY2F0aW9uLmpz
OgorICAgICAgICAoV0kuU291cmNlQ29kZUxvY2F0aW9uLmdldCBzcGVjaWFsQnJlYWtwb2ludExv
Y2F0aW9uKTogQWRkZWQuCisgICAgICAgIEFkZCBhIGhlbHBlciBmb3IgdGhlIHNwZWNpYWwgYG51
bGw6SW5maW5pdHk6SW5maW5pdHlgIGJyZWFrcG9pbnQgbG9jYXRpb24gZm9yIGNvbnNpc3RlbmN5
LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dlck1hbmFnZXIu
anM6CisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIpOgorICAgICAgICAoV0kuRGVidWdnZXJN
YW5hZ2VyLnByb3RvdHlwZS5hc3luYyBpbml0aWFsaXplVGFyZ2V0KToKKyAgICAgICAgKFdJLkRl
YnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuY3JlYXRlQXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50
KTogQWRkZWQuCisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmNyZWF0ZUFs
bE1pY3JvdGFza3NCcmVha3BvaW50KTogQWRkZWQuCisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFn
ZXIucHJvdG90eXBlLnNldCBicmVha3BvaW50c0VuYWJsZWQpOgorICAgICAgICAoV0kuRGVidWdn
ZXJNYW5hZ2VyLnByb3RvdHlwZS5hZGRCcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRlYnVnZ2Vy
TWFuYWdlci5wcm90b3R5cGUucmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAgIChXSS5EZWJ1Z2dl
ck1hbmFnZXIucHJvdG90eXBlLl9zZXRQYXVzZU9uRXhjZXB0aW9ucyk6IEFkZGVkLgorICAgICAg
ICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fY3JlYXRlU3BlY2lhbEJyZWFrcG9pbnQp
OiBBZGRlZC4KKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3VwZGF0ZVNw
ZWNpYWxCcmVha3BvaW50KTogQWRkZWQuCisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJv
dG90eXBlLl9icmVha3BvaW50RGlzYWJsZWRTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXSS5E
ZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9icmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eURpZENo
YW5nZSk6CisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl91cGRhdGVCcmVh
a09uRXhjZXB0aW9uc1N0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgTWFpbnRhaW4gYSBgV0kuU2V0
dGluZ2AgZm9yIHRoZSBjb25maWd1cmF0aW9uIG9mIGVhY2ggc3BlY2lhbCBgV0kuSmF2YVNjcmlw
dEJyZWFrcG9pbnRgLgorICAgICAgICBIYXZlIGEgY29tbW9uIHBhdGggZm9yIHVwZGF0aW5nIGFs
bCBzcGVjaWFsIGBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludGAgdG8gYXZvaWQgZHVwbGljYXRlZAor
ICAgICAgICBjb2RlLgorICAgICAgICBBZGQgbWV0aG9kcyBmb3IgY3JlYXRpbmcgdGhlIEFzc2Vy
dGlvbiBGYWlsdXJlcyBhbmQgQWxsIE1pY3JvdGFza3MgYFdJLkphdmFTY3JpcHRCcmVha3BvaW50
YAorICAgICAgICBzaW5jZSB0aGV5IGNhbiBiZSByZW1vdmVkIChpbiBhZGRpdGlvbiB0byBiZWlu
ZyBkaXNhYmxlZCkgYW5kIHJlLWFkZGVkLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9CcmVha3BvaW50UG9wb3Zlci5qczoKKyAgICAgICAgKFdJLkJyZWFrcG9pbnRQb3BvdmVyLmFw
cGVuZENvbnRleHRNZW51SXRlbXMpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQnJl
YWtwb2ludFRyZWVFbGVtZW50LmpzOgorICAgICAgICAoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50
LnByb3RvdHlwZS5vbmRlbGV0ZSk6CisgICAgICAgIElmIHRoZSBgV0kuQnJlYWtwb2ludGAgaXMg
bm90IHJlbW92YWJsZSwgbWFrZSBzdXJlIHRvIGByZXNldGAgaXQgaW4gYWRkaXRpb24gdG8gZGlz
YWJsaW5nCisgICAgICAgIGl0IHNvIHRoYXQgbm8gY29uZmlndXJhdGlvbiBwZXJzaXN0cyBpZiB0
aGUgYFdJLkJyZWFrcG9pbnRgIGlzIGxhdGVyIGVuYWJsZWQuCisKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL1NvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAo
V0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwpOgorICAgICAgICAoV0kuU291cmNlc05h
dmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl9oYW5kbGVCcmVha3BvaW50VHJlZU91dGxp
bmVFbGVtZW50UmVtb3ZlZCk6IEFkZGVkLgorICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25T
aWRlYmFyUGFuZWwucHJvdG90eXBlLl9oYW5kbGVCcmVha3BvaW50RWxlbWVudEFkZGVkT3JSZW1v
dmVkKTogRGVsZXRlZC4KKyAgICAgICAgRWxpbWluYXRlIHRoZSBuZWVkIHRvIGxpc3RlbiBmb3Ig
d2hlbiBicmVha3BvaW50cyBhcmUgYWRkZWQgdG8gdGhlIGBXSS5UcmVlT3V0bGluZWAsIHdoaWNo
CisgICAgICAgIHdhcyBwcmV2aW91c2x5IHVzZWQgdG8gdXBkYXRlIHRoZSBgV0kuU2V0dGluZ2Ag
Zm9yIHdoZXRoZXIgc3BlY2lhbCBgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRgCisgICAgICAgIGFy
ZSB2aXNpYmxlLgorICAgICAgICBEb24ndCBhc3N1bWUgdGhhdCBhIGBXSS5CcmVha3BvaW50YCBl
eGlzdHMgZm9yIGVhY2ggc3BlY2lhbCBgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRgLgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanM6CisgICAgICAgIChXSS5TZXR0aW5n
KToKKyAgICAgICAgKFdJLlNldHRpbmcubWlncmF0ZVZhbHVlKToKKyAgICAgICAgKFdJLlNldHRp
bmcucmVzZXQpOgorICAgICAgICAoV0kuU2V0dGluZy5wcm90b3R5cGUuZ2V0IHZhbHVlKToKKyAg
ICAgICAgKFdJLlNldHRpbmcucHJvdG90eXBlLnNhdmUpOgorICAgICAgICAoV0kuU2V0dGluZy5f
bG9jYWxTdG9yYWdlS2V5UHJlZml4KTogQWRkZWQuCisgICAgICAgIChXSS5TZXR0aW5nLl9sb2Nh
bFN0b3JhZ2VLZXkpOiBEZWxldGVkLgorICAgICAgICBFYWdlcmx5IGNvbXB1dGUgdGhlIGtleSBw
cmVmaXggYXMgaXQgc2hvdWxkbid0IGNoYW5nZSB0aHJvdWdoIHRoZSBsaWZldGltZSBvZiBXZWIg
SW5zcGVjdG9yCisgICAgICAgIGFuZCBpcyB1c2VkIGVhcmx5IG9uIHRvby4KKyAgICAgICAgQWRk
IGEgc3RhdGljIG1lbWJlciBgaXNGaXJzdExhdW5jaGAgd2hpY2ggY2FuIGJlIHVzZWQgYnkgb3Ro
ZXIgYFdJLlNldHRpbmdgIHRvIGFkanVzdCB0aGVpcgorICAgICAgICB2YWx1ZSB3aGVuIFdlYiBJ
bnNwZWN0b3IgaXMgaW4gYSBjbGVhbiBzdGF0ZSAoZS5nLiBzaG93IHRoZSBBc3NlcnRpb24gRmFp
bHVyZXMgYnJlYWtwb2ludCBieQorICAgICAgICBkZWZhdWx0LCBidXQgb25seSBmb3IgdGhlIGZp
cnN0IGxhdW5jaCkuIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgYFdJLlNldHRpbmdgIGNsZWFycyB0
aGUga2V5CisgICAgICAgIGZyb20gYGxvY2FsU3RvcmFnZWAgaWYgdGhlIGN1cnJlbnQgYHZhbHVl
YCBtYXRjaGVzIHRoZSBgX2RlZmF1bHRWYWx1ZWAuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L01vZGVscy9Qcm9iZVNldC5qczoKKyAgICAgICAgKFdJLlByb2JlU2V0KToKKyAgICAgICAgKFdJ
LlByb2JlU2V0LnByb3RvdHlwZS53aWxsUmVtb3ZlKToKKyAgICAgICAgKFdJLlByb2JlU2V0LnBy
b3RvdHlwZS5fc2FtcGxlQ29sbGVjdGVkKToKKyAgICAgICAgKFdJLlByb2JlU2V0LnByb3RvdHlw
ZS5fYnJlYWtwb2ludFJlc29sdmVkU3RhdGVEaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICBE
cml2ZS1ieTogcmVtb3ZlIGFuIHVudXNlZCBldmVudC4KKworICAgICAgICAqIExvY2FsaXphdGlv
bnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczoKKwogMjAyMC0wOS0wMiAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWxsb3cg
ZXZlbnQgYnJlYWtwb2ludHMgdG8gYmUgY29uZmlndXJlZCB3aGVuIHRoZXkncmUgYWRkZWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBjZDU1ZDJkYTBhZWE2YjNhYWU0MGUzZjUzNzg4
NTYzOTllOWE1NjNlLi45ZWFlZjE4OWVlMDQzNzMwMzYxYmRkNTUyYmIxMTI0MmYwMDA3YTgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDktMDIg
IERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGFsbG93IHNwZWNpYWwgSmF2YVNjcmlwdCBicmVha3BvaW50cyB0byBiZSBjb25maWd1cmVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU3OTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZp
ZXcvV2ViU2NyaXB0RGVidWdnZXIubW06CisgICAgICAgIChXZWJTY3JpcHREZWJ1Z2dlcjo6V2Vi
U2NyaXB0RGVidWdnZXIpOgorCiAyMDIwLTA4LTMxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxl
LmNvbT4KIAogICAgICAgICBNYW55IHNldHRpbmdzIGluIFJ1bnRpbWVFbmFibGVkU2V0dGluZ3Mg
c2hvdWxkIGF1dG9nZW5lcmF0ZWQgU2V0dGluZ3M6IFBhcnQgMQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0JyZWFrcG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9CcmVha3BvaW50LmgKaW5kZXggMWZhZmIzMDNjZjhkMmU0ZDg4MzAyNDAz
MmQ5ZTFhZmMwY2Y2NzAwNC4uZDFlZjZjYWQ4MzI3NWZiNTZjYjNiY2RmMTZlMjM4YWJmYzE4YjNl
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0JyZWFrcG9pbnQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvQnJlYWtwb2ludC5oCkBAIC01
OSw3ICs1OSw3IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIEFjdGlvbnNWZWN0b3IgPSBWZWN0b3I8
QWN0aW9uPjsKIAotICAgIHN0YXRpYyBSZWY8QnJlYWtwb2ludD4gY3JlYXRlKEJyZWFrcG9pbnRJ
RCwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24gPSBudWxsU3RyaW5nKCksIEFjdGlvbnNWZWN0b3Im
JiA9IHsgfSwgYm9vbCBhdXRvQ29udGludWUgPSBmYWxzZSwgc2l6ZV90IGlnbm9yZUNvdW50ID0g
MCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxCcmVha3BvaW50PiBjcmVhdGUo
QnJlYWtwb2ludElELCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiA9IG51bGxTdHJpbmcoKSwgQWN0
aW9uc1ZlY3RvciYmID0geyB9LCBib29sIGF1dG9Db250aW51ZSA9IGZhbHNlLCBzaXplX3QgaWdu
b3JlQ291bnQgPSAwKTsKIAogICAgIEJyZWFrcG9pbnRJRCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKaW5k
ZXggYzRiZmExYTc3MTM0NjQ3YWQwYzMxZTc1MTY4NzM5YTM5MDdhNzlmNS4uOWM3YmM5ZTVhOWE3
NzllNjhhMThhNTQ3ODlkMzg5ZDMxYzQxOWNmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXIuY3BwCkBAIC03Nyw2ICs3NywzNCBAQCBwcml2YXRlOgogICAgIERl
YnVnZ2VyJiBtX2RlYnVnZ2VyOwogfTsKIAorRGVidWdnZXI6OlRlbXBvcmFyaWx5RGlzYWJsZUV4
Y2VwdGlvbkJyZWFrcG9pbnRzOjpUZW1wb3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50
cyhEZWJ1Z2dlciYgZGVidWdnZXIpCisgICAgOiBtX2RlYnVnZ2VyKGRlYnVnZ2VyKQoreworfQor
CitEZWJ1Z2dlcjo6VGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHM6On5UZW1w
b3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50cygpCit7CisgICAgcmVzdG9yZSgpOwor
fQorCit2b2lkIERlYnVnZ2VyOjpUZW1wb3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50
czo6cmVwbGFjZSgpCit7CisgICAgaWYgKG1fZGVidWdnZXIubV9wYXVzZU9uQWxsRXhjZXB0aW9u
c0JyZWFrcG9pbnQpCisgICAgICAgIG1fcGF1c2VPbkFsbEV4Y2VwdGlvbnNCcmVha3BvaW50ID0g
V1RGTW92ZShtX2RlYnVnZ2VyLm1fcGF1c2VPbkFsbEV4Y2VwdGlvbnNCcmVha3BvaW50KTsKKwor
ICAgIGlmIChtX2RlYnVnZ2VyLm1fcGF1c2VPblVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQp
CisgICAgICAgIG1fcGF1c2VPblVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBXVEZNb3Zl
KG1fZGVidWdnZXIubV9wYXVzZU9uVW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludCk7Cit9CisK
K3ZvaWQgRGVidWdnZXI6OlRlbXBvcmFyaWx5RGlzYWJsZUV4Y2VwdGlvbkJyZWFrcG9pbnRzOjpy
ZXN0b3JlKCkKK3sKKyAgICBpZiAobV9wYXVzZU9uQWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQpCisg
ICAgICAgIG1fZGVidWdnZXIubV9wYXVzZU9uQWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBXVEZN
b3ZlKG1fcGF1c2VPbkFsbEV4Y2VwdGlvbnNCcmVha3BvaW50KTsKKworICAgIGlmIChtX3BhdXNl
T25VbmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50KQorICAgICAgICBtX2RlYnVnZ2VyLm1fcGF1
c2VPblVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBXVEZNb3ZlKG1fcGF1c2VPblVuY2F1
Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQpOworfQorCiAKIERlYnVnZ2VyOjpQcm9maWxpbmdDbGll
bnQ6On5Qcm9maWxpbmdDbGllbnQoKQogewpAQCAtODQsNyArMTEyLDYgQEAgRGVidWdnZXI6OlBy
b2ZpbGluZ0NsaWVudDo6flByb2ZpbGluZ0NsaWVudCgpCiAKIERlYnVnZ2VyOjpEZWJ1Z2dlcihW
TSYgdm0pCiAgICAgOiBtX3ZtKHZtKQotICAgICwgbV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKERv
bnRQYXVzZU9uRXhjZXB0aW9ucykKICAgICAsIG1fcGF1c2VBdE5leHRPcHBvcnR1bml0eShmYWxz
ZSkKICAgICAsIG1fcGFzdEZpcnN0RXhwcmVzc2lvbkluU3RhdGVtZW50KGZhbHNlKQogICAgICwg
bV9pc1BhdXNlZChmYWxzZSkKQEAgLTY4OCwxMSArNzE1LDYgQEAgdm9pZCBEZWJ1Z2dlcjo6c2V0
QnJlYWtwb2ludHNBY3RpdmF0ZWQoYm9vbCBhY3RpdmF0ZWQpCiAgICAgcmVjb21waWxlQWxsSlNG
dW5jdGlvbnMoKTsKIH0KIAotdm9pZCBEZWJ1Z2dlcjo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZShQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHBhdXNlKQotewotICAgIG1fcGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZSA9IHBhdXNlOwotfQotCiB2b2lkIERlYnVnZ2VyOjpzY2hlZHVsZVBhdXNlQXROZXh0
T3Bwb3J0dW5pdHkoKQogewogICAgIG1fcGF1c2VBdE5leHRPcHBvcnR1bml0eSA9IHRydWU7CkBA
IC03MjQsNyArNzQ2LDcgQEAgYm9vbCBEZWJ1Z2dlcjo6Y2FuY2VsUGF1c2VGb3JTcGVjaWFsQnJl
YWtwb2ludChCcmVha3BvaW50JiBicmVha3BvaW50KQogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIERlYnVnZ2VyOjpicmVha1Byb2dyYW0oKQordm9pZCBEZWJ1Z2dlcjo6YnJlYWtQcm9ncmFt
KFJlZlB0cjxCcmVha3BvaW50PiYmIHNwZWNpYWxCcmVha3BvaW50KQogewogICAgIGlmIChtX2lz
UGF1c2VkKQogICAgICAgICByZXR1cm47CkBAIC03MzIsNyArNzU0LDEyIEBAIHZvaWQgRGVidWdn
ZXI6OmJyZWFrUHJvZ3JhbSgpCiAgICAgaWYgKCFtX3ZtLnRvcENhbGxGcmFtZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9wYXVzZUF0TmV4dE9wcG9ydHVuaXR5ID0gdHJ1ZTsKKyAgICBpZiAo
c3BlY2lhbEJyZWFrcG9pbnQpIHsKKyAgICAgICAgQVNTRVJUKCFtX3NwZWNpYWxCcmVha3BvaW50
KTsKKyAgICAgICAgbV9zcGVjaWFsQnJlYWtwb2ludCA9IFdURk1vdmUoc3BlY2lhbEJyZWFrcG9p
bnQpOworICAgIH0gZWxzZQorICAgICAgICBtX3BhdXNlQXROZXh0T3Bwb3J0dW5pdHkgPSB0cnVl
OworCiAgICAgc2V0U3RlcHBpbmdNb2RlKFN0ZXBwaW5nTW9kZUVuYWJsZWQpOwogICAgIG1fY3Vy
cmVudENhbGxGcmFtZSA9IG1fdm0udG9wQ2FsbEZyYW1lOwogICAgIHBhdXNlSWZOZWVkZWQobV9j
dXJyZW50Q2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KG1fdm0pKTsKQEAgLTk4MCw4ICsx
MDA3LDggQEAgdm9pZCBEZWJ1Z2dlcjo6ZXhjZXB0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1YKICAgICB9CiAKICAgICBQYXVzZVJlYXNv
bkRlY2xhcmF0aW9uIHJlYXNvbigqdGhpcywgUGF1c2VkRm9yRXhjZXB0aW9uKTsKLSAgICBpZiAo
bV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlID09IFBhdXNlT25BbGxFeGNlcHRpb25zIHx8IChtX3Bh
dXNlT25FeGNlcHRpb25zU3RhdGUgPT0gUGF1c2VPblVuY2F1Z2h0RXhjZXB0aW9ucyAmJiAhaGFz
Q2F0Y2hIYW5kbGVyKSkgewotICAgICAgICBtX3BhdXNlQXROZXh0T3Bwb3J0dW5pdHkgPSB0cnVl
OworICAgIGlmIChtX3BhdXNlT25BbGxFeGNlcHRpb25zQnJlYWtwb2ludCB8fCAobV9wYXVzZU9u
VW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludCAmJiAhaGFzQ2F0Y2hIYW5kbGVyKSkgeworICAg
ICAgICBtX3NwZWNpYWxCcmVha3BvaW50ID0gbV9wYXVzZU9uQWxsRXhjZXB0aW9uc0JyZWFrcG9p
bnQgPyBtX3BhdXNlT25BbGxFeGNlcHRpb25zQnJlYWtwb2ludC5jb3B5UmVmKCkgOiBtX3BhdXNl
T25VbmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50LmNvcHlSZWYoKTsKICAgICAgICAgc2V0U3Rl
cHBpbmdNb2RlKFN0ZXBwaW5nTW9kZUVuYWJsZWQpOwogICAgIH0KIApAQCAtMTEzMiwxMSArMTE1
OSwxMSBAQCB2b2lkIERlYnVnZ2VyOjpkaWRSZWFjaERlYnVnZ2VyU3RhdGVtZW50KENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogICAgIGlmIChtX2lzUGF1c2VkKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoIW1fcGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cykKKyAgICBpZiAoIW1fcGF1c2VPbkRl
YnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9pbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIFBhdXNl
UmVhc29uRGVjbGFyYXRpb24gcmVhc29uKCp0aGlzLCBQYXVzZWRGb3JEZWJ1Z2dlclN0YXRlbWVu
dCk7Ci0gICAgbV9wYXVzZUF0TmV4dE9wcG9ydHVuaXR5ID0gdHJ1ZTsKKyAgICBtX3NwZWNpYWxC
cmVha3BvaW50ID0gbV9wYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludC5jb3B5UmVm
KCk7CiAgICAgc2V0U3RlcHBpbmdNb2RlKFN0ZXBwaW5nTW9kZUVuYWJsZWQpOwogICAgIHVwZGF0
ZUNhbGxGcmFtZShsZXhpY2FsR2xvYmFsT2JqZWN0Rm9yQ2FsbEZyYW1lKG1fdm0sIGNhbGxGcmFt
ZSksIGNhbGxGcmFtZSwgQXR0ZW1wdFBhdXNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyLmgKaW5kZXggY2M5NWU3YzY0YjkwNTJkOTM3MzEyMTE1Nzg5NjJmMWMx
YmM2YTg2My4uN2VhZWQ4MTY2NTUzNmQ3MzllNjg5NWU4NjY3N2VjMWI1NzQ4NWQxZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAg
cHVibGljOgogCiAgICAgVk0mIHZtKCkgeyByZXR1cm4gbV92bTsgfQogCi0gICAgYm9vbCBuZWVk
c0V4Y2VwdGlvbkNhbGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fYnJlYWtwb2ludHNBY3RpdmF0
ZWQgJiYgbV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlICE9IERvbnRQYXVzZU9uRXhjZXB0aW9uczsg
fQorICAgIGJvb2wgbmVlZHNFeGNlcHRpb25DYWxsYmFja3MoKSBjb25zdCB7IHJldHVybiBtX2Jy
ZWFrcG9pbnRzQWN0aXZhdGVkICYmIChtX3BhdXNlT25BbGxFeGNlcHRpb25zQnJlYWtwb2ludCB8
fCBtX3BhdXNlT25VbmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50KTsgfQogICAgIGJvb2wgaXNJ
bnRlcmFjdGl2ZWx5RGVidWdnaW5nKCkgY29uc3QgeyByZXR1cm4gbV9icmVha3BvaW50c0FjdGl2
YXRlZDsgfQogCiAgICAgZW51bSBSZWFzb25Gb3JEZXRhY2ggewpAQCAtNzAsMTUgKzcwLDIzIEBA
IHB1YmxpYzoKICAgICBib29sIGV2YWx1YXRlQnJlYWtwb2ludENvbmRpdGlvbihCcmVha3BvaW50
JiwgSlNHbG9iYWxPYmplY3QqKTsKICAgICB2b2lkIGV2YWx1YXRlQnJlYWtwb2ludEFjdGlvbnMo
QnJlYWtwb2ludCYsIEpTR2xvYmFsT2JqZWN0Kik7CiAKLSAgICBlbnVtIFBhdXNlT25FeGNlcHRp
b25zU3RhdGUgewotICAgICAgICBEb250UGF1c2VPbkV4Y2VwdGlvbnMsCi0gICAgICAgIFBhdXNl
T25BbGxFeGNlcHRpb25zLAotICAgICAgICBQYXVzZU9uVW5jYXVnaHRFeGNlcHRpb25zCi0gICAg
fTsKLSAgICBQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHBhdXNlT25FeGNlcHRpb25zU3RhdGUoKSBj
b25zdCB7IHJldHVybiBtX3BhdXNlT25FeGNlcHRpb25zU3RhdGU7IH0KLSAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoUGF1c2VPbkV4Y2VwdGlvbnNT
dGF0ZSk7CisgICAgdm9pZCBzZXRQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludChS
ZWZQdHI8QnJlYWtwb2ludD4mJiBicmVha3BvaW50KSB7IG1fcGF1c2VPbkRlYnVnZ2VyU3RhdGVt
ZW50c0JyZWFrcG9pbnQgPSBXVEZNb3ZlKGJyZWFrcG9pbnQpOyB9CiAKLSAgICB2b2lkIHNldFBh
dXNlT25EZWJ1Z2dlclN0YXRlbWVudHMoYm9vbCBlbmFibGVkKSB7IG1fcGF1c2VPbkRlYnVnZ2Vy
U3RhdGVtZW50cyA9IGVuYWJsZWQ7IH0KKyAgICBjbGFzcyBUZW1wb3JhcmlseURpc2FibGVFeGNl
cHRpb25CcmVha3BvaW50cyB7CisgICAgcHVibGljOgorICAgICAgICBUZW1wb3JhcmlseURpc2Fi
bGVFeGNlcHRpb25CcmVha3BvaW50cyhEZWJ1Z2dlciYpOworICAgICAgICB+VGVtcG9yYXJpbHlE
aXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHMoKTsKKworICAgICAgICB2b2lkIHJlcGxhY2UoKTsK
KyAgICAgICAgdm9pZCByZXN0b3JlKCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBEZWJ1Z2dl
ciYgbV9kZWJ1Z2dlcjsKKyAgICAgICAgUmVmUHRyPEJyZWFrcG9pbnQ+IG1fcGF1c2VPbkFsbEV4
Y2VwdGlvbnNCcmVha3BvaW50OworICAgICAgICBSZWZQdHI8QnJlYWtwb2ludD4gbV9wYXVzZU9u
VW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludDsKKyAgICB9OworICAgIHZvaWQgc2V0UGF1c2VP
bkFsbEV4Y2VwdGlvbnNCcmVha3BvaW50KFJlZlB0cjxCcmVha3BvaW50PiYmIGJyZWFrcG9pbnQp
IHsgbV9wYXVzZU9uQWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBXVEZNb3ZlKGJyZWFrcG9pbnQp
OyB9CisgICAgdm9pZCBzZXRQYXVzZU9uVW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludChSZWZQ
dHI8QnJlYWtwb2ludD4mJiBicmVha3BvaW50KSB7IG1fcGF1c2VPblVuY2F1Z2h0RXhjZXB0aW9u
c0JyZWFrcG9pbnQgPSBXVEZNb3ZlKGJyZWFrcG9pbnQpOyB9CiAKICAgICBlbnVtIFJlYXNvbkZv
clBhdXNlIHsKICAgICAgICAgTm90UGF1c2VkLApAQCAtOTgsNyArMTA2LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgY2FuY2VsUGF1c2VBdE5leHRPcHBvcnR1bml0eSgpOwogICAgIGJvb2wgc2NoZWR1
bGVQYXVzZUZvclNwZWNpYWxCcmVha3BvaW50KEJyZWFrcG9pbnQmKTsKICAgICBib29sIGNhbmNl
bFBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoQnJlYWtwb2ludCYpOwotICAgIHZvaWQgYnJlYWtQ
cm9ncmFtKCk7CisgICAgdm9pZCBicmVha1Byb2dyYW0oUmVmUHRyPEJyZWFrcG9pbnQ+JiYgc3Bl
Y2lhbEJyZWFrcG9pbnQgPSBudWxscHRyKTsKICAgICB2b2lkIGNvbnRpbnVlUHJvZ3JhbSgpOwog
ICAgIHZvaWQgc3RlcE5leHRFeHByZXNzaW9uKCk7CiAgICAgdm9pZCBzdGVwSW50b1N0YXRlbWVu
dCgpOwpAQCAtMjgxLDggKzI4OSw2IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTb3VyY2VJRCwg
RGVidWdnZXJQYXJzZURhdGEsIFdURjo6SW50SGFzaDxTb3VyY2VJRD4sIFdURjo6VW5zaWduZWRX
aXRoWmVyb0tleUhhc2hUcmFpdHM8U291cmNlSUQ+PiBtX3BhcnNlRGF0YU1hcDsKICAgICBIYXNo
TWFwPFNvdXJjZUlELCBCbGFja2JveFR5cGUsIFdURjo6SW50SGFzaDxTb3VyY2VJRD4sIFdURjo6
VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8U291cmNlSUQ+PiBtX2JsYWNrYm94ZWRTY3Jp
cHRzOwogCi0gICAgUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBtX3BhdXNlT25FeGNlcHRpb25zU3Rh
dGU7Ci0gICAgYm9vbCBtX3BhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHMgOiAxOwogICAgIGJvb2wg
bV9wYXVzZUF0TmV4dE9wcG9ydHVuaXR5IDogMTsKICAgICBib29sIG1fcGF1c2VPblN0ZXBOZXh0
IDogMTsKICAgICBib29sIG1fcGF1c2VPblN0ZXBPdXQgOiAxOwpAQCAtMzA3LDYgKzMxMywxMCBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxCcmVha3BvaW50PiBtX3NwZWNpYWxCcmVha3BvaW50Owog
ICAgIEJyZWFrcG9pbnRJRCBtX3BhdXNpbmdCcmVha3BvaW50SUQ7CiAKKyAgICBSZWZQdHI8QnJl
YWtwb2ludD4gbV9wYXVzZU9uQWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQ7CisgICAgUmVmUHRyPEJy
ZWFrcG9pbnQ+IG1fcGF1c2VPblVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQ7CisgICAgUmVm
UHRyPEJyZWFrcG9pbnQ+IG1fcGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9pbnQ7CisK
ICAgICB1bnNpZ25lZCBtX25leHRQcm9iZVNhbXBsZUlkIHsgMSB9OwogICAgIHVuc2lnbmVkIG1f
Y3VycmVudFByb2JlQmF0Y2hJZCB7IDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKaW5kZXggYzc0N2Y5OTNhNzFhOTAy
MmE0Yjk4YjdhY2Q0ZGMxMDIwNDVjMjAyNi4uNWYyOWFkNzYzNTE2MzdkYTFhNGM4OGZlYWNkZTc5
NGIxOTg3ODVhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJDYWxsRnJhbWUuY3BwCkBAIC0yMTgsMjIgKzIxOCwzMyBAQCBKU1ZhbHVlIERlYnVn
Z2VyQ2FsbEZyYW1lOjp0aGlzVmFsdWUoVk0mIHZtKSBjb25zdAogLy8gRXZhbHVhdGUgc29tZSBK
YXZhU2NyaXB0IGNvZGUgaW4gdGhlIHNjb3BlIG9mIHRoaXMgZnJhbWUuCiBKU1ZhbHVlIERlYnVn
Z2VyQ2FsbEZyYW1lOjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHNj
cmlwdCwgSlNPYmplY3QqIHNjb3BlRXh0ZW5zaW9uT2JqZWN0LCBOYWtlZFB0cjxFeGNlcHRpb24+
JiBleGNlcHRpb24pCiB7Ci0gICAgQVNTRVJUKGlzVmFsaWQoKSk7Ci0gICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBtX3ZhbGlkTWFjaGluZUZyYW1lOwotICAgIGlmICghY2FsbEZyYW1lKQorICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gbnVsbHB0cjsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IG51bGxwdHI7CisKKyAgICBhdXRvKiBkZWJ1Z2dlckNhbGxGcmFtZSA9IHRoaXM7CisgICAg
d2hpbGUgKGRlYnVnZ2VyQ2FsbEZyYW1lKSB7CisgICAgICAgIEFTU0VSVChkZWJ1Z2dlckNhbGxG
cmFtZS0+aXNWYWxpZCgpKTsKKworICAgICAgICBjYWxsRnJhbWUgPSBkZWJ1Z2dlckNhbGxGcmFt
ZS0+bV92YWxpZE1hY2hpbmVGcmFtZTsKKyAgICAgICAgaWYgKGNhbGxGcmFtZSkgeworICAgICAg
ICAgICAgaWYgKGRlYnVnZ2VyQ2FsbEZyYW1lLT5pc1RhaWxEZWxldGVkKCkpCisgICAgICAgICAg
ICAgICAgY29kZUJsb2NrID0gZGVidWdnZXJDYWxsRnJhbWUtPm1fc2hhZG93Q2hpY2tlbkZyYW1l
LmNvZGVCbG9jazsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb2RlQmxvY2sg
PSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNhbGxG
cmFtZSAmJiBjb2RlQmxvY2spCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWJ1Z2dl
ckNhbGxGcmFtZSA9IGRlYnVnZ2VyQ2FsbEZyYW1lLT5tX2NhbGxlci5nZXQoKTsKKyAgICB9CisK
KyAgICBpZiAoIWNhbGxGcmFtZSB8fCAhY29kZUJsb2NrKQogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKIAogICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+ZGVwcmVjYXRlZFZNKCk7CiAgICAg
SlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gY2F0Y2hTY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOwotCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBudWxscHRyOwotICAg
IGlmIChpc1RhaWxEZWxldGVkKCkpCi0gICAgICAgIGNvZGVCbG9jayA9IG1fc2hhZG93Q2hpY2tl
bkZyYW1lLmNvZGVCbG9jazsKLSAgICBlbHNlCi0gICAgICAgIGNvZGVCbG9jayA9IGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCk7Ci0gICAgaWYgKCFjb2RlQmxvY2spCi0gICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogICAgIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpOwogICAgIERlYnVnZ2VyRXZhbEVuYWJsZXIgZXZhbEVuYWJs
ZXIoZ2xvYmFsT2JqZWN0LCBEZWJ1Z2dlckV2YWxFbmFibGVyOjpNb2RlOjpFdmFsT25HbG9iYWxP
YmplY3RBdERlYnVnZ2VyRW50cnkpOwpAQCAtMjYzLDggKzI3NCw3IEBAIEpTVmFsdWUgRGVidWdn
ZXJDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBKU09iCiAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0R2xvYmFsU2NvcGVFeHRlbnNpb24o
SlNXaXRoU2NvcGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBpZ25vcmVkUHJldmlvdXNTY29w
ZSwgc2NvcGVFeHRlbnNpb25PYmplY3QpKTsKICAgICB9CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHRoaXMtPnRoaXNWYWx1ZSh2bSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB2bS5pbnRlcnBy
ZXRlci0+ZXhlY3V0ZShldmFsLCBnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgc2NvcGUoKS0+anNT
Y29wZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHZtLmludGVycHJldGVyLT5leGVjdXRlKGV2
YWwsIGdsb2JhbE9iamVjdCwgZGVidWdnZXJDYWxsRnJhbWUtPnRoaXNWYWx1ZSh2bSksIGRlYnVn
Z2VyQ2FsbEZyYW1lLT5zY29wZSgpLT5qc1Njb3BlKCkpOwogICAgIGlmIChVTkxJS0VMWShjYXRj
aFNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICBleGNlcHRpb24gPSBjYXRjaFNjb3BlLmV4
Y2VwdGlvbigpOwogICAgICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCmluZGV4
IGFjNmVjZDM0NTE4NGUzZTQxZGM4YTgxODU3YzY2MDcyYTkyZTFkYzcuLjllYzc5ZmNlOThiNDUy
ZDlkN2JkZDgzMWU5N2Q2ODAwYjNhZDBjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCkBAIC02MSw2ICs2MSw3IEBAIHB1Ymxp
YzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgZnVuY3Rpb25OYW1lKCkgY29uc3Q7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgVHlwZSB0eXBlKCkgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgSlNWYWx1ZSB0aGlzVmFsdWUoVk0mKSBjb25zdDsKKwogICAgIEpTVmFsdWUgZXZhbHVh
dGVXaXRoU2NvcGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiwgSlNPYmplY3QqIHNjb3BlRXh0ZW5z
aW9uT2JqZWN0LCBOYWtlZFB0cjxFeGNlcHRpb24+Jik7CiAKICAgICBib29sIGlzVmFsaWQoKSBj
b25zdCB7IHJldHVybiAhIW1fdmFsaWRNYWNoaW5lRnJhbWUgfHwgaXNUYWlsRGVsZXRlZCgpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCmluZGV4IGM0MmM0ZjkzNGRmMWJmNjY3ZDRiYTAw
OGYwOTZjNTU4ZDhjYTc2NGYuLjAwYjFlY2MxYWY0ODA3MGVmZWRjNzY2YTNiYTZmZjViNmY0YmE3
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckF1ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCkBAIC0xMDUsMTUgKzEwNSwxNCBAQCB2
b2lkIEluc3BlY3RvckF1ZGl0QWdlbnQ6OnJ1bihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgdGVzdCwgY29ucwogCiAgICAgT3B0aW9uYWw8aW50PiBzYXZlZFJlc3VsdElu
ZGV4OwogCi0gICAgYXV0byBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBtX2RlYnVn
Z2VyLnBhdXNlT25FeGNlcHRpb25zU3RhdGUoKTsKKyAgICBKU0M6OkRlYnVnZ2VyOjpUZW1wb3Jh
cmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50cyB0ZW1wb3JhcmlseURpc2FibGVFeGNlcHRp
b25CcmVha3BvaW50cyhtX2RlYnVnZ2VyKTsKKyAgICB0ZW1wb3JhcmlseURpc2FibGVFeGNlcHRp
b25CcmVha3BvaW50cy5yZXBsYWNlKCk7CiAKLSAgICBtX2RlYnVnZ2VyLnNldFBhdXNlT25FeGNl
cHRpb25zU3RhdGUoRGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7CiAgICAgbXV0ZUNv
bnNvbGUoKTsKIAogICAgIGluamVjdGVkU2NyaXB0LmV4ZWN1dGUoZXJyb3JTdHJpbmcsIGZ1bmN0
aW9uU3RyaW5nLnRvU3RyaW5nKCksIFdURk1vdmUob3B0aW9ucyksIHJlc3VsdCwgd2FzVGhyb3du
LCBzYXZlZFJlc3VsdEluZGV4KTsKIAogICAgIHVubXV0ZUNvbnNvbGUoKTsKLSAgICBtX2RlYnVn
Z2VyLnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUocHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0
YXRlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JBdWRpdEFnZW50Ojp0ZWFyZG93bihFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGMz
ODY1ZjY2YzA3MGI4MDAyYjcwNTA4YzUzMjk5YzdkMWExYTQ1ODAuLjEzZmMyYzUzYjVhYzQ2NWU2
ZTNkNjZhYmUwNTVjMGVlNmQ0ZGMwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwCkBAIC0yNzEsOCArMjcxLDggQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaXNh
YmxlKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkKIAogICAgIGNsZWFyQXN5bmNTdGFja1RyYWNlRGF0
YSgpOwogCi0gICAgbV9wYXVzZU9uQXNzZXJ0aW9uRmFpbHVyZXMgPSBmYWxzZTsKLSAgICBtX3Bh
dXNlT25NaWNyb3Rhc2tzID0gZmFsc2U7CisgICAgbV9wYXVzZU9uQXNzZXJ0aW9uc0JyZWFrcG9p
bnQgPSBudWxscHRyOworICAgIG1fcGF1c2VPbk1pY3JvdGFza3NCcmVha3BvaW50ID0gbnVsbHB0
cjsKIAogICAgIG1fZW5hYmxlZCA9IGZhbHNlOwogfQpAQCAtMzk0LDggKzM5NCwxMCBAQCB2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmhhbmRsZUNvbnNvbGVBc3NlcnQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQogICAgIGlmICghYnJlYWtwb2ludHNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKG1fcGF1c2VPbkFzc2VydGlvbkZhaWx1cmVzKQotICAgICAgICBicmVha1By
b2dyYW0oRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6QXNzZXJ0LCBidWlsZEFz
c2VydFBhdXNlUmVhc29uKG1lc3NhZ2UpKTsKKyAgICBpZiAoIW1fcGF1c2VPbkFzc2VydGlvbnNC
cmVha3BvaW50KQorICAgICAgICByZXR1cm47CisKKyAgICBicmVha1Byb2dyYW0oRGVidWdnZXJG
cm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6QXNzZXJ0LCBidWlsZEFzc2VydFBhdXNlUmVhc29u
KG1lc3NhZ2UpLCBtX3BhdXNlT25Bc3NlcnRpb25zQnJlYWtwb2ludC5jb3B5UmVmKCkpOwogfQog
CiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpBc3luY0NhbGxJZGVudGlmaWVyIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmFzeW5jQ2FsbElkZW50aWZpZXIoQXN5bmNDYWxsVHlwZSBhc3luY0NhbGxU
eXBlLCBpbnQgY2FsbGJhY2tJZCkKQEAgLTg4MSwzOCArODgzLDY4IEBAIHZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6ZGlkQmVjb21lSWRsZSgpCiAgICAgfQogfQogCi12b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHMoRXJyb3JTdHJpbmcm
LCBib29sIGVuYWJsZWQpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25E
ZWJ1Z2dlclN0YXRlbWVudHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBib29sIGVuYWJsZWQs
IGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9uc1BheWxvYWQpCiB7Ci0gICAgbV9kZWJ1Z2dlci5z
ZXRQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzKGVuYWJsZWQpOwotfQotCi12b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25FeGNlcHRpb25zKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nJiBzdHJpbmdQYXVzZVN0YXRlKQotewotICAgIEpTQzo6RGVidWdn
ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUgcGF1c2VTdGF0ZTsKLSAgICBpZiAoc3RyaW5nUGF1
c2VTdGF0ZSA9PSAibm9uZSIpCi0gICAgICAgIHBhdXNlU3RhdGUgPSBKU0M6OkRlYnVnZ2VyOjpE
b250UGF1c2VPbkV4Y2VwdGlvbnM7Ci0gICAgZWxzZSBpZiAoc3RyaW5nUGF1c2VTdGF0ZSA9PSAi
YWxsIikKLSAgICAgICAgcGF1c2VTdGF0ZSA9IEpTQzo6RGVidWdnZXI6OlBhdXNlT25BbGxFeGNl
cHRpb25zOwotICAgIGVsc2UgaWYgKHN0cmluZ1BhdXNlU3RhdGUgPT0gInVuY2F1Z2h0IikKLSAg
ICAgICAgcGF1c2VTdGF0ZSA9IEpTQzo6RGVidWdnZXI6OlBhdXNlT25VbmNhdWdodEV4Y2VwdGlv
bnM7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93
biBzdGF0ZTogIl9zLCBzdHJpbmdQYXVzZVN0YXRlKTsKKyAgICBpZiAoIWVuYWJsZWQpIHsKKyAg
ICAgICAgbV9kZWJ1Z2dlci5zZXRQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludChu
dWxscHRyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZGVidWdnZXIuc2V0UGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZShzdGF0aWNfY2FzdDxKU0M6OkRlYnVnZ2VyOjpQYXVzZU9uRXhj
ZXB0aW9uc1N0YXRlPihwYXVzZVN0YXRlKSk7Ci0gICAgaWYgKG1fZGVidWdnZXIucGF1c2VPbkV4
Y2VwdGlvbnNTdGF0ZSgpICE9IHBhdXNlU3RhdGUpCi0gICAgICAgIGVycm9yU3RyaW5nID0gIklu
dGVybmFsIGVycm9yLiBDb3VsZCBub3QgY2hhbmdlIHBhdXNlIG9uIGV4Y2VwdGlvbnMgc3RhdGUi
X3M7CisgICAgYXV0byBicmVha3BvaW50ID0gZGVidWdnZXJCcmVha3BvaW50RnJvbVBheWxvYWQo
ZXJyb3JTdHJpbmcsIG9wdGlvbnNQYXlsb2FkKTsKKyAgICBpZiAoIWJyZWFrcG9pbnQpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fZGVidWdnZXIuc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50
c0JyZWFrcG9pbnQoV1RGTW92ZShicmVha3BvaW50KSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2V0UGF1c2VPbkFzc2VydGlvbnMoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJs
ZWQpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25FeGNlcHRpb25zKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzdGF0ZVN0cmluZywgY29uc3Qg
SlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5bG9hZCkKIHsKLSAgICBtX3BhdXNlT25Bc3NlcnRpb25G
YWlsdXJlcyA9IGVuYWJsZWQ7CisgICAgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gYWxsRXhjZXB0
aW9uc0JyZWFrcG9pbnQ7CisgICAgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gdW5jYXVnaHRFeGNl
cHRpb25zQnJlYWtwb2ludDsKKworICAgIGlmIChzdGF0ZVN0cmluZyA9PSAiYWxsIikgeworICAg
ICAgICBhbGxFeGNlcHRpb25zQnJlYWtwb2ludCA9IGRlYnVnZ2VyQnJlYWtwb2ludEZyb21QYXls
b2FkKGVycm9yU3RyaW5nLCBvcHRpb25zUGF5bG9hZCk7CisgICAgICAgIGlmICghYWxsRXhjZXB0
aW9uc0JyZWFrcG9pbnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgfSBlbHNlIGlmIChzdGF0
ZVN0cmluZyA9PSAidW5jYXVnaHQiKSB7CisgICAgICAgIHVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFr
cG9pbnQgPSBkZWJ1Z2dlckJyZWFrcG9pbnRGcm9tUGF5bG9hZChlcnJvclN0cmluZywgb3B0aW9u
c1BheWxvYWQpOworICAgICAgICBpZiAoIXVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgfSBlbHNlIGlmIChzdGF0ZVN0cmluZyAhPSAibm9uZSIp
IHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIHN0YXRlOiAiX3Ms
IHN0YXRlU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZGVidWdnZXIu
c2V0UGF1c2VPbkFsbEV4Y2VwdGlvbnNCcmVha3BvaW50KFdURk1vdmUoYWxsRXhjZXB0aW9uc0Jy
ZWFrcG9pbnQpKTsKKyAgICBtX2RlYnVnZ2VyLnNldFBhdXNlT25VbmNhdWdodEV4Y2VwdGlvbnNC
cmVha3BvaW50KFdURk1vdmUodW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludCkpOwogfQogCi12
b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25NaWNyb3Rhc2tzKEVycm9yU3Ry
aW5nJiwgYm9vbCBlbmFibGVkKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVz
ZU9uQXNzZXJ0aW9ucyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGJvb2wgZW5hYmxlZCwgY29u
c3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5bG9hZCkKIHsKLSAgICBtX3BhdXNlT25NaWNyb3Rh
c2tzID0gZW5hYmxlZDsKKyAgICBpZiAoIWVuYWJsZWQpIHsKKyAgICAgICAgbV9wYXVzZU9uQXNz
ZXJ0aW9uc0JyZWFrcG9pbnQgPSBudWxscHRyOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgYXV0byBicmVha3BvaW50ID0gZGVidWdnZXJCcmVha3BvaW50RnJvbVBheWxvYWQoZXJyb3JT
dHJpbmcsIG9wdGlvbnNQYXlsb2FkKTsKKyAgICBpZiAoIWJyZWFrcG9pbnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fcGF1c2VPbkFzc2VydGlvbnNCcmVha3BvaW50ID0gV1RGTW92ZShicmVh
a3BvaW50KTsKK30KKwordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVzZU9uTWlj
cm90YXNrcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGJvb2wgZW5hYmxlZCwgY29uc3QgSlNP
Tjo6T2JqZWN0KiBvcHRpb25zUGF5bG9hZCkKK3sKKyAgICBpZiAoIWVuYWJsZWQpIHsKKyAgICAg
ICAgbV9wYXVzZU9uTWljcm90YXNrc0JyZWFrcG9pbnQgPSBudWxscHRyOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYXV0byBicmVha3BvaW50ID0gZGVidWdnZXJCcmVha3BvaW50RnJv
bVBheWxvYWQoZXJyb3JTdHJpbmcsIG9wdGlvbnNQYXlsb2FkKTsKKyAgICBpZiAoIWJyZWFrcG9p
bnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGF1c2VPbk1pY3JvdGFza3NCcmVha3BvaW50
ID0gV1RGTW92ZShicmVha3BvaW50KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcq
IG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJv
b2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogcmV0
dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBjb25zdCBib29sKiBzYXZl
UmVzdWx0LCBjb25zdCBib29sKiAvKiBlbXVsYXRlVXNlckdlc3R1cmUgKi8sIFJlZlB0cjxQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBPcHRpb25hbDxib29sPiYgd2Fz
VGhyb3duLCBPcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KQpAQCAtOTI2LDExICs5NTgs
MTEgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGF1dG8gcGF1c2VTdGF0ZSA9IG1fZGVidWdnZXIucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgp
OworICAgIEpTQzo6RGVidWdnZXI6OlRlbXBvcmFyaWx5RGlzYWJsZUV4Y2VwdGlvbkJyZWFrcG9p
bnRzIHRlbXBvcmFyaWx5RGlzYWJsZUV4Y2VwdGlvbkJyZWFrcG9pbnRzKG1fZGVidWdnZXIpOwor
CiAgICAgYm9vbCBwYXVzZUFuZE11dGUgPSBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNv
bnNvbGUgJiYgKmRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZTsKICAgICBpZiAo
cGF1c2VBbmRNdXRlKSB7Ci0gICAgICAgIGlmIChwYXVzZVN0YXRlICE9IEpTQzo6RGVidWdnZXI6
OkRvbnRQYXVzZU9uRXhjZXB0aW9ucykKLSAgICAgICAgICAgIG1fZGVidWdnZXIuc2V0UGF1c2VP
bkV4Y2VwdGlvbnNTdGF0ZShKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpOwor
ICAgICAgICB0ZW1wb3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50cy5yZXBsYWNlKCk7
CiAgICAgICAgIG11dGVDb25zb2xlKCk7CiAgICAgfQogCkBAIC05MzgsMTAgKzk3MCw4IEBAIHZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAgICAgIG9iamVjdEdyb3VwID8gKm9iamVjdEdyb3Vw
IDogZW1wdHlTdHJpbmcoKSwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJICYmICppbmNsdWRlQ29tbWFu
ZExpbmVBUEksIHJldHVybkJ5VmFsdWUgJiYgKnJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmll
dyAmJiAqZ2VuZXJhdGVQcmV2aWV3LCBzYXZlUmVzdWx0ICYmICpzYXZlUmVzdWx0LAogICAgICAg
ICByZXN1bHQsIHdhc1Rocm93biwgc2F2ZWRSZXN1bHRJbmRleCk7CiAKLSAgICBpZiAocGF1c2VB
bmRNdXRlKSB7CisgICAgaWYgKHBhdXNlQW5kTXV0ZSkKICAgICAgICAgdW5tdXRlQ29uc29sZSgp
OwotICAgICAgICBtX2RlYnVnZ2VyLnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUocGF1c2VTdGF0
ZSk7Ci0gICAgfQogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFNob3VsZEJs
YWNrYm94VVJMKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGJv
b2wgc2hvdWxkQmxhY2tib3gsIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29u
c3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4KQpAQCAtOTkxLDcgKzEwMjEsNyBAQCBib29sIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnNob3VsZEJsYWNrYm94VVJMKGNvbnN0IFN0cmluZyYgdXJsKSBj
b25zdAogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjcmlwdEV4ZWN1dGlvbkJsb2Nr
ZWRCeUNTUChjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQpCiB7Ci0gICAgaWYgKG1fZGVidWdn
ZXIucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpICE9IEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9u
RXhjZXB0aW9ucykKKyAgICBpZiAobV9kZWJ1Z2dlci5uZWVkc0V4Y2VwdGlvbkNhbGxiYWNrcygp
KQogICAgICAgICBicmVha1Byb2dyYW0oRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNv
bjo6Q1NQVmlvbGF0aW9uLCBidWlsZENTUFZpb2xhdGlvblBhdXNlUmVhc29uKGRpcmVjdGl2ZVRl
eHQpKTsKIH0KIApAQCAtMTA3OCw4ICsxMTA4LDEwIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6d2lsbFJ1bk1pY3JvdGFzaygpCiAgICAgaWYgKCFicmVha3BvaW50c0FjdGl2ZSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9wYXVzZU9uTWljcm90YXNrcykKLSAgICAgICAg
c2NoZWR1bGVQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVy
OjpSZWFzb246Ok1pY3JvdGFzayk7CisgICAgaWYgKCFtX3BhdXNlT25NaWNyb3Rhc2tzQnJlYWtw
b2ludCkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2NoZWR1bGVQYXVzZUZvclNwZWNpYWxCcmVh
a3BvaW50KCptX3BhdXNlT25NaWNyb3Rhc2tzQnJlYWtwb2ludCwgRGVidWdnZXJGcm9udGVuZERp
c3BhdGNoZXI6OlJlYXNvbjo6TWljcm90YXNrKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpkaWRSdW5NaWNyb3Rhc2soKQpAQCAtMTA4Nyw4ICsxMTE5LDEwIEBAIHZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUnVuTWljcm90YXNrKCkKICAgICBpZiAoIWJyZWFrcG9p
bnRzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3BhdXNlT25NaWNyb3Rh
c2tzKQotICAgICAgICBjYW5jZWxQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KCk7CisgICAgaWYgKCFt
X3BhdXNlT25NaWNyb3Rhc2tzQnJlYWtwb2ludCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY2Fu
Y2VsUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludCgqbV9wYXVzZU9uTWljcm90YXNrc0JyZWFrcG9p
bnQpOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdn
ZXJDYWxsRnJhbWUsIEpTQzo6SlNWYWx1ZSBleGNlcHRpb25PckNhdWdodFZhbHVlKQpAQCAtMTIy
NCwxMSArMTI1OCwxMSBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENvbnRpbnVl
KCkKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3VtZWQoKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha1Byb2dyYW0oRGVidWdnZXJGcm9udGVuZERpc3Bh
dGNoZXI6OlJlYXNvbiByZWFzb24sIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgZGF0YSkKK3ZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtQcm9ncmFtKERlYnVnZ2VyRnJvbnRlbmREaXNw
YXRjaGVyOjpSZWFzb24gcmVhc29uLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGRhdGEsIFJlZlB0
cjxKU0M6OkJyZWFrcG9pbnQ+JiYgc3BlY2lhbEJyZWFrcG9pbnQpCiB7CiAgICAgdXBkYXRlUGF1
c2VSZWFzb25BbmREYXRhKHJlYXNvbiwgV1RGTW92ZShkYXRhKSk7CiAKLSAgICBtX2RlYnVnZ2Vy
LmJyZWFrUHJvZ3JhbSgpOworICAgIG1fZGVidWdnZXIuYnJlYWtQcm9ncmFtKFdURk1vdmUoc3Bl
Y2lhbEJyZWFrcG9pbnQpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVh
ckluc3BlY3RvckJyZWFrcG9pbnRTdGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgK
aW5kZXggODhjYmJhZmVkYWMxZGNjZWJlMjAxMTBkNjc1Y2NmZGE2NGNiNzZkZS4uMzBmZjlmM2My
NmQxYWUwNDY2YTcxYTViZjYzNjYxODI5NTRmYTJkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaApAQCAtODQsMTAgKzg0LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNlYXJjaEluQ29u
dGVudChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIGNvbnN0IFN0cmluZyYg
cXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0
aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6R2VuZXJpY1R5cGVz
OjpTZWFyY2hNYXRjaD4+JikgZmluYWw7CiAgICAgdm9pZCBnZXRTY3JpcHRTb3VyY2UoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCBTdHJpbmcqIHNjcmlwdFNvdXJjZSkgZmlu
YWw7CiAgICAgdm9pZCBnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWls
cz4mKSBmaW5hbDsKLSAgICB2b2lkIHNldFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHMoRXJyb3JT
dHJpbmcmLCBib29sIGVuYWJsZWQpIGZpbmFsOwotICAgIHZvaWQgc2V0UGF1c2VPbkV4Y2VwdGlv
bnMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhdXNlU3RhdGUpIGZpbmFsOwotICAgIHZv
aWQgc2V0UGF1c2VPbkFzc2VydGlvbnMoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJsZWQpIGZpbmFs
OwotICAgIHZvaWQgc2V0UGF1c2VPbk1pY3JvdGFza3MoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJs
ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cyhFcnJvclN0
cmluZyYsIGJvb2wgZW5hYmxlZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zKSBmaW5hbDsK
KyAgICB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBwYXVzZVN0YXRlLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnMpIGZpbmFsOworICAgIHZv
aWQgc2V0UGF1c2VPbkFzc2VydGlvbnMoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJsZWQsIGNvbnN0
IEpTT046Ok9iamVjdCogb3B0aW9ucykgZmluYWw7CisgICAgdm9pZCBzZXRQYXVzZU9uTWljcm90
YXNrcyhFcnJvclN0cmluZyYsIGJvb2wgZW5hYmxlZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRp
b25zKSBmaW5hbDsKICAgICB2b2lkIHNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzKEVycm9yU3Ry
aW5nJiwgYm9vbCBzaG91bGRQYXVzZSkgZmluYWw7CiAgICAgdm9pZCBldmFsdWF0ZU9uQ2FsbEZy
YW1lKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBpbmNs
dWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRN
dXRlQ29uc29sZSwgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJh
dGVQcmV2aWV3LCBjb25zdCBib29sKiBzYXZlUmVzdWx0LCBjb25zdCBib29sKiBlbXVsYXRlVXNl
ckdlc3R1cmUsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0
LCBPcHRpb25hbDxib29sPiYgd2FzVGhyb3duLCBPcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdElu
ZGV4KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFNob3VsZEJsYWNrYm94VVJMKEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgc2hvdWxkQmxhY2tib3gsIGNvbnN0IGJvb2wqIGNh
c2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgpIGZpbmFsOwpAQCAtMTI4LDcgKzEyOCw3
IEBAIHB1YmxpYzoKICAgICBib29sIHNjaGVkdWxlUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludChK
U0M6OkJyZWFrcG9pbnQmLCBEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uLCBSZWZQ
dHI8SlNPTjo6T2JqZWN0PiYmIGRhdGEgPSBudWxscHRyKTsKICAgICBib29sIGNhbmNlbFBhdXNl
Rm9yU3BlY2lhbEJyZWFrcG9pbnQoSlNDOjpCcmVha3BvaW50Jik7CiAKLSAgICB2b2lkIGJyZWFr
UHJvZ3JhbShEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uLCBSZWZQdHI8SlNPTjo6
T2JqZWN0PiYmIGRhdGEpOworICAgIHZvaWQgYnJlYWtQcm9ncmFtKERlYnVnZ2VyRnJvbnRlbmRE
aXNwYXRjaGVyOjpSZWFzb24sIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgZGF0YSA9IG51bGxwdHIs
IFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+JiYgc3BlY2lhbEJyZWFrcG9pbnQgPSBudWxscHRyKTsK
ICAgICB2b2lkIHNjcmlwdEV4ZWN1dGlvbkJsb2NrZWRCeUNTUChjb25zdCBTdHJpbmcmIGRpcmVj
dGl2ZVRleHQpOwogCiAgICAgY2xhc3MgTGlzdGVuZXIgewpAQCAtMjY2LDEwICsyNjYsMTEgQEAg
cHJpdmF0ZToKICAgICBPcHRpb25hbDxBc3luY0NhbGxJZGVudGlmaWVyPiBtX2N1cnJlbnRBc3lu
Y0NhbGxJZGVudGlmaWVyOwogICAgIGludCBtX2FzeW5jU3RhY2tUcmFjZURlcHRoIHsgMCB9Owog
CisgICAgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gbV9wYXVzZU9uQXNzZXJ0aW9uc0JyZWFrcG9p
bnQ7CisgICAgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gbV9wYXVzZU9uTWljcm90YXNrc0JyZWFr
cG9pbnQ7CisKICAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2VuYWJs
ZVBhdXNlV2hlbklkbGUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9wYXVzZU9uQXNzZXJ0aW9uRmFp
bHVyZXMgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9wYXVzZU9uTWljcm90YXNrcyB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX3BhdXNlRm9ySW50ZXJuYWxTY3JpcHRzIHsgZmFsc2UgfTsKICAgICBib29s
IG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fZGlkUGF1
c2VTdG9wd2F0Y2ggeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKaW5k
ZXggMTkwYjU2NmRhMTcxZTgyOTQ3ZDg4MGY3ZmNlZDRiMWJmMTY2NzE4Ny4uOWFiMWFmNzRkNDMz
NjM3MWY2NDkyOWJmNjA2NWE0MmNlMWI5OWY4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdl
bnQuY3BwCkBAIC03MywxNCArNzMsNiBAQCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6On5JbnNwZWN0
b3JSdW50aW1lQWdlbnQoKQogewogfQogCi1zdGF0aWMgSlNDOjpEZWJ1Z2dlcjo6UGF1c2VPbkV4
Y2VwdGlvbnNTdGF0ZSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKEpTQzo6RGVidWdnZXImIGRl
YnVnZ2VyLCBKU0M6OkRlYnVnZ2VyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIG5ld1N0YXRlKQot
ewotICAgIGF1dG8gcHJlc2VudFN0YXRlID0gZGVidWdnZXIucGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZSgpOwotICAgIGlmIChwcmVzZW50U3RhdGUgIT0gbmV3U3RhdGUpCi0gICAgICAgIGRlYnVnZ2Vy
LnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobmV3U3RhdGUpOwotICAgIHJldHVybiBwcmVzZW50
U3RhdGU7Ci19Ci0KIHN0YXRpYyBSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+IGJ1
aWxkRXJyb3JSYW5nZU9iamVjdChjb25zdCBKU1Rva2VuTG9jYXRpb24mIHRva2VuTG9jYXRpb24p
CiB7CiAgICAgcmV0dXJuIFByb3RvY29sOjpSdW50aW1lOjpFcnJvclJhbmdlOjpjcmVhdGUoKQpA
QCAtMTIzLDE4ICsxMTUsMTggQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRl
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHAKICAgICBpZiAoaW5q
ZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHBy
ZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9u
RXhjZXB0aW9uczsKLSAgICBpZiAoYXNCb29sKGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRl
Q29uc29sZSkpCi0gICAgICAgIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNldFBh
dXNlT25FeGNlcHRpb25zU3RhdGUobV9kZWJ1Z2dlciwgSlNDOjpEZWJ1Z2dlcjo6RG9udFBhdXNl
T25FeGNlcHRpb25zKTsKLSAgICBpZiAoYXNCb29sKGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRN
dXRlQ29uc29sZSkpCisgICAgSlNDOjpEZWJ1Z2dlcjo6VGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0
aW9uQnJlYWtwb2ludHMgdGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHMobV9k
ZWJ1Z2dlcik7CisKKyAgICBib29sIHBhdXNlQW5kTXV0ZSA9IGFzQm9vbChkb05vdFBhdXNlT25F
eGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUpOworICAgIGlmIChwYXVzZUFuZE11dGUpIHsKKyAgICAg
ICAgdGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHMucmVwbGFjZSgpOwogICAg
ICAgICBtdXRlQ29uc29sZSgpOworICAgIH0KIAogICAgIGluamVjdGVkU2NyaXB0LmV2YWx1YXRl
KGVycm9yU3RyaW5nLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCA/ICpvYmplY3RHcm91cCA6IFN0
cmluZygpLCBhc0Jvb2woaW5jbHVkZUNvbW1hbmRMaW5lQVBJKSwgYXNCb29sKHJldHVybkJ5VmFs
dWUpLCBhc0Jvb2woZ2VuZXJhdGVQcmV2aWV3KSwgYXNCb29sKHNhdmVSZXN1bHQpLCByZXN1bHQs
IHdhc1Rocm93biwgc2F2ZWRSZXN1bHRJbmRleCk7CiAKLSAgICBpZiAoYXNCb29sKGRvTm90UGF1
c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSkpIHsKKyAgICBpZiAocGF1c2VBbmRNdXRlKQog
ICAgICAgICB1bm11dGVDb25zb2xlKCk7Ci0gICAgICAgIHNldFBhdXNlT25FeGNlcHRpb25zU3Rh
dGUobV9kZWJ1Z2dlciwgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKLSAgICB9CiB9
CiAKIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50Ojphd2FpdFByb21pc2UoY29uc3QgU3RyaW5n
JiBwcm9taXNlT2JqZWN0SWQsIGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wq
IGdlbmVyYXRlUHJldmlldywgY29uc3QgYm9vbCogc2F2ZVJlc3VsdCwgUmVmPEF3YWl0UHJvbWlz
ZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQpAQCAtMTY1LDE4ICsxNTcsMTggQEAgdm9pZCBJbnNwZWN0
b3JSdW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW4KICAgICBpZiAob3B0aW9uYWxBcmd1bWVudHMpCiAgICAgICAgIGFyZ3VtZW50
cyA9IG9wdGlvbmFsQXJndW1lbnRzLT50b0pTT05TdHJpbmcoKTsKIAotICAgIGF1dG8gcHJldmlv
dXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gSlNDOjpEZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNl
cHRpb25zOwotICAgIGlmIChhc0Jvb2woZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25z
b2xlKSkKLSAgICAgICAgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VP
bkV4Y2VwdGlvbnNTdGF0ZShtX2RlYnVnZ2VyLCBKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VPbkV4
Y2VwdGlvbnMpOwotICAgIGlmIChhc0Jvb2woZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVD
b25zb2xlKSkKKyAgICBKU0M6OkRlYnVnZ2VyOjpUZW1wb3JhcmlseURpc2FibGVFeGNlcHRpb25C
cmVha3BvaW50cyB0ZW1wb3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50cyhtX2RlYnVn
Z2VyKTsKKworICAgIGJvb2wgcGF1c2VBbmRNdXRlID0gYXNCb29sKGRvTm90UGF1c2VPbkV4Y2Vw
dGlvbnNBbmRNdXRlQ29uc29sZSk7CisgICAgaWYgKHBhdXNlQW5kTXV0ZSkgeworICAgICAgICB0
ZW1wb3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50cy5yZXBsYWNlKCk7CiAgICAgICAg
IG11dGVDb25zb2xlKCk7CisgICAgfQogCiAgICAgaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9u
T24oZXJyb3JTdHJpbmcsIG9iamVjdElkLCBleHByZXNzaW9uLCBhcmd1bWVudHMsIGFzQm9vbChy
ZXR1cm5CeVZhbHVlKSwgYXNCb29sKGdlbmVyYXRlUHJldmlldyksIHJlc3VsdCwgd2FzVGhyb3du
KTsKIAotICAgIGlmIChhc0Jvb2woZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xl
KSkgeworICAgIGlmIChwYXVzZUFuZE11dGUpCiAgICAgICAgIHVubXV0ZUNvbnNvbGUoKTsKLSAg
ICAgICAgc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX2RlYnVnZ2VyLCBwcmV2aW91c1BhdXNl
T25FeGNlcHRpb25zU3RhdGUpOwotICAgIH0KIH0KIAogdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdl
bnQ6OmdldFByZXZpZXcoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9i
amVjdElkLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+JiBwcmV2aWV3
KQpAQCAtMTg3LDEzICsxNzksMTQgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFBy
ZXZpZXcoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG8KICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRl
ID0gc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX2RlYnVnZ2VyLCBKU0M6OkRlYnVnZ2VyOjpE
b250UGF1c2VPbkV4Y2VwdGlvbnMpOworICAgIEpTQzo6RGVidWdnZXI6OlRlbXBvcmFyaWx5RGlz
YWJsZUV4Y2VwdGlvbkJyZWFrcG9pbnRzIHRlbXBvcmFyaWx5RGlzYWJsZUV4Y2VwdGlvbkJyZWFr
cG9pbnRzKG1fZGVidWdnZXIpOworICAgIHRlbXBvcmFyaWx5RGlzYWJsZUV4Y2VwdGlvbkJyZWFr
cG9pbnRzLnJlcGxhY2UoKTsKKwogICAgIG11dGVDb25zb2xlKCk7CiAKICAgICBpbmplY3RlZFNj
cmlwdC5nZXRQcmV2aWV3KGVycm9yU3RyaW5nLCBvYmplY3RJZCwgcHJldmlldyk7CiAKICAgICB1
bm11dGVDb25zb2xlKCk7Ci0gICAgc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX2RlYnVnZ2Vy
LCBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUpOwogfQogCiB2b2lkIEluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIG93blByb3BlcnRpZXMsIGNvbnN0IGludCog
ZmV0Y2hTdGFydCwgY29uc3QgaW50KiBmZXRjaENvdW50LCBjb25zdCBib29sKiBnZW5lcmF0ZVBy
ZXZpZXcsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURl
c2NyaXB0b3I+PiYgcHJvcGVydGllcywgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1
bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcykK
QEAgLTIxNiw3ICsyMDksOSBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVy
dGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgYXV0byBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBz
ZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1fZGVidWdnZXIsIEpTQzo6RGVidWdnZXI6OkRvbnRQ
YXVzZU9uRXhjZXB0aW9ucyk7CisgICAgSlNDOjpEZWJ1Z2dlcjo6VGVtcG9yYXJpbHlEaXNhYmxl
RXhjZXB0aW9uQnJlYWtwb2ludHMgdGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2lu
dHMobV9kZWJ1Z2dlcik7CisgICAgdGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2lu
dHMucmVwbGFjZSgpOworCiAgICAgbXV0ZUNvbnNvbGUoKTsKIAogICAgIGluamVjdGVkU2NyaXB0
LmdldFByb3BlcnRpZXMoZXJyb3JTdHJpbmcsIG9iamVjdElkLCBhc0Jvb2wob3duUHJvcGVydGll
cyksIHN0YXJ0LCBjb3VudCwgYXNCb29sKGdlbmVyYXRlUHJldmlldyksIHByb3BlcnRpZXMpOwpA
QCAtMjI2LDcgKzIyMSw2IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcm9wZXJ0
aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nCiAgICAgICAgIGluamVj
dGVkU2NyaXB0LmdldEludGVybmFsUHJvcGVydGllcyhlcnJvclN0cmluZywgb2JqZWN0SWQsIGFz
Qm9vbChnZW5lcmF0ZVByZXZpZXcpLCBpbnRlcm5hbFByb3BlcnRpZXMpOwogCiAgICAgdW5tdXRl
Q29uc29sZSgpOwotICAgIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9kZWJ1Z2dlciwgcHJl
dmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSdW50aW1l
QWdlbnQ6OmdldERpc3BsYXlhYmxlUHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGludCogZmV0Y2hTdGFydCwgY29uc3QgaW50
KiBmZXRjaENvdW50LCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxKU09OOjpB
cnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcHJvcGVydGll
cywgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVy
dHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcykKQEAgLTI0OSw3ICsyNDMsOSBAQCB2
b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0
byBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0
YXRlKG1fZGVidWdnZXIsIEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7Cisg
ICAgSlNDOjpEZWJ1Z2dlcjo6VGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHMg
dGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHMobV9kZWJ1Z2dlcik7CisgICAg
dGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHMucmVwbGFjZSgpOworCiAgICAg
bXV0ZUNvbnNvbGUoKTsKIAogICAgIGluamVjdGVkU2NyaXB0LmdldERpc3BsYXlhYmxlUHJvcGVy
dGllcyhlcnJvclN0cmluZywgb2JqZWN0SWQsIHN0YXJ0LCBjb3VudCwgYXNCb29sKGdlbmVyYXRl
UHJldmlldyksIHByb3BlcnRpZXMpOwpAQCAtMjU5LDcgKzI1NSw2IEBAIHZvaWQgSW5zcGVjdG9y
UnVudGltZUFnZW50OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjCiAgICAgICAgIGluamVjdGVkU2NyaXB0LmdldEludGVybmFsUHJvcGVydGllcyhl
cnJvclN0cmluZywgb2JqZWN0SWQsIGFzQm9vbChnZW5lcmF0ZVByZXZpZXcpLCBpbnRlcm5hbFBy
b3BlcnRpZXMpOwogCiAgICAgdW5tdXRlQ29uc29sZSgpOwotICAgIHNldFBhdXNlT25FeGNlcHRp
b25zU3RhdGUobV9kZWJ1Z2dlciwgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldENvbGxlY3Rpb25FbnRyaWVzKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5n
KiBvYmplY3RHcm91cCwgY29uc3QgaW50KiBmZXRjaFN0YXJ0LCBjb25zdCBpbnQqIGZldGNoQ291
bnQsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpDb2xsZWN0aW9uRW50
cnk+PiYgZW50cmllcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcHJvdG9jb2wvRGVidWdnZXIuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcHJvdG9jb2wvRGVidWdnZXIuanNvbgppbmRleCA3ZThmNDU5NmJhMWIyZWZlZmZmNmJmMzA5
N2ZkODYxZTFkNmQzMTM0Li45YzQyZTMwNjk2NmU0ZDNhOTRhN2E0Y2Y5YzZkODdlZGU3MzExNDQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0Rl
YnVnZ2VyLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2Nv
bC9EZWJ1Z2dlci5qc29uCkBAIC0yNTcsMjggKzI1NywzMiBAQAogICAgICAgICAgICAgIm5hbWUi
OiAic2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cyIsCiAgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiQ29udHJvbCB3aGV0aGVyIHRoZSBkZWJ1Z2dlciBwYXVzZXMgZXhlY3V0aW9uIGJlZm9y
ZSBgZGVidWdnZXJgIHN0YXRlbWVudHMuIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwot
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZW5hYmxlZCIsICJ0eXBlIjogImJvb2xlYW4iIH0K
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVuYWJsZWQiLCAidHlwZSI6ICJib29sZWFuIiB9
LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib3B0aW9ucyIsICIkcmVmIjogIkJyZWFrcG9p
bnRPcHRpb25zIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIk9wdGlvbnMgdG8g
YXBwbHkgdG8gdGhpcyBicmVha3BvaW50IHRvIG1vZGlmeSBpdHMgYmVoYXZpb3IuIiB9CiAgICAg
ICAgICAgICBdCiAgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogInNl
dFBhdXNlT25FeGNlcHRpb25zIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEZWZpbmVz
IHBhdXNlIG9uIGV4Y2VwdGlvbnMgc3RhdGUuIENhbiBiZSBzZXQgdG8gc3RvcCBvbiBhbGwgZXhj
ZXB0aW9ucywgdW5jYXVnaHQgZXhjZXB0aW9ucyBvciBubyBleGNlcHRpb25zLiBJbml0aWFsIHBh
dXNlIG9uIGV4Y2VwdGlvbnMgc3RhdGUgaXMgPGNvZGU+bm9uZTwvY29kZT4uIiwKICAgICAgICAg
ICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhdGUiLCAi
dHlwZSI6ICJzdHJpbmciLCAiZW51bSI6IFsibm9uZSIsICJ1bmNhdWdodCIsICJhbGwiXSwgImRl
c2NyaXB0aW9uIjogIlBhdXNlIG9uIGV4Y2VwdGlvbnMgbW9kZS4iIH0KKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInN0YXRlIiwgInR5cGUiOiAic3RyaW5nIiwgImVudW0iOiBbIm5vbmUiLCAi
dW5jYXVnaHQiLCAiYWxsIl0sICJkZXNjcmlwdGlvbiI6ICJQYXVzZSBvbiBleGNlcHRpb25zIG1v
ZGUuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib3B0aW9ucyIsICIkcmVmIjogIkJy
ZWFrcG9pbnRPcHRpb25zIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIk9wdGlv
bnMgdG8gYXBwbHkgdG8gdGhpcyBicmVha3BvaW50IHRvIG1vZGlmeSBpdHMgYmVoYXZpb3IuIiB9
CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1l
IjogInNldFBhdXNlT25Bc3NlcnRpb25zIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJT
ZXQgcGF1c2Ugb24gYXNzZXJ0aW9ucyBzdGF0ZS4gQXNzZXJ0aW9ucyBhcmUgY29uc29sZS5hc3Nl
cnQgYXNzZXJ0aW9ucy4iLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJlbmFibGVkIiwgInR5cGUiOiAiYm9vbGVhbiIgfQorICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiZW5hYmxlZCIsICJ0eXBlIjogImJvb2xlYW4iIH0sCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJvcHRpb25zIiwgIiRyZWYiOiAiQnJlYWtwb2ludE9wdGlvbnMi
LCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiT3B0aW9ucyB0byBhcHBseSB0byB0
aGlzIGJyZWFrcG9pbnQgdG8gbW9kaWZ5IGl0cyBiZWhhdmlvci4iIH0KICAgICAgICAgICAgIF0K
ICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAic2V0UGF1c2VPbk1p
Y3JvdGFza3MiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlBhdXNlIHdoZW4gcnVubmlu
ZyB0aGUgbmV4dCBKYXZhU2NyaXB0IG1pY3JvdGFzay4iLAogICAgICAgICAgICAgInBhcmFtZXRl
cnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmFibGVkIiwgInR5cGUiOiAiYm9v
bGVhbiIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZW5hYmxlZCIsICJ0eXBlIjogImJv
b2xlYW4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJvcHRpb25zIiwgIiRyZWYiOiAi
QnJlYWtwb2ludE9wdGlvbnMiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiT3B0
aW9ucyB0byBhcHBseSB0byB0aGlzIGJyZWFrcG9pbnQgdG8gbW9kaWZ5IGl0cyBiZWhhdmlvci4i
IH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5n
cy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2Fs
aXplZFN0cmluZ3MuanMKaW5kZXggMGU5NTJlYzNjNzUyOWUwZjg3YTY5ODkxNTljOWE2MGU0MTdj
ZGRlMC4uNmZjZjM1N2IxMTViYzNkZDllOGFiYjA1NzM2ZTVkNGRkZWIzNmZkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVk
U3RyaW5ncy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5s
cHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCkBAIC0xMDM4LDYgKzEwMzgsOCBAQCBsb2NhbGl6ZWRT
dHJpbmdzWyJSZXF1ZXN0IERhdGEiXSA9ICJSZXF1ZXN0IERhdGEiOwogbG9jYWxpemVkU3RyaW5n
c1siUmVxdWVzdCBIZWFkZXJzIl0gPSAiUmVxdWVzdCBIZWFkZXJzIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIlJlcXVlc3Rpbmc6ICVzIl0gPSAiUmVxdWVzdGluZzogJXMiOwogbG9jYWxpemVkU3RyaW5n
c1siUmVxdWlyZWQiXSA9ICJSZXF1aXJlZCI7CisvKiBDb250ZXh0IG1lbnUgYWN0aW9uIGZvciBy
ZXNldHRpbmcgdGhlIGJyZWFrcG9pbnQgdG8gaXRzIGluaXRpYWwgY29uZmlndXJhdGlvbi4gKi8K
K2xvY2FsaXplZFN0cmluZ3NbIlJlc2V0IEJyZWFrcG9pbnQgQCBCcmVha3BvaW50IENvbnRleHQg
TWVudSJdID0gIlJlc2V0IEJyZWFrcG9pbnQiOwogbG9jYWxpemVkU3RyaW5nc1siUmVzb3VyY2Ui
XSA9ICJSZXNvdXJjZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJSZXNvdXJjZSBTaXplIl0gPSAiUmVz
b3VyY2UgU2l6ZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJSZXNvdXJjZSBUeXBlIl0gPSAiUmVzb3Vy
Y2UgVHlwZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9CYXNlL1NldHRpbmcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
YXNlL1NldHRpbmcuanMKaW5kZXggZWQ1YWIwMDk2YjJkMTA2Njc4ZmE5OTgyODUyZWM5OGI2ZjMy
MTU4ZC4uNTNlNGU5MTQ1NGZjZDUyZGNiMjI5OTc3MjNiMzViY2YwMjhhM2ZhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcwpA
QCAtMzcsNyArMzcsNiBAQCBXSS5TZXR0aW5nID0gY2xhc3MgU2V0dGluZyBleHRlbmRzIFdJLk9i
amVjdAogCiAgICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOwogCi0gICAgICAgIHRoaXMuX2xvY2Fs
U3RvcmFnZUtleSA9IFdJLlNldHRpbmcuX2xvY2FsU3RvcmFnZUtleSh0aGlzLl9uYW1lKTsKICAg
ICAgICAgdGhpcy5fZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlOwogICAgIH0KIApAQCAtNDUs
MjIgKzQ0LDI1IEBAIFdJLlNldHRpbmcgPSBjbGFzcyBTZXR0aW5nIGV4dGVuZHMgV0kuT2JqZWN0
CiAKICAgICBzdGF0aWMgbWlncmF0ZVZhbHVlKGtleSkKICAgICB7Ci0gICAgICAgIGxldCBsb2Nh
bFN0b3JhZ2VLZXkgPSBXSS5TZXR0aW5nLl9sb2NhbFN0b3JhZ2VLZXkoa2V5KTsKKyAgICAgICAg
bGV0IGxvY2FsU3RvcmFnZUtleSA9IFdJLlNldHRpbmcuX2xvY2FsU3RvcmFnZUtleVByZWZpeCAr
IGtleTsKIAogICAgICAgICBsZXQgdmFsdWUgPSB1bmRlZmluZWQ7Ci0gICAgICAgIGlmICghd2lu
ZG93Lkluc3BlY3RvclRlc3QgJiYgd2luZG93LmxvY2FsU3RvcmFnZSAmJiBsb2NhbFN0b3JhZ2VL
ZXkgaW4gd2luZG93LmxvY2FsU3RvcmFnZSkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAg
ICAgICAgICB2YWx1ZSA9IEpTT04ucGFyc2Uod2luZG93LmxvY2FsU3RvcmFnZVtsb2NhbFN0b3Jh
Z2VLZXldKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggeyB9CisgICAgICAgIGlmICghd2luZG93Lklu
c3BlY3RvclRlc3QgJiYgd2luZG93LmxvY2FsU3RvcmFnZSkgeworICAgICAgICAgICAgbGV0IGl0
ZW0gPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlS2V5KTsKKyAgICAg
ICAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgICAgICAgICAgdmFsdWUgPSBKU09OLnBhcnNlKGl0ZW0pOworICAgICAgICAgICAgICAg
IH0gY2F0Y2ggeyB9CiAKLSAgICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRl
bShsb2NhbFN0b3JhZ2VLZXkpOworICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uu
cmVtb3ZlSXRlbShsb2NhbFN0b3JhZ2VLZXkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAKICAgICBzdGF0aWMgcmVzZXQoKQogICAgIHsK
LSAgICAgICAgbGV0IHByZWZpeCA9IFNldHRpbmcuX2xvY2FsU3RvcmFnZUtleSgiIik7CisgICAg
ICAgIGxldCBwcmVmaXggPSBXSS5TZXR0aW5nLl9sb2NhbFN0b3JhZ2VLZXlQcmVmaXg7CiAKICAg
ICAgICAgbGV0IGtleXNUb1JlbW92ZSA9IFtdOwogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IHdpbmRvdy5sb2NhbFN0b3JhZ2UubGVuZ3RoOyArK2kpIHsKQEAgLTczLDEzICs3NSw2IEBAIFdJ
LlNldHRpbmcgPSBjbGFzcyBTZXR0aW5nIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB3
aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTsKICAgICB9CiAKLSAgICBzdGF0aWMg
X2xvY2FsU3RvcmFnZUtleShuYW1lKQotICAgIHsKLSAgICAgICAgbGV0IGluc3BlY3Rpb25MZXZl
bCA9IEluc3BlY3RvckZyb250ZW5kSG9zdCA/IEluc3BlY3RvckZyb250ZW5kSG9zdC5pbnNwZWN0
aW9uTGV2ZWwgOiAxOwotICAgICAgICBsZXQgbGV2ZWxTdHJpbmcgPSBpbnNwZWN0aW9uTGV2ZWwg
PiAxID8gIi0iICsgaW5zcGVjdGlvbkxldmVsIDogIiI7Ci0gICAgICAgIHJldHVybiBgY29tLmFw
cGxlLldlYkluc3BlY3RvciR7bGV2ZWxTdHJpbmd9LiR7bmFtZX1gOwotICAgIH0KLQogICAgIC8v
IFB1YmxpYwogCiAgICAgZ2V0IG5hbWUoKSB7IHJldHVybiB0aGlzLl9uYW1lOyB9CkBAIC05Mywx
MSArODgsMTUgQEAgV0kuU2V0dGluZyA9IGNsYXNzIFNldHRpbmcgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICAgICAgLy8gTWFrZSBhIGNvcHkgb2YgdGhlIGRlZmF1bHQgdmFsdWUgc28gY2hhbmdlcyB0
byBvYmplY3QgdmFsdWVzIGRvbid0IG1vZGlmeSB0aGUgZGVmYXVsdCB2YWx1ZS4KICAgICAgICAg
dGhpcy5fdmFsdWUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuX2RlZmF1bHRWYWx1
ZSkpOwogCi0gICAgICAgIGlmICghd2luZG93Lkluc3BlY3RvclRlc3QgJiYgd2luZG93LmxvY2Fs
U3RvcmFnZSAmJiB0aGlzLl9sb2NhbFN0b3JhZ2VLZXkgaW4gd2luZG93LmxvY2FsU3RvcmFnZSkg
ewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IEpTT04u
cGFyc2Uod2luZG93LmxvY2FsU3RvcmFnZVt0aGlzLl9sb2NhbFN0b3JhZ2VLZXldKTsKLSAgICAg
ICAgICAgIH0gY2F0Y2ggewotICAgICAgICAgICAgICAgIGRlbGV0ZSB3aW5kb3cubG9jYWxTdG9y
YWdlW3RoaXMuX2xvY2FsU3RvcmFnZUtleV07CisgICAgICAgIGlmICghd2luZG93Lkluc3BlY3Rv
clRlc3QgJiYgd2luZG93LmxvY2FsU3RvcmFnZSkgeworICAgICAgICAgICAgbGV0IGtleSA9IFdJ
LlNldHRpbmcuX2xvY2FsU3RvcmFnZUtleVByZWZpeCArIHRoaXMuX25hbWU7CisgICAgICAgICAg
ICBsZXQgaXRlbSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpOworICAgICAgICAg
ICAgaWYgKGl0ZW0gIT09IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAg
ICAgICAgICAgICB0aGlzLl92YWx1ZSA9IEpTT04ucGFyc2UoaXRlbSk7CisgICAgICAgICAgICAg
ICAgfSBjYXRjaCB7CisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVt
b3ZlSXRlbShrZXkpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCkBAIC0xMTcsMTEgKzExNiwxMiBAQCBXSS5TZXR0aW5nID0gY2xhc3MgU2V0dGluZyBleHRl
bmRzIFdJLk9iamVjdAogICAgIHNhdmUoKQogICAgIHsKICAgICAgICAgaWYgKCF3aW5kb3cuSW5z
cGVjdG9yVGVzdCAmJiB3aW5kb3cubG9jYWxTdG9yYWdlKSB7CisgICAgICAgICAgICBsZXQga2V5
ID0gV0kuU2V0dGluZy5fbG9jYWxTdG9yYWdlS2V5UHJlZml4ICsgdGhpcy5fbmFtZTsKICAgICAg
ICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5zaGFsbG93RXF1YWwodGhp
cy5fdmFsdWUsIHRoaXMuX2RlZmF1bHRWYWx1ZSkpCi0gICAgICAgICAgICAgICAgICAgIGRlbGV0
ZSB3aW5kb3cubG9jYWxTdG9yYWdlW3RoaXMuX2xvY2FsU3RvcmFnZUtleV07CisgICAgICAgICAg
ICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpOwogICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZVt0aGlz
Ll9sb2NhbFN0b3JhZ2VLZXldID0gSlNPTi5zdHJpbmdpZnkodGhpcy5fdmFsdWUpOworICAgICAg
ICAgICAgICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBKU09OLnN0cmlu
Z2lmeSh0aGlzLl92YWx1ZSkpOwogICAgICAgICAgICAgfSBjYXRjaCB7CiAgICAgICAgICAgICAg
ICAgY29uc29sZS5lcnJvcigiRXJyb3Igc2F2aW5nIHNldHRpbmcgd2l0aCBuYW1lOiAiICsgdGhp
cy5fbmFtZSk7CiAgICAgICAgICAgICB9CkBAIC0xMzcsNiArMTM3LDE0IEBAIFdJLlNldHRpbmcg
PSBjbGFzcyBTZXR0aW5nIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgfQogfTsKIAorV0kuU2V0dGlu
Zy5fbG9jYWxTdG9yYWdlS2V5UHJlZml4ID0gKGZ1bmN0aW9uKCkgeworICAgIGxldCBpbnNwZWN0
aW9uTGV2ZWwgPSBJbnNwZWN0b3JGcm9udGVuZEhvc3QgPyBJbnNwZWN0b3JGcm9udGVuZEhvc3Qu
aW5zcGVjdGlvbkxldmVsIDogMTsKKyAgICBsZXQgbGV2ZWxTdHJpbmcgPSBpbnNwZWN0aW9uTGV2
ZWwgPiAxID8gIi0iICsgaW5zcGVjdGlvbkxldmVsIDogIiI7CisgICAgcmV0dXJuIGBjb20uYXBw
bGUuV2ViSW5zcGVjdG9yJHtsZXZlbFN0cmluZ30uYDsKK30pKCk7CisKK1dJLlNldHRpbmcuaXNG
aXJzdExhdW5jaCA9ICEhd2luZG93Lkluc3BlY3RvclRlc3QgfHwgKHdpbmRvdy5sb2NhbFN0b3Jh
Z2UgJiYgT2JqZWN0LmtleXMod2luZG93LmxvY2FsU3RvcmFnZSkuZXZlcnkoKGtleSkgPT4gIWtl
eS5zdGFydHNXaXRoKFdJLlNldHRpbmcuX2xvY2FsU3RvcmFnZUtleVByZWZpeCkpKTsKKwogV0ku
U2V0dGluZy5FdmVudCA9IHsKICAgICBDaGFuZ2VkOiAic2V0dGluZy1jaGFuZ2VkIgogfTsKQEAg
LTE5Nyw5ICsyMDUsNyBAQCBXSS5zZXR0aW5ncyA9IHsKICAgICBzZWFyY2hSZWd1bGFyRXhwcmVz
c2lvbjogbmV3IFdJLlNldHRpbmcoInNlYXJjaC1yZWd1bGFyLWV4cHJlc3Npb24iLCBmYWxzZSks
CiAgICAgc2VsZWN0ZWROZXR3b3JrRGV0YWlsQ29udGVudFZpZXdJZGVudGlmaWVyOiBuZXcgV0ku
U2V0dGluZygibmV0d29yay1kZXRhaWwtY29udGVudC12aWV3LWlkZW50aWZpZXIiLCAicHJldmll
dyIpLAogICAgIHNvdXJjZU1hcHNFbmFibGVkOiBuZXcgV0kuU2V0dGluZygic291cmNlLW1hcHMt
ZW5hYmxlZCIsIHRydWUpLAotICAgIHNob3dBbGxNaWNyb3Rhc2tzQnJlYWtwb2ludDogbmV3IFdJ
LlNldHRpbmcoInNob3ctYWxsLW1pY3JvdGFza3MtYnJlYWtwb2ludCIsIGZhbHNlKSwKICAgICBz
aG93QWxsUmVxdWVzdHNCcmVha3BvaW50OiBuZXcgV0kuU2V0dGluZygic2hvdy1hbGwtcmVxdWVz
dHMtYnJlYWtwb2ludCIsIGZhbHNlKSwKLSAgICBzaG93QXNzZXJ0aW9uRmFpbHVyZXNCcmVha3Bv
aW50OiBuZXcgV0kuU2V0dGluZygic2hvdy1hc3NlcnRpb24tZmFpbHVyZXMtYnJlYWtwb2ludCIs
IHRydWUpLAogICAgIHNob3dDYW52YXNQYXRoOiBuZXcgV0kuU2V0dGluZygic2hvdy1jYW52YXMt
cGF0aCIsIGZhbHNlKSwKICAgICBzaG93SW1hZ2VHcmlkOiBuZXcgV0kuU2V0dGluZygic2hvdy1p
bWFnZS1ncmlkIiwgdHJ1ZSksCiAgICAgc2hvd0ludmlzaWJsZUNoYXJhY3RlcnM6IG5ldyBXSS5T
ZXR0aW5nKCJzaG93LWludmlzaWJsZS1jaGFyYWN0ZXJzIiwgISFXSS5TZXR0aW5nLm1pZ3JhdGVW
YWx1ZSgic2hvdy1pbnZhbGlkLWNoYXJhY3RlcnMiKSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dlck1hbmFnZXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dl
ck1hbmFnZXIuanMKaW5kZXggN2Y0ZmQ0YzBkODMxZGRkZGY4M2E3NzIwMjFhMDMwZTY3OTRlNDY1
Mi4uMDdjZDJiMzZjZjZiYjY5MTU5OGVkMmU2YWY3MjgwNTg5MjdhZDY3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGVidWdnZXJN
YW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5qcwpAQCAtNTMsNDYgKzUzLDI4IEBAIFdJLkRlYnVnZ2Vy
TWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICB0aGlzLl9icmVha3BvaW50c0VuYWJsZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImJyZWFr
cG9pbnRzLWVuYWJsZWQiLCB0cnVlKTsKICAgICAgICAgdGhpcy5fYXN5bmNTdGFja1RyYWNlRGVw
dGhTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImFzeW5jLXN0YWNrLXRyYWNlLWRlcHRoIiwgMjAw
KTsKIAotICAgICAgICBjb25zdCBzcGVjaWFsQnJlYWtwb2ludExvY2F0aW9uID0gbmV3IFdJLlNv
dXJjZUNvZGVMb2NhdGlvbihudWxsLCBJbmZpbml0eSwgSW5maW5pdHkpOworICAgICAgICB0aGlz
Ll9kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50U2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKCJk
ZWJ1Z2dlci1zdGF0ZW1lbnRzLWJyZWFrcG9pbnQiLCB7fSk7CisgICAgICAgIHRoaXMuX2RlYnVn
Z2VyU3RhdGVtZW50c0JyZWFrcG9pbnQgPSBudWxsOwogCi0gICAgICAgIHRoaXMuX2RlYnVnZ2Vy
U3RhdGVtZW50c0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKCJicmVh
ay1vbi1kZWJ1Z2dlci1zdGF0ZW1lbnRzIiwgdHJ1ZSk7Ci0gICAgICAgIHRoaXMuX2RlYnVnZ2Vy
U3RhdGVtZW50c0JyZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQoc3BlY2lh
bEJyZWFrcG9pbnRMb2NhdGlvbiwgewotICAgICAgICAgICAgZGlzYWJsZWQ6ICF0aGlzLl9kZWJ1
Z2dlclN0YXRlbWVudHNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUsCi0gICAgICAgIH0p
OwotICAgICAgICB0aGlzLl9kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50LnJlc29sdmVkID0g
dHJ1ZTsKKyAgICAgICAgdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnRTZXR0aW5nID0gbmV3
IFdJLlNldHRpbmcoImFsbC1leGNlcHRpb25zLWJyZWFrcG9pbnQiLCB7ZGlzYWJsZWQ6IHRydWV9
KTsKKyAgICAgICAgdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBudWxsOwogCi0gICAg
ICAgIHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcgPSBuZXcgV0ku
U2V0dGluZygiYnJlYWstb24tYWxsLWV4Y2VwdGlvbnMiLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMu
X2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KHNw
ZWNpYWxCcmVha3BvaW50TG9jYXRpb24sIHsKLSAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5f
YWxsRXhjZXB0aW9uc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwKLSAgICAgICAgfSk7
Ci0gICAgICAgIHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50LnJlc29sdmVkID0gdHJ1ZTsK
KyAgICAgICAgdGhpcy5fdW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludFNldHRpbmcgPSBuZXcg
V0kuU2V0dGluZygidW5jYXVnaHQtZXhjZXB0aW9ucy1icmVha3BvaW50Iiwge2Rpc2FibGVkOiB0
cnVlfSk7CisgICAgICAgIHRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBudWxs
OwogCi0gICAgICAgIHRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnRFbmFibGVkU2V0
dGluZyA9IG5ldyBXSS5TZXR0aW5nKCJicmVhay1vbi11bmNhdWdodC1leGNlcHRpb25zIiwgZmFs
c2UpOwotICAgICAgICB0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50ID0gbmV3IFdJ
LkphdmFTY3JpcHRCcmVha3BvaW50KHNwZWNpYWxCcmVha3BvaW50TG9jYXRpb24sIHsKLSAgICAg
ICAgICAgIGRpc2FibGVkOiAhdGhpcy5fdW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludEVuYWJs
ZWRTZXR0aW5nLnZhbHVlLAotICAgICAgICB9KTsKLSAgICAgICAgdGhpcy5fdW5jYXVnaHRFeGNl
cHRpb25zQnJlYWtwb2ludC5yZXNvbHZlZCA9IHRydWU7CisgICAgICAgIHRoaXMuX2Fzc2VydGlv
bkZhaWx1cmVzQnJlYWtwb2ludFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZygiYXNzZXJ0aW9uLWZh
aWx1cmVzLWJyZWFrcG9pbnQiLCBudWxsKTsKKyAgICAgICAgaWYgKFdJLlNldHRpbmcuaXNGaXJz
dExhdW5jaCkKKyAgICAgICAgICAgIHRoaXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludFNl
dHRpbmcudmFsdWUgPSB7ZGlzYWJsZWQ6IHRydWV9OworICAgICAgICB0aGlzLl9hc3NlcnRpb25G
YWlsdXJlc0JyZWFrcG9pbnQgPSBudWxsOwogCi0gICAgICAgIHRoaXMuX2Fzc2VydGlvbkZhaWx1
cmVzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImJyZWFrLW9uLWFz
c2VydGlvbi1mYWlsdXJlcyIsIGZhbHNlKTsKLSAgICAgICAgdGhpcy5fYXNzZXJ0aW9uRmFpbHVy
ZXNCcmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KHNwZWNpYWxCcmVha3Bv
aW50TG9jYXRpb24sIHsKLSAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5fYXNzZXJ0aW9uRmFp
bHVyZXNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUsCi0gICAgICAgIH0pOwotICAgICAg
ICB0aGlzLl9hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQucmVzb2x2ZWQgPSB0cnVlOwotCi0g
ICAgICAgIHRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50RW5hYmxlZFNldHRpbmcgPSBuZXcg
V0kuU2V0dGluZygiYnJlYWstb24tYWxsLW1pY3JvdGFza3MiLCBmYWxzZSk7Ci0gICAgICAgIHRo
aXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50
KHNwZWNpYWxCcmVha3BvaW50TG9jYXRpb24sIHsKLSAgICAgICAgICAgIGRpc2FibGVkOiAhdGhp
cy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwKLSAgICAgICAg
fSk7Ci0gICAgICAgIHRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50LnJlc29sdmVkID0gdHJ1
ZTsKKyAgICAgICAgdGhpcy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnRTZXR0aW5nID0gbmV3IFdJ
LlNldHRpbmcoImFsbC1taWNyb3Rhc2tzLWJyZWFrcG9pbnQiLCBudWxsKTsKKyAgICAgICAgdGhp
cy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnQgPSBudWxsOwogCiAgICAgICAgIHRoaXMuX2JyZWFr
cG9pbnRzID0gW107CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRDb250ZW50SWRlbnRpZmllck1h
cCA9IG5ldyBNdWx0aW1hcDsKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludFNjcmlwdElkZW50aWZp
ZXJNYXAgPSBuZXcgTXVsdGltYXA7CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRJZE1hcCA9IG5l
dyBNYXA7CiAKLSAgICAgICAgdGhpcy5fYnJlYWtPbkV4Y2VwdGlvbnNTdGF0ZSA9ICJub25lIjsK
LSAgICAgICAgdGhpcy5fdXBkYXRlQnJlYWtPbkV4Y2VwdGlvbnNTdGF0ZSgpOwotCiAgICAgICAg
IHRoaXMuX25leHRCcmVha3BvaW50QWN0aW9uSWRlbnRpZmllciA9IDE7CiAKICAgICAgICAgdGhp
cy5fYmxhY2tib3hlZFVSTHNTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImRlYnVnZ2VyLWJsYWNr
Ym94ZWQtdXJscyIsIFtdKTsKQEAgLTE0Miw2ICsxMjQsNjAgQEAgV0kuRGVidWdnZXJNYW5hZ2Vy
ID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cyA9IGZhbHNlOwogICAgICAg
ICB9KSgpKTsKKworICAgICAgICBXSS5UYXJnZXQucmVnaXN0ZXJJbml0aWFsaXphdGlvblByb21p
c2UoKGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgIC8vIFdhaXQgb25lIG1pY3JvdGFzayBzbyB0
aGF0IGBXSS5kZWJ1Z2dlck1hbmFnZXJgIGNhbiBiZSBpbml0aWFsaXplZC4KKyAgICAgICAgICAg
IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHF1ZXVlTWljcm90YXNrKHJl
c29sdmUpKTsKKworICAgICAgICAgICAgbGV0IGxvYWRTcGVjaWFsQnJlYWtwb2ludCA9IChzZXR0
aW5nLCBlbmFibGVkU2V0dGluZ3NLZXksIHNob3duU2V0dGluZ3NLZXkpID0+IHsKKyAgICAgICAg
ICAgICAgICBsZXQgc2VyaWFsaXplZEJyZWFrcG9pbnQgPSBzZXR0aW5nLnZhbHVlOworCisgICAg
ICAgICAgICAgICAgaWYgKCFzZXJpYWxpemVkQnJlYWtwb2ludCAmJiAoIXNob3duU2V0dGluZ3NL
ZXkgfHwgV0kuU2V0dGluZy5taWdyYXRlVmFsdWUoc2hvd25TZXR0aW5nc0tleSkpKSB7CisgICAg
ICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWRCcmVha3BvaW50ID0gc2V0dGluZy52YWx1ZSA9IHt9
OworICAgICAgICAgICAgICAgICAgICBzZXR0aW5nLnNhdmUoKTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBpZiAoV0kuU2V0dGluZy5taWdyYXRlVmFsdWUoZW5hYmxlZFNl
dHRpbmdzS2V5KSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXNlcmlhbGl6ZWRCcmVha3Bv
aW50KQorICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZEJyZWFrcG9pbnQgPSBzZXR0
aW5nLnZhbHVlID0ge307CisgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWRCcmVha3BvaW50
LmRpc2FibGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHNldHRpbmcuc2F2ZSgpOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICghc2VyaWFsaXplZEJyZWFr
cG9pbnQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVNwZWNpYWxCcmVha3BvaW50KHNlcmlhbGl6ZWRCcmVha3Bv
aW50KTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIHRoaXMuX3Jlc3RvcmluZ0JyZWFr
cG9pbnRzID0gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50
LnN1cHBvcnRzRGVidWdnZXJTdGF0ZW1lbnRzKCkpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9k
ZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50ID0gbG9hZFNwZWNpYWxCcmVha3BvaW50KHRoaXMu
X2RlYnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9pbnRTZXR0aW5nLCAiYnJlYWstb24tZGVidWdnZXIt
c3RhdGVtZW50cyIpOworICAgICAgICAgICAgICAgIGlmICh0aGlzLl9kZWJ1Z2dlclN0YXRlbWVu
dHNCcmVha3BvaW50KQorICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEJyZWFrcG9pbnQodGhp
cy5fZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50ID0gbG9hZFNwZWNpYWxCcmVha3Bv
aW50KHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50U2V0dGluZywgImJyZWFrLW9uLWFsbC1l
eGNlcHRpb25zIik7CisgICAgICAgICAgICBpZiAodGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9p
bnQpCisgICAgICAgICAgICAgICAgdGhpcy5hZGRCcmVha3BvaW50KHRoaXMuX2FsbEV4Y2VwdGlv
bnNCcmVha3BvaW50KTsKKworICAgICAgICAgICAgdGhpcy5fdW5jYXVnaHRFeGNlcHRpb25zQnJl
YWtwb2ludCA9IGxvYWRTcGVjaWFsQnJlYWtwb2ludCh0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNC
cmVha3BvaW50U2V0dGluZywgImJyZWFrLW9uLXVuY2F1Z2h0LWV4Y2VwdGlvbnMiKTsKKyAgICAg
ICAgICAgIGlmICh0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50KQorICAgICAgICAg
ICAgICAgIHRoaXMuYWRkQnJlYWtwb2ludCh0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3Bv
aW50KTsKKworICAgICAgICAgICAgdGhpcy5fYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50ID0g
bG9hZFNwZWNpYWxCcmVha3BvaW50KHRoaXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludFNl
dHRpbmcsICJicmVhay1vbi1hc3NlcnRpb24tZmFpbHVyZXMiLCAic2hvdy1hc3NlcnRpb24tZmFp
bHVyZXMtYnJlYWtwb2ludCIpOworICAgICAgICAgICAgaWYgKHRoaXMuX2Fzc2VydGlvbkZhaWx1
cmVzQnJlYWtwb2ludCkKKyAgICAgICAgICAgICAgICB0aGlzLmFkZEJyZWFrcG9pbnQodGhpcy5f
YXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50KTsKKworICAgICAgICAgICAgaWYgKFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50LnN1cHBvcnRzTWljcm90YXNrcygpKSB7CisgICAgICAgICAgICAgICAg
dGhpcy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnQgPSBsb2FkU3BlY2lhbEJyZWFrcG9pbnQodGhp
cy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnRTZXR0aW5nLCAiYnJlYWstb24tYWxsLW1pY3JvdGFz
a3MiLCAic2hvdy1hbGwtbWljcm90YXNrcy1icmVha3BvaW50Iik7CisgICAgICAgICAgICAgICAg
aWYgKHRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50KQorICAgICAgICAgICAgICAgICAgICB0
aGlzLmFkZEJyZWFrcG9pbnQodGhpcy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnQpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cyA9IGZhbHNl
OworICAgICAgICB9KSgpKTsKICAgICB9CiAKICAgICAvLyBUYXJnZXQKQEAgLTE1NCwxNiArMTkw
LDE2IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRz
IFdJLk9iamVjdAogICAgICAgICB0YXJnZXQuRGVidWdnZXJBZ2VudC5lbmFibGUoKTsKICAgICAg
ICAgdGFyZ2V0LkRlYnVnZ2VyQWdlbnQuc2V0QnJlYWtwb2ludHNBY3RpdmUodGhpcy5fYnJlYWtw
b2ludHNFbmFibGVkU2V0dGluZy52YWx1ZSk7CiAKLSAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAo
aU9TIDEzLjEpOiBEZWJ1Z2dlci5zZXRQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzIGRpZCBub3Qg
ZXhpc3QgeWV0LgotICAgICAgICBpZiAodGFyZ2V0Lmhhc0NvbW1hbmQoIkRlYnVnZ2VyLnNldFBh
dXNlT25EZWJ1Z2dlclN0YXRlbWVudHMiKSkKLSAgICAgICAgICAgIHRhcmdldC5EZWJ1Z2dlckFn
ZW50LnNldFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHMoIXRoaXMuX2RlYnVnZ2VyU3RhdGVtZW50
c0JyZWFrcG9pbnQuZGlzYWJsZWQpOworICAgICAgICBpZiAodGhpcy5fZGVidWdnZXJTdGF0ZW1l
bnRzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVNwZWNpYWxCcmVha3BvaW50
KHRoaXMuX2RlYnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9pbnQsIHRhcmdldCk7CiAKLSAgICAgICAg
dGFyZ2V0LkRlYnVnZ2VyQWdlbnQuc2V0UGF1c2VPbkV4Y2VwdGlvbnModGhpcy5fYnJlYWtPbkV4
Y2VwdGlvbnNTdGF0ZSk7Ci0gICAgICAgIHRhcmdldC5EZWJ1Z2dlckFnZW50LnNldFBhdXNlT25B
c3NlcnRpb25zKCF0aGlzLl9hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQuZGlzYWJsZWQpOwor
ICAgICAgICB0aGlzLl9zZXRQYXVzZU9uRXhjZXB0aW9ucyh0YXJnZXQpOwogCi0gICAgICAgIC8v
IENPTVBBVElCSUxJVFkgKGlPUyAxMyk6IERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VPbk1pY3JvdGFz
a3MgZGlkIG5vdCBleGlzdCB5ZXQuCi0gICAgICAgIGlmICh0YXJnZXQuaGFzQ29tbWFuZCgiRGVi
dWdnZXIuc2V0UGF1c2VPbk1pY3JvdGFza3MiKSkKLSAgICAgICAgICAgIHRhcmdldC5EZWJ1Z2dl
ckFnZW50LnNldFBhdXNlT25NaWNyb3Rhc2tzKCF0aGlzLl9hbGxNaWNyb3Rhc2tzQnJlYWtwb2lu
dC5kaXNhYmxlZCk7CisgICAgICAgIGlmICh0aGlzLl9hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9p
bnQpCisgICAgICAgICAgICB0aGlzLl91cGRhdGVTcGVjaWFsQnJlYWtwb2ludCh0aGlzLl9hc3Nl
cnRpb25GYWlsdXJlc0JyZWFrcG9pbnQsIHRhcmdldCk7CisKKyAgICAgICAgaWYgKHRoaXMuX2Fs
bE1pY3JvdGFza3NCcmVha3BvaW50KQorICAgICAgICAgICAgdGhpcy5fdXBkYXRlU3BlY2lhbEJy
ZWFrcG9pbnQodGhpcy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnQsIHRhcmdldCk7CiAKICAgICAg
ICAgdGFyZ2V0LkRlYnVnZ2VyQWdlbnQuc2V0QXN5bmNTdGFja1RyYWNlRGVwdGgodGhpcy5fYXN5
bmNTdGFja1RyYWNlRGVwdGhTZXR0aW5nLnZhbHVlKTsKIApAQCAtMzAxLDYgKzMzNywyMiBAQCBX
SS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmpl
Y3QKICAgICBnZXQgYWxsTWljcm90YXNrc0JyZWFrcG9pbnQoKSB7IHJldHVybiB0aGlzLl9hbGxN
aWNyb3Rhc2tzQnJlYWtwb2ludDsgfQogICAgIGdldCBicmVha3BvaW50cygpIHsgcmV0dXJuIHRo
aXMuX2JyZWFrcG9pbnRzOyB9CiAKKyAgICBjcmVhdGVBc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9p
bnQob3B0aW9ucyA9IHt9KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2Fz
c2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludCk7CisKKyAgICAgICAgdGhpcy5fYXNzZXJ0aW9uRmFp
bHVyZXNCcmVha3BvaW50ID0gdGhpcy5fY3JlYXRlU3BlY2lhbEJyZWFrcG9pbnQob3B0aW9ucyk7
CisgICAgICAgIHRoaXMuYWRkQnJlYWtwb2ludCh0aGlzLl9hc3NlcnRpb25GYWlsdXJlc0JyZWFr
cG9pbnQpOworICAgIH0KKworICAgIGNyZWF0ZUFsbE1pY3JvdGFza3NCcmVha3BvaW50KG9wdGlv
bnMgPSB7fSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9hbGxNaWNyb3Rh
c2tzQnJlYWtwb2ludCk7CisKKyAgICAgICAgdGhpcy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnQg
PSB0aGlzLl9jcmVhdGVTcGVjaWFsQnJlYWtwb2ludChvcHRpb25zKTsKKyAgICAgICAgdGhpcy5h
ZGRCcmVha3BvaW50KHRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50KTsKKyAgICB9CisKICAg
ICBicmVha3BvaW50Rm9ySWRlbnRpZmllcihpZCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9icmVha3BvaW50SWRNYXAuZ2V0KGlkKSB8fCBudWxsOwpAQCAtMzU4LDExICs0MTAsOSBAQCBX
SS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmpl
Y3QKIAogICAgICAgICB0aGlzLl9icmVha3BvaW50c0VuYWJsZWRTZXR0aW5nLnZhbHVlID0gZW5h
YmxlZDsKIAotICAgICAgICB0aGlzLl91cGRhdGVCcmVha09uRXhjZXB0aW9uc1N0YXRlKCk7Ci0K
ICAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpIHsKICAgICAgICAgICAgIHRh
cmdldC5EZWJ1Z2dlckFnZW50LnNldEJyZWFrcG9pbnRzQWN0aXZlKGVuYWJsZWQpOwotICAgICAg
ICAgICAgdGFyZ2V0LkRlYnVnZ2VyQWdlbnQuc2V0UGF1c2VPbkV4Y2VwdGlvbnModGhpcy5fYnJl
YWtPbkV4Y2VwdGlvbnNTdGF0ZSk7CisgICAgICAgICAgICB0aGlzLl9zZXRQYXVzZU9uRXhjZXB0
aW9ucyh0YXJnZXQpOwogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRzRW5hYmxlZERpZENo
YW5nZSk7CkBAIC02NDAsMjkgKzY5MCwyOCBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBE
ZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIGFkZEJyZWFrcG9pbnQoYnJl
YWtwb2ludCkKICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFu
Y2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJy
ZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCwgYnJlYWtwb2ludCk7
CiAgICAgICAgIGlmICghYnJlYWtwb2ludCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBpZiAoYnJlYWtwb2ludC5zcGVjaWFsKSB7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludEFkZGVkLCB7
YnJlYWtwb2ludH0pOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoYnJlYWtwb2lu
dC5zcGVjaWFsKQorICAgICAgICAgICAgdGhpcy5fdXBkYXRlU3BlY2lhbEJyZWFrcG9pbnQoYnJl
YWtwb2ludCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQuY29u
dGVudElkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludENvbnRlbnRJ
ZGVudGlmaWVyTWFwLmFkZChicmVha3BvaW50LmNvbnRlbnRJZGVudGlmaWVyLCBicmVha3BvaW50
KTsKKworICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQuc2NyaXB0SWRlbnRpZmllcikKKyAgICAg
ICAgICAgICAgICB0aGlzLl9icmVha3BvaW50U2NyaXB0SWRlbnRpZmllck1hcC5hZGQoYnJlYWtw
b2ludC5zY3JpcHRJZGVudGlmaWVyLCBicmVha3BvaW50KTsKKworICAgICAgICAgICAgdGhpcy5f
YnJlYWtwb2ludHMucHVzaChicmVha3BvaW50KTsKKworICAgICAgICAgICAgaWYgKCFicmVha3Bv
aW50LmRpc2FibGVkKQorICAgICAgICAgICAgICAgIHRoaXMuX3NldEJyZWFrcG9pbnQoYnJlYWtw
b2ludCk7CisKKyAgICAgICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpCisg
ICAgICAgICAgICAgICAgV0kub2JqZWN0U3RvcmVzLmJyZWFrcG9pbnRzLnB1dE9iamVjdChicmVh
a3BvaW50KTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChicmVha3BvaW50LmNvbnRlbnRJZGVu
dGlmaWVyKQotICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludENvbnRlbnRJZGVudGlmaWVyTWFw
LmFkZChicmVha3BvaW50LmNvbnRlbnRJZGVudGlmaWVyLCBicmVha3BvaW50KTsKLQotICAgICAg
ICBpZiAoYnJlYWtwb2ludC5zY3JpcHRJZGVudGlmaWVyKQotICAgICAgICAgICAgdGhpcy5fYnJl
YWtwb2ludFNjcmlwdElkZW50aWZpZXJNYXAuYWRkKGJyZWFrcG9pbnQuc2NyaXB0SWRlbnRpZmll
ciwgYnJlYWtwb2ludCk7Ci0KLSAgICAgICAgdGhpcy5fYnJlYWtwb2ludHMucHVzaChicmVha3Bv
aW50KTsKLQotICAgICAgICBpZiAoIWJyZWFrcG9pbnQuZGlzYWJsZWQpCi0gICAgICAgICAgICB0
aGlzLl9zZXRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotCi0gICAgICAgIGlmICghdGhpcy5fcmVz
dG9yaW5nQnJlYWtwb2ludHMpCi0gICAgICAgICAgICBXSS5vYmplY3RTdG9yZXMuYnJlYWtwb2lu
dHMucHV0T2JqZWN0KGJyZWFrcG9pbnQpOwotCiAgICAgICAgIHRoaXMuYWRkUHJvYmVzRm9yQnJl
YWtwb2ludChicmVha3BvaW50KTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludEFkZGVkLCB7YnJlYWtwb2lu
dH0pOwpAQCAtNjcwLDM2ICs3MTksNDYgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVi
dWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICByZW1vdmVCcmVha3BvaW50KGJy
ZWFrcG9pbnQpCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3Rh
bmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQpOworICAgICAgICBjb25zb2xlLmFzc2VydChi
cmVha3BvaW50IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQsIGJyZWFrcG9pbnQp
OwogICAgICAgICBpZiAoIWJyZWFrcG9pbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludC5yZW1vdmFibGUpOworICAgICAgICBjb25zb2xl
LmFzc2VydChicmVha3BvaW50LnJlbW92YWJsZSwgYnJlYWtwb2ludCk7CiAgICAgICAgIGlmICgh
YnJlYWtwb2ludC5yZW1vdmFibGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYg
KGJyZWFrcG9pbnQuc3BlY2lhbCkgewotICAgICAgICAgICAgYnJlYWtwb2ludC5kaXNhYmxlZCA9
IHRydWU7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5EZWJ1
Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludFJlbW92ZWQsIHticmVha3BvaW50fSk7Ci0gICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIGxldCBzcGVjaWFsID0gYnJlYWtwb2ludC5zcGVjaWFs
OworCisgICAgICAgIGlmICghc3BlY2lhbCkgeworICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2lu
dHMucmVtb3ZlKGJyZWFrcG9pbnQpOworCisgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5pZGVu
dGlmaWVyKQorICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZUJyZWFrcG9pbnQoYnJlYWtwb2lu
dCk7CisKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50LmNvbnRlbnRJZGVudGlmaWVyKQorICAg
ICAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRDb250ZW50SWRlbnRpZmllck1hcC5kZWxldGUo
YnJlYWtwb2ludC5jb250ZW50SWRlbnRpZmllciwgYnJlYWtwb2ludCk7CisKKyAgICAgICAgICAg
IGlmIChicmVha3BvaW50LnNjcmlwdElkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgdGhpcy5f
YnJlYWtwb2ludFNjcmlwdElkZW50aWZpZXJNYXAuZGVsZXRlKGJyZWFrcG9pbnQuc2NyaXB0SWRl
bnRpZmllciwgYnJlYWtwb2ludCk7CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9icmVha3Bv
aW50cy5yZW1vdmUoYnJlYWtwb2ludCk7Ci0KLSAgICAgICAgaWYgKGJyZWFrcG9pbnQuaWRlbnRp
ZmllcikKLSAgICAgICAgICAgIHRoaXMuX3JlbW92ZUJyZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0K
LSAgICAgICAgaWYgKGJyZWFrcG9pbnQuY29udGVudElkZW50aWZpZXIpCi0gICAgICAgICAgICB0
aGlzLl9icmVha3BvaW50Q29udGVudElkZW50aWZpZXJNYXAuZGVsZXRlKGJyZWFrcG9pbnQuY29u
dGVudElkZW50aWZpZXIsIGJyZWFrcG9pbnQpOwotCi0gICAgICAgIGlmIChicmVha3BvaW50LnNj
cmlwdElkZW50aWZpZXIpCi0gICAgICAgICAgICB0aGlzLl9icmVha3BvaW50U2NyaXB0SWRlbnRp
Zmllck1hcC5kZWxldGUoYnJlYWtwb2ludC5zY3JpcHRJZGVudGlmaWVyLCBicmVha3BvaW50KTsK
LQogICAgICAgICAvLyBEaXNhYmxlIHRoZSBicmVha3BvaW50IGZpcnN0LCBzbyByZW1vdmluZyBh
Y3Rpb25zIGRvZXNuJ3QgcmUtYWRkIHRoZSBicmVha3BvaW50LgogICAgICAgICBicmVha3BvaW50
LmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICAgYnJlYWtwb2ludC5jbGVhckFjdGlvbnMoKTsKIAot
ICAgICAgICBpZiAoIXRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzKQorICAgICAgICBpZiAoc3Bl
Y2lhbCkgeworICAgICAgICAgICAgc3dpdGNoIChicmVha3BvaW50KSB7CisgICAgICAgICAgICBj
YXNlIHRoaXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludDoKKyAgICAgICAgICAgICAgICB0
aGlzLl9hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnRTZXR0aW5nLnJlc2V0KCk7CisgICAgICAg
ICAgICAgICAgdGhpcy5fYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50ID0gbnVsbDsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSB0aGlzLl9hbGxNaWNyb3Rhc2tz
QnJlYWtwb2ludDoKKyAgICAgICAgICAgICAgICB0aGlzLl9hbGxNaWNyb3Rhc2tzQnJlYWtwb2lu
dFNldHRpbmcucmVzZXQoKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9hbGxNaWNyb3Rhc2tzQnJl
YWtwb2ludCA9IG51bGw7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzKQogICAgICAgICAg
ICAgV0kub2JqZWN0U3RvcmVzLmJyZWFrcG9pbnRzLmRlbGV0ZU9iamVjdChicmVha3BvaW50KTsK
IAogICAgICAgICB0aGlzLnJlbW92ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CkBA
IC0xMTM5LDYgKzExOTgsOTcgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJN
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBfc2V0UGF1
c2VPbkV4Y2VwdGlvbnModGFyZ2V0KQorICAgIHsKKyAgICAgICAgbGV0IGNvbW1hbmRBcmd1bWVu
dHMgPSB7CisgICAgICAgICAgICBzdGF0ZTogIm5vbmUiLAorICAgICAgICB9OworCisgICAgICAg
IGlmICh0aGlzLl9icmVha3BvaW50c0VuYWJsZWRTZXR0aW5nLnZhbHVlKSB7CisgICAgICAgICAg
ICBpZiAodGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQgJiYgIXRoaXMuX2FsbEV4Y2VwdGlv
bnNCcmVha3BvaW50LmRpc2FibGVkKSB7CisgICAgICAgICAgICAgICAgY29tbWFuZEFyZ3VtZW50
cy5zdGF0ZSA9ICJhbGwiOworICAgICAgICAgICAgICAgIGNvbW1hbmRBcmd1bWVudHMub3B0aW9u
cyA9IHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50Lm9wdGlvbnNUb1Byb3RvY29sKCk7Cisg
ICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQg
JiYgIXRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQuZGlzYWJsZWQpIHsKKyAgICAg
ICAgICAgICAgICBjb21tYW5kQXJndW1lbnRzLnN0YXRlID0gInVuY2F1Z2h0IjsKKyAgICAgICAg
ICAgICAgICBjb21tYW5kQXJndW1lbnRzLm9wdGlvbnMgPSB0aGlzLl91bmNhdWdodEV4Y2VwdGlv
bnNCcmVha3BvaW50Lm9wdGlvbnNUb1Byb3RvY29sKCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIE1hcmsgdGhlIHVuY2F1Z2h0IGJyZWFrcG9pbnQgYXMgdW5yZXNvbHZlZCBpZiAi
YWxsIiBhcyBpdCBpbmNsdWRlcyAidW5jYXVnaHQiLgorICAgICAgICAgICAgLy8gVGhhdCB3YXkg
aXQgaXMgY2xlYXIgaW4gdGhlIHVzZXIgaW50ZXJmYWNlIHRoYXQgdGhlIGJyZWFrcG9pbnQgaXMg
aWdub3JlZC4KKyAgICAgICAgICAgIGlmICh0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3Bv
aW50KQorICAgICAgICAgICAgICAgIHRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQu
cmVzb2x2ZWQgPSBjb21tYW5kQXJndW1lbnRzLnN0YXRlICE9PSAiYWxsIjsKKyAgICAgICAgfQor
CisgICAgICAgIHRhcmdldC5EZWJ1Z2dlckFnZW50LnNldFBhdXNlT25FeGNlcHRpb25zLmludm9r
ZShjb21tYW5kQXJndW1lbnRzKTsKKyAgICB9CisKKyAgICBfY3JlYXRlU3BlY2lhbEJyZWFrcG9p
bnQoc2VyaWFsaXplZEJyZWFrcG9pbnQgPSB7fSkKKyAgICB7CisgICAgICAgIGxldCBsb2NhdGlv
biA9IFdJLlNvdXJjZUNvZGVMb2NhdGlvbi5zcGVjaWFsQnJlYWtwb2ludExvY2F0aW9uOworICAg
ICAgICBzZXJpYWxpemVkQnJlYWtwb2ludC5saW5lTnVtYmVyID0gbG9jYXRpb24ubGluZU51bWJl
cjsKKyAgICAgICAgc2VyaWFsaXplZEJyZWFrcG9pbnQuY29sdW1uTnVtYmVyID0gbG9jYXRpb24u
Y29sdW1uTnVtYmVyOworCisgICAgICAgIHNlcmlhbGl6ZWRCcmVha3BvaW50LnJlc29sdmVkID0g
dHJ1ZTsKKworICAgICAgICByZXR1cm4gV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuZnJvbUpTT04o
c2VyaWFsaXplZEJyZWFrcG9pbnQpOworICAgIH0KKworICAgIF91cGRhdGVTcGVjaWFsQnJlYWtw
b2ludChicmVha3BvaW50LCBzcGVjaWZpY1RhcmdldCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGJyZWFrcG9pbnQuc3BlY2lhbCwgYnJlYWtwb2ludCk7CisKKyAgICAgICAgaWYgKCFi
cmVha3BvaW50LmRpc2FibGVkICYmICF0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cyAmJiAhdGhp
cy5icmVha3BvaW50c0Rpc2FibGVkVGVtcG9yYXJpbHkpCisgICAgICAgICAgICB0aGlzLmJyZWFr
cG9pbnRzRW5hYmxlZCA9IHRydWU7CisKKyAgICAgICAgbGV0IHRhcmdldHMgPSBzcGVjaWZpY1Rh
cmdldCA/IFtzcGVjaWZpY1RhcmdldF0gOiBXSS50YXJnZXRzOworCisgICAgICAgIGxldCBzZXR0
aW5nID0gbnVsbDsKKyAgICAgICAgbGV0IGNvbW1hbmQgPSBudWxsOworICAgICAgICBzd2l0Y2gg
KGJyZWFrcG9pbnQpIHsKKyAgICAgICAgY2FzZSB0aGlzLl9kZWJ1Z2dlclN0YXRlbWVudHNCcmVh
a3BvaW50OgorICAgICAgICAgICAgc2V0dGluZyA9IHRoaXMuX2RlYnVnZ2VyU3RhdGVtZW50c0Jy
ZWFrcG9pbnRTZXR0aW5nOworICAgICAgICAgICAgY29tbWFuZCA9ICJzZXRQYXVzZU9uRGVidWdn
ZXJTdGF0ZW1lbnRzIjsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgdGhpcy5f
YWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQ6CisgICAgICAgICAgICBzZXR0aW5nID0gdGhpcy5fYWxs
RXhjZXB0aW9uc0JyZWFrcG9pbnRTZXR0aW5nOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSB0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50OgorICAgICAgICAgICAg
c2V0dGluZyA9IHRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnRTZXR0aW5nOworICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSB0aGlzLl9hc3NlcnRpb25GYWlsdXJlc0Jy
ZWFrcG9pbnQ6CisgICAgICAgICAgICBzZXR0aW5nID0gdGhpcy5fYXNzZXJ0aW9uRmFpbHVyZXNC
cmVha3BvaW50U2V0dGluZzsKKyAgICAgICAgICAgIGNvbW1hbmQgPSAic2V0UGF1c2VPbkFzc2Vy
dGlvbnMiOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSB0aGlzLl9hbGxNaWNy
b3Rhc2tzQnJlYWtwb2ludDoKKyAgICAgICAgICAgIHNldHRpbmcgPSB0aGlzLl9hbGxNaWNyb3Rh
c2tzQnJlYWtwb2ludFNldHRpbmc7CisgICAgICAgICAgICBjb21tYW5kID0gInNldFBhdXNlT25N
aWNyb3Rhc2tzIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHNldHRpbmcpOworCisgICAgICAgIGlmICghc3BlY2lmaWNUYXJnZXQpCisgICAg
ICAgICAgICBzZXR0aW5nLnZhbHVlID0gYnJlYWtwb2ludC50b0pTT04oKTsKKworICAgICAgICBp
ZiAoY29tbWFuZCkgeworICAgICAgICAgICAgbGV0IGNvbW1hbmRBcmd1bWVudHMgPSB7CisgICAg
ICAgICAgICAgICAgZW5hYmxlZDogIWJyZWFrcG9pbnQuZGlzYWJsZWQsCisgICAgICAgICAgICB9
OworICAgICAgICAgICAgaWYgKCFicmVha3BvaW50LmRpc2FibGVkKQorICAgICAgICAgICAgICAg
IGNvbW1hbmRBcmd1bWVudHMub3B0aW9ucyA9IGJyZWFrcG9pbnQub3B0aW9uc1RvUHJvdG9jb2wo
KTsKKworICAgICAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIHRhcmdldHMpCisgICAgICAgICAg
ICAgICAgdGFyZ2V0LkRlYnVnZ2VyQWdlbnRbY29tbWFuZF0uaW52b2tlKGNvbW1hbmRBcmd1bWVu
dHMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtw
b2ludCA9PT0gdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQgfHwgYnJlYWtwb2ludCA9PT0g
dGhpcy5fdW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludCwgYnJlYWtwb2ludCk7CisgICAgICAg
ICAgICBmb3IgKGxldCB0YXJnZXQgb2YgdGFyZ2V0cykKKyAgICAgICAgICAgICAgICB0aGlzLl9z
ZXRQYXVzZU9uRXhjZXB0aW9ucyh0YXJnZXQpOworICAgICAgICB9CisgICAgfQorCiAgICAgX2Jy
ZWFrcG9pbnREaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICBp
ZiAodGhpcy5faWdub3JlQnJlYWtwb2ludERpc3BsYXlMb2NhdGlvbkRpZENoYW5nZUV2ZW50KQpA
QCAtMTE2Miw0NyArMTMxMiw5IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2Vy
TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgIF9icmVha3BvaW50RGlzYWJsZWRTdGF0ZURp
ZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIGxldCBicmVha3BvaW50ID0gZXZlbnQudGFy
Z2V0OwotICAgICAgICBzd2l0Y2ggKGJyZWFrcG9pbnQpIHsKLSAgICAgICAgY2FzZSB0aGlzLl9k
ZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50OgotICAgICAgICAgICAgaWYgKCFicmVha3BvaW50
LmRpc2FibGVkICYmICF0aGlzLmJyZWFrcG9pbnRzRGlzYWJsZWRUZW1wb3JhcmlseSkKLSAgICAg
ICAgICAgICAgICB0aGlzLmJyZWFrcG9pbnRzRW5hYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICB0
aGlzLl9kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUgPSAh
YnJlYWtwb2ludC5kaXNhYmxlZDsKLSAgICAgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50
YXJnZXRzKQotICAgICAgICAgICAgICAgIHRhcmdldC5EZWJ1Z2dlckFnZW50LnNldFBhdXNlT25E
ZWJ1Z2dlclN0YXRlbWVudHMoIWJyZWFrcG9pbnQuZGlzYWJsZWQpOwotICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIGNhc2UgdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQ6Ci0gICAg
ICAgICAgICBpZiAoIWJyZWFrcG9pbnQuZGlzYWJsZWQgJiYgIXRoaXMuYnJlYWtwb2ludHNEaXNh
YmxlZFRlbXBvcmFyaWx5KQotICAgICAgICAgICAgICAgIHRoaXMuYnJlYWtwb2ludHNFbmFibGVk
ID0gdHJ1ZTsKLSAgICAgICAgICAgIHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50RW5hYmxl
ZFNldHRpbmcudmFsdWUgPSAhYnJlYWtwb2ludC5kaXNhYmxlZDsKLSAgICAgICAgICAgIHRoaXMu
X3VwZGF0ZUJyZWFrT25FeGNlcHRpb25zU3RhdGUoKTsKLSAgICAgICAgICAgIGZvciAobGV0IHRh
cmdldCBvZiBXSS50YXJnZXRzKQotICAgICAgICAgICAgICAgIHRhcmdldC5EZWJ1Z2dlckFnZW50
LnNldFBhdXNlT25FeGNlcHRpb25zKHRoaXMuX2JyZWFrT25FeGNlcHRpb25zU3RhdGUpOwotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGNhc2UgdGhpcy5fdW5jYXVnaHRFeGNlcHRpb25z
QnJlYWtwb2ludDoKLSAgICAgICAgICAgIGlmICghYnJlYWtwb2ludC5kaXNhYmxlZCAmJiAhdGhp
cy5icmVha3BvaW50c0Rpc2FibGVkVGVtcG9yYXJpbHkpCi0gICAgICAgICAgICAgICAgdGhpcy5i
cmVha3BvaW50c0VuYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgdGhpcy5fdW5jYXVnaHRFeGNl
cHRpb25zQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nLnZhbHVlID0gIWJyZWFrcG9pbnQuZGlzYWJs
ZWQ7Ci0gICAgICAgICAgICB0aGlzLl91cGRhdGVCcmVha09uRXhjZXB0aW9uc1N0YXRlKCk7Ci0g
ICAgICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykKLSAgICAgICAgICAgICAg
ICB0YXJnZXQuRGVidWdnZXJBZ2VudC5zZXRQYXVzZU9uRXhjZXB0aW9ucyh0aGlzLl9icmVha09u
RXhjZXB0aW9uc1N0YXRlKTsKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBjYXNlIHRo
aXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludDoKLSAgICAgICAgICAgIGlmICghYnJlYWtw
b2ludC5kaXNhYmxlZCAmJiAhdGhpcy5icmVha3BvaW50c0Rpc2FibGVkVGVtcG9yYXJpbHkpCi0g
ICAgICAgICAgICAgICAgdGhpcy5icmVha3BvaW50c0VuYWJsZWQgPSB0cnVlOwotICAgICAgICAg
ICAgdGhpcy5fYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUg
PSAhYnJlYWtwb2ludC5kaXNhYmxlZDsKLSAgICAgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBX
SS50YXJnZXRzKQotICAgICAgICAgICAgICAgIHRhcmdldC5EZWJ1Z2dlckFnZW50LnNldFBhdXNl
T25Bc3NlcnRpb25zKCFicmVha3BvaW50LmRpc2FibGVkKTsKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICBjYXNlIHRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50OgotICAgICAgICAg
ICAgaWYgKCFicmVha3BvaW50LmRpc2FibGVkICYmICF0aGlzLmJyZWFrcG9pbnRzRGlzYWJsZWRU
ZW1wb3JhcmlseSkKLSAgICAgICAgICAgICAgICB0aGlzLmJyZWFrcG9pbnRzRW5hYmxlZCA9IHRy
dWU7Ci0gICAgICAgICAgICB0aGlzLl9hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludEVuYWJsZWRTZXR0
aW5nLnZhbHVlID0gIWJyZWFrcG9pbnQuZGlzYWJsZWQ7Ci0gICAgICAgICAgICBmb3IgKGxldCB0
YXJnZXQgb2YgV0kudGFyZ2V0cykKLSAgICAgICAgICAgICAgICB0YXJnZXQuRGVidWdnZXJBZ2Vu
dC5zZXRQYXVzZU9uTWljcm90YXNrcyghYnJlYWtwb2ludC5kaXNhYmxlZCk7CisgICAgICAgIGlm
IChicmVha3BvaW50LnNwZWNpYWwpIHsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVNwZWNpYWxC
cmVha3BvaW50KGJyZWFrcG9pbnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
QEAgLTEyMTksNiArMTMzMSwxMyBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dl
ck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICB7CiAgICAgICAgIGxldCBicmVha3BvaW50
ID0gZXZlbnQudGFyZ2V0OwogCisgICAgICAgIGlmIChicmVha3BvaW50LnNwZWNpYWwpIHsKKyAg
ICAgICAgICAgIHRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzID0gdHJ1ZTsKKyAgICAgICAgICAg
IHRoaXMuX3VwZGF0ZVNwZWNpYWxCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICAgICAg
dGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCiAgICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpCiAg
ICAgICAgICAgICBXSS5vYmplY3RTdG9yZXMuYnJlYWtwb2ludHMucHV0T2JqZWN0KGJyZWFrcG9p
bnQpOwogCkBAIC0xMzY0LDMzICsxNDgzLDYgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3Mg
RGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQWN0aXZlQ2FsbEZy
YW1lRGlkQ2hhbmdlKTsKICAgICB9CiAKLSAgICBfdXBkYXRlQnJlYWtPbkV4Y2VwdGlvbnNTdGF0
ZSgpCi0gICAgewotICAgICAgICBsZXQgc3RhdGUgPSAibm9uZSI7Ci0KLSAgICAgICAgaWYgKHRo
aXMuX2JyZWFrcG9pbnRzRW5hYmxlZFNldHRpbmcudmFsdWUpIHsKLSAgICAgICAgICAgIGlmICgh
dGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQuZGlzYWJsZWQpCi0gICAgICAgICAgICAgICAg
c3RhdGUgPSAiYWxsIjsKLSAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLl91bmNhdWdodEV4Y2Vw
dGlvbnNCcmVha3BvaW50LmRpc2FibGVkKQotICAgICAgICAgICAgICAgIHN0YXRlID0gInVuY2F1
Z2h0IjsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX2JyZWFrT25FeGNlcHRpb25zU3RhdGUg
PSBzdGF0ZTsKLQotICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7Ci0gICAgICAgIGNhc2UgImFsbCI6
Ci0gICAgICAgICAgICAvLyBNYXJrIHRoZSB1bmNhdWdodCBicmVha3BvaW50IGFzIHVucmVzb2x2
ZWQgc2luY2UgImFsbCIgaW5jbHVkZXMgInVuY2F1Z2h0Ii4KLSAgICAgICAgICAgIC8vIFRoYXQg
d2F5IGl0IGlzIGNsZWFyIGluIHRoZSB1c2VyIGludGVyZmFjZSB0aGF0IHRoZSBicmVha3BvaW50
IGlzIGlnbm9yZWQuCi0gICAgICAgICAgICB0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3Bv
aW50LnJlc29sdmVkID0gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAi
dW5jYXVnaHQiOgotICAgICAgICBjYXNlICJub25lIjoKLSAgICAgICAgICAgIC8vIE1hcmsgdGhl
IHVuY2F1Z2h0IGJyZWFrcG9pbnQgYXMgcmVzb2x2ZWQgYWdhaW4uCi0gICAgICAgICAgICB0aGlz
Ll91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50LnJlc29sdmVkID0gdHJ1ZTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgX2Fzc29jaWF0ZUJyZWFrcG9pbnRz
V2l0aFNvdXJjZUNvZGUoYnJlYWtwb2ludHMsIHNvdXJjZUNvZGUpCiAgICAgewogICAgICAgICB0
aGlzLl9pZ25vcmVCcmVha3BvaW50RGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlRXZlbnQgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0JyZWFrcG9pbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvQnJlYWtwb2ludC5qcwppbmRleCBmNTZmYTQwMWFlODAwNDdiNWZjNjJiN2E3OTc0ZTQyYjky
MjdlZTM2Li4xYWVmNzQ3ODljY2RjOWIzM2M1ZDhjN2JhYmE3ZjZiMGJlOGViZDJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQnJlYWtwb2lu
dC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQnJl
YWtwb2ludC5qcwpAQCAtMjY5LDYgKzI2OSwxNiBAQCBXSS5CcmVha3BvaW50ID0gY2xhc3MgQnJl
YWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXSS5CcmVha3BvaW50LkV2ZW50LkFjdGlvbnNEaWRDaGFuZ2UpOwogICAgIH0KIAor
ICAgIHJlc2V0KCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUs
IHRoaXMpOworCisgICAgICAgIHRoaXMuY29uZGl0aW9uID0gIiI7CisgICAgICAgIHRoaXMuaWdu
b3JlQ291bnQgPSAwOworICAgICAgICB0aGlzLmF1dG9Db250aW51ZSA9IGZhbHNlOworICAgICAg
ICB0aGlzLmNsZWFyQWN0aW9ucygpOworICAgIH0KKwogICAgIHJlbW92ZSgpCiAgICAgewogICAg
ICAgICBjb25zb2xlLmFzc2VydCh0aGlzLnJlbW92YWJsZSwgdGhpcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSmF2YVNjcmlwdEJyZWFr
cG9pbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSmF2
YVNjcmlwdEJyZWFrcG9pbnQuanMKaW5kZXggNTliNDkzMDk1MmMzZTA5OTAxOGFmNGI3NWUwZjY1
YWI0ZWIwMmZjMC4uYjE2ZDBmYWM2MjdmZGE0OGE4ZTcwMThiYWMxMjA4Y2YzNmY4MzY5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0phdmFT
Y3JpcHRCcmVha3BvaW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9KYXZhU2NyaXB0QnJlYWtwb2ludC5qcwpAQCAtMjUsMTAgKzI1LDExIEBACiAK
IFdJLkphdmFTY3JpcHRCcmVha3BvaW50ID0gY2xhc3MgSmF2YVNjcmlwdEJyZWFrcG9pbnQgZXh0
ZW5kcyBXSS5CcmVha3BvaW50CiB7Ci0gICAgY29uc3RydWN0b3Ioc291cmNlQ29kZUxvY2F0aW9u
LCB7Y29udGVudElkZW50aWZpZXIsIGRpc2FibGVkLCBjb25kaXRpb24sIGFjdGlvbnMsIGlnbm9y
ZUNvdW50LCBhdXRvQ29udGludWV9ID0ge30pCisgICAgY29uc3RydWN0b3Ioc291cmNlQ29kZUxv
Y2F0aW9uLCB7Y29udGVudElkZW50aWZpZXIsIHJlc29sdmVkLCBkaXNhYmxlZCwgY29uZGl0aW9u
LCBhY3Rpb25zLCBpZ25vcmVDb3VudCwgYXV0b0NvbnRpbnVlfSA9IHt9KQogICAgIHsKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQoc291cmNlQ29kZUxvY2F0aW9uIGluc3RhbmNlb2YgV0kuU291cmNl
Q29kZUxvY2F0aW9uKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIWNvbnRlbnRJZGVudGlmaWVy
IHx8IHR5cGVvZiBjb250ZW50SWRlbnRpZmllciA9PT0gInN0cmluZyIpOworICAgICAgICBjb25z
b2xlLmFzc2VydChzb3VyY2VDb2RlTG9jYXRpb24gaW5zdGFuY2VvZiBXSS5Tb3VyY2VDb2RlTG9j
YXRpb24sIHNvdXJjZUNvZGVMb2NhdGlvbik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFjb250
ZW50SWRlbnRpZmllciB8fCB0eXBlb2YgY29udGVudElkZW50aWZpZXIgPT09ICJzdHJpbmciLCBj
b250ZW50SWRlbnRpZmllcik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc29sdmVkID09PSB1
bmRlZmluZWQgfHwgdHlwZW9mIHJlc29sdmVkID09PSAiYm9vbGVhbiIsIHJlc29sdmVkKTsKIAog
ICAgICAgICBzdXBlcih7ZGlzYWJsZWQsIGNvbmRpdGlvbiwgYWN0aW9ucywgaWdub3JlQ291bnQs
IGF1dG9Db250aW51ZX0pOwogCkBAIC00NSwxMiArNDYsMjYgQEAgV0kuSmF2YVNjcmlwdEJyZWFr
cG9pbnQgPSBjbGFzcyBKYXZhU2NyaXB0QnJlYWtwb2ludCBleHRlbmRzIFdJLkJyZWFrcG9pbnQK
IAogICAgICAgICB0aGlzLl9zY3JpcHRJZGVudGlmaWVyID0gc291cmNlQ29kZSBpbnN0YW5jZW9m
IFdJLlNjcmlwdCA/IHNvdXJjZUNvZGUuaWQgOiBudWxsOwogICAgICAgICB0aGlzLl90YXJnZXQg
PSBzb3VyY2VDb2RlIGluc3RhbmNlb2YgV0kuU2NyaXB0ID8gc291cmNlQ29kZS50YXJnZXQgOiBu
dWxsOwotICAgICAgICB0aGlzLl9yZXNvbHZlZCA9IGZhbHNlOworICAgICAgICB0aGlzLl9yZXNv
bHZlZCA9ICEhcmVzb2x2ZWQ7CiAKICAgICAgICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuU291cmNlQ29kZUxvY2F0aW9uLkV2ZW50LkxvY2F0aW9uQ2hhbmdl
ZCwgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uTG9jYXRpb25DaGFuZ2VkLCB0aGlzKTsKICAgICAg
ICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuU291cmNlQ29k
ZUxvY2F0aW9uLkV2ZW50LkRpc3BsYXlMb2NhdGlvbkNoYW5nZWQsIHRoaXMuX3NvdXJjZUNvZGVM
b2NhdGlvbkRpc3BsYXlMb2NhdGlvbkNoYW5nZWQsIHRoaXMpOwogICAgIH0KIAorICAgIC8vIFN0
YXRpYworCisgICAgc3RhdGljIHN1cHBvcnRzTWljcm90YXNrcyhwYXJhbWV0ZXIpCisgICAgewor
ICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMpOiBEZWJ1Z2dlci5zZXRQYXVzZU9uTWlj
cm90YXNrcyBkaWQgbm90IGV4aXN0IHlldC4KKyAgICAgICAgcmV0dXJuIEluc3BlY3RvckJhY2tl
bmQuaGFzQ29tbWFuZCgiRGVidWdnZXIuc2V0UGF1c2VPbk1pY3JvdGFza3MiLCBwYXJhbWV0ZXIp
OworICAgIH0KKworICAgIHN0YXRpYyBzdXBwb3J0c0RlYnVnZ2VyU3RhdGVtZW50cyhwYXJhbWV0
ZXIpCisgICAgeworICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMuMSk6IERlYnVnZ2Vy
LnNldFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHMgZGlkIG5vdCBleGlzdCB5ZXQuCisgICAgICAg
IHJldHVybiBJbnNwZWN0b3JCYWNrZW5kLmhhc0NvbW1hbmQoIkRlYnVnZ2VyLnNldFBhdXNlT25E
ZWJ1Z2dlclN0YXRlbWVudHMiLCBwYXJhbWV0ZXIpOworICAgIH0KKwogICAgIC8vIEltcG9ydCAv
IEV4cG9ydAogCiAgICAgc3RhdGljIGZyb21KU09OKGpzb24pCkBAIC01OSw2ICs3NCw3IEBAIFdJ
LkphdmFTY3JpcHRCcmVha3BvaW50ID0gY2xhc3MgSmF2YVNjcmlwdEJyZWFrcG9pbnQgZXh0ZW5k
cyBXSS5CcmVha3BvaW50CiAgICAgICAgIHJldHVybiBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9p
bnQobmV3IFdJLlNvdXJjZUNvZGVMb2NhdGlvbihzb3VyY2VDb2RlLCBqc29uLmxpbmVOdW1iZXIg
fHwgMCwganNvbi5jb2x1bW5OdW1iZXIgfHwgMCksIHsKICAgICAgICAgICAgIC8vIFRoZSAndXJs
JyBmYWxsYmFjayBpcyBmb3IgdHJhbnNpdGlvbmluZyBmcm9tIG9sZGVyIGZyb250ZW5kcyBhbmQg
c2hvdWxkIGJlIHJlbW92ZWQuCiAgICAgICAgICAgICBjb250ZW50SWRlbnRpZmllcjoganNvbi5j
b250ZW50SWRlbnRpZmllciB8fCBqc29uLnVybCwKKyAgICAgICAgICAgIHJlc29sdmVkOiBqc29u
LnJlc29sdmVkLAogICAgICAgICAgICAgZGlzYWJsZWQ6IGpzb24uZGlzYWJsZWQsCiAgICAgICAg
ICAgICBjb25kaXRpb246IGpzb24uY29uZGl0aW9uLAogICAgICAgICAgICAgYWN0aW9uczoganNv
bi5hY3Rpb25zPy5tYXAoKGFjdGlvbkpTT04pID0+IFdJLkJyZWFrcG9pbnRBY3Rpb24uZnJvbUpT
T04oYWN0aW9uSlNPTikpIHx8IFtdLApAQCAtNzEsOSArODcsMTIgQEAgV0kuSmF2YVNjcmlwdEJy
ZWFrcG9pbnQgPSBjbGFzcyBKYXZhU2NyaXB0QnJlYWtwb2ludCBleHRlbmRzIFdJLkJyZWFrcG9p
bnQKICAgICB7CiAgICAgICAgIC8vIFRoZSBpZCwgc2NyaXB0SWRlbnRpZmllciwgdGFyZ2V0LCBh
bmQgcmVzb2x2ZWQgc3RhdGUgYXJlIHRpZWQgdG8gdGhlIGN1cnJlbnQgc2Vzc2lvbiwgc28gZG9u
J3QgaW5jbHVkZSB0aGVtIGZvciBzZXJpYWxpemF0aW9uLgogICAgICAgICBsZXQganNvbiA9IHN1
cGVyLnRvSlNPTihrZXkpOwotICAgICAgICBqc29uLmNvbnRlbnRJZGVudGlmaWVyID0gdGhpcy5f
Y29udGVudElkZW50aWZpZXI7Ci0gICAgICAgIGpzb24ubGluZU51bWJlciA9IHRoaXMuX3NvdXJj
ZUNvZGVMb2NhdGlvbi5saW5lTnVtYmVyOwotICAgICAgICBqc29uLmNvbHVtbk51bWJlciA9IHRo
aXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5OdW1iZXI7CisgICAgICAgIGlmICh0aGlzLl9j
b250ZW50SWRlbnRpZmllcikKKyAgICAgICAgICAgIGpzb24uY29udGVudElkZW50aWZpZXIgPSB0
aGlzLl9jb250ZW50SWRlbnRpZmllcjsKKyAgICAgICAgaWYgKGlzRmluaXRlKHRoaXMuX3NvdXJj
ZUNvZGVMb2NhdGlvbi5saW5lTnVtYmVyKSkKKyAgICAgICAgICAgIGpzb24ubGluZU51bWJlciA9
IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5saW5lTnVtYmVyOworICAgICAgICBpZiAoaXNGaW5p
dGUodGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51bWJlcikpCisgICAgICAgICAgICBq
c29uLmNvbHVtbk51bWJlciA9IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5OdW1iZXI7
CiAgICAgICAgIGlmIChrZXkgPT09IFdJLk9iamVjdFN0b3JlLnRvSlNPTlN5bWJvbCkKICAgICAg
ICAgICAgIGpzb25bV0kub2JqZWN0U3RvcmVzLmJyZWFrcG9pbnRzLmtleVBhdGhdID0gdGhpcy5f
Y29udGVudElkZW50aWZpZXIgKyAiOiIgKyB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24ubGluZU51
bWJlciArICI6IiArIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5OdW1iZXI7CiAgICAg
ICAgIHJldHVybiBqc29uOwpAQCAtMTM4LDExICsxNTcsMjEgQEAgV0kuSmF2YVNjcmlwdEJyZWFr
cG9pbnQgPSBjbGFzcyBKYXZhU2NyaXB0QnJlYWtwb2ludCBleHRlbmRzIFdJLkJyZWFrcG9pbnQK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAodGhpcykgewogICAgICAgICBjYXNlIFdJLmRlYnVnZ2Vy
TWFuYWdlci5kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50OgorICAgICAgICAgICAgLy8gQ09N
UEFUSUJJTElUWSAoaU9TIDE0KTogRGVidWdnZXIuc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50
cyBkaWQgbm90IGhhdmUgYW4gIm9wdGlvbnMiIHBhcmFtZXRlciB5ZXQuCisgICAgICAgICAgICBy
ZXR1cm4gV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuc3VwcG9ydHNEZWJ1Z2dlclN0YXRlbWVudHMo
Im9wdGlvbnMiKTsKKwogICAgICAgICBjYXNlIFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxFeGNlcHRp
b25zQnJlYWtwb2ludDoKICAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIudW5jYXVnaHRF
eGNlcHRpb25zQnJlYWtwb2ludDoKKyAgICAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAx
NCk6IERlYnVnZ2VyLnNldFBhdXNlT25FeGNlcHRpb25zIGRpZCBub3QgaGF2ZSBhbiAib3B0aW9u
cyIgcGFyYW1ldGVyIHlldC4KKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JCYWNrZW5kLmhh
c0NvbW1hbmQoIkRlYnVnZ2VyLnNldFBhdXNlT25FeGNlcHRpb25zIiwgIm9wdGlvbnMiKTsKKwog
ICAgICAgICBjYXNlIFdJLmRlYnVnZ2VyTWFuYWdlci5hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9p
bnQ6CisgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTQpOiBEZWJ1Z2dlci5zZXRQ
YXVzZU9uQXNzZXJ0aW9ucyBkaWQgbm90IGhhdmUgYW4gIm9wdGlvbnMiIHBhcmFtZXRlciB5ZXQu
CisgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yQmFja2VuZC5oYXNDb21tYW5kKCJEZWJ1Z2dl
ci5zZXRQYXVzZU9uQXNzZXJ0aW9ucyIsICJvcHRpb25zIik7CisKICAgICAgICAgY2FzZSBXSS5k
ZWJ1Z2dlck1hbmFnZXIuYWxsTWljcm90YXNrc0JyZWFrcG9pbnQ6Ci0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTQpOiBEZWJ1Z2dl
ci5zZXRQYXVzZU9uTWljcm90YXNrcyBkaWQgbm90IGhhdmUgYW4gIm9wdGlvbnMiIHBhcmFtZXRl
ciB5ZXQuCisgICAgICAgICAgICByZXR1cm4gV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuc3VwcG9y
dHNNaWNyb3Rhc2tzKCJvcHRpb25zIik7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTE5Myw3ICsyMjIsNyBAQCBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCA9IGNsYXNzIEph
dmFTY3JpcHRCcmVha3BvaW50IGV4dGVuZHMgV0kuQnJlYWtwb2ludAogCiAgICAgX2lzU3BlY2lh
bCgpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmlzRXF1
YWwobmV3IFdJLlNvdXJjZUNvZGVMb2NhdGlvbihudWxsLCBJbmZpbml0eSwgSW5maW5pdHkpKTsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5pc0VxdWFsKFdJLlNvdXJj
ZUNvZGVMb2NhdGlvbi5zcGVjaWFsQnJlYWtwb2ludExvY2F0aW9uKTsKICAgICB9CiAKICAgICBf
c291cmNlQ29kZUxvY2F0aW9uTG9jYXRpb25DaGFuZ2VkKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2JlU2V0LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2JlU2V0LmpzCmluZGV4
IDJlNmU0ZTljYTkwZDQwYTZlZDA2ZjMyNWExNmJjMjM3MjY3NTA2YzguLmI3ZThiMWM0NTk1OTZl
ZDZhY2E0NThkNDVlMmU1NmM4MGNmZGE0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9iZVNldC5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmVTZXQuanMKQEAgLTQyLDcgKzQyLDYg
QEAgV0kuUHJvYmVTZXQgPSBjbGFzcyBQcm9iZVNldCBleHRlbmRzIFdJLk9iamVjdAogCiAgICAg
ICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNl
RGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VDaGFuZ2VkLCB0aGlzKTsKICAgICAgICAgV0ku
UHJvYmUuYWRkRXZlbnRMaXN0ZW5lcihXSS5Qcm9iZS5FdmVudC5TYW1wbGVBZGRlZCwgdGhpcy5f
c2FtcGxlQ29sbGVjdGVkLCB0aGlzKTsKLSAgICAgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQu
YWRkRXZlbnRMaXN0ZW5lcihXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0
YXRlRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50UmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhp
cyk7CiAgICAgfQogCiAgICAgLy8gUHVibGljCkBAIC0xMDEsNyArMTAwLDYgQEAgV0kuUHJvYmVT
ZXQgPSBjbGFzcyBQcm9iZVNldCBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgIFdJLkZyYW1l
LnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdl
LCB0aGlzLl9tYWluUmVzb3VyY2VDaGFuZ2VkLCB0aGlzKTsKICAgICAgICAgV0kuUHJvYmUucmVt
b3ZlRXZlbnRMaXN0ZW5lcihXSS5Qcm9iZS5FdmVudC5TYW1wbGVBZGRlZCwgdGhpcy5fc2FtcGxl
Q29sbGVjdGVkLCB0aGlzKTsKLSAgICAgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucmVtb3Zl
RXZlbnRMaXN0ZW5lcihXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRl
RGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50UmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcyk7
CiAgICAgfQogCiAgICAgLy8gUHJpdmF0ZQpAQCAtMTMyLDE3ICsxMzAsMTEgQEAgV0kuUHJvYmVT
ZXQgPSBjbGFzcyBQcm9iZVNldCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLmRhdGFU
YWJsZS5hZGRTYW1wbGVGb3JQcm9iZShwcm9iZSwgc2FtcGxlKTsKICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuUHJvYmVTZXQuRXZlbnQuU2FtcGxlQWRkZWQsIHtwcm9i
ZSwgc2FtcGxlfSk7CiAgICAgfQotCi0gICAgX2JyZWFrcG9pbnRSZXNvbHZlZFN0YXRlRGlkQ2hh
bmdlKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V0kuUHJvYmVTZXQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSk7Ci0gICAgfQogfTsKIAog
V0kuUHJvYmVTZXQuRXZlbnQgPSB7CiAgICAgUHJvYmVBZGRlZDogInByb2JlLXNldC1wcm9iZS1h
ZGRlZCIsCiAgICAgUHJvYmVSZW1vdmVkOiAicHJvYmUtc2V0LXByb2JlLXJlbW92ZWQiLAotICAg
IFJlc29sdmVkU3RhdGVEaWRDaGFuZ2U6ICJwcm9iZS1zZXQtcmVzb2x2ZWQtc3RhdGUtZGlkLWNo
YW5nZSIsCiAgICAgU2FtcGxlQWRkZWQ6ICJwcm9iZS1zZXQtc2FtcGxlLWFkZGVkIiwKICAgICBT
YW1wbGVzQ2xlYXJlZDogInByb2JlLXNldC1zYW1wbGVzLWNsZWFyZWQiLAogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2Rl
TG9jYXRpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
U291cmNlQ29kZUxvY2F0aW9uLmpzCmluZGV4IDQwNTg1MGUxMTBiNzQ5MmEyZWM5MDIzNzNhNGI0
NWRlYmY1YWYyNmEuLmMxZDg4MmJiNmM4ZTZmMTVkNzc4ZjQ0YTYwZWNkNGFlZjJmMzE3MTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3Vy
Y2VDb2RlTG9jYXRpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1NvdXJjZUNvZGVMb2NhdGlvbi5qcwpAQCAtNDcsNiArNDcsMTMgQEAgV0kuU291
cmNlQ29kZUxvY2F0aW9uID0gY2xhc3MgU291cmNlQ29kZUxvY2F0aW9uIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgIHRoaXMuX3Jlc2V0TWFwcGVkTG9jYXRpb24oKTsKICAgICB9CiAKKyAgICAv
LyBTdGF0aWMKKworICAgIHN0YXRpYyBnZXQgc3BlY2lhbEJyZWFrcG9pbnRMb2NhdGlvbigpCisg
ICAgeworICAgICAgICByZXR1cm4gbmV3IFdJLlNvdXJjZUNvZGVMb2NhdGlvbihudWxsLCBJbmZp
bml0eSwgSW5maW5pdHkpOworICAgIH0KKwogICAgIC8vIFB1YmxpYwogCiAgICAgaXNFcXVhbChv
dGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0JyZWFrcG9pbnRQb3BvdmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQnJlYWtwb2ludFBvcG92ZXIuanMKaW5kZXggMjgyMjQxZTNjMDc5Mzc5YjFl
ZTgyNDJjOWU5ZTM3Y2U5MjkzN2E5ZC4uYmVkZjRmNjNjMDdlMzhmZjg1ZTNiYjgzNDZmMDEwMzNh
Njg2OWQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQnJlYWtwb2ludFBvcG92ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFBvcG92ZXIuanMKQEAgLTg2LDYgKzg2LDEwIEBA
IFdJLkJyZWFrcG9pbnRQb3BvdmVyID0gY2xhc3MgQnJlYWtwb2ludFBvcG92ZXIgZXh0ZW5kcyBX
SS5Qb3BvdmVyCiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5n
KCJEZWxldGUgQnJlYWtwb2ludCIpLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAgYnJlYWtwb2lu
dC5yZW1vdmUoKTsKICAgICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiUmVzZXQgQnJlYWtwb2ludCIs
ICJSZXNldCBCcmVha3BvaW50IEAgQnJlYWtwb2ludCBDb250ZXh0IE1lbnUiLCAiQ29udGV4dCBt
ZW51IGFjdGlvbiBmb3IgcmVzZXR0aW5nIHRoZSBicmVha3BvaW50IHRvIGl0cyBpbml0aWFsIGNv
bmZpZ3VyYXRpb24uIiksICgpID0+IHsKKyAgICAgICAgICAgICAgICBicmVha3BvaW50LnJlc2V0
KCk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChicmVha3BvaW50
IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQgJiYgYnJlYWtwb2ludC5zb3VyY2VD
b2RlTG9jYXRpb24uaGFzTWFwcGVkTG9jYXRpb24oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFRy
ZWVFbGVtZW50LmpzCmluZGV4IDUzZmFiMjMxNjhjMjJhZWU1NWI0OTI4YWJiZmZmNmYwMTg4OTFl
YWMuLjYyNTI1ZTNiNGUwODY0ZTE3YWQzMzg5M2Y1ZDE1NzM1MmI2OGFkMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVl
RWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9CcmVha3BvaW50VHJlZUVsZW1lbnQuanMKQEAgLTg0LDggKzg0LDEwIEBAIFdJLkJyZWFrcG9p
bnRUcmVlRWxlbWVudCA9IGNsYXNzIEJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRzIFdJLkdl
bmVyYWxUcmVlRWxlCiAKICAgICAgICAgaWYgKHRoaXMuX2JyZWFrcG9pbnQuZGlzYWJsZWQpCiAg
ICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuYmVlcCgpOwotICAgICAgICBlbHNlCisg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludC5kaXNhYmxlZCA9IHRy
dWU7CisgICAgICAgICAgICB0aGlzLl9icmVha3BvaW50LnJlc2V0KCk7CisgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VzTmF2
aWdhdGlvblNpZGViYXJQYW5lbC5qcwppbmRleCAzNmNmMjAxY2VjZmQyYjEyNmEwY2QyNjQ1MTE3
ODRiMjNjMzQzYzI5Li5iNzhmYmIxOGVjOWQ3YzdlYzlmYzMyZWNkYjNmMDBhN2Q2Y2UwMDc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3Vy
Y2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcwpAQCAt
MTYzLDEzICsxNjMsMTIgQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFz
cyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKIAogICAgICAgICAvLyBQ
cmV2ZW50IHRoZSBicmVha3BvaW50cyBsaXN0IGZyb20gYmVpbmcgdXNlZCBhcyB0aGUgc291cmNl
IG9mIHNlbGVjdGlvbiByZXN0b3JhdGlvbiAoZS5nLiBvbiByZWxvYWQgb3IgbmF2aWdhdGlvbiku
CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzVHJlZU91dGxpbmUgPSB0aGlzLmNyZWF0ZUNvbnRl
bnRUcmVlT3V0bGluZSh7aWdub3JlQ29va2llUmVzdG9yYXRpb246IHRydWV9KTsKLSAgICAgICAg
dGhpcy5fYnJlYWtwb2ludHNUcmVlT3V0bGluZS5hZGRFdmVudExpc3RlbmVyKFdJLlRyZWVPdXRs
aW5lLkV2ZW50LkVsZW1lbnRBZGRlZCwgdGhpcy5faGFuZGxlQnJlYWtwb2ludEVsZW1lbnRBZGRl
ZE9yUmVtb3ZlZCwgdGhpcyk7Ci0gICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzVHJlZU91dGxpbmUu
YWRkRXZlbnRMaXN0ZW5lcihXSS5UcmVlT3V0bGluZS5FdmVudC5FbGVtZW50UmVtb3ZlZCwgdGhp
cy5faGFuZGxlQnJlYWtwb2ludEVsZW1lbnRBZGRlZE9yUmVtb3ZlZCwgdGhpcyk7CisgICAgICAg
IHRoaXMuX2JyZWFrcG9pbnRzVHJlZU91dGxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXSS5UcmVlT3V0
bGluZS5FdmVudC5FbGVtZW50UmVtb3ZlZCwgdGhpcy5faGFuZGxlQnJlYWtwb2ludFRyZWVPdXRs
aW5lRWxlbWVudFJlbW92ZWQsIHRoaXMpOwogICAgICAgICB0aGlzLl9icmVha3BvaW50c1RyZWVP
dXRsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV0kuVHJlZU91dGxpbmUuRXZlbnQuU2VsZWN0aW9uRGlk
Q2hhbmdlLCB0aGlzLl9oYW5kbGVUcmVlU2VsZWN0aW9uRGlkQ2hhbmdlLCB0aGlzKTsKICAgICAg
ICAgdGhpcy5fYnJlYWtwb2ludHNUcmVlT3V0bGluZS5vbmRlbGV0ZSA9IChzZWxlY3RlZFRyZWVF
bGVtZW50KSA9PiB7CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChzZWxlY3RlZFRyZWVFbGVt
ZW50LnNlbGVjdGVkKTsKIAotICAgICAgICAgICAgaWYgKCFzZWxlY3RlZFRyZWVFbGVtZW50LnJl
cHJlc2VudGVkT2JqZWN0LnJlbW92YWJsZSkgeworICAgICAgICAgICAgaWYgKHNlbGVjdGVkVHJl
ZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50ICYmICFz
ZWxlY3RlZFRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0LnJlbW92YWJsZSkgewogICAgICAg
ICAgICAgICAgIGxldCB0cmVlRWxlbWVudFRvU2VsZWN0ID0gc2VsZWN0ZWRUcmVlRWxlbWVudC5u
ZXh0U2VsZWN0YWJsZVNpYmxpbmc7CiAgICAgICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50VG9T
ZWxlY3QpIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb21pdEZvY3VzID0gdHJ1ZTsKQEAg
LTM1NSwxOSArMzU0LDIwIEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xh
c3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgICAgICB9
LCB0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMy4x
KTogRGVidWdnZXIuc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cyBkaWQgbm90IGV4aXN0IHll
dC4KLSAgICAgICAgaWYgKEluc3BlY3RvckJhY2tlbmQuaGFzQ29tbWFuZCgiRGVidWdnZXIuc2V0
UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cyIpKQotICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5h
Z2VyLmFkZEJyZWFrcG9pbnQoV0kuZGVidWdnZXJNYW5hZ2VyLmRlYnVnZ2VyU3RhdGVtZW50c0Jy
ZWFrcG9pbnQpOworICAgICAgICBpZiAoV0kuZGVidWdnZXJNYW5hZ2VyLmRlYnVnZ2VyU3RhdGVt
ZW50c0JyZWFrcG9pbnQpCisgICAgICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50KFdJLmRlYnVn
Z2VyTWFuYWdlci5kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50KTsKIAotICAgICAgICBXSS5k
ZWJ1Z2dlck1hbmFnZXIuYWRkQnJlYWtwb2ludChXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsRXhjZXB0
aW9uc0JyZWFrcG9pbnQpOwotICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkQnJlYWtwb2lu
dChXSS5kZWJ1Z2dlck1hbmFnZXIudW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludCk7CisgICAg
ICAgIGlmIChXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQpCisgICAg
ICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50KFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxFeGNlcHRp
b25zQnJlYWtwb2ludCk7CiAKLSAgICAgICAgaWYgKFdJLnNldHRpbmdzLnNob3dBc3NlcnRpb25G
YWlsdXJlc0JyZWFrcG9pbnQudmFsdWUpCi0gICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIu
YWRkQnJlYWtwb2ludChXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3Bv
aW50KTsKKyAgICAgICAgaWYgKFdJLmRlYnVnZ2VyTWFuYWdlci51bmNhdWdodEV4Y2VwdGlvbnNC
cmVha3BvaW50KQorICAgICAgICAgICAgdGhpcy5fYWRkQnJlYWtwb2ludChXSS5kZWJ1Z2dlck1h
bmFnZXIudW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludCk7CiAKLSAgICAgICAgLy8gQ09NUEFU
SUJJTElUWSAoaU9TIDEzKTogRGVidWdnZXIuc2V0UGF1c2VPbk1pY3JvdGFza3MgZGlkIG5vdCBl
eGlzdCB5ZXQuCi0gICAgICAgIGlmIChJbnNwZWN0b3JCYWNrZW5kLmhhc0NvbW1hbmQoIkRlYnVn
Z2VyLnNldFBhdXNlT25NaWNyb3Rhc2tzIikgJiYgV0kuc2V0dGluZ3Muc2hvd0FsbE1pY3JvdGFz
a3NCcmVha3BvaW50LnZhbHVlKQotICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJy
ZWFrcG9pbnQoV0kuZGVidWdnZXJNYW5hZ2VyLmFsbE1pY3JvdGFza3NCcmVha3BvaW50KTsKKyAg
ICAgICAgaWYgKFdJLmRlYnVnZ2VyTWFuYWdlci5hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQp
CisgICAgICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50KFdJLmRlYnVnZ2VyTWFuYWdlci5hc3Nl
cnRpb25GYWlsdXJlc0JyZWFrcG9pbnQpOworCisgICAgICAgIGlmIChXSS5kZWJ1Z2dlck1hbmFn
ZXIuYWxsTWljcm90YXNrc0JyZWFrcG9pbnQpCisgICAgICAgICAgICB0aGlzLl9hZGRCcmVha3Bv
aW50KFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludCk7CiAKICAgICAg
ICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpCiAgICAgICAgICAgICB0aGlzLl9hZGRU
YXJnZXQodGFyZ2V0KTsKQEAgLTE5NTIsNzIgKzE5NTIsNDQgQEAgV0kuU291cmNlc05hdmlnYXRp
b25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRl
bmRzIFcKICAgICAgICAgY29uc29sZS5lcnJvcigiVW5rbm93biB0cmVlIGVsZW1lbnQiLCB0cmVl
RWxlbWVudCk7CiAgICAgfQogCi0gICAgX2hhbmRsZUJyZWFrcG9pbnRFbGVtZW50QWRkZWRPclJl
bW92ZWQoZXZlbnQpCisgICAgX2hhbmRsZUJyZWFrcG9pbnRUcmVlT3V0bGluZUVsZW1lbnRSZW1v
dmVkKGV2ZW50KQogICAgIHsKLSAgICAgICAgbGV0IHRyZWVFbGVtZW50ID0gZXZlbnQuZGF0YS5l
bGVtZW50OworICAgICAgICBsZXQgc2VsZWN0ZWRUcmVlRWxlbWVudCA9IHRoaXMuX2JyZWFrcG9p
bnRzVHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudDsKKyAgICAgICAgaWYgKCFzZWxlY3Rl
ZFRyZWVFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGxldCBzZXR0aW5n
ID0gbnVsbDsKLSAgICAgICAgc3dpdGNoICh0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCkg
ewotICAgICAgICBjYXNlIFdJLmRlYnVnZ2VyTWFuYWdlci5hc3NlcnRpb25GYWlsdXJlc0JyZWFr
cG9pbnQ6Ci0gICAgICAgICAgICBzZXR0aW5nID0gV0kuc2V0dGluZ3Muc2hvd0Fzc2VydGlvbkZh
aWx1cmVzQnJlYWtwb2ludDsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV0ku
ZGVidWdnZXJNYW5hZ2VyLmFsbE1pY3JvdGFza3NCcmVha3BvaW50OgotICAgICAgICAgICAgc2V0
dGluZyA9IFdJLnNldHRpbmdzLnNob3dBbGxNaWNyb3Rhc2tzQnJlYWtwb2ludDsKLSAgICAgICAg
ICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFJlcXVl
c3RzQnJlYWtwb2ludDoKLSAgICAgICAgICAgIHNldHRpbmcgPSBXSS5zZXR0aW5ncy5zaG93QWxs
UmVxdWVzdHNCcmVha3BvaW50OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoc2V0dGluZykKLSAgICAgICAgICAgIHNldHRpbmcudmFsdWUgPSAhIXRyZWVFbGVt
ZW50LnBhcmVudDsKLQotICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gV0kuVHJlZU91dGxpbmUu
RXZlbnQuRWxlbWVudFJlbW92ZWQpIHsKLSAgICAgICAgICAgIGxldCBzZWxlY3RlZFRyZWVFbGVt
ZW50ID0gdGhpcy5fYnJlYWtwb2ludHNUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50Owot
ICAgICAgICAgICAgaWYgKHNlbGVjdGVkVHJlZUVsZW1lbnQpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoc2VsZWN0ZWRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCA9PT0gV0kuZGVidWdnZXJN
YW5hZ2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludCB8fCAhc2VsZWN0ZWRUcmVlRWxlbWVu
dC5yZXByZXNlbnRlZE9iamVjdC5yZW1vdmFibGUpIHsKLSAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc2tpcFVucmV2ZWFsZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBjb25zdCBkb250
UG9wdWxhdGUgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBsZXQgdHJlZUVsZW1lbnRUb1Nl
bGVjdCA9IHNlbGVjdGVkVHJlZUVsZW1lbnQudHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQoc2tpcFVu
cmV2ZWFsZWQsIGRvbnRQb3B1bGF0ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0cmVlRWxl
bWVudFRvU2VsZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvbWl0Rm9jdXMg
PSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRCeVVzZXIgPSB0
cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUVsZW1lbnRUb1NlbGVjdC5zZWxlY3Qo
b21pdEZvY3VzLCBzZWxlY3RlZEJ5VXNlcik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB9CisgICAgICAgIC8vIFNlbGVjdCB0aGUgbmV4dCByZW1vdmFibGUgYnJlYWtw
b2ludCBpbnN0ZWFkIG9mIGEgbm9uLXJlbW92YWJsZSBicmVha3BvaW50LgorICAgICAgICBpZiAo
c2VsZWN0ZWRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkJyZWFr
cG9pbnQgJiYgIXNlbGVjdGVkVHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZhYmxl
KSB7CisgICAgICAgICAgICBjb25zdCBza2lwVW5yZXZlYWxlZCA9IHRydWU7CisgICAgICAgICAg
ICBjb25zdCBzdGF5V2l0aGluID0gbnVsbDsKKyAgICAgICAgICAgIGNvbnN0IGRvbnRQb3B1bGF0
ZSA9IHRydWU7CisgICAgICAgICAgICBsZXQgdHJlZUVsZW1lbnRUb1NlbGVjdCA9IHNlbGVjdGVk
VHJlZUVsZW1lbnQudHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQoc2tpcFVucmV2ZWFsZWQsIHN0YXlX
aXRoaW4sIGRvbnRQb3B1bGF0ZSk7CisgICAgICAgICAgICBpZiAodHJlZUVsZW1lbnRUb1NlbGVj
dCkgeworICAgICAgICAgICAgICAgIGNvbnN0IG9taXRGb2N1cyA9IHRydWU7CisgICAgICAgICAg
ICAgICAgY29uc3Qgc2VsZWN0ZWRCeVVzZXIgPSB0cnVlOworICAgICAgICAgICAgICAgIHRyZWVF
bGVtZW50VG9TZWxlY3Quc2VsZWN0KG9taXRGb2N1cywgc2VsZWN0ZWRCeVVzZXIpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQogCiAgICAgX3BvcHVsYXRlQ3JlYXRlQnJlYWtwb2lu
dENvbnRleHRNZW51KGNvbnRleHRNZW51KQogICAgIHsKLSAgICAgICAgbGV0IGFzc2VydGlvbkZh
aWx1cmVzQnJlYWtwb2ludFNob3duID0gV0kuc2V0dGluZ3Muc2hvd0Fzc2VydGlvbkZhaWx1cmVz
QnJlYWtwb2ludC52YWx1ZTsKLQogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRDaGVja2JveEl0
ZW0oV0kucmVwZWF0ZWRVSVN0cmluZy5hc3NlcnRpb25GYWlsdXJlcygpLCAoKSA9PiB7Ci0gICAg
ICAgICAgICBpZiAoYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50U2hvd24pCi0gICAgICAgICAg
ICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnQoV0kuZGVidWdnZXJNYW5h
Z2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludCk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3Bv
aW50LmRpc2FibGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LmFkZEJyZWFrcG9pbnQoV0kuZGVidWdnZXJNYW5hZ2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtw
b2ludCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sIGFzc2VydGlvbkZhaWx1cmVzQnJlYWtw
b2ludFNob3duKTsKKyAgICAgICAgICAgIGlmIChXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9u
RmFpbHVyZXNCcmVha3BvaW50KQorICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5h
c3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQucmVtb3ZlKCk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmNyZWF0ZUFzc2VydGlvbkZhaWx1cmVz
QnJlYWtwb2ludCgpOworICAgICAgICB9LCBXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFp
bHVyZXNCcmVha3BvaW50KTsKIAogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3Io
KTsKIAotICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMpOiBEZWJ1Z2dlci5zZXRQYXVz
ZU9uTWljcm90YXNrcyBkaWQgbm90IGV4aXN0IHlldC4KLSAgICAgICAgaWYgKEluc3BlY3RvckJh
Y2tlbmQuaGFzQ29tbWFuZCgiRGVidWdnZXIuc2V0UGF1c2VPbk1pY3JvdGFza3MiKSkgewotICAg
ICAgICAgICAgbGV0IGFsbE1pY3JvdGFza3NCcmVha3BvaW50U2hvd24gPSBXSS5zZXR0aW5ncy5z
aG93QWxsTWljcm90YXNrc0JyZWFrcG9pbnQudmFsdWU7Ci0KKyAgICAgICAgaWYgKFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50LnN1cHBvcnRzTWljcm90YXNrcygpKSB7CiAgICAgICAgICAgICBjb250
ZXh0TWVudS5hcHBlbmRDaGVja2JveEl0ZW0oV0kucmVwZWF0ZWRVSVN0cmluZy5hbGxNaWNyb3Rh
c2tzKCksICgpID0+IHsKLSAgICAgICAgICAgICAgICBpZiAoYWxsTWljcm90YXNrc0JyZWFrcG9p
bnRTaG93bikKLSAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUJy
ZWFrcG9pbnQoV0kuZGVidWdnZXJNYW5hZ2VyLmFsbE1pY3JvdGFza3NCcmVha3BvaW50KTsKLSAg
ICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5h
Z2VyLmFsbE1pY3JvdGFza3NCcmVha3BvaW50LmRpc2FibGVkID0gZmFsc2U7Ci0gICAgICAgICAg
ICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KFdJLmRlYnVnZ2VyTWFu
YWdlci5hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfSwgYWxsTWljcm90YXNrc0JyZWFrcG9pbnRTaG93bik7CisgICAgICAgICAgICAgICAg
aWYgKFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludCkKKyAgICAgICAg
ICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFsbE1pY3JvdGFza3NCcmVha3BvaW50LnJl
bW92ZSgpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgV0kuZGVi
dWdnZXJNYW5hZ2VyLmNyZWF0ZUFsbE1pY3JvdGFza3NCcmVha3BvaW50KCk7CisgICAgICAgICAg
ICB9LCBXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsTWljcm90YXNrc0JyZWFrcG9pbnQpOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5zdXBwb3J0c0V2ZW50QnJl
YWtwb2ludHMoKSB8fCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNFdmVudExpc3RlbmVy
QnJlYWtwb2ludHMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KaW5kZXggYmQ5YjExODRjODQ1NGI0NzNlNDM3NGMyMjhi
NGJkNjdhOWEzZjk3ZS4uYjg0YzczNzAxOWVjZTM0ZTE5MGMyY2U3NzNiZjdhMWQ5ZDU4NmRmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1
Z2dlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERl
YnVnZ2VyLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJXZWJGcmFtZUludGVybmFsLmgi
CiAjaW1wb3J0ICJXZWJTY3JpcHREZWJ1Z0RlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJWaWV3SW50
ZXJuYWwuaCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0JyZWFrcG9pbnQuaD4KICNpbXBvcnQg
PEphdmFTY3JpcHRDb3JlL0RlYnVnZ2VyQ2FsbEZyYW1lLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9KU0dsb2JhbE9iamVjdC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvU291cmNlUHJv
dmlkZXIuaD4KQEAgLTY1LDcgKzY2LDcgQEAgV2ViU2NyaXB0RGVidWdnZXI6OldlYlNjcmlwdERl
YnVnZ2VyKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAsIG1fY2FsbGlu
Z0RlbGVnYXRlKGZhbHNlKQogICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LT52bSgp
LCBnbG9iYWxPYmplY3QpCiB7Ci0gICAgc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShQYXVzZU9u
QWxsRXhjZXB0aW9ucyk7CisgICAgc2V0UGF1c2VPbkFsbEV4Y2VwdGlvbnNCcmVha3BvaW50KEpT
Qzo6QnJlYWtwb2ludDo6Y3JlYXRlKEpTQzo6bm9CcmVha3BvaW50SUQpKTsKICAgICBkZWFjdGl2
YXRlQnJlYWtwb2ludHMoKTsKICAgICBhdHRhY2goZ2xvYmFsT2JqZWN0KTsKIH0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBi
NTg5MmQ3ZGQzNjY1YWY5ZjZiMDk0MWI2MTdlMjA1M2VjYWY1ZGIwLi4zNWZmYzQ5YjA1NTlhYjM4
ZTA2ODc4OWNhNTJlMzI3YTIyY2FkMmU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDkt
MDIgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IGFsbG93IHNwZWNpYWwgSmF2YVNjcmlwdCBicmVha3BvaW50cyB0byBiZSBjb25maWd1
cmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU3
OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGlu
c3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZXMvYnJlYWtwb2ludC1vcHRpb25zLXV0aWxpdGllcy5q
czogQWRkZWQuCisgICAgICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyLkluc3BlY3Rv
clRlc3QuQnJlYWtwb2ludE9wdGlvbnMuYWRkVGVzdENhc2VzKToKKyAgICAgICAgKFRlc3RQYWdl
LnJlZ2lzdGVySW5pdGlhbGl6ZXIuSW5zcGVjdG9yVGVzdC5CcmVha3BvaW50T3B0aW9ucy5hZGRU
ZXN0Q2FzZXMucmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2Vy
L2JyZWFrLW9uLWV4Y2VwdGlvbi5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9i
cmVhay1vbi1leGNlcHRpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci9icmVhay1vbi11bmNhdWdodC1leGNlcHRpb24uaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvZGVidWdnZXIvYnJlYWstb24tdW5jYXVnaHQtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2V0UGF1c2VPbkFzc2VydGlvbnMuaHRtbDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2V0UGF1c2VPbkFzc2VydGlvbnMtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVzZU9uRGVidWdnZXJTdGF0
ZW1lbnRzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NldFBhdXNlT25EZWJ1
Z2dlclN0YXRlbWVudHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dl
ci9zZXRQYXVzZU9uTWljcm90YXNrcy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dl
ci9zZXRQYXVzZU9uTWljcm90YXNrcy1leHBlY3RlZC50eHQ6CisgICAgICAgIEFkZCB0ZXN0cyBm
b3IgZ2xvYmFsIEphdmFTY3JpcHQgYnJlYWtwb2ludCBjb25maWd1cmF0aW9uIG9wdGlvbnMuCisK
IDIwMjAtMDktMDIgIEthcmwgUmFja2xlciAgPHJhY2tsZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IHJkYXI6Ly82NzI4MTMxMCAoWyBSb3NldHRhIExheW91dCBUZXN0cyBdIFJFR1JFU1NJT04gKHIy
NjU2MzkpOiBbIEJpZyBTdXIgXSAxIGNhbnZhcyBsYXlvdXQgdGVzdCBpcyBhIGNvbnN0YW50IGZh
aWx1cmUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWst
b24tZXhjZXB0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9icmVhay1vbi1leGNlcHRpb24tZXhwZWN0ZWQudHh0CmluZGV4IGMzNzJmMmFlMGQ0NWVhOThk
ZjJlMDJmM2U0NDY4ZGU0OWJmMzU5ZTYuLjVmMWUzMWI5OWZhNzBlZWQ0NjUzNmZkYjQyNDA2NTYy
ZDUwNThjMDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVh
ay1vbi1leGNlcHRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9icmVhay1vbi1leGNlcHRpb24tZXhwZWN0ZWQudHh0CkBAIC0xMSw2ICsxMSwxMCBA
QCBDT05TT0xFIE1FU1NBR0U6IHRlc3RDYXRjaAogQ09OU09MRSBNRVNTQUdFOiB0aHJvd2luZyBU
ZXN0RXJyb3IKIENPTlNPTEUgTUVTU0FHRTogY2F0Y2ggVGVzdEVycm9yCiBDT05TT0xFIE1FU1NB
R0U6IERPTkUKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDEKK0NPTlNP
TEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDIKK0NPTlNPTEUgTUVTU0FHRTogQlJF
QUtQT0lOVCBBQ1RJT04gTE9HIDMKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04g
TE9HIDQKIENoZWNraW5nIHBhdXNlIGxvY2F0aW9ucyB3aGVuIHBhdXNpbmcgb24gYWxsIGV4Y2Vw
dGlvbnMuCiAKIApAQCAtMzQsMyArMzgsOTEgQEAgVW5jYXVnaHQgZXhjZXB0aW9uIGluIHRlc3Qg
cGFnZTogVGVzdEVycm9yIFticmVhay1vbi1leGNlcHRpb24tdGVzdHMuanM6OF0KIFBBU1M6IFNo
b3VsZCBwYXVzZSBmb3IgZXhjZXB0aW9uLgogUEFVU0UgQVQgZG9UaHJvdzo4OjIyCiAKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBCcmVha09uQW55RXhjZXB0aW9uLk9wdGlvbnMuQ29uZGl0aW9uCisK
K1NldHRpbmcgY29uZGl0aW9uIHRvICdmYWxzZScuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50
Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4K
K1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICd0cnVlJy4u
LgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBCcmVha09uQW55RXhjZXB0aW9uLk9wdGlvbnMuSWdub3JlQ291bnQKKworU2V0
dGluZyBpZ25vcmVDb3VudCB0byAnMicuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQ
QVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6
IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hv
dWxkIHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVz
ZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEJyZWFrT25BbnlFeGNlcHRpb24uT3B0aW9ucy5B
Y3Rpb24uTG9nCisKK0FkZGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91
bGQgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9p
bnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hv
dWxkIHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29udGlu
dWUuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBi
cmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcgbG9n
IGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVj
dXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworLS0gUnVu
bmluZyB0ZXN0IGNhc2U6IEJyZWFrT25BbnlFeGNlcHRpb24uT3B0aW9ucy5BY3Rpb25zLkV2YWx1
YXRlCisKK0FkZGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50
Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3Vs
ZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVh
a3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6
IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1
dG8tY29udGludWUuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQg
ZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0Vk
aXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFT
UzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBh
dXNlLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWst
b24tZXhjZXB0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWst
b24tZXhjZXB0aW9uLmh0bWwKaW5kZXggNWE1OWU1Yjg1Y2JiNzY4MzYxZTgzM2I0NmUyNjZkYTVm
MzY5YTcxNS4uMDc2ZjU3MTBkY2Q3MDI2ZjQ4MzcxZjgyMTNlMTk3NDBjZmYzNzZhNiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrLW9uLWV4Y2VwdGlvbi5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVhay1vbi1leGNlcHRp
b24uaHRtbApAQCAtMyw5ICszLDE4IEBACiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9odHRw
L3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9InJlc291cmNlcy9icmVhay1vbi1leGNlcHRpb24tdGVzdHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9icmVha3BvaW50LW9wdGlvbnMtdXRpbGl0aWVz
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiBUZXN0UGFnZS5hbGxvd1VuY2F1Z2h0RXhjZXB0aW9u
cyA9IHRydWU7CiAKK2Z1bmN0aW9uIHRyaWdnZXJFeGNlcHRpb24oKSB7CisgICAgdHJ5IHsKKyAg
ICAgICAgdGhyb3cgIlRlc3RFcnJvciI7CisgICAgfSBjYXRjaCB7IH0KKworICAgIFRlc3RQYWdl
LmRpc3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJUZXN0UGFnZS1leGNlcHRpb24iKTsKK30KKwogZnVu
Y3Rpb24gdGVzdCgpCiB7CiAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFsbEV4Y2VwdGlvbnNCcmVh
a3BvaW50LmRpc2FibGVkID0gZmFsc2U7CkBAIC01Niw2ICs2NSwxOSBAQCBmdW5jdGlvbiB0ZXN0
KCkKICAgICAgICAgZXhwcmVzc2lvbjogYHNldFRpbWVvdXQoKCkgPT4geyB0ZXN0Q2F0Y2goKTsg
fSlgLAogICAgIH0pOwogCisgICAgSW5zcGVjdG9yVGVzdC5CcmVha3BvaW50T3B0aW9ucy5hZGRU
ZXN0Q2FzZXMoc3VpdGUsIHsKKyAgICAgICAgY3JlYXRlQnJlYWtwb2ludCgpIHsKKyAgICAgICAg
ICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxFeGNlcHRpb25zQnJlYWtwb2ludC5kaXNhYmxlZCA9
IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxFeGNlcHRp
b25zQnJlYWtwb2ludDsKKyAgICAgICAgfSwKKyAgICAgICAgdHJpZ2dlckJyZWFrcG9pbnQoKSB7
CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHRyaWdnZXJFeGNlcHRpb24oKWApLAorICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXdhaXRFdmVudCgiVGVzdFBhZ2UtZXhjZXB0aW9uIiksCisg
ICAgICAgICAgICBdKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKwogICAgIHN1aXRlLnJ1blRlc3RD
YXNlc0FuZEZpbmlzaCgpOwogfQogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvYnJlYWstb24tdW5jYXVnaHQtZXhjZXB0aW9uLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVhay1vbi11bmNhdWdodC1leGNl
cHRpb24tZXhwZWN0ZWQudHh0CmluZGV4IGFiNjU2YzRmYTVkZWVkMDNiY2NlMDU5MTNkNTNkYjVl
YjE5NmYwMzkuLjYzYTNhMjQxYjY0NTk4NTdjY2I3NjAyOGNlODYxNjhkMmZkNGU2YzUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVhay1vbi11bmNhdWdodC1l
eGNlcHRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9icmVhay1vbi11bmNhdWdodC1leGNlcHRpb24tZXhwZWN0ZWQudHh0CkBAIC0xMSw2ICsxMSwx
MCBAQCBDT05TT0xFIE1FU1NBR0U6IHRlc3RDYXRjaAogQ09OU09MRSBNRVNTQUdFOiB0aHJvd2lu
ZyBUZXN0RXJyb3IKIENPTlNPTEUgTUVTU0FHRTogY2F0Y2ggVGVzdEVycm9yCiBDT05TT0xFIE1F
U1NBR0U6IERPTkUKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDEKK0NP
TlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDIKK0NPTlNPTEUgTUVTU0FHRTog
QlJFQUtQT0lOVCBBQ1RJT04gTE9HIDMKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJ
T04gTE9HIDQKIENoZWNraW5nIHBhdXNlIGxvY2F0aW9ucyB3aGVuIHBhdXNpbmcgb24gdW5jYXVn
aHQgZXhjZXB0aW9ucy4KIAogCkBAIC0zMywzICszNyw5MSBAQCBVbmNhdWdodCBleGNlcHRpb24g
aW4gdGVzdCBwYWdlOiBUZXN0RXJyb3IgW2JyZWFrLW9uLWV4Y2VwdGlvbi10ZXN0cy5qczo4XQog
LS0gUnVubmluZyB0ZXN0IGNhc2U6IEJyZWFrT25VbmNhdWdodEV4Y2VwdGlvbi5DYXVnaHRFeGNl
cHRpb24KIFBBU1M6IFNob3VsZCBub3QgcGF1c2UsIGV4Y2VwdGlvbiB3YXMgY2F1Z2h0LgogCist
LSBSdW5uaW5nIHRlc3QgY2FzZTogQnJlYWtPblVuY2F1Z2h0RXhjZXB0aW9uLk9wdGlvbnMuQ29u
ZGl0aW9uCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICdmYWxzZScuLi4KKworVHJpZ2dlcmluZyBi
cmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFr
cG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1NldHRpbmcgY29uZGl0aW9uIHRv
ICd0cnVlJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVz
ZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBCcmVha09uVW5jYXVnaHRFeGNlcHRpb24uT3B0aW9ucy5JZ25v
cmVDb3VudAorCitTZXR0aW5nIGlnbm9yZUNvdW50IHRvICcyJy4uLgorCitUcmlnZ2VyaW5nIGJy
ZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtw
b2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50
Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFT
UzogU2hvdWxkIHBhdXNlLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogQnJlYWtPblVuY2F1Z2h0
RXhjZXB0aW9uLk9wdGlvbnMuQWN0aW9uLkxvZworCitBZGRpbmcgbG9nIGFjdGlvbi4uLgorCitU
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQg
YWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKwor
VHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50
IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCitF
bmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFT
UzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBh
dXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
CitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBu
b3QgcGF1c2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBCcmVha09uVW5jYXVnaHRFeGNlcHRp
b24uT3B0aW9ucy5BY3Rpb25zLkV2YWx1YXRlCisKK0FkZGluZyBldmFsdWF0ZSBhY3Rpb24uLi4K
KworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3Bv
aW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rp
b24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBi
cmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0
ZSBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29udGludWUuLi4KKworVHJpZ2dlcmluZyBicmVh
a3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6
IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rp
b24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvYnJlYWstb24tdW5jYXVnaHQtZXhjZXB0aW9uLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWstb24tdW5jYXVnaHQtZXhjZXB0aW9uLmh0
bWwKaW5kZXggYzY2NTI1NjdmYjI1MDA4NDA4MjVhOGNmNGY3NzA4N2Y2MmU5MTU3Ny4uNTZkNWMw
MjU5ZDgwMjVlMDdlMzVmODFkYzAzNWE1NWUyNWVmNmY2YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrLW9uLXVuY2F1Z2h0LWV4Y2VwdGlvbi5odG1sCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVhay1vbi11bmNhdWdodC1leGNl
cHRpb24uaHRtbApAQCAtMyw5ICszLDE4IEBACiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9icmVhay1vbi1leGNlcHRpb24tdGVzdHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9icmVha3BvaW50LW9wdGlvbnMtdXRpbGl0
aWVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiBUZXN0UGFnZS5hbGxvd1VuY2F1Z2h0RXhjZXB0
aW9ucyA9IHRydWU7CiAKK2Z1bmN0aW9uIHRyaWdnZXJFeGNlcHRpb24oKSB7CisgICAgcXVldWVN
aWNyb3Rhc2soKCkgPT4geworICAgICAgICBUZXN0UGFnZS5kaXNwYXRjaEV2ZW50VG9Gcm9udGVu
ZCgiVGVzdFBhZ2UtZXhjZXB0aW9uIik7CisgICAgfSk7CisKKyAgICB0aHJvdyAiVGVzdEVycm9y
IjsKK30KKwogZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnVuY2F1
Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQuZGlzYWJsZWQgPSBmYWxzZTsKQEAgLTczLDYgKzgyLDE5
IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB9CiAgICAgfSk7CiAKKyAgICBJbnNwZWN0b3JU
ZXN0LkJyZWFrcG9pbnRPcHRpb25zLmFkZFRlc3RDYXNlcyhzdWl0ZSwgeworICAgICAgICBjcmVh
dGVCcmVha3BvaW50KCkgeworICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnVuY2F1Z2h0
RXhjZXB0aW9uc0JyZWFrcG9pbnQuZGlzYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVy
biBXSS5kZWJ1Z2dlck1hbmFnZXIudW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludDsKKyAgICAg
ICAgfSwKKyAgICAgICAgdHJpZ2dlckJyZWFrcG9pbnQoKSB7CisgICAgICAgICAgICByZXR1cm4g
UHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBh
Z2UoYHF1ZXVlTWljcm90YXNrKHRyaWdnZXJFeGNlcHRpb24pYCksCisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJUZXN0UGFnZS1leGNlcHRpb24iKSwKKyAgICAgICAg
ICAgIF0pOworICAgICAgICB9LAorICAgIH0pOworCiAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5k
RmluaXNoKCk7CiB9CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9yZXNvdXJjZXMvYnJlYWtwb2ludC1vcHRpb25zLXV0aWxpdGllcy5qcyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZXMvYnJlYWtwb2ludC1vcHRpb25z
LXV0aWxpdGllcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MTNmZWQxMWFlNmFlZGI0YmE3ZjJhZjBjNzNlMzFh
YjVhMGUzNjc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3Jlc291cmNlcy9icmVha3BvaW50LW9wdGlvbnMtdXRpbGl0aWVzLmpzCkBAIC0wLDAgKzEs
MjA0IEBACitUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyKCgpID0+IHsKKyAgICBJbnNwZWN0
b3JUZXN0LkJyZWFrcG9pbnRPcHRpb25zID0ge307CisKKyAgICBJbnNwZWN0b3JUZXN0LkJyZWFr
cG9pbnRPcHRpb25zLmFkZFRlc3RDYXNlcyA9IGZ1bmN0aW9uKHN1aXRlLCB7Y3JlYXRlQnJlYWtw
b2ludCwgdHJpZ2dlckJyZWFrcG9pbnR9KSB7CisgICAgICAgIGZ1bmN0aW9uIHJlbW92ZUJyZWFr
cG9pbnQoYnJlYWtwb2ludCkgeworICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQucmVtb3ZhYmxl
KQorICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQucmVtb3ZlKCk7CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICBicmVha3BvaW50LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBicmVha3BvaW50LnJlc2V0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgICAgICBuYW1lOiBzdWl0ZS5uYW1l
ICsgIi5PcHRpb25zLkNvbmRpdGlvbiIsCisgICAgICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNr
IHRoYXQgdGhlIGRlYnVnZ2VyIHdpbGwgbm90IHBhdXNlIHVubGVzcyB0aGUgYnJlYWtwb2ludCBo
YXMgYSB0cnV0aHkgYnJlYWtwb2ludCBjb25kaXRpb24uIiwKKyAgICAgICAgICAgIGFzeW5jIHRl
c3QoKSB7CisgICAgICAgICAgICAgICAgbGV0IHBhdXNlQ291bnQgPSAwOworCisgICAgICAgICAg
ICAgICAgbGV0IHBhdXNlZExpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAg
ICAgICAgICAgICAgICAgICsrcGF1c2VDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgV0kuZGVi
dWdnZXJNYW5hZ2VyLnJlc3VtZSgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICAgICAgbGV0IGJyZWFrcG9pbnQgPSBhd2FpdCBjcmVhdGVCcmVha3BvaW50KCk7CisKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJTZXR0aW5nIGNvbmRpdGlvbiB0byAnZmFsc2UnLi4uIik7CisgICAg
ICAgICAgICAgICAgYnJlYWtwb2ludC5jb25kaXRpb24gPSAiZmFsc2UiOworCisgICAgICAgICAg
ICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gNDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChpID09PSAzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5l
d2xpbmUoKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlNl
dHRpbmcgY29uZGl0aW9uIHRvICd0cnVlJy4uLiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWtwb2ludC5jb25kaXRpb24gPSAidHJ1ZSI7CisgICAgICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7
CisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRyaWdnZXJCcmVha3BvaW50KCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGkgPD0gMikKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgMCwgIlNob3VsZCBub3QgcGF1c2UuIik7
CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgaSAtIDIsICJTaG91bGQgcGF1c2UuIik7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmVtb3ZlQnJlYWtwb2ludChi
cmVha3BvaW50KTsKKworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVF
dmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHBhdXNlZExpc3Rl
bmVyKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0pOworCisgICAgICAgIHN1aXRlLmFkZFRl
c3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWU6IHN1aXRlLm5hbWUgKyAiLk9wdGlvbnMuSWdub3Jl
Q291bnQiLAorICAgICAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IHRoZSBkZWJ1Z2dl
ciB3aWxsIG5vdCBwYXVzZSB1bmxlc3MgdGhlIGJyZWFrcG9pbnQgaXMgaGl0IGF0IGxlYXN0IGFz
IG1hbnkgdGltZXMgYXMgaXQncyBgaWdub3JlQ291bnRgLiIsCisgICAgICAgICAgICBhc3luYyB0
ZXN0KCkgeworICAgICAgICAgICAgICAgIGxldCBwYXVzZUNvdW50ID0gMDsKKworICAgICAgICAg
ICAgICAgIGxldCBwYXVzZWRMaXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4geworICAg
ICAgICAgICAgICAgICAgICArK3BhdXNlQ291bnQ7CisgICAgICAgICAgICAgICAgICAgIFdJLmRl
YnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAg
ICAgICAgIGxldCBicmVha3BvaW50ID0gYXdhaXQgY3JlYXRlQnJlYWtwb2ludCgpOworCisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZygiU2V0dGluZyBpZ25vcmVDb3VudCB0byAnMicuLi4iKTsKKyAgICAg
ICAgICAgICAgICBicmVha3BvaW50Lmlnbm9yZUNvdW50ID0gMjsKKworICAgICAgICAgICAgICAg
IGZvciAobGV0IGkgPSAxOyBpIDw9NDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAgICAgICAgICAgICAgICAgICAgYXdh
aXQgdHJpZ2dlckJyZWFrcG9pbnQoKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoaSA8PSAy
KQorICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVz
ZUNvdW50LCAwLCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVz
ZUNvdW50LCBpIC0gMiwgIlNob3VsZCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICByZW1vdmVCcmVha3BvaW50KGJyZWFrcG9pbnQpOworCisgICAgICAgICAg
ICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LlBhdXNlZCwgcGF1c2VkTGlzdGVuZXIpOworICAgICAgICAgICAgfSwKKyAg
ICAgICAgfSk7CisKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFt
ZTogc3VpdGUubmFtZSArICIuT3B0aW9ucy5BY3Rpb24uTG9nIiwKKyAgICAgICAgICAgIGRlc2Ny
aXB0aW9uOiAiQ2hlY2sgdGhhdCBsb2cgYnJlYWtwb2ludCBhY3Rpb25zIGV4ZWN1dGUgd2hlbiB0
aGUgYnJlYWtwb2ludCBpcyBoaXQuIiwKKyAgICAgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAg
ICAgICAgICAgICAgbGV0IHBhdXNlQ291bnQgPSAwOworCisgICAgICAgICAgICAgICAgbGV0IHBh
dXNlZExpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVi
dWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAg
ICAgICsrcGF1c2VDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LnJlc3VtZSgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgbGV0IGJy
ZWFrcG9pbnQgPSBhd2FpdCBjcmVhdGVCcmVha3BvaW50KCk7CisKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJBZGRpbmcgbG9nIGFjdGlvbi4uLiIpOworICAgICAgICAgICAgICAgIGxldCBhY3Rpb24g
PSBuZXcgV0kuQnJlYWtwb2ludEFjdGlvbihXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUuTG9nLCB7
ZGF0YTogIkJSRUFLUE9JTlQgQUNUSU9OIExPRyAxIn0pOworICAgICAgICAgICAgICAgIGJyZWFr
cG9pbnQuYWRkQWN0aW9uKGFjdGlvbik7CisKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0g
MTsgaSA8PSA0OyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPiAxKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkVkaXRpbmcgbG9nIGFjdGlvbi4uLiIp
OworICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmRhdGEgPSBgQlJFQUtQT0lOVCBBQ1RJ
T04gTE9HICR7aX1gOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMykgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJFbmFibGluZyBh
dXRvLWNvbnRpbnVlLi4uIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2lu
dC5hdXRvQ29udGludWUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXds
aW5lKCk7CisKKyAgICAgICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2VzID0gW107CisKKyAgICAg
ICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2VBZGRlZExpc3RlbmVyID0gV0kuY29uc29sZU1hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQs
IChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXMucHVzaChldmVu
dC5kYXRhLm1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7Cisg
ICAgICAgICAgICAgICAgICAgIGF3YWl0IHRyaWdnZXJCcmVha3BvaW50KCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Db25z
b2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIG1lc3NhZ2VBZGRlZExpc3RlbmVyKTsKKwor
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQobWVzc2FnZXMuc29t
ZSgobWVzc2FnZSkgPT4gbWVzc2FnZS5tZXNzYWdlVGV4dCA9PT0gYWN0aW9uLmRhdGEpLCAiU2hv
dWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uIik7CisKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGkgPD0gMikKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwocGF1c2VDb3VudCwgaSwgIlNob3VsZCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChwYXVzZUNvdW50LCAyLCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICByZW1vdmVCcmVha3BvaW50KGJyZWFrcG9pbnQpOworCisgICAg
ICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVi
dWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgcGF1c2VkTGlzdGVuZXIpOworICAgICAgICAgICAg
fSwKKyAgICAgICAgfSk7CisKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAg
ICAgbmFtZTogc3VpdGUubmFtZSArICIuT3B0aW9ucy5BY3Rpb25zLkV2YWx1YXRlIiwKKyAgICAg
ICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBldmFsdWF0ZSBicmVha3BvaW50IGFjdGlv
bnMgZXhlY3V0ZSB3aGVuIHRoZSBicmVha3BvaW50IGlzIGhpdC4iLAorICAgICAgICAgICAgYXN5
bmMgdGVzdCgpIHsKKyAgICAgICAgICAgICAgICBsZXQgcGF1c2VDb3VudCA9IDA7CisKKyAgICAg
ICAgICAgICAgICBsZXQgcGF1c2VkTGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsK
KyAgICAgICAgICAgICAgICAgICAgKytwYXVzZUNvdW50OworICAgICAgICAgICAgICAgICAgICBX
SS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IGNyZWF0ZUJyZWFrcG9pbnQoKTsKKwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIkFkZGluZyBldmFsdWF0ZSBhY3Rpb24uLi4iKTsKKyAgICAg
ICAgICAgICAgICBsZXQgYWN0aW9uID0gbmV3IFdJLkJyZWFrcG9pbnRBY3Rpb24oV0kuQnJlYWtw
b2ludEFjdGlvbi5UeXBlLkV2YWx1YXRlLCB7ZGF0YTogIndpbmRvdy5CUkVBS1BPSU5UX0FDVElP
Tl9FVkFMVUFURSA9IDE7In0pOworICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuYWRkQWN0aW9u
KGFjdGlvbik7CisKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA0OyArK2kp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPiAxKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coIkVkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhY3Rpb24uZGF0YSA9IGB3aW5kb3cuQlJFQUtQT0lOVF9BQ1RJT05f
RVZBTFVBVEUgPSAke2l9O2A7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09PSAz
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkVuYWJs
aW5nIGF1dG8tY29udGludWUuLi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
a3BvaW50LmF1dG9Db250aW51ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uIik7CisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRyaWdn
ZXJCcmVha3BvaW50KCk7CisKKyAgICAgICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnRBY3Rp
b25FdmFsdWF0ZVJlc3VsdCA9IGF3YWl0IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHdp
bmRvdy5CUkVBS1BPSU5UX0FDVElPTl9FVkFMVUFURWApOworICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGJyZWFrcG9pbnRBY3Rpb25FdmFsdWF0ZVJlc3VsdCwg
aSwgIlNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLiIpOworCisgICAgICAgICAgICAg
ICAgICAgIGlmIChpIDw9IDIpCisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdEVxdWFsKHBhdXNlQ291bnQsIGksICJTaG91bGQgcGF1c2UuIik7CisgICAgICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwocGF1c2VDb3VudCwgMiwgIlNob3VsZCBub3QgcGF1c2UuIik7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgcmVtb3ZlQnJlYWtwb2ludChicmVha3BvaW50KTsK
KworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVy
KFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHBhdXNlZExpc3RlbmVyKTsKKyAgICAg
ICAgICAgIH0sCisgICAgICAgIH0pOworICAgIH07Cit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVzZU9uQXNzZXJ0aW9ucy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2V0UGF1c2VPbkFzc2VydGlvbnMtZXhw
ZWN0ZWQudHh0CmluZGV4IDk0ZjI5NTMzYzg3Yjg4NmYxYzEwYmEyMzg0ZDU4YzY3YzNhOTc0NzQu
LmRiNjMzMTUxMWNjNzJhMzllMDBhN2ZhNTU3MTVhMmJiMDhkZWI0MzYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVzZU9uQXNzZXJ0aW9ucy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NldFBhdXNlT25Bc3Nl
cnRpb25zLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDI1IEBACiBDT05TT0xFIE1FU1NBR0U6IEZh
aWxpbmcgYXNzZXJ0aW9uCiBDT05TT0xFIE1FU1NBR0U6IEZhaWxpbmcgYXNzZXJ0aW9uCitDT05T
T0xFIE1FU1NBR0U6IEZhaWxpbmcgYXNzZXJ0aW9uCitDT05TT0xFIE1FU1NBR0U6IEZhaWxpbmcg
YXNzZXJ0aW9uCitDT05TT0xFIE1FU1NBR0U6IEZhaWxpbmcgYXNzZXJ0aW9uCitDT05TT0xFIE1F
U1NBR0U6IEZhaWxpbmcgYXNzZXJ0aW9uCitDT05TT0xFIE1FU1NBR0U6IEZhaWxpbmcgYXNzZXJ0
aW9uCitDT05TT0xFIE1FU1NBR0U6IEZhaWxpbmcgYXNzZXJ0aW9uCitDT05TT0xFIE1FU1NBR0U6
IEZhaWxpbmcgYXNzZXJ0aW9uCitDT05TT0xFIE1FU1NBR0U6IEZhaWxpbmcgYXNzZXJ0aW9uCitD
T05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAxCitDT05TT0xFIE1FU1NBR0U6
IEZhaWxpbmcgYXNzZXJ0aW9uCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExP
RyAyCitDT05TT0xFIE1FU1NBR0U6IEZhaWxpbmcgYXNzZXJ0aW9uCitDT05TT0xFIE1FU1NBR0U6
IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAzCitDT05TT0xFIE1FU1NBR0U6IEZhaWxpbmcgYXNzZXJ0
aW9uCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyA0CitDT05TT0xFIE1F
U1NBR0U6IEZhaWxpbmcgYXNzZXJ0aW9uCitDT05TT0xFIE1FU1NBR0U6IEZhaWxpbmcgYXNzZXJ0
aW9uCitDT05TT0xFIE1FU1NBR0U6IEZhaWxpbmcgYXNzZXJ0aW9uCitDT05TT0xFIE1FU1NBR0U6
IEZhaWxpbmcgYXNzZXJ0aW9uCitDT05TT0xFIE1FU1NBR0U6IEZhaWxpbmcgYXNzZXJ0aW9uCiBE
ZWJ1Z2dlci5zZXRQYXVzZU9uQXNzZXJ0aW9ucwogCiAKQEAgLTEwLDMgKzMwLDkxIEBAIFBBU1M6
IFNob3VsZCBub3QgcGF1c2UuCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc2V0UGF1
c2VPbkFzc2VydGlvbnMuRW5hYmxlZAogUEFTUzogU2hvdWxkIHBhdXNlZC4KIAorLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlT25Bc3NlcnRpb25zLk9wdGlvbnMuQ29uZGl0
aW9uCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICdmYWxzZScuLi4KKworVHJpZ2dlcmluZyBicmVh
a3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9p
bnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICd0
cnVlJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4K
KworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5zZXRQYXVzZU9uQXNzZXJ0aW9ucy5PcHRpb25zLkln
bm9yZUNvdW50CisKK1NldHRpbmcgaWdub3JlQ291bnQgdG8gJzInLi4uCisKK1RyaWdnZXJpbmcg
YnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVh
a3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9p
bnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQ
QVNTOiBTaG91bGQgcGF1c2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5zZXRQ
YXVzZU9uQXNzZXJ0aW9ucy5PcHRpb25zLkFjdGlvbi5Mb2cKKworQWRkaW5nIGxvZyBhY3Rpb24u
Li4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVh
a3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9u
Li4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJl
YWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlv
bi4uLgorRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQu
Li4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxk
IG5vdCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtw
b2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBT
aG91bGQgbm90IHBhdXNlLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVidWdnZXIuc2V0UGF1
c2VPbkFzc2VydGlvbnMuT3B0aW9ucy5BY3Rpb25zLkV2YWx1YXRlCisKK0FkZGluZyBldmFsdWF0
ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhl
Y3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBl
dmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91
bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRp
dGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29udGludWUuLi4KKworVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFj
dGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9u
Li4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJl
YWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2V0UGF1c2VPbkFzc2VydGlvbnMuaHRtbCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVzZU9uQXNzZXJ0aW9ucy5odG1s
CmluZGV4IDIzMTYyZDU0MjFlOTMyMzRiYTdlMGM4MGViNWZmOGY2M2I4MDBlMjIuLjc2NDc3OTY5
NGQwZDdmZGU3MzQ2OGZjNGU3YTAwZWQ1YTZlMjdjMDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVzZU9uQXNzZXJ0aW9ucy5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVzZU9uQXNzZXJ0aW9ucy5odG1sCkBAIC0y
LDEwICsyLDEzIEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2JyZWFrcG9pbnQtb3B0aW9ucy11dGlsaXRpZXMuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdD4KIGZ1bmN0aW9uIHRyaWdnZXJBc3NlcnRpb25zKCkgewogICAgIGNvbnNv
bGUuYXNzZXJ0KHRydWUsICJQYXNzaW5nIGFzc2VydGlvbiIpOwogICAgIGNvbnNvbGUuYXNzZXJ0
KGZhbHNlLCAiRmFpbGluZyBhc3NlcnRpb24iKTsKKworICAgIFRlc3RQYWdlLmRpc3BhdGNoRXZl
bnRUb0Zyb250ZW5kKCJUZXN0UGFnZS1hc3NlcnRpb25zIik7CiB9CiAKIGZ1bmN0aW9uIHRlc3Qo
KQpAQCAtMTksNyArMjIsOCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgbmFtZTogIkRlYnVn
Z2VyLnNldFBhdXNlT25Bc3NlcnRpb25zLkRpc2FibGVkIiwKICAgICAgICAgZGVzY3JpcHRpb246
ICJEbyBub3QgcGF1c2Ugb24gYXNzZXJ0aW9ucyB3aGVuIGRpc2FibGVkLiIsCiAgICAgICAgIHRl
c3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYXNz
ZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0KFdJLmRlYnVnZ2VyTWFuYWdlci5hc3NlcnRpb25GYWlsdXJlc0Jy
ZWFrcG9pbnQsICJTaG91bGQgYWxyZWFkeSBoYXZlIGFzc2VydGlvbiBmYWlsdXJlcyBicmVha3Bv
aW50LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoV0kuZGVidWdnZXJNYW5h
Z2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludC5kaXNhYmxlZCwgIkFzc2VydGlvbiBmYWls
dXJlcyBicmVha3BvaW50IHNob3VsZCBiZSBkaXNhYmxlZC4iKTsKIAogICAgICAgICAgICAgbGV0
IGxpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJ
LkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4gewogICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZmFpbCgiU2hvdWxkIG5vdCBoYXZlIHBhdXNlZC4iKTsKQEAgLTI5
LDYgKzMzLDEwIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
dmFsdWF0ZUluUGFnZSgidHJpZ2dlckFzc2VydGlvbnMoKSIsICgpID0+IHsKICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIlNob3VsZCBub3QgcGF1c2UuIik7CiAgICAgICAgICAg
ICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LlBhdXNlZCwgbGlzdGVuZXIpOworCisgICAgICAgICAgICAgICAgV0kuZGVi
dWdnZXJNYW5hZ2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludC5yZW1vdmUoKTsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydCghV0kuZGVidWdnZXJNYW5hZ2VyLmFzc2Vy
dGlvbkZhaWx1cmVzQnJlYWtwb2ludCwgIlNob3VsZCBoYXZlIGRlc3Ryb3llZCBhc3NlcnRpb24g
ZmFpbHVyZXMgYnJlYWtwb2ludC4iKTsKKwogICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9CkBAIC0zOCw3ICs0Niw5IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICBuYW1lOiAiRGVidWdnZXIuc2V0UGF1c2VPbkFzc2VydGlvbnMuRW5hYmxlZCIs
CiAgICAgICAgIGRlc2NyaXB0aW9uOiAiUGF1c2Ugb24gYXNzZXJ0aW9ucyB3aGVuIGVuYWJsZWQu
IiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgIFdJLmRlYnVn
Z2VyTWFuYWdlci5hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQuZGlzYWJsZWQgPSBmYWxzZTsK
KyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5jcmVhdGVBc3NlcnRpb25GYWlsdXJlc0Jy
ZWFrcG9pbnQoKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KFdJLmRlYnVnZ2Vy
TWFuYWdlci5hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQsICJTaG91bGQgaGF2ZSBjcmVhdGVk
IGFzc2VydGlvbiBmYWlsdXJlcyBicmVha3BvaW50LiIpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnQoIVdJLmRlYnVnZ2VyTWFuYWdlci5hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9p
bnQuZGlzYWJsZWQsICJBc3NlcnRpb24gZmFpbHVyZXMgYnJlYWtwb2ludCBzaG91bGQgYmUgZW5h
YmxlZC4iKTsKIAogICAgICAgICAgICAgbGV0IGRpZFBhdXNlID0gZmFsc2U7CiAgICAgICAgICAg
ICBsZXQgbGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVu
ZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CkBAIC01MCwx
MSArNjAsMjggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKCJ0cmlnZ2VyQXNzZXJ0aW9ucygpIiwgKCkgPT4gewogICAgICAgICAgICAg
ICAgIGlmICghZGlkUGF1c2UpCiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZmFp
bCgiU2hvdWxkIGhhdmUgcGF1c2VkLiIpOworCisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJN
YW5hZ2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludC5yZW1vdmUoKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydCghV0kuZGVidWdnZXJNYW5hZ2VyLmFzc2VydGlvbkZh
aWx1cmVzQnJlYWtwb2ludCwgIlNob3VsZCBoYXZlIGRlc3Ryb3llZCBhc3NlcnRpb24gZmFpbHVy
ZXMgYnJlYWtwb2ludC4iKTsKKwogICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICB9CiAgICAgfSk7CiAKKyAgICBJbnNwZWN0b3JUZXN0LkJyZWFrcG9p
bnRPcHRpb25zLmFkZFRlc3RDYXNlcyhzdWl0ZSwgeworICAgICAgICBjcmVhdGVCcmVha3BvaW50
KCkgeworICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmNyZWF0ZUFzc2VydGlvbkZhaWx1
cmVzQnJlYWtwb2ludCgpOworICAgICAgICAgICAgcmV0dXJuIFdJLmRlYnVnZ2VyTWFuYWdlci5h
c3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQ7CisgICAgICAgIH0sCisgICAgICAgIHRyaWdnZXJC
cmVha3BvaW50KCkgeworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoIlRlc3RQYWdlLWFzc2VydGlvbnMiKSwK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0cmlnZ2VyQXNz
ZXJ0aW9ucygpYCksCisgICAgICAgICAgICBdKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKwogICAg
IHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogfQogPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVt
ZW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2V0UGF1
c2VPbkRlYnVnZ2VyU3RhdGVtZW50cy1leHBlY3RlZC50eHQKaW5kZXggODA2Njk1NDgyNjQwMzBj
NTJmZGVlOWRiN2ZjMzVkNzAzMGFjM2Q1Zi4uNmMxYTI5MmEzOGZhNzZmM2RmM2Q4ZDg1MWY1MmQ4
YWM0NTVmMjUyYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Nl
dFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzLWV4cGVjdGVk
LnR4dApAQCAtMSwzICsxLDcgQEAKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04g
TE9HIDEKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDIKK0NPTlNPTEUg
TUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDMKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQ
T0lOVCBBQ1RJT04gTE9HIDQKIFRlc3RzIGZvciBEZWJ1Z2dlci5zZXRQYXVzZU9uRGVidWdnZXJT
dGF0ZW1lbnRzIGNvbW1hbmQuCiAKIApAQCAtOCwzICsxMiw5MSBAQCBQQVNTOiBTaG91bGQgbm90
IHBhdXNlLgogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlT25EZWJ1Z2dl
clN0YXRlbWVudHMuRW5hYmxlZAogUEFTUzogU2hvdWxkIHBhdXNlZC4KIAorLS0gUnVubmluZyB0
ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHMuT3B0aW9ucy5D
b25kaXRpb24KKworU2V0dGluZyBjb25kaXRpb24gdG8gJ2ZhbHNlJy4uLgorCitUcmlnZ2VyaW5n
IGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworU2V0dGluZyBjb25kaXRpb24g
dG8gJ3RydWUnLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBh
dXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKwor
LS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVu
dHMuT3B0aW9ucy5JZ25vcmVDb3VudAorCitTZXR0aW5nIGlnbm9yZUNvdW50IHRvICcyJy4uLgor
CitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1Ry
aWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dl
cmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
RGVidWdnZXIuc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cy5PcHRpb25zLkFjdGlvbi5Mb2cK
KworQWRkaW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNT
OiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4K
KworRWRpdGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFT
UzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2Uu
CisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLgorCitU
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQg
YWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4u
CisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtw
b2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogRGVidWdnZXIuc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cy5PcHRpb25zLkFjdGlv
bnMuRXZhbHVhdGUKKworQWRkaW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJy
ZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFT
UzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2Vy
aW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9u
LgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorRW5h
YmxpbmcgYXV0by1jb250aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6
IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVz
ZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50
Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3Vs
ZCBub3QgcGF1c2UuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9zZXRQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cy5odG1sCmluZGV4IGQ4OGMw
OTA5OWRhNDQ4YWVhZDI5YzlkMDNhMzMzMTAyYzJlYzFhNGEuLmNhMTEyYTFhYzAwZGEyN2E5ZTJj
ZDg5ZTM4MWM3MDUxZTEyMTQ4NGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9zZXRQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NldFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHMuaHRtbApA
QCAtMiw5ICsyLDEyIEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JyZWFrcG9pbnQtb3B0aW9ucy11dGlsaXRpZXMuanMiPjwv
c2NyaXB0PgogPHNjcmlwdD4KIGZ1bmN0aW9uIHRyaWdnZXJEZWJ1Z2dlclN0YXRlbWVudCgpIHsK
ICAgICBkZWJ1Z2dlcjsKKworICAgIFRlc3RQYWdlLmRpc3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJU
ZXN0UGFnZS1kZWJ1Z2dlci1zdGF0ZW1lbnQiKTsKIH0KIAogZnVuY3Rpb24gdGVzdCgpCkBAIC01
MSw2ICs1NCwxOSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgfQogICAgIH0pOwogCisgICAg
SW5zcGVjdG9yVGVzdC5CcmVha3BvaW50T3B0aW9ucy5hZGRUZXN0Q2FzZXMoc3VpdGUsIHsKKyAg
ICAgICAgY3JlYXRlQnJlYWtwb2ludCgpIHsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdl
ci5kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50LmRpc2FibGVkID0gZmFsc2U7CisgICAgICAg
ICAgICByZXR1cm4gV0kuZGVidWdnZXJNYW5hZ2VyLmRlYnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9p
bnQ7CisgICAgICAgIH0sCisgICAgICAgIHRyaWdnZXJCcmVha3BvaW50KCkgeworICAgICAgICAg
ICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKGB0cmlnZ2VyRGVidWdnZXJTdGF0ZW1lbnQoKWApLAorICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXdhaXRFdmVudCgiVGVzdFBhZ2UtZGVidWdnZXItc3RhdGVtZW50
IiksCisgICAgICAgICAgICBdKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKwogICAgIHN1aXRlLnJ1
blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogfQogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2V0UGF1c2VPbk1pY3JvdGFza3MtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NldFBhdXNlT25NaWNyb3Rhc2tzLWV4
cGVjdGVkLnR4dAppbmRleCAxZDkwY2VkMzA2MjgwY2Y5ZjRjZWEyNWNmZWM5ZjBhNDNlMjc1YjQx
Li42ZTBmYTNlYzFiOTUzZWMwMzJmOWQ4MmYzMmQwYzliYThmYTIxN2Y4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2V0UGF1c2VPbk1pY3JvdGFza3MtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVzZU9uTWlj
cm90YXNrcy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw3IEBACitDT05TT0xFIE1FU1NBR0U6IEJS
RUFLUE9JTlQgQUNUSU9OIExPRyAxCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9O
IExPRyAyCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAzCitDT05TT0xF
IE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyA0CiBUZXN0cyBmb3IgRGVidWdnZXIuc2V0
UGF1c2VPbk1pY3JvdGFza3MgY29tbWFuZC4KIAogCkBAIC0yMCwzICsyNCw5MSBAQCBQQVNTOiBT
aG91bGQgbm90IGhhdmUgcGF1c2VkLgogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNl
dFBhdXNlT25NaWNyb3Rhc2tzLkVuYWJsZWQuUHJvbWlzZS5yZWplY3QKIFBBU1M6IFNob3VsZCBo
YXZlIHBhdXNlZC4KIAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlYnVnZ2VyLnNldFBhdXNlT25N
aWNyb3Rhc2tzLk9wdGlvbnMuQ29uZGl0aW9uCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICdmYWxz
ZScuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNl
LgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisK
K1NldHRpbmcgY29uZGl0aW9uIHRvICd0cnVlJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQu
Li4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNT
OiBTaG91bGQgcGF1c2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBEZWJ1Z2dlci5zZXRQYXVz
ZU9uTWljcm90YXNrcy5PcHRpb25zLklnbm9yZUNvdW50CisKK1NldHRpbmcgaWdub3JlQ291bnQg
dG8gJzInLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBw
YXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNl
LgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBEZWJ1Z2dlci5zZXRQYXVzZU9uTWljcm90YXNrcy5PcHRpb25zLkFjdGlvbi5M
b2cKKworQWRkaW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQ
QVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVz
ZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgor
UEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1
c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLgor
CitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9p
bnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9u
Li4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJl
YWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogRGVidWdnZXIuc2V0UGF1c2VPbk1pY3JvdGFza3MuT3B0aW9ucy5BY3Rpb25zLkV2
YWx1YXRlCisKK0FkZGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3Bv
aW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNo
b3VsZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBi
cmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BB
U1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KK0VuYWJsaW5n
IGF1dG8tY29udGludWUuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91
bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisK
K0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgor
UEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90
IHBhdXNlLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2V0
UGF1c2VPbk1pY3JvdGFza3MuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9z
ZXRQYXVzZU9uTWljcm90YXNrcy5odG1sCmluZGV4IGI1ZGExODQzZmZjOWU3ODM3YjY3MWNjZTll
ZjQ1ZmMzODkwM2NmYzIuLmIzN2ZiNTZkYjk2MzBjNTk4YzlhMjY2MWUzNTQ5OTkwMWUwNzU2Y2Ug
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVzZU9uTWlj
cm90YXNrcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zZXRQYXVz
ZU9uTWljcm90YXNrcy5odG1sCkBAIC0yLDcgKzIsMTQgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYnJlYWtwb2ludC1vcHRp
b25zLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgorZnVuY3Rpb24gdHJpZ2dlck1p
Y3JvdGFzaygpIHsKKyAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7CisgICAgICAgIFRlc3RQYWdl
LmRpc3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJUZXN0UGFnZS1taWNyb3Rhc2siKTsKKyAgICB9KTsK
K30KKwogZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5j
cmVhdGVBc3luY1N1aXRlKCJEZWJ1Z2dlci5zZXRQYXVzZU9uTWljcm90YXNrcyIpOwpAQCAtMjcs
NyArMzQsOSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIG5hbWU6ICJEZWJ1Z2dlci5z
ZXRQYXVzZU9uTWljcm90YXNrcy5EaXNhYmxlZC4iICsgbmFtZSwKICAgICAgICAgICAgIGRlc2Ny
aXB0aW9uOiAiRG8gbm90IHBhdXNlIG9uIG1pY3JvdGFza3Mgd2hlbiBkaXNhYmxlZC4iLAogICAg
ICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgICAgICAgICBXSS5kZWJ1
Z2dlck1hbmFnZXIuYWxsTWljcm90YXNrc0JyZWFrcG9pbnQuZGlzYWJsZWQgPSB0cnVlOworICAg
ICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5jcmVhdGVBbGxNaWNyb3Rhc2tzQnJlYWtw
b2ludCh7ZGlzYWJsZWQ6IHRydWV9KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydChXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsTWljcm90YXNrc0JyZWFrcG9pbnQsICJTaG91bGQg
aGF2ZSBjcmVhdGVkIGFsbCBtaWNyb3Rhc2tzIGJyZWFrcG9pbnQuIik7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoV0kuZGVidWdnZXJNYW5hZ2VyLmFsbE1pY3JvdGFza3NC
cmVha3BvaW50LmRpc2FibGVkLCAiQWxsIG1pY3JvdGFza3MgYnJlYWtwb2ludCBzaG91bGQgYmUg
ZGlzYWJsZWQuIik7CiAKICAgICAgICAgICAgICAgICBsZXQgZGlkUGF1c2UgPSBmYWxzZTsKICAg
ICAgICAgICAgICAgICBsZXQgbGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmly
ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9
PiB7CkBAIC0zOCw2ICs0Nyw5IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoZXhwcmVzc2lvbiwgKCkgPT4gewogICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoIWRpZFBhdXNlLCAiU2hvdWxkIG5v
dCBoYXZlIHBhdXNlZC4iKTsKICAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgbGlz
dGVuZXIpOworCisgICAgICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxNaWNy
b3Rhc2tzQnJlYWtwb2ludC5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnQoIVdJLmRlYnVnZ2VyTWFuYWdlci5hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludCwg
IlNob3VsZCBoYXZlIGRlc3Ryb3llZCBhbGwgbWljcm90YXNrcyBicmVha3BvaW50LiIpOwogICAg
ICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICB9CkBAIC00Nyw3ICs1OSw5IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgbmFt
ZTogIkRlYnVnZ2VyLnNldFBhdXNlT25NaWNyb3Rhc2tzLkVuYWJsZWQuIiArIG5hbWUsCiAgICAg
ICAgICAgICBkZXNjcmlwdGlvbjogIkRvIG5vdCBwYXVzZSBvbiBtaWNyb3Rhc2tzIHdoZW4gZGlz
YWJsZWQuIiwKICAgICAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAg
ICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFsbE1pY3JvdGFza3NCcmVha3BvaW50LmRpc2FibGVk
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmNyZWF0ZUFsbE1p
Y3JvdGFza3NCcmVha3BvaW50KCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnQoV0kuZGVidWdnZXJNYW5hZ2VyLmFsbE1pY3JvdGFza3NCcmVha3BvaW50LCAiU2hvdWxkIGhh
dmUgY3JlYXRlZCBhbGwgbWljcm90YXNrcyBicmVha3BvaW50LiIpOworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0KCFXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsTWljcm90YXNrc0Jy
ZWFrcG9pbnQuZGlzYWJsZWQsICJBbGwgbWljcm90YXNrcyBicmVha3BvaW50IHNob3VsZCBiZSBl
bmFibGVkLiIpOwogCiAgICAgICAgICAgICAgICAgbGV0IGRpZFBhdXNlID0gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLnNpbmdsZUZpcmVF
dmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4g
ewpAQCAtNTgsMTIgKzcyLDI4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoZXhwcmVzc2lvbiwgKCkgPT4gewogICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZGlkUGF1c2UsICJTaG91bGQgaGF2
ZSBwYXVzZWQuIik7CiAgICAgICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1v
dmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIGxpc3RlbmVy
KTsKKworICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsTWljcm90YXNr
c0JyZWFrcG9pbnQucmVtb3ZlKCk7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0KCFXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsTWljcm90YXNrc0JyZWFrcG9pbnQsICJTaG91
bGQgaGF2ZSBkZXN0cm95ZWQgYWxsIG1pY3JvdGFza3MgYnJlYWtwb2ludC4iKTsKICAgICAgICAg
ICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAg
fQogICAgICAgICB9KTsKICAgICB9CiAKKyAgICBJbnNwZWN0b3JUZXN0LkJyZWFrcG9pbnRPcHRp
b25zLmFkZFRlc3RDYXNlcyhzdWl0ZSwgeworICAgICAgICBjcmVhdGVCcmVha3BvaW50KCkgewor
ICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmNyZWF0ZUFsbE1pY3JvdGFza3NCcmVha3Bv
aW50KCk7CisgICAgICAgICAgICByZXR1cm4gV0kuZGVidWdnZXJNYW5hZ2VyLmFsbE1pY3JvdGFz
a3NCcmVha3BvaW50OworICAgICAgICB9LAorICAgICAgICB0cmlnZ2VyQnJlYWtwb2ludCgpIHsK
KyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hd2FpdEV2ZW50KCJUZXN0UGFnZS1taWNyb3Rhc2siKSwKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0cmlnZ2VyTWljcm90YXNrKClgKSwKKyAg
ICAgICAgICAgIF0pOworICAgICAgICB9LAorICAgIH0pOworCiAgICAgc3VpdGUucnVuVGVzdENh
c2VzQW5kRmluaXNoKCk7CiB9CiA8L3NjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>