<?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>190985</bug_id>
          
          <creation_ts>2018-10-27 07:00:57 -0700</creation_ts>
          <short_desc>[Payment Request] Implement PaymentResponse.retry()</short_desc>
          <delta_ts>2018-10-30 12:11:20 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>andersca</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1472699</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-10-27 07:00:57 -0700</bug_when>
    <thetext>[Payment Request] Implement PaymentResponse.retry()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472703</commentid>
    <comment_count>1</comment_count>
      <attachid>353233</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-10-27 07:39:58 -0700</bug_when>
    <thetext>Created attachment 353233
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472706</commentid>
    <comment_count>2</comment_count>
      <attachid>353234</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-10-27 07:49:02 -0700</bug_when>
    <thetext>Created attachment 353234
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472707</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-27 07:51:55 -0700</bug_when>
    <thetext>Attachment 353234 did not pass style-queue:


ERROR: Source/WebCore/Modules/paymentrequest/PaymentResponse.cpp:39:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473179</commentid>
    <comment_count>4</comment_count>
      <attachid>353234</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-10-29 20:50:02 -0700</bug_when>
    <thetext>Comment on attachment 353234
Patch

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

Looks sane.

&gt; Source/WebCore/ChangeLog:9
&gt; +        Implemented the retry() method on PaymentResponse as specified in the Payment Request API
&gt; +        W3C Editor&apos;s Draft of 24 October 2018.

Link please.

&gt; Source/WebCore/Modules/applepay/PaymentCoordinator.h:53
&gt; +    PaymentCoordinatorClient&amp; client() const { return m_client; }

It has come up before on webkit-dev that functions that are const should return const data and functions thats are non-const can return non-const data. The reasoning goes like this: a const function that returns non-const data is effectively non-const because the caller can mutate the returned non-const data out from under it. Is it possible to pick a signature from among this dichotomy?

&gt; Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:537
&gt; +    auto authorizationResult = PaymentAuthorizationResult { PaymentAuthorizationStatus::Failure, WTFMove(errors) };

Is this use of auto preferred? I do not see the benefit of using &quot;auto&quot; here because we have to name the type. It is shorter and seems more idiomatic to write:

PaymentAuthorizationResult authorizationResult { PaymentAuthorizationStatus::Failure, WTFMove(errors) };

&gt; Source/WebCore/Modules/paymentrequest/PaymentRequest.cpp:480
&gt; +void PaymentRequest::abort(AbortPromise&amp;&amp; promise)

This function does not take ownership of promise; =&gt; we should not pass AbortPromise as an rvalue reference. It seems sufficient to pass promise as an lvalue reference.

&gt; Source/WebCore/Modules/paymentrequest/PaymentRequest.cpp:716
&gt; +    m_response-&gt;setShippingOption(m_options.requestShipping ? m_shippingOption : String());
&gt; +    m_response-&gt;setPayerName(m_options.requestPayerName ? payerName : String());
&gt; +    m_response-&gt;setPayerEmail(m_options.requestPayerEmail ? payerEmail : String());
&gt; +    m_response-&gt;setPayerPhone(m_options.requestPayerPhone ? payerPhone : String());

Very minor. OK as-is. String() =&gt; String { }

&gt; Source/WebCore/Modules/paymentrequest/PaymentResponse.cpp:58
&gt;  void PaymentResponse::complete(std::optional&lt;PaymentComplete&gt;&amp;&amp; result, DOMPromiseDeferred&lt;void&gt;&amp;&amp; promise)

I know this signature was not changed. This function should not take DOMPromiseDeferred&lt;void&gt;&amp;&amp;. It should take const DOMPromiseDeferred&lt;void&gt;&amp; because there is no ownership transfer involved in this function. You do not need to fix this up in this patch.

&gt; Source/WebCore/testing/Internals.cpp:551
&gt; +        auto mockPaymentCoordinator = new MockPaymentCoordinator(*frame-&gt;page());

Eww, a raw pointer. Who deallocates this?

&gt; LayoutTests/ChangeLog:12
&gt; +        * http/tests/paymentrequest/payment-response-rejects-if-not-active.https-expected.txt: Added.
&gt; +        * http/tests/paymentrequest/payment-response-rejects-if-not-active.https.html: Added.
&gt; +        * http/tests/paymentrequest/payment-response-retry-method.https-expected.txt: Added.
&gt; +        * http/tests/paymentrequest/payment-response-retry-method.https.html: Added.
&gt; +

Are these imported and modified Web Platform Tests (WPT)? If so, please add a remark in this ChangeLog to explain what revision of the WPT repo these tests are from and explain what modifications were needed. If these are verbatim Web Platform Tests then they are not being imported into the appropriate place. They should be under LayoutTests/imported/.... If you wrote these tests and plan to contribute them to WPT then they should be under LayoutTests/http/wpt/.... If you wrote these test snd plan to contribute them to WPT then I have some stylistic comments and we should discuss further.

&gt; LayoutTests/http/tests/paymentrequest/payment-response-rejects-if-not-active.https-expected.txt:4
&gt; +
&gt; +
&gt; +
&gt; +

What is up with all this whitespace?

&gt; LayoutTests/http/tests/paymentrequest/payment-response-retry-method.https-expected.txt:10
&gt; +
&gt; +
&gt; +
&gt; +
&gt; +
&gt; +
&gt; +
&gt; +
&gt; +
&gt; +

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473267</commentid>
    <comment_count>5</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-10-30 08:48:26 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #4)
&gt; Comment on attachment 353234 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=353234&amp;action=review
&gt; 
&gt; Looks sane.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        Implemented the retry() method on PaymentResponse as specified in the Payment Request API
&gt; &gt; +        W3C Editor&apos;s Draft of 24 October 2018.
&gt; 
&gt; Link please.

Added.

&gt; 
&gt; &gt; Source/WebCore/Modules/applepay/PaymentCoordinator.h:53
&gt; &gt; +    PaymentCoordinatorClient&amp; client() const { return m_client; }
&gt; 
&gt; It has come up before on webkit-dev that functions that are const should
&gt; return const data and functions thats are non-const can return non-const
&gt; data. The reasoning goes like this: a const function that returns non-const
&gt; data is effectively non-const because the caller can mutate the returned
&gt; non-const data out from under it. Is it possible to pick a signature from
&gt; among this dichotomy?

Fixed by removing the const qualification on this and Internals::mockPaymentCoordinator().

&gt; 
&gt; &gt; Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:537
&gt; &gt; +    auto authorizationResult = PaymentAuthorizationResult { PaymentAuthorizationStatus::Failure, WTFMove(errors) };
&gt; 
&gt; Is this use of auto preferred? I do not see the benefit of using &quot;auto&quot; here
&gt; because we have to name the type. It is shorter and seems more idiomatic to
&gt; write:
&gt; 
&gt; PaymentAuthorizationResult authorizationResult {
&gt; PaymentAuthorizationStatus::Failure, WTFMove(errors) };

Nope, your way is clearly better. Fixed.

&gt; 
&gt; &gt; Source/WebCore/Modules/paymentrequest/PaymentRequest.cpp:480
&gt; &gt; +void PaymentRequest::abort(AbortPromise&amp;&amp; promise)
&gt; 
&gt; This function does not take ownership of promise; =&gt; we should not pass
&gt; AbortPromise as an rvalue reference. It seems sufficient to pass promise as
&gt; an lvalue reference.

I&apos;m not sure I agree with this, so maybe we should discuss it further offline. It doesn&apos;t take ownership of the promise, but its callers exclusively pass rvalues, so that seems like an OK reason to use an rvalue reference.

&gt; 
&gt; &gt; Source/WebCore/Modules/paymentrequest/PaymentRequest.cpp:716
&gt; &gt; +    m_response-&gt;setShippingOption(m_options.requestShipping ? m_shippingOption : String());
&gt; &gt; +    m_response-&gt;setPayerName(m_options.requestPayerName ? payerName : String());
&gt; &gt; +    m_response-&gt;setPayerEmail(m_options.requestPayerEmail ? payerEmail : String());
&gt; &gt; +    m_response-&gt;setPayerPhone(m_options.requestPayerPhone ? payerPhone : String());
&gt; 
&gt; Very minor. OK as-is. String() =&gt; String { }

Fixed.

&gt; 
&gt; &gt; Source/WebCore/Modules/paymentrequest/PaymentResponse.cpp:58
&gt; &gt;  void PaymentResponse::complete(std::optional&lt;PaymentComplete&gt;&amp;&amp; result, DOMPromiseDeferred&lt;void&gt;&amp;&amp; promise)
&gt; 
&gt; I know this signature was not changed. This function should not take
&gt; DOMPromiseDeferred&lt;void&gt;&amp;&amp;. It should take const DOMPromiseDeferred&lt;void&gt;&amp;
&gt; because there is no ownership transfer involved in this function. You do not
&gt; need to fix this up in this patch.

See above.

&gt; 
&gt; &gt; Source/WebCore/testing/Internals.cpp:551
&gt; &gt; +        auto mockPaymentCoordinator = new MockPaymentCoordinator(*frame-&gt;page());
&gt; 
&gt; Eww, a raw pointer. Who deallocates this?

PaymentCoordinatorClients (of which MockPaymentCoordinator is one) are supposed to delete themselves when PaymentCoordinator calls paymentCoordinatorDestroyed() :(

It&apos;s gross and we should fix it, but not here.

&gt; 
&gt; &gt; LayoutTests/ChangeLog:12
&gt; &gt; +        * http/tests/paymentrequest/payment-response-rejects-if-not-active.https-expected.txt: Added.
&gt; &gt; +        * http/tests/paymentrequest/payment-response-rejects-if-not-active.https.html: Added.
&gt; &gt; +        * http/tests/paymentrequest/payment-response-retry-method.https-expected.txt: Added.
&gt; &gt; +        * http/tests/paymentrequest/payment-response-retry-method.https.html: Added.
&gt; &gt; +
&gt; 
&gt; Are these imported and modified Web Platform Tests (WPT)? If so, please add
&gt; a remark in this ChangeLog to explain what revision of the WPT repo these
&gt; tests are from and explain what modifications were needed. If these are
&gt; verbatim Web Platform Tests then they are not being imported into the
&gt; appropriate place. They should be under LayoutTests/imported/.... If you
&gt; wrote these tests and plan to contribute them to WPT then they should be
&gt; under LayoutTests/http/wpt/.... If you wrote these test snd plan to
&gt; contribute them to WPT then I have some stylistic comments and we should
&gt; discuss further.

These are manual web platform tests that I converted to automated tests using window.internals.mockPaymentCoordinator. There is no plan to upstream them as-is because of their dependency on window.internals. I&apos;ll add a ChangeLog comment as you suggested.

&gt; 
&gt; &gt; LayoutTests/http/tests/paymentrequest/payment-response-rejects-if-not-active.https-expected.txt:4
&gt; &gt; +
&gt; &gt; +
&gt; &gt; +
&gt; &gt; +
&gt; 
&gt; What is up with all this whitespace?
&gt; 
&gt; &gt; LayoutTests/http/tests/paymentrequest/payment-response-retry-method.https-expected.txt:10
&gt; &gt; +
&gt; &gt; +
&gt; &gt; +
&gt; &gt; +
&gt; &gt; +
&gt; &gt; +
&gt; &gt; +
&gt; &gt; +
&gt; &gt; +
&gt; &gt; +
&gt; 
&gt; Ditto.

Fixed.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473288</commentid>
    <comment_count>6</comment_count>
      <attachid>353380</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-10-30 10:19:22 -0700</bug_when>
    <thetext>Created attachment 353380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473291</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-30 10:20:47 -0700</bug_when>
    <thetext>Attachment 353380 did not pass style-queue:


ERROR: Source/WebCore/Modules/paymentrequest/PaymentResponse.cpp:39:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473351</commentid>
    <comment_count>8</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-10-30 12:07:47 -0700</bug_when>
    <thetext>Committed r237597: &lt;https://trac.webkit.org/changeset/237597&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473353</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-30 12:09:39 -0700</bug_when>
    <thetext>&lt;rdar://problem/45676628&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473354</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-30 12:11:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/45676588&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353233</attachid>
            <date>2018-10-27 07:39:58 -0700</date>
            <delta_ts>2018-10-27 07:48:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190985-20181027163952.patch</filename>
            <type>text/plain</type>
            <size>59926</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Q4YjI2MmNlMTkxM2Jk
MTE4YjAxYmIwZDRmMjczMmJiMTZhYzY3Yi4uOTNiN2ZmOWYwNGFhZGYzNDg2ZmQ5MzI1N2JhNWE0
NGIxZmU4MzRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDE4LTEwLTI3ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbUGF5bWVudCBSZXF1ZXN0XSBJ
bXBsZW1lbnQgUGF5bWVudFJlc3BvbnNlLnJldHJ5KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDk4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIHRoZSByZXRyeSgpIG1ldGhvZCBv
biBQYXltZW50UmVzcG9uc2UgYXMgc3BlY2lmaWVkIGluIHRoZSBQYXltZW50IFJlcXVlc3QgQVBJ
CisgICAgICAgIFczQyBFZGl0b3IncyBEcmFmdCBvZiAyNCBPY3RvYmVyIDIwMTguCisKKyAgICAg
ICAgVGVzdHM6IGh0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1yZWpl
Y3RzLWlmLW5vdC1hY3RpdmUuaHR0cHMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9w
YXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJldHJ5LW1ldGhvZC5odHRwcy5odG1sCisK
KyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yOjpjbGllbnQgY29uc3QpOiBBZGRlZC4gUmV0
dXJucyBtX2NsaWVudC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGlu
YXRvckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50
Ojppc01vY2tQYXltZW50Q29vcmRpbmF0b3IgY29uc3QpOiBBZGRlZC4gVXNlZCB0byBkb3duY2Fz
dAorICAgICAgICBhIFBheW1lbnRDb29yZGluYXRvckNsaWVudCB0byBhIE1vY2tQYXltZW50Q29v
cmRpbmF0b3IuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBs
ZVBheVBheW1lbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVu
dEhhbmRsZXI6OmNvbXB1dGVUb3RhbEFuZExpbmVJdGVtcyBjb25zdCk6IE1hZGUgY29uc3QuCisg
ICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wdXRlRXJyb3JzIGNv
bnN0KTogQnJva2UgdGhpcyBmdW5jdGlvbiBpbnRvCisgICAgICAgIGNvbXB1dGVBZGRyZXNzRXJy
b3JzLCBjb21wdXRlUGF5ZXJFcnJvcnMsIGFuZCBjb21wdXRlUGF5bWVudE1ldGhvZEVycm9ycywg
dGhlbiBtb2RpZmllZCB0aGlzCisgICAgICAgIGZ1bmN0aW9uIHRvIGNhbGwgdGhvc2UgZnVuY3Rp
b25zLiBFeGNlcHRpb25zIHRocm93biBieSBjb21wdXRlUGF5bWVudE1ldGhvZEVycm9ycyBhcmUg
aWdub3JlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbXB1
dGVBZGRyZXNzRXJyb3JzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBh
eVBheW1lbnRIYW5kbGVyOjpjb21wdXRlUGF5ZXJFcnJvcnMgY29uc3QpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbXB1dGVQYXltZW50TWV0aG9k
RXJyb3JzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRI
YW5kbGVyOjpjb21wbGV0ZSk6IEFkZGVkIEFTU0VSVHMgdG8gdmVyaWZ5IHdoZXRoZXIgcmVzdWx0
IGlzIGEKKyAgICAgICAgZmluYWwgcmVzdWx0LgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlQ
YXltZW50SGFuZGxlcjo6cmV0cnkpOiBDb21wdXRlZCBQYXltZW50RXJyb3JzIGZyb20gUGF5bWVu
dFZhbGlkYXRpb25FcnJvcnMsCisgICAgICAgIGVuc3VyZWQgdGhlIFBheW1lbnRBdXRob3JpemF0
aW9uUmVzdWx0IHdhcyBub24tZmluYWwgYnkgYWRkaW5nIGFuIHVua25vd24gZXJyb3IgaWYgbmVj
ZXNzYXJ5LAorICAgICAgICBhbmQgY2FsbGVkIFBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVQ
YXltZW50U2Vzc2lvbi4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0
L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L1BheW1lbnRIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9Q
YXltZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6c2hv
dyk6IENoYW5nZWQgdG8gY2FsbCBzZXR0bGVTaG93UHJvbWlzZS4KKyAgICAgICAgKFdlYkNvcmU6
OlBheW1lbnRSZXF1ZXN0OjphYm9ydFdpdGhFeGNlcHRpb24pOiBDaGFuZ2VkIHRvIGFib3J0IFBh
eW1lbnRSZXNwb25zZSdzIHJldHJ5CisgICAgICAgIHByb21pc2UsIGlmIHByZXNlbnQsIGluc3Rl
YWQgb2YgUGF5bWVudFJlc3BvbnNlJ3Mgc2hvdyBwcm9taXNlLgorICAgICAgICAoV2ViQ29yZTo6
UGF5bWVudFJlcXVlc3Q6OnNldHRsZVNob3dQcm9taXNlKTogQWRkZWQuIFNldHRsZXMgbV9zaG93
UHJvbWlzZSB0aGVuIHNldHMgaXQgdG8KKyAgICAgICAgc3RkOjpudWxsb3B0LgorICAgICAgICAo
V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OmNsb3NlQWN0aXZlUGF5bWVudEhhbmRsZXIpOiBBZGRl
ZC4gSGlkZXMgdGhlIGFjdGl2ZSBwYXltZW50CisgICAgICAgIGhhbmRsZXIgdGhlbiBzZXRzIGl0
IHRvIHN0ZDo6bnVsbG9wdC4KKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpzdG9w
KTogU3RvcHBlZCBjYWxsaW5nIGFib3J0V2l0aEV4Y2VwdGlvbiwgc2luY2UgdGhhdCBmdW5jdGlv
bgorICAgICAgICBtaWdodCBzZXR0bGUgUGF5bWVudFJlc3BvbnNlJ3MgcmV0cnkgcHJvbWlzZS4g
UGF5bWVudFJlc3BvbnNlIGlzIG5vdyBhbiBBY3RpdmVET01PYmplY3QgYW5kCisgICAgICAgIHdp
bGwgc2V0dGxlIGl0cyBvd24gcHJvbWlzZSBpbiBpdHMgaW1wbGVtZW50YXRpb24gb2Ygc3RvcC4K
KyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjphYm9ydCk6IENoYW5nZWQgdG8gdGhy
b3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgaWYgdGhlcmUgaXMgYQorICAgICAgICBwZW5kaW5nIHJl
dHJ5IHByb21pc2UgYW5kIHRvIGNhbGwgYWJvcnRXaXRoRXhjZXB0aW9uIGluc3RlYWQgb2Ygc3Rv
cC4KKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0Ojpjb21wbGV0ZU1lcmNoYW50VmFs
aWRhdGlvbik6IENoYW5nZWQgdG8gY2FsbCBhYm9ydFdpdGhFeGNlcHRpb24KKyAgICAgICAgaW5z
dGVhZCBvZiBzdG9wLgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OnNldHRsZURl
dGFpbHNQcm9taXNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6
YWNjZXB0KTogVXBkYXRlZCB0aGUgZXhpc3RpbmcgUGF5bWVudFJlc3BvbnNlLCBpZiBwcmVzZW50
LCByYXRoZXIKKyAgICAgICAgdGhhbiBjcmVhdGluZyBhIG5ldyBvbmUuIFNldHRsZWQgdGhlIGV4
aXN0aW5nIFBheW1lbnRSZXNwb25zZSdzIHJldHJ5IHByb21pc2UsIGlmIHByZXNlbnQsCisgICAg
ICAgIHJhdGhlciB0aGFuIHRoZSBzaG93IHByb21pc2UuCisgICAgICAgIChXZWJDb3JlOjpQYXlt
ZW50UmVxdWVzdDo6Y29tcGxldGUpOiBDaGFuZ2VkIHRvIHRocm93IGFuIEFib3J0RXJyb3IgaWYg
dGhlcmUgaXMgbm8gbG9uZ2VyIGFuCisgICAgICAgIGFjdGl2ZSBwYXltZW50IGhhbmRsZXIuCisg
ICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6cmV0cnkpOiBDaGFuZ2VkIHRvIHRocm93
IGFuIEFib3J0RXJyb3IgaWYgdGhlcmUgaXMgbm8gbG9uZ2VyIGFuCisgICAgICAgIGFjdGl2ZSBw
YXltZW50IGhhbmRsZXIsIGFuZCB0byBjYWxsIFBheW1lbnRIYW5kbGVyOjpyZXRyeSBpZiB0aGVy
ZSBpcy4KKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpjYW5jZWwpOiBDaGFuZ2Vk
IHRvIGNhbGwgYWJvcnRXaXRoRXhjZXB0aW9uIGluc3RlYWQgb2Ygc3RvcC4KKyAgICAgICAgKiBN
b2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0Lmg6CisgICAgICAgICogTW9kdWxl
cy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5pZGw6CisgICAgICAgICogTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9QYXltZW50UmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF5
bWVudFJlc3BvbnNlOjpQYXltZW50UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVu
dFJlc3BvbnNlOjpmaW5pc2hDb25zdHJ1Y3Rpb24pOiBQZW5kaW5nIGFjdGl2aXRpZXMgY3JlYXRl
IHN0cm9uZyByZWZlcmVuY2VzCisgICAgICAgIHRvIHx0aGlzfCwgc28gdGhleSBjYW5ub3QgYmUg
Y3JlYXRlZCBpbiBjb25zdHJ1Y3RvcnMgd2l0aG91dCByZWxheGluZyBhZG9wdGlvbiByZXF1aXJl
bWVudHMuCisgICAgICAgIEFkZGVkIHRoaXMgZnVuY3Rpb24gc28gdGhhdCB0aGUgcGVuZGluZyBh
Y3Rpdml0eSBjYW4gYmUgY3JlYXRlZCBhZnRlciB0aGUgUGF5bWVudFJlc3BvbnNlIGlzCisgICAg
ICAgIGNyZWF0ZWQgYW5kIGFkb3B0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVzcG9u
c2U6On5QYXltZW50UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlc3BvbnNl
Ojpjb21wbGV0ZSk6IFVwZGF0ZWQgdG8gdGhyb3cgYW4gQWJvcnRFcnJvciBvciBJbnZhbGlkU3Rh
dGVFcnJvcgorICAgICAgICB3aGVuIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OlBheW1l
bnRSZXNwb25zZTo6cmV0cnkpOiBJbXBsZW1lbnRlZC4gVGhyb3dzIGFuIEFib3J0RXJyb3Igb3Ig
SW52YWxpZFN0YXRlRXJyb3IKKyAgICAgICAgd2hlbiBuZWNlc3NhcnksIG90aGVyd2lzZSBjYWxs
cyBQYXltZW50UmVxdWVzdDo6cmV0cnkgYW5kIHN0b3JlcyB0aGUgcmV0cnkgcHJvbWlzZSBpbgor
ICAgICAgICBtX3JldHJ5UHJvbWlzZS4KKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXNwb25z
ZTo6YWJvcnRXaXRoRXhjZXB0aW9uKTogQWRkZWQuIFJlamVjdHMgdGhlIHJldHJ5IHByb21pc2Ug
d2l0aAorICAgICAgICB8ZXhjZXB0aW9ufCwgY2xlYXJzIHRoZSBwZW5kaW5nIGFjdGl2aXR5LCBh
bmQgc2V0cyBtX3N0YXRlIHRvIENvbXBsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRS
ZXNwb25zZTo6c2V0dGxlUmV0cnlQcm9taXNlKTogQWRkZWQuIFNldHRsZXMgdGhlIHJldHJ5IHBy
b21pc2UgYW5kIHNldHMgaXQKKyAgICAgICAgdG8gc3RkOjpudWxsb3B0LgorICAgICAgICAoV2Vi
Q29yZTo6UGF5bWVudFJlc3BvbnNlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uIGNv
bnN0KTogQWRkZWQuIFJldHVybnMgdHJ1ZSBpZgorICAgICAgICB0aGVyZSBpcyBubyBwZW5kaW5n
IGFjdGl2aXR5LgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlc3BvbnNlOjpzdG9wKTogQWRk
ZWQuIFJlamVjdHMgdGhlIHJldHJ5IHByb21pc2Ugd2l0aCBBYm9ydEVycm9yLCBjbGVhcnMKKyAg
ICAgICAgdGhlIHBlbmRpbmcgYWN0aXZpdHksIGFuZCBzZXRzIG1fc3RhdGUgdG8gU3RvcHBlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNwb25zZS5oOiBDaGFu
Z2VkIGNyZWF0ZSB0byBjYWxsIGZpbmlzaENvbnN0cnVjdGlvbiBhbmQKKyAgICAgICAgbWFkZSBQ
YXltZW50UmVzcG9uc2UgYW4gQWN0aXZlRE9NT2JqZWN0IGluc3RlYWQgb2YgYSBDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlci4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OkludGVybmFscyk6IENoYW5nZWQgdG8gb25seSBjcmVh
dGUgYSBNb2NrUGF5bWVudENvb3JkaW5hdG9yIGZvciBtYWluIGZyYW1lcy4KKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6bW9ja1BheW1lbnRDb29yZGluYXRvciBjb25zdCk6IENoYW5nZWQg
dG8gZ2V0IHRoZQorICAgICAgICBNb2NrUGF5bWVudENvb3JkaW5hdG9yIGJ5IGRvd25jYXN0aW5n
IHRoZSBwYWdlJ3MgcGF5bWVudCBjb29yZGluYXRvciBjbGllbnQuCisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAg
ICogdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudFNlc3Npb24pOiBDaGFuZ2Vk
IHRvIG9ubHkgaW5jcmVtZW50CisgICAgICAgIGhpZGVDb3VudCBmb3IgZmluYWwgcmVzdWx0cy4K
KyAgICAgICAgKiB0ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKGlz
VHlwZSk6IEFkZGVkIHNvIHRoYXQgUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50cyBjYW4gYmUgZG93
bmNhc3RlZCB0byBNb2NrUGF5bWVudENvb3JkaW5hdG9ycy4KKwogMjAxOC0xMC0xNSAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW0FwcGxlIFBheV0gUGF5bWVudCBh
dXRob3JpemF0aW9uIHJlc3VsdHMgd2l0aCBBcHBsZVBheUVycm9ycyBzaG91bGQgbmV2ZXIgYmUg
Y29uc2lkZXJlZCBmaW5hbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggZDQ2NTJjZmVkNTBmZmMxZDJmNmI2MmI1ZTRi
ZGQwZjkyODYzZDQ1Ni4uNzQ4YzE0NzExYjM2Yjg0NDJlMzJkM2JmYTlmZjM2ZTRjOTE1OTk0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRp
bmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29y
ZGluYXRvci5oCkBAIC01MCw2ICs1MCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBQYXltZW50Q29vcmRpbmF0b3IoUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Jik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgflBheW1lbnRDb29yZGluYXRvcigpOwogCisgICAgUGF5bWVudENv
b3JkaW5hdG9yQ2xpZW50JiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQorCiAg
ICAgYm9vbCBzdXBwb3J0c1ZlcnNpb24odW5zaWduZWQgdmVyc2lvbikgY29uc3Q7CiAgICAgYm9v
bCBjYW5NYWtlUGF5bWVudHMoKTsKICAgICB2b2lkIGNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVD
YXJkKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFp
bk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRp
bmF0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENv
b3JkaW5hdG9yQ2xpZW50LmgKaW5kZXggZTkxNWNhMTZkYjQwMjQzOGQ4YmQ4MDAxOWRhZGU5YjM2
NzcwM2QxNy4uYjk3MDMwYWEwNTI0ZTU4ZDJiZDk1M2FmMjNkNzdhZmNiMzE2ZjRmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29y
ZGluYXRvckNsaWVudC5oCkBAIC01OCw2ICs1OCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsUGF5bWVudFNlc3Npb24oKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBheW1lbnRD
b29yZGluYXRvckRlc3Ryb3llZCgpID0gMDsKIAorICAgIHZpcnR1YWwgYm9vbCBpc01vY2tQYXlt
ZW50Q29vcmRpbmF0b3IoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCB+UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50KCkgPSBkZWZhdWx0OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3Qv
QXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCmluZGV4IDhmNTc1
MDA4MDk0MjA2OGE2Yzg4NWI3NWNjNGZiMTJmYTY4M2JiNGYuLmY2Nzg1ZDZlYzA1NDBlZDMxYTNm
YjA3NTczNjJjNmUzOGRmN2ZmNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBh
eW1lbnRIYW5kbGVyLmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIlBheW1lbnRNZXRo
b2QuaCIKICNpbmNsdWRlICJQYXltZW50UmVxdWVzdFZhbGlkYXRvci5oIgogI2luY2x1ZGUgIlBh
eW1lbnRSZXNwb25zZS5oIgorI2luY2x1ZGUgIlBheW1lbnRWYWxpZGF0aW9uRXJyb3JzLmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjQ5LDcgKzI1
MCw3IEBAIHZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y2FuTWFrZVBheW1lbnQoRnVuY3Rp
b248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuCiAgICAgcGF5bWVudENvb3JkaW5hdG9yKCku
Y2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQobV9hcHBsZVBheVJlcXVlc3QtPm1lcmNoYW50
SWRlbnRpZmllciwgZG9jdW1lbnQoKS5kb21haW4oKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCi1FeGNlcHRpb25PcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6VG90
YWxBbmRMaW5lSXRlbXM+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbXB1dGVUb3RhbEFuZExp
bmVJdGVtcygpCitFeGNlcHRpb25PcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6VG90
YWxBbmRMaW5lSXRlbXM+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbXB1dGVUb3RhbEFuZExp
bmVJdGVtcygpIGNvbnN0CiB7CiAgICAgYXV0byYgZGV0YWlscyA9IG1fcGF5bWVudFJlcXVlc3Qt
PnBheW1lbnREZXRhaWxzKCk7CiAgICAgU3RyaW5nIGN1cnJlbmN5ID0gZGV0YWlscy50b3RhbC5h
bW91bnQuY3VycmVuY3k7CkBAIC0zMjIsMjEgKzMyMyw0MyBAQCBWZWN0b3I8UGF5bWVudEVycm9y
PiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wdXRlRXJyb3JzKFN0cmluZyYmIGVycm9yLCBB
ZGRyZQogewogICAgIFZlY3RvcjxQYXltZW50RXJyb3I+IGVycm9yczsKIAotICAgIGF1dG8mIG9w
dGlvbnMgPSBtX3BheW1lbnRSZXF1ZXN0LT5wYXltZW50T3B0aW9ucygpOwotICAgIHVzaW5nIENv
bnRhY3RGaWVsZCA9IFBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOworICAgIGlmIChtX3BheW1l
bnRSZXF1ZXN0LT5wYXltZW50RGV0YWlscygpLnNoaXBwaW5nT3B0aW9ucy5pc0VtcHR5KCkpCisg
ICAgICAgIGNvbXB1dGVBZGRyZXNzRXJyb3JzKFdURk1vdmUoZXJyb3IpLCBXVEZNb3ZlKGFkZHJl
c3NFcnJvcnMpLCBlcnJvcnMpOworCisgICAgY29tcHV0ZVBheWVyRXJyb3JzKFdURk1vdmUocGF5
ZXJFcnJvcnMpLCBlcnJvcnMpOwogCi0gICAgaWYgKG9wdGlvbnMucmVxdWVzdFNoaXBwaW5nICYm
IG1fcGF5bWVudFJlcXVlc3QtPnBheW1lbnREZXRhaWxzKCkuc2hpcHBpbmdPcHRpb25zLmlzRW1w
dHkoKSkgewotICAgICAgICBhcHBlbmRTaGlwcGluZ0NvbnRhY3RJbnZhbGlkRXJyb3IoV1RGTW92
ZShlcnJvciksIHN0ZDo6bnVsbG9wdCwgZXJyb3JzKTsKLSAgICAgICAgYXBwZW5kU2hpcHBpbmdD
b250YWN0SW52YWxpZEVycm9yKFdURk1vdmUoYWRkcmVzc0Vycm9ycy5hZGRyZXNzTGluZSksIENv
bnRhY3RGaWVsZDo6QWRkcmVzc0xpbmVzLCBlcnJvcnMpOwotICAgICAgICBhcHBlbmRTaGlwcGlu
Z0NvbnRhY3RJbnZhbGlkRXJyb3IoV1RGTW92ZShhZGRyZXNzRXJyb3JzLmNpdHkpLCBDb250YWN0
RmllbGQ6OkxvY2FsaXR5LCBlcnJvcnMpOwotICAgICAgICBhcHBlbmRTaGlwcGluZ0NvbnRhY3RJ
bnZhbGlkRXJyb3IoV1RGTW92ZShhZGRyZXNzRXJyb3JzLmNvdW50cnkpLCBDb250YWN0RmllbGQ6
OkNvdW50cnksIGVycm9ycyk7Ci0gICAgICAgIGFwcGVuZFNoaXBwaW5nQ29udGFjdEludmFsaWRF
cnJvcihXVEZNb3ZlKGFkZHJlc3NFcnJvcnMuZGVwZW5kZW50TG9jYWxpdHkpLCBDb250YWN0Rmll
bGQ6OlN1YkxvY2FsaXR5LCBlcnJvcnMpOwotICAgICAgICBhcHBlbmRTaGlwcGluZ0NvbnRhY3RJ
bnZhbGlkRXJyb3IoV1RGTW92ZShhZGRyZXNzRXJyb3JzLnBob25lKSwgQ29udGFjdEZpZWxkOjpQ
aG9uZU51bWJlciwgZXJyb3JzKTsKLSAgICAgICAgYXBwZW5kU2hpcHBpbmdDb250YWN0SW52YWxp
ZEVycm9yKFdURk1vdmUoYWRkcmVzc0Vycm9ycy5wb3N0YWxDb2RlKSwgQ29udGFjdEZpZWxkOjpQ
b3N0YWxDb2RlLCBlcnJvcnMpOwotICAgICAgICBhcHBlbmRTaGlwcGluZ0NvbnRhY3RJbnZhbGlk
RXJyb3IoV1RGTW92ZShhZGRyZXNzRXJyb3JzLnJlY2lwaWVudCksIENvbnRhY3RGaWVsZDo6TmFt
ZSwgZXJyb3JzKTsKLSAgICAgICAgYXBwZW5kU2hpcHBpbmdDb250YWN0SW52YWxpZEVycm9yKFdU
Rk1vdmUoYWRkcmVzc0Vycm9ycy5yZWdpb24pLCBDb250YWN0RmllbGQ6OkFkbWluaXN0cmF0aXZl
QXJlYSwgZXJyb3JzKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkpOworICAgIGF1dG8gZXhjZXB0aW9uID0gY29tcHV0
ZVBheW1lbnRNZXRob2RFcnJvcnMocGF5bWVudE1ldGhvZEVycm9ycywgZXJyb3JzKTsKKyAgICBp
ZiAoZXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIEFTU0VSVChzY29wZS5leGNl
cHRpb24oKSk7CisgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgfQogCisgICAg
cmV0dXJuIGVycm9yczsKK30KKwordm9pZCBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wdXRl
QWRkcmVzc0Vycm9ycyhTdHJpbmcmJiBlcnJvciwgQWRkcmVzc0Vycm9ycyYmIGFkZHJlc3NFcnJv
cnMsIFZlY3RvcjxQYXltZW50RXJyb3I+JiBlcnJvcnMpIGNvbnN0Cit7CisgICAgaWYgKCFtX3Bh
eW1lbnRSZXF1ZXN0LT5wYXltZW50T3B0aW9ucygpLnJlcXVlc3RTaGlwcGluZykKKyAgICAgICAg
cmV0dXJuOworCisgICAgdXNpbmcgQ29udGFjdEZpZWxkID0gUGF5bWVudEVycm9yOjpDb250YWN0
RmllbGQ7CisgICAgYXBwZW5kU2hpcHBpbmdDb250YWN0SW52YWxpZEVycm9yKFdURk1vdmUoZXJy
b3IpLCBzdGQ6Om51bGxvcHQsIGVycm9ycyk7CisgICAgYXBwZW5kU2hpcHBpbmdDb250YWN0SW52
YWxpZEVycm9yKFdURk1vdmUoYWRkcmVzc0Vycm9ycy5hZGRyZXNzTGluZSksIENvbnRhY3RGaWVs
ZDo6QWRkcmVzc0xpbmVzLCBlcnJvcnMpOworICAgIGFwcGVuZFNoaXBwaW5nQ29udGFjdEludmFs
aWRFcnJvcihXVEZNb3ZlKGFkZHJlc3NFcnJvcnMuY2l0eSksIENvbnRhY3RGaWVsZDo6TG9jYWxp
dHksIGVycm9ycyk7CisgICAgYXBwZW5kU2hpcHBpbmdDb250YWN0SW52YWxpZEVycm9yKFdURk1v
dmUoYWRkcmVzc0Vycm9ycy5jb3VudHJ5KSwgQ29udGFjdEZpZWxkOjpDb3VudHJ5LCBlcnJvcnMp
OworICAgIGFwcGVuZFNoaXBwaW5nQ29udGFjdEludmFsaWRFcnJvcihXVEZNb3ZlKGFkZHJlc3NF
cnJvcnMuZGVwZW5kZW50TG9jYWxpdHkpLCBDb250YWN0RmllbGQ6OlN1YkxvY2FsaXR5LCBlcnJv
cnMpOworICAgIGFwcGVuZFNoaXBwaW5nQ29udGFjdEludmFsaWRFcnJvcihXVEZNb3ZlKGFkZHJl
c3NFcnJvcnMucGhvbmUpLCBDb250YWN0RmllbGQ6OlBob25lTnVtYmVyLCBlcnJvcnMpOworICAg
IGFwcGVuZFNoaXBwaW5nQ29udGFjdEludmFsaWRFcnJvcihXVEZNb3ZlKGFkZHJlc3NFcnJvcnMu
cG9zdGFsQ29kZSksIENvbnRhY3RGaWVsZDo6UG9zdGFsQ29kZSwgZXJyb3JzKTsKKyAgICBhcHBl
bmRTaGlwcGluZ0NvbnRhY3RJbnZhbGlkRXJyb3IoV1RGTW92ZShhZGRyZXNzRXJyb3JzLnJlY2lw
aWVudCksIENvbnRhY3RGaWVsZDo6TmFtZSwgZXJyb3JzKTsKKyAgICBhcHBlbmRTaGlwcGluZ0Nv
bnRhY3RJbnZhbGlkRXJyb3IoV1RGTW92ZShhZGRyZXNzRXJyb3JzLnJlZ2lvbiksIENvbnRhY3RG
aWVsZDo6QWRtaW5pc3RyYXRpdmVBcmVhLCBlcnJvcnMpOworfQorCit2b2lkIEFwcGxlUGF5UGF5
bWVudEhhbmRsZXI6OmNvbXB1dGVQYXllckVycm9ycyhQYXllckVycm9yRmllbGRzJiYgcGF5ZXJF
cnJvcnMsIFZlY3RvcjxQYXltZW50RXJyb3I+JiBlcnJvcnMpIGNvbnN0Cit7CisgICAgYXV0byYg
b3B0aW9ucyA9IG1fcGF5bWVudFJlcXVlc3QtPnBheW1lbnRPcHRpb25zKCk7CisgICAgdXNpbmcg
Q29udGFjdEZpZWxkID0gUGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ7CisKICAgICBpZiAob3B0
aW9ucy5yZXF1ZXN0UGF5ZXJOYW1lKQogICAgICAgICBhcHBlbmRTaGlwcGluZ0NvbnRhY3RJbnZh
bGlkRXJyb3IoV1RGTW92ZShwYXllckVycm9ycy5uYW1lKSwgQ29udGFjdEZpZWxkOjpOYW1lLCBl
cnJvcnMpOwogCkBAIC0zNDUsMjQgKzM2OCwyOSBAQCBWZWN0b3I8UGF5bWVudEVycm9yPiBBcHBs
ZVBheVBheW1lbnRIYW5kbGVyOjpjb21wdXRlRXJyb3JzKFN0cmluZyYmIGVycm9yLCBBZGRyZQog
CiAgICAgaWYgKG9wdGlvbnMucmVxdWVzdFBheWVyUGhvbmUpCiAgICAgICAgIGFwcGVuZFNoaXBw
aW5nQ29udGFjdEludmFsaWRFcnJvcihXVEZNb3ZlKHBheWVyRXJyb3JzLnBob25lKSwgQ29udGFj
dEZpZWxkOjpQaG9uZU51bWJlciwgZXJyb3JzKTsKK30KKworRXhjZXB0aW9uT3I8dm9pZD4gQXBw
bGVQYXlQYXltZW50SGFuZGxlcjo6Y29tcHV0ZVBheW1lbnRNZXRob2RFcnJvcnMoSlNDOjpKU09i
amVjdCogcGF5bWVudE1ldGhvZEVycm9ycywgVmVjdG9yPFBheW1lbnRFcnJvcj4mIGVycm9ycykg
Y29uc3QKK3sKKyAgICBpZiAoIXBheW1lbnRNZXRob2RFcnJvcnMpCisgICAgICAgIHJldHVybiB7
IH07CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1NFU1NJT05fVjMpCi0gICAgaWYgKHBheW1lbnRN
ZXRob2RFcnJvcnMpIHsKLSAgICAgICAgYXV0byYgY29udGV4dCA9ICpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7Ci0gICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
Y29udGV4dC52bSgpKTsKLSAgICAgICAgYXV0byBhcHBsZVBheUVycm9ycyA9IGNvbnZlcnQ8SURM
U2VxdWVuY2U8SURMSW50ZXJmYWNlPEFwcGxlUGF5RXJyb3I+Pj4oKmNvbnRleHQuZXhlY1N0YXRl
KCksIHBheW1lbnRNZXRob2RFcnJvcnMpOwotICAgICAgICBpZiAoIXRocm93U2NvcGUuZXhjZXB0
aW9uKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgYXBwbGVQYXlFcnJvciA6IGFwcGxlUGF5
RXJyb3JzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGFwcGxlUGF5RXJyb3IpCi0gICAgICAgICAg
ICAgICAgICAgIGVycm9ycy5hcHBlbmQoeyBhcHBsZVBheUVycm9yLT5jb2RlKCksIGFwcGxlUGF5
RXJyb3ItPm1lc3NhZ2UoKSwgYXBwbGVQYXlFcnJvci0+Y29udGFjdEZpZWxkKCkgfSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KKyAgICBhdXRvJiBjb250ZXh0ID0gKnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGNv
bnRleHQudm0oKSk7CisgICAgYXV0byBhcHBsZVBheUVycm9ycyA9IGNvbnZlcnQ8SURMU2VxdWVu
Y2U8SURMSW50ZXJmYWNlPEFwcGxlUGF5RXJyb3I+Pj4oKmNvbnRleHQuZXhlY1N0YXRlKCksIHBh
eW1lbnRNZXRob2RFcnJvcnMpOworICAgIGlmICh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9OworCisgICAg
Zm9yIChhdXRvJiBhcHBsZVBheUVycm9yIDogYXBwbGVQYXlFcnJvcnMpIHsKKyAgICAgICAgaWYg
KGFwcGxlUGF5RXJyb3IpCisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKHsgYXBwbGVQYXlFcnJv
ci0+Y29kZSgpLCBhcHBsZVBheUVycm9yLT5tZXNzYWdlKCksIGFwcGxlUGF5RXJyb3ItPmNvbnRh
Y3RGaWVsZCgpIH0pOwogICAgIH0KICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHBheW1lbnRNZXRo
b2RFcnJvcnMpOworICAgIFVOVVNFRF9QQVJBTShlcnJvcnMpOwogI2VuZGlmCiAKLSAgICByZXR1
cm4gZXJyb3JzOworICAgIHJldHVybiB7IH07CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEFwcGxl
UGF5UGF5bWVudEhhbmRsZXI6OmRldGFpbHNVcGRhdGVkKFBheW1lbnRSZXF1ZXN0OjpVcGRhdGVS
ZWFzb24gcmVhc29uLCBTdHJpbmcmJiBlcnJvciwgQWRkcmVzc0Vycm9ycyYmIGFkZHJlc3NFcnJv
cnMsIFBheWVyRXJyb3JGaWVsZHMmJiBwYXllckVycm9ycywgSlNDOjpKU09iamVjdCogcGF5bWVu
dE1ldGhvZEVycm9ycykKQEAgLTQ1Miw2ICs0ODAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBcHBs
ZVBheVBheW1lbnRIYW5kbGVyOjpwYXltZW50TWV0aG9kVXBkYXRlZCgpCiB2b2lkIEFwcGxlUGF5
UGF5bWVudEhhbmRsZXI6OmNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbXBsZXRlPiYm
IHJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBBU1NFUlQoaXNGaW5hbFN0
YXRlUmVzdWx0KHN0ZDo6bnVsbG9wdCkpOwogICAgICAgICBwYXltZW50Q29vcmRpbmF0b3IoKS5j
b21wbGV0ZVBheW1lbnRTZXNzaW9uKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC00NjcsNyArNDk2LDI5IEBAIHZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y29t
cGxldGUoc3RkOjpvcHRpb25hbDxQYXltZW50Q29tcGxldGU+JiYgcmVzdWx0KQogICAgICAgICBi
cmVhazsKICAgICB9CiAKKyAgICBBU1NFUlQoaXNGaW5hbFN0YXRlUmVzdWx0KGF1dGhvcml6YXRp
b25SZXN1bHQpKTsKKyAgICBwYXltZW50Q29vcmRpbmF0b3IoKS5jb21wbGV0ZVBheW1lbnRTZXNz
aW9uKFdURk1vdmUoYXV0aG9yaXphdGlvblJlc3VsdCkpOworfQorCitFeGNlcHRpb25Pcjx2b2lk
PiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpyZXRyeShQYXltZW50VmFsaWRhdGlvbkVycm9ycyYm
IHZhbGlkYXRpb25FcnJvcnMpCit7CisgICAgVmVjdG9yPFBheW1lbnRFcnJvcj4gZXJyb3JzOwor
CisgICAgY29tcHV0ZUFkZHJlc3NFcnJvcnMoV1RGTW92ZSh2YWxpZGF0aW9uRXJyb3JzLmVycm9y
KSwgV1RGTW92ZSh2YWxpZGF0aW9uRXJyb3JzLnNoaXBwaW5nQWRkcmVzcyksIGVycm9ycyk7Cisg
ICAgY29tcHV0ZVBheWVyRXJyb3JzKFdURk1vdmUodmFsaWRhdGlvbkVycm9ycy5wYXllciksIGVy
cm9ycyk7CisKKyAgICBhdXRvIGV4Y2VwdGlvbiA9IGNvbXB1dGVQYXltZW50TWV0aG9kRXJyb3Jz
KHZhbGlkYXRpb25FcnJvcnMucGF5bWVudE1ldGhvZC5nZXQoKSwgZXJyb3JzKTsKKyAgICBpZiAo
ZXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gZXhjZXB0aW9uLnJlbGVh
c2VFeGNlcHRpb24oKTsKKworICAgIC8vIEVuc3VyZSB0aGVyZSBpcyBhbHdheXMgYXQgbGVhc3Qg
b25lIGVycm9yIHRvIGF2b2lkIGhhdmluZyBhIGZpbmFsIHJlc3VsdC4KKyAgICBpZiAoZXJyb3Jz
LmlzRW1wdHkoKSkKKyAgICAgICAgZXJyb3JzLmFwcGVuZCh7IFBheW1lbnRFcnJvcjo6Q29kZTo6
VW5rbm93biwgeyB9LCBzdGQ6Om51bGxvcHQgfSk7CisKKyAgICBhdXRvIGF1dGhvcml6YXRpb25S
ZXN1bHQgPSBQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdCB7IFBheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzOjpGYWlsdXJlLCBXVEZNb3ZlKGVycm9ycykgfTsKKyAgICBBU1NFUlQoIWlzRmluYWxT
dGF0ZVJlc3VsdChhdXRob3JpemF0aW9uUmVzdWx0KSk7CiAgICAgcGF5bWVudENvb3JkaW5hdG9y
KCkuY29tcGxldGVQYXltZW50U2Vzc2lvbihXVEZNb3ZlKGF1dGhvcml6YXRpb25SZXN1bHQpKTsK
KyAgICByZXR1cm4geyB9OwogfQogCiB1bnNpZ25lZCBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjp2
ZXJzaW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVy
LmgKaW5kZXggOTA3ZThhN2I5MDgxNzY2ZThjMTRmN2RjOGViNGFiZTYyOTVmNjE5Yy4uZTA0ZDU1
YzU2MjU2ODk0OGVlOTI5MGJhOGVjMzllNGY2ZGM1MjRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5k
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVz
dC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmgKQEAgLTUyLDggKzUyLDExIEBAIHByaXZhdGU6CiAg
ICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7CiAgICAgUGF5bWVudENvb3JkaW5hdG9yJiBw
YXltZW50Q29vcmRpbmF0b3IoKSBjb25zdDsKIAotICAgIEV4Y2VwdGlvbk9yPEFwcGxlUGF5U2Vz
c2lvblBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gY29tcHV0ZVRvdGFsQW5kTGlu
ZUl0ZW1zKCk7CisgICAgRXhjZXB0aW9uT3I8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6
OlRvdGFsQW5kTGluZUl0ZW1zPiBjb21wdXRlVG90YWxBbmRMaW5lSXRlbXMoKSBjb25zdDsKICAg
ICBWZWN0b3I8UGF5bWVudEVycm9yPiBjb21wdXRlRXJyb3JzKFN0cmluZyYmIGVycm9yLCBBZGRy
ZXNzRXJyb3JzJiYsIFBheWVyRXJyb3JGaWVsZHMmJiwgSlNDOjpKU09iamVjdCogcGF5bWVudE1l
dGhvZEVycm9ycykgY29uc3Q7CisgICAgdm9pZCBjb21wdXRlQWRkcmVzc0Vycm9ycyhTdHJpbmcm
JiBlcnJvciwgQWRkcmVzc0Vycm9ycyYmLCBWZWN0b3I8UGF5bWVudEVycm9yPiYpIGNvbnN0Owor
ICAgIHZvaWQgY29tcHV0ZVBheWVyRXJyb3JzKFBheWVyRXJyb3JGaWVsZHMmJiwgVmVjdG9yPFBh
eW1lbnRFcnJvcj4mKSBjb25zdDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBjb21wdXRlUGF5bWVu
dE1ldGhvZEVycm9ycyhKU0M6OkpTT2JqZWN0KiBwYXltZW50TWV0aG9kRXJyb3JzLCBWZWN0b3I8
UGF5bWVudEVycm9yPiYpIGNvbnN0OwogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2hpcHBpbmdB
ZGRyZXNzVXBkYXRlZChWZWN0b3I8UGF5bWVudEVycm9yPiYmIGVycm9ycyk7CiAgICAgRXhjZXB0
aW9uT3I8dm9pZD4gc2hpcHBpbmdPcHRpb25VcGRhdGVkKCk7CkBAIC02Nyw2ICs3MCw3IEBAIHBy
aXZhdGU6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gZGV0YWlsc1VwZGF0ZWQoUGF5bWVudFJlcXVl
c3Q6OlVwZGF0ZVJlYXNvbiwgU3RyaW5nJiYgZXJyb3IsIEFkZHJlc3NFcnJvcnMmJiwgUGF5ZXJF
cnJvckZpZWxkcyYmLCBKU0M6OkpTT2JqZWN0KiBwYXltZW50TWV0aG9kRXJyb3JzKSBmaW5hbDsK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBtZXJjaGFudFZhbGlkYXRpb25Db21wbGV0ZWQoSlNDOjpK
U1ZhbHVlJiYpIGZpbmFsOwogICAgIHZvaWQgY29tcGxldGUoc3RkOjpvcHRpb25hbDxQYXltZW50
Q29tcGxldGU+JiYpIGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJldHJ5KFBheW1lbnRW
YWxpZGF0aW9uRXJyb3JzJiYpIGZpbmFsOwogCiAgICAgLy8gUGF5bWVudFNlc3Npb24KICAgICB1
bnNpZ25lZCB2ZXJzaW9uKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRIYW5kbGVyLmgKaW5kZXggMTczNTg3MmEx
NDUyMGQwYzlhZjQ1NjhmMmRhYzI4MGJhYTkzYjNmYS4uYTZmNTBlYWM4ZGNjZTZiYjQ4ZDhmZjYy
Mjc4NmNlODAzZjJjMDY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9QYXltZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGF5bWVudHJlcXVlc3QvUGF5bWVudEhhbmRsZXIuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1bWVudDsKIHN0cnVjdCBBZGRyZXNzRXJyb3JzOwogc3Ry
dWN0IFBheWVyRXJyb3JGaWVsZHM7CitzdHJ1Y3QgUGF5bWVudFZhbGlkYXRpb25FcnJvcnM7CiAK
IGNsYXNzIFBheW1lbnRIYW5kbGVyIDogcHVibGljIHZpcnR1YWwgUGF5bWVudFNlc3Npb25CYXNl
IHsKIHB1YmxpYzoKQEAgLTU0LDYgKzU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRXhjZXB0
aW9uT3I8dm9pZD4gZGV0YWlsc1VwZGF0ZWQoUGF5bWVudFJlcXVlc3Q6OlVwZGF0ZVJlYXNvbiwg
U3RyaW5nJiYgZXJyb3IsIEFkZHJlc3NFcnJvcnMmJiwgUGF5ZXJFcnJvckZpZWxkcyYmLCBKU0M6
OkpTT2JqZWN0KiBwYXltZW50TWV0aG9kRXJyb3JzKSA9IDA7CiAgICAgdmlydHVhbCBFeGNlcHRp
b25Pcjx2b2lkPiBtZXJjaGFudFZhbGlkYXRpb25Db21wbGV0ZWQoSlNDOjpKU1ZhbHVlJiYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGUoc3RkOjpvcHRpb25hbDxQYXltZW50Q29tcGxl
dGU+JiYpID0gMDsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IHJldHJ5KFBheW1lbnRW
YWxpZGF0aW9uRXJyb3JzJiYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJl
cXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50
UmVxdWVzdC5jcHAKaW5kZXggODhlZTBiZGJmZmU5ZjI5NTY2NTA1ZjVjYWRiOTgzZGNmYTRmYTkz
ZS4uMGQ2YjIwMGJiYzEwMGYzMzA5Y2VhODhmZGQwMzA2MzgyYTk1YTdmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVz
dC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJQYXltZW50TWV0aG9kRGF0YS5oIgog
I2luY2x1ZGUgIlBheW1lbnRPcHRpb25zLmgiCiAjaW5jbHVkZSAiUGF5bWVudFJlcXVlc3RVcGRh
dGVFdmVudC5oIgorI2luY2x1ZGUgIlBheW1lbnRWYWxpZGF0aW9uRXJyb3JzLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT05PYmpl
Y3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9UaHJvd1Njb3BlLmg+CkBAIC00MDQsNyAr
NDA1LDcgQEAgdm9pZCBQYXltZW50UmVxdWVzdDo6c2hvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFJl
ZlB0cjxET01Qcm9taXNlPiYmIGRldGFpbHNQcm9taXMKICAgICBmb3IgKGF1dG8mIHBheW1lbnRN
ZXRob2QgOiBtX3NlcmlhbGl6ZWRNZXRob2REYXRhKSB7CiAgICAgICAgIGF1dG8gZGF0YSA9IHBh
cnNlKGRvY3VtZW50LCBwYXltZW50TWV0aG9kLnNlcmlhbGl6ZWREYXRhKTsKICAgICAgICAgaWYg
KGRhdGEuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgIG1fc2hvd1Byb21pc2UtPnJlamVj
dChkYXRhLnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgICAgICBzZXR0bGVTaG93UHJvbWlz
ZShkYXRhLnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApAQCAtNDE0LDcgKzQxNSw3IEBAIHZvaWQgUGF5bWVudFJlcXVlc3Q6OnNob3coRG9jdW1l
bnQmIGRvY3VtZW50LCBSZWZQdHI8RE9NUHJvbWlzZT4mJiBkZXRhaWxzUHJvbWlzCiAKICAgICAg
ICAgYXV0byByZXN1bHQgPSBoYW5kbGVyLT5jb252ZXJ0RGF0YShkYXRhLnJlbGVhc2VSZXR1cm5W
YWx1ZSgpKTsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICAg
ICAgbV9zaG93UHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAg
ICAgICAgICAgc2V0dGxlU2hvd1Byb21pc2UocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNDIzLDEzICs0MjQsMTMgQEAgdm9p
ZCBQYXltZW50UmVxdWVzdDo6c2hvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlZlB0cjxET01Qcm9t
aXNlPiYmIGRldGFpbHNQcm9taXMKICAgICB9CiAKICAgICBpZiAoIXNlbGVjdGVkUGF5bWVudEhh
bmRsZXIpIHsKLSAgICAgICAgbV9zaG93UHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1
cHBvcnRlZEVycm9yIH0pOworICAgICAgICBzZXR0bGVTaG93UHJvbWlzZShFeGNlcHRpb24geyBO
b3RTdXBwb3J0ZWRFcnJvciB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8g
ZXhjZXB0aW9uID0gc2VsZWN0ZWRQYXltZW50SGFuZGxlci0+c2hvdygpOwogICAgIGlmIChleGNl
cHRpb24uaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgbV9zaG93UHJvbWlzZS0+cmVqZWN0KGV4
Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICBzZXR0bGVTaG93UHJvbWlzZShl
eGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNDQ1LDMyICs0NDYsNTEgQEAgdm9pZCBQYXltZW50UmVxdWVzdDo6c2hvdyhEb2N1bWVudCYg
ZG9jdW1lbnQsIFJlZlB0cjxET01Qcm9taXNlPiYmIGRldGFpbHNQcm9taXMKIAogdm9pZCBQYXlt
ZW50UmVxdWVzdDo6YWJvcnRXaXRoRXhjZXB0aW9uKEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKIHsK
LSAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6SW50ZXJhY3RpdmUpCi0gICAgICAgIHJldHVybjsK
KyAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6SW50ZXJhY3RpdmUpOworICAgIGNsb3NlQWN0
aXZlUGF5bWVudEhhbmRsZXIoKTsKIAotICAgIGlmIChhdXRvIHBheW1lbnRIYW5kbGVyID0gYWN0
aXZlUGF5bWVudEhhbmRsZXIoKSkKLSAgICAgICAgcGF5bWVudEhhbmRsZXItPmhpZGUoKTsKLSAg
ICBtX2FjdGl2ZVBheW1lbnRIYW5kbGVyID0gc3RkOjpudWxsb3B0OworICAgIGlmIChtX3Jlc3Bv
bnNlKQorICAgICAgICBtX3Jlc3BvbnNlLT5hYm9ydFdpdGhFeGNlcHRpb24oV1RGTW92ZShleGNl
cHRpb24pKTsKKyAgICBlbHNlCisgICAgICAgIHNldHRsZVNob3dQcm9taXNlKFdURk1vdmUoZXhj
ZXB0aW9uKSk7Cit9CiAKLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6SW50ZXJhY3RpdmUp
Owordm9pZCBQYXltZW50UmVxdWVzdDo6c2V0dGxlU2hvd1Byb21pc2UoRXhjZXB0aW9uT3I8UGF5
bWVudFJlc3BvbnNlJj4mJiByZXN1bHQpCit7CisgICAgaWYgKGF1dG8gc2hvd1Byb21pc2UgPSBz
dGQ6OmV4Y2hhbmdlKG1fc2hvd1Byb21pc2UsIHN0ZDo6bnVsbG9wdCkpCisgICAgICAgIHNob3dQ
cm9taXNlLT5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKK30KKwordm9pZCBQYXltZW50UmVxdWVz
dDo6Y2xvc2VBY3RpdmVQYXltZW50SGFuZGxlcigpCit7CisgICAgaWYgKGF1dG8gYWN0aXZlUGF5
bWVudEhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fYWN0aXZlUGF5bWVudEhhbmRsZXIsIHN0ZDo6
bnVsbG9wdCkpCisgICAgICAgIGFjdGl2ZVBheW1lbnRIYW5kbGVyLT5wYXltZW50SGFuZGxlci0+
aGlkZSgpOworCisgICAgbV9pc1VwZGF0aW5nID0gZmFsc2U7CiAgICAgbV9zdGF0ZSA9IFN0YXRl
OjpDbG9zZWQ7Ci0gICAgbV9zaG93UHJvbWlzZS0+cmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uKSk7
CiB9CiAKIHZvaWQgUGF5bWVudFJlcXVlc3Q6OnN0b3AoKQogewotICAgIGFib3J0V2l0aEV4Y2Vw
dGlvbihFeGNlcHRpb24geyBBYm9ydEVycm9yIH0pOworICAgIGNsb3NlQWN0aXZlUGF5bWVudEhh
bmRsZXIoKTsKKyAgICBzZXR0bGVTaG93UHJvbWlzZShFeGNlcHRpb24geyBBYm9ydEVycm9yIH0p
OwogfQogCiAvLyBodHRwczovL3d3dy53My5vcmcvVFIvcGF5bWVudC1yZXF1ZXN0LyNhYm9ydCgp
LW1ldGhvZAotRXhjZXB0aW9uT3I8dm9pZD4gUGF5bWVudFJlcXVlc3Q6OmFib3J0KEFib3J0UHJv
bWlzZSYmIHByb21pc2UpCit2b2lkIFBheW1lbnRSZXF1ZXN0OjphYm9ydChBYm9ydFByb21pc2Um
JiBwcm9taXNlKQogewotICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpJbnRlcmFjdGl2ZSkKLSAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisgICAgaWYgKG1f
cmVzcG9uc2UgJiYgbV9yZXNwb25zZS0+aGFzUmV0cnlQcm9taXNlKCkpIHsKKyAgICAgICAgcHJv
bWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6SW50ZXJhY3RpdmUpIHsK
KyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBzdG9wKCk7CisgICAgYWJvcnRXaXRoRXhj
ZXB0aW9uKEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IgfSk7CiAgICAgcHJvbWlzZS5yZXNvbHZlKCk7
Ci0gICAgcmV0dXJuIHsgfTsKIH0KIAogLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3BheW1lbnQt
cmVxdWVzdC8jY2FubWFrZXBheW1lbnQoKS1tZXRob2QKQEAgLTU4Nyw3ICs2MDcsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBQYXltZW50UmVxdWVzdDo6Y29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24o
RXZlbnQmIGV2ZW50LCBSZWY8RAogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICht
X21lcmNoYW50U2Vzc2lvblByb21pc2UtPnN0YXR1cygpID09IERPTVByb21pc2U6OlN0YXR1czo6
UmVqZWN0ZWQpIHsKLSAgICAgICAgICAgIHN0b3AoKTsKKyAgICAgICAgICAgIGFib3J0V2l0aEV4
Y2VwdGlvbihFeGNlcHRpb24geyBBYm9ydEVycm9yIH0pOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTYxMyw3ICs2MzMsNyBAQCB2b2lkIFBheW1lbnRSZXF1ZXN0OjpzZXR0
bGVEZXRhaWxzUHJvbWlzZShVcGRhdGVSZWFzb24gcmVhc29uKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAobV9pc0NhbmNlbFBlbmRpbmcgfHwgbV9kZXRhaWxzUHJvbWlzZS0+c3RhdHVzKCkg
PT0gRE9NUHJvbWlzZTo6U3RhdHVzOjpSZWplY3RlZCkgewotICAgICAgICBzdG9wKCk7CisgICAg
ICAgIGFib3J0V2l0aEV4Y2VwdGlvbihFeGNlcHRpb24geyBBYm9ydEVycm9yIH0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC02NzksNDIgKzY5OSw1NSBAQCB2b2lkIFBheW1lbnRSZXF1
ZXN0Ojp3aGVuRGV0YWlsc1NldHRsZWQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2sp
CiAKIHZvaWQgUGF5bWVudFJlcXVlc3Q6OmFjY2VwdChjb25zdCBTdHJpbmcmIG1ldGhvZE5hbWUs
IFBheW1lbnRSZXNwb25zZTo6RGV0YWlsc0Z1bmN0aW9uJiYgZGV0YWlsc0Z1bmN0aW9uLCBSZWY8
UGF5bWVudEFkZHJlc3M+JiYgc2hpcHBpbmdBZGRyZXNzLCBjb25zdCBTdHJpbmcmIHBheWVyTmFt
ZSwgY29uc3QgU3RyaW5nJiBwYXllckVtYWlsLCBjb25zdCBTdHJpbmcmIHBheWVyUGhvbmUpCiB7
CisgICAgQVNTRVJUKCFtX2lzVXBkYXRpbmcpOwogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRl
OjpJbnRlcmFjdGl2ZSk7CiAKLSAgICBhdXRvIHJlc3BvbnNlID0gUGF5bWVudFJlc3BvbnNlOjpj
cmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqdGhpcywgV1RGTW92ZShkZXRhaWxzRnVu
Y3Rpb24pKTsKLSAgICByZXNwb25zZS0+c2V0UmVxdWVzdElkKG1fZGV0YWlscy5pZCk7Ci0gICAg
cmVzcG9uc2UtPnNldE1ldGhvZE5hbWUobWV0aG9kTmFtZSk7Ci0KLSAgICBpZiAobV9vcHRpb25z
LnJlcXVlc3RTaGlwcGluZykgewotICAgICAgICByZXNwb25zZS0+c2V0U2hpcHBpbmdBZGRyZXNz
KHNoaXBwaW5nQWRkcmVzcy5wdHIoKSk7Ci0gICAgICAgIHJlc3BvbnNlLT5zZXRTaGlwcGluZ09w
dGlvbihtX3NoaXBwaW5nT3B0aW9uKTsKKyAgICBib29sIGlzUmV0cnkgPSBtX3Jlc3BvbnNlOwor
ICAgIGlmICghaXNSZXRyeSkgeworICAgICAgICBtX3Jlc3BvbnNlID0gUGF5bWVudFJlc3BvbnNl
OjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqdGhpcywgV1RGTW92ZShkZXRhaWxz
RnVuY3Rpb24pKTsKKyAgICAgICAgbV9yZXNwb25zZS0+c2V0UmVxdWVzdElkKG1fZGV0YWlscy5p
ZCk7CiAgICAgfQogCi0gICAgaWYgKG1fb3B0aW9ucy5yZXF1ZXN0UGF5ZXJOYW1lKQotICAgICAg
ICByZXNwb25zZS0+c2V0UGF5ZXJOYW1lKHBheWVyTmFtZSk7Ci0KLSAgICBpZiAobV9vcHRpb25z
LnJlcXVlc3RQYXllckVtYWlsKQotICAgICAgICByZXNwb25zZS0+c2V0UGF5ZXJFbWFpbChwYXll
ckVtYWlsKTsKLQotICAgIGlmIChtX29wdGlvbnMucmVxdWVzdFBheWVyUGhvbmUpCi0gICAgICAg
IHJlc3BvbnNlLT5zZXRQYXllclBob25lKHBheWVyUGhvbmUpOworICAgIG1fcmVzcG9uc2UtPnNl
dE1ldGhvZE5hbWUobWV0aG9kTmFtZSk7CisgICAgbV9yZXNwb25zZS0+c2V0U2hpcHBpbmdBZGRy
ZXNzKG1fb3B0aW9ucy5yZXF1ZXN0U2hpcHBpbmcgPyBzaGlwcGluZ0FkZHJlc3MucHRyKCkgOiBu
dWxscHRyKTsKKyAgICBtX3Jlc3BvbnNlLT5zZXRTaGlwcGluZ09wdGlvbihtX29wdGlvbnMucmVx
dWVzdFNoaXBwaW5nID8gbV9zaGlwcGluZ09wdGlvbiA6IFN0cmluZygpKTsKKyAgICBtX3Jlc3Bv
bnNlLT5zZXRQYXllck5hbWUobV9vcHRpb25zLnJlcXVlc3RQYXllck5hbWUgPyBwYXllck5hbWUg
OiBTdHJpbmcoKSk7CisgICAgbV9yZXNwb25zZS0+c2V0UGF5ZXJFbWFpbChtX29wdGlvbnMucmVx
dWVzdFBheWVyRW1haWwgPyBwYXllckVtYWlsIDogU3RyaW5nKCkpOworICAgIG1fcmVzcG9uc2Ut
PnNldFBheWVyUGhvbmUobV9vcHRpb25zLnJlcXVlc3RQYXllclBob25lID8gcGF5ZXJQaG9uZSA6
IFN0cmluZygpKTsKKworICAgIGlmICghaXNSZXRyeSkKKyAgICAgICAgc2V0dGxlU2hvd1Byb21p
c2UoKm1fcmVzcG9uc2UpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQobV9yZXNwb25zZS0+
aGFzUmV0cnlQcm9taXNlKCkpOworICAgICAgICBtX3Jlc3BvbnNlLT5zZXR0bGVSZXRyeVByb21p
c2UoKTsKKyAgICB9CiAKLSAgICBtX3Nob3dQcm9taXNlLT5yZXNvbHZlKHJlc3BvbnNlLmdldCgp
KTsKICAgICBtX3N0YXRlID0gU3RhdGU6OkNsb3NlZDsKIH0KIAotdm9pZCBQYXltZW50UmVxdWVz
dDo6Y29tcGxldGUoc3RkOjpvcHRpb25hbDxQYXltZW50Q29tcGxldGU+JiYgcmVzdWx0KQorRXhj
ZXB0aW9uT3I8dm9pZD4gUGF5bWVudFJlcXVlc3Q6OmNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8UGF5
bWVudENvbXBsZXRlPiYmIHJlc3VsdCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6
Q2xvc2VkKTsKKyAgICBpZiAoIW1fYWN0aXZlUGF5bWVudEhhbmRsZXIpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBBYm9ydEVycm9yIH07CisKICAgICBhY3RpdmVQYXltZW50SGFuZGxlcigp
LT5jb21wbGV0ZShXVEZNb3ZlKHJlc3VsdCkpOwogICAgIG1fYWN0aXZlUGF5bWVudEhhbmRsZXIg
PSBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBQYXltZW50UmVxdWVz
dDo6Y2FuY2VsKCkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFBheW1lbnRSZXF1ZXN0OjpyZXRyeShQYXlt
ZW50VmFsaWRhdGlvbkVycm9ycyYmIGVycm9ycykKIHsKLSAgICBpZiAobV9zdGF0ZSAhPSBTdGF0
ZTo6SW50ZXJhY3RpdmUpCi0gICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBT
dGF0ZTo6Q2xvc2VkKTsKKyAgICBpZiAoIW1fYWN0aXZlUGF5bWVudEhhbmRsZXIpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBBYm9ydEVycm9yIH07CisKKyAgICBtX3N0YXRlID0gU3RhdGU6
OkludGVyYWN0aXZlOworICAgIHJldHVybiBhY3RpdmVQYXltZW50SGFuZGxlcigpLT5yZXRyeShX
VEZNb3ZlKGVycm9ycykpOworfQogCit2b2lkIFBheW1lbnRSZXF1ZXN0OjpjYW5jZWwoKQorewog
ICAgIG1fYWN0aXZlUGF5bWVudEhhbmRsZXIgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAobV9p
c1VwZGF0aW5nKSB7CkBAIC03MjIsNyArNzU1LDcgQEAgdm9pZCBQYXltZW50UmVxdWVzdDo6Y2Fu
Y2VsKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0b3AoKTsKKyAgICBhYm9ydFdp
dGhFeGNlcHRpb24oRXhjZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVx
dWVzdC9QYXltZW50UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVx
dWVzdC9QYXltZW50UmVxdWVzdC5oCmluZGV4IGFjYmNiZjRiNjc2ZTMzOTk0MmIyOTY5ZGE3YTQw
Mjk2OTI1YzE1YTguLjllMjE1ZTVjMmRhYmU5N2I0NWM4NTk4ODgyMGU1ZjBkMzBiZDFhODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJl
cXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1l
bnRSZXF1ZXN0LmgKQEAgLTUwLDcgKzUwLDcgQEAgZW51bSBjbGFzcyBQYXltZW50U2hpcHBpbmdU
eXBlOwogc3RydWN0IFBheW1lbnREZXRhaWxzVXBkYXRlOwogc3RydWN0IFBheW1lbnRNZXRob2RE
YXRhOwogCi1jbGFzcyBQYXltZW50UmVxdWVzdCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFBh
eW1lbnRSZXF1ZXN0PiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0
V2l0aElubGluZURhdGEgeworY2xhc3MgUGF5bWVudFJlcXVlc3QgZmluYWwgOiBwdWJsaWMgQWN0
aXZlRE9NT2JqZWN0LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UGF5bWVudFJlcXVlc3Q+LCBwdWJs
aWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIFJlZkNvdW50ZWQ8UGF5bWVudFJl
cXVlc3Q+IHsKIHB1YmxpYzoKICAgICB1c2luZyBBYm9ydFByb21pc2UgPSBET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD47CiAgICAgdXNpbmcgQ2FuTWFrZVBheW1lbnRQcm9taXNlID0gRE9NUHJvbWlz
ZURlZmVycmVkPElETEJvb2xlYW4+OwpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgflBh
eW1lbnRSZXF1ZXN0KCk7CiAKICAgICB2b2lkIHNob3coRG9jdW1lbnQmLCBSZWZQdHI8RE9NUHJv
bWlzZT4mJiBkZXRhaWxzUHJvbWlzZSwgU2hvd1Byb21pc2UmJik7Ci0gICAgRXhjZXB0aW9uT3I8
dm9pZD4gYWJvcnQoQWJvcnRQcm9taXNlJiYpOworICAgIHZvaWQgYWJvcnQoQWJvcnRQcm9taXNl
JiYpOwogICAgIHZvaWQgY2FuTWFrZVBheW1lbnQoRG9jdW1lbnQmLCBDYW5NYWtlUGF5bWVudFBy
b21pc2UmJik7CiAKICAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3Q7CkBAIC05Myw3ICs5Myw4
IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiB1cGRhdGVXaXRoKFVwZGF0ZVJlYXNv
biwgUmVmPERPTVByb21pc2U+JiYpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNvbXBsZXRlTWVy
Y2hhbnRWYWxpZGF0aW9uKEV2ZW50JiwgUmVmPERPTVByb21pc2U+JiYpOwogICAgIHZvaWQgYWNj
ZXB0KGNvbnN0IFN0cmluZyYgbWV0aG9kTmFtZSwgUGF5bWVudFJlc3BvbnNlOjpEZXRhaWxzRnVu
Y3Rpb24mJiwgUmVmPFBheW1lbnRBZGRyZXNzPiYmIHNoaXBwaW5nQWRkcmVzcywgY29uc3QgU3Ry
aW5nJiBwYXllck5hbWUsIGNvbnN0IFN0cmluZyYgcGF5ZXJFbWFpbCwgY29uc3QgU3RyaW5nJiBw
YXllclBob25lKTsKLSAgICB2b2lkIGNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbXBs
ZXRlPiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBjb21wbGV0ZShzdGQ6Om9wdGlvbmFsPFBh
eW1lbnRDb21wbGV0ZT4mJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmV0cnkoUGF5bWVudFZh
bGlkYXRpb25FcnJvcnMmJik7CiAgICAgdm9pZCBjYW5jZWwoKTsKIAogICAgIHVzaW5nIE1ldGhv
ZElkZW50aWZpZXIgPSBWYXJpYW50PFN0cmluZywgVVJMPjsKQEAgLTExNyw2ICsxMTgsOCBAQCBw
cml2YXRlOgogICAgIHZvaWQgd2hlbkRldGFpbHNTZXR0bGVkKHN0ZDo6ZnVuY3Rpb248dm9pZCgp
PiYmKTsKICAgICB2b2lkIGFib3J0V2l0aEV4Y2VwdGlvbihFeGNlcHRpb24mJik7CiAgICAgUGF5
bWVudEhhbmRsZXIqIGFjdGl2ZVBheW1lbnRIYW5kbGVyKCkgeyByZXR1cm4gbV9hY3RpdmVQYXlt
ZW50SGFuZGxlciA/IG1fYWN0aXZlUGF5bWVudEhhbmRsZXItPnBheW1lbnRIYW5kbGVyLnB0cigp
IDogbnVsbHB0cjsgfQorICAgIHZvaWQgc2V0dGxlU2hvd1Byb21pc2UoRXhjZXB0aW9uT3I8UGF5
bWVudFJlc3BvbnNlJj4mJik7CisgICAgdm9pZCBjbG9zZUFjdGl2ZVBheW1lbnRIYW5kbGVyKCk7
CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlBheW1lbnRSZXF1ZXN0IjsgfQpAQCAtMTQx
LDYgKzE0NCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxQYXltZW50SGFuZGxlcldp
dGhQZW5kaW5nQWN0aXZpdHk+IG1fYWN0aXZlUGF5bWVudEhhbmRsZXI7CiAgICAgUmVmUHRyPERP
TVByb21pc2U+IG1fZGV0YWlsc1Byb21pc2U7CiAgICAgUmVmUHRyPERPTVByb21pc2U+IG1fbWVy
Y2hhbnRTZXNzaW9uUHJvbWlzZTsKKyAgICBSZWZQdHI8UGF5bWVudFJlc3BvbnNlPiBtX3Jlc3Bv
bnNlOwogICAgIGJvb2wgbV9pc1VwZGF0aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNDYW5j
ZWxQZW5kaW5nIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuaWRsCmluZGV4IDdmYzNlN2NjZThh
YjQ1Y2RiNjVhN2EwNGIxNWY3MGRiNWNlYjkzNDQuLmI5YzEyNjRjY2E0ODcxNzRmZmY0ZDU1ZDNj
NzhkMzIyNTI2Yjk5ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVu
dHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuaWRsCkBAIC0zMyw3ICszMyw3IEBACiAgICAg
U2VjdXJlQ29udGV4dCwKIF0gaW50ZXJmYWNlIFBheW1lbnRSZXF1ZXN0IDogRXZlbnRUYXJnZXQg
ewogICAgIFtDYWxsV2l0aD1Eb2N1bWVudF0gUHJvbWlzZTxQYXltZW50UmVzcG9uc2U+IHNob3co
b3B0aW9uYWwgUHJvbWlzZTxQYXltZW50RGV0YWlsc1VwZGF0ZT4gZGV0YWlsc1Byb21pc2UpOwot
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUHJvbWlzZTx2b2lkPiBhYm9ydCgpOworICAgIFByb21p
c2U8dm9pZD4gYWJvcnQoKTsKICAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIFByb21pc2U8Ym9vbGVh
bj4gY2FuTWFrZVBheW1lbnQoKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcg
aWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1Bh
eW1lbnRSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0
L1BheW1lbnRSZXNwb25zZS5jcHAKaW5kZXggY2YwYWM0Zjk0NGYxMDAyNjc1MTEwOWMzY2EwOTlj
YTM5YjQyZjdlMC4uNTY0M2ZhNGI1YjM3ZTM5MzJiNWYyMjMxYTRjY2E0MTYxOWI2NDRmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVz
cG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5
bWVudFJlc3BvbnNlLmNwcApAQCAtMzUsMzEgKzM1LDk4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFBheW1lbnRSZXNwb25zZTo6UGF5bWVudFJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBEZXRhaWxzRnVuY3Rpb24mJiBk
ZXRhaWxzRnVuY3Rpb24pCi0gICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7IGNvbnRl
eHQgfQotICAgICwgbV9yZXF1ZXN0IHsgcmVxdWVzdCB9CisgICAgOiBBY3RpdmVET01PYmplY3Qg
eyBjb250ZXh0IH0KKyAgICAsIG1fcmVxdWVzdCB7IG1ha2VXZWFrUHRyKHJlcXVlc3QpIH0KICAg
ICAsIG1fZGV0YWlsc0Z1bmN0aW9uIHsgV1RGTW92ZShkZXRhaWxzRnVuY3Rpb24pIH0KIHsKICAg
ICBBU1NFUlQobV9kZXRhaWxzRnVuY3Rpb24pOworICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQog
Ci1QYXltZW50UmVzcG9uc2U6On5QYXltZW50UmVzcG9uc2UoKSA9IGRlZmF1bHQ7Cit2b2lkIFBh
eW1lbnRSZXNwb25zZTo6ZmluaXNoQ29uc3RydWN0aW9uKCkKK3sKKyAgICBBU1NFUlQoIWhhc1Bl
bmRpbmdBY3Rpdml0eSgpKTsKKyAgICBtX3BlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0
aXZpdHkoKnRoaXMpOworfQorCitQYXltZW50UmVzcG9uc2U6On5QYXltZW50UmVzcG9uc2UoKQor
eworICAgIEFTU0VSVCghaGFzUGVuZGluZ0FjdGl2aXR5KCkpOworICAgIEFTU0VSVCghaGFzUmV0
cnlQcm9taXNlKCkpOworfQogCiB2b2lkIFBheW1lbnRSZXNwb25zZTo6Y29tcGxldGUoc3RkOjpv
cHRpb25hbDxQYXltZW50Q29tcGxldGU+JiYgcmVzdWx0LCBET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJiBwcm9taXNlKQogewotICAgIGlmIChtX2NvbXBsZXRlQ2FsbGVkKSB7CisgICAgaWYgKG1f
c3RhdGUgPT0gU3RhdGU6OlN0b3BwZWQgfHwgIW1fcmVxdWVzdCkgeworICAgICAgICBwcm9taXNl
LnJlamVjdChFeGNlcHRpb24geyBBYm9ydEVycm9yIH0pOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCBtX3JldHJ5UHJvbWlz
ZSkgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChoYXNQZW5kaW5nQWN0
aXZpdHkoKSk7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkNyZWF0ZWQpOworICAgIG1f
cGVuZGluZ0FjdGl2aXR5ID0gbnVsbHB0cjsKKyAgICBtX3N0YXRlID0gU3RhdGU6OkNvbXBsZXRl
ZDsKKworICAgIHByb21pc2Uuc2V0dGxlKG1fcmVxdWVzdC0+Y29tcGxldGUoV1RGTW92ZShyZXN1
bHQpKSk7Cit9CisKK3ZvaWQgUGF5bWVudFJlc3BvbnNlOjpyZXRyeShQYXltZW50VmFsaWRhdGlv
bkVycm9ycyYmIGVycm9ycywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sK
KyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBlZCB8fCAhbV9yZXF1ZXN0KSB7CisgICAg
ICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IgfSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGxldGVkIHx8IG1f
cmV0cnlQcm9taXNlKSB7CiAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9jb21wbGV0
ZUNhbGxlZCA9IHRydWU7Ci0gICAgbV9yZXF1ZXN0LT5jb21wbGV0ZShXVEZNb3ZlKHJlc3VsdCkp
OwotICAgIHByb21pc2UucmVzb2x2ZSgpOworICAgIEFTU0VSVChoYXNQZW5kaW5nQWN0aXZpdHko
KSk7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkNyZWF0ZWQpOworCisgICAgYXV0byBl
eGNlcHRpb24gPSBtX3JlcXVlc3QtPnJldHJ5KFdURk1vdmUoZXJyb3JzKSk7CisgICAgaWYgKGV4
Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBwcm9taXNlLnJlamVjdChleGNlcHRp
b24ucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1f
cmV0cnlQcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKK30KKwordm9pZCBQYXltZW50UmVzcG9u
c2U6OmFib3J0V2l0aEV4Y2VwdGlvbihFeGNlcHRpb24mJiBleGNlcHRpb24pCit7CisgICAgc2V0
dGxlUmV0cnlQcm9taXNlKFdURk1vdmUoZXhjZXB0aW9uKSk7CisgICAgbV9wZW5kaW5nQWN0aXZp
dHkgPSBudWxscHRyOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6Q29tcGxldGVkOworfQorCit2b2lk
IFBheW1lbnRSZXNwb25zZTo6c2V0dGxlUmV0cnlQcm9taXNlKEV4Y2VwdGlvbk9yPHZvaWQ+JiYg
cmVzdWx0KQoreworICAgIGlmICghbV9yZXRyeVByb21pc2UpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEFTU0VSVChoYXNQZW5kaW5nQWN0aXZpdHkoKSk7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0g
U3RhdGU6OkNyZWF0ZWQpOworICAgIHN0ZDo6ZXhjaGFuZ2UobV9yZXRyeVByb21pc2UsIHN0ZDo6
bnVsbG9wdCktPnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOworfQorCitib29sIFBheW1lbnRSZXNw
b25zZTo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0Cit7CisgICAgQVNT
RVJUKG1fc3RhdGUgIT0gU3RhdGU6OlN0b3BwZWQpOworICAgIHJldHVybiAhaGFzUGVuZGluZ0Fj
dGl2aXR5KCk7CiB9CiAKLXZvaWQgUGF5bWVudFJlc3BvbnNlOjpyZXRyeShQYXltZW50VmFsaWRh
dGlvbkVycm9ycyYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQordm9pZCBQ
YXltZW50UmVzcG9uc2U6OnN0b3AoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcHJv
bWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfSk7CisgICAgc2V0dGxl
UmV0cnlQcm9taXNlKEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IgfSk7CisgICAgbV9wZW5kaW5nQWN0
aXZpdHkgPSBudWxscHRyOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3RvcHBlZDsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9QYXltZW50UmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGF5bWVudHJlcXVlc3QvUGF5bWVudFJlc3BvbnNlLmgKaW5kZXggYzM2NWRmYTM5MmRkOTA4ZThh
MGZiMmViNDQ2N2E3NDU3MjQyMGIxZS4uZjdmMGY1N2YxNDZkMTljMmY3NjUzODdjOTQ5ZTQ1MmJh
NjgzYzExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVz
dC9QYXltZW50UmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRy
ZXF1ZXN0L1BheW1lbnRSZXNwb25zZS5oCkBAIC0yNywxMiArMjcsMTQgQEAKIAogI2lmIEVOQUJM
RShQQVlNRU5UX1JFUVVFU1QpCiAKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNs
dWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0
LmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU1ZhbHVl
SW5XcmFwcGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiUGF5bWVudEFkZHJlc3MuaCIKICNpbmNsdWRl
ICJQYXltZW50Q29tcGxldGUuaCIKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTQwLDEzICs0MiwxNSBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNz
IFBheW1lbnRSZXF1ZXN0Owogc3RydWN0IFBheW1lbnRWYWxpZGF0aW9uRXJyb3JzOwogCi1jbGFz
cyBQYXltZW50UmVzcG9uc2UgZmluYWwgOiBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXIsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgUmVmQ291bnRlZDxQ
YXltZW50UmVzcG9uc2U+IHsKK2NsYXNzIFBheW1lbnRSZXNwb25zZSBmaW5hbCA6IHB1YmxpYyBB
Y3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMg
UmVmQ291bnRlZDxQYXltZW50UmVzcG9uc2U+IHsKIHB1YmxpYzoKICAgICB1c2luZyBEZXRhaWxz
RnVuY3Rpb24gPSBGdW5jdGlvbjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PihKU0M6OkV4ZWNT
dGF0ZSYpPjsKIAogICAgIHN0YXRpYyBSZWY8UGF5bWVudFJlc3BvbnNlPiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGF5bWVudFJlcXVlc3QmIHJlcXVlc3QsIERldGFp
bHNGdW5jdGlvbiYmIGRldGFpbHNGdW5jdGlvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFBheW1lbnRSZXNwb25zZShjb250ZXh0LCByZXF1ZXN0LCBXVEZNb3ZlKGRldGFp
bHNGdW5jdGlvbikpKTsKKyAgICAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0UmVmKCpuZXcgUGF5
bWVudFJlc3BvbnNlKGNvbnRleHQsIHJlcXVlc3QsIFdURk1vdmUoZGV0YWlsc0Z1bmN0aW9uKSkp
OworICAgICAgICByZXNwb25zZS0+ZmluaXNoQ29uc3RydWN0aW9uKCk7CisgICAgICAgIHJldHVy
biByZXNwb25zZTsKICAgICB9CiAKICAgICB+UGF5bWVudFJlc3BvbnNlKCk7CkBAIC03NywyMCAr
ODEsMzUgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21wbGV0ZShzdGQ6Om9wdGlvbmFsPFBheW1l
bnRDb21wbGV0ZT4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogICAgIHZvaWQgcmV0
cnkoUGF5bWVudFZhbGlkYXRpb25FcnJvcnMmJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYp
OworICAgIHZvaWQgYWJvcnRXaXRoRXhjZXB0aW9uKEV4Y2VwdGlvbiYmKTsKKyAgICBib29sIGhh
c1JldHJ5UHJvbWlzZSgpIGNvbnN0IHsgcmV0dXJuICEhbV9yZXRyeVByb21pc2U7IH0KKyAgICB2
b2lkIHNldHRsZVJldHJ5UHJvbWlzZShFeGNlcHRpb25Pcjx2b2lkPiYmID0geyB9KTsKIAogICAg
IHVzaW5nIFJlZkNvdW50ZWQ8UGF5bWVudFJlc3BvbnNlPjo6cmVmOwogICAgIHVzaW5nIFJlZkNv
dW50ZWQ8UGF5bWVudFJlc3BvbnNlPjo6ZGVyZWY7CiAKIHByaXZhdGU6CiAgICAgUGF5bWVudFJl
c3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXltZW50UmVxdWVzdCYsIERldGFpbHNG
dW5jdGlvbiYmKTsKKyAgICB2b2lkIGZpbmlzaENvbnN0cnVjdGlvbigpOworCisgICAgLy8gQWN0
aXZlRE9NT2JqZWN0CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuICJQYXltZW50UmVzcG9uc2UiOyB9CisgICAgYm9vbCBjYW5TdXNwZW5k
Rm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmlu
YWw7CiAKICAgICAvLyBFdmVudFRhcmdldAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50
VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gUGF5bWVudFJlc3BvbnNlRXZl
bnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KICAgICB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCi0gICAgUmVmPFBheW1lbnRSZXF1ZXN0PiBtX3Jl
cXVlc3Q7CisgICAgZW51bSBjbGFzcyBTdGF0ZSB7CisgICAgICAgIENyZWF0ZWQsCisgICAgICAg
IENvbXBsZXRlZCwKKyAgICAgICAgU3RvcHBlZCwKKyAgICB9OworCisgICAgV2Vha1B0cjxQYXlt
ZW50UmVxdWVzdD4gbV9yZXF1ZXN0OwogICAgIFN0cmluZyBtX3JlcXVlc3RJZDsKICAgICBTdHJp
bmcgbV9tZXRob2ROYW1lOwogICAgIERldGFpbHNGdW5jdGlvbiBtX2RldGFpbHNGdW5jdGlvbjsK
QEAgLTEwMCw3ICsxMTksOSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3BheWVyTmFtZTsKICAg
ICBTdHJpbmcgbV9wYXllckVtYWlsOwogICAgIFN0cmluZyBtX3BheWVyUGhvbmU7Ci0gICAgYm9v
bCBtX2NvbXBsZXRlQ2FsbGVkIHsgZmFsc2UgfTsKKyAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6
OkNyZWF0ZWQgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4g
bV9yZXRyeVByb21pc2U7CisgICAgUmVmUHRyPFBlbmRpbmdBY3Rpdml0eTxQYXltZW50UmVzcG9u
c2U+PiBtX3BlbmRpbmdBY3Rpdml0eTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA0MTg2M2UwNTA0YjM1ZmE4MmUxNmNj
ZTlkNmQ3NzNmZTkzZjBlNjkwLi5iMTAyYWU0NWU3ZmNmNzkyYTVhMGFiZjE0MTgxM2RhM2JjOWQ0
M2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC01NDcsOSArNTQ3LDkg
QEAgSW50ZXJuYWxzOjpJbnRlcm5hbHMoRG9jdW1lbnQmIGRvY3VtZW50KQogCiAjaWYgRU5BQkxF
KEFQUExFX1BBWSkKICAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7Ci0gICAgaWYg
KGZyYW1lICYmIGZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgbV9tb2NrUGF5bWVudENvb3JkaW5h
dG9yID0gbmV3IE1vY2tQYXltZW50Q29vcmRpbmF0b3IoKmZyYW1lLT5wYWdlKCkpOwotICAgICAg
ICBmcmFtZS0+cGFnZSgpLT5zZXRQYXltZW50Q29vcmRpbmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxQ
YXltZW50Q29vcmRpbmF0b3I+KCptX21vY2tQYXltZW50Q29vcmRpbmF0b3IpKTsKKyAgICBpZiAo
ZnJhbWUgJiYgZnJhbWUtPnBhZ2UoKSAmJiBmcmFtZS0+aXNNYWluRnJhbWUoKSkgeworICAgICAg
ICBhdXRvIG1vY2tQYXltZW50Q29vcmRpbmF0b3IgPSBuZXcgTW9ja1BheW1lbnRDb29yZGluYXRv
cigqZnJhbWUtPnBhZ2UoKSk7CisgICAgICAgIGZyYW1lLT5wYWdlKCktPnNldFBheW1lbnRDb29y
ZGluYXRvcihzdGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRDb29yZGluYXRvcj4oKm1vY2tQYXltZW50
Q29vcmRpbmF0b3IpKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTQ2NDAsOSArNDY0MCw5IEBAIHZv
aWQgSW50ZXJuYWxzOjpzZXRUaW1lbGluZUN1cnJlbnRUaW1lKEFuaW1hdGlvblRpbWVsaW5lJiB0
aW1lbGluZSwgZG91YmxlIGN1cnJlCiB9CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQotTW9ja1Bh
eW1lbnRDb29yZGluYXRvciYgSW50ZXJuYWxzOjptb2NrUGF5bWVudENvb3JkaW5hdG9yKCkgY29u
c3QKK01vY2tQYXltZW50Q29vcmRpbmF0b3ImIEludGVybmFsczo6bW9ja1BheW1lbnRDb29yZGlu
YXRvcihEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICptX21vY2tQYXlt
ZW50Q29vcmRpbmF0b3I7CisgICAgcmV0dXJuIGRvd25jYXN0PE1vY2tQYXltZW50Q29vcmRpbmF0
b3I+KGRvY3VtZW50LmZyYW1lKCktPnBhZ2UoKS0+cGF5bWVudENvb3JkaW5hdG9yKCkuY2xpZW50
KCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGU2NTM4
ZWJmNDdjZjkxMGY0ODMzMjJkMGZlNDk1MGJkYjljYWY5ZGUuLmMzNzVhY2U1ZTNkZTdjMDc3ZDU2
Y2EzNGI4NWMzNjZlZjY1Y2FmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAt
Njk4LDcgKzY5OCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkK
LSAgICBNb2NrUGF5bWVudENvb3JkaW5hdG9yJiBtb2NrUGF5bWVudENvb3JkaW5hdG9yKCkgY29u
c3Q7CisgICAgTW9ja1BheW1lbnRDb29yZGluYXRvciYgbW9ja1BheW1lbnRDb29yZGluYXRvcihE
b2N1bWVudCYpIGNvbnN0OwogI2VuZGlmCiAKICAgICBTdHJpbmcgdGltZWxpbmVEZXNjcmlwdGlv
bihBbmltYXRpb25UaW1lbGluZSYpOwpAQCAtNzk5LDEwICs3OTksNiBAQCBwcml2YXRlOgogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvclN0dWJGcm9udGVuZD4gbV9pbnNwZWN0b3JGcm9u
dGVuZDsKICAgICBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gbV9jYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOwotCi0jaWYgRU5BQkxFKEFQUExFX1BBWSkKLSAgICBNb2NrUGF5bWVudENvb3Jk
aW5hdG9yKiBtX21vY2tQYXltZW50Q29vcmRpbmF0b3IgeyBudWxscHRyIH07Ci0jZW5kaWYKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bAppbmRleCBmZDk2YTcyY2RkOTRhNzdhZmIyY2ZjOGFjOWVkZTI0Y2YwZDkyNjBkLi4wMDNmYzgw
NmIxMjVmM2FjZDRjYmJiMDQzMzViMDk4YmExZTg3NTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCkBAIC02ODUsNyArNjg1LDcgQEAgZW51bSBDb21wb3NpdGluZ1BvbGljeSB7
CiAgICAgW0VuYWJsZWRBdFJ1bnRpbWU9V2ViQW5pbWF0aW9uc10gRE9NU3RyaW5nIHRpbWVsaW5l
RGVzY3JpcHRpb24oQW5pbWF0aW9uVGltZWxpbmUgdGltZWxpbmUpOwogICAgIFtFbmFibGVkQXRS
dW50aW1lPVdlYkFuaW1hdGlvbnNdIHZvaWQgcGF1c2VUaW1lbGluZShBbmltYXRpb25UaW1lbGlu
ZSB0aW1lbGluZSk7CiAgICAgW0VuYWJsZWRBdFJ1bnRpbWU9V2ViQW5pbWF0aW9uc10gdm9pZCBz
ZXRUaW1lbGluZUN1cnJlbnRUaW1lKEFuaW1hdGlvblRpbWVsaW5lIHRpbWVsaW5lLCBkb3VibGUg
Y3VycmVudFRpbWUpOwotICAgIFtDb25kaXRpb25hbD1BUFBMRV9QQVldIHJlYWRvbmx5IGF0dHJp
YnV0ZSBNb2NrUGF5bWVudENvb3JkaW5hdG9yIG1vY2tQYXltZW50Q29vcmRpbmF0b3I7CisgICAg
W0NhbGxXaXRoPURvY3VtZW50LCBDb25kaXRpb25hbD1BUFBMRV9QQVldIHJlYWRvbmx5IGF0dHJp
YnV0ZSBNb2NrUGF5bWVudENvb3JkaW5hdG9yIG1vY2tQYXltZW50Q29vcmRpbmF0b3I7CiAKICAg
ICBib29sZWFuIGlzU3lzdGVtUHJldmlld0xpbmsoRWxlbWVudCBlbGVtZW50KTsKICAgICBib29s
ZWFuIGlzU3lzdGVtUHJldmlld0ltYWdlKEVsZW1lbnQgZWxlbWVudCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcAppbmRleCBkODYxZjM5
OGY1N2RiZTE3OWY3YWU1YmE0YTM0ZTIzYjlhZGVjNTVjLi5iMDZjMzdkMDZjNmRkZTE4OTEwZTZj
OThiMjI1YzU2YjIwNTBhYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tQYXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a1BheW1lbnRDb29yZGluYXRvci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShB
UFBMRV9QQVkpCiAKKyNpbmNsdWRlICJBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oIgog
I2luY2x1ZGUgIk1vY2tQYXltZW50LmgiCiAjaW5jbHVkZSAiTW9ja1BheW1lbnRDb250YWN0Lmgi
CiAjaW5jbHVkZSAiTW9ja1BheW1lbnRNZXRob2QuaCIKQEAgLTIwMCw3ICsyMDEsMTAgQEAgdm9p
ZCBNb2NrUGF5bWVudENvb3JkaW5hdG9yOjpjYW5jZWxQYXltZW50KCkKIAogdm9pZCBNb2NrUGF5
bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVBheW1lbnRTZXNzaW9uKHN0ZDo6b3B0aW9uYWw8UGF5
bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiYgcmVzdWx0KQogewotICAgIGlmICghaXNGaW5hbFN0
YXRlUmVzdWx0KHJlc3VsdCkpCisgICAgYXV0byBpc0ZpbmFsU3RhdGUgPSBpc0ZpbmFsU3RhdGVS
ZXN1bHQocmVzdWx0KTsKKyAgICBtX2Vycm9ycyA9IFdURk1vdmUocmVzdWx0LT5lcnJvcnMpOwor
CisgICAgaWYgKCFpc0ZpbmFsU3RhdGUpCiAgICAgICAgIHJldHVybjsKIAogICAgICsraGlkZUNv
dW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3Jk
aW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3Iu
aAppbmRleCA1YzM2MzVlNzMwMTU3YmEyZGI5YWUwM2M3ZjIwZDY3ZGNiNDVmNTQzLi5hYmY4OTBm
ZmEwMzkyMDI3NzQzY2JmOWY2MTlmZDczOWFkMjc4MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuaApAQCAtNzIsNiArNzIsOCBAQCBwcml2
YXRlOgogICAgIHZvaWQgY2FuY2VsUGF5bWVudFNlc3Npb24oKSBmaW5hbDsKICAgICB2b2lkIHBh
eW1lbnRDb29yZGluYXRvckRlc3Ryb3llZCgpIGZpbmFsOwogCisgICAgYm9vbCBpc01vY2tQYXlt
ZW50Q29vcmRpbmF0b3IoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKICAgICB2b2lk
IHVwZGF0ZVRvdGFsQW5kTGluZUl0ZW1zKGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1
ZXN0OjpUb3RhbEFuZExpbmVJdGVtcyYpOwogCiAgICAgUGFnZSYgbV9wYWdlOwpAQCAtODQsNCAr
ODYsOCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6TW9ja1BheW1lbnRDb29yZGluYXRvcikKKyAgICBz
dGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50
JiBwYXltZW50Q29vcmRpbmF0b3JDbGllbnQpIHsgcmV0dXJuIHBheW1lbnRDb29yZGluYXRvckNs
aWVudC5pc01vY2tQYXltZW50Q29vcmRpbmF0b3IoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19FTkQoKQorCiAjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlZjQzYWI5YTU5
MzI2ZmI1MTcxYWQxZGZhNjk5MDA1ODBjYTU1NTY0Li4xZWEyZWU2ZjdmYmFmOTNiMWU1ZjIwYzYx
ZDdlMTYyZWI0MGYxNjUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgtMTAtMjcgIEFuZHkg
RXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtQYXltZW50IFJlcXVlc3RdIElt
cGxlbWVudCBQYXltZW50UmVzcG9uc2UucmV0cnkoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwOTg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1l
bnQtcmVzcG9uc2UtcmVqZWN0cy1pZi1ub3QtYWN0aXZlLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNl
LXJlamVjdHMtaWYtbm90LWFjdGl2ZS5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcmV0cnktbWV0aG9kLmh0dHBz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9wYXltZW50cmVxdWVz
dC9wYXltZW50LXJlc3BvbnNlLXJldHJ5LW1ldGhvZC5odHRwcy5odG1sOiBBZGRlZC4KKwogMjAx
OC0xMC0xNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbaU9TXSBDYW4ndCBzZWxlY3QgdGV4dCBhZnRlciBkaXNtaXNzaW5nIHRoZSBrZXlib2FyZCB3
aGVuIGNoYW5naW5nIGZvY3VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Bh
eW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcmVqZWN0cy1pZi1ub3QtYWN0aXZlLmh0dHBz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5
bWVudC1yZXNwb25zZS1yZWplY3RzLWlmLW5vdC1hY3RpdmUuaHR0cHMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjk1ZDM1YTM1ODA2NTRiMzA0MzA1ZTZmNDk4MzkyOWIyMTA0NTlmNjYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1l
bnQtcmVzcG9uc2UtcmVqZWN0cy1pZi1ub3QtYWN0aXZlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDggQEAKKworCisKKworUEFTUyByZXRyeSgpJ3MgcmV0cnlQcm9taXNlIHJlamVjdHMg
aWYgZG9jdW1lbnQgaXMgbm90IGZ1bGx5IGFjdGl2ZS4gCitQQVNTIHJldHJ5KCkncyByZXRyeVBy
b21pc2UgcmVqZWN0cyBpZiB0aGUgZG9jdW1lbnQgYmVjb21lcyBub3QgZnVsbHkgYWN0aXZlLiAK
K1BBU1MgY29tcGxldGUoKSdzIGNvbXBsZXRlUHJvbWlzZSByZWplY3RzIGlmIGRvY3VtZW50IGlz
IG5vdCBmdWxseSBhY3RpdmUuIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcmVqZWN0cy1pZi1ub3QtYWN0aXZlLmh0
dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQt
cmVzcG9uc2UtcmVqZWN0cy1pZi1ub3QtYWN0aXZlLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGVi
OTUxNmU4MjFmMGFlMzQ4YjZlZDNiZTExZTkwNjY1YzBjMDNhNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1y
ZWplY3RzLWlmLW5vdC1hY3RpdmUuaHR0cHMuaHRtbApAQCAtMCwwICsxLDEzOSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJo
dHRwczovL3czYy5naXRodWIuaW8vcGF5bWVudC1yZXF1ZXN0LyNyZXRyeS1tZXRob2QiPgorPHRp
dGxlPlBheW1lbnRSZXNwb25zZSByZXRyeSgpIHJlamVjdHMgaWYgZG9jIGlzIG5vdCBmdWxseSBh
Y3RpdmU8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvcGF5bWVudC1yZXF1ZXN0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3BheW1l
bnQtcmVxdWVzdC8jZG9tLXBheW1lbnRyZXNwb25zZS1yZXRyeSI+Cis8Ym9keT4KKzxzY3JpcHQ+
CitzZXR1cCh7IGV4cGxpY2l0X2RvbmU6IHRydWUsIGV4cGxpY2l0X3RpbWVvdXQ6IHRydWUgfSk7
Citjb25zdCB2YWxpZE1ldGhvZHMgPSBPYmplY3QuZnJlZXplKFt2YWxpZFBheW1lbnRNZXRob2Qo
KV0pOworY29uc3QgdmFsaWRBbW91bnQgPSBPYmplY3QuZnJlZXplKHsKKyAgY3VycmVuY3k6ICJV
U0QiLAorICB2YWx1ZTogIjUuMDAiLAorfSk7Citjb25zdCB2YWxpZFRvdGFsID0gT2JqZWN0LmZy
ZWV6ZSh7CisgIGxhYmVsOiAiVG90YWwgZHVlIiwKKyAgYW1vdW50OiB2YWxpZEFtb3VudCwKK30p
OworY29uc3QgdmFsaWREZXRhaWxzID0gT2JqZWN0LmZyZWV6ZSh7CisgIHRvdGFsOiB2YWxpZFRv
dGFsLAorfSk7CisKK2Z1bmN0aW9uIGdldExvYWRlZFBheW1lbnRSZXNwb25zZShpZnJhbWUsIHVy
bCkgeworICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgaWZyYW1lLmFkZEV2
ZW50TGlzdGVuZXIoCisgICAgICAibG9hZCIsCisgICAgICAoKSA9PiB7CisgICAgICAgIGNvbnN0
IHsgUGF5bWVudFJlcXVlc3QgfSA9IGlmcmFtZS5jb250ZW50V2luZG93OworICAgICAgICBhY3Rp
dmF0ZVRoZW4oYXN5bmMgKCkgPT4geworICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgUGF5
bWVudFJlcXVlc3QodmFsaWRNZXRob2RzLCB2YWxpZERldGFpbHMpOworICAgICAgICAgIGNvbnN0
IGFjY2VwdFByb21pc2UgPSByZXF1ZXN0LnNob3coKTsKKyAgICAgICAgICBpbnRlcm5hbHMubW9j
a1BheW1lbnRDb29yZGluYXRvci5hY2NlcHRQYXltZW50KCk7CisgICAgICAgICAgY29uc3QgcmVz
cG9uc2UgPSBhd2FpdCBhY2NlcHRQcm9taXNlOworICAgICAgICAgIHJlc29sdmUocmVzcG9uc2Up
OworICAgICAgICB9KTsKKyAgICAgIH0sCisgICAgICB7IG9uY2U6IHRydWUgfQorICAgICk7Cisg
ICAgaWZyYW1lLnNyYyA9IHVybDsKKyAgfSk7Cit9CisKK2Z1bmN0aW9uIG1ldGhvZE5vdEZ1bGx5
QWN0aXZlKGJ1dHRvbiwgbWV0aG9kTmFtZSwgLi4uYXJncykgeworICBjb25zdCB0ZXh0ID0gYnV0
dG9uLnRleHRDb250ZW50LnRyaW0oKTsKKyAgYnV0dG9uLmlubmVyVGV4dCA9ICIiOworICBwcm9t
aXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiaWZyYW1lIik7CisgICAgaWZyYW1lLmFsbG93UGF5bWVudFJlcXVlc3QgPSB0cnVl
OworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKKworICAgIC8vIFdlIGZp
cnN0IGdvdCB0byBwYWdlMS5odG1sLCBncmFiIGEgUGF5bWVudFJlc3BvbnNlIGluc3RhbmNlLgor
ICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZ2V0TG9hZGVkUGF5bWVudFJlc3BvbnNlKAorICAg
ICAgaWZyYW1lLAorICAgICAgIi9wYXltZW50LXJlcXVlc3QvcmVzb3VyY2VzL3BhZ2UxLmh0bWwi
CisgICAgKTsKKyAgICAvLyBXZSBuYXZpZ2F0ZSB0aGUgaWZyYW1lIGFnYWluLCBwdXR0aW5nIHJl
c3BvbnNlJ3MgZG9jdW1lbnQgaW50byBhbiBpbmFjdGl2ZSBzdGF0ZS4KKyAgICBhd2FpdCBuZXcg
UHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgIGlmcmFtZS5hZGRFdmVudExpc3RlbmVyKCJsb2Fk
IiwgcmVzb2x2ZSk7CisgICAgICBpZnJhbWUuc3JjID0gIi9wYXltZW50LXJlcXVlc3QvcmVzb3Vy
Y2VzL3BhZ2UyLmh0bWwiOworICAgIH0pOworICAgIC8vIE5vdywgcmVzcG9uc2UncyByZWxldmFu
dCBnbG9iYWwgb2JqZWN0J3MgZG9jdW1lbnQgaXMgbm8gbG9uZ2VyIGFjdGl2ZS4KKyAgICAvLyBT
bywgcHJvbWlzZSBuZWVkcyB0byByZWplY3QgYXBwcm9wcmlhdGVseS4KKyAgICBjb25zdCBwcm9t
aXNlID0gcmVzcG9uc2VbbWV0aG9kTmFtZV0oLi4uYXJncyk7CisgICAgYXdhaXQgcHJvbWlzZV9y
ZWplY3RzKAorICAgICAgdCwKKyAgICAgICJBYm9ydEVycm9yIiwKKyAgICAgIHByb21pc2UsCisg
ICAgICAiSW5hY3RpdmUgZG9jdW1lbnQsIHNvIG11c3QgdGhyb3cgQWJvcnRFcnJvciIKKyAgICAp
OworICAgIC8vIFdlIGFyZSBkb25lLCBzbyBjbGVhbiB1cC4KKyAgICBpZnJhbWUucmVtb3ZlKCk7
CisgIH0sIHRleHQpOworfQorCitmdW5jdGlvbiBtZXRob2RCZWNvbWVzTm90RnVsbHlBY3RpdmUo
YnV0dG9uLCBtZXRob2ROYW1lLCAuLi5hcmdzKSB7CisgIGNvbnN0IHRleHQgPSBidXR0b24udGV4
dENvbnRlbnQudHJpbSgpOworICBidXR0b24uaW5uZXJUZXh0ID0gIiI7CisgIHByb21pc2VfdGVz
dChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJpZnJhbWUiKTsKKyAgICBpZnJhbWUuYWxsb3dQYXltZW50UmVxdWVzdCA9IHRydWU7CisgICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOworCisgICAgLy8gV2UgZmlyc3QgZ290
IHRvIHBhZ2UxLmh0bWwsIGdyYWIgYSBQYXltZW50UmVzcG9uc2UgaW5zdGFuY2UuCisgICAgY29u
c3QgcmVzcG9uc2UgPSBhd2FpdCBnZXRMb2FkZWRQYXltZW50UmVzcG9uc2UoCisgICAgICBpZnJh
bWUsCisgICAgICAiL3BheW1lbnQtcmVxdWVzdC9yZXNvdXJjZXMvcGFnZTEuaHRtbCIKKyAgICAp
OworCisgICAgLy8gd2UgZ2V0IHRoZSBwcm9taXNlIGZyb20gcGFnZTEuaHRtbCwgd2hpbGUgaXQn
cyBhY3RpdmUhCisgICAgY29uc3QgcHJvbWlzZSA9IHJlc3BvbnNlW21ldGhvZE5hbWVdKC4uLmFy
Z3MpOworCisgICAgLy8gV2UgbmF2aWdhdGUgdGhlIGlmcmFtZSBhZ2FpbiwgcHV0dGluZyByZXNw
b25zZSdzIGRvY3VtZW50IGludG8gYW4gaW5hY3RpdmUgc3RhdGUuCisgICAgYXdhaXQgbmV3IFBy
b21pc2UocmVzb2x2ZSA9PiB7CisgICAgICBpZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIs
IHJlc29sdmUpOworICAgICAgaWZyYW1lLnNyYyA9ICIvcGF5bWVudC1yZXF1ZXN0L3Jlc291cmNl
cy9wYWdlMi5odG1sIjsKKyAgICB9KTsKKworICAgIC8vIE5vdywgcmVzcG9uc2UncyByZWxldmFu
dCBnbG9iYWwgb2JqZWN0J3MgZG9jdW1lbnQgaXMgbm8gbG9uZ2VyIGFjdGl2ZS4KKyAgICAvLyBT
bywgcHJvbWlzZSBuZWVkcyB0byByZWplY3QgYXBwcm9wcmlhdGVseS4KKyAgICBhd2FpdCBwcm9t
aXNlX3JlamVjdHMoCisgICAgICB0LAorICAgICAgIkFib3J0RXJyb3IiLAorICAgICAgcHJvbWlz
ZSwKKyAgICAgICJJbmFjdGl2ZSBkb2N1bWVudCwgc28gbXVzdCB0aHJvdyBBYm9ydEVycm9yIgor
ICAgICk7CisgICAgLy8gV2UgYXJlIGRvbmUsIHNvIGNsZWFuIHVwLgorICAgIGlmcmFtZS5yZW1v
dmUoKTsKKyAgfSwgdGV4dCk7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwg
YXN5bmMgKCkgPT4geworICBhd2FpdCBtZXRob2ROb3RGdWxseUFjdGl2ZShkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiYnV0dG9uMSIpLCAncmV0cnknLCB7fSk7CisgIGF3YWl0IG1ldGhvZEJlY29t
ZXNOb3RGdWxseUFjdGl2ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9uMiIpLCAncmV0
cnknLCB7fSk7CisgIGF3YWl0IG1ldGhvZE5vdEZ1bGx5QWN0aXZlKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJidXR0b24zIiksICdjb21wbGV0ZScsICdzdWNjZXNzJyk7CisgIGRvbmUoKTsKK30p
OworPC9zY3JpcHQ+Cis8c2VjdGlvbj4KKyAgPG9sPgorICAgIDxsaT4KKyAgICAgIDxidXR0b24g
aWQ9ImJ1dHRvbjEiPgorICAgICAgICByZXRyeSgpJ3MgcmV0cnlQcm9taXNlIHJlamVjdHMgaWYg
ZG9jdW1lbnQgaXMgbm90IGZ1bGx5IGFjdGl2ZS4KKyAgICAgIDwvYnV0dG9uPgorICAgIDwvbGk+
CisgICAgPGxpPgorICAgICAgPGJ1dHRvbiBpZD0iYnV0dG9uMiI+CisgICAgICAgIHJldHJ5KCkn
cyByZXRyeVByb21pc2UgcmVqZWN0cyBpZiB0aGUgZG9jdW1lbnQgYmVjb21lcyBub3QgZnVsbHkg
YWN0aXZlLgorICAgICAgPC9idXR0b24+CisgICAgPC9saT4KKyAgICA8bGk+CisgICAgICA8YnV0
dG9uIGlkPSJidXR0b24zIj4KKyAgICAgICAgY29tcGxldGUoKSdzIGNvbXBsZXRlUHJvbWlzZSBy
ZWplY3RzIGlmIGRvY3VtZW50IGlzIG5vdCBmdWxseSBhY3RpdmUuCisgICAgICA8L2J1dHRvbj4K
KyAgICA8L2xpPgorICA8L29sPgorPC9zZWN0aW9uPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJldHJ5LW1ldGhvZC5o
dHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0
L3BheW1lbnQtcmVzcG9uc2UtcmV0cnktbWV0aG9kLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44ZjEwNGM2ODNiZjVmYmI5MjJmYmU1OWY3MjllZTJjNzk1ZDAzMTRkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJl
c3BvbnNlLXJldHJ5LW1ldGhvZC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNiBAQAor
CisKKworCisKKworCisKKworCitQQVNTIENhbiBjb25zdHJ1Y3QgYSBwYXltZW50IHJlcXVlc3Qg
KHNtb2tlIHRlc3QpLiAKK1BBU1MgUGF5bWVudFJlc3BvbnNlLnByb3RvdHlwZSBtdXN0IGhhdmUg
YSByZXRyeSgpIGZ1bmN0aW9uIChzbW9rZSB0ZXN0KS4gCitQQVNTIEEgY29tcGxldGVkIHBheW1l
bnQgcmVxdWVzdCBjYW5ub3QgYmUgcmV0cmllZC4gCitQQVNTIENhbGxpbmcgcmV0cnkoKSBtb3Jl
IHRoYW4gb25jZSB5aWVsZCBhIHJlamVjdGVkIHByb21pc2UsIGJ1dCB0aGUKKyAgICAgIHJldHJ5
UHJvbWlzZSByZXNvbHZlcyBpbmRlcGVuZGVudGx5LiAKK1BBU1MgQ2FsbGluZyBjb21wbGV0ZSgp
IHdoaWxlIGEgcmV0cnkoKSBpcyBpbiBwcm9ncmVzcyByZXN1bHRzIGluIGFuIEludmFsaWRTdGF0
ZUVycm9yLiAKK1BBU1MgVHJ5aW5nIHRvIGFib3J0KCkgdmlhIFBheW1lbnRSZXF1ZXN0IGlzIG5v
dCBwb3NzaWJsZS4gCitQQVNTIEl0J3MgcG9zc2libGUgdG8gcmV0cnkoKSBtdWx0aXBsZSB0aW1l
cyBhbmQgZXZlbnR1YWxseSBjb21wbGV0ZSgpLgorICAgICAgQWZ0ZXIgY29tcGxldGUoKSwgaG93
ZXZlciwgcmV0cnkoKSByZWplY3RzIHdpdGggYW4gSW52YWxpZFN0YXRlRXJyb3IuIAorUEFTUyBU
aGUgdXNlciBhYm9ydGluZyByZXRyeWluZyBhIHBheW1lbnQgY2F1c2VzIHRoZSByZXRyeVByb21p
c2UgdG8gcmVqZWN0IHdpdGggQWJvcnRFcnJvci4KKyAgICAgIEFib3J0aW5nIGEgcGF5bWVudCBp
cyBjYXVzZXMgaXQgY29tcGxldGUuIAorUEFTUyBXaGVuIHJldHJ5aW5nLCB0aGUgdXNlciBpcyBz
aG93biBlcnJvciBmaWVsZHMgdG8gZml4LiAKK1BBU1MgV2hlbiAiYWJvcnQgdGhlIHVwZGF0ZSIg
b2NjdXJzIGJlY2F1c2Ugb2YgYW4gdXBkYXRlIGVycm9yLAorICAgICAgdGhlIGByZXRyeVByb21p
c2VgIGlzIHJlamVjdGVkIGFuZCByZXNwb25zZS5bW2NvbXBsZXRlXV0gYmVjb21lcyB0cnVlLiAK
K1BBU1MgQ2FsbGluZyByZXRyeSgpIG11bHRpcGxlIHRpbWVzIGlzIGFsd2F5cyBhIG5ldyBvYmpl
Y3QuIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0
L3BheW1lbnQtcmVzcG9uc2UtcmV0cnktbWV0aG9kLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcmV0cnktbWV0aG9kLmh0
dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjA1YjE0MjBmYzBmMTlhZWE5NmZhYjhhMmE3YWMzNzFkYWRi
ZTBkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJl
cXVlc3QvcGF5bWVudC1yZXNwb25zZS1yZXRyeS1tZXRob2QuaHR0cHMuaHRtbApAQCAtMCwwICsx
LDI4NSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGY4Ij4KKzxsaW5rIHJl
bD0iaGVscCIgaHJlZj0iaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3BheW1lbnQtcmVxdWVzdC8jZG9t
LXBheW1lbnRyZXNwb25zZS1yZXRyeSI+Cis8dGl0bGU+CisgIFBheW1lbnRSZXNwb25zZS5wcm90
b3R5cGUucmV0cnkoKSBtZXRob2QKKzwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVz
b3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy9w
YXltZW50LXJlcXVlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9oZWxwZXJzLmpz
Ij48L3NjcmlwdD4KKzxib2R5PgorPHNjcmlwdD4KK3Rlc3QoKCkgPT4geworICBhc3NlcnRfdHJ1
ZSgKKyAgICAicmV0cnkiIGluIFBheW1lbnRSZXNwb25zZS5wcm90b3R5cGUsCisgICAgInJldHJ5
IG11c3QgYmUgaW4gcHJvdG90eXBlIgorICApOworICBhc3NlcnRfdHJ1ZSgKKyAgICBQYXltZW50
UmVzcG9uc2UucHJvdG90eXBlLnJldHJ5IGluc3RhbmNlb2YgRnVuY3Rpb24sCisgICAgInJldHJ5
IG11c3QgYmUgYSBmdW5jdGlvbiIKKyAgKTsKK30sICJQYXltZW50UmVzcG9uc2UucHJvdG90eXBl
IG11c3QgaGF2ZSBhIHJldHJ5KCkgZnVuY3Rpb24gKHNtb2tlIHRlc3QpLiIpOworCitmdW5jdGlv
biBjaGVja0NvbXBsZXRlZENhbnRSZXRyeShidXR0b24pIHsKKyAgYnV0dG9uLmRpc2FibGVkID0g
dHJ1ZTsKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHsgcmVzcG9uc2Ug
fSA9IGF3YWl0IGdldFBheW1lbnRSZXF1ZXN0UmVzcG9uc2UoKTsKKyAgICAvLyBzZXRzIHJlc3Bv
bnNlLltbY29tcGxldGVdXSB0byB0cnVlLgorICAgIGF3YWl0IHJlc3BvbnNlLmNvbXBsZXRlKCJz
dWNjZXNzIik7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cygKKyAgICAgIHQsCisgICAgICAi
SW52YWxpZFN0YXRlRXJyb3IiLAorICAgICAgcmVzcG9uc2UucmV0cnkoe30pLAorICAgICAgInJl
c3BvbnNlLltbY29tcGxldGVdXSBpcyB0cnVlLCBzbyByZWplY3RzIHdpdGggSW52YWxpZFN0YXRl
RXJyb3IuIgorICAgICk7CisgIH0sIGJ1dHRvbi50ZXh0Q29udGVudC50cmltKCkpOworICBidXR0
b24uaW5uZXJUZXh0ID0gIiI7Cit9CisKK2Z1bmN0aW9uIHJlcGVhdGVkQ2FsbHNUb1JldHJ5KGJ1
dHRvbikgeworICBidXR0b24uZGlzYWJsZWQgPSB0cnVlOworICBwcm9taXNlX3Rlc3QoYXN5bmMg
dCA9PiB7CisgICAgY29uc3QgeyByZXNwb25zZSB9ID0gYXdhaXQgZ2V0UGF5bWVudFJlcXVlc3RS
ZXNwb25zZSgpOworICAgIGNvbnN0IHJldHJ5UHJvbWlzZSA9IHJlc3BvbnNlLnJldHJ5KHt9KTsK
KyAgICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisgICAgICB0LAorICAgICAgIkludmFsaWRTdGF0
ZUVycm9yIiwKKyAgICAgIHJlc3BvbnNlLnJldHJ5KHt9KSwKKyAgICAgICJDYWxsaW5nIHJldHJ5
KCkgYWdhaW4gcmVqZWN0cyB3aXRoIGFuIEludmFsaWRTdGF0ZUVycm9yIgorICAgICk7CisgICAg
aW50ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0b3IuYWNjZXB0UGF5bWVudCgpOworICAgIGF3
YWl0IHJldHJ5UHJvbWlzZTsKKyAgICBhd2FpdCByZXNwb25zZS5jb21wbGV0ZSgic3VjY2VzcyIp
OworICB9LCBidXR0b24udGV4dENvbnRlbnQudHJpbSgpKTsKKyAgYnV0dG9uLmlubmVyVGV4dCA9
ICIiOworfQorCitmdW5jdGlvbiBjYWxsQ29tcGxldGVXaGlsZVJldHJ5aW5nKGJ1dHRvbikgewor
ICBidXR0b24uZGlzYWJsZWQgPSB0cnVlOworICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7Cisg
ICAgY29uc3QgeyByZXNwb25zZSB9ID0gYXdhaXQgZ2V0UGF5bWVudFJlcXVlc3RSZXNwb25zZSgp
OworICAgIGNvbnN0IHJldHJ5UHJvbWlzZSA9IHJlc3BvbnNlLnJldHJ5KHt9KTsKKyAgICBhd2Fp
dCBwcm9taXNlX3JlamVjdHMoCisgICAgICB0LAorICAgICAgIkludmFsaWRTdGF0ZUVycm9yIiwK
KyAgICAgIHJlc3BvbnNlLmNvbXBsZXRlKCJzdWNjZXNzIiksCisgICAgICAiQ2FsbGluZyBjb21w
bGV0ZSgpIHdoaWxlIHJldHJ5aW5nIHJlamVjdHMgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvciIK
KyAgICApOworICAgIGludGVybmFscy5tb2NrUGF5bWVudENvb3JkaW5hdG9yLmFjY2VwdFBheW1l
bnQoKTsKKyAgICBhd2FpdCByZXRyeVByb21pc2U7CisgICAgYXdhaXQgcmVzcG9uc2UuY29tcGxl
dGUoInN1Y2Nlc3MiKTsKKyAgfSwgYnV0dG9uLnRleHRDb250ZW50LnRyaW0oKSk7CisgIGJ1dHRv
bi5pbm5lclRleHQgPSAiIjsKK30KKworZnVuY3Rpb24gY2FsbGluZ1JlcXVlc3RBYm9ydE11c3RO
b3RBYm9ydChidXR0b24pIHsKKyAgYnV0dG9uLmRpc2FibGVkID0gdHJ1ZTsKKyAgcHJvbWlzZV90
ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHsgcmVzcG9uc2UsIHJlcXVlc3QgfSA9IGF3YWl0
IGdldFBheW1lbnRSZXF1ZXN0UmVzcG9uc2UoKTsKKyAgICBjb25zdCByZXRyeVByb21pc2UgPSBy
ZXNwb25zZS5yZXRyeSh7fSk7CisgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICAgICAgdCwK
KyAgICAgICJJbnZhbGlkU3RhdGVFcnJvciIsCisgICAgICByZXF1ZXN0LmFib3J0KCksCisgICAg
ICAiQ2FsbGluZyByZXF1ZXN0LmFib3J0KCkgd2hpbGUgcmV0cnlpbmcgcmVqZWN0cyB3aXRoIGFu
IEludmFsaWRTdGF0ZUVycm9yIgorICAgICk7CisgICAgaW50ZXJuYWxzLm1vY2tQYXltZW50Q29v
cmRpbmF0b3IuYWNjZXB0UGF5bWVudCgpOworICAgIGF3YWl0IHJldHJ5UHJvbWlzZTsKKyAgICBh
d2FpdCByZXNwb25zZS5jb21wbGV0ZSgic3VjY2VzcyIpOworICB9LCBidXR0b24udGV4dENvbnRl
bnQudHJpbSgpKTsKKyAgYnV0dG9uLmlubmVyVGV4dCA9ICIiOworfQorCitmdW5jdGlvbiBjYW5S
ZXRyeU11bHRpcGxlVGltZXMoYnV0dG9uKSB7CisgIGJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7Cisg
IHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCB7IHJlc3BvbnNlIH0gPSBhd2Fp
dCBnZXRQYXltZW50UmVxdWVzdFJlc3BvbnNlKCk7CisgICAgdmFyIHByb21pc2UgPSByZXNwb25z
ZS5yZXRyeSh7fSk7CisgICAgaW50ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0b3IuYWNjZXB0
UGF5bWVudCgpOworICAgIGFzc2VydF9lcXVhbHMoCisgICAgICBhd2FpdCBwcm9taXNlLAorICAg
ICAgdW5kZWZpbmVkLAorICAgICAgIkV4cGVjdGVkIHVuZGVmaW5lZCBhcyB0aGUgcmVzb2x2ZSB2
YWx1ZSIKKyAgICApOworICAgIHByb21pc2UgPSByZXNwb25zZS5yZXRyeSh7fSk7CisgICAgaW50
ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0b3IuYWNjZXB0UGF5bWVudCgpOworICAgIGFzc2Vy
dF9lcXVhbHMoCisgICAgICBhd2FpdCBwcm9taXNlLAorICAgICAgdW5kZWZpbmVkLAorICAgICAg
IkV4cGVjdGVkIHVuZGVmaW5lZCBhcyB0aGUgcmVzb2x2ZSB2YWx1ZSIKKyAgICApOworICAgIGF3
YWl0IHJlc3BvbnNlLmNvbXBsZXRlKCJzdWNjZXNzIik7CisgICAgYXdhaXQgcHJvbWlzZV9yZWpl
Y3RzKAorICAgICAgdCwKKyAgICAgICJJbnZhbGlkU3RhdGVFcnJvciIsCisgICAgICByZXNwb25z
ZS5yZXRyeSh7fSksCisgICAgICAiQ2FsbGluZyByZXRyeSgpIGFmdGVyIGNvbXBsZXRlKCkgcmVq
ZWN0cyB3aXRoIGEgSW52YWxpZFN0YXRlRXJyb3IiCisgICAgKTsKKyAgfSwgYnV0dG9uLnRleHRD
b250ZW50LnRyaW0oKSk7CisgIGJ1dHRvbi5pbm5lclRleHQgPSAiIjsKK30KKworZnVuY3Rpb24g
dXNlckNhbkFib3J0QVJldHJ5KGJ1dHRvbikgeworICBidXR0b24uZGlzYWJsZWQgPSB0cnVlOwor
ICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgeyByZXNwb25zZSB9ID0gYXdh
aXQgZ2V0UGF5bWVudFJlcXVlc3RSZXNwb25zZSgpOworICAgIHZhciBwcm9taXNlID0gcmVzcG9u
c2UucmV0cnkoe30pOworICAgIGludGVybmFscy5tb2NrUGF5bWVudENvb3JkaW5hdG9yLmNhbmNl
bFBheW1lbnQoKTsKKyAgICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisgICAgICB0LAorICAgICAg
IkFib3J0RXJyb3IiLAorICAgICAgcHJvbWlzZSwKKyAgICAgICJUaGUgdXNlciBhYm9ydGluZyBh
IHJldHJ5IHJlamVjdHMgd2l0aCBhIEFib3J0RXJyb3IiCisgICAgKTsKKyAgICBhd2FpdCBwcm9t
aXNlX3JlamVjdHMoCisgICAgICB0LAorICAgICAgIkludmFsaWRTdGF0ZUVycm9yIiwKKyAgICAg
IHJlc3BvbnNlLnJldHJ5KHt9KSwKKyAgICAgICJBZnRlciB0aGUgdXNlciBhYm9ydHMsIHJlc3Bv
bnNlIFtbY29tcGxldGVdXSBpcyB0cnVlIHNvIHJldHJ5KCkgbXVzdCByZWplY3Qgd2l0aCBJbnZh
bGlkU3RhdGVFcnJvciIKKyAgICApOworICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgICAg
IHQsCisgICAgICAiSW52YWxpZFN0YXRlRXJyb3IiLAorICAgICAgcmVzcG9uc2UuY29tcGxldGUo
InN1Y2Nlc3MiKSwKKyAgICAgICJBZnRlciB0aGUgdXNlciBhYm9ydHMsIHJlc3BvbnNlIFtbY29t
cGxldGVdXSBpcyB0cnVlLCBzbyBjb21wbGV0ZSgpIHJlamVjdHMgd2l0aCBhIEludmFsaWRTdGF0
ZUVycm9yIgorICAgICk7CisgIH0sIGJ1dHRvbi50ZXh0Q29udGVudC50cmltKCkpOworICBidXR0
b24uaW5uZXJUZXh0ID0gIiI7Cit9CisKK2Z1bmN0aW9uIHVzZXJJc1Nob3duRXJyb3JzRmllbGRz
KGJ1dHRvbikgeworICBidXR0b24uZGlzYWJsZWQgPSB0cnVlOworICBwcm9taXNlX3Rlc3QoYXN5
bmMgdCA9PiB7CisgICAgY29uc3QgeyByZXNwb25zZSwgcmVxdWVzdCB9ID0gYXdhaXQgZ2V0UGF5
bWVudFJlcXVlc3RSZXNwb25zZSh7IHJlcXVlc3RTaGlwcGluZzogdHJ1ZSB9KTsKKyAgICBjb25z
dCByZXRyeVByb21pc2UgPSByZXNwb25zZS5yZXRyeSh7CisgICAgICBzaGlwcGluZ0FkZHJlc3M6
IHsgY2l0eTogIkludmFsaWQgY2l0eSIsIGFkZHJlc3NMaW5lOiAiSW52YWxpZCBhZGRyZXNzIGxp
bmUiIH0sCisgICAgfSk7CisgICAgY29uc3QgZXJyb3JzID0gaW50ZXJuYWxzLm1vY2tQYXltZW50
Q29vcmRpbmF0b3IuZXJyb3JzOworICAgIGFzc2VydF9lcXVhbHMoZXJyb3JzLmxlbmd0aCwgMiwg
Ik11c3QgaGF2ZSB0d28gZXJyb3JzIik7CisgICAgYXNzZXJ0X2VxdWFscyhlcnJvcnNbMF0uY29k
ZSwgInNoaXBwaW5nQ29udGFjdEludmFsaWQiLCAiTXVzdCBiZSBhICdzaGlwcGluZ0NvbnRhY3RJ
bnZhbGlkJyBlcnJvciIpOworICAgIGFzc2VydF9lcXVhbHMoZXJyb3JzWzBdLm1lc3NhZ2UsICJJ
bnZhbGlkIGFkZHJlc3MgbGluZSIsICJFcnJvciBtZXNzYWdlIG11c3QgbWF0Y2giKTsKKyAgICBh
c3NlcnRfZXF1YWxzKGVycm9yc1swXS5jb250YWN0RmllbGQsICJhZGRyZXNzTGluZXMiLCAiQ29u
dGFjdCBmaWVsZCBtdXN0IG1hdGNoIik7CisgICAgYXNzZXJ0X2VxdWFscyhlcnJvcnNbMV0uY29k
ZSwgInNoaXBwaW5nQ29udGFjdEludmFsaWQiLCAiTXVzdCBiZSBhICdzaGlwcGluZ0NvbnRhY3RJ
bnZhbGlkJyBlcnJvciIpOworICAgIGFzc2VydF9lcXVhbHMoZXJyb3JzWzFdLm1lc3NhZ2UsICJJ
bnZhbGlkIGNpdHkiLCAiRXJyb3IgbWVzc2FnZSBtdXN0IG1hdGNoIik7CisgICAgYXNzZXJ0X2Vx
dWFscyhlcnJvcnNbMV0uY29udGFjdEZpZWxkLCAibG9jYWxpdHkiLCAiQ29udGFjdCBmaWVsZCBt
dXN0IG1hdGNoIik7CisgICAgaW50ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0b3IuYWNjZXB0
UGF5bWVudCgpOworICAgIGF3YWl0IHJldHJ5UHJvbWlzZTsKKyAgICBhd2FpdCByZXNwb25zZS5j
b21wbGV0ZSgic3VjY2VzcyIpOworICB9LCBidXR0b24udGV4dENvbnRlbnQudHJpbSgpKTsKKyAg
YnV0dG9uLmlubmVyVGV4dCA9ICIiOworfQorCitmdW5jdGlvbiBhYm9ydFRoZVVwZGF0ZShidXR0
b24pIHsKKyAgYnV0dG9uLmRpc2FibGVkID0gdHJ1ZTsKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQg
PT4geworICAgIGNvbnN0IHsgcmVzcG9uc2UsIHJlcXVlc3QgfSA9IGF3YWl0IGdldFBheW1lbnRS
ZXF1ZXN0UmVzcG9uc2UoeyByZXF1ZXN0U2hpcHBpbmc6IHRydWUgfSk7CisgICAgLy8gY2F1c2Vz
ICJhYm9ydCB0aGUgdXBkYXRlIiB0byBydW4KKyAgICBjb25zdCBzaGlwcGluZ0NoYW5nZWRQcm9t
aXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICByZXF1ZXN0Lm9uc2hpcHBpbmdv
cHRpb25jaGFuZ2UgPSAoKSA9PiB7CisgICAgICAgIGV2ZW50LnVwZGF0ZVdpdGgoeyB0b3RhbDog
eyBhbW91bnQ6IHsgY3VycmVuY3k6ICJVU0QiLCB2YWx1ZTogIklOVkFMSUQiIH0gfX0pOworICAg
ICAgICByZXNvbHZlKCk7CisgICAgICB9OworICAgIH0pOworICAgIGNvbnN0IHJldHJ5UHJvbWlz
ZSA9IHJlc3BvbnNlLnJldHJ5KHt9KTsKKyAgICBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGlu
YXRvci5jaGFuZ2VTaGlwcGluZ09wdGlvbigib3B0aW9uIik7CisgICAgYXdhaXQgc2hpcHBpbmdD
aGFuZ2VkUHJvbWlzZTsKKyAgICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisgICAgICB0LAorICAg
ICAgbmV3IFR5cGVFcnJvcigpLAorICAgICAgcmV0cnlQcm9taXNlLAorICAgICAgInJldHJ5KCkg
YWJvcnRzIHdpdGggYSBUeXBlRXJyb3IsIGJlY2F1c2UgdG90YWxzJyB2YWx1ZSBpcyBpbnZhbGlk
IgorICAgICk7CisgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICAgICAgdCwKKyAgICAgICJJ
bnZhbGlkU3RhdGVFcnJvciIsCisgICAgICByZXNwb25zZS5jb21wbGV0ZSgic3VjY2VzcyIpLAor
ICAgICAgIkFmdGVyIHRoZSB1c2VyIGFib3J0cywgcmVzcG9uc2UgW1tjb21wbGV0ZV1dIGlzIHRy
dWUsIHNvIGNvbXBsZXRlKCkgcmVqZWN0cyB3aXRoIGEgSW52YWxpZFN0YXRlRXJyb3IiCisgICAg
KTsKKyAgfSwgYnV0dG9uLnRleHRDb250ZW50LnRyaW0oKSk7CisgIGJ1dHRvbi5pbm5lclRleHQg
PSAiIjsKK30KKworZnVuY3Rpb24gY2FsbGluZ1JldHJ5UmV0dXJuc1VuaXF1ZVByb21pc2UoYnV0
dG9uKXsKKyAgYnV0dG9uLmRpc2FibGVkID0gdHJ1ZTsKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQg
PT4geworICAgIGNvbnN0IHsgcmVzcG9uc2UgfSA9IGF3YWl0IGdldFBheW1lbnRSZXF1ZXN0UmVz
cG9uc2UoKTsKKyAgICBjb25zdCByZXRyeVByb21pc2UgPSByZXNwb25zZS5yZXRyeSh7fSk7Cisg
ICAgY29uc3QgcHJvbWlzZXMgPSBuZXcgU2V0KFsKKyAgICAgIHJldHJ5UHJvbWlzZSwKKyAgICAg
IHJlc3BvbnNlLnJldHJ5KHt9KS5jYXRjaCgoKSA9PiB7fSksCisgICAgICByZXNwb25zZS5yZXRy
eSh7fSkuY2F0Y2goKCkgPT4ge30pLAorICAgIF0pOworICAgIGFzc2VydF9lcXVhbHMocHJvbWlz
ZXMuc2l6ZSwgMywgIk11c3QgaGF2ZSB0aHJlZSB1bmlxdWUgb2JqZWN0cyIpOworICAgIGludGVy
bmFscy5tb2NrUGF5bWVudENvb3JkaW5hdG9yLmFjY2VwdFBheW1lbnQoKTsKKyAgICBhd2FpdCBy
ZXRyeVByb21pc2U7CisgICAgYXdhaXQgcmVzcG9uc2UuY29tcGxldGUoKTsKKyAgfSwgYnV0dG9u
LnRleHRDb250ZW50LnRyaW0oKSk7CisgIGJ1dHRvbi5pbm5lclRleHQgPSAiIjsKK307CisKK3dp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4geworICBhd2FpdCBjaGVj
a0NvbXBsZXRlZENhbnRSZXRyeShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9uMSIpKTsK
KyAgYXdhaXQgcmVwZWF0ZWRDYWxsc1RvUmV0cnkoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1
dHRvbjIiKSk7CisgIGF3YWl0IGNhbGxDb21wbGV0ZVdoaWxlUmV0cnlpbmcoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImJ1dHRvbjMiKSk7CisgIGF3YWl0IGNhbGxpbmdSZXF1ZXN0QWJvcnRNdXN0
Tm90QWJvcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRvbjQiKSk7CisgIGF3YWl0IGNh
blJldHJ5TXVsdGlwbGVUaW1lcyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9uNSIpKTsK
KyAgYXdhaXQgdXNlckNhbkFib3J0QVJldHJ5KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0
b242IikpOworICBhd2FpdCB1c2VySXNTaG93bkVycm9yc0ZpZWxkcyhkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiYnV0dG9uNyIpKTsKKyAgYXdhaXQgYWJvcnRUaGVVcGRhdGUoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImJ1dHRvbjgiKSk7CisgIGF3YWl0IGNhbGxpbmdSZXRyeVJldHVybnNVbmlx
dWVQcm9taXNlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b245IikpOworICBkb25lKCk7
Cit9KTsKKzwvc2NyaXB0PgorPG9sPgorICA8bGk+CisgICAgPGJ1dHRvbiBpZD0iYnV0dG9uMSI+
CisgICAgICBBIGNvbXBsZXRlZCBwYXltZW50IHJlcXVlc3QgY2Fubm90IGJlIHJldHJpZWQuCisg
ICAgPC9idXR0b24+CisgIDwvbGk+CisgIDxsaT4KKyAgICA8YnV0dG9uIGlkPSJidXR0b24yIj4K
KyAgICAgIENhbGxpbmcgcmV0cnkoKSBtb3JlIHRoYW4gb25jZSB5aWVsZCBhIHJlamVjdGVkIHBy
b21pc2UsIGJ1dCB0aGUKKyAgICAgIHJldHJ5UHJvbWlzZSByZXNvbHZlcyBpbmRlcGVuZGVudGx5
LgorICAgIDwvYnV0dG9uPgorICA8L2xpPgorICA8bGk+CisgICAgPGJ1dHRvbiBpZD0iYnV0dG9u
MyI+CisgICAgICBDYWxsaW5nIGNvbXBsZXRlKCkgd2hpbGUgYSByZXRyeSgpIGlzIGluIHByb2dy
ZXNzIHJlc3VsdHMgaW4gYW4gSW52YWxpZFN0YXRlRXJyb3IuCisgICAgPC9idXR0b24+CisgIDwv
bGk+CisgIDxsaT4KKyAgICA8YnV0dG9uIGlkPSJidXR0b240Ij4KKyAgICAgIFRyeWluZyB0byBh
Ym9ydCgpIHZpYSBQYXltZW50UmVxdWVzdCBpcyBub3QgcG9zc2libGUuCisgICAgPC9idXR0b24+
CisgIDwvbGk+CisgIDxsaT4KKyAgICA8YnV0dG9uIGlkPSJidXR0b241Ij4KKyAgICAgIEl0J3Mg
cG9zc2libGUgdG8gcmV0cnkoKSBtdWx0aXBsZSB0aW1lcyBhbmQgZXZlbnR1YWxseSBjb21wbGV0
ZSgpLgorICAgICAgQWZ0ZXIgY29tcGxldGUoKSwgaG93ZXZlciwgcmV0cnkoKSByZWplY3RzIHdp
dGggYW4gSW52YWxpZFN0YXRlRXJyb3IuCisgICAgPC9idXR0b24+CisgIDwvbGk+CisgIDxsaT4K
KyAgICA8YnV0dG9uIGlkPSJidXR0b242Ij4KKyAgICAgIFRoZSB1c2VyIGFib3J0aW5nIHJldHJ5
aW5nIGEgcGF5bWVudCBjYXVzZXMgdGhlIHJldHJ5UHJvbWlzZSB0byByZWplY3Qgd2l0aCBBYm9y
dEVycm9yLgorICAgICAgQWJvcnRpbmcgYSBwYXltZW50IGlzIGNhdXNlcyBpdCBjb21wbGV0ZS4K
KyAgICA8L2J1dHRvbj4KKyAgPC9saT4KKyAgPGxpPgorICAgIDxidXR0b24gaWQ9ImJ1dHRvbjci
PgorICAgICAgV2hlbiByZXRyeWluZywgdGhlIHVzZXIgaXMgc2hvd24gZXJyb3IgZmllbGRzIHRv
IGZpeC4KKyAgICA8L2J1dHRvbj4KKyAgPC9saT4KKyAgPGxpPgorICAgIDxidXR0b24gaWQ9ImJ1
dHRvbjgiPgorICAgICAgV2hlbiAiYWJvcnQgdGhlIHVwZGF0ZSIgb2NjdXJzIGJlY2F1c2Ugb2Yg
YW4gdXBkYXRlIGVycm9yLAorICAgICAgdGhlIGByZXRyeVByb21pc2VgIGlzIHJlamVjdGVkIGFu
ZCByZXNwb25zZS5bW2NvbXBsZXRlXV0gYmVjb21lcyB0cnVlLgorICAgIDwvYnV0dG9uPgorICA8
L2xpPgorICA8bGk+CisgICAgPGJ1dHRvbiBpZD0iYnV0dG9uOSI+CisgICAgICBDYWxsaW5nIHJl
dHJ5KCkgbXVsdGlwbGUgdGltZXMgaXMgYWx3YXlzIGEgbmV3IG9iamVjdC4KKyAgICA8L2J1dHRv
bj4KKyAgPC9saT4KKzwvb2w+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353234</attachid>
            <date>2018-10-27 07:49:02 -0700</date>
            <delta_ts>2018-10-30 10:19:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190985-20181027164855.patch</filename>
            <type>text/plain</type>
            <size>59768</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NDkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODRmNDI0NzcxYTg5MmM1
YmE2N2ZlOThjZjQ2M2Y3MGUzMWU1Yjk3YS4uNjdjZjcyYTAxYmVhMGQ2MDdlYmNlZDM3YTgzZDJm
OWVhMTgzMDBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDE4LTEwLTI3ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbUGF5bWVudCBSZXF1ZXN0XSBJ
bXBsZW1lbnQgUGF5bWVudFJlc3BvbnNlLnJldHJ5KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDk4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIHRoZSByZXRyeSgpIG1ldGhvZCBv
biBQYXltZW50UmVzcG9uc2UgYXMgc3BlY2lmaWVkIGluIHRoZSBQYXltZW50IFJlcXVlc3QgQVBJ
CisgICAgICAgIFczQyBFZGl0b3IncyBEcmFmdCBvZiAyNCBPY3RvYmVyIDIwMTguCisKKyAgICAg
ICAgVGVzdHM6IGh0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1yZWpl
Y3RzLWlmLW5vdC1hY3RpdmUuaHR0cHMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9w
YXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJldHJ5LW1ldGhvZC5odHRwcy5odG1sCisK
KyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yOjpjbGllbnQgY29uc3QpOiBBZGRlZC4gUmV0
dXJucyBtX2NsaWVudC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGlu
YXRvckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50
Ojppc01vY2tQYXltZW50Q29vcmRpbmF0b3IgY29uc3QpOiBBZGRlZC4gVXNlZCB0byBkb3duY2Fz
dAorICAgICAgICBhIFBheW1lbnRDb29yZGluYXRvckNsaWVudCB0byBhIE1vY2tQYXltZW50Q29v
cmRpbmF0b3IuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBs
ZVBheVBheW1lbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVu
dEhhbmRsZXI6OmNvbXB1dGVUb3RhbEFuZExpbmVJdGVtcyBjb25zdCk6IE1hZGUgY29uc3QuCisg
ICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wdXRlRXJyb3JzIGNv
bnN0KTogQnJva2UgdGhpcyBmdW5jdGlvbiBpbnRvCisgICAgICAgIGNvbXB1dGVBZGRyZXNzRXJy
b3JzLCBjb21wdXRlUGF5ZXJFcnJvcnMsIGFuZCBjb21wdXRlUGF5bWVudE1ldGhvZEVycm9ycywg
dGhlbiBtb2RpZmllZCB0aGlzCisgICAgICAgIGZ1bmN0aW9uIHRvIGNhbGwgdGhvc2UgZnVuY3Rp
b25zLiBFeGNlcHRpb25zIHRocm93biBieSBjb21wdXRlUGF5bWVudE1ldGhvZEVycm9ycyBhcmUg
aWdub3JlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbXB1
dGVBZGRyZXNzRXJyb3JzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBh
eVBheW1lbnRIYW5kbGVyOjpjb21wdXRlUGF5ZXJFcnJvcnMgY29uc3QpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbXB1dGVQYXltZW50TWV0aG9k
RXJyb3JzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRI
YW5kbGVyOjpjb21wbGV0ZSk6IEFkZGVkIEFTU0VSVHMgdG8gdmVyaWZ5IHdoZXRoZXIgcmVzdWx0
IGlzIGEKKyAgICAgICAgZmluYWwgcmVzdWx0LgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlQ
YXltZW50SGFuZGxlcjo6cmV0cnkpOiBDb21wdXRlZCBQYXltZW50RXJyb3JzIGZyb20gUGF5bWVu
dFZhbGlkYXRpb25FcnJvcnMsCisgICAgICAgIGVuc3VyZWQgdGhlIFBheW1lbnRBdXRob3JpemF0
aW9uUmVzdWx0IHdhcyBub24tZmluYWwgYnkgYWRkaW5nIGFuIHVua25vd24gZXJyb3IgaWYgbmVj
ZXNzYXJ5LAorICAgICAgICBhbmQgY2FsbGVkIFBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVQ
YXltZW50U2Vzc2lvbi4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0
L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L1BheW1lbnRIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9Q
YXltZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6c2hv
dyk6IENoYW5nZWQgdG8gY2FsbCBzZXR0bGVTaG93UHJvbWlzZS4KKyAgICAgICAgKFdlYkNvcmU6
OlBheW1lbnRSZXF1ZXN0OjphYm9ydFdpdGhFeGNlcHRpb24pOiBDaGFuZ2VkIHRvIGFib3J0IFBh
eW1lbnRSZXNwb25zZSdzIHJldHJ5CisgICAgICAgIHByb21pc2UsIGlmIHByZXNlbnQsIGluc3Rl
YWQgb2YgUGF5bWVudFJlc3BvbnNlJ3Mgc2hvdyBwcm9taXNlLgorICAgICAgICAoV2ViQ29yZTo6
UGF5bWVudFJlcXVlc3Q6OnNldHRsZVNob3dQcm9taXNlKTogQWRkZWQuIFNldHRsZXMgbV9zaG93
UHJvbWlzZSB0aGVuIHNldHMgaXQgdG8KKyAgICAgICAgc3RkOjpudWxsb3B0LgorICAgICAgICAo
V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OmNsb3NlQWN0aXZlUGF5bWVudEhhbmRsZXIpOiBBZGRl
ZC4gSGlkZXMgdGhlIGFjdGl2ZSBwYXltZW50CisgICAgICAgIGhhbmRsZXIgdGhlbiBzZXRzIGl0
IHRvIHN0ZDo6bnVsbG9wdC4KKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpzdG9w
KTogU3RvcHBlZCBjYWxsaW5nIGFib3J0V2l0aEV4Y2VwdGlvbiwgc2luY2UgdGhhdCBmdW5jdGlv
bgorICAgICAgICBtaWdodCBzZXR0bGUgUGF5bWVudFJlc3BvbnNlJ3MgcmV0cnkgcHJvbWlzZS4g
UGF5bWVudFJlc3BvbnNlIGlzIG5vdyBhbiBBY3RpdmVET01PYmplY3QgYW5kCisgICAgICAgIHdp
bGwgc2V0dGxlIGl0cyBvd24gcHJvbWlzZSBpbiBpdHMgaW1wbGVtZW50YXRpb24gb2Ygc3RvcC4K
KyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjphYm9ydCk6IENoYW5nZWQgdG8gdGhy
b3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgaWYgdGhlcmUgaXMgYQorICAgICAgICBwZW5kaW5nIHJl
dHJ5IHByb21pc2UgYW5kIHRvIGNhbGwgYWJvcnRXaXRoRXhjZXB0aW9uIGluc3RlYWQgb2Ygc3Rv
cC4KKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0Ojpjb21wbGV0ZU1lcmNoYW50VmFs
aWRhdGlvbik6IENoYW5nZWQgdG8gY2FsbCBhYm9ydFdpdGhFeGNlcHRpb24KKyAgICAgICAgaW5z
dGVhZCBvZiBzdG9wLgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OnNldHRsZURl
dGFpbHNQcm9taXNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6
YWNjZXB0KTogVXBkYXRlZCB0aGUgZXhpc3RpbmcgUGF5bWVudFJlc3BvbnNlLCBpZiBwcmVzZW50
LCByYXRoZXIKKyAgICAgICAgdGhhbiBjcmVhdGluZyBhIG5ldyBvbmUuIFNldHRsZWQgdGhlIGV4
aXN0aW5nIFBheW1lbnRSZXNwb25zZSdzIHJldHJ5IHByb21pc2UsIGlmIHByZXNlbnQsCisgICAg
ICAgIHJhdGhlciB0aGFuIHRoZSBzaG93IHByb21pc2UuCisgICAgICAgIChXZWJDb3JlOjpQYXlt
ZW50UmVxdWVzdDo6Y29tcGxldGUpOiBDaGFuZ2VkIHRvIHRocm93IGFuIEFib3J0RXJyb3IgaWYg
dGhlcmUgaXMgbm8gbG9uZ2VyIGFuCisgICAgICAgIGFjdGl2ZSBwYXltZW50IGhhbmRsZXIuCisg
ICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6cmV0cnkpOiBDaGFuZ2VkIHRvIHRocm93
IGFuIEFib3J0RXJyb3IgaWYgdGhlcmUgaXMgbm8gbG9uZ2VyIGFuCisgICAgICAgIGFjdGl2ZSBw
YXltZW50IGhhbmRsZXIsIGFuZCB0byBjYWxsIFBheW1lbnRIYW5kbGVyOjpyZXRyeSBpZiB0aGVy
ZSBpcy4KKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpjYW5jZWwpOiBDaGFuZ2Vk
IHRvIGNhbGwgYWJvcnRXaXRoRXhjZXB0aW9uIGluc3RlYWQgb2Ygc3RvcC4KKyAgICAgICAgKiBN
b2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0Lmg6CisgICAgICAgICogTW9kdWxl
cy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5pZGw6CisgICAgICAgICogTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9QYXltZW50UmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF5
bWVudFJlc3BvbnNlOjpQYXltZW50UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVu
dFJlc3BvbnNlOjpmaW5pc2hDb25zdHJ1Y3Rpb24pOiBQZW5kaW5nIGFjdGl2aXRpZXMgY3JlYXRl
IHN0cm9uZyByZWZlcmVuY2VzCisgICAgICAgIHRvIHx0aGlzfCwgc28gdGhleSBjYW5ub3QgYmUg
Y3JlYXRlZCBpbiBjb25zdHJ1Y3RvcnMgd2l0aG91dCByZWxheGluZyBhZG9wdGlvbiByZXF1aXJl
bWVudHMuCisgICAgICAgIEFkZGVkIHRoaXMgZnVuY3Rpb24gc28gdGhhdCB0aGUgcGVuZGluZyBh
Y3Rpdml0eSBjYW4gYmUgY3JlYXRlZCBhZnRlciB0aGUgUGF5bWVudFJlc3BvbnNlIGlzCisgICAg
ICAgIGNyZWF0ZWQgYW5kIGFkb3B0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVzcG9u
c2U6On5QYXltZW50UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlc3BvbnNl
Ojpjb21wbGV0ZSk6IFVwZGF0ZWQgdG8gdGhyb3cgYW4gQWJvcnRFcnJvciBvciBJbnZhbGlkU3Rh
dGVFcnJvcgorICAgICAgICB3aGVuIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OlBheW1l
bnRSZXNwb25zZTo6cmV0cnkpOiBJbXBsZW1lbnRlZC4gVGhyb3dzIGFuIEFib3J0RXJyb3Igb3Ig
SW52YWxpZFN0YXRlRXJyb3IKKyAgICAgICAgd2hlbiBuZWNlc3NhcnksIG90aGVyd2lzZSBjYWxs
cyBQYXltZW50UmVxdWVzdDo6cmV0cnkgYW5kIHN0b3JlcyB0aGUgcmV0cnkgcHJvbWlzZSBpbgor
ICAgICAgICBtX3JldHJ5UHJvbWlzZS4KKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXNwb25z
ZTo6YWJvcnRXaXRoRXhjZXB0aW9uKTogQWRkZWQuIFJlamVjdHMgdGhlIHJldHJ5IHByb21pc2Ug
d2l0aAorICAgICAgICB8ZXhjZXB0aW9ufCwgY2xlYXJzIHRoZSBwZW5kaW5nIGFjdGl2aXR5LCBh
bmQgc2V0cyBtX3N0YXRlIHRvIENvbXBsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRS
ZXNwb25zZTo6c2V0dGxlUmV0cnlQcm9taXNlKTogQWRkZWQuIFNldHRsZXMgdGhlIHJldHJ5IHBy
b21pc2UgYW5kIHNldHMgaXQKKyAgICAgICAgdG8gc3RkOjpudWxsb3B0LgorICAgICAgICAoV2Vi
Q29yZTo6UGF5bWVudFJlc3BvbnNlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uIGNv
bnN0KTogQWRkZWQuIFJldHVybnMgdHJ1ZSBpZgorICAgICAgICB0aGVyZSBpcyBubyBwZW5kaW5n
IGFjdGl2aXR5LgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlc3BvbnNlOjpzdG9wKTogQWRk
ZWQuIFJlamVjdHMgdGhlIHJldHJ5IHByb21pc2Ugd2l0aCBBYm9ydEVycm9yLCBjbGVhcnMKKyAg
ICAgICAgdGhlIHBlbmRpbmcgYWN0aXZpdHksIGFuZCBzZXRzIG1fc3RhdGUgdG8gU3RvcHBlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNwb25zZS5oOiBDaGFu
Z2VkIGNyZWF0ZSB0byBjYWxsIGZpbmlzaENvbnN0cnVjdGlvbiBhbmQKKyAgICAgICAgbWFkZSBQ
YXltZW50UmVzcG9uc2UgYW4gQWN0aXZlRE9NT2JqZWN0IGluc3RlYWQgb2YgYSBDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlci4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OkludGVybmFscyk6IENoYW5nZWQgdG8gb25seSBjcmVh
dGUgYSBNb2NrUGF5bWVudENvb3JkaW5hdG9yIGZvciBtYWluIGZyYW1lcy4KKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6bW9ja1BheW1lbnRDb29yZGluYXRvciBjb25zdCk6IENoYW5nZWQg
dG8gZ2V0IHRoZQorICAgICAgICBNb2NrUGF5bWVudENvb3JkaW5hdG9yIGJ5IGRvd25jYXN0aW5n
IHRoZSBwYWdlJ3MgcGF5bWVudCBjb29yZGluYXRvciBjbGllbnQuCisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAg
ICogdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudFNlc3Npb24pOiBDaGFuZ2Vk
IHRvIG9ubHkgaW5jcmVtZW50CisgICAgICAgIGhpZGVDb3VudCBmb3IgZmluYWwgcmVzdWx0cy4K
KyAgICAgICAgKiB0ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKGlz
VHlwZSk6IEFkZGVkIHNvIHRoYXQgUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50cyBjYW4gYmUgZG93
bmNhc3RlZCB0byBNb2NrUGF5bWVudENvb3JkaW5hdG9ycy4KKwogMjAxOC0xMC0yNyAgWGFiaWVy
IFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3Ry
ZWFtZXJdW0VNRV0gUG9zdCBrZXkgcmVjZWl2ZWQgdG8gYnVzIHNob3VsZCBiZSBkb25lIGJlZm9y
ZSB3YWtpbmcgdXAgb3RoZXIgdGhyZWFkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggZDQ2NTJjZmVkNTBmZmMxZDJm
NmI2MmI1ZTRiZGQwZjkyODYzZDQ1Ni4uNzQ4YzE0NzExYjM2Yjg0NDJlMzJkM2JmYTlmZjM2ZTRj
OTE1OTk0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXlt
ZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1Bh
eW1lbnRDb29yZGluYXRvci5oCkBAIC01MCw2ICs1MCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBQYXltZW50Q29vcmRpbmF0b3IoUGF5bWVudENvb3JkaW5hdG9yQ2xp
ZW50Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBheW1lbnRDb29yZGluYXRvcigpOwogCisgICAg
UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50JiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVu
dDsgfQorCiAgICAgYm9vbCBzdXBwb3J0c1ZlcnNpb24odW5zaWduZWQgdmVyc2lvbikgY29uc3Q7
CiAgICAgYm9vbCBjYW5NYWtlUGF5bWVudHMoKTsKICAgICB2b2lkIGNhbk1ha2VQYXltZW50c1dp
dGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGRvbWFpbk5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXlt
ZW50Q29vcmRpbmF0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKaW5kZXggZTkxNWNhMTZkYjQwMjQzOGQ4YmQ4MDAx
OWRhZGU5YjM2NzcwM2QxNy4uYjk3MDMwYWEwNTI0ZTU4ZDJiZDk1M2FmMjNkNzdhZmNiMzE2ZjRm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29v
cmRpbmF0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1Bh
eW1lbnRDb29yZGluYXRvckNsaWVudC5oCkBAIC01OCw2ICs1OCw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgY2FuY2VsUGF5bWVudFNlc3Npb24oKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHBheW1lbnRDb29yZGluYXRvckRlc3Ryb3llZCgpID0gMDsKIAorICAgIHZpcnR1YWwgYm9vbCBp
c01vY2tQYXltZW50Q29vcmRpbmF0b3IoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB+UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50KCkgPSBkZWZhdWx0
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVu
dHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCmlu
ZGV4IGM5YmQzYzc5YTg0ZWYwOTllZjdhMmE0M2RlMjVkMzc2YThlYTFlNzguLmViNmI5ZGRmYTdj
NTI5MmMwYTE4YjhmNGQzODAyMjYzNDgzMWU0OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9B
cHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIlBh
eW1lbnRNZXRob2QuaCIKICNpbmNsdWRlICJQYXltZW50UmVxdWVzdFZhbGlkYXRvci5oIgogI2lu
Y2x1ZGUgIlBheW1lbnRSZXNwb25zZS5oIgorI2luY2x1ZGUgIlBheW1lbnRWYWxpZGF0aW9uRXJy
b3JzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MjYzLDcgKzI2NCw3IEBAIEV4Y2VwdGlvbk9yPFZlY3RvcjxBcHBsZVBheVNlc3Npb25QYXltZW50
UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+PiBBcHBsZVBheVBheW1lCiAgICAgcmV0dXJuIFdURk1v
dmUoc2hpcHBpbmdNZXRob2RzKTsKIH0KIAotRXhjZXB0aW9uT3I8QXBwbGVQYXlTZXNzaW9uUGF5
bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpj
b21wdXRlVG90YWxBbmRMaW5lSXRlbXMoKQorRXhjZXB0aW9uT3I8QXBwbGVQYXlTZXNzaW9uUGF5
bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpj
b21wdXRlVG90YWxBbmRMaW5lSXRlbXMoKSBjb25zdAogewogICAgIGF1dG8mIGRldGFpbHMgPSBt
X3BheW1lbnRSZXF1ZXN0LT5wYXltZW50RGV0YWlscygpOwogICAgIFN0cmluZyBjdXJyZW5jeSA9
IGRldGFpbHMudG90YWwuYW1vdW50LmN1cnJlbmN5OwpAQCAtMzM2LDIxICszMzcsNDMgQEAgVmVj
dG9yPFBheW1lbnRFcnJvcj4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y29tcHV0ZUVycm9ycyhT
dHJpbmcmJiBlcnJvciwgQWRkcmUKIHsKICAgICBWZWN0b3I8UGF5bWVudEVycm9yPiBlcnJvcnM7
CiAKLSAgICBhdXRvJiBvcHRpb25zID0gbV9wYXltZW50UmVxdWVzdC0+cGF5bWVudE9wdGlvbnMo
KTsKLSAgICB1c2luZyBDb250YWN0RmllbGQgPSBQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDsK
KyAgICBpZiAobV9wYXltZW50UmVxdWVzdC0+cGF5bWVudERldGFpbHMoKS5zaGlwcGluZ09wdGlv
bnMuaXNFbXB0eSgpKQorICAgICAgICBjb21wdXRlQWRkcmVzc0Vycm9ycyhXVEZNb3ZlKGVycm9y
KSwgV1RGTW92ZShhZGRyZXNzRXJyb3JzKSwgZXJyb3JzKTsKKworICAgIGNvbXB1dGVQYXllckVy
cm9ycyhXVEZNb3ZlKHBheWVyRXJyb3JzKSwgZXJyb3JzKTsKIAotICAgIGlmIChvcHRpb25zLnJl
cXVlc3RTaGlwcGluZyAmJiBtX3BheW1lbnRSZXF1ZXN0LT5wYXltZW50RGV0YWlscygpLnNoaXBw
aW5nT3B0aW9ucy5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXBwZW5kU2hpcHBpbmdDb250YWN0SW52
YWxpZEVycm9yKFdURk1vdmUoZXJyb3IpLCBzdGQ6Om51bGxvcHQsIGVycm9ycyk7Ci0gICAgICAg
IGFwcGVuZFNoaXBwaW5nQ29udGFjdEludmFsaWRFcnJvcihXVEZNb3ZlKGFkZHJlc3NFcnJvcnMu
YWRkcmVzc0xpbmUpLCBDb250YWN0RmllbGQ6OkFkZHJlc3NMaW5lcywgZXJyb3JzKTsKLSAgICAg
ICAgYXBwZW5kU2hpcHBpbmdDb250YWN0SW52YWxpZEVycm9yKFdURk1vdmUoYWRkcmVzc0Vycm9y
cy5jaXR5KSwgQ29udGFjdEZpZWxkOjpMb2NhbGl0eSwgZXJyb3JzKTsKLSAgICAgICAgYXBwZW5k
U2hpcHBpbmdDb250YWN0SW52YWxpZEVycm9yKFdURk1vdmUoYWRkcmVzc0Vycm9ycy5jb3VudHJ5
KSwgQ29udGFjdEZpZWxkOjpDb3VudHJ5LCBlcnJvcnMpOwotICAgICAgICBhcHBlbmRTaGlwcGlu
Z0NvbnRhY3RJbnZhbGlkRXJyb3IoV1RGTW92ZShhZGRyZXNzRXJyb3JzLmRlcGVuZGVudExvY2Fs
aXR5KSwgQ29udGFjdEZpZWxkOjpTdWJMb2NhbGl0eSwgZXJyb3JzKTsKLSAgICAgICAgYXBwZW5k
U2hpcHBpbmdDb250YWN0SW52YWxpZEVycm9yKFdURk1vdmUoYWRkcmVzc0Vycm9ycy5waG9uZSks
IENvbnRhY3RGaWVsZDo6UGhvbmVOdW1iZXIsIGVycm9ycyk7Ci0gICAgICAgIGFwcGVuZFNoaXBw
aW5nQ29udGFjdEludmFsaWRFcnJvcihXVEZNb3ZlKGFkZHJlc3NFcnJvcnMucG9zdGFsQ29kZSks
IENvbnRhY3RGaWVsZDo6UG9zdGFsQ29kZSwgZXJyb3JzKTsKLSAgICAgICAgYXBwZW5kU2hpcHBp
bmdDb250YWN0SW52YWxpZEVycm9yKFdURk1vdmUoYWRkcmVzc0Vycm9ycy5yZWNpcGllbnQpLCBD
b250YWN0RmllbGQ6Ok5hbWUsIGVycm9ycyk7Ci0gICAgICAgIGFwcGVuZFNoaXBwaW5nQ29udGFj
dEludmFsaWRFcnJvcihXVEZNb3ZlKGFkZHJlc3NFcnJvcnMucmVnaW9uKSwgQ29udGFjdEZpZWxk
OjpBZG1pbmlzdHJhdGl2ZUFyZWEsIGVycm9ycyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
Q0FUQ0hfU0NPUEUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT52bSgpKTsKKyAgICBhdXRvIGV4
Y2VwdGlvbiA9IGNvbXB1dGVQYXltZW50TWV0aG9kRXJyb3JzKHBheW1lbnRNZXRob2RFcnJvcnMs
IGVycm9ycyk7CisgICAgaWYgKGV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBB
U1NFUlQoc2NvcGUuZXhjZXB0aW9uKCkpOworICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigp
OwogICAgIH0KIAorICAgIHJldHVybiBlcnJvcnM7Cit9CisKK3ZvaWQgQXBwbGVQYXlQYXltZW50
SGFuZGxlcjo6Y29tcHV0ZUFkZHJlc3NFcnJvcnMoU3RyaW5nJiYgZXJyb3IsIEFkZHJlc3NFcnJv
cnMmJiBhZGRyZXNzRXJyb3JzLCBWZWN0b3I8UGF5bWVudEVycm9yPiYgZXJyb3JzKSBjb25zdAor
eworICAgIGlmICghbV9wYXltZW50UmVxdWVzdC0+cGF5bWVudE9wdGlvbnMoKS5yZXF1ZXN0U2hp
cHBpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIHVzaW5nIENvbnRhY3RGaWVsZCA9IFBheW1l
bnRFcnJvcjo6Q29udGFjdEZpZWxkOworICAgIGFwcGVuZFNoaXBwaW5nQ29udGFjdEludmFsaWRF
cnJvcihXVEZNb3ZlKGVycm9yKSwgc3RkOjpudWxsb3B0LCBlcnJvcnMpOworICAgIGFwcGVuZFNo
aXBwaW5nQ29udGFjdEludmFsaWRFcnJvcihXVEZNb3ZlKGFkZHJlc3NFcnJvcnMuYWRkcmVzc0xp
bmUpLCBDb250YWN0RmllbGQ6OkFkZHJlc3NMaW5lcywgZXJyb3JzKTsKKyAgICBhcHBlbmRTaGlw
cGluZ0NvbnRhY3RJbnZhbGlkRXJyb3IoV1RGTW92ZShhZGRyZXNzRXJyb3JzLmNpdHkpLCBDb250
YWN0RmllbGQ6OkxvY2FsaXR5LCBlcnJvcnMpOworICAgIGFwcGVuZFNoaXBwaW5nQ29udGFjdElu
dmFsaWRFcnJvcihXVEZNb3ZlKGFkZHJlc3NFcnJvcnMuY291bnRyeSksIENvbnRhY3RGaWVsZDo6
Q291bnRyeSwgZXJyb3JzKTsKKyAgICBhcHBlbmRTaGlwcGluZ0NvbnRhY3RJbnZhbGlkRXJyb3Io
V1RGTW92ZShhZGRyZXNzRXJyb3JzLmRlcGVuZGVudExvY2FsaXR5KSwgQ29udGFjdEZpZWxkOjpT
dWJMb2NhbGl0eSwgZXJyb3JzKTsKKyAgICBhcHBlbmRTaGlwcGluZ0NvbnRhY3RJbnZhbGlkRXJy
b3IoV1RGTW92ZShhZGRyZXNzRXJyb3JzLnBob25lKSwgQ29udGFjdEZpZWxkOjpQaG9uZU51bWJl
ciwgZXJyb3JzKTsKKyAgICBhcHBlbmRTaGlwcGluZ0NvbnRhY3RJbnZhbGlkRXJyb3IoV1RGTW92
ZShhZGRyZXNzRXJyb3JzLnBvc3RhbENvZGUpLCBDb250YWN0RmllbGQ6OlBvc3RhbENvZGUsIGVy
cm9ycyk7CisgICAgYXBwZW5kU2hpcHBpbmdDb250YWN0SW52YWxpZEVycm9yKFdURk1vdmUoYWRk
cmVzc0Vycm9ycy5yZWNpcGllbnQpLCBDb250YWN0RmllbGQ6Ok5hbWUsIGVycm9ycyk7CisgICAg
YXBwZW5kU2hpcHBpbmdDb250YWN0SW52YWxpZEVycm9yKFdURk1vdmUoYWRkcmVzc0Vycm9ycy5y
ZWdpb24pLCBDb250YWN0RmllbGQ6OkFkbWluaXN0cmF0aXZlQXJlYSwgZXJyb3JzKTsKK30KKwor
dm9pZCBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wdXRlUGF5ZXJFcnJvcnMoUGF5ZXJFcnJv
ckZpZWxkcyYmIHBheWVyRXJyb3JzLCBWZWN0b3I8UGF5bWVudEVycm9yPiYgZXJyb3JzKSBjb25z
dAoreworICAgIGF1dG8mIG9wdGlvbnMgPSBtX3BheW1lbnRSZXF1ZXN0LT5wYXltZW50T3B0aW9u
cygpOworICAgIHVzaW5nIENvbnRhY3RGaWVsZCA9IFBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxk
OworCiAgICAgaWYgKG9wdGlvbnMucmVxdWVzdFBheWVyTmFtZSkKICAgICAgICAgYXBwZW5kU2hp
cHBpbmdDb250YWN0SW52YWxpZEVycm9yKFdURk1vdmUocGF5ZXJFcnJvcnMubmFtZSksIENvbnRh
Y3RGaWVsZDo6TmFtZSwgZXJyb3JzKTsKIApAQCAtMzU5LDI1ICszODIsMjkgQEAgVmVjdG9yPFBh
eW1lbnRFcnJvcj4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y29tcHV0ZUVycm9ycyhTdHJpbmcm
JiBlcnJvciwgQWRkcmUKIAogICAgIGlmIChvcHRpb25zLnJlcXVlc3RQYXllclBob25lKQogICAg
ICAgICBhcHBlbmRTaGlwcGluZ0NvbnRhY3RJbnZhbGlkRXJyb3IoV1RGTW92ZShwYXllckVycm9y
cy5waG9uZSksIENvbnRhY3RGaWVsZDo6UGhvbmVOdW1iZXIsIGVycm9ycyk7Cit9CisKK0V4Y2Vw
dGlvbk9yPHZvaWQ+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbXB1dGVQYXltZW50TWV0aG9k
RXJyb3JzKEpTQzo6SlNPYmplY3QqIHBheW1lbnRNZXRob2RFcnJvcnMsIFZlY3RvcjxQYXltZW50
RXJyb3I+JiBlcnJvcnMpIGNvbnN0Cit7CisgICAgaWYgKCFwYXltZW50TWV0aG9kRXJyb3JzKQor
ICAgICAgICByZXR1cm4geyB9OwogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9TRVNTSU9OX1YzKQot
ICAgIGlmIChwYXltZW50TWV0aG9kRXJyb3JzKSB7Ci0gICAgICAgIGF1dG8mIGNvbnRleHQgPSAq
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgICAgICBhdXRvIGNhdGNoU2NvcGUgPSBERUNM
QVJFX0NBVENIX1NDT1BFKGNvbnRleHQudm0oKSk7Ci0gICAgICAgIGF1dG8gYXBwbGVQYXlFcnJv
cnMgPSBjb252ZXJ0PElETFNlcXVlbmNlPElETEludGVyZmFjZTxBcHBsZVBheUVycm9yPj4+KCpj
b250ZXh0LmV4ZWNTdGF0ZSgpLCBwYXltZW50TWV0aG9kRXJyb3JzKTsKLSAgICAgICAgaWYgKCFj
YXRjaFNjb3BlLmV4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGFwcGxlUGF5
RXJyb3IgOiBhcHBsZVBheUVycm9ycykgewotICAgICAgICAgICAgICAgIGlmIChhcHBsZVBheUVy
cm9yKQotICAgICAgICAgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKHsgYXBwbGVQYXlFcnJvci0+
Y29kZSgpLCBhcHBsZVBheUVycm9yLT5tZXNzYWdlKCksIGFwcGxlUGF5RXJyb3ItPmNvbnRhY3RG
aWVsZCgpIH0pOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGNh
dGNoU2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKKyAgICBhdXRvJiBjb250ZXh0ID0gKnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKGNvbnRleHQudm0oKSk7CisgICAgYXV0byBhcHBsZVBheUVycm9ycyA9IGNvbnZlcnQ8SURM
U2VxdWVuY2U8SURMSW50ZXJmYWNlPEFwcGxlUGF5RXJyb3I+Pj4oKmNvbnRleHQuZXhlY1N0YXRl
KCksIHBheW1lbnRNZXRob2RFcnJvcnMpOworICAgIGlmICh0aHJvd1Njb3BlLmV4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9Owor
CisgICAgZm9yIChhdXRvJiBhcHBsZVBheUVycm9yIDogYXBwbGVQYXlFcnJvcnMpIHsKKyAgICAg
ICAgaWYgKGFwcGxlUGF5RXJyb3IpCisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKHsgYXBwbGVQ
YXlFcnJvci0+Y29kZSgpLCBhcHBsZVBheUVycm9yLT5tZXNzYWdlKCksIGFwcGxlUGF5RXJyb3It
PmNvbnRhY3RGaWVsZCgpIH0pOwogICAgIH0KICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHBheW1l
bnRNZXRob2RFcnJvcnMpOworICAgIFVOVVNFRF9QQVJBTShlcnJvcnMpOwogI2VuZGlmCiAKLSAg
ICByZXR1cm4gZXJyb3JzOworICAgIHJldHVybiB7IH07CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+
IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmRldGFpbHNVcGRhdGVkKFBheW1lbnRSZXF1ZXN0OjpV
cGRhdGVSZWFzb24gcmVhc29uLCBTdHJpbmcmJiBlcnJvciwgQWRkcmVzc0Vycm9ycyYmIGFkZHJl
c3NFcnJvcnMsIFBheWVyRXJyb3JGaWVsZHMmJiBwYXllckVycm9ycywgSlNDOjpKU09iamVjdCog
cGF5bWVudE1ldGhvZEVycm9ycykKQEAgLTQ3Miw2ICs0OTksNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpwYXltZW50TWV0aG9kVXBkYXRlZCgpCiB2b2lkIEFw
cGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbXBs
ZXRlPiYmIHJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBBU1NFUlQoaXNG
aW5hbFN0YXRlUmVzdWx0KHN0ZDo6bnVsbG9wdCkpOwogICAgICAgICBwYXltZW50Q29vcmRpbmF0
b3IoKS5jb21wbGV0ZVBheW1lbnRTZXNzaW9uKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC00ODcsOSArNTE1LDMxIEBAIHZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxl
cjo6Y29tcGxldGUoc3RkOjpvcHRpb25hbDxQYXltZW50Q29tcGxldGU+JiYgcmVzdWx0KQogICAg
ICAgICBicmVhazsKICAgICB9CiAKKyAgICBBU1NFUlQoaXNGaW5hbFN0YXRlUmVzdWx0KGF1dGhv
cml6YXRpb25SZXN1bHQpKTsKICAgICBwYXltZW50Q29vcmRpbmF0b3IoKS5jb21wbGV0ZVBheW1l
bnRTZXNzaW9uKFdURk1vdmUoYXV0aG9yaXphdGlvblJlc3VsdCkpOwogfQogCitFeGNlcHRpb25P
cjx2b2lkPiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpyZXRyeShQYXltZW50VmFsaWRhdGlvbkVy
cm9ycyYmIHZhbGlkYXRpb25FcnJvcnMpCit7CisgICAgVmVjdG9yPFBheW1lbnRFcnJvcj4gZXJy
b3JzOworCisgICAgY29tcHV0ZUFkZHJlc3NFcnJvcnMoV1RGTW92ZSh2YWxpZGF0aW9uRXJyb3Jz
LmVycm9yKSwgV1RGTW92ZSh2YWxpZGF0aW9uRXJyb3JzLnNoaXBwaW5nQWRkcmVzcyksIGVycm9y
cyk7CisgICAgY29tcHV0ZVBheWVyRXJyb3JzKFdURk1vdmUodmFsaWRhdGlvbkVycm9ycy5wYXll
ciksIGVycm9ycyk7CisKKyAgICBhdXRvIGV4Y2VwdGlvbiA9IGNvbXB1dGVQYXltZW50TWV0aG9k
RXJyb3JzKHZhbGlkYXRpb25FcnJvcnMucGF5bWVudE1ldGhvZC5nZXQoKSwgZXJyb3JzKTsKKyAg
ICBpZiAoZXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gZXhjZXB0aW9u
LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIC8vIEVuc3VyZSB0aGVyZSBpcyBhbHdheXMgYXQg
bGVhc3Qgb25lIGVycm9yIHRvIGF2b2lkIGhhdmluZyBhIGZpbmFsIHJlc3VsdC4KKyAgICBpZiAo
ZXJyb3JzLmlzRW1wdHkoKSkKKyAgICAgICAgZXJyb3JzLmFwcGVuZCh7IFBheW1lbnRFcnJvcjo6
Q29kZTo6VW5rbm93biwgeyB9LCBzdGQ6Om51bGxvcHQgfSk7CisKKyAgICBhdXRvIGF1dGhvcml6
YXRpb25SZXN1bHQgPSBQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdCB7IFBheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzOjpGYWlsdXJlLCBXVEZNb3ZlKGVycm9ycykgfTsKKyAgICBBU1NFUlQoIWlz
RmluYWxTdGF0ZVJlc3VsdChhdXRob3JpemF0aW9uUmVzdWx0KSk7CisgICAgcGF5bWVudENvb3Jk
aW5hdG9yKCkuY29tcGxldGVQYXltZW50U2Vzc2lvbihXVEZNb3ZlKGF1dGhvcml6YXRpb25SZXN1
bHQpKTsKKyAgICByZXR1cm4geyB9OworfQorCiB1bnNpZ25lZCBBcHBsZVBheVBheW1lbnRIYW5k
bGVyOjp2ZXJzaW9uKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYXBwbGVQYXlSZXF1ZXN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9B
cHBsZVBheVBheW1lbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuaAppbmRleCBjZTUwNTNhMTJi
YzA2ZGIwNmZiZGMxZTA1NGU5ODkyNDMzM2IwNzUxLi41ZjQyYWM2ZTBkNzEzMTlkNzY4YWQwYTlh
ZGE4ZWZiMjJlYzczYjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhh
bmRsZXIuaApAQCAtNTMsOCArNTMsMTEgQEAgcHJpdmF0ZToKICAgICBQYXltZW50Q29vcmRpbmF0
b3ImIHBheW1lbnRDb29yZGluYXRvcigpIGNvbnN0OwogCiAgICAgRXhjZXB0aW9uT3I8VmVjdG9y
PEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4+IGNvbXB1dGVT
aGlwcGluZ01ldGhvZHMoKTsKLSAgICBFeGNlcHRpb25PcjxBcHBsZVBheVNlc3Npb25QYXltZW50
UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IGNvbXB1dGVUb3RhbEFuZExpbmVJdGVtcygpOwor
ICAgIEV4Y2VwdGlvbk9yPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExp
bmVJdGVtcz4gY29tcHV0ZVRvdGFsQW5kTGluZUl0ZW1zKCkgY29uc3Q7CiAgICAgVmVjdG9yPFBh
eW1lbnRFcnJvcj4gY29tcHV0ZUVycm9ycyhTdHJpbmcmJiBlcnJvciwgQWRkcmVzc0Vycm9ycyYm
LCBQYXllckVycm9yRmllbGRzJiYsIEpTQzo6SlNPYmplY3QqIHBheW1lbnRNZXRob2RFcnJvcnMp
IGNvbnN0OworICAgIHZvaWQgY29tcHV0ZUFkZHJlc3NFcnJvcnMoU3RyaW5nJiYgZXJyb3IsIEFk
ZHJlc3NFcnJvcnMmJiwgVmVjdG9yPFBheW1lbnRFcnJvcj4mKSBjb25zdDsKKyAgICB2b2lkIGNv
bXB1dGVQYXllckVycm9ycyhQYXllckVycm9yRmllbGRzJiYsIFZlY3RvcjxQYXltZW50RXJyb3I+
JikgY29uc3Q7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gY29tcHV0ZVBheW1lbnRNZXRob2RFcnJv
cnMoSlNDOjpKU09iamVjdCogcGF5bWVudE1ldGhvZEVycm9ycywgVmVjdG9yPFBheW1lbnRFcnJv
cj4mKSBjb25zdDsKIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNoaXBwaW5nQWRkcmVzc1VwZGF0
ZWQoVmVjdG9yPFBheW1lbnRFcnJvcj4mJiBlcnJvcnMpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHNoaXBwaW5nT3B0aW9uVXBkYXRlZCgpOwpAQCAtNjgsNiArNzEsNyBAQCBwcml2YXRlOgogICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IGRldGFpbHNVcGRhdGVkKFBheW1lbnRSZXF1ZXN0OjpVcGRhdGVS
ZWFzb24sIFN0cmluZyYmIGVycm9yLCBBZGRyZXNzRXJyb3JzJiYsIFBheWVyRXJyb3JGaWVsZHMm
JiwgSlNDOjpKU09iamVjdCogcGF5bWVudE1ldGhvZEVycm9ycykgZmluYWw7CiAgICAgRXhjZXB0
aW9uT3I8dm9pZD4gbWVyY2hhbnRWYWxpZGF0aW9uQ29tcGxldGVkKEpTQzo6SlNWYWx1ZSYmKSBm
aW5hbDsKICAgICB2b2lkIGNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbXBsZXRlPiYm
KSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiByZXRyeShQYXltZW50VmFsaWRhdGlvbkVy
cm9ycyYmKSBmaW5hbDsKIAogICAgIC8vIFBheW1lbnRTZXNzaW9uCiAgICAgdW5zaWduZWQgdmVy
c2lvbigpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9QYXltZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9QYXltZW50SGFuZGxlci5oCmluZGV4IDE3MzU4NzJhMTQ1MjBkMGM5YWY0
NTY4ZjJkYWMyODBiYWE5M2IzZmEuLmE2ZjUwZWFjOGRjY2U2YmI0OGQ4ZmY2MjI3ODZjZTgwM2Yy
YzA2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3Qv
UGF5bWVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L1BheW1lbnRIYW5kbGVyLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgRG9jdW1lbnQ7CiBzdHJ1Y3QgQWRkcmVzc0Vycm9yczsKIHN0cnVjdCBQYXllckVy
cm9yRmllbGRzOworc3RydWN0IFBheW1lbnRWYWxpZGF0aW9uRXJyb3JzOwogCiBjbGFzcyBQYXlt
ZW50SGFuZGxlciA6IHB1YmxpYyB2aXJ0dWFsIFBheW1lbnRTZXNzaW9uQmFzZSB7CiBwdWJsaWM6
CkBAIC01NCw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+
IGRldGFpbHNVcGRhdGVkKFBheW1lbnRSZXF1ZXN0OjpVcGRhdGVSZWFzb24sIFN0cmluZyYmIGVy
cm9yLCBBZGRyZXNzRXJyb3JzJiYsIFBheWVyRXJyb3JGaWVsZHMmJiwgSlNDOjpKU09iamVjdCog
cGF5bWVudE1ldGhvZEVycm9ycykgPSAwOwogICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4g
bWVyY2hhbnRWYWxpZGF0aW9uQ29tcGxldGVkKEpTQzo6SlNWYWx1ZSYmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbXBsZXRlPiYmKSA9IDA7
CisgICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lkPiByZXRyeShQYXltZW50VmFsaWRhdGlvbkVy
cm9ycyYmKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3Bw
CmluZGV4IDg4ZWUwYmRiZmZlOWYyOTU2NjUwNWY1Y2FkYjk4M2RjZmE0ZmE5M2UuLjBkNmIyMDBi
YmMxMDBmMzMwOWNlYTg4ZmRkMDMwNjM4MmE5NWE3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCkBAIC00
Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiUGF5bWVudE1ldGhvZERhdGEuaCIKICNpbmNsdWRlICJQ
YXltZW50T3B0aW9ucy5oIgogI2luY2x1ZGUgIlBheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQuaCIK
KyNpbmNsdWRlICJQYXltZW50VmFsaWRhdGlvbkVycm9ycy5oIgogI2luY2x1ZGUgIlNjcmlwdENv
bnRyb2xsZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09OT2JqZWN0Lmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvVGhyb3dTY29wZS5oPgpAQCAtNDA0LDcgKzQwNSw3IEBAIHZv
aWQgUGF5bWVudFJlcXVlc3Q6OnNob3coRG9jdW1lbnQmIGRvY3VtZW50LCBSZWZQdHI8RE9NUHJv
bWlzZT4mJiBkZXRhaWxzUHJvbWlzCiAgICAgZm9yIChhdXRvJiBwYXltZW50TWV0aG9kIDogbV9z
ZXJpYWxpemVkTWV0aG9kRGF0YSkgewogICAgICAgICBhdXRvIGRhdGEgPSBwYXJzZShkb2N1bWVu
dCwgcGF5bWVudE1ldGhvZC5zZXJpYWxpemVkRGF0YSk7CiAgICAgICAgIGlmIChkYXRhLmhhc0V4
Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICBtX3Nob3dQcm9taXNlLT5yZWplY3QoZGF0YS5yZWxl
YXNlRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgc2V0dGxlU2hvd1Byb21pc2UoZGF0YS5yZWxl
YXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTQx
NCw3ICs0MTUsNyBAQCB2b2lkIFBheW1lbnRSZXF1ZXN0OjpzaG93KERvY3VtZW50JiBkb2N1bWVu
dCwgUmVmUHRyPERPTVByb21pc2U+JiYgZGV0YWlsc1Byb21pcwogCiAgICAgICAgIGF1dG8gcmVz
dWx0ID0gaGFuZGxlci0+Y29udmVydERhdGEoZGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiAg
ICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgIG1fc2hvd1By
b21pc2UtPnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgIHNl
dHRsZVNob3dQcm9taXNlKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTQyMywxMyArNDI0LDEzIEBAIHZvaWQgUGF5bWVudFJl
cXVlc3Q6OnNob3coRG9jdW1lbnQmIGRvY3VtZW50LCBSZWZQdHI8RE9NUHJvbWlzZT4mJiBkZXRh
aWxzUHJvbWlzCiAgICAgfQogCiAgICAgaWYgKCFzZWxlY3RlZFBheW1lbnRIYW5kbGVyKSB7Ci0g
ICAgICAgIG1fc2hvd1Byb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJv
ciB9KTsKKyAgICAgICAgc2V0dGxlU2hvd1Byb21pc2UoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVk
RXJyb3IgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIGV4Y2VwdGlvbiA9
IHNlbGVjdGVkUGF5bWVudEhhbmRsZXItPnNob3coKTsKICAgICBpZiAoZXhjZXB0aW9uLmhhc0V4
Y2VwdGlvbigpKSB7Ci0gICAgICAgIG1fc2hvd1Byb21pc2UtPnJlamVjdChleGNlcHRpb24ucmVs
ZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgc2V0dGxlU2hvd1Byb21pc2UoZXhjZXB0aW9uLnJl
bGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ0NSwzMiAr
NDQ2LDUxIEBAIHZvaWQgUGF5bWVudFJlcXVlc3Q6OnNob3coRG9jdW1lbnQmIGRvY3VtZW50LCBS
ZWZQdHI8RE9NUHJvbWlzZT4mJiBkZXRhaWxzUHJvbWlzCiAKIHZvaWQgUGF5bWVudFJlcXVlc3Q6
OmFib3J0V2l0aEV4Y2VwdGlvbihFeGNlcHRpb24mJiBleGNlcHRpb24pCiB7Ci0gICAgaWYgKG1f
c3RhdGUgIT0gU3RhdGU6OkludGVyYWN0aXZlKQotICAgICAgICByZXR1cm47CisgICAgQVNTRVJU
KG1fc3RhdGUgPT0gU3RhdGU6OkludGVyYWN0aXZlKTsKKyAgICBjbG9zZUFjdGl2ZVBheW1lbnRI
YW5kbGVyKCk7CiAKLSAgICBpZiAoYXV0byBwYXltZW50SGFuZGxlciA9IGFjdGl2ZVBheW1lbnRI
YW5kbGVyKCkpCi0gICAgICAgIHBheW1lbnRIYW5kbGVyLT5oaWRlKCk7Ci0gICAgbV9hY3RpdmVQ
YXltZW50SGFuZGxlciA9IHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAobV9yZXNwb25zZSkKKyAgICAg
ICAgbV9yZXNwb25zZS0+YWJvcnRXaXRoRXhjZXB0aW9uKFdURk1vdmUoZXhjZXB0aW9uKSk7Cisg
ICAgZWxzZQorICAgICAgICBzZXR0bGVTaG93UHJvbWlzZShXVEZNb3ZlKGV4Y2VwdGlvbikpOwor
fQogCi0gICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkludGVyYWN0aXZlKTsKK3ZvaWQgUGF5
bWVudFJlcXVlc3Q6OnNldHRsZVNob3dQcm9taXNlKEV4Y2VwdGlvbk9yPFBheW1lbnRSZXNwb25z
ZSY+JiYgcmVzdWx0KQoreworICAgIGlmIChhdXRvIHNob3dQcm9taXNlID0gc3RkOjpleGNoYW5n
ZShtX3Nob3dQcm9taXNlLCBzdGQ6Om51bGxvcHQpKQorICAgICAgICBzaG93UHJvbWlzZS0+c2V0
dGxlKFdURk1vdmUocmVzdWx0KSk7Cit9CisKK3ZvaWQgUGF5bWVudFJlcXVlc3Q6OmNsb3NlQWN0
aXZlUGF5bWVudEhhbmRsZXIoKQoreworICAgIGlmIChhdXRvIGFjdGl2ZVBheW1lbnRIYW5kbGVy
ID0gc3RkOjpleGNoYW5nZShtX2FjdGl2ZVBheW1lbnRIYW5kbGVyLCBzdGQ6Om51bGxvcHQpKQor
ICAgICAgICBhY3RpdmVQYXltZW50SGFuZGxlci0+cGF5bWVudEhhbmRsZXItPmhpZGUoKTsKKwor
ICAgIG1faXNVcGRhdGluZyA9IGZhbHNlOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6Q2xvc2VkOwot
ICAgIG1fc2hvd1Byb21pc2UtPnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbikpOwogfQogCiB2b2lk
IFBheW1lbnRSZXF1ZXN0OjpzdG9wKCkKIHsKLSAgICBhYm9ydFdpdGhFeGNlcHRpb24oRXhjZXB0
aW9uIHsgQWJvcnRFcnJvciB9KTsKKyAgICBjbG9zZUFjdGl2ZVBheW1lbnRIYW5kbGVyKCk7Cisg
ICAgc2V0dGxlU2hvd1Byb21pc2UoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsKIH0KIAogLy8g
aHR0cHM6Ly93d3cudzMub3JnL1RSL3BheW1lbnQtcmVxdWVzdC8jYWJvcnQoKS1tZXRob2QKLUV4
Y2VwdGlvbk9yPHZvaWQ+IFBheW1lbnRSZXF1ZXN0OjphYm9ydChBYm9ydFByb21pc2UmJiBwcm9t
aXNlKQordm9pZCBQYXltZW50UmVxdWVzdDo6YWJvcnQoQWJvcnRQcm9taXNlJiYgcHJvbWlzZSkK
IHsKLSAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6SW50ZXJhY3RpdmUpCi0gICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworICAgIGlmIChtX3Jlc3BvbnNlICYm
IG1fcmVzcG9uc2UtPmhhc1JldHJ5UHJvbWlzZSgpKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0
KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkludGVyYWN0aXZlKSB7CisgICAgICAgIHBy
b21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQogCi0gICAgc3RvcCgpOworICAgIGFib3J0V2l0aEV4Y2VwdGlvbihFeGNl
cHRpb24geyBBYm9ydEVycm9yIH0pOwogICAgIHByb21pc2UucmVzb2x2ZSgpOwotICAgIHJldHVy
biB7IH07CiB9CiAKIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9wYXltZW50LXJlcXVlc3QvI2Nh
bm1ha2VwYXltZW50KCktbWV0aG9kCkBAIC01ODcsNyArNjA3LDcgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gUGF5bWVudFJlcXVlc3Q6OmNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKEV2ZW50JiBldmVu
dCwgUmVmPEQKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAobV9tZXJjaGFudFNl
c3Npb25Qcm9taXNlLT5zdGF0dXMoKSA9PSBET01Qcm9taXNlOjpTdGF0dXM6OlJlamVjdGVkKSB7
Ci0gICAgICAgICAgICBzdG9wKCk7CisgICAgICAgICAgICBhYm9ydFdpdGhFeGNlcHRpb24oRXhj
ZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CkBAIC02MTMsNyArNjMzLDcgQEAgdm9pZCBQYXltZW50UmVxdWVzdDo6c2V0dGxlRGV0YWlsc1By
b21pc2UoVXBkYXRlUmVhc29uIHJlYXNvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1f
aXNDYW5jZWxQZW5kaW5nIHx8IG1fZGV0YWlsc1Byb21pc2UtPnN0YXR1cygpID09IERPTVByb21p
c2U6OlN0YXR1czo6UmVqZWN0ZWQpIHsKLSAgICAgICAgc3RvcCgpOworICAgICAgICBhYm9ydFdp
dGhFeGNlcHRpb24oRXhjZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNjc5LDQyICs2OTksNTUgQEAgdm9pZCBQYXltZW50UmVxdWVzdDo6d2hlbkRl
dGFpbHNTZXR0bGVkKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQogCiB2b2lkIFBh
eW1lbnRSZXF1ZXN0OjphY2NlcHQoY29uc3QgU3RyaW5nJiBtZXRob2ROYW1lLCBQYXltZW50UmVz
cG9uc2U6OkRldGFpbHNGdW5jdGlvbiYmIGRldGFpbHNGdW5jdGlvbiwgUmVmPFBheW1lbnRBZGRy
ZXNzPiYmIHNoaXBwaW5nQWRkcmVzcywgY29uc3QgU3RyaW5nJiBwYXllck5hbWUsIGNvbnN0IFN0
cmluZyYgcGF5ZXJFbWFpbCwgY29uc3QgU3RyaW5nJiBwYXllclBob25lKQogeworICAgIEFTU0VS
VCghbV9pc1VwZGF0aW5nKTsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6SW50ZXJhY3Rp
dmUpOwogCi0gICAgYXV0byByZXNwb25zZSA9IFBheW1lbnRSZXNwb25zZTo6Y3JlYXRlKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMsIFdURk1vdmUoZGV0YWlsc0Z1bmN0aW9uKSk7Ci0g
ICAgcmVzcG9uc2UtPnNldFJlcXVlc3RJZChtX2RldGFpbHMuaWQpOwotICAgIHJlc3BvbnNlLT5z
ZXRNZXRob2ROYW1lKG1ldGhvZE5hbWUpOwotCi0gICAgaWYgKG1fb3B0aW9ucy5yZXF1ZXN0U2hp
cHBpbmcpIHsKLSAgICAgICAgcmVzcG9uc2UtPnNldFNoaXBwaW5nQWRkcmVzcyhzaGlwcGluZ0Fk
ZHJlc3MucHRyKCkpOwotICAgICAgICByZXNwb25zZS0+c2V0U2hpcHBpbmdPcHRpb24obV9zaGlw
cGluZ09wdGlvbik7CisgICAgYm9vbCBpc1JldHJ5ID0gbV9yZXNwb25zZTsKKyAgICBpZiAoIWlz
UmV0cnkpIHsKKyAgICAgICAgbV9yZXNwb25zZSA9IFBheW1lbnRSZXNwb25zZTo6Y3JlYXRlKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMsIFdURk1vdmUoZGV0YWlsc0Z1bmN0aW9uKSk7
CisgICAgICAgIG1fcmVzcG9uc2UtPnNldFJlcXVlc3RJZChtX2RldGFpbHMuaWQpOwogICAgIH0K
IAotICAgIGlmIChtX29wdGlvbnMucmVxdWVzdFBheWVyTmFtZSkKLSAgICAgICAgcmVzcG9uc2Ut
PnNldFBheWVyTmFtZShwYXllck5hbWUpOwotCi0gICAgaWYgKG1fb3B0aW9ucy5yZXF1ZXN0UGF5
ZXJFbWFpbCkKLSAgICAgICAgcmVzcG9uc2UtPnNldFBheWVyRW1haWwocGF5ZXJFbWFpbCk7Ci0K
LSAgICBpZiAobV9vcHRpb25zLnJlcXVlc3RQYXllclBob25lKQotICAgICAgICByZXNwb25zZS0+
c2V0UGF5ZXJQaG9uZShwYXllclBob25lKTsKKyAgICBtX3Jlc3BvbnNlLT5zZXRNZXRob2ROYW1l
KG1ldGhvZE5hbWUpOworICAgIG1fcmVzcG9uc2UtPnNldFNoaXBwaW5nQWRkcmVzcyhtX29wdGlv
bnMucmVxdWVzdFNoaXBwaW5nID8gc2hpcHBpbmdBZGRyZXNzLnB0cigpIDogbnVsbHB0cik7Cisg
ICAgbV9yZXNwb25zZS0+c2V0U2hpcHBpbmdPcHRpb24obV9vcHRpb25zLnJlcXVlc3RTaGlwcGlu
ZyA/IG1fc2hpcHBpbmdPcHRpb24gOiBTdHJpbmcoKSk7CisgICAgbV9yZXNwb25zZS0+c2V0UGF5
ZXJOYW1lKG1fb3B0aW9ucy5yZXF1ZXN0UGF5ZXJOYW1lID8gcGF5ZXJOYW1lIDogU3RyaW5nKCkp
OworICAgIG1fcmVzcG9uc2UtPnNldFBheWVyRW1haWwobV9vcHRpb25zLnJlcXVlc3RQYXllckVt
YWlsID8gcGF5ZXJFbWFpbCA6IFN0cmluZygpKTsKKyAgICBtX3Jlc3BvbnNlLT5zZXRQYXllclBo
b25lKG1fb3B0aW9ucy5yZXF1ZXN0UGF5ZXJQaG9uZSA/IHBheWVyUGhvbmUgOiBTdHJpbmcoKSk7
CisKKyAgICBpZiAoIWlzUmV0cnkpCisgICAgICAgIHNldHRsZVNob3dQcm9taXNlKCptX3Jlc3Bv
bnNlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fcmVzcG9uc2UtPmhhc1JldHJ5UHJv
bWlzZSgpKTsKKyAgICAgICAgbV9yZXNwb25zZS0+c2V0dGxlUmV0cnlQcm9taXNlKCk7CisgICAg
fQogCi0gICAgbV9zaG93UHJvbWlzZS0+cmVzb2x2ZShyZXNwb25zZS5nZXQoKSk7CiAgICAgbV9z
dGF0ZSA9IFN0YXRlOjpDbG9zZWQ7CiB9CiAKLXZvaWQgUGF5bWVudFJlcXVlc3Q6OmNvbXBsZXRl
KHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbXBsZXRlPiYmIHJlc3VsdCkKK0V4Y2VwdGlvbk9yPHZv
aWQ+IFBheW1lbnRSZXF1ZXN0Ojpjb21wbGV0ZShzdGQ6Om9wdGlvbmFsPFBheW1lbnRDb21wbGV0
ZT4mJiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCk7Cisg
ICAgaWYgKCFtX2FjdGl2ZVBheW1lbnRIYW5kbGVyKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgQWJvcnRFcnJvciB9OworCiAgICAgYWN0aXZlUGF5bWVudEhhbmRsZXIoKS0+Y29tcGxldGUo
V1RGTW92ZShyZXN1bHQpKTsKICAgICBtX2FjdGl2ZVBheW1lbnRIYW5kbGVyID0gc3RkOjpudWxs
b3B0OworICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgUGF5bWVudFJlcXVlc3Q6OmNhbmNlbCgp
CitFeGNlcHRpb25Pcjx2b2lkPiBQYXltZW50UmVxdWVzdDo6cmV0cnkoUGF5bWVudFZhbGlkYXRp
b25FcnJvcnMmJiBlcnJvcnMpCiB7Ci0gICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkludGVyYWN0
aXZlKQotICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3Nl
ZCk7CisgICAgaWYgKCFtX2FjdGl2ZVBheW1lbnRIYW5kbGVyKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgQWJvcnRFcnJvciB9OworCisgICAgbV9zdGF0ZSA9IFN0YXRlOjpJbnRlcmFjdGl2
ZTsKKyAgICByZXR1cm4gYWN0aXZlUGF5bWVudEhhbmRsZXIoKS0+cmV0cnkoV1RGTW92ZShlcnJv
cnMpKTsKK30KIAordm9pZCBQYXltZW50UmVxdWVzdDo6Y2FuY2VsKCkKK3sKICAgICBtX2FjdGl2
ZVBheW1lbnRIYW5kbGVyID0gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKG1faXNVcGRhdGluZykg
ewpAQCAtNzIyLDcgKzc1NSw3IEBAIHZvaWQgUGF5bWVudFJlcXVlc3Q6OmNhbmNlbCgpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdG9wKCk7CisgICAgYWJvcnRXaXRoRXhjZXB0aW9u
KEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVu
dFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVu
dFJlcXVlc3QuaAppbmRleCBhY2JjYmY0YjY3NmUzMzk5NDJiMjk2OWRhN2E0MDI5NjkyNWMxNWE4
Li45ZTIxNWU1YzJkYWJlOTdiNDVjODU5ODg4MjBlNWYwZDMwYmQxYTg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5o
CkBAIC01MCw3ICs1MCw3IEBAIGVudW0gY2xhc3MgUGF5bWVudFNoaXBwaW5nVHlwZTsKIHN0cnVj
dCBQYXltZW50RGV0YWlsc1VwZGF0ZTsKIHN0cnVjdCBQYXltZW50TWV0aG9kRGF0YTsKIAotY2xh
c3MgUGF5bWVudFJlcXVlc3QgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxQYXltZW50UmVxdWVz
dD4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVE
YXRhIHsKK2NsYXNzIFBheW1lbnRSZXF1ZXN0IGZpbmFsIDogcHVibGljIEFjdGl2ZURPTU9iamVj
dCwgcHVibGljIENhbk1ha2VXZWFrUHRyPFBheW1lbnRSZXF1ZXN0PiwgcHVibGljIEV2ZW50VGFy
Z2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBSZWZDb3VudGVkPFBheW1lbnRSZXF1ZXN0PiB7CiBw
dWJsaWM6CiAgICAgdXNpbmcgQWJvcnRQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
OwogICAgIHVzaW5nIENhbk1ha2VQYXltZW50UHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJ
RExCb29sZWFuPjsKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIH5QYXltZW50UmVxdWVz
dCgpOwogCiAgICAgdm9pZCBzaG93KERvY3VtZW50JiwgUmVmUHRyPERPTVByb21pc2U+JiYgZGV0
YWlsc1Byb21pc2UsIFNob3dQcm9taXNlJiYpOwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFib3J0
KEFib3J0UHJvbWlzZSYmKTsKKyAgICB2b2lkIGFib3J0KEFib3J0UHJvbWlzZSYmKTsKICAgICB2
b2lkIGNhbk1ha2VQYXltZW50KERvY3VtZW50JiwgQ2FuTWFrZVBheW1lbnRQcm9taXNlJiYpOwog
CiAgICAgY29uc3QgU3RyaW5nJiBpZCgpIGNvbnN0OwpAQCAtOTMsNyArOTMsOCBAQCBwdWJsaWM6
CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gdXBkYXRlV2l0aChVcGRhdGVSZWFzb24sIFJlZjxET01Q
cm9taXNlPiYmKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBjb21wbGV0ZU1lcmNoYW50VmFsaWRh
dGlvbihFdmVudCYsIFJlZjxET01Qcm9taXNlPiYmKTsKICAgICB2b2lkIGFjY2VwdChjb25zdCBT
dHJpbmcmIG1ldGhvZE5hbWUsIFBheW1lbnRSZXNwb25zZTo6RGV0YWlsc0Z1bmN0aW9uJiYsIFJl
ZjxQYXltZW50QWRkcmVzcz4mJiBzaGlwcGluZ0FkZHJlc3MsIGNvbnN0IFN0cmluZyYgcGF5ZXJO
YW1lLCBjb25zdCBTdHJpbmcmIHBheWVyRW1haWwsIGNvbnN0IFN0cmluZyYgcGF5ZXJQaG9uZSk7
Ci0gICAgdm9pZCBjb21wbGV0ZShzdGQ6Om9wdGlvbmFsPFBheW1lbnRDb21wbGV0ZT4mJik7Cisg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gY29tcGxldGUoc3RkOjpvcHRpb25hbDxQYXltZW50Q29tcGxl
dGU+JiYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJldHJ5KFBheW1lbnRWYWxpZGF0aW9uRXJy
b3JzJiYpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKICAgICB1c2luZyBNZXRob2RJZGVudGlmaWVy
ID0gVmFyaWFudDxTdHJpbmcsIFVSTD47CkBAIC0xMTcsNiArMTE4LDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHdoZW5EZXRhaWxzU2V0dGxlZChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBhYm9ydFdpdGhFeGNlcHRpb24oRXhjZXB0aW9uJiYpOwogICAgIFBheW1lbnRIYW5kbGVy
KiBhY3RpdmVQYXltZW50SGFuZGxlcigpIHsgcmV0dXJuIG1fYWN0aXZlUGF5bWVudEhhbmRsZXIg
PyBtX2FjdGl2ZVBheW1lbnRIYW5kbGVyLT5wYXltZW50SGFuZGxlci5wdHIoKSA6IG51bGxwdHI7
IH0KKyAgICB2b2lkIHNldHRsZVNob3dQcm9taXNlKEV4Y2VwdGlvbk9yPFBheW1lbnRSZXNwb25z
ZSY+JiYpOworICAgIHZvaWQgY2xvc2VBY3RpdmVQYXltZW50SGFuZGxlcigpOwogCiAgICAgLy8g
QWN0aXZlRE9NT2JqZWN0CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICJQYXltZW50UmVxdWVzdCI7IH0KQEAgLTE0MSw2ICsxNDQsNyBA
QCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8UGF5bWVudEhhbmRsZXJXaXRoUGVuZGluZ0Fj
dGl2aXR5PiBtX2FjdGl2ZVBheW1lbnRIYW5kbGVyOwogICAgIFJlZlB0cjxET01Qcm9taXNlPiBt
X2RldGFpbHNQcm9taXNlOwogICAgIFJlZlB0cjxET01Qcm9taXNlPiBtX21lcmNoYW50U2Vzc2lv
blByb21pc2U7CisgICAgUmVmUHRyPFBheW1lbnRSZXNwb25zZT4gbV9yZXNwb25zZTsKICAgICBi
b29sIG1faXNVcGRhdGluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzQ2FuY2VsUGVuZGluZyB7
IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50
cmVxdWVzdC9QYXltZW50UmVxdWVzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1l
bnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmlkbAppbmRleCA3ZmMzZTdjY2U4YWI0NWNkYjY1YTdh
MDRiMTVmNzBkYjVjZWI5MzQ0Li5iOWMxMjY0Y2NhNDg3MTc0ZmZmNGQ1NWQzYzc4ZDMyMjUyNmI5
OWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1Bh
eW1lbnRSZXF1ZXN0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L1BheW1lbnRSZXF1ZXN0LmlkbApAQCAtMzMsNyArMzMsNyBAQAogICAgIFNlY3VyZUNvbnRl
eHQsCiBdIGludGVyZmFjZSBQYXltZW50UmVxdWVzdCA6IEV2ZW50VGFyZ2V0IHsKICAgICBbQ2Fs
bFdpdGg9RG9jdW1lbnRdIFByb21pc2U8UGF5bWVudFJlc3BvbnNlPiBzaG93KG9wdGlvbmFsIFBy
b21pc2U8UGF5bWVudERldGFpbHNVcGRhdGU+IGRldGFpbHNQcm9taXNlKTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIFByb21pc2U8dm9pZD4gYWJvcnQoKTsKKyAgICBQcm9taXNlPHZvaWQ+IGFi
b3J0KCk7CiAgICAgW0NhbGxXaXRoPURvY3VtZW50XSBQcm9taXNlPGJvb2xlYW4+IGNhbk1ha2VQ
YXltZW50KCk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVzcG9u
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVz
cG9uc2UuY3BwCmluZGV4IGNmMGFjNGY5NDRmMTAwMjY3NTExMDljM2NhMDk5Y2EzOWI0MmY3ZTAu
LjU2NDNmYTRiNWIzN2UzOTMyYjVmMjIzMWE0Y2NhNDE2MTliNjQ0ZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlc3BvbnNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNwb25z
ZS5jcHAKQEAgLTM1LDMxICszNSw5OCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXltZW50
UmVzcG9uc2U6OlBheW1lbnRSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYXltZW50UmVxdWVzdCYgcmVxdWVzdCwgRGV0YWlsc0Z1bmN0aW9uJiYgZGV0YWlsc0Z1bmN0
aW9uKQotICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgeyBjb250ZXh0IH0KLSAgICAs
IG1fcmVxdWVzdCB7IHJlcXVlc3QgfQorICAgIDogQWN0aXZlRE9NT2JqZWN0IHsgY29udGV4dCB9
CisgICAgLCBtX3JlcXVlc3QgeyBtYWtlV2Vha1B0cihyZXF1ZXN0KSB9CiAgICAgLCBtX2RldGFp
bHNGdW5jdGlvbiB7IFdURk1vdmUoZGV0YWlsc0Z1bmN0aW9uKSB9CiB7CiAgICAgQVNTRVJUKG1f
ZGV0YWlsc0Z1bmN0aW9uKTsKKyAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIH0KIAotUGF5bWVudFJl
c3BvbnNlOjp+UGF5bWVudFJlc3BvbnNlKCkgPSBkZWZhdWx0Owordm9pZCBQYXltZW50UmVzcG9u
c2U6OmZpbmlzaENvbnN0cnVjdGlvbigpCit7CisgICAgQVNTRVJUKCFoYXNQZW5kaW5nQWN0aXZp
dHkoKSk7CisgICAgbV9wZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlz
KTsKK30KKworUGF5bWVudFJlc3BvbnNlOjp+UGF5bWVudFJlc3BvbnNlKCkKK3sKKyAgICBBU1NF
UlQoIWhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKKyAgICBBU1NFUlQoIWhhc1JldHJ5UHJvbWlzZSgp
KTsKK30KIAogdm9pZCBQYXltZW50UmVzcG9uc2U6OmNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8UGF5
bWVudENvbXBsZXRlPiYmIHJlc3VsdCwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlz
ZSkKIHsKLSAgICBpZiAobV9jb21wbGV0ZUNhbGxlZCkgeworICAgIGlmIChtX3N0YXRlID09IFN0
YXRlOjpTdG9wcGVkIHx8ICFtX3JlcXVlc3QpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhj
ZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
IChtX3N0YXRlID09IFN0YXRlOjpDb21wbGV0ZWQgfHwgbV9yZXRyeVByb21pc2UpIHsKKyAgICAg
ICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoaGFzUGVuZGluZ0FjdGl2aXR5KCkpOwor
ICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpDcmVhdGVkKTsKKyAgICBtX3BlbmRpbmdBY3Rp
dml0eSA9IG51bGxwdHI7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpDb21wbGV0ZWQ7CisKKyAgICBw
cm9taXNlLnNldHRsZShtX3JlcXVlc3QtPmNvbXBsZXRlKFdURk1vdmUocmVzdWx0KSkpOworfQor
Cit2b2lkIFBheW1lbnRSZXNwb25zZTo6cmV0cnkoUGF5bWVudFZhbGlkYXRpb25FcnJvcnMmJiBl
cnJvcnMsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCit7CisgICAgaWYgKG1f
c3RhdGUgPT0gU3RhdGU6OlN0b3BwZWQgfHwgIW1fcmVxdWVzdCkgeworICAgICAgICBwcm9taXNl
LnJlamVjdChFeGNlcHRpb24geyBBYm9ydEVycm9yIH0pOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCBtX3JldHJ5UHJvbWlz
ZSkgewogICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29tcGxldGVDYWxsZWQgPSB0
cnVlOwotICAgIG1fcmVxdWVzdC0+Y29tcGxldGUoV1RGTW92ZShyZXN1bHQpKTsKLSAgICBwcm9t
aXNlLnJlc29sdmUoKTsKKyAgICBBU1NFUlQoaGFzUGVuZGluZ0FjdGl2aXR5KCkpOworICAgIEFT
U0VSVChtX3N0YXRlID09IFN0YXRlOjpDcmVhdGVkKTsKKworICAgIGF1dG8gZXhjZXB0aW9uID0g
bV9yZXF1ZXN0LT5yZXRyeShXVEZNb3ZlKGVycm9ycykpOworICAgIGlmIChleGNlcHRpb24uaGFz
RXhjZXB0aW9uKCkpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoZXhjZXB0aW9uLnJlbGVhc2VF
eGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3JldHJ5UHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSk7Cit9CisKK3ZvaWQgUGF5bWVudFJlc3BvbnNlOjphYm9ydFdp
dGhFeGNlcHRpb24oRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQoreworICAgIHNldHRsZVJldHJ5UHJv
bWlzZShXVEZNb3ZlKGV4Y2VwdGlvbikpOworICAgIG1fcGVuZGluZ0FjdGl2aXR5ID0gbnVsbHB0
cjsKKyAgICBtX3N0YXRlID0gU3RhdGU6OkNvbXBsZXRlZDsKK30KKwordm9pZCBQYXltZW50UmVz
cG9uc2U6OnNldHRsZVJldHJ5UHJvbWlzZShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkKK3sK
KyAgICBpZiAoIW1fcmV0cnlQcm9taXNlKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQo
aGFzUGVuZGluZ0FjdGl2aXR5KCkpOworICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpDcmVh
dGVkKTsKKyAgICBzdGQ6OmV4Y2hhbmdlKG1fcmV0cnlQcm9taXNlLCBzdGQ6Om51bGxvcHQpLT5z
ZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKK30KKworYm9vbCBQYXltZW50UmVzcG9uc2U6OmNhblN1
c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAoreworICAgIEFTU0VSVChtX3N0YXRl
ICE9IFN0YXRlOjpTdG9wcGVkKTsKKyAgICByZXR1cm4gIWhhc1BlbmRpbmdBY3Rpdml0eSgpOwog
fQogCi12b2lkIFBheW1lbnRSZXNwb25zZTo6cmV0cnkoUGF5bWVudFZhbGlkYXRpb25FcnJvcnMm
JiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3ZvaWQgUGF5bWVudFJlc3Bv
bnNlOjpzdG9wKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHByb21pc2UucmVqZWN0
KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH0pOworICAgIHNldHRsZVJldHJ5UHJvbWlz
ZShFeGNlcHRpb24geyBBYm9ydEVycm9yIH0pOworICAgIG1fcGVuZGluZ0FjdGl2aXR5ID0gbnVs
bHB0cjsKKyAgICBtX3N0YXRlID0gU3RhdGU6OlN0b3BwZWQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVl
c3QvUGF5bWVudFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L1BheW1lbnRSZXNwb25zZS5oCmluZGV4IGMzNjVkZmEzOTJkZDkwOGU4YTBmYjJlYjQ0Njdh
NzQ1NzI0MjBiMWUuLmY3ZjBmNTdmMTQ2ZDE5YzJmNzY1Mzg3Yzk0OWU0NTJiYTY4M2MxMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJl
c3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXlt
ZW50UmVzcG9uc2UuaApAQCAtMjcsMTIgKzI3LDE0IEBACiAKICNpZiBFTkFCTEUoUEFZTUVOVF9S
RVFVRVNUKQogCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1
ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZUluV3JhcHBlZE9i
amVjdC5oIgogI2luY2x1ZGUgIlBheW1lbnRBZGRyZXNzLmgiCiAjaW5jbHVkZSAiUGF5bWVudENv
bXBsZXRlLmgiCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC00MCwxMyArNDIsMTUgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBQYXltZW50UmVx
dWVzdDsKIHN0cnVjdCBQYXltZW50VmFsaWRhdGlvbkVycm9yczsKIAotY2xhc3MgUGF5bWVudFJl
c3BvbnNlIGZpbmFsIDogcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLCBwdWJsaWMg
RXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIFJlZkNvdW50ZWQ8UGF5bWVudFJlc3Bv
bnNlPiB7CitjbGFzcyBQYXltZW50UmVzcG9uc2UgZmluYWwgOiBwdWJsaWMgQWN0aXZlRE9NT2Jq
ZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIFJlZkNvdW50ZWQ8
UGF5bWVudFJlc3BvbnNlPiB7CiBwdWJsaWM6CiAgICAgdXNpbmcgRGV0YWlsc0Z1bmN0aW9uID0g
RnVuY3Rpb248SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4oSlNDOjpFeGVjU3RhdGUmKT47CiAK
ICAgICBzdGF0aWMgUmVmPFBheW1lbnRSZXNwb25zZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBEZXRhaWxzRnVuY3Rpb24m
JiBkZXRhaWxzRnVuY3Rpb24pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQ
YXltZW50UmVzcG9uc2UoY29udGV4dCwgcmVxdWVzdCwgV1RGTW92ZShkZXRhaWxzRnVuY3Rpb24p
KSk7CisgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdFJlZigqbmV3IFBheW1lbnRSZXNwb25z
ZShjb250ZXh0LCByZXF1ZXN0LCBXVEZNb3ZlKGRldGFpbHNGdW5jdGlvbikpKTsKKyAgICAgICAg
cmVzcG9uc2UtPmZpbmlzaENvbnN0cnVjdGlvbigpOworICAgICAgICByZXR1cm4gcmVzcG9uc2U7
CiAgICAgfQogCiAgICAgflBheW1lbnRSZXNwb25zZSgpOwpAQCAtNzcsMjAgKzgxLDM1IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgY29tcGxldGUoc3RkOjpvcHRpb25hbDxQYXltZW50Q29tcGxldGU+
JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKICAgICB2b2lkIHJldHJ5KFBheW1lbnRW
YWxpZGF0aW9uRXJyb3JzJiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2b2lk
IGFib3J0V2l0aEV4Y2VwdGlvbihFeGNlcHRpb24mJik7CisgICAgYm9vbCBoYXNSZXRyeVByb21p
c2UoKSBjb25zdCB7IHJldHVybiAhIW1fcmV0cnlQcm9taXNlOyB9CisgICAgdm9pZCBzZXR0bGVS
ZXRyeVByb21pc2UoRXhjZXB0aW9uT3I8dm9pZD4mJiA9IHsgfSk7CiAKICAgICB1c2luZyBSZWZD
b3VudGVkPFBheW1lbnRSZXNwb25zZT46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFBheW1l
bnRSZXNwb25zZT46OmRlcmVmOwogCiBwcml2YXRlOgogICAgIFBheW1lbnRSZXNwb25zZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGF5bWVudFJlcXVlc3QmLCBEZXRhaWxzRnVuY3Rpb24mJik7
CisgICAgdm9pZCBmaW5pc2hDb25zdHJ1Y3Rpb24oKTsKKworICAgIC8vIEFjdGl2ZURPTU9iamVj
dAorICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAiUGF5bWVudFJlc3BvbnNlIjsgfQorICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50
U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogCiAgICAg
Ly8gRXZlbnRUYXJnZXQKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVy
ZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFBheW1lbnRSZXNwb25zZUV2ZW50VGFyZ2V0SW50
ZXJmYWNlVHlwZTsgfQotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
cjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFjdGl2ZURP
TU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAgICAgdm9pZCByZWZFdmVudFRh
cmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5h
bCB7IGRlcmVmKCk7IH0KIAotICAgIFJlZjxQYXltZW50UmVxdWVzdD4gbV9yZXF1ZXN0OworICAg
IGVudW0gY2xhc3MgU3RhdGUgeworICAgICAgICBDcmVhdGVkLAorICAgICAgICBDb21wbGV0ZWQs
CisgICAgICAgIFN0b3BwZWQsCisgICAgfTsKKworICAgIFdlYWtQdHI8UGF5bWVudFJlcXVlc3Q+
IG1fcmVxdWVzdDsKICAgICBTdHJpbmcgbV9yZXF1ZXN0SWQ7CiAgICAgU3RyaW5nIG1fbWV0aG9k
TmFtZTsKICAgICBEZXRhaWxzRnVuY3Rpb24gbV9kZXRhaWxzRnVuY3Rpb247CkBAIC0xMDAsNyAr
MTE5LDkgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9wYXllck5hbWU7CiAgICAgU3RyaW5nIG1f
cGF5ZXJFbWFpbDsKICAgICBTdHJpbmcgbV9wYXllclBob25lOwotICAgIGJvb2wgbV9jb21wbGV0
ZUNhbGxlZCB7IGZhbHNlIH07CisgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpDcmVhdGVkIH07
CisgICAgc3RkOjpvcHRpb25hbDxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+IG1fcmV0cnlQcm9t
aXNlOworICAgIFJlZlB0cjxQZW5kaW5nQWN0aXZpdHk8UGF5bWVudFJlc3BvbnNlPj4gbV9wZW5k
aW5nQWN0aXZpdHk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggZGY5NmY4YjYxMTExMmFmZDQ1MjVmOTkwOGNjYWVjZTJj
NjU5YWY1Ny4uM2EwNjY5ZGNmM2FlMDBmOTZkZTlmNWNmYWQ3NjQzMmY2MjliODFhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTQ3LDkgKzU0Nyw5IEBAIEludGVybmFs
czo6SW50ZXJuYWxzKERvY3VtZW50JiBkb2N1bWVudCkKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkp
CiAgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOwotICAgIGlmIChmcmFtZSAmJiBm
cmFtZS0+cGFnZSgpKSB7Ci0gICAgICAgIG1fbW9ja1BheW1lbnRDb29yZGluYXRvciA9IG5ldyBN
b2NrUGF5bWVudENvb3JkaW5hdG9yKCpmcmFtZS0+cGFnZSgpKTsKLSAgICAgICAgZnJhbWUtPnBh
Z2UoKS0+c2V0UGF5bWVudENvb3JkaW5hdG9yKHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudENvb3Jk
aW5hdG9yPigqbV9tb2NrUGF5bWVudENvb3JkaW5hdG9yKSk7CisgICAgaWYgKGZyYW1lICYmIGZy
YW1lLT5wYWdlKCkgJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgYXV0byBtb2Nr
UGF5bWVudENvb3JkaW5hdG9yID0gbmV3IE1vY2tQYXltZW50Q29vcmRpbmF0b3IoKmZyYW1lLT5w
YWdlKCkpOworICAgICAgICBmcmFtZS0+cGFnZSgpLT5zZXRQYXltZW50Q29vcmRpbmF0b3Ioc3Rk
OjptYWtlX3VuaXF1ZTxQYXltZW50Q29vcmRpbmF0b3I+KCptb2NrUGF5bWVudENvb3JkaW5hdG9y
KSk7CiAgICAgfQogI2VuZGlmCiB9CkBAIC00NjI1LDkgKzQ2MjUsOSBAQCBib29sIEludGVybmFs
czo6aGFzU2VydmljZVdvcmtlckNvbm5lY3Rpb24oKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQ
TEVfUEFZKQotTW9ja1BheW1lbnRDb29yZGluYXRvciYgSW50ZXJuYWxzOjptb2NrUGF5bWVudENv
b3JkaW5hdG9yKCkgY29uc3QKK01vY2tQYXltZW50Q29vcmRpbmF0b3ImIEludGVybmFsczo6bW9j
a1BheW1lbnRDb29yZGluYXRvcihEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuICptX21vY2tQYXltZW50Q29vcmRpbmF0b3I7CisgICAgcmV0dXJuIGRvd25jYXN0PE1vY2tQ
YXltZW50Q29vcmRpbmF0b3I+KGRvY3VtZW50LmZyYW1lKCktPnBhZ2UoKS0+cGF5bWVudENvb3Jk
aW5hdG9yKCkuY2xpZW50KCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCmluZGV4IDYyZjlhNDYxM2M4MDI0MzU4Njg3ZDRmZjI0MzliZTk0ZGZkYjEwZjcuLjhmMWQ0
YjcxZTdmMDc3NThiMjIxNTZiMDE2NDgxMzgxNTY0MThiMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaApAQCAtNjk4LDcgKzY5OCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5B
QkxFKEFQUExFX1BBWSkKLSAgICBNb2NrUGF5bWVudENvb3JkaW5hdG9yJiBtb2NrUGF5bWVudENv
b3JkaW5hdG9yKCkgY29uc3Q7CisgICAgTW9ja1BheW1lbnRDb29yZGluYXRvciYgbW9ja1BheW1l
bnRDb29yZGluYXRvcihEb2N1bWVudCYpIGNvbnN0OwogI2VuZGlmCiAKICAgICBib29sIGlzU3lz
dGVtUHJldmlld0xpbmsoRWxlbWVudCYpIGNvbnN0OwpAQCAtNzk1LDEwICs3OTUsNiBAQCBwcml2
YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvclN0dWJGcm9udGVuZD4gbV9pbnNw
ZWN0b3JGcm9udGVuZDsKICAgICBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gbV9jYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uOwotCi0jaWYgRU5BQkxFKEFQUExFX1BBWSkKLSAgICBNb2NrUGF5
bWVudENvb3JkaW5hdG9yKiBtX21vY2tQYXltZW50Q29vcmRpbmF0b3IgeyBudWxscHRyIH07Ci0j
ZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbAppbmRleCAxOWRjZjIxZmJlMmUwYThlZTI5OWI2NGM4NjVjZDRjYzhmYjc5MDQ5
Li43NzMwNDJlYmYyNTliZjA5Y2NlZTlkNDcxNjE5MDE3OGY2YzgyYWJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC02ODIsNyArNjgyLDcgQEAgZW51bSBDb21wb3NpdGlu
Z1BvbGljeSB7CiAgICAgW0NvbmRpdGlvbmFsPVNFUlZJQ0VfV09SS0VSXSB2b2lkIHRlcm1pbmF0
ZVNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlciB3b3JrZXIpOwogICAgIFtDb25kaXRpb25hbD1T
RVJWSUNFX1dPUktFUl0gYm9vbGVhbiBoYXNTZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpOwogCi0g
ICAgW0NvbmRpdGlvbmFsPUFQUExFX1BBWV0gcmVhZG9ubHkgYXR0cmlidXRlIE1vY2tQYXltZW50
Q29vcmRpbmF0b3IgbW9ja1BheW1lbnRDb29yZGluYXRvcjsKKyAgICBbQ2FsbFdpdGg9RG9jdW1l
bnQsIENvbmRpdGlvbmFsPUFQUExFX1BBWV0gcmVhZG9ubHkgYXR0cmlidXRlIE1vY2tQYXltZW50
Q29vcmRpbmF0b3IgbW9ja1BheW1lbnRDb29yZGluYXRvcjsKIAogICAgIGJvb2xlYW4gaXNTeXN0
ZW1QcmV2aWV3TGluayhFbGVtZW50IGVsZW1lbnQpOwogICAgIGJvb2xlYW4gaXNTeXN0ZW1QcmV2
aWV3SW1hZ2UoRWxlbWVudCBlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwCmluZGV4IGU5YjRjOWFhMTAzNzk5NjAwMzczMmI5
YTg2Y2IzNDk4NWE4OGEyYjkuLmRlZmQzNjk1YTMxMzZkODM2M2U5MjNkMTk2Y2QyYTQxYzk4NGI5
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGlu
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5h
dG9yLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAorI2lu
Y2x1ZGUgIkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiTW9ja1Bh
eW1lbnQuaCIKICNpbmNsdWRlICJNb2NrUGF5bWVudENvbnRhY3QuaCIKICNpbmNsdWRlICJNb2Nr
UGF5bWVudE1ldGhvZC5oIgpAQCAtMjA5LDcgKzIxMCwxMCBAQCB2b2lkIE1vY2tQYXltZW50Q29v
cmRpbmF0b3I6OmNhbmNlbFBheW1lbnQoKQogCiB2b2lkIE1vY2tQYXltZW50Q29vcmRpbmF0b3I6
OmNvbXBsZXRlUGF5bWVudFNlc3Npb24oc3RkOjpvcHRpb25hbDxQYXltZW50QXV0aG9yaXphdGlv
blJlc3VsdD4mJiByZXN1bHQpCiB7Ci0gICAgaWYgKCFpc0ZpbmFsU3RhdGVSZXN1bHQocmVzdWx0
KSkKKyAgICBhdXRvIGlzRmluYWxTdGF0ZSA9IGlzRmluYWxTdGF0ZVJlc3VsdChyZXN1bHQpOwor
ICAgIG1fZXJyb3JzID0gV1RGTW92ZShyZXN1bHQtPmVycm9ycyk7CisKKyAgICBpZiAoIWlzRmlu
YWxTdGF0ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgKytoaWRlQ291bnQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5oCmluZGV4IDQ3NzEwN2M3
N2ExODRkODJmNzI3Y2E3ODEwMDMyNmIyZDRhNjBiNWMuLjQzZjhiNmM0NjQyMjg3ZTBjODI0ODlh
MGRmY2YxNjNkZWI1NzAwYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a1BheW1lbnRDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1Bh
eW1lbnRDb29yZGluYXRvci5oCkBAIC03NCw2ICs3NCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
YW5jZWxQYXltZW50U2Vzc2lvbigpIGZpbmFsOwogICAgIHZvaWQgcGF5bWVudENvb3JkaW5hdG9y
RGVzdHJveWVkKCkgZmluYWw7CiAKKyAgICBib29sIGlzTW9ja1BheW1lbnRDb29yZGluYXRvcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKwogICAgIHZvaWQgdXBkYXRlVG90YWxBbmRM
aW5lSXRlbXMoY29uc3QgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGlu
ZUl0ZW1zJik7CiAKICAgICBQYWdlJiBtX3BhZ2U7CkBAIC04Nyw0ICs4OSw4IEBAIHByaXZhdGU6
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJ
TihXZWJDb3JlOjpNb2NrUGF5bWVudENvb3JkaW5hdG9yKQorICAgIHN0YXRpYyBib29sIGlzVHlw
ZShjb25zdCBXZWJDb3JlOjpQYXltZW50Q29vcmRpbmF0b3JDbGllbnQmIHBheW1lbnRDb29yZGlu
YXRvckNsaWVudCkgeyByZXR1cm4gcGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmlzTW9ja1BheW1l
bnRDb29yZGluYXRvcigpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRp
ZiAvLyBFTkFCTEUoQVBQTEVfUEFZKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFiNTgwZDk0OTAxMWY0NjQxM2JkYzYzZjg0
ODk0NzYyMDcyNDA1NGMuLmMwZGU4MGQxYzAyYmZiZjlhZWVmNGFjMTUzMjU4ZWQxZmMyNjYxYzMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0xMC0yNyAgQW5keSBFc3RlcyAgPGFlc3Rlc0Bh
cHBsZS5jb20+CisKKyAgICAgICAgW1BheW1lbnQgUmVxdWVzdF0gSW1wbGVtZW50IFBheW1lbnRS
ZXNwb25zZS5yZXRyeSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTA5ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGh0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1yZWpl
Y3RzLWlmLW5vdC1hY3RpdmUuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcmVqZWN0cy1pZi1ub3Qt
YWN0aXZlLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcGF5bWVudHJl
cXVlc3QvcGF5bWVudC1yZXNwb25zZS1yZXRyeS1tZXRob2QuaHR0cHMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9u
c2UtcmV0cnktbWV0aG9kLmh0dHBzLmh0bWw6IEFkZGVkLgorCiAyMDE4LTEwLTI2ICBDb21taXQg
UXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMjM3NDc5IGFuZCByMjM3NDg0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJlamVjdHMtaWYtbm90
LWFjdGl2ZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1l
bnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcmVqZWN0cy1pZi1ub3QtYWN0aXZlLmh0dHBzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NWQzNWEzNTgwNjU0YjMwNDMwNWU2ZjQ5ODM5MjliMjEw
NDU5ZjY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50
cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJlamVjdHMtaWYtbm90LWFjdGl2ZS5odHRwcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw4IEBACisKKworCisKK1BBU1MgcmV0cnkoKSdzIHJldHJ5UHJv
bWlzZSByZWplY3RzIGlmIGRvY3VtZW50IGlzIG5vdCBmdWxseSBhY3RpdmUuIAorUEFTUyByZXRy
eSgpJ3MgcmV0cnlQcm9taXNlIHJlamVjdHMgaWYgdGhlIGRvY3VtZW50IGJlY29tZXMgbm90IGZ1
bGx5IGFjdGl2ZS4gCitQQVNTIGNvbXBsZXRlKCkncyBjb21wbGV0ZVByb21pc2UgcmVqZWN0cyBp
ZiBkb2N1bWVudCBpcyBub3QgZnVsbHkgYWN0aXZlLiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJlamVjdHMtaWYt
bm90LWFjdGl2ZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVx
dWVzdC9wYXltZW50LXJlc3BvbnNlLXJlamVjdHMtaWYtbm90LWFjdGl2ZS5odHRwcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjhlYjk1MTZlODIxZjBhZTM0OGI2ZWQzYmUxMWU5MDY2NWMwYzAzYTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1l
bnQtcmVzcG9uc2UtcmVqZWN0cy1pZi1ub3QtYWN0aXZlLmh0dHBzLmh0bWwKQEAgLTAsMCArMSwx
MzkgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD11dGYtOD4KKzxsaW5rIHJlbD0i
aGVscCIgaHJlZj0iaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3BheW1lbnQtcmVxdWVzdC8jcmV0cnkt
bWV0aG9kIj4KKzx0aXRsZT5QYXltZW50UmVzcG9uc2UgcmV0cnkoKSByZWplY3RzIGlmIGRvYyBp
cyBub3QgZnVsbHkgYWN0aXZlPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJj
ZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3BheW1l
bnQtcmVxdWVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vdzNjLmdp
dGh1Yi5pby9wYXltZW50LXJlcXVlc3QvI2RvbS1wYXltZW50cmVzcG9uc2UtcmV0cnkiPgorPGJv
ZHk+Cis8c2NyaXB0Pgorc2V0dXAoeyBleHBsaWNpdF9kb25lOiB0cnVlLCBleHBsaWNpdF90aW1l
b3V0OiB0cnVlIH0pOworY29uc3QgdmFsaWRNZXRob2RzID0gT2JqZWN0LmZyZWV6ZShbdmFsaWRQ
YXltZW50TWV0aG9kKCldKTsKK2NvbnN0IHZhbGlkQW1vdW50ID0gT2JqZWN0LmZyZWV6ZSh7Cisg
IGN1cnJlbmN5OiAiVVNEIiwKKyAgdmFsdWU6ICI1LjAwIiwKK30pOworY29uc3QgdmFsaWRUb3Rh
bCA9IE9iamVjdC5mcmVlemUoeworICBsYWJlbDogIlRvdGFsIGR1ZSIsCisgIGFtb3VudDogdmFs
aWRBbW91bnQsCit9KTsKK2NvbnN0IHZhbGlkRGV0YWlscyA9IE9iamVjdC5mcmVlemUoeworICB0
b3RhbDogdmFsaWRUb3RhbCwKK30pOworCitmdW5jdGlvbiBnZXRMb2FkZWRQYXltZW50UmVzcG9u
c2UoaWZyYW1lLCB1cmwpIHsKKyAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAg
IGlmcmFtZS5hZGRFdmVudExpc3RlbmVyKAorICAgICAgImxvYWQiLAorICAgICAgKCkgPT4gewor
ICAgICAgICBjb25zdCB7IFBheW1lbnRSZXF1ZXN0IH0gPSBpZnJhbWUuY29udGVudFdpbmRvdzsK
KyAgICAgICAgYWN0aXZhdGVUaGVuKGFzeW5jICgpID0+IHsKKyAgICAgICAgICBjb25zdCByZXF1
ZXN0ID0gbmV3IFBheW1lbnRSZXF1ZXN0KHZhbGlkTWV0aG9kcywgdmFsaWREZXRhaWxzKTsKKyAg
ICAgICAgICBjb25zdCBhY2NlcHRQcm9taXNlID0gcmVxdWVzdC5zaG93KCk7CisgICAgICAgICAg
aW50ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0b3IuYWNjZXB0UGF5bWVudCgpOworICAgICAg
ICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYWNjZXB0UHJvbWlzZTsKKyAgICAgICAgICByZXNv
bHZlKHJlc3BvbnNlKTsKKyAgICAgICAgfSk7CisgICAgICB9LAorICAgICAgeyBvbmNlOiB0cnVl
IH0KKyAgICApOworICAgIGlmcmFtZS5zcmMgPSB1cmw7CisgIH0pOworfQorCitmdW5jdGlvbiBt
ZXRob2ROb3RGdWxseUFjdGl2ZShidXR0b24sIG1ldGhvZE5hbWUsIC4uLmFyZ3MpIHsKKyAgY29u
c3QgdGV4dCA9IGJ1dHRvbi50ZXh0Q29udGVudC50cmltKCk7CisgIGJ1dHRvbi5pbm5lclRleHQg
PSAiIjsKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IGlmcmFtZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGlmcmFtZS5hbGxvd1BheW1lbnRS
ZXF1ZXN0ID0gdHJ1ZTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7CisK
KyAgICAvLyBXZSBmaXJzdCBnb3QgdG8gcGFnZTEuaHRtbCwgZ3JhYiBhIFBheW1lbnRSZXNwb25z
ZSBpbnN0YW5jZS4KKyAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGdldExvYWRlZFBheW1lbnRS
ZXNwb25zZSgKKyAgICAgIGlmcmFtZSwKKyAgICAgICIvcGF5bWVudC1yZXF1ZXN0L3Jlc291cmNl
cy9wYWdlMS5odG1sIgorICAgICk7CisgICAgLy8gV2UgbmF2aWdhdGUgdGhlIGlmcmFtZSBhZ2Fp
biwgcHV0dGluZyByZXNwb25zZSdzIGRvY3VtZW50IGludG8gYW4gaW5hY3RpdmUgc3RhdGUuCisg
ICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICBpZnJhbWUuYWRkRXZlbnRM
aXN0ZW5lcigibG9hZCIsIHJlc29sdmUpOworICAgICAgaWZyYW1lLnNyYyA9ICIvcGF5bWVudC1y
ZXF1ZXN0L3Jlc291cmNlcy9wYWdlMi5odG1sIjsKKyAgICB9KTsKKyAgICAvLyBOb3csIHJlc3Bv
bnNlJ3MgcmVsZXZhbnQgZ2xvYmFsIG9iamVjdCdzIGRvY3VtZW50IGlzIG5vIGxvbmdlciBhY3Rp
dmUuCisgICAgLy8gU28sIHByb21pc2UgbmVlZHMgdG8gcmVqZWN0IGFwcHJvcHJpYXRlbHkuCisg
ICAgY29uc3QgcHJvbWlzZSA9IHJlc3BvbnNlW21ldGhvZE5hbWVdKC4uLmFyZ3MpOworICAgIGF3
YWl0IHByb21pc2VfcmVqZWN0cygKKyAgICAgIHQsCisgICAgICAiQWJvcnRFcnJvciIsCisgICAg
ICBwcm9taXNlLAorICAgICAgIkluYWN0aXZlIGRvY3VtZW50LCBzbyBtdXN0IHRocm93IEFib3J0
RXJyb3IiCisgICAgKTsKKyAgICAvLyBXZSBhcmUgZG9uZSwgc28gY2xlYW4gdXAuCisgICAgaWZy
YW1lLnJlbW92ZSgpOworICB9LCB0ZXh0KTsKK30KKworZnVuY3Rpb24gbWV0aG9kQmVjb21lc05v
dEZ1bGx5QWN0aXZlKGJ1dHRvbiwgbWV0aG9kTmFtZSwgLi4uYXJncykgeworICBjb25zdCB0ZXh0
ID0gYnV0dG9uLnRleHRDb250ZW50LnRyaW0oKTsKKyAgYnV0dG9uLmlubmVyVGV4dCA9ICIiOwor
ICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgaWZyYW1lID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgaWZyYW1lLmFsbG93UGF5bWVudFJlcXVlc3Qg
PSB0cnVlOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKKworICAgIC8v
IFdlIGZpcnN0IGdvdCB0byBwYWdlMS5odG1sLCBncmFiIGEgUGF5bWVudFJlc3BvbnNlIGluc3Rh
bmNlLgorICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZ2V0TG9hZGVkUGF5bWVudFJlc3BvbnNl
KAorICAgICAgaWZyYW1lLAorICAgICAgIi9wYXltZW50LXJlcXVlc3QvcmVzb3VyY2VzL3BhZ2Ux
Lmh0bWwiCisgICAgKTsKKworICAgIC8vIHdlIGdldCB0aGUgcHJvbWlzZSBmcm9tIHBhZ2UxLmh0
bWwsIHdoaWxlIGl0J3MgYWN0aXZlIQorICAgIGNvbnN0IHByb21pc2UgPSByZXNwb25zZVttZXRo
b2ROYW1lXSguLi5hcmdzKTsKKworICAgIC8vIFdlIG5hdmlnYXRlIHRoZSBpZnJhbWUgYWdhaW4s
IHB1dHRpbmcgcmVzcG9uc2UncyBkb2N1bWVudCBpbnRvIGFuIGluYWN0aXZlIHN0YXRlLgorICAg
IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgaWZyYW1lLmFkZEV2ZW50TGlz
dGVuZXIoImxvYWQiLCByZXNvbHZlKTsKKyAgICAgIGlmcmFtZS5zcmMgPSAiL3BheW1lbnQtcmVx
dWVzdC9yZXNvdXJjZXMvcGFnZTIuaHRtbCI7CisgICAgfSk7CisKKyAgICAvLyBOb3csIHJlc3Bv
bnNlJ3MgcmVsZXZhbnQgZ2xvYmFsIG9iamVjdCdzIGRvY3VtZW50IGlzIG5vIGxvbmdlciBhY3Rp
dmUuCisgICAgLy8gU28sIHByb21pc2UgbmVlZHMgdG8gcmVqZWN0IGFwcHJvcHJpYXRlbHkuCisg
ICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICAgICAgdCwKKyAgICAgICJBYm9ydEVycm9yIiwK
KyAgICAgIHByb21pc2UsCisgICAgICAiSW5hY3RpdmUgZG9jdW1lbnQsIHNvIG11c3QgdGhyb3cg
QWJvcnRFcnJvciIKKyAgICApOworICAgIC8vIFdlIGFyZSBkb25lLCBzbyBjbGVhbiB1cC4KKyAg
ICBpZnJhbWUucmVtb3ZlKCk7CisgIH0sIHRleHQpOworfQorCit3aW5kb3cuYWRkRXZlbnRMaXN0
ZW5lcigibG9hZCIsIGFzeW5jICgpID0+IHsKKyAgYXdhaXQgbWV0aG9kTm90RnVsbHlBY3RpdmUo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRvbjEiKSwgJ3JldHJ5Jywge30pOworICBhd2Fp
dCBtZXRob2RCZWNvbWVzTm90RnVsbHlBY3RpdmUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1
dHRvbjIiKSwgJ3JldHJ5Jywge30pOworICBhd2FpdCBtZXRob2ROb3RGdWxseUFjdGl2ZShkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9uMyIpLCAnY29tcGxldGUnLCAnc3VjY2VzcycpOwor
ICBkb25lKCk7Cit9KTsKKzwvc2NyaXB0PgorPHNlY3Rpb24+CisgIDxvbD4KKyAgICA8bGk+Cisg
ICAgICA8YnV0dG9uIGlkPSJidXR0b24xIj4KKyAgICAgICAgcmV0cnkoKSdzIHJldHJ5UHJvbWlz
ZSByZWplY3RzIGlmIGRvY3VtZW50IGlzIG5vdCBmdWxseSBhY3RpdmUuCisgICAgICA8L2J1dHRv
bj4KKyAgICA8L2xpPgorICAgIDxsaT4KKyAgICAgIDxidXR0b24gaWQ9ImJ1dHRvbjIiPgorICAg
ICAgICByZXRyeSgpJ3MgcmV0cnlQcm9taXNlIHJlamVjdHMgaWYgdGhlIGRvY3VtZW50IGJlY29t
ZXMgbm90IGZ1bGx5IGFjdGl2ZS4KKyAgICAgIDwvYnV0dG9uPgorICAgIDwvbGk+CisgICAgPGxp
PgorICAgICAgPGJ1dHRvbiBpZD0iYnV0dG9uMyI+CisgICAgICAgIGNvbXBsZXRlKCkncyBjb21w
bGV0ZVByb21pc2UgcmVqZWN0cyBpZiBkb2N1bWVudCBpcyBub3QgZnVsbHkgYWN0aXZlLgorICAg
ICAgPC9idXR0b24+CisgICAgPC9saT4KKyAgPC9vbD4KKzwvc2VjdGlvbj4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1y
ZXRyeS1tZXRob2QuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9w
YXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJldHJ5LW1ldGhvZC5odHRwcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGYxMDRjNjgzYmY1ZmJiOTIyZmJlNTlmNzI5ZWUyYzc5NWQwMzE0
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVl
c3QvcGF5bWVudC1yZXNwb25zZS1yZXRyeS1tZXRob2QuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMjYgQEAKKworCisKKworCisKKworCisKKworUEFTUyBDYW4gY29uc3RydWN0IGEgcGF5
bWVudCByZXF1ZXN0IChzbW9rZSB0ZXN0KS4gCitQQVNTIFBheW1lbnRSZXNwb25zZS5wcm90b3R5
cGUgbXVzdCBoYXZlIGEgcmV0cnkoKSBmdW5jdGlvbiAoc21va2UgdGVzdCkuIAorUEFTUyBBIGNv
bXBsZXRlZCBwYXltZW50IHJlcXVlc3QgY2Fubm90IGJlIHJldHJpZWQuIAorUEFTUyBDYWxsaW5n
IHJldHJ5KCkgbW9yZSB0aGFuIG9uY2UgeWllbGQgYSByZWplY3RlZCBwcm9taXNlLCBidXQgdGhl
CisgICAgICByZXRyeVByb21pc2UgcmVzb2x2ZXMgaW5kZXBlbmRlbnRseS4gCitQQVNTIENhbGxp
bmcgY29tcGxldGUoKSB3aGlsZSBhIHJldHJ5KCkgaXMgaW4gcHJvZ3Jlc3MgcmVzdWx0cyBpbiBh
biBJbnZhbGlkU3RhdGVFcnJvci4gCitQQVNTIFRyeWluZyB0byBhYm9ydCgpIHZpYSBQYXltZW50
UmVxdWVzdCBpcyBub3QgcG9zc2libGUuIAorUEFTUyBJdCdzIHBvc3NpYmxlIHRvIHJldHJ5KCkg
bXVsdGlwbGUgdGltZXMgYW5kIGV2ZW50dWFsbHkgY29tcGxldGUoKS4KKyAgICAgIEFmdGVyIGNv
bXBsZXRlKCksIGhvd2V2ZXIsIHJldHJ5KCkgcmVqZWN0cyB3aXRoIGFuIEludmFsaWRTdGF0ZUVy
cm9yLiAKK1BBU1MgVGhlIHVzZXIgYWJvcnRpbmcgcmV0cnlpbmcgYSBwYXltZW50IGNhdXNlcyB0
aGUgcmV0cnlQcm9taXNlIHRvIHJlamVjdCB3aXRoIEFib3J0RXJyb3IuCisgICAgICBBYm9ydGlu
ZyBhIHBheW1lbnQgaXMgY2F1c2VzIGl0IGNvbXBsZXRlLiAKK1BBU1MgV2hlbiByZXRyeWluZywg
dGhlIHVzZXIgaXMgc2hvd24gZXJyb3IgZmllbGRzIHRvIGZpeC4gCitQQVNTIFdoZW4gImFib3J0
IHRoZSB1cGRhdGUiIG9jY3VycyBiZWNhdXNlIG9mIGFuIHVwZGF0ZSBlcnJvciwKKyAgICAgIHRo
ZSBgcmV0cnlQcm9taXNlYCBpcyByZWplY3RlZCBhbmQgcmVzcG9uc2UuW1tjb21wbGV0ZV1dIGJl
Y29tZXMgdHJ1ZS4gCitQQVNTIENhbGxpbmcgcmV0cnkoKSBtdWx0aXBsZSB0aW1lcyBpcyBhbHdh
eXMgYSBuZXcgb2JqZWN0LiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9w
YXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJldHJ5LW1ldGhvZC5odHRwcy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJl
dHJ5LW1ldGhvZC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwNWIxNDIwZmMwZjE5YWVhOTZmYWI4
YTJhN2FjMzcxZGFkYmUwZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcmV0cnktbWV0aG9kLmh0dHBzLmh0
bWwKQEAgLTAsMCArMSwyODUgQEAKKzwhZG9jdHlwZSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRm
OCI+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vdzNjLmdpdGh1Yi5pby9wYXltZW50
LXJlcXVlc3QvI2RvbS1wYXltZW50cmVzcG9uc2UtcmV0cnkiPgorPHRpdGxlPgorICBQYXltZW50
UmVzcG9uc2UucHJvdG90eXBlLnJldHJ5KCkgbWV0aG9kCis8L3RpdGxlPgorPHNjcmlwdCBzcmM9
Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvcGF5bWVudC1yZXF1ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxzY3JpcHQ+Cit0ZXN0KCgpID0+IHsK
KyAgYXNzZXJ0X3RydWUoCisgICAgInJldHJ5IiBpbiBQYXltZW50UmVzcG9uc2UucHJvdG90eXBl
LAorICAgICJyZXRyeSBtdXN0IGJlIGluIHByb3RvdHlwZSIKKyAgKTsKKyAgYXNzZXJ0X3RydWUo
CisgICAgUGF5bWVudFJlc3BvbnNlLnByb3RvdHlwZS5yZXRyeSBpbnN0YW5jZW9mIEZ1bmN0aW9u
LAorICAgICJyZXRyeSBtdXN0IGJlIGEgZnVuY3Rpb24iCisgICk7Cit9LCAiUGF5bWVudFJlc3Bv
bnNlLnByb3RvdHlwZSBtdXN0IGhhdmUgYSByZXRyeSgpIGZ1bmN0aW9uIChzbW9rZSB0ZXN0KS4i
KTsKKworZnVuY3Rpb24gY2hlY2tDb21wbGV0ZWRDYW50UmV0cnkoYnV0dG9uKSB7CisgIGJ1dHRv
bi5kaXNhYmxlZCA9IHRydWU7CisgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25z
dCB7IHJlc3BvbnNlIH0gPSBhd2FpdCBnZXRQYXltZW50UmVxdWVzdFJlc3BvbnNlKCk7CisgICAg
Ly8gc2V0cyByZXNwb25zZS5bW2NvbXBsZXRlXV0gdG8gdHJ1ZS4KKyAgICBhd2FpdCByZXNwb25z
ZS5jb21wbGV0ZSgic3VjY2VzcyIpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHMoCisgICAg
ICB0LAorICAgICAgIkludmFsaWRTdGF0ZUVycm9yIiwKKyAgICAgIHJlc3BvbnNlLnJldHJ5KHt9
KSwKKyAgICAgICJyZXNwb25zZS5bW2NvbXBsZXRlXV0gaXMgdHJ1ZSwgc28gcmVqZWN0cyB3aXRo
IEludmFsaWRTdGF0ZUVycm9yLiIKKyAgICApOworICB9LCBidXR0b24udGV4dENvbnRlbnQudHJp
bSgpKTsKKyAgYnV0dG9uLmlubmVyVGV4dCA9ICIiOworfQorCitmdW5jdGlvbiByZXBlYXRlZENh
bGxzVG9SZXRyeShidXR0b24pIHsKKyAgYnV0dG9uLmRpc2FibGVkID0gdHJ1ZTsKKyAgcHJvbWlz
ZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHsgcmVzcG9uc2UgfSA9IGF3YWl0IGdldFBh
eW1lbnRSZXF1ZXN0UmVzcG9uc2UoKTsKKyAgICBjb25zdCByZXRyeVByb21pc2UgPSByZXNwb25z
ZS5yZXRyeSh7fSk7CisgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICAgICAgdCwKKyAgICAg
ICJJbnZhbGlkU3RhdGVFcnJvciIsCisgICAgICByZXNwb25zZS5yZXRyeSh7fSksCisgICAgICAi
Q2FsbGluZyByZXRyeSgpIGFnYWluIHJlamVjdHMgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvciIK
KyAgICApOworICAgIGludGVybmFscy5tb2NrUGF5bWVudENvb3JkaW5hdG9yLmFjY2VwdFBheW1l
bnQoKTsKKyAgICBhd2FpdCByZXRyeVByb21pc2U7CisgICAgYXdhaXQgcmVzcG9uc2UuY29tcGxl
dGUoInN1Y2Nlc3MiKTsKKyAgfSwgYnV0dG9uLnRleHRDb250ZW50LnRyaW0oKSk7CisgIGJ1dHRv
bi5pbm5lclRleHQgPSAiIjsKK30KKworZnVuY3Rpb24gY2FsbENvbXBsZXRlV2hpbGVSZXRyeWlu
ZyhidXR0b24pIHsKKyAgYnV0dG9uLmRpc2FibGVkID0gdHJ1ZTsKKyAgcHJvbWlzZV90ZXN0KGFz
eW5jIHQgPT4geworICAgIGNvbnN0IHsgcmVzcG9uc2UgfSA9IGF3YWl0IGdldFBheW1lbnRSZXF1
ZXN0UmVzcG9uc2UoKTsKKyAgICBjb25zdCByZXRyeVByb21pc2UgPSByZXNwb25zZS5yZXRyeSh7
fSk7CisgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICAgICAgdCwKKyAgICAgICJJbnZhbGlk
U3RhdGVFcnJvciIsCisgICAgICByZXNwb25zZS5jb21wbGV0ZSgic3VjY2VzcyIpLAorICAgICAg
IkNhbGxpbmcgY29tcGxldGUoKSB3aGlsZSByZXRyeWluZyByZWplY3RzIHdpdGggYW4gSW52YWxp
ZFN0YXRlRXJyb3IiCisgICAgKTsKKyAgICBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRv
ci5hY2NlcHRQYXltZW50KCk7CisgICAgYXdhaXQgcmV0cnlQcm9taXNlOworICAgIGF3YWl0IHJl
c3BvbnNlLmNvbXBsZXRlKCJzdWNjZXNzIik7CisgIH0sIGJ1dHRvbi50ZXh0Q29udGVudC50cmlt
KCkpOworICBidXR0b24uaW5uZXJUZXh0ID0gIiI7Cit9CisKK2Z1bmN0aW9uIGNhbGxpbmdSZXF1
ZXN0QWJvcnRNdXN0Tm90QWJvcnQoYnV0dG9uKSB7CisgIGJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7
CisgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCB7IHJlc3BvbnNlLCByZXF1
ZXN0IH0gPSBhd2FpdCBnZXRQYXltZW50UmVxdWVzdFJlc3BvbnNlKCk7CisgICAgY29uc3QgcmV0
cnlQcm9taXNlID0gcmVzcG9uc2UucmV0cnkoe30pOworICAgIGF3YWl0IHByb21pc2VfcmVqZWN0
cygKKyAgICAgIHQsCisgICAgICAiSW52YWxpZFN0YXRlRXJyb3IiLAorICAgICAgcmVxdWVzdC5h
Ym9ydCgpLAorICAgICAgIkNhbGxpbmcgcmVxdWVzdC5hYm9ydCgpIHdoaWxlIHJldHJ5aW5nIHJl
amVjdHMgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvciIKKyAgICApOworICAgIGludGVybmFscy5t
b2NrUGF5bWVudENvb3JkaW5hdG9yLmFjY2VwdFBheW1lbnQoKTsKKyAgICBhd2FpdCByZXRyeVBy
b21pc2U7CisgICAgYXdhaXQgcmVzcG9uc2UuY29tcGxldGUoInN1Y2Nlc3MiKTsKKyAgfSwgYnV0
dG9uLnRleHRDb250ZW50LnRyaW0oKSk7CisgIGJ1dHRvbi5pbm5lclRleHQgPSAiIjsKK30KKwor
ZnVuY3Rpb24gY2FuUmV0cnlNdWx0aXBsZVRpbWVzKGJ1dHRvbikgeworICBidXR0b24uZGlzYWJs
ZWQgPSB0cnVlOworICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgeyByZXNw
b25zZSB9ID0gYXdhaXQgZ2V0UGF5bWVudFJlcXVlc3RSZXNwb25zZSgpOworICAgIHZhciBwcm9t
aXNlID0gcmVzcG9uc2UucmV0cnkoe30pOworICAgIGludGVybmFscy5tb2NrUGF5bWVudENvb3Jk
aW5hdG9yLmFjY2VwdFBheW1lbnQoKTsKKyAgICBhc3NlcnRfZXF1YWxzKAorICAgICAgYXdhaXQg
cHJvbWlzZSwKKyAgICAgIHVuZGVmaW5lZCwKKyAgICAgICJFeHBlY3RlZCB1bmRlZmluZWQgYXMg
dGhlIHJlc29sdmUgdmFsdWUiCisgICAgKTsKKyAgICBwcm9taXNlID0gcmVzcG9uc2UucmV0cnko
e30pOworICAgIGludGVybmFscy5tb2NrUGF5bWVudENvb3JkaW5hdG9yLmFjY2VwdFBheW1lbnQo
KTsKKyAgICBhc3NlcnRfZXF1YWxzKAorICAgICAgYXdhaXQgcHJvbWlzZSwKKyAgICAgIHVuZGVm
aW5lZCwKKyAgICAgICJFeHBlY3RlZCB1bmRlZmluZWQgYXMgdGhlIHJlc29sdmUgdmFsdWUiCisg
ICAgKTsKKyAgICBhd2FpdCByZXNwb25zZS5jb21wbGV0ZSgic3VjY2VzcyIpOworICAgIGF3YWl0
IHByb21pc2VfcmVqZWN0cygKKyAgICAgIHQsCisgICAgICAiSW52YWxpZFN0YXRlRXJyb3IiLAor
ICAgICAgcmVzcG9uc2UucmV0cnkoe30pLAorICAgICAgIkNhbGxpbmcgcmV0cnkoKSBhZnRlciBj
b21wbGV0ZSgpIHJlamVjdHMgd2l0aCBhIEludmFsaWRTdGF0ZUVycm9yIgorICAgICk7CisgIH0s
IGJ1dHRvbi50ZXh0Q29udGVudC50cmltKCkpOworICBidXR0b24uaW5uZXJUZXh0ID0gIiI7Cit9
CisKK2Z1bmN0aW9uIHVzZXJDYW5BYm9ydEFSZXRyeShidXR0b24pIHsKKyAgYnV0dG9uLmRpc2Fi
bGVkID0gdHJ1ZTsKKyAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHsgcmVz
cG9uc2UgfSA9IGF3YWl0IGdldFBheW1lbnRSZXF1ZXN0UmVzcG9uc2UoKTsKKyAgICB2YXIgcHJv
bWlzZSA9IHJlc3BvbnNlLnJldHJ5KHt9KTsKKyAgICBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29y
ZGluYXRvci5jYW5jZWxQYXltZW50KCk7CisgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICAg
ICAgdCwKKyAgICAgICJBYm9ydEVycm9yIiwKKyAgICAgIHByb21pc2UsCisgICAgICAiVGhlIHVz
ZXIgYWJvcnRpbmcgYSByZXRyeSByZWplY3RzIHdpdGggYSBBYm9ydEVycm9yIgorICAgICk7Cisg
ICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICAgICAgdCwKKyAgICAgICJJbnZhbGlkU3RhdGVF
cnJvciIsCisgICAgICByZXNwb25zZS5yZXRyeSh7fSksCisgICAgICAiQWZ0ZXIgdGhlIHVzZXIg
YWJvcnRzLCByZXNwb25zZSBbW2NvbXBsZXRlXV0gaXMgdHJ1ZSBzbyByZXRyeSgpIG11c3QgcmVq
ZWN0IHdpdGggSW52YWxpZFN0YXRlRXJyb3IiCisgICAgKTsKKyAgICBhd2FpdCBwcm9taXNlX3Jl
amVjdHMoCisgICAgICB0LAorICAgICAgIkludmFsaWRTdGF0ZUVycm9yIiwKKyAgICAgIHJlc3Bv
bnNlLmNvbXBsZXRlKCJzdWNjZXNzIiksCisgICAgICAiQWZ0ZXIgdGhlIHVzZXIgYWJvcnRzLCBy
ZXNwb25zZSBbW2NvbXBsZXRlXV0gaXMgdHJ1ZSwgc28gY29tcGxldGUoKSByZWplY3RzIHdpdGgg
YSBJbnZhbGlkU3RhdGVFcnJvciIKKyAgICApOworICB9LCBidXR0b24udGV4dENvbnRlbnQudHJp
bSgpKTsKKyAgYnV0dG9uLmlubmVyVGV4dCA9ICIiOworfQorCitmdW5jdGlvbiB1c2VySXNTaG93
bkVycm9yc0ZpZWxkcyhidXR0b24pIHsKKyAgYnV0dG9uLmRpc2FibGVkID0gdHJ1ZTsKKyAgcHJv
bWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHsgcmVzcG9uc2UsIHJlcXVlc3QgfSA9
IGF3YWl0IGdldFBheW1lbnRSZXF1ZXN0UmVzcG9uc2UoeyByZXF1ZXN0U2hpcHBpbmc6IHRydWUg
fSk7CisgICAgY29uc3QgcmV0cnlQcm9taXNlID0gcmVzcG9uc2UucmV0cnkoeworICAgICAgc2hp
cHBpbmdBZGRyZXNzOiB7IGNpdHk6ICJJbnZhbGlkIGNpdHkiLCBhZGRyZXNzTGluZTogIkludmFs
aWQgYWRkcmVzcyBsaW5lIiB9LAorICAgIH0pOworICAgIGNvbnN0IGVycm9ycyA9IGludGVybmFs
cy5tb2NrUGF5bWVudENvb3JkaW5hdG9yLmVycm9yczsKKyAgICBhc3NlcnRfZXF1YWxzKGVycm9y
cy5sZW5ndGgsIDIsICJNdXN0IGhhdmUgdHdvIGVycm9ycyIpOworICAgIGFzc2VydF9lcXVhbHMo
ZXJyb3JzWzBdLmNvZGUsICJzaGlwcGluZ0NvbnRhY3RJbnZhbGlkIiwgIk11c3QgYmUgYSAnc2hp
cHBpbmdDb250YWN0SW52YWxpZCcgZXJyb3IiKTsKKyAgICBhc3NlcnRfZXF1YWxzKGVycm9yc1sw
XS5tZXNzYWdlLCAiSW52YWxpZCBhZGRyZXNzIGxpbmUiLCAiRXJyb3IgbWVzc2FnZSBtdXN0IG1h
dGNoIik7CisgICAgYXNzZXJ0X2VxdWFscyhlcnJvcnNbMF0uY29udGFjdEZpZWxkLCAiYWRkcmVz
c0xpbmVzIiwgIkNvbnRhY3QgZmllbGQgbXVzdCBtYXRjaCIpOworICAgIGFzc2VydF9lcXVhbHMo
ZXJyb3JzWzFdLmNvZGUsICJzaGlwcGluZ0NvbnRhY3RJbnZhbGlkIiwgIk11c3QgYmUgYSAnc2hp
cHBpbmdDb250YWN0SW52YWxpZCcgZXJyb3IiKTsKKyAgICBhc3NlcnRfZXF1YWxzKGVycm9yc1sx
XS5tZXNzYWdlLCAiSW52YWxpZCBjaXR5IiwgIkVycm9yIG1lc3NhZ2UgbXVzdCBtYXRjaCIpOwor
ICAgIGFzc2VydF9lcXVhbHMoZXJyb3JzWzFdLmNvbnRhY3RGaWVsZCwgImxvY2FsaXR5IiwgIkNv
bnRhY3QgZmllbGQgbXVzdCBtYXRjaCIpOworICAgIGludGVybmFscy5tb2NrUGF5bWVudENvb3Jk
aW5hdG9yLmFjY2VwdFBheW1lbnQoKTsKKyAgICBhd2FpdCByZXRyeVByb21pc2U7CisgICAgYXdh
aXQgcmVzcG9uc2UuY29tcGxldGUoInN1Y2Nlc3MiKTsKKyAgfSwgYnV0dG9uLnRleHRDb250ZW50
LnRyaW0oKSk7CisgIGJ1dHRvbi5pbm5lclRleHQgPSAiIjsKK30KKworZnVuY3Rpb24gYWJvcnRU
aGVVcGRhdGUoYnV0dG9uKSB7CisgIGJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7CisgIHByb21pc2Vf
dGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCB7IHJlc3BvbnNlLCByZXF1ZXN0IH0gPSBhd2Fp
dCBnZXRQYXltZW50UmVxdWVzdFJlc3BvbnNlKHsgcmVxdWVzdFNoaXBwaW5nOiB0cnVlIH0pOwor
ICAgIC8vIGNhdXNlcyAiYWJvcnQgdGhlIHVwZGF0ZSIgdG8gcnVuCisgICAgY29uc3Qgc2hpcHBp
bmdDaGFuZ2VkUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgcmVxdWVz
dC5vbnNoaXBwaW5nb3B0aW9uY2hhbmdlID0gKCkgPT4geworICAgICAgICBldmVudC51cGRhdGVX
aXRoKHsgdG90YWw6IHsgYW1vdW50OiB7IGN1cnJlbmN5OiAiVVNEIiwgdmFsdWU6ICJJTlZBTElE
IiB9IH19KTsKKyAgICAgICAgcmVzb2x2ZSgpOworICAgICAgfTsKKyAgICB9KTsKKyAgICBjb25z
dCByZXRyeVByb21pc2UgPSByZXNwb25zZS5yZXRyeSh7fSk7CisgICAgaW50ZXJuYWxzLm1vY2tQ
YXltZW50Q29vcmRpbmF0b3IuY2hhbmdlU2hpcHBpbmdPcHRpb24oIm9wdGlvbiIpOworICAgIGF3
YWl0IHNoaXBwaW5nQ2hhbmdlZFByb21pc2U7CisgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAor
ICAgICAgdCwKKyAgICAgIG5ldyBUeXBlRXJyb3IoKSwKKyAgICAgIHJldHJ5UHJvbWlzZSwKKyAg
ICAgICJyZXRyeSgpIGFib3J0cyB3aXRoIGEgVHlwZUVycm9yLCBiZWNhdXNlIHRvdGFscycgdmFs
dWUgaXMgaW52YWxpZCIKKyAgICApOworICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgICAg
IHQsCisgICAgICAiSW52YWxpZFN0YXRlRXJyb3IiLAorICAgICAgcmVzcG9uc2UuY29tcGxldGUo
InN1Y2Nlc3MiKSwKKyAgICAgICJBZnRlciB0aGUgdXNlciBhYm9ydHMsIHJlc3BvbnNlIFtbY29t
cGxldGVdXSBpcyB0cnVlLCBzbyBjb21wbGV0ZSgpIHJlamVjdHMgd2l0aCBhIEludmFsaWRTdGF0
ZUVycm9yIgorICAgICk7CisgIH0sIGJ1dHRvbi50ZXh0Q29udGVudC50cmltKCkpOworICBidXR0
b24uaW5uZXJUZXh0ID0gIiI7Cit9CisKK2Z1bmN0aW9uIGNhbGxpbmdSZXRyeVJldHVybnNVbmlx
dWVQcm9taXNlKGJ1dHRvbil7CisgIGJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7CisgIHByb21pc2Vf
dGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCB7IHJlc3BvbnNlIH0gPSBhd2FpdCBnZXRQYXlt
ZW50UmVxdWVzdFJlc3BvbnNlKCk7CisgICAgY29uc3QgcmV0cnlQcm9taXNlID0gcmVzcG9uc2Uu
cmV0cnkoe30pOworICAgIGNvbnN0IHByb21pc2VzID0gbmV3IFNldChbCisgICAgICByZXRyeVBy
b21pc2UsCisgICAgICByZXNwb25zZS5yZXRyeSh7fSkuY2F0Y2goKCkgPT4ge30pLAorICAgICAg
cmVzcG9uc2UucmV0cnkoe30pLmNhdGNoKCgpID0+IHt9KSwKKyAgICBdKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKHByb21pc2VzLnNpemUsIDMsICJNdXN0IGhhdmUgdGhyZWUgdW5pcXVlIG9iamVjdHMi
KTsKKyAgICBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRvci5hY2NlcHRQYXltZW50KCk7
CisgICAgYXdhaXQgcmV0cnlQcm9taXNlOworICAgIGF3YWl0IHJlc3BvbnNlLmNvbXBsZXRlKCk7
CisgIH0sIGJ1dHRvbi50ZXh0Q29udGVudC50cmltKCkpOworICBidXR0b24uaW5uZXJUZXh0ID0g
IiI7Cit9OworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGFzeW5jICgpID0+IHsK
KyAgYXdhaXQgY2hlY2tDb21wbGV0ZWRDYW50UmV0cnkoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImJ1dHRvbjEiKSk7CisgIGF3YWl0IHJlcGVhdGVkQ2FsbHNUb1JldHJ5KGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJidXR0b24yIikpOworICBhd2FpdCBjYWxsQ29tcGxldGVXaGlsZVJldHJ5aW5n
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b24zIikpOworICBhd2FpdCBjYWxsaW5nUmVx
dWVzdEFib3J0TXVzdE5vdEFib3J0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b240Iikp
OworICBhd2FpdCBjYW5SZXRyeU11bHRpcGxlVGltZXMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImJ1dHRvbjUiKSk7CisgIGF3YWl0IHVzZXJDYW5BYm9ydEFSZXRyeShkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiYnV0dG9uNiIpKTsKKyAgYXdhaXQgdXNlcklzU2hvd25FcnJvcnNGaWVsZHMoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRvbjciKSk7CisgIGF3YWl0IGFib3J0VGhlVXBkYXRl
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b244IikpOworICBhd2FpdCBjYWxsaW5nUmV0
cnlSZXR1cm5zVW5pcXVlUHJvbWlzZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9uOSIp
KTsKKyAgZG9uZSgpOworfSk7Cis8L3NjcmlwdD4KKzxvbD4KKyAgPGxpPgorICAgIDxidXR0b24g
aWQ9ImJ1dHRvbjEiPgorICAgICAgQSBjb21wbGV0ZWQgcGF5bWVudCByZXF1ZXN0IGNhbm5vdCBi
ZSByZXRyaWVkLgorICAgIDwvYnV0dG9uPgorICA8L2xpPgorICA8bGk+CisgICAgPGJ1dHRvbiBp
ZD0iYnV0dG9uMiI+CisgICAgICBDYWxsaW5nIHJldHJ5KCkgbW9yZSB0aGFuIG9uY2UgeWllbGQg
YSByZWplY3RlZCBwcm9taXNlLCBidXQgdGhlCisgICAgICByZXRyeVByb21pc2UgcmVzb2x2ZXMg
aW5kZXBlbmRlbnRseS4KKyAgICA8L2J1dHRvbj4KKyAgPC9saT4KKyAgPGxpPgorICAgIDxidXR0
b24gaWQ9ImJ1dHRvbjMiPgorICAgICAgQ2FsbGluZyBjb21wbGV0ZSgpIHdoaWxlIGEgcmV0cnko
KSBpcyBpbiBwcm9ncmVzcyByZXN1bHRzIGluIGFuIEludmFsaWRTdGF0ZUVycm9yLgorICAgIDwv
YnV0dG9uPgorICA8L2xpPgorICA8bGk+CisgICAgPGJ1dHRvbiBpZD0iYnV0dG9uNCI+CisgICAg
ICBUcnlpbmcgdG8gYWJvcnQoKSB2aWEgUGF5bWVudFJlcXVlc3QgaXMgbm90IHBvc3NpYmxlLgor
ICAgIDwvYnV0dG9uPgorICA8L2xpPgorICA8bGk+CisgICAgPGJ1dHRvbiBpZD0iYnV0dG9uNSI+
CisgICAgICBJdCdzIHBvc3NpYmxlIHRvIHJldHJ5KCkgbXVsdGlwbGUgdGltZXMgYW5kIGV2ZW50
dWFsbHkgY29tcGxldGUoKS4KKyAgICAgIEFmdGVyIGNvbXBsZXRlKCksIGhvd2V2ZXIsIHJldHJ5
KCkgcmVqZWN0cyB3aXRoIGFuIEludmFsaWRTdGF0ZUVycm9yLgorICAgIDwvYnV0dG9uPgorICA8
L2xpPgorICA8bGk+CisgICAgPGJ1dHRvbiBpZD0iYnV0dG9uNiI+CisgICAgICBUaGUgdXNlciBh
Ym9ydGluZyByZXRyeWluZyBhIHBheW1lbnQgY2F1c2VzIHRoZSByZXRyeVByb21pc2UgdG8gcmVq
ZWN0IHdpdGggQWJvcnRFcnJvci4KKyAgICAgIEFib3J0aW5nIGEgcGF5bWVudCBpcyBjYXVzZXMg
aXQgY29tcGxldGUuCisgICAgPC9idXR0b24+CisgIDwvbGk+CisgIDxsaT4KKyAgICA8YnV0dG9u
IGlkPSJidXR0b243Ij4KKyAgICAgIFdoZW4gcmV0cnlpbmcsIHRoZSB1c2VyIGlzIHNob3duIGVy
cm9yIGZpZWxkcyB0byBmaXguCisgICAgPC9idXR0b24+CisgIDwvbGk+CisgIDxsaT4KKyAgICA8
YnV0dG9uIGlkPSJidXR0b244Ij4KKyAgICAgIFdoZW4gImFib3J0IHRoZSB1cGRhdGUiIG9jY3Vy
cyBiZWNhdXNlIG9mIGFuIHVwZGF0ZSBlcnJvciwKKyAgICAgIHRoZSBgcmV0cnlQcm9taXNlYCBp
cyByZWplY3RlZCBhbmQgcmVzcG9uc2UuW1tjb21wbGV0ZV1dIGJlY29tZXMgdHJ1ZS4KKyAgICA8
L2J1dHRvbj4KKyAgPC9saT4KKyAgPGxpPgorICAgIDxidXR0b24gaWQ9ImJ1dHRvbjkiPgorICAg
ICAgQ2FsbGluZyByZXRyeSgpIG11bHRpcGxlIHRpbWVzIGlzIGFsd2F5cyBhIG5ldyBvYmplY3Qu
CisgICAgPC9idXR0b24+CisgIDwvbGk+Cis8L29sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353380</attachid>
            <date>2018-10-30 10:19:22 -0700</date>
            <delta_ts>2018-10-30 12:07:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190985-20181030101922.patch</filename>
            <type>text/plain</type>
            <size>63431</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M0MWViNmI1ZGI4MzRm
MTBjNDQ5NmZmZTFhNWEzOTEzZWY0ODRmNC4uNjFjYTY5Njg5ZDliOTkxYzM5NjExMWZiMmU3NjQz
MWZjZWI1YzU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDE4LTEwLTMwICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbUGF5bWVudCBSZXF1ZXN0XSBJ
bXBsZW1lbnQgUGF5bWVudFJlc3BvbnNlLnJldHJ5KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDk4NQorCisgICAgICAgIFJldmlld2VkIGJ5IERh
bmllbCBCYXRlcy4KKworICAgICAgICBJbXBsZW1lbnRlZCB0aGUgcmV0cnkoKSBtZXRob2Qgb24g
UGF5bWVudFJlc3BvbnNlIGFzIHNwZWNpZmllZCBpbiB0aGUgUGF5bWVudCBSZXF1ZXN0IEFQSQor
ICAgICAgICBXM0MgRWRpdG9yJ3MgRHJhZnQgb2YgMjQgT2N0b2JlciAyMDE4LgorCisgICAgICAg
IFNlZSBodHRwczovL3czYy5naXRodWIuaW8vcGF5bWVudC1yZXF1ZXN0LyNyZXRyeS1tZXRob2Qg
Zm9yIGRldGFpbHMuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3Qv
cGF5bWVudC1yZXNwb25zZS1yZWplY3RzLWlmLW5vdC1hY3RpdmUuaHR0cHMuaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJldHJ5
LW1ldGhvZC5odHRwcy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRD
b29yZGluYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yOjpjbGll
bnQpOiBBZGRlZC4gUmV0dXJucyBtX2NsaWVudC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5
L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudENv
b3JkaW5hdG9yQ2xpZW50Ojppc01vY2tQYXltZW50Q29vcmRpbmF0b3IgY29uc3QpOiBBZGRlZC4g
VXNlZCB0byBkb3duY2FzdAorICAgICAgICBhIFBheW1lbnRDb29yZGluYXRvckNsaWVudCB0byBh
IE1vY2tQYXltZW50Q29vcmRpbmF0b3IuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9wYXlt
ZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbXB1dGVUb3RhbEFuZExpbmVJdGVtcyBjb25zdCk6
IE1hZGUgY29uc3QuCisgICAgICAgIChXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpj
b21wdXRlRXJyb3JzIGNvbnN0KTogQnJva2UgdGhpcyBmdW5jdGlvbiBpbnRvCisgICAgICAgIGNv
bXB1dGVBZGRyZXNzRXJyb3JzLCBjb21wdXRlUGF5ZXJFcnJvcnMsIGFuZCBjb21wdXRlUGF5bWVu
dE1ldGhvZEVycm9ycywgdGhlbiBtb2RpZmllZCB0aGlzCisgICAgICAgIGZ1bmN0aW9uIHRvIGNh
bGwgdGhvc2UgZnVuY3Rpb25zLiBFeGNlcHRpb25zIHRocm93biBieSBjb21wdXRlUGF5bWVudE1l
dGhvZEVycm9ycyBhcmUgaWdub3JlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVu
dEhhbmRsZXI6OmNvbXB1dGVBZGRyZXNzRXJyb3JzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wdXRlUGF5ZXJFcnJvcnMgY29uc3Qp
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbXB1
dGVQYXltZW50TWV0aG9kRXJyb3JzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpB
cHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wbGV0ZSk6IEFkZGVkIEFTU0VSVHMgdG8gdmVyaWZ5
IHdoZXRoZXIgcmVzdWx0IGlzIGEKKyAgICAgICAgZmluYWwgcmVzdWx0LgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGVQYXlQYXltZW50SGFuZGxlcjo6cmV0cnkpOiBDb21wdXRlZCBQYXltZW50RXJy
b3JzIGZyb20gUGF5bWVudFZhbGlkYXRpb25FcnJvcnMsCisgICAgICAgIGVuc3VyZWQgdGhlIFBh
eW1lbnRBdXRob3JpemF0aW9uUmVzdWx0IHdhcyBub24tZmluYWwgYnkgYWRkaW5nIGFuIHVua25v
d24gZXJyb3IgaWYgbmVjZXNzYXJ5LAorICAgICAgICBhbmQgY2FsbGVkIFBheW1lbnRDb29yZGlu
YXRvcjo6Y29tcGxldGVQYXltZW50U2Vzc2lvbi4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5
L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXlt
ZW50UmVxdWVzdDo6c2hvdyk6IENoYW5nZWQgdG8gY2FsbCBzZXR0bGVTaG93UHJvbWlzZS4KKyAg
ICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjphYm9ydFdpdGhFeGNlcHRpb24pOiBDaGFu
Z2VkIHRvIGFib3J0IFBheW1lbnRSZXNwb25zZSdzIHJldHJ5CisgICAgICAgIHByb21pc2UsIGlm
IHByZXNlbnQsIGluc3RlYWQgb2YgUGF5bWVudFJlc3BvbnNlJ3Mgc2hvdyBwcm9taXNlLgorICAg
ICAgICAoV2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OnNldHRsZVNob3dQcm9taXNlKTogQWRkZWQu
IFNldHRsZXMgbV9zaG93UHJvbWlzZSB0aGVuIHNldHMgaXQgdG8KKyAgICAgICAgc3RkOjpudWxs
b3B0LgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OmNsb3NlQWN0aXZlUGF5bWVu
dEhhbmRsZXIpOiBBZGRlZC4gSGlkZXMgdGhlIGFjdGl2ZSBwYXltZW50CisgICAgICAgIGhhbmRs
ZXIgdGhlbiBzZXRzIGl0IHRvIHN0ZDo6bnVsbG9wdC4KKyAgICAgICAgKFdlYkNvcmU6OlBheW1l
bnRSZXF1ZXN0OjpzdG9wKTogU3RvcHBlZCBjYWxsaW5nIGFib3J0V2l0aEV4Y2VwdGlvbiwgc2lu
Y2UgdGhhdCBmdW5jdGlvbgorICAgICAgICBtaWdodCBzZXR0bGUgUGF5bWVudFJlc3BvbnNlJ3Mg
cmV0cnkgcHJvbWlzZS4gUGF5bWVudFJlc3BvbnNlIGlzIG5vdyBhbiBBY3RpdmVET01PYmplY3Qg
YW5kCisgICAgICAgIHdpbGwgc2V0dGxlIGl0cyBvd24gcHJvbWlzZSBpbiBpdHMgaW1wbGVtZW50
YXRpb24gb2Ygc3RvcC4KKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjphYm9ydCk6
IENoYW5nZWQgdG8gdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgaWYgdGhlcmUgaXMgYQorICAg
ICAgICBwZW5kaW5nIHJldHJ5IHByb21pc2UgYW5kIHRvIGNhbGwgYWJvcnRXaXRoRXhjZXB0aW9u
IGluc3RlYWQgb2Ygc3RvcC4KKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0Ojpjb21w
bGV0ZU1lcmNoYW50VmFsaWRhdGlvbik6IENoYW5nZWQgdG8gY2FsbCBhYm9ydFdpdGhFeGNlcHRp
b24KKyAgICAgICAgaW5zdGVhZCBvZiBzdG9wLgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJl
cXVlc3Q6OnNldHRsZURldGFpbHNQcm9taXNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQ
YXltZW50UmVxdWVzdDo6YWNjZXB0KTogVXBkYXRlZCB0aGUgZXhpc3RpbmcgUGF5bWVudFJlc3Bv
bnNlLCBpZiBwcmVzZW50LCByYXRoZXIKKyAgICAgICAgdGhhbiBjcmVhdGluZyBhIG5ldyBvbmUu
IFNldHRsZWQgdGhlIGV4aXN0aW5nIFBheW1lbnRSZXNwb25zZSdzIHJldHJ5IHByb21pc2UsIGlm
IHByZXNlbnQsCisgICAgICAgIHJhdGhlciB0aGFuIHRoZSBzaG93IHByb21pc2UuCisgICAgICAg
IChXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6Y29tcGxldGUpOiBDaGFuZ2VkIHRvIHRocm93IGFu
IEFib3J0RXJyb3IgaWYgdGhlcmUgaXMgbm8gbG9uZ2VyIGFuCisgICAgICAgIGFjdGl2ZSBwYXlt
ZW50IGhhbmRsZXIuCisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6cmV0cnkpOiBD
aGFuZ2VkIHRvIHRocm93IGFuIEFib3J0RXJyb3IgaWYgdGhlcmUgaXMgbm8gbG9uZ2VyIGFuCisg
ICAgICAgIGFjdGl2ZSBwYXltZW50IGhhbmRsZXIsIGFuZCB0byBjYWxsIFBheW1lbnRIYW5kbGVy
OjpyZXRyeSBpZiB0aGVyZSBpcy4KKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0Ojpj
YW5jZWwpOiBDaGFuZ2VkIHRvIGNhbGwgYWJvcnRXaXRoRXhjZXB0aW9uIGluc3RlYWQgb2Ygc3Rv
cC4KKyAgICAgICAgKiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0Lmg6Cisg
ICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5pZGw6CisgICAg
ICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVzcG9uc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGF5bWVudFJlc3BvbnNlOjpQYXltZW50UmVzcG9uc2UpOgorICAgICAgICAo
V2ViQ29yZTo6UGF5bWVudFJlc3BvbnNlOjpmaW5pc2hDb25zdHJ1Y3Rpb24pOiBQZW5kaW5nIGFj
dGl2aXRpZXMgY3JlYXRlIHN0cm9uZyByZWZlcmVuY2VzCisgICAgICAgIHRvIHx0aGlzfCwgc28g
dGhleSBjYW5ub3QgYmUgY3JlYXRlZCBpbiBjb25zdHJ1Y3RvcnMgd2l0aG91dCByZWxheGluZyBh
ZG9wdGlvbiByZXF1aXJlbWVudHMuCisgICAgICAgIEFkZGVkIHRoaXMgZnVuY3Rpb24gc28gdGhh
dCB0aGUgcGVuZGluZyBhY3Rpdml0eSBjYW4gYmUgY3JlYXRlZCBhZnRlciB0aGUgUGF5bWVudFJl
c3BvbnNlIGlzCisgICAgICAgIGNyZWF0ZWQgYW5kIGFkb3B0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpQYXltZW50UmVzcG9uc2U6On5QYXltZW50UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
UGF5bWVudFJlc3BvbnNlOjpjb21wbGV0ZSk6IFVwZGF0ZWQgdG8gdGhyb3cgYW4gQWJvcnRFcnJv
ciBvciBJbnZhbGlkU3RhdGVFcnJvcgorICAgICAgICB3aGVuIG5lY2Vzc2FyeS4KKyAgICAgICAg
KFdlYkNvcmU6OlBheW1lbnRSZXNwb25zZTo6cmV0cnkpOiBJbXBsZW1lbnRlZC4gVGhyb3dzIGFu
IEFib3J0RXJyb3Igb3IgSW52YWxpZFN0YXRlRXJyb3IKKyAgICAgICAgd2hlbiBuZWNlc3Nhcnks
IG90aGVyd2lzZSBjYWxscyBQYXltZW50UmVxdWVzdDo6cmV0cnkgYW5kIHN0b3JlcyB0aGUgcmV0
cnkgcHJvbWlzZSBpbgorICAgICAgICBtX3JldHJ5UHJvbWlzZS4KKyAgICAgICAgKFdlYkNvcmU6
OlBheW1lbnRSZXNwb25zZTo6YWJvcnRXaXRoRXhjZXB0aW9uKTogQWRkZWQuIFJlamVjdHMgdGhl
IHJldHJ5IHByb21pc2Ugd2l0aAorICAgICAgICB8ZXhjZXB0aW9ufCwgY2xlYXJzIHRoZSBwZW5k
aW5nIGFjdGl2aXR5LCBhbmQgc2V0cyBtX3N0YXRlIHRvIENvbXBsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlBheW1lbnRSZXNwb25zZTo6c2V0dGxlUmV0cnlQcm9taXNlKTogQWRkZWQuIFNldHRs
ZXMgdGhlIHJldHJ5IHByb21pc2UgYW5kIHNldHMgaXQKKyAgICAgICAgdG8gc3RkOjpudWxsb3B0
LgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlc3BvbnNlOjpjYW5TdXNwZW5kRm9yRG9jdW1l
bnRTdXNwZW5zaW9uIGNvbnN0KTogQWRkZWQuIFJldHVybnMgdHJ1ZSBpZgorICAgICAgICB0aGVy
ZSBpcyBubyBwZW5kaW5nIGFjdGl2aXR5LgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlc3Bv
bnNlOjpzdG9wKTogQWRkZWQuIFJlamVjdHMgdGhlIHJldHJ5IHByb21pc2Ugd2l0aCBBYm9ydEVy
cm9yLCBjbGVhcnMKKyAgICAgICAgdGhlIHBlbmRpbmcgYWN0aXZpdHksIGFuZCBzZXRzIG1fc3Rh
dGUgdG8gU3RvcHBlZC4KKyAgICAgICAgKiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRS
ZXNwb25zZS5oOiBDaGFuZ2VkIGNyZWF0ZSB0byBjYWxsIGZpbmlzaENvbnN0cnVjdGlvbiBhbmQK
KyAgICAgICAgbWFkZSBQYXltZW50UmVzcG9uc2UgYW4gQWN0aXZlRE9NT2JqZWN0IGluc3RlYWQg
b2YgYSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OkludGVybmFscyk6IENoYW5n
ZWQgdG8gb25seSBjcmVhdGUgYSBNb2NrUGF5bWVudENvb3JkaW5hdG9yIGZvciBtYWluIGZyYW1l
cy4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bW9ja1BheW1lbnRDb29yZGluYXRvcik6
IENoYW5nZWQgdG8gZ2V0IHRoZSBNb2NrUGF5bWVudENvb3JkaW5hdG9yIGJ5CisgICAgICAgIGRv
d25jYXN0aW5nIHRoZSBwYWdlJ3MgcGF5bWVudCBjb29yZGluYXRvciBjbGllbnQuCisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6
CisgICAgICAgICogdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudFNlc3Npb24p
OiBDaGFuZ2VkIHRvIG9ubHkgaW5jcmVtZW50CisgICAgICAgIGhpZGVDb3VudCBmb3IgZmluYWwg
cmVzdWx0cy4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuaDoKKyAg
ICAgICAgKGlzVHlwZSk6IEFkZGVkIHNvIHRoYXQgUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50cyBj
YW4gYmUgZG93bmNhc3RlZCB0byBNb2NrUGF5bWVudENvb3JkaW5hdG9ycy4KKwogMjAxOC0xMC0y
OSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10g
SW50cm9kdWNlIElubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkgY2xhc3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oCmlu
ZGV4IGQ0NjUyY2ZlZDUwZmZjMWQyZjZiNjJiNWU0YmRkMGY5Mjg2M2Q0NTYuLmE2ZjFiNmU3YjIx
ZTBlYzAwNGE0YjBhYTcyOTQwOWI4M2E3YTM0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaApAQCAtNTAsNiArNTAsOCBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgUGF5bWVudENvb3JkaW5hdG9y
KFBheW1lbnRDb29yZGluYXRvckNsaWVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXltZW50
Q29vcmRpbmF0b3IoKTsKIAorICAgIFBheW1lbnRDb29yZGluYXRvckNsaWVudCYgY2xpZW50KCkg
eyByZXR1cm4gbV9jbGllbnQ7IH0KKwogICAgIGJvb2wgc3VwcG9ydHNWZXJzaW9uKHVuc2lnbmVk
IHZlcnNpb24pIGNvbnN0OwogICAgIGJvb2wgY2FuTWFrZVBheW1lbnRzKCk7CiAgICAgdm9pZCBj
YW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCmluZGV4IGU5MTVjYTE2
ZGI0MDI0MzhkOGJkODAwMTlkYWRlOWIzNjc3MDNkMTcuLmI5NzAzMGFhMDUyNGU1OGQyYmQ5NTNh
ZjIzZDc3YWZjYjMxNmY0ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaApAQCAtNTgsNiArNTgsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBheW1lbnRTZXNzaW9uKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBwYXltZW50Q29vcmRpbmF0b3JEZXN0cm95ZWQoKSA9IDA7CiAKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNNb2NrUGF5bWVudENvb3JkaW5hdG9yKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgflBheW1lbnRDb29yZGluYXRvckNs
aWVudCgpID0gZGVmYXVsdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1l
bnRIYW5kbGVyLmNwcAppbmRleCBmZGQwODhlZWMzOTI5MWFjMjg0ZWZlZmFhZTFiOWZhNWM5YTcw
MjlmLi4zYmZlMGU2MzU2ZGE0ZjQwZjI2MGI0MWNiMTI3Y2NlZThhMzgwOTZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5
UGF5bWVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
cGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAKQEAgLTUzLDYgKzUzLDcg
QEAKICNpbmNsdWRlICJQYXltZW50TWV0aG9kLmgiCiAjaW5jbHVkZSAiUGF5bWVudFJlcXVlc3RW
YWxpZGF0b3IuaCIKICNpbmNsdWRlICJQYXltZW50UmVzcG9uc2UuaCIKKyNpbmNsdWRlICJQYXlt
ZW50VmFsaWRhdGlvbkVycm9ycy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTI2Myw3ICsyNjQsNyBAQCBFeGNlcHRpb25PcjxWZWN0b3I8QXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPj4gQXBwbGVQYXlQYXltZQog
ICAgIHJldHVybiBXVEZNb3ZlKHNoaXBwaW5nTWV0aG9kcyk7CiB9CiAKLUV4Y2VwdGlvbk9yPEFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gQXBwbGVQYXlQ
YXltZW50SGFuZGxlcjo6Y29tcHV0ZVRvdGFsQW5kTGluZUl0ZW1zKCkKK0V4Y2VwdGlvbk9yPEFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gQXBwbGVQYXlQ
YXltZW50SGFuZGxlcjo6Y29tcHV0ZVRvdGFsQW5kTGluZUl0ZW1zKCkgY29uc3QKIHsKICAgICBh
dXRvJiBkZXRhaWxzID0gbV9wYXltZW50UmVxdWVzdC0+cGF5bWVudERldGFpbHMoKTsKICAgICBT
dHJpbmcgY3VycmVuY3kgPSBkZXRhaWxzLnRvdGFsLmFtb3VudC5jdXJyZW5jeTsKQEAgLTMzNiwy
MSArMzM3LDQzIEBAIFZlY3RvcjxQYXltZW50RXJyb3I+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6
OmNvbXB1dGVFcnJvcnMoU3RyaW5nJiYgZXJyb3IsIEFkZHJlCiB7CiAgICAgVmVjdG9yPFBheW1l
bnRFcnJvcj4gZXJyb3JzOwogCi0gICAgYXV0byYgb3B0aW9ucyA9IG1fcGF5bWVudFJlcXVlc3Qt
PnBheW1lbnRPcHRpb25zKCk7Ci0gICAgdXNpbmcgQ29udGFjdEZpZWxkID0gUGF5bWVudEVycm9y
OjpDb250YWN0RmllbGQ7CisgICAgaWYgKG1fcGF5bWVudFJlcXVlc3QtPnBheW1lbnREZXRhaWxz
KCkuc2hpcHBpbmdPcHRpb25zLmlzRW1wdHkoKSkKKyAgICAgICAgY29tcHV0ZUFkZHJlc3NFcnJv
cnMoV1RGTW92ZShlcnJvciksIFdURk1vdmUoYWRkcmVzc0Vycm9ycyksIGVycm9ycyk7CisKKyAg
ICBjb21wdXRlUGF5ZXJFcnJvcnMoV1RGTW92ZShwYXllckVycm9ycyksIGVycm9ycyk7CiAKLSAg
ICBpZiAob3B0aW9ucy5yZXF1ZXN0U2hpcHBpbmcgJiYgbV9wYXltZW50UmVxdWVzdC0+cGF5bWVu
dERldGFpbHMoKS5zaGlwcGluZ09wdGlvbnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGFwcGVuZFNo
aXBwaW5nQ29udGFjdEludmFsaWRFcnJvcihXVEZNb3ZlKGVycm9yKSwgc3RkOjpudWxsb3B0LCBl
cnJvcnMpOwotICAgICAgICBhcHBlbmRTaGlwcGluZ0NvbnRhY3RJbnZhbGlkRXJyb3IoV1RGTW92
ZShhZGRyZXNzRXJyb3JzLmFkZHJlc3NMaW5lKSwgQ29udGFjdEZpZWxkOjpBZGRyZXNzTGluZXMs
IGVycm9ycyk7Ci0gICAgICAgIGFwcGVuZFNoaXBwaW5nQ29udGFjdEludmFsaWRFcnJvcihXVEZN
b3ZlKGFkZHJlc3NFcnJvcnMuY2l0eSksIENvbnRhY3RGaWVsZDo6TG9jYWxpdHksIGVycm9ycyk7
Ci0gICAgICAgIGFwcGVuZFNoaXBwaW5nQ29udGFjdEludmFsaWRFcnJvcihXVEZNb3ZlKGFkZHJl
c3NFcnJvcnMuY291bnRyeSksIENvbnRhY3RGaWVsZDo6Q291bnRyeSwgZXJyb3JzKTsKLSAgICAg
ICAgYXBwZW5kU2hpcHBpbmdDb250YWN0SW52YWxpZEVycm9yKFdURk1vdmUoYWRkcmVzc0Vycm9y
cy5kZXBlbmRlbnRMb2NhbGl0eSksIENvbnRhY3RGaWVsZDo6U3ViTG9jYWxpdHksIGVycm9ycyk7
Ci0gICAgICAgIGFwcGVuZFNoaXBwaW5nQ29udGFjdEludmFsaWRFcnJvcihXVEZNb3ZlKGFkZHJl
c3NFcnJvcnMucGhvbmUpLCBDb250YWN0RmllbGQ6OlBob25lTnVtYmVyLCBlcnJvcnMpOwotICAg
ICAgICBhcHBlbmRTaGlwcGluZ0NvbnRhY3RJbnZhbGlkRXJyb3IoV1RGTW92ZShhZGRyZXNzRXJy
b3JzLnBvc3RhbENvZGUpLCBDb250YWN0RmllbGQ6OlBvc3RhbENvZGUsIGVycm9ycyk7Ci0gICAg
ICAgIGFwcGVuZFNoaXBwaW5nQ29udGFjdEludmFsaWRFcnJvcihXVEZNb3ZlKGFkZHJlc3NFcnJv
cnMucmVjaXBpZW50KSwgQ29udGFjdEZpZWxkOjpOYW1lLCBlcnJvcnMpOwotICAgICAgICBhcHBl
bmRTaGlwcGluZ0NvbnRhY3RJbnZhbGlkRXJyb3IoV1RGTW92ZShhZGRyZXNzRXJyb3JzLnJlZ2lv
biksIENvbnRhY3RGaWVsZDo6QWRtaW5pc3RyYXRpdmVBcmVhLCBlcnJvcnMpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dm0o
KSk7CisgICAgYXV0byBleGNlcHRpb24gPSBjb21wdXRlUGF5bWVudE1ldGhvZEVycm9ycyhwYXlt
ZW50TWV0aG9kRXJyb3JzLCBlcnJvcnMpOworICAgIGlmIChleGNlcHRpb24uaGFzRXhjZXB0aW9u
KCkpIHsKKyAgICAgICAgQVNTRVJUKHNjb3BlLmV4Y2VwdGlvbigpKTsKKyAgICAgICAgc2NvcGUu
Y2xlYXJFeGNlcHRpb24oKTsKICAgICB9CiAKKyAgICByZXR1cm4gZXJyb3JzOworfQorCit2b2lk
IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbXB1dGVBZGRyZXNzRXJyb3JzKFN0cmluZyYmIGVy
cm9yLCBBZGRyZXNzRXJyb3JzJiYgYWRkcmVzc0Vycm9ycywgVmVjdG9yPFBheW1lbnRFcnJvcj4m
IGVycm9ycykgY29uc3QKK3sKKyAgICBpZiAoIW1fcGF5bWVudFJlcXVlc3QtPnBheW1lbnRPcHRp
b25zKCkucmVxdWVzdFNoaXBwaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICB1c2luZyBDb250
YWN0RmllbGQgPSBQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDsKKyAgICBhcHBlbmRTaGlwcGlu
Z0NvbnRhY3RJbnZhbGlkRXJyb3IoV1RGTW92ZShlcnJvciksIHN0ZDo6bnVsbG9wdCwgZXJyb3Jz
KTsKKyAgICBhcHBlbmRTaGlwcGluZ0NvbnRhY3RJbnZhbGlkRXJyb3IoV1RGTW92ZShhZGRyZXNz
RXJyb3JzLmFkZHJlc3NMaW5lKSwgQ29udGFjdEZpZWxkOjpBZGRyZXNzTGluZXMsIGVycm9ycyk7
CisgICAgYXBwZW5kU2hpcHBpbmdDb250YWN0SW52YWxpZEVycm9yKFdURk1vdmUoYWRkcmVzc0Vy
cm9ycy5jaXR5KSwgQ29udGFjdEZpZWxkOjpMb2NhbGl0eSwgZXJyb3JzKTsKKyAgICBhcHBlbmRT
aGlwcGluZ0NvbnRhY3RJbnZhbGlkRXJyb3IoV1RGTW92ZShhZGRyZXNzRXJyb3JzLmNvdW50cnkp
LCBDb250YWN0RmllbGQ6OkNvdW50cnksIGVycm9ycyk7CisgICAgYXBwZW5kU2hpcHBpbmdDb250
YWN0SW52YWxpZEVycm9yKFdURk1vdmUoYWRkcmVzc0Vycm9ycy5kZXBlbmRlbnRMb2NhbGl0eSks
IENvbnRhY3RGaWVsZDo6U3ViTG9jYWxpdHksIGVycm9ycyk7CisgICAgYXBwZW5kU2hpcHBpbmdD
b250YWN0SW52YWxpZEVycm9yKFdURk1vdmUoYWRkcmVzc0Vycm9ycy5waG9uZSksIENvbnRhY3RG
aWVsZDo6UGhvbmVOdW1iZXIsIGVycm9ycyk7CisgICAgYXBwZW5kU2hpcHBpbmdDb250YWN0SW52
YWxpZEVycm9yKFdURk1vdmUoYWRkcmVzc0Vycm9ycy5wb3N0YWxDb2RlKSwgQ29udGFjdEZpZWxk
OjpQb3N0YWxDb2RlLCBlcnJvcnMpOworICAgIGFwcGVuZFNoaXBwaW5nQ29udGFjdEludmFsaWRF
cnJvcihXVEZNb3ZlKGFkZHJlc3NFcnJvcnMucmVjaXBpZW50KSwgQ29udGFjdEZpZWxkOjpOYW1l
LCBlcnJvcnMpOworICAgIGFwcGVuZFNoaXBwaW5nQ29udGFjdEludmFsaWRFcnJvcihXVEZNb3Zl
KGFkZHJlc3NFcnJvcnMucmVnaW9uKSwgQ29udGFjdEZpZWxkOjpBZG1pbmlzdHJhdGl2ZUFyZWEs
IGVycm9ycyk7Cit9CisKK3ZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y29tcHV0ZVBheWVy
RXJyb3JzKFBheWVyRXJyb3JGaWVsZHMmJiBwYXllckVycm9ycywgVmVjdG9yPFBheW1lbnRFcnJv
cj4mIGVycm9ycykgY29uc3QKK3sKKyAgICBhdXRvJiBvcHRpb25zID0gbV9wYXltZW50UmVxdWVz
dC0+cGF5bWVudE9wdGlvbnMoKTsKKyAgICB1c2luZyBDb250YWN0RmllbGQgPSBQYXltZW50RXJy
b3I6OkNvbnRhY3RGaWVsZDsKKwogICAgIGlmIChvcHRpb25zLnJlcXVlc3RQYXllck5hbWUpCiAg
ICAgICAgIGFwcGVuZFNoaXBwaW5nQ29udGFjdEludmFsaWRFcnJvcihXVEZNb3ZlKHBheWVyRXJy
b3JzLm5hbWUpLCBDb250YWN0RmllbGQ6Ok5hbWUsIGVycm9ycyk7CiAKQEAgLTM1OSwyNSArMzgy
LDI5IEBAIFZlY3RvcjxQYXltZW50RXJyb3I+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmNvbXB1
dGVFcnJvcnMoU3RyaW5nJiYgZXJyb3IsIEFkZHJlCiAKICAgICBpZiAob3B0aW9ucy5yZXF1ZXN0
UGF5ZXJQaG9uZSkKICAgICAgICAgYXBwZW5kU2hpcHBpbmdDb250YWN0SW52YWxpZEVycm9yKFdU
Rk1vdmUocGF5ZXJFcnJvcnMucGhvbmUpLCBDb250YWN0RmllbGQ6OlBob25lTnVtYmVyLCBlcnJv
cnMpOworfQorCitFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21w
dXRlUGF5bWVudE1ldGhvZEVycm9ycyhKU0M6OkpTT2JqZWN0KiBwYXltZW50TWV0aG9kRXJyb3Jz
LCBWZWN0b3I8UGF5bWVudEVycm9yPiYgZXJyb3JzKSBjb25zdAoreworICAgIGlmICghcGF5bWVu
dE1ldGhvZEVycm9ycykKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogI2lmIEVOQUJMRShBUFBMRV9Q
QVlfU0VTU0lPTl9WMykKLSAgICBpZiAocGF5bWVudE1ldGhvZEVycm9ycykgewotICAgICAgICBh
dXRvJiBjb250ZXh0ID0gKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAgICAgYXV0byBj
YXRjaFNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRShjb250ZXh0LnZtKCkpOwotICAgICAgICBh
dXRvIGFwcGxlUGF5RXJyb3JzID0gY29udmVydDxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8QXBw
bGVQYXlFcnJvcj4+PigqY29udGV4dC5leGVjU3RhdGUoKSwgcGF5bWVudE1ldGhvZEVycm9ycyk7
Ci0gICAgICAgIGlmICghY2F0Y2hTY29wZS5leGNlcHRpb24oKSkgewotICAgICAgICAgICAgZm9y
IChhdXRvJiBhcHBsZVBheUVycm9yIDogYXBwbGVQYXlFcnJvcnMpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoYXBwbGVQYXlFcnJvcikKLSAgICAgICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCh7
IGFwcGxlUGF5RXJyb3ItPmNvZGUoKSwgYXBwbGVQYXlFcnJvci0+bWVzc2FnZSgpLCBhcHBsZVBh
eUVycm9yLT5jb250YWN0RmllbGQoKSB9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBjYXRjaFNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CisgICAgYXV0byYgY29u
dGV4dCA9ICpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRShjb250ZXh0LnZtKCkpOworICAgIGF1dG8gYXBwbGVQYXlFcnJv
cnMgPSBjb252ZXJ0PElETFNlcXVlbmNlPElETEludGVyZmFjZTxBcHBsZVBheUVycm9yPj4+KCpj
b250ZXh0LmV4ZWNTdGF0ZSgpLCBwYXltZW50TWV0aG9kRXJyb3JzKTsKKyAgICBpZiAodGhyb3dT
Y29wZS5leGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhj
ZXB0aW9uRXJyb3IgfTsKKworICAgIGZvciAoYXV0byYgYXBwbGVQYXlFcnJvciA6IGFwcGxlUGF5
RXJyb3JzKSB7CisgICAgICAgIGlmIChhcHBsZVBheUVycm9yKQorICAgICAgICAgICAgZXJyb3Jz
LmFwcGVuZCh7IGFwcGxlUGF5RXJyb3ItPmNvZGUoKSwgYXBwbGVQYXlFcnJvci0+bWVzc2FnZSgp
LCBhcHBsZVBheUVycm9yLT5jb250YWN0RmllbGQoKSB9KTsKICAgICB9CiAjZWxzZQotICAgIFVO
VVNFRF9QQVJBTShwYXltZW50TWV0aG9kRXJyb3JzKTsKKyAgICBVTlVTRURfUEFSQU0oZXJyb3Jz
KTsKICNlbmRpZgogCi0gICAgcmV0dXJuIGVycm9yczsKKyAgICByZXR1cm4geyB9OwogfQogCiBF
eGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpkZXRhaWxzVXBkYXRlZChQ
YXltZW50UmVxdWVzdDo6VXBkYXRlUmVhc29uIHJlYXNvbiwgU3RyaW5nJiYgZXJyb3IsIEFkZHJl
c3NFcnJvcnMmJiBhZGRyZXNzRXJyb3JzLCBQYXllckVycm9yRmllbGRzJiYgcGF5ZXJFcnJvcnMs
IEpTQzo6SlNPYmplY3QqIHBheW1lbnRNZXRob2RFcnJvcnMpCkBAIC00NzIsNiArNDk5LDcgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6cGF5bWVudE1ldGhvZFVw
ZGF0ZWQoKQogdm9pZCBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wbGV0ZShzdGQ6Om9wdGlv
bmFsPFBheW1lbnRDb21wbGV0ZT4mJiByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpIHsKKyAg
ICAgICAgQVNTRVJUKGlzRmluYWxTdGF0ZVJlc3VsdChzdGQ6Om51bGxvcHQpKTsKICAgICAgICAg
cGF5bWVudENvb3JkaW5hdG9yKCkuY29tcGxldGVQYXltZW50U2Vzc2lvbihzdGQ6Om51bGxvcHQp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDg3LDkgKzUxNSwzMSBAQCB2b2lkIEFwcGxl
UGF5UGF5bWVudEhhbmRsZXI6OmNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbXBsZXRl
PiYmIHJlc3VsdCkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgQVNTRVJUKGlzRmluYWxT
dGF0ZVJlc3VsdChhdXRob3JpemF0aW9uUmVzdWx0KSk7CiAgICAgcGF5bWVudENvb3JkaW5hdG9y
KCkuY29tcGxldGVQYXltZW50U2Vzc2lvbihXVEZNb3ZlKGF1dGhvcml6YXRpb25SZXN1bHQpKTsK
IH0KIAorRXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6cmV0cnkoUGF5
bWVudFZhbGlkYXRpb25FcnJvcnMmJiB2YWxpZGF0aW9uRXJyb3JzKQoreworICAgIFZlY3RvcjxQ
YXltZW50RXJyb3I+IGVycm9yczsKKworICAgIGNvbXB1dGVBZGRyZXNzRXJyb3JzKFdURk1vdmUo
dmFsaWRhdGlvbkVycm9ycy5lcnJvciksIFdURk1vdmUodmFsaWRhdGlvbkVycm9ycy5zaGlwcGlu
Z0FkZHJlc3MpLCBlcnJvcnMpOworICAgIGNvbXB1dGVQYXllckVycm9ycyhXVEZNb3ZlKHZhbGlk
YXRpb25FcnJvcnMucGF5ZXIpLCBlcnJvcnMpOworCisgICAgYXV0byBleGNlcHRpb24gPSBjb21w
dXRlUGF5bWVudE1ldGhvZEVycm9ycyh2YWxpZGF0aW9uRXJyb3JzLnBheW1lbnRNZXRob2QuZ2V0
KCksIGVycm9ycyk7CisgICAgaWYgKGV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAg
cmV0dXJuIGV4Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICAvLyBFbnN1cmUgdGhl
cmUgaXMgYWx3YXlzIGF0IGxlYXN0IG9uZSBlcnJvciB0byBhdm9pZCBoYXZpbmcgYSBmaW5hbCBy
ZXN1bHQuCisgICAgaWYgKGVycm9ycy5pc0VtcHR5KCkpCisgICAgICAgIGVycm9ycy5hcHBlbmQo
eyBQYXltZW50RXJyb3I6OkNvZGU6OlVua25vd24sIHsgfSwgc3RkOjpudWxsb3B0IH0pOworCisg
ICAgUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgYXV0aG9yaXphdGlvblJlc3VsdCB7IFBheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzOjpGYWlsdXJlLCBXVEZNb3ZlKGVycm9ycykgfTsKKyAgICBB
U1NFUlQoIWlzRmluYWxTdGF0ZVJlc3VsdChhdXRob3JpemF0aW9uUmVzdWx0KSk7CisgICAgcGF5
bWVudENvb3JkaW5hdG9yKCkuY29tcGxldGVQYXltZW50U2Vzc2lvbihXVEZNb3ZlKGF1dGhvcml6
YXRpb25SZXN1bHQpKTsKKyAgICByZXR1cm4geyB9OworfQorCiB1bnNpZ25lZCBBcHBsZVBheVBh
eW1lbnRIYW5kbGVyOjp2ZXJzaW9uKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYXBwbGVQYXlSZXF1
ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50
cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuaAppbmRleCBj
ZTUwNTNhMTJiYzA2ZGIwNmZiZGMxZTA1NGU5ODkyNDMzM2IwNzUxLi41ZjQyYWM2ZTBkNzEzMTlk
NzY4YWQwYTlhZGE4ZWZiMjJlYzczYjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5
UGF5bWVudEhhbmRsZXIuaApAQCAtNTMsOCArNTMsMTEgQEAgcHJpdmF0ZToKICAgICBQYXltZW50
Q29vcmRpbmF0b3ImIHBheW1lbnRDb29yZGluYXRvcigpIGNvbnN0OwogCiAgICAgRXhjZXB0aW9u
T3I8VmVjdG9yPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4+
IGNvbXB1dGVTaGlwcGluZ01ldGhvZHMoKTsKLSAgICBFeGNlcHRpb25PcjxBcHBsZVBheVNlc3Np
b25QYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IGNvbXB1dGVUb3RhbEFuZExpbmVJ
dGVtcygpOworICAgIEV4Y2VwdGlvbk9yPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpU
b3RhbEFuZExpbmVJdGVtcz4gY29tcHV0ZVRvdGFsQW5kTGluZUl0ZW1zKCkgY29uc3Q7CiAgICAg
VmVjdG9yPFBheW1lbnRFcnJvcj4gY29tcHV0ZUVycm9ycyhTdHJpbmcmJiBlcnJvciwgQWRkcmVz
c0Vycm9ycyYmLCBQYXllckVycm9yRmllbGRzJiYsIEpTQzo6SlNPYmplY3QqIHBheW1lbnRNZXRo
b2RFcnJvcnMpIGNvbnN0OworICAgIHZvaWQgY29tcHV0ZUFkZHJlc3NFcnJvcnMoU3RyaW5nJiYg
ZXJyb3IsIEFkZHJlc3NFcnJvcnMmJiwgVmVjdG9yPFBheW1lbnRFcnJvcj4mKSBjb25zdDsKKyAg
ICB2b2lkIGNvbXB1dGVQYXllckVycm9ycyhQYXllckVycm9yRmllbGRzJiYsIFZlY3RvcjxQYXlt
ZW50RXJyb3I+JikgY29uc3Q7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gY29tcHV0ZVBheW1lbnRN
ZXRob2RFcnJvcnMoSlNDOjpKU09iamVjdCogcGF5bWVudE1ldGhvZEVycm9ycywgVmVjdG9yPFBh
eW1lbnRFcnJvcj4mKSBjb25zdDsKIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNoaXBwaW5nQWRk
cmVzc1VwZGF0ZWQoVmVjdG9yPFBheW1lbnRFcnJvcj4mJiBlcnJvcnMpOwogICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IHNoaXBwaW5nT3B0aW9uVXBkYXRlZCgpOwpAQCAtNjgsNiArNzEsNyBAQCBwcml2
YXRlOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRldGFpbHNVcGRhdGVkKFBheW1lbnRSZXF1ZXN0
OjpVcGRhdGVSZWFzb24sIFN0cmluZyYmIGVycm9yLCBBZGRyZXNzRXJyb3JzJiYsIFBheWVyRXJy
b3JGaWVsZHMmJiwgSlNDOjpKU09iamVjdCogcGF5bWVudE1ldGhvZEVycm9ycykgZmluYWw7CiAg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gbWVyY2hhbnRWYWxpZGF0aW9uQ29tcGxldGVkKEpTQzo6SlNW
YWx1ZSYmKSBmaW5hbDsKICAgICB2b2lkIGNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8UGF5bWVudENv
bXBsZXRlPiYmKSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiByZXRyeShQYXltZW50VmFs
aWRhdGlvbkVycm9ycyYmKSBmaW5hbDsKIAogICAgIC8vIFBheW1lbnRTZXNzaW9uCiAgICAgdW5z
aWduZWQgdmVyc2lvbigpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SGFuZGxlci5oCmluZGV4IDE3MzU4NzJhMTQ1
MjBkMGM5YWY0NTY4ZjJkYWMyODBiYWE5M2IzZmEuLmE2ZjUwZWFjOGRjY2U2YmI0OGQ4ZmY2MjI3
ODZjZTgwM2YyYzA2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVu
dHJlcXVlc3QvUGF5bWVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bh
eW1lbnRyZXF1ZXN0L1BheW1lbnRIYW5kbGVyLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgRG9jdW1lbnQ7CiBzdHJ1Y3QgQWRkcmVzc0Vycm9yczsKIHN0cnVj
dCBQYXllckVycm9yRmllbGRzOworc3RydWN0IFBheW1lbnRWYWxpZGF0aW9uRXJyb3JzOwogCiBj
bGFzcyBQYXltZW50SGFuZGxlciA6IHB1YmxpYyB2aXJ0dWFsIFBheW1lbnRTZXNzaW9uQmFzZSB7
CiBwdWJsaWM6CkBAIC01NCw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEV4Y2VwdGlv
bk9yPHZvaWQ+IGRldGFpbHNVcGRhdGVkKFBheW1lbnRSZXF1ZXN0OjpVcGRhdGVSZWFzb24sIFN0
cmluZyYmIGVycm9yLCBBZGRyZXNzRXJyb3JzJiYsIFBheWVyRXJyb3JGaWVsZHMmJiwgSlNDOjpK
U09iamVjdCogcGF5bWVudE1ldGhvZEVycm9ycykgPSAwOwogICAgIHZpcnR1YWwgRXhjZXB0aW9u
T3I8dm9pZD4gbWVyY2hhbnRWYWxpZGF0aW9uQ29tcGxldGVkKEpTQzo6SlNWYWx1ZSYmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbXBsZXRl
PiYmKSA9IDA7CisgICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lkPiByZXRyeShQYXltZW50VmFs
aWRhdGlvbkVycm9ycyYmKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJl
cXVlc3QuY3BwCmluZGV4IGM5ZGJiODZiOTUwY2U3ZDVhYTIzNzk0MTc5MDc1ZmVkN2MyOGM4NTku
LjJiMjQ3N2ZjMDU2MWMzYjRiZTY5NDc2NTgzMjk3YzFhMmFlODA0ZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3Qu
Y3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiUGF5bWVudE1ldGhvZERhdGEuaCIKICNp
bmNsdWRlICJQYXltZW50T3B0aW9ucy5oIgogI2luY2x1ZGUgIlBheW1lbnRSZXF1ZXN0VXBkYXRl
RXZlbnQuaCIKKyNpbmNsdWRlICJQYXltZW50VmFsaWRhdGlvbkVycm9ycy5oIgogI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09OT2JqZWN0
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVGhyb3dTY29wZS5oPgpAQCAtNDA0LDcgKzQw
NSw3IEBAIHZvaWQgUGF5bWVudFJlcXVlc3Q6OnNob3coRG9jdW1lbnQmIGRvY3VtZW50LCBSZWZQ
dHI8RE9NUHJvbWlzZT4mJiBkZXRhaWxzUHJvbWlzCiAgICAgZm9yIChhdXRvJiBwYXltZW50TWV0
aG9kIDogbV9zZXJpYWxpemVkTWV0aG9kRGF0YSkgewogICAgICAgICBhdXRvIGRhdGEgPSBwYXJz
ZShkb2N1bWVudCwgcGF5bWVudE1ldGhvZC5zZXJpYWxpemVkRGF0YSk7CiAgICAgICAgIGlmIChk
YXRhLmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICBtX3Nob3dQcm9taXNlLT5yZWplY3Qo
ZGF0YS5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgc2V0dGxlU2hvd1Byb21pc2Uo
ZGF0YS5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTQxNCw3ICs0MTUsNyBAQCB2b2lkIFBheW1lbnRSZXF1ZXN0OjpzaG93KERvY3VtZW50
JiBkb2N1bWVudCwgUmVmUHRyPERPTVByb21pc2U+JiYgZGV0YWlsc1Byb21pcwogCiAgICAgICAg
IGF1dG8gcmVzdWx0ID0gaGFuZGxlci0+Y29udmVydERhdGEoZGF0YS5yZWxlYXNlUmV0dXJuVmFs
dWUoKSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAg
IG1fc2hvd1Byb21pc2UtPnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAg
ICAgICAgIHNldHRsZVNob3dQcm9taXNlKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTQyMywxMyArNDI0LDEzIEBAIHZvaWQg
UGF5bWVudFJlcXVlc3Q6OnNob3coRG9jdW1lbnQmIGRvY3VtZW50LCBSZWZQdHI8RE9NUHJvbWlz
ZT4mJiBkZXRhaWxzUHJvbWlzCiAgICAgfQogCiAgICAgaWYgKCFzZWxlY3RlZFBheW1lbnRIYW5k
bGVyKSB7Ci0gICAgICAgIG1fc2hvd1Byb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBw
b3J0ZWRFcnJvciB9KTsKKyAgICAgICAgc2V0dGxlU2hvd1Byb21pc2UoRXhjZXB0aW9uIHsgTm90
U3VwcG9ydGVkRXJyb3IgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIGV4
Y2VwdGlvbiA9IHNlbGVjdGVkUGF5bWVudEhhbmRsZXItPnNob3coKTsKICAgICBpZiAoZXhjZXB0
aW9uLmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgIG1fc2hvd1Byb21pc2UtPnJlamVjdChleGNl
cHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgc2V0dGxlU2hvd1Byb21pc2UoZXhj
ZXB0aW9uLnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTQ0NSwzMiArNDQ2LDUxIEBAIHZvaWQgUGF5bWVudFJlcXVlc3Q6OnNob3coRG9jdW1lbnQmIGRv
Y3VtZW50LCBSZWZQdHI8RE9NUHJvbWlzZT4mJiBkZXRhaWxzUHJvbWlzCiAKIHZvaWQgUGF5bWVu
dFJlcXVlc3Q6OmFib3J0V2l0aEV4Y2VwdGlvbihFeGNlcHRpb24mJiBleGNlcHRpb24pCiB7Ci0g
ICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkludGVyYWN0aXZlKQotICAgICAgICByZXR1cm47Cisg
ICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkludGVyYWN0aXZlKTsKKyAgICBjbG9zZUFjdGl2
ZVBheW1lbnRIYW5kbGVyKCk7CiAKLSAgICBpZiAoYXV0byBwYXltZW50SGFuZGxlciA9IGFjdGl2
ZVBheW1lbnRIYW5kbGVyKCkpCi0gICAgICAgIHBheW1lbnRIYW5kbGVyLT5oaWRlKCk7Ci0gICAg
bV9hY3RpdmVQYXltZW50SGFuZGxlciA9IHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAobV9yZXNwb25z
ZSkKKyAgICAgICAgbV9yZXNwb25zZS0+YWJvcnRXaXRoRXhjZXB0aW9uKFdURk1vdmUoZXhjZXB0
aW9uKSk7CisgICAgZWxzZQorICAgICAgICBzZXR0bGVTaG93UHJvbWlzZShXVEZNb3ZlKGV4Y2Vw
dGlvbikpOworfQogCi0gICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkludGVyYWN0aXZlKTsK
K3ZvaWQgUGF5bWVudFJlcXVlc3Q6OnNldHRsZVNob3dQcm9taXNlKEV4Y2VwdGlvbk9yPFBheW1l
bnRSZXNwb25zZSY+JiYgcmVzdWx0KQoreworICAgIGlmIChhdXRvIHNob3dQcm9taXNlID0gc3Rk
OjpleGNoYW5nZShtX3Nob3dQcm9taXNlLCBzdGQ6Om51bGxvcHQpKQorICAgICAgICBzaG93UHJv
bWlzZS0+c2V0dGxlKFdURk1vdmUocmVzdWx0KSk7Cit9CisKK3ZvaWQgUGF5bWVudFJlcXVlc3Q6
OmNsb3NlQWN0aXZlUGF5bWVudEhhbmRsZXIoKQoreworICAgIGlmIChhdXRvIGFjdGl2ZVBheW1l
bnRIYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2FjdGl2ZVBheW1lbnRIYW5kbGVyLCBzdGQ6Om51
bGxvcHQpKQorICAgICAgICBhY3RpdmVQYXltZW50SGFuZGxlci0+cGF5bWVudEhhbmRsZXItPmhp
ZGUoKTsKKworICAgIG1faXNVcGRhdGluZyA9IGZhbHNlOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6
Q2xvc2VkOwotICAgIG1fc2hvd1Byb21pc2UtPnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbikpOwog
fQogCiB2b2lkIFBheW1lbnRSZXF1ZXN0OjpzdG9wKCkKIHsKLSAgICBhYm9ydFdpdGhFeGNlcHRp
b24oRXhjZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsKKyAgICBjbG9zZUFjdGl2ZVBheW1lbnRIYW5k
bGVyKCk7CisgICAgc2V0dGxlU2hvd1Byb21pc2UoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsK
IH0KIAogLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3BheW1lbnQtcmVxdWVzdC8jYWJvcnQoKS1t
ZXRob2QKLUV4Y2VwdGlvbk9yPHZvaWQ+IFBheW1lbnRSZXF1ZXN0OjphYm9ydChBYm9ydFByb21p
c2UmJiBwcm9taXNlKQordm9pZCBQYXltZW50UmVxdWVzdDo6YWJvcnQoQWJvcnRQcm9taXNlJiYg
cHJvbWlzZSkKIHsKLSAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6SW50ZXJhY3RpdmUpCi0gICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworICAgIGlmIChtX3Jl
c3BvbnNlICYmIG1fcmVzcG9uc2UtPmhhc1JldHJ5UHJvbWlzZSgpKSB7CisgICAgICAgIHByb21p
c2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkludGVyYWN0aXZlKSB7Cisg
ICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgc3RvcCgpOworICAgIGFib3J0V2l0aEV4Y2Vw
dGlvbihFeGNlcHRpb24geyBBYm9ydEVycm9yIH0pOwogICAgIHByb21pc2UucmVzb2x2ZSgpOwot
ICAgIHJldHVybiB7IH07CiB9CiAKIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9wYXltZW50LXJl
cXVlc3QvI2Nhbm1ha2VwYXltZW50KCktbWV0aG9kCkBAIC01ODcsNyArNjA3LDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gUGF5bWVudFJlcXVlc3Q6OmNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKEV2
ZW50JiBldmVudCwgUmVmPEQKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAobV9t
ZXJjaGFudFNlc3Npb25Qcm9taXNlLT5zdGF0dXMoKSA9PSBET01Qcm9taXNlOjpTdGF0dXM6OlJl
amVjdGVkKSB7Ci0gICAgICAgICAgICBzdG9wKCk7CisgICAgICAgICAgICBhYm9ydFdpdGhFeGNl
cHRpb24oRXhjZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCkBAIC02MTMsNyArNjMzLDcgQEAgdm9pZCBQYXltZW50UmVxdWVzdDo6c2V0dGxl
RGV0YWlsc1Byb21pc2UoVXBkYXRlUmVhc29uIHJlYXNvbikKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKG1faXNDYW5jZWxQZW5kaW5nIHx8IG1fZGV0YWlsc1Byb21pc2UtPnN0YXR1cygpID09
IERPTVByb21pc2U6OlN0YXR1czo6UmVqZWN0ZWQpIHsKLSAgICAgICAgc3RvcCgpOworICAgICAg
ICBhYm9ydFdpdGhFeGNlcHRpb24oRXhjZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtNjc5LDQyICs2OTksNTUgQEAgdm9pZCBQYXltZW50UmVxdWVz
dDo6d2hlbkRldGFpbHNTZXR0bGVkKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQog
CiB2b2lkIFBheW1lbnRSZXF1ZXN0OjphY2NlcHQoY29uc3QgU3RyaW5nJiBtZXRob2ROYW1lLCBQ
YXltZW50UmVzcG9uc2U6OkRldGFpbHNGdW5jdGlvbiYmIGRldGFpbHNGdW5jdGlvbiwgUmVmPFBh
eW1lbnRBZGRyZXNzPiYmIHNoaXBwaW5nQWRkcmVzcywgY29uc3QgU3RyaW5nJiBwYXllck5hbWUs
IGNvbnN0IFN0cmluZyYgcGF5ZXJFbWFpbCwgY29uc3QgU3RyaW5nJiBwYXllclBob25lKQogewor
ICAgIEFTU0VSVCghbV9pc1VwZGF0aW5nKTsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6
SW50ZXJhY3RpdmUpOwogCi0gICAgYXV0byByZXNwb25zZSA9IFBheW1lbnRSZXNwb25zZTo6Y3Jl
YXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMsIFdURk1vdmUoZGV0YWlsc0Z1bmN0
aW9uKSk7Ci0gICAgcmVzcG9uc2UtPnNldFJlcXVlc3RJZChtX2RldGFpbHMuaWQpOwotICAgIHJl
c3BvbnNlLT5zZXRNZXRob2ROYW1lKG1ldGhvZE5hbWUpOwotCi0gICAgaWYgKG1fb3B0aW9ucy5y
ZXF1ZXN0U2hpcHBpbmcpIHsKLSAgICAgICAgcmVzcG9uc2UtPnNldFNoaXBwaW5nQWRkcmVzcyhz
aGlwcGluZ0FkZHJlc3MucHRyKCkpOwotICAgICAgICByZXNwb25zZS0+c2V0U2hpcHBpbmdPcHRp
b24obV9zaGlwcGluZ09wdGlvbik7CisgICAgYm9vbCBpc1JldHJ5ID0gbV9yZXNwb25zZTsKKyAg
ICBpZiAoIWlzUmV0cnkpIHsKKyAgICAgICAgbV9yZXNwb25zZSA9IFBheW1lbnRSZXNwb25zZTo6
Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMsIFdURk1vdmUoZGV0YWlsc0Z1
bmN0aW9uKSk7CisgICAgICAgIG1fcmVzcG9uc2UtPnNldFJlcXVlc3RJZChtX2RldGFpbHMuaWQp
OwogICAgIH0KIAotICAgIGlmIChtX29wdGlvbnMucmVxdWVzdFBheWVyTmFtZSkKLSAgICAgICAg
cmVzcG9uc2UtPnNldFBheWVyTmFtZShwYXllck5hbWUpOwotCi0gICAgaWYgKG1fb3B0aW9ucy5y
ZXF1ZXN0UGF5ZXJFbWFpbCkKLSAgICAgICAgcmVzcG9uc2UtPnNldFBheWVyRW1haWwocGF5ZXJF
bWFpbCk7Ci0KLSAgICBpZiAobV9vcHRpb25zLnJlcXVlc3RQYXllclBob25lKQotICAgICAgICBy
ZXNwb25zZS0+c2V0UGF5ZXJQaG9uZShwYXllclBob25lKTsKKyAgICBtX3Jlc3BvbnNlLT5zZXRN
ZXRob2ROYW1lKG1ldGhvZE5hbWUpOworICAgIG1fcmVzcG9uc2UtPnNldFNoaXBwaW5nQWRkcmVz
cyhtX29wdGlvbnMucmVxdWVzdFNoaXBwaW5nID8gc2hpcHBpbmdBZGRyZXNzLnB0cigpIDogbnVs
bHB0cik7CisgICAgbV9yZXNwb25zZS0+c2V0U2hpcHBpbmdPcHRpb24obV9vcHRpb25zLnJlcXVl
c3RTaGlwcGluZyA/IG1fc2hpcHBpbmdPcHRpb24gOiBTdHJpbmcgeyB9KTsKKyAgICBtX3Jlc3Bv
bnNlLT5zZXRQYXllck5hbWUobV9vcHRpb25zLnJlcXVlc3RQYXllck5hbWUgPyBwYXllck5hbWUg
OiBTdHJpbmcgeyB9KTsKKyAgICBtX3Jlc3BvbnNlLT5zZXRQYXllckVtYWlsKG1fb3B0aW9ucy5y
ZXF1ZXN0UGF5ZXJFbWFpbCA/IHBheWVyRW1haWwgOiBTdHJpbmcgeyB9KTsKKyAgICBtX3Jlc3Bv
bnNlLT5zZXRQYXllclBob25lKG1fb3B0aW9ucy5yZXF1ZXN0UGF5ZXJQaG9uZSA/IHBheWVyUGhv
bmUgOiBTdHJpbmcgeyB9KTsKKworICAgIGlmICghaXNSZXRyeSkKKyAgICAgICAgc2V0dGxlU2hv
d1Byb21pc2UoKm1fcmVzcG9uc2UpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQobV9yZXNw
b25zZS0+aGFzUmV0cnlQcm9taXNlKCkpOworICAgICAgICBtX3Jlc3BvbnNlLT5zZXR0bGVSZXRy
eVByb21pc2UoKTsKKyAgICB9CiAKLSAgICBtX3Nob3dQcm9taXNlLT5yZXNvbHZlKHJlc3BvbnNl
LmdldCgpKTsKICAgICBtX3N0YXRlID0gU3RhdGU6OkNsb3NlZDsKIH0KIAotdm9pZCBQYXltZW50
UmVxdWVzdDo6Y29tcGxldGUoc3RkOjpvcHRpb25hbDxQYXltZW50Q29tcGxldGU+JiYgcmVzdWx0
KQorRXhjZXB0aW9uT3I8dm9pZD4gUGF5bWVudFJlcXVlc3Q6OmNvbXBsZXRlKHN0ZDo6b3B0aW9u
YWw8UGF5bWVudENvbXBsZXRlPiYmIHJlc3VsdCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBT
dGF0ZTo6Q2xvc2VkKTsKKyAgICBpZiAoIW1fYWN0aXZlUGF5bWVudEhhbmRsZXIpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBBYm9ydEVycm9yIH07CisKICAgICBhY3RpdmVQYXltZW50SGFu
ZGxlcigpLT5jb21wbGV0ZShXVEZNb3ZlKHJlc3VsdCkpOwogICAgIG1fYWN0aXZlUGF5bWVudEhh
bmRsZXIgPSBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBQYXltZW50
UmVxdWVzdDo6Y2FuY2VsKCkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFBheW1lbnRSZXF1ZXN0OjpyZXRy
eShQYXltZW50VmFsaWRhdGlvbkVycm9ycyYmIGVycm9ycykKIHsKLSAgICBpZiAobV9zdGF0ZSAh
PSBTdGF0ZTo6SW50ZXJhY3RpdmUpCi0gICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9zdGF0
ZSA9PSBTdGF0ZTo6Q2xvc2VkKTsKKyAgICBpZiAoIW1fYWN0aXZlUGF5bWVudEhhbmRsZXIpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBBYm9ydEVycm9yIH07CisKKyAgICBtX3N0YXRlID0g
U3RhdGU6OkludGVyYWN0aXZlOworICAgIHJldHVybiBhY3RpdmVQYXltZW50SGFuZGxlcigpLT5y
ZXRyeShXVEZNb3ZlKGVycm9ycykpOworfQogCit2b2lkIFBheW1lbnRSZXF1ZXN0OjpjYW5jZWwo
KQorewogICAgIG1fYWN0aXZlUGF5bWVudEhhbmRsZXIgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBp
ZiAobV9pc1VwZGF0aW5nKSB7CkBAIC03MjIsNyArNzU1LDcgQEAgdm9pZCBQYXltZW50UmVxdWVz
dDo6Y2FuY2VsKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0b3AoKTsKKyAgICBh
Ym9ydFdpdGhFeGNlcHRpb24oRXhjZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oCmluZGV4IGFjYmNiZjRiNjc2ZTMzOTk0MmIyOTY5
ZGE3YTQwMjk2OTI1YzE1YTguLjllMjE1ZTVjMmRhYmU5N2I0NWM4NTk4ODgyMGU1ZjBkMzBiZDFh
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5
bWVudFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0
L1BheW1lbnRSZXF1ZXN0LmgKQEAgLTUwLDcgKzUwLDcgQEAgZW51bSBjbGFzcyBQYXltZW50U2hp
cHBpbmdUeXBlOwogc3RydWN0IFBheW1lbnREZXRhaWxzVXBkYXRlOwogc3RydWN0IFBheW1lbnRN
ZXRob2REYXRhOwogCi1jbGFzcyBQYXltZW50UmVxdWVzdCBmaW5hbCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFBheW1lbnRSZXF1ZXN0PiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50
VGFyZ2V0V2l0aElubGluZURhdGEgeworY2xhc3MgUGF5bWVudFJlcXVlc3QgZmluYWwgOiBwdWJs
aWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UGF5bWVudFJlcXVlc3Q+
LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIFJlZkNvdW50ZWQ8UGF5
bWVudFJlcXVlc3Q+IHsKIHB1YmxpYzoKICAgICB1c2luZyBBYm9ydFByb21pc2UgPSBET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD47CiAgICAgdXNpbmcgQ2FuTWFrZVBheW1lbnRQcm9taXNlID0gRE9N
UHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+OwpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAg
ICAgflBheW1lbnRSZXF1ZXN0KCk7CiAKICAgICB2b2lkIHNob3coRG9jdW1lbnQmLCBSZWZQdHI8
RE9NUHJvbWlzZT4mJiBkZXRhaWxzUHJvbWlzZSwgU2hvd1Byb21pc2UmJik7Ci0gICAgRXhjZXB0
aW9uT3I8dm9pZD4gYWJvcnQoQWJvcnRQcm9taXNlJiYpOworICAgIHZvaWQgYWJvcnQoQWJvcnRQ
cm9taXNlJiYpOwogICAgIHZvaWQgY2FuTWFrZVBheW1lbnQoRG9jdW1lbnQmLCBDYW5NYWtlUGF5
bWVudFByb21pc2UmJik7CiAKICAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3Q7CkBAIC05Myw3
ICs5Myw4IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiB1cGRhdGVXaXRoKFVwZGF0
ZVJlYXNvbiwgUmVmPERPTVByb21pc2U+JiYpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNvbXBs
ZXRlTWVyY2hhbnRWYWxpZGF0aW9uKEV2ZW50JiwgUmVmPERPTVByb21pc2U+JiYpOwogICAgIHZv
aWQgYWNjZXB0KGNvbnN0IFN0cmluZyYgbWV0aG9kTmFtZSwgUGF5bWVudFJlc3BvbnNlOjpEZXRh
aWxzRnVuY3Rpb24mJiwgUmVmPFBheW1lbnRBZGRyZXNzPiYmIHNoaXBwaW5nQWRkcmVzcywgY29u
c3QgU3RyaW5nJiBwYXllck5hbWUsIGNvbnN0IFN0cmluZyYgcGF5ZXJFbWFpbCwgY29uc3QgU3Ry
aW5nJiBwYXllclBob25lKTsKLSAgICB2b2lkIGNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8UGF5bWVu
dENvbXBsZXRlPiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBjb21wbGV0ZShzdGQ6Om9wdGlv
bmFsPFBheW1lbnRDb21wbGV0ZT4mJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmV0cnkoUGF5
bWVudFZhbGlkYXRpb25FcnJvcnMmJik7CiAgICAgdm9pZCBjYW5jZWwoKTsKIAogICAgIHVzaW5n
IE1ldGhvZElkZW50aWZpZXIgPSBWYXJpYW50PFN0cmluZywgVVJMPjsKQEAgLTExNyw2ICsxMTgs
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgd2hlbkRldGFpbHNTZXR0bGVkKHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiYmKTsKICAgICB2b2lkIGFib3J0V2l0aEV4Y2VwdGlvbihFeGNlcHRpb24mJik7CiAg
ICAgUGF5bWVudEhhbmRsZXIqIGFjdGl2ZVBheW1lbnRIYW5kbGVyKCkgeyByZXR1cm4gbV9hY3Rp
dmVQYXltZW50SGFuZGxlciA/IG1fYWN0aXZlUGF5bWVudEhhbmRsZXItPnBheW1lbnRIYW5kbGVy
LnB0cigpIDogbnVsbHB0cjsgfQorICAgIHZvaWQgc2V0dGxlU2hvd1Byb21pc2UoRXhjZXB0aW9u
T3I8UGF5bWVudFJlc3BvbnNlJj4mJik7CisgICAgdm9pZCBjbG9zZUFjdGl2ZVBheW1lbnRIYW5k
bGVyKCk7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QKICAgICBjb25zdCBjaGFyKiBhY3RpdmVE
T01PYmplY3ROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlBheW1lbnRSZXF1ZXN0IjsgfQpA
QCAtMTQxLDYgKzE0NCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxQYXltZW50SGFu
ZGxlcldpdGhQZW5kaW5nQWN0aXZpdHk+IG1fYWN0aXZlUGF5bWVudEhhbmRsZXI7CiAgICAgUmVm
UHRyPERPTVByb21pc2U+IG1fZGV0YWlsc1Byb21pc2U7CiAgICAgUmVmUHRyPERPTVByb21pc2U+
IG1fbWVyY2hhbnRTZXNzaW9uUHJvbWlzZTsKKyAgICBSZWZQdHI8UGF5bWVudFJlc3BvbnNlPiBt
X3Jlc3BvbnNlOwogICAgIGJvb2wgbV9pc1VwZGF0aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1f
aXNDYW5jZWxQZW5kaW5nIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuaWRsCmluZGV4IDdmYzNl
N2NjZThhYjQ1Y2RiNjVhN2EwNGIxNWY3MGRiNWNlYjkzNDQuLmI5YzEyNjRjY2E0ODcxNzRmZmY0
ZDU1ZDNjNzhkMzIyNTI2Yjk5ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuaWRsCkBAIC0zMyw3ICszMyw3IEBA
CiAgICAgU2VjdXJlQ29udGV4dCwKIF0gaW50ZXJmYWNlIFBheW1lbnRSZXF1ZXN0IDogRXZlbnRU
YXJnZXQgewogICAgIFtDYWxsV2l0aD1Eb2N1bWVudF0gUHJvbWlzZTxQYXltZW50UmVzcG9uc2U+
IHNob3cob3B0aW9uYWwgUHJvbWlzZTxQYXltZW50RGV0YWlsc1VwZGF0ZT4gZGV0YWlsc1Byb21p
c2UpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUHJvbWlzZTx2b2lkPiBhYm9ydCgpOworICAg
IFByb21pc2U8dm9pZD4gYWJvcnQoKTsKICAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIFByb21pc2U8
Ym9vbGVhbj4gY2FuTWFrZVBheW1lbnQoKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcgaWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L1BheW1lbnRSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRy
ZXF1ZXN0L1BheW1lbnRSZXNwb25zZS5jcHAKaW5kZXggY2YwYWM0Zjk0NGYxMDAyNjc1MTEwOWMz
Y2EwOTljYTM5YjQyZjdlMC4uNTY0M2ZhNGI1YjM3ZTM5MzJiNWYyMjMxYTRjY2E0MTYxOWI2NDRm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXlt
ZW50UmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVl
c3QvUGF5bWVudFJlc3BvbnNlLmNwcApAQCAtMzUsMzEgKzM1LDk4IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFBheW1lbnRSZXNwb25zZTo6UGF5bWVudFJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBEZXRhaWxzRnVuY3Rp
b24mJiBkZXRhaWxzRnVuY3Rpb24pCi0gICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7
IGNvbnRleHQgfQotICAgICwgbV9yZXF1ZXN0IHsgcmVxdWVzdCB9CisgICAgOiBBY3RpdmVET01P
YmplY3QgeyBjb250ZXh0IH0KKyAgICAsIG1fcmVxdWVzdCB7IG1ha2VXZWFrUHRyKHJlcXVlc3Qp
IH0KICAgICAsIG1fZGV0YWlsc0Z1bmN0aW9uIHsgV1RGTW92ZShkZXRhaWxzRnVuY3Rpb24pIH0K
IHsKICAgICBBU1NFUlQobV9kZXRhaWxzRnVuY3Rpb24pOworICAgIHN1c3BlbmRJZk5lZWRlZCgp
OwogfQogCi1QYXltZW50UmVzcG9uc2U6On5QYXltZW50UmVzcG9uc2UoKSA9IGRlZmF1bHQ7Cit2
b2lkIFBheW1lbnRSZXNwb25zZTo6ZmluaXNoQ29uc3RydWN0aW9uKCkKK3sKKyAgICBBU1NFUlQo
IWhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKKyAgICBtX3BlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5k
aW5nQWN0aXZpdHkoKnRoaXMpOworfQorCitQYXltZW50UmVzcG9uc2U6On5QYXltZW50UmVzcG9u
c2UoKQoreworICAgIEFTU0VSVCghaGFzUGVuZGluZ0FjdGl2aXR5KCkpOworICAgIEFTU0VSVCgh
aGFzUmV0cnlQcm9taXNlKCkpOworfQogCiB2b2lkIFBheW1lbnRSZXNwb25zZTo6Y29tcGxldGUo
c3RkOjpvcHRpb25hbDxQYXltZW50Q29tcGxldGU+JiYgcmVzdWx0LCBET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJiBwcm9taXNlKQogewotICAgIGlmIChtX2NvbXBsZXRlQ2FsbGVkKSB7CisgICAg
aWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN0b3BwZWQgfHwgIW1fcmVxdWVzdCkgeworICAgICAgICBw
cm9taXNlLnJlamVjdChFeGNlcHRpb24geyBBYm9ydEVycm9yIH0pOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCBtX3JldHJ5
UHJvbWlzZSkgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChoYXNQZW5k
aW5nQWN0aXZpdHkoKSk7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkNyZWF0ZWQpOwor
ICAgIG1fcGVuZGluZ0FjdGl2aXR5ID0gbnVsbHB0cjsKKyAgICBtX3N0YXRlID0gU3RhdGU6OkNv
bXBsZXRlZDsKKworICAgIHByb21pc2Uuc2V0dGxlKG1fcmVxdWVzdC0+Y29tcGxldGUoV1RGTW92
ZShyZXN1bHQpKSk7Cit9CisKK3ZvaWQgUGF5bWVudFJlc3BvbnNlOjpyZXRyeShQYXltZW50VmFs
aWRhdGlvbkVycm9ycyYmIGVycm9ycywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlz
ZSkKK3sKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBlZCB8fCAhbV9yZXF1ZXN0KSB7
CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGxldGVk
IHx8IG1fcmV0cnlQcm9taXNlKSB7CiAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9j
b21wbGV0ZUNhbGxlZCA9IHRydWU7Ci0gICAgbV9yZXF1ZXN0LT5jb21wbGV0ZShXVEZNb3ZlKHJl
c3VsdCkpOwotICAgIHByb21pc2UucmVzb2x2ZSgpOworICAgIEFTU0VSVChoYXNQZW5kaW5nQWN0
aXZpdHkoKSk7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkNyZWF0ZWQpOworCisgICAg
YXV0byBleGNlcHRpb24gPSBtX3JlcXVlc3QtPnJldHJ5KFdURk1vdmUoZXJyb3JzKSk7CisgICAg
aWYgKGV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBwcm9taXNlLnJlamVjdChl
eGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIG1fcmV0cnlQcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKK30KKwordm9pZCBQYXltZW50
UmVzcG9uc2U6OmFib3J0V2l0aEV4Y2VwdGlvbihFeGNlcHRpb24mJiBleGNlcHRpb24pCit7Cisg
ICAgc2V0dGxlUmV0cnlQcm9taXNlKFdURk1vdmUoZXhjZXB0aW9uKSk7CisgICAgbV9wZW5kaW5n
QWN0aXZpdHkgPSBudWxscHRyOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6Q29tcGxldGVkOworfQor
Cit2b2lkIFBheW1lbnRSZXNwb25zZTo6c2V0dGxlUmV0cnlQcm9taXNlKEV4Y2VwdGlvbk9yPHZv
aWQ+JiYgcmVzdWx0KQoreworICAgIGlmICghbV9yZXRyeVByb21pc2UpCisgICAgICAgIHJldHVy
bjsKKworICAgIEFTU0VSVChoYXNQZW5kaW5nQWN0aXZpdHkoKSk7CisgICAgQVNTRVJUKG1fc3Rh
dGUgPT0gU3RhdGU6OkNyZWF0ZWQpOworICAgIHN0ZDo6ZXhjaGFuZ2UobV9yZXRyeVByb21pc2Us
IHN0ZDo6bnVsbG9wdCktPnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOworfQorCitib29sIFBheW1l
bnRSZXNwb25zZTo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6OlN0b3BwZWQpOworICAgIHJldHVybiAhaGFzUGVu
ZGluZ0FjdGl2aXR5KCk7CiB9CiAKLXZvaWQgUGF5bWVudFJlc3BvbnNlOjpyZXRyeShQYXltZW50
VmFsaWRhdGlvbkVycm9ycyYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQor
dm9pZCBQYXltZW50UmVzcG9uc2U6OnN0b3AoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfSk7CisgICAg
c2V0dGxlUmV0cnlQcm9taXNlKEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IgfSk7CisgICAgbV9wZW5k
aW5nQWN0aXZpdHkgPSBudWxscHRyOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3RvcHBlZDsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlc3BvbnNlLmgKaW5kZXggYzM2NWRmYTM5MmRk
OTA4ZThhMGZiMmViNDQ2N2E3NDU3MjQyMGIxZS4uZjdmMGY1N2YxNDZkMTljMmY3NjUzODdjOTQ5
ZTQ1MmJhNjgzYzExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50
cmVxdWVzdC9QYXltZW50UmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bh
eW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNwb25zZS5oCkBAIC0yNywxMiArMjcsMTQgQEAKIAogI2lm
IEVOQUJMRShQQVlNRU5UX1JFUVVFU1QpCiAKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIK
ICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkV2ZW50
VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJK
U1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiUGF5bWVudEFkZHJlc3MuaCIKICNp
bmNsdWRlICJQYXltZW50Q29tcGxldGUuaCIKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwLDEzICs0MiwxNSBAQCBjbGFzcyBEb2N1bWVudDsK
IGNsYXNzIFBheW1lbnRSZXF1ZXN0Owogc3RydWN0IFBheW1lbnRWYWxpZGF0aW9uRXJyb3JzOwog
Ci1jbGFzcyBQYXltZW50UmVzcG9uc2UgZmluYWwgOiBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXIsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgUmVmQ291
bnRlZDxQYXltZW50UmVzcG9uc2U+IHsKK2NsYXNzIFBheW1lbnRSZXNwb25zZSBmaW5hbCA6IHB1
YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBw
dWJsaWMgUmVmQ291bnRlZDxQYXltZW50UmVzcG9uc2U+IHsKIHB1YmxpYzoKICAgICB1c2luZyBE
ZXRhaWxzRnVuY3Rpb24gPSBGdW5jdGlvbjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PihKU0M6
OkV4ZWNTdGF0ZSYpPjsKIAogICAgIHN0YXRpYyBSZWY8UGF5bWVudFJlc3BvbnNlPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGF5bWVudFJlcXVlc3QmIHJlcXVlc3Qs
IERldGFpbHNGdW5jdGlvbiYmIGRldGFpbHNGdW5jdGlvbikKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFBheW1lbnRSZXNwb25zZShjb250ZXh0LCByZXF1ZXN0LCBXVEZNb3Zl
KGRldGFpbHNGdW5jdGlvbikpKTsKKyAgICAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0UmVmKCpu
ZXcgUGF5bWVudFJlc3BvbnNlKGNvbnRleHQsIHJlcXVlc3QsIFdURk1vdmUoZGV0YWlsc0Z1bmN0
aW9uKSkpOworICAgICAgICByZXNwb25zZS0+ZmluaXNoQ29uc3RydWN0aW9uKCk7CisgICAgICAg
IHJldHVybiByZXNwb25zZTsKICAgICB9CiAKICAgICB+UGF5bWVudFJlc3BvbnNlKCk7CkBAIC03
NywyMCArODEsMzUgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21wbGV0ZShzdGQ6Om9wdGlvbmFs
PFBheW1lbnRDb21wbGV0ZT4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogICAgIHZv
aWQgcmV0cnkoUGF5bWVudFZhbGlkYXRpb25FcnJvcnMmJiwgRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYpOworICAgIHZvaWQgYWJvcnRXaXRoRXhjZXB0aW9uKEV4Y2VwdGlvbiYmKTsKKyAgICBi
b29sIGhhc1JldHJ5UHJvbWlzZSgpIGNvbnN0IHsgcmV0dXJuICEhbV9yZXRyeVByb21pc2U7IH0K
KyAgICB2b2lkIHNldHRsZVJldHJ5UHJvbWlzZShFeGNlcHRpb25Pcjx2b2lkPiYmID0geyB9KTsK
IAogICAgIHVzaW5nIFJlZkNvdW50ZWQ8UGF5bWVudFJlc3BvbnNlPjo6cmVmOwogICAgIHVzaW5n
IFJlZkNvdW50ZWQ8UGF5bWVudFJlc3BvbnNlPjo6ZGVyZWY7CiAKIHByaXZhdGU6CiAgICAgUGF5
bWVudFJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXltZW50UmVxdWVzdCYsIERl
dGFpbHNGdW5jdGlvbiYmKTsKKyAgICB2b2lkIGZpbmlzaENvbnN0cnVjdGlvbigpOworCisgICAg
Ly8gQWN0aXZlRE9NT2JqZWN0CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICJQYXltZW50UmVzcG9uc2UiOyB9CisgICAgYm9vbCBjYW5T
dXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzdG9w
KCkgZmluYWw7CiAKICAgICAvLyBFdmVudFRhcmdldAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNl
IGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gUGF5bWVudFJlc3Bv
bnNlRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KICAg
ICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZF
dmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCi0gICAgUmVmPFBheW1lbnRSZXF1ZXN0
PiBtX3JlcXVlc3Q7CisgICAgZW51bSBjbGFzcyBTdGF0ZSB7CisgICAgICAgIENyZWF0ZWQsCisg
ICAgICAgIENvbXBsZXRlZCwKKyAgICAgICAgU3RvcHBlZCwKKyAgICB9OworCisgICAgV2Vha1B0
cjxQYXltZW50UmVxdWVzdD4gbV9yZXF1ZXN0OwogICAgIFN0cmluZyBtX3JlcXVlc3RJZDsKICAg
ICBTdHJpbmcgbV9tZXRob2ROYW1lOwogICAgIERldGFpbHNGdW5jdGlvbiBtX2RldGFpbHNGdW5j
dGlvbjsKQEAgLTEwMCw3ICsxMTksOSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3BheWVyTmFt
ZTsKICAgICBTdHJpbmcgbV9wYXllckVtYWlsOwogICAgIFN0cmluZyBtX3BheWVyUGhvbmU7Ci0g
ICAgYm9vbCBtX2NvbXBsZXRlQ2FsbGVkIHsgZmFsc2UgfTsKKyAgICBTdGF0ZSBtX3N0YXRlIHsg
U3RhdGU6OkNyZWF0ZWQgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPj4gbV9yZXRyeVByb21pc2U7CisgICAgUmVmUHRyPFBlbmRpbmdBY3Rpdml0eTxQYXltZW50
UmVzcG9uc2U+PiBtX3BlbmRpbmdBY3Rpdml0eTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBkZjk2ZjhiNjExMTEyYWZk
NDUyNWY5OTA4Y2NhZWNlMmM2NTlhZjU3Li44ZWZhZjJhYzdiMmM3Yzc2YTI4Y2NkMjE2YjA2NzBk
YmY1MmI0NWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC01NDcsOSAr
NTQ3LDkgQEAgSW50ZXJuYWxzOjpJbnRlcm5hbHMoRG9jdW1lbnQmIGRvY3VtZW50KQogCiAjaWYg
RU5BQkxFKEFQUExFX1BBWSkKICAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7Ci0g
ICAgaWYgKGZyYW1lICYmIGZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgbV9tb2NrUGF5bWVudENv
b3JkaW5hdG9yID0gbmV3IE1vY2tQYXltZW50Q29vcmRpbmF0b3IoKmZyYW1lLT5wYWdlKCkpOwot
ICAgICAgICBmcmFtZS0+cGFnZSgpLT5zZXRQYXltZW50Q29vcmRpbmF0b3Ioc3RkOjptYWtlX3Vu
aXF1ZTxQYXltZW50Q29vcmRpbmF0b3I+KCptX21vY2tQYXltZW50Q29vcmRpbmF0b3IpKTsKKyAg
ICBpZiAoZnJhbWUgJiYgZnJhbWUtPnBhZ2UoKSAmJiBmcmFtZS0+aXNNYWluRnJhbWUoKSkgewor
ICAgICAgICBhdXRvIG1vY2tQYXltZW50Q29vcmRpbmF0b3IgPSBuZXcgTW9ja1BheW1lbnRDb29y
ZGluYXRvcigqZnJhbWUtPnBhZ2UoKSk7CisgICAgICAgIGZyYW1lLT5wYWdlKCktPnNldFBheW1l
bnRDb29yZGluYXRvcihzdGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRDb29yZGluYXRvcj4oKm1vY2tQ
YXltZW50Q29vcmRpbmF0b3IpKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTQ2MjUsOSArNDYyNSw5
IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCi1Nb2NrUGF5bWVudENvb3JkaW5hdG9yJiBJbnRlcm5h
bHM6Om1vY2tQYXltZW50Q29vcmRpbmF0b3IoKSBjb25zdAorTW9ja1BheW1lbnRDb29yZGluYXRv
ciYgSW50ZXJuYWxzOjptb2NrUGF5bWVudENvb3JkaW5hdG9yKERvY3VtZW50JiBkb2N1bWVudCkK
IHsKLSAgICByZXR1cm4gKm1fbW9ja1BheW1lbnRDb29yZGluYXRvcjsKKyAgICByZXR1cm4gZG93
bmNhc3Q8TW9ja1BheW1lbnRDb29yZGluYXRvcj4oZG9jdW1lbnQuZnJhbWUoKS0+cGFnZSgpLT5w
YXltZW50Q29vcmRpbmF0b3IoKS5jbGllbnQoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKaW5kZXggNjJmOWE0NjEzYzgwMjQzNTg2ODdkNGZmMjQzOWJlOTRkZmRi
MTBmNy4uMDFkNGRkNjliYTlhOTYxZTNjOTZjOGE5NzI4YmEwNmQ4MWMzNjFiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC02OTgsNyArNjk4LDcgQEAgcHVibGljOgogI2VuZGlm
CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQotICAgIE1vY2tQYXltZW50Q29vcmRpbmF0b3ImIG1v
Y2tQYXltZW50Q29vcmRpbmF0b3IoKSBjb25zdDsKKyAgICBNb2NrUGF5bWVudENvb3JkaW5hdG9y
JiBtb2NrUGF5bWVudENvb3JkaW5hdG9yKERvY3VtZW50Jik7CiAjZW5kaWYKIAogICAgIGJvb2wg
aXNTeXN0ZW1QcmV2aWV3TGluayhFbGVtZW50JikgY29uc3Q7CkBAIC03OTUsMTAgKzc5NSw2IEBA
IHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yU3R1YkZyb250ZW5kPiBt
X2luc3BlY3RvckZyb250ZW5kOwogICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBt
X2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247Ci0KLSNpZiBFTkFCTEUoQVBQTEVfUEFZKQotICAgIE1v
Y2tQYXltZW50Q29vcmRpbmF0b3IqIG1fbW9ja1BheW1lbnRDb29yZGluYXRvciB7IG51bGxwdHIg
fTsKLSNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCmluZGV4IDE5ZGNmMjFmYmUyZTBhOGVlMjk5YjY0Yzg2NWNkNGNjOGZi
NzkwNDkuLjc3MzA0MmViZjI1OWJmMDljY2VlOWQ0NzE2MTkwMTc4ZjZjODJhYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTY4Miw3ICs2ODIsNyBAQCBlbnVtIENvbXBv
c2l0aW5nUG9saWN5IHsKICAgICBbQ29uZGl0aW9uYWw9U0VSVklDRV9XT1JLRVJdIHZvaWQgdGVy
bWluYXRlU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VyIHdvcmtlcik7CiAgICAgW0NvbmRpdGlv
bmFsPVNFUlZJQ0VfV09SS0VSXSBib29sZWFuIGhhc1NlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCk7
CiAKLSAgICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZXSByZWFkb25seSBhdHRyaWJ1dGUgTW9ja1Bh
eW1lbnRDb29yZGluYXRvciBtb2NrUGF5bWVudENvb3JkaW5hdG9yOworICAgIFtDYWxsV2l0aD1E
b2N1bWVudCwgQ29uZGl0aW9uYWw9QVBQTEVfUEFZXSByZWFkb25seSBhdHRyaWJ1dGUgTW9ja1Bh
eW1lbnRDb29yZGluYXRvciBtb2NrUGF5bWVudENvb3JkaW5hdG9yOwogCiAgICAgYm9vbGVhbiBp
c1N5c3RlbVByZXZpZXdMaW5rKEVsZW1lbnQgZWxlbWVudCk7CiAgICAgYm9vbGVhbiBpc1N5c3Rl
bVByZXZpZXdJbWFnZShFbGVtZW50IGVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggZTliNGM5YWExMDM3OTk2MDAz
NzMyYjlhODZjYjM0OTg1YTg4YTJiOS4uZGVmZDM2OTVhMzEzNmQ4MzYzZTkyM2QxOTZjZDJhNDFj
OTg0YjljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENv
b3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29v
cmRpbmF0b3IuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQog
CisjaW5jbHVkZSAiQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuaCIKICNpbmNsdWRlICJN
b2NrUGF5bWVudC5oIgogI2luY2x1ZGUgIk1vY2tQYXltZW50Q29udGFjdC5oIgogI2luY2x1ZGUg
Ik1vY2tQYXltZW50TWV0aG9kLmgiCkBAIC0yMDksNyArMjEwLDEwIEBAIHZvaWQgTW9ja1BheW1l
bnRDb29yZGluYXRvcjo6Y2FuY2VsUGF5bWVudCgpCiAKIHZvaWQgTW9ja1BheW1lbnRDb29yZGlu
YXRvcjo6Y29tcGxldGVQYXltZW50U2Vzc2lvbihzdGQ6Om9wdGlvbmFsPFBheW1lbnRBdXRob3Jp
emF0aW9uUmVzdWx0PiYmIHJlc3VsdCkKIHsKLSAgICBpZiAoIWlzRmluYWxTdGF0ZVJlc3VsdChy
ZXN1bHQpKQorICAgIGF1dG8gaXNGaW5hbFN0YXRlID0gaXNGaW5hbFN0YXRlUmVzdWx0KHJlc3Vs
dCk7CisgICAgbV9lcnJvcnMgPSBXVEZNb3ZlKHJlc3VsdC0+ZXJyb3JzKTsKKworICAgIGlmICgh
aXNGaW5hbFN0YXRlKQogICAgICAgICByZXR1cm47CiAKICAgICArK2hpZGVDb3VudDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5oIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggNDc3
MTA3Yzc3YTE4NGQ4MmY3MjdjYTc4MTAwMzI2YjJkNGE2MGI1Yy4uNDNmOGI2YzQ2NDIyODdlMGM4
MjQ4OWEwZGZjZjE2M2RlYjU3MDBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrUGF5bWVudENvb3JkaW5hdG9yLmgKQEAgLTc0LDYgKzc0LDggQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNhbmNlbFBheW1lbnRTZXNzaW9uKCkgZmluYWw7CiAgICAgdm9pZCBwYXltZW50Q29vcmRp
bmF0b3JEZXN0cm95ZWQoKSBmaW5hbDsKIAorICAgIGJvb2wgaXNNb2NrUGF5bWVudENvb3JkaW5h
dG9yKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgdm9pZCB1cGRhdGVUb3Rh
bEFuZExpbmVJdGVtcyhjb25zdCBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6VG90YWxB
bmRMaW5lSXRlbXMmKTsKIAogICAgIFBhZ2UmIG1fcGFnZTsKQEAgLTg3LDQgKzg5LDggQEAgcHJp
dmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKFdlYkNvcmU6Ok1vY2tQYXltZW50Q29vcmRpbmF0b3IpCisgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb29yZGluYXRvckNsaWVudCYgcGF5bWVudENv
b3JkaW5hdG9yQ2xpZW50KSB7IHJldHVybiBwYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaXNNb2Nr
UGF5bWVudENvb3JkaW5hdG9yKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwog
I2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZWFjMTEwZDczZDdmNzZmMjY2ZGQw
Mjg5ODkxMWViNTdjOTNmODZmMy4uYjAzNDU1MTdiMWZiMmU1ZTY0Yjk5MDFiNTcyNGM4MDRmYjI1
YmY4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE4LTEwLTMwICBBbmR5IEVzdGVzICA8YWVz
dGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbUGF5bWVudCBSZXF1ZXN0XSBJbXBsZW1lbnQgUGF5
bWVudFJlc3BvbnNlLnJldHJ5KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MDk4NQorCisgICAgICAgIFJldmlld2VkIGJ5IERhbmllbCBCYXRlcwor
CisgICAgICAgICogaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LWFkZHJlc3MtYXR0
cmlidXRlcy1hbmQtdG9KU09OLW1ldGhvZC5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvdGVz
dHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1jb21wbGV0ZS1tZXRob2QuaHR0cHMu
aHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9u
c2UtbWV0aG9kTmFtZS1hdHRyaWJ1dGUuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcGF5ZXJFbWFpbC1hdHRyaWJ1dGUuaHR0
cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVz
cG9uc2UtcGF5ZXJOYW1lLWF0dHJpYnV0ZS5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvdGVz
dHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1wYXllclBob25lLWF0dHJpYnV0ZS5o
dHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1y
ZXNwb25zZS1yZWplY3RzLWlmLW5vdC1hY3RpdmUuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcmVq
ZWN0cy1pZi1ub3QtYWN0aXZlLmh0dHBzLmh0bWw6IENvcGllZCBmcm9tCisgICAgICAgIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcGF5bWVudC1yZXF1ZXN0L3BheW1lbnQtcmVzcG9u
c2UvcmVqZWN0c19pZl9ub3RfYWN0aXZlLW1hbnVhbC5odHRwcy5odG1sCisgICAgICAgIGFuZCBh
dXRvbWF0ZWQgdXNpbmcgaW50ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0b3IuCisgICAgICAg
ICogaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJldHJ5LW1ldGhv
ZC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcGF5bWVu
dHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1yZXRyeS1tZXRob2QuaHR0cHMuaHRtbDogQ29waWVk
IGZyb20KKyAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wYXltZW50LXJl
cXVlc3QvcGF5bWVudC1yZXNwb25zZS9yZXRyeS1tZXRob2QtbWFudWFsLmh0dHBzLmh0bWwKKyAg
ICAgICAgYW5kIGF1dG9tYXRlZCB1c2luZyBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRv
ci4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3Jlc291cmNlcy9oZWxwZXJz
LmpzOgorICAgICAgICAoc2V0VXBBbmRTbW9rZVRlc3QpOgorCiAyMDE4LTEwLTI4ICBBbnRvaW5l
IFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBBbmltYXRpb25zXSBJ
bXBsZW1lbnQgdGhlIHVwZGF0ZSBhbmltYXRpb25zIGFuZCBzZW5kIGV2ZW50cyBwcm9jZWR1cmUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVu
dC1hZGRyZXNzLWF0dHJpYnV0ZXMtYW5kLXRvSlNPTi1tZXRob2QuaHR0cHMuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1hZGRyZXNzLWF0dHJpYnV0
ZXMtYW5kLXRvSlNPTi1tZXRob2QuaHR0cHMuaHRtbAppbmRleCA2ZjgyOTNhYjk0NjQyZTVjNDVl
YzYyZDNmODk0MWRjNWJlNWI0Mjc1Li43MGE0MzNmNmJkODU2ZDY3NjYyZjdlODRmYmE1ZWY5NGE1
Y2Q1OWM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0
L3BheW1lbnQtYWRkcmVzcy1hdHRyaWJ1dGVzLWFuZC10b0pTT04tbWV0aG9kLmh0dHBzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LWFkZHJl
c3MtYXR0cmlidXRlcy1hbmQtdG9KU09OLW1ldGhvZC5odHRwcy5odG1sCkBAIC0xMCw2ICsxMCw3
IEBACiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlcnMuanMiPjwvc2NyaXB0PgogPHNjcmlw
dD4KK3NldFVwQW5kU21va2VUZXN0KHsgZXhwbGljaXRfZG9uZTogdHJ1ZSwgZXhwbGljaXRfdGlt
ZW91dDogdHJ1ZSB9KTsKIGNvbnN0IG9wdGlvbnMgPSB7IHJlcXVlc3RTaGlwcGluZzogdHJ1ZSB9
OwogZnVuY3Rpb24gcnVuVGVzdChidXR0b24sIGV4cGVjdGVkID0ge30pIHsKICAgYnV0dG9uLmRp
c2FibGVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVu
dHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1jb21wbGV0ZS1tZXRob2QuaHR0cHMuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1jb21w
bGV0ZS1tZXRob2QuaHR0cHMuaHRtbAppbmRleCA1ZTY4OWVjYTQzZDFlMzBjZDQzZjZhYzZmMDFk
MWQyYTVhOTZlZjhkLi40YjRkNjE0N2E1YjA5NjE1ZDEwYTZiNzU0NWIxZmNhMzZkZjFlNDk2IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQt
cmVzcG9uc2UtY29tcGxldGUtbWV0aG9kLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLWNvbXBsZXRlLW1ldGhvZC5o
dHRwcy5odG1sCkBAIC0xMCw2ICsxMCw3IEBACiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBl
cnMuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KK3NldFVwQW5kU21va2VUZXN0KHsgZXhwbGljaXRf
ZG9uZTogdHJ1ZSwgZXhwbGljaXRfdGltZW91dDogdHJ1ZSB9KTsKIGFzeW5jIGZ1bmN0aW9uIHJ1
blRlc3QoeyBjb21wbGV0ZVdpdGg6IHJlc3VsdCB9LCBidXR0b24pIHsKICAgYnV0dG9uLmRpc2Fi
bGVkID0gdHJ1ZTsKICAgY29uc3QgeyByZXNwb25zZSwgcmVxdWVzdCB9ID0gYXdhaXQgZ2V0UGF5
bWVudFJlcXVlc3RSZXNwb25zZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLW1ldGhvZE5hbWUtYXR0cmlidXRlLmh0
dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQt
cmVzcG9uc2UtbWV0aG9kTmFtZS1hdHRyaWJ1dGUuaHR0cHMuaHRtbAppbmRleCAxM2M2ZmRkOWQw
MDBmNDYzMmE1Y2Q1NjBlZTEzNjY1ZGM4NjVjYzJiLi44NTFmNGVkNDJkZTVjOTlkMzJkMzIzYmYy
OGNhMTk1ZWQ4MzVjMGY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1l
bnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtbWV0aG9kTmFtZS1hdHRyaWJ1dGUuaHR0cHMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVz
cG9uc2UtbWV0aG9kTmFtZS1hdHRyaWJ1dGUuaHR0cHMuaHRtbApAQCAtOSw2ICs5LDkgQEAKIDxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCXNldFVwQW5k
U21va2VUZXN0KHsgZXhwbGljaXRfZG9uZTogdHJ1ZSwgZXhwbGljaXRfdGltZW91dDogdHJ1ZSB9
KTsKKzwvc2NyaXB0PgogPG9sPgogICA8bGk+CiAgICAgPGJ1dHRvbiBpZD0iYnV0dG9uIj4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1y
ZXNwb25zZS1wYXllckVtYWlsLWF0dHJpYnV0ZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXBheWVyRW1haWwtYXR0cmli
dXRlLmh0dHBzLmh0bWwKaW5kZXggNGRhOTM1Y2M0ZjA1ZGZhMTExMDViNDI0NmVmYzU3ZWRiZDlk
NWJhNy4uOTdjNWU5ZGNhMWM0M2YxYjhmNzk3OWZlYjNkOTNlOTk1Y2Q4NWU2OSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNl
LXBheWVyRW1haWwtYXR0cmlidXRlLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXBheWVyRW1haWwtYXR0cmlidXRl
Lmh0dHBzLmh0bWwKQEAgLTksNiArOSw5IEBACiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2hlbHBlcnMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgc2V0VXBBbmRTbW9rZVRlc3QoeyBleHBsaWNpdF9kb25l
OiB0cnVlLCBleHBsaWNpdF90aW1lb3V0OiB0cnVlIH0pOworPC9zY3JpcHQ+CiA8b2w+CiAgIDxs
aT4KICAgICA8YnV0dG9uIGlkPSJidXR0b24xIj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1wYXllck5hbWUtYXR0cmli
dXRlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3Bh
eW1lbnQtcmVzcG9uc2UtcGF5ZXJOYW1lLWF0dHJpYnV0ZS5odHRwcy5odG1sCmluZGV4IGZkMTc5
M2E5MWE0Y2EyOGM4ZTA3YjJkOWM4OWYwZjJjMzA3OWI5NmIuLjZjNTY5NWE0OWExZmFhZjliN2U3
NTg5ODhmY2M2M2I2NzVkOWE1YjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1wYXllck5hbWUtYXR0cmlidXRlLmh0dHBz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50
LXJlc3BvbnNlLXBheWVyTmFtZS1hdHRyaWJ1dGUuaHR0cHMuaHRtbApAQCAtOSw2ICs5LDkgQEAK
IDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICBzZXRV
cEFuZFNtb2tlVGVzdCh7IGV4cGxpY2l0X2RvbmU6IHRydWUsIGV4cGxpY2l0X3RpbWVvdXQ6IHRy
dWUgfSk7Cis8L3NjcmlwdD4KIDxvbD4KICAgPGxpPgogICAgIDxidXR0b24gaWQ9ImJ1dHRvbjEi
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXlt
ZW50LXJlc3BvbnNlLXBheWVyUGhvbmUtYXR0cmlidXRlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcGF5ZXJQaG9uZS1h
dHRyaWJ1dGUuaHR0cHMuaHRtbAppbmRleCBjYmRjZjZjZmFkNGJkZTQ3MWFhOTAwMTg2ZWE4MGY5
ZWU5ODM5OTI4Li5hMDZjMTBmOTE3ZTBmYWFiMzY1YzJlMGVhNGMyNTQyZThiMzc5NWVmIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVz
cG9uc2UtcGF5ZXJQaG9uZS1hdHRyaWJ1dGUuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcGF5ZXJQaG9uZS1hdHRy
aWJ1dGUuaHR0cHMuaHRtbApAQCAtOSw2ICs5LDkgQEAKIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaGVscGVy
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICBzZXRVcEFuZFNtb2tlVGVzdCh7IGV4cGxpY2l0
X2RvbmU6IHRydWUsIGV4cGxpY2l0X3RpbWVvdXQ6IHRydWUgfSk7Cis8L3NjcmlwdD4KIDxvbD4K
ICAgPGxpPgogICAgIDxidXR0b24gaWQ9ImJ1dHRvbjEiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJlamVjdHMtaWYt
bm90LWFjdGl2ZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Bh
eW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcmVqZWN0cy1pZi1ub3QtYWN0aXZlLmh0dHBz
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2ZmYjNjZDY5OTJlY2M4MzY1NzhiZDMzNjUyNmZk
MDVkODQxYjNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXlt
ZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJlamVjdHMtaWYtbm90LWFjdGl2ZS5odHRwcy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKK1BBU1MgcmV0cnkoKSdzIHJldHJ5UHJvbWlz
ZSByZWplY3RzIGlmIGRvY3VtZW50IGlzIG5vdCBmdWxseSBhY3RpdmUuIAorUEFTUyByZXRyeSgp
J3MgcmV0cnlQcm9taXNlIHJlamVjdHMgaWYgdGhlIGRvY3VtZW50IGJlY29tZXMgbm90IGZ1bGx5
IGFjdGl2ZS4gCitQQVNTIGNvbXBsZXRlKCkncyBjb21wbGV0ZVByb21pc2UgcmVqZWN0cyBpZiBk
b2N1bWVudCBpcyBub3QgZnVsbHkgYWN0aXZlLiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJlamVjdHMtaWYtbm90
LWFjdGl2ZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVz
dC9wYXltZW50LXJlc3BvbnNlLXJlamVjdHMtaWYtbm90LWFjdGl2ZS5odHRwcy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjMyZDEwMWY2NjVkM2Y3OWFiMDZiNjE3ODhmODI5YzQwOWUwYmNjMjkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQt
cmVzcG9uc2UtcmVqZWN0cy1pZi1ub3QtYWN0aXZlLmh0dHBzLmh0bWwKQEAgLTAsMCArMSwxMTYg
QEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD11dGYtOD4KKzxsaW5rIHJlbD0iaGVs
cCIgaHJlZj0iaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3BheW1lbnQtcmVxdWVzdC8jcmV0cnktbWV0
aG9kIj4KKzx0aXRsZT5QYXltZW50UmVzcG9uc2UgcmV0cnkoKSByZWplY3RzIGlmIGRvYyBpcyBu
b3QgZnVsbHkgYWN0aXZlPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMv
dWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3BheW1lbnQt
cmVxdWVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vdzNjLmdpdGh1
Yi5pby9wYXltZW50LXJlcXVlc3QvI2RvbS1wYXltZW50cmVzcG9uc2UtcmV0cnkiPgorPGJvZHk+
Cis8c2NyaXB0Pgorc2V0dXAoeyBleHBsaWNpdF9kb25lOiB0cnVlLCBleHBsaWNpdF90aW1lb3V0
OiB0cnVlIH0pOworY29uc3QgdmFsaWRNZXRob2RzID0gT2JqZWN0LmZyZWV6ZShbdmFsaWRQYXlt
ZW50TWV0aG9kKCldKTsKK2NvbnN0IHZhbGlkQW1vdW50ID0gT2JqZWN0LmZyZWV6ZSh7CisgIGN1
cnJlbmN5OiAiVVNEIiwKKyAgdmFsdWU6ICI1LjAwIiwKK30pOworY29uc3QgdmFsaWRUb3RhbCA9
IE9iamVjdC5mcmVlemUoeworICBsYWJlbDogIlRvdGFsIGR1ZSIsCisgIGFtb3VudDogdmFsaWRB
bW91bnQsCit9KTsKK2NvbnN0IHZhbGlkRGV0YWlscyA9IE9iamVjdC5mcmVlemUoeworICB0b3Rh
bDogdmFsaWRUb3RhbCwKK30pOworCitmdW5jdGlvbiBnZXRMb2FkZWRQYXltZW50UmVzcG9uc2Uo
aWZyYW1lLCB1cmwpIHsKKyAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgIGlm
cmFtZS5hZGRFdmVudExpc3RlbmVyKAorICAgICAgImxvYWQiLAorICAgICAgKCkgPT4geworICAg
ICAgICBjb25zdCB7IFBheW1lbnRSZXF1ZXN0IH0gPSBpZnJhbWUuY29udGVudFdpbmRvdzsKKyAg
ICAgICAgYWN0aXZhdGVUaGVuKGFzeW5jICgpID0+IHsKKyAgICAgICAgICBjb25zdCByZXF1ZXN0
ID0gbmV3IFBheW1lbnRSZXF1ZXN0KHZhbGlkTWV0aG9kcywgdmFsaWREZXRhaWxzKTsKKyAgICAg
ICAgICBjb25zdCBhY2NlcHRQcm9taXNlID0gcmVxdWVzdC5zaG93KCk7CisgICAgICAgICAgaW50
ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0b3IuYWNjZXB0UGF5bWVudCgpOworICAgICAgICAg
IGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYWNjZXB0UHJvbWlzZTsKKyAgICAgICAgICByZXNvbHZl
KHJlc3BvbnNlKTsKKyAgICAgICAgfSk7CisgICAgICB9LAorICAgICAgeyBvbmNlOiB0cnVlIH0K
KyAgICApOworICAgIGlmcmFtZS5zcmMgPSB1cmw7CisgIH0pOworfQorCitmdW5jdGlvbiBtZXRo
b2ROb3RGdWxseUFjdGl2ZSh0ZXh0LCBtZXRob2ROYW1lLCAuLi5hcmdzKSB7CisgIHByb21pc2Vf
dGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJpZnJhbWUiKTsKKyAgICBpZnJhbWUuYWxsb3dQYXltZW50UmVxdWVzdCA9IHRydWU7Cisg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOworCisgICAgLy8gV2UgZmlyc3Qg
Z290IHRvIHBhZ2UxLmh0bWwsIGdyYWIgYSBQYXltZW50UmVzcG9uc2UgaW5zdGFuY2UuCisgICAg
Y29uc3QgcmVzcG9uc2UgPSBhd2FpdCBnZXRMb2FkZWRQYXltZW50UmVzcG9uc2UoCisgICAgICBp
ZnJhbWUsCisgICAgICAiL3BheW1lbnQtcmVxdWVzdC9yZXNvdXJjZXMvcGFnZTEuaHRtbCIKKyAg
ICApOworICAgIC8vIFdlIG5hdmlnYXRlIHRoZSBpZnJhbWUgYWdhaW4sIHB1dHRpbmcgcmVzcG9u
c2UncyBkb2N1bWVudCBpbnRvIGFuIGluYWN0aXZlIHN0YXRlLgorICAgIGF3YWl0IG5ldyBQcm9t
aXNlKHJlc29sdmUgPT4geworICAgICAgaWZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBy
ZXNvbHZlKTsKKyAgICAgIGlmcmFtZS5zcmMgPSAiL3BheW1lbnQtcmVxdWVzdC9yZXNvdXJjZXMv
cGFnZTIuaHRtbCI7CisgICAgfSk7CisgICAgLy8gTm93LCByZXNwb25zZSdzIHJlbGV2YW50IGds
b2JhbCBvYmplY3QncyBkb2N1bWVudCBpcyBubyBsb25nZXIgYWN0aXZlLgorICAgIC8vIFNvLCBw
cm9taXNlIG5lZWRzIHRvIHJlamVjdCBhcHByb3ByaWF0ZWx5LgorICAgIGNvbnN0IHByb21pc2Ug
PSByZXNwb25zZVttZXRob2ROYW1lXSguLi5hcmdzKTsKKyAgICBhd2FpdCBwcm9taXNlX3JlamVj
dHMoCisgICAgICB0LAorICAgICAgIkFib3J0RXJyb3IiLAorICAgICAgcHJvbWlzZSwKKyAgICAg
ICJJbmFjdGl2ZSBkb2N1bWVudCwgc28gbXVzdCB0aHJvdyBBYm9ydEVycm9yIgorICAgICk7Cisg
ICAgLy8gV2UgYXJlIGRvbmUsIHNvIGNsZWFuIHVwLgorICAgIGlmcmFtZS5yZW1vdmUoKTsKKyAg
fSwgdGV4dCk7Cit9CisKK2Z1bmN0aW9uIG1ldGhvZEJlY29tZXNOb3RGdWxseUFjdGl2ZSh0ZXh0
LCBtZXRob2ROYW1lLCAuLi5hcmdzKSB7CisgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAg
ICBjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBp
ZnJhbWUuYWxsb3dQYXltZW50UmVxdWVzdCA9IHRydWU7CisgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChpZnJhbWUpOworCisgICAgLy8gV2UgZmlyc3QgZ290IHRvIHBhZ2UxLmh0bWwsIGdy
YWIgYSBQYXltZW50UmVzcG9uc2UgaW5zdGFuY2UuCisgICAgY29uc3QgcmVzcG9uc2UgPSBhd2Fp
dCBnZXRMb2FkZWRQYXltZW50UmVzcG9uc2UoCisgICAgICBpZnJhbWUsCisgICAgICAiL3BheW1l
bnQtcmVxdWVzdC9yZXNvdXJjZXMvcGFnZTEuaHRtbCIKKyAgICApOworCisgICAgLy8gd2UgZ2V0
IHRoZSBwcm9taXNlIGZyb20gcGFnZTEuaHRtbCwgd2hpbGUgaXQncyBhY3RpdmUhCisgICAgY29u
c3QgcHJvbWlzZSA9IHJlc3BvbnNlW21ldGhvZE5hbWVdKC4uLmFyZ3MpOworCisgICAgLy8gV2Ug
bmF2aWdhdGUgdGhlIGlmcmFtZSBhZ2FpbiwgcHV0dGluZyByZXNwb25zZSdzIGRvY3VtZW50IGlu
dG8gYW4gaW5hY3RpdmUgc3RhdGUuCisgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7
CisgICAgICBpZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHJlc29sdmUpOworICAgICAg
aWZyYW1lLnNyYyA9ICIvcGF5bWVudC1yZXF1ZXN0L3Jlc291cmNlcy9wYWdlMi5odG1sIjsKKyAg
ICB9KTsKKworICAgIC8vIE5vdywgcmVzcG9uc2UncyByZWxldmFudCBnbG9iYWwgb2JqZWN0J3Mg
ZG9jdW1lbnQgaXMgbm8gbG9uZ2VyIGFjdGl2ZS4KKyAgICAvLyBTbywgcHJvbWlzZSBuZWVkcyB0
byByZWplY3QgYXBwcm9wcmlhdGVseS4KKyAgICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisgICAg
ICB0LAorICAgICAgIkFib3J0RXJyb3IiLAorICAgICAgcHJvbWlzZSwKKyAgICAgICJJbmFjdGl2
ZSBkb2N1bWVudCwgc28gbXVzdCB0aHJvdyBBYm9ydEVycm9yIgorICAgICk7CisgICAgLy8gV2Ug
YXJlIGRvbmUsIHNvIGNsZWFuIHVwLgorICAgIGlmcmFtZS5yZW1vdmUoKTsKKyAgfSwgdGV4dCk7
Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4geworICBh
d2FpdCBtZXRob2ROb3RGdWxseUFjdGl2ZSgicmV0cnkoKSdzIHJldHJ5UHJvbWlzZSByZWplY3Rz
IGlmIGRvY3VtZW50IGlzIG5vdCBmdWxseSBhY3RpdmUuIiwgJ3JldHJ5Jywge30pOworICBhd2Fp
dCBtZXRob2RCZWNvbWVzTm90RnVsbHlBY3RpdmUoInJldHJ5KCkncyByZXRyeVByb21pc2UgcmVq
ZWN0cyBpZiB0aGUgZG9jdW1lbnQgYmVjb21lcyBub3QgZnVsbHkgYWN0aXZlLiIsICdyZXRyeScs
IHt9KTsKKyAgYXdhaXQgbWV0aG9kTm90RnVsbHlBY3RpdmUoImNvbXBsZXRlKCkncyBjb21wbGV0
ZVByb21pc2UgcmVqZWN0cyBpZiBkb2N1bWVudCBpcyBub3QgZnVsbHkgYWN0aXZlLiIsICdjb21w
bGV0ZScsICdzdWNjZXNzJyk7CisgIGRvbmUoKTsKK30pOworPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2Ut
cmV0cnktbWV0aG9kLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1yZXRyeS1tZXRob2QuaHR0cHMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjYwNWYzZDViNTI5NDI4ZWU3MzA2NGE3MzdkMDFiOWFhYTRmYTU2
NjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1
ZXN0L3BheW1lbnQtcmVzcG9uc2UtcmV0cnktbWV0aG9kLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEzIEBACisKK1BBU1MgQ2FuIGNvbnN0cnVjdCBhIHBheW1lbnQgcmVxdWVzdCAoc21v
a2UgdGVzdCkuIAorUEFTUyBQYXltZW50UmVzcG9uc2UucHJvdG90eXBlIG11c3QgaGF2ZSBhIHJl
dHJ5KCkgZnVuY3Rpb24gKHNtb2tlIHRlc3QpLiAKK1BBU1MgQSBjb21wbGV0ZWQgcGF5bWVudCBy
ZXF1ZXN0IGNhbm5vdCBiZSByZXRyaWVkLiAKK1BBU1MgQ2FsbGluZyByZXRyeSgpIG1vcmUgdGhh
biBvbmNlIHlpZWxkIGEgcmVqZWN0ZWQgcHJvbWlzZSwgYnV0IHRoZSByZXRyeVByb21pc2UgcmVz
b2x2ZXMgaW5kZXBlbmRlbnRseS4gCitQQVNTIENhbGxpbmcgY29tcGxldGUoKSB3aGlsZSBhIHJl
dHJ5KCkgaXMgaW4gcHJvZ3Jlc3MgcmVzdWx0cyBpbiBhbiBJbnZhbGlkU3RhdGVFcnJvci4gCitQ
QVNTIFRyeWluZyB0byBhYm9ydCgpIHZpYSBQYXltZW50UmVxdWVzdCBpcyBub3QgcG9zc2libGUu
IAorUEFTUyBJdCdzIHBvc3NpYmxlIHRvIHJldHJ5KCkgbXVsdGlwbGUgdGltZXMgYW5kIGV2ZW50
dWFsbHkgY29tcGxldGUoKS4gQWZ0ZXIgY29tcGxldGUoKSwgaG93ZXZlciwgcmV0cnkoKSByZWpl
Y3RzIHdpdGggYW4gSW52YWxpZFN0YXRlRXJyb3IuIAorUEFTUyBUaGUgdXNlciBhYm9ydGluZyBy
ZXRyeWluZyBhIHBheW1lbnQgY2F1c2VzIHRoZSByZXRyeVByb21pc2UgdG8gcmVqZWN0IHdpdGgg
QWJvcnRFcnJvci4gQWJvcnRpbmcgYSBwYXltZW50IGlzIGNhdXNlcyBpdCBjb21wbGV0ZS4gCitQ
QVNTIFdoZW4gcmV0cnlpbmcsIHRoZSB1c2VyIGlzIHNob3duIGVycm9yIGZpZWxkcyB0byBmaXgu
IAorUEFTUyBXaGVuICJhYm9ydCB0aGUgdXBkYXRlIiBvY2N1cnMgYmVjYXVzZSBvZiBhbiB1cGRh
dGUgZXJyb3IsIHRoZSBgcmV0cnlQcm9taXNlYCBpcyByZWplY3RlZCBhbmQgcmVzcG9uc2UuW1tj
b21wbGV0ZV1dIGJlY29tZXMgdHJ1ZS4gCitQQVNTIENhbGxpbmcgcmV0cnkoKSBtdWx0aXBsZSB0
aW1lcyBpcyBhbHdheXMgYSBuZXcgb2JqZWN0LiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJldHJ5LW1ldGhvZC5o
dHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50
LXJlc3BvbnNlLXJldHJ5LW1ldGhvZC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhYmI1YmY3OTk4
MzAyYzY0NzJlNTk5YmEyOWJiZDg5NjkwNjgwZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcmV0cnktbWV0
aG9kLmh0dHBzLmh0bWwKQEAgLTAsMCArMSwxODggQEAKKzwhZG9jdHlwZSBodG1sPgorPG1ldGEg
Y2hhcnNldD0idXRmOCI+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vdzNjLmdpdGh1
Yi5pby9wYXltZW50LXJlcXVlc3QvI2RvbS1wYXltZW50cmVzcG9uc2UtcmV0cnkiPgorPHRpdGxl
PgorICBQYXltZW50UmVzcG9uc2UucHJvdG90eXBlLnJldHJ5KCkgbWV0aG9kCis8L3RpdGxlPgor
PHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvcGF5bWVudC1yZXF1ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICBzZXRVcEFu
ZFNtb2tlVGVzdCh7IGV4cGxpY2l0X3RpbWVvdXQ6IHRydWUgfSk7Cis8L3NjcmlwdD4KKzxib2R5
PgorPHNjcmlwdD4KK3Rlc3QoKCkgPT4geworICBhc3NlcnRfdHJ1ZSgKKyAgICAicmV0cnkiIGlu
IFBheW1lbnRSZXNwb25zZS5wcm90b3R5cGUsCisgICAgInJldHJ5IG11c3QgYmUgaW4gcHJvdG90
eXBlIgorICApOworICBhc3NlcnRfdHJ1ZSgKKyAgICBQYXltZW50UmVzcG9uc2UucHJvdG90eXBl
LnJldHJ5IGluc3RhbmNlb2YgRnVuY3Rpb24sCisgICAgInJldHJ5IG11c3QgYmUgYSBmdW5jdGlv
biIKKyAgKTsKK30sICJQYXltZW50UmVzcG9uc2UucHJvdG90eXBlIG11c3QgaGF2ZSBhIHJldHJ5
KCkgZnVuY3Rpb24gKHNtb2tlIHRlc3QpLiIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7
CisgIGNvbnN0IHsgcmVzcG9uc2UgfSA9IGF3YWl0IGdldFBheW1lbnRSZXF1ZXN0UmVzcG9uc2Uo
KTsKKyAgLy8gc2V0cyByZXNwb25zZS5bW2NvbXBsZXRlXV0gdG8gdHJ1ZS4KKyAgYXdhaXQgcmVz
cG9uc2UuY29tcGxldGUoInN1Y2Nlc3MiKTsKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0cygKKyAg
ICB0LAorICAgICJJbnZhbGlkU3RhdGVFcnJvciIsCisgICAgcmVzcG9uc2UucmV0cnkoe30pLAor
ICAgICJyZXNwb25zZS5bW2NvbXBsZXRlXV0gaXMgdHJ1ZSwgc28gcmVqZWN0cyB3aXRoIEludmFs
aWRTdGF0ZUVycm9yLiIKKyAgKTsKK30sICJBIGNvbXBsZXRlZCBwYXltZW50IHJlcXVlc3QgY2Fu
bm90IGJlIHJldHJpZWQuIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgY29uc3Qg
eyByZXNwb25zZSB9ID0gYXdhaXQgZ2V0UGF5bWVudFJlcXVlc3RSZXNwb25zZSgpOworICBjb25z
dCByZXRyeVByb21pc2UgPSByZXNwb25zZS5yZXRyeSh7fSk7CisgIGF3YWl0IHByb21pc2VfcmVq
ZWN0cygKKyAgICB0LAorICAgICJJbnZhbGlkU3RhdGVFcnJvciIsCisgICAgcmVzcG9uc2UucmV0
cnkoe30pLAorICAgICJDYWxsaW5nIHJldHJ5KCkgYWdhaW4gcmVqZWN0cyB3aXRoIGFuIEludmFs
aWRTdGF0ZUVycm9yIgorICApOworICBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRvci5h
Y2NlcHRQYXltZW50KCk7CisgIGF3YWl0IHJldHJ5UHJvbWlzZTsKKyAgYXdhaXQgcmVzcG9uc2Uu
Y29tcGxldGUoInN1Y2Nlc3MiKTsKK30sICJDYWxsaW5nIHJldHJ5KCkgbW9yZSB0aGFuIG9uY2Ug
eWllbGQgYSByZWplY3RlZCBwcm9taXNlLCBidXQgdGhlIHJldHJ5UHJvbWlzZSByZXNvbHZlcyBp
bmRlcGVuZGVudGx5LiIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIGNvbnN0IHsg
cmVzcG9uc2UgfSA9IGF3YWl0IGdldFBheW1lbnRSZXF1ZXN0UmVzcG9uc2UoKTsKKyAgY29uc3Qg
cmV0cnlQcm9taXNlID0gcmVzcG9uc2UucmV0cnkoe30pOworICBhd2FpdCBwcm9taXNlX3JlamVj
dHMoCisgICAgdCwKKyAgICAiSW52YWxpZFN0YXRlRXJyb3IiLAorICAgIHJlc3BvbnNlLmNvbXBs
ZXRlKCJzdWNjZXNzIiksCisgICAgIkNhbGxpbmcgY29tcGxldGUoKSB3aGlsZSByZXRyeWluZyBy
ZWplY3RzIHdpdGggYW4gSW52YWxpZFN0YXRlRXJyb3IiCisgICk7CisgIGludGVybmFscy5tb2Nr
UGF5bWVudENvb3JkaW5hdG9yLmFjY2VwdFBheW1lbnQoKTsKKyAgYXdhaXQgcmV0cnlQcm9taXNl
OworICBhd2FpdCByZXNwb25zZS5jb21wbGV0ZSgic3VjY2VzcyIpOworfSwgIkNhbGxpbmcgY29t
cGxldGUoKSB3aGlsZSBhIHJldHJ5KCkgaXMgaW4gcHJvZ3Jlc3MgcmVzdWx0cyBpbiBhbiBJbnZh
bGlkU3RhdGVFcnJvci4iKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICBjb25zdCB7
IHJlc3BvbnNlLCByZXF1ZXN0IH0gPSBhd2FpdCBnZXRQYXltZW50UmVxdWVzdFJlc3BvbnNlKCk7
CisgIGNvbnN0IHJldHJ5UHJvbWlzZSA9IHJlc3BvbnNlLnJldHJ5KHt9KTsKKyAgYXdhaXQgcHJv
bWlzZV9yZWplY3RzKAorICAgIHQsCisgICAgIkludmFsaWRTdGF0ZUVycm9yIiwKKyAgICByZXF1
ZXN0LmFib3J0KCksCisgICAgIkNhbGxpbmcgcmVxdWVzdC5hYm9ydCgpIHdoaWxlIHJldHJ5aW5n
IHJlamVjdHMgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvciIKKyAgKTsKKyAgaW50ZXJuYWxzLm1v
Y2tQYXltZW50Q29vcmRpbmF0b3IuYWNjZXB0UGF5bWVudCgpOworICBhd2FpdCByZXRyeVByb21p
c2U7CisgIGF3YWl0IHJlc3BvbnNlLmNvbXBsZXRlKCJzdWNjZXNzIik7Cit9LCAiVHJ5aW5nIHRv
IGFib3J0KCkgdmlhIFBheW1lbnRSZXF1ZXN0IGlzIG5vdCBwb3NzaWJsZS4iKTsKKworcHJvbWlz
ZV90ZXN0KGFzeW5jIHQgPT4geworICBjb25zdCB7IHJlc3BvbnNlIH0gPSBhd2FpdCBnZXRQYXlt
ZW50UmVxdWVzdFJlc3BvbnNlKCk7CisgIHZhciBwcm9taXNlID0gcmVzcG9uc2UucmV0cnkoe30p
OworICBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRvci5hY2NlcHRQYXltZW50KCk7Cisg
IGFzc2VydF9lcXVhbHMoCisgICAgYXdhaXQgcHJvbWlzZSwKKyAgICB1bmRlZmluZWQsCisgICAg
IkV4cGVjdGVkIHVuZGVmaW5lZCBhcyB0aGUgcmVzb2x2ZSB2YWx1ZSIKKyAgKTsKKyAgcHJvbWlz
ZSA9IHJlc3BvbnNlLnJldHJ5KHt9KTsKKyAgaW50ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0
b3IuYWNjZXB0UGF5bWVudCgpOworICBhc3NlcnRfZXF1YWxzKAorICAgIGF3YWl0IHByb21pc2Us
CisgICAgdW5kZWZpbmVkLAorICAgICJFeHBlY3RlZCB1bmRlZmluZWQgYXMgdGhlIHJlc29sdmUg
dmFsdWUiCisgICk7CisgIGF3YWl0IHJlc3BvbnNlLmNvbXBsZXRlKCJzdWNjZXNzIik7CisgIGF3
YWl0IHByb21pc2VfcmVqZWN0cygKKyAgICB0LAorICAgICJJbnZhbGlkU3RhdGVFcnJvciIsCisg
ICAgcmVzcG9uc2UucmV0cnkoe30pLAorICAgICJDYWxsaW5nIHJldHJ5KCkgYWZ0ZXIgY29tcGxl
dGUoKSByZWplY3RzIHdpdGggYSBJbnZhbGlkU3RhdGVFcnJvciIKKyAgKTsKK30sICJJdCdzIHBv
c3NpYmxlIHRvIHJldHJ5KCkgbXVsdGlwbGUgdGltZXMgYW5kIGV2ZW50dWFsbHkgY29tcGxldGUo
KS4gQWZ0ZXIgY29tcGxldGUoKSwgaG93ZXZlciwgcmV0cnkoKSByZWplY3RzIHdpdGggYW4gSW52
YWxpZFN0YXRlRXJyb3IuIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgY29uc3Qg
eyByZXNwb25zZSB9ID0gYXdhaXQgZ2V0UGF5bWVudFJlcXVlc3RSZXNwb25zZSgpOworICB2YXIg
cHJvbWlzZSA9IHJlc3BvbnNlLnJldHJ5KHt9KTsKKyAgaW50ZXJuYWxzLm1vY2tQYXltZW50Q29v
cmRpbmF0b3IuY2FuY2VsUGF5bWVudCgpOworICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisgICAg
dCwKKyAgICAiQWJvcnRFcnJvciIsCisgICAgcHJvbWlzZSwKKyAgICAiVGhlIHVzZXIgYWJvcnRp
bmcgYSByZXRyeSByZWplY3RzIHdpdGggYSBBYm9ydEVycm9yIgorICApOworICBhd2FpdCBwcm9t
aXNlX3JlamVjdHMoCisgICAgdCwKKyAgICAiSW52YWxpZFN0YXRlRXJyb3IiLAorICAgIHJlc3Bv
bnNlLnJldHJ5KHt9KSwKKyAgICAiQWZ0ZXIgdGhlIHVzZXIgYWJvcnRzLCByZXNwb25zZSBbW2Nv
bXBsZXRlXV0gaXMgdHJ1ZSBzbyByZXRyeSgpIG11c3QgcmVqZWN0IHdpdGggSW52YWxpZFN0YXRl
RXJyb3IiCisgICk7CisgIGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgICB0LAorICAgICJJbnZh
bGlkU3RhdGVFcnJvciIsCisgICAgcmVzcG9uc2UuY29tcGxldGUoInN1Y2Nlc3MiKSwKKyAgICAi
QWZ0ZXIgdGhlIHVzZXIgYWJvcnRzLCByZXNwb25zZSBbW2NvbXBsZXRlXV0gaXMgdHJ1ZSwgc28g
Y29tcGxldGUoKSByZWplY3RzIHdpdGggYSBJbnZhbGlkU3RhdGVFcnJvciIKKyAgKTsKK30sICJU
aGUgdXNlciBhYm9ydGluZyByZXRyeWluZyBhIHBheW1lbnQgY2F1c2VzIHRoZSByZXRyeVByb21p
c2UgdG8gcmVqZWN0IHdpdGggQWJvcnRFcnJvci4gQWJvcnRpbmcgYSBwYXltZW50IGlzIGNhdXNl
cyBpdCBjb21wbGV0ZS4iKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICBjb25zdCB7
IHJlc3BvbnNlLCByZXF1ZXN0IH0gPSBhd2FpdCBnZXRQYXltZW50UmVxdWVzdFJlc3BvbnNlKHsg
cmVxdWVzdFNoaXBwaW5nOiB0cnVlIH0pOworICBjb25zdCByZXRyeVByb21pc2UgPSByZXNwb25z
ZS5yZXRyeSh7CisgICAgc2hpcHBpbmdBZGRyZXNzOiB7IGNpdHk6ICJJbnZhbGlkIGNpdHkiLCBh
ZGRyZXNzTGluZTogIkludmFsaWQgYWRkcmVzcyBsaW5lIiB9LAorICB9KTsKKyAgY29uc3QgZXJy
b3JzID0gaW50ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0b3IuZXJyb3JzOworICBhc3NlcnRf
ZXF1YWxzKGVycm9ycy5sZW5ndGgsIDIsICJNdXN0IGhhdmUgdHdvIGVycm9ycyIpOworICBhc3Nl
cnRfZXF1YWxzKGVycm9yc1swXS5jb2RlLCAic2hpcHBpbmdDb250YWN0SW52YWxpZCIsICJNdXN0
IGJlIGEgJ3NoaXBwaW5nQ29udGFjdEludmFsaWQnIGVycm9yIik7CisgIGFzc2VydF9lcXVhbHMo
ZXJyb3JzWzBdLm1lc3NhZ2UsICJJbnZhbGlkIGFkZHJlc3MgbGluZSIsICJFcnJvciBtZXNzYWdl
IG11c3QgbWF0Y2giKTsKKyAgYXNzZXJ0X2VxdWFscyhlcnJvcnNbMF0uY29udGFjdEZpZWxkLCAi
YWRkcmVzc0xpbmVzIiwgIkNvbnRhY3QgZmllbGQgbXVzdCBtYXRjaCIpOworICBhc3NlcnRfZXF1
YWxzKGVycm9yc1sxXS5jb2RlLCAic2hpcHBpbmdDb250YWN0SW52YWxpZCIsICJNdXN0IGJlIGEg
J3NoaXBwaW5nQ29udGFjdEludmFsaWQnIGVycm9yIik7CisgIGFzc2VydF9lcXVhbHMoZXJyb3Jz
WzFdLm1lc3NhZ2UsICJJbnZhbGlkIGNpdHkiLCAiRXJyb3IgbWVzc2FnZSBtdXN0IG1hdGNoIik7
CisgIGFzc2VydF9lcXVhbHMoZXJyb3JzWzFdLmNvbnRhY3RGaWVsZCwgImxvY2FsaXR5IiwgIkNv
bnRhY3QgZmllbGQgbXVzdCBtYXRjaCIpOworICBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGlu
YXRvci5hY2NlcHRQYXltZW50KCk7CisgIGF3YWl0IHJldHJ5UHJvbWlzZTsKKyAgYXdhaXQgcmVz
cG9uc2UuY29tcGxldGUoInN1Y2Nlc3MiKTsKK30sICJXaGVuIHJldHJ5aW5nLCB0aGUgdXNlciBp
cyBzaG93biBlcnJvciBmaWVsZHMgdG8gZml4LiIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9
PiB7CisgIGNvbnN0IHsgcmVzcG9uc2UsIHJlcXVlc3QgfSA9IGF3YWl0IGdldFBheW1lbnRSZXF1
ZXN0UmVzcG9uc2UoeyByZXF1ZXN0U2hpcHBpbmc6IHRydWUgfSk7CisgIC8vIGNhdXNlcyAiYWJv
cnQgdGhlIHVwZGF0ZSIgdG8gcnVuCisgIGNvbnN0IHNoaXBwaW5nQ2hhbmdlZFByb21pc2UgPSBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICByZXF1ZXN0Lm9uc2hpcHBpbmdvcHRpb25jaGFu
Z2UgPSAoKSA9PiB7CisgICAgICBldmVudC51cGRhdGVXaXRoKHsgdG90YWw6IHsgYW1vdW50OiB7
IGN1cnJlbmN5OiAiVVNEIiwgdmFsdWU6ICJJTlZBTElEIiB9IH19KTsKKyAgICAgIHJlc29sdmUo
KTsKKyAgICB9OworICB9KTsKKyAgY29uc3QgcmV0cnlQcm9taXNlID0gcmVzcG9uc2UucmV0cnko
e30pOworICBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRvci5jaGFuZ2VTaGlwcGluZ09w
dGlvbigib3B0aW9uIik7CisgIGF3YWl0IHNoaXBwaW5nQ2hhbmdlZFByb21pc2U7CisgIGF3YWl0
IHByb21pc2VfcmVqZWN0cygKKyAgICB0LAorICAgIG5ldyBUeXBlRXJyb3IoKSwKKyAgICByZXRy
eVByb21pc2UsCisgICAgInJldHJ5KCkgYWJvcnRzIHdpdGggYSBUeXBlRXJyb3IsIGJlY2F1c2Ug
dG90YWxzJyB2YWx1ZSBpcyBpbnZhbGlkIgorICApOworICBhd2FpdCBwcm9taXNlX3JlamVjdHMo
CisgICAgdCwKKyAgICAiSW52YWxpZFN0YXRlRXJyb3IiLAorICAgIHJlc3BvbnNlLmNvbXBsZXRl
KCJzdWNjZXNzIiksCisgICAgIkFmdGVyIHRoZSB1c2VyIGFib3J0cywgcmVzcG9uc2UgW1tjb21w
bGV0ZV1dIGlzIHRydWUsIHNvIGNvbXBsZXRlKCkgcmVqZWN0cyB3aXRoIGEgSW52YWxpZFN0YXRl
RXJyb3IiCisgICk7Cit9LCAnV2hlbiAiYWJvcnQgdGhlIHVwZGF0ZSIgb2NjdXJzIGJlY2F1c2Ug
b2YgYW4gdXBkYXRlIGVycm9yLCB0aGUgYHJldHJ5UHJvbWlzZWAgaXMgcmVqZWN0ZWQgYW5kIHJl
c3BvbnNlLltbY29tcGxldGVdXSBiZWNvbWVzIHRydWUuJyk7CisKK3Byb21pc2VfdGVzdChhc3lu
YyB0ID0+IHsKKyAgY29uc3QgeyByZXNwb25zZSB9ID0gYXdhaXQgZ2V0UGF5bWVudFJlcXVlc3RS
ZXNwb25zZSgpOworICBjb25zdCByZXRyeVByb21pc2UgPSByZXNwb25zZS5yZXRyeSh7fSk7Cisg
IGNvbnN0IHByb21pc2VzID0gbmV3IFNldChbCisgICAgcmV0cnlQcm9taXNlLAorICAgIHJlc3Bv
bnNlLnJldHJ5KHt9KS5jYXRjaCgoKSA9PiB7fSksCisgICAgcmVzcG9uc2UucmV0cnkoe30pLmNh
dGNoKCgpID0+IHt9KSwKKyAgXSk7CisgIGFzc2VydF9lcXVhbHMocHJvbWlzZXMuc2l6ZSwgMywg
Ik11c3QgaGF2ZSB0aHJlZSB1bmlxdWUgb2JqZWN0cyIpOworICBpbnRlcm5hbHMubW9ja1BheW1l
bnRDb29yZGluYXRvci5hY2NlcHRQYXltZW50KCk7CisgIGF3YWl0IHJldHJ5UHJvbWlzZTsKKyAg
YXdhaXQgcmVzcG9uc2UuY29tcGxldGUoKTsKK30sICJDYWxsaW5nIHJldHJ5KCkgbXVsdGlwbGUg
dGltZXMgaXMgYWx3YXlzIGEgbmV3IG9iamVjdC4iKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9yZXNvdXJjZXMvaGVscGVycy5q
cyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcmVzb3VyY2VzL2hlbHBl
cnMuanMKaW5kZXggM2Y3MWIwMjZjODUxOWY1OTlkZWE1ZGI1OTNhNjc5YzE4OTQ4ZmNkMi4uNDdk
ZmEyY2E1OTcwNDQzZTNkY2MwZjExZmU1NjQ2YzcwN2Y1YjQ4YSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9yZXNvdXJjZXMvaGVscGVycy5qcworKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3Jlc291cmNlcy9oZWxwZXJz
LmpzCkBAIC0xLDUgKzEsMyBAQAotc2V0dXAoeyBleHBsaWNpdF9kb25lOiB0cnVlLCBleHBsaWNp
dF90aW1lb3V0OiB0cnVlIH0pOwotCiBjb25zdCB2YWxpZE1ldGhvZCA9IE9iamVjdC5mcmVlemUo
ewogICBzdXBwb3J0ZWRNZXRob2RzOiAiaHR0cHM6Ly9hcHBsZS5jb20vYXBwbGUtcGF5IiwKICAg
ZGF0YTogewpAQCAtMjIsMTggKzIwLDIzIEBAIGNvbnN0IHZhbGlkVG90YWwgPSBPYmplY3QuZnJl
ZXplKHsKICAgbGFiZWw6ICJWYWxpZCB0b3RhbCIsCiAgIGFtb3VudDogdmFsaWRBbW91bnQsCiB9
KTsKKwogY29uc3QgdmFsaWREZXRhaWxzID0gewogICB0b3RhbDogdmFsaWRUb3RhbCwKIH07CiAK
LXRlc3QoKCkgPT4gewotICB0cnkgewotICAgIG5ldyBQYXltZW50UmVxdWVzdCh2YWxpZE1ldGhv
ZHMsIHZhbGlkRGV0YWlscyk7Ci0gIH0gY2F0Y2ggKGVycikgewotICAgIGRvbmUoKTsKLSAgICB0
aHJvdyBlcnI7Ci0gIH0KLX0sICJDYW4gY29uc3RydWN0IGEgcGF5bWVudCByZXF1ZXN0IChzbW9r
ZSB0ZXN0KS4iKTsKK2Z1bmN0aW9uIHNldFVwQW5kU21va2VUZXN0KG9wdGlvbnMpCit7CisgIHNl
dHVwKG9wdGlvbnMpOworICB0ZXN0KCgpID0+IHsKKyAgICB0cnkgeworICAgICAgbmV3IFBheW1l
bnRSZXF1ZXN0KHZhbGlkTWV0aG9kcywgdmFsaWREZXRhaWxzKTsKKyAgICB9IGNhdGNoIChlcnIp
IHsKKyAgICAgIGRvbmUoKTsKKyAgICAgIHRocm93IGVycjsKKyAgICB9CisgIH0sICJDYW4gY29u
c3RydWN0IGEgcGF5bWVudCByZXF1ZXN0IChzbW9rZSB0ZXN0KS4iKTsKK30KIAogLyoqCiAgKiBQ
b3BzIHVwIGEgcGF5bWVudCBzaGVldCwgYWxsb3dpbmcgb3B0aW9ucyB0byBiZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>