<?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>165230</bug_id>
          
          <creation_ts>2016-11-30 16:36:12 -0800</creation_ts>
          <short_desc>Web Inspector: Some resources fetched via Fetch API do not have data</short_desc>
          <delta_ts>2016-12-09 14:13:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>165683</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>bburg</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mattbaker</cc>
    
    <cc>msaboff</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>saam</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1255053</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-11-30 16:36:12 -0800</bug_when>
    <thetext>Summary:
Some resources fetched via Fetch API do not have data

Steps to Reproduce:
1. fetch(&quot;data.json&quot;)
2. Select &quot;data.json&quot; in Resources tab
  =&gt; No data

Notes:
- We have existing InspectorInstrumentation methods to stash XHR data:
  InspectorInstrumentation::didReceiveXHRResponse
  InspectorInstrumentation::didFinishXHRLoading
- We likely need to do the same for Fetch
- How does EventSource fit into this as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255055</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-11-30 16:37:56 -0800</bug_when>
    <thetext>&lt;rdar://problem/29449220&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255200</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-12-01 03:49:27 -0800</bug_when>
    <thetext>&gt; Notes:
&gt; - We have existing InspectorInstrumentation methods to stash XHR data:
&gt;   InspectorInstrumentation::didReceiveXHRResponse
&gt;   InspectorInstrumentation::didFinishXHRLoading
&gt; - We likely need to do the same for Fetch

It would be great if we could remove those XHR specific APIs and use generic APIs at DocumentThreadableLoader level.
Inspector should be able to do specific processing (XHR, fetch) if needed based on the initiator.

&gt; - How does EventSource fit into this as well?

EventSource behaves a bit differently since data is long living.
That might require being able to show received data before the response is finished.
Is it already supported?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257031</commentid>
    <comment_count>3</comment_count>
      <attachid>296338</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-12-06 15:48:19 -0800</bug_when>
    <thetext>Created attachment 296338
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257034</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-12-06 15:48:32 -0800</bug_when>
    <thetext>*** Bug 165228 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257037</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-06 15:49:34 -0800</bug_when>
    <thetext>Attachment 296338 did not pass style-queue:


ERROR: Source/WebCore/platform/network/ResourceRequestBase.h:163:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 1 in 37 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>1257038</commentid>
    <comment_count>6</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-12-06 15:50:45 -0800</bug_when>
    <thetext>&gt; EventSource behaves a bit differently since data is long living.
&gt; That might require being able to show received data before the response is
&gt; finished.
&gt; Is it already supported?

Not supported yet. We should handle this when we start better handling streaming data (Web Sockets, Fetch, Media, Event Source). Bug 164890 tracks that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257202</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-12-06 23:35:39 -0800</bug_when>
    <thetext>I know the current patch is following xhr/inspector current pattern.

I would prefer though that we hook response inspector callback in DocumentThreadableLoader::didReceiveResponse if that is not too complex.
This could be limited to fetch requests using requester information to limit risk of breaking things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257481</commentid>
    <comment_count>8</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-12-07 17:14:47 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; I know the current patch is following xhr/inspector current pattern.
&gt; 
&gt; I would prefer though that we hook response inspector callback in
&gt; DocumentThreadableLoader::didReceiveResponse if that is not too complex.

Yes, I should be able to do this. Looking at it now.

But I still think we would want the new Requester Type on ResourceResponseBase so that we can know at willSendRequest time the type. As I learn more about how networking works we may be able to clean this up further.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257584</commentid>
    <comment_count>9</comment_count>
      <attachid>296477</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-12-07 20:51:33 -0800</bug_when>
    <thetext>Created attachment 296477
[PATCH] Proposed Fix

I think this should better match your expectations Youenn. Let me know if it doesn&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257588</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-07 20:53:59 -0800</bug_when>
    <thetext>Attachment 296477 did not pass style-queue:


ERROR: Source/WebCore/platform/network/ResourceRequestBase.h:163:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 1 in 34 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>1257589</commentid>
    <comment_count>11</comment_count>
      <attachid>296477</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-12-07 20:54:10 -0800</bug_when>
    <thetext>Comment on attachment 296477
[PATCH] Proposed Fix

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

&gt; Source/WebCore/inspector/InspectorInstrumentation.h:-863
&gt; -    if (cookie.isValid())
&gt; -        didReceiveResourceResponseImpl(cookie, identifier, loader, response, resourceLoader);

This check was unnecessary because it is done immediately inside didReceiveResourceResponseImpl which it calls unconditionally. Technically we can eliminate these functions but I&apos;ll do other cleanup later, I&apos;m investigating something related.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257947</commentid>
    <comment_count>12</comment_count>
      <attachid>296477</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-08 16:40:34 -0800</bug_when>
    <thetext>Comment on attachment 296477
[PATCH] Proposed Fix

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

&gt; Source/WebCore/inspector/InspectorNetworkAgent.cpp:459
&gt; +    if (initiator == cachedResourceRequestInitiators().fetch)
&gt; +        m_resourcesData-&gt;setResourceType(IdentifiersFactory::requestId(identifier), InspectorPageAgent::FetchResource);
&gt; +    else if (initiator == cachedResourceRequestInitiators().xmlhttprequest)

Should we do anything if both of these are false?  ASSERT_NOT_REACHED()?

&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:326
&gt;      case CachedResource::MainResource:
&gt;          return InspectorPageAgent::DocumentResource;
&gt; +    case CachedResource::MediaResource:
&gt; +    case CachedResource::RawResource: {
&gt; +        switch (cachedResource.resourceRequest().requester()) {
&gt; +        case ResourceRequest::Requester::Fetch:
&gt; +            return InspectorPageAgent::FetchResource;
&gt; +        case ResourceRequest::Requester::Main:
&gt; +            return InspectorPageAgent::DocumentResource;
&gt; +        default:
&gt; +            return InspectorPageAgent::XHRResource;
&gt; +        }
&gt; +    }

I don&apos;t understand why media resources should enter the switch statement that only returns fetch, document, or xhr.  Do we consider media resources to be xhr resources?  Can either of them be a main resource?  We already have a case for main resources in the parent switch statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258041</commentid>
    <comment_count>13</comment_count>
      <attachid>296477</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-12-08 19:55:08 -0800</bug_when>
    <thetext>Comment on attachment 296477
[PATCH] Proposed Fix

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

&gt;&gt; Source/WebCore/inspector/InspectorNetworkAgent.cpp:459
&gt;&gt; +    else if (initiator == cachedResourceRequestInitiators().xmlhttprequest)
&gt; 
&gt; Should we do anything if both of these are false?  ASSERT_NOT_REACHED()?

It is fine to not assert. We are only specializing ThreadableLoader loads for loads that have specific Inspector types (xhr, and fetch). We may have others in the future (such as event source).

&gt;&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:326
&gt;&gt; +    }
&gt; 
&gt; I don&apos;t understand why media resources should enter the switch statement that only returns fetch, document, or xhr.  Do we consider media resources to be xhr resources?  Can either of them be a main resource?  We already have a case for main resources in the parent switch statement.

The Media case is not changing here. Web Inspector still does not fully support media resources. Handling of CachedResource::Media was added by someone who did not understand Inspector code at a point where CachedResource::Media was split off of CachedResource::Raw so it was just made to copy CachedResource::Raw. Fixing Media resources is a separate issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258099</commentid>
    <comment_count>14</comment_count>
      <attachid>296477</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-09 00:12:41 -0800</bug_when>
    <thetext>Comment on attachment 296477
[PATCH] Proposed Fix

Ok, the rest of this code looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258101</commentid>
    <comment_count>15</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-12-09 00:24:20 -0800</bug_when>
    <thetext>This looks great to me as well!
Would you be able to add some tests with opaque or filtered responses?
For instance, fetch no-cors and cross origin URL. And another with filtered response headers?
We should expect inspector to show the whole data although the web app should not see it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258325</commentid>
    <comment_count>16</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-12-09 14:12:08 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; This looks great to me as well!
&gt; Would you be able to add some tests with opaque or filtered responses?
&gt; For instance, fetch no-cors and cross origin URL. And another with filtered
&gt; response headers?

Gladly! I&apos;ll start writing a lot more tests over on bug 165683. Which I&apos;ll start on now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258330</commentid>
    <comment_count>17</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-12-09 14:13:44 -0800</bug_when>
    <thetext>&lt;https://trac.webkit.org/changeset/209629&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296338</attachid>
            <date>2016-12-06 15:48:19 -0800</date>
            <delta_ts>2016-12-07 20:51:33 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>fetch-1.patch</filename>
            <type>text/plain</type>
            <size>50150</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMTQxZTNmLi5mOTJmOTYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTYtMTIt
MDYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBTb21lIHJlc291cmNlcyBmZXRjaGVkIHZpYSBGZXRjaCBBUEkgZG8gbm90IGhh
dmUgZGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY1MjMwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTQ0OTIyMD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9keS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9keS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNl
cy9kYXRhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvcmVzb3VyY2VzL2RhdGEuanNvbjogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YS5zdmc6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2RhdGEudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9lY2hvLnBocDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay94aHItcmVzcG9uc2Ut
Ym9keS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsveGhyLXJlc3BvbnNlLWJvZHkuaHRtbDogQWRkZWQuCisgICAgICAgIFRlc3RzIGZv
ciB2aWV3aW5nIGNvbnRlbnQgb2YgWEhSIGFuZCBGZXRjaCByZXF1ZXN0ZWQgcmVzb3VyY2VzCisg
ICAgICAgIHdpdGggZGlmZmVyZW50IGtpbmRzIG9mIGNvbnRlbnQuCisKIDIwMTYtMTItMDUgIFJ5
YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgTWFya2luZyBtZWRp
YS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvbWVkaWEtY29udHJvbGxlci9tZWRpYS1jb250cm9sbGVy
LXJlc2l6ZS5odG1sIGFzIGZsYWt5IG9uIG1hY09TLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9mZXRjaC1yZXNwb25zZS1ib2R5LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvZmV0Y2gtcmVz
cG9uc2UtYm9keS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMjE1YTRkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9keS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwzOSBAQAorVGVzdHMgZm9yIGdldHRpbmcgdGhlIGNvbnRlbnQgb2YgRmV0Y2ggcmVxdWVzdHMu
CisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRj
aAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoLlRl
eHQKK1BBU1M6IFJlc291cmNlIHNob3VsZCBiZSBGZXRjaCB0eXBlLgorUEFTUzogTUlNRVR5cGUg
c2hvdWxkIGJlICd0ZXh0L3BsYWluJy4KK1BBU1M6IFRleHQgY29udGVudCBzaG91bGQgbWF0Y2gg
ZGF0YS50eHQuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9k
eS5GZXRjaC5IVE1MCitQQVNTOiBSZXNvdXJjZSBzaG91bGQgYmUgRmV0Y2ggdHlwZS4KK1BBU1M6
IE1JTUVUeXBlIHNob3VsZCBiZSAndGV4dC9odG1sJy4KK1BBU1M6IFRleHQgY29udGVudCBzaG91
bGQgbWF0Y2ggZGF0YS5odG1sLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5nZXRS
ZXNwb25zZUJvZHkuRmV0Y2guSlNPTgorUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIEZldGNoIHR5
cGUuCitQQVNTOiBNSU1FVHlwZSBzaG91bGQgYmUgJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScu
CitQQVNTOiBKU09OIGNvbnRlbnQgc2hvdWxkIG1hdGNoIGRhdGEuanNvbi4KKworLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IE5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoLkpTT04yCitQQVNTOiBS
ZXNvdXJjZSBzaG91bGQgYmUgRmV0Y2ggdHlwZS4KK1BBU1M6IE1JTUVUeXBlIHNob3VsZCBiZSAn
YXBwbGljYXRpb24vanNvbicuCitQQVNTOiBKU09OIGNvbnRlbnQgc2hvdWxkIG1hdGNoIHNwZWNp
ZmllZCBjb250ZW50LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5nZXRSZXNwb25z
ZUJvZHkuRmV0Y2guSlNPTjMKK1BBU1M6IFJlc291cmNlIHNob3VsZCBiZSBGZXRjaCB0eXBlLgor
UEFTUzogTUlNRVR5cGUgc2hvdWxkIGJlICdhcHBsaWNhdGlvbi92bmQuYXBpK2pzb24nLgorUEFT
UzogSlNPTiBjb250ZW50IHNob3VsZCBtYXRjaCBzcGVjaWZpZWQgY29udGVudC4KKworLS0gUnVu
bmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoLlNWRworUEFTUzog
UmVzb3VyY2Ugc2hvdWxkIGJlIEZldGNoIHR5cGUuCitQQVNTOiBNSU1FVHlwZSBzaG91bGQgYmUg
J2ltYWdlL3N2Zyt4bWwnLgorUEFTUzogU1ZHIGNvbnRlbnQgc2hvdWxkIGJlIHRleHQuCisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5QTkcKK1BB
U1M6IFJlc291cmNlIHNob3VsZCBiZSBGZXRjaCB0eXBlLgorUEFTUzogTUlNRVR5cGUgc2hvdWxk
IGJlICdpbWFnZS9wbmcnLgorUEFTUzogSW1hZ2UgY29udGVudCBzaG91bGQgYmUgdGV4dC4KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9mZXRj
aC1yZXNwb25zZS1ib2R5Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2ZldGNoLXJlc3BvbnNlLWJvZHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5iMmQ2NzhlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9mZXRjaC1yZXNwb25zZS1ib2R5Lmh0bWwKQEAgLTAsMCAr
MSwxMzkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGNyZWF0ZUZldGNoRm9yVGV4dCgpIHsKKyAgICBm
ZXRjaCgicmVzb3VyY2VzL2RhdGEudHh0Iik7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUZldGNoRm9y
SFRNTCgpIHsKKyAgICBmZXRjaCgicmVzb3VyY2VzL2RhdGEuaHRtbCIpOworfQorCitmdW5jdGlv
biBjcmVhdGVGZXRjaEZvckpTT04oKSB7CisgICAgZmV0Y2goInJlc291cmNlcy9kYXRhLmpzb24i
KTsKK30KKworZnVuY3Rpb24gY3JlYXRlRmV0Y2hGb3JKU09OMigpIHsKKyAgICBmZXRjaChgcmVz
b3VyY2VzL2VjaG8ucGhwP21pbWV0eXBlPWFwcGxpY2F0aW9uL2pzb24mY29udGVudD17Impzb24i
OnRydWUsInZhbHVlIjo0Mn1gKTsKK30KKworZnVuY3Rpb24gY3JlYXRlRmV0Y2hGb3JKU09OMygp
IHsKKyAgICBmZXRjaChgcmVzb3VyY2VzL2VjaG8ucGhwP21pbWV0eXBlPWFwcGxpY2F0aW9uL3Zu
ZC5hcGklMkJqc29uJmNvbnRlbnQ9eyJqc29uIjp0cnVlLCJ2YWx1ZSI6OTk5fWApOworfQorCitm
dW5jdGlvbiBjcmVhdGVGZXRjaEZvclNWRygpIHsKKyAgICBmZXRjaCgicmVzb3VyY2VzL2RhdGEu
c3ZnIik7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUZldGNoRm9yUE5HKCkgeworICAgIGZldGNoKCIv
cmVzb3VyY2VzL3NxdWFyZTEwMC5wbmciKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
bGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJOZXR3b3JrLmdldFJl
c3BvbnNlQm9keS5GZXRjaCIpOworCisgICAgZnVuY3Rpb24gYWRkVGVzdENhc2Uoe25hbWUsIGRl
c2NyaXB0aW9uLCBleHByZXNzaW9uLCBjb250ZW50SGFuZGxlcn0pIHsKKyAgICAgICAgc3VpdGUu
YWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFtZSwgZGVzY3JpcHRpb24sCisgICAgICAgICAg
ICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXZhbHVhdGVJblBhZ2UoZXhwcmVzc2lvbik7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LkZyYW1lLmF3YWl0RXZlbnQoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlJlc291cmNlV2FzQWRk
ZWQpCisgICAgICAgICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4geworICAgICAgICAgICAg
ICAgICAgICAgICAgbGV0IHJlc291cmNlID0gZXZlbnQuZGF0YS5yZXNvdXJjZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmVzb3VyY2UudHlwZSwg
V2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuRmV0Y2gsICJSZXNvdXJjZSBzaG91bGQgYmUgRmV0
Y2ggdHlwZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvdXJjZS5yZXF1
ZXN0Q29udGVudCgpOworICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgICAg
ICAudGhlbihjb250ZW50SGFuZGxlcikKKyAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzb2x2
ZSwgcmVqZWN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgYWRk
VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2gu
VGV4dCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2V0IHRleHQvcGxhaW4gY29udGVudCBhcyB0
ZXh0LiIsCisgICAgICAgIGV4cHJlc3Npb246ICJjcmVhdGVGZXRjaEZvclRleHQoKSIsCisgICAg
ICAgIGNvbnRlbnRIYW5kbGVyKHtlcnJvciwgc291cmNlQ29kZSwgY29udGVudH0pIHsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5taW1lVHlwZSwgInRl
eHQvcGxhaW4iLCAiTUlNRVR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4iKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY29udGVudCwgIlBsYWluIHRleHQgcmVzb3Vy
Y2UuXG4iLCAiVGV4dCBjb250ZW50IHNob3VsZCBtYXRjaCBkYXRhLnR4dC4iKTsKKyAgICAgICAg
fQorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5n
ZXRSZXNwb25zZUJvZHkuRmV0Y2guSFRNTCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2V0IHRl
eHQvaHRtbCBjb250ZW50IGFzIHRleHQuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImNyZWF0ZUZl
dGNoRm9ySFRNTCgpIiwKKyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBzb3VyY2VDb2Rl
LCBjb250ZW50fSkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3Vy
Y2VDb2RlLm1pbWVUeXBlLCAidGV4dC9odG1sIiwgIk1JTUVUeXBlIHNob3VsZCBiZSAndGV4dC9o
dG1sJy4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY29udGVudCwg
IjxzcGFuPkhlbGxvIFdvcmxkPC9zcGFuPlxuIiwgIlRleHQgY29udGVudCBzaG91bGQgbWF0Y2gg
ZGF0YS5odG1sLiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5KU09OIiwKKyAgICAg
ICAgZGVzY3JpcHRpb246ICJHZXQgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIGNvbnRlbnQgYXMg
dGV4dC4iLAorICAgICAgICBleHByZXNzaW9uOiAiY3JlYXRlRmV0Y2hGb3JKU09OKCkiLAorICAg
ICAgICBjb250ZW50SGFuZGxlcih7ZXJyb3IsIHNvdXJjZUNvZGUsIGNvbnRlbnR9KSB7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUubWltZVR5cGUsICJh
cHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCAiTUlNRVR5cGUgc2hvdWxkIGJlICdhcHBsaWNhdGlv
bi9vY3RldC1zdHJlYW0nLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChjb250ZW50LCBgeyJqc29uIjogdHJ1ZSwgInZhbHVlIjogNDJ9XG5gLCAiSlNPTiBjb250ZW50
IHNob3VsZCBtYXRjaCBkYXRhLmpzb24uIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIGFk
ZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNo
LkpTT04yIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZXQgYXBwbGljYXRpb24vanNvbiBjb250
ZW50IGFzIHRleHQuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImNyZWF0ZUZldGNoRm9ySlNPTjIo
KSIsCisgICAgICAgIGNvbnRlbnRIYW5kbGVyKHtlcnJvciwgc291cmNlQ29kZSwgY29udGVudH0p
IHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5taW1l
VHlwZSwgImFwcGxpY2F0aW9uL2pzb24iLCAiTUlNRVR5cGUgc2hvdWxkIGJlICdhcHBsaWNhdGlv
bi9qc29uJy4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY29udGVu
dCwgYHsianNvbiI6dHJ1ZSwidmFsdWUiOjQyfWAsICJKU09OIGNvbnRlbnQgc2hvdWxkIG1hdGNo
IHNwZWNpZmllZCBjb250ZW50LiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhZGRUZXN0
Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5KU09O
MyIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2V0IGFyYml0cmFyeSAranNvbiBjb250ZW50IGFz
IHRleHQuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImNyZWF0ZUZldGNoRm9ySlNPTjMoKSIsCisg
ICAgICAgIGNvbnRlbnRIYW5kbGVyKHtlcnJvciwgc291cmNlQ29kZSwgY29udGVudH0pIHsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5taW1lVHlwZSwg
ImFwcGxpY2F0aW9uL3ZuZC5hcGkranNvbiIsICJNSU1FVHlwZSBzaG91bGQgYmUgJ2FwcGxpY2F0
aW9uL3ZuZC5hcGkranNvbicuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVx
dWFsKGNvbnRlbnQsIGB7Impzb24iOnRydWUsInZhbHVlIjo5OTl9YCwgIkpTT04gY29udGVudCBz
aG91bGQgbWF0Y2ggc3BlY2lmaWVkIGNvbnRlbnQuIik7CisgICAgICAgIH0KKyAgICB9KTsKKwor
ICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5
LkZldGNoLlNWRyIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2V0IGltYWdlL3N2Zyt4bWwgY29u
dGVudCBhcyB0ZXh0LiIsCisgICAgICAgIGV4cHJlc3Npb246ICJjcmVhdGVGZXRjaEZvclNWRygp
IiwKKyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBzb3VyY2VDb2RlLCBjb250ZW50fSkg
eworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLm1pbWVU
eXBlLCAiaW1hZ2Uvc3ZnK3htbCIsICJNSU1FVHlwZSBzaG91bGQgYmUgJ2ltYWdlL3N2Zyt4bWwn
LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjb250ZW50LAorYDw/
eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMCAyMDAiPgorICA8cmVjdCB3aWR0
aD0iMTAwJSIgaGVpZ2h0PSI1MCUiIGZpbGw9ImdyZWVuIi8+Cis8L3N2Zz4KK2AsICJTVkcgY29u
dGVudCBzaG91bGQgYmUgdGV4dC4iKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgYWRkVGVz
dENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2guUE5H
IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZXQgaW1hZ2UvcG5nIGNvbnRlbnQuIiwKKyAgICAg
ICAgZXhwcmVzc2lvbjogImNyZWF0ZUZldGNoRm9yUE5HKCkiLAorICAgICAgICBjb250ZW50SGFu
ZGxlcih7ZXJyb3IsIHNvdXJjZUNvZGUsIGNvbnRlbnR9KSB7CisgICAgICAgICAgICAvLyBGSVhN
RTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2NTQ5NT4gV2ViIEluc3BlY3RvcjogWEhSIC8gRmV0
Y2ggZm9yIG5vbi10ZXh0IGNvbnRlbnQgc2hvdWxkIG5vdCBzaG93IGdhcmJsZWQgdGV4dAorICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLm1pbWVUeXBlLCAi
aW1hZ2UvcG5nIiwgIk1JTUVUeXBlIHNob3VsZCBiZSAnaW1hZ2UvcG5nJy4iKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodHlwZW9mIGNvbnRlbnQsICJzdHJpbmciLCAi
SW1hZ2UgY29udGVudCBzaG91bGQgYmUgdGV4dC4iKTsKKyAgICAgICAgfQorICAgIH0pOworCisg
ICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3RzIGZvciBnZXR0aW5nIHRoZSBjb250
ZW50IG9mIEZldGNoIHJlcXVlc3RzLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2RhdGEu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Vz
L2RhdGEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTM2ODAyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9yZXNvdXJjZXMvZGF0YS5odG1sCkBAIC0wLDAgKzEgQEAKKzxzcGFuPkhlbGxvIFdvcmxkPC9z
cGFuPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9yZXNvdXJjZXMvZGF0YS5qc29uIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvZGF0YS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmU2MWZmYjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9kYXRhLmpzb24KQEAgLTAsMCArMSBAQAoreyJq
c29uIjogdHJ1ZSwgInZhbHVlIjogNDJ9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9kYXRhLnN2ZyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2RhdGEuc3ZnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3YTQwOTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9kYXRhLnN2ZwpA
QCAtMCwwICsxLDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMCAy
MDAiPgorICA8cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSI1MCUiIGZpbGw9ImdyZWVuIi8+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvcmVzb3VyY2VzL2RhdGEudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvZGF0YS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNTE2M2U4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2RhdGEudHh0CkBAIC0wLDAgKzEgQEAKK1BsYWlu
IHRleHQgcmVzb3VyY2UuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL3Jlc291cmNlcy9lY2hvLnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2VjaG8ucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjk4ZmIyOTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9lY2hvLnBocApAQCAtMCwwICsx
LDcgQEAKKzw/cGhwCiskbWltZVR5cGUgPSBpc3NldCgkX0dFVFsnbWltZXR5cGUnXSkgPyAkX0dF
VFsnbWltZXR5cGUnXSA6ICd0ZXh0L3BsYWluJzsKKyRjb250ZW50ID0gaXNzZXQoJF9HRVRbJ2Nv
bnRlbnQnXSkgPyAkX0dFVFsnY29udGVudCddIDogJ01pc3NpbmcgbWltZXR5cGUgb3IgY29udGVu
dCBxdWVyeSBwYXJhbWV0ZXIuJzsKKworaGVhZGVyKCJDb250ZW50LVR5cGU6ICRtaW1lVHlwZSIp
OworZWNobyAkY29udGVudDsKKz8+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL3hoci1yZXNwb25zZS1ib2R5LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsveGhyLXJlc3BvbnNlLWJvZHktZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlZjliYTQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L3hoci1yZXNwb25zZS1ib2R5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM5IEBACitUZXN0cyBm
b3IgZ2V0dGluZyB0aGUgY29udGVudCBvZiBYSFIgcmVxdWVzdHMuCisKKworPT0gUnVubmluZyB0
ZXN0IHN1aXRlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5YSFIKKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5YSFIuVGV4dAorUEFTUzogUmVzb3VyY2Ugc2hv
dWxkIGJlIFhIUiB0eXBlLgorUEFTUzogTUlNRVR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4K
K1BBU1M6IFRleHQgY29udGVudCBzaG91bGQgbWF0Y2ggZGF0YS50eHQuCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5YSFIuSFRNTAorUEFTUzogUmVzb3Vy
Y2Ugc2hvdWxkIGJlIFhIUiB0eXBlLgorUEFTUzogTUlNRVR5cGUgc2hvdWxkIGJlICd0ZXh0L2h0
bWwnLgorUEFTUzogVGV4dCBjb250ZW50IHNob3VsZCBtYXRjaCBkYXRhLmh0bWwuCisKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5YSFIuSlNPTgorUEFTUzog
UmVzb3VyY2Ugc2hvdWxkIGJlIFhIUiB0eXBlLgorUEFTUzogTUlNRVR5cGUgc2hvdWxkIGJlICdh
cHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLgorUEFTUzogSlNPTiBjb250ZW50IHNob3VsZCBtYXRj
aCBkYXRhLmpzb24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3BvbnNl
Qm9keS5YSFIuSlNPTjIKK1BBU1M6IFJlc291cmNlIHNob3VsZCBiZSBYSFIgdHlwZS4KK1BBU1M6
IE1JTUVUeXBlIHNob3VsZCBiZSAnYXBwbGljYXRpb24vanNvbicuCitQQVNTOiBKU09OIGNvbnRl
bnQgc2hvdWxkIG1hdGNoIHNwZWNpZmllZCBjb250ZW50LgorCistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogTmV0d29yay5nZXRSZXNwb25zZUJvZHkuWEhSLkpTT04zCitQQVNTOiBSZXNvdXJjZSBzaG91
bGQgYmUgWEhSIHR5cGUuCitQQVNTOiBNSU1FVHlwZSBzaG91bGQgYmUgJ2FwcGxpY2F0aW9uL3Zu
ZC5hcGkranNvbicuCitQQVNTOiBKU09OIGNvbnRlbnQgc2hvdWxkIG1hdGNoIHNwZWNpZmllZCBj
b250ZW50LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5nZXRSZXNwb25zZUJvZHku
WEhSLlNWRworUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIFhIUiB0eXBlLgorUEFTUzogTUlNRVR5
cGUgc2hvdWxkIGJlICdpbWFnZS9zdmcreG1sJy4KK1BBU1M6IFNWRyBjb250ZW50IHNob3VsZCBi
ZSB0ZXh0LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5nZXRSZXNwb25zZUJvZHku
WEhSLlBORworUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIFhIUiB0eXBlLgorUEFTUzogTUlNRVR5
cGUgc2hvdWxkIGJlICdpbWFnZS9wbmcnLgorUEFTUzogSW1hZ2UgY29udGVudCBzaG91bGQgYmUg
dGV4dC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay94aHItcmVzcG9uc2UtYm9keS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay94aHItcmVzcG9uc2UtYm9keS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjc4NWNmYjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3hoci1yZXNwb25zZS1ib2R5Lmh0bWwKQEAgLTAs
MCArMSwxNDUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHhockdldCh1cmwpIHsKKyAgICBsZXQgeGhy
ID0gbmV3IFhNTEh0dHBSZXF1ZXN0OworICAgIHhoci5vcGVuKCJHRVQiLCB1cmwsIHRydWUpOwor
ICAgIHhoci5zZW5kKCk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVhIUkZvclRleHQoKSB7CisgICAg
eGhyR2V0KCJyZXNvdXJjZXMvZGF0YS50eHQiKTsKK30KKworZnVuY3Rpb24gY3JlYXRlWEhSRm9y
SFRNTCgpIHsKKyAgICB4aHJHZXQoInJlc291cmNlcy9kYXRhLmh0bWwiKTsKK30KKworZnVuY3Rp
b24gY3JlYXRlWEhSRm9ySlNPTigpIHsKKyAgICB4aHJHZXQoInJlc291cmNlcy9kYXRhLmpzb24i
KTsKK30KKworZnVuY3Rpb24gY3JlYXRlWEhSRm9ySlNPTjIoKSB7CisgICAgeGhyR2V0KGByZXNv
dXJjZXMvZWNoby5waHA/bWltZXR5cGU9YXBwbGljYXRpb24vanNvbiZjb250ZW50PXsianNvbiI6
dHJ1ZSwidmFsdWUiOjQyfWApOworfQorCitmdW5jdGlvbiBjcmVhdGVYSFJGb3JKU09OMygpIHsK
KyAgICB4aHJHZXQoYHJlc291cmNlcy9lY2hvLnBocD9taW1ldHlwZT1hcHBsaWNhdGlvbi92bmQu
YXBpJTJCanNvbiZjb250ZW50PXsianNvbiI6dHJ1ZSwidmFsdWUiOjk5OX1gKTsKK30KKworZnVu
Y3Rpb24gY3JlYXRlWEhSRm9yU1ZHKCkgeworICAgIHhockdldCgicmVzb3VyY2VzL2RhdGEuc3Zn
Iik7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVhIUkZvclBORygpIHsKKyAgICB4aHJHZXQoIi9yZXNv
dXJjZXMvc3F1YXJlMTAwLnBuZyIpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQg
c3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsuZ2V0UmVzcG9u
c2VCb2R5LlhIUiIpOworCisgICAgZnVuY3Rpb24gYWRkVGVzdENhc2Uoe25hbWUsIGRlc2NyaXB0
aW9uLCBleHByZXNzaW9uLCBjb250ZW50SGFuZGxlcn0pIHsKKyAgICAgICAgc3VpdGUuYWRkVGVz
dENhc2UoeworICAgICAgICAgICAgbmFtZSwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICB0ZXN0
KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVh
dGVJblBhZ2UoZXhwcmVzc2lvbik7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkZyYW1l
LmF3YWl0RXZlbnQoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlJlc291cmNlV2FzQWRkZWQpCisg
ICAgICAgICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAg
ICAgICAgbGV0IHJlc291cmNlID0gZXZlbnQuZGF0YS5yZXNvdXJjZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmVzb3VyY2UudHlwZSwgV2ViSW5z
cGVjdG9yLlJlc291cmNlLlR5cGUuWEhSLCAiUmVzb3VyY2Ugc2hvdWxkIGJlIFhIUiB0eXBlLiIp
OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlLnJlcXVlc3RDb250ZW50
KCk7CisgICAgICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgICAgICAgIC50aGVuKGNv
bnRlbnRIYW5kbGVyKQorICAgICAgICAgICAgICAgICAgICAudGhlbihyZXNvbHZlLCByZWplY3Qp
OworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBhZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5YSFIuVGV4dCIsCisgICAg
ICAgIGRlc2NyaXB0aW9uOiAiR2V0IHRleHQvcGxhaW4gY29udGVudCBhcyB0ZXh0LiIsCisgICAg
ICAgIGV4cHJlc3Npb246ICJjcmVhdGVYSFJGb3JUZXh0KCkiLAorICAgICAgICBjb250ZW50SGFu
ZGxlcih7ZXJyb3IsIHNvdXJjZUNvZGUsIGNvbnRlbnR9KSB7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUubWltZVR5cGUsICJ0ZXh0L3BsYWluIiwgIk1J
TUVUeXBlIHNob3VsZCBiZSAndGV4dC9wbGFpbicuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEVxdWFsKGNvbnRlbnQsICJQbGFpbiB0ZXh0IHJlc291cmNlLlxuIiwgIlRleHQg
Y29udGVudCBzaG91bGQgbWF0Y2ggZGF0YS50eHQuIik7CisgICAgICAgIH0KKyAgICB9KTsKKwor
ICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5
LlhIUi5IVE1MIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZXQgdGV4dC9odG1sIGNvbnRlbnQg
YXMgdGV4dC4iLAorICAgICAgICBleHByZXNzaW9uOiAiY3JlYXRlWEhSRm9ySFRNTCgpIiwKKyAg
ICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBzb3VyY2VDb2RlLCBjb250ZW50fSkgeworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLm1pbWVUeXBlLCAi
dGV4dC9odG1sIiwgIk1JTUVUeXBlIHNob3VsZCBiZSAndGV4dC9odG1sJy4iKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY29udGVudCwgIjxzcGFuPkhlbGxvIFdvcmxk
PC9zcGFuPlxuIiwgIlRleHQgY29udGVudCBzaG91bGQgbWF0Y2ggZGF0YS5odG1sLiIpOworICAg
ICAgICB9CisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3
b3JrLmdldFJlc3BvbnNlQm9keS5YSFIuSlNPTiIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2V0
IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSBjb250ZW50IGFzIHRleHQuIiwKKyAgICAgICAgZXhw
cmVzc2lvbjogImNyZWF0ZVhIUkZvckpTT04oKSIsCisgICAgICAgIGNvbnRlbnRIYW5kbGVyKHtl
cnJvciwgc291cmNlQ29kZSwgY29udGVudH0pIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RXF1YWwoc291cmNlQ29kZS5taW1lVHlwZSwgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVh
bSIsICJNSU1FVHlwZSBzaG91bGQgYmUgJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScuIik7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNvbnRlbnQsIGB7Impzb24iOiB0
cnVlLCAidmFsdWUiOiA0Mn1cbmAsICJKU09OIGNvbnRlbnQgc2hvdWxkIG1hdGNoIGRhdGEuanNv
bi4iKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBu
YW1lOiAiTmV0d29yay5nZXRSZXNwb25zZUJvZHkuWEhSLkpTT04yIiwKKyAgICAgICAgZGVzY3Jp
cHRpb246ICJHZXQgYXBwbGljYXRpb24vanNvbiBjb250ZW50IGFzIHRleHQuIiwKKyAgICAgICAg
ZXhwcmVzc2lvbjogImNyZWF0ZVhIUkZvckpTT04yKCkiLAorICAgICAgICBjb250ZW50SGFuZGxl
cih7ZXJyb3IsIHNvdXJjZUNvZGUsIGNvbnRlbnR9KSB7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUubWltZVR5cGUsICJhcHBsaWNhdGlvbi9qc29uIiwg
Ik1JTUVUeXBlIHNob3VsZCBiZSAnYXBwbGljYXRpb24vanNvbicuIik7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNvbnRlbnQsIGB7Impzb24iOnRydWUsInZhbHVlIjo0
Mn1gLCAiSlNPTiBjb250ZW50IHNob3VsZCBtYXRjaCBzcGVjaWZpZWQgY29udGVudC4iKTsKKyAg
ICAgICAgfQorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0
d29yay5nZXRSZXNwb25zZUJvZHkuWEhSLkpTT04zIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJH
ZXQgYXJiaXRyYXJ5ICtqc29uIGNvbnRlbnQgYXMgdGV4dC4iLAorICAgICAgICBleHByZXNzaW9u
OiAiY3JlYXRlWEhSRm9ySlNPTjMoKSIsCisgICAgICAgIGNvbnRlbnRIYW5kbGVyKHtlcnJvciwg
c291cmNlQ29kZSwgY29udGVudH0pIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwoc291cmNlQ29kZS5taW1lVHlwZSwgImFwcGxpY2F0aW9uL3ZuZC5hcGkranNvbiIsICJN
SU1FVHlwZSBzaG91bGQgYmUgJ2FwcGxpY2F0aW9uL3ZuZC5hcGkranNvbicuIik7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNvbnRlbnQsIGB7Impzb24iOnRydWUsInZh
bHVlIjo5OTl9YCwgIkpTT04gY29udGVudCBzaG91bGQgbWF0Y2ggc3BlY2lmaWVkIGNvbnRlbnQu
Iik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogIk5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LlhIUi5TVkciLAorICAgICAgICBkZXNjcmlwdGlv
bjogIkdldCBpbWFnZS9zdmcreG1sIGNvbnRlbnQgYXMgdGV4dC4iLAorICAgICAgICBleHByZXNz
aW9uOiAiY3JlYXRlWEhSRm9yU1ZHKCkiLAorICAgICAgICBjb250ZW50SGFuZGxlcih7ZXJyb3Is
IHNvdXJjZUNvZGUsIGNvbnRlbnR9KSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dEVxdWFsKHNvdXJjZUNvZGUubWltZVR5cGUsICJpbWFnZS9zdmcreG1sIiwgIk1JTUVUeXBlIHNo
b3VsZCBiZSAnaW1hZ2Uvc3ZnK3htbCcuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdEVxdWFsKGNvbnRlbnQsCitgPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgi
Pz4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAg
MTAwIDIwMCI+CisgIDxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjUwJSIgZmlsbD0iZ3JlZW4i
Lz4KKzwvc3ZnPgorYCwgIlNWRyBjb250ZW50IHNob3VsZCBiZSB0ZXh0LiIpOworICAgICAgICB9
CisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmdl
dFJlc3BvbnNlQm9keS5YSFIuUE5HIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZXQgaW1hZ2Uv
cG5nIGNvbnRlbnQuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImNyZWF0ZVhIUkZvclBORygpIiwK
KyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBzb3VyY2VDb2RlLCBjb250ZW50fSkgewor
ICAgICAgICAgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNjU0OTU+IFdlYiBJ
bnNwZWN0b3I6IFhIUiAvIEZldGNoIGZvciBub24tdGV4dCBjb250ZW50IHNob3VsZCBub3Qgc2hv
dyBnYXJibGVkIHRleHQKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291
cmNlQ29kZS5taW1lVHlwZSwgImltYWdlL3BuZyIsICJNSU1FVHlwZSBzaG91bGQgYmUgJ2ltYWdl
L3BuZycuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHR5cGVvZiBj
b250ZW50LCAic3RyaW5nIiwgIkltYWdlIGNvbnRlbnQgc2hvdWxkIGJlIHRleHQuIik7CisgICAg
ICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0cyBm
b3IgZ2V0dGluZyB0aGUgY29udGVudCBvZiBYSFIgcmVxdWVzdHMuPC9wPgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNTI1MWFjNC4uODkyZmMzOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYtMTItMDYgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBT
b21lIHJlc291cmNlcyBmZXRjaGVkIHZpYSBGZXRjaCBBUEkgZG8gbm90IGhhdmUgZGF0YQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MjMwCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8yOTQ0OTIyMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm90b2NvbC9QYWdlLmpzb246Cisg
ICAgICAgIEFkZCBuZXcgRmV0Y2ggUGFnZS5SZXNvdXJjZVR5cGUuCisKIDIwMTYtMTItMDUgIEpv
c2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
KHIyMDg5ODUpOiBTYWZhcmlGb3JXZWJLaXREZXZlbG9wbWVudCBTeW1ib2wgTm90IEZvdW5kIGxv
b2tpbmcgZm9yIG1ldGhvZCB3aXRoIFdURjo6T3B0aW9uYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvUGFnZS5qc29uIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9QYWdlLmpzb24KaW5kZXggZTAwYjk1Yi4uMTRk
OTc5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2Nv
bC9QYWdlLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2Nv
bC9QYWdlLmpzb24KQEAgLTYsNyArNiw3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgICJpZCI6
ICJSZXNvdXJjZVR5cGUiLAogICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKLSAgICAgICAg
ICAgICJlbnVtIjogWyJEb2N1bWVudCIsICJTdHlsZXNoZWV0IiwgIkltYWdlIiwgIkZvbnQiLCAi
U2NyaXB0IiwgIlhIUiIsICJXZWJTb2NrZXQiLCAiT3RoZXIiXSwKKyAgICAgICAgICAgICJlbnVt
IjogWyJEb2N1bWVudCIsICJTdHlsZXNoZWV0IiwgIkltYWdlIiwgIkZvbnQiLCAiU2NyaXB0Iiwg
IlhIUiIsICJGZXRjaCIsICJXZWJTb2NrZXQiLCAiT3RoZXIiXSwKICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJSZXNvdXJjZSB0eXBlIGFzIGl0IHdhcyBwZXJjZWl2ZWQgYnkgdGhlIHJlbmRl
cmluZyBlbmdpbmUuIgogICAgICAgICB9LAogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODg0YzYw
Mi4uZDFkMWI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE2LTEyLTA2ICBKb3Nl
cGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogU29tZSByZXNvdXJjZXMgZmV0Y2hlZCB2aWEgRmV0Y2ggQVBJIGRvIG5vdCBoYXZlIGRhdGEK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTIzMAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjk0NDkyMjA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9keS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL3hoci1yZXNwb25zZS1ib2R5Lmh0bWwKKworICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oOgorICAgICAgICBEaXN0aW5ndWlz
aCBGZXRjaCByZXF1ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVxdWVzdDo6aW5pdGlhbGl6ZVdpdGgpOgor
ICAgICAgICBTZXQgdGhlIHJlcXVlc3RlciB0eXBlIGFzIEZldGNoLgorCisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlPd25lcjo6QmxvYkxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1
bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaExvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2VJbXBsKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKToK
KyAgICAgICAgSW5mb3JtIFdlYiBJbnNwZWN0b3IgdGhhdCB0aGlzIGlzIGZvciBzdXJlIGEgRmV0
Y2ggcmVxdWVzdCBpbgorICAgICAgICBjYXNlIGl0IHdhcyBub3Qga25vd24gZWFyaWxlci4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICBT
ZXQgdGhlIHJlc3BvbnNlIHR5cGUgZm9yIHRoaXMgcmVxdWVzdCBmb3IgY2VydGFpbiB0byBiZSBG
ZXRjaC4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aGFzVGV4dENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
WEhSVGV4dERlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50Ojpy
ZXNvdXJjZVR5cGVKc29uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6
Y2FjaGVkUmVzb3VyY2VUeXBlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZU90aGVyUmVzb3VyY2VUZXh0RGVjb2Rlcik6CisgICAgICAg
IE1ha2UgdGhlIFRleHQgRGVjb2RlcnMgZm9yIFhIUiBhbmQgb3RoZXIgbm9uLWJ1ZmZlcmVkIHJl
cXVlc3RzCisgICAgICAgIChsaWtlIEZldGNoKSBpZGVudGljYWwuIFRoaXMgbW92ZXMgdXMgZmly
c3QgdG8gaWRlbnRpY2FsIGJlaGF2aW9yLgorCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBv
cnRlZEpTT05NSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojpp
c1RleHRNSU1FVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oOgor
ICAgICAgICBCZXR0ZXIgZGV0ZWN0IGRpZmZlcmVudCBKU09OIGNvbnRlbnQgYmFzZWQgb24gTUlN
RSBUeXBlLgorCiAyMDE2LTEyLTA1ICBEYXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtDU1MgUGFyc2VyXSBGaXggYXNzZXJ0IHdoZW4gdW5rbm93biBwcm9wZXJ0aWVzIGFy
ZSBlbmNvdW50ZXJlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlPd25lci5jcHAKaW5kZXggMjg3Yzk3Ny4uNjk4ODgwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAog
I2luY2x1ZGUgIkZldGNoTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJKU0Jsb2IuaCIKICNp
bmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAKQEAgLTI1NSw4ICsyNTYsMTAgQEAgRmV0Y2hC
b2R5T3duZXI6OkJsb2JMb2FkZXI6OkJsb2JMb2FkZXIoRmV0Y2hCb2R5T3duZXImIG93bmVyKQog
ewogfQogCi12b2lkIEZldGNoQm9keU93bmVyOjpCbG9iTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit2b2lkIEZldGNoQm9keU93bmVy
OjpCbG9iTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKG93bmVyLnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgaWRlbnRpZmllcik7CisKICAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKSAhPSAyMDApCiAgICAgICAgIGRpZEZhaWwoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAppbmRleCA4OGU1ODhmLi5iZGI0NDIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCkBAIC04NSw3
ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIEJsb2JMb2FkZXIoRmV0Y2hCb2R5T3duZXImKTsK
IAogICAgICAgICAvLyBGZXRjaExvYWRlckNsaWVudCBBUEkKLSAgICAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOworICAgICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgZmluYWwgeyBvd25lci5ibG9iQ2h1bmsoZGF0YSwgc2l6
ZSk7IH0KICAgICAgICAgdm9pZCBkaWRGYWlsKCkgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkU3Vj
Y2VlZCgpIGZpbmFsIHsgb3duZXIuYmxvYkxvYWRpbmdTdWNjZWVkZWQoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcAppbmRleCBmYzRmZTdiLi40YmIw
NzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcApA
QCAtMTI3LDkgKzEyNyw5IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoTG9hZGVyOjpzdGFy
dFN0cmVhbWluZygpCiAgICAgcmV0dXJuIGZpcnN0Q2h1bms7CiB9CiAKLXZvaWQgRmV0Y2hMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKK3ZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQog
ewotICAgIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CisgICAgbV9jbGll
bnQuZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKIH0KIAogdm9pZCBG
ZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogdmFsdWUsIGludCBzaXplKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlckNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5oCmlu
ZGV4IDI5NWIxNmIuLmYwYzM1MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgRmV0Y2hMb2Fk
ZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkZldGNoTG9hZGVyQ2xpZW50KCkgeyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVk
IGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCmluZGV4IDUzMjY4MzMuLmI4NzlhN2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKQEAg
LTE1MSw2ICsxNTEsNyBAQCBFeGNlcHRpb25PcjxGZXRjaEhlYWRlcnMmPiBGZXRjaFJlcXVlc3Q6
OmluaXRpYWxpemVXaXRoKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdAogICAgIG1faW50ZXJuYWxS
ZXF1ZXN0Lm9wdGlvbnMuY3JlZGVudGlhbHMgPSBDcmVkZW50aWFsczo6T21pdDsKICAgICBtX2lu
dGVybmFsUmVxdWVzdC5yZWZlcnJlciA9IEFTQ0lJTGl0ZXJhbCgiY2xpZW50Iik7CiAgICAgbV9p
bnRlcm5hbFJlcXVlc3QucmVxdWVzdC5zZXRVUkwocmVxdWVzdFVSTCk7CisgICAgbV9pbnRlcm5h
bFJlcXVlc3QucmVxdWVzdC5zZXRSZXF1ZXN0ZXIoUmVzb3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6
OkZldGNoKTsKICAgICBtX2ludGVybmFsUmVxdWVzdC5yZXF1ZXN0LnNldEluaXRpYXRvcklkZW50
aWZpZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVy
KCkpOwogCiAgICAgcmV0dXJuIGluaXRpYWxpemVPcHRpb25zKGluaXQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggMzVmYjA4Yi4uMmFh
MGEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
Y3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1
ZGUgIkZldGNoUmVxdWVzdC5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVk
ZSAiSlNGZXRjaFJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgpAQCAtMTU5LDEwICsxNjAsMTIgQEAgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Qm9keUxv
YWRlcihGZXRjaFJlc3BvbnNlJiByZXNwb25zZSwgRmV0Y2hQcm9taXNlJiYgcHIKIHsKIH0KIAot
dm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKK3ZvaWQgRmV0Y2hSZXNwb25zZTo6
Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKIHsKICAgICBBU1NFUlQo
bV9wcm9taXNlKTsKIAorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZUZl
dGNoUmVzcG9uc2UobV9yZXNwb25zZS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGlkZW50aWZp
ZXIpOworCiAgICAgbV9yZXNwb25zZS5tX3Jlc3BvbnNlID0gcmVzb3VyY2VSZXNwb25zZTsKICAg
ICBtX3Jlc3BvbnNlLm1faGVhZGVycy0+ZmlsdGVyQW5kRmlsbChyZXNvdXJjZVJlc3BvbnNlLmh0
dHBIZWFkZXJGaWVsZHMoKSwgRmV0Y2hIZWFkZXJzOjpHdWFyZDo6UmVzcG9uc2UpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IGM2ODcwMWQu
LjgxYmZmZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gRmV0Y2hMb2FkZXJD
bGllbnQgQVBJCiAgICAgICAgIHZvaWQgZGlkU3VjY2VlZCgpIGZpbmFsOwogICAgICAgICB2b2lk
IGRpZEZhaWwoKSBmaW5hbDsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOworICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5h
bDsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5h
bDsKIAogICAgICAgICBGZXRjaFJlc3BvbnNlJiBtX3Jlc3BvbnNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBk
N2NlYTJlLi4xODIxNmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtNjg3LDYgKzY4NywxMiBAQCB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFhIUlN5bmNocm9ub3VzbHlJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkTG9hZFhIUlN5bmNocm9u
b3VzbHkoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVG
ZXRjaFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit7CisgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtB
Z2VudCogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3Jr
QWdlbnQoKSkKKyAgICAgICAgbmV0d29ya0FnZW50LT5kaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShp
ZGVudGlmaWVyKTsKK30KKwogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdElt
cG9ydGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKQogewogICAg
IGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQqIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggNDkwZmU5My4uYjMyMWFl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaApAQCAtMTY2LDYgKzE2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlWEhSUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllcik7CiAgICAgc3RhdGljIHZvaWQgd2lsbExvYWRYSFJTeW5jaHJvbm91c2x5
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRMb2FkWEhSU3lu
Y2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgc3RhdGljIHZvaWQgZGlk
UmVjZWl2ZUZldGNoUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllcik7CiAgICAgc3RhdGljIHZvaWQgc2NyaXB0SW1wb3J0ZWQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VTdHJpbmcpOwogICAgIHN0YXRpYyB2b2lkIHNjcmlwdEV4ZWN1dGlvbkJsb2NrZWRCeUNT
UChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0KTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlU2NyaXB0UmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CkBAIC0zNDAsNiArMzQxLDcgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlWEhSUmVzcG9uc2VJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgIHN0YXRpYyB2
b2lkIHdpbGxMb2FkWEhSU3luY2hyb25vdXNseUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYpOwog
ICAgIHN0YXRpYyB2b2lkIGRpZExvYWRYSFJTeW5jaHJvbm91c2x5SW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2VJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgIHN0YXRp
YyB2b2lkIHNjcmlwdEltcG9ydGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZyk7CiAgICAgc3RhdGlj
IHZvaWQgc2NyaXB0RXhlY3V0aW9uQmxvY2tlZEJ5Q1NQSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiwgY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0KTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlU2NyaXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIpOwpAQCAtOTM1LDYgKzkzNywxMiBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZExvYWRYSFJTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNv
bgogICAgICAgICBkaWRMb2FkWEhSU3luY2hyb25vdXNseUltcGwoKmluc3RydW1lbnRpbmdBZ2Vu
dHMpOwogfQogCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVGZXRjaFJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQor
ICAgICAgICBkaWRSZWNlaXZlRmV0Y2hSZXNwb25zZUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMs
IGlkZW50aWZpZXIpOworfQorCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnNjcmlwdEltcG9ydGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpCiB7CiAgICAgaWYg
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5n
QWdlbnRzRm9yQ29udGV4dChjb250ZXh0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggZWQyOWU0Yi4uMzdiNThhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHAKQEAgLTQ2MCw2ICs0NjAsMTEgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJl
Y2VpdmVYSFJSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiAgICAgbV9yZXNvdXJj
ZXNEYXRhLT5zZXRSZXNvdXJjZVR5cGUoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRl
bnRpZmllciksIEluc3BlY3RvclBhZ2VBZ2VudDo6WEhSUmVzb3VyY2UpOwogfQogCit2b2lkIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyKQoreworICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VUeXBlKElk
ZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OkZldGNoUmVzb3VyY2UpOworfQorCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2ls
bExvYWRYSFJTeW5jaHJvbm91c2x5KCkKIHsKICAgICBtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuaAppbmRleCA3MGFkZjljLi4zY2NhZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCkBAIC04Myw2ICs4Myw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRl
ciYsIENhY2hlZFJlc291cmNlJik7CiAgICAgdm9pZCBkaWRGaW5pc2hYSFJMb2FkaW5nKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkZWNvZGVkVGV4dCk7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlWEhSUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CiAg
ICAgdm9pZCB3aWxsTG9hZFhIUlN5bmNocm9ub3VzbHkoKTsKICAgICB2b2lkIGRpZExvYWRYSFJT
eW5jaHJvbm91c2x5KCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlU2NyaXB0UmVzcG9uc2UodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMDVkMmI4Yi4uZmMzNTk2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTExNSwyNiArMTE1
LDMyIEBAIHN0YXRpYyBib29sIHByZXBhcmVDYWNoZWRSZXNvdXJjZUJ1ZmZlcihDYWNoZWRSZXNv
dXJjZSogY2FjaGVkUmVzb3VyY2UsIGJvb2wqIGhhCiAKIHN0YXRpYyBib29sIGhhc1RleHRDb250
ZW50KENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKIHsKKyAgICAvLyBGSVhNRTogPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzE2NTQ5NT4gV2ViIEluc3BlY3RvcjogWEhSIC8gRmV0Y2ggZm9y
IG5vbi10ZXh0IGNvbnRlbnQgc2hvdWxkIG5vdCBzaG93IGdhcmJsZWQgdGV4dAorICAgIC8vIFdl
IHNob3VsZCBub3QgYXNzdW1lIFhIUiAvIEZldGNoIGhhdmUgdGV4dCBjb250ZW50LgorCiAgICAg
SW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgdHlwZSA9IEluc3BlY3RvclBhZ2VBZ2Vu
dDo6Y2FjaGVkUmVzb3VyY2VUeXBlKCpjYWNoZWRSZXNvdXJjZSk7CiAgICAgcmV0dXJuIHR5cGUg
PT0gSW5zcGVjdG9yUGFnZUFnZW50OjpEb2N1bWVudFJlc291cmNlCiAgICAgICAgIHx8IHR5cGUg
PT0gSW5zcGVjdG9yUGFnZUFnZW50OjpTdHlsZXNoZWV0UmVzb3VyY2UKICAgICAgICAgfHwgdHlw
ZSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6OlNjcmlwdFJlc291cmNlCi0gICAgICAgIHx8IHR5cGUg
PT0gSW5zcGVjdG9yUGFnZUFnZW50OjpYSFJSZXNvdXJjZTsKKyAgICAgICAgfHwgdHlwZSA9PSBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OlhIUlJlc291cmNlCisgICAgICAgIHx8IHR5cGUgPT0gSW5zcGVj
dG9yUGFnZUFnZW50OjpGZXRjaFJlc291cmNlOwogfQogCiBzdGF0aWMgUmVmUHRyPFRleHRSZXNv
dXJjZURlY29kZXI+IGNyZWF0ZVhIUlRleHREZWNvZGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKIHsKLSAgICBSZWZQdHI8VGV4dFJlc291
cmNlRGVjb2Rlcj4gZGVjb2RlcjsKICAgICBpZiAoIXRleHRFbmNvZGluZ05hbWUuaXNFbXB0eSgp
KQotICAgICAgICBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3Bs
YWluIiwgdGV4dEVuY29kaW5nTmFtZSk7Ci0gICAgZWxzZSBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6
aXNYTUxNSU1FVHlwZShtaW1lVHlwZSkpIHsKLSAgICAgICAgZGVjb2RlciA9IFRleHRSZXNvdXJj
ZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIik7CisgICAgICAgIHJldHVybiBUZXh0
UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoQVNDSUlMaXRlcmFsKCJ0ZXh0L3BsYWluIiksIHRleHRF
bmNvZGluZ05hbWUpOworCisgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzVGV4dE1JTUVUeXBl
KG1pbWVUeXBlKSkKKyAgICAgICAgcmV0dXJuIFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSht
aW1lVHlwZSwgIlVURi04Iik7CisKKyAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1F
VHlwZShtaW1lVHlwZSkpIHsKKyAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGRl
Y29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoQVNDSUlMaXRlcmFsKCJhcHBsaWNh
dGlvbi94bWwiKSk7CiAgICAgICAgIGRlY29kZXItPnVzZUxlbmllbnRYTUxEZWNvZGluZygpOwot
ICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0
ZXh0L2h0bWwiKSkKLSAgICAgICAgZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0
ZSgidGV4dC9odG1sIiwgIlVURi04Iik7Ci0gICAgZWxzZQotICAgICAgICBkZWNvZGVyID0gVGV4
dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgIlVURi04Iik7Ci0gICAgcmV0
dXJuIGRlY29kZXI7CisgICAgICAgIHJldHVybiBkZWNvZGVyOworICAgIH0KKworICAgIHJldHVy
biBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoQVNDSUlMaXRlcmFsKCJ0ZXh0L3BsYWluIiks
ICJVVEYtOCIpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VD
b250ZW50KENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSwgU3RyaW5nKiByZXN1bHQsIGJv
b2wqIGJhc2U2NEVuY29kZWQpCkBAIC0yOTgsNiArMzA0LDggQEAgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6UGFnZTo6UmVzb3VyY2VUeXBlIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VUeXBlSnNv
bihJbnMKICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlJlc291cmNl
VHlwZTo6U2NyaXB0OwogICAgIGNhc2UgWEhSUmVzb3VyY2U6CiAgICAgICAgIHJldHVybiBJbnNw
ZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNvdXJjZVR5cGU6OlhIUjsKKyAgICBjYXNlIEZldGNo
UmVzb3VyY2U6CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNv
dXJjZVR5cGU6OkZldGNoOwogICAgIGNhc2UgV2ViU29ja2V0UmVzb3VyY2U6CiAgICAgICAgIHJl
dHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNvdXJjZVR5cGU6OldlYlNvY2tldDsK
ICAgICBjYXNlIE90aGVyUmVzb3VyY2U6CkBAIC0zMTYsMTkgKzMyNCwyNiBAQCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OlJlc291cmNlVHlwZSBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNl
VHlwZShjb25zdCBDYQogI2VuZGlmCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291
cmNlOgogICAgICAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpGb250UmVzb3VyY2U7Ci0g
ICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldDoKLSAgICAgICAgLy8gRmFsbCB0
aHJvdWdoLgogI2lmIEVOQUJMRShYU0xUKQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlhTTFN0
eWxlU2hlZXQ6CiAjZW5kaWYKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0
OgogICAgICAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpTdHlsZXNoZWV0UmVzb3VyY2U7
CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6U2NyaXB0OgogICAgICAgICByZXR1cm4gSW5zcGVj
dG9yUGFnZUFnZW50OjpTY3JpcHRSZXNvdXJjZTsKLSAgICBjYXNlIENhY2hlZFJlc291cmNlOjpN
ZWRpYVJlc291cmNlOgotICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291cmNlOgotICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpYSFJSZXNvdXJjZTsKICAgICBjYXNlIENh
Y2hlZFJlc291cmNlOjpNYWluUmVzb3VyY2U6CiAgICAgICAgIHJldHVybiBJbnNwZWN0b3JQYWdl
QWdlbnQ6OkRvY3VtZW50UmVzb3VyY2U7CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TWVkaWFS
ZXNvdXJjZToKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZTogeworICAgICAg
ICBzd2l0Y2ggKGNhY2hlZFJlc291cmNlLnJlc291cmNlUmVxdWVzdCgpLnJlcXVlc3RlcigpKSB7
CisgICAgICAgIGNhc2UgUmVzb3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6OkZldGNoOgorICAgICAg
ICAgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6RmV0Y2hSZXNvdXJjZTsKKyAgICAgICAg
Y2FzZSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbjoKKyAgICAgICAgICAgIHJldHVy
biBJbnNwZWN0b3JQYWdlQWdlbnQ6OkRvY3VtZW50UmVzb3VyY2U7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpYSFJSZXNvdXJjZTsKKyAg
ICAgICAgfQorICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggNTY0MjAz
YS4uNTQzYWNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdl
QWdlbnQuaApAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZvbnRSZXNvdXJjZSwK
ICAgICAgICAgU2NyaXB0UmVzb3VyY2UsCiAgICAgICAgIFhIUlJlc291cmNlLAorICAgICAgICBG
ZXRjaFJlc291cmNlLAogICAgICAgICBXZWJTb2NrZXRSZXNvdXJjZSwKICAgICAgICAgT3RoZXJS
ZXNvdXJjZQogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcAppbmRleCA5ZmYyOGUxLi5jZGVjNmJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTEzMSwxNyAr
MTMxLDE5IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc291cmNlQ3JlYXRlZChjb25z
dCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nCiAKIHN0YXRpYyBSZWZQdHI8VGV4dFJl
c291cmNlRGVjb2Rlcj4gY3JlYXRlT3RoZXJSZXNvdXJjZVRleHREZWNvZGVyKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKIHsKLSAgICBSZWZQ
dHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlcjsKICAgICBpZiAoIXRleHRFbmNvZGluZ05h
bWUuaXNFbXB0eSgpKQotICAgICAgICBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3Jl
YXRlKCJ0ZXh0L3BsYWluIiwgdGV4dEVuY29kaW5nTmFtZSk7Ci0gICAgZWxzZSBpZiAoTUlNRVR5
cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZShtaW1lVHlwZSkpIHsKLSAgICAgICAgZGVjb2RlciA9
IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIik7CisgICAgICAg
IHJldHVybiBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoQVNDSUlMaXRlcmFsKCJ0ZXh0L3Bs
YWluIiksIHRleHRFbmNvZGluZ05hbWUpOworCisgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6Omlz
VGV4dE1JTUVUeXBlKG1pbWVUeXBlKSkKKyAgICAgICAgcmV0dXJuIFRleHRSZXNvdXJjZURlY29k
ZXI6OmNyZWF0ZShtaW1lVHlwZSwgIlVURi04Iik7CisKKyAgICBpZiAoTUlNRVR5cGVSZWdpc3Ry
eTo6aXNYTUxNSU1FVHlwZShtaW1lVHlwZSkpIHsKKyAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJj
ZURlY29kZXI+IGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoQVNDSUlMaXRl
cmFsKCJhcHBsaWNhdGlvbi94bWwiKSk7CiAgICAgICAgIGRlY29kZXItPnVzZUxlbmllbnRYTUxE
ZWNvZGluZygpOwotICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
bWltZVR5cGUsICJ0ZXh0L2h0bWwiKSkKLSAgICAgICAgZGVjb2RlciA9IFRleHRSZXNvdXJjZURl
Y29kZXI6OmNyZWF0ZSgidGV4dC9odG1sIiwgIlVURi04Iik7Ci0gICAgZWxzZSBpZiAobWltZVR5
cGUgPT0gInRleHQvcGxhaW4iKQotICAgICAgICBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rl
cjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgIklTTy04ODU5LTEiKTsKLSAgICByZXR1cm4gZGVjb2Rl
cjsKKyAgICAgICAgcmV0dXJuIGRlY29kZXI7CisgICAgfQorCisgICAgcmV0dXJuIFRleHRSZXNv
dXJjZURlY29kZXI6OmNyZWF0ZShBU0NJSUxpdGVyYWwoInRleHQvcGxhaW4iKSwgIlVURi04Iik7
CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
SU1FVHlwZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVn
aXN0cnkuY3BwCmluZGV4IGFkZDI4ZmYuLjM2NmY5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCkBAIC01MTYsNiArNTE2LDI0IEBAIGJvb2wgTUlN
RVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkKICAgICByZXR1cm4gc3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlcy0+Y29u
dGFpbnMobWltZVR5cGUpOwogfQogCitib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVk
SlNPTk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgaWYgKG1pbWVUeXBl
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiYXBwbGljYXRpb24vanNvbiIpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIFdoZW4gZGV0ZWN0aW5nICtqc29uIGVuc3VyZSB0aGVy
ZSBpcyBhIG5vbi1lbXB0eSB0eXBlIC8gc3VidHlwZSBwcmVjZWVkaW5nIHRoZSBzdWZmaXguCisg
ICAgaWYgKG1pbWVUeXBlLmVuZHNXaXRoKCIranNvbiIsIGZhbHNlKSAmJiBtaW1lVHlwZS5sZW5n
dGgoKSA+PSA4KSB7CisgICAgICAgIHNpemVfdCBzbGFzaFBvc2l0aW9uID0gbWltZVR5cGUuZmlu
ZCgnLycpOworICAgICAgICBpZiAoc2xhc2hQb3NpdGlvbiAhPSBub3RGb3VuZCAmJiBzbGFzaFBv
c2l0aW9uID4gMCAmJiBzbGFzaFBvc2l0aW9uIDw9IG1pbWVUeXBlLmxlbmd0aCgpIC0gNikKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwog
Ym9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQpAQCAtNTQ2
LDcgKzU2NCw3IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNVbnN1cHBvcnRlZFRleHRNSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1Rl
eHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIHJldHVybiBpc1N1cHBv
cnRlZEphdmFTY3JpcHRNSU1FVHlwZShtaW1lVHlwZSkKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi9qc29uIikgLy8gUmVuZGVy
IEpTT04gYXMgdGV4dC9wbGFpbi4KKyAgICAgICAgfHwgaXNTdXBwb3J0ZWRKU09OTUlNRVR5cGUo
bWltZVR5cGUpIC8vIFJlbmRlciBKU09OIGFzIHRleHQvcGxhaW4uCiAgICAgICAgIHx8IChtaW1l
VHlwZS5zdGFydHNXaXRoKCJ0ZXh0LyIsIGZhbHNlKQogICAgICAgICAgICAgJiYgIWVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC9odG1sIikKICAgICAgICAgICAg
ICYmICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQveG1sIikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAppbmRleCA2NzQ5NTQ2
Li4zZmQ4MGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJl
Z2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5o
CkBAIC01NCw4ICs1NCw5IEBAIHB1YmxpYzoKICAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBNSU1F
IHR5cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIGVuY29kZWQuCiAgICAgc3RhdGljIGJvb2wgaXNT
dXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7
CiAKLSAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBNSU1FIHR5cGUgaXMgc3VpdGFibGUgZm9yIGJl
aW5nIGxvYWRlZCBhcyBhIEphdmFTY3JpcHQgcmVzb3VyY2UuCi0gICAgc3RhdGljIGJvb2wgaXNT
dXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7ICAgIAor
ICAgIC8vIENoZWNrIHRvIHNlZSBpZiBhIE1JTUUgdHlwZSBpcyBzdWl0YWJsZSBmb3IgYmVpbmcg
bG9hZGVkIGFzIGEgSmF2YVNjcmlwdCBvciBKU09OIHJlc291cmNlLgorICAgIHN0YXRpYyBib29s
IGlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwor
ICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSlNPTk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgbm9uLWltYWdlIE1JTUUgdHlwZSBp
cyBzdWl0YWJsZSBmb3IgYmVpbmcgbG9hZGVkIGFzIGEKICAgICAvLyBkb2N1bWVudCBpbiBhIGZy
YW1lLiBJbmNsdWRlcyBzdXBwb3J0ZWQgSmF2YVNjcmlwdCBNSU1FIHR5cGVzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaApp
bmRleCBjNzNlNzZjLi43MTFhNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaApAQCAtMTYwLDcgKzE2MCw3IEBAIHB1
YmxpYzoKICAgICBib29sIGlnbm9yZUZvclJlcXVlc3RDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1f
aWdub3JlRm9yUmVxdWVzdENvdW50OyB9CiAgICAgdm9pZCBzZXRJZ25vcmVGb3JSZXF1ZXN0Q291
bnQoYm9vbCBpZ25vcmVGb3JSZXF1ZXN0Q291bnQpIHsgbV9pZ25vcmVGb3JSZXF1ZXN0Q291bnQg
PSBpZ25vcmVGb3JSZXF1ZXN0Q291bnQ7IH0KIAotICAgIGVudW0gY2xhc3MgUmVxdWVzdGVyIHsg
VW5zcGVjaWZpZWQsIE1haW4sIFhIUiwgTWVkaWEgfTsKKyAgICBlbnVtIGNsYXNzIFJlcXVlc3Rl
ciB7IFVuc3BlY2lmaWVkLCBNYWluLCBYSFIsIEZldGNoLCBNZWRpYSB9OwogICAgIFJlcXVlc3Rl
ciByZXF1ZXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RlcjsgfQogICAgIHZvaWQgc2V0
UmVxdWVzdGVyKFJlcXVlc3RlciByZXF1ZXN0ZXIpIHsgbV9yZXF1ZXN0ZXIgPSByZXF1ZXN0ZXI7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggNmYyZjAxOC4uMzE2MWVjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTYtMTItMDYgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBT
b21lIHJlc291cmNlcyBmZXRjaGVkIHZpYSBGZXRjaCBBUEkgZG8gbm90IGhhdmUgZGF0YQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MjMwCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8yOTQ0OTIyMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIExvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVk
U3RyaW5ncy5qczoKKyAgICAgICAgTmV3ICJGZXRjaCIgYW5kICJGZXRjaGVzIiBsb2NhbGl6ZWQg
c3RyaW5ncy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLmRpc3BsYXlOYW1lRm9yVHlwZSk6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VDb2xsZWN0aW9uLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlJlc291cmNlQ29sbGVjdGlvbi52ZXJpZmllckZvclR5cGUpOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29sbGVjdGlvbkNvbnRlbnRWaWV3LmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNvbGxlY3Rpb25Db250ZW50Vmlldyk6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IHJl
c3BvbnNlQ29udGVudFZpZXcpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3Vy
Y2VUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVt
ZW50LmNvbXBhcmVSZXNvdXJjZVRyZWVFbGVtZW50cyk6CisgICAgICAgIE5ldyBSZXNvdXJjZVR5
cGUuRmV0Y2guIEJlaGF2ZSBsaWtlIFhIUiBpbiBtb3N0IHBsYWNlcy4KKwogMjAxNi0xMi0wNSAg
Sm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFJlbW92ZSBsZWdhY3kgc3R5bGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5q
cwppbmRleCBiYjQ2MjQ2Li5jY2NmNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3Mu
anMKQEAgLTM0Niw2ICszNDYsOCBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJGYWRlIHVuZXhlY3V0ZWQg
Y29kZSJdID0gIkZhZGUgdW5leGVjdXRlZCBjb2RlIjsKIGxvY2FsaXplZFN0cmluZ3NbIkZhaWxl
ZCB0byB1cGdyYWRlIl0gPSAiRmFpbGVkIHRvIHVwZ3JhZGUiOwogbG9jYWxpemVkU3RyaW5nc1si
RmFtaWx5Il0gPSAiRmFtaWx5IjsKIGxvY2FsaXplZFN0cmluZ3NbIkZlYXR1cmVzIl0gPSAiRmVh
dHVyZXMiOworbG9jYWxpemVkU3RyaW5nc1siRmV0Y2giXSA9ICJGZXRjaCI7Citsb2NhbGl6ZWRT
dHJpbmdzWyJGZXRjaGVzIl0gPSAiRmV0Y2hlcyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJGaWxlIG9y
IFJlc291cmNlIl0gPSAiRmlsZSBvciBSZXNvdXJjZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJGaWxl
bmFtZSJdID0gIkZpbGVuYW1lIjsKIGxvY2FsaXplZFN0cmluZ3NbIkZpbGwiXSA9ICJGaWxsIjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9S
ZXNvdXJjZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9S
ZXNvdXJjZS5qcwppbmRleCA0ZjNjMGI3Li4yOWU1YTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2UuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzCkBAIC0xMTQs
NiArMTE0LDEwIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZSA9IGNsYXNzIFJlc291cmNlIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUKICAgICAgICAgICAgIGlmIChwbHVyYWwpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiWEhScyIpOwogICAgICAg
ICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiWEhSIik7CisgICAgICAgIGNhc2Ug
V2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuRmV0Y2g6CisgICAgICAgICAgICBpZiAocGx1cmFs
KQorICAgICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZldGNoZXMi
KTsKKyAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZldGNoIik7CiAg
ICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuV2ViU29ja2V0OgogICAgICAg
ICAgICAgaWYgKHBsdXJhbCkKICAgICAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJTb2NrZXRzIik7CkBAIC03NTMsNiArNzU3LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291
cmNlLlR5cGUgPSB7CiAgICAgRm9udDogInJlc291cmNlLXR5cGUtZm9udCIsCiAgICAgU2NyaXB0
OiAicmVzb3VyY2UtdHlwZS1zY3JpcHQiLAogICAgIFhIUjogInJlc291cmNlLXR5cGUteGhyIiwK
KyAgICBGZXRjaDogInJlc291cmNlLXR5cGUtZmV0Y2giLAogICAgIFdlYlNvY2tldDogInJlc291
cmNlLXR5cGUtd2Vic29ja2V0IiwKICAgICBPdGhlcjogInJlc291cmNlLXR5cGUtb3RoZXIiCiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L1Jlc291cmNlQ29sbGVjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9SZXNvdXJjZUNvbGxlY3Rpb24uanMKaW5kZXggNzE1OTYzZC4uYmQzOGFkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jl
c291cmNlQ29sbGVjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvUmVzb3VyY2VDb2xsZWN0aW9uLmpzCkBAIC01MSw2ICs1MSw4IEBAIFdlYklu
c3BlY3Rvci5SZXNvdXJjZUNvbGxlY3Rpb24gPSBjbGFzcyBSZXNvdXJjZUNvbGxlY3Rpb24gZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuCiAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlJlc291
cmNlQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuU2NyaXB0OwogICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5UeXBlLlhIUjoKICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VDb2xsZWN0aW9uLlR5cGVWZXJpZmllci5YSFI7CisgICAgICAgIGNhc2UgV2ViSW5z
cGVjdG9yLlJlc291cmNlLlR5cGUuRmV0Y2g6CisgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLlJlc291cmNlQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuRmV0Y2g7CiAgICAgICAgIGNhc2Ug
V2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuV2ViU29ja2V0OgogICAgICAgICAgICAgcmV0dXJu
IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLldlYlNvY2tldDsK
ICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5PdGhlcjoKQEAgLTE5MSw2
ICsxOTMsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb2xsZWN0aW9uLlR5cGVWZXJpZmllciA9
IHsKICAgICBGb250OiAob2JqZWN0KSA9PiBXZWJJbnNwZWN0b3IuQ29sbGVjdGlvbi5UeXBlVmVy
aWZpZXIuUmVzb3VyY2Uob2JqZWN0KSAmJiBvYmplY3QudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJl
c291cmNlLlR5cGUuRm9udCwKICAgICBTY3JpcHQ6IChvYmplY3QpID0+IFdlYkluc3BlY3Rvci5D
b2xsZWN0aW9uLlR5cGVWZXJpZmllci5SZXNvdXJjZShvYmplY3QpICYmIG9iamVjdC50eXBlID09
PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQsCiAgICAgWEhSOiAob2JqZWN0KSA9
PiBXZWJJbnNwZWN0b3IuQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuUmVzb3VyY2Uob2JqZWN0KSAm
JiBvYmplY3QudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuWEhSLAorICAgIEZl
dGNoOiAob2JqZWN0KSA9PiBXZWJJbnNwZWN0b3IuQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuUmVz
b3VyY2Uob2JqZWN0KSAmJiBvYmplY3QudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5
cGUuRmV0Y2gsCiAgICAgV2ViU29ja2V0OiAob2JqZWN0KSA9PiBXZWJJbnNwZWN0b3IuQ29sbGVj
dGlvbi5UeXBlVmVyaWZpZXIuUmVzb3VyY2Uob2JqZWN0KSAmJiBvYmplY3QudHlwZSA9PT0gV2Vi
SW5zcGVjdG9yLlJlc291cmNlLlR5cGUuV2ViU29ja2V0LAogICAgIE90aGVyOiAob2JqZWN0KSA9
PiBXZWJJbnNwZWN0b3IuQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuUmVzb3VyY2Uob2JqZWN0KSAm
JiBvYmplY3QudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuT3RoZXIsCiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29s
bGVjdGlvbkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ29sbGVjdGlvbkNvbnRlbnRWaWV3LmpzCmluZGV4IGE0OWQ3ZmMuLjJiMDZiM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nv
bGxlY3Rpb25Db250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Db2xsZWN0aW9uQ29udGVudFZpZXcuanMKQEAgLTgxLDYgKzgxLDEwIEBA
IFdlYkluc3BlY3Rvci5Db2xsZWN0aW9uQ29udGVudFZpZXcgPSBjbGFzcyBDb2xsZWN0aW9uQ29u
dGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwCiAgICAgICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5kaXNwbGF5TmFtZUZvclR5cGUoV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUu
WEhSLCB0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgV2ViSW5zcGVj
dG9yLlJlc291cmNlQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuRmV0Y2g6CisgICAgICAgICAgICB0
aXRsZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5kaXNwbGF5TmFtZUZvclR5cGUoV2ViSW5zcGVj
dG9yLlJlc291cmNlLlR5cGUuRmV0Y2gsIHRydWUpOworICAgICAgICAgICAgYnJlYWs7CisKICAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb2xsZWN0aW9uLlR5cGVWZXJpZmllci5X
ZWJTb2NrZXQ6CiAgICAgICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5kaXNw
bGF5TmFtZUZvclR5cGUoV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuV2ViU29ja2V0LCB0cnVl
KTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNsdXN0ZXJDb250
ZW50Vmlldy5qcwppbmRleCA0MjY1ZmVlLi4zZjA4NGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmll
dy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNv
dXJjZUNsdXN0ZXJDb250ZW50Vmlldy5qcwpAQCAtNjUsNyArNjUsMTMgQEAgV2ViSW5zcGVjdG9y
LlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3ID0gY2xhc3MgUmVzb3VyY2VDbHVzdGVyQ29udGVu
dFZpZXcgZXh0ZW4KICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5Eb2N1
bWVudDoKICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQ6CiAg
ICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU3R5bGVzaGVldDoKKyAgICAg
ICAgICAgIHRoaXMuX3Jlc3BvbnNlQ29udGVudFZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRS
ZXNvdXJjZUNvbnRlbnRWaWV3KHRoaXMuX3Jlc291cmNlKTsKKyAgICAgICAgICAgIGJyZWFrOwor
CiAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuWEhSOgorICAgICAgICBj
YXNlIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkZldGNoOgorICAgICAgICAgICAgLy8gRklY
TUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNjU0OTU+IFdlYiBJbnNwZWN0b3I6IFhIUiAvIEZl
dGNoIGZvciBub24tdGV4dCBjb250ZW50IHNob3VsZCBub3Qgc2hvdyBnYXJibGVkIHRleHQKKyAg
ICAgICAgICAgIC8vIFhIUiAvIEZldGNoIGNvbnRlbnQgbWF5IG5vdCBhbHdheXMgYmUgdGV4dC4K
ICAgICAgICAgICAgIHRoaXMuX3Jlc3BvbnNlQ29udGVudFZpZXcgPSBuZXcgV2ViSW5zcGVjdG9y
LlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3KHRoaXMuX3Jlc291cmNlKTsKICAgICAgICAgICAgIGJy
ZWFrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9SZXNvdXJjZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvUmVzb3VyY2VUcmVlRWxlbWVudC5qcwppbmRleCBiZmQyZDY5Li42MGY3
YmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9SZXNvdXJjZVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVHJlZUVsZW1lbnQuanMKQEAgLTQ0LDcgKzQ0LDkgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQgPSBjbGFzcyBSZXNvdXJjZVRyZWVFbGVt
ZW50IGV4dGVuZHMgV2ViSW5zcGVjdG8KICAgICAgICAgICAgIHJldHVybiBjb21wYXJpc29uUmVz
dWx0OwogCiAgICAgICAgIC8vIENvbXBhcmUgYXN5bmMgcmVzb3VyY2UgdHlwZXMgYnkgdGhlaXIg
Zmlyc3QgdGltZXN0YW1wIHNvIHRoZXkgYXJlIGluIGNocm9ub2xvZ2ljYWwgb3JkZXIuCi0gICAg
ICAgIGlmIChhLnJlc291cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlhI
UiB8fCBhLnJlc291cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLldlYlNv
Y2tldCkKKyAgICAgICAgaWYgKGEucmVzb3VyY2UudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291
cmNlLlR5cGUuWEhSCisgICAgICAgICAgICB8fCBhLnJlc291cmNlLnR5cGUgPT09IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5UeXBlLkZldGNoCisgICAgICAgICAgICB8fCBhLnJlc291cmNlLnR5cGUg
PT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLldlYlNvY2tldCkKICAgICAgICAgICAgIHJl
dHVybiBhLnJlc291cmNlLmZpcnN0VGltZXN0YW1wIC0gYi5yZXNvdXJjZS5maXJzdFRpbWVzdGFt
cCB8fCAwOwogCiAgICAgICAgIC8vIENvbXBhcmUgYnkgc3VidGl0bGUgd2hlbiB0aGUgdHlwZXMg
YXJlIHRoZSBzYW1lLiBUaGUgc3VidGl0bGUgaXMgdXNlZCB0byBzaG93IHRoZQo=
</data>
<flag name="review"
          id="318791"
          type_id="1"
          status="-"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296477</attachid>
            <date>2016-12-07 20:51:33 -0800</date>
            <delta_ts>2016-12-09 14:06:58 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>fetch-3.patch</filename>
            <type>text/plain</type>
            <size>58735</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2OTZlZjEwLi5jMDUzM2I1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjUgQEAKIDIwMTYtMTIt
MDcgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAorICAgICAgICBXZWIg
SW5zcGVjdG9yOiBTb21lIHJlc291cmNlcyBmZXRjaGVkIHZpYSBGZXRjaCBBUEkgZG8gbm90IGhh
dmUgZGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY1MjMwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTQ0OTIyMD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9keS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9keS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNl
cy9kYXRhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvcmVzb3VyY2VzL2RhdGEuanNvbjogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YS5zdmc6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2RhdGEudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9lY2hvLnBocDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay94aHItcmVzcG9uc2Ut
Ym9keS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsveGhyLXJlc3BvbnNlLWJvZHkuaHRtbDogQWRkZWQuCisgICAgICAgIFRlc3RzIGZv
ciB2aWV3aW5nIGNvbnRlbnQgb2YgWEhSIGFuZCBGZXRjaCByZXF1ZXN0ZWQgcmVzb3VyY2VzCisg
ICAgICAgIHdpdGggZGlmZmVyZW50IGtpbmRzIG9mIGNvbnRlbnQuCisKKzIwMTYtMTItMDcgIEpv
c2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKwogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBVbmFibGUgdG8gZGVsZXRlIGJyZWFrcG9pbnQgZnJvbSB3b3JrZXIgc2NyaXB0CiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU1NzgKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9mZXRjaC1y
ZXNwb25zZS1ib2R5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9keS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE1YTRkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9keS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwzOSBAQAorVGVzdHMgZm9yIGdldHRpbmcgdGhlIGNvbnRl
bnQgb2YgRmV0Y2ggcmVxdWVzdHMuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBOZXR3b3Jr
LmdldFJlc3BvbnNlQm9keS5GZXRjaAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuZ2V0
UmVzcG9uc2VCb2R5LkZldGNoLlRleHQKK1BBU1M6IFJlc291cmNlIHNob3VsZCBiZSBGZXRjaCB0
eXBlLgorUEFTUzogTUlNRVR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4KK1BBU1M6IFRleHQg
Y29udGVudCBzaG91bGQgbWF0Y2ggZGF0YS50eHQuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBO
ZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5IVE1MCitQQVNTOiBSZXNvdXJjZSBzaG91bGQg
YmUgRmV0Y2ggdHlwZS4KK1BBU1M6IE1JTUVUeXBlIHNob3VsZCBiZSAndGV4dC9odG1sJy4KK1BB
U1M6IFRleHQgY29udGVudCBzaG91bGQgbWF0Y2ggZGF0YS5odG1sLgorCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2guSlNPTgorUEFTUzogUmVzb3Vy
Y2Ugc2hvdWxkIGJlIEZldGNoIHR5cGUuCitQQVNTOiBNSU1FVHlwZSBzaG91bGQgYmUgJ2FwcGxp
Y2F0aW9uL29jdGV0LXN0cmVhbScuCitQQVNTOiBKU09OIGNvbnRlbnQgc2hvdWxkIG1hdGNoIGRh
dGEuanNvbi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5
LkZldGNoLkpTT04yCitQQVNTOiBSZXNvdXJjZSBzaG91bGQgYmUgRmV0Y2ggdHlwZS4KK1BBU1M6
IE1JTUVUeXBlIHNob3VsZCBiZSAnYXBwbGljYXRpb24vanNvbicuCitQQVNTOiBKU09OIGNvbnRl
bnQgc2hvdWxkIG1hdGNoIHNwZWNpZmllZCBjb250ZW50LgorCistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2guSlNPTjMKK1BBU1M6IFJlc291cmNlIHNo
b3VsZCBiZSBGZXRjaCB0eXBlLgorUEFTUzogTUlNRVR5cGUgc2hvdWxkIGJlICdhcHBsaWNhdGlv
bi92bmQuYXBpK2pzb24nLgorUEFTUzogSlNPTiBjb250ZW50IHNob3VsZCBtYXRjaCBzcGVjaWZp
ZWQgY29udGVudC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuZ2V0UmVzcG9uc2VC
b2R5LkZldGNoLlNWRworUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIEZldGNoIHR5cGUuCitQQVNT
OiBNSU1FVHlwZSBzaG91bGQgYmUgJ2ltYWdlL3N2Zyt4bWwnLgorUEFTUzogU1ZHIGNvbnRlbnQg
c2hvdWxkIGJlIHRleHQuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3Bv
bnNlQm9keS5GZXRjaC5QTkcKK1BBU1M6IFJlc291cmNlIHNob3VsZCBiZSBGZXRjaCB0eXBlLgor
UEFTUzogTUlNRVR5cGUgc2hvdWxkIGJlICdpbWFnZS9wbmcnLgorUEFTUzogSW1hZ2UgY29udGVu
dCBzaG91bGQgYmUgdGV4dC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9mZXRjaC1yZXNwb25zZS1ib2R5Lmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ZldGNoLXJlc3BvbnNlLWJvZHkuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmQ2NzhlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9mZXRjaC1yZXNwb25z
ZS1ib2R5Lmh0bWwKQEAgLTAsMCArMSwxMzkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
aW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGNyZWF0ZUZl
dGNoRm9yVGV4dCgpIHsKKyAgICBmZXRjaCgicmVzb3VyY2VzL2RhdGEudHh0Iik7Cit9CisKK2Z1
bmN0aW9uIGNyZWF0ZUZldGNoRm9ySFRNTCgpIHsKKyAgICBmZXRjaCgicmVzb3VyY2VzL2RhdGEu
aHRtbCIpOworfQorCitmdW5jdGlvbiBjcmVhdGVGZXRjaEZvckpTT04oKSB7CisgICAgZmV0Y2go
InJlc291cmNlcy9kYXRhLmpzb24iKTsKK30KKworZnVuY3Rpb24gY3JlYXRlRmV0Y2hGb3JKU09O
MigpIHsKKyAgICBmZXRjaChgcmVzb3VyY2VzL2VjaG8ucGhwP21pbWV0eXBlPWFwcGxpY2F0aW9u
L2pzb24mY29udGVudD17Impzb24iOnRydWUsInZhbHVlIjo0Mn1gKTsKK30KKworZnVuY3Rpb24g
Y3JlYXRlRmV0Y2hGb3JKU09OMygpIHsKKyAgICBmZXRjaChgcmVzb3VyY2VzL2VjaG8ucGhwP21p
bWV0eXBlPWFwcGxpY2F0aW9uL3ZuZC5hcGklMkJqc29uJmNvbnRlbnQ9eyJqc29uIjp0cnVlLCJ2
YWx1ZSI6OTk5fWApOworfQorCitmdW5jdGlvbiBjcmVhdGVGZXRjaEZvclNWRygpIHsKKyAgICBm
ZXRjaCgicmVzb3VyY2VzL2RhdGEuc3ZnIik7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUZldGNoRm9y
UE5HKCkgeworICAgIGZldGNoKCIvcmVzb3VyY2VzL3NxdWFyZTEwMC5wbmciKTsKK30KKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3lu
Y1N1aXRlKCJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaCIpOworCisgICAgZnVuY3Rpb24g
YWRkVGVzdENhc2Uoe25hbWUsIGRlc2NyaXB0aW9uLCBleHByZXNzaW9uLCBjb250ZW50SGFuZGxl
cn0pIHsKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFtZSwgZGVz
Y3JpcHRpb24sCisgICAgICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoZXhwcmVzc2lvbik7CisgICAgICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLkZyYW1lLmF3YWl0RXZlbnQoV2ViSW5zcGVjdG9yLkZyYW1l
LkV2ZW50LlJlc291cmNlV2FzQWRkZWQpCisgICAgICAgICAgICAgICAgICAgIC50aGVuKChldmVu
dCkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc291cmNlID0gZXZlbnQuZGF0
YS5yZXNvdXJjZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwocmVzb3VyY2UudHlwZSwgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuRmV0Y2gsICJS
ZXNvdXJjZSBzaG91bGQgYmUgRmV0Y2ggdHlwZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiByZXNvdXJjZS5yZXF1ZXN0Q29udGVudCgpOworICAgICAgICAgICAgICAgICAgICB9
KQorICAgICAgICAgICAgICAgICAgICAudGhlbihjb250ZW50SGFuZGxlcikKKyAgICAgICAgICAg
ICAgICAgICAgLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSk7CisgICAgfQorCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5n
ZXRSZXNwb25zZUJvZHkuRmV0Y2guVGV4dCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2V0IHRl
eHQvcGxhaW4gY29udGVudCBhcyB0ZXh0LiIsCisgICAgICAgIGV4cHJlc3Npb246ICJjcmVhdGVG
ZXRjaEZvclRleHQoKSIsCisgICAgICAgIGNvbnRlbnRIYW5kbGVyKHtlcnJvciwgc291cmNlQ29k
ZSwgY29udGVudH0pIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291
cmNlQ29kZS5taW1lVHlwZSwgInRleHQvcGxhaW4iLCAiTUlNRVR5cGUgc2hvdWxkIGJlICd0ZXh0
L3BsYWluJy4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY29udGVu
dCwgIlBsYWluIHRleHQgcmVzb3VyY2UuXG4iLCAiVGV4dCBjb250ZW50IHNob3VsZCBtYXRjaCBk
YXRhLnR4dC4iKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAg
ICAgICBuYW1lOiAiTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2guSFRNTCIsCisgICAgICAg
IGRlc2NyaXB0aW9uOiAiR2V0IHRleHQvaHRtbCBjb250ZW50IGFzIHRleHQuIiwKKyAgICAgICAg
ZXhwcmVzc2lvbjogImNyZWF0ZUZldGNoRm9ySFRNTCgpIiwKKyAgICAgICAgY29udGVudEhhbmRs
ZXIoe2Vycm9yLCBzb3VyY2VDb2RlLCBjb250ZW50fSkgeworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLm1pbWVUeXBlLCAidGV4dC9odG1sIiwgIk1JTUVU
eXBlIHNob3VsZCBiZSAndGV4dC9odG1sJy4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RXF1YWwoY29udGVudCwgIjxzcGFuPkhlbGxvIFdvcmxkPC9zcGFuPlxuIiwgIlRleHQg
Y29udGVudCBzaG91bGQgbWF0Y2ggZGF0YS5odG1sLiIpOworICAgICAgICB9CisgICAgfSk7CisK
KyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9k
eS5GZXRjaC5KU09OIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZXQgYXBwbGljYXRpb24vb2N0
ZXQtc3RyZWFtIGNvbnRlbnQgYXMgdGV4dC4iLAorICAgICAgICBleHByZXNzaW9uOiAiY3JlYXRl
RmV0Y2hGb3JKU09OKCkiLAorICAgICAgICBjb250ZW50SGFuZGxlcih7ZXJyb3IsIHNvdXJjZUNv
ZGUsIGNvbnRlbnR9KSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNv
dXJjZUNvZGUubWltZVR5cGUsICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCAiTUlNRVR5cGUg
c2hvdWxkIGJlICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLiIpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RFcXVhbChjb250ZW50LCBgeyJqc29uIjogdHJ1ZSwgInZhbHVlIjog
NDJ9XG5gLCAiSlNPTiBjb250ZW50IHNob3VsZCBtYXRjaCBkYXRhLmpzb24uIik7CisgICAgICAg
IH0KKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsu
Z2V0UmVzcG9uc2VCb2R5LkZldGNoLkpTT04yIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZXQg
YXBwbGljYXRpb24vanNvbiBjb250ZW50IGFzIHRleHQuIiwKKyAgICAgICAgZXhwcmVzc2lvbjog
ImNyZWF0ZUZldGNoRm9ySlNPTjIoKSIsCisgICAgICAgIGNvbnRlbnRIYW5kbGVyKHtlcnJvciwg
c291cmNlQ29kZSwgY29udGVudH0pIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwoc291cmNlQ29kZS5taW1lVHlwZSwgImFwcGxpY2F0aW9uL2pzb24iLCAiTUlNRVR5cGUg
c2hvdWxkIGJlICdhcHBsaWNhdGlvbi9qc29uJy4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0RXF1YWwoY29udGVudCwgYHsianNvbiI6dHJ1ZSwidmFsdWUiOjQyfWAsICJKU09O
IGNvbnRlbnQgc2hvdWxkIG1hdGNoIHNwZWNpZmllZCBjb250ZW50LiIpOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmdldFJl
c3BvbnNlQm9keS5GZXRjaC5KU09OMyIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2V0IGFyYml0
cmFyeSAranNvbiBjb250ZW50IGFzIHRleHQuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImNyZWF0
ZUZldGNoRm9ySlNPTjMoKSIsCisgICAgICAgIGNvbnRlbnRIYW5kbGVyKHtlcnJvciwgc291cmNl
Q29kZSwgY29udGVudH0pIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwo
c291cmNlQ29kZS5taW1lVHlwZSwgImFwcGxpY2F0aW9uL3ZuZC5hcGkranNvbiIsICJNSU1FVHlw
ZSBzaG91bGQgYmUgJ2FwcGxpY2F0aW9uL3ZuZC5hcGkranNvbicuIik7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNvbnRlbnQsIGB7Impzb24iOnRydWUsInZhbHVlIjo5
OTl9YCwgIkpTT04gY29udGVudCBzaG91bGQgbWF0Y2ggc3BlY2lmaWVkIGNvbnRlbnQuIik7Cisg
ICAgICAgIH0KKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5l
dHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoLlNWRyIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAi
R2V0IGltYWdlL3N2Zyt4bWwgY29udGVudCBhcyB0ZXh0LiIsCisgICAgICAgIGV4cHJlc3Npb246
ICJjcmVhdGVGZXRjaEZvclNWRygpIiwKKyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBz
b3VyY2VDb2RlLCBjb250ZW50fSkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RF
cXVhbChzb3VyY2VDb2RlLm1pbWVUeXBlLCAiaW1hZ2Uvc3ZnK3htbCIsICJNSU1FVHlwZSBzaG91
bGQgYmUgJ2ltYWdlL3N2Zyt4bWwnLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RFcXVhbChjb250ZW50LAorYDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEw
MCAyMDAiPgorICA8cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSI1MCUiIGZpbGw9ImdyZWVuIi8+
Cis8L3N2Zz4KK2AsICJTVkcgY29udGVudCBzaG91bGQgYmUgdGV4dC4iKTsKKyAgICAgICAgfQor
ICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5nZXRS
ZXNwb25zZUJvZHkuRmV0Y2guUE5HIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZXQgaW1hZ2Uv
cG5nIGNvbnRlbnQuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImNyZWF0ZUZldGNoRm9yUE5HKCki
LAorICAgICAgICBjb250ZW50SGFuZGxlcih7ZXJyb3IsIHNvdXJjZUNvZGUsIGNvbnRlbnR9KSB7
CisgICAgICAgICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2NTQ5NT4gV2Vi
IEluc3BlY3RvcjogWEhSIC8gRmV0Y2ggZm9yIG5vbi10ZXh0IGNvbnRlbnQgc2hvdWxkIG5vdCBz
aG93IGdhcmJsZWQgdGV4dAorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChz
b3VyY2VDb2RlLm1pbWVUeXBlLCAiaW1hZ2UvcG5nIiwgIk1JTUVUeXBlIHNob3VsZCBiZSAnaW1h
Z2UvcG5nJy4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodHlwZW9m
IGNvbnRlbnQsICJzdHJpbmciLCAiSW1hZ2UgY29udGVudCBzaG91bGQgYmUgdGV4dC4iKTsKKyAg
ICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3Rz
IGZvciBnZXR0aW5nIHRoZSBjb250ZW50IG9mIEZldGNoIHJlcXVlc3RzLjwvcD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvcmVzb3VyY2VzL2RhdGEuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2VzL2RhdGEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi43ZTM2ODAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YS5odG1sCkBAIC0wLDAgKzEgQEAK
KzxzcGFuPkhlbGxvIFdvcmxkPC9zcGFuPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YS5qc29uIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YS5qc29uCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2MWZmYjcKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9kYXRhLmpz
b24KQEAgLTAsMCArMSBAQAoreyJqc29uIjogdHJ1ZSwgInZhbHVlIjogNDJ9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9kYXRh
LnN2ZyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Vz
L2RhdGEuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3YTQwOTgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L3Jlc291cmNlcy9kYXRhLnN2ZwpAQCAtMCwwICsxLDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9IlVURi04Ij8+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgdmlld0JveD0iMCAwIDEwMCAyMDAiPgorICA8cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSI1
MCUiIGZpbGw9ImdyZWVuIi8+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2RhdGEudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZGF0YS50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE2M2U4MgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2RhdGEudHh0
CkBAIC0wLDAgKzEgQEAKK1BsYWluIHRleHQgcmVzb3VyY2UuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9lY2hvLnBocCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2VjaG8ucGhw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4ZmIyOTQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNl
cy9lY2hvLnBocApAQCAtMCwwICsxLDcgQEAKKzw/cGhwCiskbWltZVR5cGUgPSBpc3NldCgkX0dF
VFsnbWltZXR5cGUnXSkgPyAkX0dFVFsnbWltZXR5cGUnXSA6ICd0ZXh0L3BsYWluJzsKKyRjb250
ZW50ID0gaXNzZXQoJF9HRVRbJ2NvbnRlbnQnXSkgPyAkX0dFVFsnY29udGVudCddIDogJ01pc3Np
bmcgbWltZXR5cGUgb3IgY29udGVudCBxdWVyeSBwYXJhbWV0ZXIuJzsKKworaGVhZGVyKCJDb250
ZW50LVR5cGU6ICRtaW1lVHlwZSIpOworZWNobyAkY29udGVudDsKKz8+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3hoci1yZXNwb25zZS1ib2R5
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
eGhyLXJlc3BvbnNlLWJvZHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjJlZjliYTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL3hoci1yZXNwb25zZS1ib2R5LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDM5IEBACitUZXN0cyBmb3IgZ2V0dGluZyB0aGUgY29udGVudCBvZiBYSFIgcmVxdWVz
dHMuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5Y
SFIKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5YSFIuVGV4
dAorUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIFhIUiB0eXBlLgorUEFTUzogTUlNRVR5cGUgc2hv
dWxkIGJlICd0ZXh0L3BsYWluJy4KK1BBU1M6IFRleHQgY29udGVudCBzaG91bGQgbWF0Y2ggZGF0
YS50eHQuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5Y
SFIuSFRNTAorUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIFhIUiB0eXBlLgorUEFTUzogTUlNRVR5
cGUgc2hvdWxkIGJlICd0ZXh0L2h0bWwnLgorUEFTUzogVGV4dCBjb250ZW50IHNob3VsZCBtYXRj
aCBkYXRhLmh0bWwuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3BvbnNl
Qm9keS5YSFIuSlNPTgorUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIFhIUiB0eXBlLgorUEFTUzog
TUlNRVR5cGUgc2hvdWxkIGJlICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLgorUEFTUzogSlNP
TiBjb250ZW50IHNob3VsZCBtYXRjaCBkYXRhLmpzb24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5YSFIuSlNPTjIKK1BBU1M6IFJlc291cmNlIHNob3Vs
ZCBiZSBYSFIgdHlwZS4KK1BBU1M6IE1JTUVUeXBlIHNob3VsZCBiZSAnYXBwbGljYXRpb24vanNv
bicuCitQQVNTOiBKU09OIGNvbnRlbnQgc2hvdWxkIG1hdGNoIHNwZWNpZmllZCBjb250ZW50Lgor
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5nZXRSZXNwb25zZUJvZHkuWEhSLkpTT04z
CitQQVNTOiBSZXNvdXJjZSBzaG91bGQgYmUgWEhSIHR5cGUuCitQQVNTOiBNSU1FVHlwZSBzaG91
bGQgYmUgJ2FwcGxpY2F0aW9uL3ZuZC5hcGkranNvbicuCitQQVNTOiBKU09OIGNvbnRlbnQgc2hv
dWxkIG1hdGNoIHNwZWNpZmllZCBjb250ZW50LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0
d29yay5nZXRSZXNwb25zZUJvZHkuWEhSLlNWRworUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIFhI
UiB0eXBlLgorUEFTUzogTUlNRVR5cGUgc2hvdWxkIGJlICdpbWFnZS9zdmcreG1sJy4KK1BBU1M6
IFNWRyBjb250ZW50IHNob3VsZCBiZSB0ZXh0LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0
d29yay5nZXRSZXNwb25zZUJvZHkuWEhSLlBORworUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIFhI
UiB0eXBlLgorUEFTUzogTUlNRVR5cGUgc2hvdWxkIGJlICdpbWFnZS9wbmcnLgorUEFTUzogSW1h
Z2UgY29udGVudCBzaG91bGQgYmUgdGV4dC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay94aHItcmVzcG9uc2UtYm9keS5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay94aHItcmVzcG9uc2UtYm9keS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4NWNmYjMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3hoci1yZXNw
b25zZS1ib2R5Lmh0bWwKQEAgLTAsMCArMSwxNDUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHhockdl
dCh1cmwpIHsKKyAgICBsZXQgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0OworICAgIHhoci5vcGVu
KCJHRVQiLCB1cmwsIHRydWUpOworICAgIHhoci5zZW5kKCk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0
ZVhIUkZvclRleHQoKSB7CisgICAgeGhyR2V0KCJyZXNvdXJjZXMvZGF0YS50eHQiKTsKK30KKwor
ZnVuY3Rpb24gY3JlYXRlWEhSRm9ySFRNTCgpIHsKKyAgICB4aHJHZXQoInJlc291cmNlcy9kYXRh
Lmh0bWwiKTsKK30KKworZnVuY3Rpb24gY3JlYXRlWEhSRm9ySlNPTigpIHsKKyAgICB4aHJHZXQo
InJlc291cmNlcy9kYXRhLmpzb24iKTsKK30KKworZnVuY3Rpb24gY3JlYXRlWEhSRm9ySlNPTjIo
KSB7CisgICAgeGhyR2V0KGByZXNvdXJjZXMvZWNoby5waHA/bWltZXR5cGU9YXBwbGljYXRpb24v
anNvbiZjb250ZW50PXsianNvbiI6dHJ1ZSwidmFsdWUiOjQyfWApOworfQorCitmdW5jdGlvbiBj
cmVhdGVYSFJGb3JKU09OMygpIHsKKyAgICB4aHJHZXQoYHJlc291cmNlcy9lY2hvLnBocD9taW1l
dHlwZT1hcHBsaWNhdGlvbi92bmQuYXBpJTJCanNvbiZjb250ZW50PXsianNvbiI6dHJ1ZSwidmFs
dWUiOjk5OX1gKTsKK30KKworZnVuY3Rpb24gY3JlYXRlWEhSRm9yU1ZHKCkgeworICAgIHhockdl
dCgicmVzb3VyY2VzL2RhdGEuc3ZnIik7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVhIUkZvclBORygp
IHsKKyAgICB4aHJHZXQoIi9yZXNvdXJjZXMvc3F1YXJlMTAwLnBuZyIpOworfQorCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3Vp
dGUoIk5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LlhIUiIpOworCisgICAgZnVuY3Rpb24gYWRkVGVz
dENhc2Uoe25hbWUsIGRlc2NyaXB0aW9uLCBleHByZXNzaW9uLCBjb250ZW50SGFuZGxlcn0pIHsK
KyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFtZSwgZGVzY3JpcHRp
b24sCisgICAgICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoZXhwcmVzc2lvbik7CisgICAgICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLkZyYW1lLmF3YWl0RXZlbnQoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50
LlJlc291cmNlV2FzQWRkZWQpCisgICAgICAgICAgICAgICAgICAgIC50aGVuKChldmVudCkgPT4g
eworICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc291cmNlID0gZXZlbnQuZGF0YS5yZXNv
dXJjZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwo
cmVzb3VyY2UudHlwZSwgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuWEhSLCAiUmVzb3VyY2Ug
c2hvdWxkIGJlIFhIUiB0eXBlLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c291cmNlLnJlcXVlc3RDb250ZW50KCk7CisgICAgICAgICAgICAgICAgICAgIH0pCisgICAgICAg
ICAgICAgICAgICAgIC50aGVuKGNvbnRlbnRIYW5kbGVyKQorICAgICAgICAgICAgICAgICAgICAu
dGhlbihyZXNvbHZlLCByZWplY3QpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9
CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNl
Qm9keS5YSFIuVGV4dCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2V0IHRleHQvcGxhaW4gY29u
dGVudCBhcyB0ZXh0LiIsCisgICAgICAgIGV4cHJlc3Npb246ICJjcmVhdGVYSFJGb3JUZXh0KCki
LAorICAgICAgICBjb250ZW50SGFuZGxlcih7ZXJyb3IsIHNvdXJjZUNvZGUsIGNvbnRlbnR9KSB7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUubWltZVR5
cGUsICJ0ZXh0L3BsYWluIiwgIk1JTUVUeXBlIHNob3VsZCBiZSAndGV4dC9wbGFpbicuIik7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNvbnRlbnQsICJQbGFpbiB0ZXh0
IHJlc291cmNlLlxuIiwgIlRleHQgY29udGVudCBzaG91bGQgbWF0Y2ggZGF0YS50eHQuIik7Cisg
ICAgICAgIH0KKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5l
dHdvcmsuZ2V0UmVzcG9uc2VCb2R5LlhIUi5IVE1MIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJH
ZXQgdGV4dC9odG1sIGNvbnRlbnQgYXMgdGV4dC4iLAorICAgICAgICBleHByZXNzaW9uOiAiY3Jl
YXRlWEhSRm9ySFRNTCgpIiwKKyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBzb3VyY2VD
b2RlLCBjb250ZW50fSkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChz
b3VyY2VDb2RlLm1pbWVUeXBlLCAidGV4dC9odG1sIiwgIk1JTUVUeXBlIHNob3VsZCBiZSAndGV4
dC9odG1sJy4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY29udGVu
dCwgIjxzcGFuPkhlbGxvIFdvcmxkPC9zcGFuPlxuIiwgIlRleHQgY29udGVudCBzaG91bGQgbWF0
Y2ggZGF0YS5odG1sLiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5YSFIuSlNPTiIsCisgICAg
ICAgIGRlc2NyaXB0aW9uOiAiR2V0IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSBjb250ZW50IGFz
IHRleHQuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImNyZWF0ZVhIUkZvckpTT04oKSIsCisgICAg
ICAgIGNvbnRlbnRIYW5kbGVyKHtlcnJvciwgc291cmNlQ29kZSwgY29udGVudH0pIHsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5taW1lVHlwZSwgImFw
cGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsICJNSU1FVHlwZSBzaG91bGQgYmUgJ2FwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbScuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFs
KGNvbnRlbnQsIGB7Impzb24iOiB0cnVlLCAidmFsdWUiOiA0Mn1cbmAsICJKU09OIGNvbnRlbnQg
c2hvdWxkIG1hdGNoIGRhdGEuanNvbi4iKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgYWRk
VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5nZXRSZXNwb25zZUJvZHkuWEhSLkpT
T04yIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZXQgYXBwbGljYXRpb24vanNvbiBjb250ZW50
IGFzIHRleHQuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImNyZWF0ZVhIUkZvckpTT04yKCkiLAor
ICAgICAgICBjb250ZW50SGFuZGxlcih7ZXJyb3IsIHNvdXJjZUNvZGUsIGNvbnRlbnR9KSB7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUubWltZVR5cGUs
ICJhcHBsaWNhdGlvbi9qc29uIiwgIk1JTUVUeXBlIHNob3VsZCBiZSAnYXBwbGljYXRpb24vanNv
bicuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNvbnRlbnQsIGB7
Impzb24iOnRydWUsInZhbHVlIjo0Mn1gLCAiSlNPTiBjb250ZW50IHNob3VsZCBtYXRjaCBzcGVj
aWZpZWQgY29udGVudC4iKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgYWRkVGVzdENhc2Uo
eworICAgICAgICBuYW1lOiAiTmV0d29yay5nZXRSZXNwb25zZUJvZHkuWEhSLkpTT04zIiwKKyAg
ICAgICAgZGVzY3JpcHRpb246ICJHZXQgYXJiaXRyYXJ5ICtqc29uIGNvbnRlbnQgYXMgdGV4dC4i
LAorICAgICAgICBleHByZXNzaW9uOiAiY3JlYXRlWEhSRm9ySlNPTjMoKSIsCisgICAgICAgIGNv
bnRlbnRIYW5kbGVyKHtlcnJvciwgc291cmNlQ29kZSwgY29udGVudH0pIHsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5taW1lVHlwZSwgImFwcGxpY2F0
aW9uL3ZuZC5hcGkranNvbiIsICJNSU1FVHlwZSBzaG91bGQgYmUgJ2FwcGxpY2F0aW9uL3ZuZC5h
cGkranNvbicuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNvbnRl
bnQsIGB7Impzb24iOnRydWUsInZhbHVlIjo5OTl9YCwgIkpTT04gY29udGVudCBzaG91bGQgbWF0
Y2ggc3BlY2lmaWVkIGNvbnRlbnQuIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIGFkZFRl
c3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LlhIUi5TVkci
LAorICAgICAgICBkZXNjcmlwdGlvbjogIkdldCBpbWFnZS9zdmcreG1sIGNvbnRlbnQgYXMgdGV4
dC4iLAorICAgICAgICBleHByZXNzaW9uOiAiY3JlYXRlWEhSRm9yU1ZHKCkiLAorICAgICAgICBj
b250ZW50SGFuZGxlcih7ZXJyb3IsIHNvdXJjZUNvZGUsIGNvbnRlbnR9KSB7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUubWltZVR5cGUsICJpbWFnZS9z
dmcreG1sIiwgIk1JTUVUeXBlIHNob3VsZCBiZSAnaW1hZ2Uvc3ZnK3htbCcuIik7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNvbnRlbnQsCitgPD94bWwgdmVyc2lvbj0i
MS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTAwIDIwMCI+CisgIDxyZWN0IHdpZHRoPSIxMDAlIiBoZWln
aHQ9IjUwJSIgZmlsbD0iZ3JlZW4iLz4KKzwvc3ZnPgorYCwgIlNWRyBjb250ZW50IHNob3VsZCBi
ZSB0ZXh0LiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5YSFIuUE5HIiwKKyAgICAgICAgZGVz
Y3JpcHRpb246ICJHZXQgaW1hZ2UvcG5nIGNvbnRlbnQuIiwKKyAgICAgICAgZXhwcmVzc2lvbjog
ImNyZWF0ZVhIUkZvclBORygpIiwKKyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBzb3Vy
Y2VDb2RlLCBjb250ZW50fSkgeworICAgICAgICAgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtp
dC5vcmcvYi8xNjU0OTU+IFdlYiBJbnNwZWN0b3I6IFhIUiAvIEZldGNoIGZvciBub24tdGV4dCBj
b250ZW50IHNob3VsZCBub3Qgc2hvdyBnYXJibGVkIHRleHQKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5taW1lVHlwZSwgImltYWdlL3BuZyIsICJNSU1F
VHlwZSBzaG91bGQgYmUgJ2ltYWdlL3BuZycuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdEVxdWFsKHR5cGVvZiBjb250ZW50LCAic3RyaW5nIiwgIkltYWdlIGNvbnRlbnQgc2hv
dWxkIGJlIHRleHQuIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RD
YXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+Cis8cD5UZXN0cyBmb3IgZ2V0dGluZyB0aGUgY29udGVudCBvZiBYSFIgcmVxdWVz
dHMuPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNjNj
NjM3Yi4uMWFjYzZlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTYgQEAK
IDIwMTYtMTItMDcgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAorICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBTb21lIHJlc291cmNlcyBmZXRjaGVkIHZpYSBGZXRjaCBBUEkg
ZG8gbm90IGhhdmUgZGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY1MjMwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTQ0OTIyMD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9w
cm90b2NvbC9QYWdlLmpzb246CisgICAgICAgIEFkZCBuZXcgRmV0Y2ggUGFnZS5SZXNvdXJjZVR5
cGUuCisKKzIwMTYtMTItMDcgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4K
KwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgYWJpbGl0eSB0byBkaXN0aW5ndWlzaCBpZiBh
IFNjcmlwdCB3YXMgcGFyc2VkIGFzIGEgbW9kdWxlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ5MDAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5
MzIzODE3PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90
b2NvbC9QYWdlLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29s
L1BhZ2UuanNvbgppbmRleCA2ZDQxZjEzLi44ZGYwZGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1BhZ2UuanNvbgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1BhZ2UuanNvbgpAQCAtNiw3ICs2LDcgQEAK
ICAgICAgICAgewogICAgICAgICAgICAgImlkIjogIlJlc291cmNlVHlwZSIsCiAgICAgICAgICAg
ICAidHlwZSI6ICJzdHJpbmciLAotICAgICAgICAgICAgImVudW0iOiBbIkRvY3VtZW50IiwgIlN0
eWxlc2hlZXQiLCAiSW1hZ2UiLCAiRm9udCIsICJTY3JpcHQiLCAiWEhSIiwgIldlYlNvY2tldCIs
ICJPdGhlciJdLAorICAgICAgICAgICAgImVudW0iOiBbIkRvY3VtZW50IiwgIlN0eWxlc2hlZXQi
LCAiSW1hZ2UiLCAiRm9udCIsICJTY3JpcHQiLCAiWEhSIiwgIkZldGNoIiwgIldlYlNvY2tldCIs
ICJPdGhlciJdLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlc291cmNlIHR5cGUgYXMg
aXQgd2FzIHBlcmNlaXZlZCBieSB0aGUgcmVuZGVyaW5nIGVuZ2luZS4iCiAgICAgICAgIH0sCiAg
ICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3MzMzMTNhLi4wNTQ1MTgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTcgQEAKKzIwMTYtMTItMDcgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxl
LmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBTb21lIHJlc291cmNlcyBmZXRjaGVkIHZp
YSBGZXRjaCBBUEkgZG8gbm90IGhhdmUgZGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MjMwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTQ0
OTIyMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
ZXN0czogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9mZXRjaC1yZXNwb25zZS1ib2R5Lmh0
bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsveGhyLXJlc3Bv
bnNlLWJvZHkuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVl
c3RCYXNlLmg6CisgICAgICAgIERpc3Rpbmd1aXNoIEZldGNoIHJlcXVlc3RzLgorCisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hSZXF1ZXN0Ojppbml0aWFsaXplV2l0aCk6CisgICAgICAgIFNldCB0aGUgcmVxdWVzdGVyIHR5
cGUgYXMgRmV0Y2guCisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVUaHJl
YWRhYmxlTG9hZGVyUmVzcG9uc2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVhIUlJlc3BvbnNlSW1wbCk6IERlbGV0ZWQuCisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlWEhSUmVzcG9uc2UpOiBEZWxldGVkLgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkRmluaXNo
WEhSTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRp
ZFJlY2VpdmVYSFJSZXNwb25zZSk6IERlbGV0ZWQuCisgICAgICAgIEFkZCBhIGdlbmVyaWMgd2F5
IGZvciBhIFRocmVhZGFibGVMb2FkZXIgbG9hZCB0byB1cGRhdGUgdGhlIHR5cGUgb2YgYSBuZXR3
b3JrIHJlcXVlc3QuCisgICAgICAgIFRoaXMgd2lsbCBpbmNsdWRlIGJvdGggWEhSIGFuZCBGZXRj
aCByZXF1ZXN0cy4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6aGFzVGV4dENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlWEhSVGV4dERlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFn
ZW50OjpyZXNvdXJjZVR5cGVKc29uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VB
Z2VudDo6Y2FjaGVkUmVzb3VyY2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dENvbnRl
bnRGb3JDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVPdGhlclJlc291cmNlVGV4dERlY29kZXIpOiBEZWxldGVk
LgorICAgICAgICBTaGFyZSB0aGUgbG9naWMgdGhhdCBjcmVhdGVzIGEgVGV4dCBEZWNvZGVycyBm
b3IgWEhSIHdpdGggb3RoZXIgbm9uLWJ1ZmZlcmVkIHJlcXVlc3RzCisgICAgICAgIChsaWtlIEZl
dGNoKS4gVGhpcyBtb3ZlcyB1cyB0byBpZGVudGljYWwgYmVoYXZpb3IgZm9yIG5vdy4KKworICAg
ICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKU09OTUlNRVR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNUZXh0TUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRm
b3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKyAgICAgICAgQmV0dGVyIGRldGVjdCBkaWZmZXJlbnQg
SlNPTiBjb250ZW50IGJhc2VkIG9uIE1JTUUgVHlwZS4KKwogMjAxNi0xMi0wNyAgWmFsYW4gQnVq
dGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6IGNvdW50
ID49IDEgaW4gV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TZXQ6OmNvbHVtbkNvdW50CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKaW5kZXggNTMyNjgz
My4uYjg3OWE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1
ZXN0LmNwcApAQCAtMTUxLDYgKzE1MSw3IEBAIEV4Y2VwdGlvbk9yPEZldGNoSGVhZGVycyY+IEZl
dGNoUmVxdWVzdDo6aW5pdGlhbGl6ZVdpdGgoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0CiAgICAg
bV9pbnRlcm5hbFJlcXVlc3Qub3B0aW9ucy5jcmVkZW50aWFscyA9IENyZWRlbnRpYWxzOjpPbWl0
OwogICAgIG1faW50ZXJuYWxSZXF1ZXN0LnJlZmVycmVyID0gQVNDSUlMaXRlcmFsKCJjbGllbnQi
KTsKICAgICBtX2ludGVybmFsUmVxdWVzdC5yZXF1ZXN0LnNldFVSTChyZXF1ZXN0VVJMKTsKKyAg
ICBtX2ludGVybmFsUmVxdWVzdC5yZXF1ZXN0LnNldFJlcXVlc3RlcihSZXNvdXJjZVJlcXVlc3Q6
OlJlcXVlc3Rlcjo6RmV0Y2gpOwogICAgIG1faW50ZXJuYWxSZXF1ZXN0LnJlcXVlc3Quc2V0SW5p
dGlhdG9ySWRlbnRpZmllcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnJlc291cmNlUmVxdWVz
dElkZW50aWZpZXIoKSk7CiAKICAgICByZXR1cm4gaW5pdGlhbGl6ZU9wdGlvbnMoaW5pdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA4
M2EwMjRiLi4zODYwZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5jcHAKQEAgLTEyNjEsNyArMTI2MSw2IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OnJlcXVlc3ROb2RlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgaW50
KiBuCiAgICAgICAgICpub2RlSWQgPSAwOwogfQogCi0vLyBzdGF0aWMKIFN0cmluZyBJbnNwZWN0
b3JET01BZ2VudDo6ZG9jdW1lbnRVUkxTdHJpbmcoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAg
IGlmICghZG9jdW1lbnQgfHwgZG9jdW1lbnQtPnVybCgpLmlzTnVsbCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRl
eCBhM2U2ZWY4Li44ZDRjMTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtNjI3LDYgKzYyNywxMiBAQCB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGludWVXaXRoUG9saWN5SWdub3JlSW1wbChG
cmFtZSogZnJhbWUsIERvY3VtZQogICAgIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlQnV0Q2Fu
Y2VsZWRJbXBsKGZyYW1lLCBsb2FkZXIsIGlkZW50aWZpZXIsIHIpOwogfQogCit2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZUlt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyJiBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcikKK3sKKyAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50KiBuZXR3b3JrQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2VudCgpKQorICAgICAgICBu
ZXR3b3JrQWdlbnQtPmRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2UoaWRlbnRpZmll
ciwgZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKTsKK30KKwogdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEs
IGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKEluc3Bl
Y3Rvck5ldHdvcmtBZ2VudCogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNw
ZWN0b3JOZXR3b3JrQWdlbnQoKSkKQEAgLTY2MywxMiArNjY5LDYgQEAgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEZpbmlzaFhIUkxvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3QKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZWNlaXZlWEhSUmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKLXsKLSAgICBpZiAoSW5zcGVjdG9yTmV0
d29ya0FnZW50KiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5l
dHdvcmtBZ2VudCgpKQotICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZFJlY2VpdmVYSFJSZXNwb25z
ZShpZGVudGlmaWVyKTsKLX0KLQogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxM
b2FkWEhSU3luY2hyb25vdXNseUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGlu
Z0FnZW50cykKIHsKICAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50KiBuZXR3b3JrQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2VudCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4
IGFmYmNmNGYuLjQxZTJjZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKKyNpbmNsdWRlICJEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRm9ybURhdGEuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMTU4LDExICsxNTksMTEgQEAgcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIGNvbnRpbnVlQWZ0ZXJYRnJhbWVPcHRpb25zRGVuaWVkKEZyYW1lKiwgRG9jdW1l
bnRMb2FkZXImLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKICAgICBzdGF0aWMgdm9pZCBjb250aW51ZVdpdGhQb2xpY3lEb3dubG9hZChGcmFtZSos
IERvY3VtZW50TG9hZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgY29udGludWVXaXRoUG9saWN5SWdub3JlKEZy
YW1lKiwgRG9jdW1lbnRMb2FkZXImLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlVGhyZWFkYWJsZUxv
YWRlclJlc3BvbnNlKERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoRnJhbWUqLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmcoRnJh
bWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZp
bmlzaFRpbWUpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKEZyYW1lKiwgRG9jdW1l
bnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hYSFJMb2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBk
ZWNvZGVkVGV4dCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5z
aWduZWQgc2VuZExpbmVOdW1iZXIsIHVuc2lnbmVkIHNlbmRDb2x1bW5OdW1iZXIpOwotICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVYSFJSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsTG9hZFhIUlN5
bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIHN0YXRpYyB2b2lkIGRp
ZExvYWRYSFJTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICBzdGF0
aWMgdm9pZCBzY3JpcHRJbXBvcnRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZyk7CkBAIC0zMjksMTEg
KzMzMCwxMSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGNvbnRpbnVlQWZ0ZXJYRnJhbWVP
cHRpb25zRGVuaWVkSW1wbChGcmFtZSosIERvY3VtZW50TG9hZGVyJiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgY29u
dGludWVXaXRoUG9saWN5RG93bmxvYWRJbXBsKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXImLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0
aWMgdm9pZCBjb250aW51ZVdpdGhQb2xpY3lJZ25vcmVJbXBsKEZyYW1lKiwgRG9jdW1lbnRMb2Fk
ZXImLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
KyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciog
ZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgc3RhdGlj
IHZvaWQgZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBkb3VibGUgZmluaXNoVGltZSk7CiAg
ICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VF
cnJvciYpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaFhIUkxvYWRpbmdJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBkZWNvZGVkVGV4dCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVS
TCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIsIHVuc2lnbmVkIHNlbmRDb2x1bW5OdW1iZXIpOwot
ICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVYSFJSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CiAgICAgc3RhdGljIHZvaWQgd2lsbExv
YWRYSFJTeW5jaHJvbm91c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CiAgICAgc3RhdGlj
IHZvaWQgZGlkTG9hZFhIUlN5bmNocm9ub3VzbHlJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmKTsK
ICAgICBzdGF0aWMgdm9pZCBzY3JpcHRJbXBvcnRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpOwpA
QCAtODU5LDggKzg2MCw3IEBAIGlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291CiBpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKGNvbnN0
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCiB7CiAgICAgLy8gQ2Fs
bCB0aGlzIHVuY29uZGl0aW9uYWxseSBzbyB0aGF0IHdlJ3JlIGFibGUgdG8gbG9nIHRvIGNvbnNv
bGUgd2l0aCBubyBmcm9udC1lbmQgYXR0YWNoZWQuCi0gICAgaWYgKGNvb2tpZS5pc1ZhbGlkKCkp
Ci0gICAgICAgIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChjb29raWUsIGlkZW50aWZp
ZXIsIGxvYWRlciwgcmVzcG9uc2UsIHJlc291cmNlTG9hZGVyKTsKKyAgICBkaWRSZWNlaXZlUmVz
b3VyY2VSZXNwb25zZUltcGwoY29va2llLCBpZGVudGlmaWVyLCBsb2FkZXIsIHJlc3BvbnNlLCBy
ZXNvdXJjZUxvYWRlcik7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6Y29udGludWVBZnRlclhGcmFtZU9wdGlvbnNEZW5pZWQoRnJhbWUqIGZyYW1lLCBEb2N1bWVu
dExvYWRlciYgbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHIpCkBAIC04ODEsNiArODgxLDEyIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6Y29udGludWVXaXRoUG9saWN5SWdub3JlKEZyYW1lKiBmcmFtZSwgRG9j
CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZVdpdGhQb2xpY3lJZ25vcmVJ
bXBsKGZyYW1lLCBsb2FkZXIsIGlkZW50aWZpZXIsIHIpOwogfQogCitpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2Uo
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuZG9jdW1lbnQoKSkpCisgICAgICAgIGRpZFJlY2VpdmVUaHJlYWRh
YmxlTG9hZGVyUmVzcG9uc2VJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBkb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIsIGlkZW50aWZpZXIpOworfQorICAgIAogaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCkBAIC05MDUs
MTIgKzkxMSw2IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlu
aXNoWEhSTG9hZGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAgICAgIGRpZEZpbmlzaFhI
UkxvYWRpbmdJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBkZWNvZGVkVGV4
dCwgdXJsLCBzZW5kVVJMLCBzZW5kTGluZU51bWJlciwgc2VuZENvbHVtbk51bWJlcik7CiB9CiAK
LWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVhIUlJlc3Bv
bnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllcikKLXsKLSAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQotICAgICAgICBkaWRS
ZWNlaXZlWEhSUmVzcG9uc2VJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyKTsK
LX0KLQogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUlN5
bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpZiAo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdB
Z2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCBlZDI5ZTRiLi40OGU3MTQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlLmgiCiAjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5o
IgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCIKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgiCkBAIC00NTAsMTYgKzQ1MSwyMCBAQCB2b2lkIEluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVNjcmlwdFJlc3BvbnNlKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllcikKICAgICBtX3Jlc291cmNlc0RhdGEtPnNldFJlc291cmNlVHlwZShJZGVudGlm
aWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgSW5zcGVjdG9yUGFnZUFnZW50OjpT
Y3JpcHRSZXNvdXJjZSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNl
aXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyJiBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIpCit7CisgICAg
U3RyaW5nIGluaXRpYXRvciA9IGRvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5vcHRpb25zKCkuaW5p
dGlhdG9yOworICAgIGlmIChpbml0aWF0b3IgPT0gY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlh
dG9ycygpLmZldGNoKQorICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnNldFJlc291cmNlVHlwZShJ
ZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgSW5zcGVjdG9yUGFnZUFn
ZW50OjpGZXRjaFJlc291cmNlKTsKKyAgICBlbHNlIGlmIChpbml0aWF0b3IgPT0gY2FjaGVkUmVz
b3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLnhtbGh0dHByZXF1ZXN0KQorICAgICAgICBtX3Jlc291
cmNlc0RhdGEtPnNldFJlc291cmNlVHlwZShJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChp
ZGVudGlmaWVyKSwgSW5zcGVjdG9yUGFnZUFnZW50OjpYSFJSZXNvdXJjZSk7Cit9CisKIHZvaWQg
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRGaW5pc2hYSFJMb2FkaW5nKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkZWNvZGVkVGV4dCkKIHsKICAgICBtX3Jlc291cmNl
c0RhdGEtPnNldFJlc291cmNlQ29udGVudChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChp
ZGVudGlmaWVyKSwgZGVjb2RlZFRleHQpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6ZGlkUmVjZWl2ZVhIUlJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKLXsKLSAg
ICBtX3Jlc291cmNlc0RhdGEtPnNldFJlc291cmNlVHlwZShJZGVudGlmaWVyc0ZhY3Rvcnk6OnJl
cXVlc3RJZChpZGVudGlmaWVyKSwgSW5zcGVjdG9yUGFnZUFnZW50OjpYSFJSZXNvdXJjZSk7Ci19
Ci0KIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojp3aWxsTG9hZFhIUlN5bmNocm9ub3VzbHko
KQogewogICAgIG1fbG9hZGluZ1hIUlN5bmNocm9ub3VzbHkgPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IDcwYWRmOWMu
LmEwN2UwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmgKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
Q2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwor
Y2xhc3MgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50
OwogY2xhc3MgTmV0d29ya0xvYWRUaW1pbmc7CiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VzRGF0YTsK
QEAgLTgxLDggKzgyLDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyJiwgZG91YmxlIGZpbmlzaFRpbWUp
OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1
bWVudExvYWRlciYsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZExvYWRSZXNv
dXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciYsIENhY2hlZFJlc291cmNlJik7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJik7CiAgICAgdm9pZCBkaWRGaW5p
c2hYSFJMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkZWNv
ZGVkVGV4dCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlWEhSUmVzcG9uc2UodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyKTsKICAgICB2b2lkIHdpbGxMb2FkWEhSU3luY2hyb25vdXNseSgpOwogICAgIHZv
aWQgZGlkTG9hZFhIUlN5bmNocm9ub3VzbHkoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTY3JpcHRS
ZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAyNDhkNjNhLi5jNDZjOGI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApA
QCAtMTE0LDI2ICsxMTQsMTUgQEAgc3RhdGljIGJvb2wgcHJlcGFyZUNhY2hlZFJlc291cmNlQnVm
ZmVyKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSwgYm9vbCogaGEKIAogc3RhdGljIGJv
b2wgaGFzVGV4dENvbnRlbnQoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQogeworICAg
IC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTY1NDk1PiBXZWIgSW5zcGVjdG9yOiBY
SFIgLyBGZXRjaCBmb3Igbm9uLXRleHQgY29udGVudCBzaG91bGQgbm90IHNob3cgZ2FyYmxlZCB0
ZXh0CisgICAgLy8gV2Ugc2hvdWxkIG5vdCBhc3N1bWUgWEhSIC8gRmV0Y2ggaGF2ZSB0ZXh0IGNv
bnRlbnQuCisKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSB0eXBlID0gSW5z
cGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5cGUoKmNhY2hlZFJlc291cmNlKTsKICAg
ICByZXR1cm4gdHlwZSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6OkRvY3VtZW50UmVzb3VyY2UKICAg
ICAgICAgfHwgdHlwZSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6OlN0eWxlc2hlZXRSZXNvdXJjZQog
ICAgICAgICB8fCB0eXBlID09IEluc3BlY3RvclBhZ2VBZ2VudDo6U2NyaXB0UmVzb3VyY2UKLSAg
ICAgICAgfHwgdHlwZSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6OlhIUlJlc291cmNlOwotfQotCi1z
dGF0aWMgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGNyZWF0ZVhIUlRleHREZWNvZGVyKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKLXsK
LSAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlcjsKLSAgICBpZiAoIXRleHRF
bmNvZGluZ05hbWUuaXNFbXB0eSgpKQotICAgICAgICBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVj
b2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgdGV4dEVuY29kaW5nTmFtZSk7Ci0gICAgZWxzZSBp
ZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZShtaW1lVHlwZSkpIHsKLSAgICAgICAg
ZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIik7
Ci0gICAgICAgIGRlY29kZXItPnVzZUxlbmllbnRYTUxEZWNvZGluZygpOwotICAgIH0gZWxzZSBp
ZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L2h0bWwiKSkK
LSAgICAgICAgZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9odG1s
IiwgIlVURi04Iik7Ci0gICAgZWxzZQotICAgICAgICBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVj
b2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgIlVURi04Iik7Ci0gICAgcmV0dXJuIGRlY29kZXI7
CisgICAgICAgIHx8IHR5cGUgPT0gSW5zcGVjdG9yUGFnZUFnZW50OjpYSFJSZXNvdXJjZQorICAg
ICAgICB8fCB0eXBlID09IEluc3BlY3RvclBhZ2VBZ2VudDo6RmV0Y2hSZXNvdXJjZTsKIH0KIAog
Ym9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNv
dXJjZSogY2FjaGVkUmVzb3VyY2UsIFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRFbmNvZGVk
KQpAQCAtMTc2LDcgKzE2NSw3IEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNv
dXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlLCBTCiAgICAgICAgICAg
ICBhdXRvKiBidWZmZXIgPSBjYWNoZWRSZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKICAgICAg
ICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyID0gY3JlYXRlWEhSVGV4
dERlY29kZXIoY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgY2FjaGVkUmVz
b3VyY2UtPnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpKTsKKyAgICAgICAgICAgIFJlZlB0
cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyID0gSW5zcGVjdG9yUGFnZUFnZW50OjpjcmVh
dGVUZXh0RGVjb2RlcihjYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBjYWNo
ZWRSZXNvdXJjZS0+cmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1lKCkpOwogICAgICAgICAgICAg
Ly8gV2Ugc2hvdyBjb250ZW50IGZvciByYXcgcmVzb3VyY2VzIG9ubHkgZm9yIGNlcnRhaW4gbWlt
ZSB0eXBlcyAodGV4dCwgaHRtbCBhbmQgeG1sKS4gT3RoZXJ3aXNlIGRlY29kZXIgd2lsbCBiZSBu
dWxsLgogICAgICAgICAgICAgaWYgKCFkZWNvZGVyKQogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTE5OSw3ICsxODgsNiBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJl
c291cmNlQ29udGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZQogICAgIHJl
dHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNv
ZGUsIHJlc3VsdCk7CiB9CiAKLS8vIHN0YXRpYwogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNo
YXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJl
c3VsdCkKIHsKICAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkg
OiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUs
IHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CkBAIC0yMTUsNyArMjAzLDYgQEAgYm9vbCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNp
emUsIGNvbnN0IFN0cmkKICAgICByZXR1cm4gZGVjb2RlQnVmZmVyKGRhdGEsIHNpemUsIHRleHRF
bmNvZGluZ05hbWUsIHJlc3VsdCk7CiB9CiAKLS8vIHN0YXRpYwogdm9pZCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OnJlc291cmNlQ29udGVudChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEZyYW1lKiBm
cmFtZSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRFbmNvZGVk
KQogewogICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBhc3NlcnREb2N1bWVudExvYWRlcihl
cnJvclN0cmluZywgZnJhbWUpOwpAQCAtMjk3LDYgKzI4NCw4IEBAIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlBhZ2U6OlJlc291cmNlVHlwZSBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpz
b24oSW5zCiAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNvdXJj
ZVR5cGU6OlNjcmlwdDsKICAgICBjYXNlIFhIUlJlc291cmNlOgogICAgICAgICByZXR1cm4gSW5z
cGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlOjpYSFI7CisgICAgY2FzZSBGZXRj
aFJlc291cmNlOgorICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6UmVz
b3VyY2VUeXBlOjpGZXRjaDsKICAgICBjYXNlIFdlYlNvY2tldFJlc291cmNlOgogICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlOjpXZWJTb2NrZXQ7
CiAgICAgY2FzZSBPdGhlclJlc291cmNlOgpAQCAtMzE1LDE5ICszMDQsMjYgQEAgSW5zcGVjdG9y
UGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJj
ZVR5cGUoY29uc3QgQ2EKICNlbmRpZgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNv
dXJjZToKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6Rm9udFJlc291cmNlOwot
ICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQ6Ci0gICAgICAgIC8vIEZhbGwg
dGhyb3VnaC4KICNpZiBFTkFCTEUoWFNMVCkKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpYU0xT
dHlsZVNoZWV0OgogI2VuZGlmCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVl
dDoKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6U3R5bGVzaGVldFJlc291cmNl
OwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdDoKICAgICAgICAgcmV0dXJuIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6U2NyaXB0UmVzb3VyY2U7Ci0gICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6
TWVkaWFSZXNvdXJjZToKLSAgICBjYXNlIENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZToKLSAg
ICAgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6WEhSUmVzb3VyY2U7CiAgICAgY2FzZSBD
YWNoZWRSZXNvdXJjZTo6TWFpblJlc291cmNlOgogICAgICAgICByZXR1cm4gSW5zcGVjdG9yUGFn
ZUFnZW50OjpEb2N1bWVudFJlc291cmNlOworICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6Ok1lZGlh
UmVzb3VyY2U6CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2U6IHsKKyAgICAg
ICAgc3dpdGNoIChjYWNoZWRSZXNvdXJjZS5yZXNvdXJjZVJlcXVlc3QoKS5yZXF1ZXN0ZXIoKSkg
eworICAgICAgICBjYXNlIFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpGZXRjaDoKKyAgICAg
ICAgICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OkZldGNoUmVzb3VyY2U7CisgICAgICAg
IGNhc2UgUmVzb3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6Ok1haW46CisgICAgICAgICAgICByZXR1
cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpEb2N1bWVudFJlc291cmNlOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6WEhSUmVzb3VyY2U7Cisg
ICAgICAgIH0KKyAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAt
MzM5LDYgKzMzNSwyMyBAQCBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNvdXJjZVR5cGUg
SW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5cGVKcwogICAgIHJldHVybiByZXNv
dXJjZVR5cGVKc29uKGNhY2hlZFJlc291cmNlVHlwZShjYWNoZWRSZXNvdXJjZSkpOwogfQogCitS
ZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gSW5zcGVjdG9yUGFnZUFnZW50OjpjcmVhdGVUZXh0
RGVjb2Rlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGlu
Z05hbWUpCit7CisgICAgaWYgKCF0ZXh0RW5jb2RpbmdOYW1lLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShBU0NJSUxpdGVyYWwoInRleHQvcGxh
aW4iKSwgdGV4dEVuY29kaW5nTmFtZSk7CisKKyAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNU
ZXh0TUlNRVR5cGUobWltZVR5cGUpKQorICAgICAgICByZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rl
cjo6Y3JlYXRlKG1pbWVUeXBlLCAiVVRGLTgiKTsKKworICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1hNTE1JTUVUeXBlKG1pbWVUeXBlKSkgeworICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNl
RGVjb2Rlcj4gZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShBU0NJSUxpdGVy
YWwoImFwcGxpY2F0aW9uL3htbCIpKTsKKyAgICAgICAgZGVjb2Rlci0+dXNlTGVuaWVudFhNTERl
Y29kaW5nKCk7CisgICAgICAgIHJldHVybiBkZWNvZGVyOworICAgIH0KKworICAgIHJldHVybiBU
ZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoQVNDSUlMaXRlcmFsKCJ0ZXh0L3BsYWluIiksICJV
VEYtOCIpOworfQorCiBJbnNwZWN0b3JQYWdlQWdlbnQ6Okluc3BlY3RvclBhZ2VBZ2VudChQYWdl
QWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCwgSW5zcGVjdG9y
T3ZlcmxheSogb3ZlcmxheSkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwo
IlBhZ2UiKSwgY29udGV4dCkKICAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yOjpQYWdlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5k
Um91dGVyKSkKQEAgLTU2Miw3ICs1NzUsNiBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0
UmVzb3VyY2VDb250ZW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaQogc3Rh
dGljIGJvb2wgdGV4dENvbnRlbnRGb3JDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2Fj
aGVkUmVzb3VyY2UsIFN0cmluZyogcmVzdWx0KQogewogICAgIGlmIChoYXNUZXh0Q29udGVudChj
YWNoZWRSZXNvdXJjZSkpIHsKLSAgICAgICAgU3RyaW5nIGNvbnRlbnQ7CiAgICAgICAgIGJvb2wg
YmFzZTY0RW5jb2RlZDsKICAgICAgICAgaWYgKEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVz
b3VyY2VDb250ZW50KGNhY2hlZFJlc291cmNlLCByZXN1bHQsICZiYXNlNjRFbmNvZGVkKSkgewog
ICAgICAgICAgICAgQVNTRVJUKCFiYXNlNjRFbmNvZGVkKTsKQEAgLTc2OCw3ICs3ODAsNiBAQCBG
cmFtZSogSW5zcGVjdG9yUGFnZUFnZW50Ojphc3NlcnRGcmFtZShFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgZgogICAgIHJldHVybiBmcmFtZTsKIH0KIAotLy8gc3RhdGlj
CiBEb2N1bWVudExvYWRlciogSW5zcGVjdG9yUGFnZUFnZW50Ojphc3NlcnREb2N1bWVudExvYWRl
cihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEZyYW1lKiBmcmFtZSkKIHsKICAgICBGcmFtZUxv
YWRlciYgZnJhbWVMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggNTA2YzQ2Mi4uYjUzZWE0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtNTEs
MTAgKzUxLDExIEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3Mg
SW5zcGVjdG9yT3ZlcmxheTsKIGNsYXNzIE1haW5GcmFtZTsKLWNsYXNzIFVSTDsKIGNsYXNzIFBh
Z2U7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBUZXh0
UmVzb3VyY2VEZWNvZGVyOworY2xhc3MgVVJMOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmlu
ZzsKIApAQCAtNzEsNiArNzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZvbnRSZXNvdXJjZSwKICAg
ICAgICAgU2NyaXB0UmVzb3VyY2UsCiAgICAgICAgIFhIUlJlc291cmNlLAorICAgICAgICBGZXRj
aFJlc291cmNlLAogICAgICAgICBXZWJTb2NrZXRSZXNvdXJjZSwKICAgICAgICAgT3RoZXJSZXNv
dXJjZQogICAgIH07CkBAIC04NCw2ICs4Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSW5zcGVj
dG9yOjpQcm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZUpzb24oUmVzb3Vy
Y2VUeXBlKTsKICAgICBzdGF0aWMgUmVzb3VyY2VUeXBlIGNhY2hlZFJlc291cmNlVHlwZShjb25z
dCBDYWNoZWRSZXNvdXJjZSYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdl
OjpSZXNvdXJjZVR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlSnNvbihjb25zdCBDYWNoZWRSZXNvdXJj
ZSYpOworICAgIHN0YXRpYyBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gY3JlYXRlVGV4dERl
Y29kZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdO
YW1lKTsKIAogICAgIC8vIFBhZ2UgQVBJIGZvciBJbnNwZWN0b3JGcm9udGVuZAogICAgIHZvaWQg
ZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggMjA4NDUxMi4uY2NlY2EyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApA
QCAtODA1LDcgKzgwNSw2IEBAIFJlZjxJbnNwZWN0b3JTdHlsZVNoZWV0PiBJbnNwZWN0b3JTdHls
ZVNoZWV0OjpjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSW5zcGVjdG9yU3R5bGVTaGVldChwYWdlQWdlbnQsIGlkLCBXVEZNb3ZlKHBh
Z2VTdHlsZVNoZWV0KSwgb3JpZ2luLCBkb2N1bWVudFVSTCwgbGlzdGVuZXIpKTsKIH0KIAotLy8g
c3RhdGljCiBTdHJpbmcgSW5zcGVjdG9yU3R5bGVTaGVldDo6c3R5bGVTaGVldFVSTChDU1NTdHls
ZVNoZWV0KiBwYWdlU3R5bGVTaGVldCkKIHsKICAgICBpZiAocGFnZVN0eWxlU2hlZXQgJiYgIXBh
Z2VTdHlsZVNoZWV0LT5jb250ZW50cygpLmJhc2VVUkwoKS5pc0VtcHR5KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA5ZmYy
OGUxLi4xZWI2MjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5jcHAKQEAgLTEyOSwyMSArMTI5LDYgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6cmVzb3VyY2VDcmVhdGVkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBT
dHJpbmcKICAgICBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLnNldChyZXF1ZXN0SWQsIG5l
dyBSZXNvdXJjZURhdGEocmVxdWVzdElkLCBsb2FkZXJJZCkpOwogfQogCi1zdGF0aWMgUmVmUHRy
PFRleHRSZXNvdXJjZURlY29kZXI+IGNyZWF0ZU90aGVyUmVzb3VyY2VUZXh0RGVjb2Rlcihjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCi17Ci0g
ICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXI7Ci0gICAgaWYgKCF0ZXh0RW5j
b2RpbmdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29k
ZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiIsIHRleHRFbmNvZGluZ05hbWUpOwotICAgIGVsc2UgaWYg
KE1JTUVUeXBlUmVnaXN0cnk6OmlzWE1MTUlNRVR5cGUobWltZVR5cGUpKSB7Ci0gICAgICAgIGRl
Y29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL3htbCIpOwot
ICAgICAgICBkZWNvZGVyLT51c2VMZW5pZW50WE1MRGVjb2RpbmcoKTsKLSAgICB9IGVsc2UgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC9odG1sIikpCi0g
ICAgICAgIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvaHRtbCIs
ICJVVEYtOCIpOwotICAgIGVsc2UgaWYgKG1pbWVUeXBlID09ICJ0ZXh0L3BsYWluIikKLSAgICAg
ICAgZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiIsICJJ
U08tODg1OS0xIik7Ci0gICAgcmV0dXJuIGRlY29kZXI7Ci19Ci0KIHZvaWQgTmV0d29ya1Jlc291
cmNlc0RhdGE6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0
IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAg
ICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSByZXNvdXJjZURhdGFGb3JSZXF1ZXN0SWQo
cmVxdWVzdElkKTsKQEAgLTE1MSw3ICsxMzYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbgog
ICAgICAgICByZXR1cm47CiAgICAgcmVzb3VyY2VEYXRhLT5zZXRGcmFtZUlkKGZyYW1lSWQpOwog
ICAgIHJlc291cmNlRGF0YS0+c2V0VXJsKHJlc3BvbnNlLnVybCgpKTsKLSAgICByZXNvdXJjZURh
dGEtPnNldERlY29kZXIoY3JlYXRlT3RoZXJSZXNvdXJjZVRleHREZWNvZGVyKHJlc3BvbnNlLm1p
bWVUeXBlKCksIHJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSkpOworICAgIHJlc291cmNlRGF0
YS0+c2V0RGVjb2RlcihJbnNwZWN0b3JQYWdlQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKHJlc3Bv
bnNlLm1pbWVUeXBlKCksIHJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSkpOwogICAgIHJlc291
cmNlRGF0YS0+c2V0SFRUUFN0YXR1c0NvZGUocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKaW5kZXggZTg3ODFlMy4uZjkwMzQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTI5NCw2ICsyOTQsOCBAQCB2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29ucwogewogICAgIEFTU0VSVChtX2NsaWVudCk7CiAKKyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9u
c2UoKnRoaXMsIGlkZW50aWZpZXIpOworCiAgICAgQVNTRVJUKHJlc3BvbnNlLnR5cGUoKSAhPSBS
ZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpFcnJvcik7CiAgICAgaWYgKHJlc3BvbnNlLnR5cGUoKSA9
PSBSZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpEZWZhdWx0KSB7CiAgICAgICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgUmVzb3VyY2VSZXNwb25zZTo6ZmlsdGVyUmVz
cG9uc2UocmVzcG9uc2UsIHRhaW50aW5nKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggM2RhOGM1ZS4uNTYxMzFjZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApAQCAt
NTgsNiArNTgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBz
ZXREZWZlcnNMb2FkaW5nKGJvb2wpOwogCiAgICAgICAgIGZyaWVuZCBDcm9zc09yaWdpblByZWZs
aWdodENoZWNrZXI7CisgICAgICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b247CisgICAgICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ7CiAKICAgICAg
ICAgdXNpbmcgUmVmQ291bnRlZDxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+OjpyZWY7CiAgICAg
ICAgIHVzaW5nIFJlZkNvdW50ZWQ8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPjo6ZGVyZWY7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCmluZGV4IGFkZDI4
ZmYuLjM2NmY5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBl
UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0
cnkuY3BwCkBAIC01MTYsNiArNTE2LDI0IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBw
b3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICByZXR1
cm4gc3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlcy0+Y29udGFpbnMobWltZVR5cGUpOwogfQog
Citib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSlNPTk1JTUVUeXBlKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCit7CisgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1p
bWVUeXBlLCAiYXBwbGljYXRpb24vanNvbiIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IC8vIFdoZW4gZGV0ZWN0aW5nICtqc29uIGVuc3VyZSB0aGVyZSBpcyBhIG5vbi1lbXB0eSB0eXBl
IC8gc3VidHlwZSBwcmVjZWVkaW5nIHRoZSBzdWZmaXguCisgICAgaWYgKG1pbWVUeXBlLmVuZHNX
aXRoKCIranNvbiIsIGZhbHNlKSAmJiBtaW1lVHlwZS5sZW5ndGgoKSA+PSA4KSB7CisgICAgICAg
IHNpemVfdCBzbGFzaFBvc2l0aW9uID0gbWltZVR5cGUuZmluZCgnLycpOworICAgICAgICBpZiAo
c2xhc2hQb3NpdGlvbiAhPSBub3RGb3VuZCAmJiBzbGFzaFBvc2l0aW9uID4gMCAmJiBzbGFzaFBv
c2l0aW9uIDw9IG1pbWVUeXBlLmxlbmd0aCgpIC0gNikKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsK
ICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQpAQCAtNTQ2LDcgKzU2NCw3IEBAIGJvb2wgTUlN
RVR5cGVSZWdpc3RyeTo6aXNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQogYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1RleHRNSU1FVHlwZShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKQogewogICAgIHJldHVybiBpc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlw
ZShtaW1lVHlwZSkKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWlt
ZVR5cGUsICJhcHBsaWNhdGlvbi9qc29uIikgLy8gUmVuZGVyIEpTT04gYXMgdGV4dC9wbGFpbi4K
KyAgICAgICAgfHwgaXNTdXBwb3J0ZWRKU09OTUlNRVR5cGUobWltZVR5cGUpIC8vIFJlbmRlciBK
U09OIGFzIHRleHQvcGxhaW4uCiAgICAgICAgIHx8IChtaW1lVHlwZS5zdGFydHNXaXRoKCJ0ZXh0
LyIsIGZhbHNlKQogICAgICAgICAgICAgJiYgIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KG1pbWVUeXBlLCAidGV4dC9odG1sIikKICAgICAgICAgICAgICYmICFlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQveG1sIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01JTUVUeXBlUmVnaXN0cnkuaAppbmRleCA2NzQ5NTQ2Li4zZmQ4MGQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCkBAIC01NCw4ICs1NCw5IEBAIHB1
YmxpYzoKICAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBNSU1FIHR5cGUgaXMgc3VpdGFibGUgZm9y
IGJlaW5nIGVuY29kZWQuCiAgICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
Rm9yRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKLSAgICAvLyBDaGVjayB0byBz
ZWUgaWYgYSBNSU1FIHR5cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIGxvYWRlZCBhcyBhIEphdmFT
Y3JpcHQgcmVzb3VyY2UuCi0gICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlN
RVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7ICAgIAorICAgIC8vIENoZWNrIHRvIHNlZSBp
ZiBhIE1JTUUgdHlwZSBpcyBzdWl0YWJsZSBmb3IgYmVpbmcgbG9hZGVkIGFzIGEgSmF2YVNjcmlw
dCBvciBKU09OIHJlc291cmNlLgorICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSmF2YVNjcmlw
dE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIHN0YXRpYyBib29sIGlzU3Vw
cG9ydGVkSlNPTk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgLy8gQ2hl
Y2sgdG8gc2VlIGlmIGEgbm9uLWltYWdlIE1JTUUgdHlwZSBpcyBzdWl0YWJsZSBmb3IgYmVpbmcg
bG9hZGVkIGFzIGEKICAgICAvLyBkb2N1bWVudCBpbiBhIGZyYW1lLiBJbmNsdWRlcyBzdXBwb3J0
ZWQgSmF2YVNjcmlwdCBNSU1FIHR5cGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAppbmRleCBjNzNlNzZjLi43MTFhNDZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVx
dWVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVxdWVzdEJhc2UuaApAQCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlnbm9y
ZUZvclJlcXVlc3RDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1faWdub3JlRm9yUmVxdWVzdENvdW50
OyB9CiAgICAgdm9pZCBzZXRJZ25vcmVGb3JSZXF1ZXN0Q291bnQoYm9vbCBpZ25vcmVGb3JSZXF1
ZXN0Q291bnQpIHsgbV9pZ25vcmVGb3JSZXF1ZXN0Q291bnQgPSBpZ25vcmVGb3JSZXF1ZXN0Q291
bnQ7IH0KIAotICAgIGVudW0gY2xhc3MgUmVxdWVzdGVyIHsgVW5zcGVjaWZpZWQsIE1haW4sIFhI
UiwgTWVkaWEgfTsKKyAgICBlbnVtIGNsYXNzIFJlcXVlc3RlciB7IFVuc3BlY2lmaWVkLCBNYWlu
LCBYSFIsIEZldGNoLCBNZWRpYSB9OwogICAgIFJlcXVlc3RlciByZXF1ZXN0ZXIoKSBjb25zdCB7
IHJldHVybiBtX3JlcXVlc3RlcjsgfQogICAgIHZvaWQgc2V0UmVxdWVzdGVyKFJlcXVlc3RlciBy
ZXF1ZXN0ZXIpIHsgbV9yZXF1ZXN0ZXIgPSByZXF1ZXN0ZXI7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggNmI3ZGU4Yy4uZmVmNjE2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xMDE1LDEwICsxMDE1LDggQEAgdm9pZCBYTUxIdHRw
UmVxdWVzdDo6ZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWdu
ZWQgbG9uZyBsb24KICAgICB9CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVS
ZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQordm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2ln
bmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVhIUlJlc3BvbnNlKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgaWRlbnRpZmllcik7Ci0KICAgICBtX3Jlc3BvbnNlID0gcmVzcG9uc2U7CiAg
ICAgaWYgKCFtX21pbWVUeXBlT3ZlcnJpZGUuaXNFbXB0eSgpKQogICAgICAgICBtX3Jlc3BvbnNl
LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIG1fbWltZVR5
cGVPdmVycmlkZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBiMzFjNjYwLi4yODJmNmI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyOCBAQAogMjAxNi0xMi0wNyAg
Sm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFNvbWUgcmVzb3VyY2VzIGZldGNoZWQgdmlhIEZldGNoIEFQSSBkbyBub3QgaGF2ZSBk
YXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUy
MzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5NDQ5MjIwPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTG9jYWxpemF0aW9ucy9lbi5scHJvai9s
b2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICBOZXcgIkZldGNoIiBhbmQgIkZldGNoZXMiIGxv
Y2FsaXplZCBzdHJpbmdzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3Vy
Y2UuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JUeXBl
KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZUNvbGxlY3Rpb24uanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb2xsZWN0aW9uLnZlcmlmaWVyRm9yVHlw
ZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db2xsZWN0aW9uQ29udGVudFZpZXcu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29sbGVjdGlvbkNvbnRlbnRWaWV3KToKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlw
ZS5nZXQgcmVzcG9uc2VDb250ZW50Vmlldyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9SZXNvdXJjZVRyZWVFbGVtZW50LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
VHJlZUVsZW1lbnQuY29tcGFyZVJlc291cmNlVHJlZUVsZW1lbnRzKToKKyAgICAgICAgTmV3IFJl
c291cmNlVHlwZS5GZXRjaC4gQmVoYXZlIGxpa2UgWEhSIGluIG1vc3QgcGxhY2VzLgorCisyMDE2
LTEyLTA3ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKICAgICAgICAg
V2ViIEluc3BlY3RvcjogVW5hYmxlIHRvIGRlbGV0ZSBicmVha3BvaW50IGZyb20gd29ya2VyIHNj
cmlwdAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1
NTc4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2Vu
Lmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxp
emF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IGJiNDYyNDYuLmNjY2Y3
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxw
cm9qL2xvY2FsaXplZFN0cmluZ3MuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2Fs
aXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwpAQCAtMzQ2LDYgKzM0Niw4IEBA
IGxvY2FsaXplZFN0cmluZ3NbIkZhZGUgdW5leGVjdXRlZCBjb2RlIl0gPSAiRmFkZSB1bmV4ZWN1
dGVkIGNvZGUiOwogbG9jYWxpemVkU3RyaW5nc1siRmFpbGVkIHRvIHVwZ3JhZGUiXSA9ICJGYWls
ZWQgdG8gdXBncmFkZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJGYW1pbHkiXSA9ICJGYW1pbHkiOwog
bG9jYWxpemVkU3RyaW5nc1siRmVhdHVyZXMiXSA9ICJGZWF0dXJlcyI7Citsb2NhbGl6ZWRTdHJp
bmdzWyJGZXRjaCJdID0gIkZldGNoIjsKK2xvY2FsaXplZFN0cmluZ3NbIkZldGNoZXMiXSA9ICJG
ZXRjaGVzIjsKIGxvY2FsaXplZFN0cmluZ3NbIkZpbGUgb3IgUmVzb3VyY2UiXSA9ICJGaWxlIG9y
IFJlc291cmNlIjsKIGxvY2FsaXplZFN0cmluZ3NbIkZpbGVuYW1lIl0gPSAiRmlsZW5hbWUiOwog
bG9jYWxpemVkU3RyaW5nc1siRmlsbCJdID0gIkZpbGwiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzCmluZGV4IDRmM2Mw
YjcuLjI5ZTVhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9SZXNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2UuanMKQEAgLTExNCw2ICsxMTQsMTAgQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlID0gY2xhc3MgUmVzb3VyY2UgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU291cmNl
Q29kZQogICAgICAgICAgICAgaWYgKHBsdXJhbCkKICAgICAgICAgICAgICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJYSFJzIik7CiAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJYSFIiKTsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2Uu
VHlwZS5GZXRjaDoKKyAgICAgICAgICAgIGlmIChwbHVyYWwpCisgICAgICAgICAgICAgICAgcmV0
dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmV0Y2hlcyIpOworICAgICAgICAgICAgcmV0dXJu
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmV0Y2giKTsKICAgICAgICAgY2FzZSBXZWJJbnNwZWN0
b3IuUmVzb3VyY2UuVHlwZS5XZWJTb2NrZXQ6CiAgICAgICAgICAgICBpZiAocGx1cmFsKQogICAg
ICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNvY2tldHMiKTsKQEAg
LTc1Myw2ICs3NTcsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZSA9IHsKICAgICBGb250
OiAicmVzb3VyY2UtdHlwZS1mb250IiwKICAgICBTY3JpcHQ6ICJyZXNvdXJjZS10eXBlLXNjcmlw
dCIsCiAgICAgWEhSOiAicmVzb3VyY2UtdHlwZS14aHIiLAorICAgIEZldGNoOiAicmVzb3VyY2Ut
dHlwZS1mZXRjaCIsCiAgICAgV2ViU29ja2V0OiAicmVzb3VyY2UtdHlwZS13ZWJzb2NrZXQiLAog
ICAgIE90aGVyOiAicmVzb3VyY2UtdHlwZS1vdGhlciIKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VDb2xsZWN0aW9uLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlQ29s
bGVjdGlvbi5qcwppbmRleCA3MTU5NjNkLi5iZDM4YWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VDb2xsZWN0aW9uLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZUNv
bGxlY3Rpb24uanMKQEAgLTUxLDYgKzUxLDggQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29sbGVj
dGlvbiA9IGNsYXNzIFJlc291cmNlQ29sbGVjdGlvbiBleHRlbmRzIFdlYkluc3BlY3Rvci4KICAg
ICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb2xsZWN0aW9uLlR5cGVWZXJp
Zmllci5TY3JpcHQ7CiAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuWEhS
OgogICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbGxlY3Rpb24uVHlw
ZVZlcmlmaWVyLlhIUjsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5G
ZXRjaDoKKyAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb2xsZWN0aW9u
LlR5cGVWZXJpZmllci5GZXRjaDsKICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2Uu
VHlwZS5XZWJTb2NrZXQ6CiAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlJlc291cmNl
Q29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuV2ViU29ja2V0OwogICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5UeXBlLk90aGVyOgpAQCAtMTkxLDYgKzE5Myw3IEBAIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyID0gewogICAgIEZvbnQ6IChvYmplY3Qp
ID0+IFdlYkluc3BlY3Rvci5Db2xsZWN0aW9uLlR5cGVWZXJpZmllci5SZXNvdXJjZShvYmplY3Qp
ICYmIG9iamVjdC50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5Gb250LAogICAg
IFNjcmlwdDogKG9iamVjdCkgPT4gV2ViSW5zcGVjdG9yLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVy
LlJlc291cmNlKG9iamVjdCkgJiYgb2JqZWN0LnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJj
ZS5UeXBlLlNjcmlwdCwKICAgICBYSFI6IChvYmplY3QpID0+IFdlYkluc3BlY3Rvci5Db2xsZWN0
aW9uLlR5cGVWZXJpZmllci5SZXNvdXJjZShvYmplY3QpICYmIG9iamVjdC50eXBlID09PSBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5YSFIsCisgICAgRmV0Y2g6IChvYmplY3QpID0+IFdlYklu
c3BlY3Rvci5Db2xsZWN0aW9uLlR5cGVWZXJpZmllci5SZXNvdXJjZShvYmplY3QpICYmIG9iamVj
dC50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5GZXRjaCwKICAgICBXZWJTb2Nr
ZXQ6IChvYmplY3QpID0+IFdlYkluc3BlY3Rvci5Db2xsZWN0aW9uLlR5cGVWZXJpZmllci5SZXNv
dXJjZShvYmplY3QpICYmIG9iamVjdC50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlw
ZS5XZWJTb2NrZXQsCiAgICAgT3RoZXI6IChvYmplY3QpID0+IFdlYkluc3BlY3Rvci5Db2xsZWN0
aW9uLlR5cGVWZXJpZmllci5SZXNvdXJjZShvYmplY3QpICYmIG9iamVjdC50eXBlID09PSBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5PdGhlciwKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2xsZWN0aW9uQ29udGVudFZpZXcuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2xsZWN0aW9uQ29u
dGVudFZpZXcuanMKaW5kZXggYTQ5ZDdmYy4uMmIwNmIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29sbGVjdGlvbkNvbnRlbnRWaWV3Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbGxlY3Rp
b25Db250ZW50Vmlldy5qcwpAQCAtODEsNiArODEsMTAgQEAgV2ViSW5zcGVjdG9yLkNvbGxlY3Rp
b25Db250ZW50VmlldyA9IGNsYXNzIENvbGxlY3Rpb25Db250ZW50VmlldyBleHRlbmRzIFdlYklu
c3AKICAgICAgICAgICAgIHRpdGxlID0gV2ViSW5zcGVjdG9yLlJlc291cmNlLmRpc3BsYXlOYW1l
Rm9yVHlwZShXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5YSFIsIHRydWUpOwogICAgICAgICAg
ICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb2xsZWN0aW9u
LlR5cGVWZXJpZmllci5GZXRjaDoKKyAgICAgICAgICAgIHRpdGxlID0gV2ViSW5zcGVjdG9yLlJl
c291cmNlLmRpc3BsYXlOYW1lRm9yVHlwZShXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5GZXRj
aCwgdHJ1ZSk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLldlYlNvY2tldDoKICAgICAgICAgICAg
IHRpdGxlID0gV2ViSW5zcGVjdG9yLlJlc291cmNlLmRpc3BsYXlOYW1lRm9yVHlwZShXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuVHlwZS5XZWJTb2NrZXQsIHRydWUpOwogICAgICAgICAgICAgYnJlYWs7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9S
ZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LmpzCmluZGV4IDQyNjVm
ZWUuLjNmMDg0ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1Jlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3
LmpzCkBAIC02NSw3ICs2NSwxMyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVu
dFZpZXcgPSBjbGFzcyBSZXNvdXJjZUNsdXN0ZXJDb250ZW50VmlldyBleHRlbgogICAgICAgICBj
YXNlIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkRvY3VtZW50OgogICAgICAgICBjYXNlIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdDoKICAgICAgICAgY2FzZSBXZWJJbnNwZWN0
b3IuUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0OgorICAgICAgICAgICAgdGhpcy5fcmVzcG9uc2VD
b250ZW50VmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcodGhp
cy5fcmVzb3VyY2UpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuVHlwZS5YSFI6CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlJlc291
cmNlLlR5cGUuRmV0Y2g6CisgICAgICAgICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzE2NTQ5NT4gV2ViIEluc3BlY3RvcjogWEhSIC8gRmV0Y2ggZm9yIG5vbi10ZXh0IGNvbnRl
bnQgc2hvdWxkIG5vdCBzaG93IGdhcmJsZWQgdGV4dAorICAgICAgICAgICAgLy8gWEhSIC8gRmV0
Y2ggY29udGVudCBtYXkgbm90IGFsd2F5cyBiZSB0ZXh0LgogICAgICAgICAgICAgdGhpcy5fcmVz
cG9uc2VDb250ZW50VmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZp
ZXcodGhpcy5fcmVzb3VyY2UpOwogICAgICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVHJlZUVsZW1l
bnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJj
ZVRyZWVFbGVtZW50LmpzCmluZGV4IGJmZDJkNjkuLjYwZjdiZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVHJlZUVsZW1lbnQu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3Vy
Y2VUcmVlRWxlbWVudC5qcwpAQCAtNDQsNyArNDQsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VU
cmVlRWxlbWVudCA9IGNsYXNzIFJlc291cmNlVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0
bwogICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmlzb25SZXN1bHQ7CiAKICAgICAgICAgLy8gQ29t
cGFyZSBhc3luYyByZXNvdXJjZSB0eXBlcyBieSB0aGVpciBmaXJzdCB0aW1lc3RhbXAgc28gdGhl
eSBhcmUgaW4gY2hyb25vbG9naWNhbCBvcmRlci4KLSAgICAgICAgaWYgKGEucmVzb3VyY2UudHlw
ZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuWEhSIHx8IGEucmVzb3VyY2UudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuV2ViU29ja2V0KQorICAgICAgICBpZiAoYS5y
ZXNvdXJjZS50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5YSFIKKyAgICAgICAg
ICAgIHx8IGEucmVzb3VyY2UudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuRmV0
Y2gKKyAgICAgICAgICAgIHx8IGEucmVzb3VyY2UudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291
cmNlLlR5cGUuV2ViU29ja2V0KQogICAgICAgICAgICAgcmV0dXJuIGEucmVzb3VyY2UuZmlyc3RU
aW1lc3RhbXAgLSBiLnJlc291cmNlLmZpcnN0VGltZXN0YW1wIHx8IDA7CiAKICAgICAgICAgLy8g
Q29tcGFyZSBieSBzdWJ0aXRsZSB3aGVuIHRoZSB0eXBlcyBhcmUgdGhlIHNhbWUuIFRoZSBzdWJ0
aXRsZSBpcyB1c2VkIHRvIHNob3cgdGhlCg==
</data>
<flag name="review"
          id="318931"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>